JP3640355B2 - キャッシュ制御の命令プリフェッチ方法及びシステム - Google Patents
キャッシュ制御の命令プリフェッチ方法及びシステム Download PDFInfo
- Publication number
- JP3640355B2 JP3640355B2 JP2002346968A JP2002346968A JP3640355B2 JP 3640355 B2 JP3640355 B2 JP 3640355B2 JP 2002346968 A JP2002346968 A JP 2002346968A JP 2002346968 A JP2002346968 A JP 2002346968A JP 3640355 B2 JP3640355 B2 JP 3640355B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- line
- data
- found
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 47
- 238000012545 processing Methods 0.000 claims description 27
- 230000004044 response Effects 0.000 claims description 16
- 230000008901 benefit Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は、概して云えば、データ処理システムに関するものであり、更に詳しく云えば、データをキャッシュに予測的にプリフェッチする方法に関するものである。
【0002】
【従来の技術】
最近のマイクロプロセッサ・システムでは、テクノロジが改良し続けているので、プロセッサ・サイクル・タイムは減少し続けている。又、予測的実行、深いパイプライン、多くの実行エレメント等の設計技術は処理システムのパフォーマンスを改良し続けている。プロセッサはメモリからの更に高速のデータ及び命令の読み出しを要求するので、改良されたパフォーマンスはメモリ・インターフェースに更に重い負担をかける。処理システムのパフォーマンスを向上させるために、キャッシュ・メモリ・システムが実施されることが多い。
【0003】
キャッシュ・メモリを使用する処理システムはその分野ではよく知られている。キャッシュ・メモリは、最小限の待ち時間で現プログラム及びデータをプロセッサ(CPU)にとって使用可能にすることによってデータ処理システムの速度を増加させる非常に高速度のメモリである。大型のオン・チップ・キャッシュ(L1キャッシュ)はメモリ待ち時間の減少を助成するために導入され、そして大型のオフ・チップ・キャッシュ(L2キャッシュ)によってそれを促進されることが多い。
【0004】
キャッシュ・メモリ・システムの主なる利点は、最も頻繁にアクセスされた命令及びデータを高速のキャッシュ・メモリに保持することによって、処理システム全体の平均的なメモリ・アクセス・タイムがそのキャッシュ・メモリのアクセス・タイムに近づくであろうと云うことである。キャッシュ・メモリはメイン・メモリのサイズの数分の1に過ぎないけれども、プログラムの「参照の局所性(Locality of reference)」特性のために、メモリ・リクエストの大部分はその高速のキャッシュ・メモリにおいてうまく見つかる。この特性は、如何なる所与のタイム・インターバル時でもメモリ参照が僅かな局部的メモリ領域に制限される傾向があることを維持している。
【0005】
キャッシュ・メモリの基本的オペレーションはよく知られている。CPUがメモリをアクセスする必要がある時、キャッシュが調べられる。CPUによってアドレスされたワードがそのキャッシュで見つかった場合、それはその高速メモリから読み取られる。CPUによってアドレスされたワードがキャッシュにおいて見つからなかった場合、そのワードを読み出すためにメイン・メモリがアクセスされる。そこで、そのアクセスされたワードを含む1ブロックのワードがメイン・メモリからキャッシュ・メモリに転送される。このように、メイン・メモリへのその後の参照時に必要なワードが高速のキャッシュ・メモリにおいて見つかるように、いくつかのワードがキャッシュ・メモリに転送される。
【0006】
コンピュータ・システムの平均的なメモリ・アクセス・タイムはキャッシュの使用によってかなり改善可能である。キャッシュ・メモリのパフォーマンスは、「ヒット率」と呼ばれる数量によって測定されることが多い。CPUがメモリをアクセスしそしてそのワードをキャッシュにおいて見つける時、その結果としてキャッシュ「ヒット」が生じる。そのワードがキャッシュ・メモリにおいて見つからず、メイン・メモリにおいて見つかった場合、その結果としてキャッシュ「ミス」が生じる。CPUがメイン・メモリの代わりにキャッシュ・メモリにおいてワードを見つけることが多い場合、その結果として高いヒット率が生じ、平均的なアクセス・タイムは高速のキャッシュ・メモリのアクセス・タイムに近づく。
【0007】
プリフェッチ技法は、待ち時間を少なくするために、メモリ・データを早めにオン・チップL1キャッシュに供給しようとするために導入されることが多い。理想的には、データ及び命令は、プロセッサがそれを必要とする時、それらのデータ及び命令のコピーがいつもL1キャッシュにあるように十分早めにプリフェッチされる。
【0008】
命令又はデータのプリフェッチはその分野ではよく知られている。しかし、既存のプリフェッチ技法は、命令又はデータをプリフェッチするのが早過ぎることが多い。プリフェッチし、そしてそのプリフェッチされた命令又はデータを使用しないことは、メモリ・アクセスのための時間を拡大するが、何の利益も生じないし、それによってCPUの効率を低下させるだけである。
【0009】
これの一般的な例は、キャッシュに未決のブランチ命令が存在する時、処理システムが命令を予測的にプリフェッチする場合にいつも生じる。システムは、プログラム実行が後続しないブランチに属する命令をプリフェッチすることがある。これらの命令をメモリからプリフェッチすることに費やした時間は浪費され、不必要なメモリ・バス・トラフィックを生じさせる。
【0010】
従って、不必要な命令のプリフェッチによるL1命令キャッシュへの命令アクセスの待ち時間を減少させるシステム及び方法に対する要求がその分野には存在する。
【0011】
【発明が解決しようとする課題】
本発明の目的は、予測的な命令キャッシュ・ラインをL2キャッシュのみからプリフェッチするための装置をデータ処理システムのL1I−キャッシュ(命令キャッシュ)コントローラに設けることにある。本発明の背後にある基本的な概念は、メイン・メモリ・バスによる命令プリフェッチが「真」のキャッシュ・ミスに対して留保されなければならないということである。「真」のキャッシュ・ミスとは、そのミスしたデータ・ラインに対するリクエストをプロセッサに取り消させる未解決のブランチが未決の命令の中に存在しないために、そのミスしたデータ・ラインがプロセッサによって必然的に必要とされる場合のキャッシュ・ミスのことである。
【0012】
本発明のもう1つの目的は、予測的な命令ストリームのプリフェッチがプロセッサ・バス利用に不利にインパクトを与えないように最適に命令をプリフェッチするための方法を開示することにある。
【0013】
【課題を解決するための手段】
本発明は、未決の命令における未解決のブランチを解決する前に、命令がメイン・メモリではなくL2キャッシュのみからL1キャッシュにプリフェッチされるプリフェッチ方法を実施することによって予測的なプリフェッチにおける固有の問題を克服する。
【0014】
【発明の実施の形態】
本発明の原理及びそれの利点は、添付図面のうちの図1及び図2に示された実施例を参照することによって最もよく理解されるであろう。なお、それらの図における同じ番号は同じ部分を指している。
【0015】
図1は処理システム100を示し、それはプロセッサ110、プロセッサに組み込まれたL1キャッシュ131、及び外部L2キャッシュ120を含む。本発明の好適な実施例では、L1(第1)キャッシュ131は、データを記憶するためのデータ・キャッシュ132及びそれとは別個の命令を記憶するための命令キャッシュ(L1I−キャッシュ)130を含む。データ・キャッシュ及び命令キャッシュが別々になったものはその分野ではよく知られている。プロセッサ110は、メイン・メモリ115からプリフェッチ・バッファ125を介して受け取った命令及びデータをL1I−キャッシュ130及びL2(第2)キャッシュ120においてキャッシュすることができる。
【0016】
L1I−キャッシュ130は、米国特許出願第519,032号に開示されたようなその分野では知られた任意の置換方法を使用してメイン・メモリ115からの頻繁に使用されたプログラム命令のコピーを保持する。L2キャッシュ120はL1キャッシュよりも大きく、L1キャッシュよりも多くのデータを保持し、通常は、システム100に対するメモリ・コヒーレンス・プロトコルを制御する。本発明の好適な実施例では、L1キャッシュ130における命令はL2キャッシュ120に含まれる必要はない。
【0017】
プロセッサ110を囲む破線はチップ境界及び機能的境界を表すが、本発明の技術的範囲に関する限定を意味するものではない。プロセッサ・キャッシュ・コントローラ(PCC)135は、メモリ・サブシステム(L1キャッシュ131、L2キャッシュ120)からのフェッチ及びそれへのストアを制御する。PCC135は、フェッチ及びストアの制御に加えて、他の機能を遂行することもできる。
【0018】
図2は、本発明の一実施例に従って状態機械(ステート・マシン)に対する流れ図200を示す。本発明による状態機械はPCC135にあってもよく、或いはプロセッサ110における他の場所にあってもよい。命令のキャッシュ・ラインは、本発明によって、メイン・メモリ115及びL2キャッシュ120からL1I−キャッシュ130に予測的にフェッチ可能である。フェッチされるラインに先行するラインにおける命令が1つ又は複数の未解決のブランチを含む場合には、フェッチは予測的である。
【0019】
しかし、プログラム順序は維持されなければならず、先行の命令がすべて完了しそして介在したブランチが解決されるまで、その想像したターゲット命令は予測のままである。予測の命令は、先行の未解決ブランチがない時、「必然的予測」命令又は「コミットされた」命令になる。従って、必然的予測命令は、外部割込み(例えば、I/O140からの割込み)のような割込みがない場合に実行される。
【0020】
図2における流れ図200のステップ205ー241に注意を向けることにする。本発明は、ラインを命令キャッシュにプリフェッチするための方法を説明する。本発明は、状態機械を使用してL1I−キャッシュ130に対するL1ミスの発生をモニタする。「L1ミス」とは、L1I−キャッシュ130においてターゲット・ラインが見つからなかったL1I−キャッシュ130へのアクセスのことである。プロセッサ110がL1I−キャッシュ130からのキャッシュ・ラインMをリクエストし、キャッシュ・ラインMがL1I−キャッシュ130内にない(即ち、L1ミスが生じた)時、状態機械はそのミスしたライン(ラインM)をL2キャッシュ120においてサーチする(ステップ205)。ラインMがL2キャッシュ120内に存在する場合、状態機械はL2キャッシュ120からL1I−キャッシュ130にラインMをフェッチする(ステップ210)。ラインMがL2キャッシュ120内にもない場合、本発明は、未決のラインM−1における未解決のブランチすべてが解決されてしまうのを待ってメイン・メモリ115からラインMをフェッチする(ステップ230及び235)。これは、使用されることなく取り消されるかもしれないメイン・メモリ115からの命令の不必要なプリフェッチを防ぐ。ここで使用されるように、「取り消(キャンセル)される」は、プロセッサがその期待されたラインMではなく他のライン、例えば、ラインXをリクエストすることを意味する。すべてのブランチがラインM−1において解決され、ラインMがコミットされる場合、ラインMはメイン・メモリ115からL1I−キャッシュ130及びL2キャッシュ120にフェッチされる(ステップ240)。
【0021】
ラインMがL2キャッシュ120にあるかどうかに関係なく、状態機械は次に高いライン、即ち、ラインM+1の存在に関してL1I−キャッシュ130をテストする(ステップ215)。ラインM+1がL1I−キャッシュ130にある場合、それ以上のアクションは必要ない(ステップ241)。ラインM+1がL1I−キャッシュ130にない場合、状態機械は、ラインM+1に関してL2キャッシュ120をテストし、そしてそれが見つかった場合、L2キャッシュ120からL1I−キャッシュ130にラインM+1を予測的にプリフェッチする(ステップ225)。
【0022】
状態機械は、ラインM+1がメモリにおける論理的境界(ページ或いはブロック)を横切るかどうかも検証する(ステップ222)。通常は、ラインMは実際の物理アドレスに変換されるが、ラインM+1は変換されない。従って、物理的メモリにおけるラインM+1のロケーションは不定である。ラインM+1が別の論理的境界内にある場合、状態機械はL2キャッシュからラインM+1をプリフェッチしないであろうし、それによって、L1及びL2の間の帯域幅を維持するであろう(ステップ241)。その代わり、プロセッサ110がラインM+1をリクエストする時、流れ図200はステップ205に再び入るであろう。
【0023】
ラインM+1がL2キャッシュ120内にない場合、本発明は、ラインMにおけるすべてのブランチが解決されてしまいそしてラインM+1がコミットされるまで、ラインM+1をメイン・メモリ115からL1I−キャッシュ130又はL2キャッシュ120にプリフェッチしないであろう(ステップ241)。本発明は、ラインMには未解決のブランチがないことを確認するのを待ち、そしてプロセッサは、ラインM+1に対するプリフェッチでもってメイン・メモリ・バスを占める前に、ラインM+1に対するリクエストをL1I−キャッシュ130に発生する。ラインM+1に対するL1リクエストはその結果としてL1キャッシュ・ミスを生じるであろうし、流れ図200はステップ205に再び入るであろう。これは、全く使用されずに取り消される命令のプリフェッチを防ぐ。
【0024】
次の表は前述の事項を表の形式で示す。
【表1】
【0025】
本発明が、L1I−キャッシュ130のミスと同様に、L1I−キャッシュ130のヒットの場合にもL2キャッシュ120から予測的にプリフェッチするために使用可能であることは当業者には明らかであろう。
【0026】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0027】
(1)プロセッサ、第1キャッシュ、第2キャッシュ、及びメイン・メモリを含む処理システムにおいて前記第1キャッシュにデータをプリフェッチするための方法にして、
前記第1キャッシュにおいてラインMに対するキャッシュ・アクセス事象を検出するステップと、
前記キャッシュ・アクセス事象に応答して前記ラインMに関して前記第2キャッシュをサーチするステップと、
前記ラインMが前記第2キャッシュにおいて見つかった場合、前記ラインMを前記第2キャッシュから前記第1キャッシュに転送するステップと、
前記ラインMが前記第2キャッシュにおいて見つからなった場合、ラインM−1におけるすべての未解決のブランチ命令が解決されるのを待ってから前記ラインMを前記メイン・メモリからフェッチするステップと、
を含む方法。
(2)前記キャッシュ・アクセス事象はキャッシュ・ミスであることを特徴とする上記(1)に記載の方法。
(3)前記キャッシュ・アクセス事象はキャッシュ・ヒットであることを特徴とする上記(1)に記載の方法。
(4)前記第1キャッシュをラインM+1に関してサーチするステップと、
前記ラインM+1が前記第1キャッシュにおいて見つからなかった場合、前記第2キャッシュを前記ラインM+1に関してサーチするステップと、
を含むことを特徴とする上記(1)に記載の方法。
(5)前記ラインM+1が前記第2キャッシュにおいて見つかった場合、前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送するステップを含むことを特徴とする上記(4)に記載の方法。
(6)前記ラインM+1が前記第2キャッシュにおいて見つからなった場合、ラインMにおけるすべての未解決のブランチ命令が解決されるのを待ってから前記ラインM+1を前記メイン・メモリからフェッチするステップを含むことを特徴とする上記(4)に記載の方法。
(7)前記ラインM+1が前記第2キャッシュにおいて見つかった場合、前記ラインM+1が前記ラインMとは別の論理的メモリ・ブロックに存在するかどうかを決定するステップを含むことを特徴とする上記(4)に記載の方法。
(8)前記ラインM+1が前記別の論理的メモリ・ブロックに存在しない場合、前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送するステップを含むことを特徴とする上記(7)に記載の方法。
(9)前記ラインM+1が前記別の論理的メモリ・ブロックに存在する場合、前記ラインMにおけるすべての未解決のブランチ命令が解決されるのを待って前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送することを特徴とする上記(7)に記載の方法。
(10)プロセッサ、第1キャッシュ、第2キャッシュ、及びメイン・メモリを含む処理システムにおいて前記第1キャッシュにデータをプリフェッチするための方法にして、
前記第1キャッシュにおいてラインMに対するキャッシュ・アクセス事象を検出するステップと、
前記キャッシュ・アクセス事象に応答して前記ラインM+1に関して前記第2キャッシュをサーチするステップと、
前記ラインM+1が前記第2キャッシュにおいて見つからなった場合、ラインMにおけるすべての未解決のブランチ命令が解決されるのを待ってから前記ラインM+1を前記メイン・メモリからフェッチするステップ、
を含む方法。
(11)前記キャッシュ・アクセス事象はキャッシュ・ミスであることを特徴とする上記(10)に記載の方法。
(12)前記キャッシュ・アクセス事象はキャッシュ・ヒットであることを特徴とする上記(10)に記載の方法。
(13)前記ラインM+1が前記第2キャッシュにおいて見つからなかった場合、前記ラインM+1が前記ラインMとは別の論理的メモリ・ブロックに存在するかどうかを決定するステップを含むことを特徴とする上記(10)に記載の方法。
(14)前記ラインM+1が前記別の論理的メモリ・ブロックにおいて見つからなかった場合、前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送するステップを含むことを特徴とする上記(13)に記載の方法。
(15)前記ラインM+1が前記別の論理的メモリ・ブロックに存在する場合、前記ラインMにおけるすべての未解決のブランチ命令が解決されるのを待って前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送することを特徴とする上記(13)に記載の方法。
(16)プロセッサと、
第1キャッシュと、
第2キャッシュと、
メイン・メモリと、
前記第1キャッシュにおいて第1データに対するキャッシュ・アクセス事象を検出するための手段と、
前記キャッシュ・アクセス事象に応答して、前記第1データに続く第2データが前記第2キャッシュに存在するかどうかを決定するための手段と、
前記第2データが前記第2キャッシュに存在しないという決定に応答して前記第1データにおけるすべての未解決のブランチ命令が解決されるのを待って前記第2データを前記メイン・メモリからフェッチするための手段と、
を含む処理システム。
(17)前記キャッシュ・アクセス事象はキャッシュ・ミスであることを特徴とする上記(16)に記載の処理システム。
(18)前記キャッシュ・アクセス事象はキャッシュ・ヒットであることを特徴とする上記(16)に記載の処理システム。
(19)前記第2データが前記第2キャッシュに存在するという決定に応答して、前記第2データが前記第1データとは別の論理的メモリ・ブロックに存在するかどうかを決定するための手段を含むことを特徴とする上記(16)に記載の処理システム。
(20)前記第2データが前記別の論理的メモリ・ブロックに存在しないという決定に応答して、前記第2データを前記第2キャッシュから前記第1キャッシュに転送するための手段を含むことを特徴とする上記(19)に記載の処理システム。
(21)前記第2データが前記別の論理的メモリ・ブロックに存在するという決定に応答して、前記第1データにおけるすべての未解決のブランチ命令が解決されるのを待って前記第2データを前記第2キャッシュから前記第1キャッシュに転送するための手段を含むことを特徴とする上記(19)に記載の処理システム。
【0028】
さらに、本発明は次の(31)〜(45)の構成を含む。
(31): プロセッサ、第1キャッシュ、第2キャッシュ、及びメイン・メモリを含む処理システムにおいて前記第1キャッシュにデータをプリフェッチするための方法にして、
前記第1キャッシュにおいてラインMに対するキャッシュ・アクセス事象を検出するステップと、
前記キャッシュ・アクセス事象に応答して前記ラインMに関して前記第2キャッシュをサーチするステップと、
前記ラインMが前記第2キャッシュにおいて見つかった場合、前記ラインMを前記第2キャッシュから前記第1キャッシュに転送するステップと、
前記ラインMが前記第2キャッシュにおいて見つからなかった場合、ラインM−1における未解決のブランチ命令が解決されるのを待ってから前記ラインMを前記メイン・メモリからフェッチするステップと、
前記第1キャッシュをラインM+1に関してサーチするステップと、
前記ラインM+1が前記第1キャッシュにおいて見つからなかった場合、前記第2キャッシュを前記ラインM+1に関してサーチするステップと、
を含む方法。
【0029】
(32): 前記キャッシュ・アクセス事象はキャッシュ・ミスであることを特徴とする(31)に記載の方法。
(33): 前記キャッシュ・アクセス事象はキャッシュ・ヒットであることを特徴とする(31)に記載の方法。
(34): 前記ラインM+1が前記第2キャッシュにおいて見つからなかった場合、ラインMにおける未解決のブランチ命令が解決されるのを待ってから前記ラインM+1を前記メイン・メモリからフェッチするステップを含むことを特徴とする(31)〜(33)の何れか1つに記載の方法。
(35): 前記ラインM+1が前記第2キャッシュにおいて見つかった場合、前記ラインM+1が前記ラインMとは別の論理的メモリ・ブロックに存在するかどうかを判定するステップを含むことを特徴とする(31)〜(33)の何れか1つに記載の方法。
(36): 前記ラインM+1が前記別の論理的メモリ・ブロックに存在しない場合、前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送するステップを含むことを特徴とする(35)に記載の方法。
(37): 前記ラインM+1が前記別の論理的メモリ・ブロックに存在する場合、前記ラインMにおける未解決のブランチ命令が解決されるのを待って前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送することを特徴とする(35)に記載の方法。
【0030】
(38): プロセッサ、第1キャッシュ、第2キャッシュ、及びメイン・メモリを含む処理システムにおいて前記第1キャッシュにデータをプリフェッチするための方法にして、
前記第1キャッシュにおいてラインMに対するキャッシュ・アクセス事象を検出するステップと、
前記キャッシュ・アクセス事象に応答して前記ラインM+1に関して前記第2キャッシュをサーチするステップと、
前記ラインM+1が前記第2キャッシュにおいて見つからなかった場合、ラインMにおける未解決のブランチ命令が解決されるのを待ってから前記ラインM+1を前記メイン・メモリからフェッチするステップと、
前記ラインM+1が前記第2キャッシュにおいて見つかった場合、前記ラインM+1が前記ラインMとは別の論理的メモリ・ブロックに存在するかどうかを判定するステップと、
前記ラインM+1が前記別の論理的メモリ・ブロックに存在しない場合、前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送するステップと、
を含む方法。
【0031】
(39): 前記キャッシュ・アクセス事象はキャッシュ・ミスであることを特徴とする(38)に記載の方法。
(40): 前記キャッシュ・アクセス事象はキャッシュ・ヒットであることを特徴とする(38)に記載の方法。
(41): 前記ラインM+1が前記別の論理的メモリ・ブロックに存在する場合、前記ラインMにおける未解決のブランチ命令が解決されるのを待って前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送することを特徴とする(38)〜(40)の何れか1つに記載の方法。
【0032】
(42): プロセッサと、
第1キャッシュと、
第2キャッシュと、
メイン・メモリと、
前記第1キャッシュにおいて第1データに対するキャッシュ・アクセス事象を検出するための手段と、
前記キャッシュ・アクセス事象に応答して、前記第1データに続く第2データが前記第2キャッシュに存在するかどうかを判定するための手段と、
前記第2データが前記第2キャッシュに存在しないという判定に応答して、前記第1データにおける未解決のブランチ命令が解決されるのを待って前記第2データを前記メイン・メモリからフェッチするための手段と、
前記第2データが前記第2キャッシュに存在するという判定に応答して、前記第2データが前記第1データとは別の論理的メモリ・ブロックに存在するかどうかを判定するための手段と、
前記第2データが前記別の論理的メモリ・ブロックに存在しないという判定に応答して、前記第2データを前記第2キャッシュから前記第1キャッシュに転送するための手段と、
を含む処理システム。
【0033】
(43): 前記キャッシュ・アクセス事象はキャッシュ・ミスであることを特徴とする(42)に記載の処理システム。
(44): 前記キャッシュ・アクセス事象はキャッシュ・ヒットであることを特徴とする(42)に記載の処理システム。
(45): 前記第2データが前記別の論理的メモリ・ブロックに存在するという判定に応答して、前記第1データにおける未解決のブランチ命令が解決されるのを待って前記第2データを前記第2キャッシュから前記第1キャッシュに転送するための手段を含むことを特徴とする(42)〜(44)の何れか1つに記載の処理システム。
【図面の簡単な説明】
【図1】本発明による処理システムの高レベル・ブロック図である。
【図2】本発明によるプリフェッチ・オペレーションの流れ図である。
【符号の説明】
100 処理システム
110 プロセッサ
Claims (2)
- プロセッサ、第1キャッシュ、第2キャッシュ、及びメイン・メモリを含む処理システムにおいて前記第1キャッシュにデータをプリフェッチするための方法にして、
前記第1キャッシュにおいてラインMに対するキャッシュ・ミスを検出する第1のステップと、
前記キャッシュ・ミスに応答して前記ラインMに関して前記第2キャッシュをサーチする第2のステップと、
前記ラインMが前記第2キャッシュにおいて見つかった場合、前記ラインMを前記第2キャッシュから前記第1キャッシュに転送する第3のステップと、
前記ラインMが前記第2キャッシュにおいて見つからなかった場合、ラインM−1における未解決のブランチ命令が解決されるのを待ってから前記ラインMを前記メイン・メモリからフェッチする第4のステップと、
第3のステップ又は第4のステップの後、前記第1キャッシュをラインM+1に関してサーチする第5のステップと、
前記ラインM+1が前記第1キャッシュにおいて見つからなかった場合、前記第2キャッシュを前記ラインM+1に関してサーチする第6のステップと、
前記ラインM+1が前記第2キャッシュにおいて見つかった場合、前記ラインM+1が前記ラインMとは別の論理的メモリ・ブロックに存在するかどうかを判定する第7のステップと、
前記ラインM+1が前記別の論理的メモリ・ブロックに存在しない場合、前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送する第8のステップと、及び
前記ラインM+1が前記別の論理的メモリ・ブロックに存在する場合、前記ラインMにおける未解決のブランチ命令が解決されるのを待って前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送する第9のステップと、
を含むことを特徴とする方法。 - プロセッサと、
第1キャッシュと、
第2キャッシュと、
メイン・メモリと、
前記第1キャッシュにおいてラインMに対するキャッシュ・ミスを検出する第1の手段と、
前記キャッシュ・ミスに応答して前記ラインMに関して前記第2キャッシュをサーチする第2の手段と、
前記ラインMが前記第2キャッシュにおいて見つかった場合、前記ラインMを前記第2キャッシュから前記第1キャッシュに転送する第3の手段と、
前記ラインMが前記第2キャッシュにおいて見つからなかった場合、ラインM−1における未解決のブランチ命令が解決されるのを待ってから前記ラインMを前記メイン・メモリからフェッチする第4の手段と、
第3の手段又は第4の手段の処理終了後、前記第1キャッシュをラインM+1に関してサーチする第5の手段と、
前記ラインM+1が前記第1キャッシュにおいて見つからなかった場合、前記第2キャッシュを前記ラインM+1に関してサーチする第6の手段と、
前記ラインM+1が前記第2キャッシュにおいて見つかった場合、前記ラインM+1が前記ラインMとは別の論理的メモリ・ブロックに存在するかどうかを判定する第7の手段と、
前記ラインM+1が前記別の論理的メモリ・ブロックに存在しない場合、前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送する第8の手段と、
前記ラインM+1が前記別の論理的メモリ・ブロックに存在する場合、前記ラインMにおける未解決のブランチ命令が解決されるのを待って前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送する第8の手段、及び
前記ラインM+1が前記別の論理的メモリ・ブロックに存在する場合、前記ラインMにおける未解決のブランチ命令が解決されるのを待って前記ラインM+1を前記第2キャッシュから前記第1キャッシュに転送する第9の手段と、
を含むことを特徴とする処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US531948 | 1995-09-18 | ||
US08/531,948 US5721864A (en) | 1995-09-18 | 1995-09-18 | Prefetching instructions between caches |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19208496A Division JP3549079B2 (ja) | 1995-09-18 | 1996-07-22 | キャッシュ制御の命令プリフェッチ方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003186741A JP2003186741A (ja) | 2003-07-04 |
JP3640355B2 true JP3640355B2 (ja) | 2005-04-20 |
Family
ID=24119741
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19208496A Expired - Fee Related JP3549079B2 (ja) | 1995-09-18 | 1996-07-22 | キャッシュ制御の命令プリフェッチ方法 |
JP2002346968A Expired - Fee Related JP3640355B2 (ja) | 1995-09-18 | 2002-11-29 | キャッシュ制御の命令プリフェッチ方法及びシステム |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19208496A Expired - Fee Related JP3549079B2 (ja) | 1995-09-18 | 1996-07-22 | キャッシュ制御の命令プリフェッチ方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5721864A (ja) |
EP (1) | EP0763793A2 (ja) |
JP (2) | JP3549079B2 (ja) |
KR (1) | KR100240914B1 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887151A (en) * | 1997-07-10 | 1999-03-23 | Emc Corporation | Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks |
US6199154B1 (en) | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US7071946B2 (en) * | 1997-12-30 | 2006-07-04 | Micron Technology, Inc. | Accelerated graphics port for a multiple memory controller computer system |
US6157398A (en) * | 1997-12-30 | 2000-12-05 | Micron Technology, Inc. | Method of implementing an accelerated graphics port for a multiple memory controller computer system |
JP3071752B2 (ja) | 1998-03-24 | 2000-07-31 | 三菱電機株式会社 | ブリッジ方法、バスブリッジ及びマルチプロセッサシステム |
US6233645B1 (en) | 1998-11-02 | 2001-05-15 | Compaq Computer Corporation | Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high |
US6356982B1 (en) * | 1999-06-24 | 2002-03-12 | International Business Machines Corporation | Dynamic mechanism to upgrade o state memory-consistent cache lines |
US6349368B1 (en) * | 1999-06-24 | 2002-02-19 | International Business Machines Corporation | High performance mechanism to support O state horizontal cache-to-cache transfers |
US6405290B1 (en) * | 1999-06-24 | 2002-06-11 | International Business Machines Corporation | Multiprocessor system bus protocol for O state memory-consistent data |
US6253286B1 (en) * | 1999-08-05 | 2001-06-26 | International Business Machines Corporation | Apparatus for adjusting a store instruction having memory hierarchy control bits |
US6249911B1 (en) * | 1999-08-05 | 2001-06-19 | International Business Machines Corporation | Optimizing compiler for generating store instructions having memory hierarchy control bits |
US6230242B1 (en) * | 1999-08-05 | 2001-05-08 | International Business Machines Corporation | Store instruction having vertical memory hierarchy control bits |
US6249843B1 (en) * | 1999-08-05 | 2001-06-19 | International Business Machines Corporation | Store instruction having horizontal memory hierarchy control bits |
US6314431B1 (en) * | 1999-09-02 | 2001-11-06 | Hewlett-Packard Company | Method, system, and apparatus to improve instruction pre-fetching on computer systems |
US6557095B1 (en) * | 1999-12-27 | 2003-04-29 | Intel Corporation | Scheduling operations using a dependency matrix |
US6643766B1 (en) * | 2000-05-04 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Speculative pre-fetching additional line on cache miss if no request pending in out-of-order processor |
US7162589B2 (en) * | 2002-12-16 | 2007-01-09 | Newisys, Inc. | Methods and apparatus for canceling a memory data fetch |
US20050097304A1 (en) * | 2003-10-30 | 2005-05-05 | International Business Machines Corporation | Pipeline recirculation for data misprediction in a fast-load data cache |
US7383418B2 (en) * | 2004-09-01 | 2008-06-03 | Intel Corporation | Method and apparatus for prefetching data to a lower level cache memory |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US20080162819A1 (en) * | 2006-02-03 | 2008-07-03 | Luick David A | Design structure for self prefetching l2 cache mechanism for data lines |
US20070186050A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for data lines |
US8756404B2 (en) * | 2006-12-11 | 2014-06-17 | International Business Machines Corporation | Cascaded delayed float/vector execution pipeline |
US9058269B2 (en) | 2012-06-25 | 2015-06-16 | Advanced Micro Devices, Inc. | Method and apparatus including a probe filter for shared caches utilizing inclusion bits and a victim probe bit |
US9122612B2 (en) * | 2012-06-25 | 2015-09-01 | Advanced Micro Devices, Inc. | Eliminating fetch cancel for inclusive caches |
US10296463B2 (en) * | 2016-01-07 | 2019-05-21 | Samsung Electronics Co., Ltd. | Instruction prefetcher dynamically controlled by readily available prefetcher accuracy |
US10599577B2 (en) | 2016-05-09 | 2020-03-24 | Cavium, Llc | Admission control for memory access requests |
US11379372B1 (en) | 2019-07-19 | 2022-07-05 | Marvell Asia Pte, Ltd. | Managing prefetch lookahead distance based on memory access latency |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
US5590293A (en) * | 1988-07-20 | 1996-12-31 | Digital Equipment Corporation | Dynamic microbranching with programmable hold on condition, to programmable dynamic microbranching delay minimization |
US5155832A (en) * | 1989-07-05 | 1992-10-13 | Hewlett-Packard Company | Method to increase performance in a multi-level cache system by the use of forced cache misses |
US5214765A (en) * | 1989-08-31 | 1993-05-25 | Sun Microsystems, Inc. | Method and apparatus for executing floating point instructions utilizing complimentary floating point pipeline and multi-level caches |
JP2509344B2 (ja) * | 1989-09-19 | 1996-06-19 | 富士通株式会社 | デ―タ処理装置 |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5185871A (en) * | 1989-12-26 | 1993-02-09 | International Business Machines Corporation | Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions |
US5386547A (en) * | 1992-01-21 | 1995-01-31 | Digital Equipment Corporation | System and method for exclusive two-level caching |
IE940855A1 (en) * | 1993-12-20 | 1995-06-28 | Motorola Inc | Data processor with speculative instruction fetching and¹method of operation |
US5551001A (en) * | 1994-06-29 | 1996-08-27 | Exponential Technology, Inc. | Master-slave cache system for instruction and data cache memories |
-
1995
- 1995-09-18 US US08/531,948 patent/US5721864A/en not_active Expired - Fee Related
-
1996
- 1996-07-22 JP JP19208496A patent/JP3549079B2/ja not_active Expired - Fee Related
- 1996-08-14 KR KR1019960033714A patent/KR100240914B1/ko not_active IP Right Cessation
- 1996-08-20 EP EP96306072A patent/EP0763793A2/en not_active Withdrawn
-
2002
- 2002-11-29 JP JP2002346968A patent/JP3640355B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0981456A (ja) | 1997-03-28 |
KR970016969A (ko) | 1997-04-28 |
US5721864A (en) | 1998-02-24 |
JP2003186741A (ja) | 2003-07-04 |
EP0763793A2 (en) | 1997-03-19 |
JP3549079B2 (ja) | 2004-08-04 |
KR100240914B1 (ko) | 2000-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3640355B2 (ja) | キャッシュ制御の命令プリフェッチ方法及びシステム | |
US7383391B2 (en) | Prefetch mechanism based on page table attributes | |
EP0795820B1 (en) | Combined prefetch buffer and instructions cache memory system and method for providing instructions to a central processing unit utilizing said system. | |
US5664147A (en) | System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated | |
KR100262906B1 (ko) | 데이터 선인출 방법 및 시스템 | |
US8140768B2 (en) | Jump starting prefetch streams across page boundaries | |
US9208096B2 (en) | Cache pre-fetching responsive to data availability | |
EP0457403A2 (en) | Multilevel instruction cache, method for using said cache, method for compiling instructions for said cache and micro computer system using such a cache | |
KR100234647B1 (ko) | 인스트럭션 프리페치 방법 및 데이터 처리 시스템 | |
US20090106499A1 (en) | Processor with prefetch function | |
JP2906315B2 (ja) | キャッシュメモリ中でインストラクションを保管する方法及び回路 | |
GB2521037A (en) | Adaptive prefetching in a data processing apparatus | |
JPH0962572A (ja) | ストリーム・フィルタ装置及び方法 | |
WO2005088455A2 (en) | Cache memory prefetcher | |
US20060179173A1 (en) | Method and system for cache utilization by prefetching for multiple DMA reads | |
US5860150A (en) | Instruction pre-fetching of a cache line within a processor | |
US7310712B1 (en) | Virtual copy system and method | |
US8683132B1 (en) | Memory controller for sequentially prefetching data for a processor of a computer system | |
JP5116275B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
JPH0477344B2 (ja) | ||
JP2001273137A (ja) | マイクロプロセッサ | |
US20070239939A1 (en) | Apparatus for Performing Stream Prefetch within a Multiprocessor System | |
WO2002069150A1 (fr) | Microprocesseur et procede de distribution d'ordres d'execution d'instructions | |
WO2000026741A2 (en) | A method for delivering data to an instruction processing unit | |
JPH1145180A (ja) | キャッシュ制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041222 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20041224 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050114 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080128 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090128 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |