JP2505086B2 - アドレス生成機構及びデ―タの事前取り出し方法 - Google Patents

アドレス生成機構及びデ―タの事前取り出し方法

Info

Publication number
JP2505086B2
JP2505086B2 JP4065258A JP6525892A JP2505086B2 JP 2505086 B2 JP2505086 B2 JP 2505086B2 JP 4065258 A JP4065258 A JP 4065258A JP 6525892 A JP6525892 A JP 6525892A JP 2505086 B2 JP2505086 B2 JP 2505086B2
Authority
JP
Japan
Prior art keywords
address
stride
register
value
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 - Lifetime
Application number
JP4065258A
Other languages
English (en)
Other versions
JPH0588888A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0588888A publication Critical patent/JPH0588888A/ja
Application granted granted Critical
Publication of JP2505086B2 publication Critical patent/JP2505086B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/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; 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、全般的には、中央演算
処理装置(CPU)の性能向上のためにキャッシュ記憶
装置を使用するデータ処理システムに関し、具体的に
は、特にプログラム・ループ用に、データの事前取り出
しを助けるための「ストライド・レジスタ」の使用に関
する。
【0002】
【従来の技術】コンピュータ・システムの性能は、記憶
アクセスの平均時間に極端に依存する。数世代の計算機
で、平均メモリ待ち時間を許容できる水準まで減少させ
るために、キャッシュ記憶装置システムが使用されてき
た。キャッシュ・システムでの平均メモリ待ち時間は、
キャッシュ・アクセス時間とアクセスがキャッシュ内で
発見される(ヒット)割合の積と、「キャッシュ外」ア
クセス時間とアクセスがキャッシュ内で発見されない
(ミス)割合の積との和として表せる。ヒットの場合と
ミスの場合のアクセス時間の間に大きな相違があり、時
として10倍以上にもなるので、アクセスがミスになる
割合が小さくても、「キャッシュ外」アクセス時間の効
果が平均メモリ待ち時間を支配することが起こり得る。
キャッシュ・ヒット率を97%ないし99%に向上させ
ることができるならば、20%ないし40%程度の実質
的な性能向上をもたらすことができる。ヒット率を向上
させようとする努力の中で、以前のヒット/ミス情報、
アクセス・パターンなどに基づいてキャッシュ行を事前
取り出ししようとする多くの異なる手法が記載されてき
た。
【0003】キャッシュはしばしば使用者にとって完全
に透過であるので、ハードウェアは、プログラムの種類
や、現命令がループ内のコードに対して生成されたか否
か(これは、特定のアクセス・パターンが繰り返されそ
うかどうかに関係がある)、将来の命令が所与のキャッ
シュ行内のデータを参照するか否かをまったく知らず
に、事前取り出し予測を行わなければならない。コード
の実行中には、ハードウェアによるループの再構築、特
に繰り返し回数の再構築は、そのループが完了するまで
は困難である。
【0004】とはいえ、正確にデータを事前取り出しす
る試みは、利益をもたらし得る。スミス(A. J. Smit
h)は、トレース駆動のシミュレーションを通じて、
「超高速コンピュータですべてのメモリ参照を事前取り
出しすると、実効CPU速度を10%ないし25%向上
させることが可能である」ことを発見し、"Sequentialp
rogram prefetching in memory hierarchies", IEEE Co
mputer, 11, 12 (1978年12月), pp. 7-21で報
告した。しかしスミスは、「次の逐次(仮想)アドレ
ス」を含む行の事前取り出しだけに関心を持っていた。
ギンデール(J. D. Gindele)は、"Buffer block prefe
tching method",IBM TechnicalDisclosure Bulletin,2
0,2 (1977年7月), pp. 696-697で、「事前取り
出しを用いると、事前取り出しを行わないキャッシュ・
バッファの僅か1/2ないし1/4の容量のキャッシュ
・バッファを用いて、同等のヒット率を達成することが
できる」と述べた。ギンデールの方法は、次の逐次キャ
ッシュ行が、事前取り出しすべき正しい行である場合に
はうまく働いた。連続した要素が、線形アドレス空間内
で非常に隔たっている時には、逐次アドレスを事前取り
出しすると、プロセッサが絶対に参照しないであろうデ
ータによってキャッシュが汚染されるのみならず、プロ
セッサが必要とする行が絶対に事前取り出しされない。
ほとんどすべての事前取り出し方式では、事前取り出し
すべき正しい行が、単に次の逐次行であると仮定されて
いる。その例外の1つが、ポメレーン(J. H.Pomeren
e)他によって、"Displacement lookahead buffer", IB
M TechnicalDisclosure Bulletin, 22, 11 (1980
年4月), p. 5182で報告されている。
【0005】多くの科学技術アプリケーションでは、ほ
とんどの時間がループに費やされる。ループ時間の多く
は、しばしば、入れ子式ループ内で費やされ、入れ子式
ループの多くは、多次元アレイを利用している。多次元
アレイの内部記憶表現では、FORTRANで使用され
るものと同様の1列ごとのマッピングが仮定されてい
る。内側のループで列をステップダウンする場合、結果
的に「ストライド1」のアクセス(記憶域内で隣接する
要素のアクセス)が生ずる。ほとんどのキャッシュ設計
では、1つの要素をキャッシュ内に取り出す時に1行
(または連続する要素のグループ)が取り出されるの
で、この場合にうまく動作する。その行に対する最初の
アクセスでミスが発生するかもしれないが、次の複数の
アクセスではヒットが保証される。
【0006】内側ループが行間を移動する時には、スト
ライドNのアクセスが発生する。連続的に参照されるア
ドレス間の距離はNワードである。一般に、Nは、1行
中の取り出される要素の数よりも大きい。したがって、
次の行(外側ループの将来の繰り返し)で使用されるの
に十分な長さのデータがキャッシュ内に残っていない限
り、おそらく要求ごとにミスが発生し、性能が低下す
る。ADI法など、科学技術プログラムで使用される数
値解法に、複数の方向にデータを掃引するものがある。
注意深くコーディングしないと、大きなアレイがキャッ
シュを「フラッシュ」し、再使用ができなくなる。各ア
クセスごとにミスが発生し、そのために、プロセッサが
データを待って遊休状態になっている時間が増大する。
キャッシュ行を事前取り出しすることができ、その結
果、取り出された行をループ内の他の計算とオーバーラ
ップさせることができるならば、この性能低下の量を減
少させることが可能である。
【0007】用語「ストライド」は、上記では科学アプ
リケーションに関して述べたが、本発明は、計算属性よ
りもむしろ記憶参照パターンを特徴とする問題の解決を
目指したものである。たとえば、本発明から利益を得る
であろう他の潜在的な候補としては、1組の固定長レコ
ードのそれぞれの所与のフィールドにアクセスする、デ
ータベースや給与支払簿処理の領域のアプリケーション
の一部分が含まれる。これらは、レコード長と同じスト
ライドによるアクセスとなる。
【0008】
【発明が解決しようとする課題】したがって、本発明の
目的は、1のストライド、Nのストライド、またはスト
ライド値の組み合わせによるループ用の正しい事前取り
出し行を正確に決定するための技法を提供することであ
る。
【0009】本発明のもう1つの目的は、「キャッシュ
・フラッシュ」を避けるために「キャッシュ・バイパ
ス」をいつ使用しなければならないかを正確に決定する
機構を提供することである。
【0010】
【課題を解決するための手段】本発明によれば、事前取
り出しを助けるためのストライド・レジスタが設けられ
る。コンパイラは、新規の命令"MOVE GPR TO STRIDE RE
GISTER"を使用して、(現在の計算機でアドレス増分と
して使用される)ループに入る前に、「計算されたスト
ライド値」を、そのストライド値だけ増分されるインデ
ックス・レジスタに関連する新規のストライド・レジス
タに挿入する。このループの末尾では、第2の新規命
令"CLEAR STRIDE REGISTER SET"を使用して、すべての
ストライド・レジスタに0の値を置き、ほとんど使用さ
れないであろうデータの事前取り出しを抑制する。0の
値は事前取り出しを抑制する。したがって、これらの新
規命令を含まないコードは、ストライド・レジスタを有
さない計算機上と完全に同様に動作する。逆方向の互換
性も提供される。ストライド・レジスタをサポートしな
いモデルでは、新規命令は単に「無処理」として取り扱
われる。これらのレジスタ内の情報は、性能のために使
用され、機能上の影響がないので、これらのレジスタを
保存または復元する必要はない。
【0011】ストライド・レジスタ内の非0の値は、事
前取り出しがもっとも意味を持つループの実行を明瞭に
マークする。また、この値は、正しい事前取り出しアド
レスの決定に使用される、現アドレスからの正しいオフ
セットを明瞭に示す。このオフセットは、記憶アドレス
の指定に使用される特定のインデックス・レジスタに依
存するので、複数のストライドを有するループのデータ
を、正しく事前取り出しすることができる。
【0012】
【実施例】本発明は、コンパイラがプログラムのループ
構造とアクセス・パターンについて最もよく知っている
という認識に基づいている。しばしば、ストライド値
は、ループ内でアドレス増分として使用するために、ル
ープの外側で計算される。本発明は、1組の「ストライ
ド・レジスタ」と、これらを修正する2つの命令を使用
する。本発明の好ましい実施例では、ストライド・レジ
スタと汎用レジスタの間に1対1の関係がある。これら
のストライド・レジスタは、アーキテクチャ内に現在あ
るどのレジスタからも完全に独立している。
【0013】ここで図面、具体的には図1を参照する
と、それぞれ入出力サブシステム12に接続され、主記
憶装置14と通信する、複数の中央演算処理装置(CP
U)10を含む、多重プロセッサ・システムが示されて
いる。入出力サブシステム12も、主記憶装置14と通
信し、直接アクセス記憶装置(DASD)16のストリ
ングが連結される複数の入出力経路を有する。このアー
キテクチャは、IBMシステム/370(S/370)
ファミリーのコンピュータをはじめとする現代のメイン
・フレーム・コンピュータの典型である。
【0014】図1の上側のCPU10のブロックに詳細
に示すように、各CPUは、演算論理機構および関連レ
ジスタ(図示せず)に加えて、キャッシュ記憶装置1
8、命令デコーダ20およびアドレス生成ブロック22
を含む。当技術分野で十分に理解されているように、キ
ャッシュ記憶装置18は、DASD16からロードされ
る主記憶装置14よりも高速なメモリである。これらの
記憶段が、記憶階層を形成する。記憶階層の段は、下位
のものほど速度が低下し、コストが低下し、容量が増大
する。主記憶装置は、プログラム命令セットとデータ・
オブジェクトを記憶し、それらはCPU内のアドレス生
成機構によって参照される。プログラム命令セットの一
部と最も最近にアクセスされたデータは、主記憶装置1
4よりはるかに高速にアクセスできるキャッシュ記憶装
置18内に置かれる。しかし、次にアクセスすべき命令
またはデータ・ワードがキャッシュ記憶装置18内で見
つからない(ミス)場合には、これを主記憶装置14か
らアクセスしなければならない。
【0015】アドレス生成ブロック22は、命令デコー
ダ20からのアドレス情報に従って、次のデータ・オブ
ジェクトのアドレスを生成する機構である。このブロッ
クは、複数の汎用レジスタ(GPR)26と1つの加算
器28を備える。これらは、データ記憶参照アドレスの
生成に使用される。現代の大部分のメイン・フレーム・
コンピュータで典型的であるように、命令デコーダ20
によって復号されるアドレスは、その命令内のビット・
フィールドによって指定される情報から形成される仮想
アドレスである。IBM S/370の場合、こうした
フィールドとして、変位(D)フィールド、基底(B)
フィールドおよびインデックス(X)フィールドがあ
る。BフィールドとXフィールドは、それぞれ1つの汎
用レジスタを指定する。指定された汎用レジスタの内容
と、命令の変位フィールドの値を足し合わせると、記憶
参照用の仮想アドレスが形成される。特殊な場合とし
て、GPR0を指定すると、GPR0の内容ではなく0
の値が得られる。
【0016】具体的に言うと、あるパターンに従って
(ストライドを用いて)データ・オブジェクトが参照さ
れるループでは、一般に、命令のBフィールドで指定さ
れる単一の基底レジスタを使用して、たとえば基本コー
ド・モジュール内でのアドレス指定能力を提供する。イ
ンデックス・レジスタ(すなわち、命令のXフィールド
で指定された汎用レジスタ)の内容は、基底レジスタ内
のポインタに対して相対的にオブジェクトを指すのに使
用される。ループ内の命令には、データをアドレスする
のにインデックス・レジスタを使用するものもあり、次
の繰り返しのためのデータを指すようにインデックス・
レジスタを更新するものもある。1回の繰り返し用の1
組の参照の間隔を、命令の変位フィールドに含まれる数
のビットで表現することができ、かつその間隔が繰り返
しの間に変化しないならば、基底とインデックスの対が
与えられているものとすると、変位フィールドを使用し
て、様々な変位値を有する複数の命令が、複数のオブジ
ェクトまたは共通のオブジェクトの複数の要素を参照で
きるようになる。
【0017】一般にそうであるように、所与のインデッ
クス・レジスタが、ループを1回繰り返すごとに1回更
新される場合には、そのループ内の記憶参照命令のそれ
ぞれについて、後続の繰り返しで生成されるアドレス
は、現在の繰り返しのために生成されたアドレスと、更
新中にインデックス・レジスタに加算される量との和に
なる。定義上は、このようなループ内であるストライド
で参照されるデータ・オブジェクトに関し、インデック
ス・レジスタの更新に使用される値が、ストライドであ
り、そのループに入る前に知られるようになる。具体的
に言うと、ストライド値またはインデックス・レジスタ
増分は、通常は、インデックス・レジスタ更新の際に使
用するため、別の汎用レジスタに保存される。所与のル
ープ内に複数のストライド値が存在する場合であって
も、所与のどんなインデックス・レジスタに対しても所
与のストライド値用汎用レジスタが存在する。単一のス
トライド値用汎用レジスタによって更新されるインデッ
クス・レジスタが、複数存在することもあり得る。共通
のストライドを用いて複数のオブジェクトを参照する時
には、しばしばそうなる。
【0018】上記は、たとえばIBMシステム/370
ファミリーのメイン・フレーム・コンピュータで現在実
施されているハードウェアを表している。本発明では、
このハードウェアに、ストライド・レジスタ30および
第2の加算器32を追加する。ストライド・レジスタ3
0は、命令デコーダ20内で第1の新規命令"MOVEGPR T
O STRIDE REGISTER"が復号されるのに応答してロードさ
れる。ストライド・レジスタにロードされる値は、対応
する汎用レジスタをインデックス・レジスタとして使用
して行われる記憶参照に関連するストライド値である。
選択されたストライド・レジスタ30からのストライド
値と、加算器28によって生成されるデータ記憶参照ア
ドレスとが、加算器32内で加算されて、事前取り出し
アドレスが得られる。ストライド・レジスタ値が非0の
場合には、データがまだキャッシュ記憶装置18内に存
在していなければ、そのデータが主記憶装置14からキ
ャッシュ記憶装置18へ事前取り出しされる。第2の新
規命令"CLEAR STRIDEREGISTER SET"は、すべてのストラ
イド・レジスタに0の値を置き、これによってそれ以上
のデータの事前取り出しを抑制するのに使用される。
【0019】本発明によるストライド・レジスタのハー
ドウェアは、コンパイルされたプログラム命令セットと
共働して、メモリの連続行にあってもなくてもよい連続
する要素の正しい事前取り出しを可能にするが、これ
は、通常は事前取り出しに付随する性能低下、すなわち
追加のメモリ活動およびキャッシュ汚染を伴わずに達成
される。さらに、予想されるデータ再使用に関するコン
パイラの知識をキャッシュが使用して、オブジェクトご
とにデータをキャッシュに入れるべきか否かを判定する
ことができる。本発明のストライド・レジスタは、主
に、規則的なパターン(一定のストライド)でデータを
ステップ・スルーするプログラム、およびFORTRA
N、PL/1およびPascalを含む典型的なコンパ
イラに利益をもたらす。さらに、関係データベースなど
のアプリケーション・プログラムが、本発明を使用する
と有利になる可能性がある。ストライド・レジスタに関
するコンパイラの動作を説明するため、FORTRAN
コンパイラを例に挙げる。
【0020】FORTRANコンパイラは現在、本発明
によるストライド・レジスタの利用に必要な情報を生成
(および利用)している。これは、既知の領域に少数の
命令を挿入するというだけの問題である。現在、図2に
示すように、コンパイラは、ループの先頭と末尾を認識
している。一定のストライドでアドレスされるオブジェ
クトでは、1対の値が決定される。第1の値は、最初の
繰り返しで使用されるアドレス(ポインタ)であり、第
2の値は、オフセットまたはストライドである。各スト
ライド値に対して、1つのレジスタが割り当てられる。
同一のストライドでアドレスされるオブジェクトは、共
通のレジスタを使用することができる。このレジスタ割
り当ては、コンパイル時に行われ、アドレスとストライ
ド値を決定するコードがループの前に生成され、適当な
ストライド値を加算することによってアドレス・ポイン
タを更新するコードがループ内(通常は末尾)で生成さ
れる。ループの繰り返しごとに、レジスタのうちの1つ
(図2のGPR2)がインデックス・レジスタとして使
用され、このレジスタを、基底レジスタおよび変位(図
示せず)と共に使用して、要求されたデータ要素用の記
憶域にアクセスするための仮想アドレスを生成する。本
発明のキー・ポイントは、(1)所与の命令に対して、
それぞれの繰り返しで同一のインデックス・レジスタを
使用すること、(2)所与のインデックス・レジスタ
は、1回の繰り返しについて1回だけ更新されること、
(3)所与のインデックス・レジスタの更新に使用され
る量は、そのループの1組の繰り返しについて一定であ
ることである。この3つの条件がすべて成立すると、所
与のストライド値(この場合のGPR2の内容)によっ
て更新されるインデックス・レジスタに、ストライド値
(図2のGPR7の内容)を関連づけることが可能にな
る。
【0021】図3には、コンパイラの小変更が2つ、星
印で示されている。これらは、ストライド・レジスタの
正確な事前取り出し能力を利用するのに必要な変更であ
る。その内容を以下に示す。ループの前に、"MOVE GPR
TOSTRIDE REGISTER"命令を挿入して、ストライド値を保
持している各汎用レジスタの内容を、そのストライド値
を使用するインデックス・レジスタに関連するストライ
ド・レジスタにコピーしなければならない。こうする
と、汎用レジスタ(インデックス・レジスタとして使用
される)とストライド値(図2および図3の汎用レジス
タ7にセーブされる)の間に束縛(binding)が確立さ
れることによって、事前取り出しが可能になる。 ルー
プの直後に、命令"CLEAR STRIDE REGISTER SET"また
は、"0"のソースを伴う"MOVE GPR TO STRIDE REGISTE
R"命令のシーケンスを挿入して、ストライド・レジスタ
をクリアし、したがって事前取り出しを禁止しなければ
ならない。ストライド・レジスタの性質から、データ・
オブジェクトと、インデックス・レジスタとして使用し
ようとする汎用レジスタの間に1対1の連関がある時に
は、ストライド・レジスタを使用するためにレジスタ割
り当てアルゴリズムを変更する必要はない。汎用レジス
タの数が限られているために、複数のオブジェクトに対
して単一の汎用レジスタをインデックス・レジスタとし
て使用せざるを得ない時には、同じストライドを使用し
てアクセスされるオブジェクトが、共通のインデックス
用汎用レジスタまたは汎用レジスタの組に割り当てられ
るようにするのが、適当なレジスタ割り当てであろう。
実施上の注意として、意図しない事前取り出しを避ける
ため、コンテキスト切り替えの間にストライド・レジス
タを0にすることができる。
【0022】コンパイラ技術は、ストライド・レジスタ
を使用して、事前取り出しによるキャッシュ性能の向上
に必要な情報をハードウェアに提供するように簡単に適
合させることができるが、ストライド・レジスタの第2
の主要な能力、すなわち、コンパイラが検出したデータ
再使用の情報をハードウェアに渡す能力を利用するため
には、より困難な1組のコンパイラ変更が必要である。
図4に示した擬似コードは、キャッシュ・フラッシュの
結果としてキャッシュ内のデータの再使用率が低下した
状況を示す。文"IF(SUM.GT.MAX)MAX = SUM"が、コン
パイラによるループの交換を困難にしている。したがっ
て、Iループの繰り返しごとに、行列Aの10000
(100×100)個の要素が参照される。(Iループ
の所与の繰り返しで)参照される要素は、200(50
×4)バイトずつ離れているので、これらは別個のキャ
ッシュ行にある可能性が高い。所与のJ値とK値の対の
ために取り出されたキャッシュ行は、通常は、同じJと
Kの値に対して、次のIループの繰り返しで使用される
要素を含んでいる。というのは、A(I,J,K)とA
(I+1,J,K)が、記憶域内で隣接しているからで
ある。
【0023】現在のキャッシュのほとんどは、1000
0の別個の行をセーブできるだけの容量をもたない。し
たがって、Iループの所与の繰り返しの末尾近くでデー
タを取り込むと、その繰り返しの先頭で取り出され、次
の繰り返しで使用されるはずのデータの大半がフラッシ
ュされる。したがって、任意の所与のキャッシュ行に取
り出されたすべてのデータが、Iループの他の繰り返し
で参照されるにもかかわらず、基本的にすべてのアクセ
スでキャッシュ・ミスが発生する。この場合、用語「ミ
ス」は、処理装置が待機しなければならないかどうかに
は関わらず、メモリからキャッシュへの転送が必要なこ
とを指す。
【0024】ストライド・レジスタは、行列Aに関する
このアクセスごとのミスを防止しないが、2つの形で助
けになる。上述したように、キャッシュ・ミスから生ず
る性能低下の量は、事前取り出しをループ内の他の計算
とオーバーラップできる場合には減少させることができ
る。この場合、ミス1回あたりのペナルティが減少する
が、メモリからキャッシュへの実際の転送の回数は、同
じまたはわずかに増加する。第2の改善の源泉は、行列
Aの参照を満足するために取り込まれる行のために再使
用可能なデータがキャッシュから追い出されるという不
要な置換を抑制することによって、メモリからキャッシ
ュへの転送の総数を実際に削減することからもたらされ
る。
【0025】完全にキャッシュ内に収まる追加のオブジ
ェクトがこのループ内で参照される場合、たとえば、B
(1,I)、B(2,I)などとして参照されるB(1
0,50)のようなアレイを検討してみよう。これら
は、行列Aに対する参照とその結果生じるミスがこれら
のオブジェクトをフラッシュしないならば、キャッシュ
内に留まることができるはずである。行列Aの参照を満
足するために取り込まれる大部分のキャッシュ行では、
ただ1つの要素だけしか使用されないので、その唯一の
要素だけ(1行ではなく)を取り出すことができ、使用
されない行の残りでその要素がキャッシュを汚染しない
ならば、好ましいものとなる。
【0026】規約により、ストライド・レジスタの上位
ビットまたは最大有効ビット(MSB)で、「キャッシ
ュ能力(cacheability)」を指定することができる。た
とえば、MSB位置の"1"は、事前取り出し中のデータ
項目に続くデータのブロックをキャッシュに入力するこ
とを示し、"0"は、キャッシュ化しない、すなわち、1
データ・ワードだけを取り込むことを示す。この手順に
は、メモリの需要及び切り替えの需要を減らすと同時
に、キャッシュ汚染を減らし、頻繁に再利用されるデー
タをキャッシュに残せるという長所がある。
【0027】本発明は、既存の計算機に対する逆方向の
互換性を有する。ストライド・レジスタ内の情報を使用
するキャッシュの事前取り出しとバイパスは、性能上の
利益をもたらすが、プログラムの機能を変更しない。し
たがって、この機能を有さないローエンド・マシンは、
ストライド・レジスタ命令を「無処理」として扱うこと
によって、これらの命令を無視することができる。ハイ
エンド・マシンは、上記に従ってハードウェアを実施す
ることができる。ミッドレンジ・マシンは、一部の汎用
レジスタに関してこの機構をサポートすることができ
る。たとえば、インデックス・レジスタが所与の組(た
とえば、汎用レジスタ・セットの上側1/4)に含まれ
る場合のアクセスの事前取り出しまたはバイパスだけを
サポートすることを設計者が選択する場合には、設計者
は、一部のストライド・レジスタ(たとえば、システム
/370の汎用レジスタ16個の場合には4個)だけを
実施し、インデックス・レジスタ・フィールドの上位2
ビットを検査して、ストライド・レジスタを使用するか
否かを決定することが可能である。インデックス・レジ
スタ・フィールドの残りのビットは、ストライド・レジ
スタの選択に使用できる。
【0028】共通のストライド値を検討することによっ
て、さらに単純にすることができる。キャッシュを有す
る計算機では、多くのプログラマは、アクセスの大半を
ストライド1にしようと試みる。残りのストライド値
は、通常は小さな値である。1のストライドが共通にな
るが、これは1ビットで表現できる。したがって、スト
ライド・レジスタの多くが1ビットまたは少数のビット
だけを含む一方、他のストライド・レジスタも、20ビ
ットしかもたないことがあり得る(20ビットを用いる
と、1MBまでのストライドが可能になる)。Nビット
を実施するレジスタでは、新規にロードされる値の下位
Nビット以外のすべてのビットの論理和を取って、関連
するストライド・レジスタの容量より大きな値を知らせ
る信号を生成できる。この信号の補数を、下位Nビット
と1ビットずつ論理積を取ると、指定されたストライド
がレジスタの容量を越えた時に0の値を提供することが
できる。したがって、特定のストライド・レジスタの容
量を越えるストライド値を指定すると、単にそのストラ
イド・レジスタが0にリセットされることになる。(事
前取り出しアドレスを計算するために)Nビットのスト
ライド・レジスタを読み取る時には、暗黙の上位ビット
として0が供給される。
【0029】ストライド・レジスタとそれに関連する機
能を利用しようとするコンパイラまたはプログラマは、
対応するストライド・レジスタがあるオブジェクトのス
トライドを収容するのに十分となるように、そのオブジ
ェクトをアドレスするためのインデックス・レジスタを
(レジスタ割り振りの間に)選択するだけでよい。スト
ライド・レジスタは、性能向上の機会は提供するが機能
は提供しないので、ストライド・レジスタの特定の実施
態様用に作成されたプログラムは、より多数またはより
少数のストライド・レジスタをサポートする計算機上で
も同じ(時間依存の)結果をもたらす。
【0030】上述の「ソフトウェア管理式」ストライド
・レジスタに非常に近いものが、図5に示すハードウェ
ア管理式の設計である。キャッシュ能力ビット(または
キャッシュ・バイパス)機能は、この実施態様ではサポ
ートされていない。しかしながら、連続したアクセス
(命令のインデックス・レジスタ・フィールド内で所与
の汎用レジスタが指定される)用のストライド・パター
ンが存在するループでは、ハードウェアがこのようなパ
ターンを検出することができる。連続した記憶アクセス
(所与のインデックス・レジスタを必要とする)に対す
るアドレスの相違は、ハードウェア管理式のストライド
・レジスタ内で判定し、そこにセーブすることができ
る。
【0031】図5で、図1に示した参照番号と同じ番号
は、図1に示したものと同じ構造を示す。図5に示した
汎用レジスタ、加算器およびストライド・レジスタは、
基本的に図1に示したものと同様に機能する。事前取り
出しを抑止するためにレジスタを0にする(すなわちリ
セット)命令は使用しないので、コンパレータ40を追
加して、パターンが存在しない時の事前取り出しを抑止
する。減算ユニット42および1組の「前アドレス(pr
evious address)」・レジスタ44が、ストライド・パ
ターンの決定を可能にするために追加されている。記憶
アドレスの生成時には、Xフィールドを使用して前アド
レス・レジスタ44をアドレスし、現在インデックス・
レジスタとして使用されている汎用レジスタに対応する
前アドレス・レジスタを選択する。所与のアドレス生成
サイクルの終りに、主記憶装置にアクセスするために生
成されたアドレスが、選択された前アドレス・レジスタ
44にセーブされる。各アドレス生成サイクルの始め
に、選択された前アドレス・レジスタの内容(現インデ
ックス・レジスタを使用して生成された前の記憶アドレ
ス)が読み取られる。この値と現アドレスが、減算ユニ
ット42に送られる。この差は、パターンが存在する場
合、ストライドを表す。
【0032】この減算ユニット42からの「予測(pred
icted)」ストライド値を、現在選択されているストラ
イド・レジスタ30の内容と共に使用して、事前取り出
しを行うか否かを決定する。現在選択されているストラ
イド・レジスタ30の値が予測ストライド値と一致する
場合には、事前取り出しが行われる。現在選択されてい
るストライド・レジスタ30の内容が予測ストライド値
と一致しない場合には、事前取り出しは行われない。ど
ちらの場合でも、ソフトウェア管理式の実施態様の場合
のように"MOVE GPR TO STRIDE REGISTER"を使用してス
トライド値をロードするのではなく、予測ストライド値
が、選択されたストライド・レジスタ30にロードされ
る。したがって、事前取り出しが発生するためには、2
つ以上の連続したストライド予測(すなわち、ストライ
ドは2つのアドレスの差であるので、3つ以上の連続し
たアドレス)が、所与のインデックス・レジスタを必要
とするアクセスに対してパターンが存在することを示さ
なければならない。このパターンが破られたと判定され
たときは、パターンが再び確立されるまで、事前取り出
しが抑止される。ストライド予測と事前取り出しの動作
は、記憶アドレスの指定に使用される特定のインデック
ス・レジスタに依存するので、複数のストライドを有す
るループ用のデータを、正しく事前取り出しすることが
できる。
【0033】ソフトウェア管理式の解決法に勝るこの手
法の主な長所は、ユーザにとって透過である点である。
一方、この手法の主な短所は、ループ内の2つの命令が
同一のインデックス・レジスタ(汎用レジスタ)を(異
なる変位を用いて)使用する場合に、ハードウェアにと
っては、所与のインデックス・レジスタに対して、アド
レスの擬似ランダム・パターンが生成されているように
見えることである。一般の場合には、同一のインデック
ス・レジスタを使用する単一のループ内の記憶参照の数
には制限がないので、特にそうである。
【0034】
【図面の簡単な説明】
【図1】本発明によるソフトウェア管理式ストライド・
レジスタを使用する、多重プロセッサ・コンピュータ・
システムを示すブロック図である。
【図2】従来のコンパイラによって生成されるコードを
示す図である。
【図3】本発明によるストライド・レジスタを利用す
る、コンパイラによって生成されたコードを示す図であ
る。
【図4】再使用率の低い、キャッシュ・フラッシュ状況
を示す擬似コードを示す図である。
【図5】本発明のハードウェア管理式実施態様を示すブ
ロック図である。
【符号の説明】
10 中央演算処理装置(CPU) 12 入出力サブシステム 14 主記憶装置 16 直接アクセス記憶装置(DASD) 18 キャッシュ記憶装置 20 命令デコーダ 22 アドレス生成ブロック 26 汎用レジスタ(汎用レジスタ) 28 加算器 30 ストライド・レジスタ 32 加算器 40 コンパレータ 42 減算ユニット 44 前アドレス・レジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スチーヴン・ウェイン・ホワイト アメリカ合衆国78750、テキサス州オー スチン、ウェスターカーク・ドライブ 9104番地

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】中央演算処理装置によってアドレスされる
    主記憶装置とキャッシュ記憶装置を含む記憶階層を有
    し、前記中央演算処理装置が、前記キャッシュ記憶装置
    に対するデータ記憶アドレスを生成するためのアドレス
    生成機構を含む、コンピュータ・システムにおいて、 前記アドレス生成機構から現アドレスを供給する手段
    と、 ストライド値を記憶するためのストライド・レジスタ手
    段と、 プログラム・ループの先頭に挿入された第1の命令に応
    答して、前記ストライド・レジスタ手段に少なくとも1
    つのストライド値をロードし、プログラム・ループの末
    尾に挿入された第2の命令に応答して、前記ストライド
    ・レジスタ手段をクリアする制御手段と、 前記ストライド・レジスタ手段に記憶された非0値に応
    答して、前記ストライド値を前記現アドレスに加算し
    て、前記主記憶装置に対する事前取り出しアドレスを生
    成する加算手段と を備える、改良されたアドレス生成機構。
  2. 【請求項2】前記ストライド・レジスタ手段が、複数の
    ストライド値を記憶するための複数のストライド・レジ
    スタを含み、前記アドレス生成機構が、さらに、対応す
    るストライド・レジスタと記憶参照命令を関連づける手
    段を備えることを特徴とする、請求項1に記載のアドレ
    ス生成機構。
  3. 【請求項3】中央演算処理装置によってアドレスされる
    主記憶装置とキャッシュ記憶装置を含む記憶階層を有
    し、前記中央演算処理装置が、前記キャッシュ記憶装置
    に対するデータ記憶アドレスを生成するためのアドレス
    生成機構を含む、コンピュータ・システムにおいて、 前記アドレス生成機構から現アドレスを供給する手段
    と、 ストライド値を記憶するためのストライド・レジスタ手
    段と、 前記主記憶装置に対して生成されたアドレスを、アドレ
    ス生成サイクルの終わりに記憶するための前アドレス・
    レジスタ手段と、 前記現アドレスから、前記前アドレス・レジスタ手段に
    記憶された前アドレスを減算して、予測ストライド値を
    生成する減算手段と、 前記減算手段によって出力される非0値に応答して、前
    記予測ストライド値を前記現アドレスに加算して、前記
    主記憶装置に対する事前取り出しアドレスを生成する加
    算手段と、 前記減算手段によって出力される非0値を、前記ストラ
    イド・レジスタ手段に記憶された値と比較して、一致し
    た場合、事前取り出し許可信号を生成するコンパレータ
    手段と を備える、改良されたアドレス生成機構。
  4. 【請求項4】中央演算処理装置によってアドレスされる
    主記憶装置とキャッシュ記憶装置を含む記憶階層を有
    し、前記中央演算処理装置が、前記キャッシュ記憶装置
    に対するデータ記憶アドレスを生成するためのアドレス
    生成機構を含む、コンピュータ・システムにおいて、 前記アドレス生成機構から現アドレスを供給するステッ
    プと、 ストライド値を記憶するステップと、 前記主記憶装置に対して生成されたアドレスを、アドレ
    ス生成サイクルの終わりに記憶するステップと、 前記現アドレスから前アドレスを減算して、予測ストラ
    イド値を生成するステップと、 前記予測ストライド値を前記現アドレスに加算して、前
    記主記憶装置に対する事前取り出しアドレスを生成する
    ステップと、 前記予測ストライド値を記憶されたストライド値と比較
    して、一致した場合に事前取り出し許可信号を生成する
    ステップと を含む、前記キャッシュ記憶装置内にデータを事前取り
    出しするための方法。
JP4065258A 1991-04-15 1992-03-23 アドレス生成機構及びデ―タの事前取り出し方法 Expired - Lifetime JP2505086B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/686,221 US5357618A (en) 1991-04-15 1991-04-15 Cache prefetch and bypass using stride registers
US686221 1991-04-15

Publications (2)

Publication Number Publication Date
JPH0588888A JPH0588888A (ja) 1993-04-09
JP2505086B2 true JP2505086B2 (ja) 1996-06-05

Family

ID=24755436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4065258A Expired - Lifetime JP2505086B2 (ja) 1991-04-15 1992-03-23 アドレス生成機構及びデ―タの事前取り出し方法

Country Status (2)

Country Link
US (1) US5357618A (ja)
JP (1) JP2505086B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7021973B2 (en) 2002-10-29 2006-04-04 Mitsubishi Denki Kagushisa Kaisha Electric rotating machine

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE469402B (sv) * 1991-05-02 1993-06-28 Swedish Inst Of Computer Scien Foerfarande foer att haemta data till ett cache-minne
US5787475A (en) * 1992-07-21 1998-07-28 Digital Equipment Corporation Controlled prefetching of data requested by a peripheral
US5440687A (en) * 1993-01-29 1995-08-08 International Business Machines Corporation Communication protocol for handling arbitrarily varying data strides in a distributed processing environment
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
US5561814A (en) * 1993-12-22 1996-10-01 Intel Corporation Methods and apparatus for determining memory operating characteristics for given memory locations via assigned address ranges
US5649144A (en) * 1994-06-13 1997-07-15 Hewlett-Packard Co. Apparatus, systems and methods for improving data cache hit rates
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table
US5694568A (en) * 1995-07-27 1997-12-02 Board Of Trustees Of The University Of Illinois Prefetch system applicable to complex memory access schemes
US5854921A (en) * 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US6085291A (en) * 1995-11-06 2000-07-04 International Business Machines Corporation System and method for selectively controlling fetching and prefetching of data to a processor
US6055621A (en) * 1996-02-12 2000-04-25 International Business Machines Corporation Touch history table
US5761515A (en) * 1996-03-14 1998-06-02 International Business Machines Corporation Branch on cache hit/miss for compiler-assisted miss delay tolerance
US5752037A (en) * 1996-04-26 1998-05-12 Hewlett-Packard Company Method of prefetching data for references with multiple stride directions
US5884324A (en) * 1996-07-23 1999-03-16 International Business Machines Corporation Agent for replicating data based on a client defined replication period
US6065100A (en) * 1996-11-12 2000-05-16 Micro-Design International Caching apparatus and method for enhancing retrieval of data from an optical storage device
US5953512A (en) * 1996-12-31 1999-09-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods implementing a loop and/or stride predicting load target buffer
US6055622A (en) * 1997-02-03 2000-04-25 Intel Corporation Global stride prefetching apparatus and method for a high-performance processor
US5822790A (en) * 1997-02-07 1998-10-13 Sun Microsystems, Inc. Voting data prefetch engine
US5958045A (en) * 1997-04-02 1999-09-28 Advanced Micro Devices, Inc. Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
US5940876A (en) * 1997-04-02 1999-08-17 Advanced Micro Devices, Inc. Stride instruction for fetching data separated by a stride amount
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
JP3546341B2 (ja) * 1997-04-17 2004-07-28 株式会社日立製作所 多重ループ向けデータプリフェッチ方法およびプログラム生成方法
US6098154A (en) * 1997-06-25 2000-08-01 Sun Microsystems, Inc. Apparatus and method for generating a stride used to derive a prefetch address
US5996061A (en) * 1997-06-25 1999-11-30 Sun Microsystems, Inc. Method for invalidating data identified by software compiler
US6138212A (en) * 1997-06-25 2000-10-24 Sun Microsystems, Inc. Apparatus and method for generating a stride used to derive a prefetch address
DE19727862A1 (de) * 1997-06-30 1999-01-07 Siemens Nixdorf Inf Syst Verfahren und Anordnung zur Erhöhung der Hitrate bei Cache-Zugriffen in Prozessorsystem
US6256712B1 (en) 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US5950205A (en) * 1997-09-25 1999-09-07 Cisco Technology, Inc. Data transmission over the internet using a cache memory file system
US6076151A (en) 1997-10-10 2000-06-13 Advanced Micro Devices, Inc. Dynamic memory allocation suitable for stride-based prefetching
US6341335B1 (en) * 1997-10-29 2002-01-22 Hitachi, Ltd. Information processing system for read ahead buffer memory equipped with register and memory controller
US6134633A (en) * 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US6070230A (en) * 1997-12-29 2000-05-30 Hewlett-Packard Company Multi-threaded read ahead prediction by pattern recognition
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
US6189094B1 (en) * 1998-05-27 2001-02-13 Arm Limited Recirculating register file
US6260116B1 (en) 1998-07-01 2001-07-10 International Business Machines Corporation System and method for prefetching data
JP2002525708A (ja) * 1998-09-14 2002-08-13 インフィネオン テクノロジーズ エージー Dspメモリ内に位置する複素ベクトルにアクセスする方法および装置
US6401192B1 (en) 1998-10-05 2002-06-04 International Business Machines Corporation Apparatus for software initiated prefetch and method therefor
US20020056027A1 (en) * 1998-10-29 2002-05-09 Hiroki Kanai Information processing system
JP3573980B2 (ja) 1998-11-13 2004-10-06 富士通株式会社 情報処理装置及び情報処理システム
US6311260B1 (en) 1999-02-25 2001-10-30 Nec Research Institute, Inc. Method for perfetching structured data
US6321330B1 (en) * 1999-05-28 2001-11-20 Intel Corporation Each iteration array selective loop data prefetch in multiple data width prefetch system using rotating register and parameterization to avoid redundant prefetch
US6449698B1 (en) * 1999-08-26 2002-09-10 International Business Machines Corporation Method and system for bypass prefetch data path
US6560693B1 (en) 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US6775765B1 (en) * 2000-02-07 2004-08-10 Freescale Semiconductor, Inc. Data processing system having instruction folding and method thereof
EP1160662A1 (en) * 2000-03-10 2001-12-05 Texas Instruments France Processor with pointer tracking to eliminate redundant memory fetches
US6463518B1 (en) * 2000-06-19 2002-10-08 Philips Electronics No. America Corp. Generation of memory addresses for accessing a memory utilizing scheme registers
US6675280B2 (en) 2001-11-30 2004-01-06 Intel Corporation Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher
US6954840B2 (en) 2001-11-30 2005-10-11 Intel Corporation Method and apparatus for content-aware prefetching
US7260704B2 (en) 2001-11-30 2007-08-21 Intel Corporation Method and apparatus for reinforcing a prefetch chain
US7093077B2 (en) 2001-11-30 2006-08-15 Intel Corporation Method and apparatus for next-line prefetching from a predicted memory address
US20030126591A1 (en) * 2001-12-21 2003-07-03 Youfeng Wu Stride-profile guided prefetching for irregular code
US6772179B2 (en) * 2001-12-28 2004-08-03 Lucent Technologies Inc. System and method for improving index performance through prefetching
US20030204840A1 (en) * 2002-04-30 2003-10-30 Youfeng Wu Apparatus and method for one-pass profiling to concurrently generate a frequency profile and a stride profile to enable data prefetching in irregular programs
US6760818B2 (en) * 2002-05-01 2004-07-06 Koninklijke Philips Electronics N.V. Memory region based data pre-fetching
US6789171B2 (en) * 2002-05-31 2004-09-07 Veritas Operating Corporation Computer system implementing a multi-threaded stride prediction read ahead algorithm
US6963988B2 (en) * 2002-06-27 2005-11-08 International Business Machines Corporation Fixed point unit power reduction mechanism for superscalar loop execution
US7467377B2 (en) * 2002-10-22 2008-12-16 Intel Corporation Methods and apparatus for compiler managed first cache bypassing
JP3934569B2 (ja) * 2003-03-12 2007-06-20 株式会社東芝 信号処理装置、プリフェッチ命令方法及びプリフェッチ命令プログラム
US7017028B2 (en) * 2003-03-14 2006-03-21 International Business Machines Corporation Apparatus and method for updating pointers for indirect and parallel register access
US7487296B1 (en) * 2004-02-19 2009-02-03 Sun Microsystems, Inc. Multi-stride prefetcher with a recurring prefetch table
US7430638B2 (en) * 2004-06-14 2008-09-30 Mossman Holdings Llc Adaptive input / output compressed system and data cache and system using same
US20070130114A1 (en) * 2005-06-20 2007-06-07 Xiao-Feng Li Methods and apparatus to optimize processing throughput of data structures in programs
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
US8789028B2 (en) * 2006-06-30 2014-07-22 International Business Machines Corporation Memory access monitoring
US9798528B2 (en) * 2006-09-13 2017-10-24 International Business Machines Corporation Software solution for cooperative memory-side and processor-side data prefetching
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8209488B2 (en) * 2008-02-01 2012-06-26 International Business Machines Corporation Techniques for prediction-based indirect data prefetching
US8161264B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for data prefetching using indirect addressing with offset
US8244982B2 (en) * 2009-08-21 2012-08-14 Empire Technology Development Llc Allocating processor cores with cache memory associativity
US8583894B2 (en) * 2010-09-09 2013-11-12 Advanced Micro Devices Hybrid prefetch method and apparatus
US20140189249A1 (en) * 2012-12-28 2014-07-03 Futurewei Technologies, Inc. Software and Hardware Coordinated Prefetch
US9672154B1 (en) * 2014-01-15 2017-06-06 Marvell International Ltd. Methods and apparatus for determining memory access patterns for cache prefetch in an out-of-order processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5263038A (en) * 1975-10-01 1977-05-25 Hitachi Ltd Data processing device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4984151A (en) * 1985-03-01 1991-01-08 Advanced Micro Devices, Inc. Flexible, next-address generation microprogram sequencer
US4888679A (en) * 1988-01-11 1989-12-19 Digital Equipment Corporation Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5263038A (en) * 1975-10-01 1977-05-25 Hitachi Ltd Data processing device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7021973B2 (en) 2002-10-29 2006-04-04 Mitsubishi Denki Kagushisa Kaisha Electric rotating machine

Also Published As

Publication number Publication date
US5357618A (en) 1994-10-18
JPH0588888A (ja) 1993-04-09

Similar Documents

Publication Publication Date Title
JP2505086B2 (ja) アドレス生成機構及びデ―タの事前取り出し方法
US5694568A (en) Prefetch system applicable to complex memory access schemes
US7099999B2 (en) Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
EP1031919B1 (en) Method for prefetching structured data
US7089370B2 (en) Apparatus and method for pre-fetching page data using segment table data
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US6226715B1 (en) Data processing circuit with cache memory and cache management unit for arranging selected storage location in the cache memory for reuse dependent on a position of particular address relative to current address
JP3548616B2 (ja) 情報処理装置
US5537573A (en) Cache system and method for prefetching of data
US6665749B1 (en) Bus protocol for efficiently transferring vector data
JP3739491B2 (ja) プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
US6742106B2 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US6175898B1 (en) Method for prefetching data using a micro-TLB
JPH0962572A (ja) ストリーム・フィルタ装置及び方法
US6668307B1 (en) System and method for a software controlled cache
US6553486B1 (en) Context switching for vector transfer unit
JPH07104816B2 (ja) コンピュータシステムを動作する方法及びコンピュータシステムにおけるメモリ管理装置
WO2004049169A2 (en) Using a cache miss pattern to address a stride prediction table
JP3812258B2 (ja) キャッシュ記憶装置
US5333291A (en) Stride enhancer for high speed memory accesses with line fetching mode and normal mode employing boundary crossing determination
JPH06236353A (ja) マルチプロセッサ・コンピュータ・システムのシステム・メモリの並行性を増大する方法およびシステム
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
JP2001249806A (ja) 予測情報管理方法
Kumr et al. An Overview of Hardware Based Cache Optimization Techniques