JPH0820949B2 - 情報処理装置 - Google Patents
情報処理装置Info
- Publication number
- JPH0820949B2 JPH0820949B2 JP3310536A JP31053691A JPH0820949B2 JP H0820949 B2 JPH0820949 B2 JP H0820949B2 JP 3310536 A JP3310536 A JP 3310536A JP 31053691 A JP31053691 A JP 31053691A JP H0820949 B2 JPH0820949 B2 JP H0820949B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- instruction
- field
- dependency
- destination register
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3856—Reordering of instructions, e.g. using queues or age tags
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】
【従来の技術】従来、情報処理装置においては、性能を
上げるために、複数の命令をオーバーラップして実行す
るパイプライン処理が行なわれている。しかし、メモリ
からのデータの読みだしや浮動小数点演算などのよう
に、1つの命令のパイプラインの段数が多い場合に、そ
の命令によって得られるデータを次の命令が必要とする
場合、データが得られるまで次の命令の実行ができなく
なり、性能の低下をもたらす。このように、前の命令に
よって得られるデータを後の命令が必要とすることはデ
ータ依存と呼ばれている。
上げるために、複数の命令をオーバーラップして実行す
るパイプライン処理が行なわれている。しかし、メモリ
からのデータの読みだしや浮動小数点演算などのよう
に、1つの命令のパイプラインの段数が多い場合に、そ
の命令によって得られるデータを次の命令が必要とする
場合、データが得られるまで次の命令の実行ができなく
なり、性能の低下をもたらす。このように、前の命令に
よって得られるデータを後の命令が必要とすることはデ
ータ依存と呼ばれている。
【0003】これに対し、データ依存のためにある命令
が実行できない場合でも、その命令の後の命令で実行で
きる命令があれば、その命令を先に実行することによっ
て、データ依存による性能の低下を避ける方法が文献
「R.M.Tomasulo : An Efficient Algorithm for Exploi
ting Multiple Arithmetic Unit :アイヒ゛-エム シ゛ャ-ナルIBM J
ournal,Vol.11 January 1967,pp.25-33」に示されてい
る。プログラムの中の命令の順番と異なる順番で命令を
実行する方法はout-of-order実行と呼ばれている。この
文献では、実行される命令にはそれぞれ異なるタグが割
り付けられ、実行ユニットで命令が実行されると、結果
のデータとともにこのタグが出力される。さらに複数の
実行ユニットのそれぞれの入力にはリザベーションステ
ーション(Reservation Station)が設けられ、命令が
デコードされると、その命令に必要なデータがレジスタ
ファイルから読みだされ、デコードされた命令と一緒に
対応する実行ユニットのリザベーションステーションに
格納される。以前の命令とのデータ依存のために必要と
するデータが得られない場合は、そのデータを供給する
命令のタグがリザベーションステーションに格納され
る。リザベーションステーションは各実行ユニットが出
力するタグとリザベーションステーションに格納されて
いるタグを比較することによって、必要とするデータを
取り込む。リザベーションステーションに格納されてい
る複数の命令のうち、実行に必要なデータが揃ったもの
から実行を開始する。図10にリザベーションステーシ
ョンを用いた従来の情報処理装置のブロック図を示す。
が実行できない場合でも、その命令の後の命令で実行で
きる命令があれば、その命令を先に実行することによっ
て、データ依存による性能の低下を避ける方法が文献
「R.M.Tomasulo : An Efficient Algorithm for Exploi
ting Multiple Arithmetic Unit :アイヒ゛-エム シ゛ャ-ナルIBM J
ournal,Vol.11 January 1967,pp.25-33」に示されてい
る。プログラムの中の命令の順番と異なる順番で命令を
実行する方法はout-of-order実行と呼ばれている。この
文献では、実行される命令にはそれぞれ異なるタグが割
り付けられ、実行ユニットで命令が実行されると、結果
のデータとともにこのタグが出力される。さらに複数の
実行ユニットのそれぞれの入力にはリザベーションステ
ーション(Reservation Station)が設けられ、命令が
デコードされると、その命令に必要なデータがレジスタ
ファイルから読みだされ、デコードされた命令と一緒に
対応する実行ユニットのリザベーションステーションに
格納される。以前の命令とのデータ依存のために必要と
するデータが得られない場合は、そのデータを供給する
命令のタグがリザベーションステーションに格納され
る。リザベーションステーションは各実行ユニットが出
力するタグとリザベーションステーションに格納されて
いるタグを比較することによって、必要とするデータを
取り込む。リザベーションステーションに格納されてい
る複数の命令のうち、実行に必要なデータが揃ったもの
から実行を開始する。図10にリザベーションステーシ
ョンを用いた従来の情報処理装置のブロック図を示す。
【0004】図10において、101はレジスタファイ
ルであり、データを格納するレジスタを複数有する。1
02はそれぞれ実行ユニットの演算器であり、演算結果
のデータを結果バス103に、どの命令の結果データか
を識別するためのタグをタグバス104に出力する。こ
の例では、演算器を3つ持ち、同時に3つの演算を実行
することが可能である。105はそれぞれリザベーショ
ンステーションの1エントリーである。
ルであり、データを格納するレジスタを複数有する。1
02はそれぞれ実行ユニットの演算器であり、演算結果
のデータを結果バス103に、どの命令の結果データか
を識別するためのタグをタグバス104に出力する。こ
の例では、演算器を3つ持ち、同時に3つの演算を実行
することが可能である。105はそれぞれリザベーショ
ンステーションの1エントリーである。
【0005】それぞれのエントリー105は命令をデコ
ードして得られる制御情報を格納する制御フィールド1
11、タグ1フィールド112、ソース1フィールド1
13、タグ2フィールド114、および、ソース2フィ
ールド115を持つ。ソース1フィールド113および
ソース2フィールド115は演算器102での演算に用
いられる2つのソースデータを格納する。タグ1フィー
ルド112およびタグ2フィールド114はそれぞれソ
ース1フィールド113およびソース2フィールド11
5に対応し、ソースデータが前の命令とのデータ依存の
ためにレジスタファイル101から供給されない場合、
3つの演算器102のいずれかから供給されるデータを
識別するためのタグを格納する。各エントリー105
は、3つの演算器102から出力されるタグと、タグ1
フィールド112およびタグ2フィールド114に格納
されているタグをそれぞれ比較するための比較器116
を6つ持つ。比較の結果、一致する場合、対応する演算
器102の結果データを対応するソース1フィールド1
13またはソース2フィールド115に格納し、2つの
ソースデータが揃った場合、接続されている演算器10
2で演算が実行される。
ードして得られる制御情報を格納する制御フィールド1
11、タグ1フィールド112、ソース1フィールド1
13、タグ2フィールド114、および、ソース2フィ
ールド115を持つ。ソース1フィールド113および
ソース2フィールド115は演算器102での演算に用
いられる2つのソースデータを格納する。タグ1フィー
ルド112およびタグ2フィールド114はそれぞれソ
ース1フィールド113およびソース2フィールド11
5に対応し、ソースデータが前の命令とのデータ依存の
ためにレジスタファイル101から供給されない場合、
3つの演算器102のいずれかから供給されるデータを
識別するためのタグを格納する。各エントリー105
は、3つの演算器102から出力されるタグと、タグ1
フィールド112およびタグ2フィールド114に格納
されているタグをそれぞれ比較するための比較器116
を6つ持つ。比較の結果、一致する場合、対応する演算
器102の結果データを対応するソース1フィールド1
13またはソース2フィールド115に格納し、2つの
ソースデータが揃った場合、接続されている演算器10
2で演算が実行される。
【0006】この例のように、同時に結果のデータを出
力する実行ユニットの数が3で、演算に必要なデータの
数が2の場合、リザベーションステーションの1つのエ
ントリーに対して、3x2、即ち、6個の比較器が必要
である。3つの実行ユニットにそれぞれ2エントリーの
リザベーションステーションを持つとすると、全部で3
6個の多くの比較器が必要である。また、データ依存の
解消を検出して次に実行される命令を見つけるために、
タグの比較を必要とし、高速動作が困難である。また、
この構成では、2つのソースデータが揃っても、対応す
る演算器でしか実行できず、他の演算器が空いていても
利用することができない。
力する実行ユニットの数が3で、演算に必要なデータの
数が2の場合、リザベーションステーションの1つのエ
ントリーに対して、3x2、即ち、6個の比較器が必要
である。3つの実行ユニットにそれぞれ2エントリーの
リザベーションステーションを持つとすると、全部で3
6個の多くの比較器が必要である。また、データ依存の
解消を検出して次に実行される命令を見つけるために、
タグの比較を必要とし、高速動作が困難である。また、
この構成では、2つのソースデータが揃っても、対応す
る演算器でしか実行できず、他の演算器が空いていても
利用することができない。
【0007】Outーofーorderで実行され、得
られたデータをそのままレジスタファイルに書き込む
と、例外が発生した場合に問題となる。例外が発生する
とその例外のために完了できなかった命令のアドレスが
退避され、例外の処理を行なった後、退避されたアドレ
スから、再び実行が開始される。ところが、Outーo
fーorder実行のために、退避されたアドレスの後
の命令が、例外発生時にすでに実行を終え、しかもレジ
スタファイルを更新していたとすると、その命令は例外
の処理の後、再び実行されることになる。この問題を解
決するため、リオーダーバッファ(Reorder Buffer)が
提案されている(文献「James E.Smith etal : Impleme
nting Precise Interrupts in Pipelined Processors :
アイイ-イ-イ-トランサ゛クションス゛ オン コンヒ゜ュ-タス゛ IEEE Transactio
ns on Computers, Vol.37,No.5,MAY 1988,pp562-573
」)。
られたデータをそのままレジスタファイルに書き込む
と、例外が発生した場合に問題となる。例外が発生する
とその例外のために完了できなかった命令のアドレスが
退避され、例外の処理を行なった後、退避されたアドレ
スから、再び実行が開始される。ところが、Outーo
fーorder実行のために、退避されたアドレスの後
の命令が、例外発生時にすでに実行を終え、しかもレジ
スタファイルを更新していたとすると、その命令は例外
の処理の後、再び実行されることになる。この問題を解
決するため、リオーダーバッファ(Reorder Buffer)が
提案されている(文献「James E.Smith etal : Impleme
nting Precise Interrupts in Pipelined Processors :
アイイ-イ-イ-トランサ゛クションス゛ オン コンヒ゜ュ-タス゛ IEEE Transactio
ns on Computers, Vol.37,No.5,MAY 1988,pp562-573
」)。
【0008】図11にリオーダーバッファを用いた従来
の情報処理装置のブロック図を示す。図11において、
121はリオーダーバッファであり、データを格納する
データフィールド56とその格納先のレジスタ番号(デ
スティネーションレジスタ番号)を格納するデスティネ
ーションレジスタフィールド55からなるエントリー1
22を複数持ち、Outーofーorderで得られた
演算器52の結果のデータを一旦格納し、これを、プロ
グラムに書かれている命令の順番でレジスタファイル5
1にデータを格納するものである。リオーダーバッファ
121に保持されたデータをレジスタファイル51に格
納する前に、後続の命令がそのデータを必要とする場
合、レジスタファイル51からの読みだしを禁止し、リ
オーダーバッファ121からデータを供給する必要があ
る。これは、リオーダーバッファ121の各エントリー
122に依存検出器57を設け、エントリー122のデ
スティネーションレジスタフィールド55に格納されて
いるデスティネーションレジスタ番号と後続の命令のソ
ースレジスタ番号60および61を比較することによっ
てデータ依存が検出され、データ依存情報64、65に
よってエントリー122のデータフィールド56の出力
が制御される。ところが、リオーダーバッファ121に
同じデスティネーションレジスタ番号を持つエントリー
が複数ある場合、最新のデータを選ばなければならな
い。そのため、通常、比較した結果、得られる複数の一
致信号の中から優先度をつけて選ぶ回路が用いられる。
図12に優先度付き選択回路130を示す。優先度付き
選択回路130は、高い優先度を持つ一致信号によって
低い優先度を持つ一致信号を無効にするもので、リオー
ダーバッファ121のエントリー数が多くなればなるほ
ど、ゲート段数が多くなり、動作速度が遅くなる。
の情報処理装置のブロック図を示す。図11において、
121はリオーダーバッファであり、データを格納する
データフィールド56とその格納先のレジスタ番号(デ
スティネーションレジスタ番号)を格納するデスティネ
ーションレジスタフィールド55からなるエントリー1
22を複数持ち、Outーofーorderで得られた
演算器52の結果のデータを一旦格納し、これを、プロ
グラムに書かれている命令の順番でレジスタファイル5
1にデータを格納するものである。リオーダーバッファ
121に保持されたデータをレジスタファイル51に格
納する前に、後続の命令がそのデータを必要とする場
合、レジスタファイル51からの読みだしを禁止し、リ
オーダーバッファ121からデータを供給する必要があ
る。これは、リオーダーバッファ121の各エントリー
122に依存検出器57を設け、エントリー122のデ
スティネーションレジスタフィールド55に格納されて
いるデスティネーションレジスタ番号と後続の命令のソ
ースレジスタ番号60および61を比較することによっ
てデータ依存が検出され、データ依存情報64、65に
よってエントリー122のデータフィールド56の出力
が制御される。ところが、リオーダーバッファ121に
同じデスティネーションレジスタ番号を持つエントリー
が複数ある場合、最新のデータを選ばなければならな
い。そのため、通常、比較した結果、得られる複数の一
致信号の中から優先度をつけて選ぶ回路が用いられる。
図12に優先度付き選択回路130を示す。優先度付き
選択回路130は、高い優先度を持つ一致信号によって
低い優先度を持つ一致信号を無効にするもので、リオー
ダーバッファ121のエントリー数が多くなればなるほ
ど、ゲート段数が多くなり、動作速度が遅くなる。
【0009】通常のアプリケーションにおいて、実行さ
れる全命令の15%から25%は分岐命令である。さら
にこの分岐命令の大部分は条件分岐命令で、命令で指定
した条件をコンディションコードの値が満たすかどうか
で、分岐するかどうかが決められる。条件分岐命令の直
前の命令がコンディションコードを更新する場合、分岐
の判定が遅くなり、これを待って分岐先の命令をフェッ
チすると、分岐先の命令が得られるまで無駄なサイクル
が生じる。この無駄なサイクルを減らすために、あらか
じめ分岐先の命令をフェッチしておき、分岐の判定が終
わってから実行を開始する方法が考えられる。しかし、
この方法でも、分岐判定が終わるまで分岐命令の後の命
令を実行することができず、out-of-orderで実行される
命令は2つの分岐命令の間の少ない命令に限定され、分
岐命令の頻度が大きい場合、out-of-order実行の効果が
出ない。
れる全命令の15%から25%は分岐命令である。さら
にこの分岐命令の大部分は条件分岐命令で、命令で指定
した条件をコンディションコードの値が満たすかどうか
で、分岐するかどうかが決められる。条件分岐命令の直
前の命令がコンディションコードを更新する場合、分岐
の判定が遅くなり、これを待って分岐先の命令をフェッ
チすると、分岐先の命令が得られるまで無駄なサイクル
が生じる。この無駄なサイクルを減らすために、あらか
じめ分岐先の命令をフェッチしておき、分岐の判定が終
わってから実行を開始する方法が考えられる。しかし、
この方法でも、分岐判定が終わるまで分岐命令の後の命
令を実行することができず、out-of-orderで実行される
命令は2つの分岐命令の間の少ない命令に限定され、分
岐命令の頻度が大きい場合、out-of-order実行の効果が
出ない。
【0010】
【発明が解決しようとする課題】このように、従来の情
報処理装置では、実行できなかった命令を保持するため
に、必要なソースデータを格納するフィールドとすぐに
は得られなかったソースデータを後で獲得するためのタ
グを格納するフィールド等、多くの情報を格納するため
の回路と、演算器から送られてくるタグと格納されてい
るタグを比較してデータ依存の解消を検出するための比
較器を必要とし、回路規模の増大とそれにともなう処理
速度の低下が見られた。
報処理装置では、実行できなかった命令を保持するため
に、必要なソースデータを格納するフィールドとすぐに
は得られなかったソースデータを後で獲得するためのタ
グを格納するフィールド等、多くの情報を格納するため
の回路と、演算器から送られてくるタグと格納されてい
るタグを比較してデータ依存の解消を検出するための比
較器を必要とし、回路規模の増大とそれにともなう処理
速度の低下が見られた。
【0011】さらに、out-of-orderで得られた結果をプ
ログラムに書かれている命令の順番でレジスタファイル
へ格納するためのバッファでデータ依存の検出を行なう
場合、同じレジスタ番号が複数登録されていると、優先
度を付けて検出しなければならず、バッファのエントリ
ー数の増大にともなって、検出の遅延が大きくなる。
ログラムに書かれている命令の順番でレジスタファイル
へ格納するためのバッファでデータ依存の検出を行なう
場合、同じレジスタ番号が複数登録されていると、優先
度を付けて検出しなければならず、バッファのエントリ
ー数の増大にともなって、検出の遅延が大きくなる。
【0012】さらに、分岐条件が確定するまで分岐命令
以降の命令を実行できないため、out-of-order実行の範
囲が狭くなり、その効果が十分得られないなどの問題が
あった。
以降の命令を実行できないため、out-of-order実行の範
囲が狭くなり、その効果が十分得られないなどの問題が
あった。
【0013】本発明は、かかる問題点に鑑みてなされた
もので、テータ依存の解消の検出をタグを使わずに行な
うことによって、タグを格納する回路や比較器を不要と
し、回路規模を小さくすると共に、処理速度を向上する
情報処理装置を提供することを目的としている。
もので、テータ依存の解消の検出をタグを使わずに行な
うことによって、タグを格納する回路や比較器を不要と
し、回路規模を小さくすると共に、処理速度を向上する
情報処理装置を提供することを目的としている。
【0014】また、本発明はデータ依存の検出のための
レジスタ番号の比較において、同じレジスタ番号が複数
登録されていても、最新のものだけを対象にすることに
よって、複数エントリーに対する依存信号の発生をなく
し、優先度を付けた一致信号の選択を不要とし、エント
リー数が多くなっても高速にデータ依存の検出を行なう
情報処理装置を提供することを目的としている。
レジスタ番号の比較において、同じレジスタ番号が複数
登録されていても、最新のものだけを対象にすることに
よって、複数エントリーに対する依存信号の発生をなく
し、優先度を付けた一致信号の選択を不要とし、エント
リー数が多くなっても高速にデータ依存の検出を行なう
情報処理装置を提供することを目的としている。
【0015】さらに、本発明はフロービットによって複
数のフローを区別して依存検出ができ、また、分岐条件
確定後、不要なフローを指定して無効化できるので、分
岐条件確定前に分岐命令を越えて命令を実行できる情報
処理装置を提供することを目的としている。
数のフローを区別して依存検出ができ、また、分岐条件
確定後、不要なフローを指定して無効化できるので、分
岐条件確定前に分岐命令を越えて命令を実行できる情報
処理装置を提供することを目的としている。
【0016】
【課題を解決するための手段】本発明の請求項1記載の
情報処理装置は、データを格納するレジスタを複数有す
るレジスタファイルと、複数のデータ保持エントリーを
有するデータ保持装置と、複数の命令保持エントリーを
有し、命令を一時的に保持する命令保持装置と、前記レ
ジスタファイルまたは前記データ保持装置から読みだし
たデータを用いて、命令で指示された処理を行なって結
果のデータを出力する実行ユニットと、前記命令保持装
置に保持された命令から実行可能な命令を選択する命令
選択装置とを備え、前記データ保持エントリーは前記実
行ユニットの結果のデータを格納するデータフィールド
と、デスティネーションレジスタ番号を格納するデステ
ィネーションレジスタフィールドと、依存検出器と、依
存情報フィールドと、前記データフィールドへのデータ
の格納を示すデータ格納ビットを有し、前記依存検出器
は前記デスティネーションレジスタフィールドに接続さ
れ、後続の命令のソースレジスタ番号と前記デスティネ
ーションレジスタフィールドに格納されているデスティ
ネーションレジスタ番号を比較してデータ依存を検出し
てデータ依存情報を出力し、前記依存情報フィールドは
前記データ依存情報を保持し、前記データ依存情報と前
記データ格納ビットにより命令実行可能信号を出力し、
前記命令選択装置は前記命令実行可能信号により、前記
命令保持装置に格納されている命令から実行可能命令を
選択する。
情報処理装置は、データを格納するレジスタを複数有す
るレジスタファイルと、複数のデータ保持エントリーを
有するデータ保持装置と、複数の命令保持エントリーを
有し、命令を一時的に保持する命令保持装置と、前記レ
ジスタファイルまたは前記データ保持装置から読みだし
たデータを用いて、命令で指示された処理を行なって結
果のデータを出力する実行ユニットと、前記命令保持装
置に保持された命令から実行可能な命令を選択する命令
選択装置とを備え、前記データ保持エントリーは前記実
行ユニットの結果のデータを格納するデータフィールド
と、デスティネーションレジスタ番号を格納するデステ
ィネーションレジスタフィールドと、依存検出器と、依
存情報フィールドと、前記データフィールドへのデータ
の格納を示すデータ格納ビットを有し、前記依存検出器
は前記デスティネーションレジスタフィールドに接続さ
れ、後続の命令のソースレジスタ番号と前記デスティネ
ーションレジスタフィールドに格納されているデスティ
ネーションレジスタ番号を比較してデータ依存を検出し
てデータ依存情報を出力し、前記依存情報フィールドは
前記データ依存情報を保持し、前記データ依存情報と前
記データ格納ビットにより命令実行可能信号を出力し、
前記命令選択装置は前記命令実行可能信号により、前記
命令保持装置に格納されている命令から実行可能命令を
選択する。
【0017】また本発明の請求項3記載の情報処理装置
は、データを格納するレジスタを複数有するレジスタフ
ァイルと、複数のデータ保持エントリーを有するデータ
保持装置と、前記レジスタファイルまたは前記データ保
持装置から読みだしたデータを用いて、命令で指示され
た処理を行なって結果のデータを出力する実行ユニット
とを備え、前記データ保持エントリーは前記実行ユニッ
トの結果のデータを格納するデータフィールドと、デス
ティネーションレジスタ番号を格納するデスティネーシ
ョンレジスタフィールドと、依存検出器と、依存対象ビ
ットと、比較器を有し、前記依存対象ビットは対応する
データ保持エントリーの前記デスティネーションレジス
タフィールドにデスティネーションレジスタ番号が格納
されたときにセットされ、前記比較器は前記デスティネ
ーションレジスタフィールドに格納されているデスティ
ネーションレジスタ番号と後続の命令のデスティネーシ
ョンレジスタ番号を比較して、一致する場合は一致信号
を出力し、前記依存対象ビットは前記一致信号によって
リセットされ、前記依存検出器は前記デスティネーショ
ンレジスタフィールドに接続され、前記依存対象ビット
がセットされている場合に後続の命令のソースレジスタ
番号と前記デスティネーションレジスタフィールドに格
納されているデスティネーションレジスタ番号を比較し
てデータ依存を検出してデータ依存情報を出力する。
は、データを格納するレジスタを複数有するレジスタフ
ァイルと、複数のデータ保持エントリーを有するデータ
保持装置と、前記レジスタファイルまたは前記データ保
持装置から読みだしたデータを用いて、命令で指示され
た処理を行なって結果のデータを出力する実行ユニット
とを備え、前記データ保持エントリーは前記実行ユニッ
トの結果のデータを格納するデータフィールドと、デス
ティネーションレジスタ番号を格納するデスティネーシ
ョンレジスタフィールドと、依存検出器と、依存対象ビ
ットと、比較器を有し、前記依存対象ビットは対応する
データ保持エントリーの前記デスティネーションレジス
タフィールドにデスティネーションレジスタ番号が格納
されたときにセットされ、前記比較器は前記デスティネ
ーションレジスタフィールドに格納されているデスティ
ネーションレジスタ番号と後続の命令のデスティネーシ
ョンレジスタ番号を比較して、一致する場合は一致信号
を出力し、前記依存対象ビットは前記一致信号によって
リセットされ、前記依存検出器は前記デスティネーショ
ンレジスタフィールドに接続され、前記依存対象ビット
がセットされている場合に後続の命令のソースレジスタ
番号と前記デスティネーションレジスタフィールドに格
納されているデスティネーションレジスタ番号を比較し
てデータ依存を検出してデータ依存情報を出力する。
【0018】更に本発明の請求項4記載の情報処理装置
は、データを格納するレジスタを複数有するレジスタフ
ァイルと、複数のデータ保持エントリーを有するデータ
保持装置と、前記レジスタファイルまたは前記データ保
持装置から読みだしたデータを用いて、命令で指示され
た処理を行なって結果のデータを出力する実行ユニット
とを備え、前記データ保持エントリーは前記実行ユニッ
トの結果のデータを格納するデータフィールドと、デス
ティネーションレジスタ番号を格納するデスティネーシ
ョンレジスタフィールドと、依存検出器と、エントリー
有効ビットと、フローフィールドと、フロー識別回路
と、フロー無効化回路を有し、前記エントリー有効ビッ
トは前記デスティネーションレジスタフィールドにデス
ティネーションレジスタ番号が格納されるときにセット
され、前記フローフィールドは命令のフローを識別する
フロービットを格納し、前記フロー識別回路はデータ依
存検出の対象となるフローを示すフロービットと前記フ
ローフィールドに格納されているフロービットを比較し
て依存対象信号を出力し、前記依存検出器は前記デステ
ィネーションレジスタフィールドに接続され、前記依存
対象信号が出力されている場合に後続の命令のソースレ
ジスタ番号と前記デスティネーションレジスタフィール
ドに格納されているデスティネーションレジスタ番号を
比較してデータ依存を検出してデータ依存情報を出力
し、前記無効化回路は無効化フロービットと無効化要求
信号を入力とし、無効化要求信号によって無効化の要求
が与えられると、前記無効化フロービットと前記フロー
フィールドに格納されているフロービットを比較し、比
較結果に応じて前記エントリー有効ビットをリセットす
る。
は、データを格納するレジスタを複数有するレジスタフ
ァイルと、複数のデータ保持エントリーを有するデータ
保持装置と、前記レジスタファイルまたは前記データ保
持装置から読みだしたデータを用いて、命令で指示され
た処理を行なって結果のデータを出力する実行ユニット
とを備え、前記データ保持エントリーは前記実行ユニッ
トの結果のデータを格納するデータフィールドと、デス
ティネーションレジスタ番号を格納するデスティネーシ
ョンレジスタフィールドと、依存検出器と、エントリー
有効ビットと、フローフィールドと、フロー識別回路
と、フロー無効化回路を有し、前記エントリー有効ビッ
トは前記デスティネーションレジスタフィールドにデス
ティネーションレジスタ番号が格納されるときにセット
され、前記フローフィールドは命令のフローを識別する
フロービットを格納し、前記フロー識別回路はデータ依
存検出の対象となるフローを示すフロービットと前記フ
ローフィールドに格納されているフロービットを比較し
て依存対象信号を出力し、前記依存検出器は前記デステ
ィネーションレジスタフィールドに接続され、前記依存
対象信号が出力されている場合に後続の命令のソースレ
ジスタ番号と前記デスティネーションレジスタフィール
ドに格納されているデスティネーションレジスタ番号を
比較してデータ依存を検出してデータ依存情報を出力
し、前記無効化回路は無効化フロービットと無効化要求
信号を入力とし、無効化要求信号によって無効化の要求
が与えられると、前記無効化フロービットと前記フロー
フィールドに格納されているフロービットを比較し、比
較結果に応じて前記エントリー有効ビットをリセットす
る。
【0019】
【作用】本発明の請求項1記載の構成により、データ依
存情報をデータ保持エントリーの依存情報フィールドに
保持し、結果のデータが得られると、データ格納ビット
によって依存情報フィールドが検索され、データ依存の
解消が検出され、次に実行可能な命令を高速に選択する
ことができる。
存情報をデータ保持エントリーの依存情報フィールドに
保持し、結果のデータが得られると、データ格納ビット
によって依存情報フィールドが検索され、データ依存の
解消が検出され、次に実行可能な命令を高速に選択する
ことができる。
【0020】また本発明の請求項3記載の構成により、
依存対象ビットによって依存検出の対象が指定でき、同
一のデスティネーションレジスタ番号が複数のデータ保
持エントリーに格納されていても複数の依存検出情報が
得られることなく、高速に依存検出ができる。
依存対象ビットによって依存検出の対象が指定でき、同
一のデスティネーションレジスタ番号が複数のデータ保
持エントリーに格納されていても複数の依存検出情報が
得られることなく、高速に依存検出ができる。
【0021】また本発明の請求項4記載の構成により、
フロービットによって複数のフローを区別して依存検出
ができ、また、分岐条件確定後、不要なフローを指定し
て無効化できるので、分岐条件確定前に分岐命令を越え
て命令を実行できる。
フロービットによって複数のフローを区別して依存検出
ができ、また、分岐条件確定後、不要なフローを指定し
て無効化できるので、分岐条件確定前に分岐命令を越え
て命令を実行できる。
【0022】
(実施例1)図1に本発明の情報処理装置の一実施例の
ブロック図を示す。図1において、1は命令保持装置、
2はデータ保持装置、3は命令選択装置、4は命令デコ
ーダである。5はレジスタファイルであり、データを格
納するレジスタを複数有する。6および7はともに実行
ユニットの演算器であり、それぞれ独立に、命令で指示
された演算を行なう。この例では毎サイクル2つの命令
が供給され、2つの演算器を用いて、命令がoutーo
fーorderで実行される。
ブロック図を示す。図1において、1は命令保持装置、
2はデータ保持装置、3は命令選択装置、4は命令デコ
ーダである。5はレジスタファイルであり、データを格
納するレジスタを複数有する。6および7はともに実行
ユニットの演算器であり、それぞれ独立に、命令で指示
された演算を行なう。この例では毎サイクル2つの命令
が供給され、2つの演算器を用いて、命令がoutーo
fーorderで実行される。
【0023】本実施例では、デコードされた命令が、以
前の命令の結果を必要とするために、すぐに実行できな
い場合でも、デコードした命令を命令保持装置1に格納
することによって、新たな命令のデコードを続け、デー
タ依存のためにすぐには実行できない命令の後の命令か
ら実行可能な命令を探して、outーofーorder
で実行することができる。
前の命令の結果を必要とするために、すぐに実行できな
い場合でも、デコードした命令を命令保持装置1に格納
することによって、新たな命令のデコードを続け、デー
タ依存のためにすぐには実行できない命令の後の命令か
ら実行可能な命令を探して、outーofーorder
で実行することができる。
【0024】命令保持装置1は、4つの命令保持エント
リーIB0〜IB3を持ち、各エントリーは命令デコー
ダ4によって命令をデコードして得られる制御情報を格
納する制御フィールド11、命令の実行に用いられる第
1および第2のソースレジスタ番号をそれぞれ格納する
第1および第2ソースレジスタフィールド12,13、
および、データ保持装置2内のエントリーのポインタを
格納するデータ保持エントリーポインタフィールド14
を有する。
リーIB0〜IB3を持ち、各エントリーは命令デコー
ダ4によって命令をデコードして得られる制御情報を格
納する制御フィールド11、命令の実行に用いられる第
1および第2のソースレジスタ番号をそれぞれ格納する
第1および第2ソースレジスタフィールド12,13、
および、データ保持装置2内のエントリーのポインタを
格納するデータ保持エントリーポインタフィールド14
を有する。
【0025】データ保持装置2は、6つのデータ保持エ
ントリーDB0〜DB5を有し、各エントリーは、命令
の実行結果のデータの格納先であるデスティネーション
レジスタの番号、データ依存情報、および実行結果のデ
ータをそれぞれ保持するデスティネーションレジスタフ
ィールド21、依存情報フィールド22、および、デー
タフィールド23を有する。
ントリーDB0〜DB5を有し、各エントリーは、命令
の実行結果のデータの格納先であるデスティネーション
レジスタの番号、データ依存情報、および実行結果のデ
ータをそれぞれ保持するデスティネーションレジスタフ
ィールド21、依存情報フィールド22、および、デー
タフィールド23を有する。
【0026】各データ保持エントリーDB0〜DB5
は、それぞれ依存検出器24を持つ。依存情報フィール
ド22は、命令保持装置1の各エントリーIB0〜IB
3にそれぞれ対応したデータ依存サブフィールドDEP
0〜DEP3からなる。
は、それぞれ依存検出器24を持つ。依存情報フィール
ド22は、命令保持装置1の各エントリーIB0〜IB
3にそれぞれ対応したデータ依存サブフィールドDEP
0〜DEP3からなる。
【0027】毎サイクル2つの命令が供給されるが、こ
こでは簡単のために、1つの命令について説明する。命
令が供給されると、命令デコーダ4によってデコードさ
れると同時に、命令の実行に必要な第1および第2のソ
ースレジスタの番号41、42がデータ保持装置2に与
えられる。各データ保持エントリーDB0〜DB5の依
存検出器24は、与えられた第1および第2のソースレ
ジスタ番号41、42とデスティネーションレジスタフ
ィールド21にすでに格納されているデスティネーショ
ンレジスタ番号を比較して、データ依存を調べ、データ
依存情報25を出力する。
こでは簡単のために、1つの命令について説明する。命
令が供給されると、命令デコーダ4によってデコードさ
れると同時に、命令の実行に必要な第1および第2のソ
ースレジスタの番号41、42がデータ保持装置2に与
えられる。各データ保持エントリーDB0〜DB5の依
存検出器24は、与えられた第1および第2のソースレ
ジスタ番号41、42とデスティネーションレジスタフ
ィールド21にすでに格納されているデスティネーショ
ンレジスタ番号を比較して、データ依存を調べ、データ
依存情報25を出力する。
【0028】命令デコーダ4によってデコードされた命
令は、第1および第2のソースレジスタ番号41、42
と共に命令保持装置1の4つの命令保持エントリーIB
0〜IB3の1つに格納されるが、同時に、データ依存
サブフィールドDEP0〜DEP3の一つに依存検出器
24が出力するデータ依存情報25を格納し、デスティ
ネーションレジスタ番号43を6つのデータ保持エント
リーDB0〜DB5の1つのデスティネーションレジス
タフィールド21に格納する。この時、データ依存情報
25が格納されるデータ依存サブフィールドはデコード
された命令が格納される命令保持エントリーに対応した
データ依存サブフィールドであり、書き込み信号32で
指定される。さらにそのデータ保持エントリーの番号
は、デコードした命令を格納する命令保持エントリーの
データ保持エントリーポインタフィールド14に格納さ
れる。データ依存情報25によって、データ依存がない
か、あるいはデータ依存があるが、すでにデータフィー
ルド23に結果のデータをもっている場合は、命令実行
可能信号31を出力し、対応する命令保持エントリーI
B0〜IB3の命令が実行可能であることを示す。この
実施例では、毎サイクル2つの命令が供給されるので、
上に示した処理が2つの命令に対して独立に行なわれ
る。この際、2つの命令の間のデータ依存は命令デコー
ダ4によって検出され、供給命令間依存信号44がデー
タ保持装置2に与えられ、対応するデータ保持エントリ
ーのデータ依存サブフィールドDEP0〜DEP3に格
納される。
令は、第1および第2のソースレジスタ番号41、42
と共に命令保持装置1の4つの命令保持エントリーIB
0〜IB3の1つに格納されるが、同時に、データ依存
サブフィールドDEP0〜DEP3の一つに依存検出器
24が出力するデータ依存情報25を格納し、デスティ
ネーションレジスタ番号43を6つのデータ保持エント
リーDB0〜DB5の1つのデスティネーションレジス
タフィールド21に格納する。この時、データ依存情報
25が格納されるデータ依存サブフィールドはデコード
された命令が格納される命令保持エントリーに対応した
データ依存サブフィールドであり、書き込み信号32で
指定される。さらにそのデータ保持エントリーの番号
は、デコードした命令を格納する命令保持エントリーの
データ保持エントリーポインタフィールド14に格納さ
れる。データ依存情報25によって、データ依存がない
か、あるいはデータ依存があるが、すでにデータフィー
ルド23に結果のデータをもっている場合は、命令実行
可能信号31を出力し、対応する命令保持エントリーI
B0〜IB3の命令が実行可能であることを示す。この
実施例では、毎サイクル2つの命令が供給されるので、
上に示した処理が2つの命令に対して独立に行なわれ
る。この際、2つの命令の間のデータ依存は命令デコー
ダ4によって検出され、供給命令間依存信号44がデー
タ保持装置2に与えられ、対応するデータ保持エントリ
ーのデータ依存サブフィールドDEP0〜DEP3に格
納される。
【0029】命令選択装置3は、データ保持装置2の各
データ依存サブフィールドDEP0〜DEP3から出力
される命令実行可能信号31から、実際に実行を開始す
る命令、ここでは演算器は2つであるので最大2つの命
令を選び、命令保持装置1から読みだす。同時に、読み
だした命令に対応するデータ保持装置2のデータ依存サ
ブフィールドDEP0〜DEP3にデータ読みだし信号
33を与える。データ保持装置2はデータ読みだし信号
33を与えられたデータ依存サブフィールドを検索し、
データ依存があったデータ保持エントリーを探しだし、
そのエントリーのデータフィールド23のデータを読み
だす。データと一緒にそのデータの有効性を示すデータ
有効信号26が出力される。データ保持装置2からのデ
ータの読み出しと並行して、命令保持装置1から読みだ
された第1および第2のソースレジスタフィールド1
2、13の値を用いてレジスタファイル5がアクセスさ
れ、データ有効信号26によってデータ保持装置2のデ
ータかまたはレジスタファイル5のデータが選択され、
2つの演算器6、7のいずれかに与えられ、対応する命
令保持エントリーの制御フィールド11から読みだされ
た制御情報で指定された演算を行なう。演算結果は、命
令保持装置1のデータ保持エントリーポインタフィール
ド14に格納されているポインタによって指定されるデ
ータ保持エントリーのデータフィールド23に格納され
る。結果のデータがデータ保持エントリーの1つに格納
されると、データ格納ビット27がセットされ、そのエ
ントリーの依存情報フィールド22が検索され、データ
依存があったデータ依存サブフィールドDEP0〜DE
P3を探しだし、依存が解けて実行可能になったことを
示す命令実行可能信号31を出力する。この信号をもと
に、命令選択装置3は次に実行する命令を選択する。結
果のデータの到着があらかじめわかる場合、すなわち、
命令の実行に要する時間があらかじめわかる場合は、結
果のデータが得られる前に、依存情報フィールド22の
検索を開始し、次に実行する命令の選択を素早く行なう
こともできる。
データ依存サブフィールドDEP0〜DEP3から出力
される命令実行可能信号31から、実際に実行を開始す
る命令、ここでは演算器は2つであるので最大2つの命
令を選び、命令保持装置1から読みだす。同時に、読み
だした命令に対応するデータ保持装置2のデータ依存サ
ブフィールドDEP0〜DEP3にデータ読みだし信号
33を与える。データ保持装置2はデータ読みだし信号
33を与えられたデータ依存サブフィールドを検索し、
データ依存があったデータ保持エントリーを探しだし、
そのエントリーのデータフィールド23のデータを読み
だす。データと一緒にそのデータの有効性を示すデータ
有効信号26が出力される。データ保持装置2からのデ
ータの読み出しと並行して、命令保持装置1から読みだ
された第1および第2のソースレジスタフィールド1
2、13の値を用いてレジスタファイル5がアクセスさ
れ、データ有効信号26によってデータ保持装置2のデ
ータかまたはレジスタファイル5のデータが選択され、
2つの演算器6、7のいずれかに与えられ、対応する命
令保持エントリーの制御フィールド11から読みだされ
た制御情報で指定された演算を行なう。演算結果は、命
令保持装置1のデータ保持エントリーポインタフィール
ド14に格納されているポインタによって指定されるデ
ータ保持エントリーのデータフィールド23に格納され
る。結果のデータがデータ保持エントリーの1つに格納
されると、データ格納ビット27がセットされ、そのエ
ントリーの依存情報フィールド22が検索され、データ
依存があったデータ依存サブフィールドDEP0〜DE
P3を探しだし、依存が解けて実行可能になったことを
示す命令実行可能信号31を出力する。この信号をもと
に、命令選択装置3は次に実行する命令を選択する。結
果のデータの到着があらかじめわかる場合、すなわち、
命令の実行に要する時間があらかじめわかる場合は、結
果のデータが得られる前に、依存情報フィールド22の
検索を開始し、次に実行する命令の選択を素早く行なう
こともできる。
【0030】図2〜図6に示す簡単な例を用いて説明す
る。この例ではデータ保持装置2はDB0〜DB5の6
エントリー、命令保持装置1はIB0〜IB3の4エン
トリである。データ保持装置2の各エントリのデータ依
存情報フィールドは命令保持装置1の各エントリに対応
するデータ依存サブフィールドDEP0〜3から構成さ
れる。
る。この例ではデータ保持装置2はDB0〜DB5の6
エントリー、命令保持装置1はIB0〜IB3の4エン
トリである。データ保持装置2の各エントリのデータ依
存情報フィールドは命令保持装置1の各エントリに対応
するデータ依存サブフィールドDEP0〜3から構成さ
れる。
【0031】まず、図2において、or命令とsub命
令が命令保持装置1の命令保持エントリーIB0とIB
1にそれぞれ格納され、実行が待たされている。or命
令の結果を格納すべきデータ保持装置2のエントリーは
DB2であり、IB0のデータ保持エントリーポインタ
フィールド14より指定される。DB2のデスティネー
ションレジスタフィールド21よりor命令のデスティ
ネーションレジスタはr3であることがわかる。同様に
sub命令の結果はDB3に格納され、デスティネーシ
ョンレジスタはr5である。
令が命令保持装置1の命令保持エントリーIB0とIB
1にそれぞれ格納され、実行が待たされている。or命
令の結果を格納すべきデータ保持装置2のエントリーは
DB2であり、IB0のデータ保持エントリーポインタ
フィールド14より指定される。DB2のデスティネー
ションレジスタフィールド21よりor命令のデスティ
ネーションレジスタはr3であることがわかる。同様に
sub命令の結果はDB3に格納され、デスティネーシ
ョンレジスタはr5である。
【0032】ここで新たな命令addが供給されたとす
る。add命令のソースレジスタはr3およびr5であ
り、デスティネーションレジスタはr5である。add
命令のソースレジスタ番号が格納される命令保持エント
リーはIB2であり、命令格納ポインタIPTRによっ
て指定される。add命令のデスティネーションレジス
タ番号が格納されるデータ保持エントリーはDB4であ
り、デスティネーション格納ポインタDPTRによって
指定される。命令格納ポインタIPTRおよびデスティ
ネーション格納ポインタDPTRは命令を格納した後、
自動的にインクリメントされ、次の命令のためのエント
リーを指す。
る。add命令のソースレジスタはr3およびr5であ
り、デスティネーションレジスタはr5である。add
命令のソースレジスタ番号が格納される命令保持エント
リーはIB2であり、命令格納ポインタIPTRによっ
て指定される。add命令のデスティネーションレジス
タ番号が格納されるデータ保持エントリーはDB4であ
り、デスティネーション格納ポインタDPTRによって
指定される。命令格納ポインタIPTRおよびデスティ
ネーション格納ポインタDPTRは命令を格納した後、
自動的にインクリメントされ、次の命令のためのエント
リーを指す。
【0033】データ依存を検出するために、add命令
のソースレジスタ番号r3およびr5がデータ保持装置
2の全エントリーのデスティネーションレジスタフィー
ルド21の比較器に与えられ、デスティネーションレジ
スタフィールドの内容と比較される(図3)。これによ
ってDB2とDB3に対してデータ依存があることがわ
かる。また、add命令はIB2に格納されるのでIB
2に対応するDEP2に、書き込み信号32によってデ
ータ依存情報が格納される。つまり、DB2のDEP2
に10、DB3のDEP2に01がセットされる。2ビ
ットのうち上位が第1、下位が第2のソースレジスタに
対する依存を表す。
のソースレジスタ番号r3およびr5がデータ保持装置
2の全エントリーのデスティネーションレジスタフィー
ルド21の比較器に与えられ、デスティネーションレジ
スタフィールドの内容と比較される(図3)。これによ
ってDB2とDB3に対してデータ依存があることがわ
かる。また、add命令はIB2に格納されるのでIB
2に対応するDEP2に、書き込み信号32によってデ
ータ依存情報が格納される。つまり、DB2のDEP2
に10、DB3のDEP2に01がセットされる。2ビ
ットのうち上位が第1、下位が第2のソースレジスタに
対する依存を表す。
【0034】次にadd命令のデスティネーションレジ
スタ番号r5がDB4のデスティネーションレジスタフ
ィールド21に格納され、add命令がIB2に格納さ
れる(図4)。このとき、IB2のデータ保持エントリ
ーポインタフィールド14には、デスティネーション格
納ポインタDPTRの値、即ち、デスティネーションレ
ジスタ番号を格納したデータ保持装置2のエントリーの
番号4が格納される。同時に、データ依存のためにad
d命令が実行できないことが命令選択装置3に知らされ
る。
スタ番号r5がDB4のデスティネーションレジスタフ
ィールド21に格納され、add命令がIB2に格納さ
れる(図4)。このとき、IB2のデータ保持エントリ
ーポインタフィールド14には、デスティネーション格
納ポインタDPTRの値、即ち、デスティネーションレ
ジスタ番号を格納したデータ保持装置2のエントリーの
番号4が格納される。同時に、データ依存のためにad
d命令が実行できないことが命令選択装置3に知らされ
る。
【0035】図5にデータ依存が解消される様子を示
す。命令保持装置1に格納されているor命令とsub
命令の実行が開始されると、データ保持エントリーポイ
ンタフィールド14によってDB2とDB3が選択さ
れ、データ格納ビット27がセットされる。データ格納
ビットがセットされるとそのエントリのデータ依存サブ
フィールドDEP0〜3が検索され、1がセットされて
いるDEP2が見つけられる。これによってDEP2の
依存が解消されたことが、命令実行可能信号31によっ
て命令実行制御部3へ知らされ、DEP2に対応するI
B2の命令が実行可能であることがわかる。DEP2以
外のデータ依存サブフィールドでも1がセットされてい
れば、同時に複数の命令が実行可能となる。
す。命令保持装置1に格納されているor命令とsub
命令の実行が開始されると、データ保持エントリーポイ
ンタフィールド14によってDB2とDB3が選択さ
れ、データ格納ビット27がセットされる。データ格納
ビットがセットされるとそのエントリのデータ依存サブ
フィールドDEP0〜3が検索され、1がセットされて
いるDEP2が見つけられる。これによってDEP2の
依存が解消されたことが、命令実行可能信号31によっ
て命令実行制御部3へ知らされ、DEP2に対応するI
B2の命令が実行可能であることがわかる。DEP2以
外のデータ依存サブフィールドでも1がセットされてい
れば、同時に複数の命令が実行可能となる。
【0036】IB2の命令addに必要なデータを読み
だすには、図6に示すようにデータ保持装置2のDEP
2にデータ読み出し信号33を与える。これによりデー
タ保持装置2の各エントリーのDEP2が検索され、1
がセットされているエントリーのデータフィールド23
のデータ、即ち、DB2のデータが演算器の第1入力デ
ータとして、DB3のデータが演算器の第2入力データ
として出力される。このときレジスタファイルの出力は
禁止される。もちろん、2つのデータのうち1つはデー
タ保持装置2から、他方はレジスタファイルから供給さ
れることもある。
だすには、図6に示すようにデータ保持装置2のDEP
2にデータ読み出し信号33を与える。これによりデー
タ保持装置2の各エントリーのDEP2が検索され、1
がセットされているエントリーのデータフィールド23
のデータ、即ち、DB2のデータが演算器の第1入力デ
ータとして、DB3のデータが演算器の第2入力データ
として出力される。このときレジスタファイルの出力は
禁止される。もちろん、2つのデータのうち1つはデー
タ保持装置2から、他方はレジスタファイルから供給さ
れることもある。
【0037】ここでは、命令保持装置のエントリー数を
データ保持装置のエントリー数より少なくしているが、
これは命令の実行を開始すると命令保持装置のエントリ
ーは次の命令のために使用可能となるのに対し、データ
保持装置のエントリーは結果のデータをレジスタファイ
ルへ格納するまで使われるためである。命令保持装置の
エントリー数とデータ保持装置のエントリー数を等しく
して、命令と結果のデータが格納されるエントリーの番
号を命令保持装置とデータ保持装置で同じにすることに
よって、命令保持装置のデータ保持エントリーポインタ
フィールドを不要とすることもできる。
データ保持装置のエントリー数より少なくしているが、
これは命令の実行を開始すると命令保持装置のエントリ
ーは次の命令のために使用可能となるのに対し、データ
保持装置のエントリーは結果のデータをレジスタファイ
ルへ格納するまで使われるためである。命令保持装置の
エントリー数とデータ保持装置のエントリー数を等しく
して、命令と結果のデータが格納されるエントリーの番
号を命令保持装置とデータ保持装置で同じにすることに
よって、命令保持装置のデータ保持エントリーポインタ
フィールドを不要とすることもできる。
【0038】なお、図2〜図6において、74はエント
リー有効ビットであり、データ保持エントリーの内容が
有効であることを示す。58は依存対象ビットであり、
第2の実施例において説明する。
リー有効ビットであり、データ保持エントリーの内容が
有効であることを示す。58は依存対象ビットであり、
第2の実施例において説明する。
【0039】このように、本実施例ではデータ依存の解
消を調べる場合、命令保持装置のデータ保持エントリー
ポインターフィールド14に格納されているポインタを
用いて、データ保持エントリーを指定し、その依存情報
サブフィールドを検索するだけで次に実行可能な命令を
探すことができ、従来例で示したようなタグの比較を必
要とせず、回路規模を小さくし、高速動作を実現するこ
とができる。さらに本実施例の構成では、実行待ちの命
令を一括して管理するので、実行可能になった時に空い
ている演算器を割り当てることができ、複数を演算器を
効率よく利用することができる。
消を調べる場合、命令保持装置のデータ保持エントリー
ポインターフィールド14に格納されているポインタを
用いて、データ保持エントリーを指定し、その依存情報
サブフィールドを検索するだけで次に実行可能な命令を
探すことができ、従来例で示したようなタグの比較を必
要とせず、回路規模を小さくし、高速動作を実現するこ
とができる。さらに本実施例の構成では、実行待ちの命
令を一括して管理するので、実行可能になった時に空い
ている演算器を割り当てることができ、複数を演算器を
効率よく利用することができる。
【0040】(実施例2) 図7に、本発明の情報処理装置の他の実施例のブロック
図を示す。図7において、51はレジスタファイル、5
2は演算器、53はデータ保持装置である。データ保持
装置53は複数のデータ保持エントリー54を持つ。各
データ保持エントリー54はデスティネーションレジス
タフィールド55、データフィールド56、依存検出器
57、依存対象ビット58および、比較器59を有す
る。図11に示す従来例との大きな違いは、依存対象ビ
ット58と比較器59を持つ点であり、同じ番号を付け
たものについては図11のものと同等であるので、ここ
では説明を省く。
図を示す。図7において、51はレジスタファイル、5
2は演算器、53はデータ保持装置である。データ保持
装置53は複数のデータ保持エントリー54を持つ。各
データ保持エントリー54はデスティネーションレジス
タフィールド55、データフィールド56、依存検出器
57、依存対象ビット58および、比較器59を有す
る。図11に示す従来例との大きな違いは、依存対象ビ
ット58と比較器59を持つ点であり、同じ番号を付け
たものについては図11のものと同等であるので、ここ
では説明を省く。
【0041】データ保持装置の複数のデータ保持エント
リー54のデスティネーションレジスタフィールド55
に同一のデスティネーションレジスタ番号が格納されて
いる場合、後続の命令とのデータ依存を調べる場合、同
一のデスティネーションレジスタ番号を持つ複数のデー
タ保持エントリーDB0〜5のうち、最後に登録された
データ保持エントリーに対してデータ依存検出を行なわ
なければならない。そのために、各データ保持エントリ
ー54は依存対象ビット58を持つ。この依存対象ビッ
ト58は、デスティネーションレジスタ番号62がデス
ティネーションレジスタフィールド55に登録されると
きにセットされる。次に、別のデータ保持エントリー5
4に同じデスティネーションレジスタ番号が登録される
場合、新たに入力されたデスティネーションレジスタ番
号62と既にデスティネーションレジスタフィールド5
5に格納されている値を比較器59を用いて比較し、一
致した場合、比較器が出力する一致信号63を用いて、
依存対象ビット58をリセットする。即ち、同一のデス
ティネーションレジスタ番号が複数のデータ保持エント
リー54に格納されている場合でも、最後に格納された
データ保持エントリー54の依存対象ビット58だけが
1に設定されている。この依存対象ビット58の値は依
存検出器57に与えられ、入力されたソースレジスタ番
号60および61とデスティネーションレジスタフィー
ルド55に格納されているデスティネーションレジスタ
番号が一致し、しかも依存対象ビット58がセットされ
ている場合のみ、依存検出器57はデータ依存があった
とみなし、データ依存情報64、65を出力する。
リー54のデスティネーションレジスタフィールド55
に同一のデスティネーションレジスタ番号が格納されて
いる場合、後続の命令とのデータ依存を調べる場合、同
一のデスティネーションレジスタ番号を持つ複数のデー
タ保持エントリーDB0〜5のうち、最後に登録された
データ保持エントリーに対してデータ依存検出を行なわ
なければならない。そのために、各データ保持エントリ
ー54は依存対象ビット58を持つ。この依存対象ビッ
ト58は、デスティネーションレジスタ番号62がデス
ティネーションレジスタフィールド55に登録されると
きにセットされる。次に、別のデータ保持エントリー5
4に同じデスティネーションレジスタ番号が登録される
場合、新たに入力されたデスティネーションレジスタ番
号62と既にデスティネーションレジスタフィールド5
5に格納されている値を比較器59を用いて比較し、一
致した場合、比較器が出力する一致信号63を用いて、
依存対象ビット58をリセットする。即ち、同一のデス
ティネーションレジスタ番号が複数のデータ保持エント
リー54に格納されている場合でも、最後に格納された
データ保持エントリー54の依存対象ビット58だけが
1に設定されている。この依存対象ビット58の値は依
存検出器57に与えられ、入力されたソースレジスタ番
号60および61とデスティネーションレジスタフィー
ルド55に格納されているデスティネーションレジスタ
番号が一致し、しかも依存対象ビット58がセットされ
ている場合のみ、依存検出器57はデータ依存があった
とみなし、データ依存情報64、65を出力する。
【0042】図4を用いて説明する。新しく与えられた
命令addのデスティネーションレジスタはr5であ
り、データ保持エントリーDB3に格納されているデス
ティネーションレジスタ番号に等しい。add命令のデ
スティネーションレジスタ番号r5をデータ保持装置2
に格納する時、データ保持装置2の全エントリーのデス
ティネーションレジスタフィールド21が検索され、一
致するデスティネーションレジスタ番号を持つエントリ
ーDB2の依存対象ビット58が0にリセットされる。
これにより、同じデスティネーションレジスタ番号r5
を持つ複数のエントリーのうち、最新のエントリーであ
るDB4の依存対象ビットだけが1にセットされてい
る。
命令addのデスティネーションレジスタはr5であ
り、データ保持エントリーDB3に格納されているデス
ティネーションレジスタ番号に等しい。add命令のデ
スティネーションレジスタ番号r5をデータ保持装置2
に格納する時、データ保持装置2の全エントリーのデス
ティネーションレジスタフィールド21が検索され、一
致するデスティネーションレジスタ番号を持つエントリ
ーDB2の依存対象ビット58が0にリセットされる。
これにより、同じデスティネーションレジスタ番号r5
を持つ複数のエントリーのうち、最新のエントリーであ
るDB4の依存対象ビットだけが1にセットされてい
る。
【0043】このように、同一のデスティネーションレ
ジスタ番号が複数のデータ保持エントリーに格納されて
いても、依存検出器は最新のデスティネーションレジス
タ番号に対してのみデータ依存を検出するので、複数の
データ依存情報から優先度をつけて選択する必要がな
く、高速にデータ依存の検出ができる。
ジスタ番号が複数のデータ保持エントリーに格納されて
いても、依存検出器は最新のデスティネーションレジス
タ番号に対してのみデータ依存を検出するので、複数の
データ依存情報から優先度をつけて選択する必要がな
く、高速にデータ依存の検出ができる。
【0044】(実施例3)図8に、本発明の情報処理装
置の他の実施例のブロック図を示す。図8において、7
1はデータ保持装置であり、複数のデータ保持エントリ
ー72を持つ。
置の他の実施例のブロック図を示す。図8において、7
1はデータ保持装置であり、複数のデータ保持エントリ
ー72を持つ。
【0045】データ保持エントリー71は、図11で示
したリオーダーバッファが持つデスティネーションレジ
スタフィールド55、データフィールド56、および依
存検出器57のほかにフローフィールド73、有効ビッ
ト74、フロー識別回路75、および、フロー無効化回
路76を持つ。フローフィールド73は3ビットのフロ
ービットを格納する。フロービットとは、対応する命令
がプログラムのどのフローのものであるかを示す。即
ち、分岐前のフロー、分岐先命令フロー(takenフ
ロー)、および、分岐条件が成立しなかった場合に実行
されるフロー(notーtakenフロー)などを区別
する。
したリオーダーバッファが持つデスティネーションレジ
スタフィールド55、データフィールド56、および依
存検出器57のほかにフローフィールド73、有効ビッ
ト74、フロー識別回路75、および、フロー無効化回
路76を持つ。フローフィールド73は3ビットのフロ
ービットを格納する。フロービットとは、対応する命令
がプログラムのどのフローのものであるかを示す。即
ち、分岐前のフロー、分岐先命令フロー(takenフ
ロー)、および、分岐条件が成立しなかった場合に実行
されるフロー(notーtakenフロー)などを区別
する。
【0046】図9に例を示す。100番地の命令add
のフローを分岐前のフローとみなして、フロービットを
001で表すとする。108番地の分岐命令beまでは
同じフローである。さらに、ここでは、遅延分岐が行な
われるとする。即ち、分岐先の命令を実行する前に分岐
命令の次の命令を実行する。従って、10c番地の命令
orも分岐条件によらず、必ず実行されるので分岐前の
フローとみなし、同じフロービットで表すことができ
る。分岐条件が成立した場合、200番地の命令sub
が実行される。この200番地以降の命令をtaken
フローとして、フロービットを100で表す。分岐条件
が成立しなかった場合、110番地以降の命令が実行さ
れるので、110番地以降の命令をnotーtaken
フローとして、フロービット010で表す。分岐条件が
確定すると、条件判定の結果に応じて、takenフロ
ーまたはnotーtakenフローが分岐の前のフロー
とみなされ、次に分岐命令が現われるまで同じフロービ
ットが命令に与えられる。例えば、分岐が成立した場
合、フロービット100が分岐前のフローを表し、次の
分岐命令に対し、notーtakenフローは001、
takenフローは010で表される。このように、分
岐命令前後のフローを3ビットのフロービットを用いて
区別することができる。
のフローを分岐前のフローとみなして、フロービットを
001で表すとする。108番地の分岐命令beまでは
同じフローである。さらに、ここでは、遅延分岐が行な
われるとする。即ち、分岐先の命令を実行する前に分岐
命令の次の命令を実行する。従って、10c番地の命令
orも分岐条件によらず、必ず実行されるので分岐前の
フローとみなし、同じフロービットで表すことができ
る。分岐条件が成立した場合、200番地の命令sub
が実行される。この200番地以降の命令をtaken
フローとして、フロービットを100で表す。分岐条件
が成立しなかった場合、110番地以降の命令が実行さ
れるので、110番地以降の命令をnotーtaken
フローとして、フロービット010で表す。分岐条件が
確定すると、条件判定の結果に応じて、takenフロ
ーまたはnotーtakenフローが分岐の前のフロー
とみなされ、次に分岐命令が現われるまで同じフロービ
ットが命令に与えられる。例えば、分岐が成立した場
合、フロービット100が分岐前のフローを表し、次の
分岐命令に対し、notーtakenフローは001、
takenフローは010で表される。このように、分
岐命令前後のフローを3ビットのフロービットを用いて
区別することができる。
【0047】このフロービットを用いることによって、
分岐条件の確定を待たずに、分岐命令を越えて、tak
enフローまたはnotーtakenフローの命令を実
行することができる。実行して得られたデータはデータ
保持装置のデータフィールド56に格納され、分岐条件
の確定を待つ。分岐条件が確定すると、データ保持装置
の中の不要になった命令、即ち、分岐条件が成立した場
合はnotーtakenフローの命令、分岐条件が不成
立の場合はtakenフローの命令が無効化される。
分岐条件の確定を待たずに、分岐命令を越えて、tak
enフローまたはnotーtakenフローの命令を実
行することができる。実行して得られたデータはデータ
保持装置のデータフィールド56に格納され、分岐条件
の確定を待つ。分岐条件が確定すると、データ保持装置
の中の不要になった命令、即ち、分岐条件が成立した場
合はnotーtakenフローの命令、分岐条件が不成
立の場合はtakenフローの命令が無効化される。
【0048】また、複数のフローの命令がデータ保持装
置に登録されている場合、新たに与えられた命令のソー
スレジスタ番号とのデータ依存関係を検出する場合、フ
ローの違いを識別して行なう必要がある。
置に登録されている場合、新たに与えられた命令のソー
スレジスタ番号とのデータ依存関係を検出する場合、フ
ローの違いを識別して行なう必要がある。
【0049】図8を用いて説明する。デスティネーショ
ンレジスタ番号62をデータ保持エントリー72のデス
ティネーションレジスタフィールド55に格納する場
合、その命令のフローに対応したフロービット77をフ
ローフィールド73に格納する。この時エントリー有効
ビット74がセットされる。次に、ソースレジスタ番号
60、61を与えてデータ依存を検出する場合、ソース
レジスタ番号60、61と一緒に、データ依存の対象と
なるフローを表すフロービット78を与える。例えば、
与えられたソースレジスタがtakenフローの命令の
ものである場合、データ依存の対象となるフローは、分
岐前のフローとtakenフローである。この場合、2
つのフローのフロービットの論理和である101がデー
タ依存用のフロービットとして与えられる。各データ保
持エントリー72のフロー識別回路75は与えられたフ
ロービット78とフローフィールド73に格納されてい
るフロービットを比較し、依存対象信号79を出力す
る。この場合、それぞれのビット毎に論理積が取られ、
いずれかのビットが1の場合に、そのデータ保持エント
リー72がデータ依存の対象になっていることがわか
る。依存対象信号79が依存検出器57に与えられ、デ
ータ依存の対象になっている場合のみ、データ依存情報
64、65を出力する。
ンレジスタ番号62をデータ保持エントリー72のデス
ティネーションレジスタフィールド55に格納する場
合、その命令のフローに対応したフロービット77をフ
ローフィールド73に格納する。この時エントリー有効
ビット74がセットされる。次に、ソースレジスタ番号
60、61を与えてデータ依存を検出する場合、ソース
レジスタ番号60、61と一緒に、データ依存の対象と
なるフローを表すフロービット78を与える。例えば、
与えられたソースレジスタがtakenフローの命令の
ものである場合、データ依存の対象となるフローは、分
岐前のフローとtakenフローである。この場合、2
つのフローのフロービットの論理和である101がデー
タ依存用のフロービットとして与えられる。各データ保
持エントリー72のフロー識別回路75は与えられたフ
ロービット78とフローフィールド73に格納されてい
るフロービットを比較し、依存対象信号79を出力す
る。この場合、それぞれのビット毎に論理積が取られ、
いずれかのビットが1の場合に、そのデータ保持エント
リー72がデータ依存の対象になっていることがわか
る。依存対象信号79が依存検出器57に与えられ、デ
ータ依存の対象になっている場合のみ、データ依存情報
64、65を出力する。
【0050】また、分岐条件確定前に実行され、結果の
データがデータ保持装置71に保持された命令が、分岐
条件確定によって不要になった場合、不要になったフロ
ーを示すフロービット80と無効化要求信号81が与え
られる。例えば、分岐条件判定の結果、分岐しないこと
がわかった場合、takenフローの命令が不要である
ので100のフロービットを与える。無効化のためのフ
ロービット80と無効化要求信号81は各データ保持エ
ントリー72のフロー無効化回路76に与えられる。フ
ロー無効化回路76は与えられたフロービット80とフ
ローフィールド73に格納されているフロービットを比
較して一致した場合、そのデータ保持エントリー72の
エントリー有効ビット74をリセットすることによって
無効化する。エントリー有効ビットがリセットされてい
るデータ保持エントリー72のデータフィールド56の
データはレジスタファイル51へ格納されない。
データがデータ保持装置71に保持された命令が、分岐
条件確定によって不要になった場合、不要になったフロ
ーを示すフロービット80と無効化要求信号81が与え
られる。例えば、分岐条件判定の結果、分岐しないこと
がわかった場合、takenフローの命令が不要である
ので100のフロービットを与える。無効化のためのフ
ロービット80と無効化要求信号81は各データ保持エ
ントリー72のフロー無効化回路76に与えられる。フ
ロー無効化回路76は与えられたフロービット80とフ
ローフィールド73に格納されているフロービットを比
較して一致した場合、そのデータ保持エントリー72の
エントリー有効ビット74をリセットすることによって
無効化する。エントリー有効ビットがリセットされてい
るデータ保持エントリー72のデータフィールド56の
データはレジスタファイル51へ格納されない。
【0051】ここでは、フロービットを3ビットとした
が、さらに多くのビットを用いて、複数の分岐命令を越
えたフローを区別し、分岐条件の確定を待たずに複数の
分岐命令を越えたout-of-order実行が可能である。
が、さらに多くのビットを用いて、複数の分岐命令を越
えたフローを区別し、分岐条件の確定を待たずに複数の
分岐命令を越えたout-of-order実行が可能である。
【0052】このように、分岐条件が確定する前でも、
分岐命令を越え、複数のフローの命令を実行することが
でき、分岐条件が確定しないために命令の処理が止まる
性能低下を少なくすることができる。
分岐命令を越え、複数のフローの命令を実行することが
でき、分岐条件が確定しないために命令の処理が止まる
性能低下を少なくすることができる。
【0053】また、条件分岐命令に対し、分岐するかど
うかを予測し、予測したフローの命令を実行し、予測が
外れた場合だけ予測したフローの命令を無効化する場
合、フロー識別回路を除いた構成で実現できる。
うかを予測し、予測したフローの命令を実行し、予測が
外れた場合だけ予測したフローの命令を無効化する場
合、フロー識別回路を除いた構成で実現できる。
【0054】ここでは、示していないが、命令フロー毎
の各データ保持エントリーに依存対象ビットを設ける事
によって、命令フロー毎に最新のデスティネーションレ
ジスタ番号に対してデータ依存の検出が行なえる。
の各データ保持エントリーに依存対象ビットを設ける事
によって、命令フロー毎に最新のデスティネーションレ
ジスタ番号に対してデータ依存の検出が行なえる。
【0055】図1、2、3で示した実施例では、実行ユ
ニットとして演算器を用いているが、ロード/ストア処
理装置や分岐処理装置なども実行ユニットとして適用で
きる。
ニットとして演算器を用いているが、ロード/ストア処
理装置や分岐処理装置なども実行ユニットとして適用で
きる。
【0056】
【発明の効果】以上述べてきたように、本発明の請求項
1によれば、データ保持エントリーの依存情報フィール
ドにデータ依存情報を保持し、データ保持エントリーの
データ格納ビットをセットして、依存情報フィールドを
検索することによってデータ依存の解消を検出し、次に
実行可能な命令を検出することができるので高速で、回
路規模を小さくすることができる。
1によれば、データ保持エントリーの依存情報フィール
ドにデータ依存情報を保持し、データ保持エントリーの
データ格納ビットをセットして、依存情報フィールドを
検索することによってデータ依存の解消を検出し、次に
実行可能な命令を検出することができるので高速で、回
路規模を小さくすることができる。
【0057】また、本発明の請求項3によれば、依存対
象ビットによって、データ依存検出の対象とすべき最新
のデータ保持エントリーが指定できるので、複数の依存
が検出されることがなく、同一のデスティネーションレ
ジスタ番号が複数のデータ保持エントリーに格納されて
いても、比較的少ない回路で高速に依存検出ができる。
象ビットによって、データ依存検出の対象とすべき最新
のデータ保持エントリーが指定できるので、複数の依存
が検出されることがなく、同一のデスティネーションレ
ジスタ番号が複数のデータ保持エントリーに格納されて
いても、比較的少ない回路で高速に依存検出ができる。
【0058】また、本発明の請求項4によれば、複数の
命令のフローを識別してデータ依存の検出をし、特定の
フローの命令を無効化することができるので、分岐条件
の確定を待たずに分岐命令を越えた命令の実行ができ、
性能の向上を図ることができる。このように、本発明は
実用的にきわめて有用である。
命令のフローを識別してデータ依存の検出をし、特定の
フローの命令を無効化することができるので、分岐条件
の確定を待たずに分岐命令を越えた命令の実行ができ、
性能の向上を図ることができる。このように、本発明は
実用的にきわめて有用である。
【図1】本発明の一実施例の情報処理装置のブロック図
【図2】同実施例の簡単な一部動作説明図
【図3】同実施例の簡単な一部動作説明図
【図4】同実施例の簡単な一部動作説明図
【図5】同実施例の簡単な一部動作説明図
【図6】同実施例の簡単な一部動作説明図
【図7】本発明の他の実施例の情報処理装置のブロック
図
図
【図8】本発明の他の実施例の情報処理装置のブロック
図
図
【図9】フロービットの例を示す図
【図10】リザベションステーションを用いた従来の情
報処理装置のブロック図
報処理装置のブロック図
【図11】リオーダーバッファを用いた従来の情報処理
装置のブロック図
装置のブロック図
【図12】優先度付き選択回路の構成図
1 命令保持装置 2、53、71 データ保持装置 3 命令選択装置 4 命令デコーダ 5、51、101 レジスタファイル 6、7、52、102 演算器 24、57 依存検出器 58 依存対象ビット 73 フローフィールド 27 データ格納ビット 75 フロー識別回路 21、55 デスティネーションレジスタフィールド 23、56 データフィールド 22 依存情報フィールド
Claims (4)
- 【請求項1】 データを格納するレジスタを複数有する
レジスタファイルと、複数のデータ保持エントリーを有
するデータ保持装置と、複数の命令保持エントリーを有
し、命令を一時的に保持する命令保持装置と、前記レジ
スタファイルまたは前記データ保持装置から読みだした
データを用いて、命令で指示された処理を行なって結果
のデータを出力する実行ユニットと、前記命令保持装置
に保持された命令から実行可能な命令を選択する命令選
択装置とを備え、 前記データ保持エントリーは前記実行ユニットの結果の
データを格納するデータフィールドと、デスティネーシ
ョンレジスタ番号を格納するデスティネーションレジス
タフィールドと、依存検出器と、依存情報フィールド
と、前記データフィールドへのデータの格納を示すデー
タ格納ビットを有し、 前記依存検出器は前記デスティネーションレジスタフィ
ールドに接続され、後続の命令のソースレジスタ番号と
前記デスティネーションレジスタフィールドに格納され
ているデスティネーションレジスタ番号を比較してデー
タ依存を検出してデータ依存情報を出力し、 前記依存情報フィールドは前記データ依存情報を保持
し、前記データ依存情報と前記データ格納ビットにより
命令実行可能信号を出力し、前記命令選択装置は前記命
令実行可能信号により、前記命令保持装置に格納されて
いる命令から実行可能命令を選択することを特徴とした
情報処理装置。 - 【請求項2】請求項1記載の依存情報フィールドは、前
記複数の命令保持エントリーのそれぞれに対応した複数
の依存情報サブフィールドからなり、前記データ依存情
報は該当する命令を保持する前記命令保持エントリーに
対応した前記依存情報サブフィールドに格納され、前記
依存情報サブフィールドは前記データ依存情報と前記デ
ータ格納ビットにより命令実行可能信号を出力する情報
処理装置。 - 【請求項3】 データを格納するレジスタを複数有する
レジスタファイルと、複数のデータ保持エントリーを有
するデータ保持装置と、前記レジスタファイルまたは前
記データ保持装置から読みだしたデータを用いて、命令
で指示された処理を行なって結果のデータを出力する実
行ユニットとを備え、 前記データ保持エントリーは前記実行ユニットの結果の
データを格納するデータフィールドと、デスティネーシ
ョンレジスタ番号を格納するデスティネーションレジス
タフィールドと、依存検出器と、依存対象ビットと、比
較器を有し、前記依存対象ビットは対応するデータ保持
エントリーの前記デスティネーションレジスタフィール
ドにデスティネーションレジスタ番号が格納されたとき
にセットされ、 前記比較器は前記デスティネーションレジスタフィール
ドに格納されているデスティネーションレジスタ番号と
後続の命令のデスティネーションレジスタ番号を比較し
て、一致する場合は一致信号を出力し、前記依存対象ビ
ットは前記一致信号によってリセットされ、前記依存検
出器は前記デスティネーションレジスタフィールドに接
続され、前記依存対象ビットがセットされている場合に
後続の命令のソースレジスタ番号と前記デスティネーシ
ョンレジスタフィールドに格納されているデスティネー
ションレジスタ番号を比較してデータ依存を検出してデ
ータ依存情報を出力することを特徴とした情報処理装
置。 - 【請求項4】データを格納するレジスタを複数有するレ
ジスタファイルと、複数のデータ保持エントリーを有す
るデータ保持装置と、前記レジスタファイルまたは前記
データ保持装置から読みだしたデータを用いて、命令で
指示された処理を行なって結果のデータを出力する実行
ユニットとを備え、 前記データ保持エントリーは前記実行ユニットの結果の
データを格納するデータフィールドと、デスティネーシ
ョンレジスタ番号を格納するデスティネーションレジス
タフィールドと、依存検出器と、エントリー有効ビット
と、フローフィールドと、フロー識別回路と、フロー無
効化回路を有し、前記エントリー有効ビットは前記デス
ティネーションレジスタフィールドにデスティネーショ
ンレジスタ番号が格納されるときにセットされ、前記フ
ローフィールドは命令のフローを識別するフロービット
を格納し、 前記フロー識別回路はデータ依存検出の対象となるフロ
ーを示すフロービットと前記フローフィールドに格納さ
れているフロービットを比較して依存対象信号を出力
し、前記依存検出器は前記デスティネーションレジスタ
フィールドに接続され、前記依存対象信号が出力されて
いる場合に後続の命令のソースレジスタ番号と前記デス
ティネーションレジスタフィールドに格納されているデ
スティネーションレジスタ番号を比較してデータ依存を
検出してデータ依存情報を出力し、 前記無効化回路は無効化フロービットと無効化要求信号
を入力とし、無効化要求信号によって無効化の要求が与
えられると、前記無効化フロービットと前記フローフィ
ールドに格納されているフロービットを比較し、比較結
果に応じて前記エントリー有効ビットをリセットするこ
とを特徴とした情報処理装置。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3310536A JPH0820949B2 (ja) | 1991-11-26 | 1991-11-26 | 情報処理装置 |
| US07/976,053 US5404470A (en) | 1991-11-26 | 1992-11-13 | Information processing apparatus for processing instructions by out-of-order execution |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3310536A JPH0820949B2 (ja) | 1991-11-26 | 1991-11-26 | 情報処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0619707A JPH0619707A (ja) | 1994-01-28 |
| JPH0820949B2 true JPH0820949B2 (ja) | 1996-03-04 |
Family
ID=18006420
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3310536A Expired - Fee Related JPH0820949B2 (ja) | 1991-11-26 | 1991-11-26 | 情報処理装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5404470A (ja) |
| JP (1) | JPH0820949B2 (ja) |
Families Citing this family (95)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100299691B1 (ko) | 1991-07-08 | 2001-11-22 | 구사마 사부로 | 확장가능알아이에스씨마이크로프로세서구조 |
| US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
| US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
| DE69311330T2 (de) * | 1992-03-31 | 1997-09-25 | Seiko Epson Corp., Tokio/Tokyo | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
| EP0638183B1 (en) | 1992-05-01 | 1997-03-05 | Seiko Epson Corporation | A system and method for retiring instructions in a superscalar microprocessor |
| US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
| WO1994016384A1 (en) | 1992-12-31 | 1994-07-21 | Seiko Epson Corporation | System and method for register renaming |
| JPH0793152A (ja) * | 1993-09-20 | 1995-04-07 | Fujitsu Ltd | マイクロプロセッサ制御装置 |
| US5761467A (en) * | 1993-09-28 | 1998-06-02 | Mitsubishi Denki Kabushiki Kaisha | System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field |
| US5548776A (en) * | 1993-09-30 | 1996-08-20 | Intel Corporation | N-wide bypass for data dependencies within register alias table |
| US5517651A (en) * | 1993-12-29 | 1996-05-14 | Intel Corporation | Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes |
| US5717882A (en) * | 1994-01-04 | 1998-02-10 | Intel Corporation | Method and apparatus for dispatching and executing a load operation to memory |
| US5809271A (en) * | 1994-03-01 | 1998-09-15 | Intel Corporation | Method and apparatus for changing flow of control in a processor |
| US5625788A (en) * | 1994-03-01 | 1997-04-29 | Intel Corporation | Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto |
| US5590352A (en) * | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
| US5649225A (en) * | 1994-06-01 | 1997-07-15 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
| US5559975A (en) | 1994-06-01 | 1996-09-24 | Advanced Micro Devices, Inc. | Program counter update mechanism |
| US5535346A (en) * | 1994-07-05 | 1996-07-09 | Motorola, Inc. | Data processor with future file with parallel update and method of operation |
| US5745726A (en) * | 1995-03-03 | 1998-04-28 | Fujitsu, Ltd | Method and apparatus for selecting the oldest queued instructions without data dependencies |
| US5822574A (en) * | 1995-04-12 | 1998-10-13 | Advanced Micro Devices, Inc. | Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same |
| US6038657A (en) * | 1995-10-06 | 2000-03-14 | Advanced Micro Devices, Inc. | Scan chains for out-of-order load/store execution control |
| US5835747A (en) * | 1996-01-26 | 1998-11-10 | Advanced Micro Devices, Inc. | Hierarchical scan logic for out-of-order load/store execution control |
| US5754812A (en) * | 1995-10-06 | 1998-05-19 | Advanced Micro Devices, Inc. | Out-of-order load/store execution control |
| US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
| US5838942A (en) * | 1996-03-01 | 1998-11-17 | Hewlett-Packard Company | Panic trap system and method |
| US5809275A (en) * | 1996-03-01 | 1998-09-15 | Hewlett-Packard Company | Store-to-load hazard resolution system and method for a processor that executes instructions out of order |
| US5799167A (en) * | 1996-05-15 | 1998-08-25 | Hewlett-Packard Company | Instruction nullification system and method for a processor that executes instructions out of order |
| JP2810033B2 (ja) * | 1996-07-08 | 1998-10-15 | 村越 弘昌 | 稼働管理システム及び稼働管理方法 |
| US5802386A (en) * | 1996-11-19 | 1998-09-01 | International Business Machines Corporation | Latency-based scheduling of instructions in a superscalar processor |
| US6243805B1 (en) * | 1998-08-11 | 2001-06-05 | Advanced Micro Devices, Inc. | Programming paradigm and microprocessor architecture for exact branch targeting |
| US6212623B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Universal dependency vector/queue entry |
| US6122727A (en) * | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
| EP1122639A3 (en) * | 1998-08-24 | 2002-02-13 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation and universal dependency vector/queue entry |
| US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
| US6289442B1 (en) * | 1998-10-05 | 2001-09-11 | Advanced Micro Devices, Inc. | Circuit and method for tagging and invalidating speculatively executed instructions |
| JP3475860B2 (ja) * | 1999-06-24 | 2003-12-10 | 日本電気株式会社 | 演算処理装置 |
| US6651161B1 (en) | 2000-01-03 | 2003-11-18 | Advanced Micro Devices, Inc. | Store load forward predictor untraining |
| US6622235B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Scheduler which retries load/store hit situations |
| US6622237B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
| US6542984B1 (en) | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
| US6564315B1 (en) | 2000-01-03 | 2003-05-13 | Advanced Micro Devices, Inc. | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction |
| US6694424B1 (en) | 2000-01-03 | 2004-02-17 | Advanced Micro Devices, Inc. | Store load forward predictor training |
| US7844799B2 (en) * | 2000-12-23 | 2010-11-30 | International Business Machines Corporation | Method and system for pipeline reduction |
| EP1217514A3 (en) * | 2000-12-23 | 2003-08-13 | International Business Machines Corporation | Method and apparatus for bypassing pipeline stages |
| US7237090B1 (en) | 2000-12-29 | 2007-06-26 | Mips Technologies, Inc. | Configurable out-of-order data transfer in a coprocessor interface |
| US7287147B1 (en) | 2000-12-29 | 2007-10-23 | Mips Technologies, Inc. | Configurable co-processor interface |
| US7168066B1 (en) * | 2001-04-30 | 2007-01-23 | Mips Technologies, Inc. | Tracing out-of order load data |
| US7134116B1 (en) | 2001-04-30 | 2006-11-07 | Mips Technologies, Inc. | External trace synchronization via periodic sampling |
| US7185234B1 (en) * | 2001-04-30 | 2007-02-27 | Mips Technologies, Inc. | Trace control from hardware and software |
| US7069544B1 (en) | 2001-04-30 | 2006-06-27 | Mips Technologies, Inc. | Dynamic selection of a compression algorithm for trace data |
| US7124072B1 (en) | 2001-04-30 | 2006-10-17 | Mips Technologies, Inc. | Program counter and data tracing from a multi-issue processor |
| US7181728B1 (en) | 2001-04-30 | 2007-02-20 | Mips Technologies, Inc. | User controlled trace records |
| US7178133B1 (en) | 2001-04-30 | 2007-02-13 | Mips Technologies, Inc. | Trace control based on a characteristic of a processor's operating state |
| US7065675B1 (en) | 2001-05-08 | 2006-06-20 | Mips Technologies, Inc. | System and method for speeding up EJTAG block data transfers |
| US7043668B1 (en) | 2001-06-29 | 2006-05-09 | Mips Technologies, Inc. | Optimized external trace formats |
| US7231551B1 (en) | 2001-06-29 | 2007-06-12 | Mips Technologies, Inc. | Distributed tap controller |
| US7398375B2 (en) * | 2002-04-04 | 2008-07-08 | The Regents Of The University Of Michigan | Technique for reduced-tag dynamic scheduling and reduced-tag prediction |
| US7159101B1 (en) | 2003-05-28 | 2007-01-02 | Mips Technologies, Inc. | System and method to trace high performance multi-issue processors |
| US7321964B2 (en) * | 2003-07-08 | 2008-01-22 | Advanced Micro Devices, Inc. | Store-to-load forwarding buffer using indexed lookup |
| EP1761844A2 (en) * | 2004-06-25 | 2007-03-14 | Koninklijke Philips Electronics N.V. | Instruction processing circuit |
| US7376817B2 (en) * | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
| US8078671B2 (en) * | 2005-09-21 | 2011-12-13 | Sap Ag | System and method for dynamic web services descriptor generation using templates |
| US8024425B2 (en) * | 2005-12-30 | 2011-09-20 | Sap Ag | Web services deployment |
| US8010695B2 (en) * | 2005-12-30 | 2011-08-30 | Sap Ag | Web services archive |
| EP2011018B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
| US7380104B2 (en) * | 2006-04-25 | 2008-05-27 | International Business Machines Corporation | Method and apparatus for back to back issue of dependent instructions in an out of order issue queue |
| CN107368285B (zh) | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
| JP4978332B2 (ja) * | 2007-06-22 | 2012-07-18 | 富士通株式会社 | 演算処置装置および電力制御方法 |
| EP3156896B1 (en) | 2010-09-17 | 2020-04-08 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
| CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
| CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
| KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
| CN107729267B (zh) | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
| US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
| WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
| KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
| US9128725B2 (en) | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
| US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
| US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
| WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
| WO2014150971A1 (en) * | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
| EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
| US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
| WO2014150991A1 (en) * | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
| US10275255B2 (en) * | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
| US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
| WO2014150806A1 (en) * | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
| US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
| US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
| US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
| US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
| EP2972794A4 (en) * | 2013-03-15 | 2017-05-03 | Soft Machines, Inc. | A method for executing blocks of instructions using a microprocessor architecture having a register view, source view, instruction view, and a plurality of register templates |
| US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
| US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
| US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4630195A (en) * | 1984-05-31 | 1986-12-16 | International Business Machines Corporation | Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage |
| JPH01213719A (ja) * | 1988-02-23 | 1989-08-28 | Fuji Xerox Co Ltd | パイプライン処理用データ組替装置 |
| US5201056A (en) * | 1990-05-02 | 1993-04-06 | Motorola, Inc. | RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output |
-
1991
- 1991-11-26 JP JP3310536A patent/JPH0820949B2/ja not_active Expired - Fee Related
-
1992
- 1992-11-13 US US07/976,053 patent/US5404470A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US5404470A (en) | 1995-04-04 |
| JPH0619707A (ja) | 1994-01-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0820949B2 (ja) | 情報処理装置 | |
| US6415380B1 (en) | Speculative execution of a load instruction by associating the load instruction with a previously executed store instruction | |
| US5625837A (en) | Processor architecture having out-of-order execution, speculative branching, and giving priority to instructions which affect a condition code | |
| TWI537824B (zh) | 零循環載入 | |
| US20080276072A1 (en) | System and Method for using a Local Condition Code Register for Accelerating Conditional Instruction Execution in a Pipeline Processor | |
| US20090006811A1 (en) | Method and System for Expanding a Conditional Instruction into a Unconditional Instruction and a Select Instruction | |
| JPH04275628A (ja) | 演算処理装置 | |
| EP0651331B1 (en) | A write buffer for a superpipelined, superscalar microprocessor | |
| CN117806706B (zh) | 存储顺序违例处理方法、装置、电子设备及介质 | |
| JP3518510B2 (ja) | リオーダバッファの管理方法及びプロセッサ | |
| JP2000322257A (ja) | 条件分岐命令の投機的実行制御方法 | |
| US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
| JPH09152973A (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
| US11055101B2 (en) | Processing apparatus and controlling method for processing apparatus | |
| US7240183B2 (en) | System and method for detecting instruction dependencies in multiple phases | |
| US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
| US10929137B2 (en) | Arithmetic processing device and control method for arithmetic processing device | |
| US12147707B2 (en) | Buffer circuitry for store to load forwarding | |
| KR20080065733A (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 | |
| US7065635B1 (en) | Method for handling condition code modifiers in an out-of-order multi-issue multi-stranded processor | |
| KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
| US11507377B2 (en) | Arithmetic processing circuit and arithmetic processing method | |
| JP2904624B2 (ja) | 並列演算処理装置 | |
| JP2001075803A (ja) | スーパースカラ型プロセッサにおけるリオーダーバッファ装置 | |
| KR20250135894A (ko) | 예측 스토어-투-로드 포워딩 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |