JPH0820951B2 - プロセッサの動作速度を速める方法 - Google Patents

プロセッサの動作速度を速める方法

Info

Publication number
JPH0820951B2
JPH0820951B2 JP3138670A JP13867091A JPH0820951B2 JP H0820951 B2 JPH0820951 B2 JP H0820951B2 JP 3138670 A JP3138670 A JP 3138670A JP 13867091 A JP13867091 A JP 13867091A JP H0820951 B2 JPH0820951 B2 JP H0820951B2
Authority
JP
Japan
Prior art keywords
memory
effective address
instruction
address
recently
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
JP3138670A
Other languages
English (en)
Other versions
JPH05143335A (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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH05143335A publication Critical patent/JPH05143335A/ja
Publication of JPH0820951B2 publication Critical patent/JPH0820951B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータ回路に関
し、特に、コンピュータプロセッサの動作をスピードア
ップする方法及び装置に関する。
【0002】
【従来の技術】縮小命令セット(RISC)コンピュー
タはほぼクロックサイクルごとに1つの命令を実行する
ことができるので、他のコンピュータと比べて動作速度
の点では有利である。この利点は、命令が実行されるた
びに、続いて次の命令が実行されるように、各動作の様
々な段階をパイプライン化(時間に関してオーバレイさ
せる)ことにより得られる。命令がそれぞれ同数の個別
動作,通常は取り出し,復号,実行及び戻し書き込みの
各動作を含んでいる限り、パイプライン化は適切に機能
する。ところが、ロード命令や記憶命令などのいくつか
の命令はプロセッサチップから情報を送り出すこと又は
チップから情報を検索することを要求するため、すなわ
ち、より多くの個別ステップを実行しなければならない
ため、そのような命令は一般により多くの個別動作を必
要とする。このため、パイプライン化方式を利用するコ
ンピュータにおいてロード動作及び記憶動作の実行に要
する時間を短縮することは、システムのスピードアップ
にとっては非常に重要である。
【0003】
【発明が解決しようとする課題】従って、本発明の目的
は、コンピュータプロセッサの動作速度を増すことであ
る。本発明の別のさらに特定的な目的は、パイプライン
化方式を利用するプロセッサを含むコンピュータシステ
ムの動作速度を増すことである。
【0004】
【課題を解決するための手段】本発明の上記の目的及び
その他の目的は、プロセッサの動作により要求される情
報のアドレスを予測する方法であって、ロード命令の有
効アドレスを、所定の数のステップだけ早く実行すべき
命令のアドレスにより索引付けしうる位置に記録する過
程と、その位置に既に記憶されている何れかのロード動
作に関する有効アドレスを、同様に所定の数のステップ
だけ実行すべき命令のアドレスにより索引付けしうる第
2の位置に記録する過程と、命令ごとに、先行ロード命
令がそのアドレスに対して索引付けされているか否かを
判定する過程と、その命令のアドレスに対して索引付け
された最前の2つのロード命令の差を確定する過程と、
次のロード命令の予測アドレスを得るために、その差を
最前のロード命令のアドレスに加算する過程とから成る
方法において実現される。パイプラインの中でロード命
令が、そのアドレスが計算される位置に到達するよりあ
る数の動作ステップだけ前にそのロード命令を予想し、
その命令がアクセスするアドレスを予測し、そのアドレ
スのデータを取り出すことにより、ロード命令が現れた
後の次のクロックサイクルでロード命令が情報を使用で
きる状態になるので、通常のパイプライン化プロセッサ
動作においてロード命令と関連して起こっていた遅延を
なくすことが出きる。
【0005】本発明の上記の目的及び特徴と、その他の
目的及び特徴は、添付の図面に関連する以下の詳細な説
明を参照することによりさらに良く理解されるであろ
う。尚、図面中、いくつかの図を通して、同じ素子は同
じ図中符号により示される。
【0006】〔表記法及び用語〕以下の詳細な説明の中
には、コンピュータメモリの内部におけるデータビット
の操作をアルゴリズムや記号表示によって表している部
分がある。そのようなアルゴリズムによる説明と表示
は、データ処理技術に熟達する人が同じ分野の当業者に
作業の内容を最も有効に伝達するために使用する手段で
ある。
【0007】ここでは、また、一般的にも、アルゴリズ
ムは所望の結果に至る首尾一貫した一連のステップであ
ると考えられる。それらのステップは、物理的な量の物
理的操作を要求するステップである。通常、それらの量
は記憶,転送,組み合わせ,比較及びその他の方法によ
る操作が可能である電気的信号又は磁気信号の形態をと
るが、必ずしもそうである必要はない。主に一般に使用
されている用語であるという理由により、それらの信号
をビット,値,要素,記号,文字,項,数などと呼ぶと
好都合である場合があることがわかっている。ただし、
これらの用語及びそれに類する用語は全て適切な物理的
な量と関連させるべきものであり、そのような量に便宜
上付されたラベルであるにすぎないということを忘れて
はならない。
【0008】さらに、実行される操作を、一般にはオペ
レータが実行する知的動作と関連している加算又は比較
などの用語で表すことが多いが、本発明の一部を成す、
ここで説明する動作のいずれについても、そのようなオ
ペレータの能力は多くの場合に不要であるか、又は望ま
しくない。動作は機械の動作である。本発明の動作を実
行するのに有用な機械には、汎用デジタルコンピュータ
又はそれに類する他の装置がある。いずれの場合にも、
コンピュータを動作させるに際しての方法動作と、計算
それ自体の方法との明確な区別に留意すべきである。本
発明は、電気的信号又はその他の物理的(たとえば、機
械的,化学的)信号を処理して、他の所望の物理的信号
を発生するときにコンピュータを動作させる装置及び方
法ステップに関する。
【0009】
【実施例】先に指摘した通り、RISCコンピュータ
は、1つの命令を実行するたびに、続いて次の命令を実
行するように各命令の様々の段階をパイプライン化する
ことにより、ほぼクロックサイクルごとに1つの命令を
実行することができるので、他のコンピュータと比べて
動作速度の点で有利である。命令がそれぞれ同数の個別
動作,通常は取り出し,復号,実行及び戻し書き込みの
動作を含んでいる限りにおいては、パイプライン化方式
は十分に機能する。図1は、5つの個別命令をパイプラ
イン化した時間図である。初めの3つの命令はそれぞれ
互いに重複する動作段階を有しているため、クロックサ
イクルごとに1つの命令が1度実行されることがわかる
であろう。
【0010】しかしながら、ロード命令や記憶命令など
のいくつかの命令はプロセッサチップから情報を送り出
すこと又はチップから情報を検索することを要求する
か、あるいは利用可能なポートより多くの位置をアクセ
スしなければならないので、そのような命令が必要とす
る個別動作の数は一般に多くなる。ロード命令は、通
常、完了までに最も長い時間を要する命令である。図1
の第4の命令がロード命令である。ロード動作の初めの
2つの段階で命令を取り出し、復号し、ロード情報に関
して有効アドレスを計算した後、情報をメモリから戻し
て、ロード命令に続く命令がその情報を使用できるよう
になるまでに、相当の数のクロックサイクル(図では3
つ)が必要である。そのために、ロード動作の結果が利
用可能な状態になるまでに、プロセッサは次の命令の実
行を遅らせざるをえない。従って、パイプライン化方式
を利用するコンピュータにおいてロード動作及び記憶動
作に要する時間を短縮することは、システムの動作速度
を考える上で非常に重要なのである。
【0011】命令を実行するのに要する時間の短縮とい
う点で、ロード命令は特に改善を行いやすいように思わ
れる。いくつかの命令シーケンスが何度も繰り返し起こ
るので、ロード命令は他の命令の特定のセットの後に何
度か現れることになる。ロード命令が現れたとき、アク
セスすべき情報は、ロード命令の最前の有効アドレスか
ら所定の数のアドレスだけ進んだメモリアドレスにある
のが普通である。このような繰り返し状況が起こること
から、プロセッサをスピードアップするためにロードア
ドレスを予測するのは実行可能な方法であると考えられ
る。
【0012】本発明は、コンピュータシステムの動作に
要する時間を短縮するために、次のロード動作がアクセ
スするメモリアドレスを予測する方式を利用する。パイ
プラインの中でロード命令が、そのアドレスが計算され
る位置に到達するよりある数の動作ステップだけ前にそ
のロード命令を予想し、先のロード動作に関する情報を
使用して、命令がアクセスするであろうアドレスを予測
し、予測したアドレスのデータを取り出すことにより、
ロード命令が現れた後の次のクロックサイクルで情報を
利用できる状態になるので、通常のパイプライン化プロ
セッサ動作においてロード命令と関連して起こっていた
遅延をなくすことができる。
【0013】このような所望の結果を得るために、本発
明では、それまでのロード命令の有効アドレスを含む予
測テーブルをメモリに記憶する。最前のロード動作と、
そのすぐ前のロード動作の有効アドレスはロード命令の
前に起こる命令によりテーブルの索引付けされた位置に
記憶される。最前のロード動作と、そのすぐ前のロード
動作とのアドレスの差を確定するために、それらのロー
ド動作の有効アドレスを比較する。このアドレス差を最
前のロード動作の有効アドレスに加算して、新たな予測
アドレスを得る。この新たな予測アドレスをアクセスす
ると、次にロード動作が要求するであろう情報であると
期待されるものが提供される。実際にこれが正しい情報
であるか否かを判定するために予測アドレスをロード命
令の実際の有効アドレスと比較する。アドレスが同じで
あれば、情報は正しく、直ちに全く遅延なくプロセッサ
はその情報を利用することができる。アドレスが同じで
なければ、ロード命令の有効アドレスを使用して、ロー
ド動作をその正規の時間シーケンスで実行する。その結
果、予測動作により時間を節約できるか、又はロード動
作に通常要する時間が必要とされる。いずれの場合に
も、その動作によってロードアドレスをアクセスするた
めの時間が増すことはない。
【0014】図2は、本発明に従った予測テーブルを示
す。このテーブルはメモリのいくつかの行を含む。メモ
リの各行にはいくつかの個別エントリが記憶されてい
る。基本構成では、それらのエントリは、特定のソフト
ウェアプログラムによって既に完了したロード動作にお
いて使用された有効アドレスである。予測テーブルの各
行は、ロード命令より予め選択された命令数だけ前に発
生したアドレスの下位ビットによりアクセスされる。通
常、アクセスアドレスはプロセッサのプログラムカウン
タに供給され、パイプライン中のそれぞれの命令と関連
づけられる。予測テーブルの1つの行をアクセスするた
めの下位ビットのこのアドレッシングは、何れかの通常
のメモリアレイへの指標付けと同じ方式で実行される。
使用する下位ビットの数は、予測テーブルに含むのが望
まれるメモリの行の数によって決まる。テーブルの1例
はメモリの2K行を構成するために11ビットを利用す
る。
【0015】予測テーブルに関しては、記録動作と、予
測動作の2つの動作が実行される。記録動作は、ロード
動作が起こるたびに実行される。記録動作においては、
ロード命令の有効アドレスをLEA列の適切な索引位置
に導入する。予測動作を予測すべきロード動作より動作
4つ分だけ前に開始することが望まれるシステムを例に
とると、ロード命令の有効アドレスはロード命令より命
令4つ分だけ前の命令のアドレスにより索引付けされ
る。ビットを記憶するためにパイプラインの中で戻るべ
きステップの数は、ロード動作を実行するために要する
時間として最も確率の高い時間に基づいて適切に選択さ
れる。パイプライン化システムでは、割り込みの発生に
備えていくつかの段階を保持しておかなければならない
ので、ロード命令より命令4つ分だけ前の命令は利用可
能な状態にあるのが普通である。何らかの理由により利
用できないのであれば短絡先入れ先出し回路が情報を提
供しても良い。
【0016】前述のように、現在ロード命令の有効アド
レスはクロック時間4回分だけ前の命令に関わる予測テ
ーブルのLEAスペースに導入される。この命令シーケ
ンスを繰り返してゆくと、次にこのロード動作より命令
4つ分だけ前の命令が実行されるときに、最前に計算し
たロード命令の有効アドレスを直ちに利用できる。
【0017】現在有効アドレスについて要求されたLE
Aスペースに既に有効アドレスがある場合には、旧有効
アドレスを、最前の有効アドレスのすぐ前の有効アドレ
スを指示する列NLEAのメモリスペースに移動する。
LEAスペースにアドレスが現れうる唯一の方法は記録
動作により索引付けされるべきであるので、先にLEA
列に入っていたアドレスは、いずれも、現在のロード命
令が先にアクセスされたときに起こったロード命令を指
示する。LEA列とNLEA列の2組の有効アドレスの
差がこの索引値における最前の2つの有効ロードアドレ
スの差、すなわち、それらのアドレスが互いにどれほど
離れているかを示すことは当業者にはわかるであろう。
その後、次のロード命令がおそらくは目指すであろう新
たなアドレスを得るために、この差の値を現在有効アド
レスの値に加算すれば良い。
【0018】予測動作は現在命令を取り上げ、テーブル
中のLEA列の有効アドレスの値を読み取り、その値を
その行についてのLEA列とNLEA列の有効アドレス
の差に加算し、そのアドレスにある情報を事前にアクセ
スして、命令4つだけ後の時点でロード命令が実行され
るときにその情報を利用できる状態にしておく。
【0019】次のロードのアドレスを予測するに際して
の本発明の動作を試験した結果、その効果が判明した。
たとえば、SPARCベースRISCシステムにおいて
整数ロードアドレス演算を予測するためのプログラムと
組み合わせて使用したとき、予測テーブルの行を索引付
けするために使用するビットの数が7より多い場合に本
発明の構成はロードアドレスの90パーセントを越える
ものを予測した。同じように、SPARCベースRIS
Cシステムにおいて浮動小数点ロードアドレス演算を予
測するためのプログラムと組み合わせて使用したときに
は予測テーブルの行の索引付けするために使用するビッ
トの数が5より多い場合に本発明の構成は80パーセン
トから90パーセントのロードアドレスを予測した。
【0020】動作の効率を向上させるための予測テーブ
ルの2つの最適化方式を図2に示す。索引アドレスの指
定が正確であればあるほど、予測はより正確になる。従
って、第1の最適化方式は図2の左側に付け足された第
1の列を含む。この列にはLEA列及びNLEA列に記
憶されている有効アドレスの索引付けを補助するために
タグを記憶しても良い。本発明の構成の好ましい一実施
例においては、タグは、クロック周期4つ分だけ先行す
る命令についてプログラムカウンタに保持されているア
ドレスのいくつかの上位ビットを含んでいても良い。好
ましい一実施例では、行に索引付けするために使用した
下位ビットより上位の全てのビットを使用する。記録動
作中に有効ロードアドレスをLEA列に導入するとき
に、それらのビットをタグ列に入れても良い。タグビッ
トは、2つの異なるロード命令(2つの異なるメモリの
ページからの命令)から有効アドレスが出て、無用な予
測を発生させる確率をかなり低下させる。タグビット
は、ロード命令からクロック4つだけ前の命令が、タグ
ビットが記憶されているのと同じ命令であることを保証
する。従って、このタグ列は予測の精度を相当に向上さ
せるのである。
【0021】第2の最適化方式は、状態ビットを記憶す
る予測テーブルの第4の列を含む。本発明の好ましい一
実施例では、単一の状態ビットを利用する。尚、予測メ
カニズムは、予測テーブルのLEA列とNLEA列の双
方に値がある場合にのみ有効である。なぜならば、この
場合にのみアドレスの差が得られるからである。2つの
列に記憶されている値が同じロード動作に関連していな
い状況をなくすために、システムはタグ列に新たなエン
トリのために導入すべき値をタグ列の旧値と比較する。
それらの値が互いに異なる場合には、これが新たなアド
レスを含む動作であることを指示するために、状態ビッ
トをゼロにセットする。従って、このときには差の値は
有効ではない。タグの値が同じであれば、状態ビットを
1にセットする。予測が読み取られるときに、タグビッ
トの値を検索して、それがゼロであれば、予測の結果は
無視される。結果が1であり且つタグが同じである場合
には、結果が有効である確率は非常に高い。
【0022】図3は、本発明に従って動作を実行する流
れ図を示す。図3のステップ10では、実行すべき命令
PCi を受信し、その命令がロード命令であるか否かを
判定するために比較を実行する。現在命令PCi がロー
ド命令であれば、ステップ11で、ステップ4つだけ前
の命令(PCi-1) のアドレスを得る。予測テーブル1
2の、ステップ4つだけ前の命令(PCi-1)に関わる
索引の下に、命令PCiの有効アドレスを記憶し、LE
A位置に有効アドレスがあれば、それをNLEA列へシ
フトする。予測テーブルにタグアドレス列が含まれてい
る場合には、プログラムカウンタに保持されているステ
ップ4つだけ前の命令(PCi-1)からのいくつかの上
位ビットでこの列を充填しても良い。また、ステップ1
3で、ステップ4つだけ前の命令の上位ビットとタグと
を比較することにより、状態ビットを更新しても良い。
記録動作に要求されるものはこれで全てである。
【0023】図3は、予測動作を実行するためのステッ
プをさらに示している。命令が復号段階に到達するたび
に、ステップ15で、LEA及びNLEAのエントリを
検索するために、その命令のアドレスを使用して予測テ
ーブル12に索引付けする。アクセスされた行のタグを
命令のタグに対して検査するステップ13の比較の結
果、上位ビットが同じであることがわかり且つ状態ビッ
トは1である場合には、ステップ15で、LEA列とN
LEA列の有効アドレスの値を検索し、ステップ16で
それらの値を減算器へ転送する。減算器は、2組の下位
ビットの差を出力値として供給する。ステップ17で
は、この値を最前の有効アドレスと共に加算器に供給す
る。尚、ステップ16及び17の代わりに、最前の有効
アドレスを左へビット位置1つだけシフトし(値を2倍
にする)、それから最前の有効アドレスの1つ前の有効
アドレスを減算する1つのステップを採用することもで
きるであろう。ステップ17における加算器の出力は、
ステップ18でロード情報を求めてメモリをアクセスす
るために使用される。予測された有効アドレスは、ステ
ップ20でも、それが到着したときにロード命令の有効
アドレスと比較される。それらの値が比較されると、ス
テップ21でANDゲートにイネーブル出力が供給され
て、ロード命令に続く命令で予測アドレスにある情報を
利用することができるようになる。同時に、正規のロー
ド動作が始まり、ステップ20の比較の結果、ステップ
21のANDゲートにイネーブル出力が供給された場合
に、そのロード動作は終了する。そうでない場合には、
正規のロード動作は継続し、通常の時間周期だけ実行さ
れる。
【0024】本発明を好ましい一実施例に関連し説明し
たが、当業者により本発明の趣旨から逸脱せずに様々な
変形や変更を実施しうることは理解されるであろう。た
とえば、特定のシステムにおいてロードアドレス以外の
ものを予測する必要があれば、そのような予測を実行す
るために本発明の構成を使用しても良いであろう。従っ
て、本発明は特許請求の範囲によって評価されるべきで
ある。
【0025】
【発明の効果】以上のように、本発明はパイプライン化
方式を利用するプロセッサを含むコンピュータシステム
の動作速度を増すことができる。
【図面の簡単な説明】
【図1】パイプライン化コンピュータプロセッサの動作
を示すタイミング図。
【図2】本発明を実現するためのメモリ構成を示す図。
【図3】本発明に従った動作を示す流れ図。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 現在命令のアドレスを含むプログラムカ
    ウンタを有し且つ複数のメモリ行から構成されるメモリ
    アレイを有し、前記メモリ行の各々は最近の有効アドレ
    スを記憶する最近有効アドレスフィールドと、2番目に
    最近の有効アドレスを記憶する準最近有効アドレスフィ
    ールドとを含むようなマルチプロセッサへ、将来のLO
    AD命令に備えてメモリからデータ値をロードする方法
    において、 a)前記マイクロプロセッサによる現在LOAD命令の
    実行中に前記メモリアレイを更新する過程であって、 i) 現在LOAD命令の前に位置する第1の命令のメ
    モリアドレスからの1組の下位ビットを使用して、前記
    メモリ行の中の第1のものを選択するために、前記メモ
    リアレイを索引付けする部分過程と、 ii)前記第1のメモリ行の最近有効アドレスフィール
    ドにある最近有効アドレスを前記第1のメモリ行の準最
    近有効アドレスフィールドへ移動する部分過程と、 iii) 現在LOAD命令の現在有効アドレスを前記
    第1のメモリ行の最近有効アドレスフィールドに記憶す
    る部分過程とから成る更新する過程と; b)将来のLOAD命令に備えて前記メモリからデータ
    値をロードする過程であって、 i) 前記プログラムカウンタからの1組の下位ビット
    を使用して、前記メモリ行の中の第2のものを選択する
    ために、前記メモリアレイを索引付けする部分過程と、 ii)前記第2のメモリ行の最近有効アドレスを前記第
    2のメモリ行の最近有効アドレスと、前記第2のメモリ
    行の準最近有効アドレスとの差に加算することにより、
    有効アドレスを予測する部分過程と、 iii) 前記予測された有効アドレスを使用して前記
    メモリから前記データ値をロードする部分過程とから成
    るロードする過程と; c)予測された有効アドレスが将来のLOAD命令の有
    効アドレスと一致する場合に前記データ値を使用する過
    程とから成る方法。
  2. 【請求項2】 現在命令のアドレスを含むプログラムカ
    ウンタを有するマイクロプロセッサにあって、将来のL
    OAD命令に備えてメモリからマイクロプロセッサにデ
    ータ値をロードする装置において、 a)複数のメモリ行から構成され、前記メモリ行の各々
    は最近の有効アドレスを記憶する最近有効アドレスフィ
    ールドと、2番目に最近の有効アドレスを記憶する準最
    近有効アドレスフィールドとを含むようなメモリアレイ
    と; b)前記マイクロプロセッサによる現在LOAD命令の
    実行中に前記メモリアレイを更新する手段であって、 i) 前記現在LOAD命令の前に位置する第1の命令
    のメモリアドレスからの1組の下位ビットを使用して、
    前記メモリ行の中の第1のものを選択するために、前記
    メモリアレイを索引付けする手段と、 ii)前記第1のメモリ行の最近有効アドレスフィール
    ドにある最近有効アドレスを前記第1のメモリ行の準最
    近有効アドレスフィールドへ移行する手段と 、 iii) 現在LOAD命令の現在有効アドレス
    を前記第1のメモリ行の最近有効アドレスフィールドに
    記憶する手段とを具備する更新する手段と; c)将来のLOAD命令に備えて前記メモリからデータ
    値をロードする手段であって、 i) 前記プログラムカウンタからの1組の下位ビット
    を使用して、前記メモリ行の中の第2のものを選択する
    ために、前記メモリアレイを索引付けする手段と、 ii)前記第2のメモリ行の最近有効アドレスを前記第
    2のメモリ行の最近有効アドレスを前記第2のメモリ行
    の最近有効アドレスと、前記第2のメモリ行の準最近有
    効アドレスとの差に加算することにより、有効アドレス
    を予測する手段と、 iii) 前記予測された有効アドレスを使用して、前
    記メモリから前記データ値をロードする手段とを具備す
    るロードする手段と; d)予測された有効アドレスが将来のLOAD命令の有
    効アドレスと一致する場合に前記データ値を使用する手
    段とを具備する装置。
JP3138670A 1990-05-15 1991-05-15 プロセッサの動作速度を速める方法 Expired - Fee Related JPH0820951B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/523,718 US5210838A (en) 1990-05-15 1990-05-15 Method and apparatus for predicting the effective addresses of future memory load operations in a microprocessor
US523,718 1990-05-15

Publications (2)

Publication Number Publication Date
JPH05143335A JPH05143335A (ja) 1993-06-11
JPH0820951B2 true JPH0820951B2 (ja) 1996-03-04

Family

ID=24086181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3138670A Expired - Fee Related JPH0820951B2 (ja) 1990-05-15 1991-05-15 プロセッサの動作速度を速める方法

Country Status (2)

Country Link
US (1) US5210838A (ja)
JP (1) JPH0820951B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5485589A (en) * 1991-12-31 1996-01-16 Dell Usa, L.P. Predictive addressing architecture
JPH0659972A (ja) * 1992-08-05 1994-03-04 Oki Electric Ind Co Ltd メモリ制御装置
US6604190B1 (en) * 1995-06-07 2003-08-05 Advanced Micro Devices, Inc. Data address prediction structure and a method for operating the same
US5854911A (en) * 1996-07-01 1998-12-29 Sun Microsystems, Inc. Data buffer prefetch apparatus and method
US5822788A (en) * 1996-12-20 1998-10-13 Intel Corporation Mechanism for prefetching targets of memory de-reference operations in a high-performance processor
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
US6401193B1 (en) * 1998-10-26 2002-06-04 Infineon Technologies North America Corp. Dynamic data prefetching based on program counter and addressing mode
US7739483B2 (en) * 2001-09-28 2010-06-15 Intel Corporation Method and apparatus for increasing load bandwidth
US20070277025A1 (en) * 2006-05-25 2007-11-29 International Business Machines Corporation Method and system for preventing livelock due to competing updates of prediction information
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US10740248B2 (en) * 2018-12-13 2020-08-11 International Business Machines Corporation Methods and systems for predicting virtual address

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4236205A (en) * 1978-10-23 1980-11-25 International Business Machines Corporation Access-time reduction control circuit and process for digital storage devices
US4371924A (en) * 1979-11-09 1983-02-01 Rockwell International Corp. Computer system apparatus for prefetching data requested by a peripheral device from memory
US4583162A (en) * 1983-01-13 1986-04-15 The Singer Company Look ahead memory interface
JPH0731627B2 (ja) * 1985-08-10 1995-04-10 株式会社リコー メモリ−装置
US4918587A (en) * 1987-12-11 1990-04-17 Ncr Corporation Prefetch circuit for a computer memory subject to consecutive addressing
US5093777A (en) * 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack

Also Published As

Publication number Publication date
US5210838A (en) 1993-05-11
JPH05143335A (ja) 1993-06-11

Similar Documents

Publication Publication Date Title
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
US4942520A (en) Method and apparatus for indexing, accessing and updating a memory
EP0199947B1 (en) Pageable branch history table
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
US5687360A (en) Branch predictor using multiple prediction heuristics and a heuristic identifier in the branch instruction
US4894772A (en) Method and apparatus for qualifying branch cache entries
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
JP2003509733A5 (ja)
US5581721A (en) Data processing unit which can access more registers than the registers indicated by the register fields in an instruction
EP0394624B1 (en) Multiple sequence processor system
KR100335672B1 (ko) 메모리페이지크로싱예측주석을사용하는실제주소지정데이타기억구조로부터의빠른데이타검색
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
JPH11504458A (ja) スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法
US5765007A (en) Microinstruction sequencer having multiple control stores for loading different rank registers in parallel
JPH0820951B2 (ja) プロセッサの動作速度を速める方法
CN114518841A (zh) 存储器中处理器和使用存储器中处理器输出指令的方法
US6851033B2 (en) Memory access prediction in a data processing apparatus
US5434986A (en) Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
JP3725547B2 (ja) 限定ラン分岐予測
US4812970A (en) Microprogram control system
US5729723A (en) Data processing unit
JP2002278752A (ja) 命令の実行結果予測装置
KR101076815B1 (ko) 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
Hua et al. Early resolution of address translation in cache design
Edwards et al. MU6-G. A new design to achieve mainframe performance from a mini-sized computer

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees