JPH0683711A - データ処理システムおよびデータ処理方法 - Google Patents
データ処理システムおよびデータ処理方法Info
- Publication number
- JPH0683711A JPH0683711A JP5004313A JP431393A JPH0683711A JP H0683711 A JPH0683711 A JP H0683711A JP 5004313 A JP5004313 A JP 5004313A JP 431393 A JP431393 A JP 431393A JP H0683711 A JPH0683711 A JP H0683711A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- address
- data
- cache
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
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)【要約】
【目的】 2レベル仮想/実セット・アソシアティブ・
キャッシュを提供すること。 【構成】 本データ処理システムは第1メモリ104お
よび第2メモリ106を備え、第2メモリは第1メモリ
が第2メモリにストアされたデータのコピーを保持して
いるかどうかを示した同義語情報を含む。プロセッサ1
02のオペランド・アドレスに対応するアドレスをもつ
データ・ブロックが第1メモリにあれば「ヒット」の出
力が生成されなければ「ミス」の出力が生成される。
「ヒット」ならば、データが第1メモリのロケーション
に入/出力される。一方、オペランド・アドレスは第2
メモリのアドレスとなる変換アドレスに変換され、比較
手段の出力が「ミス」ならば、第2メモリは同義語情報
を出力する。第1メモリがデータ・ブロックのコピーを
保持していることを同義語情報が示していれば、同義語
アドレスが第2メモリから第1メモリに出力される。
キャッシュを提供すること。 【構成】 本データ処理システムは第1メモリ104お
よび第2メモリ106を備え、第2メモリは第1メモリ
が第2メモリにストアされたデータのコピーを保持して
いるかどうかを示した同義語情報を含む。プロセッサ1
02のオペランド・アドレスに対応するアドレスをもつ
データ・ブロックが第1メモリにあれば「ヒット」の出
力が生成されなければ「ミス」の出力が生成される。
「ヒット」ならば、データが第1メモリのロケーション
に入/出力される。一方、オペランド・アドレスは第2
メモリのアドレスとなる変換アドレスに変換され、比較
手段の出力が「ミス」ならば、第2メモリは同義語情報
を出力する。第1メモリがデータ・ブロックのコピーを
保持していることを同義語情報が示していれば、同義語
アドレスが第2メモリから第1メモリに出力される。
Description
【0001】
【産業上の利用分野】本発明は、一般的には、データ・
プロセッサの分野に関し、具体的には、2レベル仮想/
実セット・アソシアティブ・キャッシュ・システム(t
wo−level virtual/real set
−associate cachesystem)およ
び方法に関する。
プロセッサの分野に関し、具体的には、2レベル仮想/
実セット・アソシアティブ・キャッシュ・システム(t
wo−level virtual/real set
−associate cachesystem)およ
び方法に関する。
【0002】
【従来の技術】本明細書で論じている基本的概念のいく
つかは、いくつかの参考文献で詳しく説明されている。
その1つのとして、Hennessy,John L外
著の「コンピュータ・アーキテクチャ−量的解決手法
(Computer Architecture−A
Quantitative Approach)」(M
organ Kaufmann Publisher
s,Inc.,San Mateo,Californ
ia,1990)がある。同書は、特にその第8章は、
本発明が課題としているキャッシュ・メモリの問題を論
じたすぐれた文献である。
つかは、いくつかの参考文献で詳しく説明されている。
その1つのとして、Hennessy,John L外
著の「コンピュータ・アーキテクチャ−量的解決手法
(Computer Architecture−A
Quantitative Approach)」(M
organ Kaufmann Publisher
s,Inc.,San Mateo,Californ
ia,1990)がある。同書は、特にその第8章は、
本発明が課題としているキャッシュ・メモリの問題を論
じたすぐれた文献である。
【0003】キャッシュとは、比較的小型の高速メモリ
であり、主記憶域の中で最も最近に使用されたブロック
の内容を保持するために使用されるものである。キャッ
シュは、高速のプロセッサ・サイクル・タイムと低速の
メモリ・アクセス・タイムとの間のギャップを埋めるた
めに使用される。キャッシュは、主メモリと物理的に区
別され、プログラムがアドレス指定できないのが通常で
ある。キャッシュ・メモリ・システムをもつ従来のデー
タ処理システムは、中央処理装置(CPUまたはプロセ
ッサ)、キャッシュ・メモリ、および二次的メモリ(例
えば、上位レベル・キャッシュ・メモリまたは主メモ
リ)を備えている。プロセッサはオペランド・アドレス
を生成し、このアドレスは、変換される場合も、変換さ
れない場合も、キャッシュ・メモリのアドレスと比較さ
れる。キャッシュが「ヒット」すれば、キャッシュ・メ
モリ内のアドレス指定されたロケーションがアクセスさ
れる。キャッシュが「ミス」したときは、そのアドレス
は変換され、そのあとで二次的メモリに渡される。デー
タは二次的メモリから取り出され、キャッシュに置かれ
る。これが行われると、CPUはそのデータが使用可能
になるまで休止させられるのが普通である。
であり、主記憶域の中で最も最近に使用されたブロック
の内容を保持するために使用されるものである。キャッ
シュは、高速のプロセッサ・サイクル・タイムと低速の
メモリ・アクセス・タイムとの間のギャップを埋めるた
めに使用される。キャッシュは、主メモリと物理的に区
別され、プログラムがアドレス指定できないのが通常で
ある。キャッシュ・メモリ・システムをもつ従来のデー
タ処理システムは、中央処理装置(CPUまたはプロセ
ッサ)、キャッシュ・メモリ、および二次的メモリ(例
えば、上位レベル・キャッシュ・メモリまたは主メモ
リ)を備えている。プロセッサはオペランド・アドレス
を生成し、このアドレスは、変換される場合も、変換さ
れない場合も、キャッシュ・メモリのアドレスと比較さ
れる。キャッシュが「ヒット」すれば、キャッシュ・メ
モリ内のアドレス指定されたロケーションがアクセスさ
れる。キャッシュが「ミス」したときは、そのアドレス
は変換され、そのあとで二次的メモリに渡される。デー
タは二次的メモリから取り出され、キャッシュに置かれ
る。これが行われると、CPUはそのデータが使用可能
になるまで休止させられるのが普通である。
【0004】キャッシュ・メモリは、「局所性の特性」
として知られる経験的観察から生まれたものである(D
enning,P.J.,「プログラム挙動のモデル化
について(On modeling program
behavior)」、Proc.Spring Jo
int Computer Conference,A
FIPS Press,pp.937−944,197
2)。この「局所性の特性」は、近い将来に使用される
情報は現在使用中のその情報となる可能性があり(時間
による局所性)、その情報は現在使用中の情報と論理的
に隣接している(空間による局所性)と表現することが
できる。
として知られる経験的観察から生まれたものである(D
enning,P.J.,「プログラム挙動のモデル化
について(On modeling program
behavior)」、Proc.Spring Jo
int Computer Conference,A
FIPS Press,pp.937−944,197
2)。この「局所性の特性」は、近い将来に使用される
情報は現在使用中のその情報となる可能性があり(時間
による局所性)、その情報は現在使用中の情報と論理的
に隣接している(空間による局所性)と表現することが
できる。
【0005】プログラムによって参照されるオブジェク
トのすべてを主メモリに置いておく必要はない。「仮想
メモリ」をもつコンピュータならば、一部のオブジェク
トをディスクなどに置いておくことが可能である。アド
レス空間は、通常、「ページ」と呼ばれる固定サイズの
ブロックに分割されている。どの時点でも、各ページは
主メモリかディスクのどちらかに置かれている。CPU
があるページ内のあるエントリを参照し、そのエントリ
がキャッシュまたは主メモリに存在しないと、「ページ
不在(page fault)」が起こり、そのページ
全体がディスクから主メモリに移されることになる。キ
ャッシュと主メモリとの関係は、主メモリとディスクと
の関係と同じである。
トのすべてを主メモリに置いておく必要はない。「仮想
メモリ」をもつコンピュータならば、一部のオブジェク
トをディスクなどに置いておくことが可能である。アド
レス空間は、通常、「ページ」と呼ばれる固定サイズの
ブロックに分割されている。どの時点でも、各ページは
主メモリかディスクのどちらかに置かれている。CPU
があるページ内のあるエントリを参照し、そのエントリ
がキャッシュまたは主メモリに存在しないと、「ページ
不在(page fault)」が起こり、そのページ
全体がディスクから主メモリに移されることになる。キ
ャッシュと主メモリとの関係は、主メモリとディスクと
の関係と同じである。
【0006】メモリ階層は多数のレベルから構成されて
いるのが通常であるが、その管理は一度に2つの隣接す
るレベル間で行われる。「上位」レベル、つまり、CP
Uに近いレベルは、「下位」レベルよりも小さく、高速
である。2レベル階層に存在する場合も、存在しない場
合も、情報の最小単位は「ブロック」と呼ばれる。ブロ
ックのサイズには、固定長と可変長の2種類がある。あ
るブロックが固定長である場合は、メモリ・サイズはそ
のブロック・サイズの倍数になっている。上位レベルへ
のアクセスが成功したことをヒットといい、失敗したこ
とをミスという。
いるのが通常であるが、その管理は一度に2つの隣接す
るレベル間で行われる。「上位」レベル、つまり、CP
Uに近いレベルは、「下位」レベルよりも小さく、高速
である。2レベル階層に存在する場合も、存在しない場
合も、情報の最小単位は「ブロック」と呼ばれる。ブロ
ックのサイズには、固定長と可変長の2種類がある。あ
るブロックが固定長である場合は、メモリ・サイズはそ
のブロック・サイズの倍数になっている。上位レベルへ
のアクセスが成功したことをヒットといい、失敗したこ
とをミスという。
【0007】メモリのアドレスはいくつかの部分に分割
され、それぞれが階層の各部分にアクセスする。「ブロ
ック・フレーム・アドレス」はアドレスの上位桁部分で
あり、階層のそのレベルに置かれているブロックを指定
している。「ブロック・オフセット・アドレス」はアド
レスの下位桁部分であり、ブロック内のエントリを指定
している。ブロック・オフセット・アドレスのサイズは log2 (ブロックのサイズ) であるので、ブロック・フレーム・アドレスのサイズは
そのレベルにおけるアドレス全体のサイズからブロック
・オフセット・アドレスのサイズを差し引いたサイズと
なる。
され、それぞれが階層の各部分にアクセスする。「ブロ
ック・フレーム・アドレス」はアドレスの上位桁部分で
あり、階層のそのレベルに置かれているブロックを指定
している。「ブロック・オフセット・アドレス」はアド
レスの下位桁部分であり、ブロック内のエントリを指定
している。ブロック・オフセット・アドレスのサイズは log2 (ブロックのサイズ) であるので、ブロック・フレーム・アドレスのサイズは
そのレベルにおけるアドレス全体のサイズからブロック
・オフセット・アドレスのサイズを差し引いたサイズと
なる。
【0008】CPUは、情報が階層の最上位レベルにあ
るかどうかを、なんらかの方法で判断しなければならな
い。この検査はメモリをアクセスするたびに行われるの
で、ヒット・タイムに影響を与えることになる。パフォ
ーマンスを望ましいレベルに保つためには、通常、この
検査をハードウェアで実現する必要がある。メモリ階層
の決定的な制約は、ブロックを上位レベルのメモリと下
位レベルのメモリ間で転送するためのメカニズムをコン
ピュータに実装させる必要があることである。ブロック
転送が数10クロック・サイクルで行われる場合は、ハ
ードウェアで制御される。ブロック転送が数千クロック
・サイクルで行われる場合は、ソフトウェアで制御する
ことが可能である。キャッシュの場合は、ブロックでは
なく、「ライン」(line)の用語が用いられてい
る。
るかどうかを、なんらかの方法で判断しなければならな
い。この検査はメモリをアクセスするたびに行われるの
で、ヒット・タイムに影響を与えることになる。パフォ
ーマンスを望ましいレベルに保つためには、通常、この
検査をハードウェアで実現する必要がある。メモリ階層
の決定的な制約は、ブロックを上位レベルのメモリと下
位レベルのメモリ間で転送するためのメカニズムをコン
ピュータに実装させる必要があることである。ブロック
転送が数10クロック・サイクルで行われる場合は、ハ
ードウェアで制御される。ブロック転送が数千クロック
・サイクルで行われる場合は、ソフトウェアで制御する
ことが可能である。キャッシュの場合は、ブロックでは
なく、「ライン」(line)の用語が用いられてい
る。
【0009】ブロックを置く場所に制約があるために、
キャッシュ編成には3種類のものがある。各ブロックを
キャッシュに置いておくことができる場所が1つしかな
いときは、キャッシュは「直接マップ」される(dir
ect mapped)と言われる。このマッピング
は、通常、キャッシュ内のブロック数を法(モジュロ)
とするブロック・フレーム・アドレス((block−
frame address)modulo(numb
er of blocks in cache))であ
る。ブロックをキャッシュ内の限れられたブロック・セ
ットに置くことができる場合は、キャッシュは「セット
・アソシアティブ」(set associativ
e)であると言われる。「セット」とは、キャッシュ内
の2またはそれ以上のブロックの集まりである。ブロッ
クは最初にセット上にマップされ、そのあと、セット内
のどこにでもブロックを置くことができる。セットは、
通常、ビット選択によって選択される。つまり、キャッ
シュ内のセット数を法とするブロック・フレーム・アド
レス((block−frame address)m
odulo(number of sets in c
ache))である。セット内にn個のブロックがある
とき、キャッシュ配置は「nウェイ・セット・アソシア
ティブ」と呼ばれる。
キャッシュ編成には3種類のものがある。各ブロックを
キャッシュに置いておくことができる場所が1つしかな
いときは、キャッシュは「直接マップ」される(dir
ect mapped)と言われる。このマッピング
は、通常、キャッシュ内のブロック数を法(モジュロ)
とするブロック・フレーム・アドレス((block−
frame address)modulo(numb
er of blocks in cache))であ
る。ブロックをキャッシュ内の限れられたブロック・セ
ットに置くことができる場合は、キャッシュは「セット
・アソシアティブ」(set associativ
e)であると言われる。「セット」とは、キャッシュ内
の2またはそれ以上のブロックの集まりである。ブロッ
クは最初にセット上にマップされ、そのあと、セット内
のどこにでもブロックを置くことができる。セットは、
通常、ビット選択によって選択される。つまり、キャッ
シュ内のセット数を法とするブロック・フレーム・アド
レス((block−frame address)m
odulo(number of sets in c
ache))である。セット内にn個のブロックがある
とき、キャッシュ配置は「nウェイ・セット・アソシア
ティブ」と呼ばれる。
【0010】直接マップから完全アソシアティブまでの
キャッシュの範囲は、実際には、セット・アソシアティ
ブのレベルの連続体である。直接マップは単純に1ウェ
イ・セット・アソシアティブであるが、「m」個のブロ
ックをもつ完全アソシアティブ・キャッシュは「mウェ
イ」セット・アソシアティブと呼ぶことができる。
キャッシュの範囲は、実際には、セット・アソシアティ
ブのレベルの連続体である。直接マップは単純に1ウェ
イ・セット・アソシアティブであるが、「m」個のブロ
ックをもつ完全アソシアティブ・キャッシュは「mウェ
イ」セット・アソシアティブと呼ぶことができる。
【0011】キャッシュでは、ブロック・フレーム・ア
ドレスを示したアドレス・タグが各ブロックに付いてい
る。必要とする情報を収めている可能性のあるすべての
キャッシュ・ブロックはそのタグが検査されて、それが
CPUからのブロック・フレーム・アドレスと一致して
いるかどうかが確かめられる。スピードは非常に重要で
あるので、可能な限りのタグは並列にサーチ(探索)さ
れる。サーチを順次に行うと、セット・アソシアティブ
が非生産的になるためである。
ドレスを示したアドレス・タグが各ブロックに付いてい
る。必要とする情報を収めている可能性のあるすべての
キャッシュ・ブロックはそのタグが検査されて、それが
CPUからのブロック・フレーム・アドレスと一致して
いるかどうかが確かめられる。スピードは非常に重要で
あるので、可能な限りのタグは並列にサーチ(探索)さ
れる。サーチを順次に行うと、セット・アソシアティブ
が非生産的になるためである。
【0012】キャッシュ・ブロックに有効な情報が入っ
ているかどうかを、なんらかの方法で確かめる必要があ
る。最もよく行われている方法は、そのエントリに有効
なアドレスが入っているかどうかを示した「有効ビッ
ト」をタグに付加することである。このビットがセット
されていなければ、このアドレスに一致する情報がない
ことを示す。このタグは、各ブロックごとに1つ必要で
ある。ブロック・サイズを大きくすると、キャッシュ・
エントリ当たりのタグ・オーバヘッド費用は、キャッシ
ュの総費用に占める割合が小さくなるという利点が得ら
れる。
ているかどうかを、なんらかの方法で確かめる必要があ
る。最もよく行われている方法は、そのエントリに有効
なアドレスが入っているかどうかを示した「有効ビッ
ト」をタグに付加することである。このビットがセット
されていなければ、このアドレスに一致する情報がない
ことを示す。このタグは、各ブロックごとに1つ必要で
ある。ブロック・サイズを大きくすると、キャッシュ・
エントリ当たりのタグ・オーバヘッド費用は、キャッシ
ュの総費用に占める割合が小さくなるという利点が得ら
れる。
【0013】CPUアドレスは3つのフィールドに分割
されている。これらのフィールドはセット・アソシアテ
ィブ・キャッシュからデータを探すために使用される。
必要とするデータをブロックから選択するために使用さ
れる「ブロック・オフセット」フィールド、セットを選
択するために使用される「インデックス」フィールド、
および比較のために使用される「タグ」フィールドであ
る。比較を行うアドレスをタグよりも多くすることが可
能であるが、その必要はない。総サイズが同じに保たれ
ていれば、アソシアティブを大きくすると、セット当た
りのブロック数が増加するので、「インデックス」のサ
イズが減少し、「タグ」のサイズが増加する。
されている。これらのフィールドはセット・アソシアテ
ィブ・キャッシュからデータを探すために使用される。
必要とするデータをブロックから選択するために使用さ
れる「ブロック・オフセット」フィールド、セットを選
択するために使用される「インデックス」フィールド、
および比較のために使用される「タグ」フィールドであ
る。比較を行うアドレスをタグよりも多くすることが可
能であるが、その必要はない。総サイズが同じに保たれ
ていれば、アソシアティブを大きくすると、セット当た
りのブロック数が増加するので、「インデックス」のサ
イズが減少し、「タグ」のサイズが増加する。
【0014】直接マップによる配置の利点は、ハードウ
ェアによる判断が単純化されることである。実際に、非
常に程単純化されているので、選択が行われない。つま
り、1つのブロックだけがヒットしたかどうか検査さ
れ、そのブロックだけが置き換わることができる。完全
アソシアティブまたはセット・アソシアティブによる配
置では、ミスが起こったとき、いくつかのブロックから
選択する必要がある。どのブロックを置き換えるかを選
択する際に2つの基本的方式が採用されている。
ェアによる判断が単純化されることである。実際に、非
常に程単純化されているので、選択が行われない。つま
り、1つのブロックだけがヒットしたかどうか検査さ
れ、そのブロックだけが置き換わることができる。完全
アソシアティブまたはセット・アソシアティブによる配
置では、ミスが起こったとき、いくつかのブロックから
選択する必要がある。どのブロックを置き換えるかを選
択する際に2つの基本的方式が採用されている。
【0015】1つは、候補となるブロックをランダムに
選択する方式である。いくつかのシステムでは、データ
を擬似ランダム方式でブロック群間に分散させて、再現
性を可能にする方式を採用している。
選択する方式である。いくつかのシステムでは、データ
を擬似ランダム方式でブロック群間に分散させて、再現
性を可能にする方式を採用している。
【0016】もう1つは、LRU(least−rec
ently used)法と呼ばれる方式である。すぐ
に必要になる情報が破棄される可能性を少なくするため
に、ブロックへのアクセスが記録される。置き換えられ
るブロックは、最も長時間使用されなかったブロックで
ある。当然の結果として、時間による局所性が利用され
る。つまり、最近に使用されたブロックが再び使用され
る可能性があれば、破棄される最有力の候補は、最近に
使用されなかったブロックとなる。
ently used)法と呼ばれる方式である。すぐ
に必要になる情報が破棄される可能性を少なくするため
に、ブロックへのアクセスが記録される。置き換えられ
るブロックは、最も長時間使用されなかったブロックで
ある。当然の結果として、時間による局所性が利用され
る。つまり、最近に使用されたブロックが再び使用され
る可能性があれば、破棄される最有力の候補は、最近に
使用されなかったブロックとなる。
【0017】どの時点でも、コンピュータでは複数のプ
ロセスが実行されているので、物理メモリの一部を多数
プロセス間で共用させる方法が必要になる。その1つの
方法が「仮想メモリ」である。この仮想メモリ方式で
は、物理メモリをいくつかのブロックに分割し、それら
のブロックをいくつかの異なるプロセスに割り振ってい
る。仮想メモリ方式によるときは、CPUは「仮想」ア
ドレスを生成し、これらはハードウェアとソフトウェア
の組み合わせにより「物理アドレス」に変換される。物
理アドレスは主メモリをアクセスするために使用され
る。このプロセスのことを、「メモリ・マッピング」ま
たは「アドレス変換」と呼んでいる。現在、仮想メモリ
によって制御されるメモリ階層レベルとしては、DRA
Mと磁気ディスクの2つがある。
ロセスが実行されているので、物理メモリの一部を多数
プロセス間で共用させる方法が必要になる。その1つの
方法が「仮想メモリ」である。この仮想メモリ方式で
は、物理メモリをいくつかのブロックに分割し、それら
のブロックをいくつかの異なるプロセスに割り振ってい
る。仮想メモリ方式によるときは、CPUは「仮想」ア
ドレスを生成し、これらはハードウェアとソフトウェア
の組み合わせにより「物理アドレス」に変換される。物
理アドレスは主メモリをアクセスするために使用され
る。このプロセスのことを、「メモリ・マッピング」ま
たは「アドレス変換」と呼んでいる。現在、仮想メモリ
によって制御されるメモリ階層レベルとしては、DRA
Mと磁気ディスクの2つがある。
【0018】キャッシュと仮想メモリとの間には、他に
も違いがある。キャッシュがミスしたときの置換は主に
ハードウェアによって制御されるのに対し、仮想メモリ
の置換は主にオペレーティング・システムによって制御
される。ミス時間が長くなると、そのペナルティとし
て、オペレーティング・システムが介入する機会が多く
なり、どれを置換すべきかを判断するために消費する時
間が多くなる。仮想メモリのサイズはCPUアドレスの
サイズによって決まるが、キャッシュのサイズは通常C
PUアドレスから独立している。二次的記憶装置は、階
層における主メモリの下位レベル・メモリとして働くほ
かに、通常では、アドレス空間に含まれないファイル・
システムのためにも使用される。二次的記憶装置の大部
分は、実際には、ファイル・システムが占有している。
も違いがある。キャッシュがミスしたときの置換は主に
ハードウェアによって制御されるのに対し、仮想メモリ
の置換は主にオペレーティング・システムによって制御
される。ミス時間が長くなると、そのペナルティとし
て、オペレーティング・システムが介入する機会が多く
なり、どれを置換すべきかを判断するために消費する時
間が多くなる。仮想メモリのサイズはCPUアドレスの
サイズによって決まるが、キャッシュのサイズは通常C
PUアドレスから独立している。二次的記憶装置は、階
層における主メモリの下位レベル・メモリとして働くほ
かに、通常では、アドレス空間に含まれないファイル・
システムのためにも使用される。二次的記憶装置の大部
分は、実際には、ファイル・システムが占有している。
【0019】仮想メモリには、関連する手法がいくつか
ある。仮想メモリ・システムは次の2種類に分類するこ
とができる。1つは、「ページ」とよばれる固定サイズ
・ブロックからなるものであり、もう1つは、「セグメ
ント」と呼ばれる可変サイズ・ブロックからなるもので
ある。ページは512バイト〜8192バイトの範囲内
で固定しているのが代表的であるのに対し、セグメント
・サイズは可変になっている。どの計算機でもサポート
される最大セグメントは216バイト〜252バイトまでの
範囲であり、最小セグメントは1バイトである。
ある。仮想メモリ・システムは次の2種類に分類するこ
とができる。1つは、「ページ」とよばれる固定サイズ
・ブロックからなるものであり、もう1つは、「セグメ
ント」と呼ばれる可変サイズ・ブロックからなるもので
ある。ページは512バイト〜8192バイトの範囲内
で固定しているのが代表的であるのに対し、セグメント
・サイズは可変になっている。どの計算機でもサポート
される最大セグメントは216バイト〜252バイトまでの
範囲であり、最小セグメントは1バイトである。
【0020】ページ化仮想メモリを使用するか、セグメ
ント化仮想メモリを使用するかによって、CPUは影響
される。ページ化アドレス指定では、単一の固定サイズ
・アドレスがページ番号とページ内のオフセットに分割
されている。セグメント化アドレスでは、アドレスが単
一になっていない。可変サイズのセグメントでは、セグ
メント番号用に1ワード、セグメント内のオフセット用
に1ワード、合計2ワードが必要である。アドレス空間
をセグメント化しない方がコンパイラが扱いやすくな
る。ページ化とセグメント化のどちらも、ページ番号ま
たはセグメント番号によってインデックス付けされるデ
ータ構造に依存する。このデータ構造にはブロックのア
ドレスが入っている。ページ化の場合は、オフセットは
この物理ページ・アドレスに連結されるだけである。セ
グメント化の場合は、オフセットがセグメントの物理ア
ドレスに加えられて、最終的な仮想アドレスが得られ
る。物理ページ・アドレスを収めているこのデータ構造
は、「ページ・テーブル」の形体になっているのが普通
である。仮想ページ番号によってインデックス付けされ
ると、テーブルのサイズは仮想アドレス空間内のページ
の数となる。アドレス変換時間を短縮するために、コン
ピュータは、アドレス変換専用のキャッシュを使用して
いる。このキャッシュは変換索引バッファ(TLB)
(Translation lookaside bo
ffer)、簡略化して変換バッファと呼ばれている。
ント化仮想メモリを使用するかによって、CPUは影響
される。ページ化アドレス指定では、単一の固定サイズ
・アドレスがページ番号とページ内のオフセットに分割
されている。セグメント化アドレスでは、アドレスが単
一になっていない。可変サイズのセグメントでは、セグ
メント番号用に1ワード、セグメント内のオフセット用
に1ワード、合計2ワードが必要である。アドレス空間
をセグメント化しない方がコンパイラが扱いやすくな
る。ページ化とセグメント化のどちらも、ページ番号ま
たはセグメント番号によってインデックス付けされるデ
ータ構造に依存する。このデータ構造にはブロックのア
ドレスが入っている。ページ化の場合は、オフセットは
この物理ページ・アドレスに連結されるだけである。セ
グメント化の場合は、オフセットがセグメントの物理ア
ドレスに加えられて、最終的な仮想アドレスが得られ
る。物理ページ・アドレスを収めているこのデータ構造
は、「ページ・テーブル」の形体になっているのが普通
である。仮想ページ番号によってインデックス付けされ
ると、テーブルのサイズは仮想アドレス空間内のページ
の数となる。アドレス変換時間を短縮するために、コン
ピュータは、アドレス変換専用のキャッシュを使用して
いる。このキャッシュは変換索引バッファ(TLB)
(Translation lookaside bo
ffer)、簡略化して変換バッファと呼ばれている。
【0021】ほとんどのオペレーティング・システムで
は、いずれも、LRUブロックを置き換えることを試み
ているが、このブロックは最も必要とされない可能性が
あるためである。オペレーティング・システムがLRU
を予測するのを容易にするために、多くの計算機では、
「使用ビット」または「参照ビット」が用意されてい
る。このビットは、あるページがアクセスされると、セ
ットされるようになっている。オペレーティング・シス
テムは使用ビットを定期的にクリアし、そのあと使用ビ
ットを記録しておき、ある特定の時間期間にどのページ
がタッチされたかの判断を行いやすくしている。このよ
うに記録にとっておくと、オペレーティング・システム
は最も長期間参照されなかったページを選択することが
できる。
は、いずれも、LRUブロックを置き換えることを試み
ているが、このブロックは最も必要とされない可能性が
あるためである。オペレーティング・システムがLRU
を予測するのを容易にするために、多くの計算機では、
「使用ビット」または「参照ビット」が用意されてい
る。このビットは、あるページがアクセスされると、セ
ットされるようになっている。オペレーティング・シス
テムは使用ビットを定期的にクリアし、そのあと使用ビ
ットを記録しておき、ある特定の時間期間にどのページ
がタッチされたかの判断を行いやすくしている。このよ
うに記録にとっておくと、オペレーティング・システム
は最も長期間参照されなかったページを選択することが
できる。
【0022】TLBエントリは、タグが仮想アドレスの
部分を保持し、データ部分が物理ページ・フレーム番
号、保護フィールド、使用ビット、およびダーティ(d
irty)ビットを保持している点で、キャッシュ・エ
ントリと似ている。置換時にブロックを書き戻す回数を
減らすために、「ダーティ・ビット」と呼ばれる機能が
よく使用されている。このステータス(状況)ビット
は、ブロックがキャッシュに置かれているとき変更され
たか否かを示す。変更されていなければ、下位レベルに
キャッシュと同じ情報があるので、そのブロックを書か
ない。ページ・テーブル・エントリの物理ページ・フレ
ーム番号や保護を変更するときは、オペレーティング・
システムは旧エントリがTLBにないことを確かめる必
要がある。これを怠ると、システムは正しく動作しない
ことになる。なお、このダーティ・ビットは、対応する
ページがダーティであることを意味し、TLBでのアド
レス変換がダーティであること、あるいはデータ・キャ
ッシュ内の特定のブロックがダーティであることを意味
するものではない。1つの例として、あるページがダー
ティでなければ、破棄されて、CPUが要求する新しい
ラインで置換されるだけである。
部分を保持し、データ部分が物理ページ・フレーム番
号、保護フィールド、使用ビット、およびダーティ(d
irty)ビットを保持している点で、キャッシュ・エ
ントリと似ている。置換時にブロックを書き戻す回数を
減らすために、「ダーティ・ビット」と呼ばれる機能が
よく使用されている。このステータス(状況)ビット
は、ブロックがキャッシュに置かれているとき変更され
たか否かを示す。変更されていなければ、下位レベルに
キャッシュと同じ情報があるので、そのブロックを書か
ない。ページ・テーブル・エントリの物理ページ・フレ
ーム番号や保護を変更するときは、オペレーティング・
システムは旧エントリがTLBにないことを確かめる必
要がある。これを怠ると、システムは正しく動作しない
ことになる。なお、このダーティ・ビットは、対応する
ページがダーティであることを意味し、TLBでのアド
レス変換がダーティであること、あるいはデータ・キャ
ッシュ内の特定のブロックがダーティであることを意味
するものではない。1つの例として、あるページがダー
ティでなければ、破棄されて、CPUが要求する新しい
ラインで置換されるだけである。
【0023】アクセス時間を短縮するために、従来の解
決手法によれば、仮想アドレスをTLB経由で送ると
き、アドレスの物理部分を使用してキャッシュのインデ
ックス付け(インデクシング)を行っている。これに
は、直接マップ方式のキャッシュをページ・サイズより
大きくできないという制約がある。IBMシステム/3
70では、キャッシュ・サイズを大きくして、4KBペ
ージが収容できるようにするために、高度のアソシアテ
ィビィティを使用して、物理インデックスを付けてもキ
ャッシュがアクセスできるようにしている。例えば、I
BM 3033では、16ウェイ・セット・アソシアテ
ィブを使用し、ライン・サイズは64バイトになってい
る。もっとも研究結果(Smith,A.J.,「キャ
ッシュ・メモリ(cache memories)」、
Computing Survey,Vol.14,N
o.3)によれば、セット・アソシアティブが8ウェイ
を越えると、ミス率にとって殆ど利点がないことを示し
ているが。(IBM「IBM3033プロセッサ:動作
の理論/ダイヤグラム・マニュアル(IBM 3033
processor complex:theory
of operation/diagrams ma
mval) Vol.4,IBM Poughkeep
sie,New York,1978。)サイズの制約
を受けないでキャッシュ・ヒットを高速化する1つの方
法は、メモリ・アクセスをより多重度にパイプライン化
することであり、この場合、TLBはパイプラインの1
つのステップにすぎない。TLBはキャッシュよりも小
型の独立の機構であり、より短いアクセス時間を可能に
する。この方式はメモリ待ち時間を変化させないが、C
PUパイプラインの効率性を利用して、メモリのバンド
幅を広くする。
決手法によれば、仮想アドレスをTLB経由で送ると
き、アドレスの物理部分を使用してキャッシュのインデ
ックス付け(インデクシング)を行っている。これに
は、直接マップ方式のキャッシュをページ・サイズより
大きくできないという制約がある。IBMシステム/3
70では、キャッシュ・サイズを大きくして、4KBペ
ージが収容できるようにするために、高度のアソシアテ
ィビィティを使用して、物理インデックスを付けてもキ
ャッシュがアクセスできるようにしている。例えば、I
BM 3033では、16ウェイ・セット・アソシアテ
ィブを使用し、ライン・サイズは64バイトになってい
る。もっとも研究結果(Smith,A.J.,「キャ
ッシュ・メモリ(cache memories)」、
Computing Survey,Vol.14,N
o.3)によれば、セット・アソシアティブが8ウェイ
を越えると、ミス率にとって殆ど利点がないことを示し
ているが。(IBM「IBM3033プロセッサ:動作
の理論/ダイヤグラム・マニュアル(IBM 3033
processor complex:theory
of operation/diagrams ma
mval) Vol.4,IBM Poughkeep
sie,New York,1978。)サイズの制約
を受けないでキャッシュ・ヒットを高速化する1つの方
法は、メモリ・アクセスをより多重度にパイプライン化
することであり、この場合、TLBはパイプラインの1
つのステップにすぎない。TLBはキャッシュよりも小
型の独立の機構であり、より短いアクセス時間を可能に
する。この方式はメモリ待ち時間を変化させないが、C
PUパイプラインの効率性を利用して、メモリのバンド
幅を広くする。
【0024】もう1つの方法は、仮想アドレスとの突き
合わせを直接に行うことである。この種のキャッシュは
「仮想キャッシュ」と呼ばれる。この方法によると、キ
ャッシュ・ヒットからTLB変換時間が不要になる。し
かるに、仮想アドレス方式のキャッシュは余り作られて
いない。なぜなのか。その理由の1つは、プロセスが切
り替わるたびに、仮想アドレスは異なる物理アドレスを
指すために、キャッシュをフラッシュする必要があるこ
とである。この解決法の1つは、プロセスIDタグ(P
ID)を使用してキャッシュ・アドレス・タグの幅を大
きくすることである。オペレーティング・システムがこ
れらのタグをプロセスに割り当てれば、PIDがリサイ
クルするときだけキャッシュをフラッシュすればよい
(PIDを使用すると、保護が得られる)。
合わせを直接に行うことである。この種のキャッシュは
「仮想キャッシュ」と呼ばれる。この方法によると、キ
ャッシュ・ヒットからTLB変換時間が不要になる。し
かるに、仮想アドレス方式のキャッシュは余り作られて
いない。なぜなのか。その理由の1つは、プロセスが切
り替わるたびに、仮想アドレスは異なる物理アドレスを
指すために、キャッシュをフラッシュする必要があるこ
とである。この解決法の1つは、プロセスIDタグ(P
ID)を使用してキャッシュ・アドレス・タグの幅を大
きくすることである。オペレーティング・システムがこ
れらのタグをプロセスに割り当てれば、PIDがリサイ
クルするときだけキャッシュをフラッシュすればよい
(PIDを使用すると、保護が得られる)。
【0025】仮想キャッシュの採用が普及化しないもう
1つの理由は、オペレーティング・システムとユーザ・
プログラムが同じ物理アドレスに異なる仮想アドレスを
使用していることに係わりがある。このように重複する
アドレスは「同義語」(シノニム)または「別名」(a
lias−エリアス)と呼ばれ、結果として、同じデー
タのコピーが2つ仮想キャッシュに置かれることにな
る。従って、一方のコピーを変更すると、他方のコピー
は正しい値が反映されないことになる。物理キャッシュ
では、アクセスが最初に同一物理キャッシュ・ブロック
に変換されるので、このようなことは起こらない。アン
チ・エリアス(anti−aliasing)と呼ばれ
るハードウェア方式によれば、すべてのキャッシュ・ブ
ロックに固有の物理アドレスを保証することができる
が、別名(エリアス)にあるアドレス・ビットを共用さ
せることによってソフトウェアはこのことをさらに容易
にすることができる。
1つの理由は、オペレーティング・システムとユーザ・
プログラムが同じ物理アドレスに異なる仮想アドレスを
使用していることに係わりがある。このように重複する
アドレスは「同義語」(シノニム)または「別名」(a
lias−エリアス)と呼ばれ、結果として、同じデー
タのコピーが2つ仮想キャッシュに置かれることにな
る。従って、一方のコピーを変更すると、他方のコピー
は正しい値が反映されないことになる。物理キャッシュ
では、アクセスが最初に同一物理キャッシュ・ブロック
に変換されるので、このようなことは起こらない。アン
チ・エリアス(anti−aliasing)と呼ばれ
るハードウェア方式によれば、すべてのキャッシュ・ブ
ロックに固有の物理アドレスを保証することができる
が、別名(エリアス)にあるアドレス・ビットを共用さ
せることによってソフトウェアはこのことをさらに容易
にすることができる。
【0026】従来のキャッシュはページ・オフセットを
使用して、キャッシュ・ラインを選択するのと同時に、
TLBを使用して仮想アドレスから実アドレスへの変換
を行っている。固定ページ・サイズとライン・サイズが
一定のとき、キャッシュ・データ・アレイをアクセスす
るとき利用できるビットの数は一定しており、通常は少
数である。技術が向上すれば、利用できるキャッシュ・
アレイのサイズも向上する。従って、アドレス変換を並
行に行うためには、キャッシュ・セット・アソシアティ
ブが大きくなることも必然である。
使用して、キャッシュ・ラインを選択するのと同時に、
TLBを使用して仮想アドレスから実アドレスへの変換
を行っている。固定ページ・サイズとライン・サイズが
一定のとき、キャッシュ・データ・アレイをアクセスす
るとき利用できるビットの数は一定しており、通常は少
数である。技術が向上すれば、利用できるキャッシュ・
アレイのサイズも向上する。従って、アドレス変換を並
行に行うためには、キャッシュ・セット・アソシアティ
ブが大きくなることも必然である。
【0027】IBM RS/6000(Bakoglu
外著「IBM RISCシステム/6000プロセッ
サ:ハードウェアの概要(hardware over
view)」、IBM J.Research and
Development Vol.34,No.1,
pp.12−22,1990)のような他のシステムで
は、仮想アドレスと実アドレスの一部をデータ・キャッ
シュ内で同一に保つことを、ソフトウェアで行ってい
る。しかし、キャッシュ・サイズが大きくなり、64K
Bを越えると、アドレス・ビットを仮想アドレスと実ア
ドレスとで同一に保つことは、主メモリにおいてデータ
割振りが制限されることを意味する。これは、キャッシ
ュ内での可能なロケーションを減少させ、従って、セッ
ト・アソシアティブ・キャッシュ構造により得られるミ
ス率の利点が失われる。
外著「IBM RISCシステム/6000プロセッ
サ:ハードウェアの概要(hardware over
view)」、IBM J.Research and
Development Vol.34,No.1,
pp.12−22,1990)のような他のシステムで
は、仮想アドレスと実アドレスの一部をデータ・キャッ
シュ内で同一に保つことを、ソフトウェアで行ってい
る。しかし、キャッシュ・サイズが大きくなり、64K
Bを越えると、アドレス・ビットを仮想アドレスと実ア
ドレスとで同一に保つことは、主メモリにおいてデータ
割振りが制限されることを意味する。これは、キャッシ
ュ内での可能なロケーションを減少させ、従って、セッ
ト・アソシアティブ・キャッシュ構造により得られるミ
ス率の利点が失われる。
【0028】キャッシュ構造における仮想アドレス・タ
グも提案されている(Ibbett外著「The MU
5 name store」,Computer Jo
urnal Vol.20,No.3,pp.227−
231,1977)。仮想アドレス・キャッシュ・ディ
レクトリの各アドレスには、そのプロセスIDのタグを
付ける必要がある。さもなければ、タスク切替えが行わ
れるたびにキャッシュをパージ(消去)する必要があ
る。その場合でも、仮想アドレス・キャッシュは、同義
語について重大な問題がある。Bederman(Be
derman,S著「キャッシュ・ディレクトリに仮想
タグと実タグを使用したキャッシュ管理システム(Ca
che management system usi
ng virtval and real tags
in the chache director
y)」、IBM Technical Disclos
ure Bulletin, Vol.21,No.1
1,pp.45,41,1979)は同義語を避けるた
めに仮想アドレス・タグと実アドレス・タグの両方を使
用したキャッシュ構造を提案している。Bederma
nは、実キャッシュおよび仮想キャッシュのインデック
ス付けに同じビットを使用している。従って彼の方法
は、サイズに制約があり、ページ・サイズにアソシアテ
ィブを掛けたものよりも小さくならざるを得ない。
グも提案されている(Ibbett外著「The MU
5 name store」,Computer Jo
urnal Vol.20,No.3,pp.227−
231,1977)。仮想アドレス・キャッシュ・ディ
レクトリの各アドレスには、そのプロセスIDのタグを
付ける必要がある。さもなければ、タスク切替えが行わ
れるたびにキャッシュをパージ(消去)する必要があ
る。その場合でも、仮想アドレス・キャッシュは、同義
語について重大な問題がある。Bederman(Be
derman,S著「キャッシュ・ディレクトリに仮想
タグと実タグを使用したキャッシュ管理システム(Ca
che management system usi
ng virtval and real tags
in the chache director
y)」、IBM Technical Disclos
ure Bulletin, Vol.21,No.1
1,pp.45,41,1979)は同義語を避けるた
めに仮想アドレス・タグと実アドレス・タグの両方を使
用したキャッシュ構造を提案している。Bederma
nは、実キャッシュおよび仮想キャッシュのインデック
ス付けに同じビットを使用している。従って彼の方法
は、サイズに制約があり、ページ・サイズにアソシアテ
ィブを掛けたものよりも小さくならざるを得ない。
【0029】Bedermanは仮想アドレスの比較を
最初に行っているが、同義語が見つかると、ラインはキ
ャッシュ内で検出不能である。しかし、次のサイクル時
に、TLBが仮想アドレスを実アドレス(つまり、オフ
セットは実アドレスも、仮想アドレスも同じであり、オ
フセットは合計12ビットであり、オフセットのLSB
はライン内のバイト・アドレスを示すので、実ページ番
号)に変換すると、TLBによって生成される実ページ
番号をキャッシュ内の実アドレス・タグと比較すること
ができ、同義語がないことを確かめることができる。
最初に行っているが、同義語が見つかると、ラインはキ
ャッシュ内で検出不能である。しかし、次のサイクル時
に、TLBが仮想アドレスを実アドレス(つまり、オフ
セットは実アドレスも、仮想アドレスも同じであり、オ
フセットは合計12ビットであり、オフセットのLSB
はライン内のバイト・アドレスを示すので、実ページ番
号)に変換すると、TLBによって生成される実ページ
番号をキャッシュ内の実アドレス・タグと比較すること
ができ、同義語がないことを確かめることができる。
【0030】
【発明が解決しようとする課題】同義語を効率よく見つ
けて、必要とする情報を得るためには、キャッシュ構造
をもっと綿密に調べる必要がある。同種の2レベル方式
が提案されている(Wang外著「2レベル仮想−実キ
ャッシュ階層の編成とパフォーマンス(Organiz
ation and performance of
a two−level virtval−real
chache hiararchy)」、Proc.o
f 16th Intl.Symposium on
Computer Architecture,140
−148,1989)。この方式は、複雑化されたL1
/L2インタフェースを使用し、複雑なL1がL1内で
キャッシュ・ラインを移動できることを前提とする。W
angのキャッシュ・システムは、L1キャッシュがL
1内でラインをあるロケーションから別のロケーション
へ転送できる。そのために、L1キャッシュはかなり複
雑なハードウェアが必要である。
けて、必要とする情報を得るためには、キャッシュ構造
をもっと綿密に調べる必要がある。同種の2レベル方式
が提案されている(Wang外著「2レベル仮想−実キ
ャッシュ階層の編成とパフォーマンス(Organiz
ation and performance of
a two−level virtval−real
chache hiararchy)」、Proc.o
f 16th Intl.Symposium on
Computer Architecture,140
−148,1989)。この方式は、複雑化されたL1
/L2インタフェースを使用し、複雑なL1がL1内で
キャッシュ・ラインを移動できることを前提とする。W
angのキャッシュ・システムは、L1キャッシュがL
1内でラインをあるロケーションから別のロケーション
へ転送できる。そのために、L1キャッシュはかなり複
雑なハードウェアが必要である。
【0031】そこで本発明の目的は、同義語アドレスそ
のものを使用して、L1を直接にアドレス指定してL1
からラインを得るデータ処理システムおよびデータ処理
方法を提供することにある。
のものを使用して、L1を直接にアドレス指定してL1
からラインを得るデータ処理システムおよびデータ処理
方法を提供することにある。
【0032】
【課題を解決するための手段】このような目的を達成す
るために、請求項1に記載のデータ処理システムは、命
令を受け取り、その命令からオペランド・アドレスを生
成するプロセッサと、アドレス入力、データ入力、デー
タ出力、およびデータをストアするための複数のアドレ
ス指定可能な第1ロケーションを有する第1メモリと、
アドレス入力、データ入力、データ出力、およびデータ
をストアするための複数のアドレス指定可能な第2ロケ
ーションを有する第2メモリであって、第2メモリ内の
複数のアドレス指定可能な第2ロケーションの1つまた
は複数の各々は、さらに、第1メモリが第2メモリにス
トアされたデータのコピーを保持しているかどうかを示
している同義語(シノニム)情報を含んでいる第2メモ
リと、プロセッサからオペランド・アドレスを受け取る
ためのアドレス入力を有し、オペランド・アドレスを第
1メモリのロケーション・アドレスと比較し、オペラン
ド・アドレスに対応するアドレスをもつデータ・ブロッ
クが第1メモリにあれば、「ヒット」の出力を生成し、
オペランド・アドレスに対応するアドレスをもつデータ
・ブロックが第1メモリになければ、「ミス」の出力を
生成するための比較手段と、比較手段の出力を受け取
り、比較手段の出力が「ヒット」ならば、オペランド・
アドレスに対応するアドレスをもつデータ・ブロックを
ストアしている第1メモリのロケーションにデータを入
力し、あるいはそのロケーションからデータを出力する
ための手段と、比較手段の出力を受け取り、オペランド
・アドレスを第2メモリのアドレスとなる変換アドレス
に変換し、比較手段の出力が「ミス」ならば、同義語情
報および、変換アドレスに対応する第1メモリのアドレ
スを構成する同義語アドレスを出力するための手段と、
同義語情報を受け取り、第1メモリがデータ・ブロック
のコピーを保持していることを同義語情報が示していれ
ば、第1メモリのアドレス入力に同義語アドレスを出力
するための手段とを具えたことを特徴とする。
るために、請求項1に記載のデータ処理システムは、命
令を受け取り、その命令からオペランド・アドレスを生
成するプロセッサと、アドレス入力、データ入力、デー
タ出力、およびデータをストアするための複数のアドレ
ス指定可能な第1ロケーションを有する第1メモリと、
アドレス入力、データ入力、データ出力、およびデータ
をストアするための複数のアドレス指定可能な第2ロケ
ーションを有する第2メモリであって、第2メモリ内の
複数のアドレス指定可能な第2ロケーションの1つまた
は複数の各々は、さらに、第1メモリが第2メモリにス
トアされたデータのコピーを保持しているかどうかを示
している同義語(シノニム)情報を含んでいる第2メモ
リと、プロセッサからオペランド・アドレスを受け取る
ためのアドレス入力を有し、オペランド・アドレスを第
1メモリのロケーション・アドレスと比較し、オペラン
ド・アドレスに対応するアドレスをもつデータ・ブロッ
クが第1メモリにあれば、「ヒット」の出力を生成し、
オペランド・アドレスに対応するアドレスをもつデータ
・ブロックが第1メモリになければ、「ミス」の出力を
生成するための比較手段と、比較手段の出力を受け取
り、比較手段の出力が「ヒット」ならば、オペランド・
アドレスに対応するアドレスをもつデータ・ブロックを
ストアしている第1メモリのロケーションにデータを入
力し、あるいはそのロケーションからデータを出力する
ための手段と、比較手段の出力を受け取り、オペランド
・アドレスを第2メモリのアドレスとなる変換アドレス
に変換し、比較手段の出力が「ミス」ならば、同義語情
報および、変換アドレスに対応する第1メモリのアドレ
スを構成する同義語アドレスを出力するための手段と、
同義語情報を受け取り、第1メモリがデータ・ブロック
のコピーを保持していることを同義語情報が示していれ
ば、第1メモリのアドレス入力に同義語アドレスを出力
するための手段とを具えたことを特徴とする。
【0033】請求項2に記載のデータ処理システムは、
請求項1に記載のデータ処理システムにおいて、第1メ
モリの複数のアドレス指定可能な第1ロケーションの1
つまたは複数の各々はさらに、データ・ブロックを保持
している第2メモリのロケーションを指す第1ポインタ
を有することを特徴とする。
請求項1に記載のデータ処理システムにおいて、第1メ
モリの複数のアドレス指定可能な第1ロケーションの1
つまたは複数の各々はさらに、データ・ブロックを保持
している第2メモリのロケーションを指す第1ポインタ
を有することを特徴とする。
【0034】請求項3に記載のデータ処理システムは、
請求項1に記載のデータ処理システムにおいて、前記第
1メモリは仮想アドレスをベースとしたキャッシュ・メ
モリを有することを特徴とする。
請求項1に記載のデータ処理システムにおいて、前記第
1メモリは仮想アドレスをベースとしたキャッシュ・メ
モリを有することを特徴とする。
【0035】請求項4に記載のデータ処理システムは、
請求項1に記載のデータ処理システムにおいて、前記第
2メモリは実アドレスをベースとしたキャッシュ・メモ
リを有することを特徴とする。
請求項1に記載のデータ処理システムにおいて、前記第
2メモリは実アドレスをベースとしたキャッシュ・メモ
リを有することを特徴とする。
【0036】請求項5に記載のデータ処理システムは、
請求項2に記載のデータ処理システムにおいて、前記第
1メモリは仮想アドレスをベースとしたキャッシュ・メ
モリを有し、前記第2メモリは実アドレスをベースとし
たキャッシュ・メモリを有することを特徴とする。
請求項2に記載のデータ処理システムにおいて、前記第
1メモリは仮想アドレスをベースとしたキャッシュ・メ
モリを有し、前記第2メモリは実アドレスをベースとし
たキャッシュ・メモリを有することを特徴とする。
【0037】請求項6に記載のデータ処理システムは、
請求項1に記載のデータ処理システムにおいて、前記同
義語情報は、第1メモリがデータ・ブロックのコピーを
保持しているかどうかを示す1ビット・フラグを有する
ことを特徴とする。
請求項1に記載のデータ処理システムにおいて、前記同
義語情報は、第1メモリがデータ・ブロックのコピーを
保持しているかどうかを示す1ビット・フラグを有する
ことを特徴とする。
【0038】請求項7に記載のデータ処理システムは、
請求項6に記載のデータ処理システムにおいて、前記同
義語情報はさらに、第1メモリがデータ・ブロックのコ
ピーを保持しているとき、第1メモリのロケーションを
指している第2ポインタを有することを特徴とする。
請求項6に記載のデータ処理システムにおいて、前記同
義語情報はさらに、第1メモリがデータ・ブロックのコ
ピーを保持しているとき、第1メモリのロケーションを
指している第2ポインタを有することを特徴とする。
【0039】請求項8に記載のデータ処理システムは、
請求項7に記載のデータ処理システムにおいて、前記第
2ポインタは仮想ポインタを有することを特徴とする。
請求項7に記載のデータ処理システムにおいて、前記第
2ポインタは仮想ポインタを有することを特徴とする。
【0040】請求項9に記載のデータ処理システムは、
請求項5に記載のデータ処理システムにおいて、オペラ
ンド・アドレスを変換アドレスに変換するための前記手
段は変換索引バッファ(TLB)を有することを特徴と
する。
請求項5に記載のデータ処理システムにおいて、オペラ
ンド・アドレスを変換アドレスに変換するための前記手
段は変換索引バッファ(TLB)を有することを特徴と
する。
【0041】請求項10に記載のデータ処理方法は、デ
ータ処理システム上で実行されるデータ処理方法におい
て、命令を受け取り、その命令からオペランド・アドレ
スを生成するステップと、アドレス入力、データ入力、
データ出力、およびデータをストアするための複数のア
ドレス指定可能な第1ロケーションもつ第1メモリを用
意し、アドレス入力、データ入力、データ出力、および
データをストアするための複数のアドレス指定可能な第
2ロケーションをもつ第2メモリであって、第2メモリ
の複数のアドレス指定可能な第2ロケーションの1つま
たは複数の各々はさらに、第1メモリが第1メモリにス
トアされたデータのコピーを保持しているかどうかを示
した同義語(シノニム)情報を含んでいる第2メモリを
用意し、プロセッサからオペランド・アドレスを受け取
るためのアドレス入力をもつ比較手段を使用して、オペ
ランド・アドレスを第1メモリのロケーション・アドレ
スと比較し、オペランド・アドレスに対応するアドレス
をもつデータ・ブロックが第1メモリにあれば、「ヒッ
ト」の出力を生成し、オペランド・アドレスに対応する
アドレスをもつデータ・ブロックが第1メモリになけれ
ば、「ミス」の出力を生成するステップと、比較手段の
出力を受け取り、比較手段の出力が「ヒット」ならば、
オペランド・アドレスに対応するアドレスをもつデータ
・ブロックをストアしている第1メモリのロケーション
にデータを入力し、あるいはそのロケーションからデー
タを出力するステップと、比較手段の出力を受け取っ
て、オペランド・アドレスを第2メモリのアドレスとな
る変換アドレスに変換し、比較手段の出力が「ミス」な
らば、同義語と、変換アドレスに対応する第1メモリの
アドレスを構成する同義語アドレスとを出力するステッ
プと、同義語情報を受け取り、第1メモリがデータ・ブ
ロックのコピーを保持していることを同義語情報が示し
ていれば、第1メモリのアドレス入力に同義語アドレス
を出力するステップと具えたことを特徴とする。
ータ処理システム上で実行されるデータ処理方法におい
て、命令を受け取り、その命令からオペランド・アドレ
スを生成するステップと、アドレス入力、データ入力、
データ出力、およびデータをストアするための複数のア
ドレス指定可能な第1ロケーションもつ第1メモリを用
意し、アドレス入力、データ入力、データ出力、および
データをストアするための複数のアドレス指定可能な第
2ロケーションをもつ第2メモリであって、第2メモリ
の複数のアドレス指定可能な第2ロケーションの1つま
たは複数の各々はさらに、第1メモリが第1メモリにス
トアされたデータのコピーを保持しているかどうかを示
した同義語(シノニム)情報を含んでいる第2メモリを
用意し、プロセッサからオペランド・アドレスを受け取
るためのアドレス入力をもつ比較手段を使用して、オペ
ランド・アドレスを第1メモリのロケーション・アドレ
スと比較し、オペランド・アドレスに対応するアドレス
をもつデータ・ブロックが第1メモリにあれば、「ヒッ
ト」の出力を生成し、オペランド・アドレスに対応する
アドレスをもつデータ・ブロックが第1メモリになけれ
ば、「ミス」の出力を生成するステップと、比較手段の
出力を受け取り、比較手段の出力が「ヒット」ならば、
オペランド・アドレスに対応するアドレスをもつデータ
・ブロックをストアしている第1メモリのロケーション
にデータを入力し、あるいはそのロケーションからデー
タを出力するステップと、比較手段の出力を受け取っ
て、オペランド・アドレスを第2メモリのアドレスとな
る変換アドレスに変換し、比較手段の出力が「ミス」な
らば、同義語と、変換アドレスに対応する第1メモリの
アドレスを構成する同義語アドレスとを出力するステッ
プと、同義語情報を受け取り、第1メモリがデータ・ブ
ロックのコピーを保持していることを同義語情報が示し
ていれば、第1メモリのアドレス入力に同義語アドレス
を出力するステップと具えたことを特徴とする。
【0042】ここで、さらに、第1メモリの複数のアド
レス指定可能な第1ロケーションの1つまたは複数の各
々に対して第1ポインタを用意するステップを含み、第
1ポインタはデータ・ブロックを保持している第2メモ
リのロケーションを指していることとしてもよい。
レス指定可能な第1ロケーションの1つまたは複数の各
々に対して第1ポインタを用意するステップを含み、第
1ポインタはデータ・ブロックを保持している第2メモ
リのロケーションを指していることとしてもよい。
【0043】請求項10に記載のデータ処理方法におい
て、前記第1メモリは仮想アドレス指定方式を使用して
もよい。
て、前記第1メモリは仮想アドレス指定方式を使用して
もよい。
【0044】請求項10に記載のデータ処理方法におい
て、前記第2メモリは実アドレス指定方式を使用しても
よい。
て、前記第2メモリは実アドレス指定方式を使用しても
よい。
【0045】請求項10に記載のデータ処理方法におい
て、前記同義語情報は、第1メモリがデータ・ブロック
のコピーを保持しているかどうかを示す1ビット・フラ
グを使用してもよい。
て、前記同義語情報は、第1メモリがデータ・ブロック
のコピーを保持しているかどうかを示す1ビット・フラ
グを使用してもよい。
【0046】前記同義語情報は第2ポインタを使用し、
該第2ポインタは、第1メモリがデータ・ブロックのコ
ピーを保持しているとき、第1メモリのロケーションを
指すこととしてもよい。
該第2ポインタは、第1メモリがデータ・ブロックのコ
ピーを保持しているとき、第1メモリのロケーションを
指すこととしてもよい。
【0047】オペランド・アドレスを変換アドレスに変
換するための前記手段は変換索引バッファ(TLB)を
使用してもよい。
換するための前記手段は変換索引バッファ(TLB)を
使用してもよい。
【0048】前記仮想キャッシュ・メモリ、前記実キャ
ッシュ・メモリおよび前記TLBはDRAMとしてもよ
い。
ッシュ・メモリおよび前記TLBはDRAMとしてもよ
い。
【0049】
【作用】他にも特徴があるが、本発明がBederma
nの解決手法と異なっているのは、仮想/実ページ番号
の代わりにポインタをタグとして2レベル・セット・ア
ソシアティブ・キャッシュに使用している点である。
nの解決手法と異なっているのは、仮想/実ページ番号
の代わりにポインタをタグとして2レベル・セット・ア
ソシアティブ・キャッシュに使用している点である。
【0050】二次的メモリの各ロケーションは、データ
の他に、第2メモリのロケーションに入っているのと同
じデータが入っている対応するロケーションが第1メモ
リにあれば、「存在」を表す同義語情報を、第2メモリ
のロケーションに入っているのと同じデータが入ってい
る対応するロケーションが第1メモリになければ、「不
在」を表す同義語情報を収容する。二次的メモリの各ロ
ケーションは、同義語情報が「存在」ならば、第1メモ
リの対応するロケーションのアドレスを表す同義語アド
レスも収容する。コンパレータの出力が「ミス」を示し
ていれば、同義語情報と同義語アドレスが第2メモリの
対応するロケーションから読み取られる。
の他に、第2メモリのロケーションに入っているのと同
じデータが入っている対応するロケーションが第1メモ
リにあれば、「存在」を表す同義語情報を、第2メモリ
のロケーションに入っているのと同じデータが入ってい
る対応するロケーションが第1メモリになければ、「不
在」を表す同義語情報を収容する。二次的メモリの各ロ
ケーションは、同義語情報が「存在」ならば、第1メモ
リの対応するロケーションのアドレスを表す同義語アド
レスも収容する。コンパレータの出力が「ミス」を示し
ていれば、同義語情報と同義語アドレスが第2メモリの
対応するロケーションから読み取られる。
【0051】同義語コンパレータは同義語情報と同義語
アドレスを第2メモリの対応するロケーションから受け
取り、同義語情報が「存在」ならば、第1メモリのアド
レス入力に同義語アドレスを出力する。
アドレスを第2メモリの対応するロケーションから受け
取り、同義語情報が「存在」ならば、第1メモリのアド
レス入力に同義語アドレスを出力する。
【0052】
【実施例】本発明の特徴および利点は上述したとおりで
あるが、これらの特徴および利点を他の特徴および利点
と共に、添付図面に図示した本発明の好適実施例を参照
して、以下により詳しく説明する。
あるが、これらの特徴および利点を他の特徴および利点
と共に、添付図面に図示した本発明の好適実施例を参照
して、以下により詳しく説明する。
【0053】以下では、実下位レベル・キャッシュに
は、常に、仮想上位レベル・キャッシュのラインが含ま
れているものとして説明する。このようにラインを含め
るという特性(inclusion property
−挿入特性)は、マルチプロセッサの場合のキャッシュ
・コヒーレンスの複雑さを軽減する上で不可欠である
(Baer外著「On the inclusion
properties for multi−leve
l cache hierachies」、Proc.
15th Intl.Symposium on Co
mputer Architecture,pp.73
−80,1988)。
は、常に、仮想上位レベル・キャッシュのラインが含ま
れているものとして説明する。このようにラインを含め
るという特性(inclusion property
−挿入特性)は、マルチプロセッサの場合のキャッシュ
・コヒーレンスの複雑さを軽減する上で不可欠である
(Baer外著「On the inclusion
properties for multi−leve
l cache hierachies」、Proc.
15th Intl.Symposium on Co
mputer Architecture,pp.73
−80,1988)。
【0054】Wangと異なり、本発明によれば、L1
キャッシュがオーバヘッドを軽減するように改良されて
いるので、必要とする情報に即時にアクセスできる。
キャッシュがオーバヘッドを軽減するように改良されて
いるので、必要とする情報に即時にアクセスできる。
【0055】本発明の好適実施例では、仮想上位レベル
・キャッシュ(L1)の各ラインには、仮想アドレスの
ほかに、実ポインタと共にタグが付けられている。この
実ポインタは、対応するデータ・ラインを収容する、実
下位レベル・キャッシュ(L2)内のラインを指してい
る。各L2キャッシュ・ラインには、実アドレスのほか
に、仮想ポインタと共にタグが付けられている。この仮
想ポインタは、対応するラインがL1に存在すれば、そ
のラインを指している。従って、L1は仮想アドレス・
キャッシュであり、L2は実アドレス・キャッシュであ
る。L1キャッシュまたはL2キャッシュのサイズはア
ドレス空間よりもはるかに小さいので、タグ単独ではな
く、アドレス・タグよりもはるかに短いポインタがタグ
と一緒に使用されている。ポインタによるL1とL2内
のラインの関係づけは、L2ラインがL1キャッシュに
ロードされると、それぞれL1とL2のディレクトリに
セットアップされる。
・キャッシュ(L1)の各ラインには、仮想アドレスの
ほかに、実ポインタと共にタグが付けられている。この
実ポインタは、対応するデータ・ラインを収容する、実
下位レベル・キャッシュ(L2)内のラインを指してい
る。各L2キャッシュ・ラインには、実アドレスのほか
に、仮想ポインタと共にタグが付けられている。この仮
想ポインタは、対応するラインがL1に存在すれば、そ
のラインを指している。従って、L1は仮想アドレス・
キャッシュであり、L2は実アドレス・キャッシュであ
る。L1キャッシュまたはL2キャッシュのサイズはア
ドレス空間よりもはるかに小さいので、タグ単独ではな
く、アドレス・タグよりもはるかに短いポインタがタグ
と一緒に使用されている。ポインタによるL1とL2内
のラインの関係づけは、L2ラインがL1キャッシュに
ロードされると、それぞれL1とL2のディレクトリに
セットアップされる。
【0056】仮想アドレス(VA)の一部は、仮想キャ
ッシュL1をインデックス付けするために使用され、仮
想アドレスの残り部分は仮想キャッシュ・ディレクトリ
にストアされる仮想アドレス・タグ(仮想タグまたはV
T)となり、このタグは対応するデータ・ラインがL1
にあるかどうかを示す。
ッシュL1をインデックス付けするために使用され、仮
想アドレスの残り部分は仮想キャッシュ・ディレクトリ
にストアされる仮想アドレス・タグ(仮想タグまたはV
T)となり、このタグは対応するデータ・ラインがL1
にあるかどうかを示す。
【0057】実アドレス(RA)の一部は、実キャッシ
ュL2をインデックス付け(インデクシング)するため
に使用され、実アドレスの残り部分は実キャッシュ・デ
ィレクトリにストアされる実アドレス・タグ(実タグま
たはRT)となり、このタグは対応するデータ・ライン
がL2にあるかどうかを示している。
ュL2をインデックス付け(インデクシング)するため
に使用され、実アドレスの残り部分は実キャッシュ・デ
ィレクトリにストアされる実アドレス・タグ(実タグま
たはRT)となり、このタグは対応するデータ・ライン
がL2にあるかどうかを示している。
【0058】L1キャッシュ内の各エントリごとに仮想
アドレスと関連づけられた実ポインタ(RP)は、L2
キャッシュが256KBの場合は、6ビットで表されて
いる。L2内の各エントリごとに実アドレスと関連づけ
られた仮想ポインタ(VP)は、L1キャッシュが16
KBの場合は、2ビットだけで表されている。これらの
ポインタの長さは、対応するキャッシュのサイズに直接
に依存している。
アドレスと関連づけられた実ポインタ(RP)は、L2
キャッシュが256KBの場合は、6ビットで表されて
いる。L2内の各エントリごとに実アドレスと関連づけ
られた仮想ポインタ(VP)は、L1キャッシュが16
KBの場合は、2ビットだけで表されている。これらの
ポインタの長さは、対応するキャッシュのサイズに直接
に依存している。
【0059】1ビット挿入タグ“I”は、対応するライ
ンがL1に含まれていると、L2ディレクトリにセット
される。L1キャッシュとTLBへの並行アクセスは、
仮想ページ番号を使用して行われる。L1にミスが起こ
ると、TLBはそのページの対応する実アドレスを生成
し、L1は置換のためのラインを選択し、選択したセッ
トからどのラインを選択するかをL2に通知する。その
あと、実アドレスを用いてL2キャッシュをアクセスす
る。L2ディレクトリは実アドレス・タグと仮想ポイン
タを含んでおり、これらは、それぞれ基準実アドレスお
よび基準仮想アドレスと比較される。これまでに説明し
た仮想/実キャッシュ・システムによる場合は、得られ
る比較結果は次の4通りがある。
ンがL1に含まれていると、L2ディレクトリにセット
される。L1キャッシュとTLBへの並行アクセスは、
仮想ページ番号を使用して行われる。L1にミスが起こ
ると、TLBはそのページの対応する実アドレスを生成
し、L1は置換のためのラインを選択し、選択したセッ
トからどのラインを選択するかをL2に通知する。その
あと、実アドレスを用いてL2キャッシュをアクセスす
る。L2ディレクトリは実アドレス・タグと仮想ポイン
タを含んでおり、これらは、それぞれ基準実アドレスお
よび基準仮想アドレスと比較される。これまでに説明し
た仮想/実キャッシュ・システムによる場合は、得られ
る比較結果は次の4通りがある。
【0060】ケース1: L2にミスが起こり、選択し
たL2セットの中の実アドレス・タグのどれもが参照実
アドレスに一致していない場合は、L2は置換のための
ラインを選択する。
たL2セットの中の実アドレス・タグのどれもが参照実
アドレスに一致していない場合は、L2は置換のための
ラインを選択する。
【0061】ケース2: L2にヒットが起こり、挿入
タグIが0の場合は、L2ラインはL1にないので、L
1にロードする必要がある。
タグIが0の場合は、L2ラインはL1にないので、L
1にロードする必要がある。
【0062】ケース3: L2にヒットが起こり、挿入
タグIが1であり、仮想ポインタ比較に失敗した場合
は、別のセットの中のL1ラインは必要とする情報を保
持する必要がある。
タグIが1であり、仮想ポインタ比較に失敗した場合
は、別のセットの中のL1ラインは必要とする情報を保
持する必要がある。
【0063】ケース4: L2にヒットが起こり、挿入
タグIが1であり、仮想ポインタ比較に成功した場合
は、一致しているのでL1には、同じセットの中の必要
とするラインが実際に入っている。従って、L1はそれ
が存在すれば、置換えたラインのためにラインを書き戻
すことを取り消す。
タグIが1であり、仮想ポインタ比較に成功した場合
は、一致しているのでL1には、同じセットの中の必要
とするラインが実際に入っている。従って、L1はそれ
が存在すれば、置換えたラインのためにラインを書き戻
すことを取り消す。
【0064】本発明の好適実施例では、2:1(two
−to−one)マルチプレクサがL1キャッシュ・ア
クセス・パス(経路)の前に付設されており、これはL
2からの「同義語存在」信号によって制御される。通常
の動作時には、L1がヒットすると、選択されたデータ
・ラインがCPUに送られる。同義語が見つかると、仮
想ポインタと部分的なオフセット・ビットで形成された
L2からのアドレスがL1キャッシュをアクセスするた
めに使用され、L1セット内の選択が仮想ポインタによ
って行われる。仮想ポインタはL1セットの中のライン
を指しているので、L2での比較には仮想ポインタの一
部だけが必要である。仮想ポインタは2つの部分からな
っている。「キャッシュ内のセット」と「セット内のラ
イン」である。前者は(部分的な)オフセット・ビット
と連結されて、仮想アドレスと全く同じようにL1キャ
ッシュをアクセスし、後者はL1キャッシュに置かれた
セット内のラインを選択するために使用される。これに
より、重複するラインがL1になくなるので、逆変換テ
ーブルがなくても同義語の問題を解決することができ
る。
−to−one)マルチプレクサがL1キャッシュ・ア
クセス・パス(経路)の前に付設されており、これはL
2からの「同義語存在」信号によって制御される。通常
の動作時には、L1がヒットすると、選択されたデータ
・ラインがCPUに送られる。同義語が見つかると、仮
想ポインタと部分的なオフセット・ビットで形成された
L2からのアドレスがL1キャッシュをアクセスするた
めに使用され、L1セット内の選択が仮想ポインタによ
って行われる。仮想ポインタはL1セットの中のライン
を指しているので、L2での比較には仮想ポインタの一
部だけが必要である。仮想ポインタは2つの部分からな
っている。「キャッシュ内のセット」と「セット内のラ
イン」である。前者は(部分的な)オフセット・ビット
と連結されて、仮想アドレスと全く同じようにL1キャ
ッシュをアクセスし、後者はL1キャッシュに置かれた
セット内のラインを選択するために使用される。これに
より、重複するラインがL1になくなるので、逆変換テ
ーブルがなくても同義語の問題を解決することができ
る。
【0065】図1は、本発明のデータ処理システムの代
表的なハイ・レベル・ブロック図である。代表的なデー
タ処理システムは、マイクロプロセッサ(CPU)10
2、第1メモリまたはキャッシュ(L1)104、第2
メモリまたはキャッシュ(L2)106、変換索引バッ
ファ(TLB)108、コンパレータ110、マルチプ
レクサ112および3ステート・バッファ/ラッチ機構
114を備えている。キャッシュ104と106および
TLBはSRAM、DRAMなどで構成することができ
る。
表的なハイ・レベル・ブロック図である。代表的なデー
タ処理システムは、マイクロプロセッサ(CPU)10
2、第1メモリまたはキャッシュ(L1)104、第2
メモリまたはキャッシュ(L2)106、変換索引バッ
ファ(TLB)108、コンパレータ110、マルチプ
レクサ112および3ステート・バッファ/ラッチ機構
114を備えている。キャッシュ104と106および
TLBはSRAM、DRAMなどで構成することができ
る。
【0066】本発明の目的を達成するために、CPU1
02はベクトル型、スカラー型、スーパ−スカラー型な
どとすることができる。仮想メモリまたはキャッシュ1
04(L1)および実メモリまたはキャッシュ106
(L2)は同一基板上にCPU102と一体に実装する
ことも、あるいは別々のディスクリート・デバイスにす
ることも可能である。また、別の方法として、L1をオ
ン・チップにし、L2をオフ・チップにすることも可能
である。
02はベクトル型、スカラー型、スーパ−スカラー型な
どとすることができる。仮想メモリまたはキャッシュ1
04(L1)および実メモリまたはキャッシュ106
(L2)は同一基板上にCPU102と一体に実装する
ことも、あるいは別々のディスクリート・デバイスにす
ることも可能である。また、別の方法として、L1をオ
ン・チップにし、L2をオフ・チップにすることも可能
である。
【0067】図1に示す例では、データ処理システムは
32ビット・アドレス空間、4KBページ・サイズ、6
4B(バイト)ライン・サイズ、16KBサイズの2ウ
ェイL1、および256Kサイズの4ウェイL2を具え
る。32ビット・アドレス空間内の32ビット仮想アド
レスは、12ビット・ページ・オフセットと20ビット
仮想ページ番号をもっている。仮想ページ番号は、破線
116で示したパス(経路)によって概略を示すよう
に、通常動作時にTLBとL1キャッシュに並列にアク
セスするために使用される。データ・ライン書戻しのた
めの書込みバッファがL1にあり、LRU法でラインを
置き換えるとすると、L1キャッシュは、L1にミスが
起こったとき、どのラインを置き換えるかの判断をLR
Uビットを通してL2に送って、その仮想ポインタをど
のようにセットアップするかをL2に知らせる。この制
御の流れは、破線118で示したパスに概略が示されて
いる。データの流れは示されていない。L2ディレクト
リに入っているバッファ・タグ“B”(図示せず)は、
L1内の対応するラインが書込みバッファ(図示せず)
に入っているかどうかを示すために使用される。
32ビット・アドレス空間、4KBページ・サイズ、6
4B(バイト)ライン・サイズ、16KBサイズの2ウ
ェイL1、および256Kサイズの4ウェイL2を具え
る。32ビット・アドレス空間内の32ビット仮想アド
レスは、12ビット・ページ・オフセットと20ビット
仮想ページ番号をもっている。仮想ページ番号は、破線
116で示したパス(経路)によって概略を示すよう
に、通常動作時にTLBとL1キャッシュに並列にアク
セスするために使用される。データ・ライン書戻しのた
めの書込みバッファがL1にあり、LRU法でラインを
置き換えるとすると、L1キャッシュは、L1にミスが
起こったとき、どのラインを置き換えるかの判断をLR
Uビットを通してL2に送って、その仮想ポインタをど
のようにセットアップするかをL2に知らせる。この制
御の流れは、破線118で示したパスに概略が示されて
いる。データの流れは示されていない。L2ディレクト
リに入っているバッファ・タグ“B”(図示せず)は、
L1内の対応するラインが書込みバッファ(図示せず)
に入っているかどうかを示すために使用される。
【0068】L1にミスが検出されると、TLB変換で
得た実ページ番号が部分的オフセット・ビットと連結さ
れて、L2キャッシュをアクセスする。実タグが得られ
た実アドレスRA[0:15]と一致し、挿入タグIが
1ならば、同義語が検出されている。そこで、同義語ア
ドレス120は、同義語存在信号を使用してL1に渡さ
れて、MUX112を制御する。同義語アドレスは点線
124で概略を示すように、L1内のデータをインデッ
クス付けするために使用される。
得た実ページ番号が部分的オフセット・ビットと連結さ
れて、L2キャッシュをアクセスする。実タグが得られ
た実アドレスRA[0:15]と一致し、挿入タグIが
1ならば、同義語が検出されている。そこで、同義語ア
ドレス120は、同義語存在信号を使用してL1に渡さ
れて、MUX112を制御する。同義語アドレスは点線
124で概略を示すように、L1内のデータをインデッ
クス付けするために使用される。
【0069】以下の説明から理解されるように、仮想ポ
インタ比較のための追加ハードウェアは非常に単純化さ
れている。上述した例では、4個の1ビット・コンパレ
ータおよびそれに関連するロジックのみが必要である。
LRU情報(セット内のライン)に対して仮想ポインタ
VP[0]を想定すると、同義語検査のためにL2内の
4ラインに対してVP[1]だけを仮想アドレスVA
[19]と比較すればよい。従って、セット内のライン
を選択するための図2に示した部分的仮想ポインタ(詳
細は後述する)はVP[0]であり、所定のオーバヘッ
トは最小になる。
インタ比較のための追加ハードウェアは非常に単純化さ
れている。上述した例では、4個の1ビット・コンパレ
ータおよびそれに関連するロジックのみが必要である。
LRU情報(セット内のライン)に対して仮想ポインタ
VP[0]を想定すると、同義語検査のためにL2内の
4ラインに対してVP[1]だけを仮想アドレスVA
[19]と比較すればよい。従って、セット内のライン
を選択するための図2に示した部分的仮想ポインタ(詳
細は後述する)はVP[0]であり、所定のオーバヘッ
トは最小になる。
【0070】キャッシュ・ライン置換にLRU法を使用
しているとき、置き換えようとするLRUラインがダー
ティであると、そのラインは、主メモリを更新するため
にL1の書戻しバッファに置かれるのが普通である。し
かし、同義語の場合には、当然、現基準ラインが同じキ
ャッシュ・セットにまだ残っているので、書き戻す必要
はない。従って、L1は書戻しをキャンセルするだけで
ある。Wangのキャッシュ・システムと異なり、キャ
ッシュ・ラインを移動する必要がないので、資源が節約
される。本発明のこの主要な特徴を、図2および図3を
参照して、以下で詳しく説明する。
しているとき、置き換えようとするLRUラインがダー
ティであると、そのラインは、主メモリを更新するため
にL1の書戻しバッファに置かれるのが普通である。し
かし、同義語の場合には、当然、現基準ラインが同じキ
ャッシュ・セットにまだ残っているので、書き戻す必要
はない。従って、L1は書戻しをキャンセルするだけで
ある。Wangのキャッシュ・システムと異なり、キャ
ッシュ・ラインを移動する必要がないので、資源が節約
される。本発明のこの主要な特徴を、図2および図3を
参照して、以下で詳しく説明する。
【0071】次に、図2および図3を参照して、本発明
の仮想キャッシュの好適実施例の代表例について説明す
る。図2では、CPUがデータ要求を行い、仮想アドレ
スを仮想キャッシュL1に送ったことを想定している
(ブロックまたはステップ202を参照)。ブロック2
02は仮想アドレスを示し、この仮想アドレスは20個
の仮想ページ番号(VPN)ビット[0:19]と12
個のオフセット・ビット[20:31]から構成されて
いる。バス204は、下述する個々のブロックが必要と
する各種VAビットを転送することを表している。
の仮想キャッシュの好適実施例の代表例について説明す
る。図2では、CPUがデータ要求を行い、仮想アドレ
スを仮想キャッシュL1に送ったことを想定している
(ブロックまたはステップ202を参照)。ブロック2
02は仮想アドレスを示し、この仮想アドレスは20個
の仮想ページ番号(VPN)ビット[0:19]と12
個のオフセット・ビット[20:31]から構成されて
いる。バス204は、下述する個々のブロックが必要と
する各種VAビットを転送することを表している。
【0072】上述したように、L1にキャッシュ・ミス
が起こると、4つの別々のケースが呼び出され、挿入タ
グ(Iタグ)が同義語を見つけるために使用される。V
Pが比較されて、同義語ラインが現在参照しているのと
同じセットにあるかどうかが判断される。VPにオフセ
ットを加えたものが使用されて、L1をインデックス付
けし、同義語のセットおよびアドレスが判断される。ケ
ース4だけは、ラインが現在参照しているのと同じL1
内のセットにあることを示している。
が起こると、4つの別々のケースが呼び出され、挿入タ
グ(Iタグ)が同義語を見つけるために使用される。V
Pが比較されて、同義語ラインが現在参照しているのと
同じセットにあるかどうかが判断される。VPにオフセ
ットを加えたものが使用されて、L1をインデックス付
けし、同義語のセットおよびアドレスが判断される。ケ
ース4だけは、ラインが現在参照しているのと同じL1
内のセットにあることを示している。
【0073】この例では、実キャッシュL2のVPは2
ビット、VP[0:1]、だけからなり、1ビットはL
1キャッシュ・セットをアクセスするために使用され、
2番目のVPビットはセットのラインを選択するために
使用される。ビットの割当ては設計時に選択される。
ビット、VP[0:1]、だけからなり、1ビットはL
1キャッシュ・セットをアクセスするために使用され、
2番目のVPビットはセットのラインを選択するために
使用される。ビットの割当ては設計時に選択される。
【0074】セットを選択するには、仮想ページ番号
(VPN)のLSB[19]が通常動作時にマルチプレ
クサ(MUX)206を通って、キャッシュL1のセッ
トを選択する(ブロック208を参照)。ページ・オフ
セットからの他のインデックス・ビットは図示していな
い。通常動作時にVPNビットの選択を行うために、
「同義語不在」信号がMUX 206の選択入力端に入
力される。(MUX 206は、機能的には図1に示し
たMUX 114と同じである。)この例ではキャッシ
ュのサイズの関係で、MUX 206は1ビットだけを
選択する。
(VPN)のLSB[19]が通常動作時にマルチプレ
クサ(MUX)206を通って、キャッシュL1のセッ
トを選択する(ブロック208を参照)。ページ・オフ
セットからの他のインデックス・ビットは図示していな
い。通常動作時にVPNビットの選択を行うために、
「同義語不在」信号がMUX 206の選択入力端に入
力される。(MUX 206は、機能的には図1に示し
たMUX 114と同じである。)この例ではキャッシ
ュのサイズの関係で、MUX 206は1ビットだけを
選択する。
【0075】これに対して、同義語がL2に存在し、そ
のことがL2選択ラインからの「同義語存在」で示され
たときは、VPのビット[1]がL1のセットを選択す
るために使用される。L2制御信号からの「同義語存
在」が肯定されると、VP[1]はL2からMUX 2
06を通して渡されて、L1内のセットをアクセスす
る。MUX 206の出力は、ブロックまたはステップ
210に示すように、仮想キャッシュL1のセットを選
択する。
のことがL2選択ラインからの「同義語存在」で示され
たときは、VPのビット[1]がL1のセットを選択す
るために使用される。L2制御信号からの「同義語存
在」が肯定されると、VP[1]はL2からMUX 2
06を通して渡されて、L1内のセットをアクセスす
る。MUX 206の出力は、ブロックまたはステップ
210に示すように、仮想キャッシュL1のセットを選
択する。
【0076】VPの2番目のビット(VP[0])は、
データ選択ブロック212への“部分的VP”入力とし
て使用されて、セット内でデータがストアされているラ
インを選択する。この例では、L1は2ウェイ・セット
・アソシアティブ・キャッシュである。つまり、2重ブ
ロック212が示すように、セットごとに2ラインがあ
ることを意味する。従って、セット内のラインを選択す
るには、1ビットだけが必要である。例えば、“0”が
セットの1番目のラインを選択し、“1”が2番目のラ
インを選択する。
データ選択ブロック212への“部分的VP”入力とし
て使用されて、セット内でデータがストアされているラ
インを選択する。この例では、L1は2ウェイ・セット
・アソシアティブ・キャッシュである。つまり、2重ブ
ロック212が示すように、セットごとに2ラインがあ
ることを意味する。従って、セット内のラインを選択す
るには、1ビットだけが必要である。例えば、“0”が
セットの1番目のラインを選択し、“1”が2番目のラ
インを選択する。
【0077】図2および図3の左側に示すように、VP
Nの下位ビットはTLBをインデックスするために使用
される。TLBをインデックスするために必要なVPN
のビット数はそのサイズによって決まる。この例では、
VPNの下位ビット(LSB)は7個(VPN[13:
19])が使用されているが、これは、TLBが128
個(つまり、27 )のセットから構成されるためであ
る。“TLB選択”ブロック214を参照のこと。仮想
アドレス・ビット[0:12]は、ブロック216に示
すように、VPNとインデックスされたTLBと比較さ
れる。“一致”するものが見つかると、実ページ番号が
即時に使用可能になり、ブロック218で3ステート・
バッファに入れられ、ブロック220でオフセットと連
結されたあと、L2キャッシュに送られる。
Nの下位ビットはTLBをインデックスするために使用
される。TLBをインデックスするために必要なVPN
のビット数はそのサイズによって決まる。この例では、
VPNの下位ビット(LSB)は7個(VPN[13:
19])が使用されているが、これは、TLBが128
個(つまり、27 )のセットから構成されるためであ
る。“TLB選択”ブロック214を参照のこと。仮想
アドレス・ビット[0:12]は、ブロック216に示
すように、VPNとインデックスされたTLBと比較さ
れる。“一致”するものが見つかると、実ページ番号が
即時に使用可能になり、ブロック218で3ステート・
バッファに入れられ、ブロック220でオフセットと連
結されたあと、L2キャッシュに送られる。
【0078】ブロック216でTLBと比較した結果、
一致するのものがない(“不一致”)と、仮想アドレス
がブロック222で3ステート・バッファに入れられ
る。そのあと、ループ224で示すように、2レベル・
セグメントやページ・テーブルなどの、オペレーティン
グ・システムの変換メカニズム223によって実アドレ
スに変換される。ループ224が一巡すると、“一致”
が保証され、完成した実アドレスはブロック218と2
20を通過したあとL2キャッシュに渡される。
一致するのものがない(“不一致”)と、仮想アドレス
がブロック222で3ステート・バッファに入れられ
る。そのあと、ループ224で示すように、2レベル・
セグメントやページ・テーブルなどの、オペレーティン
グ・システムの変換メカニズム223によって実アドレ
スに変換される。ループ224が一巡すると、“一致”
が保証され、完成した実アドレスはブロック218と2
20を通過したあとL2キャッシュに渡される。
【0079】ブロック218と222は、コンパレータ
・ブロック226によってL1キャッシュがヒットしな
かったと判断されると、“no”結果によって生成され
た選択信号のタイミングに従って、ブロック216の結
果を条件付きでバッファに入れるように機能するデバイ
スで構成することが可能である。言い換えれば、TLB
情報は、L1キャッシュがミスしたときは不要である。
ブロック218と222は、機能的には図1のブロック
114と同じである。
・ブロック226によってL1キャッシュがヒットしな
かったと判断されると、“no”結果によって生成され
た選択信号のタイミングに従って、ブロック216の結
果を条件付きでバッファに入れるように機能するデバイ
スで構成することが可能である。言い換えれば、TLB
情報は、L1キャッシュがミスしたときは不要である。
ブロック218と222は、機能的には図1のブロック
114と同じである。
【0080】上述したように、オフセットの下位ビット
(LSB)は、ライン内のバイト・アドレスを示すため
に使用される。オフセットの残りの6ビットはVPNの
下位ビット(LSB)(VPN[19])と一緒に使用
されて、キャッシュをアクセスする。従って、仮想アド
レスの残りのビット[0:18]は仮想アドレス・タグ
(VT)となる。受け取ったVAのVTは、コンパレー
タ・ブロック228に示すように、ブロック210で選
択されたセット内の2ラインのVTと比較される。ブロ
ック226に、キャッシュがヒットしたかどうかが示さ
れ、ヒットしていれば、“yes”、ヒットしていなけ
れば、“no”の結果を出力する。ブロック226と2
28は、機能的には図1のブロック110と同じであ
る。
(LSB)は、ライン内のバイト・アドレスを示すため
に使用される。オフセットの残りの6ビットはVPNの
下位ビット(LSB)(VPN[19])と一緒に使用
されて、キャッシュをアクセスする。従って、仮想アド
レスの残りのビット[0:18]は仮想アドレス・タグ
(VT)となる。受け取ったVAのVTは、コンパレー
タ・ブロック228に示すように、ブロック210で選
択されたセット内の2ラインのVTと比較される。ブロ
ック226に、キャッシュがヒットしたかどうかが示さ
れ、ヒットしていれば、“yes”、ヒットしていなけ
れば、“no”の結果を出力する。ブロック226と2
28は、機能的には図1のブロック110と同じであ
る。
【0081】ブロック226がキャッシュがヒットした
ことを示す“yes”を出力するか、あるいは同義語が
L2によって検出されると、ブロック230に示すよう
にブロック212で選択されたデータがL1出力レジス
タにロードされ、CPUに送られる。ORをとる機能が
ブロック232によって実行される。ブロック232は
制御信号を出力し、3ステート・バッファ234をイネ
ーブルにすることによってブロック212からのデータ
を出力レジスタに渡す。
ことを示す“yes”を出力するか、あるいは同義語が
L2によって検出されると、ブロック230に示すよう
にブロック212で選択されたデータがL1出力レジス
タにロードされ、CPUに送られる。ORをとる機能が
ブロック232によって実行される。ブロック232は
制御信号を出力し、3ステート・バッファ234をイネ
ーブルにすることによってブロック212からのデータ
を出力レジスタに渡す。
【0082】L1でキャッシュ・ミスが起こり、そのこ
とが条件付きブロック226で“no”結果によって示
されると、置き換えるべきラインを選択しなければなら
ない。本発明の好適実施例では、ブロック236に概略
を示すようにLRU法を備えた手段が置換候補のライン
を選択するために使用される。
とが条件付きブロック226で“no”結果によって示
されると、置き換えるべきラインを選択しなければなら
ない。本発明の好適実施例では、ブロック236に概略
を示すようにLRU法を備えた手段が置換候補のライン
を選択するために使用される。
【0083】次に、ステップまたはブロック238で、
本発明のキャッシュ・システムは置換候補となるライン
がダーティか否かを判断する。結果が“yes”なら
ば、ブランチしてブロック240と242に移る。ブロ
ック240では、置換候補のラインに入っているデータ
が書込みバッファに送られる。このデータは、のちに公
知のように主メモリに書かれる。ブロック242では、
L1の置換候補ラインに対応するL2ラインの実ポイン
タの中のバッファ・タグ(Bタグ)が1にセットされ
る。これは、置換候補ラインがL1の書込みバッファに
送られたことを意味する。
本発明のキャッシュ・システムは置換候補となるライン
がダーティか否かを判断する。結果が“yes”なら
ば、ブランチしてブロック240と242に移る。ブロ
ック240では、置換候補のラインに入っているデータ
が書込みバッファに送られる。このデータは、のちに公
知のように主メモリに書かれる。ブロック242では、
L1の置換候補ラインに対応するL2ラインの実ポイン
タの中のバッファ・タグ(Bタグ)が1にセットされ
る。これは、置換候補ラインがL1の書込みバッファに
送られたことを意味する。
【0084】最後に、データが書込みバッファに送られ
て、L2キャッシュのBタグ情報が更新されたあと、L
1キャッシュはLRUビットをL2キャッシュに渡さな
ければならない(ステップまたはブロック244を参
照)。このLRUビットは、どのラインが現在空きいて
いるかを示す。L2キャッシュはLRUビットを使用し
て、CPU要求のために仮想ポインタをセットアップす
る。
て、L2キャッシュのBタグ情報が更新されたあと、L
1キャッシュはLRUビットをL2キャッシュに渡さな
ければならない(ステップまたはブロック244を参
照)。このLRUビットは、どのラインが現在空きいて
いるかを示す。L2キャッシュはLRUビットを使用し
て、CPU要求のために仮想ポインタをセットアップす
る。
【0085】条件付きブロック238で結果が“no”
ならば、置換候補ラインに対応するL2ラインの実ポイ
ンタの中の挿入タグIは0にリセットされることによっ
て調整される。置換候補ラインは、CPUから要求され
たデータでやがて置換されるので、主メモリに書き戻す
必要がないためである。Iタグのリセットはブロック2
46に示されている。Iタグ情報が更新されると、制御
の流れはブロック244に移り、そこでLRUビット
が、前述したようにL2キャッシュに渡される。
ならば、置換候補ラインに対応するL2ラインの実ポイ
ンタの中の挿入タグIは0にリセットされることによっ
て調整される。置換候補ラインは、CPUから要求され
たデータでやがて置換されるので、主メモリに書き戻す
必要がないためである。Iタグのリセットはブロック2
46に示されている。Iタグ情報が更新されると、制御
の流れはブロック244に移り、そこでLRUビット
が、前述したようにL2キャッシュに渡される。
【0086】次に、図4に示すように、L1にミスが起
こる度毎に、TLBが呼び出されて、L2キャッシュを
インデックスするために実アドレスを生成する。TLB
から得た実アドレスは、図3の上方のブロック302に
示されている。この例では、実アドレスは20ビットの
実ページ番号と12ビットのオフセットを有する。実ア
ドレスのオフセットは仮想アドレスのオフセットと同じ
である。
こる度毎に、TLBが呼び出されて、L2キャッシュを
インデックスするために実アドレスを生成する。TLB
から得た実アドレスは、図3の上方のブロック302に
示されている。この例では、実アドレスは20ビットの
実ページ番号と12ビットのオフセットを有する。実ア
ドレスのオフセットは仮想アドレスのオフセットと同じ
である。
【0087】本発明の好適実施例では、L2は256K
Bキャッシュ(すなわち、総計218個のロケーション)
であり、ライン・サイズは64B(すなわち26 )であ
る。これは4ウェイ・セット・アソシアティブ・キャッ
シュ(セット当たり22 ライン)である。従って、総計
からライン・サイズとセット・サイズを差し引くと、キ
ャッシュ・システムがL2キャッシュをインデックスす
るためには18−6−2=10ビットが必要である。こ
の実施例では、L2キャッシュのインデックシングは、
実ページ番号の6ビット・オフセットと最下位4ビット
(ビット[16:19])、すなわち総計10ビットを
使用して行われる。L2の各エントリの実タグは実ペー
ジ番号の残りのビットである[0:15]。
Bキャッシュ(すなわち、総計218個のロケーション)
であり、ライン・サイズは64B(すなわち26 )であ
る。これは4ウェイ・セット・アソシアティブ・キャッ
シュ(セット当たり22 ライン)である。従って、総計
からライン・サイズとセット・サイズを差し引くと、キ
ャッシュ・システムがL2キャッシュをインデックスす
るためには18−6−2=10ビットが必要である。こ
の実施例では、L2キャッシュのインデックシングは、
実ページ番号の6ビット・オフセットと最下位4ビット
(ビット[16:19])、すなわち総計10ビットを
使用して行われる。L2の各エントリの実タグは実ペー
ジ番号の残りのビットである[0:15]。
【0088】実アドレスが実キャッシュL2によって受
信されると、ステップまたはブロック304に示すよう
に、セットが選択される。次に、実アドレス・タグ(R
T)ビット[0:15]が選択したセットの各ラインに
入っている実アドレス・タグと比較される。ライン30
6は、ビット[0:15]が実アドレスから直接に得た
ことを示す。L2は、ブロック308に概略を示すよう
に、4ウェイ・アソシアティブ(つまり、セットごとに
4ライン)であるので、4つの比較が必要である。“n
o”結果が示すように一致するものが見つからないと、
ループ310に入る。ループ310内では、L2ライン
が選択され(ブロック312を参照)、TLBから受け
取った実アドレスが主メモリに送られ(ブロック314
を参照)、主メモリによりL2に返されたデータがL2
の選択されたラインにロードされ(ブロック316を参
照)、L2ディレクトリが更新される(ブロック318
を参照)。流れがブロック304に戻り、ブロック31
0での比較が再び行われる。この時点では、データは主
メモリからすでに取り出されているので、ブロック31
0の比較結果は“一致”となる。
信されると、ステップまたはブロック304に示すよう
に、セットが選択される。次に、実アドレス・タグ(R
T)ビット[0:15]が選択したセットの各ラインに
入っている実アドレス・タグと比較される。ライン30
6は、ビット[0:15]が実アドレスから直接に得た
ことを示す。L2は、ブロック308に概略を示すよう
に、4ウェイ・アソシアティブ(つまり、セットごとに
4ライン)であるので、4つの比較が必要である。“n
o”結果が示すように一致するものが見つからないと、
ループ310に入る。ループ310内では、L2ライン
が選択され(ブロック312を参照)、TLBから受け
取った実アドレスが主メモリに送られ(ブロック314
を参照)、主メモリによりL2に返されたデータがL2
の選択されたラインにロードされ(ブロック316を参
照)、L2ディレクトリが更新される(ブロック318
を参照)。流れがブロック304に戻り、ブロック31
0での比較が再び行われる。この時点では、データは主
メモリからすでに取り出されているので、ブロック31
0の比較結果は“一致”となる。
【0089】ライン“一致”が起こると、ブロック32
0に示すように、挿入タグIが評価される。I=1の比
較が“no”ならば(つまり、データがL1キャッシュ
に含まれていなければ)、流れはブロック322へ進
む。ブロック322では、キャッシュL2とL1との関
係付けがセットアップされ、データがキャッシュL1へ
送られる。(L1の実ポインタがセットされ、L2の仮
想ポインタがセットされ、Iタグが1にセットされ
る。)I=1の比較が“yes”ならば(つまり、デー
タがL1キャッシュに含まれていれば)、同義語が検出
されており、「L1への同義語」信号がL1へ送られて
そのことを知らせる。言い換えれば、1つのデータ・エ
ントリに2つの仮想アドレスがあることを意味する。こ
の信号は、仮想ポインタ・コンパレータ・ブロック32
8のセットにより生成された結果を受け渡す手段として
1対の3ステート・バッファ・ブロック324、326
をイネーブルするためにも使用される。
0に示すように、挿入タグIが評価される。I=1の比
較が“no”ならば(つまり、データがL1キャッシュ
に含まれていなければ)、流れはブロック322へ進
む。ブロック322では、キャッシュL2とL1との関
係付けがセットアップされ、データがキャッシュL1へ
送られる。(L1の実ポインタがセットされ、L2の仮
想ポインタがセットされ、Iタグが1にセットされ
る。)I=1の比較が“yes”ならば(つまり、デー
タがL1キャッシュに含まれていれば)、同義語が検出
されており、「L1への同義語」信号がL1へ送られて
そのことを知らせる。言い換えれば、1つのデータ・エ
ントリに2つの仮想アドレスがあることを意味する。こ
の信号は、仮想ポインタ・コンパレータ・ブロック32
8のセットにより生成された結果を受け渡す手段として
1対の3ステート・バッファ・ブロック324、326
をイネーブルするためにも使用される。
【0090】ブロック310でのライン比較と並行し
て、キャッシュL2の選択されたセットの各ライン内の
仮想ポインタの2番目のビットVP[1]が、コンパレ
ータ・ブロック328のセットに示すように、受信した
実アドレスに対応する仮想アドレスのビット[19]と
比較される(仮想アドレスはCPUからL2とTLBに
同時に送られているので、この仮想アドレスは即時に使
用可能である。また、どの仮想ポインタ・ビットを比較
に使用するかは、単に設計時の選択である。これは、図
2および図3に示したライン選択では使用されないビッ
トである。従って、この例では、図2および図3に示し
た「部分的VP」は仮想ポインタのビット[0]であ
る)。
て、キャッシュL2の選択されたセットの各ライン内の
仮想ポインタの2番目のビットVP[1]が、コンパレ
ータ・ブロック328のセットに示すように、受信した
実アドレスに対応する仮想アドレスのビット[19]と
比較される(仮想アドレスはCPUからL2とTLBに
同時に送られているので、この仮想アドレスは即時に使
用可能である。また、どの仮想ポインタ・ビットを比較
に使用するかは、単に設計時の選択である。これは、図
2および図3に示したライン選択では使用されないビッ
トである。従って、この例では、図2および図3に示し
た「部分的VP」は仮想ポインタのビット[0]であ
る)。
【0091】ブロック328の比較結果は、上述したケ
ース3および4に対応する。仮想ポインタの比較が失敗
した場合(つまり、一致するものが見つからない場合)
は、このことは、実際には別のセットの中のL1ライン
が必要とするデータを有することを示す。仮想ポインタ
比較の結果が一致の場合は、L1は実際に必要とするラ
インを、同じセット内に有する。従って、L1は置換る
ラインのために主メモリヘ書き戻すことをキャンセル
し、それが存在すればBタグが0にリセットされる(ブ
ロック330を参照)。どちらの場合も、2ビット仮想
ポインタ(VP[0:1])を仮想アドレス・オフセッ
トの6ビット(VA[20:25])と連結して作られ
た同義語仮想アドレスが、ブロック332に概略を示す
ように、L1キャッシュをインデックスするために送ら
れる。実際には、オフセットは変わらないので、仮想ポ
インタ・ビットだけをL1に送ればよい。
ース3および4に対応する。仮想ポインタの比較が失敗
した場合(つまり、一致するものが見つからない場合)
は、このことは、実際には別のセットの中のL1ライン
が必要とするデータを有することを示す。仮想ポインタ
比較の結果が一致の場合は、L1は実際に必要とするラ
インを、同じセット内に有する。従って、L1は置換る
ラインのために主メモリヘ書き戻すことをキャンセル
し、それが存在すればBタグが0にリセットされる(ブ
ロック330を参照)。どちらの場合も、2ビット仮想
ポインタ(VP[0:1])を仮想アドレス・オフセッ
トの6ビット(VA[20:25])と連結して作られ
た同義語仮想アドレスが、ブロック332に概略を示す
ように、L1キャッシュをインデックスするために送ら
れる。実際には、オフセットは変わらないので、仮想ポ
インタ・ビットだけをL1に送ればよい。
【0092】上述したように、ブロック328からの比
較情報の転送は、「SYN」信号の制御を受けて、3ス
テート・バッファ・ブロック324と326によって制
御される。同義語が見つからなかったときは、L1の書
戻しをキャンセルする必要はない。
較情報の転送は、「SYN」信号の制御を受けて、3ス
テート・バッファ・ブロック324と326によって制
御される。同義語が見つからなかったときは、L1の書
戻しをキャンセルする必要はない。
【0093】
【発明の効果】以上の説明から理解されるように、本発
明の2レベル実/仮想キャッシュ・システムによれば、
TLBとL1キャッシュを並行にアクセスすることがで
き、逆変換テーブルがなくても同義語の問題を解決する
ことができる。この手法は単純化されているので、仮想
アドレス・キャッシュに関連して通常起こる同義語の問
題は、ハードウェアのオーバヘッドをほとんど必要とし
ないで解決することができる。
明の2レベル実/仮想キャッシュ・システムによれば、
TLBとL1キャッシュを並行にアクセスすることがで
き、逆変換テーブルがなくても同義語の問題を解決する
ことができる。この手法は単純化されているので、仮想
アドレス・キャッシュに関連して通常起こる同義語の問
題は、ハードウェアのオーバヘッドをほとんど必要とし
ないで解決することができる。
【0094】以上、本発明の各種実施例について説明し
てきたが、これらの実施例は単なる例であり、これらに
限定されるものではない。従って、本発明の範囲は上述
した実施例に限定されるものではなく、請求項に定義さ
れた特徴事項および等価的特徴事項に従ってのみ定義さ
れるものである。
てきたが、これらの実施例は単なる例であり、これらに
限定されるものではない。従って、本発明の範囲は上述
した実施例に限定されるものではなく、請求項に定義さ
れた特徴事項および等価的特徴事項に従ってのみ定義さ
れるものである。
【図1】本発明のデータ処理システムを示す代表的なハ
イ・レベル・ブロック図である。
イ・レベル・ブロック図である。
【図2】本発明の好適実施例における仮想キャッシュ
(L1)を示す代表的なフローチャートである。
(L1)を示す代表的なフローチャートである。
【図3】本発明の好適実施例における仮想キャッシュ
(L1)を示す代表的なフローチャートである。
(L1)を示す代表的なフローチャートである。
【図4】本発明の好適実施例における実キャッシュ(L
2)を示す代表的なフローチャートである。
2)を示す代表的なフローチャートである。
102 マイクロプロセッサ 104 第1メモリ(キャッシュ) 106 第2メモリ(キャッシュ) 108 変換索引バッファ(TLB) 110 コンパレータ 112 マルチプレクサ 114 3ステート・バッファ/ラッチ機構 120 同義語アドレス 204 バス 223 オペレーティング・システムの変換メカニズム 224 ループ 234 3ステート・バッファ I 挿入タグ L1 仮想キャッシュ L2 実キャッシュ RA 実アドレス RP 実ポインタ RT 実タグ VA 仮想アドレス VP 仮想ポインタ VT 仮想タグ
Claims (10)
- 【請求項1】 命令を受け取り、その命令からオペラン
ド・アドレスを生成するプロセッサと、 アドレス入力、データ入力、データ出力、およびデータ
をストアするための複数のアドレス指定可能な第1ロケ
ーションを有する第1メモリと、 アドレス入力、データ入力、データ出力、およびデータ
をストアするための複数のアドレス指定可能な第2ロケ
ーションを有する第2メモリであって、第2メモリ内の
複数のアドレス指定可能な第2ロケーションの1つまた
は複数の各々は、さらに、第1メモリが第2メモリにス
トアされたデータのコピーを保持しているかどうかを示
している同義語(シノニム)情報を含んでいる第2メモ
リと、 プロセッサからオペランド・アドレスを受け取るための
アドレス入力を有し、オペランド・アドレスを第1メモ
リのロケーション・アドレスと比較し、オペランド・ア
ドレスに対応するアドレスをもつデータ・ブロックが第
1メモリにあれば、「ヒット」の出力を生成し、オペラ
ンド・アドレスに対応するアドレスをもつデータ・ブロ
ックが第1メモリになければ、「ミス」の出力を生成す
るための比較手段と、 比較手段の出力を受け取り、比較手段の出力が「ヒッ
ト」ならば、オペランド・アドレスに対応するアドレス
をもつデータ・ブロックをストアしている第1メモリの
ロケーションにデータを入力し、あるいはそのロケーシ
ョンからデータを出力するための手段と、 比較手段の出力を受け取り、オペランド・アドレスを第
2メモリのアドレスとなる変換アドレスに変換し、比較
手段の出力が「ミス」ならば、同義語情報および、変換
アドレスに対応する第1メモリのアドレスを構成する同
義語アドレスを出力するための手段と、 同義語情報を受け取り、第1メモリがデータ・ブロック
のコピーを保持していることを同義語情報が示していれ
ば、第1メモリのアドレス入力に同義語アドレスを出力
するための手段とを具えたことを特徴とするデータ処理
システム。 - 【請求項2】 第1メモリの複数のアドレス指定可能な
第1ロケーションの1つまたは複数の各々はさらに、デ
ータ・ブロックを保持している第2メモリのロケーショ
ンを指す第1ポインタを有することを特徴とする請求項
1に記載のデータ処理システム。 - 【請求項3】 前記第1メモリは仮想アドレスをベース
としたキャッシュ・メモリを有することを特徴とする請
求項1に記載のデータ処理システム。 - 【請求項4】 前記第2メモリは実アドレスをベースと
したキャッシュ・メモリを有することを特徴とする請求
項1に記載のデータ処理システム。 - 【請求項5】 前記第1メモリは仮想アドレスをベース
としたキャッシュ・メモリを有し、前記第2メモリは実
アドレスをベースとしたキャッシュ・メモリを有するこ
とを特徴とする請求項2に記載のデータ処理システム。 - 【請求項6】 前記同義語情報は、第1メモリがデータ
・ブロックのコピーを保持しているかどうかを示す1ビ
ット・フラグを有することを特徴とする請求項1に記載
のデータ処理システム。 - 【請求項7】 前記同義語情報はさらに、第1メモリが
データ・ブロックのコピーを保持しているとき、第1メ
モリのロケーションを指している第2ポインタを有する
ことを特徴とする請求項6に記載のデータ処理システ
ム。 - 【請求項8】 前記第2ポインタは仮想ポインタを有す
ることを特徴とする請求項7に記載のデータ処理システ
ム。 - 【請求項9】 オペランド・アドレスを変換アドレスに
変換するための前記手段は変換索引バッファ(TLB)
を有することを特徴とする請求項5に記載のデータ処理
システム。 - 【請求項10】 データ処理システム上で実行されるデ
ータ処理方法において、 命令を受け取り、その命令からオペランド・アドレスを
生成するステップと、 アドレス入力、データ入力、データ出力、およびデータ
をストアするための複数のアドレス指定可能な第1ロケ
ーションもつ第1メモリを用意し、 アドレス入力、データ入力、データ出力、およびデータ
をストアするための複数のアドレス指定可能な第2ロケ
ーションをもつ第2メモリであって、第2メモリの複数
のアドレス指定可能な第2ロケーションの1つまたは複
数の各々はさらに、第1メモリが第1メモリにストアさ
れたデータのコピーを保持しているかどうかを示した同
義語(シノニム)情報を含んでいる第2メモリを用意
し、 プロセッサからオペランド・アドレスを受け取るための
アドレス入力をもつ比較手段を使用して、オペランド・
アドレスを第1メモリのロケーション・アドレスと比較
し、オペランド・アドレスに対応するアドレスをもつデ
ータ・ブロックが第1メモリにあれば、「ヒット」の出
力を生成し、オペランド・アドレスに対応するアドレス
をもつデータ・ブロックが第1メモリになければ、「ミ
ス」の出力を生成するステップと、 比較手段の出力を受け取り、比較手段の出力が「ヒッ
ト」ならば、オペランド・アドレスに対応するアドレス
をもつデータ・ブロックをストアしている第1メモリの
ロケーションにデータを入力し、あるいはそのロケーシ
ョンからデータを出力するステップと、 比較手段の出力を受け取って、オペランド・アドレスを
第2メモリのアドレスとなる変換アドレスに変換し、比
較手段の出力が「ミス」ならば、同義語と、変換アドレ
スに対応する第1メモリのアドレスを構成する同義語ア
ドレスとを出力するステップと、 同義語情報を受け取り、第1メモリがデータ・ブロック
のコピーを保持していることを同義語情報が示していれ
ば、第1メモリのアドレス入力に同義語アドレスを出力
するステップと具えたことを特徴とするデータ処理方
法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US84481292A | 1992-03-02 | 1992-03-02 | |
| US844812 | 1992-03-02 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0683711A true JPH0683711A (ja) | 1994-03-25 |
| JP2839060B2 JP2839060B2 (ja) | 1998-12-16 |
Family
ID=25293697
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5004313A Expired - Lifetime JP2839060B2 (ja) | 1992-03-02 | 1993-01-13 | データ処理システムおよびデータ処理方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5668968A (ja) |
| JP (1) | JP2839060B2 (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2004046932A1 (ja) * | 2002-11-21 | 2004-06-03 | Fujitsu Limited | キャッシュ制御方法及びプロセッサシステム |
| JP2006040175A (ja) * | 2004-07-29 | 2006-02-09 | Fujitsu Ltd | キャッシュメモリ装置およびキャッシュメモリ制御方法 |
| JP2018504694A (ja) * | 2014-12-26 | 2018-02-15 | ウイスコンシン アラムナイ リサーチ ファウンデーシヨンWisconsin Alumni Research Foundation | 仮想アドレスを使用してアクセスされるキャッシュ |
Families Citing this family (60)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5813046A (en) * | 1993-11-09 | 1998-09-22 | GMD--Forschungszentrum Informationstechnik GmbH | Virtually indexable cache memory supporting synonyms |
| JPH09512117A (ja) * | 1994-04-15 | 1997-12-02 | ゲーエムデー−フォルシュングスツェントルム インフォルマチオンシュテクニク ゲーエムベーハー | データ記憶用キャッシュメモリ装置 |
| JP2634147B2 (ja) * | 1994-09-16 | 1997-07-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータシステム、キャッシュヒットの判定方法 |
| US5890221A (en) * | 1994-10-05 | 1999-03-30 | International Business Machines Corporation | Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit |
| US6006312A (en) * | 1995-02-27 | 1999-12-21 | Sun Microsystems, Inc. | Cachability attributes of virtual addresses for optimizing performance of virtually and physically indexed caches in maintaining multiply aliased physical addresses |
| US5946716A (en) * | 1996-05-30 | 1999-08-31 | Hewlett-Packard Company | Sectored virtual memory management system and translation look-aside buffer (TLB) for the same |
| US5930513A (en) * | 1996-06-06 | 1999-07-27 | Sun Microsystems, Inc. | Reference based software installation |
| US5928352A (en) * | 1996-09-16 | 1999-07-27 | Intel Corporation | Method and apparatus for implementing a fully-associative translation look-aside buffer having a variable numbers of bits representing a virtual address entry |
| US5860147A (en) * | 1996-09-16 | 1999-01-12 | Intel Corporation | Method and apparatus for replacement of entries in a translation look-aside buffer |
| US6493347B2 (en) * | 1996-12-16 | 2002-12-10 | Juniper Networks, Inc. | Memory organization in a switching device |
| US6134634A (en) * | 1996-12-20 | 2000-10-17 | Texas Instruments Incorporated | Method and apparatus for preemptive cache write-back |
| US5860142A (en) * | 1996-12-27 | 1999-01-12 | Compaq Computer Corporation | Method and apparatus for mapping the memory system of a computer for maximizing memory usage |
| US6073226A (en) * | 1997-03-19 | 2000-06-06 | Microsoft Corporation | System and method for minimizing page tables in virtual memory systems |
| US5974507A (en) * | 1997-04-14 | 1999-10-26 | International Business Machines Corporation | Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm |
| US6006311A (en) * | 1997-04-14 | 1999-12-21 | Internatinal Business Machines Corporation | Dynamic updating of repair mask used for cache defect avoidance |
| JP3489967B2 (ja) * | 1997-06-06 | 2004-01-26 | 松下電器産業株式会社 | 半導体記憶装置及びキャッシュメモリ装置 |
| US6205521B1 (en) * | 1997-11-03 | 2001-03-20 | Compaq Computer Corporation | Inclusion map for accelerated cache flush |
| US6138223A (en) * | 1998-04-30 | 2000-10-24 | International Business Machines Corporation | Absolute address history table index generation for predicting instruction and operand cache accesses |
| FR2787901B1 (fr) * | 1998-12-28 | 2001-02-09 | Bull Sa | Organisation memoire par zones physiques |
| DE69903707T2 (de) * | 1999-02-18 | 2003-07-10 | Texas Instruments France, Villeneuve Loubet | Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags |
| US6332179B1 (en) * | 1999-08-19 | 2001-12-18 | International Business Machines Corporation | Allocation for back-to-back misses in a directory based cache |
| US6725330B1 (en) * | 1999-08-27 | 2004-04-20 | Seagate Technology Llc | Adaptable cache for disc drive |
| US6412043B1 (en) * | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
| US6631434B1 (en) | 1999-11-15 | 2003-10-07 | Hewlett-Packard Development Company, L.P. | Dynamic early indication system for a computer |
| US8019943B2 (en) * | 2000-01-06 | 2011-09-13 | Super Talent Electronics, Inc. | High endurance non-volatile memory devices |
| US6920519B1 (en) * | 2000-05-10 | 2005-07-19 | International Business Machines Corporation | System and method for supporting access to multiple I/O hub nodes in a host bridge |
| US6751720B2 (en) * | 2000-06-10 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy |
| US7203730B1 (en) | 2001-02-13 | 2007-04-10 | Network Appliance, Inc. | Method and apparatus for identifying storage devices |
| US7039827B2 (en) * | 2001-02-13 | 2006-05-02 | Network Appliance, Inc. | Failover processing in a storage system |
| US7032136B1 (en) | 2001-09-07 | 2006-04-18 | Network Appliance, Inc. | Auto regression test for network-based storage virtualization system |
| US7472231B1 (en) | 2001-09-07 | 2008-12-30 | Netapp, Inc. | Storage area network data cache |
| US6728837B2 (en) * | 2001-11-02 | 2004-04-27 | Hewlett-Packard Development Company, L.P. | Adaptive data insertion for caching |
| JP4116346B2 (ja) * | 2002-07-05 | 2008-07-09 | 富士通株式会社 | 演算処理装置及びそのアドレス変換方法 |
| US7290093B2 (en) * | 2003-01-07 | 2007-10-30 | Intel Corporation | Cache memory to support a processor's power mode of operation |
| KR100505695B1 (ko) * | 2003-07-12 | 2005-08-03 | 삼성전자주식회사 | 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법 |
| US7130983B1 (en) * | 2003-12-17 | 2006-10-31 | Storage Technology Corporation | System and method for reference count regeneration |
| US7096341B1 (en) * | 2003-12-17 | 2006-08-22 | Storage Technology Corporation | System and method for reference count regeneration |
| US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
| US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
| US7930514B2 (en) * | 2005-02-09 | 2011-04-19 | International Business Machines Corporation | Method, system, and computer program product for implementing a dual-addressable cache |
| US7669003B2 (en) * | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
| US7949845B2 (en) * | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
| US7984084B2 (en) * | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
| US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
| US8631203B2 (en) * | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
| US8019968B2 (en) * | 2008-02-14 | 2011-09-13 | International Business Machines Corporation | 3-dimensional L2/L3 cache array to hide translation (TLB) delays |
| US8019969B2 (en) * | 2008-02-14 | 2011-09-13 | International Business Machines Corporation | Self prefetching L3/L4 cache mechanism |
| US8041894B2 (en) * | 2008-02-25 | 2011-10-18 | International Business Machines Corporation | Method and system for a multi-level virtual/real cache system with synonym resolution |
| US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
| US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
| US8380894B2 (en) * | 2009-12-11 | 2013-02-19 | International Business Machines Corporation | I/O mapping-path tracking in a storage configuration |
| BR112015027741A2 (pt) * | 2013-05-31 | 2017-07-25 | Intel Corp | cache coerente de sistema com capacidade para dispersar/reunir |
| GB2516477A (en) | 2013-07-24 | 2015-01-28 | Ibm | Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure |
| US9477613B2 (en) | 2015-02-13 | 2016-10-25 | International Business Machines Corporation | Position-based replacement policy for address synonym management in shared caches |
| GB2547189A (en) * | 2016-02-03 | 2017-08-16 | Swarm64 As | Cache and method |
| US10606762B2 (en) | 2017-06-16 | 2020-03-31 | International Business Machines Corporation | Sharing virtual and real translations in a virtual cache |
| US10831664B2 (en) | 2017-06-16 | 2020-11-10 | International Business Machines Corporation | Cache structure using a logical directory |
| US10698836B2 (en) | 2017-06-16 | 2020-06-30 | International Business Machines Corporation | Translation support for a virtual cache |
| KR102151180B1 (ko) * | 2017-11-20 | 2020-09-02 | 삼성전자주식회사 | 효율적인 가상 캐시 구현을 위한 시스템 및 방법 |
| CN112631962B (zh) * | 2019-09-24 | 2024-11-01 | 阿里巴巴集团控股有限公司 | 存储管理装置、存储管理方法、处理器和计算机系统 |
Family Cites Families (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4096573A (en) * | 1977-04-25 | 1978-06-20 | International Business Machines Corporation | DLAT Synonym control means for common portions of all address spaces |
| US4136385A (en) * | 1977-03-24 | 1979-01-23 | International Business Machines Corporation | Synonym control means for multiple virtual storage systems |
| US4332010A (en) * | 1980-03-17 | 1982-05-25 | International Business Machines Corporation | Cache synonym detection and handling mechanism |
| US4400770A (en) * | 1980-11-10 | 1983-08-23 | International Business Machines Corporation | Cache synonym detection and handling means |
| US4731739A (en) * | 1983-08-29 | 1988-03-15 | Amdahl Corporation | Eviction control apparatus |
| US4727482A (en) * | 1983-08-30 | 1988-02-23 | Amdahl Corporation | Apparatus for enhancing searches of data tables |
| US4682281A (en) * | 1983-08-30 | 1987-07-21 | Amdahl Corporation | Data storage unit employing translation lookaside buffer pointer |
| US4612612A (en) * | 1983-08-30 | 1986-09-16 | Amdahl Corporation | Virtually addressed cache |
| US4736293A (en) * | 1984-04-11 | 1988-04-05 | American Telephone And Telegraph Company, At&T Bell Laboratories | Interleaved set-associative memory |
| US4985829A (en) * | 1984-07-31 | 1991-01-15 | Texas Instruments Incorporated | Cache hierarchy design for use in a memory management unit |
| US4763244A (en) * | 1986-01-15 | 1988-08-09 | Motorola, Inc. | Paged memory management unit capable of selectively supporting multiple address spaces |
| US4797814A (en) * | 1986-05-01 | 1989-01-10 | International Business Machines Corporation | Variable address mode cache |
| US5119290A (en) * | 1987-10-02 | 1992-06-02 | Sun Microsystems, Inc. | Alias address support |
| KR920001282B1 (ko) * | 1987-10-02 | 1992-02-10 | 가부시키가이샤 히타치세이사쿠쇼 | 버퍼메모리 제어장치 |
| US5003459A (en) | 1988-04-01 | 1991-03-26 | Digital Equipment Corporation | Cache memory system |
| EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
| JPH03505793A (ja) * | 1988-07-04 | 1991-12-12 | スウェーディッシュ インスティテュート オブ コンピューター サイエンス | 階層構造を有するキャッシュメモリシステムを含むマルチプロセッサシステム |
| US4905141A (en) * | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
-
1993
- 1993-01-13 JP JP5004313A patent/JP2839060B2/ja not_active Expired - Lifetime
-
1994
- 1994-11-22 US US08/345,802 patent/US5668968A/en not_active Expired - Fee Related
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2004046932A1 (ja) * | 2002-11-21 | 2004-06-03 | Fujitsu Limited | キャッシュ制御方法及びプロセッサシステム |
| US7330961B2 (en) | 2002-11-21 | 2008-02-12 | Fujitsu Limited | Cache control method and processor system |
| JP2006040175A (ja) * | 2004-07-29 | 2006-02-09 | Fujitsu Ltd | キャッシュメモリ装置およびキャッシュメモリ制御方法 |
| JP2018504694A (ja) * | 2014-12-26 | 2018-02-15 | ウイスコンシン アラムナイ リサーチ ファウンデーシヨンWisconsin Alumni Research Foundation | 仮想アドレスを使用してアクセスされるキャッシュ |
Also Published As
| Publication number | Publication date |
|---|---|
| US5668968A (en) | 1997-09-16 |
| JP2839060B2 (ja) | 1998-12-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2839060B2 (ja) | データ処理システムおよびデータ処理方法 | |
| US6751720B2 (en) | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy | |
| US5493660A (en) | Software assisted hardware TLB miss handler | |
| US4775955A (en) | Cache coherence mechanism based on locking | |
| US6772316B2 (en) | Method and apparatus for updating and invalidating store data | |
| EP0695996B1 (en) | Multi-level cache system | |
| US6212602B1 (en) | Cache tag caching | |
| US5809530A (en) | Method and apparatus for processing multiple cache misses using reload folding and store merging | |
| US4332010A (en) | Cache synonym detection and handling mechanism | |
| US8782348B2 (en) | Microprocessor cache line evict array | |
| US4985829A (en) | Cache hierarchy design for use in a memory management unit | |
| US6434669B1 (en) | Method of cache management to dynamically update information-type dependent cache policies | |
| JP4065660B2 (ja) | 機能が並列に分散された変換索引バッファ | |
| US6405287B1 (en) | Cache line replacement using cache status to bias way selection | |
| US5715427A (en) | Semi-associative cache with MRU/LRU replacement | |
| US6425058B1 (en) | Cache management mechanism to enable information-type dependent cache policies | |
| US6427188B1 (en) | Method and system for early tag accesses for lower-level caches in parallel with first-level cache | |
| US6493812B1 (en) | Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache | |
| WO1999013404A1 (en) | Data processing system with multi-way set associative cache | |
| US5765199A (en) | Data processor with alocate bit and method of operation | |
| JPH08272682A (ja) | ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 | |
| US6434668B1 (en) | Method of cache management to store information in particular regions of the cache according to information-type | |
| US20060123197A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
| US20230401161A1 (en) | Translation support for a virtual cache | |
| US5809526A (en) | Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation |