JPH10232827A - 先取りキャッシュ書戻しの方法と装置 - Google Patents

先取りキャッシュ書戻しの方法と装置

Info

Publication number
JPH10232827A
JPH10232827A JP9370165A JP37016597A JPH10232827A JP H10232827 A JPH10232827 A JP H10232827A JP 9370165 A JP9370165 A JP 9370165A JP 37016597 A JP37016597 A JP 37016597A JP H10232827 A JPH10232827 A JP H10232827A
Authority
JP
Japan
Prior art keywords
cache
write
cache entry
entry
dirty
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.)
Ceased
Application number
JP9370165A
Other languages
English (en)
Inventor
Robert D Marshall Jr
ディー.マーシャル,ジュニア ロバート
Jonathan H Shiell
エィチ.シエル ジョナサン
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JPH10232827A publication Critical patent/JPH10232827A/ja
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

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)【要約】 【課題】マイクロプロセッサの内部キャッシュを効率よ
く用いるために、アクセス要求がある前に、汚れたエン
トリを先取りして主メモリに書き戻す方法と装置を提供
する。 【解決手段】各キャッシュエントリが汚れているかどう
か定期的に調べ(705)、汚れている場合は書込み履
歴を調べる(706)。前のサイクル中にキャッシュエ
ントリに書込みがなかった場合は非書込みカウントを増
分する(709)。このカウントが所定数を越えた場合
はキャッシュエントリは新しくない(710)。新しく
ない場合は、このキャッシュエントリを先取りして主メ
モリに書き戻し、汚れたキャッシュエントリにきれいと
印す(711)。書込みアドレスが書戻しバッファエン
トリのアドレスのどれかと一致する場合は、一致するエ
ントリを書戻しバッファからフラッシュする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はデータ用の内部キ
ャッシュを用いるマイクロプロセッサに関する。
【0002】
【従来の技術】現在のパーソナルコンピュータに用いら
れているマイクロプロセッサは非常に高速でデータを処
理する。特にスーパースカラのマイクロプロセッサは一
度に1命令以上を処理することができる。コンピュータ
のメモリ装置全体をマイクロプロセッサと同じ速度で動
作させるようにすることは経済的ではなく、またこのよ
うなメモリ装置を作る必要はない。マイクロプロセッサ
は、局所性を仮定してデータキャッシュまたは命令キャ
ッシュを用いる。主メモリから特定のデータや命令を参
照すると、その後近い将来にまたその近くのデータや命
令を参照するのが普通なので、小型で高速のメモリを作
って、このようなデータや命令を一時的に記憶すると便
利である。この小型で高速のメモリをキャッシュと呼
ぶ。一般に、主メモリから呼び出す最小のデータサイズ
は、アドレス可能な最小のメモリサイズより大きい。こ
のようなメモリ呼出しは、アドレス可能な最小のデータ
サイズより広いデータバスで、または複数のメモリアク
セスのバーストで、またはその両者で行う。近くのデー
タを呼び出すのは近い将来に参照する可能性のある近く
のアドレスから呼び出すことであって、局所性を仮定す
る理由になる。メモリキャッシュは、対応する主メモリ
のアドレスの指標と共にデータを記憶する。
【0003】マイクロプロセッサは各メモリを参照する
度にキャッシュアドレス指標を調べて、参照したアドレ
スがキャッシュ内にあるかどうか判断する。参照したア
ドレスがキャッシュ内に記憶されている場合(キャッシ
ュヒットと呼ぶ)は、メモリアクセスは主メモリにでは
なくキャッシュに行う。キャッシュへのメモリアクセス
は主メモリへのアクセスより速いので、キャッシュヒッ
トがあるとメモリアクセス速度は速い。このようなメモ
リアクセスはメモリの読取りにもメモリへの書込みにも
行う。アクセスが書込みの場合は、この書込みはキャッ
シュに記憶されているデータの複写に対して行う。この
場合は、このキャッシュエントリに汚れと印す。この意
味は、キャッシュは主メモリ内の対応するアドレスのデ
ータとは異なるデータを含み、キャッシュデータは現在
のプログラム内で要求された状態に対応する、というこ
とである。
【0004】参照したアドレスがキャッシュ内に記憶さ
れていない場合(キャッシュミスと呼ぶ)は、主メモリ
にアクセスしなければならない。読取りアクセスでは、
データを必要とするマイクロプロセッサ動作ユニット
は、遅い主メモリからデータが返ってくるまで機能を停
止しなければならない。呼び出した主メモリのデータ
は、要求したマイクロプロセッサ動作ユニットに与える
と共に、キャッシュに記憶する。マイクロプロセッサの
中には、書込みアクセスでキャッシュミスのときにデー
タをキャッシュに書き込まないものがある。このような
マイクロプロセッサは単に主メモリに書き込む。スーパ
ースカラのマイクロプロセッサでは、この主メモリへの
書込み中に重要なタスクを行う可能性がある。別のマイ
クロプロセッサは、書込みアクセスでキャッシュミスが
あるとデータを呼び出す、キャッシュ書込み割当て方式
を取っている。書き込むメモリアドレスのデータを呼び
出してキャッシュに記憶し、次に、対応するキャッシュ
位置にメモリ書込みを行う。このキャッシュエントリに
汚れと印し、このキャッシュエントリが主メモリの複写
とは異なることを示す。書込み割当て方式は、キャッシ
ュミス書込みアクセスの後、またすぐこのメモリ位置に
読取りまたは書込みのアクセスが必要になるという仮定
に基づく。そうであれば、その後のアクセスはキャッシ
ュ内で行うのでメモリアクセスの速度が速くなる。
【0005】メモリキャッシュのサイズに関わらず、マ
イクロプロセッサは最終的にこれを埋める。次のキャッ
シュミスのとき、存在しなかったデータを主メモリから
記憶するにはキャッシュエントリをクリアしなければな
らない。一般にメモリキャッシュは最も以前に用いたと
いうアルゴリズムを使う。対応するメモリアドレスとキ
ャッシュエントリが汚れているかどうかの指標と共に、
メモリキャッシュは最も以前に用いたキャッシュエント
リの指標を記憶しなければならない。置換されるキャッ
シュエントリは最も以前に用いたキャッシュエントリで
ある。これは、最も以前に用いたキャッシュエントリ
は、近い将来に再び必要になる可能性が最も少ないとい
う仮定に基づいている。
【0006】要求されたデータがキャッシュ内にないの
で、このキャッシュエントリの置換はキャッシュミスと
共に開始する。キャッシュコントローラは、どのキャッ
シュエントリと新しく要求されたデータとを置換するか
を決定しなければならない。最も以前に用いたキャッシ
ュエントリがきれいな場合は、即ち主メモリ内のデータ
と正しく対応する場合は、このキャッシュエントリに上
書きする。キャッシュエントリはメモリ内の対応する位
置に記憶されているデータと同じなので、この上書きに
よってプログラムの状態は消失しない。最も以前に用い
たキャッシュエントリが汚れている場合は、キャッシュ
エントリは対応するメモリ位置とは異なるデータを保持
している。この場合はキャッシュエントリがプログラム
状態を保持しているので、このデータに上書きするのは
正しくない。したがって、このキャッシュエントリは追
い出さなければならない。即ち、キャッシュエントリを
再使用する前にこれを主メモリに書き込まなければなら
ない。
【0007】汚れたキャッシュエントリを追い出す必要
があると、マイクロプロセッサは機能を停止しなければ
ならない。この状態は、一般にマイクロプロセッサ実行
ユニットがデータを必要とすることを示すキャッシュミ
スのときだけ起こる。この状態は、メモリ読取りのとき
か、書込み割当て方式を用いる際のメモリ書込みのとき
に起こる。しかし、汚れたキャッシュエントリをメモリ
に書き込むまでは要求された主メモリからのデータを記
憶することができない。このように、マイクロプロセッ
サは、新しいデータを要求しても、新しいデータをメモ
リから呼び出す前に古いデータをメモリに書き込むまで
待たなければならない。この問題に対処するため、従来
は書戻し(write−back)バッファを用いてい
る。書戻しバッファは、書き込む予定のキャッシュエン
トリの先入れ先出しバッファである。書戻しバッファ内
の各エントリは、キャッシュエントリデータとその対応
する主メモリアドレスを含む。メモリバスが空いている
とき、書戻しバッファ内の最後のエントリからのデータ
を主メモリの対応するアドレスに書き込む。この主メモ
リへの書込みが終わると、書戻しバッファエントリは別
の追い出されるキャッシュエントリを記憶することがで
きる。書戻しバッファを用いることにより、必要なメモ
リ書込みを、メモリ読取りが終わるまで遅らせることが
できる。マイクロプロセッサ操作ユニットはメモリ読取
りが終わるまで待っているので、書込みより先に読取り
を行うことにより、マイクロプロセッサはキャッシュエ
ントリの追い出しを避けて動作を続けることができる。
【0008】
【発明が解決しようとする課題】参照の局所性を仮定す
ることができない場合がある。その一例は、マイクロプ
ロセッサが現在のタスクから他のタスクに移るときの文
脈切替えである。これは、新しいプログラムのローディ
ングや、1つのプログラムの部分間の変更や、割込み処
理などのときに起こる。このような場合には、メモリ操
作は元のアドレスブロックから別のアドレスブロックに
移る。このメモリ参照の移動では、主メモリから大量の
データを比較的短時間にキャッシュに移す必要がある。
このためには、メモリキャッシュの内容の大きな部分を
置換しなければならない。したがって、文脈切替え中に
多数の汚れたキャッシュエントリを追い出す必要があ
る。書戻しバッファはメモリへの書込みの必要を遅らせ
るだけである。書戻しバッファが一杯になると、必要な
メモリ読取りを行う前に汚れたキャッシュエントリの書
戻しを行わなければならない。文脈切替えではこの状態
が繰り返し発生し、その度にマイクロプロセッサの動作
が遅れる。
【0009】書戻しバッファのFIFOの深さを増やせ
ばこの問題は軽減される。深さを十分にすると、新しい
タスクがキャッシュデータを参照し始めるまで書戻しを
遅らせてよい。新しいタスクがキャッシュヒットを生成
するときは、要求されたデータを呼び出すためのメモリ
バスサイクルは必要ない。したがってメモリバスサイク
ルが空くので、書戻しバッファからの書込みのために使
える。書戻しバッファが大きいほど書戻しを大きく遅ら
せらて、必要なメモリバスサイクルをキャッシュヒット
の陰に隠すことができる。しかし書戻しバッファは、マ
イクロプロセッサを実現する集積回路の比較的大きな領
域を必要とする。書戻しバッファ内の各エントリは全キ
ャッシュエントリを含まなければならない。これは64
ビットから256ビットまたはより広いビットである。
また書戻しバッファの各エントリにはデータの開始アド
レスが必要で、多くは27ビットから29ビットであ
る。
【0010】また、一般に書戻しバッファ内の各エント
リのアドレスと任意のメモリアクセスのアドレスとを比
較する。メモリアクセスのアドレスが書戻しバッファ内
の任意のアドレスと一致する場合は、一般にデータの書
戻しを行わない。メモリ読取りの際に一致するというこ
とは、書戻しバッファ内のデータがマイクロプロセッサ
の操作ユニットに必要であることを意味する。このデー
タを書戻しバッファから得る方が、これを主メモリに書
き込み、読取りアクセスでキャッシュミスを生じ、次に
これをキャッシュに読み戻すという流れより時間が節約
になる。メモリ書込みの際に一致するということは、書
戻しバッファ内のデータを書き換えるということを意味
する。したがって、書戻しバッファ内のデータはメモリ
に書き込んではならない間違ったデータである。
【0011】更にどちらの場合も、書戻しバッファ内の
データにアクセスするということは、このデータはもは
や最も以前に用いたデータではないことを意味する。し
たがって、書戻しバッファ内のキャッシュエントリでは
なく、別のキャッシュエントリを置換しなければならな
い。書戻しバッファはデータを必要とするマイクロプロ
セッサ実行ユニットの機能を停止させるので、これらの
比較は全て、一致したときに書戻しバッファのエントリ
を迅速にクリアするのに必要な時間内に終わらなければ
ならない。これには比較のための多数の並列のハードウ
エアが必要になる。このように回路が複雑になるので、
書戻しバッファの深さは一般に、文脈切替え中ではなく
通常の処理中にマイクロプロセッサ動作ユニットがほと
んど機能を停止しないように決める。
【0012】
【課題を解決するための手段】この発明は、内部キャッ
シュを有するマイクロプロセッサ内に先取りキャッシュ
書戻しを与える。この発明は、所定の時間間隔毎に一度
各キャッシュエントリをチェックして、キャッシュエン
トリが汚れているかどうか判断する。キャッシュエント
リが汚れている場合は、この発明は書込み履歴をチェッ
クして、キャッシュエントリが新しくないかどうか判断
する。キャッシュエントリが新しくない場合は、この発
明はキャッシュエントリを主メモリに先取りして書き込
んで、キャッシュメモリにきれいと印す。
【0013】好ましい実施の形態では、書込み履歴は、
キャッシュエントリに書込みがなかった連続した所定の
時間間隔の数のカウントを含む。カウントが所定の数を
超えた場合は、キャッシュエントリは新しくない。この
非書込みサイクルカウントはキャッシュエントリの開始
の度にゼロにする。キャッシュエントリに書き込む度に
書込みビットをセットする。書込み履歴をチェックする
度に、非書込みサイクルカウントを、対応する書込みビ
ットがセットされていない場合は増分し、書込みビット
がセットされている場合は減分する。書込み履歴をチェ
ックする度に書込みビットをリセットする。非書込みサ
イクルカウントが所定の数を超えた場合は、キャッシュ
エントリは新しくないと判断する。または、対応する書
込みビットがセットされた場合は非書込みサイクルカウ
ントをゼロにする。
【0014】先取りキャッシュ書戻しを行うこの発明
は、好ましくはFIFO書戻しバッファを用いる。キャ
ッシュエントリの状熊とその対応するアドレスをバッフ
ァの第1エントリに複写する。このキャッシュエントリ
に対応する汚れたビットも書戻しバッファに複写する。
書戻しバッファはこれを用いて、キャッシュエントリの
汚れた部分だけを書き戻すことができる。主メモリが書
込みを受けることが可能なときはいつでも、書戻しバッ
ファの出力エントリを主メモリに書き込む。書戻しバッ
ファに複写すると、汚れたキャッシュエントリにきれい
と印す。または、書戻しバッファが汚れたキャッシュエ
ントリを主メモリに書き込むと、汚れたキャッシュエン
トリにきれいと印す。
【0015】全てのメモリアクセスアドレスと書戻しバ
ッファ内の各エントリのアドレスとを比較する。書込み
アドレスが書戻しバッファエントリのアドレスのどれか
と一致する場合は、一致したエントリを書戻しバッファ
からフラッシュする。この書戻しバッファエントリに対
応するキャッシュエントリがきれいと印されている場合
は、これに汚れと印す。読取り再生カウントを用いて、
書戻しバッファエントリの読取り再生を行うことができ
る。キャッシュエントリとその対応するアドレスを書戻
しバッファに複写すると、読取り再生カウントをゼロに
する。読取りアドレスが書戻しバッファエントリのアド
レスのどれかと一致する場合は、読取り再生カウントを
増分する。読取り再生カウントが所定の数を越えない場
合に限り、その書戻しバッファエントリをフラッシュす
る。
【0016】所定の時間間隔に一度各キャッシュエント
リをチェックするということは、マイクロプロセッサの
機能を所定の時間間隔に一度停止して、全てのキャッシ
ュエントリを連続的にチェックすることである。好まし
くは、各キャッシュエントリのチェックは通常の処理中
に背景で行う。所定数の命令サイクルをカウントする
と、次の連続したキャッシュエントリをチェックする。
マイクロプロセッサが次の連続したキャッシュエントリ
の読取りまたは書込みを行っている場合は、読取りまた
は書込みが終わるまでキャッシュエントリチェックを中
止する。
【0017】
【発明の実施の形態】
【実施例】この発明はキャッシュ内の新しくないデータ
を識別する。新しくないデータとは、もうマイクロプロ
セッサによる書込みの必要がなくなったデータである。
この発明は、キャッシュエントリを追い出す必要が起こ
る前にこの新しくないデータを書き戻す。データはキャ
ッシュ内に保持するが、きれいなデータだけで構成す
る。識別された新しくないデータはすでに主メモリに書
込み済みなので、文脈切替えのときに主メモリに書き込
む必要のあるデータは非常に少ない。これにより書戻し
が必要であることを予測して、文脈切替えにより発生す
るメモリアクセスのピークの前に書戻しを行うことがで
きる。こうすればメモリアクセス要求のピークは減少
し、書戻しバッファをより有効に使うことができる。
【0018】自動状態機械即ちプロセッサは汚れたキャ
ッシュエントリを先取りして書き戻す。先取りキャッシ
ュ書戻し論理は、頻繁でなく、メモリバス活動が低調な
ときにだけ動作するのが好ましい。これが動作すると、
先取りキャッシュ書戻し論理はキャッシュエントリが新
しくないかどうか判断する。これにはキャッシュエント
リの書込み履歴を用いる。キャッシュエントリが汚れて
いて新しくない場合は、これを書戻しバッファに複写す
る。書戻しバッファはキャッシュエントリデータとその
アドレスを、主メモリへの書込み待ち行列内に記憶す
る。書戻しバッファに複写すると、または書戻しバッフ
ァが実際に主メモリに書き込むと、対応するキャッシュ
エントリにきれいと印してよい。
【0019】間で何も起こらない場合は、書戻しバッフ
ァ内のキャッシュエントリを主メモリまたは外部キャッ
シュに書き込む。他の方法で処理する方がよい場合もあ
る。書戻しが済んでいないキャッシュメモリへのメモリ
読取りでキャッシュヒットがある場合は、キャッシュエ
ントリ用のメモリバスサイクルを用いない方がよい。し
たがって書戻しエントリをフラッシュしてよい。別の実
施の形態では、所定数の読取りに達したときだけ書戻し
バッファエントリをフラッシュする。間の書込みなしに
所定数以上キャッシュエントリを読んだ場合は、対応す
る書戻しバッファエントリはフラッシュしない。この場
合は、プログラムがそのアドレスへの書込みを終わった
かどうかについては読取りアクセスは何も示さない。し
たがって先取りキャッシュの書戻しを続ける。
【0020】書戻しが済んでいないキャッシュエントリ
へのメモリ書込みでキャッシュヒットがある場合は、書
戻しエントリをフラッシュする。この場合は、キャッシ
ュエントリはもう新しくない。変化したキャッシュエン
トリを書き込むのに、メモリバスサイクルを用いない方
がよい。このデータは再び使うことがあるので、先取り
書戻しの良い候補ではない。
【0021】図1は、この発明の実施の形態を実現する
マイクロプロセッサのブロック図である。図1を参照し
て例示のコンピュータシステム102を説明する。コン
ピュータシステム102は、好ましい実施の形態を実現
する例示のスーパースカラ・パイプライン・マイクロプ
ロセッサ110を備える。コンピュータ装置102とマ
イクロプロセッサ110の構造は一例であって、この実
施の形態は種々の構造のマイクロプロセッサに用いてよ
いものである。したがって当業者はこの明細書を参照し
て、他のマイクロプロセッサ構造でこの実施の形態を容
易に実現することができる。
【0022】図1に示すように、マイクロプロセッサ1
10はバスBにより他のシステムデバイスに接続する。
この例ではバスBを単一バスで示しているが、PCIロ
ーカルバス構造を用いる従来のコンピュータで知られて
いるように、バスBは異なる速度とプロトコルを持つ多
重バスを表してよいことは言うまでもない。単一バスB
は、例として簡単のために示したに過ぎない。コンピュ
ータシステムは、次の従来のサブシステムを備える。即
ち、通信ポート103(モデムポート及びモデム、網イ
ンターフェースなどを含む)、グラフィックディスプレ
イ装置104(ビデオメモリ、ビデオプロセッサ、グラ
フィックモニタを含む)、一般にダイナミック・ランダ
ムアクセスメモリ(DRAM)で実現されまたスタック
107を含む主メモリサブシステム105、入力デバイ
ス106(キーボード、位置決め装置、そのインターフ
ェース回路を含む)、ディスク装置108(ハードディ
スクドライブ、フロッピディスクドライブ、CDROM
ドライブを含む)などである。したがって図1のコンピ
ュータシステム102は、現在では普通になっている従
来のデスクトップコンピュータやワークステーションに
対応すると考えてよい。当業者が認めるように、マイク
ロプロセッサ110の他のシステム構成もこの実施の形
態を有効に利用することができる。
【0023】マイクロプロセッサ110はバスインター
フェースユニット(BIU)112を備える。BIU1
12はバスBに接続し、マイクロプロセッサ110とコ
ンピュータシステム102内の他の構成要素との間の通
信を制御する。BIU112はこの機能を実行するため
の制御及びクロック回路を備える。例えば、動作速度を
高めるための書込みバッファや、内部マイクロプロセッ
サの動作とバスBのタイミング制約を同期させるタイミ
ング回路などである。またマイクロプロセッサ110は
クロック発生及び制御回路120を備える。この例示の
マイクロプロセッサ110では、回路120はバスBか
らのバスクロックに基づいて内部クロック相を生成す
る。この例では、内部クロック相の周波数はバスクロッ
クの周波数の倍数として選択的にプログラムすることが
できる。
【0024】図1から明らかなように、マイクロプロセ
ッサ110は3レベルの内部キャッシュメモリを備え
る。最高レベルはレベル2キャッシュ114で、BIU
112に接続する。この例ではレベル2キャッシュ11
4は統一キャッシュで、BIU112を通してバスBか
ら全てのキャッシュ化可能なデータとキャッシュ化可能
な命令を受け、またマイクロプロセッサ110が与える
バストラフィックの多くはレベル2キャッシュ114を
通して行われる。もちろん、マイクロプロセッサ110
はキャッシュ114の周りのバストラフィックを制御し
て、あるバス読取り及び書込みを「キャッシュ化不可」
にすることもできる。図1に示すように、レベル2キャ
ッシュ114は2個のレベル1キャッシュ116に接続
する。レベル1データキャッシュ116はデータ専用
であり、レベル1命令キャッシュ16は命令専用であ
る。レベル1キャッシュ116のどちらかがキャッシュ
ミスの場合にだけレベル2キャッシュ114にアクセス
することにより、マイクロプロセッサ110の電力消費
を最小にすることができる。更にデータ側にはレベル0
キャッシュとしてマイクロキャッシュ118がある。レ
ベル0キャッシュは、この例では完全な二重ポートキャ
ッシュである。
【0025】図1に示すように、また上に述べたよう
に、マイクロプロセッサ110はスーパースカラ型であ
る。この例では、マイクロプロセッサ110は多重実行
ユニットを備え、単一命令ポインタエントリに対して最
大4命令を同時に並行して実行することができる。これ
らの実行ユニットは、条件付き分岐や整数や論理操作を
処理する2個のALU142及び142と、浮動小
数点ユニット(FPU)130と、2個の読込み・格納
ユニット140及び140と、マイクロシーケンサ
148を備える。2個の読込み・格納ユニット140は
マイクロキャッシュ118への2個のポートを用いて真
の並列アクセスを行い、またレジスタファイル139内
のレジスタへの読込み及び格納操作を行う。またデータ
マイクロ変換ルックアサイドバッファ(μTLB)13
8を備え、論理データアドレスを物理アドレスに従来の
方法で変換する。
【0026】これらの多重実行ユニットは書戻しの際
に、それぞれ7段階の多重パイプラインにより制御され
る。パイプライン段階は次の通り。 F 取出し: この段階は命令アドレスを生成し
て、命令キャッシュ即ちメモリから命令を読み取る。 PD0 前復号化段階0: この段階は最大3個の取り
出されたx86型の命令の長さと開始位置を決定する。 PD1 前復号化段階1: この段階はx86命令バイ
トを抽出して、復号化のための固定長書式で記録する。 DC 復号化: この段階はx86命令を最小単位動
作(AOps)に変換する。 SC スケジュール: この段階は該当する実行ユニ
ットに最大4AOpsを割り当てる。 OP オペランド: この段階はAOpsが示すレジ
スタオペランドを検索する。 EX 実行: この段階はAOpsと検索されたオペ
ランドに従って実行ユニットを実行させる。 WB 書戻し: この段階は実行の結果をレジスタま
たはメモリに記憶する。
【0027】図1に戻って、上に述べたパイプライン段
階はマイクロプロセッサ110内の種々の機能ブロック
が実行する。取出しユニット126は命令マイクロ変換
ルックアサイドバッファ(μTLB)122により命令
ポインタから命令アドレスを生成する。命令μTLB1
22は、論理命令アドレスを物理アドレスに従来の方法
で変換し、レベル1命令キャッシュ116に与える。
命令キャッシュ116は取出しユニット126への命
令データのストリームを生成し、取出しユニット126
は命令コードを前復号化段階に所望のシーケンスで与え
る。推論的実行は主として取出しユニット126が制御
する。その詳細は後で説明する。
【0028】命令の前復号化はマイクロプロセッサ11
0内で2つの部分、即ち前復号化0段階128と前復号
化1段階132、に分かれる。これらの2段階は別個の
パイプライン段階として動作し、また一緒に動作して最
大3個のx86命令を見つけて復号器134に与える。
マイクロプロセッサ110内のパイプラインの前復号化
段階は3命令幅である。上に述べたように、前復号化0
ユニット128は3個のx86命令(もちろん可変長)
のサイズと位置を決定し、それ自体は3個の命令認識器
から成る。前復号化1ユニット132は多数バイト命令
を固定長書式で記録して復号化を容易にする。
【0029】この例では、復号化ユニット134は4個
の命令復号器を備え、それぞれ前復号化1ユニット13
2から固定長のx86命令を受けて、1ないし3個の最
小単位動作(AOps)を作る。AOpsは実質的にR
ISC命令と同じである。4個の復号器の中の3個は並
列に動作して、復号器ユニット134の出力で最大9個
のAOpsを復号化待ち行列にしてスケジューリングを
待つ。第4復号器は特殊な場合の予備である。スケジュ
ーラ136は復号化ユニット134の出力の復号化待ち
行列から最大4個のAOpsを読んで、これらのAOp
sを該当する実行ユニットに割り当てる。更に、オペラ
ンドユニット144は実行のためのオペランドを受けて
準備する。図1に示すように、オペランドユニット14
4は、マルチプレクサ145を経てスケジューラ136
とマイクロコードROM146から入力を受け、命令の
実行に用いるレジスタオペランドを取り出す。更にこの
例では、オペランドユニット144は記憶可能なレジス
タに結果を送るオペランド転送を行い、また読込み及び
格納の型についてAOpsのためのアドレス生成を行
う。
【0030】マイクロシーケンサ148はマイクロコー
ドROM146と共に、ALU142と読込み・格納ユ
ニット140がマイクロコードエントリAOpsを実行
するのを制御する。これは一般に1サイクル内に実行す
る最後のAOpsである。この例では、マイクロシーケ
ンサ148はマイクロコードROM146に記憶されて
いるマイクロ命令を整理して、これらのマイクロコード
化されたマイクロ命令の制御を行う。マイクロコード化
されたマイクロ命令の例は、マイクロプロセッサ110
では、複雑なまたは余り用いないx86命令や、セグメ
ントすなわち制御レジスタを修正するx86命令や、例
外や割込みの処理や、多サイクル命令(例えばREP命
令や、全てのレジスタのPUSH及びPOP命令など)
などである。
【0031】またマイクロプロセッサ110は回路12
4を備える。回路124は、JTAG走査試験やいくつ
かの内蔵自己試験機能の動作を制御し、製造が完了した
ときやリセットなどの他の事象のときに、マイクロプロ
セッサ110の動作が確実であることを確認する。
【0032】図2は、バスインターフェースユニット1
12とレベル2キャッシュ114とレベル1データキャ
ッシュ116の間のインターフェースについて、この
発明の接続をより詳細に示す。図2はレベル1データキ
ャッシュ116とレベル2キャッシュ114の間の接
続を示す。当業者が理解するように、この発明は図2に
示すレベル2キャッシュ114などのキャッシュを読込
み・格納ユニット140及び140に直接に接続し
た場合も有効である。この発明のこの2つの実施の形態
の唯一の違いは、レベル2キャッシュ114がデータア
クセス用の二重ポートを持つ必要があるか、読込み・格
納ユニット140及び140がレベル2キャッシュ
114への単一データポートを共用する必要があるか、
である。図2は、レベル2キャッシュ114とレベル1
命令キャッシュ116の間の接続を示していない。好
ましい実施の形態では、レベル2キャッシュ114はデ
ータキャッシュと命令キャッシュを結合したものであ
る。好ましい実施の形態では、レベル2キャッシュ11
4とレベル1命令キャッシュ116の間の接続は従来
通りである。簡単のために、これらの接続は図2に示し
ていない。
【0033】レベル2キャッシュ114は先取りキャッ
シュ書戻し論理212と、制御論理214と、タグ及び
アドレス216と、キャッシュデータ218を備える。
図2は更に書戻しバッファ220を示す。書戻しバッフ
ァ220は制御論理222と、タグ及びアドレス224
と、書戻しバッファデータ226を備える。マルチプレ
クサ230は制御論理214の制御の下に、キャッシュ
データ218または書戻しバッファデータ226からデ
ータを選択して、レベル1データキャッシュ116
書戻しバッファデータ226に供給する。
【0034】図3は、この発明に用いるキャッシュエン
トリのタグ及びアドレスフィールド216とキャッシュ
データ218の定義を示す。レベル2キャッシュ114
内の各キャッシュエントリは、一組のタグ及びアドレス
216と、対応するキャッシュエントリデータ218を
含む。図3には、従来の最も以前に用いたマーカなど、
通常用いられている他のフィールドは図示していない。
タグ及びアドレスフィールド216は書込み(WR)フ
ィールド312を含む。書込みフィールド312は好ま
しくは単一ビットから成る。この書込みフィールド31
2は、キャッシュエントリを最初に用いるときは0にリ
セットされる。対応するキャッシュエントリデータに何
か書き込むと、このフィールドは1にセットされる。制
御論理214は書込みフィールド312に対するこれら
の操作を処理する。
【0035】先取りキャッシュ書戻し論理212がキャ
ッシュエントリに作用する度に、書込みフィールド31
2は0にリセットされる。非書込みサイクル(NWcy
cle)フィールド314は好ましくは2ビットまたは
3ビットから成る。非書込みサイクルフィールド314
は対応するキャッシュエントリの書込み履歴を記憶す
る。非書込みサイクルフィールド314は先取りキャッ
シュ書戻し論理212だけにより制御される。これにつ
いては後で更に説明する。読取り再生(RRclm)フ
ィールド316は好ましくは1ビットまたは2ビットか
ら成る。読取り再生フィールド316は対応するキャッ
シュエントリの読取り再生履歴を記憶する。
【0036】読取り再生フィールド316はキャッシュ
エントリを開始するときゼロにリセットされる。対応す
るキャッシュエントリに書き込む度に、読取り再生フィ
ールド316は制御論理216によりゼロにリセットさ
れる。読取り再生フィールド316を用いるのは、後で
説明する方法で先取りキャッシュ書戻し論理212であ
る。汚れたフィールド(D)318は従来の汚れたフィ
ールドで、主メモリサブシステム105に最後に書き戻
した後で、対応するキャッシュエントリに書き込みがあ
ったかどうかを示す。この技術で知られているように、
汚れたフィールド318は全キャッシュエントリで単一
ビットか、または最小のアドレス可能なデータ語毎に1
ビットという複数ビットである。汚れたフィールド31
8は制御論理214だけにより制御されるが、用いるの
は先取りキャッシュ書戻し論理212である。汚れたフ
ィールド318は最初はゼロにリセットされる、即ち全
てゼロである。キャッシュエントリの対応する最小のア
ドレス可能なデータ語に書き込む度に、制御論理216
はその対応するビットを1にセットする。
【0037】対応するデータを主メモリサブシステム1
05に書き込むと、制御論理214は汚れたフィールド
318をゼロにリセットする、即ち全てゼロにする。ア
ドレスフィールド320は従来のキャッシュアドレスフ
ィールドである。このアドレスフィールド320の長さ
は、マイクロプロセッサが用いるアドレス長さとキャッ
シュエントリデータ218のサイズによって決まる。単
なる例であるが、マイクロプロセッサ110は32ビッ
トアドレスを用い、各アドレスは主メモリサブシステム
105内のバイトを選び、各キャッシュデータエントリ
の長さは32バイトとする。この場合は、アドレスフィ
ールド320は27ビットから成る。キャッシュエント
リデータ218は、キャッシュエントリの対応するデー
タから成る。
【0038】図4は、この発明で用いる書戻しバッファ
の、タグ及びアドレスフィールド224と書戻しバッフ
ァデータ226の定義を示す。書戻しバッファ220内
の各書戻しバッファエントリは、一組のタグ及びアドレ
ス224と、対応する書戻しバッファエントリデータ2
26を含む。先取り書戻し(P)フィールド332は好
ましくは単一ビットから成る。先取りキャッシュ書戻し
のためにレベル2キャッシュ114から書戻しバッファ
220にデータを転送すると、先取り書戻しフィールド
332は1にセットされる。通常の追出しキャッシュ書
戻しのためにレベル2キャッシュ114から書戻しバッ
ファ220にデータを転送すると、先取り書戻しフィー
ルド332は0にリセットされる。制御論理222は制
御論理214と共に先取り書戻しフィールド332を用
いて、書戻しバッファ220内の先取りキャッシュ書戻
しエントリをフラッシュするかどうか判断する。これに
ついては後で更に説明する。
【0039】また書戻しバッファエントリは1ビット以
上から成る汚れたフィールド334を含む。キャッシュ
エントリの汚れたフィールド318が複数のビットを含
んでキャッシュエントリデータ218の各部を区分する
場合は、書戻しバッファエントリは汚れたフィールド3
34としてこのフィールドの複写を必要とする。これを
用いれば、書戻しバッファ220はキャッシュエントリ
の汚れ部分だけを書き戻すことができる。最後に、タグ
及びアドレスフィールド224は、各キャッシュエント
リのアドレスフィールド320と同じ型のアドレスフィ
ールド336を更に含む。
【0040】先取りキャッシュ書戻し論理212は、レ
ベル2キャッシュ114内の各エントリに定期的に作用
する。この発明の好ましい実施の形態では、先取りキャ
ッシュ書戻し論理212は比較的まれに作用する。連続
したキャッシュエントリに対して、500から4000
命令サイクルに一度作用すれば十分と考えられる。図5
は、レベル2キャッシュ114にアクセスするキャッシ
ュエントリアクセス回路を示す。回路410は命令クロ
ックのサイクルをカウントする。カウンタ410は9な
いし12ビットから成る。9ビットで、キャッシュエン
トリ考慮の間に512命令サイクルを生じる。12ビッ
トで、キャッシュエントリ考慮の間に4096命令サイ
クルを生じる。カウンタ410はフルカウントに達する
度にオーバーフロー信号を出してラッチ412をセット
する。セットされたラッチ412は活動信号を生成す
る。更に命令クロックサイクルが入ると、カウンタ41
0はロールオーバーして、再びゼロからカウントする。
【0041】しばらくANDゲート414を無視する
と、ラッチ412の活動信号はカウンタ420のカウン
ト入力を与える。キャッシュは一般に2の整数乗のサイ
ズに作られる。カウンタ420内の最上位ビットの数
は、キャッシュエントリの数を含むのに必要なビットの
最少数に対応する。カウンタ420がカウントすると、
キャッシュエントリの番号は増分される。キャッシュエ
ントリチェック動作が完了すると、先取りキャッシュ書
戻し論理212はキャッシュエントリチェック完了信号
を出す。このキャッシュエントリチェック完了信号によ
りラッチ412はリセットされる。これにより、カウン
タ410が次にオーバーフローするとラッチ412は活
動信号を再び出力することができる。このような各サイ
クル毎に、カウンタ420は次のキャッシュエントリ番
号への操作を可能にする。これを続けて全てのキャッシ
ュエントリを考慮し終わると、カウンタ420は最初の
キャッシュエントリにロールオーバーする。
【0042】ANDゲート414に戻って、ラッチ41
2の活動信号出力はANDゲート414の非反転入力に
入る。ANDゲート414の反転入力はタグビジー信号
を受ける。ANDゲート414の出力はカウンタ420
のカウント入力を与える。先取りキャッシュ書戻し論理
212と制御論理214が同じキャッシュエントリのタ
グ及びアドレス216に同時にアクセスする可能性があ
る。制御論理214はカウンタ420のキャッシュタグ
エントリ信号より1多い番号と、現在のアドレスに一致
するキャッシュエントリの番号が一致するかどうかを検
出する。一致する場合は、制御論理214は先取りキャ
ッシュ書戻し論理212に活動タグビジー信号を送る。
反転タグビジー信号はANDゲート414を閉じて、カ
ウンタ420のカウント動作を止める。同時に、先取り
キャッシュ書戻し論理212の全ての他の動作も機能が
停止する。
【0043】制御論理214がキャッシュエントリへの
アクセスを完了してタグビジー信号を不活動にすると、
カウンタ420内のカウント動作と先取りキャッシュ書
戻し論理212の動作は再開する。タグビジーの間はラ
ッチ412はその状態を保持するので、カウント誤りは
ない。先取りキャッシュ書戻し動作は背景のタスクなの
で、このタスクは通常のキャッシュ動作を待つ。先取り
キャッシュ書戻し論理212は希に動作するだけなの
で、ときどきこのような機能停止が起こっても先取りキ
ャッシュ書戻し動作に悪影響を与えることはない。必要
なキャッシュタグを二重ポートメモリにして、同時にア
クセスできるようにすることは可能であるが、衝突が起
こるのは希であり、先取りキャッシュ書戻し動作がせい
ぜい数命令サイクルの間機能を停止するのは些細なこと
なので、これらのキャッシュタグを二重ポートにするた
めに回路を追加する必要はない。
【0044】図6は、先取りキャッシュ書戻し論理21
2の動作部の構造を示す。先取りキャッシュ書声し論理
212は、マルチプレクサ501と、加算器502と、
マルチプレクサ503と、一致回路504と、ANDゲ
ート505と、ORゲート506と、ANDゲート50
7と、マルチプレクサ508と、加算器509と、一致
回路510と、010データレジスタ511を備える。
カウンタ420のキャッシュエントリ番号出力により考
慮すべきキャッシュエントリを選択すると、データフィ
ールド書込み312と、非書込みサイクルフィールド3
14と、読取り再生フィールド316が呼び出されて、
先取りキャッシュ書戻し論理212に与えられる。また
先取りキャッシュ書戻し論理212は、制御論理214
を経て制御論理222から書戻しバッファヒット信号を
受け、また制御論理214を経てレベル1データキャッ
シュ116から読取り/非書込み信号を受ける。
【0045】先取りキャッシュ書戻し論理212は非書
込みフィールド314と読取り再生フィールド316の
新しい値を計算して、対応するキャッシュエントリに記
憶する。また先取りキャッシュ書戻し論理212は書戻
しバッファエントリフラッシュ信号を生成し、制御論理
214はこれを書戻しバッファ220に与える。先取り
キャッシュ書戻し論理212がキャッシュエントリを考
慮する度に、書込みフィールド312は必ず0にリセッ
ト、される。簡単のために、この機能を実行する回路は
示していない。また図6に示す回路は、キャッシュエン
トリの通常の考慮で、また書戻しバッファヒットの後の
キャッシュエントリの考慮で動作する。
【0046】マルチプレクサ501は書込みフィールド
312(WR)により制御される。書込みフィールドが
1の場合は最後のサイクルの後にキャッシュエントリに
書き込みがあったことを示し、マルチプレクサ501は
その−1データ入力を選択する。書込みフィールドが0
の場合は最後のサイクルの後にキャッシュエントリに書
き込みがなかったことを示し、マルチプレクサ501は
その+1データ入力を選択する。マルチプレクサ501
は加算器502に1入力を与える。加算器502の第2
入力は呼び出された非書込みサイクルフィールド314
(NWcycle)の値を受ける。非書込みサイクルフ
ィールド314は好ましくは2ビットまたは3ビットで
あった。加算器502は対応するビット数の和を作る。
加算器502の最小出力は0である。したがって、複数
の連続した書込みサイクルがあっても非書込みサイクル
フィールド314を0以下に減分することはできない。
これを飽和引き算操作という。加算器502はその和出
力をマルチプレクサ503の1入力に与える。マルチプ
レクサ503は一般にこの入力を選択して、対応するキ
ャッシュエントリの非書込みサイクルフィールド314
に記憶する。したがって一般に非書込みフィールド31
4は、前のサイクル中にキャッシュエントリに書き込み
がなかった場合は増分され、前のサイクル中にキャッシ
ュエントリに書き込みがあった場合は減分される。
【0047】一致回路504は、非書込みサイクルフィ
ールド314が所定量を越えたことを検出する。これ
は、最近の非書込みサイクル数が最近の書込みサイクル
数を所定量だけ越えたときに起こる。好ましい実施の形
態では、一致回路504は加算器502のオーバーフロ
ー条件を検出する。これは和が7(2進の111)を越
えたことを示す。または、一致回路504は加算器50
2の和出力が特定の数になるとトリガされる。一致回路
504はこの条件を検出すると先取りキャッシュ書戻し
信号を出す。この信号は、対応するキャッシュエントリ
のアドレスとデータを書戻しバッファ220に複写する
よう制御論理214に指示する。制御論理214は、先
取り書戻しフィールド332(P)を1にセットするよ
う制御論理222に指示する。これにより書込みバッフ
ァ220は、先取り書戻しの場合に通常のキャッシュラ
イン追出し書戻しの場合とは異なる方法で書戻しバッフ
ァヒットを処理する。
【0048】書込みバッファ220の先入れ先出しが起
こると、キャッシュエントリは一般にバスインターフェ
ースユニット112を経て主メモリサブシステム105
に書き込まれる。この技術で知られているように、各書
戻しバッファエントリ内のデータの量は、バスインター
フェースユニット112と主メモリサブシステム105
へのバスBの間のデータ幅の倍数である。バスインター
フェースユニット112は、このデータ幅の差を通常の
方法で補償するのに必要な、読取りと書込みのバッファ
リングとシーケンシングを行う。制御論理214は、書
戻しバッファ220に複写すると対応するキャッシュエ
ントリに汚れたフィールド318(D)を経てきれいと
印すか、または主メモリサプシステム105に実際に書
き込むまで待つ。
【0049】先取りキャッシュ書戻し論理212は、A
NDゲート505とORゲート506を経て書戻しバッ
ファエントリフラッシュ信号を出す。制御論理222か
らの書戻しバッファヒット信号は、制御論理214を経
てANDゲート505の非反転入力に入る。ANDゲー
ト505の反転入力は、制御論理214から読取り/非
書込み信号(R/Wバー)を受ける。ANDゲート50
5はORゲート506に1入力を与える。このようにA
NDゲート505とORゲート506は、レベル1デー
タキャッシュ116が書込みを要求したときに書戻し
バッファヒットを検出すると、活動的な書戻しバッファ
エントリフラッシュ信号を生成する。前に述べたよう
に、書込みの際に書戻しバッファ220でヒットするこ
とは、書戻しバッファエントリは主メモリサブシステム
105に書き込んではいけない間違ったデータを保持し
ていることを意味する。したがってこの書戻しエントリ
をフラッシュして、主メモリサブシステム105に書き
込まないようにしなければならない。
【0050】書戻しバッファ220は先取り書戻しエン
トリでヒットしたときそのエントリをフラッシュしてよ
い。それは、このデータがレベル2キャッシュ114に
まだ記憶されているからである。この状態はPフィール
ド332に示される。したがって、キャッシュエントリ
は書戻しバッファ220内にもあるが、レベル2キャッ
シュ114は通常はメモリアクセスに応じる。書戻しバ
ッファヒットが追い出されたキャッシュエントリに対応
する通常の書戻しで起こる場合は、何かの処理を続ける
前にこのデータをレベル2キャッシュ114に戻さなけ
ればならない。追出しの場合は、レベル2キャッシュ1
14にはもうこのデータは記憶されていない。制御論理
214は戻った書戻しバッファエントリを記憶し、他の
キャッシュエントリを識別して置き換えすなわち追い出
さなければならない。この処理はこの技術では知られて
いるので、更に説明する必要はない。
【0051】ANDゲート507も書戻しバッファヒッ
ト信号と読取り/非書込み信号を受ける。この両信号は
非反転入力に入る。ANDゲート507は、レベル1デ
ータキャッシュが読取り要求をしたときに書戻しバッフ
ァヒット信号を受けると活動信号を生成する。対応する
書戻しバッファエントリは、読取り再生の数に従ってフ
ラッシュされる。
【0052】ANDゲート507の出力はマルチプレク
サ508の選択を制御する。読取りアクセス中に書戻し
バッファヒットを受けたことを示す活動出力をANDゲ
ート507が出した場合は、マルチプレクサ508はそ
の+1入力信号を選択する。さもなければ、マルチプレ
クサ508はその0入力信号を選択する。マルチプレク
サ508は加算器509に1入力を与える。加算器50
9の第2入力は呼び出された読取り再生フィールド31
6(RRclm)の値を受ける。読取り再生フィールド
316は好ましくは1ビットまたは2ビットであった。
加算器509は対応するビット数の和を作る。この和
を、対応するキャッシュエントリの読取り再生フィール
ド316に記憶する。マルチプレクサ508は一般にそ
の0入力を選択するので、この和は一般に読取り再生フ
ィールド316を変えない。
【0053】一致回路510は、読取り再生フィールド
316が所定量を越えたことを検出する。これは、書戻
しバッファ220からのキャッシュエントリの読取り再
生の数が所定量を超えたときに起こる。好ましい実施の
形態では、一致回路510は加算器509のオーバーフ
ロー条件を検出する。これは和が3(2進の11)を越
えたことを示す。または、一致回路510は、加算器5
09の和出力が特定の数になるとトリガされる。一致回
路510はこの条件を検出すると活動出力信号を出す。
この信号はORゲート506の反転入力を与える。した
がってORゲート506は、一致回路510がこの条件
を検出しない限り、読取りヒットのとき書戻しバッファ
エントリフラッシュ信号を生成する。これにより、デー
タの読取り再生は書戻しバッファに所定の回数複写する
ことができる。
【0054】この数が越えたことを一致回路510が検
出すると、読み込んだときに書戻しバッファエントリは
フラッシュされず、バスインターフェース112を経て
主メモリサブシステム105に書き込むことができる。
キャッシュエントリに何か書き込まれると、読取り再生
フィールド316は0にリセットされる。したがって読
取り再生フィールド316は、間に書込みがなくて複数
の読取りを行ったときだけ限界に達する。この場合は、
マイクロプロセッサ110からこのアドレスへの書込み
が終わったと仮定して、キャッシュエントリを書き戻す
のがよい。
【0055】また一致回路510はマルチプレクサ50
3の選択を制御する。通常は一致回路510はマルチプ
レクサ503を制御して、加算器502の和出力を選択
する。一致回路510が活動信号を出すと、マルチプレ
クサ503は入力を010レジスタ511から選択す
る。これにより、書戻しバッファ220から読取り再生
を行う度に非書込みサイクルカウントを2(2進の01
0)にプリセットする。したがって、読取り再生の後で
先取りキャッシュ書戻しを生成するのに必要な読取りサ
イクルは少なくてすむ。
【0056】図7は、自動プロセッサすなわち状熊機械
の形の先取りキャッシュ書戻し論理212によりこの発
明を実現するプロセスのステップを、フローチャート形
式で示す。図7に示すプロセス700は、書戻しバッフ
ァ220がヒットを生成するかどうか検出することから
始まる(決定ブロック701)。これが真でない場合
は、プロセス700は、カウンタが次のカウントに達し
たかどうか判断する(決定ブロック702)。これが真
でない場合は、プロセス700は決定ブロック701に
戻る。どれかが満たされるまで、このプロセスはこれら
のステップを繰り返す。
【0057】次のカウントを検出すると、プロセス70
0は、考慮する次のキャッシュエントリのタグがビジー
かどうか判断する(決定ブロック703)。通常のキャ
ッシュプロセスでキャッシュエントリにアクセスすると
き、これがときどき起こる。プロセス700は、キャッ
シュタグがビジーでなくなるまで決定ブロック703の
試験を繰り返す。先取りキャッシュ書戻しは背景のプロ
セスなので、他の優先度の高いプロセスとの衝突がなく
なるまで待つ。プロセス700はアクセスされたキャッ
シュエントリのキャッシュタグを呼び出す(処理ブロッ
ク704)。これらのキャッシュタグは、図3に示した
書込み(WR)フィールド312と、非書込みサイクル
(NWcycle)フィールド314と、読取り再生
(RRclm)フィールド316と、汚れたフィールド
(D)318を含む。
【0058】次にプロセス700は、アクセスされたキ
ャッシュエントリが汚れているかどうか判断する(決定
ブロック705)。きれいなキャッシュエントリであれ
ば先取りキャッシュ書戻しを行う必要はない。したがっ
て、キャッシュエントリが汚れていない場合はプロセス
700は決定ブロック701に戻る。キャッシュエント
リが汚れている場合は、プロセス700は書込みフィー
ルド312が1かどうか判断する(決定ブロック70
6)。書込みフィールド312が1の場合は、プロセス
700は非書込みサイクルフィールド314を減分する
(処理ブロック707)。前に述べたようにこれは飽和
減算なので、非書込みサイクルフィールド314は0よ
り小さい値を持つことはできない。次にプロセス700
は書込みフィールド312を0にリセットする(処理ブ
ロック708)。これら両フィールドの新しい値を、考
慮中のキャッシュエントリの対応するキャッシュタグに
記憶する。次にプロセス700は決定ブロック701に
戻り、書戻しバッファヒットか(決定ブロック701)
または次のカウントに達する(決定ブロック702)ま
でループを回る。
【0059】書込みフィールド312が0の場合は、プ
ロセス700は非書込みサイクルフィールド314を増
分する(処理ブロック709)。プロセス700は、増
分されたカウントが所定数を越えたかどうか試験する
(決定ブロック710)。増分されたカウントが所定数
を越えていない場合は、プロセス700は決定ブロック
701に戻り、書戻しバッファヒットか(決定ブロック
701)または次のカウントに達する(決定ブロック7
02)までループを回る。増分されたカウントが所定数
を越えた場合は、プロセス700はそのキャッシュエン
トリの先取りキャッシュ書戻しを開始する(処理ブロッ
ク711)。次にプロセス700は決定ブロック701
に戻り、書戻しバッファヒットか(決定ブロック70
1)または次のカウントに達する(決定ブロック70
2)までループを回る。
【0060】書戻し場合ヒットを検出すると(決定ブロ
ック701)、プロセス700はPフィールド332を
チェックする(決定ブロック712)。前に述べたよう
にPフィールド332は先取りキャッシュ書戻しでは1
に、通常のキャッシュ追出し書戻しでは0にセットされ
る。書込みバッファヒットが通常のキャッシュ追出し書
戻しエントリで起こった場合は、プロセス700はルー
プの最初の決定ブロック701及び702に戻る。書込
みバッファヒットが先取り書戻しバッファエントリで起
こった場合は、プロセス700はメモリアクセスが書込
みかどうか判断する(決定ブロック713)。書戻しバ
ッファヒットを生成したメモリアクセスが書込みの場合
は、プロセス700は書込みフィールド312を1にセ
ットし(処理ブロック714)、非書込みサイクルフィ
ールド314を減分する(処理ブロック715)。その
後で書戻しバッファエントリをフラッシュする(処理ブ
ロック716)。これは先取り書戻しバッファエントリ
なので、対応するデータはまだレベル2キャッシュ11
4に記憶されている。したがって書戻しバッファ220
はこのデータをキャッシュにまた複写する必要はない。
実際、通常はレベル2キャッシュ114は書込みメモリ
アクセスを行い、書戻しバッファ220はこのエントリ
をフラッシュする。書戻しバッファエントリをフラッシ
ュすると、プロセス700はループの初めに戻る。
【0061】書戻しバッファヒットを生成するメモリア
クセスが読取りの場合は、プロセス700は読取り再生
フィールド316を増分する(処理ブロック717)。
次にプロセス700は読取り再生フィールド316が所
定数を越えたかどうか判断する(決定ブロック71
8)。越えた場合は、書戻しバッファエントリをフラッ
シュせず、プロセス700はループの初めに戻る。読取
り再生フィールド316が所定数を越えていない場合
は、プロセス700は書込みフィールド312を0にセ
ットし(処理ブロック719)、非書込みサイクルフィ
ールド314を010にセットする(処理ブロック71
5)。その後で書戻しバッファエントリをフラッシュす
る(処理ブロック716)。書戻しバッファエントリを
フラッシュすると、プロセス700はループの初めに戻
る。
【0062】図8は、別の実施の形態の先取りキャッシ
ュ書戻し論理212の操作部の構造を示す。この別の実
施の形態では、キャッシュエントリに書き込むと非書き
サイクルフィールド314を0にリセットし、書戻しバ
ッファ220からの読取り再生は支援されない。先取り
キャッシュ書戻し論理212は、マルチプレクサ511
と、加算器502と、マルチプレクサ513と、一致回
路504と、ANDゲート515を備える。
【0063】考慮するキャッシュエントリをカウンタ4
20のキャッシュエントリ番号出力により選択すると、
データフィールド書込み312と非書込みサイクルフィ
ールド314を呼び出して、先取りキャッシュ書戻し論
理212に与える。この別の実施の形態では、読取り再
生フィールド316は支援されない。また先取りキャッ
シュ書戻し論理212は制御論理214を経て制御論理
222から書戻しバッファヒット信号を受け、また制御
論理214を経てレベル1データキャッシュ116
ら読取り/非書込み信号を受ける。先取りキャッシュ書
戻し論理212は非書込みフィールド314の新しい値
を計算し、これを対応するキャッシュエントリに記憶す
る。また先取りキャッシュ書戻し論理212は書戻しバ
ッファエントリフラッシュ信号を生成し、制御論理21
4はこれを書戻しバッファ220に与える。
【0064】マルチプレクサ511は書込みフィールド
312(WR)により制御される。書込みフィールドが
1、即ち最後のサイクルの後にキャッシュエントリに書
込みがあった場合は、マルチプレクサ511はその0デ
ータ入力を選択する。書込みフィールドが0、即ち最後
のサイクルの後にキャッシュエントリに書込みがなかっ
た場合は、マルチプレクサ511はその+1データ入力
を選択する。マルチプレクサ511は加算器502に1
入力を与える。加算器502の第2入力は呼び出された
非書込みサイクルフィールド314(NWcycle)
の値を受ける。加算器502はその和出力をマルチプレ
クサ513の1入力に与える。書込みフィールド312
が0の場合は、マルチプレクサ513は一般にこの和入
力を選択する。書込みフィールド312が1の場合は、
マルチプレクサ513はその0入力を選択する。したが
って書込みフィールド312は、前のサイクルで書込み
がなかった場合は増分され、少なくとも一度書込みがあ
った場合は0にリセットされる。
【0065】一致回路504は、非書込みサイクルフィ
ールド314が所定量を超えたことを検出する。これが
起こるのは、連続した非書込みサイクルの数が所定量を
超えたときである。一致回路504は、この条件を検出
すると先取りキャッシュ書戻し信号を生成する。これは
前に説明した通りである。
【0066】先取りキャッシュ書戻し論理212はAN
Dゲート515を経て書戻しバッファエントリフラッシ
ュ信号を出す。制御論理222からの書戻しバッファヒ
ット信号は制御論理214を経てANDゲート515の
非反転入力に入る。ANDゲート515の反転入力は、
制御論理214から読取り/非書込み信号(R/Wバ
ー)を受ける。ANDゲート515は、レベル1データ
キャッシュ116が書込みを要求したときに書戻しバ
ッファヒットを検出すると、活動的な書戻しバッファエ
ントリフラッシュ信号を出す。
【0067】以上の説明に関して更に以下の項を開示す
る。 (1) 内部キャッシュを有するマイクロプロセッサ内
の先取りキャッシュ書戻しの方法であって、所定の時間
間隔毎に一度各キャッシュエントリを調べて、前記キャ
ッシュエントリが汚れているか、即ち前記キャッシュエ
ントリを主メモリに最後に書き込んだ後に前記キャッシ
ュエントリに書込みがあったか、を判断し、あるキャッ
シュエントリが汚れていると決定した場合は、前記汚れ
たキャッシュエントリの書込み履歴を調べて、前記汚れ
たキャッシュエントリが新しくないか、即ち近い将来に
書込みの可能性がないか、を判断し、前記汚れたキャッ
シュエントリが新しくない場合は、前記汚れたキャッシ
ュエントリを主メモリに書き込み、前記汚れたキャッシ
ュエントリにきれい、即ち前記キャッシュエントリを最
後に主メモリに書き込んだ後に前記キャッシュエントリ
に書込みがなかった、と印す、ステップを含む、マイク
ロプロセッサ内の先取りキャッシュ書戻しの方法。
【0068】(2) 前記書込み履歴を調べて前記汚れ
たキャッシュエントリが新しくないかどうか判断する前
記ステップは、前記汚れたキャッシュエントリに書込み
がなかった、連続した所定の時間間隔をカウントし、前
記カウントが所定数を越えた場合は前記汚れたキャッシ
ュエントリが新しくないと決定する、ことを含む、第1
項記載のマイクロプロセッサ内の先取りキャッシュ書戻
しの方法。
【0069】(3) 前記書込み履歴を調べて前記汚れ
たキャッシュエントリが新しくないかどうか判断する前
記ステップは、キャッシュエントリの開始の度に対応す
る非書込みカウントをゼロにセットし、前記キャッシュ
エントリに書き込む度に前記キャッシュエントリに対応
する書込みビットをセットし、書込み履歴を調べる度
に、前記対応する書込みビットがセットされていない場
合は前記非書込みカウントを増分し、前記対応する書込
みビットがセットされかつその後前記対応する書込みビ
ットがリセットされた場合は前記非書込みカウントを減
分し、前記非書込みカウントが所定数を越えた場合は前
記汚れたキャッシュエントリが新しくないと決定する、
ことを含む、第1項記載のマイクロプロセッサ内の先取
りキャッシュ書戻しの方法。
【0070】(4) 前記書込み履歴を調べて前記汚れ
たキャッシュエントリが新しくないかどうか判断する前
記ステップは、キャッシュエントリの開始の度に対応す
る非書込みカウントをゼロにセットし、前記キャッシュ
エントリに書き込む度に前記キャッシュエントリに対応
する書込みビットをセットし、書込み履歴を調べる度
に、前記対応する書込みビットがセットされていない場
合は前記非書込みカウントを増分し、前記対応する書込
みビットがセットされかつその後前記対応する書込みビ
ットがリセットされた場合は前記非書込みカウントをゼ
ロにリセットし、前記非書込みカウントが所定数を越え
た場合は前記汚れたキャッシュエントリが新しくないと
決定する、ことを含む、第1項記載のマイクロプロセッ
サ内の先取りキャッシュ書戻しの方法。
【0071】(5) 前記汚れたキャッシュエントリを
主メモリに書き込む前記ステップは、前記汚れたキャッ
シュエントリとその対応するアドレスを先入れ先出し書
戻しバッファの第1エントリに書き込み、主メモリが書
込みを受けることが可能なときはいつでも前記書戻しバ
ッファの最終エントリを前記主メモリに書き込む、こと
を含む、第1項記載のマイクロプロセッサ内の先取りキ
ャッシュ書戻しの方法。
【0072】(6) 前記汚れたキャッシュエントリに
きれいと印す前記ステップは、前記汚れたキャッシュエ
ントリとその対応するアドレスを前記書戻しバッファに
書き込むと、前記汚れたキャッシュエントリにきれいと
印すことを含む、第5項記載のマイクロプロセッサ内の
先取りキャッシュ書戻しの方法。 (7) 前記汚れたキャッシュエントリにきれいと印す
前記ステップは、前記書戻しバッファが前記汚れたキャ
ッシュエントリを前記主メモリに書き込むと、前記汚れ
たキャッシュエントリにきれいと印すことを含む、第5
項記載のマイクロプロセッサ内の先取りキャッシュ書戻
しの方法。
【0073】(8) キャッシュエントリの開始のとき
及び前記キャッシュエントリに書き込む度に、前記各キ
ャッシュエントリに対応する読取り再生カウントをセッ
トし、前記キャッシュからの各読取りの読取りアドレス
と前記書戻しバッファ内の各エントリの対応するアドレ
スとを比較し、前記読取りアドレスが前記書戻しバッフ
ァ内の任意のエントリの対応するアドレスと一致する場
合は、前記読取り再生カウントを増分し、前記読取り再
生カウントが第2の所定数を越えたかどうかを調べて判
断し、前記読取り再生カウントが前記第2の所定数を越
えていない場合に限り、前記一致するエントリを前記書
戻しバッファからフラッシュする、ことを更に含む、第
5項記載のマイクロプロセッサ内の先取りキャッシュ書
戻しの方法。
【0074】(9) 所定の時間間隔毎に一度各キャッ
シュエントリを調べる前記ステップは、所定の時間間隔
毎に一度前記マイクロプロセッサの動作を停止し、その
後に全てのキャッシュエントリを連続的に調べ、その後
に前記マイクロプロセッサの動作を再開する、ことを含
む、第1項記載のマイクロプロセッサ内の先取りキャッ
シュ書戻しの方法。
【0075】(10) 所定の時間間隔毎に一度各キャ
ッシュエントリを調べる前記ステップは、前記マイクロ
プロセッサの各命令サイクルをカウントし、所定数の命
令サイクルをカウントする度に次の連続したキャッシュ
エントリを調べ、前記所定数の命令は前記所定の時間間
隔内に調べるために各キャッシュエントリをキャッシュ
エントリ数に関して選択する、ことを含む、第1項記載
のマイクロプロセッサ内の先取りキャッシュ書戻しの方
法。
【0076】(11) マイクロプロセッサであって、
複数のキャッシュエントリを有する内部キャッシュメモ
リであって、各キャッシュエントリは、キャッシュデー
タと、前記キャッシュデータが主メモリ内に記憶されて
いる場所を示すアドレスフィールドと、前記キャッシュ
データを最後に前記主メモリに書き込んだ後に前記キャ
ッシュデータの対応する部分に書込みがあったことを示
す、少なくとも1個の汚れたビットと、前記キャッシュ
エントリに書込みがあったことを示す書込みビットと、
複数のビットの非書込みサイクルフィールド、を備え
る、内部キャッシュメモリと、前記キャッシュメモリに
接続する先取りキャッシュ書戻し論理であって、各キャ
ッシュエントリの前記少なくとも1個の汚れたビット
と、前記書込みビットと、前記非書込みサイクルフィー
ルドに所定のシーケンスでアクセスするキャッシュエン
トリアクセス回路と、前記キャッシュデータの任意の対
応する部分が汚れていることを前記少なくとも1個の汚
れたビットが示す場合に動作する加算器であって、前記
アクセスされたキャッシュエントリの前記非書込みサイ
クルフィールドを受ける第1入力と、前記書込みビット
がセットされている場合は+1入力を受ける第2入力
と、前記第1入力と第2入力の和を作り、前記アクセス
されたキャッシュエントリの前記非書込みサイクルフィ
ールドを前記和で置換する出力、を備える加算器と、前
記加算器に接続して前記和が所定数を越えたかどうかを
示す一致回路、を備える先取りキャッシュ書戻し論理
と、前記和が前記所定数を越えたことを前記一致回路が
示す場合は、前記アクセスされたキャッシュエントリの
前記少なくとも1個の汚れたビットにより汚れていると
示された前記キャッシュデータの少なくとも前記部分
を、前記アクセスされたキャッシュエントリの前記アド
レスフィールドに対応するアドレスで前記主メモリに書
き込む、書戻し手段、を備えるマイクロプロセッサ。
【0077】(12) 前記先取りキャッシュ書戻し回
路は、+1を受ける第1入力と、−1を受ける第2入力
と、前記書込みビットを受ける制御入力と、前記加算器
の前記第2入力に接続する出力を備えるマルチプレクサ
であって、前記書込みビットがセットされている場合は
前記第1入力に前記−1を選択し、前記書込みビットが
セットされていない場合は前記第2入力に前記+1を選
択する、マルチプレクサ、を更に備える、第11項記載
のマイクロプロセッサ。
【0078】(13) 前記先取りキャッシュ書戻し回
路は、+1を受ける第1入力と、0を受ける第2入力
と、前記書込みビットを受ける制御入力と、前記加算器
の前記第2入力に接続する出力を備える第1マルチプレ
クサであって、前記書込みビットがセットされている場
合は前記第1入力に前記+1を選択し、前記書込みビッ
トがセットされていない場合は前記第2入力に前記0を
選択する、第1マルチプレクサと、前記加算器の前記和
を受ける第1入力と、0を受ける第2入力と、前記書込
みビットを受ける制御入力と、前記アクセスキャッシュ
エントリの前記非書込みサイクルフィールドを置換する
出力を備える第2マルチプレクサであって、前記書込み
ビットがセットされている場合は前記第1入力に前記0
を選択し、前記書込みビットがセットされていない場合
は前記第2入力に前記加算器の前記和を選択する、第2
マルチプレクサ、を更に備える、第11項記載のマイク
ロプロセッサ。
【0079】(14) 前記主メモリに書き込むキャッ
シュエントリデータと前記対応するアドレスを受ける入
力と、前記主メモリが書込みを受けることが可能なとき
はいつでも前記主メモリに書き込む出力を備える、先入
れ先出し書戻しバッファ、を更に備える、第11項記載
のマイクロプロセッサ。 (15) 前記キャッシュエントリとその対応するアド
レスを前記書戻しバッファに書き込むと、前記先取りキ
ャッシュ書戻し論理は前記キャッシュエントリにきれい
と印す、第14項記載のマイクロプロセッサ。 (16) 対応する書戻しバッファエントリを前記書戻
しバッファが前記主メモリに書き込むと、前記先取りキ
ャッシュ書戻し論理は前記キャッシュエントリにきれい
と印す、第14項記載のマイクロプロセッサ。
【0080】(17) 前記キャッシュエントリは、前
記キャッシュエントリの初期設定のとき及び前記キャッ
シュエントリへの書込みの度に、ゼロにセットされる読
取り再生フィールドを更に含み、前記書戻しバッファ
は、先取り書戻しのためのキャッシュエントリとその対
応するアドレスを複写するとセットされ、キャッシュエ
ントリ追出しのためのキャッシュエントリとその対応す
るアドレスを複写するとリセットされる、先取り書戻し
ビットを含み、各メモリ読取りの読取りアドレスと前記
書戻しバッファ内の各エントリの前記対応するアドレス
とを比較し、前記先取りキャッシュ書戻し論理は、0を
受ける第1入力と、+1を受ける第2入力と、前記書戻
しバッファに接続する制御入力を備える第2マルチプレ
クサであって、前記読取りアドレスと、その先取り書戻
しビットがセットされている書戻しバッファの任意の対
応するアドレスとの一致を前記書戻しバッファが検出し
なかった場合は前記第1入力に前記0を選択し、前記読
取りアドレスと、書戻しバッファの任意の対応するアド
レスとの一致を前記書戻しバッファが検出した場合は前
記第2入力に前記+1を選択する、第2マルチプレクサ
と、前記アクセスされたキャッシュエントリの前記読取
り再生フィールドを受ける第1入力と、前記第2マルチ
プレクサの前記出力に接続する第2入力と、前記第1入
力と第2入力の第2の和を作り、前記アクセスされたキ
ャッシュエントリの前記読取り再生フィールドを前記第
2の和で置換する出力、を備える第2加算器と、前記第
2加算器に接続して、前記第2の和が第2の所定数を越
えたかどうかを示す、第2一致回路、を備え、前記書戻
しバッファは、前記第2の和が前記第2の所定数を越え
たことを前記第2一致回路が示した場合は前記書戻しバ
ッファから前記一致するエントリをフラッシュする、第
14項記載のマイクロプロセッサ。
【0081】(18) 前記キャッシュエントリアクセ
ス回路は、所定数のビットと、命令クロックを受けて命
令サイクルをカウントするカウント入力と、フルカウン
トに達するとオーバーフロー信号を生成する出力、を有
する第1カウンタと、前記第1カウンタの前記オーバー
フロー信号を受けるカウント入力と、カウントを出力し
て対応するキャッシュエントリにアクセスする出力、を
有する第2カウンタ、を備える、第11項記載のマイク
ロプロセッサ。
【0082】(19) 内部キャッシュの汚れたエント
リを先取りして書き戻すマイクロプロセッサを提供す
る。各キャッシュエントリを所定の時間間隔に一度調べ
て、キャッシュエントリが汚れているかどうか判断する
(705)。汚れている場合は、書込み履歴を調べてキ
ャッシュエントリが新しくないかどうか判断する(70
6)。新しくない場合は、キャッシュエントリを先取り
して主メモリに書き戻し、きれいと印す(711)。書
込み履歴は、キャッシュエントリに書込みがなかった期
間の連続した所定の時間間隔の数のカウントを含む。カ
ウントが所定数を越えた場合はキャッシュエントリは新
しくない(710)。書込み履歴を調べる度に、非書込
みカウントを、前のサイクル中にキャッシュエントリに
書込みがあった場合は増分し(709)、なかった場合
は減分する(707)。または、キャッシュエントリに
書込みがあった場合は非書込みカウントをゼロにセット
する。書戻しバッファに複写すると、または書戻しバッ
ファが汚れたキャッシュエントリを主メモリに書き込む
と、汚れたキャッシュエントリにきれいと印す。書込み
アドレスが書戻しバッファエントリのアドレスのどれか
と一致する場合は、一致するエントリを書戻しバッファ
からフラッシュする。
【図面の簡単な説明】
この発明の各態様を以下の図面に示す。
【図1】この発明のマイクロプロセッサの全体構造を示
すブロック図。
【図2】この発明のバスインターフェースユニットと、
データキャッシュと、低レベルデータキャッシュと、書
戻しバッファの間の関係を示すブロック図。
【図3】この発明の好ましい実施の形熊のキャッシュエ
ントリビットの定義を示す図。
【図4】この発明の好ましい実施の形態の書戻しバッフ
ァビットの定義を示す図。
【図5】この発明の先取りキャッシュ書戻し論理の好ま
しい実施の形態のタイミング部の構造を示す図。
【図6】この発明の先取りキャッシュ書戻し論理のタグ
処理部の好ましい実施の形態の構造を示す図。
【図7】この発明の先取りキャッシュ書戻し論理の好ま
しい実施の形態の動作を示す流れ図。
【図8】この発明の先取りキャッシュ書戻し論理のタグ
処理部の、別の好ましい実施の形態の構造を示す図。
【符号の説明】
110 マイクロプロセッサ 112 バスインターフェースユニット 114 レベル2キャッシュ 116 レベル1命令キャッシュ 116 レベル1データキャッシュ 212 先取りキャッシュ書戻し論理 220 書戻しバッファ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】内部キャッシュを有するマイクロプロセッ
    サ内の先取りキャッシュ書戻しの方法であって、 所定の時間間隔毎に一度各キャッシュエントリを調べ
    て、前記キャッシュエントリが汚れているか、即ち前記
    キャッシュエントリを主メモリに最後に書き込んだ後に
    前記キャッシュエントリに書込みがあったか、を判断
    し、 あるキャッシュエントリが汚れていると決定した場合
    は、前記汚れたキャッシュエントリの書込み履歴を調べ
    て、前記汚れたキャッシュエントリが新しくないか、即
    ち近い将来に書込みの可能性がないか、を判断し、 前記汚れたキャッシュエントリが新しくない場合は、前
    記汚れたキャッシュエントリを主メモリに書き込み、前
    記汚れたキャッシュエントリにきれい、即ち前記キャッ
    シュエントリを最後に主メモリに書き込んだ後に前記キ
    ャッシュエントリに書込みがなかった、と印す、ステッ
    プを含む、マイクロプロセッサ内の先取りキャッシュ書
    戻しの方法。
  2. 【請求項2】マイクロプロセッサであって、 複数のキャッシュエントリを有する内部キャッシュメモ
    リであって、各キャッシュエントリは、 キャッシュデータと、 前記キャッシュデータが主メモリ内に記憶されている場
    所を示すアドレスフィールドと、 前記キャッシュデータを最後に前記主メモリに書き込ん
    だ後に前記キャッシュデータの対応する部分に書込みが
    あったことを示す、少なくとも1個の汚れたビットと、 前記キャッシュエントリに書込みがあったことを示す書
    込みビットと、 複数のビットの非書込みサイクルフィールド、 を備える、内部キャッシュメモリと、 前記キャッシュメモリに接続する先取りキャッシュ書戻
    し論理であって、 各キャッシュエントリの前記少なくとも1個の汚れたビ
    ットと、前記書込みビットと、前記非書込みサイクルフ
    ィールドに所定のシーケンスでアクセスするキャッシュ
    エントリアクセス回路と、 前記キャッシュデータの任意の対応する部分が汚れてい
    ることを前記少なくとも1個の汚れたビットが示す場合
    に動作する加算器であって、前記アクセスされたキャッ
    シュエントリの前記非書込みサイクルフィールドを受け
    る第1入力と、前記書込みビットがセットされている場
    合は+1入力を受ける第2入力と、前記第1入力と第2
    入力の和を作り、前記アクセスされたキャッシュエント
    リの前記非書込みサイクルフィールドを前記和で置換す
    る出力、を備える加算器と、 前記加算器に接続して前記和が所定数を越えたかどうか
    を示す一致回路、を備える先取りキャッシュ書戻し論理
    と、 前記和が前記所定数を越えたことを前記一致回路が示す
    場合は、前記アクセスされたキャッシュエントリの前記
    少なくとも1個の汚れたビットにより汚れていると示さ
    れた前記キャッシュデータの少なくとも前記部分を、前
    記アクセスされたキャッシュエントリの前記アドレスフ
    ィールドに対応するアドレスで前記主メモリに書き込
    む、書戻し手段、を備えるマイクロプロセッサ。
JP9370165A 1996-12-20 1997-12-22 先取りキャッシュ書戻しの方法と装置 Ceased JPH10232827A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US3354496P 1996-12-20 1996-12-20
US033544 1996-12-20

Publications (1)

Publication Number Publication Date
JPH10232827A true JPH10232827A (ja) 1998-09-02

Family

ID=21871028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9370165A Ceased JPH10232827A (ja) 1996-12-20 1997-12-22 先取りキャッシュ書戻しの方法と装置

Country Status (4)

Country Link
US (1) US6134634A (ja)
EP (1) EP0854428B1 (ja)
JP (1) JPH10232827A (ja)
DE (1) DE69721961T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007234225A (ja) * 2001-04-26 2007-09-13 Internatl Business Mach Corp <Ibm> ダイナミック・ランダム・アクセス・メモリの破壊読出アーキテクチャ
JP2010134584A (ja) * 2008-12-03 2010-06-17 Nec Corp メモリ管理装置、メモリ管理方法およびプログラム
JP2013065150A (ja) * 2011-09-16 2013-04-11 Toshiba Corp キャッシュメモリ装置、プロセッサ、および情報処理装置

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014759A (en) * 1997-06-13 2000-01-11 Micron Technology, Inc. Method and apparatus for transferring test data from a memory array
US6044429A (en) * 1997-07-10 2000-03-28 Micron Technology, Inc. Method and apparatus for collision-free data transfers in a memory device with selectable data or address paths
GB9806184D0 (en) * 1998-03-23 1998-05-20 Sgs Thomson Microelectronics A cache coherency mechanism
US6601151B1 (en) * 1999-02-08 2003-07-29 Sun Microsystems, Inc. Apparatus and method for handling memory access requests in a data processing system
US6574710B1 (en) * 2000-07-31 2003-06-03 Hewlett-Packard Development Company, L.P. Computer cache system with deferred invalidation
US6772293B2 (en) * 2000-12-27 2004-08-03 Intel Corporation System and method for optimizing memory bus bandwidth utilization by request classification and ordering
US6594741B1 (en) * 2001-02-23 2003-07-15 Lsi Logic Corporation Versatile write buffer for a microprocessor and method using same
US6940865B2 (en) * 2001-04-17 2005-09-06 Atheros Communications, Inc. System and method for interleaving frames with different priorities
US6889290B2 (en) 2001-06-29 2005-05-03 Intel Corporation Memory management apparatus and method
US7228366B2 (en) * 2001-06-29 2007-06-05 Intel Corporation Method and apparatus for deterministic removal and reclamation of work items from an expansion bus schedule
US7472230B2 (en) * 2001-09-14 2008-12-30 Hewlett-Packard Development Company, L.P. Preemptive write back controller
US7187689B1 (en) * 2001-10-29 2007-03-06 Juniper Networks, Inc. Self-cleaning mechanism for error recovery
US20030084249A1 (en) * 2001-10-31 2003-05-01 Johnson David J.C. Preemptive eviction of stale entries is a computer cache by use of age-bits
US7096320B2 (en) * 2001-10-31 2006-08-22 Hewlett-Packard Development Company, Lp. Computer performance improvement by adjusting a time used for preemptive eviction of cache entries
US6810465B2 (en) 2001-10-31 2004-10-26 Hewlett-Packard Development Company, L.P. Limiting the number of dirty entries in a computer cache
US6813691B2 (en) 2001-10-31 2004-11-02 Hewlett-Packard Development Company, L.P. Computer performance improvement by adjusting a count used for preemptive eviction of cache entries
US20030084253A1 (en) * 2001-10-31 2003-05-01 Johnson David J.C. Identification of stale entries in a computer cache
US7389387B2 (en) * 2001-12-31 2008-06-17 Intel Corporation Distributed memory module cache writeback
US6874067B2 (en) * 2002-04-11 2005-03-29 International Business Machines Corporation Eliminating unnecessary data pre-fetches in a multiprocessor computer system
US7206851B2 (en) * 2002-07-11 2007-04-17 Oracle International Corporation Identifying dynamic groups
US7428523B2 (en) * 2002-07-11 2008-09-23 Oracle International Corporation Portal bridge
US7428592B2 (en) * 2002-07-11 2008-09-23 Oracle International Corporation Securely persisting network resource identifiers
US7447701B2 (en) * 2002-07-11 2008-11-04 Oracle International Corporation Automatic configuration of attribute sets
US7512585B2 (en) * 2002-07-11 2009-03-31 Oracle International Corporation Support for multiple mechanisms for accessing data stores
US7478407B2 (en) * 2002-07-11 2009-01-13 Oracle International Corporation Supporting multiple application program interfaces
US7467142B2 (en) 2002-07-11 2008-12-16 Oracle International Corporation Rule based data management
US8375113B2 (en) 2002-07-11 2013-02-12 Oracle International Corporation Employing wrapper profiles
US7114037B2 (en) * 2002-07-11 2006-09-26 Oracle International Corporation Employing local data stores to maintain data during workflows
US7882132B2 (en) 2003-10-09 2011-02-01 Oracle International Corporation Support for RDBMS in LDAP system
US7340447B2 (en) * 2003-10-09 2008-03-04 Oracle International Corporation Partitioning data access requests
US7904487B2 (en) 2003-10-09 2011-03-08 Oracle International Corporation Translating data access requests
US7415577B2 (en) * 2004-03-10 2008-08-19 Intel Corporation Method and apparatus to write back data
US7421535B2 (en) * 2004-05-10 2008-09-02 International Business Machines Corporation Method for demoting tracks from cache
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7630974B2 (en) 2004-09-28 2009-12-08 Oracle International Corporation Multi-language support for enterprise identity and access management
US8230144B1 (en) * 2004-10-19 2012-07-24 Broadcom Corporation High speed multi-threaded reduced instruction set computer (RISC) processor
US20060155934A1 (en) * 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
US7478203B2 (en) * 2006-03-08 2009-01-13 Sun Microsystems, Inc. Technique for eliminating dead stores in a processor
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
US7913048B2 (en) * 2006-07-26 2011-03-22 International Business Machines Corporation Data subscribe-and-publish mechanisms and methods for producer-consumer pre-fetch communications
WO2008061154A2 (en) 2006-11-14 2008-05-22 Soft Machines, Inc. Apparatus and method for processing instructions in a multi-threaded architecture using context switching
US8631204B2 (en) 2010-07-14 2014-01-14 Seagate Technology Llc Multi-resolution cache monitoring
JP2012033047A (ja) * 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
CN103250131B (zh) 2010-09-17 2015-12-16 索夫特机械公司 包括用于早期远分支预测的影子缓存的单周期多分支预测
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US8996789B2 (en) * 2011-05-23 2015-03-31 International Business Machines Corporation Handling high priority requests in a sequential access storage device having a non-volatile storage cache
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
IN2014CN03678A (ja) 2011-11-22 2015-09-25 Soft Machines Inc
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
US9141543B1 (en) 2012-01-06 2015-09-22 Marvell International Ltd. Systems and methods for writing data from a caching agent to main memory according to a pre-clean criterion
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9444496B2 (en) * 2012-04-04 2016-09-13 University Of Southern California Correctable parity protected memory
US9569356B1 (en) 2012-06-15 2017-02-14 Emc Corporation Methods for updating reference count and shared objects in a concurrent system
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9740612B2 (en) * 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US9442849B2 (en) 2012-12-29 2016-09-13 Intel Corporation Apparatus and method for reduced core entry into a power state having a powered down core cache
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9280389B1 (en) * 2014-12-30 2016-03-08 Tyco Fire & Security Gmbh Preemptive operating system without context switching
US10922228B1 (en) 2015-03-31 2021-02-16 EMC IP Holding Company LLC Multiple location index
US10210087B1 (en) * 2015-03-31 2019-02-19 EMC IP Holding Company LLC Reducing index operations in a cache
US9767041B2 (en) * 2015-05-26 2017-09-19 Intel Corporation Managing sectored cache
US10515030B2 (en) * 2016-05-12 2019-12-24 Lg Electronics Inc. Method and device for improved advanced microcontroller bus architecture (AMBA) and advanced extensible interface (AXI) operations
KR102807343B1 (ko) * 2017-02-15 2025-05-15 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20190354482A1 (en) * 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Time-based mechanism supporting flush operation
CN109739696B (zh) * 2018-12-13 2022-05-13 北京计算机技术及应用研究所 一种双控存储阵列固态硬盘缓存加速方法
US11163573B2 (en) * 2019-02-13 2021-11-02 International Business Machines Corporation Hierarchical metadata predictor with periodic updates
KR20210123555A (ko) * 2020-04-03 2021-10-14 에스케이하이닉스 주식회사 메모리 시스템

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4530055A (en) * 1982-03-03 1985-07-16 Sperry Corporation Hierarchical memory system with variable regulation and priority of writeback from cache memory to bulk memory
US5045996A (en) * 1986-11-12 1991-09-03 Xerox Corporation Multiprocessor cache memory housekeeping
EP0273665A3 (en) * 1987-01-02 1990-06-06 General Electric Company System for write once read many optical storage devices to appear rewritable
US5119485A (en) * 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
US5467460A (en) * 1990-02-14 1995-11-14 Intel Corporation M&A for minimizing data transfer to main memory from a writeback cache during a cache miss
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
US5623633A (en) * 1993-07-27 1997-04-22 Dell Usa, L.P. Cache-based computer system employing a snoop control circuit with write-back suppression
US5555398A (en) * 1994-04-15 1996-09-10 Intel Corporation Write back cache coherency module for systems with a write through cache supporting bus
US5729713A (en) * 1995-03-27 1998-03-17 Texas Instruments Incorporated Data processing with first level cache bypassing after a data transfer becomes excessively long
US5778430A (en) * 1996-04-19 1998-07-07 Eccs, Inc. Method and apparatus for computer disk cache management

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007234225A (ja) * 2001-04-26 2007-09-13 Internatl Business Mach Corp <Ibm> ダイナミック・ランダム・アクセス・メモリの破壊読出アーキテクチャ
JP2010134584A (ja) * 2008-12-03 2010-06-17 Nec Corp メモリ管理装置、メモリ管理方法およびプログラム
JP2013065150A (ja) * 2011-09-16 2013-04-11 Toshiba Corp キャッシュメモリ装置、プロセッサ、および情報処理装置

Also Published As

Publication number Publication date
US6134634A (en) 2000-10-17
DE69721961T2 (de) 2004-02-12
EP0854428B1 (en) 2003-05-14
EP0854428A1 (en) 1998-07-22
DE69721961D1 (de) 2003-06-18

Similar Documents

Publication Publication Date Title
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US5732242A (en) Consistently specifying way destinations through prefetching hints
JP4437001B2 (ja) 変換索引バッファのフラッシュフィルタ
US5592634A (en) Zero-cycle multi-state branch cache prediction data processing system and method thereof
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
US6279106B1 (en) Method for reducing branch target storage by calculating direct branch targets on the fly
US8458408B2 (en) Cache directed sequential prefetch
US5860107A (en) Processor and method for store gathering through merged store operations
US7133968B2 (en) Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions
US5930832A (en) Apparatus to guarantee TLB inclusion for store operations
US5446850A (en) Cross-cache-line compounding algorithm for scism processors
US6092182A (en) Using ECC/parity bits to store predecode information
JPH06318177A (ja) キャッシュ・ミス・ペナルティを減少させる方法、装置及びコンピュータ・システム
JP2003514299A (ja) インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ
JPH10124314A (ja) データプロセッサ及びデータ処理システム
KR20020097149A (ko) 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러
JPH10228377A (ja) 分岐予測する情報処理装置
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US5596731A (en) Single clock bus transfers during burst and non-burst cycles
JP3431878B2 (ja) マルチスレッド・プロセッサの命令キャッシュ
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JPH0816394A (ja) システムメモリから命令コードを先取りするための先取り装置および方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070417

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070717

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070817

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070907

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20080118