JP3449186B2 - パイプラインバイパス機能を有するデータ処理装置 - Google Patents
パイプラインバイパス機能を有するデータ処理装置Info
- Publication number
- JP3449186B2 JP3449186B2 JP22244897A JP22244897A JP3449186B2 JP 3449186 B2 JP3449186 B2 JP 3449186B2 JP 22244897 A JP22244897 A JP 22244897A JP 22244897 A JP22244897 A JP 22244897A JP 3449186 B2 JP3449186 B2 JP 3449186B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- bypass
- instruction
- source operand
- pipeline
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 30
- 230000007246 mechanism Effects 0.000 claims description 8
- 230000008014 freezing Effects 0.000 claims description 3
- 238000007710 freezing Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 22
- 238000000034 method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012938 design process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012942 design verification Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
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
を有するデータ処理装置に関し、特にパイプラインバイ
パス回路を備えることにより、演算サイクルを短縮可能
にしたデータ処理装置に関する。
列に実行することができる計算機として実用化されてい
る。パイプライン処理では、1つの命令によって実行さ
れる演算過程が複数の時間的に独立した演算ステージに
分割され、それぞれの命令のそれぞれの演算ステージは
それぞれに対応した演算ユニットによって実行される。
そして、それぞれの命令サイクルにおいて、複数の演算
ユニットによって、複数の命令に対応する複数の相互に
異なる演算ステージが並列に実行される。
ドレジスタ読み出し動作を行うDステージ、第1の演算
操作を行うE1ステージ、第2の演算操作を行うE2ス
テージ、演算結果のレジスタ書き込み動作を行うWステ
ージによって1命令が実行されるパイプライン計算機の
場合、先行する命令1と後続する命令2は、通常(先行
する命令と後続する命令間においてデータの依存関係が
ない場合)、図16(a)に示すシーケンスで実行動作
が行われる。
ースオペランドレジスタから、データをリードすると
き、同一レジスタをターゲットオペランドとする先行命
令がレジスタライトを終了するまで、リード動作を待つ
必要がある。一例として以下の2つの命令が連続して実
行される場合を考える。 命令1 r1 = r2 + r3 命令2 r4 = r1 + r5 命令1は、レジスタr2の内容にレジスタr3の内容を
加算し、結果をレジスタr1にライトする命令であり、
命令2は、レジスタr1の内容にレジスタr5の内容を
加算し、結果をレジスタr4にライトする命令である。
にあっては、上記2つの命令の実行シーケンスは、図1
6(b)のようになり、後続する命令2は、先行する命
令1の最後のWステージが完了してからでないと、最初
のDステージの動作を開始することができない。上記命
令列の場合のように、ライトが完了する以前のサイクル
でライトデータが確定している場合は、レジスタライト
を待たずにパイプラインレジスタからソースオペランド
を読むパスを設けて、待ちのサイクル数を最小限に押さ
える手法が用いられることが多い。このパスをバイパス
と呼ぶ。上記命令列の場合、このバイパスを設けること
により、命令の実行シーケンスは、図16(c)のよう
になり、バイパスを採用しない図16(b)の場合と比
較して1サイクルだけ、処理速度が向上することにな
る。
パイプライン計算機の構成例である。図17において、
100はレジスタファイル、101、102はソースオ
ペランドを格納するためのパイプラインレジスタ、10
3は第1の演算操作を行う演算ユニット、104は演算
ユニット103の出力を保持するパンプラインレジス
タ、105は第2の演算操作を行う演算ユニット、10
6は演算ユニット105の出力を保持するレジスタ、1
07は連続する複数の命令内容を保持し、その内容を判
定することによりパイプラインのバイパス制御の可否を
ハードウェア制御により決定するバイパス制御回路、1
08、109はセレクタ、110、111はレジスタ読
み出し線、112はレジスタ書き込み線、113〜11
5はバイパス線、116、117はセレクト信号線であ
る。
をレジスタファイル100に書き込む前の、演算ユニッ
ト105の出力をレジスタ106にセットした時点でラ
イトデータが確定している。そのため、バイパス線11
5を経由してセレクタ108、109に入力することに
より、命令2のソースオペランド読み出し動作を図16
(c)に示すように、バイパス動作なしの場合と比較し
て1サイクル早めることができる。
のオペランド間の桁合わせ操作、桁合わせ後の演算操作
が演算ユニット103で実行され、演算操作後の正規化
処理が演算ユニット105で実行されるため、最終結果
は演算ユニット105の実行終了を待たねばならない
が、整数演算等の場合は演算ユニット103における演
算操作のみで最終結果が得られる。そのような場合は、
パイプラインレジスタ104の出力をバイパス線114
を経由してセレクタ108、109に入力することによ
り、命令2のソースオペランド読み出し動作を図16
(d)に示すように、バイパス動作なしの場合と比較し
て2サイクル早めることができる。
3の途中の段階で演算データが確定しており、かつその
回路部分から信号線を引き出すことができるような場合
には、バイパス線113を経由してその確定データをセ
レクタ108、109に入力することにより、命令2の
ソースオペランド読み出し動作を図16(e)に示すよ
うに、遅延なしに実行することが可能となる。
行うためには、命令間のデータの依存関係の解析や、ラ
イトデータが存在するパイプラインレジスタの特定を行
う必要があり、従来はこの制御をすべてハードウェアで
行っていた。そのため、ハードウェアの制御論理が複雑
になり、ハードウェア量が増大するとともに、パイプラ
イン計算機の設計工程や検証工程を長期化させる要因と
なっていた。
のすべてもしくは一部をソフトウェアに任せることによ
り、ハードウェア量を削減し、設計工程および検証工程
の短縮を図るものである。本発明の第1の態様は、以下
の構成を有する。
込む前に後続命令のソースオペランドとして渡すバイパ
ス手段を備えるとともに、命令コード中にバイパス手段
からソースオペランドを受け取ることを指定するバイパ
ス指定フィールドを有し、ソースオペランド選択部で
は、前記バイパス指定フィールドの値にしたがって、レ
ジスタからの値あるいはバイパス手段からの値のいずれ
かをパイプラインへの入力値として選択する。
る。先行する命令の演算結果をレジスタに書き込む前に
後続命令のソースオペランドとして渡す複数のバイパス
手段を備えるとともに、命令コード中にソースオペラン
ドレジスタフィールドとは別にソースオペランドを受け
取るバイパスを指定するフィールドを有し、ソースオペ
ランド選択部では、バイパス指定フィールドの値にした
がって、レジスタあるいは複数のバイパスのいずれかを
パイプラインへの入力値として選択する。
る。先行する命令の演算結果をレジスタに書き込む前に
後続命令のソースオペランドとして渡す複数のバイパス
手段を備えるとともに、複数のバイパス手段のそれぞれ
にレジスタ番号とは重複しない番号を割り当て、命令コ
ード中のソースオペランドレジスタフィールド値をバイ
パスを含む番号空間内の1つの番号を指定するものとし
て解釈し、ソースオペランドレジスタフィールドの値に
したがって、レジスタあるいは複数のバイパスのいずれ
かをパイプラインへの入力値として選択する。
る。複数のスロットの命令が同時に動作するVLIW方
式の計算機に適用されるものであり、各スロットで計算
された結果をレジスタへ書き込む前に、同一もしくは別
のスロットの後続命令のソースオペランドとして渡すた
めの複数のバイパス手段を備えるとともに、命令コード
中にソースオペランドフィールドとは別にソースオペラ
ンドを受け取るバイパスを指定するフィールドおよびソ
ースオペランドを受け取るスロットを指定するフィール
ドを有し、ソースオペランド選択部では、バイパス指定
フィールドの値およびスロット指定フィールドの値にし
たがって、レジスタあるいは各スロットから出力される
複数のバイパスのいずれかをパイプラインへの入力値と
して選択する。
る。複数のスロットの命令が同時に動作するVLIW方
式の計算機に適用されるものであり、各スロットで計算
された結果をレジスタへ書き込む前に、同一もしくは別
のスロットの後続命令のソースオペランドとして渡すた
めの複数のバイパス手段を備えるとともに、複数のバイ
パス手段のそれぞれにレジスタ番号とは重複しない番号
を割り当て、命令コード中のソースオペランドレジスタ
フィールド値をバイパスを含む番号空間内の1つの番号
を指定するものとして解釈し、ソースオペランドレジス
タフィールドの値にしたがって、レジスタあるいは複数
のバイパスのいずれかをパイプラインへの入力値として
選択する。
る。パイプラインの乱れを検出する手段と、ソースオペ
ランドの読み込みを凍結する手段と、ソースオペランド
の読み込みを命令コードによって指定されたバイパスか
らではなくレジスタからの入力に切り替える手段を備
え、パイプラインの乱れが検出されると、先行命令がレ
ジスタ書き込みを終えるまで、ソースオペランド読み込
みを凍結し、動作再開時にはソースオペランドの読み込
み元をレジスタに切り替える。
る。パイプラインの乱れを検出する手段と、ソースオペ
ランドの読み込みを命令コードによって指定されたバイ
パスからではなく他のバイパスに切り替える手段を備
え、パイプラインの乱れが検出されると、乱れの度合い
に応じて、ソースオペランドの読み込み元を、命令コー
ドによって指定されたバイパス以外のバイパスに切り替
える。
る。命令コード中のバイパス指定フィールドは、ソース
オペランドとなり得るすべてのバイパスのうち一部分の
みを指定し、その他のバイパス選択はハードウェア回路
により行う。本発明の第9の態様は、以下の構成を有す
る。
る実効アドレスを、バイパス経由で後続命令のソースオ
ペランドとして取得する。本発明の第10の態様は、以
下の構成を有する。命令セット中の分岐命令が計算する
ターゲットアドレスを、バイパス経由で後続命令のソー
スオペランドとして取得する。
する。命令セット中の比較命令が比較する2値の差分
を、バイパス経由で後続命令のソースオペランドとして
取得する。本発明の第12の態様は、以下の構成を有す
る。命令コード中に演算結果をレジスタに書き込まない
ことを指定するフィールドを有し、当該指定によりレジ
スタに結果を書き込むことなく、演算結果をバイパス経
由で後続命令のソースオペランドとして与える。
明の実施の形態を説明する。
される命令コードの形式である。図1において、opは
命令の種類を規定するフィールド、s1は第1ソースオ
ペランドとなるレジスタ番号を指定するフィールド、s
2は第2ソースオペランドとなるレジスタ番号を指定す
るフィールド、dstはターゲットオペランドとなるレ
ジスタ番号を指定するフィールド、b1は第1ソースオ
ペランドに対するバイパス情報を指定するフィールド、
b2は第2ソースオペランドに対するバイパス情報を指
定するフィールドである。
を示す図である。図2において、1はレジスタファイ
ル、2は演算パイプライン、3は第1ソースオペランド
を格納するパイプラインレジスタ、4は第2ソースオペ
ランドを格納するパイプラインレジスタ、5はパイプラ
インレジスタ3へデータを入力するためのセレクタ、6
はパイプラインレジスタ4へデータを入力するためのセ
レクタ、7は図1のb1フィールドの値で規定されるセ
レクト信号線、8は図1のb2フィールドの値で規定さ
れるセレクト信号線、9はパイプライン2の中間段階か
ら出力されるバイパス線、10はパイプライン2の最終
段階から出力されるバイパス線、11は第1ソースオペ
ランド信号線、12は第2ソースオペランド信号線、1
3はターゲットオペランド信号線、14は図1のs1フ
ィールドの値で規定される第1ソースオペランドアドレ
ス信号線、15は図1のs2フィールドの値で規定され
る第2ソースオペランドアドレス信号線である。なお、
図示を省略しているが、図1のdstフィールドの値で
規定されるターゲットオペランドアドレス信号がレジス
タファイル1に与えられている。
ルド、s2フィールドの値が入力され、それぞれに対応
する番号のレジスタ値が第1ソースオペランド信号線
(r1)11、第2ソースオペランド信号線(r2)1
2に出力される。バイパス線(bp1)9はハイプライ
ン2の途中で演算結果が確定する場合にその結果が流れ
るパスである。バイパス線(bp2)10はハイプライ
ン2の演算結果をレジスタファイル1にライトするパス
からのバイパスである。
フィールドの値もしくはそれがデコードされた値、セレ
クト信号線(b2)8には図1のb2フィールドの値も
しくはそれがデコードされた値がそれぞれ与えられ、セ
レクタ5、6のセレクト信号として用いられる。セレク
タ5は第1ソースオペランドを選択するためのセレクタ
であり、セレクト信号線(b1)7によって、第1ソー
スオペランド信号線(r1)11、バイパス線(bp
1)9、バイパス線(bp2)10のいずれかが選択さ
れ、第1ソースオペランドになる。同様に、セレクタ6
は第2ソースオペランドを選択するためのセレクタであ
り、セレクト信号線(b2)8によって、第2ソースオ
ペランド信号線(r2)12、バイパス線(bp1)
9、バイパス線(bp2)10のいずれかが選択され、
第2ソースオペランドになる。
線(b2)8の値は命令コードのb1フィールド、b2
フィールドの値によって一意に定まる。すなわち、ソー
スオペランドを読み込むサイクルの時点において、読み
込むべき値がレジスタにあるか、あるいはバイパス上に
あるかを、あらかじめ把握した上でプログラミングを行
うことが本実施例の前提である。
だけを取り上げたが、演算パイプラインの構成に応じ
て、より多くのバイパスを持つように拡張することは容
易である。また、逆に、状況に応じて特定の1つのバイ
パスのみ設ける構成を採ることもできる。
される命令コードの形式である。図3において、opフ
ィールドとdstフィールドは、上記第1の実施例と同
一のものである。第2の実施例では、各バイパスにもレ
ジスタ番号と同様な番号が割り当てられており、s1フ
ィールドとs2フィールドによって、ソースオペランド
となる2個のレジスタ番号あるいはバイパスが指定され
る。
を示す図である。図4において、図2と同一番号のもの
は同一名称のものである。16、17はそれぞれ論理回
路、18はs1フィールド信号線、19はs2フィール
ド信号線である。論理回路16にはs1フィールドの値
が入力され、s1がレジスタを表す番号の場合は、その
番号がレジスタファイル1へのアドレスとして第1ソー
スオペランドアドレス信号線14へ出力され、さらにセ
レクト信号線7は第1ソースオペランド信号線(r1)
11を選択するための値となる。一方、s1がバイパス
を表す番号の場合は、セレクト信号線7は該当するバイ
パスを選択する値になる。
を行い、s2フィールドの値にしたがって出力動作を行
う。その他の動作は、上記した第1の実施例の動作と同
様である。
IW(Very Long Instruction
Word)アーキテクチャの計算機に応用した例であ
る。図5は、本発明の第3の実施例で使用される命令コ
ードの形式であり、このようなコードが4個並んで1つ
のVLIW命令になる。図5において、op、s1、s
2、dst、b1、b2の各フィールドは上記した第1
の実施例と同一のものである。p1は第1ソースオペラ
ンドを読み込むスロットを指定するフィールド、p2は
第2ソースオペランドを読み込むスロットを指定するフ
ィールドである。
ためのブロック図である。図6において、20−1〜2
0−4は命令コード、21−1〜21−4は命令実行
部、22はスロット間で受け渡しされるバイパス信号で
ある。各命令実行部の内部は、図2に示す第1の実施例
や図4に示す第2の実施例と同様な回路構成であるが、
自スロット内のバイパス信号以外に他スロットのバイパ
ス信号も、ソースオペランドの候補となっている。各命
令実行部ではp1、p2によって定まるスロットのバイ
パス信号をソースオペランドとして選択する。
択回路部の構成例を示す図である。図7において、7は
b1フィールドの値で規定されるセレクト信号線、8は
b2フィールドの値で規定されるセレクト信号線、70
はp1フィールドの値で規定されるセレクト信号線、7
1はp2フィールドの値で規定されるセレクト信号線、
72は第1ソースオペランドを読み込むスロットを選択
するためのセレクタ、73は第2ソースオペランドを読
み込むスロットを選択するためのセレクタ、74〜81
は各スロットに対応して設けられ、バイパス線を選択す
るためのセレクタ、82〜85は各スロットからの信号
線である。なお、図7において、信号線82〜85のう
ち1組は自スロット内部から供給され、他の3組が外部
スロットから供給されることになる。また、図7におい
ては、レジスタファイルからのソースオペランド信号線
の図示を省略している。
スに番号を与えることにより、図5のb1、b2、p
1、p2を省略し、s1、s2フィールドのみで制御す
ることも可能である。図6ではすべてのスロット間でバ
イパスが受け渡されているが、本発明は特にその構成に
限定されることなく、受け渡しが部分的であってもよ
い。また、並列度も4に限定されるものではない。
の動作があらかじめ完全に判っていることが前提にあっ
たが、実際のプロセッサでは、割り込みその他の要因に
よってパイプラインの動作が乱れる場合がある。本実施
例はそのような可能性を有するプロセッサへの本発明の
適用例である。
を示す図である。図8において、図2と同一番号のもの
は同一名称のものである。16、17はそれぞれ論理回
路、30は制御部、31はb1フィールド信号線、32
はb2フィールド信号線である。図8の回路構成は、図
2の回路構成に論理回路16、17、と制御部30が付
加されたものである。
点でソースオペランドを読み込むタイミングの命令に対
して、先行命令がパイプライン上の想定された位置にな
いことを認識すると、先行命令がすべての演算結果をレ
ジスタにライトするまで、ソースオペランドの読み込み
を凍結させる。その後動作を再開するが、その際に論理
回路16、17によって、b1フィールド信号線31、
b2フィールド信号線32の値に関わらず、セレクト信
号7、8が第1ソースオペランド信号線(r1)11、
第2ソースオペランド信号線(r2)12を選択するよ
うに変更させる。このようにすることにより、プログラ
ムは正しい動作を行うことになる。
における、パイプライン中の命令の状態を示す。図中の
矢印はバイパスを介したデータの受け渡しを表してい
る。すなわち、命令2の命令コードにはE1ステージか
らのバイパスを読み込む指定がなされ、命令3、4には
E2ステージからのバイパスを読み込む指定がなされて
いる。
動作が乱れた場合の動作例を図9(b)に示す。命令2
のフェッチが1サイクル遅れ、Dステージがt3の時点
に設定されたとする。t3でE1バイパスを読んでも正
しい値は読めないので、パイプライン凍結手段を用いて
命令2に先行する命令(ここでは命令1)の終了を待
ち、t5から命令2およびその後続命令の実行を再開す
る。命令2、3では、ソースオペランドはレジスタから
読むように変更させる。命令4は、命令2との関係が正
常時と同一であるため、普通にE2バイパスからソース
オペランドを読み込むことができる。図9(a)から図
9(b)にシーケンスが変更されるとき、制御部30は
以下のアルゴリズムで制御動作を行っている。 時刻t3、t4 → 命令2のDステージを凍結する。 時刻t5 → 凍結を解除するとともに、全てのバイパスをレジスタに 変更する。 時刻t6 → E2バイパスとWバイパスをレジスタに変更する。 時刻t7 → Wバイパスをレジスタに変更する。 時刻t8以降 → 通常に戻る。
ことも可能である。その場合は、必ずしも動作再開にあ
たり先行命令の終了を待つ必要はなく、例えば、対象と
なる先行命令が、本来バイパス線(bp1)9に結果を
乗せる位置にあるはずが、バイパス線(bp2)10に
結果をのせる位置まで進んでいたならば、セレクト信号
7、8がバイパス線(bp2)10を選択する値になる
ように、論理回路16、17を制御すればよい。
ジェントにして、命令2のDステージを凍結せずに実行
可能にした例である。図9(c)では、命令2はE2バ
イパスに、命令3はWバイパスに変更されている。この
とき、制御部30は以下のアルゴリズムで制御動作を行
っている。 時刻t3 → E1をE2に、E2をWに、Wをレジスタに変更する。 時刻t4 → E2をWに、Wをレジスタに変更する。 時刻t5 → Wをレジスタに変更する。 時刻t6以降 → 通常に戻る。
完全にソフトウェアに任せるものであった。それにより
ハードウェアが簡単になるメリットがある一方、トレー
ドオフとしてコンパイラやアセンブラプログラマへの負
担が増すデメリットもある。本実施例は、従来のプロセ
ッサで採用されていた完全にハードウェアが制御する方
法と、本発明の上記各実施例で述べた完全にソフトウェ
アで制御する方法の中間に位置するもので、ハードウェ
ア量をある程度削減しつつ、ソフトウェアの負担増を少
量に押さえることを目的としている。
られる回路である。バイパスの候補がN個あるとしてい
る。40−1〜40−Nはレジスタであり、N個のバイ
パスに乗るデータが格納されるターゲットレジスタ番号
を保持している。43は命令コードにあるオペランド番
号(S1)である。41−1〜41−Nは比較回路であ
り、オペランド番号(S1)43とレジスタ40−1〜
40−Nを比較し、一致を表す1ビットの信号を出力す
る。42は論理回路であり、上記比較の結果、一致した
ものがあったときは、その中で番号が小さいものを表す
信号を、すべて一致しない場合は不一致を表す信号を信
号線44に出力する。信号線44は、図2に示す第1の
実施例におけるセレクト信号線(b1)7に相当する。
り、従来例の図10に存在したレジスタと比較回路の組
をk個に制限する代わりに、省略したレジスタk+1〜
Nの範囲に一致するものがあることを示す信号b1を用
いて図10の構成と同様な機能を実現した例である。こ
のようにすることで、ソフトウェアは命令間の依存関係
の解析を限定された範囲で行えばよく、完全にソフトウ
ェアでバイパス制御を行う場合よりも負担が軽くなる。
3、信号線(b1)45は、上記第1の実施例の命令コ
ード中のs1、b1と同一であると考えてよい。図11
における論理回路42は、N個のバイパスと、バイパス
を使わずにレジスタから値を読む場合の合わせてN+1
通りを識別するための信号を出力する。論理回路42に
入力される信号線(b1)45は、(1)レジスタから
読む、(2)1からKまでのバイパスのいずれかを使
う、(3)バイパスK+1を使う、(4)バイパスK+
2を使う、....(N−K+2)バイパスNを使う、
の、N−K+2通りを識別できる信号である。論理回路
42のアルゴリズムは以下の通りである。 (a)信号45が上記の(2)以外だった場合 そのままの意味のセレクト信号を出力する。 (b)信号45が上記の(2)だった場合 41−1〜41−Kの中で一致したものがあれば、その
中で一番若い番号に対応するバイパスを選択するセレク
ト信号を出力する。一致するものがなければ、レジスタ
からの読み込みを表すセレクト信号を出力する。
令セットを強力にする例である。図12は、第6の実施
例の回路構成例であり、50はアドレス計算器、51、
52はパイプラインレジスタ、53〜55はバイパスで
ある。ロードストア命令が実行されると、50で計算さ
れた実効アドレスに従ってキャッシュやメモリへのアク
セスが行われる。本実施例は、実効アドレスをバイパス
に流して上記した各実施例のいずれかの手段によって、
後続命令のソースオペランドとして用いることを可能に
したものである。このようにすることにより、レジスタ
を消費することなく、後続命令に実効アドレスを引き渡
すことができる。
(offset)を加算した値、b+offsetの結
果の実効アドレスを後続命令で使用したい場合、従来技
術では、 add r0、 b、 offset (1) ld r1、 r0、 0 (2) 後続命令 r0 (3) のように、(1)で先に、b+offsetを計算して
おいて、その結果をベースレジスタとして(2)のロー
ド命令を発行し、後続命令は実効アドレスが格納されて
いるr0をソースオペランドとして用いることになる。
タr0を破壊しなくてよいことの2つのメリットが得ら
れる。
たが、実際にはプロセッサ全体の構成によって定めれば
よく、3に特定するものではない。
令セットを強力にする他の例である。図13は、第7の
実施例の回路構成例であり、60はターゲットアドレス
計算器、61、62はパイプラインレジスタ、63〜6
5はバイパス、66、67はターゲットアドレスを計算
する元データであり、例えば、レジスタ相対分岐ならば
レジスタ値とオフセット値に相当する。
レス計算器60で計算されたターゲットアドレスをプロ
グラムカウンタとする命令に制御が移行するが、それと
同時に本実施例では、ターゲットアドレスをバイパス6
3〜65に流し、後続命令がソースオペランドとして用
いることを可能にしている。なお、パイプライン段数
は、図13に示すものに限定するものではない。
令セットを強力にする他の例である。図14は、第8の
実施例の回路構成例であり、70は減算回路、71、7
2はパイプラインレジスタ、73〜75はバイパス、7
6、77は入力データ線、78は条件コード生成回路、
79は比較条件信号線、80は生成された条件コード信
号線である。
6、77から比較される2個のデータが入力され、減算
回路70で減算される。減算の結果と比較条件信号線7
9で与えられる比較条件に基づいて、条件コード生成回
路78で条件コードが生成され、条件コード信号線80
に出力される。本実施例では、本来の比較命令の機能に
加えて、減算結果をバイパス73〜75に流すことによ
り、後続命令がソースオペランドとして取得することが
できる。なお、パイプライン段数などは、図14に限定
されるものではない。
令セットを強力にする他の例である。図15は、第9の
実施例の回路構成例であり、90はレジスタファイル、
91は論理回路、92は書き込み抑止信号、93はライ
トデータである。94は命令コード中にあるターゲット
レジスタ番号(dst)であり、通常は、dstの値で
定まる番号のレジスタにライトデータ93のデータがラ
イトされるが、dstの値がある特定の値である場合に
は、論理回路91により書き込み抑止信号92がアサー
トされ、書き込みが抑止される。すなわち、dstフィ
ールドが特定の値である命令は、レジスタライトを行わ
ない。ただし、バイパス出力だけは行われるのて、演算
結果を後続命令に渡すことはできる。
消費せずにプログラムすることが可能になる。
パイプライン計算機においてバイパス制御機構を採用す
る際に、ハードウェア量の削減が図れ、またハードウェ
アの設計工程や検証工程を短縮することができる。
の形式を示す図である。
る。
の形式を示す図である。
る。
の形式を示す図である。
ク図である。
路部の構成例を示す図である。
る。
御を示す図である。
示す図である。
ある。
ある。
ある。
ある。
ある。
効果を説明する図である。
計算機の構成例を示す図である。
Claims (12)
- 【請求項1】 レジスタから読み出されたオペランドデ
ータが入力され、命令の演算がパイプライン処理により
実行され、演算結果がレジスタに書き込まれるパイプラ
イン機構を有するデータ処理装置において、 先行する命令の演算結果をレジスタに書き込む前に後続
命令のソースオペランドとして渡すバイパス手段を備え
るとともに、 命令コード中にバイパス手段からソースオペランドを受
け取ることを指定するバイパス指定フィールドを有し、 ソースオペランド選択部では、前記バイパス指定フィー
ルドの値にしたがって、レジスタからの値あるいはバイ
パス手段からの値のいずれかをパイプラインへの入力値
として選択することを特徴とするデータ処理装置。 - 【請求項2】 レジスタから読み出されたオペランドデ
ータが入力され、命令の演算がパイプライン処理により
実行され、演算結果がレジスタに書き込まれるパイプラ
イン機構を有するデータ処理装置において、 先行する命令の演算結果をレジスタに書き込む前に後続
命令のソースオペランドとして渡す複数のバイパス手段
を備えるとともに、 命令コード中にソースオペランドレジスタフィールドと
は別にソースオペランドを受け取るバイパスを指定する
フィールドを有し、 ソースオペランド選択部では、前記バイパス指定フィー
ルドの値にしたがって、レジスタあるいは複数のバイパ
スのいずれかをパイプラインへの入力値として選択する
ことを特徴とするデータ処理装置。 - 【請求項3】 レジスタから読み出されたオペランドデ
ータが入力され、命令の演算がパイプライン処理により
実行され、演算結果がレジスタに書き込まれるパイプラ
イン機構を有するデータ処理装置において、 先行する命令の演算結果をレジスタに書き込む前に後続
命令のソースオペランドとして渡す複数のバイパス手段
を備えるとともに、 前記複数のバイパス手段のそれぞれにレジスタ番号とは
重複しない番号を割り当て、命令コード中のソースオペ
ランドレジスタフィールド値をバイパスを含む番号空間
内の1つの番号を指定するものとして解釈し、 前記ソースオペランドレジスタフィールドの値にしたが
って、レジスタあるいは複数のバイパスのいずれかをパ
イプラインへの入力値として選択することを特徴とする
データ処理装置。 - 【請求項4】 複数のスロットの命令が同時に動作する
VLIW方式のデータ処理装置であって、各スロット毎
に、レジスタから読み出されたオペランドデータが入力
され、命令の演算がパイプライン処理により実行され、
演算結果がレジスタに書き込まれるパイプライン機構を
有するデータ処理装置において、 各スロットで計算された結果をレジスタへ書き込む前
に、同一もしくは別のスロットの後続命令のソースオペ
ランドとして渡すための複数のバイパス手段を備えると
ともに、 命令コード中にソースオペランドフィールドとは別にソ
ースオペランドを受け取るバイパスを指定するフィール
ドおよびソースオペランドを受け取るスロットを指定す
るフィールドを有し、 ソースオペランド選択部では、前記バイパス指定フィー
ルドの値およびスロット指定フィールドの値にしたがっ
て、レジスタあるいは各スロットから出力される複数の
バイパスのいずれかをパイプラインへの入力値として選
択することを特徴とするデータ処理装置。 - 【請求項5】 複数のスロットの命令が同時に動作する
VLIW方式のデータ処理装置であって、各スロット毎
に、レジスタから読み出されたオペランドデータが入力
され、命令の演算がパイプライン処理により実行され、
演算結果がレジスタに書き込まれるパイプライン機構を
有するデータ処理装置において、 各スロットで計算された結果をレジスタへ書き込む前
に、同一もしくは別のスロットの後続命令のソースオペ
ランドとして渡すための複数のバイパス手段を備えると
ともに、 前記複数のバイパス手段のそれぞれにレジスタ番号とは
重複しない番号を割り当て、命令コード中のソースオペ
ランドレジスタフィールド値をバイパスを含む番号空間
内の1つの番号を指定するものとして解釈し、 前記ソースオペランドレジスタフィールドの値にしたが
って、レジスタあるいは複数のバイパスのいずれかをパ
イプラインへの入力値として選択することを特徴とする
データ処理装置。 - 【請求項6】 パイプラインの乱れを検出する手段と、 ソースオペランドの読み込みを凍結する手段と、 ソースオペランドの読み込みを命令コードによって指定
されたバイパスからではなくレジスタからの入力に切り
替える手段を備え、 前記検出手段によってパイプラインの乱れが検出される
と、先行命令がレジスタ書き込みを終えるまで、前記凍
結手段によってソースオペランド読み込みを凍結し、動
作再開時には前記切り替え手段によって、ソースオペラ
ンドの読み込み元をレジスタに切り替えることを特徴と
する請求項1から請求項5のいずれかに記載のデータ処
理装置。 - 【請求項7】 パイプラインの乱れを検出する手段と、 ソースオペランドの読み込みを命令コードによって指定
されたバイパスからではなく他のバイパスに切り替える
手段を備え、 前記検出手段によってパイプラインの乱れが検出される
と、乱れの度合いに応じて、ソースオペランドの読み込
み元を前記切り替え手段によって命令コードによって指
定されたバイパス以外のバイパスに切り替えることを特
徴とする請求項2から請求項5のいずれかに記載のデー
タ処理装置。 - 【請求項8】 命令コード中のバイパス指定フィールド
は、ソースオペランドとなり得るすべてのバイパスのう
ち一部分のみを指定し、その他のバイパス選択はハード
ウェア回路により行うことを特徴とする請求項2から請
求項7のいずれかに記載のデータ処理装置。 - 【請求項9】 命令セット中のロードストア命令が計算
する実効アドレスを、バイパス経由で後続命令のソース
オペランドとして取得することを特徴とする請求項1か
ら請求項8のいずれかに記載のデータ処理装置。 - 【請求項10】 命令セット中の分岐命令が計算するタ
ーゲットアドレスを、バイパス経由で後続命令のソース
オペランドとして取得することを特徴とする請求項1か
ら請求項8のいずれかに記載のデータ処理装置。 - 【請求項11】 命令セット中の比較命令が比較する2
値の差分を、バイパス経由で後続命令のソースオペラン
ドとして取得することを特徴とする請求項1から請求項
8のいずれかに記載のデータ処理装置。 - 【請求項12】 命令コード中に演算結果をレジスタに
書き込まないことを指定するフィールドを有し、 当該指定によりレジスタに結果を書き込むことなく、演
算結果をバイパス経由で後続命令のソースオペランドと
して与えることを特徴とする請求項1から請求項11の
いずれかに記載のデータ処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22244897A JP3449186B2 (ja) | 1997-08-19 | 1997-08-19 | パイプラインバイパス機能を有するデータ処理装置 |
US09/044,846 US6145074A (en) | 1997-08-19 | 1998-03-20 | Selecting register or previous instruction result bypass as source operand path based on bypass specifier field in succeeding instruction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22244897A JP3449186B2 (ja) | 1997-08-19 | 1997-08-19 | パイプラインバイパス機能を有するデータ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1165844A JPH1165844A (ja) | 1999-03-09 |
JP3449186B2 true JP3449186B2 (ja) | 2003-09-22 |
Family
ID=16782571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22244897A Expired - Fee Related JP3449186B2 (ja) | 1997-08-19 | 1997-08-19 | パイプラインバイパス機能を有するデータ処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6145074A (ja) |
JP (1) | JP3449186B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020197725A1 (en) * | 2019-03-26 | 2020-10-01 | Intel Corporation | System, apparatus and method for adaptive interconnect routing |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6266766B1 (en) * | 1998-04-03 | 2001-07-24 | Intel Corporation | Method and apparatus for increasing throughput when accessing registers by using multi-bit scoreboarding with a bypass control unit |
CA2348261C (en) * | 1999-08-30 | 2006-02-14 | Ip Flex Inc. | Program product and data processor |
US7139899B2 (en) * | 1999-09-03 | 2006-11-21 | Cisco Technology, Inc. | Selected register decode values for pipeline stage register addressing |
US6862677B1 (en) * | 2000-02-16 | 2005-03-01 | Koninklijke Philips Electronics N.V. | System and method for eliminating write back to register using dead field indicator |
JP2002244846A (ja) * | 2001-02-15 | 2002-08-30 | Rooran:Kk | プロセッサとその回路ソースを記録したコンピュータ読み取り可能な記録媒体、及びプロセッサ用の処理プログラムを機械語に変換するアセンブラ |
US7200735B2 (en) * | 2002-04-10 | 2007-04-03 | Tensilica, Inc. | High-performance hybrid processor with configurable execution units |
JP2006522398A (ja) * | 2003-03-19 | 2006-09-28 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | パイプライン型命令プロセッサにおけるバイパスの使用 |
US7290121B2 (en) * | 2003-06-12 | 2007-10-30 | Advanced Micro Devices, Inc. | Method and data processor with reduced stalling due to operand dependencies |
TWI246023B (en) * | 2003-11-26 | 2005-12-21 | Admtek Inc | Very long instruction word architecture |
US20060101434A1 (en) * | 2004-09-30 | 2006-05-11 | Adam Lake | Reducing register file bandwidth using bypass logic control |
CN101361039A (zh) | 2006-01-20 | 2009-02-04 | 松下电器产业株式会社 | 处理器 |
US7725687B2 (en) * | 2006-06-27 | 2010-05-25 | Texas Instruments Incorporated | Register file bypass with optional results storage and separate predication register file in a VLIW processor |
US8266411B2 (en) * | 2009-02-05 | 2012-09-11 | International Business Machines Corporation | Instruction set architecture with instruction characteristic bit indicating a result is not of architectural importance |
CN104216681B (zh) * | 2013-05-31 | 2018-02-13 | 华为技术有限公司 | 一种cpu指令处理方法和处理器 |
JP6422381B2 (ja) * | 2015-03-18 | 2018-11-14 | ルネサスエレクトロニクス株式会社 | プロセッサ、プログラムコード変換装置及びソフトウェア |
US11561792B2 (en) * | 2015-06-08 | 2023-01-24 | Qualcomm Incorporated | System, apparatus, and method for a transient load instruction within a VLIW operation |
US20200310799A1 (en) * | 2019-03-27 | 2020-10-01 | Mediatek Inc. | Compiler-Allocated Special Registers That Resolve Data Hazards With Reduced Hardware Complexity |
CN115640047B (zh) * | 2022-09-08 | 2024-01-19 | 海光信息技术股份有限公司 | 指令操作方法及装置、电子装置及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP3745450B2 (ja) * | 1996-05-13 | 2006-02-15 | 株式会社ルネサステクノロジ | 並列処理プロセッサ |
JP2933026B2 (ja) * | 1996-08-30 | 1999-08-09 | 日本電気株式会社 | 複数命令並列発行/実行管理装置 |
US5872986A (en) * | 1997-09-30 | 1999-02-16 | Intel Corporation | Pre-arbitrated bypassing in a speculative execution microprocessor |
-
1997
- 1997-08-19 JP JP22244897A patent/JP3449186B2/ja not_active Expired - Fee Related
-
1998
- 1998-03-20 US US09/044,846 patent/US6145074A/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020197725A1 (en) * | 2019-03-26 | 2020-10-01 | Intel Corporation | System, apparatus and method for adaptive interconnect routing |
US11256657B2 (en) | 2019-03-26 | 2022-02-22 | Intel Corporation | System, apparatus and method for adaptive interconnect routing |
Also Published As
Publication number | Publication date |
---|---|
US6145074A (en) | 2000-11-07 |
JPH1165844A (ja) | 1999-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3449186B2 (ja) | パイプラインバイパス機能を有するデータ処理装置 | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
CN101965554B (zh) | 选择性地提交已执行指令的结果的系统和方法 | |
US8161266B2 (en) | Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation | |
US5764943A (en) | Data path circuitry for processor having multiple instruction pipelines | |
JP5699554B2 (ja) | ベクトル処理回路、命令発行制御方法、及びプロセッサシステム | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
US20020169942A1 (en) | VLIW processor | |
JPH09311786A (ja) | データ処理装置 | |
KR20070026434A (ko) | 듀얼 경로 프로세서에서 제어 프로세싱용 장치 및 방법 | |
JPH0553803A (ja) | プロセツサ | |
JP2620511B2 (ja) | データ・プロセッサ | |
KR101016257B1 (ko) | 프로세서 및 정보 처리 장치 | |
JP2006522398A (ja) | パイプライン型命令プロセッサにおけるバイパスの使用 | |
JP2008146544A (ja) | 演算処理装置 | |
CN112182999B (zh) | 一种基于mips32指令系统的三级流水线cpu设计方法 | |
JPH07120284B2 (ja) | データ処理装置 | |
US20070220235A1 (en) | Instruction subgraph identification for a configurable accelerator | |
US6092184A (en) | Parallel processing of pipelined instructions having register dependencies | |
JP2874351B2 (ja) | 並列パイプライン命令処理装置 | |
KR100974401B1 (ko) | 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 | |
CN110073332B (zh) | 数据处理装置和方法 | |
JP3182591B2 (ja) | マイクロプロセッサ | |
JP3708022B2 (ja) | プロセッサ | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20030610 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080711 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090711 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100711 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100711 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |