JPH09128294A - 先取り命令を生成する方法とシステム - Google Patents

先取り命令を生成する方法とシステム

Info

Publication number
JPH09128294A
JPH09128294A JP8194166A JP19416696A JPH09128294A JP H09128294 A JPH09128294 A JP H09128294A JP 8194166 A JP8194166 A JP 8194166A JP 19416696 A JP19416696 A JP 19416696A JP H09128294 A JPH09128294 A JP H09128294A
Authority
JP
Japan
Prior art keywords
instruction
prefetch
cache
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.)
Granted
Application number
JP8194166A
Other languages
English (en)
Other versions
JP3816586B2 (ja
Inventor
David R Emberson
デビッド・アール・エンバーソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09128294A publication Critical patent/JPH09128294A/ja
Application granted granted Critical
Publication of JP3816586B2 publication Critical patent/JP3816586B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

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)

Abstract

(57)【要約】 【課題】 データ又は命令の先取りを可能にする方法及
びシステムを提供する。 【解決手段】 命令ストリーム内にある先取り命令は、
先取りキャッシュ制御情報が既存の先取り命令の一部と
して納められているメモリ管理装置(MMU)によって
処理を受ける。それにより先取り命令には、2進フィー
ルドが含まれることになり、この2進フィールドに、最
適なキャッシュ・セット記憶場所及び先取りすべき最適
データ量を規定する、従って、スラッシングを軽減する
ことになる値を割り当てることによって、オペレーティ
ング・システム、または、実行時ソフトウェアは、キャ
ッシュの先取りを制御することが可能になる。

Description

【発明の詳細な説明】
【0001】
【発明が属する技術分野】本発明は、メモリ管理装置に
関するものであり、とりわけ、主メモリからキャッシュ
・メモリにデータ及び命令を供給する先取り命令に関す
るものである。
【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に近いある記憶場所に記憶
することによって、主メモリに記憶されている情報に対
するアクセス時間が短縮される。この点において、CP
Uがデータ及び命令をアクセスするとき、「メモリ管理
装置」(MMU)がデータ及び命令の管理を助ける働き
をする。従って、変換は、MMUの一部をなす「変換索
引バッファ」(TLB)に記憶される。要求された変換
がTLBにない場合、TLBに欠落があるので、主メモ
リに記憶されているページ・テーブルを調べることによ
って、VAからPAへの変換を得なければならない。
【0005】メモリ待ち時間を回避するため、頻繁に用
いられるデータ及び命令は、主メモリに記憶されるだけ
ではなく、よりCPUに近い「キャッシュ」・メモリに
記憶される。キャッシュは、主メモリよりはるかに少な
いラインのための容量しかなく、スタティック・RAM
(SRAM)である(DRAMに比べるとはるかに高速
で、電力消費がはるかに大きく、はるかに高価であ
る)。実際、上述のTLBは、キャッシュ・メモリに似
ている。従って、キャッシュの機能は、はるかにアクセ
ス時間が長くなる主メモリから呼び出す代わりに、頻繁
に用いられるデータまたは命令をCPUの近くに納め
て、メモリ待ち時間の影響を軽減することにある。
【0006】キャッシュ・メモリによってメモリ待ち時
間の影響が軽減されるが、その構造のためにそれ自体の
問題が悪化する。図1を参照すると、最も単純なタイプ
のキャッシュであるシングル・セット・キャッシュが示
されている。主メモリ10とキャッシュ12及びCPU
14の組み合わせとの離隔距離は、キャッシュ12とC
PUとの互いの離隔距離よりかなり大きく描かれてい
る。すなわち、「スラッシング」の問題によって、「ミ
ス・ペナルティ」として知られるスピード・ペイメント
が導入される。ミス・ペナルティは、キャッシュに必要
なデータをロードするのに必要な時間遅延に等しい。
【0007】スラッシングが生じるのは、複数データ要
素が同じキャッシュ・セットを利用する場合である。図
1に戻ると、主メモリ10は、それぞれ、100オフセ
ット単位のインクリメントで100〜1000のライン
を含む「ページ」に分割される(実際には、主メモリに
は、もっと多くのページが含まれることになる)。従っ
て、最初のページがライン100〜1000を占め、第
2のページには、ライン1100〜2000が含まれ、
以下同様になっている。
【0008】スラッシングを例示するため、図1には、
主メモリから検索され、キャッシュのオフセット400
に記憶されているライン1400をCPUが要求したと
ころが示されている。ときどきそのすぐ後、CPUはラ
イン2400を要求すると、主メモリから検索され、や
はりキャッシュのオフセット400にマッピングされ、
従って、既に記憶されているライン1400に重ね書き
される。キャッシュには要求されたラインが含まれてお
らず、主メモリから検索することが必要になるので、ミ
ス・ペナルティを被ることになった。そのすぐ後、CP
Uはライン1400が再び必要になり、これを要求する
と、主メモリから検索され、キャッシュのオフセット4
00にマッピングされ、従って、既に記憶されているラ
イン2400に重ね書きされる。再び、ミス・ペナルテ
ィを被ることになった。2つのライン1400及び24
00が、両方とも、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 Translation
Info>フィールドを生成する。しかし、本発明によ
れば、結果得られる、TLB22で処理されたアドレス
には、下記の2進フィールドを含む追加フィールドが含
まれている:<Addr Translation I
nfo><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」、「S
et1」、...「Set N」で表示の矢印による指
示に従って、その情報が特定のセットに記憶されるよう
に指定する。こうした指定の有用性が、図4に示されて
いる。
【0028】図4を参照すると、CPU32及び主メモ
リ34が、ハーバード・アーキテクチャのマルチ・セッ
ト(この場合、2セット)・キャッシュであるキャッシ
ュ・メモリ36と共に示されている。Instruct
ion Cache Set#1及び#2が示され、D
ata Cache Set #1及び#2が示されて
いる。例えば、O/Sによって生成される先取り命令に
は、下記の値が含まれる:<Prefetch Add
r Info><I><1><300><4>
【0029】こうした場合、先取りを実行すると、ライ
ン300で始まる、4ライン・サイズのInstruc
tion Cache Set #1命令、すなわち、
ライン300、400、500、及び、600を検索
し、記憶することになる。先取りハードウェア24(図
3参照)にこの情報を提供することによって、スラッシ
ングの軽減は、下記のように強化される。ライン300
から始まる、4ラインから構成されるメモリ・ブロック
には、特定の操作を実施するのに必要な、Instru
ction Set #1に記憶されるラインが含まれ
ていることが望ましい。異なる先取りにおいて、ライン
1300で始まるメモリ・ブロックは、異なる特定の操
作の実施に必要な2ラインから構成され、従って、In
struction 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ビットを適正にセットすることが可能である。Cac
he Set #フィールドにラウンド・ロビン方式で
値を割り当てることによって、Cache Set #
フィールドに最近用いられた最も小さいキャッシュ・セ
ット番号が納められるようにすることが可能である。S
izeフィールドも上述のようにセットされる。ステッ
プ48において、O/Sは、これに従ってTLBのロー
ドを行い、この命令が先取り命令であるか否かを尋ね
る。それが先取り命令でなければ、次のステップは、5
0において、ただ次の命令を実行するだけのことであ
る。
【0032】ステップ44に戻って、TLBミスがない
と分かった場合、システムは、ステップ46をスキップ
し、ステップ48において、この命令が先取り命令であ
るか否かを尋ねる。やはり、先取り命令でない場合に
は、次のステップは、50において、ただ次の命令を実
行するだけのことである。
【0033】ステップ48において、このシステムが、
問題となる命令が先取り命令であると判定すると、ステ
ップ52において、その先取り命令がデータを参照する
か否かの質問が行われる。その先取り命令がデータを参
照する場合、ステップ54において、I/Dビットはデ
ータにセットされる。その先取り命令が命令を参照する
場合、ステップ56においてI/Dビットは命令にセッ
トされる。ハーバード・アーキテクチャを備えたシステ
ムの場合、<I/D>フィールドは、どのキャッシュ
に、すなわち、命令キャッシュとデータ・キャッシュの
どちらに、検索した情報を記憶すべきかを指示する。
【0034】上述のように、ステップ52において、先
取りがデータの先取りということになると、このシステ
ムは、ステップ54においてI/Dビットをデータにセ
ットする。このシステム及び方法は、次に、ステップ5
8において、Data Cache Set #をイン
クリメントする。従って、ステップ60において、この
Cache Set #を特定のData Cache
Set #にセットすることが可能になる。ステップ
62において、上述のやり方でSizeフィールドをセ
ットし、ステップ64において、キャッシュ・メモリの
最適化及び制御が実施される。さらに、それに従って作
成された命令が実行される。
【0035】やはり上述のように、ステップ52におい
て、先取りがデータの先取りではないということになる
と、ステップ56において、I/Dビットを命令にセッ
トする。次に、ステップ66において、Instruc
tion Cache Set #をインクリメントす
る。従って、ステップ68において、このCacheS
et #を特定のInstruction Cache
Set #にセットすることが可能になる。次に、ス
テップ70において、上述のやり方でSizeフィール
ドをセットし、ステップ64において、キャッシュ・メ
モリの最適化及び制御が実施される。さらに、それに従
って作成された命令が実行される。最後に、所定のサイ
ズを備えた情報が特定のキャッシュ・セットに書き込ま
れる。
【0036】とりわけ、本書に解説の2進フィールドを
有する先取り命令の実施シーケンスについて記載のあ
る、_/_/_に提出された、出願番号0_/_,_
の、Tunable Software Contro
l of Harvard Architecture
Cache Memories Using Pre
fetch Instructionsと題する同時出
願の米国特許出願が、参考までに本書に組み込まれてい
る。
【0037】図5に関する上記説明は、このプログラム
を実行するプラットフォームが、先取りを実施する能力
を含んでおり、マルチ・セット・ハーバード・アーキテ
クチャであるという前提によるものであるが、この方法
及びシステムは、もちろん、クロス・プラットフォーム
である。本書に解説の発明は、フィールドそれ自体、及
び、それを生成し、活用するシステム及び方法にある。
【図面の簡単な説明】
【図1】 先行技術によるシングル・セット・キャッシ
ュを示す図である。
【図2】 先行技術によるマルチ・セット・キャッシュ
を示す図である。
【図3】 先取り命令を受信する変換索引バッファと、
本発明の先取り命令フィールドを含む変換索引バッファ
の出力を示す図である。
【図4】 本発明の先取り命令が実施されるハーバード
・アーキテクチャ・システムを示す図である。
【図5】 本発明の先取り命令を実施するためのステッ
プを示すフローチャートである。
【符号の説明】
20 先取り命令 22 TLB 24 先取りユニット 26 命令キャッシュ 28 データ・キャッシュ 30 主メモリ

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 データまたは命令である記憶情報を保持
    するための主メモリと、データ・キャッシュ及び命令キ
    ャッシュを含むキャッシュ・メモリを備えたコンピュー
    タによって利用される、先取りユニットによって用いら
    れる先取り命令を生成する方法において、 命令/データ・フィールドを含む先取り命令を受け取る
    ステップと、 前記命令/データ・フィールドに、前記記憶情報が命令
    であるか、または、データであるかを示す先取りタイプ
    の値を充填し、これによって、前記情報を前記命令キャ
    ッシュに記憶すべきか、または、前記データ・キャッシ
    ュに記憶すべきかを指示するステップと、を有する方
    法。
  2. 【請求項2】 記憶情報を保持するための主メモリ及び
    キャッシュ・メモリを備えたコンピュータによって利用
    される、先取りユニットによって用いられる先取り命令
    を生成する方法において、 サイズ・フィールドを含む初期先取り命令を受け取るス
    テップと、 前記主メモリから検索すべき情報及び前記キャッシュ・
    メモリに記憶すべき情報の量を示す先取りタイプ値を前
    記サイズ・フィールドに充填するステップと、を有する
    方法。
  3. 【請求項3】 記憶情報を保持するための主メモリと少
    なくとも2つのキャッシュ・セットを含むキャッシュ・
    メモリを備えたコンピュータによって利用される、先取
    りユニットによって用いられる先取り命令を生成する方
    法において、 キャッシュ・セット・フィールドを含む先取り命令を受
    け取るステップと、 前記キャッシュ・セット・フィールドに先取りタイプ値
    を充填して、前記主メモリから検索した情報を前記少な
    くとも2つのキャッシュ・セットのどちらに記憶すべき
    かを指示するステップと、を有する方法。
  4. 【請求項4】 メモリ管理装置、データまたは命令であ
    る記憶情報を保持するための主メモリ、及び、データ・
    キャッシュ及び命令キャッシュを含むキャッシュ・メモ
    リを備えたコンピュータによって利用される、先取り命
    令を生成する方法において、 初期先取り命令を受け取るステップと、 前記メモリ管理装置が前記初期先取り命令を強化し、前
    記記憶情報が命令であるか、または、データであるかを
    指示する、従って、前記情報を前記命令キャッシュに記
    憶すべきか、または、前記データ・キャッシュに記憶す
    べきかを指示する先取りタイプ値が含まれている、命令
    /データ・フィールドを含む出力として、強化先取り命
    令を生成するステップと、を有する方法。
  5. 【請求項5】 メモリ管理装置、記憶情報を保持するた
    めの主メモリ、及び、キャッシュ・メモリを備えたコン
    ピュータによって利用される、先取り命令を提供する方
    法において、 初期先取り命令を受け取るステップと、 前記メモリ管理装置が前記初期先取り命令を強化し、前
    記主メモリから検索すべき情報及び前記キャッシュ・メ
    モリに記憶すべき情報の量を指示する先取りタイプ値が
    含まれているサイズ・フィールドを含む出力として、強
    化先取り命令を生成するステップと、を有する方法。
  6. 【請求項6】 メモリ管理装置、記憶情報を保持するた
    めの主メモリ、及び、少なくとも2つのキャッシュ・セ
    ットを含むキャッシュ・メモリを備えたコンピュータに
    よって利用される、先取り命令を提供する方法におい
    て、 初期先取り命令を受け取るステップと、 前記メモリ管理装置が前記初期先取り命令を強化し、前
    記主メモリから検索した情報を前記少なくとも2つのキ
    ャッシュ・セットのどちらに記憶すべきかを指示する先
    取りタイプ値が含まれているキャッシュ・セット・フィ
    ールドを含む出力として、強化先取り命令を生成するス
    テップと、を有する方法。
  7. 【請求項7】 CPU、データまたは命令である記憶情
    報を保持するための主メモリ、及び、データ・キャッシ
    ュ及び命令キャッシュを含むキャッシュ・メモリから成
    り、前記CPUが、前記主メモリに記憶されている前記
    CPUに必要となる情報の先取りを実施するように構成
    された先取り命令が含まれている命令ストリームを実行
    するように構成されている、強化先取り命令を生成する
    ためのコンピュータ・システムにおいて、 前記初期先取り命令を受け取って、前記主メモリに記憶
    されている前記CPUに必要となる情報が命令である
    か、または、データであるかを指示する、それによって
    前記情報が前記命令キャッシュに記憶すべきか、あるい
    は前記データ・キャッシュに記憶すべきかを指示する先
    取りタイプ値が含まれている命令/データ・フィールド
    を含む強化先取り命令を出力として生成するように構成
    されたメモリ管理装置と、 前記情報が、前記命令/データ・フィールドに含まれて
    いる前記先取りタイプ値に基づいて前記主メモリから検
    索され、前記命令キャッシュまたは前記データ・キャッ
    シュに記憶されるように、前記強化先取り命令を実行す
    るように構成された先取りユニットと、を有するコンピ
    ュータ・システム。
  8. 【請求項8】 CPU、及び、データまたは命令である
    記憶情報を保持するための主メモリを備え、前記CPU
    が、前記主メモリに記憶されている前記CPUに必要と
    なる情報の先取りを実施するように構成された少なくと
    も1つの先取り命令が含まれている命令ストリームを実
    行するように構成されている、コンピュータと連係して
    機能するように構成された先取り強化装置において、 少なくとも1つの前記先取り命令を受信して、命令/デ
    ータ・フィールド、及び、前記主メモリに記憶されてい
    る前記CPUに必要となる情報が命令であるか、また
    は、データであるかを指示する、従って、前記情報を前
    記命令キャッシュに記憶すべきか、または、前記データ
    ・キャッシュに記憶すべきかを指示する先取りタイプ値
    を備えた強化先取り命令を出力として生成するように構
    成されたメモリ管理装置と、 前記情報が、前記命令/データ・フィールドに含まれて
    いる前記先取りタイプ値に基づいて前記主メモリから検
    索され、前記命令キャッシュまたは前記データ・キャッ
    シュに記憶されるように、前記強化先取り命令を実行す
    るように構成された先取りユニットと、を有する先取り
    強化装置。
  9. 【請求項9】 前記データ・キャッシュに、少なくとも
    2つのデータ・キャッシュ・セットが含まれ、前記メモ
    リ管理装置によって生成される前記強化先取り命令に、
    前記主メモリから検索された情報を前記データ・キャッ
    シュ・セットのどちらに記憶すべきかを指示するように
    構成された先取りタイプ値が含まれている、データ・キ
    ャッシュ・セット・フィールドが含まれる請求項8に記
    載の装置。
JP19416696A 1995-07-07 1996-07-05 先取り命令を生成する方法とシステム Expired - Lifetime JP3816586B2 (ja)

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 true JPH09128294A (ja) 1997-05-16
JP3816586B2 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)

* Cited by examiner, † Cited by third party
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
US8055849B2 (en) * 2008-04-04 2011-11-08 International Business Machines Corporation Reducing cache pollution of a software controlled cache
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
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
CN109219805B (zh) * 2017-05-08 2023-11-10 华为技术有限公司 一种多核系统内存访问方法、相关装置、系统及存储介质
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)

* Cited by examiner, † Cited by third party
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
WO1997036234A1 (en) * 1996-03-28 1997-10-02 International Business Machines Corporation Cache multi-block touch mechanism for object oriented computer system
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

Also Published As

Publication number Publication date
EP0752644A2 (en) 1997-01-08
EP0752644A3 (en) 2001-08-22
JP3816586B2 (ja) 2006-08-30
US5796971A (en) 1998-08-18

Similar Documents

Publication Publication Date Title
JP3816586B2 (ja) 先取り命令を生成する方法とシステム
JP3739491B2 (ja) プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御
US8806177B2 (en) Prefetch engine based translation prefetching
US8140768B2 (en) Jump starting prefetch streams across page boundaries
JP3634379B2 (ja) スタックキャッシングのための方法及び装置
US7904661B2 (en) Data stream prefetching in a microprocessor
KR100240914B1 (ko) 데이터 프리페치 방법 및 프로세싱 시스템
US7380066B2 (en) Store stream prefetching in a microprocessor
US5958040A (en) Adaptive stream buffers
US5751994A (en) System and method for enhancing computer operation by prefetching data elements on a common bus without delaying bus access by multiple bus masters
US5265236A (en) Method and apparatus for increasing the speed of memory access in a virtual memory system having fast page mode
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US5524220A (en) Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems
US6282706B1 (en) Cache optimization for programming loops
US11954044B2 (en) Translation lookaside buffer prewarming
KR100234647B1 (ko) 인스트럭션 프리페치 방법 및 데이터 처리 시스템
EP2495662B1 (en) Configurable cache for a microprocessor
CN112416817A (zh) 预取方法、信息处理装置、设备以及存储介质
US7162588B2 (en) Processor prefetch to match memory bus protocol characteristics
KR100985239B1 (ko) 인스트럭션 캐시 관리 방법, 캐시 메모리, 집적 회로 및저장 매체
US20120066456A1 (en) Direct memory access cache prefetching
EP0488566A2 (en) Method and apparatus for fast page mode selection
US8429383B2 (en) Multi-processor computing system having a JAVA stack machine and a RISC-based processor
EP0101718A1 (en) COMPUTER WITH AUTOMATIC TOPOGRAPHY OF THE MEMORY CONTENT IN REGISTERS.
JP2924708B2 (ja) 情報処理装置

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