JPH0231419B2 - - Google Patents
Info
- Publication number
- JPH0231419B2 JPH0231419B2 JP61230238A JP23023886A JPH0231419B2 JP H0231419 B2 JPH0231419 B2 JP H0231419B2 JP 61230238 A JP61230238 A JP 61230238A JP 23023886 A JP23023886 A JP 23023886A JP H0231419 B2 JPH0231419 B2 JP H0231419B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- bht
- operand
- ddbt
- 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 - Lifetime
Links
- 230000009471 action Effects 0.000 claims description 37
- 230000001419 dependent effect Effects 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims 1
- 238000012360 testing method Methods 0.000 description 46
- 238000012937 correction Methods 0.000 description 15
- 238000000034 method Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000012536 storage buffer Substances 0.000 description 2
- 101100478363 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BER1 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 235000010354 butylated hydroxytoluene Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012216 screening 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
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
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
【発明の詳細な説明】
A 産業上の利用分野
本発明はデータ処理の分野におけるものであ
り、具体的には計算機における分岐命令の処理に
関するものである。
り、具体的には計算機における分岐命令の処理に
関するものである。
B 従来技術
高性能プロセツサでは、命令を、種々のステツ
プ処理装置により実行される幾つかのステツプに
分解することが常套手段である。そのような各装
置は連続した命令の特定のステツプをサイクル毎
に受入れる能力を有する。次の命令をそれぞれ1
サイクルずらして、命令をサイクル毎に実行する
際に連続するステツプをオーバラツプすることは
常套手段である。理想的には、これにより、たと
え所与の命令が完了するのに数サイクルを要する
としても、各サイクルで1つの命令を処理するこ
とが可能になる。
プ処理装置により実行される幾つかのステツプに
分解することが常套手段である。そのような各装
置は連続した命令の特定のステツプをサイクル毎
に受入れる能力を有する。次の命令をそれぞれ1
サイクルずらして、命令をサイクル毎に実行する
際に連続するステツプをオーバラツプすることは
常套手段である。理想的には、これにより、たと
え所与の命令が完了するのに数サイクルを要する
としても、各サイクルで1つの命令を処理するこ
とが可能になる。
この理想的なオーバラツプは幾つかの理由で常
に可能であるとは限らない。主な理由の1つは分
岐命令が頻繁に発生することである。これらは2
つの重要な属性を有する。すなわち、分岐は実行
されることもあれば、または実行されないことも
あり、このことは2つの命令のどちらが次に来る
かについての一時的な不確実さをもたらすこと
と、それが実行されたときは、次の命令は分岐に
おいて通常指定されるアドレスから得なければな
らないことである。
に可能であるとは限らない。主な理由の1つは分
岐命令が頻繁に発生することである。これらは2
つの重要な属性を有する。すなわち、分岐は実行
されることもあれば、または実行されないことも
あり、このことは2つの命令のどちらが次に来る
かについての一時的な不確実さをもたらすこと
と、それが実行されたときは、次の命令は分岐に
おいて通常指定されるアドレスから得なければな
らないことである。
分岐予測機構に関する幾つかの特許があり、そ
れぞれ長所と短所とを有している。例えば米国特
許第4370711号(特開昭57−76638号)はコンピユ
ータ・システムにおいて条件付き分岐命令の結果
を前もつて予測するための分岐予測機構を開示し
ている。このシステムの根拠となる原理は分岐命
令が一番最近に実行された命令と同じ方法で決定
されることが可能であるということである。
れぞれ長所と短所とを有している。例えば米国特
許第4370711号(特開昭57−76638号)はコンピユ
ータ・システムにおいて条件付き分岐命令の結果
を前もつて予測するための分岐予測機構を開示し
ている。このシステムの根拠となる原理は分岐命
令が一番最近に実行された命令と同じ方法で決定
されることが可能であるということである。
米国特許第4251864号は信号グループ記憶スペ
ースの境界と一致しない境界を有する信号グルー
プを処理するための分岐予測機構を開示してい
る。オペランド境界を含むワードが中央処理装置
に転送されるときは、オペランドでないデータも
このワードと共に転送される。境界ワード内に存
在するオペランドでないデータはオペランド信号
グループから除去され、中央処理装置に格納され
る。中央処理装置によるオペランドの処理の後、
オペランドでないデータは境界ワード内の前に占
めていた信号位置に再挿入され、処理を含むワー
ド・グループ、すなわち結果として生じたオペラ
ンドは初めに除去されたメモリ・ロケーシヨンに
格納される。
ースの境界と一致しない境界を有する信号グルー
プを処理するための分岐予測機構を開示してい
る。オペランド境界を含むワードが中央処理装置
に転送されるときは、オペランドでないデータも
このワードと共に転送される。境界ワード内に存
在するオペランドでないデータはオペランド信号
グループから除去され、中央処理装置に格納され
る。中央処理装置によるオペランドの処理の後、
オペランドでないデータは境界ワード内の前に占
めていた信号位置に再挿入され、処理を含むワー
ド・グループ、すなわち結果として生じたオペラ
ンドは初めに除去されたメモリ・ロケーシヨンに
格納される。
米国特許第3800291号(特公昭52−41131号)は
分岐命令が同じかまたは別のページにおける情報
のアドレスに分岐できる分岐予測機構である。分
岐命令は分岐アドレスが同じかまたは別のページ
における物理的アドレスであるのか、または別の
ページにおける仮想アドレスであるのかについて
の指針を含んでいる。
分岐命令が同じかまたは別のページにおける情報
のアドレスに分岐できる分岐予測機構である。分
岐命令は分岐アドレスが同じかまたは別のページ
における物理的アドレスであるのか、または別の
ページにおける仮想アドレスであるのかについて
の指針を含んでいる。
米国特許第4181942号(特公昭57−32814号)は
計算システムで使われる特別な分岐命令が内部レ
ジスタの状態により決定されるように条件付き分
岐として、または無条件分岐として働くプログラ
ム分岐方法及び装置を開示している。この特別な
分岐命令はプログラム・ループ内、またはその終
りにおいて条件付き分岐のために、またはそのよ
うなループの外側において無条件分岐のために用
いられる。
計算システムで使われる特別な分岐命令が内部レ
ジスタの状態により決定されるように条件付き分
岐として、または無条件分岐として働くプログラ
ム分岐方法及び装置を開示している。この特別な
分岐命令はプログラム・ループ内、またはその終
りにおいて条件付き分岐のために、またはそのよ
うなループの外側において無条件分岐のために用
いられる。
米国特許第332578号は制御記憶装置とそのアク
セス制御を効率的に用いる分岐予測機構を示して
いる。分岐を扱う簡単な方法は分岐が完全に終了
するまでオーバラツプを中止することであり、実
行されるか実行されないかが決定され、実行され
るときは、目標の命令がメモリから取り出され
る。しかし、この方法では1度の分岐毎に数サイ
クルが理想的なオーバラツプから失われてしま
う。別の方法は分岐の種類と、分岐が実行される
かどうかについての統計的経験とに基いて一定の
選択を行なうことである。選択が実行されないこ
とを示すと、オーバラツプは実際の結果を保留す
る条件付き基準で継続される。選択が誤りである
ことが明らかになつたときは、条件付きで開始さ
れた命令は放棄され、目標の命令が取り出され
る。条件付き命令に当てられたサイクルは目標を
取り出すためのサイクルと同様に失なわれる。し
かし、後者は分岐がデコードされる時点において
目標を予め取り出すことにより回避されることが
しばしばである。
セス制御を効率的に用いる分岐予測機構を示して
いる。分岐を扱う簡単な方法は分岐が完全に終了
するまでオーバラツプを中止することであり、実
行されるか実行されないかが決定され、実行され
るときは、目標の命令がメモリから取り出され
る。しかし、この方法では1度の分岐毎に数サイ
クルが理想的なオーバラツプから失われてしま
う。別の方法は分岐の種類と、分岐が実行される
かどうかについての統計的経験とに基いて一定の
選択を行なうことである。選択が実行されないこ
とを示すと、オーバラツプは実際の結果を保留す
る条件付き基準で継続される。選択が誤りである
ことが明らかになつたときは、条件付きで開始さ
れた命令は放棄され、目標の命令が取り出され
る。条件付き命令に当てられたサイクルは目標を
取り出すためのサイクルと同様に失なわれる。し
かし、後者は分岐がデコードされる時点において
目標を予め取り出すことにより回避されることが
しばしばである。
米国特許第4435758号はSIMD(単一命令ストリ
ーム、複数データ・ストリーム:Single
Instruction streem、Multiple Data streem)
に対するマツピング・プログラムを目標としてお
り、全てのプロセツサに渡るプログラムの正しく
かつ(できれば)効率的な動作を保証する。
SIMDプロセツサはそれぞれのデータ・ストリー
ム上の同じ命令シーケンスを並行して実行する多
くの同じプロセツサから成る。SIMDプロセツサ
はそれぞれの入力データ・ストリーム間に相互依
存性がないアプリケーシヨンに高い性能をもたら
す。
ーム、複数データ・ストリーム:Single
Instruction streem、Multiple Data streem)
に対するマツピング・プログラムを目標としてお
り、全てのプロセツサに渡るプログラムの正しく
かつ(できれば)効率的な動作を保証する。
SIMDプロセツサはそれぞれのデータ・ストリー
ム上の同じ命令シーケンスを並行して実行する多
くの同じプロセツサから成る。SIMDプロセツサ
はそれぞれの入力データ・ストリーム間に相互依
存性がないアプリケーシヨンに高い性能をもたら
す。
米国特許第4477872号(特開昭58−125148号)
は「デコード履歴テーブル」に関する。これは条
件付き分岐のアクシヨン(目標ではなく)を推定
するための機構を提供する。この発明は分岐アド
レスと、分岐がその直前の実行時に実行されたか
否かを示すためのビツトとから成るエントリを有
するテーブルを含む。条件付き分岐のデコード時
に、デコードされている分岐のアドレスを用い
て、テーブルが探索される。エントリがこのアド
レスのもとで見出されるときは、分岐が実行され
たか否かを推定するためエントリ内の履歴ビツト
が用いられる。この推定は分岐がその最後の実行
の際に行なつたのと同じアクシヨンを有するであ
ろうということである。
は「デコード履歴テーブル」に関する。これは条
件付き分岐のアクシヨン(目標ではなく)を推定
するための機構を提供する。この発明は分岐アド
レスと、分岐がその直前の実行時に実行されたか
否かを示すためのビツトとから成るエントリを有
するテーブルを含む。条件付き分岐のデコード時
に、デコードされている分岐のアドレスを用い
て、テーブルが探索される。エントリがこのアド
レスのもとで見出されるときは、分岐が実行され
たか否かを推定するためエントリ内の履歴ビツト
が用いられる。この推定は分岐がその最後の実行
の際に行なつたのと同じアクシヨンを有するであ
ろうということである。
「ページ繰り可能な分岐履歴テーブル
(Pageable Branch History)」と題する1985年
4月29日に出願された米国特許第728424号(特開
昭61−250738号)は分岐履歴テーブルを活性領域
とバツクアツプ領域の2つの部分に分割すること
により相当改良された分岐履歴テーブル(BHT)
に関する。活性領域はプロセツサが近い将来出会
う可能性のある少数の分岐に対するエントリを含
み、バツクアツプ領域はその他の全ての分岐エン
トリを含む。プロセツサがエントリを使うとき、
それに先立つてそれらのエントリをバツクアツプ
領域から活性領域に運ぶための手段が備えられて
いる。エントリがもはや必要とされないときは、
それらは活性領域から除去され、既にバツクアツ
プ領域にないときはバツクアツプ領域に入れられ
る。近い採来のための新しいエントリがもたらさ
れるので、活性領域は小さいとはいえ、プロセツ
サに必要となる分岐命令をほとんど常時含むこと
になる。大きさが小さいことにより、活性領域は
高速になり、この領域をプロセツサ・レイアウト
に最適に置くことが可能になる。バツクアツプ領
域はレイアウトの重要な部分の外に置かれ、した
がつて、標準のBHTにとつて実施可能なものよ
り大きくできる。
(Pageable Branch History)」と題する1985年
4月29日に出願された米国特許第728424号(特開
昭61−250738号)は分岐履歴テーブルを活性領域
とバツクアツプ領域の2つの部分に分割すること
により相当改良された分岐履歴テーブル(BHT)
に関する。活性領域はプロセツサが近い将来出会
う可能性のある少数の分岐に対するエントリを含
み、バツクアツプ領域はその他の全ての分岐エン
トリを含む。プロセツサがエントリを使うとき、
それに先立つてそれらのエントリをバツクアツプ
領域から活性領域に運ぶための手段が備えられて
いる。エントリがもはや必要とされないときは、
それらは活性領域から除去され、既にバツクアツ
プ領域にないときはバツクアツプ領域に入れられ
る。近い採来のための新しいエントリがもたらさ
れるので、活性領域は小さいとはいえ、プロセツ
サに必要となる分岐命令をほとんど常時含むこと
になる。大きさが小さいことにより、活性領域は
高速になり、この領域をプロセツサ・レイアウト
に最適に置くことが可能になる。バツクアツプ領
域はレイアウトの重要な部分の外に置かれ、した
がつて、標準のBHTにとつて実施可能なものよ
り大きくできる。
別の方法が米国特許第3559183号(特公昭50−
22384号)で実施されている。この発明は、分岐
を個々に考察すると、大部分が首尾一貫して実行
されるか実行されないかのいずれかであり、実行
されるときは首尾一貫した目標アドレスを有する
であろうという考えに基く。この方法では、実行
された分岐のテーブルが作られる。テーブル内の
各エントリは分岐の目標アドレスを伴つた実行さ
れた分岐のアドレスから成る。このテーブルはハ
ードウエア構成であり、したがつて典型的には
1024から4096のエントリの所定の大きさを有す
る。エントリは実行された分岐に出会つたとき
に、これらの分岐のみに対して作成される。テー
ブルが一杯のときは、新しいエントリの作成には
古いエントリの置換が必要である。このことはキ
ヤツシユにおけるようにLRU法(最も長い間使
用されなかつたエントリを置換する)に基いて達
成できる。
22384号)で実施されている。この発明は、分岐
を個々に考察すると、大部分が首尾一貫して実行
されるか実行されないかのいずれかであり、実行
されるときは首尾一貫した目標アドレスを有する
であろうという考えに基く。この方法では、実行
された分岐のテーブルが作られる。テーブル内の
各エントリは分岐の目標アドレスを伴つた実行さ
れた分岐のアドレスから成る。このテーブルはハ
ードウエア構成であり、したがつて典型的には
1024から4096のエントリの所定の大きさを有す
る。エントリは実行された分岐に出会つたとき
に、これらの分岐のみに対して作成される。テー
ブルが一杯のときは、新しいエントリの作成には
古いエントリの置換が必要である。このことはキ
ヤツシユにおけるようにLRU法(最も長い間使
用されなかつたエントリを置換する)に基いて達
成できる。
原則としては、実行されている命令のストリー
ムの各分岐はそのアドレスによりテーブルで探さ
れ、発見されたときは、その目標が取り出されて
ストリームでの次の命令になる。分岐がテーブル
にないときは、実行されなかつたものと推定され
る。テーブルに基く全てのアクシヨンは命令の実
行が進むにつれて検査される。テーブルが間違つ
ていることが発見されたときは、討正がなされ
る。実行されると推定された分岐が実行されなか
つたときは、そのテーブル・エントリは削除され
る。実行されないと推定された分岐が実行された
ときは新しいエントリがそれに対して作成され
る。推定された目標アドレスが間違つているとき
は、訂正されたアドレスが登録される。
ムの各分岐はそのアドレスによりテーブルで探さ
れ、発見されたときは、その目標が取り出されて
ストリームでの次の命令になる。分岐がテーブル
にないときは、実行されなかつたものと推定され
る。テーブルに基く全てのアクシヨンは命令の実
行が進むにつれて検査される。テーブルが間違つ
ていることが発見されたときは、討正がなされ
る。実行されると推定された分岐が実行されなか
つたときは、そのテーブル・エントリは削除され
る。実行されないと推定された分岐が実行された
ときは新しいエントリがそれに対して作成され
る。推定された目標アドレスが間違つているとき
は、訂正されたアドレスが登録される。
実際には、上述したことはわずかに修正され
る。目標が必要となる前に、または少くとも目標
が必要とされるとすぐに取り出すことができるよ
うに、実行された分岐を十分早期に見つけること
が望ましく、そうすれば、パイプラインに遅延は
発生しない。分岐が探し出されて確認された後で
のみテーブルがアクセスされるときは、この条件
は通常満たされない。したがつて、テーブルは通
常機械の命令取出しパケツトに基いて編成され、
アドレスされる。一般にこのパケツトは倍長語
(DW)である。実際の手順は次の通りである。
機械が倍長語を取り出してその命令バツフアに入
れるとき、DWアドレスもテーブルに供給され
る。エントリが存在するときは、キヤツシユの優
先権が許す限り速く目標(DW))が取り出され
る。次に、この目標DWがテーブルに供給され、
プロセスを継続する。
る。目標が必要となる前に、または少くとも目標
が必要とされるとすぐに取り出すことができるよ
うに、実行された分岐を十分早期に見つけること
が望ましく、そうすれば、パイプラインに遅延は
発生しない。分岐が探し出されて確認された後で
のみテーブルがアクセスされるときは、この条件
は通常満たされない。したがつて、テーブルは通
常機械の命令取出しパケツトに基いて編成され、
アドレスされる。一般にこのパケツトは倍長語
(DW)である。実際の手順は次の通りである。
機械が倍長語を取り出してその命令バツフアに入
れるとき、DWアドレスもテーブルに供給され
る。エントリが存在するときは、キヤツシユの優
先権が許す限り速く目標(DW))が取り出され
る。次に、この目標DWがテーブルに供給され、
プロセスを継続する。
C 発明が解決しようとする問題点
上述した従来技術は分岐履歴テーブル(BHT)
と呼ばれ、大部分の分岐をうまく処理するが、間
違つたときは数サイクル分のペナルテイが与えら
れる。テーブルの実際の大きさにとつて(例え
ば、256エントリまたはほぼ2Kバイト)、このペ
ナルテイはその使用からの利益をほとんど相殺す
る。もつて大きなテーブル(4Kエントリまたは
ほぼ32Kバイト)は間違つた予測の割合を、した
がつてペナルテイを減少させるが、問題はテーブ
ル・ハードウエアが機械の速度臨界的な命令取出
し及び準備領域に実装されねばならないことであ
る。この領域では、テーブル・ハードウエアを増
大させるよりも減少させることが重要である。何
故ならば、この領域に置かれねばならないハード
ウエアが多くなればなるほど、配線距離は長くな
り、さらにサイクル時間を決定する最長経路で勘
定に入れねばならない論理遅延の数が大きくな
る。これらはもちろんサイクル時間を長くし、長
いサイクル時間は常に機械速度を減少させるよう
に働く。BHTが備えていた2、3の編成上の改
良はそれらが引起すかも知れないサイクル時間の
増大のほとんどを相殺するのに全く十分である。
したがつて、臨界的な領域にそれ以上のハードウ
エアを置かない改良が求められる。
と呼ばれ、大部分の分岐をうまく処理するが、間
違つたときは数サイクル分のペナルテイが与えら
れる。テーブルの実際の大きさにとつて(例え
ば、256エントリまたはほぼ2Kバイト)、このペ
ナルテイはその使用からの利益をほとんど相殺す
る。もつて大きなテーブル(4Kエントリまたは
ほぼ32Kバイト)は間違つた予測の割合を、した
がつてペナルテイを減少させるが、問題はテーブ
ル・ハードウエアが機械の速度臨界的な命令取出
し及び準備領域に実装されねばならないことであ
る。この領域では、テーブル・ハードウエアを増
大させるよりも減少させることが重要である。何
故ならば、この領域に置かれねばならないハード
ウエアが多くなればなるほど、配線距離は長くな
り、さらにサイクル時間を決定する最長経路で勘
定に入れねばならない論理遅延の数が大きくな
る。これらはもちろんサイクル時間を長くし、長
いサイクル時間は常に機械速度を減少させるよう
に働く。BHTが備えていた2、3の編成上の改
良はそれらが引起すかも知れないサイクル時間の
増大のほとんどを相殺するのに全く十分である。
したがつて、臨界的な領域にそれ以上のハードウ
エアを置かない改良が求められる。
D 問題点を解決するための手段
本発明に従つて、分岐の結果を判定するためテ
ストされるオペランドに反応するデータ従属分岐
テーブル(DDBT)について説明する。DDBT
は分岐履歴テーブル(BHT)と共に動作し、さ
らに (1) つぎの(a)〜(e)からなる関連バイトの各々に対
するエントリを含み、 (a) 関連バイトのアドレス、 (b) アクシヨンがこのバイトにより決定される
分岐命令のアドレス、 (c) 分岐が実行されるときは分岐の目標アドレ
ス、 (d) 特定の分岐に対して分岐アクシヨンを決定
するための適切なバイトをテストするための
手段を指定するコード、 (e) 関連バイトの直前の事例に関連した分岐テ
ストの結果を指定するアクシヨン・ビツト、 (2) 各ストア・オペレーシヨンにより探索されて
(上記(a)に対する一致を介して)、記憶がテーブ
ル内のバイトの1つに対してなされているか否
かを判定し、さらに一致が見出されたときは、 (3) 記憶されているバイトの新しい事例と共に上
記(d)を用いることにより次の分岐の結果を発生
させることができ、さらにこの新しい結果と上
記(e)とを比較することにより、 (4) 上記(b)により指定された分岐の次の実行が行
なわれるのであれば、前の実行と同じアクシヨ
ンを有するか否かを判定することができ、行な
われないときは、 (5) 上記(b)及び(c)を用いてBHTにエントリを作
成するか、またはBHTからエントリを削除す
るので(どちらでも適切な方を)、次の分岐の
発生に際してBHTは正しい予測をなすことに
なる。
ストされるオペランドに反応するデータ従属分岐
テーブル(DDBT)について説明する。DDBT
は分岐履歴テーブル(BHT)と共に動作し、さ
らに (1) つぎの(a)〜(e)からなる関連バイトの各々に対
するエントリを含み、 (a) 関連バイトのアドレス、 (b) アクシヨンがこのバイトにより決定される
分岐命令のアドレス、 (c) 分岐が実行されるときは分岐の目標アドレ
ス、 (d) 特定の分岐に対して分岐アクシヨンを決定
するための適切なバイトをテストするための
手段を指定するコード、 (e) 関連バイトの直前の事例に関連した分岐テ
ストの結果を指定するアクシヨン・ビツト、 (2) 各ストア・オペレーシヨンにより探索されて
(上記(a)に対する一致を介して)、記憶がテーブ
ル内のバイトの1つに対してなされているか否
かを判定し、さらに一致が見出されたときは、 (3) 記憶されているバイトの新しい事例と共に上
記(d)を用いることにより次の分岐の結果を発生
させることができ、さらにこの新しい結果と上
記(e)とを比較することにより、 (4) 上記(b)により指定された分岐の次の実行が行
なわれるのであれば、前の実行と同じアクシヨ
ンを有するか否かを判定することができ、行な
われないときは、 (5) 上記(b)及び(c)を用いてBHTにエントリを作
成するか、またはBHTからエントリを削除す
るので(どちらでも適切な方を)、次の分岐の
発生に際してBHTは正しい予測をなすことに
なる。
E 実施例
本発明に従つて、分岐アクシヨンの結果を判定
するためテストされるオペランドに反応するデー
タ従属分岐テーブルについて説明する。データ従
属分岐テーブルは分岐履歴テーブルと共に動作し
て分岐履歴テーブルが誤つた予測を行なう場合を
予想し、実際の予測がなされる時に先立つて分岐
履歴テーブルを訂正する手段を備える。
するためテストされるオペランドに反応するデー
タ従属分岐テーブルについて説明する。データ従
属分岐テーブルは分岐履歴テーブルと共に動作し
て分岐履歴テーブルが誤つた予測を行なう場合を
予想し、実際の予測がなされる時に先立つて分岐
履歴テーブルを訂正する手段を備える。
以下実施例にそくして詳細に説明しよう。
分岐履歴テーブル(BHT)は任意の所与の分
岐により生じる結果がその分岐の現在の結果と同
じになるものと推定することにより分岐の結果を
予測するため用いられる。基本BHTは分岐命令
のアドレスと実行された全ての分岐に対する目標
命令とから成るエントリ対を包含する。したがつ
て、BHTの的中(ヒツト)には、この的中を生
じたアドレスは実行された分岐のアドレスである
という確信が暗に含まれている。
岐により生じる結果がその分岐の現在の結果と同
じになるものと推定することにより分岐の結果を
予測するため用いられる。基本BHTは分岐命令
のアドレスと実行された全ての分岐に対する目標
命令とから成るエントリ対を包含する。したがつ
て、BHTの的中(ヒツト)には、この的中を生
じたアドレスは実行された分岐のアドレスである
という確信が暗に含まれている。
多くの分岐は以後の実行に関するアクシヨンを
変更するので、この場合には新しい推定を反映す
るためBHTを更新する必要がある。実行される
ものと推定されながら実行されなかつた分岐に関
しては関連のエントリをBHTから除去している
べきであり、さらに的中しないで実行された命令
に関してはエントリをBHTに挿入していなけれ
ばならない。更新はこのような要請に応えるもの
である。
変更するので、この場合には新しい推定を反映す
るためBHTを更新する必要がある。実行される
ものと推定されながら実行されなかつた分岐に関
しては関連のエントリをBHTから除去している
べきであり、さらに的中しないで実行された命令
に関してはエントリをBHTに挿入していなけれ
ばならない。更新はこのような要請に応えるもの
である。
アクシヨンを変更する分岐は全て条件付き分岐
であり、条件コードを設定するため用いられるデ
ータが変るとアクシヨンが変更させられる。本発
明に従つて、関連するデータに対してなされる記
憶を監視し、そのような記憶が従属分岐にアクシ
ヨンを変更させる場合にBHTを更新するデータ
従属分岐テーブル(DDBT)について説明する。
であり、条件コードを設定するため用いられるデ
ータが変るとアクシヨンが変更させられる。本発
明に従つて、関連するデータに対してなされる記
憶を監視し、そのような記憶が従属分岐にアクシ
ヨンを変更させる場合にBHTを更新するデータ
従属分岐テーブル(DDBT)について説明する。
分岐の推定が間違つた場合にBHTを更新する
ため用いられる機構を介してBHTにゆるやかに
結合された特定の構成例について以下に説明す
る。したがつて、BHTの再構成を何ら行うこと
なく、さらに既存の制御回路がどのようなもので
あれ最小限度の変更を加えるだけで、この特定の
構成例を標準のBHTに付加できる。
ため用いられる機構を介してBHTにゆるやかに
結合された特定の構成例について以下に説明す
る。したがつて、BHTの再構成を何ら行うこと
なく、さらに既存の制御回路がどのようなもので
あれ最小限度の変更を加えるだけで、この特定の
構成例を標準のBHTに付加できる。
説明を明瞭にするため、可能なBHT更新体系
について最初に説明する。次に、DDBTを更新
ハードウエアを介してBHTに結合する方法を含
めてDDBTについて説明する。最後に、エント
リをDDBTに挿入したり、DDBTから削除する
方法を示す。
について最初に説明する。次に、DDBTを更新
ハードウエアを介してBHTに結合する方法を含
めてDDBTについて説明する。最後に、エント
リをDDBTに挿入したり、DDBTから削除する
方法を示す。
第1図はBHT更新ハードウエアの1つの構成
例を示す。BHT2が的中したときは、線6及び
8を介して分岐アドレス(BA)と目標アドレス
(TA)をそれぞれメモリ・キヤツシユ兼CPU4
に送るので、分岐が取出された後で命令の取出し
を再度指示できる。BA、TA対はまたそれぞれ
線12及び14を介して分岐アクテイブ待ち行列
(BAQ)10に与えられる。BAQ10はエン
ド・オブ・オペレーシヨンによつて未だ確認され
ていないBHTの全ての的中に対するBA、TA対
を含む。なお、エンド・オブ・オペレーシヨンは
命令が何ら問題をともなうことなく実行されたと
きに行なわれるサイクルのことである。BAQ1
0は2つの目的のため働く。すなわち、待ち行列
内のエントリはメモリ・キヤツシユ兼CPU4に
備えられた命令バツフアからの命令を位置合わせ
しかつ選択するため用いられ、さらに待ち行列内
のエントリは、BHT2が更新される必要がある
か否かを評価するためエンド・オブ・オペレーシ
ヨンを行なう分岐と、比較される。
例を示す。BHT2が的中したときは、線6及び
8を介して分岐アドレス(BA)と目標アドレス
(TA)をそれぞれメモリ・キヤツシユ兼CPU4
に送るので、分岐が取出された後で命令の取出し
を再度指示できる。BA、TA対はまたそれぞれ
線12及び14を介して分岐アクテイブ待ち行列
(BAQ)10に与えられる。BAQ10はエン
ド・オブ・オペレーシヨンによつて未だ確認され
ていないBHTの全ての的中に対するBA、TA対
を含む。なお、エンド・オブ・オペレーシヨンは
命令が何ら問題をともなうことなく実行されたと
きに行なわれるサイクルのことである。BAQ1
0は2つの目的のため働く。すなわち、待ち行列
内のエントリはメモリ・キヤツシユ兼CPU4に
備えられた命令バツフアからの命令を位置合わせ
しかつ選択するため用いられ、さらに待ち行列内
のエントリは、BHT2が更新される必要がある
か否かを評価するためエンド・オブ・オペレーシ
ヨンを行なう分岐と、比較される。
メモリ・キヤツシユ兼CPU4で分岐のエン
ド・オブ・オペレーシヨンが行なわれる時点にお
いて、分岐に対する分岐アドレス(BA)及び目
標アドレス(TA)は、分岐が実行されたかどう
かを指定するACTIONビツトと共に、それぞれ
線18,20及び22を介して分岐エンド・オ
ブ・オペレーシヨン・レジスタ(BER)16に
与えられる。実行された分岐は全てレジスタ16
を通過し、さらに実行されると推定される命令の
みBAQ10を通過するので、問題となつている
分岐が実行されると推定されたときは、BER1
6からのBAエントリはBAQ10からのBAエン
トリと比較したとき等しくなるだけである。この
比較は比較器24により行なわれ、比較器24は
線26上のトツプ・オブ・スタツク(TOS)・エ
ントリを線28上のBERエントリと比較する。
比較の結果等しいときは、「実行される」ことを
推定するアクシヨンを検証するためBER16か
らの線30上のACTIONビツトが用いられる。
実行されるものと推定され、かつ実行された分岐
について、BAQ10からの線34上のTAと
BER16からの線36上のTAとを比較すること
によりBHT2が正しい目標をも推定したかどう
か判定するため、目標アドレスが比較器32によ
りテストされる。
ド・オブ・オペレーシヨンが行なわれる時点にお
いて、分岐に対する分岐アドレス(BA)及び目
標アドレス(TA)は、分岐が実行されたかどう
かを指定するACTIONビツトと共に、それぞれ
線18,20及び22を介して分岐エンド・オ
ブ・オペレーシヨン・レジスタ(BER)16に
与えられる。実行された分岐は全てレジスタ16
を通過し、さらに実行されると推定される命令の
みBAQ10を通過するので、問題となつている
分岐が実行されると推定されたときは、BER1
6からのBAエントリはBAQ10からのBAエン
トリと比較したとき等しくなるだけである。この
比較は比較器24により行なわれ、比較器24は
線26上のトツプ・オブ・スタツク(TOS)・エ
ントリを線28上のBERエントリと比較する。
比較の結果等しいときは、「実行される」ことを
推定するアクシヨンを検証するためBER16か
らの線30上のACTIONビツトが用いられる。
実行されるものと推定され、かつ実行された分岐
について、BAQ10からの線34上のTAと
BER16からの線36上のTAとを比較すること
によりBHT2が正しい目標をも推定したかどう
か判定するため、目標アドレスが比較器32によ
りテストされる。
デコーダ38は比較器24及び32による2つ
の比較の結果と共にBER16からの線30上の
ACTIONビツトを受取り、重要な4つの条件を
決定する。OR回路40によりテストされる際に
BAQ10のBAがBERのBAに等しいときはいつ
でも、BAQのトツプ・オブ・スタツクを廃棄す
ることができる。すなわちエントリは、実行され
るものと推定され、かつ、エンド・オブ・オペレ
ーシヨンの行なわれた分岐に対応する。しかし、
対応する分岐が実行されなかつたときは、BHT
エントリは線42上にも示すように削除されねば
ならず、または対応する分岐が違う目標に対して
実行されたときは、BHTは線44上に示すよう
に正しい目標アドレスを反映するため修正されね
ばならない。BAQ10のBAがBER16のBAに
等しくないときは、このことはBHTの不的中
(ミス)に該当する。分岐が実行されたときは、
線46上に示すように新しいエントリをBHTに
挿入しなければならない。
の比較の結果と共にBER16からの線30上の
ACTIONビツトを受取り、重要な4つの条件を
決定する。OR回路40によりテストされる際に
BAQ10のBAがBERのBAに等しいときはいつ
でも、BAQのトツプ・オブ・スタツクを廃棄す
ることができる。すなわちエントリは、実行され
るものと推定され、かつ、エンド・オブ・オペレ
ーシヨンの行なわれた分岐に対応する。しかし、
対応する分岐が実行されなかつたときは、BHT
エントリは線42上にも示すように削除されねば
ならず、または対応する分岐が違う目標に対して
実行されたときは、BHTは線44上に示すよう
に正しい目標アドレスを反映するため修正されね
ばならない。BAQ10のBAがBER16のBAに
等しくないときは、このことはBHTの不的中
(ミス)に該当する。分岐が実行されたときは、
線46上に示すように新しいエントリをBHTに
挿入しなければならない。
OR回路48はBHTへのエントリの挿入、
BHTからのエントリの削除、またはBHT内に存
在するエントリに対する修正を必要とするそれぞ
れの場合を示す。OR回路はなされるべきネツト
ワーク58内の適切な訂正のコード化と共に、そ
れぞれ線50及び52上のBER16からのBA、
TA対が線54上のORゲート48の出力により
BHT訂正待ち行列(BCQ)56へ送られるよう
にする。BCQ56内のエントリはBHT2に対し
てなされなければならない未実行の更新に対応す
る。訂正制御回路60がこれらの更新を行ない、
それによりBCQ56内のエントリを廃棄し、線
62を介してBHT2を更新する。
BHTからのエントリの削除、またはBHT内に存
在するエントリに対する修正を必要とするそれぞ
れの場合を示す。OR回路はなされるべきネツト
ワーク58内の適切な訂正のコード化と共に、そ
れぞれ線50及び52上のBER16からのBA、
TA対が線54上のORゲート48の出力により
BHT訂正待ち行列(BCQ)56へ送られるよう
にする。BCQ56内のエントリはBHT2に対し
てなされなければならない未実行の更新に対応す
る。訂正制御回路60がこれらの更新を行ない、
それによりBCQ56内のエントリを廃棄し、線
62を介してBHT2を更新する。
すなわち、BHTの更新が行われるのは、BCQ
にエントリがなされBHTの内容に書きかえの必
要性が認められたときである。BCQにエントリ
がされるのはDDBTにより、分岐を決定するテ
スト・オペランドが変更されたとの判断がなされ
BHTの訂正の必要性が指示された場合である。
各図を使用した詳細な説明の前に、その要約をこ
こで記載する。BHT(第1図、2)は訂正制御回
路(第1図、60)の指示に従つてその内容を書
きかえる。訂正制御回路へはBHT訂正待行列
(第1図、第4図、56)にエントリされたもの
について転送が行なわれる。BHT訂正待行列に
エントリさせるのはBHT更新待行列(第3図、
第4図、138)である。このBHT更新待行列
はDDBTのオペランド・テストにより発生する。
これは後で第2A、B図、第3図によつて説明さ
れるが、ここで簡単に要約する。処理されるべき
オペランドが候補オペランド待行列(第2A図、
66)にエントリされるこれがDDBT64に書
きこまれたオペランドと比較され一致するものが
あるかが、第2図にしたがつて比較される。一致
すると保留テスト待行列(第2B図、第3図、1
02)としてエントリされ、これについて、第3
図の過程にしたがつて分岐の発生の有無がテスト
されることとなる。この第3図のテストによつて
前述したBHT更新待行列にエントリがされるこ
ととなる。以下、各図にしたがつて説明する。
にエントリがなされBHTの内容に書きかえの必
要性が認められたときである。BCQにエントリ
がされるのはDDBTにより、分岐を決定するテ
スト・オペランドが変更されたとの判断がなされ
BHTの訂正の必要性が指示された場合である。
各図を使用した詳細な説明の前に、その要約をこ
こで記載する。BHT(第1図、2)は訂正制御回
路(第1図、60)の指示に従つてその内容を書
きかえる。訂正制御回路へはBHT訂正待行列
(第1図、第4図、56)にエントリされたもの
について転送が行なわれる。BHT訂正待行列に
エントリさせるのはBHT更新待行列(第3図、
第4図、138)である。このBHT更新待行列
はDDBTのオペランド・テストにより発生する。
これは後で第2A、B図、第3図によつて説明さ
れるが、ここで簡単に要約する。処理されるべき
オペランドが候補オペランド待行列(第2A図、
66)にエントリされるこれがDDBT64に書
きこまれたオペランドと比較され一致するものが
あるかが、第2図にしたがつて比較される。一致
すると保留テスト待行列(第2B図、第3図、1
02)としてエントリされ、これについて、第3
図の過程にしたがつて分岐の発生の有無がテスト
されることとなる。この第3図のテストによつて
前述したBHT更新待行列にエントリがされるこ
ととなる。以下、各図にしたがつて説明する。
データ従属分岐テーブル(DDBT)64は
各々6個のフイールドから成るエントリのテーブ
ルである。これらのエントリはBHT2内のエン
トリのサブセツトに関連しており、分岐を決定す
るテスト・オペランドが変更される場合にBHT
2を更新するため用いられる。各エントリ内のフ
イールドは次の通りである。
各々6個のフイールドから成るエントリのテーブ
ルである。これらのエントリはBHT2内のエン
トリのサブセツトに関連しており、分岐を決定す
るテスト・オペランドが変更される場合にBHT
2を更新するため用いられる。各エントリ内のフ
イールドは次の通りである。
(1) OADDR:テストされるオペランドのアドレ
ス。
ス。
(2) BADDR:OADDRにより指定されたオペラ
ンドに従属する分岐のアドレス。
ンドに従属する分岐のアドレス。
(3) TADDR:BADDRにより指指定された分岐
命令に対する目標のアドレス。
命令に対する目標のアドレス。
(4) TEST:OADDRにより指定されたオペラン
ドがテストされてBADDRにより指定された分
岐の結果を判定する方法を指定するコード。
ドがテストされてBADDRにより指定された分
岐の結果を判定する方法を指定するコード。
(5) ACTION:BADDRにより指定された分岐
がその直前の実行で実行されたか否かを指定す
るビツト。
がその直前の実行で実行されたか否かを指定す
るビツト。
(6) V:エントリが空白エントリでないことを示
す妥当性ビツト。
す妥当性ビツト。
テーブルは任意の適正な方法で編成できる。本
書で指定された方法は単に例示のため選ばれたに
すぎず、いずれにしても本発明の範囲を限定する
ものではない。
書で指定された方法は単に例示のため選ばれたに
すぎず、いずれにしても本発明の範囲を限定する
ものではない。
説明のため、考慮するオペランド・テストの種
類を条件コードを設定する記憶及び即値(SI)書
式の命令、すなわち、TM、CLI、NI、OI及び
XIに限定する。この場合も、この限定は説明を
簡単にするため選ばれたものであり、本発明の応
用の範囲を決して限定するものではないことを指
適しておく。これらの命令は記憶域における単一
バイトのオペランドをテストし、DDBTはこれ
らのバイトに対するエントリを含む。エントリが
保留中の記憶バツフアから解放されるときはいつ
でも、DDBTを探索して記憶されているオペラ
ンドがテスト・バイトであるかどうか知るためこ
のエントリのアドレスが用いられる。それに該当
する場合は、記憶されているバイトは上記TEST
により指定された方法でテストされ、BHTがこ
のバイトに基いた結果的な分岐アクシヨンを予想
して更新されるべきかどうかを決定する。
類を条件コードを設定する記憶及び即値(SI)書
式の命令、すなわち、TM、CLI、NI、OI及び
XIに限定する。この場合も、この限定は説明を
簡単にするため選ばれたものであり、本発明の応
用の範囲を決して限定するものではないことを指
適しておく。これらの命令は記憶域における単一
バイトのオペランドをテストし、DDBTはこれ
らのバイトに対するエントリを含む。エントリが
保留中の記憶バツフアから解放されるときはいつ
でも、DDBTを探索して記憶されているオペラ
ンドがテスト・バイトであるかどうか知るためこ
のエントリのアドレスが用いられる。それに該当
する場合は、記憶されているバイトは上記TEST
により指定された方法でテストされ、BHTがこ
のバイトに基いた結果的な分岐アクシヨンを予想
して更新されるべきかどうかを決定する。
すなわち、特定の分岐命令が発生する条件を持
つたオペランドがメモリに書きこまれたことを検
知して、このオペランドによつて分岐が発生する
か否かがテストされ、分岐が発生する場合には、
これが分岐履歴テーブル中のものと一致するかど
うかを確認して、もしこれが不一致の場合にはこ
れを分岐履歴テーブルに書き込む動作を行う。こ
の動作を第2図によつて、以下説明する。
つたオペランドがメモリに書きこまれたことを検
知して、このオペランドによつて分岐が発生する
か否かがテストされ、分岐が発生する場合には、
これが分岐履歴テーブル中のものと一致するかど
うかを確認して、もしこれが不一致の場合にはこ
れを分岐履歴テーブルに書き込む動作を行う。こ
の動作を第2図によつて、以下説明する。
第2図はDDBT64と、テストのためオペラ
ンドを用意する方法を示す。記憶要求が保留中の
記憶バツフア(図示せず)から解放されると、候
補オペランド待ち行列(COQ)66に置かれる。
COQ66はDDBT64に特有なものであり、
DDBTにあるオペランドを保持するための一時
的バツフアとして働く。DDBT64は32×4の
セツト・アソシアテイブ型テーブルとして編成さ
れた128個のエントリを有するものとして示す。
COQ66からのオペランド・アドレスの下位5
ビツトは各組(各セツト)からのエントリを読取
るため用いられる。特定のオペランドがどのよう
であつても2つ以上の分岐に影響を与えることが
できるので、所与のオペランドに対して複数のエ
ントリがあり得る。このことを考慮して、ハーフ
ワード・アドレスBADDR(ビツト21及び22)の
下位2ビツトは第3図及び第6図にさらに詳細に
示すように組を決定するため用いられる。この特
定の編成はDDBTデイレクトリを必要としない
とはいえ、可能な代替案はLRU法に従つた置換
を可能にするこの体系上の1つの変形である。
ンドを用意する方法を示す。記憶要求が保留中の
記憶バツフア(図示せず)から解放されると、候
補オペランド待ち行列(COQ)66に置かれる。
COQ66はDDBT64に特有なものであり、
DDBTにあるオペランドを保持するための一時
的バツフアとして働く。DDBT64は32×4の
セツト・アソシアテイブ型テーブルとして編成さ
れた128個のエントリを有するものとして示す。
COQ66からのオペランド・アドレスの下位5
ビツトは各組(各セツト)からのエントリを読取
るため用いられる。特定のオペランドがどのよう
であつても2つ以上の分岐に影響を与えることが
できるので、所与のオペランドに対して複数のエ
ントリがあり得る。このことを考慮して、ハーフ
ワード・アドレスBADDR(ビツト21及び22)の
下位2ビツトは第3図及び第6図にさらに詳細に
示すように組を決定するため用いられる。この特
定の編成はDDBTデイレクトリを必要としない
とはいえ、可能な代替案はLRU法に従つた置換
を可能にするこの体系上の1つの変形である。
DDBTアレイ64からの4つのエントリは一
時的バツフア68,70,72及び74にロード
される。これらエントリの各々からのOADDRフ
イールドは実際にはオペランド・アドレスのビツ
ト0乃至18から成る。何故ならば、ビツト19乃至
23は合同(コングルエンス)クラスに暗に含まれ
るからである。したがつて、COQ66内のエン
トリのビツト0乃至18は4つの候補設定エントリ
の各々におけるOADDRと比較され、これらの候
補のどれかが実際にCOQエントリにより指定さ
れているかどうかを判定する。比較は比較器7
6,78,80及び82により実行される。
AND回路84,86,88及び90によりさら
に選別が行なわれて、一致する候補に有効ビツト
が確実に設定されていることを判定する。
時的バツフア68,70,72及び74にロード
される。これらエントリの各々からのOADDRフ
イールドは実際にはオペランド・アドレスのビツ
ト0乃至18から成る。何故ならば、ビツト19乃至
23は合同(コングルエンス)クラスに暗に含まれ
るからである。したがつて、COQ66内のエン
トリのビツト0乃至18は4つの候補設定エントリ
の各々におけるOADDRと比較され、これらの候
補のどれかが実際にCOQエントリにより指定さ
れているかどうかを判定する。比較は比較器7
6,78,80及び82により実行される。
AND回路84,86,88及び90によりさら
に選別が行なわれて、一致する候補に有効ビツト
が確実に設定されていることを判定する。
AND回路84,86,88及び90からの出
力に応答するNOR回路92により決定されるよ
うに、COQ66からのOADDRに一致する有効
な候補がないときは、この結果はOR回路94を
介して線96によりCOQ66に伝えられ、トツ
プ・オブ・スタツク(TOS)・エントリは廃棄さ
れる。しかし、有効な候補が一致することが見出
されたときは、それらはセクレタ98を介してゲ
ート制御される。ゲート制御は2ビツト・カウン
タ100により行なわれ、カウンタ100は組毎
に各エントリを登録し、有効かつ一致するエント
リのみをPUSH信号に応答して保留テスト待ち行
列(PTQ)102へ進める。どの組が現在登録
されているかにより、信号104はAND回路8
4,86,88及び90に対応する。
力に応答するNOR回路92により決定されるよ
うに、COQ66からのOADDRに一致する有効
な候補がないときは、この結果はOR回路94を
介して線96によりCOQ66に伝えられ、トツ
プ・オブ・スタツク(TOS)・エントリは廃棄さ
れる。しかし、有効な候補が一致することが見出
されたときは、それらはセクレタ98を介してゲ
ート制御される。ゲート制御は2ビツト・カウン
タ100により行なわれ、カウンタ100は組毎
に各エントリを登録し、有効かつ一致するエント
リのみをPUSH信号に応答して保留テスト待ち行
列(PTQ)102へ進める。どの組が現在登録
されているかにより、信号104はAND回路8
4,86,88及び90に対応する。
4つの組全てが登録され、カウンタ100がゼ
ロ状態に戻るとき、OR回路94はCOQ66上の
TOSエントリを廃棄させ、上記プロセスは次の
候補エントリに対して繰返される。PTQ102
はBHTが更新されるべきか否かを判定するため
実行されねばならない全てのテストの待ち行列で
ある。エントリがPTQ102へ進められるとき
は、それはオペランド・アドレスの下位5ビツト
(DDBTインデツクス・フイールド)に加えて、
テストされるべきオペランド(COQ66からの)
と共に進められることを特に指摘しておく。
DDBTインデツクスはテストの結果がACTION
ビツトにより指定されたのと異なるときに、
DDBTを更新するために用いられる。
ロ状態に戻るとき、OR回路94はCOQ66上の
TOSエントリを廃棄させ、上記プロセスは次の
候補エントリに対して繰返される。PTQ102
はBHTが更新されるべきか否かを判定するため
実行されねばならない全てのテストの待ち行列で
ある。エントリがPTQ102へ進められるとき
は、それはオペランド・アドレスの下位5ビツト
(DDBTインデツクス・フイールド)に加えて、
テストされるべきオペランド(COQ66からの)
と共に進められることを特に指摘しておく。
DDBTインデツクスはテストの結果がACTION
ビツトにより指定されたのと異なるときに、
DDBTを更新するために用いられる。
第3図はBHTに対する更新が必要かどうか判
定するため保留テスト待ち行例(PTQ)102
内のエントリがどのようにテストされるかを示
す。この特定の実施例はテストを命令TM、
CLI、NI、OI及びXIに限定するので、PTQエン
トリ内のテスト・フイールドは拡大された
TEST・フイールド108に示す3つのサブフイ
ールドから成る。ほとんどのテスト命令が実施さ
れるその他の可能な実施例では、TESTフイール
ド108はわずかに変更された書式を有し、本明
細書記載の特定の書式は任意的なものである。こ
れらの5つの命令は記憶オペランド(PTQ10
2のOPERANDフイールド110内の)と即値
オペランド(TM、CLI、NI、OI及びXIの命令
書式の範囲内の)に作用するので、PTQ102
のTESTフイールドは即値フイールドが指定され
る線112上に示すサブフイールドを含む。これ
には8ビツトが必要である。5つの可能なテスト
命令があるので、線114上に示すTESTフイー
ルドの3ビツト・サブフイールドを使用して、実
行されるべきテストを指定する。問題となつてい
るオペレーシヨンは関連した分岐命令により指定
されたマスク・フイールドに対してテストされる
条件コードを設定するため用いられるので、線1
16上に示す条件コード・マスク・フイールドも
TESTフイールドのサブフイールドとして含まれ
ねばならない。
定するため保留テスト待ち行例(PTQ)102
内のエントリがどのようにテストされるかを示
す。この特定の実施例はテストを命令TM、
CLI、NI、OI及びXIに限定するので、PTQエン
トリ内のテスト・フイールドは拡大された
TEST・フイールド108に示す3つのサブフイ
ールドから成る。ほとんどのテスト命令が実施さ
れるその他の可能な実施例では、TESTフイール
ド108はわずかに変更された書式を有し、本明
細書記載の特定の書式は任意的なものである。こ
れらの5つの命令は記憶オペランド(PTQ10
2のOPERANDフイールド110内の)と即値
オペランド(TM、CLI、NI、OI及びXIの命令
書式の範囲内の)に作用するので、PTQ102
のTESTフイールドは即値フイールドが指定され
る線112上に示すサブフイールドを含む。これ
には8ビツトが必要である。5つの可能なテスト
命令があるので、線114上に示すTESTフイー
ルドの3ビツト・サブフイールドを使用して、実
行されるべきテストを指定する。問題となつてい
るオペレーシヨンは関連した分岐命令により指定
されたマスク・フイールドに対してテストされる
条件コードを設定するため用いられるので、線1
16上に示す条件コード・マスク・フイールドも
TESTフイールドのサブフイールドとして含まれ
ねばならない。
テスト・サイクルの始めにおいて、PTQ10
2の前部におけるエントリのTESTフイールド1
08のオペレーシヨン・サブフイールド114が
デコーダ118によりデコードされる。デコーダ
118は線120上の制御入力を8ビツトの算術
論理装置(ALU)122にもたらす。ALUは入
力110及び112について適切なオペレーシヨ
ンを実行し、CPU内でこのオペレーシヨンから
生じる4ビツトの条件コード(CC)を線124
上に出力する。条件コード出力124は比較器1
26により条件コード・マスク・フイールド11
6と比較され、線128上の分岐結果が何になる
かを決定する。テスト回路により計算された線1
28上のこの結果は次に2ビツト・デコーダ13
1により線130上のACTIONビツトと比較さ
れる。ACTIONビツト130は分岐がその直前の実
行において実行されたか否かを示し、さらにテス
ト出力ビツト128は分岐がその次の実行において
実行されるか否かを示すので、デコーダ131は
BHTに対する修正を必要とする2つの場合を決
定することができる。
2の前部におけるエントリのTESTフイールド1
08のオペレーシヨン・サブフイールド114が
デコーダ118によりデコードされる。デコーダ
118は線120上の制御入力を8ビツトの算術
論理装置(ALU)122にもたらす。ALUは入
力110及び112について適切なオペレーシヨ
ンを実行し、CPU内でこのオペレーシヨンから
生じる4ビツトの条件コード(CC)を線124
上に出力する。条件コード出力124は比較器1
26により条件コード・マスク・フイールド11
6と比較され、線128上の分岐結果が何になる
かを決定する。テスト回路により計算された線1
28上のこの結果は次に2ビツト・デコーダ13
1により線130上のACTIONビツトと比較さ
れる。ACTIONビツト130は分岐がその直前の実
行において実行されたか否かを示し、さらにテス
ト出力ビツト128は分岐がその次の実行において
実行されるか否かを示すので、デコーダ131は
BHTに対する修正を必要とする2つの場合を決
定することができる。
ACTION130が分岐がその直前の実行にお
いて実行されたことを示し、テスト出力128が
分岐が次に実行されないことを示すときは、この
分岐に対するBHTエントリも線132上で示す
ように削除しなければならないことが分る。
ACTIONビツト130が分岐がその直前の実行にお
いて実行されなかつたことを示し、テスト出力1
28が分岐が次に実行されることを示すときは、
この分岐に対する新しいエントリを線134上で
示すように挿入しなければならないことが分る。
OR回路136はこれらの場合のいずれか一方を
検出し、適切な情報を線140を介してBHT更
新待ち行列(BUQ)138に、さらに線144
を介してDDBT訂正待ち行列(DCQ)142に
送り出す。
いて実行されたことを示し、テスト出力128が
分岐が次に実行されないことを示すときは、この
分岐に対するBHTエントリも線132上で示す
ように削除しなければならないことが分る。
ACTIONビツト130が分岐がその直前の実行にお
いて実行されなかつたことを示し、テスト出力1
28が分岐が次に実行されることを示すときは、
この分岐に対する新しいエントリを線134上で
示すように挿入しなければならないことが分る。
OR回路136はこれらの場合のいずれか一方を
検出し、適切な情報を線140を介してBHT更
新待ち行列(BUQ)138に、さらに線144
を介してDDBT訂正待ち行列(DCQ)142に
送り出す。
BUQ138内のエントリはBHTに対してなさ
れるべき更新を表わす。これらのエントリは更新
が関連する分岐のアドレス(BADDR)、この分
岐の目標アドレス(TADDR)、及び更新の種類
(すなわち、挿入または削除)から成る。DCQ1
42内のエントリはDDBTに対してなされるべ
き更新、すなわち、関連のDDBTエントリのア
クシヨン・ビツトが変更されねばならないことを
表わす。これらのエントリは新しいアクシヨン・
ビツト128、線146上におけるPTQ102から
のDDBTインデツクス(DDBTエントリの合同
クラスを示す)、及びPTQエントリのBADDRフ
イールドからのビツト21及び22である線148上
におけるPTQ102からの組IDから成る。線1
48上の組IDは修正されるべきDDBTエントリ
がマツピングされる組を表わす。
れるべき更新を表わす。これらのエントリは更新
が関連する分岐のアドレス(BADDR)、この分
岐の目標アドレス(TADDR)、及び更新の種類
(すなわち、挿入または削除)から成る。DCQ1
42内のエントリはDDBTに対してなされるべ
き更新、すなわち、関連のDDBTエントリのア
クシヨン・ビツトが変更されねばならないことを
表わす。これらのエントリは新しいアクシヨン・
ビツト128、線146上におけるPTQ102から
のDDBTインデツクス(DDBTエントリの合同
クラスを示す)、及びPTQエントリのBADDRフ
イールドからのビツト21及び22である線148上
におけるPTQ102からの組IDから成る。線1
48上の組IDは修正されるべきDDBTエントリ
がマツピングされる組を表わす。
第4図はBUQ138内のエントリがどのよう
にしてBHT更新ハードウエアにとつて使用可能
となるかを示す。第4図はDDBT機構にBHTを
支援させるため第1図に必要とされる全修正を表
わす。第1図を参照すると、BCQ56への全て
の入力線は途中で切られて、第4図へ連結されね
ばならない。これはBER16からの線50及び
52、デコーダ38からの線42,44及び4
6、及びOR回路48からの線54を含む。次に
第4図を参照すると、これらの線の全ては54を
除いてデータ・セレクタ回路150への入力とな
り、線54はBUQ138の代りにこれら入力を
選択するため用いられる。BUQ152内のエン
トリは挿入または削除に関係するだけなので、
「0」入力154はMODIFY信号44に対応する
ものとしてセレクタ150の右側において必要と
されることに特に言及する。線54は左側の入力
に優先権を与えるので、BUQ152からのエン
トリは第1図のBAQ10に未処理のエントリが
ないときゲート制御されるだけであることにも特
に言及する。この優先的取扱いは任意に与えられ
るが、BAQ10を動作させる回路が修正を必要
としないという利点がある。
にしてBHT更新ハードウエアにとつて使用可能
となるかを示す。第4図はDDBT機構にBHTを
支援させるため第1図に必要とされる全修正を表
わす。第1図を参照すると、BCQ56への全て
の入力線は途中で切られて、第4図へ連結されね
ばならない。これはBER16からの線50及び
52、デコーダ38からの線42,44及び4
6、及びOR回路48からの線54を含む。次に
第4図を参照すると、これらの線の全ては54を
除いてデータ・セレクタ回路150への入力とな
り、線54はBUQ138の代りにこれら入力を
選択するため用いられる。BUQ152内のエン
トリは挿入または削除に関係するだけなので、
「0」入力154はMODIFY信号44に対応する
ものとしてセレクタ150の右側において必要と
されることに特に言及する。線54は左側の入力
に優先権を与えるので、BUQ152からのエン
トリは第1図のBAQ10に未処理のエントリが
ないときゲート制御されるだけであることにも特
に言及する。この優先的取扱いは任意に与えられ
るが、BAQ10を動作させる回路が修正を必要
としないという利点がある。
BUQ空白化ネツトワーク158からの線15
6上のステータス制御信号はNOR回路160で
線54上のPUSH信号と結合されてBUQ138
内の最上部のエントリを選択する。ゲート160
からの出力信号162はOR回路164で信号5
4と結合されて、選択された入力エントリを線1
68を介してBHT訂正待ち行列(BCQ)56に
送り出す。選択された入力がBUQ138からの
ものであるときは、168を介するBCQ56へ
の送り出しに続いて、線170上の信号がBUQ
138を動作させるため用いられる。BCQ56
内のエントリは上述の方法でBHTを修正するた
め用いられる。
6上のステータス制御信号はNOR回路160で
線54上のPUSH信号と結合されてBUQ138
内の最上部のエントリを選択する。ゲート160
からの出力信号162はOR回路164で信号5
4と結合されて、選択された入力エントリを線1
68を介してBHT訂正待ち行列(BCQ)56に
送り出す。選択された入力がBUQ138からの
ものであるときは、168を介するBCQ56へ
の送り出しに続いて、線170上の信号がBUQ
138を動作させるため用いられる。BCQ56
内のエントリは上述の方法でBHTを修正するた
め用いられる。
第5図はDDBTから得られるBHT内のエント
リがどのように識別され得るか、さらに適切な
DDBTエントリがどのように同化されかつ
DDBT更新待ち行列(DUQ)172に置かれ得
るかを示す。このことはプロセツサ・エンドプ待
ち行例173を介して達成される。これはプロセ
ツサに対して内部的に保持される待ち行列であ
り、そのエントリはデコードされてはいるがエン
ド・オブ・オペレーシヨンはされていない全ての
命令のレコードである。多くのプロセツサは既に
そのような待ち行列を備えているので、DDBT
は付加的な制御がプロセツサ内で実行されること
を全く必要とせず、待ち行列内のエントリが通常
は保持され得ないあるフイールドを含むため拡張
されることだけを必要とする。
リがどのように識別され得るか、さらに適切な
DDBTエントリがどのように同化されかつ
DDBT更新待ち行列(DUQ)172に置かれ得
るかを示す。このことはプロセツサ・エンドプ待
ち行例173を介して達成される。これはプロセ
ツサに対して内部的に保持される待ち行列であ
り、そのエントリはデコードされてはいるがエン
ド・オブ・オペレーシヨンはされていない全ての
命令のレコードである。多くのプロセツサは既に
そのような待ち行列を備えているので、DDBT
は付加的な制御がプロセツサ内で実行されること
を全く必要とせず、待ち行列内のエントリが通常
は保持され得ないあるフイールドを含むため拡張
されることだけを必要とする。
DDBTにより必要とされるフイールドは命令
アドレス、命令イメージの最初のハーフワード、
命令によりAGENされたオペランド・アドレス
(適切なとき)、さらに分岐の場合は、分岐が実行
されたか否かである。命令がエンド・オブ・オペ
レーシヨンされるときは、命令コード(命令イメ
ージの最初のバイト)がデコーダ174により検
査され、命令が関連のテスト命令(TM、CLI、
NI、OIまたはXI)であるのか、条件付き分岐で
あるのか、または考慮しているテスト命令以外の
条件コード設定命令であるのかを判定する。
アドレス、命令イメージの最初のハーフワード、
命令によりAGENされたオペランド・アドレス
(適切なとき)、さらに分岐の場合は、分岐が実行
されたか否かである。命令がエンド・オブ・オペ
レーシヨンされるときは、命令コード(命令イメ
ージの最初のバイト)がデコーダ174により検
査され、命令が関連のテスト命令(TM、CLI、
NI、OIまたはXI)であるのか、条件付き分岐で
あるのか、または考慮しているテスト命令以外の
条件コード設定命令であるのかを判定する。
命令が線176上に示すテスト命令であるとき
は、テスト・エンドプ・レジスタ(TER)17
8は関連の情報をロードされる。この情報はテス
トに用いられる即値オペランド(命令イメージの
2番目のバイト)、テストされるメモリ・オペラ
ンドのアドレス(OADDR)、及び実行されるテ
ストの種類(オペレーション)から成る。この事
例では、オペレーシヨンは命令コードに基いてエ
ンコーダ180により同化される3ビツトのフイ
ールドである。TER178がロードされるとき
は、TERにより指定された命令はエンド・オ
ブ・オペレーシヨンされた最も新しい条件コード
設定命令であることを示すためVALIDビツトが
設定されることに特に言及する。デコーダ174
からの出力線182上に示すように、考慮中の命
令の1つではない条件コード設定命令がエンド・
オブ・オペレーシヨンされるときはいつでも、
TER178内の命令が後続の条件付き分岐命令
に間違つて関連付けられないようにVALIDビツ
ト184がリセツトされる。
は、テスト・エンドプ・レジスタ(TER)17
8は関連の情報をロードされる。この情報はテス
トに用いられる即値オペランド(命令イメージの
2番目のバイト)、テストされるメモリ・オペラ
ンドのアドレス(OADDR)、及び実行されるテ
ストの種類(オペレーション)から成る。この事
例では、オペレーシヨンは命令コードに基いてエ
ンコーダ180により同化される3ビツトのフイ
ールドである。TER178がロードされるとき
は、TERにより指定された命令はエンド・オ
ブ・オペレーシヨンされた最も新しい条件コード
設定命令であることを示すためVALIDビツトが
設定されることに特に言及する。デコーダ174
からの出力線182上に示すように、考慮中の命
令の1つではない条件コード設定命令がエンド・
オブ・オペレーシヨンされるときはいつでも、
TER178内の命令が後続の条件付き分岐命令
に間違つて関連付けられないようにVALIDビツ
ト184がリセツトされる。
条件付き分岐がデコーダ174からの出力線1
86上に示すようにエンド・オブ・オペレーシヨ
ンされるときは、CCマスク・フイールド190
(命令イメージの3番目のニブル)もBER188
にロードされる点を除いて、分岐エンドプ・レジ
スタ(BER)188は丁度第1図のBER188
と同様に設定される。BER188がロードされ
る時点においてVALIDビツトがTER178で設
定されるときは、TER178により指定された
テスト命令はBER188により指定された条件
付き分岐に対する条件コード設定命令である。
AND回路192はこの条件をテストする。全く
任意的に、第1図からの線42がこのAND回路
への入力として含まれた。これは単にDDBTに
おける経済性のためにすぎない。すなわち、
DELETE信号42はBER188により指定され
た分岐がBHTで間違つて予報されたことのしる
しである。(BHTにより決して認識されなかつた
分岐が実行されたときこの状態を生じるので、
INSERTはそのようなしるしではないことを特
に指摘しておく。) したがつて、その条件コード設定命令が選択さ
れたDDBT実施内のテスト命令の1つである間
違つて予報された分岐が確認されたとき、AND
回路192は1つのエントリをDUQ172へ送
り出す。
86上に示すようにエンド・オブ・オペレーシヨ
ンされるときは、CCマスク・フイールド190
(命令イメージの3番目のニブル)もBER188
にロードされる点を除いて、分岐エンドプ・レジ
スタ(BER)188は丁度第1図のBER188
と同様に設定される。BER188がロードされ
る時点においてVALIDビツトがTER178で設
定されるときは、TER178により指定された
テスト命令はBER188により指定された条件
付き分岐に対する条件コード設定命令である。
AND回路192はこの条件をテストする。全く
任意的に、第1図からの線42がこのAND回路
への入力として含まれた。これは単にDDBTに
おける経済性のためにすぎない。すなわち、
DELETE信号42はBER188により指定され
た分岐がBHTで間違つて予報されたことのしる
しである。(BHTにより決して認識されなかつた
分岐が実行されたときこの状態を生じるので、
INSERTはそのようなしるしではないことを特
に指摘しておく。) したがつて、その条件コード設定命令が選択さ
れたDDBT実施内のテスト命令の1つである間
違つて予報された分岐が確認されたとき、AND
回路192は1つのエントリをDUQ172へ送
り出す。
第6図は新しいエントリがどのようにして
DDBT更新待ち行列172からDDBT64に置
かれるか、さらにDDBTに存在するエントリが
どのようにしてDDBT訂正待ち行列142(第
3図参照)により修正されるかを示す。第6図に
戻ると、DCQ空白レジスタ198とDUQ空白レ
ジスタ200内のステータス情報が優先権エンコ
ーダ202により検査されてDCQ142または
DUQ172のどちらをサービスするかを決定す
る。任意的であるが、線204上に示すように保
留中の記憶バツフアから記憶が解放されるとき、
エンコーダ202はこのどちらかの選択を無効に
するので、DDBTアレイは即時テストのため使
用可能である(第2図参照)。したがつて、この
特定の実施においては、DDBTを探索すること
がDDBTを更新することよりも優先権がある。
DDBT更新待ち行列172からDDBT64に置
かれるか、さらにDDBTに存在するエントリが
どのようにしてDDBT訂正待ち行列142(第
3図参照)により修正されるかを示す。第6図に
戻ると、DCQ空白レジスタ198とDUQ空白レ
ジスタ200内のステータス情報が優先権エンコ
ーダ202により検査されてDCQ142または
DUQ172のどちらをサービスするかを決定す
る。任意的であるが、線204上に示すように保
留中の記憶バツフアから記憶が解放されるとき、
エンコーダ202はこのどちらかの選択を無効に
するので、DDBTアレイは即時テストのため使
用可能である(第2図参照)。したがつて、この
特定の実施においては、DDBTを探索すること
がDDBTを更新することよりも優先権がある。
優先権エンコーダ202がDCQ142をサー
ビスすることを選択するときは、信号208によ
りセレクタ206を介してゲート制御されるのは
ACTIONビツトのみである。セレクタ210は
DCQ142からのDDBTインデツクス・フイー
ルドを用いて4組のDDBTアレイの全てについ
て行の選択を行なう。DCQ142内の組IDフイ
ールドにより適切な組が決定され、セレクタ21
2を介してゲート制御され、そこでデコーダ21
4によりデコードされて適切な組に対する書込み
許可を発する。信号208は許可された組におけ
るACTIONフイールドに対してのみ書込みパル
スを発生する。
ビスすることを選択するときは、信号208によ
りセレクタ206を介してゲート制御されるのは
ACTIONビツトのみである。セレクタ210は
DCQ142からのDDBTインデツクス・フイー
ルドを用いて4組のDDBTアレイの全てについ
て行の選択を行なう。DCQ142内の組IDフイ
ールドにより適切な組が決定され、セレクタ21
2を介してゲート制御され、そこでデコーダ21
4によりデコードされて適切な組に対する書込み
許可を発する。信号208は許可された組におけ
るACTIONフイールドに対してのみ書込みパル
スを発生する。
優先権エンコーダ202がDUQ172をサー
ビスすることを選択するときは、全てのフイール
ドはDDBTアレイにストアされる必要がある。
DUQ172からのACTIONフイールドはセレク
タ206を介してゲート制御されるが、他の全て
の関連のフイールドはDDBTアレイ入力を直接
駆動する。これらのフイールドは目標アドレス
(TA)及び分岐アドレス(BA)、テスト・フイ
ールド、及びOADDRのビツト0乃至18である。
OADDRのビツト19乃至23はセレクタ23を介し
てゲート制御されてDDBTアレイの全ての組に
対する行アドレスを生じ、線216上の分岐アド
レス(BA)のビツト21及び22はセレクタ212
を介してゲート制御され、そこでデコーダ214
によりデコードされて適切な組に対する書込み許
可を発生する。優先権エンコーダ202は選択さ
れた組における全てのフイールドに対して書込み
パルス218をもたらす。
ビスすることを選択するときは、全てのフイール
ドはDDBTアレイにストアされる必要がある。
DUQ172からのACTIONフイールドはセレク
タ206を介してゲート制御されるが、他の全て
の関連のフイールドはDDBTアレイ入力を直接
駆動する。これらのフイールドは目標アドレス
(TA)及び分岐アドレス(BA)、テスト・フイ
ールド、及びOADDRのビツト0乃至18である。
OADDRのビツト19乃至23はセレクタ23を介し
てゲート制御されてDDBTアレイの全ての組に
対する行アドレスを生じ、線216上の分岐アド
レス(BA)のビツト21及び22はセレクタ212
を介してゲート制御され、そこでデコーダ214
によりデコードされて適切な組に対する書込み許
可を発生する。優先権エンコーダ202は選択さ
れた組における全てのフイールドに対して書込み
パルス218をもたらす。
DDBTはBHTとプロセツサから独立した受動
的機構であるが、BHTの側における誤つた予報
を予想し、分岐についての多くの間違つた推定を
回避するようにBHTを更新する。上に概説した
特定の実施は1つの例にすぎず、理解し易いので
選ばれたものであるが、DDBTを精密なものに
することは任意にできる。DDBTのクラス内に
おいては、「間違つた」設計選択は非常に少ない。
すなわち、扱われるテストの困難さ、オペレーシ
ヨンの効率、及びBHT更新の時機のような事柄
は設計の実行可能性に影響を与えない。これらの
選択はBHT分岐の回避され得る間違つた推定の
数に影響を与えるにすぎない。
的機構であるが、BHTの側における誤つた予報
を予想し、分岐についての多くの間違つた推定を
回避するようにBHTを更新する。上に概説した
特定の実施は1つの例にすぎず、理解し易いので
選ばれたものであるが、DDBTを精密なものに
することは任意にできる。DDBTのクラス内に
おいては、「間違つた」設計選択は非常に少ない。
すなわち、扱われるテストの困難さ、オペレーシ
ヨンの効率、及びBHT更新の時機のような事柄
は設計の実行可能性に影響を与えない。これらの
選択はBHT分岐の回避され得る間違つた推定の
数に影響を与えるにすぎない。
F 発明の効果
以上説明したように、本発明によれば分岐履歴
テーブルとともにデータ従属分岐テーブルを用
い、分岐履歴テーブルが誤つた予測をする場合を
予測し、実際の予測がなされる時点にさきだつて
分岐履歴テーブルを訂正するようにしているの
で、分岐命令の予測を改善することができる。
テーブルとともにデータ従属分岐テーブルを用
い、分岐履歴テーブルが誤つた予測をする場合を
予測し、実際の予測がなされる時点にさきだつて
分岐履歴テーブルを訂正するようにしているの
で、分岐命令の予測を改善することができる。
第1A図および第1B図は分岐履歴テーブル更
新論理のブロツク・ダイヤグラム、第2A図およ
び第2B図はテストのためどのようにオペランド
が作成されるかを示すデータ従属分岐テーブル論
理のブロツク・ダイヤグラム、第3図は分岐履歴
テーブルの更新が必要とされるかどうかを判定す
る論理のブロツク・ダイヤグラム、第4図は分岐
履歴テーブル更新待ち行列がどのようにして分岐
履歴テーブル論理に使用できるようにされるかを
決定する論理のブロツク・ダイヤグラム、第5図
はデータ従属分岐テーブルのためのエントリを作
成するための論理のブロツク・ダイヤグラム、さ
らに第6A図および第6B図はデータ従属分岐テ
ーブル・アレイを更新するため用いられる論理の
ブロツク・ダイヤグラムである。 2……分岐履歴テーブル、4……CPU、10
……分岐アクテイブ待ち行列(BAQ)、16,1
88……分岐エンドプ・レジスタ(BER)、3
8,174……デコーダ、56……BHT訂正待
ち行列、60……訂正制御回路、64……データ
従属分岐テーブル(DDBT)、66……候補オペ
ランド待ち行列(COQ)、98,150……セレ
クタ、100……カウンタ、102……保留テス
ト待ち行列(PTQ)、138……BHT更新待ち
行列(BUQ)、142……DDBT訂正待ち行列
(DCQ)、172……DDBT更新待ち行列
(DUQ)、178……テスト・エンドプ・レジス
タ、202……優先権エンコーダ。
新論理のブロツク・ダイヤグラム、第2A図およ
び第2B図はテストのためどのようにオペランド
が作成されるかを示すデータ従属分岐テーブル論
理のブロツク・ダイヤグラム、第3図は分岐履歴
テーブルの更新が必要とされるかどうかを判定す
る論理のブロツク・ダイヤグラム、第4図は分岐
履歴テーブル更新待ち行列がどのようにして分岐
履歴テーブル論理に使用できるようにされるかを
決定する論理のブロツク・ダイヤグラム、第5図
はデータ従属分岐テーブルのためのエントリを作
成するための論理のブロツク・ダイヤグラム、さ
らに第6A図および第6B図はデータ従属分岐テ
ーブル・アレイを更新するため用いられる論理の
ブロツク・ダイヤグラムである。 2……分岐履歴テーブル、4……CPU、10
……分岐アクテイブ待ち行列(BAQ)、16,1
88……分岐エンドプ・レジスタ(BER)、3
8,174……デコーダ、56……BHT訂正待
ち行列、60……訂正制御回路、64……データ
従属分岐テーブル(DDBT)、66……候補オペ
ランド待ち行列(COQ)、98,150……セレ
クタ、100……カウンタ、102……保留テス
ト待ち行列(PTQ)、138……BHT更新待ち
行列(BUQ)、142……DDBT訂正待ち行列
(DCQ)、172……DDBT更新待ち行列
(DUQ)、178……テスト・エンドプ・レジス
タ、202……優先権エンコーダ。
Claims (1)
- 【特許請求の範囲】 1 プロセツサと、 このプロセツサにより処理される命令およびオ
ペランドを含む情報を記憶するメモリと、 上記プロセツサにより処理される分岐命令の先
行する分岐アクシヨンを記憶する分岐履歴テーブ
ルと、 上記オペランドのうちの分岐命令の実行に関連
する特定のオペランドが発生したことを判別する
手段と、 上記特定のオペランドに関連する特定の分岐命
令の発生及び該分岐命令の発生により生ずる分岐
アクシヨンの結果とを判別する手段と、上記特定
の分岐命令及びその上記分岐アクシヨンの結果
を、上記発生した特定のオペランドと関連づけて
記憶するデータ従属分岐テーブルと、 上記プロセツサが上記メモリへ所与のオペラン
ドを記憶するのを監視して、この記憶されようと
している所与のオペランドが上記データ従属分岐
テーブル中に記憶されている上記特定のオペラン
ドのうちの1つかどうかを判別する手段と、 上記特定の分岐命令及びその上記分岐アクシヨ
ンの結果とに基づいて、上記データ従属分岐テー
ブル中の所与の分岐命令の次の分岐アクシヨンが
上記分岐履歴テーブル中の上記所与の分岐命令の
分岐アクシヨンと異なるかどうかを判別し、異な
る場合には上記分岐履歴テーブル中の上記所与の
分岐命令の分岐アクシヨンを上記データ従属分岐
テーブル中の上記所与の分岐命令の次の分岐アク
シヨンに従つて更新する手段とを有することを特
徴とする分岐命令の結果予測装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US793057 | 1985-10-30 | ||
US06/793,057 US4763245A (en) | 1985-10-30 | 1985-10-30 | Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS62106545A JPS62106545A (ja) | 1987-05-18 |
JPH0231419B2 true JPH0231419B2 (ja) | 1990-07-13 |
Family
ID=25158963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61230238A Granted JPS62106545A (ja) | 1985-10-30 | 1986-09-30 | 分岐命令の結果予測装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US4763245A (ja) |
EP (1) | EP0227892B1 (ja) |
JP (1) | JPS62106545A (ja) |
DE (1) | DE3687744T2 (ja) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0258453B1 (en) * | 1986-02-28 | 1993-05-19 | Nec Corporation | Instruction prefetch control apparatus |
JPH06100968B2 (ja) * | 1986-03-25 | 1994-12-12 | 日本電気株式会社 | 情報処理装置 |
US5440704A (en) * | 1986-08-26 | 1995-08-08 | Mitsubishi Denki Kabushiki Kaisha | Data processor having branch predicting function |
JPS6393041A (ja) * | 1986-10-07 | 1988-04-23 | Mitsubishi Electric Corp | 計算機 |
JPS6398737A (ja) * | 1986-10-15 | 1988-04-30 | Mitsubishi Electric Corp | デ−タ処理装置 |
US5175827A (en) * | 1987-01-22 | 1992-12-29 | Nec Corporation | Branch history table write control system to prevent looping branch instructions from writing more than once into a branch history table |
JPH0743672B2 (ja) * | 1987-02-18 | 1995-05-15 | 株式会社東芝 | メモリ保護違反検出装置 |
US5247627A (en) * | 1987-06-05 | 1993-09-21 | Mitsubishi Denki Kabushiki Kaisha | Digital signal processor with conditional branch decision unit and storage of conditional branch decision results |
US5134561A (en) * | 1987-07-20 | 1992-07-28 | International Business Machines Corporation | Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries |
US4894772A (en) * | 1987-07-31 | 1990-01-16 | Prime Computer, Inc. | Method and apparatus for qualifying branch cache entries |
US4942520A (en) * | 1987-07-31 | 1990-07-17 | Prime Computer, Inc. | Method and apparatus for indexing, accessing and updating a memory |
JPH01142941A (ja) * | 1987-11-30 | 1989-06-05 | Nec Corp | 分岐予測テーブルの正当性判定装置 |
GB8728493D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Jump prediction |
US5228131A (en) * | 1988-02-24 | 1993-07-13 | Mitsubishi Denki Kabushiki Kaisha | Data processor with selectively enabled and disabled branch prediction operation |
JPH01271838A (ja) * | 1988-04-22 | 1989-10-30 | Fujitsu Ltd | マイクロプログラム分岐方法 |
JP2570859B2 (ja) * | 1989-05-25 | 1997-01-16 | 日本電気株式会社 | データ処理装置 |
JP2508280B2 (ja) * | 1989-07-28 | 1996-06-19 | 日本電気株式会社 | 分岐ヒストリテ―ブル制御方式 |
US5210831A (en) * | 1989-10-30 | 1993-05-11 | International Business Machines Corporation | Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations |
US5230068A (en) * | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
US5276882A (en) * | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
JPH0820950B2 (ja) * | 1990-10-09 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチ予測型分岐予測機構 |
JPH0628184A (ja) * | 1991-08-26 | 1994-02-04 | Internatl Business Mach Corp <Ibm> | ブランチ予測方法及びブランチプロセッサ |
US5649097A (en) * | 1991-10-25 | 1997-07-15 | International Business Machines Corporation | Synchronizing a prediction RAM |
US5333283A (en) * | 1991-10-29 | 1994-07-26 | International Business Machines Corporation | Case block table for predicting the outcome of blocks of conditional branches having a common operand |
US5434986A (en) * | 1992-01-09 | 1995-07-18 | Unisys Corporation | Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction |
AU665368B2 (en) * | 1992-02-27 | 1996-01-04 | Samsung Electronics Co., Ltd. | CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability |
US5507028A (en) * | 1992-03-30 | 1996-04-09 | International Business Machines Corporation | History based branch prediction accessed via a history based earlier instruction address |
US5313634A (en) * | 1992-07-28 | 1994-05-17 | International Business Machines Corporation | Computer system branch prediction of subroutine returns |
US5434985A (en) * | 1992-08-11 | 1995-07-18 | International Business Machines Corporation | Simultaneous prediction of multiple branches for superscalar processing |
US5577217A (en) * | 1993-05-14 | 1996-11-19 | Intel Corporation | Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions |
JP2596712B2 (ja) * | 1993-07-01 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 |
JP2801135B2 (ja) * | 1993-11-26 | 1998-09-21 | 富士通株式会社 | パイプラインプロセッサの命令読み出し方法及び命令読み出し装置 |
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
TW345637B (en) * | 1994-02-04 | 1998-11-21 | Motorola Inc | Data processor with branch target address cache and method of operation a data processor has a BTAC storing a number of recently encountered fetch address-target address pairs. |
US5634119A (en) * | 1995-01-06 | 1997-05-27 | International Business Machines Corporation | Computer processing unit employing a separate millicode branch history table |
US5905881A (en) * | 1995-11-30 | 1999-05-18 | Unisys Corporation | Delayed state writes for an instruction processor |
US5794024A (en) * | 1996-03-25 | 1998-08-11 | International Business Machines Corporation | Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction |
US5867699A (en) * | 1996-07-25 | 1999-02-02 | Unisys Corporation | Instruction flow control for an instruction processor |
US5949995A (en) * | 1996-08-02 | 1999-09-07 | Freeman; Jackie Andrew | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code |
US5805877A (en) * | 1996-09-23 | 1998-09-08 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
US6484256B1 (en) * | 1999-08-09 | 2002-11-19 | International Business Machines Corporation | Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table |
US6446197B1 (en) | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US6546481B1 (en) * | 1999-11-05 | 2003-04-08 | Ip - First Llc | Split history tables for branch prediction |
US20030131345A1 (en) * | 2002-01-09 | 2003-07-10 | Chris Wilkerson | Employing value prediction with the compiler |
US7024663B2 (en) * | 2002-07-10 | 2006-04-04 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
US6954836B2 (en) | 2002-07-11 | 2005-10-11 | Micron Technology, Inc. | System and method for processor with predictive memory retrieval assist |
JP5347023B2 (ja) * | 2009-05-19 | 2013-11-20 | パナソニック株式会社 | 分岐予測装置、その分岐予測方法、コンパイラ、そのコンパイル方法及び分岐予測プログラム記録媒体 |
GB2578573B (en) * | 2018-10-30 | 2021-09-08 | Advanced Risc Mach Ltd | Technique for maintaining data values in a prediction register that are used to predict whether a branch represented by a branch instruction will be taken. |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3559183A (en) * | 1968-02-29 | 1971-01-26 | Ibm | Instruction sequence control |
US4155120A (en) * | 1977-12-01 | 1979-05-15 | Burroughs Corporation | Apparatus and method for controlling microinstruction sequencing by selectively inhibiting microinstruction execution |
US4430706A (en) * | 1980-10-27 | 1984-02-07 | Burroughs Corporation | Branch prediction apparatus and method for a data processing system |
JPS57185545A (en) * | 1981-05-11 | 1982-11-15 | Hitachi Ltd | Information processor |
US4594659A (en) * | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Method and apparatus for prefetching instructions for a central execution pipeline unit |
US4691277A (en) * | 1984-10-24 | 1987-09-01 | International Business Machines Corp. | Small instruction cache using branch target table to effect instruction prefetch |
US4679141A (en) * | 1985-04-29 | 1987-07-07 | International Business Machines Corporation | Pageable branch history table |
-
1985
- 1985-10-30 US US06/793,057 patent/US4763245A/en not_active Expired - Fee Related
-
1986
- 1986-09-05 EP EP86112337A patent/EP0227892B1/en not_active Expired - Lifetime
- 1986-09-05 DE DE8686112337T patent/DE3687744T2/de not_active Expired - Fee Related
- 1986-09-30 JP JP61230238A patent/JPS62106545A/ja active Granted
Also Published As
Publication number | Publication date |
---|---|
DE3687744T2 (de) | 1993-08-19 |
EP0227892B1 (en) | 1993-02-10 |
EP0227892A2 (en) | 1987-07-08 |
DE3687744D1 (de) | 1993-03-25 |
EP0227892A3 (en) | 1989-07-19 |
US4763245A (en) | 1988-08-09 |
JPS62106545A (ja) | 1987-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0231419B2 (ja) | ||
US5276882A (en) | Subroutine return through branch history table | |
US5434985A (en) | Simultaneous prediction of multiple branches for superscalar processing | |
US5210831A (en) | Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations | |
US5450605A (en) | Boundary markers for indicating the boundary of a variable length instruction to facilitate parallel processing of sequential instructions | |
US6081887A (en) | System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction | |
EP0180725B1 (en) | Instruction prefetch operation for branch instructions | |
US7493480B2 (en) | Method and apparatus for prefetching branch history information | |
JP3014773B2 (ja) | プロセサアーキテクチャ | |
US5423011A (en) | Apparatus for initializing branch prediction information | |
EP0107449B1 (en) | Computer with multiple operating systems | |
JP2937485B2 (ja) | スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置 | |
EP0480193A2 (en) | Multi-prediction branch prediction mechanism | |
EP0394624B1 (en) | Multiple sequence processor system | |
US5790823A (en) | Operand prefetch table | |
EP0084114A1 (en) | Instruction prefetching data processing apparatus including a conditional branch instruction predictor | |
JP2000215056A (ja) | 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理 | |
JPS61250738A (ja) | 分岐活動記録テ−ブル | |
KR101081674B1 (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
US11442727B2 (en) | Controlling prediction functional blocks used by a branch predictor in a processor | |
JP4009248B2 (ja) | 分岐予測装置および分岐予測方法 | |
US5146570A (en) | System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
JPH06161779A (ja) | データ処理装置の割込み制御方式 | |
US7036003B1 (en) | Instruction processing device and method for controlling branch instruction accompanied by mode change |