JPS638851A - キャッシュ・メモリ制御方式 - Google Patents
キャッシュ・メモリ制御方式Info
- Publication number
- JPS638851A JPS638851A JP62159553A JP15955387A JPS638851A JP S638851 A JPS638851 A JP S638851A JP 62159553 A JP62159553 A JP 62159553A JP 15955387 A JP15955387 A JP 15955387A JP S638851 A JPS638851 A JP S638851A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- cache memory
- memory
- block
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 105
- 238000000034 method Methods 0.000 claims abstract description 13
- 230000004044 response Effects 0.000 claims abstract 2
- 230000002123 temporal effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array 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
- 238000001914 filtration Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明はコンピュータ・システムに関し、更に詳細には
、保証されたとき標準の置換え機構から一層効率的なデ
ータ置換え方法に切換えることができるキャッシュ・メ
モリ制御方式に関する。
、保証されたとき標準の置換え機構から一層効率的なデ
ータ置換え方法に切換えることができるキャッシュ・メ
モリ制御方式に関する。
最近のコンピュータ・システムの多くは中央処理装置(
CP U)と主メモリを備えている。CPUが命令をデ
コードし実行してデータを処理する速さは命令とオペラ
ンドを主メモリからCPUに移すことができる速さより
大きい。この不整合から生ずる問題を軽減しようとして
、コンピュータ・システムの多くはCPUと主メモリと
の間にキャッシュ・メモリすなわちバッファを備えてい
る。
CP U)と主メモリを備えている。CPUが命令をデ
コードし実行してデータを処理する速さは命令とオペラ
ンドを主メモリからCPUに移すことができる速さより
大きい。この不整合から生ずる問題を軽減しようとして
、コンピュータ・システムの多くはCPUと主メモリと
の間にキャッシュ・メモリすなわちバッファを備えてい
る。
キャッシュ・メモリは小形の高速バッファ・メモリであ
って、CPUが近い将来使用するであろうと信ぜられる
主メモリの内容の一部を一時的に保持するのに使用され
る。キャッシュ・メモリの主な目的はデータまたは命令
をフェッチするためメモリ・アクセスを行うのに必要な
時間を短くすることである。キャッシュ・メモリに入っ
ている情報は主メモリに入っている情報よりはるかに短
い時間でアクセスできる。したがって、キャッシュ・メ
モリを備えたCPUにおいては、命令やオペランドのフ
ェッチや格納を待つのに必要とする時間ははるかに少く
てすむ。たとえば、典型的な大形高速コンピュータにお
いて、主メモリは300から600ナノ秒でアクセスす
ることができるが他方キャッシュ・メモリからは情報を
50から100ナノ秒で得ることができる。このような
機械では、キャッシュ・メモリは実質上実行速度を非常
に増すが、処理装置の性能は、キャッシュ・メモリのア
クセス時間のため命令実行速度の点で未だに制限されて
いる。更に一層命令実行の速さを増すにはキャッシュ・
メモリのアクセス時間を更に減らせばよい。
って、CPUが近い将来使用するであろうと信ぜられる
主メモリの内容の一部を一時的に保持するのに使用され
る。キャッシュ・メモリの主な目的はデータまたは命令
をフェッチするためメモリ・アクセスを行うのに必要な
時間を短くすることである。キャッシュ・メモリに入っ
ている情報は主メモリに入っている情報よりはるかに短
い時間でアクセスできる。したがって、キャッシュ・メ
モリを備えたCPUにおいては、命令やオペランドのフ
ェッチや格納を待つのに必要とする時間ははるかに少く
てすむ。たとえば、典型的な大形高速コンピュータにお
いて、主メモリは300から600ナノ秒でアクセスす
ることができるが他方キャッシュ・メモリからは情報を
50から100ナノ秒で得ることができる。このような
機械では、キャッシュ・メモリは実質上実行速度を非常
に増すが、処理装置の性能は、キャッシュ・メモリのア
クセス時間のため命令実行速度の点で未だに制限されて
いる。更に一層命令実行の速さを増すにはキャッシュ・
メモリのアクセス時間を更に減らせばよい。
キャッシュ・メモリは一つ以上のデータ・ワードの多く
のブロックから構成されている。各ブロックには、それ
が主メモリのどのブロックのコピーであるかを一意に識
別するアドレス・タグが関連付けられている。処理装置
がメモリ参照を行うごとに、キャッシュはアドレス・タ
グの比較を行って要求されたデータのコピーがその内に
あるかを調べる。コピーがあれば、そのデータを供給す
る。コピーがなければ、主メモリから対応するブロック
を検索してキャッシュに格納されているブロックの一つ
を置き換えてから、データを処理装置に供給する。
のブロックから構成されている。各ブロックには、それ
が主メモリのどのブロックのコピーであるかを一意に識
別するアドレス・タグが関連付けられている。処理装置
がメモリ参照を行うごとに、キャッシュはアドレス・タ
グの比較を行って要求されたデータのコピーがその内に
あるかを調べる。コピーがあれば、そのデータを供給す
る。コピーがなければ、主メモリから対応するブロック
を検索してキャッシュに格納されているブロックの一つ
を置き換えてから、データを処理装置に供給する。
キャッシュ・メモリの設計を最適化するには一般に4つ
の局面がある。
の局面がある。
(1)メモリ参照の情報がキャッシュ内に見出される確
率(いわゆるヒツト率)を最大にすること。
率(いわゆるヒツト率)を最大にすること。
(2) 実際にキャッシュ内にある情報にアクセスす
るの′に必要な時間(アクセス時間)を最小にすること
。
るの′に必要な時間(アクセス時間)を最小にすること
。
(3)キャッシュ・ミスによる遅れを最小にすること。
(4)主メモリを更新し、また多重キャッシュの整合性
を維持するためのオーバーヘッドを最小にすること。
を維持するためのオーバーヘッドを最小にすること。
これらの目的はすべて価格の制約のもとて且つパラメー
タ間の相互関係、たとえば、ヒント率とアクセス時間と
の間のトレード・オフを考慮して行わなければならない
。
タ間の相互関係、たとえば、ヒント率とアクセス時間と
の間のトレード・オフを考慮して行わなければならない
。
キャッシュ・メモリが大きくなれば、必要な情報がその
中に見出される確率が大きくなることは明らかである。
中に見出される確率が大きくなることは明らかである。
ただし、キャッシュの大きさはいくつかの理由から無制
限に拡張することはできない。その理由には、多くの機
械、特に小形機械では最も重要な理由である価格の問題
、キャッシュは基板や筐体に入りきらなければならない
という物理的な大きさの問題、またキャッシュが大きく
なればアクセス時間が遅くなるという問題がある。
限に拡張することはできない。その理由には、多くの機
械、特に小形機械では最も重要な理由である価格の問題
、キャッシュは基板や筐体に入りきらなければならない
という物理的な大きさの問題、またキャッシュが大きく
なればアクセス時間が遅くなるという問題がある。
情報は一般にキャッシュから連想的に検索されてヒツト
したか確認される。ただし、大きな連想メモリは非常に
高価で且つ幾分のろい。初期のキCPUに遅れずに従っ
て行くのに必要なアクセス時間にするために、キャッシ
ュの大きさが制限され、ヒツト率はむしろ小さくなった
。
したか確認される。ただし、大きな連想メモリは非常に
高価で且つ幾分のろい。初期のキCPUに遅れずに従っ
て行くのに必要なアクセス時間にするために、キャッシ
ュの大きさが制限され、ヒツト率はむしろ小さくなった
。
もっと最近になって、キャッシュ・メモリはセントと呼
ばれるもっと小さな連想メモリのグループに組織化され
た。各セットには、セント・サイズと呼ばれる多数のロ
ケーションがある。Lセットに分割された、サイズmの
キャッシュの場合、各セットにはS = m / Lの
ロケーションがある。
ばれるもっと小さな連想メモリのグループに組織化され
た。各セットには、セント・サイズと呼ばれる多数のロ
ケーションがある。Lセットに分割された、サイズmの
キャッシュの場合、各セットにはS = m / Lの
ロケーションがある。
主メモリのアドレスがキャッシュにマツプされると、そ
のアドレスはLセットのどれかに現われる。
のアドレスはLセットのどれかに現われる。
キャッシュのサイズを固定して考えた場合、各セットを
並列に捜索すればアクセス時間をL倍改善することがで
きる。しかしながら、必要な連想捜索を完了する時間は
やはり不必要に長すぎる。
並列に捜索すればアクセス時間をL倍改善することがで
きる。しかしながら、必要な連想捜索を完了する時間は
やはり不必要に長すぎる。
今までのキャッシュ・メモリの動作は、特定のメモリ・
ロケーションが参照されたのだから、そのロケーション
およびこれに非常に近いロケーションは近い将来アクセ
スされる可能性が非常に大きい、という仮定に基いてき
た。これを局所性と呼ぶことが多い。局所性には二つの
局面、すなわち時間的性質と空間的性質がある。短い期
間では、プログラムのメモリ参照はそのアドレス空間に
非一様的にばらつくが、アドレス空間中でよくアクセス
される部分は長期間はとんど同じままになっている。こ
の最初の性質は、一時的局所性(tem−poral
1ocality) 、または時間による局所性と呼ぶ
が、近い将来使用することになる情報は既に使用されて
いる可能性があるということを意味する。
ロケーションが参照されたのだから、そのロケーション
およびこれに非常に近いロケーションは近い将来アクセ
スされる可能性が非常に大きい、という仮定に基いてき
た。これを局所性と呼ぶことが多い。局所性には二つの
局面、すなわち時間的性質と空間的性質がある。短い期
間では、プログラムのメモリ参照はそのアドレス空間に
非一様的にばらつくが、アドレス空間中でよくアクセス
される部分は長期間はとんど同じままになっている。こ
の最初の性質は、一時的局所性(tem−poral
1ocality) 、または時間による局所性と呼ぶ
が、近い将来使用することになる情報は既に使用されて
いる可能性があるということを意味する。
この種の挙動は、データと命令を共に再使用する、プロ
グラム・ループのような、ある種のデータ構造から予想
することができる。第二の性質は、空間的な局所性であ
る。この性質が意味しているのは、アドレス空間中の使
用される部分は、−iにそのアドレス空間、内の、かな
りわずかな数の個々には連続しているセグメントから構
成されているということである。したがって、空間的局
所性は近い将来のプログラムの参照の軌跡はこの参照の
現在の軌跡に近いものになりそうだということを意味す
る。この種の挙動は一般的なプログラム構造の知識から
予想することができる。お互いに関連するデータ項目(
変数、アレイ)は普通、いつ用された部分を保持してい
るので、局所性は、必要な情報もキャッシュ内に見出さ
れることになりそうであるということを意味している。
グラム・ループのような、ある種のデータ構造から予想
することができる。第二の性質は、空間的な局所性であ
る。この性質が意味しているのは、アドレス空間中の使
用される部分は、−iにそのアドレス空間、内の、かな
りわずかな数の個々には連続しているセグメントから構
成されているということである。したがって、空間的局
所性は近い将来のプログラムの参照の軌跡はこの参照の
現在の軌跡に近いものになりそうだということを意味す
る。この種の挙動は一般的なプログラム構造の知識から
予想することができる。お互いに関連するデータ項目(
変数、アレイ)は普通、いつ用された部分を保持してい
るので、局所性は、必要な情報もキャッシュ内に見出さ
れることになりそうであるということを意味している。
Sm1th、A。
Jo、Cache Memoriess ACM Co
IIlputing 5urveys 。
IIlputing 5urveys 。
14 : 3 (1982年9月) 、PP、473〜
530を参照。
530を参照。
キャッシュが、上述のように、複数個のセットを備えて
いる場合には、キャッシュ・ミスが起ったとき、キャッ
シュはいくつかの情報ブロックの中のどれを置換えて主
メモリから検索される新しいブロック用の空き間を作る
かを決めなければならない。ブロックを置換える時期を
決めるとき、キャッシュが違えば使用する置換4方式も
異なる。
いる場合には、キャッシュ・ミスが起ったとき、キャッ
シュはいくつかの情報ブロックの中のどれを置換えて主
メモリから検索される新しいブロック用の空き間を作る
かを決めなければならない。ブロックを置換える時期を
決めるとき、キャッシュが違えば使用する置換4方式も
異なる。
最も普通に使用される置換為方式はL RU (lea
strecently used)である。LRU置換
置換式方式れば、特定のインデクスを持つブロックのグ
ループごとに、キャッシュはこれらのブロックが最後に
アクセスされた順序を常に記録しているいくつかの状態
ビットを維持している。ブロックの一つがアクセスされ
るごとに、最も最近に使用されたことがそのブロックに
ついてマークされ、これにしりのための空き間を作るた
めに置換えられるブロックは、最後のアクセスの時点が
最も古いブロックである。
strecently used)である。LRU置換
置換式方式れば、特定のインデクスを持つブロックのグ
ループごとに、キャッシュはこれらのブロックが最後に
アクセスされた順序を常に記録しているいくつかの状態
ビットを維持している。ブロックの一つがアクセスされ
るごとに、最も最近に使用されたことがそのブロックに
ついてマークされ、これにしりのための空き間を作るた
めに置換えられるブロックは、最後のアクセスの時点が
最も古いブロックである。
使用されるその他の置換寛方式は先入れ先出しくFIF
O)とランダム置換えである。これらの動作はその命名
法から自明である。
O)とランダム置換えである。これらの動作はその命名
法から自明である。
しかしながら、上述の仮定とは逆に、すべてのコンピュ
ータ・データ構造が同種類のデータ局所性を備えている
わけではない。データ・スタックあるいはシーケンシャ
ル・データのような、成る単純な構造では、LRU置換
置換式方式適ではない。このように、最も参照されると
思われるデータは最も最近参照されたものまたはそのデ
ータに物理的アドレスで近隣しているものであるという
基本的仮定にしたがって構成されている、過去に使用さ
れたキャッシュ・メモリ構造では、標準データ置換(方
式から逸脱した方式でのキャッシュ・メモリ動作に関す
る準備が施されていない。
ータ・データ構造が同種類のデータ局所性を備えている
わけではない。データ・スタックあるいはシーケンシャ
ル・データのような、成る単純な構造では、LRU置換
置換式方式適ではない。このように、最も参照されると
思われるデータは最も最近参照されたものまたはそのデ
ータに物理的アドレスで近隣しているものであるという
基本的仮定にしたがって構成されている、過去に使用さ
れたキャッシュ・メモリ構造では、標準データ置換(方
式から逸脱した方式でのキャッシュ・メモリ動作に関す
る準備が施されていない。
キャッシュ・メモリへのアクセス時間を最小にするのが
本発明の目的である。キャッシュ・メモリの動作に柔軟
性を与え、そうすべきだと保証されたときには、キャッ
シュが標準置換波力式から−i効率的なデータ置l′I
A前方式に切替えることができるようにすることも本発
明の目的である。
本発明の目的である。キャッシュ・メモリの動作に柔軟
性を与え、そうすべきだと保証されたときには、キャッ
シュが標準置換波力式から−i効率的なデータ置l′I
A前方式に切替えることができるようにすることも本発
明の目的である。
本発明の一実施例によれば、本発明のこれらのおよび他
の目的は、キャッシュ・メモリに提示される各命令にキ
ャッシュ制御指示子(cache controlsp
ecif 1er)を入れることにより達成される。格
納命令またはロード命令中のキャッシュ制御指示子が与
えられたとき、キャッシュは命令内のキャッシュ制御指
示子を識別し、いくつかの置換ψ方式の一つをこのキャ
ッシュ制御指示されたように実行する。
の目的は、キャッシュ・メモリに提示される各命令にキ
ャッシュ制御指示子(cache controlsp
ecif 1er)を入れることにより達成される。格
納命令またはロード命令中のキャッシュ制御指示子が与
えられたとき、キャッシュは命令内のキャッシュ制御指
示子を識別し、いくつかの置換ψ方式の一つをこのキャ
ッシュ制御指示されたように実行する。
命令にキャッシュ制御指示子を埋込むことにより、キャ
ッシュはスタックやシーケンシャル・データ構造を適切
に処理することができ、これによりキャッシュ性能が増
す。キャッシュはまた主メモリからデータを何時プリフ
ェッチしておくのが有利であるかに関して「ヒント」を
受取ることができる。
ッシュはスタックやシーケンシャル・データ構造を適切
に処理することができ、これによりキャッシュ性能が増
す。キャッシュはまた主メモリからデータを何時プリフ
ェッチしておくのが有利であるかに関して「ヒント」を
受取ることができる。
第1図はキャッシュ・メモリを組込んだコンピュータ・
システムを示す。CPUIIは主メモリ13および入出
力チャンネル(Ilo)15とバス17を経由して通信
する。CP Ullはデータを処理する命令をフェッチ
し、デコードし、実行する処理装置19を備えている。
システムを示す。CPUIIは主メモリ13および入出
力チャンネル(Ilo)15とバス17を経由して通信
する。CP Ullはデータを処理する命令をフェッチ
し、デコードし、実行する処理装置19を備えている。
上述のとうり、コンピュータ・システムが使用する命令
およびデータを全てCPU1lに格納するのは実際的で
はないから、データと命令は、主メモリ13に格納され
、プログラムまたはルーチンの実行中要求されると処理
装置19に移され、プログラムまたはルーチンが終了し
てから主メモ1月3に戻される。
およびデータを全てCPU1lに格納するのは実際的で
はないから、データと命令は、主メモリ13に格納され
、プログラムまたはルーチンの実行中要求されると処理
装置19に移され、プログラムまたはルーチンが終了し
てから主メモ1月3に戻される。
主メモリ13へのアクセスは処理装置19の動作と比較
すると比較的のろい。処理装置19が命令またはデータ
が必要であるたびに主メモリのアクセスが完了するのを
待たなければならない場合には、その実行速度はかなり
遅くなる。したがって、アクセス時間を処理装置19の
必要とするものに一層よく適合させるために、バッファ
・メモリすなわちキャッシュ・メモリ21は限定された
数の命令とデータを格納している。
すると比較的のろい。処理装置19が命令またはデータ
が必要であるたびに主メモリのアクセスが完了するのを
待たなければならない場合には、その実行速度はかなり
遅くなる。したがって、アクセス時間を処理装置19の
必要とするものに一層よく適合させるために、バッファ
・メモリすなわちキャッシュ・メモリ21は限定された
数の命令とデータを格納している。
キャッシュ・メモリ21は主メモリ13よりはるかに小
さいから、アクセス速度を速くするように経済的に作り
上げることができる。それにもかかわらず、キャッシュ
・メモリへのアクセス時間とキャッシュの大きさとの間
にはやはりトレード・オフが存在する。上述のように、
キャッシュ・メモリが大きくなるにしたがって一層高価
になり、またキャッシュ・メモリへのアクセス時間が増
大する。したかって、キャッシュ・メモリ21を非常に
大きくしてヒント率を高くした場合には、主メモリへの
参照は非常に少くなるが、処理装置は、たとえキャッシ
ュへヒツトした場合でも、アクセス時間の増大により遅
くなることがある。したがって所与の大きさと構造のキ
ャッシュ・メモリに関してヒツト率を最大にするのが望
ましい。
さいから、アクセス速度を速くするように経済的に作り
上げることができる。それにもかかわらず、キャッシュ
・メモリへのアクセス時間とキャッシュの大きさとの間
にはやはりトレード・オフが存在する。上述のように、
キャッシュ・メモリが大きくなるにしたがって一層高価
になり、またキャッシュ・メモリへのアクセス時間が増
大する。したかって、キャッシュ・メモリ21を非常に
大きくしてヒント率を高くした場合には、主メモリへの
参照は非常に少くなるが、処理装置は、たとえキャッシ
ュへヒツトした場合でも、アクセス時間の増大により遅
くなることがある。したがって所与の大きさと構造のキ
ャッシュ・メモリに関してヒツト率を最大にするのが望
ましい。
本発明の方法をもっと完全に説明するには、キャッシュ
・メモリ21の構造を理解することが必要である。第2
図は複数のセットA−Nを備えたキャッシュ・メモリを
示す。各セットはロケーションまたはブロックのプレイ
から成り、これをインデクス31と記しである。各ブロ
ックにはデータ33と主メモ1月3の中の同じデータの
コピーのアドレスに対応するアドレス・タグ35が入っ
ている。好ましい実施例では、データ33の各ブロック
には4ワード入っている。この4ワードのブロックはデ
ータがキャッシュ・メモリ2工と主メモリ13との間で
交換される単位であり、またデータがキャッシュ21で
インデクスされ、取出され、置換えられる単位でもある
。ブロックに入れるワード数はもっと少く、あるいはも
っと多くすることができる。
・メモリ21の構造を理解することが必要である。第2
図は複数のセットA−Nを備えたキャッシュ・メモリを
示す。各セットはロケーションまたはブロックのプレイ
から成り、これをインデクス31と記しである。各ブロ
ックにはデータ33と主メモ1月3の中の同じデータの
コピーのアドレスに対応するアドレス・タグ35が入っ
ている。好ましい実施例では、データ33の各ブロック
には4ワード入っている。この4ワードのブロックはデ
ータがキャッシュ・メモリ2工と主メモリ13との間で
交換される単位であり、またデータがキャッシュ21で
インデクスされ、取出され、置換えられる単位でもある
。ブロックに入れるワード数はもっと少く、あるいはも
っと多くすることができる。
これらパラメータはメモリ装置の設計選択の問題であり
、本発明の原理は可能な広範囲の構成に適用することが
できる。データ33とアドレス・タグ35に加えて、キ
ャッシュ・メモリ内の各ブロックは関連する二つの1ビ
ツト状態フラグ「有効(valid)Jと「書込み(d
irty)Jとを備えている。
、本発明の原理は可能な広範囲の構成に適用することが
できる。データ33とアドレス・タグ35に加えて、キ
ャッシュ・メモリ内の各ブロックは関連する二つの1ビ
ツト状態フラグ「有効(valid)Jと「書込み(d
irty)Jとを備えている。
キャッシュ・メモリにはまたキャッシュ・メモリ内の同
じインデクスに対応するブロックの全てに対する一層の
LRU状態ビットを備えている。
じインデクスに対応するブロックの全てに対する一層の
LRU状態ビットを備えている。
有効ビット37はブロックが「有効」データ、すなわち
、最新のデータを含んでいる場合にかぎりセットされる
。
、最新のデータを含んでいる場合にかぎりセットされる
。
書込ビット38がセットされるのは、対応するブロック
がキャッシュ・メモリ内に移された以降、処理装置19
がキャッシュ・メモリ内のそのアドレスに書込みを行な
った場合である。処理装置19がキャッシュ・メモリ2
1に書込みを行なうごとにこのキャッシュ・メモリ21
が主メモリ13を更新しなければ、キャッシュは主メモ
リが同じブロック・アドレスに対して持っているよりも
もっと最近版 ′のデータを持っている。書込みビッ
ト38がセットされている場合には、キャッシュ・メモ
リ21の中の対応するブロックがキャッシュ・メモリが
らスワップ・アウトされるとき、このブロックに現在入
っているデータを主メモリに書き込み戻すことにより主
メモリを更新しなければならないことを示している。
がキャッシュ・メモリ内に移された以降、処理装置19
がキャッシュ・メモリ内のそのアドレスに書込みを行な
った場合である。処理装置19がキャッシュ・メモリ2
1に書込みを行なうごとにこのキャッシュ・メモリ21
が主メモリ13を更新しなければ、キャッシュは主メモ
リが同じブロック・アドレスに対して持っているよりも
もっと最近版 ′のデータを持っている。書込みビッ
ト38がセットされている場合には、キャッシュ・メモ
リ21の中の対応するブロックがキャッシュ・メモリが
らスワップ・アウトされるとき、このブロックに現在入
っているデータを主メモリに書き込み戻すことにより主
メモリを更新しなければならないことを示している。
LRU状態ビット39は対応するブロックが最近最も長
い間使用されていなかった、すなわち置換えの対象とし
て最も適切であるかどうがを識別する。上に述べたとう
り、LRU置換置換式方式れば、キャッシュ内のブロッ
クの一つにアクセスするごとに、最も最近使用されたこ
とがマークされ、他のもののLRU状態ビットがこれに
したがって調節される。
い間使用されていなかった、すなわち置換えの対象とし
て最も適切であるかどうがを識別する。上に述べたとう
り、LRU置換置換式方式れば、キャッシュ内のブロッ
クの一つにアクセスするごとに、最も最近使用されたこ
とがマークされ、他のもののLRU状態ビットがこれに
したがって調節される。
処理装置19がメモリ参照を行うたびに、キャッシュ・
メモリ21を捜索して要求データのコピーが入っている
か調べる。入っていなければ、データを主メモi月3か
らブロックとして取出し、処理装置19に供給し、キャ
ッシュ21に既に入っているブロックの一つと置換えて
格納しなければならない。
メモリ21を捜索して要求データのコピーが入っている
か調べる。入っていなければ、データを主メモi月3か
らブロックとして取出し、処理装置19に供給し、キャ
ッシュ21に既に入っているブロックの一つと置換えて
格納しなければならない。
もし置換えられるブロックの書込みビットがセントされ
ている、すなわち、処理装置19がキャッシュ・メモリ
中のそのブロックに書込みを行なっていれば、そのブロ
ックを主メモリ13の適切なアドレスに書き戻して主メ
モリを更新し、データの完全性を維持しなければならな
い。
ている、すなわち、処理装置19がキャッシュ・メモリ
中のそのブロックに書込みを行なっていれば、そのブロ
ックを主メモリ13の適切なアドレスに書き戻して主メ
モリを更新し、データの完全性を維持しなければならな
い。
本発明によれば、第3図に示すとうり、処理装置19が
実行する命令で、キャッシュ・メモリ21が処理しなけ
ればならないデータ要求を発生する命令は、キャッシュ
制御指示子を含むいくつかのビットを備えている。キャ
ッシュ制御指示子は命令が参照するデータの種類につい
てキャッシュ・メモリに知らせ、したがって複数の置換
濾方式のどれをキャッシュ・メモリ21のデータの置換
えに使用すべきかを、キャッシュ・メモリに知らせるよ
うにコード化される。
実行する命令で、キャッシュ・メモリ21が処理しなけ
ればならないデータ要求を発生する命令は、キャッシュ
制御指示子を含むいくつかのビットを備えている。キャ
ッシュ制御指示子は命令が参照するデータの種類につい
てキャッシュ・メモリに知らせ、したがって複数の置換
濾方式のどれをキャッシュ・メモリ21のデータの置換
えに使用すべきかを、キャッシュ・メモリに知らせるよ
うにコード化される。
処理装置19が発生する命令41は、それを用いてアド
レス・タグ35° (これは対応するタグ35に関して
キャッシュ21を捜索するのに使用される)とインデク
ス31′ (これはキャッシュ21内の所要のインデク
ス31を識別するのに使用される)を計算することがで
きる情報と、命令コード・フィールド43(これはキャ
ッシュ・メモリ21における動作を制御するのに使用さ
れる)と、キャッシュ・メモリからデータを交換するの
に使用する方法を規定するキャッシュ制御指示子45を
含んでいる。
レス・タグ35° (これは対応するタグ35に関して
キャッシュ21を捜索するのに使用される)とインデク
ス31′ (これはキャッシュ21内の所要のインデク
ス31を識別するのに使用される)を計算することがで
きる情報と、命令コード・フィールド43(これはキャ
ッシュ・メモリ21における動作を制御するのに使用さ
れる)と、キャッシュ・メモリからデータを交換するの
に使用する方法を規定するキャッシュ制御指示子45を
含んでいる。
本発明の好ましい実施例においては、命令はこのような
キャッシュ制御指示子4つをコード化することができる
。これらは通常データ、スタック・データ、シーケンシ
ャル・データ、およびブリフェッチである。キャッシュ
はこれらキャッシュ制御指示子に応答し、識別されたデ
ータの種類に最も適する置換及方式を選択する。
キャッシュ制御指示子4つをコード化することができる
。これらは通常データ、スタック・データ、シーケンシ
ャル・データ、およびブリフェッチである。キャッシュ
はこれらキャッシュ制御指示子に応答し、識別されたデ
ータの種類に最も適する置換及方式を選択する。
通常データの場合には、通常キャッシュ制御指示子が使
用され、キャッシュ・メモリは標準置換方式、この場合
はLRU、にしたがって動作する。
用され、キャッシュ・メモリは標準置換方式、この場合
はLRU、にしたがって動作する。
使用することができる他の標準置換方式はたとえば先入
れ先出しくFIF○)置換えやランダム置換えである。
れ先出しくFIF○)置換えやランダム置換えである。
スタック・キャッシュ制御指示子はメモリ内の低位アド
レスから上へ成長するスタック・データ構造に対して使
用される。その−例は第4図に示す後入れ先出しくL
I FO)スタック構造47である。第4図に示すよう
に、スタック・ポインタ49がスタックの最上部のアド
レスを常に措している。
レスから上へ成長するスタック・データ構造に対して使
用される。その−例は第4図に示す後入れ先出しくL
I FO)スタック構造47である。第4図に示すよう
に、スタック・ポインタ49がスタックの最上部のアド
レスを常に措している。
スタック・ポインタ49より下の、領域51内にあるア
ドレスのデータは正当データである。スタック・ポイン
タ49より上の、領域53内にあるアドレスのデータは
無効である。処理装置19は現在有効であると考えられ
るデータ、すなわちスタック・ポインタ49より下の、
データにアクセスすることができる。スタック47内の
アドレスはキャッシュ・メモリ21内のインデクス付き
ロケーション31にマツプされ、第4図に示す二重線5
5による分割で示したように、キャッシュ・メモリ21
内のブロックにドに対する格納であり、しかもキャッシ
ュ・ミスが起った場合には、新しいブロックをスタック
上およびキャッシュ・メモリ内に割当てなければならな
い。新しいデータは古いデータが読取られる前に所定ブ
ロックに書き込まれると見なされる。
ドレスのデータは正当データである。スタック・ポイン
タ49より上の、領域53内にあるアドレスのデータは
無効である。処理装置19は現在有効であると考えられ
るデータ、すなわちスタック・ポインタ49より下の、
データにアクセスすることができる。スタック47内の
アドレスはキャッシュ・メモリ21内のインデクス付き
ロケーション31にマツプされ、第4図に示す二重線5
5による分割で示したように、キャッシュ・メモリ21
内のブロックにドに対する格納であり、しかもキャッシ
ュ・ミスが起った場合には、新しいブロックをスタック
上およびキャッシュ・メモリ内に割当てなければならな
い。新しいデータは古いデータが読取られる前に所定ブ
ロックに書き込まれると見なされる。
したがって、この場合、主メモリからデータを検索する
必要はない。キャッシュ・メモリはアドレス・タグを初
期設定し、このブロックを最も最近使用されたブロック
であるとマークし、格納を行う。加えて、起り得る防護
侵犯(security vio−1ation)を防
ぐため、ブロックは格納を行う前に定数またはでたらめ
なデータで初期化されるようにする。
必要はない。キャッシュ・メモリはアドレス・タグを初
期設定し、このブロックを最も最近使用されたブロック
であるとマークし、格納を行う。加えて、起り得る防護
侵犯(security vio−1ation)を防
ぐため、ブロックは格納を行う前に定数またはでたらめ
なデータで初期化されるようにする。
!
スタック47への参照があるブロック内の最初のワード
へのロードである場合には、スタック上の空き間の割当
てが取消され、このブロック内のデータはもはや必要が
ないと見なされる。したがって、キャッシュ21は通常
のロードを行い、置換えのためブロックがきれいであり
(書込みが行なわれていない)、置換えに最も適格で
あること、すなわち最適量も長い間使用されていないこ
とをマークする。
へのロードである場合には、スタック上の空き間の割当
てが取消され、このブロック内のデータはもはや必要が
ないと見なされる。したがって、キャッシュ21は通常
のロードを行い、置換えのためブロックがきれいであり
(書込みが行なわれていない)、置換えに最も適格で
あること、すなわち最適量も長い間使用されていないこ
とをマークする。
標準置換方式をスタック用のものに変更すれば、無効な
スタック・データをキャッシュに移すことが回避され、
したがって、先ず第1にはデータをキャッシュに移すの
に必要な時間が節約され、そればかりでなく、後にこれ
をキャッシュから取除きアドレスを初期設定するのに必
要な時間も節約される。
スタック・データをキャッシュに移すことが回避され、
したがって、先ず第1にはデータをキャッシュに移すの
に必要な時間が節約され、そればかりでなく、後にこれ
をキャッシュから取除きアドレスを初期設定するのに必
要な時間も節約される。
シーケンシャル・キャッシュ制御指示子はブロック移動
またはテキストの走査に用いられるもののようなシーケ
ンシャル・データ・アクセス・パターンに使用される。
またはテキストの走査に用いられるもののようなシーケ
ンシャル・データ・アクセス・パターンに使用される。
ロードまたは格納動作がブロックの最後のアドレスを参
照するときは、それは今後しばらくの間ではそのブロッ
クへの最後の参照となると見なされる。したがって、キ
ャッシュ・メモリは通常のロードまたは格納を行い、ま
たこのブロックは置換えに最も適格であるとマークされ
る。格納命令がブロック内の最初のワードにアクセスし
、且つキャッシュ・ミスが起った場合には、このブロッ
ク全体には今後重ね書きが行なわれ、それ故このブロッ
クを主メモリ13から読取る必要は無いと見なされる。
照するときは、それは今後しばらくの間ではそのブロッ
クへの最後の参照となると見なされる。したがって、キ
ャッシュ・メモリは通常のロードまたは格納を行い、ま
たこのブロックは置換えに最も適格であるとマークされ
る。格納命令がブロック内の最初のワードにアクセスし
、且つキャッシュ・ミスが起った場合には、このブロッ
ク全体には今後重ね書きが行なわれ、それ故このブロッ
クを主メモリ13から読取る必要は無いと見なされる。
代りに、あるブロックがキャッシュ内で開放され(fr
eed up) 、安全防護のために初期設定され、最
も最近使用されたこと、有効および書込みがマークされ
る(スタック格納と同じ)。オペレーティング・システ
ムは、他のデータがシーケンシャル・データ構造の最後
のブロックを共有しないようにしなければならない。さ
もなければ、この手順によりデータが失なわれてしまう
ことがある。
eed up) 、安全防護のために初期設定され、最
も最近使用されたこと、有効および書込みがマークされ
る(スタック格納と同じ)。オペレーティング・システ
ムは、他のデータがシーケンシャル・データ構造の最後
のブロックを共有しないようにしなければならない。さ
もなければ、この手順によりデータが失なわれてしまう
ことがある。
ブリフェッチ・キャッシュ制御指示子は、ブロックへの
ロードまたは格納において、次のブロックが近い将来ア
クセスされる可能性がかなり高いことを示すのに使用さ
れる。したがってキャッジプリフェッチは指示子を有す
るブロックの始まり近くで、中間で、あるいは終りで生
ずる。
ロードまたは格納において、次のブロックが近い将来ア
クセスされる可能性がかなり高いことを示すのに使用さ
れる。したがってキャッジプリフェッチは指示子を有す
るブロックの始まり近くで、中間で、あるいは終りで生
ずる。
以上説明したように、本発明によれば、使用されるデー
タ構造やプログラムの性質に基いてR通なキャッシュ・
メモリ置換方式を動的に選択できるので、ヒツト率が向
上するという効果がある。
タ構造やプログラムの性質に基いてR通なキャッシュ・
メモリ置換方式を動的に選択できるので、ヒツト率が向
上するという効果がある。
第1図は本発明を適用することができるコンピュータ・
システムの一例を示す図、第2図は第1図中のキャッシ
ュ・メモリの構成例を示す図、第3図は本発明を適用し
たキャッシュ・メモリの動作を説明する図、第4図は本
発明の動作をスタックに関して説明するための図である
。 11:CPU、13:生メモリ。 19:処理装置、21:キャッシュ・メモリ。 41:命令、45:キャッシュ制御指示子。 もットB 之ノ/−N〆
θ 2
システムの一例を示す図、第2図は第1図中のキャッシ
ュ・メモリの構成例を示す図、第3図は本発明を適用し
たキャッシュ・メモリの動作を説明する図、第4図は本
発明の動作をスタックに関して説明するための図である
。 11:CPU、13:生メモリ。 19:処理装置、21:キャッシュ・メモリ。 41:命令、45:キャッシュ制御指示子。 もットB 之ノ/−N〆
θ 2
Claims (1)
- 実行される命令語中の所定のフィールドの値に応答して
キャッシュ・メモリのブロック置換アルゴリズムを選択
するキャッシュ・メモリ制御方式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US87964986A | 1986-06-27 | 1986-06-27 | |
US879649 | 1992-05-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS638851A true JPS638851A (ja) | 1988-01-14 |
JPH0743671B2 JPH0743671B2 (ja) | 1995-05-15 |
Family
ID=25374588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62159553A Expired - Lifetime JPH0743671B2 (ja) | 1986-06-27 | 1987-06-26 | キャッシュ・メモリ制御方式 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0250702B1 (ja) |
JP (1) | JPH0743671B2 (ja) |
CA (1) | CA1279731C (ja) |
DE (1) | DE3787129T2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004303232A (ja) * | 2003-03-20 | 2004-10-28 | Matsushita Electric Ind Co Ltd | データメモリキャッシュ装置及びデータメモリキャッシュシステム |
JP2008544422A (ja) * | 2005-06-27 | 2008-12-04 | エービー イニティオ ソフトウェア コーポレーション | メモリページ管理 |
JP2010244205A (ja) * | 2009-04-02 | 2010-10-28 | Fujitsu Ltd | コンパイラプログラムおよびコンパイラ装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0496439B1 (en) * | 1991-01-15 | 1998-01-21 | Koninklijke Philips Electronics N.V. | Computer system with multi-buffer data cache and method therefor |
JP2618149B2 (ja) * | 1991-04-22 | 1997-06-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | キャッシュ内のデータ記憶スペースを管理する方法及びキャッシュ内でページ置換を行う装置 |
EP0752644A3 (en) * | 1995-07-07 | 2001-08-22 | Sun Microsystems, Inc. | Memory management unit incorporating prefetch control |
EP0752645B1 (en) * | 1995-07-07 | 2017-11-22 | Oracle America, Inc. | Tunable software control of Harvard architecture cache memories using prefetch instructions |
US5991854A (en) * | 1996-07-01 | 1999-11-23 | Sun Microsystems, Inc. | Circuit and method for address translation, using update and flush control circuits |
US7930484B2 (en) * | 2005-02-07 | 2011-04-19 | Advanced Micro Devices, Inc. | System for restricted cache access during data transfers and method thereof |
US8606998B2 (en) | 2006-08-24 | 2013-12-10 | Advanced Micro Devices, Inc. | System and method for instruction-based cache allocation policies |
EP2192493A1 (en) * | 2008-11-28 | 2010-06-02 | ST Wireless SA | Method of paging on demand for virtual memory management in a processing system, and corresponding processing system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58159284A (ja) * | 1982-03-17 | 1983-09-21 | Nec Corp | バツフアメモリ制御方式 |
JPS59180876A (ja) * | 1983-03-31 | 1984-10-15 | Fujitsu Ltd | メモリ・アクセス制御方式 |
JPS6180440A (ja) * | 1984-09-28 | 1986-04-24 | Fujitsu Ltd | バツフアメモリ制御方式 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3898624A (en) * | 1973-06-14 | 1975-08-05 | Amdahl Corp | Data processing system with variable prefetch and replacement algorithms |
US4530055A (en) * | 1982-03-03 | 1985-07-16 | Sperry Corporation | Hierarchical memory system with variable regulation and priority of writeback from cache memory to bulk memory |
-
1986
- 1986-12-11 CA CA000525049A patent/CA1279731C/en not_active Expired - Lifetime
-
1987
- 1987-01-30 DE DE87101299T patent/DE3787129T2/de not_active Expired - Fee Related
- 1987-01-30 EP EP87101299A patent/EP0250702B1/en not_active Expired - Lifetime
- 1987-06-26 JP JP62159553A patent/JPH0743671B2/ja not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58159284A (ja) * | 1982-03-17 | 1983-09-21 | Nec Corp | バツフアメモリ制御方式 |
JPS59180876A (ja) * | 1983-03-31 | 1984-10-15 | Fujitsu Ltd | メモリ・アクセス制御方式 |
JPS6180440A (ja) * | 1984-09-28 | 1986-04-24 | Fujitsu Ltd | バツフアメモリ制御方式 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004303232A (ja) * | 2003-03-20 | 2004-10-28 | Matsushita Electric Ind Co Ltd | データメモリキャッシュ装置及びデータメモリキャッシュシステム |
JP2008544422A (ja) * | 2005-06-27 | 2008-12-04 | エービー イニティオ ソフトウェア コーポレーション | メモリページ管理 |
JP2010244205A (ja) * | 2009-04-02 | 2010-10-28 | Fujitsu Ltd | コンパイラプログラムおよびコンパイラ装置 |
Also Published As
Publication number | Publication date |
---|---|
EP0250702B1 (en) | 1993-08-25 |
DE3787129T2 (de) | 1994-03-31 |
EP0250702A3 (en) | 1990-04-25 |
JPH0743671B2 (ja) | 1995-05-15 |
CA1279731C (en) | 1991-01-29 |
EP0250702A2 (en) | 1988-01-07 |
DE3787129D1 (de) | 1993-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4928239A (en) | Cache memory with variable fetch and replacement schemes | |
US4774654A (en) | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory | |
US5091851A (en) | Fast multiple-word accesses from a multi-way set-associative cache memory | |
US6640283B2 (en) | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size | |
US5689679A (en) | Memory system and method for selective multi-level caching using a cache level code | |
EP0695996B1 (en) | Multi-level cache system | |
US5555392A (en) | Method and apparatus for a line based non-blocking data cache | |
EP1066566B1 (en) | Shared cache structure for temporal and non-temporal instructions and corresponding method | |
EP0667580B1 (en) | Cache System for a memory | |
US5737750A (en) | Partitioned single array cache memory having first and second storage regions for storing non-branch and branch instructions | |
US5353426A (en) | Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete | |
EP1149342B1 (en) | Method and apparatus for managing temporal and non-temporal data in a single cache structure | |
US4914582A (en) | Cache tag lookaside | |
JPH06348595A (ja) | キャッシュ装置 | |
US7237067B2 (en) | Managing a multi-way associative cache | |
US6643733B2 (en) | Prioritized content addressable memory | |
US6321328B1 (en) | Processor having data buffer for speculative loads | |
EP0604015A2 (en) | Cache control system | |
WO2001088716A1 (en) | Method for controlling cache system comprising direct-mapped cache and fully-associative buffer | |
JPS638851A (ja) | キャッシュ・メモリ制御方式 | |
US20020174304A1 (en) | Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit | |
EP1035477B1 (en) | Improved cache memory and system | |
US5926841A (en) | Segment descriptor cache for a processor | |
EP0741356A1 (en) | Cache architecture and method of operation | |
US6397298B1 (en) | Cache memory having a programmable cache replacement scheme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080515 Year of fee payment: 13 |