JP3435267B2 - マイクロプロセッサ及びそのロードアドレス予想方法 - Google Patents

マイクロプロセッサ及びそのロードアドレス予想方法

Info

Publication number
JP3435267B2
JP3435267B2 JP28876995A JP28876995A JP3435267B2 JP 3435267 B2 JP3435267 B2 JP 3435267B2 JP 28876995 A JP28876995 A JP 28876995A JP 28876995 A JP28876995 A JP 28876995A JP 3435267 B2 JP3435267 B2 JP 3435267B2
Authority
JP
Japan
Prior art keywords
address
load
instruction
unit
predicted
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
JP28876995A
Other languages
English (en)
Other versions
JPH09134287A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP28876995A priority Critical patent/JP3435267B2/ja
Priority to US08/742,911 priority patent/US5903768A/en
Publication of JPH09134287A publication Critical patent/JPH09134287A/ja
Application granted granted Critical
Publication of JP3435267B2 publication Critical patent/JP3435267B2/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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サ及びそのロードアドレス予測方法に関し、特に、デー
タハザードによるパイプラインストールを回避するマイ
クロプロセッサ及びそのロードアドレス予測方法に関す
る。
【0002】
【従来の技術】近年の高速なマイクロプロセッサにおい
てパイプラインによる処理は基本的な技術となってい
る。このパイプライン処理は、1ステージで命令の一部
分を担当して実行する。パイプライン化されたマイクロ
プロセッサの性能を落す要因としてパイプラインハザー
ドがある。ハザードには以下の3種類がある。
【0003】 1.構造ハザード 2.データハザード 3.制御ハザード 構造ハザードはリソースの競合(コンフリクト)によっ
て生じる。データハザードは、ある命令の実行が、その
先行命令の実行結果に依存している場合に生じる。制御
ハザードは、分岐命令などによって命令実行が不連続に
なる場合に生じる。
【0004】これらのハザードはパイプラインを乱すこ
とになるので、パイプラインの性能を落すことになる。
データハザードにはロード命令に起因するものがある。
これを図15のR3000のパイプラインを用いて説明
する。図17の命令シーケンスを考える。図17の例で
は、LW命令はMAステージが終了するまでメモリから
データを読み出していない。一方で、ADD命令は、L
W命令のMAステージと同じタイミングで、LW命令で
読み出されるデータを必要としている。従って、データ
ハザードが生じる。この問題を解決するためには、以下
の二つの方法がある。
【0005】 1.パイプライン・インターロック 2.命令スケジューリング パイプラインインターロックとは、ハザードを検出し、
ハザードが解消されるまで、パイプラインを停止させる
ハードウェア機構である。図17のLW命令の場合に
は、そのデータが読み出されるまで、このデータを必要
とする以降の命令が停止されるわけである。パイプライ
ンストールの様子を図18に示す。パイプラインのスト
ール中は、命令が実行されないので性能が低下する。
【0006】命令スケジューリングは、ハードウェアで
パイプラインをインターロックするのではなく、ストー
ルを避けるようにコンパイラで命令の順序がえを行う方
法である。つまり、パイプラインハザードを起こさない
ように、命令の順序を変えるわけである。例えば、図1
0の命令シーケンスは図19のように並べ変えればハザ
ードを生じない。命令の並べ変えだけではハザードを解
消できない時には、コンパイラはNOP命令を挿入す
る。NOP命令は何も処理動作を行なわないので、性能
が低下する。
【0007】
【発明が解決しようとする課題】近年、マイクロプロセ
ッサの高速化に伴い、1サイクルではメモリにアクセス
できず、複数のステージでメモリにアクセスするように
なった。例えば、R4000は図20に示すような3ス
テージでメモリにアクセスしている。
【0008】メモリアクセスに複数のステージを要する
ようになると、ロード命令のデータハザード(以下、ロ
ードハザードと記す)によるパイプラインインターロッ
クの期間が長くなり、性能が低下する。例えば、金子他
「RISCパイプラインアーキテクチャの性能評価シミ
ュレーション」、信学技法CPSY95−4,pp25
−32,1995によれば、R4000の場合で実行時
間の10%がロードハザードによるパイプラインストー
ルに費やされている。
【0009】また、命令スケジューリングによる方法に
も限界がある。ある文献(例えば、P. Changほか、“IM
PACT:An Architectual Frmework for Multiple-Instru
ction-Issue processors”,Proc. of 18th Ann. Int'l
Symp. on Computer Architecture, pp.266-275, Jun
e, 1991)によれば、スーパースカラプロセッサの場
合、命令スケジューリングに利用できる命令の数が足り
ず、メモリアクセスに要するステージが1ステージから
2ステージに増えることで、性能が30%低下するとい
う報告もある。
【0010】以上のように、マイクロプロセッサの高速
化によるメモリアクセスサイクルの増加に伴い、データ
ハザードによるパイプラインストールがマイクロプロセ
ッサの性能低下を促していた。
【0011】本発明は、この現状を鑑みてなされたもの
であり、その目的とするところは、データハザードによ
るパイプラインストールを回避するマイクロプロセッサ
及びそのロードアドレス予測方法を提供することにあ
る。
【0012】
【課題を解決するための手段】上記の目的を達成するた
め、マイクロプロセッサに係る第1の発明の特徴は、命
令を実行するパイプライン処理部と、前記命令の実行に
用いられる各種のデータを保持する記憶部と、を備えて
前記命令をパイプライン制御により処理を行うマイクロ
プロセッサにおいて、前記命令のうち、前記記憶部から
ロードを行うロード命令の情報の登録を行うロード命令
情報登録部と、このロード命令情報登録部にて登録され
たロード命令情報を保持するロード命令情報保持部と、
このロード命令情報保持部に保持されたロード命令情報
を用いて、前記パイプライン処理部が前記ロード命令の
実行によるロードアドレスへのアクセス以前に予測ロー
ドアドレスを計算するアドレス計算部と、このアドレス
計算部にて計算された予測ロードアドレスが正しいか否
かの判定を行う計算結果判定部と、この計算結果判定部
の判定の結果により、前記予測ロードアドレスが正しい
場合には前記予測ロードアドレスに該当する前記記憶部
に格納されたデータを前記パイプライン処理部に出力
し、それ以外の場合には前記ロード命令の実行により得
られたロードアドレスに該当する前記記憶部に格納され
たデータを前記パイプライン処理部に出力する出力部
と、を備え、前記出力部により出力されたデータを用い
て以降の命令を実行することである。
【0013】上記の発明の構成では、予めロード命令情
報登録部にてロード命令に関する情報を登録しておき、
パイプライン処理部が前記ロード命令の実行により得ら
れたロードアドレスへのアクセス以前に、アドレス計算
部にて予測ロードアドレスを計算するようにしてある。
この計算結果が正しいか否かを計算結果判定部にて判定
し、正しいアドレスに格納されたデータをデータ出力部
にて出力するようにしてある。このようにすることによ
り、後続の命令の実行時にはロード命令によってロード
されるデータを得ることができるので、データハザード
によるパイプラインストールを回避することができるの
である。
【0014】ここで、「ロードアドレスへのアクセス以
前」には、パイプライン処理部によるアクセスを行うサ
イクルより前の他、アクセスを行う当該サイクルも含ま
れる。
【0015】また、前記ロード命令情報登録部は、ロー
ドアドレスのベースアドレスを記憶するレジスタ番号及
び前記ロード命令、若しくはそれより前に実行される命
令のアドレスを関連付けて登録し、前記ロード命令情報
保持部は、関連付けられた前記レジスタ番号及び前記命
令アドレスを保持して、入力された命令アドレスに該当
するレジスタ番号を出力し、前記アドレス計算部は、前
記ロード命令情報保持部より出力されたレジスタ番号及
びロード命令に示されたオフセット値を用いて、前記パ
イプライン処理部が前記ロード命令の実行によるロード
アドレスへのアクセス以前に予測ロードアドレスを計算
することが好ましい。
【0016】この構成では、ロード命令に関する情報を
登録として、ロードアドレスのベースアドレスを記憶す
るレジスタ番号及びロード命令以前に実行される命令の
アドレスを用いてロード命令情報登録部にて登録を行
い、これらを関連付けてロード命令情報保持部に保持し
ておく。ロード命令情報保持部は、もしアクセスさせる
アドレスが保持されている場合、それに対応するレジス
タ番号を返す。ロード命令情報保持部から得られたレジ
スタ番号により、レジスタファイルにアクセスし、ロー
ドアドレスのベースアドレスが獲得される。ロード命令
のオペランドからは、ロードアドレスのオフセットが得
られる。上記のベースアドレスと、上記のオフセットに
より、アドレス計算部にて予測ロードアドレスが計算さ
れる。パイプライン処理部は、この予測アドレスを用い
て、記憶部にアクセスし、データ出力部は所定のデータ
を出力するようにしてある。一方で、上記予測アドレス
と実際のロードアドレスが、計算結果判定部により比較
される。上記の2つのアドレスが一致する場合には、い
かなる処理も必要ない。上記2つのアドレスが異なる場
合には、予測アドレスを用いて獲得されたデータは誤っ
たものであるので、パイプラインは実際のアドレスを用
いて改めて記憶部にアクセスし、必要なデータを獲得す
るようにしてある。
【0017】以上のようにすることにより、後続の命令
の実行時にはロード命令によってロードされるデータを
得ることができるので、データハザードによるパイプラ
インストールを回避することができるのである。
【0018】また、前記ロード命令情報保持部は、命令
フェッチ時に入力された命令アドレスに該当するレジス
タ番号を出力することが好ましい。
【0019】このように命令フェッチ時に出力するよう
にすると、ロード命令情報保持部による関連付けがロー
ド命令の命令アドレスとレジスタ番号とを関連付けるこ
ととなるため、プログラムが複雑な構造をしている場合
等の場合には好ましい。
【0020】従って、前記ロード命令情報登録部は、ロ
ードアドレスのベースアドレスを記憶するレジスタ番号
及び前記ロード命令のアドレスを関連付けて登録するこ
とがさらに好ましい。
【0021】また、前記ロード命令情報登録部は、ロー
ドアドレスのベースアドレスを記憶するレジスタ番号、
ロード命令に示されたオフセット値、及び、ロード命令
の命令アドレスを関連付けて登録し、前記ロード命令情
報保持部は、関連付けられた前記レジスタ番号、前記オ
フセット値、及び前記命令アドレスを保持し、ロードア
ドレス予測用プログラムカウンタに示された命令アドレ
スに該当する前記レジスタ番号及び前記オフセット値を
出力し、前記アドレス計算部は、前記ロード命令情報保
持部より出力されたレジスタ番号に該当するレジスタフ
ァイルに格納されたベースアドレス及びオフセット値を
用いて、前記パイプライン処理部が前記ロード命令の実
行によるロードアドレスへのアクセス以前に予測ロード
アドレスを計算することが好ましい。
【0022】この構成では、ロード命令情報登録部は、
ロードアドレスのベースアドレスを記憶するレジスタ番
号、ロード命令に示されたオフセット値、及び、ロード
命令の命令アドレスを関連付けて登録するようにしてあ
る。これにより、ロード命令に示されたオフセット値を
参照する必要がないので、予測ロードアドレスをより早
く得ることができる。なお、この予測ロードアドレスの
計算のタイミングの制御のために、命令アドレスを出力
するプログラムカウンタの他に、例えばカウンタのよう
なものを設けるようにしてもよい。
【0023】また、前記ロード命令情報登録部は、ロー
ドアドレスのベースアドレス及び前記ロード命令以前に
実行される命令とを関連付けて登録し、前記ロード命令
情報保持部は、関連付けられた前記ベースアドレス及び
前記命令アドレスを保持して、入力された命令アドレス
に該当するベースアドレスを出力し、前記アドレス計算
部は、前記ロード命令情報保持部より出力されたベース
アドレス及びロード命令に示されたオフセット値を用い
て、前記パイプライン処理部が前記ロード命令の実行に
よるロードアドレスへのアクセス以前に予測ロードアド
レスを計算することが好ましい。
【0024】この構成では、ロード命令に関する情報を
登録として、ロードアドレスのベースアドレス及び前記
ロード命令以前に実行される命令を用いてロード命令情
報登録部にて登録を行い、これらを関連付けてロード命
令情報保持部に保持しておくようにしてある。このよう
に、ロードアドレスのベースアドレスを用いることで、
レジスタファイルへのアクセスが不要になるので、処理
の効率化を図ることができるのである。
【0025】また、前記ロード命令情報保持部は、命令
フェッチ時に入力された命令アドレスに該当するベース
アドレスを出力することが好ましい。
【0026】上述のようにレジスタファイルへのアクセ
スが不要になるため命令フェッチ時に出力するようにで
きるので、ロード命令情報保持部によりロード命令の命
令アドレスとレジスタ番号とを関連付けることとなるた
め、プログラムが複雑な構造をしている場合等の場合に
は好ましい。
【0027】また、上記目的を達成するため、マイクロ
プロセッサに係る第2の発明の特徴は、命令を実行する
パイプライン処理部と、前記命令の実行に用いられる各
種のデータを保持する記憶部と、を備えて前記命令をパ
イプライン制御により処理を行うマイクロプロセッサに
おいて、前記命令のうち、前記記憶部からロードを行う
ロード命令のロードアドレスの登録を行うロード命令情
報登録部と、このロード命令情報登録部にて登録された
ロードアドレスを保持して、入力された命令アドレスに
該当するロードアドレスを出力するロードアドレスバッ
ファと、このロードアドレスバッファにて出力されたロ
ードアドレスが正しいか否かの判定を行う判定部と、こ
の判定部の判定の結果により、前記予測ロードアドレス
が正しい場合には前記予測ロードアドレスに該当する前
記記憶部に格納されたデータを前記パイプライン処理部
に出力し、それ以外の場合には前記ロード命令の実行に
より得られたロードアドレスに該当する前記記憶部に格
納されたデータを前記パイプライン処理部に出力する出
力部と、を備え、前記出力部により出力されたデータを
用いて以降の命令を実行することである。
【0028】上記発明の構成では、ロード命令情報登録
部にてロード命令のロードアドレスの登録を行うように
しており、このロード命令情報登録部にて登録されたロ
ードアドレスを保持して、入力された命令アドレスに該
当するロードアドレスを出力するロードアドレスバッフ
ァを備えるようにしてある。このようにすることで、予
測ロードアドレスを計算する必要がなくなる。従って前
記第1の発明の如くアドレス計算部を必要としないた
め、第1の発明と比較して、ハードウエア量を減少させ
ることができるのである。
【0029】また、前記ロード命令情報保持部は、命令
フェッチ時に入力された命令アドレスに該当するロード
アドレスを出力することが好ましい。
【0030】上述のように、予測ロードアドレスを計算
する必要がなくなるため命令フェッチ時に出力するよう
にできるので、ロードアドレスバッファによりロード命
令の命令アドレスとロードアドレスとを関連付けること
となるため、プログラムが複雑な構造をしている場合等
の場合には好ましい。
【0031】また、前記ロード命令情報登録部は、ロー
ド命令のロードアドレス及び命令アドレスを関連付けて
登録し、前記ロード命令情報保持部は、関連付けられた
前記ロードアドレスを保持し、ロードアドレス予測用プ
ログラムカウンタに示された命令アドレスに該当するロ
ードアドレスを出力することがさらに好ましい。
【0032】ここで、前記ロード命令情報登録部への登
録については特に言及していないが、一般的なプログラ
ムにおいては反復して行う処理(例えばループ型処理、
WHILE-DO型処理、REPEAT-UNTIL型処理等)がよく用いら
れる。従って、反復して実行するロード命令の情報を第
1回目の実行の際に登録を行うようにすれば、効率的に
登録を行うことができるのである。
【0033】また、上記目的を達成するため、マイクロ
プロセッサに係る第3の発明の特徴は、命令を実行する
パイプライン処理部と、前記命令の実行に用いられる各
種のデータを保持する記憶部と、を備えて前記命令をパ
イプライン制御により処理を行うマイクロプロセッサに
おいて、所定のベースアドレス及びロード命令に示され
たオフセット値を用いて、前記パイプライン処理部が前
記ロード命令の実行によるロードアドレスへのアクセス
以前に予測ロードアドレスを計算するアドレス計算部
と、このアドレス計算部にて計算された予測ロードアド
レスが正しいか否かの判定を行う計算結果判定部と、こ
の計算結果判定部の判定の結果により、前記予測ロード
アドレスが正しい場合には前記予測ロードアドレスに該
当する前記記憶部に格納されたデータを前記パイプライ
ン処理部に出力し、それ以外の場合には前記ロード命令
の実行により得られたロードアドレスに該当する前記記
憶部に格納されたデータを前記パイプライン処理部に出
力する出力部と、を備え、前記出力部により出力された
データを用いて以降の命令を実行することである。
【0034】上記発明の構成では、アドレス計算部は所
定のベースアドレス値を入力するようにしてある。従っ
て、ロード命令情報を保持するバッファを必要としない
ため、ハードウエア量を低減することができる。
【0035】また、上記目的を達成するため、マイクロ
プロセッサに係る第4の発明の特徴は、命令を実行する
パイプライン処理部と、前記命令の実行に用いられる各
種のデータを保持する記憶部と、を備えて前記命令をパ
イプライン制御により処理を行うマイクロプロセッサに
おいて、所定の予測ロードアドレスを入力し、この予測
ロードアドレスが正しいか否かの判定を行う計算結果判
定部と、この計算結果判定部の判定の結果により、前記
予測ロードアドレスが正しい場合には前記予測ロードア
ドレスに該当する前記記憶部に格納されたデータを前記
パイプライン処理部に出力し、それ以外の場合には前記
ロード命令の実行により得られたロードアドレスに該当
する前記記憶部に格納されたデータを前記パイプライン
処理部に出力する出力部と、を備え、前記出力部により
出力されたデータを用いて以降の命令を実行することで
ある。
【0036】上記発明の構成では、計算結果判定部は所
定のロードアドレスを入力するようにしてある。従っ
て、上記第3の発明のようにアドレス計算部が必要でな
いため、さらにハードウエア量を低減することができる
のである。
【0037】次に、上記目的を達成するため、マイクロ
プロセッサのロードアドレス予測方法に係る第1の発明
の特徴は、命令をパイプライン制御により処理を行うマ
イクロプロセッサのロードアドレス予測方法であって、
前記命令のうち、ロード命令の情報の登録を行うロード
命令情報登録ステップと、前記ロード命令情報を用い
て、ロード命令の実行により得られたロードアドレスへ
のアクセス以前に予測ロードアドレスを計算するアドレ
ス計算ステップと、前記予測ロードアドレスが正しいか
否かの判定を行う計算結果判定ステップと、前記判定の
結果により、前記予測ロードアドレスが正しい場合には
前記予測ロードアドレスに該当するデータを出力し、そ
れ以外の場合には前記ロード命令の実行により得られた
ロードアドレスに該当するデータを出力する出力ステッ
プと、を行い、前記出力ステップにより出力されたデー
タを用いて以降の命令を実行することである。
【0038】上記の発明の構成では、予めロード命令情
報登録ステップにてロード命令に関する情報を登録して
おき、ロード命令の実行により得られたロードアドレス
へのアクセス以前に、アドレス計算ステップにて予測ロ
ードアドレスを計算するようにしてある。このようにす
ることにより、後続の命令の実行時にはロード命令によ
ってロードされるデータを得ることができるので、デー
タハザードによるパイプラインストールを回避すること
ができるのである。
【0039】ここで、前記ロード命令の情報は、少なく
ともロードアドレスのベースアドレスを記憶するレジス
タ番号を含むことが好ましく、前記アドレス計算ステッ
プは、命令フェッチ時に入力された命令アドレスに該当
するレジスタ番号を用いて前記予測ロードアドレスを計
算することがさらに好ましい。
【0040】また、前記ロード命令の情報は、少なくと
もロードアドレスのベースアドレス、または、ロードア
ドレスを含むことが好ましい。
【0041】また、上記目的を達成するため、マイクロ
プロセッサのロードアドレス予想方法命令に係る第2の
発明の特徴は、命令をパイプライン制御により処理を行
うマイクロプロセッサのロードアドレス予測方法におい
て、所定のベースアドレス及びロード命令に示されたオ
フセット値を用いて、ロード命令の実行により得られた
ロードアドレスへのアクセス以前に予測ロードアドレス
を計算するロードアドレス計算ステップと、前記予測ロ
ードアドレスが正しいか否かの判定を行う計算結果判定
ステップと、前記判定の結果により、前記予測ロードア
ドレスが正しい場合には前記予測ロードアドレスに該当
するデータを出力し、それ以外の場合には前記ロード命
令の実行により得られたロードアドレスに該当するデー
タを出力する出力ステップと、を行い、前記出力ステッ
プにより出力されたデータを用いて以降の命令を実行す
ることである。
【0042】
【発明の実施の形態】次に、本発明に係るマイクロプロ
セッサ及びそのアドレス予測方法の実施の形態につい
て、図面を参照しながら説明する。
【0043】第1の実施の形態 図1は本発明に係るマイクロプロセッサのブロック図を
示したものである。このマイクロプロセッサは、命令を
実行するパイプライン処理部(図示せず)と、前記命令
の実行に用いられる各種のデータを保持する記憶部(図
示せず)とを備えて命令をパイプライン制御により処理
を行うマイクロプロセッサであり、命令のうち、記憶部
からロードを行うロード命令の情報の登録を行うロード
命令情報登録部1と、このロード命令情報登録部1にて
登録されたロード命令情報を保持するロード命令情報保
持部3と、このロード命令情報保持部3に保持されたロ
ード命令情報を用いて、パイプライン処理部がロード命
令の実行により得られたロードアドレスへのアクセス以
前に予測ロードアドレスを計算するアドレス計算部5
と、アドレス計算部5にて計算された予測ロードアドレ
スが正しいか否かの判定を行う計算結果判定部7と、こ
の計算結果判定部7の判定の結果により、予測ロードア
ドレスが正しい場合には予測ロードアドレスに該当する
記憶部に格納されたデータをパイプライン処理部に出力
し、それ以外の場合にはロード命令の実行により得られ
たロードアドレスに該当する記憶部に格納されたデータ
をパイプライン処理部に出力する出力部9とを備え、出
力部9により出力されたデータを用いて以降の命令を実
行するようにしてある。
【0044】図2に以降の実施形態の説明のために用い
るプログラムを示した。図面向かって左には命令アドレ
スを、また右にはその命令を示してある。例えば、命令
アドレス0x1234には命令“ADD R3,R1,R2”が格納
されている。なお、右端の“;”以降は該当する命令の
動作を説明するコメントを示してある。
【0045】図3は、図15を示すR3000と同じ5
ステージのパイプラインを採用した場合における本発明
に係るマイクロプロセッサを示す。本実施形態に係るマ
イクロプロセッサは、パイプライン処理部10,記憶部
31,ベース・レジスタ・バッファ23,レジスタファ
イル25,加算器27,プログラムカウンタ(PC)3
2及び比較器29から構成される。
【0046】パイプライン処理部10は命令を実行す
る。IFステージ11で命令を読み出す。IDステージ
12で命令をデコードし、レジスタファイルにアクセス
して演算に必要な値を読み出す。EXステージ13で演
算を実行する。実際のアドレスはEXステージ13で求
められる。MAステージ14ではメモリにアクセスして
データを読みだし/書き込みを行う。WBステージ15
では、演算結果、あるいはメモリから読み出されたデー
タをレジスタファイルに書き戻す。
【0047】ベース・レジスタ登録部21はループ処理
等にて実行されるロード命令について、その第1回目の
実行の際(図面左上部に示す)に、ロード命令が使用す
るレジスタの番号と、そのロード命令の命令アドレスの
1つ前の命令アドレスとをベース・レジスタ・バッファ
23に逐次登録する。
【0048】ベース・レジスタ・バッファ23はPC3
2より命令アドレスを受けとり、もし命令アドレスがバ
ッファに記憶されていれば、それに対応するレジスタ番
号を出力する。ここで、このベース・レジスタ・バッフ
ァ23は、例えば図4に示したように、命令アドレス
“1234”が入力された場合にはレジスタ番号“9”
を出力するようにする。すなわち、LOAD命令の1つ
前のADD命令の命令アドレスが入力された場合にレジ
スタ番号を出力するようにしてある。
【0049】レジスタファイル25は、演算に必要な値
を記憶するためのものであって、ベース・レジスタ・バ
ッファ23が出力したレジスタ番号を受取り、そのレジ
スタに格納されたベースアドレスを出力する。
【0050】加算器27は、レジスタファイル25から
読み出されたベースアドレスと、命令のオペランドに書
かれているオフセットから、予測ロードアドレスを計算
して出力する。
【0051】比較器29は、加算器27で求められた予
測ロードアドレスと、パイプライン処理部10のEXス
テージ13で計算された実際のロードアドレスを比較す
る。比較結果が異なる場合には、パイプライン処理部1
0から記憶部31に実際のロードアドレスが送られる。
異なる場合には、パイプライン処理部10から記憶部3
1に実際のロードアドレスが送られる。
【0052】記憶部31はデータを記憶する。ロードア
ドレスが与えられると、そのアドレスに格納されたデー
タを出力する。
【0053】次に本実施形態のマイクロプロセッサの動
作については以下の手順で行なわれる。
【0054】(1)先行するADDの命令のIFステー
ジ11−1でベース・レジスタ・バッファ23にアクセ
スし、ベースレジスタ番号を獲得するベース・レジス
タ・バッファ23に登録されていない場合は、あらかじ
め設定された一定値を返す。例えばスタックポインタレ
ジスタを返す。
【0055】(2)ADD命令のIDステージ12−1
でレジスタファイル25にアクセスし、ベースアドレス
を獲得する。後続のLOAD命令はIFステージ11−
2で命令フェッチを行っている。
【0056】(3)次に実行する命令がLOAD命令の
場合、IDステージ12−2で、(2)で獲得されたベ
ースアドレスと、LOAD命令のオペランドに書かれて
いるオフセットとから、加算器27で予測ロードアドレ
スを計算する。
【0057】(4)LOAD命令のEXステージ13−
2で、記憶部31にアクセスしてデータを得る。同時
に、パイプライン処理部10は実際のアドレスを計算す
る。比較器29は、予測アドレスと実際のアドレスを比
較して、アドレス予測の正否を判定する。ADD命令の
アドレスがベース・レジスタ・バッファ23に登録され
ていない場合は、ベースレジスタ番号を登録する。登録
には、ハードウェアの制限により、上限がある。上限を
越えて登録する場合には、例えばLRU(LeastRecentl
y Used )法により、登録データの置換えを行う。
【0058】(5)アドレスの予測が失敗した場合は、
LOAD命令のMAステージ14−2で改めて記憶部3
1にアクセスしてデータを獲得する。
【0059】(6)LOAD命令の次の命令であるAD
D命令において、そのデータを用いて演算を行う。
【0060】以上の手順により、ロードアドレスがID
ステージ12で獲得され、EXステージ13で記憶部3
1にアクセスできるので、早期にデータの獲得が可能に
なる。ひいてはデータハザードを低減しマイクロプロセ
ッサの性能を向上できる。なお、本発明が5ステージの
パイプラインに限定されず、他のステージ数を有するパ
イプラインに使用することができる。
【0061】本実施形態の構成を用いてシミュレーショ
ンを行った。パイプラインには図16に示す7ステージ
のものを採用した。IFステージで命令をフェッチす
る。IDステージで命令をデコードし、レジスタファイ
ルにアクセスして演算に必要な値を獲得する。EXステ
ージで演算を実行する。実際のアドレスはEXステージ
でもとめられる。DFステージ、DSステージ、TCス
テージでメモリシスにアクセスし、データの読みだし/
書き込みを行う。WBステージでは、演算結果あるい
は、メモリシステムから読み出されたデータをレジスタ
ファイルに書き戻す。ここで、評価プログラムにはDhry
stone ベンチマークver.2.1 を用いた。シミュレーショ
ンの結果、ベース・レジスタ・バッファ23の登録数が
32のとき、ロードアドレスの予測成功率は73.1%
であった。これにより、マイクロプロセッサの性能が
7.7%向上した。ベース・レジスタ・バッファ23の
登録数を増やせば、予測の成功率が向上することは明ら
かであるが、一方でハードウェア規模が増えるのでトレ
ードオフである。
【0062】なお、ベース・レジスタ・バッファ23は
命令フェッチ時に入力された命令アドレスに該当するレ
ジスタ番号を出力するようにしてもよい。
【0063】第2の実施の形態 次に、本発明に係る第2の実施の形態について説明す
る。図5は本実施形態のマイクロプロセッサを示したブ
ロック図である。この実施形態では第1の実施形態と比
較してベース・レジスタ登録部21の代わりにベースレ
ジスタとオフセットとを登録する登録部33を、ベース
・レジスタ・バッファ23の代わりにベースレジスタと
オフセットとを保持するバッファ37を備えるように
し、また、新たにアドレス予測用プログラムカウンタ
(TPC)35を備え、命令フェッチ時に入力された命
令アドレスに該当するレジスタ番号を出力するようにし
てある。
【0064】ベースレジスタとオフセットとを登録する
登録部33はループ処理等にて実行されるロード命令に
ついて、その第1回目の実行の際(図面左上部に示す)
に、ロード命令が使用するレジスタの番号と、そのロー
ド命令の命令アドレスとをベースレジスタとオフセット
とを保持するバッファ37に逐次登録するようにする。
【0065】ベースレジスタとオフセットとを保持する
バッファ37は、TPC35より命令アドレスを受けと
り、もし命令アドレスがバッファに記憶されていれば、
それに対応するレジスタ番号を出力する。ここで、ベー
スレジスタとオフセットとを保持するバッファ37は、
例えば図6に示したように、命令アドレス“1235”
が入力された場合にはレジスタ番号“9”、及びオフセ
ット“0”を出力するようにする。すなわち、LOAD
命令の命令アドレスが入力された場合にレジスタ番号及
びオフセットを出力するようにしてある。TPC35
は、PC32とは異なる命令アドレスを出力するための
ものである。
【0066】次に本実施形態のマイクロプロセッサの動
作については以下の手順で行なわれる。
【0067】(1)TPC35をプログラムカウンタよ
り所定量だけ多い命令アドレスを出力するようにしてお
く。
【0068】(2)ベースレジスタとオフセットとを保
持するバッファ37はTPC35の出力する命令アドレ
スに該当するベースレジスタとオフセットを各々レジス
タファイル25及び加算器27に出力する。
【0069】(3)レジスタファイル25は、入力され
たベースレジスタに格納されたベースアドレスを加算器
27に出力する。
【0070】(4)加算器27は入力されたベースアド
レスとオフセットとから、加算器27で予測ロードアド
レスを計算する。
【0071】(5)以下、第1の実施の形態と同様に、
比較器29にて比較、記憶部31へのアクセス等を行
う。
【0072】このように、TPC35を設けることで、
ベースレジスタとオフセットとを保持するバッファ37
に、ロード命令の命令アドレスとベースアドレス及びオ
フセットとを関連付けて登録することができる。従っ
て、プログラムが複雑な構造をしている場合等の場合に
は本実施形態が好ましい。また、メンテナンスが行いや
すいという特徴もある。
【0073】また、ベースレジスタとオフセットバッフ
ァとを登録することで、ロード命令のIDステージまで
予測ロードアドレスの計算を待つ必要がない。従って、
より早いタイミングで予測ロードアドレスの計算を行う
ことができる。
【0074】第3の実施の形態 次に、本実施形態に係るマイクロプロセッサのブロック
図を図7に示す。上記第1の実施におけるベース・レジ
スタ・バッファ23の代わりにベース・アドレス・バッ
ファ41を備えるようにしてある。ここで、ベースアド
レス登録部39は、ロードアドレスのベースアドレス及
びロード命令以前に実行される命令とを関連付けて登録
し、ベース・アドレス・バッファ41は、関連付けられ
たベースアドレス及び命令アドレスを保持して、入力さ
れた命令アドレスに該当するベースアドレスを出力し、
加算器27は、ベース・アドレス・バッファ41より出
力されたベースアドレス及びロード命令に示されたオフ
セット値を用いて、パイプライン処理部10がロード命
令の実行によるロードアドレスへのアクセス以前に予測
ロードアドレスを計算するようにしてある。ロードアド
レスの予測は以下の手順で行われる。
【0075】(1)先行するADDの命令のIFステー
ジ11−1でベース・アドレス・バッファ41にアクセ
スし、ベースアドレスを獲得する。ベースアドレスバッ
ファ41に登録されていない場合は、あらかじめ設定さ
れた一定値を返す。なお、ベース・アドレス・バッファ
41は図8の如く登録されている。
【0076】(2)次に実行する命令がロード命令の場
合、IDステージ12−2で、(1)で獲得されたベー
スアドレスと、LOAD命令のオペランドに書かれてい
るオフセットとから、加算器27で予測ロードアドレス
を計算する。
【0077】(3)LOAD命令のEXステージ13−
2で、記憶部31にアクセスしてデータを得る。同時
に、パイプライン処理部10は実際のアドレスを計算す
る。比較器29は、予測アドレスと実際のアドレスを比
較して、アドレス予測の正否を判定する。ADD命令の
アドレスがベース・アドレス・バッファ41に登録され
ていない場合は、ベースアドレスを登録する。登録に
は、ハードウェアの制限により、上限がある。上限を越
えて登録する場合には、例えばLRU(Least Recently
Used )法により、登録データの置換えを行う。
【0078】(4)アドレスの予測が失敗した場合は、
LOAD命令のMAステージ14−2で改めて記憶部3
1にアクセスしてデータを獲得する。
【0079】以上の手順により、ロードアドレスがID
ステージ12で獲得され、EXステージ13で記憶部3
1にアクセスできるので、早期にデータの獲得が可能に
なる。ひいてはデータハザードを低減しマイクロプロセ
ッサの性能を向上できる。
【0080】第3の実施形態においては、レジスタファ
イルにアクセスする必要がないので、レジスタファイル
のポート数を削減でき、レジスタファイルのハードウェ
ア規模を削減できる。
【0081】第4の実施の形態 次に本実施形態では、上記第3の実施形態において、先
行する命令のIFステージではなく、該ロード命令のI
Fステージで、ベース・アドレス・バッファ41にアク
セスするようにしてある。本実施形態について図9に示
す。ロードアドレスの予測は以下の手順で行なわれる。
【0082】(1)IFステージ11−2でベース・ア
ドレス・バッファ41にアクセスし、ベースアドレスを
獲得する。ベース・アドレス・バッファ41に登録され
ていない場合は、あらかじめ設定された一定値を返す。
【0083】(2)IDステージ12−2で、(1)で
獲得されたベースアドレスと、LOAD命令のオペラン
ドに書かれているオフセットとから、加算器27で予測
ロードアドレスを計算する。
【0084】(3)EXステージ13−2で、記憶部3
1にアクセスしてデータを得る。同時に、パイプライン
処理部10は実際のアドレスを計算する。比較器29
は、予測アドレスと実際のアドレスを比較して、アドレ
ス予測の正否を判定する。命令のアドレスがベース・ア
ドレス・バッファ41に登録されていない場合は、ベー
スアドレスを登録する。登録には、ハードウェアの制限
により、上限がある。上限を越えて登録する場合には、
たとえばLRU(Least Recentry Used)法により、登
録データの置換えを行う。
【0085】(4)アドレスの予測が失敗した場合は、
MAステージ14−2で改めて記憶部31にアクセスし
てデータを獲得する。
【0086】以上の手順により、ロードアドレスがID
ステージ12で獲得され、EXステージ13で記憶部3
1にアクセスできるので、早期にデータの獲得が可能に
なる。ひいてはデータハザードを低減しマイクロプロセ
ッサの性能を向上できる。また、第4の実施形態におい
ては、一命令中に処理を限定できるので、第3の実施形
態に比べて制御が容易になる。
【0087】第5の実施の形態 本実施形態においては、上記第1の実施形態において、
ベース・レジスタ登録部21の代わりに、ロード命令の
ロードアドレスを登録するロードアドレス登録部43
を、また、レジスタ番号を記憶するベース・レジスタ・
バッファ23の代わりに、予測アドレスを記憶するロー
ド・アドレス・バッファ45を備えるようにして、アド
レス加算器を必要としないようにしてある。本実施形態
について図10に示す。ロードアドレスの予測は以下の
手順で行われる。
【0088】(1)先行するADDの命令のIFステー
ジ11−1でロード・アドレス・バッファ45にアクセ
スし、予測ロードアドレスを獲得する。ロード・アドレ
ス・バッファ45に登録されていない場合は、あらかじ
め設定された一定値を返す。なお、ロード・アドレス・
バッファ45は図11の如く登録されている。
【0089】(2)次に実行する命令がロード命令の場
合、IFステージ11−2からEXステージ13−2の
間に、記憶部31にアクセスしてデータを得る。同時
に、パイプライン処理部10はEXステージ13−2で
実際のアドレスを計算する。比較器29は、予測アドレ
スと実際のアドレスを比較して、アドレス予測の正否を
判定する。ADD命令のアドレスがロード・アドレス・
バッファ45に登録されていない場合は、計算して求め
た実際のアドレスを登録する。登録には、ハードウェア
の制限により、上限がある。上限を越えて登録する場合
には、例えばLRU(Least Recently Used )法によ
り、登録データの置換えを行う。
【0090】(3)アドレスの予測が失敗した場合は、
LOAD命令のMAステージ14−2で改めて記憶部3
1にアクセスしてデータを獲得する。
【0091】以上の手順により、ロードアドレスがIF
ステージ11−2以前に獲得され、EXステージ13以
前に記憶部にアクセスできるので、早期にデータの獲得
が可能になる。ひいてはデータハザードを低減しマイク
ロプロセッサの性能を向上できる。
【0092】第5の実施形態においては、レジスタファ
イルにアクセスする必要がないので、レジスタファイル
のポート数を削減でき、レジスタファイルのハードウェ
ア規模を削減できる。さらに、アドレス加算器が必要な
いので、マイクロプロセッサのハードウェア規模が削減
できる。
【0093】第6の実施の形態 次の本実施形態では、上記第5の実施形態において、先
行する命令のIFステージではなく、該ロード命令のI
Fステージで、ロード・アドレス・バッファ45にアク
セスするようにしてある。第5の実施形態について図1
2に示す。ロードアドレスの予測は以下の手順で行なわ
れる。
【0094】(1)IFステージ11−2でロード・ア
ドレス・バッファ45にアクセスし、予測ロードアドレ
スを獲得する。ロード・アドレス・バッファ45に登録
されていない場合は、あらかじめ設定された一定値を返
す。
【0095】(2)IDステージ12−2からEXステ
ージ13−2の間で、記憶部31にアクセスしてデータ
を得る。同時に、パイプライン処理部10は実際のアド
レスを計算する。比較器29は、予測アドレスと実際の
アドレスを比較して、アドレス予測の正否を判定する。
命令のアドレスがロード・アドレス・バッファ45に登
録されていない場合は、計算してもとめた実際のアドレ
スを登録する。登録には、ハードウェアの制限により、
上限がある。上限を越えて登録する場合には、たとえば
LRU(Least Recently Used )法により、登録データ
の置換えを行う。
【0096】(3)アドレスの予測が失敗した場合は、
MAステージ14−2で改めて記憶部31にアクセスし
てデータを獲得する。
【0097】以上の手順により、ロードアドレスがIF
ステージ11−2で獲得され、EXステージ13−2以
前に記憶部31にアクセスできるので、早期にデータの
獲得が可能になる。ひいてはデータハザードを低減しマ
イクロプロセッサの性能を向上できる。また、第6の実
施形態においては、一命令中に処理を限定できるので、
第4の実施形態に比べて制御が容易になる。
【0098】第7の実施形態 次に、本発明に係る第7の実施の形態について説明す
る。図13は本実施形態のマイクロプロセッサを示した
ブロック図である。この実施形態では第6の実施形態と
比較して、新たにアドレス予測用プログラムカウンタ
(TPC)35を設けるようにしてある。このTPC3
5は、上述の第2の実施の形態と同様にPC32とは独
立して命令アドレスを出力するためのものである。この
ように、TPC35を設けることで、ロード・アドレス
・バッファ45に、ロード命令の命令アドレスとロード
アドレスとを関連付けて登録することができる。従っ
て、プログラムが複雑な構造をしている場合等の場合に
は本実施形態が好ましい。また、メンテナンスが行いや
すいという特徴もある。
【0099】第8の実施形態 次に本実施形態では、上記第1の実施形態におけるベー
ス・レジスタ・バッファ23の代わりに、常に一定のベ
ースアドレスを出力するようにする。本実施形態につい
て図14に示す。ここで、例えばスタックポインタのよ
うにロード命令のベースアドレスを格納する場所は比較
的統一されている場合が多いことに着目して、ロード命
令の命令アドレスを入力した場合には常に一定のベース
アドレスを出力するようにしてもかなり良い確率で予測
できる。ロードアドレスの予測は以下の手順で行われ
る。
【0100】(1)IFステージ11−2でレジスタフ
ァイルにアクセスし、ベースアドレスを獲得する。
【0101】(2)IDステージ12−2にて、(1)
で獲得されたベースアドレスと、LOAD命令のオペラ
ンドに書かれているオフセットとから加算器27で予測
ロードアドレスを計算する。
【0102】(3)EXステージ13−2の間で、記憶
部31にアクセスしてデータを得る。同時に、パイプラ
イン処理部10は実際のアドレスを計算する。比較器2
9は、予測アドレスと実際のアドレスを比較して、アド
レス予測の正否を判定する。
【0103】(4)アドレスの予測が失敗した場合は、
MAステージ14−2で改めて記憶部31にアクセスし
てデータを獲得する。
【0104】以上の手順により、ロードアドレスがIF
ステージ11−2で獲得され、EXステージ13−2で
前に記憶部31にアクセスできるので、早期にデータの
獲得が可能になる。ひいてはデータハザードを低減しマ
イクロプロセッサの性能を向上できる。
【0105】第8の実施形態においては、ベース・レジ
スタ・バッファが必要ないので、マイクロプロセッサの
ハードウェア規模を削減できる。また、レジスタファイ
ルにロードアドレスを直接保持させるようにして比較器
29に入力するようにすれば、加算器27も必要がなく
なるため、さらにマイクロプロセッサのハードウェア規
模を削減できる。
【0106】以上、本発明に係る実施形態を説明してき
たが、第1の実施形態は他の実施形態と比較して、一般
的にはロードアドレスの予測成功率が高いので、マイク
ロプロセッサの性能をより向上できる。また、ロードア
ドレスの予測が成功した場合、ロードハザードが軽減さ
れるので、ロードハザードによるパイプラインの性能低
下を防ぐことができ、マイクロプロセッサの性能を向上
できる。シミュレーションの結果、Dhrystone ベンチマ
ークで73%の予測成功率であり、7.7%の性能向上
が確認された。
【0107】
【発明の効果】以上説明してきたように本発明に係るマ
イクロプロセッサ及びそのアドレス予測方法によれば、
データハザードによるパイプラインストールを回避する
ことができるので、マイクロプロセッサの性能向上を図
ることができる。
【図面の簡単な説明】
【図1】本発明に係るマイクロプロセッサを示すブロッ
ク図である。
【図2】本発明の実施の形態を説明するためのプログラ
ムである。
【図3】第1の実施の形態を示すブロックである。
【図4】ベース・レジスタ・バッファ23を説明するた
めの図である。
【図5】第2の実施の形態を示すブロック図である。
【図6】ベースレジスタとオフセットとを保持するバッ
ファ37を説明するための図である。
【図7】第3の実施の形態を示すブロック図である。
【図8】ベース・アドレス・バッファ41を説明するた
めの図である。
【図9】第4の実施の形態を示すブロック図である。
【図10】第5の実施の形態を示すブロック図である。
【図11】ロード・アドレス・バッファ45を説明する
ための図である。
【図12】第6の実施の形態を示すブロック図である。
【図13】第7の実施の形態を示すブロック図である。
【図14】第8の実施の形態を示すブロック図である。
【図15】5ステージのパイプライン構成を示す図であ
る。
【図16】7ステージのパイプライン構成を示す図であ
る。
【図17】ロードハザードを発生する命令シーケンスを
示す図である。
【図18】パイプラインのインターロックを説明するた
めの図である。
【図19】命令のスケジューリングを説明するための図
である。
【図20】R4000のパイプライン構成を示す図であ
る。
【符号の説明】
1 ロード命令情報登録部 3 ロード命令情報保持部 5 アドレス計算部 7 計算結果判定部 9 データ出力部 10 パイプライン処理部 11 IFステージ 12 IDステージ 13 EXステージ 14 MAステージ 15 WBステージ 21 ベース・レジスタ登録部 23 ベース・レジスタ・バッファ 25 レジスタファイル 27 加算器 29 比較器 31 記憶部 32 プログラムカウンタ(PC) 33 ベースアドレスとオフセットとを登録する登録部 35 ロードアドレス予測用プログラムカウンタ(TP
C) 37 ベースレジスタとオフセットとを保持するバッフ
ァ 39 ベースアドレス登録部 41 ベース・アドレス・バッファ 43 ロードアドレス登録部 45 ロード・アドレス・バッファ

Claims (19)

    (57)【特許請求の範囲】
  1. 【請求項1】 命令を実行するパイプライン処理部と、 前記命令の実行に用いられる各種のデータを保持する記
    憶部と、 を備えて前記命令をパイプライン制御により処理を行う
    マイクロプロセッサにおいて、 前記命令のうち、前記記憶部からロードを行うロード命
    令の情報の登録を行うロード命令情報登録部と、 このロード命令情報登録部にて登録されたロード命令情
    報を保持するロード命令情報保持部と、 このロード命令情報保持部に保持されたロード命令情報
    を用いて、前記パイプライン処理部が前記ロード命令の
    実行によるロードアドレスへのアクセス以前に予測ロー
    ドアドレスを計算するアドレス計算部と、 このアドレス計算部にて計算された予測ロードアドレス
    が正しいか否かの判定を行う計算結果判定部と、 この計算結果判定部の判定の結果により、前記予測ロー
    ドアドレスが正しい場合には前記予測ロードアドレスに
    該当する前記記憶部に格納されたデータを前記パイプラ
    イン処理部に出力し、それ以外の場合には前記ロード命
    令の実行により得られたロードアドレスに該当する前記
    記憶部に格納されたデータを前記パイプライン処理部に
    出力するデータ出力部と、 を備え、 前記データ出力部により出力されたデータを用いて以降
    の命令を実行することを特徴とするマイクロプロセッ
    サ。
  2. 【請求項2】 前記ロード命令情報登録部は、ロードア
    ドレスのベースアドレスを記憶するレジスタ番号及び前
    記ロード命令、若しくはそれより前に実行される命令の
    アドレスを関連付けて登録し、 前記ロード命令情報保持部は、関連付けられた前記レジ
    スタ番号及び前記命令アドレスを保持して、入力された
    命令アドレスに該当するレジスタ番号を出力し、 前記アドレス計算部は、前記ロード命令情報保持部より
    出力されたレジスタ番号及びロード命令に示されたオフ
    セット値を用いて、前記パイプライン処理部が前記ロー
    ド命令の実行によるロードアドレスへのアクセス以前に
    予測ロードアドレスを計算することを特徴とする請求項
    1記載のマイクロプロセッサ。
  3. 【請求項3】 前記ロード命令情報保持部は、命令フェ
    ッチ時に入力された命令アドレスに該当するレジスタ番
    号を出力することを特徴とする請求項2記載のマイクロ
    プロセッサ。
  4. 【請求項4】 前記ロード命令情報登録部は、ロードア
    ドレスのベースアドレスを記憶するレジスタ番号及び前
    記ロード命令のアドレスを関連付けて登録することを特
    徴とする請求項3記載のマイクロプロセッサ。
  5. 【請求項5】 前記ロード命令情報登録部は、ロードア
    ドレスのベースアドレスを記憶するレジスタ番号、ロー
    ド命令に示されたオフセット値、及び、ロード命令の命
    令アドレスを関連付けて登録し、 前記ロード命令情報保持部は、関連付けられた前記レジ
    スタ番号、前記オフセット値、及び前記命令アドレスを
    保持し、ロードアドレス予測用プログラムカウンタに示
    された命令アドレスに該当する前記レジスタ番号及び前
    記オフセット値を出力し、 前記アドレス計算部は、前記ロード命令情報保持部より
    出力されたレジスタ番号に該当するレジスタファイルに
    格納されたベースアドレス及びオフセット値を用いて、
    前記パイプライン処理部が前記ロード命令の実行による
    ロードアドレスへのアクセス以前に予測ロードアドレス
    を計算することを特徴とする請求項1記載のマイクロプ
    ロセッサ。
  6. 【請求項6】 前記ロード命令情報登録部は、ロードア
    ドレスのベースアドレス及び前記ロード命令以前に実行
    される命令とを関連付けて登録し、 前記ロード命令情報保持部は、関連付けられた前記ベー
    スアドレス及び前記命令アドレスを保持して、入力され
    た命令アドレスに該当するベースアドレスを出力し、 前記アドレス計算部は、前記ロード命令情報保持部より
    出力されたベースアドレス及びロード命令に示されたオ
    フセット値を用いて、前記パイプライン処理部が前記ロ
    ード命令の実行によるロードアドレスへのアクセス以前
    に予測ロードアドレスを計算することを特徴とする請求
    項1記載のマイクロプロセッサ。
  7. 【請求項7】 前記ロード命令情報保持部は、命令フェ
    ッチ時に入力された命令アドレスに該当するベースアド
    レスを出力することを特徴とする請求項6記載のマイク
    ロプロセッサ。
  8. 【請求項8】 命令を実行するパイプライン処理部と、 前記命令の実行に用いられる各種のデータを保持する記
    憶部と、 を備えて前記命令をパイプライン制御により処理を行う
    マイクロプロセッサにおいて、 前記命令のうち、前記記憶部からロードを行うロード命
    令のロードアドレスの登録を行うロード命令情報登録部
    と、 このロードアドレス登録部にて登録されたロードアドレ
    スを保持して、入力された命令アドレスに該当するロー
    ドアドレスを出力するロードアドレスバッファと、 このロードアドレスバッファにて出力されたロードアド
    レスが正しいか否かの判定を行う判定部と、 この判定部の判定の結果により、前記予測ロードアドレ
    スが正しい場合には前記予測ロードアドレスに該当する
    前記記憶部に格納されたデータを前記パイプライン処理
    部に出力し、それ以外の場合には前記ロード命令の実行
    により得られたロードアドレスに該当する前記記憶部に
    格納されたデータを前記パイプライン処理部に出力する
    データ出力部と、 を備え、 前記データ出力部により出力されたデータを用いて以降
    の命令を実行することを特徴とするマイクロプロセッ
    サ。
  9. 【請求項9】 前記ロード命令情報保持部は、命令フェ
    ッチ時に入力された命令アドレスに該当するロードアド
    レスを出力することを特徴とする請求項8記載のマイク
    ロプロセッサ。
  10. 【請求項10】 前記ロード命令情報登録部は、ロード
    命令のロードアドレス及び命令アドレスを関連付けて登
    録し、 前記ロード命令情報保持部は、関連付けられた前記ロー
    ドアドレスを保持し、ロードアドレス予測用プログラム
    カウンタに示された命令アドレスに該当するロードアド
    レスを出力することを特徴とする請求項8記載のマイク
    ロプロセッサ。
  11. 【請求項11】 前記ロード命令情報登録部は、 前記命令のうち、反復して実行するロード命令の情報を
    第1回目の実行の際に登録を行うことを特徴とする請求
    項1乃至10のいずれか一項に記載のマイクロプロセッ
    サ。
  12. 【請求項12】 命令を実行するパイプライン処理部
    と、 前記命令の実行に用いられる各種のデータを保持する記
    憶部と、 を備えて前記命令をパイプライン制御により処理を行う
    マイクロプロセッサにおいて、 所定のベースアドレス及びロード命令に示されたオフセ
    ット値を用いて、前記パイプライン処理部が前記ロード
    命令の実行によるロードアドレスへのアクセス以前に予
    測ロードアドレスを計算するアドレス計算部と、 このアドレス計算部にて計算された予測ロードアドレス
    が正しいか否かの判定を行う計算結果判定部と、 この計算結果判定部の判定の結果により、前記予測ロー
    ドアドレスが正しい場合には前記予測ロードアドレスに
    該当する前記記憶部に格納されたデータを前記パイプラ
    イン処理部に出力し、それ以外の場合には前記ロード命
    令の実行により得られたロードアドレスに該当する前記
    記憶部に格納されたデータを前記パイプライン処理部に
    出力するデータ出力部と、 を備え、 前記データ出力部により出力されたデータを用いて以降
    の命令を実行することを特徴とするマイクロプロセッ
    サ。
  13. 【請求項13】 命令を実行するパイプライン処理部
    と、 前記命令の実行に用いられる各種のデータを保持する記
    憶部と、 を備えて前記命令をパイプライン制御により処理を行う
    マイクロプロセッサにおいて、所定の予測ロードアドレ
    スを入力し、この予測ロードアドレスが正しいか否かの
    判定を行う計算結果判定部と、 この計算結果判定部の判定の結果により、前記予測ロー
    ドアドレスが正しい場合には前記予測ロードアドレスに
    該当する前記記憶部に格納されたデータを前記パイプラ
    イン処理部に出力し、それ以外の場合には前記ロード命
    令の実行により得られたロードアドレスに該当する前記
    記憶部に格納されたデータを前記パイプライン処理部に
    出力するデータ出力部と、 を備え、 前記データ出力部により出力されたデータを用いて以降
    の命令を実行することを特徴とするマイクロプロセッ
    サ。
  14. 【請求項14】 命令をパイプライン制御により処理を
    行うマイクロプロセッサのロードアドレス予測方法であ
    って、 前記命令のうち、ロード命令の情報の登録を行うロード
    命令情報登録ステップと、 前記ロード命令情報を用いて、ロード命令の実行により
    得られたロードアドレスへのアクセス以前に予測ロード
    アドレスを計算するアドレス計算ステップと、前記予測
    ロードアドレスが正しいか否かの判定を行う計算結果判
    定ステップと、 前記判定の結果により、前記予測ロードアドレスが正し
    い場合には前記予測ロードアドレスに該当するデータを
    出力し、それ以外の場合には前記ロード命令の実行によ
    り得られたロードアドレスに該当するデータを出力する
    出力ステップと、 を行い、 前記出力ステップにより出力されたデータを用いて以降
    の命令を実行することを特徴とするマイクロプロセッサ
    のロードアドレス予測方法。
  15. 【請求項15】 前記ロード命令の情報は、 少なくともロードアドレスのベースアドレスを記憶する
    レジスタ番号を含むことを特徴とする請求項14記載の
    マイクロプロセッサのロードアドレス予測方法。
  16. 【請求項16】 前記アドレス計算ステップは、 命令フェッチ時に入力された命令アドレスに該当するレ
    ジスタ番号を用いて前記予測ロードアドレスを計算する
    ことを特徴とする請求項15記載のマイクロプロセッサ
    のロードアドレス予測方法。
  17. 【請求項17】 前記ロード命令の情報は、 少なくともロードアドレスのベースアドレス、または、
    ロードアドレスを含むことを特徴とする請求項14記載
    のマイクロプロセッサのロードアドレス予測方法。
  18. 【請求項18】 命令をパイプライン制御により処理を
    行うマイクロプロセッサのロードアドレス予測方法にお
    いて、 所定のベースアドレス及びロード命令に示されたオフセ
    ット値を用いて、ロード命令の実行により得られたロー
    ドアドレスへのアクセス以前に予測ロードアドレスを計
    算するロードアドレス計算ステップと、 前記予測ロードアドレスが正しいか否かの判定を行う計
    算結果判定ステップと、 前記判定の結果により、前記予測ロードアドレスが正し
    い場合には前記予測ロードアドレスに該当するデータを
    出力し、それ以外の場合には前記ロード命令の実行によ
    り得られたロードアドレスに該当するデータを出力する
    出力ステップと、 を行い、 前記出力ステップにより出力されたデータを用いて以降
    の命令を実行することを特徴とするマイクロプロセッサ
    のロードアドレス予測方法。
  19. 【請求項19】 命令を実行するパイプライン処理部
    と、 前記命令の実行に用いられる各種のデータを保持する記
    憶部と、 を備えて前記命令をパイプライン制御により処理を行う
    マイクロプロセッサにおいて、 前記パイプライン処理部が前記命令のうち、前記記憶部
    からロードを行うロード命令の実行によるロードアドレ
    スへのアクセス以前に予測ロードアドレスを計算するア
    ドレス計算部と、 このアドレス計算部にて計算された予測ロードアドレス
    が正しいか否かの判定を行う計算結果判定部と、 この計算結果判定部の判定の結果により、前記予測ロー
    ドアドレスが正しい場合には前記予測ロードアドレスに
    該当する前記記憶部に格納されたデータを前記 パイプラ
    イン処理部に出力し、それ以外の場合には前記ロード命
    令の実行により得られたロードアドレスに該当する前記
    記憶部に格納されたデータを前記パイプライン処理部に
    出力するデータ出力部と、 を備え、 前記アドレス計算部は、所定の固定値及びロード命令に
    示されたオフセット値を用いて、前記パイプライン処理
    部が前記ロード命令の実行によるロードアドレスへのア
    クセス以前に予測ロードアドレスを計算し、 前記データ出力部により出力されたデータを用いて以降
    の命令を実行することを特徴とするマイクロプロセッ
    サ。
JP28876995A 1995-11-07 1995-11-07 マイクロプロセッサ及びそのロードアドレス予想方法 Expired - Fee Related JP3435267B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP28876995A JP3435267B2 (ja) 1995-11-07 1995-11-07 マイクロプロセッサ及びそのロードアドレス予想方法
US08/742,911 US5903768A (en) 1995-11-07 1996-11-01 Pipelined Microprocessor and load address prediction method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28876995A JP3435267B2 (ja) 1995-11-07 1995-11-07 マイクロプロセッサ及びそのロードアドレス予想方法

Publications (2)

Publication Number Publication Date
JPH09134287A JPH09134287A (ja) 1997-05-20
JP3435267B2 true JP3435267B2 (ja) 2003-08-11

Family

ID=17734481

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28876995A Expired - Fee Related JP3435267B2 (ja) 1995-11-07 1995-11-07 マイクロプロセッサ及びそのロードアドレス予想方法

Country Status (2)

Country Link
US (1) US5903768A (ja)
JP (1) JP3435267B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009024012A1 (de) 2008-08-21 2010-02-25 Kabushiki Kaisha Toshiba Pipeline-Betriebsprozessor und Steuersystem

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212788A (ja) * 1998-01-28 1999-08-06 Toshiba Corp プロセッサのデータ供給装置
WO1999045463A1 (fr) * 1998-03-04 1999-09-10 Hitachi, Ltd. Processeur de donnees
JP3499135B2 (ja) * 1998-06-29 2004-02-23 富士通株式会社 情報処理装置
US6651176B1 (en) 1999-12-08 2003-11-18 Hewlett-Packard Development Company, L.P. Systems and methods for variable control of power dissipation in a pipelined processor
US6742112B1 (en) * 1999-12-29 2004-05-25 Intel Corporation Lookahead register value tracking
US20020087842A1 (en) * 2000-12-29 2002-07-04 Smith Ronald D. Method and apparatus for performing architectural comparisons
US6643739B2 (en) * 2001-03-13 2003-11-04 Koninklijke Philips Electronics N.V. Cache way prediction based on instruction base register
EP1316891B1 (de) * 2001-12-03 2007-10-10 Infineon Technologies AG Datenübertragungseinrichtung
US7281818B2 (en) * 2003-12-11 2007-10-16 Dialight Corporation Light reflector device for light emitting diode (LED) array
US7590825B2 (en) 2006-03-07 2009-09-15 Intel Corporation Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
US7856548B1 (en) * 2006-12-26 2010-12-21 Oracle America, Inc. Prediction of data values read from memory by a microprocessor using a dynamic confidence threshold
US7788473B1 (en) * 2006-12-26 2010-08-31 Oracle America, Inc. Prediction of data values read from memory by a microprocessor using the storage destination of a load operation
US8601240B2 (en) * 2010-05-04 2013-12-03 Oracle International Corporation Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
US9880849B2 (en) * 2013-12-09 2018-01-30 Macom Connectivity Solutions, Llc Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07101385B2 (ja) * 1986-12-05 1995-11-01 株式会社東芝 情報処理装置
JPH04275628A (ja) * 1991-03-01 1992-10-01 Mitsubishi Electric Corp 演算処理装置
DE4237417C2 (de) * 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
JP3254019B2 (ja) * 1992-11-30 2002-02-04 富士通株式会社 データ先読み制御装置
US5706459A (en) * 1994-01-06 1998-01-06 Fujitsu Limited Processor having a variable number of stages in a pipeline

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009024012A1 (de) 2008-08-21 2010-02-25 Kabushiki Kaisha Toshiba Pipeline-Betriebsprozessor und Steuersystem

Also Published As

Publication number Publication date
US5903768A (en) 1999-05-11
JPH09134287A (ja) 1997-05-20

Similar Documents

Publication Publication Date Title
JP3435267B2 (ja) マイクロプロセッサ及びそのロードアドレス予想方法
US5954815A (en) Invalidating instructions in fetched instruction blocks upon predicted two-step branch operations with second operation relative target address
JP3871336B2 (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
JP3599409B2 (ja) 分岐予測装置
JPH0334024A (ja) 分岐予測の方法とそのための装置
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
EP1003095A2 (en) A computer system for executing branch instructions
US7200738B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
US20030126409A1 (en) Store sets poison propagation
US7565658B2 (en) Hidden job start preparation in an instruction-parallel processor system
US6516462B1 (en) Cache miss saving for speculation load operation
US20060212680A1 (en) Methods and apparatus for dynamic prediction by software
JP2003140965A (ja) 分散共有メモリ型並列計算機および命令スケジューリング方法
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US6223259B1 (en) Reducing read cycle of memory read request for data to be partially modified by a pending write request
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
US7275146B2 (en) Instruction control device and method therefor
JPH10124312A (ja) 中央処理装置
US6360310B1 (en) Apparatus and method for instruction cache access
JP2694799B2 (ja) 情報処理装置
US6578135B1 (en) Method and apparatus for performing addressing operations in a superscalar superpipelined processor
JP3765111B2 (ja) 分岐登録命令を有するプロセッサ
JP2591325B2 (ja) 分岐制御装置
JP2877531B2 (ja) 並列演算処理装置
JP3102846B2 (ja) ロードアドレスキャッシュ装置及び方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090530

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090530

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100530

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees