JPH08314802A - キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法 - Google Patents

キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法

Info

Publication number
JPH08314802A
JPH08314802A JP8111620A JP11162096A JPH08314802A JP H08314802 A JPH08314802 A JP H08314802A JP 8111620 A JP8111620 A JP 8111620A JP 11162096 A JP11162096 A JP 11162096A JP H08314802 A JPH08314802 A JP H08314802A
Authority
JP
Japan
Prior art keywords
address
memory
data
cache
processor
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.)
Withdrawn
Application number
JP8111620A
Other languages
English (en)
Inventor
Kevin W Glass
ケビン・ダブリュー・グラス
Keith M Bindloss
キース・エム・ビンドロス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Boeing North American Inc
Original Assignee
Rockwell International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Rockwell International Corp filed Critical Rockwell International Corp
Publication of JPH08314802A publication Critical patent/JPH08314802A/ja
Withdrawn legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 プロセッサ制御から独立にキャッシュへアド
レスを発生する自律的キャッシュメモリアドレスユニッ
トを含むキャッシュアーキテクチャを提供する。 【解決手段】 大量のデータをキャッシュに移入した
り、そこからデータを取除いたりすることを、プログラ
ム実行にそれらのデータやメモリの空きスペースが必要
となる前に行なうために用いることのできるブロックプ
リフェッチおよびライトバック命令が開示される。この
ようにしてプロセッサの立ち往生が回避される。エージ
ング/ライトバッファは、それ自体がキャッシュメモリ
スペースとして用いられ得る、キャッシュから追い出さ
れたもののための一時バッファを提供する。キャッシュ
タグインタリービング方式により、異なるバスによって
与えられるアドレスに対する複数の同時タグ比較が可能
となる。キャッシュメモリデータブロックもまた、イン
タリーブされ得る。

Description

【発明の詳細な説明】
【0001】
【発明の背景】キャッシュメモリはコンピュータの技術
分野においてはよく知られている。キャッシュメモリと
はコンピュータシステム内でプロセッサとメインメモリ
との間に位置付けられる小型で高速なメモリである。通
常はメインメモリ内にストアされているアドレス、命令
およびデータは、プロセッサがより高速にアクセスを行
なうために一時的にキャッシュ内にストアされてもよ
い。適正に管理されたならば、キャッシュや他の形態の
高速アクセスメモリにより、プロセッサがデータにアク
セスしプログラムを実行するのに必要とする時間を低減
することができる。
【0002】キャッシュメモリは、一連のアドレスおよ
びそれらアドレスに対応するデータワードをストアする
ための記憶スペースを含む。キャッシュメモリは「ライ
ン」、またはメインメモリからコピーされる連続的なデ
ータの短いシーケンスに編成される。各ラインはアソシ
アティブアドレス「タグ」により識別される。キャッシ
ュアドレスタグは、それらがあるデータのラインをいく
つかのまたはすべてのメインメモリアドレスビットと関
連付けるということにおいて「アソシアティブ」である
といわれている。これにより、キャッシュ内の1つの物
理的な位置を、異なった時間において異なったアドレス
タグビットと関連付けられた数ライン分のデータをスト
アするのに用いることができる。
【0003】プロセッサがキャッシュを有するシステム
においてメモリアクセス要求を発行すると、要求された
アドレスと関連のデータが既にキャッシュ内に位置付け
られているかどうかを判断するための動作が行なわれ
る。メインメモリにアクセスせずともキャッシュからメ
モリアクセス要求がサービスされ得る場合には、キャッ
シュ「ヒット」が生じる。反対に、要求されるアドレス
と関連のデータが既にキャッシュ内に存在しているわけ
ではなかった場合に「ミス」が生じる。そのようなミス
が起こった場合、要求されたアドレスと関連のデータを
メインメモリからプロセッサへ、および/またはキャッ
シュメモリ内へ転送する動作が必要とされる。この転送
動作は時間の掛かるものであって、プログラムを実行す
る際のプロセッサの実効スピードを低減してしまう。
【0004】「ヒット」対「ミス」の比率は、キャッシ
ュの有用性を評価する際には重要な性能の判断基準とな
る。キャッシュ管理の方策は、ヒット率を最大限に高め
るため、データ参照の空間および時間的局所性のコンセ
プトを活かしている。データ参照の空間的局所性の原理
は、メモリアドレスNへのアクセスがあるということは
アドレスN+1がアクセスされる可能性が高くなってい
るということであるという、実行可能プログラムの特性
に対処するものである。データ参照の時間的局所性の原
理とは、比較的短い時間的間隔内においては、同じデー
タが再び使用されがちである、つまりあるプログラムの
実行中、いくつかのメモリアドレスは繰返しアクセスさ
れるという、実行可能プログラムの特性に対処するもの
である。一般的に、キャッシュが最も有用なのは、アプ
リケーションにデータ参照の高度な空間的および時間的
局所性が見られるシステムにおいてである。
【0005】キャッシュを用いるいくつかの先行技術の
応用では、キャッシュのヒット率はキャッシュサブシス
テムにどのアドレスが参照されそうかのヒントを与える
ためにシステムプログラマにより実行可能コード全体に
わたって計画的に挿入される「プリフェッチ」動作を用
いることによって向上されてきた。プリフェッチ命令は
実行されているプログラムの必要とするデータを予想
し、プロセッサが要求したときにそれらのデータがキャ
ッシュメモリ内に確実に存在するようにすることによっ
て動作する。このようにして、プログラム実行時間はミ
スをサービスするためにプロセッサの動作を立ち往生さ
せなくてもよいため低減される。
【0006】動作中、プリフェッチ命令はコンピュータ
システムに、プログラム実行のために差し迫って必要に
なるであろう、あるアドレスと関連のデータが、既にキ
ャッシュ内にあるかどうかを照会させる。データがキャ
ッシュ内にあれば、プリフェッチ動作はそれ以上動か
ず、プログラムの実行は続行される。しかしながら、デ
ータがキャッシュ内に存在しなかった場合、プリフェッ
チ命令はコンピュータシステムにそのアドレスと関連の
データをメインメモリから引出させ、それをキャッシュ
内に位置付けさせる。先行技術では、プリフェッチ命令
はメインメモリからキャッシュへのデータの転送を一度
に1ラインずつ行なうために用いられてきた。
【0007】プリフェッチ命令を用いるいくつかの先行
技術のキャッシュシステムには、転送キューを用いるも
のもある。プリフェッチ命令が実行され、データが既に
キャッシュ内にあるわけではないと判断された場合、抜
けているデータのアドレスは転送キューに入れられ、こ
れはキャッシュコントローラによりアクセスされて、プ
ロセッサがかかわる必要なしにメインメモリからキャッ
シュへのデータの転送が行なわれる。このようにして、
プリフェッチ転送がプロセッサを占領してプログラム実
行を遅延させることはなくなる。
【0008】データがメインメモリからキャッシュメモ
リへ引出されるとき、古いエントリを外へ出すことによ
って新しいエントリのために空きを作らなければならな
い。先行技術では、キャッシュユニットは「犠牲キャッ
シュ」を用いてキャッシュメモリから追い出されたエン
トリがメインメモリにライトバックされるか上書きされ
るかする前にそれらをバッファ処理している。これらの
犠牲キャッシュをキャッシュメモリスペースとして十分
活用するため、先行技術のキャッシュユニットは要求さ
れたデータが犠牲キャッシュ内にあるかどうか判断する
ため犠牲キャッシュの個別の探索を行なっている。デー
タがその中にあれば、そのデータはプロセッサにより検
索できるようになる前に1次キャッシュメモリ内に戻す
ように交換しなければならない。これらの動作はすべて
時間の掛かるものであり、キャッシュの効率を妨げ得る
ものである。先行技術のキャッシュはまた、書込バッフ
ァも用いている。
【0009】先行技術におけるキャッシュのもう1つの
問題点は、2つの異なる動作に関してキャッシュアドレ
スタグを同時に探索することに対処するという要求であ
る。たとえば、プロセッサが1つのアドレスに対するキ
ャッシュメモリアクセスを要求する一方で、キャッシュ
コントローラがプリフェッチ動作に関連してキャッシュ
メモリを探索してもよい。先行技術のシステムはデュア
ルポートのメモリセルによってこのニーズに答えてい
る。デュアルポートメモリにおける問題点は、これがト
ランジスタの割当てとチップ面積の面から極めて高価で
あるということである。
【0010】
【発明の概要】本発明に従い、新規なキャッシュアーキ
テクチャおよびそれを用いる方法が開示される。本発明
の特徴は、新規であると考えられるすべての要素を含む
単一のキャッシュシステムを参照して説明される。しか
しながら、当業者は他の特徴の採用を必要とすることな
くこの新規な特徴のいずれのものをも採用することがで
きるということを認識するであろう。本発明のキャッシ
ュアーキテクチャは、プロセッサとキャッシュとの間の
アドレスインタフェースにおける数多くの局面を管理す
る、プロセッサとは別個になったキャッシュメモリアド
レスユニットを利用する。この自律的アドレスユニット
はそれをキャッシュユニットのさまざまなアドレス部分
に接続するそれ自体の独立バスを有しているので、プロ
セッサ−キャッシュアドレスバスを使用する必要なしに
キャッシュが必要とするアドレススヌープ動作および他
の動作をサポートすることができる。
【0011】本発明の他の局面は、キャッシュにデータ
をプリフェッチすることに対処するものである。先行技
術において用いられる単一ラインプリフェッチは、実行
されているプログラムにある種の特性が見られる場合に
はキャッシュの性能をそれほど高めるものではないかも
しれない。たとえば、モデムから自動車の制御回路まで
さまざまな応用において用いられているデジタル信号プ
ロセッサ(DSP)は、少数の命令を大量のデータに対
し繰返し実行することに多くの動作時間を費やす傾向に
ある。これは、DSPが次のオペランドを検索するため
に繰返し迅速にメモリにアクセスしていることを意味す
る。さらに、DSPにおけるデータ参照の時間的局所性
は非常に低いという傾向がある。これらの理由のため、
先行技術のDSPは一般にキャッシュを用いていない。
しかしながら、DSPアプリケーションにおけるデータ
参照の空間的局所性は傾向として極めて高いので、メモ
リからキャッシュへ大量の連続的データをプリフェッチ
することでメインメモリアクセス時間を節約することが
できるだろう。
【0012】これらの理由により、複数ラインキャッシ
ュプリフェッチ命令が提供されている。メインメモリか
らキャッシュメモリへデータの大きなブロック(複数の
ライン)を移入するため、本発明に従うNON−BLO
CKING LOAD命令はプロセッサによる差し迫っ
てのアクセスを行なうためにキャッシュメモリ内に移動
されるべきアドレスの範囲を特定する。NON−BLO
CKING LOAD命令はキャッシュユニット(また
はプロセッサの制御から独立して動作する何らかの他の
システム要素)に、キャッシュメモリ内をスヌープさ
せ、要求されるアドレスと関連のデータがあるとすれば
そのうちどれが既にキャッシュメモリ内にあるかを調べ
させる。そしてキャッシュユニットはプロセッサの動作
を全く中断させることなくメインメモリから抜けている
データを必要な範囲まで引出すことができる。実行可能
コード全体にわたってそのような命令を計画的に位置付
けることで、システムプログラマはプロセッサによって
要求されそうなデータの大きなブロックが要求のあった
時点で確実にキャッシュ内にあるようにすることができ
る。
【0013】本発明の他の局面は、複数ラインプリフェ
ッチ命令との関連で有益に用いられ得る新規な転送キュ
ーである。先行技術の転送キューでは、時折メインプロ
グラムの実行がキャッシュのプリフェッチ実行に先立っ
て起こってしまうことがあり得る。これが起こると、あ
る特定のアドレスと関連のデータがメインメモリからキ
ャッシュに引出される前にプログラム実行に当たって用
いるために要求されてしまう。そのとき、キャッシュミ
スが起こり、プロセッサによりメインメモリアクセスが
行なわれなければならない。問題は、その要求されたア
ドレスと関連のデータはもはやキャッシュに転送される
必要がないにもかかわらず、転送キューにはまだその要
求されたアドレスが含まれているということにある。同
様な問題が、先行技術の転送キューが前のプリフェッチ
動作により既に転送キューの中に位置付けられている要
求されたアドレスを受取った場合に生じる。そのような
擬似的で二重のメインメモリアクセスは、キャッシュシ
ステムの効率を遅くするものである。
【0014】これらの擬似的で二重のメインメモリアク
セスを回避するため、ここに開示されるキャッシュアー
キテクチャで用いられる転送キューはアソシアティブで
ある。転送キューがアソシアティブであることにより、
キャッシュユニットは転送キューの中をスヌープしてど
のアドレスが既にキューに入れられているかを調べるこ
とができる。この特徴を用いて、データに対する二重の
要求が回避でき、もはやプリフェッチされる必要がなく
なったデータに対する要求はキャンセルすることができ
る。
【0015】新規なNON−BLOCKING WRI
TEBACK命令も開示される。NON−BLOCKI
NG WRITEBACK命令は、より新しいデータの
ための空きを作るためキャッシュユニットにキャッシュ
メモリを開放させる。この命令はキャッシュメモリスペ
ースにおける1つまたはそれ以上のラインに対し予想を
行なってライトバックするために用いられ得る。実際に
キャッシュメモリスペースが必要となるときより前にラ
イトバック動作を行なうことによって、この命令はキャ
ッシュ内の空きを開放するためにプロセッサ実行を立ち
往生させる必要性を回避している。
【0016】このキャッシュアーキテクチャの別の特徴
は、キャッシュメモリから追い出されたものがメインメ
モリにライトバックされる前に、これらをバッファ処理
するために用いられるエージング/ライトバッファであ
る。キャッシュメモリからエントリが追い出されるにつ
れ、それらはエージング/ライトバッファに運ばれ、
(必要であれば)メインメモリにライトバックできるよ
うなるまでそこに留まり、その後より新しい追い出され
たものによって上書きされる。エージング/ライトバッ
ファは完全にアソシアティブなので、ロードまたはプリ
フェッチ動作中に1次キャッシュメモリと同時に探索す
ることができ、それにより、キャッシュメモリの実効サ
イズが拡張されている。エージング/ライトバッファの
完全なアソシアティビティはまた、これがキャッシュメ
モリの1次的な部分におけるより低いアソシアティビテ
ィ(すなわちダイレクトマッピングまたはツーウェイセ
ットアソシアティビティ)のバランスを取るという点に
おいてキャッシュダイナミクスにとって有益なものでも
ある。このようにして、キャッシュの全体的なヒット率
を向上させることができる。最後に、エージング/ライ
トバッファにおけるあるエントリが新しくキャッシュメ
モリから追い出されたもののために空きを作るべく上書
きされなければならなくなった場合、このキャッシュア
ーキテクチャはどのエントリを上書きすべきか判断する
ためのメカニズムを提供し、これによりまだ潜在的に有
用性のあるエントリを強制的に上書きしてしまうことが
なくなる。
【0017】本発明のキャッシュアーキテクチャの他の
局面は、キャッシュメモリエントリのためにインタリー
ブされたアドレスタグを用いることである。本発明に従
い、キャッシュアドレスタグに対する複数の同時探索
は、これらのタグをタグブロックに分割することにより
対処され得る。複数のアドレスに対する同時探索は、複
数のアドレスソースをタグブロックのそれぞれ異なった
1つに選択的に経路付けするように、複数個のマルチプ
レクサを制御することによって達成される。このように
して、キャッシュ動作のスループット率を高めることが
できる。CPUおよびスヌープにより同じブロックがア
クセスされた場合に、アドレスを比較し、それらのアド
レスが一致した場合にはCPUを立ち往生させることに
より、厳密なコヒーレンシが強化される。アドレスが一
致しなかった場合、CPUが優先される。
【0018】
【好ましい実施例の詳細な説明】本発明の特徴は、以下
の論議を参照すれば十分に理解されるであろう。すべて
の場合において、以下の説明は例示的実施例を参照して
述べられていることを理解されたい。これらの実施例は
特許請求の範囲によって規定されるこの発明の範囲を限
定するものとしては意図されない。ここに記載される特
定的な実施例に対する変形および修正は当業者には明ら
かとなるであろう。
【0019】図1は、本発明のキャッシュアーキテクチ
ャを利用するコンピュータシステム10における関連の
特徴を示す包括的なシステム概観図である。マイクロプ
ロセッサ、デジタル信号プロセッサまたは何らかの他の
タイプのプロセッサであってよいプロセッサ100が、
データオペランドを操作するためにプロセッサ実行ユニ
ット110内において命令のシーケンスを実行する。プ
ロセッサ100により用いられる命令およびデータは、
通常メインメモリ400内にストアされ、実行中、必要
に応じてプロセッサ100のプロセッサ制御ユニット1
20により検索されてもよい。
【0020】外部データバス550および外部アドレス
バス500が、関連のシステム構成要素のすべてを接続
するものとして示される。コンピュータシステム10の
通常のノンキャッシュ動作の間、プロセッサ制御ユニッ
ト120は外部アドレスバス500および外部データバ
ス550を制御してメインメモリ400からデータおよ
び命令を読出すか、またはデータおよび命令をメインメ
モリ400にライトバックする。一実施例に従い、外部
バス500と550はスタティック列DRAMメインメ
モリ400の特徴をサポートするためのバーストモード
アクセスを備えるiapx486互換バスである。当業
者にはよく知られている、そのようなバスを実現するこ
れ以外の方法は数多くある。
【0021】プロセッサ100とメインメモリ400と
の間にはキャッシュユニット300が挿入されている。
当業者には知られているように、キャッシュユニット3
00は好ましくはプロセッサ100とメインメモリ40
0との間で高速アクセスバッファとして作用する小型で
高速なメモリを含むものである。この開示では「キャッ
シュメモリ」および「メインメモリ」という語で表現さ
れているが、当業者は発明的局面の多くが他のマルチレ
ベルメモリ構造にも等しく応用可能であることを認識す
るであろう。たとえば、そのような構造のいくつかで
は、複数レベルにおけるデータが異なったワード幅(た
とえばオンチップメモリ構造では1ワードにつき8ビッ
トで、オフチップメモリでは1ワードにつき32ビッ
ト)でストアされる。そのような状況においては、第2
のメモリから第1のメモリへ単一のワードを移入するた
めに複数のアクセスが必要となる。この複数のアクセス
により、たとえ2つのメモリが全く同じ構成要素からな
っていたとしても、第2のメモリへのアクセスの実効ス
ピードは遅くなってしまう。そのようなメモリ構造は一
般に第1の「高帯域幅メモリ」(たとえばキャッシュメ
モリ)と第2の「低帯域幅メモリ」(たとえばメインメ
モリ)とを有するものであるといわれる。
【0022】図1では、キャッシュユニット300は命
令およびデータの双方のキャッシングを行なうのに用い
られる単一の構成要素として示されている。このタイプ
のアーキテクチャは、命令およびデータ双方のために用
いられる単一の通信経路がある「プリンストン級」アー
キテクチャと両立するものである。しかしながら、当業
者はこのアーキテクチャの発明的な特徴が、命令および
データのために個別になった平行な経路(およびキャッ
シュ)のある「ハーバード級」マシンにも有利に応用さ
れてもよいことを認識するであろう。
【0023】キャッシュユニット300はプロセッサ1
00およびメインメモリ400と、システム外部アドレ
スバス500および外部データバス550により通信す
る。キャッシュユニット300はまた、内部アドレスバ
ス600および内部データバス650を介してプロセッ
サ100と直接通信する。内部アドレスバス600およ
び内部データバス650は、プロセッサ100とキャッ
シュユニット300との間での高速な情報の通信を助け
る高速バスである。キャッシュ制御ユニット310はキ
ャッシュ動作に必要な制御信号および処理を提供するも
のである。
【0024】キャッシュメモリアドレスユニット200
がプロセッサ100とキャッシュユニット300との間
に挿入される。キャッシュメモリアドレスユニット20
0は、プロセッサ100の関与から独立してアドレス発
生動作を行なうコンピュータシステム10の1構成要素
である。このようにして、キャッシュメモリアドレスユ
ニット200は以下に述べるようにキャッシュユニット
300における新規な機能および特徴の多くをサポート
する。キャッシュメモリアドレスユニット200は、、
命令およびベースアドレスレジスタバス800を介して
プロセッサ100と通信し、かつ専用アドレスバス70
0を介してキャッシュユニット300と通信する。CM
AU制御ライン900は、キャッシュユニット300か
らキャッシュメモリアドレスユニット200へ送られる
べき制御情報のための経路を提供する。この実施例では
キャッシュメモリアドレスユニット200はキャッシュ
ユニット300とは別個になって示されているが、これ
らの要素は代替的に統合されてもなお本発明の機能を果
たすであろう。
【0025】ここで図2を参照して、キャッシュユニッ
ト300のアーキテクチャおよび機能をより詳細に説明
する。図2には外部アドレスバス500と外部データバ
ス550とが示されており、それらのプロセッサ100
およびメインメモリ400へのそれぞれの接続は図1に
示される。同様に、内部アドレスバス600および内部
データバス650が図2に示されており、それらのプロ
セッサ100へのそれぞれの接続は図1に示される。専
用アドレスバス700が図2に示され、そのキャッシュ
メモリアドレスユニット200への接続は図1に示され
る。
【0026】キャッシュユニット300は、キャッシュ
メモリ320と、エージング/ライトバッファ340
と、オーバライトプライオリタイザ350と、転送キュ
ー360とを含む。キャッシュメモリ320は、「数ラ
イン分」ものデータをストアする能力のある複数個のメ
モリモジュール329を含む。一実施例に従い、1ライ
ン分のデータとは16バイトのデータである。キャッシ
ュメモリ320はまた、キャッシュメモリ320内にス
トアされるデータの仮想アドレスの一部を特定する複数
個のキャッシュタグ321を含む。1つの実施例では、
キャッシュメモリ320にはダイレクトマッピングされ
た、またはツーウェイセットアソシアティブのワードが
8キロバイト含まれている。別の実施例では、8キロバ
イトデータキャッシュが4キロバイト命令キャッシュと
並列に用いられている。
【0027】1つの実施例に従えば、キャッシュメモリ
320における各タグ321は複数のデータワードを識
別する。これはタグ321の長さをコンピュータシステ
ム10内で用いられる標準的アドレスの全長より短くす
ることによりなし遂げられる。たとえば、標準アドレス
における下位ビットをタグ321から除外し、これによ
りタグ321により識別される一意的なデータワードの
数を大きくしてもよい。この方式は「セットアソシアテ
ィビティ」として知られており、キャッシュアーキテク
チャではよく用いられるものである。
【0028】動作の際、プロセッサ100はプログラム
として知られる命令のシーケンスを実行し、これにより
プロセッサ100はメモリから選択的にデータを検索し
操作して、次にデータをメモリにライトバックするか、
またはこのデータで他の機能を行なう。ある命令の実行
がプロセッサ100にメモリからデータを引出すよう要
求した場合、データ要求がプロセッサ100からキャッ
シュユニット300へ送り出され、引出されるべきデー
タのアドレスを特定する。このアドレスは内部アドレス
バス600によってキャッシュユニット300に伝えら
れる。キャッシュユニット300によりアドレスが受取
られると、キャッシュメモリ320のメモリモジュール
329の1つに既に要求されたアドレスと関連のデータ
がストアされているかどうかを判断するためにタグ32
1がスヌープされる。データがメモリモジュール329
内にあれば、キャッシュユニット300はそのデータを
キャッシュメモリ320から引出し、それらを内部デー
タバス650上に位置付け、ここからこれらのデータは
プロセッサ100によりアクセスされ得る。この動作は
部分的には転送イネーブルメカニズム384を制御する
ことによってなし遂げられる。
【0029】一方、要求されたアドレスと関連のデータ
がキャッシュメモリ320のメモリモジュール329内
に存在しなかった場合、データはメインメモリ400か
ら検索されなければならない。この検索は部分的には要
求されたアドレスを内部アドレスバス600から外部ア
ドレスバス500へ転送できるようにする転送イネーブ
ルメカニズム381を制御することによりなし遂げられ
るものであって、この外部アドレスバス500において
アドレスはメインメモリ400によりアクセスされ得
る。その後メインメモリ400は要求されたアドレスと
関連のデータを検索し、これらを外部データバス550
上に位置付ける。ここから、要求されたアドレスと関連
のデータはプロセッサ100により検索され、そのプロ
グラムの実行において用いられる。データは転送イネー
ブルメカニズム388によりキャッシュユニット300
から引出されてキャッシュメモリ320内にストアする
こともできる。
【0030】当業者は本発明を実施するためのマルチレ
ベルメモリ階層を動作させるさまざまな他のやり方があ
るということを認識するであろう。
【0031】上述のように、キャッシュシステムのヒッ
ト率は重要な性能の判断基準である。本発明に従いヒッ
ト率を最大限にするためには、プロセッサ100のプロ
グラマは新規なマルチラインキャッシュプリフェッチ命
令を利用することができる。プログラマは、プロセッサ
100がそのプログラムされた機能を実行するに当たり
そのプロセッサ100に必要なデータを予想することが
できる。この情報で、プログラマは計画的にマルチライ
ンキャッシュプリフェッチ命令を実行可能プログラムに
位置付け、それによりキャッシュユニット300にプロ
セッサ100が差し当たって要求するであろうデータを
キャッシュメモリ320内へプリフェッチさせることが
できる。
【0032】そのようなマルチラインキャッシュプリフ
ェッチ命令は「NON−BLOCKING LOAD」
命令と称することができる。これはデータの有無をテス
トし、プロセッサ100において実行されているプログ
ラムの実行を中断させるまたは「ブロック」することな
くメモリ転送を要求するものだからである。このノンブ
ロッキング能力は、プロセッサがキャッシュミスの際に
実行を続行できるようにすることによってさらに活かさ
れる。ミスの後に実行されるこれらの命令は「推論的に
実行」されたものであるといわれる。それらの実行はキ
ャッシュミスにより除外が起こった場合には無効化され
なければならないからである。
【0033】ここでは「プログラマ」または「システム
プログラマ」という語が用いられているが、人間のプロ
グラマに限定することが意図されているわけではない。
プロセッサプログラムにNON−BLOCKING L
OAD命令を計画的に挿入するにはオートメーション化
されたプログラミングが用いられてもよい。たとえば、
機械読出可能な命令を実行可能なコードに挿入するのに
高級言語コンパイラを用いてもよい。
【0034】図3(A)および3(B)は、本発明に従
いマルチラインキャッシュプリフェッチ動作をなし遂げ
るためにプロセッサ100において実行され得る、例示
的NON−BLOCKING LOAD命令フォーマッ
トを示す。図3(A)に示されるフォーマットに従い、
命令はオペレーションコード(たとえば16ビット)
と、アドレスレジスタにより間接的に特定されるオフセ
ット(たとえば8ビット)と、ベースアドレスが特定さ
れるレジスタを識別するベースアドレスレジスタフィー
ルド(たとえば8ビット)とを含む。図3(B)に示す
フォーマットに従い、命令はオペレーションコード(た
とえば16ビット)と、即値オフセット(たとえば8ビ
ット)と、ベースアドレスレジスタフィールド(たとえ
ば8ビット)とを含む。どちらのフォーマットに従って
も、プリフェッチされるべきアドレスの範囲は、ベース
アドレスとオフセットとの組合せによって特定される。
オフセットは正または負の方向に特定することができ
る。
【0035】動作の際、NON−BLOCKING L
OAD命令は図4に示されるフローチャートに従い、プ
ロセッサ実行ユニット110によって実行される。この
フローチャートは事実上この命令実行に応答して行なわ
れるさまざまな作用を表しており、これらの作用は部分
的にプロセッサ制御ユニット120の制御論理と、キャ
ッシュメモリアドレスユニット200およびキャッシュ
ユニット300の制御論理とにより制御されている。こ
の制御論理はマイクロコードROMおよびマイクロシー
ケンサ、ステートマシン、プログラマブル論理アレイ、
論理ゲートなど従来の構成のものであってもよい。構成
の1つの形態では、たとえばキャッシュユニット300
は別個になった制御ユニット310を含み、これはたと
えばマイクロ制御された制御ユニットまたはステートマ
シンである。
【0036】プロセッサ100がNON−BLOCKI
NG LOAD命令に遭遇すると(ボックス210)、
これはメモリにおける特定された複数のラインをキャッ
シュメモリ320へ転送させるロード命令をキャッシュ
メモリアドレスユニット200に出すことによって応答
する(ボックス211)。キャッシュメモリアドレスユ
ニット200はこの命令を命令およびベースアドレスレ
ジスタバス800を経由して受取る。応じて、キャッシ
ュメモリアドレスユニット200は命令オペレーション
コードをデコードし、要求されたアドレスを連続的に発
生し、これらのアドレスを一度に1つずつ専用バス70
0を介してキャッシュユニット300に与える(ボック
ス212および215)。要求された各アドレスについ
て、キャッシュユニット300はキャッシュメモリ32
0におけるタグ321をスヌープし、要求されたデータ
が既にキャッシュメモリ320内に存在するかどうかを
判断する(ボックス213)。後に述べるように、キャ
ッシュユニット300はまた、同時にエージング/ライ
トバッファ340をスヌープすることもできる。このス
ヌープによって要求されたアドレスと関連のデータが既
にキャッシュメモリ320またはエージング/ライトバ
ッファ340内に存在することが示された場合、キャッ
シュユニット300はそのアドレスに関してはそれ以上
何もしない。この時点で、キャッシュメモリアドレスユ
ニット200は、特定された範囲において、もしあれば
(ボックス214)次のアドレスを発生し(ボックス2
15)、さもなければそのNON−BLOCKING
LOADに対する動作を終了する(ボックス216)。
【0037】その一方で、要求されたデータが既にキャ
ッシュメモリ320内にあるわけではなかった場合、キ
ャッシュユニット300はこれを検出して抜けているデ
ータのアドレスを転送キュー360内に置くことにより
応答する(ボックス218)。後に説明するように、キ
ャッシュユニット300は転送キュー360のもスヌー
プして、要求されるアドレスが既にプリフェッチされる
ためにキューに入っているかどうか調べる(ボックス2
17)。もし入っていれば、そのアドレスを転送キュー
360の中に再び入れる必要はない。CMAU制御ライ
ン900が、ハンドシェーキングおよび/または転送キ
ュー360が一杯であることをキャッシュメモリアドレ
スユニット200に示すためにキャッシュユニット30
0により用いられ得る。転送キュー360が一杯である
と、キャッシュメモリアドレスユニット200は全ての
未決定のプリフェッチ動作をバッファ処理するか、また
は単に無視してもよい。
【0038】図4に示されるように、アドレスを発生
し、キャッシュメモリをスヌープし、これに応じて応答
するプロセスは、キャッシュメモリアドレスユニット2
00がNON−BLOCKING LOAD命令により
特定された範囲内の最後のアドレスを発生してしまうま
で繰返し続けられる(ボックス214)。その時点で
(ボックス216)、キャッシュメモリアドレスユニッ
トは次の未決定のNON−BLOCKING LOAD
またはNON−BLOCKING WRITEBACK
命令の実行を始めることができる。キャッシュメモリア
ドレスユニット200は好ましくはプロセッサ100に
よりそれに送られる複数の未決定のNON−BLOCK
ING LOADまたはNON−BLOCKING W
RITEBACK命令をバッファ処理することができ
る。そうすれば、プロセッサ100はただ単にキャッシ
ュメモリアドレスユニット200が使用中であるという
だけの理由でその動作を立ち往生させる必要がなくな
る。
【0039】ここで一旦図2に戻って、転送キュー36
0の付加的な機能を説明する。アドレスが転送キュー3
60内に位置付けられた後、次にキャッシュユニット3
00が転送キュー360内のアドレスを転送制御メカニ
ズム383を介して外部アドレスバス500上に置かれ
るようにし、抜けているデータがプロセッサの関与なし
にキャッシュメモリ内に引出されるメインメモリアクセ
スを調整する。このようにして、プロセッサ100によ
り要求されるデータがメインメモリ400にアクセスす
ることなくキャッシュメモリ320から引出され得る可
能性は増大し、メモリアクセス時間はこれにより最小限
になる。
【0040】図5は転送キュー360の例示的な実施例
を示す。転送キュー360は上述の態様でメインメモリ
400から引出されるべき複数個のデータのアドレスを
ストアするための転送アレイ361を含む。各アドレス
には有効ビット362が関連付けられている。制御ブロ
ック363が、転送キュー360が一杯であるときに
「フル」信号900を生成することを含めて転送キュー
360のいくつかの機能を管理する。内部アドレスバス
600および専用アドレスバス700は双方とも転送ア
レイ361にアクセスしてここで説明される特徴を完全
にサポートする。1つの実施例では、転送アレイは、各
々が22ビットのサイズである8個のアドレスエントリ
を備えるCAM/RAMアレイである。
【0041】転送キュー360は好ましくは完全にアソ
シアティブなアドレスキューである。このアソシアティ
ビティにより、いくつかの有益な能力が付加される。特
定的には、転送キュー360をアソシアティブにするこ
とによって、キャッシュユニット300はプリフェッチ
されるべきアドレスの範囲内における各アドレスを求め
て転送キュー360をスヌープすることができるように
なる。以前のNON−BLOCKING LOAD命令
に応答して、要求されたアドレスが既に転送キュー36
0内に位置付けられていれば、キャッシュユニット30
0は要求されたアドレスをキューに入れ直す必要がな
い。転送キュー360がアソシアティブであることの別
の利点は、メモリプリフェッチ動作のためにキューに入
れられている要求されたアドレスは、データがキャッシ
ュメモリ320内にプリフェッチされ得るようになる前
にそのデータに対する実際のデータ要求をプロセッサ1
00が出してしまった場合(すなわちミスが起こった場
合)、転送キュー360から削除することができるとい
うことである。この場合、キャッシュユニット300は
二重のメインメモリアクセスを回避すべく転送キュー3
60からの要求されたアドレスを削除する能力を有して
いる。
【0042】図6はプロセッサ100におけるロード命
令の実行のフローチャートを示す。プロセッサ100は
要求されたアドレスを内部アドレスバス600上に位置
付け(ボックス220)、キャッシュユニット300
に、タグ321をスヌープして要求されたアドレスと関
連のデータがキャッシュメモリ320またはエージング
/ライトバッファ340内に存在するかどうか調べるよ
う促す(ボックス221)。データが存在する場合、キ
ャッシュユニット300はそのデータを内部データバス
650を介してプロセッサ100に送る(ボックス22
2)。他方で、要求されたアドレスと関連のデータが抜
けている場合、キャッシュユニット300は即座に要求
されたアドレスをメインメモリ400から引出すために
外部アドレスバス500に転送し、それによりメインメ
モリはこのデータをプロセッサ100に送る(ボックス
223および224)。同時に、転送キュー360は以
前のNON−BLOCKING LOAD命令に応答し
て要求されたデータのアドレスが転送キュー360内に
入れられているかどうかを判断するためにスヌープされ
る。もし入れられていれば、そのアドレスは転送キュー
360から削除される(ボックス226)。このように
して、遅いプリフェッチ動作は、それらがもはや必要で
も有用でもなくなった場合には回避され得る。転送キュ
ー360をスヌープする動作および不要なアドレス要求
を削除する動作は、タグ321をスヌープするのと並行
に実行することもできるし、メインメモリアクセス後に
なし遂げることもできる。これでロード命令についての
動作が終了する(ボックス227)。
【0043】本発明の他の局面に従い、キャッシュメモ
リから、メインメモリ400を更新するためにNON−
BLOCKING WRITEBACK命令が与えられ
る。NON−BLOCKING WRITEBACK命
令により、システムプログラマはプログラム全体を通じ
てキャッシュ内のスペースをそのスペースが実際に必要
とされるより前に予想して開放する命令を計画的に挿入
することができる。この動作はプロセッサの制御からは
独立的になし遂げられる。このようにして、プロセッサ
がプログラム実行中にライトバック動作をサービスする
ために立ち往生することはなくなる。動作の1つのモー
ドでは、NON−BLOCKING WRITEBAC
K命令はNON−BLOCKING LOAD命令のす
ぐ前に発行されてもよい。こうすれば、キャッシュメモ
リスペースを予想に基づいて開放してから、再び有用な
データで満たすことができるだろう。
【0044】図7(A)および7(B)はNON−BL
OCKING WRITEBACK命令のための可能な
2つの命令フォーマットを示す。図7(A)に示される
フォーマットは、オペレーションコード(たとえば16
ビット)と、ベースアドレスが特定されるレジスタを識
別するベースアドレスレジスタフィールド(たとえば8
ビット)と、レジスタ内で特定されるオフセット(たと
えば8ビット)とを含む。図7(B)に示されるフォー
マットに従えば、命令はオペレーションコード(たとえ
ば16ビット)と、ベースアドレスレジスタフィールド
(たとえば8ビット)と、即値オフセット(たとえば8
ビット)とを含む。どちらの方法でも、キャッシュメモ
リからメインメモリへライトバックされるべきアドレス
の範囲は特定され得る。オフセットは正または負のどち
らの方向にでも特定され得る。代替的には、NON−B
LOCKING WRITEBACK命令はライトバッ
クされるべきアドレスを1つだけ特定してもよい。ライ
トバックされるべきデータのグループを特定するには他
にも方法があり、これらは当業者には明らかであろう。
【0045】動作に当たっては、NON−BLOCKI
NG WRITEBACK命令は図8に示されるフロー
チャートに従い作用する。プロセッサ100がNON−
BLOCKING WRITEBACK命令に遭遇する
と(ボックス230)、これは命令およびベースアドレ
スレジスタバス800を介してキャッシュメモリアドレ
スユニット200へ命令を出す(ボックス231)。キ
ャッシュメモリアドレスユニット200はオペレーショ
ンコードをデコードしてライトバックされるべきアドレ
スの範囲がどのように特定されるかを判断する(ボック
ス232)。キャッシュメモリアドレスユニット200
は次にライトバックされるべきデータのアドレスを連続
的に発生する。アドレスは一度に1つずつ専用アドレス
バス700を介してキャッシュユニット300に伝えら
れる。
【0046】専用アドレスバス700上に発生される各
アドレスに応答して、キャッシュユニット300はタグ
321をスヌープし、特定されたデータが現在キャッシ
ュメモリ320内にストアされているかどうかを判断す
る(ボックス233)。特定されたアドレスと関連のデ
ータがキャッシュメモリ320内になければ、キャッシ
ュユニット300はこのアドレスに関してはそれ以上の
動きを起こさない。この時点で、キャッシュメモリアド
レスユニットはもしあれば(ボックス234)、特定さ
れた範囲内における次のアドレスを発生し(ボックス2
35)、なければそのNON−BLOCKING WR
ITEBACKに関する動作を終了させる(ボックス2
36)。他方で、特定のアドレスがキャッシュメモリ3
20内に位置付けられており、そのデータがメインメモ
リ400にライトバックされる必要がある場合、キャッ
シュユニット300がこれを検出し、要求されたアドレ
スおよび関連のデータをエージング/ライトバッファ3
40内に入れることによって応答する(ボックス23
7)。このエージング/ライトバッファ340からデー
タは適宜メインメモリ400にライトバックされる。
【0047】本発明に従い、エージング/ライトバッフ
ァ340は、メインメモリ400へライトバックされる
前に、キャッシュメモリ320から追い出されたキャッ
シュエントリのための一時的バッファとして働く。エー
ジング/ライトバッファ340の例示的な実現例の詳細
を図9に示す。エージング/ライトバッファ340は2
4ビットのアドレスと関連付けられたデータをストアす
るための36個のエントリを有する。20ビットアドレ
スアレイ341がデータアレイ342にストアされる各
キャッシュラインとアドレスを関連付ける。残りの4つ
のアドレスビットはデータワードおよびその中の特定の
バイトを特定する。有効ビットおよびダーティビット3
43が各エントリと関連付けられている。オーバライト
プライオリタイザ350からのデータは次の上書きされ
るべきエントリを特定するのに必要となるのに応じてエ
ントリと結合される。「ダーティ」エントリは上書きさ
れるようになる前にメモリに書き出されなければならな
い。
【0048】アドレスアレイ341は20ビット幅の2
ポートCAMアレイであり得る。有効/ダーティビット
343は、キャッシュコントローラによってしか利用可
能でないということにおいて「隠し」ビットである。エ
ージング/ライトバッファ340においては好ましくは
1つのラインにつき1つの有効ビットと1つのダーティ
ビットとが利用可能である。1つの実施例ではデータア
レイ342は128ビット幅であり、これは4データワ
ード分の量に相当する。ここで論じられる動作を実行す
るに当たり、アドレスおよびデータバスへの接続が用い
られる。タグ321およびアドレスアレイ341、なら
びにRAMメモリモジュール329およびデータアレイ
342間に接続が設けられる。
【0049】エージング/ライトバッファ340はアソ
シアティブメモリなので、ロード命令(通常のもの、ま
たはノンブロッキング)がサービスされているときにキ
ャッシュメモリ320と並行してスヌープされ得る。要
求されたアドレスと関連のデータがエージング/ライト
バッファ340内にあれば、そのデータは転送制御メカ
ニズム386を介して直接エージング/ライトバッファ
340から読出すことができる。このようにして、キャ
ッシュメモリ320から追い出されたがまだメインメモ
リ400には上書きまたはライトバックされていないデ
ータがもし必要ならば、まだ引出すことができるだろ
う。このアプローチはまた、先行技術で用いられる「犠
牲キャッシュ」に個別に問合せをして要求されるアドレ
スがそのキャッシュに入れられているかどうかを調べる
必要性を回避する。同様に、読出す前にエントリをキャ
ッシュメモリ320にコピーバックする必要がない。
【0050】エージング/ライトバッファ340の好ま
しい特徴は、(キャッシュメモリ320のダイレクトマ
ッピングまたはセットアソシアティビティとは反対に)
それが完全にアソシアティブであるということである。
この局面は多くの場合キャッシュユニット300につい
て総合的なヒット率をより高くすることになるだろう。
なぜなら、そのようなバッファ内に入れられたエントリ
は交換が意図されるもの以外のいかなるデータを上書き
してしまう必要もなく空いているどのメモリ位置にも入
れることができるからである。
【0051】エージング/ライトバッファ340内のス
ペースを管理するにはさまざまな方法がある。たとえ
ば、メモリにおけるいくつかの(たとえば4つの)ライ
ンを常に「クリーン」の状態にしておき、ライトバック
動作をまず行なわなくてもこれらが上書きされてよいよ
うにしておくことが望ましいかもしれない。この場合、
キャッシュコントローラはエージング/ライトバッファ
340内のスペースが実際に必要とされる前に「ダーテ
ィ」エントリをメインメモリ400にライトバックさせ
る。これはたとえば1番最近に用いられた3つの位置を
識別してこれらの位置と関連のデータがダーティであっ
たならばこれらをメインメモリ400にライトバックす
ることによって行なわれてもよい。
【0052】(キャッシュメモリ320から新しく追い
出されたものがあるので、または将来を見越してライン
を「クリーン」にするため)エージング/ライトバッフ
ァ340内のあるエントリを上書きすべきときになる
と、どのエントリを上書きするか判断するためのアルゴ
リズムが必要となる。この目的のためにエージング/ラ
イトバッファ340と通信するオーバライトプライオリ
タイザ350が設けられる。本発明の一実施例に従い、
オーバライトプライオリタイザはエージング/ライトバ
ッファ340内の次に上書きされるべきエントリをラン
ダムに選択するための乱数アルゴリズムを実現する。こ
れはたとえば、リングカウンタまたは他の種類の擬似乱
数ジェネレータによって行なわれる。別の可能な実施例
はファーストイン/ファーストアウトアルゴリズムを実
現する。さらに別の実施例はエージング/ライトバッフ
ァ340内の各エントリと関連付けられたバッファ内に
ストアされているタイムスタンプを用いる最新使用(L
RU)アルゴリズムを実現する。別の実施例に従い、オ
ーバライトプライオリタイザは、データ構造がだんだん
小さくなっていくセクションに副分割されされる2進ツ
リー構造を用いた擬似LRUアルゴリズムを実現する。
その場合識別子コードの各ビットが一番最近にアクセス
されたセクションをより特定的に特定するために用いら
れる。使用される方法にかかわりなく、オーバライトプ
ライオリタイザ350内にストアされたデータは、周期
的に、たとえばエージング/ライトバッファ340から
読出しがサービスされる度に、更新されなければならな
い。最後に、キャッシュメモリ320とエージング/ラ
イトバッファ340とに関しては、キャッシュのコヒー
レンシの問題がある。これはいくつかの知られている方
法で対処することができる。1つの実施例に従えば、デ
ータは(キャッシュメモリ320内にあろうとエージン
グ/ライトバッファ340内にあろうと)各キャッシュ
エントリについて維持され、そのエントリが「ダーテ
ィ」であるか、すなわちそれがメインメモリ400から
キャッシュユニット300に移入されて以来プロセッサ
100によって書込みされているかどうかを示す。「ダ
ーティ」なエントリは上書きできるようになる前にメイ
ンメモリ400にコピーバックされなければならない。
これは図2に示される転送制御メカニズム387を通じ
て達成される。「ライトスルー」方式として知られる他
の実施例に従えば、プロセッサ100により発せられる
すべての書込命令はキャッシュメモリ320およびメイ
ンメモリ400において同時に実行されるため、コピー
バックのステップは必要でない。この実施例では、キャ
ッシュエントリは常にメインメモリエントリと同一であ
るため、「ダーティ」インジケータは不要である。
【0053】本発明の他の局面に従い、異なる動作との
関連で必要となる複数の要求されたアドレスに対する同
時探索(たとえばプロセッサ100によるロード命令と
キャッシュメモリアドレスユニット200によるプリフ
ェッチ動作とに応答しての同時探索)ができるようにす
るためアドレスタグ321がインタリーブされる。この
方式は図10に示される。インタリービングはタグ32
1をディスクリートなタグブロック321a〜321d
に分割することによってなし遂げられる。タグブロック
321a〜321dの各々は、エントリが使用されてい
るかどうかを示す有効ビットおよびコピーバックキャッ
シュのためのダーティビットとともに、後に説明するよ
うに異なった範囲の重複しないアドレススペースに関連
付けられる。タグブロック321a〜321dの各々
は、アドレスマルチプレクサ323a〜323dの1つ
と関連付けられる。マルチプレクサ323a〜323d
の各々は、キャッシュユニット300で用いられる3つ
のアドレスバス、すなわち外部アドレスバス500と、
内部アドレスバス600と、専用アドレスバス700と
の各々に接続される。マルチプレクサ323a〜323
dは、3つのアドレスのうちどれがタグブロック321
a〜321dのうちどれに与えられるかを選択するため
にキャッシュユニット300における制御論理により動
作させられる。
【0054】さまざまなアドレスをタグブロック321
a〜321dに選択的に経路付けする役割を持つ制御論
理は、衝突を回避し、タグブロック321a〜321d
の各々についてどのアクセス要求が優先されるかを判断
するため、たとえばシステム優先順位に基づき動作す
る。プロセッサ100がほとんど常に(たとえ同じタグ
ブロック内でスヌープが未決定であったとしても)キャ
ッシュユニット300にアクセスしていられるようにす
るため、タグブロック321a〜321dのうち同一の
タグにアクセスしようとしている2つのアドレスにおけ
るインデックスを比較することができる。アドレスイン
デックスが一致しなければ、これはスヌープによりプロ
セッサ100がアクセスしている位置が変わっていない
ということを意味しており、プロセッサ100が優先さ
れ、スヌープは立ち往生される。一方、アドレスインデ
ックスが一致したならば、プロセッサ100は好ましく
は1クロックの間立ち往生させられ、まずスヌープが
(スヌープ読出であろうとスヌープ書込であろうと)進
行することを許容されて、厳密なコヒーレンシが保証さ
れる。この基本的方式にはさまざまな変形および強化が
可能である。たとえば、同じタグブロック内でスヌープ
アクセスが進行することを許容するため、プロセッサア
クセスが立ち往生させられる回数を追跡するのにカウン
タを用いてもよい。この回数が何らかのしきい値を超え
た場合、プロセッサアクセスが最終的にサービスされ得
るように、制御論理により強制的に次のスヌープアクセ
スを立ち往生させることができる。
【0055】比較器324a〜324dは、キャッシュ
「ヒット」または「ミス」が各ブロックにおいて生じた
かどうかを判断するための比較動作を行なう。この動作
の結果は次にさらなるキャッシュ動作においてキャッシ
ュ制御ユニット310により用いられる。各ブロックに
送られるアドレスはまた、タグ321の探索と並行して
そこでスヌープを行なうためエージング/ライトバッフ
ァ340にも同時に経路付けすることができる。このよ
うにして、安価なメモリセル(たとえばより高価なデュ
アルポートセルよりも標準的な6トランジスタセル)で
複数同時タグアクセスは対処され得る。
【0056】この、タグ321のためのインタリービン
グ方式は単独で実現することもできるし、図11に示す
ようにデータブロックのさらなるインタリービングと結
合することもできる。タグ部分と、データ部分と、バイ
ト部分とを有する、コンピュータシステム10のための
24ビットアドレスフォーマットが示される。バイト部
分には2ビットが含まれる。タグ部分は1つのタグを含
む。データ部分はデータブロック識別子(2ビット)と
データブロックインデックス(7ビット)とを含む。加
えて、タグブロック識別子(2ビット)とタグインデッ
クス(5ビット)とが、データブロック部分のために用
いられる同じビットのうち少なくともいくらかに及んで
インタリーブされる。2ビットのタグ識別子は図10を
参照して上述したフォーウェイタグインタリーブ方式を
表わす。2ビットタグ識別子における2つのビットの4
通りの組合せの各々が、タグ識別子からなる24ビット
アドレスをおそらく含むかもしれないタグブロック(図
10の321a〜321b)のうちそれぞれ1つを識別
する。
【0057】図12はこのデュアルインタリービング方
式がどのようにRAMメモリモジュール329における
メモリ位置へアドレスをマッピングするかを示す。RA
Mメモリモジュール329はタグブロック321a〜3
21dと同じ態様でデータブロック329a〜329d
に編成される。図示されている各データブロックおよび
タグブロックはその一意的なデータブロック識別子また
はタグブロック識別子によりそれぞれ識別されている。
タグインデックスおよびデータブロックインデックスは
それぞれ各タグブロックまたはデータブロックへのオフ
セットを表わす。2ビットのバイト識別子はデータブロ
ック幅における特定のバイトを特定する。この配列は特
にワード境界上に整列されていないメモリアクセスをサ
ポートするのに有用である。2つの連続するメモリモジ
ュールにアクセスすることができ、その2つにわたるデ
ータを出力することができる。あるアクセスがライン境
界に交差した場合、2つの連続的なタグブロックが各ラ
インに付き1つずつ、アクセスされ得る。
【図面の簡単な説明】
【図1】本発明のキャッシュアーキテクチャを用いるコ
ンピュータシステムの包括的概観図である。
【図2】本発明のキャッシュアーキテクチャのブロック
図である。
【図3】(A)はレジスタに対し間接的なアドレス指定
モードを用いた本発明に従うNON−BLOCKING
LOAD命令のための例示的な命令フォーマットを示
す図であり、(B)は即値アドレス指定モードを用いた
本発明のNON−BLOCKING LOAD命令のた
めの例示的命令フォーマットを示す図である。
【図4】本発明に従うNON−BLOCKING LO
AD命令の実行中におけるキャッシュアクセスのための
フローチャート図である。
【図5】本発明に従う転送キューの概略図である。
【図6】本発明に従う通常のメモリロード命令の実行中
におけるキャッシュアクセスのためのフローチャート図
である。
【図7】(A)はレジスタに対し間接的なアドレス指定
モードを用いるNON−BLOCKING WRITE
BACK命令のための例示的命令フォーマットを示す図
であり、(B)は即値アドレス指定モードを用いる本発
明のNON−BLOCKING WRITEBACK命
令のための例示的命令フォーマットを示す図である。
【図8】本発明に従うNON−BLOCKING WR
ITEBACK命令の実行中におけるキャッシュアクセ
スのためのフローチャート図である。
【図9】本発明に従うエージング/ライトバッファの概
略図である。
【図10】本発明に従うキャッシュアドレスタグインタ
リービングを用いる回路の概略図である。
【図11】コンピュータシステムのためのアドレスフォ
ーマットを示す図である。
【図12】本発明のタグおよびデータブロックインタリ
ービング方式を示す図である。
【符号の説明】
200 キャッシュメモリアドレスユニット 300 キャッシュユニット 320 キャッシュメモリ 340 エージング/ライトバッファ 500 外部アドレスバス 600 内部アドレスバス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 キース・エム・ビンドロス アメリカ合衆国、92714 カリフォルニア 州、アーバイン、ビーバー・ストリート、 3861

Claims (63)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサおよびメインメモリと用いる
    ためのキャッシュシステムであって、 (a) キャッシュメモリアドレスユニットを備え、前
    記キャッシュメモリアドレスユニットは前記プロセッサ
    に前記キャッシュメモリアドレスユニットを接続して前
    記プロセッサから前記キャッシュメモリアドレスユニッ
    トにアドレスを転送する入力アドレスバス、および出力
    アドレスバスを有し、前記キャッシュシステムはさらに (b) 前記出力アドレスバスを介して前記キャッシュ
    メモリアドレスユニットに接続され前記出力アドレスバ
    スからアドレスを受取るキャッシュタグメモリと、 (c) その中のデータのラインが前記キャッシュタグ
    メモリブロック内にストアされるそれぞれのタグと関連
    づけられるように、前記キャッシュタグメモリと関連づ
    けられるキャッシュデータメモリと、 (d) 前記プロセッサが前記キャッシュタグをアドレ
    ス指定できるように前記プロセッサに前記キャッシュタ
    グメモリを接続する内部アドレスバスと、 (e) アドレスが前記キャッシュタグメモリ、前記プ
    ロセッサ、および前記メインメモリのうちを転送され得
    るように前記キャッシュタグメモリを前記プロセッサお
    よび前記メインメモリに接続する外部アドレスバスと、 (f) 前記出力アドレスバスを介して前記キャッシュ
    メモリアドレスユニットに接続され前記キャッシュメモ
    リアドレスユニットからアドレスを受取る転送キュー
    と、 (g) その中のエントリと比較するためにそれにアド
    レスを与えるための前記出力アドレスバスを介して前記
    キャッシュメモリアドレスユニットに接続されるエージ
    ング/ライトバッファとを備える、キャッシュシステ
    ム。
  2. 【請求項2】 前記転送キューは完全にアソシアティブ
    である、請求項1に記載のキャッシュシステム。
  3. 【請求項3】 前記エージング/ライトバッファは完全
    にアソシアティブである、請求項1に記載のキャッシュ
    システム。
  4. 【請求項4】 前記キャッシュタグメモリは複数個のタ
    グメモリブロックとタグ比較器とを含み、前記タグメモ
    リブロックの各々はそれぞれのばらばらなアドレスのセ
    ットと関連づけられている、請求項1に記載のキャッシ
    ュシステム。
  5. 【請求項5】 前記キャッシュタグメモリは、前記アド
    レスのソースが前記タグメモリブロックのそれぞれ異な
    る1つに独立的に結合され得るように、前記出力バス、
    前記内部アドレスバス、および前記外部アドレスバスに
    接続されるアドレスマルチプレクサをさらに含む、請求
    項4に記載のキャッシュシステム。
  6. 【請求項6】 前記キャッシュデータメモリは複数個の
    データメモリブロックに副分割され、その各々はデータ
    の入出力のためのそれぞれのデータバスを有する、請求
    項4に記載のキャッシュシステム。
  7. 【請求項7】 前記キャッシュタグメモリおよび前記キ
    ャッシュデータメモリは、前記データキャッシュからは
    区別されるデータキャッシュおよび命令キャッシュを提
    供するべく各々副分割される、請求項5に記載のキャッ
    シュシステム。
  8. 【請求項8】 プロセッサと、キャッシュと、前記プロ
    セッサと前記キャッシュとを接続して前記プロセッサか
    ら前記キャッシュへアドレスを転送するアドレスバスと
    を有するコンピュータシステムにおけるキャッシュメモ
    リアドレスユニットであって、 (a) 前記アドレスバスからは区別される命令バス
    と、 (b) 前記命令バスを介して前記プロセッサに接続さ
    れる論理回路とを備え、前記論理回路は前記プロセッサ
    から受取られた命令に応答してプロセッサ制御からは独
    立的にアドレスを発生し、前記キャッシュメモリアドレ
    スユニットはさらに (c) 前記論理回路を前記キャッシュに接続して前記
    発生されたアドレスをキャッシュ動作において用いるた
    めに前記キャッシュに伝えるキャッシュ出力バスを備え
    る、キャッシュメモリアドレスユニット。
  9. 【請求項9】 キャッシュメモリを有するコンピュータ
    システムにおいて、前記キャッシュメモリから追出され
    たデータをバッファ処理するためのエージング/ライト
    バッファであって、前記バッファ処理されたデータは前
    記エージング/ライトバッファから直接検索されてもよ
    く、前記エージング/ライトバッファは、 (a) 複数個のエントリを備えるアドレスメモリアレ
    イと、 (b) 1つのエントリが前記アドレスメモリアレイ内
    の前記複数個のエントリの各々に対応するデータメモリ
    アレイと、 (c) 前記アドレスメモリアレイ内の前記複数個のエ
    ントリの各々と関連づけられた少なくとも1つのステー
    タスビットと、 (d) 前記エージング/ライトバッファへ、および前
    記エージング/ライトバッファから、アドレス情報を伝
    えるための少なくとも1つのアドレスバス入力および少
    なくとも1つのアドレスバス出力と、 (e) 前記エージング/ライトバッファへ、および前
    記エージング/ライトバッファから、データを伝えるた
    めの少なくとも1つのデータバス入力および少なくとも
    1のデータバス出力と、 (f) 前記エントリのうちどれが次に上書きされるべ
    きエントリとなるかを判断するための手段とを備える、
    エージング/ライトバッファ。
  10. 【請求項10】 前記エージング/ライトバッファは前
    記キャッシュメモリよりもアソシアティビティの度合い
    が高い、請求項9に記載のエージング/ライトバッフ
    ァ。
  11. 【請求項11】 前記エージング/ライトバッファは完
    全にアソシアティブである、請求項10に記載のエージ
    ング/ライトバッファ。
  12. 【請求項12】 低帯域幅メモリ内の予め知られている
    アドレスからプロセッサによりアクセス可能な高帯域幅
    メモリへデータのシーケンスを転送する方法であって、 (a) プロセッサにより、メモリアドレスユニットに
    複数ラインのノンブロッキングロード命令を発行して前
    記低帯域幅メモリから前記高帯域幅メモリへデータの特
    定の部分を転送するステップと、 (b) 前記メモリアドレスユニットにより、前記デー
    タの特定の部分が既に高帯域幅メモリ内に存在するかど
    うかを判断するためのテストを行なうステップと、 (c) 前記テストにより前記データの特定の部分がす
    べて前記高帯域幅メモリ内に既に存在するということが
    示された場合、前記メモリアドレスユニットは前記デー
    タの特定の部分を転送するためのそれ以上のいかなる動
    作もとらないステップと、 (d) 前記テストにより、前記データの特定の部分が
    前記高帯域幅メモリ内に既に存在するわけではないこと
    が示された場合、(i) 前記メモリアドレスユニット
    により前記低帯域幅メモリから前記高帯域幅メモリへ転
    送されるべき前記データの特定の部分の少なくとも一部
    を指定する識別子を転送キューの中に挿入し、(ii)
    キャッシュ制御ユニットにより前記識別子を検索して
    前記低帯域幅メモリから前記高帯域幅メモリに前記デー
    タの特定の部分の前記指定された部分を転送するステッ
    プとを備える、方法。
  13. 【請求項13】 前記高帯域幅メモリはキャッシュメモ
    リであり、前記低帯域幅メモリはメインメモリであり、
    前記メモリアドレスユニットはキャッシュメモリアドレ
    スユニットである、請求項12に記載の方法。
  14. 【請求項14】 前記キャッシュメモリは推論的キャッ
    シュメモリである、請求項13に記載の方法。
  15. 【請求項15】 (a) 前記データの特定の部分は前
    記キャッシュメモリ内に既に存在するわけではなく、 (b) 前記プロセッサは前記データの特定の部分にお
    ける前記指定された部分に対する要求を前記指定された
    部分の前記キャッシュメモリへの転送に先立って発行す
    る、請求項13に記載の方法。
  16. 【請求項16】 (a) 前記プロセッサは前記転送キ
    ュー内に入れられたメモリアドレスのために前記キャッ
    シュへメモリロード命令を発行し、 (b) 制御論理は、(A)前記メモリアクセス命令を
    受取り、(B)前記メモリアドレスが転送キュー内で未
    決定であるかどうかを判断するため前記転送キューに問
    合わせをし、(C)そうであった場合に転送キューから
    前記メモリアドレスを削除する、請求項15に記載の方
    法。
  17. 【請求項17】 (i) 前記転送キューはアドレスキ
    ューであり、(ii) 前記データの特定の部分におけ
    る前記識別子は前記データの特定の部分のアドレスであ
    る、請求項13に記載の方法。
  18. 【請求項18】 前記転送キューはアソシアティブであ
    る、請求項17に記載の方法。
  19. 【請求項19】 (i) 前記データの特定の部分にお
    ける第1の部分は前記キャッシュメモリ内に既に存在し
    ているわけではなく、前記データの特定の部分における
    第2の部分は前記キャッシュメモリ内に既に存在してお
    り、かつ(ii) 前記特定されたデータ部分の前記識
    別子は前記第1の部分を識別する、請求項13に記載の
    方法。
  20. 【請求項20】 プロセッサユニットによる複数ライン
    のノンブロッキングロード命令の発行は、高級言語コン
    パイラにより発生される命令の機械読出可能プログラム
    により制御される、請求項13に記載の方法。
  21. 【請求項21】 請求項13に記載のステップ(a)に
    先立ち、将来のプログラム実行のために前記キャッシュ
    メモリ内に存在することが所望されるデータに対応する
    前記メインメモリ内の複数アドレスのブロックを識別す
    るステップをさらに含む、請求項13に記載の方法。
  22. 【請求項22】 プロセッサユニットによる複数ライン
    のノンブロッキングロード命令の発行は、高級言語コン
    パイラにより発生される命令の機械読出可能プログラム
    により制御される、請求項12に記載の方法。
  23. 【請求項23】 クレーム12に記載のステップ(a)
    に先立ち、将来のプログラム実行のために高帯域幅メモ
    リ内に存在することが所望されるデータの低帯域幅メモ
    リ内のアドレスのシーケンスを将来を見越して識別する
    ステップをさらに含む、請求項12に記載の方法。
  24. 【請求項24】 プロセッサおよびメインメモリとの関
    連においてキャッシュメモリを動作させる方法であっ
    て、 (a) 前記プロセッサにより、前記メインメモリから
    前記キャッシュメモリへ転送されるべきデータのブロッ
    クに対応する複数のアドレスの範囲を特定するノンブロ
    ッキングロード命令を発行するステップと、 (b) プロセッサ制御からは独立して前記アドレスの
    特定された範囲における各個別のアドレスを発生するス
    テップと、 (c) 前記特定された範囲のアドレスにおける各発生
    されたアドレスに対し、(i) 前記発生されたアドレ
    スに対応する前記データが前記キャッシュメモリ内に既
    にストアされているかどうかを判断し、もしストアされ
    ていれば、そのデータの転送に関してはさらなる動作を
    行なわず、(ii) 前記データが前記キャッシュメモ
    リ内に既にストアされているわけではない場合、前記メ
    インメモリから前記キャッシュメモリへ前記発生された
    アドレスに対応する前記データを転送することを、プロ
    セッサ制御からは独立的に行なうステップとを含む、方
    法。
  25. 【請求項25】 前記データを転送する前記ステップ
    は、いつか将来転送されるべき転送キューに前記データ
    に対応する識別子を位置づけるさらなるステップを含
    む、請求項24に記載の方法。
  26. 【請求項26】 プロセッサおよびメインメモリとの関
    連でキャッシュメモリを動作させる方法であって、 (a) 前記プロセッサにより、前記メインメモリから
    前記キャッシュメモリ内に転送されるべきデータに対応
    する複数ラインの範囲のアドレスを特定するノンブロッ
    キングロード命令を発行するステップと、 (b) プロセッサ制御からは独立的に前記アドレスの
    特定の範囲における各個別のアドレスを発生するステッ
    プと、 (c) 前記アドレスの特定の範囲における各発生され
    たアドレスに対し、(i) 前記発生されたアドレスに
    対応する前記データが前記キャッシュメモリ内に既にス
    トアされているかどうかを判断し、前記発生されたアド
    レスに対応する前記データが前記メモリ内に既にストア
    されている場合、そのデータを転送することに関しては
    さらなる動作を行わず、(ii) 前記データが前記キ
    ャッシュメモリ内に既にストアされているわけではない
    場合、前記データが前記メインメモリから前記キャッシ
    ュメモリへの転送のために既にキューに入れられている
    かどうかを判断し、前記データが前記メインメモリから
    前記キャッシュメモリへの転送のために既にキューに入
    れられている場合、そのデータを転送することに関して
    はさらなる動作を行なわず、(iii) 前記データが
    前記キャッシュメモリ内への転送のために既にキューに
    入れられているわけではない場合、前記データに対応す
    る識別子を前記メインメモリから前記キャッシュメモリ
    へ転送されるべき転送キューに位置づけることを、プロ
    セッサ制御からは独立的に行なうステップとを含む、方
    法。
  27. 【請求項27】 (i) 前記転送キューはアソシアテ
    ィブアドレスキューであり、(ii) 前記データの特
    定の部分における前記識別子は前記発生されたアドレス
    の少なくとも一部分である、請求項26に記載の方法。
  28. 【請求項28】 プログラムを実行するプロセッサを有
    するコンピュータシステムを動作させる方法であって、 (a) 前記プログラムを実行するにあたり将来使用す
    るためにキャッシュメモリ内にストアされていることが
    所望されるデータのブロックに対応する複数ラインの範
    囲のアドレスを識別するステップと、 (b) 前記プロセッサにより、メインメモリからキャ
    ッシュメモリ内へ前記識別された範囲のアドレスに対応
    する前記データを転送する命令を発行するステップと、 (c) プロセッサ制御からは独立的に、前記プロセッ
    サがプログラム実行のために前記データを要求するより
    前にメインメモリからキャッシュメモリへ前記識別され
    た範囲のアドレスに対応する前記データを転送するステ
    ップとを備える、方法。
  29. 【請求項29】 前記識別するステップは、プログラマ
    ブルマシンにより行なわれる、請求項28に記載の方
    法。
  30. 【請求項30】 キャッシュメモリシステムに発行され
    るアドレス要求をサービスする方法であって、前記アド
    レス要求は複数の要求されたアドレスを特定するもので
    あり、前記方法は、 (a) (1)前記キャッシュメモリ内および(2)ア
    ソシアティブアドレスキュー内における前記要求された
    アドレスの各々1つに対し探索を行なうステップと、 (b) 前記キャッシュメモリ内にも前記アソシアティ
    ブアドレスキュー内にも見つからない前記要求されたア
    ドレスの各々1つに関して、そのアドレスを前記アソシ
    アティブアドレスキュー内に位置づけ、前記要求された
    アドレスが前記アソシアティブアドレスキューから取除
    かれる後の時間において前記アドレス要求をサービスす
    るステップとを備える、方法。
  31. 【請求項31】 高帯域幅メモリから低帯域幅メモリへ
    のデータ転送の方法であって、 (a) プロセッサにより、前記高帯域幅メモリから前
    記低帯域幅メモリへの1つまたはそれ以上の特定された
    アドレスと関連のデータを転送するためのノンブロッキ
    ングライトバック命令をメモリアドレスユニットに発行
    するステップと、 (b) 前記メモリアドレスユニットにより、前記特定
    されたアドレスのいずれかと関連の前記データが高帯域
    幅メモリ内に存在するかどうかを判断するためのテスト
    を行なうステップと、 (c) 前記テストにより前記高帯域幅メモリ内には前
    記データのいずれも存在しないことが示されると、前記
    メモリアドレスユニットは前記データを転送するための
    どのようなさらなる動作も行なわないステップと、 (d) 前記テストにより前記高帯域幅メモリ内に前記
    データのいずれかが存在することが示されると、(i)
    前記メモリアドレスユニットにより、前記高帯域幅メ
    モリから前記低帯域幅メモリに転送されるべく前記デー
    タの少なくとも一部分を前記部分に対応する識別子とと
    もにバッファに挿入し、(ii) 制御論理により、前
    記バッファから前記データの前記部分と前記識別子とを
    引出し、前記部分を前記低帯域幅メモリに転送して前記
    識別子により識別される位置にストアするステップとを
    備える、方法。
  32. 【請求項32】 前記高帯域幅メモリはキャッシュメモ
    リであり、前記低帯域幅メモリはメインメモリであり、
    前記メモリアクセスユニットはキャッシュメモリアクセ
    スユニットである、請求項31に記載の方法。
  33. 【請求項33】 前記キャッシュメモリは推論的キャッ
    シュメモリである、請求項32に記載の方法。
  34. 【請求項34】 前記バッファはエージング/ライトバ
    ッファである、請求項32に記載の方法。
  35. 【請求項35】 前記データの前記部分における前記識
    別子は前記データのアドレスである、請求項32に記載
    の方法。
  36. 【請求項36】 (i) 前記特定されたアドレスと関
    連の前記データの第1の部分は前記キャッシュメモリ内
    に存在し、前記データの第2の部分は前記キャッシュメ
    モリ内に存在しておらず、かつ(ii) 前記挿入する
    ステップは前記第2の部分のみに行なわれる、請求項3
    2に記載の方法。
  37. 【請求項37】 プロセッサユニットによる、ノンブロ
    ッキングライトバック命令の発行が高級言語コンパイラ
    により発生される命令の機械読出可能プログラムにより
    制御される、請求項32に記載の方法。
  38. 【請求項38】 請求項32に記載のステップ(a)に
    先立ち、プログラム実行に差し当たり必要でないため前
    記キャッシュメモリから取除くことが所望されているデ
    ータに対応する1つまたはそれ以上のアドレスを予想し
    て識別するステップをさらに含む、請求項32に記載の
    方法。
  39. 【請求項39】 プロセッサユニットによる、ノンブロ
    ッキングロード命令の発行は、高級言語コンパイラによ
    り発生される命令の機械読出可能プログラムにより制御
    される、請求項31に記載の方法。
  40. 【請求項40】 請求項31に記載のステップ(a)に
    先立ち、前記高帯域幅メモリから取除くことが所望され
    ているデータの高帯域幅メモリ内におけるアドレスのシ
    ーケンスを予想して識別するステップをさらに含む、請
    求項31に記載の方法。
  41. 【請求項41】 プロセッサおよびメインメモリとの関
    連でキャッシュメモリを動作させる方法であって、 (a) 前記プロセッサにより、前記キャッシュメモリ
    から前記メインメモリへ転送されるべきデータに対応す
    る1つまたはそれ以上のアドレスの範囲を特定するノン
    ブロッキングライトバック命令を発行するステップと、 (b) プロセッサ制御からは独立的に前記特定された
    アドレスの範囲における各個別のアドレスを発生するス
    テップと、 (c) 前記アドレスの特定された範囲における各発生
    されたアドレスについて、(i) 前記発生されたアド
    レスに対応するデータが前記キャッシュメモリ内にスト
    アされているかどうかを判断し、前記発生されたアドレ
    スに対応する前記データが前記キャッシュメモリ内にス
    トアされていなければ、そのデータを転送することに関
    してはそれ以上の動作を行なわず、(ii) 前記デー
    タが前記キャッシュメモリ内にストアされていれば、前
    記発生されたアドレスに対応する前記データを前記キャ
    ッシュメモリから前記メインメモリへ転送することを、
    プロセッサ制御からは独立的に行なうステップとを含
    む、方法。
  42. 【請求項42】 前記データを転送する前記ステップ
    は、いつか将来において転送すべく、前記データおよび
    前記データに対応する識別子をバッファ内に位置づける
    ステップをさらに含む、請求項41に記載の方法。
  43. 【請求項43】 前記バッファはエージング/ライトバ
    ッファであり、前記方法はエージング/ライトバッファ
    内および前記キャッシュメモリ内でデータを同時に探索
    するステップをさらに含む、請求項42に記載の方法。
  44. 【請求項44】 転送のステップは、前記データが前記
    キャッシュメモリ内に上書きされ得るようにメインメモ
    リへのライトバックを行ない前記転送されたデータと関
    連のダーティビットをクリアするステップをさらに含
    む、請求項41に記載の方法。
  45. 【請求項45】 プロセッサおよびメインメモリとの関
    連でキャッシュメモリを動作させる方法であって、 (a) 前記プロセッサにより、前記キャッシュメモリ
    から前記メインメモリへ転送されるべきデータに対応す
    る1つまたはそれ以上のアドレスの範囲を特定するノン
    ブロッキングライトバック命令を発行するステップと、 (b) プロセッサ制御からは独立的に前記アドレスの
    特定された範囲における各個別のアドレスを発生するス
    テップと、 (c) 前記アドレスの特定された範囲における各発生
    されたアドレスについて、(i) 前記発生されたアド
    レスに対応する前記データが前記キャッシュメモリ内に
    ストアされているかどうかを判断し、前記発生されたア
    ドレスに対応する前記データが前記キャッシュメモリ内
    にストアされていれば、そのデータを転送することにつ
    いてはそれ以上の動作を行なわず、(ii) 前記デー
    タが前記キャッシュメモリ内にストアされている場合、
    前記データが有用な情報を失うことなく上書きされるか
    どうかを判断し、前記データが有用な情報を失うことな
    く上書きされ得る場合は、そのデータを転送することに
    ついてはそれ以上の動作を行なわず、(iii) 前記
    データが有用な情報を失うことなしには上書きされ得な
    い場合、前記データおよび前記データに対応する識別子
    をバッファ内に位置づけて前記メインメモリから前記キ
    ャッシュメモリへ転送するステップとを備える、方法。
  46. 【請求項46】 前記データの前記識別子は、前記発生
    されたアドレスの少なくとも一部分である、請求項45
    に記載の方法。
  47. 【請求項47】 前記データが有用な情報を失うことな
    しに上書きされ得るかどうかを判断する前記ステップ
    は、前記キャッシュメモリ内にストアされている「ダー
    ティ」なビットを検査するステップを含む、請求項45
    に記載の方法。
  48. 【請求項48】 プログラムを実行するプロセッサを有
    するコンピュータシステムを動作させる方法であって、 (a) 前記プログラムを実行するにあたり将来使用す
    るために必要とされる、より新しいデータのためのスペ
    ースを空けるためにキャッシュメモリから取除くことが
    所望されるデータに対応するアドレス範囲を識別するス
    テップと、 (b) 前記プロセッサにより、キャッシュメモリから
    メインメモリへ前記識別されたアドレス範囲に対応する
    前記データを書込む命令を発行するステップと、 (c) プロセッサ制御からは独立的に、前記プロセッ
    サが前記より新しいデータのための要求を発行するより
    も前にキャッシュメモリからメインメモリへ前記識別さ
    れたアドレス範囲に対応する前記データを転送するステ
    ップとを含む、方法。
  49. 【請求項49】 前記識別するステップは、前記アドレ
    ス範囲を特定するライトバック命令を実行するフログラ
    マブルマシンにより行なわれる、請求項48に記載の方
    法。
  50. 【請求項50】 プログラムを実行するプロセッサを有
    するコンピュータシステムを動作させる方法であって、 (a) 前記プロセッサにより、キャッシュメモリ内に
    おけるメモリスペースを将来を見越して開放するための
    ノンブロッキングライトバック命令を発行するステップ
    と、 (b) 前記プロセッサにより、メインメモリから前記
    キャッシュメモリに、前記プログラムを実行するにあた
    り将来使用するためにキャッシュメモリ内にストアされ
    ていることが所望されるデータのブロックを転送する複
    数ラインのノンブロッキングロード命令を発行するステ
    ップとを含む、方法。
  51. 【請求項51】 プロセッサおよびメインメモリとの関
    連でキャッシュメモリを動作させる方法であって、 (a) 前記プロセッサによりメモリアドレスを特定す
    るメモリロード命令を発行するステップと、 (b) 前記特定されたアドレスに対応するデータが前
    記キャッシュメモリにストアされているかどうかを判断
    するために前記キャッシュメモリに対しテストを行なう
    ステップとを含み、前記特定されたアドレスに対応する
    データが前記キャッシュメモリ内にストアされていれ
    ば、前記キャッシュメモリからの前記メモリロード命令
    をサービスするステップと、 (c) 前記特定されたアドレスに対応する前記データ
    が前記キャッシュ内にストアされていなければ、(i)
    前記メインメモリから前記メモリロード命令をサービ
    スし、(ii) 以前のノンブロッキングロード命令に
    応答して、前記特定されたアドレスに対応する識別子が
    その中に位置づけられているかどうかを判断するために
    転送キューをテストし、前記特定されたアドレスに対応
    する識別子が以前のノンブロッキングロード命令に応答
    してその中に位置づけられていれば、前記転送キューか
    ら前記識別子を削除するステップを含む、方法。
  52. 【請求項52】 複数個のアドレスソースの1つと一致
    するものを求めて複数個のキャッシュメモリアドレスタ
    グを探索する方法であって、 (a) 前記複数個のタグを複数個のキャッシュタグメ
    モリブロックにストアするステップを備え、各キャッシ
    ュタグメモリブロックは関連の有効ビットとともに前記
    アドレスタグのそれぞればらばらなセットおよびダーテ
    ィビットと関連づけられており、さらに (b) 前記ソースがさまざまな時点において独立的に
    前記キャッシュタグメモリブロックの1つに与えられる
    ように、前記複数個のアドレスソースをマルチプレクス
    するステップと、 (c) 前記アドレスソースを前記キャッシュタグメモ
    リブロックのそれぞれ異なる1つに選択的に結合するス
    テップと、 (d) 前記アドレスソースからのアドレスを前記キャ
    ッシュタグメモリブロック内の前記タグと比較して前記
    アドレスソースからの各アドレスが前記キャッシュメモ
    リタグブロックにおける前記タグの1つと一致するかど
    うかを検出するステップとを備える、方法。
  53. 【請求項53】 選択的に結合するステップは、(i)
    複数個の前記アドレスソースからのアドレスが前記メ
    モリブロックの同じ1つに対しアドレス指定されるかど
    うかを検出し、もしそうであった場合、(ii) 前記
    アドレスソースのうちどれがそのメモリブロックに関し
    て優先されるべきかどうかを判断するステップをさらに
    含む、請求項52に記載の方法。
  54. 【請求項54】 前記複数個のアドレスソースの1つは
    プロセッサアクセス動作に対応する要求されたアドレス
    を含み、前記複数個のアドレスソースの別の1つはスヌ
    ープ動作に対応する要求されたアドレスを含み、前記ア
    ドレスソースのどの1つが前記メモリブロックの特定の
    1つについて優先されるべきかを判断するステップは、 (i) 前記要求されたアドレスが前記メモリブロック
    内の同じ位置に対応するかどうかを判断するために前記
    要求されたアドレスの各々の少なくとも一部を比較し、
    もし対応していれば、前記スヌープ動作に対応する要求
    されたアドレスを含む前記アドレスソースを優先するス
    テップをさらに含む、請求項53に記載の方法。
  55. 【請求項55】 前記メモリブロックの特定の1つにつ
    いて前記アドレスソースのどの1つが優先されるべきか
    を判断するステップは、プロセッサアクセス動作に対応
    する要求されたアドレスを含む前記アドレスソースが、
    スヌープ動作に対応するアドレスを含む前記アドレスソ
    ースを優先するために少なくとも1回立ち往生させられ
    ているかどうかを調べるためにテストを行ない、もしそ
    うであれば前記プロセッサアクセス動作に対応する要求
    されたアドレスを含む前記アドレスソースを優先するス
    テップをさらに含む、請求項54に記載の方法。
  56. 【請求項56】 前記複数個のアドレスソースの1つは
    プロセッサアクセス動作に対応する要求されたアドレス
    を含み、前記複数個のアドレスソースの別の1つはスヌ
    ープ動作に対応する要求されたアドレスを含み、前記ア
    ドレスソースのどの1つが前記メモリブロックの特定の
    1つについて優先されるべきかを判断するステップは、 (i) 前記要求されたアドレスの各々における少なく
    とも一部分を比較して、前記要求されたアドレスが前記
    メモリブロック内の同じ位置に対応するかどうかを判断
    し、もし対応していなければ、前記プロセッサアクセス
    動作に対応する要求されたアドレスを含む前記アドレス
    ソースを優先するステップをさらに含む、請求項53に
    記載の方法。
  57. 【請求項57】 アドレス指定可能データをキャッシュ
    に入れるためのキャッシュシステムであって、 (a) データ記憶装置と、 (b) 前記データ記憶装置と関連しており複数個のタ
    グメモリブロックおよびタグ比較器に副分割されるタグ
    記憶装置とを備え、前記タグメモリブロックの各々はそ
    れぞればらばらなアドレスのセットと関連づけられてお
    り、かつ前記タグ比較器のそれぞれ1つに接続されて関
    連の有効およびダーティビットとともに前記タグメモリ
    ブロックの各々にストアされたタグと選択されたアドレ
    スを比較し、さらに (c) 前記タグ比較器の各々について、前記タグ比較
    器の各々が前記アドレスソースのどの1つからの選択さ
    れたアドレスでも独立的に受取ることができるように複
    数個のメモリアドレスソースに接続されたそれぞれのア
    ドレスマルチプレクサを備える、キャッシュシステム。
  58. 【請求項58】 前記データ記憶装置は複数個のデータ
    メモリブロックに副分割され、その各々はデータの入力
    および出力のためのそれぞれのデータバスを有する、請
    求項57に記載のキャッシュシステム。
  59. 【請求項59】 (i) 各データメモリブロックはデ
    ータアドレスのそれぞればらばらなセットと関連づけら
    れており、(ii) 各データブロックと関連のデータ
    アドレスのセットは各タグメモリブロックと関連のアド
    レスのセットとは異なっている、請求項58に記載のキ
    ャッシュシステム。
  60. 【請求項60】 エージング/ライトバッファを管理す
    る方法であって、前記バッファは少なくとも1つのアド
    レスエントリを備えたアドレスアレイと少なくとも1つ
    のデータアレイを備えたデータアレイとを含み、各アド
    レスエントリはデータエントリと関連づけられており、
    前記方法は、 (a) 前記バッファ内の少なくとも1つの前記データ
    エントリを識別して現在ストアされているもののための
    新しいデータに代わるものとして将来を見越して利用可
    能にするステップと、 (b) 前記識別されたデータエントリを前記新しいデ
    ータで上書きされる条件下に置くステップとを含む、方
    法。
  61. 【請求項61】 識別されるデータエントリの数は4つ
    である、請求項60に記載の方法。
  62. 【請求項62】 識別するステップは、(i) 前記デ
    ータエントリの一番最近に使用された1つを判断するス
    テップと、(ii) そのエントリを選択して前記デー
    タに代わるものとして利用可能にするステップとをさら
    に含む、請求項60に記載の方法。
  63. 【請求項63】 前記識別されたデータエントリを上書
    きされる条件下に置くステップは、(i) 前記識別さ
    れたデータエントリと関連のダーティビットが活性であ
    るときにライトバック動作を行なうステップと、(i
    i) 前記ダーティビットをクリアするステップとをさ
    らに含む、請求項60に記載の方法。
JP8111620A 1995-05-05 1996-05-02 キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法 Withdrawn JPH08314802A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US43604995A 1995-05-05 1995-05-05
US08/436049 1995-05-05

Publications (1)

Publication Number Publication Date
JPH08314802A true JPH08314802A (ja) 1996-11-29

Family

ID=23730892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8111620A Withdrawn JPH08314802A (ja) 1995-05-05 1996-05-02 キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法

Country Status (2)

Country Link
EP (1) EP0741356A1 (ja)
JP (1) JPH08314802A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11102435A (ja) * 1997-06-05 1999-04-13 Digital Equip Corp <Dec> ノンブロッキング・パイプライン・キャッシュ
CN100336038C (zh) * 2003-02-13 2007-09-05 三星电子株式会社 嵌入顺序缓冲器的计算机系统及其方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933855A (en) 1997-03-21 1999-08-03 Rubinstein; Richard Shared, reconfigurable memory architectures for digital signal processing
US6895452B1 (en) 1997-06-04 2005-05-17 Marger Johnson & Mccollom, P.C. Tightly coupled and scalable memory and execution unit architecture
EP1454253A4 (en) * 1997-12-19 2010-12-29 Bull Hn Information Syst SYSTEM FOR MANAGING LOST AND PRIVATE CACHING ACCESS IN A MULTIPROCESSOR COMPUTER SYSTEM EMPLOYING PRIVATE CACES FOR SHARED INDIVIDUAL AND SHARED CENTRAL CONTROL UNITS
US6202128B1 (en) 1998-03-11 2001-03-13 International Business Machines Corporation Method and system for pre-fetch cache interrogation using snoop port
AU7575398A (en) * 1998-05-15 1999-12-06 Richard Rubinstein Shared, reconfigurable cache memory execution subsystem
JP4268290B2 (ja) * 1999-10-29 2009-05-27 パナソニック株式会社 受信装置および受信方法
US6643766B1 (en) * 2000-05-04 2003-11-04 Hewlett-Packard Development Company, L.P. Speculative pre-fetching additional line on cache miss if no request pending in out-of-order processor
JP3882760B2 (ja) * 2003-02-18 2007-02-21 株式会社デンソー タスク間通信方法、プログラム、記録媒体、電子機器
KR20150090491A (ko) * 2014-01-29 2015-08-06 삼성전자주식회사 전자 장치 및 전자 장치에서 데이터를 액세스하는 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0452741A (ja) * 1990-06-14 1992-02-20 Toshiba Corp キャッシュメモリ装置
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
EP0855647A1 (en) * 1992-01-06 1998-07-29 Hitachi, Ltd. Computer for performing data fetch and data prefetch in parallel

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11102435A (ja) * 1997-06-05 1999-04-13 Digital Equip Corp <Dec> ノンブロッキング・パイプライン・キャッシュ
CN100336038C (zh) * 2003-02-13 2007-09-05 三星电子株式会社 嵌入顺序缓冲器的计算机系统及其方法

Also Published As

Publication number Publication date
EP0741356A1 (en) 1996-11-06

Similar Documents

Publication Publication Date Title
US12001345B2 (en) Victim cache that supports draining write-miss entries
US9311246B2 (en) Cache memory system
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
US5091851A (en) Fast multiple-word accesses from a multi-way set-associative cache memory
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
US5715427A (en) Semi-associative cache with MRU/LRU replacement
US6405290B1 (en) Multiprocessor system bus protocol for O state memory-consistent data
US20030061450A1 (en) List based method and apparatus for selective and rapid cache flushes
JPH08272682A (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
WO2000004452A1 (en) Method and apparatus for managing temporal and non-temporal data in a single cache structure
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US6715035B1 (en) Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency
US7657667B2 (en) Method to provide cache management commands for a DMA controller
US6959363B2 (en) Cache memory operation
JPH08314802A (ja) キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法
EP0942376A1 (en) Method and system for pre-fetch cache interrogation using snoop port
US5926841A (en) Segment descriptor cache for a processor
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
US6240487B1 (en) Integrated cache buffers
WO1997034229A9 (en) Segment descriptor cache for a processor
JPH0743671B2 (ja) キャッシュ・メモリ制御方式
GB2454810A (en) Cache memory which evicts data which has been accessed in preference to data which has not been accessed
US20060015689A1 (en) Implementation and management of moveable buffers in cache system
GB2454808A (en) Cache which prefetches data at a second address when an access matches a first address

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20030805