JPH06202951A - キャッシュ・メモリ・システム - Google Patents
キャッシュ・メモリ・システムInfo
- Publication number
- JPH06202951A JPH06202951A JP5280168A JP28016893A JPH06202951A JP H06202951 A JPH06202951 A JP H06202951A JP 5280168 A JP5280168 A JP 5280168A JP 28016893 A JP28016893 A JP 28016893A JP H06202951 A JPH06202951 A JP H06202951A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache memory
- instruction
- buffer
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 250
- 239000000872 buffer Substances 0.000 claims abstract description 130
- 238000009825 accumulation Methods 0.000 claims description 4
- 239000013256 coordination polymer Substances 0.000 claims 1
- 238000011109 contamination Methods 0.000 abstract 1
- 230000036316 preload Effects 0.000 description 46
- 230000004044 response Effects 0.000 description 14
- 238000013479 data entry Methods 0.000 description 13
- 238000013459 approach Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 235000016936 Dendrocalamus strictus Nutrition 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
-
- 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
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
(57)【要約】
【目的】 予測可能性の高い待ち時間が得られ、使用頻
度の低いデータによるキャッシュ・メモリの汚染を回避
でき、使用頻度の低いデータに対してアクセスが可能な
キャツシュ・メモリ・システムを提供することを目的と
する。 【構成】 第1のロード命令検出時に、データ・ワード
のコピーをコントローラ20によりバッファ15に転送
し、第1の蓄積命令検出時にアドレス情報とデータをバ
ッファ15に蓄積し、第2のロード命令検出時にデータ
・ワードのコピーをバッファ15に配置することなく、
そのデータ・ワードをメイン・メモリ13からコントロ
ーラ20によりCPU12に転送し、第2の蓄積命令検
出時に、データ・ワードのコピーをバッファ15に配置
しないで、第2の蓄積命令に含まれるデータをメイン・
メモリ13に蓄積する。
度の低いデータによるキャッシュ・メモリの汚染を回避
でき、使用頻度の低いデータに対してアクセスが可能な
キャツシュ・メモリ・システムを提供することを目的と
する。 【構成】 第1のロード命令検出時に、データ・ワード
のコピーをコントローラ20によりバッファ15に転送
し、第1の蓄積命令検出時にアドレス情報とデータをバ
ッファ15に蓄積し、第2のロード命令検出時にデータ
・ワードのコピーをバッファ15に配置することなく、
そのデータ・ワードをメイン・メモリ13からコントロ
ーラ20によりCPU12に転送し、第2の蓄積命令検
出時に、データ・ワードのコピーをバッファ15に配置
しないで、第2の蓄積命令に含まれるデータをメイン・
メモリ13に蓄積する。
Description
【0001】
【産業上の利用分野】この発明は、コンピュータ・メモ
リ・システムに関するものであり、特に、改良されたキ
ャッシュ・メモリ・システムに関するものである。
リ・システムに関するものであり、特に、改良されたキ
ャッシュ・メモリ・システムに関するものである。
【0002】
【従来の技術】従来のコンピュータ・システムで用いら
れるメモリ・システムによれば、ロード命令に応答して
中央処理ユニット(以下、CPUという)に対してデー
タを与え、また、蓄積命令に応答してメモリ・システム
にデータを蓄積する。CPUに対する演算当りのコスト
は、メモリのバイト当りのコストに比べて遥かに急速に
減少してきている。これに加えて、演算のタスクがより
複雑になるにつれて、メイン・コンピュータ・メモリの
サイズは劇的に増大した。その結果として、CPUと同
じ速度で動作するメイン・メモリは経済的に実用的では
なくなった。
れるメモリ・システムによれば、ロード命令に応答して
中央処理ユニット(以下、CPUという)に対してデー
タを与え、また、蓄積命令に応答してメモリ・システム
にデータを蓄積する。CPUに対する演算当りのコスト
は、メモリのバイト当りのコストに比べて遥かに急速に
減少してきている。これに加えて、演算のタスクがより
複雑になるにつれて、メイン・コンピュータ・メモリの
サイズは劇的に増大した。その結果として、CPUと同
じ速度で動作するメイン・メモリは経済的に実用的では
なくなった。
【0003】CPUの演算速度で動作するメイン・メモ
リにもたらされる高いコストを回避するために、多くの
システムではキャッシュ・メモリが用いられている。キ
ャッシュ・メモリは、最近に用いられたデータを蓄積す
るために用いられる高速バッファである。キャッシュ・
メモリに対してロード命令が出されると、該キャッシュ
・メモリはその内容をチェックする。該当のデータがキ
ャッシュ・メモリ内に既に存在するときには、該キャッ
シュ・メモリは当該データをCPUに戻す。該当のデー
タがキャッシュ・メモリ内に存在しないときには、該キ
ャッシュ・メモリは当該データをメイン・メモリからロ
ードせねばならない。メイン・メモリはキャッシュ・メ
モリよりも遥かに遅いことから、プログラムの実行にお
いて相当な遅れが結果として生じる。キャッシュ・メモ
リがメイン・メモリからのデータをロードする毎に、キ
ャッシュ・メモリに蓄積されているデータのあるもの
は、新規のデータのための余地を作るために取り除かれ
ねばならない。
リにもたらされる高いコストを回避するために、多くの
システムではキャッシュ・メモリが用いられている。キ
ャッシュ・メモリは、最近に用いられたデータを蓄積す
るために用いられる高速バッファである。キャッシュ・
メモリに対してロード命令が出されると、該キャッシュ
・メモリはその内容をチェックする。該当のデータがキ
ャッシュ・メモリ内に既に存在するときには、該キャッ
シュ・メモリは当該データをCPUに戻す。該当のデー
タがキャッシュ・メモリ内に存在しないときには、該キ
ャッシュ・メモリは当該データをメイン・メモリからロ
ードせねばならない。メイン・メモリはキャッシュ・メ
モリよりも遥かに遅いことから、プログラムの実行にお
いて相当な遅れが結果として生じる。キャッシュ・メモ
リがメイン・メモリからのデータをロードする毎に、キ
ャッシュ・メモリに蓄積されているデータのあるもの
は、新規のデータのための余地を作るために取り除かれ
ねばならない。
【0004】同様にして、蓄積命令もキャッシュ・メモ
リに対して出される。蓄積命令において特定されたアド
レスに対するデータが既にキャッシュ・メモリ内に存在
するときには、該蓄積命令において特定された値を反映
するようにキャッシュ・メモリはデータを更新する。デ
ータが存在しないときには、キャッシュ・メモリは該蓄
積命令において特定されたアドレスに対するエントリを
作成し、そして、データが当該アドレスに蓄積されるべ
きことを指示する。「ライト・スルー(write−throug
h)」キャッシュ・メモリの場合には、データも直ちにメ
イン・メモリに伝送されて、該メイン・メモリが常にデ
ータの正しいコピーを有するようにされる。ノン・ライ
ト・スルー・キャッシュ・メモリ・システムにおいて
は、キャッシュ・メモリ内のデータ・エントリがマーク
されて、メイン・メモリ内の問題のアドレスにおいて蓄
積されている値とは異なることが指示される。マークさ
れたデータ・エントリが後続の動作の間に置換されると
きには、該エントリは置換されるのに先だってメイン・
メモリに書き込まれる。
リに対して出される。蓄積命令において特定されたアド
レスに対するデータが既にキャッシュ・メモリ内に存在
するときには、該蓄積命令において特定された値を反映
するようにキャッシュ・メモリはデータを更新する。デ
ータが存在しないときには、キャッシュ・メモリは該蓄
積命令において特定されたアドレスに対するエントリを
作成し、そして、データが当該アドレスに蓄積されるべ
きことを指示する。「ライト・スルー(write−throug
h)」キャッシュ・メモリの場合には、データも直ちにメ
イン・メモリに伝送されて、該メイン・メモリが常にデ
ータの正しいコピーを有するようにされる。ノン・ライ
ト・スルー・キャッシュ・メモリ・システムにおいて
は、キャッシュ・メモリ内のデータ・エントリがマーク
されて、メイン・メモリ内の問題のアドレスにおいて蓄
積されている値とは異なることが指示される。マークさ
れたデータ・エントリが後続の動作の間に置換されると
きには、該エントリは置換されるのに先だってメイン・
メモリに書き込まれる。
【0005】効果的であるためには、キャッシュ・メモ
リ内に既に存在するデータによっては満足されないロー
ド命令に応答して、メイン・メモリから入力する新規な
データによりキャッシュ・メモリから置換されないのに
先だって、キャッシュ・メモリ内のデータは平均的に多
くの回数だけ使用されねばならない。データがメイン・
メモリから得られる度に、CPUは待機せねばならな
い。キャッシュ・メモリ内にある間にデータが何回か使
用されたとすると、この遅れは幾つかのロード命令にわ
たって償却される。このために、ロード命令毎の平均的
な遅れは相当に減少される。データが1回しか用いられ
ないときには、このような減少が生じることはない。
リ内に既に存在するデータによっては満足されないロー
ド命令に応答して、メイン・メモリから入力する新規な
データによりキャッシュ・メモリから置換されないのに
先だって、キャッシュ・メモリ内のデータは平均的に多
くの回数だけ使用されねばならない。データがメイン・
メモリから得られる度に、CPUは待機せねばならな
い。キャッシュ・メモリ内にある間にデータが何回か使
用されたとすると、この遅れは幾つかのロード命令にわ
たって償却される。このために、ロード命令毎の平均的
な遅れは相当に減少される。データが1回しか用いられ
ないときには、このような減少が生じることはない。
【0006】大規模で特定の適用においては、キャッシ
ュ・メモリの効果は低いものであるが、その理由は、こ
れらの適用においては、遥かに大きいデータのセットに
わたって、より多くの一様なアクセスがあることにあ
る。例えば、1個またはそれよりも多くの大規模なデー
タのアレイにおける全ての要素であって、その各々がキ
ャッシュ・メモリのサイズを遥かに越えているものを、
逐次に読み取ることは通常のことである。このような場
合においては、より高速のキャッシュ・メモリに導入さ
れたデータは1回アクセスされるだけである。先に言及
されたように、システムの実行能力の増強が達成される
のは、キャッシュ・メモリ内に配置されたデータが何回
も用いられるときだけである。
ュ・メモリの効果は低いものであるが、その理由は、こ
れらの適用においては、遥かに大きいデータのセットに
わたって、より多くの一様なアクセスがあることにあ
る。例えば、1個またはそれよりも多くの大規模なデー
タのアレイにおける全ての要素であって、その各々がキ
ャッシュ・メモリのサイズを遥かに越えているものを、
逐次に読み取ることは通常のことである。このような場
合においては、より高速のキャッシュ・メモリに導入さ
れたデータは1回アクセスされるだけである。先に言及
されたように、システムの実行能力の増強が達成される
のは、キャッシュ・メモリ内に配置されたデータが何回
も用いられるときだけである。
【0007】実際には、1回しか用いられないデータを
伝送するためにキャッシュ・メモリを用いることは、シ
ステムの実行能力を低下させる。先に言及されたよう
に、新規のデータ・ワードがメイン・メモリからキャッ
シュ・メモリに移動される度に、該キャッシュ・メモリ
に蓄積されている一つのデータ・ワードは排除されねば
ならない。排除されたデータ・ワードのあるものが再び
用いられるようなときには、1回だけ用いられるべきデ
ータ・ワードに対するロード命令に応答して、それらの
ワードは排除されなかったことになる。該排除されたデ
ータ・ワードが再び用いられるときには、該データ・ワ
ードがキャッシュ・メモリに読み取られる間はCPUが
遅延される。このため、キャッシュ・メモリ内でのそれ
らの存在時間の間に1回しか使用されないデータ・ワー
ドを通過させることは、キャッシュ・メモリの実行能力
を低下させることになる。この低下はキャッシュ・メモ
リのサイズを増大することで減少させることができるけ
れども、この解決策ではキャッシュ・メモリのコストを
著しく増大することになる。
伝送するためにキャッシュ・メモリを用いることは、シ
ステムの実行能力を低下させる。先に言及されたよう
に、新規のデータ・ワードがメイン・メモリからキャッ
シュ・メモリに移動される度に、該キャッシュ・メモリ
に蓄積されている一つのデータ・ワードは排除されねば
ならない。排除されたデータ・ワードのあるものが再び
用いられるようなときには、1回だけ用いられるべきデ
ータ・ワードに対するロード命令に応答して、それらの
ワードは排除されなかったことになる。該排除されたデ
ータ・ワードが再び用いられるときには、該データ・ワ
ードがキャッシュ・メモリに読み取られる間はCPUが
遅延される。このため、キャッシュ・メモリ内でのそれ
らの存在時間の間に1回しか使用されないデータ・ワー
ドを通過させることは、キャッシュ・メモリの実行能力
を低下させることになる。この低下はキャッシュ・メモ
リのサイズを増大することで減少させることができるけ
れども、この解決策ではキャッシュ・メモリのコストを
著しく増大することになる。
【0008】この理由のために、頻繁に使用されるデー
タの部分に対してのみキャッシュ・メモリを用いるため
に、また、該キャッシュ・メモリとは無関係に大規模な
アレイをアクセスするために、ある所定のマシンが設計
された。これはベクトル・マシンでは共通のものであ
り、ここでのベクトル・マシンは、キャッシュ・メモリ
を通過することなく、高度にインタリーブされたメモリ
からアクセスされる。このアプローチによれば、1回し
か用いられないデータによるキャッシュ・メモリの汚染
は防止される。ところが不都合なことに、このアプロー
チは、何回か用いられるデータの問題に対する解決策を
付与するものではない。多数回の要求がなされる可能性
のあるデータがキャッシュ・メモリから追放されること
がなければ、このようなデータはキャッシュ・メモリの
アクセス・スキーム(scheme)から利益を得るも
のである。
タの部分に対してのみキャッシュ・メモリを用いるため
に、また、該キャッシュ・メモリとは無関係に大規模な
アレイをアクセスするために、ある所定のマシンが設計
された。これはベクトル・マシンでは共通のものであ
り、ここでのベクトル・マシンは、キャッシュ・メモリ
を通過することなく、高度にインタリーブされたメモリ
からアクセスされる。このアプローチによれば、1回し
か用いられないデータによるキャッシュ・メモリの汚染
は防止される。ところが不都合なことに、このアプロー
チは、何回か用いられるデータの問題に対する解決策を
付与するものではない。多数回の要求がなされる可能性
のあるデータがキャッシュ・メモリから追放されること
がなければ、このようなデータはキャッシュ・メモリの
アクセス・スキーム(scheme)から利益を得るも
のである。
【0009】先に言及されたように、キャッシュ・メモ
リの効率性は当該キャッシュ・メモリのサイズとともに
向上する。しかしながら、最高速の応答(即ち、最短の
待機)をもたらすためには、キャッシュ・メモリはプロ
セッサ・チップ上に存在せねばならない。この制限によ
ってキャッシュ・メモリの最大限のサイズが規定され
る。ある種の先行技術のシステムにおいては、この目標
の食い違いは多重レベルの階層性キャッシュ・メモリ・
システムを用いることによって解決される。ある小形の
レベル1キャッシュ・メモリはプロセッサ・チップ上に
直接的に配置される。このキャッシュ・メモリは、プロ
セッサ・チップの外部に配置されている大形のレベル2
キャッシュ・メモリによって補充される。
リの効率性は当該キャッシュ・メモリのサイズとともに
向上する。しかしながら、最高速の応答(即ち、最短の
待機)をもたらすためには、キャッシュ・メモリはプロ
セッサ・チップ上に存在せねばならない。この制限によ
ってキャッシュ・メモリの最大限のサイズが規定され
る。ある種の先行技術のシステムにおいては、この目標
の食い違いは多重レベルの階層性キャッシュ・メモリ・
システムを用いることによって解決される。ある小形の
レベル1キャッシュ・メモリはプロセッサ・チップ上に
直接的に配置される。このキャッシュ・メモリは、プロ
セッサ・チップの外部に配置されている大形のレベル2
キャッシュ・メモリによって補充される。
【0010】先行技術による多重レベルの階層性キャッ
シュ・メモリを介してデータがアクセスされると、該デ
ータはレベル1キャッシュ・メモリを通して流れる。メ
モリに対する読み取りアクセスのためには、レベル1キ
ャッシュ・メモリに含まれているデータによって要求が
満足されるときには、該データはレベル1キャッシュ・
メモリから読み取られる。該当のデータがレベル1キャ
ッシュ・メモリ内に存在しないときには、それはレベル
2キャッシュ・メモリからサーチされる。当該データが
レベル2キャッシュ・メモリにおいて発見できたときに
は、それは始めにレベル1キャッシュ・メモリに移動さ
れ、これに次いで該レベル1キャッシュ・メモリから読
み取られる。当該データがレベル2キャッシュ・メモリ
においても存在しなかったときには、それは初めにメイ
ン・メモリからレベル2キャッシュ・メモリに読み込ま
れ、次にレベル2キャッシュ・メモリからレベル1キャ
ッシュ・メモリに読み込まれ、そしてこれに次いでプロ
セッサによって読み取られる。
シュ・メモリを介してデータがアクセスされると、該デ
ータはレベル1キャッシュ・メモリを通して流れる。メ
モリに対する読み取りアクセスのためには、レベル1キ
ャッシュ・メモリに含まれているデータによって要求が
満足されるときには、該データはレベル1キャッシュ・
メモリから読み取られる。該当のデータがレベル1キャ
ッシュ・メモリ内に存在しないときには、それはレベル
2キャッシュ・メモリからサーチされる。当該データが
レベル2キャッシュ・メモリにおいて発見できたときに
は、それは始めにレベル1キャッシュ・メモリに移動さ
れ、これに次いで該レベル1キャッシュ・メモリから読
み取られる。当該データがレベル2キャッシュ・メモリ
においても存在しなかったときには、それは初めにメイ
ン・メモリからレベル2キャッシュ・メモリに読み込ま
れ、次にレベル2キャッシュ・メモリからレベル1キャ
ッシュ・メモリに読み込まれ、そしてこれに次いでプロ
セッサによって読み取られる。
【0011】メモリに対する書き込みアクセスのために
は、新規データが書き込まれるべき位置に現に存在する
データがレベル1キャッシュ・メモリに含まれていると
きには、該データはレベル1キャッシュ・メモリにおい
て更新される。古いデータがレベル1キャッシュ・メモ
リに現に含まれていないときには、レベル1キャッシュ
・メモリにおいて余地(room)が作られて、古いデ
ータがレベル2キャッシュ・メモリにおいてサーチされ
る。古いデータがレベル2キャッシュ・メモリにおいて
発見されたときには、それはレベル1キャッシュ・メモ
リに読み取られ、そして、新規に書き込まれるデータを
もって更新される。古いデータもレベル2キャッシュ・
メモリに含まれていないときには、レベル2キャッシュ
・メモリにおいてその余地も作られて、該古いデータが
初めにレベル2キャッシュ・メモリに読み込まれ、次に
レベル1キャッシュ・メモリに読み込まれてから、レベ
ル1キャッシュ・メモリにおいて更新される。
は、新規データが書き込まれるべき位置に現に存在する
データがレベル1キャッシュ・メモリに含まれていると
きには、該データはレベル1キャッシュ・メモリにおい
て更新される。古いデータがレベル1キャッシュ・メモ
リに現に含まれていないときには、レベル1キャッシュ
・メモリにおいて余地(room)が作られて、古いデ
ータがレベル2キャッシュ・メモリにおいてサーチされ
る。古いデータがレベル2キャッシュ・メモリにおいて
発見されたときには、それはレベル1キャッシュ・メモ
リに読み取られ、そして、新規に書き込まれるデータを
もって更新される。古いデータもレベル2キャッシュ・
メモリに含まれていないときには、レベル2キャッシュ
・メモリにおいてその余地も作られて、該古いデータが
初めにレベル2キャッシュ・メモリに読み込まれ、次に
レベル1キャッシュ・メモリに読み込まれてから、レベ
ル1キャッシュ・メモリにおいて更新される。
【0012】
【発明が解決しようとする課題】データがレベル1キャ
ッシュ・メモリを通して流れることから、これらのスキ
ームは従来のキャッシュ・メモリと同じような汚染の問
題点をこうむることになる。即ち、数回しか用いられな
いデータが、より多い回数使用されるデータを追放する
ことになる。追放されたデータが再び要求されたときに
は、該データがより低位レベルのキャッシュ・メモリま
たはメイン・メモリから検索されるまで、システムは停
止されねばならない。
ッシュ・メモリを通して流れることから、これらのスキ
ームは従来のキャッシュ・メモリと同じような汚染の問
題点をこうむることになる。即ち、数回しか用いられな
いデータが、より多い回数使用されるデータを追放する
ことになる。追放されたデータが再び要求されたときに
は、該データがより低位レベルのキャッシュ・メモリま
たはメイン・メモリから検索されるまで、システムは停
止されねばならない。
【0013】広い意味では、この発明の目的は改良され
たキャッシュ・メモリ・システムを提供することにあ
る。
たキャッシュ・メモリ・システムを提供することにあ
る。
【0014】この発明の別の目的は、その追放に先だっ
て多くの回数にわたり使用されることがないデータをも
ってキャッシュ・メモリの汚染に関する問題を回避する
ようなキャッシュ・メモリ・システムを提供することに
ある。
て多くの回数にわたり使用されることがないデータをも
ってキャッシュ・メモリの汚染に関する問題を回避する
ようなキャッシュ・メモリ・システムを提供することに
ある。
【0015】この発明の更に別の目的は、その追放に先
だって数回しか使用されないデータに対する改良された
アクセスがなされるキャッシュ・メモリ・システムを提
供することにある。
だって数回しか使用されないデータに対する改良された
アクセスがなされるキャッシュ・メモリ・システムを提
供することにある。
【0016】この発明のこれらの目的およびその他の目
的は、以下の発明の詳細な説明および添付の図面から、
当業者にとっては明かになろう。
的は、以下の発明の詳細な説明および添付の図面から、
当業者にとっては明かになろう。
【0017】
【課題を解決するための手段】この発明は、CPUとメ
イン・メモリとの間でバッファリングされたメモリのア
クセスをするための多重レベルのキャッシュ・メモリ・
システムから構成される。この発明はメイン・メモリ内
に正常に蓄積されているデータ・ワードのコピーを蓄積
するための第1のバッファを含む。このバッファは各々
の蓄積されたコピーに関連するメイン・メモリ内のアド
レスを特定する情報を蓄積するためのレジスタファイル
を含む。この発明はCPUからの第1と第2の蓄積命令
および第1と第2のロード命令を受け入れ、また、第1
と第2のロード命令に応答してCPUにデータを付与す
るためのコントローラを含む。各蓄積命令およびロード
命令はメイン・メモリ内のアドレスを特定する情報を含
み、該コントローラは第1のバッファおよびメイン・メ
モリに対して動作的に接続されている。制御手段は、ま
た第1のロード命令において特定されるデータ・ワード
をCPUに対して伝送するため、および、該データ・ワ
ードのコピーを第1のバッファに対して転送させるため
の第1のロード手段と第1の蓄積命令に応答して、第1
の蓄積命令に含まれているアドレス情報とともに、該蓄
積命令に含まれているデータを第1のバッファに蓄積さ
せるための第1の蓄積手段とを含む。これに加えて、コ
ントローラは第2のロード命令に応答して、そのアドレ
スが第2のロード命令において特定されるデータ・ワー
ドを、データ・ワードのコピーを第1のバッファ手段に
配置させることなく、メイン・メモリからCPUに対し
て伝送するための第2のロード手段と、第2の蓄積命令
に応答して、データ・ワードのコピーを第1のバッファ
手段に配置させることなく、蓄積命令に含まれているデ
ータをメイン・メモリに蓄積させるための第2の蓄積手
段とを含む。
イン・メモリとの間でバッファリングされたメモリのア
クセスをするための多重レベルのキャッシュ・メモリ・
システムから構成される。この発明はメイン・メモリ内
に正常に蓄積されているデータ・ワードのコピーを蓄積
するための第1のバッファを含む。このバッファは各々
の蓄積されたコピーに関連するメイン・メモリ内のアド
レスを特定する情報を蓄積するためのレジスタファイル
を含む。この発明はCPUからの第1と第2の蓄積命令
および第1と第2のロード命令を受け入れ、また、第1
と第2のロード命令に応答してCPUにデータを付与す
るためのコントローラを含む。各蓄積命令およびロード
命令はメイン・メモリ内のアドレスを特定する情報を含
み、該コントローラは第1のバッファおよびメイン・メ
モリに対して動作的に接続されている。制御手段は、ま
た第1のロード命令において特定されるデータ・ワード
をCPUに対して伝送するため、および、該データ・ワ
ードのコピーを第1のバッファに対して転送させるため
の第1のロード手段と第1の蓄積命令に応答して、第1
の蓄積命令に含まれているアドレス情報とともに、該蓄
積命令に含まれているデータを第1のバッファに蓄積さ
せるための第1の蓄積手段とを含む。これに加えて、コ
ントローラは第2のロード命令に応答して、そのアドレ
スが第2のロード命令において特定されるデータ・ワー
ドを、データ・ワードのコピーを第1のバッファ手段に
配置させることなく、メイン・メモリからCPUに対し
て伝送するための第2のロード手段と、第2の蓄積命令
に応答して、データ・ワードのコピーを第1のバッファ
手段に配置させることなく、蓄積命令に含まれているデ
ータをメイン・メモリに蓄積させるための第2の蓄積手
段とを含む。
【0018】この発明の別の実施例は、種々のバッファ
の内容をコンパイラおよび/またはプログラマが制御す
ることが許容される付加的な命令を実行する。
の内容をコンパイラおよび/またはプログラマが制御す
ることが許容される付加的な命令を実行する。
【0019】
【実施例】この発明は、データがアクセスされ、蓄積さ
れるレベルの制御は、ソフトウエアによって制御される
「非階層」2レベルキャッシュ・メモリ・システムとし
て見られる。この発明によるキャッシュ・メモリ・シス
テムのブロック図が図1に10で示されている。キャッ
シュ・メモリ・システム10は、CPU12とメイン・
メモリ13との間でメモリ・アクセスするように介在さ
れる。キャッシュ・メモリ・システム10はCPU12
およびバッファ14からのロード命令および蓄積命令が
解釈される制御手段としてのコントローラ20を含む。
バッファ14は好適には、CPU12と同じチップ上に
配置される小形で高速のレベル1のバッファ15を含
む。このバッファ14は、やや遅いが相当に大形のレベ
ル2のバッファ16も含む。これらのバッファの各々は
複数のデータ・ワードと、各データ・ワードに対応する
メイン・メモリ12のアドレスおよび問題のデータ・ワ
ードが最後にアクセスされてからの時間長を特定する情
報とを蓄積するためのスペースを含む。一つの動作モー
ドにおいては、バッファ15および16は、先行技術の
階層性キャッシュ・メモリ・システムに関して上述され
たと同様な態様で動作する。
れるレベルの制御は、ソフトウエアによって制御される
「非階層」2レベルキャッシュ・メモリ・システムとし
て見られる。この発明によるキャッシュ・メモリ・シス
テムのブロック図が図1に10で示されている。キャッ
シュ・メモリ・システム10は、CPU12とメイン・
メモリ13との間でメモリ・アクセスするように介在さ
れる。キャッシュ・メモリ・システム10はCPU12
およびバッファ14からのロード命令および蓄積命令が
解釈される制御手段としてのコントローラ20を含む。
バッファ14は好適には、CPU12と同じチップ上に
配置される小形で高速のレベル1のバッファ15を含
む。このバッファ14は、やや遅いが相当に大形のレベ
ル2のバッファ16も含む。これらのバッファの各々は
複数のデータ・ワードと、各データ・ワードに対応する
メイン・メモリ12のアドレスおよび問題のデータ・ワ
ードが最後にアクセスされてからの時間長を特定する情
報とを蓄積するためのスペースを含む。一つの動作モー
ドにおいては、バッファ15および16は、先行技術の
階層性キャッシュ・メモリ・システムに関して上述され
たと同様な態様で動作する。
【0020】一般的には、最も頻繁に用いられるデータ
は好適にはバッファ15に蓄積されており、これによっ
て、最大の便宜性があるキャッシュ・メモリ・アクセス
をもってCPU12に付与するようにされる。少ない回
数だけ使用される傾向のあるデータは好適にはバッファ
16に蓄積される。より詳細に後述されるように、これ
はこのデータの流れがバッファ15の効率的な動作の邪
魔になることを防止しながら、このデータに対するコン
ピュータ・アクセスの実効的な待機時間を減少させるた
めの手段を提供する。1回しか用いられない傾向のある
データはメイン・メモリ13から直接的にアクセスされ
る。
は好適にはバッファ15に蓄積されており、これによっ
て、最大の便宜性があるキャッシュ・メモリ・アクセス
をもってCPU12に付与するようにされる。少ない回
数だけ使用される傾向のあるデータは好適にはバッファ
16に蓄積される。より詳細に後述されるように、これ
はこのデータの流れがバッファ15の効率的な動作の邪
魔になることを防止しながら、このデータに対するコン
ピュータ・アクセスの実効的な待機時間を減少させるた
めの手段を提供する。1回しか用いられない傾向のある
データはメイン・メモリ13から直接的にアクセスされ
る。
【0021】キャッシュ・メモリ・システム10は、3
個の異なるロード/蓄積命令の対を介してデータをアク
セスできるという点で、従来技術のデバイスとは異なっ
ている。異なる対の命令により、CPU12とメイン・
メモリ13との間で転送されるデータの予測される再使
用の見地から、システムの実効を最適化することが許容
される。命令の各対は、異なるレベルの再使用のために
用いられる。命令の対の選択は、プログラマおよび/ま
たはコンパイラによってなされる。プログラマはデータ
再使用の可能性を知っていることから、該プログラマは
使用されるメモリ・アクセスのタイプを指示することが
できる。また、この発明はオペレーティング・システム
と関連させて用いることもできるが、このオペレーティ
ング・システムは、テスト・データとともにコードをラ
ンさせて、命令およびデータが使用される順序を観察す
ることにより、該コードを最適化するものである。
個の異なるロード/蓄積命令の対を介してデータをアク
セスできるという点で、従来技術のデバイスとは異なっ
ている。異なる対の命令により、CPU12とメイン・
メモリ13との間で転送されるデータの予測される再使
用の見地から、システムの実効を最適化することが許容
される。命令の各対は、異なるレベルの再使用のために
用いられる。命令の対の選択は、プログラマおよび/ま
たはコンパイラによってなされる。プログラマはデータ
再使用の可能性を知っていることから、該プログラマは
使用されるメモリ・アクセスのタイプを指示することが
できる。また、この発明はオペレーティング・システム
と関連させて用いることもできるが、このオペレーティ
ング・システムは、テスト・データとともにコードをラ
ンさせて、命令およびデータが使用される順序を観察す
ることにより、該コードを最適化するものである。
【0022】先行技術の階層性2レベルのキャッシュ・
メモリ・システムに関して上述されたように、ロード命
令および蓄積命令の第1の対によってデータのアクセス
がなされる。第1の種類のロード命令がコントローラ2
0によって検出されたときには、バッファ15の内容が
コントローラ20により調べられて、ロード命令で特定
されたデータがバッファ15内に現に蓄積されているか
どうかが決定される。データがバッファ15内にあると
きには、該データはバッファ15からCPU12に渡さ
れる。該当のデータがバッファ15内に存在しないとき
には、バッファ16の内容がコントローラ20により調
べられて、その中にデータが蓄積されているかどうかが
決定される。データがバッファ16において発見された
ときには、当該データは初めにバッファ15に対してコ
ピーされ、これに次いでバッファ15からCPU12に
渡される。データがバッファ16において発見されなか
ったときには、コントローラ20により、メイン・メモ
リ13内の問題のアドレスに現に存在するデータが、バ
ッファ15および16の双方に配置されるべくコピーさ
れ、これに次いでバッファ15からCPU12へと転送
される。
メモリ・システムに関して上述されたように、ロード命
令および蓄積命令の第1の対によってデータのアクセス
がなされる。第1の種類のロード命令がコントローラ2
0によって検出されたときには、バッファ15の内容が
コントローラ20により調べられて、ロード命令で特定
されたデータがバッファ15内に現に蓄積されているか
どうかが決定される。データがバッファ15内にあると
きには、該データはバッファ15からCPU12に渡さ
れる。該当のデータがバッファ15内に存在しないとき
には、バッファ16の内容がコントローラ20により調
べられて、その中にデータが蓄積されているかどうかが
決定される。データがバッファ16において発見された
ときには、当該データは初めにバッファ15に対してコ
ピーされ、これに次いでバッファ15からCPU12に
渡される。データがバッファ16において発見されなか
ったときには、コントローラ20により、メイン・メモ
リ13内の問題のアドレスに現に存在するデータが、バ
ッファ15および16の双方に配置されるべくコピーさ
れ、これに次いでバッファ15からCPU12へと転送
される。
【0023】第1の種類の蓄積命令がコントローラ20
によって受け取られたときには、該蓄積命令で特定され
たデータがバッファ15に対してコピーされる。該デー
タに対する余地を作るために、バッファ15内の最も古
いデータが排除される。ここで、該データが参照されて
から生じた命令サイクルの数という見地においてエイジ
(age)の計測がなされる。バッファ15が「ライト
・スルー」キャッシュ・メモリとして動作していないと
きには、該排除されたデータのコピーがバッファ16に
作成される。蓄積命令で受け入れたデータに対する余地
を作るためにバッファ16から排除されねばならないい
ずれのデータでも、必要であれば、メイン・メモリ13
に対して同様にコピーされる。バッファ15が「ライト
・スルー」キャッシュ・メモリとして動作しているとき
には、当該データがアクセスされた最後のときにコピー
が既に作られていることから、このステップは必要とさ
れない。レベル1のバッファ15から追放されるのに先
だって多数回の使用が予測されるデータを含んでいるメ
モリ・アクセスのためには、この命令の対を用いること
が好適である。
によって受け取られたときには、該蓄積命令で特定され
たデータがバッファ15に対してコピーされる。該デー
タに対する余地を作るために、バッファ15内の最も古
いデータが排除される。ここで、該データが参照されて
から生じた命令サイクルの数という見地においてエイジ
(age)の計測がなされる。バッファ15が「ライト
・スルー」キャッシュ・メモリとして動作していないと
きには、該排除されたデータのコピーがバッファ16に
作成される。蓄積命令で受け入れたデータに対する余地
を作るためにバッファ16から排除されねばならないい
ずれのデータでも、必要であれば、メイン・メモリ13
に対して同様にコピーされる。バッファ15が「ライト
・スルー」キャッシュ・メモリとして動作しているとき
には、当該データがアクセスされた最後のときにコピー
が既に作られていることから、このステップは必要とさ
れない。レベル1のバッファ15から追放されるのに先
だって多数回の使用が予測されるデータを含んでいるメ
モリ・アクセスのためには、この命令の対を用いること
が好適である。
【0024】ロード命令および蓄積命令の第2の対は、
レベル2のキャッシュ・メモリとしてバッファ16より
も高いキャッシュ・メモリ階層にデータを移動させるこ
とはない。第2の種類のロード命令がコントローラ20
によって検出されたときには、要求されたデータ・ワー
ドのコピーがバッファ15内にあるかどうかを決定する
ために、バッファ15の内容が初めに調べられる。バッ
ファ15内のデータ・ワードのコピーがコントローラ2
0によって発見されたときには、該データ・ワードがバ
ッファ15からCPU12に渡される。データ・ワード
のコピーがバッファ15において発見されなかったとき
には、バッファ16の内容がコントローラ20によって
調べられる。データ・ワードがバッファ16において発
見されたときには、コントローラ20によって、該デー
タをバッファ16からCPU12に渡すようにされる。
データ・ワードがバッファ16において発見されなかっ
たときには、コントローラ20により、該データ・ワー
ドのコピーがメイン・メモリ13からバッファ16に転
送される。これに次いで、該データ・ワードがバッファ
16からCPU12に渡される。
レベル2のキャッシュ・メモリとしてバッファ16より
も高いキャッシュ・メモリ階層にデータを移動させるこ
とはない。第2の種類のロード命令がコントローラ20
によって検出されたときには、要求されたデータ・ワー
ドのコピーがバッファ15内にあるかどうかを決定する
ために、バッファ15の内容が初めに調べられる。バッ
ファ15内のデータ・ワードのコピーがコントローラ2
0によって発見されたときには、該データ・ワードがバ
ッファ15からCPU12に渡される。データ・ワード
のコピーがバッファ15において発見されなかったとき
には、バッファ16の内容がコントローラ20によって
調べられる。データ・ワードがバッファ16において発
見されたときには、コントローラ20によって、該デー
タをバッファ16からCPU12に渡すようにされる。
データ・ワードがバッファ16において発見されなかっ
たときには、コントローラ20により、該データ・ワー
ドのコピーがメイン・メモリ13からバッファ16に転
送される。これに次いで、該データ・ワードがバッファ
16からCPU12に渡される。
【0025】第2の種類の蓄積命令がコントローラ20
によって検出されたときに、問題のアドレスに対するデ
ータがバッファ15内に既に存在していれば、当該命令
の中に含まれているデータ・ワードがバッファ15に対
してコピーされる。バッファ15が「ライト・スルー」
キャッシュ・メモリであるときには、該データのコピー
もバッファ16に対してコピーされる。該当のアドレス
に対するデータがバッファ15に存在しないときには、
データ・ワードがバッファ16に対してコピーされる。
該データに対する余地を作るために、バッファ16内の
最も古いデータを排除することができる。バッファ16
が「ライト・スルー」キャッシュ・メモリとして動作し
ていないときには、該排除されたデータのコピーがメイ
ン・メモリ13内に作成される。バッファ16が「ライ
ト・スルー」キャッシュ・メモリとして動作していると
きには、当該データがアクセスされた最後のときにコピ
ーが既に作られていることから、このステップは必要と
されない。
によって検出されたときに、問題のアドレスに対するデ
ータがバッファ15内に既に存在していれば、当該命令
の中に含まれているデータ・ワードがバッファ15に対
してコピーされる。バッファ15が「ライト・スルー」
キャッシュ・メモリであるときには、該データのコピー
もバッファ16に対してコピーされる。該当のアドレス
に対するデータがバッファ15に存在しないときには、
データ・ワードがバッファ16に対してコピーされる。
該データに対する余地を作るために、バッファ16内の
最も古いデータを排除することができる。バッファ16
が「ライト・スルー」キャッシュ・メモリとして動作し
ていないときには、該排除されたデータのコピーがメイ
ン・メモリ13内に作成される。バッファ16が「ライ
ト・スルー」キャッシュ・メモリとして動作していると
きには、当該データがアクセスされた最後のときにコピ
ーが既に作られていることから、このステップは必要と
されない。
【0026】バッファ16から追放されるのに先だって
少数回の再使用がありそうなデータを含んでいるメモリ
・アクセスのためには、この第2の命令の対を用いるこ
とが好適である。問題のデータを1回以上アクセスする
ためにバッファ16内の存在時間が十分に長いとすれ
ば、メモリ・アクセスのための効果的な待ち時間が減少
することになる。このデータはバッファ15には転送さ
れないことから、その使用の頻度が遥かに低そうなデー
タによってバッファ15内のデータが置換されることに
関連する問題は克服される。バッファ16内の存在時間
はバッファ16のサイズに関連している。しかしなが
ら、重要な改良をもたらすためには、バッファ16はメ
イン・メモリ13よりも相当に迅速なことだけが必要で
あることから、バッファ16は、バッファ15よりも遥
かに大形にすることが可能であり、それでもなお経済的
に現実性のあるシステムが提供される。
少数回の再使用がありそうなデータを含んでいるメモリ
・アクセスのためには、この第2の命令の対を用いるこ
とが好適である。問題のデータを1回以上アクセスする
ためにバッファ16内の存在時間が十分に長いとすれ
ば、メモリ・アクセスのための効果的な待ち時間が減少
することになる。このデータはバッファ15には転送さ
れないことから、その使用の頻度が遥かに低そうなデー
タによってバッファ15内のデータが置換されることに
関連する問題は克服される。バッファ16内の存在時間
はバッファ16のサイズに関連している。しかしなが
ら、重要な改良をもたらすためには、バッファ16はメ
イン・メモリ13よりも相当に迅速なことだけが必要で
あることから、バッファ16は、バッファ15よりも遥
かに大形にすることが可能であり、それでもなお経済的
に現実性のあるシステムが提供される。
【0027】第3の対の命令は、上記メイン・メモリ1
3よりも高い階層にデータを移動させることはない。第
3の種類のロード命令がコントローラ20によって検出
されたときには、該ロード命令で特定されるデータのた
めに、バッファ15および16が初めに調べられる。該
当のデータがこれらのバッファの一つで発見されたとき
には、データを含んでいる最速の応答時間のバッファか
らのデータがCPU12に転送される。該当のデータが
いずれのバッファにも存在しないときには、コントロー
ラ20により、メイン・メモリ13からデータを転送す
るようにされる。
3よりも高い階層にデータを移動させることはない。第
3の種類のロード命令がコントローラ20によって検出
されたときには、該ロード命令で特定されるデータのた
めに、バッファ15および16が初めに調べられる。該
当のデータがこれらのバッファの一つで発見されたとき
には、データを含んでいる最速の応答時間のバッファか
らのデータがCPU12に転送される。該当のデータが
いずれのバッファにも存在しないときには、コントロー
ラ20により、メイン・メモリ13からデータを転送す
るようにされる。
【0028】第3の種類の蓄積命令がコントローラ20
によって検出されたときには、該コントローラ20によ
りバッファ15および16が初めにチェックされて、該
蓄積命令におけるアドレスに対するデータがいずれかの
バッファに現に存在しているかどうかが決定される。該
当のアドレスに対するデータがいずれかのバッファにお
いて発見されたときには、問題のアドレスに対するデー
タ・エントリが存在する最速の応答時間のバッファ内の
データの記録が更新される。問題のバッファが「ライト
・スルー」キャッシュ・メモリであるときには、キャッ
シュ・メモリ階層における問題のバッファの下位の、よ
り遅いバッファの更新のために該データのコピーも使用
される。問題のデータ・ワードに対するエントリがいず
れのバッファにおいてもコントローラ20によって発見
されなかったときには、該コントローラ20により、該
蓄積命令で特定されたデータをメイン・メモリ13に対
して直接的に書き込むようにされる。この対の命令が用
いられるのは、データがバッファ16に対して転送され
たとして、当該データがバッファ16内に存在している
時間中には再使用されそうもないものに対してである。
によって検出されたときには、該コントローラ20によ
りバッファ15および16が初めにチェックされて、該
蓄積命令におけるアドレスに対するデータがいずれかの
バッファに現に存在しているかどうかが決定される。該
当のアドレスに対するデータがいずれかのバッファにお
いて発見されたときには、問題のアドレスに対するデー
タ・エントリが存在する最速の応答時間のバッファ内の
データの記録が更新される。問題のバッファが「ライト
・スルー」キャッシュ・メモリであるときには、キャッ
シュ・メモリ階層における問題のバッファの下位の、よ
り遅いバッファの更新のために該データのコピーも使用
される。問題のデータ・ワードに対するエントリがいず
れのバッファにおいてもコントローラ20によって発見
されなかったときには、該コントローラ20により、該
蓄積命令で特定されたデータをメイン・メモリ13に対
して直接的に書き込むようにされる。この対の命令が用
いられるのは、データがバッファ16に対して転送され
たとして、当該データがバッファ16内に存在している
時間中には再使用されそうもないものに対してである。
【0029】頻繁にアクセスされるデータをレベル1の
バッファおよびレベル2のバッファから取り去ることを
防止することに加えて、この発明によれば別の重要な特
質が付与される。スケジューリング・マシン命令のため
のコンパイラ技術によれば、コンパイラが待ち時間を知
っているときには、メモリからの長い待ち時間を処理す
ることについて優れたジョブを行うことができる。例え
ば、該コンパイラは、予測されるロード命令に十分に先
行した時点において、キャッシュ・メモリ・システムに
対してプリロード命令を送ることができて、キャッシュ
・メモリ・システムの適切なレベルに対してデータを移
動させることを、キャッシュ・メモリ・システムに許容
するようにされる。しかしながら、プリロード命令の伝
送が早すぎたときには、プリロード命令が受け入れられ
る時点と対応のロード命令が到達する時点との間に出さ
れる別のロード命令および蓄積命令に応答してロードさ
れたデータにより、問題のデータが置換される可能性が
ある。該当の待ち時間が知られているときには、この状
況は原理的には防止することができる。待ち時間が知ら
れているときには、キャッシュ・メモリ・システムは、
データが早期に置換されないように保証することができ
る。
バッファおよびレベル2のバッファから取り去ることを
防止することに加えて、この発明によれば別の重要な特
質が付与される。スケジューリング・マシン命令のため
のコンパイラ技術によれば、コンパイラが待ち時間を知
っているときには、メモリからの長い待ち時間を処理す
ることについて優れたジョブを行うことができる。例え
ば、該コンパイラは、予測されるロード命令に十分に先
行した時点において、キャッシュ・メモリ・システムに
対してプリロード命令を送ることができて、キャッシュ
・メモリ・システムの適切なレベルに対してデータを移
動させることを、キャッシュ・メモリ・システムに許容
するようにされる。しかしながら、プリロード命令の伝
送が早すぎたときには、プリロード命令が受け入れられ
る時点と対応のロード命令が到達する時点との間に出さ
れる別のロード命令および蓄積命令に応答してロードさ
れたデータにより、問題のデータが置換される可能性が
ある。該当の待ち時間が知られているときには、この状
況は原理的には防止することができる。待ち時間が知ら
れているときには、キャッシュ・メモリ・システムは、
データが早期に置換されないように保証することができ
る。
【0030】重要なことは必ずしも最短のメモリの待ち
時間ではなく、むしろ、予測可能な待ち時間である。こ
の発明の重要な利点は、先行技術のシステムに比べて予
測可能性の高い待ち時間が提供されることにあり、その
理由は、データをアクセスするロード命令が実際に到達
するのに先だって、蓄積されているデータがキャッシュ
・メモリから取り除かれてしまう可能性が低下すること
にある。
時間ではなく、むしろ、予測可能な待ち時間である。こ
の発明の重要な利点は、先行技術のシステムに比べて予
測可能性の高い待ち時間が提供されることにあり、その
理由は、データをアクセスするロード命令が実際に到達
するのに先だって、蓄積されているデータがキャッシュ
・メモリから取り除かれてしまう可能性が低下すること
にある。
【0031】この発明の好適な実施例においては、コン
トローラ20も、2個のプリロード命令を(キャッシュ
・メモリの各レベルに対して一つ)実行する。メモリ・
アドレスおよびある特定のキャッシュ・メモリを特定す
る一つのプリロード命令により、問題のアドレスに関連
しているデータを問題のキャッシュ・メモリに転送させ
て、ロード命令が到達したときに該当のデータが存在す
るようにされる。該プリロード命令の実行の間は、該キ
ャッシュ・メモリは別のロード命令および蓄積命令に応
答することに自由である。データがキャッシュ・メモリ
によって受け入れられるまではCPUが停止することが
ない点で、プリロード命令はロード命令とは異なってい
る。これに加えて、プリロード命令は、結果に対して特
定されるべきレジスタを必要とはしていない。このため
に、特定されたアドレスからのデータをもってキャッシ
ュ・メモリがロードされるように、CPUレジスタがサ
ービスから取り出す必要はない。
トローラ20も、2個のプリロード命令を(キャッシュ
・メモリの各レベルに対して一つ)実行する。メモリ・
アドレスおよびある特定のキャッシュ・メモリを特定す
る一つのプリロード命令により、問題のアドレスに関連
しているデータを問題のキャッシュ・メモリに転送させ
て、ロード命令が到達したときに該当のデータが存在す
るようにされる。該プリロード命令の実行の間は、該キ
ャッシュ・メモリは別のロード命令および蓄積命令に応
答することに自由である。データがキャッシュ・メモリ
によって受け入れられるまではCPUが停止することが
ない点で、プリロード命令はロード命令とは異なってい
る。これに加えて、プリロード命令は、結果に対して特
定されるべきレジスタを必要とはしていない。このため
に、特定されたアドレスからのデータをもってキャッシ
ュ・メモリがロードされるように、CPUレジスタがサ
ービスから取り出す必要はない。
【0032】プリロード命令では、実効的なメモリの待
ち時間を減少させる最大の利点をもたらすために、デー
タ源の待ち時間を考慮せねばならない。該プリロード命
令は、好適には、問題のアドレスを特定するロード命令
よりも少なくともTメモリ・サイクル前に出される。こ
こに、Tはデータ源の待ち時間である。多重レベルのキ
ャッシュ・メモリ・システムにおいては、全てのプリロ
ードでメイン・メモリをデータ源とするときには、最大
の利点が達成されることになる。
ち時間を減少させる最大の利点をもたらすために、デー
タ源の待ち時間を考慮せねばならない。該プリロード命
令は、好適には、問題のアドレスを特定するロード命令
よりも少なくともTメモリ・サイクル前に出される。こ
こに、Tはデータ源の待ち時間である。多重レベルのキ
ャッシュ・メモリ・システムにおいては、全てのプリロ
ードでメイン・メモリをデータ源とするときには、最大
の利点が達成されることになる。
【0033】プリロード命令が好適に実施される態様に
ついては、図1に関して説明された多重レベルのキャッ
シュ・メモリ・システムに関連して始めに説明される。
バッファ15に対するプリロード命令を受け入れると、
コントローラ20によりバッファ15が調べられて、該
プリロード命令で特定されたアドレスに対するエントリ
が存在するかどうかが決定される。該当のデータが既に
存在するときには、プリロード命令は無視される。該当
のデータが存在しないときには、コントローラ20によ
りバッファ16が調べられて、そこでのデータの存否が
決定される。該当のデータが存在するときには、該デー
タはバッファ15に移動される。該当のデータが存在し
ないときには、該データのコピーがメイン・メモリ13
からバッファ16に移動され、これに次いでバッファ1
6からバッファ15に移動される。同様にして、バッフ
ァ16に対するプリロード命令を受け入れると、コント
ローラ20によりバッファ16が調べられて、該プリロ
ード命令で特定されたアドレスに対するエントリが存在
するかどうかが決定される。該当のデータが既に存在す
るときには、プリロード命令は無視される。該当のデー
タが存在しないときには、コントローラ20で調べられ
たデータのコピーがメイン・メモリ13からバッファ1
6に渡される。
ついては、図1に関して説明された多重レベルのキャッ
シュ・メモリ・システムに関連して始めに説明される。
バッファ15に対するプリロード命令を受け入れると、
コントローラ20によりバッファ15が調べられて、該
プリロード命令で特定されたアドレスに対するエントリ
が存在するかどうかが決定される。該当のデータが既に
存在するときには、プリロード命令は無視される。該当
のデータが存在しないときには、コントローラ20によ
りバッファ16が調べられて、そこでのデータの存否が
決定される。該当のデータが存在するときには、該デー
タはバッファ15に移動される。該当のデータが存在し
ないときには、該データのコピーがメイン・メモリ13
からバッファ16に移動され、これに次いでバッファ1
6からバッファ15に移動される。同様にして、バッフ
ァ16に対するプリロード命令を受け入れると、コント
ローラ20によりバッファ16が調べられて、該プリロ
ード命令で特定されたアドレスに対するエントリが存在
するかどうかが決定される。該当のデータが既に存在す
るときには、プリロード命令は無視される。該当のデー
タが存在しないときには、コントローラ20で調べられ
たデータのコピーがメイン・メモリ13からバッファ1
6に渡される。
【0034】プリロードが進行している間は、問題のア
ドレスに対する最近のデータがキャッシュ・メモリに配
置されていることを確認するために、プリロード命令の
受け入れとキャッシュ・メモリ内のレジスタへのデータ
の伝送との間にCPUによって出された全ての蓄積命令
を、コントローラ20によって調べねばならない。アド
レスAを特定するプリロード命令がキャッシュ・メモリ
・システムに対して出され、該当のデータはキャッシュ
・メモリのいずれのバッファ・レベルにも存在しなかっ
た、という場合について考えてみる。メイン・メモリか
らキャッシュ・メモリまでデータを移動させるのに必要
な時間中に、ある一つの蓄積命令がアドレスAに対して
受け入れられる。これが生じたときには、該蓄積命令か
らの値はキャッシュ・メモリに蓄積され、また、メイン
・メモリから後続して伝送される値は無視されることに
なる。
ドレスに対する最近のデータがキャッシュ・メモリに配
置されていることを確認するために、プリロード命令の
受け入れとキャッシュ・メモリ内のレジスタへのデータ
の伝送との間にCPUによって出された全ての蓄積命令
を、コントローラ20によって調べねばならない。アド
レスAを特定するプリロード命令がキャッシュ・メモリ
・システムに対して出され、該当のデータはキャッシュ
・メモリのいずれのバッファ・レベルにも存在しなかっ
た、という場合について考えてみる。メイン・メモリか
らキャッシュ・メモリまでデータを移動させるのに必要
な時間中に、ある一つの蓄積命令がアドレスAに対して
受け入れられる。これが生じたときには、該蓄積命令か
らの値はキャッシュ・メモリに蓄積され、また、メイン
・メモリから後続して伝送される値は無視されることに
なる。
【0035】プリロード命令によって導入される第2の
問題は、キャッシュ・メモリが同じアドレスに対する第
1のプリロード命令を処理している間に、アドレスAに
対する第2のプリロード命令が受け入れられるという可
能性に関することである。これが生起したときに好適と
されることは、第1のプリロード命令が処理されるまで
は、第2のプリロードの実施をキャッシュ・メモリによ
って遅らせることである。この状況が生じるのは稀にし
かないと予測される。このために、第2のプリロード命
令の遅れによるシステムの動作時間の増大は無視できる
ものである。
問題は、キャッシュ・メモリが同じアドレスに対する第
1のプリロード命令を処理している間に、アドレスAに
対する第2のプリロード命令が受け入れられるという可
能性に関することである。これが生起したときに好適と
されることは、第1のプリロード命令が処理されるまで
は、第2のプリロードの実施をキャッシュ・メモリによ
って遅らせることである。この状況が生じるのは稀にし
かないと予測される。このために、第2のプリロード命
令の遅れによるシステムの動作時間の増大は無視できる
ものである。
【0036】この発明の好適な実施例においては、バッ
ファ15および16にデータ値を蓄積するために用いら
れるレジスタに2個の追加的なフラグ・ビットを付加す
ることによって、これらの問題は克服される。一般的
に、バッファ15および16に含まれているレジスタ・
ファイルには、ファイルに蓄積された各データ・エント
リに対して一つのレジスタが設けられている。図2に
は、典型的なレジスタ100が示されている。レジスタ
100に含まれているフィールド101は、フィールド
102に蓄積されたデータ・エントリについての、メイ
ン・メモリのアドレスを蓄積するためのものである。こ
れに加えて、レジスタ100には、プリロード命令を処
理する際に用いられる2個のフラグが含まれている。第
1のフラグ104によれば、一つのプリロードが進行し
ていることが指示される。第2のフラグ106は、該プ
リロードの進行中に問題のアドレスに対する蓄積命令が
受け入れられたことを指示するために用いられる。この
ために、メイン・メモリまたはその他のバッファ・レベ
ルから戻された値は無視されることになる。
ファ15および16にデータ値を蓄積するために用いら
れるレジスタに2個の追加的なフラグ・ビットを付加す
ることによって、これらの問題は克服される。一般的
に、バッファ15および16に含まれているレジスタ・
ファイルには、ファイルに蓄積された各データ・エント
リに対して一つのレジスタが設けられている。図2に
は、典型的なレジスタ100が示されている。レジスタ
100に含まれているフィールド101は、フィールド
102に蓄積されたデータ・エントリについての、メイ
ン・メモリのアドレスを蓄積するためのものである。こ
れに加えて、レジスタ100には、プリロード命令を処
理する際に用いられる2個のフラグが含まれている。第
1のフラグ104によれば、一つのプリロードが進行し
ていることが指示される。第2のフラグ106は、該プ
リロードの進行中に問題のアドレスに対する蓄積命令が
受け入れられたことを指示するために用いられる。この
ために、メイン・メモリまたはその他のバッファ・レベ
ルから戻された値は無視されることになる。
【0037】プリロード命令が受け入れられ、そして、
命令で特定されたバッファにおけるレジスタ・ファイル
には、該プリロード命令で特定されたアドレスに対する
エントリは含まれていないことが、コントローラ20に
よって決定されるという場合について考えてみる。コン
トローラ20は、これに次いで、プリロード命令で特定
されたバッファのレジスタ・ファイルにおける一つのレ
ジスタを、該プリロード命令に対して割り当てる。レジ
スタ・フラグ104および106はそれらの初期値にセ
ットされ、また、プリロード命令で特定されたものの下
位のバッファ・レベルまたはメイン・メモリからデータ
をフェッチするための命令が出される。一つの蓄積命令
がコントローラ20によって検出される度に、該蓄積命
令におけるアドレスが、レジスタ・ファイル内のレジス
タにおける全てのアドレスと再び比較される。アドレス
が合致したときには、蓄積命令で特定された値が問題の
レジスタのフィールド102にロードされ、そして、第
2のフラグがリセットされて、メイン・メモリまたはそ
の他のバッファから後続して受け入れられたいずれの値
も無視されるべきことが指示される。この蓄積命令の処
理は上述されたことに付加されるものである。
命令で特定されたバッファにおけるレジスタ・ファイル
には、該プリロード命令で特定されたアドレスに対する
エントリは含まれていないことが、コントローラ20に
よって決定されるという場合について考えてみる。コン
トローラ20は、これに次いで、プリロード命令で特定
されたバッファのレジスタ・ファイルにおける一つのレ
ジスタを、該プリロード命令に対して割り当てる。レジ
スタ・フラグ104および106はそれらの初期値にセ
ットされ、また、プリロード命令で特定されたものの下
位のバッファ・レベルまたはメイン・メモリからデータ
をフェッチするための命令が出される。一つの蓄積命令
がコントローラ20によって検出される度に、該蓄積命
令におけるアドレスが、レジスタ・ファイル内のレジス
タにおける全てのアドレスと再び比較される。アドレス
が合致したときには、蓄積命令で特定された値が問題の
レジスタのフィールド102にロードされ、そして、第
2のフラグがリセットされて、メイン・メモリまたはそ
の他のバッファから後続して受け入れられたいずれの値
も無視されるべきことが指示される。この蓄積命令の処
理は上述されたことに付加されるものである。
【0038】上記の検討では、蓄積命令で特定されたワ
ードが、バッファに蓄積されているデータ・エントリの
ワード長に正確に合致しているものとされている。どの
場合でもこうなるとは限らない。例えば、ある種のシス
テムにおいては、数バイト長のワードをキャッシュ・メ
モリに蓄積することができる。これに対して、一つの蓄
積命令に含ませることができるのは一つの単一バイトで
ある。このようなシステムにおいては、第2フラグ10
6のような分離したフラグは、第1のフラグ104にお
ける各バイトに対して設けられる。各々のこのようなフ
ラグは、一つの蓄積命令によって対応のバイトが与えら
れたことを指示するものであり、このために、プリロー
ド命令に応答して戻された該当のバイトに対する値は無
視されることになる。
ードが、バッファに蓄積されているデータ・エントリの
ワード長に正確に合致しているものとされている。どの
場合でもこうなるとは限らない。例えば、ある種のシス
テムにおいては、数バイト長のワードをキャッシュ・メ
モリに蓄積することができる。これに対して、一つの蓄
積命令に含ませることができるのは一つの単一バイトで
ある。このようなシステムにおいては、第2フラグ10
6のような分離したフラグは、第1のフラグ104にお
ける各バイトに対して設けられる。各々のこのようなフ
ラグは、一つの蓄積命令によって対応のバイトが与えら
れたことを指示するものであり、このために、プリロー
ド命令に応答して戻された該当のバイトに対する値は無
視されることになる。
【0039】プリロード命令で特定されたアドレスに対
して、レジスタ・ファイルにおけるいずれのレジスタが
割り当てられるかを決定するためには、多くの置換のや
り方を用いることができる。従来のキャッシュ・メモリ
について用いられるいずれの置換のやり方でも、この発
明によるキャッシュ・メモリ・システムにおいて用いる
ことができる。例えば、レジスタ・ファイルにおける各
レジスタには、それに蓄積されたデータ・エントリが蓄
積命令またはロード命令で参照されてから経過した、サ
イクルのカウント数を蓄積するためのフィールドを含ま
せることができる。そして、最大のカウントを有するレ
ジスタが問題のアドレスに対して割り当てられることに
なる。これは、最も使用の少ないデータ・エントリを置
換することに対応するものである。置換のやり方の第2
の例は、プリロードが置換のためにランダムに進行して
いなかったレジスタを、選択することである。
して、レジスタ・ファイルにおけるいずれのレジスタが
割り当てられるかを決定するためには、多くの置換のや
り方を用いることができる。従来のキャッシュ・メモリ
について用いられるいずれの置換のやり方でも、この発
明によるキャッシュ・メモリ・システムにおいて用いる
ことができる。例えば、レジスタ・ファイルにおける各
レジスタには、それに蓄積されたデータ・エントリが蓄
積命令またはロード命令で参照されてから経過した、サ
イクルのカウント数を蓄積するためのフィールドを含ま
せることができる。そして、最大のカウントを有するレ
ジスタが問題のアドレスに対して割り当てられることに
なる。これは、最も使用の少ないデータ・エントリを置
換することに対応するものである。置換のやり方の第2
の例は、プリロードが置換のためにランダムに進行して
いなかったレジスタを、選択することである。
【0040】上記された従来の置換のやり方に加えて、
この発明の好適な実施例では、レジスタがクリアできる
かを特定するためにコンパイラおよび/またはプログラ
マが許容するような、特別なクラスの命令を実行するよ
うにされる。このクラスの命令はクリア命令として参照
される。各バッファ・レベルに対して一つのこのような
命令がある。クリア命令で用意されるものは、データが
プログラムによって最後に用いられてから、できるだけ
迅速に当該データをキャッシュ・メモリから取り除くた
めの手段である。各命令により一つのアドレスが特定さ
れる。問題のアドレスに対するエントリが問題のバッフ
ァに含まれているときには、このデータ・エントリのた
めに現に使用されているレジスタが、自由にオーバライ
トされるものとしてコントローラ20によりマークされ
る。これに次いで、問題のレジスタはプリロード命令ま
たは蓄積命令で用いることが可能にされる。即ち、クリ
アされていないレジスタの内容を置換するのに先立ち、
クリアされたレジスタが用いられることになる。これら
の命令を実行するために、第3のフラグ108が各レジ
スタ100に含まれている。アドレスAおよび特定され
たバッファに対するクリア・コマンドがコントローラ2
0で受け入れられたときには、フィールド101内のA
についてのエントリに対する特定されたバッファの内容
が、該コントローラ20によって調べられる。このよう
なエントリが発見されたときには、レジスタが後続のロ
ード命令、プリロード命令または蓄積命令によって使用
できることを指示する値が第3のフラグ108にセット
される。このようなレジスタが発見されなかったときに
は、該当の命令は無視される。キャッシュ・メモリ・シ
ステムがライト・スルー・キャッシュ・メモリではない
ときには、コントローラ20は、レジスタが自由にされ
たときに、クリアされたレジスタからのデータをメイン
・メモリおよび/またはより下位レベルのキャッシュ・
メモリもコピーせねばならない。
この発明の好適な実施例では、レジスタがクリアできる
かを特定するためにコンパイラおよび/またはプログラ
マが許容するような、特別なクラスの命令を実行するよ
うにされる。このクラスの命令はクリア命令として参照
される。各バッファ・レベルに対して一つのこのような
命令がある。クリア命令で用意されるものは、データが
プログラムによって最後に用いられてから、できるだけ
迅速に当該データをキャッシュ・メモリから取り除くた
めの手段である。各命令により一つのアドレスが特定さ
れる。問題のアドレスに対するエントリが問題のバッフ
ァに含まれているときには、このデータ・エントリのた
めに現に使用されているレジスタが、自由にオーバライ
トされるものとしてコントローラ20によりマークされ
る。これに次いで、問題のレジスタはプリロード命令ま
たは蓄積命令で用いることが可能にされる。即ち、クリ
アされていないレジスタの内容を置換するのに先立ち、
クリアされたレジスタが用いられることになる。これら
の命令を実行するために、第3のフラグ108が各レジ
スタ100に含まれている。アドレスAおよび特定され
たバッファに対するクリア・コマンドがコントローラ2
0で受け入れられたときには、フィールド101内のA
についてのエントリに対する特定されたバッファの内容
が、該コントローラ20によって調べられる。このよう
なエントリが発見されたときには、レジスタが後続のロ
ード命令、プリロード命令または蓄積命令によって使用
できることを指示する値が第3のフラグ108にセット
される。このようなレジスタが発見されなかったときに
は、該当の命令は無視される。キャッシュ・メモリ・シ
ステムがライト・スルー・キャッシュ・メモリではない
ときには、コントローラ20は、レジスタが自由にされ
たときに、クリアされたレジスタからのデータをメイン
・メモリおよび/またはより下位レベルのキャッシュ・
メモリもコピーせねばならない。
【0041】原理的にいえば、キャッシュ・メモリにお
いてはもはや必要とされないデータによるキャッシュ・
メモリの汚染を回避できるシステムを提供するために、
ある一つのレベルのキャッシュ・メモリによってクリア
命令を用いることができる。このようなシステムにおい
ては、キャッシュ・メモリでは上記された置換のやり方
(即ち、置換のためにエントリをマークできること)を
用いねばならない。データ・エントリがキャッシュ・メ
モリにおいてもはや不要になったときには、問題のエン
トリに対して指向されるクリア命令が出される。データ
が1回しか使用されないことが知られているときには、
このようなデータに対する各ロード命令はクリア命令に
よって追従される。
いてはもはや必要とされないデータによるキャッシュ・
メモリの汚染を回避できるシステムを提供するために、
ある一つのレベルのキャッシュ・メモリによってクリア
命令を用いることができる。このようなシステムにおい
ては、キャッシュ・メモリでは上記された置換のやり方
(即ち、置換のためにエントリをマークできること)を
用いねばならない。データ・エントリがキャッシュ・メ
モリにおいてもはや不要になったときには、問題のエン
トリに対して指向されるクリア命令が出される。データ
が1回しか使用されないことが知られているときには、
このようなデータに対する各ロード命令はクリア命令に
よって追従される。
【0042】コンパイラおよび/またはプログラマがメ
モリの待ち時間の効果を減少させることがプリロード命
令で許容されるときに、ここで各ロード命令はある一つ
のプリロード命令によって先行されねばならないことか
ら、CPUに対してある一つの値をロードするために必
要とされる命令の数がこれらの命令によって増加され
る。この発明の好適な実施例によれば、ある所定の時間
遅れの後で、キャッシュ・メモリ・サブシステムをして
固有のロード命令を効果的に発生せしめるような第2の
クラスのプリロード命令を実行することにより、この問
題が回避される。このタイプのプリロード命令で特定さ
れたバッファ・レベルには、ロードされるべきデータ、
データ・エントリのメイン・メモリにおけるアドレス、
データがロードされるべきCPUレジスタ、および、命
令サイクルのカウントが入れられる。コントローラ20
においては、プリロード命令について上述されたと同様
な態様でこれらの命令が処理される。ただし、特定され
た数の命令サイクルの後では、このコントローラ20に
おいて、問題のレジスタに対するロード命令が問題のC
PUレジスタに対して実行される。この発明の好適な実
施例によれば、キャッシュ・メモリ・システム内の各バ
ッファ・レベルに対する第2のこのようなプリロード命
令が実行される。
モリの待ち時間の効果を減少させることがプリロード命
令で許容されるときに、ここで各ロード命令はある一つ
のプリロード命令によって先行されねばならないことか
ら、CPUに対してある一つの値をロードするために必
要とされる命令の数がこれらの命令によって増加され
る。この発明の好適な実施例によれば、ある所定の時間
遅れの後で、キャッシュ・メモリ・サブシステムをして
固有のロード命令を効果的に発生せしめるような第2の
クラスのプリロード命令を実行することにより、この問
題が回避される。このタイプのプリロード命令で特定さ
れたバッファ・レベルには、ロードされるべきデータ、
データ・エントリのメイン・メモリにおけるアドレス、
データがロードされるべきCPUレジスタ、および、命
令サイクルのカウントが入れられる。コントローラ20
においては、プリロード命令について上述されたと同様
な態様でこれらの命令が処理される。ただし、特定され
た数の命令サイクルの後では、このコントローラ20に
おいて、問題のレジスタに対するロード命令が問題のC
PUレジスタに対して実行される。この発明の好適な実
施例によれば、キャッシュ・メモリ・システム内の各バ
ッファ・レベルに対する第2のこのようなプリロード命
令が実行される。
【0043】同様にして、クリア命令によれば、後続の
命令によって置換されるのに先立ち、再び使用されるこ
とがなさそうなデータをキャッシュ・メモリからクリア
することが、コンパイラおよび/またはプログラマに対
して許容される。このような動作は、データ・エントリ
の最後の使用によって発生される蓄積命令またはロード
命令のいずれかと結合されることが多い。このために、
クリア命令によって追従される蓄積命令またはロード命
令の組み合せからなる命令は特に有用なものであるが、
その理由は、2個の分離した命令を出すことが回避され
ることにある。この発明の好適な実施例によれば、各バ
ッファ・レベルに対してこのような命令が実行される。
命令によって置換されるのに先立ち、再び使用されるこ
とがなさそうなデータをキャッシュ・メモリからクリア
することが、コンパイラおよび/またはプログラマに対
して許容される。このような動作は、データ・エントリ
の最後の使用によって発生される蓄積命令またはロード
命令のいずれかと結合されることが多い。このために、
クリア命令によって追従される蓄積命令またはロード命
令の組み合せからなる命令は特に有用なものであるが、
その理由は、2個の分離した命令を出すことが回避され
ることにある。この発明の好適な実施例によれば、各バ
ッファ・レベルに対してこのような命令が実行される。
【0044】上述されたこの発明の実施例においては、
2レベルのキャッシュ・メモリとしてのバッファが用い
られている。しかしながら、当業者にとって明かであろ
うことは、より多くのレベルのキャッシュ・メモリを用
いるシステムが有利なことである。メイン・メモリの上
にNレベルのキャッシュ・メモリがあるとすると、この
発明によるキャッシュ・メモリ・システムには(N+
1)個のロード命令と(N+1)個の蓄積命令とが含ま
れることになる。メイン・メモリから最も離れたキャッ
シュ・メモリ・レベルはキャッシュ・メモリ・レベルN
として表示される。そして、以下の説明では最高のレベ
ルとして参照される。i番目のロード命令により、そこ
で特定されたアドレスに関連のデータのコピーはi番目
のキャッシュ・メモリに配置され、また、当該データの
コピーは、命令で特定されたCPUレジスタにロードさ
れることになる。N番目のキャッシュ・メモリは、最も
小形で最も迅速な前記のレベルのものである。0番目の
ロード命令によれば、問題のCPUレジスタはメイン・
メモリから直接的にロードされる。
2レベルのキャッシュ・メモリとしてのバッファが用い
られている。しかしながら、当業者にとって明かであろ
うことは、より多くのレベルのキャッシュ・メモリを用
いるシステムが有利なことである。メイン・メモリの上
にNレベルのキャッシュ・メモリがあるとすると、この
発明によるキャッシュ・メモリ・システムには(N+
1)個のロード命令と(N+1)個の蓄積命令とが含ま
れることになる。メイン・メモリから最も離れたキャッ
シュ・メモリ・レベルはキャッシュ・メモリ・レベルN
として表示される。そして、以下の説明では最高のレベ
ルとして参照される。i番目のロード命令により、そこ
で特定されたアドレスに関連のデータのコピーはi番目
のキャッシュ・メモリに配置され、また、当該データの
コピーは、命令で特定されたCPUレジスタにロードさ
れることになる。N番目のキャッシュ・メモリは、最も
小形で最も迅速な前記のレベルのものである。0番目の
ロード命令によれば、問題のCPUレジスタはメイン・
メモリから直接的にロードされる。
【0045】同様にして、i番目の蓄積命令により、そ
こで特定されたアドレスに関連のデータのコピーはi番
目のキャッシュ・メモリに配置され、また、0番目の蓄
積命令によれば、問題の値がメイン・メモリに対して直
接的に蓄積される。蓄積命令の場合には、該命令で特定
されたものの上のバッファ・レベルにおけるアドレスに
対する全てのエントリは、無効にされるか、更新される
かのいずれかでなければならない。キャッシュ・メモリ
・システムがライト・スルー・キャッシュ・メモリであ
るときには、エントリも、特定されたキャッシュ・メモ
リの下位の各バッファおよびメイン・メモリの各々に配
置されねばならない。
こで特定されたアドレスに関連のデータのコピーはi番
目のキャッシュ・メモリに配置され、また、0番目の蓄
積命令によれば、問題の値がメイン・メモリに対して直
接的に蓄積される。蓄積命令の場合には、該命令で特定
されたものの上のバッファ・レベルにおけるアドレスに
対する全てのエントリは、無効にされるか、更新される
かのいずれかでなければならない。キャッシュ・メモリ
・システムがライト・スルー・キャッシュ・メモリであ
るときには、エントリも、特定されたキャッシュ・メモ
リの下位の各バッファおよびメイン・メモリの各々に配
置されねばならない。
【0046】上述されたこの発明の実施例では、「イン
クルージヴ(inclusive )」キャッシュ・メモリのやり
方が使用されている。即ち、最高のバッファ・レベルに
蓄積されたデータのコピーも、より下位のキャッシュ・
メモリ・レベルに常に含まれている。例えば、ある一つ
の値がi番目のレベルのバッファにロードされていると
きには、それは(i−1)・・・0番目のレベルにもロ
ードされる。キャッシュ・メモリのサイズは典型的には
各レベルについての大きさの程度によって増大すること
から、特別のコピーによりメモリ・スペースが著しく減
少することはない。このようなインクルーシブなやり方
の利点は、問題のレベルの内容を調べることにより、あ
る一つのエントリがある特定されたレベル上にあるかど
うかを決定するために、コントローラ20の能力内にあ
る。ある一つのデータ・エントリがアドレスAに対する
i番目のレベルに存在しないときには、i以下のいずれ
のレベルにもエントリが存在しないことになる。この発
明の好適な実施例ではインクルーシブ式のキャッシュ・
メモリのやり方が使用されているが、当業者にとって明
かであるように、この発明の教示から外れることなく、
ノンインクルーシブ式のやり方を使用することもでき
る。
クルージヴ(inclusive )」キャッシュ・メモリのやり
方が使用されている。即ち、最高のバッファ・レベルに
蓄積されたデータのコピーも、より下位のキャッシュ・
メモリ・レベルに常に含まれている。例えば、ある一つ
の値がi番目のレベルのバッファにロードされていると
きには、それは(i−1)・・・0番目のレベルにもロ
ードされる。キャッシュ・メモリのサイズは典型的には
各レベルについての大きさの程度によって増大すること
から、特別のコピーによりメモリ・スペースが著しく減
少することはない。このようなインクルーシブなやり方
の利点は、問題のレベルの内容を調べることにより、あ
る一つのエントリがある特定されたレベル上にあるかど
うかを決定するために、コントローラ20の能力内にあ
る。ある一つのデータ・エントリがアドレスAに対する
i番目のレベルに存在しないときには、i以下のいずれ
のレベルにもエントリが存在しないことになる。この発
明の好適な実施例ではインクルーシブ式のキャッシュ・
メモリのやり方が使用されているが、当業者にとって明
かであるように、この発明の教示から外れることなく、
ノンインクルーシブ式のやり方を使用することもでき
る。
【0047】上述されたこの発明の実施例では、キャッ
シュ・メモリ・システムにおいて少なくとも2レベルの
バッファであるとされているが、当業者にとって明かで
あるように、1レベルのバッファのキャッシュ・メモリ
・システムでも先行技術を越える著しい利点がもたらさ
れる。特に、2レベルの蓄積命令およびロード命令を含
むもの(即ち、N=2)によれば、キャッシュ・メモリ
内での存在の間に再使用されそうもないデータについ
て、そうでなければキャッシュ・メモリを汚染すること
になる、ロードまたは蓄積のためのキャッシュ・メモリ
をバイパスさせることが、コンパイラおよび/またはプ
ログラマに対して許容される。
シュ・メモリ・システムにおいて少なくとも2レベルの
バッファであるとされているが、当業者にとって明かで
あるように、1レベルのバッファのキャッシュ・メモリ
・システムでも先行技術を越える著しい利点がもたらさ
れる。特に、2レベルの蓄積命令およびロード命令を含
むもの(即ち、N=2)によれば、キャッシュ・メモリ
内での存在の間に再使用されそうもないデータについ
て、そうでなければキャッシュ・メモリを汚染すること
になる、ロードまたは蓄積のためのキャッシュ・メモリ
をバイパスさせることが、コンパイラおよび/またはプ
ログラマに対して許容される。
【0048】この発明に対する種々の修正については、
前述の説明および添付の図面から、当業者にとっては明
かなことである。従って、この発明は、その特許請求の
範囲の欄に記載の範囲によってのみ限定されるべきもの
である。
前述の説明および添付の図面から、当業者にとっては明
かなことである。従って、この発明は、その特許請求の
範囲の欄に記載の範囲によってのみ限定されるべきもの
である。
【0049】
【発明の効果】以上詳細に説明したように、この発明に
よれば、CPUからの第1のロード命令で特定されたデ
ータ・ワードを制御手段によりCPUに対して転送し、
データ・ワードのコピーを第1のバッファ手段に対して
転送し、CPUからの第2のロード命令に制御手段が応
答してデータ・ワードのコピーをバッファ手段に転送し
ないで、第2のロード命令で特定されたデータ・ワード
をメイン・メモリからCPUに転送し、CPUからの第
1の蓄積命令に含まれているアドレス情報とデータを制
御手段によりバッファ手段に蓄積させ、CPUからの第
2の蓄積命令に応答してデータ・ワードのコピーをバッ
ファ手段に配置することなく第2の蓄積命令に含まれて
いるデータを制御手段によりメイン・メモリに蓄積させ
るように構成したので、データをアクセスするロードが
実際に到達するのに先立って蓄積されているデータがキ
ャッシュ・メモリから除かれる可能性が少なくなる。し
たがって、多くの回数にわたり使用されることがないデ
ータにより、キャッシュ・メモリの汚染から回避するこ
とができるとともに、数回しか使用されないデータに対
してアクセスができるという効果を奏する。
よれば、CPUからの第1のロード命令で特定されたデ
ータ・ワードを制御手段によりCPUに対して転送し、
データ・ワードのコピーを第1のバッファ手段に対して
転送し、CPUからの第2のロード命令に制御手段が応
答してデータ・ワードのコピーをバッファ手段に転送し
ないで、第2のロード命令で特定されたデータ・ワード
をメイン・メモリからCPUに転送し、CPUからの第
1の蓄積命令に含まれているアドレス情報とデータを制
御手段によりバッファ手段に蓄積させ、CPUからの第
2の蓄積命令に応答してデータ・ワードのコピーをバッ
ファ手段に配置することなく第2の蓄積命令に含まれて
いるデータを制御手段によりメイン・メモリに蓄積させ
るように構成したので、データをアクセスするロードが
実際に到達するのに先立って蓄積されているデータがキ
ャッシュ・メモリから除かれる可能性が少なくなる。し
たがって、多くの回数にわたり使用されることがないデ
ータにより、キャッシュ・メモリの汚染から回避するこ
とができるとともに、数回しか使用されないデータに対
してアクセスができるという効果を奏する。
【図1】この発明によるキャッシュ・メモリ・システム
のブロック図である。
のブロック図である。
【図2】この発明によるキャッシュ・メモリ・システム
内のデータ・ワードを蓄積するためのレジスタのブロッ
ク図である。
内のデータ・ワードを蓄積するためのレジスタのブロッ
ク図である。
10 キャツシュ・メモリ・システム 12 CPU 13 メイン・メモリ 14〜16 バッファ 100 レジスタ 101,102 フィールド 104 第1のフラグ 106 第2のフラグ 108 第3のフラグ
Claims (1)
- 【請求項1】 メイン・メモリ13に正常に蓄積された
データ・ワードを蓄積し、各前記蓄積されたデータ・ワ
ードのコピーに関連した前記メイン・メモリ13におけ
るアドレスを特定する情報を蓄積するための手段を含む
第1のバッファ手段15と;第1と第2の蓄積命令およ
び第1と第2のロード命令をCPU12から受け入れか
つ前記第1と第2のロード命令に対応して前記CPUに
対してデータを供給し、各前記蓄積およびロード命令が
前記メイン・メモリ13におけるアドレスを特定する情
報を含み、前記第1バッファ手段および前記メイン・メ
モリ13に動作的に接続されている制御手段20と;か
らなり、 前記制御手段20はさらに前記第1のロード命令に応答
して、そのアドレスが前記第1のロード命令で特定され
たデータ・ワードを前記CPUに対して転送し、かつ前
記データ・ワードのコピーを前記第1のバッファ手段に
対して転送するようにさせるための第1のロード手段
と;前記第1の蓄積命令に応答して、前記第1の蓄積命
令に含まれている前記アドレス情報とともに前記第1の
蓄積命令に含まれているデータを前記第1のバッファ手
段に蓄積するようにさせるための第1の蓄積手段と;前
記第2のロード命令に応答して、前記データ・ワードの
コピーを前記第1のバッファ手段に配置させることな
く、そのアドレスが前記第2のロード命令で特定された
データ・ワードを前記メイン・メモリ13から前記CP
Uに対して転送するための第2のロード手段と;および
前記第2の蓄積命令に応答して、前記データ・ワードの
コピーを前記第1のバッファ手段に配置させることな
く、前記第2の蓄積命令に含まれているデータを前記メ
イン・メモリ13に蓄積するようにさせるための第2の
蓄積手段と;からなるCPU12とメイン・メモリ13
との間でバッファリングされたメモリのアクセスをする
ためのキャッシュ・メモリ・システム・
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US96059892A | 1992-10-13 | 1992-10-13 | |
US960,598 | 1992-10-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06202951A true JPH06202951A (ja) | 1994-07-22 |
Family
ID=25503375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5280168A Pending JPH06202951A (ja) | 1992-10-13 | 1993-10-13 | キャッシュ・メモリ・システム |
Country Status (3)
Country | Link |
---|---|
JP (1) | JPH06202951A (ja) |
DE (1) | DE4323929A1 (ja) |
GB (1) | GB2271653A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612685B2 (en) | 2007-10-11 | 2013-12-17 | Nec Corporation | Processor, information processing device and cache control method of processor |
JP2015503805A (ja) * | 2012-01-10 | 2015-02-02 | クアルコム,インコーポレイテッド | 物理アドレスを用いる非割当てメモリアクセス |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829025A (en) * | 1996-12-17 | 1998-10-27 | Intel Corporation | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction |
US6275904B1 (en) | 1998-03-31 | 2001-08-14 | Intel Corporation | Cache pollution avoidance instructions |
KR20010016952A (ko) * | 1999-08-05 | 2001-03-05 | 박인규 | 임피던스가 보상된 전력 전송 회로 |
JP2005115603A (ja) | 2003-10-07 | 2005-04-28 | Hitachi Ltd | 記憶デバイス制御装置及びその制御方法 |
US7454585B2 (en) | 2005-12-22 | 2008-11-18 | International Business Machines Corporation | Efficient and flexible memory copy operation |
US7506132B2 (en) | 2005-12-22 | 2009-03-17 | International Business Machines Corporation | Validity of address ranges used in semi-synchronous memory copy operations |
US7484062B2 (en) * | 2005-12-22 | 2009-01-27 | International Business Machines Corporation | Cache injection semi-synchronous memory copy operation |
US9690583B2 (en) | 2011-10-03 | 2017-06-27 | International Business Machines Corporation | Exploiting an architected list-use operand indication in a computer system operand resource pool |
US9697002B2 (en) | 2011-10-03 | 2017-07-04 | International Business Machines Corporation | Computer instructions for activating and deactivating operands |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2261586C3 (de) * | 1972-12-15 | 1979-08-09 | Siemens Ag, 1000 Berlin Und 8000 Muenchen | Speichereinrichtung |
US4075686A (en) * | 1976-12-30 | 1978-02-21 | Honeywell Information Systems Inc. | Input/output cache system including bypass capability |
US4197580A (en) * | 1978-06-08 | 1980-04-08 | Bell Telephone Laboratories, Incorporated | Data processing system including a cache memory |
GB2075731B (en) * | 1978-12-11 | 1983-05-25 | Honeywell Inf Systems | Improvements in or relating to data processing apparatus |
US4500954A (en) * | 1981-10-15 | 1985-02-19 | International Business Machines Corporation | Cache bypass system with post-block transfer directory examinations for updating cache and/or maintaining bypass |
-
1993
- 1993-07-16 DE DE4323929A patent/DE4323929A1/de not_active Withdrawn
- 1993-10-05 GB GB9320511A patent/GB2271653A/en not_active Withdrawn
- 1993-10-13 JP JP5280168A patent/JPH06202951A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612685B2 (en) | 2007-10-11 | 2013-12-17 | Nec Corporation | Processor, information processing device and cache control method of processor |
JP2015503805A (ja) * | 2012-01-10 | 2015-02-02 | クアルコム,インコーポレイテッド | 物理アドレスを用いる非割当てメモリアクセス |
Also Published As
Publication number | Publication date |
---|---|
GB9320511D0 (en) | 1993-11-24 |
DE4323929A1 (de) | 1994-04-14 |
GB2271653A (en) | 1994-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5958040A (en) | Adaptive stream buffers | |
KR100240912B1 (ko) | 데이터 프리페치 장치 및 시스템, 캐시 라인 프리페치 방법 | |
US6598126B2 (en) | Processing device which prefetches instructions having indicator bits specifying cache levels for prefetching | |
US5829025A (en) | Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction | |
US6249846B1 (en) | Distributed data dependency stall mechanism | |
US4875155A (en) | Peripheral subsystem having read/write cache with record access | |
US6496902B1 (en) | Vector and scalar data cache for a vector multiprocessor | |
US8521982B2 (en) | Load request scheduling in a cache hierarchy | |
CA1322058C (en) | Multi-processor computer systems having shared memory and private cache memories | |
US7284102B2 (en) | System and method of re-ordering store operations within a processor | |
JP4298800B2 (ja) | キャッシュメモリにおけるプリフェッチ管理 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US20040049641A1 (en) | System and method for controlling prefetching | |
US8352712B2 (en) | Method and system for specualtively sending processor-issued store operations to a store queue with full signal asserted | |
JP2000090009A (ja) | キャッシュメモリにおいてキャッシュラインを置き換えるための方法および装置 | |
JPH1055307A (ja) | コンピュータ・システム | |
JP2000242558A (ja) | キャッシュシステム及びその操作方法 | |
JPH06348595A (ja) | キャッシュ装置 | |
US5161219A (en) | Computer system with input/output cache | |
JPH06202951A (ja) | キャッシュ・メモリ・システム | |
KR100505695B1 (ko) | 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법 | |
US5920889A (en) | Apparatus and method for write miss processing in a copy-back data cache with an allocating load buffer and a non-allocating store buffer | |
KR19980081314A (ko) | 프로세서 버스로의 캐쉬 연산의 요구-기반 발생 방법 및 장치 | |
JPH0628258A (ja) | マイクロプロセッサ | |
EP0533374A1 (en) | Cache memory system |