JPH0769802B2 - データ処理装置 - Google Patents
データ処理装置Info
- Publication number
- JPH0769802B2 JPH0769802B2 JP63177942A JP17794288A JPH0769802B2 JP H0769802 B2 JPH0769802 B2 JP H0769802B2 JP 63177942 A JP63177942 A JP 63177942A JP 17794288 A JP17794288 A JP 17794288A JP H0769802 B2 JPH0769802 B2 JP H0769802B2
- Authority
- JP
- Japan
- Prior art keywords
- stage
- instruction
- operand
- stack pointer
- value
- 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.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims description 109
- 238000000034 method Methods 0.000 claims description 37
- 238000012546 transfer Methods 0.000 claims description 22
- 230000001360 synchronised effect Effects 0.000 claims 1
- 238000004364 calculation method Methods 0.000 description 71
- 238000010586 diagram Methods 0.000 description 34
- 230000008569 process Effects 0.000 description 29
- 238000002593 electrical impedance tomography Methods 0.000 description 25
- 238000006073 displacement reaction Methods 0.000 description 20
- 230000003111 delayed effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 101100436100 Caenorhabditis elegans asp-6 gene Proteins 0.000 description 1
- 108010038447 Chromogranin A Proteins 0.000 description 1
- 102100031186 Chromogranin-A Human genes 0.000 description 1
- 101100202932 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) tsp-4 gene Proteins 0.000 description 1
- 101100208249 Rattus norvegicus Thbs4 gene Proteins 0.000 description 1
- 238000003070 Statistical process control Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- CPTIBDHUFVHUJK-NZYDNVMFSA-N mitopodozide Chemical compound C1([C@@H]2C3=CC=4OCOC=4C=C3[C@H](O)[C@@H](CO)[C@@H]2C(=O)NNCC)=CC(OC)=C(OC)C(OC)=C1 CPTIBDHUFVHUJK-NZYDNVMFSA-N 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
Landscapes
- Advance Control (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 この発明は高度なパイプライン処理機構により高い処理
能力を実現したデータ処理装置に関するものである。
能力を実現したデータ処理装置に関するものである。
〔従来の技術〕 従来の技術として特願昭62-145852に示すスタックポイ
ンタの回路がある。
ンタの回路がある。
第33図は従来のスタックポインタ計算部のブロック図で
ある。従来例に示すデータ処理装置は、パイプライン処
理により命令の実行を行い、命令フェッチステージ(IF
ステージ)、命令デコードステージ(Dステージ)、オ
ペランドアドレス計算ステージ(Aステージ)、オペラ
ンドフェッチステージ(Fステージ)、実行ステージ
(Eステージ)の順に処理される。61はアドレス計算ス
テージで管理されているステージスタックポインタ(AS
P)、62はASP出力ラッチ、63はオペランドフェッチステ
ージで管理されているステージスタックポインタ(FS
P)、64はFSP出力ラッチ、65は実行ステージで管理され
ているステージスタックポインタ(CSP)、66、67、68
はソフトウェアから見たレベルのスタックポインタ(SP
I,SP0,SP1)である。
ある。従来例に示すデータ処理装置は、パイプライン処
理により命令の実行を行い、命令フェッチステージ(IF
ステージ)、命令デコードステージ(Dステージ)、オ
ペランドアドレス計算ステージ(Aステージ)、オペラ
ンドフェッチステージ(Fステージ)、実行ステージ
(Eステージ)の順に処理される。61はアドレス計算ス
テージで管理されているステージスタックポインタ(AS
P)、62はASP出力ラッチ、63はオペランドフェッチステ
ージで管理されているステージスタックポインタ(FS
P)、64はFSP出力ラッチ、65は実行ステージで管理され
ているステージスタックポインタ(CSP)、66、67、68
はソフトウェアから見たレベルのスタックポインタ(SP
I,SP0,SP1)である。
第34図はスタックプッシュを含む命令、例えばレジスタ
の値をスタックトップ(スタックポインタの値をデクリ
メントした値が指すところ)に書き込むMOV命令(MOV:R
n->@‐SP Rnはn番のレジスタを表し、@‐SPはスタ
ックポインタをデクリメントした値が指すアドレスを示
す)を実行した場合の各ステージのスタックポインタの
動作を示すフローチャートである。命令実行前のASP61
の値をinitSPとし、この命令の直前の命令終了時のスタ
ックポインタ値と整合がとれていることとする。
の値をスタックトップ(スタックポインタの値をデクリ
メントした値が指すところ)に書き込むMOV命令(MOV:R
n->@‐SP Rnはn番のレジスタを表し、@‐SPはスタ
ックポインタをデクリメントした値が指すアドレスを示
す)を実行した場合の各ステージのスタックポインタの
動作を示すフローチャートである。命令実行前のASP61
の値をinitSPとし、この命令の直前の命令終了時のスタ
ックポインタ値と整合がとれていることとする。
まずこの命令はソースがレジスタであるので、Aステー
ジではレジスタ指定信号を次のステージFステージに送
る。ASP61の値はデクリメントし(initSP-4)とし、命
令の流れと同期してデクリメントされたASP61の値(ini
tSP-4)はFSP63へ転送される。
ジではレジスタ指定信号を次のステージFステージに送
る。ASP61の値はデクリメントし(initSP-4)とし、命
令の流れと同期してデクリメントされたASP61の値(ini
tSP-4)はFSP63へ転送される。
Fステージではレジスタ指定信号を受けてレジスタアク
セス信号を次のEステージに送る。命令がEステージに
達するとき、同時にFSP63の値(initSP-4)もEステー
ジのCSP65に送られる。
セス信号を次のEステージに送る。命令がEステージに
達するとき、同時にFSP63の値(initSP-4)もEステー
ジのCSP65に送られる。
EステージではCSP65の値(initSP-4)をデスティネー
ションアドレスとして命令を実行する。つまり、指定さ
れたレジスタの値をデータレジスタに書き込み、CSP61
の値をアドレスレジスタに書き込み、アドレスレジスタ
の示すアドレスにデータレジスタの値をストアする。
ションアドレスとして命令を実行する。つまり、指定さ
れたレジスタの値をデータレジスタに書き込み、CSP61
の値をアドレスレジスタに書き込み、アドレスレジスタ
の示すアドレスにデータレジスタの値をストアする。
また、SPI 66、SP0 67、SP1 68に関して、命令実行中は
これらのスタックポインタには前の値を保っておき、各
命令の処理の最後にCSP65の値をソフトウェアからみた
レベルのスタックポインタ(SPI、SP0、SP1)の1つに
設定する。
これらのスタックポインタには前の値を保っておき、各
命令の処理の最後にCSP65の値をソフトウェアからみた
レベルのスタックポインタ(SPI、SP0、SP1)の1つに
設定する。
第35図はスタックポインタを汎用レジスタと見てデータ
をロードする命令の場合である(MOV:“100"->SP“10
0"は即値、SPはスタックポインタ)。
をロードする命令の場合である(MOV:“100"->SP“10
0"は即値、SPはスタックポインタ)。
Aステージでは即値“100"が次のFステージへ送られ
る。ASP61は変化しないでFSP63に転送される。
る。ASP61は変化しないでFSP63に転送される。
この命令ではAステージのスタックポインタ(ASP61)
の値は、命令が終了しスタックポインタに値が書き込ま
れるまでは前の値を保ったままなので、後の命令がスタ
ックポインタを参照する命令の場合(スタックポインタ
に関するコンフリクトを生じている場合)に、ASP61を
参照してアドレス計算を行ってしまうと誤った値が生成
されることになる。そのため、命令が終了してスタック
ポインタの値が書き換わってしまうまではスタックポイ
ンタの書き込み予約を行っておき、後の命令がスタック
ポインタを参照する場合は、この書き込み予約が解除さ
れるまではAステージでアドレス計算を行わずに待って
いる。そして書き込み予約が解除されてからAステージ
でのアドレス計算を始める。
の値は、命令が終了しスタックポインタに値が書き込ま
れるまでは前の値を保ったままなので、後の命令がスタ
ックポインタを参照する命令の場合(スタックポインタ
に関するコンフリクトを生じている場合)に、ASP61を
参照してアドレス計算を行ってしまうと誤った値が生成
されることになる。そのため、命令が終了してスタック
ポインタの値が書き換わってしまうまではスタックポイ
ンタの書き込み予約を行っておき、後の命令がスタック
ポインタを参照する場合は、この書き込み予約が解除さ
れるまではAステージでアドレス計算を行わずに待って
いる。そして書き込み予約が解除されてからAステージ
でのアドレス計算を始める。
Fステージでは即値“100"を受け取ってそのまま“100"
を次のEステージに送る。
を次のEステージに送る。
FSP63はCSP65に転送される。
Eステージでは、データ“100"はDOバス85を通してASP6
1,CSP65に同時に書き込まれる。
1,CSP65に同時に書き込まれる。
この命令の後の命令がスタックポインタを参照する場合
は、Aステージでのリソースであるスタックポインタ
(ASP61)がまだ書き換わっておらず、スタックポイン
タを参照するわけにはいかないので、アドレス計算を行
わずAステージで待っている。そして書き込み予約が解
除になって、アドレス計算を開始した時点で正しい値が
ASP61には入っているため、この命令がEステージに到
達したときは正しいスタックポインタの値を伴ってお
り、その値がSPI 66、SP0 67、SP1 68のいずれかに書き
込まれる。
は、Aステージでのリソースであるスタックポインタ
(ASP61)がまだ書き換わっておらず、スタックポイン
タを参照するわけにはいかないので、アドレス計算を行
わずAステージで待っている。そして書き込み予約が解
除になって、アドレス計算を開始した時点で正しい値が
ASP61には入っているため、この命令がEステージに到
達したときは正しいスタックポインタの値を伴ってお
り、その値がSPI 66、SP0 67、SP1 68のいずれかに書き
込まれる。
しかし後の命令がスタックポインタを使用しない場合
は、スタックポインタの書き込み予約が行われていて
も、Aステージでアドレス計算を行わずに待っている必
要はない。そのため先の命令がEステージで処理されAS
P61が書き換わった時点では、すでにアドレス計算ステ
ージまたはオペランドフェッチステージでの処理を終了
している場合がある。そうするとこの命令は正しくない
スタックポインタの値を伴って実行ステージに到達する
ことになり、誤った値がCSP65に転送され、命令終了時
に誤った値がSPI 66、SP0 67、SP1 68のいずれかに書き
込まれてしまう。
は、スタックポインタの書き込み予約が行われていて
も、Aステージでアドレス計算を行わずに待っている必
要はない。そのため先の命令がEステージで処理されAS
P61が書き換わった時点では、すでにアドレス計算ステ
ージまたはオペランドフェッチステージでの処理を終了
している場合がある。そうするとこの命令は正しくない
スタックポインタの値を伴って実行ステージに到達する
ことになり、誤った値がCSP65に転送され、命令終了時
に誤った値がSPI 66、SP0 67、SP1 68のいずれかに書き
込まれてしまう。
そこでこれを回避するためには、Eステージでスタック
ポインタの値が書き換えられる場合、各命令が処理され
ているステージのステージスタックポインタが必ずその
命令に付随する値を示すように、すべてのステージスタ
ックポインタと各スタックポインタ出力ラッチに同時に
値をいれるか、あるいは、スタックポインタの書き込み
予約が行なわれている場合には次の命令が必ずアドレス
計算ステージで止まるようにしておき、ASP61の値が書
き換わってから次の命令はAステージ33での処理を開始
する必要がある。
ポインタの値が書き換えられる場合、各命令が処理され
ているステージのステージスタックポインタが必ずその
命令に付随する値を示すように、すべてのステージスタ
ックポインタと各スタックポインタ出力ラッチに同時に
値をいれるか、あるいは、スタックポインタの書き込み
予約が行なわれている場合には次の命令が必ずアドレス
計算ステージで止まるようにしておき、ASP61の値が書
き換わってから次の命令はAステージ33での処理を開始
する必要がある。
以上のように従来のパイプライン処理中でのスタックポ
インタの処理では、実行ステージにおいてスタックポイ
ンタの値を更新した場合に、その次の命令実行時に実行
ステージのステージスタックポインタの値をその命令に
付随した正しい値とするために、すべてのステージスタ
ックポインタとステージスタックポインタ出力ラッチに
値を書き込むか、次の命令を必ずアドレス計算ステージ
で止めておかなければならないという問題点があった。
インタの処理では、実行ステージにおいてスタックポイ
ンタの値を更新した場合に、その次の命令実行時に実行
ステージのステージスタックポインタの値をその命令に
付随した正しい値とするために、すべてのステージスタ
ックポインタとステージスタックポインタ出力ラッチに
値を書き込むか、次の命令を必ずアドレス計算ステージ
で止めておかなければならないという問題点があった。
この発明は上記の問題点を解決するためになされたもの
で、少ないハードウェアで、かつ実行ステージでスタッ
クポインタの値を書き換える命令の次の命令が、スタッ
クポインタに関するコンフリクトを起こさないときも、
アドレス計算ステージでその命令を止めることなく正し
くスタックポインタの管理をするデータ処理装置を得る
ことを目的とする。
で、少ないハードウェアで、かつ実行ステージでスタッ
クポインタの値を書き換える命令の次の命令が、スタッ
クポインタに関するコンフリクトを起こさないときも、
アドレス計算ステージでその命令を止めることなく正し
くスタックポインタの管理をするデータ処理装置を得る
ことを目的とする。
この発明にかかるデータ処理装置は、パイプライン中の
アドレス計算ステージに作業用のステージスタックポイ
ンタを備え、アドレス計算ステージで管理されているス
タックポインタをアドレス計算ステージで更新したとき
のみ更新された値を実行ステージが管理しているスタッ
クポインタに転送するようにした。
アドレス計算ステージに作業用のステージスタックポイ
ンタを備え、アドレス計算ステージで管理されているス
タックポインタをアドレス計算ステージで更新したとき
のみ更新された値を実行ステージが管理しているスタッ
クポインタに転送するようにした。
この発明におけるデータ処理装置は、アドレス計算ステ
ージでのアドレス演算時に、このステージのステージス
タックポインタ(ASP)を更新した場合のみ、パイプラ
イン中の命令の流れと同期してスタックポインタの値を
実行ステージが管理しているスタックポインタに転送す
る。
ージでのアドレス演算時に、このステージのステージス
タックポインタ(ASP)を更新した場合のみ、パイプラ
イン中の命令の流れと同期してスタックポインタの値を
実行ステージが管理しているスタックポインタに転送す
る。
以下、本発明をその実施例を示す図面に基づいて詳述す
る。
る。
(1)「本発明のデータ処理装置の命令フォーマット」 本発明のデータ処理装置の命令は16ビット単位で可変長
となっており、奇数バイト長の命令は使用しない。
となっており、奇数バイト長の命令は使用しない。
本発明のデータ処理装置では高頻度命令を短いフォーマ
ットとする目的で特に工夫された命令フォーマット体系
を有する。例えば、2オペランド命令に関しては基本的
に“4バイト+拡張部”の構成を有して総てのアドレッ
シングモードが利用可能な一般形フォーマットと、使用
頻度の高い命令及びアドレッシングモードのみが使用可
能な短縮形フォーマットの2つのフォーマットとがあ
る。
ットとする目的で特に工夫された命令フォーマット体系
を有する。例えば、2オペランド命令に関しては基本的
に“4バイト+拡張部”の構成を有して総てのアドレッ
シングモードが利用可能な一般形フォーマットと、使用
頻度の高い命令及びアドレッシングモードのみが使用可
能な短縮形フォーマットの2つのフォーマットとがあ
る。
本発明のデータ処理装置の命令フォーマット中に現われ
る記号の意味は次の通りである。
る記号の意味は次の通りである。
−:オペレーションコードが入る部分 #:リテラルまたは即値が入る部分 Ea: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ハ
ーフワードにEa1を含み、第2ハーフワードにEa2を含
み、第3ハーフワードまである6バイト命令の場合を考
える。Ea1に多段間接モードを使用したため、普通の拡
張部の他に多段間接モードの拡張部も付くものとする
と、実際の命令ビットパターンは、命令の第1ハーフワ
ード(Ea1の基本部を含む),Ea1の拡張部,Ea1の多段間
接モード拡張部,命令の第2ハーフワード(Ea2の基本
部を含む),Ea1の拡張部,命令の第3ハーフワードの順
となる。
に更に拡張部が付く場合にも、次の命令オペレーション
コードよりもそちらの方が優先される。例えば、第1ハ
ーフワードにEa1を含み、第2ハーフワードにEa2を含
み、第3ハーフワードまである6バイト命令の場合を考
える。Ea1に多段間接モードを使用したため、普通の拡
張部の他に多段間接モードの拡張部も付くものとする
と、実際の命令ビットパターンは、命令の第1ハーフワ
ード(Ea1の基本部を含む),Ea1の拡張部,Ea1の多段間
接モード拡張部,命令の第2ハーフワード(Ea2の基本
部を含む),Ea1の拡張部,命令の第3ハーフワードの順
となる。
(1.1)「短縮形2オペランド命令」 第4図から第7図は2オペランド命令の短縮形フォーマ
ットを示す模式図である。
ットを示す模式図である。
第4図はメモリ−レジスタ間演算命令のフォーマットを
示す模式図である。このフォーマットには、ソースオペ
ランド側がメモリとなるL-formatと、デスティネーショ
ンオペランド側がメモリとなるS-formatとがある。
示す模式図である。このフォーマットには、ソースオペ
ランド側がメモリとなるL-formatと、デスティネーショ
ンオペランド側がメモリとなるS-formatとがある。
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)を示す模式図である。MMはディスティネー
ションオペランドサイズの指定フィールド、###はリ
テラルによるソースオペランドの指定フィールド、Shは
デスティネーションオペランドの指定フィールドであ
る。
(Q-format)を示す模式図である。MMはディスティネー
ションオペランドサイズの指定フィールド、###はリ
テラルによるソースオペランドの指定フィールド、Shは
デスティネーションオペランドの指定フィールドであ
る。
第7図は即値−メモリ間演算命令のフォーマット(I-fo
rmat)を示す模式図である。MMはオペランドサイズの指
定フィールド(ソース,ディスティネーションで共
通)、Shはデスティネーションオペランドの指定フィー
ルドである。I-formatの即値のサイズはデスティネーシ
ョン側のオペランドのサイズと共通に8,16,32ビットと
なり、ゼロ拡張及び符号拡張は行なわれない。
rmat)を示す模式図である。MMはオペランドサイズの指
定フィールド(ソース,ディスティネーションで共
通)、Shはデスティネーションオペランドの指定フィー
ルドである。I-formatの即値のサイズはデスティネーシ
ョン側のオペランドのサイズと共通に8,16,32ビットと
なり、ゼロ拡張及び符号拡張は行なわれない。
(1.2)「一般形1オペランド命令」 第8図は1オペランド命令の一般形フォーマット(G1-f
ormat)を示す模式図である。MMはオペランドサイズの
指定フィールドである。一部のG1-format命令では、Ea
の拡張部以外にも拡張部がある。また、MMを使用しない
命令もある。
ormat)を示す模式図である。MMはオペランドサイズの
指定フィールドである。一部のG1-format命令では、Ea
の拡張部以外にも拡張部がある。また、MMを使用しない
命令もある。
(1.3)「一般形2オペランド命令」 第9図から第11図は2オペランド命令の一般形フォーマ
ットを示す模式図である。このフォーマットに含まれる
のは、8ビットで指定する一般形アドレッシングモード
のオペランドが最大2つ存在する命令である。オペラン
ドの総数自体は3つ以上になる場合がある。
ットを示す模式図である。このフォーマットに含まれる
のは、8ビットで指定する一般形アドレッシングモード
のオペランドが最大2つ存在する命令である。オペラン
ドの総数自体は3つ以上になる場合がある。
第9図は第1オペランドがメモリ読み出しを必要とする
命令のフォーマット(G-format)を示す模式図である。
EaMはデスティネーションオペランドの指定フィール
ド、MMはデスティネーションオペランドサイズの指定フ
ィールド、EaRはソースオペランド指定フィールド、RR
はソースオペランドサイズの指定フィールドである。一
部のG-format命令では、EaMあるいはEaRの拡張部以外に
も拡張部がある。
命令のフォーマット(G-format)を示す模式図である。
EaMはデスティネーションオペランドの指定フィール
ド、MMはデスティネーションオペランドサイズの指定フ
ィールド、EaRはソースオペランド指定フィールド、RR
はソースオペランドサイズの指定フィールドである。一
部のG-format命令では、EaMあるいはEaRの拡張部以外に
も拡張部がある。
第10図は第1オペランドが8ビット即値の命令のフォー
マット(E-format)を示す模式図である。EaMはデステ
ィネーションオペランドの指定フィールド、MMはデステ
ィネーションオペランドサイズの指定フィールド、##
…はソースオペランド値である。
マット(E-format)を示す模式図である。EaMはデステ
ィネーションオペランドの指定フィールド、MMはデステ
ィネーションオペランドサイズの指定フィールド、##
…はソースオペランド値である。
E-formatとI-formatとは機能的には類似しているが、考
え方の点では大きく違っている。具体的には、E-format
はあくまでも2オペランド一般形(G-format)の派生形
であり、ソースオペランドのサイズが8ビット固定、デ
ィスティネーションオペランドのサイズが8/16/32ビッ
トからの選択となっている。つまり、E-formatは異種サ
イズ間の演算を前提とし、デスティネーションオペラン
ドのサイズに合わせて8ビットのソースオペランドがゼ
ロ拡張または符号拡張される。一方、I-formは、特に転
送命令及び比較命令で頻度の多い即値のパターンを短縮
形にしたものであり、ソースオペランドとディスティネ
ーションオペランドのサイズが等しい。
え方の点では大きく違っている。具体的には、E-format
はあくまでも2オペランド一般形(G-format)の派生形
であり、ソースオペランドのサイズが8ビット固定、デ
ィスティネーションオペランドのサイズが8/16/32ビッ
トからの選択となっている。つまり、E-formatは異種サ
イズ間の演算を前提とし、デスティネーションオペラン
ドのサイズに合わせて8ビットのソースオペランドがゼ
ロ拡張または符号拡張される。一方、I-formは、特に転
送命令及び比較命令で頻度の多い即値のパターンを短縮
形にしたものであり、ソースオペランドとディスティネ
ーションオペランドのサイズが等しい。
第11図は、第1オペランドがアドレス計算のみの命令の
フォーマット(GA-format)を示す模式図である。EaWは
デスティネーションオペランドの指定フィールド、WWは
デスティネーションオペランドサイズの指定フィール
ド、EaAはソースオペランドの指定フィールドである。
ソースオペランドとしては実行アドレスの計算結果自体
が使用される。
フォーマット(GA-format)を示す模式図である。EaWは
デスティネーションオペランドの指定フィールド、WWは
デスティネーションオペランドサイズの指定フィール
ド、EaAはソースオペランドの指定フィールドである。
ソースオペランドとしては実行アドレスの計算結果自体
が使用される。
第12図は、ショートブランチ命令のフォーマットを示す
模式図である。ccccはブランチ条件指定フィールド、di
sp:8はジャンプ先との変位指定フィールドであり、本発
明のデータ処理装置では8ビットで変位を指定する場合
には、ビットパターンでの指定値を2倍して変位値とす
る。
模式図である。ccccはブランチ条件指定フィールド、di
sp:8はジャンプ先との変位指定フィールドであり、本発
明のデータ処理装置では8ビットで変位を指定する場合
には、ビットパターンでの指定値を2倍して変位値とす
る。
(1.4)「アドレッシングモード」 本発明のデータ処理装置のアドレッシングモード指定方
法には、レジスタを含めて6ビットで指定する短縮形
と、8ビットで指定する一般形とがある。
法には、レジスタを含めて6ビットで指定する短縮形
と、8ビットで指定する一般形とがある。
未定義のアドレッシングモードが指定された場合、ある
いは意味的に考えて明らかに不適当なアドレッシングモ
ードの組み合わせが指定された場合には、未定義命令が
実行された場合同様に予約命令例外が発生され、例外処
理が起動される。
いは意味的に考えて明らかに不適当なアドレッシングモ
ードの組み合わせが指定された場合には、未定義命令が
実行された場合同様に予約命令例外が発生され、例外処
理が起動される。
これに該当するのは、デスティネーションが即値モード
の場合、アドレス計算を伴うべきアドレッシングモード
指定フィールドで即値モードを使用した場合等である。
の場合、アドレス計算を伴うべきアドレッシングモード
指定フィールドで即値モードを使用した場合等である。
フォーマットの図中で使われる記号の意味は次の通りで
ある。
ある。
Rn :レジスタ指定 mem EA:EAで示されるアドレスのメモリ内容 (Sh) :6ビットの短縮形アドレッシングモードでの指
定方法 (Ea) :8ビットの一般形アドレッシングモードでの指
定方法 フォーマットの図において破線にて囲繞された部分は拡
張部を示す。
定方法 (Ea) :8ビットの一般形アドレッシングモードでの指
定方法 フォーマットの図において破線にて囲繞された部分は拡
張部を示す。
(1.4.1)「基本アドレッシングモード」 本発明のデータ処理装置は様々なアドレッシングモード
をサポートする。それらの内、本発明のデータ処理装置
でサポートする基本アドレッシングモードには、レジス
タ直接モード、レジスタ間接モード、レジスタ相対間接
モード、即値モード、絶対モード、PC(プログラムカウ
ンタ)相対間接モード、スタックポップモード及びスタ
ックプッシュモードがある。
をサポートする。それらの内、本発明のデータ処理装置
でサポートする基本アドレッシングモードには、レジス
タ直接モード、レジスタ間接モード、レジスタ相対間接
モード、即値モード、絶対モード、PC(プログラムカウ
ンタ)相対間接モード、スタックポップモード及びスタ
ックプッシュモードがある。
レジスタ直接モードはレジスタの内容をそのままオペラ
ンドとする。フォーマットの模式図を第13図に示す。Rn
は汎用レジスタの番号を示す。
ンドとする。フォーマットの模式図を第13図に示す。Rn
は汎用レジスタの番号を示す。
レジスタ間接モードはレジスタの内容をアドレスとする
メモリの内容をオペランドとする。フォーマットの模式
図を第14図に示す。Rnは汎用レジスタの番号を示す。
メモリの内容をオペランドとする。フォーマットの模式
図を第14図に示す。Rnは汎用レジスタの番号を示す。
レジスタ相対間接モードはディスプレースメント値が16
ビットであるか32ビットであるかにより2種類がある。
それぞれ、レジスタの内容に16ビットまたは32ビットの
ディスプレースメント値を加えた値をアドレスとするメ
モリの内容をオペランドとする。フォーマットの模式図
を第15図に示す。Rnは汎用レジスタの番号を示す。dis
p:16とdisp:32とはそれぞれ各々16ビットのディスプレ
ースメント値または32ビットのディスプレースメント値
を示す。ディスプレースメント値は符号付きとして扱
う。
ビットであるか32ビットであるかにより2種類がある。
それぞれ、レジスタの内容に16ビットまたは32ビットの
ディスプレースメント値を加えた値をアドレスとするメ
モリの内容をオペランドとする。フォーマットの模式図
を第15図に示す。Rnは汎用レジスタの番号を示す。dis
p:16とdisp:32とはそれぞれ各々16ビットのディスプレ
ースメント値または32ビットのディスプレースメント値
を示す。ディスプレースメント値は符号付きとして扱
う。
即値モードは命令コード中で指定されるビットパターン
をそのまま2進数と見なしてオペランドとする。フォー
マットの模式図を第16図に示す。imm-dataは即値を示
す。imm-dataのサイズは、オペランドサイズとして命令
中で指定される。
をそのまま2進数と見なしてオペランドとする。フォー
マットの模式図を第16図に示す。imm-dataは即値を示
す。imm-dataのサイズは、オペランドサイズとして命令
中で指定される。
絶対モードはアドレス値が16ビットで示されるか32ビッ
トで示されるかにより2種類ある。それぞれ、命令コー
ド中で指定される16ビットまたは32ビットのビットパタ
ーンをアドレスとするメモリの内容をオペランドとす
る。フォーマットの模式図を第17図に示す。abs:16とab
s:32とはそれぞれ16ビットまたは32ビットのアドレス値
を示す。abs:16でアドレスが示される時は指定されたア
ドレス値を32ビットに符号拡張する。
トで示されるかにより2種類ある。それぞれ、命令コー
ド中で指定される16ビットまたは32ビットのビットパタ
ーンをアドレスとするメモリの内容をオペランドとす
る。フォーマットの模式図を第17図に示す。abs:16とab
s:32とはそれぞれ16ビットまたは32ビットのアドレス値
を示す。abs:16でアドレスが示される時は指定されたア
ドレス値を32ビットに符号拡張する。
PC相対間接モードはディスプレースメント値が16ビット
か32ビットかにより2種類ある。それぞれ、プログラム
カウンタの内容に16ビットまたは32ビットのディスプレ
ースメント値を加えた値をアドレスとするメモリの内容
をオペランドとする。フォーマットの模式図を第18図に
示す。disp:16とdisp:32とはそれぞれ16ビットのディス
プレースメント値または32ビットのディスプレースメン
ト値を示す。ディスプレースメント値は符号付きとして
扱う。PC相対間接モードにおいて、参照されるプログラ
ムカウンタの値はそのオペランドを含む命令の先頭アド
レスである。多段間接アドレッシングモードにおいてプ
ログラムカウンタの値が参照される場合にも、同じよう
に命令の先頭のアドレスをPC相対の基準値として使用す
る。
か32ビットかにより2種類ある。それぞれ、プログラム
カウンタの内容に16ビットまたは32ビットのディスプレ
ースメント値を加えた値をアドレスとするメモリの内容
をオペランドとする。フォーマットの模式図を第18図に
示す。disp:16とdisp:32とはそれぞれ16ビットのディス
プレースメント値または32ビットのディスプレースメン
ト値を示す。ディスプレースメント値は符号付きとして
扱う。PC相対間接モードにおいて、参照されるプログラ
ムカウンタの値はそのオペランドを含む命令の先頭アド
レスである。多段間接アドレッシングモードにおいてプ
ログラムカウンタの値が参照される場合にも、同じよう
に命令の先頭のアドレスをPC相対の基準値として使用す
る。
スタックポップモードはスタックポインタ(SP)の内容
をアドレスとするメモリの内容をオペランドとする。オ
ペランドアクセス後、スタックポインタをオペランドサ
イズだけインクリメントする。例えば、32ビットデータ
を扱う場合には、オペランドアクセス後にSPが+4だけ
更新(インクリメント)される。B,H(バイト、ハーフ
ワード)のサイズのオペランドに対するスタックポップ
モードの指定も可能であり、それぞれSPが+1,+2だけ
更新(インクリメント)される。フォーマットの模式図
を第19図に示す。オペランドに対しスタックポップモー
ドが意味を持たないものに関しては予約命令例外が発生
される。具体的に予約命令例外となるのは、writeオペ
ランド、read-modify-writeオペランドに対するスタッ
クポップモード指定である。
をアドレスとするメモリの内容をオペランドとする。オ
ペランドアクセス後、スタックポインタをオペランドサ
イズだけインクリメントする。例えば、32ビットデータ
を扱う場合には、オペランドアクセス後にSPが+4だけ
更新(インクリメント)される。B,H(バイト、ハーフ
ワード)のサイズのオペランドに対するスタックポップ
モードの指定も可能であり、それぞれSPが+1,+2だけ
更新(インクリメント)される。フォーマットの模式図
を第19図に示す。オペランドに対しスタックポップモー
ドが意味を持たないものに関しては予約命令例外が発生
される。具体的に予約命令例外となるのは、writeオペ
ランド、read-modify-writeオペランドに対するスタッ
クポップモード指定である。
スタックプッシュモードはスタックポインタの内容をオ
ペランドサイズだけデクリメントした内容をアドレスと
するメモリの内容をオペランドとする。スタックプッシ
ュモードでは、オペランドアクセス前にスタックポイン
タがデクリメントされる。例えば、32ビットデータを扱
う場合には、オペランドアクセス前にSPが−4だけ更新
(デクリメント)される。B,Hのサイズのオペランドに
対するスタックプッシュモードの指定も可能であり、そ
れぞれSPが−1,−2だけ更新(デクリメント)される。
フォーマットの模式図を第20図に示す。オペランドに対
してスタックプッシュモードが意味を持たないものに関
しては、予約命令例外が発生される。具体的に予約命令
例外となるのは、readオペランド、read-modify-write
オペランドに対すスタックプッシュモード指定である。
ペランドサイズだけデクリメントした内容をアドレスと
するメモリの内容をオペランドとする。スタックプッシ
ュモードでは、オペランドアクセス前にスタックポイン
タがデクリメントされる。例えば、32ビットデータを扱
う場合には、オペランドアクセス前にSPが−4だけ更新
(デクリメント)される。B,Hのサイズのオペランドに
対するスタックプッシュモードの指定も可能であり、そ
れぞれSPが−1,−2だけ更新(デクリメント)される。
フォーマットの模式図を第20図に示す。オペランドに対
してスタックプッシュモードが意味を持たないものに関
しては、予約命令例外が発生される。具体的に予約命令
例外となるのは、readオペランド、read-modify-write
オペランドに対すスタックプッシュモード指定である。
(1.4.2)「多段間接アドレッシングモード」 如何に複雑なアドレッシングも、基本的には加算と間接
参照の組み合わせに分解される。従って、加算と間接参
照のオペレーションをアドレッシングのプリミティブと
して与えておき、それを任意に組み合わせることができ
れば、如何なる複雑なアドレッシングモードをも実現可
能となる。本発明のデータ処理装置の多段間接アドレッ
シングモードはこの様な考え方に基づいたアドレッシン
グモードである。複雑なアドレッシングモードはモジュ
ール間のデータ参照あるいはAI(人工知能)言語の処理
系に特に有用である。
参照の組み合わせに分解される。従って、加算と間接参
照のオペレーションをアドレッシングのプリミティブと
して与えておき、それを任意に組み合わせることができ
れば、如何なる複雑なアドレッシングモードをも実現可
能となる。本発明のデータ処理装置の多段間接アドレッ
シングモードはこの様な考え方に基づいたアドレッシン
グモードである。複雑なアドレッシングモードはモジュ
ール間のデータ参照あるいはAI(人工知能)言語の処理
系に特に有用である。
多段間接アドレッシングモードを指定する場合、基本ア
ドレッシングモード指定フィールドでは、レジスタベー
ス多段間接モード、PCベース多段間接モード、絶対ベー
ス多段間接モードの3種類の指定方法の内のいずれか1
つを指定する。
ドレッシングモード指定フィールドでは、レジスタベー
ス多段間接モード、PCベース多段間接モード、絶対ベー
ス多段間接モードの3種類の指定方法の内のいずれか1
つを指定する。
レジスタベース多段間接モードはレジスタの値を拡張す
る多段間接アドレッシングのベース値とするアドレッシ
ングモードである。フォーマットの模式図を第21図に示
す。Rnは汎用レジスタの番号を示す。
る多段間接アドレッシングのベース値とするアドレッシ
ングモードである。フォーマットの模式図を第21図に示
す。Rnは汎用レジスタの番号を示す。
PCベース多段間接モードはプログラムカウンタの値を拡
張する多段間接アドレッシングのベース値とするアドレ
ッシングモードである。フォーマットの模式図を第22図
に示す。
張する多段間接アドレッシングのベース値とするアドレ
ッシングモードである。フォーマットの模式図を第22図
に示す。
絶対ベース多段間接モードはゼロを拡張する多段間接ア
ドレッシングのベース値とするアドレッシングモードで
ある。フォーマットの模式図を第23図に示す。
ドレッシングのベース値とするアドレッシングモードで
ある。フォーマットの模式図を第23図に示す。
拡張する多段間接モード指定フィールドは16ビットを単
位としており、これを任意回反復する。1段の多段間接
モードにより、ディスプレースメントの加算、インデク
スレジスタのスケーリング(×1,×2,×4,×8)と加
算、メモリの間接参照を行なう。多段間接モードのフォ
ーマットの模式図を第24図に示す。各フィールドは以下
に示す意味を持つ。
位としており、これを任意回反復する。1段の多段間接
モードにより、ディスプレースメントの加算、インデク
スレジスタのスケーリング(×1,×2,×4,×8)と加
算、メモリの間接参照を行なう。多段間接モードのフォ
ーマットの模式図を第24図に示す。各フィールドは以下
に示す意味を持つ。
E=0:多段間接モード継続 E=1:アドレス計算終了 tmp==> address of operand I=0:メモリ間接参照なし tmp+disp+Rx*Scale==>tmp I=1:メモリ間接参照あり mem tmp+disp+Rx*Scale==>tmp M=0:<Rx>をインデクスとして使用 M=1:特殊なインデックス <Rx>=0 インデクス値を加算しない(Rx=0) <Rx>=1 プログラムカウンタをインデクス値とし
て使用(Rx=PC) <Rx>=2〜 reserved D=0:多段間接モード中の4ビットのフィールドd4の値
を4倍してディスプレースメント値とし、これを加算す
るd4は符号付きとして扱い、オペランドのサイズとは関
係なく必ず4倍して使用する D=1:多段間接モードの拡張部で指定されたdispx(16/
32ビット)をディスプレースメント値とし、これを加算
する拡張部のサイズはd4フィールドで指定する d4=0001 dispxは16ビット d4=0010 dispxは32ビット xx:インデクスのスケール(scale=1/2/4/8) プログラムカウンタに対して×2,×4,×8のスケーリン
グを行なった場合には、その段の処理終了後の中間値
(tmp)として不定値が入る。この多段間接モードによ
って得られる実効アドレスは予測できない値となるが、
例外は発生しない。プログラムカウンタに対するスケー
リングの指定は行なってはいけない。
て使用(Rx=PC) <Rx>=2〜 reserved D=0:多段間接モード中の4ビットのフィールドd4の値
を4倍してディスプレースメント値とし、これを加算す
るd4は符号付きとして扱い、オペランドのサイズとは関
係なく必ず4倍して使用する D=1:多段間接モードの拡張部で指定されたdispx(16/
32ビット)をディスプレースメント値とし、これを加算
する拡張部のサイズはd4フィールドで指定する d4=0001 dispxは16ビット d4=0010 dispxは32ビット xx:インデクスのスケール(scale=1/2/4/8) プログラムカウンタに対して×2,×4,×8のスケーリン
グを行なった場合には、その段の処理終了後の中間値
(tmp)として不定値が入る。この多段間接モードによ
って得られる実効アドレスは予測できない値となるが、
例外は発生しない。プログラムカウンタに対するスケー
リングの指定は行なってはいけない。
多段間接モードによる命令フォーマットのバリエーショ
ンを第25図、第26図に示す。
ンを第25図、第26図に示す。
第25図は、多段間接モードが継続するか終了するかのバ
リエーションを示す。
リエーションを示す。
第26図は、ディスプレースメントのサイズのバリエーシ
ョンを示す。
ョンを示す。
任意段数の多段間接モードが利用できれば、コンパイラ
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段の間
接参照の頻度が非常に少ないとしても、コンパイラとし
ては必ず正しいコードを発生できなければならないから
である。このため、フォーマット上では任意の段数が可
能になっている。
の中で段数による場合分けが不要になるので、コンパイ
ラの負担が軽減されるというメリットがある。多段の間
接参照の頻度が非常に少ないとしても、コンパイラとし
ては必ず正しいコードを発生できなければならないから
である。このため、フォーマット上では任意の段数が可
能になっている。
(1.5)「例外処理」 本発明のデータ処理装置はソフトウエア負荷の軽減のた
め豊富な例外処理機能を有する。本発明のデータ処理装
置では、例外処理は命令処理を再実行するもの(例
外)、命令処理を完了するもの(トラップ)及び割込の
3種類に分けて名称をつけている。また本発明のデータ
処理装置では、この3種の例外処理とシステム障害とを
総称してEITと称する。
め豊富な例外処理機能を有する。本発明のデータ処理装
置では、例外処理は命令処理を再実行するもの(例
外)、命令処理を完了するもの(トラップ)及び割込の
3種類に分けて名称をつけている。また本発明のデータ
処理装置では、この3種の例外処理とシステム障害とを
総称してEITと称する。
(2)「機能ブロックの構成」 第1図は本発明のデータ処理装置の構成を示すブロック
図である。
図である。
本発明のデータ処理装置の内部を機能的に大きく分ける
と、命令フェッチ部101,命令デコード部102,PC計算部10
3,オペランドアドレス計算部104,マイクロROM部105,デ
ータ演算部106,外部バスインターフェイス部107に分か
れる。
と、命令フェッチ部101,命令デコード部102,PC計算部10
3,オペランドアドレス計算部104,マイクロROM部105,デ
ータ演算部106,外部バスインターフェイス部107に分か
れる。
第1図では、その他にCPU外部にアドレスを出力するた
めのアドレス出力回路108と、CPU外部とデータを入出力
するためのデータ入出力回路109とを他の機能ブロック
部と分けて示した。
めのアドレス出力回路108と、CPU外部とデータを入出力
するためのデータ入出力回路109とを他の機能ブロック
部と分けて示した。
(2.1)「命令フェッチ部」 命令フェッチ部101にはブランチバッファ、命令キュー
とその制御部等があり、次にフェッチすべき命令のアド
レスを決定してブランチバッファあるいはCPU外部のメ
モリから命令をフェッチする。またブランチバッファへ
の命令登録をも行う。
とその制御部等があり、次にフェッチすべき命令のアド
レスを決定してブランチバッファあるいはCPU外部のメ
モリから命令をフェッチする。またブランチバッファへ
の命令登録をも行う。
ブランチバッファは小規模であるためセレクティブキャ
ッシュとして動作する。ブランチバッファの動作の詳細
は特願昭61-202041号で詳しく述べられている。
ッシュとして動作する。ブランチバッファの動作の詳細
は特願昭61-202041号で詳しく述べられている。
次にフェッチすべき命令のアドレスは、命令キューに入
力すべき命令のアドレスとして専用のカウンタにて計算
される。分岐あるいはジャンプが発生した場合には、新
たな命令のアドレスがPC計算部103あるいはデータ演算
部106から転送されてくる。
力すべき命令のアドレスとして専用のカウンタにて計算
される。分岐あるいはジャンプが発生した場合には、新
たな命令のアドレスがPC計算部103あるいはデータ演算
部106から転送されてくる。
CPU外部のメモリから命令をフェッチする場合は、外部
バスインターフェイス部107を通して、フェッチすべき
命令のアドレスをアドレス出力回路108からCPU外部へ出
力し、データ入出力回路109から命令コードをフェッチ
する。そして、バッファリングした命令コードの内、次
にデコードすべき命令コードを命令デコード部102に出
力する。
バスインターフェイス部107を通して、フェッチすべき
命令のアドレスをアドレス出力回路108からCPU外部へ出
力し、データ入出力回路109から命令コードをフェッチ
する。そして、バッファリングした命令コードの内、次
にデコードすべき命令コードを命令デコード部102に出
力する。
(2.2)「命令デコード部」 命令デコード部102では、基本的には16ビット(ハーフ
ワード)単位で命令コードをデコードする。このブロッ
クには第1ハーフワードに含まれるオペレーションコー
ドをデコードするFHWデコーダ、第2,第3ハーフワード
に含まれるオペレーションコードをデコードするNFHWデ
コーダ、アドレッシングモードをデコードするアドレッ
シングモードデコーダが含まれる。これらFHWデコー
ダ、NFHWデコーダ、アドレシッシングモードデコーダを
纏めて第1デコーダという。
ワード)単位で命令コードをデコードする。このブロッ
クには第1ハーフワードに含まれるオペレーションコー
ドをデコードするFHWデコーダ、第2,第3ハーフワード
に含まれるオペレーションコードをデコードするNFHWデ
コーダ、アドレッシングモードをデコードするアドレッ
シングモードデコーダが含まれる。これらFHWデコー
ダ、NFHWデコーダ、アドレシッシングモードデコーダを
纏めて第1デコーダという。
FHWデコーダあるいはNFHWデコーダの出力を更にデコー
ドして、マイクロROMのエントリアドレスを計算する第
2デコーダ、条件分岐命令の分岐予測を行う分岐予測機
構、オペランドアドレス計算の際のパイプラインコンフ
リクトをチェックするアドレス計算コンフリクトチェッ
ク機構も含まれる。
ドして、マイクロROMのエントリアドレスを計算する第
2デコーダ、条件分岐命令の分岐予測を行う分岐予測機
構、オペランドアドレス計算の際のパイプラインコンフ
リクトをチェックするアドレス計算コンフリクトチェッ
ク機構も含まれる。
命令デコード部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)「マイクロROM部」 マイクロROM部105には、主にデータ演算部106を制御す
るマイクロプログラムが格納されているマイクロROM、
マイクロシーケンサ、マイクロ命令デコーダ等が含まれ
る。マイクロ命令はマイクロROMから2クロック(1ス
テップ)に1度読出される。マイクロシースケンサはマ
イクロプログラムで示されるシーケンス処理の他に、例
外、割込及びトラップ(この3つを合わせてEITと称す
る)の処理をハードウエア的に受付ける。またマイクロ
ROM部105はストアバッファの管理も行う。マイクロROM
部105には命令コードに依存しない割込みあるいは演算
実行結果によるフラッグ情報と、第2デコーダの出力等
の命令デコード部の出力が入力される。マイクロデコー
ダの出力は主にデータ演算部106に対して出力される
が、ジャンプ命令の実行による他の先行処理中止情報等
の一部の情報は他のブロックへも出力される。
るマイクロプログラムが格納されているマイクロROM、
マイクロシーケンサ、マイクロ命令デコーダ等が含まれ
る。マイクロ命令はマイクロROMから2クロック(1ス
テップ)に1度読出される。マイクロシースケンサはマ
イクロプログラムで示されるシーケンス処理の他に、例
外、割込及びトラップ(この3つを合わせてEITと称す
る)の処理をハードウエア的に受付ける。またマイクロ
ROM部105はストアバッファの管理も行う。マイクロROM
部105には命令コードに依存しない割込みあるいは演算
実行結果によるフラッグ情報と、第2デコーダの出力等
の命令デコード部の出力が入力される。マイクロデコー
ダの出力は主にデータ演算部106に対して出力される
が、ジャンプ命令の実行による他の先行処理中止情報等
の一部の情報は他のブロックへも出力される。
(2.4)「オペランドアドレス計算部」 オペランドアドレス計算部104は命令デコード部102のア
ドレスデコーダ等から出力されたオペランドアドレス計
算に関係する情報によりハードワイヤード制御される。
このブロックではオペランドのアドレス計算に関するほ
とんどの処理が行われる。メモリ間接アドレシングのた
めのメモリアクセスのアドレス及びオペランドアドレス
がメモリにマップされたI/O領域に入るか否かのチェッ
クも行われる。
ドレスデコーダ等から出力されたオペランドアドレス計
算に関係する情報によりハードワイヤード制御される。
このブロックではオペランドのアドレス計算に関するほ
とんどの処理が行われる。メモリ間接アドレシングのた
めのメモリアクセスのアドレス及びオペランドアドレス
がメモリにマップされたI/O領域に入るか否かのチェッ
クも行われる。
アドレス計算結果は外部バスインターフェイス部107に
送られる。アドレス計算に必要な汎用レジスタ及びプロ
グラムカウンタの値はデータ演算部より入力される。
送られる。アドレス計算に必要な汎用レジスタ及びプロ
グラムカウンタの値はデータ演算部より入力される。
メモリ間接アドレッシングを行う際は外部バスインター
フェイス部107を通してアドレス出力回路108からCPU外
部へ参照すべきメモリアドレスを出力し、データ入出力
部109から入力された間接アドレス値を命令デコード部1
02を通してフェッチする。
フェイス部107を通してアドレス出力回路108からCPU外
部へ参照すべきメモリアドレスを出力し、データ入出力
部109から入力された間接アドレス値を命令デコード部1
02を通してフェッチする。
(2.5)「PC計算部」 PC計算部103は命令デコード部102から出力されるPC計算
に関係する情報によりハードワイヤードに制御され、命
令のPC値を計算する。本発明のデータ処理装置は可変長
命令セットを有しており、命令をデコードしなければそ
の命令の長さが判らない。このため、PC計算部103は命
令デコード部102から出力される命令長をデコード中の
命令のPC値に加算することにより次の命令のPC値を作り
出す。また、命令デコード部102が分岐命令をデコード
してデコード段階での分岐を指示した場合は、命令長の
代わりに分岐変位を分岐命令のPC値に加算することによ
り分岐先命令のPC値を計算する。分岐命令に対して命令
デコード段階で分岐を行うことを本発明のデータ処理装
置ではプリブランチと称する。
に関係する情報によりハードワイヤードに制御され、命
令のPC値を計算する。本発明のデータ処理装置は可変長
命令セットを有しており、命令をデコードしなければそ
の命令の長さが判らない。このため、PC計算部103は命
令デコード部102から出力される命令長をデコード中の
命令のPC値に加算することにより次の命令のPC値を作り
出す。また、命令デコード部102が分岐命令をデコード
してデコード段階での分岐を指示した場合は、命令長の
代わりに分岐変位を分岐命令のPC値に加算することによ
り分岐先命令のPC値を計算する。分岐命令に対して命令
デコード段階で分岐を行うことを本発明のデータ処理装
置ではプリブランチと称する。
このプリブランチの手法については特願昭61-204500号
及び特願昭61-200557号で詳しく述べられている。
及び特願昭61-200557号で詳しく述べられている。
PC計算部103の計算結果は各命令のPC値として命令のデ
コード結果と共に出力される他、プリブランチ時には、
次にデコードすべき命令のアドレスとして命令フェッチ
部101へ出力される。また、次に命令デコード部102でデ
コードされる命令の分岐予測のためのアドレスにも使用
される。
コード結果と共に出力される他、プリブランチ時には、
次にデコードすべき命令のアドレスとして命令フェッチ
部101へ出力される。また、次に命令デコード部102でデ
コードされる命令の分岐予測のためのアドレスにも使用
される。
分岐予測の手法については特願昭62-8394号で詳しく述
べられている。
べられている。
(2.6)「データ演算部」 データ演算部106はマイクロプログラムにより制御さ
れ、マイクロROM部105の出力情報に従って各命令の機能
を実現するに必要な演算をレジスタと演算器で実行す
る。演算対象となるオペランドがアドレスあるいは即値
である場合は、オペランドアドレス計算部104で計算さ
れたアドレスあるいは即値を外部バスインタフェイス部
107を通過させて得る。また、演算対象となるオペラン
ドがCPU外部のメモリにある場合は、アドレス計算部104
で計算されたアドレスをバスインタフェイス部がアドレ
ス出力回路108から出力して、CPU外部のメモリからフェ
ッチしたオペランドをデータ入出力回路109から得る。
れ、マイクロROM部105の出力情報に従って各命令の機能
を実現するに必要な演算をレジスタと演算器で実行す
る。演算対象となるオペランドがアドレスあるいは即値
である場合は、オペランドアドレス計算部104で計算さ
れたアドレスあるいは即値を外部バスインタフェイス部
107を通過させて得る。また、演算対象となるオペラン
ドがCPU外部のメモリにある場合は、アドレス計算部104
で計算されたアドレスをバスインタフェイス部がアドレ
ス出力回路108から出力して、CPU外部のメモリからフェ
ッチしたオペランドをデータ入出力回路109から得る。
演算器としてはALU、バレルシフタ、プライオリティエ
ンコーダあるいはカウンタ、シフトレジスタなどがあ
る。レジスタと主な演算器の間は3バスで結合されてお
り、1つのレジスタ間演算を指示する1マイクロ命令を
2クロック(1ステップ)で処理する。
ンコーダあるいはカウンタ、シフトレジスタなどがあ
る。レジスタと主な演算器の間は3バスで結合されてお
り、1つのレジスタ間演算を指示する1マイクロ命令を
2クロック(1ステップ)で処理する。
データ演算時にCPU外部のメモリをアクセスする必要が
ある場合は、マイクロプログラムの指示により外部バス
インターフェイス部107を通してアドレス出力回路108か
らアドレスをCPU外部に出力し、データ入出力回路109を
通して目的のデータをフェッチする。
ある場合は、マイクロプログラムの指示により外部バス
インターフェイス部107を通してアドレス出力回路108か
らアドレスをCPU外部に出力し、データ入出力回路109を
通して目的のデータをフェッチする。
CPU外部のメモリにデータをストアする場合は、外部バ
スインターフェイス部107を通してアドレス出力回路108
よりアドレスを出力すると同時に、データ入出力回路10
9からデータをCPU外部に出力する。オペランドストアを
効率的に行うため、データ演算部106には4バイトのス
トアバッファが備えられている。
スインターフェイス部107を通してアドレス出力回路108
よりアドレスを出力すると同時に、データ入出力回路10
9からデータをCPU外部に出力する。オペランドストアを
効率的に行うため、データ演算部106には4バイトのス
トアバッファが備えられている。
ジャンプ命令の処理あるいは例外処理等を行って新たな
命令アドレスをデータ演算部106が得た場合は、これを
命令フェッチ部101とPC計算部103へ出力する。
命令アドレスをデータ演算部106が得た場合は、これを
命令フェッチ部101とPC計算部103へ出力する。
(2.7)「外部バスインターフェイス部」 外部バスインターフェイス部107は本発明のデータ処理
装置の外部バスでの通信を制御する。メモリのアクセス
はすべてクロック同期で行われ、最小2クロックサイク
ル(1ステップ)で行うことができる。
装置の外部バスでの通信を制御する。メモリのアクセス
はすべてクロック同期で行われ、最小2クロックサイク
ル(1ステップ)で行うことができる。
メモリに対するアクセス要求は命令フェッチ部101、オ
ペランドアドレス計算部104及びデータ演算部106から独
立に生じる。外部バスインターフェイス部107はこれら
のメモリアクセス要求を調停する。更にメモリとCPUと
を結ぶデータバスサイズである32ビット(1ワード)の
整置境界を跨ぐメモリ番地にあるデータのアクセスは、
このブロック内で自動的にワード境界を跨ぐことを検知
して2回のメモリアクセスに分解して行う。
ペランドアドレス計算部104及びデータ演算部106から独
立に生じる。外部バスインターフェイス部107はこれら
のメモリアクセス要求を調停する。更にメモリとCPUと
を結ぶデータバスサイズである32ビット(1ワード)の
整置境界を跨ぐメモリ番地にあるデータのアクセスは、
このブロック内で自動的にワード境界を跨ぐことを検知
して2回のメモリアクセスに分解して行う。
プリフェッチするオペランドとストアするオペランドと
が重なる場合のコンフリクト防止処理及びストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
が重なる場合のコンフリクト防止処理及びストアオペラ
ンドからフェッチオペランドへのバイパス処理も行う。
(3)「パイプライン機構」 本発明のデータ処理装置のパイプライン処理機能は第2
図に模式図に示される如くである。
図に模式図に示される如くである。
命令のプリフェッチを行う命令フェッチステージ(IFス
テージ)201,命令のデコードを行うデコードステージ
(Dステージ)202,オペランドのアドレス計算を行うオ
ペランドアドレス計算ステージ(Aステージ)203,マイ
クロROMアクセス(特にRステージ206と呼ぶ)を行う部
分とオペランドのプリフェッチ(特にOFステージ207と
称す)を行う部分とからなるオペランドフェッチステー
ジ(Fステージ)204,命令を実行する実行ステージ(E
ステージ)205の5段構成をパイプライン処理の基本と
する。
テージ)201,命令のデコードを行うデコードステージ
(Dステージ)202,オペランドのアドレス計算を行うオ
ペランドアドレス計算ステージ(Aステージ)203,マイ
クロROMアクセス(特にRステージ206と呼ぶ)を行う部
分とオペランドのプリフェッチ(特にOFステージ207と
称す)を行う部分とからなるオペランドフェッチステー
ジ(Fステージ)204,命令を実行する実行ステージ(E
ステージ)205の5段構成をパイプライン処理の基本と
する。
Eステージ205では1段のストアバッファがある他、高
機能命令の一部は命令の実行自体をパイプライン化する
ため、実際には5段以上のパイプライン処理効果があ
る。
機能命令の一部は命令の実行自体をパイプライン化する
ため、実際には5段以上のパイプライン処理効果があ
る。
各ステージは他のステージとは独立に動作し、理論上は
5つのステージが完全に独立動作する。各ステージは1
回の処理を最小2クロック(1ステップ)で行うことが
できる。従って理想的には2クロック(1ステップ)毎
に次々とパイプライン処理が進行する。
5つのステージが完全に独立動作する。各ステージは1
回の処理を最小2クロック(1ステップ)で行うことが
できる。従って理想的には2クロック(1ステップ)毎
に次々とパイプライン処理が進行する。
本発明のデータ処理装置には、メモリ−メモリ間演算あ
るいはメモリ間接アドレッシング等の如く1回の基本パ
イプライン処理のみでは処理し得ない命令もあるが、本
発明のデータ処理装置はこれらの処理に対してもなるべ
く均衡のとれたパイプライン処理が行える様に設計され
ている。複数のメモリオペランドを持つ命令に対しては
メモリオペランドの数に基づいてデコード段階で複数の
パイプライン処理単位(ステップコード)に分解してパ
イプライン処理を行う。
るいはメモリ間接アドレッシング等の如く1回の基本パ
イプライン処理のみでは処理し得ない命令もあるが、本
発明のデータ処理装置はこれらの処理に対してもなるべ
く均衡のとれたパイプライン処理が行える様に設計され
ている。複数のメモリオペランドを持つ命令に対しては
メモリオペランドの数に基づいてデコード段階で複数の
パイプライン処理単位(ステップコード)に分解してパ
イプライン処理を行う。
パイプライン処理単位の分解方法に関しては特願昭61-2
36456号で詳しく述べられている。
36456号で詳しく述べられている。
IFステージ201からDステージ202に渡される情報は、命
令コード211そのものである。Dステージ202からAステ
ージ203に渡される情報は、命令で指定された演算に関
するもの(Dコード212と称す)と、オペランドのアド
レス計算に関係するもの(Aコード213と称す)との2
つがある。
令コード211そのものである。Dステージ202から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以外のステージで検出されたEITは、その
コードがEステージ205に到達する迄はEIT処理を起動し
ない。Eステージ205で処理されている命令のみが実行
段階の命令であり、IFステージ201からFステージ204ま
での間に処理されている命令はまだ実行段階に至ってい
ないからである。従って、Eステージ205以外で検出さ
れたEITは、それが検出されたことがステップコード中
に記録されて次のステージに伝えられるのみである。
コードがEステージ205に到達する迄はEIT処理を起動し
ない。Eステージ205で処理されている命令のみが実行
段階の命令であり、IFステージ201からFステージ204ま
での間に処理されている命令はまだ実行段階に至ってい
ないからである。従って、Eステージ205以外で検出さ
れたEITは、それが検出されたことがステップコード中
に記録されて次のステージに伝えられるのみである。
(3.1)「パイプライン処理単位」 (3.1.1)「命令コードフィールドの分類」 本発明のデータ処理装置のパイプライン処理単位は命令
セットのフォーマットの特徴を利用して決定されてい
る。
セットのフォーマットの特徴を利用して決定されてい
る。
(1)節で述べた如く、本発明のデータ処理装置の命令
は2バイト単位の可変長命令であり、基本的には“2バ
イトの命令基本部+0〜4バイトのアドレシング拡張
部”を1〜3回反復することにより命令が構成されてい
る。
は2バイト単位の可変長命令であり、基本的には“2バ
イトの命令基本部+0〜4バイトのアドレシング拡張
部”を1〜3回反復することにより命令が構成されてい
る。
命令基本部には多くの場合、オペレーションコード部と
アドレッシングモード指定部とがあり、インデックスア
ドレシッシングあるいはメモリ間接アドレッシングが必
要な場合にはアドレッシング拡張部の代わりに“2バイ
トの多段間接モード指定部+0〜4バイトのアドレッシ
ング拡張部”が任意個付く。また、命令により2または
4バイトの命令固有の拡張部が最後に付く。
アドレッシングモード指定部とがあり、インデックスア
ドレシッシングあるいはメモリ間接アドレッシングが必
要な場合にはアドレッシング拡張部の代わりに“2バイ
トの多段間接モード指定部+0〜4バイトのアドレッシ
ング拡張部”が任意個付く。また、命令により2または
4バイトの命令固有の拡張部が最後に付く。
命令基本部には命令のオペレーションコード、基本アド
レッシングモード、リテラルなどが含まれる。アドレッ
シング拡張部はディスプレースメント、絶対アドレス、
即値、分岐命令の変位のいずれかである。命令固有の拡
張部にはレジスタマップ、I-format命令の即値指定等が
ある。第27図は、本発明のデータ処理装置の基本的命令
フォーマットの特徴を示す模式図である。
レッシングモード、リテラルなどが含まれる。アドレッ
シング拡張部はディスプレースメント、絶対アドレス、
即値、分岐命令の変位のいずれかである。命令固有の拡
張部にはレジスタマップ、I-format命令の即値指定等が
ある。第27図は、本発明のデータ処理装置の基本的命令
フォーマットの特徴を示す模式図である。
(3.1.2)「ステップコードへの命令の分解」 本発明のデータ処理装置では、上記の命令フォーマット
の特徴を生かしたパイプライン処理を行う。
の特徴を生かしたパイプライン処理を行う。
Dステージ202では“2バイトの命令基本部+0〜4バ
イトのアドレッシング拡張部",“多段間接モード指定+
アドレッシング拡張部”又は命令固有の拡張部を1つの
デコード単位として処理する。各回のデコード結果をス
テップコードと称し、Aステージ203以降ではこのステ
ップコードをパイプライン処理の単位としている。ステ
ップコードの数は命令毎に固有であり、多段間接モード
指定を行わない場合は、1つの命令は最小1個、最大3
個のステップコードに分かれる。多段間接モード指定が
行われた場合はそれだけステップコードが増加する。但
し、これは後で述べる様にデコード段階のみである。
イトのアドレッシング拡張部",“多段間接モード指定+
アドレッシング拡張部”又は命令固有の拡張部を1つの
デコード単位として処理する。各回のデコード結果をス
テップコードと称し、Aステージ203以降ではこのステ
ップコードをパイプライン処理の単位としている。ステ
ップコードの数は命令毎に固有であり、多段間接モード
指定を行わない場合は、1つの命令は最小1個、最大3
個のステップコードに分かれる。多段間接モード指定が
行われた場合はそれだけステップコードが増加する。但
し、これは後で述べる様にデコード段階のみである。
(3.1.3)「プログラムカウンタの管理」 本発明のデータ処理装置のパイプライン上に存在するス
テップコードは全て別命令に対するものである可能性が
あり、このためプログラムカウンタの値はステップコー
ド毎に管理される。全てのステップコードは、そのステ
ップコードのもとになった命令のプログラムカウンタ値
を有する。ステップコードに付属してパイプラインの各
ステージを流れるプログラムカウンタ値はステッププロ
グラムカウンタ(SPC)と称する。SPCはパイプラインス
テージ間を次々と受け渡されていく。
テップコードは全て別命令に対するものである可能性が
あり、このためプログラムカウンタの値はステップコー
ド毎に管理される。全てのステップコードは、そのステ
ップコードのもとになった命令のプログラムカウンタ値
を有する。ステップコードに付属してパイプラインの各
ステージを流れるプログラムカウンタ値はステッププロ
グラムカウンタ(SPC)と称する。SPCはパイプラインス
テージ間を次々と受け渡されていく。
(3.2)「各パイプラインステージの処理」 各パイプラインステージの入出力ステップコードには第
2図に示したように便宜上名前が付けられている。ま
た、ステップコードはオペレーションコードに関する処
理を行い、マイクロプログラムのエントリアドレス及び
Eステージ205に対するパラメータなどになる系列とE
ステージ205のマイクロ命令に対するオペランドになる
系列との2系列がある。
2図に示したように便宜上名前が付けられている。ま
た、ステップコードはオペレーションコードに関する処
理を行い、マイクロプログラムのエントリアドレス及び
Eステージ205に対するパラメータなどになる系列とE
ステージ205のマイクロ命令に対するオペランドになる
系列との2系列がある。
(3.2.1)「命令フェッチステージ」 命令フェッチステージ(IFステージ)201は命令をメモ
リあるいはブランチバッファからフェッチして命令キュ
ーに入力し、Dステージ202に対して命令コードを出力
する。命令キューの入力は整置された4バイト単位で行
う。メモリから命令をフェッチする場合は、整置された
4バイトにつき最小2クロック(1ステップ)を要す
る。ブランチバッファがヒットした場合は、整置された
4バイトにつき1クロックでフェッチ可能である。命令
キューの出力単位は2バイト毎に可変であり、2クロッ
クの間に最大6バイトまで出力できる。また、分岐の直
後には命令キューをバイパスして命令基本部2バイトを
直接命令デコーダに転送することも可能である。
リあるいはブランチバッファからフェッチして命令キュ
ーに入力し、Dステージ202に対して命令コードを出力
する。命令キューの入力は整置された4バイト単位で行
う。メモリから命令をフェッチする場合は、整置された
4バイトにつき最小2クロック(1ステップ)を要す
る。ブランチバッファがヒットした場合は、整置された
4バイトにつき1クロックでフェッチ可能である。命令
キューの出力単位は2バイト毎に可変であり、2クロッ
クの間に最大6バイトまで出力できる。また、分岐の直
後には命令キューをバイパスして命令基本部2バイトを
直接命令デコーダに転送することも可能である。
ブランチバッファへの命令の登録及びクリア等の制御、
プリフェッチ先の命令のアドレスの管理や命令キューの
制御もIFステージ201で行う。
プリフェッチ先の命令のアドレスの管理や命令キューの
制御もIFステージ201で行う。
IFステージ201で検出するEITには、命令をメモリからフ
ェッチする際のバスアクセス例外あるいはメモリ保護違
反などによるアドレス変換例外がある。
ェッチする際のバスアクセス例外あるいはメモリ保護違
反などによるアドレス変換例外がある。
(3.2.2)「命令デコードステージ」 命令デコードステージ(Dステージ)202はIFステージ2
01から入力された命令コードをデコードする。デコード
は命令デコード部102のFHWデコーダ、NFHWデコーダ及び
アドレッシングモードデコーダを合わせた第1デコーダ
を使用して、2クロック(1ステップ)単位に1度行な
い、1回のデコード処理で、0〜6バイトの命令コード
を消費する(RET命令の復帰先アドレスを含むステップ
コードの出力処理などでは命令コードを消費しない)。
1回のデコードでAステージ203に対してアドレス計算
情報としてのAコード213である制御コードとアドレス
修飾情報と、オペレーションコードの中間デコード結果
としてのDコード212である制御コードと8ビットのリ
テラル情報とを出力する。
01から入力された命令コードをデコードする。デコード
は命令デコード部102のFHWデコーダ、NFHWデコーダ及び
アドレッシングモードデコーダを合わせた第1デコーダ
を使用して、2クロック(1ステップ)単位に1度行な
い、1回のデコード処理で、0〜6バイトの命令コード
を消費する(RET命令の復帰先アドレスを含むステップ
コードの出力処理などでは命令コードを消費しない)。
1回のデコードでAステージ203に対してアドレス計算
情報としてのAコード213である制御コードとアドレス
修飾情報と、オペレーションコードの中間デコード結果
としてのDコード212である制御コードと8ビットのリ
テラル情報とを出力する。
Dステージ202では、各命令のPC計算部103の制御、分岐
予測処理、プリブランチ命令に対するプリブランチ処
理、命令キューからの命令コード出力処理をも行う。
予測処理、プリブランチ命令に対するプリブランチ処
理、命令キューからの命令コード出力処理をも行う。
Dステージ202で検出するEITには、予約命令例外及びプ
リブランチ時の奇数アドレスジャンプトラップがある。
また、IFステージ201より転送されてきた各種EITはステ
ップコード内にエンコードする処理をしてAステージ20
3に転送する。
リブランチ時の奇数アドレスジャンプトラップがある。
また、IFステージ201より転送されてきた各種EITはステ
ップコード内にエンコードする処理をしてAステージ20
3に転送する。
(3.2.3)「オペランドアドレス計算ステージ」 オペランドアドレス計算ステージ(Aステージ)203は
処理機能が大きく2つに分かれる。1つは命令デコード
部102の第2デコーダを使用してオペレーションコード
の後段デコードを行う処理で、他方はオペランドアドレ
ス計算部104でオペランドアドレスの計算を行う処理で
ある。
処理機能が大きく2つに分かれる。1つは命令デコード
部102の第2デコーダを使用してオペレーションコード
の後段デコードを行う処理で、他方はオペランドアドレ
ス計算部104でオペランドアドレスの計算を行う処理で
ある。
オペレーションコードの後段デコード処理はDコード21
2を入力とし、レジスタ,メモリの書込み予約及びマイ
クロプログラムのエントリアドレスとマイクロプログラ
ムに対するパラメータなどを含むRコード214の出力を
行う。なお、レジスタあるいはメモリの書込み予約は、
アドレス計算で参照したレジスタやメモリの内容がパイ
プライン上を先行する命令で書換えられることにより誤
ったアドレス計算が行われるのを防ぐためのものであ
る。レジスタあるいはメモリの書込み予約はデッドロッ
クを避けるため、ステップコード毎ではなく命令毎に行
う。レジスタ及びメモリへの書込み予約については特願
昭62-144394号で詳しく述べられている。
2を入力とし、レジスタ,メモリの書込み予約及びマイ
クロプログラムのエントリアドレスとマイクロプログラ
ムに対するパラメータなどを含むRコード214の出力を
行う。なお、レジスタあるいはメモリの書込み予約は、
アドレス計算で参照したレジスタやメモリの内容がパイ
プライン上を先行する命令で書換えられることにより誤
ったアドレス計算が行われるのを防ぐためのものであ
る。レジスタあるいはメモリの書込み予約はデッドロッ
クを避けるため、ステップコード毎ではなく命令毎に行
う。レジスタ及びメモリへの書込み予約については特願
昭62-144394号で詳しく述べられている。
オペランドアドレス計算処理はAコード213を入力と
し、Aコード213に従いオペランドアドレス計算部104で
加算あるいはメモリ間接参照を組合わせてアドレス計算
を行い、その計算結果をFコード215として出力する。
この際、アドレス計算に伴うレジスタ及びメモリの読出
し時にコンフリクトチェックを行い、先行命令がレジス
タあるいはメモリに書込み処理を終了していないためコ
ンフリクトが指示されれば、先行命令がEステージ205
で書込み処理を終了するまで待つ。また、オペランドア
ドレス及びメモリ間接参照のアドレスがメモリにマップ
されたI/O領域に入るか否かのチェックも行う。
し、Aコード213に従いオペランドアドレス計算部104で
加算あるいはメモリ間接参照を組合わせてアドレス計算
を行い、その計算結果をFコード215として出力する。
この際、アドレス計算に伴うレジスタ及びメモリの読出
し時にコンフリクトチェックを行い、先行命令がレジス
タあるいはメモリに書込み処理を終了していないためコ
ンフリクトが指示されれば、先行命令がEステージ205
で書込み処理を終了するまで待つ。また、オペランドア
ドレス及びメモリ間接参照のアドレスがメモリにマップ
されたI/O領域に入るか否かのチェックも行う。
Aステージ203で検出するEITには予約命令例外、特権命
令例外、バスアクセス例外、アドレス変換例外、メモリ
間接アドレッシングの時のオペランドブレイクポイント
ヒットによるデバッグトラップがある。Dコード212又
はAコード213自体がEITを起こしたことを示していれ
ば、Aステージ203はそのコードに対してアドレス計算
処理をせず、そのEITをRコード214及びFコード215に
伝える。
令例外、バスアクセス例外、アドレス変換例外、メモリ
間接アドレッシングの時のオペランドブレイクポイント
ヒットによるデバッグトラップがある。Dコード212又
はAコード213自体がEITを起こしたことを示していれ
ば、Aステージ203はそのコードに対してアドレス計算
処理をせず、そのEITをRコード214及びFコード215に
伝える。
(3.2.4)「マイクロROMアクセスステージ」 オペランドフェッチステージ(Fステージ)204も処理
が大きく2つに分かれる。一方はマイクロROMのアクセ
ス処理であり、特にRステージ206と称する。他方はオ
ペランドプリフェッチ処理であり、特にOFステージ207
と称する。Rステージ206とOFステージ207とは必ずしも
同時に動作するわけではなく、メモリアクセス権が獲得
できるか否か等に依存して独立に動作する。
が大きく2つに分かれる。一方はマイクロROMのアクセ
ス処理であり、特にRステージ206と称する。他方はオ
ペランドプリフェッチ処理であり、特にOFステージ207
と称する。Rステージ206とOFステージ207とは必ずしも
同時に動作するわけではなく、メモリアクセス権が獲得
できるか否か等に依存して独立に動作する。
Rステージ206の処理であるマイクロROMアクセス処理
は、Rコード214に対して次のEステージ205での実行に
使用する実行制御コードであるEコード216を生成する
ためのマイクロROMアクセスとマイクロ命令デコード処
理である。1つのRコード214に対する処理が2つ以上
のマイクロプログラムステップに分解される場合、マイ
クロROMはEステージ205で使用され、次のRコード214
はマイクロROMアクセス待ちになる。Rコード214に対す
るマイクロROMアクセスが行われるのは、その前のEス
テージ205での最後のマイクロ命令実行の時である。本
発明のデータ処理装置では、ほとんどの基本命令は1マ
イクロプログラムステップで行われるため、実際にはR
コード214に対するマイクロROMアクセスが次々と行われ
ることが多い。
は、Rコード214に対して次のEステージ205での実行に
使用する実行制御コードであるEコード216を生成する
ためのマイクロROMアクセスとマイクロ命令デコード処
理である。1つのRコード214に対する処理が2つ以上
のマイクロプログラムステップに分解される場合、マイ
クロROMはEステージ205で使用され、次のRコード214
はマイクロROMアクセス待ちになる。Rコード214に対す
るマイクロROMアクセスが行われるのは、その前のEス
テージ205での最後のマイクロ命令実行の時である。本
発明のデータ処理装置では、ほとんどの基本命令は1マ
イクロプログラムステップで行われるため、実際にはR
コード214に対するマイクロROMアクセスが次々と行われ
ることが多い。
Rステージ206で新たに検出するEITはない。Rコード21
4が命令処理再実行型のEITを示している時は、そのEIT
処理に対するマイクロプログラムが実行されるので、R
ステージ206はそのRコード214に従ったマイクロ命令を
フェッチする。Rコード214が奇数アドレスジャンプト
ラップを示している場合、Rステージ206はそれをEコ
ード216によって伝える。これはプリブランチに対する
もので、Eステージ205ではそのEコード216で分岐が生
じなければそのプリブランチを有効として奇数アドレス
ジャンプトラップを発生する。
4が命令処理再実行型のEITを示している時は、そのEIT
処理に対するマイクロプログラムが実行されるので、R
ステージ206はそのRコード214に従ったマイクロ命令を
フェッチする。Rコード214が奇数アドレスジャンプト
ラップを示している場合、Rステージ206はそれをEコ
ード216によって伝える。これはプリブランチに対する
もので、Eステージ205ではそのEコード216で分岐が生
じなければそのプリブランチを有効として奇数アドレス
ジャンプトラップを発生する。
(3.2.5)「オペランドフェッチステージ」 オペランドフェッチステージ(OFステージ)207はFス
テージ204で行う上記の2つの処理の内のオペランドプ
リフェッチ処理を行う。
テージ204で行う上記の2つの処理の内のオペランドプ
リフェッチ処理を行う。
オペランドプリフェッチはFコード215を入力とし、フ
ェッチしたオペランドとそのアドレスをSコード217と
して出力する。1つのFコード215ではワード境界を跨
いでも良いが4バイト以下のオペランドフェッチを指定
する。Fコード215にはオペランドのアクセスを行うか
否かの指定も含まれており、Aステージ203で計算した
オペランドアドレス自体あるいは即値をEステージ205
に転送する場合にはオペランドプリフェッチは行わず、
Fコード215の内容をSコード217として転送する。プリ
フェッチしようとするオペランドと、Eステージ205が
書き込み処理を行おうとするオペランドとが一致する場
合は、オペランドプリフェッチはメモリから行わずバイ
パスして行う。また、I/O領域に対してはオペランドプ
リフェッチを遅延させ、先行命令がすべて完了するまで
待ってオペランドフェッチを行う。
ェッチしたオペランドとそのアドレスをSコード217と
して出力する。1つのFコード215ではワード境界を跨
いでも良いが4バイト以下のオペランドフェッチを指定
する。Fコード215にはオペランドのアクセスを行うか
否かの指定も含まれており、Aステージ203で計算した
オペランドアドレス自体あるいは即値をEステージ205
に転送する場合にはオペランドプリフェッチは行わず、
Fコード215の内容をSコード217として転送する。プリ
フェッチしようとするオペランドと、Eステージ205が
書き込み処理を行おうとするオペランドとが一致する場
合は、オペランドプリフェッチはメモリから行わずバイ
パスして行う。また、I/O領域に対してはオペランドプ
リフェッチを遅延させ、先行命令がすべて完了するまで
待ってオペランドフェッチを行う。
OFステージ207で検出されるEITには、バスアクセス例
外、アドレス変換例外、オペランドプリフェッチに対す
るブレイクポイントヒットによるデバッグトラップがあ
る。Fコード215がデバッグトラップ以外のEITを示して
いる時は、それをSコード217に転送し、オペランドプ
リフェッチは行わない。Fコード215がデバッグトラッ
プを示している時は、そのFコード215に対してEITを示
していない場合と同じ処理をすると共にデバッグトラッ
プをSコード217に伝える。
外、アドレス変換例外、オペランドプリフェッチに対す
るブレイクポイントヒットによるデバッグトラップがあ
る。Fコード215がデバッグトラップ以外のEITを示して
いる時は、それをSコード217に転送し、オペランドプ
リフェッチは行わない。Fコード215がデバッグトラッ
プを示している時は、そのFコード215に対してEITを示
していない場合と同じ処理をすると共にデバッグトラッ
プをSコード217に伝える。
(3.2.6)「実行ステージ」 実行ステージ(Eステージ)205はEコード216及びSコ
ード217を入力として動作する。このEステージ205が命
令を実行するステージであり、Fステージ204以前のス
テージで行われた処理は全てEステージ205のための前
処理である。Eステージ205でジャンプ命令が実行され
たり、あるいはEIT処理が起動されたりした場合は、IF
ステージ201からFステージ204までの処理は全て無効化
される。Eステージ205はマイクロプログラムにより制
御され、Rコード214に示されたマイクロプログラムの
エントリアドレスからの一連のマイクロプログラムを実
行することにより命令を実行する。
ード217を入力として動作する。このEステージ205が命
令を実行するステージであり、Fステージ204以前のス
テージで行われた処理は全てEステージ205のための前
処理である。Eステージ205でジャンプ命令が実行され
たり、あるいはEIT処理が起動されたりした場合は、IF
ステージ201からFステージ204までの処理は全て無効化
される。Eステージ205はマイクロプログラムにより制
御され、Rコード214に示されたマイクロプログラムの
エントリアドレスからの一連のマイクロプログラムを実
行することにより命令を実行する。
マイクロROMの読み出しとマイクロ命令の実行とはパイ
プライン化されて行われる。従ってマイクロプログラム
で分岐が起きた場合は、1マイクロステップの空きがで
きる。また、Eステージ205はデータ演算部106にあるス
トアバッファを利用して、4バイト以内のオペランドス
トアと次のマイクロ命令実行をパイプライン処理するこ
ともできる。
プライン化されて行われる。従ってマイクロプログラム
で分岐が起きた場合は、1マイクロステップの空きがで
きる。また、Eステージ205はデータ演算部106にあるス
トアバッファを利用して、4バイト以内のオペランドス
トアと次のマイクロ命令実行をパイプライン処理するこ
ともできる。
Eステージ205では、Aステージ203で行ったレジスタ及
びメモリに対する書込み予約をオペランドの書き込み後
に解除する。
びメモリに対する書込み予約をオペランドの書き込み後
に解除する。
また、条件分岐命令がEステージ205で分岐を発した場
合は、その条件分岐命令に対する分岐予測が誤っていた
のであるから、分岐履歴の書換えを行う。
合は、その条件分岐命令に対する分岐予測が誤っていた
のであるから、分岐履歴の書換えを行う。
Eステージ205で検出されるEITには、バスアクセス例
外、アドレス変換例外、デバッグトラップ、奇数アドレ
スジャンプトラップ、予約機能例外、不正オペランド例
外、予約スタックフォーマット例外、ゼロ除算トラッ
プ、無条件トラップ、条件トラップ、遅延コンテキスト
トラップ、外部割込、遅延割込、リセット割込、システ
ム障害がある。
外、アドレス変換例外、デバッグトラップ、奇数アドレ
スジャンプトラップ、予約機能例外、不正オペランド例
外、予約スタックフォーマット例外、ゼロ除算トラッ
プ、無条件トラップ、条件トラップ、遅延コンテキスト
トラップ、外部割込、遅延割込、リセット割込、システ
ム障害がある。
Eステージ205で検出されたEITは全てEIT処理される
が、Eステージ以前のIFステージ201からFステージ204
の間で検出され、Rコード214あるいはSコード217に反
映されているEITは必ずしもEIT処理されるとは限らな
い。IFステージ201からFステージ204の間で検出された
が、先行の命令がEステージ205でジャンプ命令が実行
されたなどの原因でEステージ205まで到達しなかったE
ITは全てキャンセルされる。そのEITを起こした命令は
そもそも実行されなかったことになる。
が、Eステージ以前のIFステージ201からFステージ204
の間で検出され、Rコード214あるいはSコード217に反
映されているEITは必ずしもEIT処理されるとは限らな
い。IFステージ201からFステージ204の間で検出された
が、先行の命令がEステージ205でジャンプ命令が実行
されたなどの原因でEステージ205まで到達しなかったE
ITは全てキャンセルされる。そのEITを起こした命令は
そもそも実行されなかったことになる。
外部割込及び遅延割込は命令の切れ目でEステージ205
に直接受け付けられ、マイクロプログラムにより必要な
処理が実行される。その他の各種EITの処理はマイクロ
プログラムにより行われる。
に直接受け付けられ、マイクロプログラムにより必要な
処理が実行される。その他の各種EITの処理はマイクロ
プログラムにより行われる。
(3.3)「各パイプラインステージの状態制御」 パイプラインの各ステージは入力ラッチと出力ラッチと
を有し、他のステージとは独立に動作することを基本と
する。各ステージは1つ前に行った処理が終わり、その
処理結果を出力ラッチから次のステージの入力ラッチに
転送し、自分のステージの入力ラッチに次の処理に必要
な入力信号がすべて揃えば次の処理を開始する。
を有し、他のステージとは独立に動作することを基本と
する。各ステージは1つ前に行った処理が終わり、その
処理結果を出力ラッチから次のステージの入力ラッチに
転送し、自分のステージの入力ラッチに次の処理に必要
な入力信号がすべて揃えば次の処理を開始する。
つまり各ステージは、1つ前段のステージから出力され
てくる次の処理に対する入力信号が全て有効となり、今
の処理結果を後段のステージの入力ラッチに転送して出
力ラッチが空になると次の処理を開始する。
てくる次の処理に対する入力信号が全て有効となり、今
の処理結果を後段のステージの入力ラッチに転送して出
力ラッチが空になると次の処理を開始する。
各ステージが動作を開始する1つ前のクロックタイミン
グで入力信号が全て揃っている必要がある。入力信号が
揃っていない場合、そのステージは待ち状態(入力待
ち)になる。出力ラッチから次のステージの入力ラッチ
への転送を行う場合には次のステージの入力ラッチが空
き状態になっている必要があり、次のステージの入力ラ
ッチが空きでない場合もパイプラインステージは待ち状
態(出力待ち)になる。必要なメモリアクセス権が獲得
できなかったり、処理しているメモリアクセスにウエイ
トが挿入されたり、その他のパイプラインコンフリクト
が生じると各ステージの処理自体が遅延する。
グで入力信号が全て揃っている必要がある。入力信号が
揃っていない場合、そのステージは待ち状態(入力待
ち)になる。出力ラッチから次のステージの入力ラッチ
への転送を行う場合には次のステージの入力ラッチが空
き状態になっている必要があり、次のステージの入力ラ
ッチが空きでない場合もパイプラインステージは待ち状
態(出力待ち)になる。必要なメモリアクセス権が獲得
できなかったり、処理しているメモリアクセスにウエイ
トが挿入されたり、その他のパイプラインコンフリクト
が生じると各ステージの処理自体が遅延する。
(3.4)スタックポインタの動作 第28図は、本発明の一実施例を示すブロック図である。
61はオペランドアドレス計算ステージ(Aステージ20
3)の作業用ステージスタックポインタASPであり、Aス
テージ203で実行中の命令に付随するスタックポインタ
の値を示す。63はオペランドフェッチステージ(Fステ
ージ204)の作業用ステージスタックポインタ(FSP)、
65は実行ステージ(Eステージ205)の作業用ステージ
スタックポインタCSPである。66はソフトウェアからみ
たレベルのスタックポインタ群(リング、割込み等によ
り複数個のスタックポインタが存在する)、62はASP出
力ラッチ、64はFSP出力ラッチでありそれぞれASP61,FSP
63の出力データを保持するラッチである。
61はオペランドアドレス計算ステージ(Aステージ20
3)の作業用ステージスタックポインタASPであり、Aス
テージ203で実行中の命令に付随するスタックポインタ
の値を示す。63はオペランドフェッチステージ(Fステ
ージ204)の作業用ステージスタックポインタ(FSP)、
65は実行ステージ(Eステージ205)の作業用ステージ
スタックポインタCSPである。66はソフトウェアからみ
たレベルのスタックポインタ群(リング、割込み等によ
り複数個のスタックポインタが存在する)、62はASP出
力ラッチ、64はFSP出力ラッチでありそれぞれASP61,FSP
63の出力データを保持するラッチである。
72はEステージ205のアドレスレジスタ(AAレジス
タ)、73は外部とやり取りされるデータのためのEステ
ージ205のデータレジスタ(DDレジスタ)、75はAステ
ージ203のアドレス加算部、80〜87は内部データバスで
ある。106はEステージ205のデータ演算部、90a〜90eは
Aステージ203でASP61が更新されたことを示すASP更新
信号である。91はAコード213中のASPインクリメント信
号、92はAコード213中のASPデクリメント信号である。
611,621,631,641は夫々ASP61、ASP出力ラッチ62、FSP6
3、FSP出力ラッチ64の一部としてASP更新信号90aを転送
するラッチである。
タ)、73は外部とやり取りされるデータのためのEステ
ージ205のデータレジスタ(DDレジスタ)、75はAステ
ージ203のアドレス加算部、80〜87は内部データバスで
ある。106はEステージ205のデータ演算部、90a〜90eは
Aステージ203でASP61が更新されたことを示すASP更新
信号である。91はAコード213中のASPインクリメント信
号、92はAコード213中のASPデクリメント信号である。
611,621,631,641は夫々ASP61、ASP出力ラッチ62、FSP6
3、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中にはASP61のインクリメ
ント信号91、デクリメント信号92が含まれており、この
信号91,92はASP61の制御を行う。またインクリメント信
号91、デクリメント信号92のORをとることによりASP更
新信号90aを生成する。
ついて説明する。Aコード213中にはASP61のインクリメ
ント信号91、デクリメント信号92が含まれており、この
信号91,92はASP61の制御を行う。またインクリメント信
号91、デクリメント信号92のORをとることによりASP更
新信号90aを生成する。
インクリメント信号91又はデクリメント信号92が“1"の
とき、つまりAステージ203でASP61を更新したときにAS
P更新信号90aは“1"となる。そしてASP更新信号90aはス
タックポインタの値と共にパイプライン中のステップコ
ードの流れに同期して転送される。Eステージ205にお
いては転送されてきたASP更新信号90eが“1"のときのみ
CSP65にFSP63の値を転送する。
とき、つまりAステージ203でASP61を更新したときにAS
P更新信号90aは“1"となる。そしてASP更新信号90aはス
タックポインタの値と共にパイプライン中のステップコ
ードの流れに同期して転送される。Eステージ205にお
いては転送されてきたASP更新信号90eが“1"のときのみ
CSP65にFSP63の値を転送する。
スタックプッシュ・アドレシッシングモードのオペラン
ド指定を含む命令、例えばレジスタの値をスタックトッ
プ(スタックポインタの値をデクリメント値が指すとこ
ろ)に書き込むMOV命令(MOV:Rn->@‐SP Rnはn番の
レジスタを表し、@‐SPはスタックポインタをデクリメ
ントした値が指すアドレスを示す)を実行した場合の各
ステージのスタックポインタに関する処理を第29図に示
す。まずDステージ202はASP61の更新制御等を含むAコ
ード213を生成する。
ド指定を含む命令、例えばレジスタの値をスタックトッ
プ(スタックポインタの値をデクリメント値が指すとこ
ろ)に書き込むMOV命令(MOV:Rn->@‐SP Rnはn番の
レジスタを表し、@‐SPはスタックポインタをデクリメ
ントした値が指すアドレスを示す)を実行した場合の各
ステージのスタックポインタに関する処理を第29図に示
す。まずDステージ202はASP61の更新制御等を含むAコ
ード213を生成する。
Aステージ203では、レジスタ指定を含むRコード214を
出力する。またAコード213に基づいて、ASP61はオペラ
ンドのサイズ分デクリメントされ、更新後の値がFSP63
に転送される。この時Aステージ203でASP61が更新され
たことを示すASP更新信号90aは“1"となり、この信号は
ASP61の値と共に転送される。ここでFステージ204が前
のステップコードを処理中などですぐにASP61の値を転
送できない場合は、ASP出力ラッチ62で転送可能になる
まで待つ。本発明のデータ処理装置においては、スタッ
クプッシュアドレシッシングモードと他のアドレシッシ
ングモードの処理の共通化のため、ASP61のデクリメン
トと共にアドレス加算部75においても(ASPの値−オペ
ランドサイズ)を実行し、その結果をオペランドアドレ
スとしてFステージ204へ転送する。
出力する。またAコード213に基づいて、ASP61はオペラ
ンドのサイズ分デクリメントされ、更新後の値がFSP63
に転送される。この時Aステージ203でASP61が更新され
たことを示すASP更新信号90aは“1"となり、この信号は
ASP61の値と共に転送される。ここでFステージ204が前
のステップコードを処理中などですぐにASP61の値を転
送できない場合は、ASP出力ラッチ62で転送可能になる
まで待つ。本発明のデータ処理装置においては、スタッ
クプッシュアドレシッシングモードと他のアドレシッシ
ングモードの処理の共通化のため、ASP61のデクリメン
トと共にアドレス加算部75においても(ASPの値−オペ
ランドサイズ)を実行し、その結果をオペランドアドレ
スとしてFステージ204へ転送する。
Fステージ204では、Rコード214よりレジスタアクセス
信号を含むEコード216を生成し、このEコード216とオ
ペランドアドレスの値を含むSコード217をEステージ2
05に転送する。またASP更新信号90eが“1"であることを
検知して、 FSP63の値をCSP65に転送する。先ほどと同様CSP65にす
ぐ転送できない場合は、FSP出力ラッチ64にて転送可能
になるまで待つ。
信号を含むEコード216を生成し、このEコード216とオ
ペランドアドレスの値を含むSコード217をEステージ2
05に転送する。またASP更新信号90eが“1"であることを
検知して、 FSP63の値をCSP65に転送する。先ほどと同様CSP65にす
ぐ転送できない場合は、FSP出力ラッチ64にて転送可能
になるまで待つ。
Eステージ205では、指定されたレジスタの値を読み出
しデータ演算部106からDOバス85を介してDDレジスタ73
に書き込む。AAレジスタ72にはFステージ204から転送
されたオペランドアドレスを書き込む。そしてこの命令
の終了時、CSP65の値はソフトウェアからみたスタック
ポインタ群66の1つに転送され、外部からみて命令実行
後のスタックポインタの値が正しく設定される。AAレジ
スタ72の示すアドレスにDDレジスタ73の値をストアす
る。
しデータ演算部106からDOバス85を介してDDレジスタ73
に書き込む。AAレジスタ72にはFステージ204から転送
されたオペランドアドレスを書き込む。そしてこの命令
の終了時、CSP65の値はソフトウェアからみたスタック
ポインタ群66の1つに転送され、外部からみて命令実行
後のスタックポインタの値が正しく設定される。AAレジ
スタ72の示すアドレスにDDレジスタ73の値をストアす
る。
この命令がAステージ203での処理を終了した時点でこ
の命令の終了時のスタックポインタの値がASP61に格納
されているため、後の命令がスタックポインタを参照す
るアドレシッシングモードを含んでいても、ASP61の値
を参照することにより、正しいアドレスを得ることがで
きる。
の命令の終了時のスタックポインタの値がASP61に格納
されているため、後の命令がスタックポインタを参照す
るアドレシッシングモードを含んでいても、ASP61の値
を参照することにより、正しいアドレスを得ることがで
きる。
次に例えば“100"をスタックポインタに書き込む命令
(MOV:“100"->SP“100"は即値、SPはスタックポイン
タ)のスタックポインタに関する処理を第30図に示す。
(MOV:“100"->SP“100"は即値、SPはスタックポイン
タ)のスタックポインタに関する処理を第30図に示す。
この命令ではAステージ203での処理の際はASP61の値は
変化しない。FSP63にこのASP61の値が転送される。また
後の命令がスタックポインタを参照する場合に間違った
値を参照しないように、スタックポインタの値をEステ
ージ205で書き換えることを示すためにスタックポイン
タ書き込み予約を行う。このときはASP更新信号90aは
“0"である。
変化しない。FSP63にこのASP61の値が転送される。また
後の命令がスタックポインタを参照する場合に間違った
値を参照しないように、スタックポインタの値をEステ
ージ205で書き換えることを示すためにスタックポイン
タ書き込み予約を行う。このときはASP更新信号90aは
“0"である。
Fステージ204では、スタックポインタ書き込み制御等
を含むEコード216と、即値データ“100"を含むSコー
ド217を出力する。この時はASP更新信号90eが“0"なの
でFSP63の値はCSP65へは書き込まれない。
を含むEコード216と、即値データ“100"を含むSコー
ド217を出力する。この時はASP更新信号90eが“0"なの
でFSP63の値はCSP65へは書き込まれない。
Eステージ205ではEコード216に基づいて即値データ
“100"を読み出し、データ演算部106、DOバス85を通し
てASP61およびCSP65に転送する。そして命令終了時にCS
P65の値をSP群66に転送する。
“100"を読み出し、データ演算部106、DOバス85を通し
てASP61およびCSP65に転送する。そして命令終了時にCS
P65の値をSP群66に転送する。
ここで、この命令の後のステップコードがアドレス計算
時にスタックポインタを使用する場合を第31図に示す。
このとき、次のステップコードは、ステップコード
でスタックポインタの書き込み予約が行われているた
め、ステップコードがEステージ205で処理されてス
タックポインタに値が書き込まれスタックポインタ書き
込み予約が解除されるまでは、Aステージ203で処理を
中断して待っている。そしてステップコードがEステ
ージ205で処理されASP61が書き換わってから、ステップ
コードのAステージ203での処理を開始する。ステッ
プコードではFSP63の値をCSP65に転送する。
時にスタックポインタを使用する場合を第31図に示す。
このとき、次のステップコードは、ステップコード
でスタックポインタの書き込み予約が行われているた
め、ステップコードがEステージ205で処理されてス
タックポインタに値が書き込まれスタックポインタ書き
込み予約が解除されるまでは、Aステージ203で処理を
中断して待っている。そしてステップコードがEステ
ージ205で処理されASP61が書き換わってから、ステップ
コードのAステージ203での処理を開始する。ステッ
プコードではFSP63の値をCSP65に転送する。
一方、後のステップコードがスタックポインタを参照し
ない場合を第32図に示す。この時次のステップコード
はスタックポインタを参照しないので、Aステージ203
で待っている必要はなく、ステップコードがAステー
ジ203での処理を終えた時点でAステージ203での処理を
開始する。このステップコードに関してはASP61の値
が、本来その命令実行時に付随すべきスタックポインタ
の値とは異なっている。しかしステップコードではAS
P更新信号は“0"であり、FSP63の値はCSP65には書き込
まれない。そのためステップコードがEステージ205
で処理されるときには、正しいスタックポインタの値
(ステップコードでCSP65に書き込まれた値)がCSP65
に入っている。そして命令終了時にCSP65の値をソフト
ウェアからみたスタックポインタ66に書き込む。
ない場合を第32図に示す。この時次のステップコード
はスタックポインタを参照しないので、Aステージ203
で待っている必要はなく、ステップコードがAステー
ジ203での処理を終えた時点でAステージ203での処理を
開始する。このステップコードに関してはASP61の値
が、本来その命令実行時に付随すべきスタックポインタ
の値とは異なっている。しかしステップコードではAS
P更新信号は“0"であり、FSP63の値はCSP65には書き込
まれない。そのためステップコードがEステージ205
で処理されるときには、正しいスタックポインタの値
(ステップコードでCSP65に書き込まれた値)がCSP65
に入っている。そして命令終了時にCSP65の値をソフト
ウェアからみたスタックポインタ66に書き込む。
また、ステップコードもスタックポインタを使用しな
い場合は、ステップコードがAステージ203での処理
を終わったらAステージ203での処理が開始される。ス
テップコードはと同様、ASP更新信号90が“0"であ
り、FSP63からCSP65への値の転送は行われない。
い場合は、ステップコードがAステージ203での処理
を終わったらAステージ203での処理が開始される。ス
テップコードはと同様、ASP更新信号90が“0"であ
り、FSP63からCSP65への値の転送は行われない。
このように各ステップコードが、Aステージ203でスタ
ックポインタの値を更新する場合には、Aステージ203
で処理を終わった時点でこの命令終了時のスタックポイ
ンタの値がASP61に書き込まれている。そのため後の命
令のステップコードがAステージ203でスタックポイン
タを参照する場合、ASP61を参照することにより正しい
アドレスを得ることができる。例えば次の命令のアドレ
シッシングモードが(SP+disp)であったら、(ASP+d
isp)をアドレス加算部75で実行することにより、前の
命令の終了を待たなくても、正しいアドレスが得られ
る。
ックポインタの値を更新する場合には、Aステージ203
で処理を終わった時点でこの命令終了時のスタックポイ
ンタの値がASP61に書き込まれている。そのため後の命
令のステップコードがAステージ203でスタックポイン
タを参照する場合、ASP61を参照することにより正しい
アドレスを得ることができる。例えば次の命令のアドレ
シッシングモードが(SP+disp)であったら、(ASP+d
isp)をアドレス加算部75で実行することにより、前の
命令の終了を待たなくても、正しいアドレスが得られ
る。
またEステージ205の処理でスタックポインタの値を更
新する場合には、スタックポインタ書き込み予約を行
う。そして次のステップコードがAステージ203でスタ
ックポインタを参照する場合、次のステップコードの処
理はAステージ203でスタックポインタ書き込み予約が
解除されるまで待っている。一方次のステップコードが
スタックポインタを参照しない場合には、Aステージ20
3で待っている必要はなく各ステージでの処理を行い、
そのステップコードがEステージ205へ送られたときにF
SP63からCSP65へのスタックポインタの値の転送を行わ
ないようにする。こうしてCSP65に誤った値を転送しな
いようにし、命令終了時に転送されるソフトウェアから
みたスタックポインタ66の値は正しい値を保つ。
新する場合には、スタックポインタ書き込み予約を行
う。そして次のステップコードがAステージ203でスタ
ックポインタを参照する場合、次のステップコードの処
理はAステージ203でスタックポインタ書き込み予約が
解除されるまで待っている。一方次のステップコードが
スタックポインタを参照しない場合には、Aステージ20
3で待っている必要はなく各ステージでの処理を行い、
そのステップコードがEステージ205へ送られたときにF
SP63からCSP65へのスタックポインタの値の転送を行わ
ないようにする。こうしてCSP65に誤った値を転送しな
いようにし、命令終了時に転送されるソフトウェアから
みたスタックポインタ66の値は正しい値を保つ。
〔発明の効果〕 以上のように、この発明によれば、アドレス計算ステー
ジがスタックポインタを持ち、実行ステージの管理する
スタックポインタへの値の転送を、アドレス計算ステー
ジが管理するスタックポインタをアドレス計算ステージ
が更新したかどうかにより制御することで、少ないハー
ドウェアで高速かつ正確な命令実行を行える効果があ
る。
ジがスタックポインタを持ち、実行ステージの管理する
スタックポインタへの値の転送を、アドレス計算ステー
ジが管理するスタックポインタをアドレス計算ステージ
が更新したかどうかにより制御することで、少ないハー
ドウェアで高速かつ正確な命令実行を行える効果があ
る。
第1図は本発明の一実施例によるデータ処理装置の全体
ブロック図、第2図は本発明の一実施例によるデータ処
理装置のパイプライン概要図、第3図〜第27図は本発明
の一実施例によるデータ処理装置の命令フォーマットの
特徴を示す図、第28図は本発明の一実施例によるデータ
処理装置のスタックポインタ関連部分の構成図、第29
図、第30図は本発明のデータ処理装置において実施され
るいくつかの命令の実行フローチャート、第31図,第32
図は第30図に示す命令の次のステップコードを含めた実
行フローチャート、第33図は従来例を示すブロック図、
第34図,第35図は従来のプッシュ命令の実行フローチャ
ートである。 203……アドレス計算ステージ(Aステージ)、205……
実行ステージ(Eステージ)、212〜217……パイプライ
ン処理の単位であるステップコード、61……Aステージ
203の作業用ステージスタックポインタ(ASP)、63……
Eステージ205の作業用ステージスタックポインタ(CS
P)、75……Aステージ203のアドレス加算部、90……A
ステージ203でASPを更新することを示すASP更新信号 なお、図中同一符号は、同一、または相当部分を示す。
ブロック図、第2図は本発明の一実施例によるデータ処
理装置のパイプライン概要図、第3図〜第27図は本発明
の一実施例によるデータ処理装置の命令フォーマットの
特徴を示す図、第28図は本発明の一実施例によるデータ
処理装置のスタックポインタ関連部分の構成図、第29
図、第30図は本発明のデータ処理装置において実施され
るいくつかの命令の実行フローチャート、第31図,第32
図は第30図に示す命令の次のステップコードを含めた実
行フローチャート、第33図は従来例を示すブロック図、
第34図,第35図は従来のプッシュ命令の実行フローチャ
ートである。 203……アドレス計算ステージ(Aステージ)、205……
実行ステージ(Eステージ)、212〜217……パイプライ
ン処理の単位であるステップコード、61……Aステージ
203の作業用ステージスタックポインタ(ASP)、63……
Eステージ205の作業用ステージスタックポインタ(CS
P)、75……Aステージ203のアドレス加算部、90……A
ステージ203でASPを更新することを示すASP更新信号 なお、図中同一符号は、同一、または相当部分を示す。
Claims (1)
- 【請求項1】スタックポインタによって命令のオペラン
ドを指定すると同時に前記スタックポインタの更新方法
を指定するアドレッシングモードを備え、第1のステー
ジ及び第2のステージで命令の処理をパイプライン処理
によって順次的に行い、 前記第1のステージで参照可能な第1のスタックポイン
タと、 前記第2のステージで参照可能な第2のスタックポイン
タと、 前記第1のステージで制御され、前記第1のスタックポ
インタを更新する第1の更新手段と、 前記第2のステージで制御され、前記第1のスタックポ
インタを更新する第2の更新手段と、 前記第2のステージで制御され、前記第2のスタックポ
インタを更新する第3の更新手段と、 前記第1のスタックポインタの値を前記第2のスタック
ポインタに転送する転送手段とを備えるデータ処理装置
において、 前記第1のスタックポインタが前記第1のステージの制
御により更新された命令の場合のみ、前記命令が前記第
2のステージに転送されるのと同期して前記第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 JPH0225934A (ja) | 1990-01-29 |
JPH0769802B2 true 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) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06100967B2 (ja) * | 1987-06-10 | 1994-12-12 | 三菱電機株式会社 | パイプライン処理機構を持つデータ処理装置および処理方法 |
-
1988
- 1988-07-14 JP JP63177942A patent/JPH0769802B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH0225934A (ja) | 1990-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5091853A (en) | Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction | |
US5522053A (en) | Branch target and next instruction address calculation in a pipeline processor | |
JP2507638B2 (ja) | デ―タ処理装置 | |
US5321821A (en) | System for processing parameters in instructions of different format to execute the instructions using same microinstructions | |
JP3543181B2 (ja) | データ処理装置 | |
US4945511A (en) | Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions | |
JP2581236B2 (ja) | データ処理装置 | |
JPH081599B2 (ja) | データ処理装置 | |
JPH01214932A (ja) | データ処理装置 | |
JPH07120284B2 (ja) | データ処理装置 | |
JP2556182B2 (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 | |
JPH0769806B2 (ja) | データ処理装置 | |
US5269008A (en) | Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer | |
JP2504235B2 (ja) | デ―タ処理装置 | |
JP2522048B2 (ja) | マイクロプロセッサ及びそれを使用したデ―タ処理装置 | |
JPH0769802B2 (ja) | データ処理装置 | |
JPH0769801B2 (ja) | データ処理装置 | |
JP2532560B2 (ja) | 高機能な例外処理を行うデ―タ処理装置 | |
JPH0769805B2 (ja) | データ処理装置 | |
JPH0769804B2 (ja) | データ処理装置 | |
JPH0573294A (ja) | マイクロプロセツサ | |
JP2696578B2 (ja) | データ処理装置 | |
JPH0769808B2 (ja) | データ処理装置 | |
JPH0218621A (ja) | データ処理装置 |