(57)【要約】【課題】簡単な構成でフォルス・シェアリングを検知可能にする。【解決手段】マルチプロセッサシステムにおいて、プロセッサのアクセスの対象となるデータが、複数の第１のキャッシュメモリ及び複数のプロセッサに共通に設けられる第２のキャッシュメモリのうちの２つ以上のキャッシュメモリに格納されている場合において、アクセスの対象となるデータに対するプロセッサの書き込みによる更新データと書き込み前の未更新データとが存在するときには、未更新データが格納されている第１のキャッシュメモリであることを検出し、未更新データが格納されている第１のキャッシュメモリに対して前記アクセスの対象となるデータに対する書き込み命令が発生したことを検出した場合には、検出出力を出力する。【選択図】図１
2008176731.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサから構成されるマルチプロセッサシステムにおいて、
前記複数のプロセッサに夫々対応して設けられる第１のキャッシュメモリと、
複数の前記第１のキャッシュメモリに夫々設けられて、前記プロセッサによる前記第１のキャッシュメモリへのアクセスに応じた前記第１のキャッシュメモリの状態を検出して検出結果である状態信号を出力する出力部と、
前記プロセッサのアクセスの対象となるデータが、前記複数の第１のキャッシュメモリ及び前記複数のプロセッサに共通に設けられる第２のキャッシュメモリのうちの２つ以上のキャッシュメモリに格納されている場合において、前記アクセスの対象となるデータに対する前記プロセッサの書き込みによる更新データと書き込み前の未更新データとが存在するときには、前記未更新データが格納されている第１のキャッシュメモリであることを、前記状態信号に基づいて検出して、検出結果である変更情報を保持する変更情報保持部と、
前記状態信号及び変更情報に基づいて、前記未更新データが格納されている第１のキャッシュメモリに対して前記アクセスの対象となるデータに対する書き込み命令が発生したことを検出した場合には、検出出力を出力するエラー検出手段と
を具備したことを特徴とするマルチプロセッサシステム。
【請求項２】
前記変更情報保持部及びエラー検出手段は、前記第２のキャッシュメモリに内蔵される
ことを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記エラー検出手段は、前記検出出力として、前記プロセッサへの割り込み要求を発生する
ことを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項４】
前記エラー検出手段によって検出出力が出力された場合には、前記アクセスの対象となるデータの書き込みアドレスをレジスタに格納する
ことを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項５】
前記状態信号は、前記第１のキャッシュメモリの対象ラインに対して最初に書き込みを行ったことを示す変更信号及び前記対象ラインへのリフィル要求を示すリフィル信号を含み、
前記変更情報保持部は、前記変更情報の他に、前記複数の第１のキャッシュメモリに有効なデータが格納されていることを示す有効情報を前記第１のキャッシュメモリ毎に保持する領域を含み、
前記リフィル信号に基づいて前記有効情報をセットすると共に、前記変更信号に基づいて前記有効情報がセットされた前記第１のキャッシュメモリに対応させて前記変更情報をセットする
ことを特徴とする請求項１に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、簡単な構成でキャッシュコヒーレンシが維持されないことを検出可能にしたマルチプロセッサシステムに関する。
【背景技術】
【０００２】
従来、複数のプロセッサによってプログラムを実行するマルチプロセッサシステムが採用されることがある。一般的に、マルチプロセッサシステムでは、レベル２（Ｌ２）キャッシュメモリは各プロセッサによって共有され、レベル１（Ｌ１）キャッシュメモリは、各プロセッサ内部に夫々設けられる。この場合には、Ｌ１キャッシュメモリ同士のデータの一貫性（キャッシュコヒーレンシ）を維持する必要がある。
【０００３】
例えば、マルチプロセッサシステム内の、あるプロセッサがデータをメモリに書き込むものとする。この場合において、このデータがプロセッサ内部のＬ１キャッシュメモリに存在（キャッシュヒット）する場合には、このＬ１キャッシュの該当するラインの内容（旧データ）がこのデータ（新データ）によって更新されることになる。一方、他のプロセッサのＬ１キャッシュメモリに同一のデータ（旧データ）が存在する場合には、そのＬ１キャッシュメモリの対応するラインを無効化するか、または新データで更新する必要がある。
【０００４】
このようなキャッシュメモリのコヒーレンシを保証するためのハードウエアとして、スヌープキャッシュがある。スヌープキャッシュは、バス上の各プロセッサのアクセスを監視（スヌープ）することによって、コヒーレンシを保つものであり、さまざまな方式が提案されている。（例えば、特許文献１）
スヌープキャッシュを実装した場合には、通常のプロセッサコアからのロード命令やストア命令によるアクセスに加えて、バス上のアクセスから該当するアドレスのデータがキャッシュにないかを確認するためにキャッシュメモリをアクセスする必要がある。このため、キャッシュメモリのタグ部のアクセスを調停したり、場合によっては２つのアクセスが同時にできるように２ポート化する必要があり、ハードウエア規模が増大する。
【０００５】
ところで、複数のプロセッサが各Ｌ１キャッシュの同一ラインを共有する場合でも、実際にはそのライン内の異なるデータにアクセスすること（以下、フォルス・シェアリングという）がある。キャッシュコヒーレンシを維持しようとすると、このようなフォルス・シェアリングの状況下においても、実際には必要のないキャッシュの無効化や更新が発生してしまい、性能が低下してしまう。そこで、性能の向上のため、あるいは、無駄な動作を排除して消費電力を低減するために、フォルス・シェアリングが発生しないようにする必要がある。
【０００６】
一方、スヌープキャッシュは、ハードウエア規模が大きく、コスト高を招来することから、組み込みプロセッサにおいては導入されないことがある。この場合には、ソフトウエアによってキャッシュコヒーレンシを維持する必要がある。フォルス・シェアリングによる同一ラインへの書き込みについても、ソフトウエアによって防止を図る必要がある。
【０００７】
しかしながら、フォルス・シェアリングを完全に無くすためのプログラミングには膨大な作業量を要する。しかも、ソフトウエアによってフォルス・シェアリングを完全に無くすことは、実際上極めて困難であり、発見し得ないフォルス・シェアリングによって、ソフトウエアにバグが発生してしまう。このバグの発見は極めて困難であり、ソフトウエアの生産性が低下する虞がある。
【特許文献１】特開平１０−３２０２８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、フォルス・シェアリングの発生を検知可能にして、ソフトウエアのバグを容易に検出することができるマルチプロセッサシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様のマルチプロセッサシステムは、複数のプロセッサから構成されるマルチプロセッサシステムにおいて、前記複数のプロセッサに夫々対応して設けられる第１のキャッシュメモリと、複数の前記第１のキャッシュメモリに夫々設けられて、前記プロセッサによる前記第１のキャッシュメモリへのアクセスに応じた前記第１のキャッシュメモリの状態を検出して検出結果である状態信号を出力する出力部と、前記プロセッサのアクセスの対象となるデータが、前記複数の第１のキャッシュメモリ及び前記複数のプロセッサに共通に設けられる第２のキャッシュメモリのうちの２つ以上のキャッシュメモリに格納されている場合において、前記アクセスの対象となるデータに対する前記プロセッサの書き込みによる更新データと書き込み前の未更新データとが存在するときには、前記未更新データが格納されている第１のキャッシュメモリであることを、前記状態信号に基づいて検出して、検出結果である変更情報を保持する変更情報保持部と、前記状態信号及び変更情報に基づいて、前記未更新データが格納されている第１のキャッシュメモリに対して前記アクセスの対象となるデータに対する書き込み命令が発生したことを検出した場合には、検出出力を出力するエラー検出手段とを具備したものである。
【発明の効果】
【００１０】
本発明によれば、フォルス・シェアリングの発生を検知可能にして、ソフトウエアのバグを容易に検出することができるという効果を有する。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施の形態について詳細に説明する。図１は本発明の一実施の形態に係るマルチプロセッサシステムを示すブロック図である。
【００１２】
図１において、マルチプロセッサシステムは、ｎ個のプロセッサＰ１〜Ｐｎ（以下、代表してプロセッサＰという）によって構成されている。各プロセッサＰ１〜Ｐｎは、夫々命令の実行を行うプロセッサコアＣ１〜Ｃｎ（以下、代表してプロセッサコアＣという）とプログラムやデータを格納する１次（Ｌ１）キャッシュメモリＭ１〜Ｍｎ（以下、代表してＬ１キャッシュメモリＭＣという）とによって構成されている。
【００１３】
全てのプロセッサＰは、２次（Ｌ２）キャッシュメモリ１１に共通に接続されている。Ｌ２キャッシュメモリ１１はバス１２に接続されており、バス１２にはメインメモリ１３及び周辺回路１４が接続されている。メインメモリ１３は、プロセッサＰが使用するコマンドや各種データを記憶する。
【００１４】
Ｌ１キャッシュメモリＭＣ及びＬ２キャッシュメモリ１１は、所定のビットサイズのライン単位で、書き込み及び読み出しが管理される。ラインサイズとしては、例えば、３２バイト、６４バイト等が設定可能である。
【００１５】
Ｌ２キャッシュメモリ１１は、メインメモリ１３に記憶されているデータの一部のデータのコピーを保持する。また、Ｌ１キャッシュメモリＭＣは、Ｌ２キャッシュメモリ１１又はメインメモリ１３に格納されているデータの一部のデータのコピーを保持する。Ｌ１キャッシュメモリＭＣ及びＬ２キャッシュメモリ１１が保持しているデータには、プロセッサコアＣが、メインメモリ１３のアドレスを指定することでアクセス可能である。
【００１６】
プロセッサコアＣは、ロード命令及びストア命令等のために、メインメモリ１３のアドレスを指定してアクセスを行う。この場合において、メインメモリ１３の指定されたアドレスに記憶されていたデータがＬ１キャッシュメモリＭＣにコピーされて格納されているとき（即ち、キャッシュヒットのとき）には、プロセッサコアＣは、Ｌ１キャッシュメモリＭＣ内のアドレスによって指定されるライン（以下、対象ラインという）のデータ（以下、対象データという）にアクセスを行う。Ｌ１キャッシュメモリＭＣに対象データがコピーされておらず格納されていないとき（即ち、キャッシュミスのとき）には、プロセッサコアＣは、Ｌ２キャッシュメモリ１１にアクセスを行う。
【００１７】
更に、プロセッサコアＣが、Ｌ２キャッシュメモリ１１にアクセスした場合において、Ｌ２キャッシュメモリ１１にアクセスすべき対象データが存在する場合（即ち、Ｌ２キャッシュヒットの場合）には、Ｌ２キャッシュメモリ１１からＬ１キャッシュメモリＭＣに、対象データを含むラインがリフィルされる。また、Ｌ２キャッシュメモリ１１に対象データが存在しない場合（キャッシュミスの場合）には、先ずメインメモリ１３からＬ２キャッシュメモリ１１に対象データを含むラインがリフィルされ、更に、Ｌ２キャッシュメモリ１１からＬ１キャッシュメモリＭＣに対象データを含むラインがリフィルされる。
【００１８】
ところで、プロセッサコアＣからのデータの書き込みによって、Ｌ１，Ｌ２キャッシュメモリＭＣ，１１に保持されているデータがコピー元のデータと異なる内容になることがある。また、キャッシュメモリ１１から複数のＬ１キャッシュメモリＭＣにコピーされたデータ同士においても、相互に異なる内容となることがある。これらの場合には、キャッシュコヒーレンシを維持するために、所定のタイミングでコピー元及び全てのコピー先のデータを書き込みに応じた最新のデータに一致させる必要がある。なお、プロセッサＰから共通のアドレスによってアクセスされるこれらのデータのうち、最新のものでないデータを未更新データといい、最新のデータを更新データともいう。
【００１９】
本実施の形態においては、各Ｌ１キャッシュメモリが未更新データ、更新データのいずれを保持しているかを判定するための信号を各Ｌ１キャッシュメモリＭＣからＬ２キャッシュメモリ１１に出力させる。従来、Ｌ１キャッシュメモリＭＣとＬ２キャッシュメモリ１１との間で、リフィルやライトバック等のトランザクションは発生していた。本実施の形態においては、更に、これらのトランザクション等の発生を示す信号をＬ２キャッシュメモリ１１に出力するのである。
【００２０】
Ｌ２キャッシュメモリ１１は、受信した情報を保持し、各Ｌ１キャッシュメモリＭＣの状態を判定することで、フォルス・シェアリングの有無を検知するようになっている。
【００２１】
図２は図１中のＬ１キャッシュメモリＭＣの具体的な構成を示す回路図である。図２の例は、ダイレクトマップッド方式のキャッシュの構成を示しているが、２−ｗａｙや４−ｗａｙ等の他のキャッシュの構成を採用することも可能である。また、図２ではライトバック方式のキャッシュを想定して示しているが他の方式を採用することも可能である。
【００２２】
各プロセッサＰに内蔵されているＬ１キャッシュメモリＭＣは、同一構成であり、転送されたデータを格納するデータ格納領域２１、格納したデータのアドレス情報を保持するタグ領域２２及び状態格納領域２３を有する。データ格納領域２１は、管理単位となるラインを複数ライン分有して構成される。図２の例では、１ラインを３２ビット（４バイト）×４＝１６バイトで構成した例を示しており、ライン数は例えば２５６である。
【００２３】
プロセッサコアＣがデータアクセス時に指定するアドレスは、例えば、図２に示すように、タグ、インデックス、Ｂｏｆ（ブロックオフセット）及び無効ビット(00)が配列されたものである。ダイレクトマップッド方式では、メインメモリ１３のメモリブロックのアドレス（インデックス）によって、直接Ｌ１キャッシュメモリＭＣのライン番号を指定することができる。図２の例では、第４乃至第１１の８ビット（［１１：４］）のインデックスによって、２５６個のラインのいずれのラインかを特定することができる。
【００２４】
アドレスの上位ビットのタグは、メインメモリ１３のメモリブロック中のいずれの位置のデータであるかを示すものである。タグ領域２２にはデータ格納領域２１にデータを格納する場合に、メモリブロック中のいずれの位置のデータであるかを示すタグが格納されている。
【００２５】
従って、プロセッサコアＣから指定されたアドレス中のタグと、インデックスによって指定されたラインのタグ領域２２内のタグとが一致した場合には、キャッシュヒットとなり、不一致の場合にはキャッシュミスとなる。比較器２５はアドレス中のタグと、タグ領域２２からのタグとが与えられて、この比較を行い、比較結果をアンド回路２６に出力するようになっている。アンド回路２６には、状態格納領域２３からの情報も与えられる。状態格納領域２３は、各ラインに対応して、ラインに有効なデータが格納されているか否かを示すバリッドビットＶ及びラインにプロセッサコアＣによる書き込みが行われたことを示すダーティビットＤとを保持する。バリッドビットＶは“１”によって有効なラインであることを示し、ダーティビットＤは、ラインに書き込みが行われた場合に“１”にセットされる。アンド回路２６は、アドレスによって指定されたラインについて、バリッドビットＤが“１”で、且つ比較器２５の比較結果が一致を示す“１”の場合にのみ、キャッシュヒットであることを示す出力（ヒット信号）を制御回路２７に出力するようになっている。
【００２６】
出力部としての制御回路２７には、ヒット信号の他に、状態格納領域２３からダーティビットＶが与えられると共に、キャッシュアクセスのライト信号（Write）及びリード信号（Read）も与えられる。制御回路２７は、ライト信号又はリード信号によるキャッシュアクセスに対して、アンド回路２６の出力が“０”（Ｌ１キャッシュミス）である場合には、リフィル信号ＲＤをアサートする。また、制御回路２７は、アンド回路２６の出力によってＬ１キャッシュミスが示された場合に、リフィルによってリプレースされるラインがダーティであることがダーティビットＤによって示されたときには、このダーティなラインのデータをＬ２キャッシュメモリ１１に書き戻すための要求であるライトバック無効信号ＷＢＩをアサートする。
【００２７】
本実施の形態においては、制御回路２７は、従来のＬ１キャッシュメモリと同様にリフィル信号ＲＤ及びライトバック無効信号ＷＢＩをバスサイクルでＬ２キャッシュメモリに出力するだけでなく、変更信号ＭＯＤ及び無効信号ＩＮＶも出力するようになっている。
【００２８】
更に、制御回路２７は、プロセッサコアＣがＬ１キャッシュメモリＭＣの所定のラインに最初に書き込みを行ったことによって、ダーティビットＤが“０”から“１”に変化する場合には、有効な変更信号ＭＯＤを出力する。なお、この場合には、制御回路２７は、書き込みが行われたアドレス情報も同時に出力する。また、制御回路２７は、対象データ以外のデータがＬ１キャッシュミスに対するリフィルによってリプレースされる場合には、無効信号ＩＮＶをアサートする。制御回路２７は、状態信号としてのリフィル信号ＲＤ、ライトバック無効信号ＷＢＩ及び変更信号ＭＯＤをＬ２キャッシュメモリ１１に供給するようになっている。
【００２９】
図３は図１中のＬ２キャッシュメモリ１１の具体的な構成を示す回路図である。また、図４はＬ２キャッシュメモリ１１内の制御回路３７の制御を説明するためのフローチャートである。
【００３０】
Ｌ２キャッシュメモリ１１の構成は、Ｌ１キャッシュメモリＭＣと同様であり、転送されたデータを格納するデータ格納領域３１、格納したデータのアドレス情報を保持するタグ領域３２及び状態格納領域３３を有する。データ格納領域３１は、管理単位となるラインを複数ライン分有して構成される。また、セレクタ３４、比較器３５及びアンド回路３６は、夫々Ｌ１キャッシュメモリＭＣのセレクタ２４、比較器２５及びアンド回路２６と同様の構成である。
【００３１】
本実施の形態においては、各プロセッサＰ毎の更新状況の情報を保持する更新情報領域３８を有している。更新情報領域３８には、不一致ビットＩＣ、バリッドビットＶ及び変更ビットＭが格納されるようになっている。更新情報領域３８に格納される不一致ビット（ＩＣビット）は、プロセッサＰからの有効な変更信号ＭＯＤによって、Ｌ１キャッシュメモリＭＣに更新データが格納され、Ｌ２キャッシュメモリ１１に未更新データが格納された状態の場合には、“１”にセットされる。
【００３２】
更新情報領域３８に格納されるバリッドビット（Ｖビット）は、格納されているデータの有効，無効を各プロセッサＰ毎に示すものである。また、更新情報領域３８に格納される変更ビット（Ｍビット）は、他のＬ１，Ｌ２キャッシュメモリＭＣ，１１に更新データが格納されている状態で、未更新データを格納していることを示している。
【００３３】
更新情報領域３８に格納するＩＣビット、Ｖビット及びＭビットは、制御回路３７において生成するようになっている。制御回路３７には、各プロセッサＰからリフィル信号ＲＤ、ライトバック無効信号ＷＢＩ、変更信号ＭＯＤ及び無効信号ＩＮＶが供給される。制御回路３７は、図４のステップＳ１において、リフィル信号ＲＤ、ライトバック無効信号ＷＢＩ、変更信号ＭＯＤ及び無効信号ＩＮＶを取り込み、取り込んだ信号に基づいて、ＩＣビットを生成すると共に、各プロセッサ毎にＶビット及びＭビットを生成して、対応するキャッシュラインの更新情報領域３８に格納する。なお、制御回路３７及び更新情報領域３８によって、エラー検出部が構成される。
【００３４】
下記表１は、制御回路３７に入力される信号と制御回路３７によって生成される各ビットとの対応を示す表である。
【００３５】
［表１］
┌─┬─────────┬─────────┬───────────┐
│  │                  │  Ｌ2キャッシュの │    Ｌ2キャッシュの   │
│  │                  │      前の状態    │    新しい状態        │
│  │プロセッサｘ      ├─┬───┬───┼─┬───┬───┬─┤
│  │からの入力信号    │  │プロ  │プロ  │  │プロ  │プロ  │  │
│  │                  │  │セッサ│セッサ│  │セッサ│セッサ│Ｆ│
│  │                  │  │  ｘ  │ｘ以外│  │  ｘ  │ｘ以外│  │
│  ├─────────┤  ├───┼───┤  ├───┼───┤  │
│  │RD  WBI  INV  MOD │IC│Ｖ  Ｍ│Ｖ  Ｍ│IC│Ｖ  Ｍ│Ｖ  Ｍ│  │
├─┼─────────┼─┼───┼───┼─┼───┼───┼─┤
│ａ│                  │０│０  ０│−  −│０│１  ０│−  −│０│
├─┤１  ０    ０  ０  ├─┼───┼───┼─┼───┼───┼─┤
│ｂ│                  │１│０  ０│−  −│１│１  １│−  −│０│
├─┼─────────┼─┼───┼───┼─┼───┼───┼─┤
│ｃ│０  ０    １  ０  │−│１  −│−  −│−│０  ０│−  −│０│
├─┼─────────┼─┼───┼───┼─┼───┼───┼─┤
│ｄ│０  １    ０  ０  │１│１  １│−  −│０│０  ０│−  −│０│
├─┼─────────┼─┼───┼───┼─┼───┼───┼─┤
│ｅ│                  │０│１  ０│０  ０│１│１  １│０  ０│０│
├─┤                  ├─┼───┼───┼─┼───┼───┼─┤
│ｆ│０  ０    ０  １  │−│１  ０│１  −│１│１  １│１  １│０│
├─┤                  ├─┼───┼───┼─┼───┼───┼─┤
│ｇ│                  │−│１  １│−  −│−│１  １│−  −│１│
└─┴─────────┴─┴───┴───┴─┴───┴───┴─┘
上記表１は、Ｌ１キャッシュメモリＭＣから夫々リフィル信号ＲＤ、ライトバック無効信号ＷＢＩ、変更信号ＭＯＤ及び無効信号ＩＮＶがＬ２キャッシュメモリ１１に供給された場合において、その供給時点において既にＬ２キャッシュメモリ１１に設定されているＩＣ，Ｖ，Ｍビットと各信号入力との関係から、新たにＬ２キャッシュメモリ１１に格納されるＩＣ，Ｖ，Ｍ及び後述するＦビットを更新する方法を示している。なお、−は制御回路３７による更新が行われないか又は“０”，“１”のいずれの値をとってもよいことを示している。
【００３６】
表１の場合ａ，ｂは、リフィル信号ＲＤが供給された例であり、場合ｃは、ライトバック無効信号ＷＢＩが供給された例であり、場合ｄは無効信号ＩＮＶが供給された例であり、場合ｅ〜ｇは変更信号ＭＯＤが供給された例である。
【００３７】
場合ａは、Ｌ２キャッシュメモリ１１の対象ラインのＩＣビットが“０”のときに、プロセッサＰ中の所定のプロセッサｘからリフィル信号ＲＤが供給された例である。有効なリフィル信号ＲＤが発生する場合には、それ以前には対応するプロセッサｘのＶ，Ｍビットは“０”にクリアされていることになる。有効なリフィル信号ＲＤによって、プロセッサｘのＬ１キャッシュメモリＭｘに対象データが格納される。制御回路３７は、有効なリフィル信号ＲＤが入力されると、図４のステップＳ２から処理をステップＳ３に移行して、対応するプロセッサのＶビットをセットする。
【００３８】
場合ｂは、Ｌ２キャッシュメモリ１１の対象ラインのＩＣビットが“１”のときに、プロセッサＰ中の所定のプロセッサｘからリフィル信号ＲＤが供給された例である。このリフィル信号ＲＤによっても、Ｌ２キャッシュメモリ１１から読み出された対象データがプロセッサｘのＬ１キャッシュメモリＭｘに格納される。しかし、この場合には、ＩＣビットが“１”であり、Ｌ２キャッシュメモリ１１に格納されている対象データは、未更新データである。そこで、この場合には、制御回路３７は、有効なリフィル信号ＲＤの入力によって、図４のステップＳ３において対応するプロセッサのＶビットをセットすると共に、図４のステップＳ４から処理をステップＳ５に移行して、Ｍビットも“１”にセットする。
【００３９】
場合ｃは、プロセッサＰ中の所定のプロセッサｘから無効信号ＩＮＶが供給された例である。無効信号ＩＮＶによって、いままで有効であった対象ラインが無効になることが示される。即ち、制御回路３７は、無効信号ＩＮＶが入力されると、ステップＳ６から処理をステップＳ７に移行して、Ｖビットを“１”から“０”に変更する。また、制御回路３７は、Ｍビットも“０”にクリアする。
【００４０】
場合ｄは、プロセッサＰ中の所定のプロセッサｘからライトバック無効信号ＷＢＩが供給された例である。有効なライトバック無効信号ＷＢＩが発生する場合には、それ以前には対応するプロセッサｘのＬ１キャッシュメモリＭｘに更新データが格納され、Ｌ２キャッシュメモリ１１には未更新データが格納されていることになる。従って、ライトバック無効信号ＷＢＩの入力直前には、Ｌ２キャッシュメモリ１１の対象ラインのＩＣビットは“１”である。また、更新データが格納されていたので、Ｖビットも“１”であり、ＩＣビットが“１”であるので、Ｍビットも“１”である。有効なライトバック無効信号ＷＢＩによる書き戻しが行われて、Ｌ１キャッシュメモリＭｘの対象ラインに他のデータが書き込まれると、制御回路３７は、ステップＳ８から処理をステップＳ９に移行して、ＩＣ，Ｖ，Ｍビットを全て“０”にクリアする。
【００４１】
場合ｅ〜ｇは、プロセッサＰ中の所定のプロセッサｘから変更信号ＭＯＤが供給された例であり、それ以前のＩＣ，Ｖ，Ｍビットの状態に応じて、３つの場合に分けて説明する。場合ｅは、プロセッサｘのＶビットが“１”、Ｍビットが“０”で、それ以外のプロセッサのＶ，Ｍビットが“０”の場合の例である。なお、ＩＣビットは“０”である。即ち、対象データがプロセッサｘのＬ1 キャッシュメモリＭｘにのみ格納され、Ｌ１，Ｌ２キャッシュメモリＭｘ，１１の両方に更新データが格納されている場合である。この場合には、有効な変更信号ＭＯＤが入力されると、制御回路３７は、ステップＳ１０から処理をステップＳ１１に移行して、プロセッサｘ用のＶ，Ｍビットを“１”にセットし、ＩＣビットも“１”にセットする。他のプロセッサ用のＶ，Ｍビットの値は“０”のままとする。
【００４２】
場合ｆは、プロセッサｘのＶビットが“１”、Ｍビットが“０”で、それ以外のプロセッサのＶビットが“１”の場合の例である。即ち、対象データがプロセッサｘのＬ1 キャッシュメモリＭｘだけでなく、プロセッサｘ以外のＬ１キャッシュメモリＭＣにも格納されている例である。この場合においても、有効な変更信号ＭＯＤが入力されると、制御回路３７は、プロセッサｘ用のＶ，Ｍビットを“１”にセットし、ＩＣビットも“１”にセットする。また、Ｖビットが“１”の他のプロセッサのＭビットも“１”にする（ステップＳ１１）。
【００４３】
即ち、制御回路３７は、有効な変更信号ＭＯＤが入力された場合には、Ｖビットを参照し、Ｖビットがセットされた全プロセッサのＭビットを全て“１”にし、ＩＣビットも“１”にする。
【００４４】
更に、場合ｇは、Ｍビットがセットされたプロセッサｘから有効な変更信号ＭＯＤが発生した場合の例である。上述したように、Ｖビットがセットされていれば（有効な対象データを保持していれば）、いずれのプロセッサのＬ１キャッシュメモリＭＣに対する書き込みであっても、Ｍビットがセットされる。また、変更信号ＭＯＤは、ダーティビットＤが“０”から“１”に切換る最初の書き込みのみによって発生する。即ち、場合ｇは、更新データを保持するＬ１キャッシュメモリＭＣから変更信号ＭＯＤが発生する例ではない。従って、Ｍビットがセットされたプロセッサｘから有効な変更信号ＭＯＤが発生した場合には、このプロセッサｘには未更新データが格納されており、このプロセッサｘ以外のいずれかのプロセッサに更新データが格納されていることを意味する。そこで、この場合には、制御回路３７は、ステップＳ１０から処理をステップＳ１２に移行して、フォルス・シェアリングの発生を示すＦビットを“１”にセットする。
【００４５】
なお、ステップＳ２〜Ｓ５、ステップＳ６，Ｓ７、ステップＳ８，Ｓ９及びステップＳ１０〜Ｓ１２は、夫々相互に独立した制御であり、どのような順番であってもよい。
【００４６】
Ｆレジスタ４０は、フォルス・シェアリングの発生を示すＦビットがセットされると、Ｆビットがセットされる要因となったプロセッサ、特定のプロセッサ又は全プロセッサに対して、割り込み要求信号を発生するようになっている。
【００４７】
また、ＦＳＡレジスタ３９には、入力アドレスが供給される。ＦＳＡレジスタ３９は、フォルス・シェアリングが発生すると、フォルス・シェアリングの発生の要因となったアドレスを出力するようになっている。
【００４８】
次に、このように構成された実施の形態の動作について図５乃至図９の説明図を参照して説明する。図５乃至図９は中央にＬ１キャッシュメモリＭＣからの信号を示し、左側に更新情報領域３８のＶ，Ｍ，ＩＣビットの値を示し、右側に各Ｌ１キャッシュメモリＭＣ（Ｍ０〜Ｍ３）及びＬ２キャッシュメモリ１１（Ｌ２）のデータを示している。図５乃至図９は丸印よりも二重丸印、二重丸印よりも三重丸印の方がより最新のデータが保持されていることを示している。なお、×印は、キャッシュコヒーレンシが維持されない状態、即ち、同一対象データについて、他のＬ１，Ｌ２キャッシュメモリＭＣ，１１に更新データが格納されている状態で、未更新データを格納しているＬ１キャッシュメモリＭＣに新たな書込みが行われることを示している。また、図５乃至図９の（ａ）〜（ｇ）は、上記表１の場合ａ〜ｇに対応している。
【００４９】
なお、図５乃至図９はプロセッサＰ０〜Ｐ３の４つのプロセッサを有する例を示しており、各プロセッサＰ０〜Ｐ３にはＬ１キャッシュメモリＭ０〜Ｍ３が夫々内蔵されているものとして説明する。また、図５乃至図９の例は、Ｌ１キャッシュメモリＭＣに格納されているデータの全ては、Ｌ２キャッシュメモリ１１にも格納されている場合（マルチレベル・インクルージョン）の例である。
【００５０】
図５はフォルス・シェアリングが発生しない例である。
【００５１】
いま、図５の最上段右側に示すように、対象ラインについてＬ２キャッシュメモリ１１にのみデータ（対象データ）が保持されているものとする。ここで、プロセッサＰ０のプロセッサコアが対象データにアクセスするものとする。この場合には、Ｌ１キャッシュメモリＭ０には対象データが保持されていないので、Ｌ１キャッシュメモリＭ０は、リフィル信号ＲＤをアサートし、Ｌ２キャッシュメモリ１１に供給する（上記表１の場合ａに相当）。
【００５２】
これにより、Ｌ２キャッシュメモリ１１の制御回路３７は、図５左側に示すように、更新情報領域３８の対象ラインのＶビットを“１”にする。対象データは、図５右側に示すように、Ｌ２キャッシュメモリ１１から読み出されてＬ１キャッシュメモリＭ０の対象ラインに書き込まれる。
【００５３】
次に、図５右側に示すように、プロセッサＰ０のプロセッサコアが対象データに書き込みを行うものとする。これにより、Ｌ１キャッシュメモリＭ０に格納されている対象データは、図５の２重丸で示す最新のデータ、即ち更新データとなる。一方、この時点では、Ｌ２キャッシュメモリ１１に格納されている対象データは、１重丸で示すように未更新データである。
【００５４】
この書き込み命令によって、プロセッサＰ０のＬ１キャッシュメモリＭ０は、変更信号ＭＯＤをアサートしてＬ２キャッシュメモリ１１に供給する（上記表１の場合ｅに相当）。これにより、Ｌ２キャッシュメモリ１１の制御回路３７は、図５左側に示すように、Ｍビットをセットし、ＩＣビットも“１”にする。
【００５５】
次に、プロセッサＰ０のプロセッサコアが、対象データが格納されているＬ１キャッシュメモリＭ０のラインに対して他のデータのアクセスを行うものとする。この場合には、Ｌ１キャッシュメモリＭ０にキャッシュミスが発生し、Ｌ１キャッシュメモリＭ０は、ライトバック無効信号ＷＢＩをアサートしてＬ２キャッシュメモリ１１に供給する（上記表１の場合ｄに相当）。これにより、Ｌ２キャッシュメモリ１１に格納されている対象データは更新データとなると共に、Ｌ１キャッシュメモリＭ０の対象データは無効なデータとなる（図５右側）。Ｌ２キャッシュメモリ１１の制御回路３７は、対象ラインのＶビット、Ｍビット及びＩＣビットをクリアする（図５左側）。
【００５６】
次に、図６を参照してフォルス・シェアリングによってキャッシュコヒーレンシが保てない場合の一例について説明する。
【００５７】
いま、図６の最上段右側に示すように、所定のラインについてＬ２キャッシュメモリ１１にのみデータ（対象データ）が保持されているものとする。ここで、図５の例と同様に、Ｌ１キャッシュメモリＭ０がリフィル信号ＲＤをアサートするものとする。Ｌ２キャッシュメモリ１１の制御回路３７は、図６左側に示すように、更新情報領域３８の対象ラインのＶビットを“１”にする。対象データは、図６右側に示すように、Ｌ２キャッシュメモリ１１から読み出されてＬ１キャッシュメモリＭ０の対象ラインに書き込まれる。
【００５８】
次に、図６中央に示すように、プロセッサＰ１のプロセッサコアのアクセスによって、Ｌ１キャッシュメモリＭ１がリフィル信号ＲＤをアサートするものとする。Ｌ２キャッシュメモリ１１の制御回路３７は、図６左側に示すように、更新情報領域３８の対象ラインのプロセッサＰ１のＶビットを“１”にする。対象データは、図６右側に示すように、Ｌ２キャッシュメモリ１１から読み出されてＬ１キャッシュメモリＭ１の対象ラインに書き込まれる。
【００５９】
次に、図６右側に示すように、プロセッサＰ０のプロセッサコアが対象データに書き込みを行うものとする。これにより、Ｌ１キャッシュメモリＭ０に格納されている対象データは、図６の２重丸で示す更新データとなる。一方、この時点では、Ｌ２キャッシュメモリ１１及びＬ１キャッシュメモリＭ１に格納されている対象データは、１重丸で示すように未更新データである。
【００６０】
この書き込み命令によって、プロセッサＰ０のＬ１キャッシュメモリＭ０は、変更信号ＭＯＤをアサートしてＬ２キャッシュメモリ１１に供給する（表１の場合ｆに相当）。これにより、Ｌ２キャッシュメモリ１１の制御回路３７は、Ｍビットをセットする。この場合には、制御回路３７は、図６左側に示すように、プロセッサＰ０，Ｐ１の両方のＭビットをセットする。即ち、制御回路３７は、有効な変更信号ＭＯＤが入力されると、Ｖビットを参照して、Ｖビットがセットされた他のプロセッサのＭビットもセット状態にする。また、ＩＣビットもセットされる。
【００６１】
仮に、この状態で、プロセッサＰ０のプロセッサコアが再度Ｌ１キャッシュメモリＭ０の対象データに書き込みを行うものとする。この場合には、既にＬ１キャッシュメモリＭ０内のダーティビットＤは“１”になっており、プロセッサＰ０からは有効な変更信号ＭＯＤは発生しない。従って、Ｌ２キャッシュメモリ１１の更新情報領域３８の内容は変化しない。
【００６２】
ここで、図６中央に示すように、プロセッサＰ１のプロセッサコアも対象データに対して書き込みを行うものとする。そうすると、プロセッサＰ１から有効な変更信号ＭＯＤがＬ２キャッシュメモリ１１の制御回路３７に供給される（表１の場合ｇに相当）。制御回路３７は、ＭビットがセットされたプロセッサＰ１から変更信号ＭＯＤが入力されたことから、ＦビットをＦレジスタ４０にセットする。また、制御回路３７は、プロセッサＰ１から指定されたアドレスをＦＳＡレジスタ３９から出力させる。Ｆレジスタ４０は、プロセッサＰ１に対して割り込み要求信号を発生する。
【００６３】
このように、本実施の形態においては、異なるＬ１キャッシュメモリＭＣ同士の同一ラインに対して別々に書き込みが行われることを検知して、割り込み要求信号を発生することができる。
【００６４】
次に、図７を参照してフォルス・シェアリングによってキャッシュコヒーレンシが保てない場合の他の例について説明する。
【００６５】
いま、図７の最上段右側に示すように、所定のラインについてＬ２キャッシュメモリ１１にのみデータ（対象データ）が保持されているものとする。ここで、図６の例と同様に、Ｌ１キャッシュメモリＭ０及びＬ１キャッシュメモリＭ１が順次リフィル信号ＲＤをアサートし、次いで、プロセッサＰ０のプロセッサコアが対象データに書き込みを行うことによって、Ｌ１キャッシュメモリＭ０が変更信号ＭＯＤをアサートしてＬ２キャッシュメモリ１１に供給するものとする。
【００６６】
この状態では、図７左側４段目に示すように、プロセッサＰ０，Ｐ１のＶビット及びＭビットは“１”で、ＩＣビットも“１”となっている。また、図７右側４段目に示すように、キャッシュメモリＭ１，１１には未更新データが格納され、Ｌ１キャッシュメモリＭ０には更新データが格納されている。
【００６７】
次に、図７中央に示すように、プロセッサＰ０のプロセッサコアが、対象データが格納されているＬ１キャッシュメモリＭ０のラインに対して他のデータのアクセスすることにより、Ｌ１キャッシュメモリＭ０が、ライトバック無効信号ＷＢＩをアサートしてＬ２キャッシュメモリ１１に供給するものとする（図１の場合ｄに相当）。これにより、Ｌ２キャッシュメモリ１１に格納されている対象データは更新データとなると共に、Ｌ1 キャッシュメモリＭ０の対象データは無効なデータとなる（図７右側）。また、Ｌ２キャッシュメモリ１１の制御回路３７は、対象ラインのＶビット及びＭビットをクリアし、ＩＣビットも“０”とする（図７左側）。
【００６８】
ここで、図７中央に示すように、プロセッサＰ１のプロセッサコアも対象データに対して書き込みを行うものとする。そうすると、プロセッサＰ１から有効な変更信号ＭＯＤがＬ２キャッシュメモリ１１の制御回路３７に供給される（図１の場合ｇに相当）。制御回路３７は、ＭビットがセットされたプロセッサＰ１から変更信号ＭＯＤが入力されたことから、ＦビットをＦレジスタ４０にセットする。また、制御回路３７は、プロセッサＰ１から指定されたアドレスをＦＳＡレジスタ３９から出力させる。Ｆレジスタ４０は、プロセッサＰ１に対して割り込み要求信号を発生する。
【００６９】
このように、本実施の形態においては、Ｌ２キャッシュメモリ１１に更新データが存在する場合において、未更新データを保持するＬ１キャッシュメモリＭＣに対する書き込みを検知して、割り込み要求信号を発生することができる。
【００７０】
次に、図８を参照してフォルス・シェアリングによってキャッシュコヒーレンシが保てない場合の更に他の例について説明する。
【００７１】
いま、図８の最上段右側に示すように、所定のラインについてＬ２キャッシュメモリ１１にのみ対象データが保持されているものとする。ここで、Ｌ１キャッシュメモリＭ０がリフィル信号ＲＤをアサートし、次いで、プロセッサＰ０のプロセッサコアが対象データに書き込みを行うことによって、Ｌ１キャッシュメモリＭ０が変更信号ＭＯＤをアサートしてＬ２キャッシュメモリ１１に供給するものとする。
【００７２】
この状態では、図８左側３段目に示すように、プロセッサＰ０のＶビット及びＭビットは“１”で、ＩＣビットも“１”となっている。また、図８右側３段目に示すように、Ｌ２キャッシュメモリ１１には未更新データが格納され、Ｌ１キャッシュメモリＭ０には更新データが格納されている。
【００７３】
次に、図８中央に示すように、プロセッサＰ１のプロセッサコアのアクセスによって、Ｌ１キャッシュメモリＭ１がリフィル信号ＲＤをアサートするものとする（表１の場合ｂに相当）。対象データは、図８右側４段目に示すように、Ｌ２キャッシュメモリ１１から読み出されてＬ１キャッシュメモリＭ１の対象ラインに書き込まれる。Ｌ２キャッシュメモリ１１の制御回路３７は、図８左側に示すように、更新情報領域３８の対象ラインのプロセッサＰ１のＶビットを“１”にすると共に、他のキャッシュメモリＭ０に更新データが格納されている状態で、未更新データを格納することを示すＭビットも“１”にセットする。
【００７４】
即ち、この状態では、図８左側４段目に示すように、プロセッサＰ０，Ｐ１のＶビット及びＭビットは“１”で、ＩＣビットも“１”となっている。また、図８右側４段目に示すように、キャッシュメモリＭ１，１１には未更新データが格納され、Ｌ１キャッシュメモリＭ０には更新データが格納されている。
【００７５】
次に、図８中央に示すように、プロセッサＰ０のプロセッサコアが、対象データが格納されているＬ１キャッシュメモリＭ０のラインに対して他のデータのアクセスすることにより、Ｌ１キャッシュメモリＭ０が、ライトバック無効信号ＷＢＩをアサートしてＬ２キャッシュメモリ１１に供給するものとする（図１の場合ｄに相当）。これにより、Ｌ２キャッシュメモリ１１に格納されている対象データは更新データとなると共に、Ｌ1 キャッシュメモリＭ０の対象データは無効なデータとなる（図８右側）。また、Ｌ２キャッシュメモリ１１の制御回路３７は、対象ラインのＶビット及びＭビットをクリアし、ＩＣビットも“０”とする（図８左側）。
【００７６】
ここで、図８中央に示すように、プロセッサＰ１のプロセッサコアも対象データに対して書き込みを行うものとする。そうすると、プロセッサＰ１から有効な変更信号ＭＯＤがＬ２キャッシュメモリ１１の制御回路３７に供給される（図１の場合ｇに相当）。制御回路３７は、ＭビットがセットされたプロセッサＰ１から変更信号ＭＯＤが入力されたことから、ＦビットをＦレジスタ４０にセットする。また、制御回路３７は、プロセッサＰ１から指定されたアドレスをＦＳＡレジスタ３９から出力させる。Ｆレジスタ４０は、プロセッサＰ１に対して割り込み要求信号を発生する。
【００７７】
このように、本実施の形態においては、Ｌ２キャッシュメモリ１１から未更新データを読み込んだ場合にもＭビットを設定することで、それ以後の書き戻し処理によって他のプロセッサ用のＭビットがクリアされても、未更新データを保持するＬ１キャッシュメモリＭＣに対する書き込みを検知して、割り込み要求信号を発生することができる。
【００７８】
次に、図９を参照してフォルス・シェアリングによってもキャッシュコヒーレンシが保たれている一例について説明する。
【００７９】
いま、図９の最上段右側に示すように、所定のラインについてＬ２キャッシュメモリ１１にのみデータ（対象データ）が保持されているものとする。ここで、図７の例と同様に、Ｌ１キャッシュメモリＭ０及びＬ１キャッシュメモリＭ１が順次リフィル信号ＲＤをアサートし、次いで、Ｌ１キャッシュメモリＭ０が変更信号ＭＯＤをアサートし、更に、Ｌ１キャッシュメモリＭ０がライトバック無効信号ＷＢＩをアサートしてＬ２キャッシュメモリ１１に供給するものとする。
【００８０】
この状態では、図９左側５段目に示すように、プロセッサＰ１のＶビット及びＭビットのみが“１”となっている。また、図９右側５段目に示すように、Ｌ２キャッシュメモリ１１に更新データが格納され、Ｌ１キャッシュメモリＭ１には未更新データが格納されている。
【００８１】
ここで、図９中央に示すように、プロセッサＰ２のプロセッサコアが対象データにアクセスするものとする。この場合には、Ｌ１キャッシュメモリＭ２には対象データが保持されていないので、Ｌ１キャッシュメモリＭ２は、リフィル信号ＲＤをアサートし、Ｌ２キャッシュメモリ１１に供給する（表１の場合ａに相当）。
【００８２】
これにより、Ｌ２キャッシュメモリ１１の制御回路３７は、図９左側に示すように、更新情報領域３８の対応するプロセッサＰ２のＶビットを“１”にする。対象データは、図９右側に示すように、Ｌ２キャッシュメモリ１１から読み出されてＬ１キャッシュメモリＭ２の対応するラインに書き込まれる。なお、Ｌ１キャッシュメモリＭ２に読み込まれるデータは、Ｌ１キャッシュメモリＭ０がライトバックした更新データである。
【００８３】
次に、プロセッサＰ３のプロセッサコアも対象データにアクセスするものとする。これにより、Ｌ１キャッシュメモリＭ３は、リフィル信号ＲＤをアサートし、Ｌ２キャッシュメモリ１１に供給する。制御回路３７は、図９左側に示すように、プロセッサＰ３のＶビットを“１”にする。この場合にも、Ｌ１キャッシュメモリＭ３に読み込まれるデータは、Ｌ１キャッシュメモリＭ０がライトバックした更新データである（図９右側）。
【００８４】
次に、図９中央に示すように、プロセッサＰ２のプロセッサコアが対象データに書き込みを行うものとする。これにより、Ｌ１キャッシュメモリＭ２に格納されている対象データは、図９の３重丸で示す更新データとなる。また、この書き込み命令によって、プロセッサＰ２のＬ１キャッシュメモリＭ２は、変更信号ＭＯＤをアサートしてＬ２キャッシュメモリ１１に供給する（表１の場合ｆに相当）。これにより、Ｌ２キャッシュメモリ１１の制御回路３７は、図９左側に示すように、ＶビットがセットされているプロセッサＰ１〜Ｐ３のＭビットをセットし、ＩＣビットもセットする。
【００８５】
このように、図９の例では、キャッシュコヒーレンシは維持されており、Ｆビットはセットされない。なお、図９の最終段の状態で、プロセッサＰ１又はＰ３から有効な変更信号ＭＯＤが出力されると、制御回路３７は、これらのプロセッサＰ１，Ｐ３のＭビットがセットされていることから、Ｆレジスタ４０にＦビットをセットすることになる。
【００８６】
このように本実施の形態においては、Ｌ１キャッシュメモリからリフィル信号ＲＤ、ライトバック無効信号ＷＢＩ、変更信号ＭＯＤ及び無効信号ＩＮＶをＬ２キャッシュメモリに供給させると共に、Ｌ２キャッシュメモリにおいて、各プロセッサ毎にバリッド（Ｖ）ビット、変更（Ｍ）ビット及び不一致（ＩＣ）ビットを記憶させ、有効な変更信号ＭＯＤの入力時点におけるＭビットの状態に応じてＦビットをセットするか否かを決定する。これにより、複数のプロセッサで共有されたラインに対して、複数のプロセッサから書き込みが起こったこと、即ち、フォルス・シェアリングが発生したことを自動的に検出することができる。更に、フォルス・シェアリングを検出すると、Ｆビットをセットして割り込み要求を発生させることができ、プログラムの実行を停止して、ソフトウエア不具合を解析させることが可能となる。なお、ＦＳＡレジスタとＦレジスタとは、プロセッサからのロード命令で読み出すことも可能であり、ソフトウエアによって、どのアドレスのラインに対して、複数のプロセッサから書き込みがあったかを容易に把握することができる。これにより、ソフトウエアの不具合の検出が容易となり、開発効率を向上させることができる。
【００８７】
このように本実施の形態においては、スヌープキャッシュを備えることなく、フォルス・シェアリングを検出することができる。本実施の形態では、Ｌ２キャッシュメモリの各ラインに各プロセッサに対応した２ビットの情報の記憶領域を追加するだけで構成することができ、ハードウェア規模の増加は僅かである。例えば、４プロセッサの場合には８ビットのみ追加すればよく、ラインサイズを３２バイト（２５６ビット）、タグ部が２２ビットのキャッシュでは、僅かに約２．９％のハードウエア増で済む。
【００８８】
また、本実施の形態においては、制御回路及び更新情報領域によって構成されるエラー検出部をＬ２キャッシュメモリに内蔵した例について説明したが、状態検出部をＬ２キャッシュメモリとは別に設けてもよいことは明らかである。
【図面の簡単な説明】
【００８９】
【図１】本発明の一実施の形態に係るマルチプロセッサシステムを示すブロック図。
【図２】図１中のＬ１キャッシュメモリＭＣの具体的な構成を示す回路図。
【図３】図１中のＬ２キャッシュメモリ１１の具体的な構成を示す回路図。
【図４】図３中の制御回路３７の制御を説明するためのフローチャート。
【図５】実施の形態の動作を説明するための説明図。
【図６】実施の形態の動作を説明するための説明図。
【図７】実施の形態の動作を説明するための説明図。
【図８】実施の形態の動作を説明するための説明図。
【図９】実施の形態の動作を説明するための説明図。
【符号の説明】
【００９０】
１１…Ｌ２キャッシュメモリ、１３…メインメモリ、Ｐ１〜Ｐｎ…プロセッサ、Ｃ１〜Ｃｎ…プロセッサコア、Ｍ１〜Ｍｎ…Ｌ１キャッシュメモリ。
【図１】
2008176731.tif 000003
【図２】
2008176731.tif 000004
【図３】
2008176731.tif 000005
【図４】
2008176731.tif 000006
【図５】
2008176731.tif 000007
【図６】
2008176731.tif 000008
【図７】
2008176731.tif 000009
【図８】
2008176731.tif 000010
【図９】
2008176731.tif 000011