JPH0962572A - ストリーム・フィルタ装置及び方法 - Google Patents

ストリーム・フィルタ装置及び方法

Info

Publication number
JPH0962572A
JPH0962572A JP8186022A JP18602296A JPH0962572A JP H0962572 A JPH0962572 A JP H0962572A JP 8186022 A JP8186022 A JP 8186022A JP 18602296 A JP18602296 A JP 18602296A JP H0962572 A JPH0962572 A JP H0962572A
Authority
JP
Japan
Prior art keywords
stream
cache
buffer
streams
filter
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.)
Pending
Application number
JP8186022A
Other languages
English (en)
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 JPH0962572A publication Critical patent/JPH0962572A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】ストリームの活動レベルに基づいてストリーム
の割振り解除を遅らせ、それによって、ストリーム・ス
ラッシュ状況が生じるのを防ぐためにストリーム・フィ
ルタを使用するシステム及び方法を提供する。 【解決手段】LRUストリームは、多数の潜在的な新し
いストリームが検出された後にだけ割振り解除される。
データ処理システムにおいて、バスによりプロセッサに
接続されたメイン・メモリから、そのプロセッサに接続
されたL1キャッシュにキャッシュ・ラインをプリフェ
ッチするための方法であって、そのプリフェッチはスト
リーム・バッファ及びストリーム・フィルタの利用によ
って増大し、ストリーム・バッファはアドレス・バッフ
ァ及びデータ・バッファを含み、ストリーム・バッファ
は1つ又は複数のアクティブ・ストリームを保持し、ス
トリーム・フィルタは1つ又は複数のアクティブ・スト
リームに対応した1つ又は複数のエントリを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概して云えば、デ
ータ処理システムに関するものであり、詳しく云えば、
データ・キャッシュに関してデータの進行的プリフェッ
チを行うためのシステム及び方法に関するものである。
【0002】
【従来の技術】現在のプログラム及びデータを高速度で
プロセッサ(CPU)にとって使用可能にすることによ
ってデータ処理システムにおける処理の速度を高めさせ
るために、特別の非常に高速度のメモリが使用されるこ
とが時々ある。そのような高速度のメモリはキャッシュ
として知られており、メイン・メモリのアクセス時間と
プロセッサ・ロジックとの間の速度差を補償するため
に、大型のコンピュータシステムにおいて使用されるこ
とが時々ある。プロセッサ・ロジックは、通常、メイン
・メモリのアクセス・タイムよりも速く、その結果、処
理速度はメイン・メモリの速度によって最も制限され
る。オペレーティング・システムの不一致を補償するた
めに使用されるテクニックは、CPUとメイン・メモリ
との間に極めて速い小型のメモリを使用することであ
る。そのメモリのアクセス・タイムはプロセッサのロジ
ック伝播遅延に近い。それは、CPUにおいて現在実行
されているプログラムのセグメント及び現在の計算にお
いて頻繁に使用される一時的なデータを記憶するために
使用される。プログラム(命令)及びデータを高速度で
使用可能にすることによって、プロセッサのパフォーマ
ンス・レートを向上させることが可能である。
【0003】多数の一般的なプログラムの分析の結果、
任意の所与のタイム・インターバルにおけるメモリへの
参照は、メモリにおける僅かなローカライズされた領域
に制限される傾向があるがわかった。この現象は、「参
照の局所性」という特性として知られている。この特性
の理由は、一般的なコンピュータ・プログラムは、頻繁
に遭遇するプログラム・ループ及びサブルーチン・コー
ルを伴って直線的に流れるということを考慮すればこの
特性の理由は理解されるであろう。プログラム・ループ
が実行される時、CPUは、そのループを構成するメモ
リ内の命令のセットを繰り返し参照する。所与のサブル
ーチンが呼び出される時、それの命令セットがメモリか
らフェッチされる。従って、ループ及びサブルーチンは
命令のフェッチのためにメモリへの参照をローカライズ
する傾向がある。更に低い程度まで、データに対するメ
モリ参照もローカライズされる傾向がある。テーブル・
ルックアップ手順は、そのテーブルが記憶されているメ
モリ内の部分を繰り返し参照する。反復的手順は共通の
メモリ・ロケーションを参照し、多くの数字がメモリの
ローカル部分内に制限される。これらのすべてを注目し
た結果が参照の局所性特性であり、短期間にわたって一
般的なプログラムによって発生される命令のアドレスが
メモリの僅かなローカライズされた領域を繰り返し参照
し、一方、メモリの残り部分は滅多にアクセスされな
い。
【0004】プログラム及びデータのアクティブナ部分
が高速の小型メモリ内に置かれている場合、平均的なメ
モリ・アクセス・タイムは減少し、従って、プログラム
の合計実行時間を減少させる。そのような高速の小型メ
モリは、前述のように、キャッシュ・メモリと呼ばれ
る。キャッシュ・メモリのアクセス・タイムはメイン・
メモリのアクセス・タイムよりも小さく5分の1乃至1
0分の1となることが多い。キャッシュ・メモリはメモ
リ・ハイアラーキにおける最高速のコンポーネントであ
り、CPUコンポーネントの速度に近い。
【0005】キャッシュ機構の基本的な理念は、最も頻
繁にアクセスされる命令及びデータを高速度キャッシュ
・メモリに保持することによって、平均的なメモリ・ア
クセス・タイムがキャッシュ・メモリのアクセス・タイ
ムに近づくようにすることである。キャッシュ・メモリ
はメイン・メモリの数分の1のサイズしかないけれど
も、メモリ・リクエストの大部分は、プログラムの参照
の局所性のために高速度キャッシュ・メモリ内で検出さ
れるであろう。
【0006】キャッシュ・メモリの基本的オペレーショ
ンは次のようである。CPUがメモリにおけるワードを
アクセスする必要がある時、キャッシュ・メモリが調べ
られる。そのワードがキャッシュ・メモリにおいて見つ
かる場合、それはその高速キャッシュ・メモリから読み
取られる。CPUによってアクセスされたワードがキャ
ッシュ・メモリにおいて見つからなかった場合、そのワ
ードを読み取るためにメイン・メモリがアクセスされ
る。そこで、そのアクセスされたワードを含むワード・
ブロックがメイン・メモリからキャッシュ・メモリに転
送される。このように、メイン・メモリへのその後の参
照によって必要なワードが高速キャッシュ・メモリにお
いて見つかるよう、幾つかのデータがキャッシュ・メモ
リに転送される。
【0007】コンピュータ・システムの平均的メモリ・
アクセス・タイムは、キャッシュ・メモリの使用によっ
てかなり改善可能である。キャッシュ・メモリのパフォ
ーマンスは、「ヒット率」と呼ばれる数値によって測定
されることが多い。CPUがメモリを参照し、キャッシ
ュにおいてそのワードを見つける時、それは「ヒット」
を生じたと云われる。そのワードがキャッシュ・メモリ
において見つからなかった場合、それはメイン・メモリ
内にあり、「ミス」としてカウントされる。CPUが、
殆ど時間、メイン・メモリの代わりにキャッシュ・メモ
リをアクセスするほどにヒット率が十分に高い場合、平
均的アクセス時間は高速キャッシュ・メモリのアクセス
時間に近くなる。例えば、100nsのキャッシュ・ア
クセス・タイム、1000nsのメイン・メモリアクセ
ス・タイム、及び0.9のヒット率を持ったコンピュー
タは200nsの平均アクセス・タイムを生じる。これ
は、キャッシュ・メモリのない同様のコンピュータ(そ
のアクセス・タイムは1000ns)に比べてかなりの
改善である。
【0008】最近のマイクロプロセッサでは、プロセッ
サ・サイクル・タイムはテクノロジの発展に伴って改善
し続けている。又、思惑的な実行、深いパイプライン、
多くの実行エレメント等の設計テクニックはマイクロプ
ロセッサのパフォーマンスを改善し続けている。その改
善されたパフォーマンスは、マイクロプロセッサに与え
るために多くのデータ及び命令を要求するので、メモリ
・インターフェースに重い負荷を課している。メモリ待
ち時間の減少を援助するために大きなオン・チップ・キ
ャッシュ(L1キャッシュ)が使用される。それらは、
大型のオフ・チップ・キャッシュ(L2キャッシュ)に
よって拡張されることが多い。
【0009】待ち時間を減少させるのに先立ってメモリ
・データをL1キャッシュに供給しようとするプリフェ
ッチ・テクニックが実施されることが多い。理想的に
は、プロセッサがメモリ・データを必要とする時、その
メモリ・データのコピーがいつもL1キャッシュ内にあ
るよう、プログラムはデータ及び命令を十分に前もって
プリフェッチするであろう。
【0010】問題は、すべての場合において、必要とさ
れるデータ・アドレスを明示的に決定するに十分な先回
り情報を、マイクロプロセッサ・アーキテクチャが与え
てないことである。例えば、メモリにおけるデータ・オ
ペランドに対するアドレス自身はメモリ内にあり、メモ
リ命令によって使用されるべき第1命令によってフェッ
チされなければならない。そのようなシーケンスの場
合、プリフェッチを行うために、プロセッサは前もって
そのアドレスを持っていない。
【0011】命令又はデータのプリフェッチはその分野
ではよく知られている。しかし、既存のプリフェッチ・
テクニックは命令又はデータを早くプリフェッチし過ぎ
ることが多い。プリフェッチしそしてその後そのプリフ
ェッチされた命令又はデータを使用しないという問題
は、第1に、プロセッサが必要とするデータをプリフェ
ッチ・データが変位してしまうことがあること、及び、
第2に、プリフェッチ・メモリ・アクセスはその後のプ
ロセッサ・キャッシュ再ロードがそのプリフェッチ・ア
クセスを待つようにさせ、従って、必要なデータの待ち
時間を増加させることがあることである。これらの影響
は両方ともCPUの効率を低下させる。
【0012】インクレメンタル・メモリ・ロケーション
への持続したアクセスの存在が検出される時、ストリー
ム・バッファはメモリからのデータのプリフェッチを援
助するために利用される。
【0013】問題は、N個のストリームが如何なる時で
もアクティブである(割振り可能である)という有限の
数のストリーム・バッファによって、N個の割振られた
ストリームが尽きる前に新しい潜在的なストリームのス
トリーム割振りがある場合、「スラッシング」状態が存
在し得るし、その新しいストリームは、プリフェッチさ
れたデータが使用される前にアクティブ・ストリームの
1つを変位することができる。従って、データ処理シス
テムにおけるプリフェッチ・ストリームにおいて利用さ
れるストリーム・バッファ内のストリームのスラッシン
グを減少させるためのシステム及び方法に対する要求が
その分野にはある。
【0014】
【発明が解決しようとする課題】本発明の目的は、スト
リームの活動レベルに基づいてストリームの割振り解除
を遅らせ、それによってストリーム・スラッシング状況
が生じるのを防ぐために、ストリーム・フィルタを使用
するシステム及び方法を提供することにある。最近最も
使用されなかった(LRU)ストリームは、潜在的な新
しいストリームが検出された後にだけ割振り解除され
る。
【0015】
【課題を解決するための手段】開示された実施例は、い
つでも4つまでのストリームを割り振ることができるス
トリーム・バッファを実施するためのものである。実施
例に関連したフィルタ・バッファはLRUベースで割り
振られる10個のエントリを有する。
【0016】正規のオペレーションでは、そのフィルタ
によってストリーム・アクセスが検出された時、そのス
トリームに対するフィルタ・エントリがそのフィルタの
最近最も使用された(MRU)位置にセットされる。新
しいラインが関連のストリームにおいてアクセスされる
時、いつも、エントリはMRU位置に戻る。例えば、ア
クティブな4つのストリーム(1、2、3、4)が存在
した場合、及び他のキャッシュ・ミス存在しなかった場
合、その4つのストリームは、いつも、フィルタ・バッ
ファの4つのMRU位置の1つを占めるであろう。その
後のストリーム・アクセスの間にキャッシュ・ミスがあ
った場合、フィルタはそれらに対するエントリも含むで
あろうし、従って、4つのストリームはその4つのMR
U位置以外の位置を時々占めるであろう。10個のエン
トリのフィルタの場合、任意の2つの連続したストリー
ム・アクセスの間のキャッシュ・ミスが9個よりも少な
い限り、ストリームは割り振られたままである。明らか
に、ストリーム・アクセス相互間に10個のキャッシュ
・ミスがあった場合、LRUポリシは10個のフィルタ
・エントリすべてをそのミスしたラインに割り振ること
によってストリーム割振りをエージ・アウト(無効に)
するであろう。4つのストリームが割り振られた場合、
(フィルタは4つのストリーム及び6つの他のフィルタ
・エントリに対して十分なエントリを有するので)7つ
のキャッシュ・ミスが介在する限り、ストリームはフィ
ルタをエージ・オフ(無効に)しないであろう。
【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キャッシュ、
118、120、122が接続される。これらの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.P
alacharla 及びR.Kessler による記事「二次キャッシュ
置換としてのストリーム・バッファの評価(Evaluating
Stream Buffers as a Secondary Cache Replacemen
t)」を参照して欲しい。
【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の種々な部分に設けられ
る。図5に関連して更に説明するシステム・バッファは
ストリーム・アドレス・バッファ及びストリーム・デー
タ・バッファを含んでいる。この実施例では、ストリー
ム・バッファは4つのキャッシュ・ラインをストアする
機能を有するが、任意の数のキャッシュ・ラインがその
ストリーム・バッファにおいて実施可能である。そのス
トリーム・バッファの1つのキャッシュ・ラインがL1
キャッシュ202において実施される。特に、L1キャ
ッシュ202におけるキャッシュ・ラインの1つが、ス
トリーム・バッファのキャッシュ・ラインの1つの機能
に対して利用される。ストリーム・バッファの第2キャ
ッシュ・ラインはPBFR402に設けられる。ストリ
ーム・バッファの他の2つのキャッシュ・ラインは、ノ
ード・コントローラ205におけるPBFR2(40
5)及びPBFR3(406)に設けられる。ノード・
コントローラ205は、バス204に沿ったCPU20
1から下流のチップ上に設けることが可能である。メモ
リ・コントローラ104は、システム100のアーキテ
クチャが利用される場合、これらのストリーム・バッフ
ァ・ラインを含んでもよい。
【0031】上記のIEEEの記事において検討されて
いるように、ストリーム・フィルタ及びストリーム・バ
ッファの基本的なオペレーションは、リクエストされた
キャッシュ・ラインにおいてL1キャッシュ・ミスがあ
る時、そのキャッシュ・ラインのアドレスがインクレメ
ントされ(一般には、1アドレスずつ)、このインクレ
メントされたアドレスがストリーム・フィルタ403に
挿入されることである。L1キャッシュ202における
キャッシュ・ラインのその後のミスの発生時に、このL
1キャッシュ・ミスのアドレスがフィルタ403に含ま
れたアドレスに比較される。アドレスの一致が得られた
場合、キャッシュ・ラインのストリームがそのストリー
ム・バッファ内に割り当てられる。
【0032】上記のように、キャッシュ・ミスがある
時、フィルタ・バッファは次の逐次キャッシュ・ライン
のアドレスを書き込まれる。そのフィルタは、そのよう
な事象の「ヒストリ」より成るそのようなアドレスを保
持し得る多数のロケーションを含む。それらはLRUベ
ースで置換可能である。キャッシュ・ミスがある時はい
つも、フィルタにおけるアドレスがキャッシュ・ライン
・ミスのアドレスと比較される。ヒットがある場合、フ
ィルタ・ヒットが存在すると云われ、ストリームが割り
当てられる。ストリーム・モードでは、エクストラ・キ
ャッシュ・ラインが、ストリームの一部分としてL1キ
ャッシュがそれを必要とすることを期待して、ストリー
ム・バッファにプリフェッチされる。
【0033】図5は、本発明に従ってストリーム・バッ
ファのオペレーションの高レベルの機能的な図を表す。
CPU201は、使用されるアーキテクチャに従って有
効アドレス(EA)を発生する。EAは、潜在的にはオ
フセットを有するプログラム・アドレスである。PCC
404において実施可能な変換回路503は変換アドレ
ス、即ち、EAに対応した実アドレス(RA)を発生す
る。その実アドレスはフィルタ待ち行列502によって
使用されるが、フィルタ待ち行列502がその有効アド
レスを代替えとして使用することは本発明の技術的範囲
内であろう。そのRAはフィルタ待ち行列502におけ
るRAと一斉に比較される。そのエントリがそれの有効
ビット(V)によって表されるように有効である場合、
比較一致はフィルタ・ヒットと呼ばれる。又、フィルタ
待ち行列502は、予測ストリームがインクレメント或
いはデクレメント(+/−1、又はアップ/ダウン)さ
れるべきことを表す各エントリに対する予測方向インデ
ィケータも含む。各フィルタ待ち行列エントリは、その
アドレスに対応するストリームがあるかどうか及び、そ
れが肯定される場合、そのストリームのストリーム番号
を表すフィールドを含む。
【0034】よく知られているように、メモリ209は
サブセクションに論理的に分割されることが多い。特
に、メモリ209は、オペレーティング・システムによ
ってプログラムに割り当てられたメモリのインクレメン
トであるページに分割され、DASD(ダイレクト・ア
クセス記憶装置)とメモリ209の間で「ページング」
データを制御するために使用可能である。ページは順次
的EAに関して非順次的に割り当て可能である。従っ
て、EAがストリーム・データのプリフェッチのために
使用される場合、ページ境界を横切った時に変換器(X
LATE)503においてアドレス変換が行われなけれ
ばならない。それは、そのストリーム・バッファが、前
述のように順次的でない実アドレスを含むためである。
各ページは、更に、ラインに分割される。キャッシュの
実施によってライン・サイズが決定され、それはキャッ
シュ・ラインにおけるメモリ・データの量に対応する。
キャッシュ・ミスの結果、1ラインのデータがキャッシ
ュに転送される。
【0035】フィルタ・ヒットがある時、ストリームが
ストリーム・アドレス待ち行列501に割当可能であ
り、ストリーム・データ・バッファ506への対応する
割当が行われる。ストリーム・アドレス・エントリは、
特定の割当てられたストリームに対する次のデータ・ラ
インの予測有効アドレスを含む。もう一度云えば、これ
は実施上の選択事項であり、代替えとして、実アドレス
を使用してもよかった。ストリーム・アドレス・エント
リは、そのストリームが割当てられることを表す有効ビ
ット(V)も含む。ストリームの状態を追跡するために
使用される状態フィールドもある。又、予測方向のコピ
ーもストリーム・バッファに保持される。比較器505
はプロセッサEAとストリーム・アドレス待ち行列に含
まれたページ及びライン・アドレスとを比較する。一致
が生じた場合、それはストリーム・ヒットと呼ばれる。
【0036】図5に示された機能性は別の方法でも実施
可能であり、それも依然として本発明の技術的範囲内で
ある。
【0037】メモリ209におけるメモリ・スペースは
128個のバイト・ラインに分割可能である。各ライン
は半分に分割可能であるので、1つのラインの偶数番の
半分はアドレス0から63までであり、奇数の半分はア
ドレス64から127までである。前述のように、CP
U201は、メモリにおけるキャッシュ可能なラインに
対する実アドレスに変換される論理的アドレス(EA)
を発生する。メモリは2*Nバイトのページに分割され
る。それらのページはサイズ的にキャッシュ・エントリ
に対応するラインに分割される。キャッシュ・ミスがあ
る度に、関連する実アドレスが分析される。その実アド
レスがラインの偶数の半分にある場合、潜在的ストリー
ムはインクレメント1である。待ち行列502における
LRUフィルタ待ち行列は「アップ」の方向をマークさ
れ、ライン・ミスRAは「1」だけインクレメントされ
てそのエントリに保管される。RAがそのラインの奇数
側にある場合、待ち行列502におけるRAエントリは
1だけデクレメントされ、「ダウン」がそのエントリに
マークされる。
【0038】ミスの場合にフィルタ・エントリにRAを
保管すること及びその後のミスをそのエントリと比較し
てアップ又はダウンの方向を決定することは、別の実施
例として本発明の範囲内である。
【0039】ストリームが割り当てられる時、「次の」
有効ライン・アドレスがストリーム・アドレス・バッフ
ァ501に保管される。バッファ501は各アクティブ
・ストリームに対するエントリを含む。有効ビット
「V」は、そのエントリが使用中であることを表し、方
向インディケータは、そのストリームがアップであるか
又はダウンであるか(+/−)を表す。状態フィールド
は、そのストリームの状態を表すために使用される。ス
トリーム・アドレス・バッファ501と関連してストリ
ーム・データ・バッファ506があり、それは、プリフ
ェッチされたデータのラインを保持する。フィルタ待ち
行列502及びストリーム・バッファ501の両方の予
測アドレスとも、ページ境界が遭遇する時に終了する。
これは、そのような事象が新しい変換を必要とするため
である。
【0040】L1キャッシュ202及びL2キャッシュ
203のキャッシュ・ミスがある場合、メモリ209を
アクセスする前にストリーム・バッファが調べられる。
フィルタ待ち行列502及びストリーム・アドレス・バ
ッファ501の回路を結合することは本発明の明らかな
実施例である。
【0041】前述のストリーム・フィルタ及びストリー
ム・バッファに関する及び前述のIEEEの記事におけ
る従来方法はL2キャッシュの代替えとしてストリーム
・バッファの効果を分析している。この場合、プリフェ
ッチはいつもインクレメント的なものとして予測され
る。更に、1つのライン或いはワードではなく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に留まる。
そのフィルタ置換アルゴリズムは、以下で教示するとこ
ろに従って遂行可能である。しかし、L1キャッシュ2
02内のキャッシュ・ラインA+1においてミスがある
場合、フィルタ・ヒットが存在し(ステップ637)、
プロセスをステップ612へ進めさせる。そこでは、リ
クエストされたキャッシュ・ラインA+1のアドレスが
フィルタ403にあるアドレスA+1と一致した結果フ
ィルタ403においてヒットが生じるので、キャッシュ
A+2でもって始まるキャッシュ・ラインのストリーム
が割り当てられる。次に、ステップ613において、キ
ャッシュ・ラインA+1がL2キャッシュ203又はメ
モリ209からL1キャッシュ202にフェッチされ
る。又、L1キャッシュ202は、キャッシュ・ライン
A+2が存在するかどうかを決定するためにチェックさ
れる。それが存在しない場合、キャッシュ・ラインA+
2がL2キャッシュ203又はメモリ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に存在す
るかどうかの決定が行われる。それが存在する場合、プ
ロセスはステップ627へ進行するであろう。その実施
は、ノード・コントローラ205がすべてのストリーム
・バッファ・アクセスを通知されることを必要とするで
あろう。次のストリーム・バッファ・ラインがL2キャ
ッシュ203内になく、従って、フェッチされることを
必要とする場合の通知にその通知を限定することはノー
ド・コントローラ・バッファ405及び406をプロセ
ッサ201との同期から一時的に外させるであろう。こ
の設計トレード・オフの利点は、ステップ626及び6
27が結合され、ノード・コントローラ205に対する
アドレス・バス・トラフィックを減少させることができ
ることである。カバーされる主要なケースでは、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をバッファ40
6(PBFR3)にプリフェッチするであろう。
【0055】ステップ628及び629の間の点線は、
キャッシュ・ラインA+4に対するCPU201からの
リクエストがステップ628に続いて直ちに生じないこ
とがあることを表す。
【0056】ステップ629において、L1キャッシュ
202は、CPU201によってリクエストされたキャ
ッシュ・ラインA+4に関してアクセスされる。キャッ
シュ・ラインA+4はステップ624においてL1キャ
ッシュ202に挿入されたので、キャッシュ・ラインA
+4はCPU201へ戻されるであろう。ステップ63
0において、ストリーム・アドレスがインクレメントさ
れてアドレス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内にストリーム・バ
ッファ・ラインの1つを有する利点は、L1キャッシュ
202におけるそのバッファ・ラインに含まれる特定の
キャッシュ・ラインがプロセッサ201によってリクエ
ストされる時、L1キャッシュ202においてヒットが
生じ、ミスは生じない。一般に、ミスは、たとえリクエ
ストされたキャッシュ・ラインがL1キャッシュ202
に接続された別のバッファに含まれるものであっても生
じるであろう。そのようなミスのため、そのキャッシュ
・ラインをストリーム・バッファからCPU201へ検
索するためには余分なハードウエアが必要であろう。ス
トリーム・バッファ・キャッシュ・ラインの1つとして
作用するL1キャッシュ202は、論理的には、プリフ
ェッチ・ストリーム・バッファに含まれるといえる。
【0063】L1キャッシュ202及びL2キャッシュ
203に関する組込みを維持する場合、キャッシュ・ラ
インが上記の手順におけるバッファ402からL1キャ
ッシュ202へ移動する時、同じキャッシュ・ラインが
L2キャッシュ203にも含まれるであろう。
【0064】伝統的な実施方法では、L2キャッシュは
L1キャッシュにおけるデータのスーパセットを含んで
いる。この「包含(inclusion)」アルゴリズムはデータ
処理システムにおけるコヒーレンシを確保するための手
段を与える。本質的には、包含は、L1キャッシュにあ
るすべてにキャッシュ・ラインがL2キャッシュに存在
することを意味する。L1キャッシュは、例えば、L1
キャッシュにおけるデータの如何なる修正もL2キャッ
シュにおいてミラーされるようなライトバックを遂行す
ることができる。キャッシュ・ラインがL1キャッシュ
から除去される時、そのデータはL2キャッシュにも存
在するので、それは廃棄可能である。
【0065】L2キャッシュ203は直接マップ可能で
あり、それは、メモリにおけるすべてのラインがL2キ
ャッシュ203における唯一のロケーションに存在する
ことが可能であることを意味する。逆に、連想キャッシ
ュは、特定のキャッシュ・ラインが同時に存在し得る幾
つかのロケーションを有する。例えば、そのような構造
に対して、0で終わる(即ち、0でもって連結された)
アドレスを持ったすべてのキャッシュ・ラインがL2キ
ャッシュ203では0スロットにおいて終わるであろ
う。1で終わるすべてのキャッシュラインは1スロット
において終わるであろうし、15で終わるすべてのキャ
ッシュ・ラインは15スロットにおいて終わるであろ
う。
【0066】逆に、L1キャッシュ202はセット・ア
ソシアティブである。従って、キャッシュ・ラインはL
1キャッシュにおける多数の場所において現れることが
起こり得る。その結果、例えば、L1キャッシュ202
は、15で終わるXYZライン及び15で終わるABC
ラインを同時に有することが起こり得る。そのような例
は、「包含」がL1キャッシュ202及びL2キャッシ
ュ203に間に維持されない場合に生じることがある。
しかし、システム200がそれらのキャッシュの間に
「包含」を維持しようとする場合、CPU201がXY
ZをロードしたいがそれがABCラインも含んでいる場
合、L2キャッシュ203は、たとえL1キャッシュ2
02がそれをロードすべき多数の場所を持っていても、
それを置くべき1つの場所しか持たないので、それがX
YZをロードする前にCPU201にABCラインを投
棄させるであろう。例えば、図6乃至図9に関して示さ
れたアルゴリズムに従って、キャッシュ・ラインXYZ
15がバッファ402内にあり、CPU201がL1キ
ャッシュ202内に存在するXYZ14においてヒット
を得るものと仮定する。その流れ図によれば、バッファ
402におけるXYZ15はL1キャッシュ202にプ
リフェッチされるであろう。「包含」が維持される場
合、XYZ15はL2キャッシュ203にもロードされ
るであろう。L2キャッシュ203がABC15も含む
場合、後述のプリフェッチ・オペレーションがL1キャ
ッシュ202におけるキャッシュ・ラインをスラッシュ
或いはキック・アウトさせるであろう。
【0067】XYZ15をL1キャッシュ202にプリ
フェッチするためにL1キャッシュ202におけるライ
ンが廃棄させられるのみならず、L2キャッシュ203
におけるABC15もXYZ15の包含(L2キャッシ
ュ203が直接マップされることを想起して欲しい)の
ためにキック・アウトされるであろうし、L1キャッシ
ュ202におけるキャッシュ・ラインはキャッシュ・ラ
インABCも含む可能性がある。XYZ15の包含のた
めにABC15がL2キャッシュ203から廃棄される
場合、キャッシュ・ラインABC15もL1キャッシュ
202から廃棄されなければならないであろう。
【0068】上記のシナリオは、ランダム・データ及び
ストリーム・データの両方を使用するアプリケーション
・プログラムにおけるように、CPU201がランダム
・データを使用しようとする時の問題である。このラン
ダム・データはL2キャッシュ203内に置かれるであ
ろう。しかし、上記のシナリオの場合、及びデータ包含
の場合、XYZ15がL1キャッシュ202にプリフェ
ッチされる時、それはL2キャッシュ203におけるキ
ャッシュ・ラインにも含まれるであろう。そのキャッシ
ュ・ラインはL2キャッシュ203におけるそのロケー
ションに既に存在しているデータを変位するであろう。
このデータがCPU201によって処理されているラン
ダム・データの一部分であった場合、CPU201がそ
の特定のデータ片の使用を必要とする次の時に、それは
メモリ209からそれをリクエストしなければならない
であろう。その結果、前述のように、かなりのメモリ待
ち時間問題を生じるであろう。
【0069】その他の或オペレーションでは、データの
ストリングが、それらの修正の意図なしにCPU201
へ読み込まれることがある。1つの例は、そのストリン
グが特定のレコードの発生のために読み取られるデータ
ベース・アプリケーション・サーチであろう。そのよう
なレコードに遭遇する時、それはそこに書き込まれても
よく、書き込まれなくてもよい。これらのケースでは、
読み取られるデータはL2キャッシュ203においては
必要とされず、実際に、L2キャッシュ203へのデー
タの書込は除去による更なるバス輻輳を生じさせるであ
ろう。L2キャッシュ203における必要なデータを一
時的読み取り専用データでもって変位させることによっ
て、パフォーマンスは衝撃を受けるであろう。
【0070】ブラスト・モードでは、図6乃至図9に関
して上述したように、プリフェッチ・データはL1キャ
ッシュ202に書き込まれ、L2キャッシュ203には
書き込まれない。これは、L2キャッシュ203に含ま
れてないラインをL1キャッシュ202において作成す
る。ディレクトリ・ベースのシステムでは、未修整のラ
インがキャッシュ・コントローラ411において廃棄さ
れる(割振り解除される)時、その割振り解除はシステ
ム・メモリのためのディレクトリに信号されなければな
らない。それは、どのプロセッサがどのラインを持つか
を追跡する。従って、L1キャッシュ・コントローラ4
11がL2キャッシュ203に含まれてない未修整のラ
インを割振り解除した時、この事象はメモリ・ディレク
トリに信号されなければならない。上記の実施例では、
この事象を信号することは、CPU201からメモリ2
09のディレクトリに送られた「リセット包含」コマン
ドを介するものである。
【0071】次に、図10を参照すると、新しいキャッ
シュ・ラインがL1キャッシュ202にロードされ、L
2キャッシュ203にはロードされない(排他)時の流
れ図が示される。プロセスはステップ700で始まり、
そこでは、L1キャッシュ202からのリクエストされ
たキャッシュ・ラインに関してミスが生じている。この
ミスは通常の要求ミスか或いは図6乃至図9に示された
プリフェッチ・リクエストである。しかる後、ステップ
701において、ブラスト・モードがイネーブルされて
いるかどうかの決定が行われる。それが否定される場
合、プロセスはステップ705に進み、プリフェッチが
リクエストされたかどうかを決定する。それが否定され
る場合、プロセスはステップ701に戻る。しかし、ス
テップ705において、プリフェッチがリクエストされ
た場合、プロセスはステップ706に進み、フェッチさ
れるべき所望のラインがL2キャッシュ203に存在す
るかどうかを決定する。それが否定される場合、ステッ
プ708において、リクエストされたキャッシュ・ライ
ンがメモリ209から又はストリーム・バッファ40
2、405、又は406の1つからL1キャッシュ20
2及びL2キャッシュ203にプリフェッチされる。
【0072】更に、排他タグ(1つ又は複数のビット)
がL1キャッシュ・ディレクトリ410においてリセッ
トされる。ディレクトリ410はキャッシュ・ディレク
トリの典型的な機能を遂行する。この場合、プリフェッ
チされたキャッシュ・ラインと関連したディレクトリ・
フィールドにおけるエントリは、そのプリフェッチされ
たキャッシュ・ラインがL1キャッシュ202及びL2
キャッシュ203の両方に存在することをその排他タグ
・ビットが表すようにリセットされる。後述するよう
に、L1キャッシュ・コントローラ411における制御
ロジックは、キャッシュ・ラインを割振り解除する時に
この排他タグをモニタするように図11の流れ図に従っ
て修正される。
【0073】プリフェッチされるべきラインがL2キャ
ッシュ203に存在する場合、プロセスはステップ70
4に進み、L2キャッシュ203からL1キャッシュ2
02にそのキャッシュ・ラインをプリフェッチする。ス
テップ700、704、705、706、707、及び
708に関して説明した上記手順は、本質的に、要約さ
れた形式で図6乃至図9に示されたステップ601乃至
621に対応する。ステップ704及び708はステッ
プ607、613、618、及び619に対応する。
【0074】ステップ701において、ブラスト・モー
ドがイネーブルされた場合、プロセスはステップ702
に進み、ブラスト・モードにおけるプリフェッチがイネ
ーブルされたかどうかを決定する。しかし、ブラスト・
モードにおけるプリフェッチが開始された場合、プロセ
スはステップ703に進み、プリフェッチされるべきラ
インがL2キャッシュ203に存在するかどうかを決定
する。それが肯定される場合、プロセスはステップ70
4に進み、そのラインをL2キャッシュ203からL1
キャッシュ202にプリフェッチする。更に、L1ディ
レクトリ410における排他タグがステップ708に関
連して上述したようにリセットされる。
【0075】そのキャッシュ・ラインがL2キャッシュ
203において存在しない場合、プロセスはステップ7
07に進み、メモリ209から又はバッファ402、4
05、406の1つからL1キャッシュ202にそのキ
ャッシュ・ラインをプリフェッチする。更に、上記の排
他タグはL1ディレクトリ410においてセットされ、
メモリ209又はストリーム・バッファの1つからプリ
フェッチされたキャッシュ・ラインの1つがL1キャッ
シュ202に存在し、L2キャッシュ203に存在しな
いことを表す。
【0076】図10の流れ図によって示されるように、
ブラスト・モードがイネーブルされなかった時、「包
含」が維持される。一方、「包含」が維持されてないブ
ラスト・モードでは、ステップ707においてプリフェ
ッチがL1キャッシュ202に対して生じるだけであ
る。
【0077】次に、図10を参照すると、「包含」がL
1キャッシュ202及びL2キャッシュ203の間で維
持されてない時(ブラスト・モードがイネーブルされて
いる時)のキャッシュ・ラインの割振り解除の流れ図が
示される。プロセスはステップ801において開始し、
ステップ802に進む。そこでは、そのキャッシュ・ラ
インが割振り解除されるべきかどうかの決定が行われ
る。それが否定される場合、特定のキャッシュ・ライン
を割振り解除する決定が行われるまでプロセスはループ
する。プロセスはステップ803に進み、そこでは、割
振り解除されるべきキャッシュ・ラインが修正されたか
どうかの決定が行われる。それが否定される場合、その
割振り解除されべきキャッシュ・ラインがL2キャッシ
ュ203にも存在するかどうかの決定が行われる。この
決定は、コントローラ411がディレクトリ410にお
いて排他タグをモニタすることによって行うことが可能
である。
【0078】キャッシュ・ラインがL2キャッシュ20
3にも存在しないことを表す排他タグがこのキャッシュ
・ラインに関してセットされた場合、プロセスはステッ
プ809に進む。そこでは、システム200は「リセッ
ト包含」信号を信号され、割り振られるべきキャッシュ
・ラインに対応するアドレスがシステム200を通して
バス204によって送られ、そのキャッシュラインは割
振り解除される。
【0079】ステップ808において、キャッシュ・ラ
インがL2キャッシュ203に存在するという決定が行
われる(即ち、排他タグがセットされなかった)場合、
プロセスはステップ810に進み、「包含」に後続する
時の従来の方法でキャッシュ・ラインを割振り解除す
る。
【0080】ステップ803において、CPUによって
割振り解除されるべきキャッシュ・ラインが修正された
ことが決定される場合、プロセスはステップ804に進
み、そのキャッシュ・ラインがL2キャッシュ203に
存在するかどうかを決定する。上記のように、これは、
ディレクトリ410における排他タグがセットされたか
どうかをコントローラ411が決定することによって達
成可能である。排他タグがセットされなかった場合、ス
テップ806において、そのキャッシュ・ラインはL1
キャッシュ202からL2キャッシュ203に書き込ま
れる。それは、システム200におけるデータ・コヒー
レンシに原因がある。
【0081】ステップ804におけるキャッシュ・ライ
ンがL2キャッシュ203に存在しない(即ち、排他タ
グがこのキャッシュ・ラインに関してセットされた)場
合、プロセスはステップ805に進み、そのキャッシュ
・ラインをメモリ209に書き込む。
【0082】上記のように、ストリーム・フィルタ・エ
ントリ及びストリーム・アドレス・バッファ・エントリ
(及び対応するストリーム・データ・バッファ・エント
リ)の割振りを管理するためにフィルタ置換アルゴリズ
ムが実施される。図6乃至図9に関する上記の説明に従
って、フィルタ・ヒットの発生(ステップ637)時に
ストリームが割振り可能である(ステップ612)。そ
のようなストリームの割振り時に、ストリーム・アドレ
ス・バッファに既に存在するストリームはスラッシュ
(置換)されるであろう。更に、ストリーム・エントリ
の新しいセット全体が種々のプリフェッチ・バッファに
プリフェッチされるであろう。
【0083】図6乃至図9の説明において、CPU20
1がプリフェッチ・バッファに存在するストリーム・デ
ータに対するリクエスト相互間で非ストリーム・データ
をリクエストし得る可能性に関するいくつかの検討事項
がある。問題は、そのようなリクエストの結果、ストリ
ーム・アドレス・バッファにおける新しいストリームの
割振りを生じ、CPU201によってアクセスされてい
る既存のストリームを置換する。既存のストリームは繰
り返しアクセスされる「非常に良好な」ストリームであ
ることが多く、新たに割り振られたストリームは非常に
頻繁にはアクセスされないで終わることが多いので、こ
れは効率的ではない。従って、本発明の最終目的は、ス
トリーム・バッファからのストリームを、それが最近ア
クセスされてなく且つ新しいストリームが検出された時
にだけ割り振ることによって、プロセッサのパフォーマ
ンスを増大させることである。
【0084】以下の説明は下記の表に関連するものであ
る。「相対的時間」は、時間0で始まりそして左から右
へ時間17まで進行する。従って、各列はその列の最上
部に示される相対的時間に対応する。「キャッシュ・ミ
ス・シーケンス」は例示的シーケンスであり、本質的に
は、表示されたキャッシュ・ラインに関してL1キャッ
シュ・ミスがあるステップ601及び602に対応す
る。上記のように、「ストリーム・アドレス・バッフ
ァ」は4つのストリームに対する容量を有する。しか
し、本発明では、任意の数のストリームが実施可能であ
る。「ストリーム・フィルタ」は10個のエントリに対
する容量を有する。しかし、本発明では、任意の数のエ
ントリが実施可能である。
【0085】開示された発明の実施例は、いつでも4つ
までのストリームを割り振ることができるストリーム・
バッファを実現するためのものである。その実施例に関
連したフィルタ・バッファは、LRUに基づいて割り振
られた10個のエントリを有する。
【0086】通常のオペレーションでは、ストリーム・
アクセスがフィルタによって検出された時、そのストリ
ームに対するフィルタ・エントリはそのフィルタのMR
U位置にセットされる。新しいラインがその関連のスト
リームにおいてアクセスされる度に、そのエントリはM
RU位置に戻る。例えば、4つのアクティブなストリー
ム(1、2、3、4)があった場合、及び他のキャッシ
ュ・ミスがなかった場合、それらの4つのストリームは
いつもフィルタ・バッファの4つのMRU位置の1つを
占めるであろう。その後のストリーム・アクセス相互間
でキャッシュ・ミスがあった場合、フィルタはそれらに
対するエントリも含み、従って、4つのストリームは、
時々、4つのMRU位置以外の位置を占めるであろう。
10個のエントリのフィルタの場合、2つの連続したス
トリーム・アクセスの10個より少ないキャッシュ・ミ
スのインスタンスがある限り、ストリームはフィルタ内
に割り振られたままであろう。LRU法は、10個のフ
ィルタ・エントリすべてをそのミスしたラインに割り振
ることによってストリーム・フィルタ・エントリをエー
ジ・アウトするであろう。4つのストリームが割り振ら
れた場合、ストリーム・フィルタ・エントリは、7つの
介在キャッシュ・ミスがあるまでフィルタをエージ・オ
フしないであろう(それは、そのフィルタが4つのスト
リームに対する十分なエントリ及び6つの他のフィルタ
・エントリを有するためである)。
【0087】下記の表を参照すると、一連のキャッシュ
・アクセスを通して進行するストリーム・バッファ及び
フィルタの状態が示される。その例は一連のキャッシュ
・ミス・ラインを示す。思惑的にロードされたラインが
第1時間(第1ヒット)に対してアクセスされる時、ス
トリーム・バッファにおいてデータ・プリフェッチ・モ
ード又はブラスト・モードにあるラインがフィルタのM
RU位置まで移動することを理解してほしい。
【表1】
【0088】その例では、開始時(相対時間0)におい
て4つのアクティブなストリーム(A,B,C,D)が
あり、それらはストリーム・アドレス・バッファに含ま
れる。最後の10個のL1ミスが、位置1における最も
最近のエントリと共にストリーム・フィルタ内容によっ
て示される。そのストリーム・フィルタにおける「N」
個のエントリはここでは重要でないミスを示す。
【0089】相対時間1では、ストリームAに対するL
1へのもう1つのライン・ロードがある。その結果生じ
るストリーム・フィルタの内容がこの列に示される。A
が最も最近のミスであるので、Aエントリが位置1まで
移動し、位置8におけるAエントリを置換する。別の方
法では、エントリ8は無効にされるが、フィルタからは
除去されない。
【0090】ミス・シーケンスは、ストリーム割振りを
トリガする新しいストリームを示すX1、X2によって
処理される。相対時間7において、X4ミスによって、
Dに対するストリーム・エントリがそのフィルタから除
去される。しかし、この時点で、ストリームDは依然と
してストリーム・アドレス・バッファにおいて有効であ
り、従って、このストリームに対するアクセスは依然と
して検出されるであろうし、そのストリームはプリフェ
ッチされ続けるであろう。その例では、相対時間8にお
いて、ストリームDは再びアクセスされ、Dをストリー
ム・フィルタに戻す。
【0091】相対時間13において、ストリームX5に
対する第2のミスが生じる。この時点で、ストリームB
は最早ストリーム・フィルタにはないので、X5がスト
リーム・アドレス・バッファ2に割り当てられる。相対
時間14において、ストリームX2に対する第2のミス
が生じる。4つのアクティブなストリーム(A,X5,
C,D)がストリーム・フィルタに含まれるので、X2
はストリームとして割振りされない。更に、他のX2エ
ントリ(幾つかある)は、それがエージ・アウトされる
までストリーム・フィルタに残る。同様に、相対時間1
5において、そのフィルタにおける他のX3エントリが
行われる。
【0092】相対時間17において、ストリームX6が
割り振られるが、X6に対するフィルタ・ヒットがない
時、ストリームCは最早そのフィルタにはない。
【0093】この機構を使用することは、アプリケーシ
ョンにおいて4つより多くのデータ・ストリームが存在
する場合、ストリーム・アドレス・バッファが4つのア
クティブ・ストリームを保持することを可能にする。こ
の機構がない場合、4つよりも多くのアクティブ・スト
リームは連続的に新しいストリーム割振りを生じさせ、
データは廃棄のためにのみプリフェッチ・バッファに読
み込まれる。その結果、プロセッサ・パフォーマンスは
低下するであろう。
【0094】本発明の別の実施例は、割り振られたスト
リームに対するフィルタ・エントリを使用しないでスト
リームが割振り解除されるべきことを決定するために、
ストリーム・ヒット相互間の所定数のキャッシュ・ライ
ン・アクセスをカウントするカウンタを提供するための
ものである。そのようなカウンタは、特定のキャッシュ
・ラインに対するキャッシュ・ミス及びヒットをカウン
トするようにPCC404において実施可能である。本
発明の技術的範囲内おける他の機構も、同様に、当業者
によって考え得ることである。
【0095】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0096】(1)メイン・メモリからメモリ・サブシ
ステムにデータをプリフェッチするように動作可能な装
置にして、前記メモリ・サブシステムは前記メイン・メ
モリに結合されたプロセッサと関連付けられるものにお
いて、X個(Xは正の整数)のストリームを含むように
動作可能なストリーム・バッファと、所定数の潜在的な
新しいストリームが検出された後、前記X個のストリー
ムの1つを割振り解除するように動作可能な手段と、を
含む装置。 (2)前記所定数の後、前記ストリーム・バッファに新
しいストリームを割り振るように動作可能な手段を含
み、前記新しいストリームは前記X個(Xは前記ストリ
ーム・バッファにおけるストリームの最大数)のストリ
ームの1つを置換することを特徴とする上記(1)に記
載の装置。 (3)前記メモリ・サブシステムは前記プロセッサと関
連したキャッシュであることを特徴とする上記(1)に
記載の装置。 (4)前記X個のストリームの1つは前記新しいストリ
ームが割り振られるまで前記ストリーム・バッファに残
ることを特徴とする上記(2)に記載の装置。 (5)前記割振り解除するように動作可能な手段はY個
(Yは正の整数)のエントリを含むように動作可能なス
トリーム・フィルタを含むこと、前記Y個のエントリは
LRUに基づいてベースで割り振られること、前記Y個
のエントリはメモリ・サブシステム・ミスに対応するこ
と、及び前記所定数の後に前記ストリーム・フィルタか
らエントリがエージ・アウトされること、を特徴とする
上記(1)に記載の装置。 (6)前記割振り解除するように動作可能な手段は前記
所定数をカウントするための手段を有することを特徴と
する上記(1)に記載の装置。 (7)前記Y個のエントリのうちの2つは同じものであ
ることを特徴とする上記(5)に記載の装置。 (8)前記所定数はYに等しいことを特徴とする上記
(5)に記載の装置。 (9)前記新しいストリームに対してメモリ・サブシス
テムがアクセスする前に前記X個のストリームの1つに
対するメモリ・サブシステム・アクセスがある時、前記
X個のストリームの1つを再割り振りするように動作可
能な手段を含むことを特徴とする上記(5)に記載の装
置。 (10)メイン・メモリから、バスによって前記メイン
・メモリに接続されたプロセッサと関連したキャッシュ
にデータをプリフェッチするためのシステムにして、X
個のストリームを割り振るためのストリーム・バッファ
と、それぞれがキャッシュ・ミスを表すY個のエントリ
を有するストリーム・フィルタであって、前記X及びY
は正の整数であり、前記X個のストリームの各々は前記
Y個のエントリのうちの少なくとも1つによって表され
るものと、前記ストリームを表す前記Y個のエントリの
うちの少なくとも1つのすべてが前記ストリーム・フィ
ルタから割振り解除されてしまうまで前記ストリーム・
バッファにおいてストリームを維持するための手段と、
を含むシステム。 (11)前記ストリームを表す前記Y個のエントリのう
ちの少なくとも1つのすべてが前記ストリーム・フィル
タから割振り解除された後、前記ストリーム・バッファ
において新しいストリームを、前記新しいストリームに
対応したデータのキャッシュ・ミスに応答して割り振る
ための手段を含むことを特徴とする上記(10)に記載
のシステム。 (12)前記ストリームに対応するキャッシュ・ミスが
生じる時、前記ストリームを表す前記Y個のエントリの
少なくとも1つのすべてが前記ストリーム・フィルタか
ら割振り解除された後、前記ストリーム・バッファにお
けるストリームを再割振りするための手段を含むことを
特徴とする上記(10)に記載のシステム。 (13)前記Y個のエントリはLRUに基づいて前記ス
トリーム・フィルタから割振り解除されることを特徴と
する上記(10)に記載のシステム。 (14)前記ストリームは前記新しいストリームが前記
ストリーム・バッファにおいて割り振られるまで前記ス
トリーム・バッファに残ることを特徴とする上記(1
1)に記載のシステム。 (15)データ処理システムにおいてバスによりプロセ
ッサに接続されたメイン・メモリから、前記プロセッサ
に接続されたL1キャッシュにキャッシュ・ラインをプ
リフェッチするための方法にして、前記プリフェッチす
ることはストリーム・バッファ及びストリーム・フィル
タを増大し、前記ストリーム・バッファはアドレス・バ
ッファ及びデータ・バッファを含み、前記ストリーム・
バッファは1つ又は複数のアクティブ・ストリームを保
持し、前記ストリーム・フィルタは前記1つ又は複数の
アクティブ・ストリームに対応した1つ又は複数のエン
トリを含むものにおいて、一連のL1キャッシュ・ミス
をモニタするステップと、前記L1キャッシュ・ミスに
応答してLRUに基づき前記ストリーム・フィルタにお
けるエントリを置換するステップと、前記1つ又は複数
のアクティブ・ストリームに対応した前記1つ又は複数
のエントリのすべてが前記置換するステップによって置
換されるまで、前記ストリーム・バッファにおける前記
1つ又は複数のアクティブ・ストリームの1つを維持す
るステップと、を含む方法。 (16)前記1つ又は複数のアクティブ・ストリームの
1つに対応した前記1つ又は複数のエントリのすべてが
前記置換するステップによって置換された後、前記スト
リーム・バッファにおける新しいアクティブ・ストリー
ムを、前記新しいアクティブ・ストリームに対応したデ
ータのキャッシュ・ミスに応答して割り振るステップを
含むことを特徴とする上記(15)に記載の方法。 (17)前記1つ又は複数のアクティブ・ストリームの
1つに対応したキャッシュ・ミスが生じた時、前記1つ
又は複数のアクティブ・ストリームの1つに対応した前
記1つ又は複数のエントリのすべてが前記置換するステ
ップによって置換された後、前記ストリーム・バッファ
における前記1つ又は複数のアクティブ・ストリームの
1つを再割振りするステップを含むことを特徴とする上
記(15)に記載の方法。 (18)前記新しいアクティブ・ストリームが前記スト
リーム・バッファにおいて割り振られるまで、前記1つ
又は複数のアクティブ・ストリームの1つが前記ストリ
ーム・バッファに残ることを特徴とする上記(16)に
記載の方法。
【図面の簡単な説明】
【図1】本発明に従って構成可能なマルチプロセッサ・
システムを示す。
【図2】本発明に従って構成可能なデータ処理システム
を示す。
【図3】ストリーム・フィルタ及びストリーム・バッフ
ァを示す。
【図4】図2に示されたシステムの更に詳細な図を示
す。
【図5】本発明に従って機能的な図を示す。
【図6】本発明の流れ図の一部分を示す。
【図7】本発明の流れ図の一部分を示す。
【図8】本発明の流れ図の一部分を示す。
【図9】本発明の流れ図の一部分を示す。
【図10】L1キャッシュへのキャッシュ・ラインのプ
リフェッチ及びそのプリフェッチされたキャッシュ・ラ
インと関連したディレクトリ・フィールドにおけるタグ
・ビットの設定の流れ図を示す。
【図11】図10の流れ図と関連してプリフェッチされ
たプリフェッチ・キャッシュ・ラインの割振り解除を示
す。

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】メイン・メモリからメモリ・サブシステム
    にデータをプリフェッチするように動作可能な装置にし
    て、前記メモリ・サブシステムは前記メイン・メモリに
    結合されたプロセッサと関連付けられるものにおいて、 X個(Xは正の整数)のストリームを含むように動作可
    能なストリーム・バッファと、 所定数の潜在的な新しいストリームが検出された後、前
    記X個のストリームの1つを割振り解除するように動作
    可能な手段と、 を含む装置。
  2. 【請求項2】前記所定数の後、前記ストリーム・バッフ
    ァに新しいストリームを割り振るように動作可能な手段
    を含み、 前記新しいストリームは前記X個(Xは前記ストリーム
    ・バッファにおけるストリームの最大数)のストリーム
    の1つを置換することを特徴とする請求項1に記載の装
    置。
  3. 【請求項3】前記メモリ・サブシステムは前記プロセッ
    サと関連したキャッシュであることを特徴とする請求項
    1に記載の装置。
  4. 【請求項4】前記X個のストリームの1つは前記新しい
    ストリームが割り振られるまで前記ストリーム・バッフ
    ァに残ることを特徴とする請求項2に記載の装置。
  5. 【請求項5】前記割振り解除するように動作可能な手段
    はY個(Yは正の整数)のエントリを含むように動作可
    能なストリーム・フィルタを含むこと、 前記Y個のエントリはLRUに基づいてベースで割り振
    られること、 前記Y個のエントリはメモリ・サブシステム・ミスに対
    応すること、及び前記所定数の後に前記ストリーム・フ
    ィルタからエントリがエージ・アウトされること、 を特徴とする請求項1に記載の装置。
  6. 【請求項6】前記割振り解除するように動作可能な手段
    は前記所定数をカウントするための手段を有することを
    特徴とする請求項1に記載の装置。
  7. 【請求項7】前記Y個のエントリのうちの2つは同じも
    のであることを特徴とする請求項5に記載の装置。
  8. 【請求項8】前記所定数はYに等しいことを特徴とする
    請求項5に記載の装置。
  9. 【請求項9】前記新しいストリームに対してメモリ・サ
    ブシステムがアクセスする前に前記X個のストリームの
    1つに対するメモリ・サブシステム・アクセスがある
    時、前記X個のストリームの1つを再割り振りするよう
    に動作可能な手段を含むことを特徴とする請求項5に記
    載の装置。
  10. 【請求項10】メイン・メモリから、バスによって前記
    メイン・メモリに接続されたプロセッサと関連したキャ
    ッシュにデータをプリフェッチするためのシステムにし
    て、 X個のストリームを割り振るためのストリーム・バッフ
    ァと、 それぞれがキャッシュ・ミスを表すY個のエントリを有
    するストリーム・フィルタであって、前記X及びYは正
    の整数であり、前記X個のストリームの各々は前記Y個
    のエントリのうちの少なくとも1つによって表されるも
    のと、 前記ストリームを表す前記Y個のエントリのうちの少な
    くとも1つのすべてが前記ストリーム・フィルタから割
    振り解除されてしまうまで前記ストリーム・バッファに
    おいてストリームを維持するための手段と、 を含むシステム。
  11. 【請求項11】前記ストリームを表す前記Y個のエント
    リのうちの少なくとも1つのすべてが前記ストリーム・
    フィルタから割振り解除された後、前記ストリーム・バ
    ッファにおいて新しいストリームを、前記新しいストリ
    ームに対応したデータのキャッシュ・ミスに応答して割
    り振るための手段を含むことを特徴とする請求項10に
    記載のシステム。
  12. 【請求項12】前記ストリームに対応するキャッシュ・
    ミスが生じる時、前記ストリームを表す前記Y個のエン
    トリの少なくとも1つのすべてが前記ストリーム・フィ
    ルタから割振り解除された後、前記ストリーム・バッフ
    ァにおけるストリームを再割振りするための手段を含む
    ことを特徴とする請求項10に記載のシステム。
  13. 【請求項13】前記Y個のエントリはLRUに基づいて
    前記ストリーム・フィルタから割振り解除されることを
    特徴とする請求項10に記載のシステム。
  14. 【請求項14】前記ストリームは前記新しいストリーム
    が前記ストリーム・バッファにおいて割り振られるまで
    前記ストリーム・バッファに残ることを特徴とする請求
    項11に記載のシステム。
  15. 【請求項15】データ処理システムにおいてバスにより
    プロセッサに接続されたメイン・メモリから、前記プロ
    セッサに接続されたL1キャッシュにキャッシュ・ライ
    ンをプリフェッチするための方法にして、前記プリフェ
    ッチすることはストリーム・バッファ及びストリーム・
    フィルタの利用を増大し、前記ストリーム・バッファは
    アドレス・バッファ及びデータ・バッファを含み、前記
    ストリーム・バッファは1つ又は複数のアクティブ・ス
    トリームを保持し、前記ストリーム・フィルタは前記1
    つ又は複数のアクティブ・ストリームに対応した1つ又
    は複数のエントリを含むものにおいて、 一連のL1キャッシュ・ミスをモニタするステップと、 前記L1キャッシュ・ミスに応答してLRUに基づき前
    記ストリーム・フィルタにおけるエントリを置換するス
    テップと、 前記1つ又は複数のアクティブ・ストリームに対応した
    前記1つ又は複数のエントリのすべてが前記置換するス
    テップによって置換されるまで、前記ストリーム・バッ
    ファにおける前記1つ又は複数のアクティブ・ストリー
    ムの1つを維持するステップと、 を含む方法。
  16. 【請求項16】前記1つ又は複数のアクティブ・ストリ
    ームの1つに対応した前記1つ又は複数のエントリのす
    べてが前記置換するステップによって置換された後、前
    記ストリーム・バッファにおける新しいアクティブ・ス
    トリームを、前記新しいアクティブ・ストリームに対応
    したデータのキャッシュ・ミスに応答して割り振るステ
    ップを含むことを特徴とする請求項15に記載の方法。
  17. 【請求項17】前記1つ又は複数のアクティブ・ストリ
    ームの1つに対応したキャッシュ・ミスが生じた時、前
    記1つ又は複数のアクティブ・ストリームの1つに対応
    した前記1つ又は複数のエントリのすべてが前記置換す
    るステップによって置換された後、前記ストリーム・バ
    ッファにおける前記1つ又は複数のアクティブ・ストリ
    ームの1つを再割振りするステップを含むことを特徴と
    する請求項15に記載の方法。
  18. 【請求項18】前記新しいアクティブ・ストリームが前
    記ストリーム・バッファにおいて割り振られるまで、前
    記1つ又は複数のアクティブ・ストリームの1つが前記
    ストリーム・バッファに残ることを特徴とする請求項1
    6に記載の方法。
JP8186022A 1995-08-24 1996-07-16 ストリーム・フィルタ装置及び方法 Pending JPH0962572A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/519,032 US5737565A (en) 1995-08-24 1995-08-24 System and method for diallocating stream from a stream buffer
US519032 1995-08-24

Publications (1)

Publication Number Publication Date
JPH0962572A true JPH0962572A (ja) 1997-03-07

Family

ID=24066488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8186022A Pending JPH0962572A (ja) 1995-08-24 1996-07-16 ストリーム・フィルタ装置及び方法

Country Status (5)

Country Link
US (1) US5737565A (ja)
EP (1) EP0763795B1 (ja)
JP (1) JPH0962572A (ja)
KR (1) KR100240912B1 (ja)
DE (1) DE69616223T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242527A (ja) * 2004-02-25 2005-09-08 Hitachi Ltd プロセッサ、および、プリフェッチ制御方法

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US5958040A (en) * 1997-05-28 1999-09-28 Digital Equipment Corporation Adaptive stream buffers
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6105111A (en) * 1998-03-31 2000-08-15 Intel Corporation Method and apparatus for providing a cache management technique
US6321302B1 (en) 1998-04-15 2001-11-20 Advanced Micro Devices, Inc. Stream read buffer for efficient interface with block oriented devices
US6219745B1 (en) * 1998-04-15 2001-04-17 Advanced Micro Devices, Inc. System and method for entering a stream read buffer mode to store non-cacheable or block data
TW501011B (en) * 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6338115B1 (en) 1999-02-16 2002-01-08 International Business Machines Corporation Advanced read cache management
US7003660B2 (en) 2000-06-13 2006-02-21 Pact Xpp Technologies Ag Pipeline configuration unit protocols and communication
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
US6393553B1 (en) 1999-06-25 2002-05-21 International Business Machines Corporation Acknowledgement mechanism for just-in-time delivery of load data
US6425090B1 (en) 1999-06-25 2002-07-23 International Business Machines Corporation Method for just-in-time delivery of load data utilizing alternating time intervals
US6430683B1 (en) 1999-06-25 2002-08-06 International Business Machines Corporation Processor and method for just-in-time delivery of load data via time dependency field
US6397320B1 (en) 1999-06-25 2002-05-28 International Business Machines Corporation Method for just-in-time delivery of load data via cycle of dependency
US6427204B1 (en) 1999-06-25 2002-07-30 International Business Machines Corporation Method for just in-time delivery of instructions in a data processing system
US6505277B1 (en) * 1999-06-25 2003-01-07 International Business Machines Corporation Method for just-in-time delivery of load data by intervening caches
US6496921B1 (en) 1999-06-30 2002-12-17 International Business Machines Corporation Layered speculative request unit with instruction optimized and storage hierarchy optimized partitions
US6532521B1 (en) 1999-06-30 2003-03-11 International Business Machines Corporation Mechanism for high performance transfer of speculative request data between levels of cache hierarchy
US6421763B1 (en) 1999-06-30 2002-07-16 International Business Machines Corporation Method for instruction extensions for a tightly coupled speculative request unit
US6393528B1 (en) * 1999-06-30 2002-05-21 International Business Machines Corporation Optimized cache allocation algorithm for multiple speculative requests
US6510494B1 (en) 1999-06-30 2003-01-21 International Business Machines Corporation Time based mechanism for cached speculative data deallocation
US6360299B1 (en) * 1999-06-30 2002-03-19 International Business Machines Corporation Extended cache state with prefetched stream ID information
US6421762B1 (en) 1999-06-30 2002-07-16 International Business Machines Corporation Cache allocation policy based on speculative request history
AU2002220600A1 (en) * 2000-10-06 2002-04-15 Pact Informationstechnologie Gmbh Cell system with segmented intermediate cell structure
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7260684B2 (en) * 2001-01-16 2007-08-21 Intel Corporation Trace cache filtering
US6574718B2 (en) 2001-02-28 2003-06-03 International Business Machines Corporation Excessive spin detection and avoidance for systems using a least recently used page replacement algorithm
US7581076B2 (en) * 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
WO2002103532A2 (de) 2001-06-20 2002-12-27 Pact Xpp Technologies Ag Verfahren zur bearbeitung von daten
US6654857B2 (en) 2001-06-21 2003-11-25 International Business Machines Corporation Non-uniform memory access (NUMA) computer system having distributed global coherency management
US6760809B2 (en) 2001-06-21 2004-07-06 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having remote memory cache incorporated within system memory
US6754782B2 (en) 2001-06-21 2004-06-22 International Business Machines Corporation Decentralized global coherency management in a multi-node computer system
US6901485B2 (en) 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system
US6760817B2 (en) 2001-06-21 2004-07-06 International Business Machines Corporation Method and system for prefetching utilizing memory initiated prefetch write operations
US6615322B2 (en) 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US6711652B2 (en) 2001-06-21 2004-03-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides precise notification of remote deallocation of modified data
US6633959B2 (en) * 2001-06-21 2003-10-14 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data
US6721853B2 (en) 2001-06-29 2004-04-13 International Business Machines Corporation High performance data processing system via cache victimization protocols
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7577822B2 (en) 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
AU2003208266A1 (en) 2002-01-19 2003-07-30 Pact Xpp Technologies Ag Reconfigurable processor
WO2003071432A2 (de) * 2002-02-18 2003-08-28 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US20040022094A1 (en) * 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
WO2004038599A1 (de) 2002-09-06 2004-05-06 Pact Xpp Technologies Ag Rekonfigurierbare sequenzerstruktur
US7069397B2 (en) * 2003-04-15 2006-06-27 Sun Microsystems, Inc Stream based memory manager with function specific hardware logic for accessing data as a stream in memory
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
US7290107B2 (en) * 2004-10-28 2007-10-30 International Business Machines Corporation Direct deposit using locking cache
WO2007082730A1 (de) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
US7516279B2 (en) * 2006-02-28 2009-04-07 International Business Machines Corporation Method using stream prefetching history to improve data prefetching performance.
US20080065834A1 (en) * 2006-09-13 2008-03-13 International Business Machines Corporation Method to Prevent Operand Data with No Locality from Polluting the Data Cache
US9164941B2 (en) * 2007-10-24 2015-10-20 Hitachi, Ltd. Storage system group
KR100981884B1 (ko) * 2008-01-08 2010-09-14 한국과학기술원 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법
JP2009230374A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法
WO2013030628A1 (en) * 2011-09-01 2013-03-07 Freescale Semiconductor, Inc. Integrated circuit device, memory interface module, data processing system and method for providing data access control
US9037835B1 (en) * 2013-10-24 2015-05-19 Arm Limited Data processing method and apparatus for prefetching
KR102136792B1 (ko) * 2018-10-18 2020-07-22 인하대학교 산학협력단 Hbm 도입으로 인한 메모리 보틀넥 문제 해결 방법 및 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4442488A (en) * 1980-05-05 1984-04-10 Floating Point Systems, Inc. Instruction cache memory system
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
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
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
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242527A (ja) * 2004-02-25 2005-09-08 Hitachi Ltd プロセッサ、および、プリフェッチ制御方法

Also Published As

Publication number Publication date
KR980010800A (ko) 1998-04-30
EP0763795A1 (en) 1997-03-19
DE69616223D1 (de) 2001-11-29
KR100240912B1 (ko) 2000-01-15
DE69616223T2 (de) 2002-06-27
US5737565A (en) 1998-04-07
EP0763795B1 (en) 2001-10-24

Similar Documents

Publication Publication Date Title
US5737565A (en) System and method for diallocating stream from a stream buffer
JP7762783B2 (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
JP3541998B2 (ja) データ・キャッシュ・システム及び方法
US6085291A (en) System and method for selectively controlling fetching and prefetching of data to a processor
US5740399A (en) Modified L1/L2 cache inclusion for aggressive prefetch
US5758119A (en) System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
EP1388065B1 (en) Method and system for speculatively invalidating lines in a cache
US6957304B2 (en) Runahead allocation protection (RAP)
US6766419B1 (en) Optimization of cache evictions through software hints
US5603004A (en) Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
EP0604139B1 (en) Computer system including a prefetch cache
EP0780770A1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US20090132750A1 (en) Cache memory system
US20100064107A1 (en) Microprocessor cache line evict array
US20080320228A1 (en) Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache
JP2000242558A (ja) キャッシュシステム及びその操作方法
JP2000250813A (ja) I/oキャッシュ・メモリにおけるデータ管理方法
CN1425154A (zh) 高速缓冲存储器线清洗微结构执行方法和系统
JP3245125B2 (ja) 垂直キャッシュのための擬似精細i−キャッシュ包含性
JP3262519B2 (ja) 第2レベルキャッシュの古いラインの除去によるプロセッサのメモリ性能の強化方法及びシステム
US6959363B2 (en) Cache memory operation
US6449698B1 (en) Method and system for bypass prefetch data path
US7380068B2 (en) System and method for contention-based cache performance optimization