JP2010128698A - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP2010128698A
JP2010128698A JP2008301297A JP2008301297A JP2010128698A JP 2010128698 A JP2010128698 A JP 2010128698A JP 2008301297 A JP2008301297 A JP 2008301297A JP 2008301297 A JP2008301297 A JP 2008301297A JP 2010128698 A JP2010128698 A JP 2010128698A
Authority
JP
Japan
Prior art keywords
cache
flag
access
violation
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2008301297A
Other languages
English (en)
Inventor
Masato Uchiyama
真郷 内山
Shuo Nomura
周央 野村
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 JP2008301297A priority Critical patent/JP2010128698A/ja
Priority to US12/557,773 priority patent/US20100131718A1/en
Publication of JP2010128698A publication Critical patent/JP2010128698A/ja
Withdrawn 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
    • G06F12/0815Cache consistency protocols

Landscapes

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

Abstract

【課題】プロセッサコアの違反アクセスを効率よく検出する。
【解決手段】マルチプロセッサシステム10は、複数のプロセッサコア11に対応して設けられた複数のキャッシュシステム21を含む。キャッシュシステム21は、キャッシュラインとこのライン情報とを格納するキャッシュメモリ22を含む。キャッシュシステム21は、ライン情報と、アービタから送られるアクセス要求とを比較して違反アクセスを検出する違反検出回路24と、違反検出回路24による検出結果に基づいてキャッシュラインごとにフラグをセットし、かつプロセッサコア11に保持されたキャッシュラインに読み出しアクセス又は書き込みアクセスする際にフラグの内容を確認し、このフラグの内容に基づいて違反アクセスを検出するフラグ制御回路とを含む。
【選択図】 図2

Description

本発明は、マルチプロセッサシステムに係り、例えば複数のプロセッサコアと、これらに共有される共有メモリとを備えたマルチプロセッサシステムに関する。
近年、コンピュータ装置の処理性能を飛躍的に向上させることが期待できることから、複数のプロセッサコアを共有バスを介して接続したマルチプロセッサシステムの開発が進められている。また、プロセッサコアの動作周波数は、年々高くなる傾向にあるが、主記憶に用いられる外部メモリ(共有メモリ)はプロセッサコアほど高速化が進んでいないため、両者のギャップを埋めるために、キャッシュメモリを用いるのが一般的である。このようなプロセッサコアのキャッシュ機構としては、プロセッサコアに1次キャッシュを内蔵させている。
特許文献1には、共有メモリ型のマルチプロセッサシステムにおいて、コヒーレンシ(一貫性)維持のために不適切なメモリアクセスを検出し、この検出結果を記憶もしくは各プロセッサコアへ割り込みによって伝達するデバッグシステムが開示されている。
上記デバッグシステムでは、あるプロセッサコアの1次キャッシュ内において書き換えを行っていない(ダーティではない)状態で保持しているキャッシュラインに対して他のプロセッサコアで書き込みアクセスが発生した場合に、実際には書き換えられた1次キャッシュ内のキャッシュラインの内容を使用しない(=プログラムとしてコヒーレンシを保てなくなることはない)としても、他のプロセッサコアによる書き込みアクセスを違反アクセスとして検出してしまう。
この違反検出を回避するためには、他のプロセッサコアによって書き換えられたキャッシュラインを、書き換えられた後に使用しないことが分かっているにもかかわらず全て無効(invalidate)にする必要があり、処理の実現上は必ずしも必要としない無効処理によって処理時間が増加してしまう。
同様に、大きなデータ領域を複数のプロセッサコアで共有している状況で、同期タイミングの制約が厳しくない形であるプロセッサコアが一部のデータのみを書き換えるという処理を行う場合に、本来は書き換えた後にその領域を指定して再読み込みしてもらうだけで済むところを、書き換える領域を書き換える前に他のプロセッサコアに伝達して無効処理完了を待つという同期処理が必要になって処理時間が増加してしまうこともある。
特開2008−250373号公報
本発明は、プロセッサコアの違反アクセスを効率よく検出することが可能なマルチプロセッサシステムを提供する。
本発明の一態様に係るマルチプロセッサシステムは、複数のプロセッサコアに対応して設けられ、かつデータを格納する単位であるキャッシュラインを格納するキャッシュメモリをそれぞれが含む複数のキャッシュシステムと、前記複数のプロセッサコアに共有される共有メモリと、前記複数のキャッシュシステムから前記共有メモリへ送られるアクセス要求を調停し、かつ調停されたアクセス要求を前記共有メモリ及び前記複数のキャッシュシステムに送るアービタとを具備する。前記キャッシュメモリの各々は、キャッシュラインが有効か否かを示す有効ビットと、キャッシュラインを前記共有メモリに書き戻したか否かを示すダーティビットと、キャッシュラインのアドレス情報であるタグとを含むライン情報を格納する。前記キャッシュシステムの各々は、前記ライン情報と、前記アービタから送られるアクセス要求とを比較して違反アクセスを検出する違反検出回路と、前記違反検出回路による検出結果に基づいてキャッシュラインごとにフラグをセットし、かつプロセッサコアに保持されたキャッシュラインに読み出しアクセス又は書き込みアクセスする際に、前記フラグの内容を確認し、このフラグの内容に基づいて違反アクセスを検出するフラグ制御回路とを具備する。
本発明の一態様に係るマルチプロセッサシステムは、複数のプロセッサコアに対応して設けられ、かつデータを格納する単位であるキャッシュラインを格納するキャッシュメモリをそれぞれが含む複数のキャッシュシステムと、前記複数のプロセッサコアに共有される共有メモリと、前記複数のキャッシュシステムから前記共有メモリへ送られるアクセス要求を調停し、かつ調停されたアクセス要求を前記共有メモリ及び前記複数のキャッシュシステムに送るアービタとを具備する。前記キャッシュメモリの各々は、キャッシュラインが有効か否かを示す有効ビットと、キャッシュラインを前記共有メモリに書き戻したか否かを示すダーティビットと、キャッシュラインのアドレス情報であるタグとを含むライン情報を格納する。前記キャッシュシステムの各々は、前記ライン情報と、前記アービタから送られるアクセス要求とを比較して違反アクセスを検出する違反検出回路と、前記違反検出回路による検出結果に基づいて有効ビット及びダーティビットを一時的に書き換える第1の制御回路と、プロセッサコアに保持されたキャッシュラインに読み出しアクセス又は書き込みアクセスする際に、有効ビット及びダーティビットの内容を確認し、これらの内容に基づいて違反アクセスを検出する第2の制御回路とを具備する。
本発明によれば、プロセッサコアの違反アクセスを効率よく検出することが可能なマルチプロセッサシステムを提供することができる。
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
[第1の実施形態]
[1.マルチプロセッサシステム10の構成]
図1は、本発明の第1の実施形態に係るマルチプロセッサシステム10の構成を示すブロック図である。図1に示したマルチプロセッサシステム10は、例えば、チップに実装されたシステムLSI(Large-Scale Integrated Circuit)として構成される。
マルチプロセッサシステム10は、複数のプロセッサコア11、アービタ13、共有メモリとしての2次キャッシュメモリ(2次キャッシュ)14、メインメモリ15、及び違反処理回路16を備えている。なお、本実施形態では、例えば3個のプロセッサコア11−1〜11−3を一例として示している。以下の説明において、複数のプロセッサコア11を区別する必要がない場合は、各プロセッサコアを単に“11”と表記する。プロセッサコア11内に含まれる回路についても同様である。2次キャッシュ14は、例えばSRAM(Static Random Access Memory)により構成されている。メインメモリ15は、例えばDRAM(Dynamic Random Access Memory)により構成されている。
プロセッサコア11によるメインメモリ15へのアクセスは、バス12及び2次キャッシュ14を介して行われる。なお、本実施形態では、共有メモリとしての2次キャッシュ14は必ずしも必要ではなく、プロセッサコア11がバス12を介して直接に共有メモリとしてのメインメモリ15へアクセスするように構成してもよい。
プロセッサコア11−1〜11−3から2次キャッシュ14へのアクセス要求は、アービタ13で競合を調停される。すなわち、アービタ13は、複数のプロセッサコアから共有メモリにバス12を介してアクセスが競合した場合に、規定された方法によりアクセスの割り当てを行う。そして、1サイクルに1つのアクセス要求だけが2次キャッシュ14に送られるようになっている。2次キャッシュ14にヒットしなかったアクセス要求は、メインメモリ15に送られる。
各プロセッサコア11から2次キャッシュ14へ送られるアクセス要求には、プロセッサコア番号、リード/ライト識別信号、2次キャッシュ直接アクセス識別信号、1次キャッシュリフィルアクセス識別信号、及びアクセス先アドレスなどの情報の他に、1次キャッシュ書き込み識別信号CWIが含まれる。1次キャッシュ書き込み識別信号CWIについては後述する。リード/ライト識別信号は、読み出し/書き込み動作を識別する信号である。2次キャッシュ直接アクセス識別信号は、1次キャッシュを経由しないで直接に共有メモリにアクセスする動作を識別する信号である。1次キャッシュリフィルアクセス識別信号は、キャッシュミス時に共有メモリのデータを1次キャッシュに置き換える動作を識別する信号である。
図1に示すように、本実施形態のマルチプロセッサシステム10は、2次キャッシュ14に送られるアクセス要求を各プロセッサコア11にフィードバックするフィードバックパスを備えている。各プロセッサコア11は、このアクセス要求フィードバックを用いることで他のプロセッサコアのアクセス内容を確認することができ、また、アクセス要求フィードバックを用いて違反アクセスを検出することができる。
各プロセッサコア11は、マルチプロセッサシステム10の動作を制御するためのCPU(Central Processing Unit)であり、メインメモリ15などに格納されたプログラムを実行することにより、キャッシュメモリやその他の回路の制御を行う。そして、LSIが処理すべき内容を複数のタスクに分割し、各タスクに最適な構成を持ったプロセッサコアを並列に動作させることで、大幅な処理速度の向上が可能となる。プロセッサコア11−1〜11−3はそれぞれ、1次キャッシュとしてのキャッシュシステム21−1〜21−3を備えている。
[2.キャッシュシステム21の構成]
図2は、1次キャッシュとしてのキャッシュシステム21の構成を示すブロック図である。なお、図2は、1個のプロセッサコア11に含まれる1個のキャッシュシステム21を示しており、他のプロセッサコア11に含まれるキャッシュシステム21の構成も図2と同じである。
キャッシュシステム21は、1次キャッシュメモリ22、キャッシュ制御回路23、違反検出回路24、インコヒーレントフラグ制御回路25、ダーティ遷移検出回路26、及びデバッグ切替回路27を備えている。本実施形態では、違反検出回路24、インコヒーレントフラグ制御回路25、ダーティ遷移検出回路26、デバッグ切替回路27、及び違反処理回路16によりデバッグ回路が構成される。
1次キャッシュメモリ22は、例えばSRAMにより構成されている。図3は、1次キャッシュメモリ22の構成を示す概略図である。1次キャッシュメモリ22は、複数のデータからなるキャッシュラインを格納する領域を備えている。このキャッシュラインは、アクセス時にキャッシュと共有メモリとの間で取り交わされるデータの単位であり、図3の一行分のデータに対応する。
さらに、1次キャッシュメモリ22は、有効(バリッド)ビット(V)、ダーティビット(D)、タグ、及びデータをそれぞれ格納する領域を備えている。有効ビット、ダーティビット、及びタグは、キャッシュラインごとに付加される。インデックスは、キャッシュラインの番号を表し、キャッシュラインを選択するために使用される。すなわち、キャッシュラインは、上から順番に0から始まる番号からなるインデックスが付されている。タグは、キャッシュラインのアドレス情報を示す。
有効ビットは、キャッシュラインが有効か否かを示す。すなわち、1次キャッシュメモリ22内のキャッシュラインが、このキャッシュラインのインデックスとタグとで表されるデータとして有効か否かを示す。有効ビット=1の場合はキャッシュラインは有効であり、有効ビット=0の場合はキャッシュラインは無効である。
ダーティビットは、1次キャッシュメモリ22内のキャッシュラインが書き換えられ(更新され)、このキャッシュラインが共有メモリに書き戻されたか否かを示す。プロセッサコアが1次キャッシュメモリ22に書き込んだデータは、共有メモリに書き戻す(ライトバックを行う)必要があるため、キャッシュラインごとに、共有メモリへの書き戻しを行ったか否かを示すダーティビットが設けられている。換言すると、ダーティビットは、1次キャッシュメモリのキャッシュラインが書き換えられて最新データとなっており、このキャッシュラインのコピー元となる共有メモリには旧データしかなく、書き換えられたプロセッサコアが最新データを所有していることを示す。ダーティビットは、キャッシュラインが更新されて、まだ共有メモリに書き戻されていない場合に“1”にセットされる。
図2に示すように、1次キャッシュメモリ22は、2つのアクセスポート(アクセスポート0、及びアクセスポート1)を有している。1次キャッシュメモリ22に格納された有効ビット、ダーティビット、及びタグは、キャッシュライン単位で同時に読み出される。アクセスポート0を使用したアクセスはチップイネーブル信号CE0によって行われ、アクセスポート1を使用したアクセスはチップイネーブル信号CE1によって行われる。
キャッシュ制御回路23は、アクセスポート0を用いて1次キャッシュメモリ22にアクセスする。具体的には、書き込み時、キャッシュ制御回路23は、チップイネーブル信号CE0をアサートし、かつインデックスIND0及びライトデータWD0を1次キャッシュメモリ22に送る。これによって、インデックスIND0に対応するキャッシュラインにライトデータWD0が書き込まれる。また、読み出し時、キャッシュ制御回路23は、リードイネーブル信号RE0をアサートし、かつインデックスIND0を1次キャッシュメモリ22に送る。これによって、キャッシュ制御回路23は、インデックスIND0に対応するキャッシュラインをリードデータRD0として1次キャッシュメモリ22から受ける。
また、キャッシュ制御回路23は、1次キャッシュメモリ22にデータがヒットしたか否かを示すキャッシュヒット信号を生成し、このキャッシュヒット信号をダーティ遷移検出回路26に送る。このキャッシュヒット信号は、キャッシュヒット時に“1”、キャッシュミス時に“0”に設定される。
キャッシュ制御回路23による1次キャッシュメモリ22へのデータの書き込みは、以下のような2サイクルで実現される。
・サイクル1:有効ビット、ダーティビット、及びタグの読み出し
・サイクル2:キャッシュヒット/ミスの判定
そして、キャッシュ制御回路23は、キャッシュヒット時には、1次キャッシュメモリ22へデータを書き込む。一方、キャッシュミス時には、2次キャッシュ14へリフィルアクセスを行う。なお、「リフィル」とは、キャッシュミス時に、1次キャッシュメモリ22のキャッシュラインを2次キャッシュ14のデータに置き換える処理である。
これらの動作に加えて、キャッシュ制御回路23は、インコヒーレントフラグ制御回路25に対して、インコヒーレントフラグのチェック制御、及びインコヒーレントフラグのクリア制御を実行する。これらの動作については、後述する。
デバッグ切替回路27は、プロセッサコアに設けられたデバッグ回路による違反アクセス検出の有効/無効を設定する。デバッグ切替回路27は、1ビットのレジスタ27Aを備えており、このレジスタ27Aのデータに基づいて違反アクセス検出の有効/無効を設定する。レジスタ27Aのデータは、以下のように設定される。
1’b1 : 違反アクセス検出有効
1’b0 : 違反アクセス検出無効
なお、「1’b」は、1ビットの2進数表記を意味する。
レジスタ27Aのデータは、バス12を介して外部から供給されるライトイネーブル信号及びライトデータによって自由に書き換えることが可能である。また、レジスタ27Aのデータは常時出力されており、違反検出イネーブル信号VDEとして違反検出回路24、インコヒーレントフラグ制御回路25、及びダーティ遷移検出回路26に送られる。
ダーティ遷移検出回路26は、第1のサイクルで読み出したダーティビットと、第2のサイクルで書き込む(更新する)ダーティビットとを用いて、ダーティビットが“0”から“1”に書き換えられたか否かを判定し、この判定結果を1次キャッシュ書き込み識別信号CWIとして出力する。すなわち、1次キャッシュ書き込み識別信号CWIは、1次キャッシュメモリ22内のキャッシュラインを2次キャッシュ14のデータに置き換えた後に、この1次キャッシュメモリ22内のキャッシュラインが新たなデータに書き換えられた動作を識別する信号である。そして、ダーティ遷移検出回路26は、違反検出イネーブル信号VDEがアサートされている場合に、1次キャッシュ書き込み識別信号CWIを出力する。この1次キャッシュ書き込み識別信号CWIは、アービタ13へ送られる。
この時、キャッシュミスした場合と同様に、1次キャッシュ書き込み識別信号CWI以外のアクセス要求は、プロセッサコア11からキャッシュ制御回路23を介してアービタ13へ送られる。1次キャッシュ書き込み識別信号CWIがアサートされる場合、2次キャッシュ直接アクセス識別信号、及び1次キャッシュリフィルアクセス識別信号は、共に“0”に設定される。すなわち、キャッシュ制御回路23からアービタ13へ送られるアクセス要求は、以下に示すように設定される。
・プロセッサコア番号=自身のコア番号
・リード/ライト識別信号=0(read)
・2次キャッシュ直接アクセス識別信号=0
・1次キャッシュリフィルアクセス識別信号=0
・アクセス先アドレス=共有メモリのアクセス先アドレス
なお、違反検出イネーブル信号VDEがネゲートされた時(すなわち、違反アクセス検出が無効の時)は、AND回路26Bによって1次キャッシュ書き込み識別信号CWIが“0”に固定される。この場合は、通常のキャッシュアクセス処理と同じであり、1次キャッシュ書き込み識別信号CWI以外のアクセス要求は通常のキャッシュアクセス処理時と変化はない。
[2−1.違反検出回路24の構成]
違反検出回路24は、アクセスポート1を用いて1次キャッシュメモリ22にアクセスする。具体的には、違反検出回路24は、チップイネーブル信号CE1をアサートし、かつインデックスIND1を1次キャッシュメモリ22に送る。これによって、違反検出回路24は、インデックスIND1に対応するキャッシュラインをリードデータRD1として1次キャッシュメモリ22から受ける。また、違反検出回路24は、アービタ13からフィードバックパスを介してアクセス要求を受ける。違反検出回路24は、違反検出イネーブル信号VDEがアサートされたときのみ動作し、違反検出イネーブル信号VDEがネゲートされたときはアービタ13からのアクセス要求を無視する。
図4は、違反検出回路24の構成を示すブロック図である。違反検出回路24は、レジスタ24A、判定回路24B、比較回路24C、及び2個のAND回路24D、24Eを備えている。
レジスタ24Aは、アービタ13から送られるアクセス要求を格納する。レジスタ24Aに格納されるアクセス要求は、アクセス要求時にアサートされるイネーブル信号、アクセス先アドレス、プロセッサコア番号、及び識別信号類を含む。プロセッサコア番号、及び識別信号類は、判定回路24Bに送られる。イネーブル信号は、チップイネーブル信号CE1として1次キャッシュメモリ22に送られる。アクセス先アドレスは、それの上位がタグに対応し、それの下位がインデックスに対応する。よって、アドレス上位は比較回路24Cに送られ、アドレス下位はインデックスIND1として1次キャッシュメモリ22に送られる。
チップイネーブル信号CE1及びインデックスIND1によって読み出されたリードデータRD1のうち、有効ビット及びダーティビットは判定回路24Bに送られ、タグは比較回路24Cに送られる。
比較回路24Cは、1次キャッシュメモリ22から読み出されたタグと、アクセス要求に含まれるタグとを比較し、同一のアドレスを指しているか否かを判定する。
判定回路24Bは、1次キャッシュメモリ22から読み出された有効ビット及びダーティビットを、プロセッサコア番号及び識別信号類(リード及びライトそれぞれの2次キャッシュ直接アクセス識別信号、リード及びライトそれぞれの1次キャッシュリフィルアクセス識別信号、及び1次キャッシュ書き込み識別信号CWI)と共に処理し、所定のポリシーに基づいてそのアクセスパターンが違反であるか否かを判定する。判定回路24Bは、レジスタ24Aのデータと1次キャッシュメモリ22からの読み出しデータRD1が更新される毎に、違反アクセス検出を実行する。
違反アクセスの検出ポリシーの一例について説明する。本実施形態では、以下の5つのアクセスパターンを違反とする。なお、以下の説明において、単に「キャッシュライン」という場合は、アドレスが同じキャッシュラインを統括して指している。
(1) 有効ビット=1、ダーティビット=1となっているキャッシュラインに、他のプロセッサコアから読み出しアクセスが発生した場合(読み出しアクセスを行ったプロセッサコアは、最新ではないデータを読み出している。)
(2) 有効ビット=1、ダーティビット=1となっているキャッシュラインに、他のプロセッサコアから書き込みアクセスが発生した場合(キャッシュラインを保持しているプロセッサコアが1次キャッシュメモリに対して行った書き込み結果と、他のプロセッサコアが2次キャッシュに対して行った書き込み結果とのどちらが最終的に反映されるのか分からなくなってしまう。)
(3) 有効ビット=1、ダーティビット=1となっているキャッシュラインに、このキャッシュラインを保持しているプロセッサコア自身が2次キャッシュ直接読み出しアクセスを行った場合(最新のデータはプロセッサコア自身の1次キャッシュメモリに格納されているので、2次キャッシュから読み出したデータは最新のものではない。)
(4) 有効ビット=1、ダーティビット=1となっているキャッシュラインに、このキャッシュラインを保持しているプロセッサコア自身が2次キャッシュ直接書き込みアクセスを行った場合(キャッシュラインを保持しているプロセッサコアが1次キャッシュメモリに対して行った書き込み結果と、そのプロセッサコアが2次キャッシュに対して直接行った書き込み結果のどちらが最終的に反映されるのか分からなくなってしまう。)
(5) 有効ビット=1、ダーティビット=0となっているキャッシュラインに、このキャッシュラインを保持している第1のプロセッサコアが2次キャッシュ直接書き込みアクセスを行った後、又は、他の第2のプロセッサコアで1次キャッシュメモリ或いは2次キャッシュに書き込みアクセスを行った後、上記第1のプロセッサコアが自身の1次キャッシュメモリに保持している同キャッシュラインに対して読み出しアクセス或いは書き込みアクセスを行った場合(そのプロセッサコアは最新ではないデータを使うことになる。)
ここで、判定回路24Bは、4つの違反アクセスパターン(1)〜(4)の判定に加えて、5番目の違反アクセスパターン(5)のうち一部に含まれるアクセスがインコヒーレントフラグをセットすべきパターンであるか否かを判定する。このインコヒーレントフラグをセットすべきパターンとは、「有効ビット=1、ダーティビット=0となっているキャッシュラインに、このキャッシュラインを保持している第1のプロセッサコアが2次キャッシュ直接書き込みアクセスを行った場合」、及び、「有効ビット=1、ダーティビット=0となっているキャッシュラインに、上記第1のプロセッサコアと異なる第2のプロセッサコアで1次キャッシュメモリ或いは2次キャッシュに書き込みアクセスを行った場合」である。
なぜなら、このようなアクセスが行われた場合、キャッシュラインを保持している第1のプロセッサコアのキャッシュラインが最新でなくなる。しかし、この第1のプロセッサコアのキャッシュラインをその後に使用しなければ特に問題はない。よって、上記2つのアクセスパターンが検出された時点では即違反と判定せず、一旦インコヒーレントフラグを立てるようにする。そして、上記最新でないキャッシュラインを第1のプロセッサコアが実際に使用する場合に、違反アクセスであると判定する。すなわち、インコヒーレントフラグは、第1のプロセッサコアが保持しているキャッシュラインが既に他の第2のプロセッサコアによって書き換えられたか否かを識別するものである。
それぞれのアクセスパターンは1つの違反だけに対応するわけではなく、様々な違反によって同じような不正なアクセスパターンになる場合がある。例えば、プロセッサコア11−1で有効ビット=1、ダーティビット=1となっているラインにプロセッサコア11−2からアクセスが発生した場合、そのラインがプロセッサコア11−1が書き換えを行うことが許可された領域であってプロセッサコア11−2がアクセスしてはならない領域であれば、プロセッサコア11−2のアクセスが不正なアクセスとなる。逆に、プロセッサコア11−2のアクセスは正当なものであって、過去にプロセッサコア11−1が書き込みを許可された領域でないにもかかわらず書き込み操作を行ってしまったために有効ビット=1、ダーティビット=1としてキャッシュラインを保持してしまっていることが不正である可能性もある。
なお、違反アクセスの定義はシステムや用途によって異なる場合があり、それに対応して違反アクセスの検出ポリシーも変える必要がある。その際、上記のように1つの違反アクセスパターンには複数の要因が含まれる可能性がある。したがって、違反アクセスパターンが必ず何らかの検出ポリシーに該当するように検出ポリシーを設定する。このようにして、違反アクセスの誤検出を防ぐようにする。
[2−2.インコヒーレントフラグ制御回路25の構成]
図5は、インコヒーレントフラグ制御回路25の構成を示すブロック図である。インコヒーレントフラグ制御回路25は、1次キャッシュメモリ22内のキャッシュラインの数に相当するビット数を有するレジスタ25A、及び1個のAND回路25Bを備えている。
インコヒーレントフラグ制御回路25は、フラグセット信号、及びセットフラグ番号を違反検出回路24から受ける。これに応じて、インコヒーレントフラグ制御回路25は、指定ビットセット処理を実行する。
また、インコヒーレントフラグ制御回路25は、フラグチェック信号、チェックアドレス、フラグクリア信号、及びクリアフラグ番号をキャッシュ制御回路23から受ける。これに応じて、インコヒーレントフラグ制御回路25は、指定ビットクリア処理を実行する。また、フラグチェック信号を受けた際には、インコヒーレントフラグ制御回路25は、指定ビット読み出し処理を実行する。
インコヒーレントフラグ制御回路25は、デバッグ切替回路27から違反検出イネーブル信号VDEを受ける。違反検出イネーブル信号VDEがネゲートされると、インコヒーレントフラグ制御回路25は、レジスタ25Aの全ビットをクリアする。
このように構成されたインコヒーレントフラグ制御回路25は、1次キャッシュメモリ22への読み出しアクセス或いは書き込みアクセスが発生した場合に、指定ビット読み出し処理により読み出されたフラグの内容を確認する。そして、このフラグが立っていた場合に、今回のアクセスが違反である判定する。この判定結果は、違反検出信号1によって違反処理回路16に通知される。
[2−3.違反処理回路16の構成]
図6は、違反処理回路16の構成を示すブロック図である。違反処理回路16は、違反情報レジスタ16A、及び2個の選択回路16B、16Cを備えている。この違反情報レジスタ16Aは、違反アクセスパターン(本実施形態では、5つのアクセスパターン)に対応した数のレジスタを備えている。
違反処理回路16は、違反検出回路24から違反検出情報0を受け、インコヒーレントフラグ制御回路25から違反検出情報1を受ける。違反検出情報0は、違反検出信号0、違反パターン0、アクセスプロセッサコア番号0、及び違反検出アドレス0を含む。違反検出情報1は、違反検出信号1、及び違反検出アドレス1を含む。
プロセッサコア11−1〜11−3の各々に含まれる違反検出回路24により違反アクセスが検出されて違反検出信号がアサートされると、違反処理回路16は、違反アクセスパターンで指定されたレジスタに、プロセッサコア番号及び検出アドレスを書き込んで保持する。
違反検出信号0がアサートされると、違反処理回路16は、違反検出パターン0に対応するレジスタに、アクセスプロセッサコア番号0、違反検出プロセッサコア番号、違反検出アドレス0を書き込む。
違反検出信号1がアサートされると、違反処理回路16は、違反検出信号1に対応するレジスタに、違反検出プロセッサコア番号及び違反検出アドレス1と、さらに、違反を検出したプロセッサコアのア番号として違反検出プロセッサコア番号を書き込む。この違反検出プロセッサコア番号は、この1次キャッシュを持つプロセッサコアの番号を回路的に固定値として入力する。
違反情報レジスタ16Aに格納されたこれらの違反情報は、外部からバス経由で読み出すことができる。すなわち、外部から読み出し要求及びレジスタ番号を違反処理回路16に送ることで、違反情報レジスタ16Aのうちレジスタ番号に対応する領域の違反情報がリードデータとして外部にバス経由で読み出される。この読み出された違反情報は、マルチプロセッサシステム10のデバッグに利用される。
[3.マルチプロセッサシステム10の動作]
上記のように構成されたマルチプロセッサシステム10の動作について説明する。
まず、違反検出回路24の動作について説明する。違反アクセス検出時には、デバッグ切替回路27により違反検出イネーブル信号VDEがアサートされる。
図4に示すように、違反検出回路24には、フィードバックパスを介して、アービタ13で調停されたアクセス要求(イネーブル信号、プロセッサコア番号、アクセス先アドレス、リード/ライト識別信号、2次キャッシュ直接アクセス識別信号、1次キャッシュリフィルアクセス識別信号、及び1次キャッシュ書き込み識別信号CWIを含む)が送られる。違反検出回路24は、違反検出イネーブル信号VDEがアサートされている場合、このアクセス要求をレジスタ24Aに格納する。
続いて、違反検出回路24は、レジスタ24Aに格納されたイネーブル信号をチップイネーブル信号CE1として1次キャッシュメモリ22に送り、またアクセス先アドレスの下位をインデックスIND1として1次キャッシュメモリ22に送る。これにより、違反検出回路24は、1次キャッシュメモリ22からインデックスIND1に対応するキャッシュラインの有効ビット、ダーティビット、及びタグをリードデータRD1として受ける。
続いて、比較回路24Cは、1次キャッシュメモリ22から読み出されたタグと、アービタ13からのアクセス先アドレスの上位(タグ)とを比較し、同一のキャッシュラインを指しているか否かを判定する。2個のタグが一致している場合、比較回路24Cは、一致信号をアサートしてAND回路24D、24Eにそれぞれ送る。
続いて、判定回路24Bは、1次キャッシュメモリ22から読み出された有効ビット及びダーティビットを、プロセッサコア番号及び識別信号類と共に処理し、前述した検出ポリシーに基づいてそのアクセスパターンが違反であるか否かを判定する。さらに、判定回路24Bは、アクセスパターンがインコヒーレントフラグをセットすべきパターンであるか否かを判定する。
アクセスパターンが前述したインコヒーレントフラグをセットすべきパターンであり(フラグセット条件一致)、アクセス先とプロセッサコアで保持されているキャッシュラインが同一のものであれば、違反検出回路24は、インコヒーレントフラグをセットする。すなわち、違反検出回路24は、フラグセット信号をアサートし、さらにアクセス先アドレスに含まれるインデックスをセットフラグ番号としてインコヒーレントフラグ制御回路25に送る。
アクセスパターンが前述した違反アクセス(1)〜(4)に該当する場合、判定回路24Bは、違反信号をアサートしてAND回路24Dに送る。アクセスパターンが違反であり、アクセス先とプロセッサコアで保持されているキャッシュラインが同一のものであれば、違反検出となる。この場合、違反検出回路24は、検出結果(違反検出信号0)、違反パターン(違反検出パターン0)、違反を検出するきっかけとなるアクセスを行ったプロセッサコアの番号(アクセスプロセッサコア番号0)、アクセス先アドレス(違反検出アドレス0)を違反処理回路16に送る。このようにして、違反検出回路24により違反アクセス(1)〜(4)が検出される。
次に、キャッシュ制御回路23の動作について説明する。キャッシュ制御回路23は、1次キャッシュメモリ22に保持されているキャッシュラインにヒットする読み出しアクセス又は書き込みアクセスが行われた場合に、インコヒーレントフラグをチェックするためのフラグチェック信号をアサートし、さらに、読み出しアクセス又は書き込みアクセスが行われたアドレスをチェックアドレスとしてインコヒーレントフラグ制御回路25に送る。
また、キャッシュ制御回路23は、1次キャッシュメモリ22に保持されているキャッシュラインの状態が下記(1)〜(3)のように変更された場合に、インコヒーレントフラグをクリアするためのフラグクリア信号をアサートし、さらに、このキャッシュラインのインデックスをクリアフラグ番号としてインコヒーレントフラグ制御回路25に送る。
(1)リフィル処理によって、保持しているキャッシュラインに新しいキャッシュラインが上書きされた場合
(2)リフィルを伴わないキャッシュライン確保操作によって、保持しているキャッシュラインに新しいキャッシュラインが上書きされた場合
(3)1次キャッシュメモリを直接書き換える操作によって、保持しているキャッシュラインが無効化された場合
次に、インコヒーレントフラグ制御回路25の動作について説明する。インコヒーレントフラグ制御回路25によるインコヒーレントフラグのセット及びクリアは以下のように行われる。
違反検出回路24によってインコヒーレントフラグをセットすべきアクセスパターンが検出された場合、フラグセット信号がアサートされる。図5に示すように、インコヒーレントフラグ制御回路25は、フラグセット信号がアサートされると、指定ビットセット処理を実行する。すなわち、インコヒーレントフラグ制御回路25は、セットフラグ番号に対応する、レジスタ25Aのビットにフラグを立てる(ビットに“1”をセットする)。
キャッシュ制御回路23によってインコヒーレントフラグをクリアすべきキャッシュラインの状態変化を検出した場合、フラグクリア信号がアサートされる。インコヒーレントフラグ制御回路25は、フラグクリア信号がアサートされると、指定ビットクリア処理を実行する。すなわち、インコヒーレントフラグ制御回路25は、クリアフラグ番号に対応する、レジスタ25Aのフラグをクリアする(ビットに“0”をセットする)。
また、インコヒーレントフラグ制御回路25による違反アクセスパターン(5)に対応する違反検出は以下のように行われる。
まず、キャッシュ制御回路23によってインコヒーレントフラグをチェックすべき、キャッシュラインへのアクセスが検出された場合、フラグチェック信号がアサートされる。これに応答して、インコヒーレントフラグ制御回路25は、指定ビット読み出し処理を実行する。すなわち、インコヒーレントフラグ制御回路25は、チェックアドレスに対応する、レジスタ25Aのフラグの内容を確認する。そして、このインコヒーレントフラグが立っている場合には、インコヒーレントフラグ制御回路25は、今回のアクセスが違反アクセスパターン(5)に該当すると判断し、違反検出信号1をアサートする。また、インコヒーレントフラグ制御回路25は、違反検出信号1とともに、キャッシュ制御回路23から送られたチェックアドレスを違反検出アドレス1として違反処理回路16に送る。
一方、このインコヒーレントフラグがクリアされていた場合、インコヒーレントフラグ制御回路25は、今回のアクセスは違反アクセスパターン(5)に該当しないと判断する。この場合、インコヒーレントフラグ制御回路25は、違反検出情報1を違反処理回路16に出力しない。
なお、インコヒーレントフラグは、デバック機能が有効にされる(違反検出イネーブル信号VDEがアサートされる)ごとに新たに設定される。このために、インコヒーレントフラグ制御回路25は、違反検出イネーブル信号VDEがネゲートされると、レジスタ25Aの全ビット(全フラグ)をクリアする。
以上の実施形態では、ダイレクトマップ[1ウェイ(way)]方式のキャッシュシステムの場合を想定して説明しているが、勿論、2個以上のウェイを持つセットアソシアティブ方式のキャッシュシステムについても同様に適用可能である。2個以上のウェイを持つキャッシュシステムの場合は、キャッシュシステムが保持するキャッシュライン数はインデックス数とウェイ数との積となるため、以下の点が異なる。
まず、違反の判定を行う際に1次キャッシュメモリ22から読み出す有効ビット、ダーティビット、タグの組がウェイ数の分だけ読み出されることになる。よって、図4の判定回路24B及び比較回路24Cもウェイ数の分だけ複製される。ただし、複数のキャッシュラインに対して同時にタグが一致することはないので判定結果は1通りとなる。
次に、1ウェイの場合にはインコヒーレントフラグのフラグ番号はキャッシュラインのインデックスと等しくなるが、2個以上のウェイの場合のフラグ番号はインデックスとウェイ情報とから生成される、1個のキャッシュラインを指し示す番号となる。フラグ番号は以下の2箇所で使用する。
・インコヒーレントフラグクリア時のクリアフラグ番号
・インコヒーレントフラグセット時のセットフラグ番号
インコヒーレントフラグチェック時には、チェックアドレスは1ウェイの場合と変わらず、フラグチェック信号がウェイ数と同じビット数となる。チェックアドレスからインデックスを抜き出し、フラグチェック信号のどのビットが1になっているかの情報と合わせて読み出すべきフラグの番号を決定する。
以上詳述したように第1の実施形態では、所定の違反アクセスを検出する際に、この所定の違反アクセスの状態になったキャッシュラインに対して一旦フラグを立てる。そして、1次キャッシュメモリに読み出しアクセス或いは書き込みアクセスする際にフラグを確認し、このフラグが立っている場合に違反アクセスであると判定する。より具体的には、有効ビット=1、ダーティビット=0となっているキャッシュラインに、このキャッシュラインを保持している第1のプロセッサコアが2次キャッシュ直接書き込みアクセスを行った場合、又は、他の第2のプロセッサコアで1次キャッシュメモリ或いは2次キャッシュに書き込みアクセスを行った場合に、この時点では即違反と判定せずに、一旦これらのアクセスを識別するためのインコヒーレントフラグを立てる。そして、上記アクセスによりキャッシュラインを保持しているプロセッサコアのデータが最新でなくなった後、そのプロセッサコアが同キャッシュラインに対して読み出しアクセス或いは書き込みアクセスを行った場合に、違反アクセスであると判定するようにしている。
従って第1の実施形態によれば、第1のプロセッサコアの1次キャッシュメモリ内のキャッシュラインが、2次キャッシュ又は第2のプロセッサコアの1次キャッシュメモリ内の内容に対して最新でなくなった場合に、この最新でないデータを第1のプロセッサコアが実際に使用する場合にのみ違反アクセスとして検出することが可能となる。これにより、実際に使用しないにも関わらず違反アクセスとして検出してしまう場合に比べて、余計な同期処理やキャッシュラインの無効化処理を行う必要がなくなり、処理時間を短縮することができる。
また、インコヒーレントフラグ制御回路25内にインコヒーレントフラグを保持するレジスタ25Aを設け、フラグセット信号、フラグクリア信号、及びアドレスをインコヒーレントフラグ制御回路25に供給することで、インコヒーレントフラグのセット及びクリアを行うようにしている。これにより、インコヒーレントフラグのセット及びクリアを正確かつ簡単に行うことができ、また、プログラムで明示的にフラグをクリアする必要がなくなる。
また、デバック機能を無効にした場合(違反検出イネーブル信号VDEがネゲートされた場合)、インコヒーレントフラグを格納するレジスタ25Aのフラグを一括してクリアするようにしている。これにより、デバッグ機能を一時的に無効にしてから再度有効にした場合に、デバッグ機能無効期間に変化したキャッシュ状態とインコヒーレントフラグとの内容が食い違うことを防ぐことができ、ひいてはデバック機能の誤動作を防ぐことができる。
また、違反検出回路24により検出された違反情報を違反処理回路16内の違反情報レジスタ16Aに格納することができる。これにより、読み出したい違反情報を外部から自由に読み出すことが可能となり、この違反情報を用いてプロセッサコアのデバッグを行うことができる。
また、マルチプロセッサシステム10に新たに追加した回路はデバッグ回路を構成しているため、製品出荷時には機能を無効化して構わない。機能を無効化すれば電力が消費されないため、信号の変化が多くなって消費電力が大きくなるようなデバッグ回路を実装しても製品出荷後の消費電力には影響を及ぼさない。
[第2の実施形態]
第1の実施形態では、インコヒーレントフラグは専用のメモリまたはレジスタによって実装する形をとっているが、インコヒーレントフラグは1次キャッシュメモリ22内のキャッシュラインに対応して存在するものなので、有効ビット、ダーティビットに続く3つ目のビットとしてインコヒーレントフラグを設けるという実装が考えられる。第2の実施形態は、1次キャッシュメモリ22内に新たなフラグビットを用意し、このフラグビットにインコヒーレントフラグを格納するようにしている。
マルチプロセッサシステム10の全体構成は、図1と同じである。図7は、本発明の第2の実施形態に係るキャッシュシステム21の構成を示すブロック図である。図8は、1次キャッシュメモリ22の構成を示す概略図である。
1次キャッシュメモリ22は、有効ビット(V)、ダーティビット(D)、タグ、及びデータをそれぞれ格納する領域に加えて、インコヒーレントフラグを格納する領域(フラグビット)を備えている。このフラグビットは、キャッシュラインごとに設けられている。
第1の実施形態では、キャッシュ制御回路23は、フラグチェック処理及びフラグクリア処理をインコヒーレントフラグ制御回路25に対して実行していたが、第2の実施形態では、キャッシュ制御回路23は、フラグチェック処理及びフラグクリア処理を1次キャッシュメモリ22に対して実行する。キャッシュ制御回路23のフラグチェック処理及びフラグクリア処理については、後述する。
図9は、インコヒーレントフラグ制御回路25の構成を示すブロック図である。インコヒーレントフラグ制御回路25は、フラグセット回路25C、フラグクリア回路25D、3個の選択回路25E、25F、25G、及びOR回路25Hを備えている。
インコヒーレントフラグ制御回路25は、フラグセット信号及びセットフラグ番号を違反検出回路24から受ける。また、インコヒーレントフラグ制御回路25は、違反検出イネーブル信号VDEをデバッグ切替回路27から受ける。フラグセット信号は、OR回路25Hに入力される。セットフラグ番号は、フラグセット回路25C及び選択回路25Gに入力される。
フラグセット回路25Cは、1次キャッシュメモリ22内のインコヒーレントフラグをセットする処理を実行する。この処理のために、フラグセット回路25Cは、1次キャッシュメモリ22のフラグビットをアサートするためのイネーブル信号、及びフラグビットにセットするデータを生成する。
違反検出イネーブル信号VDEは、フラグクリア回路25Dに入力される。フラグクリア回路25Dは、1次キャッシュメモリ22内のインコヒーレントフラグをクリアする処理を実行する。この処理のために、フラグクリア回路25Dは、1次キャッシュメモリ22をアサートするためのイネーブル信号、1次キャッシュメモリ22の特定のフラグビットをアサートするためのイネーブル信号、キャッシュラインのインデックス、及びフラグビットをクリアするデータを生成する。
インコヒーレントフラグ制御回路25は、チップイネーブル信号CE2、ライトビットイネーブル信号WBE2、インデックスIND2、及びライトデータWD2を1次キャッシュメモリ22に送る。これらの信号により、1次キャッシュメモリ22内のフラグビットがセット又はクリアされる。
(動作)
このように構成されたキャッシュシステム21の動作について説明する。まず、インコヒーレントフラグ制御回路25によるインコヒーレントフラグのセット動作及びクリア動作について説明する。
違反検出回路24によってインコヒーレントフラグをセットすべきアクセスパターンが検出された場合、フラグセット信号がアサートされる。フラグセット信号がアサートされると、インコヒーレントフラグ制御回路25は、チップイネーブル信号CE2をアサートする。また、インコヒーレントフラグ制御回路25は、違反検出回路24からキャッシュラインのインデックスに対応するセットフラグ番号を受けると、これをインデックスIND2としてフラグセット信号とともに1次キャッシュメモリ22に送る。
フラグセット回路25Cは、セットフラグ番号を受けると、ライトビットイネーブル信号WBE2のフラグに対応するビットに“1”をセットして1次キャッシュメモリ22に送る。また、フラグセット回路25Cは、ライトデータWD2のフラグに対応するビットに“1”をセットして1次キャッシュメモリ22に送る。このようにして、1次キャッシュメモリ22の特定のインコヒーレントフラグがセットされる。
フラグクリア回路25Dは、デバック機能が無効にされる(違反検出イネーブル信号VDEがネゲートされる)と、フラグの全ビットクリア処理を実行する。すなわち、フラグクリア回路25Dは、チップイネーブル信号CE2をアサートし、ライトビットイネーブル信号WBE2のフラグに対応するビットに“1”を、ライトデータWD2のフラグに対応するビットに“0”をセットして1次キャッシュメモリ22に送る。そして、フラグクリア回路25Dは、全キャッシュラインのインデックスを順番にインデックスIND2として1次キャッシュメモリ22に送る。これにより、1次キャッシュメモリ22の全てのインコヒーレントフラグがクリアされる。
ここで、複数のウェイを有する構成のキャッシュシステムであって、同一のインデックスに複数のキャッシュラインに対応するインコヒーレントフラグが存在する場合、ライトビットイネーブル信号WBE2とライトデータWD2とは全てのフラグに対応するビットを操作するように設定する。
次に、キャッシュ制御回路23の動作について説明する。キャッシュ制御回路23は、1次キャッシュメモリ22に保持されているキャッシュラインにヒットする読み出しアクセス又は書き込みアクセスを行う場合、このアクセスに先立って、1次キャッシュメモリ22内のインコヒーレントフラグをチェックする。すなわち、キャッシュ制御回路23は、リードイネーブル信号RE0をアサートし、かつアクセス対象のキャッシュラインのインデックスをインデックスIND0として1次キャッシュメモリ22に送る。これによって、キャッシュ制御回路23は、インデックスIND0に対応するインコヒーレントフラグをリードデータRD0として1次キャッシュメモリ22から受ける。
続いて、キャッシュ制御回路23は、1次キャッシュメモリ22から読み出したインコヒーレントフラグが立っていた場合、今回のアクセスが違反アクセスパターン(5)に該当すると判断し、違反検出信号1をアサートする。また、キャッシュ制御回路23は、読み出しアクセス又は書き込みアクセスが行われたアドレスを違反検出アドレス1として出力する。これら違反検出信号1及び違反検出アドレス1は、違反検出情報1として違反処理回路16に送られる。
一方、このインコヒーレントフラグがクリアされていた場合、キャッシュ制御回路23は、今回のアクセスは違反アクセスパターン(5)に該当しないと判断する。この場合、キャッシュ制御回路23は、違反検出情報1を違反処理回路16に出力しない。
また、キャッシュ制御回路23は、1次キャッシュメモリ22に保持されているキャッシュラインの状態を下記(1)〜(3)のように変更する場合に、インコヒーレントフラグをクリアする処理を実行する。
(1)リフィル処理によって、保持しているキャッシュラインに新しいキャッシュラインを上書きする場合
(2)リフィルを伴わないキャッシュライン確保操作によって、保持しているキャッシュラインに新しいキャッシュラインを上書きする場合
(3)1次キャッシュメモリを直接書き換える操作によって、保持しているキャッシュラインを無効化する場合
具体的には、キャッシュ制御回路23は、チップイネーブル信号CE0をアサートし、キャッシュラインのインデックスをインデックスIND0として1次キャッシュメモリ22に送る。また、キャッシュ制御回路23は、ライトデータWD0のフラグに対応したビットに“0”をセットして1次キャッシュメモリ22に送る。このようにして、1次キャッシュメモリ22の特定のインコヒーレントフラグがクリアされる。
以上詳述したように第2の実施形態によれば、インコヒーレントフラグを1次キャッシュメモリ22内に格納することができる。これにより、インコヒーレントフラグを他のメモリやレジスタとして実装するよりも回路面積の増加を抑えることができる。その他の効果は、第1の実施形態と同じである。
[第3の実施形態]
第2の実施形態では、1次キャッシュメモリ22の1キャッシュラインあたりのビット数を1ビット増やす形でインコヒーレントフラグを1次キャッシュメモリ22に統合したが、インコヒーレントフラグを有効ビット及びダーティビットの状態の組み合わせによって表現することも可能である。第3の実施形態では、1次キャッシュメモリ22の容量を増やすことなく、インコヒーレントフラグを1次キャッシュメモリ22に統合するようにしている。
キャッシュシステム21の構成は、図7と同じである。図7のキャッシュシステム21のうち1次キャッシュメモリ22の構成は、図3の1次キャッシュメモリ22と同じであり、第2の実施形態のようなインコヒーレントフラグを格納するためのフラグビットを備えていない。
1次キャッシュメモリ22に格納される有効ビットとダーティビットとの状態の組み合わせは、以下の4種類である。以下の説明において、有効ビットを“V”、ダーティビット“D”と記す。
「V=0,D=0」 : キャッシュラインを保持していない状態
「V=0,D=1」 : キャッシュラインを保持していない状態
「V=1,D=0」 : 書き換えを行っていない状態でキャッシュラインを保持している状態
「V=1,D=1」 : 書き換えを行った状態でキャッシュラインを保持している状態
V=0の時は、D=0及びD=1の両方ともキャッシュラインを保持していない状態を表している。ここで、V=0の時に示す状態を以下のように変更することで、インコヒーレントフラグを1次キャッシュメモリ22に統合する。
「V=0,D=0」 : キャッシュラインを保持していない状態
「V=0,D=1」 : 書き換えを行っていない状態でキャッシュラインを保持しており、かつインコヒーレントフラグが“1”にセットされた状態
「V=1,D=0」 : 書き換えを行っていない状態でキャッシュラインを保持しており、かつインコヒーレントフラグが“0”にセットされた状態
「V=1,D=1」 : 書き換えを行った状態でキャッシュラインを保持している状態
このように設定することで、インコヒーレントフラグのビットを別のレジスタに保持することなく、有効ビット及びダーティビットを用いてインコヒーレントフラグがセットされた状態及びクリアされた状態を表現することができる。
図10は、本発明の第3の実施形態に係るインコヒーレントフラグ制御回路25の構成を示すブロック図である。インコヒーレントフラグ制御回路25は、フラグセット回路25Cを備えている。
インコヒーレントフラグ制御回路25は、フラグセット信号及びセットフラグ番号を違反検出回路24から受ける。セットフラグ番号は、フラグセット回路25Cに入力される。フラグセット回路25Cは、有効ビット及びダーティビットの組み合わせを利用して、1次キャッシュメモリ22にインコヒーレントフラグをセットする処理を実行する。この処理のために、フラグセット回路25Cは、1次キャッシュメモリ22の有効ビット及びダーティビットをアサートするためのイネーブル信号、及び有効ビット及びダーティビットにセットするデータを生成する。
インコヒーレントフラグ制御回路25は、チップイネーブル信号CE2、ライトビットイネーブル信号WBE2、インデックスIND2、及びライトデータWD2を1次キャッシュメモリ22に送る。これらの信号により、1次キャッシュメモリ22内のインコヒーレントフラグがセットされる。
(動作)
このように構成されたキャッシュシステム21の動作について説明する。まず、インコヒーレントフラグ制御回路25によるインコヒーレントフラグのセット動作について説明する。
違反検出回路24によってインコヒーレントフラグをセットすべきアクセスパターンが検出された場合、フラグセット信号がアサートされる。フラグセット信号がアサートされると、インコヒーレントフラグ制御回路25は、チップイネーブル信号CE2をアサートする。また、インコヒーレントフラグ制御回路25は、違反検出回路24からキャッシュラインのインデックスに対応するセットフラグ番号を受けると、これをインデックスIND2としてフラグセット信号とともに1次キャッシュメモリ22に送る。
フラグセット回路25Cは、セットフラグ番号を受けると、ライトビットイネーブル信号WBE2の有効ビット及びダーティビットに対応するビットにそれぞれ“1”をセットして1次キャッシュメモリ22に送る。また、フラグセット回路25Cは、ライトデータWD2の有効ビットに対応するビットに“0”、ダーティビットに対応するビットに“1”をセットして1次キャッシュメモリ22に送る。このようにして、1次キャッシュメモリ22内の特定のキャッシュラインの状態を「V=0,D=1」に変更する。
次に、キャッシュ制御回路23の動作について説明する。キャッシュ制御回路23は、1次キャッシュメモリ22に保持されているキャッシュラインにヒットする読み出しアクセス又は書き込みアクセスを行う場合、このアクセスに先立って、1次キャッシュメモリ22内のインコヒーレントフラグをチェックする。すなわち、キャッシュ制御回路23は、リードイネーブル信号RE0をアサートし、かつアクセス対象のキャッシュラインのインデックスをインデックスIND0として1次キャッシュメモリ22に送る。これによって、キャッシュ制御回路23は、インデックスIND0に対応する有効ビット及びダーティビットをリードデータRD0として1次キャッシュメモリ22から受ける。
続いて、キャッシュ制御回路23は、1次キャッシュメモリ22から読み出した有効ビット及びダーティビットが「V=0,D=1」となっていた場合、すなわちインコヒーレントフラグが立っていた場合、今回のアクセスが違反アクセスパターン(5)に該当すると判断し、違反検出信号1をアサートする。また、キャッシュ制御回路23は、読み出しアクセス又は書き込みアクセスが行われたアドレスを違反検出アドレス1として出力する。これら違反検出信号1及び違反検出アドレス1は、違反検出情報1として違反処理回路16に送られる。
一方、有効ビット及びダーティビットの組み合わせによってインコヒーレントフラグがクリアされていた場合、キャッシュ制御回路23は、今回のアクセスは違反アクセスパターン(5)に該当しないと判断する。この場合、キャッシュ制御回路23は、違反検出情報1を違反処理回路16に出力しない。
続いて、キャッシュ制御回路23は、今回のアクセスが読み出しアクセスである場合は有効ビット及びダーティビットを「V=1,D=0」、今回のアクセスが書き込みアクセスである場合は有効ビット及びダーティビットを「V=1,D=1」というインコヒーレントフラグの情報を含まれない状態に更新する。これにより、次に同じキャッシュラインにアクセスが行われても違反検出とはならない。
なお、1次キャッシュメモリ22に保持されているキャッシュラインの状態を下記(1)〜(3)のように変更する場合には、有効ビット及びダーティビットへの書き込みが発生する。
(1)リフィル処理によって、保持しているキャッシュラインに新しいキャッシュラインを上書きする場合
(2)リフィルを伴わないキャッシュライン確保操作によって、保持しているキャッシュラインに新しいキャッシュラインを上書きする場合
(3)1次キャッシュメモリを直接書き換える操作によって、保持しているキャッシュラインを無効化する場合
上記(1)〜(3)のいずれの場合も、キャッシュ制御回路23は、有効ビット及びダーティビットを「V=0,D=1」以外の状態に更新し、インコヒーレントフラグが“0”にセットされているのと等価な状態に戻す。
第3の実施形態では、違反検出イネーブル信号VDEがネゲートされた場合、インコヒーレントフラグの全フラグクリアを行わず、キャッシュシステム21が有効である間はデバッグ機構の有効/無効を切り替えないで使用することを前提としている。しかし、一度1次キャッシュメモリ22の内容を読み出して記録し、「V=0,D=1」になっていればキャッシュラインの状態を「V=1,D=0」に書き換えるという処理を全キャッシュラインに対して実行することで全フラグのクリア処理を行うことができる。
以上詳述したように第3の実施形態によれば、インコヒーレントフラグを1次キャッシュメモリ22内に格納することができる。さらに、有効ビット及びダーティビットの組み合わせを用いてインコヒーレントフラグのセット及びリセットを表現しているため、1次キャッシュメモリ22内にインコヒーレントフラグ用の新たなビットを設ける必要がない。よって、第3の実施形態の構成では、第2の実施形態よりもさらに回路面積の増加を抑えることができる。
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
本発明の第1の実施形態に係るマルチプロセッサシステム10の構成を示すブロック図。 キャッシュシステム21の構成を示すブロック図。 1次キャッシュメモリ22の構成を示す概略図。 違反検出回路24の構成を示すブロック図。 インコヒーレントフラグ制御回路25の構成を示すブロック図。 違反処理回路16の構成を示すブロック図。 本発明の第2の実施形態に係るキャッシュシステム21の構成を示すブロック図。 1次キャッシュメモリ22の構成を示す概略図。 インコヒーレントフラグ制御回路25の構成を示すブロック図。 本発明の第3の実施形態に係るインコヒーレントフラグ制御回路25の構成を示すブロック図。
符号の説明
10…マルチプロセッサシステム、11…プロセッサコア、12…バス、13…アービタ、14…2次キャッシュメモリ、15…メインメモリ、16…違反処理回路、16A…違反情報レジスタ、16B,16C…選択回路、21…キャッシュシステム、22…1次キャッシュメモリ、23…キャッシュ制御回路、24…違反検出回路、24A…レジスタ、24B…判定回路、24C…比較回路、24D…AND回路、25…インコヒーレントフラグ制御回路、25A…レジスタ、25B…AND回路、25C…フラグセット回路、25D…フラグクリア回路、25E〜25G…選択回路、25H…OR回路、26…ダーティ遷移検出回路、26A,26B…AND回路、27…デバッグ切替回路、27A…レジスタ。

Claims (5)

  1. 複数のプロセッサコアに対応して設けられ、かつデータを格納する単位であるキャッシュラインを格納するキャッシュメモリをそれぞれが含む複数のキャッシュシステムと、
    前記複数のプロセッサコアに共有される共有メモリと、
    前記複数のキャッシュシステムから前記共有メモリへ送られるアクセス要求を調停し、かつ調停されたアクセス要求を前記共有メモリ及び前記複数のキャッシュシステムに送るアービタと、
    を具備し、
    前記キャッシュメモリの各々は、キャッシュラインが有効か否かを示す有効ビットと、キャッシュラインを前記共有メモリに書き戻したか否かを示すダーティビットと、キャッシュラインのアドレス情報であるタグとを含むライン情報を格納し、
    前記キャッシュシステムの各々は、
    前記ライン情報と、前記アービタから送られるアクセス要求とを比較して違反アクセスを検出する違反検出回路と、
    前記違反検出回路による検出結果に基づいてキャッシュラインごとにフラグをセットし、かつプロセッサコアに保持されたキャッシュラインに読み出しアクセス又は書き込みアクセスする際に、前記フラグの内容を確認し、このフラグの内容に基づいて違反アクセスを検出するフラグ制御回路と、
    を具備することを特徴とするマルチプロセッサシステム。
  2. 前記アクセス要求は、キャッシュメモリのデータが書き換えられた旨を示す識別信号を含み、
    前記フラグは、第1のプロセッサコアに保持されたキャッシュラインが、前記共有メモリ上又は第2のプロセッサコア上で書き換えられた場合にセットされることを特徴とする請求項1に記載のマルチプロセッサシステム。
  3. デバッグの有効/無効を切り替える切替回路をさらに具備し、
    前記キャッシュシステムは、デバッグの有効時に違反アクセスの検出を行い、デバッグの無効時に前記フラグの全てをクリアすることを特徴とする請求項1又は2に記載のマルチプロセッサシステム。
  4. 前記キャッシュメモリは、前記フラグを格納する領域を含むことを特徴とする請求項1乃至3のいずれかに記載のマルチプロセッサシステム。
  5. 複数のプロセッサコアに対応して設けられ、かつデータを格納する単位であるキャッシュラインを格納するキャッシュメモリをそれぞれが含む複数のキャッシュシステムと、
    前記複数のプロセッサコアに共有される共有メモリと、
    前記複数のキャッシュシステムから前記共有メモリへ送られるアクセス要求を調停し、かつ調停されたアクセス要求を前記共有メモリ及び前記複数のキャッシュシステムに送るアービタと、
    を具備し、
    前記キャッシュメモリの各々は、キャッシュラインが有効か否かを示す有効ビットと、キャッシュラインを前記共有メモリに書き戻したか否かを示すダーティビットと、キャッシュラインのアドレス情報であるタグとを含むライン情報を格納し、
    前記キャッシュシステムの各々は、
    前記ライン情報と、前記アービタから送られるアクセス要求とを比較して違反アクセスを検出する違反検出回路と、
    前記違反検出回路による検出結果に基づいて有効ビット及びダーティビットを一時的に書き換える第1の制御回路と、
    プロセッサコアに保持されたキャッシュラインに読み出しアクセス又は書き込みアクセスする際に、有効ビット及びダーティビットの内容を確認し、これらの内容に基づいて違反アクセスを検出する第2の制御回路と、
    を具備することを特徴とするマルチプロセッサシステム。
JP2008301297A 2008-11-26 2008-11-26 マルチプロセッサシステム Withdrawn JP2010128698A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008301297A JP2010128698A (ja) 2008-11-26 2008-11-26 マルチプロセッサシステム
US12/557,773 US20100131718A1 (en) 2008-11-26 2009-09-11 Multiprocessor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008301297A JP2010128698A (ja) 2008-11-26 2008-11-26 マルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JP2010128698A true JP2010128698A (ja) 2010-06-10

Family

ID=42197432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008301297A Withdrawn JP2010128698A (ja) 2008-11-26 2008-11-26 マルチプロセッサシステム

Country Status (2)

Country Link
US (1) US20100131718A1 (ja)
JP (1) JP2010128698A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021524966A (ja) * 2018-06-01 2021-09-16 シー−スカイ マイクロシステムズ カンパニー,リミテッド マルチコア相互接続のレベル2キャッシュへのアクセスを検証する方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904115B2 (en) 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
CN102262608A (zh) * 2011-07-28 2011-11-30 中国人民解放军国防科学技术大学 基于处理器核的协处理器读写操作控制方法及装置
JP2020140380A (ja) * 2019-02-27 2020-09-03 ローム株式会社 半導体装置及びデバッグシステム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0625984B2 (ja) * 1990-02-20 1994-04-06 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン マルチプロセツサ・システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021524966A (ja) * 2018-06-01 2021-09-16 シー−スカイ マイクロシステムズ カンパニー,リミテッド マルチコア相互接続のレベル2キャッシュへのアクセスを検証する方法
JP7405773B2 (ja) 2018-06-01 2023-12-26 シー-スカイ マイクロシステムズ カンパニー,リミテッド マルチコア相互接続のレベル2キャッシュへのアクセスを検証する方法

Also Published As

Publication number Publication date
US20100131718A1 (en) 2010-05-27

Similar Documents

Publication Publication Date Title
US8380933B2 (en) Multiprocessor system including processor cores and a shared memory
TW591384B (en) Method and system for speculatively invalidating lines in a cache
KR101252367B1 (ko) 저전압 동작 동안 캐시 부분의 디스에이블
US7305522B2 (en) Victim cache using direct intervention
US7305523B2 (en) Cache memory direct intervention
US7509460B2 (en) DRAM remote access cache in local memory in a distributed shared memory system
KR100933820B1 (ko) 메모리 속성들을 사용하기 위한 기술
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
CN111095222A (zh) 使用高速缓存一致性协议数据的基于高速缓存的追踪记录
JP2007257631A (ja) 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法
US20110047411A1 (en) Handling of errors in a data processing apparatus having a cache storage and a replicated address storage
US9720847B2 (en) Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
JP6009688B2 (ja) 動的に割り振られたダーティマスク空間を用いるメモリ管理
US20140281190A1 (en) Coherence processing with error checking
CN108228485B (zh) 存储器管理
US6351791B1 (en) Circuit arrangement and method of maintaining cache coherence utilizing snoop response collection logic that disregards extraneous retry responses
US10169236B2 (en) Cache coherency
JP2006134324A (ja) ロッキング・キャッシュを用いる直接的保存
US10949292B1 (en) Memory interface having data signal path and tag signal path
US20170185519A1 (en) Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system
CN114341793A (zh) 具有安全检查指示的存储器访问事务
JP2007156821A (ja) キャッシュシステム及び共用2次キャッシュ
JP5976225B2 (ja) スティッキー抜去エンジンを伴うシステムキャッシュ
JP2010128698A (ja) マルチプロセッサシステム
JP2007058349A (ja) キャッシュシステム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120207