JP3543181B2 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP3543181B2 JP3543181B2 JP27528194A JP27528194A JP3543181B2 JP 3543181 B2 JP3543181 B2 JP 3543181B2 JP 27528194 A JP27528194 A JP 27528194A JP 27528194 A JP27528194 A JP 27528194A JP 3543181 B2 JP3543181 B2 JP 3543181B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- data
- instructions
- unit
- parallel
- 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 - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 471
- 238000012546 transfer Methods 0.000 claims description 228
- 230000015654 memory Effects 0.000 claims description 177
- 238000004364 calculation method Methods 0.000 claims description 75
- 238000000034 method Methods 0.000 claims description 73
- 230000008569 process Effects 0.000 claims description 62
- 238000004458 analytical method Methods 0.000 claims description 55
- 239000002131 composite material Substances 0.000 claims description 51
- 150000001875 compounds Chemical class 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 115
- 238000006073 displacement reaction Methods 0.000 description 53
- 230000007246 mechanism Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 101710205907 Urotensin-2 receptor Proteins 0.000 description 4
- 239000010751 BS 2869 Class A2 Substances 0.000 description 3
- 239000003607 modifier Substances 0.000 description 3
- 101000930354 Homo sapiens Protein dispatched homolog 1 Proteins 0.000 description 2
- 101000930348 Homo sapiens Protein dispatched homolog 2 Proteins 0.000 description 2
- 102100035622 Protein dispatched homolog 1 Human genes 0.000 description 2
- 102100035637 Protein dispatched homolog 2 Human genes 0.000 description 2
- 206010051015 Radiation hepatitis Diseases 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 239000010749 BS 2869 Class C1 Substances 0.000 description 1
- 239000010750 BS 2869 Class C2 Substances 0.000 description 1
- 102100035475 Blood vessel epicardial substance Human genes 0.000 description 1
- 101001094636 Homo sapiens Blood vessel epicardial substance Proteins 0.000 description 1
- 101000608194 Homo sapiens Pyrin domain-containing protein 1 Proteins 0.000 description 1
- 101000595404 Homo sapiens Ribonucleases P/MRP protein subunit POP1 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
【産業上の利用分野】
本発明は高度な並列処理機構により高い処理能力を実現したデータ処理装置に関し、特に、複数の命令を並列実行可能なデータ処理装置に関する。
【0002】
【従来の技術】
近年のデータ処理装置は、動作周波数の向上による高速化共に、パイプライン処理あるいはスーパースケーラ等の並列処理技術の開発により飛躍的な性能向上を続けている。スーパースケーラとは、複数の命令を並列にデコードし、並列に実行する技術である。例えば、特開平3−091029号公報に開示されている発明では、オペランド干渉のない2命令を並列にデコードして実行するデータ処理装置が開示されている。このようなスーパースケーラ技術を用いたデータ処理装置においては、今後はオペランド干渉のある命令あるいはオペランドがメモリオペランドである命令等のような命令に関して、複数命令の並列実行が可能な組み合せをいかにして増加させるかが性能向上の鍵となる。
【0003】
オペランド干渉のある2命令を並列に処理するデータ処理装置としては、 ALUを2段に直列接続することによりオペランド干渉のある2命令を並列に実行するものが知られている。従来のデータ処理装置では、オペランドに依存関係のある2つの命令は同時に実行しない場合が多い。また、オペランド干渉のある2命令を実行するために単純に演算器を直列に接続したデータ処理装置もあるが、それだけでは高速な実行は困難であり、動作周波数向上の妨げになるという問題もある。
【0004】
メモリオペランドを有する、即ちオペランドがメモリオペランドである2命令を並列に実行するためには、2つのメモリアクセスを並列に行なう必要がある。2つの独立したメモリオペランドをアクセスするためには、主記憶またはキャッシュメモリを2ポートにするか、あるいは内部キャッシュのタグメモリのみをマルチポート化してメモリをインタリーブ構成にする必要がある。そのような構成を採った従来のデータ処理装置では、2つのメモリオペランドを有する2命令を並列に実行するためには、追加すべきハードウェア量が大きくなり、制御もまた複雑になるという問題があった。
【0005】
【発明が解決しようとする課題】
このように、スーパースケーラ方式を用いてデータ処理装置の性能向上を図るためには、並列実行可能な命令の組み合せを増加することが重要である。しかし、上述したようにオペランドの干渉がある2命令を高速に並列実行することは困難であった。また、2つのメモリアクセスを行なう命令を並列に実行するためには、ハードウェア量が大幅に増大するという問題点があった。
【0006】
本発明はこのような事情に鑑みてなされたものであり、スーパースケーラ方式を用いてデータ処理装置の性能向上を図るために、オペランドの干渉がある2命令を高速に並列実行可能とし、またハードウェア量の大幅な増加なしに2つのメモリアクセスを行なう命令を並列に実行可能として、並列実行可能な命令の組み合せを増加させたデータ処理装置の提供を目的とする。
【0007】
【課題を解決するための手段】
本発明のデータ処理装置の第1の発明は、第1の命令としてはシフト命令を、第2の命令としては算術演算,論理演算または比較命令を対象としている。そして、命令実行手段は、シフト命令でシフト可能なシフト量の一部である1または複数の所定のシフト量のみのシフト処理を実行するシフタと、シフタの出力に少なくとも1つの入力が接続され、少なくとも算術演算または論理演算の内の一つを実行する演算手段とを含む複合演算手段とを有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令がシフト量が自身に含まれる即値で指定され、シフタが実行可能ないずれかのシフト量のシフト処理を実行するシフト命令である第1の条件と、第2の命令が演算手段で実行可能な演算を実行する命令であり、且つ第1の命令のシフト結果を第2の命令が参照する第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0008】
本発明のデータ処理装置の第2の発明は、第1の命令としては算術演算,論理演算命令を、第2の命令としてはシフト命令を対象としている。そして、命令実行手段は、少なくとも算術演算または論理演算の内の一つを実行する演算手段と、演算手段の出力に入力が接続され、シフト命令でシフト可能なシフト量の一部である1または複数の所定のシフト量のみのシフト処理を実行するシフタとを含む複合演算手段とを有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令が演算手段で実行可能な演算を実行する命令である第1の条件と、第2の命令がシフト量が自身に含まれる即値で指定され、シフタで実行可能ないずれかのシフト量のシフト処理を実行するシフト命令であり、且つ第1の命令の演算結果を第2の命令が参照する第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0009】
本発明のデータ処理装置の第3の発明は、第1の命令としては演算命令を、第2の命令としてはレジスタ間転送命令を対象としている。そして、命令実行手段は、少なくとも算術演算,論理演算またはシフト処理の内の一つを実行する演算手段と、演算手段の演算結果を複数のレジスタへ転送するデータ転送手段とを有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令が演算手段で実行可能な演算を実行してその結果を自身に含まれる第1の値に対応するレジスタへ転送する命令である第1の条件と、第2の命令が第1の命令の演算結果を自身に含まれる第2の値に対応するレジスタへ転送する命令である第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0010】
本発明のデータ処理装置の第4の発明は、第1,第2の命令共に演算命令を対象としている。そして、命令実行手段は、少なくとも算術演算,論理演算またはシフト処理の内の一つをそれぞれ実行する第1及び第2の演算手段と、第1の演算手段の演算結果及び第2の演算手段の演算結果をそれぞれ異なるレジスタへ並列に転送するデータ転送手段とを有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令が第1及び第2の演算手段で実行可能な演算を実行してその結果を自身に含まれる第1の値に対応するレジスタへ転送する命令である第1の条件と、第2の命令が第1の命令の演算結果を自身に含まれる第2の値に対応するレジスタへ転送する命令である第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0011】
本発明のデータ処理装置の第5の発明は、第1,第2の命令共にポップ命令を対象としている。そして、命令実行手段は、データアクセス手段から2データを並列にレジスタへ転送するデータ転送手段を有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令及び第2の命令が共にスタックポインタが指示するスタック領域のデータを自身に含まれる値に対応するレジスタへそれぞれポップする命令である条件が成立するか否かを判定する判定手段が備えられている。
【0012】
本発明のデータ処理装置の第6の発明は、第1,第2の命令共にプッシュ命令を対象としている。そして、命令実行手段は、2個のレジスタから並列に読み出したデータを並列に、データアクセス手段へ転送するデータ転送手段を有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令及び第2の命令が共に自身に含まれる値に対応するレジスタのデータをスタックポインタが指示するスタック領域へそれぞれプッシュする命令である条件が成立するか否かを判定する判定手段が備えられている。
【0013】
本発明のデータ処理装置の第7の発明は、第1の命令としてはレジスタ間接モードのロード命令を、第2の命令としてはレジスタ相対間接モードのロード命令を対象としている。そして、命令実行手段は、データアクセス手段から2データを並列にレジスタへ転送するデータ転送手段を有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令が自身に含まれる第1の値に対応するレジスタの内容で指定される記憶手段のアドレスのデータを自身に含まれる第2の値に対応するレジスタへ転送する命令であり、且つ第2の命令が自身に含まれる第1の値に対応するレジスタの内容に自身に含まれる第3の値を加算した値で指定される記憶手段のアドレスのデータを自身に含まれる第4の値に対応するレジスタへ転送する命令である第1の条件と、第1の命令により指定されるデータのデータ長が第2の命令に含まれる第3の値と等しい第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0014】
本発明のデータ処理装置の第8の発明は、第1,第2の命令共にレジスタ相対間接モードのロード命令を対象としている。そして、命令実行手段は、データアクセス手段から2データを並列にレジスタへ転送するデータ転送手段を有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令が自身に含まれる第1の値に対応するレジスタの内容に第2の値を加算した値で指定される記憶手段のアドレスのデータを自身に含まれる第3の値に対応するレジスタへ転送する命令であり、且つ第2の命令が自身に含まれる第1の値に対応するレジスタの内容に自身に含まれる第4の値を加算した値で指定される記憶手段のアドレスのデータを自身に含まれる第5の値に対応するレジスタへ転送する命令である第1の条件と、第1の命令により指定されるデータのデータ長が第2の命令に含まれる第4の値と第1の命令に含まれる第2の値との差に等しい第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0015】
本発明のデータ処理装置の第9の発明は、第1の命令がレジスタ間接モードのストア命令を、第2の命令がレジスタ相対間接モードのストア命令を対象としている。そして、命令実行手段は、2個のレジスタから並列に読み出したデータを並列に、データアクセス手段へ転送するデータ転送手段を有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令が自身に含まれる第1の値に対応するレジスタの内容で指定される記憶手段のアドレスへ自身に含まれる第2の値に対応するレジスタのデータを転送する命令であり、且つ第2の命令が自身に含まれる第1の値に対応するレジスタの内容に自身に含まれる第3の値を加算した値で指定される記憶手段のアドレスへ自身に含まれる第4の値に対応するレジスタのデータを転送する命令である第1の条件と、第1の命令により指定されるデータのデータ長が第2の命令に含まれる第3の値に等しい第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0016】
本発明のデータ処理装置の第10の発明は、第1,第2の命令共にレジスタ相対間接モードのストア命令を対象としている。そして、命令実行手段は、2個のレジスタから並列に読み出したデータを並列に、データアクセス手段へ転送するデータ転送手段を有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令が自身に含まれる第1の値に対応するレジスタの内容に自身に含まれる第2の値を加算した値で指定される記憶手段のアドレスへ自身に含まれる第3の値に対応するレジスタのデータを転送する命令であり、且つ第2の命令が自身に含まれる第1の値に対応するレジスタの内容に自身に含まれる第4の値を加算した値で指定される記憶手段のアドレスへ自身に含まれる第5の値に対応するレジスタのデータを転送する命令である第1の条件と、第1の命令により指定されるデータのデータ長が第2の命令に含まれる第4の値と第1の命令に含まれる第2の値との差に等しい第2の条件とが成立するか否かを判定する判定手段が備えられている。
【0019】
本発明のデータ処理装置の第 11の発明は、第1の命令としては加算命令または減算命令の内の少なくとも一つの命令を、第2の命令としては少なくとも命令コードで指定される即値の加算命令または減算命令を対象としている。そして、命令実行手段は、少なくとも加算または減算の内の一つを含む第1の演算と、少なくとも命令コードで指定される即値の加算または減算の内の一つを含む第2の演算との複合演算を実行する複合演算手段を有し、複合演算手段は、上位mビットが2入力で、下位nビットが3入力の(m+n)ビット加算器(m、nは1以上の自然数 ) を備え、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令または第2の命令の内の一方が複合演算手段で実行可能な第1の演算を実行する第1の条件と、第1の命令または第2の命令の内の他方が複合演算手段で実行可能な第2の演算として実行可能な、自身に含まれるnビット以下またはnビットより小さい即値の加算または減算を行なう命令であり、第2の演算を実行する命令であり、且つ第1の命令の演算結果を第2の命令が参照する第2の条件が成立するか否かを判定する判定手段を備えている。
【0020】
本発明のデータ処理装置の第 12の発明は、第1の命令としては加算命令を、第2の命令としてはインクリメント命令を対象としている。そして、命令実行手段は、第1の演算としての加算と、第2の演算としてのインクリメント演算との複合演算を実行する複合演算手段を有し、複合演算手段は、2つのデータ入力と1ビットキャリー入力とを有する2入力加算器を備え、第2の演算であるインクリメント演算はキャリー入力を制御することにより実現されるように構成されており、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令または第2の命令の内の一方が複合演算手段で実行可能な第1の演算を実行する第1の条件と、第1の命令または第2の命令の内の他方が複合演算手段で実行可能な第2の演算を実行する命令であり、且つ第1の命令の演算結果を第2の命令が参照する第2の条件が成立するか否かを判定する判定手段が備えられている。
【0021】
本発明のデータ処理装置の第 13の発明は、第1の命令としては減算命令を、第2の命令としてはデクリメント命令を対象としている。そして、命令実行手段は、第1の演算としての減算と、第2の演算としてのデクリメント演算との複合演算を実行する複合演算手段を有し、複合演算手段は、2つのデータ入力と1ビットキャリー入力とを有する2入力加算器を備え、第2の演算であるデクリメント演算は、キャリー入力を制御することにより実現されるように構成されており、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令または第2の命令の内の一方が複合演算手段で実行可能な第1の演算を実行する第1の条件と、第1の命令または第2の命令の内の他方が複合演算手段で実行可能な第2の演算を実行する命令であり、且つ第1の命令の演算結果を第2の命令が参照する第2の条件が成立するか否かを判定する判定手段が備えられている。
【0022】
本発明のデータ処理装置の第 14の発明は、第1, 第2の命令共にメモリからデータを読み出す命令を対象としている。そして、命令実行手段は、データアクセス手段から2データを並列に命令実行手段へ転送するデータ転送手段とを有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令がメモリからデータを読み出す命令であり、第2の命令がメモリの第1の命令により読み出されるデータに連続する領域のデータを読み出す命令である条件が成立するか否かを判定する判定手段が備えられている。
【0023】
本発明のデータ処理装置の第 15の発明は、第 14の発明において第1, 第2の命令が共にロード命令を対象としている。
【0024】
本発明のデータ処理装置の第 16の発明は、第1, 第2の命令共にメモリにデータを書き込む命令を対象としている。そして、命令実行手段は、2データを並列にデータアクセス手段へ転送するデータ転送手段を有し、命令解析手段は、第1の命令と第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、更に、第1の命令がメモリへデータを書き込む命令であり、第2の命令がメモリの第1の命令により書き込まれるデータに連続する領域にデータを書き込む命令である条件が成立するか否かを判定する判定手段が備えられている。
【0025】
本発明のデータ処理装置の第 17の発明は、第 16の発明において第1, 第2の命令が共にストア命令を対象としている。
【0026】
更に、本発明のデータ処理装置の第 18の発明は、第1乃至第 14 及び第 16の発明において、命令解析手段が、第1の命令と第1の命令に引き続く命令以降の第2の命令とを並列に解析するように構成されている。
【0027】
また本発明のデータ処理装置の第 19の発明は、第5,第7,第8及び第 14の発明において、データアクセス手段は、記憶手段から以前に取り込んだデータを記憶するデータキャッシュを含む。
【0028】
また本発明のデータ処理装置の第 20の発明は、第5,第7,第8及び第 14の発明において、データアクセス手段は、記憶手段から以前に取り込んだデータを記憶するバッファ手段を含む。
【0029】
また本発明のデータ処理装置の第 21の発明は、第6,第9,第 10 及び第 16の発明において、データアクセス手段は、記憶手段に書込むべきデータを一時的に保持するバッファ手段を含む。
また本発明のデータ処理装置の第 22 の発明は、第1の発明において、命令実行手段は、シフト命令の全シフト量のシフト処理を実行可能な第2のシフタを備え、第1及び第2の命令を並列に実行する際に、第1の命令のシフト処理を第2のシフタでも実行すべくなしてある。
また本発明のデータ処理装置の第 23 の発明は、第5または第6の発明において、命令実行手段は、第1及び第2の命令を並列に実行する際に、並列に転送される2データのサイズの総和に対応した値だけ、スタックポインタの更新を行なうべくなしてある。
また本発明のデータ処理装置の第 24 の発明は、第 13 の発明において、第1の命令は第2の演算としてデクリメントを行なう命令を含み、第2の命令は第1の演算として比較のための減算を行なう比較命令を含む。
【0030】
【作用】
本発明のデータ処理装置の第1の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令のシフト処理と第2の命令の演算処理との2つの複合演算を複合演算手段に実行させることにより、第1及び第2の命令が並列に実行される。
【0031】
本発明のデータ処理装置の第2の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令の演算処理と第2の命令のシフト処理との2つの複合演算を複合演算手段に実行させることにより、第1及び第2の命令が並列に実行される。
【0032】
本発明のデータ処理装置の第3の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令の演算処理を第1の演算手段及び第2の演算手段に並列に実行させ、第1の命令のデータ転送処理及び第2の命令のデータ転送処理をデータ転送手段に並列にそれぞれ実行させることにより、第1及び第2の命令が並列に実行される。
【0033】
本発明のデータ処理装置の第4の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段がデータアクセス手段から第1の命令に含まれる値に対応するレジスタへの第1の命令のデータ転送処理と、データアクセス手段から第2の命令に含まれる値に対応するレジスタへの第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0034】
本発明のデータ処理装置の第5の発明では、判定手段が条件が成立すると判定した場合に、命令実行手段がデータアクセス手段から第1の命令に含まれる値に対応するレジスタへの第1の命令のデータ転送処理と、データアクセス手段から第2の命令に含まれる値に対応するレジスタへの第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0035】
本発明のデータ処理装置の第6の発明では、判定手段が条件が成立すると判定した場合に、命令実行手段が第1の命令に含まれる値に対応するレジスタからデータアクセス手段への第1の命令のデータ転送処理と、第2の命令に含まれる値に対応するレジスタからデータアクセス手段への第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0036】
本発明のデータ処理装置の第7の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令のデータ転送処理と第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0037】
本発明のデータ処理装置の第8の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令のデータ転送処理と第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0038】
本発明のデータ処理装置の第9の発明では、判定手段が条件が成立すると判定した場合に、命令実行手段が第2の値に対応するレジスタからデータアクセス手段への第1の命令のデータ転送処理と、第4の値に対応するレジスタからデータアクセス手段への第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0039】
本発明のデータ処理装置の第10の発明では、判定手段が条件が成立すると判定した場合に、命令実行手段が第3の値に対応するレジスタからデータアクセス手段への第1の命令のデータ転送処理と、第5の値に対応するレジスタからデータアクセス手段への第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0042】
本発明のデータ処理装置の第 11の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令の処理と第2の命令の処理との2つの複合演算を複合演算手段に実行させることにより、第1及び第2の命令が並列に実行される。
【0043】
本発明のデータ処理装置の第 12の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令の処理と第2の命令の処理との2つの複合演算を複合演算手段に実行させることにより、第1及び第2の命令が並列に実行される。
【0044】
本発明のデータ処理装置の第 13の発明では、判定手段が第1及び第2の条件が共に成立すると判定した場合に、命令実行手段が第1の命令の処理と第2の命令の処理との2つの複合演算を複合演算手段に実行させることにより、第1及び第2の命令が並列に実行される。
【0045】
本発明のデータ処理装置の第 14 の発明及び第 15の発明では、判定手段が条件が成立すると判定した場合に、命令実行手段がデータアクセス手段から命令実行手段への第1の命令のデータ転送処理と、データアクセス手段から命令実行手段への第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0046】
本発明のデータ処理装置の第 16 の発明及び第 17の発明では、判定手段が条件が成立すると判定した場合に、命令実行手段がデータアクセス手段への第1の命令のデータ転送処理と、データアクセス手段への第2の命令のデータ転送処理とをデータ転送手段に並列に実行させることにより、第1及び第2の命令が並列に実行される。
【0047】
本発明の第 18の発明では、第1乃至第 14 及び第 16の発明において、第1の命令と第1の命令に引き続く命令以降の第2の命令とが並列に解析される。
本発明の第 19 の発明では、第5,7,8及び14の発明において、データアクセス手段は、記憶手段から以前に取り込んだデータをデータキャッシュに記憶する。
本発明の第 20 の発明では、第5,7,8及び14の発明において、データアクセス手段は、記憶手段から以前に取り込んだデータをバッファ手段に一時的に保持する。
本発明の第 21 の発明では、第6,9,10及び16の発明において、データアクセス手段は、記憶手段に書込むべきデータをバッファ手段に一時的に保持する。
本発明の第 22 の発明では、第1の発明において、命令実行手段は、シフト命令の全シフト量のシフト処理を実行可能な第2のシフタを備えており、第1及び第2の命令を並列に実行する際に、第1の命令のシフト処理を第2のシフタでも実行する。
本発明の第 23 の発明では、第5または6の発明において、命令実行手段は、第1及び第2の命令を並列に実行する際に、並列に転送される2データのサイズの総和に対応した値だけ、スタックポインタの更新を行なう。
本発明の第 24 の発明では、第 13 の発明において、第1の命令は第2の演算としてデクリメントを行なう命令を実行することが可能であり、第2の命令は第1の演算として比較のための減算を行なう比較命令を実行することが可能である。
【0048】
【実施例】
以下、本発明をその実施例を示す図面に基づいて詳述する。
【0049】
〔実施例1〕
(1) 「本発明のデータ処理装置を用いたシステムの構成」
図1のブロック図に本発明のデータ処理装置1を使用したシステム構成例を示す。本発明のデータ処理装置1 は32ビットのアドレスバス2と32ビットのデータバス3とを有し、これらのバス2,3により主記憶(DRAM)5,ROM 6,周辺装置7をアクセスする。各ユーザが固有に必要とするDRAMコントローラ, DMAコントローラ, タイマ等の制御回路はASIC4に内蔵されている。従って、本発明のデータ処理装置1にはこれらの回路は内蔵されていない。
【0050】
主記憶5へのアクセスは、1回のアクセスに際してアドレスを1つ出力して32ビット以下のデータをアクセスする単一転送と、1回のアクセスに際してアドレスを1つ出力して4つの32ビットデータ (16バイト) をアクセスするバースト転送とが可能である。
【0051】
(2) 「本発明のデータ処理装置の命令」
(2.1) 「命令フォーマット」
本発明のデータ処理装置の命令は16ビット単位で可変長となっており、奇数バイト長の命令はない。
【0052】
本発明のデータ処理装置1では高頻度に使用される命令を短いフォーマットとするため、特に工夫された命令フォーマット体系を有する。たとえば、2オペランド命令に対しては基本的に「4バイト+拡張部」の構成を有し、全てのアドレッシングモードが利用可能な一般形フォーマットと、頻度の高い命令とアドレッシングモードとのみを使用可能な短縮形フォーマットの2つのフォーマットを有する。
【0053】
図3乃至図11は本発明のデータ処理装置の命令フォーマットを示す模式図である。これらの模式図中に現われる記号の意味は以下の通りである。
【0054】
−:オペレーションコードが入る部分
#:リテラルまたは即値の入る部分
Ea:8ビットの一般形のアドレッシングモードでオペランドを指定する部分Sh:6ビットの短縮形のアドレッシングモードでオペランドを指定する部分Rn: レジスタファイル上のオペランドをレジスタ番号で指定する部分
【0055】
命令データは、図2に示すように右側が LSB側で、かつ高いアドレスになっている。アドレスNとアドレスN+1との2バイトを見た後でないと命令フォーマットが判別できないようになっているが、これは命令が必ず16ビット(ハーフワード)単位でフェッチ、デコードされることを前提としたためである。
【0056】
本発明のデータ処理装置1の命令では、いずれのフォーマットの場合も、各オペランドのEaまたはShの拡張部は必ずそのEaまたはShの基本部を含む16ビット(ハーフワード)の直後に置かれる。これは、命令により暗黙に指定される即値データ及び命令固有の拡張部に優先する。従って、4バイト以上の命令では、Eaの拡張部によって命令のオペレーションコードが分断される場合がある。
【0057】
また、後述するように、多段間接モードによってEaの拡張部に更に拡張部が付加される場合にも次の命令オペレーションコードよりもそちらの方が優先される。なお、本発明のデータ処理装置1の命令フォーマットに関しては、特開昭64−91225号公報、あるいはU.S.P. No. 5,029,069に詳細に開示されている。
【0058】
(2.1.1) 「短縮形2オペランド命令」
図3乃至図6は2オペランド命令の短縮形フォーマットを示す模式図である。
【0059】
図3はメモリ−レジスタ間演算命令のフォーマットを示す模式図である。このフォーマットにはソースオペランド側がメモリとなるL−formatと、デスティネーションオペランド側がメモリとなるS−formatとがある。
【0060】
L−formatでは、Shはソースオペランドの指定フィールドを、Rnはデスティネーションオペランドのレジスタの指定フィールドを、RRはShのオペランドサイズの指定をそれぞれ表す。レジスタ上に置かれたデスティネーションオペランドのサイズは、32ビットに固定されている。レジスタ側とメモリ側とのサイズが異なり、且つソース側のサイズが小さい場合に符号拡張が行なわれる。また、一部の命令(加算命令, 減算命令)では、ソースのオペランドサイズもワードに固定されている。この場合、RRのフィールドはオペレーションコードとなっている。
【0061】
S−formatでは、Shはデスティネーションオペランドの指定フィールドを、Rnはソースオペランドのレジスタ指定フィールドを、RRはShのオペランドサイズの指定フィールドをそれぞれ表す。レジスタ上に置かれたソースオペランドのサイズは32ビットに固定されている。レジスタ側とメモリ側とのサイズが異なり、且つソース側のサイズが大きい場合は、オーバフローした部分の切り捨てとオーバフローチェックが行なわれる。
【0062】
図4はレジスタ−レジスタ間演算命令のフォーマット(R−format)を示す模式図である。このフォーマットでは、Rnはデスティネーションレジスタの指定フィールドを、Rmはソースレジスタの指定フィールドをそれぞれ示している。オペランドサイズは32ビットのみである。
【0063】
図5はリテラル−メモリ間演算命令のフォーマット(Q−format)を示す模式図である。このフォーマットでは、MMはディスティネーションオペランドサイズの指定フィールドを、#はリテラルによるソースオペランドの指定フィールドを、Shはデスティネーションオペランドの指定フィールドをそれぞれ示している。
【0064】
図6は即値−メモリ間演算命令のフォーマット(I−format)の模式図である。このフォーマットでは、MMはオペランドサイズの指定フィールド(ソース,ディスティネーションで共通)を、Shはデスティネーションオペランドの指定フィールドをそれぞれ示している。I−formatの即値のサイズはデスティネーション側のオペランドのサイズと共通であって8, 16, 32ビットとなり、ゼロ拡張、符号拡張は行なわれない。
【0065】
(2.1.2) 「一般形1オペランド命令」
図7は1オペランド命令の一般形フォーマット(G1−format) を示す模式図である。このフォーマットでは、MMはオペランドサイズの指定フィールドを表している。一部のG1−format 命令では、Eaの拡張部以外にも拡張部を有する。また、MMを使用しない命令もある。
【0066】
(2.1.3) 「一般形2オペランド命令」
図8乃至図10は2オペランド命令の一般形フォーマットを示す模式図である。このフォーマットに含まれるのは、8ビットで指定される一般形アドレッシングモードのオペランドが最大2つ存在する命令である。オペランドの総数自体は3つ以上になる場合がある。
【0067】
図8は第1オペランドがメモリ読み出しを必要とする命令のフォーマット(G−format)を示す模式図である。このフォーマットでは、 EaMはデスティネーションオペランドの指定フィールドを、MMはデスティネーションオペランドサイズの指定フィールドを、 EaRはソースオペランド指定フィールドを、RRはソースオペランドサイズの指定フィールドをそれぞれ表している。なお、一部のG−format命令では、EaM, EaRの拡張部以外にも拡張部を有する。
【0068】
図9は第1オペランドが8ビット即値の命令のフォーマット(E−format)を示す模式図である。このフォーマットでは、 EaMはデスティネーションオペランドの指定フィールドを、MMはデスティネーションオペランドサイズの指定フィールドを、#はソースオペランド値をそれぞれ表している。
【0069】
E−formatとI−formatとは機能的には似かよっているが、E−formatはあくまでも2オペランド一般形(G−format)からの派生形であり、ソースオペランドのサイズが8ビット固定,デスティネーションオペランドのサイズが8/16/32ビットからの選択になっている。即ち、異種サイズ間の演算を前提としてデスティネーションオペランドのサイズに合わせて8ビットのソースオペランドがゼロ拡張または符号拡張される。
【0070】
図10は第1オペランドがアドレス計算のみの命令のフォーマット(GA−format) を示す模式図である。このフォーマットでは、 EaWはデスティネーションオペランドの指定フィールドを、WWはデスティネーションオペランドサイズの指定フィールドを、EaA はソースオペランドの指定フィールドをそれぞれ表している。なお、ソースオペランドとしては実効アドレスの計算結果自体が使用される。
【0071】
(2.1.4) 「その他の命令」
上述のフォーマット以外にもいくつかのフォーマットがある。図11の模式図には、16ビットすべてがオペレーションコードになっている命令、あるいは16ビットのオペレーションコードフィールドの一部が即値に割り当てられている命令もある。また、一部の命令では、命令固有の拡張を有する場合もある。
【0072】
(2.2) 「アドレッシングモード」
本発明のデータ処理装置1の命令のアドレッシングモード指定方法には、レジスタを含めて6ビットで指定する短縮形と、8ビットで指定する一般形とがある。
【0073】
図12乃至図22に示すフォーマットの模式図中で使われている記号の意味は以下の如くである。
【0074】
Rn:レジスタ指定
(Sh):6 ビットの短縮形アドレッシングモードでの指定方法
(Ea):8ビットの一般形アドレッシングモードでの指定方法
なお、各フォーマットの模式図において点線にて囲まれている部分は拡張部を示す。
【0075】
(2.2.1) 「基本アドレッシングモード」
本発明のデータ処理装置1の命令は種々のアドレッシングモードをサポートする。それらの内、本発明のデータ処理装置1でサポートする基本アドレッシングモードには、レジスタ直接モード, レジスタ間接モード, レジスタ相対間接モード, 即値モード, 絶対モード, PC相対間接モード, スタックポップモード, スタックプッシュモードがある。
【0076】
レジスタ直接モードは、レジスタの内容をそのままオペランドとするアドレッシングモードである。フォーマットの模式図を図12に示す。図中、Rnは汎用レジスタの番号を示す。
【0077】
レジスタ間接モードは、汎用レジスタの内容をアドレスとするメモリの内容をオペランドとするアドレッシングモードである。フォーマットの模式図を図13に示す。図中、Rnは汎用レジスタの番号を示す。
【0078】
レジスタ相対間接モードは、ディスプレースメント値が16ビットであるか32ビットであるかにより2種類に分かれる。いずれも、汎用レジスタの内容に16ビットまたは32ビットのディスプレースメント値を加えた値をアドレスとするメモリの内容をオペランドとするアドレッシングモードである。フォーマットの模式図を図14に示す。図中、Rnは汎用レジスタの番号を示す。disp:16とdisp:32とは、それぞれ16ビットのディスプレースメント値, 32ビットのディスプレースメント値を示す。ディスプレースメント値は符号付きとして扱われる。
【0079】
即値モードは、命令コード中で指定されるビットパターンをそのまま2進数と見なしてオペランドとするアドレッシングモードである。フォーマットの模式図を図15に示す。図中、 imm_dataは即値を示す。 imm_dataのサイズは、オペランドサイズとして命令中で指定される。
【0080】
絶対モードは、アドレス値が16ビットで示されるか32ビットで示されるかにより2種類に分かれる。いずれも、命令コード中で指定される16ビットまたは32ビットのビットパターンをアドレスとしたメモリの内容をオペランドとするアドレッシングモードである。フォーマットの模式図を図16に示す。図中、abs:16とabs:32とは、それぞれ16ビット, 32ビットのアドレス値を示す。abs:16にてアドレスが示される場合は指定されたアドレス値は32ビットに符号拡張される。
【0081】
PC相対間接モードは、ディスプレースメント値が16ビットであるか32ビットであるかにより2種類に分かれる。いずれも、プログラムカウンタの内容に16ビットまたは32ビットのディスプレースメント値を加えた値をアドレスとするメモリの内容をオペランドとするアドレッシングモードである。フォーマットの模式図を図17に示す。図中、disp:16 とdisp:32 とは、それぞれ16ビットのディスプレースメント値, 32ビットのディスプレースメント値を示す。ディスプレースメント値は符号付きとして扱われる。PC相対間接モードにおいて参照されるプログラムカウンタの値は、そのオペランドを含む命令の先頭アドレスである。多段間接アドレッシングモードにおいてプログラムカウンタの値が参照される場合にも、同様に命令の先頭のアドレスがPC相対モードの基準値として使用される。
【0082】
スタックポップモードはスタックポインタ(SP, R15) の内容をアドレスとするメモリの内容をオペランドとするアドレッシングモードである。オペランドアクセス後にSPがオペランドサイズだけインクリメントされる。例えば、32ビットデータが扱われる場合には、オペランドアクセス後にSPが+4だけ更新される。B(バイト),H(ハーフワード) のサイズのオペランドに対するスタックポップモードの指定も可能であり、それぞれSPが+1, +2だけ更新される。フォーマットの模式図を図18に示す。
【0083】
スタックプッシュモードはSPの内容をオペランドサイズだけデクリメントした内容をアドレスとするメモリの内容をオペランドとするアドレッシングモードである。スタックプッシュモードではオペランドアクセス前にSPがデクリメントされる。例えば、32ビットデータが扱われる場合には、オペランドアクセス前にSPが−4だけ更新される。B, H Oのサイズのオペランドに対するスタックプッシュモードの指定も可能であり、それぞれSPが−1, −2だけ更新される。フォーマットの模式図を図19に示す。
【0084】
(2.2.2) 「多段間接アドレッシングモード」
複雑なアドレッシングも、基本的には加算と間接参照の組み合わせに分解することが可能である。従って、加算と間接参照のオペレーションをアドレッシングのプリミティブとして与えておき、それらを任意に組み合わせることができれば、どんな複雑なアドレッシングモードをも実現することが出来る。本発明のデータ処理装置1の命令の多段間接アドレッシングモードは上述のような考え方に基づいたアドレッシングモードである。
【0085】
多段間接アドレッシングモードを指定する場合、基本アドレッシングモード指定フィールドではレジスタベース多段間接モード, PCベース多段間接モード, 絶対ベース多段間接モードの3種類の指定方法の内のいずれか1つを指定する。
【0086】
レジスタベース多段間接モードは、汎用レジスタの値を、拡張する多段間接アドレッシングのベース値とするアドレッシングモードである。フォーマットの模式図を図20に示す。図中、Rnは汎用レジスタの番号を示す。
【0087】
PCベース多段間接モードは、プログラムカウンタの値を拡張する多段間接アドレッシングのベース値とするアドレッシングモードである。フォーマットの模式図を図21に示す。
【0088】
絶対ベース多段間接モードは、ゼロを拡張する多段間接アドレッシングのベース値とするアドレッシングモードである。フォーマットの模式図を図22に示す。
【0089】
拡張される多段間接モード指定フィールドは16ビットを単位としており、これが任意回反復して付加される。1段の多段間接モードにより、ディスプレースメントの加算, インデクスレジスタのスケーリング(×1, ×2, ×4, ×8)と加算, メモリの間接参照を行なう。多段間接モードのフォーマットの模式図を図23に示す。各フィールドは以下に示す意味を有する。
【0090】
E=0 :多段間接モード継続
E=1 :アドレス計算終了
tmp ==> address of operand
I=0 :メモリ間接参照なし
tmp + disp + Rx * Scale ==> tmp
I=1 :メモリ間接参照あり
mem[tmp + disp + Rx * Scale] ==> tmp
【0091】
M=0 : <Rx> をインデクスとして使用
M=1 :特殊なインデクス
<Rx>=0 インデクス値を加算しない (Rx=0)
<Rx>=1 プログラムカウンタをインデクス値として使用 (Rx=PC)
<Rx>=2〜 reserved
【0092】
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)
【0093】
プログラムカウンタに対して×2, ×4, ×8のスケーリングを行なった場合には、その段の処理終了後の中間値(tmp) として不定値が入る。この多段間接アドレッシングモードによって得られる実効アドレスは予測できない値となるが、例外は発生しない。プログラムカウンタに対するスケーリングの指定は禁じられている。
【0094】
多段間接アドレッシングモードによる命令フォーマットのバリエーションを図24及び図25の模式図に示す。図24は多段間接アドレッシングモードが継続するか終了するかのバリエーションを、図25はディスプレースメントのサイズのバリエーションをそれぞれ示す。
【0095】
任意段数の多段間接アドレッシングモードが利用できれば、コンパイラの中で段数による場合分けが不要になるので、コンパイラの負担が軽減されるというメリットがある。多段の間接参照の頻度が非常に少ないとしても、コンパイラとしては必ず正しいコードを発生できなければならないからである。このため、フォーマット上では任意の段数が可能になっている。
【0096】
(3) 「本発明のデータ処理装置の機能ブロック」
【0097】
(3.1) 「機能ブロックの構成」
図26は本発明のデータ処理装置1の構成例を示すブロック図である。本発明のデータ処理装置1の内部を機能的に大きく分けると、命令フェッチ部11,命令デコード部12, ROM部13, アドレス生成部14, PC生成部15, 整数演算部16, オペランドアクセス部17, バスインタフェイス部18に分かれる。なお、参照符号101 〜110 はデータ及びアドレス等を転送するための内部バスである。バスインタフェイス部18は32ビットのアドレスバス2,32 ビットのデータバス3及び各種制御信号により外部と結合している。
【0098】
命令フェッチ部11は内蔵命令キャッシュあるいは外部のメモリから命令をフェッチする。命令デコード部12は命令フェッチ部11からIIバス101 を経由して転送された命令をデコードする。 ROM部13はマイクロプログラムに従って整数演算を制御する。PC生成部15は命令のPC値を計算する。アドレス生成部14はオペランドのアドレスを計算する。オペランドアクセス部17は内蔵データキャッシュあるいは外部のメモリからのオペランドのフェッチ及び外部のメモリへのオペランドのストアを行なう。
【0099】
命令は命令フェッチ部11により取り込まれ、命令デコード部12でデコードされ、 ROM部13のマイクロプログラム制御により整数演算部16で実行される。命令のPC値の計算, オペランドのアドレス計算, オペランドのアクセスは整数演算と独立のブロックでハードワイヤード制御により行なわれる。
命令のアドレスはJAバス105 で各部から命令フェッチ部11へ転送される。オペランドアドレスはAAバス106 で各部からオペランドフェッチ部へ転送される。整数演算部16とオペランドアクセス部17との間のオペランドの転送は64ビット幅のDDバス107 により行なわれる。
【0100】
(3.2) 「バスインタフェイス部」
バスインタフェイス部18は命令フェッチ部11あるいはオペランドアクセス部17の要求に従ってバスサイクルを発行して外部のメモリをアクセスする。本発明のデータ処理装置1におけるメモリアクセスはクロック同期のプロトコルで行なわれる。1回のバスサイクルには最小2クロックサイクルが必要である。リードサイクル及びライトサイクルには、1回のバス転送で4バイト境界内の命令コードあるいはデータを転送する単一転送と、4回のバス転送で16バイト境界内の命令コードあるいはデータを一度に転送するブロック転送とがある。更にブロック転送にはアドレスを1回出力して命令コードあるいはデータを4回連続転送するバーストモードと、アドレスを4回出力して命令コードあるいはデータを4回連続転送するクワッドムーブモードとがある。
【0101】
各バスサイクルの制御, 各種信号の入出力はバスインタフェイス部18でハードワイヤード制御により行なわれる。バスインタフェイス部18には、データや命令のブロック転送時にアドレスをインクリメントするための回路が備えられている。また、本発明のデータ処理装置1は、各エントリが8バイトの2エントリのストアバッファを備えているが、バスインタフェイス部18にはこのストアバッファのアドレス保持部が備えられている。
【0102】
バスインタフェイス部18は命令フェッチに際しては、命令フェッチ部11からIAバス108 を経由して入力されたアドレスを外部のアドレスバス2へ出力し、データバス3から命令コードをフェッチし、BDバス110 を経由して命令フェッチ部11へ転送する。また、バスインタフェイス部18はデータリードに際しては、オペランドアクセス部17からOAバス109 を経由して入力されたアドレスを外部のアドレスバス2へ出力し、データバス3からデータをフェッチし、BDバス110 を経由してオペランドアクセス部17へ転送する。更に、バスインタフェイス部18はデータライトに際しては、オペランドアクセス部17からOAバス109 を経由して入力されたアドレスを外部のアドレスバス2へ出力し、BDバス110 を経由して入力されたデータをデータバス3へ出力する。ブロック転送のクワッドムーブモードで命令コードあるいはデータを転送する際には、命令フェッチ部11あるいはオペランドアクセス部17からは1つのアドレスのみが出力され、残り3つのアドレスはバスインタフェイス部18内部で下位ビットをラップアラウンドすることにより生成して出力する。
【0103】
バスインタフェイス部18はメモリアクセスの他、外部割り込みの受け付け、バスアービトレーションの制御も行なう。本発明のデータ処理装置1以外の外部デバイスがバスマスタになっていて本発明のデータ処理装置1がバススヌープ動作の実行中に外部デバイスがデータライトまたは無効化サイクルを実行した際場合には、バスインタフェイス部18はアドレスバス2上へ出力されたアドレスを取り込み、IAバス108 を経由して命令フェッチ部11へ、OAバス109 を経由してオペランドアクセス部17へそれぞれ転送する。
【0104】
(3.3) 「命令フェッチ部」
図27は命令フェッチ部11の構成例を示すブロック図である。命令フェッチ部11には4Kバイトの内蔵命令キャッシュ25、2つの16バイトの命令キュー21, 22、フェッチアドレスを保持, 生成する命令アドレスレジスタ (IAレジスタ) 23、アドレスデコード機構24とそれらの制御部等が備えられている。命令フェッチ部11は命令キャッシュ25あるいは外部のメモリから命令をフェッチし、命令キュー21, 22及びIIバス101 を経由して命令コードを命令デコード部12へ転送する。
【0105】
バスインタフェイス部18と命令キャッシュ25とは32ビットのアドレスを転送するためのIAバス108 と32ビットのデータを転送するためのBDバス110 とで結合されている。命令キャッシュ25と命令キュー21, 22とは64ビットのIDバス111 で結合されている。
【0106】
バスインタフェイス部18から出力された命令コードはBDバス110 を経由して命令キャッシュ25へ転送される。命令キュー21, 22から出力された命令コードはIIバス101 を経由して命令デコード部12へ転送される。
【0107】
命令キューは、条件分岐命令の分岐/非分岐両方向の命令を保持するために参照符号21, 22で示されている2つが備えられている。2つの命令キュー21, 22の内の一方は条件分岐命令に連続する命令コードをプリフェッチしてキューイングし、他方は条件分岐命令の分岐先の命令コードをプリフェッチしてキューイングする。
【0108】
IAレジスタ23は、2つの命令キュー21, 22のフェッチアドレスを保持するための2つのレジスタと、アドレスをインクリメントするための専用カウンタとを含んでいる。リセット時を含みジャンプが発生した場合には、ジャンプ先アドレスがアドレス生成部14, PC生成部15あるいは整数演算部16からJAバス105 を介してIAレジスタ23へ転送される。また、ジャンプ先アドレスの一部は、命令キュー21, 22にも送られ、入出力ポインタの初期化に用いられる。ジャンプ先以外の命令アドレスは、IAレジスタの内部のカウンタで計算される。命令のアドレスはIAレジスタからIAバス108 を経由してアドレスデコード機構24及び命令キャッシュ25へ出力される。
【0109】
アドレスデコード機構24にはいくつかの制御レジスタを有しており、命令アドレスが I/O領域に入るか否か、非キャッシュ領域に入るか否か等のチェックを行なう。
【0110】
命令キャッシュ25は16byte×256entry構成のダイレクトマップ制御で動作する。命令キャッシュ25はIAレジスタ23から転送されたアドレスの下位12ビットに従ってキャッシュアドレスタグと命令コードとを出力する。キャッシュアドレスタグはアドレスの上位20ビットと比較され、一致すれば命令キャッシュ25はヒットする。この場合、IDバス111 を経由して命令コードが命令キュー21, 22へ転送される。命令キュー21, 22が空であれば、命令コードは命令キュー21, 22をバイパスして同一タイミングでIIバス12を経由して命令デコード部12へも転送される。命令キャッシュ25がミスした場合はアドレスデコード機構24からIAバス108 を経由してバスインタフェイス部18へ命令アドレスが出力されることにより、外部のメモリがブロック転送でアクセスされて命令コードがフェッチされ、命令キャッシュ25のエントリが更新される。
【0111】
また、本発明のデータ処理装置1がバススヌープ動作の実行中においては、バスインタフェイス部18が外部のアドレスバス2上のアドレスをモニタしており、アドレスをIAバス108 を経由して命令キャッシュ25へ転送する。バスインタフェイス部18は本発明のデータ処理装置1自身がライト動作を行なったメモリのアドレスも命令キャッシュ25へ転送する。
【0112】
(3.4) 「命令デコード部」
本発明のデータ処理装置1における命令は図28の模式図に示すように2バイト単位の可変長命令であり、基本的には「2バイトの命令基本部+0乃至4バイトのアドレッシング修飾部」を1乃至3回反復することにより命令が構成されている。
【0113】
命令基本部にはオペレーションコード部とアドレッシングモード指定部とが含まれる。インデックスアドレッシングまたはメモリ間接アドレッシングが必要な場合にはアドレッシング修飾部の代わりに「2バイトの多段間接モード指定部+0乃至4バイトのアドレッシング修飾部」が必要なだけ拡張される。また、命令により2または4バイトの命令固有の拡張部が最後に付加される場合もある。
【0114】
本発明のデータ処理装置1では図28に示した可変長フォーマットの命令を効率よく処理するために、命令デコード段階で1つの命令を1つまたは複数の処理単位 (以下、ステップコードと言う) に分解する。基本的には「2バイトの命令基本部+0乃至4バイトのアドレッシング修飾部」または「多段間接モード指定部+アドレッシング修飾部」のデコード結果が1つのステップコードになり、命令デコーダは1クロックに1つのステップコードを出力する。しかし、第1オペランドにアドレッシング修飾部がない場合あるいは先頭の命令基本部にオペランド指定子がない命令では1クロックに2つの命令基本部 (32ビット長) がデコードされる。また、本発明のデータ処理装置1では一部の命令を先行する命令と並列にデコードし、2命令を同時に処理することもできる。
【0115】
本発明のデータ処理装置1の命令デコード部12のブロック図を図29に示す。命令デコード部12は、分岐予測部33, Dステージデコーダ31, 拡張データ処理部32, Aステージデコーダ34及びサブコード転送部35からなる。
【0116】
分岐予測部33は1ビット×1Kエントリの条件分岐命令の分岐履歴を保持している。条件分岐命令の直前に実行された命令のPC値の下位アドレスに対応づけて分岐履歴が登録され、条件分岐命令の直前にデコードした命令のPC値の下位アドレスに従って分岐予測ビットを出力する。その際に参照及び更新に用いられるPC値はPC生成部15から転送される。
【0117】
Dステージデコーダ31は、IIバス101 を経由して転送される最大8バイトの命令コードと1ビットの分岐予測ビットとをデコードする。本発明のデータ処理装置1は2つの命令(先行命令と後続命令)を並列にデコード可能であり、先行命令の中間デコード結果(メインDコード)がAステージデコーダ34へ、後続命令のデコード結果(サブDコード)がサブコード転送部35へそれぞれ転送される。また、先行命令または後続命令に関するアドレス計算情報(Aコード)がアドレス生成部14へ転送される。その他、処理コード長等のPC計算に関係する情報, 命令実行に先立って分岐処理を行なう先行分岐に関する情報がPC生成部102 に、命令キュー21, 22の出力ポインタ制御または先行分岐に関する情報が命令フェッチ部11へ出力される。命令デコードの詳細については、後述する。
【0118】
拡張データ処理部32は、Dステージデコーダ31でのデコード結果に従って、ディスプレースメント, 即値等のアドレッシング修飾部を命令コードから取り出し、DISPバス102 を経由してアドレス生成部14やPC生成部15へ転送する。
Aステージデコーダ34はDステージデコーダ31から出力される命令の中間デコード結果であるメインDコードを詳細にデコードしてマイクロプログラムのエントリ番地, パラメータ等を ROM部13へ出力する。Aステージデコーダ34ではLDM やSTM 等の複数のオペランドをレジスタとメモリとの間で転送する命令を1度に8バイト以下のデータを転送する複数のメモリ−レジスタ間転送命令 (ステップコード) に分解する。この際、Aステージデコーダ34はアドレス生成部14にAAコードを出力し、分解したオペランドのアドレス計算を制御する。
【0119】
サブコード転送部35はDステージデコーダ31から出力される後続命令のデコード結果であるサブDコードをAステージデコーダ34でデコードされる命令と同期させて ROM部13へ転送する。
また、Aステージデコーダ34とサブコード転送部35とからはオペランドが書き込まれるべきレジスタの番号がアドレス生成部14へ転送され、書き込みが終了していないレジスタ値を後続命令がオペランドアドレス計算に使用して RAWデータハザード(Read−after−write data hazard)を起こさないようにパイプラインインタロック機構により制御する。
【0120】
(3.5) 「PC生成部」
図30はPC生成部15の構成例を示すブロック図である。PC生成部15は、命令デコード段階での先行ジャンプ先アドレスを計算するジャンプ先アドレス生成部41, デコードする命令のPC値を計算するPC計算部42. パイプライン中で処理される命令の流れに同期してPC値を転送するPC転送部43, サブルーチンからのプリリターン先アドレスを管理するPCスタック44からなる。
【0121】
ジャンプ先アドレス生成部41は命令デコード段階でPC相対ジャンプまたは絶対アドレスジャンプを行なう命令をデコードした場合のジャンプ先命令のアドレスを計算する。ジャンプ先アドレス生成部41には、IIバス101 と DPCバス112 とに結合された2つの加算器があり、IIバス169 上の分岐変位フィールドとなり得るフィールドの値と DPCバス166 から転送された命令の先頭アドレスとの加算を命令デコードと並行して行なう。また、ジャンプ先アドレス生成部41は、IIバス169 上の絶対アドレスとなり得るフィールドの切り出し及び符号拡張を行なう。デコードした命令がPC相対ジャンプを行なう命令または絶対アドレスジャンプを行なう命令であった場合、2つの加算結果と1つの符号拡張結果との内から一つの正しいジャンプ先アドレスを選択してJAバス105 へ出力する。また、命令デコードと同時に計算したジャンプ先アドレス以外のアドレスにPC相対でジャンプする実行頻度の少ない一部のジャンプ命令に対しては、命令デコードの後に新たにDISPバス102 から転送される分岐変位とPC値とを加算してジャンプ先アドレスを求め、JAバス105 へ出力する。
【0122】
PCスタック44はサブルーチンジャンプ命令からのリターン先アドレスのコピーを8エントリのスタックに保持し、サブルーチンリターン命令をデコードした場合にはリターン先アドレスをJAバス105 へ出力する。PCスタック44では、サブルーチンジャンプ命令が実行された場合にはリターン先アドレスがS1バス104 から転送されてプッシュされる。タスクスイッチによりスタックが切り替えられたり、8レベル以上のサブルーチンのネスティング等が発生するとPCスタック44からJAバス105 へ出力されるリターン先アドレスは正しいリターン先アドレスではなくなる。このため、サブルーチンリターン命令がパイプラインの実行段階に到達した時点で、プリリターンアドレスがPCスタック44から再びS1バス104 へ読み出され、メモリから読み出された正しいリターン先アドレスと比較される。
【0123】
PC計算部42は、加算器と複数の作業用レジスタ(TPC, ANPC, DPC)46とからなり、命令デコード部12でデコードする命令のPC値を計算する。PC値の計算はそのサイクルにデコードした命令の先頭アドレスに命令デコード部12で消費した処理コード長を加算することにより行なわれる。ジャンプ命令またはEIT により命令実行のシーケンスが変更された場合はJAバス105 からジャンプ先命令のアドレスが転送される。PC計算部45の計算結果は命令のデコード結果と共にパイプラインの流れに同期してPC転送部43へ出力される。また、作業用レジスタに保持されている次にデコードされるべき命令のPC値がIXバス103 を経由してアドレス生成部14へ転送され、ジャンプ先アドレスの計算のために DPCバス112 を経由してジャンプ先アドレス生成部41へ転送される。
【0124】
PC転送部43には、本発明のデータ処理装置1の各パイプラインステージに対応する複数のPC保持用レジスタが備えられている。PC計算部46で計算された命令の先頭アドレスであるPC値は本発明のデータ処理装置1の各パイプラインステージで処理されるステップコードと共にPC転送部43内の複数のレジスタ間を転送される。アドレス計算の際にその命令のPC値が参照される場合には、アドレス計算処理中のステップコードの基になった命令のPC値がIXバス103 を経由してアドレス生成部14へ転送される。また、PC転送部43ではデバッグサポートのための命令アドレスブレイクあるいはトレース動作の起動のために、転送されるPC値と命令ブレイクポイントアドレスの値あるいはトリガ開始命令アドレスの値との比較動作も行なう。
【0125】
(3.6) 「アドレス生成部」
アドレス生成部14は、命令デコード部12のDステージデコーダ31及びAステージデコーダ34から出力されたオペランドのアドレス生成に関係する制御情報(Aコード, AAコード)によりハードワイヤード制御され、オペランドのアドレスを生成する。また、PC生成部15でジャンプ先アドレスを生成しないレジスタ間接アドレッシングのジャンプ命令による先行ジャンプ処理, 条件分岐命令の分岐予測と、反対側の命令アドレスの計算, サブルーチンジャンプ命令の戻り先アドレスの計算も行なう。
【0126】
図31はアドレス生成部14の構成例を示すブロック図である。アドレス生成部14には、命令デコード部12から出力されたアドレス生成に関係する制御情報であるAコード及びAAコードから演算制御信号を生成するアドレス計算制御部51, 3入力加算器58でオペランドのアドレス計算を行なうアドレス計算部53, アドレス計算部53で計算されたオペランドアドレス値をパイプライン処理の進行に同期して転送するアドレス転送部54, オペランドアドレス計算に関する RAWデータハザード検出を行なうスコアボードレジスタ部52が備えられている。
【0127】
アドレッシングモードで指定されたディスプレースメント値は命令デコード部12からDISPバス102 を経由してアドレス計算部53へ転送され、DISP55に保持される。また、スタックプッシュモードに伴うSP値のプリデクリメント処理のため、DISP55には命令デコード部12から転送された補正値(プリデクリメント値)を入力することもできる。アドレス計算で参照するレジスタ値は、整数演算部16のレジスタからIXバス103 を経由して転送された値がINDEX56 に入力されて保持される。また、PC相対モード等の場合にはPC生成部15のPC転送部43からPC値が、スタックポップモードまたはプッシュモードが用いられた場合、あるいはレジスタ15(レジスタ15はスタックポインタを指す)を参照する場合には整数演算部16からSP値が、それぞれIXバス103 を経由して転送されてINDEX56 に保持される。スケールドインデックスアドレッシングを実行するために、INDEX56 では入力された値の1, 2, 4, 8倍を3入力加算器58へ出力することができる。多段間接アドレッシングにより前段までのアドレス計算結果を次の多段間接アドレッシングのベースアドレスとする場合は3入力加算器58の出力がAO59からBASE57へ転送される。また、メモリ間接アドレッシングでは、3入力加算器58によるアドレス計算結果をAO59を経てAAバス106 へ出力してメモリからアドレスをフェッチし、S1バス104 を経由してBASE57に目的アドレスを転送する。DISP55, INDEX56, BASE57 に保持された3つの値は3入力加算器267 で加算されてAOへ出力される。DISP55, INDEX56, BASE57 はそれぞれゼロクリア機能を有している。
【0128】
アドレスの計算結果はAO59からAAバス106 へ出力されてオペランドをアクセスするアドレスとして使用される。また、AO59から出力されたオペランドアドレス自体はアドレス転送部54に渡され、パイプライン中の命令の流れに同期してアドレス転送部54で管理される。即値も命令デコード部102 からDISP55, 3入力加算器58を経由してアドレス転送部54へ転送され、オペランドアドレスと同様にパイプライン中の命令の流れに同期してアドレス転送部54で管理される。
【0129】
PC相対と絶対とを除くアドレッシングモードのジャンプ命令のジャンプ先アドレス計算結果はAO59からJAバス105 へ出力され、アドレス生成段階での先行ジャンプに使用される。
【0130】
本発明のデータ処理装置1には、スタックポップアドレッシング(@SP+)あるいはスタックプッシュアドレッシング(@−SP)が連続してもパイプラインインタロックなしに命令を処理するためのオペランドアドレス生成専用SP(ASP) とオペランドのアドレス生成段階で更新したSPの値を命令の流れに同期してパイプライン中で転送するレジスタ群 (SP転送部) とからなるSP先行更新機構が備えられている。アドレス計算段階でのSP値の更新処理は、アドレス計算制御部51から出力される制御信号により実行されるが、ブロックとしては整数演算部16にあるので、詳細な説明は後で述べる。
【0131】
スコアボードレジスタ部52には複数のスコアボードレジスタが備えられている。各スコアボードレジスタは16ビットで構成されており、各ビットが1つの汎用レジスタに対応する。このスコアボードレジスタが、アドレス計算より後のパイプラインステージ(実行ステージまで)に対応して複数存在する。レジスタの更新情報が命令デコード段階で登録され、パイプラインの進行に従って転送され、命令実行が終了し、レジスタ値の更新が終了するまで保持される。アドレス計算時に参照するレジスタ番号に基づいて RAWデータハザードの検出を行なう。
【0132】
(3.7) 「オペランドアクセス部」
図32はオペランドアクセス部17の構成例を示すブロックである。オペランドアクセス部17には、4KBのデータキャッシュ74, 2エントリのオペランドプリフェッチキューのアドレス管理部(SDA) 73, 2エントリのストアバッファのデータ保持部(SBD) 75, オペランドアクセスアドレスを保持, 生成するオペランドアドレスレジスタ(OA)71, アドレス判定部72及びそれらの制御部(図示せず)等が備えられている。
【0133】
オペランドをアクセスする場合、AAバス106 からOAレジスタ71を経由してOAバス109 にオペランドアドレスが出力される。このアドレスはアドレスデコード機構24にも出力される。アドレスデコード機構24にはいくつかの制御レジスタが備えられており、命令アドレスが I/O領域に入るか否か、非キャッシュ領域に入るか否かの等のチェックが行なわれる。また、デバッグサポートのためのオペランドブレイク起動のためのブレイクポイントアドレス値との比較処理も行なわれる。
【0134】
データキャッシュ74は、ライトスルー方式の16byte×256entry構成のダイレクトマップ制御で動作する。データキャッシュ74はOAバス109 から転送されたデータアドレスの下位12ビットに従ってキャッシュアドレスタグとデータとを出力する。キャッシュアドレスタグはデータアドレスの上位20ビットと比較され、両者が一致すれば、データキャッシュはヒットする。
【0135】
データのリード動作ではアドレス生成部14あるいは整数演算部16から出力されたリードすべきデータアドレスがOAレジスタ71へ転送されてデータキャッシュ74がアクセスされる。キャッシュヒット時には、データがデータキャッシュ74からDDバス107 を経由して整数演算部16へ転送される。オペランドのプリフェッチ(命令実行に先立つステージでのオペランドフェッチ)では、ストアオペランドとのオーバーラップチェックのためフェッチデータの8バイト境界ごとのデータアドレスをSDA73 へ転送して保持する。
【0136】
データキャッシュがミスした場合はデータアドレスがOAバス109 からバスインタフェイス部18へ出力され、外部のメモリがブロック転送でアクセスされることにより、BDバス110 からデータがフェッチされてデータキャッシュのエントリが更新される。ブロックリードはオペランドとして必要なデータからアドレスを昇順にラップアラウンドして行なわれ、オペランドとして必要なデータはデータキャッシュへの登録と並行してDDバス107 から整数演算部16へ転送される。また、データキャッシュ74には16バイトのブロックバッファが備えられており、非キャッシュ領域のアクセスも含めてデータアクセスがブロックバッファのデータにヒットするか否かをチェックする。ブロックバッファは非キャッシュ領域に対する8バイトデータリードを16バイト一括してブロック転送により行ない、リードした16バイトのデータを保持して次のデータリードが同一の16バイト境界内であればブロックバッファからデータを出力する。この機能によりストリング操作命令あるいはビットマップ命令で非キャッシュ領域のデータを16バイト単位に高速アクセスすることが可能となる。
【0137】
データのストア動作ではAAバス106 から出力されたストアすべきデータのアドレスがOAレジスタ71へ転送され、整数演算部16から出力されたデータがDDバス107 を経由して転送される。ストア動作は必ず外部のメモリに対して行なわれる。ストアデータアドレスはバスインタフェイス部18のストアバッファのアドレス保持部へ転送され、ストアデータはストアバッファデータ部292(75) へ転送される。ストアバッファにストアアドレスとデータとが転送される際に、プリフェッチデータまたはデータキャッシュにストアデータとオーバーラップするデータがある場合にはその内容が書き換えられる。プリフェッチデータのオーバーラップチェックはSDA73 で、データキャッシュ74のオーバーラップチェックはキャッシュ内のタグで行なわれる。なお、データキャッシュ74はライトスルー方式でありライト動作でミスした (オーバーラップがない) 場合はキャッシュの内容は変化しない。
【0138】
バスインタフェイス部18がストアバッファ292 のデータを外部にライトしている間も、オペランドアクセス部156 は引き続くリードアクセスまたはライトアクセスを受け付ける。従って、ストアバッファ292 に未処理のデータが存在してもデータキャッシュがヒットした場合はオペランドアクセス部17は後続の処理を続けることができる。
【0139】
本発明のデータ処理装置1がバススヌープ動作を実行している間は、バスインターフェイス部18は無効化すべきデータのアドレスをOAバス109 を経由してオペランドアクセス部17へ転送する。データキャッシュ74はこのアドレスがヒットする16バイトブロックのデータをすべて無効化する。
【0140】
(3.8) 「 ROM部」
図33は ROM部13の構成例を示すブロック図である。 ROM部13には、マイクロプログラムルーチンが格納されているマイクロROM81,マイクロシーケンサ82, 第1, 第2マイクロ命令デコーダ85, 86, 命令デコーダから出力されるRコードを保持するRコードラッチ83等が備えられている。 ROM部13は、命令デコード部12から出力されたRコード(メインRコードとサブRコード)に従ってマイクロプログラムにより整数演算部16の動作を制御する。
【0141】
マイクロシーケンサ82は命令実行に関するマイクロプログラム実行のためのシーケンス処理を主として行なう。ここには、複数のマイクロ命令アドレスを保持するためのラッチ, マイクロ命令アドレス値をインクリメントするインクリメンタ, 演算実行結果の条件判定部等が備えられており、シーケンシャルなマイクロ命令実行及び4方向条件分岐の他、マイクロサブルーチンの実行等も制御する。この他、マイクロシーケンサ82では、例外, 割込, トラップ(EIT) の受付けと各EIT に対応するマイクロプログラムのシーケンス処理も行なう。
【0142】
Rコードラッチ83は、マイクロエントリ番地保持部83a,パラメータ保持部83b,サブRコード保持部83c で構成され、2エントリのキューとして構成されている。
【0143】
マイクロROM81 には 155ビット×4Kワードの ROMと読み出されたマイクロ命令を保持するマイクロ命令レジスタとが備えられており、マイクロシーケンサから出力されるアドレスのマイクロ命令を読み出す。マイクロ命令アドレスは12ビットであり、その内の上位10ビットがマイクロROM81 のXデコーダ入力となり、下位2ビットがマイクロROM81 のYデコーダ入力となる。マイクロプログラムの条件ジャンプをディレイスロットなしで行なうために、マクロプログラムの条件ジャンプ時にはマイクロROM81 から4ワードが一度に読み出され、その内の一つが条件判定結果に従って選択される。マイクロ命令はマイクロROM81 から1クロックに1度読み出され、1つのマイクロ命令で1つのレジスタ間演算が行なわれる。従って、転送, 比較, 加算, 減算, 論理演算等の基本命令は1クロックで終了する。
【0144】
第1, 第2マイクロ命令デコーダ85, 86はマイクロROM81 から出力されるマイクロ命令とRコードのパラメータ83b 及びサブRコード83c とをデコードして整数演算部16の制御信号及び小さな即値を出力する。命令デコード部16で2命令が同時にデコードされた場合、先行命令のデコード結果はメインRコードとして出力され、後続命令のデコード結果はサブRコードとして出力される。先行命令の実行については、処理に必要なマイクロ命令が読み出され、第1マイクロ命令デコーダ85で読み出されたマイクロ命令とメインRコード内のパラメータ保持部83c から得られるパラメータ情報とがデコードされて先行命令の実行に必要な制御信号が生成される。後続命令に関しては、マルチプレクサ84でRコードラッチ83の出力が選択され、第2マイクロ命令デコーダ86でデコードされる。また後続命令に関しても、先行命令の最終マイクロ命令と共に有効な制御信号が生成される。ストリング命令のように1つの命令で複数のオペレーションを行なう高機能命令を処理する場合には2命令の並列実行は行なわれず、2命令並列実行時の後続命令を処理するための演算ハードウェアもマイクロプログラムで制御される。この場合、マルチプレクサ84はマイクロROM81 の出力を選択する。
【0145】
ROM部81は、主として整数演算部16に対して演算実行制御信号を出力するが、オペランドアクセス, ジャンプ,EIT処理等のために他ブロックへも多くの制御信号を出力するがそれらは図示されていない。
【0146】
(3.9) 「整数演算部」
整数演算部16は主として ROM部13のマイクロROM81 に格納されたマイクロプログラムにより制御され、種々の整数演算命令を実行するために必要な演算をレジスタファイル205 と演算器とを用いて実行する。
【0147】
図34は整数演算部16の構成例を示すブロック図である。Eステージジャンプアドレスレジスタ(EJA)201はパイプラインの命令実行ステージでジャンプを実行する際にジャンプ先アドレスを格納するレジスタである。 EITを検出した場合、あるいはプリリターン先アドレスを誤ったサブルーチンリターン命令を実行した場合、マイクロプログラムにより EJAレジスタ201 にジャンプ先アドレスを入力して実行ステージジャンプが行なわれる。この際のジャンプ先アドレスはJAバス105 を経由して命令フェッチ部11へ転送される。
【0148】
メモリアドレスレジスタ部202 とメモリデータレジスタ部209 とは整数演算部16がオペランドアクセス部17と通信を行なうためのレジスタであり、メモリアドレスレジスタ部202 がアドレスを、メモリデータレジスタ部209 がデータをそれぞれ扱う。メモリアドレスレジスタ部202 には2つのアドレスレジスタとアドレスのインクリメント/デクリメントを行なうカウンタ等が備えられている。命令実行時にメモリアクセスを行なう場合には、オペランドアドレスがAAバス106 を経由してオペランドアクセス部17へ出力される。
【0149】
メモリデータレジスタ部209 には、命令実行以前にプリフェッチされたオペランドを保持するための2エントリのSコードデータレジスタ(SD)210,実行時のリード用のレジスタ(DDR)211, ライト用のレジスタ(DDW)212が備えられている。各レジスタは、非整置の8バイトデータを保持できるように、それぞれ2つの8バイトのデータレジスタと整置回路とを備えており、64ビット幅のDDバス107 によりオペランドアクセス部156 との間で整置された8バイト単位でデータをやりとりする。SD210, DDR211 からはプリフェッチオペランドが出力されるが、32ビット以下のプリフェッチオペランドはS1バス104 またはS3バス122 のどちらのバスへも出力可能である。64ビットのプリフェッチオペランドを出力する場合はS1バス104 またはS3バス122 にS2バス121 を連結して使用する。また、メモリにストアされるべきデータはD1バス124 とD2バス125 とを経由してDDW212に書き込まれる。
【0150】
主演算回路208 には、 ALU, 64ビットバレルシフタ, 乗算器, プライオリティエンコーダ, カウンタ等が内蔵されている。副演算回路207 には、ALU27,バレルシフタなどが内蔵されている。レジスタファイルには、スタックポインタであるR15 以外の15本の汎用レジスタと16本の作業用レジスタとが内蔵されている。スタックポインタ部 (SP部) は、スタックポインタ(R15) を保持する。レジスタファイル205 とSP部204 とは、2つの演算命令を並列に実行できるように、主演算回路208 及び副演算回路207 に接続された4つの出力ポートと2つの入力ポートとを有する。更に、オペランドのアドレス計算のためにデータをアドレス生成部14へ転送するIXバス103 に接続するもう1つの出力ポートを有する。
【0151】
命令デコード部12で同時にデコードされた2つの命令は主演算回路208 と副演算回路207 とで同時に実行される。先行命令の実行は ROM部13の第1マイクロデコーダ85の出力により制御され、主演算回路208 で演算実行が行なわれる。後続命令は第2マイクロデコーダ86の出力によりハードワイアード制御され、副演算回路207 で演算実行が行なわれる。高機能命令を実行する場合はマイクロプログラムにより副演算回路207 と主演算回路208 とを並列に動作させることにより、8バイトデータを一度に処理したり、2つのオペレーションを並列に行なうこともできる。
【0152】
SP部204 は、単にスタックポインタ値を保持するのみならず、複雑な処理を行なう。
【0153】
図35はSP部204 の詳細な構成例を示すブロック図である。本発明のデータ処理装置ではリング保護を行なうために各リングごとにスタックポインタが用意されており、また割り込み処理用のスタックポインタを含めて5本のスタックポインタが用意されている。この5本のスタックポインタはマスタSP228 に保持される。ESP227は命令実行ステージ用の作業用スタックポインタであり、現在選択されているリングのスタックポインタ値を保持し、 ESPカウンタ227 でインクリメントまたはデクリメントの処理が行なわれる。各命令の終了時に、ESP226の値がマスタSP228 に書き戻される。
【0154】
また、本発明のデータ処理装置1では、スタックプッシュまたはスタックポップを行なう命令が連続した場合にも、パイプラインストールなしにSP値を用いたアドレス計算を行なうことを可能とする目的で、アドレス計算段階でSP値の先行更新を行なう。アドレス計算段階でのSP値はASP221で保持され、スタックプッシュに伴うSP値のデクリメント処理またはスタックポップに伴うSP値の ASP加算器224 での更新が行なわれる。更に、高機能命令でSP値を補正する場合の処理も ASP加算器224 で行なわれる。アドレス計算部53がSP値を参照する場合はIXバス103 を経由してASP221の値を参照する。アドレス計算段階で更新されたSP値はパイプライン中の命令の流れに同期してFSP225を経由してESP226へ転送される。但し、アドレス計算段階で更新が行なわれなかった場合にはその値が正しい値であるか否かがハードウェア的に保証されていないため、ESP226への転送は行なわない。命令実行段階でSPの書き込みを行なう場合には、更新する値をD1バス124 またはD3バス125 からASP221とESP226とに同時に書き込む。命令実行段階でジャンプが発生してパイプラインがクリアされた場合にはESP226の値がASP221へ転送される。
【0155】
ESP226にはAAバス160 への出力経路があり、メモリアドレスレジスタ部202 を介さずにESP226の値でメモリをアクセスすることができる。
【0156】
制御レジスタ部359 にはプロセッサ・ステータス・ワード(PSW),例外関連の処理, デバッグ等を制御するための各種の制御レジスタが備えられている。定数生成部206 には、定数ROM や ROM部13から出力される命令コードで指定された小さな即値やマイクロ命令で指定する小さな定数を保持するラッチ等があり、この定数値をバスへ出力する。
【0157】
(4) 「パイプライン処理」
(4.1) 「パイプラインの構成」
本発明のデータ処理装置1における命令パイプラインの構成例を図36の模式図に示す。本発明のデータ処理装置1では、命令のプリフェッチを行なう命令フェッチステージ(IF ステージ)401、命令のデコードを行なうデコードステージ (Dステージ)402、オペランドのアドレス生成を行なうアドレス生成ステージ (Aステージ)403、マイクロROM81 のアクセス (特にRステージと称す) とメモリオペランドのプリフェッチ (特にOFステージと称す) とを行なうオペランドフェッチステージ (Fステージ)404、命令の実行を行なう実行ステージ (Eステージ)405、メモリオペランドのストアを行なうストアステージ (Sステージ)406の6段構成でパイプライン処理を行なう。
【0158】
IFステージ401 には32バイトの命令プリフェッチキュー21, 22が、Fステージ404 には2エントリのオペランドプリフェッチキュー(SD) 210が、Sステージ406 には2エントリのストアバッファ(SBD) 75がそれぞれ対応する。
各ステージは他のステージとは独立に動作し、理論上は6つのステージが完全に独立動作する。Sステージ406 以外の各ステージは1回の処理を最小1クロックで行なう。Sステージ406 は1回のオペランドストア処理を、ストアバッファ75に空きがある場合は1クロックで行ない、空きがない場合は最小2クロックで行なう。従って、本発明のデータ処理装置1の命令パイプラインは理想的には1クロックごとに次々と命令を処理する。
【0159】
本発明のデータ処理装置1の命令には、メモリ−メモリ間演算あるいはメモリ間接アドレッシング等のような1回の基本パイプライン処理のみでは処理が不可能な場合もあるが、本発明のデータ処理装置1の命令パイプラインはこれらの処理に対してもなるべく均衡したパイプライン処理が行なえるように設計されている。複数のメモリオペランドを有する命令に対してはメモリオペランドの数を基に、デコード段階で1つの命令を複数のパイプライン処理単位 (ステップコード) に分解してパイプライン処理する。
【0160】
各パイプラインステージの入出力ステップコードには図36に示したように便宜上名前が付けられている。またステップコードはオペレーションコードに関する処理を行ない、マイクロROM81 のエントリ番地あるいはEステージ405 に対するパラメータになる系列と、Eステージ405 の処理対象のオペランドになる系列との2系列がある。また、Dステージ402 からSステージ406 までの間では処理中の命令のプログラムカウンタ値(PC)が受け渡され、Aステージ403 からEステージ405 までの間ではスタックポインタ値(SP)が、更にはスコアボードレジスタ値も受け渡される。
【0161】
IFステージ401 からDステージ402 に渡される情報は命令コード411 そのものである。
Dステージ402 からAステージ401 に渡される情報は命令で指定された演算に関するもの (Dコード412 と称す) と、オペランドのアドレス生成に関するもの(Aコード413 と称す) と、命令のプログラムカウンタ値との3つである。
【0162】
Aステージ403 からFステージ404 に渡される情報はマイクロプログラムルーチンのエントリ番地あるいはマイクロプログラムへのパラメータを含むRコード414 、オペランドのアドレスとアクセス方法指示情報とを含むFコード415 、更に処理中命令のプログラムカウンタ値とスタックポインタ値との4つである。
Fステージ404 からEステージ405 に渡される情報は演算制御情報とリテラルとを含むEコード416 、オペランドやオペランドアドレスを含むSコード417 、それに処理中命令のプログラムカウンタ値とスタックポインタ値との4つである。Sコード417 はアドレスとデータとからなる。
【0163】
Eステージ405 からSステージ406 に渡される情報はストアすべき演算結果であるWコード418 とその演算結果を出力した命令のプログラムカウンタ値との2つである。Wコード418 はアドレスとデータとストア関連情報とからなる。
Eステージ405 が本来の命令実行ステージである。IF, D, A, Fステージは命令実行のための前処理を行なうステージであり命令コードあるいはオペランドの読み出しは行なうがメモリまたはレジスタの内容は一切変更しない。このため、これらのステージでの処理はEステージ405 の処理結果に依存してキャンセルされる可能性がある。
【0164】
(4.2) 「命令フェッチステージ」
命令フェッチステージ (IFステージ)401では主として命令フェッチ部11が動作し、内蔵命令キャッシュ25または外部のメモリから命令をフェッチし、命令キュー21, 22に入力して、命令デコード部12に命令コードを出力する。命令キュー21, 22の入力は、命令キャッシュ25がヒットした場合は整置された16バイト内の8バイト単位で、ミスした場合は整置された4バイト単位でそれぞれ行なわれる。命令キュー21, 22は条件分岐命令に引き続く命令と分岐先命令との両方をフェッチするために2つ存在する。
【0165】
単一転送で外部のメモリから命令をフェッチする場合は整置された4バイトについて最小2クロックを要する。バーストモードによるブロック転送では16バイトについて最小5クロックを要する。命令を外部からフェッチする場合はフェッチ先命令のアドレスが非キャッシュ領域であるか否か、あるいは I/O領域であるか否かのチェックも行なわれる。 I/O領域からの命令フェッチは禁止されおり、EITとなる。
【0166】
内蔵命令キャッシュ25がヒットした場合は1クロックで整置された16バイト内の任意の8バイトの命令がフェッチされる。命令キュー21, 22の出力単位は2バイトごとに可変であり、1クロックの間に最大8バイトまで出力される。
内蔵命令キャッシュ25の制御, プリフェッチ先命令アドレスの管理, 命令キュー21, 22の制御もIFステージが行なう。IFステージ401 での処理を以下にまとめて示す。
【0167】
・命令コードのプリフェッチとDステージ402 への出力
・2本の命令キュー21, 22の管理
・命令プリフェッチアドレスのインクリメント
・命令キャッシュ25の管理
・命令のアドレスが非キャッシュ領域に入るか否かのチェック
・命令のアドレスが I/O領域に入るか否かのチェック
【0168】
(4.3) 「命令デコードステージ」
命令デコードステージ (Dステージ)402では主として、命令デコード部12のDステージデコーダ31, 拡張データ処理部32及び分岐予測部33と、PC生成部15のPC計算部42, ジャンプ先アドレス生成部41及びPCスタック44が動作する。
【0169】
Dステージ402 では、IFステージ401 から入力された命令のオペレーションコードの前段デコードとアドレッシングモードのデコードとが行なわれる。デコードは1クロックに1度行なわれ、1回のデコード処理で0乃至8バイトの命令コードを消費する(一部の処理では命令コードを消費せずにステップコードの出力処理のみを行なう場合がある)。2つのメモリオペランドを有する命令や多段間接モードを使用する命令等のような1回のデコード処理ではデコードできない命令はこのステージで複数のステップコードに分解される。このため、命令全体のデコードが完了しなくても各クロックのデコード処理でDコード412 とAコード413 と命令のPC値とが出力される。
【0170】
また、Dステージ402 では2命令の並列デコードを行ない、並列実行が可能な場合には2つの命令のデコード結果を同時に出力する。分岐予測部33では条件分岐命令に対する分岐予測処理が行なわれる。各デコードサイクルで、命令キュー21, 22の出力ポインタの更新情報が命令フェッチ部11へ出力される。
【0171】
Dステージ402 では命令デコードに伴って消費した命令長を基にPC生成部で各命令のPC値を計算する。条件分岐命令, 絶対アドレスまたはPC相対アドレスへのジャンプ命令 (サブルーチンジャンプ命令を含む),サブルーチンリターン命令に対してはPC生成部で先行ジャンプ処理 (Dステージジャンプ) を行なう。
【0172】
無条件ジャンプ命令をデコードして先行ジャンプを行なった場合はIFステージ401 に対して、現在使用中の命令キュー21, 22の内容をキャンセルしてジャンプ先から命令をフェッチしてキューに入力し、そのコードを命令デコード部12へ出力することを指示する。条件分岐命令をデコードした場合は分岐予測には関係なくIFステージ401 に対して、現在使用中のキューはそのままにしておき、もう一方の命令キューに分岐先から命令をフェッチして入力することを要求する。分岐すると予測する条件分岐命令では更に新規のキューから命令コードを命令デコード部12へ出力することを指示する。
【0173】
Dステージ402 からは、1回のデコードでAステージ403 に対してアドレス計算情報であるAコード413 とオペレーションコードの中間デコード結果であるDコード412 と命令のPC値とが出力される。Dステージ402 での処理を以下にまとめて示す。
【0174】
・命令のオペレーションコードの前段デコード
・アドレッシングモードのデコード
・命令のステップコードへの分解
・命令キュー21, 22の出力ポインタの更新情報
・PC値の計算
・条件分岐命令の分岐先アドレス計算
・条件分岐命令の分岐予測と先行分岐処理
・絶対アドレスまたはPC相対アドレスへの先行ジャンプ処理
・サブルーチンリターン命令の先行リターン処理
【0175】
(4.4) 「アドレス生成ステージ」
アドレス生成ステージ (Aステージ)403では主として、命令デコード部12のAステージデコーダ34及びサブコード転送部35と、アドレス生成部14と、整数演算部16のSP部204 と、PC生成部15のPC転送部43とが動作する。
【0176】
Aステージ403 はDステージ402 から転送されたDコード412 をデコードしてRコード414 を出力し、Aコード413 に従ってオペランドアドレスを生成してFコード415 を出力する。Dステージ402 から転送されてきたPC値はそのままFステージ404 へ転送される。また、Aステージ403 は命令実行ステージ405 とは独立に処理中命令のスタックポインタ値を計算してFステージ404 へ転送する。
【0177】
Aステージ403 では、Dステージ402 から出力されたオペレーションコードの中間デコード結果は更に詳細デコードされてマイクロROM81 のエントリアドレスとマイクロプログラムのパラメータとがRコード414 として出力される。
【0178】
アドレス生成部14はAコード413 に従ってオペランドアドレスを生成する。レジスタ間接モードまたはレジスタ相対モードに対しては、IXバス103 を経由して汎用レジスタの値が参照される。ディスプレースメント値, 即値, 絶対アドレス値はAコード413 の一部として命令デコード部12からDISPバス102 を経由して転送されてくる。メモリ間接モードに対しては、生成した間接アドレスに対応して発生するステップコードがFステージ404 及びEステージ405 を介してメモリから目的とするアドレス値をフェッチするまで処理待ち状態となる。PC相対モードに対しては、Dステージ402 から転送された処理中命令のPC値(APC) が用いられる。スタックポップモードあるいはプッシュモードに対しては、専用の作業用スタックポインタでSP値が計算される。計算されたSP値はFコード415 と共にFステージ404 へ出力される。オペランドが即値である場合は、オペランドアドレスと同じ転送経路で即値が転送される。
【0179】
レジスタ間接ジャンプあるいはメモリ間接ジャンプ等の絶対ジャンプ及びPC相対ジャンプ以外のジャンプ命令に対してはアドレス生成部14でジャンプ先アドレスが計算されて先行ジャンプ処理 (Aステージジャンプ) が行なわれる。サブルーチンジャンプ命令の戻り先アドレスの計算では、PC計算部42からIXバス103 を経由して送られるAステージ403 で処理中の命令の次命令アドレスが参照される。条件分岐命令に対しては、分岐予測が誤った場合にはPC生成部15が初期化されるため、分岐予測側アドレスと反対側の命令アドレスとの双方が計算される。
【0180】
Aステージ403 ではスコアボードレジスタ部52へのデスティネーションオペランドの登録 (書き込み予約) 及びアドレス生成のためにレジスタあるいはメモリからデータを読み出す際のデータハザードのチェックも行なう。アドレス計算に使用するレジスタあるいはメモリがコンフリクトしてデータハザードが発生した場合には、パイプラインはインタロックされる。
【0181】
多段間接モードを使用しているためにDステージ402 で複数のステップコードに分解された命令はAステージ403 でオペランドのアドレスを計算して1つのステップコードに縮退する。
【0182】
複数オペランドのロード/ストアを行なう高機能命令はAステージ403 で複数のステップコードに分解される。これらの命令はAステージ403 で1つまたは2つのレジスタのデータを転送するステップコードに分解されて後続のパイプラインステージで処理される。各ステップコードでアクセスするメモリのアドレスはAステージデコーダ34から出力される制御信号 (AAコード) に従ってアドレス生成部14が生成する。Aステージ403 での処理を以下にまとめて示す。
【0183】
・命令のオペレーションコードの後段デコード
・オペランドアドレスの生成
・スタックポインタ値の計算
・条件分岐命令の分岐予測及び反対側の命令アドレスの計算
・サブルーチンジャンプ命令の戻り先アドレスの計算
・レジスタ間接, レジスタ相対等のアドレッシングモードのジャンプ命令に
対する先行ジャンプ処理
・スコアボードレジスタ部52へのデスティネーションの書き込み予約
・アドレス生成のためのデータハザードチェックとパイプランインタロック・複数オペランドの転送を行なう命令のステップコードへの分解
・PC値の転送
【0184】
(4.5) 「オペランドフェッチステージ」
オペランドフェッチステージ404(Fステージ) では主として、 ROM部13と、オペランドアクセス部17と、アドレス生成部14のアドレス転送部54及びスコアボードレジスタ部52と、整数演算部16のSP部204 と、PC生成部15のPC転送部43が動作する。
【0185】
Rコード414 に対する ROM部13のマイクロROM81 アクセス動作とオペランドアクセス部17の動作とは独立した制御のもとで行なわれる。これらの2つの動作を別々に扱う場合、 ROM部13のマイクロROM81 アクセス処理を特にRステージの処理と称し、オペランドアクセス部17の処理を特にOFステージの処理と称する。RステージはRコード414 を入力とし、Eコード416 を出力する。OFステージはFコード415 を入力とし、Sコード417 を出力する。Fコード415 はキューングされないがRコード414 は2つまでキューイングされ、Eコード416 はキューイングされないがSコード417 は2つまでキューイングされる。また、Fステージ404 では、PC値, SP値及びレジスタ書き込み予約情報等がステップコードの転送に同期して転送される。
【0186】
Rステージの処理であるマイクロROM81 アクセス処理は、次のEステージ405 での実行に使用する実行制御コードであるEコード416 を生成するためのRコード414 に基づくマイクロROM81 アクセスとマイクロ命令デコード処理である。
【0187】
1つのRコード414 に対する処理が2つ以上のマイクロプログラムステップに分解される場合、 ROM部13がEステージ405 で使用され、次のRコード414 がマイクロROM81 アクセス待ちになる可能性がある。Rコード414 に対するマイクロROM81 アクセスが行なわれるのはEステージ405 でのマイクロROM81 アクセスが行なわれない場合である。本発明のデータ処理装置1では多くの整数演算命令が1マイクロプログラムステップで完了するため、実際にはRコード414 に対するマイクロROM81 アクセスが次々と行なわれる可能性が高い。
【0188】
オペランドフェッチステージ404 ではFコード415 のデータアドレスで内蔵データキャッシュ74または外部のメモリをアクセスしてオペランドをフェッチし、そのオペランドとFコード415 のデータアドレスとを組み合わせてSコード417 を生成して出力する。
【0189】
1つのFコード415 では、8バイト境界をクロスしてもよいが、8バイト以下のオペランドフェッチが指定される。Fコード415 にはオペランドのアクセスを行なうか否かの指定も含まれており、Aステージ403 で計算したオペランドアドレス自体や即値がEステージ405 へ転送される場合にはオペランドのフェッチは行なわれず、Fコード415 の内容がSコード417 として転送される。Sコード417 は2つまでキューイング可能であるため、オペランドは2つまでプリフェッチ可能である。単一転送で外部のメモリからオペランドがフェッチされる場合は整置された4バイトについて最小2クロックを要する。バーストモードによるブロック転送では整置された16バイトについて最小5クロックを要する。
【0190】
オペランドが外部からフェッチされる場合はフェッチ先のアドレスが制御レジスタで指定された非キャッシュ領域あるいは I/O領域内か否かのチェックも行なわれる。 I/O領域からはオペランドのプリフェッチは行なわれない。この場合、先行命令がすべて実行を完了し、 I/O領域をアクセスする命令が実行されることが確実になった後にオペランドがフェッチされる。また、条件分岐命令(Bcc, ACB, SCB) または条件トラップ命令(TRAP)に引き続く命令の実行に際してデータキャッシュ74がミスした場合、先行する条件分岐命令または条件トラップが実行されるまではオペランドのフェッチは行なわれない。これは、論理的には実行され得ない命令のオペランドプリフェッチが外部に対して行なわれることを抑止するためである。
【0191】
内蔵データキャッシュ74がヒットした場合は整置された8バイトについて1クロックでオペランドがフェッチされる。
内蔵データキャッシュ74の制御, プリフェッチ先オペランドアドレスの管理, Sコードキューの制御等もOFステージで行なわれる。以下にFステージ404 での処理をまとめて示す。
【0192】
・マイクロROM81 のアクセス
・オペランドのプリフェッチ
・オペランドプリフェッチキュー210, 73 の管理
・データキャッシュ74の管理
・オペランドのアドレスが非キャッシュ領域に入るか否かのチェック
・オペランドのアドレスがI/O 領域に入るか否かのチェック
・I/O 領域からのプリフェッチ抑止
・先行する条件分岐命令、条件トラップ命令の実行完了までの後続命令の外部メモリアクセス抑止
・PC値の転送
・SP値の転送
・レジスタ更新情報の転送
【0193】
(4.6) 「実行ステージ」
実行ステージ (Eステージ)405ではEコード416 及びSコード417 を入力として主として整数演算部16が動作する他、命令デコード部12の分岐予測部33と、PC生成部15のPC転送部43及びPCスタック44と、アドレス生成部14のアドレス転送部54及びスコアボードレジスタ部52と、オペランドアクセス部17と、更に各部に分散されている制御レジスタ部分等も動作する。
【0194】
このEステージ405 が命令を実行するステージであり、Fステージ404 以前のステージでの処理はすべてEステージ405 のための前処理である。Eステージ405 でジャンプが実行されたりあるいはEIT 処理が起動されたりした場合は、IFステージ401 〜Fステージ404 までの処理はすべて無効化される。Eステージ405 はマイクロプログラムにより制御され、Rコード414 に示されたマイクロプログラムルーチンのエントリアドレスからの一連のマイクロ命令を実行することにより命令を実行する。
【0195】
マイクロROM81 の読み出しとマイクロ命令の実行とはパイプライン化されて行なわれる。マイクロプログラムの条件分岐はマイクロROM81 のYデコーダ (マイクロROM81 から同時に読み出した4つのマイクロ命令から目的のマイクロ命令をセレクトするためのデコーダ) で行なわれるため、マイクロプログラムの条件分岐が発生した場合も1クロックの空きもなく次のマイクロ命令が実行される。
【0196】
Eステージ405 ではAステージ403 で行なったスコアボードレジスタ部52への書き込み予約の解除, Dステージ402 での分岐予測が間違っていた場合の分岐予測部33の分岐履歴の更新, PCスタック44へのサブルーチンからの戻り先アドレスの登録, プリリターンアドレスが正しいか否かのチェック等も行なわれる。
【0197】
各種の割り込みは命令の切れ目でEステージ405 で直接受け付けられ、マイクロプログラムにより必要な処理が実行される。その他の各種EIT の処理もEステージ405 でマイクロプログラムにより行なわれる。
演算の結果をメモリにストアする必要がある場合、Eステージ405 はSステージ406 へWコード418 とストア処理を行なう命令のプログラムカウンタ値とを出力する。メモリへのオペランドストアはすべてプログラムで論理的に指定された順序で行なわれる。
【0198】
ストア処理を行なう場合、データキャッシュの書換えの必要性を判断するためにEステージ405 でデータキャッシュタグのチェックが行なわれる。このため、オペランドストア動作では実際のストア処理の前にEステージ405 が1クロックサイクルの間データキャッシュを占有する。
【0199】
単純な命令を実行する場合は、Fステージ404 でオペランドをリードし、Eステージ405 で演算を実行し、Sステージ406 でオペランドをストアする。しかし、ストリング操作命令あるいはビットマップ操作命令を実行する場合は、Eステージ405 でバーストモードによるブロック転送(リード/ライト)を効率的に使用してメモリアクセスを行なう。従って、これらの命令では1ブロック=16バイトのデータがひとまとめにして処理される。また、2命令が並列にデコードされた場合には、主演算回路208 及び副演算回路209 と種々のバスを用いて2つの命令が並列実行される。以下にEステージ405 での処理をまとめて示す。
【0200】
・オペレーションコードで指定された命令オペレーションのマイクロプログ
ラムによる実行
・汎用レジスタ値, 制御レジスタ値の更新
・ PSW中のフラグの更新
・リング毎に指定されたスタックポインタの更新
・ EIT処理の受付と実行, Eステージジャンプ
・スコアボードレジスタ部52の書き込み予約解除
・分岐予測部33の分岐履歴の更新
・プリリターンアドレスのチェック
・誤った先行ジャンプを訂正するためのEステージジャンプ
・制御レジスタの更新及びインタロック命令の実行によるEステージジャンプ
・PC値の転送
【0201】
(4.7) 「ストアステージ」
ストアステージ (Sステージ)406ではオペランドアクセス部74が動作する。Sステージ406 はWコード418 のアドレスに従ってWコード418 のデータを内蔵データキャッシュ74にストアすると同時にWコード418 をストアバッファ75に入力して外部のメモリへWコード418 のデータをストアする。
【0202】
ストアバッファ75は2エントリあり、8バイトのデータ2つまでのストア要求をキューイング可能である。単一転送では、ストアバッファ75から外部のメモリへのオペランドのストアが整置された4バイトについて最小2クロックに1回行なわれる。バーストモードのブロック転送では、ストアバッファ75から外部のメモリへのオペランドのストアが整置された16バイトについて最小5クロックで行なわれる。
Sステージ406 での動作はオペランドアクセス部17で行なわれ、内蔵データキャッシュがミスした場合も入れ替え処理は行なわれない。以下にSステージ406 での処理をまとめて示す。
【0203】
・データキャッシュ74とメモリとへのストア
・ストアバッファ75の管理
【0204】
(5) 「スーパースケーラ処理」
(5.1) 「スーパースケーラ処理の概要」
本発明のデータ処理装置1は、実行頻度が高い命令をそれに先行する命令と並列にデコードすることにより、両者を並列に実行する2命令のスーパースケーラ処理を行なう。
【0205】
具体的には、図29に示されている命令デコード部12のDステージデコーダ31が2つの命令(先行命令と後続命令)を並列にデコードし、2つの命令が並列に実行可能であると判断された場合には2つの命令のデコード結果を同時に出力する。この場合、Dコード412,Rコード414,Eコード416 では2つの命令の実行情報が転送されるが、各ステップコードの内の先行命令の実行情報に関するステップコードをメインコードと称し、後続命令の実行情報に関するステップコードをサブコードと称する。メインコードとサブコードとは基本的に各パイプラインステージで同期して処理される。そして、実際に2命令を並列に実行する場合、図34に示した整数演算部16において主演算回路208 がマイクロプログラム制御で先行命令を実行し、副演算回路207 がハードワイヤード制御で後続命令を実行する。先行命令が2マイクロ命令以上のマイクロプログラムで実行される場合、後続命令は先行命令の最終マイクロ命令が実行される際に並列に実行される。
【0206】
ところで、スーパースケーラ処理はハードウエアの制限により、すべての2命令の組み合せで可能なわけではない。2命令の並列実行が可能なのは、以下の条件を満たす場合である。詳細については後述する。
【0207】
・先行命令が2バイトまたは4バイト命令である。
・先行命令が分岐を発生しない。
・後続命令の実行前に、先行命令の実行に依存した例外処理が起動されない
。
・先行命令の最終マイクロステップで副演算回路207,S3バス122,S4バス123 あるいD2バス125 を使用しない。
・後続命令の命令基本部が1つである。後続命令は短縮形フォーマットの命令か1オペランド命令の場合に限られる。
・後続命令は副演算回路207 において1クロックサイクルで実行できる。
・オペランド干渉 (先行命令が更新するレジスタ値を後続命令が参照すること) が発生しない。但し、以下の場合はオペランド干渉時にも並列実行が可能な場合がある。
・先行命令がレジスタへの転送命令である。
・後続命令が先行命令の演算結果をレジスタまたはメモリへ転送する命
令である。
・先行命令がシフト命令であり、後続命令が算術演算/論理演算/比
較命令である。
・先行命令が算術/論理演算命令であり、後続命令が左シフト命令で
ある。
・先行命令が算術演算命令であり、後続命令が算術演算/比較命令で
ある。
・先行命令と後続命令との双方がメモリ/即値オペランドを有していない。但し、2つの命令が連続したメモリ領域をアクセスするロード/ストア命令の場合には、並列に実行できる場合がある。
【0208】
2命令を並列に実行できる場合は以下のように分類できる。但し、ここで即値オペランドとは、命令基本部に埋め込まれた小さな即値(リテラル)を除く。
【0209】
・分類A :後続命令がメモリ/即値オペランドを有していない。
・分類A1 :オペランド干渉なし。
・分類A2 :オペランド干渉有り。先行命令がレジスタへの転送命令。
・分類A3 :オペランド干渉有り。分類A2以外で後続命令がレジスタ間転送命令。
・分類A4 :オペランド干渉有り。先行命令が3ビット以下の左シフト命令で、後続命令が算術演算/論理演算/比較命令。
・分類A5 :オペランド干渉有り。先行命令が算術/論理演算命令で、後続命令が3ビット以下の左シフト命令。
・分類A6 :オペランド干渉有り。先行命令が算術演算命令で、後続命令が算術演算/比較命令。
【0210】
・分類B :先行命令が即値/メモリオペランドを有しておらず、後続命令が即値/メモリオペランドを有する。
・分類B1 :オペランド干渉なし。
・分類B2 :後続命令が先行命令の演算結果をメモリへ転送する命令。
・分類B3 :オペランド干渉有り。先行命令が3ビット以下の左シフト命令で、後続命令が算術演算/論理演算/比較命令。
・分類B4 :オペランド干渉有り。先行命令が算術演算命令で、後続命令が算術演算/比較命令。
【0211】
・分類C :2つの命令がメモリオペランドを有する(連続領域アクセス)。
・分類C1 :2つの命令が共にスタックポップを行なう転送命令。
・分類C2 :2つの命令が共にスタックプッシュを行なう転送命令。
・分類C3 :先行命令がレジスタ間接モード/レジスタ相対間接モードでオペランドを指定し、後続命令がレジスタ相対間接モードでオペランドを指定し、2つの命令が連続する2つのワードデータをロードする転送命令。
・分類C4 :先行命令がレジスタ間接モード/レジスタ相対間接モードでオペランドを指定し、後続命令がレジスタ相対間接モードでオペランドを指定し、2つの命令が連続する2つのワードデータをストアする転送命令。
【0212】
(5.2) 「命令デコード部の並列デコード機構」
本発明のデータ処理装置1は、命令デコード部12のDステージデコーダ31で2命令の並列デコードを行なう。図37はそのDステージデコーダ31の構成例を示すブロック図である。
【0213】
Dステージデコーダ31には、Dステージデコーダ31自身を含むDステージ402 の状態制御を行なうDステージ制御部301,2命令を並列にデコードする場合の先行命令をデコードするためのメインデコーダ302,後続命令をデコードするためのサブデコーダ304,2命令の並列デコード/実行が可能か否かを判定する2命令並列デコード可否判定部303,Dコード412 を生成するDコード生成部306,Aコード413 を生成するAコード生成部307 等が備えられている。
【0214】
メインデコーダ302 はIIバス101 の1〜4バイト目を入力し、最大4バイトの命令基本部と1ビットの分岐予測ビットとをデコードする。
【0215】
サブデコーダ304 には、第1SOPDEC 308と第2SOPDEC 309との2つのデコーダが備えられており、メインデコーダ302 でデコードされる命令に引き続く命令の命令基本部をデコードする。第1SOPDEC 308は、メインデコーダ302 でデコードされる命令が2バイトであると仮定して、IIバス101 の3バイト目と4バイト目とをデコードする。第2SOPDEC 309は、メインデコーダ302 でデコードされる命令が4バイトであると仮定して、IIバス101 の5バイト目と6バイト目とをデコードする。メインデコーダ302 でデコードされた命令とサブデコーダ304 でデコードされた命令とが、後述する並列デコード条件を満足する場合、2つのデコーダ308, 309の出力の内のいずれか一方がDコード生成部306 へ出力される。
【0216】
メインデコーダ302 及びサブデコーダ304 では、レジスタ番号, サイズ, オペレーションコードに埋め込まれた小さな即値(リテラル)等のパラメータとなるフィールドの切り出し処理も行なわれる。
【0217】
アドレッシングモードデコーダ305 は8ビットのオペランド指定子あるいは16ビットの多段間接モードフィールドで指定される命令のアドレッシングモード部をデコードする。アドレッシングモードデコーダ305 には、IIバス101 の2バイト目にある8ビットの一般形アドレッシングモードあるいは6ビットの短縮形アドレッシングモードをデコードする第1EADEC 310 と、IIバス101 の4バイト目にある8ビットの一般形アドレッシングモードあるいは6ビットの短縮形アドレッシングモードをデコードする第2EADEC 311 と、IIバス101 の1バイト目と2バイト目にある多段間接モードをデコードするCHNDEC 312との三つのデコーダが備えられている。アドレッシングモードデコーダ305 では、アドレス計算で参照するレジスタ番号の切り出し及び拡張データの切り出しに関する情報の生成も行なう。
【0218】
Dコード生成部306 には、先行命令のデコード結果であるメインDコードを生成するメインDコード生成部313 と、後続命令のデコード結果であるサブDコードを生成するサブDコード生成部314 とが備えられている。
【0219】
Dステージデコーダ31は上述のようなハードウェア構成を採っているため、2命令を並列デコードする場合には、先行命令の最終デコードサイクルでの処理コード長が2バイトまたは4バイトの場合に限られる。先行命令は複数ステップに分解される命令であっても構わない。また、オペランドアドレス生成部14にはアドレス計算のための加算器は1つのみがインプリメントされているため、メモリオペランドを有する命令を複数同時に処理することはきない。また特に、後続命令がメモリオペランドを有する場合は、アドレッシングモードデコーダ305 が上述のような構成を採っているため、特別な場合を除いては先行命令の最終デコードサイクルでの処理コード長が2バイトの場合に限られる。
【0220】
1サイクルで処理されるIIバス101 上の命令コードの位置関係を図38の模式図に示す。ここで、2命令を並列にデコードできるのは、先行命令の最終デコードサイクル時のみである。
【0221】
図38において、参照符号(a) 〜(d) にて示されている例は、先行命令が基本部1つのみの場合であり、これらの内で2命令を並列にデコードできるのは(b) 〜(d) の例である。先行命令が即値/メモリオペランドを有していない場合には、後続命令はメモリ/即値オペランドを有していてもよく、32ビットまでの拡張データを有していてもよい。
【0222】
参照符号(e) 〜(g) にて示されている例は、先行命令が1つの基本部と16ビットの拡張部とからなる例であり、これらの内で2命令を並列にデコードできるのは(f) 〜(g) の例である。(e) の例に示されているように、通常、後続命令はメモリ/即値オペランドを有していてはいけない。(g) の例になるのは、レジスタ相対モードで連続領域のロード/ストアを行なう2つの転送命令が連続する場合のみである。
【0223】
参照符号(h) にて示されている例は、先行命令が1つの基本部と32ビットの拡張部とからなる場合である。この場合、2命令の並列デコードは行なえない。
【0224】
参照符号(h) 〜(k) にて示されている例は、先行命令の命令基本部を2つ同時にデコードする例である。この場合、(i) の例ように拡張部を有していない場合にのみ2命令の並列デコードが可能である。
【0225】
参照符号(l) にて示されている例は命令コードを消費しない場合を、(m) 〜(p) にて示されている例は命令固有の拡張部のみを取り込む場合をそれぞれ示している。(n) あるいは(o) の例のように、拡張部を取り込む場合にも2命令の並列デコードが可能な場合がある。
【0226】
図39に2命令並列デコード可否判定部303 のブロック図を示す。2命令並列デコード可否判定部303 には、レジスタ番号比較部321,拡張データ値判定部322,オペランド干渉判定部323,サブコード有効判定部324 等が備えられている。
【0227】
レジスタ番号比較部321 はレジスタオペランドの干渉判定を行なうためにIIバス101 上のレジスタ番号フィールドの比較を行なう。Dステージデコーダ31で1サイクルに2命令を並列にデコードする場合、命令基本部に着目すると図44の模式図に示されているような3つの場合に分けられる。
【0228】
図44において、参照符号(A) は先行命令が命令基本部のみの2バイトの場合であり、RL1フィールド421 とRL2フィールド423 とを、RR1フィールド422 とRR2フィールド424 とをそれぞれ比較する必要がある。参照符号(B) は先行命令が1つの命令基本部と16ビットの拡張部を有する4バイトの場合であり、RL1フィールド421 とRL3フィールド425 とを、RR1フィールド422 とRR3フィールド426 とをそれぞれ比較する必要がある。参照符号(C) は先行命令が2つの命令基本部を有する4バイトの場合であり、RR2フィールド424 とRL3フィールド425 及びRR3フィールド426 をそれぞれ比較する必要がある。但し、(C) においては、RL2フィールド423 のレジスタを更新する場合があるが、それらの命令では2命令の並列デコードは行なわれない。これらのレジスタフィールドの比較を行なうためにレジスタ番号比較部321 には参照符号325 乃至334 にて示されている比較器1〜比較器10の10個の4ビット比較器が備えられている。
【0229】
拡張データ値判定部332 は、ロードあるいはストアを行なう2つの連続する転送命令が連続領域をアクセスするか否かを判定するために、レジスタ相対モードでオペランドが指定された場合の拡張データ(変位値)の判定を行なう。第1DISP判定部335 では、IIバス101 上の3バイト目と4バイト目(以下II(16:31) と示す)が”4”であるか否かを判定する。第2DISP判定部336 では、II(48:63) で指定される変位値がII(16:31) で指定される変位値”+4”であるか否かを、減算により判定する。
【0230】
オペランド干渉判定部323 では、メインデコーダ302 から出力される各レジスタフィールドの更新情報と、サブデコーダ304 から出力される各レジスタフィールドの参照情報と、レジスタ番号比較部321 から出力される各レジスタフィールドの比較結果とを基に、レジスタオペランドの干渉判定を行なう。オペランド干渉判定部323 の詳細な論理構成例を図40及び図41の論理回路図に示す。但し、この論理回路図は機能的な処理内容を示すものである。なお、図40と図41とは、図40の下側と図41の上側とが接続された本来は一葉の図面である。
【0231】
サブコード有効判定部324 では、メインデコーダ302 から出力される先行命令に関する情報と、サブデコーダ304 から出力される後続命令に関する情報と、レジスタ番号比較部321 から出力される各レジスタフィールドの比較結果と、オペランド干渉判定部323 から出力されるレジスタオペランドの干渉情報と、拡張データ値判定部322 から出力される拡張データ値情報とに基づいて、2命令が並列デコード可能か否かを判定する。また、2つの命令の組み合せに依存するいくつかの制御信号の生成も行なう。サブコード有効判定部324 の詳細な論理構成例を図42及び図43の論理回路図に示す。但し、この論理図は機能的な処理内容を示すものである。なお、図42と図43とは、図42の下側と図43の上側とが接続された本来は一葉の図面である。
【0232】
メインデコーダ302 から出力されて2命令並列デコード可否判定部303 に入力される制御信号の一覧を表1に示す。なお、表1において、参照符号501 乃至514 の各信号はサブコード有効判定部324 に、参照符号515 乃至518 の各信号はオペランド干渉判定部323 にそれぞれ入力される。
【0233】
【表1】
【0234】
注1)1命令の最終デコードサイクル。マイクロプログラムの最終ステップでサブのバス、演算器を使用しない。分岐を起こさない。パイプラインをパージしない。後続命令の実行前に、命令の実行に依存して例外を起動する可能性がない。明示的に指定されているレジスタ以外のレジスタを更新しない。多段間接モードでない。
【0235】
サブデコーダ304 の第1SOPDEC 308から出力されて2命令並列デコード可否判定部303 に入力される制御信号の一覧を表2に示す。なお、表2において、参照符号521 乃至532 の各信号はサブコード有効判定部324 に、参照符号533 乃至537 の各信号はオペランド干渉判定部323 にそれぞれ入力される。
【0236】
【表2】
【0237】
注2)命令コードが有効で例外が検出されていないことも判断。
【0238】
サブデコーダ304 の第2SOPDEC 309から出力されて2命令並列デコード可否判定部303 に入力される制御信号の一覧を表3に示す。なお、表3において、参照符号541 乃至547 の各信号はサブコード有効判定部324 に、参照符号548 乃至550 の各信号はオペランド干渉判定部323 にそれぞれ入力される。
【0239】
【表3】
【0240】
注3)命令コードが有効で例外が検出されていないことも判断。
【0241】
2命令並列デコード可否判定部321 の各ブロック間で転送される信号の一覧を表4に示す。なお、表4において、参照符号551 乃至560 の各信号はレジスタ番号比較部321 から、参照符号561 及び562 の各信号は拡張データ値判定部322 から、参照符号571 乃至579 の各信号はオペランド干渉判定部323 からそれぞれ出力される。
【0242】
【表4】
【0243】
サブコード有効判定部324 から出力される信号の一覧を表5に示す。なお、表5において、参照符号581 乃至591 の各信号がサブコード有効判定部324 から出力される。
【0244】
【表5】
【0245】
なお、これらの各表において、各信号の内容は、それぞれの値が”1”である場合の意味を示す。また、2命令並列デコード可否判定部303 のサブコード有効判定部324 で生成された信号はサブコードとして転送される。
【0246】
(5.3) 「命令実行部の並列実行機構」
命令デコード部12で並列にデコードされた2つの命令は必ず並列に実行できる。基本的には、先行命令の最終マイクロステップにおいて先行命令は主演算回路208 とS1バス104,S2バス121 あるいはD1バス124 とを用いてマイクロ制御で実行され、後続命令は副演算回路207 とS3バス122,S4バス123 あるいはD2バス125 とを用いてハードワイヤード制御で実行される。
【0247】
図59は主演算回路208 及び副演算回路207 のより詳細な構成例を示すブロック図である。
【0248】
主演算回路208 には、算術/論理演算を行なうメインALU231, 64ビットデータのシフトが可能なメインシフタ232,他の演算器233 等が備えられている。複雑な処理を効率良く行なうために、各演算器の出力はD1バス124 の他、D2バス125 に結合されているものもある。他の演算器233 には、乗算器, プライオリティエンコーダ, カウンタ等の演算器が含まれる。
【0249】
副演算回路207 には、算術/論理演算を行なうサブALU234, 8ビットまでのシフトを行なうサブシフタ238,オペランド干渉のある2つの算術演算命令を並列に実行するための3値加算器237 等が備えられている。また、オペランド干渉のあるシフトカウント数が3以下のシフト命令と算術/論理演算/比較命令との2命令を並列に実行できるように、サブALU234の入力側と出力側との双方に3ビット以下のシフト処理を行なう小さなシフタ235, 236が接続されている。副演算回路207 内の演算器は主としてS3バス122,S4バス123,D2バス125 に結合されているが、オペランド干渉時のオペランドのバイパスや2命令の複合演算を行なうためにS1バス104 あるいはS2バス121 にも結合されている。
【0250】
(5.4) 「スーパースケーラ処理の詳細」
すべての場合をまとめて説明すると非常に複雑になるので、以下では前述の各分類毎にどのような処理が行なわれるかを、具体的な処理例に従って説明する。なお、以下の説明では、2命令を並列にデコードする際の先行命令を命令1と称し、後続命令を命令2と称する。
【0251】
(5.4.1) 「分類A1の場合の処理」
まず、命令2がメモリ/即値オペランドを有しておらず、オペランド干渉がない分類A1の場合について説明する。
【0252】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類A1に対応するIIバス101 上の命令コードの位置としては、図38の(b), (f), (i) の3つの場合がある。命令1が後続のメモリ/即値オペランドを有していない命令2を並列に実行可能な場合、SENR信号501 が”1”になる。また、命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有していない命令であった場合には、命令1のコード長に応じて SVLD1信号512 または SVLD2信号541 が”1”になる。
【0253】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。オペランド干渉があれば命令1のコード長に応じて OPCONF1信号571 または OPCONF2信号574 が”1”になる。命令1の処理コード長が2または4バイトで上述の条件をすべて満たす場合、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。
【0254】
メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。サブDコード生成部314 では、命令1の処理コード長に従って、第1SOPDEC 308または第2SOPDEC 309の出力の一方を選択し、2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 またはメインデコーダ302 の出力に基づいてAコードを生成する。命令1が拡張データを有する場合には、拡張データ処理部32で拡張データの切り出し及びDISPバス102 への出力が行なわれる。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0255】
Aステージ403 では、Aステージデコーダ34で命令1の後段デコードが行なわれ、命令2のデコード結果であるサブDコードはサブコード転送部35により転送される。また、命令1が即値/メモリオペランドを有する場合のアドレス計算,SP 値の補正等が行なわれる。また、命令1及び命令2のレジスタの更新情報がスコアボードレジスタ部52に登録される。
【0256】
Fステージ404 では、命令1の処理に対応するマイクロ命令が読み出され、第1マイクロ命令デコーダ85で命令1の実行制御情報が生成される。命令2の実行制御情報はサブRコードをハードワイヤードでデコードすることにより第2マイクロ命令デコーダ86で生成される。命令1の実行に複数のマイクロステップを要する場合には、命令1の最終マイクロステップで命令2の実行制御情報が有効になる。命令1の最終マイクロステップ以外では、第2マイクロ命令デコーダ86は、マイクロROM81 から読み出されたマイクロ命令をデコードして命令1に関する実行制御情報を生成する場合もある。命令1がフェッチオペランドを有する場合には、オペランドアクセス部17でオペランドがプリフェッチされる。
【0257】
Eステージ405 では、命令1の最終ステップで2つの命令が並列に実行される。命令1は主演算回路208 とS1バス104,S2バス121 あるいはD1バス124 とを用いて実行される。命令2は副演算回路207 とS3バス122,S4バス123 あるいはD2バス125 とを用いて実行される。命令1がメモリへのオペランドストアを伴う場合、オペランドアクセス部17でデータキャッシュ74のタグチェック及びキャッシュのヒット/ミス判定が行なわれる。この場合、Sステージ406 で、キャッシュへのデータ書き込み及びメモリへのストアが行なわれる。
【0258】
以下に具体例に即して説明する。デスティネーションオペランドがレジスタである2つのQフォーマットの加算命令(ADD:Q) が連続する場合を考える。図45の模式図にこの2命令をデコードする際の命令コードのIIバス101 上のビット位置を示す。命令1がR1(レジスタ1)に”4”を加える命令であり、命令2がR2に”8”を加える命令である。この場合、2命令の並列実行が可能な組み合わせであり、且つ命令1が書き換えるR1を命令2が参照することはないので、2命令が並列実行される。またこの場合、命令1の処理コード長が2バイトであるので、第1SOPDEC 308の出力結果に基づいてサブDコードが生成される。図46の模式図に示すように、各パイプラインステージで2命令が並列に処理される。各パイプラインステージでは、1サイクルで2命令の処理を終了できる。
【0259】
各ステージでの具体的な処理の流れを図47のフローチャートに示す。図47に示したように、各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。
【0260】
(5.4.2) 「分類A2の場合の処理」
ここでは、命令1がレジスタへの転送命令であり、命令2がメモリ/即値オペランドを有しておらず、オペランド干渉がある分類A2の場合について説明する。命令の組み合せとしては分類A1のサブセットになる。処理を簡略化するために、命令1の両オペランドサイズ及び命令2のデスティネーションオペランドサイズがワードである場合にのみ、ロードオペランドバイパスが可能としている。命令1のソースオペランドは、レジスタにあってもメモリにあってもよい。命令の実行頻度を考慮して、命令1がLフォーマットの転送命令(MOV:L) であるか、またはデスティネーションオペランドがレジスタのSフォーマットの転送命令(MOV:S) である場合に限って、オペランドのバイパス処理を行なう。
【0261】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類A2に対応するIIバス101 上の命令コードの位置としては、図38の(b), (f)の2つの場合がある。命令1が上述の転送命令である場合、 LDMVR信号505 が”1”になる。また、命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有していない命令であり、デスティネーションオペランドサイズがワードであった場合には、命令1のコード長に応じて LBYP1信号523 または LBYP2信号542 が”1”になる。
【0262】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。オペランド干渉があれば命令1のコード長に応じて OPCONF1信号571 または OPCONF2信号574 が”1”になる。命令1の処理コード長が2または4バイトで上述の条件をすべて満たす場合、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になると共に、ロードオペランドのバイパスを行なうことを示す LDBYP信号583 が”1”になる。更に、命令2のソースオペランドをバイパスする場合にはBYPSRC信号587 が、命令2のデスティネーションオペランドをバイパスする場合にはBYPDST信号588 がそれぞれ”1”になる。但し、双方が”1”になる場合もある。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。これらのオペランドバイパスに関する信号もサブDコードとして出力され、転送されていく。その他の処理は分類A1の場合と同じである。
【0263】
Aステージ403 及びFステージ404 における処理は、分類A1の場合と同じである。
【0264】
Eステージ405 では、命令1の最終ステップで2つの命令が並列に実行される。分類A2が分類A1と異なるのは、オペランドのバイパス処理を行なうことである。命令1は、S1バス104 へ出力されたソースオペランドデータを、メインALU231, D1バス124 を介して、デスティネーションとして指定されたレジスタに書き込むことにより実行される。命令2は基本的にはS3バス122,S4バス123,D2バス125 と副演算回路207 とで実行されるが、オペランド干渉があるデータはS3バス122,S4バス123 上のデータの代わりに、S1バス104 上のデータをバイパスして取り込むことにより、正しい結果が得られる。たとえば、命令2がサブALU234で実行される際に、命令2のソースオペランドでオペランド干渉が起こっている場合、ラッチ244 にはS3バス122 の代わりにS1バス104 からデータがバイパスして取り込まれ、命令2のデスティネーションオペランドでオペランド干渉が起こっている場合、ラッチ245 にはS4バス123 の代わりにS1バス104 からデータがバイパスして取り込まれる。命令2がサブシフタ238 で実行されるシフト命令であり、命令2のデスティネーションオペランドでオペランド干渉が起こっている場合、ラッチ250 にはS4バス123 の代わりにS1バス104 からデータがバイパスして取り込まれる。命令2がサブシフタ238 で処理されるのは、シフトカウント値はリテラルが指定されるQフォーマットのシフト命令のみであり、シフト命令のシフトカウント値をバイパスする必要がないからである。命令2が演算結果を命令1のデスティネーションと同一のレジスタに書き込みを行なう場合、D2バス125 からの書き込みが優先される。
【0265】
以下に具体例に即して説明する。命令1がLフォーマットの転送命令(MOV:L) であり、レジスタ相対間接モードで指定されたメモリオペランドをR1にロードする命令であり、命令2がR1に”8”を加えるQフォーマットの加算命令(ADD:Q) である場合を考える。命令1のメモリオペランドのベースレジスタはR13 であり、変位(ディスプレースメント)は16であり、16ビットの拡張データで指定されるものとする。図48の模式図にこの2命令をデコードする際の命令コードのIIバス101 上のビット位置を示す。この場合、2命令間でオペランド干渉があるが、ロードオペランドバイパスを行なうことにより2命令を並列に実行できる命令の組み合せである。この場合、命令2のデスティネーションオペランドに関してロードオペランドバイパスを行なうので、 LDBYP信号583 とBYPDST信号588 とが”1”になる。また、命令1の処理コード長が4バイトであるので、第2SOPDEC 309の出力結果に基づいてサブDコードが生成される。
【0266】
各ステージでの具体的な処理の流れを図49のフローチャートに示す。各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。この例では、命令2がサブALU134で実行される命令であり、命令2のデスティネーションオペランドに関してオペランドが干渉している。従って、サブALU234のラッチ245 には命令1でR1にロードされるS1バス104 上の値が直接取り込まれて演算が行なわれている。R1には命令2の実行結果であるD2バス125 上のデータが書き込まれる。D1バス124 上のデータは書き込まれない。
【0267】
(5.4.3) 「分類A3の場合の処理」
ここでは、命令1が演算結果をレジスタに書き込む命令であり、命令2が命令1の演算結果を別のレジスタへ転送する転送命令である分類A3の場合について説明する。この場合も命令の組み合せとしては分類A1のサブセットになる。処理を簡略化するために、命令1のデスティネーションオペランドのサイズ及び命令2の両オペランドのサイズがワードである場合にのみ、書き込みオペランドのバイパスが可能としている。命令1のソースオペランドは、レジスタにあってもメモリにあってもよい。但し、命令1は最終マイクロステップでレジスタへ書き込むデータをD1バス124 へ出力する命令であり、且つ命令2はLフォーマットまたはSフォーマットのレジスタ間転送を行なう転送命令(MOV:L,MOV:S) である場合に限られる。
【0268】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類A3に対応するIIバス101 上の命令コードの位置としては、図38の(b), (f), (i) の3つの場合がある。命令1がデスティネーションオペランドのサイズがワードであり、最終マイクロステップでD1バス124 を経由してレジスタへ書き込む命令である場合、 MVREN信号504 が”1”になる。また、命令2が上述のレジスタ間転送命令である場合には、命令1のコード長に応じてMVR1信号525 またはMVR2信号543 が”1”になる。
【0269】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。オペランド干渉があれば命令1のコード長に応じて OPCONF1信号571 または OPCONF2信号574 が”1”になる。命令1の処理コード長が2または4バイトで上述の条件をすべて満たす場合、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になると共に、書き込みオペランドのバイパスを行なうことを示す BYPD1信号589 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。オペランドバイパスに関する信号もサブDコードとして出力され、転送されていく。その他の処理は、分類A1の場合と同じである。
【0270】
Aステージ403 及びFステージ404 における処理は、分類A1の場合と同じである。
【0271】
Eステージ405 では、命令1の最終ステップで2つの命令が並列に実行される。分類A3が分類A1と異なるのは、オペランドのバイパス処理を行なうことである。命令1の最終マイクロステップでは主演算回路208 のいずれかの演算器で演算が行なわれ、演算結果がD1バス124 を介して、デスティネーションとして指定されたレジスタに書き込まれる。命令2はこのD1バス124 へ出力された値を、命令2のデスティネーションとして指定されたレジスタに書き込むことにより、実行される。
【0272】
以下に具体例に即して説明する。命令1がR0の値をR1に加算するLフォーマットの加算命令(ADD:L) であり、命令2がR1の値をR2へ転送するLフォーマットの転送命令(MOV:L) である場合を考える。図50の模式図にこの2命令をデコードする際の命令コードのIIバス101 上のビット位置を示す。この場合、2命令間でオペランド干渉があるが、書き込みオペランドのオペランドバイパスを行なうことにより2命令を並列に実行できる命令の組み合せである。この場合、 BYPD1信号589 が”1”になる。
【0273】
各ステージでの具体的な処理の流れを図51のフローチャートに示す。各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。この例では、命令1がメインALU231で実行され、演算結果がD1バス124 を経由してR1に書き込まれると共に、この値がR2にも書き込まれる。この場合、副演算回路207 では有効な処理は行なわれない。
【0274】
(5.4.4) 「分類A4の場合の処理」
命令1が3ビット以下の左シフト命令であり、命令2が命令1のシフト結果を参照する算術演算/論理演算/比較命令である分類A4の場合について説明する。命令の組み合せとしては分類A1のサブセットになる。但し、2命令が並列に実行できるのは、命令1がQフォーマットの論理シフト命令(SHL:Q) であり、デスティネーションオペランドサイズがワードである場合のみである。
【0275】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類A4に対応するIIバス101 上の命令コードの位置としては、図38の(b) の場合のみである。命令1が後続のメモリ/即値オペランドを有していない命令2を並列に実行可能な場合、SENR信号501 が”1”になる。更に、命令1がデスティネーションがレジスタで、サイズがワードであり、3ビット以下のシフトを行なう命令である場合、ISFT信号506 が”1”になる。命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有していない命令であった場合には、命令1のコード長に応じて SVLD1信号512 が”1”になる。更に、命令2がサブALU234で実行可能な算術演算/論理演算/比較命令であった場合には、 SALU1信号526 が”1”になる。
【0276】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。オペランド干渉があれば命令1のコード長に応じて OPCONF1信号571 または OPCONF2信号574 が”1”になる。命令1の処理コード長が2または4バイトでオペランド干渉がなければ分類A1になる。しかしこの場合、命令1の処理コード長が2バイトであればオペランド干渉があっても2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。また、シフト演算と ALU演算との複合演算を行なうことを示すSFTALU信号584 が”1”になる。更に、命令2のソースオペランドをバイパスする場合にはBYPSRC信号587 が、命令2のデスティネーションオペランドをバイパスする場合にはBYPDST信号588 がそれぞれ”1”になる。但し、双方が”1”になる場合もある。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。これらのオペランドバイパスに関する信号もサブDコードとして出力され、転送されていく。その他の処理は、分類A1の場合と同じである。
【0277】
Aステージ403 及びFステージ404 における処理は、分類A1の場合と同じである。
【0278】
Eステージ405 では、命令1の最終ステップで2つの命令が並列に実行される。分類A4が分類A1と異なるのは、副演算回路207 でシフト演算と ALU演算との複合演算が行なわれることである。S1バス104 へ出力されたリテラル値(シフトカウント値)がラッチ241 に取り込まれ、S2バス121 へ出力されたデスティネーションデータがラッチ242 に取り込まれてメインシフタ232 でシフト演算が行なわれる。そのシフト結果がD1バス124 を介してデスティネーションとして指定されたレジスタに書き込まれることにより、命令1が実行される。副演算回路207 では、サブALU234とその入力シフタ235 とを用いて、命令1と命令2との複合演算を行なう。入力シフタ235 では、S2バス121 から取り込んだデータに対してS1バス104 から取り込んだシフトカウント値に従ってシフト操作を行ない、シフト結果をラッチ244, 245へ出力する。ラッチ244, 245は、干渉していないオペランドデータはS3バス122 またはS4バス123 から取り込み、オペランドが干渉しているデータは入力シフタ235 の出力をそのデータとして取り込む。たとえば、命令2のソースオペランドでオペランド干渉が起こっている場合、ラッチ244 にはS3バス122 の代わりに入力シフタ235 の出力が取り込まれ、命令2のデスティネーションオペランドでオペランド干渉が起こっている場合、ラッチ245 にはS4バス123 の代わりに入力シフタ235 からデータが取り込まれる。サブALU234では命令2で指定された演算が行なわれ、演算結果がD2バス125 を経由して命令1のデスティネーションとして指定されたレジスタに書き込まれる。命令1のデスティネーションと同一のレジスタに命令2が演算結果の書き込みを行なう場合、D2バス125 からの書き込みが優先される。入力シフタ235 で3ビットまでの左シフトのみを行なうのは、配列当等のアドレス計算で1〜3ビットの左シフトがよく用いられるためである。シフト可能なビット数を多くした場合には、シフタでの処理時間が長くなって動作周波数が向上しないためこのような設定にしてある。
【0279】
以下に具体例に即して説明する。命令1がR1の値を3ビット左シフトするQフォーマットのシフト命令(SHL:Q) であり、命令2がR1の値をR2に加算するLフォーマットの加算命令(ADD:L) である場合を考える。この場合、2命令間でオペランド干渉があるが、命令1のシフト演算と命令2の加算とを複合演算として行なうことにより2命令を並列に実行できる命令の組み合せである。この場合、SFTALU信号584 及びBYPSRC信号587 が”1”になる。
【0280】
各ステージでの具体的な処理の流れを図52のフローチャートに示す。各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。この例では、命令1がメインシフタ232 で実行され、演算結果がD1バス124 を経由してR1に書き込まれる。また、サブALU234と入力シフタ235 を用いて、命令1のシフト演算と命令2の加算とが同じサイクルで実行され、R2に演算結果が書き込まれる。
【0281】
(5.4.5) 「分類A5の場合の処理」
命令1が算術演算/論理演算命令であり、命令2が命令1の演算結果を参照する3ビット以下の左シフト命令である分類A5の場合について説明する。命令の組み合せとしては分類A1のサブセットになる。但し、2命令が並列に実行できるのは、命令2がQフォーマットの論理シフト命令(SHL:Q) である場合のみである。
【0282】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類A5に対応するIIバス101 上の命令コードの位置としては、図38の(b), (f), (i) の3つの場合がある。命令1が後続のメモリ/即値オペランドを有していない命令2を並列に実行可能な場合、SENR信号501 が”1”になる。更に、命令1がサブALU234で実行可能な算術演算/論理演算であった場合には、SALU信号507 が”1”になる。命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有していない命令であった場合には、命令1のコード長に応じて SVLD1信号512 または SVLD2信号541 が”1”になる。更に、命令2がサイズがワードであり、3ビット以下のシフトを行なう場合、命令1のコード長に応じて OSFT1信号527 または OSFT2信号544 が”1”になる。
【0283】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。オペランド干渉があれば命令1のコード長に応じて OPCONF1信号571 または OPCONF2信号574 が”1”になる。命令1の処理コード長が2または4バイトでオペランド干渉がなければ分類A1になる。しかしこの場合、オペランド干渉があっても2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。また、 ALU演算とシフト演算との複合演算を行なうことを示すALUSFT信号585 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。この複合演算に関する信号もサブDコードとして出力され、転送されていく。その他の処理は、分類A1の場合と同じである。
【0284】
Aステージ403 及びFステージ404 における処理は、分類A1の場合と同じである。但しこの場合、副演算回路207 の演算制御情報の生成に、メインRコード内の命令1のオペレーション情報が参照される。
【0285】
Eステージ405 では、命令1の最終ステップで2つの命令が並列に実行される。分類A5が分類A1と異なるのは、副演算回路207 で ALU演算とシフト演算との複合演算が行なわれることである。S1バス104 へ出力されたソースオペランドデータはラッチ239 に取り込まれ、S2バス121 へ出力されたデスティネーションオペランドデータはラッチ240 に取り込まれてメインALU231で算術/論理演算が行なわれ、演算結果がD1バス124 へ出力されることにより、命令1が実行される。副演算回路207 では、サブALU234とその出力シフタ236 を用いて、命令1と命令2との複合演算を行なう。ラッチ244 にはS1バス104 へ出力されたソースオペランドデータが取り込まれ、ラッチ245 にはS2バス121 へ出力されたデスティネーションオペランドデータが取り込まれる。サブALU234では、メインALU231で実行される命令1の算術/論理演算と全く同じ演算を行ない、演算結果を出力シフタ236 へ出力する。ラッチ243 は、S3バス122 へ出力されたリテラル値(命令2のシフトカウント値)を取り込む。出力シフタ236 では、サブALU234から取り込まれたデータをラッチ243 に取り込まれた値だけシフトする。シフト結果はD2バス125 を経由して命令2のデスティネーションとして指定されたレジスタに書き込まれる。この場合、命令1のデスティネーションになるレジスタと命令2のデスティネーションになるレジスタとは常に同じであり、D2バス125 から演算結果が書き込まれる。出力シフタ236 で3ビットまでの左シフトのみを行なう理由は、入力シフタ235 と同じ理由である。
【0286】
以下に具体例に即して説明する。命令1がR0の値をR1に加算するLフォーマットの加算命令(ADD:L) であり、命令2がR1の値を3ビット左シフトするQフォーマットのシフト命令(SHL:Q) である場合を考える。この場合、2命令間でオペランド干渉があるが、命令1の加算と命令2のシフト演算とを複合演算として行なうことにより2命令を並列に実行できる命令の組み合せである。この場合、ALUSFT信号585 が”1”になる。
【0287】
各ステージでの具体的な処理の流れを図53のフローチャートに示す。各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。この例では、命令1がメインALU231で実行される。また、サブALU234と出力シフタ236 を用いて、命令1の加算と命令2のシフトが同じサイクルで実行され、D2バス125 を経由してR1に演算結果が書き込まれる。
【0288】
(5.4.6) 「分類A6の場合の処理」
命令1が算術演算命令であり、命令2が命令1の演算結果を参照する算術演算/比較命令である分類A6の場合について説明する。命令の組み合せとしては分類A1のサブセットになる。但し、干渉するオペランドのサイズがワードである場合に限る。
【0289】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類A6に対応するIIバス101 上の命令コードの位置としては、図38の(b), (f), (i) の3つの場合がある。命令1が後続のメモリ/即値オペランドを有していない命令2を並列に実行可能な場合、SENR信号501 が”1”になる。更に、命令1がデスティネーションがレジスタでサイズがワードの3値加算器237 で実行可能な算術演算命令であった場合には、TADD信号508 が”1”になる。命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有していない命令であった場合には、命令1のコード長に応じて SVLD1信号512 または SVLD2信号541 が”1”になる。更に、命令2がサイズがワードであり、3値加算器237 で実行可能な算術演算/比較命令であった場合、命令1のコード長に応じて TADD1信号528 または TADD2信号545 が”1”になる。
【0290】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。オペランド干渉があれば命令1のコード長に応じて OPCONF1信号571 または OPCONF2信号574 が”1”になる。更に、命令2のソースオペランドとデスティネーションオペランドとが同じレジスタであった場合には、命令1のコード長に応じてOPCONFB1信号572 またはOPCONFB2信号575 が”1”になる。命令1の処理コード長が2または4バイトでオペランド干渉がなければ分類A1になる。しかしこの場合、オペランド干渉があっても、命令2のソースオペランドとデスティネーションオペランドとが異なる場合は2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。また、3値加算器237 で2つの算術演算の複合演算を行なうことを示すTINADD信号586 が”1”になる。更に、命令2のソースオペランドをバイパスする場合にはBYPSRC信号587 が、命令2のデスティネーションオペランドをバイパスする場合にはBYPDST信号588 がそれぞれ”1”になる。但し、双方が”1”になることはない。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。この複合演算に関する信号もサブDコードとして出力され、転送されていく。その他の処理は、分類A1の場合と同じである。
【0291】
Aステージ403 及びFステージ404 における処理は、分類A1の場合と同じである。但しこの場合、副演算回路207 の演算制御情報の生成に、メインRコード内の命令1のオペレーション情報が参照される。
【0292】
Eステージ405 では、命令1の最終ステップで2つの命令が並列に実行される。分類A6が分類A1と異なるのは、副演算回路207 で3値加算器237 を用いて2つの算術演算命令の複合演算が行なわれることである。S1バス104 へ出力されたソースオペランドデータはラッチ239 に取り込まれ、S2バス121 へ出力されたデスティネーションオペランドデータはラッチ240 に取り込まれてメインALU231で算術演算が行なわれる。この演算結果がD1バス124 へ出力されて命令1のデスティネーションとして指定されたレジスタに書き込まれることにより、命令1が実行される。副演算回路207 では、3値加算器237 を用いて、命令1と命令2との複合演算を行なう。ソースオペランドが干渉する場合には、ラッチ247 にS1バス104 へ出力された命令1のソースオペランドデータが取り込まれ、ラッチ246 にS2バス121 へ出力された命令1のデスティネーションオペランドデータが取り込まれ、ラッチ248 にS4バス123 へ出力された命令2のデスティネーションオペランドデータが取り込まれる。デスティネーションオペランドが干渉する場合には、ラッチ247 にS1バス104 へ出力された命令1のソースオペランドデータが取り込まれ、ラッチ248 にS2バス121 へ出力された命令1のデスティネーションオペランドデータが取り込まれ、ラッチ246 にS3バス122 へ出力された命令2のソースオペランドデータが取り込まれる。3値加算器237 では、3つのラッチ246,247, 248 に取り込まれた3値の加減算(命令1と命令2との複合演算)を行なう。演算結果はD2バス125 を経由して命令2のデスティネーションとして指定されたレジスタに書き込まれる。命令1の書き込みを行なうデスティネーションレジスタと命令2の書き込みを行なうデスティネーションレジスタとが同じ場合は、D2バス125 から演算結果が書き込まれる。
【0293】
以下に具体例に即して説明する。命令1がR0の値をR2に加算するLフォーマットの加算命令(ADD:L) であり、命令2がR1の値をR2に加算するLフォーマットの加算命令(ADD:L) である場合を考える。この場合、2命令間でオペランド干渉があるが、命令1の加算と命令2の加算とを複合演算として行なうことにより2命令を並列に実行できる命令の組み合せである。この場合、TINADD信号586 及びBYPDST信号588 が”1”になる。
【0294】
各ステージでの具体的な処理の流れを図54のフローチャートに示す。各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。この例では、命令1がメインALU231で実行される。また、3値加算器237 において、命令1と命令2との複合演算である3値の加算が行なわれ、D2バス125 を経由してR2に演算結果が書き込まれる。
【0295】
(5.4.7) 「分類B1の場合の処理」
次に分類Bについて説明する。まず、命令1がメモリ/即値オペランドを有しておらず、命令2がメモリ/即値オペランドを有し、オペランド干渉がない分類B1の場合について説明する。
【0296】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類B1に対応するIIバス101 上の命令コードの位置としては、図38の(b), (c), (d) の3つの場合がある。即ち、命令1の最終デコードサイクルでの処理コード長が2バイトである場合に限られる。これは、本実施例においてはアドレッシングモードをデコードするデコーダが、IIバス101 上の2バイト目と4バイト目のみにインプリメントされているからである。命令1が後続のメモリ/即値オペランドを有する命令2を並列に実行可能な場合、SENM信号502 が”1”になる。また、命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有する命令であった場合には、SVM1信号522 が”1”になる。
【0297】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。命令実行に関するオペランド干渉がなければ OPCONF1信号571 が”0”になる。また、命令2のSP値を含めアドレス計算で参照するレジスタ値を命令1が更新しなければ、OPCONFA1信号573 が”0”になる。命令1の処理コード長が2バイトで、オペランド干渉がなければ、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。またこの場合、命令2に対応してAコードが生成されるので、 I2ACD信号582 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。
【0298】
メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。サブDコード生成部314 では、第1SOPDEC 308の出力と2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 の出力に基づいてAコードを生成する。但し、この場合は命令2に関してAコードが生成される必要がある。従って、第2EADEC 311 の出力と第1SOPDEC 308の出力とに基づいてAコードが生成される。命令2が拡張データを有する場合には、拡張データ処理部32で拡張データの切り出し及びDISPバス102 への出力が行なわれる。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0299】
Aステージ403 以降の処理は、命令2のオペランドについてオペランドアドレス計算あるいはメモリアクセスが行なわれることを除いては、分類A1の処理と全く同じである。
【0300】
(5.4.8) 「分類B2の場合の処理」
命令1がメモリ/即値オペランドを有しておらず、命令2が命令1の演算結果をメモリにストアする転送命令である分類B2の場合について説明する。命令1のデスティネーションオペランドのサイズ及び命令2の両オペランドのサイズがワードである場合にのみ、書き込みオペランドのバイパスが可能である。また、命令1は最終マイクロステップでレジスタへ書き込むデータをD1バス124 へ出力する命令であり、且つ命令2はSフォーマットのストアを行なう転送命令(MOV:S) である場合に限られる。
【0301】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類B2に対応するIIバス101 上の命令コードの位置としては、図38の(b), (c), (d) の3つの場合がある。即ち、命令1の最終デコードサイクルでの処理コード長が2バイトである場合に限られる。命令1が最終マイクロステップでレジスタへ書き込むデータをD1バス124 へ出力し、メモリ/即値オペランドを有しておらず、後続のストア命令を並列に実行可能な場合、STEN信号503 が”1”になる。また、命令2がオペランドサイズがワードのメモリへレジスタ値をストアするSフォーマットの転送命令であった場合には、 ST1信号524 が”1”になる。
【0302】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。命令実行に関するオペランド干渉がなければ OPCONF1信号571 が”1”になる。また、命令2のSP値を含めアドレス計算で参照するレジスタ値を命令1が更新しなければ、OPCONFA1信号573 が”0”になる。命令1の処理コード長が2バイトで、アドレス計算に関するオペランド干渉がなければ、実行オペランドに関するオペランド干渉があっても2命令並列実行が可能であると判断されてSVALID信号581 が”1”になると共に、書き込みオペランドのバイパスを行なうことを示す BYPD1信号589 が”1”になる。またこの場合、命令2に対応してAコードが生成されるので I2ACD信号582 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。その他の処理は、分類A1の場合と同じである。
【0303】
Aステージ403 及びFステージ404 における処理は、分類B1の場合と同じである。
【0304】
Eステージ405 では、命令1の最終ステップで2つの命令が並列に実行される。分類B2が分類B1と異なるのは、オペランドのバイパス処理を行なうことである。命令1の最終マイクロステップでは主演算回路208 のいずれかの演算器で演算が行なわれ、演算結果がD1バス124 を介して、デスティネーションとして指定されたレジスタに書き込まれる。命令2はこのD1バス124 へ出力された値を、DDW212を経由してDDバス107 へ出力し、Sステージ406 でこのデータをデータキャッシュ74あるいは外部メモリの命令2で指定されるアドレス位置に書き込むことにより実行される。
【0305】
以下に具体例に即して説明する。命令1がR0の値をR1に加算するLフォーマットの加算命令(ADD:L) であり、命令2がR1の値をレジスタ相対間接モードで指定されたメモリにストアするSフォーマットの転送命令(MOV:S) である場合を考える。命令1のメモリオペランドのベースレジスタはR13 であり、変位(ディスプレースメント)は”16”であり、16ビットの拡張データで指定されるものとする。この場合、2命令間でオペランド干渉があるが、書き込みオペランドのオペランドバイパスを行なうことにより並列に実行可能な命令の組み合せであり、 BYPD1信号589 が”1”になる。
【0306】
各ステージでの具体的な処理の流れを図55のフローチャートに示す。各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。この例では、命令1がメインALU231で実行され、演算結果がD1バス124 を通じてR1に書き込まれると共に、命令2で指定されている処理に対応して、この値がメモリにも書き込まれる。この場合、副演算回路207 では、有効な処理は行なわれない。
【0307】
(5.4.9) 「分類B3の場合の処理」
命令1がメモリ/即値オペランドを有していない3ビット以下の左シフト命令であり、命令2がメモリ/即値オペランドを有し、命令1の演算結果を参照する算術演算/論理演算/比較命令である分類B3の場合について説明する。命令の組み合せとしては分類B1のサブセットになる。但し、2命令が並列に実行できるのは、命令1がQフォーマットの論理シフト命令(SHL:Q) であり、デスティネーションオペランドサイズがワードである場合のみである。
【0308】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類B1に対応するIIバス101 上の命令コードの位置としては、図38の(b), (c), (d) の3つの場合がある。即ち、命令1の最終デコードサイクルでの処理コード長が2バイトである場合に限られる。命令1が後続のメモリ/即値オペランドを有する命令2を並列に実行可能な場合、SENM信号502 が”1”になる。更に、命令1がデスティネーションがレジスタで、サイズがワードであり、3ビット以下のシフトを行なう場合、ISFT信号506 が”1”になる。また、命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有する命令であった場合には、SVM1信号522 が”1”になる。更に、命令2がサブALU234で実行可能な算術演算/論理演算/比較命令であった場合には、 SALU1信号526 が”1”になる。
【0309】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。命令実行に関するオペランド干渉があれば OPCONF1信号571 が”1”になる。また、命令2のSP値を含めアドレス計算で参照するレジスタ値を命令1が更新しなければ、OPCONFA1信号573 が”0”になる。命令1の処理コード長が2バイトで、オペランド干渉がなければ分類B1になる。しかしこの場合、命令1の処理コード長が2バイトで、命令2がアドレス計算で参照するオペランドでオペランド干渉がなければ実行オペランド干渉があっても2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、命令2に対応してAコードを生成するので、 I2ACD信号582 が”1”になる。また、シフト演算と ALU演算との複合演算を行なうことを示すSFTALU信号584 が”1”になる。更に、命令2のソースオペランドをバイパスする場合にはBYPSRC信号587 が、命令2のデスティネーションオペランドをバイパスする場合にはBYPDST信号588 がそれぞれ”1”になる。但し、双方が”1”になる場合もある。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。これらのオペランドバイパスに関する信号もサブDコードとして出力され、転送されていく。その他の処理は、分類A1の場合と同じである。
【0310】
Aステージ403 以降の処理は、命令2のオペランドについてオペランドアドレス計算あるいはメモリアクセスが行なわれることを除いては、分類A4の処理と全く同じである。
【0311】
(5.4.10)分類B4の場合の処理
命令1がメモリ/即値オペランドを有していない算術演算命令であり、命令2がメモリ/即値オペランドを有し、命令1の演算結果を参照する算術演算/比較命令である場合について説明する。命令の組み合せとしては分類B1のサブセットになる。但し、干渉するオペランドのサイズがワードである場合に限る。
【0312】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類B1に対応するIIバス101 上の命令コードの位置としては、図38の(b), (c), (d) の3つの場合がある。即ち、命令1の最終デコードサイクルでの処理コード長が2バイトである場合に限られる。命令1が後続のメモリ/即値オペランドを有する命令2を並列に実行可能な場合、SENM信号502 が”1”になる。更に、命令1がデスティネーションがレジスタでサイズがワードの3値加算器237 で実行可能な算術演算命令であった場合には、TADD信号508 が”1”になる。また、命令2が副演算回路207 で1サイクルで実行可能なメモリ/即値オペランドを有する命令であった場合には、SVM1信号522 が”1”になる。更に、命令2がサイズがワードであり、3値加算器237 で実行可能な算術演算/比較命令であった場合、 TADD1信号528 が”1”になる。
【0313】
オペランド干渉判定部323 では、命令1が更新するオペランドを命令2が参照するか否かを判定する。命令実行に関するオペランド干渉があればOPCONF1 信号571 が”1”になる。また、命令2のSP値を含めアドレス計算で参照するレジスタ値を命令1が更新しなければ、OPCONFA1信号573 が”0”になる。命令1の処理コード長が2バイトで、オペランド干渉がなければ分類B1になる。しかしこの場合、命令1の処理コード長が2バイトで、命令2がアドレス計算で参照するオペランドでオペランド干渉がなければ実行オペランド干渉があっても2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、命令2に対応してAコードが生成されるので、 I2ACD信号582 が”1”になる。また、3値加算器237 で2つの算術演算の複合演算を行なうことを示すTINADD信号586 が”1”になる。更に、命令2のソースオペランドをバイパスする場合にはBYPSRC信号587 が、命令2のデスティネーションオペランドをバイパスする場合にはBYPDST信号588 がそれぞれ”1”になる。但し、双方が”1”になる場合もある。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。これらのオペランドバイパスに関する信号もサブDコードとして出力され、転送されていく。その他の処理は、分類A1の場合と同じである。
【0314】
Aステージ403 以降の処理は、命令2のオペランドについてオペランドアドレス計算あるいはメモリアクセスが行なわれることを除いては、分類A4の処理と全く同じである。
【0315】
(5.4.11)「分類C1の場合の処理」
命令1と命令2が共にスタックトップのデータをポップしてレジスタにロードする転送命令である分類C1の場合について説明する。この2つの命令は、メモリ上の連続領域をアクセスするので、2命令の並列デコードが可能である。命令1,命令2共にデスティネーションがレジスタであるポップ命令(POP) またはソースがポップモードで指定されたLフォーマットの転送命令(MOV:L) であり、オペランドサイズがワードである場合にのみ、並列実行が可能である。また、命令1がSP値に値をロードしない場合に限られる。
【0316】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類C1に対応するIIバス101 上の命令コードの位置としては、図38の(b) の場合のみである。命令1が前述のスタックトップのデータをポップしてレジスタにロードする転送命令であり、オペランドサイズがワードであり、ロードするレジスタがSPでない場合に、 POP信号509 が”1”になる。また、命令2が前述のスタックトップのデータをポップしてレジスタにロードする転送命令であり、オペランドサイズがワードである場合に、POP1信号529 が”1”になる。命令1の処理コード長が2バイトの時、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、2ワードの並列転送を行なうので、MOV2W信号509 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。
【0317】
サブDコード生成部314 では、第1SOPDEC 308の出力と、2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 またはメインデコーダ302 の出力に基づいてAコードを生成する。但し、 MOV2W信号590 が”1”になったことに対応して、オペランドのサイズが8バイトに補正される。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0318】
Aステージ403 では、Aステージデコーダ34で命令1の後段デコードが行なわれ、命令2のデコード結果であるサブDコードはサブコード転送部35により転送される。アドレス計算部53では、ASP221の値を参照することによりオペランドアドレスが生成される。また、ASP221は ASP加算器224 により”+8”だけ補正される。また、命令1及び命令2のレジスタの更新情報がスコアボードレジスタ部52に登録される。
【0319】
Fステージ404 では、命令1の処理に対応するマイクロ命令が読み出され、第1マイクロ命令デコーダ85で命令1の実行制御情報が生成される。命令2の実行制御情報はサブRコードをハードワイヤードでデコードすることにより第2マイクロ命令デコーダ86で生成される。また、オペランドアクセス部17でオペランドがプリフェッチされる。この場合、オペランドサイズが8バイトであるものとしてオペランドがプリフェッチされる。この8バイトが8バイト境界内にある場合は、キャッシュがヒットすると8バイトのデータが1サイクルでフェッチされる。
【0320】
Eステージ405 では、2つの命令が並列に実行される。フェッチされた8バイトのデータの上位4バイトをS1バス104,ラッチ239,メインALU231, D1バス124 を経由してデスティネーションとして指定されたレジスタにロードオペランドとして書き込むことにより、命令1が実行される。フェッチされた8バイトのデータの下位4バイトをS3バス122,ラッチ244,サブALU234, D2バス125 を経由してデスティネーションとして指定されたレジスタにロードオペランドとして書き込むことにより、命令2が実行される。
【0321】
以下に具体例に即して説明する。ポップモードでソースオペランドが指定される、デスティネーションオペランドがレジスタであるLフォーマットの転送命令(MOV:L) が連続する場合を考える。命令1がR0に、命令2がR1にロードする命令とする。この場合、2命令の並列実行が可能な組み合わせであり、且つ命令1がSP(R15)にロードしないので、2命令が並列実行される。またこの場合、命令1の処理コード長が2バイトであるので、第1SOPDEC 308の出力結果に基づいてサブDコードが生成される。
【0322】
各ステージでの具体的な処理の流れを図56のフローチャートに示す。図56に示したように、各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。Aステージ403 では、ASP221の値が”+8”だけ補正される。Fステージ404 では、8バイト(2ワード)のデータがフェッチされる。Eステージ405 では、命令1,命令2で指定されたデスティネーションレジスタに2ワードのデータが並列に転送される。Aステージ403 では、更新されたASP221の値は、パイプライン処理に同期してESP226あるいはマスタSP228 へ転送されていく。
【0323】
(5.4.12)「分類C2の場合の処理」
命令1及び命令2が共にレジスタ上のデータをスタックトップにプッシュする転送命令である分類C2の場合について説明する。この2つの命令は、メモリ上の連続領域をアクセスするので、2命令の並列デコードが可能である。命令1,命令2共にソースがレジスタであるプッシュ命令(PUSH)またはデスティネーションがプッシュモードで指定されたSフォーマットの転送命令(MOV:S) であり、オペランドサイズがワードである場合にのみ、並列実行が可能である。また、命令2がSP値をストアしない場合に限られる。
【0324】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。分類C1に対応するIIバス101 上の命令コードの位置としては、図38の(b) の場合のみである。命令1が前述のレジスタ値をスタックトップにプッシュする転送命令であり、オペランドサイズがワードである場合に、PUSH信号510 が”1”になる。また、命令2が前述のSP以外のレジスタ値をスタックトップにプッシュする転送命令であり、オペランドサイズがワードである場合に、 PUSH1信号530 が”1”になる。命令1の処理コード長が2バイトの時、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、2ワードの並列転送が行なわれるので MOV2W信号509 が”1”になると共に、2ワードのプッシュを行なうことを示すPUSH2W信号591 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。
【0325】
メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。サブDコード生成部314 では、第1SOPDEC 308の出力と、2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 またはメインデコーダ302 の出力に基づいてAコードを生成する。但し、 MOV2W信号590 が”1”になったことに対応して、オペランドのサイズが8バイトに補正される。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0326】
Aステージ403 では、Aステージデコーダ34で命令1の後段デコードが行なわれ、命令2のデコード結果であるサブDコードはサブコード転送部35により転送される。アドレス計算部53では、ASP221の値を参照し、”8”デクリメントすることによりオペランドアドレスが生成される。また、ASP221は ASP加算器224 により”−8”だけ補正される。
【0327】
Fステージ404 では、命令1の処理に対応するマイクロ命令が読み出され、第1マイクロ命令デコーダ85で命令1の実行制御情報が生成される。命令2の実行制御情報はサブRコードをハードワイヤードでデコードすることにより第2マイクロ命令デコーダ86で生成される。
【0328】
Eステージ405 では、2つの命令が並列に実行される。命令1でプッシュするデータがレジスタファイル205 から、S1バス104,ラッチ239,メインALU231, D1バス124 を経由してDDW212へ転送される。命令2でプッシュするデータがレジスタファイル205 から、S3バス122,ラッチ244,サブALU234, D2バス125 を経由してDDW212へ転送される。この場合、連続するプッシュ命令を処理するので、PUSH2W信号591 が”1”になったことに対応して、命令2でストアするデータが上位に、命令1でストアするデータが下位になるようにDDW212内の整置回路で整置及び連結を行なってストアすべき8バイトデータが生成されてDDバス107 を経由してオペランドアクセス部17へ転送される。Sステージ406 では、このデータがデータキャッシュ74あるいは外部メモリの命令2で指定されるアドレス位置に書き込まれる。この8バイトが8バイト境界内にある場合、ストアバッファへの登録は1サイクルで終了する。
【0329】
以下に具体例に即して説明する。デスティネーションがプッシュモードで指定されるSフォーマットの転送命令(MOV:S) が連続する場合を考える。命令1がR0を、命令2がR1をプッシュする命令とする。この場合、2命令の並列実行が可能な組み合わせであり、且つ命令2がSP(R15)値をプッシュしないので、2命令が並列実行される。またこの場合、命令1の処理コード長が2バイトであるので、第1SOPDEC 308の出力結果に基づいてサブDコードが生成される。
【0330】
各ステージでの具体的な処理の流れを図57のフローチャートに示す。図57に示したように、各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。Aステージ403 では、アドレス計算部53でASP221の値を”8”デクリメントすることにより、オペランドアドレスを計算し、ASP221の値が”−8”だけ補正される。Eステージ405 では、命令1,命令2でソースとして指定されたレジスタ値を転送し、Sステージでは、連結された8バイトデータをデータキャッシュ74あるいは外部メモリに書き込む。Aステージ403 では、更新されたASP221の値がパイプライン処理に同期してESP226あるいはマスタSP228 へ転送されていく。
【0331】
(5.4.13)「分類C3の場合の処理」
命令1と命令2が共にレジスタ間接/レジスタ相対間接モードでソースオペランドが指定され、レジスタにロードする転送命令である分類C3の場合について説明する。この2つの命令がメモリ上の連続領域をアクセスする場合には、2命令の並列デコードが可能である。命令1,命令2が共にLフォーマットの転送命令(MOV:L) であり、オペランドサイズがワードである場合にのみ、並列実行が可能である。大きく分けて2つの場合に並列実行が可能である。並列実行が可能な2つの場合の命令コードを図58の模式図に示す。
【0332】
一方は参照符号(a) に示されているように、命令1がレジスタ間接モードであり、命令2が16ビット変位のレジスタ相対間接モードである場合である。並列実行が可能な条件は、命令1のオペランドアドレス計算時のベースレジスタ502 と命令2のベースレジスタ503 とが同じで、命令2のディスプレースメント(変位)504 の値が”4”であり、命令1が更新するレジスタ501 が命令2のアドレス計算のベースアドレスレジスタ503 とは異なることである。この場合は、命令1が2バイトである。
【0333】
他方は参照符号(b) に示されているように、命令1及び命令2が共に16ビット変位のレジスタ相対間接モードである場合である。並列実行が可能な条件は、命令1のオペランドアドレス計算時のベースレジスタ506 と命令2のベースレジスタ508 とが同じで、命令2のディスプレースメント(変位)509 の値が命令1のディスプレースメント(変位)507 の値より”4”だけ大きく、命令1が更新するレジスタ505 が命令2のアドレス計算のベースアドレスレジスタ508 とは異なることである。この場合は、命令1が4バイトである。
【0334】
まず、命令1がレジスタ間接モードのロード命令である場合について説明する。
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。命令1が前述のレジスタ間接モードのロード命令であり、オペランドサイズがワードである場合に、RILD信号511 が”1”になる。また、命令2が前述のレジスタ相対間接モードのロード命令であり、オペランドサイズがワードである場合に、 RILD1信号531 が”1”になる。更に、命令1及び命令2のアドレス計算に使用されるベースレジスタが一致する場合にはMTR1R2信号554 が”1”になり、アドレス計算で参照されるレジスタを命令1が更新しない場合にはMTL1R2信号554 が”0”になり、命令1のディスプレースメント値が”4”である場合にはDISP1信号561 が”1”になる。命令1の処理コード長が2バイトで上述の条件がすべて成立する場合には、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、2ワードの並列転送が行なわれるので、MOV2W信号509 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。
【0335】
メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。サブDコード生成部314 では、第1SOPDEC 308の出力と、2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 の出力に基づいてAコードを生成する。但し、 MOV2W信号590 が”1”になったことに対応して、オペランドのサイズが8バイトに補正される。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0336】
Aステージ403 では、Aステージデコーダ34で命令1の後段デコードが行なわれ、命令2のデコード結果であるサブDコードはサブコード転送部35により転送される。アドレス計算部53では、ベースアドレス値を参照してそのまま転送することによりオペランドアドレスが生成される。また、命令1及び命令2のレジスタの更新情報がスコアボードレジスタ部52に登録される。
【0337】
次に、命令1がレジスタ相対間接モードのロード命令である場合について説明する。
【0338】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。命令1が前述のレジスタ相対間接モードのロード命令であり、オペランドサイズがワードである場合に、RILD信号511 が”1”になる。また、命令2が前述のレジスタ相対間接モードのロード命令であり、オペランドサイズがワードである場合に、 RILD2信号546 が”1”になる。更に、命令1及び命令2のアドレス計算に使用されるベースレジスタが一致する場合にはMTR1R3信号558 が”1”になり、アドレス計算で参照されるレジスタを命令1が更新しない場合にはMTL1R3信号556 が”0”になり、命令2のディスプレースメント値が”命令1のディスプレースメント値+4”である場合にはDISP2信号562 が”1”になる。命令1の処理コード長が4バイトで上述の条件がすべて成立する場合には、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、2ワードの並列転送を行なうので、 MOV2W信号509 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。
【0339】
メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。サブDコード生成部314 では、第2SOPDEC 309の出力と、2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 の出力に基づいてAコードを生成する。但し、 MOV2W信号590 が”1”になったことに対応して、オペランドのサイズが8バイトに補正される。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0340】
Aステージ403 では、Aステージデコーダ34で命令1の後段デコードが行なわれ、命令2のデコード結果であるサブDコードはサブコード転送部35により転送される。アドレス計算部53では、ベースアドレス値と命令1のディスプレースメント値を加算することによりオペランドアドレスが生成される。また、命令1及び命令2のレジスタの更新情報がスコアボードレジスタ部52に登録される。
【0341】
以下の処理は、双方の場合で同じである。
Fステージ404 では、命令1の処理に対応するマイクロ命令が読み出され、第1マイクロ命令デコーダ85で命令1の実行制御情報が生成される。命令2の実行制御情報はサブRコードをハードワイヤードでデコードすることにより第2マイクロ命令デコーダ86で生成される。また、オペランドアクセス部17でオペランドがプリフェッチされる。この場合、オペランドサイズが8バイトであるものとして、オペランドがプリフェッチされる。この8バイトが8バイト境界内にある場合、キャッシュがヒットすると8バイトのデータが1サイクルでフェッチされる。
【0342】
Eステージ405 では、2つの命令が並列に実行される。フェッチされた8バイトのデータの上位4バイトをS1バス104,ラッチ239,メインALU231, D1バス124 を経由してデスティネーションとして指定されたレジスタにロードオペランドとして書き込むことにより、命令1が実行される。フェッチされた8バイトのデータの下位4バイトをS3バス122,ラッチ244,サブALU234, D2バス125 を経由してデスティネーションとして指定されたレジスタにロードオペランドとして書き込むことにより、命令2が実行される。
【0343】
以下に具体例に即して説明する。ここでは命令1及び命令2が共にレジスタ相対間接モードのLフォーマットの転送命令(MOV:L) である場合を考える。命令1がR13 の値に”16”(ディスプレースメント値)を加えたアドレスのデータをR0へ転送し、命令2がR13 の値に”20”(ディスプレースメント値)を加えたアドレスのデータをR1へ転送する命令とする。この場合、2命令の並列実行が可能な組み合わせであり、且つ命令1がR13 にロードしないので、2命令が並列実行される。またこの場合、命令1の処理コード長が4バイトであるので、第2SOPDEC309の出力結果に基づいてサブDコードが生成される。
【0344】
各ステージでの具体的な処理の流れを図59のフローチャートに示す。図59に示したように、各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。Aステージ403 では、命令1に関するオペランドのアドレスが計算される。Fステージ404 で8バイト(2ワード)のデータがフェッチされ、Eステージ405 で命令1,命令2で指定されたデスティネーションレジスタに2ワードのデータが並列に転送される。
【0345】
(5.4.14)「分類C4の場合の処理」
命令1と命令2がレジスタ間接/レジスタ相対間接モードでデスティネーションオペランドが指定され、レジスタの値をストアする転送命令である分類C4の場合について説明する。この2つの命令がメモリ上の連続領域をアクセスする場合には、2命令の並列デコードが可能である。命令1,命令2は共にSフォーマットの転送命令(MOV:S) であり、オペランドサイズがワードである場合にのみ、並列実行が可能である。上述のレジスタへのロードを行なう場合と同様に、大きく分けて2つの場合に並列実行が可能である。並列実行が可能な2つの場合の命令コードは、オペレーションコードは当然異なるが、各フィールドのビット位置は図56の模式図に示したロードの場合と同じである。
【0346】
一方は参照符号(a) に示されているように、命令1がレジスタ間接モードであり、命令2が16ビット変位のレジスタ相対間接モードである場合である。並列実行が可能な条件は、命令1のオペランドアドレス計算時のベースレジスタ502 と命令2のベースレジスタ503 とが同じで、命令2のディスプレースメント(変位)504 の値が”4”であり、命令1が更新するレジスタ501 が命令2のアドレス計算のベースアドレスレジスタ503 とは異なることである。この場合は、命令1が2バイトである。
【0347】
他方は参照符号(b) に示されているように、命令1及び命令2が共に16ビット変位のレジスタ相対間接モードである場合である。並列実行が可能な条件は、命令1のオペランドアドレス計算時のベースレジスタ506 と命令2のベースレジスタ508 が同じで、命令2のディスプレースメント(変位)509 の値が命令1のディスプレースメント(変位)507 の値より”4”だけ大きいことである。この場合は、命令1が4バイトである。
【0348】
まず、命令1がレジスタ間接モードのストア命令である場合について説明する。
【0349】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。命令1が前述のレジスタ間接モードのストア命令であり、オペランドサイズがワードである場合に、RIST信号512 が”1”になる。また、命令2が前述のレジスタ相対間接モードのストア命令であり、オペランドサイズがワードである場合に、 RIST1信号532 が”1”になる。更に、命令1及び命令2のアドレス計算に使用されるベースレジスタが一致する場合にはMTR1R2信号554 が”1”になり、命令1のディスプレースメント値が”4”である場合にはDISP1信号561 が”1”になる。命令1の処理コード長が2バイトで上述の条件がすべて成立する場合には、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、2ワードの並列転送が行なわれるので、 MOV2W信号509 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。
【0350】
メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。サブDコード生成部314 では、第1SOPDEC 308の出力と、2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 の出力に基づいてAコードを生成する。但し、 MOV2W信号590 が”1”になったことに対応して、オペランドのサイズが8バイトに補正される。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0351】
Aステージ403 では、Aステージデコーダ34で命令1の後段デコードが行なわれ、命令2のデコード結果であるサブDコードはサブコード転送部35により転送される。アドレス計算部53では、ベースアドレス値を参照しそのまま転送することによりオペランドアドレスの生成が行なわれる。
【0352】
次に、命令1がレジスタ相対間接モードのストア命令である場合について説明する。
【0353】
Dステージ402 において、2命令の並列デコードと並列実行可否判定とが行なわれる。命令1が前述のレジスタ相対間接モードのストア命令であり、オペランドサイズがワードである場合に、RIST信号512 が”1”になる。また、命令2が前述のレジスタ相対間接モードのロード命令であり、オペランドサイズがワードである場合に、 RIST2信号547 が”1”になる。更に、命令1と命令2との双方のアドレス計算に使用されるベースレジスタが一致する場合にはMTR1R3信号558 が”1”になり、命令2のディスプレースメント値が、”命令1のディスプレースメント値+4”である場合にはDISP2信号562 が”1”になる。命令1の処理コード長が4バイトで上述の条件がすべて成立する場合には、2命令並列実行が可能であると判断されてSVALID信号581 が”1”になる。この場合、2ワードの並列転送が行なわれるので、 MOV2W信号509 が”1”になる。サブコード有効判定部324 で生成されるその他の信号はすべて”0”になる。
【0354】
メインDコード生成部313 では、メインデコーダ302 の出力に基づいてメインDコードを生成する。サブDコード生成部314 では、第2SOPDEC 309の出力と、2命令並列デコード可否判定部303 からの出力信号とをあわせてサブDコードを生成する。Aコード生成部307 では、アドレッシングモードデコーダ305 の出力に基づいてAコードを生成する。但し、MOV2W 信号590 が”1”になったことに対応して、オペランドのサイズが8バイトに補正される。このようにして、2命令が並列にデコード可能であると判断された場合、2つの命令のデコード結果が同時に出力される。
【0355】
Aステージ403 では、Aステージデコーダ34で命令1の後段デコードが行なわれ、命令2のデコード結果であるサブDコードはサブコード転送部35により転送される。アドレス計算部53では、ベースアドレス値と命令1のディスプレースメント値を加算することによりオペランドアドレスが生成される。
【0356】
以下の処理は、双方の場合で同じである。
Fステージ404 では、命令1の処理に対応するマイクロ命令が読み出され、第1マイクロ命令デコーダ85で命令1の実行制御情報が生成される。命令2の実行制御情報はサブRコードをハードワイヤードでデコードすることにより第2マイクロ命令デコーダ86で生成される。
【0357】
Eステージ405 では、2つの命令が並列に実行される。命令1でストアするデータがレジスタファイル205 から、S1バス104,ラッチ239,メインALU231, D1バス124 を経由してDDW212へ転送される。命令2でストアするデータがレジスタファイル205 から、S3バス122,ラッチ244,サブALU234, D2バス125 を経由してDDW212へ転送される。この場合、PUSH2W信号591 は”0”であるので、命令1でストアするデータが上位に、命令2でストアするデータが下位になるようにDDW212内の整置回路で整置及び連結が行なわれてストアすべき8バイトデータが生成され、DDバス107 を経由してオペランドアクセス部17へ転送される。Sステージ406 では、このデータをデータキャッシュ74あるいは外部メモリの命令2で指定されるアドレス位置に書き込む。この8バイトが8バイト境界内にある場合、ストアバッファへの登録は1サイクルで終了する。
【0358】
以下に具体例に即して説明する。ここでは命令1がレジスタ間接モードで、命令2がレジスタ相対間接モードのSフォーマットの転送命令(MOV:S) である場合を考える。命令1がR13 の値に”16”(ディスプレースメント値)を加えたアドレスのメモリにR0のデータを転送し、命令2がR13 の値に”20”(ディスプレースメント値)を加えたアドレスのメモリにR1のデータを転送する命令であるとする。この場合、2命令の並列実行が可能な組み合わせであり、2命令が並列実行される。この場合、命令1の処理コード長が2バイトであるので、第1SOPDEC 308の出力結果に基づいてサブDコードが生成される。
【0359】
各ステージでの具体的な処理の流れを図60のフローチャートに示す。図60に示したように、各パイプラインステージで2つの命令が並列に処理され、Eステージ405 で並列に実行される。Aステージ403 では、命令1に関するオペランドのアドレスが計算される。Eステージ405 では、命令1,命令2でソースとして指定されたレジスタ値を転送する。Sステージでは、連結された8バイトデータをデータキャッシュ74あるいは外部メモリに書き込む。
【0360】
以上では各論を述べたが、2命令並列デコード可否判定部303 ではメインデコーダ302 における命令1のデコード結果とサブデコーダ304 における命令2のデコード結果とに基づいて、上述のすべての場合の2命令の並列デコードの可否が総合的に判定される。メインデコーダ302 あるいはサブデコーダ308 からは、種々の命令の組み合せを判定できるように同じ命令に関して複数の並列デコード可否判定のための制御信号が”1”になる場合がある。しかし、同時に複数の分類に含まれて誤動作することがないように、制御信号の生成に制限を加える等の対策を講じて、誤動作を防いでいる。
【0361】
このように本発明のデータ処理装置では、オペランド干渉のある複数の命令に関しても、多くの組み合せについて並列に実行できるので、データ処理装置の性能を向上させることができる。シフト命令と他の命令とを実行する際には、シフト可能なシフト幅をあらかじめ定められた特定の値のみに限定しているので、少ないハードウェア量の追加で、高速な処理が可能となっている。算術演算同士の並列実行では3値加算器を用いることにより、高速な2命令の並列実行が可能となっている。転送命令は使用頻度が非常に高く、オペランド干渉のある2命令の少なくとも一方が転送命令である場合の並列実行は、性能向上において非常に有効である。
【0362】
また、メモリアクセスを行なう2命令では、命令デコード段階で判定できる連続領域をアクセスする命令を並列に実行する。ハードウェアとしてはアクセスするデータ幅を増加するのみで対処でき、キャッシュ等のRAM を2ポートにしたりあるいはインタリーブを行なう必要はないので、簡単な制御でかつ小さな面積(コスト)の増加で性能を向上できる。また、キャッシュのセンスアンプの数も削減できるので消費電力の削減にも有効である。サブルーチンコール時のレジスタ値の退避,復帰等の連続領域のアクセスを行なう場合には非常に有効である。
【0363】
(6) 「他の変形例」
上述の実施例では、算術/論理演算命令とシフト命令とを並列に実行する場合、シフトカウント値が1〜3ビットの左シフトである場合にのみ制限しているが、チップ面積, 動作速度が許す限りいくつにしてもよい。たとえば、−8, −1乃至−3, 1乃至3, 8程度のシフトを行なうようにしてもよい (但し、”−”は右シフトを示す) 。
【0364】
上述の実施例では、算術/論理演算命令とシフト命令とを並列に実行するために、出力シフタ236 をサブALU234の出力に結合しているが、たとえばメインALU231の出力に接続してもよい。
【0365】
上述の実施例では、入力シフタ235 をサブALU234の双方に結合しているが、ソースまたはデスティネーションのいずれか一方のみの場合に2命令の並列実行を可能にするのであれば、いずれか一方に結合するのみでよい。また、サブALU234の入力シフタ235 と出力シフタ236 とのいずれか一方のみをインプリメントしてもよいし、1つのシフタを切り替えて使用するような構成にしてもよい。また、必ずしもサブシフタ238 をインプリメントする必要はなく、シフト幅は限定されるが、入力シフタ235 または出力シフタ236 のいずれか一方を用いて、それで実行可能な場合のみシフト命令を後続命令として発行できるようにしてもよい。
【0366】
上述の実施例では、サブALU234とは独立に3入力加算器237 を設けているが、タイミング的に問題がなければ、サブALU234に3値加算機能を付加し、3入力加算器237 を削除してもよい。
【0367】
上述の実施例では、3入力加算器237 により、算術演算命令と算術演算命令との組み合せのみ複合演算を行なっているが、3入力加算器237 に論理演算機能を付加したり、あるいは別途3入力論理演算器を設けることにより、論理演算命令と論理演算命令との組み合せを並列に実行するようにしてもよい。但しこの場合は制御信号の生成も変更する必要がある。論理演算と算術演算との複合演算を行なわないのであれば、たとえば論理演算と論理演算との組み合せを判定するためのメインデコーダ302 あるいはサブデコーダ308 からの制御信号を追加し、サブコード有効判定部324 で判定項目を増やせばよい。また、ビットセット, ビットクリア, ビット反転命令も基本的には論理演算を行なうことにより実現できる。ビット操作命令を並列実行の処理対象とすることも当然可能である。
【0368】
上述の実施例では、オペランド干渉時には一方の命令のみが実行されるので、一方の演算器では意味のないオペレーションを行なっている場合もあるが、そのような場合消費電力を削減するためにその演算器が動作しないように制御してもよい。また、2命令の複合演算を行なう場合、命令1の演算は主演算回路208 で行なっているが、副演算回路207 での複合演算の中間結果(命令1の演算結果)をバスへ出力するようにしてもよい。
【0369】
上述の実施例では、2つの2オペランド演算命令が実行できるようなハードウェア構成をとっているが、一方の命令が1オペランド演算命令である場合にのみ限定した場合には3値加算器237 及び別途付加した2つの論理演算命令を行なうための複合論理演算回路入力ポートを2つに削減することが可能である。1オペランド演算命令としては、データの”0”/”1”反転を行なう命令、あるいは2の補数をとる(符号を反転する)命令等がある。
【0370】
更に、命令1と命令2との複合演算を行なう際に、上記実施例では命令1のデスティネーションオペランドと命令2のデスティネーションオペランドとが同じレジスタである場合にも、命令1の演算を行なっている。このような場合、もし演算命令でフラグを更新しない命令を含む命令セットを処理するのであれば、命令1の演算は行なう必要はなく、命令1と命令2との複合演算のみを行なって演算結果をデスティネーションオペランドに書き戻せばよい。更に、命令1及び命令2のデスティネーションオペランドが同じ場合のみ2命令の並列実行を行なうのであれば、演算器にオペランドの値を転送するためのバスの本数も、演算結果をレジスタファイル等へ転送するバスの本数も削減できる。また、命令1のデスティネーションオペランドと命令2のデスティネーションオペランドとが異なっても、命令2が比較命令であれば、命令2の演算結果を転送する必要がないので演算結果をレジスタファイル等へ転送するバスの本数は削減できる。
【0371】
また、ストアオペランドのバイパスを行なう際には、主演算回路208 からD1バス124 へ出力された値を参照してバイパスしているが、主演算回路208 からD2バス125 にも出力するようにしてもよいし、主演算回路208 で行なうのと同じオペレーションを副演算回路207 で行ない、副演算回路207 での演算結果をD2バス125 にも出力するように制御してもよい。構成によっては、多少並列実行できる命令の組み合せが少なくなる可能性もある。
【0372】
上述の実施例では、2つのメモリオペランドを有する2命令の並列実行を行なうのは、2つの命令が共にロード命令であるか、または2つの命令が共にストア命令である場合のみに限られているが、2つの命令が連続したメモリ領域のリードモディファイライトオペランドを有する場合に2命令の並列実行を行なってもよい。
【0373】
上述の実施例では、2つのメモリオペランドを有する2命令の並列実行を行なうのは、2つのオペランドのサイズがワード(この場合は4バイト)である場合に限っていたが、他のアクセスサイズに対処可能にすることは容易である。また、プッシュ命令が連続する場合を除いては命令1のメモリオペランド格納位置が命令2のメモリオペランド格納位置よりアドレスが小さい場合のみ対処していたが、逆の場合に対処できるようにしてもよい。また、上記実施例では命令1がレジスタ相対間接モードであり、命令2がレジスタ間接モードである場合は対象としていないが、このような場合も並列に実行できるようにしてもよい。また、オペランドデータは64ビットのDDバス107 で整置された8バイトデータ単位で転送しているが、DDバス107 の上位32ビットと下位32ビットとを独立に扱えるようにし、キャッシュの1ラインであれば、8バイト整置されていないデータも1サイクルで転送できるようにしてもよい。この場合、ハードウェアは多少増加するが2つのメモリオペランドを1サイクルで転送できる確率が向上するので性能は向上する。
【0374】
上述の実施例では、データキャッシュは1つのアドレスに対して1ラインのみのアクセスが行なわれる。従って、たとえキャッシュがヒットしてもアクセス対象のデータのすべてがキャッシュの1ラインに入っていなければ1サイクルでアクセスすることは出来ない。しかし、キャッシュの1ラインの境界をまたぐアクセスも1サイクルで実行できるデータ処理装置も存在する。たとえば、キャッシュを2分割し、そのそれぞれにアドレスデコーダを備え、境界をまたぐ場合には先頭アドレスを含むアドレスで一方をアクセスし、インクリメンタによりそのアドレスを”1”インクリメントしたアドレスで他方をアクセスすることにより、キャッシュの2ラインにまたがるオペランドデータを1サイクルでアクセスするデータ処理装置もある。また、キャッシュを複数のバンクに分割し、異なるバンクであれば1サイクルでアクセスできるものもある。本発明は実施例に示したキャッシュの構成に対してハードウェアコストを削減する上で特に有効であるが、性能を向上するためにキャッシュを他の構成とした場合にも当然有効である。要するに、命令デコード段階で1サイクルでアクセス可能か否かを判定し、1サイクルで実行できる場合あるいはその可能性が高い場合にメモリアクセスを行なう2命令を並列に発行して処理すればよいのである。RISCのように、データが必ずワード境界にのっている場合には特に有効である。通常、CISCでもコンパイラ等でデータを整置するので、このような手法は有効である。
【0375】
また上記実施例では、命令キャッシュを備えているが、内部データRAM を備えてもよい。また、必ずしも内部にメモリを有する必要はなく、必ず外部にアクセスする場合にも有効である。この場合、2ワード分の外部バスを有する方が有効である。少なくともオペランドアクセス部またはバスインタフェイス部と演算部とが2ワードのデータを並列に実行する手段を備えていれば、2つのメモリオペランドを有する命令を並列に処理するのに有効である。ストアに関してはストアバッファで吸収すればよいが、フェッチに関しては2ワードを並列に1回の処理でアクセスして転送する方が効率がよい。但し、外部データバス幅が1ワード分であっても、2ワードを一度にアクセスすることにより1ワードを2回アクセスするよりも少ないサイクル数でアクセスできれば、本発明のような処理方法は有効である。たとえば、1ワードのアクセスであれば1つのアドレスに対して1つのデータを転送する単一転送を行なうが、2ワードのアクセスであれば1つのアドレスに対して複数のデータを転送するバースト転送を行なう場合には、内部にメモリがなく、外部バスがワード分であっても有効である。
【0376】
上述の実施例では、並列に実行されるのは2命令であったが、3命令以上の複数の命令を並列に実行することも可能である。
【0377】
上述の実施例では、並列にデコードされた2つの命令を並列に実行する場合について説明している。データ処理装置には、1命令づつデコードしてパイプラインが詰まった場合のみ2つの命令を並列に実行するものもある。また、 IBMとMotolora社のPowerPC 603 のように、複数の命令を並列にデコードし、デコードされた命令を複数の独立に実行可能な実行ユニットに発行するようなデータ処理装置もある。この場合、並列にデコードされたか否かには拘わらず、複数の命令を並列に実行することが可能である。本発明は、並列にデコードされた2命令のみを並列に実行する場合のみならず、上述のような種々のパイプライン処理を行なうデータ処理装置に対処可能である。命令デコード後に2命令を並列実行するか否かを判定する場合には、上記実施例でデコード段階での判定に必要な情報を命令に付随して転送し、命令実行以前の任意のパイプラインステージで複数の命令間の並列実行可/不可判定を行なえばよい。
【0378】
上述の実施例では、CISCタイプの命令セットを扱っているが、もちろんRISCタイプの命令セットを有するデータ処理装置に適応することも可能である。また上述の実施例では、命令の実行を1段のパイプラインステージで行なっているが、複数のパイプラインステージに分割して処理を行なうようにしてもよい。
【0379】
このように、本発明は実施例で示した構成に限定されるものではなく、オペランド干渉のある複数の命令を並列に実行したり、メモリオペランドを有する複数の命令を並列に実行する場合に有効である。複数命令の並列実行を行なう命令の組み合せ及びハードウェア構成は、ターゲットとなる仕様や価格性能比に基づいて決定すればよい。本発明は、種々のハードウェア構成に対して有効である。
【0380】
〔実施例2〕
上述の実施例では、種々の組み合せの2命令を並列に実行するために、多くのハードウェアを必要としている。しかし、並列に実行可能な命令の組み合せを限定すれば、必要なハードウェア量は削減できる。どのような組み合せの2命令を並列実行の対象とするかは、性能とハードウェアコストとにより決定すればよい。以下に、並列に実行できる命令の組み合せを限定した例を示す。
【0381】
本実施例では、オペランド干渉のある2命令のみを実行する。更に、本実施例では命令2が転送命令である場合を除き、命令1のデスティネーションオペランドと命令2のデスティネーションオペランドとが干渉した場合にのみ2命令を並列実行する。また、2つの算術演算命令の実行に際しては、一方の命令は小さな即値の加減算を行なう場合のみを処理対象とする。処理対象が異なるため、命令デコードを含むハードウェアの構成は実施例1とは当然異なるが、基本的な処理内容は実施例1と同じであるのでパイプラインの前段での処理に関する説明を省略する。但し、ここでは通常の演算命令に関してフラグの更新を行なわないか、あるいは命令2の実行結果のみをフラグに反映させればよい場合を想定する。
【0382】
全体のブロック構成は、図26に示した実施例1のブロック構成とほぼ同じである。実施例2の整数演算部の構成例を図62のブロック図に示す。説明を簡単化するため、一部のブロックは省略している。図34, 図61に示した実施例1の整数演算部16と比べてバスの本数も少なく、演算器のハードウェア量も大幅に削減されている。整数演算部は、演算回路601,レジスタファイル602,SP部603,メモリアドレスレジスタ部604,メモリデータレジスタ部605 等で構成されており、S1バス621,S2バス622,D1バス623 で各部が接続されている。ここでは、2ワードのデータを並列に転送することは考えられておらず、DDバス626 は32ビット幅である。
【0383】
演算回路601 は3入力ALU610及びシフタ614 等を含む。更に、3入力ALU610の入力の一つには入力シフタ607 が、出力には出力シフタ611 が直列にそれぞれ接続されている。606, 608, 609, 612, 613 はラッチである。また、レジスタファイル602 またはSP部603 の各レジスタは、D1バス623 に結合された入力ポートを有し、同時に2つのレジスタにD1バス623 上の値を書き込む機能を有する。
【0384】
図示していないが命令デコード部では、以下の場合のみ2命令が並列にデコードされ、発行される(実施例1の分類に従う)。
【0385】
・分類A2
・分類A3
・分類B2
・分類A4またはB3で命令2が算術/論理演算命令で命令1のデスティネー
ションオペランドと命令2のデスティネーションオペランドとが一致
・分類A5で命令1のデスティネーションオペランドと命令2のデスティネー
ションオペランドとが一致
・分類A6またはB4で一方が即値加減算命令(QフォーマットのADD, SUB命令)で命令1のデスティネーションオペランドと命令2のデスティネーションオペランドとが一致
【0386】
2命令を並列に実行する場合の、Qフォーマットのシフト命令及び加減算命令の即値は4ビットのリニアな値に変換され、命令実行時にラッチ606 及び入力シフタ607 へ転送される。以下、実施例1で分類した各場合について命令の並列実行の詳細を説明する。
【0387】
まず、分類A3について説明する。この場合、命令1はレジスタに値を書き込む演算, 転送命令であり、命令2は命令1の実行結果を転送するレジスタ間転送命令である。命令1は転送命令の場合も含み演算回路601 のいずれかの演算器で処理され、演算結果がD1バス623 を介してレジスタファイル602 またはSP部603 の命令1のデスティネーションとして指定されたレジスタに書き込まれる。更に、この場合D1バス623 上の値はレジスタファイル602 またはSP部603 の命令2のデスティネーションとして指定されたレジスタにも並列に書き込まれる。
【0388】
分類B2は、命令1はレジスタに値を書き込む演算, 転送命令であり、命令2は命令1の実行結果を転送するストア命令の場合である。命令1は転送命令の場合も含み演算回路601 のいずれかの演算器で処理され、演算結果がD1バス623 を介してレジスタファイル602 またはSP部603 の命令1のデスティネーションとして指定されたレジスタに書き込まれる。更に、この場合D1バス623 上の値はメモリデータレジスタ部605 にも並列に書き込まれ、DDバス626 を介してオペランドアクセス部に転送され、キャッシュ及びメモリに書き込まれる。
【0389】
分類A4, B3の内で並列実行が可能なのは、命令1が3ビット以下のシフト命令であり、命令2が命令1のシフト結果をデスティネーションオペランドとする算術/論理演算命令の場合である。命令1のシフト処理は入力シフタ607 で行なわれる。命令1のデスティネーションオペランドがレジスタファイル602 等から読み出され、S2バス622 を介して入力シフタ607 に取り込まれる。シフト量は即値として入力され、シフト結果が入力ラッチ609 へ出力される。3入力ALU610では、命令2の算術/論理演算が実行される。命令2のソースオペランドがレジスタファイル602 あるいはメモリデータレジスタ部605 等から読み出されてS1バス621 を介して入力ラッチ608 に取り込まれ、シフト結果を保持している入力ラッチ609 の値と演算が行なわれる。この場合、ラッチ606 からの入力は無視される。たとえば算術演算命令の場合にはゼロが入力される。演算結果は、D1バス623 を介して、命令2のデスティネーションオペランドとして指定されたレジスタに書き込まれる。
【0390】
分類A5は、命令1が算術/論理演算命令で、命令2が3ビット以下の左シフト命令であるが、このうち並列実行が可能なのは命令2が命令1の演算結果をデスティネーションオペランドとするシフト命令の場合である。命令1のソースオペランドがレジスタファイル602 やメモリデータレジスタ部605 等から読み出され、S1バス621 を介して入力ラッチ608 に取り込まれ、デスティネーションオペランドがレジスタファイル602 等から読み出され、S2バス622 を介して入力ラッチ609 に取り込まれる。3入力ALU610では、命令1の算術/論理演算が実行される。この場合も、ラッチ606 からの入力は無視される。演算結果は出力シフタ611 に出力される。命令2のシフト処理は出力シフタで行なわれる。シフト量は即値として入力され、ラッチ606 を介して出力シフタ611 の出力される。シフト結果は、D1バス623 を介して、命令2のデスティネーションオペランドとして指定されたレジスタに書き込まれる。
【0391】
分類A6, B4で一方が小さな即値をソースオペランドとする加減算命令(QフォーマットのADD, SUB命令)で、命令2が命令1の演算結果をデスティネーションオペランドとする命令の場合について説明する。命令1がQフォーマットの加減算命令である場合には、命令1のソースオペランドがS1バス621 を介して入力ラッチ608 へ、デスティネーションオペランドがS2バス622 を介して入力ラッチ609 へそれぞれ転送され、命令2のソースオペランドである即値がラッチ606 に保持される。また、命令2がQフォーマットの加減算命令である場合には、命令1のソースオペランドである即値がラッチ606 に保持され、命令2のソースオペランドがS1バス621 を介して入力ラッチ608 へ、デスティネーションオペランドがS2バス622 を介して入力ラッチ609 へそれぞれ転送される。3入力ALU610では、3値の加減算が行なわれ、加算結果がD1バス623 を介して命令2のデスティネーションオペランドとして指定されたレジスタに書き込まれる。
【0392】
3値A, B, Cの加減算を行なう場合、Cが小さな正の即値であり、Cの反転を行なわないように加算しようとすると、入力A, Bと加算器の出力の反転機能とキャリーとを用いて以下のような演算を行なえばよい。加算器は入力A’(AまたはAの反転), 入力B’(BまたはBの反転), 入力Cとキャリーの加算を行なうものとする。{}内が加算器出力である。
【0393】
入力A’ 入力B’ 入力C キャリー入力
A+B+C={A +B +C +0}
A−B+C={A +Bの反転+C +1}
A+B−C={Aの反転+Bの反転+C +1}の反転
A−B−C={Aの反転+B +C +0}の反転
【0394】
このように、加算器としてはCの値を符号拡張することなく構成することが可能である。たとえば、3値(A’(0:31), B’(0:31), C(28:31))を加算する加算器として図63及び図64のブロック図に示されているようなハードウェア構成があげられる。但し、OUT(0:31) は加算器出力であり、表記はビッグエンディアンを用いている。この例では、加算器は大きく分けて、キャリーセーブドアダーからなる前段加算器とフルアダーとキャリールックアヘッドからなる後段加算器とで構成されている。なお、図63と図64とは、図63の下側が図64の上側と接続された本来は一葉の図面である。
【0395】
入力Cは下位4ビットのみなので、前段加算器のキャリーセーブドアダーは下位4ビットと上位28ビットとで構成が異なる。下位4ビットはたとえば参照符号631 にて示されているように、3ビットの入力を1ビットXと一つ上位の1ビットYとの2ビットに変換する。この1ビットの第1CSA631の構成を図65の回路図に示す。参照符号641, 642は排他的ORゲートを、643, 644, 645 は ANDゲートを、 646はORゲートをそれぞれ示す。上位28ビットは2値の加算を行なえばよいので、より簡単な回路でよい。この1ビットの第2CSA632の構成を図66の回路図に示す。参照符号647 は排他的ORゲートを、648 は ANDゲートをそれぞれ示す。
【0396】
後段加算器は、4ビット単位にキャリールックアヘッド回路が付加されており、4入力 ANDゲート635 により4ビットのキャリー伝搬信号の論理積をとり、すべて”1”である場合にはセレクタSEL636によりキャリー入力をバイパスして上位に伝搬させる。最下位4ビットは通常キャリー伝搬信号の確定とキャリー出力の確定タイミングとに差がないので、キャリールックアヘッド回路は付加されていない。また、最下位ビットはこの場合ハーフアダーでよい。
【0397】
このように、1つの入力を小さな即値に限定することにより、下位4ビットはキャリーセーブドアダーの回路は複雑であるが、キャリールックアヘッド回路が不要になるので、3つの32ビットデータの加減算を行なう場合に比してチップ上でのレイアウト面積が削減され、ハードウェアコストが削減できる。
【0398】
また、分類A2で並列実行が可能なのは命令1の転送処理のデスティネーションが命令2のデスティネーションオペランドと一致する場合である。この場合は、単に命令2のデスティネーションオペランドの代わりに、命令1のソースオペランドをS1バス621 またはS2バス622 で演算器へ転送し、演算結果を命令2のデスティネーションとして指定されたレジスタに格納すればよい。
【0399】
このように、並列実行を行なう命令の組み合せを限定することによりより少ないハードウェアコストでデータ処理装置を実現することができる。とくに、2つの加減算命令を、一方がソースオペランドが小さな即値の場合のみに限定することにより、3値加算器のハードウェアコストを削減することが可能である。配列のポインタ計算で用いるスケールドインデックス加算を行なう場合などには、上述のような構成は非常に有効である。配列のポインタ計算では、ベースアドレスの値に、インデックス値を左シフト(2のべき乗倍)した値と変位とが加算されるからである。
【0400】
上記実施例では、命令1がシフト命令の場合以外は命令1と命令2との複合演算を行なう際に、命令1の演算結果を出力できない構成となっているが、実施例1と同様に、命令1と命令2との複合演算と並列に命令1の演算を実行する演算器を有しているか、あるいは複合演算器の途中から命令1の演算結果を出力する手段を付加すれば、命令1のデスティネーションオペランドが命令2のソースオペランドと干渉する場合にも2命令の並列実行が可能である。但し、命令2が演算結果をレジスタに書き込む命令であった場合には、レジスタへ値を書き込むバスが2本必要になる。命令2が比較命令である場合には、命令1のデスティネーションオペランドのみを転送すればよいので、バスは1本でよい。たとえば、ループのカウンタ制御で、カウンタレジスタに即値(ステップ値)を加減算して上限値または下限値と比較を行なう場合には、命令1の演算結果のみを格納すればよい。
【0401】
〔実施例3〕
並列実行可能な命令の組み合せを実施例2より更に削減し、演算器のハードウェアコストを削減した実施例3について説明する。本実施例3では、以下の分類で命令1のデスティネーションオペランドと命令2のデスティネーションオペランドとが一致する場合にのみ2命令を並列実行する。
【0402】
・分類A2
・分類A3
・分類B2
・分類A6またはB4
・加算命令とインクリメント命令(定数1を加算するQフォーマットの加算
命令)との組み合せ
・減算命令とデクリメント命令(定数1を減算するQフォーマットの減算命
令)との組み合せ
【0403】
図67は本実施例の整数演算部の構成例を示すブロック図である。図62に示した実施例2の整数演算部とはALU 周囲の構成が異なる。基本的な命令の処理方法は実施例1及び実施例2とほぼ同じであるので説明は省略する。また、分類A2, A3, B2の処理の場合は実施例2と同じであるのでここでは説明を省略する。分類A6またはB4で、AとBと”1”との加算を行なう場合と、AからBと”1”とを減算する場合では、3値の加減算は以下のように処理できる。加算器は入力A’(AまたはAの反転), 入力B’(BまたはBの反転), キャリーの加算を行なうものとする。{}内が加算器出力である。
【0404】
入力A’ 入力B’ キャリー入力
A+B+1= {A +B +1}
A−B−1= {Aの反転+B +1}の反転
もしくは{A +Bの反転+0}
【0405】
即ち、ALU653の加算器部分は2入力のフルアダー(図63及び図64の後段部分のみ)でよく、入出力の反転とキャリー入力との制御のみで2命令の並列実行を実現できる。2命令が並列実行可能な命令の組み合せは大幅に限定されるが、演算ハードウェアとしては、1命令づつ命令を実行する場合とほとんど同じで、制御方法を変えるのみで2命令の並列実行が実現できる。従って、このような処理が多いアプリケーションを実行する場合には、このような構成が有効である。
【0406】
但しこの場合も、実施例2と同様に命令1の演算結果を書き込むようにするならば、もう一つ加算器が必要になる。但し、この加算器ではインクリメント, デクリメント機能のみがあればよいので、必要なハードウェア量は少なくて済む。また、一般のデータ処理装置ではアドレスレジスタ, カウンタ等の他の演算器を備えている場合も多く、そのハードウェアを利用すれば更にハードウェアの削減には有効である。また、命令1と命令2とが異なるレジスタに処理結果を書き込む場合には2本のバスが必要となる。但し、命令2が比較命令である場合に限るのであれば、バスは1本でよい。ループ制御において、カウンタから”1”を減算し、下限値と比較するような場合には、一方の加算器で”カウンタ値−1”を実行し、もう一方の加算器で”カウンタ値−下限値−1”を実行すればよい。また、この場合には命令1の結果のみをカウンタとして用いられているレジスタに転送すればよい。
【0407】
【発明の効果】
以上に詳述したように本発明によれば、オペランド干渉のある複数の命令、あるいはメモリの連続領域をアクセスする複数の命令を並列実行可能に構成したため、高性能なデータ処理装置を比較的安価に提供することが可能になる。
【0408】
本発明のデータ処理装置の第1の発明によれば、第1の命令としてはシフト命令を、第2の命令としては算術演算,論理演算または比較命令が並列に実行される。
【0409】
本発明のデータ処理装置の第2の発明によれば、第1の命令としては算術演算,論理演算命令を、第2の命令としてはシフト命令が並列に実行される。
【0410】
本発明のデータ処理装置の第3の発明によれば、第1の命令としては演算命令を、第2の命令としてはレジスタ間転送命令が並列に実行される。
【0411】
本発明のデータ処理装置の第4の発明によれば、第1,第2の命令共に演算命令が並列に実行される。
【0412】
本発明のデータ処理装置の第5の発明によれば、第1,第2の命令共にポップ命令が並列に実行される。
【0413】
本発明のデータ処理装置の第6の発明によれば、第1,第2の命令共にプッシュ命令が並列に実行される。
【0414】
本発明のデータ処理装置の第7の発明によれば、第1の命令としてはレジスタ間接モードのロード命令を、第2の命令としてはレジスタ相対間接モードのロード命令が並列に実行される。
【0415】
本発明のデータ処理装置の第8の発明によれば、第1,第2の命令共にレジスタ相対間接モードのロード命令が並列に実行される。
【0416】
本発明のデータ処理装置の第9の発明によれば、第1の命令がレジスタ間接モードのストア命令を、第2の命令がレジスタ相対間接モードのストア命令が並列に実行される。
【0417】
本発明のデータ処理装置の第10の発明によれば、第1,第2の命令共にレジスタ相対間接モードのストア命令が並列に実行される。
【0420】
本発明のデータ処理装置の第 11の発明によれば、第1の命令としては加算命令または減算命令の内の少なくとも一つの命令が、第2の命令としては少なくとも命令コードで指定される即値の加算命令または減算命令が並列に実行される。
【0421】
本発明のデータ処理装置の第 12の発明によれば、第1の命令としては加算命令が、第2の命令としてはインクリメント命令が並列に実行される。
【0422】
本発明のデータ処理装置の第 13の発明によれば、第1の命令としては減算命令が、第2の命令としてはデクリメント命令が並列に実行される。
【0423】
本発明のデータ処理装置の第 14の発明によれば、第1, 第2の命令共にメモリからデータを読み出す命令が並列に実行される。
【0424】
本発明のデータ処理装置の第 15 の発明によれば、第 14の発明において第1, 第2の命令共にロード命令が並列に実行される。
【0425】
本発明のデータ処理装置の第 16の発明によれば、第1, 第2の命令共にメモリにデータを書き込む命令が並列に実行される。
【0426】
本発明のデータ処理装置の第 17 の発明によれば、第 16の発明において第1, 第2の命令共にストア命令が並列に実行される。
本発明のデータ処理装置の第 18 の発明によれば、第1乃至 14 及び 16 の発明において、命令解析手段により、第1の命令と第1の命令に引き続く命令以降の第2の命令とが並列に解析される。
本発明のデータ処理装置の第 19 の発明によれば、第5,7,8及び 14 の発明において、データアクセス手段は、記憶手段から以前に取り込んだデータをデータキャッシュに記憶させる。
本発明のデータ処理装置の第 20 の発明によれば、第5,7,8及び 14 の発明において、データアクセス手段は、記憶手段から以前に取り込んだデータをバッファ手段に一時的に保持させる。
本発明のデータ処理装置の第 21 の発明によれば、第6,9, 10 及び 16 の発明において、データアクセス手段は、記憶手段に書込むべきデータをバッファ手段に一時的に保持させる。
本発明のデータ処理装置の第 22 の発明によれば、第1の発明において、命令実行手段は、シフト命令の全シフト量のシフト処理を実行可能な第2のシフタを備えているので、第1及び第2の命令を並列に実行する際に、第1の命令のシフト処理を第2のシフタでも実行する。
本発明のデータ処理装置の第 23 の発明によれば、第 5 及び6の発明において、命令実行手段は、第1及び第2の命令を並列に実行する際に、並列に転送される2データのサイズの総和に対応した値だけ、スタックポインタの更新を行なう。本発明のデータ処理装置の第 24 の発明によれば、第 13 の発明において、第1の命令は第2の演算としてデクリメントを行なう命令を含み、第2の命令は第1の演算として比較のための減算を行なう比較命令を含む。
【図面の簡単な説明】
【図1】本発明のデータ処理装置を用いたシステム構成を示すブロック図図である。
【図2】本発明のデータ処理装置のメモリ上での命令の配列状態を示す模式図である。
【図3】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図4】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図5】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図6】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図7】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図8】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図9】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図10】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図11】本発明のデータ処理装置の一実施例による命令フォーマットを示す模式図である。
【図12】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図13】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図14】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図15】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図16】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図17】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図18】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図19】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図20】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図21】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図22】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図23】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図24】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図25】本発明のデータ処理装置の一実施例によるアドレッシングモードのフォーマットを示す模式図である。
【図26】本発明のデータ処理装置の一実施例の全体の構成例を示すブロック図である。
【図27】本発明のデータ処理装置の一実施例の命令フェッチ部の構成例を示すブロック図である。
【図28】本発明のデータ処理装置の命令の構成単位を示す模式図である。
【図29】本発明のデータ処理装置の一実施例の命令デコード部の構成例を示すブロック図である。
【図30】本発明のデータ処理装置の一実施例のPC生成部の構成例を示すブロック図である。
【図31】本発明のデータ処理装置の一実施例のアドレス生成部の構成例を示すブロック図である。
【図32】本発明のデータ処理装置の一実施例のオペランドアクセス部の構成例を示すブロック図である。
【図33】本発明のデータ処理装置の一実施例の ROM部の構成例を示すブロック図である。
【図34】本発明のデータ処理装置の一実施例の整数演算部の構成例を示すブロック図である。
【図35】本発明のデータ処理装置の一実施例のSP部の構成例を示すブロック図である。
【図36】本発明のデータ処理装置の一実施例のパイプライン処理の概要を示す模式図である。
【図37】本発明のデータ処理装置の一実施例のDステージデコーダの構成例を示すブロック図である。
【図38】本発明のデータ処理装置が1サイクルでデコードを行なうIIバス上の命令コード位置を示す模式図である。
【図39】本発明のデータ処理装置の一実施例の2命令並列デコード可否判定部の構成例を示すブロック図である。
【図40】本発明のデータ処理装置の一実施例のオペランド干渉判定部の詳細な構成例を示す論理回路図の一部である。
【図41】本発明のデータ処理装置の一実施例のオペランド干渉判定部の詳細な構成例を示す論理回路図の他の部分である。
【図42】本発明のデータ処理装置の一実施例のサブコード有効判定部の詳細な構成例を示す論理回路図の一部である。
【図43】本発明のデータ処理装置の一実施例のサブコード有効判定部の詳細な構成例を示す論理回路図の他の部分である。
【図44】本発明のデータ処理装置のIIバス上のレジスタ番号フィールドの位置を示す模式図である。
【図45】本発明のデータ処理装置により2命令を並列実行する場合の命令コードを示す模式図である。
【図46】本発明のデータ処理装置により2命令を並列実行する場合のパイプライン処理の状態を示す模式図である。
【図47】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図48】本発明のデータ処理装置により2命令を並列実行する場合の命令コードを示す模式図である。
【図49】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図50】本発明のデータ処理装置により2命令を並列実行する場合の命令コードを示す模式図である。
【図51】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図52】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図53】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図54】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図55】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図56】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図57】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図58】本発明のデータ処理装置でソースオペランドがレジスタ間接/相対間接モードで指定される2つのロード命令が並列デコードが可能な場合のIIバス上の命令コード位置を示す模式図である。
【図59】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図60】本発明のデータ処理装置により2命令を並列実行する場合の処理フローを示すフローチャートである。
【図61】本発明のデータ処理装置の主演算回路と副演算回路との構成例を示すブロック図である。
【図62】本発明のデータ処理装置の他の実施例の整数演算部の構成例を示すブロック図である。
【図63】本発明のデータ処理装置の他の実施例の3入力ALU の加算器の構成例を示すブロック図の一部である。
【図64】本発明のデータ処理装置の他の実施例の3入力ALU の加算器の構成例を示すブロック図の他の部分である。
【図65】本発明のデータ処理装置の他の実施例の3入力ALU の加算器の下位側キャリーセーブドアダーの構成例を示す論理回路図である。
【図66】本発明のデータ処理装置の他の実施例の3入力ALU の加算器の上位側キャリーセーブドアダーの構成例を示す論理回路図である。
【図67】本発明のデータ処理装置の更に他の実施例の整数演算部の構成例を示すブロック図である。
【符号の説明】
5 主記憶、11 命令フェッチ部、12 命令デコード部、16 整数演算部、
17 オペランドアクセス部、107 DDバス、302 メインデコーダ、303 2命令並列デコード可否判定部、304 サブデコーダ。
Claims (24)
- 命令を格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、シフト命令でシフト可能なシフト量の一部である1または複数の所定のシフト量のみのシフト処理を実行するシフタと、前記シフタの出力に少なくとも1つの入力が接続され、少なくとも算術演算または論理演算の内の一つを実行する演算手段とを含む複合演算手段とを有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令がシフト量が自身に含まれる即値で指定され、前記シフタが実行可能ないずれかのシフト量のシフト処理を実行するシフト命令である第1の条件と、前記第2の命令が前記演算手段で実行可能な演算を実行する命令であり、且つ前記第1の命令のシフト結果を前記第2の命令が参照する第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令のシフト処理と前記第2の命令の演算処理との2つの複合演算を前記複合演算手段に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令を格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、少なくとも算術演算または論理演算の内の一つを実行する演算手段と、前記演算手段の出力に入力が接続され、シフト命令でシフト可能なシフト量の一部である1または複数の所定のシフト量のみのシフト処理を実行するシフタとを含む複合演算手段とを有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が前記演算手段で実行可能な演算を実行する命令である第1の条件と、前記第2の命令がシフト量が自身に含まれる即値で指定され、前記シフタで実行可能ないずれかのシフト量のシフト処理を実行するシフト命令であり、且つ前記第1の命令の演算結果を前記第2の命令が参照する第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令の演算処理と前記第2の命令のシフト処理との2つの複合演算を前記複合演算手段に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令を格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、少なくとも算術演算,論理演算またはシフト処理の内の一つを実行する演算手段と、前記演算手段の演算結果を複数のレジスタへ転送するデータ転送手段とを有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が前記演算手段で実行可能な演算を実行してその結果を自身に含まれる第1の値に対応するレジスタへ転送する命令である第1の条件と、前記第2の命令が前記第1の命令の演算結果を自身に含まれる第2の値に対応するレジスタへ転送する命令である第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令の演算処理を前記演算手段に、前記第1の命令のデータ転送処理及び前記第2の命令のデータ転送処理を前記データ転送手段にそれぞれ実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令を格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、少なくとも算術演算,論理演算またはシフト処理の内の一つをそれぞれ実行する第1及び第2の演算手段と、前記第1の演算手段の演算結果及び前記第2の演算手段の演算結果をそれぞれ異なるレジスタへ並列に転送するデータ転送手段とを有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が前記第1及び第2の演算手段で実行可能な演算を実行してその結果を自身に含まれる第1の値に対応するレジスタへ転送する命令である第1の条件と、前記第2の命令が前記第1の命令の演算結果を自身に含まれる第2の値に対応するレジスタへ転送する命令である第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令の演算処理を前記第1の演算手段及び第2の演算手段に並列に実行させ、前記第1の命令のデータ転送処理及び前記第2の命令のデータ転送処理を前記データ転送手段に並列にそれぞれ実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
命令の実行に必要なデータを前記記憶手段から取り込むデータアクセス手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と、
前記記憶手段内に設定されているスタック領域のスタックトップのアドレスを指示するスタックポインタと
を備えたデータ処理装置において、
前記命令実行手段は、前記データアクセス手段から2データを並列にレジスタへ転送するデータ転送手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令及び前記第2の命令が共に前記スタックポインタが指示する前記スタック領域のデータを自身に含まれる値に対応するレジスタへそれぞれポップする命令である条件が成立するか否かを判定する判定手段を備え、
前記判定手段が前記条件が成立すると判定した場合に、前記命令実行手段が前記データアクセス手段から前記第1の命令に含まれる値に対応するレジスタへの前記第1の命令のデータ転送処理と、前記データアクセス手段から前記第2の命令に含まれる値に対応するレジスタへの前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と、
データを前記記憶手段に格納するデータアクセス手段と、
前記記憶手段内に設定されているスタック領域のスタックトップのアドレスを指示するスタックポインタと
を備えたデータ処理装置において、
前記命令実行手段は、2個のレジスタから並列に読み出したデータを並列に、前記データアクセス手段へ転送するデータ転送手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令及び前記第2の命令が共に自身に含まれる値に対応するレジスタのデータを前記スタックポインタが指示する前記スタック領域へそれぞれプッシュする命令である条件が成立するか否かを判定する判定手段を備え、
前記判定手段が前記条件が成立すると判定した場合に、前記命令実行手段が前記第1の命令に含まれる値に対応するレジスタから前記データアクセス手段への前記第1の命令のデータ転送処理と、前記第2の命令に含まれる値に対応するレジスタから前記データアクセス手段への前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
命令の実行に必要なデータを前記記憶手段から取り込むデータアクセス手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、前記データアクセス手段から2データを並列にレジスタへ転送するデータ転送手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が自身に含まれる第1の値に対応するレジスタの内容で指定される前記記憶手段のアドレスのデータを自身に含まれる第2の値に対応するレジスタへ転送する命令であり、且つ前記第2の命令が自身に含まれる前記第1の値に対応するレジスタの内容に自身に含まれる第3の値を加算した値で指定される前記記憶手段のアドレスのデータを自身に含まれる第4の値に対応するレジスタへ転送する命令である第1の条件と、前記第1の命令により指定されるデータのデータ長が前記第2の命令に含まれる前記第3の値と等しい第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令のデータ転送処理と前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
命令の実行に必要なデータを前記記憶手段から取り込むデータアクセス手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、前記データアクセス手段から2データを並列にレジスタへ転送するデータ転送手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が自身に含まれる第1の値に対応するレジスタの内容に第2の値を加算した値で指定される前記記憶手段のアドレスのデータを自身に含まれる第3の値に対応するレジスタへ転送する命令であり、且つ前記第2の命令が自身に含まれる前記第1の値に対応するレジスタの内容に自身に含まれる第4の値を加算した値で指定される前記記憶手段のアドレスのデータを自身に含まれる第5の値に対応するレジスタへ転送する命令である第1の条件と、前記第1の命令により指定されるデータのデータ長が前記第2の命令に含まれる前記第4の値と前記第1の命令に含まれる前記第2の値との差に等しい第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令のデータ転送処理と前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と、
データを前記記憶手段に格納するデータアクセス手段と
を備えたデータ処理装置において、
前記命令実行手段は、2個のレジスタから並列に読み出したデータを並列に、前記データアクセス手段へ転送するデータ転送手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が自身に含まれる第1の値に対応するレジスタの内容で指定される前記記憶手段のアドレスへ自身に含まれる第2の値に対応するレジスタのデータを転送する命令であり、且つ前記第2の命令が自身に含まれる前記第1の値に対応するレジスタの内容に自身に含まれる第3の値を加算した値で指定される前記記憶手段のアドレスへ自身に含まれる第4の値に対応するレジスタのデータを転送する命令である第1の条件と、前記第1の命令により指定されるデータのデータ長が前記第2の命令に含まれる前記第3の値に等しい第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記条件が成立すると判定した場合に、前記命令実行手段が前記第2の値に対応するレジスタから前記データアクセス手段への前記第1の命令のデータ転送処理と、前記第4の値に対応するレジスタから前記データアクセス手段への前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と、
データを前記記憶手段に格納するデータアクセス手段と
を備えたデータ処理装置において、
前記命令実行手段は、2個のレジスタから並列に読み出したデータを並列に、前記データアクセス手段へ転送するデータ転送手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が自身に含まれる第1の値に対応するレジスタの内容に自身に含まれる第2の値を加算した値で指定される前記記憶手段のアドレスへ自身に含まれる第3の値に対応するレジスタのデータを転送する命令であり、且つ前記第2の命令が自身に含まれる前記第1の値に対応するレジスタの内容に自身に含まれる第4の値を加算した値で指定される前記記憶手段のアドレスへ自身に含まれる第5の値に対応するレジスタのデータを転送する命令である第1の条件と、前記第1の命令により指定されるデータのデータ長が前記第2の命令に含まれる前記第4の値と前記第1の命令に含まれる前記第2の値との差に等しい第2の条件とが成立するか否かを判定する判定手段を備え、
前記判定手段が前記条件が成立すると判定した場合に、前記命令実行手段が前記第3の値に対応するレジスタから前記データアクセス手段への前記第1の命令のデータ転送処理と、前記第5の値に対応するレジスタから前記データアクセス手段への前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令を格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、少なくとも加算または減算の内の一つを含む第1の演算と、少なくとも命令コードで指定される即値の加算または減算の内の一つを含む第2の演算との複合演算を実行する複合演算手段を有し、
前記複合演算手段は、上位mビットが2入力で、下位nビットが3入力の(m+n)ビット加算器(m、nは1以上の自然数 ) を備え、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令または前記第2の命令の内の一方が前記複合演算手段で実行可能な前記第1の演算を実行する第1の条件と、前記第1の命令または前記第2の命令の内の他方が前記複合演算手段で実行可能な第2の演算として実行可能な、自身に含まれるnビット以下またはnビットより小さい即値の加算または減算を行なう命令であり、且つ前記第1の命令の演算結果を前記第2の命令が参照する第2の条件が成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令の処理と前記第2の命令の処理との2つの複合演算を前記複合演算手段に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令を格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、第1の演算としての加算と、第2の演算としてのインクリメント演算との複合演算を実行する複合演算手段を有し、
前記複合演算手段は、2つのデータ入力と1ビットキャリー入力とを有する2入力加算器を備え、前記第2の演算であるインクリメント演算は前記キャリー入力を制御することにより実現されるように構成されており、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令または前記第2の命令の内の一方が前記複合演算手段で実行可能な前記第1の演算を実行する第1の条件と、前記第1の命令または前記第2の命令の内の他方が前記複合演算手段で実行可能な前記第2の演算を実行する命令であり、且つ前記第1の命令の演算結果を前記第2の命令が参照する第2の条件が成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令の処理と前記第2の命令の処理との2つの複合演算を前記複合演算手段に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令を格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、第1の演算としての減算と、第2の演算としてのデクリメント演算との複合演算を実行する複合演算手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
前記複合演算手段は、2つのデータ入力と1ビットキャリー入力とを有する2入力加算器を備え、前記第2の演算であるデクリメント演算は前記キャリー入力を制御することにより実現されるように構成されており、
更に、前記第1の命令または前記第2の命令の内の一方が前記複合演算手段で実行可能な前記第1の演算を実行する第1の条件と、前記第1の命令または前記第2の命令の内の他方が前記複合演算手段で実行可能な前記第2の演算を実行する命令であり、且つ前記第1の命令の演算結果を前記第2の命令が参照する第2の条件が成立するか否かを判定する判定手段を備え、
前記判定手段が前記第1及び第2の条件が共に成立すると判定した場合に、前記命令実行手段が前記第1の命令の処理と前記第2の命令の処理との2つの複合演算を前記複合演算手段に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
命令の実行に必要なデータを前記記憶手段から取り込むデータアクセス手段と 、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と
を備えたデータ処理装置において、
前記命令実行手段は、前記データアクセス手段から2データを並列に前記命令実行手段へ転送するデータ転送手段とを有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が前記メモリからデータを読み出す命令であり、前記第2の命令が前記メモリの前記第1の命令により読み出されるデータに連続する領域のデータを読み出す命令である条件が成立するか否かを判定する判定手段を備え、
前記判定手段が前記条件が成立すると判定した場合に、前記命令実行手段が前記データアクセス手段から前記命令実行手段への前記第1の命令のデータ転送処理と、前記データアクセス手段から前記命令実行手段への前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 前記第1及び第2の命令が共にロード命令であることを特徴とする請求項14に記載のデータ処理装置。
- 命令及びデータを格納する記憶手段と、
前記記憶手段から命令を取り込む命令フェッチ手段と、
前記命令フェッチ手段が取り込んだ命令を解析する命令解析手段と、
前記命令解析手段での解析結果に基づいて命令を実行する命令実行手段と、
データを前記記憶手段に格納するデータアクセス手段と
を備えたデータ処理装置において、
前記命令実行手段は、2データを並列に前記データアクセス手段へ転送するデータ転送手段を有し、
前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを含む複数の命令からなる命令群の各命令を解析する手段を有し、
更に、前記第1の命令が前記メモリへデータを書き込む命令であり、前記第2 の命令が前記メモリの前記第1の命令により書き込まれるデータに連続する領域にデータを書き込む命令である条件が成立するか否かを判定する判定手段を備え、
前記判定手段が前記条件が成立すると判定した場合に、前記命令実行手段が前記データアクセス手段への前記第1の命令のデータ転送処理と、前記データアクセス手段への前記第2の命令のデータ転送処理とを前記データ転送手段に並列に実行させることにより、前記第1及び第2の命令を並列に実行すべくなしてあることを特徴とするデータ処理装置。 - 前記第1及び第2の命令が共にストア命令であることを特徴とする請求項16に記載のデータ処理装置。
- 前記命令解析手段は、第1の命令と前記第1の命令に引き続く命令以降の第2の命令とを並列に解析すべくなしてあることを特徴とする請求項1乃至14及び16に記載のデータ処理装置。
- 前記データアクセス手段は、前記記憶手段から以前に取り込んだデータを記憶するデータキャッシュを含むことを特徴とする請求項5,7,8及び14に記載のデータ処理装置。
- 前記データアクセス手段は、前記記憶手段から以前に取り込んだデータを一時的に保持するバッファ手段を含むことを特徴とする請求項5,7,8及び14に記載のデータ処理装置。
- 前記データアクセス手段は、前記記憶手段に書込むべきデータを一時的に保持するバッファ手段を含むことを特徴とする請求項6,9,10及び16に記載のデータ処理装置。
- 前記命令実行手段は、シフト命令の全シフト量のシフト処理を実行可能な第2のシフタを備え、
前記第1及び第2の命令を並列に実行する際に、前記第1の命令のシフト処理を前記第2のシフタでも実行すべくなしてあることを特徴とする請求項1に記載のデータ処理装置。 - 前記命令実行手段は、前記第1及び第2の命令を並列に実行する際に、並列に転送される2データのサイズの総和に対応した値だけ、前記 スタックポインタの更新を行なうべくなしてあることを特徴とする請求項5または6に記載のデータ処理装置。
- 前記第1の命令は前記第2の演算としてデクリメントを行なう命令を含み、前記第2の命令は前記第1の演算として比較のための減算を行なう比較命令を含むことを特徴とする請求項13に記載のデータ処理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27528194A JP3543181B2 (ja) | 1994-11-09 | 1994-11-09 | データ処理装置 |
US08/555,425 US6178492B1 (en) | 1994-11-09 | 1995-11-09 | Data processor capable of executing two instructions having operand interference at high speed in parallel |
US09/143,530 US6112289A (en) | 1994-11-09 | 1998-08-28 | Data processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27528194A JP3543181B2 (ja) | 1994-11-09 | 1994-11-09 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08137688A JPH08137688A (ja) | 1996-05-31 |
JP3543181B2 true JP3543181B2 (ja) | 2004-07-14 |
Family
ID=17553244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27528194A Expired - Fee Related JP3543181B2 (ja) | 1994-11-09 | 1994-11-09 | データ処理装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6178492B1 (ja) |
JP (1) | JP3543181B2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11272555A (ja) * | 1998-03-20 | 1999-10-08 | Fujitsu Ltd | キャッシュメモリ制御システム |
JP2002510118A (ja) | 1998-04-01 | 2002-04-02 | モサイド・テクノロジーズ・インコーポレーテッド | 半導体メモリ非同期式パイプライン |
US6304955B1 (en) * | 1998-12-30 | 2001-10-16 | Intel Corporation | Method and apparatus for performing latency based hazard detection |
US6754809B1 (en) * | 1999-12-30 | 2004-06-22 | Texas Instruments Incorporated | Data processing apparatus with indirect register file access |
US6757819B1 (en) * | 2000-02-18 | 2004-06-29 | Texas Instruments Incorporated | Microprocessor with instructions for shifting data responsive to a signed count value |
US6745319B1 (en) * | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
JP2001273138A (ja) * | 2000-03-24 | 2001-10-05 | Fujitsu Ltd | プログラム変換装置および方法 |
JP4542722B2 (ja) * | 2001-04-25 | 2010-09-15 | 富士通株式会社 | 命令処理方法 |
EP1575229A3 (en) * | 2002-07-30 | 2007-12-12 | Yamaha Corporation | Data transmission apparatus with dynamic assignment of transmission sequences |
US7194732B2 (en) * | 2003-06-26 | 2007-03-20 | Hewlett-Packard Development Company, L.P. | System and method for facilitating profiling an application |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
US20060282821A1 (en) * | 2005-06-10 | 2006-12-14 | Renno Erik K | Efficient subprogram return in microprocessors |
US8335810B2 (en) * | 2006-01-31 | 2012-12-18 | Qualcomm Incorporated | Register-based shifts for a unidirectional rotator |
US20090105993A1 (en) * | 2007-10-22 | 2009-04-23 | Advantest Corporation | Histogram generation with multiple increment read-modify-write cycles |
JP5505083B2 (ja) * | 2010-05-25 | 2014-05-28 | 富士通株式会社 | 情報処理装置 |
US9430596B2 (en) | 2011-06-14 | 2016-08-30 | Montana Systems Inc. | System, method and apparatus for a scalable parallel processor |
EP2946254B1 (de) * | 2013-04-16 | 2017-06-21 | Siemens Aktiengesellschaft | Speicherprogrammierbare steuerung mit geringer latenzzeit |
KR20160095688A (ko) * | 2015-02-03 | 2016-08-12 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 동작 상태 확인 방법 |
US10620955B2 (en) * | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
US10459726B2 (en) * | 2017-11-27 | 2019-10-29 | Advanced Micro Devices, Inc. | System and method for store fusion |
CN110825442B (zh) * | 2019-04-30 | 2021-08-06 | 成都海光微电子技术有限公司 | 一种指令预取方法及处理器 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US35311A (en) * | 1862-05-20 | Improvement in breech-loading ordnance | ||
JPS6491228A (en) | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
JPS6491225A (en) | 1987-10-01 | 1989-04-10 | Nec Corp | Debugging system for abnormal system process of reading action of cartridge magnetic tape device |
JPH07120284B2 (ja) | 1989-09-04 | 1995-12-20 | 三菱電機株式会社 | データ処理装置 |
JP2816248B2 (ja) * | 1989-11-08 | 1998-10-27 | 株式会社日立製作所 | データプロセッサ |
JP2507638B2 (ja) | 1989-12-01 | 1996-06-12 | 三菱電機株式会社 | デ―タ処理装置 |
USRE35311E (en) * | 1990-04-04 | 1996-08-06 | International Business Machines Corporation | Data dependency collapsing hardware apparatus |
JP2693651B2 (ja) * | 1991-04-30 | 1997-12-24 | 株式会社東芝 | 並列プロセッサー |
KR100299691B1 (ko) * | 1991-07-08 | 2001-11-22 | 구사마 사부로 | 확장가능알아이에스씨마이크로프로세서구조 |
-
1994
- 1994-11-09 JP JP27528194A patent/JP3543181B2/ja not_active Expired - Fee Related
-
1995
- 1995-11-09 US US08/555,425 patent/US6178492B1/en not_active Expired - Lifetime
-
1998
- 1998-08-28 US US09/143,530 patent/US6112289A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6178492B1 (en) | 2001-01-23 |
US6112289A (en) | 2000-08-29 |
JPH08137688A (ja) | 1996-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3543181B2 (ja) | データ処理装置 | |
JP2761688B2 (ja) | データ処理装置 | |
US5717946A (en) | Data processor | |
EP0380849B1 (en) | Method and data processing unit for preprocessing implied specifiers in a pipelined processor | |
JP2616182B2 (ja) | データ処理装置 | |
EP0381469A2 (en) | Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction | |
JPH06119166A (ja) | 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法 | |
JPH0766324B2 (ja) | データ処理装置 | |
JPH0810428B2 (ja) | データ処理装置 | |
JP2847974B2 (ja) | データ処理装置 | |
JPH01214932A (ja) | データ処理装置 | |
JPH03158928A (ja) | データ処理装置 | |
JP3789583B2 (ja) | データ処理装置 | |
JPH07120278B2 (ja) | データ処理装置 | |
JP2669158B2 (ja) | データ処理装置 | |
JPH07120284B2 (ja) | データ処理装置 | |
JP3345787B2 (ja) | データ処理装置 | |
JPH04260929A (ja) | データ処理装置 | |
JP2710994B2 (ja) | データ処理装置 | |
JPH04260926A (ja) | ビット検索回路及びそれを備えたデータ処理装置 | |
JP2646855B2 (ja) | データ処理装置 | |
JP2928879B2 (ja) | データ処理装置 | |
KS | Central processing unit | |
JPH0769814B2 (ja) | パイプライン処理機構を持つデータ処理装置 | |
JPH0573294A (ja) | マイクロプロセツサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040309 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040323 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040323 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080416 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090416 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |