JP2902976B2 - キャッシュフラッシュ装置 - Google Patents

キャッシュフラッシュ装置

Info

Publication number
JP2902976B2
JP2902976B2 JP7151732A JP15173295A JP2902976B2 JP 2902976 B2 JP2902976 B2 JP 2902976B2 JP 7151732 A JP7151732 A JP 7151732A JP 15173295 A JP15173295 A JP 15173295A JP 2902976 B2 JP2902976 B2 JP 2902976B2
Authority
JP
Japan
Prior art keywords
cache
tag
data
address
external tag
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.)
Expired - Fee Related
Application number
JP7151732A
Other languages
English (en)
Other versions
JPH096680A (ja
Inventor
浩志 野末
美生 増渕
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP7151732A priority Critical patent/JP2902976B2/ja
Priority to US08/653,909 priority patent/US5745730A/en
Priority to EP96304420A priority patent/EP0750262B1/en
Priority to DE69614779T priority patent/DE69614779T2/de
Priority to CN96107629A priority patent/CN1084896C/zh
Priority to KR1019960021796A priority patent/KR100212361B1/ko
Publication of JPH096680A publication Critical patent/JPH096680A/ja
Application granted granted Critical
Publication of JP2902976B2 publication Critical patent/JP2902976B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、電子計算機装置に係わ
り、特にスヌープ機能を有するキャッシュ装置を含む計
算機システムに関する。
【0002】
【従来の技術】一般に、計算機システムにおいては、プ
ロセッサのメモリアクセスを高速化するために、プロセ
ッサが必要とするデータを一時的に格納するキャッシュ
装置が広く用いられている。キャッシュ装置は、キャッ
シュブロックと呼ばれる所定の大きさのデータ単位で、
データをキャッシュ(メモリ)に格納する。またキャッ
シュ装置は、キャッシュタグと呼ばれる管理情報を保持
し、キャッシュに格納したキャッシュブロックのデータ
が、メインメモリのどのアドレスのデータであるか、プ
ロセッサによって変更されているかなどを管理してい
る。
【0003】一方、プロセッサを複数設けた計算機シス
テム(マルチプロセッサシステム)では、複数のキャッ
シュ間でデータの一貫性を保証するために、スヌープ機
能をもったキャッシュ装置がよく用いられる。スヌープ
機能は、バスに発行されたバスコマンドが自キャッシュ
に格納されたデータに影響を与えないかを監視し、必要
であればキャッシュに格納されたデータを更新(あるい
は無効化等)するものである。
【0004】このような計算機システムでは、キャッシ
ュがコピーバック型、すなわちプロセッサによるデータ
更新を直ちにメインメモリに書き戻すのではなく、キャ
ッシュに保持するタイプの場合、プロセッサによってキ
ャッシュ上で変更され、メインメモリの内容と異なって
いるデータを、積極的にメインメモリへ書き戻す操作が
必要になることがある。例えば、スヌープ機能を持たな
い入出力装置に対して、キャッシュが持つデータを転送
する場合である。このキャッシュの内容のうち変更され
ているデータをメインメモリへ書き戻す操作を、キャッ
シュフラッシュ操作と呼ぶ。またキャッシュのデータが
変更されている状態をダーティ状態、ダーティ状態のキ
ャッシュブロックをダーティブロックと呼ぶ。
【0005】キャッシュフラッシュ操作は、通常キャッ
シュフラッシュ命令を含むソフトウェアに基づいて実行
される。このソフトウェアを実行することにより、プロ
セッサは、キャッシュタグに格納されたタグを参照し
て、キャッシュブロック毎にダーティであるかどうかを
判断し、ダーティであれば対応するキャッシュブロック
のデータをメインメモリに書き戻すキャッシュフラッシ
ュ動作を行なう。
【0006】すなわち、プロセッサは、与えられたプロ
グラムに従って、一つ一つ全てのキャッシュブロックを
判断し、必要であれば逐次、キャッシュフラッシュ操作
を実行しなければならず、一通り全てのキャッシュブロ
ックについて処理を行なうためには多くの処理時間を要
している。
【0007】この状況を図12に示すプログラムを参照
して具体的に説明する。図12に示すプログラムは、米
国MIPS社R4000プロセッサを使ってキャッシュ
フラッシュ操作を行なうためのプログラムの一例であ
る。
【0008】図12に示すプログラムでは、ループ(l
oop)を処理する時間を数えると、命令数が4つで4
プロセッササイクルを要し、さらに分岐命令の実行には
2プロセッササイクルを要するため、ループ処理1回に
必要となる時間は合わせて6プロセッササイクルであ
る。これをバスサイクルに換算すると、3バスサイクル
となる。従って、全てのキャッシュブロックをフラッシ
ュする時間は、データを主記憶に書き戻す時間を含めな
くても、 キャッシュフラッシュ時間=キャッシュブロック数×3(bus cycle) …(1) となる。
【0009】一方、キャッシュブロックに対する検査を
短時間に行なうようにマイクロプロセッサの改造を試み
ることが考えられるが、マイクロプロセッサ内部のハー
ドウェアは簡単には変更できない。従って、例えば先に
あげた図12の例では、アルゴリズムから言えば、ca
che命令、キャッシュサイズのデクリメント命令、ブ
ロックアドレスのインクリメント命令は、同時に行なう
ことができるが、そのようなプログラムを作成すること
はできない。
【0010】
【発明が解決しようとする課題】このように従来の計算
機システムにおいては、キャッシュフラッシュ操作のた
めの、キャッシュブロックがダーティであるかどうかの
検査を逐次的に行っていたために、処理に多くの時間を
要していた。キャッシュフラッシュ操作をするプログラ
ム実行中は、他のプログラムが実行できないため、この
処理に多くの時間を要すると、システム全体の性能低下
を招いてしまうという問題があった。
【0011】本発明は前記のような事情を考慮してなさ
れたもので、キャッシュフラッシュ操作に要する時間を
短縮して、システム性能を向上させることが可能なキャ
ッシュフラッシュ装置を提供することを目的とする。
【0012】
【課題を解決するための手段】本発明は、バススヌープ
機能を有するコピーバック型のキャッシュメモリを備え
た少なくとも1個のプロセッサと、メインメモリと、前
記プロセッサと前記メインメモリとを接続するシステム
バスを有する計算機システムにおいて、システムバスで
交わされるキャッシュメモリ上でデータ更新が発生した
ことを示すコマンドを含む各種コマンドを監視する監視
手段と、前記キャッシュメモリに格納されたデータを管
理するための情報を記憶するもので、前記監視手段によ
り監視されたコマンドに基づいて、キャッシュメモリ上
でデータ更新されたことを検出した場合に、コマンドが
対象とする更新されたデータを示すアドレス、及びデー
タが更新状態であることを示す状態情報を記憶するアド
レス記憶手段と、前記キャッシュメモリ上の更新された
データの前記メインメモリへの書き戻しが必要となった
場合に、前記アドレス記憶手段に格納されている情報を
順次読み出す読み出し手段と、前記読み出し手段によっ
て読み出された情報に基づいて、更新されたデータを持
つキャッシュメモリからメインメモリへの、更新データ
の転送を要求するコマンドを前記システムバスに出力す
るコマンド出力手段とを具備することを特徴とする。
【0013】また、プロセッサから出力された複数のキ
ャッシュ間でデータの一貫性を保持する必要のあるリー
ド動作コマンドにより、メインメモリから前記プロセッ
サのキャッシュメモリへデータ転送が発生したことを検
出する手段と、前記リード動作コマンドに対して、同コ
マンドが対象とするデータが共有状態であることを示す
応答をする手段とを具備したことを特徴とする。
【0014】また、前記読み出し手段は、前記記憶手段
から同時に複数の情報を読み出し、前記読み出し手段に
よって読み出された複数の情報のそれぞれについて、前
記状態情報をもとに更新状態のデータを示すかを検査す
る検査手段と、前記検査手段によって得られた情報に含
まれるアドレスをもとに、前記システムバスに出力すべ
き命令を順次生成する命令生成手段とを具備したことを
特徴とする。
【0015】また前記記憶手段は、コマンドが対象とす
る更新されたデータを示すアドレスを記憶する第1の記
憶手段と、データが更新状態であることを示す状態情報
を記憶する第2の記憶手段から構成され、前記読み出し
手段は、前記第2の記憶手段から同時に複数の状態情報
を読み出し、前記読み出し手段によって読み出された複
数の状態情報のそれぞれについて、更新状態のデータを
示すかを検査する検査手段と、前記検査手段による検査
結果に応じて、前記第1の記憶手段から該当するアドレ
スを読み出して、前記システムバスに出力すべき命令を
順次生成する命令生成手段とを具備したことを特徴とす
る。
【0016】
【作用】このような構成によれば、プロセッサに設けら
れたキャッシュメモリ中の更新データをメインメモリに
書き戻すためのキャッシュフラッシュ操作を実行する際
に、プロセッサに代わって、キャッシュフラッシュ装置
がキャッシュ上の更新データをメインメモリに書き戻さ
せるコマンドを、システムバス上に発行する。従って、
プロセッサではキャッシュフラッシュ操作の実行中に別
のプログラムを並行して実行でき、プロセッサに対する
キャッシュフラッシュ操作のための処理負担が軽減され
る。
【0017】また、キャッシュメモリに格納されるデー
タ(キャッシュブロック)の管理を、MESI(変更済
み:Modified/排他:Exclusive /共有:Shared/無
効:Invalid )プロトコルで行なうプロセッサが広く用
いられている。この場合、データの状態が排他(Exclus
ive )である場合、キャッシュ上でデータが変更される
際、通常ではシステムバス上にデータの更新が行なわれ
たことを示すトランザクション(コマンド)が発行され
ない。すなわち、キャッシュフラッシュ装置側でキャッ
シュメモリ中のデータの状態の管理ができなくなってし
まう。これを回避するために、キャッシュ一貫性を保持
するリード動作命令(coherent read )がシステムバス
に発行された際に、キャッシュフラッシュ装置から該当
するデータが共有(Shared)であることを示す応答をす
ることで、キャッシュメモリを管理するキャッシュタグ
の状態を共有状態にしておく。これにより、キャッシュ
上でデータが更新される際、システムバスにトランザク
ションが発行されるようになる。
【0018】また、キャッシュフラッシュ装置内におい
て記憶しているキャッシュメモリのデータを管理する情
報(タグ(アドレス、状態情報))を、同時に複数読み
出して検査し、必要なコマンドを順次生成することで、
キャッシュフラッシュ操作に要する時間を短縮すること
ができる。
【0019】また、キャッシュフラッシュ装置内におい
て、キャッシュメモリのデータを管理する情報を、アド
レスと状態情報とで分けて記憶することで、異なるデバ
イスによる記憶装置をそれぞれに用いることができる。
【0020】
【実施例】以下、図面を参照して本発明の実施例を説明
する。図1は本発明の第1実施例に係わる計算機システ
ムの要部構成を示すブロック図である。図1に示す計算
機システムは、少なくとも1つのプロセッサ(CPU)
10が設けられている(図1では1つ)。プロセッサ1
0には、主記憶装置(メインメモリ)12の内容を一時
的に格納するキャッシュ装置(キャッシュメモリ(キャ
ッシュ)16と、キャッシュ16に格納されたキャッシ
ュブロック毎のデータの状態を示す情報を格納するため
のキャッシュタグ(タグ)14)が接続される。
【0021】プロセッサ10(キャッシュタグ14、キ
ャッシュ16)は、メインメモリ12とシステムバス
(バス)18を介して接続されている。またシステムバ
ス16には、キャッシュフラッシュ装置20が接続され
ている。
【0022】プロセッサ10は、プロセッサ10に接続
されたキャッシュ16の状態を変化させる場合、システ
ムバス18に接続されている他の装置に変化する状態を
通知する手段と、他の装置から状態の変化を通知された
場合の、通知された状態への変化と自らのキャッシュに
格納されたデータの状態に応じた必要な動作を行なう手
段を持つとする。例えば本実施例では、スヌープ方式に
よって、システムバス18に接続された複数のプロセッ
サのそれぞれに対応する各キャッシュに格納されるデー
タの一貫性が保持されるものとする。
【0023】以下、本実施例では、プロセッサ10がコ
ピーバック型スヌープ方式であるものとする。すなわち
プロセッサ10は、キャッシュ16に格納したデータ
(キャッシュデータ)の変更を行なう場合、他の装置
(他のプロセッサのキャッシュ)に存在する当該データ
を無効化することを指示する無効化命令を通知する。
【0024】またプロセッサ10は、他の装置からキャ
ッシュデータに対する無効化命令を受け取った場合、当
該データを保持している場合はデータを無効化し、さら
に当該データが変更されている場合は、変更後のデータ
を無効化命令を出したプロセッサ、またはメインメモリ
12へ送付する。
【0025】キャッシュフラッシュ装置20は、図1に
示すように、バスインタフェース回路(バスI/F)2
2、外部タグ制御装置24、外部タグ記憶装置26、外
部タグ読み出し装置28、マルチプレクサ(MUX)3
0、外部タグ検査装置32、外部タグ命令生成装置3
4、先入れ先だしバッファ(FIFO)36、全体制御
装置38から構成される。
【0026】バスインタフェース回路22は、キャッシ
ュフラッシュ装置20のシステムバス18とのインタフ
ェースであり、次の三つの機能を有している。第一にバ
スインタフェース回路22は、システムバス18上に発
行される計算機システムにおいて通常用いられている、
キャッシュ状態を変更するトランザクション(snoo
p)を取り込み、外部タグ制御装置24へ伝達する。ト
ランザクションには、実行すべき処理を示すコマンド
や、処理対象とするキャッシュブロックを示す物理アド
レス等が含まれる。第二にバスインタフェース回路22
は、キャッシュフラッシュ装置20に対するコマンド
(cmd)を取り込み、全体制御装置38へ伝達する。
キャッシュフラッシュ装置20に対するコマンドには、
全体制御装置38の内部に設けられた内部レジスタ(開
始アドレスレジスタ、アドレス生成回数レジスタ)に対
するリードまたはライトアクセス要求するものを含む。
第三にバスインタフェース回路22は、外部タグ命令生
成装置34が発生したキャッシュ無効化命令(fsh−
cmd)をFIFO36を介して受け取り、該命令をシ
ステムバス18へ出力する。
【0027】外部タグ制御装置24は、バスインタフェ
ース回路22を介して得られたシステムバス18上のト
ランザクションからキャッシュタグ14に格納されたタ
グと同じタグを生成するための、次の三つの機能を有し
ている。第一に外部タグ制御装置24は、タグアドレス
(w−addr)をマルチプレクサ30を介して外部タ
グ記憶装置26へ供給し、外部タグ記憶装置26から自
分の持つタグを読み出す。第二に外部タグ制御装置24
は、バスインタフェース22から伝達されたトランザク
ションを解釈し、この解釈結果と外部タグ記憶装置26
からに格納されたタグから、新しいタグを生成する。第
三に外部タグ制御装置24は、タグアドレス(w−ad
dr)を外部タグ記憶装置26へ出力し、外部タグ記憶
装置に新しいタグ(w−tag)を書き込む。この新し
いタグは、プロセッサ10に接続されたキャッシュタグ
14に格納されたタグと同じ状態にする。キャッシュタ
グ14と外部タグ記憶装置26に格納されるタグを同じ
にするために、外部タグ制御装置24は、システムバス
18に接続したプロセッサ10の種類に応じた所定の方
法により、トランザクションの内容と外部タグ記憶装置
26の内容から新しいタグを生成する。
【0028】外部タグ記憶装置26は、外部タグ制御装
置24が生成したタグ(w−tag)を格納する。タグ
の内容は、システムバス16に接続したプロセッサ10
によって異なるが、例えばキャッシュブロックを示す物
理アドレス、キャッシュブロックの状態を管理するため
のMESI(変更済み:Modified/排他:Exclusive/
共有:Shared/無効:Invalid )を示す2〜3ビットの
スヌープ状態、メモリエラーの検出と回復を行なうため
のECC(error-correcting code )などからなる。
【0029】なお、ECCを生成する装置、ECCを検
査する装置、及び、ECCから正しいデータを回復する
装置については、本発明と直接関係ないため省略する。
またスヌープ状態に関しては、本発明ではダーティ(変
更済み:Modified)であるかどうかのみが重要であり、
これを表す1ビットを格納しても良い。本実施例では、
説明を簡単にするために、以下、ダーティであるかどう
かを示す1ビットのみをスヌープ状態として格納するも
のとする。ただし、完全なスヌープ状態(数ビットで管
理する)を格納し、後述する外部タグ検査装置32にお
いてダーティであるかを判定させることも可能である。
【0030】また、MESIプロトコルを用いる場合、
プロセッサ10は、キャッシュ16に格納されたキャッ
シュブロックのデータが排他状態(E)になると、他の
キャッシュに該当するキャッシュブロックが存在しない
ため、キャッシュ16上でデータを変更しても、データ
変更済み状態(M)へ移行したことを示す通知をシステ
ムバス18に発行しない。この場合、キャッシュフラッ
シュ装置20は、移行したキャッシュブロックについ
て、ダーティではないと判定してしまうことになる。こ
うした状況を避けるために、バスインタフェース回路2
2は、プロセッサ10からシステムバス18上にキャッ
シュ一貫性を保持する必要のあるリード動作コマンド
(一貫性リード動作コマンド)が出力された時、そのデ
ータが共有状態であることを示す応答をするようにす
る。この応答によってプロセッサ10は、キャッシュブ
ロックを共有状態(S)にする。これにより、プロセッ
サ10は、該当するキャッシュブロックをデータ変更状
態へ移行させる場合には、データを無効化する命令をシ
ステムバス18へ出力することになる。キャッシュフラ
ッシュ装置20は、この無効化する命令を受け取り、そ
のデータに対応するアドレスが、データ変更状態(M)
へ移行したことを、外部タグ記憶装置26に記録するこ
とができる。
【0031】外部タグ記憶装置26は、主に次の二つの
動作を行なう。第一に外部タグ記憶装置26は、外部タ
グ制御装置24からアドレス(w−addr)とタグ
(w−tag)を受け取り、外部タグ記憶装置26へ書
き込む。第二に外部タグ記憶装置26は、外部タグ読み
出し装置28からマルチプレクサ30を介してアドレス
(r−addr)を受け取り、外部タグ記憶装置26か
らタグ(r−tag)を読み出して外部タグ検査装置3
2に出力する。
【0032】外部タグ記憶装置26の記憶容量は、シス
テムバス18に接続された全キャッシュの全タグが格納
できる大きさである。ただし、キャッシュフラッシュ装
置20ではデータを記憶するための記憶領域が必要ない
ため、外部タグ記憶装置26の記憶容量は、プロセッサ
の持つキャッシュ装置に比べて大幅に少なくて良い。
【0033】なお、外部タグ記憶装置26と外部タグ制
御装置24の詳細は、例えば特願平4−213133号
に記載されている。特願平4−213133号に記載さ
れている技術は、外部タグ記憶装置を、システムバス
と、システムバスとは別のバスを接続する構造におい
て、システムバスの負荷を低減する効果を得るために設
けられたものである。本発明では、外部タグ記憶装置2
6を、外部タグ読み出し装置28、外部タグ検査装置3
2、外部タグ命令生成装置34と共に、キャッシュフラ
ッシュ操作を行なうために用いる。
【0034】外部タグ読み出し装置28は、外部タグ記
憶装置26からタグを読み出すためのタグアドレス(r
−addr)を生成し、マルチプレクサ30を介して外
部タグ記憶装置26へ出力する。外部タグ読み出し装置
28は、外部タグ読み出し装置28へ与えるタグアドレ
ス(r−addr)の初期値である開始アドレス、アド
レス生成回数、アドレス生成の開始及び停止の指示が、
全体制御装置38から与えられる。
【0035】外部タグ読み出し装置28は、以下のよう
な動作を行なう。まず、外部タグ読み出し装置28は、
全体制御装置38からアドレス生成回数と開始アドレス
を読み出す。読み出したアドレス生成回数が“0”なら
ば、外部タグ読み出し装置28は、全体制御装置38の
内部に設けられたフラッシュ開始ビットへ“0”を書き
込んで、キャッシュフラッシュ操作を終了する。アドレ
ス生成回数が“0”でなければ、開始アドレス(タグア
ドレス(r−addr))をマルチプレクサ30を介し
て外部タグ記憶装置26へ出力すると共に、開始アドレ
スの値をキャッシュブロックサイズ分だけインクリメン
トして、全体制御装置38の開始アドレスレジスタへ書
き込む。開始アドレスは、外部タグ記憶装置26のキャ
ッシュブロック数の剰余系である。すなわち、外部タグ
記憶装置26の最大アドレスまでインクリメントされる
と、次は最小アドレスへ戻る。また、外部タグ読み出し
装置28は、アドレス生成回数をデクリメントする。そ
の結果が“0”ならば、動作開始前のアドレス生成回数
をアドレス生成回数レジスタへ書き込み、フラッシュ開
始ビットへ“0”を書き込んで、キャッシュフラッシュ
操作を終了する。デクリメントしたアドレス生成回数が
0でなければ、外部タグ読み出し装置28は、デクリメ
ントして得たアドレス生成回数を全体制御装置38のア
ドレス生成回数レジスタへ書き込む。
【0036】マルチプレクサ(mux)30は、外部タ
グ記憶装置26に対する、外部タグ制御装置24からの
タグ書き込み要求と外部タグ読み出し装置28からのタ
グ読み出し要求を選択する。ふたつの要求が同時に発生
した場合、マルチプレクサ30は、外部タグ制御装置2
4からのタグ書き込み要求を優先する。
【0037】外部タグ検査装置32は、外部タグ記憶装
置26から読み出されたタグ(r−tag)のうちスヌ
ープ状態(ここではダーティであるか否かを示す1ビッ
ト)を参照して、対応するキャッシュブロックがダーテ
ィであるかを判定する。外部タグ検査装置32は、外部
タグ記憶装置26から読み出されたタグ(r−tag)
のうち、ダーティと判別されたタグに対応して、物理ア
ドレスタグとキャッシュフラッシュ命令生成要求(r−
fsh)を出力する。もしダーティでなければ、外部タ
グ検査装置32は、キャッシュフラッシュ命令生成要求
(r−fsh)を出力しない。
【0038】外部タグ命令生成装置34は、外部タグ検
査装置32から出力されたキャッシュフラッシュ命令生
成要求(r−fsh)を受け取ると、同時に受け取った
物理アドレスタグを用いて、該当するキャッシュブロッ
クをフラッシュする(キャッシュからメインメモリに書
き戻させる)ためのキャッシュフラッシュ命令(flu
sh)を出力する。
【0039】FIFO36は、外部タグ命令生成装置3
4から、後述するパイプライン的動作によりほぼ1サイ
クル毎に入力されるキャッシュフラッシュ命令(flu
sh)と、数サイクル毎にシステムバス18へ出力され
るキャッシュフラグ命令(fsh−cmd)との時間差
を緩衝する装置である。なおFIFO36は、蓄積して
いるキャッシュフラッシュ命令が一定容量を越えた場
合、外部タグ読み出し装置28の動作を一時停止させ
て、キャッシュフラッシュ命令の生成を抑制する。この
後、FIFO36が蓄積しているキャッシュフラッシュ
命令が一定容量より少なくなった場合、外部タグ読み出
し装置28の動作を再開させる。
【0040】全体制御装置38は、プロセッサ10から
システムバス18を通して与えられるコマンド(cm
d)に従って、キャッシュフラッシュ装置20を構成す
る前述した各部を制御するもので、開始アドレスレジス
タ、アドレス生成回数レジスタ、及びフラッシュ開始ビ
ットが内部に設けられている(図示せず)。全体制御装
置38は、以下の機能を有する。第一に全体制御装置3
8は、外部タグ読み出し装置28、外部タグ検査装置3
2、外部タグ命令生成装置34、FIFO36を初期化
する。第二に全体制御装置38は、外部タグ読み出し装
置28へ与えるタグアドレス(r−addr)の初期値
である開始アドレス、及びアドレス生成回数を、内部に
設けられた開始アドレスレジスタ、アドレス生成回数レ
ジスタへそれぞれ設定する。第三に全体制御装置38
は、内部に設けられたフラッシュ開始ビットがプロセッ
サ10により“1”に設定された場合に、外部タグ読み
出し装置28を起動し、キャッシュフラッシュ操作を開
始させる。第四に全体制御装置38は、外部タグ読み出
し装置28を停止させ、キャッシュフラッシュ命令の生
成を中止する。この際、フラッシュ開始ビットは、外部
タグ読み出し装置28が動作を停止する前に、外部タグ
読み出し装置28によって“0”に設定される。第五に
全体制御装置38は、開始アドレスとアドレス生成回数
を開始アドレスレジスタ、アドレス生成回数レジスタか
らそれぞれ読み出して、プロセッサ10へ返す。この他
に全体制御装置38は、フラッシュ命令を生成した回数
を返す機能や、バスクロックを分周して数クロック毎に
間欠的に外部タグ読み出し装置28を起動する機能を持
っても良い。
【0041】次に、本実施例の動作について説明する。
図2は、計算機システムが通常動作している場合のキャ
ッシュフラッシュ装置20の動作を説明するためのフロ
ーチャートである。
【0042】計算機システムが通常動作している場合、
バスインタフェース回路22は、システムバス18上の
バストランザクションをスヌープし、外部タグ制御装置
24へ伝達する(ステップA1)。
【0043】外部タグ制御装置24は、バスインタフェ
ース回路22から伝達されたバストランザクションの種
類を判別する(ステップA2)。その結果、キャッシュ
状態を変更するトランザクションである場合(ステップ
A3)、外部タグ制御装置24は、新しいタグ(w−t
ag)を生成し、タグアドレス(w−addr)を指定
して外部タグ記憶装置24へ書き込む(ステップA
4)。すなわち、外部タグ制御装置24は、対象となる
キャッシュブロックを示す物理アドレスと、キャッシュ
状態とを外部タグ記憶装置24へ書き込む。キャッシュ
状態の変化は、使用するプロセッサ10が持つ機能等に
よって異なるが、例えば次のように定義することができ
る。
【0044】
【表1】
【0045】次に、キャッシュフラッシュ装置20を用
いてキャッシュフラッシュ操作を実行する場合は、以下
のように動作する。図3は、プロセッサ10からキャッ
シュフラッシュ装置20を使う方法を説明するためのフ
ローチャートである。
【0046】まず、リセット時には、全体制御装置38
は、開始アドレスレジスタ及びアドレス生成回数レジス
タに設定するデフォルト値として、開始アドレスをキャ
ッシュブロックの最小アドレスに、アドレス生成回数を
キャッシュブロックサイズに設定する。
【0047】ここで、デフォルト値以外の条件で動かす
場合、プロセッサ10は、全体制御装置38の内部レジ
スタに対して書き込みを行なうトランザクションを発行
する。全体制御装置38は、バスインタフェース回路2
2を介して得られたトランザクションが内部レジスタへ
の書き込みを行なうものであれば(ステップA5)、ト
ランザクションの内容に従って内部レジスタにデータを
書き込む(ステップA7)。すなわち、全体制御装置3
8は、フラッシュを開始するキャッシュブロックのアド
レスと、キャッシュフラッシュするブロック数を、内部
に設けられた開始アドレスレジスタ、アドレス生成回数
レジスタへそれぞれ書き込む(ステップB1,B2)。
【0048】そして、プロセッサ10は、全体制御装置
38内のフラッシュ開始ビットへ“1”を書き込むこと
で、キャッシュフラッシュ操作の開始を指示する(ステ
ップB3)。全体制御装置38は、フラッシュ開始ビッ
トに対する“1”への書き込みに応じて、キャッシュフ
ラッシュ操作を開始する(ステップB4,A8,A
9)。
【0049】図4は第1実施例におけるキャッシュフラ
ッシュ時の動作を説明するフローチャートである。キャ
ッシュフラッシュ操作は、以下のサイクルを繰り返す。
まず、全体制御装置38は、キャッシュブロックのキャ
ッシュフラッシュ操作を実現するための複数の連続する
処理を実行できるか否かによって、パイプライン動作が
可能であるか判別する(ステップC1)。すなわち、外
部タグ記憶装置26からのタグの読み出しの可否、FI
FO36の状態、システムバス18の使用権の獲得状況
等に基づいて判別する。なお、パイプライン動作の詳細
については図5を参照しながら後述する。
【0050】パイプライン動作が可能になると、外部タ
グ読み出し装置28は、全体制御装置38内のアドレス
生成回数レジスタと開始アドレスレジスタに設定された
値、及びフラッシュ開始ビットを読み出す(ステップC
2,C3,C4)。
【0051】外部タグ読み出し装置28は、フラッシュ
開始ビットがセット(“1”)されているか判別する
(ステップC4,C16)。フラッシュ開始ビットがセ
ットされていれば、キャッシュフラッシュ操作を継続す
る。
【0052】また、外部タグ読み出し装置28は、開始
アドレス(アドレス(r−addr))を外部タグ記憶
装置26へ出力し、開始アドレスをインクリメントして
全体制御装置38の開始アドレスレジスタへ書き込む
(ステップC5)。
【0053】また、外部タグ読み出し装置28は、アド
レス生成回数をデクリメントしてアドレス生成回数レジ
スタへ書き込む(ステップC3,C13)。ここで、デ
クリメントして得たアドレス生成回数が「0」以下でな
い場合には、キャッシュフラッシュ操作を継続する(ス
テップC14)。
【0054】一方、外部タグ記憶装置26は、前述した
外部タグ読み出し装置28における処理と並行して、外
部タグ読み出し装置28から出力されたアドレス(r−
addr)に対応したタグ(r−tag)の読み出し、
外部タグ検査装置32へ出力する(ステップC6,C
7)。なお、ここでタグ読み出せなかった場合には、パ
イプライン動作を停止させる。
【0055】外部タグ検査装置32は、外部タグ記憶装
置26から読み出されたタグから、タグに対応するキャ
ッシュブロックの状態が、ダーティ状態であるか否かを
調べる(ステップC8)。外部タグ検査装置32は、読
み出したタグがダーティ状態を示す場合に、外部タグ命
令生成装置34に出力する(r−fsh)。
【0056】外部タグ命令生成装置34は、タグに含ま
れる物理アドレス部分を用いて、該当するキャッシュブ
ロックをフラッシュする(メインメモリ12に書き戻
す)ためのコマンド(キャッシュフラッシュ命令:fl
ush)を生成し、FIFO36へ出力する(ステップ
C9)。なお、ここで、FIFO36に空きがない場合
には、パイプライン動作を停止させ(ステップC1
0)、FIFO36に空きができるまで待つ。
【0057】一方、バスインタフェース回路22は、F
IFO36にキャッシュフラッシュ命令が格納されてい
れば、システムバス18の使用権を獲得し(ステップC
11)、FIFO36からキャッシュフラッシュ命令を
取り出して、システムバス18へ出力する(ステップC
12)。
【0058】以上が1つのキャッシュフラッシュ命令を
キャッシュフラッシュ装置20から発行するまでのサイ
クルである。このサイクルは、予め全体制御装置38の
アドレス生成回数レジスタに設定された回数分繰り返し
て実行される。すなわち、アドレス生成回数レジスタに
設定された値を、1サイクル終了する毎にデクリメント
した結果、「0」以下となった場合(ステップC1
4)、外部タグ読み出し装置28は、全体制御装置38
のフラッシュ開始ビットをリセット(“0”)する(ス
テップC15)。これにより、全体制御装置38は、キ
ャッシュフラッシュ操作を停止して通常動作に戻る。
【0059】システムバス18上で一つのバス命令が実
行されるには、通常、数バスサイクルかかる。外部タグ
記憶装置26が1バスサイクルでアクセスできるとする
と、外部タグ読み出し装置28から外部タグ命令生成装
置34までにおいて実行される処理は、1バスサイクル
毎にパイプライン的に動作することができる。
【0060】図5にはキャッシュフラッシュ装置をパイ
プライン的に動作させる場合の、各ステージの処理を示
している。すなわち、(1)外部タグ読み出し装置28
によるキャッシュタグアドレスの読み出し(ステップC
2)、(2)外部タグ記憶装置26からのタグの読み出
し、及びキャッシュ状態の判別(ステップC7,C
8)、(3)外部タグ命令生成装置34によるキャッシ
ュフラッシュ命令の生成(ステップC9)、(4)キャ
ッシュフラッシュ命令の出力(ステップC11)の各処
理が、図5に示すようにして実行される。
【0061】外部タグ記憶装置26に対するタグ検索動
作と、キャッシュフラッシュ命令の出力の時間差は、F
IFO36で緩衝される。ダーティブロックの数が少な
ければ、FIFO36が一定量を越える事はなく、キャ
ッシュフラッシュ時間は、タグ検索時間とほぼ等しくな
り、 キャッシュフラッシュ時間=キャッシュブロック数(bus cycle) …(2) である。従って、従来のようにプロセッサがプログラム
に基づいて逐次的に行うより、短時間にキャッシュフラ
ッシュ操作を終了することができる。
【0062】以上のように本発明の第1実施例では、キ
ャッシュフラッシュ操作がシステムバス18に接続され
たキャッシュフラッシュ装置20の制御のもとで実行さ
れる。通常動作時には、キャッシュフラッシュ装置20
はシステムバス18に発行されるトランザクションを監
視して、外部タグ記憶装置26にキャッシュタグ14に
格納されたタグと同じ状態のタグを保持する。
【0063】そして、キャッシュフラッシュ操作を実行
する場合には、キャッシュフラッシュ装置20は、プロ
セッサ10に代わってタグの検査を行ない、キャッシュ
16上で更新されたダーティブロックをメインメモリ1
2に書き戻すキャッシュフラッシュ命令を発行する。す
なわち、プロセッサ10は、キャッシュフラッシュの範
囲を指定して、キャッシュフラッシュ装置20を起動し
てしまえば、キャッシュフラッシュ操作のために、プロ
グラムに従って、逐次、全てのキャッシュブロックにつ
いて処理する必要がなくなる。このため、キャッシュフ
ラッシュ操作の実行と並行して、プロセッサ10は、他
のプログラムを同時に実行することができる。例えば指
定したキャッシュブロックについてのキャッシュフラッ
シュ操作を行いながら、別のキャッシュブロックを使っ
て別のプログラムを実行することが可能になる。こうし
て、プロセッサ10の稼動効率が向上され、計算機シス
テム全体のシステム性能を向上させることができる。
【0064】また、キャッシュフラッシュ装置20で
は、キャッシュフラッシュ操作において、キャッシュフ
ラッシュ操作、アドレスインクリメント、カウンタデク
リメントが同時に実行可能である。また、連続するキャ
ッシュブロックのキャッシュフラッシュ操作をパイプラ
イン的に実行することができるようになる。従って、キ
ャッシュフラッシュ操作の実行に要する時間が大幅に短
縮される。
【0065】また、キャッシュフラッシュ装置20に、
タグを記憶するために必要な外部タグ記憶装置26の容
量は、プロセッサ10のキャッシュタグを格納する大き
さである。従って、プロセッサ10のキャッシュ装置に
比べて、データを格納する容量分を節約できる。従っ
て、キャッシュフラッシュ装置20に必要な記憶容量
は、プロセッサ10のキャッシュ装置の容量の数分の一
に抑えることができる。
【0066】次に、本発明の第2実施例について説明す
る。図6は、本発明の第2実施例に係わる計算機システ
ムの要部構成を示すブロック図である。第2実施例は、
第1実施例の構成に、さらに複数のタグを同時に検査す
る構成を付加したものである。すなわち、図1に示す第
1実施例の構成に、複数の外部タグ検査装置46,4
8、及び複数の外部タグ検査装置46,48の出力(r
−fsh1,r−fsh2)を選択して一本化するマル
チプレクサ(mux)49が付加されて構成される。な
お、外部タグ検査装置の数は任意で良いが、キャッシュ
ブロックアドレスが、通常、2進数で表現されるため、
2のべき乗個の外部タグ検査装置を設けることが望まし
い。ここでは、説明を簡単にするために、2個の外部タ
グ検査装置46,48を設けた場合を例にして説明す
る。
【0067】また、バスインタフェース回路(バスI/
F)22、外部タグ制御装置24、マルチプレクサ(m
ux)30、外部タグ命令生成装置34、全体制御装置
38、FIFO36は、第1実施例と同じ動作をするの
で同一符号を付して説明を省略する。また、外部タグ検
査装置46,48は、図1中の外部タグ検査装置32と
同一の機能を有する。
【0068】外部タグ読み出し装置42は、第1実施例
と同様に、全体制御装置38から開始アドレス、アドレ
ス生成回数、アドレス生成の開始および停止(フラッシ
ュ開始ビットの値)を受け取り、開始アドレスをマルチ
プレクサ30を介して外部タグ記憶装置44へ出力し、
次の開始アドレス、アドレス生成回数を計算する。ただ
し、開始アドレスのインクリメントの増分は、(キャッ
シュブロックサイズ×外部タグ検査装置個数)とする。
またアドレス生成回数のデクリメントの減分は、(外部
タグ検査装置個数)とする。
【0069】外部タグ記憶装置44は、外部タグ読み出
し装置42から受け取ったアドレス(r−addr)に
従って、同時に内部に設けられた外部タグ検査装置4
6,48の個数分(ここでは2個)のタグ(r−tag
1,r−tag2)を出力する。
【0070】例えば、図6に示すように、外部タグ検査
個数が2個である場合、外部タグ記憶装置44は、キャ
ッシュブロックアドレスの最下位1ビットを無視し、偶
数アドレスと奇数アドレスのタグを同時に読み出して、
それぞれ異なった外部タグ検査装置46,48へ出力す
る。
【0071】マルチプレクサ(mux)49は、全ての
外部タグ検査装置46,48の出力を受け取り、その中
にキャッシュフラッシュ生成要求があれば、キャッシュ
フラッシュ生成要求と、対応する物理アドレスタグを外
部タグ命令生成装置34へ出力する。同時に複数のキャ
ッシュフラッシュ生成要求がある場合、そのうち任意の
1つを選択して外部タグ命令生成装置34へ出力する。
選択されなかったキャッシュフラッシュ生成要求は、1
バスサイクル後に再び任意の1つが選択されて外部タグ
命令生成装置34へ出力される。
【0072】マルチプレクサ49の内部には、入力を一
時的に保持する緩衝装置(図示せず)がある。この緩衝
装置に保持される入力が一定量を越えた場合、マルチプ
レクサ49は、外部タグ読み出し装置42を一時停止さ
せる。例えば緩衝装置が2段あり、初期状態は空である
とする。入力が1段目に入り、1段目のキャッシュフラ
ッシュ要求が複数ある場合、マルチプレクサ49は、外
部タグ読み出し装置42を一時停止させる。後続の入力
は、もし存在すれば2段目に入り、1段目のキャッシュ
フラッシュ要求が全て処理された後、1段目に入る。1
段目のキャッシュフラッシュ要求が1個だけになり、2
段目に要求が無い場合、マルチプレクサ49は、外部タ
グ読み出し装置42の動作を再開させる。
【0073】次に、本発明の第2実施例の動作について
説明する。通常動作している場合には、バスインタフェ
ース回路22、外部タグ制御装置24、外部タグ記憶装
置44の動作は、前述した第1実施例と同様であるので
説明を省略する。
【0074】図7及び図8に、本発明の第2実施例にお
けるキャッシュフラッシュ時の動作を説明するフローチ
ャートを示している。キャッシュフラッシュ操作は、以
下のサイクルを繰り返す。なお、図7中に示すステップ
D1〜D7,D17〜D21の処理は、図4中に示すス
テップC1〜C7,C13〜C17の処理と同一なの
で、該当する部分については簡単に説明する。また、キ
ャッシュフラッシュ装置40は、第1実施例と同様にパ
イプライン的に動作するが、詳細な説明を省略する。
【0075】プロセッサ10が全体制御装置38内のフ
ラッシュ開始ビットへ“1”を書き込むことで、キャッ
シュフラッシュ装置40は、キャッシュフラッシュ操作
を開始する。
【0076】パイプライン動作が可能になると、外部タ
グ読み出し装置42は、アドレス生成回数レジスタと開
始アドレスレジスタを読み出し、開始アドレス(r−a
ddr)をマルチプレクサ30を介して外部タグ記憶装
置44へ出力すると共に、開始アドレスをインクリメン
トして開始アドレスレジスタへ書き込み、アドレス生成
回数をデクリメントしてアドレス生成回数レジスタへ書
き込む(ステップD1〜D5)。
【0077】外部タグ記憶装置44は、タグ読み出しア
ドレス(r−addr)の下位1ビットを無視し、偶数
アドレスすなわち下位1ビットが“0”のアドレスと、
奇数アドレスすなわち下位1ビットが“1”のアドレス
のタグ(r−tag1,r−tag2)を同時に読み出
して、それぞれ外部タグ検査装置46,48へ出力する
(ステップD6,D7)。
【0078】なお、ここでは2個の外部タグ検査装置4
6,48が設けられた場合について説明しているが、例
えば4個の外部タグ検査装置を設けた場合、外部タグ記
憶装置44は、タグ読み出しアドレス(r−addr)
の下位2ビットを無視し、同時に4つのタグを読み出し
て、それぞれ外部タグ検査装置へ転送すれば良い。
【0079】外部タグ検査装置46,48は、それぞ
れ、外部タグ記憶装置44から読み出されたタグが、ダ
ーティ状態を示すか否かを調べ(ステップD8,D
9)、ダーティ状態を示すタグのみマルチプレクサ49
へ出力する。
【0080】マルチプレクサ49は、受け取ったタグを
外部タグ命令生成装置34へ出力する。同時に複数のタ
グを受け取った場合、マルチプレクサ49は、そのうち
一つを選択して出力し、残ったタグを単位バスサイクル
毎に1つづつ外部タグ命令生成装置34へ出力する(ス
テップD10〜D12)。
【0081】外部タグ命令生成装置34は、タグに含ま
れる物理アドレス部分を用いて、システムバス18への
キャッシュフラッシュ命令を生成し、FIFO36へ出
力する(ステップD13,D14)。
【0082】バスインタフェース回路22は、FIFO
36にキャッシュフラッシュ命令が格納されていれば、
システムバス18の使用権を獲得し(ステップD1
5)、FIFO36からキャッシュフラッシュ命令を取
り出して、システムバス18へ出力する(ステップD1
6)。
【0083】このサイクルは、予め全体制御装置38の
アドレス生成回数レジスタに設定された回数繰り返して
終了する(ステップD17〜D21)。以上のように本
発明の第2実施例によれば、前述した第1実施例の構成
による効果に加えて、キャッシュフラッシュ操作におい
て特に時間がかかるキャッシュタグ検査に対して、同時
に複数のタグを外部タグ記憶装置44から読み出して、
複数の外部タグ検査装置46,48で検査することによ
り、1バスクロック毎に複数のキャッシュブロックのタ
グについてダーティ状態か否かを検査することができ
る。従って、キャッシュタグ検査時間を大幅に短縮する
ことができる。例えば、第1実施例の構成と比較して、
キャッシュブロックのタグ検索時間を、ほぼ外部タグ検
査装置46,48の個数で割った時間に短縮される。
【0084】一方、ダーティなキャッシュブロックをメ
インメモリ12へ書き戻す操作に要する時間は、システ
ムバス18の転送能力によって一定時間に律速される。
従って、ダーティブロックが多い場合、書き戻し時間が
タグ検索時間より長いことがあり得る。また、ダーティ
なブロックが多い場合、1回のタグ検査で複数のブロッ
クがキャッシュフラッシュ要求を出し、マルチプレクサ
49が持つ緩衝装置に蓄えられる要求が一定量を越え
て、外部タグ読み出し装置42が一時停止され、それだ
けタグ検索時間が延びることもあり得る。
【0085】ここで、ダーティなブロックが少ないと仮
定すると、キャッシュフラッシュ時間は、タグ検索時間
とほぼ等しくなり、 キャッシュフラッシュ時間 =キャッシュブロック数/外部タグ検査装置個数(bus cycle ) …(3) である。なおダーティなブロックが多いか少ないかは、
プロセッサ10の性質、キャッシュ装置(キャッシュ1
6)の容量、実行するプログラムによって大きく異な
る。
【0086】なお、前述した構成では、図6に示すよう
に、外部タグ検査装置46,48のみを複数にする構成
を示しているが、本発明はこれに限定されるものではな
い。例えば、外部タグ検査装置を複数設けると共に、外
部タグ検査装置と同じ個数の外部タグ命令生成装置を設
け、複数の外部タグ命令生成装置の出力をマルチプレク
サ(mux)で一体化してもよい。また、例えば外部タ
グ検査装置を複数持つと共に、同じ個数の外部タグ命令
生成装置と、同じ個数のFIFOを持ち、FIFOの出
力をマルチプレクサで一本化してもよい。このように本
発明は、その主旨を逸脱しない範囲で種々に変形可能で
ある。
【0087】次に、本発明の第3実施例について説明す
る。図9は、本発明の第2実施例に係わる計算機システ
ムの要部構成を示すブロック図である。第3実施例は、
第2実施例の構成に、外部タグ高速記憶装置58、FI
FO62、マルチプレクサ63が付加されて構成され
る。なお第3の実施例においても、2個の外部タグ検査
装置46,48を設けた構成を例にして説明するが、本
発明はこれに限定されるものではないことは第2実施例
と同様である。
【0088】第3実施例では、外部タグ読み出し装置4
2、全体制御装置38、FIFO36、バスインタフェ
ース回路(バスI/F)22、外部タグ命令生成装置6
0、マルチプレクサ49は、第2実施例と同様であるか
ら説明を省略する。なお、マルチプレクサ49は、複数
の外部タグ検査装置46,48の出力を選択して、FI
FO62に出力する。また、マルチプレクサ64は、第
2実施例におけるマルチプレクサ30と同じ機能を有す
るが、選択した出力を外部タグ高速記憶装置58に出力
する。
【0089】外部タグ制御装置54は、バスインタフェ
ース回路22を介してシステムバス18をスヌープして
得られたタグを、キャッシュブロックを示す物理アドレ
スの部分(w−tag−a)と、キャッシュの状態を表
す部分(w−tag−d)に分割して出力する。
【0090】外部タグ記憶装置56は、外部タグ制御装
置54が出力するタグのキャッシュブロックを示す物理
アドレスの部分(w−tag−a)を受け取り、これを
記憶する。また、外部タグ記憶装置56は、マルチプレ
クサ63を介して得られたFIFO62からのダーティ
状態のキャッシュブロックアドレス(r−addr−
f)を受け取り、対応するキャッシュブロックを示す物
理アドレスを読み出して外部タグ命令生成装置60へ出
力する(r−data−f)。
【0091】外部タグ高速記憶装置58は、外部タグ制
御装置54が出力するタグのキャッシュの状態を表す部
分(w−tag−d)を受け取り、記憶する。外部タグ
高速記憶装置58が記憶するキャッシュブロック数は、
外部タグ記憶装置56のキャッシュブロック数と等し
い。第3実施例では第1実施例で述べたように、キャッ
シュの状態として、対応するキャッシュブロックがダー
ティかどうかを示す1ビットを保持する。外部タグ高速
記憶装置58は、次の二つの動作を行う。第一に外部タ
グ高速記憶装置58は、外部タグ制御装置54から出力
されるタグアドレス(w−addr)に従って、タグ
(w−addr−d)を格納する。第二に外部タグ高速
記憶装置58は、外部タグ読み出し装置42から出力さ
れるアドレス(r−addr)に従って、同時に二つの
タグ(r−tag1,r−tag2)を読み出し、それ
ぞれ外部タグ検査装置46,48へ出力する。
【0092】外部タグ検査装置46,48は、外部タグ
高速記憶装置58から読み出されたタグ(r−tag
1,r−tag2)が、ダーティ状態を示すか否かを検
査する。ダーティ状態である場合、外部タグ検査装置4
6,48は、全体制御装置38が持つ開始アドレスレジ
スタの値と、検査を担当している部分を表す下位アドレ
スから、キャッシュブロックアドレスを生成して出力す
る。例えば、開始アドレスレジスタの値を「10」と
し、r−tag1を奇数側タグ、r−tag2を偶数側
タグとした場合、両者ともダーティ状態であれば、外部
タグ検査装置46からの出力r−fsh1には「11」
が、外部タグ検査装置48からの出力r−fsh2には
「10」がキャッシュブロックアドレスとして出力され
る。
【0093】FIFO62は、マルチプレクサ49がア
ドレス(r−flush)を出力する時間と、外部タグ
記憶装置56をアクセスするサイクル時間との差を緩衝
する装置である。FIFO62は、フラッシュするキャ
ッシュブロックのアドレス(r−flush)を受け取
り、外部タグ記憶装置56がアクセスできるタイミンク
で、キャッシュブロックアドレス(r−addr−f)
を、マルチプレクサ63を介して外部タグ記憶装置56
に出力する。
【0094】マルチプレクサ63は、外部タグ制御装置
56がタグ(w−tag−a)を書き込む時に出力する
キャッシュブロックアドレス(w−addr)と、FI
FO62がタグ(r−addr−f)を読み出す時に出
力するキャッシュブロックアドレス(r−addr−
f)の何れかを選択して、外部タグ記憶装置56へ出力
する。同時に要求があった場合は、マルチプレクサ63
は、外部タグ制御装置56のキャッシュブロックアドレ
ス(w−addr)を優先して選択し、外部タグ記憶装
置56に出力する。
【0095】次に、本発明の第3実施例の動作について
説明する。通常動作している場合には、バスインタフェ
ース回路22の動作は、前述した第1実施例と同様であ
るので説明を省略する。外部タグ制御装置54は、バス
インタフェース回路22がシステムバス18上のトラン
ザクションをスヌープして得た、キャッシュタグの状態
を変化させるトランザクション(snoop)から、キ
ャッシュブロックを示す物理アドレス(w−tag−
a)を外部タグ記憶装置56へ、キャッシュの状態(w
−tag−d)を外部タグ高速記憶装置58へ出力し、
それぞれアドレス(w−addr)で示す位置に記憶さ
せる。
【0096】図10及び図11は、本発明の第3実施例
におけるキャッシュフラッシュ時の動作を説明するフロ
ーチャートを示している。キャッシュフラッシュ操作
は、以下のサイクルを繰り返す。なお、図10中に示す
ステップE1〜E6,E18〜E22の処理は、図4中
に示すステップC1〜C6,C13〜C17の処理と同
一なので、該当する部分については簡単に説明する。ま
た、キャッシュフラッシュ装置50は、第1実施例と同
様にパイプライン的に動作するが、詳細な説明を省略す
る。
【0097】プロセッサ10が全体制御装置38内のフ
ラッシュ開始ビットへ“1”を書き込むことで、キャッ
シュフラッシュ装置50は、キャッシュフラッシュ操作
を開始する。
【0098】パイプライン動作が可能になると、外部タ
グ読み出し装置42は、アドレス生成回数レジスタと開
始アドレスレジスタを読み出し、開始アドレス(r−a
ddr)をマルチプレクサ64を介して外部タグ高速記
憶装置58へ出力すると共に、開始アドレスをインクリ
メントして開始アドレスレジスタへ書き込み、アドレス
生成回数をデクリメントしてアドレス生成回数レジスタ
へ書き込む(ステップE1〜E5)。
【0099】外部タグ高速記憶装置58は、タグ読み出
しアドレス(r−addr)の下位1ビットを無視し、
偶数アドレスすなわち下位1ビットが“0”のアドレス
と、奇数アドレスすなわち下位1ビットが“1”のアド
レスのタグ(r−tag1,r−tag2)を同時に読
み出して、それぞれ外部タグ検査装置46,48へ出力
する(ステップE6,E7)。
【0100】外部タグ検査装置46,48は、それぞ
れ、外部タグ高速記憶装置58から読み出したタグが、
ダーティ状態を示すか否かを調べ(ステップE8,E
9)、ダーティ状態を示す場合のみ、そのタグのキャッ
シュブロックのアドレスを求めてマルチプレクサ49へ
出力する。
【0101】マルチプレクサ49は、受け取ったキャッ
シュブロックのアドレスをFIFO62へ出力する。同
時に複数のキャッシュブロックアドレスを受け取った場
合、マルチプレクサ49は、そのうち一つを選択して出
力し、残ったアドレスを単位バスサイクル毎に1つづつ
FIFO62へ出力する(ステップE10〜E12)。
【0102】FIFO62は、外部タグ記憶装置56が
読み出せるタイミングで、キャッシュブロックアドレス
をマルチプレクサ63を通して外部タグ記憶装置56へ
出力する(ステップE13)。
【0103】外部タグ記憶装置56は、FIFO62か
らキャッシュブロックアドレスを受け取ると、キャッシ
ュブロック物理アドレス(r−data−f)を読み出
して、外部タグ命令生成装置60へ出力する。外部タグ
命令生成装置60は、キャッシュブロック物理アドレス
からシステムバス18へ出力すべきキャッシュフラッシ
ュ命令を生成し、FIFO36へ出力する(ステップE
14,E15)。
【0104】バスインタフェース回路22は、FIFO
36にキャッシュフラッシュ命令が格納されていれば、
システムバス18の使用権を獲得し(ステップE1
6)、FIFO36からキャッシュフラッシュ命令を取
り出して、システムバス18へ出力する(ステップE1
7)。
【0105】このサイクルは、予め全体制御装置38の
アドレス生成回数レジスタに設定された回数繰り返して
終了する(ステップE18〜E22)。以上のように本
発明の第3実施例によれば、キャッシュフラッシュ装置
50内でキャッシュタグを記憶するための装置を、物理
アドレスを記憶するための外部タグ記憶装置56と、キ
ャッシュの状態を記憶する外部タグ高速記憶装置58に
分割して設けることにより、各々に対して異なるアクセ
ス時間を持つことができるので、物理ブロックアドレス
とキャッシュ状態のそれぞれの性質に合ったデバイスを
用いて作製することが可能になる。
【0106】すなわち、キャッシュの状態を検査するこ
とは、指定されたアドレス範囲を一通りアクセスする必
要があり、アクセス回数が多い。しかし、キャッシュ1
6に格納されたデータの状態(スヌープ状態)は、1キ
ャッシュブロックあたり数ビット(本実施例ではダーテ
ィを示す1ビット)であり、全キャッシュブロックの状
態を格納するのに必要な容量は少ない。従って、外部タ
グ高速記憶装置58には、小容量高速なデバイスを用い
ることができる。一方、キャッシュの物理アドレスは、
1キャッシュブロックあたり、一般に10ビットから2
0ビット程度あり、タグの状態に較べて多くの容量が必
要である。しかし、キャッシュの物理アドレスは、ダー
ティ状態であるブロックのみ読み出せば良いので、ダー
ティ状態のブロック数が少なければ、物理アドレスに対
するアクセス時間が長くても全体のキャッシュフラッシ
ュ操作に要する時間に影響しない。従って、外部タグ記
憶装置56には、大容量低速なデバイスを用いることが
できる。
【0107】なお、各実施例の変形として、バスインタ
フェース回路22は、特定アドレス範囲のコマンドのみ
を取り込むようにすることで、キャッシュフラッシュを
一律に行なうのではなく、ある特定の範囲に対して行な
うことも可能である。
【0108】
【発明の効果】以上詳述したように本発明によれば、キ
ャッシュフラッシュ操作に要する時間を短縮して、シス
テム性能を向上させることが可能となるものである。
【図面の簡単な説明】
【図1】本発明の一実施例に係わる計算機システムの要
部構成を示すブロック図。
【図2】第1実施例における計算機システムが通常動作
している場合のキャッシュフラッシュ装置20の動作を
説明するためのフローチャート。
【図3】第1実施例におけるプロセッサ10からキャッ
シュフラッシュ装置20を使う方法を説明するためのフ
ローチャート。
【図4】第1実施例におけるキャッシュフラッシュ時の
動作を説明するためのフローチャート。
【図5】第1実施例におけるパイプライン的動作を説明
するための図。
【図6】本発明の第2実施例に係わる計算機システムの
要部構成を示すブロック図。
【図7】第2実施例におけるキャッシュフラッシュ時の
動作を説明するためのフローチャートの一部。
【図8】第2実施例におけるキャッシュフラッシュ時の
動作を説明するためのフローチャートの一部。
【図9】本発明の第3実施例に係わる計算機システムの
要部構成を示すブロック図。
【図10】第3実施例におけるキャッシュフラッシュ時
の動作を説明するためのフローチャートの一部。
【図11】第3実施例におけるキャッシュフラッシュ時
の動作を説明するためのフローチャートの一部。
【図12】従来のキャッシュフラッシュ操作を説明する
ためのプログラムの一例を示す図。
【符号の説明】
10…プロセッサ(CPU)、12…主記憶装置(メイ
ンメモリ)、14…キャッシュタグ(タグ)、16…キ
ャッシュメモリ(キャッシュ)、18…システムバス、
20,,40,50…キャッシュフラッシュ装置、22
…バスインタフェース回路(バスI/F)、24…外部
タグ制御装置、26,56…外部タグ記憶装置、28,
56…外部タグ読み出し装置、30,49,63,64
…マルチプレクサ(MUX)、32,46,48…外部
タグ検査装置、34,60…外部タグ命令生成装置、3
6,62…FIFO(先入れ先だしバッファ)、38…
全体制御装置、58…外部タグ高速記憶装置。
フロントページの続き (56)参考文献 特開 平2−217943(JP,A) 特開 平4−245350(JP,A) 特開 平5−6308(JP,A) 特開 平5−108481(JP,A) 特開 平6−44136(JP,A) 特開 平7−311712(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 12/08 - 12/12 G06F 11/14 G06F 11/00 - 11/00 350 G06F 12/00 - 12/00 549

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 バススヌープ機能を有するコピーバック
    型のキャッシュメモリを備えた少なくとも1個のプロセ
    ッサと、メインメモリと、前記プロセッサと前記メイン
    メモリとを接続するシステムバスを有する計算機システ
    ムにおけるキャッシュフラッシュ装置であって、 システムバスで交わされるキャッシュメモリ上でデータ
    更新が発生したことを示すコマンドを含む各種コマンド
    を監視する監視手段と、 前記キャッシュメモリに格納されたデータを示すアドレ
    ス及びデータが更新状態であるか否かを示す状態情報か
    ら構成される情報を記憶するもので、前記監視手段によ
    り監視されたコマンドに基づいて、キャッシュメモリ上
    でデータ更新されたことを検出した場合に、前記監視手
    段により監視されたコマンドが対象とする更新されたデ
    ータを示すアドレスを記憶し、かつ、前記データの前記
    状態情報を更新状態であることを示すように変更して
    憶するアドレス記憶手段と、前記プロセッサから 前記キャッシュメモリ上の更新され
    たデータの前記メインメモリへの書き戻しを指示された
    場合に、前記アドレス記憶手段に格納されている情報を
    順次読み出す読み出し手段と、 前記読み出し手段によって読み出された情報に基づい
    て、更新されたデータを持つキャッシュメモリから前記
    メインメモリへの、更新されたデータの転送を要求する
    コマンドを前記システムバスに出力するコマンド出力手
    段とを具備することを特徴とするキャッシュフラッシュ
    装置。
  2. 【請求項2】 プロセッサから出力された、複数のキャ
    ッシュ間でデータの一貫性を保持する必要のあるリード
    動作コマンドにより、メインメモリから前記プロセッサ
    のキャッシュメモリへデータ転送が発生したことを検出
    する手段と、 前記リード動作コマンドに対して、同コマンドが対象と
    するデータが共有状態であることを示す応答をする手段
    とを具備したことを特徴とする請求項1記載のキャッシ
    ュフラッシュ装置。
  3. 【請求項3】 前記読み出し手段は、前記アドレス記憶
    手段から同時に複数の情報を読み出し、 前記読み出し手段によって読み出された複数の情報のそ
    れぞれについて、前記状態情報をもとに更新状態のデー
    タを示すかを検査する検査手段と、 前記検査手段によって得られた情報に含まれるアドレス
    をもとに、前記システムバスに出力すべき前記更新され
    たデータの転送を要求するコマンドを順次生成する命令
    生成手段とを具備したことを特徴とする請求項1記載の
    キャッシュフラッシュ装置。
  4. 【請求項4】 前記アドレス記憶手段は、前記監視手段
    により監視されたコマンドが対象とする更新されたデー
    タを示すアドレスを記憶する第1の記憶手段と、前記
    ータが更新状態であるか否かを示す状態情報を記憶する
    第2の記憶手段から構成され、 前記読み出し手段は、前記第2の記憶手段から同時に複
    数の状態情報を読み出し、 前記読み出し手段によって読み出された複数の状態情報
    のそれぞれについて、更新状態のデータを示すかを検査
    する検査手段と、 前記検査手段による検査結果に応じて、前記第1の記憶
    手段から該当するアドレスを読み出して、前記システム
    バスに出力すべき前記更新されたデータの転送を要求す
    るコマンドを順次生成する命令生成手段とを具備したこ
    とを特徴とする請求項1記載のキャッシュフラッシュ装
    置。
JP7151732A 1995-06-19 1995-06-19 キャッシュフラッシュ装置 Expired - Fee Related JP2902976B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP7151732A JP2902976B2 (ja) 1995-06-19 1995-06-19 キャッシュフラッシュ装置
US08/653,909 US5745730A (en) 1995-06-19 1996-05-28 Apparatus and methods for implementing dedicated cache flushing
EP96304420A EP0750262B1 (en) 1995-06-19 1996-06-13 Apparatus for flushing the contents of a cache memory
DE69614779T DE69614779T2 (de) 1995-06-19 1996-06-13 Vorrichtung zum Überschreiben des Cache-Speicherinhalts
CN96107629A CN1084896C (zh) 1995-06-19 1996-06-17 清空高速缓冲存储器内容的装置
KR1019960021796A KR100212361B1 (ko) 1995-06-19 1996-06-17 캐시 메모리의 내용을 플러시하는 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7151732A JP2902976B2 (ja) 1995-06-19 1995-06-19 キャッシュフラッシュ装置

Publications (2)

Publication Number Publication Date
JPH096680A JPH096680A (ja) 1997-01-10
JP2902976B2 true JP2902976B2 (ja) 1999-06-07

Family

ID=15525088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7151732A Expired - Fee Related JP2902976B2 (ja) 1995-06-19 1995-06-19 キャッシュフラッシュ装置

Country Status (6)

Country Link
US (1) US5745730A (ja)
EP (1) EP0750262B1 (ja)
JP (1) JP2902976B2 (ja)
KR (1) KR100212361B1 (ja)
CN (1) CN1084896C (ja)
DE (1) DE69614779T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009512078A (ja) * 2005-10-19 2009-03-19 インテル・コーポレーション スレッド間同期通信技術
CN101800521B (zh) * 2010-02-09 2013-01-23 上海山景集成电路股份有限公司 用于对数增益放大器的电阻控制网络

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
TW379298B (en) * 1996-09-30 2000-01-11 Toshiba Corp Memory updating history saving device and memory updating history saving method
JPH10320274A (ja) * 1997-03-19 1998-12-04 Toshiba Corp キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
US6295581B1 (en) * 1998-02-20 2001-09-25 Ati Technologies, Inc. Method and apparatus for assuring cache coherency
JP4303803B2 (ja) * 1998-04-22 2009-07-29 株式会社東芝 キャッシュフラッシュ装置
JP2000010810A (ja) 1998-06-22 2000-01-14 Toshiba Corp トランザクション処理のコミット制御方法および同方法が適用される計算機システム
US6629209B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation Cache coherency protocol permitting sharing of a locked data granule
US6629214B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation Extended cache coherency protocol with a persistent “lock acquired” state
US6549989B1 (en) * 1999-11-09 2003-04-15 International Business Machines Corporation Extended cache coherency protocol with a “lock released” state
US6625701B1 (en) 1999-11-09 2003-09-23 International Business Machines Corporation Extended cache coherency protocol with a modified store instruction lock release indicator
US6629212B1 (en) 1999-11-09 2003-09-30 International Business Machines Corporation High speed lock acquisition mechanism with time parameterized cache coherency states
US6658532B1 (en) * 1999-12-15 2003-12-02 Intel Corporation Cache flushing
GB2401227B (en) * 1999-12-30 2005-03-16 Intel Corp Cache line flush micro-architectural implementation method and system
US6546462B1 (en) * 1999-12-30 2003-04-08 Intel Corporation CLFLUSH micro-architectural implementation method and system
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6745294B1 (en) * 2001-06-08 2004-06-01 Hewlett-Packard Development Company, L.P. Multi-processor computer system with lock driven cache-flushing system
US6675262B1 (en) * 2001-06-08 2004-01-06 Hewlett-Packard Company, L.P. Multi-processor computer system with cache-flushing system using memory recall
US7082551B2 (en) * 2001-06-29 2006-07-25 Bull Hn Information Systems Inc. Method and data processing system providing checkpoint/restart across multiple heterogeneous computer systems
JP3804823B2 (ja) * 2001-07-03 2006-08-02 日本電気株式会社 障害回復機能を備えたキャッシュシステムとそのキャッシュ制御方法
US7114038B2 (en) * 2001-12-28 2006-09-26 Intel Corporation Method and apparatus for communicating between integrated circuits in a low power mode
US7062612B2 (en) * 2002-12-12 2006-06-13 International Business Machines Corporation Updating remote locked cache
US7099995B2 (en) * 2004-02-17 2006-08-29 International Business Machines Corporation Metadata access during error handling routines
CN100437499C (zh) * 2005-09-26 2008-11-26 英业达股份有限公司 计算机平台快取资料备援处理方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8814077D0 (en) * 1988-06-14 1988-07-20 Int Computers Ltd Data memory system
US5025365A (en) * 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
EP0412353A3 (en) * 1989-08-11 1992-05-27 Hitachi, Ltd. Multiprocessor cache system having three states for generating invalidating signals upon write accesses
DE4136729C2 (de) * 1990-11-05 1995-07-20 Mitsubishi Electric Corp Cache-Steuereinrichtung
US5479630A (en) * 1991-04-03 1995-12-26 Silicon Graphics Inc. Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same
US5414827A (en) * 1991-12-19 1995-05-09 Opti, Inc. Automatic cache flush
US5375216A (en) * 1992-02-28 1994-12-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
US5524233A (en) * 1993-03-31 1996-06-04 Intel Corporation Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations
US5636374A (en) * 1994-01-04 1997-06-03 Intel Corporation Method and apparatus for performing operations based upon the addresses of microinstructions
US5553264A (en) * 1994-06-24 1996-09-03 Digital Equipment Corporation Method and apparatus for efficient cache refilling by the use of forced cache misses

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009512078A (ja) * 2005-10-19 2009-03-19 インテル・コーポレーション スレッド間同期通信技術
JP2012234561A (ja) * 2005-10-19 2012-11-29 Intel Corp スレッド間同期通信のための装置、システム、および、その方法
CN101800521B (zh) * 2010-02-09 2013-01-23 上海山景集成电路股份有限公司 用于对数增益放大器的电阻控制网络

Also Published As

Publication number Publication date
KR100212361B1 (ko) 1999-08-02
JPH096680A (ja) 1997-01-10
DE69614779D1 (de) 2001-10-04
EP0750262B1 (en) 2001-08-29
DE69614779T2 (de) 2002-03-07
CN1084896C (zh) 2002-05-15
EP0750262A3 (en) 1998-01-21
US5745730A (en) 1998-04-28
KR970002652A (ko) 1997-01-28
CN1142634A (zh) 1997-02-12
EP0750262A2 (en) 1996-12-27

Similar Documents

Publication Publication Date Title
JP2902976B2 (ja) キャッシュフラッシュ装置
US8688951B2 (en) Operating system virtual memory management for hardware transactional memory
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
KR100243853B1 (ko) 개량된메모리아키텍쳐를위한방법및장치
JP2916421B2 (ja) キャッシュフラッシュ装置およびデータ処理方法
JP2717752B2 (ja) プロセッサ
JP3016575B2 (ja) 複数キャッシュ・メモリ・アクセス方法
US6418515B1 (en) Cache flush unit
US20130080709A1 (en) System and Method for Performing Memory Operations In A Computing System
JP3236287B2 (ja) マルチプロセッサシステム
US6587922B2 (en) Multiprocessor system
US6658537B2 (en) DMA driven processor cache
KR20060102565A (ko) 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법
EP1030243A1 (en) Optimized hardware cleaning function for virtual index virtual tag data cache
JPH11328016A (ja) 命令キャッシュとデ―タ・キャッシュ間のコヒ―レンシを維持する方法および装置
EP0624845A1 (en) Information processing system comprising one or more cached devices
JPH0916472A (ja) キャッシュメモリ試験方法
TWI243999B (en) Apparatus and related method for maintaining read caching data of south bridge with north bridge
JPH07234819A (ja) キャッシュメモリ
JP3052460B2 (ja) 協調処理型情報処理装置
JPH0793215A (ja) 半導体記憶装置
JP6493187B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法
JPH10320274A (ja) キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
JPH11149409A (ja) メモリコントローラおよびコンピュータシステム
JPH08328953A (ja) 計算機システム

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080319

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090319

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees