JPH09146835A - System for prefetch of data - Google Patents
System for prefetch of dataInfo
- Publication number
- JPH09146835A JPH09146835A JP8225449A JP22544996A JPH09146835A JP H09146835 A JPH09146835 A JP H09146835A JP 8225449 A JP8225449 A JP 8225449A JP 22544996 A JP22544996 A JP 22544996A JP H09146835 A JPH09146835 A JP H09146835A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- cache line
- line
- circuit
- address
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching 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
Description
【0001】[0001]
【発明の属する技術分野】本発明は一般にデータ処理シ
ステムに関し、特に、データをメモリからプリフェッチ
するシステムに関する。FIELD OF THE INVENTION This invention relates generally to data processing systems, and more particularly to systems for prefetching data from memory.
【0002】[0002]
【従来の技術】現プログラム及びデータをプロセッサ
(CPU)が高速に使用可能にすることにより、データ
処理システムの処理速度を向上するために、時に特殊な
超高速メモリが使用される。こうした高速メモリはキャ
ッシュとして知られ、時に大規模コンピュータ・システ
ムにおいて、主メモリ・アクセス時間とプロセッサ論理
回路間の速度差を補償するために使用される。プロセッ
サ論理回路は、通常主メモリ・アクセス時間よりも高速
であり、処理速度は大抵主メモリの速度により制限され
る。動作速度の不一致を補償する1つの技法は、CPU
と主メモリとの間で、そのアクセス時間がプロセッサ論
理回路の伝播遅延に近い超高速の小メモリを使用する。
これは現在CPU内で実行されているプログラムのセグ
メント、及び現計算において頻繁に必要とされる一時デ
ータを記憶するために使用される。プログラム(命令)
及びデータを高速に使用可能にすることにより、プロセ
ッサの性能を高めることが可能である。2. Description of the Prior Art Special high speed memory is sometimes used to improve the processing speed of a data processing system by making the current program and data available to the processor (CPU) at high speed. Such fast memories are known as caches and are sometimes used in large computer systems to compensate for main memory access times and speed differences between processor logic. Processor logic is typically faster than main memory access time, and processing speed is often limited by main memory speed. One technique for compensating for operating speed inconsistencies is CPU
Between the main memory and the main memory, an ultra-fast small memory whose access time is close to the propagation delay of the processor logic circuit is used.
It is used to store the segment of the program currently executing in the CPU, as well as the temporary data often needed in the current computation. Program (command)
Also, the performance of the processor can be improved by making the data available at high speed.
【0003】通常の多数のプログラムの分析の結果、所
与の時間間隔におけるメモリ参照は、メモリ内の幾つか
のローカル化領域に制限されることが判明した。この現
象は"参照のローカル性"の特性として知られる。この特
性の理由は、通常のコンピュータ・プログラム・フロー
が直線的に流れ、しばしばプログラム・ループ及びサブ
ルーチン呼び出しに遭遇することを考慮することにより
理解され得る。プログラム・ループが実行されるとき、
CPUはループを構成するメモリ内の命令セットを繰り
返し参照する。所与のサブルーチンが呼び出される度
に、その命令セットがメモリからフェッチされる。従っ
て、ループ及びサブルーチンは、命令フェッチのための
メモリ参照をローカル化する傾向がある。データのメモ
リ参照も、より低い度合いでローカル化される傾向があ
る。テーブル・ルックアップ・プロシジャは、テーブル
が記憶されるメモリ部分を繰り返し参照する。反復プロ
シジャは共通メモリ位置を参照し、数字のアレイがメモ
リの局所部分に記憶される。これらの観測の結果が参照
のローカル性であり、これは短い時間間隔において、通
常のプログラムにより生成される命令のアドレスが、メ
モリの幾つかのローカル化領域を繰り返し参照し、残り
のメモリ領域は比較的稀にアクセスされることを示す。Analysis of a number of routine programs has revealed that memory references in a given time interval are restricted to a few localized regions in memory. This phenomenon is known as the property of "locality of reference". The reason for this property can be understood by considering that normal computer program flow flows linearly and often encounters program loops and subroutine calls. When the program loop is executed,
The CPU repeatedly refers to the instruction set in the memory forming the loop. Each time a given subroutine is called, its instruction set is fetched from memory. Therefore, loops and subroutines tend to localize memory references for instruction fetches. Memory references to data also tend to be localized to a lesser extent. The table lookup procedure repeatedly references the portion of memory where the table is stored. The iterative procedure references a common memory location and an array of numbers is stored in a local portion of memory. The result of these observations is the locality of reference, which means that in a short time interval, the address of an instruction generated by a normal program repeatedly references some localized areas of memory and the remaining memory areas Indicates that access is relatively rare.
【0004】プログラム及びデータのアクティブ部分が
高速の小メモリ内に配置される場合、平均メモリ・アク
セス時間が低減され、従ってプログラムの総実行時間が
減少する。こうした高速小メモリは、前述のように、キ
ャッシュとして参照される。キャッシュ・メモリ・アク
セス時間は、主メモリのアクセス時間よりも、しばしば
5倍乃至10倍小さい。キャッシュはメモリ階層におい
て最も高速のコンポーネントであり、CPUコンポーネ
ントの速度に近い。When the active portions of the program and data are located in the fast small memory, the average memory access time is reduced, and thus the total program execution time. Such a high speed small memory is referred to as a cache as described above. Cache memory access times are often five to ten times smaller than main memory access times. The cache is the fastest component in the memory hierarchy, close to the speed of the CPU component.
【0005】キャッシュ構成の基本的な思想は、最も頻
繁にアクセスされる命令及びデータを高速キャッシュ・
メモリに保存することにより、平均メモリ・アクセス時
間をキャッシュのアクセス時間に近づけることである。
キャッシュは主メモリのサイズの小部分ではあるが、メ
モリ要求の大部分は、プログラムの参照のローカル性の
ために、高速キャッシュ・メモリ内で見い出される。The basic idea of cache organization is to cache the most frequently accessed instructions and data at high speed.
Saving in memory brings the average memory access time closer to the cache access time.
Although the cache is a small fraction of the size of main memory, the majority of memory requirements are found in fast cache memory because of the locality of reference of the program.
【0006】キャッシュの基本動作は次のようである。
CPUがメモリ・アクセスを必要とすると、キャッシュ
が調査される。ワードがキャッシュ内で見い出される
と、それは高速メモリから読出される。CPUによりア
ドレス指定されるワードがキャッシュ内で見い出されな
い場合には、そのワードを読出すために、主メモリがア
クセスされる。アクセスされたばかりのワードを含むワ
ード・ブロックが、次に主メモリからキャッシュ・メモ
リに転送される。このようにして、特定のデータがキャ
ッシュに転送され、将来のメモリ参照が、要求されるワ
ードを高速キャッシュ・メモリ内で見い出すことにな
る。The basic operation of the cache is as follows.
When the CPU needs a memory access, the cache is examined. When a word is found in the cache, it is read from fast memory. If the word addressed by the CPU is not found in the cache, main memory is accessed to read the word. The word block containing the word just accessed is then transferred from main memory to cache memory. In this way, certain data will be transferred to the cache and future memory references will find the required word in the fast cache memory.
【0007】コンピュータ・システムの平均メモリ・ア
クセス時間は、キャッシュの使用により多大に改良され
得る。キャッシュ・メモリの性能は、しばしば"ヒット
率"と呼ばれる量により測定される。CPUがメモリを
参照し、ワードをキャッシュ内で見い出すとき、これ
は"ヒット"を生成したと称される。ワードがキャッシュ
内で見い出されない場合、そのワードは主メモリ内に存
在し、"ミス"としてカウントされる。ヒット率が十分に
高く、ほとんどの時間、CPUが主メモリの代わりにキ
ャッシュをアクセスする場合、平均アクセス時間は高速
キャッシュ・メモリのアクセス時間に近づく。例えば、
100nsのキャッシュ・アクセス時間、1000ns
の主メモリ・アクセス時間、及び0.9のヒット率を有
するコンピュータでは、200nsの平均アクセス時間
を生成する。これはキャッシュ・メモリを有さず、その
アクセス時間が1000nsの類似のコンピュータに比
較して、多大な改良である。The average memory access time of a computer system can be greatly improved by the use of caches. Cache memory performance is often measured by a quantity called the "hit rate". When the CPU references memory and finds a word in cache, this is said to have generated a "hit". If the word is not found in cache, it is in main memory and is counted as a "miss". If the hit rate is high enough that most of the time the CPU accesses the cache instead of main memory, the average access time approaches that of the fast cache memory. For example,
100ns cache access time, 1000ns
A computer with a main memory access time of 1 and a hit rate of 0.9 produces an average access time of 200 ns. This is a great improvement over a similar computer that has no cache memory and its access time is 1000 ns.
【0008】最新のマイクロプロセッサでは、プロセッ
サ・サイクル時間が技術の進歩と共に、向上し続けてい
る。また、思惑実行、深いパイプライン、並びにより多
くの実行要素などの設計技法が、マイクロプロセッサの
性能を改良し続けている。性能の改良はメモリ・インタ
フェースに、より大きな負担を課すことになる。なぜな
ら、プロセッサが、より多くのデータ及び命令を、メモ
リからマイクロプロセッサに供給することを要求するか
らである。メモリ待ち時間を低減するために、大規模な
オンチップ・キャッシュ(1次またはL1キャッシュ)
が実現され、これらはしばしば、より大規模なオフチッ
プ・キャッシュ(2次またはL2キャッシュ)により増
補される。In modern microprocessors, processor cycle times continue to improve as technology advances. Also, design techniques such as speculative execution, deep pipelines, and more execution elements continue to improve the performance of microprocessors. The improved performance puts a greater burden on the memory interface. This is because the processor requires more data and instructions to be supplied from memory to the microprocessor. Large on-chip cache (L1 or L1 cache) to reduce memory latency
Are implemented, which are often augmented by larger off-chip caches (secondary or L2 caches).
【0009】メモリ・データを予め1次キャッシュに供
給し、待ち時間を低減するために、しばしばプリフェッ
チ技法が実現される。理想的には、プログラムは、プロ
セッサがメモリ・データを必要とするとき、そのコピー
が常に1次キャッシュ内に存在するように、データ及び
命令を予め十分にプリフェッチする。Prefetching techniques are often implemented to pre-populate memory caches with memory data to reduce latency. Ideally, the program pre-fetches data and instructions well enough so that when the processor needs the memory data, its copy always resides in the primary cache.
【0010】問題は、マイクロプロセッサ・アーキテク
チャが、全ての場合において必要とされ得るデータのア
ドレスを明示的に決定するための、十分な事前情報を提
供しないことである。例えば、メモリ内におけるデータ
・オペランドのアドレスは、それ自身メモリ内にあり、
メモリ命令により使用される第1命令によりフェッチさ
れなければならない。こうしたシーケンスでは、プロセ
ッサはプリフェッチを実行するためのアドレスを前もっ
て有さない。The problem is that the microprocessor architecture does not provide sufficient a priori information to explicitly determine the address of the data that may be needed in all cases. For example, the address of a data operand in memory is itself in memory,
It must be fetched by the first instruction used by the memory instruction. In such a sequence, the processor does not have an address in advance to perform prefetch.
【0011】命令及び(または)データのプリフェッチ
は既知である。しかしながら、既存のプリフェッチ技法
は、しばしば命令及び(または)データを早計にプリフ
ェッチする。命令及び(または)データをプリフェッチ
し、それらを使用しないことに関わる問題は、(1)プ
リフェッチされたデータが、プロセッサにより必要とさ
れるデータを置換し得る、(2)プリフェッチ・メモリ
・アクセスが、続くプロセッサ・キャッシュ・リロード
を生成し、それによりプリフェッチ・アクセスが待機
し、必要データの待ち時間を増加し得ることである。こ
れら両方の作用はCPUの効率を低下させる。従って、
マイクロプロセッサの性能を低下すること無く、キャッ
シュ・ミスによる1次キャッシュへのデータ及び命令ア
クセスの待ち時間を低減する、プリフェッチのための改
良されたシステムが必要とされる。Prefetching of instructions and / or data is known. However, existing prefetch techniques often prefetch instructions and / or data prematurely. The problem with prefetching instructions and / or data and not using them is that (1) the prefetched data can replace the data needed by the processor, and (2) prefetch memory access , Subsequent processor cache reloads, which can cause prefetch accesses to wait and increase latency of required data. Both of these effects reduce the efficiency of the CPU. Therefore,
What is needed is an improved system for prefetching that reduces the latency of data and instruction access to the primary cache due to cache misses without degrading the performance of the microprocessor.
【0012】[0012]
【発明が解決しようとする課題】本発明の目的は、マイ
クロプロセッサにおいて、1次及び2次キャッシュと共
にストリーム・フィルタを使用して、メモリからプリフ
ェッチ・データを提供し、マイクロプロセッサ・システ
ムにおけるデータ待ち時間を低減することである。SUMMARY OF THE INVENTION It is an object of the present invention to use stream filters with primary and secondary caches in a microprocessor to provide prefetch data from memory and wait for data in a microprocessor system. It is to reduce the time.
【0013】本発明の別の目的は、複数のストリームを
同時にサポートでき、プリフェッチ・データをしだいに
増分して、プリフェッチの深さを制御できる固有のスト
リーム・フィルタ装置を提供することである。Another object of the present invention is to provide a unique stream filter device capable of simultaneously supporting multiple streams and gradually incrementing the prefetch data to control the prefetch depth.
【0014】[0014]
【課題を解決するための手段】前記記述は、以降で述べ
られる本発明の詳細がより理解されるように、本発明の
特長及び技術的利点をかなり広く述べたものであり、本
発明の追加の特長及び利点については、以降で詳細に述
べることにする。The foregoing description fairly broadly describes the features and technical advantages of the present invention, so that the details of the invention described below will be better understood, and the addition of the present invention The features and advantages of will be described in detail below.
【0015】[0015]
【発明の実施の形態】以降の説明では、本発明を十分に
理解するために、例えば特定のワード長またはバイト長
などの、多数の特定の詳細が述べられる。しかしなが
ら、当業者には明らかなように、本発明はこうした特定
の詳細無しでも実施し得る。他の例では、本発明を不要
な詳細により不明瞭化しないように、既知の回路がブロ
ック図形式で示される。大部分において、タイミングな
どに関する詳細は、本発明を理解する上で不要であり、
当業者の知る範囲内である限り省略される。DETAILED DESCRIPTION OF THE INVENTION In the following description, numerous specific details are set forth, eg, specific word lengths or byte lengths, in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, known circuits are shown in block diagram form in order not to obscure the present invention with unnecessary details. For the most part, details such as timing are not necessary to an understanding of the invention,
It is omitted as long as it is known to those skilled in the art.
【0016】図面を通じて、図示の要素は必ずしもその
縮尺は適正ではなく、同一または類似の要素は同一の参
照番号により示される。Throughout the drawings, the elements shown are not necessarily to scale, and identical or similar elements are designated by the same reference numbers.
【0017】図1を参照して、本発明を有利に実現する
データ処理システム100について説明する。マルチプ
ロセッサ・システム100は、システム・バス124に
動作上接続される複数の処理ユニット106、108、
110を含む。任意の数の処理ユニットが、システム1
00内において使用され得る。システム・バス124に
は更に、システム・メモリ102へのアクセスを制御す
るメモリ制御装置104が接続される。メモリ制御装置
104はI/O制御装置126にも接続され、I/O制
御装置126はI/O装置128に接続される。処理ユ
ニット106、108、110、I/O制御装置12
6、及びI/O装置128は、ここでは全てバス装置と
して参照される。図示のように、各処理ユニット10
6、108、110は、プロセッサ及びL1(1次)キ
ャッシュ112、114、116をそれぞれ含み得る。
L1キャッシュは、それぞれのプロセッサと同一チップ
上に配置され得る。処理ユニット106、108、11
0には、それぞれL2(2次)キャッシュ118、12
0、122が接続される。これらのL2キャッシュは、
それぞれが接続されるプロセッサを介して、システム・
バス124に接続される。Referring to FIG. 1, a data processing system 100 that advantageously implements the present invention will be described. The multiprocessor system 100 includes a plurality of processing units 106, 108, operatively connected to a system bus 124.
Including 110. Any number of processing units can be used in system 1
00 can be used. Also connected to the system bus 124 is a memory controller 104 that controls access to the system memory 102. The memory controller 104 is also connected to the I / O controller 126, and the I / O controller 126 is connected to the I / O device 128. Processing units 106, 108, 110, I / O control device 12
6, and I / O device 128 are all referred to herein as bus devices. As shown, each processing unit 10
6, 108, 110 may include a processor and L1 (primary) cache 112, 114, 116, respectively.
The L1 cache may be located on the same chip as each processor. Processing units 106, 108, 11
0 to L2 (secondary) caches 118 and 12 respectively.
0 and 122 are connected. These L2 caches are
The system, via each connected processor
It is connected to the bus 124.
【0018】各L1及びL2キャッシュ対は通常、直列
に関連付けられる。L1キャッシュはストア・イン(st
ore-in)またはライト・スルー(write-through)とし
て実現され、より大規模で低速のL2キャッシュは、ラ
イト・バック(write-back)・キャッシュとして実現さ
れ得る。L1及びL2キャッシュ制御装置(図示せず)
の両方は、処理ユニットの一部として物理的に実現さ
れ、内部的にバスを介して処理ユニットに接続される。
L2キャッシュ制御装置はオフ・チップであってもよ
い。Each L1 and L2 cache pair is typically associated in series. L1 cache is store in (st
Larger, slower L2 caches, implemented as ore-in or write-through, can be implemented as write-back caches. L1 and L2 cache controller (not shown)
Both are physically implemented as part of the processing unit and are internally connected to the processing unit via a bus.
The L2 cache controller may be off-chip.
【0019】図2を参照すると、本発明に従い動作する
ように構成され得るデータ処理システム200が示され
る。システム200は、システム100の代替アーキテ
クチャである。システム100及びシステム200内に
おいて、プロセッサ及びキャッシュの基本動作は類似で
ある。メモリ制御装置104及びノード制御装置205
の制御及び機能は、本発明に関して類似である。Referring to FIG. 2, a data processing system 200 that may be configured to operate in accordance with the present invention is shown. System 200 is an alternative architecture to system 100. Within system 100 and system 200, the basic operation of processors and caches are similar. Memory controller 104 and node controller 205
The controls and functions of are similar for the present invention.
【0020】システム200において、プロセッサ20
1は内部L1キャッシュ202を有し、L1キャッシュ
202は外部L2キャッシュ203に接続される。プロ
セッサ201は、バス204によりノード制御装置20
5に接続される。ノード制御装置205は、プロセッサ
201をシステム200の残りの要素に接続するための
既知の基本機能を実行する。ノード制御装置205はバ
ス206により、スイッチ207に接続される。スイッ
チ207は例えばクロス・ポイント・スイッチであり、
他のプロセッサ及び(または)I/O装置(図示せず)
を、バス208を介してシステム・メモリ209に接続
する。以降の議論はシステム200に関して述べられる
が、後述の本発明に関する議論はシステム100にも関
連付けられ、またそこでも実現され得る。In system 200, processor 20
1 has an internal L1 cache 202, and the L1 cache 202 is connected to an external L2 cache 203. The processor 201 allows the node control device 20 to operate via the bus 204.
5 is connected. Node controller 205 performs the known basic functions for connecting processor 201 to the remaining elements of system 200. The node controller 205 is connected to the switch 207 by the bus 206. The switch 207 is, for example, a cross point switch,
Other processors and / or I / O devices (not shown)
Are connected to system memory 209 via bus 208. Although the discussion below is with respect to system 200, the discussion of the invention below is also related to and may be implemented in system 100.
【0021】本発明の目標は、プロセッサ201がキャ
ッシュ・ラインをL1キャッシュ202内で相当な時間
ヒットするように、これらのキャッシュ・ライン(デー
タ部分またはデータ・ブロック)をL1キャッシュ20
2にプリフェッチするための、効率的で的確な技法を提
供することであり、それにより、プロセッサ201の性
能を低下させるシステム・メモリ209からのアドレス
及びデータ情報の取り出しを最小化する。The goal of the present invention is to cache these cache lines (data portions or blocks) in the L1 cache 20 so that the processor 201 hits the cache lines in the L1 cache 202 for a considerable amount of time.
2 to provide an efficient and accurate technique for prefetching, thereby minimizing the retrieval of address and data information from the system memory 209 which degrades the performance of the processor 201.
【0022】図3を参照すると、使用されないデータの
プリフェッチの発生を低減するために、ストリーム・フ
ィルタが使用される。これらのストリーム・フィルタ
は、アドレス及び方向情報を含む履歴バッファである。
ストリーム・フィルタは、L1キャッシュ内でミスした
キャッシュ・ラインの次に順次的に高いキャッシュ・ラ
インのアドレスを含む。プロセッサからのアクセスが、
次に高いキャッシュ・ラインに対して実施されると、ス
トリーム状態が検出され、ストリーム・バッファが割当
てられる。ストリーム・フィルタは、ライン・アドレ
ス"X"へのアクセスが発生した場合、ライン・アドレ
ス"X+1"を書込まれる。"X+1"がストリーム・フィ
ルタ内に存在する間に、続くアクセスがアドレス"X+
1"に対してて実施されると(フィルタ・ヒット)、"X
+1"がストリームとして割当てられる。Referring to FIG. 3, stream filters are used to reduce the occurrence of prefetching of unused data. These stream filters are history buffers that contain address and direction information.
The stream filter contains the address of the next higher cache line after the missed cache line in the L1 cache. Access from the processor
When performed on the next higher cache line, the stream condition is detected and the stream buffer is allocated. The stream filter is written with the line address "X + 1" when an access to the line address "X" occurs. While "X + 1" is present in the stream filter, the subsequent access is the address "X +".
When executed for 1 "(filter hit)," X
+1 "is assigned as a stream.
【0023】ストリーム・バッファは、潜在的キャッシ
ュ・データを保持するプリフェッチ・バッファである。
その思想は、プロセッサ内で実行されるプログラムがデ
ータ/命令の順次ストリームを実行している場合、追加
のラインをシステム・メモリからストリーム・バッファ
にプリフェッチすることが有用であり得ることによる。
従って、続くキャッシュ・ミスがデータをストリーム・
バッファ内で見い出すことができ、ストリーム・バッフ
ァがデータをL1キャッシュ及び(または)プロセッサ
に供給する。The stream buffer is a prefetch buffer that holds potential cache data.
The idea is that if the program executing in the processor is executing a sequential stream of data / instructions, it may be useful to prefetch additional lines from system memory into the stream buffer.
Therefore, a subsequent cache miss will stream the data.
It can be found in the buffer and the stream buffer feeds the data to the L1 cache and / or the processor.
【0024】ストリーム・フィルタ及びストリーム・バ
ッファは、ストリーム・バッファをもミスするL1キャ
ッシュ・ミスが発生する場合に、ミス・アドレスがスト
リーム・フィルタ内に記憶されるアドレスと比較される
ように協動する。ストリーム・フィルタ内でヒットが発
生する場合(順次データ・ラインへの順次アクセスが存
在したことを意味する)、次のラインもまた将来的に必
要とされる可能性が高い。The stream filter and stream buffer cooperate so that if an L1 cache miss occurs that also misses the stream buffer, the miss address is compared to the address stored in the stream filter. To do. If a hit occurs in the stream filter (meaning there was a sequential access to the sequential data line) then the next line is also likely to be needed in the future.
【0025】図4を参照すると、本発明に従い構成され
るシステム200の詳細図、並びにCPU201内のデ
ータ・フローが示される。データ・フローの変形も既知
であり、そうしたものには、例えば命令及びデータ用の
別々のL1キャッシュの使用などが含まれる。L1キャ
ッシュ202は、任意の既知の置換ポリシにより、頻繁
に使用されるデータのコピーをメモリ209から保持す
る。大規模なL2キャッシュ203は、L1キャッシュ
202よりも多くのデータを保持し、メモリ・コヒーレ
ンス・プロトコルを普通に制御する。L1キャッシュ2
02内のデータは、L2キャッシュ203内のデータの
サブセットであり得る。L1キャッシュ202及びL2
キャッシュ203は、"ストア・イン"・キャッシュであ
る。他の機能要素(I/Oを含む)は、既知のスヌープ
・プロトコルを用いて、データを競合する。スヌーピン
グの1つの形態が、米国特許出願番号第442740号
で開示されている。Referring to FIG. 4, there is shown a detailed view of a system 200 configured in accordance with the present invention, as well as data flow within CPU 201. Variations on data flow are also known, including, for example, the use of separate L1 caches for instructions and data. The L1 cache 202 holds a copy of frequently used data from memory 209, according to any known replacement policy. The large L2 cache 203 holds more data than the L1 cache 202 and normally controls the memory coherence protocol. L1 cache 2
The data in 02 may be a subset of the data in L2 cache 203. L1 cache 202 and L2
The cache 203 is a "store in" cache. Other functional elements (including I / O) use known snoop protocols to compete for data. One form of snooping is disclosed in US patent application Ser. No. 442740.
【0026】CPU201に対して示される境界は、チ
ップ境界及び機能境界を示すが、これらは本発明の範囲
を制限するものではない。PCC404はプロセッサ・
キャッシュ制御装置であり、メモリ・サブシステムから
のフェッチ(プリフェッチ)及びストアを制御する。P
CC404は、L1キャッシュ202に対するディレク
トリ410の作成、有効アドレスから実アドレスへの変
換、及びその逆の変換などの、他の既知の機能を有す
る。プリフェッチ・バッファ(PBFR)402は、C
PU201及びL1キャッシュ202にステージされる
数ラインのメモリ・データを保持する。PBFR402
はストリーム・バッファである。The boundaries shown to the CPU 201 indicate chip boundaries and functional boundaries, but they do not limit the scope of the invention. PCC404 is a processor
A cache controller that controls fetches (prefetches) and stores from the memory subsystem. P
The CC 404 has other known functions such as creating a directory 410 for the L1 cache 202, converting effective addresses to real addresses, and vice versa. The prefetch buffer (PBFR) 402 is C
Holds several lines of memory data staged in PU 201 and L1 cache 202. PBFR402
Is a stream buffer.
【0027】PCC404がデータをフェッチすると
き、そのデータがL1キャッシュ202内に存在すれば
(L1ヒット)、データがPCC404に送信される。
L1キャッシュ202内に存在しないが(L1ミス)、
L2キャッシュ203内に存在する場合(L2ヒッ
ト)、L1キャッシュ202内のあるラインが、L2キ
ャッシュ203からのこの主体データにより置換され
る。この場合、データはL1キャッシュ202及びPC
C404に同時に送信される。L2キャッシュ203に
おいても同様にミスが発生する場合には、データはメモ
リ209からBIU401にフェッチされ、L1キャッ
シュ202、L2キャッシュ203、及びPCC404
に同時にロードされる。このオペレーションの変形は既
知である。データ・ストア・オペレーションは、データ
がL1ラインに記憶されてオペレーションが完了する以
外は、フェッチ・オペレーションと類似である。When the PCC 404 fetches data, if the data is in the L1 cache 202 (L1 hit), the data is sent to the PCC 404.
Although it does not exist in the L1 cache 202 (L1 miss),
If it exists in the L2 cache 203 (L2 hit), a line in the L1 cache 202 is replaced by this main data from the L2 cache 203. In this case, the data is L1 cache 202 and PC.
Simultaneously transmitted to C404. If a miss occurs in the L2 cache 203 as well, the data is fetched from the memory 209 to the BIU 401, and the L1 cache 202, the L2 cache 203, and the PCC 404 are fetched.
Loaded at the same time. Variations on this operation are known. The data store operation is similar to the fetch operation except that the data is stored on the L1 line and the operation completes.
【0028】以降の議論では、ストリーム・バッファ
(図3参照)の様々な部分が、システム200の様々な
部分に配置される。本技法では、ストリーム・バッファ
は4つのキャッシュ・ラインを記憶する能力を有する
が、任意の数のキャッシュ・ラインがストリーム・バッ
ファ内で実現され得る。ストリーム・バッファの1キャ
ッシュ・ラインは、L1キャッシュ202内で実現され
る。本来、L1キャッシュ202内のキャッシュ・ライ
ンの1つは、ストリーム・バッファのキャッシュ・ライ
ンの内の1つの機能として利用される。ストリーム・バ
ッファの第2のキャッシュ・ラインは、PBFR(プリ
フェッチ・バッファ)402内に配置される。ストリー
ム・バッファの他の2つのキャッシュ・ラインは、ノー
ド制御装置205内のPBFR2 405及びPBFR
3 406に配置される。ノード制御装置205は、バ
ス204に沿って、CPU201の下流のチップ上に配
置され得る。システム100のアーキテクチャが使用さ
れる場合には、メモリ制御装置104がこれらのストリ
ーム・バッファ・ラインを含み得る。In the discussion that follows, various portions of the stream buffer (see FIG. 3) will be located in various portions of system 200. In the present technique, the stream buffer has the ability to store four cache lines, but any number of cache lines may be implemented within the stream buffer. One cache line of the stream buffer is realized in the L1 cache 202. Essentially, one of the cache lines in L1 cache 202 is utilized as a function of one of the stream buffer cache lines. The second cache line of the stream buffer is placed in the PBFR (prefetch buffer) 402. The other two cache lines of the stream buffer are PBFR2 405 and PBFR in the node controller 205.
3 406. The node controller 205 may be arranged on the chip downstream of the CPU 201 along the bus 204. If the architecture of system 100 is used, memory controller 104 may include these stream buffer lines.
【0029】前記参照されたIEEE条項内で述べられ
るように、ストリーム・フィルタ及びストリーム・バッ
ファの基本動作は、要求キャッシュ・ラインに対してL
1キャッシュ・ミスが発生するとき、キャッシュ・ライ
ンのアドレスが増分され(一般に1ライン・アドレス
分)、この増分アドレスがストリーム・フィルタ403
に挿入される。L1キャッシュ202内におけるキャッ
シュ・ラインの続くミスの発生に際して、このL1キャ
ッシュ・ミスのアドレスが、ストリーム・フィルタ40
3に含まれるアドレスと比較される。少なくとも1つの
アドレスとの一致が観測されると、キャッシュ・ライン
のストリームがストリーム・バッファ内に割当てられ
る。As stated in the referenced IEEE Clause, the basic operation of the stream filter and stream buffer is L for request cache lines.
When a cache miss occurs, the address of the cache line is incremented (generally one line address) and this incremented address is stream filter 403.
Is inserted into. Upon occurrence of a subsequent miss of a cache line in the L1 cache 202, the address of this L1 cache miss is the address of the stream filter 40.
3 is compared with the address contained in 3. A stream of cache lines is allocated in the stream buffer if a match with at least one address is observed.
【0030】上述のように、キャッシュ・ミスが発生す
るとき、ストリーム・フィルタ・バッファには次の順次
キャッシュ・ラインのアドレスが書込まれる。ストリー
ム・フィルタ(図3及び図5参照)は、こうした事象
の"履歴"を含むアドレスを保持できる複数の位置を含
む。これらは最低使用頻度(LRU)ベースで置換され
得る。キャッシュ・ミスが発生する都度、ストリーム・
フィルタ内のアドレスが、キャッシュ・ライン・ミスの
アドレスと比較される。ヒットが発生する場合、フィル
タ・ヒットが発生したと称され、ストリームが割当てら
れる。ストリーム・モードでは、余分なキャッシュ・ラ
インが、L1キャッシュ202によりストリームの一部
として必要とされるとの期待から、ストリーム・バッフ
ァ(例えば、L1キャッシュ202、PBFR402、
PBFR2 405、PBFR3 406内のライン)
にプリフェッチされる。As described above, when a cache miss occurs, the stream filter buffer is written with the address of the next sequential cache line. Stream filters (see FIGS. 3 and 5) include multiple locations that can hold addresses that contain a "history" of such events. These may be replaced on a least recently used (LRU) basis. Each time a cache miss occurs, the stream
The address in the filter is compared to the cache line miss address. If a hit occurs, the filter hit is said to have occurred and the stream is allocated. In stream mode, an extra cache line is expected by the L1 cache 202 as part of the stream, so the stream buffer (eg, L1 cache 202, PBFR 402,
PBFR2 405 and PBFR3 406 lines)
Prefetched to.
【0031】図5は、本発明によるストリーム・フィル
タ及びストリーム・バッファの動作を示す高レベル機能
図を示す。CPU201は、使用されるアーキテクチャ
に従い、有効アドレス(EA)を生成する。EAは潜在
的にオフセットを有する要求データ・アドレスである。
変換器503により、CPU201は、EAに対応する
変換アドレスまたは実アドレス(RA)を生成する。実
アドレスはフィルタ・キュー502により使用される
が、フィルタ・キュー502が実アドレスの代わりに有
効アドレスを使用することも、本発明の範囲に含まれ
る。比較器504により、RAはフィルタ・キュー50
2内のRAと無差別に比較され、エントリがその有効ビ
ット(V)により有効と示される場合には、一致はフィ
ルタ・ヒットと呼ばれる。FIG. 5 shows a high level functional diagram illustrating the operation of the stream filter and stream buffer according to the present invention. The CPU 201 generates an effective address (EA) according to the architecture used. EA is the requested data address with potential offset.
The converter 503 causes the CPU 201 to generate a translated address or a real address (RA) corresponding to EA. The real address is used by the filter queue 502, but it is within the scope of the invention for the filter queue 502 to use a valid address instead of the real address. RA is filtered by the comparator 504 to the filter queue 50.
If the entry is indiscriminately compared to RA in 2 and the entry is marked valid by its valid bit (V), then the match is called a filter hit.
【0032】フィルタ・キュー502は、各エントリに
対して推測方向標識を含み、これは推測ストリームが増
分または減分(±1またはアップ/ダウン)されるべき
ことを示す。これについては後述する。The filter queue 502 includes a speculative direction indicator for each entry, which indicates that the speculative stream should be incremented or decremented (± 1 or up / down). This will be described later.
【0033】各フィルタ・キュー・エントリは、そのア
ドレスに対応するストリームが存在するか否かを示すフ
ィールドを含み、存在する場合、そのストリームの識別
ストリーム番号を含む(1度に複数のストリームが割当
てられ得る)。Each filter queue entry includes a field that indicates whether or not there is a stream corresponding to that address, and if so, the identifying stream number of that stream (multiple streams can be allocated at one time). Can be).
【0034】フィルタ・ヒットが発生するとき、ストリ
ームがストリーム・アドレス・バッファ501に割当て
られ、対応する割当てがストリーム・データ・バッファ
506に作成される。ストリーム・アドレス・エントリ
は、特定の割当てストリームの次のデータ・ラインの推
測有効アドレスを含む。再度、ここでも有効アドレスの
代わりに、実アドレスを使用することも可能である。ス
トリーム・アドレス・エントリは更に、ストリームが割
当てられることを示す有効ビットを含む。更に、ストリ
ームの状態を追跡するために使用される状態フィールド
が存在する。また、推測方向(±またはアップ/ダウ
ン)のコピーが、ストリーム・バッファ内に保持され
る。比較器505はプロセッサにより発行されるEA
を、ストリーム・アドレス・バッファ501に含まれる
ページ・アドレス及びライン・アドレスと比較する。一
致が発生する場合、これはストリーム・ヒットと呼ばれ
る。When a filter hit occurs, a stream is allocated in stream address buffer 501 and a corresponding allocation is made in stream data buffer 506. The stream address entry contains the speculative effective address of the next data line of a particular allocated stream. Again, it is possible here to use the real address instead of the effective address. The stream address entry also contains a valid bit that indicates that the stream is assigned. In addition, there is a state field used to keep track of the state of the stream. Also, a copy of the speculative direction (± or up / down) is kept in the stream buffer. Comparator 505 is an EA issued by the processor
Is compared with the page address and line address contained in the stream address buffer 501. If a match occurs, this is called a stream hit.
【0035】図5に示される機能は別の方法によっても
実現され、これらも本発明の範囲に含まれる。The functions shown in FIG. 5 can be implemented by other methods, and these are also included in the scope of the present invention.
【0036】システム・メモリ209内のメモリ空間
は、128バイトのラインに分割され得る。各ライン
は、ラインの偶数部分がアドレス0乃至63に、奇数部
分がアドレス64乃至127に帰するように、半分に分
割されてもよい。上述のように、CPU201は論理ア
ドレス(EA)を生成し、これがメモリ内のキャッシュ
可能なラインを指す実アドレスに変換される。メモリは
2Nバイトのページに分割される。ページは、サイズ的
にキャッシュ・エントリに対応するラインに分割され
る。キャッシュ・ミスの発生の都度、関連する実アドレ
スが分析される。実アドレスがラインの偶数部分に存在
する場合、潜在ストリームは増分ストリームとなる。フ
ィルタ・キュー502内のLRUフィルタ・キュー・エ
ントリが、"アップ"方向によりマークされ、ライン・ミ
スRAが"1"増分されて、エントリに保管される。RA
がラインの奇数側の場合には、キュー502内のRAエ
ントリが1減分され、"ダウン"がエントリ内にマークさ
れる。The memory space within system memory 209 may be divided into 128 byte lines. Each line may be divided in half such that the even part of the line is at addresses 0-63 and the odd part is at addresses 64-127. As mentioned above, the CPU 201 generates a logical address (EA), which is translated into a real address that points to a cacheable line in memory. The memory is divided into pages of 2N bytes. The page is divided in size into lines that correspond to cache entries. Each time a cache miss occurs, the associated real address is analyzed. If the real address is in the even part of the line, then the latent stream is an incremental stream. The LRU filter queue entry in filter queue 502 is marked with the "up" direction and the line miss RA is incremented by "1" and saved in the entry. RA
If is on the odd side of the line, the RA entry in queue 502 is decremented by 1 and "down" is marked in the entry.
【0037】別の技法として、ミスに際して、RAをフ
ィルタ・エントリに保管し、続くミスをエントリと比較
して、アップまたはダウンの方向を決定することも、本
発明の範囲に含まれる。As an alternative technique, it is within the scope of the invention to store the RA in a filter entry upon a miss and then compare subsequent misses to the entry to determine the up or down direction.
【0038】ストリームが割当てられるとき、"次の"有
効ライン・アドレスがストリーム・アドレス・バッファ
501に保管されることが明らかであろう。バッファ5
01は各アクティブ・ストリームに対するエントリを含
む。It will be apparent that the "next" valid line address is stored in the stream address buffer 501 when a stream is allocated. Buffer 5
01 contains an entry for each active stream.
【0039】L1キャッシュ202及びL2キャッシュ
203のキャッシュ・ミスが発生する場合、システム・
メモリ209をアクセスする以前に、ストリーム・バッ
ファに対する問い合わせが生じる。フィルタ・キュー5
02回路及びストリーム・アドレス・バッファ501回
路を結合することも、本発明の1つの態様である。When a cache miss occurs in the L1 cache 202 and the L2 cache 203, the system
Before accessing the memory 209, an inquiry is made to the stream buffer. Filter queue 5
Combining the 02 circuit and the stream address buffer 501 circuit is also an aspect of the present invention.
【0040】図6乃至図9を参照すると、本発明の進歩
的プリフェッチ・モードのフロー図が示される。本発明
は3つの進歩的プリフェッチ・モード及びそれらの変形
を可能にする。それらは正常、データ・プリフェッチ、
及びブラスト(Blast)である。正常モードでは、デー
タはプリフェッチされない。データ・プリフェッチ・モ
ードでは、2ラインがプリフェッチされ、1ラインがL
1キャッシュに、1ラインがストリーム・バッファにプ
リフェッチされる。ブラスト・モードでは、3ライン以
上が1度にプリフェッチされる。本発明の1つの態様で
は、ブラスト・モードにおいて、4ラインがプリフェッ
チされ、2ラインがデータ・プリフェッチ・モードでプ
リフェッチされ、追加の2ラインがストリーム・バッフ
ァにプリフェッチされる。任意のモードにおいて、プリ
フェッチ・バッファはプロセッサ・チップ、キャッシュ
・チップ、外部チップ、及び(または)メモリ・カード
上に実装され得る。図6乃至図9は、ストリームが流れ
る推測方向が増分方向の場合の例を示す。減分方向の場
合の例は、この例の変更として明らかであろう。図6乃
至図9のフロー図は、データ・プリフェッチ・モード及
びブラスト・モードに入る様子を示す。Referring to FIGS. 6-9, there is shown a flow diagram of the inventive prefetch mode of the present invention. The present invention enables three progressive prefetch modes and their variants. They are normal, data prefetch,
And Blast. No data is prefetched in normal mode. In data prefetch mode, 2 lines are prefetched and 1 line is L
One line in one cache is prefetched into the stream buffer. In blast mode, three or more lines are prefetched at once. In one aspect of the invention, in blast mode, 4 lines are prefetched, 2 lines are prefetched in data prefetch mode, and 2 additional lines are prefetched into the stream buffer. In any mode, the prefetch buffer may be implemented on the processor chip, cache chip, external chip, and / or memory card. 6 to 9 show examples in which the estimated direction in which the stream flows is the incremental direction. An example for the decremental direction would be obvious as a modification of this example. The flow diagrams of FIGS. 6-9 show how the data prefetch mode and blast mode are entered.
【0041】ステップ601で、CPU201はキャッ
シュ・ラインAにおけるデータ・アクセスを開始する。
ステップ602で、キャッシュ・ラインAがL1キャッ
シュ202内に存在するか否かを判断する。存在する場
合、プロセスはステップ603に移行し、キャッシュ・
ラインAがCPU201に戻され、プロセスはステップ
604で終了する。In step 601, the CPU 201 starts data access in the cache line A.
At step 602, it is determined whether cache line A exists in L1 cache 202. If so, the process moves to step 603, where the cache
Line A is returned to CPU 201 and the process ends at step 604.
【0042】しかしながら、キャッシュ・ラインAにお
いてミスが発生すると、プロセスはステップ605に移
行し、キャッシュ・ラインAのアドレスが、ストリーム
・フィルタ403に含まれる全てのアドレスと比較され
る。However, if a miss occurs in cache line A, the process moves to step 605, where the address of cache line A is compared with all the addresses contained in stream filter 403.
【0043】キャッシュ・ラインAがストリーム・フィ
ルタ403内に存在しない場合、プロセスはステップ6
06に移行し、キャッシュ・ラインAのアドレスが1増
分され、ストリーム・フィルタ403内に挿入される。
従って、ステップ607で、キャッシュ・ラインAがL
2キャッシュ203またはメモリ209から、L1キャ
ッシュ202にフェッチされる。If cache line A does not exist in stream filter 403, the process proceeds to step 6.
Moving to 06, the address of cache line A is incremented by 1 and inserted into stream filter 403.
Therefore, in step 607, cache line A is L
It is fetched from the 2-cache 203 or the memory 209 to the L1 cache 202.
【0044】図6乃至図9内のステップ607からステ
ップ608への破線矢印は、ステップ608がステップ
607の直後に、必ずしも発生しないことを示す。一般
に多くのミスが発生するほど、キャッシュ・ラインA+
1に対する要求(ステップ608)以前に、ストリーム
・フィルタ403内のアドレス・エントリが発生し得
る。The dashed arrow from step 607 to step 608 in FIGS. 6-9 indicates that step 608 does not necessarily occur immediately after step 607. Generally, the more misses occur, the more cache line A +
Address requests in stream filter 403 may occur prior to the request for 1 (step 608).
【0045】やがて、CPU201がキャッシュ・ライ
ンA+1を要求し得る(ステップ608)。再度、PC
C404は、キャッシュ・ラインA+1がL1キャッシ
ュ202内に存在するか否かを判断する(ステップ60
9)。存在する場合、ステップ610でキャッシュ・ラ
インA+1がCPU201に返却され、プロセスはステ
ップ611で終了する。すなわち、キャッシュ・ライン
A+1がL1キャッシュ202内に存在するので、スト
リーム・フィルタ403との比較は実行されず、A+1
エントリはフィルタ置換アルゴリズムにより退却される
まで、フィルタ403内に留まる。フィルタ置換アルゴ
リズムは、係属中の米国特許出願番号第519032号
における教示に従い実行され得る。しかしながら、L1
キャッシュ202内でキャッシュ・ラインA+1に対す
るミスが発生すると、フィルタ・ヒットが発生し(ステ
ップ637)、プロセスはステップ612に移行して、
キャッシュ・ラインA+2で開始するキャッシュ・ライ
ン・ストリームが割当てられる。なぜなら、要求キャッ
シュ・ラインA+1のアドレスが、ストリーム・フィル
タ403内に存在するアドレスA+1と比較され、結果
的にストリーム・フィルタ403内でヒットが生じるか
らである。次にステップ613で、キャッシュ・ライン
A+1がL2キャッシュ203またはメモリ209か
ら、L1キャッシュ202にフェッチされる。また、キ
ャッシュ・ラインA+2が、L1キャッシュ202内に
存在するか否かがチェックされる。存在しない場合、キ
ャッシュ・ラインA+2がL2キャッシュ203または
メモリ209から、L1キャッシュ202にプリフェッ
チされる。Eventually, CPU 201 may request cache line A + 1 (step 608). PC again
C404 determines whether cache line A + 1 exists in L1 cache 202 (step 60).
9). If so, then cache line A + 1 is returned to CPU 201 at step 610 and the process ends at step 611. That is, since the cache line A + 1 exists in the L1 cache 202, the comparison with the stream filter 403 is not executed, and A + 1
The entry remains in the filter 403 until it is retired by the filter replacement algorithm. The filter permutation algorithm may be implemented in accordance with the teachings in pending US Patent Application No. 519032. However, L1
When a miss occurs for cache line A + 1 in cache 202, a filter hit occurs (step 637) and the process moves to step 612.
A cache line stream starting with cache line A + 2 is allocated. This is because the address of the requested cache line A + 1 is compared with the address A + 1 existing in the stream filter 403, resulting in a hit in the stream filter 403. Then, in step 613, cache line A + 1 is fetched from L2 cache 203 or memory 209 to L1 cache 202. Also, it is checked whether the cache line A + 2 exists in the L1 cache 202. If not, cache line A + 2 is prefetched from L2 cache 203 or memory 209 to L1 cache 202.
【0046】その後、ステップ614で、キャッシュ・
ラインA+3がL2キャッシュ203内に存在するか否
かが判断される。存在しない場合、プロセスはステップ
615に移行し、キャッシュ・ラインA+3がメモリ2
09からプリフェッチされ、プリフェッチ・バッファP
BFR402内に挿入される。しかしながら、キャッシ
ュ・ラインA+3がL2キャッシュ203内に存在する
場合には、プロセスはステップ615をスキップする。Then, in step 614, the cache
It is determined whether or not the line A + 3 exists in the L2 cache 203. If not, the process moves to step 615 where cache line A + 3 is in memory 2
09, prefetched from prefetch buffer P
It is inserted into BFR402. However, if cache line A + 3 is present in L2 cache 203, the process skips step 615.
【0047】再度、ステップ615からステップ616
への破線矢印は、ステップ616がステップ615の直
後に必ずしも発生しないことを示す。Again, steps 615 to 616
The dashed arrow to indicates that step 616 does not necessarily occur immediately after step 615.
【0048】ステップ616では、プロセッサ201は
キャッシュ・ラインA+2を要求し得り、その場合、ラ
インA+2に対するアクセスが、L1キャッシュ202
から実行される。ステップ613で、キャッシュ・ライ
ンA+2がL1キャッシュ202にフェッチされたの
で、L1キャッシュ202はこのキャッシュ・ラインを
CPU201に供給することができる。ステップ617
で、アドレスA+3をストリームの先頭に有するよう
に、ストリーム・アドレス・バッファ501内のストリ
ーム・アドレスが更新される。その後、ステップ618
で、キャッシュ・ラインA+3がL1キャッシュ202
内に存在するか否かがチェックされ、存在しない場合、
キャッシュ・ラインA+3がL2キャッシュ203また
はPBFR402から、L1キャッシュ202にフェッ
チされる。次にステップ619で、キャッシュ・ライン
A+4がL2キャッシュ203またはメモリ209か
ら、PBFR402にフェッチされる。At step 616, the processor 201 may request cache line A + 2, in which case an access to line A + 2 will result in L1 cache 202.
Run from At step 613, cache line A + 2 has been fetched into the L1 cache 202, so the L1 cache 202 can supply this cache line to the CPU 201. Step 617
Then, the stream address in the stream address buffer 501 is updated so as to have the address A + 3 at the head of the stream. Then, step 618
So, cache line A + 3 is L1 cache 202
If it does not exist, it is checked whether it exists in
Cache line A + 3 is fetched from L2 cache 203 or PBFR 402 into L1 cache 202. Then, in step 619, cache line A + 4 is fetched into PBFR 402 from L2 cache 203 or memory 209.
【0049】その後、システム200内でブラスト・モ
ードが許可されていなければ(ステップ620)、プロ
セスはステップ616に戻り、CPU201が図示のよ
うに、キャッシュ・ラインを順次増分し続ける限り("
ストリーミング"として参照される)、ステップ616
乃至621をループする。ステップ621は、その後ス
テップ616において、ラインA+3に対するL1キャ
ッシュ・アクセスが発生し、ステップ617でストリー
ムがアドレスA+3により更新され、ステップ618
で、ラインA+4がL1キャッシュ202からフェッチ
され、ステップ619で、キャッシュ・ラインA+4が
PBFR402からフェッチされることを示す。Thereafter, if blast mode is not allowed in system 200 (step 620), the process returns to step 616 and as long as CPU 201 continues incrementing cache lines sequentially as shown ("
Referred to as "streaming"), step 616
Through 621. Step 621 then proceeds to step 616 where an L1 cache access to line A + 3 occurs, the stream is updated with address A + 3 at step 617 and step 618.
Indicates that line A + 4 is fetched from L1 cache 202 and that cache line A + 4 is fetched from PBFR 402 at step 619.
【0050】上述の説明はデータ・プリフェッチ・モー
ドを示すものである。ステップ620で、ブラスト・モ
ードがシステム200において許可されている場合、プ
ロセスはステップ622に移行し、CPU201からキ
ャッシュ・ラインA+3に対する要求が発生する。ステ
ップ622で、こうした要求に対して、PCC404が
L1キャッシュ202内でキャッシュ・ラインA+3を
探索する。キャッシュ・ラインA+3は、ステップ61
8によりL1キャッシュ202内に存在するので、キャ
ッシュ・ラインA+3がCPU201に返却される。そ
の後、ステップ623で、ストリーム・アドレス・バッ
ファ501内のストリーム・アドレスが、A+4に更新
される。ステップ624で、L1キャッシュ202にラ
インA+4が存在するか否かがテストされる。存在しな
い場合、キャッシュ・ラインA+4が、PBFR402
から、L1キャッシュ202内のプリフェッチ・バッフ
ァ位置にフェッチされる。The above description shows the data prefetch mode. In step 620, if blast mode is allowed in system 200, the process moves to step 622 and a request is issued from CPU 201 for cache line A + 3. At step 622, PCC 404 searches cache line A + 3 in L1 cache 202 for such a request. Cash line A + 3 is step 61
The cache line A + 3 is returned to the CPU 201 because it exists in the L1 cache 202 due to 8. Then, in step 623, the stream address in stream address buffer 501 is updated to A + 4. At step 624, it is tested whether line A + 4 exists in L1 cache 202. If not present, cache line A + 4 becomes PBFR402.
From the prefetch buffer location in the L1 cache 202.
【0051】その後、ステップ625で、キャッシュ・
ラインA+5がL2キャッシュ203内に存在するか否
かが判断される。存在する場合、プロセスはステップ6
26または627に移行する。本技法は、ノード制御装
置205があらゆるストリーム・バッファ・アクセスを
通知されることを要求する。通知が、次のストリーム・
バッファがL2キャッシュ203内に存在せず、従って
フェッチされる必要がある場合に限られると、ノード制
御装置バッファ405及び406が一時的にプロセッサ
201との同期を逸する。この設計のトレードオフの利
点は、ステップ626及び627が結合され、ノード制
御装置205に対するアドレス・バス・トラフィックを
低減することである。最初の場合では、A、A+1など
のラインは、プリフェッチ以前にキャッシュ202内に
存在せず、従って通常、キャッシュ・ラインA+5がL
2キャッシュ203内に存在することは期待できない。Then, in step 625, the cache
It is determined whether or not the line A + 5 exists in the L2 cache 203. If so, the process is step 6
26 or 627. This technique requires the node controller 205 to be notified of any stream buffer access. The notification is the next stream
The node controller buffers 405 and 406 temporarily lose synchronization with the processor 201 only when the buffer is not in the L2 cache 203 and therefore needs to be fetched. The advantage of this design trade-off is that steps 626 and 627 are combined to reduce address bus traffic to node controller 205. In the first case, the lines A, A + 1, etc. do not exist in cache 202 prior to prefetching, so cache line A + 5 is typically L.
2 It cannot be expected to exist in the cache 203.
【0052】ステップ626及び627が上述の理由か
ら結合されるとき、ステップ627の通知は、ステップ
626のプリフェッチに追加される4ビットの制御ビッ
トにより実現され得る。4ビットは、1ビットの有効プ
リフェッチと、2ビットのストリーム識別と、1ビット
のプリフェッチ方向を含む。キャッシュ・ラインA+5
のアドレス及びこれらのビットから、ノード制御装置2
05は、キャッシュ・ラインA+6及びA+7に対する
メモリ要求を生成する。前述のように、ノード制御装置
205は任意の数のキャッシュ・ラインをプリフェッチ
するように実現され得る。ステップ628では、ノード
制御装置205はキャッシュ・ラインA+6をプリフェ
ッチ・バッファPBFR2 405にプリフェッチし、
キャッシュ・ラインA+7を、プリフェッチ・バッファ
PBFR3 406にプリフェッチする。When steps 626 and 627 are combined for the reasons set forth above, the notification of step 627 may be realized by the four control bits added to the prefetch of step 626. The 4 bits include a 1-bit valid prefetch, a 2-bit stream identification, and a 1-bit prefetch direction. Cash line A + 5
From the address of the node and these bits, the node controller 2
05 generates memory requests for cache lines A + 6 and A + 7. As mentioned above, the node controller 205 may be implemented to prefetch any number of cache lines. In step 628, node controller 205 prefetches cache line A + 6 into prefetch buffer PBFR2 405,
Prefetch cache line A + 7 into prefetch buffer PBFR3 406.
【0053】ステップ628とステップ629との間の
破線矢印は、キャッシュ・ラインA+4に対するCPU
201からの要求が、ステップ628の直後に必ずしも
発生しないことを示す。The dashed arrow between steps 628 and 629 indicates the CPU for cache line A + 4.
It indicates that the request from 201 does not necessarily occur immediately after step 628.
【0054】ステップ629では、CPU201による
キャッシュ・ラインA+4要求に対して、L1キャッシ
ュ202がアクセスされる。キャッシュ・ラインA+4
はステップ624でL1キャッシュ202に挿入されて
いるので、キャッシュ・ラインA+4がCPU201に
返却される。ステップ630では、ストリーム・アドレ
スが増分され、アドレスA+5により先導される。ステ
ップ631では、キャッシュ・ラインA+5がL1キャ
ッシュ202内に存在するか否かがチェックされ、存在
しない場合、キャッシュ・ラインA+5がL2キャッシ
ュ203またはバッファ402から、L1キャッシュ2
02にフェッチされる。In step 629, the L1 cache 202 is accessed in response to the cache line A + 4 request by the CPU 201. Cash line A + 4
Has been inserted into the L1 cache 202 in step 624, the cache line A + 4 is returned to the CPU 201. In step 630, the stream address is incremented and led by address A + 5. In step 631, it is checked whether the cache line A + 5 exists in the L1 cache 202, and if not, the cache line A + 5 is transferred from the L2 cache 203 or the buffer 402 to the L1 cache 2
02 is fetched.
【0055】その後、ステップ632で、キャッシュ・
ラインA+6がPBFR2 405からPBFR402
に転送される。ステップ633では、キャッシュ・ライ
ンA+7がPBFR3 406からPBFR2 405
に転送される。その後、ステップ634で、ノード制御
装置205が、キャッシュ・ラインA+8をプリフェッ
チするように通知される。本技法では、ステップ632
におけるキャッシュ・ラインA+6のフェッチは、ノー
ド制御装置205に、キャッシュ・ラインA+8をプリ
フェッチするように通知する(ステップ634)。ステ
ップ635で、ノード制御装置205は、キャッシュ・
ラインA+8をメモリ209からPBFR3 406に
プリフェッチする。Then, in step 632, the cache
Line A + 6 is from PBFR2 405 to PBFR402
Is forwarded to In step 633, cache line A + 7 is from PBFR3 406 to PBFR2 405.
Is forwarded to Then, at step 634, the node controller 205 is notified to prefetch cache line A + 8. In the present technique, step 632
The fetch of the cache line A + 6 in (1) notifies the node controller 205 to prefetch the cache line A + 8 (step 634). In step 635, the node controller 205 determines whether the cache
Prefetch line A + 8 from memory 209 into PBFR3 406.
【0056】その後、CPU201がキャッシュ・ライ
ンを順次増分しながらアクセスし続ける限り(すなわ
ち、CPU201が割当てられたストリーム内のキャッ
シュ・ラインをアクセスし続ける)、プロセスは増分方
式で(ステップ636)、ステップ629乃至636を
ループし続ける。Thereafter, as long as CPU 201 continues to access the cache line while incrementing it sequentially (ie, CPU 201 continues to access the cache line in the allocated stream), the process is incremental (step 636) and steps Continue looping through 629 through 636.
【0057】上述の議論では、バス・インタフェース
(BIU)401は、システム・メモリ209からキャ
ッシュ・ラインのフェッチを実行する。In the above discussion, bus interface (BIU) 401 performs a cache line fetch from system memory 209.
【0058】ノード制御装置205はスイッチ207上
のポートであり得る。The node controller 205 can be a port on the switch 207.
【0059】有効アドレスはページ境界に跨り連続的で
あり、実アドレスは連続的でないので、ストリーム・ア
ドレス・バッファ501内で2つのアドレスを比較する
とき、有効アドレスを使用することがしばしば有利であ
る。更に、増分アドレスを生成するために、カウンタが
使用されてもよい。Since effective addresses are contiguous across page boundaries and real addresses are not contiguous, it is often advantageous to use effective addresses when comparing two addresses in stream address buffer 501. . Further, a counter may be used to generate the incremental address.
【0060】上述のように、BIU401からメモリ2
09へのフェッチにおいて、制御ビットが使用され、ノ
ード制御装置205に、キャッシュ・ラインをPBFR
2405及びPBFR3 406にプリフェッチするよ
うに通知する。1ビットがノード制御装置205に、こ
の特定のライン要求が、ノード制御装置205によるそ
のバッファへのプリフェッチの実行を要求する旨を通知
し得る。別の2ビットは、ノード制御装置に、プリフェ
ッチに関連付けられるストリーム番号を通知し得る。別
の1ビットは、アドレスが進行するキャッシュ・ライン
の方向を示し得る。ノード制御装置205はプリフェッ
チを実行するように通知されるとき、こうしたプリフェ
ッチを、CPU201の動作とは独立に実行し得る。As mentioned above, from BIU 401 to memory 2
On fetch to 09, the control bit is used to direct the node controller 205 to cache line PBFR.
Notify 2405 and PBFR3 406 to prefetch. A one bit may inform node controller 205 that this particular line request requires node controller 205 to perform a prefetch into its buffer. Another two bits may inform the node controller of the stream number associated with the prefetch. Another one bit may indicate the direction of the cache line the address progresses. When the node controller 205 is notified to perform a prefetch, such a prefetch may be performed independently of the operation of the CPU 201.
【0061】L1キャッシュ202及びL2キャッシュ
203を含む場合、前記プロシジャにおいて、キャッシ
ュ・ラインがPBFR402からL1キャッシュ202
に転送されるとき、同一のキャッシュ・ラインがL2キ
ャッシュ203内にも含まれることになる。In the case of including the L1 cache 202 and the L2 cache 203, in the above procedure, the cache line is from the PBFR 402 to the L1 cache 202.
The same cache line will also be included in the L2 cache 203 when transferred to.
【0062】L1キャッシュ202内にストリーム・バ
ッファ・ラインの1つを有する利点は、L1キャッシュ
202内のそのバッファ・ライン内に含まれる特定のキ
ャッシュ・ラインが、プロセッサ201により要求され
るときに、L1キャッシュ202内でミスではなく、ヒ
ットが発生することである。技術的には、たとえ要求さ
れるキャッシュ・ラインが、L1キャッシュ202に接
続される別のバッファ内に含まれていても、ミスは発生
する。こうしたミスにより、そのキャッシュ・ラインを
そのストリーム・バッファ・ラインからCPU201に
取り出すために、余分なハードウェア及びサイクル時間
が要求される。論理的には、ストリーム・バッファ・キ
ャッシュ・ラインの1つとして作用するL1キャッシュ
202内のキャッシュ・ラインは、プリフェッチ・スト
リーム・バッファ内に含まれると称される。The advantage of having one of the stream buffer lines in L1 cache 202 is that when a particular cache line contained within that buffer line in L1 cache 202 is requested by processor 201, A hit occurs in the L1 cache 202 instead of a miss. Technically, a miss will occur even if the requested cache line is contained within another buffer connected to the L1 cache 202. These misses require extra hardware and cycle time to fetch the cache line from the stream buffer line to the CPU 201. Logically, the cache line in L1 cache 202 that acts as one of the stream buffer cache lines is said to be contained within the prefetch stream buffer.
【0063】まとめとして、本発明の構成に関して以下
の事項を開示する。In summary, the following items are disclosed regarding the configuration of the present invention.
【0064】(1)プロセッサと、前記プロセッサにバ
スを介して接続されるシステム・メモリと、前記プロセ
ッサに接続される第1のキャッシュと、前記プロセッサ
に接続される第2のキャッシュと、前記システム・メモ
リからプリフェッチされる1つ以上のデータ・ラインを
記憶するストリーム・バッファ回路と、プリフェッチ状
態を示すストリーム・フィルタ回路と、前記ストリーム
・フィルタ回路に接続され、前記システム・メモリから
前記第1及び第2のキャッシュ、並びに前記ストリーム
・バッファ回路へのデータのフェッチ及びプリフェッチ
を選択的に制御する制御回路と、を含む、データ処理シ
ステム。 (2)前記制御回路が、第1のキャッシュ・ラインに対
する要求を前記プロセッサから受信する回路と、前記第
1のキャッシュ・ラインが前記第1のキャッシュ内に存
在するか否かを判断する回路と、前記第1のキャッシュ
・ラインが前記第1のキャッシュ内に存在せず、前記第
1のキャッシュ・ラインが前記第2のキャッシュ内に存
在する場合、前記第1のキャッシュ・ラインを前記第2
のキャッシュから前記第1のキャッシュにフェッチする
回路と、前記第1のキャッシュ・ラインが前記第2のキ
ャッシュ内に存在しない場合、前記第1のキャッシュ・
ラインを前記システム・メモリから前記第1のキャッシ
ュにフェッチする回路と、前記第1のキャッシュ・ライ
ンのアドレスを増分し、第1の増分アドレスを生成する
回路と、前記増分アドレスを前記ストリーム・フィルタ
に記憶する回路と、を含む、前記(1)記載のシステ
ム。 (3)前記制御回路が、前記増分アドレスを有する第2
のキャッシュ・ラインに対する要求を前記プロセッサか
ら受信する回路と、前記第2のキャッシュ・ラインが前
記第1のキャッシュ内に存在するか否かを判断する回路
と、前記増分アドレスが前記ストリーム・フィルタ内に
存在するか否かを判断する回路と、前記増分アドレスを
増分し、第2の増分アドレスを生成する回路と、前記第
2の増分アドレスで開始するストリームを割当てる回路
と、前記第2の増分アドレスを有する第3のキャッシュ
・ラインが、前記第1のキャッシュ内に存在するか否か
を判断する回路と、前記第2のキャッシュ・ラインが前
記第2のキャッシュ内に存在し、前記第2のキャッシュ
・ラインが前記第1のキャッシュ内に存在しない場合、
前記第2のキャッシュ・ラインを前記第2のキャッシュ
から前記第1のキャッシュにフェッチする回路と、前記
第2のキャッシュ・ラインが前記第2のキャッシュ内に
存在しない場合、前記第2のキャッシュ・ラインを前記
システム・メモリから前記第1のキャッシュにフェッチ
する回路と、前記第3のキャッシュ・ラインが前記第2
のキャッシュ内に存在し、前記第3のキャッシュ・ライ
ンが前記第1のキャッシュ内に存在しない場合、前記第
3のキャッシュ・ラインを前記第2のキャッシュから前
記第1のキャッシュにプリフェッチする回路と、前記第
3のキャッシュ・ラインが前記第2のキャッシュ内に存
在しない場合、前記第3のキャッシュ・ラインを前記シ
ステム・メモリから前記第1のキャッシュにプリフェッ
チする回路と、を含む、前記(2)記載のシステム。 (4)前記第2の増分アドレスを増分し、第3の増分ア
ドレスを生成する回路と、前記第3の増分アドレスを有
する第4のキャッシュ・ラインが、前記第2のキャッシ
ュ内に存在するか否かを判断する回路と、前記第4のキ
ャッシュ・ラインが前記第2のキャッシュ内に存在しな
い場合、前記第4のキャッシュ・ラインを前記システム
・メモリから前記ストリーム・バッファ回路にプリフェ
ッチする回路と、前記第3のキャッシュ・ラインに対す
る要求を前記プロセッサから受信する回路と、前記第3
のキャッシュ・ラインを前記第1のキャッシュから前記
プロセッサに送信する回路と、前記第4のキャッシュ・
ラインが前記第1のキャッシュ内に存在するか否かを判
断する回路と、前記第4のキャッシュ・ラインが前記第
2のキャッシュ内に存在する場合、前記第4のキャッシ
ュ・ラインを前記第2のキャッシュから前記第1のキャ
ッシュにフェッチする回路と、前記第4のキャッシュ・
ラインが前記第2のキャッシュ内に存在しない場合、前
記第4のキャッシュ・ラインを前記ストリーム・バッフ
ァ回路から前記第1のキャッシュにフェッチする回路
と、前記第3の増分アドレスを増分し、第4の増分アド
レスを生成する回路と、前記第4の増分アドレスを有す
る第5のキャッシュ・ラインが、前記第2のキャッシュ
内に存在するか否かを判断する回路と、前記第5のキャ
ッシュ・ラインが前記第2のキャッシュ内に存在する場
合、前記第5のキャッシュ・ラインを前記第2のキャッ
シュから前記ストリーム・バッファ回路にフェッチする
回路と、前記第5のキャッシュ・ラインが前記第2のキ
ャッシュ内に存在しない場合、前記第5のキャッシュ・
ラインを前記システム・メモリから前記ストリーム・バ
ッファ回路にプリフェッチする回路と、を含む、前記
(3)記載のシステム。 (5)前記ストリーム・バッファ回路に記憶される1つ
以上のキャッシュ・ラインが、前記第1のキャッシュ内
に配置される、前記(1)記載のシステム。 (6)前記ストリーム・バッファ回路に記憶される1つ
以上のキャッシュ・ラインが、前記プロセッサを含むチ
ップ内に配置される、前記(1)記載のシステム。 (7)前記ストリーム・バッファ回路に記憶される1つ
以上のキャッシュ・ラインが、前記プロセッサ及び前記
システム・メモリに接続されるノード制御装置内に配置
される、前記(1)記載のシステム。 (8)前記第1のキャッシュが前記プロセッサと同一チ
ップ上に配置される1次キャッシュであり、前記第2の
キャッシュが前記チップの外部に配置される2次キャッ
シュである、前記(1)記載のシステム。 (9)前記ストリーム・フィルタ回路が複数のストリー
ムを追跡可能であり、前記ストリーム・フィルタ回路内
の各エントリが、前記複数のストリームの1つを追跡
し、前記各エントリが、当該エントリにより追跡される
前記ストリームの妥当性を示す第1の標識と、当該エン
トリのアドレスの増分方向を示す第2の標識とを含む、
前記(1)記載のシステム。 (10)前記ストリーム・バッファ回路が各エントリに
対して、1)ページ・アドレスと、2)ライン・アドレ
スと、3)妥当性標識とを含む、前記(1)記載のシス
テム。 (11)前記ストリーム・フィルタ回路内のエントリが
実アドレスを有し、前記ストリーム・バッファ回路内の
エントリが有効アドレスを有する、前記(1)記載のシ
ステム。 (12)前記プロセッサ、前記制御回路、前記ストリー
ム・フィルタ回路、前記第1のキャッシュ、及び前記ス
トリーム・バッファ回路の一部が、同一チップ上に配置
される、前記(1)記載のシステム。 (13)第2のプロセッサと、前記第2のプロセッサに
接続される前記システム・メモリと、前記第2のプロセ
ッサに接続される第3のキャッシュと、前記第2のプロ
セッサに接続される第4のキャッシュと、前記第2のプ
ロセッサに接続され、前記システム・メモリからプリフ
ェッチされる1つ以上のデータ・ラインを記憶する第2
のストリーム・バッファ回路と、前記第2のプロセッサ
に接続され、プリフェッチ状態を示す第2のストリーム
・フィルタ回路と、前記第2のストリーム・フィルタ回
路に接続され、前記システム・メモリから前記第3及び
第4のキャッシュ、並びに前記第2のストリーム・バッ
ファ回路へのデータのフェッチ及びプリフェッチを選択
的に制御する、第2の制御回路と、を含む、前記(1)
記載のシステム。 (14)データ処理システムにおいて、第1のキャッシ
ュ・ラインに対する要求を前記プロセッサから受信する
ステップと、前記第1のキャッシュ・ラインが第1のキ
ャッシュ内に存在するか否かを判断するステップと、前
記第1のキャッシュ・ラインが前記第1のキャッシュ内
に存在せず、前記第1のキャッシュ・ラインが前記第2
のキャッシュ内に存在する場合、前記第1のキャッシュ
・ラインを前記第2のキャッシュから前記第1のキャッ
シュにフェッチするステップと、前記第1のキャッシュ
・ラインが前記第2のキャッシュ内に存在しない場合、
前記第1のキャッシュ・ラインを前記システム・メモリ
から前記第1のキャッシュにフェッチするステップと、
前記第1のキャッシュ・ラインのアドレスを増分し、第
1の増分アドレスを生成するステップと、前記増分アド
レスをストリーム・フィルタに記憶するステップと、を
含む、方法。 (15)前記増分アドレスを有する第2のキャッシュ・
ラインに対する要求を前記プロセッサから受信するステ
ップと、前記第2のキャッシュ・ラインが前記第1のキ
ャッシュ内に存在するか否かを判断するステップと、前
記増分アドレスが前記ストリーム・フィルタ内に存在す
るか否かを判断するステップと、前記増分アドレスを増
分し、第2の増分アドレスを生成するステップと、前記
第2の増分アドレスで開始するストリームを割当てるス
テップと、前記第2の増分アドレスを有する第3のキャ
ッシュ・ラインが、前記第1のキャッシュ内に存在する
か否かを判断するステップと、前記第2のキャッシュ・
ラインが前記第2のキャッシュ内に存在し、前記第2の
キャッシュ・ラインが前記第1のキャッシュ内に存在し
ない場合、前記第2のキャッシュ・ラインを前記第2の
キャッシュから前記第1のキャッシュにフェッチするス
テップと、前記第2のキャッシュ・ラインが前記第2の
キャッシュ内に存在しない場合、前記第2のキャッシュ
・ラインを前記システム・メモリから前記第1のキャッ
シュにフェッチするステップと、前記第3のキャッシュ
・ラインが前記第2のキャッシュ内に存在し、前記第3
のキャッシュ・ラインが前記第1のキャッシュ内に存在
しない場合、前記第3のキャッシュ・ラインを前記第2
のキャッシュから前記第1のキャッシュにプリフェッチ
するステップと、前記第3のキャッシュ・ラインが前記
第2のキャッシュ内に存在しない場合、前記第3のキャ
ッシュ・ラインを前記システム・メモリから前記第1の
キャッシュにプリフェッチするステップと、を含む、前
記(14)記載の方法。 (16)前記第2の増分アドレスを増分し、第3の増分
アドレスを生成するステップと、前記第3の増分アドレ
スを有する第4のキャッシュ・ラインが、前記第2のキ
ャッシュ内に存在するか否かを判断するステップと、前
記第4のキャッシュ・ラインが前記第2のキャッシュ内
に存在しない場合、前記第4のキャッシュ・ラインを前
記システム・メモリから前記ストリーム・バッファ回路
にプリフェッチするステップと、前記第3のキャッシュ
・ラインに対する要求を前記プロセッサから受信するス
テップと、前記第3のキャッシュ・ラインを前記第1の
キャッシュから前記プロセッサに送信するステップと、
前記第4のキャッシュ・ラインが前記第1のキャッシュ
内に存在するか否かを判断するステップと、前記第4の
キャッシュ・ラインが前記第2のキャッシュ内に存在す
る場合、前記第4のキャッシュ・ラインを前記第2のキ
ャッシュから前記第1のキャッシュにフェッチするステ
ップと、前記第4のキャッシュ・ラインが前記第2のキ
ャッシュ内に存在しない場合、前記第4のキャッシュ・
ラインを前記ストリーム・バッファ回路から前記第1の
キャッシュにフェッチするステップと、前記第3の増分
アドレスを増分し、第4の増分アドレスを生成するステ
ップと、前記第4の増分アドレスを有する第5のキャッ
シュ・ラインが、前記第2のキャッシュ内に存在するか
否かを判断するステップと、前記第5のキャッシュ・ラ
インが前記第2のキャッシュ内に存在する場合、前記第
5のキャッシュ・ラインを前記第2のキャッシュから前
記ストリーム・バッファ回路にフェッチするステップ
と、前記第5のキャッシュ・ラインが前記第2のキャッ
シュ内に存在しない場合、前記第5のキャッシュ・ライ
ンを前記システム・メモリから前記ストリーム・バッフ
ァ回路にプリフェッチするステップと、を含む、前記
(15)記載の方法。 (17)前記ストリーム・バッファ回路に記憶される1
つ以上のキャッシュ・ラインが、前記第1のキャッシュ
内に配置される、前記(16)記載の方法。 (18)前記第1のキャッシュが前記プロセッサと同一
チップ上に配置される1次キャッシュであり、前記第2
のキャッシュが前記チップの外部に配置される2次キャ
ッシュである、前記(17)記載の方法。 (19)前記ストリーム・フィルタ回路が複数のストリ
ームを追跡可能であり、前記ストリーム・フィルタ回路
内の各エントリが、前記複数のストリームの1つを追跡
し、前記各エントリが、当該エントリにより追跡される
前記ストリームの妥当性を示す第1の標識と、当該エン
トリのアドレスの増分方向を示す第2の標識とを含む、
前記(18)記載の方法。 (20)前記ストリーム・フィルタ回路内のエントリが
実アドレスを有し、前記ストリーム・バッファ回路内の
エントリが有効アドレスを有する、前記(19)記載の
方法。(1) A processor, a system memory connected to the processor via a bus, a first cache connected to the processor, a second cache connected to the processor, and the system A stream buffer circuit for storing one or more data lines prefetched from a memory, a stream filter circuit indicating a prefetch state, and a stream filter circuit connected to the stream filter circuit, the first and the second from the system memory A data processing system, comprising: a second cache; and a control circuit that selectively controls fetching and prefetching of data to the stream buffer circuit. (2) A circuit in which the control circuit receives a request for a first cache line from the processor, and a circuit in which it is determined whether the first cache line exists in the first cache. , If the first cache line is not in the first cache and the first cache line is in the second cache, then the first cache line is replaced by the second cache line.
For fetching from the first cache to the first cache, and if the first cache line is not present in the second cache, the first cache
A circuit for fetching a line from the system memory into the first cache; a circuit for incrementing the address of the first cache line to generate a first increment address; and the increment address for the stream filter The circuit according to (1) above, comprising: (3) The second control circuit has the increment address.
A request for a cache line from the processor, a circuit for determining whether the second cache line is in the first cache, and the incremental address in the stream filter. A circuit for determining whether or not there is a second increment address, a circuit for incrementing the increment address to generate a second increment address, a circuit for allocating a stream starting at the second increment address, and the second increment. A circuit for determining whether a third cache line having an address is present in the first cache; the second cache line is present in the second cache; Cache line is not present in the first cache,
A circuit for fetching the second cache line from the second cache to the first cache; and the second cache line if the second cache line is not present in the second cache. A circuit for fetching a line from the system memory into the first cache; and the third cache line with the second cache line.
Of the third cache line and the third cache line is not present in the first cache, the circuit for prefetching the third cache line from the second cache to the first cache. And prefetching the third cache line from the system memory into the first cache if the third cache line is not present in the second cache. ) The system described. (4) Whether a circuit for incrementing the second increment address and generating a third increment address and a fourth cache line having the third increment address are present in the second cache. A circuit for determining whether or not the fourth cache line is present in the second cache, and a circuit for prefetching the fourth cache line from the system memory to the stream buffer circuit. A circuit for receiving a request for the third cache line from the processor;
A cache line from the first cache to the processor;
A circuit for determining whether a line is present in the first cache; and if the fourth cache line is present in the second cache, the fourth cache line is set to the second cache line. Circuit for fetching from the first cache to the first cache;
A circuit for fetching the fourth cache line from the stream buffer circuit to the first cache if the line is not in the second cache; and incrementing the third increment address, A fifth cache line having a fifth cache line having the fourth increment address in the second cache, and a fifth cache line having a fifth cache line having the fourth increment address. Exists in the second cache, a circuit for fetching the fifth cache line from the second cache to the stream buffer circuit; and a fifth cache line for the second cache If not present in the fifth cache,
A circuit for prefetching a line from the system memory into the stream buffer circuit. (5) The system according to (1), wherein one or more cache lines stored in the stream buffer circuit are arranged in the first cache. (6) The system according to (1), wherein one or more cache lines stored in the stream buffer circuit are arranged in a chip including the processor. (7) The system according to (1), wherein one or more cache lines stored in the stream buffer circuit are arranged in a node controller connected to the processor and the system memory. (8) The above-mentioned (1), wherein the first cache is a primary cache arranged on the same chip as the processor, and the second cache is a secondary cache arranged outside the chip. System. (9) The stream filter circuit can track a plurality of streams, each entry in the stream filter circuit tracks one of the plurality of streams, and each entry is tracked by the entry. A first indicator indicating the adequacy of the stream according to the present invention, and a second indicator indicating the increment direction of the address of the entry.
The system according to (1) above. (10) The system according to (1), wherein the stream buffer circuit includes, for each entry, 1) page address, 2) line address, and 3) validity indicator. (11) The system according to (1), wherein the entry in the stream filter circuit has a real address, and the entry in the stream buffer circuit has a valid address. (12) The system according to (1), wherein the processor, the control circuit, the stream filter circuit, the first cache, and part of the stream buffer circuit are arranged on the same chip. (13) A second processor, the system memory connected to the second processor, a third cache connected to the second processor, and a fourth cache connected to the second processor. Second cache connected to the second processor for storing one or more data lines prefetched from the system memory
Stream buffer circuit, a second stream filter circuit connected to the second processor and indicating a prefetch state, and a second stream filter circuit connected to the third stream filter circuit from the system memory. (4) a fourth cache, and a second control circuit for selectively controlling fetching and prefetching of data to the second stream buffer circuit.
The system described. (14) In a data processing system, receiving a request for a first cache line from the processor, and determining whether the first cache line exists in the first cache. The first cache line is not in the first cache and the first cache line is the second cache line;
Fetching the first cache line from the second cache to the first cache if it is present in the second cache, and the first cache line is not present in the second cache If
Fetching the first cache line from the system memory into the first cache;
Incrementing the address of the first cache line to generate a first increment address, and storing the increment address in a stream filter. (15) A second cache having the increment address
Receiving a request for a line from the processor, determining if the second cache line is in the first cache, and the incremental address is in the stream filter. Determining whether or not; incrementing the increment address to generate a second increment address; allocating a stream starting at the second increment address; and having the second increment address. Determining whether a third cache line is present in the first cache; and the second cache line.
A second cache line from the second cache to the first cache if a line exists in the second cache and the second cache line does not exist in the first cache. Fetching the second cache line from the system memory to the first cache if the second cache line is not present in the second cache; A third cache line is present in the second cache, the third cache line
Second cache line is not present in said first cache, said third cache line is said to be said second cache line.
Pre-fetching from said cache to said first cache; and if said third cache line is not present in said second cache, said third cache line from said system memory to said first cache line. Prefetching into a cache, the method according to (14). (16) Incrementing the second increment address to generate a third increment address, and whether a fourth cache line having the third increment address exists in the second cache. Determining if the fourth cache line is not in the second cache and prefetching the fourth cache line from the system memory to the stream buffer circuit. Receiving a request for the third cache line from the processor; sending the third cache line from the first cache to the processor;
Determining whether the fourth cache line is in the first cache; and if the fourth cache line is in the second cache, the fourth cache Fetching a line from the second cache to the first cache; and if the fourth cache line is not present in the second cache, the fourth cache
Fetching a line from the stream buffer circuit into the first cache; incrementing the third increment address to generate a fourth increment address; and a fifth having the fourth increment address. Determining whether a cache line in the second cache is present in the second cache; and if the fifth cache line is in the second cache, the fifth cache line From the second cache to the stream buffer circuit, and if the fifth cache line is not in the second cache, the fifth cache line from the system memory. Prefetching into the stream buffer circuit. (17) 1 stored in the stream buffer circuit
The method of (16) above, wherein one or more cache lines are located within the first cache. (18) The first cache is a primary cache arranged on the same chip as the processor, and the second cache
The method according to (17) above, wherein the cache is a secondary cache located outside the chip. (19) The stream filter circuit can track a plurality of streams, each entry in the stream filter circuit tracks one of the plurality of streams, and each entry is tracked by the entry. A first indicator indicating the adequacy of the stream according to the present invention, and a second indicator indicating the increment direction of the address of the entry.
The method according to (18) above. (20) The method according to (19), wherein the entry in the stream filter circuit has a real address, and the entry in the stream buffer circuit has a valid address.
【図1】本発明により構成可能なマルチプロセッサ・シ
ステムを示す図である。FIG. 1 illustrates a multiprocessor system configurable according to the present invention.
【図2】本発明により構成可能なデータ処理システムを
示す図である。FIG. 2 is a diagram illustrating a data processing system configurable according to the present invention.
【図3】ストリーム・フィルタ及びストリーム・バッフ
ァを示す図である。FIG. 3 is a diagram showing a stream filter and a stream buffer.
【図4】図2に示されるシステムの詳細を示す図であ
る。FIG. 4 is a diagram showing details of the system shown in FIG. 2.
【図5】本発明による機能図である。FIG. 5 is a functional diagram according to the present invention.
【図6】本発明のフロー図である。FIG. 6 is a flow chart of the present invention.
【図7】本発明のフロー図である。FIG. 7 is a flow chart of the present invention.
【図8】本発明のフロー図である。FIG. 8 is a flow chart of the present invention.
【図9】本発明のフロー図である。FIG. 9 is a flow chart of the present invention.
100、200 データ処理システム 202 L1キャッシュ 203 L2キャッシュ 204、206、208 バス 402 プリフェッチ・バッファ 100, 200 data processing system 202 L1 cache 203 L2 cache 204, 206, 208 bus 402 prefetch buffer
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ドゥワイン・アラン・ヒクス アメリカ合衆国78660、テキサス州プフル ガービル、ドューンズ・ドライブ 2405 (72)発明者 デビッド・スコット・レイ アメリカ合衆国78728、テキサス州ジョー ジタウン、ヤング・ランチ・ロード 700 (72)発明者 シ−シン・ステファン・タン アメリカ合衆国78726、テキサス州オース ティン、バーブルック・ドライブ 9923 ─────────────────────────────────────────────────── ─── Continued Front Page (72) Inventor Dwain Alan Hicks, USA 78660, Duffons Drive, Pflugerville, Texas 2405 (72) Inventor David Scott Ray United States 78728, Young Ranch, Texas, Young Ranch Road 700 (72) Inventor Shih Shin Stephan Tan 9923 Burbrook Drive, Austin, TX 78726, USA
Claims (20)
モリと、 前記プロセッサに接続される第1のキャッシュと、 前記プロセッサに接続される第2のキャッシュと、 前記システム・メモリからプリフェッチされる1つ以上
のデータ・ラインを記憶するストリーム・バッファ回路
と、 プリフェッチ状態を示すストリーム・フィルタ回路と、 前記ストリーム・フィルタ回路に接続され、前記システ
ム・メモリから前記第1及び第2のキャッシュ、並びに
前記ストリーム・バッファ回路へのデータのフェッチ及
びプリフェッチを選択的に制御する制御回路と、 を含む、データ処理システム。1. A processor, a system memory connected to the processor via a bus, a first cache connected to the processor, a second cache connected to the processor, and the system cache. A stream buffer circuit for storing one or more data lines prefetched from a memory; a stream filter circuit indicating a prefetch state; a stream filter circuit connected to the stream filter circuit; And a control circuit that selectively controls fetching and prefetching of data to the stream buffer circuit.
サから受信する回路と、 前記第1のキャッシュ・ラインが前記第1のキャッシュ
内に存在するか否かを判断する回路と、 前記第1のキャッシュ・ラインが前記第1のキャッシュ
内に存在せず、前記第1のキャッシュ・ラインが前記第
2のキャッシュ内に存在する場合、前記第1のキャッシ
ュ・ラインを前記第2のキャッシュから前記第1のキャ
ッシュにフェッチする回路と、 前記第1のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第1のキャッシュ・ラインを
前記システム・メモリから前記第1のキャッシュにフェ
ッチする回路と、 前記第1のキャッシュ・ラインのアドレスを増分し、第
1の増分アドレスを生成する回路と、 前記増分アドレスを前記ストリーム・フィルタに記憶す
る回路と、 を含む、請求項1記載のシステム。2. The control circuit determines a circuit for receiving a request for a first cache line from the processor, and determining whether the first cache line exists in the first cache. Circuit, if the first cache line is not in the first cache and the first cache line is in the second cache, the first cache line is A circuit for fetching from the second cache to the first cache; and if the first cache line is not present in the second cache, the first cache line from the system memory to the first cache line. And a circuit for incrementing the address of the first cache line to generate a first increment address. Including a circuit for storing said incremental address to the stream filter system of claim 1, wherein.
対する要求を前記プロセッサから受信する回路と、 前記第2のキャッシュ・ラインが前記第1のキャッシュ
内に存在するか否かを判断する回路と、 前記増分アドレスが前記ストリーム・フィルタ内に存在
するか否かを判断する回路と、 前記増分アドレスを増分し、第2の増分アドレスを生成
する回路と、 前記第2の増分アドレスで開始するストリームを割当て
る回路と、 前記第2の増分アドレスを有する第3のキャッシュ・ラ
インが、前記第1のキャッシュ内に存在するか否かを判
断する回路と、 前記第2のキャッシュ・ラインが前記第2のキャッシュ
内に存在し、前記第2のキャッシュ・ラインが前記第1
のキャッシュ内に存在しない場合、前記第2のキャッシ
ュ・ラインを前記第2のキャッシュから前記第1のキャ
ッシュにフェッチする回路と、 前記第2のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第2のキャッシュ・ラインを
前記システム・メモリから前記第1のキャッシュにフェ
ッチする回路と、 前記第3のキャッシュ・ラインが前記第2のキャッシュ
内に存在し、前記第3のキャッシュ・ラインが前記第1
のキャッシュ内に存在しない場合、前記第3のキャッシ
ュ・ラインを前記第2のキャッシュから前記第1のキャ
ッシュにプリフェッチする回路と、 前記第3のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第3のキャッシュ・ラインを
前記システム・メモリから前記第1のキャッシュにプリ
フェッチする回路と、 を含む、請求項2記載のシステム。3. The circuit for the control circuit to receive a request from the processor for a second cache line having the incremental address; and whether the second cache line is in the first cache. A circuit for determining whether or not the increment address is present in the stream filter; a circuit for incrementing the increment address to generate a second increment address; A circuit for allocating a stream starting at a second increment address; a circuit for determining whether a third cache line having the second increment address is present in the first cache; A cache line is present in the second cache, and the second cache line is the first cache line.
Circuit for fetching the second cache line from the second cache to the first cache if not present in the second cache; and the second cache line is not present in the second cache A circuit for fetching the second cache line from the system memory into the first cache; the third cache line being present in the second cache; The line is the first
Circuit for prefetching the third cache line from the second cache to the first cache if not present in the second cache; and the third cache line is not present in the second cache. A system for prefetching the third cache line from the system memory into the first cache, if desired.
増分アドレスを生成する回路と、 前記第3の増分アドレスを有する第4のキャッシュ・ラ
インが、前記第2のキャッシュ内に存在するか否かを判
断する回路と、 前記第4のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第4のキャッシュ・ラインを
前記システム・メモリから前記ストリーム・バッファ回
路にプリフェッチする回路と、 前記第3のキャッシュ・ラインに対する要求を前記プロ
セッサから受信する回路と、 前記第3のキャッシュ・ラインを前記第1のキャッシュ
から前記プロセッサに送信する回路と、 前記第4のキャッシュ・ラインが前記第1のキャッシュ
内に存在するか否かを判断する回路と、 前記第4のキャッシュ・ラインが前記第2のキャッシュ
内に存在する場合、前記第4のキャッシュ・ラインを前
記第2のキャッシュから前記第1のキャッシュにフェッ
チする回路と、 前記第4のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第4のキャッシュ・ラインを
前記ストリーム・バッファ回路から前記第1のキャッシ
ュにフェッチする回路と、 前記第3の増分アドレスを増分し、第4の増分アドレス
を生成する回路と、 前記第4の増分アドレスを有する第5のキャッシュ・ラ
インが、前記第2のキャッシュ内に存在するか否かを判
断する回路と、 前記第5のキャッシュ・ラインが前記第2のキャッシュ
内に存在する場合、前記第5のキャッシュ・ラインを前
記第2のキャッシュから前記ストリーム・バッファ回路
にフェッチする回路と、 前記第5のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第5のキャッシュ・ラインを
前記システム・メモリから前記ストリーム・バッファ回
路にプリフェッチする回路と、 を含む、請求項3記載のシステム。4. A circuit for incrementing the second increment address to generate a third increment address; and a fourth cache line having the third increment address in the second cache. A circuit for determining whether or not to do so, and if the fourth cache line is not present in the second cache, prefetch the fourth cache line from the system memory to the stream buffer circuit. A circuit, a circuit for receiving a request for the third cache line from the processor, a circuit for transmitting the third cache line from the first cache to the processor, and a fourth cache line A circuit for determining whether a cache cache is present in the first cache and the fourth cache line is connected to the second cache line. A cache for fetching the fourth cache line from the second cache to the first cache, if present in the cache; and if the fourth cache line is not present in the second cache. A circuit for fetching the fourth cache line from the stream buffer circuit to the first cache; a circuit for incrementing the third increment address to generate a fourth increment address; Circuit for determining whether a fifth cache line having an incremented address of is present in the second cache; and if the fifth cache line is present in the second cache, A circuit for fetching the fifth cache line from the second cache to the stream buffer circuit; and a fifth cache line. 4. The system of claim 3, further comprising: prefetching the fifth cache line from the system memory into the stream buffer circuit if a cache line is not present in the second cache.
る1つ以上のキャッシュ・ラインが、前記第1のキャッ
シュ内に配置される、請求項1記載のシステム。5. The system of claim 1, wherein one or more cache lines stored in the stream buffer circuit are located in the first cache.
る1つ以上のキャッシュ・ラインが、前記プロセッサを
含むチップ内に配置される、請求項1記載のシステム。6. The system of claim 1, wherein one or more cache lines stored in the stream buffer circuit are located in a chip containing the processor.
る1つ以上のキャッシュ・ラインが、前記プロセッサ及
び前記システム・メモリに接続されるノード制御装置内
に配置される、請求項1記載のシステム。7. The system of claim 1, wherein one or more cache lines stored in the stream buffer circuit are located in a node controller connected to the processor and the system memory.
同一チップ上に配置される1次キャッシュであり、前記
第2のキャッシュが前記チップの外部に配置される2次
キャッシュである、請求項1記載のシステム。8. The first cache is a primary cache located on the same chip as the processor, and the second cache is a secondary cache located outside the chip. The system described.
トリームを追跡可能であり、前記ストリーム・フィルタ
回路内の各エントリが、前記複数のストリームの1つを
追跡し、前記各エントリが、当該エントリにより追跡さ
れる前記ストリームの妥当性を示す第1の標識と、当該
エントリのアドレスの増分方向を示す第2の標識とを含
む、請求項1記載のシステム。9. The stream filter circuit is capable of tracking a plurality of streams, each entry in the stream filter circuit tracking one of the plurality of streams, and each entry according to the entry. The system of claim 1 including a first indicator of the validity of the stream being tracked and a second indicator of the incrementing direction of the address of the entry.
トリに対して、1)ページ・アドレスと、2)ライン・
アドレスと、3)妥当性標識とを含む、請求項1記載の
システム。10. The stream buffer circuit for each entry: 1) page address and 2) line.
The system of claim 1, including an address and 3) a plausibility indicator.
トリが実アドレスを有し、前記ストリーム・バッファ回
路内のエントリが有効アドレスを有する、請求項1記載
のシステム。11. The system of claim 1, wherein the entry in the stream filter circuit has a real address and the entry in the stream buffer circuit has a valid address.
トリーム・フィルタ回路、前記第1のキャッシュ、及び
前記ストリーム・バッファ回路の一部が、同一チップ上
に配置される、請求項1記載のシステム。12. The system of claim 1, wherein the processor, the control circuit, the stream filter circuit, the first cache, and a portion of the stream buffer circuit are located on the same chip.
リと、 前記第2のプロセッサに接続される第3のキャッシュ
と、 前記第2のプロセッサに接続される第4のキャッシュ
と、 前記第2のプロセッサに接続され、前記システム・メモ
リからプリフェッチされる1つ以上のデータ・ラインを
記憶する第2のストリーム・バッファ回路と、 前記第2のプロセッサに接続され、プリフェッチ状態を
示す第2のストリーム・フィルタ回路と、 前記第2のストリーム・フィルタ回路に接続され、前記
システム・メモリから前記第3及び第4のキャッシュ、
並びに前記第2のストリーム・バッファ回路へのデータ
のフェッチ及びプリフェッチを選択的に制御する、第2
の制御回路と、 を含む、請求項1記載のシステム。13. A second processor, the system memory connected to the second processor, a third cache connected to the second processor, and connected to the second processor. A fourth cache; a second stream buffer circuit connected to the second processor for storing one or more data lines prefetched from the system memory; connected to the second processor A second stream filter circuit indicating a prefetch state, the third stream filter circuit connected to the second stream filter circuit from the system memory,
And selectively controlling fetching and prefetching of data to the second stream buffer circuit,
The control circuit of claim 1, and the system of claim 1.
サから受信するステップと、 前記第1のキャッシュ・ラインが第1のキャッシュ内に
存在するか否かを判断するステップと、 前記第1のキャッシュ・ラインが前記第1のキャッシュ
内に存在せず、前記第1のキャッシュ・ラインが前記第
2のキャッシュ内に存在する場合、前記第1のキャッシ
ュ・ラインを前記第2のキャッシュから前記第1のキャ
ッシュにフェッチするステップと、 前記第1のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第1のキャッシュ・ラインを
前記システム・メモリから前記第1のキャッシュにフェ
ッチするステップと、 前記第1のキャッシュ・ラインのアドレスを増分し、第
1の増分アドレスを生成するステップと、 前記増分アドレスをストリーム・フィルタに記憶するス
テップと、 を含む、方法。14. In a data processing system, receiving a request for a first cache line from the processor, and determining whether the first cache line is in a first cache. And said first cache line is not present in said first cache and said first cache line is present in said second cache, said first cache line is said to be said Fetching from a second cache to the first cache; if the first cache line is not present in the second cache, the first cache line from the system memory to the first cache line; To the first cache line and incrementing the address of the first cache line to increase the first increment And generating an address, and storing the incremented address to the stream filter, the method.
シュ・ラインに対する要求を前記プロセッサから受信す
るステップと、 前記第2のキャッシュ・ラインが前記第1のキャッシュ
内に存在するか否かを判断するステップと、 前記増分アドレスが前記ストリーム・フィルタ内に存在
するか否かを判断するステップと、 前記増分アドレスを増分し、第2の増分アドレスを生成
するステップと、 前記第2の増分アドレスで開始するストリームを割当て
るステップと、 前記第2の増分アドレスを有する第3のキャッシュ・ラ
インが、前記第1のキャッシュ内に存在するか否かを判
断するステップと、 前記第2のキャッシュ・ラインが前記第2のキャッシュ
内に存在し、前記第2のキャッシュ・ラインが前記第1
のキャッシュ内に存在しない場合、前記第2のキャッシ
ュ・ラインを前記第2のキャッシュから前記第1のキャ
ッシュにフェッチするステップと、 前記第2のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第2のキャッシュ・ラインを
前記システム・メモリから前記第1のキャッシュにフェ
ッチするステップと、 前記第3のキャッシュ・ラインが前記第2のキャッシュ
内に存在し、前記第3のキャッシュ・ラインが前記第1
のキャッシュ内に存在しない場合、前記第3のキャッシ
ュ・ラインを前記第2のキャッシュから前記第1のキャ
ッシュにプリフェッチするステップと、 前記第3のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第3のキャッシュ・ラインを
前記システム・メモリから前記第1のキャッシュにプリ
フェッチするステップと、 を含む、請求項14記載の方法。15. A step of receiving a request from the processor for a second cache line having the incremented address, and determining whether the second cache line is in the first cache. Determining whether the increment address is in the stream filter; incrementing the increment address to generate a second increment address; starting with the second increment address Allocating a stream to be processed, determining whether a third cache line having the second increment address is present in the first cache, and the second cache line is Is in a second cache, and the second cache line is the first cache line.
Fetching the second cache line from the second cache to the first cache if not present in the second cache line; and the second cache line is not present in the second cache. If the second cache line is fetched from the system memory into the first cache, the third cache line is in the second cache, and the third cache line is present in the third cache line. The line is the first
Pre-fetching the third cache line from the second cache to the first cache if not present in the second cache, the third cache line not present in the second cache 15. If so, then prefetching the third cache line from the system memory into the first cache.
の増分アドレスを生成するステップと、 前記第3の増分アドレスを有する第4のキャッシュ・ラ
インが、前記第2のキャッシュ内に存在するか否かを判
断するステップと、 前記第4のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第4のキャッシュ・ラインを
前記システム・メモリから前記ストリーム・バッファ回
路にプリフェッチするステップと、 前記第3のキャッシュ・ラインに対する要求を前記プロ
セッサから受信するステップと、 前記第3のキャッシュ・ラインを前記第1のキャッシュ
から前記プロセッサに送信するステップと、 前記第4のキャッシュ・ラインが前記第1のキャッシュ
内に存在するか否かを判断するステップと、 前記第4のキャッシュ・ラインが前記第2のキャッシュ
内に存在する場合、前記第4のキャッシュ・ラインを前
記第2のキャッシュから前記第1のキャッシュにフェッ
チするステップと、 前記第4のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第4のキャッシュ・ラインを
前記ストリーム・バッファ回路から前記第1のキャッシ
ュにフェッチするステップと、 前記第3の増分アドレスを増分し、第4の増分アドレス
を生成するステップと、 前記第4の増分アドレスを有する第5のキャッシュ・ラ
インが、前記第2のキャッシュ内に存在するか否かを判
断するステップと、 前記第5のキャッシュ・ラインが前記第2のキャッシュ
内に存在する場合、前記第5のキャッシュ・ラインを前
記第2のキャッシュから前記ストリーム・バッファ回路
にフェッチするステップと、 前記第5のキャッシュ・ラインが前記第2のキャッシュ
内に存在しない場合、前記第5のキャッシュ・ラインを
前記システム・メモリから前記ストリーム・バッファ回
路にプリフェッチするステップと、 を含む、請求項15記載の方法。16. Incrementing the second increment address to increment the third increment address.
Generating an incremental address of the second cache line, determining whether a fourth cache line having the third incremental address is present in the second cache, and the fourth cache line If not present in the second cache, prefetching the fourth cache line from the system memory into the stream buffer circuit; and receiving a request for the third cache line from the processor. Sending the third cache line from the first cache to the processor, and determining whether the fourth cache line is in the first cache. And the fourth cache line resides in the second cache Fetching the fourth cache line from the second cache to the first cache; and if the fourth cache line is not in the second cache, the fourth cache line Fetching a line from the stream buffer circuit into the first cache; incrementing the third increment address to generate a fourth increment address; and a fifth having the fourth increment address. Determining whether a cache line in the second cache exists in the second cache; and if the fifth cache line exists in the second cache, the fifth cache line Fetching from the second cache into the stream buffer circuit, the fifth cache 16. The method of claim 15, comprising pre-fetching the fifth cache line from the system memory into the stream buffer circuit if a cache line is not present in the second cache.
れる1つ以上のキャッシュ・ラインが、前記第1のキャ
ッシュ内に配置される、請求項16記載の方法。17. The method of claim 16, wherein one or more cache lines stored in the stream buffer circuit are located in the first cache.
と同一チップ上に配置される1次キャッシュであり、前
記第2のキャッシュが前記チップの外部に配置される2
次キャッシュである、請求項17記載の方法。18. The first cache is a primary cache arranged on the same chip as the processor, and the second cache is arranged outside the chip.
18. The method of claim 17, which is a next cache.
ストリームを追跡可能であり、前記ストリーム・フィル
タ回路内の各エントリが、前記複数のストリームの1つ
を追跡し、前記各エントリが、当該エントリにより追跡
される前記ストリームの妥当性を示す第1の標識と、当
該エントリのアドレスの増分方向を示す第2の標識とを
含む、請求項18記載の方法。19. The stream filter circuit is capable of tracking a plurality of streams, each entry in the stream filter circuit tracking one of the plurality of streams, and each entry according to the entry. 19. The method of claim 18, including a first indicator of the validity of the stream being tracked and a second indicator of the incrementing direction of the address of the entry.
トリが実アドレスを有し、前記ストリーム・バッファ回
路内のエントリが有効アドレスを有する、請求項19記
載の方法。20. The method of claim 19, wherein the entry in the stream filter circuit has a real address and the entry in the stream buffer circuit has a valid address.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/554180 | 1995-11-06 | ||
| US08/554,180 US6085291A (en) | 1995-11-06 | 1995-11-06 | System and method for selectively controlling fetching and prefetching of data to a processor |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09146835A true JPH09146835A (en) | 1997-06-06 |
Family
ID=24212343
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8225449A Pending JPH09146835A (en) | 1995-11-06 | 1996-08-27 | System for prefetch of data |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US6085291A (en) |
| JP (1) | JPH09146835A (en) |
| KR (1) | KR100262906B1 (en) |
| TW (1) | TW371331B (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2000038077A1 (en) * | 1998-12-18 | 2000-06-29 | Fujitsu Limited | Cache device and control method |
| US6341334B1 (en) | 1998-03-24 | 2002-01-22 | Mitsubishi Denki Kabushiki Kaisha | Bridge method, bus bridge, and multiprocessor system |
| JP2005242527A (en) * | 2004-02-25 | 2005-09-08 | Hitachi Ltd | Processor and prefetch control method |
| US7490179B2 (en) | 2005-09-09 | 2009-02-10 | International Business Machines Corporation | Device for, method of, and program for dynamically switching modes for writing transaction data into disk |
Families Citing this family (43)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6195735B1 (en) * | 1996-12-31 | 2001-02-27 | Texas Instruments Incorporated | Prefetch circuity for prefetching variable size data |
| US6243822B1 (en) * | 1997-12-24 | 2001-06-05 | Elbrus International Limited | Method and system for asynchronous array loading |
| US6658552B1 (en) * | 1998-10-23 | 2003-12-02 | Micron Technology, Inc. | Processing system with separate general purpose execution unit and data string manipulation unit |
| US6546439B1 (en) | 1998-12-09 | 2003-04-08 | Advanced Micro Devices, Inc. | Method and system for improved data access |
| US6510497B1 (en) | 1998-12-09 | 2003-01-21 | Advanced Micro Devices, Inc. | Method and system for page-state sensitive memory control and access in data processing systems |
| US6260123B1 (en) | 1998-12-09 | 2001-07-10 | Advanced Micro Devices, Inc. | Method and system for memory control and access in data processing systems |
| US6381683B1 (en) | 1998-12-09 | 2002-04-30 | Advanced Micro Devices, Inc. | Method and system for destination-sensitive memory control and access in data processing systems |
| US6226721B1 (en) * | 1998-12-09 | 2001-05-01 | Advanced Micro Devices, Inc. | Method and system for generating and utilizing speculative memory access requests in data processing systems |
| US6219769B1 (en) | 1998-12-09 | 2001-04-17 | Advanced Micro Devices, Inc. | Method and system for origin-sensitive memory control and access in data processing systems |
| US6223257B1 (en) * | 1999-05-12 | 2001-04-24 | Rise Technology Company | Instruction cache address generation technique having reduced delays in fetching missed data |
| US6487637B1 (en) | 1999-07-30 | 2002-11-26 | International Business Machines Corporation | Method and system for clearing dependent speculations from a request queue |
| US6418516B1 (en) * | 1999-07-30 | 2002-07-09 | International Business Machines Corporation | Method and system for managing speculative requests in a multi-level memory hierarchy |
| US6473833B1 (en) | 1999-07-30 | 2002-10-29 | International Business Machines Corporation | Integrated cache and directory structure for multi-level caches |
| US6594730B1 (en) * | 1999-08-03 | 2003-07-15 | Intel Corporation | Prefetch system for memory controller |
| US6317811B1 (en) * | 1999-08-26 | 2001-11-13 | International Business Machines Corporation | Method and system for reissuing load requests in a multi-stream prefetch design |
| US6446167B1 (en) * | 1999-11-08 | 2002-09-03 | International Business Machines Corporation | Cache prefetching of L2 and L3 |
| US6467030B1 (en) * | 1999-11-09 | 2002-10-15 | International Business Machines Corporation | Method and apparatus for forwarding data in a hierarchial cache memory architecture |
| US6567894B1 (en) * | 1999-12-08 | 2003-05-20 | International Business Machines Corporation | Method and apparatus to prefetch sequential pages in a multi-stream environment |
| JP2001344153A (en) * | 2000-05-30 | 2001-12-14 | Nec Corp | Cash memory controller for multiprocessor system |
| 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 |
| US6523093B1 (en) * | 2000-09-29 | 2003-02-18 | Intel Corporation | Prefetch buffer allocation and filtering system |
| US6665776B2 (en) | 2001-01-04 | 2003-12-16 | Hewlett-Packard Development Company L.P. | Apparatus and method for speculative prefetching after data cache misses |
| JP4341186B2 (en) | 2001-01-22 | 2009-10-07 | 株式会社日立製作所 | Memory system |
| US6795876B1 (en) * | 2001-03-27 | 2004-09-21 | Intel Corporation | Adaptive read pre-fetch |
| JP3969009B2 (en) * | 2001-03-29 | 2007-08-29 | 株式会社日立製作所 | Hardware prefetch system |
| US6675280B2 (en) | 2001-11-30 | 2004-01-06 | Intel Corporation | Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher |
| US7260704B2 (en) | 2001-11-30 | 2007-08-21 | Intel Corporation | Method and apparatus for reinforcing a prefetch chain |
| US7093077B2 (en) | 2001-11-30 | 2006-08-15 | Intel Corporation | Method and apparatus for next-line prefetching from a predicted memory address |
| US6954840B2 (en) | 2001-11-30 | 2005-10-11 | Intel Corporation | Method and apparatus for content-aware prefetching |
| US6871246B2 (en) * | 2003-05-07 | 2005-03-22 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
| US7139878B2 (en) * | 2003-06-20 | 2006-11-21 | Freescale Semiconductor, Inc. | Method and apparatus for dynamic prefetch buffer configuration and replacement |
| US7200719B2 (en) * | 2003-07-31 | 2007-04-03 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
| US20050039016A1 (en) * | 2003-08-12 | 2005-02-17 | Selim Aissi | Method for using trusted, hardware-based identity credentials in runtime package signature to secure mobile communications and high-value transaction execution |
| KR100546403B1 (en) * | 2004-02-19 | 2006-01-26 | 삼성전자주식회사 | Serial Flash Memory Controller with Reduced Memory Bus Occupancy Time |
| US7263579B2 (en) * | 2004-03-24 | 2007-08-28 | Intel Corporation | Integrated circuit capable of pre-fetching data |
| US20060143401A1 (en) * | 2004-12-27 | 2006-06-29 | Jacob Doweck | Method and apparatus for prefetching based on cache fill buffer hits |
| US7350029B2 (en) * | 2005-02-10 | 2008-03-25 | International Business Machines Corporation | Data stream prefetching in a microprocessor |
| US7380066B2 (en) * | 2005-02-10 | 2008-05-27 | International Business Machines Corporation | Store stream prefetching in a microprocessor |
| US20080098176A1 (en) * | 2006-10-18 | 2008-04-24 | Krishna M V V Anil | Method and Apparatus for Implementing Memory Accesses Using Open Page Mode for Data Prefetching |
| 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 |
| US8683129B2 (en) * | 2010-10-21 | 2014-03-25 | Oracle International Corporation | Using speculative cache requests to reduce cache miss delays |
| US20130179642A1 (en) * | 2012-01-10 | 2013-07-11 | Qualcomm Incorporated | Non-Allocating Memory Access with Physical Address |
| US9047198B2 (en) | 2012-11-29 | 2015-06-02 | Apple Inc. | Prefetching across page boundaries in hierarchically cached processors |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5170476A (en) * | 1990-01-22 | 1992-12-08 | Motorola, Inc. | Data processor having a deferred cache load |
| US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
| US5261066A (en) * | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
| US5784711A (en) * | 1990-05-18 | 1998-07-21 | Philips Electronics North America Corporation | Data cache prefetching under control of instruction cache |
| US5357618A (en) * | 1991-04-15 | 1994-10-18 | International Business Machines Corporation | Cache prefetch and bypass using stride registers |
| WO1993018459A1 (en) * | 1992-03-06 | 1993-09-16 | Rambus Inc. | Prefetching into a cache to minimize main memory access time and cache size in a computer system |
| 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 |
| US5388247A (en) * | 1993-05-14 | 1995-02-07 | Digital Equipment Corporation | History buffer control to reduce unnecessary allocations in a memory stream buffer |
| US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
| CA2128828C (en) * | 1993-08-24 | 2001-01-02 | David Michael Silver | Multilingual standard resources |
| US5490113A (en) * | 1994-06-15 | 1996-02-06 | Digital Equipment Corporation | Memory stream buffer |
| US5553265A (en) * | 1994-10-21 | 1996-09-03 | International Business Machines Corporation | Methods and system for merging data during cache checking and write-back cycles for memory reads and writes |
| US5761706A (en) * | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
| US5664147A (en) * | 1995-08-24 | 1997-09-02 | International Business Machines Corp. | System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated |
-
1995
- 1995-11-06 US US08/554,180 patent/US6085291A/en not_active Expired - Fee Related
-
1996
- 1996-05-24 TW TW085106154A patent/TW371331B/en active
- 1996-08-27 JP JP8225449A patent/JPH09146835A/en active Pending
- 1996-09-06 KR KR1019960038616A patent/KR100262906B1/en not_active Expired - Fee Related
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6341334B1 (en) | 1998-03-24 | 2002-01-22 | Mitsubishi Denki Kabushiki Kaisha | Bridge method, bus bridge, and multiprocessor system |
| WO2000038077A1 (en) * | 1998-12-18 | 2000-06-29 | Fujitsu Limited | Cache device and control method |
| US6918009B1 (en) | 1998-12-18 | 2005-07-12 | Fujitsu Limited | Cache device and control method for controlling cache memories in a multiprocessor system |
| JP2005242527A (en) * | 2004-02-25 | 2005-09-08 | Hitachi Ltd | Processor and prefetch control method |
| US7490179B2 (en) | 2005-09-09 | 2009-02-10 | International Business Machines Corporation | Device for, method of, and program for dynamically switching modes for writing transaction data into disk |
Also Published As
| Publication number | Publication date |
|---|---|
| KR100262906B1 (en) | 2000-08-01 |
| TW371331B (en) | 1999-10-01 |
| KR970029103A (en) | 1997-06-26 |
| US6085291A (en) | 2000-07-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH09146835A (en) | System for prefetch of data | |
| US5664147A (en) | System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated | |
| US5758119A (en) | System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache | |
| US5737565A (en) | System and method for diallocating stream from a stream buffer | |
| US5740399A (en) | Modified L1/L2 cache inclusion for aggressive prefetch | |
| US8725987B2 (en) | Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data | |
| US6446167B1 (en) | Cache prefetching of L2 and L3 | |
| US8078806B2 (en) | Microprocessor with improved data stream prefetching | |
| EP1388065B1 (en) | Method and system for speculatively invalidating lines in a cache | |
| US7194582B1 (en) | Microprocessor with improved data stream prefetching | |
| US9619390B2 (en) | Proactive prefetch throttling | |
| US7493452B2 (en) | Method to efficiently prefetch and batch compiler-assisted software cache accesses | |
| US8140759B2 (en) | Specifying an access hint for prefetching partial cache block data in a cache hierarchy | |
| CA2300005A1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
| US5809529A (en) | Prefetching of committed instructions from a memory to an instruction cache | |
| US6959363B2 (en) | Cache memory operation | |
| US6535962B1 (en) | System and method for prefetching data using a hardware prefetch mechanism | |
| US5860150A (en) | Instruction pre-fetching of a cache line within a processor | |
| US7330940B2 (en) | Method and system for cache utilization by limiting prefetch requests | |
| US20060179173A1 (en) | Method and system for cache utilization by prefetching for multiple DMA reads | |
| US20100268885A1 (en) | Specifying an access hint for prefetching limited use data in a cache hierarchy | |
| US20060174062A1 (en) | Method and system for cache utilization by limiting number of pending cache line requests | |
| GB2454811A (en) | Cache memory which pre-fetches data when an address register is written | |
| GB2401227A (en) | Cache line flush instruction and method |