JP3816586B2 - 先取り命令を生成する方法とシステム - Google Patents
先取り命令を生成する方法とシステム Download PDFInfo
- Publication number
- JP3816586B2 JP3816586B2 JP19416696A JP19416696A JP3816586B2 JP 3816586 B2 JP3816586 B2 JP 3816586B2 JP 19416696 A JP19416696 A JP 19416696A JP 19416696 A JP19416696 A JP 19416696A JP 3816586 B2 JP3816586 B2 JP 3816586B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- cache
- prefetch
- data
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/6028—Prefetching based on hints or prefetch instructions
Description
【発明が属する技術分野】
本発明は、メモリ管理装置に関するものであり、とりわけ、主メモリからキャッシュ・メモリにデータ及び命令を供給する先取り命令に関するものである。
【0002】
【従来の技術】
最新世代のコンピュータ・コンポーネント、とりわけ、マイクロプロセッサ(CPU)は、旧世代のものに比べるとはるかに高速で動作する。CPUは、動作する際、主メモリからのデータと命令の両方にアクセスして、その動作を実施しなければならない。従って、CPUの速度が増すと、データ及び命令の高速検索への要求も高まる。しかし、主メモリからデータ及び命令を検索するためのアクセス時間は、CPUが、遊休状態のまま、要求されるデータまたは命令の受信を待つことになるので、CPUの動作を相当に減速させることになるのが普通である。このタイム・ラグはメモリ待ち時間と呼ばれる。
【0003】
現時点において、CPUは、10ナノ秒未満のクロックを備え、一方、主メモリは、60ナノ秒のクロックを備えているので、組み合わせると、メモリ待ち時間比は10対1になる。近い将来、改良されたマイクロプロセッサは、3ナノ秒未満のクロックを備えることが予測され、一方、主メモリは、改良されても、50ナノ秒のクロックを備えることにしかならないものと予測される。従って、メモリ待ち時間が増して、15対1の比率を超えることになるものと予測される。
【0004】
メモリ待ち時間に対する2つの構成要素が存在する。第1の構成要素であるバス転送時間は、メモリに要求を転送し、その要求された情報を転送するのに要する時間量の関数である。第2の構成要素は、主メモリのアクセス時間それ自体である。アドレス復号化及びダイナミックRAM(DRAM)のCMOSテクノロジの他のロジックは、主メモリからの情報に対するアクセスに固有の遅延の原因となる。アプリケーションは仮想アドレス(VA)だけしか生成しないので、VAを主メモリ内における情報の物理アドレス(PA)に変換したものを主メモリよりもCPUに近いある記憶場所に記憶することによって、主メモリに記憶されている情報に対するアクセス時間が短縮される。この点において、CPUがデータ及び命令をアクセスするとき、「メモリ管理装置」(MMU)がデータ及び命令の管理を助ける働きをする。従って、変換は、MMUの一部をなす「変換索引バッファ」(TLB)に記憶される。要求された変換がTLBにない場合、TLBに欠落があるので、主メモリに記憶されているページ・テーブルを調べることによって、VAからPAへの変換を得なければならない。
【0005】
メモリ待ち時間を回避するため、頻繁に用いられるデータ及び命令は、主メモリに記憶されるだけではなく、よりCPUに近い「キャッシュ」・メモリに記憶される。キャッシュは、主メモリよりはるかに少ないラインのための容量しかなく、スタティック・RAM(SRAM)である(DRAMに比べるとはるかに高速で、電力消費がはるかに大きく、はるかに高価である)。実際、上述のTLBは、キャッシュ・メモリに似ている。従って、キャッシュの機能は、はるかにアクセス時間が長くなる主メモリから呼び出す代わりに、頻繁に用いられるデータまたは命令をCPUの近くに納めて、メモリ待ち時間の影響を軽減することにある。
【0006】
キャッシュ・メモリによってメモリ待ち時間の影響が軽減されるが、その構造のためにそれ自体の問題が悪化する。図1を参照すると、最も単純なタイプのキャッシュであるシングル・セット・キャッシュが示されている。主メモリ10とキャッシュ12及びCPU14の組み合わせとの離隔距離は、キャッシュ12とCPUとの互いの離隔距離よりかなり大きく描かれている。すなわち、「スラッシング」の問題によって、「ミス・ペナルティ」として知られるスピード・ペイメントが導入される。ミス・ペナルティは、キャッシュに必要なデータをロードするのに必要な時間遅延に等しい。
【0007】
スラッシングが生じるのは、複数データ要素が同じキャッシュ・セットを利用する場合である。図1に戻ると、主メモリ10は、それぞれ、100オフセット単位のインクリメントで100〜1000のラインを含む「ページ」に分割される(実際には、主メモリには、もっと多くのページが含まれることになる)。従って、最初のページがライン100〜1000を占め、第2のページには、ライン1100〜2000が含まれ、以下同様になっている。
【0008】
スラッシングを例示するため、図1には、主メモリから検索され、キャッシュのオフセット400に記憶されているライン1400をCPUが要求したところが示されている。ときどきそのすぐ後、CPUはライン2400を要求すると、主メモリから検索され、やはりキャッシュのオフセット400にマッピングされ、従って、既に記憶されているライン1400に重ね書きされる。キャッシュには要求されたラインが含まれておらず、主メモリから検索することが必要になるので、ミス・ペナルティを被ることになった。そのすぐ後、CPUはライン1400が再び必要になり、これを要求すると、主メモリから検索され、キャッシュのオフセット400にマッピングされ、従って、既に記憶されているライン2400に重ね書きされる。再び、ミス・ペナルティを被ることになった。2つのライン1400及び2400が、両方とも、CPUによって定期的に必要とされる場合、スラッシングのピンポン効果によって、繰り返しミス・ペナルティを被ることになる。
【0009】
主メモリから頻繁に用いる情報(データまたは命令)の受けるのを待つのにかなりの時間を費やすため、スラッシングによって、CPUの処理速度は大幅に低下する。こうした場合、複合化されたミス・ペナルティによってCPUの性能が抑制されることになる。逆に、よく用いられる情報が、キャッシュにいつでも記憶されているとしたら、CPUはそのピークの能力で動作することが可能になろう。従って、マイクロプロセッサの速度が引き続き向上すると、ミス・ペナルティのペイメントも増大することになる。
【0010】
スラッシングの問題を解消しようと努力して、導入されることになった多種多様なキャッシュ構造が存在する。例えば、一般的な解決策の一つは、シングル・セット・キャッシュの代わりに「マルチ・セット・キャッシュ」を用いることである。図2を参照すると、競合するラインのために二つ以上のオフセット記憶場所を提供することが潜在的に可能な2セット・キャッシュが示されている。セット12及びセット14は、両方とも、情報を記憶するためのオフセット400の記憶場所を備えている。従って、ライン1400及び2400は、両方とも、同時にキャッシュに記憶することが可能であり、これらのいずれかを交互に要求しても、おそらく、スラッシングを生じることはない。実際の利点は実際にプログラムを実行することに依存する。しかし、マルチ・セットによって、シングル・セット・キャッシュに比べて改善されたとしても、ミス・ペナルティに関する性能コストは、CPUの処理速度が増すにつれて、引き続き増大することになる。
【0011】
データと命令に対して別々のキャッシュが設けられるハーバード・アーキテクチャの場合、少なくともデータが命令とスラッシングを生じることに対して、スラッシングが軽減される。もちろん、上述のように、SRAMは高価であり、従って、とりわけハーバード・アーキテクチャにおけるマルチ・セット・キャッシュのセット数には制限がある。
【0012】
スラッシングを回避するもう一つの方法は、必要になる前に、データと命令をキャッシュに「先取り」しておくことである。すなわち、CPUからの要求を待つのではなく、実際に必要とされる前に、CPUがどんな情報を必要とするかを予測しようと試みる各種メカニズムが存在する。例えば、SPARC(R)バージョン9アーキテクチャには、データをデータ・キャッシュに先取りするデータ先取り命令を実行する能力が組み込まれている。しかし、この先取り命令によって可能になるのは、不変の静的サイズの先取りであり、他の能力は得られない。
【0013】
現在のところ、静的、非特定先取り命令が、コンパイル時にコンパイルされるコードに挿入され、コンパイルされた命令ストリームの一部として実施される。不変の静的先取り命令は、命令ストリームに加え、既存のアーキテクチャによって実施するのは簡単であるが、検索した情報をどのキャッシュまたはキャッシュ・セットに記憶すべきか、あるいは、どれだけの情報を検索すべきかに関する情報が、命令ストリームに含まれていないので、こうした案によって、キャッシュ・メモリの管理は必ずしも強化されるわけではない。近い将来に予測されるCPUの速度の大幅な向上を考慮すると、スラッシングの確率をいっそう低下させる先取り制御を可能にすることが有利である。
【0014】
【発明が解決しようとする課題】
ハーバード・アーキテクチャの場合、命令とデータを異なるキャッシュに記憶することが可能であり、先行技術による先取りは、データの先取りを可能にするので、命令とデータを適合するキャッシュに書き込むようにする動的方法及びシステムが有利であろう。さらに、先取りのサイズ、または、情報が書き込まれるマルチ・セット・キャッシュの特定のセットを動的に制御する、従って、キャッシュ・メモリ管理プロセスを最大限に活用することが有利であろう。
【0015】
本発明は、主メモリからのデータまたは命令の先取りを可能にする方法及びシステムである。
【0016】
【課題を解決するための手段】
命令ストリームの一部をなす先取り命令は、先取りキャッシュ制御情報が既存の先取り命令に付加されている強化MMUによって処理される。TLBによって処理されると、先取り命令には、2進フィールドが含まれることになり、この2進フィールドに、最適なキャッシュ・セット記憶場所及び先取りすべき最適データ量を規定する、従って、スラッシングを軽減することになる値を割り当てることによって、オペレーティング・システム、ローダ、または、実行時ソフトウェアは、キャッシュの先取りを制御することが可能になる。
【0017】
独立した命令キャッシュ及びデータ・キャッシュによるハーバード・アーキテクチャの支援は、独立した命令キャッシュ及びデータ・キャッシュの動的ソフトウェア制御によって可能になる。すなわち、先取り命令には、検索を受ける情報のタイプによって、データの先取りか、あるいは、命令の先取りかを指示するフィールドが含まれている。キャッシュ・セット番号は、実行時ソフトウェアまたはオペレーティング・システムによって動的に調製され、どのセットに情報をプリロードすべきかが指示される。サイズ・フィールドも、要求される情報に応じて可変先取りサイズが得られるように動的に調整される。アドレス・フィールドは、先取りの開始アドレスを指示する。
【0018】
【発明の実施の形態】
上述のように、CPUからの要求を待つのではなく、実際に必要になる前に、CPUがどの情報を必要とすることになるかを予測しようと試みる各種メカニズムが存在する。先取りメカニズムには、次のラインがキャッシュによるミスを生じるものと予測して、先取りを実施するものがある。先取り命令は、例えば、現在のPA Risc、SGI−MIPS、及び、パワーPCに用いられている。
【0019】
一般に、全てのミスが否応なく生じるものと仮定して、取り出された最後のラインに続くラインが先取りされ、ライン・バッファに記憶される、すなわち、取り出されるラインは、それまでキャッシュに納められていないものである。次のミスを予測して先取りが行われるキャッシュは、「フェッチ・オールウェイズ」またはクラス2キャッシュと呼ばれる。逆に、ミスを生じたラインだけが取り出されるキャッシュは、クラス1、フェッチ・オン・デマンド、または、フェッチ・オン・フォールト・キャッシュと呼ばれる。本発明は、任意のタイプの先取りメカニズムと組み合わせて用いられ、キャッシュ構造を管理する初期先取りコマンドに対する拡張として実行される。
【0020】
コンピュータ・システムにおいて、コンパイラは、一般に、オブジェクト・プログラムに所定のコンピュータにおけるそのプログラムの実行に必要な命令を組み込む。すなわち、コンパイラは、特定の高レベル言語(ソース・コード)による入力プログラムを特定の機械タイプの機械言語(オブジェクト・コード)に変換するプログラムである。従って、上述の先取りコマンドは、コンパイラによって生成され、その結果生じるオブジェクト・コードまたは命令ストリームの一部として実行される。
【0021】
上述のように、本発明以前には、先取り命令によって、不変、静的サイズの先取りが可能であったが、キャッシュ・セット管理のような他の能力は得られなかった。すなわち、先行技術の先取り命令は、先取りをトリガするだけであった。一方、本発明によれば、先取り命令に処理を加え、処理が済むと、TLB項目に、オペレーティング・システム(O/S)、ローダ、または、実行時ソフトウェアによる先取りの制御を可能にする2進フィールドが含まれることになる強化TLB(従って、MMU)が得られる。そうするとき、先取りハードウェアには、最適なキャッシュ・セット記憶場所、及び、先取りすべき最適データ量に関する情報が提供されるので、スラッシングが軽減されることになる。
【0022】
TLB先取り項目に先取り制御情報を納めることによって、キャッシュ制御は、先取り命令によって明示的に送り出されるのではなく、ページ毎に実行されることになる。こうしたメカニズムによって、制御情報のない先取り命令を備えたアーキテクチャとの互換性が得られる。さらに、オペレーティング・システム・ソフトウェアによって、実行時にページ毎に制御を変更することが可能になる。
【0023】
図3を参照すると、先取り命令20には、TLB22によって処理される命令ストリームの一部として仮想アドレスが含まれている。一般に、TLBは、仮想・物理アドレス・マッピング、アクセス制御、及び、従来のTLB22の項目に含まれる他の2進要素に関する情報を含む<Addr TranslationInfo>フィールドを生成する。しかし、本発明によれば、結果得られる、TLB22で処理されたアドレスには、下記の2進フィールドを含む追加フィールドが含まれている:
<Addr Translation Info><Prefetch Fault Bit><I/D BIT><SET #><SIZE>
【0024】
MMU出力フィールドがO/Sによって充填され、2つの操作、すなわち、メモリからの情報検索とキャッシュ管理、に有効な2進値が含まれることになる。〈Prefetch Fault Bit〉がセットされている時に、MMUにマッピングするアドレスのために先取り命令が実行されると、<Prefetch Fault Bit>によって、プロセッサのフォールトが生じる。<I/D BIT>フィールドは、先取りがデータのために行われるのか、あるいは、命令のために行われるのかを指示する。<SET #>フィールドの識別によって、どのセットに情報をプリロードすべきかが指示される。<SIZE>フィールドによって、可変先取りサイズが得られる。上述の先取り命令フィールドまたはその任意の部分は、任意のアクセス可能な記憶場所に記憶されているO/S、ローダ、実行時ソフトウェア、または、コンパイラによる充填が可能である。コンパイラまたはローダは、フィールドに関する省略時初期値の供給に利用することが可能である。
【0025】
代替案として、コンパイルされる先取り命令に、コンパイラによって空フィールドを設けることによって、最終的には、オペレーティング・システム、ローダ、または、実行時ソフトウェアが、特定の原則に従って、実行中にフィールドに対して2進値を与えることができるようにすることが可能であり、これは、本発明の範囲内である。
【0026】
これらのフィールドは、充填されると、主メモリ30にメモリ要求を出し、先取りした情報をキャッシュ・メモリに記憶させる先取りユニット24によって処理を受ける。キャッシュ・メモリは命令キャッシュ26及びデータ・キャッシュ28を含む。従って、スラッシングは、上述のフィールドに充填し、最適なキャッシュ・セット記憶場所及びデータの取り出し量に関する情報が、先取り制御ハードウェア24に提供されるようにすることによって軽減される。
【0027】
図3示すように、先取りユニット24は、主メモリから検索したデータを命令キャッシュ26及びデータ・キャッシュ28に送り、「Set 0」、「Set1」、...「Set N」で表示の矢印による指示に従って、その情報が特定のセットに記憶されるように指定する。こうした指定の有用性が、図4に示されている。
【0028】
図4を参照すると、CPU32及び主メモリ34が、ハーバード・アーキテクチャのマルチ・セット(この場合、2セット)・キャッシュであるキャッシュ・メモリ36と共に示されている。Instruction Cache Set#1及び#2が示され、Data Cache Set #1及び#2が示されている。例えば、O/Sによって生成される先取り命令には、下記の値が含まれる:
<Prefetch Addr Info><I><1><300><4>
【0029】
こうした場合、先取りを実行すると、ライン300で始まる、4ライン・サイズのInstruction Cache Set #1命令、すなわち、ライン300、400、500、及び、600を検索し、記憶することになる。先取りハードウェア24(図3参照)にこの情報を提供することによって、スラッシングの軽減は、下記のように強化される。ライン300から始まる、4ラインから構成されるメモリ・ブロックには、特定の操作を実施するのに必要な、Instruction Set #1に記憶されるラインが含まれていることが望ましい。異なる先取りにおいて、ライン1300で始まるメモリ・ブロックは、異なる特定の操作の実施に必要な2ラインから構成され、従って、Instruction Set #1におけるキャッシュ・ミスを回避するため、ライン300で始まるブロックとは異なるセット、すなわち、Instruction Set #2に記憶される。サイズ・フィールド及びキャッシュ・セット記憶場所フィールドの最適化プロセスについては、以下で述べる。
【0030】
上述のように、<SIZE>フィールドによって、取り出すべきライン量を指示する2進数が得られる。実施例の一つでは、サイズ・フィールドの最適化は、「先入れ−−先出し」(FIFO)方式で保持されているプログラム・カレンダのヒストグラムに各先取りの履歴を記録して、キャッシュ・ミスのモニタを行うことによって実施される。ヒストグラムは、例えば、物理アドレス、そのアドレスに対応する先取り、先取り時間、及び、特定のデータがキャッシュに保持されたクロック・サイクル数のテーブルである。このメカニズムにおいて、O/Sまたは実行時ソフトウェアは、ビットの置換に関する原則を有しており、ミス及び置換に関する情報を受信すると、その原則に基づいてサイズ・フィールドを変更することが可能である。異なる方法において、O/Sは、命令先取りについてはある省略時サイズを利用し、データ先取りについては別の省略時サイズを利用して、サイズを決定する。別の実施例では、サイズは、ページ毎にローダ・ソフトウェアによって統計的に割り当てることが可能であり、ローダは、同じページにおいて同様のサイズのデータ構造を割り当てることが可能である。さらにもう一つの実施例では、プログラムは、数回にわたって実行され、その性能は、ページ毎に省略時解釈として用いられる各種サイズのインクリメントによって測定される。
【0031】
図5を参照すると、本発明のステップを実施する順序を明らかにしたフローチャートが示されている。プログラムは、まず、要素40から開始する。ステップ42において、カウンタが初期化され、全てのフィールドがゼロにセットされる。次のステップは、44において、TLBミスの有無を判定することである。応答がイエスの場合、すなわち、TLBミスが存在する場合、次のステップは、先取りフォールト・ビットをセットする、中断命令を開始することである。すなわち、ステップ46において、このTLB項目を参照する最初の先取り命令によって、先取りフォールトが生じる。O/Sは、このフォールトを生じる参照が、命令に関するものか、あるいは、データに関するものかを判定し、I/Dビットを適正にセットすることが可能である。Cache Set #フィールドにラウンド・ロビン方式で値を割り当てることによって、Cache Set #フィールドに最近用いられた最も小さいキャッシュ・セット番号が納められるようにすることが可能である。Sizeフィールドも上述のようにセットされる。ステップ48において、O/Sは、これに従ってTLBのロードを行い、この命令が先取り命令であるか否かを尋ねる。それが先取り命令でなければ、次のステップは、50において、ただ次の命令を実行するだけのことである。
【0032】
ステップ44に戻って、TLBミスがないと分かった場合、システムは、ステップ46をスキップし、ステップ48において、この命令が先取り命令であるか否かを尋ねる。やはり、先取り命令でない場合には、次のステップは、50において、ただ次の命令を実行するだけのことである。
【0033】
ステップ48において、このシステムが、問題となる命令が先取り命令であると判定すると、ステップ52において、その先取り命令がデータを参照するか否かの質問が行われる。その先取り命令がデータを参照する場合、ステップ54において、I/Dビットはデータにセットされる。その先取り命令が命令を参照する場合、ステップ56においてI/Dビットは命令にセットされる。ハーバード・アーキテクチャを備えたシステムの場合、<I/D>フィールドは、どのキャッシュに、すなわち、命令キャッシュとデータ・キャッシュのどちらに、検索した情報を記憶すべきかを指示する。
【0034】
上述のように、ステップ52において、先取りがデータの先取りということになると、このシステムは、ステップ54においてI/Dビットをデータにセットする。このシステム及び方法は、次に、ステップ58において、Data Cache Set #をインクリメントする。従って、ステップ60において、このCache Set #を特定のData Cache Set #にセットすることが可能になる。ステップ62において、上述のやり方でSizeフィールドをセットし、ステップ64において、キャッシュ・メモリの最適化及び制御が実施される。さらに、それに従って作成された命令が実行される。
【0035】
やはり上述のように、ステップ52において、先取りがデータの先取りではないということになると、ステップ56において、I/Dビットを命令にセットする。次に、ステップ66において、Instruction Cache Set #をインクリメントする。従って、ステップ68において、このCacheSet #を特定のInstruction Cache Set #にセットすることが可能になる。次に、ステップ70において、上述のやり方でSizeフィールドをセットし、ステップ64において、キャッシュ・メモリの最適化及び制御が実施される。さらに、それに従って作成された命令が実行される。最後に、所定のサイズを備えた情報が特定のキャッシュ・セットに書き込まれる。
【0036】
とりわけ、本書に解説の2進フィールドを有する先取り命令の実施シーケンスについて記載のある、_/_/_に提出された、出願番号0_/_,_の、Tunable Software Control of Harvard Architecture Cache Memories Using Prefetch Instructionsと題する同時出願の米国特許出願が、参考までに本書に組み込まれている。
【0037】
図5に関する上記説明は、このプログラムを実行するプラットフォームが、先取りを実施する能力を含んでおり、マルチ・セット・ハーバード・アーキテクチャであるという前提によるものであるが、この方法及びシステムは、もちろん、クロス・プラットフォームである。本書に解説の発明は、フィールドそれ自体、及び、それを生成し、活用するシステム及び方法にある。
【図面の簡単な説明】
【図1】 先行技術によるシングル・セット・キャッシュを示す図である。
【図2】 先行技術によるマルチ・セット・キャッシュを示す図である。
【図3】 先取り命令を受信する変換索引バッファと、本発明の先取り命令フィールドを含む変換索引バッファの出力を示す図である。
【図4】 本発明の先取り命令が実施されるハーバード・アーキテクチャ・システムを示す図である。
【図5】 本発明の先取り命令を実施するためのステップを示すフローチャートである。
【符号の説明】
20 先取り命令
22 TLB
24 先取りユニット
26 命令キャッシュ
28 データ・キャッシュ
30 主メモリ
Claims (9)
- データまたは命令である記憶情報を保持するための主メモリと、データ・キャッシュ及び命令キャッシュを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取りユニットによって用いられる先取り命令を生成する方法において、
命令/データ・フィールドを含む先取り命令を受け取るステップと、
前記命令/データ・フィールドに、前記記憶情報が命令であるか、または、データであるかを示す先取りタイプの値を充填し、これによって、前記情報を前記命令キャッシュに記憶すべきか、または、前記データ・キャッシュに記憶すべきかを指示するステップと、
を有する方法。 - 記憶情報を保持するための主メモリ及びキャッシュ・メモリを備えたコンピュータによって利用される、先取りユニットによって用いられる先取り命令を生成する方法において、
サイズ・フィールドを含む初期先取り命令を受け取るステップと、
前記主メモリから検索すべき情報及び前記キャッシュ・メモリに記憶すべき情報の量を示す先取りタイプ値を前記サイズ・フィールドに充填するステップと、
を有する方法。 - 記憶情報を保持するための主メモリと少なくとも2つのキャッシュ・セットを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取りユニットによって用いられる先取り命令を生成する方法において、
キャッシュ・セット・フィールドを含む先取り命令を受け取るステップと、
前記キャッシュ・セット・フィールドに先取りタイプ値を充填して、前記主メモリから検索した情報を前記少なくとも2つのキャッシュ・セットのどちらに記憶すべきかを指示するステップと、
を有する方法。 - メモリ管理装置、データまたは命令である記憶情報を保持するための主メモリ、及び、データ・キャッシュ及び命令キャッシュを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取り命令を生成する方法において、
初期先取り命令を受け取るステップと、
前記メモリ管理装置が前記初期先取り命令を強化し、前記記憶情報が命令であるか、または、データであるかを指示する、従って、前記情報を前記命令キャッシュに記憶すべきか、または、前記データ・キャッシュに記憶すべきかを指示する先取りタイプ値が含まれている、命令/データ・フィールドを含む出力として、強化先取り命令を生成するステップと、
を有する方法。 - メモリ管理装置、記憶情報を保持するための主メモリ、及び、キャッシュ・メモリを備えたコンピュータによって利用される、先取り命令を提供する方法において、
初期先取り命令を受け取るステップと、
前記メモリ管理装置が前記初期先取り命令を強化し、前記主メモリから検索すべき情報及び前記キャッシュ・メモリに記憶すべき情報の量を指示する先取りタイプ値が含まれているサイズ・フィールドを含む出力として、強化先取り命令を生成するステップと、
を有する方法。 - メモリ管理装置、記憶情報を保持するための主メモリ、及び、少なくとも2つのキャッシュ・セットを含むキャッシュ・メモリを備えたコンピュータによって利用される、先取り命令を提供する方法において、
初期先取り命令を受け取るステップと、
前記メモリ管理装置が前記初期先取り命令を強化し、前記主メモリから検索した情報を前記少なくとも2つのキャッシュ・セットのどちらに記憶すべきかを指示する先取りタイプ値が含まれているキャッシュ・セット・フィールドを含む出力として、強化先取り命令を生成するステップと、
を有する方法。 - CPU、データまたは命令である記憶情報を保持するための主メモリ、及び、データ・キャッシュ及び命令キャッシュを含むキャッシュ・メモリから成り、前記CPUが、前記主メモリに記憶されている前記CPUに必要となる情報の先取りを実施するように構成された先取り命令が含まれている命令ストリームを実行するように構成されている、強化先取り命令を生成するためのコンピュータ・システムにおいて、
初期先取り命令を受け取って、前記主メモリに記憶されている前記CPUに必要となる情報が命令であるか、または、データであるかを指示する、従って前記情報を前記命令キャッシュに記憶すべきか、あるいは前記データ・キャッシュに記憶すべきかを指示する先取りタイプ値が含まれている命令/データ・フィールドを備えた強化先取り命令を出力として生成するように構成されたメモリ管理装置と、
前記情報が、前記命令/データ・フィールドに含まれている前記先取りタイプ値に基づいて前記主メモリから検索され、前記命令キャッシュまたは前記データ・キャッシュに記憶されるように、前記強化先取り命令を実行するように構成された先取りユニットと、
を有するコンピュータ・システム。 - CPU、及び、データまたは命令である記憶情報を保持するための主メモリを備え、前記CPUが、前記主メモリに記憶されている前記CPUに必要となる情報の先取りを実施するように構成された少なくとも1つの先取り命令が含まれている命令ストリームを実行するように構成されている、コンピュータと連係して機能するように構成された先取り強化装置において、
少なくとも1つの前記先取り命令を受信して、前記主メモリに記憶されている前記CPUに必要となる情報が命令であるか、または、データであるかを指示する、従って、前記情報を命令キャッシュに記憶すべきか、または、データ・キャッシュに記憶すべきかを指示する先取りタイプ値が含まれている命令/データ・フィールドを備えた強化先取り命令を出力として生成するように構成されたメモリ管理装置と、
前記情報が、前記命令/データ・フィールドに含まれている前記先取りタイプ値に基づいて前記主メモリから検索され、前記命令キャッシュまたは前記データ・キャッシュに記憶されるように、前記強化先取り命令を実行するように構成された先取りユニットと、
を有する先取り強化装置。 - 前記データ・キャッシュに、少なくとも2つのデータ・キャッシュ・セットが含まれ、前記メモリ管理装置によって生成される前記強化先取り命令に、前記主メモリから検索された情報を前記データ・キャッシュ・セットのどちらに記憶すべきかを指示するように構成された先取りタイプ値が含まれている、データ・キャッシュ・セット・フィールドが含まれる請求項8に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US49936495A | 1995-07-07 | 1995-07-07 | |
US08/499364 | 1995-07-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09128294A JPH09128294A (ja) | 1997-05-16 |
JP3816586B2 true JP3816586B2 (ja) | 2006-08-30 |
Family
ID=23984986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19416696A Expired - Lifetime JP3816586B2 (ja) | 1995-07-07 | 1996-07-05 | 先取り命令を生成する方法とシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US5796971A (ja) |
EP (1) | EP0752644A3 (ja) |
JP (1) | JP3816586B2 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065108A (en) * | 1996-01-24 | 2000-05-16 | Sun Microsystems Inc | Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same |
US5761468A (en) * | 1996-05-15 | 1998-06-02 | Sun Microsystems Inc | Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions |
US6065100A (en) * | 1996-11-12 | 2000-05-16 | Micro-Design International | Caching apparatus and method for enhancing retrieval of data from an optical storage device |
US6195735B1 (en) * | 1996-12-31 | 2001-02-27 | Texas Instruments Incorporated | Prefetch circuity for prefetching variable size data |
US6175898B1 (en) * | 1997-06-23 | 2001-01-16 | Sun Microsystems, Inc. | Method for prefetching data using a micro-TLB |
US6490658B1 (en) * | 1997-06-23 | 2002-12-03 | Sun Microsystems, Inc. | Data prefetch technique using prefetch cache, micro-TLB, and history file |
US6012106A (en) * | 1997-11-03 | 2000-01-04 | Digital Equipment Corporation | Prefetch management for DMA read transactions depending upon past history of actual transfer lengths |
KR19990049284A (ko) * | 1997-12-12 | 1999-07-05 | 구본준 | 데이터 프로그램 장치 |
US5948095A (en) * | 1997-12-31 | 1999-09-07 | Intel Corporation | Method and apparatus for prefetching data in a computer system |
US6088789A (en) * | 1998-05-13 | 2000-07-11 | Advanced Micro Devices, Inc. | Prefetch instruction specifying destination functional unit and read/write access mode |
US6557080B1 (en) * | 1999-01-25 | 2003-04-29 | Wisconsin Alumni Research Foundation | Cache with dynamic control of sub-block fetching |
JP2001109661A (ja) | 1999-10-14 | 2001-04-20 | Hitachi Ltd | キャッシュメモリの割当方法及びオペレーティングシステム及びそのオペレーティングシステムを有するコンピュータシステム |
US6799263B1 (en) | 1999-10-28 | 2004-09-28 | Hewlett-Packard Development Company, L.P. | Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted |
EP1139222A1 (en) * | 2000-03-31 | 2001-10-04 | Texas Instruments Incorporated | Prefetch for TLB cache |
US6941310B2 (en) * | 2002-07-17 | 2005-09-06 | Oracle International Corp. | System and method for caching data for a mobile application |
US7127600B2 (en) * | 2003-09-30 | 2006-10-24 | Intel Corporation | Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting |
US7337278B2 (en) * | 2004-04-15 | 2008-02-26 | International Business Machines Corporation | System, method and storage medium for prefetching via memory block tags |
US7386679B2 (en) * | 2004-04-15 | 2008-06-10 | International Business Machines Corporation | System, method and storage medium for memory management |
US20060248279A1 (en) * | 2005-05-02 | 2006-11-02 | Al-Sukhni Hassan F | Prefetching across a page boundary |
US7506105B2 (en) | 2005-05-02 | 2009-03-17 | Freescale Semiconductor, Inc. | Prefetching using hashed program counter |
US20070101100A1 (en) * | 2005-10-28 | 2007-05-03 | Freescale Semiconductor, Inc. | System and method for decoupled precomputation prefetching |
US20070294693A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Scheduling thread execution among a plurality of processors based on evaluation of memory access data |
US8239841B2 (en) | 2008-04-04 | 2012-08-07 | International Business Machines Corporation | Prefetching irregular data references for software controlled caches |
US8146064B2 (en) * | 2008-04-04 | 2012-03-27 | International Business Machines Corporation | Dynamically controlling a prefetching range of a software controlled cache |
US8055849B2 (en) * | 2008-04-04 | 2011-11-08 | International Business Machines Corporation | Reducing cache pollution of a software controlled cache |
US8131982B2 (en) * | 2008-06-13 | 2012-03-06 | International Business Machines Corporation | Branch prediction instructions having mask values involving unloading and loading branch history data |
GB2463942B (en) * | 2008-10-03 | 2012-08-08 | Icera Inc | Disassembling an executable to analyse function calls to minimise cache misses |
US8549209B2 (en) * | 2008-11-04 | 2013-10-01 | Mosaid Technologies Incorporated | Bridging device having a configurable virtual page size |
US10338923B2 (en) * | 2009-05-05 | 2019-07-02 | International Business Machines Corporation | Branch prediction path wrong guess instruction |
US8533437B2 (en) * | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
US8521999B2 (en) * | 2010-03-11 | 2013-08-27 | International Business Machines Corporation | Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history |
CN103019657B (zh) * | 2012-12-31 | 2015-09-16 | 东南大学 | 支持数据预取与重用的可重构系统 |
KR102069273B1 (ko) | 2013-03-11 | 2020-01-22 | 삼성전자주식회사 | 시스템 온 칩 및 그 동작방법 |
US11126559B2 (en) * | 2013-12-30 | 2021-09-21 | Michael Henry Kass | Translation look-aside buffer and prefetch indicator |
EP3049915B1 (en) * | 2014-12-14 | 2020-02-12 | VIA Alliance Semiconductor Co., Ltd. | Prefetching with level of aggressiveness based on effectiveness by memory access type |
US9792215B2 (en) | 2015-03-28 | 2017-10-17 | Qualcomm Incorporated | Command-driven translation pre-fetch for memory management units |
WO2018205117A1 (zh) * | 2017-05-08 | 2018-11-15 | 华为技术有限公司 | 一种多核系统内存访问方法、相关装置、系统及存储介质 |
US10558583B1 (en) * | 2019-01-31 | 2020-02-11 | The Florida International University Board Of Trustees | Systems and methods for managing cache replacement with machine learning |
US10880583B2 (en) | 2019-04-26 | 2020-12-29 | Advanced New Technologies Co., Ltd. | Method, apparatus, terminal, and readable storage medium for offline caching |
US20220197821A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Device, system and method for selectively dropping software prefetch instructions |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1279731C (en) * | 1986-06-27 | 1991-01-29 | Ruby Bei-Loh Lee | Cache memory with variable fetch and replacement schemes |
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
US5375216A (en) * | 1992-02-28 | 1994-12-20 | Motorola, Inc. | Apparatus and method for optimizing performance of a cache memory in a data processing system |
US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
US5551001A (en) * | 1994-06-29 | 1996-08-27 | Exponential Technology, Inc. | Master-slave cache system for instruction and data cache memories |
KR19990087830A (ko) * | 1996-03-28 | 1999-12-27 | 포만 제프리 엘 | 컴퓨터 장치, 컴파일러 방법 및 다중 캐시 라인 사전적재방법 |
US5761468A (en) * | 1996-05-15 | 1998-06-02 | Sun Microsystems Inc | Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions |
US7376812B1 (en) * | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
-
1996
- 1996-07-03 EP EP96110735A patent/EP0752644A3/en not_active Withdrawn
- 1996-07-05 JP JP19416696A patent/JP3816586B2/ja not_active Expired - Lifetime
-
1997
- 1997-08-22 US US08/918,707 patent/US5796971A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0752644A2 (en) | 1997-01-08 |
JPH09128294A (ja) | 1997-05-16 |
US5796971A (en) | 1998-08-18 |
EP0752644A3 (en) | 2001-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3816586B2 (ja) | 先取り命令を生成する方法とシステム | |
JP3739491B2 (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
US9652230B2 (en) | Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines | |
US8806177B2 (en) | Prefetch engine based translation prefetching | |
US5530941A (en) | System and method for prefetching data from a main computer memory into a cache memory | |
US5958040A (en) | Adaptive stream buffers | |
US6321310B1 (en) | Memory architecture for a computer system | |
US5761468A (en) | Hardware mechanism for optimizing instruction and data prefetching by forming augmented prefetch instructions | |
US5043870A (en) | Computer with automatic mapping of memory contents into machine registers during program execution | |
US7127559B2 (en) | Caching of dynamic arrays | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US9286221B1 (en) | Heterogeneous memory system | |
JPH07253926A (ja) | キャッシュ・ミスによる時間ペナルティ減少方法 | |
US6668307B1 (en) | System and method for a software controlled cache | |
KR100234647B1 (ko) | 인스트럭션 프리페치 방법 및 데이터 처리 시스템 | |
JP2001290706A (ja) | Tlbキャッシュのためのプリフェッチ | |
US6507895B1 (en) | Method and apparatus for access demarcation | |
US20070300210A1 (en) | Compiling device, list vector area assignment optimization method, and computer-readable recording medium having compiler program recorded thereon | |
JP2005536798A (ja) | メモリバスのプロトコル特性に適合するプロセッサのプリフェッチ | |
JP3973129B2 (ja) | キャッシュメモリ装置及びそれを用いた中央演算処理装置 | |
US6851010B1 (en) | Cache management instructions | |
KR20050115875A (ko) | 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체 | |
US8429383B2 (en) | Multi-processor computing system having a JAVA stack machine and a RISC-based processor | |
EP0862118B1 (en) | Computer system comprising a memory controller for burst transfer | |
EP0101718A1 (en) | COMPUTER WITH AUTOMATIC TOPOGRAPHY OF THE MEMORY CONTENT IN REGISTERS. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060328 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060412 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060420 |
|
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: 20060509 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060608 |
|
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: 20100616 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110616 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110616 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120616 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130616 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |