JPH0225934A - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH0225934A JPH0225934A JP17794288A JP17794288A JPH0225934A JP H0225934 A JPH0225934 A JP H0225934A JP 17794288 A JP17794288 A JP 17794288A JP 17794288 A JP17794288 A JP 17794288A JP H0225934 A JPH0225934 A JP H0225934A
- Authority
- JP
- Japan
- Prior art keywords
- stage
- instruction
- stack pointer
- value
- operand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Advance Control (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
この発明は高度なパイプライン処理機構により高い処理
能力を実現したデータ処理装置に関するものである。
能力を実現したデータ処理装置に関するものである。
(従来の技術)
従来の技術として特願昭62−145852に示すスタ
ックポインタの回路がある。
ックポインタの回路がある。
第33図は従来のスタックポインタ計算部のブロック図
である。従来例に示すデータ処理装置は、パイプライン
処理により命令の実行を行い、命令フェッチステージ(
IFステージ)、命令デコードステージ(Dステージ)
、オペランドアドレス計算ステージ(Aステージ)、オ
ペランドフェッチステージ(Fステージ)、実行ステー
ジ(Eステージ)の順に処理される。 61はアドレス
計算ステージで管理されているステージスタックポイン
タ(ASP)、62はASP出力ラッチ、63はオペラ
ンドフェッチステージで管理されているステージスタッ
クポインタ(FSP)、64はFSP出力ラッチ、65
は実行ステージで管理されているステージスタックポイ
ンタ(C5P)、66.67.68はソフトウェアから
見たレベルのスタックポインタ(SPI、 SPO,5
PI)である。
である。従来例に示すデータ処理装置は、パイプライン
処理により命令の実行を行い、命令フェッチステージ(
IFステージ)、命令デコードステージ(Dステージ)
、オペランドアドレス計算ステージ(Aステージ)、オ
ペランドフェッチステージ(Fステージ)、実行ステー
ジ(Eステージ)の順に処理される。 61はアドレス
計算ステージで管理されているステージスタックポイン
タ(ASP)、62はASP出力ラッチ、63はオペラ
ンドフェッチステージで管理されているステージスタッ
クポインタ(FSP)、64はFSP出力ラッチ、65
は実行ステージで管理されているステージスタックポイ
ンタ(C5P)、66.67.68はソフトウェアから
見たレベルのスタックポインタ(SPI、 SPO,5
PI)である。
第34図はスタックブツシュを含む命令、例えばレジス
タの値をスタックトップ(スタックポインタの値をデク
リメントした値が指すところ)に書き込むMOV命令(
MOV:Rn −> 1il−5P Rnはn番のレ
ジスタを表し、a−spはスタックポインタをデクリメ
ントした値が指すアドレスを示す)を実行した場合の各
ステージのスタックポインタの動作を示すフローチャー
トである。命令実行前のASl’61の値を1nitS
Pとし、この命令の直前の命令終了時のスタックポイン
タ値と整合がとれていることとする。
タの値をスタックトップ(スタックポインタの値をデク
リメントした値が指すところ)に書き込むMOV命令(
MOV:Rn −> 1il−5P Rnはn番のレ
ジスタを表し、a−spはスタックポインタをデクリメ
ントした値が指すアドレスを示す)を実行した場合の各
ステージのスタックポインタの動作を示すフローチャー
トである。命令実行前のASl’61の値を1nitS
Pとし、この命令の直前の命令終了時のスタックポイン
タ値と整合がとれていることとする。
まずこの命令はソースがレジスタであるので、Aステー
ジではレジスタ指定信号を次のステージFステージに送
る。ASP61の値はデクリメントしく1nitsP−
4)とし、命令の流れと同期してデクリメントされたA
SP61の値(initsP−4)はPSP63 ヘ転
送される。
ジではレジスタ指定信号を次のステージFステージに送
る。ASP61の値はデクリメントしく1nitsP−
4)とし、命令の流れと同期してデクリメントされたA
SP61の値(initsP−4)はPSP63 ヘ転
送される。
Fステージではレジスタ指定信号を受けてレジスタアク
セス信号を次のEステージに送る。命令がEステージに
達するとき、同時にFSP63の値(iriitsP−
4)もEステージのC5P65に送られる。
セス信号を次のEステージに送る。命令がEステージに
達するとき、同時にFSP63の値(iriitsP−
4)もEステージのC5P65に送られる。
EステージではC3P65の値(inftsP−4)を
デスティネーションアドレスとして命令を実行する。つ
まり、指定されたレジスタ、の値をデータレジスタに書
き込み、C3P61の値をアドレスレジスタに書き込み
、アドレスレジスタの示すアドレスにデータレジスタの
値をストアする。
デスティネーションアドレスとして命令を実行する。つ
まり、指定されたレジスタ、の値をデータレジスタに書
き込み、C3P61の値をアドレスレジスタに書き込み
、アドレスレジスタの示すアドレスにデータレジスタの
値をストアする。
また、5P166.5PO67,5P16Bに関して、
命令実行中はこれらのスタックポインタには前の値を保
っておき、各命令の処理の最後にCSl’65の値をソ
フトウェアからみたレベルのスタックポインタ(SPI
、SPO、,5PI)の1つに設定する。
命令実行中はこれらのスタックポインタには前の値を保
っておき、各命令の処理の最後にCSl’65の値をソ
フトウェアからみたレベルのスタックポインタ(SPI
、SPO、,5PI)の1つに設定する。
第35図はスタックポインタを汎用レジスタと見てデー
タをロードする命令の場合である(MOV :“100
”−> SP″100”は即値、SPはスタックポイン
タ)。
タをロードする命令の場合である(MOV :“100
”−> SP″100”は即値、SPはスタックポイン
タ)。
Aステージでは即値“100”が次のFステージへ送ら
れる。ASP61は変化しないでFSP63に転送され
る。
れる。ASP61は変化しないでFSP63に転送され
る。
この命令ではAステージのスタックポインタ(ASP6
1)の値は、命令が終了しスタックポインタに値が書き
込まれるまでは前の値を保ったままなので、後の命令が
スタックポインタを参照する命令の場合(スタックポイ
ンタに関するコンフリクトを生じている場合)に、AS
P61を参照してアドレス計算を行ってしまうと誤った
値が生成されることになる。そのため、命令が終了して
スタックポインタの値が書き換わってしまうまではスタ
ックポインタの書き込み予約を行っておき、後の命令が
スタックポインタを参照する場合は、この書き込み予約
が解除されるまではAステージでアドレス計算を行わず
に待っている。そして書き込み予約が解除されてからA
ステージでのアドレス計算を始める。
1)の値は、命令が終了しスタックポインタに値が書き
込まれるまでは前の値を保ったままなので、後の命令が
スタックポインタを参照する命令の場合(スタックポイ
ンタに関するコンフリクトを生じている場合)に、AS
P61を参照してアドレス計算を行ってしまうと誤った
値が生成されることになる。そのため、命令が終了して
スタックポインタの値が書き換わってしまうまではスタ
ックポインタの書き込み予約を行っておき、後の命令が
スタックポインタを参照する場合は、この書き込み予約
が解除されるまではAステージでアドレス計算を行わず
に待っている。そして書き込み予約が解除されてからA
ステージでのアドレス計算を始める。
Fステージでは即値“100”を受は取ってそのまま“
100”を次のEステージに送る。
100”を次のEステージに送る。
FSP63はC5P65に転送される。
Eステージでは、データ“100”は口0バス85を通
してASP61 、 C3P65に同時に書き込まれる
。
してASP61 、 C3P65に同時に書き込まれる
。
この命令の後の命令がスタックポインタを参照する場合
は、Aステージでのリソースであるスタックポインタ(
ASP61)がまだ書き換わっておらず、スタックポイ
ンタを参照するわけにはいかないので、アドレス計算を
行わすAステージで待っている。そして書き込み予約が
解除になって、アドレス計算を開始した時点で正しい値
がASP61には入っているため、この命令がEステー
ジに到達したときは正しいスタックポインタの値を伴っ
ており、その値が5P166.5PO67,5P16B
のいずれかに書き込まれる。
は、Aステージでのリソースであるスタックポインタ(
ASP61)がまだ書き換わっておらず、スタックポイ
ンタを参照するわけにはいかないので、アドレス計算を
行わすAステージで待っている。そして書き込み予約が
解除になって、アドレス計算を開始した時点で正しい値
がASP61には入っているため、この命令がEステー
ジに到達したときは正しいスタックポインタの値を伴っ
ており、その値が5P166.5PO67,5P16B
のいずれかに書き込まれる。
しかし後の命令がスタックポインタを使用しない場合は
、スタックポインタの書き込み予約が行われていても、
Aステージでアドレス計算を行わずに待っている必要は
ない。そのため先の命令がEステージで処理されASP
61が書き換わった時点では、すでにアドレス計算ステ
ージまたはオペランドフェッチステージでの処理を終了
している場合がある。そうするとこの命令は正しくない
スタックポインタの値を伴って実行ステージに到達する
ことになり、誤った値がC3P65に転送され、命令終
了時に誤った値がSP!66.5PO67,5P168
のいずれかに書き込まれてしまう。
、スタックポインタの書き込み予約が行われていても、
Aステージでアドレス計算を行わずに待っている必要は
ない。そのため先の命令がEステージで処理されASP
61が書き換わった時点では、すでにアドレス計算ステ
ージまたはオペランドフェッチステージでの処理を終了
している場合がある。そうするとこの命令は正しくない
スタックポインタの値を伴って実行ステージに到達する
ことになり、誤った値がC3P65に転送され、命令終
了時に誤った値がSP!66.5PO67,5P168
のいずれかに書き込まれてしまう。
そこでこれを回避するためには、Eステージでスタック
ポインタの値が書き換えられる場合、各命令が処理され
ているステージのステージスタックポインタが必ずその
命令に付随する値を示すように、すべてのステージスタ
ックポインタと各スタックポインタ出力ラッチに同時に
値をいれるか、あるいは、スタックポインタの書き込み
予約が行なわれている場合には次の命令が必ずアドレス
計算ステージで止まるようにしておき、ASP61の値
が書き換わってから次の命令はAステージ33での処理
を開始する必要がある。
ポインタの値が書き換えられる場合、各命令が処理され
ているステージのステージスタックポインタが必ずその
命令に付随する値を示すように、すべてのステージスタ
ックポインタと各スタックポインタ出力ラッチに同時に
値をいれるか、あるいは、スタックポインタの書き込み
予約が行なわれている場合には次の命令が必ずアドレス
計算ステージで止まるようにしておき、ASP61の値
が書き換わってから次の命令はAステージ33での処理
を開始する必要がある。
以上のように従来のバイブライン処理中でのスタックポ
インタの処理では、実行ステージにおいてスタックポイ
ンタの値を更新した場合に、その次の命令実行時に実行
ステージのステージスタックポインタの値をその命令に
付随した正しい値とするために、すべてのステージスタ
ックポインタとステージスタックポインタ出力ラッチに
値を書き込むか、次の命令を必ずアドレス計算ステージ
で止めておかなければならないという問題点があった。
インタの処理では、実行ステージにおいてスタックポイ
ンタの値を更新した場合に、その次の命令実行時に実行
ステージのステージスタックポインタの値をその命令に
付随した正しい値とするために、すべてのステージスタ
ックポインタとステージスタックポインタ出力ラッチに
値を書き込むか、次の命令を必ずアドレス計算ステージ
で止めておかなければならないという問題点があった。
この発明は上記の問題点を解決するためになされたもの
で、少ないハードウェアで、かつ実行ステージでスタッ
クポインタの値を書き換える命令の次の命令が、スタッ
クポインタに関するコンフリクトを起こさないときも、
アドレス計算ステージでその命令を止めることなく正し
くスタックポインタの管理をするデータ処理装置を得る
ことを目的とする。
で、少ないハードウェアで、かつ実行ステージでスタッ
クポインタの値を書き換える命令の次の命令が、スタッ
クポインタに関するコンフリクトを起こさないときも、
アドレス計算ステージでその命令を止めることなく正し
くスタックポインタの管理をするデータ処理装置を得る
ことを目的とする。
この発明にかかるデータ処理装置は、バイブライン中の
アドレス計算ステージに作業用のステージスタックポイ
ンタを備え、アドレス計算ステージで管理されているス
タックポインタをアドレス計算ステージで更新したとき
のみ更新された値を実行ステージが管理しているスタッ
クポインタに転送するようにした。
アドレス計算ステージに作業用のステージスタックポイ
ンタを備え、アドレス計算ステージで管理されているス
タックポインタをアドレス計算ステージで更新したとき
のみ更新された値を実行ステージが管理しているスタッ
クポインタに転送するようにした。
この発明におけるデータ処理装置は、アドレス計算ステ
ージでのアドレス演算時に、このステージのステージス
タックポインタ(ASP)を更新した場合のみ、バイブ
ライン中の命令の流れと同期してスタックポインタの値
を実行ステージが管理しているスタックポインタに転送
する。
ージでのアドレス演算時に、このステージのステージス
タックポインタ(ASP)を更新した場合のみ、バイブ
ライン中の命令の流れと同期してスタックポインタの値
を実行ステージが管理しているスタックポインタに転送
する。
[発明の実施例]
以下、本発明をその実施例を示す図面に基づいて詳述す
る。
る。
(1)「本発明のデータ処理装置の命令フォーマット」
本発明のデータ処理装置の命令は16ビツト単位で可変
長となっており、奇数バイト長の命令は使用しない。
本発明のデータ処理装置の命令は16ビツト単位で可変
長となっており、奇数バイト長の命令は使用しない。
本発明のデータ処理装置では高頻度命令を短いフォーマ
ットとする目的で特に工夫された命令フォーマット体系
を存する。例えば、2オペランド命令に関しては基本的
に“4ハイド+拡張部”の構成を有して総てのアドレッ
シングモードが利用可能な一般形フオーマットと、使用
頻度の高い命令及びアドレッシングモードのみが使用可
能な短藩宿形フォーマットの2つのフォーマットとがあ
る。
ットとする目的で特に工夫された命令フォーマット体系
を存する。例えば、2オペランド命令に関しては基本的
に“4ハイド+拡張部”の構成を有して総てのアドレッ
シングモードが利用可能な一般形フオーマットと、使用
頻度の高い命令及びアドレッシングモードのみが使用可
能な短藩宿形フォーマットの2つのフォーマットとがあ
る。
本発明のデータ処理装置の命令フォーマット中に現われ
る記号の意味は次の通りである。
る記号の意味は次の通りである。
−:オペレーションコードが入ル部分
#:リテラルまたは即値が入る部分
Ea:8ミニ8ビツト形のアドレッシングモードでオペ
ランドを指定する部分 Sh:6ビツトの短縮形のアドレッシングモードでオペ
ランドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定す
る部分 フォーマットは、第3図に示す如く右側がLSB側で且
つ高いアドレスになっている。アドレスNとアドレスN
+1の2ハイドを見ないと命令フォーマットが判別でき
ないようになっているが、これは前述の如く、命令が必
ず16ビツト(2ハイド)単位でフェッチ及びデコード
されることを前提としているためである。
ランドを指定する部分 Sh:6ビツトの短縮形のアドレッシングモードでオペ
ランドを指定する部分 Rn:レジスタ上のオペランドをレジスタ番号で指定す
る部分 フォーマットは、第3図に示す如く右側がLSB側で且
つ高いアドレスになっている。アドレスNとアドレスN
+1の2ハイドを見ないと命令フォーマットが判別でき
ないようになっているが、これは前述の如く、命令が必
ず16ビツト(2ハイド)単位でフェッチ及びデコード
されることを前提としているためである。
本発明のデータ処理装置では、いずれのフォーマットの
場合も、各オペランドのEaまたはshの拡張部は必ず
そのEaまたはshの基本部を含むハーフワードの直後
に位置される。これは、命令により暗黙に指定される即
値データあるいは命令の拡張部に優先する。従って、4
ハイド以上の命令では、Eaの拡張部によって命令のオ
ペレーションコードが分断される場合がある。
場合も、各オペランドのEaまたはshの拡張部は必ず
そのEaまたはshの基本部を含むハーフワードの直後
に位置される。これは、命令により暗黙に指定される即
値データあるいは命令の拡張部に優先する。従って、4
ハイド以上の命令では、Eaの拡張部によって命令のオ
ペレーションコードが分断される場合がある。
また後述する如く、多段間接モードによってEaの拡張
部に更に拡張部が付く場合にも、次の命令オペレーショ
ンコードよりもそちらの方が優先される。例えば、第1
ハーフワードにEalを含み、第2ハーフワードにEa
2を含み、第3ハーフワードまである6バイト命令の場
合を考える。Ealに多段間接モードを使用したため、
普通の拡張部の他に多段間接モードの拡張部も付くもの
とすると、実際の命令ビットパターンは、命令の第1ハ
ーフワード(Ealの基本部を含む)t Eatの拡張
部、Ealの多段間接モード拡張部、命令の第2ハーフ
ワード(Ea2の基本部を含む)、 EaLの拡張部、
命令の第3ハーフワードの順となる。
部に更に拡張部が付く場合にも、次の命令オペレーショ
ンコードよりもそちらの方が優先される。例えば、第1
ハーフワードにEalを含み、第2ハーフワードにEa
2を含み、第3ハーフワードまである6バイト命令の場
合を考える。Ealに多段間接モードを使用したため、
普通の拡張部の他に多段間接モードの拡張部も付くもの
とすると、実際の命令ビットパターンは、命令の第1ハ
ーフワード(Ealの基本部を含む)t Eatの拡張
部、Ealの多段間接モード拡張部、命令の第2ハーフ
ワード(Ea2の基本部を含む)、 EaLの拡張部、
命令の第3ハーフワードの順となる。
(1,1) r短縮形2オペランド命令」第4図から第
7図は2オペランド命令の短縮形フォーマットを示す模
式図である。
7図は2オペランド命令の短縮形フォーマットを示す模
式図である。
第4図はメモリーレジスタ間演算命令のフォーマットを
示す模式図である。このフォーマットには、ソースオペ
ランド側がメモリとなるL−forma tと、デステ
ィネーションオペランド側がメモリとなるS−form
atとがある。
示す模式図である。このフォーマットには、ソースオペ
ランド側がメモリとなるL−forma tと、デステ
ィネーションオペランド側がメモリとなるS−form
atとがある。
L−formatでは、Shはソースオペランドの指定
フィールドを、Rnはデスティネーションオペラントの
レジスタの指定フィールドを、RRはshのオペランド
サイズの指定をそれぞれ表す。レジスタ上に位置された
デスティネーションオペランドのサイズは32ビツトに
固定されている。レジスタ側とメモリ側とのサイズが異
なり、ソース側のサイズが小さい場合に符号拡張が行な
われる。
フィールドを、Rnはデスティネーションオペラントの
レジスタの指定フィールドを、RRはshのオペランド
サイズの指定をそれぞれ表す。レジスタ上に位置された
デスティネーションオペランドのサイズは32ビツトに
固定されている。レジスタ側とメモリ側とのサイズが異
なり、ソース側のサイズが小さい場合に符号拡張が行な
われる。
S−formatでは、shはデスティ不一ションオベ
ランドの指定フィールドを、Rnはソースオペランドの
レジスタ指定フィールドを、RRはshのオペランドサ
イズの指定をそれぞれ表す。レジスタ上に位置されたソ
ースオペランドのサイズは32ビツトに固定されている
。レジスタ側とメモリ側とのサイズが異なり、ソース側
のサイズが大きい場合にオーバフローした部分の切捨て
とオーバフローチエツクが行なわれる。
ランドの指定フィールドを、Rnはソースオペランドの
レジスタ指定フィールドを、RRはshのオペランドサ
イズの指定をそれぞれ表す。レジスタ上に位置されたソ
ースオペランドのサイズは32ビツトに固定されている
。レジスタ側とメモリ側とのサイズが異なり、ソース側
のサイズが大きい場合にオーバフローした部分の切捨て
とオーバフローチエツクが行なわれる。
第5図はレジスターレジスタ間演算命令のフォーマツ)
(R−format)を示す模式図である。Rnはデ
スティネーションレジスタの指定フィールド、Rmはソ
ースレジスタの指定フィールドである。オペランドサイ
ズは32ビツトのみである。
(R−format)を示す模式図である。Rnはデ
スティネーションレジスタの指定フィールド、Rmはソ
ースレジスタの指定フィールドである。オペランドサイ
ズは32ビツトのみである。
第6図はリテラル−メモリ間演算命令のフォーマット(
Q−format)を示す模式図である。問はディステ
ィネーションオペランドサイズの指定フィールド、##
#はリテラルによるソースオペランドの指定フィールド
、shはデスティネーションオペランドの指定フィール
ートである。
Q−format)を示す模式図である。問はディステ
ィネーションオペランドサイズの指定フィールド、##
#はリテラルによるソースオペランドの指定フィールド
、shはデスティネーションオペランドの指定フィール
ートである。
第7図は即値−メモリ間演算命令のフォーマツ) (1
4ormat)を示す模式図である。財はオペランドサ
イズの指定フィールド(ソース、ディスティネーション
で共通) 、shはデスティネーションオペランドの指
定フィールドである。I−formatの即値のサイズ
はデスティネーション側のオペランドのサイズと共通に
8.16.32ビツトとなり、ゼロ拡張及び符号拡張は
行なわれない。
4ormat)を示す模式図である。財はオペランドサ
イズの指定フィールド(ソース、ディスティネーション
で共通) 、shはデスティネーションオペランドの指
定フィールドである。I−formatの即値のサイズ
はデスティネーション側のオペランドのサイズと共通に
8.16.32ビツトとなり、ゼロ拡張及び符号拡張は
行なわれない。
(1,2) r−船形1オペランド命令」第8図は1オ
ペランド命令の一膜形フオーマット(Gl−forma
t)を示す模式図である。財はオペランドサイズの指定
フィールドである。一部のGl−format命令では
、Eaの拡張部以外にも拡張部がある。また、■を使用
しない命令もある。
ペランド命令の一膜形フオーマット(Gl−forma
t)を示す模式図である。財はオペランドサイズの指定
フィールドである。一部のGl−format命令では
、Eaの拡張部以外にも拡張部がある。また、■を使用
しない命令もある。
(1,3) r−船形2オペランド命令」第9図から第
11図は2オペランド命令の一般形フオーマットを示す
模式図である。このフォーマットに含まれるのは、8ビ
ツトで指定する一般形アドレッシングモードのオペラン
ドが最大2つ存在する命令である。オペランドの総数自
体は3つ以上になる場合がある。
11図は2オペランド命令の一般形フオーマットを示す
模式図である。このフォーマットに含まれるのは、8ビ
ツトで指定する一般形アドレッシングモードのオペラン
ドが最大2つ存在する命令である。オペランドの総数自
体は3つ以上になる場合がある。
第9図は第1オペランドがメモリ読み出しを必要とする
命令のフォーマント(G−format)を示す模式図
である。Ea旧よデスティネーションオペランドの指定
フィールド、財はデスティネーションオペランドサイズ
の指定フィールド、EaRはソースオペランド指定フィ
ールド、R1?はソースオペランドサイズの指定フィー
ルドである。一部のG−forn+at命令では、Ea
Mあるいは[iaRの拡張部以外にも拡張部がある。
命令のフォーマント(G−format)を示す模式図
である。Ea旧よデスティネーションオペランドの指定
フィールド、財はデスティネーションオペランドサイズ
の指定フィールド、EaRはソースオペランド指定フィ
ールド、R1?はソースオペランドサイズの指定フィー
ルドである。一部のG−forn+at命令では、Ea
Mあるいは[iaRの拡張部以外にも拡張部がある。
第10図は第1オペランドが8ビツト即値の命令のフォ
ーマット(E−format)を示す模式図である。
ーマット(E−format)を示す模式図である。
EaM Lよデスティネーションオペランドの指定フィ
ールド、財はデスティネーションオペランドサイズの指
定フィールド、■・・・はソースオペランド値である。
ールド、財はデスティネーションオペランドサイズの指
定フィールド、■・・・はソースオペランド値である。
E−formatとI−formatとは機能的には類
似しているが、考え方の点では大きく違っている。具体
的には、E−formatはあくまでも2オペランド−
船形(G −f orma t)の派生形であり、ソー
スオペランドのサイズが8ビツト固定、ディスティネー
ションオペランドのサイズが8 /16/32ビットか
らの選択となっている。つまり、E−formatは異
種サイズ間の演算を前提とし、デスティネーションオペ
ランドのサイズに合わせて8ビツトのソースオペランド
がゼロ拡張または符号拡張される。一方、I−form
は、特に転送命令及び比較命令で頻度の多い即値のパタ
ーンを短縮形にしたものであり、ソースオペランドとデ
ィスティネーションオペランドのサイズが等しい。
似しているが、考え方の点では大きく違っている。具体
的には、E−formatはあくまでも2オペランド−
船形(G −f orma t)の派生形であり、ソー
スオペランドのサイズが8ビツト固定、ディスティネー
ションオペランドのサイズが8 /16/32ビットか
らの選択となっている。つまり、E−formatは異
種サイズ間の演算を前提とし、デスティネーションオペ
ランドのサイズに合わせて8ビツトのソースオペランド
がゼロ拡張または符号拡張される。一方、I−form
は、特に転送命令及び比較命令で頻度の多い即値のパタ
ーンを短縮形にしたものであり、ソースオペランドとデ
ィスティネーションオペランドのサイズが等しい。
第11図は、第1オペランドがアドレス計算のみの命令
のフォーマツ) (GA−format)を示す模式図
である。Ea−はデスティネーションオペランドの指定
フィールド、四はデスティネーションオペランドサイズ
の指定フィールド、Ea八はソースオペランドの指定フ
ィールドである。ソースオペランドとしては実行アドレ
スの計算結果自体が使用される。
のフォーマツ) (GA−format)を示す模式図
である。Ea−はデスティネーションオペランドの指定
フィールド、四はデスティネーションオペランドサイズ
の指定フィールド、Ea八はソースオペランドの指定フ
ィールドである。ソースオペランドとしては実行アドレ
スの計算結果自体が使用される。
第12図は、ショートブランチ命令のフォーマットを示
す模式図である。ccccはブランチ条件指定フィール
ド、disp:8はジャンプ先との変位指定フィールド
であり、本発明のデータ処理装置では8ピントで変位を
指定する場合には、ビットパターンでの指定値を2倍し
て変位値とする。
す模式図である。ccccはブランチ条件指定フィール
ド、disp:8はジャンプ先との変位指定フィールド
であり、本発明のデータ処理装置では8ピントで変位を
指定する場合には、ビットパターンでの指定値を2倍し
て変位値とする。
(1,4) rアドレッシングモード」本発明のデータ
処理装置のアドレッシングモード指定方法には、レジス
タを含めて6ビツトで指定する短縮形と、8ピントで指
定する一般形とがある。
処理装置のアドレッシングモード指定方法には、レジス
タを含めて6ビツトで指定する短縮形と、8ピントで指
定する一般形とがある。
未定義のアドレッシングモードが指定された場合、ある
いは意味的に考えて明らかに不適当なアトレンジングモ
ードの組み合わせが指定された場合には、未定義命令が
実行された場合同様に予約命令例外が発生され、例外処
理が起動される。
いは意味的に考えて明らかに不適当なアトレンジングモ
ードの組み合わせが指定された場合には、未定義命令が
実行された場合同様に予約命令例外が発生され、例外処
理が起動される。
これに8亥当するのは、デスティネーションが即値モー
ドの場合、アドレス計算を伴うべきアドレッシングモー
ド指定フィールドで即値モードを使用した場合等である
。
ドの場合、アドレス計算を伴うべきアドレッシングモー
ド指定フィールドで即値モードを使用した場合等である
。
フォマットの図中で使われる記号の意味は次の通りであ
る。
る。
Rn:レジスタ指定
mem EA : EAで示されるアドレスのメモリ内
容(Sh) :6ビツトの短縮形アドレッシングモー
ドでの指定方法 (Ea) :8ビツトの一般形アドレッシングモード
での指定方法 フォーマットの図において破線にて囲繞された部分は拡
張部を示す。
容(Sh) :6ビツトの短縮形アドレッシングモー
ドでの指定方法 (Ea) :8ビツトの一般形アドレッシングモード
での指定方法 フォーマットの図において破線にて囲繞された部分は拡
張部を示す。
(1,4,1) r基本アドレッシングモード」本発
明のデータ処理装置は様々なアドレッシングモードをサ
ポートする。それらの内、本発明のデータ処理装置でサ
ポートする基本アドレッシングモードには、レジスタ直
接モード、レジスタ間接モード、レジスタ相対間接モー
ド、即値モード、絶対モード、PC(プログラムカウン
タ)、相対間接モード、スタックポツプモード及びスタ
ックブツシュモードがある。
明のデータ処理装置は様々なアドレッシングモードをサ
ポートする。それらの内、本発明のデータ処理装置でサ
ポートする基本アドレッシングモードには、レジスタ直
接モード、レジスタ間接モード、レジスタ相対間接モー
ド、即値モード、絶対モード、PC(プログラムカウン
タ)、相対間接モード、スタックポツプモード及びスタ
ックブツシュモードがある。
レジスタ直接モードはレジスタの内容をそのままオペラ
ンドとする。フォーマットの模式図を第13図に示す。
ンドとする。フォーマットの模式図を第13図に示す。
Rnは汎用レジスタの番号を示す。
レジスタ間接モードはレジスタの内容をアドレスとする
メモリの内容をオペランドとする。フォーマットの模式
図を第14図に示す、Rnは汎用レジスタの番号を示す
。
メモリの内容をオペランドとする。フォーマットの模式
図を第14図に示す、Rnは汎用レジスタの番号を示す
。
レジスタ相対間接モードはディスプレースメント値が1
6ビツトであるか32ビツトであるかにより2種類があ
る。それぞれ、レジスタの内容に16ビツトまたは32
ビツトのディスプレースメント値を加えた値をアドレス
とするメモリの内容をオペランドとする。フォーマット
の模式図を第15図に示す。Rnは汎用レジスタの番号
を示ず。disp:16とdisp : 32とはそれ
ぞれ各々16ビツトのディスプレースメント値または3
2ビツトのディスプレースメント値を示す、ディスプレ
ースメント値は符号付きとして扱う。
6ビツトであるか32ビツトであるかにより2種類があ
る。それぞれ、レジスタの内容に16ビツトまたは32
ビツトのディスプレースメント値を加えた値をアドレス
とするメモリの内容をオペランドとする。フォーマット
の模式図を第15図に示す。Rnは汎用レジスタの番号
を示ず。disp:16とdisp : 32とはそれ
ぞれ各々16ビツトのディスプレースメント値または3
2ビツトのディスプレースメント値を示す、ディスプレ
ースメント値は符号付きとして扱う。
即値モードは命令コード中で指定されるビットパターン
をそのまま2進数と見なしてオペランドとする。フォー
マットの模式図を第16図に示す。
をそのまま2進数と見なしてオペランドとする。フォー
マットの模式図を第16図に示す。
imm−dataは即値を示す。i+u+−dataの
サイズは、オペランドサイズとして命令中で指定される
。
サイズは、オペランドサイズとして命令中で指定される
。
絶対モードはアドレス値が16ビツトで示されるか32
ビツトで示されるかにより2種類ある。それぞれ、命令
コード中で指定される16ビツトまたは32ビツトのビ
ットパターンをアドレスとするメモリの内容をオペラン
ドとする。フォーマットの模式図を第17図に示す。a
bs:16とabs :32とはそれぞれ16ビツトま
たは32ビツトのアドレス値を示す。
ビツトで示されるかにより2種類ある。それぞれ、命令
コード中で指定される16ビツトまたは32ビツトのビ
ットパターンをアドレスとするメモリの内容をオペラン
ドとする。フォーマットの模式図を第17図に示す。a
bs:16とabs :32とはそれぞれ16ビツトま
たは32ビツトのアドレス値を示す。
abs:16でアドレスが示される時は指定されたアド
レス値を32ビツトに符号拡張する。
レス値を32ビツトに符号拡張する。
PC相対間接モードはディスプレースメント値が16ビ
ツトか32ビツトかにより2種類ある。それぞれ、プロ
グラムカウンタの内容に16ビツトまたは32ビツトの
ディスプレースメント値を加えた値をアドレスとするメ
モリの内容をオペランドとする。
ツトか32ビツトかにより2種類ある。それぞれ、プロ
グラムカウンタの内容に16ビツトまたは32ビツトの
ディスプレースメント値を加えた値をアドレスとするメ
モリの内容をオペランドとする。
フォーマットの模式図を第18図に示す。disp :
16とdisp : 32とはそれぞれ16ビツトの
ディスプレースメント値または32ビツトのディスプレ
ースメント値を示す。ディスプレースメント値は符号付
きとして扱う。PC相対間接モードにおいて、参照され
るプログラムカウンタの値はそのオペランドを含む命令
の先頭アドレスである。多段間接アドレッシングモード
においてプログラムカウンタの値が参照される場合にも
、同じように命令の先頭のアドレスをPC相対の基準値
として使用する。
16とdisp : 32とはそれぞれ16ビツトの
ディスプレースメント値または32ビツトのディスプレ
ースメント値を示す。ディスプレースメント値は符号付
きとして扱う。PC相対間接モードにおいて、参照され
るプログラムカウンタの値はそのオペランドを含む命令
の先頭アドレスである。多段間接アドレッシングモード
においてプログラムカウンタの値が参照される場合にも
、同じように命令の先頭のアドレスをPC相対の基準値
として使用する。
スタックポツプモードはスタックポインタ(SP)の内
容をアドレスとするメモリの内容をオペランドとする。
容をアドレスとするメモリの内容をオペランドとする。
オペランドアクセス後、スタックポインタをオペランド
サイズだけインクリメントする。
サイズだけインクリメントする。
例えば、32ビツトデータを扱う場合には、オペランド
アクセス後にSPが+4だけ更新(インクリメント)さ
れる。B、Hのサイズのオペランドに対するスタックポ
ツプモードの指定も可能であり、それぞれSPが+1.
+2だけ更新(インクリメント)される。フォーマット
の模式図を第19図に示す。オペランドに対しスタック
ポツプモードが意味を持たないものに関しては予約命令
例外が発生される。
アクセス後にSPが+4だけ更新(インクリメント)さ
れる。B、Hのサイズのオペランドに対するスタックポ
ツプモードの指定も可能であり、それぞれSPが+1.
+2だけ更新(インクリメント)される。フォーマット
の模式図を第19図に示す。オペランドに対しスタック
ポツプモードが意味を持たないものに関しては予約命令
例外が発生される。
具体的に予約命令例外となるのは、writeオペラン
ド、read−modify−writeオペランドに
対するスタックポツプモード指定である。
ド、read−modify−writeオペランドに
対するスタックポツプモード指定である。
スタックブツシュモードはスタックポインタの内容をオ
ペランドサイズだけデクリメントした内容をアドレスと
するメモリの内容をオペランドとする。スタックブツシ
ュモードでは、オペランドアクセス前にスタックポイン
タがデクリメントされる。例えば、32ビツトデータを
扱う場合には、オペランドアクセス前にSPが−4だけ
更新(デクリメント)される。B、Hのサイズのオペラ
ンドに対するスタックブツシュモードの指定も可能であ
り、それぞれSPが−1,−2だけ更新(デクリメント
)される。フォーマットの模式図を第20図に示す。オ
ペランドに対してスタックブツシュモードが意味を持た
ないものに関しては、予約命令例外が発生される。具体
的に予約命令例外となるのは、readオペランド、r
ead−modify−writeオペランドに対すス
タックブツシュモード指定である。
ペランドサイズだけデクリメントした内容をアドレスと
するメモリの内容をオペランドとする。スタックブツシ
ュモードでは、オペランドアクセス前にスタックポイン
タがデクリメントされる。例えば、32ビツトデータを
扱う場合には、オペランドアクセス前にSPが−4だけ
更新(デクリメント)される。B、Hのサイズのオペラ
ンドに対するスタックブツシュモードの指定も可能であ
り、それぞれSPが−1,−2だけ更新(デクリメント
)される。フォーマットの模式図を第20図に示す。オ
ペランドに対してスタックブツシュモードが意味を持た
ないものに関しては、予約命令例外が発生される。具体
的に予約命令例外となるのは、readオペランド、r
ead−modify−writeオペランドに対すス
タックブツシュモード指定である。
(1,4,2) r多段間接アドレッシングモード」如
何に複雑なアドレッシングも、基本的には加算と間接参
照の組み合わせに分解される。従って、加算と間接参照
のオペレーションをアドレッシングのプリミティブとし
て与えておき、それを任意に組み合わせることができれ
ば、如何なる複雑なアドレッシングモードをも実現可能
となる。本発明のデータ処理装置の多段間接アドレッシ
ングモードはこの様な考え方に基づいたアドレッシング
モードである。複雑なアドレッシングモードはモジュー
ル間のデータ参照あるいはAI (人工知能)言語の処
理系に特に有用である。
何に複雑なアドレッシングも、基本的には加算と間接参
照の組み合わせに分解される。従って、加算と間接参照
のオペレーションをアドレッシングのプリミティブとし
て与えておき、それを任意に組み合わせることができれ
ば、如何なる複雑なアドレッシングモードをも実現可能
となる。本発明のデータ処理装置の多段間接アドレッシ
ングモードはこの様な考え方に基づいたアドレッシング
モードである。複雑なアドレッシングモードはモジュー
ル間のデータ参照あるいはAI (人工知能)言語の処
理系に特に有用である。
多段間接アドレッシングモードを指定する場合、基本ア
ドレッシングモードI旨定フィールドでは、レジスタベ
ース多段間接モード、PCベース多段間接モード、絶対
ベース多段間接モードの3種類の指定方法の内のいずれ
か1つを指定する。
ドレッシングモードI旨定フィールドでは、レジスタベ
ース多段間接モード、PCベース多段間接モード、絶対
ベース多段間接モードの3種類の指定方法の内のいずれ
か1つを指定する。
レジスタベース多段間接モードはレジスタの値を拡張す
る多段間接アドレッシングのベース値とするアドレッシ
ングモードである。フォーマットの模式図を第21図に
示す、 Rnは汎用レジスタの番号を示す。
る多段間接アドレッシングのベース値とするアドレッシ
ングモードである。フォーマットの模式図を第21図に
示す、 Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値を
拡張する多段間接アドレッシングのベース値とするアド
レッシングモードである。フォーマットの模式図を第2
2図に示す。
拡張する多段間接アドレッシングのベース値とするアド
レッシングモードである。フォーマットの模式図を第2
2図に示す。
絶対ベース多段間接モードはゼロを拡張する多段間接ア
ドレッシングのベース値とするアドレッシングモードで
ある。フォーマットの模式図を第23図に示す。
ドレッシングのベース値とするアドレッシングモードで
ある。フォーマットの模式図を第23図に示す。
拡張する多段間接モード指定フィールドは16ビツトを
単位としており、これを任意回反復する。
単位としており、これを任意回反復する。
1段の多段間接モードにより、ディスプレースメントの
加算、インデクスレジスタのスケーリング(XI、 X
2. X4. X8)と加算、メモリの間接参照を行な
う。多段間接モードのフォーマットの模式図を第24図
に示す。各フィールドは以下に示す意味を持つ。
加算、インデクスレジスタのスケーリング(XI、 X
2. X4. X8)と加算、メモリの間接参照を行な
う。多段間接モードのフォーマットの模式図を第24図
に示す。各フィールドは以下に示す意味を持つ。
E=0 :多段間接モード継続
E・1 ニアドレス計算終了
tmp ==> address of opera
nd■・0 :メモリ間接参照なし tmp + disp + Rx * 5cale =
=> tmpI・1 :メモリ間接参照あり nelltmp + disp + RX * 5ca
le ==>tmpM=0 : <RX>をインデ
クスとして使用M、1 :特殊なインデクス <Rx>=Oインデクス値を加算しな い (Rx=0) <Rx>= 1 プログラムカウンタをインデクス
値として使用 (Rx=PC) <Rx>=2〜 reserved 口20:多段間口上0ド中の4ビツトのフィールドd4
の値を4倍してディスプレースメント値とし、これを加
算する d4は符号付きとして扱い、オペラン ドのサイズとは関係なく必ず4倍して 使用する 0、1 :多段間接モードの拡張部で指定されたd
1spx (16/32ビツト)をディスプレースメン
ト値とし、これを加算する 拡張部のサイズはd4フィールドで指 定する d4=0001 dispxは16ビツトd4=0
010 dispxは32ビツト×x ;インデク
スのスケール(scale=1/2/4/8)プログラ
ムカウンタに対してX2. X4. X 8のスケーリ
ングを行なった場合には、その段の処理終了後の中間値
(tmp)として不定値が入る。この多段間接モードに
よって得られる実効アドレスは予測できない値となるが
、例外は発生しない。プログラムカウンタに対するスケ
ーリングの指定は行なってはいけない。
nd■・0 :メモリ間接参照なし tmp + disp + Rx * 5cale =
=> tmpI・1 :メモリ間接参照あり nelltmp + disp + RX * 5ca
le ==>tmpM=0 : <RX>をインデ
クスとして使用M、1 :特殊なインデクス <Rx>=Oインデクス値を加算しな い (Rx=0) <Rx>= 1 プログラムカウンタをインデクス
値として使用 (Rx=PC) <Rx>=2〜 reserved 口20:多段間口上0ド中の4ビツトのフィールドd4
の値を4倍してディスプレースメント値とし、これを加
算する d4は符号付きとして扱い、オペラン ドのサイズとは関係なく必ず4倍して 使用する 0、1 :多段間接モードの拡張部で指定されたd
1spx (16/32ビツト)をディスプレースメン
ト値とし、これを加算する 拡張部のサイズはd4フィールドで指 定する d4=0001 dispxは16ビツトd4=0
010 dispxは32ビツト×x ;インデク
スのスケール(scale=1/2/4/8)プログラ
ムカウンタに対してX2. X4. X 8のスケーリ
ングを行なった場合には、その段の処理終了後の中間値
(tmp)として不定値が入る。この多段間接モードに
よって得られる実効アドレスは予測できない値となるが
、例外は発生しない。プログラムカウンタに対するスケ
ーリングの指定は行なってはいけない。
多段間接モードによる命令フォーマットのバリエーショ
ンを第25図、第26図に示す。
ンを第25図、第26図に示す。
第25図は、多段間接モードが継続するか終了するかの
バリエーションを示す。
バリエーションを示す。
第26図は、ディスプレースメントのサイズのバリエー
ションを示す。
ションを示す。
任意段数の多段間接モードが利用できれば、コンパイラ
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段の間
接参照の頻度が非常に少ないとしても、コンパイラとし
ては必ず正しいコードを発生できなければならないがら
である。このため、フォーマット上では任意の段数が可
能になっている。
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段の間
接参照の頻度が非常に少ないとしても、コンパイラとし
ては必ず正しいコードを発生できなければならないがら
である。このため、フォーマット上では任意の段数が可
能になっている。
(1,5) r例外処理」
本発明のデータ処理装置はソフトウェア負荷の軽減のた
め豊富な例外処理機能を有する。本発明のデータ処理装
置では、例外処理は命令処理を再実行するもの(例外)
、命令処理を完了するもの(トラップ)及び割込の3種
類に分けて名称をつけている。また本発明のデータ処理
装置では、この3種の例外処理とシステム障害とを総称
してBITと称する。
め豊富な例外処理機能を有する。本発明のデータ処理装
置では、例外処理は命令処理を再実行するもの(例外)
、命令処理を完了するもの(トラップ)及び割込の3種
類に分けて名称をつけている。また本発明のデータ処理
装置では、この3種の例外処理とシステム障害とを総称
してBITと称する。
(2)ra能ジブロック構成」
第1図は本発明のデータ処理装置の構成を示すブロック
図である。
図である。
本発明のデータ処理装置の内部を機能的に大きく分ける
と、命令フェッチ部101.命令デコード部102、P
C計算部103.オペランドアドレス計算部104゜マ
イクロROM部105.データ演算部106.外部バス
インターフェイス部107に分かれる。
と、命令フェッチ部101.命令デコード部102、P
C計算部103.オペランドアドレス計算部104゜マ
イクロROM部105.データ演算部106.外部バス
インターフェイス部107に分かれる。
第1図では、その他にCPU外部にアドレスを出力する
ためのアドレス出力回路108と、CPU外部とデータ
を入出力するためのデータ入出力回路109とを他の機
能ブロック部と分けて示した。
ためのアドレス出力回路108と、CPU外部とデータ
を入出力するためのデータ入出力回路109とを他の機
能ブロック部と分けて示した。
(2,1) r命令フェッチ部」
命令フェッチ部101にはブランチバッファ、命令キュ
ー301とその制御部等があり、次にフェッチすべき命
令のアドレスを決定してブランチバッファあるいはCP
II外部のメモリから命令をフェッチする。またブラン
チバッファへの命令登録をも行う。
ー301とその制御部等があり、次にフェッチすべき命
令のアドレスを決定してブランチバッファあるいはCP
II外部のメモリから命令をフェッチする。またブラン
チバッファへの命令登録をも行う。
ブランチバッファは小規模であるためセレクティブキャ
ッシュとして動作する。ブランチバッファの動作の詳細
は特願昭61−202041号で詳しく述べられている
。
ッシュとして動作する。ブランチバッファの動作の詳細
は特願昭61−202041号で詳しく述べられている
。
次にフェッチすべき命令のアドレスは、命令キュー30
1に入力すべき命令のアドレスとして専用のカウンタに
て計算される。分岐あるいはジャンプが発生した場合に
は、新たな命令のアドレスがPC計算部103あるいは
データ演算部106から転送されてくる。
1に入力すべき命令のアドレスとして専用のカウンタに
て計算される。分岐あるいはジャンプが発生した場合に
は、新たな命令のアドレスがPC計算部103あるいは
データ演算部106から転送されてくる。
CPU外部のメモリから命令をフェッチする場合は、外
部バスインターフェイス部107を通して、フェッチす
べき命令のアドレスをアドレス出力回路108からCP
U外部へ出力し、データ入出力回路109から命令コー
ドをフェッチする。そして、バッファリングした命令コ
ードの内、次にデコードすべき命令コードを命令デコー
ド部102に出力する。
部バスインターフェイス部107を通して、フェッチす
べき命令のアドレスをアドレス出力回路108からCP
U外部へ出力し、データ入出力回路109から命令コー
ドをフェッチする。そして、バッファリングした命令コ
ードの内、次にデコードすべき命令コードを命令デコー
ド部102に出力する。
(2,2) r命令デコード部」
命令デコード部102では、基本的には16ビツト(ハ
ーフワード)単位で命令コードをデコードする。このブ
ロックには第1ハーフワードに含まれるオペレーション
コードをデコードするFHWデコーダ、第2.第3ハー
フワードに含まれるオペレーションコードをデコードす
るNFll−デコーダ、アドレッシングモードをデコー
ドするアドレッシングモードデコーダが含まれる。これ
らFHWデコーダ、NFll−デコーダ、アドレッシン
グモードデコーダを纏めて第1デコーダ303という。
ーフワード)単位で命令コードをデコードする。このブ
ロックには第1ハーフワードに含まれるオペレーション
コードをデコードするFHWデコーダ、第2.第3ハー
フワードに含まれるオペレーションコードをデコードす
るNFll−デコーダ、アドレッシングモードをデコー
ドするアドレッシングモードデコーダが含まれる。これ
らFHWデコーダ、NFll−デコーダ、アドレッシン
グモードデコーダを纏めて第1デコーダ303という。
FH−デコーダあるいはNFHWデコーダの出力を更に
デコードして、マイクロROMのエントリアドレスを計
算する第2デコーダ305、条件分岐命令の分岐予測を
行う分岐予測機構、オペランドアドレス計算の際のパイ
プラインコンフリクトをチエツクするアドレス計算コン
フリクトチエツク機構も含まれる。
デコードして、マイクロROMのエントリアドレスを計
算する第2デコーダ305、条件分岐命令の分岐予測を
行う分岐予測機構、オペランドアドレス計算の際のパイ
プラインコンフリクトをチエツクするアドレス計算コン
フリクトチエツク機構も含まれる。
命令デコード部102は命令フェッチ部101から入力
された命令コードを2クロツク(1ステツプ)につき0
〜6バイトずつデコードする。デコード結果の内、デー
タ演算部106での演算に関する情報がマイクロROM
部105に、オペランドアドレス計算に関係する情報が
オペランドアドレス計算部104に、PC計算に関係す
る情報がpc計算部103にそれぞれ出力される。
された命令コードを2クロツク(1ステツプ)につき0
〜6バイトずつデコードする。デコード結果の内、デー
タ演算部106での演算に関する情報がマイクロROM
部105に、オペランドアドレス計算に関係する情報が
オペランドアドレス計算部104に、PC計算に関係す
る情報がpc計算部103にそれぞれ出力される。
(2,3) rマイクロROM部」
マイクロROM部105には、主にデータ演算部106
を制御するマイクロプログラムが格納されているマイク
ロROM、マイクロシーケンサ、マイクロ命令デコーダ
等が含まれる。マイクロ命令はマイクロROMから2ク
ロツク(1ステツプ)に1度読出される。マイクロシー
ケンサはマイクロプログラムで示されるシーケンス処理
の他に、例外、割込及びトラップ(この3つを合わせて
BITと称する)の処理をハードウェア的に受付ける。
を制御するマイクロプログラムが格納されているマイク
ロROM、マイクロシーケンサ、マイクロ命令デコーダ
等が含まれる。マイクロ命令はマイクロROMから2ク
ロツク(1ステツプ)に1度読出される。マイクロシー
ケンサはマイクロプログラムで示されるシーケンス処理
の他に、例外、割込及びトラップ(この3つを合わせて
BITと称する)の処理をハードウェア的に受付ける。
またマイクロ120M部105はストアバッファの管理
も行う。マイクロROM部105には命令コードに依存
しない割込みあるいは演算実行結果によるフラッグ情報
と、第2デコーダ305の出力等の命令デコード部の出
力が人力される。マイクロデコーダの出力は主にデータ
演算部106に対して出力されるが、ジャンプ命令の実
行による他の先行処理中止情報等の一部の情報は他のブ
ロックへも出力される。
も行う。マイクロROM部105には命令コードに依存
しない割込みあるいは演算実行結果によるフラッグ情報
と、第2デコーダ305の出力等の命令デコード部の出
力が人力される。マイクロデコーダの出力は主にデータ
演算部106に対して出力されるが、ジャンプ命令の実
行による他の先行処理中止情報等の一部の情報は他のブ
ロックへも出力される。
(2,4) rオペランドアドレス計算部」オペランド
アドレス計算部104は命令デコード部102のアドレ
スデコーダ等から出力されたオペランドアドレス計算に
関係する情報によりハードワイヤード制御される。この
ブロックではオペランドのアドレス計算に関するほとん
どの処理が行われる。メモリ間接アドレシングのための
メモリアクセスのアドレス及びオペランドアドレスがメ
モリにマツプされたl10Sff域に入るか否かのチエ
ツクも行われる。
アドレス計算部104は命令デコード部102のアドレ
スデコーダ等から出力されたオペランドアドレス計算に
関係する情報によりハードワイヤード制御される。この
ブロックではオペランドのアドレス計算に関するほとん
どの処理が行われる。メモリ間接アドレシングのための
メモリアクセスのアドレス及びオペランドアドレスがメ
モリにマツプされたl10Sff域に入るか否かのチエ
ツクも行われる。
アドレス計算結果は外部パスインターフェイス部107
に送られる。アドレス計算に必要な汎用レジスタ及びプ
ログラムカウンタの値はデータ演算部より入力される。
に送られる。アドレス計算に必要な汎用レジスタ及びプ
ログラムカウンタの値はデータ演算部より入力される。
メモリ間接アドレッシングを行う際は外部バスインター
フェイス部107を通してアドレス出力回路108から
CPU外部へ参照すべきメモリアドレスを出力し、デー
タ人出力部109から人力された間接アドレス値を命令
デコード部102を通してフェッチする。
フェイス部107を通してアドレス出力回路108から
CPU外部へ参照すべきメモリアドレスを出力し、デー
タ人出力部109から人力された間接アドレス値を命令
デコード部102を通してフェッチする。
(2,5) rPC計算部」
PC計算部103は命令デコード部102から出力され
るPC計算に関係する情報によりハードワイヤードに制
御され、命令のPC値を計算する。本発明のデータ処理
装置は可変長命令セットを有しており、命令をデコード
しなければその命令の長さが判らない。このため、PC
計算部103は命令デコード部102から出力される命
令長をデコード中の命令のpc値に加算することにより
次の命令のpc値を作り出す。また、命令デコード部1
02が分岐命令をデコードしてデコード段階での分岐を
指示した場合は、命令長の代わりに分岐変位を分岐命令
のpc値に加算することにより分岐先命令のpc値を計
算する。分岐命令に対して命令デコード段階で分岐を行
うことを本発明のデータ処理装置ではブリブランチと称
する。
るPC計算に関係する情報によりハードワイヤードに制
御され、命令のPC値を計算する。本発明のデータ処理
装置は可変長命令セットを有しており、命令をデコード
しなければその命令の長さが判らない。このため、PC
計算部103は命令デコード部102から出力される命
令長をデコード中の命令のpc値に加算することにより
次の命令のpc値を作り出す。また、命令デコード部1
02が分岐命令をデコードしてデコード段階での分岐を
指示した場合は、命令長の代わりに分岐変位を分岐命令
のpc値に加算することにより分岐先命令のpc値を計
算する。分岐命令に対して命令デコード段階で分岐を行
うことを本発明のデータ処理装置ではブリブランチと称
する。
このブリブランチの手法については特願昭612045
00号及び特願昭61−200557号で詳しく述べら
れている。
00号及び特願昭61−200557号で詳しく述べら
れている。
pc計算部103の計算結果は各命令のpc値とじて命
令のデコード結果と共に出力される他、ブリブランチ時
には、次にデコードすべき命令のアドレスとして命令フ
ェッチ部101へ出力される。また、次に命令デコード
部102でデコードされる命令の分岐予測のためのアド
レスにも使用される。
令のデコード結果と共に出力される他、ブリブランチ時
には、次にデコードすべき命令のアドレスとして命令フ
ェッチ部101へ出力される。また、次に命令デコード
部102でデコードされる命令の分岐予測のためのアド
レスにも使用される。
分岐予測の手法については特願昭62−8394号で詳
しく述べられている。
しく述べられている。
(2,6) rデータ演算部」
データ演算部106はマイクロプログラムにより制御さ
れ、マイクロROM部105の出力情報に従って各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスあるいは
即値である場合は、オペランドアドレス計算部オペラン
ドアドレス計算部104で計算されたアドレスあるいは
即値を外部パスインクフェイス部107を通過させて得
る。また、演算対象となるオペランドがCPt1外部の
メモリにある場合は、アドレス計算部104で計算され
たアドレスをパスインタフェイス部がアドレス出力回路
108から出力して、CPU外部のメモリからフエンチ
したオペランドをデータ入出力回路109から得る。
れ、マイクロROM部105の出力情報に従って各命令
の機能を実現するに必要な演算をレジスタと演算器で実
行する。演算対象となるオペランドがアドレスあるいは
即値である場合は、オペランドアドレス計算部オペラン
ドアドレス計算部104で計算されたアドレスあるいは
即値を外部パスインクフェイス部107を通過させて得
る。また、演算対象となるオペランドがCPt1外部の
メモリにある場合は、アドレス計算部104で計算され
たアドレスをパスインタフェイス部がアドレス出力回路
108から出力して、CPU外部のメモリからフエンチ
したオペランドをデータ入出力回路109から得る。
演算器としては^LIJ313、バレルシフタ、プライ
オリティエンコーダあるいはカウンタ、シフトレジスタ
などがある。レジスタと主な演算器の間は3パスで結合
されており、1つのレジスタ間演算を指示する1マイク
ロ命令を2クロツク(lステップ)で処理する。
オリティエンコーダあるいはカウンタ、シフトレジスタ
などがある。レジスタと主な演算器の間は3パスで結合
されており、1つのレジスタ間演算を指示する1マイク
ロ命令を2クロツク(lステップ)で処理する。
データ演算時にCPU外部のメモリをアクセスする必要
がある場合は、マイクロプログラムの指示により外部ハ
スインターフェイス部107を通してアドレス出力回路
108からアドレスをCPU外部に出力し、データ入出
力回路109を通して目的のデータをフェッチする。
がある場合は、マイクロプログラムの指示により外部ハ
スインターフェイス部107を通してアドレス出力回路
108からアドレスをCPU外部に出力し、データ入出
力回路109を通して目的のデータをフェッチする。
CPU外部のメモリにデータをストアする場合は、外部
ハスインターフェイス部107を通してアドレス出力回
路108よりアドレスを出力すると同時に、データ入出
力回路109からデータをCPU外部に出力する。オペ
ランドストアを効率的に行うため、データ演算部106
には4バイトのストアバッファが備えられている。
ハスインターフェイス部107を通してアドレス出力回
路108よりアドレスを出力すると同時に、データ入出
力回路109からデータをCPU外部に出力する。オペ
ランドストアを効率的に行うため、データ演算部106
には4バイトのストアバッファが備えられている。
ジャンプ命令の処理あるいは例外処理等を行って新たな
命令アドレスをデータ演算部106が得た場合は、これ
を命令フェッチ部101とpc計算部103へ出力する
。
命令アドレスをデータ演算部106が得た場合は、これ
を命令フェッチ部101とpc計算部103へ出力する
。
(以 下 余2; 白)
(2,7) r外部パスインターフェイス部」外部パス
インターフェイス部107は本発明のデータ処理装置の
外部パスでの通信を制御する。メモリのアクセスはすべ
てクロック同期で行われ、最小2クロックサイクル(1
ステツプ)で行うことができる。
インターフェイス部107は本発明のデータ処理装置の
外部パスでの通信を制御する。メモリのアクセスはすべ
てクロック同期で行われ、最小2クロックサイクル(1
ステツプ)で行うことができる。
メモリに対するアクセス要求は命令フェッチ部101、
オペランドアドレス計算部104及びデータ演算部10
6から独立に生じる。外部パスインターフェイス部10
7はこれらのメモリアクセス要求を調停する。更にメモ
リとCPUとを結ぶデータバスサイズである32ビツト
(1ワード)の整置境界を跨ぐメモリ番地にあるデータ
のアクセスは、このブロック内で自動的にワード境界を
跨ぐことを検知して2回のメモリアクセスに分解して行
う。
オペランドアドレス計算部104及びデータ演算部10
6から独立に生じる。外部パスインターフェイス部10
7はこれらのメモリアクセス要求を調停する。更にメモ
リとCPUとを結ぶデータバスサイズである32ビツト
(1ワード)の整置境界を跨ぐメモリ番地にあるデータ
のアクセスは、このブロック内で自動的にワード境界を
跨ぐことを検知して2回のメモリアクセスに分解して行
う。
ブリフェッチするオペランドとストアするオペランドと
が重なる場合のコンフリクト防止処理及びストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
が重なる場合のコンフリクト防止処理及びストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
(3)「パイプライン機構」
本発明のデータ処理装置のパイプライン処理機能は第2
図に模式的に示される如くである。
図に模式的に示される如くである。
命令のブリフェッチを行う命令フェッチステージ(IF
ステージ)201.命令のデコードを行うデコードステ
ージ(Dステージ)202.オペランドのアドレス計算
を行うオペランドアドレス計算ステージ(へステージ)
203.マイクロROMアクセス(特にRステージ20
6と呼ぶ)を行う部分とオペランドのブリフェッチ(特
にOFステージ207と称す)を行う部分とからなるオ
ペランドフェッチステージ(Fステージ)204.命令
を実行する実行ステージ(Eステージ)205の5段構
成をパイプライン処理の基本とする。
ステージ)201.命令のデコードを行うデコードステ
ージ(Dステージ)202.オペランドのアドレス計算
を行うオペランドアドレス計算ステージ(へステージ)
203.マイクロROMアクセス(特にRステージ20
6と呼ぶ)を行う部分とオペランドのブリフェッチ(特
にOFステージ207と称す)を行う部分とからなるオ
ペランドフェッチステージ(Fステージ)204.命令
を実行する実行ステージ(Eステージ)205の5段構
成をパイプライン処理の基本とする。
Eステージ205では1段のストアバッファがある他、
高機能命令の一部は命令の実行自体をパイプライン化す
るため、実際には5段以上のパイプライン処理効果があ
る。
高機能命令の一部は命令の実行自体をパイプライン化す
るため、実際には5段以上のパイプライン処理効果があ
る。
各ステージは他のステージとは独立に動作し、理論上は
5つのステージが完全に独立動作する。
5つのステージが完全に独立動作する。
各ステージは1回の処理を最小2クロック(1ステツブ
)で行うことができる。従って理想的には2クロツク(
1ステツプ)毎に次々とパイプライン処理が進行する。
)で行うことができる。従って理想的には2クロツク(
1ステツプ)毎に次々とパイプライン処理が進行する。
本発明のデータ処理装置には、メモリーメモリ間演算あ
るいはメモリ間接アドレッシング等の如く1回の基本パ
イプライン処理のみでは処理し得ない命令もあるが、本
発明のデータ処理装置はこれらの処理に対してもなるべ
く均衡のとれたパイプライン処理が行える様に設計され
ている。複数のメモリオペランドを持つ命令に対しては
メモリオペランドの数に基づいてデコード段階で複数の
パイプライン処理単位(ステップコード)に分解してパ
イプライン処理を行う。
るいはメモリ間接アドレッシング等の如く1回の基本パ
イプライン処理のみでは処理し得ない命令もあるが、本
発明のデータ処理装置はこれらの処理に対してもなるべ
く均衡のとれたパイプライン処理が行える様に設計され
ている。複数のメモリオペランドを持つ命令に対しては
メモリオペランドの数に基づいてデコード段階で複数の
パイプライン処理単位(ステップコード)に分解してパ
イプライン処理を行う。
パイプライン処理単位の分解方法に関しては特願昭61
−236456号で詳しく述べられている。
−236456号で詳しく述べられている。
IFステージ201からDステージ202に渡される情
報は、命令コード211そのものである。Dステージ2
02からAステージ203に渡される情報は、命令で指
定された演算に関するもの(Dコード212と称す)と
、オペランドのアドレス計算に関係するもの(Aコード
213と称す)との2つがある。
報は、命令コード211そのものである。Dステージ2
02からAステージ203に渡される情報は、命令で指
定された演算に関するもの(Dコード212と称す)と
、オペランドのアドレス計算に関係するもの(Aコード
213と称す)との2つがある。
Aステージ203からFステージ204に渡される情報
はマイクロプログラムのエントリアドレスあるいはマイ
クロプログラムのパラメータ等を含むRコード214と
、オペランドのアドレスとアクセス方法指示情報等を含
むFコード215との2つである。
はマイクロプログラムのエントリアドレスあるいはマイ
クロプログラムのパラメータ等を含むRコード214と
、オペランドのアドレスとアクセス方法指示情報等を含
むFコード215との2つである。
Fステージ204からEステージ205に渡される情報
は、演算制御情報とリテラル等を含むEコード216と
、オペランドあるいはオペランドアドレス等を含むSコ
ード217との2つである。
は、演算制御情報とリテラル等を含むEコード216と
、オペランドあるいはオペランドアドレス等を含むSコ
ード217との2つである。
Eステージ205以外のステージで検出されたBITは
、そのコードがEステージ205に到達する迄はBIT
処理を起動しない、Eステージ205で処理されている
命令のみが実行段階の命令であり、IFステージ201
からFステージ204までの間で処理されている命令は
まだ実行段階に至っていないからである。従って、Eス
テージ205以外で検出されたEITは、それが検出さ
れたことがステップコード中に記録されて次のステージ
に伝えられるのみである。
、そのコードがEステージ205に到達する迄はBIT
処理を起動しない、Eステージ205で処理されている
命令のみが実行段階の命令であり、IFステージ201
からFステージ204までの間で処理されている命令は
まだ実行段階に至っていないからである。従って、Eス
テージ205以外で検出されたEITは、それが検出さ
れたことがステップコード中に記録されて次のステージ
に伝えられるのみである。
(3,1)rバイブライン処理単位」
(3,1,1) r命令コードフィールドの分類」本発
明のデータ処理装置のパイプライン処理単位は命令セッ
トのフォーマットの特徴を利用して決定されている。
明のデータ処理装置のパイプライン処理単位は命令セッ
トのフォーマットの特徴を利用して決定されている。
(1)節で述べた如く、本発明のデータ処理装置の命令
は2バイト単位の可変長命令であり、基本的には“2バ
イトの命令基本部+0〜4バイトのアドレシング拡張部
”を1〜3回反復することにより命令が構成されている
。
は2バイト単位の可変長命令であり、基本的には“2バ
イトの命令基本部+0〜4バイトのアドレシング拡張部
”を1〜3回反復することにより命令が構成されている
。
命令基本部には多くの場合、オペレーションコード部と
アドレッシングモード指定部とがあり、インデックスア
ドレッシングあるいはメモリ間接アドレッシングが必要
な場合にはアドレッシング拡張部の代わりに“2バイト
の多段間接モード指定部子〇〜4ハイドのアトレンジン
グ拡張部”が任意価付く。また、命令により2または4
バイトの命令固有の拡張部が最後に付く。
アドレッシングモード指定部とがあり、インデックスア
ドレッシングあるいはメモリ間接アドレッシングが必要
な場合にはアドレッシング拡張部の代わりに“2バイト
の多段間接モード指定部子〇〜4ハイドのアトレンジン
グ拡張部”が任意価付く。また、命令により2または4
バイトの命令固有の拡張部が最後に付く。
命令基本部には命令のオペレーションコード、基本アド
レッシングモード、リテラルなどが含まれる。アドレッ
シング拡張部はディスプレースメント、絶対アドレス、
即値、分岐命令の変位のいずれかである。命令固有の拡
張部にはレジスタマツプ、I−forn+at命令の即
値指定等がある。第27図は、本発明のデータ処理装置
の基本的命令フォーマットの特徴を示す模式図である。
レッシングモード、リテラルなどが含まれる。アドレッ
シング拡張部はディスプレースメント、絶対アドレス、
即値、分岐命令の変位のいずれかである。命令固有の拡
張部にはレジスタマツプ、I−forn+at命令の即
値指定等がある。第27図は、本発明のデータ処理装置
の基本的命令フォーマットの特徴を示す模式図である。
(3,1,2) rステップコードへの命令の分解」本
発明のデータ処理装置では、上記の命令フォーマットの
特徴を生かしたパイプライン処理を行う。
発明のデータ処理装置では、上記の命令フォーマットの
特徴を生かしたパイプライン処理を行う。
Dステージ202では“2ハイドの命令基本部+0〜4
バイトのアドレッシング拡張部”、“多段間接モード指
定部子アドレッシング拡張部”又は命令固有の拡張部を
1つのデコード単位として処理する。各回のデコード結
果をステップコードと称し、Aステージ203以降では
このステップコードをパイプライン処理の単位としてい
る。ステップコードの数は命令毎に固有であり、多段間
接モード指定を行わない場合は、1つの命令は最小1個
、最大3個のステップコードに分かれる。多段間接モー
ド指定が行われた場合はそれだけステップコードが増加
する。但し、これは後で述べる様にデコード段階のみで
ある。
バイトのアドレッシング拡張部”、“多段間接モード指
定部子アドレッシング拡張部”又は命令固有の拡張部を
1つのデコード単位として処理する。各回のデコード結
果をステップコードと称し、Aステージ203以降では
このステップコードをパイプライン処理の単位としてい
る。ステップコードの数は命令毎に固有であり、多段間
接モード指定を行わない場合は、1つの命令は最小1個
、最大3個のステップコードに分かれる。多段間接モー
ド指定が行われた場合はそれだけステップコードが増加
する。但し、これは後で述べる様にデコード段階のみで
ある。
(3,1,3) rプログラムカウンタの管理」本発明
のデータ処理装置のパイプライン上に存在するステップ
コードは全て別命令に対するものである可能性があり、
このためプログラムカウンタの値はステップコート毎に
管理される。全てのステップコードは、そのステップコ
ードのもとになった命令のプログラムカウンタ値を有す
る。ステップコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステッププログラム
カウンタ(SPC)と称する。SPCはパイプラインス
テージ間を次々と受は渡されていく。
のデータ処理装置のパイプライン上に存在するステップ
コードは全て別命令に対するものである可能性があり、
このためプログラムカウンタの値はステップコート毎に
管理される。全てのステップコードは、そのステップコ
ードのもとになった命令のプログラムカウンタ値を有す
る。ステップコードに付属してパイプラインの各ステー
ジを流れるプログラムカウンタ値はステッププログラム
カウンタ(SPC)と称する。SPCはパイプラインス
テージ間を次々と受は渡されていく。
(3,2) r各バイブラインステージの処理」各パイ
プラインステージの入出カステップコードには第2図に
示したように便宜上名前が付けられている。また、ステ
ップコードはオペレーションコードに関する処理を行い
、マイクロプログラムのエントリアドレス及びEステー
ジ205に対するパラメータなどになる系列とEステー
ジ205のマイクロ命令に対するオペランドになる系列
との2系列がある。
プラインステージの入出カステップコードには第2図に
示したように便宜上名前が付けられている。また、ステ
ップコードはオペレーションコードに関する処理を行い
、マイクロプログラムのエントリアドレス及びEステー
ジ205に対するパラメータなどになる系列とEステー
ジ205のマイクロ命令に対するオペランドになる系列
との2系列がある。
(3,2,1) r命令フェッチステージ」命令フェッ
チステージ(IFステージ)201は命令をメモリある
いはブランチバッファからフェッチして命令キュー30
1に入力し、Dステージ202に対して命令コードを出
力する。命令キュー301の人力は整置された4バイト
単位で行う。メモリから命令をフェッチする場合は、整
置された4バイトにつき最小2クロック(1ステツプ)
を要する。
チステージ(IFステージ)201は命令をメモリある
いはブランチバッファからフェッチして命令キュー30
1に入力し、Dステージ202に対して命令コードを出
力する。命令キュー301の人力は整置された4バイト
単位で行う。メモリから命令をフェッチする場合は、整
置された4バイトにつき最小2クロック(1ステツプ)
を要する。
ブランチバッファがヒツトした場合は、整置された4バ
イトにつきlクロックでフェッチ可能である。命令キュ
ー301の出力単位は2バイト毎に可変であり、2クロ
ツクの間に最大6バイトまで出力できる。また、分岐の
直後には命令キュー301をバイパスして命令基本部2
バイトを直接命令デコーダに転送することも可能である
。
イトにつきlクロックでフェッチ可能である。命令キュ
ー301の出力単位は2バイト毎に可変であり、2クロ
ツクの間に最大6バイトまで出力できる。また、分岐の
直後には命令キュー301をバイパスして命令基本部2
バイトを直接命令デコーダに転送することも可能である
。
ブランチバッファへの命令の登録及びクリア等の制御、
ブリフェッチ先の命令のアドレスの管理や命令キュー3
01の制御もIFステージ201で行う。
ブリフェッチ先の命令のアドレスの管理や命令キュー3
01の制御もIFステージ201で行う。
IFステージ201で検出するEITには、命令をメモ
リからフェッチする際のバスアクセス例外あるいはメモ
リ保護違反などによるアドレス変換例外がある。
リからフェッチする際のバスアクセス例外あるいはメモ
リ保護違反などによるアドレス変換例外がある。
(3,2,2) r命令デコードステージ」命令デコー
ドステージ(Dステージ)202はIFステージ201
から入力された命令コードをデコードする。デコードは
命令デコート部102のFHWデコーダ、N F I
Wデコーダ及びアドレッシングモードデコーダを合わせ
た第1デコーダ303を使用して、2クロツク(1ステ
ツプ)単位に1度行ない、1回のデコード処理で、0〜
6バイトの命令コードを消費する(R[iT命令の復帰
先アドレスを含むステップコードの出力処理などでは命
令コードを消費しない)。1回のデコードでAステージ
203に対してアドレス計算情報としてのAコード21
3である制御コードとアドレス修飾情報と、オペレーシ
ョンコードの中間デコード結果としてのDコード212
である制御コードと8ビツトのリテラル情報とを出力す
る。
ドステージ(Dステージ)202はIFステージ201
から入力された命令コードをデコードする。デコードは
命令デコート部102のFHWデコーダ、N F I
Wデコーダ及びアドレッシングモードデコーダを合わせ
た第1デコーダ303を使用して、2クロツク(1ステ
ツプ)単位に1度行ない、1回のデコード処理で、0〜
6バイトの命令コードを消費する(R[iT命令の復帰
先アドレスを含むステップコードの出力処理などでは命
令コードを消費しない)。1回のデコードでAステージ
203に対してアドレス計算情報としてのAコード21
3である制御コードとアドレス修飾情報と、オペレーシ
ョンコードの中間デコード結果としてのDコード212
である制御コードと8ビツトのリテラル情報とを出力す
る。
Dステージ202では、各命令のPC計算部103の制
御、分岐予測処理、ブリブランチ命令に対するブリブラ
ンチ処理、命令キュー301からの命令コード出力処理
をも行う。
御、分岐予測処理、ブリブランチ命令に対するブリブラ
ンチ処理、命令キュー301からの命令コード出力処理
をも行う。
Dステージ202で検出するBITには、予約命令例外
及びブリブランチ時の奇数アドレスジャンプトラップが
ある。また、IFステージ201より転送されてきた各
種BITはステップコード内にエンコードする処理をし
てAステージ203に転送する。
及びブリブランチ時の奇数アドレスジャンプトラップが
ある。また、IFステージ201より転送されてきた各
種BITはステップコード内にエンコードする処理をし
てAステージ203に転送する。
(3,2,3) rオペランドアドレス計算ステージ」
オペランドアドレス計算ステージ(へステージ)203
は処理機能が大きく2つに分かれる。1つは命令デコー
ド部102の第2デコーダ305を使用してオペレーシ
ョンコードの後段デコードを行う処理で、他方はオペラ
ンドアドレス計算部104でオペランドアドレスの計算
を行う処理である。
オペランドアドレス計算ステージ(へステージ)203
は処理機能が大きく2つに分かれる。1つは命令デコー
ド部102の第2デコーダ305を使用してオペレーシ
ョンコードの後段デコードを行う処理で、他方はオペラ
ンドアドレス計算部104でオペランドアドレスの計算
を行う処理である。
オペレーションコードの後段デコード処理はDコード2
12を入力とし、レジスタ、メモリの書込み予約及びマ
イクロプログラムのエントリアドレスとマイクロプログ
ラムに対するパラメータなどを含むRコード゛214の
出力を行う。なお、レジスタあるいはメモリの書込み予
約は、アドレス計算で参照したレジスタやメモリの内容
がパイプライン上を先行する命令で書換えられることに
より誤ったアドレス計算が行われるのを防ぐためのもの
である。レジスタあるいはメモリの書込み予約はデッド
ロックを避けるため、ステップコード毎ではなく命令毎
に行う。レジスタ及びメモリへの書込み予約については
特願昭62−144394号で詳しく述べられている。
12を入力とし、レジスタ、メモリの書込み予約及びマ
イクロプログラムのエントリアドレスとマイクロプログ
ラムに対するパラメータなどを含むRコード゛214の
出力を行う。なお、レジスタあるいはメモリの書込み予
約は、アドレス計算で参照したレジスタやメモリの内容
がパイプライン上を先行する命令で書換えられることに
より誤ったアドレス計算が行われるのを防ぐためのもの
である。レジスタあるいはメモリの書込み予約はデッド
ロックを避けるため、ステップコード毎ではなく命令毎
に行う。レジスタ及びメモリへの書込み予約については
特願昭62−144394号で詳しく述べられている。
オペランドアドレス計算処理はAコード213を入力と
し、Aコード213に従いオペランドアドレス計算部1
04で加算あるいはメモリ間接参照を組合わせてアドレ
ス計算を行い、その計算結果をFコード215として出
力する。この際、アドレス計算に伴うレジスタ及びメモ
リの読出し時にコンマリフトチエツクを行い、先行命令
がレジスタあるいはメモリに書込み処理を終了していな
いためコンフリクトが指示されれば、先行命令がEステ
ージ205で書込み処理を終了するまで待つ。また、オ
ペランドアドレス及びメモリ間接参照のアドレスがメモ
リにマツプされたl108N域に入るか否かのチエツク
も行う。
し、Aコード213に従いオペランドアドレス計算部1
04で加算あるいはメモリ間接参照を組合わせてアドレ
ス計算を行い、その計算結果をFコード215として出
力する。この際、アドレス計算に伴うレジスタ及びメモ
リの読出し時にコンマリフトチエツクを行い、先行命令
がレジスタあるいはメモリに書込み処理を終了していな
いためコンフリクトが指示されれば、先行命令がEステ
ージ205で書込み処理を終了するまで待つ。また、オ
ペランドアドレス及びメモリ間接参照のアドレスがメモ
リにマツプされたl108N域に入るか否かのチエツク
も行う。
Aステージ203で検出するBITには予約命令例外、
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレッシングの時のオペランドブレイクポ
イントヒツトによるデバッグトラップがある。Dコード
212又はAコード213自体がEITを起こしたこと
を示していれば、Aステージ203はそのコードに対し
てアドレス計算処理をせず、そのBITをRコード21
4及びFコード215に伝える。
特権命令例外、バスアクセス例外、アドレス変換例外、
メモリ間接アドレッシングの時のオペランドブレイクポ
イントヒツトによるデバッグトラップがある。Dコード
212又はAコード213自体がEITを起こしたこと
を示していれば、Aステージ203はそのコードに対し
てアドレス計算処理をせず、そのBITをRコード21
4及びFコード215に伝える。
(3,2,4) rマイクロROMアクセスステージ」
オペランドフェッチステージ(Fステージ)204も処
理が大きく2つに分かれる。一方はマイクロROMのア
クセス処理であり、特にRステージ206と称する。他
方はオペランドプリフェッチ処理であり、特にOFステ
ージ207と称する。Rステージ206とOFステージ
207とは必ずしも同時に動作するわけではなく、メモ
リアクセス権が獲得できるか否か等に依存して独立に動
作する。
オペランドフェッチステージ(Fステージ)204も処
理が大きく2つに分かれる。一方はマイクロROMのア
クセス処理であり、特にRステージ206と称する。他
方はオペランドプリフェッチ処理であり、特にOFステ
ージ207と称する。Rステージ206とOFステージ
207とは必ずしも同時に動作するわけではなく、メモ
リアクセス権が獲得できるか否か等に依存して独立に動
作する。
Rステージ206の処理であるマイクロROMアクセス
処理は、Rコード214に対して次のEステージ205
での実行に使用する実行制御コードであるEコード21
6を生成するためのマイクロROMアクセスとマイクロ
命令デコード処理である。1つのRコード214に対す
る処理が2つ以上のマイクロプログラムステップに分解
される場合、マイクロROMはEステージ205で使用
され、次のRコード214はマイクロROMアクセス待
ちになる。Rコード214に対するマイクロROMアク
セスが行われるのは、その前のEステージ205での最
後のマ・イクロ命令実行の時である。本発明のデータ処
理装置では、はとんどの基本命令は1マイクロプログラ
ムステツプで行われるため、実際にはRコード214に
対するマイクロRO)1アクセスが次々と行われること
が多い。
処理は、Rコード214に対して次のEステージ205
での実行に使用する実行制御コードであるEコード21
6を生成するためのマイクロROMアクセスとマイクロ
命令デコード処理である。1つのRコード214に対す
る処理が2つ以上のマイクロプログラムステップに分解
される場合、マイクロROMはEステージ205で使用
され、次のRコード214はマイクロROMアクセス待
ちになる。Rコード214に対するマイクロROMアク
セスが行われるのは、その前のEステージ205での最
後のマ・イクロ命令実行の時である。本発明のデータ処
理装置では、はとんどの基本命令は1マイクロプログラ
ムステツプで行われるため、実際にはRコード214に
対するマイクロRO)1アクセスが次々と行われること
が多い。
Rステージ206で新たに検出するEITはない。
Rコード214が命令処理再実行型のEXTを示してい
る時は、そのBIT処理に対するマイクロプログラムが
実行されるので、Rステージ206はそのRコード21
4に従ったマイクロ命令をフェッチする。
る時は、そのBIT処理に対するマイクロプログラムが
実行されるので、Rステージ206はそのRコード21
4に従ったマイクロ命令をフェッチする。
Rコード214が奇数アドレスジャンプトラップを示し
ている場合、Rステージ206はそれをEコード216
によって伝える。これはブリブランチに対するもので、
Eステージ205ではそのEコード216で分岐が生じ
なければそのプリブランチを有効として奇数アドレスジ
ャンプトラップを発生する。
ている場合、Rステージ206はそれをEコード216
によって伝える。これはブリブランチに対するもので、
Eステージ205ではそのEコード216で分岐が生じ
なければそのプリブランチを有効として奇数アドレスジ
ャンプトラップを発生する。
(3,2,5) rオペランドフェッチステージ」オペ
ランドフェッチステージ(OFステージ)207はFス
テージ204で行う上記の2つの処理の内のオペランド
プリフェッチ処理を行う。
ランドフェッチステージ(OFステージ)207はFス
テージ204で行う上記の2つの処理の内のオペランド
プリフェッチ処理を行う。
オペランドブリフェッチはFコード215を人力とし、
フェッチしたオペランドとそのアドレスをSコード21
7として出力する。1つのFコード215ではワード境
界を跨いでも良いが4バイト以下のオペランドフェッチ
を指定する。Fコード215にはオペランドのアクセス
を行うか否かの指定も含まれており、Aステージ203
で計算したオペランドアドレス自体あるいは即値をEス
テージ205に転送する場合にはオペランドプリフェッ
チは行わず、Fコード215の内容をSコード217と
して転送する。ブリフェッチしようとするオペランドと
、Eステージ205が書き込み処理を行おうとするオペ
ランドとが一致する場合は、オペランドブリフェッチは
メモリから行わずバイパスして行う。また、【10領域
に対してはオペランドプリフェッチを遅延させ、先行命
令がすべて完了するまで待ってオペランドフェッチを行
う。
フェッチしたオペランドとそのアドレスをSコード21
7として出力する。1つのFコード215ではワード境
界を跨いでも良いが4バイト以下のオペランドフェッチ
を指定する。Fコード215にはオペランドのアクセス
を行うか否かの指定も含まれており、Aステージ203
で計算したオペランドアドレス自体あるいは即値をEス
テージ205に転送する場合にはオペランドプリフェッ
チは行わず、Fコード215の内容をSコード217と
して転送する。ブリフェッチしようとするオペランドと
、Eステージ205が書き込み処理を行おうとするオペ
ランドとが一致する場合は、オペランドブリフェッチは
メモリから行わずバイパスして行う。また、【10領域
に対してはオペランドプリフェッチを遅延させ、先行命
令がすべて完了するまで待ってオペランドフェッチを行
う。
叶ステージ207で検出されるBITには、バスアクセ
ス例外、アドレス変換例外、オペランドプリフェッチに
対するブレイクポイントヒントによるデバッグトラップ
がある。Fコード215がデバッグトラップ以外のBI
Tを示している時は、それをSコード217に転送し、
オペランドプリフェッチは行わない。Fコード215が
デバッグトラップを示している時は、そのFコード21
5に対してBITを示していない場合と同じ処理をする
と共にデバッグトラップをSコード217に伝える。
ス例外、アドレス変換例外、オペランドプリフェッチに
対するブレイクポイントヒントによるデバッグトラップ
がある。Fコード215がデバッグトラップ以外のBI
Tを示している時は、それをSコード217に転送し、
オペランドプリフェッチは行わない。Fコード215が
デバッグトラップを示している時は、そのFコード21
5に対してBITを示していない場合と同じ処理をする
と共にデバッグトラップをSコード217に伝える。
(3,2,6) r実行ステージ」
実行ステージ(Eステージ)205はEコード216及
びSコード217を入力として動作する。このEステー
ジ205が命令を実行するステージであり、Fステージ
204以前のステージで行われた処理は全てEステージ
205のための前処理である。Eステージ205でジャ
ンプ命令が実行されたり、あるいはBIT処理が起動さ
れたりした場合は、IFステージ201からFステージ
204までの処理は全て無効化される。Eステージ20
5はマイクロプログラムにより制御され、Rコード21
4に示されたマイクロプログラムのエントリアドレスか
らの一連のマイクロプログラムを実行することにより命
令を実行する。
びSコード217を入力として動作する。このEステー
ジ205が命令を実行するステージであり、Fステージ
204以前のステージで行われた処理は全てEステージ
205のための前処理である。Eステージ205でジャ
ンプ命令が実行されたり、あるいはBIT処理が起動さ
れたりした場合は、IFステージ201からFステージ
204までの処理は全て無効化される。Eステージ20
5はマイクロプログラムにより制御され、Rコード21
4に示されたマイクロプログラムのエントリアドレスか
らの一連のマイクロプログラムを実行することにより命
令を実行する。
マイクロRO?+の読み出しとマイクロ命令の実行とは
パイプライン化されて行われる。従ってマイクロプログ
ラムで分岐が起きた場合は、1マイクロステツプの空き
ができる。また、Eステージ205はデータ演算部10
6にあるストアバッファを利用して、4バイト以内のオ
ペランドストアと次のマイクロ命令実行をパイプライン
処理することもできる。
パイプライン化されて行われる。従ってマイクロプログ
ラムで分岐が起きた場合は、1マイクロステツプの空き
ができる。また、Eステージ205はデータ演算部10
6にあるストアバッファを利用して、4バイト以内のオ
ペランドストアと次のマイクロ命令実行をパイプライン
処理することもできる。
Eステージ205では、Aステージ203で行ったレジ
スタ及びメモリに対する書込み予約をオペランドの書き
込み後に解除する。
スタ及びメモリに対する書込み予約をオペランドの書き
込み後に解除する。
また、条件分岐命令がEステージ205で分岐を発した
場合は、その条件分岐命令に対する分岐予測が誤ってい
たのであるから、分岐履歴の書換えを行う。
場合は、その条件分岐命令に対する分岐予測が誤ってい
たのであるから、分岐履歴の書換えを行う。
Eステージ205で検出されるBITには、バスアクセ
ス例外、アドレス変換例外、デバッグトラップ、奇数ア
ドレスジャンプトラップ、予約機能例外、不正オペラン
ド例外、予約スタックフォーマット例外、ゼロ除算トラ
ップ、無条件トラップ、条件トラップ、遅延コンテキス
トトラップ、外部割込、遅延割込、リセット割込、シス
テム障害がある。
ス例外、アドレス変換例外、デバッグトラップ、奇数ア
ドレスジャンプトラップ、予約機能例外、不正オペラン
ド例外、予約スタックフォーマット例外、ゼロ除算トラ
ップ、無条件トラップ、条件トラップ、遅延コンテキス
トトラップ、外部割込、遅延割込、リセット割込、シス
テム障害がある。
Eステージ205で検出されたBITは全てBIT処理
されるが、Eステージ以前のIFステージ201からF
ステージ204の間で検出され、Rコード214あるい
はSコード217に反映されているEITは必ずしもB
IT処理されるとは限らない。IFステージ201から
Fステージ204の間で検出されたが、先行の命令がE
ステージ205でジャンプ命令が実行されたなどの原因
でEステージ205まで到達しなかったEITは全てキ
ャンセルされる。そのBITを起こした命令はそもそも
実行されなかったことになる。
されるが、Eステージ以前のIFステージ201からF
ステージ204の間で検出され、Rコード214あるい
はSコード217に反映されているEITは必ずしもB
IT処理されるとは限らない。IFステージ201から
Fステージ204の間で検出されたが、先行の命令がE
ステージ205でジャンプ命令が実行されたなどの原因
でEステージ205まで到達しなかったEITは全てキ
ャンセルされる。そのBITを起こした命令はそもそも
実行されなかったことになる。
外部割込及び遅延割込は命令の切れ目でEステージ20
5に直接骨は付けられ、マイクロプログラムにより必要
な処理が実行される。その他の各種BITの処理はマイ
クロプログラムにより行われる。
5に直接骨は付けられ、マイクロプログラムにより必要
な処理が実行される。その他の各種BITの処理はマイ
クロプログラムにより行われる。
(3,3) r各パイプラインステージの状態制御」パ
イプラインの各ステージは入力ラッチと出力ラッチとを
有し、他のステージとは独立に動作することを基本とす
る。各ステージは1つ前に行った処理が終わり、その処
理結果を出力ラソチから次のステージの入力ラッチに転
送し、自分のステージの入力ラッチに次の処理に必要な
人力信号がすべて揃えば次の処理を開始する。
イプラインの各ステージは入力ラッチと出力ラッチとを
有し、他のステージとは独立に動作することを基本とす
る。各ステージは1つ前に行った処理が終わり、その処
理結果を出力ラソチから次のステージの入力ラッチに転
送し、自分のステージの入力ラッチに次の処理に必要な
人力信号がすべて揃えば次の処理を開始する。
つまり各ステージは、1つ前段のステージから出力され
てくる次の処理に対する入力信号が全て有効となり、今
の処理結果を後段のステージの入力ラッチに転送して出
力ラッチが空になると次の処理を開始する。
てくる次の処理に対する入力信号が全て有効となり、今
の処理結果を後段のステージの入力ラッチに転送して出
力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミン
グで入力信号が全て揃っている必要がある。人力信号が
揃っていない場合、そのステージは待ち状態(人力待ち
)になる。出力ラッチから次のステージの人力ラッチへ
の転送を行う場合には次のステージの入力ラッチが空き
状態になっている必要があり、次のステージの入力ラッ
チが空きでない場合もパイプラインステージは待ち状態
(出力待ち)になる。必要なメモリアクセス権が獲得で
きなかったり、処理しているメモリアクセスにウェイト
が挿入されたり、その他のパイプラインコンフリクトが
生じると各ステージの処理自体が遅延する。
グで入力信号が全て揃っている必要がある。人力信号が
揃っていない場合、そのステージは待ち状態(人力待ち
)になる。出力ラッチから次のステージの人力ラッチへ
の転送を行う場合には次のステージの入力ラッチが空き
状態になっている必要があり、次のステージの入力ラッ
チが空きでない場合もパイプラインステージは待ち状態
(出力待ち)になる。必要なメモリアクセス権が獲得で
きなかったり、処理しているメモリアクセスにウェイト
が挿入されたり、その他のパイプラインコンフリクトが
生じると各ステージの処理自体が遅延する。
(3,4)スタックポインタの動作
第28図は、本発明の一実施例を示すブロック図である
。61はオペランドアドレス計算ステージ(Aステージ
203)の作業用ステージスタックポインタASPであ
り、Aステージ203で実行中の命令に付随するスタッ
クポインタの値を示す。63はオペランドフェッチステ
ージ(Fステージ204)の作業用ステージスタックポ
インタ(FSP) 、65は実行ステージ(Eステージ
205)の作業用ステージスタックポインタC3Pであ
る。66はソフトウェアからみたレベルのスタックポイ
ンタ群(リング、割込み等により複数個のスタックポイ
ンタが存在する)、64はASP出力ラッチ、65はF
SII出力ラッチでありそれぞれASP61. FSP
63の出力データを保持するラッチである。
。61はオペランドアドレス計算ステージ(Aステージ
203)の作業用ステージスタックポインタASPであ
り、Aステージ203で実行中の命令に付随するスタッ
クポインタの値を示す。63はオペランドフェッチステ
ージ(Fステージ204)の作業用ステージスタックポ
インタ(FSP) 、65は実行ステージ(Eステージ
205)の作業用ステージスタックポインタC3Pであ
る。66はソフトウェアからみたレベルのスタックポイ
ンタ群(リング、割込み等により複数個のスタックポイ
ンタが存在する)、64はASP出力ラッチ、65はF
SII出力ラッチでありそれぞれASP61. FSP
63の出力データを保持するラッチである。
72はEステージ205のアドレスレジスタ(AA レ
ジスタ)、73は外部とやり取りされるデータのための
Eステージ205のデータレジスタ(DDレジスタ)、
75はAステージ203のアドレス加算部、8087は
内部データ演算部である。106はEステージ205の
データ演算部、90a〜90eはAステージ203でA
SP61が更新されたことを示すASP更新信号である
。91はAコード213中のASPインクリメント信号
、92はAコード213中のASPデクリメント信号で
ある。611,621,631,641は夫々ASP6
1 、へsp出力ラッチ62、FSP63 、FSP出
力ラッチ64の一部としてASP更新信号90aを転送
するラッチである。
ジスタ)、73は外部とやり取りされるデータのための
Eステージ205のデータレジスタ(DDレジスタ)、
75はAステージ203のアドレス加算部、8087は
内部データ演算部である。106はEステージ205の
データ演算部、90a〜90eはAステージ203でA
SP61が更新されたことを示すASP更新信号である
。91はAコード213中のASPインクリメント信号
、92はAコード213中のASPデクリメント信号で
ある。611,621,631,641は夫々ASP6
1 、へsp出力ラッチ62、FSP63 、FSP出
力ラッチ64の一部としてASP更新信号90aを転送
するラッチである。
第29図、第30図は、本発明のデータ処理装置におい
て実施されるいくつかの命令の、各ステージにおけるス
タックポインタに関する処理を示す図である。(a)は
Aステージ203 、 (f)はFステージ204 、
(e)はEステージ205の処理を示す。
て実施されるいくつかの命令の、各ステージにおけるス
タックポインタに関する処理を示す図である。(a)は
Aステージ203 、 (f)はFステージ204 、
(e)はEステージ205の処理を示す。
第31図、第32図は第30図の命令の次のステップコ
ードがスタックポインタを参照する場合と、しない場合
とのパイプラインの処理の様子を示した図である。■は
“100”をスタックポインタに転送する命令に対する
ステップコード、■は■の次に処理されるステップコー
ド、■は■の次に処理されるステップコード、(a)は
Aステージ203 、(f)はFステージ204 、(
e)はEステージ205におけるスタックポインタの処
理を示し、また横軸は時間の経過を示す。
ードがスタックポインタを参照する場合と、しない場合
とのパイプラインの処理の様子を示した図である。■は
“100”をスタックポインタに転送する命令に対する
ステップコード、■は■の次に処理されるステップコー
ド、■は■の次に処理されるステップコード、(a)は
Aステージ203 、(f)はFステージ204 、(
e)はEステージ205におけるスタックポインタの処
理を示し、また横軸は時間の経過を示す。
次に第28図を用いて、スタックポインタに関する処理
について説明する。Aコード213中には^5l)61
のインクリメント信号91、デクリメント信号92が含
まれており、この信号91.92はASP61の制御を
行う。またインクリメント信号91、デクリメント信号
92のORをとることによりASP更新信号90を生成
する。
について説明する。Aコード213中には^5l)61
のインクリメント信号91、デクリメント信号92が含
まれており、この信号91.92はASP61の制御を
行う。またインクリメント信号91、デクリメント信号
92のORをとることによりASP更新信号90を生成
する。
インクリメント信号91又はデクリメント信号92が′
1″のとき、つまりAステージ203でASP61を更
新したときにASP更新信号90aは“1″ となる。
1″のとき、つまりAステージ203でASP61を更
新したときにASP更新信号90aは“1″ となる。
そしてASP更新信号90aはスタックポインタの値と
共にパイプライン中のステップコードの流れに同期して
転送される。Eステージ205においては転送されてき
たASP更新信号90eが“l”のときのみC5P65
にFSP63の値を転送する。
共にパイプライン中のステップコードの流れに同期して
転送される。Eステージ205においては転送されてき
たASP更新信号90eが“l”のときのみC5P65
にFSP63の値を転送する。
スタックブツシュ・アドレシッシングモードのオペラン
ド指定を含む命令、例えばレジスタの値をスタックトッ
プ(スタックポインタの値をデクリメントした値が指す
ところ)に書き込むNOV命令(MOV:Rn −>
2−3P Rnはn番のレジスタを表し、a−spは
スタックポインタをデクリメントした値が指すアドレス
を示す)を実行した場合の各ステージでのスタックポイ
ンタに関する処理を第29図に示す。まずDステージ2
02はASP610更新制御等を含むAコード213を
生成する。
ド指定を含む命令、例えばレジスタの値をスタックトッ
プ(スタックポインタの値をデクリメントした値が指す
ところ)に書き込むNOV命令(MOV:Rn −>
2−3P Rnはn番のレジスタを表し、a−spは
スタックポインタをデクリメントした値が指すアドレス
を示す)を実行した場合の各ステージでのスタックポイ
ンタに関する処理を第29図に示す。まずDステージ2
02はASP610更新制御等を含むAコード213を
生成する。
Aステージ203では、レジスタ指定を含むRコード2
14を出力する。またAコード213に基づいて、八5
P61はオペランドのサイズ分デクリメントされ、更新
後の値がFSP63に転送される。この時Aステージ2
03でASP61が更新されたことを示すASP更新信
号90aは“1″ となり、この信号はASP61の値
と共に転送される。ここでFステージ204が前のステ
ップコードを処理中などですぐにASP61の値を転送
できない場合は、ASP出力ラッチ62で転送可能にな
るまで待つ。本発明のデータ処理装置においては、スタ
ックプッシュアドレシッシングモードと他のアドレシソ
シングモードの処理の共通化のため、ASP61のデク
リメントと共にアドレス加算部75においても(ASP
O値−オペランドサイズ)を実行し、その結果をオペラ
ンドアドレスとしてFステージ204へ転送する。
14を出力する。またAコード213に基づいて、八5
P61はオペランドのサイズ分デクリメントされ、更新
後の値がFSP63に転送される。この時Aステージ2
03でASP61が更新されたことを示すASP更新信
号90aは“1″ となり、この信号はASP61の値
と共に転送される。ここでFステージ204が前のステ
ップコードを処理中などですぐにASP61の値を転送
できない場合は、ASP出力ラッチ62で転送可能にな
るまで待つ。本発明のデータ処理装置においては、スタ
ックプッシュアドレシッシングモードと他のアドレシソ
シングモードの処理の共通化のため、ASP61のデク
リメントと共にアドレス加算部75においても(ASP
O値−オペランドサイズ)を実行し、その結果をオペラ
ンドアドレスとしてFステージ204へ転送する。
Fステージ204では、Rコード214よりレジスタア
クセス信号を含むEコード216を生成し、このEコー
ド216とオペランドアドレスの値を含むSコード21
7をEステージ205に転送する。また^SP更新信号
90eが“1′であることを検知して、FSP63の値
をCSI”65に転送する。先はどと同様C5P65に
すぐ転送できない場合は、FSP出力ラッチ64にて転
送可能になるまで待つ。
クセス信号を含むEコード216を生成し、このEコー
ド216とオペランドアドレスの値を含むSコード21
7をEステージ205に転送する。また^SP更新信号
90eが“1′であることを検知して、FSP63の値
をCSI”65に転送する。先はどと同様C5P65に
すぐ転送できない場合は、FSP出力ラッチ64にて転
送可能になるまで待つ。
Eステージ205では、指定されたレジスタの値を読み
出しデータ演算部106からDOババス5を介してDO
レジスタ73に書き込む。AAレジスタ72にはFステ
ージ204から転送されたオペランドアドレスを書き込
む。そしてこの命令の終了時、C3P65の値はソフト
ウェアからみたスタックポインタ群66の1つに転送さ
れ、外部からみて命令実行後のスタックポインタの値が
正しく設定される。静レジスタ72の示すアドレスにD
Oレジスタ73の値をストアする。
出しデータ演算部106からDOババス5を介してDO
レジスタ73に書き込む。AAレジスタ72にはFステ
ージ204から転送されたオペランドアドレスを書き込
む。そしてこの命令の終了時、C3P65の値はソフト
ウェアからみたスタックポインタ群66の1つに転送さ
れ、外部からみて命令実行後のスタックポインタの値が
正しく設定される。静レジスタ72の示すアドレスにD
Oレジスタ73の値をストアする。
この命令がAステージ203での処理を終了した時点で
この命令の終了時のスタックポインタの値がASP61
に格納されているため、後の命令がスタックポインタを
参照するアドレシッシングモードを含んでいても、AS
P61の値を参照することにより、正しいアドレスを得
ることができる。
この命令の終了時のスタックポインタの値がASP61
に格納されているため、後の命令がスタックポインタを
参照するアドレシッシングモードを含んでいても、AS
P61の値を参照することにより、正しいアドレスを得
ることができる。
次に例えば100”をスタックポインタに書き込む命令
(MOVE”100’−> SP ’100”は即値、
spはスタックポインタ)のスタックポインタに関する
処理を第30図に示す。
(MOVE”100’−> SP ’100”は即値、
spはスタックポインタ)のスタックポインタに関する
処理を第30図に示す。
この命令ではAステージ203での処理の際はへ5P6
1の(直は変化しない。i’5P63にこのASP61
の値が転送される。また後の命令がスタックポインタを
参照する場合に間違った値を参照しないように、スタッ
クポインタの値をEステージ205で書き換えることを
示すためにスタックポインタ書き込み予約を行う。この
ときはへsp更新信号90aは110#である。
1の(直は変化しない。i’5P63にこのASP61
の値が転送される。また後の命令がスタックポインタを
参照する場合に間違った値を参照しないように、スタッ
クポインタの値をEステージ205で書き換えることを
示すためにスタックポインタ書き込み予約を行う。この
ときはへsp更新信号90aは110#である。
Fステージ204では、スタックポインタ書き込み制御
等を含むEコード216と、即値データ“100”を含
むSコード217を出力する。この時はASP更新信号
90eが“0”なのでI? S P 63の値はC3P
65へは書き込まれない。
等を含むEコード216と、即値データ“100”を含
むSコード217を出力する。この時はASP更新信号
90eが“0”なのでI? S P 63の値はC3P
65へは書き込まれない。
Eステージ205ではEコード216に基づいて即値デ
ータ”100″を読み出し、データ演算部106、DO
パス85を通して^5P61およびC3P65に転送す
る。
ータ”100″を読み出し、データ演算部106、DO
パス85を通して^5P61およびC3P65に転送す
る。
そして命令終了時にC3P65の値をsp群66に転送
する。
する。
ここで、この命令の後のステップコードがアドレス計算
時にスタックポインタを使用する場合を第31図に示す
。このとき、次のステップコード■は、ステップコード
■でスタックポインタの書き込み予約が行われているた
め、ステップコード■がEステージ205で処理されて
スタックポインタに値が書き込まれスタックポインタ書
き込み予約が解除されるまでは、Aステージ203で処
理を中断して待っている。そしてステップコート■がE
ステージ205で処理されASP61が書き変わってか
ら、ステップコード■のAステージ203での処理を開
始する。ステップコード■ではFSP63の値をC3P
65に転送する。
時にスタックポインタを使用する場合を第31図に示す
。このとき、次のステップコード■は、ステップコード
■でスタックポインタの書き込み予約が行われているた
め、ステップコード■がEステージ205で処理されて
スタックポインタに値が書き込まれスタックポインタ書
き込み予約が解除されるまでは、Aステージ203で処
理を中断して待っている。そしてステップコート■がE
ステージ205で処理されASP61が書き変わってか
ら、ステップコード■のAステージ203での処理を開
始する。ステップコード■ではFSP63の値をC3P
65に転送する。
一方、後のステップコードがスタックポインタを参照し
ない場合を第32図に示す。この詩人のステップコード
■はスタックボ・インクを参照しないので、Aステージ
203で待っている必要はなく、ステップコード■がA
ステージ203での処理を終えた時点でAステージ20
3での処理を開始する。
ない場合を第32図に示す。この詩人のステップコード
■はスタックボ・インクを参照しないので、Aステージ
203で待っている必要はなく、ステップコード■がA
ステージ203での処理を終えた時点でAステージ20
3での処理を開始する。
このステップコード■に関してはASP61の値が、本
来その命令実行時に付随すべきスタックポインタの値と
は異なっている。しかしステップコード■ではASP更
新信号は“0”であり、FSP63の値はC3P65に
は書き込まれない。そのためステップコード■がEステ
ージ205で処理されるときには、正しいスタックポイ
ンタの値(ステップコート■でC3P65に書き込まれ
た値)がC5P65に入っている。そして命令終了時に
C5P65の値をソフトウェアからみたスタックポイン
タ66に書き込む。
来その命令実行時に付随すべきスタックポインタの値と
は異なっている。しかしステップコード■ではASP更
新信号は“0”であり、FSP63の値はC3P65に
は書き込まれない。そのためステップコード■がEステ
ージ205で処理されるときには、正しいスタックポイ
ンタの値(ステップコート■でC3P65に書き込まれ
た値)がC5P65に入っている。そして命令終了時に
C5P65の値をソフトウェアからみたスタックポイン
タ66に書き込む。
また、ステップコード■もスタックポインタを使用しな
い場合は、ステップコード■がAステージ203での処
理を終わったらAステージ203での処理が開始される
。ステップコード■は■と同様、ASP更新信号90が
”0”であり、FSP63からC3P65への値の転送
は行われない。
い場合は、ステップコード■がAステージ203での処
理を終わったらAステージ203での処理が開始される
。ステップコード■は■と同様、ASP更新信号90が
”0”であり、FSP63からC3P65への値の転送
は行われない。
このように各ステップコードが、Aステージ203でス
タックポインタの値を更新する場合には、Aステージ2
03で処理を終わった時点でこの命令終了時のスタック
ポインタの値がASP61に書き込まれている。そのた
め後の命令のステップコードがAステージ203でスタ
ックポインタを参照する場合、^5P61を参照するこ
とにより正しいアドレスを得ることができる。例えば次
の命令のアトレジ・ンシングモードが(SP + di
sp)であったら、(八sp+ disp)をアドレス
加算部75で実行することにより、前の命令の終了を待
たなくても、正しいアドレスが得られる。
タックポインタの値を更新する場合には、Aステージ2
03で処理を終わった時点でこの命令終了時のスタック
ポインタの値がASP61に書き込まれている。そのた
め後の命令のステップコードがAステージ203でスタ
ックポインタを参照する場合、^5P61を参照するこ
とにより正しいアドレスを得ることができる。例えば次
の命令のアトレジ・ンシングモードが(SP + di
sp)であったら、(八sp+ disp)をアドレス
加算部75で実行することにより、前の命令の終了を待
たなくても、正しいアドレスが得られる。
またEステージ205の処理でスタックポインタの値を
更新する場合には、スタックポインタ書き込み予約を行
う。そして次のステップコードがAステージ203でス
タックポインタを参照する場合、次のステップコードの
処理はAステージ203でスタックポインタ書き込み予
約が解除されるまで待っている。一方次のステップコー
ドがスタックポインタを参照しない場合は、Aステージ
203で待っている必要はなく各ステージでの処理を行
い、そのステップコードがEステージ205へ送られた
ときにFSP63からC3P65へのスタックポインタ
の値の転送を行わないようにする。こうしてC5P65
に誤った値を転送しないようにし、命令終了時に転送さ
れるソフトウェアからみたスタックポインタ66の値は
正しい値を保つ。
更新する場合には、スタックポインタ書き込み予約を行
う。そして次のステップコードがAステージ203でス
タックポインタを参照する場合、次のステップコードの
処理はAステージ203でスタックポインタ書き込み予
約が解除されるまで待っている。一方次のステップコー
ドがスタックポインタを参照しない場合は、Aステージ
203で待っている必要はなく各ステージでの処理を行
い、そのステップコードがEステージ205へ送られた
ときにFSP63からC3P65へのスタックポインタ
の値の転送を行わないようにする。こうしてC5P65
に誤った値を転送しないようにし、命令終了時に転送さ
れるソフトウェアからみたスタックポインタ66の値は
正しい値を保つ。
以上のように、この発明によれば、アドレス計算ステー
ジがスタックポインタを持ち、実行ステージの管理する
スタックポインタへの値の転送を、アドレス計算ステー
ジが管理するスタックポインタをアドレス計算ステージ
が更新し7たかどうかにより制御することで、少ないハ
ードウェアで高速かつ正確な命令実行を行える効果があ
る。
ジがスタックポインタを持ち、実行ステージの管理する
スタックポインタへの値の転送を、アドレス計算ステー
ジが管理するスタックポインタをアドレス計算ステージ
が更新し7たかどうかにより制御することで、少ないハ
ードウェアで高速かつ正確な命令実行を行える効果があ
る。
第1図は本発明の一実施例によるデータ処理装置の全体
ブロック図、第2図は本発明の一実施例によるデータ処
理装置のパイプライン概要図、第3図〜第27図は本発
明の一実施例によるデータ処理装置の命令フォーマット
の特徴を示す図、第28図は本発明の一実施例によるデ
ータ処理装置のスタックポインタ関連部分の構成図、第
29図、第30図は本発明のデータ処理装置において実
施されるいくつかの命令の実行フローチャート、第31
図。 第32図は第30図に示す命令の次のステップコードを
含めた実行フローチャート、第33図は従来例を示すブ
ロック図、第34図、第35図は従来のブツシュ命令の
実行フローチャートである。 203・・・アドレス計算ステージ(Aステージ)20
5・・・実行ステージ(Eステージ)212〜217・
・・パイプライン処理の単位であるステップコード
61・・・Aステージ203の作業用ステージスタック
ポインタ(ASP) 63・・・Eステージ205
の作業用ステージスタックポインタ(C5P)75・・
・Aステージ203のアドレス加算部 90・・・Aス
テージ203でASPを更新することを示す^sp更新
信号 なお、 図中同一符号は、 同一、 または相当部分 を示ず。 代 理 人 大 岩 増 雄 く通しのビット番号〉 〈バイト毎のビット番号〉 〈アドレス〉 ←低アドレス ←MSB制 高アドレス→ LSB側→ →→命令を哀む方向→→ 図 BYTE: BYTE: BYTE: N+2−1 N+2−1 図 BYTE: N+2−1 BYTE; N+2 N+2+M−1 図 BYTE: N+2−1 BYTE : N+2−1 BYTE: N+2 N+2+1 N+2+2 N+2十M+2−1 図 BYTE: N+2−1 BYTE: N+4−1 図 BYTE: N+2−1 BYTE: N+2 N+2+1 N+2+2 −−−−−− N+2+M+2−1図 BYTE: 図 図 図 図 (Sh) (Ea) ■= Eエコ 図 (Sh) (Ea) F匣コ 「エコ 図 図 図 図 図 図 図 図 図 図 (2バイト) (0〜4バイト) 図 手 続 補 正 書(自発) 昭和 6%11層・、8
ブロック図、第2図は本発明の一実施例によるデータ処
理装置のパイプライン概要図、第3図〜第27図は本発
明の一実施例によるデータ処理装置の命令フォーマット
の特徴を示す図、第28図は本発明の一実施例によるデ
ータ処理装置のスタックポインタ関連部分の構成図、第
29図、第30図は本発明のデータ処理装置において実
施されるいくつかの命令の実行フローチャート、第31
図。 第32図は第30図に示す命令の次のステップコードを
含めた実行フローチャート、第33図は従来例を示すブ
ロック図、第34図、第35図は従来のブツシュ命令の
実行フローチャートである。 203・・・アドレス計算ステージ(Aステージ)20
5・・・実行ステージ(Eステージ)212〜217・
・・パイプライン処理の単位であるステップコード
61・・・Aステージ203の作業用ステージスタック
ポインタ(ASP) 63・・・Eステージ205
の作業用ステージスタックポインタ(C5P)75・・
・Aステージ203のアドレス加算部 90・・・Aス
テージ203でASPを更新することを示す^sp更新
信号 なお、 図中同一符号は、 同一、 または相当部分 を示ず。 代 理 人 大 岩 増 雄 く通しのビット番号〉 〈バイト毎のビット番号〉 〈アドレス〉 ←低アドレス ←MSB制 高アドレス→ LSB側→ →→命令を哀む方向→→ 図 BYTE: BYTE: BYTE: N+2−1 N+2−1 図 BYTE: N+2−1 BYTE; N+2 N+2+M−1 図 BYTE: N+2−1 BYTE : N+2−1 BYTE: N+2 N+2+1 N+2+2 N+2十M+2−1 図 BYTE: N+2−1 BYTE: N+4−1 図 BYTE: N+2−1 BYTE: N+2 N+2+1 N+2+2 −−−−−− N+2+M+2−1図 BYTE: 図 図 図 図 (Sh) (Ea) ■= Eエコ 図 (Sh) (Ea) F匣コ 「エコ 図 図 図 図 図 図 図 図 図 図 (2バイト) (0〜4バイト) 図 手 続 補 正 書(自発) 昭和 6%11層・、8
Claims (1)
- 【特許請求の範囲】 1、スタックポインタによって命令のオペランドを指定
すると同時に前記スタックポインタの更新方法を指定す
るアドレッシングモードを備え、第1のステージ及び第
2のステージで命令の処理をパイプライン処理によって
順次的に行うデータ処理装置において、 前記第1のステージで参照可能な第1のスタックポイン
タと、 前記第2のステージで参照可能な第2のスタックポイン
タと、 前記第1のステージで制御され、前記第1のスタックポ
インタを更新する第1の更新手段と、 前記第2のステージで制御され、前記第1のスタックポ
インタを更新する第2の更新手段と、 前記第2のステージで制御され、前記第2のスタックポ
インタを更新する第3の更新手段と、 前記第1のスタックポインタが前記第1の更新手段によ
り更新されたときのみパイプライン処理による命令の処
理と同期して前記第1のスタックポインタの値を前記第
2のスタックポインタに転送する転送手段と を備えたことを特徴とするデータ処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63177942A JPH0769802B2 (ja) | 1988-07-14 | 1988-07-14 | データ処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63177942A JPH0769802B2 (ja) | 1988-07-14 | 1988-07-14 | データ処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0225934A true JPH0225934A (ja) | 1990-01-29 |
| JPH0769802B2 JPH0769802B2 (ja) | 1995-07-31 |
Family
ID=16039767
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63177942A Expired - Lifetime JPH0769802B2 (ja) | 1988-07-14 | 1988-07-14 | データ処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0769802B2 (ja) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63308641A (ja) * | 1987-06-10 | 1988-12-16 | Mitsubishi Electric Corp | パイプライン処理機構を持つデータ処理装置および処理方法 |
-
1988
- 1988-07-14 JP JP63177942A patent/JPH0769802B2/ja not_active Expired - Lifetime
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63308641A (ja) * | 1987-06-10 | 1988-12-16 | Mitsubishi Electric Corp | パイプライン処理機構を持つデータ処理装置および処理方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0769802B2 (ja) | 1995-07-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5717946A (en) | Data processor | |
| JPH0766324B2 (ja) | データ処理装置 | |
| JPH02173823A (ja) | データ処理装置 | |
| JPH04109336A (ja) | データ処理装置 | |
| JP2581236B2 (ja) | データ処理装置 | |
| JP2507638B2 (ja) | デ―タ処理装置 | |
| JPH0215331A (ja) | データ処理装置 | |
| JPH01214932A (ja) | データ処理装置 | |
| JPH0338725A (ja) | データ処理装置及びマイクロプロセッサ | |
| JPH0391029A (ja) | データ処理装置 | |
| JPH10232821A (ja) | データ処理装置 | |
| US5212779A (en) | System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction | |
| JPH02105937A (ja) | データ処理装置 | |
| JP2504235B2 (ja) | デ―タ処理装置 | |
| JPH04109338A (ja) | プライオリティエンコーダ及びそれを備えたデータ処理装置 | |
| JPH0225934A (ja) | データ処理装置 | |
| JP2522048B2 (ja) | マイクロプロセッサ及びそれを使用したデ―タ処理装置 | |
| JPH0225932A (ja) | データ処理装置 | |
| JP2532560B2 (ja) | 高機能な例外処理を行うデ―タ処理装置 | |
| JPH0290325A (ja) | データ処理装置 | |
| JPH0218621A (ja) | データ処理装置 | |
| JP2696578B2 (ja) | データ処理装置 | |
| JPH0298734A (ja) | データ処理装置 | |
| JPH01214933A (ja) | データ処理装置 | |
| JPH01222332A (ja) | パイプライン処理機構を持つデータ処理装置 |