JPH10320280A - キャッシュに値を格納する方法及びコンピュータ・システム - Google Patents

キャッシュに値を格納する方法及びコンピュータ・システム

Info

Publication number
JPH10320280A
JPH10320280A JP10097936A JP9793698A JPH10320280A JP H10320280 A JPH10320280 A JP H10320280A JP 10097936 A JP10097936 A JP 10097936A JP 9793698 A JP9793698 A JP 9793698A JP H10320280 A JPH10320280 A JP H10320280A
Authority
JP
Japan
Prior art keywords
cache
directory
memory block
cache directory
writing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10097936A
Other languages
English (en)
Inventor
Kumar Arimiri Ravi
ラヴィ・カマー・アライミリ
John Steven Dodson
ジョン・スティーブン・ドッドソン
Don Lewis Jerry
ジェリー・ドン・リュイス
M Sckelgan Timothy
ティモシー・エム・スケルガン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10320280A publication Critical patent/JPH10320280A/ja
Pending 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 プロセッサによって用いられる改良されたキ
ャッシュを提供する。 【解決手段】 プロセッサによって用いられ、2つ以上
のキャッシュ・ディレクトリを有するキャッシュに値を
格納する方法。メモリ・ブロックに関連付けられたアド
レス・タグが、初期プロセッサ・サイクルで第1キャッ
シュ・ディレクトリに書込まれ、次のまたは後のプロセ
ッサ・サイクルで第2キャッシュ・ディレクトリに書込
まれる。異なるメモリ・ブロックに関連付けられた他の
アドレス・タグは、初期プロセッサ・サイクルで第2キ
ャッシュ・ディレクトリから読取ることができる。更
に、また別のメモリ・ブロックに関連付けられた他のア
ドレス・タグを後のプロセッサ・サイクルで第1キャッ
シュ・ディレクトリから読取ることができる。このスタ
ガ式書込み機能により、複数のディレクトリを有するキ
ャッシュで書込み動作を実行する自由度が大きくなり、
よって性能が向上する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはコンピ
ュータ・システムに関し、特にコンピュータ・システム
のプロセッサによって用いられるキャッシュの性能を改
良する方法に関する。
【0002】
【従来の技術】従来のコンピュータ・システム10の基
本構造を図1に示す。コンピュータ・システム10には
複数の処理装置を使用できるが、図に示しているのはそ
のうちの2つ、12a及び12bである。これらはさま
ざまな周辺装置に接続される。周辺装置は、入出力(I
/O)装置14(ディスプレイ・モニタ、キーボード、
及び永続記憶装置等)、プログラム命令を実行するため
に処理装置によって用いられるメモリ装置16(RA
M、つまりランダム・アクセス・メモリ等)、基本的に
はコンピュータが最初に起動されたときに周辺装置の1
つ(通常は永続メモリ装置)からオペレーティング・シ
ステムを探し出してロードするためのファームウェア1
8を含む。処理装置12a及び12bは、汎用相互接続
部またはバス20を含むさまざまな手段により周辺装置
と通信する。コンピュータ・システム10には、図示し
ていないが、例えばモデムまたはプリンタ等と接続する
ためのシリアル・ポート及びパラレル・ポート等の多く
のコンポーネントを追加できる。当業者には明らかなよ
うに、図1のブロック図に示したものと共に使用するよ
うなコンポーネントは他にもある。例えばビデオ・ディ
スプレイ・モニタを制御するために使用されるディスプ
レイ・アダプタ、メモリ16にアクセスするため使用で
きるメモリ・コントローラ等がある。またI/O装置1
4をバスに直接接続する代わりに、I/Oブリッジを介
してバス20に接続された2次(I/O)バスに接続し
てもよい。コンピュータの処理装置は2つ以上使用して
もよい。
【0003】対称型マルチプロセッサ(SMP)・コン
ピュータでは、処理装置はすべてほぼ同一である。つま
り、すべて、操作するための命令及びプロトコルの共通
セットまたはサブセットを使用し、一般的には同じアー
キテクチャを有する。代表的なアーキテクチャを図1に
示している。処理装置は、コンピュータを操作するため
にプログラム命令を実行する複数のレジスタ及び実行装
置を有するプロセッサ・コア22を含む。代表的な処理
装置はInternational Business Machines Corporation
のPowerPC(TM)プロセッサを含む。また処理装
置には、命令キャッシュ24及びデータ・キャッシュ2
6等の1つ以上のキャッシュを置くことができる。これ
らは高速メモリ装置を使用して実現される。キャッシュ
は、メモリ装置16から値をロードするという長いステ
ップを避けることによって処理を高速化するために、プ
ロセッサによって繰り返しアクセスされる値を一時的に
保存するため、広く用いられる。これらのキャッシュ
は、プロセッサ・コア22と一体化した1つの集積チッ
プ28上にパッケージ化されるときは、"オンボード"・
キャッシュと呼ばれる。キャッシュはそれぞれ、プロセ
ッサ・コアとキャッシュ・メモリとの間のデータ及び命
令の転送を管理するキャッシュ・コントローラ(図示な
し)に関連付けられる。
【0004】処理装置には、キャッシュ30等のキャッ
シュを追加することができる。キャッシュ30はレベル
2(L2)キャッシュと呼ばれるが、これはオンボード
(レベル1)・キャッシュ24及び26をサポートする
からである。言い換えると、キャッシュ30はメモリ装
置16とオンボードキャッシュの仲介役になり、オンボ
ード・キャッシュよりもかなり多くの情報(命令及びデ
ータ)を格納できるが、それだけアクセス時間がかか
る。例えばキャッシュ30は、記憶容量が256または
512キロバイトのチップでよく、プロセッサは、総記
憶域64キロバイトのオンボード・キャッシュを有する
IBM PowerPC(TM)604シリーズ・プロセ
ッサでもよい。キャッシュ30はバス20に接続され、
メモリ装置16からプロセッサ・コア22への情報のロ
ードは、通常はキャッシュ30を経由する。図1は2レ
ベルのキャッシュ階層のみ示しているが、多くのレベル
の相互接続キャッシュを有するマルチレベルのキャッシ
ュ階層も可能である。
【0005】キャッシュには多くの"ブロック"があり、
ブロックは個別にさまざまな命令及びデータ値を格納す
る。ブロックはどのキャッシュでも"セット"または"コ
ングルエンス・クラス"と呼ばれるブロックのグループ
に分けられる。セットは所与のメモリ・ブロックが存在
できるキャッシュ・ブロックの集合である。キャッシュ
には、与えられた任意のメモリ・ブロックをプリセット
されたマッピング・ファンクションに従ってマップし得
る固有セットがある。1つのセットに含まれるブロック
数はキャッシュの連想度を示す。例えば「2ウェイ・セ
ット連想型」とは、任意のメモリ・ブロックについて、
キャッシュ内に、メモリ・ブロックのマップ先になり得
るブロックが2つあるということを意味する。しかしな
がら、メイン・メモリ内のいくつか異なるブロックを、
与えられた任意のセットにマップすることができる。1
ウェイ・セット連想型キャッシュは、直接マップされ
る。つまり、特定のメモリ・ブロックを有することがで
きるキャッシュ・ブロックは1つしかない。キャッシュ
は、メモリ・ブロックが任意のキャッシュ・ブロックを
占有できる場合、完全連想型と言われる。つまりコング
ルエンス・クラスが1つあり、アドレス・タグはそのメ
モリ・ブロックの完全アドレスである。
【0006】代表的なキャッシュ・ライン(ブロック)
は、アドレス・タグ・フィールド、状態ビット・フィー
ルド、包含ビット・フィールド(inclusivity bit fiel
d)、及び実際の命令またはデータを格納する値フィー
ルドを含む。状態ビット・フィールド及び包含ビット・
フィールドは、マルチプロセッサ・コンピュータ・シテ
ムでキャッシュ・コヒーレンシを維持するため用いられ
る(キャッシュに格納された値の有効性を示す)。アド
レス・タグは対応するメモリ・ブロックの完全アドレス
のサブセットである。受信アドレスとアドレス・タグ・
フィールド内のタグの1つとの比較一致はキャッシュ
・"ヒット"を示す。キャッシュ内のアドレス・タグすべ
ての集合(また時には状態ビット・フィールド及び包含
ビット・フィールド)はディレクトリと呼ばれ、すべて
の値フィールドの集合はキャッシュ・エントリ・アレイ
と呼ばれる。
【0007】あるキャッシュで1つのコングルエンス・
クラスのすべてのブロックが一杯で、そのキャッシュ
が"読取り"にしろ"書込み"にしろ、一杯になっているコ
ングルエンス・クラスにマップされるメモリ位置に対す
る何らかのリクエストを受信したとき、キャッシュはそ
のクラスに現在あるブロックの1つを"追い出す"必要が
ある。キャッシュは、追い出すブロックを、当業者には
知られている手段(LRU、ランダム、疑似LRU等)
の1つで選択する。選択されたブロックのデータが変更
されている場合、そのデータはメモリ階層で次に下位の
レベルに書込まれる。このレベルは別のキャッシュかも
しれないし(L1またはオンボード・キャッシュの場
合)、メイン・メモリかもしれない(図1の2レベル・
アーキテクチャに示すようなL2キャッシュの場合)。
包含の原理から、階層の下位レベルには、書込まれた変
更済みデータを保持するために利用できるブロックが常
にある。しかしながら、選択されたブロックのデータが
変更されていない場合は、ブロックはただ棄却されるだ
けであり、階層の次に下位のレベルに書込まれることは
ない。ブロックを階層の1レベルから除去するこのプロ
セスは"追い出し"として知られる。このプロセスの終わ
りに、キャッシュは、追い出されたブロックのコピーを
保持しなくなる。
【0008】図2に上述のキャッシュ構造及び追い出し
プロセスを示す。キャッシュ40(L1またはそれより
下位レベル)はキャッシュ・ディレクトリ42、キャッ
シュ・エントリ・アレイ44、LRUアレイ46、及び
特定のコングルエンス・クラスから追い出すブロックを
選択するための制御ロジック48を含む。ここに示した
キャッシュ40は8ウェイ・セット連想型であり、よっ
てディレクトリ42、キャッシュ・エントリ・アレイ4
4、及びLRUアレイ46はそれぞれ、参照符号50に
示すように、特定のコングルエンス・クラスについて特
別な8ブロックのセットを有する。言い換えると、コン
グルエンス・クラス50に"X"と示したように、キャッ
シュ・ディレクトリ42のコングルエンス・クラスの特
定のメンバが、キャッシュ・エントリ・アレイ44のコ
ングルエンス・クラスの特定のメンバと、またLRUア
レイ46のコングルエンス・クラスの特定のメンバとそ
れぞれ関連付けられる。
【0009】ディレクトリ42のブロックはそれぞれ、
エラー訂正コード(ECC)回路52を介して制御ロジ
ックに接続される。所与のキャッシュ・ブロックのビッ
トは、ソフト・エラー(浮遊放射または静電気放電等)
によるか、またはハード・エラー(欠陥セル)により、
誤った値を含む可能性がある。ECCは、正しいデータ
・ストリームを再構成するために使用できる。一部のE
CCはシングル・ビット・エラーの検出及び訂正にのみ
使用できる。つまり特定のブロックでビットが2つ以上
無効な場合は、ECCでは、実際に正しいデータ・スト
リームを確認することはできないが、少なくとも失敗は
検出できる。他のECCは、より洗練されており、ダブ
ル・エラーの検出または訂正さえ可能である。これら後
者のエラーは、訂正するためのコストが大きいが、ダブ
ル・ビット・エラーが生じたときにマシンを止めること
が設計面のトレードオフになる。ECC回路はディレク
トリ42のものしか示していないが、これらの回路は、
キャッシュ・エントリ・アレイ44等の他のアレイにも
同様に使用できる。
【0010】(訂正された)メモリ・ブロック・アドレ
スに対応する値を有するECC回路52の出力は、比較
器54に接続される。比較器54はそれぞれ、要求され
たメモリ・ブロックのアドレスも受け取る。要求された
メモリ・ブロックの有効なコピーがコングルエンス・ク
ラス50にある場合は、比較器54の1つだけがアクテ
ィブ信号を出力する。比較器54の出力はマルチプレク
サ56に接続され、ORゲート58にも接続される。O
Rゲート58の出力はマルチプレクサ56を制御する。
キャッシュ・ヒットが生じた場合(要求されたアドレス
がキャッシュ・ディレクトリ42中のアドレスに一
致)、ORゲート58はマルチプレクサ56を活動化
し、コングルエンス・クラスのどのメンバがアドレスに
一致するかを示す信号を通過させる。この信号はもう1
つのマルチプレクサ60を制御する。マルチプレクサ6
0は、キャッシュ・エントリ・アレイ44のエントリそ
れぞれから入力を受け取る。このようにして、ディレク
トリでキャッシュ・ヒットが生じたとき、対応する値が
マルチプレクサ60を通してバス62に受け渡される。
【0011】キャッシュ・ミスが生じ、特定のコングル
エンス・クラス50のすべてのブロックにすでに有効な
メモリ・ブロックのコピーがある場合は、コングルエン
ス・クラス50のキャッシュ・ブロックの1つを犠牲と
して選択しなければならない。この選択は、LRUアレ
イ46のコングルエンス・クラスのLRUビットを使用
して行われる。クラスの各キャッシュ・ブロックについ
て、複数のLRUビットがある。例えば8ウェイ・セッ
ト連想型キャッシュでブロック当たり3つのLRUビッ
トである。クラスの各ブロックからのLRUビットは、
8ビット出力を有するデコーダ64への入力として与え
られ、どのブロックが犠牲になるか指示される。この出
力はマルチプレクサ56に接続される。このようにし
て、ORゲート58がアクティブでない場合は、マルチ
プレクサ56が、デコーダ64の出力をもとに、用いら
れるキャッシュ・ブロックの指示を受け渡す。
【0012】上述したECC回路は、メモリ・セルで発
生するソフト・エラーに対処する1つの方法である。ハ
ード・エラーを扱うもう1つのアプローチは、アレイ
(ディレクトリ、LRU、キャッシュ)内に冗長性を持
たせることである。キャッシュ・チップは、製造時に、
各アレイに欠陥のある行または列のラインがあるかを確
認するためテストされる(キャッシュ・ディレクトリ、
及びLRU全体で行列のラインがテストされる)。アレ
イに欠陥がある場合は、ヒューズが永続的に切れたまま
になり、その欠陥性が指示される。次にアクセスされた
アドレスそれぞれについてアレイの内側で比較が行わ
れ、欠陥アドレスに一致するかどうか判断される。一致
する場合、対応するロジックが、アドレスをチップ上に
形成された多くの予備の行列ラインの1つに再ルーティ
ングする。予備のビット・ライン及びワード・ラインの
数は、欠陥率及び所望のチップ歩留りによって変わり得
る。欠陥率の低い(物理的に大きい)キャッシュの場
合、正規のライン256本につき予備のライン2本が用
いられ、欠陥率の高い(物理的に小さい)キャッシュで
は、正規のライン8本につき予備のライン2本が用いら
れる。
【0013】上述のキャッシュの構成にはいくつか欠点
及び制限がある。ECC回路52に関しては、これらの
回路はかなり複雑であり、チップ上のスペースを占める
だけでなく、処理を遅くする。なぜなら、それらが、キ
ャッシュされた値を(ディレクトリまたはキャッシュの
いずれかから)取得するクリティカル(タイミング)・
パスにあるからである。ECC回路では、ダブル・ビッ
ト・エラーの訂正には対応するが、不良ビットが3つ以
上の複数のビット・エラーには対応しない。複雑さを増
し、処理を遅くするこれら従来技術のキャッシュ構造の
もう1つの側面は、キャッシュを、CPUスヌープでは
CPUと、システム・バス・スヌープではシステム・バ
スと、選択的に相互接続するために必要なアービトレー
ション・ロジック66である。このロジックもクリティ
カル・パスにある。1つのキャッシュを2つのスヌープ
・デバイスによってこのように使用すると、CPU及び
システム・バス両方がキャッシュで同時に読取りを行お
うとしたときのように、また別の一定の遅延が不可避的
に生じる。2つの読取り動作は同時には実行できず、ア
ービトレーション・ロジックによって直列化しなければ
ならない。これと同じことは書込み動作にも当てはま
る。
【0014】キャッシュ構造のもう1つの欠点は、ビッ
ト・ラインの冗長性及びワード・ラインの冗長性の利用
に関係する。この手法によってチップ歩留りは向上する
が、冗長性はアレイをアクセスするクリティカル・パス
に直接加わる。欠陥のある行列のラインに対して探索を
行い、欠陥ラインに一致するリクエストをリダイレクト
するために余分な時間が必要である。従って、歩留りを
上げるか、キャッシュ応答を遅くするかがトレードオフ
になる。また、冗長ラインが更に物理的に大きくなるこ
とも欠点である。正規のライン8本につき予備のライン
が2本の例では、別に必要になるキャッシュ・サイズ
(オーバヘッド)は25%になり、このスペースの大半
は使われることすらない。冗長ラインはまたスケーリン
グがうまく行えない。例えば、キャッシュ・ラインのサ
イズが2倍になった場合(例えば64バイトから128
バイト)、冗長ラインに必要なシリコン(チップ・スペ
ース)も同様に2倍になる。最後に、ヒューズの切断に
よる冗長ラインの使用は静的であり、かなり無駄が大き
い。冗長ラインの可用性は、テスト中のキャッシュの状
態にもとづく。高密度の大きなキャッシュ・チップが変
動する接合温度及び内部電圧の状況下で動作している
と、キャッシュ内に欠陥が生じるが、こうした追加され
た欠陥ラインはリダイレクトされない。歩留りを上げる
ために多数の予備ラインを使用しなければならないだけ
でなく、これらのラインの多くは使われることさえな
い。
【0015】上述の点を考慮すると、キャッシュ・アク
セスの高速化及び例外エラー訂正機能の提供を含めて、
欠陥があるキャッシュ・ラインの扱いを改良したキャッ
シュ構造を提供することが望ましい。また、ロジック回
路を複雑にすることなく、キャッシュ・ラインの拡張に
応じて適切にスケーリングされ、使用できるすべてのキ
ャッシュ・ラインを効率よく動的に使用するためのキャ
ッシュ構造があれば、更に都合がよい。
【0016】
【発明が解決しようとする課題】本発明の目的は、コン
ピュータ・システムのプロセッサによって用いられる改
良されたキャッシュを提供することである。
【0017】本発明の他の目的は、クリティカル・パス
に余分なロジック回路を使用することなく、使用できる
すべてのキャッシュ・ラインを効率よく使用するキャッ
シュを提供することである。
【0018】本発明の他の目的は、欠陥の回避及びエラ
ー訂正を含めて、欠陥の扱いを改良したキャッシュを提
供することである。
【0019】本発明の他の目的は、読取りアクセスをよ
り高速化したキャッシュを提供することである。
【0020】
【課題を解決するための手段】上述の目的は、コンピュ
ータ・システムのプロセッサによって用いられるキャッ
シュに値を格納する方法により達成される。この方法は
一般には、メモリ装置のメモリ・ブロックの値をキャッ
シュにロードするステップ、初期プロセッサ・サイクル
の間に、メモリ・ブロックに関連付けられたアドレス・
タグを第1キャッシュ・ディレクトリに書込むステッ
プ、及び、後のプロセッサ・サイクルの間に、メモリ・
ブロックに関連付けられたアドレス・タグを第2キャッ
シュ・ディレクトリに書込むステップを含む。初期プロ
セッサ・サイクルの間に、別のメモリ・ブロックに関連
付けられたもう1つのアドレス・タグを、第2キャッシ
ュ・ディレクトリから読取ることもできる。これに加え
て、後のプロセッサ・サイクルの間に、また別のメモリ
・ブロックに関連付けられた他のアドレス・タグを第1
キャッシュ・ディレクトリから読取ることも可能であ
る。アドレス・タグの書込み動作は、アドレス・タグを
第1キャッシュ・ディレクトリに書込む前に、第1キャ
ッシュ・ディレクトリの書込みキューにセットでき、同
じ書込み動作を、アドレス・タグを第2キャッシュ・デ
ィレクトリに書込むステップの前に、第2キャッシュ・
ディレクトリの書込みキューにセットできる。第2キャ
ッシュ・ディレクトリの書込みキューは、第1キャッシ
ュ・ディレクトリの書込みキューから独立して、その内
容を実行する。このスタガ式書込み機能は、複数のディ
レクトリを有するキャッシュに関して、書込み動作を行
う上での自由度を大きくし、これにより性能が向上す
る。
【0021】上述の、並びに本発明の更なる目的、機
構、及び利点が、以下の詳細な説明で明らかになろう。
【0022】
【発明の実施の形態】各図、特に図3を参照する。本発
明に従って構成されたセット連想型キャッシュ70の1
つの実施例の概略が示してある。キャッシュ70は、一
般にはキャッシュ・ディレクトリ72、LRUアレイ7
4、リペア・マスク76、及び制御ロジック78を含
む。キャッシュ・ディレクトリ72では、複数のアドレ
ス・タグがセットに関連付けられ(図の実施例では8ウ
ェイ・セット連想型)、よってディレクトリ72、LR
Uアレイ74、及びリペア・マスク76はそれぞれ、参
照符号80に示すように、特定のコングルエンス・クラ
スについて特別な8ブロックのセットを有する。キャッ
シュ・エントリ・アレイ(図示なし)は、ディレクトリ
72のアドレス・タグに関連付けられた値を含む。
【0023】ディレクトリ72の所与のコングルエンス
・クラスの各ブロックは、出力が対応する比較器82に
接続される。比較器82は、それぞれ要求されたメモリ
・ブロックのアドレスを受け取る。要求されたメモリ・
ブロックの有効なコピーがコングルエンス・クラス80
にある場合、比較器82のうち1つだけがアクティブ信
号を出力し、有効なコピーをセットのどのメンバが保持
しているかを示す。ディレクトリ72からの出力はそれ
ぞれまた、対応する比較器82との接続と並列に、対応
するパリティ・チェッカ84に接続される。パリティ・
チェッカ84は、エラーのあるビットの訂正は行わず、
ディレクトリ72からアドレス・タグ(またはステータ
ス・ビット)を読取る際にエラーが生じたことを示すた
めだけに用いられる。このエラー情報は後述するように
用いられる。ここで重要なことは、パリティ・チェッカ
は比較器と並列に接続されるので、クリティカル・パス
の外部にある。つまり、パリティ・チェッカはキャッシ
ュ性能に影響を与えない。言い換えると、速度の低下は
ない。パリティ・チェックは、残りのロジックがリクエ
ストを処理するのと同時に実行できるからである(もち
ろんエラーの発生が検出された場合はパリティ・チェッ
カによって速度が低下するが、これは例外である)。ま
た、従来のパリティ・チェック方法を採用できるパリテ
ィ・チェッカは、従来技術で用いられるようなエラー訂
正コード(ECC)回路ほど複雑ではなく(図2と比
較)、よってキャッシュ・チップ(シリコン・ウエハ)
に占めるスペースが少ない。図3の例では、オフライン
のパリティ・チェッカがキャッシュ・ディレクトリで使
用されているが、この他に、従来のECCロジックに代
わって、キャッシュ・エントリ・アレイでも使用するこ
とができる。
【0024】比較器82の出力は、ANDゲート86の
アレイに接続される。ANDゲート86は、それぞれ1
つの比較器出力、及びリペア・マスク76からの1つの
出力を受け取る。リペア・マスク76は、特定のブロッ
クに欠陥がある(ディレクトリ72、キャッシュ・エン
トリ・アレイ、LRUアレイ74の部分を含めて、キャ
ッシュ・ラインの任意の部分)かどうかを示すため用い
られる。この実施例で、リペア・マスク76の出力の状
態は、対応するキャッシュ・ラインが有効な場合はアク
ティブ(オンまたはハイ)、キャッシュ・ラインに欠陥
がある場合は、リペア・マスク76からの対応する出力
は非アクティブ(オフまたはロー)である。このように
して、ANDゲート86の出力は、(1)対応する比較
器82がキャッシュ・ヒットを示し、且つ(2)ライン
が有効なことをリペア・マスク76の対応するエントリ
が示す場合にのみアクティブになる。言い換えると、キ
ャッシュ・ビットが生じても、ラインに欠陥があること
をリペア・マスク76の対応するエントリが示している
と、リペア・マスク76のそのエントリの出力は非アク
ティブになり、対応するANDゲート86の出力も非ア
クティブになる(比較不一致を強制)。従って、欠陥の
あるキャッシュ・ラインは決してキャッシュ・ヒットに
ならない。
【0025】ANDゲート86の出力はマルチプレクサ
88に送られ、またORゲート90にも送られる。OR
ゲート90の出力は、マルチプレクサ88を制御する。
欠陥のないキャッシュ・ラインでキャッシュ・ヒットが
生じた場合は、ORゲート90がマルチプレクサ88を
活動化し、信号をキャッシュ・エントリ・アレイに渡し
て、コングルエンス・クラスのどのメンバがアドレスに
一致するかを示す。キャッシュ・ミスが生じた場合は、
もし特定のコングルエンス・クラス80のすべてのブロ
ックがすでにメモリ・ブロックの有効なコピーを含んで
いれば、犠牲としてキャッシュ・ブロックの1つを選択
しなければならない。この選択は、従来のLRUアルゴ
リズムを含むことができるLRUアレイ74によって、
仮に行われる。どのブロックが犠牲として仮に選択され
たかを示すLRUの出力は、代替犠牲選択ロジック回路
92に接続される。ロジック回路92は、リペア・マス
ク76からも入力を受け取る。仮に選択された犠牲に欠
陥がない場合は、代替犠牲選択ロジック回路92は、た
だLRU出力をマルチプレクサ88に受け渡すだけであ
る。マルチプレクサ88は次に犠牲情報をキャッシュ・
エントリ・アレイに渡す。仮に選択された犠牲に欠陥が
ある場合は、代替犠牲選択ロジック回路92は新たな仮
の犠牲を選択する。新たな仮の犠牲に欠陥がない場合
は、対応する情報がマルチプレクサ88に転送される。
新たな仮の犠牲にも欠陥がある場合は、代替犠牲選択ロ
ジック回路92は、欠陥のない犠牲が選択されるまでプ
ロセスを繰り返す。従って、欠陥のあるキャッシュ・ラ
インが犠牲として選択されることは決してない。所与の
コングルエンス・クラスのマスク・ビットがすべてセッ
トされ、クラスのすべてのメンバに欠陥があることが示
された場合は、システムは、ダブル・ビットECCエラ
ーで生じるように、停止または他の動作で応答する。
【0026】リペア・マスク76は、欠陥のあるキャッ
シュ・ラインがキャッシュ・ヒットを示すことのないよ
うにし、また欠陥のあるキャッシュ・ラインが犠牲とし
て選択されることのないようにするための便利な手段で
あることがわかる。従って、リペア・マスク76は、従
来技術のキャッシュ・コンポーネントに与えられるビッ
ト・ラインの冗長性及びワード・ラインの冗長性に代わ
って使用できる。リペア・マスクを追加するには、キャ
ッシュ・チップ上に余分なスペースが必要であるが、こ
のスペースは、ディレクトリ・アレイ、LRUアレイ、
及びキャッシュ・アレイ内の冗長なビット・ライン及び
ワード・ラインをなくすことで節約されるスペースに比
べれば、ほぼ無視できる。この利点は、キャッシュ・ラ
インが大きくなるにつれて大きくなる。つまりリペア・
マスクのアレイ・サイズは、キャッシュ・ラインのサイ
ズに比例して大きくなることはない。また、リペア・マ
スク76を使用することによって、従来のように一部の
(冗長な)キャッシュ・ラインが決して用いられないと
いうことは、使用できるキャッシュ・ラインがすべて用
いられ、キャッシュ全体をより効率的に使用できる。リ
ペア・マスク76は更に、再ルーティングのオーバヘッ
ドなく、またディレクトリ・アレイ、LRUアレイ、ま
たはキャッシュ・アレイの"ヒューズ切断"を必要とせず
に、これらの利点を提供する。これによりキャッシュ動
作が大幅に高速化され、生産コストは大幅に減少する。
【0027】機能的マスキングによりキャッシュの欠陥
を回避するこの新規の方法によれば、性能劣化、及び標
準的なキャッシュ欠陥修復方法によるシリコン領域の増
加がなくなる。機能的側面では、特定のコングルエンス
・クラスのセット連想度を、(所期の8ウェイではな
く)6ウェイまたは7ウェイにできる。ただし、キャッ
シュの振る舞いの統計的性質により、特定のコングルエ
ンス・クラスでの連想度のこの減少は、通常はユーザ・
レベルでは気付かれない。
【0028】リペア・マスクを使用すると、エラーが検
出されたときにリペア・マスクをリアルタイムに更新す
ることによって、(エラーが生じているキャッシュの位
置の)キャッシュ欠陥を動的に回避できる。キャッシュ
・ラインは、最初、製造時にテストでき、そこで検出さ
れた欠陥は、対応するフィールドの値をリペア・マスク
に永続的にセットすることによって対応できる。その
後、コンピュータがブートされる(電源が入る)毎に、
ブート・プロセスの一環として、ファームウェア・テス
トをもとにマスクを自動的に更新できる。最後にリペア
・マスクは、ディレクトリのパリティ・エラー、キャッ
シュ・エントリ・アレイのECCエラー、またはLRU
エラーが検出された際に更新することができる。ハード
ウェア・アルゴリズムにより、リペア・マスク・アレイ
に値をセットすることも可能である。例えば、各キャッ
シュ・ラインにつき、リペア・マスクに2ビット・フィ
ールドを1つ置ける。2ビット・フィールドは最初に0
にセットされ、対応するキャッシュ・ラインでエラーが
検出される毎に増分することができる。これにより、2
ビット・フィールドがカウンタとして機能し、所与のキ
ャッシュ・ラインで連続して3つのパリティ・エラーが
記録されたときだけ、キャッシュ・ラインが欠陥ありと
セットされる。
【0029】欠陥のあるキャッシュ位置を検出した後、
プロセッサ動作を信頼性を保って継続するため、キャッ
シュのラインに関連付けられたリペア・マスク・エント
リがセットされてそのラインに欠陥のあることが示され
たとき、その位置のキャッシュの内容がフラッシュされ
る。リペア・マスク・エントリがセットされると、その
キャッシュ・ラインへの後のアクセスは、リペア・マス
クにより、そのラインでミスが生じるように強制され、
ラインは決して再利用(犠牲化)されない。この解決方
法は、冗長ラインなどの従来技術の機構に比べて実際上
オーバヘッドがない。これはまた、プロセッサが厳しい
環境で動作するが、実行時に欠陥が生じた場合でも動作
を続行しなければならない用途に、特に有益である。
【0030】図3はディレクトリ72を1つしか示して
いないが、本発明に従って構成されるキャッシュには、
図4に示すようにディレクトリ96を追加できる。ディ
レクトリ72及び96は冗長であるが、ディレクトリ7
2はCPUスヌープに、ディレクトリ96はシステム・
バス・スヌープに用いられる。言い換えると、スヌープ
を行うデバイス/相互接続部1つにつきディレクトリが
1つ用意される。この構成にはいくつか利点がある。第
1に、両方のディレクトリが、図3で述べたパリティ・
チェッカと共に構成された場合、各ディレクトリを他方
のバックアップとして使用できる。言い換えると、例え
ばディレクトリ72のアドレス・タグでパリティ・エラ
ーが生じたとき、そのアドレス・タグは代わりにディレ
クトリ96から読取ることができる。
【0031】パリティ・エラーが生じた場合、図3に示
したようなパリティ・エラー制御(PEC)装置98に
より、エラーを処理できる。PEC装置98は、パリテ
ィ・チェッカ84それぞれに、及び接続ライン100を
介して他のディレクトリ96のパリティ・チェッカ(図
示せず)に接続される。PEC装置98は、パリティ・
チェッカからパリティ・エラーを最初に検出したとき、
キャッシュを強制的にビジー・モードにする。ビジー・
モードでは、エラーが処理されるまで、リクエストは再
試行されるか確認されないかのいずれかである。PEC
装置98は、次に他方の(エラーが生じていない)ディ
レクトリの指定ブロックからアドレス・タグ(及びステ
ータス・ビット)を読取り、このアドレス・タグを問題
のディレクトリ、具体的には対応する比較器82に直接
供給する。問題のアレイを更新した後、キャッシュはP
EC装置98によって、通常の動作を再開することがで
きる。
【0032】本発明のPEC及びパリティ・チェッカで
特に好都合な1つの側面は、複数ビット・エラーの検出
及び訂正に使用できることである。特定の値(アドレス
・タグ)がいくつかの部分に、例えば24ビットのアド
レス・タグが8ビット(1バイト)ずつ3つの部分に分
割され、次に、各部分に1つのパリティ・ビットが与え
られる。この例では、アドレス・タグ当たり3つのパリ
ティ・ビットが与えられる。各部分の1ビットにエラー
がある場合は、それらのエラーは検出可能である。なぜ
なら、各部分はパリティ・エラーを示し、PEC装置9
8に警告を出すためにはただ1つの部分のパリティ・エ
ラーで充分だからである。その後、他方のディレクトリ
からのビット・フィールド(アドレス・タグ)で置き換
えることによって、3つのエラーのすべてが訂正され
る。従って本発明では複数ビット・エラーを訂正でき
る。
【0033】図4で、"CPUスヌープ"と示されたライ
ンは、一般には、キャッシュのCPU側の相互接続部か
らの動作を指し、CPUへの直接相互接続、または他の
スヌープ・デバイス、つまり上位レベル・キャッシュ
(L1等)への直接相互接続を含むことができる。"シ
ステム・バス・スヌープ"は一般には、キャッシュのシ
ステム・バス側の相互接続部からの動作を指し、システ
ム・バスへの直接相互接続、または他のスヌープ・デバ
イス、つまり下位レベル・キャッシュ(L2等)への直
接相互接続を含むことができる。従って、本発明はキャ
ッシュ階層の特定のレベルやその全体の深さに限定され
ない。
【0034】図4には、冗長キャッシュ・ディレクトリ
しか示していないが、冗長キャッシュ・エントリ・アレ
イ(2つ)も同様に使用でき、メインラインのECC回
路に代わってパリティ・チェッカが用いられる。ここで
1つのキャッシュ・エントリ・アレイにエラーが生じる
と、他のキャッシュ・エントリ・アレイの対応するキャ
ッシュ・ラインから値が読取られる。このアプローチで
は、キャッシュの大きさを事実上2倍にする必要がある
が、キャッシュの動作は高速化され、技術発展により、
キャッシュをより小型化できるようになると、キャッシ
ュ全体の大きさは、その速度ほど重要ではなくなるかも
しれない。また、このようなキャッシュ・サイズの増加
は、部分的には、先に述べたリペア・マスクを使用する
ことでサイズが減少することによって、相殺される。
【0035】キャッシュにディレクトリを2つ使用する
他の利点は、サイクル当たり読取り動作を2回実行でき
る、つまりCPUスヌープから読取り動作1回、システ
ム・バス・スヌープから読取り動作1回を並列に実行で
きることである。この特徴により、CPU及びシステム
・バスからの全体的読取りアクセス時間が大きく改良さ
れる。従来技術のキャッシュ設計では、どのサイクルで
も読取り動作は1回しか実行できないからである。本発
明では、両方の読取りを1回のクロック・サイクルで実
行できる。冗長ディレクトリを用いる際に予想される唯
一の欠点は、キャッシュ・ディレクトリ・サイズを2倍
にする必要があることである。しかしこのサイズの増加
は、1サイクルでスヌープ動作を2回実行する機能によ
り性能が改良されれば、許容範囲内であろう。更に、キ
ャッシュ速度は、クリティカル・パスのECC回路を除
外することにより、更に高速化することができる。これ
により読取り動作も更に高速になる。
【0036】複数のスヌープ・デバイスからの動作に独
立に応答するため、複数のキャッシュ・ディレクトリを
用意する他の利点は、CPU及びシステム・バスのスヌ
ープのいずれかを選択するためのアービトレーション・
ロジックがなくなることである。アービトレーション・
ロジックは従来からクリティカル・パスにあるので、こ
れによりアクセス時間が改良されると共に、一般にはキ
ャッシュの複雑さが減少する。更に、2つのディレクト
リを用意する他の利点は、物理層に関係する。1つのデ
ィレクトリを使用するときは、キャッシュ・チップ上の
ディレクトリから物理的に離れている一部のキャッシュ
・ラインについてはアクセス時間が長くなる。例えば単
一のディレクトリは、このように長くなるアクセス時間
を最小にするため、しばしばチップの中央付近に置かれ
る。ディレクトリを2つ用意することによって、それら
をキャッシュ・チップ上で物理的に離しておくことがで
き(つまり中央ではなく側面付近に)、チップ上の導電
路が短くなることで応答時間が短縮される。
【0037】デュアル読取り機能はまた、1つのキャッ
シュ・エントリ・アレイまたは2つの(冗長な)キャッ
シュ・エントリ・アレイでも実現できる。後者の場合、
2つのディレクトリ72及び96に接続された2つの異
なる制御回路によって個別に制御される2つの異なるマ
ルチプレクサが、2つのキャッシュ・エントリ・アレイ
からデータを読取るために用いられる。前者の場合も、
2つの異なるマルチプレクサを使用できるが、それらは
同じキャッシュ・エントリ・アレイに接続される。つま
りキャッシュ・ブロックはそれぞれ出力ラインが2本
で、1つはCPUスヌープ用の第1マルチプレクサに、
もう1つはシステム・バス・スヌープ用の第2マルチプ
レクサに接続される。
【0038】メモリ・ブロックが図4のキャッシュに書
込まれるとき、アドレス・タグ(並びに、状態フィール
ド及び包含フィールドなどの他のビット)はディレクト
リ72及び96両方に書込む必要がある。書込みは、デ
ィレクトリ72及び96に接続された1つ以上の書込み
キュー94を使用して実行できる。CPUポートもシス
テム・バス・ポートも読取りを実行中でなければ、2つ
のディレクトリへの書込みを並列に行えるが、このよう
な並列書込みは、キャッシュ・ディレクトリの書込みキ
ューからの処理に時間がかかる。なぜなら、サイクル毎
に、ディレクトリの1つが読取り動作を実行しているよ
うな拡張期間が存在し得るからである。従って、2つの
ディレクトリへの書込みもスタガ式にすることができ
る。これは、複数の(冗長な)キャッシュ・ディレクト
リを用意することのもう1つの利点である。
【0039】例えば、後者の実施例では、CPUがディ
レクトリ72を介して読取り動作を実行しているとき、
システム・バスは同じサイクルでディレクトリ96での
書込み動作を実行することができる。ディレクトリ72
への対応する書込み動作は、CPUスヌープが読取り
(または他の書込み以外の)動作を実行していないと
き、次のサイクルまたは後のサイクルまで延期できる
(書込みキューに置ける)。冗長ディレクトリが用いら
れるとき、このようにして書込み動作を分割することで
キャッシュ動作が高速化される。別々の(冗長な)キャ
ッシュ・エントリ・アレイが2つのキャッシュ・ディレ
クトリと共に用いられる場合は、キャッシュ・エントリ
・アレイへメモリ・ブロックを書込む動作も同様にスタ
ガ式にすることができる。
【0040】このスタガ式書込みはまた、ディレクトリ
からの独立した読取りを実行する機能を補足する。例え
ば、第1サイクルの間、ディレクトリ72で読取り動作
が行われ、ディレクトリ96への最初の書込みによりス
タガ式書込みが始まったばかりとする。次に、第2サイ
クルの間で、スタガ式書込み動作が、ディレクトリ72
への書込みにより完了し、ディレクトリ96では全く関
係のない読取りが生じる。従って2つの読取り動作及び
1つの書込み動作が2サイクルで実行されたことにな
る。この効果は、図らずもスタガ式書込みなしでも得ら
れるが(例えば第1サイクルで2回の読取り動作を実行
し、第2サイクルで両方のディレクトリに並列書込みを
行う等)、これを利用することにより、スヌープ動作を
実行する自由度が大きくなり、これによって性能が更に
改良される。
【0041】本発明が特定の実施例を参照して述べられ
たが、この説明は、制限を意味するものではない。当業
者には、本発明の説明の参照に際し、開示された実施例
の様々な変更が、本発明の代替実施例と同様に明らかに
なろう。従って、このような変更は、本発明の趣旨また
は範囲を逸脱することなく実施され得ることが考慮され
る。
【0042】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0043】(1)コンピュータ・システムのプロセッ
サによって、使用されるキャッシュに値を格納する方法
であって、メモリ装置のメモリ・ブロックの値を前記キ
ャッシュにロードするステップと、初期プロセッサ・サ
イクルの間に、前記メモリ・ブロックに関連付けられた
アドレス・タグを第1キャッシュ・ディレクトリに書込
むステップと、後のプロセッサ・サイクルの間に、前記
メモリ・ブロックに関連付けられた前記アドレス・タグ
を第2キャッシュ・ディレクトリに書込むステップと、
を含む、方法。 (2)前記初期プロセッサ・サイクルの間に、異なるメ
モリ・ブロックに関連付けられた他のアドレス・タグを
前記第2キャッシュ・ディレクトリから読取るステップ
を含む、前記(1)記載の方法。 (3)前記後のプロセッサ・サイクルの間に、異なるメ
モリ・ブロックに関連付けられた他のアドレス・タグを
前記第1キャッシュ・ディレクトリから読取るステップ
を含む、前記(1)記載の方法。 (4)前記アドレス・タグを前記第1キャッシュ・ディ
レクトリに書込む前に、書込み動作を前記第1キャッシ
ュ・ディレクトリの書込みキューにセットするステップ
と、前記アドレス・タグを前記第2キャッシュ・ディレ
クトリに書込む前に、前記書込み動作を前記第2キャッ
シュ・ディレクトリの書込みキューにセットするステッ
プとを含み、前記第2キャッシュ・ディレクトリの書込
みキューは、前記第1キャッシュ・ディレクトリの書込
みキューから独立してその内容を実行する、前記(1)
記載の方法。 (5)第1プロセッサ・サイクルの間に、第1キャッシ
ュ・エントリ・アレイのキャッシュ・ラインに前記メモ
リ・ブロックをロードするステップと、第2プロセッサ
・サイクルの間に、第2キャッシュ・エントリ・アレイ
のキャッシュ・ラインに前記メモリ・ブロックをロード
するステップと、を含む、前記(1)記載の方法。 (6)プロセッサと、メモリ装置と、前記プロセッサ及
び前記メモリ装置に接続され、前記メモリ装置のメモリ
・ブロックに関連付けられた値を格納する複数のキャッ
シュ・ラインを有するキャッシュと、メモリ・ブロック
に関連付けられたアドレス・タグを、初期プロセッサ・
サイクルの間に第1キャッシュ・ディレクトリに書込
み、後のプロセッサ・サイクルの間に第2キャッシュ・
ディレクトリに書込む手段と、を含む、コンピュータ・
システム。 (7)前記初期プロセッサ・サイクルの間に、異なるメ
モリ・ブロックに関連付けられた他のアドレス・タグを
前記第2キャッシュ・ディレクトリから読取る手段を含
む、前記(6)記載のコンピュータ・システム。 (8)前記後のプロセッサ・サイクルの間に、異なるメ
モリ・ブロックに関連付けられた他のアドレス・タグを
前記第1キャッシュ・ディレクトリから読取る手段を含
む、前記(6)記載のコンピュータ・システム。 (9)前記書込む手段は、前記第1キャッシュ・ディレ
クトリの書込みキューに前記アドレス・タグの書込み動
作をセットし、前記第2キャッシュ・ディレクトリの書
込みキューに前記書込み動作をセットし、前記第2キャ
ッシュ・ディレクトリの前記書込みキューは、その内容
を前記第1キャッシュ・ディレクトリの前記書込みキュ
ーから独立して実行する、前記(6)記載のコンピュー
タ・システム。
【図面の簡単な説明】
【図1】従来技術のマルチプロセッサ・コンピュータ・
システムのブロック図である。
【図2】従来技術のセット連想キャッシュの概略図であ
る。
【図3】本発明に従って構成され、パリティ・エラー・
コントロール及び動的リペア・マスクを有するセット連
想キャッシュの概略図である。
【図4】本発明に従って構成され、2つの冗長ディレク
トリを有するキャッシュのブロック図である。
【符号の説明】
72、96 キャッシュ・ディレクトリ 74 LRUアレイ 78 制御ロジック 80 コングルエンス・クラス 82 比較器 88 マルチプレクサ 90 ORゲート 70 セット連想型キャッシュ 76 リペア・マスク 84 パリティ・チェッカ 86 ANDゲート 92 代替犠牲選択ロジック回路 94 書込みキュー 98 パリティ・エラー制御(PEC)装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スティーブン・ドッドソン アメリカ合衆国78660、テキサス州フェラ ガービル、ベル・ロック・サークル 1205 (72)発明者 ジェリー・ドン・リュイス アメリカ合衆国78681、テキサス州ラウン ド・ロック、アローヘッド・サークル 3409 (72)発明者 ティモシー・エム・スケルガン アメリカ合衆国78759、テキサス州オース ティン、バクソロン・ドライブ 10805

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】コンピュータ・システムのプロセッサによ
    って、使用されるキャッシュに値を格納する方法であっ
    て、 メモリ装置のメモリ・ブロックの値を前記キャッシュに
    ロードするステップと、 初期プロセッサ・サイクルの間に、前記メモリ・ブロッ
    クに関連付けられたアドレス・タグを第1キャッシュ・
    ディレクトリに書込むステップと、 後のプロセッサ・サイクルの間に、前記メモリ・ブロッ
    クに関連付けられた前記アドレス・タグを第2キャッシ
    ュ・ディレクトリに書込むステップと、 を含む、方法。
  2. 【請求項2】前記初期プロセッサ・サイクルの間に、異
    なるメモリ・ブロックに関連付けられた他のアドレス・
    タグを前記第2キャッシュ・ディレクトリから読取るス
    テップを含む、請求項1記載の方法。
  3. 【請求項3】前記後のプロセッサ・サイクルの間に、異
    なるメモリ・ブロックに関連付けられた他のアドレス・
    タグを前記第1キャッシュ・ディレクトリから読取るス
    テップを含む、請求項1記載の方法。
  4. 【請求項4】前記アドレス・タグを前記第1キャッシュ
    ・ディレクトリに書込む前に、書込み動作を前記第1キ
    ャッシュ・ディレクトリの書込みキューにセットするス
    テップと、 前記アドレス・タグを前記第2キャッシュ・ディレクト
    リに書込む前に、前記書込み動作を前記第2キャッシュ
    ・ディレクトリの書込みキューにセットするステップと
    を含み、 前記第2キャッシュ・ディレクトリの書込みキューは、
    前記第1キャッシュ・ディレクトリの書込みキューから
    独立してその内容を実行する、 請求項1記載の方法。
  5. 【請求項5】第1プロセッサ・サイクルの間に、第1キ
    ャッシュ・エントリ・アレイのキャッシュ・ラインに前
    記メモリ・ブロックをロードするステップと、 第2プロセッサ・サイクルの間に、第2キャッシュ・エ
    ントリ・アレイのキャッシュ・ラインに前記メモリ・ブ
    ロックをロードするステップと、 を含む、請求項1記載の方法。
  6. 【請求項6】プロセッサと、 メモリ装置と、 前記プロセッサ及び前記メモリ装置に接続され、前記メ
    モリ装置のメモリ・ブロックに関連付けられた値を格納
    する複数のキャッシュ・ラインを有するキャッシュと、 メモリ・ブロックに関連付けられたアドレス・タグを、
    初期プロセッサ・サイクルの間に第1キャッシュ・ディ
    レクトリに書込み、後のプロセッサ・サイクルの間に第
    2キャッシュ・ディレクトリに書込む手段と、 を含む、コンピュータ・システム。
  7. 【請求項7】前記初期プロセッサ・サイクルの間に、異
    なるメモリ・ブロックに関連付けられた他のアドレス・
    タグを前記第2キャッシュ・ディレクトリから読取る手
    段を含む、請求項6記載のコンピュータ・システム。
  8. 【請求項8】前記後のプロセッサ・サイクルの間に、異
    なるメモリ・ブロックに関連付けられた他のアドレス・
    タグを前記第1キャッシュ・ディレクトリから読取る手
    段を含む、請求項6記載のコンピュータ・システム。
  9. 【請求項9】前記書込む手段は、前記第1キャッシュ・
    ディレクトリの書込みキューに前記アドレス・タグの書
    込み動作をセットし、前記第2キャッシュ・ディレクト
    リの書込みキューに前記書込み動作をセットし、前記第
    2キャッシュ・ディレクトリの前記書込みキューは、そ
    の内容を前記第1キャッシュ・ディレクトリの前記書込
    みキューから独立して実行する、請求項6記載のコンピ
    ュータ・システム。
