(57)【要約】【課題】共有メモリへの違反アクセスを検出する。【解決手段】マルチプロセッサシステムは、複数のプロセッサコア１１に対応して設けられ、かつ有効情報と、更新情報と、アドレス情報とを格納するタグ格納部２２を含む複数のキャッシュメモリ２１と、複数のプロセッサコア１１に共有される共有メモリ１４と、複数のプロセッサコア１１から共有メモリ１４へのアクセス要求を調停し、かつ調停されたアクセス要求を共有メモリ１４及び複数のキャッシュメモリ２１に送るアービタ回路１３とを具備する。アクセス要求は、キャッシュラインのデータが書き換えられた旨を示す識別信号を含む。複数のキャッシュメモリ２１はそれぞれ、タグ格納部２２の情報と、アービタ回路１３からのアクセス要求とを比較して、違反アクセスを検出する違反検出回路２４を含む。【選択図】      図１
2008250373.tif 000002
【特許請求の範囲】
【請求項１】
デバッグの対象となる複数のプロセッサコアと、
前記複数のプロセッサコアに対応して設けられ、かつデータを格納する単位であるキャッシュラインが有効か否かを示す有効情報と、キャッシュラインのデータが書き換えられたか否かを示す更新情報と、キャッシュラインのデータのアドレス情報とを格納するタグ格納部を含む複数のキャッシュメモリと、
前記複数のプロセッサコアに共有される共有メモリと、
前記複数のプロセッサコアから前記共有メモリへのアクセス要求を調停し、かつ調停されたアクセス要求を前記共有メモリ及び前記複数のキャッシュメモリに送るアービタ回路と、
を具備し、
前記アクセス要求は、キャッシュラインのデータが書き換えられた旨を示す識別信号を含み、
前記複数のキャッシュメモリはそれぞれ、前記タグ格納部の情報と、前記アービタ回路からのアクセス要求とを比較して、違反アクセスを検出する違反検出回路を含むことを特徴とするマルチプロセッサシステム。
【請求項２】
前記キャッシュメモリは、キャッシュラインにデータが書き込まれる前後の更新情報の遷移を検出して前記識別信号を生成する遷移検出回路をさらに具備することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
デバッグの有効／無効を切り替える切替回路をさらに具備し、
前記キャッシュメモリは、デバッグの有効時に前記違反アクセスの検出を行うことを特徴とする請求項２に記載のマルチプロセッサシステム。
【請求項４】
違反アクセスが検出された場合に、前記プロセッサコアに対して割り込みを行う割り込み回路をさらに具備することを特徴とする請求項１乃至３のいずれかに記載のマルチプロセッサシステム。
【請求項５】
前記アービタ回路は、アクセス競合に対して割り当てられるプロセッサコアの優先順位をランダムに変化させることを特徴とする請求項１乃至４のいずれかに記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアを備えたマルチプロセッサシステムに係り、例えば複数のプロセッサコアに共有される共有メモリを備えたマルチプロセッサシステムに関する。
【背景技術】
【０００２】
近年、コンピュータ装置の処理性能を飛躍的に向上させることが期待できることから、複数のプロセッサコアを共有バスを介して接続したマルチプロセッサシステムの開発が進められている。また、プロセッサコアの動作周波数は、年々高くなる傾向にあるが、主記憶に用いられる外部メモリ（共有メモリ）はプロセッサコアほど高速化が進んでいないため、両者のギャップを埋めるために、キャッシュメモリを用いるのが一般的である。このようなプロセッサコアのキャッシュ機構としては、プロセッサコアに１次キャッシュを内蔵させている。
【０００３】
１次キャッシュと共有メモリとによって階層化された共有メモリシステムのキャッシュコヒーレンシ（cache coherency）を保つ方式としては、スヌープキャッシュ方式が知られている。スヌープキャッシュ方式は、各々の１次キャッシュが自身や他のプロセッサコアの１次キャッシュと更新情報などを交換することでキャッシュコヒーレンシを保っている。
【０００４】
しかし、コヒーレンシを保つために、バストランザクションの監視、アクセス情報の伝達、最新データの強制的な共有メモリへのライトバックなどの様々な処理が発生するため、マルチプロセッサシステムが性能的、電力的に悪化してしまうという問題点がある。
【０００５】
また、ハードウェアによるキャッシュコヒーレンシの維持機構がない場合、コヒーレンシを保てるような共有メモリへのアクセスルールを規定し、１次キャッシがそれを遵守することでコヒーレンシを保っている。コヒーレンシが保てなくなるという状況は複数のプロセッサコアの関連によって発生するものであり、シミュレーションで実行可能な量の検証では違反アクセスが見つからないことも多い。さらに、チップに実装されたマルチプロセッサシステムにおいて検出された違反アクセスをシミュレータで再現することは難しく、問題の特定に多くの時間が必要となってしまう。
【０００６】
また、この種の関連技術として、複数のプロセッサコアが共有バスを介して共有メモリに接続されたマルチプロセッサシステムにおいて、キャッシュコヒーレンシを保ちつつキャッシュメモリ間のデータ転送を高速に行う技術が開示されている（特許文献１参照）。
【特許文献１】特開平９−１８５５４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、共有メモリへの違反アクセスを検出することが可能なマルチプロセッサシステムを提供する。
【課題を解決するための手段】
【０００８】
本発明の一視点に係るマルチプロセッサシステムは、デバッグの対象となる複数のプロセッサコアと、前記複数のプロセッサコアに対応して設けられ、かつデータを格納する単位であるキャッシュラインが有効か否かを示す有効情報と、キャッシュラインのデータが書き換えられたか否かを示す更新情報と、キャッシュラインのデータのアドレス情報とを格納するタグ格納部を含む複数のキャッシュメモリと、前記複数のプロセッサコアに共有される共有メモリと、前記複数のプロセッサコアから前記共有メモリへのアクセス要求を調停し、かつ調停されたアクセス要求を前記共有メモリ及び前記複数のキャッシュメモリに送るアービタ回路とを具備する。前記アクセス要求は、キャッシュラインのデータが書き換えられた旨を示す識別信号を含む。前記複数のキャッシュメモリはそれぞれ、前記タグ格納部の情報と、前記アービタ回路からのアクセス要求とを比較して、違反アクセスを検出する違反検出回路を含む。
【発明の効果】
【０００９】
本発明によれば、共有メモリへの違反アクセスを検出することが可能なマルチプロセッサシステムを提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１１】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るマルチプロセッサシステムの構成を示すブロック図である。図１に示したマルチプロセッサシステムは、チップに実装されたシステムＬＳＩ（Large-Scale Integrated Circuit）として構成される。
【００１２】
マルチプロセッサシステムは、複数のプロセッサコア１１（本実施形態では、例えば３つのプロセッサコア１１−１〜１１−３）、アービタ回路１３、共有メモリとしての２次キャッシュメモリ（２次キャッシュ）１４、主記憶装置１５、及び違反処理回路１６を備えている。
【００１３】
各プロセッサコア１１は、本システムの動作を制御するためのＣＰＵ（Central Processing Unit）であり、主記憶装置１５に格納されたプログラムを実行することにより、キャッシュメモリやその他の回路の制御を行う。そして、ＬＳＩが処理すべき内容を複数のタスクに分割し、各タスクに最適な構成を持ったプロセッサコアを並列に動作させることで、大幅な処理速度の向上が可能となる。
【００１４】
プロセッサコア１１による主記憶装置１５へのアクセスは、バス１２及び２次キャッシュ１４を介して行われる。なお、本実施形態では、共有メモリとしての２次キャッシュ１４は必ずしも必要ではなく、プロセッサコア１１がバス１２を介して直接に共有メモリとしての主記憶装置１５へアクセスするように構成してもよい。
【００１５】
各プロセッサコア１１は、１次キャッシュメモリ（１次キャッシュ）２１を備えている。１次キャッシュ２１は、タグ格納部２２、及びデータを格納するデータ格納部２３を備えている。タグ格納部２２及びデータ格納部２３は、キャッシュライン単位でタグやデータなどを格納する。
【００１６】
タグ格納部２２には、キャッシュラインのデータの情報が格納され、具体的には、バリッドビット（Ｖ）、ダーティービット（Ｄ）、及びアドレス情報（ＡＴＡＧ）が格納される。アドレスタグ（ＡＴＡＧ）は、当該キャッシュラインのデータ格納部２３に格納されているデータのアドレス情報を示す。
【００１７】
バリッドビット（Ｖ）は、キャッシュラインのデータが有効か否かを示す。すなわち、キャッシュラインのデータが、そのキャッシュラインのインデックスとアドレスタグとで表される共有メモリのデータとして有効か否かを示す。例えば、バリッドビット（Ｖ）が“１”の場合はキャッシュラインのデータは有効であり、“０”の場合はキャッシュラインのデータは無効である。
【００１８】
ダーティービット（Ｄ）は、キャッシュラインのデータが更新され、キャッシュラインのデータを共有メモリに書き戻す必要があるか否かを示す。すなわち、１次キャッシュのキャッシュラインが書き替えられて最新データとなっており、キャッシュラインのコピー元となる共有メモリには旧データしかなく、書き替えたプロセッサコアが最新データを所有していることを意味する。例えば、ダーティービット（Ｄ）は、キャッシュラインのデータは更新されて、まだ共有メモリに書き戻しを行っていない場合に“１”にセットされる。
【００１９】
プロセッサコア１１−１〜１１−３から２次キャッシュ１４へのアクセス要求は、アービタ回路１３で競合を調停される。すなわち、アービタ回路１３は、複数のプロセッサコアから共有メモリにバス１２を介してアクセスが競合した場合に、規定された方法によりアクセスの割り当てを行う。そして、１サイクルに１つのアクセス要求だけが２次キャッシュ１４に送られるようになっている。２次キャッシュ１４にヒットしなかったアクセス要求は、主記憶装置１５に送られる。
【００２０】
各プロセッサコア１１から２次キャッシュ１４へ送られるアクセス要求には、プロセッサコア番号、リード／ライト識別信号、２次キャッシュ直接アクセス／１次キャッシュリフィルアクセス識別信号、及びアクセス先アドレスなどの情報の他に、１次キャッシュ書き込み発生識別信号が含まれる。１次キャッシュ書き込み識別信号ＣＷＩは、ダーティービットが“０”から“１”に書き換えられた（遷移した）のを識別する信号であり、具体的には、プロセッサコアが共有メモリから１次キャッシュにデータを取ってきた後にそのキャッシュラインに新たなデータを書き込む動作を識別する信号である。
【００２１】
２次キャッシュ直接アクセス識別信号は、１次キャッシュを経由しないで直接に２次キャッシュにアクセスする動作を識別する信号である。１次キャッシュリフィルアクセス識別信号は、１次キャッシュに一度アクセスした後に２次キャッシュにアクセスする動作を識別する信号である。アクセス先アドレスは、それの上位ビットがアドレスタグに対応し、それの下位ビットがキャッシュラインのインデックスに対応する。
【００２２】
ところで、本実施形態のマルチプロセッサシステムは、２次キャッシュ１４に送られるアクセス要求を各プロセッサコア１１にフィードバックするフィードバックパス、このフィードバックされたアクセス要求と各プロセッサコア１１が保持するキャッシュラインの情報との比較を行って違反アクセスを検出する違反検出回路２４、各プロセッサコア１１により検出された違反情報を集めて処理及び保持する違反処理回路１６などを備えている。
【００２３】
図２は、１次キャッシュ２１の構成を示すブロック図である。１次キャッシュ２１は、前述したタグ格納部２２及びデータ格納部２３に加えて、違反検出回路２４、データキャッシュ制御回路２５、ダーティービット遷移検出回路２６、及びデバッグ切替回路２７を備えている。これらの回路のうち、違反検出回路２４、ダーティービット遷移検出回路２６、デバッグ切替回路２７、及び違反処理回路１６によりデバッグ回路が構成されている。
【００２４】
デバッグ切替回路２７は、デバッグ回路による違反アクセス検出の有効／無効を設定する。デバッグ切替回路２７は、１ビットのレジスタ２７Ａを備えており、このレジスタ２７Ａのデータに基づいて違反アクセス検出の有効／無効を設定する。レジスタ２７Ａのデータは、以下のように設定される。  
１’ｂ１  ：  違反アクセス検出有効
１’ｂ０  ：  違反アクセス検出無効
レジスタ２７Ａのデータは、例えば外部からバス１２を介して書き換えられる。また、レジスタ２７Ａ内容は常時出力されており、違反検出イネーブルＶＤＥとして違反検出回路２４及びダーティービット遷移検出回路２６へ送られる。
【００２５】
タグ格納部２２は、２つのアクセスポート（ポート０、及びポート１）を有している。そして、タグ格納部２２に格納されたバリッドビット（Ｖ）、ダーティービット（Ｄ）、及びアドレスタグ（ＡＴＡＧ）は、キャッシュライン単位で同時に読み出される。
【００２６】
データキャッシュ制御回路２５は、タグ格納部２２及びデータ格納部２３に対して、データの書き込み、及びデータの読み出しを行う。データキャッシュ制御回路２５は、ポート０を用いてタグ格納部２２にアクセスする。データキャッシュ制御回路２５は、チップイネーブルＣＥ_０、ライトイネーブルＲＥ_０、キャッシュラインのインデックスＩＮＤ_０、及び書き込みデータＷＤ_０をタグ格納部２２に送る。また、データキャッシュ制御回路２５は、読み出しデータＲＤ_０をタグ格納部２２から受ける。
【００２７】
また、データキャッシュ制御回路２５は、１次キャッシュにデータがヒットしたか否かを示すキャッシュヒット信号ＨＩＴを生成し、このキャッシュヒット信号ＨＩＴをダーティービット遷移検出回路２６に送る。このキャッシュヒット信号ＨＩＴは、キャッシュヒット時に“１”、キャッシュミス時に“０”に設定される。
【００２８】
違反検出回路２４は、ポート１を用いてタグ格納部２２にアクセスする。違反検出回路２４は、チップイネーブルＣＥ_１、及びキャッシュラインのインデックスＩＮＤ_１をタグ格納部２２に送る。また、違反検出回路２４は、読み出しデータＲＤ_１をタグ格納部２２から受ける。
【００２９】
データキャッシュ制御回路２５によるタグ格納部２２及びデータ格納部２３へのデータの書き込みは、以下のような２サイクルで実現する。  
「サイクル１」：タグ情報の読み出し
「サイクル２」：キャッシュヒット／ミス判定
そして、データキャッシュ制御回路２５は、キャッシュヒット時には、タグ格納部２２及びデータ格納部２３へデータを書き込む。一方、キャッシュミス時には、共有メモリへのリフィルアクセスを行う。
【００３０】
ダーティービット遷移検出回路２６は、サイクル１で読み出したタグ情報のダーティービットと、サイクル２で書き込む（更新する）ダーティービットを用いて、ダーティービットが“０”から“１”に書き換えられたか否かを判定する。そして、ダーティービット遷移検出回路２６は、判定結果を１次キャッシュ書き込み識別信号ＣＷＩとして出力する。この１次キャッシュ書き込み識別信号ＣＷＩは、アービタ回路１３へ送られる。
【００３１】
ダーティービット遷移検出回路２６は、３入力ＡＮＤ回路２６Ａ、及び２入力ＡＮＤ回路２６Ｂを備えている。ＡＮＤ回路２６Ａには、ダーティービットの書き込みデータＤＷＤ、ダーティービットの読み出しデータＤＲＤ、及びキャッシュヒット信号ＨＩＴが入力されている。ＡＮＤ回路２６Ｂには、ＡＮＤ回路２６Ａの出力、及び違反検出イネーブルＶＤＥが入力されている。
【００３２】
図２に示すように構成されたダーティービット遷移検出回路２６は、以下の条件が一致した時にダーティービットが０から１に書き換えられたと判断し、１次キャッシュ書き込み識別信号ＣＷＩを“１”に設定する。  
・違反検出イネーブルＶＤＥ＝１
・キャッシュヒット信号ＨＩＴ＝１
・ダーティービットの書き込みデータＤＷＤ＝１
・ダーティービットの読み出しデータＤＲＤ＝０
また、キャッシュミスした場合と同様に、１次キャッシュ書き込み識別信号ＣＷＩ以外のアクセス要求は、データキャッシュ制御回路２５からアービタ回路１３へ送られる。ただし、２次キャッシュ直接アクセス／１次キャッシュリフィルアクセス識別信号は、共に“０”に設定される。すなわち、データキャッシュ制御回路２５からアービタ回路１３へ送られるアクセス要求は、以下に示すように設定される。  
・プロセッサコア番号ＰＣＮ＝自身のコア番号
・リード／ライト識別信号＝０（read）
・２次キャッシュ直接アクセス識別信号＝０
・１次キャッシュリフィルアクセス識別信号＝０
・アクセス先アドレス＝共有メモリのアクセス先アドレス
なお、違反検出イネーブルＶＤＥが“０”の時（すなわち、違反アクセス検出が無効の時）は、１次キャッシュ書き込み識別信号ＣＷＩが“０”に固定される。この場合は、通常のキャッシュアクセス処理と同じであり、１次キャッシュ書き込み識別信号ＣＷＩ以外のアクセス要求は通常のキャッシュアクセス処理時と変化はない。
【００３３】
違反検出回路２４は、所定のポリシーに基づいて、プロセッサコアのアクセスパターンが違反であるか否かを検出する。図３は、違反検出回路２４の構成を示すブロック図である。違反検出回路２４は、判定回路２４Ａ、比較回路２４Ｂ、ＡＮＤ回路２４Ｃ、及びレジスタ２４Ｄを備えている。
【００３４】
違反検出回路２４には、デバッグ切替回路２７から違反検出イネーブルＶＤＥが送られる。違反検出回路２４は、違反検出イネーブルＶＤＥが“１”の時、アービタ回路１３からのアクセス要求をレジスタ２４Ｄに格納し、このアクセス要求の内容を用いて違反アクセスの検出を行う。一方、違反検出回路２４は、違反検出イネーブルＶＤＥが“０”の時、アービタ回路１３からのアクセス要求を無視する。また、違反検出回路２４は、レジスタ２４Ｄのデータが更新される毎に、違反アクセス検出を実行する。
【００３５】
以下に、違反検出回路２４による違反アクセス検出動作について説明する。前述したように、違反アクセス検出時には、デバッグ切替回路２７により違反検出イネーブルＶＤＥが“１”に設定される。
【００３６】
まず、違反検出回路２４には、フィードバックパスを介して、アービタ回路１３で調停されたアクセス要求（チップイネーブルＣＥ、プロセッサコア番号ＰＣＮ、リード／ライト識別信号、２次キャッシュ直接アクセス／１次キャッシュリフィルアクセス識別信号、アクセス先アドレス、及び１次キャッシュ書き込み識別信号ＣＷＩ）が送られる。このアクセス要求は、レジスタ２４Ｄに格納される。
【００３７】
次に、違反検出回路２４は、レジスタ２４Ｄに格納されたチップイネーブルＣＥをアクセス先アドレスの下位ビット（キャッシュインデックスに対応する）と共に、読み出し要求としてタグ格納部２２に送る。この違反検出回路２４からの読み出し要求に対して、タグ格納部２２からは、キャッシュインデックスのバリッドビット、ダーティービット、及びアドレスタグが読み出される。なお、キャッシュインデックスは、キャッシュのブロック（キャッシュライン）を選択するために使用される。
【００３８】
続いて、判定回路２４Ａは、タグ格納部２２から読み出されたバリッドビット及びダーティービットを、プロセッサコア番号ＰＣＮ及びアクセス要求に含まれる５種の識別信号（リード及びライトそれぞれの２次キャッシュ直接アクセス識別信号、リード及びライトそれぞれの１次キャッシュリフィルアクセス識別信号、及び１次キャッシュ書き込み識別信号ＣＷＩ）と共に処理し、そのアクセスパターンが違反であるか否かを判定する。
【００３９】
続いて、比較回路２４Ｂは、タグ格納部２２から読み出されたアドレスタグと、アクセス先アドレスの上位ビット（アドレスタグに対応する）とを比較し、同一のキャッシュラインを指しているか否かを判定する。そして、判定回路２４Ａによりアクセスパターンが違反であると判定され、かつ、比較回路２４Ｂによりアクセス先とプロセッサコアで保持されているキャッシュラインとのアドレスが同一であれば、違反アクセスとなる。この違反アクセス検出はＡＮＤ回路２４Ｃにより行われ、ＡＮＤ回路２４Ｃは違反検出信号ＶＤを出力する。
【００４０】
さらに、違反検出の場合、違反検出回路２４は、違反検出信号ＶＤ、違反パターン、違反を検出したプロセッサコアのプロセッサコア番号ＤＰＣＮ、違反を検出するきっかけとなるアクセスを行ったプロセッサコアのプロセッサコア番号ＡＰＣＮ、及びアクセス先アドレスを違反処理回路１６に送る。この違反パターンは、判定回路２４Ａにより判定される。
【００４１】
ここで、違反アクセスの検出ポリシーの一例について説明する。本実施形態では、以下の４つのアクセスパターンを違反とする。  
１．バリッドビット＝１、ダーティービット＝１となっているキャッシュラインに、他のプロセッサコアから読み出しアクセスが発生した場合（読み出しアクセスを行ったプロセッサコアは、最新ではないデータを読み出している）
２．バリッドビット＝１となっているキャッシュラインに、他のプロセッサコアから書き込みアクセスが発生した場合（そのプロセッサコアが１次キャッシュに保持しているデータが最新のものでなくなってしまう）
３．バリッドビット＝１、ダーティービット＝１となっているキャッシュラインに、データを保持しているプロセッサコア自身が２次キャッシュ直接読み出しアクセスを行った場合（最新のデータはプロセッサコア自身の１次キャッシュ上に格納されているので、２次キャッシュから読み出したデータは最新のものではない）
４．バリッドビット＝１となっているキャッシュラインに、データを保持しているプロセッサコア自身が２次キャッシュ直接書き込みアクセスを行った場合（そのプロセッサコアが１次キャッシュに保持しているデータが最新のものでなくなってしまう）
それぞれのアクセスパターンは１つの違反だけに対応するわけではなく、様々な違反によって同じような不正なアクセスパターンになる場合がある。例えば、プロセッサコア１１−１でバリッドビット＝１、ダーティービット＝１となっているキャッシュラインにプロセッサコア１１−２からアクセスが発生した場合、そのキャッシュラインがプロセッサコア１１−１が書き換えを行うことが許可された領域であってプロセッサコア１１−２がアクセスしてはならない領域であれば、プロセッサコア１１−２のアクセスが不正なアクセスとなる。逆に、プロセッサコア１１−２のアクセスは正当なものであって、過去にプロセッサコア１１−１が書き込みを許可された領域でないにもかかわらず書き込み動作を行ってしまったためにバリッドビット＝１、ダーティービット＝１としてキャッシュラインを保持してしまっていることが不正である可能性もある。
【００４２】
なお、違反アクセスの定義はシステムや用途によって異なる場合があり、それに対応して違反アクセスの検出ポリシーも変える必要がある。その際、上記のように１つの違反アクセスパターンには複数の要因が含まれる可能性がある。したがって、違反アクセスパターンが必ず何らかの検出ポリシーに該当するように検出ポリシーを設定する。このようにして、違反アクセスの誤検出を防ぐようにする。
【００４３】
次に、違反処理回路１６について説明する。図４は、違反処理回路１６の構成を示すブロック図である。違反処理回路１６は、違反情報レジスタ１６Ａを備えている。この違反情報レジスタ１６Ａは、違反アクセスパターン（本実施形態では、４つのアクセスパターン）に対応した数のレジスタを備えている。
【００４４】
プロセッサコア１１−１〜１１−３にそれぞれ含まれる違反検出回路２４−１〜２４−３により違反アクセスが検出されて違反検出信号ＶＤがアサートされると、違反処理回路１６は、違反アクセスパターンで指定されたレジスタに、アクセスプロセッサコア番号ＡＰＣＮ、検出プロセッサコア番号ＤＰＣＮ、及びアクセス先アドレスを書き込んで保持する。
【００４５】
違反情報レジスタ１６Ａに格納されたこれらの違反情報は、外部からバス経由で読み出すことができる。すなわち、外部から読み出し要求及びレジスタ番号を違反処理回路１６に送ることで、違反情報レジスタ１６Ａのうちレジスタ番号に対応する領域の違反情報が読み出しデータとして外部にバス経由で読み出される。この読み出された違反情報は、マルチプロセッサシステムのデバッグに利用される。
【００４６】
以上詳述したように本実施形態によれば、チップに実装されたマルチプロセッサシステムがデバッグ回路を備えることができる。そして、チップ上でのプログラム実行において共有メモリへの違反アクセスが発生した場合に、デバッグ回路によりその違反アクセスを検出することができる。
【００４７】
また、違反検出回路２４−１〜２４−３により検出された違反情報を違反処理回路１６の違反情報レジスタ１６Ａに格納することができる。これにより、読み出したい違反情報を外部から自由に読み出すことが可能となり、この違反情報を用いてプロセッサコアのデバッグを行うことができる。
【００４８】
また、バリッドビット、ダーティービット、及びアドレスタグは一般的なキャッシュタグには必ず含まれる要素であり、本実施形態のデバッグ回路を実装するためにキャッシュライン毎に何らかの状態を保持するためのレジスタを新たに追加する必要がない。
【００４９】
また、マルチプロセッサシステムに新たに追加した回路はデバッグ回路を構成しているため、製品出荷時には機能を無効化して構わない。機能を無効化すれば電力が消費されないため、信号の変化が多くなって消費電力が大きくなるようなデバッグ回路を実装しても製品出荷後の消費電力には影響を及ぼさない。
【００５０】
（第２の実施形態）
第２の実施形態は、違反アクセスを検出した時点で、違反アクセスを行ったプロセッサコアに割り込みをかけてデバッグプログラムを実行するようにしている。
【００５１】
図５は、本発明の第２の実施形態に係るマルチプロセッサシステムの構成を示すブロック図である。図１と比べて、違反処理回路１６から各プロセッサコアに割り込みを行うための割り込み信号ＩＴＲのパスが追加されている。
【００５２】
図６は、違反処理回路１６の構成を示すブロック図である。違反処理回路１６は、割り込み回路１６Ｂを備えている。割り込み回路１６Ｂは、違反検出信号ＶＤ、違反を検出したプロセッサコアのプロセッサコア番号ＤＰＣＮ、及び違反を検出するきっかけとなるアクセスを行ったプロセッサコアのプロセッサコア番号ＡＰＣＮを受ける。
【００５３】
割り込み回路１６Ｂは、違反検出信号ＶＤがアサートされると、プロセッサコア番号ＤＰＣＮ及びＡＰＣＮで指定された違反を検出したプロセッサコア及び違反を検出するきっかけとなるアクセスを行ったプロセッサコアに対する割り込み信号ＩＴＲをアサートする。その後、これらのプロセッサコアに割り込みをかけて外部からデバッグプログラムを実行する。
【００５４】
デバッグが終了すると、この割り込みに関係する違反情報は必要なくなる。したがって、違反処理回路１６は、違反情報レジスタ１６Ａに格納されたデータの更新を行う。
【００５５】
以上詳述したように本実施形態によれば、違反アクセスを検出した時点で、違反アクセスをしたプロセッサコアのデバッグを行うことができる。このように、違反アクセスが検出された時点で対象となるプログラムの実行を停止してデバッグを行うことで、プログラム終了後に違反アクセスの問題を解析するよりも問題箇所の特定が容易となる。この結果、デバッグにかかる時間を削減することができる。
【００５６】
（第３の実施形態）
第２の実施形態では、割り込みが行われるプロセッサコアは、違反を検出したプロセッサコア、及び違反を検出するきっかけとなるアクセスを行ったプロセッサコアに限定されている。しかし、違反アクセスパターンによっては、割り込みを行わない、検出したプロセッサコアだけに割り込みを行う、全てのプロセッサコアに割り込みを行う、といったように使い分けた方がデバッグの効率と柔軟性が向上する場合が考えられる。そこで、第３の実施形態では、割り込みを行う対象となるプロセッサコアを、プログラムによって制御できるようにしている。
【００５７】
図７は、本発明の第３の実施形態に係る違反処理回路１６の構成を示すブロック図である。違反処理回路１６は、割り込み設定レジスタ１６Ｃを備えている。割り込み設定レジスタ１６Ｃは、違反アクセスパターンに対応した数のレジスタを備えている。割り込み設定レジスタ１６Ｃのデータは、外部からバス経由で書き込むことが可能である。すなわち、外部からバス経由で書き込み要求、レジスタ番号、及び書き込みデータを違反処理回路１６に送ることで、割り込み設定レジスタ１６Ｃのうちレジスタ番号に対応した領域に書き込みデータが書き込まれる。このようにして、デバッグ機能を有効にする前に予め割り込み設定レジスタ１６Ｃに割り込み情報を書き込んで、各違反アクセスパターンを検出した際の割り込み方法を設定しておく。
【００５８】
割り込み設定レジスタ１６Ｃは、例えばプロセッサコアが３つの場合は、違反アクセスパターン毎に４ビットの領域を持つ。４ビットの割り込み情報は、それぞれ以下のような意味を持つ。  
・「４’ｂ００００」：割り込みを行わない
・「４’ｂ０００１」：違反を検出したプロセッサコアに割り込みを行う
・「４’ｂ００１０」：違反を検出するきっかけとなるアクセスを行ったプロセッサコアに割り込みを行う
・「４’ｂ００１１」：違反検出側及びアクセス側両方のプロセッサコアに割り込みを行う
・「４’ｂ０１ｚｚ」：全てのプロセッサコアに割り込みを行う
・「４’ｂ１ｚＮＮ」：プロセッサコア番号２’ｂＮＮのプロセッサコアに割り込みを行う
（ｚはdon't care、Ｎは任意に設定可能）
このように構成された違反処理回路１６の動作について説明する。割り込み回路１６Ｂは、違反検出信号ＶＤ、プロセッサコア番号ＡＰＣＮ及びＤＰＣＮに加えて、違反パターンを受ける。違反検出信号ＶＤがアサートされると、割り込み回路１６Ｂは、割り込み設定レジスタ１６Ｃから違反アクセスパターンに対応した割り込み情報を読み出す。そして、割り込み回路１６Ｂは、割り込み情報により設定された割り込み方法でプロセッサコアに対して割り込みを行う。
【００５９】
また、割り込み設定レジスタ１６Ｃに格納された割り込み情報は、セレクタ１６Ｄを介して外部からバスを介して読み出すこともできる。すなわち、外部から読み出し要求及びレジスタ番号を違反処理回路１６に送ることで、割り込み設定レジスタ１６Ｃのうちレジスタ番号に対応した領域の割り込み情報が読み出しデータとして外部にバス経由で読み出される。
【００６０】
以上詳述したように本実施形態によれば、外部からプログラムにより書き込み可能な割り込み設定レジスタ１６Ｃの内容によって、違反アクセスを検出した際に外部割り込みを行うプロセッサコアを任意に指定することができる。これにより、デバッグの効率と柔軟性を向上させることができる。
【００６１】
（第４の実施形態）
実装方法によっては、デバッグ回路を有効にした場合と無効にした場合とでプログラムを実行する際のクロックサイクル数（実行サイクル数）が異なってくることが考えられる。これは、デバッグ回路を追加した際にアクセス要求に新たな信号を追加したことに起因している。実行サイクル数が異なると、デバッグ回路を有効にした場合に特定のサイクルパターンに陥って問題が表面化しないが、製品出荷時にデバッグ回路を無効にした場合に問題が表面化するという事態が発生する可能性がある。
【００６２】
そこで、アービタ回路１３による調停結果をランダムに変更する機構があるとデバッグ回路を有効にした場合の実行サイクル数が実行回毎に異なるため、特定のサイクルパターンに陥って問題が表面化しないという事態が発生する可能性を減らすことが可能となる。第４の実施形態では、アクセス競合の調停時にランダム要素を取り入れたアービタ回路１３の構成例について示している。
【００６３】
図８は、本発明の第４の実施形態に係るアービタ回路１３の構成を示すブロック図である。アービタ回路１３は、ランダム変数生成回路１３Ａ、３つの排他的論理和（ＸＯＲ）回路１３Ｂ〜１３Ｄ、優先度判定回路１３Ｅ、及びセレクタ１３Ｆを備えている。
【００６４】
ランダム変数生成回路１３Ａは、ランダム信号を生成する。プロセッサコアが３つの場合、ランダム変数生成回路１３Ａは、２ビット×３＝６ビットのランダム信号を生成する。この６ビットのランダム信号は、優先度判定回路１３Ｅに送られる。
【００６５】
優先度判定回路１３Ｅは、６ビットのランダム信号を２ビット毎に分けて使用する。そして、優先度判定回路１３Ｅは、３つの２ビットデータを３つのプロセッサコアにそれぞれ対応づけ、これら２ビットデータをプロセッサコアを調停する際の優先度を決めるために使用する。例えば、優先度判定回路１３Ｅは、２ビットデータの値の大きな順に高い優先度であると判定する。
【００６６】
２ビットデータが同じ値である場合には、優先度判定回路１３Ｅは、２ビットデータとプロセッサコア番号とをＸＯＲし、このＸＯＲされたデータの値の大きな順に高い優先度であると判定する。具体的には、ＸＯＲ回路１３Ｂにはプロセッサコア１１−１に対応する「２’ｂ００」が入力され、ＸＯＲ回路１３Ｃにはプロセッサコア１１−２に対応する「２’ｂ０１」が入力され、ＸＯＲ回路１３Ｄにはプロセッサコア１１−３に対応する「２’ｂ１０」が入力されている。また、ＸＯＲ回路１３Ｂ〜１３Ｄにはそれぞれ、ランダム変数生成回路１３Ａからの２ビットデータが入力されている。優先度判定回路１３Ｅは、ＸＯＲ回路１３Ｂ〜１３Ｄの出力を用いて、優先度を判定する。
【００６７】
続いて、優先度判定回路１３Ｅは、判定結果に基づいた選択信号をセレクタ１３Ｆに送る。セレクタ１３Ｆは、選択信号に基づいて、アクセス競合したアクセス要求のいずれか１つを選択する。このようにして、アービタ回路１３は、優先度判定回路１３Ｅが判定した優先度の順にアクセス競合の調停を行うことができる。アービタ回路１３により調停されたアクセス要求は、２次キャッシュ１４及び違反検出回路２４−１〜２４−３に送られる。
【００６８】
以上詳述したように本実施形態によれば、アクセス要求が競合した場合の調停結果をアービタ回路１３がランダムに変更することができる。これにより、デバッグ回路を有効にした場合の実行サイクル数を実行回毎に変化させることができるため、特定のサイクルパターンに陥って問題が表面化しないという事態が発生する可能性を減らすことができる。この結果、製品出荷後に発生する可能性がある違反アクセスを、製品出荷前に検出することが可能となる。
【００６９】
（第５の実施形態）
プロセッサコアは、実際に使用するかどうかが確定していないデータを事前に取得するために、共有メモリのメモリ領域に対してプリフェッチを行ってアクセスすることも可能である。しかし、プリフェッチ動作により共有メモリから１次キャッシュにデータを取ってくると、このデータには実際に使用されないデータが含まれている可能性が高いため、この使用されないデータに起因する違反アクセスが増加してしまう。
【００７０】
そこで、第５の実施形態では、プリフェッチによるアクセスとプリフェッチではないアクセスとを区別して制御する。そして、共有メモリのメモリ領域に対するプリフェッチによる読み出しアクセスが違反アクセスとなる場合に、そのプリフェッチ処理をキャンセル（無効化）するようにしている。
【００７１】
図９は、本発明の第５の実施形態に係るマルチプロセッサシステムの構成を示すブロック図である。このマルチプロセッサシステムは、第１の実施形態の構成に比べて、アクセス要求がプリフェッチであることを識別するプリフェッチ識別信号ＰＦＩが、アービタ回路１３からフィードバックされるアクセス要求に追加される。また、違反アクセスがプリフェッチによるものである場合、この違反アクセスに対応するプロセッサコアの１次キャッシュに、違反処理回路１６がプリフェッチ無効信号ＰＦＣを送るパスが追加される。
【００７２】
図１０は、違反検出回路２４の構成を示すブロック図である。違反検出回路２４には、フィードバックパスを介して、アービタ回路１３で調停されたアクセス要求（チップイネーブルＣＥ、プロセッサコア番号ＰＣＮ、リード／ライト識別信号、２次キャッシュ直接アクセス／１次キャッシュリフィルアクセス識別信号、アクセス先アドレス、１次キャッシュ書き込み識別信号ＣＷＩ、及びプリフェッチ識別信号ＰＦＩが送られる。これらの信号は、レジスタ２４Ｄに格納される。すなわち、プリフェッチ識別信号ＰＦＩは、レジスタ２４Ｄに保持された後、違反処理回路１６に送られる。その他の構成は、図３に示した構成と同じである。
【００７３】
図１１は、違反処理回路１６の構成を示すブロック図である。違反処理回路１６は、プリフェッチ（ＰＦ）無効信号生成回路１６Ｅを備えている。ＰＦ無効信号生成回路１６Ｅは、プリフェッチ識別信号ＰＦＩ、違反検出信号ＶＤ、及び違反を検出するきっかけとなるアクセスを行ったプロセッサコアのプロセッサコア番号ＡＰＣＮを受ける。
【００７４】
ＰＦ無効信号生成回路１６Ｅは、違反処理回路１６により検出された違反アクセスがプリフェッチによるものである場合、プロセッサコア番号ＡＰＣＮに対応するプロセッサコアの１次キャッシュ２１に対するプリフェッチ無効信号ＰＦＣをアサートする。プリフェッチ無効信号ＰＦＣがアサートされたプロセッサコアでは、その時点で行っているプリフェッチ処理を無効化する。
【００７５】
なお、アービタ回路１３から違反検出回路２４にフィードバックされるアクセス要求の転送は、２次キャッシュ１４からのデータ読み出しよりも高速に行われる。また、ＰＦ無効信号生成回路１６Ｅは、２次キャッシュ１４からのプリフェッチによる読み出しデータが１次キャッシュ２１に到着する前に、プリフェッチ処理を無効化する準備を完了する。
【００７６】
以上詳述したように本実施形態によれば、実際に使用するかどうかが確定していないデータを共有メモリからプリフェッチし、このプリフェッチに起因するアクセスに違反が検出された場合に、このプリフェッチ処理を無効化することができる。これにより、違反アクセスの誤検出を避けることができる。また、実際に使用するかどうかが確定していないデータに起因して発生した違反アクセスに対してデバッグを行う必要がない。
【００７７】
なお、共有メモリからプリフェッチする予定であったデータは、１次キャッシュ１４に格納されないことになる。しかし、このデータを実際に使用する際にプリフェッチ以外の通常のアクセス要求により再度読み出せば問題はない。
【００７８】
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００７９】
【図１】本発明の第１の実施形態に係るマルチプロセッサシステムの構成を示すブロック図。
【図２】図１に示した１次キャッシュ２１の構成を示すブロック図。
【図３】図２に示した違反検出回路２４の構成を示すブロック図。
【図４】図１に示した違反処理回路１６の構成を示すブロック図。
【図５】本発明の第２の実施形態に係るマルチプロセッサシステムの構成を示すブロック図。
【図６】図５に示した違反処理回路１６の構成を示すブロック図。
【図７】本発明の第３の実施形態に係る違反処理回路１６の構成を示すブロック図。
【図８】本発明の第４の実施形態に係るアービタ回路１３の構成を示すブロック図。
【図９】本発明の第５の実施形態に係るマルチプロセッサシステムの構成を示すブロック図。
【図１０】図９に示した違反検出回路２４の構成を示すブロック図。
【図１１】図９に示した違反処理回路１６の構成を示すブロック図。
【符号の説明】
【００８０】
１１…プロセッサコア、１２…バス、１３…アービタ回路、１３Ａ…ランダム変数生成回路、１３Ｂ〜１３Ｄ…排他的論理和（ＸＯＲ）回路、１３Ｅ…優先度判定回路、１３Ｆ…セレクタ、１４…２次キャッシュメモリ、１５…主記憶装置、１６…違反処理回路、１６Ａ…違反情報レジスタ、１６Ｂ…割り込み回路、１６Ｃ…割り込み設定レジスタ、１６Ｄ…セレクタ、１６Ｅ…プリフェッチ（ＰＦ）無効信号生成回路、２１…１次キャッシュメモリ、２２…タグ格納部、２３…データ格納部、２４…違反検出回路、２４Ａ…判定回路、２４Ｂ…比較回路、２４Ｃ…ＡＮＤ回路、２４Ｄ…レジスタ、２５…データキャッシュ制御回路、２６…ダーティービット遷移検出回路、２６Ａ，２６Ｂ…ＡＮＤ回路、２７…デバッグ切替回路、２７Ａ…レジスタ。
【図１】
2008250373.tif 000003
【図２】
2008250373.tif 000004
【図３】
2008250373.tif 000005
【図４】
2008250373.tif 000006
【図５】
2008250373.tif 000007
【図６】
2008250373.tif 000008
【図７】
2008250373.tif 000009
【図８】
2008250373.tif 000010
【図９】
2008250373.tif 000011
【図１０】
2008250373.tif 000012
【図１１】
2008250373.tif 000013