JPS60214059A - キヤツシユ機構 - Google Patents
キヤツシユ機構Info
- Publication number
- JPS60214059A JPS60214059A JP60015651A JP1565185A JPS60214059A JP S60214059 A JPS60214059 A JP S60214059A JP 60015651 A JP60015651 A JP 60015651A JP 1565185 A JP1565185 A JP 1565185A JP S60214059 A JPS60214059 A JP S60214059A
- Authority
- JP
- Japan
- Prior art keywords
- address
- cache
- directory
- entry
- stage
- 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
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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はデータ処理システムにおけるキャッシュの動作
に関し、さらに詳しく言えば、キャッシュへの情報でロ
ックの事前取出しの技術に関する。
に関し、さらに詳しく言えば、キャッシュへの情報でロ
ックの事前取出しの技術に関する。
データ処理システムにおいては、多くの場合、CPUの
作業記憶部と主記憶装置との間に高速緩衝記憶機構が具
備されている。この記憶機構は一般にキャッシュと呼ば
れる。こうして、主記憶装置からキャッシュへ事前に転
送されたデータおよび命令のサブセットを比較的高速に
アクセスすることができる。したがってデータ処理シス
テムの動作速度は改善される。主記憶装置とキャッシュ
との間のオペランドまたは命令の転送は、通常、ブロッ
クまたはラインと呼ばれる固定長の情報単位で行われる
。キャッシュへの転送の際のラインの選択、さらに、キ
ャッシュにおけるその場所(ただしキャッシュサブエリ
アへ事前に割り振られたクラスは除く)は個々のプログ
ラム、使用されるオペランド、およびプログラム実行中
に発生する事象に依存する。
作業記憶部と主記憶装置との間に高速緩衝記憶機構が具
備されている。この記憶機構は一般にキャッシュと呼ば
れる。こうして、主記憶装置からキャッシュへ事前に転
送されたデータおよび命令のサブセットを比較的高速に
アクセスすることができる。したがってデータ処理シス
テムの動作速度は改善される。主記憶装置とキャッシュ
との間のオペランドまたは命令の転送は、通常、ブロッ
クまたはラインと呼ばれる固定長の情報単位で行われる
。キャッシュへの転送の際のラインの選択、さらに、キ
ャッシュにおけるその場所(ただしキャッシュサブエリ
アへ事前に割り振られたクラスは除く)は個々のプログ
ラム、使用されるオペランド、およびプログラム実行中
に発生する事象に依存する。
キャッシュからの情報の検索ができるようにするために
、タグまたはラインアドレスのテーブルがキャッシュの
像であるディレクトリに保持される。キャッシュに存在
する各ラインはそのタグまたはアドレスを有し、このタ
グまたはアドレスはディレクトリの各自の位置に記憶さ
れる。いったんキャッシュが一杯になれば、新しい情報
は、古いブロックまだはラインの情報が削除されるか、
重ね書きされるときしかキャッシュに入れることはでき
ない。リプレースメント部分としてのラインの選択、お
よびキャッシュの内容変更後のディレクトリの更新には
一定の手順が必要である。
、タグまたはラインアドレスのテーブルがキャッシュの
像であるディレクトリに保持される。キャッシュに存在
する各ラインはそのタグまたはアドレスを有し、このタ
グまたはアドレスはディレクトリの各自の位置に記憶さ
れる。いったんキャッシュが一杯になれば、新しい情報
は、古いブロックまだはラインの情報が削除されるか、
重ね書きされるときしかキャッシュに入れることはでき
ない。リプレースメント部分としてのラインの選択、お
よびキャッシュの内容変更後のディレクトリの更新には
一定の手順が必要である。
キャッシュを使用してリプレースメントの選択およびブ
イレフ) IJの更新を行う機構を提供するシステムは
、これまでにも数多(存在する。
イレフ) IJの更新を行う機構を提供するシステムは
、これまでにも数多(存在する。
米国特許第4322975号はLRU (least
−recently−used )手法を用いて、キャ
ッシュミスが生じたときに主メモリから取り出されたデ
ータを記憶する場所(キャッシュ内の場所)を選択する
だめのキャッシュメモリ構成について記載するものであ
る。複数のキャッシュを有する多重プロセッサシステム
の動作を改善するために、キャッシュ内で使用可能なデ
ータのタグアドレスビットを記憶するディレクトリが、
各々のキャッシュに対し重複して設けられている。重複
した(2つの)ディレクトリは同じ内容、すなわち、現
にキャッシュに存するデータ(オペランド、命令)のタ
グ、を有する。一方のディレクトリは要求されたデータ
の検索用として普通に使用される。もう一方のディレク
トリはたとえばCPU Aに関連するキャッシュ内に記
憶されたデータのアドレスと、主メモリにおいてCPU
Bにより変更されたデータのアドレスと、の比較に使
用される。キャッシュに記憶されたCPU Aのデータ
は、それらが主メモリにおいて他のCPUによって変更
されたときに無効化される。重複ディレクトリは以上の
ようなプロセスのだめの手段である。
−recently−used )手法を用いて、キャ
ッシュミスが生じたときに主メモリから取り出されたデ
ータを記憶する場所(キャッシュ内の場所)を選択する
だめのキャッシュメモリ構成について記載するものであ
る。複数のキャッシュを有する多重プロセッサシステム
の動作を改善するために、キャッシュ内で使用可能なデ
ータのタグアドレスビットを記憶するディレクトリが、
各々のキャッシュに対し重複して設けられている。重複
した(2つの)ディレクトリは同じ内容、すなわち、現
にキャッシュに存するデータ(オペランド、命令)のタ
グ、を有する。一方のディレクトリは要求されたデータ
の検索用として普通に使用される。もう一方のディレク
トリはたとえばCPU Aに関連するキャッシュ内に記
憶されたデータのアドレスと、主メモリにおいてCPU
Bにより変更されたデータのアドレスと、の比較に使
用される。キャッシュに記憶されたCPU Aのデータ
は、それらが主メモリにおいて他のCPUによって変更
されたときに無効化される。重複ディレクトリは以上の
ようなプロセスのだめの手段である。
米国特許第4332010号は複数のクラスに細分され
たディレクトリを用いるキャッシュシステムについて記
載するものである。使用されるアドレスにおいては変換
可能な部分と変換不可能な部分とで部分的な重なりがあ
り、しかも、それはデータがキャッシュのどこに実際に
記憶されているかに依存するので、アクセスが試行され
たときに成る特定のクラスにミスが生じることもあれば
基本ヒツトが生じることもある(さらには、他のクラス
でシノニムヒツトが生じることもある)。
たディレクトリを用いるキャッシュシステムについて記
載するものである。使用されるアドレスにおいては変換
可能な部分と変換不可能な部分とで部分的な重なりがあ
り、しかも、それはデータがキャッシュのどこに実際に
記憶されているかに依存するので、アクセスが試行され
たときに成る特定のクラスにミスが生じることもあれば
基本ヒツトが生じることもある(さらには、他のクラス
でシノニムヒツトが生じることもある)。
この特許は、基本ヒラkが生じないときにシノニムヒツ
トを直ちに使用できるようディレクトりの全クラスを同
時にアドレス指定し探索することによって、シノニムヒ
ツトだけが生じたときに要する時間のロスの問題を解決
するものである。
トを直ちに使用できるようディレクトりの全クラスを同
時にアドレス指定し探索することによって、シノニムヒ
ツトだけが生じたときに要する時間のロスの問題を解決
するものである。
米国特許第1168541号はセットアソシアティブキ
ャッシュのためのリプレースメントシステムについて記
載するものである。セットアソシアティブキャッシュと
は共通のアドレスビットを有するデータのクラスに各々
関連するセットに細分されたキャッシュである。このシ
ステムはエージビット(agebit)を用して1セツ
トのLRUブロックを決定する。ブロックが参照される
たびごとに、エージピットが更新される。現にキャッシ
ュメモリに在るデータワードのアドレスビット部分を表
わすタグを記憶するために、ディレクトリ(タグバッフ
ァ)が具備されている。したがってこの特許はディレク
トリおよびエージピットの更新に関する詳細を示すもの
である。
ャッシュのためのリプレースメントシステムについて記
載するものである。セットアソシアティブキャッシュと
は共通のアドレスビットを有するデータのクラスに各々
関連するセットに細分されたキャッシュである。このシ
ステムはエージビット(agebit)を用して1セツ
トのLRUブロックを決定する。ブロックが参照される
たびごとに、エージピットが更新される。現にキャッシ
ュメモリに在るデータワードのアドレスビット部分を表
わすタグを記憶するために、ディレクトリ(タグバッフ
ァ)が具備されている。したがってこの特許はディレク
トリおよびエージピットの更新に関する詳細を示すもの
である。
米国特許筒4189770号はオペランド取出しのだめ
のキャッシュバイパス制御について記載するものである
。このシステムでは、キャッシュミスが生じたため主記
憶装置からラインを取り出さなければならないときは、
取り出されたラインのその部分(オペランド)、すなわ
ち、要求された今すぐに必要なもの、はキャッシュバイ
パスを介して直接的に1−ユニットへ転送される。こう
すればライン全体がキャッシュに転送されるまで待たな
くてもよいのでその分だけ時間が節約できる。したがっ
てシステムの動作が速(なり効率は改善される。
のキャッシュバイパス制御について記載するものである
。このシステムでは、キャッシュミスが生じたため主記
憶装置からラインを取り出さなければならないときは、
取り出されたラインのその部分(オペランド)、すなわ
ち、要求された今すぐに必要なもの、はキャッシュバイ
パスを介して直接的に1−ユニットへ転送される。こう
すればライン全体がキャッシュに転送されるまで待たな
くてもよいのでその分だけ時間が節約できる。したがっ
てシステムの動作が速(なり効率は改善される。
米国特許第4195343号は数段で構成されたキャッ
シュのためのリプレースメント手順について記載するも
のである。この特許では、新しいデータがキャッシュへ
置かれたときにリプレースタンドが生じるように場所が
選択される。この場所の選択はラウントロピン(総当た
り)手法で行われる。
シュのためのリプレースメント手順について記載するも
のである。この特許では、新しいデータがキャッシュへ
置かれたときにリプレースタンドが生じるように場所が
選択される。この場所の選択はラウントロピン(総当た
り)手法で行われる。
〔発明が解決しようとする問題点9
以上に示した従来例はいずれもその目的のためには良好
に働くが、キャッシュミスを減少させるシステムとして
未だ十分なものとは言えない。
に働くが、キャッシュミスを減少させるシステムとして
未だ十分なものとは言えない。
したがって本発明の目的はキャッシュミスを大幅に減少
させるために効率の良い事前取出しく主記憶装置からキ
ャッシュへの)を行うキャッシュ機構を提供することに
ある。
させるために効率の良い事前取出しく主記憶装置からキ
ャッシュへの)を行うキャッシュ機構を提供することに
ある。
本発明の実施例では、上記の問題は、主に、通常のブイ
レフ) l)の他に2次的なディレクトリ(以下、影デ
ィレクトリともいう)を設けることによって解決される
。この2次ディレクトリは、前のラインアクセスの間に
得られた親識別子と、後のラインアクセスの間に得られ
た関連する子アドレスと、かう成る親−子ペアを記憶し
、この記憶された親識別子が再び見出されたときは、関
連する子アドレスで指定されるラインが事前に取出され
る。
レフ) l)の他に2次的なディレクトリ(以下、影デ
ィレクトリともいう)を設けることによって解決される
。この2次ディレクトリは、前のラインアクセスの間に
得られた親識別子と、後のラインアクセスの間に得られ
た関連する子アドレスと、かう成る親−子ペアを記憶し
、この記憶された親識別子が再び見出されたときは、関
連する子アドレスで指定されるラインが事前に取出され
る。
以上のように本発明に基づくキャッシュ機構はキャッシ
ュミスの発生確率を減少させるだめに予測的な取出しを
行うもの、すなわち、未だ要求されていない情報のキャ
ッシュへの事前取出しを行うものである。
ュミスの発生確率を減少させるだめに予測的な取出しを
行うもの、すなわち、未だ要求されていない情報のキャ
ッシュへの事前取出しを行うものである。
(A)本発明の基本的な概念
本発明はデータ処理システムにおいて情報ブロック(以
下ラインという)を主記憶装置からキャッシュへ効率良
く事前に取り出すための技術を提供するものである。本
発明によればキャッシュミスの数は大幅に減ぜられる。
下ラインという)を主記憶装置からキャッシュへ効率良
く事前に取り出すための技術を提供するものである。本
発明によればキャッシュミスの数は大幅に減ぜられる。
第1図は本発明の詳細な説明するだめの図である。キャ
ッシュに対してディレクトリ11が普通に設けられてい
る。ディレクトリ11はキャッシュに現に存在するライ
ン(命令、データ、オペランド)のアドレスを保持する
。この標準的なディレクトリを1実デイレクトリ騨と呼
ぶ。実ディレクトリにより、所望のラインが既にキャッ
シュに存在するかどうか、存在するならその場所はどこ
か、ということを判断することができる。
ッシュに対してディレクトリ11が普通に設けられてい
る。ディレクトリ11はキャッシュに現に存在するライ
ン(命令、データ、オペランド)のアドレスを保持する
。この標準的なディレクトリを1実デイレクトリ騨と呼
ぶ。実ディレクトリにより、所望のラインが既にキャッ
シュに存在するかどうか、存在するならその場所はどこ
か、ということを判断することができる。
本発明に従って、付加的な2段ディレクトリ(13,1
5)が設けられる。この2段デイレクトりは”影ディレ
クトリシまたは単に詩影鉗という。
5)が設けられる。この2段デイレクトりは”影ディレ
クトリシまたは単に詩影鉗という。
影ディレクトリは、第1段(1ろ)で、キャッシュに現
に存在するまたは最近まで存在したラインのアドレス(
P、 P’、P”)を保持する。第1段の各エントリに
対して、第2段(15)に対応するエントリが存在する
。紀2段は第1段の個々のアドレスの後に続いてアクセ
スされたアドレスをそれぞれ保持する。
に存在するまたは最近まで存在したラインのアドレス(
P、 P’、P”)を保持する。第1段の各エントリに
対して、第2段(15)に対応するエントリが存在する
。紀2段は第1段の個々のアドレスの後に続いてアクセ
スされたアドレスをそれぞれ保持する。
換言すれば、成るアクセスサイクルでアドレスPに対し
て記憶アクセスがなされ、かつ、後のサイクルでアドレ
スQに対してアクセスがなされたとき、第1段のエント
リがPを保持し第2段のエン) IJ Qを保持するの
である。ここで言う後の”サイクルは直後のアクセスサ
イクルの場合もあれば、キャッシュミスおよび主記憶装
置の取出しを伴う後のアクセスサイクル、または、キャ
ッシュとそのディレクトリの使用/エージ標識の変更を
伴う後のアクセスサイクルである場合もある。
て記憶アクセスがなされ、かつ、後のサイクルでアドレ
スQに対してアクセスがなされたとき、第1段のエント
リがPを保持し第2段のエン) IJ Qを保持するの
である。ここで言う後の”サイクルは直後のアクセスサ
イクルの場合もあれば、キャッシュミスおよび主記憶装
置の取出しを伴う後のアクセスサイクル、または、キャ
ッシュとそのディレクトリの使用/エージ標識の変更を
伴う後のアクセスサイクルである場合もある。
記憶アクセスのシーケンスは成る確率を持って繰り返さ
れる。アドレスPへのアクセスが再び行われた場合、第
1図の構成によれば影ディレクトリの第2段からアドレ
スQ’&入手し対応するラインをキャッシュへ事前に取
り出すことができる。
れる。アドレスPへのアクセスが再び行われた場合、第
1図の構成によれば影ディレクトリの第2段からアドレ
スQ’&入手し対応するラインをキャッシュへ事前に取
り出すことができる。
ただしこのときQが実際にPに続くかどうかは未だ判ら
ない(以前はそうであった)。このような事前取出し機
構によれば、要求されたときにラインが既にキャッシュ
に存在する確率は実質的に増加する。すなわち、遅延の
原因となるキャッシュミスの数は大幅に減ぜられる。
ない(以前はそうであった)。このような事前取出し機
構によれば、要求されたときにラインが既にキャッシュ
に存在する確率は実質的に増加する。すなわち、遅延の
原因となるキャッシュミスの数は大幅に減ぜられる。
影ディレクトリは、効率を考慮して、実ディレクトリよ
りもかなり大きめのサイズにして:16<。
りもかなり大きめのサイズにして:16<。
何故なら影ディレクトリは、第1段で、キャッシュに実
際に存在するラインのアドレスだけでなく既に置き換わ
ったラインのアドレス(しかしこれは最近に使用された
ので成る確率を持って間もなく再度使用される)も保持
しなければならフヨいからである。適用方法にもよるが
、影ディレクトすの第1段のエントリ数は実ディレクト
リの2倍(場合によっては8倍)である。
際に存在するラインのアドレスだけでなく既に置き換わ
ったラインのアドレス(しかしこれは最近に使用された
ので成る確率を持って間もなく再度使用される)も保持
しなければならフヨいからである。適用方法にもよるが
、影ディレクトすの第1段のエントリ数は実ディレクト
リの2倍(場合によっては8倍)である。
他に、影ディレクトリの内容のだめの更新手順が必要で
ある。影ディレクトリの第1段における新しいエントリ
の追加と古いエントリの削除は実ディレクトリと同様に
して行われる:エージタグ(M RU −L RU標識
)が各エントリに対して保持され、新しいアドレスPが
実ディレクトリ11に入ったためにそれが第1段16に
入るときは、新しいアドレスPは最古のエントリ(PN
P’、またはP“)と入れ換わる。この入換えを行う
だめのMRU−LRU標識の使用およびその手順は周知
の技術であるので、詳述しない。
ある。影ディレクトリの第1段における新しいエントリ
の追加と古いエントリの削除は実ディレクトリと同様に
して行われる:エージタグ(M RU −L RU標識
)が各エントリに対して保持され、新しいアドレスPが
実ディレクトリ11に入ったためにそれが第1段16に
入るときは、新しいアドレスPは最古のエントリ(PN
P’、またはP“)と入れ換わる。この入換えを行う
だめのMRU−LRU標識の使用およびその手順は周知
の技術であるので、詳述しない。
第2段のエン) IJ Qの更新は実際のアドレスシー
ケンスの結果として行われる:成るアクセスサイクルで
Pが第1段16に新たに加えられると、その後、Qが第
2段15の対応する場所に加えられる。後でPが再び使
用されるときに、Qが再びPに続くかどうかが検査され
る。確認ピッ)CFは、この検査の結果を示すように第
1段13の各エントリに設けられる。最終的には、最近
にPに続いた(したがって記憶アクセスの最近の履歴を
表わし、事前取出しのだめのより適当な)別のアドレス
RがQと入れ換わる。
ケンスの結果として行われる:成るアクセスサイクルで
Pが第1段16に新たに加えられると、その後、Qが第
2段15の対応する場所に加えられる。後でPが再び使
用されるときに、Qが再びPに続くかどうかが検査され
る。確認ピッ)CFは、この検査の結果を示すように第
1段13の各エントリに設けられる。最終的には、最近
にPに続いた(したがって記憶アクセスの最近の履歴を
表わし、事前取出しのだめのより適当な)別のアドレス
RがQと入れ換わる。
要するに、事前取出し機構には、通常のキャッシュブイ
レフ1.9の他に2段式の影ティレクトリが具備され、
各記憶アクセスサイクルは下記のオペレーションを含む
ように改められる。
レフ1.9の他に2段式の影ティレクトリが具備され、
各記憶アクセスサイクルは下記のオペレーションを含む
ように改められる。
(a) 所与の現アドレスでキャッシュをアクセスする
。ラインがないときは、それを主記憶装置から取り出し
て対応するアドレスを入れることによって実ディレクト
リを更新する。MRU−LRU標識を更新する。(これ
は通常のアクセス手順である〕。
。ラインがないときは、それを主記憶装置から取り出し
て対応するアドレスを入れることによって実ディレクト
リを更新する。MRU−LRU標識を更新する。(これ
は通常のアクセス手順である〕。
記憶アクセスの適切なサブセットで下記の動作が行われ
る。適切なサブセットはアクセスをことごとく含む必要
はない。事前取出し機構はMRU−LRU標識またはキ
ャッシュの内容を変更するようなアクセスの場合にのみ
呼び出される。
る。適切なサブセットはアクセスをことごとく含む必要
はない。事前取出し機構はMRU−LRU標識またはキ
ャッシュの内容を変更するようなアクセスの場合にのみ
呼び出される。
(b) 第1段の現アドレスPに対してI正当な訂ペア
P−Qが使用可能かどうかをみるために影ディレクトリ
を検査する。Qで与えられるラインをキャッシュへ取り
出す(もしそれが既にそこにないときは)。実ディレク
トリを更新する。
P−Qが使用可能かどうかをみるために影ディレクトリ
を検査する。Qで与えられるラインをキャッシュへ取り
出す(もしそれが既にそこにないときは)。実ディレク
トリを更新する。
(c)影ティレクトリの内容を更新する:(C1)現ア
ドレスがなかったときは、それを第1段(P)に入れ、
第2段rQ)は空けたままにする。
ドレスがなかったときは、それを第1段(P)に入れ、
第2段rQ)は空けたままにする。
(C2)以前に使用されたアドレス(P・)の下で □
現アドレスを一定の条件で第2段(Qo)に入れる。
現アドレスを一定の条件で第2段(Qo)に入れる。
(C6)以前に事前取出しされたライン(Q”)が使用
されなかった(CFビットをゼロにリセットすることに
よって)ときは、影ディレクトリのペア(P・−Q”)
を無効化する。
されなかった(CFビットをゼロにリセットすることに
よって)ときは、影ディレクトリのペア(P・−Q”)
を無効化する。
影デイレク) IJおよび以上示した手順についての詳
細は次節で説明する。
細は次節で説明する。
本発明に基づ(事前取出し機構は、キャッシュが実際に
使用可能な太きさよりもずっと太きいものとして具備さ
れたと同じ効果を有する。何故なら従来に比べてキャッ
シュミスの発生率がずっと小さいからである。すなわち
、キャッシュをフルサイズの記憶場所数で拡張(たとえ
ば各ラインが128バイトヲ有する)しなくても、ずっ
と小規模のエントリ(たとえば各アドレスベアに対して
6バイト)ですむ付加的なブイレフ) l)がありさえ
すればよいからである。
使用可能な太きさよりもずっと太きいものとして具備さ
れたと同じ効果を有する。何故なら従来に比べてキャッ
シュミスの発生率がずっと小さいからである。すなわち
、キャッシュをフルサイズの記憶場所数で拡張(たとえ
ば各ラインが128バイトヲ有する)しなくても、ずっ
と小規模のエントリ(たとえば各アドレスベアに対して
6バイト)ですむ付加的なブイレフ) l)がありさえ
すればよいからである。
(B) 用語の定義
本節では説明を簡単にするために使用される用語の定義
をする。
をする。
・ライン・は情報の1ブロツクである。この情報、すな
わち、命令またはオペランド(データ)は連続的な記憶
場所に記憶され、1エンテイテイとしてたとえば主記憶
装置とキャッシュとの間で転送される。
わち、命令またはオペランド(データ)は連続的な記憶
場所に記憶され、1エンテイテイとしてたとえば主記憶
装置とキャッシュとの間で転送される。
”アクセスサイクル”または”サイクル”は、アドレス
が与えられたときに記憶装置の1ラインをアクセスする
のに必要なオペレーションのシーケンスである。たとえ
ば、記憶装置で初めに1つの命令がアクセスされ次に2
つのオペランドがアクセスされるときは、6つの連続的
なアクセスサイクルが存在する。
が与えられたときに記憶装置の1ラインをアクセスする
のに必要なオペレーションのシーケンスである。たとえ
ば、記憶装置で初めに1つの命令がアクセスされ次に2
つのオペランドがアクセスされるときは、6つの連続的
なアクセスサイクルが存在する。
材エージタグ雪は記憶装置の1エントリ(ディレクトリ
のアドレス)に対して割り当てられたビットグループで
あって、エントリの所与のグループにおいて個々のエン
トリがM RU (mostrecently use
d) であったか、L RU (1eastrecen
tly used)であったか、またはM RUエント
リとLRUエントリとの間のどの使用世代であったのか
を示すものである。
のアドレス)に対して割り当てられたビットグループで
あって、エントリの所与のグループにおいて個々のエン
トリがM RU (mostrecently use
d) であったか、L RU (1eastrecen
tly used)であったか、またはM RUエント
リとLRUエントリとの間のどの使用世代であったのか
を示すものである。
■コングルエンスフラスIは共通の指標部を有するライ
ンのサブ−ヒツトである。すなわち、コングルエンスフ
ラスの全てのラインは最後のnビットが同一であるアド
レスを有する。
ンのサブ−ヒツトである。すなわち、コングルエンスフ
ラスの全てのラインは最後のnビットが同一であるアド
レスを有する。
さて、6つのアドレスR,SおよびTのシーケンスで、
中間のSが現に使用されているとしよう。
中間のSが現に使用されているとしよう。
そのようなろ連のアドレスの場合、これらを以下のよう
に命名する( VLA−仮想ラインアドレス)。
に命名する( VLA−仮想ラインアドレス)。
R−前アドレス−旧VLA
S−現アドレス−VLA
T=次アドレス−新VLA
このシーケンスでは、2つの連続的なアドレスPおよび
Qが1ベアを構成する。これを以下のように命名する。
Qが1ベアを構成する。これを以下のように命名する。
P−親(アドレス)−PAR−A
Q−子(アドレス)=DSC−A
上記のろ連アドレスR,S、およびTかられかるように
、現アドレスは異なる機能で2つのペアに含まれている
。ペアR= Sでは、Rが親でSが子である。ペアS−
Tでは、Sが親でTが子である。影テイレクトリを更新
する際、この違いは重要である。何故ならこの更新は回
顧的な極面と将来的な極面を有するからである。
、現アドレスは異なる機能で2つのペアに含まれている
。ペアR= Sでは、Rが親でSが子である。ペアS−
Tでは、Sが親でTが子である。影テイレクトリを更新
する際、この違いは重要である。何故ならこの更新は回
顧的な極面と将来的な極面を有するからである。
親アドレスであることを明らかにするために、別のアド
レスの一部分との組合せである。1親識別子lを一定の
状況で使用してもよい。これについては第2部で説明す
る。
レスの一部分との組合せである。1親識別子lを一定の
状況で使用してもよい。これについては第2部で説明す
る。
(C) キャッシュおよびディレクトリの構成本節では
キャッシュとそのディレクトリがどのように構成されて
いるかについて説明する。もちろん、これから説明する
構成は本発明の実施例を記述するための単なる1例であ
り、本発明は他の構成でも機能することができる。
キャッシュとそのディレクトリがどのように構成されて
いるかについて説明する。もちろん、これから説明する
構成は本発明の実施例を記述するための単なる1例であ
り、本発明は他の構成でも機能することができる。
(C1)キャッシュおよび実ディレクトリデータ処理シ
ステムに接続されたキャッシュおよびディレクトリの基
本的な動作は周知であるから説明を省略する。
ステムに接続されたキャッシュおよびディレクトリの基
本的な動作は周知であるから説明を省略する。
第2A図はギャツンユの構成を示す図である。
キャッシュは多数のライン(データまたは命令)のため
記憶空間を有する。この例ではラインの数は62個であ
る。各ラインの容量は128バイトである。図かられか
るように、このキャッシュは8行×4列のラインで構成
される(1行につき4個のライン)。各行には1つのコ
ングルエンスフラスが割り振られている(たとえばその
行の全ラインに対して、仮想アドレスすなわち主記憶装
置アドレスは最後の6ビツトが共通である)。たとえば
、行204個のラインの空間はアドレスの最後のところ
が全て、、、、 010であるようなラインが割り当て
られ、行704個のラインの空間はアドレスの最後のと
ころが全て、、、、111であるようなラインが割り当
てられる。こうすればハツンング機構がな(でもある程
度のランダムな分布が ・実現できる(したがってキャ
ッシュ空間を一様に利用することができる)。同時に、
連続的なアドレスを有する項目が別の行に記憶される。
記憶空間を有する。この例ではラインの数は62個であ
る。各ラインの容量は128バイトである。図かられか
るように、このキャッシュは8行×4列のラインで構成
される(1行につき4個のライン)。各行には1つのコ
ングルエンスフラスが割り振られている(たとえばその
行の全ラインに対して、仮想アドレスすなわち主記憶装
置アドレスは最後の6ビツトが共通である)。たとえば
、行204個のラインの空間はアドレスの最後のところ
が全て、、、、 010であるようなラインが割り当て
られ、行704個のラインの空間はアドレスの最後のと
ころが全て、、、、111であるようなラインが割り当
てられる。こうすればハツンング機構がな(でもある程
度のランダムな分布が ・実現できる(したがってキャ
ッシュ空間を一様に利用することができる)。同時に、
連続的なアドレスを有する項目が別の行に記憶される。
ラインの数、キャッシュの容量は、もちろん、これに限
定されるものではない。
定されるものではない。
キャッシュのだめの通常のティレフトす(ここでは実デ
ィレクトリと呼んでいる)は第2B図かられかるように
キャッシュと全く同じ構造である。
ィレクトリと呼んでいる)は第2B図かられかるように
キャッシュと全く同じ構造である。
キャッシュの各ラインに対して、実ディレクトリには対
応するアドレスエントリのセル21が存在する。しかし
ながら、1つのアドレスのだめの各セルの容量はわずか
24ビツトである(これに対し対応するラインの容量は
128バイトである)。
応するアドレスエントリのセル21が存在する。しかし
ながら、1つのアドレスのだめの各セルの容量はわずか
24ビツトである(これに対し対応するラインの容量は
128バイトである)。
キャッシュから1個のラインを検索する場合、初めにそ
のアドレスを利用してコングルエンスフラス(すなわち
キャッシュにおいて割り当てられた行)を判断する。次
に実ディレクトリの対応する行の4つのエントリが所与
のラインアドレスと比較される。これが一致すれば、そ
のブイレフ) IJにおいて突き合わされたアドレスの
場所は、キャノンユ内でそのラインがどこに記憶されて
いるかを示し、したがってそれをアクセスすることがで
きる。
のアドレスを利用してコングルエンスフラス(すなわち
キャッシュにおいて割り当てられた行)を判断する。次
に実ディレクトリの対応する行の4つのエントリが所与
のラインアドレスと比較される。これが一致すれば、そ
のブイレフ) IJにおいて突き合わされたアドレスの
場所は、キャノンユ内でそのラインがどこに記憶されて
いるかを示し、したがってそれをアクセスすることがで
きる。
ディレクトリにおいては各エントリに対して1つのエー
ジタグが保持されるが、このエージタグは各行すなわち
コングルエンスフラスとは関係がない。したがって2ビ
ツトタグで1行のどのエントリがMRUであったかLR
Uであったかなどを示すことができる。アドレスおよび
それに対応するキャッシュ中のエントリがアクセスされ
ると、それはMRUエージタグの値を獲得し、他のアド
レスのタグ値はそのことを示すように更新される。
ジタグが保持されるが、このエージタグは各行すなわち
コングルエンスフラスとは関係がない。したがって2ビ
ツトタグで1行のどのエントリがMRUであったかLR
Uであったかなどを示すことができる。アドレスおよび
それに対応するキャッシュ中のエントリがアクセスされ
ると、それはMRUエージタグの値を獲得し、他のアド
レスのタグ値はそのことを示すように更新される。
新しいラインをキャッシュに入れるときは、対応するコ
ングルエンスフラス(行)のLRUアドレスエントリが
見出されて、これにより新しいラインおよびそのアドレ
スをキャッシュおよびディレクトリのどこにそれぞれ記
憶するかが判断される。
ングルエンスフラス(行)のLRUアドレスエントリが
見出されて、これにより新しいラインおよびそのアドレ
スをキャッシュおよびディレクトリのどこにそれぞれ記
憶するかが判断される。
LRUリプレースメント手順は周知であるから、これ以
上の説明は省略する。
上の説明は省略する。
(C2) 影ディレクトリ
第2A図および第2B図のキャッシュおよび実ディレク
トリは標準的なものであるのに対し11本発明に基づい
て加えられる影ディレクトリ(第6図)はこれまでのも
のと同様な構造を有するが実ディレクトリよりもずっと
太きい。
トリは標準的なものであるのに対し11本発明に基づい
て加えられる影ディレクトリ(第6図)はこれまでのも
のと同様な構造を有するが実ディレクトリよりもずっと
太きい。
本実施例では影ディレクトリも同じ(8行構成(すなわ
ちコングルエンスフラスによって組織される)であるが
、1行の有するエントリセル25の数は実ディレクトリ
よりも多く、たとえば、8個である。したがって、この
例では影ディレクトリ23は、実ディレクトリ11のエ
ントリセルの数が62個(キャッシュのラインの数も6
2個である)。であるのに対し、その数は64個である
。
ちコングルエンスフラスによって組織される)であるが
、1行の有するエントリセル25の数は実ディレクトリ
よりも多く、たとえば、8個である。したがって、この
例では影ディレクトリ23は、実ディレクトリ11のエ
ントリセルの数が62個(キャッシュのラインの数も6
2個である)。であるのに対し、その数は64個である
。
影ディレクトリ23の各エントリセル(第4図に1つの
エントリセルを示す)はたとえば49ビツトの容量を有
しこれにより、24ビツトの第1段エントリ27(アド
レスP)、24ビツトの第2段エントリ29(アドレス
Q)、および確認ピッ)31(CF)を収容する。この
構成は第1図のどころで説明した原理に対応する。1つ
の記憶ブロックに第1段のエントリ、別の1つの記憶ブ
ロックに第2段のエントリをそれぞれ入れて両者のエン
トリ数が同じになるように影ディレクトリを構成するこ
ともできる。本実施例では第6図および第4図に示すよ
うに、1つのブロックの各エントリが、第1段および第
2段のアドレスを構成する1つのアドレスベアを収容す
る。
エントリセルを示す)はたとえば49ビツトの容量を有
しこれにより、24ビツトの第1段エントリ27(アド
レスP)、24ビツトの第2段エントリ29(アドレス
Q)、および確認ピッ)31(CF)を収容する。この
構成は第1図のどころで説明した原理に対応する。1つ
の記憶ブロックに第1段のエントリ、別の1つの記憶ブ
ロックに第2段のエントリをそれぞれ入れて両者のエン
トリ数が同じになるように影ディレクトリを構成するこ
ともできる。本実施例では第6図および第4図に示すよ
うに、1つのブロックの各エントリが、第1段および第
2段のアドレスを構成する1つのアドレスベアを収容す
る。
第3節で定義した用語を参照すれば、影ディレクトリ2
3の各エントリセル25は第1段エントリ27(アドレ
スP)に親アドレスPAR−Aを保持し、第2段エント
リ29(アドレスQ)に子アドレスDSC−jl−保持
することができる。確認ピッ)CFはそのベアP−Qが
事前取出しの有効なベアであるかどうかを示す。CF=
1のときは、記憶されているベアP−Qは正当なベアで
ある。CF=00ときは、記憶されているベアを使用す
べきではない。すなわち、一方の位置または他方の位置
(PまたはQ)にはアドレスが記憶されていない。
3の各エントリセル25は第1段エントリ27(アドレ
スP)に親アドレスPAR−Aを保持し、第2段エント
リ29(アドレスQ)に子アドレスDSC−jl−保持
することができる。確認ピッ)CFはそのベアP−Qが
事前取出しの有効なベアであるかどうかを示す。CF=
1のときは、記憶されているベアP−Qは正当なベアで
ある。CF=00ときは、記憶されているベアを使用す
べきではない。すなわち、一方の位置または他方の位置
(PまたはQ)にはアドレスが記憶されていない。
実ディレクトリの場合と同様、影ディレクトリにおいて
も各セルに対して1つのエージタグが保持される。各行
において1つのMRUエントリ、1つのLRUエントリ
、およびその中間の値を有する他のエントリが存在する
ように、これらのエージタグは行(すなわちコングルエ
ンスフラス)で分類される。したがって各コングルエン
スフラスの8つのエントリに対して6ビツトのエージタ
グで十分である。事前取出しのために第2段エントリを
獲得する目的で第1段エントリを参照するか、または、
新しい第1段エントリを入れるときは、それはMRUエ
ン) IJにされる。その行の他の第1段エントリのエ
ージタグは更新される。新しいエントリのために空間が
必要なときは、LRUエントリは重ね書きされる(その
CFビットをゼロにリセットする)。
も各セルに対して1つのエージタグが保持される。各行
において1つのMRUエントリ、1つのLRUエントリ
、およびその中間の値を有する他のエントリが存在する
ように、これらのエージタグは行(すなわちコングルエ
ンスフラス)で分類される。したがって各コングルエン
スフラスの8つのエントリに対して6ビツトのエージタ
グで十分である。事前取出しのために第2段エントリを
獲得する目的で第1段エントリを参照するか、または、
新しい第1段エントリを入れるときは、それはMRUエ
ン) IJにされる。その行の他の第1段エントリのエ
ージタグは更新される。新しいエントリのために空間が
必要なときは、LRUエントリは重ね書きされる(その
CFビットをゼロにリセットする)。
影ディレクトリの第1段および第2段エントリの挿入お
よび削除ならびにCFビットの更新については後で説明
する。
よび削除ならびにCFビットの更新については後で説明
する。
(Cろ)事前取出し確認バッファ
事前取出し機構を実現するにあたって、影テイレクトリ
の更新手順を支援するだめの補足的なユニットを設けて
もよい。この補足的なユニットは第5図に示す事前取出
し確認バッファ(PCB)6ろである。PCB33は事
前取出しされるアドレス用のフィールド65、親アドレ
ス用のフィールド67、および使用標識ビン) (UB
)用のビットフィールド39を含む少なくとも1つの
バッファレジスフから成る。1つのラインがキャッシュ
へ事前に取り出されるときは、そのアドレスQとその親
であるアドレスP(これらのアドレスは影ディレクトリ
の第2段および第1段エントリからそれぞれ得られる)
がフィールド65および67にそれぞれ記憶される。そ
の後、事前取出しされたアドレスが本当に使用されたと
判断されると、ビットUBは1にセットされる。
の更新手順を支援するだめの補足的なユニットを設けて
もよい。この補足的なユニットは第5図に示す事前取出
し確認バッファ(PCB)6ろである。PCB33は事
前取出しされるアドレス用のフィールド65、親アドレ
ス用のフィールド67、および使用標識ビン) (UB
)用のビットフィールド39を含む少なくとも1つの
バッファレジスフから成る。1つのラインがキャッシュ
へ事前に取り出されるときは、そのアドレスQとその親
であるアドレスP(これらのアドレスは影ディレクトリ
の第2段および第1段エントリからそれぞれ得られる)
がフィールド65および67にそれぞれ記憶される。そ
の後、事前取出しされたアドレスが本当に使用されたと
判断されると、ビットUBは1にセットされる。
PCB33のレジスタは1個(レジスタA)と言わず、
2個(レジスタAおよびB)、4個(A。
2個(レジスタAおよびB)、4個(A。
B、C,およびD)、またはもつとたくさんでもよい。
このようなPCBの拡張については後で説明する。PC
Bが複数のレジスタを有する場合は、その各々のレジス
タに対して1つのエージタグが保持され、これにより、
MRU、LRU等のエントリの判別ができる。
Bが複数のレジスタを有する場合は、その各々のレジス
タに対して1つのエージタグが保持され、これにより、
MRU、LRU等のエントリの判別ができる。
(D) 事前取出しおよび影ディレクトリの更新を含む
記憶アクセス手順の詳細 第6図(すなわち第6A図ないし第6C図)は影デイレ
ク) IJおよび事前取出し機構を用いた記憶アクセス
手順の流れ図である。この手順の原理的な動作は第A節
のところで既に説明した。すなわち、(a)現アドレス
でキャッシュをアクセスし、ラインを取り出しく必要な
らば)、実ディレクトリを更新する;(b)正当な子ア
ドレスであるかどうかを検査し、それを事前に取り出す
(もしそれがキャッシュにないときは) ; (c)新
しい子アドレスを入れ、さらに、正当な子アドレスを有
効化することによって影ディレクトリを更新し、不当な
子アドレスを無効化する、ことである。
記憶アクセス手順の詳細 第6図(すなわち第6A図ないし第6C図)は影デイレ
ク) IJおよび事前取出し機構を用いた記憶アクセス
手順の流れ図である。この手順の原理的な動作は第A節
のところで既に説明した。すなわち、(a)現アドレス
でキャッシュをアクセスし、ラインを取り出しく必要な
らば)、実ディレクトリを更新する;(b)正当な子ア
ドレスであるかどうかを検査し、それを事前に取り出す
(もしそれがキャッシュにないときは) ; (c)新
しい子アドレスを入れ、さらに、正当な子アドレスを有
効化することによって影ディレクトリを更新し、不当な
子アドレスを無効化する、ことである。
(1)次アドレスを獲得し、キャッシュをアクセスし、
実テイレクトりを更新するニ ステップ201で記憶アクセスザイクルを始めるために
、システムは次ラインアドレスを入手し、それを現アド
レスにセットする(VLA−新VLA)。これはそのサ
イクル中はVLAとして通用する。ステップ203でア
ドレスVLAを有するラインが既にキャッシュに存在す
るかどうかを判断するだめの探索が行われる。このため
、実ディレクトリにおいてVLAに関連する行すなわち
コングルエンスフラス゛の全エントリがVLAと比較さ
れる。これでヒツトが生じたときは、既にMRUでない
限りはステップ205で対応するエントリj:MRuと
してマークされ、キャッシュのラインをアクセスできる
ようにその位置コードがシステムに与えられる。上記の
比較でミスが生じたときはステップ207が実行される
ニアドレスVLAを有するラインが主記憶装置から取り
出され、それがプロセッサに転送され、さらに、実デイ
レク) IJの対応する行のLRUエントリで与えられ
るキャッシュの場所に記憶される。そうしてVLAはM
RUとして実ディレクトリに入れられてLRUエントリ
と入れ換わる。
実テイレクトりを更新するニ ステップ201で記憶アクセスザイクルを始めるために
、システムは次ラインアドレスを入手し、それを現アド
レスにセットする(VLA−新VLA)。これはそのサ
イクル中はVLAとして通用する。ステップ203でア
ドレスVLAを有するラインが既にキャッシュに存在す
るかどうかを判断するだめの探索が行われる。このため
、実ディレクトリにおいてVLAに関連する行すなわち
コングルエンスフラス゛の全エントリがVLAと比較さ
れる。これでヒツトが生じたときは、既にMRUでない
限りはステップ205で対応するエントリj:MRuと
してマークされ、キャッシュのラインをアクセスできる
ようにその位置コードがシステムに与えられる。上記の
比較でミスが生じたときはステップ207が実行される
ニアドレスVLAを有するラインが主記憶装置から取り
出され、それがプロセッサに転送され、さらに、実デイ
レク) IJの対応する行のLRUエントリで与えられ
るキャッシュの場所に記憶される。そうしてVLAはM
RUとして実ディレクトリに入れられてLRUエントリ
と入れ換わる。
(11)事前取出し手順での一定のケースの除去法の2
つのステップにおいて一定の条件(すなわち、この場合
は事前取出しおよび影ディレクトリの更新が行われない
)の下で記憶アクセスサイクルが終了する。ステップ2
09でMRUの変更を生じるキャッシュアクセスがあっ
たかどうかが判断される(新しいエントリがディレクト
リに置かれるか、またはMRUでなかった古いエントリ
が使用されたときMRUの変更が生じる;ステップ20
9では、検査されるラッチのセットにM’RUの変更条
件を使用することができる)。MRUの変更がなかった
ときは、前のアクセスサイクルで各アドレスVLAに対
し事前取出しオペレーションおよび影ディレクトリの更
新が行われたと推定できる。したがってステップ211
以降ステツプ255までを省略してそのサイクルの終り
に進むことができる。実際にMRUの変更があったとき
は、全てのステップが実行される。
つのステップにおいて一定の条件(すなわち、この場合
は事前取出しおよび影ディレクトリの更新が行われない
)の下で記憶アクセスサイクルが終了する。ステップ2
09でMRUの変更を生じるキャッシュアクセスがあっ
たかどうかが判断される(新しいエントリがディレクト
リに置かれるか、またはMRUでなかった古いエントリ
が使用されたときMRUの変更が生じる;ステップ20
9では、検査されるラッチのセットにM’RUの変更条
件を使用することができる)。MRUの変更がなかった
ときは、前のアクセスサイクルで各アドレスVLAに対
し事前取出しオペレーションおよび影ディレクトリの更
新が行われたと推定できる。したがってステップ211
以降ステツプ255までを省略してそのサイクルの終り
に進むことができる。実際にMRUの変更があったとき
は、全てのステップが実行される。
ステップ211でキャッシュへの現アクセスが命令のだ
めのものであるかデータ(オペランド)のだめのもので
あるかが判断される。事前取出しおよび影ディレクトリ
の更新の手順は命令アクセスサイクルに限定してもよい
。これについては後で説明する。
めのものであるかデータ(オペランド)のだめのもので
あるかが判断される。事前取出しおよび影ディレクトリ
の更新の手順は命令アクセスサイクルに限定してもよい
。これについては後で説明する。
簡単のため、命令の場合の事前取出しを説明する。これ
はステップ211で調べられる。アクセスがデータのだ
めのものであったときは、ステップ211の後、そのサ
イクルは終了する。
はステップ211で調べられる。アクセスがデータのだ
めのものであったときは、ステップ211の後、そのサ
イクルは終了する。
(iii) P CBの更新(UBビットのセット)ス
テップ213でPCB33の事前取出しアドレスフィー
ルド(65)にVLAが存在するかどうかの検査が行わ
れる。VLAがそこに存在すれば、ステップ215でU
Bピッ) (39) が1にセットされ、これにより以
前に事前取出しされたラインが実際に使用されたこと(
すなわちその事前取出しが正しい選択であったこと)を
示す。これに対し、事前取出しされたラインが実際に使
用されないときは、PCBの各エントリのUBビットは
ゼロのままである。UBビット Iセロ1″はその事前
取出しが実際には失敗であったこと、およびその事前取
出しで発生する親子ペアを無効化すべきであること、を
示す(これはステップ263からステップ24ろで行わ
れる)。
テップ213でPCB33の事前取出しアドレスフィー
ルド(65)にVLAが存在するかどうかの検査が行わ
れる。VLAがそこに存在すれば、ステップ215でU
Bピッ) (39) が1にセットされ、これにより以
前に事前取出しされたラインが実際に使用されたこと(
すなわちその事前取出しが正しい選択であったこと)を
示す。これに対し、事前取出しされたラインが実際に使
用されないときは、PCBの各エントリのUBビットは
ゼロのままである。UBビット Iセロ1″はその事前
取出しが実際には失敗であったこと、およびその事前取
出しで発生する親子ペアを無効化すべきであること、を
示す(これはステップ263からステップ24ろで行わ
れる)。
(IV) 影ディレクトリの更新(新しいエントリの登
録)、事前取出しの準備、および実際の事前取出し 前に説明したように、実ディレクトリに入れもれる各ア
ドレスは影ディレクトリにも入れられる。
録)、事前取出しの準備、および実際の事前取出し 前に説明したように、実ディレクトリに入れもれる各ア
ドレスは影ディレクトリにも入れられる。
このため、各サイクルで、現アドレスVLAが既に影デ
ィレクトリに存在するかどうかが判断される(ステップ
217)。影ディレクトリ23の行(コングルエンスフ
ラス)の全ての第1段エントリ(第1図では13、第4
図では27)はVLAと比較される。VLAが見出され
ないときは、行のLRUエントリ(最古のアドレス)が
決定され、VLAをそのセルに入れてエントリMRUを
生成する(ステップ219)。新しい第1段エントリの
ために第2段エントリが無効化されるので、そのセルの
確認ビン) CF (31) はゼロにリセットされる
。したがって事前取出しペアの新しい親は影ディレクト
リに記憶され、その子はそれが実際に既知となったとき
に後のサイクルで第2段エントリとして入れることがで
きる(ステップ255)。
ィレクトリに存在するかどうかが判断される(ステップ
217)。影ディレクトリ23の行(コングルエンスフ
ラス)の全ての第1段エントリ(第1図では13、第4
図では27)はVLAと比較される。VLAが見出され
ないときは、行のLRUエントリ(最古のアドレス)が
決定され、VLAをそのセルに入れてエントリMRUを
生成する(ステップ219)。新しい第1段エントリの
ために第2段エントリが無効化されるので、そのセルの
確認ビン) CF (31) はゼロにリセットされる
。したがって事前取出しペアの新しい親は影ディレクト
リに記憶され、その子はそれが実際に既知となったとき
に後のサイクルで第2段エントリとして入れることがで
きる(ステップ255)。
子となりそうなものが判らないので事前取出しはできず
、後のステップはステップ247まで全て省略される。
、後のステップはステップ247まで全て省略される。
ステン7−217でVLAが影ティレクトリにおいて第
1段エントリ(親)として見出されれば、ステップ22
1で確認ビットCFがオン(1)がどうかの検査が行わ
れる。CFがゼロのときは、第2段エントリ(子)が無
効化され、事前取出しはできず、ステップ247までの
ステップは全て省略される。
1段エントリ(親)として見出されれば、ステップ22
1で確認ビットCFがオン(1)がどうかの検査が行わ
れる。CFがゼロのときは、第2段エントリ(子)が無
効化され、事前取出しはできず、ステップ247までの
ステップは全て省略される。
ステップ221でCF=1のときは、第2段エントリ(
子)の選択は正しくフィールド290子アドレスで事前
取出しを試行することができる(ステップ226)。
子)の選択は正しくフィールド290子アドレスで事前
取出しを試行することができる(ステップ226)。
ステップ225で、子アドレス(第2段アドレス)を有
するラインが既にキャッシュに存在するかどうかの判断
が行われる。このため、実ディレクトリが調べられる(
通常のキャッシュアクセスの場合のステップ2[16の
ように)。実ディレクトリで子アドレスが見出されれば
、事前取出しは必要ではなくステップ247までの後の
全てのステップは省略できる。
するラインが既にキャッシュに存在するかどうかの判断
が行われる。このため、実ディレクトリが調べられる(
通常のキャッシュアクセスの場合のステップ2[16の
ように)。実ディレクトリで子アドレスが見出されれば
、事前取出しは必要ではなくステップ247までの後の
全てのステップは省略できる。
子アドレスが実ディレクトリにないときは、ステップ2
29でそのラインがキャッシュに取り出され、子アドレ
スを入れることによって(LRUエントリの入換)実デ
ィレクトリが更新される。
29でそのラインがキャッシュに取り出され、子アドレ
スを入れることによって(LRUエントリの入換)実デ
ィレクトリが更新される。
前の既知のアドレスシーケンスから言って使用されるこ
とが予想されるため(後で使用されないこともあるがそ
の確率は小さい)新しいラインがキャッシュに取り出さ
れるのである。
とが予想されるため(後で使用されないこともあるがそ
の確率は小さい)新しいラインがキャッシュに取り出さ
れるのである。
(V)PCBの更新(最古の二ン) IJの検討、新し
いエントリの登録)および影ディレクトリの更新(確認
ビットのリセット): この段階で、PCBを評価することができる。
いエントリの登録)および影ディレクトリの更新(確認
ビットのリセット): この段階で、PCBを評価することができる。
ステップ261で最古のエントリ(単一レジスタ式PC
Bの場合は単一のエントリ、多重レジスフ式PCBの場
合はLRUエントリ)が決定され、ステップ233でそ
のエントリのUBビットがオンであるかどうかが判断さ
れる。UBビットがオン(1)のときは、対応する事前
取出しされたラインが実際に使用されたことになる。し
たがってこの最古のPCBエントリに記憶され、かつ、
影ディレクトリにおいて有効なペアとして存在する事前
取出しペア(親−子ペア)は正当なペアであり影ディレ
クトリにおいて有効のまま存続することができる。新し
いエントリで重ね書きすることによってP、CBにお℃
・てそれを取消すことができる。
Bの場合は単一のエントリ、多重レジスフ式PCBの場
合はLRUエントリ)が決定され、ステップ233でそ
のエントリのUBビットがオンであるかどうかが判断さ
れる。UBビットがオン(1)のときは、対応する事前
取出しされたラインが実際に使用されたことになる。し
たがってこの最古のPCBエントリに記憶され、かつ、
影ディレクトリにおいて有効なペアとして存在する事前
取出しペア(親−子ペア)は正当なペアであり影ディレ
クトリにおいて有効のまま存続することができる。新し
いエントリで重ね書きすることによってP、CBにお℃
・てそれを取消すことができる。
最古のPCBエントりのUBビットがゼロのときは、事
前取出しされたラインは使用されなかったのであるから
、PCBおよび影ディレクトリのこのペア(親−子)は
正当なものではな(、シたがって無効化しなければなら
ない。そこでステップ237において、PCBエントリ
のフィールド37からそのペアの親が取得され、影デイ
ンクトリの全てのセルの第1段エントリでそれが探索さ
れる。ステップ2ろ9で、この正しくない親アドレスが
その間に影ディレクトリから削除されていたと判断され
れば、それは無効化する必要はな(、ステップ245で
そのPCBエントリを重ね書きすることができる。
前取出しされたラインは使用されなかったのであるから
、PCBおよび影ディレクトリのこのペア(親−子)は
正当なものではな(、シたがって無効化しなければなら
ない。そこでステップ237において、PCBエントリ
のフィールド37からそのペアの親が取得され、影デイ
ンクトリの全てのセルの第1段エントリでそれが探索さ
れる。ステップ2ろ9で、この正しくない親アドレスが
その間に影ディレクトリから削除されていたと判断され
れば、それは無効化する必要はな(、ステップ245で
そのPCBエントリを重ね書きすることができる。
しかしながら正当でない親アドレスが影ディレクトリの
セルでみつかれば、ステップ24ろで確認ビット31を
ゼロにリセットすることによって、このエントリは無効
化される。その後、そのPCBエントリを重ね書きする
ことができる。
セルでみつかれば、ステップ24ろで確認ビット31を
ゼロにリセットすることによって、このエントリは無効
化される。その後、そのPCBエントリを重ね書きする
ことができる。
当サイクルで事前取出しが実際に行われていたときは(
ステップ229)、ステップ245で新しいエントリを
PCBに登録することができる。
ステップ229)、ステップ245で新しいエントリを
PCBに登録することができる。
この新しいエントリは単一のエントリ(単一レジスタ式
PCBのとき)または最古のエントリ(多重レジスフ式
PCBのとき)と入れ換わる。このような単一のエント
リまたは最古のエントリはその前のステップ221から
ステップ246で既に評価されている。新し℃・エント
リはステップ229で使用された事前取出しアドレスと
、当サイクルの実際の現アドレスVLAである親アドレ
スと、を有する。そのUBビットはゼロにリセットされ
、事前取出しされたラインが実際に使用された場合にの
み、1にセットされる。
PCBのとき)または最古のエントリ(多重レジスフ式
PCBのとき)と入れ換わる。このような単一のエント
リまたは最古のエントリはその前のステップ221から
ステップ246で既に評価されている。新し℃・エント
リはステップ229で使用された事前取出しアドレスと
、当サイクルの実際の現アドレスVLAである親アドレ
スと、を有する。そのUBビットはゼロにリセットされ
、事前取出しされたラインが実際に使用された場合にの
み、1にセットされる。
(vl)影デイレク) IJの最終的な更新(確認ビッ
トのセット、第2段エントリへの子の登録):この段階
で、影ディレクトリの遡及的な更新が行われる。レジス
タに記憶された前アドレス(旧VLA:前の事前取出し
サイクルで現アドレスVLAだったアドレス)が影ディ
レクトリの全セルの第1段エントリで探索される(ステ
ップ247)。
トのセット、第2段エントリへの子の登録):この段階
で、影ディレクトリの遡及的な更新が行われる。レジス
タに記憶された前アドレス(旧VLA:前の事前取出し
サイクルで現アドレスVLAだったアドレス)が影ディ
レクトリの全セルの第1段エントリで探索される(ステ
ップ247)。
これは、新アドレスが既に正当な子アドレスを有するか
どうかを検査するために行われる(影ティレクトリにお
いて新しい子アドレスとしての現アドレスVLAを与え
るために行われる)。
どうかを検査するために行われる(影ティレクトリにお
いて新しい子アドレスとしての現アドレスVLAを与え
るために行われる)。
以下、所与の親アドレスのために子アドレスをいつ変更
するかを決定する機構について説明する。
するかを決定する機構について説明する。
この機構は確認ビットCFを調べて、その親−子アドレ
スペアが正当なアドレスペア(これは事前取出しを成功
させるものであるから変更すべきではない)であるかど
うか、またはそれが不肖なアドレスペア(これは事前取
出しを失敗させるかもしれないのでその現アドレスのた
めの新し℃・子アドレスが試されるべきである)である
かどうかを判断する。この更新の方針を達成する方法は
幾つか考えられるが、上記の機構はそのうちの1つであ
る。この機構は良好な更新手法である。本節の最後には
他の更新機構も示しておく。
スペアが正当なアドレスペア(これは事前取出しを成功
させるものであるから変更すべきではない)であるかど
うか、またはそれが不肖なアドレスペア(これは事前取
出しを失敗させるかもしれないのでその現アドレスのた
めの新し℃・子アドレスが試されるべきである)である
かどうかを判断する。この更新の方針を達成する方法は
幾つか考えられるが、上記の機構はそのうちの1つであ
る。この機構は良好な更新手法である。本節の最後には
他の更新機構も示しておく。
前述のように、影ディレクトリで旧VLAが親として記
憶されているかどうかに関する探索が行われる。旧VL
Aが影ディレクトリの第1段エントリでみつかったなら
、ステップ249で確認ピッ)CF31が1かどうかの
検査が行われる。CF=1ならば、そのペア(旧VLA
が親)は有効であり変更されない(第2段エントリの子
は現アドレスVLAであることも、そうでないこともあ
る)。CF=Oならば、そのペア(旧VLAが親)は無
効である(それは既に取出しミスを生じている、すなわ
ち、直前のサイクルでその親が新たに登録されている)
。この場合、ステソゲ251で、現アドレスVLAが第
2段に子として既に記憶されているかどうかの検査が行
われる。現アドレスVLAがまだ記憶されていないとき
は、それはステップ253で第2段エン) IJに登録
されるが、その確認ピッ)CFはゼロにセットされるの
で、それはもう事前取出しには使用されない。現アドレ
スVLAが影ディレクトリで既に旧VLAへの子として
記憶されているときは、それは旧VLAO後の第2の発
生であるから、そのペアを事前取出し用として有効にす
るためにその確認ピットCFが1にセットされる。
憶されているかどうかに関する探索が行われる。旧VL
Aが影ディレクトリの第1段エントリでみつかったなら
、ステップ249で確認ピッ)CF31が1かどうかの
検査が行われる。CF=1ならば、そのペア(旧VLA
が親)は有効であり変更されない(第2段エントリの子
は現アドレスVLAであることも、そうでないこともあ
る)。CF=Oならば、そのペア(旧VLAが親)は無
効である(それは既に取出しミスを生じている、すなわ
ち、直前のサイクルでその親が新たに登録されている)
。この場合、ステソゲ251で、現アドレスVLAが第
2段に子として既に記憶されているかどうかの検査が行
われる。現アドレスVLAがまだ記憶されていないとき
は、それはステップ253で第2段エン) IJに登録
されるが、その確認ピッ)CFはゼロにセットされるの
で、それはもう事前取出しには使用されない。現アドレ
スVLAが影ディレクトリで既に旧VLAへの子として
記憶されているときは、それは旧VLAO後の第2の発
生であるから、そのペアを事前取出し用として有効にす
るためにその確認ピットCFが1にセットされる。
ステップ249かもステップ255で影ティレクトリが
最終的に更新されれば、そのアクセスザイクルは終了す
る。最後のステップ257で現アドレスVLAは旧VL
Aレジスタに置かれ、それそのものはステップ201か
ら始まる次の記憶アクセスサイクルで使用される。
最終的に更新されれば、そのアクセスザイクルは終了す
る。最後のステップ257で現アドレスVLAは旧VL
Aレジスタに置かれ、それそのものはステップ201か
ら始まる次の記憶アクセスサイクルで使用される。
(Vの 更新機構の他の実施例
以下、影ディレクトリの更新および確認ビットのセント
のために用いられる機構の他の実施例について説明する
。これは下記のステソゲを含む。
のために用いられる機構の他の実施例について説明する
。これは下記のステソゲを含む。
(a)1回目のエントリの選択的な事前取出し:影ディ
レクトリに登録される全ての新エンドす(第1段)のた
めにCFビットを1にセットする(正当なエントリ几こ
れにより、全ての新しいエントリは、第1段エントリが
参照されるとすぐに事前取出しを開始することができる
。事前取出しがなされたが使用されないときはCFビッ
トをゼロにセットする(正当でないエントリ)。新しい
親−子アドレスペアは前述と同じやり方で無効化するこ
とができる。
レクトリに登録される全ての新エンドす(第1段)のた
めにCFビットを1にセットする(正当なエントリ几こ
れにより、全ての新しいエントリは、第1段エントリが
参照されるとすぐに事前取出しを開始することができる
。事前取出しがなされたが使用されないときはCFビッ
トをゼロにセットする(正当でないエントリ)。新しい
親−子アドレスペアは前述と同じやり方で無効化するこ
とができる。
(b) 全てのエントリの事前取出し:現アドレスが参
照されるときは常に子アドレスを事前取出しする。子ア
ドレスが事前取出しされ使用されなかったことを示すた
めにCFビットをセットする。これにより、新しい子ア
ドレスを、第1段の親アドレスのために、影ディレクト
リに登録することができる。
照されるときは常に子アドレスを事前取出しする。子ア
ドレスが事前取出しされ使用されなかったことを示すた
めにCFビットをセットする。これにより、新しい子ア
ドレスを、第1段の親アドレスのために、影ディレクト
リに登録することができる。
以−ヒが更新手法の他の実施例である。
(E) 多重エントリ式事前取出し確認バッファ(PC
B)の効果: 第C節(C1)で説明したように、PCBは単一エント
リバッファまたは多重エントリバッファとすることがで
きる。単一エントリPCBの場合、1回の事前取出しの
エン) リは削除される。すなわち、それは、次の事前
取出しが生じたときは既に重ね書きされている。事前取
出しされたラインがその間に使用されなかったときは、
そのペアは、1回の取出しミスの後、既に影ディレクト
リにおいて無効化されている。
B)の効果: 第C節(C1)で説明したように、PCBは単一エント
リバッファまたは多重エントリバッファとすることがで
きる。単一エントリPCBの場合、1回の事前取出しの
エン) リは削除される。すなわち、それは、次の事前
取出しが生じたときは既に重ね書きされている。事前取
出しされたラインがその間に使用されなかったときは、
そのペアは、1回の取出しミスの後、既に影ディレクト
リにおいて無効化されている。
多重エンド!J P CBの場合、後続の複数回の事前
取出しの間、各エントリは存続する。したがって各親−
子ペアは・生き残る・チャンスを有゛する。
取出しの間、各エントリは存続する。したがって各親−
子ペアは・生き残る・チャンスを有゛する。
すなわち、各親−子ペアは1回の取出しミスの後でも影
ディレクトリにおいて有効なまま存在するチャンスを有
する。というのはそれは直ぐには無効化されないからで
ある。同じペアのために正しい事前取出しが続いて行わ
れたときは、UBビットを1にセットすることによって
そのPCBエントリが確認される。したがって無効化オ
ペレーションは行われない。このように多重エントリP
CBによれば、影テイレクトリでのアドレスペアの変更
(その方法は、第6C図のステップ251からステップ
255に示す特定の無効化および後のアドレス入換オペ
レーションと同様である)の回数を少なくできるので、
その動作を円滑にすることができる。
ディレクトリにおいて有効なまま存在するチャンスを有
する。というのはそれは直ぐには無効化されないからで
ある。同じペアのために正しい事前取出しが続いて行わ
れたときは、UBビットを1にセットすることによって
そのPCBエントリが確認される。したがって無効化オ
ペレーションは行われない。このように多重エントリP
CBによれば、影テイレクトリでのアドレスペアの変更
(その方法は、第6C図のステップ251からステップ
255に示す特定の無効化および後のアドレス入換オペ
レーションと同様である)の回数を少なくできるので、
その動作を円滑にすることができる。
(F) 親の一般化
以上に説明した実施例では、影デイレク) IJに記憶
され事前取出しに使用される親−子ペアは、プロセッサ
でアクセスされる情報ブロックのアドレスを、親および
子として有する。事前取出し機構が、命令を得るために
行われる記憶アクセスに限定される場合、以上の実施例
は好適である。
され事前取出しに使用される親−子ペアは、プロセッサ
でアクセスされる情報ブロックのアドレスを、親および
子として有する。事前取出し機構が、命令を得るために
行われる記憶アクセスに限定される場合、以上の実施例
は好適である。
ところで、事前取出しが命令アクセスおよびデータ(オ
ペランド)アクセスの両方のために行われるような一般
的な場合は、単なる情報ブロックアドレスの代わりに特
別に導出された”組識別子”を親PAR−Aとして利用
すれば、オペランドアクセスのサブセラ)Kとっては、
さらに効率が良くなる。(命令アクセスの場合は、これ
まで説明したように、親は常に各自の情報ブロック7、
トレスである)。
ペランド)アクセスの両方のために行われるような一般
的な場合は、単なる情報ブロックアドレスの代わりに特
別に導出された”組識別子”を親PAR−Aとして利用
すれば、オペランドアクセスのサブセラ)Kとっては、
さらに効率が良くなる。(命令アクセスの場合は、これ
まで説明したように、親は常に各自の情報ブロック7、
トレスである)。
現に実行された命令がオペランドのアクセスを要求した
場合、n組識別子nは以下のようにして得られる。直前
のオペランドブロックアドレスの下位ビットと直前の命
令ブロックアドレスの下位ビットとを連結して混成親識
別子を形成する。この新たな組識別子の組み合わされた
長さは、もとの命令アドレスまだはオペランドアドレス
の長さに等しい。
場合、n組識別子nは以下のようにして得られる。直前
のオペランドブロックアドレスの下位ビットと直前の命
令ブロックアドレスの下位ビットとを連結して混成親識
別子を形成する。この新たな組識別子の組み合わされた
長さは、もとの命令アドレスまだはオペランドアドレス
の長さに等しい。
影ディレクトリの第1段の表引きが遂行されるときは、
影ディレクトリのエントリが行われるのと同じ方法で現
命令ブロックアドレスおよび現オペランドブロックアド
レスから探索親識別子が必ず構成される。
影ディレクトリのエントリが行われるのと同じ方法で現
命令ブロックアドレスおよび現オペランドブロックアド
レスから探索親識別子が必ず構成される。
1つのオペランドが、異なる第2のオペランドを有する
異なる命令によって使用される場合もある。たとえば命
令Xに対してオペランドのベアがAとBであり、命令Y
に対してオペランドのペアが5AとCである場合である
場合である。その場そ子Bの事前取出しのために、Xお
よびAのアドレスを組み合わせることによって組識別子
が生成され、子Cの事前取出しの、ために、Yおよびへ
のアドレスを組み合わせることによって組識別子が生成
される。以上のように場合によっては、同じオペランド
に対して異なる第2のオペランドBまたはCが事前取出
しされることもあるので、単に各自のオペランドのブロ
ックアドレスを親として利用しないで、組識別子を利用
するのである。
異なる命令によって使用される場合もある。たとえば命
令Xに対してオペランドのベアがAとBであり、命令Y
に対してオペランドのペアが5AとCである場合である
場合である。その場そ子Bの事前取出しのために、Xお
よびAのアドレスを組み合わせることによって組識別子
が生成され、子Cの事前取出しの、ために、Yおよびへ
のアドレスを組み合わせることによって組識別子が生成
される。以上のように場合によっては、同じオペランド
に対して異なる第2のオペランドBまたはCが事前取出
しされることもあるので、単に各自のオペランドのブロ
ックアドレスを親として利用しないで、組識別子を利用
するのである。
組識別子を得るだめの別の方法は、各自のブロックアド
レスの一部分と、現PSWかも選択されたビットグルー
プ、または、他の所定の標jjljl: (または状況
レジスタ)の現在の内容から選択されたビットグループ
を組み合わせることである。組識別子の情報源の最適な
選択は個々のアプリケーションに依存する。
レスの一部分と、現PSWかも選択されたビットグルー
プ、または、他の所定の標jjljl: (または状況
レジスタ)の現在の内容から選択されたビットグループ
を組み合わせることである。組識別子の情報源の最適な
選択は個々のアプリケーションに依存する。
以上説明したように本発明によれば、データ処理システ
ムにおけるキャッシュミスの発生確率は大幅に減少され
る。
ムにおけるキャッシュミスの発生確率は大幅に減少され
る。
第1図は本発明の詳細な説明するだめのブロック図、第
2A図および第2B図はキャッシュと実ディレクトリの
構造を示す図、第6図は影ディレクトリの構造を示す図
、第4図は影ディレクトリにおける1つの二ン) IJ
セルの詳細を示す図、第5図は影ディレクトリの内容を
更新するために用いられる事前取出し確認バッファの構
造を示す図、第6図は第6A図ないし第6C図のつなが
りを示す図、第6A図ないし第6C図はキャッシュへの
事前取出しおよび影ディレクトリの更新を含む実施例の
動作の手順を示す流れ図である。 第1図 第8図 第4図 第5図 第6A図 第1頁の続き 0発 明 者 ルドルフ・ナサン・し アメチトシャフ
エン ロー 〇発明者 フランク・ジョン・ス アメパラジオ ブン リカ合衆国ニューヨーク州スカースディル、インス・ド
24番地 リカ合衆国ニューシャーシー州ノース・バーゲン、セテ
イフォースス・ストリート14旙目
2A図および第2B図はキャッシュと実ディレクトリの
構造を示す図、第6図は影ディレクトリの構造を示す図
、第4図は影ディレクトリにおける1つの二ン) IJ
セルの詳細を示す図、第5図は影ディレクトリの内容を
更新するために用いられる事前取出し確認バッファの構
造を示す図、第6図は第6A図ないし第6C図のつなが
りを示す図、第6A図ないし第6C図はキャッシュへの
事前取出しおよび影ディレクトリの更新を含む実施例の
動作の手順を示す流れ図である。 第1図 第8図 第4図 第5図 第6A図 第1頁の続き 0発 明 者 ルドルフ・ナサン・し アメチトシャフ
エン ロー 〇発明者 フランク・ジョン・ス アメパラジオ ブン リカ合衆国ニューヨーク州スカースディル、インス・ド
24番地 リカ合衆国ニューシャーシー州ノース・バーゲン、セテ
イフォースス・ストリート14旙目
Claims (1)
- 主記憶装置、キャッシュ、およびディレクトリを含むデ
ータ処理システムにおいて、前記主記憶装置から前記キ
ャッシュへ情報ブロックを事前に取出すためのキャッシ
ュ機構であって、親識別子のだめの第1段エントリ位置
、および子アドレスのだめの関連する第2段エン) I
J位置を含むエントリペアな複数個有する第2のディレ
クトリを前記ディレクトリの他に設けて、順次的にアク
セスされた任意の2つの情報ブロックのアドレスを、後
の事前取出しオペレーションに備えて、前記第2のディ
レクトリの1つのエントリペアのところに親識別子およ
び子アドレスのペアとして記憶できるようにしたことを
特徴とするキャッシュ機構。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US597801 | 1984-04-06 | ||
US06/597,801 US4807110A (en) | 1984-04-06 | 1984-04-06 | Prefetching system for a cache having a second directory for sequentially accessed blocks |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS60214059A true JPS60214059A (ja) | 1985-10-26 |
JPH0326863B2 JPH0326863B2 (ja) | 1991-04-12 |
Family
ID=24392983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP60015651A Granted JPS60214059A (ja) | 1984-04-06 | 1985-01-31 | キヤツシユ機構 |
Country Status (5)
Country | Link |
---|---|
US (1) | US4807110A (ja) |
EP (1) | EP0157175B1 (ja) |
JP (1) | JPS60214059A (ja) |
CA (1) | CA1217870A (ja) |
DE (1) | DE3586635T2 (ja) |
Families Citing this family (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366676B2 (en) * | 2001-05-29 | 2008-04-29 | Mevis Breastcare Gmbh & Co. Kg | Method and system for in-service monitoring and training for a radiologic workstation |
US6895128B2 (en) * | 2001-05-29 | 2005-05-17 | Mevis Breastcare Gmbh & Co. Kg | Method and computer system for prefetching of images |
US7050611B2 (en) * | 2001-05-29 | 2006-05-23 | Mevis Breastcare Gmbh Co. Kg | Method and computer system for screening of medical cases |
JPS63240650A (ja) * | 1987-03-28 | 1988-10-06 | Toshiba Corp | キヤツシユメモリ装置 |
US4972316A (en) * | 1987-03-30 | 1990-11-20 | International Business Machines Corporation | Method of handling disk sector errors in DASD cache |
US4980823A (en) * | 1987-06-22 | 1990-12-25 | International Business Machines Corporation | Sequential prefetching with deconfirmation |
US5210843A (en) * | 1988-03-25 | 1993-05-11 | Northern Telecom Limited | Pseudo set-associative memory caching arrangement |
US5003459A (en) * | 1988-04-01 | 1991-03-26 | Digital Equipment Corporation | Cache memory system |
US4992930A (en) * | 1988-05-09 | 1991-02-12 | Bull Hn Information Systems Inc. | Synchronous cache memory system incorporating tie-breaker apparatus for maintaining cache coherency using a duplicate directory |
US5226146A (en) * | 1988-10-28 | 1993-07-06 | Hewlett-Packard Company | Duplicate tag store purge queue |
US5060136A (en) * | 1989-01-06 | 1991-10-22 | International Business Machines Corp. | Four-way associative cache with dlat and separately addressable arrays used for updating certain bits without reading them out first |
US4967414A (en) * | 1989-01-06 | 1990-10-30 | International Business Machines Corp. | LRU error detection using the collection of read and written LRU bits |
US5146578A (en) * | 1989-05-01 | 1992-09-08 | Zenith Data Systems Corporation | Method of varying the amount of data prefetched to a cache memory in dependence on the history of data requests |
US5133060A (en) * | 1989-06-05 | 1992-07-21 | Compuadd Corporation | Disk controller includes cache memory and a local processor which limits data transfers from memory to cache in accordance with a maximum look ahead parameter |
WO1991004536A1 (en) * | 1989-09-20 | 1991-04-04 | Dolphin Server Technology A/S | Instruction cache architecture for parallel issuing of multiple instructions |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5136700A (en) * | 1989-12-22 | 1992-08-04 | Digital Equipment Corporation | Apparatus and method for reducing interference in two-level cache memories |
DE69129872T2 (de) * | 1990-03-27 | 1999-03-04 | Philips Electronics N.V., Eindhoven | Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher |
DE69128741T2 (de) * | 1990-05-18 | 1998-07-16 | Koninkl Philips Electronics Nv | Mehrstufiger Befehlscachespeicher und Verwendungsverfahren dafür |
US5293609A (en) * | 1991-04-19 | 1994-03-08 | International Business Machines Corporation | Hit-density-based replacement for data cache with prefetching |
DE4391002T1 (de) * | 1992-03-06 | 1995-02-23 | Rambus Inc | Vor-heranholen in einen Cache-Speicher zum minimieren der Hauptspeicherzugriffszeit und der Cache-Speichergröße in einen Computersystem |
US5319766A (en) * | 1992-04-24 | 1994-06-07 | Digital Equipment Corporation | Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system |
US5659713A (en) * | 1992-04-24 | 1997-08-19 | Digital Equipment Corporation | Memory stream buffer with variable-size prefetch depending on memory interleaving configuration |
JP3309425B2 (ja) * | 1992-05-22 | 2002-07-29 | 松下電器産業株式会社 | キャッシュ制御装置 |
US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US6453388B1 (en) | 1992-06-17 | 2002-09-17 | Intel Corporation | Computer system having a bus interface unit for prefetching data from system memory |
US5787475A (en) * | 1992-07-21 | 1998-07-28 | Digital Equipment Corporation | Controlled prefetching of data requested by a peripheral |
US5375223A (en) * | 1993-01-07 | 1994-12-20 | International Business Machines Corporation | Single register arbiter circuit |
US5584002A (en) * | 1993-02-22 | 1996-12-10 | International Business Machines Corporation | Cache remapping using synonym classes |
US5689679A (en) * | 1993-04-28 | 1997-11-18 | Digital Equipment Corporation | Memory system and method for selective multi-level caching using a cache level code |
US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
JP3169155B2 (ja) * | 1993-12-22 | 2001-05-21 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 情報をキャッシュするための回路 |
TW233354B (en) * | 1994-03-04 | 1994-11-01 | Motorola Inc | Data processor with memory cache and method of operation |
US5717942A (en) * | 1994-12-27 | 1998-02-10 | Unisys Corporation | Reset for independent partitions within a computer system |
US5603005A (en) * | 1994-12-27 | 1997-02-11 | Unisys Corporation | Cache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed |
US5701313A (en) * | 1995-02-24 | 1997-12-23 | Unisys Corporation | Method and apparatus for removing soft errors from a memory |
US5511164A (en) * | 1995-03-01 | 1996-04-23 | Unisys Corporation | Method and apparatus for determining the source and nature of an error within a computer system |
US5778436A (en) * | 1995-03-06 | 1998-07-07 | Duke University | Predictive caching system and method based on memory access which previously followed a cache miss |
US5790823A (en) * | 1995-07-13 | 1998-08-04 | International Business Machines Corporation | Operand prefetch table |
US5694568A (en) * | 1995-07-27 | 1997-12-02 | Board Of Trustees Of The University Of Illinois | Prefetch system applicable to complex memory access schemes |
US5761740A (en) * | 1995-11-30 | 1998-06-02 | Unisys Corporation | Method of and apparatus for rapidly loading addressing registers |
US6055621A (en) * | 1996-02-12 | 2000-04-25 | International Business Machines Corporation | Touch history table |
US5724613A (en) * | 1996-05-06 | 1998-03-03 | Vlsi Technology, Inc. | System and method for automatically enabling and disabling a prefetching capability |
US5809566A (en) * | 1996-08-14 | 1998-09-15 | International Business Machines Corporation | Automatic cache prefetch timing with dynamic trigger migration |
US6279098B1 (en) | 1996-12-16 | 2001-08-21 | Unisys Corporation | Method of and apparatus for serial dynamic system partitioning |
US5960455A (en) * | 1996-12-30 | 1999-09-28 | Unisys Corporation | Scalable cross bar type storage controller |
US5875201A (en) * | 1996-12-30 | 1999-02-23 | Unisys Corporation | Second level cache having instruction cache parity error control |
US5970253A (en) * | 1997-01-09 | 1999-10-19 | Unisys Corporation | Priority logic for selecting and stacking data |
US5822766A (en) * | 1997-01-09 | 1998-10-13 | Unisys Corporation | Main memory interface for high speed data transfer |
US5860093A (en) * | 1997-01-21 | 1999-01-12 | Unisys Corporation | Reduced instruction processor/storage controller interface |
US6662216B1 (en) * | 1997-04-14 | 2003-12-09 | International Business Machines Corporation | Fixed bus tags for SMP buses |
US5943686A (en) * | 1997-04-14 | 1999-08-24 | International Business Machines Corporation | Multiple cache directories for non-arbitration concurrent accessing of a cache memory |
US6134643A (en) * | 1997-11-26 | 2000-10-17 | Intel Corporation | Method and apparatus for cache line prediction and prefetching using a prefetch controller and buffer and access history |
US6230260B1 (en) | 1998-09-01 | 2001-05-08 | International Business Machines Corporation | Circuit arrangement and method of speculative instruction execution utilizing instruction history caching |
US7069391B1 (en) | 2000-08-30 | 2006-06-27 | Unisys Corporation | Method for improved first level cache coherency |
US6928517B1 (en) | 2000-08-30 | 2005-08-09 | Unisys Corporation | Method for avoiding delays during snoop requests |
US6931490B2 (en) | 2000-12-15 | 2005-08-16 | Intel Corporation | Set address correlation address predictors for long memory latencies |
US6785797B2 (en) * | 2000-12-19 | 2004-08-31 | Intel Corporation | Address predicting apparatus and methods |
US6697925B1 (en) | 2000-12-22 | 2004-02-24 | Unisys Corporation | Use of a cache ownership mechanism to synchronize multiple dayclocks |
CN1537275A (zh) | 2001-02-24 | 2004-10-13 | �Ҵ���˾ | 低等待时间存储器系统访问 |
ATE336746T1 (de) | 2001-05-29 | 2006-09-15 | Mevis Breastcare Gmbh & Co Kg | Verfahren und vorrichtung zum screening von medizinischen fällen |
US6785775B1 (en) | 2002-03-19 | 2004-08-31 | Unisys Corporation | Use of a cache coherency mechanism as a doorbell indicator for input/output hardware queues |
CA2406047A1 (en) * | 2002-09-30 | 2004-03-30 | Ali Solehdin | A graphical user interface for digital media and network portals using detail-in-context lenses |
US7093075B2 (en) * | 2003-11-07 | 2006-08-15 | International Business Machines Corporation | Location-based placement algorithms for set associative cache memory |
US7386679B2 (en) * | 2004-04-15 | 2008-06-10 | International Business Machines Corporation | System, method and storage medium for memory management |
US7337278B2 (en) * | 2004-04-15 | 2008-02-26 | International Business Machines Corporation | System, method and storage medium for prefetching via memory block tags |
US7716424B2 (en) * | 2004-11-16 | 2010-05-11 | International Business Machines Corporation | Victim prefetching in a cache hierarchy |
US7529891B2 (en) * | 2005-09-19 | 2009-05-05 | Microsoft Corporation | Balanced prefetching exploiting structured data |
JP4327237B2 (ja) * | 2006-02-28 | 2009-09-09 | 富士通株式会社 | プリフェッチ制御装置 |
CN101216781B (zh) * | 2007-12-28 | 2011-03-23 | 中国科学院计算技术研究所 | 一种多处理器系统、装置及方法 |
US8458170B2 (en) * | 2008-06-30 | 2013-06-04 | Yahoo! Inc. | Prefetching data for document ranking |
CN101673247B (zh) * | 2009-09-15 | 2011-10-19 | 威盛电子股份有限公司 | 内存管理系统与方法 |
US9396117B2 (en) * | 2012-01-09 | 2016-07-19 | Nvidia Corporation | Instruction cache power reduction |
US9547358B2 (en) | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
US9552032B2 (en) | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US20150199276A1 (en) * | 2014-01-13 | 2015-07-16 | Samsung Electronics Co., Ltd. | Pre-fetch confirmation queue |
US12118106B2 (en) * | 2019-02-27 | 2024-10-15 | K2 Software, Inc. | Methods and systems for extending row-level security policies |
US12118236B2 (en) * | 2021-08-30 | 2024-10-15 | International Business Machines Corporation | Dynamically allocating memory controller resources for extended prefetching |
Family Cites Families (12)
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 |
US4157587A (en) * | 1977-12-22 | 1979-06-05 | Honeywell Information Systems Inc. | High speed buffer memory system with word prefetch |
US4195343A (en) * | 1977-12-22 | 1980-03-25 | Honeywell Information Systems Inc. | Round robin replacement for a cache store |
US4189770A (en) * | 1978-03-16 | 1980-02-19 | International Business Machines Corporation | Cache bypass control for operand fetches |
US4168541A (en) * | 1978-09-25 | 1979-09-18 | Sperry Rand Corporation | Paired least recently used block replacement system |
DE2853501A1 (de) * | 1978-12-12 | 1980-06-26 | Ibm Deutschland | Speicherhierarchie mit ladungsverschiebungsspeicher |
US4322795A (en) * | 1980-01-24 | 1982-03-30 | Honeywell Information Systems Inc. | Cache memory utilizing selective clearing and least recently used updating |
US4332010A (en) * | 1980-03-17 | 1982-05-25 | International Business Machines Corporation | Cache synonym detection and handling mechanism |
US4349874A (en) * | 1980-04-15 | 1982-09-14 | Honeywell Information Systems Inc. | Buffer system for supply procedure words to a central processor unit |
US4490782A (en) * | 1981-06-05 | 1984-12-25 | International Business Machines Corporation | I/O Storage controller cache system with prefetch determined by requested record's position within data block |
US4583165A (en) * | 1982-06-30 | 1986-04-15 | International Business Machines Corporation | Apparatus and method for controlling storage access in a multilevel storage system |
US4521851A (en) * | 1982-10-13 | 1985-06-04 | Honeywell Information Systems Inc. | Central processor |
-
1984
- 1984-04-06 US US06/597,801 patent/US4807110A/en not_active Expired - Fee Related
-
1985
- 1985-01-31 JP JP60015651A patent/JPS60214059A/ja active Granted
- 1985-02-28 DE DE8585102204T patent/DE3586635T2/de not_active Expired - Fee Related
- 1985-02-28 EP EP85102204A patent/EP0157175B1/en not_active Expired
- 1985-03-01 CA CA000475569A patent/CA1217870A/en not_active Expired
Also Published As
Publication number | Publication date |
---|---|
EP0157175B1 (en) | 1992-09-16 |
EP0157175A2 (en) | 1985-10-09 |
EP0157175A3 (en) | 1989-05-03 |
DE3586635D1 (de) | 1992-10-22 |
DE3586635T2 (de) | 1993-04-08 |
US4807110A (en) | 1989-02-21 |
CA1217870A (en) | 1987-02-10 |
JPH0326863B2 (ja) | 1991-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS60214059A (ja) | キヤツシユ機構 | |
EP0695996B1 (en) | Multi-level cache system | |
US5148538A (en) | Translation look ahead based cache access | |
EP0036110B1 (en) | Cache addressing mechanism | |
US8909871B2 (en) | Data processing system and method for reducing cache pollution by write stream memory access patterns | |
US7426626B2 (en) | TLB lock indicator | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
JPH0364893B2 (ja) | ||
JPH03141443A (ja) | データ格納方法及びマルチ・ウェイ・セット・アソシアチブ・キャッシュ記憶装置 | |
US8370604B2 (en) | Method and system for caching attribute data for matching attributes with physical addresses | |
US5168560A (en) | Microprocessor system private split cache tag stores with the system tag store having a different validity bit for the same data line | |
US6349362B2 (en) | Scheme to partition a large lookaside buffer into an L2 cache array | |
US5515522A (en) | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache | |
EP0752662B1 (en) | Method and apparatus for tagging a multi-way associative cache | |
JP4162493B2 (ja) | 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ | |
JP3929872B2 (ja) | キャッシュメモリ、プロセッサ及びキャッシュ制御方法 | |
EP0173909B1 (en) | Look-aside buffer least recently used marker controller | |
US6574698B1 (en) | Method and system for accessing a cache memory within a data processing system | |
US9053030B2 (en) | Cache memory and control method thereof with cache hit rate | |
JP3078303B2 (ja) | キャッシュメモリ制御回路 | |
JP3824657B2 (ja) | 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法 | |
US20120102271A1 (en) | Cache memory system and cache memory control method | |
JPS6324337A (ja) | キャッシュ・メモリ管理方式 | |
JPH0635801A (ja) | 階層メモリ制御方式 | |
KR19990068873A (ko) | 캐쉬 메모리 |