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

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

Info

Publication number
JP4303803B2
JP4303803B2 JP11216098A JP11216098A JP4303803B2 JP 4303803 B2 JP4303803 B2 JP 4303803B2 JP 11216098 A JP11216098 A JP 11216098A JP 11216098 A JP11216098 A JP 11216098A JP 4303803 B2 JP4303803 B2 JP 4303803B2
Authority
JP
Japan
Prior art keywords
ram
mbt
cache
buffer
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
JP11216098A
Other languages
English (en)
Other versions
JPH11306081A (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 JP11216098A priority Critical patent/JP4303803B2/ja
Priority to US09/231,828 priority patent/US6418515B1/en
Publication of JPH11306081A publication Critical patent/JPH11306081A/ja
Application granted granted Critical
Publication of JP4303803B2 publication Critical patent/JP4303803B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating

Description

【0001】
【発明の属する技術分野】
本発明は、キャッシュを有するユニプロセッサまたはマルチプロセッサにより構成される計算機システムに適用されるキャッシュフラッシュ装置及び方法に関する。
【0002】
【従来の技術】
一般に、計算機においては、プロセッサによるメインメモリへのアクセスを高速化するために、プロセッサが必要とするデータを一時的に格納するキャッシュが用いられている。通常、このキャッシュは、キャッシュブロックと呼ばれる所定の大きさのデータ単位でデータを保持する。また、このキャッシュは、キャッシュタグと呼ばれる管理情報を保持して、キャッシュに格納したキャッシュブロックのデータが、メインメモリの中のどのデータであるのか、およびプロセッサによって変更されてメインメモリの内容と異なっている状態(モディファイド状態、ダーティ状態)にあるか等を管理している。
【0003】
プロセッサを複数設けた計算機システム(マルチプロセッサシステム)においては、複数のキャッシュ間でデータの一貫性を保証するために、スヌープ機構をもったキャッシュがよく用いられる。このスヌープ機構は、バス上に発行されたバスコマンド(又はトランザクション)が、自身のキャッシュに格納されたデータに影響を与えないか、あるいは自身のキャッシュに格納されたデータを応答として返さなければならないかを監視し、必要であれば、該当するデータの無効化などを行うものである。
【0004】
コピーバック型のキャッシュの場合、すなわち、プロセッサによるデータの更新を直ちにメインメモリに反映させないタイプのキャッシュの場合、プロセッサによってキャッシュ上で変更されてメインメモリの内容と異なっているデータ(モディファイド状態のデータ)を、積極的にメインメモリへ書き戻す操作が必要となる。例えば、スヌープ機構を持たない入出力装置に対してキャッシュが保持するデータを転送する場合などに必要となる。このキャッシュが保持するデータのうち、モディファイド状態にあるデータをメインメモリに書き戻すことをキャッシュフラッシュと呼ぶ。また、モディファイド状態にあるキャッシュブロックをモディファイドブロックと呼ぶ。
【0005】
このキャッシュフラッシュは、特に、チェックポイント方式の計算機において必要とされる処理である。すなわち、計算機に何らかの障害が発生したときに、予め取得しておいたチェックポイントの時点から処理を再開するチェックポイント方式の計算機の場合、各チェックポイントの時点で、キャッシュ中にのみ存在する変更されたデータをまとめてメインメモリに書き戻す(キャッシュフラッシュする)必要があるためである。
【0006】
上記キャッシュフラッシュ操作を実現する方式としては、プロセッサにキャッシュフラッシュ命令を実行させる方式と、キャッシュフラッシュ装置を用いてキャッシュフラッシュ命令を実行させる方式とが挙げられる。
【0007】
【発明が解決しようとする課題】
プロセッサにキャッシュフラッシュ命令を実行させる方式では、キャッシュフラッシュを実行している期間中は、そのプロセッサが他のプログラムを実行することはできないため、本来のデータ処理を停止させなければならず、システム全体の性能低下を招いてしまう。また、プロセッサの種類によってはキャッシュが全て無効化されるものがある。キャッシュが全て無効化された場合、処理を再開させる時には全ての命令、データをメインメモリから再び読み出さなくてはならないため、処理再開時のオーバーヘッドが大きい。特に、プロセッサにキャッシュフラッシュ命令を実行させる方式では、キャッシュフラッシュ時間を短縮するのに有効な2相チェックポイント方式(チェックポイント取得システム(特願平7-151739))を採用することができないという問題がある。
【0008】
一方、キャッシュフラッシュ装置を用いる方式では、キャッシュ上のモディファイドブロックに関するアドレス情報を保持する記憶部がキャッシュフラッシュ装置に備えられるが、この記憶部に保持されたモディファイドブロックの格納位置を検索するのに無駄な時間を費やしてしまうという問題がある。特に、チェックポイント処理時においては、キャッシュフラッシュのために全てのモディファイドブロックのアドレスを記録手段から逐次読み出さなければならず、この際にモディファイドブロックの格納位置を検索するのにかなりの時間をかけてしまう。このことは、特にチェックポイント処理時におけるオーバーヘッドを増大してしまうことになる。
【0009】
本発明は上記実情に鑑みてなされたものであり、高速なキャッシュフラッシュを実現し、チェックポイント処理時におけるオーバーヘッドを低減するキャッシュフラッシュ装置及び方法を提供することを目的とする。
【0010】
【課題を解決するための手段】
上記課題を解決するために、本発明のキャッシュフラッシュ装置は、キャッシュを有するプロセッサを少なくとも一つ備えた計算機システムに適用されるキャッシュフラッシュ装置において、全プロセッサ分のキャッシュのモディファイドブロックに関するアドレス情報をキャッシュライン単位で各エントリに記憶する第1の記憶手段と、前記第1の記憶手段上の各エントリのうち、少なくとも一つのモディファイドブロックのアドレスを含むエントリのインデックスを検索するために使用する情報を記憶する第2の記憶手段とを具備し、前記第2の記憶手段の情報を使用することによってモディファイドブロックのアドレスを高速に読み出せるようにしたことを特徴とする。
【0011】
また、上記課題を解決するために、本発明のキャッシュフラッシュ装置は、キャッシュを有するプロセッサを少なくとも一つ備えた計算機システムに適用されるキャッシュフラッシュ装置において、全プロセッサ分のキャッシュのモディファイドブロックに関するアドレス情報をキャッシュライン単位で各エントリに記憶する第1の記憶手段と、前記第1の記憶手段上の各エントリのうち、少なくとも一つのモディファイドブロックのアドレスを含むエントリのインデックスを検索するための情報として、各エントリ内にある全プロセッサ分のモディファイビットを論理和した値を有するデータを前記インデックスに対応付けて記憶する第2の記憶手段とを具備し、前記第2の記憶手段の情報を使用することによってモディファイドブロックのアドレスを高速に読み出せるようにしたことを特徴とする。
【0047】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
【0048】
まず、実施の形態を詳細に説明する前に、本発明を理解しやすくする観点から、各実施の形態に表現された発明の基本的な考えを簡単に説明しておく。
【0049】
本発明のキャッシュフラッシュ装置は、全プロセッサ分のキャッシュのモディファイドブロックに関するアドレス情報をキャッシュライン単位で各エントリに記憶するMBT(Modified Block Table)メモリ(実施形態ではMBT Tag RAM)の 他に、このMBTメモリ上の各エントリのうち、少なくとも一つのモディファイドブロックのアドレスを含むエントリのインデックスを検索するための情報として、各エントリ内にある全プロセッサ分のモディファイビットを論理和した値を有するデータを前記インデックスと共に記憶するMF(Modified Flag)メモリ( 実施形態ではMF RAM)を備えている。
【0050】
キャッシュフラッシュ時には、MFメモリに記憶された情報を用いることによってモディファイドブロックのアドレスを高速に読み出せるようにし、キャッシュフラッシュの高速化を実現するというものである。
【0051】
MFメモリに記憶すべき情報を生成するには、まず、MBTメモリに登録されているモディファイドビットを、キャッシュライン毎に、全プロセッサ分について論理和をとる。そして、キャッシュライン毎に得られた論理和の結果を所定のビット数分(所定のキャッシュライン数分)まとめてMFメモリに保存する。キャッシュライトバック時には、MFメモリの中を検索することで、MBTメモリ上のモディファイドブロックを含むエントリのインデックスを取り出し、これにより対応するモディファイドブロックのアドレスをMBTメモリから読み出せるので、キャッシュライトバックの高速化が可能となるのである。
【0052】
従来方式では、ライトバック時にはMBTメモリを“モディファイドブロックの検索”と“モディファイドブロックの読み出し”とで共用していたため、MBTメモリアクセスがチェックポイント処理のボトルネックとなっていたが、本発明によれば、MFメモリを追加することで、MBTメモリにおいて“モディファイドブロックの読み出し”に専念できる。このように“モディファイドブロックの検索”をMFメモリを用いて行うことにより、MBTメモリのアクセスの際に、モディファイドブロックのアドレスのみを高速に読み出せるのである。
【0053】
また、本発明において、2相チェックポイント方式と呼ばれる技術の全部又は一部を採用することで効果を一層向上させることが可能となる。
【0054】
本実施形態で採用する2相チェックポイント方式は、チェックポイント時のキャッシュ書き戻し時間を短縮するための方式であり、ファーストフェーズとセカンドフェーズとがある。ファーストフェーズチェックポイントではプロセッサ間の同期を取らず、プロセッサが通常処理をしながらキャッシュフラッシュを行う。よって、ファーストフェーズチェックポイント終了時点ではプロセッサ内に(新たに発生した)モディファイドブロックが存在しており、システム状態は確定していない。一方、セカンドフェーズチェックポイントではプロセッサ間で同期を取り、ワークエリアを除いてプロセッサはキャッシュにモディファイドブロックを生成しない状態でキャッシュフラッシュを実行するというものである。
【0055】
[第1実施形態]
図1は、本発明に係るキャッシュフラッシュ装置が適用される計算機システムの構成の一例を示すブロック図である。
【0056】
図1において、1は本発明のキャッシュフラッシュ装置であり、プロセッサのキャッシュ状態を監視し、高速なキャッシュフラッシュを行う。
【0057】
2はMF RAMであり、MBT Tag RAM3上のモディファイドブロックを持つエント リ(キャッシュライン)のインデックスをキャッシュフラッシュ時に高速に検索するためのメモリである。このMF RAM2は、MBT Tag RAM3におけるインデック スを検索するために使用する情報を記憶しており、MBT Tag RAM3のインデック ス単位で、当該インデックスの一部とデータ(モディファイドフラグ及びパリティビットを含む)とを各エントリに記憶している。
【0058】
3はMBT Tag RAM(MBTメモリ)であり、MBT(Modified Block Table)と 呼ばれるテーブルを有している。MBTは、全プロセッサ分のキャッシュのモディファイドブロックに関するアドレス情報をキャッシュライン単位で各エントリに記憶しており、インデックスとデータ(全プロセッサ分のタグ、モディファイドビット、及びパリティビットを含む)とを記憶している。また、MBT Tag RAM 3は、キャッシュフラッシュを実行することが可能なハードウェアであり、キャッシュフラッシュが実行されると、ワークエリアを除いてMBT上のキャッシュステートがクリーン(MESIプロトコルの場合、S(Shared)又はI(Invalid)) となる。
【0059】
5はプロセッサバスであり、プロセッサ、メモリ、バスブリッジ等が接続され、データの受け渡しを行う。
【0060】
701、711、721、731はプロセッサ(CPU0〜3)である。702、712、722、732はそれぞれプロセッサ(CPU0〜3)701、711、721、731に接続されるキャッシュである。
【0061】
800はメモリコントローラであり、主記憶の制御を行う。801はメモリバスであり、メモリコントローラとメモリモジュール間のデータの受け渡しと制御信号の伝播を行う。810、811、812、813はメモリモジュールであり、DRAMで構成されるメモリの実体である。
【0062】
900はPCIブリッジであり、プロセッサバス5とPCIバス901の間のデータ転送を行う。901はPCIバスである。910はPCIバスエージェントの一例であるISAブリッジであり、PCIバス901とISAバス911のデータ転送を行う。920はPCIバスエージェントの一例であるLANアダプタであり、PCIバス901とLAN921のデータ転送を行う。921はLANであり、他のコンピュータシステムとの通信を行う。
【0063】
950はPCIブリッジであり、プロセッサバス5とPCIバス951の間のデータ転送を行う。960はPCIバスエージェントの一例であるグラフィックアダプタであり、ディスプレイ961の表示制御を行う。961はディスプレイである。970はPCIバスエージェントの一例であるディスクコントローラであり、ディスク971とPCIバス951のデータ転送を行う。971はディスクであり、データを保存する。
【0064】
この第1実施形態のキャッシュフラッシュ装置は、キャッシュ上のブロック毎のキャッシュステートを示すアドレス情報を記憶するMBT Tag RAM3と、このMBT Tag RAM3に記憶されたアドレス情報のうちのモディファイドブロック情報を有するエントリのインデックスを検索するための情報として、当該第1の記憶手段の各エントリ内にある複数のモディファイビットの論理和した値を有するデータを前記インデックスと共に記憶するMF RAM2とを備えている。
【0065】
キャッシュフラッシュ時には、MF RAM2に記憶された情報を用いることによって、MF RAM2における少なくとも一つのモディファイドブロックを有するエントリのインデックスを検索できるようにし、キャッシュフラッシュの高速化を実現するというものである。
【0066】
MF RAM2に記憶すべき情報を生成するには、まず、MBT Tag RAM3に登録され ているモディファイドビットを、キャッシュライン毎に、全プロセッサ分(例えばCPU4つ分)について論理和をとる。そして、キャッシュライン毎に得られた論理和の結果を例えば8ビット分(キャッシュライン8本分)まとめてMF RAM2に保存する。キャッシュライトバック時には、MF RAM2の中を検索することで、MBT Tag RAM3上のモディファイドブロックを含むエントリのインデックスを 取り出し、これにより対応するモディファイドブロックのアドレスをMBT Tag RAM3から読み出せるので、キャッシュライトバックの高速化が可能となる。なお 、こうした一連の処理の詳細については後で説明する。
【0067】
図2は、本発明の第1実施形態に係るキャッシュフラッシュ装置の構成を示すブロック図である。
【0068】
200はMF RAM制御部であり、MF RAMの制御とMF RAMデータの生成を行う。
【0069】
201はMF RAMアドレス出力レジスタであり、MF RAMのインデックスであるSRAMアドレスを保持する。
【0070】
202はMF RAMアドレスセレクタであり、MF RAMリードアドレスバッファ203の出力とMF RAMライトバッファ211の出力からMF RAMアドレス出力レジスタ201のアドレスを選択する。
【0071】
203はMF RAMリードアドレスバッファであり、MF RAMへのリードアクセスを保持するFIFOバッファである。
【0072】
204はMF RAMアドレスマッチバッファであり、MF RAMリードアドレスセレクタ205の出力がMF RAMリードアドレスバッファ203に入力されるまでの3サイクルで、MF RAM制御部200の先行するアクセスに同一MF RAMインデックスのエントリが存在するか否かを検出する機構である。
【0073】
205はMF RAMリードアドレスセレクタであり、MF RAMインデックスカウンタ206とT2Fアクセスバッファ207の出力からMF RAMアドレスマッチバッファ204の入力を選択する。
【0074】
206は、キャッシュフラッシュ時にMF RAMを検索するためのアドレスを生成する12ビットのインデックスカウンタである。
【0075】
207はT2Fアクセスバッファであり、MBT Tag RAM制御部300からのMF RAM更新要求を受け取るためのFIFOバッファである。
【0076】
210はMF RAMライトデータレジスタであり、次にMF RAMに書き込むデータを保持する。
【0077】
211はMF RAMライトバッファであり、MF RAMに書き込むデータを保持するFIFOバッファである。
【0078】
220はMF RAMリードデータレジスタであり、MF RAM2からのリードデータとそれに対応するMF RAMインデックス、MF RAM更新情報等を保持する。
【0079】
221はMF RAMモディファイド検出機構であり、MF RAMインデックスカウンタ206で生成されたMF RAMアドレスによるMF RAM2からのリードデータであるモディファイドフラグ8ビットの論理和をとり、このMF RAMインデックスに対応するキャッシュブロックに“Modified”が存在するか否かを判定する。
【0080】
222はMF RAM先読みバッファであり、MF RAMモディファイド検出機構221で“Modified”があると判定されたMF RAMデータを保持するFIFOバッファである。
【0081】
223はMF RAMキャッシュフラッシュ系変更ロジックであり、MF RAM先読みバッファ222にあるモディファイドフラグと対応するMF RAMインデックスからMBT Tag RAMインデックスを復元してMBT Tag RAM制御部300に通知し、全てのモディファイドフラグを通知し終えるとモディファイドフラグを全て“0”にしてMF RAMライトバッファ211に通知する。尚、MF RAMキャッシュフラッシュ系変更ロジックとMF RAMライトバッファ211はハンドシェーク方式でデータの受け渡しを行う。
【0082】
224はMF RAM通常系変更ロジックであり、MF RAM2から読み込んだデータをMBT Tag RAM制御部300に指定された値に変更してMF RAMライトバッファ21 1に通知する。尚、MF RAM通常系変更ロジックからの出力要求があるとMF RAMライトバッファ211に無条件で登録する。
【0083】
300はMBT Tag RAM制御部であり、MBT Tag RAMの制御とMBT Tag RAMデータ の生成を行う。
【0084】
301はMBT Tag RAMアドレス出力レジスタであり、MBT Tag RAM3のインデックスであるSRAMアドレスを保持する。
【0085】
302はMBT Tag RAMアドレスセレクタであり、MBT Tag RAMリードアドレスバッファ203の出力とMBT Tag RAMライトバッファ311の出力からMBT Tag RAMアドレス出力レジスタ301のアドレスを選択する。
【0086】
303はMBT Tag RAMリードアドレスバッファであり、MBT Tag RAMへのリードアクセスを保持するFIFOバッファである。
【0087】
304はMBT Tag RAMアドレスマッチバッファであり、MBT Tag RAMリードアドレスセレクタ305の出力がMBT Tag RAMリードアドレスバッファ303に入力 されるまでの3サイクルで、MBT Tag RAM制御部300の先行するアクセスに同 一MBT Tag RAMインデックスのエントリが存在するか否かを検出する機構である 。
【0088】
305はMBT Tag RAMリードアドレスセレクタであり、MBT Tag RAMインデックスカウンタ306とF2Tアクセスバッファ307の出力、およびB2Tアクセスバッファ308からMBT Tag RAMアドレスマッチバッファ304の入力を選択 する。
【0089】
306は、ファーストフェーズのキャッシュフラッシュ時にMBT Tag RAMを検 索するためのアドレスを生成する15ビットのインデックスカウンタである。
【0090】
307はF2Tアクセスバッファであり、MF RAM制御部200からのMBT Tag RAM検索要求を受け取るためのFIFOバッファである。セカンドフェーズのラ イトバックに使用される。
【0091】
308はB2Tアクセスバッファであり、プロセッサバススヌーパ500からのMBT Tag RAM変更要求を受け取るためのFIFOバッファである。通常処理時 のMBT変更に使用される。
【0092】
310はMBT Tag RAMライトデータレジスタであり、次にMBT Tag RAMに書き込むデータを保持する。
【0093】
311はMBT Tag RAMライトバッファであり、MBT Tag RAMに書き込むデータを保持するFIFOバッファである。
【0094】
320はMBT Tag RAMリードデータレジスタであり、MBT Tag RAM3からのリードデータとそれに対応するMBT Tag RAMインデックス、MBT Tag RAM更新情報等を保持する。
【0095】
321はMBT Tag RAMモディファイド検出機構であり、MBT Tag RAMインデックスカウンタ306で生成されたMBT Tag RAMアドレス、またはF2Tアクセスバ ッファ307から出力されたMBT Tag RAMアドレスによるMBT Tag RAM3からのリードデータのうちモディファイドビット4ビットの論理和をとり、このMBT Tag RAMインデックスに対応するキャッシュブロックに“Modified”が存在するか否 かを判定する。
【0096】
322はMBT Tag RAM先読みバッファであり、MBT Tag RAMモディファイド検出機構321で“Modified”があると判定されたMBT Tag RAMデータを保持するF IFOバッファである。
【0097】
323はMBT Tag RAMキャッシュフラッシュ系変更ロジックであり、MBT Tag RAM先読みバッファ322にあるモディファイドビットと対応するMBT Tag RAMイ ンデックスからモディファイドブロックの物理アドレスを復元してMBWBバッファ400に通知し、全てのモディファイドビットを通知し終えるとモディファイドビットを全て“0”にしてMBT Tag RAMライトバッファ311に通知する。 尚、MBT Tag RAMキャッシュフラッシュ系変更ロジックとMBT Tag RAMライトバッファ311はハンドシェーク方式でデータの受け渡しを行う。
【0098】
324はMBT Tag RAM通常系変更ロジックであり、MBT Tag RAM3から読み込んだデータをプロセッサバススヌーパ500でのバススヌープ結果に対応する値に変更してMBT Tag RAMライトバッファ311に通知する。尚、MBT Tag RAM通常系変更ロジックからの出力要求があるとMBT Tag RAMライトバッファ311に無条 件で登録する。また、既に“Modified”が登録されているブロックに対して新たなモディファイが登録される場合、古いモディファイブロックの物理アドレスをMBWBバッファ400に通知してモディファイブロックのライトバックを強制的に行わせてMBTとプロセッサのキャッシュステートに矛盾が発生しないように させる。
【0099】
400はMBWBバッファであり、MBT Tag RAM制御部300からのモディフ ァイドブロックライトバック要求を保持する。
【0100】
401はキャッシュフラッシュ系ライトバックバッファであり、MBT Tag RAM キャッシュフラッシュ系変更ロジック323から通知されたモディファイブロックライトバック要求を保持するFIFOバッファである。尚、本バッファはMBT Tag RAMキャッシュフラッシュ系変更ロジック323とハンドシェークでデータ の受け渡しを行う。
【0101】
402は通常処理系ライトバックバッファであり、MBT Tag RAM通常処理系変 更ロジック324から通知されたモディファイブロックライトバック要求を保持するFIFOバッファである。尚、本バッファはMBT Tag RAM通常処理系変更ロ ジック324からライトバック要求を受け付けると無条件で登録する。
【0102】
403はライトバックバッファであり、ライトバックスピード調整機構410と通常処理系ライトバックバッファ402からのライトバック要求を受け取り、保持するFIFOバッファである。本バッファは、ライトバックスピード調整機構410と通常処理系ライトバックバッファ402とハンドシェーク方式でデータの受け渡しを行う。通常処理系ライトバックバッファ402からのライトバック要求がある場合には通常処理系ライトバックバッファ402からのライトバック要求を登録する。通常処理系ライトバックバッファ402からのライトバック要求がなく、ライトバックスピード調整機構410からのライトバック要求がある場合にはライトバックスピード調整機構410からのライトバック要求を登録する。
【0103】
410はライトバックスピード調整機構であり、ファーストフェーズでのチェックポイント処理のときにキャッシュフラッシュ系ライトバックバッファ401からのライトバック要求をライトバックバッファ401に通知する間隔を調整する。
【0104】
500はプロセッサバススヌーパであり、プロセッサバス5上のバストランザクションを監視し、キャッシュ状態が変化する場合にMBT Tag RAM制御部300 に通知する。
【0105】
600はバスマスタであり、プロセッサバス5へバストランザクションを発行する。
【0106】
601はバス出力レジスタであり、プロセッサバスへ出力するキャッシュフラッシュアドレスを保持する。
【0107】
ところで、従来方式においては、上記MF RAM2及びMF RAM制御部200を設けずに、以下のような構成を採っていた。すなわち、MBT Tag RAM3にインデック スカウンタを直結することにより、キャッシュフラッシュ時にモディファイドブロックを探し出し、バスにキャッシュフラッシュを誘発するメモリリードを発行する。メモリ検索時には読みだしたラインに必ずしも“Modified”があるとは限らないので、以下に示す“先読みバッファ”を設ける。
【0108】
先読みバッファはMBT出力アドレス確定からデータラッチまでのサイクル数(4サイクル)に若干のマージンをもたせた段数(8段)のFIFOバッファで、“Modified”のあるラインだけをバッファに取り込み、“Modified”のないラインは取り込まないようにしてある。アドレス出力の段階では読みだしたラインに“Modified”があるか否かわからないので、読み出し中の全てのラインに“Modified”がある場合でもバッファの取りこぼしがないようにしなくてはならない。よって、先読みバッファの空きエントリがMBT出力アドレス確定からデータラッチまでのサイクル数(4サイクル)になった時点でメモリリード発行を停止する必要がある。
【0109】
“Modified”のあるラインを効率よく捜すという観点からすると、先読みバッファは深い程良い(段数が多い程よい)。しかし、1ライン32バイトの36ビットアドレスを4プロセッサ分まとめて1Mバイトダイレクトマップ方式のMB Tで管理すると1エントリあたり、
・インデックス:15ビット(1Mバイト(20ビット)を1ライン32バ イト(5ビット)単位で管理)
・タグ:64ビット(16ビットを4プロセッサ分)
・モディファイドフラグ:4ビット(1ビットを4プロセッサ分)
の83ビットが最低限必要である。フリップフロップは1個あたり10ゲート強のハード量を必要とするので、先読みバッファ322は1エントリあたり約1k ゲートのハード量が必要となる。
【0110】
モディファイドライン検索は(“Modified”が全く存在しない最速の場合でも)インデックス全体分かかる。上記例では、1サイクルに1個読むとすると32kサイクル(15ビット分)かかる計算になる。
【0111】
従来においてはこうした非効率の問題があったが、本発明の第1実施形態は、以下に説明するようにこれを解消するものである。
【0112】
第1実施形態では、プロセッサバス5上でやり取りされる物理アドレスは、32バイトの36ビット幅をもち、タグ(16ビット)、インデックス(15ビット)、及びブロック(5ビット)により構成されるものとする。
【0113】
上記MBT Tag RAM3では、1ライン36ビット幅の物理アドレスを4プロセッ サ分まとめて1Mバイトダイレクトマップ方式のMBTで管理する。この場合、1ラインあたり、
・インデックス:15ビット
・タグ(データ):64ビット
・モディファイドビット(データ):4ビット
・パリティ:4ビット
の構成となる。
【0114】
MF RAM2では、MBT Tag RAM3における4つのモディファイドビットの論理和 を8個つなげたものを1エントリする。この場合、1ラインあたり、
・インデックス:12ビット(15ビット中3ビットをデータとする)
・モディファイドフラグ(データ):8ビット
・パリティ:1ビット
の構成となる。
【0115】
MBT Tag RAM3、MF RAM2のインデックスとタグは、実メモリアドレスに対し て図3のように対応する。
【0116】
MBT Tag RAM3では、アドレス[4:0]はキャッシュライン内の情報なので無視してよい。MBTはキャッシュライン単位で管理しているためである。アドレス[19:5]は、MBT Tag RAM3のインデックス(アドレス)として扱われる。アドレス[35:20]は、MBT Tag RAM3のタグ(データ)として扱われる。タグはキャッシュ フラッシュ時にインデックスと組み合わせてキャッシュラインの実アドレスを復元するのに使用される。
【0117】
MF RAM2では、アドレス[7:5]をモディファイドフラグとよび、MF RAM2のデ ータとして扱われる。アドレス[19:8]は、MF RAM2のインデックス(アドレス)として扱われる。キャッシュフラッシュ時にはインデックスとモディファイドフラグを組み合わせてMBT Tag RAM3のインデックスを復元する。尚、MF RAM2はMBT Tag RAM3のうち“Modified”が登録されているインデックスを見つけるために使用するので、タグ情報を必要としない。
【0118】
図4は、物理アドレス〜MBT Tag RAM情報〜MF RAM情報の順で情報を変換する 手順を示す。一方、図5は、MF RAM情報〜MBT Tag RAM情報〜物理アドレスの順 で情報を逆変換する手順を示す。
【0119】
ここでは、32ビットデータに4つのパリティビットをもつ36ビット幅データのSSRAMをMBT Tag RAM用に2個、MF RAM用に1個使用するものとする。
【0120】
MBT Tag RAM3では、各SSRAMのデータ部にタグ情報を、パリティビット にモディファイド情報とプロセッサ単位の(タグ+モディファイドビット)パリティを記録する。すなわち、2個のSSRAMデータ64ビットとパリティ8ビットを図6のように使用する。図6では、8ビットあるパリティビットを4ビットずつに分け、便宜上P[3:0]とM[3:0]とに分けて記載してある。
【0121】
MF RAM2では、4バイト幅のデータをもつSSRAMのうち1バイトを使用してモディファイドフラグを記録し、パリティビットにモディファイドフラグ8ビットのパリティを記録する。MF RAMの各ビットの構成を図7に示す。
【0122】
ここで、図4及び図5を参照して情報を変換する原理について説明する。
【0123】
図4に示すように、プロセッサバス物理アドレスの中のインデックスは、そのままMBT Tag RAM3のインデックスとして記録され、プロセッサバス物理アドレ スの中のタグは、モディファイドフラグと共にMBT Tag RAM3のデータとして記 録される。
【0124】
次に、MBT Tag RAM3のインデックスの一部(12ビット)は、MF RAM2のイ ンデックスとして記録され、残りの一部(3ビット)は、MF RAM2のモディファイドフラグ(データ)を生成するのに利用される。MBT Tag RAM3の全モディフ ァイドビットを論理和した結果を8ビット分まとめたものがMF RAM2のデータとして記録される。すなわち、MBT Tag RAM3のデータに1つでもモディファイド のものがあれば、その論理和は“1”となる。この場合、例えばMBT Tag RAM3 のインデックスのうちの最後の3ビットが“010”であるとすると、MF RAM2上の該当するモディファイドフラグ“MF2”の値が“1”となる。
【0125】
一方、図5に示すように、MF RAM2のインデックス及びデータからMBT Tag RAM3のインデックスが復元される。例えば、“MF2”の値が“1”であれば、MBT Tag RAM3のインデックスのうちの最後の3ビットが導き出され、MBT Tag RAM3のインデックス全体が復元される。これにより、モディファイドブロックを 持つキャッシュラインのインデックスが検出される。
【0126】
次に、通常処理時の情報の更新手順について例を挙げて説明する。
【0127】
通常処理時でのMBT Tag RAM3とMF RAM2の更新は以下のようにして行う。
【0128】
プロセッサバス5にMBTを変更するトランザクションが発行されると、MBT Tag RAM3を引き、キャッシュステートを変更する。このとき、1ライン上の全 プロセッサ分のモディファイドビットの論理和をとり、この論理和の結果をMBT Tag RAM3のインデックスと一緒にしてMF RAM2に通知する。なお、より効率的 にするため、各プロセッサのモディファイドビットの論理和の結果がもともと記録されていたモディファイドビットの論理和と異なる場合にのみMF RAM2に対して変更要求を出すようにしてもよい(詳細については第7実施形態で説明する)。
【0129】
例えば、もともとのキャッシュステートが全てのプロセッサについてクリーンであったときプロセッサバスにCPU1からRead and Invalidateが発行された 場合、CPU1のキャッシュステートは“Modified”に変更される。すなわち、
MBT Tag RAMモディファイドビットは“0000”→“0010”
MF RAMモディファイドフラグは“0”→“1”(変更要求を出す)
となる。
【0130】
このとき、CPU1のキャッシュステートの論理和は、“0”から“1”に変化する。よって、MBTはMF RAM2に対して“1”を登録するように要求する。さらに同じindexに対してCPU2がRead and Invalidateトランザクションを発行した場合、MBT本体はCPU2が“Clean”から“Modified”になるので変 更されるが、プロセッサのキャッシュステートの論理和は“1”のまま変更されないので、MF RAM2には変更要求を出さない。すなわち、
MBT Tag RAMモディファイドビットは“0010”→“0110”
MF RAMモディファイドフラグは“1”→“1”(変更要求を出さない)
となる。
【0131】
この後、CPU1が“Modified”を持っているラインに対してCPU3がReadトランザクションを発行すると、MBTのキャッシュステートは変更されるがCPU2が依然として“Modified”を持っているので、MF RAM2には変更要求が出ない。すなわち、
MBT Tag RAMモディファイドビットは“0110”→“0100”
MF RAMモディファイドフラグは“1”→“1”(変更要求を出さない)
となる。
【0132】
さらにCPU2が“Modified”を持っているラインに対してプロセッサ0がRead and Invalidateトランザクションを発行するとMBT Tag RAMのキャッシュステートは変更されるが“Modified”をもっているプロセッサが移動するだけなのでMF RAM2には変更要求が出ない。すなわち、
MBT Tag RAMモディファイドビットは“0100”→“0001”
MF RAMモディファイドフラグは“1”→“1”(変更要求を出さない)
となる。
【0133】
最後にプロセッサ0が“Modified”を持っているラインに対してCPU3がReadトランザクションを発行すると、MBT Tag RAM3上の対応するインデックスに おいて“Modified”をもっているプロセッサが無くなるのでMF RAM2に変更要求が出る。MBTはMF RAM2を読み出してこのビットを変更して書き戻す。すなわち、
MBT Tag RAMモディファイドビットは“0001”→“0000”
MF RAMモディファイドフラグは“1”→“0”(変更要求を出す)
となる。
【0134】
(キャッシュフラッシュ時の動作)
次に、キャッシュフラッシュ時の動作を図8を参照して説明する。
【0135】
キャッシュフラッシュ処理を起動すると、MF RAM2のアドレス(インデックス)生成回路に接続された12ビットカウンタを順次インクリメントして(ステップA1)、MF RAM2を読み出す(ステップA2)。
【0136】
先読みバッファ222ではMF RAMデータのうち、1個でもモディファイドフラグが“1”であるものがあればバッファに登録する(ステップA3)。先読みバッファ222に登録されたデータは順番にMF RAM変更ロジック223に読み込まれる(ステップA4)。MF RAM変更ロジック223ではインデックスとMF RAM2のモディファイドフラグのビット位置からMBT Tag RAM3のインデックスを復元 し(ステップA5)、MBT Tag RAM3に通知する(ステップA6)。
【0137】
各インデックスのモディファイドフラグが“1”であるものを全てMBT Tag RAM3に通知するとモディファイドフラグを全て“0”にして(ステップA7)、MF RAM2用のライトバッファ211に転送し(ステップA8)、先読みバッファ 222から次のエントリを読み出す(ステップA9)。ライトバッファ211が一杯になるとMF RAM2にモディファイドフラグが全て“0”のデータを書き戻す(ステップA10)。
【0138】
一方、MBT Tag RAM3では、MF RAM2から通知されたインデックスを順次読み 出す(ステップA11)。MF RAM2から通知されるインデックスには少なくとも1個のモディファイドラインが登録されている。よって、読みだしたデータは必ず先読みバッファ322に登録される(ステップA12)。以後、MBT Tag RAM データとインデックスからプロセッサ内にあるモディファイドラインの実アドレスを復元して(ステップA13)、バス上にReadトランザクションを発行し(ステップA14)、モディファイドブロックをライトバックさせる(ステップA15)。
【0139】
一方、上記ステップA13の後、MBT Tag RAM3のモディファイドビットを全 て“0”にし(ステップA16)、当該モディファイドビットを全て“0”にしたデータをMBT Tag RAM3のライトバッファ311に送り(ステップA17)、 先読みバッファ322から新たなデータを読み出す(ステップA18)。ライトバッファ311が一杯になるとデータをMBT Tag RAM3に書き戻す(ステップA 19)。
【0140】
尚、プロセッサ内に“Modified”を残さないセカンドフェーズ(後で詳述)のキャッシュフラッシュの場合には、MBTに同期化用のハードウェアを設け、キャッシュフラッシュ命令を受け取る前後を区別するバリアを作りキャッシュフラッシュ命令以前の処理がMF RAM、MBT Tag RAMの両方で完了してからキャッシュ フラッシュを実行しなくてはならない。
【0141】
(通常処理時の動作)
通常処理時の動作を図9〜図12に示す。また、この場合の情報の流れを図13に示す。以下、情報の流れに沿って説明する。
【0142】
この通常処理においては、バストランザクションによるキャッシュ情報の更新処理(MBT登録)が行われる。
【0143】
プロセッサバス5上のバストランザクションをプロセッサバススヌーパ500がスヌープし(ステップB1)、キャッシュ状態を変化させるトランザクションであれば、B2Tアクセスバッファ308に通知し、MBT Tag RAM更新要求を発 行する(ステップB2)。
【0144】
MBT Tag RAMリードアドレスバッファ303に登録可能であれば、B2Tアク セスバッファ308から出力されたMBT Tag RAM更新要求は、MBT Tag RAMリードアドレスセレクタ305で選択され、MBT Tag RAMアドレスマッチバッファ30 4に入力される(ステップB3)。MBT Tag RAMアドレスマッチバッファ304 では、入力が現在MBT Tag RAM制御部300で処理中のエントリに同一のMBT Tag RAMインデックスが一致するものが存在するか否かをチェックする(ステップB4)。同一インデックスのものがあれば、MBT Tag RAMリードアドレスバッファ 303登録時にインデックスマッチフラグを立てる(ステップB5)。同一インデックスのものが無ければインデックスマッチフラグを立てない(ステップB6)。MBT Tag RAMアドレスマッチバッファ304はパイプライン化されているの で、入力から3サイクルでMBT Tag RAMリードアドレスバッファ303に登録さ れる。MBT Tag RAMリードアドレスバッファ303では、先頭のエントリのイン デックスマッチフラグが立っていなければMBT Tag RAMアドレスセレクタ302 にリード要求を出力する。インデックスマッチフラグが立っていれば、先行するMBT Tag RAM更新処理が全て終了するまで待ち(ステップB7、B8)、インデ ックスマッチフラグを落とす(ステップB9)。MBT Tag RAMアドレスセレクタ 302にMBT Tag RAMリード要求が出力されると(ステップB10)、MBT Tag RAMアドレスセレクタ302では、優先順位に応じてMBT Tag RAMライトバッファ 311とMBT Tag RAMリードアドレスバッファ303からMBT Tag RAMアクセス要求を選択する(ステップB11)。MBT Tag RAMアドレスセレクタ302でMBT Tag RAMリードアドレスバッファ303からのリードアクセス要求が選択されると、MBT Tag RAMアドレス出力レジスタに登録され(ステップB12)、MBT Tag RAM3へのアクセスが行われる(ステップB13)。
【0145】
MBT Tag RAM3からのリードデータはMBT Tag RAMリードデータレジスタ320に登録される(ステップB14)。このとき、MBT Tag RAM制御部300内部で 通知されるMBT Tag RAMインデックス、プロセッサID、キャッシュステート更 新値も同時にMBT Tag RAMリードデータレジスタ320に登録される。MBT Tag RAMリードデータレジスタ320に登録されたMBT Tag RAM更新要求は直ちにMBT Tag RAM通常系変更ロジック324に通知される(ステップB15)。MBT Tag RAM通常系変更ロジック324からはMBT Tag RAMライトバッファ311、T2Fアクセスバッファ207、通常処理系ライトバックバッファ402の3つのモジュールにデータ出力する(ステップB16)。以下、それぞれのデータの流れに沿って順に説明する。
【0146】
MBT Tag RAM通常系変更ロジック324で変更されたMBT Tag RAMデータはMBT Tag RAMライトバッファ311に登録される(ステップC1)。MBT Tag RAMライトバッファ311は、2種類のMBT Tag RAMライト要求をMBT Tag RAMアドレスセレクタ302に出力する(ステップC2)。空きがある一定個数以下になると出力する高優先順位ライト要求と通常のライト要求である。MBT Tag RAMアドレス セレクタ302は、高優先順位ライト要求が出力されている場合かMBT Tag RAM リードアドレスバッファの先頭のエントリのインデックスマッチフラグが立っている場合、もしくは現在セレクタがライト要求を選択している場合の3通り以外はリード要求を優先して選択する。MBT Tag RAMアドレスセレクタ302でライ ト要求が選択されると(ステップC3)、MBT Tag RAMライトデータレジスタ3 10にライトデータを、MBT Tag RAMアドレス出力レジスタ301にライトアド レスを登録し(ステップC4)、MBT Tag RAM3のデータを更新する(ステップ C5)。
【0147】
一方、MBT Tag RAM通常系変更ロジック324で、既にモディファイドブロッ クが登録されているプロセッサが新たに別のモディファイドブロックが登録される場合、MBT Tag RAM3に登録されていたモディファイドブロックは通常処理系 ライトバックバッファ402に追い出される(ステップD1)。通常処理系ライトバックバッファ402に登録されたモディファイドブロックは順にライトバックバッファ403に転送される(ステップD2)。ライトバックバッファ403に登録されたモディファイドブロックはプロセッサバスマスタ600に通知され(ステップD3)、バス出力レジスタ601を経由してプロセッサバス5に出力され(ステップD4)、プロセッサのキャッシュ状態とID状態を一致させる(ステップD5)。
【0148】
一方、MBT Tag RAM通常系変更ロジック324で、MBT Tag RAM3のモディファイドビットのリードデータの論理和と、更新後のモディファイドビットの論理和とが異なっていればT2Fアクセスバッファ207にMBT Tag RAM3のインデッ クスとモディファイドビットの論理和であるモディファイドフラグの値を通知する(ステップE1)。MF RAMリードアドレスバッファが受け取り可能であればT2Fアクセスバッファ207からのリード要求はMF RAMリードアドレスセレクタ205で選択され(ステップE2)、MF RAMアドレスマッチバッファ204でMF RAM制御部200で処理中のエントリとインデックスマッチを行い(ステップE3)、その結果をMF RAMリードアドレスバッファ203に登録する(ステップE4)。MF RAMリードアドレスバッファ203の先頭のエントリのインデックスマッチフラグが立っていなければMF RAMリード要求がMF RAMアドレスセレクタ202に通知される(ステップE5)。MF RAMアドレスセレクタ202でリード要求が選択されるとMF RAMアドレス出力レジスタ201を通じてMF RAM2にリード要求が出力される(ステップE6)。
【0149】
MF RAMリードデータはMF RAMリードデータレジスタ220にMF RAMインデックス、モディファイドフラグ更新情報とともに登録される(ステップE7)。MF RAMリードデータレジスタ220のデータは直ちにMF RAM通常系変更ロジック224に転送される(ステップE8)。MF RAM通常系変更ロジック224で更新されたデータはMF RAMライトバッファ211に登録される(ステップE9)。
【0150】
MF RAMライトバッファ211は、2種類のMF RAMライト要求をMF RAMアドレスセレクタ202に出力する(ステップE10)。空きがある一定個数以下になると出力する高優先順位ライト要求と通常のライト要求である。MF RAMアドレスセレクタ202は、高優先順位ライト要求が出力されている場合かMF RAMリードアドレスバッファの先頭のエントリのインデックスマッチフラグが立っている場合、もしくは現在セレクタがライト要求を選択している場合の3通り以外はリード要求を優先して選択する。MF RAMアドレスセレクタ202でライト要求が選択されると(ステップE11)、MF RAMライトデータレジスタ210にライトデータを、MF RAMアドレス出力レジスタ201にライトアドレスを出力し(ステップE12)、MF RAM2のデータを更新する(ステップE13)。
【0151】
(セカンドフェーズチェックポイント時の動作)
セカンドフェーズチェックポイント時の動作を図14〜図16に示す。また、この場合の情報の流れを図17に示す。以下、情報の流れに沿って説明する。
【0152】
このセカンドフェーズチェックポイント時においては、MBT登録を中断した状態でキャッシュフラッシュが実行される。
【0153】
セカンドフェーズのチェックポイントを起動すると、MF RAMリードアドレスバッファ203が受け付け可能であればMF RAMインデックスカウンタ206を順次インクリメントし(ステップF1)、MF RAMリードアドレスセレクタ205、MF RAMインデックスマッチバッファ204を経由してMF RAMリードアドレスバッファ203にその値を登録する(ステップF2)。MF RAMリードアドレスバッファ203の先頭のエントリのインデックスマッチフラグが立っていなければMF RAMアドレスセレクタ202にリード要求を出力する(ステップF3)。MF RAMアドレスセレクタ202でリードが選択されると(ステップF4)、MF RAMアドレス出力レジスタ201を経由してMF RAM2にリード要求を出力する(ステップF5)。
【0154】
MF RAM2からのリードデータは、MF RAMインデックスともにMF RAMリードデータレジスタ220に登録する(ステップF6)。MF RAMリードデータレジスタの出力はMF RAMモディファイド検出機構221に入力される(ステップF7)。MF RAMモディファイド検出機構221ではモディファイドフラグ8ビットの論理和をとり、一つでもモディファイドフラグが立っていればMF RAM先読みバッファ222に登録する(ステップF8)。なお、モディファイドフラグが一つも立っていなければそのデータは捨てる。MF RAMキャッシュフラッシュ系変更ロジック223が受け付け可能であればMF RAM先読みバッファ222からデータを転送する(ステップF9)。MF RAMキャッシュフラッシュ系変更ロジック223では、MF RAMのインデックスとモディファイドフラグのビット位置からMBT Tag RAM3の インデックスを復元し(ステップF10)、F2Tアクセスバッファ307に通知する(ステップF11)。また、全てのモディファイドフラグの処理を終了すると、モディファイドフラグを全て“0”にして(ステップF12)、MF RAMライトバッファ211に通知する(ステップF13)。
【0155】
MF RAMライトバッファ211に登録されたデータは通常のMBT更新処理と同様にMF RAMライト要求をMF RAMアドレスセレクタ202に通知し(ステップF14)、ライト要求が選択されると(ステップF15)、データをMF RAMライトデータレジスタ210に入力してMF RAM2に書き込む(ステップF16)。
【0156】
一方、上記ステップF11の後、F2Tアクセスバッファ307がMF RAMキャッシュフラッシュ系変更ロジック223からのライトバック要求を受け取ると(ステップG1)、MBT Tag RAMリードアドレスセレクタ305、MBT Tag RAMインデックスマッチバッファ304を経由してMBT Tag RAMリードアドレスバッファ 303にその要求を登録する(ステップG2)。MBT Tag RAMリードアドレスバ ッファ303では先頭のエントリのインデックスマッチフラグが立っていなければMBT Tag RAMアドレスセレクタ302にリード要求を出力する(ステップG3 )。MBT Tag RAMアドレスセレクタ302でリード要求が選択されると(ステッ プG4)、MBT Tag RAMアドレス出力レジスタ301からMBT Tag RAM3にリード要求が出力される(ステップG5)。
【0157】
MBT Tag RAM3からのリードデータはMBT Tag RAMインデックスとともにMBT Tag RAMリードデータレジスタ320に登録される(ステップG6)。MBT Tag RAMリードデータレジスタ320の出力は直ちにMBT Tag RAMモディファイド検出機 構321に入力される(ステップG7)。MBT Tag RAMモディファイド検出機構 321では、MBT Tag RAMデータの中でプロセッサ単位でつけられたモディファ イドビットの論理和をとり、モディファイドブロックが一つでもあればMBT Tag RAM先読みバッファ322に登録する(ステップG8)。なお、モディファイド ブロックが存在しなければそのエントリは捨てる。ここで、セカンドフェーズではMF RAM2で“Modified”があるとされたエントリのみを読み出しているので、実際にはMBT Tag RAM先読みバッファ322に必ず登録される。MBT Tag RAMキャッシュフラッシュ系変更ロジック323が受け付け可能であればMBT Tag RAM先 読みバッファ322からデータを転送し(ステップG9)、MBT Tag RAMのイン デックスとMBT Tag RAMのデータであるタグから物理アドレスを復元して(ステ ップG10)、キャッシュフラッシュ系ライトバックバッファ401に登録する(ステップG11)。また、全てのモディファイドブロックの処理を終了すると、モディファイドビットを全て“0”にして(ステップG12)、MBT Tag RAM ライトバッファ311に登録する(ステップG13)。
【0158】
MBT Tag RAMライトバッファ311に登録されたデータは通常のMBT更新処 理と同様にMBT Tag RAMライト要求をMBT Tag RAMアドレスセレクタ302に通知し(ステップG14)、ライト要求が選択されると(ステップG15)、データをMBT Tag RAMライトデータレジスタ310に入力してMBT Tag RAM3に書き込む(ステップG16)。
【0159】
一方、上記ステップG11の後、キャッシュフラッシュ系ライトバックバッファ401からの出力はライトバックスピード調整機構410を通り(ステップH1)、ライトバックスピード調整機構410を通過可能であればライトバックバッファ403に登録される(ステップH2)。ライトバックバッファ403の出力はプロセッサバスマスタ600に通知され(ステップH3)、プロセッサバス出力レジスタ601を通してプロセッサバス5に発行される(ステップH4)。
【0160】
第1実施形態には、次のような利点がある。
【0161】
・MF RAM2のデータ量は8ビット程度であり、MBT Tag RAM3の72ビット 程度に比べて少ないので、MF RAM2を用いたキャッシュフラッシュ装置では検索用バッファのハード量も少なくて済み、効率がよい。
【0162】
・従来はMBT Tag RAM3に対する検索がシステム動作のボトルネックとなっ ていたが、MF RAM2を付加することでMBT Tag RAM3のモディファイドブロック へのヒット率が100%となり、効率を最大にすることができる。
【0163】
・メモリアクセスの局所性によりモディファイドブロックはメモリのいくつかの離散的な特定領域に集中する傾向がある。MBT Tag RAM3がある一つの特定 領域の処理をしている間にMF RAM2によって次の特定領域を独立して検索できるので、検索のオーバーヘッドを大幅に低減できる。
【0164】
ところで、前述した第1実施形態の方式において、効率化のためにMBT登録を実行しながらキャッシュフラッシュを行おうとした場合、バッファ制御が難しくなり、デッドロックを引き起こしやすくなる。そこで、この問題を解決する手法について、以下に説明する。
【0165】
(第1実施形態の変形例)
前述した第1実施形態の方式において、MF RAM2およびMBT Tag RAM3はイン オーダーで処理するものとする。ファーストフェーズのキャッシュフラッシュを開始すると以下の二つの方向のデータが流れる。
【0166】
・プロセッサバスのスヌープによるMBT Tag RAM3からMF RAM2への変更要 求
・キャッシュフラッシュ起動によるMF RAM2からMBT Tag RAM3へのキャッ シュフラッシュ要求
MBT Tag RAM3のアドレス生成部とMF RAM2のアドレス生成部の両方において 同時にインデックスマッチが発生すると、MBT Tag RAM3とMF RAM2が同時にビ ジー状態になりデッドロックに陥る可能性がある。すなわち、MBT Tag RAM3はMF RAM2へ変更通知を発行しなければ後続の処理が実行できないが、MF RAM2が ビジーであるため変更通知を発行できない。一方、MF RAM2もMBT Tag RAM3が ビジーであるのでキャッシュフラッシュ要求を発行することができない。
【0167】
後続の処理を実行するためにはMF RAM2もしくはMBT Tag RAM3のいずれか一 方のビジーが解除されないとならないが、第1実施形態の方式ではMF RAM2はMBT Tag RAM3に、MBT Tag RAM3はMF RAM2に要求を受け取ってもらわないとならないため、時間が経過してもビジーは解除されない。
【0168】
以下に、デッドロック状態に陥らないようにし、かつデッドロックに陥ってしまった場合にデッドロックを解消するための方法を述べる。
【0169】
デッドロックに陥らないようにするためには、リクエスト受け付けバッファを十分に深くし、かつ通常はリクエスト受け付けバッファにはあまり詰め込まないようにしてビジー発生時にリクエストを受け付けてビジーを解消するように制御する。リクエスト受け付けバッファは相手側の先読みバッファ(MF RAM2の場合はMBT Tag RAM3の先読みバッファ322、MBT Tag RAM3の場合はMF RAM2の先読みバッファ306)の段数に、相手の先読みバッファ1段あたりの最大リクエスト発行数を掛けた段数が最低限必要である。例えば、MBT Tag RAM3のMF RAM 2からの変更要求受け付けバッファの段数は、
(MF RAM先読みバッファ段数)×(1段あたりの最大キャッシュフラッシュ要求数)
= 6段×8
= 48段
以上必要となる。一方、MF RAM2のMBT Tag RAM3からの変更要求受け付けバッ ファの段数は、
(MBT Tag RAM先読みバッファ段数)×(1段あたりのMF RAM変更要求数 )
= 8段×1
= 8段
以上必要となる。
【0170】
よって、この例の場合にはMF RAM2側のリクエスト受け付けバッファに8段以上の余裕を持たせてビジーを解消させるようにするのがよい。実際にはリクエスト受け付けバッファにはさらに4〜8段程度のマージンをもたせないとビジーが多発し性能が出ない。よって、MF RAM2のリクエスト受け付けバッファは16段程度、MBT Tag RAM3のリクエスト受け付けバッファは8段程度が適正値となる 。尚、マージンはMBT Tag RAM3およびMF RAM2がパイプライン動作するために 必要なものなので、各アドレス制御部は相手側のリクエスト受け付けバッファに2個目の未処理のエントリが登録された時点でアドレス発行を停止する。MBT Tag RAM3に限り、相手側(MF RAM側)がビジーになっても処理は続行して先読み バッファを空にしてバススヌープによるMBT更新要求を通し、MBT Tag RAM3 のビジーを解消する。
【0171】
本例のようにMF RAM2側にリクエスト受け付けバッファを設ける場合、MBT Tag RAM3からはMF RAM2への変更要求だけでなくプロセッサバスへのキャッシュ フラッシュ要求も出力されるので、プロセッサバスへのキャッシュフラッシュ要求受け付けバッファも同様にビジー解消用のバッファが必要となる。4プロセッサ構成の場合に必要なバッファの段数は、
(MBT Tag RAM先読みバッファ段数)×(1段あたりのキャッシュフラッ シュ変更要求数)
= 8段×4
= 32段
以上必要となる。
【0172】
実際には、キャッシュフラッシュリクエスト受け付けバッファにはさらに8〜16段程度のマージンをもたせないとビジーが多発し性能が出ない。よって、キャッシュフラッシュリクエスト受け付けバッファは48段程度必要となる。実際にはリクエスト受け付けバッファは1段あたり32ビット程度の幅が必要であるので、フリップフロップ1段を10ゲートと換算して1段あたり約300ゲート必要である。よって48段では15kゲートを要することになる。
【0173】
以上のように、第1実施形態の方式でデッドロックを発生させないためには、大量のバッファが必要であることがわかる。また、このバッファはデッドロックを発生させないためのものなので、それぞれ8段、16段、48段あるバッファも通常使用可能なのは2段程度であり、平均バッファ使用率は最大でも4〜25%と非常に効率が悪い。よって、デッドロックを発生させない方式よりもデッド ロックが発生した場合にデッドロックを解消する手段を設ける方が現実的である。そこで、デッドロックを解消する手段の例を図18を参照して説明する。
【0174】
図18では、プロセッサバス5上のバストランザクションによりMBT Tag RAM 3とMF RAM2を更新する流れを破線の矢印で、キャッシュフラッシュによりMBT Tag RAM3とMF RAM2を更新する流れを実線の矢印で示してある。
【0175】
プロセッサが動作状態にあるので、MF RAM2、MBT Tag RAM3の更新はプロセ ッサバス5上のトランザクションをスヌープしてMBT Tag RAM3を更新した結果 のみによることとし、キャッシュフラッシュ結果は自身のプロセッサバスマスタ600が発行したバストランザクションをプロセッサバススヌーパ500がスヌープすることで反映するものとする。
【0176】
デッドロック状態が発生している場合、T2Fアクセスバッファ207、F2Tアクセスバッファ307がビジーであるため、MF RAM2、MBT Tag RAM3のリ ードが発行できない状態にある。MBT Tag RAMリードアクセスバッファ303でMBT Tag RAM3のリードアクセスを発行できないので、B2Tアクセスバッファはいずれビジーになり、プロセッサバススヌーパ500はプロセッサバス5のトランザクションをスヌープできない状態に陥るので、結果としてプロセッサバスマスタ600はプロセッサバス5トランザクションの発行を禁止してシステム全体がロック状態に陥る。このとき、一般的にはMF RAMライトバッファ211、MBT Tag RAMライトバッファ311はMBT Tag RAM3、MF RAM2へのリードアクセスがないのでライトは必ず実行されるため空であり、ライトバックバッファ403にも余裕がある。
【0177】
デッドロックを解消するにはMBT Tag RAM制御部300あるいはMF RAM制御部 200のビジーを何らかの方法で解除すれば良い。以下にMF RAM制御部200のビジーを解除してデッドロックを解消する方法を示す。
【0178】
ファーストフェーズのキャッシュフラッシュでは必ずしも全てのモディファイドラインをフラッシュする必要はない。よってMF RAM2とMBT Tag RAM3が両方 ともビジーとなりデッドロックが発生したと判断するとMF RAM先読みバッファ222の全てのエントリを無効化し、MF RAMリードアドレスバッファ203内のキャッシュフラッシュ要求をNOP(no-operation)にする。キャッシュフラッシュ要求は単純に無効化してもよいが、MF RAMリードアドレスバッファ203がFIFOで構成されている場合は無効化せずにNOPとして処理した方がインプリメントは簡単になる。
【0179】
さて、MF RAM先読みバッファ222の全てのエントリを無効化し、MF RAMリードアドレスバッファ203内のキャッシュフラッシュ要求をNOPにするとMF RAMリードアドレスバッファ203の先頭のMF RAM更新要求は先行する処理にインデックスマッチしたものが無くなるのでMF RAM2をリードすることができるようになる(ここで、デッドロック状態に入ると処理が完全に止まるのでMF RAM更新ロジック以後のモジュール、特にMF RAMライトバッファには有効なエントリが無くなっていることに注意)。
【0180】
MF RAM更新要求は処理を行ってもMBT Tag RAM制御回路300へのキャッシュ フラッシュ要求は出力しないのでMF RAM制御回路200とMF RAM2で閉じた範囲で処理が終了する。すると、仮につぎのMF RAM更新要求が先頭のMF RAM更新要求にインデックスマッチを起こしていたとしても、先頭のMF RAM更新要求が処理された時点でインデックスマッチは解消され、MF RAM2をリードできるようになる。
【0181】
MF RAMリードアドレスバッファ203にはMF RAM更新要求しか存在しないので、いずれはMF RAM更新要求がなくなり、MF RAMのビジーは解消される。MF RAM制御回路200のビジーが解消し、MBT Tag RAM制御回路200からのMF RAM変更 要求を受け取り可能になるので、MBT Tag RAM制御回路200側も処理を実行可 能になり、MBT Tag RAM制御回路200のビジーも解除されデッドロックが解消 する。
【0182】
[第2実施形態]
第2実施形態のキャッシュフラッシュ装置の構成は、第1実施形態で示した図2の構成と同様であるため、以下の説明において図2を参照する。なお、その他の動作などに関しては、後述するように第1実施形態の場合とは異なっている。
【0183】
この第2実施形態では、図2におけるMF RAM用インデックスカウンタ206とMBT Tag RAM用インデックスカウンタ306との間で、キャッシュフラッシュ方 式に応じた使い分けができるようになっている。
【0184】
前述したように第1実施形態の方式において効率化のためにMBT登録を実行しながらキャッシュフラッシュを行おうとすると、バッファ制御が難しくなり、デッドロックを引き起こしやすい。そこで、第2実施形態では、MBT Tag RAM3 の他にMF RAM2を備えたキャッシュフラッシュ装置において、MBT登録中にキャッシュフラッシュを問題なく行えるキャッシュフラッシュ方式と、キャッシュフラッシュのみを高速に実行するキャッシュフラッシュ方式の両方を持つキャッシュフラッシュ装置について提示する。すなわち、第2実施形態では、2相チェックポイント方式を採用する。
【0185】
この2相チェックポイント方式においては、セカンドフェーズのキャッシュフラッシュの前に、MBT登録を実行しながらキャッシュフラッシュを実行する。前述したように、MBT登録を実行しながら行うキャッシュフラッシュをファーストフェーズとよび、MBT登録を中断して高速に実行するキャッシュフラッシュをセカンドフェーズとよぶ。尚、ファーストフェーズではプロセッサが通常処理の動作を行っているので、キャッシュコヒーレンシはMBTで保証しなくてはならないが、セカンドフェーズではプロセッサが安定な状態にあること(キャッシュ状態が変化しないこと)をソフトウェアで保証するようにする。
【0186】
MBT登録実行中は、キャッシュのモディファイド率が高く(平均約15%) 、MBT Tag RAM3を直接検索してもある程度のヒット率が期待できる。また、こ のファーストフェーズでは、MBTとプロセッサのキャッシュ状態に矛盾が生じな ければ良く、セカンドフェーズのキャッシュフラッシュ時間を短縮するのが目的であるので、キャッシュフラッシュはセカンドフェーズほど高速である必要はない。一方、セカンドフェーズのキャッシュフラッシュでは、ファーストフェーズのキャッシュフラッシュのためにモディファイド率は低下しており(平均約4% )、モディファイドブロック検索を高速で実行しなくてはならない。そこで、ファーストフェーズでは検索速度を若干犠牲にしてもデッドロックの発生しにくいキャッシュフラッシュ方式を採ることが有効であり、セカンドフェーズでは出来る限り高速にキャッシュフラッシュを実行する方式を採ることが有効である。
【0187】
以下に、第2実施形態の詳細について説明する。
【0188】
第2実施形態では、図2中のMBT Tag RAMアドレス生成部に相当する15ビッ トのインデックスカウンタ306を使用する。このカウンタ306は、ファーストフェーズのチェックポイント時に、キャッシュフラッシュと同時にMBT登録を実行している。
【0189】
また、第2実施形態では、MBT Tag RAM3からMF RAM2への書き換え要求はあ るが、MF RAM2からMBT Tag RAM3への書き戻し要求(キャッシュフラッシュ要 求)は無い。MBT内のデータの流れはMBT Tag RAM3からMF RAM2への一方向である。
【0190】
また、第2実施形態では、MF RAMがビジーになってMBT Tag RAMの処理ができ なくなり、プロセッサバスからのMBT登録を受け付けられなくなって他のバスエージェントにバストランザクション発行を停止させざるを得なくなっても時間が経過すればMF RAMの処理が進んでビジーが解除される。MBT Tag RAM3の処理 が進んでバッファに空きが出来るため、再びバスからのトランザクション発行を再開させることができる。
【0191】
なお、前述の第1実施形態の方式では、MF RAM2を検索して“Modified”があるとわかっているラインをMBT Tag RAM3から読み込むため、キャッシュフラッ シュの効率が第2実施形態の方式よりも高い。しかし、ファーストフェーズのキャッシュフラッシュはセカンドフェーズのキャッシュフラッシュ時間を短縮するのが目的であるので、キャッシュモディファイド率の高いときにキャッシュフラッシュができれば良い。例えば、4プロセッサ構成でキャッシュモディファイド率Dが12.5%であればMBT Tag RAMのあるラインを読んだときにモディファイドラインが存在する確率Pは、
P= 1−(1−D)
= 1−(1−0.125)
= 0.414
より41.4%であるので、ほぼ2回に1回の割合でモディファイドラインが存在することになる。前述の第1実施形態の方式ではデッドロックを回避するためにファーストフェーズのキャッシュフラッシュ時には先読みバッファの使用率を高くすることはできなかった。この第2実施形態の方式では、既に述べたように時間が経過すれば必ずビジーが解除されるので、先読みバッファの使用率を高くしても問題ない。
【0192】
先読みバッファをあまり深くするとゲート数(ハード量)が増えるだけでなく、後続の処理とインデックスが一致する確率が高くなる。先読みバッファは多くても10段前後しか取れないのが普通なので、キャッシュのモディファイド率が10%程度あればモディファイドラインへのヒット率が多少下がってもバッファ使用率を高く取ってパイプライン動作の効率を上げることによりライトバックが早く終了する。
【0193】
(ファーストフェーズチェックポイント時の動作)
ファーストフェーズチェックポイント時の動作を図19〜図21に示す。また、この場合の情報の流れを図22に示す。以下、情報の流れに沿って説明する。
【0194】
ファーストフェーズのチェックポイントを起動すると、MBT Tag RAMリードア ドレスバッファ303が受け付け可能であればMBT Tag RAMインデックスカウン タ306を順次インクリメントし(ステップI1)、MBT Tag RAMリードアドレ スセレクタ305、MBT Tag RAMインデックスマッチバッファ304を経由してMBT Tag RAMリードアドレスバッファ303に登録する(ステップI2)。MBT Tag RAMリードアドレスバッファ303の先頭のエントリのインデックスマッチフ ラグが立っていなければMBT Tag RAMアドレスセレクタ302にリード要求を出 力する(ステップI3)。MBT Tag RAMアドレスセレクタ302でリードが選択 されると(ステップI4)、MBT Tag RAMアドレス出力レジスタ301を経由し てMBT Tag RAM3にリード要求を出力する(ステップI5)。
【0195】
MBT Tag RAM3からのリードデータは、MBT Tag RAMインデックスともにMBT Tag RAMリードデータレジスタ320に登録する(ステップI6)。MBT Tag RAMリードデータレジスタの出力はMBT Tag RAMモディファイド検出機構321に入力 される(ステップI7)。MBT Tag RAMモディファイド検出機構321ではモデ ィファイドビット4ビットの論理和をとり、一つでもモディファイドビットが立っていればMBT Tag RAM先読みバッファ322に登録する(ステップI8)。な お、モディファイドビットが一つも立っていなければそのデータは捨てる。MBT Tag RAMキャッシュフラッシュ系変更ロジック323が受け付け可能であればMBT Tag RAM先読みバッファ322からデータを転送する(ステップI9)。MBT Tag RAMキャッシュフラッシュ系変更ロジック323では、MBT Tag RAMのインデックスとリードデータのタグ情報からモディファイドブロックの物理アドレスを復元し(ステップI10)、キャッシュフラッシュ系ライトバックバッファ401に登録する(ステップI11)。また、全てのモディファイドフラグの処理を終了すると、モディファイドフラグを全て“0”にして(ステップI12)、MF RAMライトバッファ211に登録する(ステップI13)。
【0196】
MBT Tag RAMライトバッファ311に登録されたデータは通常のMBT更新処 理と同様にMBT Tag RAMライト要求をMBT Tag RAMアドレスセレクタ302に通知し(ステップI14)、ライト要求が選択されると(ステップI15)、データをMBT Tag RAMライトデータレジスタ310に入力してMBT Tag RAM3に書き込む(ステップI16)。
【0197】
一方、上記ステップH9の後、MBT Tag RAMインデックスとモディファイドビ ット4ビットの論理和である“0”をT2Fアクセスバッファ207に通知し、MF RAM更新要求を発行する(ステップI17)。
【0198】
T2Fアクセスバッファ207がMBT Tag RAMキャッシュフラッシュ系変更ロ ジック323からのMF RAM更新要求を受け取ると、MF RAMリードアドレスセレクタ205、MF RAMインデックスマッチバッファ204を経由してMF RAMリードアドレスバッファ203に登録する(ステップJ1)。MF RAMリードアドレスバッファ203では先頭のエントリのインデックスマッチフラグが立っていなければMF RAMアドレスセレクタ202にリード要求を出力する(ステップJ2)。MF RAMアドレスセレクタ202でリード要求が選択されると(ステップJ3)、MF RAMアドレス出力レジスタ201からMF RAM2にリード要求が出力される(ステップJ4)。
【0199】
MF RAM2からのリードデータは、MF RAMインデックス、MF RAM更新情報とともにMF RAMリードデータレジスタ220に登録される(ステップJ5)。MF RAMリードデータレジスタ220の出力は直ちにMF RAM通常処理系変更ロジック224に入力される(ステップJ6)。MF RAM通常処理系変更ロジック224は、MBT Tag RAMキャッシュフラッシュ系変更ロジック323が指定したモディファイフ ラグの値を“0”にしてMF RAMライトバッファ211に登録する(ステップJ8)。MF RAMライトバッファ211に登録されたデータは通常のMBT更新処理と同様にMF RAMライト要求をMF RAMアドレスセレクタ202に通知し(ステップJ9)、ライト要求が選択されると(ステップJ10)、データをMF RAMライトデータレジスタ210に入力し、MF RAM2に書き込む(ステップJ11)。
【0200】
一方、上記ステップI11の後、キャッシュフラッシュ系ライトバックバッファ401からの出力はライトバックスピード調整機構410を通り(ステップK1)、ライトバックスピード調整機構410を通過可能であればライトバックバッファ403に登録される(ステップK2)。ライトバックバッファ403の出力は、プロセッサバスマスタ600に通知され(ステップK3)、プロセッサバス出力レジスタ601を通してプロセッサバス5に発行される(ステップK4)。
【0201】
なお、セカンドフェーズチェックポイント時の動作は、前述した第1実施形態の場合と同様となるので、その説明を省略する。
【0202】
第2実施形態には、次のような利点がある。
【0203】
・ファーストフェーズで検索を実行してもMBT Tag RAM3とMF RAM2とが両 方同時にビジーとなることがなく、デッドロックが発生しない。このため、従来例のようにデッドロックを回避するためにバッファ量を増やしたり、難しいバッファ制御のチューニングを行う必要もない。また、バッファ使用率を下げる必要がないので性能が低下しない。
【0204】
・各フェーズの平均的なキャッシュモディファイド率の違いにより、ファーストフェーズでは若干速度を犠牲にしてもキャッシュ状態を保証し、セカンドフェーズではキャッシュ状態が変化しないことをソフトウェアで保証することで、デッドロックを発生させずにセカンドフェーズで高速にモディファイドブロックを見つけ出せる。
【0205】
なお、この第2実施形態ではMBT Tag RAM3とMF RAM2のそれぞれに専用のイ ンデックスカウンタを設ける場合を説明したが、代わりに共用のインデックスカウンタを設け、キャッシュフラッシュ方式に応じて当該インデックスカウンタの接続先を切り替えるようにしてもよい。
【0206】
この後、上述した第1及び第2実施形態に適用可能な変形例又は具体例としての別の実施形態をいくつか説明する。
【0207】
[第3実施形態]
この第3実施形態では、図2のキャッシュフラッシュ装置において、MF RAM2は、情報更新時にビット単位(MBT Tag RAM3のインデックス単位)での書き込 みが可能となっている。
【0208】
MF RAM2をビット単位で書き込み可能とすることにより、MF RAMライト時におけるインデックスマッチが不要となる。
【0209】
前述の第1及び第2実施形態ではMF RAM2もMBT Tag RAM3と同様、リード/ モディファイ/ライトという一連の処理が基本動作となっている。周知のようにリードモディファイライトでは、ライトのためにリードが必要である他、コヒーレンシを保証するためライトしようとするアドレスが既に読み込まれていないかをチェックする必要がある。特に、ファーストフェーズにおけるライトバックの場合には自身の発行したライトバックが必然的にインデックスマッチを引き起こしやすいので性能低下を引き起こす。この第3実施形態の方式ではインデックスマッチが不要となるので、通常処理と同じ性能を維持できる。
【0210】
以下に、第3実施形態の詳細について説明する。
【0211】
MF RAMデータの各ビットに対し、1ビットずつのパリティビットを付ける。MF RAM2を構成するSSRAMは、MF RAMデータ1ライン全部を書き込みできる他、MF RAMデータとパリティビットとの対単位で書き込みが出来るようにする。これにより、以下に示すように、SSRAMはリード/モディファイ/ライトの一連した処理をすることなくライトだけで処理できるようになるので、MF RAM2に関するオーバーヘッドが低減する。また、SSRAMインデックスの比較回路が不要になるので、ハード量が少なくなる。また、一般に比較回路は動作に時間がかかるためクリティカルパスになりやすいが、第3実施形態の方式では比較回路を省略できるので回路全体としても高速化しやすくなる。
【0212】
本方式では、MBT登録動作時にはSSRAMのインデックス比較は不要である。MF RAM2は(セカンドフェーズの)キャッシュフラッシュ時に最新情報が残っていれば良い。
【0213】
MF RAM2は、MBT登録時にはMBT Tag RAM3からの変更要求に従って無条件 で更新される。前述した第1及び第2実施形態の方式では、MFRAM更新動作はリ ード/モディファイ/ライトであるので、例えばMBT制御部内部にデータBを書 き込もうとするインデックスのデータAが読み込まれている状態でデータCを登録しようとすると、本来はデータBに対して修正を施したデータCを書き込まなくてはならないにもかかわらず、最終的には変更前の古いデータAに対して修正を施したデータC’が書き込まれてしまう。データC’はデータBを反映していないのでデータBは失われてしまう。これに対して第3実施形態の方式ではMF RAM更新動作は単純なライト動作になるので、ライトする順番を変えなければMF RAM2は常に最新の情報が登録(オーバーライト)される。
【0214】
MF RAM2上のあるラインに対して順にビット0、ビット1、ビット2を“1”にし、最後にビット0を“0”にするような要求がMBT Tag RAM3から出力され たとき、以下に示す3通りの各方式でMF RAM2を更新する場合のMF RAMの最終状態と、更新に要する時間を比較検討する。以下の説明では、MF RAM更新を、
(a)第1実施形態の方式
(b)第1実施形態の方式においてインデックスマッチを省略した場合
(c)第3実施形態の方式
の各方式で行った場合の処理を順に説明する。尚、MF RAM2のアドレス出力からリードバッファに取り込むまで4サイクル、リードバッファからMF RAM変更ロジックを経由してMF RAMライトバッファに登録するまで3サイクル、ライトバッファに取り込まれてからMF RAM2のライトアドレス出力まで2サイクルかかるものとする。すなわち、MF RAM更新には9サイクルかかるものとする。尚、各ロジックはパイプライン動作を行い、1サイクルに1個の処理が可能であるものとする。
【0215】
(a)第1実施形態の方式
一連した4つの変更要求は、MF RAM2においてインデックスマッチが発生するので、MF RAMアドレス生成部でシリアライズされる。前の要求が処理されてMF RAM2に書き戻されるまで次の要求は受け入れられない。すなわち、ビット0の更新が終了してMF RAM2への書き戻しがなされるまでビット1更新のためのMF RAMリードは実行されず、ビット1の更新が終了してMF RAMに書き戻されるまでビット2のリードは実行されず、…というように各MF RAM更新動作は前の動作が完了するまで開始しない。
【0216】
4つの変更要求はMF RAMデータを、
・ビット0を“1”にする変更要求:0000_0000 → 0000_0001
・ビット1を“1”にする変更要求:0000_0001 → 0000_0011
・ビット2を“1”にする変更要求:0000_0011 → 0000_0111
・ビット0を“0”にする変更要求:0000_0111 → 0000_0110
のように変更する。
【0217】
結果として更新が終了したときのこのインデックスのMF RAMデータは、
・0000_0000 → 0000_0110
となる。MF RAMは正しい最終状態になっている。
【0218】
MF RAM更新は4回実行し、各更新動作に9サイクルかかるのでこの例のMF RAM更新動作には、9×4=36サイクルかかる。
【0219】
(b)第1実施形態の方式においてインデックスマッチを省略した場合
この方式ではMF RAM2でインデックスマッチを行わないので、MF RAMアドレス生成部ではMF RAM更新のためのリードを4個連続して発行して先読みバッファに取り込む。
【0220】
MF RAM変更ロジックではそれぞれMF RAMの元の状態(0000_0000)に対して変 更を行い、ライトバッファに書き込む。すなわち、4つの変更要求はMF RAMデータを、
・ビット0を“1”にする変更要求:0000_0000 → 0000_0001
・ビット1を“1”にする変更要求:0000_0000 → 0000_0010
・ビット2を“1”にする変更要求:0000_0000 → 0000_0100
・ビット0を“0”にする変更要求:0000_0000 → 0000_0000
のように変更し、結果として更新が終了したときのこのインデックスのMF RAMデータは、
・0000_0000 → 0000_0000
となる。この方式ではMF RAM2の最終状態は正しくない。
【0221】
この一連の変更動作はSSRAMがパイプライン動作しているので9+3=12サイクルで終了する。
【0222】
(c)第3実施形態の方式
本方式ではMBT更新動作ではIDリードを必要としない。MBT Tag RAM3か らのMF RAM更新要求はライトバッファに直接取り込まれる。各ビットの更新は他のビットに影響を与えることなく実行される。
【0223】
すなわち、4つの変更要求はMF RAMデータを、
・ビット0を“1”にする変更要求:xxxx_xxxx → xxxx_xxx1
・ビット1を“1”にする変更要求:xxxx_xxxx → xxxx_xx1x
・ビット2を“1”にする変更要求:xxxx_xxxx → xxxx_x1xx
・ビット0を“0”にする変更要求:xxxx_xxxx → xxxx_xxx0
のように変更する。
【0224】
よって、MF RAMデータは順に、
・0000_0000 → 0000_0001 → 0000_0011 → 0000_0111
→ 0000_0110
のように変更される。
【0225】
この一連の動作はライトバッファからの書き込み要求が4個連続するものなので、2+3=5サイクルで終了する。MF RAM2は正しい最終状態になっている。
【0226】
以上の3方式の結果をまとめると、図23の通りとなる。
【0227】
[第4実施形態]
この第4実施形態では、図2のキャッシュフラッシュ装置における2階層からなるライトバックバッファ群401、402、403の具体例について説明する。
【0228】
図1からわかるように、ライトバックバッファは2階層で構成され、第1階層は通常処理用のバッファ402とキャッシュフラッシュ用のバッファ401とが独立して設けられ、第2階層には通常処理用とキャッシュフラッシュ用とを共用したバッファ403が設けられる。
【0229】
すなわち、本方式では、バストランザクションによりアドレス情報の更新を行う機構と、キャッシュフラッシュ動作により前記アドレス情報の更新を行う機構とを独立して設けることにより、前記バストランザクションによるキャッシュ情報の更新と、前記キャッシュフラッシュ動作によるキャッシュ情報の更新とを並行して実行できるようにしている。
【0230】
ライトバックバッファが通常処理用とキャッシュフラッシュ用で独立しているため、通常処理とキャッシュフラッシュをアウト・オブ・オーダー的に処理でき、ビジーになりにくくなる。
【0231】
以下に、第4実施形態の詳細について説明する。
【0232】
本構成では、図2に示されるようにMBT情報更新回路が通常処理系とキャッシュフラッシュ系で独立しているので、各々の更新回路出力をセレクタにいれずに直接1段目のライトバックバッファ401、402の入力に接続する。また、1段目の通常処理系とキャッシュフラッシュ系のライトバックバッファ401、402の出力はセレクタを介して2段目のライトバックバッファ403の入力に接続する。
【0233】
ファーストフェーズのチェックポイントでは、MBT登録動作とキャッシュフラッシュとが並列して動作している。本構成ではMBTインデックス比較をあらかじめ行っているので、インデックスマッチのフラグが立っていなければ、先行するキャッシュフラッシュが終了する前に、通常処理のMBT更新のためにMBTから該当するラインを変更回路に読み出すことができる(アウト・オブ・オーダー処理)。
【0234】
ところで、ライトバックバッファが独立していない場合には、以下のような問題がある。
【0235】
(1)通常処理系ではキャッシュリプレースによるライトバックは高々1個しか発生しないが、キャッシュフラッシュではプロセッサ数n個分(本例では4個)のライトバックが発生する。
【0236】
(2)よって、先読みバッファがm段使用されている場合、w=m×n個のライトバックが発生する可能性がある。
【0237】
(3)本構成例では通常処理系に先読みバッファおよびMF RAM更新通知用バッファを設けていないので、通常処理系はMBTリードが起動するとパイプラインの処理を中断できない。
【0238】
(4)上記の(2)、(3)よりキャッシュライトバック用の先読みバッファが使用されている場合、多数のライトバックが発生してライトバックバッファが使いきられてしまう可能性があるので、通常処理のためのMBTリードが発行できなくなる。
【0239】
(5)よって、ファーストフェーズキャッシュフラッシュでは、キャッシュフラッシュ効率を高くしようとすると通常処理のためのMBTリードが発行しにくくなり、逆に通常処理の効率を高くしようとするとキャッシュフラッシュのためのMBT検索を減らさなくてはならない、というトレードオフがあった。
【0240】
これに対し、本方式ではキャッシュフラッシュ用のライトバックバッファと通常処理用のライトバックバッファとが独立しているので、キャッシュフラッシュ用の先読みバッファが使用されていても通常処理のためのMBTリードを発行することができる。なぜなら、キャッシュフラッシュ用の先読みバッファが使用されている(可能性のある)状態で発行される通常処理用のMBTリードは、先行するキャッシュフラッシュ用アクセスとはインデックスが一致していないので、アウト・オブ・オーダーで処理できるからである。通常処理およびキャッシュフラッシュ用のアクセスの選択は以下のようにして行えばよい。
【0241】
キャッシュフラッシュ用アクセスは以下の場合、発行バッファに登録しない。
【0242】
・インデックスマッチが発生している場合
・キャッシュフラッシュ用の1段目のライトバックバッファが規定段数(本構成例の場合2段)以上使用されている場合
・2段目のライトバックバッファが規定段数(本構成例の場合2段)以上使用されている場合
・先読みバッファが規定段数(本構成例の場合2段)以上使用されている場合
通常処理用アクセスは以下の場合、発行バッファに登録しない。
【0243】
・インデックスマッチが発生している場合
登録条件が通常処理用の方が緩いのは、キャッシュフラッシュを登録しなくてもシステムの状態が固まることはないが、通常処理を登録しないとバススヌープ用のバッファを使いきってバススヌープできなくなるため、他のバスエージェントがバストランザクションを発行するのを禁止せざるを得ず、自身もキャッシュフラッシュを発行できなくなってバッファが空かず、システムが停止してしまう可能性があるためである。
【0244】
第4実施形態には、次のような利点がある。
【0245】
・通常処理とキャッシュフラッシュをアウト・オブ・オーダー的に処理でき、ビジーになりにくくなる。
【0246】
・ファーストフェーズに有効である。但し、セカンドフェーズに適用してもあまり意味がない。
【0247】
・なお、通常処理用ライトバックバッファとキャッシュフラッシュ用バッファとに分けない状態で2段構成にした場合も、ある程度の効果がある。
【0248】
・ライトバックバッファを通常処理用とキャッシュフラッシュ用とに分けると、ファーストフェーズで速度調整する場合に有効である。
【0249】
[第5実施形態]
この第5実施形態では、図2のキャッシュフラッシュ装置におけるライトバックスピード調整機構410の具体例について説明する。
【0250】
ライトバックスピード調整機構410は、キャッシュフラッシュ時に前記モディファイドブロックのライトバック要求を送出するスピードを制限する機構である。なお、このスピード制限機構がキャッシュ状態の管理を妨げていることを検知した場合にはそのスピード制限手段の機能を一時的に又は継続的に無効にする機構も設けておく。
【0251】
MBTによるキャッシュフラッシュが開始されると、プロセッサバスはMBTキャッシュフラッシュに占有されてI/Oやプロセッサからのリクエストを受け付けなくなることがある。そこで、ライトバックスピード調整機構410を設けてMBTキャッシュフラッシュがバスを占有しないようにすることで、I/Oのタイムアウトを防止し、かつファーストフェーズでのプロセッサ動作をあまり邪魔しないようにすることができる。これは、前述の第4実施形態で説明したライトバックバッファ独立方式と組み合わせることで実現しやすくなる。
【0252】
以下に、第5実施形態の詳細について説明する。
【0253】
前述の第4実施形態によるライトバックバッファ独立方式において、キャッシュフラッシュ系ライトバックバッファ401と2段目のライトバックバッファ403の間に以下のハードウェアを追加する。尚、通常処理系のライトバックバッファ402は2段目のライトバックバッファ403に直結するものとする。
【0254】
・10ビットの減算カウンタ
・カウンタの初期値を記録するレジスタ
・インデックスマッチを検出するか、カウンタが全て“0”になった場合に要求を発行する要求生成機構
ここで、キャッシュフラッシュ系ライトバックバッファ401に付けられた減算カウンタ410について説明する。
【0255】
このカウンタ410は、リセットが入ると初期値“0”になる。また、カウンタの初期値を記録するレジスタは初期値0x_10にリセットされ、16サイクルに 1回出力可能なようにする。
【0256】
リセット直後はカウンタ410が全て“0”であるので、キャッシュフラッシュ系ライトバックバッファ401にライトバック要求が登録されると即座に2段目のライトバックバッファ403にライトバック要求が出力されるようになっている。
【0257】
キャッシュフラッシュが起動されると、MBT Tag RAM制御回路300はモディ ファイドラインを検索し、キャッシュフラッシュ系ライトバックバッファ401に登録する。キャッシュフラッシュ系ライトバックバッファ401に登録された1個目のエントリは、10ビットの減算カウンタ410の値が“0”であるので、直ちに2段目のライトバックバッファ403へのライトバック要求を行う。2段目のライトバックバッファ403では、通常処理系のライトバックバッファ402からのライトバック要求がなければキャッシュフラッシュ系ライトバックバッファ401からのライトバック要求を受け取り、登録する。
【0258】
キャッシュフラッシュ系ライトバックバッファ401からのライトバック要求が受け取られると、10ビットの減算カウンタ410はカウンタの初期値を記録するレジスタの値に書き換えられる。カウンタの初期値を記録するレジスタが書き換えられていなければ、カウンタの初期値を記録するレジスタの初期値である0x_10が書き込まれる。すると、キャッシュフラッシュ系ライトバックバッファ に登録された2個目のエントリは、10ビット減算カウンタが“0”になるまでライトバック要求を出力しない。
【0259】
さて、本構成例では、第4実施形態においても示したようにMBT情報更新回路323が通常処理系とキャッシュフラッシュ系で独立しており、各々の更新回路出力をセレクタにいれずに直接1段目のライトバックバッファ401、402の入力に接続しているので、通常処理系とキャッシュフラッシュ系を独立してアウト・オブ・オーダーで処理できる。よって、MBTでのインデックスマッチが発生しなければキャッシュフラッシュ系の処理が終了する前に通常系の処理を実行できる。
【0260】
また、キャッシュフラッシュ系もライトバックバッファ401の他に先読みバ ッファ322があり、MBTアドレス生成回路内のリクエストバッファ303にはキャッシュフラッシュ系はライトバックバッファ401および先読みバッファ322に取り込める分しか登録しないので、キャッシュフラッシュ系が処理されないために通常処理が実行されない、という事態は発生しない。
【0261】
ここまではMBT Tag RAM制御回路300内部でのインデックスマッチが発生し ない場合について説明した。次に、キャッシュフラッシュ系と通常処理系の間でインデックスマッチが発生した場合の動作を述べる。
【0262】
キャッシュフラッシュ系の先読みバッファ322もしくは変更ロジック323にあるエントリとMBTアドレス生成回路内のリクエストバッファ303内にある通常処理系変更要求とがインデックスマッチすると、キャッシュフラッシュ系ライトバックバッファ401が一杯のため、先読みバッファ322からキャッシュフラッシュ要求を変更ロジック323に読み込めなくなり、通常処理系も停止して後続の処理が滞る可能性がある。これを回避するため、以下のようにする。
【0263】
すなわち、インデックスマッチを検出すると、減算カウンタ410の値にかかわらずキャッシュフラッシュ系のライトバックバッファ401からのライトバック要求を2段目のライトバックバッファ403に通知する。インデックスマッチが発生したエントリはインデックスマッチが解消するまでアドレス生成回路内のリクエストバッファ303にとどまるので、数サイクル(パイプラインの段数分)経てばMBTから通常処理系のデータは読み込まれなくなる。よって、ある一定時間後はMBT変更ロジック322ではキャッシュフラッシュ系の処理だけが行われる。
【0264】
通常処理系のライトバックバッファ402にエントリがあるうちは2段目のラ イトバックバッファ403への登録は通常処理系が優先される。通常処理系のライトバックバッファ402が空になると2段目のライトバックバッファ403へのライトバック要求はキャッシュフラッシュ系401だけになる。インデックスマッチが発生していないときには10ビットの減算カウンタ410が“0”になるまでキャッシュフラッシュ系ライトバックは受け付けられないので、キャッシュフラッシュ系ライトバックはカウンタの初期値を記録するレジスタに指定されたサイクルに1回しか処理されない。
【0265】
一方、この第5実施形態の方式ではインデックスマッチが発生すると減算カウ ンタ410の値に拘わらずライトバック要求を出力するので先読みバッファ322からインデックスマッチが発生したエントリが早く抜け、通常処理再開が早くなる。
【0266】
以下の各実施形態では、前述した第1及び第2実施形態に適用可能な変形例について説明する。
【0267】
[第6実施形態]
前述の第1及び第2実施形態では、モディファイドビットを論理和した値を複数個分まとめて複数ビットの形でMF RAM2に記録した例(図7)を説明したが、この第6実施形態では、これらの複数ビットの値を論理和した値を上記複数ビットにさらに加えた例について説明する。
【0268】
すなわち、第6実施形態によるMF RAM2のデータは、図24に示すように、ビット[7:0]の論理和をとった結果が新たにビット[8]として加えられている。このビット[8]は、MF RAM2にデータをライトするときに一緒に書き込まれる。
【0269】
キャッシュフラッシュ時には、ビット[8]の値だけを調べて先読みバッファ2 22に取り込むべきかどうかを判断することにより、検索時間をさらに短縮することができる。こうした方式は、特にMF RAM2のデータのビット数が多いときには有効である。
【0270】
[第7実施形態]
この第7実施形態では、通常処理時にMBT Tag RAM3における情報の更新が発 生した際に前記モディファイドビットの論理和が変化する場合にのみ、MF RAM2における情報の更新を要求する。
【0271】
前述の第1実施形態において既に述べたように、プロセッサバス5にMBTを変更するトランザクションが発行されると、MBT Tag RAM3を引き、キャッシュ ステートを変更する。このとき、各プロセッサのモディファイドビットの論理和をとり、この論理和の結果をMBT Tag RAM3のインデックスと一緒にしてMF RAM 2に通知する。
【0272】
もともとMF RAM2はMBT Tag RAM3に比べてインデックスマッチが発生し易い ものである。この第7実施形態は、MF RAM2の状態が変化しないのならMBT Tag RAM3から通知しないようにすることで、インデックスマッチを減らし、通常処 理によるMBT更新時のオーバーヘッドを低減するというものである。
【0273】
すなわち、第7実施形態では、MBT Tag RAM3からMF RAM2へ変更要求を出力 するとき、MBT Tag RAM3のモディファイドビットの論理和が変化するときのみ 通知し、変化しないときにはMBT Tag RAM3のみ更新し、MF RAM2は更新しない 。
【0274】
これを実現するには、具体的には以下のように構成すればよい。
【0275】
すなわち、MBT Tag RAM通常系変更ロジック324において、MBT Tag RAM変更前のモディファイドビットの論理和結果を保持するレジスタと、MBT Tag RAM変 更後のモディファイドビットの論理和結果を比較するXORゲートを作り、XOR=1であればMF RAM2に変更要求を出力し、XOR=0であればMF RAM2に変更要求を出力しないようにする。
【0276】
[第8実施形態]
この第8実施形態では、MF RAM2に記憶された情報のアドレスマップは、MBT Tag RAM3におけるインデックスの最上位ビット側からマッピングされたものと なっている。
【0277】
すなわち、MF RAM2とMBT Tag RAM3のアドレスマップが互いに逆順となって いる。
【0278】
前述の第1実施形態のMF RAM2(図3)では、アドレス[19:8]にはインデックスが対応し、アドレス[7:5]にはモディフィアドフラグが対応する場合を説明し たが、この第8実施形態では、図25に示すようにアドレスマップを変更する。図示の例では、アドレス[19:17]にはモディフィアドフラグが対応し、アドレス[16:5]にはインデックスが対応している。これに伴い、MF RAM2のデータの中身 であるMF RAMエントリフォ−マット)を図26のように変更する。
【0279】
これにより、MF RAM2におけるインデックスマッチを減らすことができる。
【0280】
[第9実施形態]
この第9実施形態では、ファーストフェーズチェックポイント時のキャッシュフラッシュにおいて、インデックスカウンタ306から出力されるインデックスの上位ビットと下位ビットとを入れ替えたものを用いてMBT Tag RAM3における インデックスを検索することにより、MF RAM2におけるインデックスマッチを低減させる。
【0281】
すなわち、MBT Tag RAM3のインデックスカウンタ306を使用してキャッシ ュフラッシュをする時に、インデックスカウンタ306の出力のビット順を変更してモディファイブロック検索を行うことでMF RAM2におけるインデックスマッチによるオーバーヘッドを低減させるというものである。
【0282】
これを実現するには、MBT Tag RAM3のインデックスカウンタの接続を例えば 図27のように変更する。図示の例では、MBT Tag RAM3のアドレス[19:16]にはインデックスカウンタ出力の下位ビット(4ビット分)が対応し、アドレス[15:4]にはインデックスカウンタ出力の上位ビット(11ビット分)が対応している。
【0283】
これにより、ファーストフェーズチェックポイント時にMBT Tag RAM3側のイ ンデックスカウンタ306を使用してキャッシュフラッシュした場合に、MF RAM2のインデックスマッチが発生しにくくなり、性能低下を小さくすることができる。
【0284】
なお、上記では、MBT Tag RAM3におけるインデックスを検索する際に、イン デックスカウンタ306から出力されるインデックスの上位ビットと下位ビットとを入れ替えたものを用いる場合を説明したが、代わりに、ビット順を逆にしたものを用いてもよい。
【0285】
[第10実施形態]
この第10実施形態では、MBT Tag RAM3で管理するキャッシュ容量を動的に 切り替える機構を追加し、切り替え前はキャッシュ容量を大きくしてシステムの性能低下を小さくし、切り替え後はキャッシュ容量を小さくしてキャッシュフラッシュ時間を低減させる。
【0286】
以下、ファーストフェーズのチェックポイントを起動するとキャッシュ容量を1/4にする例について述べる。ここでは、通常処理時には1MBのダイレクトマップ方式、ファーストフェーズでのチェックポイント起動からセカンドフェーズチェックポイント起動までの間を1/4の容量の256KBで管理する方式に移行するものとする。
【0287】
MBTの(又はキャッシュフラッシュ装置の)制御レジスタにキャッシュ容量設定ビットを追加し、このビットのみおよびチェックポイント開始ビットと同時にキャッシュ容量設定ビットを書き換えられるものとする。また、MBTが256KBのダイレクトマップ相当になっていることを示す縮退ビットの保持手段をMBT Tag RAM制御部300内に設ける。
【0288】
通常処理時には、キャッシュ容量を1MB単位で管理する。このときにもキャッシュ容量を256KBに切り替えたときに対応できるように、Tag RAM2のアドレ スマップを図28のように変更する。図示の例では、アドレス[19:18]に共用ビ ットが割り当てられている。また、これに応じてビット構成を図29に示すように変更する。
【0289】
ここで、共用ビットは通常処理時はインデックスの一部として使用し、かつMBT Tag TAM3のタグビットとしても記録しておく。また、MBTが256KB相当 になっていることを示す縮退ビットは立っていない(MBTが1MB相当を示す)。
【0290】
さて、ファーストフェーズのチェックポイント処理を起動するときには、MBTを256KB管理に切り替える。このとき、256KB〜1MBの領域を無効にするとMBTがキャッシュの状態を反映しないことになるので、
・MBTは全領域有効とする
・バススヌープによるID更新は0〜256KBのみ行う
・ファーストフェーズチェックポイントによるキャッシュフラッシュは256KB〜1MBを優先して1MBの全領域を行う
こととする。
【0291】
インプリメントの簡単のため、キャッシュフラッシュは1MBから0Bの向かっ て降順に行うものとする。キャッシュフラッシュが256KBまで来るとMBTは実質的に256KBのダイレクトマップ相当となり、縮退ビットを立てる。
【0292】
セカンドフェーズキャッシュフラッシュは以下のようにする。
【0293】
ファーストフェーズのキャッシュフラッシュが256KB以下の領域にまで及んでMBTが256KB相当のダイレクトマップになっていれば、セカンドフェーズは0〜256KBの領域だけ実行すれば十分である。よって、縮退ビットが立っていればMF RAMを256KB相当の位置から0Bの位置かで検索すれば十分である。
【0294】
一方、ファーストフェーズのキャッシュフラッシュが256KB以下の領域にまで及んでいなければ、MBTは256KB相当のダイレクトマップになっていない。よって、MBT Tag RAM用インデックスカウンタの値の上位12ビットをMF RAM 用インデックスカウンタの初期値として0Bに向かってMF RAMを検索する。この 場合でもファーストフェーズでキャッシュフラッシュした領域にモディファイドブロックは存在しないので、セカンドフェーズのキャッシュフラッシュを高速化することができる。
【0295】
以上の説明から各フェーズ毎のプロセッサID更新領域、有効領域、無効領域の違いをまとめたものを図30に示す。
【0296】
[第11実施形態]
この第11実施形態では、前述の第10実施形態のようにキャッシュ容量を制限するのではなく、アドレス情報をシステム全体でMBT Tag RAM3上の1プロセ ッサ分の記憶領域を用いて管理することにより、見かけ上のキャッシュ容量を小さくする。
【0297】
すなわち、切り替え前はアドレス情報を全プロセッサ分の領域を用いて管理し、切り替え後はアドレス情報を1プロセッサ分の記憶領域を用いて管理することにより、見かけ上のキャッシュ容量を小さくするものである。
【0298】
前述の第10実施形態の方式ではキャッシュ容量を減らしたときにタグ幅を拡張しなくてはならなかったが、この第11実施形態の方式ではタグ幅を拡張する必要はない。
【0299】
以下に、ファーストフェーズのチェックポイントを起動するとキャッシュ管理を4プロセッサで統一する方式について述べる。ここでは通常処理時にはプロセッサ単位で管理するダイレクトマップ方式、ファーストフェーズでのチェックポイント起動からセカンドフェーズチェックポイント起動までの間をシステム全体でキャッシュ管理する方式に移行するものとする。
【0300】
また、MBTがシステム全体管理になっていることを示す縮退ビットをMBT Tag RAM制御部300内に設ける。
【0301】
通常処理時には、プロセッサバススヌーパ500から出力されるプロセッサのID情報をもとにプロセッサ単位でモディファイドブロックを管理する。
【0302】
ファーストフェーズのチェックポイント処理を起動するときに、MBT管理をプロセッサ単位で管理する方式からシステム全体で管理する方式に移行する。MBT管理をシステム全体で管理する方式に移行するときには、MBT情報をプロセッサ0に対応するMBT Tag RAM領域に記録する。
【0303】
キャッシュフラッシュは、ファーストフェーズ、セカンドフェーズともに全領域について行う。
【0304】
本方式でも前述の第10実施形態と同様に、
・ID新規登録はプロセッサ0の位置にあるシステム全体のエリアに限定
・CPU1、2、3の領域は、新規登録は行わないが有効
とする。
【0305】
本方式はMBT Tag RAM3上の情報およびMBT Tag RAM3のアドレスマップを更新する必要はない。
【0306】
なお、この第11実施形態で説明した方式を前述の第10実施形態と組み合わせて実施するこも可能である。
【0307】
[第12実施形態]
この第12実施形態では、図2のキャッシュフラッシュ装置において、MBT Tag RAM3上でプロセッサ単位でキャッシュ状態を管理し、MBT Tag RAM3上におけるCPU1のモディファイドラインに対応するインデックスに対してCPU2のモディファイドラインを登録するトランザクションが発生し、当該CPU2のキャッシュラインがクリーンであるとき、もともと登録されていたCPU1のモディファイドラインをCPU2のキャッシュラインに登録し、CPU1のキャッシュラインに新たなモディファイドラインを登録することで、キャッシュフラッシュを減らし、システム性能への影響を小さくする。
【0308】
プロセッサがセットアソシアティブ方式のキャッシュをもち、かつどのセットに登録したかを外部から観測できない場合で、(外部に付けた)キャッシュ管理機構がダイレクトマップ方式あるいは独自にセット情報を構成するセットアソシアティブ方式でキャッシュ状態の管理を行っている場合に、プロセッサではキャッシュのリプレースが発生しないのにキャッシュ管理機構ではキャッシュのリプレース処理を行わなくてはならないことがある。
【0309】
特にキャッシュ管理機構がダイレクトマップ方式の場合には、この現象が発生することは容易に想像される。このようなキャッシュの追い出し動作によって、プロセッサにとっては最も都合の良いキャッシュ状態である“Modified”状態が“Shared”状態に変更されることによる性能低下、およびキャッシュ追い出しのためのバストランザクション発行のためにメモリおよびバスが使用されることによる性能低下がある。特にキャッシュフラッシュを目的とするキャッシュ状態管理では、“Modified”がどのプロセッサにあるかは問題ではなく、“Modified”があるキャッシュラインがもれなく登録されていれば十分である。
【0310】
よって、キャッシュ管理機構内部でキャッシュリプレースが発生し、かつバス上でプロセッサからの“Modified”ラインの書き戻しが観測されない場合にキャッシュ管理機構の他のプロセッサの領域に“Invalid”のものがあれば、追い出 されるはずのキャッシュラインをその“Invalid”の領域に“Modified”として 登録すれば、キャッシュ管理機構からの不要なキャッシュライン追い出しトランザクションが発生しないので性能低下が軽減される。
【0311】
尚、“Invalid”領域を使われた側のプロセッサが、その領域に登録するよう なトランザクションを発行した場合には、本来所有権のあるプロセッサの登録が後になるので優先順位が高く、仮に登録された“Modified”領域の追い出し動作が発生するので、キャッシュ状態に問題は発生しない。
【0312】
上記方式を実現するには、通常系更新ロジック324のアルゴリズムを変更すればよい。
【0313】
[第13実施形態]
この第13実施形態では、図2のキャッシュフラッシュ装置において、キャッシュフラッシュをするキャッシュインデックスの範囲を指定できるようにする。特に、キャッシュフラッシュ方式毎にキャッシュフラッシュの範囲を指定できるようにする。
【0314】
上記方式を実現するには、キャッシュフラッシュ用カウンタ206、306に初期値と終了値を設定できるように変更すればよい。
【0315】
このようにすると、キャッシュフラッシュを分割して実行したい場合、あるいはシミュレーションや実機でのデバッグ時間を短縮するのに有効である。また、キャッシュフラッシュによってバス使用権を離さなくなり、プロセッサやI/Oがタイムアウトするのを防ぐのにも使用できる。
【0316】
なお、本発明は上述した各実施形態に限定されるものではなく、その範囲で種々変形して実施することが可能である。
【0317】
【発明の効果】
以上詳述したように本発明によれば、高速なキャッシュフラッシュを実現し、併せてチェックポイント処理時におけるオーバーヘッドを低減するキャッシュフラッシュ装置及び方法を提供することができる。
【図面の簡単な説明】
【図1】本発明のキャッシュフラッシュ装置が適用される計算機システムの構成例を示すブロック図。
【図2】本発明のキャッシュフラッシュ装置の構成を示すブロック図。
【図3】 MF RAMおよびMBT Tag RAMに対する実アドレスのマッピングを示す図。
【図4】物理アドレスからMBT Tag RAM上の情報、MF RAM上の情報へ変換する原理を示 す図。
【図5】 MBT Tag RAM上の情報、MF RAM上の情報から物理アドレスへ逆変換する原理を 示す図。
【図6】 MBT Tag RAMデータの中身を示す図。
【図7】 MF RAMデータの中身を示す図。
【図8】キャッシュフラッシュ時の動作を示すフローチャート。
【図9】本発明の第1実施形態における通常処理時の動作の一部を示すフローチャート。
【図10】本発明の第1実施形態における通常処理時の動作の一部を示すフローチャート。
【図11】本発明の第1実施形態における通常処理時の動作の一部を示すフローチャート。
【図12】本発明の第1実施形態における通常処理時の動作の一部を示すフローチャート。
【図13】同通常処理時のデータの流れを示す図。
【図14】本発明の第1実施形態におけるセカンドフェーズチェックポイント時の動作の一部を示すフローチャート。
【図15】同セカンドフェーズチェックポイント時の動作の一部を示すフローチャート。
【図16】同セカンドフェーズチェックポイント時の動作の一部を示すフローチャート。
【図17】同セカンドフェーズチェックポイント時のデータの流れを示す図。
【図18】変形例としてのキャッシュフラッシュ装置によるデータの流れを示す図。
【図19】本発明の第2実施形態におけるファーストフェーズチェックポイント時の動作の一部を示すフローチャート。
【図20】同ファーストフェーズチェックポイント時の動作の一部を示すフローチャート。
【図21】同ファーストフェーズチェックポイント時の動作の一部を示すフローチャート。
【図22】同ファーストフェーズチェックポイント時のデータの流れを示す図。
【図23】本発明の第3実施形態の方式を採用した場合における更新サイクルとMF RAMの最終状態の妥当性を示す図。
【図24】本発明の第6実施形態におけるMF RAMデータんぽ中身を示す図。
【図25】本発明の第8実施形態に対応するようにMF RAMに対する実アドレスのマッピングを変更する例を示す図。
【図26】本発明の第8実施形態におけるMF RAMデータの中身を示す図。
【図27】本発明の第9実施形態に対応するようにMBT Tag RAMに対する実アドレスのマ ッピングを変更する例を示す図。
【図28】本発明の第10実施形態に対応するようにMBT Tag RAMに対する実アドレスの マッピングを変更する例を示す図。
【図29】本発明の第10実施形態に対応するようにMF RAMに対する実アドレスのマッピングを変更する例を示す図。
【図30】本発明の第10実施形態における各フェーズ毎のプロセッサID更新領域、有効領域、無効領域の違いを示す図。
【符号の説明】
1…キャッシュフラッシュ装置、2…MF RAM、3…MBT Tag RAM、5…プロセ ッサバス、200…MF RAM制御部、201…MF RAM、202…MF RAMアドレスセレクタ、203…MF RAMリードアドレスバッファ、204…MF RAMアドレスマッチバッファ、205…MF RAMリードアドレスセレクタ、206…インデックスカウンタ、207…T2Fアクセスバッファ、210…MF RAMライトデータレジスタ、211…MF RAMライトバッファ、220…MF RAMリードデータレジスタ、221…MF RAMモディファイド検出機構、222…MF RAM先読みバッファ、223…MF RAMキャッシュフラッシュ系変更ロジック、224…MF RAM通常系変更ロジック、300…MBT Tag RAM制御部、301…MBT Tag RAMアドレス出力レジスタ、302…MBT Tag RAMアドレスセレクタ、303…MBT Tag RAMリードアドレスバッファ、304…MBT Tag RAMアドレスマッチバッファ、305…MBT Tag RAMリードアドレスセレクタ、306…インデックスカウンタ、307…F2Tアクセスバッファ、308…B2Tアクセスバッファ、310…MBT Tag RAMライト データレジスタ、311…MBT Tag RAMライトバッファ、320…MBT Tag RAMリードデータレジスタ、321…MBT Tag RAMモディファイド検出機構、322…MBT Tag RAM先読みバッファ、323…MBT Tag RAMキャッシュフラッシュ系変更 ロジック、324…MBT Tag RAM通常系変更ロジック、400…MBWBバッフ ァ、401…キャッシュフラッシュ系ライトバックバッファ、402…通常処理系ライトバックバッファ、403…ライトバックバッファ、410…ライトバックスピード調整機構、500…プロセッサバススヌーパ、600…バスマスタ、601…バス出力レジスタ、701,711,721,731…プロセッサ、702,712,722,732…キャッシュ、800…メモリコントローラ、801…メモリバス、810,811,812,813…メモリモジュール、900…PCIブリッジ、901…PCIバス、910…ISAブリッジ、911…ISAバス、920…LANアダプタ、921…LAN、950…PCIブリッジ、951…PCIバス、960…グラフィックアダプタ、961…ディスプレイ、970…ディスクコントローラ、971…ディスク。

Claims (2)

  1. キャッシュを有するプロセッサを少なくとも一つ備えた計算機システムに適用されるキャッシュフラッシュ装置において、
    全プロセッサ分のキャッシュのモディファイドブロックに関するアドレス情報をキャッシュライン単位で各エントリに記憶する第1の記憶手段と、
    前記第1の記憶手段上の各エントリのうち、少なくとも一つのモディファイドブロックのアドレスを含むエントリのインデックスを検索するために使用する情報を記憶する第2の記憶手段と
    を具備し、前記第2の記憶手段の情報を使用することによってモディファイドブロックのアドレスを高速に読み出せるようにしたことを特徴とするキャッシュフラッシュ装置。
  2. キャッシュを有するプロセッサを少なくとも一つ備えた計算機システムに適用されるキャッシュフラッシュ装置において、
    全プロセッサ分のキャッシュのモディファイドブロックに関するアドレス情報をキャッシュライン単位で各エントリに記憶する第1の記憶手段と、
    前記第1の記憶手段上の各エントリのうち、少なくとも一つのモディファイドブロックのアドレスを含むエントリのインデックスを検索するための情報として、各エントリ内にある全プロセッサ分のモディファイビットを論理和した値を有するデータを前記インデックスに対応付けて記憶する第2の記憶手段と
    を具備し、前記第2の記憶手段の情報を使用することによってモディファイドブロックのアドレスを高速に読み出せるようにしたことを特徴とするキャッシュフラッシュ装置。
JP11216098A 1998-04-22 1998-04-22 キャッシュフラッシュ装置 Expired - Fee Related JP4303803B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP11216098A JP4303803B2 (ja) 1998-04-22 1998-04-22 キャッシュフラッシュ装置
US09/231,828 US6418515B1 (en) 1998-04-22 1999-01-15 Cache flush unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11216098A JP4303803B2 (ja) 1998-04-22 1998-04-22 キャッシュフラッシュ装置

Publications (2)

Publication Number Publication Date
JPH11306081A JPH11306081A (ja) 1999-11-05
JP4303803B2 true JP4303803B2 (ja) 2009-07-29

Family

ID=14579750

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11216098A Expired - Fee Related JP4303803B2 (ja) 1998-04-22 1998-04-22 キャッシュフラッシュ装置

Country Status (2)

Country Link
US (1) US6418515B1 (ja)
JP (1) JP4303803B2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526447B1 (en) * 1999-12-14 2003-02-25 International Business Machines Corporation Apparatus for restarting interrupted data transfer and method therefor
US6857049B1 (en) * 2000-08-30 2005-02-15 Unisys Corporation Method for managing flushes with the cache
US6675262B1 (en) * 2001-06-08 2004-01-06 Hewlett-Packard Company, L.P. Multi-processor computer system with cache-flushing system using memory recall
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
US6981104B2 (en) * 2002-07-12 2005-12-27 Hewlett-Packard Development Company, L.P. Method for conducting checkpointing within a writeback cache
KR100856626B1 (ko) * 2002-12-24 2008-09-03 엘지노텔 주식회사 캐시 플러시 시스템 및 방법
JP4892812B2 (ja) * 2004-04-28 2012-03-07 株式会社日立製作所 キャッシュ制御およびデータ処理システム並びにその処理プログラム
US7409475B2 (en) * 2004-10-20 2008-08-05 Kabushiki Kaisha Toshiba System and method for a high-speed shift-type buffer
US7809890B2 (en) * 2005-07-06 2010-10-05 Kabushiki Kaisha Toshiba Systems and methods for increasing yield of devices having cache memories by inhibiting use of defective cache entries
US7738483B2 (en) * 2005-09-08 2010-06-15 Kabushiki Kaisha Toshiba Systems and methods for managing communication between master and slave devices
JP5300407B2 (ja) 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
JP2010097557A (ja) * 2008-10-20 2010-04-30 Toshiba Corp セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法
JP2011198091A (ja) * 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US8935487B2 (en) 2010-05-05 2015-01-13 Microsoft Corporation Fast and low-RAM-footprint indexing for data deduplication
US9053032B2 (en) 2010-05-05 2015-06-09 Microsoft Technology Licensing, Llc Fast and low-RAM-footprint indexing for data deduplication
US10558705B2 (en) * 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US9208472B2 (en) 2010-12-11 2015-12-08 Microsoft Technology Licensing, Llc Addition of plan-generation models and expertise by crowd contributors
US9110936B2 (en) 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
JP6083714B2 (ja) 2011-12-16 2017-02-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム
WO2013088284A1 (en) * 2011-12-16 2013-06-20 International Business Machines Corporation Tape drive system server
KR101379161B1 (ko) * 2011-12-29 2014-03-27 한양대학교 산학협력단 저장장치에서 블룸필터를 적용한 역매핑 방법 및 시스템
US9128857B2 (en) 2013-01-04 2015-09-08 Apple Inc. Flush engine
KR20140144989A (ko) * 2013-06-12 2014-12-22 에스케이하이닉스 주식회사 메모리 시스템, 반도체 메모리 장치 및 그것들의 동작 방법
US10241918B2 (en) 2015-09-29 2019-03-26 International Business Machines Corporation Considering a frequency of access to groups of tracks to select groups of tracks to destage
US10095628B2 (en) 2015-09-29 2018-10-09 International Business Machines Corporation Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage
US10120811B2 (en) * 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
JP7051546B2 (ja) * 2018-04-16 2022-04-11 キオクシア株式会社 メモリシステムおよび制御方法
US10891227B2 (en) * 2018-11-29 2021-01-12 International Business Machines Corporation Determining modified tracks to destage during a cache scan
CN111913989A (zh) * 2020-06-15 2020-11-10 东风日产数据服务有限公司 分布式应用缓存刷新系统、方法、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2641819B2 (ja) * 1990-11-05 1997-08-20 三菱電機株式会社 キャッシュ・コントローラ並びにフォールト・トレラント・コンピュータ及びそのデータ転送方式
US5555379A (en) * 1994-07-06 1996-09-10 Advanced Micro Devices, Inc. Cache controller index address generator
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JP3020833B2 (ja) * 1995-06-19 2000-03-15 株式会社東芝 チェックポイント取得システム
US6122711A (en) * 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush

Also Published As

Publication number Publication date
JPH11306081A (ja) 1999-11-05
US6418515B1 (en) 2002-07-09

Similar Documents

Publication Publication Date Title
JP4303803B2 (ja) キャッシュフラッシュ装置
JP3067112B2 (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
US6366984B1 (en) Write combining buffer that supports snoop request
KR100885277B1 (ko) 캐시에서의 라인들을 추론적으로 무효화하는 방법 및 시스템
JP3431824B2 (ja) アクセス方法及び処理装置
KR100320978B1 (ko) 캐시 갱신 프로토콜을 이용한 캐시 할당 해제 방법 및 데이터 처리 시스템
US8782348B2 (en) Microprocessor cache line evict array
US6021468A (en) Cache coherency protocol with efficient write-through aliasing
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US6343347B1 (en) Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US6353875B1 (en) Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US20150106567A1 (en) Computer Processor Employing Cache Memory With Per-Byte Valid Bits
US6275909B1 (en) Multiprocessor system bus with system controller explicitly updating snooper cache state information
US8051248B2 (en) Transient transactional cache
JPH09259036A (ja) ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法
KR19990072600A (ko) 재실행스누프히트시의순방향진행수행방법및시스템
JPH0962572A (ja) ストリーム・フィルタ装置及び方法
JPH10320283A (ja) マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
EP1725938A1 (en) System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
JPH11328016A (ja) 命令キャッシュとデ―タ・キャッシュ間のコヒ―レンシを維持する方法および装置
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
KR19980081314A (ko) 프로세서 버스로의 캐쉬 연산의 요구-기반 발생 방법 및 장치
TWI417725B (zh) 微處理器、微處理器之資料快取存取方法與電腦程式產品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090407

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090427

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

Free format text: PAYMENT UNTIL: 20120501

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120501

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120501

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130501

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130501

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140501

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees