JPH0962573A - データ・キャッシュ・システム及び方法 - Google Patents

データ・キャッシュ・システム及び方法

Info

Publication number
JPH0962573A
JPH0962573A JP8185806A JP18580696A JPH0962573A JP H0962573 A JPH0962573 A JP H0962573A JP 8185806 A JP8185806 A JP 8185806A JP 18580696 A JP18580696 A JP 18580696A JP H0962573 A JPH0962573 A JP H0962573A
Authority
JP
Japan
Prior art keywords
cache
line
stream
address
increment
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.)
Granted
Application number
JP8185806A
Other languages
English (en)
Other versions
JP3541998B2 (ja
Inventor
J Mayfield Michael
マイケル・ジェイ・メイフィールド
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 JPH0962573A publication Critical patent/JPH0962573A/ja
Application granted granted Critical
Publication of JP3541998B2 publication Critical patent/JP3541998B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/6022Using a prefetch buffer or dedicated prefetch cache
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】L1及びL2キャッシュと関連してストリーム
・フィルタを使ってメモリからプリフェッチされたデー
タを供給し、データ待ち時間を減少させる。 【解決手段】L1キャッシュ及びL2キャッシュ、スト
リーム・フィルタ、及びストリーム・バッファを実施す
るデータ処理システムにおいて、キャッシュ・ラインの
プリフェッチは進行的態様で行われる。第1のモードで
は、データはプリフェッチされ得ない。第2のモードで
は、2つのキャッシュ・ラインがプリフェッチされる。
その場合、1つのラインはL1キャッシュにプリフェッ
チされ、次のラインはストリーム・バッファにプリフェ
ッチされる。第3のモードでは、2つよりも多くのキャ
ッシュ・ラインが一時にプリフェッチされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概して云えば、デ
ータ処理システムに関するものであり、詳しく云えば、
データ・キャッシュに関してデータの進行的(progress
ive)プリフェッチを行うためのシステム及び方法に関す
るものである。
【0002】
【従来の技術】現行のプログラム及びデータを高速度で
プロセッサ(CPU)にとって使用可能にすることによ
って、データ処理システムにおける処理の速度を増加さ
せるために、特別の非常に高速度のメモリが使用される
ことが時々ある。そのような高速度のメモリはキャッシ
ュとして知られており、メイン・メモリのアクセス時間
とプロセッサ・ロジックとの間の速度差を補償するため
に、大型のコンピュータシステムにおいて使用されるこ
とが時々ある。処理速度はメイン・メモリの速度によっ
て最も制限される結果、プロセッサ・ロジックは、通
常、メイン・メモリのアクセス時間よりも速い。オペレ
ーティング・システムの不一致を補償するために使用さ
れるテクニックはCPUとメイン・メモリとの間に極め
て速い小型のメモリを使用することである。そのメモリ
のアクセス・タイムはプロセッサのロジック伝播遅延に
近い。それは、CPUにおいて現在実行されているプロ
グラムのセグメント及び現在の計算において頻繁に使用
される一時的データを記憶するために使用される。プロ
グラム(命令)及びデータを高速度で使用可能にするこ
とによって、プロセッサのパフォーマンス・レートを向
上させることが可能である。
【0003】多数の一般的なプログラムの分析の結果、
任意の所与のタイム・インターバルにおけるメモリへの
参照は、メモリにおける僅かなローカライズされた領域
に制限される傾向があるがわかった。この現象は、「参
照の局所性」という特性として知られている。この特性
の理由は、一般的なコンピュータ・プログラムは、屡々
遭遇するプログラム・ループ及びサブルーチン・コール
と共に直線的に流れる。プログラム・ループが実行され
る時、CPUは、そのループを構成するメモリ内の命令
のセットを繰り返し参照する。所与のサブルーチンが呼
び出される時、それの命令セットがメモリからフェッチ
される。従って、ループ及びサブルーチンは命令のフェ
ッチのためのメモリへの参照をローカライズする傾向が
ある。更に低い程度まで、データに対するメモリ参照も
ローカライズされる傾向がある。テーブル・ルックアッ
プ手順は、そのテーブルが記憶されているメモリ内の部
分を繰り返し参照する。反復的手順が共通のメモリ・ロ
ケーションを参照し、多くの数字がメモリのローカル部
分内に制限される。これらすべての観察の結果が参照の
局所性であり、短期間にわたって一般的なプログラムに
よって発生される命令のアドレスはメモリの僅かなロー
カライズされた領域を繰り返し参照し、一方、メモリの
残り部分は滅多にアクセスされない。
【0004】プログラム及びデータのアクティブナ部分
が拘束の小型メモリにおかれる場合、平均的なメモリ・
アクセス・タイムは減少し、従って、プログラムの合計
実行時間を減少させる。そのような高速の小型メモリ
は、前述のように、キャッシュ・メモリと呼ばれる。キ
ャッシュ・メモリのアクセス・タイムはメイン・メモリ
のアクセス・タイムよりも5乃至10倍も小さいことが
多い。キャッシュ・メモリはメモリ・ハイアラーキにお
ける最高速のコンポーネントであり、CPUコンポーネ
ントの速度に近い。
【0005】キャッシュ機構の基本的な理念は、最も頻
繁にアクセスされる命令及びデータを高速度キャッシュ
・メモリに保持することによって、平均的なメモリ・ア
クセス・タイムがキャッシュ・メモリのアクセス・タイ
ムに近づくことである。キャッシュ・メモリはメイン・
メモリの数分の1のサイズしかないけれども、メモリ・
リクエストの大部分は、プログラムの参照の局所性のた
めに高速度キャッシュ・メモリ内で検出されるであろ
う。
【0006】キャッシュ・メモリの基本的オペレーショ
ンは次のようである。CPUがメモリにおけるワードを
アクセスする必要がある時、キャッシュ・メモリが調べ
られる。そのワードがキャッシュ・メモリにおいて見つ
かる場合、それはその高速キャッシュ・メモリから読み
取られる。CPUによってアクセスされたワードがキャ
ッシュ・メモリにおいて見つからない場合、そのワード
を読み取るためにメイン・メモリがアクセスされる。そ
こで、そのアクセスされたワードを含むワード・ブロッ
クがメイン・メモリからキャッシュ・メモリに転送され
る。このように、メイン・メモリへのその後の参照によ
って必要なワードが高速キャッシュ・メモリにおいて見
つかるよう、幾つかのデータがキャッシュ・メモリに転
送される。
【0007】コンピュータ・システムの平均的メモリ・
アクセス・タイムはキャッシュ・メモリの使用によって
かなり改善可能である。キャッシュ・メモリのパフォー
マンスは「ヒット率」と呼ばれる数値によって測定され
ることが多い。CPuがメモリを参照し、キャッシュに
おいてそのワードを見つける時、それは「ヒット」を生
じたと云われる。そのワードがキャッシュ・メモリにお
いて見つからない場合、それはメイン・メモリ内にあ
り、「ミス」としてカウントされる。殆ど時間、CPU
がメイン・メモリの代わりにキャッシュ・メモリをアク
セスするようにヒット率が十分に高い場合、平均的アク
セス時間は高速キャッシュ・メモリのアクセス時間に近
くなる。例えば、100nsのキャッシュ・アクセス・
タイム、1000nsのメイン・メモリアクセス・タイ
ム、及び0.9のヒット率を持ったコンピュータは20
0nsの平均アクセス・タイムを生じる。これは、キャ
ッシュ・メモリのない同様のコンピュータ(そのアクセ
ス・タイムは1000ns)に比べてかなりの改善であ
る。
【0008】最近のマイクロプロセッサでは、プロセッ
サ・サイクル・タイムはテクノロジの発展によって改善
し続けている。又、理論的実行、深いパイプライン、多
くの実行エレメント等の設計テクニックはマイクロプロ
セッサのパフォーマンスを改善し続けている。その改善
されたパフォーマンスは、マイクロプロセッサに与える
ために多くのデータ及び命令を要求するので、メモリ・
インターフェースに重い負荷を課する。メモリ待ち時間
の現象を援助するために大きなオン・チップ・キャッシ
ュ(L1キャッシュ)が使用される。それらは、大型の
オフ・チップ・キャッシュ(L2キャッシュ)によって
拡張されることが多い。
【0009】待ち時間を減少させるのに先立ってメモリ
・データをL1キャッシュに供給しようとするプリフェ
ッチ・テクニックが実施されることが多い。理想的に
は、プロセッサが必要とするメモリ・データのコピーが
いつもL1キャッシュ内にあるよう、プログラムはデー
タ及び命令を十分に前にプリフェッチするであろう。
【0010】問題は、すべての場合において必要とされ
るデータ・アドレスを明示的に決定するに十分な先回り
情報を、マイクロプロセッサ・アーキテクチャが与えな
いことである。例えば、メモリにおけるデータ・オペラ
ンドに対するアドレス自身はメモリ内にあり、メモリ命
令によって使用されるべき第1命令によってフェッチさ
れなければならない。そのようなシーケンスの場合、プ
リフェッチを行うためには、プロセッサは前もってアド
レスを持たない。
【0011】命令又はデータのプリフェッチはその分野
ではよく知られている。しかし、既存のプリフェッチ・
テクニックは命令又はデータを早くプリフェッチし過ぎ
ることが多い。プリフェッチしそしてその後そのプリフ
ェッチされた命令又はデータを使用しないという問題
は、(1)プロセッサが必要とするデータをプリフェッ
チ・データが変位したかもしれないこと、(2)プリフ
ェッチ・メモリ・アクセスがその後のプロセッサ・キャ
ッシュ再ロードにそのプリフェッチ・アクセスを待た
せ、従って、必要なデータの待ち時間を増加させること
があること、である。これらの影響は両方ともCPUの
効率を低下させる。従って、その分野において必要なこ
とは、マイクロプロセッサのパフォーマンスを低下させ
ることなく、キャッシュ・ミスによりL1キャッシュへ
のデータ及び命令アクセスの待ち時間を減少させる改良
されたプリフェッチ・テクニックである。
【0012】
【発明が解決しようとする課題】本発明の目的は、マイ
クロプロセッサにおいて、L1及びL2キャッシュと関
連してストリーム・フィルタを使用してメモリからプリ
フェッチされたデータを供給し、マイクロプロセッサ・
システムにおけるデータ待ち時間を減少させることにあ
る。
【0013】本発明のもう1つの目的は、プリフェッチ
の深さを制御するためにプリフェッチ・データを同時に
且つ進行的にインクレメントする多数のストリームをサ
ポートすることができる独特のストリーム・フィルタ装
置を使用することにある。
【0014】
【課題を解決するための手段】本発明は3つの進行的プ
リフェッチ・モード、即ち、正規モード、データ・プリ
フェッチ(DP)モード、及びブラスト・モードを利用
する。正規モードでは、データはプリフェッチされな
い。データ・プリフェッチ・モードでは、2つのキャッ
シュ・ラインがプリフェッチされる。1つのラインはL
1キャッシュに対するものであり、もう1つのラインは
ストリーム・バッファに対するものである。本発明の好
適な実施例では、ブラスト・モードにおいて4つのライ
ンがプリフェッチされる。そのうちの2つのラインはデ
ータ・プリフェッチ・モードにおけるものと同じであ
り、2つの追加のラインはストリーム・バッファに対す
る対するものである。プリフェッチ・バッファはプロセ
ッサ・チップ、キャッシュ・チップ、外部チップ、又は
メモリ・カード上にパッケージ可能であり、本発明の範
囲内にあるものである。
【0015】本発明の別の実施例では、正規モードにお
いてはデータはプリフェッチされない。データ・プリフ
ェッチ・モードでは、1つのラインがストリーム・バッ
ファにプリフェッチされる。ブラスト・モードでは、1
つのラインがL1キャッシュにプリフェッチされ、更な
るラインがストリーム・バッファにプリフェッチされ
る。本発明の1つの実施例では、3つのキャッシュ・ラ
インがブラスト・モードにおいてストリーム・バッファ
にプリフェッチされる。
【0016】ブラスト・モードの実施例において、1つ
のストリーム・バッファ・キャッシュ・ラインがプロセ
ッサ・チップ上にバッファされ、同じストリームの他の
キャッシュ・ラインが、システム・バスにインターフェ
ースするノード・コントローラ・チップ上にバッファさ
れる。
【0017】
【発明の実施の形態】以下の説明では、本発明の十分な
理解を与えるために、特定のワード長又はバイト長等の
ような数多くの特定の細部を説明する。しかし、本発明
がそのような特定の細部の説明なしでも実施可能である
ことは当業者には明らかであろう。他の例では、不必要
な詳述で本発明を不明瞭にしないようにするために、周
知の回路はブロック図形式で示される。大部分に対し
て、タイミング事項等に関する詳細については、それが
本発明の十分な理解を得るために必要ない限り及び当業
者のスキルの範囲にある限り省略した。
【0018】図面を参照すると、示されたエレメントは
必ずしも縮尺して示されたものではなく、同様の又は同
じエレメントはそれらの図面を通して同じ参照番号によ
って表される。
【0019】図1を参照すると、本発明を有利に具体化
するデータ処理システムが示される。マルチプロセッサ
・システム100は、システム・バス124に動作的に
接続された多数のプロセッサ装置106、108、11
0を含む。システム100では、任意の数のプロセッサ
装置が利用可能であることに注意してほしい。又、シス
テム・バス124には、システム・メモリ102へのア
クセスを制御するメモリ・コントローラ104が接続さ
れる。メモリ・コントローラ104は、I/O装置12
8に結合されたI/Oコントローラ126にも接続され
る。プロセッサ装置106、108、110、I/Oコ
ントローラ126、及びI/O装置128は、すべて、
ここではバス装置と呼ぶこともできる。図示のように、
各プロセッサ装置106、108、110は、それぞ
れ、プロセッサとL1キャッシュ112、114、11
6とを含む。L1キャッシュはそれぞれのプロセッサと
同じチップ上に設置可能である。プロセッサ装置10
6、108、110には、それぞれ、L2キャッシュ1
18、118、120が接続される。これらのL2キャ
ッシュは、それが接続されたプロセッサ装置を介してシ
ステム・バス124に接続される。
【0020】L1及びL2キャッシュの各対は、通常、
直列的に関連する。L1キャッシュはストア・イン或い
はライトスルーとして実現可能であり、一方、大型で遅
いL2キャッシュは書戻しキャッシュとして実現され
る。L1及びL2キャッシュの両方とも物理的にはプロ
セッサ装置の一部分として実現され、プロセッサ装置の
内部バスを介して接続される。L2コントローラはチッ
プ外にあってもよく、本発明が依然として適用可能であ
る。
【0021】次に、図2を参照すると、本発明に従って
動作するように構成可能なデータ処理システム200が
示される。そのシステム200はシステム100とは別
のアーキテクチャのものである。システム100及び2
00では、プロセッサ及びキャッシュの基本的なオペレ
ーションは同じである。メモリ・コントローラ104及
びノード・コントローラ205の制御及び機能は、本発
明に関しては同じである。
【0022】システム200において、プロセッサ20
1は内部L1キャッシュ202を有し、それは外部L2
キャッシュ203に接続される。プロセッサ201はバ
ス204によってノード・コントローラ205に接続さ
れる。ノード・コントローラ205は、プロセッサ20
1とシステム200の残りの部分との接続に関してその
分野では知られた基本的機能を遂行する。ノード・コン
トローラ205はバス206によってスイッチ207に
接続される。スイッチ207はクロス・ポイント・スイ
ッチでよく、他のプロセッサ及びI/O装置をバス20
8によってシステム・メモリ209に結合することがで
きる。この説明の残り部分はシステム200に関するも
のである。しかし、本発明に関する説明も関連してお
り、それはシステム100においても実施可能である。
【0023】本発明の目的は、プロセッサ201がL1
キャッシュ202におけるキャッシュ・ラインにおいて
かなりの時間量をヒットし、従ってシステム・メモリ2
09からのアドレス及びデータ情報の検索を最小にする
(それはプロセッサ201のパフォーマンスを低下させ
る)ように、キャッシュ・ラインをL1キャッシュ20
2にプリフェッチするための効率的且つ正確なテクニッ
クを提供することである。
【0024】プロセッサ・オペレーションのパフォーマ
ンスを改善するために設定された1つの従来技術は、キ
ャッシュ・ラインをプリフェッチするためにストリーム
・フィルタ及びバッファを利用することであった。図3
に示されるように、ストリーム・フィルタ及びストリー
ム・バッファがその分野では知られている。ストリーム
・フィルタは、使用されないデータのプリフェッチの発
生を減少させなければならない。これらのフィルタはア
ドレス及び方向情報を含むヒストリ・バッファである。
そのフィルタは、L1キャッシュにおいてミスしたライ
ンから見て直列的には次に高いラインであるキャッシュ
・ラインのアドレスを含む。次に高いそのキャッシュ・
ラインへのアクセスが行われる場合、ストリーム状態が
検出され、ストリーム・バッファが割り当てられる。フ
ィルタは、ライン・アドレス「X」へのアクセスがあっ
た場合、ライン・アドレス「X+1」を書き込まれるで
あろう。アドレス「X+1」が依然としてストリーム・
フィルタに存在する時に次のアクセスがそのアドレス
「X+1」に対して行われる場合、「X+1」がストリ
ームとして割り当てられる。
【0025】ストリーム・バッファは、可能性あるキャ
ッシュ・データを保持するプリフェッチ・バッファであ
る。その考えは、そのプロセッサ内で実行中のプログラ
ムがデータ/命令の順次ストリームを実行している場
合、更なるラインをストリーム・バッファにプリフェッ
チすることは有用なことになり得る。従って、その後の
キャッシュ・ミスは、ストリーム・バッファにおけるデ
ータを見つけることが可能である。
【0026】ストリーム・フィルタ及びストリーム・バ
ッファは、ストリーム・バッファをミスするL1キャッ
シュ・ミスが存在する場合、そのミス・アドレスがスト
リーム・フィルタに記憶されたアドレスと比較されるよ
うに共同する。ストリーム・フィルタにおいてヒットが
ある(データの直列ラインへの直列的アクセスが存在し
たことを意味する)場合、次のラインも将来必要となる
可能性が高い可能性が存在する。ストリーム・バッファ
及びストリーム・フィルタに関する更なる説明に関して
は、1994年発行のIEEEの1063乃至6879
ページの S.Palacharla 及び R.Kessler による記事
「二次キャッシュ置換としてのストリーム・バッファの
評価(Evaluating Stream Buffers as a Secondary Cac
he Replacement)」等に記載されている。
【0027】次に、図4を参照すると、本発明に従って
構成されたシステム200の更に詳細な図及びCPU2
01通したデータ・フローが示される。命令及びデータ
に対する別のL1キャッシュの使用を含むそのフローの
変形がその分野では知られている。L1キャッシュ20
2は、その分野では知られた任意の置換ポリシを使用し
てメモリ209からのデータの使用されたコピーを頻繁
に保持する。大きいL2キャッシュ203はL1キャッ
シュ202よりも多くのデータを保持し、通常は、メモ
リ・コヒーレンシ・プロトコルを制御する。本発明で
は、L1キャッシュ202におけるデータはL2キャッ
シュ203におけるデータのサブセットでよい。L1キ
ャッシュ202及びL2キャッシュ203は「ストア・
イン」キャッシュである。他の機能的エレメント(I/
Oを含む)がその分野で知られたスヌープ・プロトコル
を使用してデータを争う。スヌーピングの一例は、米国
特許出願第08/442,740に開示されている。
【0028】CPU201に対して示された境界はチッ
プ境界及び機能的境界を表し、本発明の技術的範囲に関
する制限を意味するものではない。PCC404はプロ
セッサ・キャッシュ・コントローラであり、メモリ・サ
ブシステムに対するフェッチ及びストアを制御する。P
CC404は、L1キャッシュ202に対するディレク
トリの実施及び実アドレスへの有効アドレスの変換及び
その逆の変換のようなその分野では知られた他の機能を
有する。プリフェッチ・バッファ(PBFR)402
は、CPU201及びL1キャッシュ202にステージ
されるべきメモリ・データの或数のラインを保持する。
PBFR402はストリーム・バッファである。
【0029】PCC404がデータをフェッチする時、
それがL1キャッシュ202にある(L1ヒットであ
る)場合、それはPCC404に送られる。それがL1
キャッシュ202にない(L1ミスである)がL2キャ
ッシュ203にある(L2ヒットである)場合、L1キ
ャッシュ202のラインがL2キャッシュ203からの
このデータでもって置換される。この場合、データはL
1キャッシュ202及びPCC404に同時に送られ
る。同様に、L2キャッシュ203においてミスがある
場合、データはメモリ209からBIU401にフェッ
チされ、L1キャッシュ202、L2キャッシュ20
3、及びPCC404に同時にロードされる。このオペ
レーションに関する変形はその分野では知られている。
データ・ストア・オペレーションは、データがL1ライ
ンに記憶されてオペレーションを完了することを除け
ば、フェッチ・オペレーションと同じである。
【0030】以下の説明では、ストリーム・バッファの
種々な部分がシステム200の種々な部分に設けられ
る。この実施例では、ストリーム・バッファは4つのキ
ャッシュ・ラインをストアする機能を有するが、任意の
数のキャッシュ・ラインがそのストリーム・バッファ内
で実施可能である。そのストリーム・バッファの1つの
キャッシュ・ラインがL1キャッシュ202において実
施される。特に、L1キャッシュ202におけるキャッ
シュ・ラインの1つが、ストリーム・バッファのキャッ
シュ・ラインの1つの機能に対して利用される。ストリ
ーム・バッファの第2キャッシュ・ラインはPBFR4
02に設けられる。ストリーム・バッファの他の2つの
キャッシュ・ラインは、ノード・コントローラ205に
おけるPBFR2(405)及びPBFR3(406)
に設けられる。ノード・コントローラ205は、バス2
04に沿ったCPU201から下流のチップ上に設ける
ことが可能である。メモリ・コントローラ104は、シ
ステム100のアーキテクチャが利用される場合、これ
らのストリーム・バッファ・ラインを含んでもよい。
【0031】上記のIEEEの記事において検討されて
いるように、ストリーム・フィルタ及びストリーム・バ
ッファの基本的なオペレーションはリクエストされたキ
ャッシュ・ラインにおいてL1キャッシュ・ミスがある
時、そのキャッシュ・ラインのアドレスがインクレメン
トされ(一般には、1アドレスずつ)、このインクレメ
ントされたアドレスがストリーム・フィルタ403に挿
入される。L1キャッシュ202におけるキャッシュ・
ラインのその後のミスの発生時に、このL1キャッシュ
・ミスのアドレスがフィルタ403に含まれたアドレス
に比較される。アドレスの一致が得られた場合、キャッ
シュ・ラインのストリームがそのストリーム・バッファ
内に割り当てられる。
【0032】上記のように、キャッシュ・ミスがある
時、フィルタ・バッファは次の逐次キャッシュ・ライン
のアドレスを書き込まれる。そのフィルタは、そのよう
な事象の「ヒストリ」より成るそのようなアドレスを保
持し得る多数のロケーションを含む。それらはLRUベ
ースで置換可能である。キャッシュ・ミスがある時はい
つも、フィルタにおけるアドレスがキャッシュ・ライン
・ミスのアドレスと比較される。ヒットがある場合、フ
ィルタ・ヒットが存在すると云われ、ストリームが割り
当てられる。ストリーム・モードでは、エクストラ・キ
ャッシュ・ラインが、ストリームの一部分としてL1キ
ャッシュがそれを必要とすることを期待して、ストリー
ム・バッファにプリフェッチされる。
【0033】図5は、本発明に従ってストリーム・バッ
ファのオペレーションの高レベルの機能的な図を表す。
CPU201は、使用されるアーキテクチャに従って有
効アドレス(EA)を発生する。EAは潜在的にはオフ
セットを有するプログラム・アドレスである。CPU2
01は変換されたアドレス、即ち、そのEAに対応した
実アドレス(RA)を発生する。その実アドレスはフィ
ルタ待ち行列502によって使用されるが、フィルタ待
ち行列がその有効アドレスを代替えとして使用すること
は本発明の技術的範囲内であろう。RAはフィルタ待ち
行列502におけるRAと一斉に比較される。そのエン
トリがそれの有効ビット(V)によって表されるように
有効である場合、比較一致はフィルタ・ヒットと呼ばれ
る。又、フィルタ待ち行列502は、予測ストリームが
インクレメント或いはデクレメント(+/−1、又はア
ップ/ダウン)されるべきことを表す各エントリに対す
る予測方向インディケータを含む。各フィルタ待ち行列
・エントリは、そのアドレスに対応するストリームがあ
るかどうか及び、それが肯定される場合、そのストリー
ムのストリーム番号を表すフィールドを含む。
【0034】よく知られているように、メモリ209は
サブセクションに論理的に分割されることが多い。特
に、メモリ209は、オペレーティング・システムによ
ってプログラムに割り当てられたメモリのインクレメン
トであるページに分割され、DASD(ダイレクト・ア
クセス記憶装置)とメモリ209の間で「ページング」
データを制御するために使用可能である。ページは順次
EAに関して非順次的に割り当て可能である。従って、
EAがストリーム・データのプリフェッチのために使用
される場合、ページ境界を横切った時に変換器(XLA
TE)503においてアドレス変換が行われなければな
らない。それは、そのストリーム・バッファが、前述の
ように順次的でない実アドレスを含むためである。各ペ
ージは、更に、ラインに分割される。キャッシュの実施
によってライン・サイズが決定され、それはキャッシュ
・ラインにおけるメモリ・データの量に対応する。キャ
ッシュ・ミスの結果、1ラインのデータがキャッシュに
変換される。
【0035】フィルタ・ヒットがある時、ストリームが
ストリーム・アドレス待ち行列501に割当可能であ
り、ストリーム・データ・バッファ506への対応する
割当が行われる。ストリーム・アドレス・エントリは、
特定の割り当てられたストリームに対する次のデータ・
ラインの予測有効アドレスを含む。もう一度云えば、こ
れは実施選択であり、代替えとして、実アドレスを使用
してもよかった。ストリーム・アドレス・エントリは、
そのストリームが割り当てられることを表す有効ビット
(V)も含む。ストリームの状態を追跡するために使用
される状態フィールドもある。又、予測方向のコピーも
ストリーム・バッファに保持される。比較器505はプ
ロセッサEAとストリーム・アドレス待ち行列に含まれ
たページ及びライン・アドレスとを比較する。一致が生
じた場合、それはストリーム・ヒットと呼ばれる。
【0036】図5に示された機能性は別の方法でも実施
可能であり、それも依然として本発明の技術的範囲内で
ある。
【0037】メモリ209におけるメモリ・スペースは
128個のバイト・ラインに分割可能である。各ライン
は半分に分割可能であるので、1つのラインの偶数番の
半分はアドレス0から63までであり、奇数番の半分は
アドレス64から127までである。前述のように、C
PU201は、メモリにおけるキャッシュ可能なライン
に対する実アドレスに変換される論理的アドレス(E
A)を発生する。メモリは2*Nバイトのページに分割
される。それらのページはサイズのキャッシュ・エント
リに対応するラインに分割される。キャッシュ・ミスが
ある度に、関連する実アドレスが分析される。その実ア
ドレスがラインの偶数番の半分にある場合、潜在的スト
リームはインクレメント1である。待ち行列502にお
けるLRUフィルタ待ち行列は「アップ」の方向をマー
クされ、ライン・ミスRAは「1」だけインクレメント
されてそのエントリに保管される。RAがそのラインの
奇数側にある場合、待ち行列502におけるRAエント
リは1だけデクレメントされ、「ダウン」がそのエント
リにマークされる。
【0038】ミスの場合にフィルタ・エントリにRAを
保管すること及びその後のミスをそのエントリと比較し
てアップ又はダウンの方向を決定することは、別の実施
例として本発明の範囲内である。
【0039】ストリームが割り当てられる時、「次の」
有効ライン・アドレスがストリーム・アドレス・バッフ
ァ501に保管される。バッファ501は各アクティブ
・ストリームに対するエントリを含む。有効ビット
「V」はそのエントリが使用中であることを表し、方向
インディケータはそのストリームがアップであるか又は
ダウンであるか(+/−)を表す。状態フィールドはそ
のストリームの状態を表すために使用される。ストリー
ム・アドレス・バッファ501と関連してストリーム・
データ・バッファ506があり、それはプリフェッチさ
れたデータのラインを保持する。フィルタ待ち行列50
2及びストリーム・バッファ501の両方の予測アドレ
スとも、ページ境界が遭遇する時に終了する。これは、
そのような事象が新しい変換を必要とするためである。
【0040】L1キャッシュ202及びL2キャッシュ
203のキャッシュ・ミスがある場合、メモリ209を
アクセスする前にストリーム・バッファが質問される。
フィルタ待ち行列502及びストリーム・アドレス・バ
ッファ501の回路を結合することは本発明の明らかな
実施例である。
【0041】前述のストリーム・フィルタ及びストリー
ム・バッファに関する及び前述のIEEEの記事におけ
る従来方法はL2キャッシュの代替えとしてストリーム
・バッファの効果を分析している。この場合、プリフェ
ッチはいつもインクレメント的なものとして予測され
る。更に、1ライン又はワードではなく「ストライド」
とバッファに保管されたストライド長によってアドレス
がインクレメントされるというストライド・フィルタを
説明し、図示することにする。ストライド・フィルタの
概念は別の実施例として実現され、本発明の技術範囲内
であろう。
【0042】図6乃至図9を参照すると、本発明の進行
的プリフェッチ・モードの流れ図が示される。前述のよ
うに、本発明は3つの進行的プリフェッチ・モード、即
ち、正規モード、データ・プリフェッチ・モード、及び
ブラスト・モードを可能にする。正規モードでは、デー
タはプリフェッチされない。データ・プリフェッチ・モ
ードでは、2つのライン、即ち、L1キャッシュに対す
る1つのライン及びストリーム・バッファに対する1つ
のラインがプリフェッチされる。ブラスト・モードで
は、2つよりも多くのラインが一時にプリフェッチされ
る。本発明の好適な実施例では、ブラスト・モードにお
いて、4つのライン、即ち、データ・プリフェッチ・モ
ードにおけるような2つのライン及びストリーム・バッ
ファに対する2つの更なるラインがプリフェッチされ
る。何れのモードにおいても、プリフェッチされたバッ
ファは、プロセッサ・チップ、キャッシュ・チップ、外
部チップ、又はメモリ・カード上にパッケージ可能であ
り、依然として、本発明の技術的範囲内にある。図6乃
至図9は、どの方向にストリームが流れるかを予測する
ための方向がインクレメントする例を示す。デクレメン
トする例はこの例の明らかな修正となるであろう。図6
乃至図9はデータ・プリフェッチ及びブラスト・モード
に入る方法を示す。
【0043】ステップ601において、CPU201は
キャッシュ・ラインAで開始するデータをアクセスし始
める。ステップ602において、キャッシュ・ラインA
がL1キャッシュ202内にあるかどうかの決定が行わ
れる。それが肯定される場合、プロセスはステップ60
3に進む。そこでは、キャッシュ・ラインAがCPU2
01に戻され、プロセスはステップ604において終了
する。
【0044】しかし、キャッシュ・ラインAにおいてミ
スがある場合、プロセスはステップ605に進む。そこ
では、キャッシュ・ラインAのアドレスがストリーム・
フィルタ403に含まれたすべてのアドレスに比較され
る。
【0045】キャッシュ・ラインAがフィルタ403内
に存在しない場合、プロセスはステップ606に進み、
そこでは、キャッシュ・ラインAのアドレスが1だけイ
ンクレメントされ、フィルタ403内に挿入される。し
かる後、ステップ607において、キャッシュ・ライン
AはL2キャッシュ203又はメモリ209からL1キ
ャッシュ202にフェッチされる。このステップはその
分野ではよく知られている。
【0046】図6乃至図9におけるステップ607から
ステップ608への破線の矢印は、ステップ608がス
テップ607に続いて直ちに生じてもよく、或いは生じ
なくてもよいことを表す。一般には、ストリーム・フィ
ルタ内に存在するアドレス・エントリの数と同じ数のミ
スがキャッシュ・ラインA+1に対するリクエストの前
に生じることがある。
【0047】或時間遅れで、CPU201はキャッシュ
・ラインA+1をリクエストするかもしれない。再び、
PCC404はキャッシュ・ラインA+1がL1キャッ
シュ202内に存在するかどうかを決定する(ステップ
609)。それが肯定される場合、キャッシュ・ライン
A+1がステップ610においてCPU201に戻さ
れ、プロセスはステップ611において終了する。キャ
ッシュ・ラインA+1はL1キャッシュ202内にある
ので、ストリーム・フィルタ403との比較一致はな
く、A+1エントリは、それがフィルタ置換アルゴリズ
ムによって再試行されるまでフィルタ403に留まる。
そのフィルタ置換アルゴリズムは、米国特許出願第51
9,032号の教示するところに従って遂行可能であ
る。しかし、L1キャッシュ202内のキャッシュ・ラ
インA+1においてミスがある場合、フィルタ・ヒット
が存在し(ステップ637)、プロセスをステップ61
2へ進めさせる。そこでは、リクエストされたキャッシ
ュ・ラインA+1のアドレスがフィルタ403にあるア
ドレスA+1と一致した結果フィルタ403においてヒ
ットが生じるので、キャッシュA+2でもって始まるキ
ャッシュ・ラインのストリームが割り当てられる。次
に、ステップ613において、キャッシュ・ラインA+
1がL2キャッシュ203又はメモリ209からL1キ
ャッシュ202にフェッチされる。又、L1キャッシュ
202は、キャッシュ・ラインA+2が存在するかどう
かを決定するためにチェックされる。それが存在しない
場合、キャッシュ・ラインA+2がL2キャッシュ20
3又はメモリ209からフェッチされる。
【0048】しかる後、ステップ614において、キャ
ッシュ・ラインA+3がL2キャッシュ203内に存在
するかどうかの決定が行われる。それが存在しない場
合、プロセスはステップ615に進み、そこでは、キャ
ッシュ・ラインA+3がメモリ209からプリフェッチ
され、プリフェッチ・バッファ402内に挿入される。
しかし、キャッシュ・ラインA+3がキャッシュ203
内に存在する場合、プロセスはステップ615をスキッ
プする。
【0049】再び、ステップ615からステップ616
への破線矢印は、ステップ616がステップ615の後
直ちには生じないことがあることを表す。
【0050】ステップ616において、プロセッサ20
1はキャッシュ・ラインA+2にリクエストし、ライン
A+2に対してL1キャッシュ202へのアクセスを生
じさせる。ステップ613において、キャッシュ・ライ
ンA+2がL1キャッシュ202へフェッチされたの
で、L1キャッシュ202はこのキャッシュ・ラインを
CPU201に供給することができるであろう。ステッ
プ617において、ストリーム・アドレス・バッファ5
01におけるストリーム・アドレスがそのストリームの
先頭においてアドレスA+3を有するように更新され
る。しかる後、ステップ618において、L1キャッシ
ュ202は、キャッシュ・ラインA+3が存在するかど
うかを決定するためにチェックされる。それが存在しな
い場合、キャッシュ・ラインA+3がL2キャッシュ2
03又はバッファ402からL1キャッシュ202へフ
ェッチされる。次に、ステップ619において、キャッ
シュ・ラインA+4がL2キャッシュ203又はメモリ
209からプリフェッチ・バッファ402へフェッチさ
れるであろう。
【0051】しかる後、ブラスト・モードがシステム2
00においてイネーブルされない場合(ステップ62
0)、プロセスはステップ616に戻り、CPU201
が図示のようなインクレメント順次態様でキャッシュ・
ラインを通してインクレメントし続ける限り、ステップ
616乃至621を通してループする。ステップ621
は、ステップ616において、ラインA+3に対するL
1キャッシュ・アクセスが存在し得ることを表す。そこ
で、ステップ617において、ストリームはアドレスA
+3でもって更新され、ステップ618において、ライ
ンA+4がL1キャッシュ202へフェッチされ、そし
てステップ619において、キャッシュ・ラインA+4
がバッファ402へフェッチされる。
【0052】次に、データ・プリフェッチ・モードを説
明する。ステップ620では、ブラスト・モードがシス
テム200においてイネーブルされる場合、キャッシュ
・ラインA+3に対するCPU201からのリクエスト
が存在する時、プロセスはステップ622へ進むであろ
う。ステップ622において、そのようなリクエストに
対して、PCC404はL1キャッシュ202内でキャ
ッシュ・ラインA+3を捜すであろう。キャッシュ・ラ
インA+3がL1キャッシュ202に存在するので、キ
ャッシュ・ラインA+3がCPU201へ戻されるであ
ろう。しかる後、ステップ623において、ストリーム
・アドレス・バッファ501におけるストリーム・アド
レスがA+4に更新される。ステップ624において、
キャッシュ・ラインA+4が存在するかどうかを決定す
るためにL1キャッシュ202がチェックされる。それ
が存在しない場合、キャッシュ・ラインA+4がバッフ
ァ402からL1キャッシュ202において実施された
プリフェッチ・バッファ位置にフェッチされるであろ
う。
【0053】しかる後、ステップ625において、キャ
ッシュ・ラインA+5がL2キャッシュ203に存在す
るかどうかの決定が行われる。それが存在する場合、プ
ロセスはステップ626又は627へ進行するであろ
う。その実施は、ノード・コントローラ205がすべて
のストリーム・バッファ・アクセスを通知されることを
必要とするであろう。次のストリーム・バッファ・ライ
ンがL2キャッシュ203内になく、従って、フェッチ
されることを必要とする場合の通知にその通知を限定す
ることはノード・コントローラ・バッファ405及び4
06をプロセッサ201との同期から一時的に外させる
であろう。この設計トレード・オフに利点は、ステップ
626及び627が結合され、ノード・コントローラ2
05に対するアドレス・バス・トラフィックを減少させ
ることができることである。カバーされる主要なケース
では、A、A+1等のラインはプリフェッチ前にはキャ
ッシュ202に全く存在しないので、キャッシュ・ライ
ンA+5は、通常は、L2キャッシュ203にあるとは
考えられない。
【0054】ステップ626及び627が上記の理由で
結合される時、ステップ627の通知はステップ626
のプリフェッチに加えられた4つの追加制御ビットでも
って実施可能である。その4ビットは1ビットの有効プ
リフェッチ、2ビットのストリーム識別、及び1ビット
のプリフェッチ方向である。キャッシュ・ラインA+5
及びこれらのビットに対するアドレスを使用して、ノー
ド・コントローラ205はキャッシュA+6及びA+7
に対してメモリ・リクエストを発生することができる。
前述のように、ノード・コントローラ205は任意の数
のキャッシュ・ラインをプリフェッチするために実施可
能である。ステップ628において、ノード・コントロ
ーラ205はキャッシュ・ラインA+6をプリフェッチ
・バッファ405(PBFR2)にプリフェッチし、キ
ャッシュ・ラインA+7をバッファ406(PBFR
3)にプリフェッチするであろう。
【0055】ステップ628及び629の間の破線は、
キャッシュ・ラインA+4に対するCPU201からの
リクエストがステップ628に続いて直ちに生じないこ
とがあることを表す。
【0056】ステップ629において、L1キャッシュ
202はCPU201によってリクエストされたキャッ
シュ・ラインA+4に関してアクセスされる。キャッシ
ュ・ラインA+4はステップ624においてL1キャッ
シュ202に挿入されたので、キャッシュ・ラインA+
4はCPU201へ戻されるであろう。ステップ630
において、ストリーム・アドレスがインクレメントされ
てアドレスA+5を先頭にされる。ステップ631にお
いて、L1キャッシュ202は、キャッシュ・ラインA
+5が存在するかどうかを決定するためにチェックす
る。それが否定される場合、キャッシュ・ラインA+5
がL2キャッシュ203又はバッファ402からL1キ
ャッシュ202にフェッチされる。
【0057】しかる後、ステップ632において、キャ
ッシュ・ラインA+6はバッファ405からバッファ4
02に移動する。ステップ633において、キャッシュ
・ラインA+7がバッファ406からバッファ405に
移動する。しかる後、ステップ634において、ノード
・コントローラ205はキャッシュ・ラインA+8をプ
リフェッチするように通知される。この実施では、ステ
ップ632におけるキャッシュ・ラインA+6のフェッ
チは、キャッシュ・ラインA+8をプリフェッチするよ
うにノード・コントローラ205へ通知することであ
る。ステップ635において、ノード・コントローラ2
05はキャッシュ・ラインA+8をメモリ209からバ
ッファ406にプリフェッチする。
【0058】しかる後、CPU201がインクレメンタ
ル順次態様でキャッシュ・ラインのアクセスを継続する
(即ち、CPU201がその割り当てられたストリーム
におけるキャッシュ・ラインのアクセスを継続する)限
り、プロセスはステップ629−636を通してループ
動作をインクレメンタル態様で継続するであろう(ステ
ップ636)。
【0059】上記の説明において、バス・インターフェ
ース装置(BIU)401がメモリ209からのキャッ
シュ・ラインのフェッチを遂行してもよい。ノード・コ
ントローラ205はスイッチ207における一部分であ
ってもよい。
【0060】有効アドレスはページ境界に跨って連続的
であり、実アドレスはそのように連続的でないので、ス
トリーム・アドレス・バッファ501における2つのア
ドレスを比較する時に有効アドレスを利用することは有
利であることが多い。更に、上記のため、インクレメン
タル・アドレスを生じさせるために、カウンタを使用し
てもよい。
【0061】前述のように、BIU401からメモリ2
09へのフェッチにおいて、それがキャッシュ・ライン
をバッファ405及び406にプリフェッチするためで
あることをノード・コントローラ205に通知するため
に、制御ビットを利用してもよい。ノード・コントロー
ラ205がそれのバッファへのプリフェッチを遂行する
ことをこの特定のライン・リクエストが要求すること
を、1つのビットがノード・コントローラ205に知ら
せるようにしてもよい。どのストリーム番号がプリフェ
ッチと関連するかを、他の2つのビットがノード・コン
トローラ205に知らせるようにしてもよい。キャッシ
ュ・ラインにおけるどの方向にアドレスが向いているか
を、他のビットが表すようにしてもよい。ノード・コン
トローラ205は、プリフェッチを行うように通知され
る時、CPU201の動作とは無関係にそのようなプリ
フェッチを行ってもよい。
【0062】L1キャッシュ202及びL2キャッシュ
203に関する組込みを維持する場合、キャッシュ・ラ
インが上記の手順におけるバッファ402からL1キャ
ッシュ202へ移動する時、同じキャッシュ・ラインが
L2キャッシュ203にも含まれるであろう。
【0063】L1キャッシュ202内にストリーム・バ
ッファ・ラインの1つを持つ場合の利点は、L1キャッ
シュ202におけるそのバッファ・ライン内に含まれた
特定のキャッシュ・ラインがプロセッサ201によって
リクエストされる時、L1キャッシュ202においてヒ
ットが生じ、ミスは生じない。技術的には、たとえリク
エストされたキャッシュ・ラインがそのL1キャッシュ
202に接続された別のバッファに含まれていても、ミ
スは生じるであろう。そのようなミスのために、そのス
トリーム・バッファ・ラインからCPU201にそのキ
ャッシュ・ラインを検索するために余分のハードウエア
及びサイクル・タイムが必要とされるであろう。ストリ
ーム・バッファ・キャッシュラインの1つとして作用す
るL1キャッシュ202におけるキャッシュ・ラインは
論理的表現をすればプリフェッチ・ストリーム・バッフ
ァに含まれる。
【0064】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0065】(1)データ処理システムにおけるプロセ
ッサによって使用されるデータをプリフェッチするため
の方法にして、(a)データ・ラインに対する前記プロ
セッサからのリクエストを受け取るステップと、(b)
前記リクエストに応答してストリームを割り当てるステ
ップと、(c)前記ストリームにおけるエレメントによ
って表されたデータ・ライン対する前記プロセッサから
のその後のリクエストを受け取るステップと、(d)前
記ストリームにおけるエレメントによって表されたデー
タ・ラインに対する前記プロセッサからの前記その後の
リクエストの関数として未だリクエストされてないデー
タ・ラインのプリフェッチの深さを制御するステップ
と、を含む方法。 (2)前記ストリームにおけるエレメントによって表さ
れたデータ・ラインに対する前記プロセッサからの前記
その後のリクエストの関数として未だリクエストされて
ないデータ・ラインのプリフェッチの方向を制御するス
テップを含むことを特徴とする上記(1)に記載の方
法。 (3)前記ステップ(d)は、第1オペレーション・モ
ードにおいて、前記ストリームにおける前記エレメント
の1つによって表されたデータ・ラインに対する前記プ
ロセッサからの各リクエストに対して2つのデータ・ラ
インをプリフェッチするステップと、第2オペレーショ
ン・モードにおいて、前記ストリームにおける前記エレ
メントの1つによって表されたデータ・ラインに対する
前記プロセッサからの各リクエストに対して2つよりも
多くのデータ・ラインをプリフェッチするステップと、
を含み、前記第2オペレーション・モードの前に前記第
1オペレーション・モードに入ることを特徴とする上記
(1)に記載の方法。 (4)1つ又は複数のデータ・ラインがキャッシュにプ
リフェッチされること及び前記ストリームはストリーム
・フィルタに維持されることを特徴とする上記(1)に
記載の方法。 (5)1つ又は複数のデータ・ラインが前記プロセッサ
の外部の1つ又は複数のバッファに投機的にプリフェッ
チされることを特徴とする上記(4)に記載の方法。 (6)メイン・メモリからストリーム・バッファにキャ
ッシュ・ラインをプリフェッチするするためのシステム
にして、前記ストリーム・バッファはバスによって前記
メイン・メモリに接続されたプロセッサを援助するもの
において、ストリーム・フィルタと、前記プロセッサに
接続されたキャッシュと、第1キャッシュ・ラインのた
めの前記プロセッサからの第1リクエストを受け取るた
めの手段と、前記第1リクエストに応答して、前記第1
キャッシュ・ラインのアドレスに依存した内容を有する
ストリームを前記ストリーム・フィルタにおいて割り当
てるための手段と、第2キャッシュ・ラインのための前
記プロセッサからの第2リクエストを受け取るための手
段にして、前記第2キャッシュ・ラインのアドレスが前
記ストリーム内に含まれるものと、前記第2リクエスト
に応答して前記メモリから前記ストリーム・バッファに
N個(Nはゼロよりも大きい整数)のキャッシュ・ライ
ンを投機的にプリフェッチするための手段にして、前記
N個のプリフェッチされたキャッシュ・ラインのアドレ
スは前記ストリームに沿って存在するものと、第3キャ
ッシュ・ラインのための前記プロセッサからの第3リク
エストを受け取るための手段にして、前記第3キャッシ
ュ・ラインのアドレスが前記ストリーム内に含まれるも
のと、前記第3リクエストに応答して前記メモリから前
記ストリーム・バッファにM個(MはNよりも大きい整
数)のキャッシュ・ラインを投機的にプリフェッチする
ための手段にして、前記M個のプリフェッチされたキャ
ッシュ・ラインのアドレスは前記ストリームに沿って存
在するものと、を含むシステム。 (7)前記ストリーム・バッファは前記キャッシュに含
まれることを特徴とする上記(6)に記載のシステム。 (8)前記N個のキャッシュ・ラインを投機的にプリフ
ェッチするための手段は前記システムの第1オペレーシ
ョン・モードと関連すること、前記M個のキャッシュ・
ラインを投機的にプリフェッチするための手段は前記シ
ステムの第2オペレーション・モードと関連すること、
前記第1オペレーション・モードは前記第2オペレーシ
ョン・モードの前に実施されること、及び前記第2オペ
レーション・モードはディスエーブル可能であること、
を特徴とする上記(6)に記載のシステム。 (9)前記ストリーム・バッファの1つ又は複数のライ
ンは前記プロセッサを含むチップの外に含まれることを
特徴とする上記(7)に記載のシステム。 (10)プロセッサによってリクエストされたリクエス
トされたキャッシュ・ラインをメモリから投機的にプリ
フェッチするための方法にして、第1キャッシュ・ライ
ンに対するリクエストを前記プロセッサから受け取るた
めのステップと、前記第1キャッシュ・ラインが前記プ
ロセッサに接続されたキャッシュ内に含まれているかど
うかを決定するステップと、前記第1キャッシュ・ライ
ンが前記プロセッサに接続されたキャッシュ内に含まれ
ていない場合、前記第1キャッシュ・ラインのアドレス
がストリーム・フィルタ内に含まれたアドレスに一致す
るかどうかを決定するステップと、前記第1キャッシュ
・ラインのアドレスが前記ストリーム・フィルタ内に含
まれたアドレスに一致しない場合、前記第1キャッシュ
・ラインのアドレスをインクレメントして第1インクレ
メント・アドレスを作成し、前記第1インクレメント・
アドレスを前記ストリーム・フィルタに挿入するステッ
プと、前記メモリから前記キャッシュに前記第1キャッ
シュ・ラインをフェッチするステップと、前記プロセッ
サから第2キャッシュ・ラインに対するリクエストを受
け取るステップにして、前記第2キャッシュ・ラインの
アドレスが前記第1インクレメント・アドレスに対応す
るものと、前記第2キャッシュ・ラインが前記キャッシ
ュ内に含まれているかどうかを決定するステップと、前
記第2キャッシュ・ラインが前記キャッシュ内に含まれ
ていない場合、前記第1インクレメント・アドレスをイ
ンクレメントして第2インクレメント・アドレスを作成
しアドレスのストリームをストリーム・フィルタにおい
て割り当てるステップにして、前記ストリームの先頭は
前記第2インクレメント・アドレスに対応するアドレス
を有するものと、前記第2キャッシュ・ライン及び前記
インクレメント・アドレスに対応したアドレスを有する
第3キャッシュ・ラインを前記メモリから前記キャッシ
ュにフェッチするステップと、第3インクレメント・ア
ドレスに対応したアドレスを有する第4キャッシュ・ラ
インを前記メモリからストリームにおける第1ラインに
フェッチするステップにして、前記第3インクレメント
・アドレスは前記第2インクレメント・アドレスのイン
クレメントに対応するものと、前記第3キャッシュ・ラ
インに対するリクエストを前記プロセッサから受け取る
ステップと、前記ストリームの先頭が前記第3インクレ
メント・アドレスに対応したアドレスを有するように前
記ストリームを更新するステップと、前記ストリーム・
バッファの前記第1ラインから前記キャッシュに前記第
4キャッシュ・ラインをフェッチするステップと、第4
インクレメント・アドレスに対応したアドレスを有する
第5キャッシュ・ラインを前記メモリから前記ストリー
ム・バッファの前記第1ラインにフェッチするステップ
にして、前記第4インクレメント・アドレスは前記第3
インクレメント・アドレスのインクレメントに対応する
ものと、前記第4キャッシュ・ラインに対応するリクエ
ストを前記プロセッサから受け取るステップと、前記ス
トリームの先頭が前記第4インクレメント・アドレスに
対応したアドレスを有するように前記ストリームを更新
するステップと、前記ストリーム・バッファの前記第1
ラインから前記キャッシュに前記第5キャッシュ・ライ
ンをフェッチするステップと、第5インクレメント・ア
ドレスに対応したアドレスを有する第6キャッシュ・ラ
インを前記メモリから前記ストリーム・バッファの前記
第1ラインにフェッチするステップにして、前記第5イ
ンクレメント・アドレスは前記第4インクレメント・ア
ドレスのインクレメントに対応するものと、第6インク
レメント・アドレスに対応したアドレスを有する第7キ
ャッシュ・ラインを前記メモリから前記ストリーム・バ
ッファの前記第2ラインにフェッチするステップにし
て、前記第6インクレメント・アドレスは前記第5イン
クレメント・アドレスのインクレメントに対応するもの
と、第7インクレメント・アドレスに対応したアドレス
を有する第8キャッシュ・ラインを前記メモリから前記
ストリーム・バッファの前記第3ラインにフェッチする
ステップにして、前記第7インクレメント・アドレスは
前記第6インクレメント・アドレスのインクレメントに
対応するものと、前記第5キャッシュ・ラインに対する
リクエストを前記プロセッサから受け取るステップと、
前記ストリームの先頭が前記第5インクレメント・アド
レスに対応したアドレスを有するように前記ストリーム
を更新するステップと、前記ストリーム・バッファの前
記第1ラインから前記キャッシュに前記第6キャッシュ
・ラインをフェッチするステップと、前記ストリーム・
バッファの前記第2ラインから前記ストリーム・バッフ
ァの第1ラインに前記第7キャッシュ・ラインをフェッ
チするステップと、前記ストリーム・バッファの前記第
3ラインから前記ストリーム・バッファの第2ラインに
前記第8キャッシュ・ラインをフェッチするステップ
と、前記メモリから前記ストリーム・バッファの前記第
3ラインに第9キャッシュ・ラインをフェッチするステ
ップと、を含む方法。
【図面の簡単な説明】
【図1】本発明に従って構成可能なマルチプロセッサ・
システムを示す。
【図2】本発明に従って構成可能なデータ処理システム
を示す。
【図3】ストリーム・フィルタ及びストリーム・バッフ
ァを示す。
【図4】図2に示されたシステムの更に詳細な図を示
す。
【図5】本発明に従って機能的な図を示す。
【図6】本発明の流れ図の一部分を示す。
【図7】本発明の流れ図の一部分を示す。
【図8】本発明の流れ図の一部分を示す。
【図9】本発明の流れ図の一部分を示す。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】データ処理システムにおけるプロセッサに
    よって使用されるデータをプリフェッチするための方法
    にして、 (a)データ・ラインに対する前記プロセッサからのリ
    クエストを受け取るステップと、 (b)前記リクエストに応答してストリームを割り当て
    るステップと、 (c)前記ストリームにおけるエレメントによって表さ
    れたデータ・ライン対する前記プロセッサからのその後
    のリクエストを受け取るステップと、 (d)前記ストリームにおけるエレメントによって表さ
    れたデータ・ラインに対する前記プロセッサからの前記
    その後のリクエストの関数として未だリクエストされて
    ないデータ・ラインのプリフェッチの深さを制御するス
    テップと、 を含む方法。
  2. 【請求項2】前記ストリームにおけるエレメントによっ
    て表されたデータ・ラインに対する前記プロセッサから
    の前記その後のリクエストの関数として未だリクエスト
    されてないデータ・ラインのプリフェッチの方向を制御
    するステップを含むことを特徴とする請求項1に記載の
    方法。
  3. 【請求項3】前記ステップ(d)は、 第1オペレーション・モードにおいて、前記ストリーム
    における前記エレメントの1つによって表されたデータ
    ・ラインに対する前記プロセッサからの各リクエストに
    対して2つのデータ・ラインをプリフェッチするステッ
    プと、 第2オペレーション・モードにおいて、前記ストリーム
    における前記エレメントの1つによって表されたデータ
    ・ラインに対する前記プロセッサからの各リクエストに
    対して2つよりも多くのデータ・ラインをプリフェッチ
    するステップと、 を含み、前記第2オペレーション・モードの前に前記第
    1オペレーション・モードに入ることを特徴とする請求
    項1に記載の方法。
  4. 【請求項4】1つ又は複数のデータ・ラインがキャッシ
    ュにプリフェッチされること及び前記ストリームはスト
    リーム・フィルタに維持されることを特徴とする請求項
    1に記載の方法。
  5. 【請求項5】1つ又は複数のデータ・ラインが前記プロ
    セッサの外部の1つ又は複数のバッファに投機的にプリ
    フェッチされることを特徴とする請求項4に記載の方
    法。
  6. 【請求項6】メイン・メモリからストリーム・バッファ
    にキャッシュ・ラインをプリフェッチするするためのシ
    ステムにして、前記ストリーム・バッファはバスによっ
    て前記メイン・メモリに接続されたプロセッサを援助す
    るものにおいて、 ストリーム・フィルタと、 前記プロセッサに接続されたキャッシュと、 第1キャッシュ・ラインのための前記プロセッサからの
    第1リクエストを受け取るための手段と、 前記第1リクエストに応答して、前記第1キャッシュ・
    ラインのアドレスに依存した内容を有するストリームを
    前記ストリーム・フィルタにおいて割り当てるための手
    段と、 第2キャッシュ・ラインのための前記プロセッサからの
    第2リクエストを受け取るための手段にして、前記第2
    キャッシュ・ラインのアドレスが前記ストリーム内に含
    まれるものと、 前記第2リクエストに応答して前記メモリから前記スト
    リーム・バッファにN個(Nはゼロよりも大きい整数)
    のキャッシュ・ラインを投機的にプリフェッチするため
    の手段にして、前記N個のプリフェッチされたキャッシ
    ュ・ラインのアドレスは前記ストリームに沿って存在す
    るものと、 第3キャッシュ・ラインのための前記プロセッサからの
    第3リクエストを受け取るための手段にして、前記第3
    キャッシュ・ラインのアドレスが前記ストリーム内に含
    まれるものと、 前記第3リクエストに応答して前記メモリから前記スト
    リーム・バッファにM個(MはNよりも大きい整数)の
    キャッシュ・ラインを投機的にプリフェッチするための
    手段にして、前記M個のプリフェッチされたキャッシュ
    ・ラインのアドレスは前記ストリームに沿って存在する
    ものと、 を含むシステム。
  7. 【請求項7】前記ストリーム・バッファは前記キャッシ
    ュに含まれることを特徴とする請求項6に記載のシステ
    ム。
  8. 【請求項8】前記N個のキャッシュ・ラインを投機的に
    プリフェッチするための手段は前記システムの第1オペ
    レーション・モードと関連すること、 前記M個のキャッシュ・ラインを投機的にプリフェッチ
    するための手段は前記システムの第2オペレーション・
    モードと関連すること、 前記第1オペレーション・モードは前記第2オペレーシ
    ョン・モードの前に実施されること、及び前記第2オペ
    レーション・モードはディスエーブル可能であること、 を特徴とする請求項6に記載のシステム。
  9. 【請求項9】前記ストリーム・バッファの1つ又は複数
    のラインは前記プロセッサを含むチップの外に含まれる
    ことを特徴とする請求項7に記載のシステム。
  10. 【請求項10】プロセッサによってリクエストされたリ
    クエストされたキャッシュ・ラインをメモリから投機的
    にプリフェッチするための方法にして、 第1キャッシュ・ラインに対するリクエストを前記プロ
    セッサから受け取るためのステップと、 前記第1キャッシュ・ラインが前記プロセッサに接続さ
    れたキャッシュ内に含まれているかどうかを決定するス
    テップと、 前記第1キャッシュ・ラインが前記プロセッサに接続さ
    れたキャッシュ内に含まれていない場合、前記第1キャ
    ッシュ・ラインのアドレスがストリーム・フィルタ内に
    含まれたアドレスに一致するかどうかを決定するステッ
    プと、 前記第1キャッシュ・ラインのアドレスが前記ストリー
    ム・フィルタ内に含まれたアドレスに一致しない場合、
    前記第1キャッシュ・ラインのアドレスをインクレメン
    トして第1インクレメント・アドレスを作成し、前記第
    1インクレメント・アドレスを前記ストリーム・フィル
    タに挿入するステップと、 前記メモリから前記キャッシュに前記第1キャッシュ・
    ラインをフェッチするステップと、 前記プロセッサから第2キャッシュ・ラインに対するリ
    クエストを受け取るステップにして、前記第2キャッシ
    ュ・ラインのアドレスが前記第1インクレメント・アド
    レスに対応するものと、 前記第2キャッシュ・ラインが前記キャッシュ内に含ま
    れているかどうかを決定するステップと、 前記第2キャッシュ・ラインが前記キャッシュ内に含ま
    れていない場合、前記第1インクレメント・アドレスを
    インクレメントして第2インクレメント・アドレスを作
    成しアドレスのストリームをストリーム・フィルタにお
    いて割り当てるステップにして、前記ストリームの先頭
    は前記第2インクレメント・アドレスに対応するアドレ
    スを有するものと、 前記第2キャッシュ・ライン及び前記インクレメント・
    アドレスに対応したアドレスを有する第3キャッシュ・
    ラインを前記メモリから前記キャッシュにフェッチする
    ステップと、 第3インクレメント・アドレスに対応したアドレスを有
    する第4キャッシュ・ラインを前記メモリからストリー
    ムにおける第1ラインにフェッチするステップにして、
    前記第3インクレメント・アドレスは前記第2インクレ
    メント・アドレスのインクレメントに対応するものと、 前記第3キャッシュ・ラインに対するリクエストを前記
    プロセッサから受け取るステップと、 前記ストリームの先頭が前記第3インクレメント・アド
    レスに対応したアドレスを有するように前記ストリーム
    を更新するステップと、 前記ストリーム・バッファの前記第1ラインから前記キ
    ャッシュに前記第4キャッシュ・ラインをフェッチする
    ステップと、 第4インクレメント・アドレスに対応したアドレスを有
    する第5キャッシュ・ラインを前記メモリから前記スト
    リーム・バッファの前記第1ラインにフェッチするステ
    ップにして、前記第4インクレメント・アドレスは前記
    第3インクレメント・アドレスのインクレメントに対応
    するものと、 前記第4キャッシュ・ラインに対応するリクエストを前
    記プロセッサから受け取るステップと、 前記ストリームの先頭が前記第4インクレメント・アド
    レスに対応したアドレスを有するように前記ストリーム
    を更新するステップと、 前記ストリーム・バッファの前記第1ラインから前記キ
    ャッシュに前記第5キャッシュ・ラインをフェッチする
    ステップと、 第5インクレメント・アドレスに対応したアドレスを有
    する第6キャッシュ・ラインを前記メモリから前記スト
    リーム・バッファの前記第1ラインにフェッチするステ
    ップにして、前記第5インクレメント・アドレスは前記
    第4インクレメント・アドレスのインクレメントに対応
    するものと、 第6インクレメント・アドレスに対応したアドレスを有
    する第7キャッシュ・ラインを前記メモリから前記スト
    リーム・バッファの前記第2ラインにフェッチするステ
    ップにして、前記第6インクレメント・アドレスは前記
    第5インクレメント・アドレスのインクレメントに対応
    するものと、 第7インクレメント・アドレスに対応したアドレスを有
    する第8キャッシュ・ラインを前記メモリから前記スト
    リーム・バッファの前記第3ラインにフェッチするステ
    ップにして、前記第7インクレメント・アドレスは前記
    第6インクレメント・アドレスのインクレメントに対応
    するものと、 前記第5キャッシュ・ラインに対するリクエストを前記
    プロセッサから受け取るステップと、 前記ストリームの先頭が前記第5インクレメント・アド
    レスに対応したアドレスを有するように前記ストリーム
    を更新するステップと、 前記ストリーム・バッファの前記第1ラインから前記キ
    ャッシュに前記第6キャッシュ・ラインをフェッチする
    ステップと、 前記ストリーム・バッファの前記第2ラインから前記ス
    トリーム・バッファの第1ラインに前記第7キャッシュ
    ・ラインをフェッチするステップと、 前記ストリーム・バッファの前記第3ラインから前記ス
    トリーム・バッファの第2ラインに前記第8キャッシュ
    ・ラインをフェッチするステップと、 前記メモリから前記ストリーム・バッファの前記第3ラ
    インに第9キャッシュ・ラインをフェッチするステップ
    と、 を含む方法。
JP18580696A 1995-08-24 1996-07-16 データ・キャッシュ・システム及び方法 Expired - Fee Related JP3541998B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US519031 1983-08-01
US08/519,031 US5664147A (en) 1995-08-24 1995-08-24 System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated

Publications (2)

Publication Number Publication Date
JPH0962573A true JPH0962573A (ja) 1997-03-07
JP3541998B2 JP3541998B2 (ja) 2004-07-14

Family

ID=24066484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18580696A Expired - Fee Related JP3541998B2 (ja) 1995-08-24 1996-07-16 データ・キャッシュ・システム及び方法

Country Status (5)

Country Link
US (1) US5664147A (ja)
EP (1) EP0762288B1 (ja)
JP (1) JP3541998B2 (ja)
KR (1) KR100240911B1 (ja)
DE (1) DE69616465T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207240A (ja) * 2006-02-03 2007-08-16 Internatl Business Mach Corp <Ibm> データ・ラインのための自己プリフェッチl2キャッシュ機構
US8756404B2 (en) 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2290395B (en) 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5897654A (en) * 1995-02-10 1999-04-27 International Business Machines Corporation Method and system for efficiently fetching from cache during a cache fill operation
US5809529A (en) * 1995-08-23 1998-09-15 International Business Machines Corporation Prefetching of committed instructions from a memory to an instruction cache
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
US5829028A (en) * 1996-05-06 1998-10-27 Advanced Micro Devices, Inc. Data cache configured to store data in a use-once manner
US5796605A (en) * 1996-07-02 1998-08-18 Sun Microsystems, Inc. Extended symmetrical multiprocessor address mapping
US5805839A (en) * 1996-07-02 1998-09-08 Advanced Micro Devices, Inc. Efficient technique for implementing broadcasts on a system of hierarchical buses
US5958040A (en) * 1997-05-28 1999-09-28 Digital Equipment Corporation Adaptive stream buffers
US6092149A (en) * 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US5909694A (en) * 1997-06-12 1999-06-01 International Business Machines Corporation Multiway associative external microprocessor cache
US6260116B1 (en) 1998-07-01 2001-07-10 International Business Machines Corporation System and method for prefetching data
US6625697B1 (en) 1998-11-25 2003-09-23 Siemens Aktiengesellschaft Cache-storage device with a buffer storing prefetch data
JP3506024B2 (ja) * 1998-12-10 2004-03-15 日本電気株式会社 情報処理装置
US6542968B1 (en) * 1999-01-15 2003-04-01 Hewlett-Packard Company System and method for managing data in an I/O cache
US6473864B1 (en) * 1999-07-29 2002-10-29 Picoturbo, Inc. Method and system for providing power management to a processing system
US6446167B1 (en) * 1999-11-08 2002-09-03 International Business Machines Corporation Cache prefetching of L2 and L3
US6535962B1 (en) * 1999-11-08 2003-03-18 International Business Machines Corporation System and method for prefetching data using a hardware prefetch mechanism
US6567894B1 (en) * 1999-12-08 2003-05-20 International Business Machines Corporation Method and apparatus to prefetch sequential pages in a multi-stream environment
US6901500B1 (en) * 2000-07-28 2005-05-31 Silicon Graphics, Inc. Method and apparatus for prefetching information and storing the information in a stream buffer
US6760816B1 (en) * 2000-09-29 2004-07-06 Intel Corporation Critical loads guided data prefetching
US6782469B1 (en) 2000-09-29 2004-08-24 Intel Corporation Runtime critical load/data ordering
US6662273B1 (en) 2000-09-29 2003-12-09 Intel Corporation Least critical used replacement with critical cache
US7039766B1 (en) * 2000-10-12 2006-05-02 International Business Machines Corporation Prescheduling sequential data prefetches in a preexisting LRU cache
US6883066B2 (en) * 2001-09-14 2005-04-19 Seagate Technology Llc Method and system for cache management algorithm selection
US6954840B2 (en) 2001-11-30 2005-10-11 Intel Corporation Method and apparatus for content-aware prefetching
US6675280B2 (en) 2001-11-30 2004-01-06 Intel Corporation Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher
US7093077B2 (en) 2001-11-30 2006-08-15 Intel Corporation Method and apparatus for next-line prefetching from a predicted memory address
US7260704B2 (en) 2001-11-30 2007-08-21 Intel Corporation Method and apparatus for reinforcing a prefetch chain
US7162588B2 (en) * 2002-08-23 2007-01-09 Koninklijke Philips Electronics N.V. Processor prefetch to match memory bus protocol characteristics
US7190367B2 (en) * 2003-03-25 2007-03-13 Mitsubishi Electric Research Laboratories, Inc. Method, apparatus, and system for rendering using a progressive cache
US7051162B2 (en) * 2003-04-07 2006-05-23 Hewlett-Packard Development Company, L.P. Methods and apparatus used to retrieve data from memory before such data is requested
US7055005B2 (en) * 2003-04-07 2006-05-30 Hewlett-Packard Development Company, L.P. Methods and apparatus used to retrieve data from memory into a RAM controller before such data is requested
US7487296B1 (en) * 2004-02-19 2009-02-03 Sun Microsystems, Inc. Multi-stride prefetcher with a recurring prefetch table
WO2007099582A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited プリフェッチ制御装置
US20070239939A1 (en) * 2006-04-06 2007-10-11 Goodman Benjiman L Apparatus for Performing Stream Prefetch within a Multiprocessor System
US7917701B2 (en) * 2007-03-12 2011-03-29 Arm Limited Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
US9390018B2 (en) * 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US9348753B2 (en) 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4980823A (en) * 1987-06-22 1990-12-25 International Business Machines Corporation Sequential prefetching with deconfirmation
US5146578A (en) * 1989-05-01 1992-09-08 Zenith Data Systems Corporation Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
EP0457403B1 (en) * 1990-05-18 1998-01-21 Koninklijke Philips Electronics N.V. Multilevel instruction cache and method for using said cache
SE469402B (sv) * 1991-05-02 1993-06-28 Swedish Inst Of Computer Scien Foerfarande foer att haemta data till ett cache-minne
JP2881049B2 (ja) * 1991-07-30 1999-04-12 株式会社日立製作所 プリフェッチバッファ
US5353419A (en) * 1992-01-09 1994-10-04 Trustees Of The University Of Pennsylvania Memory-side driven anticipatory instruction transfer interface with processor-side instruction selection
US5371870A (en) * 1992-04-24 1994-12-06 Digital Equipment Corporation Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching
IL102083A (en) * 1992-06-03 1997-01-10 Laser Ind Ltd Laser beam delivery system
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
US5410653A (en) * 1992-06-16 1995-04-25 International Business Machines Corporation Asynchronous read-ahead disk caching using multiple disk I/O processes and dynamically variable prefetch length
US5566324A (en) * 1992-12-24 1996-10-15 Ncr Corporation Computer apparatus including a main memory prefetch cache and method of operation thereof
EP0612013A1 (en) * 1993-01-21 1994-08-24 Advanced Micro Devices, Inc. Combination prefetch buffer and instruction cache cross references to related applications
US5586294A (en) * 1993-03-26 1996-12-17 Digital Equipment Corporation Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
US5588128A (en) * 1993-04-02 1996-12-24 Vlsi Technology, Inc. Dynamic direction look ahead read buffer
US5388247A (en) * 1993-05-14 1995-02-07 Digital Equipment Corporation History buffer control to reduce unnecessary allocations in a memory stream buffer
US5490113A (en) * 1994-06-15 1996-02-06 Digital Equipment Corporation Memory stream buffer

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207240A (ja) * 2006-02-03 2007-08-16 Internatl Business Mach Corp <Ibm> データ・ラインのための自己プリフェッチl2キャッシュ機構
US8756404B2 (en) 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline

Also Published As

Publication number Publication date
US5664147A (en) 1997-09-02
EP0762288A3 (en) 1997-03-19
KR100240911B1 (ko) 2000-01-15
KR970012167A (ko) 1997-03-29
DE69616465T2 (de) 2002-05-02
EP0762288A2 (en) 1997-03-12
EP0762288B1 (en) 2001-10-31
JP3541998B2 (ja) 2004-07-14
DE69616465D1 (de) 2001-12-06

Similar Documents

Publication Publication Date Title
JP3541998B2 (ja) データ・キャッシュ・システム及び方法
US6085291A (en) System and method for selectively controlling fetching and prefetching of data to a processor
EP0763795B1 (en) Stream prefetching buffer with stream filter
US5758119A (en) System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5740399A (en) Modified L1/L2 cache inclusion for aggressive prefetch
EP1388065B1 (en) Method and system for speculatively invalidating lines in a cache
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
US8156287B2 (en) Adaptive data prefetch
US5170476A (en) Data processor having a deferred cache load
US5996061A (en) Method for invalidating data identified by software compiler
JP3640355B2 (ja) キャッシュ制御の命令プリフェッチ方法及びシステム
EP0604139A1 (en) Computer system including a prefetch cache
EP1029280B1 (en) Cache memory operation
JP2000242558A (ja) キャッシュシステム及びその操作方法
KR100234647B1 (ko) 인스트럭션 프리페치 방법 및 데이터 처리 시스템
US6959363B2 (en) Cache memory operation
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
GB2454808A (en) Cache which prefetches data at a second address when an access matches a first address
GB2454811A (en) Cache memory which pre-fetches data when an address register is written
GB2454809A (en) Pre-fetching data when it has been transferred into system memory
JP2001344152A (ja) キャッシュメモリ装置

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040316

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040325

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080409

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080409

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100409

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110409

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110409

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees