JP3522135B2 - 複数のウェイを持つブランチヒストリを備える情報処理装置 - Google Patents
複数のウェイを持つブランチヒストリを備える情報処理装置Info
- Publication number
- JP3522135B2 JP3522135B2 JP35092598A JP35092598A JP3522135B2 JP 3522135 B2 JP3522135 B2 JP 3522135B2 JP 35092598 A JP35092598 A JP 35092598A JP 35092598 A JP35092598 A JP 35092598A JP 3522135 B2 JP3522135 B2 JP 3522135B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- way
- branch history
- entry
- branch
- 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
- 230000010365 information processing Effects 0.000 title claims description 37
- 238000012217 deletion Methods 0.000 claims description 24
- 230000037430 deletion Effects 0.000 claims description 24
- 108090000248 Deleted entry Proteins 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 14
- 238000000034 method Methods 0.000 description 7
- 238000003672 processing method Methods 0.000 description 4
- 241000723353 Chrysanthemum Species 0.000 description 2
- 235000005633 Chrysanthemum balsamita Nutrition 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 208000002173 dizziness Diseases 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
り、更に詳しくは過去に実行された分岐命令自身の命令
アドレスと、分岐先の命令アドレスとが登録されるブラ
ンチヒストリが複数のウェイを持つ場合に、データ処理
の対象となるエントリが存在するウェイを自動的に指定
することを可能として処理を高速化することができる、
複数のウェイを持つブランチヒストリを備える情報処理
装置に関する。
つの方式として、アウトオブオーダ処理方式がある。ア
ウトオブオーダ処理方式を採用した情報処理装置におい
ては、1つの命令実行の完了を待たずに後続の命令列が
順次複数のパイプラインに投入され、命令の並列実行を
行わせることにより、性能の向上が図られている。
方式を採用した情報処理装置においても、先行する命令
の実行結果が後続の命令の実行に影響を与える場合に
は、先行する命令の実行が完了しなければ後続の命令を
実行開始することができない。先行する命令の処理が遅
ければ後続の命令を実行することはできず、先行命令の
完了を待ち続けることになり、パイプラインに乱れが生
じ、性能の低下が引き起こされる。
ある。分岐命令においては、その実行が完了するまで分
岐が成立するか否かが分からず、また分岐が成立する場
合にも分岐先のターゲットアドレスが分からないため、
先行する命令が分岐命令の場合には、後続の命令は待ち
状態となり、パイプラインに乱れが生ずる。このためブ
ランチヒストリを使用することによって、分岐命令に対
する処理の高速化が図られる。
た分岐命令において分岐が成立した場合に、その分岐命
令自身の命令アドレスと分岐先の命令の命令アドレス、
すなわちターゲットアドレスとを組にして登録しておく
ものである。そして主記憶装置等からフェッチされた命
令が分岐命令である場合にブランチヒストリの内容が検
索され、その命令のアドレスがすでに登録されている時
には、登録されているターゲットアドレスを予測分岐先
アドレスとして、実際に分岐が成立するか否かの判定に
先立って、その分岐命令の処理が開始される。
命令で分岐が成立したものについては、新たにブランチ
ヒストリにその命令の命令アドレスと分岐先アドレスと
を登録する必要がある。また何らかの原因で分岐先命令
アドレス、すなわちターゲットアドレスが変更されてい
る場合には、ブランチヒストリ検索結果としての予測分
岐先アドレスは無効となり、場合によってはその登録さ
れているターゲットアドレスを更新したり、分岐命令の
命令アドレスと分岐先の命令アドレスとが組として登録
されているエントリの削除を行う必要がある。更に分岐
成立の予測が外れた時、あるいは分岐先としてのターゲ
ットアドレスが誤っていた時には、それらを示す情報を
エントリ別に保有しておくことも必要である。
ヒストリが複数個のウェイを持つ場合には、新たに分岐
命令自身の命令アドレスとターゲットアドレスとを登録
すべきエントリがどのウェイに存在するか、また更新す
べきエントリや削除すべきエントリがどのウェイに存在
するかについては、その情報を別のメモリに記憶してお
くか、あるいはエントリの新規登録、更新、または削除
が必要となるたびに、ブランチヒストリの直接検索を行
う必要があった。
装置全体としての回路面積が大きくなり、またウェイを
指定する情報を引き出すための待ち時間が生ずるという
問題点があった。
には、その検索の間、主記憶装置等からフェッチされた
分岐命令に対する予測分岐先アドレス、すなわちターゲ
ットアドレスの検索処理を実行することができないた
め、全体の処理が一時的に停止し、著しい性能の低下が
引き起こされ、ブランチヒストリを有効に活用すること
ができないという問題点があった。
ストリにおいて新規登録が行われるべきエントリ、デー
タ更新や削除が行われるべきエントリが存在するウェイ
を、別のメモリを用意することなく、かつブランチヒス
トリの直接検索を行う必要もなく、自動的に指定可能と
して、ブランチヒストリの有効活用を図ることを目的と
する。
報処理装置の原理構成ブロック図である。同図は、複数
のウェイを持つブランチヒストリを有する情報処理装置
の原理構成を示す。
ェイを持つブランチヒストリ2を備えている。命令フェ
ッチ手段3は、例えば命令フェッチ部であり、記憶装置
からフェッチされた命令が分岐命令であり、かつその分
岐命令に対応してブランチヒストリに対するデータ処理
が必要となる場合に備えて、そのデータ処理対象となる
べきエントリが存在するウェイを指定するウェイ指定情
報を、フェッチされた命令のアドレスに添付して、情報
処理装置1の内部で命令を実行する命令実行部4に与え
るものである。
ヒストリ2に対するデータ処理が分岐命令の実行によっ
て分岐成立が判明した時、その分岐命令自身の命令アド
レスと分岐先の命令アドレスとを組にしてブランチヒス
トリに登録する新規登録であり、前記ウェイ指定情報が
その新規登録の対象となるべきエントリが存在するウェ
イを指定するようにすることもできる。
トリが作成されるべきウェイを示すフラグ、例えばリプ
レースフラグであるようにすることもでき、またブラン
チヒストリ2に対して、このフラグを更新するフラグ更
新手段を備え、ブランチヒストリ2上に新しいエントリ
が作成された時、そのフラグ更新手段が新しく作成され
たエントリが存在しないウェイを指定するようにフラグ
を更新して、前述の命令アドレスに添付されるべきウェ
イ指定情報として、命令フェッチ手段3に与えることも
できる。
トリ2にフェッチされた命令のアドレスがすでに登録さ
れているエントリが存在するか否かの検索が完了する前
に、前述の新規登録の対象とすべきエントリが存在する
ウェイを指定するウェイ指定情報を命令のアドレスに添
付することもできる。
のブランチヒストリに対するデータ処理がすでにブラン
チヒストリ2に登録されているデータの更新であり、ウ
ェイ指定情報がデータ更新の対象となるべきエントリが
存在するウェイを指定するものであるようにすることも
できる。
対象となるエントリが存在するウェイを指定するフラ
グ、例えばヒットウェイフラグであるようにすること
も、また命令フェッチ手段3が、ブランチヒストリ2上
にフェッチされた命令のアドレスが登録されているエン
トリが検出された時に、その検出されたエントリが存在
するウェイを指定するフラグを命令アドレスに添付する
こともできる。
のブランチヒストリに対するデータ処理がすでにブラン
チヒストリに登録されているデータの削除であり、ウェ
イ指定情報がそのデータ削除の対象となるべきエントリ
が存在するウェイを指定するようにすることもできる。
対象となるべきエントリが存在するウェイを指定するフ
ラグ、例えばヒットウェイフラグであるようにすること
も、また命令フェッチ手段3が、ブランチヒストリ2上
でフェッチされた命令のアドレスが登録されているエン
トリが検出された時に、その検出されたエントリが存在
するウェイを指定するフラグを命令アドレスに添付する
こともできる。
岐命令の実行によってブランチヒストリに対するデータ
処理が必要となった時、そのデータ処理に必要な情報と
命令のアドレスに添付されたウェイ指定情報とをブラン
チヒストリ2に与える分岐命令制御手段を更に備えるこ
ともできる。
て、分岐命令制御手段によって与えられたデータ処理に
必要な情報とウェイ指定情報とに対応して、対象エント
リに対するデータ処理を実行するデータ処理手段を備え
ることもできる。
トリに対するデータ処理、例えばエントリの新規登録、
すでに存在するエントリに対するデータ更新、またはデ
ータ削除を、情報処理装置の1サイクルタイムで実行す
ることもできる。
等からフェッチされた命令に対応してブランチヒストリ
に対するデータ処理が必要となった時に、その対象とな
るべきエントリが存在するウェイを指定するウェイ指定
情報が命令アドレスに添付されて、命令実行部に与えら
れることによって、実際にブランチヒストリに対するデ
ータ処理、例えばエントリの新規登録、すでに存在する
エントリのデータ更新、またはデータ削除が必要となっ
た時に、データ処理対象のエントリが存在するウェイを
自動的に判別することが可能となる。
施形態、すなわち一般的に複数個のウェイを持つブラン
チヒストリを備える情報処理装置の全体構成ブロック図
である。同図においては、情報処理装置の中で本発明に
直接関係のある部分だけが示されている。
命令アドレス生成回路12、およびキャッシュ13は命
令フェッチパイプラインの動作を行うものである。命令
フェッチパイプラインは命令フェッチのリクエスト発行
サイクルI、タグとTLBへのアクセスサイクルIT、
バッファへのアクセスサイクルIB、および結果の出力
サイクルIRからなる。
て、命令実行のパイプライン処理が行われる。命令実行
パイプラインは命令のデコードサイクルD、アドレス計
算サイクルA、アドレス変換サイクルT、バッファへの
アドレスサイクルB、実行サイクルE、チェックのサイ
クルC、および結果の書き込みサイクルWからなるが、
図2にはTおよびAのサイクルのみが示されている。
14からデコーダ15に命令が与えられ、命令のデコー
ドが実行される。そして与えられた命令が例えば分岐命
令である場合には、アドレス計算サイクルにおいて分岐
先の命令アドレス、すなわちターゲットアドレスの正し
い値が計算され、その結果は分岐命令制御部16に与え
られる。
規登録が必要な場合には分岐命令自身の命令アドレスと
分岐先の命令アドレスが、またエントリの更新や削除が
必要な場合にはその処理に必要なデータがブランチヒス
トリ17に与えられ、また例えばアドレス計算サイクル
において計算された正しい分岐先アドレスが、命令アド
レスレジスタ11やキャッシュ13に与えられる。また
ブランチヒストリ17からは、後述するように命令アド
レスとリプレースフラグ、およびヒットウェイフラグが
命令フェッチ部、例えば命令フェッチ制御回路18に与
えられる。
ェイ、例えば2個のウェイを持つブランチヒストリにお
いて、新しいエントリの登録、エントリのデータ更新、
エントリ削除の実行に際して、新しいエントリが作成さ
れるべきウェイや、更新、削除の対象となるエントリが
存在するウェイを指定するために、命令アドレスにタグ
として添付されるフラグが使用される。
てはリプレースフラグとヒットウェイフラグとが使用さ
れる。リプレースフラグは、フェッチされた命令のアド
レスが命令バッファに投入される時、全ての命令アドレ
スにタグとして添付される。このリプレースフラグは新
しいエントリが登録されるべきウェイを指定するもので
ある。
分岐命令であり、分岐が成立することが判明し、かつ分
岐先アドレス、すなわちターゲットアドレスがアドレス
計算サイクルにおいて求められた後に、分岐命令制御部
16からブランチヒストリ17に与えられ、実際にエン
トリの新規登録が行われるまで変更されないため、命令
フェッチ時にアドレスに添付されたリプレースフラグに
よって指定されたウェイにエントリの新規登録が行われ
る。
ブランチヒストリ17の検索が行われ、その命令に対す
る命令アドレスがブランチヒストリ17から検出された
時、検出された命令アドレスが登録されているエントリ
が存在するウェイを示す情報として、リプレースフラグ
と同様に命令アドレスにタグとして添付され、命令バッ
ファ14に投入されることになる。
ータの更新や削除が必要となった時、すなわち分岐命令
の実行が完了した後に、分岐命令制御部16からブラン
チヒストリ17に与えられるデータ更新や削除のための
情報と、このヒットウェイフラグとを用いてエントリの
更新や削除が行われることになる。なおここでいうエン
トリの削除とは、ブランチヒストリに登録されている情
報そのものの消去ではなく、そのエントリが有効か無効
かを表す情報、例えばバリッドビットの内容を更新する
ことである。
の新規登録、更新、削除が実行される時点では、リプレ
ースフラグ、またはヒットウェイフラグによってそのエ
ントリが存在するウェイが既に指定されているため、別
のメモリやブランチヒストリの直接検索を行う必要はな
く、直ちにブランチヒストリに必要なデータの書き込み
を行うことができる。従って主記憶装置からフェッチさ
れた命令に対する分岐予測のためのブランチヒストリ検
索処理を阻害する時間は極めて短くなり、例えばブラン
チヒストリ17へのデータ書き込みを1サイクルタイム
で実行できるものとすれば、分岐命令予測のためのブラ
ンチヒストリ検索を阻害する時間は1サイクルタイムの
みとなる。
リの構成図である。同図に示すように、本実施形態にお
いてはブランチヒストリはウェイ0、およびウェイ1と
いう2つのウェイを持っており、情報処理装置はアウト
オブオーダ処理方式を採用しているものとして、実施形
態を説明する。
エントリのデータ構造の例を示す。同図に示すように、
1つのエントリには分岐命令自身の命令アドレスIA
R、分岐先の命令アドレス、すなわちターゲットアドレ
スTIARに加えて、タグ情報としてのリプレースフラ
グが登録されている。
ャートである。同図に示すように、まずステップS1で
命令フェッチ制御部による処理が実行される。この処理
は図6で後述するが、その結果としてリプレースフラグ
とヒットウェイフラグが、タグとして命令アドレスに添
付される。
グに加えて、バリッド、ディジィ、ギディ、およびブラ
ンチヒストリヒットというタグを添付することもでき
る。バリッドビットは、ブランチヒストリに登録されて
いるエントリが有効であることを示すものであり、その
初期値は0である。ディジィビットは、エントリに登録
されている命令アドレスによって示される分岐命令の前
回の実行時に分岐が成立しなかったことを示すものであ
り、その初期値は0である。
るターゲットアドレスが前回の分岐命令の実行時に何ら
かの原因で間違っていたことを示すものであり、その初
期値は0である。更にブランチヒストリヒットは、フェ
ッチされた命令のアドレスがブランチヒストリにヒット
したか否か、すなわちそのアドレスがブランチヒストリ
17に登録されているかいないかを示すものであり、そ
の初期値も0である。予測分岐先アドレスを用いて分岐
命令を実行しようとする目的でブランチヒストリ17の
検索が行われた結果、ヒットした場合には、その値は1
になる。
る処理が実行される。この処理では、図7で説明するよ
うにブランチヒストリに対するエントリの新規登録、更
新、または削除が必要か否かが判定され、必要な場合に
はブランチヒストリに必要な情報が渡される。
る処理が実行される。この処理では、図8で説明するよ
うにエントリの新規登録、更新、または削除が実行さ
れ、命令フェッチ部に対してリプレースフラグとヒット
ウェイフラグとが渡される。
の新規登録、更新、削除について更に説明する。ブラン
チヒストリに対してエントリの新規登録、更新、削除が
行われるのは、分岐命令が実行された後であり、このエ
ントリ新規登録、更新、削除に際しては、ブランチヒス
トリの検索は行われない。この検索が行われない点に本
発明の重要な特徴がある。
ヒットビットの値が0であり、命令アドレスによって示
される命令が分岐命令であって、分岐が成立した時に実
行される。どのウェイに新しいエントリが登録されるか
は、リプレースフラグによって指定される。この時ヒッ
トウェイフラグの値は0、1のいずれでもよい。
ヒストリヒットビットの値が1であり、例えばディジィ
ビットや、ギディビットの変更が必要な場合である。エ
ントリ更新に際しては、ヒットウェイフラグの値が有効
であり、この値によって指定されるウェイにおいてエン
トリ更新が行われる。
ビットの値を1から0に変更することであり、これを実
行する条件として、例えば第1に2回連続で分岐成立の
予測がはずれた時、第2の分岐が成立するという予測が
はずれ、かつターゲットアドレスが間違っていた時、第
3に実際には分岐命令ではないにもかかわらず、ブラン
チヒストリに間違ってその命令のアドレスが登録されて
いた時がある。
ローチャートである。同図において、ステップS11で
主記憶装置等から取り出され、次に実行されるべき命令
のアドレスが計算され、ステップS12でリプレースフ
ラグとヒットウェイフラグがブランチヒストリから受け
取られ、ステップS13で2つのフラグが命令アドレス
にタグとして添付され、ステップS14でリプレースフ
ラグとヒットウェイフラグの内容が命令アドレスのタグ
として、例えば図2のデコーダ15を介して、分岐命令
制御部16に渡される。
プとヒットウェイフラグとはフェッチされた命令のアド
レスが命令バッファ14に与えられる時、すなわち命令
フェッチパイプラインのIRステートにおいてタグとし
て管理れる。この時点ではフェッチされた命令が分岐命
令であるか否か、また分岐命令である場合にも、その分
岐が成立するか否かについては判定できない。そこで全
ての命令のアドレスにリプレースフラグとヒットウェイ
フラグが添付される。
細フローチャートである。同図においてステップS16
で、例えば命令バッファ14、デコーダ15を介して、
命令フェッチ部からリプレースフラグとヒットウェイフ
ラグの内容が命令アドレスのタグとして受け取られ、ス
テップS17でこの2つのフラグに対応する命令に関連
してブランチヒストリに対してエントリの新規登録、更
新、または削除が必要か否かが判定され、必要な場合に
限ってステップS18でリプレースフラグとヒットウェ
イフラグとの内容がエントリ新規登録、更新、または削
除に必要なデータと共に、ブランチヒストリ17に渡さ
れる。
御を行うものである。リプレースフラグとヒットウェイ
フラグの内容を用いた処理が必要となるのは、すでに実
行完了した分岐命令が存在する場合であり、またその分
岐命令に関してブランチヒストリに対するデータ処理と
してエントリの新規登録、情報の更新、または削除の必
要がある時である。従ってそのようなデータ処理の必要
がある場合に限って、分岐命令制御部16からその命令
の命令アドレス、リプレースフラグ、およびヒットウェ
イフラグの内容、データ処理のために必要な情報がブラ
ンチヒストリ17に渡されることになる。
部16から渡された命令アドレス、リプレースフラグ、
およびヒットウェイフラグの内容、データ処理のための
情報によってエントリの新規登録、データの更新、また
は削除のいずれが必要かを判定し、2つのフラグによっ
て指定されるウェイ内のエントリに対して新規登録、更
新、または削除の処理を実行し、その後リプレースフラ
グの更新を行って、それを命令フェッチ部に渡すことに
なる。
フローチャートにおいて、まずステップS20において
エントリの新規登録の必要があるか否かが判定され、必
要がある場合にはステップS21でリプレースフラグの
内容によってエントリが新規登録されるべきウェイが決
定され、ステップS22でエントリの新規登録が行わ
れ、ステップS23の処理に移行する。
要がない場合には、ステップS24でヒットウェイフラ
グの内容によってデータの更新、たまは削除を行うべき
エントリが存在するウェイが決定され、ステップS25
でエントリの更新、または削除が行われた後に、ステッ
プS23の処理に移行する。
命令に添付するためにリプレースフラグの更新が行わ
れ、ステップS26で次にフェッチされた命令がブラン
チヒストリにヒットしたか否かが判定され、ヒットした
場合にはステップS27でヒットウェイフラグの内容が
ヒットしたウェイの番号を示すように更新された後に、
ヒットしない場合には何らの処理を行うことなく、ステ
ップS28でリプレースフラグとヒットウェイフラグの
内容が、命令アドレスに添付されるべきタグとして、命
令フェッチ部に渡される。
スフラグの内容によるウェイの指定(選択)などについ
て説明する。図9はリプレースフラグの内容による新規
エントリ作成時におけるウェイ指定などの説明図であ
る。同図においてウェイ0のリプレースフラグは2ビッ
トのリプレースフラグの0ビット目を、ウェイ1のリプ
レースフラグが1ビット目を表すものと考えることもで
きる。すなわちリプレースフラグが00の時はウェイ
0、10の時はウェイ1、11の時はウェイ0、01の
時にはウェイ1がエントリの新規登録時に指定されるこ
とになる。
によるウェイの選択(指定)を実現するためのウェイ選
択回路の例である。図10の回路では、分岐命令制御部
16からブランチヒストリ17に送られるリプレースフ
ラグの0ビット目と1ビット目がBR COMP RP
L FLAG〈0〉,〈1〉という信号としてそれぞれ
EXオアゲート20に入力され、0ビット目と1ビット
目の値が異なる時、すなわちリプレースフラグが01、
または10の時にはバッファ22からBR COMP
RPL 00 11という信号が出力され、また0ビッ
ト目と1ビット目の値が同じである時、すなわちリプレ
ースフラグが00、または11である時にはインバータ
21からBR COMP 00 11という信号が出力
される。
対して図10のインバータ21の出力と、新規エントリ
が作成されるべきことを示すクリエイトニューエントリ
という信号が入力されると、オアゲート25から新しい
エントリが作成されるべきウェイがウェイ0であること
を示すWRITE BRHIS WAY0という信号が
出力される。またアンドゲート24に対して、エントリ
のデータの更新、または削除の必要を示すアップデート
オールドエントリという信号と、ヒットウェイフラグの
内容としてのブランチヒストリ検索時にヒットしたウェ
イが0であることを示すBR COMP HIT WA
YがLとして入力されると、同様にオアゲート25から
ウェイ0を指定する信号が出力される。
6に対してバッファ22の出力と、新規エントリを作成
すべきことを示すクリエイトニューエントリの信号が入
力されと、オアゲート28から新規エントリが作成され
るべきウェイがウェイ1であることを指定する信号が出
力される。
ートオールドエントリの信号と、ヒットウェイフラグの
内容が1であることを示す信号としてのHが入力される
と、同様にオアゲート28からウェイ1を指定する信号
が出力される。
9,図12、および図13を用いて説明する。図9に示
されるようにエントリの新規登録が行われた場合には、
次にエントリの新規登録が行われるときには、直前にエ
ントリが登録されたウェイとは異なるウェイが指定され
るようにリプレースフラグの更新が行われる。すなわち
リプレースフラグが00で新規に登録されたエントリが
存在するウェイがウェイ0である場合には、次にはウェ
イ1が指定されるようにウェイ0のリプレースフラグ、
すなわちビット0が0から1に更新され、リプレースフ
ラグの更新結果は10となる。
次にウェイ0が選択されるようにウェイ1のリプレース
フラグが1に更新され、リプレースフラグの更新結果は
11となる。リプレースフラグが11であった時には、
ウェイ0のリプレースフラグが0に更新され、更新結果
は01となり、次にエントリが登録されるウェイはウェ
イ1となる。リプレースフラグが01の時にはウェイ1
のリプレースフラグが0に更新され、リプレースフラグ
の更新結果は00となり、次の新規登録エントリはウェ
イ0に作成される。
成された場合には、次に作成されるエントリはウェイ
1、ウェイ1に新規エントリが作成された場合には次の
新規エントリはウェイ0に作成されるようにリプレース
フラグの更新が行われ、2つのウェイが交互に選択され
て新規のエントリの登録が行われる。
スフラグの更新でも、同様にウェイ0とウェイ1とが交
互に指定されるようにリプレースフラグの更新が行われ
るが、その更新ではエントリの新規作成時とは逆の順序
にリプレースフラグが更新されるように行われる。すな
わちリプレースフラグが00の時には更新結果は01
に、10である時には00に、11である時には10
に、また01である時には11となるようにリプレース
フラグの更新が行われる。
路の具体例の構成図である。まず図12においてアンド
ゲート30への入力としてのヒットウェイフラグBR
COMP HIT WAYの内容がL、すなわち0であ
り、リプレースフラグの1ビット目BR COMP R
PL FLAG〈1〉がH、すなわち1であればオアゲ
ート32の出力はHとなり、その出力がブランチヒスト
リでエントリの削除が行われたことを示すイレーズオー
ルドエントリ信号と共にアンドゲート33に入力される
ことによって、オアゲート36からリプレースフラグの
更新データとしてのWRITE BRHIS RPL
FLAGが出力される。
ウェイフラグの内容がH、すなわち1であり、リプレー
スフラグの0ビット目がL、すなわち0である場合に
は、同様にオアゲート36からリプレースフラグの更新
データとしての信号が出力される。
録が行われたことを示すクリエイトニューエントリとい
う信号と、リプレースフラグの1ビット目がL、すなわ
ち0であることを示す信号がアンドゲート34に入力さ
れると、オアゲート36からリプレースフラグの更新デ
ータを示す信号が出力される。
グがL、すなわち0であることを示す信号と、リプレー
スフラグの0ビット目がH、すなわち1であることを示
す信号が入力されると、オアゲート39の出力がHとな
り、その出力がブランチヒストリでエントリ更新が行わ
れたことを示すアップデートエントリ信号と共にアンド
ゲート35に入力されることによって、オアゲート36
からリプレースフラグの更新データを示す信号が出力さ
れる。同様にアンドゲート38に対してヒットウェイフ
ラグの内容がH、すなわち1であり、リプレースフラグ
の1ビット目がL、すなわち0であることを示す信号が
入力されると、オアゲート36からリプレースフラグの
更新データとしての信号が出力される。
フラグ更新データ出力回路の例である。同図においてラ
ンダムアクセスメモリ(RAM)40に対して図12の
オアゲート36の出力が入力され、ライトイネーブル信
号が与えられることによって、その内容はRAM40に
書き込まれる。そしてその出力はウェイ0のリプレース
フラグに対する更新データとして出力される。
対してオアゲート36の出力が与えられ、ライトイネー
ブル信号の入力時点でその内容が書き込まれ、その内容
はウェイ1のリプレースフラグに対する更新データとし
て出力される。
フラグ、またはヒットウェイフラグによるウェイ指定
(選択)のための回路を示し、図12および図13にお
けるリプレースフラグの更新回路とは無関係である。図
13においてRAM40,41のライトイネーブル端子
に与えられる信号は、図11のオアゲート25,28の
出力と同じ名称が用いられているが、全く別のものであ
る。
M40,41に対するライトイネーブル信号を制御する
ことによって、図9で説明したエントリ新規登録時のリ
プレースフラグの更新、およびエントリ削除時のリプレ
ースフラグの更新が行われる。これによってエントリの
削除が行われた時、その削除によってエントリが無効に
なったウェイに対して、例えば次に新しいエントリを登
録することが可能となる。またエントリの更新が行われ
た場合には、そのエントリへの上書きを防ぐことも可能
となる。
3の回路とは全く別のものであるとしたが、例えば図1
0,図11のオアゲート25,28の出力を、図13の
RAM40,41に対するライトイネーブル信号として
使用することも可能である。これについて、エントリの
新規登録時のリプレースフラグの更新を例にとって、説
明する。
時には、図11のアンドゲート23、アンドゲート25
の出力がHとなり、図13のRAM40に対するライト
イネーブル信号が入力される。この時図12のアンドゲ
ート34、オアゲート36の出力はHとなり、その結果
図9に示すようにウェイ0のリプレースフラグが1とな
り、更新後のリプレースフラグの値は10となる。
が10である時には、図11のアンドゲート26、オア
ゲート28の出力がHとなり、図13のRAM41に対
するライトイネーブル信号が入力される。この時図12
のアンドゲート34、オアゲート36の出力がHとな
り、その結果ウェイ1のリプレースフラグが1に更新さ
れ、更新後のリプレースフラグは11となる。
合には、図12のアンドゲート34、オアゲート36の
出力はLとなり、それぞれオアゲート25、または28
の出力するライトイネーブル信号によって、RAM4
0、または41に書き込まれるデータは0となり、その
結果ウェイ0、またはウェイ1のリプレースフラグが0
に更新され、更新後のリプレースフラグの値は01、ま
たは00となる。
れば、従来のように例えば別のメモリにウェイ指定情報
を記憶する必要もなくなり、情報処理装置としての全体
の回路面積を削減することができる。またブランチヒス
トリにおけるエントリの新規登録、エントリデータの更
新、または削除に必要とする時間を必要最小限、例えば
1サイクルタイムに限定することが可能となり、分岐命
令に対応する分岐先アドレス予測のために行われるブラ
ンチヒストリの検索を阻害する時間を最小限とすること
ができ、ブランチヒストリをより有効に活用することが
可能となり、ブランチヒストリを備える情報処理装置の
処理効率向上に寄与するところが大きい。
ブロック図である。
図である。
の例を示す図である。
ャートである。
トである。
トである。
ートである。
プレースフラグの更新を説明する図である。
部の構成を示す図(その1)である。
部の構成を示す図(その2)である。
示す図(その1)である。
示す図(その2)である。
Claims (14)
- 【請求項1】 複数のウェイを持つブランチヒストリを
備える情報処理装置において、 記憶装置等からフェッチされた命令が分岐命令であり、
かつ該分岐命令に対応してブランチヒストリに対するデ
ータ処理が必要となる場合に備えて、該データ処理対象
となるべきエントリが存在するウェイを指定するウェイ
指定情報を該命令のアドレスに添付して、該情報処理装
置内で命令を実行する命令実行部に与える命令フェッチ
手段を備えることを特徴とする複数のウェイを持つブラ
ンチヒストリを備える情報処理装置。 - 【請求項2】 前記ブランチヒストリに対するデータ処
理が、分岐命令の実行によって分岐成立が判明した時、
該分岐命令自身の命令アドレスと分岐先の命令アドレス
とをブランチヒストリに登録する新規登録であり、前記
ウェイ指定情報が該新規登録の対象となるべきエントリ
が存在するウェイを指定するものであることを特徴とす
る請求項1記載の複数のウェイを持つブランチヒストリ
を備える情報処理装置。 - 【請求項3】 前記ウェイ指定情報が、新たに作成され
るべきエントリが存在するウェイを示すフラグであるこ
とを特徴とする請求項2記載の複数のウェイを持つブラ
ンチヒストリを備える情報処理装置。 - 【請求項4】 前記ブランチヒストリが前記ウェイ指定
情報としてのフラグを更新するフラグ更新手段を備え、 該ブランチヒストリ上に新しいエントリが作成された
時、該フラグ更新手段が該新しいエントリが存在しない
ウェイを指定するように該フラグを更新して、前記命令
アドレスに添付されるべきウェイ指定情報として前記命
令フェッチ手段に与えることを特徴とする請求項3記載
の複数のウェイを持つブランチヒストリを備える情報処
理装置。 - 【請求項5】 前記ブランチヒストリが前記ウェイ指定
情報としてのフラグを更新するフラグ更新手段を備え、 該ブランチヒストリ上でエントリの削除が行われたと
き、該フラグ更新手段が該削除されたエントリが存在し
たウェイを指定するように該フラグを更新して、前記命
令アドレスに添付されるべきウェイ指定情報として前記
命令フェッチ手段に与えることを特徴とする請求項3記
載の複数のウェイを持つブランチヒストリを備える情報
処理装置。 - 【請求項6】 前記命令フェッチ手段が、前記ブランチ
ヒストリ上に前記フェッチされた命令のアドレスがすで
に登録されているエントリが存在するか否かの検索が完
了する前に、前記新規登録の対象とすべきエントリが存
在するウェイを指定するウェイ指定情報を前記命令のア
ドレスに添付することを特徴とする請求項2記載の複数
のウェイを持つブランチヒストリを備える情報処理装
置。 - 【請求項7】 前記ブランチヒストリに対するデータ処
理が、すでに該ブランチヒストリに登録されているデー
タの更新であり、前記ウェイ指定情報が該データ更新の
対象とすべきエントリが存在するウェイを指定するもの
であることを特徴とする請求項1記載の複数のウェイを
持つブランチヒストリを備える情報処理装置。 - 【請求項8】 前記ウェイ指定情報がデータ更新の対象
とすべきエントリが存在するウェイを指定するフラグで
あり、 前記ブランチヒストリに対して、前記フェッチされた命
令の実行に先立って、該フェッチされた命令のアドレス
がブランチヒストリにすでに登録されているか否かを検
索する命令アドレス検索手段を備え、 該フェッチされた命令のアドレスが登録されているエン
トリが検出された時、該命令アドレス検索手段が該検出
されたエントリが存在するウェイを指定するフラグを前
記命令アドレスに添付されるべきウェイ指定情報として
前記命令フェッチ手段に与えることを特徴とする請求項
7記載の複数のウェイを持つブランチヒストリを備える
情報処理装置。 - 【請求項9】 前記ブランチヒストリに対するデータ処
理が、すでに該ブランチヒストリに登録されているデー
タの削除であり、前記ウェイ指定情報が該データ削除の
対象とすべきエントリが存在するウェイを指定するもの
であることを特徴とする請求項1記載の複数のウェイを
持つブランチヒストリを備える情報処理装置。 - 【請求項10】 前記ウェイ指定情報がデータ削除の対
象となるエントリが存在するウェイを指定するフラグで
あり、 前記ブランチヒストリに対して、前記フェッチされた命
令の実行に先立って、該フェッチされた命令のアドレス
がブランチヒストリにすでに登録されているか否かを検
索する命令アドレス検索手段を備え、 該フェッチされた命令のアドレスが登録されているエン
トリが検出された時、該命令アドレス検索手段が該検出
されたエントリが存在するウェイを指定するフラグを前
記命令アドレスに添付されるべきウェイ指定情報として
前記命令フェッチ手段に与えることを特徴とする請求項
9記載の複数のウェイを持つブランチヒストリを備える
情報処理装置。 - 【請求項11】 前記情報処理装置が、分岐命令の実行
によって前記ブランチヒストリに対するデータ処理が必
要となった時、該データ処理に必要な情報と前記命令の
アドレスに添付されたウェイ指定情報とを前記ブランチ
ヒストリに与える分岐命令制御手段を更に備えることを
特徴とする請求項1記載の複数のウェイを持つブランチ
ヒストリを備える情報処理装置。 - 【請求項12】 前記ブランチヒストリに対して、前記
分岐命令制御手段によって与えられたデータ処理に必要
な情報とウェイ指定情報とに対応して、対象エントリに
対するデータ処理を実行するデータ処理手段を備えるこ
とを特徴とする請求項11記載の複数のウェイを持つブ
ランチヒストリを備える情報処理装置。 - 【請求項13】 前記対象エントリに対するデータ処理
がデータの新規登録、更新、または削除であることを特
徴とする請求項12記載の複数のウェイを持つブランチ
ヒストリを備える情報処理装置。 - 【請求項14】 前記データ処理手段が、前記対象エン
トリに対するデータ処理を、前記情報処理装置の1サイ
クルタイムで実行することを特徴とする請求項13記載
の複数のウェイを持つブランチヒストリを備える情報処
理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35092598A JP3522135B2 (ja) | 1998-12-10 | 1998-12-10 | 複数のウェイを持つブランチヒストリを備える情報処理装置 |
US09/456,918 US6532534B1 (en) | 1998-12-10 | 1999-12-07 | Information processing apparatus provided with branch history with plurality of designation ways |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35092598A JP3522135B2 (ja) | 1998-12-10 | 1998-12-10 | 複数のウェイを持つブランチヒストリを備える情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000172503A JP2000172503A (ja) | 2000-06-23 |
JP3522135B2 true JP3522135B2 (ja) | 2004-04-26 |
Family
ID=18413849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35092598A Expired - Fee Related JP3522135B2 (ja) | 1998-12-10 | 1998-12-10 | 複数のウェイを持つブランチヒストリを備える情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6532534B1 (ja) |
JP (1) | JP3522135B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7783871B2 (en) * | 2003-06-30 | 2010-08-24 | Intel Corporation | Method to remove stale branch predictions for an instruction prior to execution within a microprocessor |
JP4327008B2 (ja) * | 2004-04-21 | 2009-09-09 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP4362096B2 (ja) * | 2004-09-30 | 2009-11-11 | 富士通株式会社 | 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体 |
EP1990713B1 (en) * | 2006-02-28 | 2013-04-10 | Fujitsu Ltd. | Branch predicting device for computer |
JP5633169B2 (ja) * | 2010-03-25 | 2014-12-03 | 富士通株式会社 | 分岐予測方法及びその方法を実行する分岐予測回路 |
JP2011209774A (ja) * | 2010-03-26 | 2011-10-20 | Fujitsu Ltd | 分岐予測方法及びその方法を実行する分岐予測回路 |
JP2013131036A (ja) | 2011-12-21 | 2013-07-04 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01286031A (ja) | 1988-05-13 | 1989-11-17 | Nec Corp | 情報処理装置 |
JPH0271328A (ja) | 1988-09-07 | 1990-03-09 | Nec Corp | 分岐ヒストリーテーブル制御方式 |
JPH04175825A (ja) | 1990-11-07 | 1992-06-23 | Nec Corp | 分岐履歴テーブルを備えた情報処理装置 |
JP2982506B2 (ja) | 1992-08-18 | 1999-11-22 | 日本電気株式会社 | 分岐ヒストリテーブル制御回路 |
US5978906A (en) * | 1996-11-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions |
-
1998
- 1998-12-10 JP JP35092598A patent/JP3522135B2/ja not_active Expired - Fee Related
-
1999
- 1999-12-07 US US09/456,918 patent/US6532534B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000172503A (ja) | 2000-06-23 |
US6532534B1 (en) | 2003-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4827402A (en) | Branch advanced control apparatus for advanced control of a branch instruction in a data processing system | |
JP2504830Y2 (ja) | デ―タ処理装置 | |
JPH0644071A (ja) | 一サイクルレジスタマッピング | |
JP2003005956A (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
JPH0557616B2 (ja) | ||
JP2001243069A (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 | |
JP3522135B2 (ja) | 複数のウェイを持つブランチヒストリを備える情報処理装置 | |
JP2596712B2 (ja) | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 | |
JPH03129432A (ja) | 分岐制御回路 | |
JP3469469B2 (ja) | 情報処理装置 | |
EP0969358A2 (en) | Information processing device and method for performing parallel processing | |
JPH0689173A (ja) | ブランチ・ヒストリーを持つ命令実行処理装置 | |
JP3532835B2 (ja) | データ処理装置およびプログラム変換装置 | |
WO1998011484A1 (fr) | Processeur de commande a memoire d'historique | |
JP2534662B2 (ja) | 命令キヤツシユ制御方法 | |
JPS6284340A (ja) | 命令実行方法およびデータ処理装置 | |
JP2943772B2 (ja) | 分岐予測方式 | |
US6360310B1 (en) | Apparatus and method for instruction cache access | |
JPH06124206A (ja) | 分岐命令予測処理装置及びその処理方法 | |
JP2817524B2 (ja) | 命令キャッシュ制御方式 | |
JP2778610B2 (ja) | パイプライン演算制御方法およびシステム | |
JP2001014162A (ja) | 分岐予測方法およびデータ処理装置 | |
JP2001154845A (ja) | キャッシュミスした後のメモリバスアクセス制御方式 | |
JP4049490B2 (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040120 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040203 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040203 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080220 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090220 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090220 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100220 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110220 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110220 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120220 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130220 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130220 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140220 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |