JP2933027B2 - 複数命令並列発行/実行管理装置 - Google Patents

複数命令並列発行/実行管理装置

Info

Publication number
JP2933027B2
JP2933027B2 JP8249164A JP24916496A JP2933027B2 JP 2933027 B2 JP2933027 B2 JP 2933027B2 JP 8249164 A JP8249164 A JP 8249164A JP 24916496 A JP24916496 A JP 24916496A JP 2933027 B2 JP2933027 B2 JP 2933027B2
Authority
JP
Japan
Prior art keywords
instruction
register
result value
row
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP8249164A
Other languages
English (en)
Other versions
JPH1078872A (ja
Inventor
真人 本村
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.)
NEC Corp
Original Assignee
Nippon Electric Co Ltd
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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP8249164A priority Critical patent/JP2933027B2/ja
Priority to US08/921,313 priority patent/US5944811A/en
Priority to GB9718528A priority patent/GB2316781B/en
Publication of JPH1078872A publication Critical patent/JPH1078872A/ja
Application granted granted Critical
Publication of JP2933027B2 publication Critical patent/JP2933027B2/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明が属する技術分野】本発明は、複数の命令を動的
かつ並列に発行し、並列に実行するスーパースカラ型の
プロセッサに搭載され、複数の命令の発行及び実行を管
理する複数命令並列発行/実行管理装置に関する。
【0002】
【従来の技術】汎用プロセッサ、特にマイクロプロセッ
サの高性能化技術として、一般にスーパースカラと呼ば
れる技術が広く用いられている。スーパースカラ技術
は、命令列を構成する個々の命令を順次フェッチし、デ
コードし、発行し、実行するにあたって、複数の命令を
並列にフェッチ及びデコードし、デコード済みの複数の
命令の中から複数の実行可能な命令を動的に特定し、そ
れらの命令を複数の演算処理装置やメモリアクセス装置
に並列に発行し、並列に実行する技術である。従来のス
ーバースカラ技術に関しては、例えば、Mike Jo
hnson氏著の“Superscalar Micr
oprocessor Design”(Prenti
ce Hall社刊)に詳しい解説がある。
【0003】スーパースカラ技術を用いた、従来のスー
パースカラマイクロプロセッサは、複数命令並列発行管
理装置と複数命令並列実行管理装置が、上記の並列処理
を実現する上で極めて重要な役割を担っている。複数命
令並列発行管理装置は、一般にリザベーションステーシ
ョン(Reservation Station)と呼
ばれ、複数命令並列実行管理装置は、一般にリオーダー
バッファ(Reorder Buffer)と呼ばれ
る。
【0004】複数命令並列発行管理装置は、デコード済
みの複数の命令を一時的に保持し、保持された命令の中
のそれぞれの命令が発行可能であるかどうかを判断し、
発行可能な命令の内の幾つかの命令を発行する動作を行
なう。発行不可能な命令は複数命令並列発行管理装置内
にそのまま継続して保持され、次の処理サイクルで再度
発行可能かどうか検査される。
【0005】図28は、従来技術の複数命令並列発行管
理装置の基本構成を示したブロック図である。図示のよ
うに、複数命令並列発行管理装置は、複数の未発行命令
エントリ2501と発行制御装置2502とを備える。
未発行命令エントリ2501は、命令タグフィールド2
5011と、命令コードフィールド25012と、第1
オペランド/タグフィールド25013と、第2オペラ
ンド/タグフィールド25014と、比較器25015
と、比較器25016とを備える。また、複数命令並列
発行管理装置は、命令タグ入力端子2503と、命令コ
ード入力端子2504と、第1オペランド/タグ登録入
力端子2505と、第1タグ比較入力端子2506と、
第2オペランド/タグ登録入力端子2507と、第2タ
グ比較入力端子2508とを入出力端子として持つ。そ
して、1つの未発行命令エントリ2501当たり1命令
が一時的に保持される。
【0006】ある命令が発行可能であるかどうかを判断
するためには、その命令の必要とする入力オペランドが
全て揃っているかどうかを調べる必要がある。従来技術
による複数命令並列発行管理装置は、必要な入力オペラ
ンドが全て揃っているかどうかの判定を、以下のよう
に、比較器25015及び比較器25016を用いた並
列比較動作で実現している。なお、図示の例では1命令
あたり2つの入力オペランドを使用するものとする。
【0007】フィールド未発行命令エントリ2501の
命令タグフィールド25011には、当該命令に固有の
命令タグが格納されている。また、第1オペランド/タ
グフィールド25013、第2オペランド/タグフィー
ルド25014には、入力オペランドが既に存在する場
合はそれぞれその入力オペランドが格納され、まだ入力
オペランドが存在しない場合にはその入力オペランドを
結果値として生成する命令の命令タグが格納される。
【0008】ある命令の実行が終了すると、その命令の
命令タグが、第1タグ比較入力端子2506と第2タグ
比較入力端子2508とを介して、全ての未発行命令エ
ントリ2501の比較器25015と比較器25016
とに与えられる。それぞれの比較器25015と比較器
25016とは、それぞれの第1オペランド/タグフィ
ールド25013及び第2オペランド/タグフィールド
25014に格納されている値(入力オペランドもしく
は命令タグ)と、入力された命令タグとを比較し、一致
しているかどうかを検査する。なお、入力オペランドと
命令タグが一致することはないようにする。
【0009】比較された値が一致した場合は、その実行
を終了した命令の結果値が、第1オペランド/タグフィ
ールド登録入力端子2505と第2オペランド/タグフ
ィールド登録入力端子2507とを介して与えられるの
で、当該結果値を、対応する第1オペランド/タグフィ
ールド25013もしくは第2オペランド/タグフィー
ルド25014に登録する。発行制御装置2502は、
比較器25015及び比較器25016の比較結果を受
け、それぞれの命令の入力オペランドが揃ったかどうか
を判断する。
【0010】以上のように、従来技術のスーパースカラ
マイクロプロセッサの複数命令並列発行装置は、比較器
25015及び比較器25016を用いた並列比較動作
で命令の発行可能性を判断する。なお、図28では、比
較器25015及び比較器25016を各未発行命令エ
ントリ2501当たりそれぞれ1つずつ設けているが、
実際は、同時に並列実行される命令の数だけそれぞれ必
要である。
【0011】これに対して、複数命令並列実行管理装置
は、命令のフェッチ/デコード順序とは違う順序で実行
された場合における当該命令間の順序性を保証するため
に、実行済みでかつまだ実行が確定していない命令の結
果値(以下、未確定結果値と呼ぶ)を一時的に保持し、
未発行命令に対して、これらの未確定結果値を入力オペ
ランドとして与える動作を行なう。
【0012】図29は、従来技術の複数命令並列実行管
理装置の基本構成を示したブロック図である。図29に
おいて、複数命令並列実行管理装置は、複数の実行後命
令エントリ2601と実行制御装置2602とを備え
る。実行後命令エントリ2601は、結果値フィールド
26011と、命令タグフィールド26012と、レジ
スタ番号フィールド26013と、比較器26014
と、比較器26015と、比較器26016とを備え
る。また、複数命令並列実行管理装置は、結果値入力端
子2603と、命令タグ登録入力端子2604、命令タ
グ比較入力端子2605、レジスタ番号登録入力端子2
606と、レジスタ番号比較第1入力端子26071
と、レジスタ番号比較第2入力端子26072と、第1
オペランド/タグ出力端子26081と、第2オペラン
ド/タグ出力端子26082と、結果値出力端子260
91と、レジスタ番号出力端子26092とを入出力端
子として持つ。そして、1つの実行後命令エントリ26
01当たり1つの実行を終了した命令の未確定結果値が
一時的に保持される。
【0013】ある命令が入力オペランドをレジスタファ
イル装置に対して要求した場合、複数命令並列実行管理
装置は、その入力オペランドがまだレジスタファイル装
置に書き込まれずに未確定結果値として複数命令並列実
行管理装置内に一時的に保持されているかどうかを調
べ、必要に応じてその未確定結果値をその命令の入力オ
ペランドとして与える。従来技術の複数命令並列実行管
理装置は、これを以下のように、比較器26015と比
較器26016を用いた並列比較動作で実現している。
【0014】実行後エントリ2601の結果値フィール
ド26011には未確定状態の結果値が格納され、命令
タグフィールド26012には命令タグが格納され、レ
ジスタ番号フィールド26013には書き込むレジスタ
番号がそれぞれ格納されている。ある命令が2つの入力
オペランドを要求すると、要求された2つの入力オペラ
ンドを読みとるレジスタ番号が、レジスタ番号比較第1
入力端子26071とレジスタ番号比較第2入力端子2
6072とを介して、全ての比較器26015、260
16にそれぞれ入力される。比較器26015と比較器
26016とは、これらの入力されたレジスタ番号とそ
れぞれのレジスタ番号フィールド26013に格納され
ているレジスタ番号とを比較する。
【0015】実行制御装置2602は、比較の結果レジ
スタ番号の一致が検出されたかどうかを検査する。1つ
の入力オペランドに対して複数の一致がある場合は、最
も時間的に新しい命令を格納した実行後命令エントリ2
601が一致したと判定する。そして、それぞれの入力
オペランドに対して一致したと判定された実行後命令エ
ントリ2601から結果値と命令タグとを読み出し、そ
れぞれを第1オペランド/タグ出力端子26081、第
2オペランド/タグ出力端子26082から出力する。
【0016】比較器26014は、ある命令が実行を終
了した時に、その未確定結果値をどの実行後命令エント
リ2601に格納するかを決定する際に用いられる。こ
の決定は、実行終了した命令の命令タグと予め命令タグ
フィールド26012に格納された命令タグとを比較器
26014で並列に比較し、一致する実行後命令エント
リ2601を捜し出すことで行われる。また、ある命令
の実行が確定すると、その命令の結果値とレジスタ番号
が複数命令並列実行管理装置から結果値出力端子260
91とレジスタ番号出力端子26092を介して出力さ
れ、レジスタファイルに与えられる。
【0017】以上のように、従来技術のスーパースカラ
マイクロプロセッサの複数命令並列実行装置は、比較器
26015及び比較器26016を用いた並列比較動作
でどの未確定結果値を入力オペランドとして未発行命令
に受け渡すかを判断する。なお、図29では、比較器2
6014、比較器26015、及び比較器26016を
各実行後命令エントリ2601当たり1つずつ設けてい
るが、実際は、比較器26014は同時に実行終了され
る命令の数だけ必要であり、比較器26015と比較器
26016は同時に並列デコードされる命令の数だけ必
要である。
【0018】上述したように、従来技術によるスーパー
スカラ技術を用いたマイクロプロセッサは、複数の命令
を並列にデコードし、並列に発行し、並列に実行するた
めに、複数命令並列発行管理装置と複数命令並列実行装
置の双方において、大量の比較器を用いる必要がある。
【0019】例えば、3命令を並列に発行し、3命令を
並列に実行終了する従来技術のスーパースカラ技術を用
いたマイクロプロセッサを考える。この程度の数の比較
器を有するマイクロプロセッサは、設計がかなり複雑で
あるという問題はあるものの、実際に製造され、用いら
れている。この場合、複数命令並列発行管理装置の未発
行命令エントリ2501の数は、例えば8個程度、複数
命令並列実行管理装置の実行後命令エントリ2601の
数は、例えば16個程度必要となる。この場合の比較器
の数は、複数命令並列発行管理装置内で、48(=2×
8×3)個必要であり、複数命令並列実行管理装置内
で、144(=3×16×3)個必要である。
【0020】また、従来技術のスーパースカラ技術を用
いて、上記のマイクロプロセッサの3倍の9命令を並列
に発行し、9命令を並列に実行終了するマイクロプロセ
ッサを考える。この場合、並列に発行し実行する命令の
数に比例して、複数命令並列発行管理装置の未発行命令
エントリ2501の数と複数命令並列実行管理装置の実
行後命令エントリ2601の数を増やす必要がある。そ
こで、未発行命令エントリ2501の数は、例えば24
個程度必要となり、実行後命令エントリ2601の数
は、例えば48個程度必要となる。この場合の比較器の
数は、複数命令並列発行管理装置内で、432(=2×
24×9)個必要であり、複数命令並列実行管理装置内
で、1296(=3×48×9)個必要である。
【0021】このように、複数命令並列発行管理装置及
び複数命令並列実行管理装置内の比較器の数は、並列に
発行し、実行し、実行終了する命令の数(これらは同じ
値かもしくはほぼ同じ値に取られる)のほぼ2乗に比例
して、急速に増えていく性質がある。
【0022】
【発明が解決しようとする課題】上述したように、従来
のスーパースカラ技術を用いたマイクロプロセッサは、
複数の命令を並列にデコードし、並列に発行し、並列に
実行するために、複数命令並列発行管理装置と複数命令
並列実行装置の双方において、大量の比較器を用いる必
要があった。したがって、これら大量の比較器とその制
御回路のために、従来技術のスーパースカラ技術を用い
たマイクロプロセッサの複数命令並列発行管理装置と複
数命令並列実行装置は、極めて複雑な構成を有してお
り、かつ回路規模も極めて大きいという問題があった。
【0023】また、同時並列に大量の比較動作が行なわ
れるため、大量の電力を消費するという問題があった。
【0024】さらに、複数命令並列発行管理装置及び複
数命令並列実行管理装置内の比較器の数は、並列に発行
し、実行し、実行終了する命令の数のほぼ2乗に比例し
て、急速に増えていく性質があるため、処理の並列度を
向上させようとすると、比較器の数の増加に応じて、そ
の制御回路や配線の複雑度も急速に増大し、その遅延時
間も増大する。したがって、これらの問題は、スーパー
スカラ技術を用いたマイクロプロセッサのアーキテクチ
ャを高度化し、処理の並列度を向上しようとする際の深
刻な障害となっていた。
【0025】処理の並列度を上げることは、スーパース
カラ技術によるマイクロプロセッサの処理性能向上の上
で、最も重要なファクターであるが、上記のような問題
点により、例えば、10命令程度以上を並列に実行する
ようなプロセッサを製造することは困難であった。
【0026】本発明の目的は、比較器を用いずに複数命
令並列発行管理装置と複数命令並列実行装置を構成する
ことにより、これらの装置の構成を簡単化して回路規模
を削減し、かつ消費電力を低減することにある。
【0027】また、本発明の他の目的は、上記の目的に
加えて、10命令程度以上の複数命令を同時にデコード
し、発行し、実行することのできる複数命令並列発行/
実行管理装置を提供することにある。
【0028】
【課題を解決するための手段】上記の目的を達成する本
発明の複数命令並列発行/実行管理装置は、複数の命令
を動的かつ並列に発行し、並列に実行するスーパースカ
ラ型のプロセッサに搭載され、所定の命令の実行終了に
より生成される結果値を他のいずれの命令が入力オペラ
ンドとして使用するかを示すフォワードマップ情報を格
納するフォワードマップバッファを備え、前記フォワー
ドマップバッファが、所定の結果値が実際に生成される
前に、該結果値に対する前記フォワードマップ情報を予
め格納し、前記結果値が実際に生成された際に、予め格
納された前記結果値に対する前記フォワードマップ情報
を用いて、前記結果値を使用する前記入力オペランドを
特定することを特徴とする。
【0029】請求項2の本発明の複数命令並列発行/実
行管理装置は、所定個数P個の結果値と所定個数Q個の
入力オペランドとに関する前記フォワードマップ情報
を、1ビットのフォワードビット情報をP行Q列の2次
元行列状に並べたP×Qビットの情報として構成し、前
記P行Q列のフォワードマップ情報のうちのp行q列目
のフォワードビット情報に特定の値を設定することによ
り、前記P個の結果値のうちのp番目の結果値を、前記
Q個の入力オペランドのうちのq番目の入力オペランド
として使用するかどうかを設定することを特徴とする。
【0030】請求項3の本発明の複数命令並列発行/実
行管理装置は、任意の命令について、該命令を発行する
前に、該命令が入力オペランドとして使用する結果値を
特定し、前記特定された結果値がp番目、前記入力オペ
ランドがq番目である場合に、p行q列目の前記フォワ
ードビット情報の値を、前記結果値を入力オペランドと
して使用することを示す値に設定することにより、前記
特定された結果値が実際に生成される前に、前記結果値
に対する前記フォワードマップ情報を前記フォワードマ
ップバッファに格納することを特徴とする。
【0031】請求項4の本発明の複数命令並列発行/実
行管理装置は、任意の命令について、該命令の結果値が
生成され、該結果値がp番目である場合に、前記フォワ
ードマップバッファからp行目の前記フォワードマップ
情報を読み出し、Q個の前記フォワードビット情報の各
々の値に基づいて、該結果値を使用する入力オペランド
を特定することを特徴とする。
【0032】請求項5の本発明の複数命令並列発行/実
行管理装置は、前記フォワードマップバッファが、P行
Q列の2次元行列状にメモリセルを配し、前記各メモリ
セルが、直交する行方向及び列方向の2種類のワード線
と直交する行方向及び列方向の2種類のビット線とに接
続された直交型メモリであることを特徴とする。
【0033】請求項6の本発明の複数命令並列発行/実
行管理装置は、入力オペランドに対するフォワードマッ
プ情報を格納する際に、前記列方向ワード線を用いて1
列分の前記メモリセルを書き込み可能状態にして、前記
行方向ビット線からPビットの前記フォワードマップ情
報を格納し、結果値に対するフォワードマップ情報を格
納する際に、前記行方向ワード線を用いて1行分の前記
メモリセルを書き込み可能状態にして、前記列方向ビッ
ト線からQビットの前記フォワードマップ情報を格納
し、所定の結果値に対する前記フォワードマップ情報を
読み出す際に、前記行方向ワード線を用いて1行分の前
記メモリセルを読み出し可能状態にし、前記列方向ビッ
ト線からQビットの前記フォワードマップ情報を読み出
すことを特徴とする。
【0034】請求項7の本発明の複数命令並列発行/実
行管理装置は、命令が結果値を書き込むべきレジスタを
示すレジスタマップ情報を格納するレジスタマップバッ
ファをさらに備えることを特徴とする。
【0035】請求項8の本発明の複数命令並列発行/実
行管理装置は、所定個数P個の結果値と所定個数R個の
レジスタとに関する前記レジスタマップ情報を、1ビッ
トのレジスタビット情報をP行R列の2次元行列状に並
べたP×Rビットの情報として構成し、前記P行R列の
レジスタマップ情報のうちのp行r列目のレジスタビッ
ト情報に特定の値を設定することにより、前記P個の結
果値のうちのp番目の結果値が前記R個のレジスタのう
ちのr番目のレジスタに書き込みを行なうかどうかを設
定することを特徴とする。
【0036】請求項9の本発明の複数命令並列発行/実
行管理装置は、任意の命令について、該命令を発行する
前に、該命令が結果値を書き込むレジスタを特定し、前
記特定されたレジスタがr番目、前記結果値がp番目で
ある場合に、p行r列目の前記レジスタビット情報の値
を、前記レジスタに書き込みを行なうことを示す値に設
定することにより、前記結果値に対する前記レジスタマ
ップ情報を前記レジスタマップバッファに格納すること
を特徴とする。
【0037】請求項10の本発明の複数命令並列発行/
実行管理装置は、任意の命令について、該命令を発行す
る前に、該命令が入力オペランドとして使用するレジス
タを特定し、前記特定されたレジスタがr番目である場
合に、前記レジスタマップバッファからr列目のレジス
タマップ情報を読み出し、前記読み出されたPビットの
レジスタビット情報であって、前記レジスタに書き込み
を行なうことを示す値に設定されているもののうち、最
も時間的に後にフェッチ/デコードされた命令の結果値
に対応する前記レジスタビット情報のみを、前記レジス
タに書き込みを行なうことを示す値とし、他のレジスタ
ビット情報は、前記レジスタに書き込みを行なわないこ
とを示す値とすることにより、前記命令を発行する前
に、前記命令が入力オペランドして使用する結果値を特
定することを特徴とする。
【0038】請求項11の本発明の複数命令並列発行/
実行管理装置は、前記レジスタマップバッファが、P行
R列の2次元行列状にメモリセルを配し、前記各メモリ
セルが、直交する行方向及び列方向の2種類のワード線
と直交する行方向及び列方向の2種類のビット線とに接
続された直交型メモリであることを特徴とする。
【0039】請求項12の本発明の複数命令並列発行/
実行管理装置は、結果値に対するレジスタマップ情報を
格納する際に、前記行方向ワード線を用いて1行分の前
記メモリセルを書き込み可能状態にし、前記列方向ビッ
ト線から前記レジスタマップ情報を格納し、入力オペラ
ンドに対するレジスタマップ情報を読み出す際に、前記
列方向ワード線を用いて1列分の前記メモリセルを読み
出し可能状態にし、前記行方向ビット線から前記レジス
タマップ情報を読み出すことを特徴とする。
【0040】請求項13の本発明の複数命令並列発行/
実行管理装置は、前記レジスタマップバッファのP本の
行方向ビット線の出力に接続したP本の入力と、前記フ
ォワードマップバッファのP本の前記行方向ワード線の
入力に接続したP本の出力とを備える最新書き込み検出
手段をさらに備え、任意の命令について、該命令を発行
する前に、該命令が入力オペランドとして使用するレジ
スタを特定し、該特定されたレジスタがr番目であっ
て、前記レジスタマップバッファのr列目の前記列方向
ワード線を駆動して、r列目の前記レジスタマップ情報
を前記行方向ビット線より読み出した場合に、前記最新
書き込み検出手段は、入力されたPビットのレジスタビ
ット情報であって、前記レジスタに書き込みを行なうこ
とを示す値に設定されているもののうち、最も時間的に
後にフェッチ/デコードされた命令の結果値に対応する
前記レジスタビット情報のみを、前記レジスタに書き込
みを行なうことを示す値とし、他のレジスタビット情報
は、前記レジスタに書き込みを行なわないことを示す値
としたPビットの情報を出力し、前記フォワードマップ
バッファは、前記最新書き込み検出手段の前記Pビット
の出力のうち、前記レジスタに書き込みを行なうことを
示す値に設定されているものがp行目の出力である場
合、p行目の前記行方向ワード線を駆動して、p行目の
前記フォワードマップ情報を書き込み可能状態にすると
共に、前記命令の結果値を使用する入力オペランドがq
番目である場合に、q列目の前記列方向ビット線のみ前
記結果値を入力オペランドとして使用することを示す値
に設定し、他の前記列方向ビット線を書き込みを行なわ
ないことを意味する値に設定することにより、前記入力
オペランドが前記結果値を使用することを示すように前
記フォワードマップ情報を更新することを特徴とする。
【0041】請求項14の本発明の複数命令並列発行/
実行管理装置は、前記レジスタマップバッファのP本の
行方向ビット線の出力に接続したP本の入力と、前記フ
ォワードマップバッファのP本の前記行方向ビット線の
入力に接続したP本の出力とを備える最新書き込み検出
手段をさらに備え、任意の命令について、該命令を発行
する前に、該命令が入力オペランドとして使用するレジ
スタを特定し、該特定されたレジスタがr番目であっ
て、前記レジスタマップバッファのr列目の前記列方向
ワード線を駆動して、r列目の前記レジスタマップ情報
を前記行方向ビット線より読み出した場合に、前記最新
書き込み検出手段は、入力されたPビットのレジスタビ
ット情報であって、前記レジスタに書き込みを行なうこ
とを示す値に設定されているもののうち、最も時間的に
後にフェッチ/デコードされた命令の結果値に対応する
前記レジスタビット情報のみを、前記レジスタに書き込
みを行なうことを示す値とし、他のレジスタビット情報
は、前記レジスタに書き込みを行なわないことを示す値
としたPビットの情報を出力し、前記フォワードマップ
バッファは、前記最新書き込み検出手段の前記Pビット
の出力のうち、前記レジスタに書き込みを行なうことを
示す値に設定されているものがp行目の出力である場
合、前記行方向ビット線を駆動して、p行目の前記フォ
ワードマップ情報のみを書き込み可能状態にすると共
に、前記命令の結果値を使用する入力オペランドがq番
目である場合に、q列目の前記列方向ワード線のみを書
き込み可能状態にすることにより、前記入力オペランド
が前記結果値を使用することを示すように前記フォワー
ドマップ情報を更新することを特徴とする。
【0042】
【発明の実施の形態】以下、本発明の実施例について図
面を参照して詳細に説明する。
【0043】図1は、本発明の1実施例によるプロセッ
サの構成を示したブロック図である。なお、以下の説明
では複数命令並列発行管理装置と複数命令並列実行装置
とを1つの装置として取り扱い、これを複数命令並列発
行/実行管理装置と呼ぶ。
【0044】図示のように、本実施例のプロセッサ10
は、命令フェッチ/デコード装置11と、命令キャッシ
ュメモリ18と、複数命令並列発行/実行管理装置12
と、レジスタファイル装置13と、メモリアクセス装置
14と、演算装置15と、データキャッシュメモリ16
と、結果バス17とを備える。
【0045】メモリアクセス装置14及び演算装置15
は、それぞれ任意個数設けることが可能である。また、
複数の演算装置15は、それぞれの内部構成を変えるこ
とによって、それぞれの演算装置15が違った演算を実
行するような構成をとることも可能である。本実施例で
は、メモリアクセス装置14を1個、同じ構成の演算装
置15を2個用い、同時に最大3つの命令を並列実行可
能な構成をとっている。本実施例において、命令キャッ
シュメモリ11、データキャッシュメモリ17等は必ず
必要なものではなく、直接プロセッサ10の外部のメモ
リ装置にアクセスするような構成も可能である。レジス
タファイル装置13は内部に複数のレジスタ135を持
つ装置である。本実施例では、レジスタ135を8個有
する。
【0046】複数命令並列発行/実行管理装置12は、
デコード情報入力端子121と、レジスタファイル読み
取り制御端子122、レジスタファイル書き込み端子1
23と、レジスタファイル読み取りデータ端子124
と、3つの命令発行端子125−1、125−2、及び
125−3と、結果値入力端子126とを入出力端子と
している。
【0047】図1に示す本実施例のプロセッサ10は、
まず命令キャッシュメモリ18から複数の命令を読み出
し、命令フェッチ/デコード装置11に送る。命令フェ
ッチ/デコード装置11は、これらの複数の命令をデコ
ードし、演算の種類や、書き込み/読み取りを行なうレ
ジスタ135を特定する。簡単のために、本実施例にお
いては、1つの命令はレジスタファイル13内の最大1
つのレジスタ135に結果値の書き込みを行ない、同じ
く1つの命令はレジスタファイル13内の最大2つのレ
ジスタ135からそれぞれ入力オペランドの読み取りを
行なうものとする。また、本実施例では、例として、命
令フェッチ/デコード装置11が最大3つの命令を並列
にデコード可能なものとする。
【0048】命令フェッチ/デコード装置11は、同時
にデコードした3つの命令に関して、デコードされた命
令コード(命令コード情報と呼ぶ)と書き込み/読み取
りを行なうレジスタ135の情報(レジスタ書き込み情
報及びレジスタ読み取り情報と呼ぶ)とをデコード情報
入力端子121を介して複数命令並列発行/実行管理装
置12に転送する。また、同時にデコードした3つの命
令の間で時間的に前に実行する命令の結果値と後に実行
する命令の入力オペランドが同一のレジスタ135を使
用している場合、その情報を複数命令並列発行/実行管
理装置12に転送する(同時デコード命令間レジスタ上
データ依存性情報と呼ぶ)。なお、一般に、このように
前の命令の結果値と後の命令の入力オペランドが同一レ
ジスタ135を使用している場合、これらの命令間にレ
ジスタ上データ依存性があるという。また、命令フェッ
チ/デコード装置11から複数命令並列発行/実行管理
装置12に送られ、以下に説明するように、複数命令並
列発行/実行装置12内で保持される各命令に関する情
報を、併せて命令動作情報と呼ぶ。
【0049】複数命令並列発行/実行管理装置12は、
命令フェッチ/デコード装置11からデコード情報入力
端子121を介して転送された複数の命令に関する命令
動作情報を一時的に格納し、必要に応じて、レジスタフ
ァイル読み取り制御端子122を介してレジスタファイ
ル装置13にアクセスし、レジスタファイル読み取りデ
ータ端子124より1つの命令あたり最大2個のレジス
タ135のデータを入力オペランドとして読み取る。こ
こで、複数命令並列発行/実行管理装置12に格納され
ており、まだメモリアクセス装置14または演算装置1
5に発行されていない命令を未発行命令と呼ぶ。複数命
令並列発行/実行管理装置12は、未発行命令のうちか
ら、既に必要な入力オペランドが全て揃っていて発行す
ることが可能なものを複数個選択し、選択された複数の
発行可能な命令を、命令発行端子125からメモリアク
セス装置14及び演算装置15に同時に発行する機能を
持つ。本実施例では、最大3命令を同時に発行可能であ
るとしている。
【0050】ここで、メモリアクセス装置14は、ロー
ド/ストア命令もしくはメモリ上の変数を入力値/出力
値とする任意の命令の実行に際して使用される装置であ
り、データキャッシュメモリ16へのアクセスを行な
う。演算装置15は、算術・論理演算命令や分岐命令等
を処理する。メモリアクセス装置14、演算装置15
は、それぞれの命令の処理結果である結果値を結果バス
17に出力する。
【0051】複数命令並列発行/実行管理装置12は、
未発行命令に関する命令動作情報を保持するのみでな
く、発行済みで実行中の命令(以下では実行中命令と呼
ぶ)と実行済みで結果値がまだ未確定な命令(以下では
未確定命令と呼ぶ)に関する命令動作情報をも内部に保
持する。すなわち、命令デコード後、結果値が確定する
までの全ての命令に関する情報を内部に保持している。
【0052】複数命令並列発行/実行管理装置12は、
結果バス17を介して送られてくる最大3つの実行終了
命令の結果値を結果値入力端子126を介して受け取
り、内部でこれら結果値が確定するまで一時的に保持す
る。結果値が確定すると、これら結果値をレジスタファ
イル書き込み端子123を介してレジスタファイル装置
13へ書き込む。未確定状態の結果値を以下では未確定
結果値と呼ぶ。未確定結果値はレジスタファイル装置1
3に書き込まれず、複数命令並列発行/実行管理装置1
2内で保持される。
【0053】ここで、ある命令が確定する、あるいはあ
る命令の結果値が確定するとは、その命令の実行が終了
し、かつ、その命令よりも時間的に前に実行されるべき
命令の実行がすべて終了し、割り込み、例外、分岐予測
失敗等の理由により、その命令の実行と結果値が取り消
されることがなくなったことを意味する。
【0054】複数命令並列発行/実行管理装置12は、
未発行命令が要求する2つの入力オペランドの双方もし
くは一方が、未確定命令の未確定結果値である場合、当
該結果値を要求元の未発行命令の当該入力オペランドに
フォワードする動作を行なう。当該未確定結果値は、結
果値入力端子126から入力されたものをすぐに用いる
場合と、複数命令並列発行/実行管理装置12内に一時
的に保持された未確定結果値を用いる場合とがある。
【0055】図1において、本実施例によるプロセッサ
10の特徴をなすのは複数命令並列発行/実行管理装置
12の構成とその動作である。図1のプロセッサ10を
構成する他の装置は、従来技術によるスーパースカラ技
術によるプロセッサのものとほほ同様である。よって、
以下では、主として複数命令並列発行/実行管理装置1
2について説明を行なう。
【0056】図2は、本実施例による複数命令並列発行
/実行管理装置12の構成を示したブロック図である。
図2を参照すると、本実施例による複数命令並列発行/
実行管理装置12は、命令登録バッファ1200と、フ
ォワードマップバッファ1210と、レジスタマップバ
ッファ1220と、結果値バッファ1230と、命令発
行バッファ1240と、命令発行制御装置1250と、
命令実行制御装置1260と、オペランドフォワーディ
ング制御装置1270とを備える。
【0057】図3は、本実施例による複数命令並列発行
/実行管理装置12の動作を説明するための説明図であ
り、命令登録バッファ1200、フォワードマップバッ
ファ1210、レジスタマップバッファ1220、結果
値バッファ1230、命令発行バッファ1240の内部
構成について簡単化して示している。この図では、動作
の説明を分かりやすくする目的でブロック内外の接続関
係については省略している。また、命令登録バッファ1
200内のフォワード元エントリバッファ1209も省
略している。以下、図2および図3を引用しながら複数
命令並列発行/実行管理装置12の構成と動作を説明す
る。
【0058】命令登録バッファ1200は、未発行命
令、実行中命令及び未確定命令について、デコードされ
た命令コードとその入力オペランドを保持するバッファ
である。命令登録エントリ1205をN個並べた構成と
している。ここで、Nは、複数命令並列発行/実行管理
装置12内に関連情報を保持可能な未発行命令、実行中
命令及び未確定命令の数の総和を示している。図3の例
では、Nが10命令の場合を示している。命令登録バッ
ファ1200には、命令のフェッチ/デコード順序にし
たがって、順に命令登録エントリ1205にそれぞれの
命令に関する命令動作情報が登録される。図3で命令登
録エントリ1205に添えられた数字は、小さい方が時
間的に前にフェッチ/デコードされた命令であることを
示している。なお、以下でx番目の命令という場合は、
x列目の命令登録エントリ1205に格納された命令を
意味する。命令登録バッファ1200が一杯になった場
合には、命令フェッチ/デコード装置11は、命令動作
情報の転送を停止する。
【0059】1つの命令登録エントリ1205は、発行
フラグ部1201と、命令コード部1202と、左オペ
ランド部1203と、右オペランド部1204とを備え
る。発行フラグ部1201は、各命令の発行状態を示す
発行フラグを記憶する機能を持つ。命令コード部120
2は、デコードされた命令コードを格納し、左オペラン
ド部1203及び右オペランド部1204は、1つの命
令あたり最大2つの入力オペランドを格納する。1つの
入力オペランドしか使用しない命令の場合は、左オペラ
ンド部1203を使用するものとする。
【0060】命令登録バッファ1200は、さらに、フ
ォワード元エントリバッファ1209を備えている。フ
ォワード元エントリバッファ1209の構成と機能につ
いては後述する。
【0061】フォワードマップバッファ1210は、任
意の未発行命令、実行中命令または未確定命令の結果値
と、その後続命令の左右双方の入力オペランドとの間
の、レジスタ上データ依存性情報を記憶するバッファで
ある。フォワードマップバッファ1210は、フォワー
ドビット部1215をN×Nの2次元正方行列状に並べ
た構成としている。ここで、Nとは、上記の複数命令並
列発行/実行装置12の最大保持命令数のことであり、
図3の例においては、上述のようにN=10である。図
3に示したように、一行分のフォワードビット部121
5をフォワード元エントリ1216と呼び、一列分のフ
ォワードビット部1215をフォワード先エントリ12
17と呼ぶ。
【0062】フォワードビット部1215は、複数命令
並列発行/実行管理装置12内に格納された最大N個の
命令の中の任意の2つの命令間のレジスタ上データ依存
性を、2ビットの情報として記憶する機能を持つ。例え
ば、x列y行目の位置の2ビット情報が“ab”であっ
たとする。ここで、a、bは、それぞれ1ビット情報で
ある。aが「1」であれば、y番目の命令の結果値をx
番目の命令の左オペランドとして使用することを意味
し、「0」であれば使用しないことを意味する。bが
「1」であれば、y番目の命令の結果値をx番目の命令
の右オペランドとして使用することを意味し、「0」で
あれば使用しないことを意味する。例えば、図3に示し
たようにx=7、y=5の位置のフラグが“11”であ
った場合は、5番目の命令の結果値を7番目の命令の左
オペランドと右オペランドの双方で使用することを示し
ている。なお、yがxより大きい場合、これら2つの命
令間にレジスタ上データ依存性が存在することはない。
【0063】以上の説明から明らかなように、y行目の
行方向のフォワード元エントリ1216内の2Nビット
の情報は、y番目の命令の未確定結果値をどの命令のど
の入力オペランドとして使用するかという情報をあらわ
し、x列目の列方向のフォワード先エントリ1217内
の2Nビットの情報は、x番目の命令の左右の入力オペ
ランドがどの命令の結果値として生成されるかという情
報をあらわしている。例えば、あるフォワード先エント
リ1217内の2Nビットが全て0であった場合は、複
数命令並列発行/実行管理装置12内で現在その命令動
作情報を管理している複数の命令の中には、当該命令の
入力オペランドとしてその結果値を与える命令が存在し
ないことを意味している。後で説明するように、フォワ
ードマップバッファ1210は、未確定結果値と未発行
命令の入力オペランドとの間にレジスタ上データ依存性
がある場合、未確定結果値を命令登録バッファ1200
内に記憶された当該未発行命令の左オペランド部120
3もしくは右オペランド部1204にフォワードする機
能を実現するために用いられている。以下では、フォワ
ードマップバッファ1210の記憶情報をフォワードマ
ップ情報と呼ぶ。
【0064】フォワードマップバッファ1210は、入
出力端子として、フォワードマップ更新/読み出し制御
端子1211と、フォワードマップ読み出し端子121
2と、フォワードマップ登録端子1213と、フォワー
ドマップ更新制御端子1214とを持つ。フォワードマ
ップ更新/読み出し制御端子1211は、各フォワード
元エントリ1216に対応してN個存在し、フォワード
マップ読み出し端子1212は、各フォワード先エント
リ1217に対応してN個存在する。
【0065】レジスタマップバッファ1220は、レジ
スタビット部1225を行方向にM個、列方向にN個並
べた構成とし、複数命令並列発行/実行管理装置12内
にその命令動作情報を保持されたN個の命令がそれぞれ
結果値を書き込むレジスタ135の番号を記憶する機能
を持つ。ここで、Nは、上記の複数命令並列発行/実行
管理装置12の最大保持命令数であり、Mは、レジスタ
ファイル13内のレジスタ135の数である。ここで、
図3の例では、図1のプロセッサ10に従い、M=8で
あるとしている。レジスタビット部1225の一行分を
レジスタ書き込みエントリ1226と呼ぶ。また、図3
において、レジスタ135はレジスタ番号0から始まる
ものとし、以下でz番目のレジスタ135という時は、
レジスタ番号(z−1)のレジスタを指すものとする。
【0066】レジスタビット部1225は、ある命令が
あるレジスタ135に結果値を書き込む場合に「1」、
そうでない場合は「0」の1ビット情報を記憶する。例
えば、y行z列目の位置の1ビット情報が1であった場
合は、y番目の命令がz番目のレジスタ135に結果値
を書き込むことを意味する。したがって、y行目のレジ
スタ書き込みエントリ1226はy番目の命令がどのレ
ジスタに書き込むかという情報(以下、レジスタ書き込
み情報と呼ぶ)を有していることになる。後で説明する
ように、レジスタマップバッファ1220は、複数命令
並列発行/実行管理装置12内で管理されている複数の
命令間のレジスタ上データ依存性関係を調べ、必要に応
じて、フォワードマップバッファ1210内の情報を更
新したり、あるいは、結果値バッファ1230内の未確
定結果値を必要とする左オペランド部1203もしくは
右オペランド部1204を特定したりすることを主目的
に用いられるものである。
【0067】レジスタマップバッファ1220は、入出
力端子として、レジスタマップ登録制御端子1221
と、レジスタ書き込み検出端子1222と、読み取りレ
ジスタ指定端子1223と、書き込みレジスタ指定端子
1224とを持つ。レジスタマップ登録制御端子122
1及びレジスタ書き込み検出端子1222は、N個のレ
ジスタ書き込みエントリ1226に対応して、それぞれ
N個づつ存在する。
【0068】このように、フォワードマップバッファ1
210、レジスタマップバッファ1220は、それぞれ
レジスタ上データ依存性情報、レジスタ書き込み情報を
ビットマップの形で保持している。ここで、ビットマッ
プの形で保持するとは、例えば、レジスタ番号5を持つ
レジスタ135に書き込むという情報を2進表示の“1
01”ではなく、6番目の位置のみを1にセットした
“00001000”という形で保持しているという意
味である。後で説明するように、このように、スーパー
スカラプロセッサにおいて動的に複数命令並列発行/実
行を行なうために必要となるレジスタ上データ依存性情
報及びレジスタ書き込み情報を、ビットマップの形で保
持することで、複数命令並列発行/実行の管理に伴うハ
ードウエア構成を簡単化している。
【0069】結果値バッファ1230は、未確定命令の
未確定結果値を保持する機能を持つ。結果値エントリ1
235をN個有し、y番目の結果値エントリ1235に
y番目の命令に対応する結果値を格納する。結果値エン
トリ1235は、実際に結果値を保持する結果値部12
32と、各命令の実行状態を示す実行フラグを格納する
実行フラグ部1231とを備える。
【0070】命令発行バッファ1240は、次の動作サ
イクルで発行可能な未発行命令を一時的に保持するバッ
ファであり、命令発行エントリ1245を同時発行命令
数分だけ並べた構成としている。図3の例では、図1の
プロセッサ10に習い、3つの命令発行エントリ124
5を有することとしている。それぞれの命令発行エント
リ1245は、命令コード部1242、左オペランド部
1243、及び右オペランド部1244からなる。これ
らは、それぞれ発行する命令の、命令コード情報、左側
の入力オペランド、及び右側の入力オペランドを一時的
に保持する。
【0071】オペランドフォワーディング制御装置12
70は、レジスタ書き込み検出端子1271と、フォワ
ードマップ更新/読み出し指示端子1272と、フォワ
ード元命令指示端子1273と、レジスタ読み取り要求
端子1274と、未確定結果値読み取り要求端子127
5とを入出力端子として持つ。レジスタ書き込み検出端
子1271、フォワードマップ更新/読み出し指示端子
1272、及び未確定結果値読み取り要求端子1275
は、それぞれN個づつ存在する。
【0072】複数命令並列発行/実行管理装置12によ
って命令動作情報を管理されている任意の命令(n番目
の命令とする)を取り出して、その情報がどのような形
で格納されているかをまとめると、次のようになる。
【0073】1.n列目の命令登録エントリ1205
に、命令コード情報と左右の入力オペランド及び発行フ
ラグが格納される。
【0074】2.n列目のフォワード先エントリ121
7に、レジスタ上データ依存性情報の内の、n番目の命
令がどの命令の結果値を入力オペランドとして受けとる
かという情報がビットマップで格納される。
【0075】3.n行目のフォワード元エントリ121
6に、レジスタ上データ依存性情報の内の、n番目の命
令がどの命令に自分の結果値を入力オペランドとして与
えるかという情報がビットマップで格納される。
【0076】4.n行目のレジスタ書き込みエントリ1
226に、レジスタ書き込み情報がビットマップで格納
される。
【0077】5.n行目の結果値エントリ1235に、
結果値と実行フラグが格納される。
【0078】以下では、上記の1から5までのリストの
内の3以外、すなわちn列目の命令登録エントリ120
5、n列目のフォワード先エントリ1217、n行目の
レジスタ書き込みエントリ1226、及びn行目の結果
値エントリ1235を、あわせてn番目の命令に対する
命令動作情報管理エントリ1290と呼ぶ。例えば、図
3に示された命令動作情報管理エントリ1290は、1
番目の命令に対するものである。命令フェッチ/デコー
ド装置11が、複数の命令に関する命令動作情報を複数
命令並列発行/実行管理装置12に転送した際には、複
数の命令動作情報管理エントリ1290にこれらの命令
動作情報が書き込まれる。
【0079】図4は、発行フラグ部1255に格納され
る発行フラグがとる状態を説明した説明図である。n列
目の発行フラグ部1255の発行フラグの状態は、n番
目の命令動作情報管理エントリ1290に格納されたn
番目の命令の発行に関する状態を指し示す。発行フラグ
略号「em」で示される状態は、当該命令動作情報管理
エントリ1290が有効な命令動作情報を持たない空の
状態であることを示す。略号「−」で示される状態は、
デコードされた命令を受けとって登録をしたものの、ま
だ発行可能かどうかの検査をする前の状態であることを
示す。略号「rd」で示される状態は、入力オペランド
が揃っており、発行することが可能な状態であることを
示す。略号「wa」で示される状態は、入力オペランド
が揃っておらず、まだ発行できない状態であることを示
す。略号「is」で示される状態は、発行をした後の状
態であることを示す。
【0080】図5は、実行フラグ部1231に格納され
る実行フラグがとる状態を説明した説明図である。n行
目の実行フラグ部1231の実行フラグの状態は、n番
目の命令動作情報管理エントリ1290に格納されたn
番目の命令の実行に関する状態を指し示すものである。
実行フラグ略号「em」で示される状態は、当該命令動
作情報管理エントリ1290が有効な命令動作情報を持
たない空の状態であることを示す。略号「ni」で示さ
れる状態は、当該命令をまだ発行していない状態である
ことを示す。略号「ex」で示される状態は、当該命令
を発行後、メモリアクセス装置14や演算装置15で実
行中の状態であることを示す。略号「es」で示される
状態は、分岐予測に基づく投機的状態のまま当該命令を
発行し、メモリアクセス装置14や演算装置15で実行
中の状態であることを示す。略号「do」で示される状
態は、命令の実行が終了して未確定結果値が得られた状
態であることを示す。略号「ds」で示される状態は、
分岐予測に基づく投機的状態のまま当該命令の実行が終
了して、未確定結果値が得られた状態であることを示
す。
【0081】ある命令動作情報管理エントリ1290に
対する発行フラグが「em」の場合は、対応する実行フ
ラグも必ず「em」である。また、発行フラグが
「−」、「rd」、「wa」のいずれかの場合は、実行
フラグは「ni」である。実行フラグが「ex」、「e
s」、「do」、「ds」のいずれかの場合は、発行フ
ラグは「js」である。これまで使用してきた未発行命
令、実行中命令、未確定命令の定義と照らし合わすと、
未発行命令とは発行フラグが「−」、「rd」、「w
a」のいずれかの状態にある命令であり、実行中命令と
は実行フラグが「ex」、「es」のいずれかの状態に
ある命令であり、未確定命令とは実行フラグが「d
o」、「ds」のいずれかの状態にある命令である。命
令の実行結果の確定は、その命令の状態が「do」であ
り、かつその命令よりも時間的に前にフェッチ/デコー
ドされた命令の状態が全て「do」である場合に行なわ
れる。「es」、「ds」の状態は分岐予測が正しいと
分かり、投機的状態が解決した場合には「ex」、「d
o」状態に遷移する。分岐予測が間違っていたと分かっ
た場合、当該分岐予測以後の実行中命令及び未確定命令
の未確定結果値はキャンセルされる。
【0082】図6は、図1に示すプロセッサ10のパイ
プライン動作タイミングの実施例を説明した説明図であ
る。この図は、以下の説明が簡単なように、最も基本的
なパイプラインタイミングを例として示したものであ
り、従来技術におけるスーパースカラプロセッサにおい
て典型的なパイプライン動作に準じたものである。図6
では、メモリアクセス命令は6段のパイプラインで動作
し、演算命令/分岐命令は5段のパイプラインで動作す
る。IFは命令フェッチを行なうパイプラインステージ
であり、IDは命令デコードを行なうパイプラインステ
ージであり、DPは命令発行(ディスパッチ)を行なう
パイプラインステージであり、EX1ステージ及びEX
2ステージは演算実行を行なうパイプラインステージで
あり、WBはレジスタもしくはメモリへの書き込みを行
なうパイプラインステージである。すぐに発行できない
命令に対しては、DPステージが複数サイクル繰り返さ
れる。またデータキャッシュメモリ16内に所望のデー
タが存在しない場合は、EX1ステージが複数サイクル
続くことになる。
【0083】図7は、複数命令並列発行/実行管理装置
12の動作が各パイプラインステージでどのように行な
われるかを示した説明図である。ID、DP、EX2、
WBの各パイプラインステージをサイクル前半とサイク
ル後半の2つに分けて示している。IDステージ後半で
は命令登録動作を行い、DPステージ前半ではオペラン
ドフェッチ動作を行い、DPステージ後半ではオペラン
ド登録と命令発行動作を行い、EX2ステージ前半では
オペランドフォワーディング予約動作を行い、EX2ス
テージ後半ではオペランドバイパシング動作を行い、W
Bステージ前半では実行終了動作を行い、WBステージ
後半ではオペランドフォワーディング動作を行なってい
る。なお、1つの命令に対してDPステージが複数回繰
り返される場合は、オペランドフェッチ動作とオペラン
ド登録動作は、1回目のDPステージでのみ行なわれ
る。
【0084】以下、図2ないし図7を参照しながら、複
数命令並列発行/実行管理装置12の動作について、上
記の、命令登録、オペランドフェッチ、オペランド登
録、命令発行、オペランドフォワーディング予約、オペ
ランドバイパシング、実行終了、オペランドフォワーデ
ィングの8つの基本動作に分けて説明する。なお、以下
の説明では、ある1つの命令に関するこれらの動作につ
いて述べているが、実際には、複数命令並列発行/実行
管理装置12において、複数の命令が同時に同一のもし
くは異なった動作の対象となる。
【0085】まず、命令登録動作について説明する。命
令登録では、命令フェッチ/デコード装置11からデコ
ード情報入力端子121を介して転送される複数の命令
に関する命令動作情報を、それぞれ空いている命令動作
情報管理エントリ1290に格納する。前述のように、
命令動作情報は、命令コード情報、レジスタ書き込み情
報、レジスタ読み取り情報、同時デコード命令間レジス
タ上データ依存性情報からなる。命令コード情報は、命
令登録バッファ1200の命令コード部1202へ格納
される。レジスタ書き込み情報は、書き込みレジスタ指
定端子1224を介してレジスタマップバッファ122
0に格納される。また、同時デコード命令間レジスタ上
データ依存性情報は、フォワードマップ登録端子121
3を介してフォワードマップバッファ1210内のフォ
ワード先エントリ1217のフォワードマップ情報とし
て登録される。ここで、例として、n番目の命令の左側
(右側)の入力オペランドがm番目の命令の結果値に依
存するとすると、m行目のフォワードビット部1215
の左側(右側)のビットに「1」が立てられたフォワー
ドマップ情報がn列目のフォワード先エントリ1217
に登録されることになる。
【0086】これらの命令動作情報をどの命令動作情報
管理エントリ1290に格納するかは、命令発行制御装
置1250及び命令実行管理装置1260により、命令
間のフェッチ/デコード順序通りに命令動作情報が並ぶ
ように指示される。この際、命令発行制御装置1250
及び命令実行管理装置1220は、それぞれ発行フラグ
部1201と実行フラグ部1231とが「em」状態を
示している命令動作情報管理エントリ1290を、小さ
な番号から順に新たな命令動作情報の登録に用いる。登
録された命令動作情報管理エントリ1290の発行フラ
グは「−」状態に設定され、実行フラグは「ni」状態
に設定される。
【0087】レジスタ読み取り情報は、読み取りレジス
タ指定端子1223を介してレジスタマップバッファ1
220に入力され、次のオペランドフェッチ動作のため
に用いられる。
【0088】次に、オペランドフェッチ動作について説
明する。レジスタマップバッファ1220は、読み取り
レジスタ指定端子1223から与えられるレジスタ読み
取り情報により入力オペランドとして指定されたレジス
タ135が、書き込み先のレジスタ135として登録さ
れているかどうかを全てのレジスタ書き込みエントリ1
226について検査する。そして、その情報をレジスタ
書き込み検出端子1222よりオペランドフォワーディ
ング制御装置1270に伝える。
【0089】この情報を受け、オペランドフォワーディ
ング制御装置1270は、当該入力オペランドが使用す
るレジスタ135を指定していて、かつ実行フラグが
「em」ではないレジスタ書き込みエントリ1226が
存在するか否かを検査する。そのようなレジスタ書き込
みエントリ1226が存在しない場合、当該入力オペラ
ンドは、レジスタファイル13内の当該レジスタ135
から読みとることができる。したがって、オペランドフ
ォワーディング制御装置1270は、レジスタファイル
装置13への読み取り要求を、レジスタ読み取り要求端
子1274及びレジスタファイル読み取り制御端子12
2を介してレジスタファイル装置13へ転送する。
【0090】一方、上記のようなレジスタ書き込みエン
トリ1226が存在する場合、オペランドフォワーディ
ング制御装置1270は、まずそのようなレジスタ書き
込みエントリ1226を1つだけ特定する動作を行な
う。この特定は、当該入力オペランドを要求する命令よ
りも時間的に前の命令であって、かつ最も時間的に後で
あることを条件として行なわれる。このようにして特定
されたレジスタ書き込みエントリ126を、有効なレジ
スタ書き込み工ントリ126と呼ぶ。
【0091】有効なレジスタ書き込みエントリ126が
特定されると、オペランドフォワーディング制御装置1
270は、フォワードマップ更新/読み取り制御端子1
272を介して、フォワードマップバッファ1210に
対してフォワードマップ情報の更新を要求する。ここ
で、例として、有効なレジスタ書き込みエントリ126
がn番目の命令に対応するものだとし、当該入力オペラ
ンドは、m番目の命令の左側(右側)の入力オペランド
であると仮定する。この場合、フォワードマップバッフ
ァ1210は、フォワードマップ更新/読み出し制御端
子1211を介して、オペランドフォワーディング制御
装置1270から、n番目の命令が有効なレジスタ書き
込みエントリ126であるとの情報を受けとり、また、
フォワードマップ更新制御端子1214を介して、デコ
ード情報入力端子121から、対応する入力オペランド
がm番目の命令の左側の入力オペランドであるとの情報
を受けとる。これに応じて、フォワードマップバッファ
1210は、n行目のフォワード元エントリ1216の
m列目のフォワードビット部の左側(右側)のビットを
「1」にセットする。このようにして更新されたフォワ
ードマップ情報は、同サイクルのフォワードマップバッ
ファ1210の読み出しに反映されるものとする。
【0092】また、これと並行して、有効なレジスタ書
き込みエントリ126が特定されると、オペランドフォ
ワーディング制御装置1270は、結果値バッファ12
30に対して、未確定結果値の読み取り要求を転送す
る。この転送は、未確定結果値読み取り要求端子127
5を介して結果値バッファ1230に伝えられる。な
お、図2において未確定結果値読み取り要求端子127
5に接続された信号線は、レジスタマップバッファ12
20を通過して、命令実行制御装置1260に入力され
ている。結果値バッファ1230は、指定された結果値
エントリ1235の実行フラグ1231が「do」もし
くは「ds」の場合は、読み取り要求にしたがって未確
定結果値を読み出す。
【0093】レジスタファイル装置13及び結果値バッ
ファ1230の一方あるいはその双方から必要な入力オ
ペランドが全て得られる場合、命令発行制御装置125
0は、当該命令に対応する発行フラグ部1201を「r
d」にセットする。
【0094】次に、オペランド登録動作について説明す
る。この動作では、レジスタファイル装置13に対して
入力オペランドの読み取り要求が送られた場合、レジス
タファイル読み取りデータ端子124を介してレジスタ
ファイル装置13から読みとられた入力オペランドを、
命令登録バッファ1200内の当該命令に対応する左オ
ペランド部1203もしくは右オペランド部1204に
登録する。
【0095】また、入力オペランドとして結果値バッフ
ァ1230から未確定結果値を読み出した場合、その未
確定結果値を、同様に、命令登録バッファ1200内の
当該命令に対応する左オペランド部1203もしくは右
オペランド部1204に登録する。
【0096】次に、命令発行動作について説明する。命
令登録バッファ1200において「rd」状態の命令登
録エントリ1205を探し、それらの「rd」状態の命
令登録エントリ1205の中から実際に命令を発行する
命令登録エントリ1205を選択する。そして、選択し
た命令登録エントリ1205の命令動作情報を命令発行
エントリ1245に転送する。
【0097】次に、オペランドフォワーディング予約動
作について説明する。EX2ステージの前半では、当該
命令が次サイクルで実行終了することが明らかとなる。
そこで、複数命令並列発行/実行管理装置12は、その
命令の結果値を入力オペランドとして使用する未発行命
令を特定し、それら特定された命令の入力オペランドが
補ったかどうかを検査し、揃った場合は発行フラグを
「rd」にセットする。より具体的には、以下のような
動作が行なわれる。
【0098】今、n番目の命令がEX2ステージに入っ
たとする。オペランドフォワーディング制御装置127
0は、命令実行制御装置1260からフォワード元命令
指示端子1274を介してこの情報を受けとり、フォワ
ードマップ更新/読み出し制御端子1272を介して、
フォワードマップバッファ1210のn行目のフォワー
ド元エントリ1216にアクセスする。n行目のフォワ
ード元エントリ1216の2Nビットの情報は、N個の
フォワードマップ読み出し端子1212を介して読み出
され、命令登録バッファ1200に入力される。前述の
ように、読み出されたフォワード元エントリ1216の
2Nビットのフォワードマップ情報は、n番目の命令の
結果値をどの命令がその左もしくは右側の入力オペラン
ドとして使用しているかをあらわしている。命令発行制
御装置1250は、命令登録バッファ1200のそれぞ
れの命令登録エントリ1205の状態を検査し、発行フ
ラグが「−」もしくは「wa」の命令登録エントリ12
05の中で、n番目の命令の結果値をフォワードするこ
とにより入力オペランドが全て揃う命令を探し、その発
行フラグを「rd」状態にする。
【0099】命令登録バッファ1200に入力されたフ
ォワード元エントリ1216の情報は、命令登録バッフ
ァ1200内のフォワード元エントリバッファ1209
に一時的に格納される。フォワード元エントリバッファ
1209は、同時発行命令数分の2倍の数(すなわち本
実施例では6個)のフォワード元エントリ1216のフ
ォワードマップ情報を一時的に保持するバッファであ
る。保持した結果は、以下のオペランドフォワーディン
グで用いられる。
【0100】次に、オペランドバイパシング動作につい
て説明する。前述のオペランドフォワーディング予約に
より、ある命令登録エントリ1205に実際に入力オペ
ランドが揃う前に、対応する発行フラグ部1255が
「rd」状態に設定される場合がある。したがって、上
述の命令発行動作により、実際に入力オペランドが揃う
前にその命令登録エントリ1205の命令動作情報が命
令発行バッファ1240に転送され、発行の対象となる
場合がある。また、レジスタファイル装置13や結果値
バッファ1230から入力オペランドの読み取りを行な
った場合にも、同様の状況が生じる。オペランドバイパ
シング動作では、このような状況に対応するため、必要
な入力オペランドを結果バス17から命令発行バッファ
1240に直接バイパスする動作を行なう。より具体的
には、以下のような動作が行なわれる。
【0101】EX2ステージの後半では、メモリアクセ
ス装置14もしくは演算装置15により結果値が生成さ
れ、結果バス17上に転送される。この結果値を結果値
入力端子126を介して命令発行バッファ1240に入
力し、当該結果値を入力オペランドとして必要としてい
る命令発行エントリ1245があれば、その左オペラン
ド部1243もしくは右オペランド部1244に書き込
む。ここで、そのような命令発行エントリ1245が存
在するか否かは、命令発行制御装置1250により指示
される。
【0102】次に、実行終了動作について説明する。こ
の動作では、結果値入力端子126から入力される結果
値を、結果値バッファ1230内の当該命令に対応する
結果値エントリ1235に登録する。対応する実行フラ
グ部1231を「do」もしくは「ds」状態に設定す
る。なお、書き込まれた結果値と実行フラグは、同一サ
イクルで行なわれる他の命令に対するオペランドフェッ
チ動作で参照可能になっているものとする。
【0103】次に、オペランドフォワーディング動作に
ついて説明する。上述のように、ある命令に対するEX
2ステージのオペランドフォワーディング予約の動作に
より、その命令の結果値を使用する命令の特定が行なわ
れる。この命令に対するWBステージにおけるオペラン
ドフォワーディングの動作では、実際に得られた結果値
を命令登録バッファ1200内の左オペランド部120
3、右オペランド部1204に登録する動作を行なう。
【0104】どの左オペランド部1203、右オペラン
ド部1204に対してどの結果値を登録するかは、当該
命令のオペランドフォワーディング予約の動作により、
フォワード元エントリバッファ1209に予め一時的に
保持されたフォワード元エントリ1216の内容により
指示される。すなわち、フォワード元エントリ1216
のフォワードマップ情報の値「1」に対応する左オペラ
ンド部1203もしくは右オペランド部1204に結果
値をフォワードし、登録する。
【0105】図8は、以上の各動作に関する説明を補足
するため、レジスタ上データ依存関係がある2つの命令
のパイプライン処理を、3つのパイプラインタイミング
を仮定して説明したものである。以下、2つの命令を命
令Aと命令Bとし、命令Aの結果値を命令Bが入力オペ
ランドとして使用するものとする。
【0106】図8(A)は、命令Aと命令Bを同時にフ
ェッチ/デコードした場合を示している。命令Aは、D
Pステージのオペランドフェッチ動作において必要とす
るオペランドが全て揃うため、発行フラグが「rd」と
なり、命令発行動作により実際に発行する命令として選
択され、次のEX2ステージで実行される。一方、命令
Bに関しては、まず命令登録動作でフォワード先エント
リ1217のフォワードマップ情報として登録される同
時デコード命令間レジスタ上データ依存性情報が、命令
Aの結果値に依存することを示している。最初のDPス
テージのオペランドフェッチ動作において、必要とする
オペランドが揃わないため、発行フラグが「wa」とな
る。命令AのEX2ステージのオペランドフォワーディ
ング予約動作で、命令登録動作で登録されたフォワード
マップ情報を用いて、次のサイクルで命令Bが必要とす
る入力オペランドが命令Aの結果値として生成されるこ
とが知らされるので、これにより命令Bの発行フラグは
「rd」となる。したがって、2サイクル目のDPステ
ージの命令発行動作で命令Bが発行の対象として選択さ
れると同時に、オペランドバイパシング動作で命令発行
バッファ1240に命令Aの結果がバイパスされ、次サ
イクルで命令Bが実行される。命令Aの結果値は、WB
ステージの実行終了動作、オペランドフォワーディング
動作で、それぞれ結果値バッファ1230、命令登録バ
ッファ1200に登録される。ここで、命令登録バッフ
ァ120への登録の際には、命令AのEX2ステージの
オペランドフォワーディング予約動作でフォワード元エ
ントリバッファ1209に格納されていたフォワードマ
ップ情報が用いられる。
【0107】図8(B)は、命令Aと命令Bを1サイク
ルずれたタイミングでフェッチ/デコードした場合を示
している。命令Aは、DPステージのオペランドフェッ
チ動作において必要とするオペランドが全て揃うため、
発行フラグが「rd」となり、命令発行動作により実際
に発行する命令として選択され、次のEX2ステージで
実行される。一方、命令Bは、オペランドフェッチ動作
において、必要とするオペランドがまだ結果値バッファ
に届いていないため、全てのオペランドが揃わず、発行
フラグが「wa」となる。また、オペランドフェッチ動
作において、命令Aのフォワード先エントリ1216の
命令Bに対応する位置に「1」を立て、命令Aの結果値
を命令Bへフォワードするようにフォワードマップ情報
を更新する。命令AのEX2ステージのオペランドフォ
ワーディング予約動作は、命令Bのオペランドフェッチ
動作と同一のタイミングで実行されるが、前述のように
フォワードマップ情報の更新内容が同一タイミングで読
み出し可能なため、命令Aのオペランドフォワーディン
グ予約動作により、次のサイクルで命令Bが必要とする
入力オペランドが命令Aの結果値として生成されること
を知ることが可能となる。これにより命令Bの発行フラ
グは「rd」となる。したがって、このDPステージの
命令発行動作で命令Bが発行の対象として選択されると
同時に、オペランドバイパシング動作で命令発行バッフ
ァ1240に命令Aの結果値がバイパスされ、次サイク
ルで命令Bが実行される。命令Aの結果値は、WBステ
ージの実行終了動作、オペランドフォワーディング動作
で、それぞれ結果値バッファ1230、命令登録バッフ
ァ1200に登録される。ここで、命令登録バッファ1
20への登録の際には、命令AのEX2ステージのオペ
ランドフォワーディング予約動作でフォワード元エント
リバッファ1209に格納されていたフォワードマップ
情報が用いられる。
【0108】図8(C)は、命令Aと命令Bを2サイク
ルずれたタイミングでフェッチ/デコードする場合を示
している。この場合、命令AのEX2ステージと命令B
のIDステージ、命令AのWBステージと命令BのDP
ステージとがそれぞれ同一パイプラインタイミングで実
行される。命令AのEX2ステージにおけるオペランド
フォワーディング予約動作では、命令BがまだIDステ
ージのため、命令Aの結果値を命令Bへフォワードする
ことはまだ分からない。命令AのWBステージでは、実
行終了動作により、結果値を結果値バッファ1230に
登録する。命令BのDPステージのオペランドフェッチ
動作では、命令Aの結果値を入力オペランドとして使用
する旨フォワードマップ情報を書き換えるものの、前述
のように同時サイクルの結果値バッファ1230への書
き込み情報を読み出し可能なため、命令Aの結果値を結
果値バッファ1230から読み出すことができる。これ
により、必要なオペランドが全て揃うため、命令Bは次
サイクルで実行される。このように、このパイプライン
タイミングでは、オペランドフォワーディング動作やオ
ペランドバイパシング動作を介さずに結果値バッファ1
230から読み出すことにより入力オペランドが得られ
る。
【0109】以下、簡単な命令コード列を例として取り
上げ、本実施例に基づく複数命令並列発行/実行管理装
置12の動作を、より具体的に説明する。
【0110】図9は、本実施例による複数命令並列発行
/実行管理装置12の動作を説明するために用いた命令
コード列の例を示した説明図である。文献で一般的に用
いられる簡略記法に習って命令コード列を記載した。r
1、r2等は、レジスタ135の番号を示している。各
命令は、命令コード、結果値を書き込むレジスタ13
5、左側の入力オペランドを読みとるレジスタ135、
右側の入力オペランドを読みとるレジスタ135の順で
構成されている。各命令において結果値もしくは入力オ
ペランドが必要のない場合、その部分は空白として示さ
れている。各命令の動作は図中右側に説明してある。
【0111】図10は、本実施例による複数命令並列発
行/実行管理装置12の動作を説明するために用いた、
レジスタファイル装置13内の各レジスタ135の値を
示した説明図である。8個のレジスタ135を有する本
実施例の説明に習い、r0からr7までのレジスタ13
5の値を示している。
【0112】図11は、図9の命令コード列の例のパイ
プライン動作タイミングを示す説明図である。tは、パ
イプラインサイクル数を示す変数である。3命令づつ同
時にフェッチ、デコードし、入力オペランドが揃った命
令から最大3命令同時に実行を行なっている。t=10
のサイクルで、最後の命令が実行を終了する。
【0113】図12から図21は、図9ないし図11に
示す例に対応して、本実施例による複数命令並列発行/
実行管理装置12の動作を説明した説明図である。これ
らの図は、t=1からt=10までの10回のパイプラ
インサイクルにおいて、命令登録バッファ1200、フ
ォワードマップバッファ1210、レジスタマップバッ
ファ1220、結果値バッファ1230、命令発行バッ
ファ1240の内部状態を、図3に習って示している。
なお、命令登録バッファ1200内のフォワード元エン
トリバッファ1209の内部状態は、同じく図3に習っ
て、簡単のため省略している。また、これらの図と以下
の説明でt=jの状態として示されているのは、jサイ
クル目の動作が終って次のj+1サイクル目の動作を始
める前の時点での状態である。
【0114】t=1の状態を示した図12では、最初の
3つの命令がIDステージにあり、これら3つの命令の
命令登録動作が終った状態となっている。入力オペラン
ドが「?」と示されているのは、まだオペランド登録が
行なわれていないためであり、「×」と示されているの
は、1つしかオペランドを使用しないためである。3番
目の命令のフォワード先エントリ1217には、右側の
入力オペランドが2番目の命令の結果値を使用する旨の
フォワードマップ情報が登録されている。
【0115】t=2の状態を示した図13では、最初の
3つの命令がDPステージにあり、次の3つの命令がI
Dステージにある。レジスタファイル装置13から必要
な入力オペランドを全てフェッチすることにより「r
d」状態になった1番目と2番目の2つの命令が、命令
発行動作により、命令発行バッファ1240に転送され
ている。
【0116】t=3の状態を示した図14では、上記の
2つの命令が発行され、EX2及びEX1ステージにあ
る。また、4番目の命令がレジスタファイル装置13か
ら2つの入力オペランドをフェッチすることで「rd」
状態になり、命令発行バッファ1240に転送される。
5番目の命令は、DPステージにあるが、そのオペラン
ドフェッチ動作で、1番目の命令の結果値を左側の入力
オペランドとして使用することが分かるので、1番目の
フォワード元エントリ1216の5列目の左側のビット
が1に更新される。また、1番目の命令は、EX2ステ
ージにあるので、ちょうど同じタイミングでオペランド
フォワーディング予約動作を実行し、これにより5番目
の命令の左側の入力オペランドが次のサイクルに命令登
録バッファ1200に登録可能になり、今サイクル中に
命令発行バッファ1240にバイパス可能になることを
通知する(5番目の命令は右側の入力オペランドが揃わ
ないので「rd」状態にはならない)。同様に、6番目
の命令のオペランドフェッチ動作により、この命令の左
側オペランドが3番目の命令の結果値として生成される
ことが分かるので、3行目のフォワード元エントリ12
16の6列目の左側のビットが「1」に更新される。こ
こで、2番目の命令と3番目の命令とが同じr4レジス
タ135に書き込んでいるため、前述のように、オペラ
ンドフォワーディング制御装置1270により、3番目
の命令に対応するレジスタ書き込みエントリ1226が
有効であると判断される。
【0117】t=4の状態を示した図15では、7番目
から9番目の命令がDPステージに入り、上記の説明と
同様に、レジスタ上データ依存性にしたがってこれらの
命令に対するフォワードマップ情報が更新される。1番
目の命令はWBステージにあるので、実行終了動作によ
り、その結果値が結果値バッファ1230に書き込ま
れ、さらにオペランドフォワーディング動作により、命
令登録バッファ1200の5番目の命令の左オペランド
部1203にフォワードされ登録される。また、2番目
の命令と4番目の命令とがEX2ステージにあるため、
これらの命令のオペランドフォワーディング予約動作に
より、それぞれ3番目の命令の右側オペランドと5番目
の命令の右側オペランドとがこのサイクルでバイパス可
能なことが分かり、これらの命令が「rd」状態にな
り、命令発行バッファ1240に送られる。命令発行バ
ッファ1240では、オペランドバイパス動作により、
2番目の命令と4番目の命令の結果値をこのサイクルで
受けとっている。
【0118】t=5の状態を示した図16では、1番目
の命令の実行が確定するので、この命令動作情報管理エ
ントリ1290が「em」状態に設定される。この命令
の結果値は、レジスタファイル装置13に書き戻され
る。また、2番目、4番目の命令の実行が終了し、それ
らの結果値が結果値バッファ1230と命令登録バッフ
ァ1200とにそれぞれ登録される。3番目、5番目の
命令はEX2ステージにある。したがって、オペランド
フォワーディング予約動作により、それぞれ6番目の命
令と8番目の命令が「rd」状態になり、命令発行バッ
ファ1240に送られる。
【0119】t=6の状態を示した図17では、2番目
の命令の実行が確定し、この命令動作情報管理エントリ
1290が「em」状態に設定される。この命令の結果
値は、レジスタファイル装置13に書き戻される。ま
た、3番目、5番目命令の実行が終了し、それらの結果
値が結果値バッファ1230及び命令登録バッファ12
00に登録される。このサイクルでは8番目の命令が実
行を開始されるが、7番目のbranch命令がまだ実
行されていないため、この命令は投機的実行状態のまま
実行中であり、したがって実行フラグは「es」とな
る。すなわち、分岐が成立しないと予測して実行するこ
とを仮定している。このサイクルでは、発行可能になる
命令は存在しない。
【0120】t=7の状態を示した図18では、3番目
か5番目の命令の実行が確定し、これらの命令動作情報
管理エントリ1290が「em」状態に設定される。こ
れらの命令の結果値は、レジスタファイル装置13に書
き戻される。なお、4番目の命令の実行がこのサイクル
まで確定しなかったのは、3番目の命令の実行が確定す
るのと同時もしくはそれより後でないと、4番目の命令
の実行は確定しないからである。また、8番目の命令の
実行が投機的状態のまま終了し、その結果値が結果値バ
ッファ1230に登録される。また、6番目の命令がE
X2ステージに有り、オペランドフォワーディング予約
動作により、7番目及び9番目の命令が「rd」状態に
なる。
【0121】t=8の状態を示した図19では、6番目
の命令の実行が終了し、その結果値が、結果値バッファ
1230と命令登録バッファ1200とにそれぞれ登録
される。9番目の命令がEX1ステージにあるが、7番
目のbranch命令がまだ実行中のため、この命令は
投機的実行状態となり、したがって実行フラグは「e
s」となる。
【0122】t=9の状態を示した図20では、7番目
の命令の実行が終了している。このため、8番目の命令
及び9番目の命令は、それぞれ投機的状態が解除され
て、「do」、「ex」状態となる。また、6番目の命
令の実行が確定する。
【0123】t=10の状態を示した図21では、7番
目及び8番目の命令の実行が確定する。また、9番目の
命令の実行が終了する。
【0124】以上のように、本実施例において、レジス
タマップバッファ1220とフォワードマップバッファ
1210は、命令間のレジスタ上データ依存関係を特定
し、ある命令の結果値を他の命令の入力オペランドにフ
ォワードする上で、非常に重要な役割を担っている。
【0125】図22は、図2の複数命令並列発行/実行
管理装置12におけるレジスタマップバッファ1220
の構成を示したブロック図である。図22の例では、前
述の動作の説明に対応して、1つの命令に関するレジス
タ書き込み情報の登録、及び1つの入力オペランドに対
するレジスタ書き込み情報の検出についてのみ、そのブ
ロック構成を示している。なお、前述のように、レジス
タ書き込み情報の登録は命令登録動作で行なわれ、レジ
スタ書き込み情報の検出はオペランドフェッチ動作で行
なわれる。
【0126】図22において、レジスタマップバッファ
1220は、メモリセル12205をN行M列並べた構
成としている。ここで、Nは、命令動作情報登録エント
リ1290の数であり、Mは、レジスタ135の数であ
る。メモリセル12205は、レジスタビット部122
5に対応する。また、1行分のメモリセル12205が
レジスタ書き込みエントリ1226に対応する。メモリ
セル12205は、行方向ワード線12206と、列方
向ワード線12207と、行方向ビット線12208
と、列方向ビット線12209とに接続されている。こ
のように、本実施例におけるレジスタマップバッファ1
220は、ワード線/ビット線が縦横どちらにも走る、
一般に直交メモリと呼ばれる構成を有している。
【0127】まず、命令登録動作におけるレジスタ書き
込み情報の登録について説明する。n番目の命令がr番
目のレジスタ135に書き込みを行なったとする。この
場合、命令実行制御装置1260は、レジスタマップ登
録制御端子1221に対して、n行目の端子にのみ信号
値「1」を与え、それ以外の行の端子には信号値「0」
を与える。ワード線ドライバ12201がこれらの信号
値に応じてそれぞれの行方向ワード線12206を駆動
することにより、n行目のメモリセル12205のみが
書き込み可能状態となる。一方、デコード情報入力端子
121から与えられたレジスタ書き込み情報は、書き込
みレジスタ指定端子1224を介してデコーダ1220
4に与えられる。デコーダ12204は、指定されたレ
ジスタ135に対応するr列目の列方向ビット線122
09のみに信号値「1」を与え、それ以外の列方向ビッ
ト線12209に信号値「0」を与える。これにより、
n行目のメモリセル12205に、r列目だけ信号値
「1」が登録され、それ以外は信号値「0」が登録され
る。
【0128】次に、オペランドフェッチ動作におけるレ
ジスタ書き込み情報の検出について説明する。n番目の
命令がr番目のレジスタ135から入力オペランドを読
みとろうとしているとする。この場合、デコード情報入
力端子121から与えられたレジスタ読み取り情報は、
読み取りレジスタ指定端子1223を介して、デコーダ
12204に与えられる。デコーダ12204は、指定
されたレジスタ135に対応するr列目の列方向ワード
線12207のみを信号値「1」に、それ以外を信号値
「0」に駆動する。これにより、r列目のメモリセル1
2205のみが読み出し可能状態となり、行方向ビット
線12208に、これらのメモリセルの値が並列に読み
出され、レジスタ書き込み検出端子1222を介してオ
ペランドフォワーディング制御装置1270に入力され
る。
【0129】複数命令並列発行/実行管理装置12は、
同時に複数の命令を処理の対象とする。したがって、図
22の構成では、行方向ワード線12206、列方向ワ
ード線12207、行方向ビット線12208、及び列
方向ワード線12209は、各行もしくは各列あたり1
本づつしか存在しないが、実際には複数本存在すること
になる。具体的には、L命令を同時にデコードすると仮
定すると、L本の行方向ワード線12206と、L本の
列方向ビット線12209と、2L本の列方向ワード線
12207と、2L本の行方向ビット線12208とが
必要となる。
【0130】図23は、オペランドフォワーディング制
御装置1270の構成を示したブロック図である。オペ
ランドフォワーディング制御装置1270は、最新書き
込み検出装置12705とデコーダ12704とを備え
る。
【0131】オペランドフェッチ動作において、レジス
タ書き込み検出端子1271を介して転送されたレジス
タマップバッファの一列分のレジスタ書き込み情報は、
最新書き込み検出装置12705により信号値「1」を
含むかどうかを検査される。信号値「1」を含まない場
合は、レジスタ読み取り要求端子1274を介して、レ
ジスタ読み取り要求をレジスタファイル装置13に転送
する。また、最新書き込み検出装置12705は、これ
と並行して前述の有効なレジスタ書き込みエントリ12
26を捜し出す動作を行なう。具体的には、複数の信号
値「1」がレジスタ書き込み検出端子1271から与え
られた場合、最も上の信号値「1」のみを採用してそれ
以外の信号値「1」は信号値「0」に置き換え、これら
の値を未確定結果読み取り要求端子1275、及びフォ
ワードマップ更新/読み出し指示端子1272を介して
結果値バッファ1230及びフォワードマップバッファ
1210にそれぞれ送出する。ここで、信号値「1」に
対応する行が有効なレジスタ書き込みエントリ1226
に対応する。フォワードマップ更新/読み出し指示端子
1272−1を介してフォワードマップバッファ121
0に送出されたこれらの値は、フォワードマップ情報の
更新に使用される。
【0132】オペランドフォワーディング予約動作で
は、命令実行制御装置1260から、フォワード元命令
指示端子1273を介して、EX2ステージを実行中の
命令番号が与えられる。これをデコーダ12704でデ
コードしてフォワードマップ更新/読み出し指示端子1
272より送出することにより、フォワードマップ情報
の読み出しにおいて読み出すフォワード元エントリ12
16を指示する。
【0133】図24は、フォワードマップバッファ12
10の構成を示したブロック図である。図24の例で
は、前述の動作の説明に対応して、1つの入力オペラン
ドに関するフォワードマップ情報の登録、1つの入力オ
ペランドに関するフォワードマップ情報の更新、1つの
結果値に関するフォワードマップ情報の読み出しについ
てのみ、そのブロック構成を示している。なお、前述の
ように、フォワードマップ情報の登録は命令登録動作で
行われ、フォワードマップ情報の更新はオペランドフェ
ッチ動作で行われ、フォワードマップ情報の読み出しは
オペランドフォワーディング予約動作で行なわれる。
【0134】図24において、フォワードマップバッフ
ァ1210は、メモリセル12105をN行2N列並べ
た構成としている。行方向のメモリセル12105の2
つ分がフォワードビット部1215に対応する。また、
1行分のメモリセル12105がフォワード元エントリ
1216に対応し、隣合う2列分のメモリセル1210
5がフォワード先エントリ1217に対応する。メモリ
セル12105は、行方向ワード線121061及び1
21062と、列方向ワード線12107と、行方向ビ
ット線12108と、列方向読み出しビット線1210
91と、列方向書き込みビット線121092とに接続
されている。このように、本実施例によるフォワードマ
ップバッファ1210は、ワード線/ビット線が縦横ど
ちらにも走る、一般に直交メモリと呼ばれる構成を有し
ている。
【0135】まず、命令登録動作におけるフォワードマ
ップ情報の登録について説明する。フォワードマップ登
録端子1213を介して、同時デコード命令間レジスタ
上データ依存性情報が与えられると、データ依存を被る
側の入力オペランドの指定がデコーダ121041に与
えられ、デコーダ121041は、ワード線ドライバ1
21011を介して列方向ワード線12017を駆動す
る。そして、信号値「1」に駆動された列方向ワード線
12017に接続されたメモリセル12105のみが書
き込み可能となる。依存を与える側の結果値に対応する
命令の番号はデコーダ121042に与えられ、書き込
み回路12103により、その番号に対応する行方向ビ
ット線12108のみ信号値「1」に設定され、それ以
外は「0」に設定される。これにより、1つの入力オペ
ランドに対応する所望のフォワードマップ情報を1列分
のメモリセル12105に登録することができる。
【0136】次に、オペランドフェッチ動作におけるフ
ォワードマップ情報の更新について説明する。まず、フ
ォワードマップ更新/読み出し制御端子1211を介し
て、更新を行なう1行分のメモリセル12105が指定
され、その行に対応する行方向ワード線121061の
みが信号値「1」に駆動され、その他の行に対応する行
方向ワード線121061は信号値「0」に駆動され
る。フォワードマップ更新制御端子1214から、フォ
ワードマップ情報の更新を受ける入力オペランドが指定
されるので、これをデコーダ121041でデコードす
ることにより、指定された列に対応する列方向書き込み
ビット線121092のみ信号値「1」に設定され、そ
れ以外の列方向書き込みビット線121092は信号値
「x」に設定される。ここで、信号値「x」とは、書き
込みを行なわないことを意味しており、電気的には例え
ばビット線をフローティング状態にすることなどにより
実現できる。これにより、指定された行と列に接続され
るメモリセル12105のみが信号値「1」に書き換え
られる。
【0137】さらに、オペランドフォワーディング予約
動作におけるフォワードマップ情報の読み出しについて
説明する。まず、フォワードマップ更新/読み出し制御
端子1211を介して、読み出しを行なう1行分のメモ
リセル12105が指定され、その行に対応する行方向
ワード線121062のみが信号値「1」に駆動され、
その他の行に対応する行方向ワード線121062は信
号値「0」に駆動される。そして、信号値「1」に駆動
された行のメモリセル12105のみが列方向読み出し
ビット線121091を介して読み出され、フォワード
マップ読み出し端子1212を介して読み出される。
【0138】図24の実施例では、行方向ワード線12
1061、行方向ワード線121062、列方向ワード
線12107、行方向ビット線12108、列方向読み
出しビット線121091、列方向書き込みビット線1
21092は1本づつしか示されていないが、実際のフ
ォワードマップバッファ1210では、これらは複数本
存在する。具体的には、L命令を同時にデコードし、K
命令が同時に実行終了すると仮定すると、2L本の行方
向ワード線121061と、2L本の列方向書き込みビ
ット線121092と、K本の行方向ワード線1210
62と、K本の列方向書き込みビット線121091
と、L本の列方向ワード線12107と、L本の行方向
ビット線12108とがそれぞれ必要となる。
【0139】同一タイミングでオペランドフェッチ動作
とオペランドフォワーディング予約動作とが行なわれ、
同一の行に対するフォワードマップ情報の更新と読み出
しとが行なわれた時は、読み取り回路12102は、更
新情報を直接に列方向書き込みビット線121092か
ら読み取り、メモリセル12105から読みとられたフ
ォワードマップ情報と論理和をとって、フォワードマッ
プ読み出し端子1212から出力する。
【0140】図25は、フォワードマップバッファ12
10の他の構成を示したブロック図である。図25は、
図24と同様、1つの入力オペランドに関するフォワー
ドマップ情報の登録、1つの入力オペランドに関するフ
ォワードマップ情報の更新、1つの結果値に関するフォ
ワードマップ情報の読み出しについてのみ、そのブロッ
ク構成を示している。なお、前述のように、フォワード
マップ情報の登録は命令登録動作で行われ、フォワード
マップ情報の更新はオペランドフェッチ動作で行われ、
フォワードマップ情報の読み出しはオペランドフォワー
ディング予約動作で行なわれる。
【0141】図25において、フォワードマップバッフ
ァ1210は、メモリセル12105をN行2N列並べ
た構成としている。行方向のメモリセル12105の2
つ分がフォワードビット部1215に対応する。また、
1行分のメモリセル12105がフォワード元エントリ
1216に対応し、隣合う2列分のメモリセル1210
5がフォワード先エントリ1217に対応する。メモリ
セル12105は、行方向ワード線12106と、列方
向ワード線12107と、行方向ビット線12108
と、列方向ビット線12109とに接続されている。図
24のフォワードマップバッファ1210の実施の構成
と違い、行方向のワード線と列方向のビット線は1組し
か存在しない。
【0142】まず、命令登録動作におけるフォワードマ
ップ情報の登録について説明する。フォワードマップ登
録端子1213を介して、同時デコード命令閲レジスタ
上データ依存性情報が与えられると、データ依存を被る
側の入力オペランドの指定がデコーダ121043に与
えられ、デコーダ121043はワード線ドライバ12
101を介して列方向ワード線12017を駆動する。
そして、信号値「1」に駆動された列方向ワード線12
017に接続されたメモリセル12105のみが書き込
み可能となる。依存を与える側の結果値に対応する命令
の番号はデコーダ121042に与えられ、書き込み回
路12103により、その番号に対応する行方向ビット
線12108のみ信号値「1」に設定され、それ以外は
「0」に設定される。これにより、1つの入力オペラン
ドに対応する所望のフォワードマップ情報を1列分のメ
モリセル12105に登録することができる。
【0143】次に、オペランドフェッチ動作におけるフ
ォワードマップ情報の更新について説明する。まず、フ
ォワードマップ更新/読み出し制御端子1211を介し
て、更新を行なう1行分のメモリセル12105が指定
され、その行に対応する行方向ビット線12108のみ
が信号値「1」に駆動され、その他の行に対応する行方
向ワード線121061は信号値「x」に駆動される。
ここで、信号値「x」とは書き込みを行なわないことを
意味しており、電気的には例えばビット線をフローティ
ング状態にすることなどにより実現できる。次に、フォ
ワードマップ更新制御端子1214から、フォワードマ
ップ情報の更新を受ける入力オペランドが指定されるの
で、これをデコーダ121043でデコードすることに
より、指定された列に対応する列方向ワード線1210
92のみ信号値「1」に設定され、それ以外の列方向書
き込みビット線121092は信号値「0」に設定され
る。これにより、指定された行と列に接続されるメモリ
セル12105のみが信号値「1」に書き換えられる。
【0144】さらに、オペランドフォワーディング予約
動作におけるフォワードマップ情報の読み出しについて
説明する。まず、フォワードマップ更新/読み出し制御
端子1211を介して、読み出しを行なう1行分のメモ
リセル12105が指定され、その行に対応する行方向
ワード線12106のみが信号値「1」に駆動され、そ
の他の行に対応する行方向ワード線12106は信号値
「0」に駆動される。そして、信号値「1」に駆動され
た行のメモリセル12105のみが列方向ビット線12
109を介して読み出され、フォワードマップ読み出し
端子1212を介して読み出される。
【0145】図25の実施例では、行方向ワード線12
106、列方向ワード線12107、行方向ビット線1
2108、列方向ビット線12109は1本づつしか示
されていないが、実際のフォワードマップバッファ12
10では、これらは複数本存在する。具体的には、L命
令を同時にデコードし、K命令が同時に実行終了すると
仮定すると、K本の行方向ワード線12106と、K本
の列方向ビット線12109と、2L本の列方向ワード
線12106と、2L本の行方向ビット線12108と
がそれぞれ必要となる。
【0146】同一タイミングでオペランドフェッチ動作
とオペランドフォワーディング予約動作が行なわれ、か
つ同一の行に対するフォワードマップ情報の更新と読み
出しが行なわれた時は、読み取り回路12102は、更
新情報を直接列方向ワード線12107から読み取り、
メモリセル12105から読みとられたフォワードマッ
プ情報と論理和をとって、フォワードマップ読み出し端
子1212から出力する。
【0147】図26は、命令登録バッファ1200にお
いて、本実施例の特徴的な動作である、オペランドフォ
ワーディング動作における入力オペランドの登録と、命
令発行動作における入力オペランドの読み出しについて
説明するための説明図である。命令登録バッファ120
0の左オペランド部1203もしくは右オペランド部1
204は、同図に示したように、メモリセルを1列並べ
た構成としている。それぞれのメモリセルは、列方向の
ワード線と行方向のビット線に接続されており、レジス
タマップバッファ1220やフォワードマップバッファ
1210のような直交型のメモリを用いる必要はない。
【0148】入力オペランドの登録の際には、フォワー
ド元エントリバッファ1209から、1行分のフォワー
ドマップ情報が送られてくる。この情報は直接ワード線
ドライバに入力される。フォワードマップ情報は、一般
に、複数の位置に信号値「1」を持つ事が可能であるか
ら、ワード線ドライバにより、1度に複数のワード線が
信号値「1」に駆動されることになる。入力オペランド
として登録される未確定結果値は、書き込み回路を介し
てビット線に与えられる。そして、信号値「1」に駆動
されたワード線に接続されたメモリセルに、ビット線上
の入力オペランドが書き込まれる。このようにして、フ
ォワードマップ情報を用いて、複数の入力オペランドに
対して、1つの未確定結果値を同時に登録することが可
能となる。
【0149】入力オペランドの読み出しの際には、命令
発行制御装置1250から、どの命令を発行すべきかが
指示されるので、その命令に対応する入力オペランドの
読み出しを行なう。指示された入力オペランドに対応す
る1列分のメモリセルに継るワード線が、ワード線ドラ
イバを介して信号値「1」に駆動され、これらのメモリ
セルの記憶内容が、ビット線、読み出し回路を介して読
み出され、命令発行バッファ1240に転送される。
【0150】その他の命令登録バッファ1200の構成
及び動作に関しては、前述の説明から分かるように、従
来技術のスーパースカラの場合とほぼ同一であるため説
明を省略する。
【0151】図27は、命令発行制御装置1250にお
いて、本実施例の特徴的な動作である、オペランドフォ
ワーディング予約動作における命令発行可能性の検査に
ついて説明するための説明図である。命令発行制御装置
1250は、2N個の1行分のメモリセルを内部に有し
ており、これらのメモリセルを用いて命令が「rd」に
なるかどうかを検査する。まず、オペランドフォワーデ
ィング予約動作において、フォワードマップバッファ1
210から読み出されたフォワードマップ情報を、命令
登録バッファ1200を介してそのまま受けとる。フォ
ワードマップ情報は、ワード線ドライバを介して、上述
のメモリセルのワード線を駆動する。これらのメモリセ
ルのビット線は信号値「1」になっているので、フォワ
ードマップ情報として信号値「1」が与えられた入力オ
ペランドに対応するメモリセルの情報が、信号値「1」
に書き換えられる。1つの命令の左右双方の入力オペラ
ンドに対応するメモリセルはアンドゲートに接続されて
おり、このアンドゲートにより、必要なオペランドが補
ったかどうかがチェックされる(入力オペランドを1つ
しか必要としない場合は、制御回路により当該メモリセ
ルを信号値「1」に設定しておく)。アンドゲートの出
力は、命令登録バッファ1200に出力されて、その発
行フラグ部1201を「rd」に設定するのに用いられ
るとともに、命令発行制御装置1250内の命令発行選
択回路で発行する命令を選択するために用いられる。
【0152】なお、以上の複数命令並列発行/実行管理
装置12に関する説明では、1度命令動作情報管理エン
トリ1290に登録された命令動作情報は、最後にその
命令の実行が確定して消されるまで、同じ命令動作情報
管理エントリ1290に留まるものとした。このよう
に、固定的に命令動作情報を管理する場合、命令動作情
報管理エントリ1290を巡回的に使用して命令動作情
報を登録していくことになるため、命令のフェッチ/デ
コードの時間的順序と命令動作情報管理工ントリ129
0の順序とが一致しなくなる場合がある。すなわち、命
令発行バッファ1200、フォワードマップバッファ1
210、レジスタマップバッファ1220、及び結果値
バッファ1230は、全て巡回型のFIF0(Firs
t InFirst 0ut)バッファとして構成され
る必要がある。したがって、これまでの説明では、各図
において、それぞれのエントリに下から順番に数字を振
り、この数字の順番で命令の順番を示していたが、これ
は実施例の説明を分かりやすくするためのものであり、
実際にはどの命令動作情報登録エントリ1290が最も
時間的に古く、どの命令動作情報登録エントリ1290
が最も時間的に新しいかを管理する構成が必要である。
このような構成は、従来から巡回型FIFOバッファと
して広く用いられているものを利用することができる。
【0153】また、別の方法として、命令動作情報が常
に同じ命令動作情報管理エントリ1290に留まるので
はなく、ある命令の実行が確定してその命令の命令動作
情報が消され次第、空いた命令動作情報管理エントリ1
290にその次の命令の命令動作情報管理エントリ12
90の記憶内容をシフトする方法もある。このような実
施例をとった場合、命令発行バッファ1200、フォワ
ードマップバッファ1210、レジスタマップバッファ
1220、及び結果値バッファ1230は、全てシフト
型のFIFOバッファとして構成される必要がある。シ
フト型のFIFOバッファでは、あるエントリからその
近傍の複数のエントリにその記憶内容を転送するシフト
機構が必要となる。このような機構も、従来からシフト
型FIFOバッファとして広く用いられているものを利
用することができる。なお、シフト型FIFOバッファ
を実施例の構成として用いた場合、フォワードマップバ
ッファ1210は、図3において、左上角から右下角へ
の対角線より上の部分のフォワードビット部1215は
存在する必要がない。また、この場合、フォワードマッ
プバッファ1210は、右斜め下方向にシフトする機構
を設ける必要がある。
【0154】以上説明した本実施例の複数命令並列発行
/実行管理装置は、フォワードマップバッファを用い
て、結果値と入力オペランド間の依存関係を示すフォワ
ードマップ情報を結果値が実際に生成される以前に予め
作成して保持しているため、従来技術のように、結果値
が実際に生成された時点で結果値と入力オペランド間の
依存関係を比較器を用いて命令タグを並列照合すること
により検査する必要がない。
【0155】本実施例におけるレジスタマップバッファ
は、結果値を書き込むレジスタ番号をビットマップの情
報として記憶しているため、入力オペランドが使用する
レジスタ番号からそのレジスタ番号に書き込む結果値を
検索する時に、従来技術のように、入力オペランドのレ
ジスタ番号と結果値のレジスタ番号を比較器を用いて並
列照合する必要がない。
【0156】また、フォワードマップバッファとレジス
タマップバッファを、規則的構造を有し、単純なメモリ
セルから構成され、ワード線の動作により指定された行
もしくは列の部分しか動作をしない直交型メモリを用い
て構成することにより、メモリセルに多数の比較器を付
加することにより、複雑性、回路規模、消費電力などを
削減することができる。
【0157】従来技術における複数命令並列発行/実行
管理装置は、結果値と入力オペランド間の依存性の検出
及び結果値の入力オペランドへのフォワーディングをリ
アクティブ(reactive)に行なっている。ここ
で、リアクティブとは、入力オペランド側が必要な結果
値が生成されるのを待ち構えており、生成された時点で
自分の値として受け入れる方法をとっている点を指す。
このような方法では、上述のように比較器を用いてレジ
スタ番号や命令タグの比較を行なう必要が生じる。
【0158】これに対して、本実施例による複数命令並
列発行/実行管理装置は、結果値と入力オペランド間の
依存性の検出及び結果値の入力オペランドへのフォワー
ディングをアクティブ(active)に行なってい
る。ここでアクティブとは、結果値側が、自分を必要と
する入力オペランドの存在を知っており、その情報に従
って、結果値が生成された時点で入力オペランド側に結
果値を送りつける方法をとっている点を指す。このよう
な方法では、上述のように、比較器を用いた命令タグの
比較を行なう必要性が生じない。
【0159】以上好ましい実施例をあげて本発明を説明
したが、本発明は必ずしも上記実施例に限定されるもの
ではない。
【0160】本実施例による複数命令並列発行/実行管
理装置の構成に以下のような点で変更を加えることで、
別の実施例をとることも可能である。例えば、1つにま
とめられていた命令発行バッファを複数持ち、発行する
命令の種類により、どの命令発行バッファから命令を発
行するかを区別する。
【0161】また、発行可能と判断された命令だけが命
令登録バッファから命令発行バッファに転送されていた
のを改め、命令発行バッファ上で発行可能性の検査を行
なう。この場合、発行フラグ部は命令登録エントリから
命令発行エントリに移る。
【0162】なお、これまでの実施例では浮動小数点演
算装置を含む場合については説明していないが、演算装
置が浮動小数点演算装置になるだけであるので、本発明
の実施例をそのまま用いることができる。
【0163】また、レジスタマップバッファ、フォワー
ドマップバッファの実施例で示した直交型メモリにおい
ては、それぞれのビット線は1本づつしか示されていな
かったが、実際には相補のビット線対を用いることも可
能である。書き込動作時にビット線を値「x」に保つた
めには、相補のビット線対を用いた方が動作マージン上
望ましい。
【0164】
【発明の効果】以上説明したように、本発明の複数命令
並列発行/実行管理装置を用いたプロセッサによれば、
フォワードマップバッファとレジスタマップバッファを
備えており、これらの働きにより、比較器を使用せず
に、結果値と入力オペランド間の依存性の検出と、結果
値の入力オペランドへのフォワーディングを実現するこ
とができる。このため、複数命令並列発行/実行管理装
置及びプロセッサの回路構成を簡単にし、回路規模を縮
小できるという効果がある。
【0165】また、本発明によれば、フォワードマップ
バッファ及びレジスタバッファを直交型メモリで構成す
ることにより、規則的な構成を有し、さらに一層の回路
構成の単純化を図ることができるという効果がある。
【0166】また、本発明によれば、フォワードマップ
バッファ及びレジスタバッファにおいて、指定された行
方向もしくは列方向のワード線に接続されるメモリセル
のみが部分的に活性化されるため、並列照合動作のため
に全ての比較器が同時並列に動作していた従来技術に比
べて消費電力の削減を図ることができる。
【図面の簡単な説明】
【図1】 本発明の1実施例によるプロセッサの構成を
示すブロック図である。
【図2】 本実施例による複数命令並列発行/実行管理
装置の構成を示すブロック図である。
【図3】 本実施例による複数命令並列発行/実行管理
装置の主要な構成ブロックを抜き出して示すブロック図
である。
【図4】 本実施例による複数命令並列発行/実行管理
装置の発行フラグ部に格納される値を示す略号の一覧と
それら略号の意味とを示す図である。
【図5】 本実施例による複数命令並列発行/実行管理
装置の実行フラグ部に格納される値を示す略号の一覧と
それら略号の意味とを示す図である。
【図6】 本実施例によるプロセッサのパイプライン動
作タイミングの例を示す図である。
【図7】 本実施例による複数命令並列発行/実行管理
装置の動作におけるパイプライン動作タイミングを示す
図である。
【図8】 本実施例による複数命令並列発行/実行管理
装置の動作を示す図であり、レジスタ上データ依存関係
のある2つの命令に関するパイプライン動作タイミング
の3つの場合を示す図である。
【図9】 本実施例による複数命令並列発行/実行管理
装置で用いる命令コード列の例を示す図である。
【図10】 本実施例による複数命令並列発行/実行管
理装置で用いるレジスタファイル装置内の各レジスタの
値を示す図である。
【図11】 図9の命令コード列におけるパイプライン
動作タイミングを示す図である。
【図12】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=1の場合の動作を示
す図である。
【図13】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=2の場合の動作を示
す図である。
【図14】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=3の場合の動作を示
す図である。
【図15】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=4の場合の動作を示
す図である。
【図16】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=5の場合の動作を示
す図である。
【図17】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=6の場合の動作を示
す図である。
【図18】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=7の場合の動作を示
す図である。
【図19】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=8の場合の動作を示
す図である。
【図20】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=9の場合の動作を示
す図である。
【図21】 本実施例による複数命令並列発行/実行管
理装置の動作を示す図であり、t=10の場合の動作を
示す図である。
【図22】 本実施例による複数命令並列発行/実行管
理装置のレジスタマップバッファの構成を示すブロック
図である。
【図23】 本実施例による複数命令並列発行/実行管
理装置のオペランドフォワーディング制御装置の構成を
示すブロック図である。
【図24】 本実施例による複数命令並列発行/実行管
理装置のフォワードマップバッファの構成を示すブロッ
ク図である。
【図25】 本実施例による複数命令並列発行/実行管
理装置のフォワードマップバッファのもう1つの構成を
示すブロック図である。
【図26】 本実施例による複数命令並列発行/実行管
理装置の命令登録バッファの動作を示す図である。
【図27】 本実施例による複数命令並列発行/実行管
理装置の命令発行制御装置の動作を示す図である。
【図28】 従来のスーパースカラプロセッサにおける
複数命令並列発行管理装置の構成例を示すブロック図で
ある。
【図29】 従来のスーパースカラプロセッサにおける
複数命令並列実行管理装置の構成例を示すブロック図で
ある。
【符号の説明】
10 プロセッサ 12 複数命令並列発行/実行管理装置 1200 命令登録バッファ 1210 フォワードマップバッファ 1220 レジスタマップバッファ 1230 結果値バッファ 1240 命令発行バッファ 1250 命令発行制御装置 1260 命令実行制御装置 1270 オペランドフォワーディング制御装置 121 デコード情報入力端子 122 レジスタファイル読み取り制御端子 123 レジスタファイル書き込み端子 124 レジスタファイル読み取りデータ端子 125−1、125−2、125−3 命令発行端子 126 結果値入力端子 1211 フォワードマップ更新/読み出し制御端子 1212 フォワードマップ読み出し端子 1213 フォワードマップ登録端子 1214 フォワードマップ更新制御端子 1221 レジスタマップ登録制御端子 1222 レジスタ書き込み検出端子 1223 読み取りレジスタ指定端子 1224 書き込みレジスタ指定端子 1271 レジスタ書き込み検出端子 1272 フォワードマップ更新/読み出し指示端子 1273 フォワード元命令指示端子 1274 レジスタ読み取り要求端子 1275 未確定結果値読み取り要求端子
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平10−78871(JP,A) 特開 昭58−195979(JP,A) 特開 平3−204079(JP,A) 特開 平2−212987(JP,A) 特開 平3−273358(JP,A) 特開 平1−131949(JP,A) 特開 平7−334362(JP,A) 特開 平5−204639(JP,A) 特開 平8−16395(JP,A) 特開 平1−119829(JP,A) 特開 昭62−175831(JP,A) 特開 平3−38727(JP,A) 特開 平9−265396(JP,A) 特開 平1−188939(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/38

Claims (14)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数の命令を動的かつ並列に発行し、並
    列に実行するスーパースカラ型のプロセッサに搭載さ
    れ、 所定の命令の実行終了により生成される結果値を他のい
    ずれの命令が入力オペランドとして使用するかを示すフ
    ォワードマップ情報を格納するフォワードマップバッフ
    ァを備え、 前記フォワードマップバッファが、 所定の結果値が実際に生成される前に、該結果値に対す
    る前記フォワードマップ情報を予め格納し、 前記結果値が実際に生成された際に、予め格納された前
    記結果値に対する前記フォワードマップ情報を用いて、
    前記結果値を使用する前記入力オペランドを特定するこ
    とを特徴とする複数命令並列発行/実行管理装置。
  2. 【請求項2】 所定個数P個の結果値と所定個数Q個の
    入力オペランドとに関する前記フォワードマップ情報
    を、1ビットのフォワードビット情報をP行Q列の2次
    元行列状に並べたP×Qビットの情報として構成し、 前記P行Q列のフォワードマップ情報のうちのp行q列
    目のフォワードビット情報に特定の値を設定することに
    より、前記P個の結果値のうちのp番目の結果値を、前
    記Q個の入力オペランドのうちのq番目の入力オペラン
    ドとして使用するかどうかを設定することを特徴とする
    請求項1記載の複数命令並列発行/実行管理装置。
  3. 【請求項3】 任意の命令について、該命令を発行する
    前に、該命令が入力オペランドとして使用する結果値を
    特定し、 前記特定された結果値がp番目、前記入力オペランドが
    q番目である場合に、p行q列目の前記フォワードビッ
    ト情報の値を、前記結果値を入力オペランドとして使用
    することを示す値に設定することにより、前記特定され
    た結果値が実際に生成される前に、前記結果値に対する
    前記フォワードマップ情報を前記フォワードマップバッ
    ファに格納することを特徴とする請求項2に記載の複数
    命令並列発行/実行管理装置。
  4. 【請求項4】 任意の命令について、該命令の結果値が
    生成され、該結果値がp番目である場合に、前記フォワ
    ードマップバッファからp行目の前記フォワードマップ
    情報を読み出し、Q個の前記フォワードビット情報の各
    々の値に基づいて、該結果値を使用する入力オペランド
    を特定することを特徴とする請求項2または請求項3に
    記載の複数命令並列発行/実行管理装置。
  5. 【請求項5】 前記フォワードマップバッファが、 P行Q列の2次元行列状にメモリセルを配し、 前記各メモリセルが、直交する行方向及び列方向の2種
    類のワード線と直交する行方向及び列方向の2種類のビ
    ット線とに接続された直交型メモリであることを特徴と
    する請求項2に記載の複数命令並列発行/実行管理装
    置。
  6. 【請求項6】 入力オペランドに対するフォワードマッ
    プ情報を格納する際に、前記列方向ワード線を用いて1
    列分の前記メモリセルを書き込み可能状態にして、前記
    行方向ビット線からPビットの前記フォワードマップ情
    報を格納すると共に、 結果値に対するフォワードマップ情報を格納する際に、
    前記行方向ワード線を用いて1行分の前記メモリセルを
    書き込み可能状態にして、前記列方向ビット線からQビ
    ットの前記フォワードマップ情報を格納し、 所定の結果値に対する前記フォワードマップ情報を読み
    出す際に、前記行方向ワード線を用いて1行分の前記メ
    モリセルを読み出し可能状態にし、前記列方向ビット線
    からQビットの前記フォワードマップ情報を読み出すこ
    とを特徴とする請求項5に記載の複数命令並列発行/実
    行管理装置。
  7. 【請求項7】 命令が結果値を書き込むべきレジスタを
    示すレジスタマップ情報を格納するレジスタマップバッ
    ファをさらに備えることを特徴とする請求項1に記載の
    複数命令並列発行/実行管理装置。
  8. 【請求項8】 所定個数P個の結果値と所定個数R個の
    レジスタとに関する前記レジスタマップ情報を、1ビッ
    トのレジスタビット情報をP行R列の2次元行列状に並
    べたP×Rビットの情報として構成し、 前記P行R列のレジスタマップ情報のうちのp行r列目
    のレジスタビット情報に特定の値を設定することによ
    り、前記P個の結果値のうちのp番目の結果値が前記R
    個のレジスタのうちのr番目のレジスタに書き込みを行
    なうかどうかを設定することを特徴とする請求項7に記
    載の複数命令並列発行/実行管理装置。
  9. 【請求項9】 任意の命令について、該命令を発行する
    前に、該命令が結果値を書き込むレジスタを特定し、 前記特定されたレジスタがr番目、前記結果値がp番目
    である場合に、p行r列目の前記レジスタビット情報の
    値を、前記レジスタに書き込みを行なうことを示す値に
    設定することにより、前記結果値に対する前記レジスタ
    マップ情報を前記レジスタマップバッファに格納するこ
    とを特徴とする請求項8に記載の複数命令並列発行/実
    行管理装置。
  10. 【請求項10】 任意の命令について、該命令を発行す
    る前に、該命令が入力オペランドとして使用するレジス
    タを特定し、 前記特定されたレジスタがr番目である場合に、前記レ
    ジスタマップバッファからr列目のレジスタマップ情報
    を読み出し、 前記読み出されたPビットのレジスタビット情報であっ
    て、前記レジスタに書き込みを行なうことを示す値に設
    定されているもののうち、最も時間的に後にフェッチ/
    デコードされた命令の結果値に対応する前記レジスタビ
    ット情報のみを、前記レジスタに書き込みを行なうこと
    を示す値とし、かつ他のレジスタビット情報は、前記レ
    ジスタに書き込みを行なわないことを示す値とすること
    により、前記命令を発行する前に、前記命令が入力オペ
    ランドとして使用する結果値を特定することを特徴とす
    る請求項8または請求項9に記載の複数命令並列発行/
    実行管理装置。
  11. 【請求項11】 前記レジスタマップバッファが、 P行R列の2次元行列状にメモリセルを配し、 前記各メモリセルが、直交する行方向及び列方向の2種
    類のワード線と直交する行方向及び列方向の2種類のビ
    ット線とに接続された直交型メモリであることを特徴と
    する請求項8に記載の複数命令並列発行/実行管理装
    置。
  12. 【請求項12】 結果値に対するレジスタマップ情報を
    格納する際に、前記行方向ワード線を用いて1行分の前
    記メモリセルを書き込み可能状態にし、前記列方向ビッ
    ト線から前記レジスタマップ情報を格納し、入力オペランドとして使用するレジスタに対するレジス
    タマップ情報 を読み出す際に、前記列方向ワード線を用
    いて1列分の前記メモリセルを読み出し可能状態にし、
    前記行方向ビット線から前記レジスタマップ情報を読み
    出すことを特徴とする請求項11に記載の複数命令並列
    発行/実行管理装置。
  13. 【請求項13】 前記レジスタマップバッファのP本の
    行方向ビット線の出力に接続したP本の入力と、前記フ
    ォワードマップバッファのP本の前記行方向ワード線の
    入力に接続したP本の出力とを備える最新書き込み検出
    手段をさらに備え、 任意の命令について、該命令を発行する前に、該命令が
    入力オペランドとして使用するレジスタを特定し、該特
    定されたレジスタがr番目であって、前記レジスタマッ
    プバッファのr列目の前記列方向ワード線を駆動して、
    r列目の前記レジスタマップ情報を前記行方向ビット線
    より読み出した場合に、 前記最新書き込み検出手段は、 入力されたPビットのレジスタビット情報であって、前
    記レジスタに書き込みを行なうことを示す値に設定され
    ているもののうち、最も時間的に後にフェッチ/デコー
    ドされた命令の結果値に対応する前記レジスタビット情
    報のみを、前記レジスタに書き込みを行なうことを示す
    値とし、他のレジスタビット情報は、前記レジスタに書
    き込みを行なわないことを示す値としたPビットの情報
    を出力し、 前記フォワードマップバッファは、 前記最新書き込み検出手段の前記Pビットの出力のう
    ち、前記レジスタに書き込みを行なうことを示す値に設
    定されているものがp行目の出力である場合、p行目の
    前記行方向ワード線を駆動して、p行目の前記フォワー
    ドマップ情報を書き込み可能状態にすると共に、前記命
    令の結果値を使用する入力オペランドがq番目である場
    合に、q列目の前記列方向ビット線のみ前記結果値を入
    力オペランドとして使用することを示す値に設定し、他
    の前記列方向ビット線を書き込みを行なわないことを意
    味する値に設定することにより、前記入力オペランドが
    前記結果値を使用することを示すように前記フォワード
    マップ情報を更新することを特徴とする請求項11に記
    載の複数命令並列発行/実行管理装置。
  14. 【請求項14】 前記レジスタマップバッファのP本の
    行方向ビット線の出力に接続したP本の入力と、前記フ
    ォワードマップバッファのP本の前記行方向ビット線の
    入力に接続したP本の出力とを備える最新書き込み検出
    手段をさらに備え、 任意の命令について、該命令を発行する前に、該命令が
    入力オペランドとして使用するレジスタを特定し、該特
    定されたレジスタがr番目であって、前記レジスタマッ
    プバッファのr列目の前記列方向ワード線を駆動して、
    r列目の前記レジスタマップ情報を前記行方向ビット線
    より読み出した場合に、 前記最新書き込み検出手段は、 入力されたPビットのレジスタビット情報であって、前
    記レジスタに書き込みを行なうことを示す値に設定され
    ているもののうち、最も時間的に後にフェッチ/デコー
    ドされた命令の結果値に対応する前記レジスタビット情
    報のみを、前記レジスタに書き込みを行なうことを示す
    値とし、他のレジスタビット情報は、前記レジスタに書
    き込みを行なわないことを示す値としたPビットの情報
    を出力し、 前記フォワードマップバッファは、 前記最新書き込み検出手段の前記Pビットの出力のう
    ち、前記レジスタに書き込みを行なうことを示す値に設
    定されているものがp行目の出力である場合、前記行方
    向ビット線を駆動して、p行目の前記フォワードマップ
    情報のみを書き込み可能状態にすると共に、前記命令の
    結果値を使用する入力オペランドがq番目である場合
    に、q列目の前記列方向ワード線のみを書き込み可能状
    態にすることにより、前記入力オペランドが前記結果値
    を使用することを示すように前記フォワードマップ情報
    を更新することを特徴とする請求項11に記載の複数命
    令並列発行/実行管理装置。
JP8249164A 1996-08-30 1996-08-30 複数命令並列発行/実行管理装置 Expired - Fee Related JP2933027B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP8249164A JP2933027B2 (ja) 1996-08-30 1996-08-30 複数命令並列発行/実行管理装置
US08/921,313 US5944811A (en) 1996-08-30 1997-08-29 Superscalar processor with parallel issue and execution device having forward map of operand and instruction dependencies
GB9718528A GB2316781B (en) 1996-08-30 1997-09-01 Instuction Parallel Issue and Execution Administrating Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8249164A JP2933027B2 (ja) 1996-08-30 1996-08-30 複数命令並列発行/実行管理装置

Publications (2)

Publication Number Publication Date
JPH1078872A JPH1078872A (ja) 1998-03-24
JP2933027B2 true JP2933027B2 (ja) 1999-08-09

Family

ID=17188866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8249164A Expired - Fee Related JP2933027B2 (ja) 1996-08-30 1996-08-30 複数命令並列発行/実行管理装置

Country Status (3)

Country Link
US (1) US5944811A (ja)
JP (1) JP2933027B2 (ja)
GB (1) GB2316781B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098168A (en) * 1998-03-24 2000-08-01 International Business Machines Corporation System for completing instruction out-of-order which performs target address comparisons prior to dispatch
US6615340B1 (en) 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US6944751B2 (en) * 2002-02-11 2005-09-13 Hewlett-Packard Development Company, L.P. Register renaming to reduce bypass and increase apparent physical register size
US6895497B2 (en) * 2002-03-06 2005-05-17 Hewlett-Packard Development Company, L.P. Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
EP1462934A1 (en) * 2003-03-29 2004-09-29 Deutsche Thomson-Brandt Gmbh Method and apparatus for forwarding of results
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
US7350056B2 (en) * 2005-09-27 2008-03-25 International Business Machines Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
US20070198812A1 (en) * 2005-09-27 2007-08-23 Ibm Corporation Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system
US9424034B2 (en) * 2013-06-28 2016-08-23 Intel Corporation Multiple register memory access instructions, processors, methods, and systems

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594660A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
US4947316A (en) * 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
US5155817A (en) * 1988-04-01 1992-10-13 Kabushiki Kaisha Toshiba Microprocessor
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
DE69429612T2 (de) * 1993-10-18 2002-09-12 Via Cyrix Inc Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution

Also Published As

Publication number Publication date
US5944811A (en) 1999-08-31
GB2316781B (en) 2001-01-31
GB2316781A (en) 1998-03-04
JPH1078872A (ja) 1998-03-24
GB9718528D0 (en) 1997-11-05

Similar Documents

Publication Publication Date Title
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US8255665B2 (en) SIMD processor with register addressing, buffer stall and methods
US6119223A (en) Map unit having rapid misprediction recovery
WO1996012228A1 (en) Redundant mapping tables
US6009509A (en) Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US11204770B2 (en) Microprocessor having self-resetting register scoreboard
JPH07160501A (ja) データ処理システム
JPH10124391A (ja) マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法
US10437594B2 (en) Apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
US6003126A (en) Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
US5913054A (en) Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
US6338134B1 (en) Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
JP2933026B2 (ja) 複数命令並列発行/実行管理装置
US6175910B1 (en) Speculative instructions exection in VLIW processors
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US5053986A (en) Circuit for preservation of sign information in operations for comparison of the absolute value of operands
EP0933697A2 (en) A method and system for handling multiple store instruction completions in a processing system
JPH1165844A (ja) パイプラインバイパス機能を有するデータ処理装置
JP2933027B2 (ja) 複数命令並列発行/実行管理装置
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
US6230262B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
JP3794918B2 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
JPH0673105B2 (ja) 命令パイプライン方式のマイクロプロセッサ
US6092184A (en) Parallel processing of pipelined instructions having register dependencies
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090528

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100528

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110528

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110528

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120528

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120528

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140528

Year of fee payment: 15

LAPS Cancellation because of no payment of annual fees