JP10097936A 1997-04-14 1998-04-09 キャッシュに値を格納する方法及びコンピュータ・システム Pending JPH10320280A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/839,556 US6085288A (en) 1997-04-14 1997-04-14 Dual cache directories with respective queue independently executing its content and allowing staggered write operations
US08/839556 1997-04-14

Publications (1)

Publication Number Publication Date
JPH10320280A true JPH10320280A (ja) 1998-12-04

Family

ID=25280053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10097936A Pending JPH10320280A (ja) 1997-04-14 1998-04-09 キャッシュに値を格納する方法及びコンピュータ・システム

Country Status (2)

Country Link
US (1) US6085288A (ja)
JP (1) JPH10320280A (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6405285B1 (en) 1999-06-25 2002-06-11 International Business Machines Corporation Layered local cache mechanism with split register load bus and cache load bus
US6397300B1 (en) * 1999-06-25 2002-05-28 International Business Machines Corporation High performance store instruction management via imprecise local cache update mechanism
US6463507B1 (en) 1999-06-25 2002-10-08 International Business Machines Corporation Layered local cache with lower level cache updating upper and lower level cache directories
US6446166B1 (en) 1999-06-25 2002-09-03 International Business Machines Corporation Method for upper level cache victim selection management by a lower level cache
US6434667B1 (en) 1999-06-25 2002-08-13 International Business Machines Corporation Layered local cache with imprecise reload mechanism
US6385694B1 (en) 1999-06-25 2002-05-07 International Business Machines Corporation High performance load instruction management via system bus with explicit register load and/or cache reload protocols
US6418513B1 (en) 1999-06-25 2002-07-09 International Business Machines Corporation Queue-less and state-less layered local data cache mechanism
US6397297B1 (en) * 1999-12-30 2002-05-28 Intel Corp. Dual cache with multiple interconnection operation modes
JP2005174386A (ja) * 2003-12-08 2005-06-30 Elpida Memory Inc 半導体集積回路装置
US7533321B2 (en) * 2005-09-13 2009-05-12 International Business Machines Corporation Fault tolerant encoding of directory states for stuck bits
US7689891B2 (en) * 2005-09-13 2010-03-30 International Business Machines Corporation Method and system for handling stuck bits in cache directories
JP2008111921A (ja) * 2006-10-30 2008-05-15 Renesas Technology Corp 表示制御用半導体集積回路
US20080244181A1 (en) * 2007-03-30 2008-10-02 Michael Walz Dynamic run-time cache size management
US9430395B2 (en) * 2008-08-11 2016-08-30 International Business Machines Corporation Grouping and dispatching scans in cache
US8504774B2 (en) 2010-10-13 2013-08-06 Microsoft Corporation Dynamic cache configuration using separate read and write caches
US8868833B1 (en) * 2011-08-02 2014-10-21 Ionu Security, Inc. Processor and cache arrangement with selective caching between first-level and second-level caches
CN109918017A (zh) * 2017-12-12 2019-06-21 北京机电工程研究所 数据调度方法及装置
CN108572928B (zh) * 2018-03-13 2024-02-02 新大陆数字技术股份有限公司 一种人工智能设备及存取方法
US11099987B2 (en) 2019-11-27 2021-08-24 Micron Technology, Inc. Bit masking valid sectors for write-back coalescing

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3854026D1 (de) * 1987-09-04 1995-07-27 Digital Equipment Corp Fehlertolerantes Rechnersystem mit Fehler-Eingrenzung.
CA1320276C (en) * 1987-09-04 1993-07-13 William F. Bruckert Dual rail processors with error checking on i/o reads
US5058116A (en) * 1989-09-19 1991-10-15 International Business Machines Corporation Pipelined error checking and correction for cache memories
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
US5206941A (en) * 1990-01-22 1993-04-27 International Business Machines Corporation Fast store-through cache memory
US5325520A (en) * 1992-01-03 1994-06-28 Amdahl Corporation Invoking hardware recovery actions via action latches
US5502728A (en) * 1992-02-14 1996-03-26 International Business Machines Corporation Large, fault-tolerant, non-volatile, multiported memory
US5319766A (en) * 1992-04-24 1994-06-07 Digital Equipment Corporation Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system
DE69323790T2 (de) * 1992-04-29 1999-10-07 Sun Microsystems, Inc. Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
JP3169155B2 (ja) * 1993-12-22 2001-05-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 情報をキャッシュするための回路
US5603005A (en) * 1994-12-27 1997-02-11 Unisys Corporation Cache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed

Also Published As

Publication number Publication date
US6085288A (en) 2000-07-04

Similar Documents

Publication Publication Date Title
US6006311A (en) Dynamic updating of repair mask used for cache defect avoidance
US6023746A (en) Dual associative-cache directories allowing simultaneous read operation using two buses with multiplexors, address tags, memory block control signals, single clock cycle operation and error correction
US5958068A (en) Cache array defect functional bypassing using repair mask
US6480975B1 (en) ECC mechanism for set associative cache array
KR100572800B1 (ko) 에러 체크 방법, 에러 정정 코드 체커 및 이를 포함하는 컴퓨터 시스템
US7430145B2 (en) System and method for avoiding attempts to access a defective portion of memory
US7055003B2 (en) Data cache scrub mechanism for large L2/L3 data cache structures
US7272773B2 (en) Cache directory array recovery mechanism to support special ECC stuck bit matrix
US7987407B2 (en) Handling of hard errors in a cache of a data processing apparatus
US8291168B2 (en) Disabling cache portions during low voltage operations
US8205136B2 (en) Fault tolerant encoding of directory states for stuck bits
US6085288A (en) Dual cache directories with respective queue independently executing its content and allowing staggered write operations
US8977820B2 (en) Handling of hard errors in a cache of a data processing apparatus
US5201041A (en) Cache bypass apparatus
US5883904A (en) Method for recoverability via redundant cache arrays
US5943686A (en) Multiple cache directories for non-arbitration concurrent accessing of a cache memory
US5867511A (en) Method for high-speed recoverable directory access
US10528473B2 (en) Disabling cache portions during low voltage operations
JPH0524540B2 (ja)
US7689891B2 (en) Method and system for handling stuck bits in cache directories
JPH07182238A (ja) 欠陥データ無効化回路及び方法
US20020087825A1 (en) Error detection in cache tag array using valid vector
US7055002B2 (en) Integrated purge store mechanism to flush L2/L3 cache structure for improved reliabity and serviceability
JPH02184946A (ja) キヤツシユ・バイパス装置
US7254746B1 (en) Method and apparatus for using a fault tolerant memory in processor testing and design