JPH08137688A - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH08137688A
JPH08137688A JP6275281A JP27528194A JPH08137688A JP H08137688 A JPH08137688 A JP H08137688A JP 6275281 A JP6275281 A JP 6275281A JP 27528194 A JP27528194 A JP 27528194A JP H08137688 A JPH08137688 A JP H08137688A
Authority
JP
Japan
Prior art keywords
instruction
data
instructions
parallel
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP6275281A
Other languages
English (en)
Other versions
JP3543181B2 (ja
Inventor
Masahito Matsuo
雅仁 松尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP27528194A priority Critical patent/JP3543181B2/ja
Priority to US08/555,425 priority patent/US6178492B1/en
Publication of JPH08137688A publication Critical patent/JPH08137688A/ja
Priority to US09/143,530 priority patent/US6112289A/en
Application granted granted Critical
Publication of JP3543181B2 publication Critical patent/JP3543181B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction 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)

Abstract

(57)【要約】 【目的】 スーパースケーラ方式を用いてデータ処理装
置の性能向上を図るために、オペランドの干渉がある2
命令を高速に並列実行可能とし、またハードウェア量の
大幅な増加なしに2つのメモリアクセスを行なう命令を
並列に実行可能として、並列実行可能な命令の組み合せ
を増加させたデータ処理装置。 【構成】 命令実行手段に、2データを並列にオペラン
ドアクセス部17と整数演算部16と間で転送するデータ転
送のためのバス107 を有し、命令デコード部12に、第1
の命令と第1の命令に引き続く命令以降の第2の命令と
を含む複数の命令からなる命令群の各命令を解析するデ
コーダ302, 304と、第1の命令と第2の命令とが並列実
行可能な組み合わせであるか否かを判定する判定部303
とを有している。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は高度な並列処理機構によ
り高い処理能力を実現したデータ処理装置に関し、特
に、複数の命令を並列実行可能なデータ処理装置に関す
る。
【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の条件とが成立するか否かを判定する判定手
段が備えられている。
【0017】本発明のデータ処理装置の第11の発明は、
第1の命令としては算術演算命令または論理演算命令
を、第2の命令としては論理演算命令を対象としてい
る。そして、命令実行手段は、3入力または2入力で少
なくとも算術演算または論理演算の内の一つを含む第1
の演算と、第2の演算としての論理演算との複合演算を
実行する複合演算手段を有し、命令解析手段は、第1の
命令と第1の命令に引き続く命令以降の第2の命令とを
含む複数の命令からなる命令群の各命令を解析する手段
を有し、更に、第1の命令が複合演算手段で実行可能な
第1の演算に含まれる演算を実行する第1の条件と、第
2の命令が複合演算手段で実行可能な第2の演算に含ま
れる演算を実行する命令であり、且つ第1の命令の演算
結果を第2の命令が参照する第2の条件が成立するか否
かを判定する判定手段を備えている。
【0018】本発明のデータ処理装置の第12の発明は、
第1の命令としては論理演算命令を、第2の命令として
は算術演算命令, 論理演算命令または比較命令を対象と
している。そして、命令実行手段は、3入力または2入
力で第1の演算としての論理演算と、少なくとも算術演
算,論理演算または比較処理の内の一つを含む第2の演
算との複合演算を実行する複合演算手段を有し、命令解
析手段は、第1の命令と第1の命令に引き続く命令以降
の第2の命令とを含む複数の命令からなる命令群の各命
令を解析する手段を有し、更に、第1の命令が複合演算
手段で実行可能な第1の演算に含まれる演算を実行する
第1の条件と、第2の命令が複合演算手段で実行可能な
第2の演算に含まれる演算を実行する命令であり、且つ
第1の命令の演算結果を第2の命令が参照する第2の条
件が成立するか否かを判定する判定手段を備えている。
【0019】本発明のデータ処理装置の第13の発明は、
第1の命令としては加算命令または減算命令の内の少な
くとも一つの命令を、第2の命令としては少なくとも命
令コードで指定される即値の加算命令または減算命令を
対象としている。そして、命令実行手段は、3入力また
は2入力で少なくとも加算または減算の内の一つを含む
第1の演算と、少なくとも命令コードで指定される即値
の加算または減算の内の一つを含む第2の演算との複合
演算を実行する複合演算手段を有し、命令解析手段は、
第1の命令と第1の命令に引き続く命令以降の第2の命
令とを含む複数の命令からなる命令群の各命令を解析す
る手段を有し、更に、第1の命令または第2の命令の内
の一方が複合演算手段で実行可能な第1の演算を実行す
る第1の条件と、第1の命令または第2の命令の内の他
方が複合演算手段で実行可能な第2の演算を実行する命
令であり、且つ第1の命令の演算結果を第2の命令が参
照する第2の条件が成立するか否かを判定する判定手段
を備えている。
【0020】本発明のデータ処理装置の第14の発明は、
第1の命令としては加算命令を、第2の命令としてはイ
ンクリメント命令を対象としている。そして、命令実行
手段は、第1の演算としての加算と、第2の演算として
のインクリメント演算との複合演算を実行する複合演算
手段を有し、命令解析手段は、第1の命令と第1の命令
に引き続く命令以降の第2の命令とを含む複数の命令か
らなる命令群の各命令を解析する手段を有し、更に、第
1の命令または第2の命令の内の一方が複合演算手段で
実行可能な第1の演算を実行する第1の条件と、第1の
命令または第2の命令の内の他方が複合演算手段で実行
可能な第2の演算を実行する命令であり、且つ第1の命
令の演算結果を第2の命令が参照する第2の条件が成立
するか否かを判定する判定手段が備えられている。
【0021】本発明のデータ処理装置の第15の発明は、
第1の命令としては減算命令を、第2の命令としてはデ
クリメント命令を対象としている。そして、命令実行手
段は、第1の演算としての減算と、第2の演算としての
デクリメント演算との複合演算を実行する複合演算手段
を有し、命令解析手段は、第1の命令と第1の命令に引
き続く命令以降の第2の命令とを含む複数の命令からな
る命令群の各命令を解析する手段を有し、 更に、第1
の命令または第2の命令の内の一方が複合演算手段で実
行可能な第1の演算を実行する第1の条件と、第1の命
令または第2の命令の内の他方が複合演算手段で実行可
能な第2の演算を実行する命令であり、且つ第1の命令
の演算結果を第2の命令が参照する第2の条件が成立す
るか否かを判定する判定手段が備えられている。
【0022】本発明のデータ処理装置の第16の発明は、
第1, 第2の命令共にメモリからデータを読み出す命令
を対象としている。そして、命令実行手段は、データア
クセス手段から2データを並列に命令実行手段へ転送す
るデータ転送手段とを有し、命令解析手段は、第1の命
令と第1の命令に引き続く命令以降の第2の命令とを含
む複数の命令からなる命令群の各命令を解析する手段を
有し、更に、第1の命令がメモリからデータを読み出す
命令であり、第2の命令がメモリの第1の命令により読
み出されるデータに連続する領域のデータを読み出す命
令である条件が成立するか否かを判定する判定手段が備
えられている。
【0023】本発明のデータ処理装置の第17の発明は、
第16の発明において第1, 第2の命令が共にロード命令
を対象としている。
【0024】本発明のデータ処理装置の第18の発明は、
第1, 第2の命令共にメモリにデータを書き込む命令を
対象としている。そして、命令実行手段は、2データを
並列にデータアクセス手段へ転送するデータ転送手段を
有し、命令解析手段は、第1の命令と第1の命令に引き
続く命令以降の第2の命令とを含む複数の命令からなる
命令群の各命令を解析する手段を有し、更に、第1の命
令がメモリへデータを書き込む命令であり、第2の命令
がメモリの第1の命令により書き込まれるデータに連続
する領域にデータを書き込む命令である条件が成立する
か否かを判定する判定手段が備えられている。
【0025】本発明のデータ処理装置の第19の発明は、
第18の発明において第1, 第2の命令が共にストア命令
を対象としている。
【0026】更に、本発明のデータ処理装置の第20の発
明は、第1乃至第16及び第18の発明において、命令解析
手段が、第1の命令と第1の命令に引き続く命令以降の
第2の命令とを並列に解析するように構成されている。
【0027】また本発明のデータ処理装置の第21の発明
は、第5,第7,第8及び第16の発明において、データ
アクセス手段は、記憶手段から以前に取り込んだデータ
を記憶するデータキャッシュを含む。
【0028】また本発明のデータ処理装置の第22の発明
は、第5,第7,第8及び第16の発明において、データ
アクセス手段は、記憶手段から以前に取り込んだデータ
を記憶するバッファ手段を含む。
【0029】また本発明のデータ処理装置の第23の発明
は、第6,第9,第11乃至第15及び第18の発明におい
て、データアクセス手段は、記憶手段に書込むべきデー
タを一時的に保持するバッファ手段を含む。
【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の命令が並列に実行さ
れる。
【0040】本発明のデータ処理装置の第11の発明で
は、判定手段が第1及び第2の条件が共に成立すると判
定した場合に、命令実行手段が第1の命令の処理と第2
の命令の処理との2つの複合演算を複合演算手段に実行
させることにより、第1及び第2の命令が並列に実行さ
れる。
【0041】本発明のデータ処理装置の第12の発明で
は、判定手段が第1及び第2の条件が共に成立すると判
定した場合に、命令実行手段が第1の命令の処理と第2
の命令の処理との2つの複合演算を複合演算手段に実行
させることにより、第1及び第2の命令が並列に実行さ
れる。
【0042】本発明のデータ処理装置の第13の発明で
は、判定手段が第1及び第2の条件が共に成立すると判
定した場合に、命令実行手段が第1の命令の処理と第2
の命令の処理との2つの複合演算を複合演算手段に実行
させることにより、第1及び第2の命令が並列に実行さ
れる。
【0043】本発明のデータ処理装置の第14の発明で
は、判定手段が第1及び第2の条件が共に成立すると判
定した場合に、命令実行手段が第1の命令の処理と第2
の命令の処理との2つの複合演算を複合演算手段に実行
させることにより、第1及び第2の命令が並列に実行さ
れる。
【0044】本発明のデータ処理装置の第15の発明で
は、判定手段が第1及び第2の条件が共に成立すると判
定した場合に、命令実行手段が第1の命令の処理と第2
の命令の処理との2つの複合演算を複合演算手段に実行
させることにより、第1及び第2の命令が並列に実行さ
れる。
【0045】本発明のデータ処理装置の第16の発明及び
第17の発明では、判定手段が条件が成立すると判定した
場合に、命令実行手段がデータアクセス手段から命令実
行手段への第1の命令のデータ転送処理と、データアク
セス手段から命令実行手段への第2の命令のデータ転送
処理とをデータ転送手段に並列に実行させることによ
り、第1及び第2の命令が並列に実行される。
【0046】本発明のデータ処理装置の第18の発明及び
第19の発明では、判定手段が条件が成立すると判定した
場合に、命令実行手段がデータアクセス手段への第1の
命令のデータ転送処理と、データアクセス手段への第2
の命令のデータ転送処理とをデータ転送手段に並列に実
行させることにより、第1及び第2の命令が並列に実行
される。
【0047】本発明の第20の発明では、第1乃至第16及
び第18の発明において、第1の命令と第1の命令に引き
続く命令以降の第2の命令とが並列に解析される。
【0048】
【実施例】以下、本発明をその実施例を示す図面に基づ
いて詳述する。
【0049】〔実施例1〕 (1) 「本発明のデータ処理装置を用いたシステムの構
成」 図1のブロック図に本発明のデータ処理装置1を使用し
たシステム構成例を示す。本発明のデータ処理装置1 は
32ビットのアドレスバス2と32ビットのデータバス3と
を有し、これらのバス2,3により主記憶(DRAM)5,RO
M 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に示すように右側が L
SB側で、かつ高いアドレスになっている。アドレス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-form
at) を示す模式図である。このフォーマットでは、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は汎用レジスタの番号を示す。di
sp:16とdisp:32とは、それぞれ16ビットのディスプレ
ースメント値, 32ビットのディスプレースメント値を示
す。ディスプレースメント値は符号付きとして扱われ
る。
【0079】即値モードは、命令コード中で指定される
ビットパターンをそのまま2進数と見なしてオペランド
とするアドレッシングモードである。フォーマットの模
式図を図15に示す。図中、 imm_dataは即値を示す。 i
mm_dataのサイズは、オペランドサイズとして命令中で
指定される。
【0080】絶対モードは、アドレス値が16ビットで示
されるか32ビットで示されるかにより2種類に分かれ
る。いずれも、命令コード中で指定される16ビットまた
は32ビットのビットパターンをアドレスとしたメモリの
内容をオペランドとするアドレッシングモードである。
フォーマットの模式図を図16に示す。図中、abs:16とab
s: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バス10
5 へ出力する。また、命令デコードと同時に計算したジ
ャンプ先アドレス以外のアドレスにPC相対でジャンプす
る実行頻度の少ない一部のジャンプ命令に対しては、命
令デコードの後に新たにDISPバス102 から転送される分
岐変位とPC値とを加算してジャンプ先アドレスを求め、
JAバス105 へ出力する。
【0122】PCスタック44はサブルーチンジャンプ命令
からのリターン先アドレスのコピーを8エントリのスタ
ックに保持し、サブルーチンリターン命令をデコードし
た場合にはリターン先アドレスをJAバス105 へ出力す
る。PCスタック44では、サブルーチンジャンプ命令が実
行された場合にはリターン先アドレスがS1バス104 から
転送されてプッシュされる。タスクスイッチによりスタ
ックが切り替えられたり、8レベル以上のサブルーチン
のネスティング等が発生するとPCスタック44からJAバス
105 へ出力されるリターン先アドレスは正しいリターン
先アドレスではなくなる。このため、サブルーチンリタ
ーン命令がパイプラインの実行段階に到達した時点で、
プリリターンアドレスがPCスタック44から再びS1バス10
4 へ読み出され、メモリから読み出された正しいリター
ン先アドレスと比較される。
【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によるアドレス計算結果をAO
59を経て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バス10
6 から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ステージジャンプアドレスレジスタ(EJ
A)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, ライト用のレジスタ(D
DW)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ステージ40
6 までの間では処理中の命令のプログラムカウンタ値(P
C)が受け渡され、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計算部4
2, ジャンプ先アドレス生成部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コード41
4 として出力される。
【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コード41
6 はキューイングされないがSコード417 は2つまでキ
ューイングされる。また、Fステージ404 では、PC値,
SP値及びレジスタ書き込み予約情報等がステップコード
の転送に同期して転送される。
【0186】Rステージの処理であるマイクロROM81 ア
クセス処理は、次のEステージ405での実行に使用する
実行制御コードであるEコード416 を生成するためのR
コード414 に基づくマイクロROM81 アクセスとマイクロ
命令デコード処理である。
【0187】1つのRコード414 に対する処理が2つ以
上のマイクロプログラムステップに分解される場合、 R
OM部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ステージ40
3 で計算したオペランドアドレス自体や即値が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ステージ40
4 までの処理はすべて無効化される。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コード生成部30
7 等が備えられている。
【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は、メインデコーダ30
2 でデコードされる命令が4バイトであると仮定して、
IIバス101 の5バイト目と6バイト目とをデコードす
る。メインデコーダ302 でデコードされた命令とサブデ
コーダ304 でデコードされた命令とが、後述する並列デ
コード条件を満足する場合、2つのデコーダ308, 309の
出力の内のいずれか一方がDコード生成部306 へ出力さ
れる。
【0216】メインデコーダ302 及びサブデコーダ304
では、レジスタ番号, サイズ, オペレーションコードに
埋め込まれた小さな即値(リテラル)等のパラメータと
なるフィールドの切り出し処理も行なわれる。
【0217】アドレッシングモードデコーダ305 は8ビ
ットのオペランド指定子あるいは16ビットの多段間接モ
ードフィールドで指定される命令のアドレッシングモー
ド部をデコードする。アドレッシングモードデコーダ30
5 には、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命令並列デコード可否判定部30
3 には、レジスタ番号比較部321,拡張データ値判定部32
2,オペランド干渉判定部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で拡張データの切り出し及びDI
SPバス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バス12
2,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コードと
して出力され、転送されていく。その他の処理は分類A
1の場合と同じである。
【0263】Aステージ403 及びFステージ404 におけ
る処理は、分類A1の場合と同じである。
【0264】Eステージ405 では、命令1の最終ステッ
プで2つの命令が並列に実行される。分類A2が分類A
1と異なるのは、オペランドのバイパス処理を行なうこ
とである。命令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のデスティネーションオペランド
に関してロードオペランドバイパスを行なうので、 LDB
YP信号583 とBYPDST信号588 とが”1”になる。また、
命令1の処理コード長が4バイトであるので、第2SOPD
EC 309の出力結果に基づいてサブDコードが生成され
る。
【0266】各ステージでの具体的な処理の流れを図49
のフローチャートに示す。各パイプラインステージで2
つの命令が並列に処理され、Eステージ405 で並列に実
行される。この例では、命令2がサブALU134で実行され
る命令であり、命令2のデスティネーションオペランド
に関してオペランドが干渉している。従って、サブALU2
34のラッチ245 には命令1でR1にロードされるS1バス10
4 上の値が直接取り込まれて演算が行なわれている。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が分類A
1と異なるのは、オペランドのバイパス処理を行なうこ
とである。命令1の最終マイクロステップでは主演算回
路208 のいずれかの演算器で演算が行なわれ、演算結果
がD1バス124 を介して、デスティネーションとして指定
されたレジスタに書き込まれる。命令2はこのD1バス12
4 へ出力された値を、命令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ビット以下のシフトを行なう命令である場合、IS
FT信号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”になる。また、シフト演算と A
LU演算との複合演算を行なうことを示す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が分類A
1と異なるのは、副演算回路207 でシフト演算と ALU演
算との複合演算が行なわれることである。S1バス104 へ
出力されたリテラル値(シフトカウント値)がラッチ24
1 に取り込まれ、S2バス121 へ出力されたデスティネー
ションデータがラッチ242 に取り込まれてメインシフタ
232 でシフト演算が行なわれる。そのシフト結果がD1バ
ス124 を介してデスティネーションとして指定されたレ
ジスタに書き込まれることにより、命令1が実行され
る。副演算回路207 では、サブALU234とその入力シフタ
235 とを用いて、命令1と命令2との複合演算を行な
う。入力シフタ235 では、S2バス121 から取り込んだデ
ータに対してS1バス104 から取り込んだシフトカウント
値に従ってシフト操作を行ない、シフト結果をラッチ24
4, 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 からの書き込みが優先される。入力シフタ23
5 で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 または S
VLD2信号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”になる。また、 A
LU演算とシフト演算との複合演算を行なうことを示すAL
USFT信号585 が”1”になる。サブコード有効判定部32
4 で生成されるその他の信号はすべて”0”になる。こ
の複合演算に関する信号もサブDコードとして出力さ
れ、転送されていく。その他の処理は、分類A1の場合
と同じである。
【0284】Aステージ403 及びFステージ404 におけ
る処理は、分類A1の場合と同じである。但しこの場
合、副演算回路207 の演算制御情報の生成に、メインR
コード内の命令1のオペレーション情報が参照される。
【0285】Eステージ405 では、命令1の最終ステッ
プで2つの命令が並列に実行される。分類A5が分類A
1と異なるのは、副演算回路207 で ALU演算とシフト演
算との複合演算が行なわれることである。S1バス104 へ
出力されたソースオペランドデータはラッチ239 に取り
込まれ、S2バス121 へ出力されたデスティネーションオ
ペランドデータはラッチ240 に取り込まれてメインALU2
31で算術/論理演算が行なわれ、演算結果が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信号52
8 または TADD2信号545 が”1”になる。
【0290】オペランド干渉判定部323 では、命令1が
更新するオペランドを命令2が参照するか否かを判定す
る。オペランド干渉があれば命令1のコード長に応じて
OPCONF1信号571 または OPCONF2信号574 が”1”にな
る。更に、命令2のソースオペランドとデスティネーシ
ョンオペランドとが同じレジスタであった場合には、命
令1のコード長に応じてOPCONFB1信号572 またはOPCONF
B2信号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が分類A
1と異なるのは、副演算回路207 で3値加算器237 を用
いて2つの算術演算命令の複合演算が行なわれることで
ある。S1バス104 へ出力されたソースオペランドデータ
はラッチ239 に取り込まれ、S2バス121 へ出力されたデ
スティネーションオペランドデータはラッチ240 に取り
込まれてメインALU231で算術演算が行なわれる。この演
算結果がD1バス124 へ出力されて命令1のデスティネー
ションとして指定されたレジスタに書き込まれることに
より、命令1が実行される。副演算回路207 では、3値
加算器237 を用いて、命令1と命令2との複合演算を行
なう。ソースオペランドが干渉する場合には、ラッチ24
7 に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バス10
1 上の2バイト目と4バイト目のみにインプリメントさ
れているからである。命令1が後続のメモリ/即値オペ
ランドを有する命令2を並列に実行可能な場合、SENM信
号502 が”1”になる。また、命令2が副演算回路207
で1サイクルで実行可能なメモリ/即値オペランドを有
する命令であった場合には、SVM1信号522 が”1”にな
る。
【0297】オペランド干渉判定部323 では、命令1が
更新するオペランドを命令2が参照するか否かを判定す
る。命令実行に関するオペランド干渉がなければ OPCON
F1信号571 が”0”になる。また、命令2のSP値を含め
アドレス計算で参照するレジスタ値を命令1が更新しな
ければ、OPCONFA1信号573 が”0”になる。命令1の処
理コード長が2バイトで、オペランド干渉がなければ、
2命令並列実行が可能であると判断されてSVALID信号58
1 が”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バス12
4 へ出力する命令であり、且つ命令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が参照するか否かを判定す
る。命令実行に関するオペランド干渉がなければ OPCON
F1信号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が分類B
1と異なるのは、オペランドのバイパス処理を行なうこ
とである。命令1の最終マイクロステップでは主演算回
路208 のいずれかの演算器で演算が行なわれ、演算結果
がD1バス124 を介して、デスティネーションとして指定
されたレジスタに書き込まれる。命令2はこのD1バス12
4 へ出力された値を、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 では、アドレッシングモードデコーダ30
5 またはメインデコーダ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バス12
4 を経由してデスティネーションとして指定されたレジ
スタにロードオペランドとして書き込むことにより、命
令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 を経由してDDW2
12へ転送される。この場合、連続するプッシュ命令を処
理するので、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バス12
4 を経由してデスティネーションとして指定されたレジ
スタにロードオペランドとして書き込むことにより、命
令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 で行なうのと同じオペレーションを副演算回路20
7 で行ない、副演算回路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,レジスタファイル60
2,SP部603,メモリアドレスレジスタ部604,メモリデータ
レジスタ部605 等で構成されており、S1バス621,S2バス
622,D1バス623 で各部が接続されている。ここでは、2
ワードのデータを並列に転送することは考えられておら
ず、DDバス626 は32ビット幅である。
【0383】演算回路601 は3入力ALU610及びシフタ61
4 等を含む。更に、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 を介してレジスタファイル60
2 または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, 64
4, 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の命令共にレジスタ相対間接モードの
ストア命令が並列に実行される。
【0418】本発明のデータ処理装置の第11の発明によ
れば、第1の命令としては算術演算命令または論理演算
命令が、第2の命令としては論理演算命令が並列に実行
される。
【0419】本発明のデータ処理装置の第12の発明によ
れば、第1の命令としては論理演算命令が、第2の命令
としては算術演算命令, 論理演算命令または比較命令が
並列に実行される。
【0420】本発明のデータ処理装置の第13の発明によ
れば、第1の命令としては加算命令または減算命令の内
の少なくとも一つの命令が、第2の命令としては少なく
とも命令コードで指定される即値の加算命令または減算
命令が並列に実行される。
【0421】本発明のデータ処理装置の第14の発明によ
れば、第1の命令としては加算命令が、第2の命令とし
てはインクリメント命令が並列に実行される。
【0422】本発明のデータ処理装置の第15の発明によ
れば、第1の命令としては減算命令が、第2の命令とし
てはデクリメント命令が並列に実行される。
【0423】本発明のデータ処理装置の第16の発明によ
れば、第1, 第2の命令共にメモリからデータを読み出
す命令が並列に実行される。
【0424】本発明のデータ処理装置の第17の発明によ
れば、第16の発明において第1, 第2の命令共にロード
命令が並列に実行される。
【0425】本発明のデータ処理装置の第18の発明によ
れば、第1, 第2の命令共にメモリにデータを書き込む
命令が並列に実行される。
【0426】本発明のデータ処理装置の第19の発明によ
れば、第18の発明において第1, 第2の命令共にストア
命令が並列に実行される。
【図面の簡単な説明】
【図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 (23)

    【特許請求の範囲】
  1. 【請求項1】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、1または複数の所定のシフト量の
    みのシフト処理を実行するシフタと、前記シフタの出力
    に少なくとも1つの入力が接続され、少なくとも算術演
    算または論理演算の内の一つを実行する演算手段とを含
    む複合演算手段とを有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が前記シフタが実行可能ないずれ
    かのシフト量のシフト処理を実行するシフト命令である
    第1の条件と、前記第2の命令が前記演算手段で実行可
    能な演算を実行する命令であり、且つ前記第1の命令の
    シフト結果を前記第2の命令が参照する第2の条件とが
    成立するか否かを判定する判定手段を備え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    のシフト処理と前記第2の命令の演算処理との2つの複
    合演算を前記複合演算手段に実行させることにより、前
    記第1及び第2の命令を並列に実行すべくなしてあるこ
    とを特徴とするデータ処理装置。
  2. 【請求項2】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、少なくとも算術演算または論理演
    算の内の一つを実行する演算手段と、前記演算手段の出
    力に入力が接続され、予め定められた1または複数のシ
    フト量のみのシフト処理を実行するシフタとを含む複合
    演算手段とを有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が前記演算手段で実行可能な演算
    を実行する命令である第1の条件と、前記第2の命令が
    前記シフタで実行可能ないずれかのシフト量のシフト処
    理を実行するシフト命令であり、且つ前記第1の命令の
    演算結果を前記第2の命令が参照する第2の条件とが成
    立するか否かを判定する判定手段を備え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    の演算処理と前記第2の命令のシフト処理との2つの複
    合演算を前記複合演算手段に実行させることにより、前
    記第1及び第2の命令を並列に実行すべくなしてあるこ
    とを特徴とするデータ処理装置。
  3. 【請求項3】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、少なくとも算術演算,論理演算ま
    たはシフト処理の内の一つを実行する演算手段と、前記
    演算手段の演算結果を複数のレジスタへ転送するデータ
    転送手段とを有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が前記演算手段で実行可能な演算
    を実行してその結果を自身に含まれる第1の値に対応す
    るレジスタへ転送する命令である第1の条件と、前記第
    2の命令が前記第1の命令の演算結果を自身に含まれる
    第2の値に対応するレジスタへ転送する命令である第2
    の条件とが成立するか否かを判定する判定手段を備え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    の演算処理を前記演算手段に、前記第2の命令のデータ
    転送処理及び前記第2の命令のデータ処理を前記データ
    転送手段にそれぞれ実行させることにより、前記第1及
    び第2の命令を並列に実行すべくなしてあることを特徴
    とするデータ処理装置。
  4. 【請求項4】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、少なくとも算術演算,論理演算ま
    たはシフト処理の内の一つをそれぞれ実行する第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の命令を並列に実行すべくなしてあることを特徴と
    するデータ処理装置。
  5. 【請求項5】 命令及びデータを格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 命令の実行に必要なデータを前記記憶手段から取り込む
    データアクセス手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段と、 前記記憶手段内に設定されているスタック領域の先頭の
    アドレスを指示するスタックポインタとを備えたデータ
    処理装置において、 前記命令実行手段は、前記データアクセス手段から2デ
    ータを並列にレジスタへ転送するデータ転送手段を有
    し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令及び前記第2の命令が共に前記ス
    タックポインタが指示する前記スタック領域のデータを
    自身に含まれる値に対応するレジスタへそれぞれポップ
    する命令である条件が成立するか否かを判定する判定手
    段を備え、 前記判定手段が前記条件が成立すると判定した場合に、
    前記命令実行手段が前記データアクセス手段から前記第
    1の命令に含まれる値に対応するレジスタへの前記第1
    の命令のデータ転送処理と、前記データアクセス手段か
    ら前記第2の命令に含まれる値に対応するレジスタへの
    前記第2の命令のデータ転送処理とを前記データ転送手
    段に並列に実行させることにより、前記第1及び第2の
    命令を並列に実行すべくなしてあることを特徴とするデ
    ータ処理装置。
  6. 【請求項6】 命令及びデータを格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段と、 データを前記記憶手段に格納するデータアクセス手段
    と、 前記記憶手段内に設定されているスタック領域の先頭の
    アドレスを指示するスタックポインタとを備えたデータ
    処理装置において、 前記命令実行手段は、2個のレジスタから並列に読み出
    したデータを並列に、前記データアクセス手段へ転送す
    るデータ転送手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令及び前記第2の命令が共に自身に
    含まれる値に対応するレジスタのデータを前記スタック
    ポインタが指示する前記スタック領域へそれぞれプッシ
    ュする命令である条件が成立するか否かを判定する判定
    手段を備え、 前記判定手段が前記条件が成立すると判定した場合に、
    前記命令実行手段が前記第1の命令に含まれる値に対応
    するレジスタから前記データアクセス手段への前記第1
    の命令のデータ転送処理と、前記第2の命令に含まれる
    値に対応するレジスタから前記データアクセス手段への
    前記第2の命令のデータ転送処理とを前記データ転送手
    段に並列に実行させることにより、前記第1及び第2の
    命令を並列に実行すべくなしてあることを特徴とするデ
    ータ処理装置。
  7. 【請求項7】 命令及びデータを格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 命令の実行に必要なデータを前記記憶手段から取り込む
    データアクセス手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、前記データアクセス手段から2デ
    ータを並列にレジスタへ転送するデータ転送手段を有
    し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が自身に含まれる第1の値に対応
    するレジスタの内容で指定される前記記憶手段のアドレ
    スのデータを自身に含まれる第2の値に対応するレジス
    タへ転送する命令であり、且つ前記第2の命令が自身に
    含まれる前記第1の値に対応するレジスタの内容に自身
    に含まれる第3の値を加算した値で指定される前記記憶
    手段のアドレスのデータを自身に含まれる第4の値に対
    応するレジスタへ転送する命令である第1の条件と、前
    記第1の命令により指定されるデータのデータ長が前記
    第2の命令に含まれる前記第3の値と等しい第2の条件
    とが成立するか否かを判定する判定手段を備え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    のデータ転送処理と前記第2の命令のデータ転送処理と
    を前記データ転送手段に並列に実行させることにより、
    前記第1及び第2の命令を並列に実行すべくなしてある
    ことを特徴とするデータ処理装置。
  8. 【請求項8】 命令及びデータを格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 命令の実行に必要なデータを前記記憶手段から取り込む
    データアクセス手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、前記データアクセス手段から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の命令を並列に実行すべくなしてある
    ことを特徴とするデータ処理装置。
  9. 【請求項9】 命令及びデータを格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段と、 データを前記記憶手段に格納するデータアクセス手段と
    を備えたデータ処理装置において、 前記命令実行手段は、2個のレジスタから並列に読み出
    したデータを並列に、前記データアクセス手段へ転送す
    るデータ転送手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が自身に含まれる第1の値に対応
    するレジスタの内容で指定される前記記憶手段のアドレ
    スへ自身に含まれる第2の値に対応するレジスタのデー
    タを転送する命令であり、且つ前記第2の命令が自身に
    含まれる前記第1の値に対応するレジスタの内容に自身
    に含まれる第3の値を加算した値で指定される前記記憶
    手段のアドレスへ自身に含まれる第4の値に対応するレ
    ジスタのデータを転送する命令である第1の条件と、前
    記第1の命令により指定されるデータのデータ長が前記
    第2の命令に含まれる前記第3の値に等しい第2の条件
    とが成立するか否かを判定する判定手段を備え、 前記判定手段が前記条件が成立すると判定した場合に、
    前記命令実行手段が前記第2の値に対応するレジスタか
    ら前記データアクセス手段への前記第1の命令のデータ
    転送処理と、前記第4の値に対応するレジスタから前記
    データアクセス手段への前記第2の命令のデータ転送処
    理とを前記データ転送手段に並列に実行させることによ
    り、前記第1及び第2の命令を並列に実行すべくなして
    あることを特徴とするデータ処理装置。
  10. 【請求項10】 命令及びデータを格納する記憶手段
    と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段と、 データを前記記憶手段に格納するデータアクセス手段と
    を備えたデータ処理装置において、 前記命令実行手段は、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の命令を並列に実行すべくなして
    あることを特徴とするデータ処理装置。
  11. 【請求項11】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、3入力または2入力で少なくとも
    算術演算または論理演算の内の一つを含む第1の演算
    と、第2の演算としての論理演算との複合演算を実行す
    る複合演算手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が前記複合演算手段で実行可能な
    前記第1の演算に含まれる演算を実行する第1の条件
    と、前記第2の命令が前記複合演算手段で実行可能な前
    記第2の演算に含まれる演算を実行する命令であり、且
    つ前記第1の命令の演算結果を前記第2の命令が参照す
    る第2の条件が成立するか否かを判定する判定手段を備
    え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    の処理と前記第2の命令の処理との2つの複合演算を前
    記複合演算手段に実行させることにより、前記第1及び
    第2の命令を並列に実行すべくなしてあることを特徴と
    するデータ処理装置。
  12. 【請求項12】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、3入力または2入力で第1の演算
    としての論理演算と、少なくとも算術演算,論理演算ま
    たは比較処理の内の一つを含む第2の演算との複合演算
    を実行する複合演算手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が前記複合演算手段で実行可能な
    前記第1の演算に含まれる演算を実行する第1の条件
    と、前記第2の命令が前記複合演算手段で実行可能な前
    記第2の演算に含まれる演算を実行する命令であり、且
    つ前記第1の命令の演算結果を前記第2の命令が参照す
    る第2の条件が成立するか否かを判定する判定手段を備
    え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    の処理と前記第2の命令の処理との2つの複合演算を前
    記複合演算手段に実行させることにより、前記第1及び
    第2の命令を並列に実行すべくなしてあることを特徴と
    するデータ処理装置。
  13. 【請求項13】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、3入力または2入力で少なくとも
    加算または減算の内の一つを含む第1の演算と、少なく
    とも命令コードで指定される即値の加算または減算の内
    の一つを含む第2の演算との複合演算を実行する複合演
    算手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令または前記第2の命令の内の一方
    が前記複合演算手段で実行可能な前記第1の演算を実行
    する第1の条件と、前記第1の命令または前記第2の命
    令の内の他方が前記複合演算手段で実行可能な前記第2
    の演算を実行する命令であり、且つ前記第1の命令の演
    算結果を前記第2の命令が参照する第2の条件が成立す
    るか否かを判定する判定手段を備え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    の処理と前記第2の命令の処理との2つの複合演算を前
    記複合演算手段に実行させることにより、前記第1及び
    第2の命令を並列に実行すべくなしてあることを特徴と
    するデータ処理装置。
  14. 【請求項14】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、第1の演算としての加算と、第2
    の演算としてのインクリメント演算との複合演算を実行
    する複合演算手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令または前記第2の命令の内の一方
    が前記複合演算手段で実行可能な前記第1の演算を実行
    する第1の条件と、前記第1の命令または前記第2の命
    令の内の他方が前記複合演算手段で実行可能な前記第2
    の演算を実行する命令であり、且つ前記第1の命令の演
    算結果を前記第2の命令が参照する第2の条件が成立す
    るか否かを判定する判定手段を備え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    の処理と前記第2の命令の処理との2つの複合演算を前
    記複合演算手段に実行させることにより、前記第1及び
    第2の命令を並列に実行すべくなしてあることを特徴と
    するデータ処理装置。
  15. 【請求項15】 命令を格納する記憶手段と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、第1の演算としての減算と、第2
    の演算としてのデクリメント演算との複合演算を実行す
    る複合演算手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令または前記第2の命令の内の一方
    が前記複合演算手段で実行可能な前記第1の演算を実行
    する第1の条件と、前記第1の命令または前記第2の命
    令の内の他方が前記複合演算手段で実行可能な前記第2
    の演算を実行する命令であり、且つ前記第1の命令の演
    算結果を前記第2の命令が参照する第2の条件が成立す
    るか否かを判定する判定手段を備え、 前記判定手段が前記第1及び第2の条件が共に成立する
    と判定した場合に、前記命令実行手段が前記第1の命令
    の処理と前記第2の命令の処理との2つの複合演算を前
    記複合演算手段に実行させることにより、前記第1及び
    第2の命令を並列に実行すべくなしてあることを特徴と
    するデータ処理装置。
  16. 【請求項16】 命令及びデータを格納する記憶手段
    と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 命令の実行に必要なデータを前記記憶手段から取り込む
    データアクセス手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段とを備えたデータ処理装置において、 前記命令実行手段は、前記データアクセス手段から2デ
    ータを並列に前記命令実行手段へ転送するデータ転送手
    段とを有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が前記メモリからデータを読み出
    す命令であり、前記第2の命令が前記メモリの前記第1
    の命令により読み出されるデータに連続する領域のデー
    タを読み出す命令である条件が成立するか否かを判定す
    る判定手段を備え、 前記判定手段が前記条件が成立すると判定した場合に、
    前記命令実行手段が前記データアクセス手段から前記命
    令実行手段への前記第1の命令のデータ転送処理と、前
    記データアクセス手段から前記命令実行手段への前記第
    2の命令のデータ転送処理とを前記データ転送手段に並
    列に実行させることにより、前記第1及び第2の命令を
    並列に実行すべくなしてあることを特徴とするデータ処
    理装置。
  17. 【請求項17】 前記第1及び第2の命令が共にロード
    命令であることを特徴とする請求項16に記載のデータ
    処理装置。
  18. 【請求項18】 命令及びデータを格納する記憶手段
    と、 前記記憶手段から命令を取り込む命令フェッチ手段と、 前記命令フェッチ手段が取り込んだ命令を解析する命令
    解析手段と、 前記命令解析手段での解析結果に基づいて命令を実行す
    る命令実行手段と、 データを前記記憶手段に格納するデータアクセス手段と
    を備えたデータ処理装置において、 前記命令実行手段は、2データを並列に前記データアク
    セス手段へ転送するデータ転送手段を有し、 前記命令解析手段は、第1の命令と前記第1の命令に引
    き続く命令以降の第2の命令とを含む複数の命令からな
    る命令群の各命令を解析する手段を有し、 更に、前記第1の命令が前記メモリへデータを書き込む
    命令であり、前記第2の命令が前記メモリの前記第1の
    命令により書き込まれるデータに連続する領域にデータ
    を書き込む命令である条件が成立するか否かを判定する
    判定手段を備え、 前記判定手段が前記条件が成立すると判定した場合に、
    前記命令実行手段が前記データアクセス手段への前記第
    1の命令のデータ転送処理と、前記データアクセス手段
    への前記第2の命令のデータ転送処理とを前記データ転
    送手段に並列に実行させることにより、前記第1及び第
    2の命令を並列に実行すべくなしてあることを特徴とす
    るデータ処理装置。
  19. 【請求項19】 前記第1及び第2の命令が共にストア
    命令であることを特徴とする請求項18に記載のデータ
    処理装置。
  20. 【請求項20】 前記命令解析手段は、第1の命令と前
    記第1の命令に引き続く命令以降の第2の命令とを並列
    に解析すべくなしてあることを特徴とする請求項1乃至
    16及び18に記載のデータ処理装置。
  21. 【請求項21】 前記データアクセス手段は、前記記憶
    手段から以前に取り込んだデータを記憶するデータキャ
    ッシュを含むことを特徴とする請求項5,7,8及び1
    6に記載のデータ処理装置。
  22. 【請求項22】 前記データアクセス手段は、前記記憶
    手段から以前に取り込んだデータを一時的に保持するバ
    ッファ手段を含むことを特徴とする請求項5,7,8及
    び16に記載のデータ処理装置。
  23. 【請求項23】 前記データアクセス手段は、前記記憶
    手段に書込むべきデータを一時的に保持するバッファ手
    段を含むことを特徴とする請求項6,9,11乃至15
    及び18に記載のデータ処理装置。
JP27528194A 1994-11-09 1994-11-09 データ処理装置 Expired - Fee Related JP3543181B2 (ja)

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 true JPH08137688A (ja) 1996-05-31
JP3543181B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011248539A (ja) * 2010-05-25 2011-12-08 Fujitsu Ltd 情報処理装置
JP2013218708A (ja) * 2006-01-31 2013-10-24 Qualcomm Inc 単一方向回転子のためのレジスタベースのシフト
JP2020534599A (ja) * 2017-09-19 2020-11-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation サブルーチンへの分岐に応じたTable of Contentsポインタ値の予測
JP2021504788A (ja) * 2017-11-27 2021-02-15 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ストアフュージョンのためのシステム及び方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11272555A (ja) * 1998-03-20 1999-10-08 Fujitsu Ltd キャッシュメモリ制御システム
AU3021799A (en) 1998-04-01 1999-10-18 Mosaid Technologies Incorporated Semiconductor memory asynchronous pipeline
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
US20090105993A1 (en) * 2007-10-22 2009-04-23 Advantest Corporation Histogram generation with multiple increment read-modify-write cycles
US9430596B2 (en) 2011-06-14 2016-08-30 Montana Systems Inc. System, method and apparatus for a scalable parallel processor
CN105122158B (zh) * 2013-04-16 2017-12-22 西门子公司 具有短延迟时间的可编程控制装置
KR20160095688A (ko) * 2015-02-03 2016-08-12 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 상태 확인 방법
CN110825442B (zh) * 2019-04-30 2021-08-06 成都海光微电子技术有限公司 一种指令预取方法及处理器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
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 株式会社東芝 並列プロセッサー
DE69231762T2 (de) * 1991-07-08 2001-07-26 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013218708A (ja) * 2006-01-31 2013-10-24 Qualcomm Inc 単一方向回転子のためのレジスタベースのシフト
JP2011248539A (ja) * 2010-05-25 2011-12-08 Fujitsu Ltd 情報処理装置
JP2020534599A (ja) * 2017-09-19 2020-11-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation サブルーチンへの分岐に応じたTable of Contentsポインタ値の予測
JP2021504788A (ja) * 2017-11-27 2021-02-15 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ストアフュージョンのためのシステム及び方法

Also Published As

Publication number Publication date
JP3543181B2 (ja) 2004-07-14
US6112289A (en) 2000-08-29
US6178492B1 (en) 2001-01-23

Similar Documents

Publication Publication Date Title
JP3543181B2 (ja) データ処理装置
US5717946A (en) Data processor
JP2761688B2 (ja) データ処理装置
KR100190252B1 (ko) 고속 프로세서에서의 브랜치 처리 방법 및 장치
JP2678527B2 (ja) キャッシュメモリ装置
JPH06119166A (ja) 簡略命令セットプロセッサでレジスタ内データ操作を行なう方法
JPH06110685A (ja) 高性能プロセッサにおける分岐予想方法
JPH06131175A (ja) 高性能プロセッサのためのバイト比較操作方法
JPH0766324B2 (ja) データ処理装置
JPH03186928A (ja) データ処理装置
JPS6339931B2 (ja)
JPH081599B2 (ja) データ処理装置
JPH01214932A (ja) データ処理装置
JP2581236B2 (ja) データ処理装置
JPH0810428B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
JP2710994B2 (ja) データ処理装置
JP2504235B2 (ja) デ―タ処理装置
US5269008A (en) Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer
JPH0769806B2 (ja) データ処理装置
US5819060A (en) Instruction swapping in dual pipeline microprocessor
JPH04260928A (ja) データ処理装置
JP2928879B2 (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