JP3102846B2 - ロードアドレスキャッシュ装置及び方法 - Google Patents

ロードアドレスキャッシュ装置及び方法

Info

Publication number
JP3102846B2
JP3102846B2 JP08046514A JP4651496A JP3102846B2 JP 3102846 B2 JP3102846 B2 JP 3102846B2 JP 08046514 A JP08046514 A JP 08046514A JP 4651496 A JP4651496 A JP 4651496A JP 3102846 B2 JP3102846 B2 JP 3102846B2
Authority
JP
Japan
Prior art keywords
address
load
prediction
load address
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP08046514A
Other languages
English (en)
Other versions
JPH09244889A (ja
Inventor
昭 勝野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP08046514A priority Critical patent/JP3102846B2/ja
Publication of JPH09244889A publication Critical patent/JPH09244889A/ja
Application granted granted Critical
Publication of JP3102846B2 publication Critical patent/JP3102846B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

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】
【従来の技術及び発明が解決しようとする課題】パイプ
ラインプロセッサ等の今日の高速プロセッサは、命令レ
ベルでの並列度ILP(Instruction Level Parallelis
m )を向上させるために、演算器の個数を増やしたり、
大容量のキャッシュを設けたりすることにより、複数の
命令の同時実行機能を有する。
【0003】このような機能と共に命令レベルでの並列
度を向上させるための具体的な技術として、投機的実行
機構とout-of-order実行機構が知られている。投機的実
行機構においては、パイプラインプロセッサにおいて分
岐命令が実行される際に、分岐成立/分岐不成立が予測
されることにより、分岐命令に続いて実行されるべき有
効な命令列を、パイプライン中の命令のキャンセルとい
うペナルティの発生を抑制させながらフェッチ可能とす
る技術である。この機構においては、分岐命令の分岐予
測が行われることにより、その分岐命令が終了する前に
それに続く命令列が投機的にパイプラインにフェッチさ
れ実行される。そして、この機構は、もし分岐予測が外
れたときには、パイプラインプロセッサの状態をその分
岐命令の実行の直前の状態までリカバリさせる機能を備
える。
【0004】一方、out-of-order実行機構においては、
命令列が、プログラムの順序どおりに実行されるのでは
なく、命令間の依存性や演算器等のリソースのコンフリ
クトが解消できた順に実行さる。
【0005】今日の高速プロセッサは、上述のような投
機的実行機構及びout-of-order実行機構を備えることに
より、命令の高速実行を目指している。しかし、このよ
うな技術のみでは、命令レベルでの並列度ILPを向上
させるのに限界があることもわかってきている。
【0006】ここで一般に、プロセッサは、メモリシス
テムからデータをロードしてきて、そのデータに対して
何等かの処理を実行し、必要なら得られた結果データを
メモリシステム又はレジスタにストアする、という動作
を繰り返す。従って、プロセッサの高速化を図るために
は、ロード命令の効率的な処理が重要である。
【0007】図4に、一般的な演算命令のパイプライン
動作を示す。まず、命令は、命令フェッチステージ40
1において命令キャッシュからフェッチされる。次に、
命令デコードステージ402において、フェッチされた
命令がデコードされるとともに、必要に応じてレジスタ
ファイルからデータがロードされる。続いて、実行ステ
ージ403において、デコードされた命令が実行され
る。この実行動作は、例えば算術論理演算動作である。
最後に、ライトバックステージ404において、演算結
果がレジスタファイルにライトされる。
【0008】図5に、従来のロード命令のパイプライン
動作を示す。まずロード命令は、命令フェッチステージ
501において命令キャッシュからフェッチされる。次
に、命令デコードステージ502において、フェッチさ
れたロード命令がデコードされるとともに、必要に応じ
てレジスタファイルからデータがロードされる。続い
て、実行ステージ503において、デコードされたロー
ド命令によってアクセスされるロードアドレスが計算さ
れる。このアドレス計算には、そのロード命令により指
定されたレジスタファイルや即値の加算演算が必要であ
る。次に、アドレス変換ステージ504において、計算
されたロードアドレスのアドレス形式が仮想アドレス形
式から実アドレス形式に変換される。続いて、データキ
ャッシュアクセス1ステージ505において、データキ
ャッシュ内の上記実アドレスに対してロードアクセスが
実行される。更に、データキャッシュアクセス2ステー
ジ506において、データキャッシュ内の前記実アドレ
スに対してロードアクセスが続行される。即ち、この例
では、データキャッシュアクセスのレイテンシは2命令
サイクルであると仮定している。そして、ライトバック
ステージ507において、アクセス結果がレジスタファ
イルにライトされる。
【0009】ここで、一般にパイプライン処理において
は、第1の命令に続いて第2の命令が並列にパイプライ
ンに流入させられて処理される場合に、第2の命令は、
第1の命令の実行ステージが完了した時点で第1の命令
が処理したデータにアクセスすることができる。これに
より、ロード命令以外の命令の実行は次々と並列に処理
することができる。これに対し、図4及び図5のパイプ
ライン動作からわかるように、ロード命令は、通常の演
算命令よりも多くの命令サイクル(実行ステージ)を必
要とする。従って、ロード命令に続いてパイプラインに
フェッチされ、そのロード命令のデータを使用する他の
命令は、図5の例では、ロード命令の実行ステージの処
理が開始されてから更に4命令サイクル待ってからでな
いと、上記ロード命令によってロードされたデータにア
クセスできないことになり、プロセッサの命令レベルで
の並列度ILPの向上を妨げる要因となっている。
【0010】本発明の課題は、ロード命令におけるロー
ドアドレスを予測することにより、ロード命令の投機的
実行を可能とすることにある。
【0011】
【課題を解決するための手段】本発明は、第1に、前回
のロードアドレスと、この前回のロードアドレスの前前
回のロードアドレスに対する差分値と、アドレス予測が
成功か失敗かを示す状態ビットとを、タグに対応させて
記憶し、上記状態ビットの初期値としてアドレス予測の
失敗を示すビット値を記憶するロードアドレスキャッシ
ュ手段を有する。
【0012】第2に、実行すべきロード命令に対し、こ
のロード命令を指定するプログラムカウンタ値のタグと
上記ロードアドレスキャッシュ手段の保持する各タグと
を比較して一致するタグを検出するタグ検出手段を有す
る。
【0013】第3に、上記ロードアドレスキャッシュ手
段から、上記タグ検出手段の検出したタグに対応して記
憶されている前回ロードアドレス及び差分値を読み出
し、それらを加算することにより、上記ロード命令に対
する実際のロードアドレスの計算前に、この実際のロー
ドアドレスの予測値である予測アドレスを生成出力する
予測アドレス生成手段を有する。
【0014】第4に、上記ロード命令に対しアドレス計
算により実際のロードアドレスを算出して、この実際の
ロードアドレスと上記予測アドレス生成手段から出力さ
れた予測アドレスとを比較し、一致の場合はアドレス予
測の成功と判定し、不一致の場合はアドレス予測の失敗
と判定し、その判定結果に基づき、上記ロードアドレス
キャッシュ手段に上記検出されたタグに対応して記憶さ
れている前回ロードアドレス、差分値及び状態ビットを
それぞれ新たな前回ロードアドレス、新たな差分値及び
新たな状態ビットに書き換える制御手段を有する。
【0015】そして、この制御手段は、上記判定結果に
基づき、具体的には次のような3通りの書き換え動作を
実行する。第1の場合として、上記アドレス予測の成功
と判定した場合には、上記予測アドレス生成手段から出
力された予測アドレスを上記新たな前回ロードアドレス
として、かつ、上記ロードアドレスキャッシュ手段に上
記検出されたタグに対応して記憶されている差分値を上
記新たな差分値として、かつ、アドレス予測の成功を示
すビット値を上記新たな状態ビットとして、上記ロード
アドレスキャッシュ手段に書き込む。第2の場合とし
て、上記アドレス予測の失敗と判定した場合であって、
上記ロードアドレスキャッシュ手段に上記検出されたタ
グに対応して記憶されている状態ビットがアドレス予測
の失敗を示すビット値である場合には、上記実際のロー
ドアドレスを上記新たな前回ロードアドレスとして、か
つ、上記ロードアドレスキャッシュ手段に上記検出され
たタグに対応して記憶されているロードアドレスに対す
る上記実際のロードアドレスの差分値を上記新たな差分
値として、かつ、アドレス予測の失敗を示すビット値を
上記新たな状態ビットとして、上記ロードアドレスキャ
ッシュ手段に書き込む。第3の場合として、上記アドレ
ス予測の失敗と判定した場合であって、上記ロードアド
レスキャッシュ手段に上記検出されたタグに対応して記
憶されている状態ビットがアドレス予測の成功を示すビ
ット値である場合には、上記実際のロードアドレスを上
記新たな前回ロードアドレスとして、かつ、上記ロード
アドレスキャッシュ手段に上記検出されたタグに対応し
て記憶されている差分値を上記新たな差分値として、か
つ、アドレス予測の失敗を示すビット値を上記新たな状
態ビットとして、上記ロードアドレスキャッシュ手段に
書き込む。
【0016】ここまでの発明の構成において、ロードア
ドレスキャッシュ手段に記憶されるロードアドレスは実
アドレスであるように構成することができる。上述した
発明の構成では、まず、ロードアドレスとその差分値が
ロードアドレスキャッシュ手段にキャッシングされ、ロ
ード命令のフェッチ時にその手段が参照されることによ
って、ロード命令の実行を待たずにロードアドレスを予
測して投機的なデータアクセスを行うことができる。こ
の結果、アドレス予測が成功した場合には、ロード命令
のフェッチが開始されてからそのアクセス結果が得られ
るまでの命令サイクルを待つだけで、そのロード命令に
続いてパイプライン等にフェッチされ並列に実行される
他の命令が上記得られたロードデータにアクセスするこ
とが可能となり、命令レベルでの並列度を向上させるこ
とができる。
【0017】次に、制御手段は、それが保持していた状
態ビットが予測失敗を示す値であるとき、即ち、前回も
アドレス予測が失敗したと判定していた場合において今
回もアドレス予測が失敗したと判定した場合、つまり2
回連続してアドレス予測が失敗したと判定した場合にお
いてのみ、ロードアドレスキャッシュ手段中の差分値を
更新する。この結果、例えばロードアドレスが第1のア
ドレスから第2のアドレスまで一定の割合で増加した後
に再び第1のアドレスに戻って同じ増加を繰り返すよう
なデータロード処理が実行されるような場合において、
第2のアドレスから第1のアドレスにロードアドレスが
戻ってアドレス予測が失敗する際に、ロードアドレスキ
ャッシュ手段内の差分値は変更されないように動作する
ことができ、その次のロード命令のフェッチ時に、アド
レス予測を成功させることができて、ロード命令の実行
のし直しの確率を低減させることが可能となり、ロード
アクセス性能を向上させることができる。
【0018】更に、ロードアドレスキャッシュ手段に格
納されるロードアドレスが、仮想アドレスではなく実ア
ドレス(物理アドレス)とされることにより、ロードア
ドレスキャッシュ手段にアドレス変換機構を潜在的に持
たせることができ、プログラムカウンタ値から直接、ロ
ード命令の実アドレスを予測することが可能となる。こ
の結果、例えば実アドレスタグを有する1次データキャ
ッシュ等に対するロードアクセスにおいて、ロード命令
のフェッチから上記予測アドレスに基づく上記データキ
ャッシュに対する投機的なロードアクセスまでの時間を
短縮させることがき、ロード命令のレイテンシを大幅に
短縮させることが可能となる。
【0019】
【発明の実施の形態】以下、図面を参照しながら本発明
の実施の形態について詳細に説明する。本発明は、ロー
ド命令毎(プログラムカウンタ値毎)に、ロードアドレ
スとその差分値をキャッシングし、ロード命令のフェッ
チ時にそのキャッシュを参照することによって、ロード
命令の実行を待たずにロードアドレスを予測してデータ
キャッシュアクセスを可能とすると共に、ロード命令毎
にそのアドレス予測が2回連続して失敗するまでは、キ
ャッシュされている差文値をクリアしないようにし、更
に、キャッシュされるロードアドレスを、仮想アドレス
ではなく実アドレスとすることを特徴とする。
【0020】図1は、本発明の実施の形態の構成図であ
る。まず、ロードアドレスキャッシュ101は、ロード
命令のプログラムカウンタ値の所定ビット部分であるタ
グ(図中(タグ))と、前回のロードアドレス(図中
(アドレス))と、前回のロードアドレスの前前回のロ
ードアドレスに対する差分値である前回差分値(図中
(Δ))と、1ビットからなる状態ビットS(図中
(S))とを、所定組分記憶する。
【0021】比較器102は、フェッチされたロード命
令のプログラムカウンタ値PCの所定ビット部分とロー
ドアドレスキャッシュ101内の各タグとを比較するこ
とにより、フェッチされたロード命令のプログラムカウ
ンタ値PCの所定ビット部分に一致するタグを検出し、
それを制御部104へ出力する。
【0022】加算器103は、ロードアドレスキャッシ
ュ101から、比較器102が一致を検出したタグに対
応する前回ロードアドレスAr 及び前回差分値Δr を読
み出し、それらを加算し、その結果得られるアドレスA
p を予測アドレスとして制御部104及び特には図示し
ないデータキャッシュアクセス部へ出力する。データキ
ャッシュアクセス部は、予測アドレスAp によって指定
されるデータキャッシュ内のアドレスに対して、投機的
にロードアクセスを実行する。
【0023】制御部104は、比較器102が一致を検
出したタグと、そのタグに対応して加算器103が出力
した予測アドレスAp と、そのタグに対応してロードア
ドレスキャッシュ101から出力された前回差分値Δr
と、そのタグに対応してロードアドレスキャッシュ10
1から出力された状態ビットSを保持する。そして、制
御部104は、ロード命令に対応するアドレス計算が実
行ステージにおいて行われ、正アドレスAc が判明した
時点で、その正アドレスAc と保持していた予測アドレ
スAp とを比較することによって、アドレス予測が成功
したか否かを判定し、それに対応する予測判定信号10
5を出力する。また、制御部104は、予測判定結果に
基づいて、新たに算出した今回ロードアドレスAw と今
回差分値Δw と状態ビットSを、保持していたタグに対
応するロードアドレスキャッシュ101内のアドレスに
書き込む。
【0024】次に、制御部104が実行するロードアド
レスと差分値と状態ビットの更新動作について説明す
る。制御部104は、上述したようにして予測判定を行
った結果、アドレス予測が成功したと判定した場合、保
持していた予測アドレスAp (=Ac )を今回ロードア
ドレスAw としてセットし、保持していた前回差分値Δ
r を今回差分値Δwとしてセットする。即ち、 今回ロードアドレスAw =前回ロードアドレスAr 今回差分値Δw =前回差分値Δr である。これと共に、制御部104は、新たな状態ビッ
トSを“1”にセットする。
【0025】一方、制御部104は、前述したようにし
て予測判定を行った結果、アドレス予測が失敗したと判
定した場合、実際のアドレス計算によって算出された正
アドレスAc を今回ロードアドレスAw としてセットす
る。即ち、 今回ロードアドレスAw =正アドレスAc である。
【0026】続いて、制御部104は、上述したように
アドレス予測が失敗したと判定した場合において、保持
していた状態ビットSの値が“0”である、即ち前回も
アドレス予測が失敗したと判定していて2回連続してア
ドレス予測が失敗したと判定した場合には、正アドレス
Ac の前回ロードアドレス(Ar =Ap −Δr )に対す
る差分値を今回差分値Δw としてセットする。即ち、 今回差分値Δw =正アドレスAc −(予測アドレスAp
−前回差分値Δr ) である。更に制御部104は、新たな状態ビットSを
“0”にリセットする。
【0027】また、制御部104は、上述したようにア
ドレス予測が失敗したと判定した場合において、保持し
ていた状態ビットSの値が“1”である、即ち前回はア
ドレス予測が成功したと判定していて今回はアドレス予
測が失敗したと判定した場合には、前回差分値Δr をそ
のまま今回差分値Δw としてセットする。即ち、 今回差分値Δw =前回差分値Δr である。そして、制御部104は、新たな状態ビットS
については“0”にリセットする。
【0028】図2は、制御部104による上述の状態ビ
ットSの遷移動作を示す図である。制御部104は、ア
ドレス予測が成功したと判定した場合(図中“Succeed
”)には、新たな状態ビットSを“1”にセットし、
逆に、アドレス予測が失敗したと判定した場合(図中
“Fail”)には、新たな状態ビットSを“0”にセット
する。そして、制御部104は、状態ビットSが“0”
であるとき、即ち、前回もアドレス予測が失敗したと判
定していた場合において今回もアドレス予測が失敗した
と判定した場合、つまり2回連続してアドレス予測が失
敗したと判定した場合においてのみ、ロードアドレスキ
ャッシュ101中の差分値Δを更新する。これが本発明
に関連する大きな特徴である。この結果、例えばロード
アドレスが第1のアドレスから第2のアドレスまで一定
の割合で増加した後に再び第1のアドレスに戻って同じ
増加を繰り返すようなデータロード処理が実行されるよ
うな場合において、第2のアドレスから第1のアドレス
にロードアドレスが戻ってアドレス予測が失敗する際
に、ロードアドレスキャッシュ101内の差分値Δは変
更されない。これにより、その次のロード命令のフェッ
チ時に、アドレス予測が成功することになる。一方、状
態ビットSが用いられない場合には、第2のアドレスか
ら第1のアドレスにロードアドレスが戻ってアドレス予
測が失敗する際に、ロードアドレスキャッシュ101内
の差分値Δが第1のアドレスと第2のアドレスとの差分
値に変更される結果、その次のロード命令のフェッチ時
には、アドレス予測は失敗してしまう。これにより、ロ
ード命令の実行のし直しによる大きなペナルティがプロ
セッサにかかり、ロードアクセス速度が低下することに
なる。このように、状態ビットSが用いられる方が、用
いられない場合に比較して、ロードアクセス性能を向上
させることができる。
【0029】なお、状態ビットSの初期値は“0”であ
る(図中“Initialize”)。また、図1の構成におい
て、ロードアドレスキャッシュ101に格納されるロー
ドアドレスA(Ar 、Aw )は、仮想アドレスではなく
実アドレス(物理アドレス)とされる。即ち、ロードア
ドレスキャッシュ101はアドレス変換機構を潜在的に
有していることになる。これによって、プログラムカウ
ンタ値PCから直接、ロード命令の実アドレスを予測す
ることができる。今日の高速プロセッサは、小容量かつ
高速な1次データキャッシュを有しており、その1次デ
ータキャッシュは、実アドレスタグを有するのが一般的
になってきている。本実施の形態では、ロードアドレス
キャッシュ101に格納されるロードアドレスAが実ア
ドレスとされることにより、ロード命令のフェッチステ
ージでロードアドレスキャッシュ101に対するアクセ
スと予測アドレスAp の計算を実行し、次のデコードス
テージでその予測アドレスAp を用いて1次データキャ
ッシュを投機的にアクセスすることが可能となり、それ
に続くステージでその投機的なアクセスによってロード
されたデータに他の並列に実行されている命令列がアク
セスすることが可能となる。これは、アドレス予測が成
功した場合には、ロード命令のレイテンシが大幅に短縮
されることを意味する。
【0030】以上の発明の構成において、例えば、ある
ロード命令が、 PC 5:2 =‘1010’:load rs1+rs2 →rd; である場合を考察する。ここで、 PC 5:2 =‘1010'
は、ロード命令のプログラムカウンタ値の第5ビットか
ら第2ビットの値が‘1010' であることを示している。
図1の比較器102は、このビット部分‘1010' とロー
ドアドレスキャッシュ101内の各タグとを比較する。
また、load rs1+rs2 →rdは、レジスタrs1とレジスタr
s2 の値を加算して得られるロードアドレスに対してロ
ード処理を実行し、ロードされたデータをレジスタrdに
格納するというロード命令を示している。ここで、上記
ロード命令が最初に実行されたときのロードアドレス
(rs1 +rs2 )が‘10010000' であり、2回目に実行さ
れたときのロードアドレス(rs1+rs2 )が‘10010010'
であるとすると、ロードアドレスキャッシュ101内
のタグ‘1010' には、Aw =‘10010010' とΔw =‘1
0' がライトされる。そして、3回目にこのロード命令
がフェッチされたときに、図1に示される構成によっ
て、予測アドレスAp =Ar +Δr =‘10010010' +
‘10' =‘10010100' が計算され、そのロード命令の命
令デコードステージにおいて、データキャッシュの上記
予測アドレスに対するロード処理が、投機的に実行され
ることになる。
【0031】次に、ロードアドレス予測が行われた場合
における命令の依存性について考察する。今、次のよう
な命令列を仮定する。 (1) sethi 1dd,r20 (2) or r20,2de,r20 (3) ld r20,r10,r08 (4) ld r26,r10,r23 (5) sub r23,r08,r23 (6) ... この命令列の真のレジスタ間依存関係は、 である。即ち、ロードアドレス予測が行われない場合に
は、命令(3) と(4) は、命令(1) と(2) の実行が終了す
るまでは実行できず、命令(5) は命令(3) と(4)の実行
が終了するまでは実行できないことになる。これに対し
て、ロードアドレス予測が行われその予測が成功した場
合には、レジスタ間依存関係は、 (1) →(2) (3) →(5) (4) →(5) となる。即ち、この場合には、命令(1) と(3) と(4) を
並列に実行することができ、それらの実行の終了を待っ
て命令(2) と(5) を実行することができ。即ち、ロード
アドレス予測が行われその予測が成功した場合には、ロ
ードアドレス予測が行われなかった場合に比較して、レ
ジスタ間依存関係の深さが1/2となり、命令レベルで
の並列度ILPを向上させることができ、プロセッサの
高速化を図れることがわかる。
【0032】図3に、本実施の形態におけるロード命令
のパイプライン動作を示す。まずロード命令は、命令フ
ェッチステージ301において命令キャッシュからフェ
ッチされると共に、そのプログラムカウンタ値PCによ
って、図1のロードアドレスキャッシュ101がアクセ
スされる。この結果、前述したようにして予測アドレス
Ap が出力される。
【0033】次に、命令デコードステージ302におい
て、フェッチされたロード命令がデコードされるととも
に、データキャッシュ内の上記予測アドレスAp に対応
する実アドレスに対する第1命令サイクル目のロードア
クセスであるデータキャッシュアクセス1が実行され
る。
【0034】次に、データキャッシュアクセス2ステー
ジ303において、データキャッシュ内の上記予測アド
レスAp に対応する実アドレスに対してロードアクセス
が続行される。即ちこの例では、図5の場合と同様に、
データキャッシュアクセスのレイテンシは2命令サイク
ルであると仮定している。
【0035】そして、ライトバックステージ304にお
いて、アクセス結果が一時レジスタにライトされる。一
方、前述したデータキャッシュアクセス2ステージ30
3と並行して実行される実行ステージ305において、
デコードされたロード命令によってアクセスされる実際
のロードアドレスが計算される。
【0036】次に、前述したライトバックステージ30
4と並行して実行されるアドレス変換ステージ306に
おいて、実際に計算されたロードアドレスのアドレス形
式が仮想アドレス形式から実アドレス形式に変換され
る。
【0037】続いて、上記アドレス変換ステージ306
に続いて実行される予測判定ステージ307において、
図1の制御部104が、前述した予測判定を行う。そし
て、制御部104が、アドレス予測が成功したことを示
す予測判定信号105を出力した場合には、ライトバッ
クステージ308において、前述したロード命令の投機
的な実行により一時レジスタに格納されていたロードデ
ータが、ロード命令のオペランドによって指定されるレ
ジスタファイルにライトされる。
【0038】一方、制御部104が、アドレス予測が失
敗したことを示す予測判定信号105を出力した場合に
は、前述した予測判定ステージ307に続いてデータキ
ャッシュアクセス1ステージ309が実行され、ここ
で、データキャッシュ内の実際に計算された実アドレス
に対してロードアクセスが実行される。
【0039】次に、データキャッシュアクセス1ステー
ジ309に続いてデータキャッシュアクセス2ステージ
310が実行され、ここで、データキャッシュ内の実際
に計算された実アドレスに対してロードアクセスが続行
される。
【0040】そして、データキャッシュアクセス2ステ
ージ310に続いてライトバックステージ311が実行
され、ここで、アクセス結果がレジスタファイルにライ
トされる。
【0041】図3に示されるパイプライン動作からわか
るように、アドレス予測が成功した場合には、ロード命
令に続いてパイプラインにフェッチされ並列に実行され
る他の命令は、そのロード命令の命令デコードステージ
が完了してからデータキャッシュアクセス2ステージ3
10の実行分の1命令サイクルを待つだけで、一時レジ
スタに格納されたロードデータにアクセスすることが可
能となり、命令レベルでの並列度ILPを向上させるこ
とが可能となる。
【0042】
【発明の効果】本発明によれば、ロードアドレスとその
差分値がロードアドレスキャッシュ手段にキャッシング
され、ロード命令のフェッチ時にその手段が参照される
ことによって、ロード命令の実行を待たずにロードアド
レスを予測して投機的なデータアクセスを行うことがで
きる。この結果、アドレス予測が成功した場合には、そ
のロード命令に続いてパイプライン等にフェッチされ並
列に実行される他の命令が上記投機的に得られたロード
データにアクセスすることが可能となり、命令レベルで
の並列度を向上させることができる。
【0043】次に、制御手段は、それが保持していた状
態ビットが予測失敗を示す値であるとき、即ち、前回も
アドレス予測が失敗したと判定していた場合において今
回もアドレス予測が失敗したと判定した場合、つまり2
回連続してアドレス予測が失敗したと判定した場合にお
いてのみ、ロードアドレスキャッシュ手段中の差分値を
更新する。この結果、例えばロードアドレスが第1のア
ドレスから第2のアドレスまで一定の割合で増加した後
に再び第1のアドレスに戻って同じ増加を繰り返すよう
なデータロード処理が実行されるような場合において、
第2のアドレスから第1のアドレスにロードアドレスが
戻ってアドレス予測が失敗する際に、ロードアドレスキ
ャッシュ手段内の差分値は変更されないように動作する
ことができ、その次のロード命令のフェッチ時に、アド
レス予測を成功させることができて、ロード命令の実行
のし直しの確率を低減させることが可能となり、ロード
アクセス性能を向上させることができる。
【0044】更に、ロードアドレスキャッシュ手段に格
納されるロードアドレスが、仮想アドレスではなく実ア
ドレス(物理アドレス)とされることにより、ロードア
ドレスキャッシュ手段にアドレス変換機構を潜在的に持
たせることができ、これによって、プログラムカウンタ
値から直接、ロード命令の実アドレスを予測することが
可能となる。この結果、例えば実アドレスタグを有する
1次データキャッシュ等に対するロードアクセスにおい
て、ロード命令のフェッチから上記予測アドレスに基づ
く上記データキャッシュに対する投機的なロードアクセ
スまでの時間を短縮させることがき、ロード命令のレイ
テンシを大幅に短縮させることが可能となる。
【図面の簡単な説明】
【図1】本発明の実施の形態の構成図である。
【図2】状態ビットの遷移図である。
【図3】本実施の形態におけるロード命令のパイプライ
ン動作を示す図である。
【図4】演算命令のパイプライン動作を示す図である。
【図5】従来のロード命令のパイプライン動作を示す図
である。
【符号の説明】
101 ロードアドレスキャッシュ 102 比較器 103 加算器 104 制御部 105 予測判定信号

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 前回のロードアドレスと、該前回のロー
    ドアドレスの前前回のロードアドレスに対する差分値
    と、アドレス予測が成功か失敗かを示す状態ビットと
    を、タグに対応させて記憶し、前記状態ビットの初期値
    としてアドレス予測の失敗を示すビット値を記憶する
    ードアドレスキャッシュ手段と、実行すべきロード命令に対し、該 ロード命令を指定する
    プログラムカウンタ値のタグと前記ロードアドレスキャ
    ッシュ手段の保持するタグとを比較して一致するタグ
    を検出するタグ検出手段と、前記ロードアドレスキャッシュ手段から、 前記タグ検出
    手段の検出したタグに対応して記憶されている前回ロー
    ドアドレス及び差分値を読み出し、それらを加算するこ
    とにより、前記ロード命令に対する実際のロードアドレ
    スの計算前に、該実際のロードアドレスの予測値である
    予測アドレスを生成出力する予測アドレス生成手段と、前記ロード命令に対しアドレス計算により実際のロード
    アドレスを算出して、該実際のロードアドレスと前記予
    測アドレス生成手段から出力された予測アドレスとを比
    較し、一致の場合はアドレス予測の成功と判定し、不一
    致の場合はアドレス予測の失敗と判定し、その判定結果
    に基づき、前記ロードアドレスキャッシュ手段に前記検
    出されたタグに対応して記憶されている前回ロードアド
    レス、差分値及び状態ビットをそれぞれ新たな前回ロー
    ドアドレス、新たな差分値及び新たな状態ビットに書き
    換える制御手段と、 を有し、該制御手段は、 前記アドレス予測の成功と判定した場合には、前記予測
    アドレス生成手段から出力された予測アドレスを前記新
    たな前回ロードアドレスとして、かつ、前記ロードアド
    レスキャッシュ手段に前記検出されたタグに対応して記
    憶されている差分値を前記新たな差分値として、かつ、
    アドレス予測の成功を示すビット値を前記新たな状態ビ
    ットとして、前記ロードアドレスキャッシュ手段に書き
    込み、 前記アドレス予測の失敗と判定した場合であって、前記
    ロードアドレスキャッシュ手段に前記検出されたタグに
    対応して記憶されている状態ビットがアドレス予測の失
    敗を示すビット値である場合には、前記実際のロードア
    ドレスを前記新 たな前回ロードアドレスとして、かつ、
    前記ロードアドレスキャッシュ手段に前記検出されたタ
    グに対応して記憶されているロードアドレスに対する前
    記実際のロードアドレスの差分値を前記新たな差分値と
    して、かつ、アドレス予測の失敗を示すビット値を前記
    新たな状態ビットとして、前記ロードアドレスキャッシ
    ュ手段に書き込み、 前記アドレス予測の失敗と判定した場合であって、前記
    ロードアドレスキャッシュ手段に前記検出されたタグに
    対応して記憶されている状態ビットがアドレス予測の成
    功を示すビット値である場合には、前記実際のロードア
    ドレスを前記新たな前回ロードアドレスとして、かつ、
    前記ロードアドレスキャッシュ手段に前記検出されたタ
    グに対応して記憶されている差分値を前記新たな差分値
    として、かつ、アドレス予測の失敗を示すビット値を前
    記新たな状態ビットとして、前記ロードアドレスキャッ
    シュ手段に書き込む、 ことを特徴とするロードアドレスキャッシュ装置。
  2. 【請求項2】 前記ロードアドレスキャッシュ手段に記
    憶されるロードアドレスは実アドレスである、 ことを特徴とする請求項1に記載のロードアドレスキャ
    ッシュ装置。
  3. 【請求項3】 ロードアドレスキャッシュに、前回のロ
    ードアドレスと、前回のロードアドレスの前前回のロ
    ードアドレスに対する差分値と、アドレス予測が成功か
    失敗かを示す状態ビットとを、タグに対応させて記憶
    し、前記状態ビットの初期値としてアドレス予測の失敗
    を示すビット値を記憶し実行すべきロード命令に対し、該 ロード命令を指定する
    プログラムカウンタ値のタグと前記ロードアドレスキャ
    ッシュの保持する各タグとを比較して一致するタグを検
    出し、 前記ロードアドレスキャッシュから、前記検出したタグ
    に対応して記憶されている前回ロードアドレス及び差分
    値を読み出し、それらを加算することにより前記ロー
    ド命令に対する実際のロードアドレスの計算前に、該実
    際のロードアドレスの予測値である予測アドレスを生成
    出力し 前記ロード命令に対しアドレス計算により実際のロード
    アドレスを算出して、実際のロードアドレスと前記予
    測アドレスとを比較し、一致の場合はアドレス 予測の成
    功と判定し、不一致の場合はアドレス予測の失敗と判定
    し、 その判定結果に基づき、前記ロードアドレスキャッシュ
    に前記検出されたタグに対応して記憶されている前回ロ
    ードアドレス、差分値及び状態ビットをそれぞれ新たな
    前回ロードアドレス、新たな差分値及び新たな状態ビッ
    トに書き換え、 該書き換えにおいては、 前記アドレス予測成功判定した場合には、前記予測
    アドレスを前記新たな前回ロードアドレスとして、か
    つ、前記ロードアドレスキャッシュに前記検出されたタ
    グに対応して記憶されている差分値を前記新たな差分値
    として、かつ、アドレス予測の成功を示すビット値を前
    記新たな状態ビットとして、前記ロードアドレスキャッ
    ュに書き込み、 前記アドレス予測失敗判定した場合であって、前記
    ロードアドレスキャッシュに前記検出されたタグに対応
    して記憶されている状態ビットがアドレス予測失敗を
    示すビット値である場合には、前記実際のロードアドレ
    スを前記新たな前回ロードアドレスとして、かつ、前記
    ロードアドレスキャッシュに前記検出されたタグに対応
    して記憶されているロードアドレスに対する前記実際の
    ロードアドレスの差分値を前記新たな差分値として、
    、アドレス予測の失敗を示すビット値を前記新たな状
    態ビットとして、前記ロードアドレスキャッシュに書き
    込み、 前記アドレス予測失敗判定した場合であって、前記
    ロードアドレスキャッシュ手段に前記検出されたタグに
    対応して記憶されている状態ビットがアドレス予測
    功を示すビット値である場合には、前記実際のロードア
    ドレスを前記新たな前回ロードアドレスとして、かつ、
    前記ロードアドレスキャッシュに前記検出されたタグに
    対応して記憶されている差分値を前記新たな差分値とし
    て、かつ、アドレス予測の失敗を示すビット値を前記新
    たな状態ビットとして、前記ロードアドレスキャッシ
    書き込む、 とを特徴とするロードアドレスキャッシュ方法。
JP08046514A 1996-03-04 1996-03-04 ロードアドレスキャッシュ装置及び方法 Expired - Fee Related JP3102846B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP08046514A JP3102846B2 (ja) 1996-03-04 1996-03-04 ロードアドレスキャッシュ装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08046514A JP3102846B2 (ja) 1996-03-04 1996-03-04 ロードアドレスキャッシュ装置及び方法

Publications (2)

Publication Number Publication Date
JPH09244889A JPH09244889A (ja) 1997-09-19
JP3102846B2 true JP3102846B2 (ja) 2000-10-23

Family

ID=12749385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08046514A Expired - Fee Related JP3102846B2 (ja) 1996-03-04 1996-03-04 ロードアドレスキャッシュ装置及び方法

Country Status (1)

Country Link
JP (1) JP3102846B2 (ja)

Also Published As

Publication number Publication date
JPH09244889A (ja) 1997-09-19

Similar Documents

Publication Publication Date Title
JP2938426B2 (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
US5421022A (en) Apparatus and method for speculatively executing instructions in a computer system
US5420990A (en) Mechanism for enforcing the correct order of instruction execution
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
US5878254A (en) Instruction branching method and a processor
US20040117606A1 (en) Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
JP4243271B2 (ja) データ処理装置およびデータ処理方法
JPH06242951A (ja) キャッシュメモリシステム
US20160196156A1 (en) Simulation apparatus, simulation method, and computer product
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
US5634136A (en) Data processor and method of controlling the same
JPH02287626A (ja) パイプライン方式の分岐命令制御装置
US7603545B2 (en) Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
JP3102846B2 (ja) ロードアドレスキャッシュ装置及び方法
JP2723238B2 (ja) 情報処理装置
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JP2894438B2 (ja) パイプライン処理装置
US6360310B1 (en) Apparatus and method for instruction cache access
US6578135B1 (en) Method and apparatus for performing addressing operations in a superscalar superpipelined processor
KR950000088B1 (ko) 데이터처리시스템
JP3547562B2 (ja) マイクロプロセッサ
JP2591325B2 (ja) 分岐制御装置
JPH06131180A (ja) 命令処理方式および命令処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20000815

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

Free format text: PAYMENT UNTIL: 20080825

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees