JPH10260834A - ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法 - Google Patents

ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法

Info

Publication number
JPH10260834A
JPH10260834A JP9064138A JP6413897A JPH10260834A JP H10260834 A JPH10260834 A JP H10260834A JP 9064138 A JP9064138 A JP 9064138A JP 6413897 A JP6413897 A JP 6413897A JP H10260834 A JPH10260834 A JP H10260834A
Authority
JP
Japan
Prior art keywords
instruction
address
data address
data
difference
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.)
Withdrawn
Application number
JP9064138A
Other languages
English (en)
Inventor
Haruko Nishimoto
晴子 西本
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 JP9064138A priority Critical patent/JPH10260834A/ja
Publication of JPH10260834A publication Critical patent/JPH10260834A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 ロードアドレス予測装置および並列処理装置
およびそのロードアドレス予測方法に関し,命令実行が
データアドレスのアドレス計算結果に依存するロード命
令等を高速に処理することを目的とする。 【解決手段】 ベーシックブロックのロード先頭命令に
対して前回使用したアドレスと前々回使用したアドレス
との差分ΔW,および2番目以後の命令に対して,前回
使用したアドレスと前回のロード先頭命令の使用したア
ドレスとの差分ΔW’と,ロード先頭命令の有無を表す
情報を保持し,ロード先頭命令に対して,ロード先頭命
令が前回使用したデータアドレスと上記差分ΔW,およ
び2番目以降のロード命令に対して,今回のロード先頭
命令の使用したアドレスと上記差分ΔW’とによりデー
タアドレスを予測するとともに,予測アドレスが不正解
の場合に,実際のアドレスに基づいて該差分を求め,差
分を更新する構成を持つ。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は,パイプラインプロ
セッサ等の並列処理により高速にデータ処理する並列処
理装置において,ロード命令等の実行に必要なデータア
ドレスを予測する技術に関する。
【0002】
【従来の技術】一般的なプロセッサでは,メモリからの
データの読み出しや書き込みが頻繁に行われる。そのた
め,プロセッサの高速化のためには,プログラム実行時
にプログラムにデータをうまく供給する必要がある。プ
ロセッサのクロック周波数は急激に高速化しているが,
データのロードレイテンシイはあまり減少していない。
従って,プロセッサの性能が向上するのにつれて,デー
タのロードレイテンシイの影響が相対的に大きくなって
いる。
【0003】従来のマイクロプロセッサでは,ロード命
令の処理に複数サイクルを必要とすることが多く,特
に,ロード命令が多く実行されるアプリケーションプロ
グラム(整数系プログラムに多い)においては,その影
響が大きかった。また,ロード命令とそのデータアドレ
ス計算命令間ではレジスタ間に依存関係が発生し,デー
タアドレスに使用するレジスタの計算結果が判明するま
でロード命令が実行できなかった。
【0004】従来のロード命令パイプライン動作につい
て図7を参照して説明する。図7 (a)は,従来のロード
命令のパイプラインの動作を示す。ロード命令は,命令
フェッチステージで命令キャッシュからフェッチされる
(Fetch)。次に命令デコードステージにおいてフ
ェッチされたロード命令がデコードされるとともに,必
要に応じてレジスタファイルからデータがロードされる
(Decode)。続いて,実行ステージにおいて,デ
コードされたロード命令によってアクセスされるデータ
の実行アドレスが計算される(Address cal
culation)。このアドレス計算は,そのロード
命令により指定されたレジスタファイルや即値の換算演
算が必要である。次にデータキャッシュ内のアドレスに
対してロード命令が実行される(D−cache ac
cess)。そして,ライトバックステージで,アクセ
ス結果がレジスタファイルにライトされる(Write
back)。
【0005】また,ロード命令等で従来生じるパイプラ
インストール等について (b)により説明する。図7 (b)
はパイプライン処理の例である。各ステージの処理は次
のとおりである。
【0006】(1) レジスタR1に値1ddのデータを
セットする。 (2) レジスタR1のデータと値2deのデータのオア
をビット毎にとりレジスタR1にセットする(〔R1+
R3〕はロード命令等で必要とするアドレスである)。
【0007】(3) レジスタR1の値とレジスタR3の
値を加算し,レジスタR4にセットする(〔R1+R
2〕はロード命令等で必要とするアドレスである)。 (4) レジスタR1の値とレジスタR2の値を加算し,
レジスタR5にセットする。
【0008】(5) レジスタR5の値からレジスタR4
の値を引算し,結果をレジスタR6にセットする。
【0009】
【発明が解決しようとする課題】このように,従来のロ
ード命令のパイプライン処理では,(1)→(2)→
(3),もしくは(1)→(2)→(4)のように依存
関係を生じる。即ち,(3)のアドレス計算に(2)のレ
ジスタR1の値を使用し,(4)のアドレス計算に
(2)のレジスタR1の値を使用するので,(2)の計
算結果がでないとロード命令が実行できず,処理が遅れ
た。さらに,後続命令もロード命令の処理が終わるまで
待たされるので,パインプライン処理全体に遅れを生じ
ることとなる。
【0010】本発明は,計算機の並列処理において,ロ
ード命令等の命令実行に必要なデータアドレスを予測
し,並列処理を高速に行う,ロードアドレス予測装置,
並列処理装置,およびそのロードアドレス予測方法を提
供することを目的とする。
【0011】
【課題を解決するための手段】本発明の請求項1の発明
は,順番に実行する命令を実行順に保持するベーシック
ブロックにおける命令であってデータアドレスのアドレ
ス計算結果を必要とする命令(命令Aとする)に対し
て,ベーシックブロック内の最初に出現する命令A(先
頭命令Aとする)に対して前回の先頭命令Aの使用した
データアドレスと前々回に先頭命令Aの使用したデータ
アドレスとの差分ΔW,およびベーシックブロックにお
いて2番目以降に出現する命令Aに対しては前回のベー
シックブロックの先頭命令Aの使用したデータアドレス
もしくは自身より前に位置する任意の命令A(命令Bと
する)の前回使用したデータアドレスからの差分Δ
W’,およびベーシックブロック内の先頭命令Aである
かないかを表す情報を持つロードアドレス保持部と,現
在データアドレスを必要とする先頭命令Aに対しては前
回の先頭命令Aの使用したデータアドレスと該差分ΔW
とによりデータアドレスを予測し,現在データアドレス
を必要とする2番目以降の命令Aに対しては前回の先頭
命令Aもしくは命令Bの使用したデータアドレスと該差
分ΔW’とによりデータアドレスを予測する予測アドレ
ス生成部と,現在データアドレスを必要とする先頭の命
令Aに対しては実際のデータアドレスと前回の先頭命令
Aの使用したデータアドレスとの差分ΔW,現在データ
アドレスを必要とする2番目以降の命令Aに対しては実
際のそのデータアドレスと前回の先頭命令Aもしくは前
回の使用したデータアドレスの差分ΔW’を求め,予測
したデータアドレスと実際のデータアドレスが異なった
場合に,該差分によりアドレス命令保持部の差分(ΔW
もしくはΔW’)を更新する差分生成部とを備えること
を特徴とするロードアドレス予測装置である。
【0012】本発明の請求項2の発明は,実行する命令
を保持する命令保持部と,命令を実行する命令実行部
と,命令を実行するのに必要なデータを保持するデータ
保持部とを備え,命令を並列処理する並列処理装置にお
いて,順番に実行する命令を実行順に保持するベーシッ
クブロックにおける命令であってデータアドレスのアド
レス計算結果を必要とする命令(命令Aとする)のデー
タアドレスを予測する予測アドレス装置と,予測したデ
ータアドレスに基づいて取り出したデータを保持するデ
ータ一時保持部と,予測したデータアドレスと実際のデ
ータアドレスを比較する予測正否判定部と,予測正否判
定部の判定結果に従って該データ一時保持部の保持する
データもしくは実際のデータアドレスによりデータ保持
部から取り出したデータを選択するセレクタとを備え,
ロードアドレス予測装置は,ベーシックブロック内の最
初に出現する命令A(先頭命令Aとする)に対して前回
の先頭命令Aの使用したデータアドレスと前々回に先頭
命令Aの使用したデータアドレスとの差分ΔW,および
ベーシックブロックにおいて2番目以降に出現する命令
Aに対しては前回のベーシックブロックの先頭命令Aの
使用したデータアドレスもしくは自身より前に位置する
任意の命令A(命令Bとする)の前回使用したデータア
ドレスからの差分ΔW’,およびベーシックブロック内
の先頭命令Aであるかないかを表す情報を持つロードア
ドレス保持部と,現在データアドレスを必要とする先頭
命令Aに対しては前回の先頭命令Aの使用したデータア
ドレスと該差分ΔWとによりデータアドレスを予測し,
現在データアドレスを必要とする2番目以降の命令Aに
対しては前回の先頭命令Aもしくは命令Bの使用したデ
ータアドレスと該差分ΔW’とによりデータアドレスを
予測する予測アドレス生成部と,現在データアドレスを
必要とする先頭の命令Aに対しては実際のデータアドレ
スと前回の先頭命令Aの使用したデータアドレスとの差
分ΔW,現在データアドレスを必要とする2番目以降の
命令Aに対しては実際のそのデータアドレスと前回の先
頭命令Aもしくは前回の使用したデータアドレスの差分
ΔW’を求め,予測したデータアドレスと実際のデータ
アドレスが異なった場合に,該差分によりアドレス命令
保持部の差分(ΔWもしくはΔW’)を更新する差分生
成部とを備え,命令実行部は予測したデータアドレスの
データにより命令を実行し,予測したデータアドレスが
実際のデータアドレスと異なることが判明した時に,セ
レクタは実際のデータアドレスに基づくデータを選択
し,命令実行部は予測したデータアドレスによる演算結
果をキャンセルし,実際のデータアドレスのデータによ
り演算することを特徴とする並列処理装置である。。
【0013】本発明の請求項3の発明は,並列処理装置
で命令を実行するのに必要なデータアドレスを予測する
アドレス予測方法において,順番に実行する命令を実行
順に保持するベーシックブロックにおける命令であって
データアドレスのアドレス計算結果を必要とする命令
(命令Aとする)に対して,ベーシックブロック内の最
初に出現する命令A(先頭命令Aとする)に対して前回
の先頭命令Aの使用したデータアドレスと前々回に先頭
命令Aの使用したデータアドレスとの差分ΔW,および
ベーシックブロックにおいて2番目以降に出現する命令
Aに対しては前回のベーシックブロックの先頭命令Aの
使用したデータアドレスもしくは自身より前に位置する
任意の命令A(命令Bとする)の前回使用したデータア
ドレスからの差分ΔW’,およびベーシックブロック内
の先頭命令Aであるかないかを表す情報を持つロードア
ドレス保持部し,現在データアドレスを必要とする先頭
命令Aに対しては前回の先頭命令Aの使用したデータア
ドレスと該差分ΔWとによりデータアドレスを予測し,
現在データアドレスを必要とする2番目以降の命令Aに
対しては前回の先頭命令Aもしく命令Bの使用したデー
タアドレスと該差分ΔW’とによりデータアドレスを予
測することを特徴とする並列処理装置におけるロードア
ドレス予測方法である。
【0014】図1は本発明の基本構成を示す。図1にお
いて,1は命令保持部であって,命令列を保持するもの
である。
【0015】2は命令実行部であって,データ保持部8
から取り出されたデータにより命令の演算を行うもので
ある。2’はロードアドレス予測装置であって,データ
アドレスの計算結果のアドレスのデータを必要とする命
令A(例えばロード命令等)で使用するデータアドレス
を予測するものである。以後,データアドレスのアドレ
ス計算を単にアドレス計算と称し,命令Aとしてロード
命令の場合について例示的に説明する。
【0016】3はロードアドレス保持部であって,ベー
シックブロックのロード命令等の実行に必要なデータア
ドレスを計算をするための情報を保持するものである。
ベーシックブロックは分岐命令を含まない命令ブロック
であって,ロードされている命令群がロードされている
順番に連続的に処理されるものである。データアドレス
の計算(アドレス計算)をするための情報は,ベーシッ
クブロック内で最初に出現するロード命令(以後,ロー
ド先頭命令と称する)であるか,あるいはベーシックブ
ロック内のロード命令のうち2番目以後に出現したロー
ド命令であるかを表すロード先頭命令情報,ロード先頭
命令に対しては,前回の処理においてロード先頭命令の
使用したデータアドレスと前々回にロード先頭命令の使
用したデータアドレスとの差分ΔW,およびベーシック
ブロックの2番目以降の命令に対しては前回においてそ
の命令のロード先頭命令からの順番が同じであるロード
命令の使用したデータアドレスと前回において先頭命令
の使用したデータアドレスからの差分ΔW’,ΔW”も
しくは自身より前の順番が同じであるロード命令が前回
において使用したデータアドレス(例えば,自身がロー
ド先頭命令から4番目にある時,ロード先頭命令から3
番目にあるロード命令の使用したデータアドレス等)と
の差分ΔW’,ΔW”である。
【0017】4は差分生成部であって,ベーシックブロ
ックのロード先頭命令に対しては,命令実行部でアドレ
ス計算して求められた実際のアドレスと前回にロード先
頭命令が使用したデータアドレスとの差分ΔWを求め,
ベーシックブロックの2番目以後の命令に対しては,命
令実行部の求めた実際のデータアドレスとその時のロー
ド先頭命令の使用したデータアドレスとの差分ΔW’,
ΔW”,あるいは,命令実行部の求めた実際のデータア
ドレスとその時の自身より前の順番(例えば直前)のロ
ード命令が使用したデータアドレスとの差分を求め,実
際に求めたデータアドレスと予測アドレスが異なる場合
に,実際のデータアドレスに従って求めた差分ΔW,Δ
W’あるいはΔW”でロードアドレス保持部の差分を更
新するものである。
【0018】5は予測アドレス生成部であって,ベーシ
ックブロックのロード先頭命令であるか,あるいは2番
目以降の命令であるかを判定し,ロード先頭命令であれ
ば,前回のロード先頭命令の使用したデータアドレスと
差分ΔWとにより今回のデータアドレスを予測的に生成
し,2番目以降の命令であれば,今回のロード先頭アド
レスの使用したデータアドレスと差分ΔW’,ΔW”と
により今回のデータアドレスを予測する,あるいは,今
回,自身より前のロード命令(例えば直前のロード命
令)の使用したデータアドレスと差分ΔW’,ΔW”と
により今回のデータアドレスを予測するものである。以
後,2番目以後のデータアドレスを予測する場合にはロ
ード先頭命令の使用したデータアドレスと差分ΔW’,
ΔW”とによりデータアドレスを予測する場合を例とし
て説明する。
【0019】8はデータ保持部であって,命令実行部が
命令を実行するのに必要なデータを保持するものであ
る。9はデータ一時保持部であって,予測アドレスによ
りデータ保持部8から取り出したデータを一時保持する
ものである。
【0020】図1の本発明の基本構成の動作を説明す
る。以下,アドレスはデータアドレスを意味する。予測
アドレス生成部5は,ロード先頭命令に対しては前回ア
ドレスに差分ΔW(前回アドレスと前々回のアドレスと
の差分)を加算して,今回の予測アドレスを生成する。
また,2番目以降の命令については,今回のロード先頭
命令の使用したデータアドレスに差分ΔW’を加算し
て,予測アドレスを生成する。予測アドレスによりデー
タ保持部8から取り出されたデータはデータ一時保持部
9に保持され,実際のアドレスが計算されるまでの間命
令実行部2において演算に使用される。
【0021】差分生成部4は,ロード先頭命令に対して
は,命令実行部2でアドレス計算して求められた実際の
アドレスと前回にロード先頭命令が使用したデータアド
レスとの差分ΔWを求め,ベーシックブロックの2番目
以後の命令に対しては,命令実行部の求めた実際のデー
タアドレスとその時のロード先頭命令の使用したデータ
アドレスとの差分ΔW’,ΔW”を求める。そして,予
測アドレスと命令実行部で実際に求められたアドレスが
一致していない場合には差分ΔW,ΔW’でロードアド
レス保持部の差分を更新する。
【0022】命令実行部2は,実際のアドレスが求めら
れるまでの間は,予測アドレスにより取り出され,デー
タ一時保持部に保持されているデータを使用して命令を
実行する。そして,命令実行部2の求めた実際のアドレ
スと予測アドレスが一致していない場合には,そのデー
タをキャンセルし,実際のアドレスによりデータ保持部
8から取り出されたデータにより命令を実行しなおす。
(実際のアドレスと予測アドレスとが一致,不一致の判
定を行う部分は図示を省略されている(実施例参
照))。
【0023】本発明によれば,パイプライン処理におい
て,ロード命令等で必要なアドレス計算を省略でき,ロ
ードアドレス保持部へのアクセスは,命令フェッチのサ
イクルに行うことができる。そのため,命令フェッチ,
ロードアドレス保持部ヘのアクセス,予測アドレス計算
を1サイクルで行うことができる。また,アドレス計算
の結果が出るまで後続命令が待たされることがなくなる
ので,パイプライン処理を高速化することができる。
【0024】
【発明の実施の形態】図2は,本発明のアドレス予測方
法の説明図であって,ベーシックブロックにロード命令
が3つある場合について,アドレス予測方法を説明した
ものである。
【0025】EA2- 先頭はロード先頭命令のデータア
ドレス(予測アドレス)である。 EA1- 先頭はロード先頭命令の前回の実効アドレス
(データが格納されているRAM上のアドレス)であ
る。
【0026】EA1- 2番目は2番目の命令の前回の2
番目の実効アドレスである。EA1 - 3は3番目の命令
の前回の実効アドレスである。 EA0- 先頭はロード先頭命令の前々回の実効アドレス
である。
【0027】EA0- 2番目は2番目の命令の前々回の
実効アドレスである。 EA0- 3番目は3番目の命令の前々回の実効アドレス
である。xはロード先頭命令の今回の予測データアドレ
ス(=EA2- 先頭)である。
【0028】yは今回の2番目の命令の予測データアド
レスである。zは今回の3番目の命令の予測データアド
レスである。ロード先頭命令の前回の実効アドレス(E
A1- 先頭)と前々回の実効アドレス(EA1- 2番
目)の差をΔWとする。
【0029】前回のロード先頭命令の実効アドレス(E
A1- 先頭)と前回の2番目の命令の実効アドレス(E
A1- 2番目)の実行アドレスとの差をΔW’とする。
前回のロード先頭命令の実効アドレス(EA1- 先頭)
と前回の3番目の命令の実効アドレス(EA1- 3番
目)との差をΔW”とする。
【0030】今回の予測アドレスを次のように定める。 x=EA1- 先頭+ΔW =EA1- 先頭+(EA1- 先頭−EA0- 先頭) y=x+ΔW’ =x+(EA1- 2番目−EA1- 先頭) z=x+ΔW” =x+(EA1- 3番目−EA1- 先頭) 図3は本発明のロードアドレス予測装置の実施例であ
る。
【0031】図3において,20はロードアドレス予測
装置である。21はロードアドレスキャッシュ(LA
C)であって,キャッシュメモリである(図1のロード
アドレス保持部に相当する)。ベーシックブロックのロ
ード命令のみに対応するもののみを保持し,ロード命令
のタグ(Tag,ロード命令の自身のアドレス(プログ
ラムカウンタの値PC)),アドレス(Addres
s,ロード命令が前回用いたデータアドレス))。複数
のベーシックブロックのロード命令について保持するこ
とができ,アドレスの差分ΔW(Delta),ベーシ
ックブロックのロード先頭命令であるかないかを表す情
報を表すS(1ビットの情報ヒット)をもつ。
【0032】22は比較器であって,プログラムカウン
タの示すアドレス(PC)とロードアドレスキャッシュ
のタグを比較するものである。23は加算器であって,
データアドレスAwにΔWを加算するものである。
【0033】24は予測制御部であって,ベージックブ
ロックのロード先頭命令の使用したデータアドレスの記
憶,差分であるΔ生成,Δを更新するかあるいは更新し
ないかの判定,Sフィールドの更新等の処理を行うもの
である。
【0034】36は予測正否判定部であって,予測アド
レスと命令実行部で実際に計算されたアドレス(データ
アドレス)を比較するものである。 51はΔ生成部 52はSフィールド更新部 53は先頭命令アドレス記憶制御部である。
【0035】54はΔ更新部である。ロードアドレスキ
ャッシュ21において,タグはロード命令のタグであり
ロード命令のアドレスを持つ。アドレスAwはその命令
が前回に用いたデータアドレス,ΔWは,ロード先頭命
令に対しては前回と前々回のデータアドレスとの差,も
しくは2番目以降の命令に対しては,前回のロード先頭
命令のデータアドレスと前回のデータアドレスとの差,
ステータスビットSは対応する命令がロード先頭命令で
あるかないかを表す。例えば,分岐命令が出現した後の
最初に出てきたロード命令PCに対してビット1を立て
る。それ以外は0とする。S=1であればロード先頭命
令,S=0であれば2番目以降の命令であることを表
す。
【0036】命令がフェッチされると,プログラムカウ
ンタの値PCによりロードアドレスキャッシュ21を検
索し,比較器22でタグとPCを比較する。検索した結
果,一致したPCが存在した場合,ロードアドレスキャ
ッシュヒットとなる。そして,ヒットした場合,ロード
先頭命令であればPCのエントリに含まれる前回アクセ
スしたアドレス(Aw)と前々回の差分値(ΔW)を加
算して今回の予測データアドレス(Ap)を算出する
(Ap=Aw+ΔW)。あるいは,ベーシックブロック
の2番目以降のロード命令であれば,前回のロード先頭
命令のアドレス(データアドレス)と差分Δw’とによ
り予測アドレスApを作成する。
【0037】この予測アドレスApを用いて,データキ
ャッシュアクセスを行う。そして,読み出したデータを
一時レジスタ(データ一時保持部)に書き込む。この一
時レジスタに保持されたデータは,実行部において実際
のアドレスが計算されるまで命令実行の演算に使用され
る。
【0038】一方,予測正否判定部36は,予測アドレ
スと実行アドレスの比較を行い,予測アドレスの正否を
判定する。Δ生成部はそのロード命令がロード先頭命令
の場合は,今回のその命令がアクセスしたデータアドレ
ス(実際のアドレス)と前回ロード先頭命令がアクセス
したデータアドレスとの差ΔWを求める。また,ロード
命令が2番目以後の命令であれば,Δ生成部51は,今
回その命令がアクセスしたデータアドレス(実際のアド
レス)と今回のロード先頭命令がアクセスしたデータア
ドレスとの差分ΔW’を求める。Δ更新部54は,予測
正否判定部の判定結果が,予測アドレス不正解を判定し
たら,Δ生成部51によりこのようして計算された差分
ΔW,ΔW’によりロードアドレスキャッシュの差分を
更新する。また,先頭命令アドレス記憶制御部53によ
りロード先頭命令が求められ,SフィールドもSフィー
ルド更新部52により更新される。
【0039】図4は本発明のロードアドレス予測装置を
含む周辺の全体ブロックの実施例構成図である。図4に
おいて,20はロードアドレス予測装置である。
【0040】21はロードアドレスキャッシュである。
24は予測制御部である。31は命令キャッシュであっ
て,命令列を保持するものである(図1の命令保持部1
に相当する)。
【0041】32は命令実行部であって,アドレス計算
をして命令を実行するものである。33はプログラムカ
ウンタである。34はプログラムカウンタの更新処理部
であって,プログラムカウンタを更新(increme
nt)するものである。
【0042】35はデータキャッシュであって,データ
を保持するものである。36は予測正否判定部であっ
て,予測アドレスの正否を判定するものである。37は
一時レジスタであって,予測アドレスのデータを一時保
持するものである(図1のデータ一時保持部に相当す
る)。
【0043】38はレジスタファイルであって,命令実
行部35で求めた実際のアドレスのデータを保持するも
のである。39はセレクタであって,予測結果が正しい
場合に一時レジスタ37のデータを選択し,予測結果が
正しくなかった場合にレジスタファイル38に保持され
たデータを選択して出力するものである。
【0044】図4の構成の動作を説明する。命令実行部
32は命令キャッシュ31から命令を取り出す。ロード
アドレス予測装置20において比較器によりプログラム
カウンタの値とタグが比較され,ロード命令アドレスで
あるかないかが判定される。ロード命令アドレスであれ
ば,ロードアドレス予測装置21において加算器により
予測アドレスが計算され,データキャッシュ35より予
測アドレスのデータが取り出されて一時レジスタ37に
保持される。一時レジスタ37に保持されたデータは,
命令実行部32で実際のアドレスが計算されて,予測ア
ドレスの正否が判定されるまで,命令実行部32におい
て演算に使用される。予測アドレスが正しかった場合に
は,その演算データは継続して使用され,予測アドレス
が正しくなかった場合にはそれまでのデータはキャンセ
ルされ,命令実行部32において計算された正しいアド
レスのデータに基づいて演算される。
【0045】予測正否判定部36は,命令実行部32で
計算された実際のアドレスと予測アドレスを比較し,予
測アドレスの正否を判定する。そして,その実際のアド
レスのデータがデータキャッシュより取り出され,レジ
スタファイル38に保持される。予測アドレスが正しく
なかった場合にはセレクタはレジスタファイル38のデ
ータを選択して命令実行部32に転送され,命令実行部
32はそのデータで演算をしなおす。
【0046】図5は本発明の実施例の動作説明図であ
る。図5において,21はロードアドレスキャッシュで
ある。
【0047】22は比較器である。23は加算器であ
る。24は予測制御部である。
【0048】36は予測正否判定部である。51はΔ生
成部(差分生成部)である。52はSフィールド更新部
である。
【0049】53は先頭命令アドレス記憶制御部であ
る。54はΔ更新部である。図5により本発明の動作を
説明する。
【0050】比較器22はプログムカウンタの値PCお
よびタグをロードアドレスキャッシュ21から入力し,
比較しPCのプログラムがロードアドレス命令であるか
ないかを判定する。ロードアドレス命令であれば,その
旨の信号を予測制御部24に通知する。
【0051】加算器は23は,予測制御部,PCで指定
された命令のアドレスと差分を入力する。情報Sが1で
あれば,前回アドレスと差分ΔWを加算し,予測アドレ
スを求める。また,情報Sが0であれば,ロード先頭命
令のアドレスと差分ΔW’あるいはΔW”を加算して予
測アドレスを求める。予測アドレスによりデータキャッ
シュがアクセスされ,予測アドレスのデータが取り出さ
れる。
【0052】命令実行部で計算された実際のアドレスが
予測正否判定部36に入力され,予測アドレスの正否が
判定される。予測アドレスが実際のアドレスと異なって
いた場合には,Δ生成部51は,実際のアドレスと前回
のアドレスとの差を求め,ΔWを更新し,Δ更新部54
はロードアドレスキャッシュ21の差分を更新する。ま
た,ベーシックブロックの2番目以降の命令について
は,Δ生成部51は今回のロード先頭命令の実際のアド
レスとの自身の実際のアドレスとの差を求め,Δ更新部
54は新たに求めた差分ΔW’により更新する。
【0053】先頭命令アドレス記憶制御部53は,命令
実行部の指示によりベーシックブロックの2番目以降の
命令の保持する命令のロード先頭命令のアドレスを更新
する。また,Sフィールド判定部52は先頭命令アドレ
ス記憶制御部53の指示によりS情報を更新する。
【0054】図6は,本発明のパイプライン動作の説明
図であり,本発明のロード命令のパイプラインとアドレ
ス計算に使用するレジスタとの依存関係を示す。図6
(a)は,本発明のロードアドレス命令のパイプライン動
作を示すものである。
【0055】本発明によれば,ロード命令等の命令実行
に必要なデータのアドレスを求めるアドレス計算を省略
でき,ロードアドレス保持部へのアクセスは,命令フェ
ッチのサイクルに行うことができる。そのため,命令フ
ェッチ,ロードアドレス保持部ヘのアクセス(LACア
クセス),予測アドレス計算を1サイクルで行うことが
できる。そのため,本発明のロード命令のパイプライン
は,図6 (a)のように,3サイクルで可能になり,パイ
プライン処理を高速化することができる。
【0056】図6 (b)は,本発明におけるロードアドレ
ス命令とアドレス計算命令の依存関係を示す。 (1) レジスタR1にデータ1ddをセットする。
【0057】(2) レジスタR1の内容とデータ2de
のオア論理をとりレジスタR1にセットする。 (3) 予測アドレス〔pred〕のデータをレジスタR
4にセットする。
【0058】(4) 予測アドレス〔pred〕のデータ
をレジスタR5にセットする。(3)と(4) のアドレスは
ロードアドレス予測装置により動的に予測されるため
に,独立にロード命令の実行を開始することができ,処
理が高速化される。
【0059】(5) レジスタR5とレジスタR4の内容
の差をレジスタR6に格納する。
【0060】
【発明の効果】本発明の請求項1の発明によれば,パイ
プライン処理でロード命令等が必要とするデータアドレ
スを前回の処理結果を元に予測的に生成することが可能
になる。
【0061】本発明の請求項2の発明によれば,パイプ
ライン処理でロード命令等が必要とするデータアドレス
を前回の処理結果を元に予測的に生成し,ロード命令等
を実行できるので,ロード命令の処理時間を低減するこ
とができる。また,ロードアドレスのアドレス計算のた
めに後続命令が待たされることによるパイプラインの流
れの乱れを最小限にすることができ,実行終了までのサ
イクル数が軽減できる。そのため,計算機の並列処理を
高速化することができる。
【0062】本発明の請求項3の発明によれば,パイプ
ライン処理でロード命令等が必要とするデータアドレス
を前回の処理結果を元に予測的に生成し,ロード命令等
を実行できるので,並列処理におけるロード命令の処理
時間を低減することができる。
【図面の簡単な説明】
【図1】本発明の基本構成を示す図である。
【図2】本発明のアドレス予測方法の説明図である。
【図3】本発明のロードアドレス予測装置の実施例を示
す図である。
【図4】本発明のロードアドレス予測装置を含む周辺の
全体ブロックの実施例構成図である。
【図5】本発明の実施例の動作説明図である。
【図6】本発明のパイプライン動作の説明図である。
【図7】従来のパイプライン動作の説明図である。
【符号の説明】
1:命令保持部 2:命令保持部 2’:ロードアドレス予測装置 3:ロードアドレス保持部 4:差分生成部 5:予測アドレス生成部 8:データ保持部 9:データ一時保持部

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 順番に実行する命令を実行順に保持する
    ベーシックブロックにおける命令であってデータアドレ
    スのアドレス計算結果を必要とする命令(命令Aとす
    る)に対して,ベーシックブロック内の最初に出現する
    命令A(先頭命令Aとする)に対して前回の先頭命令A
    の使用したデータアドレスと前々回に先頭命令Aの使用
    したデータアドレスとの差分ΔW,およびベーシックブ
    ロックにおいて2番目以降に出現する命令Aに対しては
    前回のベーシックブロックの先頭命令Aの使用したデー
    タアドレスもしくは自身より前に位置する任意の命令A
    (命令Bとする)の前回使用したデータアドレスからの
    差分ΔW’,およびベーシックブロック内の先頭命令A
    であるかないかを表す情報を持つロードアドレス保持部
    と,現在データアドレスを必要とする先頭命令Aに対し
    ては前回の先頭命令Aの使用したデータアドレスと該差
    分ΔWとによりデータアドレスを予測し,現在データア
    ドレスを必要とする2番目以降の命令Aに対しては前回
    の先頭命令Aもしくは命令Bの使用したデータアドレス
    と該差分ΔW’とによりデータアドレスを予測する予測
    アドレス生成部と,現在データアドレスを必要とする先
    頭の命令Aに対しては実際のデータアドレスと前回の先
    頭命令Aの使用したデータアドレスとの差分ΔW,現在
    データアドレスを必要とする2番目以降の命令Aに対し
    ては実際のそのデータアドレスと前回の先頭命令Aもし
    くは前回の使用したデータアドレスの差分ΔW’を求
    め,予測したデータアドレスと実際のデータアドレスが
    異なった場合に,該差分によりアドレス命令保持部の差
    分(ΔWもしくはΔW’)を更新する差分生成部とを備
    えることを特徴とするロードアドレス予測装置。
  2. 【請求項2】 実行する命令を保持する命令保持部と,
    命令を実行する命令実行部と,命令を実行するのに必要
    なデータを保持するデータ保持部とを備え,命令を並列
    処理する並列処理装置において,順番に実行する命令を
    実行順に保持するベーシックブロックにおける命令であ
    ってデータアドレスのアドレス計算結果を必要とする命
    令(命令Aとする)のデータアドレスを予測する予測ア
    ドレス装置と,予測したデータアドレスに基づいて取り
    出したデータを保持するデータ一時保持部と,予測した
    データアドレスと実際のデータアドレスを比較する予測
    正否判定部と,予測正否判定部の判定結果に従って該デ
    ータ一時保持部の保持するデータもしくは実際のデータ
    アドレスによりデータ保持部から取り出したデータを選
    択するセレクタとを備え,ロードアドレス予測装置は,
    ベーシックブロック内の最初に出現する命令A(先頭命
    令Aとする)に対して前回の先頭命令Aの使用したデー
    タアドレスと前々回に先頭命令Aの使用したデータアド
    レスとの差分ΔW,およびベーシックブロックにおいて
    2番目以降に出現する命令Aに対しては前回のベーシッ
    クブロックの先頭命令Aの使用したデータアドレスもし
    くは自身より前に位置する任意の命令A(命令Bとす
    る)の前回使用したデータアドレスからの差分ΔW’,
    およびベーシックブロック内の先頭命令Aであるかない
    かを表す情報を持つロードアドレス保持部と,現在デー
    タアドレスを必要とする先頭命令Aに対しては前回の先
    頭命令Aの使用したデータアドレスと該差分ΔWとによ
    りデータアドレスを予測し,現在データアドレスを必要
    とする2番目以降の命令Aに対しては前回の先頭命令A
    もしくは命令Bの使用したデータアドレスと該差分Δ
    W’とによりデータアドレスを予測する予測アドレス生
    成部と,現在データアドレスを必要とする先頭の命令A
    に対しては実際のデータアドレスと前回の先頭命令Aの
    使用したデータアドレスとの差分ΔW,現在データアド
    レスを必要とする2番目以降の命令Aに対しては実際の
    そのデータアドレスと前回の先頭命令Aもしくは前回の
    使用したデータアドレスの差分ΔW’を求め,予測した
    データアドレスと実際のデータアドレスが異なった場合
    に,該差分によりアドレス命令保持部の差分(ΔWもし
    くはΔW’)を更新する差分生成部とを備え,命令実行
    部は予測したデータアドレスのデータにより命令を実行
    し,予測したデータアドレスが実際のデータアドレスと
    異なることが判明した時に,セレクタは実際のデータア
    ドレスに基づくデータを選択し,命令実行部は予測した
    データアドレスによる演算結果をキャンセルし,実際の
    データアドレスのデータにより演算することを特徴とす
    る並列処理装置。
  3. 【請求項3】 並列処理装置で命令を実行するのに必要
    なデータアドレスを予測するアドレス予測方法におい
    て,順番に実行する命令を実行順に保持するベーシック
    ブロックにおける命令であってデータアドレスのアドレ
    ス計算結果を必要とする命令(命令Aとする)に対し
    て,ベーシックブロック内の最初に出現する命令A(先
    頭命令Aとする)に対して前回の先頭命令Aの使用した
    データアドレスと前々回に先頭命令Aの使用したデータ
    アドレスとの差分ΔW,およびベーシックブロックにお
    いて2番目以降に出現する命令Aに対しては前回のベー
    シックブロックの先頭命令Aの使用したデータアドレス
    もしくは自身より前に位置する任意の命令A(命令Bと
    する)の前回使用したデータアドレスからの差分Δ
    W’,およびベーシックブロック内の先頭命令Aである
    かないかを表す情報を持つロードアドレス保持部し,現
    在データアドレスを必要とする先頭命令Aに対しては前
    回の先頭命令Aの使用したデータアドレスと該差分ΔW
    とによりデータアドレスを予測し,現在データアドレス
    を必要とする2番目以降の命令Aに対しては前回の先頭
    命令Aもしくは命令Bの使用したデータアドレスと該差
    分ΔW’とによりデータアドレスを予測することを特徴
    とする並列処理装置におけるロードアドレス予測方法。
JP9064138A 1997-03-18 1997-03-18 ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法 Withdrawn JPH10260834A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9064138A JPH10260834A (ja) 1997-03-18 1997-03-18 ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9064138A JPH10260834A (ja) 1997-03-18 1997-03-18 ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法

Publications (1)

Publication Number Publication Date
JPH10260834A true JPH10260834A (ja) 1998-09-29

Family

ID=13249427

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9064138A Withdrawn JPH10260834A (ja) 1997-03-18 1997-03-18 ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法

Country Status (1)

Country Link
JP (1) JPH10260834A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709679B2 (en) 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709679B2 (en) 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems

Similar Documents

Publication Publication Date Title
US5421022A (en) Apparatus and method for speculatively executing instructions in a computer system
US5394530A (en) Arrangement for predicting a branch target address in the second iteration of a short loop
JP3599409B2 (ja) 分岐予測装置
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
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
JPH0334024A (ja) 分岐予測の方法とそのための装置
JPH06236270A (ja) スーパースカラ・プロセッサ・システムにおいてブランチ・ヒストリ予測精度を向上させる方法およびシステム
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP2006520964A5 (ja)
US5878254A (en) Instruction branching method and a processor
EP0655679B1 (en) Method and apparatus for controlling instruction in pipeline processor
JP2560988B2 (ja) 情報処理装置および処理方法
JP3435267B2 (ja) マイクロプロセッサ及びそのロードアドレス予想方法
US7069426B1 (en) Branch predictor with saturating counter and local branch history table with algorithm for updating replacement and history fields of matching table entries
US5729707A (en) Instruction prefetch circuit and cache device with branch detection
JP2003223359A (ja) 演算処理装置
JPH02287626A (ja) パイプライン方式の分岐命令制御装置
JP2008527559A (ja) プロセッサ及びその命令発行方法
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
JPH10260834A (ja) ロードアドレス予測装置および並列処理装置およびそのロードアドレス予測方法
US20040003213A1 (en) Method for reducing the latency of a branch target calculation by linking the branch target address cache with the call-return stack
JPH10124312A (ja) 中央処理装置
US6578135B1 (en) Method and apparatus for performing addressing operations in a superscalar superpipelined processor
JP2591325B2 (ja) 分岐制御装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20040601