(57)【要約】【課題】少ないＡＰＵで不正なメモリアクセスを検出すること。【解決手段】本発明の一つの実施形態によれば、情報処理装置は、１つの共有メモリと、複数のプロセッサと、ルータ群と、アドレス保護装置とを備える。前記複数のプロセッサは、アクセス先アドレスとアクセス種類とを含む前記共有メモリへのメモリアクセス要求を記述したメモリアクセスパケットを生成する。前記ルータ群は、前記共有メモリに接続されている第１ルータと、前記第１ルータと前記複数のプロセッサとの間の転送経路を形成する第２ルータとを備え、前記複数のプロセッサが生成したメモリアクセスパケットを前記共有メモリに転送する。前記アドレス保護装置は、前記第１ルータを通過するメモリアクセスパケットを検査して違反メモリアクセスを検出する。【選択図】図１
2013196167.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリと、
前記共有メモリへのメモリアクセス要求を行う複数のプロセッサと、
前記共有メモリに接続されている第１ルータと、前記第１ルータと前記複数のプロセッサとの間の転送経路を形成する第２ルータとを備え、前記複数のプロセッサからのメモリアクセス要求を前記共有メモリに転送するルータ群と、
前記第１ルータに接続され、前記第１ルータに入力されたメモリアクセス要求のパケットを検査して違反メモリアクセスを検出するアドレス保護装置と、
を備える情報処理装置。
【請求項２】
前記アドレス保護装置は、メモリアクセスの許可条件または禁止条件が１以上登録される設定情報を記憶する設定情報記憶部を備え、前記メモリアクセス要求が前記許可条件または禁止条件に該当するか否かに基づいて違反メモリアクセスを検出する、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサは、通常のメモリアクセス要求を行う第１のパケット、または、メモリアクセス違反を検出するための禁止条件または許可条件の設定を行う第２のパケットを生成する、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ルータ群は、前記第１ルータを複数備え、
前記夫々の第１ルータは、違反メモリアクセスの検出対象とするメモリ領域が互いに排他的に設定された異なるアドレス保護装置が接続され、  前記第２ルータは、
入力されたパケットのアクセス先アドレスが前記アドレス保護装置の設定されたメモリ領域に属するかに基づいて、次の転送先ルータを選択する、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記複数のプロセッサは、夫々、前記共有メモリへのメモリアクセス要求を生成するプロセッサコアと、キャッシュメモリと、前記プロセッサコアのメモリアクセス要求が前記キャッシュメモリにヒットした場合に、擬似メモリアクセス要求のパケットを生成して送信するパケット生成器と、を備え、
前記第１ルータは、前記擬似メモリアクセス要求のパケットが入力されたとき、前記入力された擬似メモリアクセスパケットを前記アドレス保護装置に転送する、
ことを特徴とする請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【０００２】
近年、半導体集積回路の製造プロセス技術の進歩によりシステムＬＳＩが高集積化できるようになってきており、１チップに搭載されるプロセッサ数が増加する傾向にある。一方、バスをベースとしたシステムでは、バスに接続できるプロセッサ数に制約が生じることが多い。また、プロセッサ間でのデータや制御の増加に伴い、バスへのアクセスがシステム全体の性能のボトルネックになることもある。この問題を改善する方法の１つとして、ネットワークオンチップ（ＮｏＣ）がある。ＮｏＣでは、各プロセッサはルータを介して接続され、パケットによりデータや制御の通信を実現する。
【０００３】
また、プロセッサからの不正なメモリアクセスを検出する機構として、アドレス保護装置（Ａｄｄｒｅｓｓ  Ｐｒｏｔｅｃｔｉｏｎ  Ｕｎｉｔ；ＡＰＵ）を搭載することがある。ＡＰＵには、あらかじめ許可する（または禁止する）メモリアクセスが、内部に保持するテーブルに登録される。ＡＰＵは、プロセッサからメモリアクセスがあった際にそのテーブルを参照し、そのメモリアクセスが許可しないものであれば違反として検出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１１０５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、少ないＡＰＵで不正なメモリアクセスを検出することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、情報処理装置は、１つの共有メモリと、複数のプロセッサと、ルータ群と、アドレス保護装置とを備える。前記複数のプロセッサは、アクセス先アドレスとアクセス種類とを含む前記共有メモリへのメモリアクセス要求を記述したメモリアクセスパケットを生成する。前記ルータ群は、前記共有メモリに接続されている第１ルータと、前記第１ルータと前記複数のプロセッサとの間の転送経路を形成する第２ルータとを備え、前記複数のプロセッサが生成したメモリアクセスパケットを前記共有メモリに転送する。前記アドレス保護装置は、前記第１ルータを通過するメモリアクセスパケットを検査して違反メモリアクセスを検出する。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１の実施形態のＮｏＣの構成を説明する図。
【図２】パケット仕様の例を示す図。
【図３】パケット仕様の例を示す図。
【図４】ＡＰＵのマッピング例を説明する図。
【図５】ＡＰＵに接続されるルータの構成を示す図。
【図６】ＡＰＵの構成を示す図。
【図７】設定情報記憶部に格納される設定情報のデータ構造例を示す図。
【図８】違反検出器の構成を示す図。
【図９】ルータが具備するパケット復号器の動作を説明するフローチャート。
【図１０】ＡＰＵが具備するパケット復号器の動作を説明するフローチャート。
【図１１】ＡＰＵが具備する違反検出器の動作を説明するフローチャート。
【図１２】不要な情報が含まれている通常パケットを示す図。
【図１３】共有キャッシュメモリに接続されている第２の実施形態のルータの構成を説明する図。
【図１４】第２の実施形態のルータが具備するパケット復号器の動作を示すフローチャート。
【図１５】第２の実施形態のルータが具備するパケット生成器の動作を示すフローチャート。
【図１６】第３の実施形態のＡＰＵの構成を示す図。
【図１７】第４の実施形態のプロセッサの構成を示す図。
【図１８】ダミー通常パケットの仕様の一例を示す図。
【図１９】第５の実施形態のＮｏＣの構成を示す図。
【図２０】第５の実施形態のプロセッサの構成を示す図。
【図２１】第５の実施形態の設定パケットを示す図。
【図２２】夫々ＡＰＵに接続されている複数のルータに転送可能な、第５の実施形態のルータの構成を示す図。
【図２３】夫々ＡＰＵに接続されている複数のルータに転送可能な、第５の実施形態のルータの動作を説明する図。
【発明を実施するための形態】
【０００８】
以下に図面を参照して、実施形態にかかる情報処理装置を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。ここでは、本発明の実施形態の情報処理装置をＮｏＣに適用した場合について説明するが、実施形態の情報処理装置は、複数チップに分割されて構成される情報処理システムに対しても適用することができる。
【０００９】
（第１の実施形態）
図１は、本発明の第１の実施形態の情報処理装置としてのＮｏＣの構成例を説明する図である。図１のＮｏＣ１は、プロセッサ１０ａ〜１０ｄ、ルータ２０ａ〜２０ｃ、ＡＰＵ３０、共有キャッシュメモリ４０、バス５０、およびメインメモリ６０を備えている。
【００１０】
プロセッサ１０ａ，１０ｂは、ルータ２０ａに接続されており、プロセッサ１０ｃ，１０ｄは、ルータ２０ｂに接続されている。また、ルータ２０ａ，２０ｂは、ルータ２０ｃに接続されている。また、ルータ２０ｃは共有キャッシュメモリ４０に接続されており、共有キャッシュメモリ４０はバス５０を介してメインメモリ６０に接続されている。
【００１１】
ここで、共有キャッシュメモリ４０に接続されているルータ２０ｃを第１ルータとし、第１ルータとプロセッサ１０ａ〜１０ｄとの間の転送経路を形成するルータ２０ａ，２０ｂを第２ルータとする。第１の実施形態においては、第１ルータは１つだけ用意されているとともに、ルータ群（ルータ２０ａ〜２０ｃ）は閉道を含まず、第１ルータを根ノードとし、第２ルータを葉ノードとする木構造を構成する。なお、図１のＮｏＣ１の第２ルータは２つだが、これに限らない。また、第２ルータの葉ノードは、複数階層で構成されてもよい。また、第２ルータに接続されるプロセッサ数は、１以上である。
【００１２】
メインメモリ６０は、プロセッサ１０ａ〜１０ｄの情報処理結果のデータ、情報処理のための初期値、プロセッサ１０ａ〜１０ｄを制御する所定のプログラム等、各種のデータを記憶する記憶装置である。
【００１３】
プロセッサ１０ａ〜１０ｄは、例えばメインメモリ６０にロードされた所定のプログラムに基づいて情報処理を実行し、情報処理結果のデータをメインメモリ６０に格納する。
【００１４】
共有キャッシュメモリ４０は、プロセッサ１０ａ〜１０ｄによるメインメモリ６０へのアクセス時間を削減するために設けられた、メインメモリ６０よりも高速かつ小容量の記憶装置であって、メインメモリ６０をアクセス先としたプロセッサ１０ａ〜１０ｄからのリード／ライトデータをキャッシュしている。
【００１５】
ＡＰＵ３０は、プロセッサからのメモリアクセス違反を検出する。ＡＰＵ３０は、第１ルータであるルータ２０ｃに接続されている。プロセッサ１０ａ〜１０ｄからのメモリアクセスは全て、ルータ２０ｃを通過するため、ＡＰＵ３０は全てのメモリアクセス違反を検出することができる。
【００１６】
メモリアクセス要求のパケットの仕様例を、図２および図３に示す。
図２に示すパケットは、通常のメモリアクセスで生成されるパケット（以下、通常パケットという。）である。通常パケットには、アクセス先アドレス、アクセスの種類およびアクセス元ＩＤが記述される。アクセス元ＩＤは、プロセッサ１０ａ〜１０ｄを識別する識別子であって、どのプロセッサからのメモリアクセス要求であるかを特定することができる。
【００１７】
図３に示すパケットは、ＡＰＵ３０でメモリアクセス違反を検出するために条件設定を行うパケット（以下、設定パケットという。）である。設定パケットは、アクセス先アドレスと、禁止条件または許可条件と、アクセス元ＩＤとが記述される。禁止条件として、アクセス禁止領域の開始アドレス、アクセス禁止領域の終了アドレス、違反アクセス種類のうちの１つが記述される。違反アクセス種類には、リードおよびライトが存在し、当該項目は例えば２値情報で表現される。なお、ここでは、設定パケットに禁止条件が記述されている例について説明するが、許可条件が記述されるようにしてもよい。
【００１８】
ここで、ＡＰＵ３０は、ＮｏＣ１のアドレス空間上にマッピングされている。したがって、ＡＰＵ３０に対するアクセスは、プロセッサ１０ａ〜１０ｄからＡＰＵ３０がマッピングされている番地にアクセスすることで実現される。
図４は、ＡＰＵ３０のマッピング例を説明する図である。アクセス禁止領域の開始アドレスが0x400000番地に、アクセス禁止領域の終了アドレスが0x400004番地に、違反アクセス種類が0x400008番地に、夫々マッピングされている。即ち、設定パケットに記述されるアクセス先アドレスには、0x400000、0x400004、0x400008のうちの禁止条件に対応する番地が使用される。なお、図４のアクセス先アドレスおよび違反検出アクセス種類は、違反メモリアクセスの検出ログが格納されるレジスタ（後述するレジスタ３４２）のアドレスを示すものであって、例えばデバッグ時に参照される。図４では、アクセス先アドレスは0x40000c番地にマッピングされており、この番地には、違反メモリアクセスがなされたアクセス先アドレスが格納される。また、違反検出アクセス種類は0x400010番地にマッピングされており、この番地には、検出した違反メモリアクセスがリードであったかライトであったかを示す２値情報が格納される。
【００１９】
なお、アクセス禁止領域（開始アドレスおよび終了アドレス）、違反アクセス種類、アクセス先アドレス、および違反検出アクセス種類を１セットとし、複数セット分の項目がＮｏＣ１のアドレス空間にマッピングされている。即ち、図４は、複数セット分のうちの１セットを示している。
【００２０】
図５は、ルータ２０ｃの構成図である。ルータ２０ｃは、２つの入力ポート２１，２２と、３つの出力ポート２３〜２５を持つ。入力ポート２１は、ルータ２０ａが接続されており、入力ポート２２は、ルータ２０ｂが接続されている。即ち、入力ポートは、直接接続される第２ルータの数だけ備える。出力ポート２３および出力ポート２４はＡＰＵ３０に接続されており、出力ポート２５は共有キャッシュメモリ４０に接続されている。また、ルータ２０ｃは、パケット復号器２６を備えている。
【００２１】
パケット復号器２６は、入力ポート２１、２２のいずれかにパケットが到着すると、そのパケットを復号化し、アクセス先のアドレス情報を抽出する。そして、パケット復号器２６は、抽出したアドレス情報に基づいて、そのパケットが設定パケットであるか通常パケットであるかを判定する。設定パケットであった場合、当該パケットを出力ポート２４に転送し、通常パケットであった場合、当該パケットを出力ポート２３，２５に転送する。
【００２２】
図６は、ＡＰＵ３０の構成図である。ＡＰＵ３０は、入力ポート３１，３２を備えている。入力ポート３１は、ルータ２０ｃの出力ポート２３に接続され、入力ポート３２は、ルータ２０ｃの出力ポート２４に接続されている。また、ＡＰＵ３０は、パケット振り分け器３３、違反検出器３４、およびエントリ登録器３５を備えている。
【００２３】
パケット振り分け器３３は、ルータ２０ｃから入力ポート３１または入力ポート３２を介して転送されてきたパケットを受け付ける。パケット振り分け器３３は、受け付けたパケットが通常パケットであれば、当該通常パケットを違反検出器３４に転送し、受け付けたパケットが設定パケットであれば、当該設定パケットをエントリ登録器３５に転送する。パケット振り分け器３３は、受け付けたパケットが通常パケットであるか設定パケットであるかを、転送されてきた際に経由した入力ポートに基づいて判断する。
【００２４】
エントリ登録器３５は、違反検出ルールを記述した設定情報を格納する設定情報記憶部３６を備えている。
図７は、設定情報記憶部３６に格納される設定情報のデータ構成例を示す図である。設定情報は、アクセス禁止領域の開始アドレス、終了アドレスとアクセス種類とを備えるエントリが登録されるテーブルを有している。即ち、各エントリには、禁止条件または許可条件が登録される。ここでは、禁止条件のみが登録されるものとして説明する。
【００２５】
エントリ登録器３５は、設定パケットの設定情報にエントリを登録する。なお、設定情報を構成するエントリが具備する夫々のフィールドは、ＮｏＣ１のアドレス空間にマッピングされている。例えば、エントリ１が図４のセットに対応するものとすると、エントリ１の開始アドレス、終了アドレス、アクセス種類の各フィールドは、0x400000番地、0x400004番地、0x400008番地にマッピングされている。エントリ登録器３５は、設定パケットのアクセス先アドレスに基づいて登録先のフィールドを決定し、記述されている設定情報を登録する。
【００２６】
図８は、違反検出器３４の構成図である。違反検出器３４は、判定器３４１およびレジスタ３４２を備えている。レジスタ３４２は、検出された違反メモリアクセスのアクセス先アドレスおよび違反アクセス種類を違反メモリアクセス毎に記録するレジスタである。レジスタ３４２におけるアクセス先アドレスおよび違反アクセス種類の格納位置は、夫々アドレス空間にマッピングされており、対応するアドレスにアクセスすることによって所望の違反メモリアクセスの内容を参照することができる。
【００２７】
判定器３４１は、通常パケットが入力されると、当該通常パケットのアクセス先アドレスとアクセス種類とのセットと、設定情報記憶部３６に格納されている設定情報とを比較して、通常パケットが違反メモリアクセスに該当するか否かを判定する。違反メモリアクセスに該当すると判定した場合、判定器３４１は、当該通常パケットのアクセス先アドレスとアクセス種類とをレジスタ３４２に格納する。
【００２８】
次に、図９〜図１１を参照して、第１の実施形態のＮｏＣ１の動作を説明する。
図９は、ルータ２０ｃが具備するパケット復号器２６の動作を説明するフローチャートである。プロセッサ１０ａ〜１０ｄがパケットを発行すると、当該パケットは、ルータ２０ａまたはルータ２０ｂを介してルータ２０ｃに入力される。パケット復号器２６は、入力されたパケットからアクセス先アドレスの抽出を行う（Ｓ１）。そして、パケット復号器２６は、抽出したアクセス先アドレスがＡＰＵ３０宛て（即ちＡＰＵ３０がマッピングされたアドレス）であるか否かを判定する（Ｓ２）。当該アクセス先アドレスがＡＰＵ３０宛てであった場合（Ｓ２、Ｙｅｓ）、当該パケットは設定パケットであるので、パケット復号器２６は、当該設定パケットを出力ポート２３に転送し（Ｓ３）、動作を終了する。一方、抽出したアクセス先アドレスがＡＰＵ３０宛てではなかった場合（Ｓ２、Ｎｏ）、当該パケットは通常パケットであるので、パケット復号器２６は、当該通常パケットを出力ポート２４および出力ポート２５に転送し（Ｓ４）、動作を終了する。
【００２９】
図１０は、ＡＰＵ３０が具備するパケット振り分け器３３の動作を説明するフローチャートである。パケット振り分け器３３は、パケットがルータ２０ｃから転送されると、当該パケットが入力ポート３１または入力ポート３２から入力されたかを判定する（Ｓ１１）。入力ポート３２から前記パケットが入力された場合（Ｓ１１、Ｙｅｓ）、当該パケットは通常パケットであるので、パケット振り分け器３３は、当該パケットを違反検出器３４へ転送し（Ｓ１２）、動作を終了する。入力ポート３１から前記パケットが入力された場合（Ｓ１１、Ｎｏ）、当該パケットは設定パケットであるので、パケット振り分け器３３は、当該パケットをエントリ登録器３５へ転送し（Ｓ１３）、動作を終了する。
【００３０】
図１１は、ＡＰＵ３０が具備する違反検出器３４の動作を説明するフローチャートである。違反検出器３４は、通常パケットを受信すると、設定情報記憶部３６に格納されているエントリを参照し（Ｓ２１）、通常パケットのアクセス先アドレスが設定されているアクセス禁止領域に含まれているか否かを判定する（Ｓ２２）。前記アクセス先アドレスがアクセス禁止領域に含まれている場合（Ｓ２２、Ｙｅｓ）、違反検出器３４は、通常パケットのアクセス種類が参照したエントリのアクセス種類と合致するか否かをさらに判定する（Ｓ２３）。アクセス種類が合致する場合（Ｓ２３、Ｙｅｓ）、違反検出器３４は、当該通常パケットのアクセス先アドレスとアクセス種類とをレジスタ３４２に出力し（Ｓ２４）、動作を終了する。
【００３１】
通常パケットのアクセス先アドレスが参照したエントリのアクセス禁止領域に含まれない場合（Ｓ２２、Ｎｏ）、またはアクセス種類が合致しない場合（Ｓ２３、Ｎｏ）、違反検出器３４は、設定情報を構成する全エントリを参照済みであるか否かを判定する（Ｓ２５）。全エントリを参照済みである場合には（Ｓ２５、Ｙｅｓ）、違反検出器３４は、動作を終了する。未参照のエントリが存在する場合には（Ｓ２５、Ｎｏ）、違反検出器３４は、Ｓ２１の処理に制御を移して、未参照のエントリを新たに参照する。
【００３２】
第１の実施形態と比較される技術（以下、比較例）について説明する。比較例として、各プロセッサにＡＰＵを備える木構造のＮｏＣが考えられる。ＡＰＵは個々に、接続されているプロセッサの違反メモリアクセスを検出する。この場合、プロセッサ毎に違反メモリアクセスを検出することができる。
【００３３】
しかしながら、比較例では、１つのプロセッサに対して１つのＡＰＵが備えるため、プロセッサの数だけＡＰＵが必要となる。これに対して、本発明の第１の実施形態のＮｏＣでは、パケットは根ノードとなるルータ２０ｃを通るため、ルータ２０ｃにのみＡＰＵ３０を備えていれば、全ての違反メモリアクセスを検出することができる。即ち、本発明の第１の実施形態によれば、比較例に対し、少ないＡＰＵで違反メモリアクセスを検出することができる。
【００３４】
なお、以上の説明においては、設定情報を構成する夫々のエントリに含まれる設定項目は設定項目毎にアドレス空間にマッピングされているとしているが、設定情報を構成する要素をどのような粒度でアドレス空間にマッピングするかは設計者の自由である。少なくともエントリ毎にアドレス空間にマッピングしておくと、許可条件や禁止条件を複数設定できる。また、夫々のエントリをアドレス空間にマッピングする代わりに、設定パケットと通常パケットとを識別できるようにフラグを付しておいてもよい。
【００３５】
本発明の第１の実施形態によれば、ＮｏＣ１は、共有キャッシュメモリ４０に接続されている唯一のルータであるルータ２０ｃに通常パケットに記述されているメモリアクセス要求を検査して違反メモリアクセスの有無を検出するＡＰＵ３０を接続するように構成したので、少ないＡＰＵで不正なメモリアクセスを検出することができる。
【００３６】
また、ＡＰＵ３０は、設定パケットに記述されているアクセス先アドレスに記述されている許可条件または禁止条件を登録する、ようにしたので、簡単な仕組みでプロセッサ１０ａ〜１０ｄから設定情報を登録できる。
【００３７】
また、ルータ２０ｃは、入力されたパケットに記述されているアクセス先アドレスが設定情報に含まれるアドレスであるか否かに基づいて入力されたパケットが通常パケットであるか設定パケットであるかを判定し、入力されたパケットが通常パケットである場合、当該通常パケットを共有キャッシュメモリ４０およびＡＰＵ３０の両方に転送し、入力されたパケットが設定パケットである場合、当該設定パケットをＡＰＵ３０に転送し、ＡＰＵ３０は、転送されてきた設定パケットに記述されている許可条件または禁止条件を設定情報に登録するようにした。これにより、ＡＰＵ３０は、ルータ２０ｃに入力された設定パケットに基づいて設定情報を取得できるようになる。
【００３８】
また、ＡＰＵ３０は、検出した違反メモリアクセスの内容を格納する、アドレス空間にマッピングされているレジスタ３４２を備える、ようにしたので、デバッグ時などに、対応するアドレスを指定することによって違反メモリアクセスの検出結果を取得することができる。
【００３９】
（第２の実施形態）
一般に、プロセッサが生成するパケットには、プロトコル仕様のバージョン情報やパケットの優先度など、違反メモリアクセスを検出する際に不要な情報が含まれている場合がある。図１２は、当該不要な情報が含まれている通常パケットを示す図であり、「その他」の記述が不要な情報に該当する。
【００４０】
このように通常パケットに不要な情報が含まれる場合には、共有キャッシュメモリに接続されている第１ルータにおいて、当該不要な情報を削除したパケットを生成するようにするとよい。
図１３は、第２の実施形態のルータ７０の構成図である。ルータ７０は、入力ポート２１，２２、出力ポート２３〜２５、パケット復号器７１、パケット生成器７２を備えている。なお、第１の実施形態と同じ構成には同一の符号を付して、重複する説明を省略する。
【００４１】
図１４は、パケット復号器７１の動作示すフローチャートである。パケット復号器７１は、入力ポート２１または入力ポート２２からパケットを受信すると、入力されたパケットからアクセス先アドレスの抽出を行う（Ｓ３１）。そして、パケット復号器７１は、抽出したアクセス先アドレスがＡＰＵ３０宛てであるか否かを判定する（Ｓ３２）。当該アクセス先アドレスがＡＰＵ３０宛てであった場合（Ｓ３２、Ｙｅｓ）、当該パケットは設定パケットであるので、パケット復号器７１は、当該設定パケットを出力ポート２３に転送し（Ｓ３３）、動作を終了する。一方、抽出したアクセス先アドレスがＡＰＵ３０宛てではなかった場合（Ｓ３２、Ｎｏ）、当該パケットは通常パケットであるので、パケット復号器７１は、当該通常パケットをパケット生成器７２および出力ポート２５に転送し（Ｓ３４）、動作を終了する。
【００４２】
図１５は、パケット生成器７２の動作を示すフローチャートである。パケット生成器７２は、Ｓ３４の処理により通常パケットが入力されると、入力されたパケットから「その他」の内容を削除して新たなパケットを生成する（Ｓ４１）。そして、パケット生成器７２は、生成したパケットを出力ポート２４に転送し（Ｓ４２）、動作を終了する。
【００４３】
このように、第２の実施形態によれば、ルータ７０は、通常パケットに違反メモリアクセスを検出するための情報のほかに不要な情報が含まれていた場合であっても、当該不要な情報を削除することで、ＡＰＵ３０に登録可能な形式のパケットを生成することができる。
【００４４】
（第３の実施形態）
第３の実施形態は、違反メモリアクセスが検出された際に、当該違反メモリアクセスを行ったプロセッサに違反メモリアクセスを行った旨を通知する。
【００４５】
図１６は、第３の実施形態のＡＰＵの構成図である。第３の実施形態のＡＰＵ８０は、入力ポート３１，３２、出力ポート８２、パケット振り分け器３３、違反検出器３４、エントリ登録器３５、およびパケット生成器８１を備えている。
【００４６】
パケット生成器８１は、違反検出器３４に接続されており、違反検出器３４が違反メモリアクセスを検出した際、違反メモリアクセスを行ったプロセッサを宛先とし、違反メモリアクセスを検出した旨を記述したパケットを生成する。そして、当該生成したパケットを出力ポート８２に送信する。出力ポート８２は、ルータ２０ｃに接続されており、パケットは違反メモリアクセスを行ったプロセッサに送信される。
【００４７】
本発明の第３の実施形態によれば、ＡＰＵ８０は、検出した違反メモリアクセスを行ったプロセッサを宛先として当該違反メモリアクセスを検出した旨を記述した通知パケットを生成するパケット生成器８１を備える、ようにしたので、プロセッサ１０ａ〜１０ｄは、違反メモリアクセスを行った際には違反メモリアクセスを行ったことを認識することができる。
【００４８】
（第４の実施形態）
プロセッサ内部にキャッシュメモリを有する場合には、メモリアクセスがそのキャッシュメモリにヒットすると、プロセッサの外にパケットが出力されない。したがって、第１の実施形態の構成では、ＡＰＵはメモリアクセス要求がプロセッサから出力されない違反メモリアクセスの検出を行うことができない。
【００４９】
そこで、第４の実施形態は、プロセッサにダミーのパケットをプロセッサの外に送信する仕組みを具備する。ダミーのパケットは、プロセッサ内部のキャッシュメモリにヒットした場合に送信される。
図１７は、第４の実施形態のプロセッサの構成図である。プロセッサ１１は、プロセッサコア１２、キャッシュメモリ１３、パケット生成器１４、出力ポート１５を備えている。
【００５０】
出力ポート１５は、ルータに接続されている。プロセッサコア１２は、情報処理を行い、メインメモリ６０にアクセスする際には、メモリアクセス要求を発行する。キャッシュメモリ１３は、共有キャッシュメモリ４０あるいはメインメモリ６０へのアクセス時間を削減するためにプロセッサ１１内部に設けられたキャッシュメモリである。パケット生成器１４は、プロセッサコア１２が発行したメモリアクセス要求がキャッシュメモリ１３にヒットした場合には、当該メモリアクセス要求を記述したダミー通常パケットを生成して、出力ポート１５に送信する。また、パケット生成器１４は、メモリアクセス要求がキャッシュメモリ１３にヒットしなかった場合には、通常パケットを生成して、トを出力ポート１５に送信する。
【００５１】
図１８は、ダミー通常パケットの仕様例を示す図である。ダミー通常パケットは、図２に示した通常パケットにダミーアクセスフラグが付加された構成を有している。
【００５２】
なお、第１ルータが具備するパケット復号器２６は、受信したパケットがダミー通常パケットであった場合、当該ダミー通常パケットを出力ポート２５に転送しないで、出力ポート２４にのみ転送するようにしてもよい。
【００５３】
本発明の第４の実施形態によれば、プロセッサ１１は、メモリアクセス要求がキャッシュメモリ１３にヒットした場合に、当該メモリアクセス要求を記述したダミー通常パケットを生成して、ルータに送信するパケット生成器１４を備え、当該ダミー通常パケットはＡＰＵ３０に転送される、ようにしたので、プロセッサ内部にキャッシュメモリを備える場合であっても違反メモリアクセスを検出できる。
【００５４】
（第５の実施形態）
図１９は、第５の実施形態のＮｏＣ３の構成図である。第５の実施形態のＮｏＣ３は、プロセッサ１２０ａ〜１２０ｈと、ルータ９０−１ａ，９０−１ｂ，９０−２ａ〜９０−２ｄと、共有キャッシュメモリ４０と、バス５０と、メインメモリ６０と、ＡＰＵ１１０ａおよびＡＰＵ１１０ｂとを備えている。
【００５５】
ルータ９０−１ａおよびルータ９０−１ｂ（第１ルータ）は、共有キャッシュメモリ４０に接続されている。また、ルータ９０−１ａ，９０−１ｂはともに、ルータ９０−２ａ〜９０−２ｄ（第２ルータ）が接続されている。ルータ９０−２ａは、プロセッサ１２０ａおよびプロセッサ１２０ｂが、ルータ９０−２ｂは、プロセッサ１２０ｃおよびプロセッサ１２０ｄが、ルータ９０−２ｃは、プロセッサ１２０ｅおよびプロセッサ１２０ｆが、ルータ９０−２ｄは、プロセッサ１２０ｇおよびプロセッサ１２０ｈが、夫々接続されている。即ち、ルータ９０−１ａ、９０−１ｂ、９０−２ａ〜９０−２ｄはグラフ構造を形成する。なお、グラフ構造のうちの閉道を持たない構造が木構造に分類される。
【００５６】
ＡＰＵ１１０ａは、ルータ９０−１ａに接続され、ＡＰＵ１１０ｂは、ルータ９０−１ｂに接続されている。ＡＰＵ１１０ａ、１１０ｂの内部の構成は、第１の実施形態と同じであるので、説明を省略する。但し、ＡＰＵ１１０ａとＡＰＵ１１０ｂとの違反メモリアクセスの検出対象とするメモリ領域が互いに重複しないように（即ち排他的に）、夫々のメモリ領域が予め静的に定められているものとする。例えば、ＡＰＵ１１ａは0x0〜0x7fffffff番地のメモリ領域ａを、ＡＰＵ１１０ｂは0x80000000〜0xffffffff番地のメモリ領域ｂを違反メモリアクセスの検出対象とし、少なくとも一部をアクセス禁止領域として設定される。また、ＡＰＵ１１０ａ、ＡＰＵ１１０ｂにマッピングされるアドレスも静的に定められているものとする。
【００５７】
図２０は、第５の実施形態のプロセッサ１２０の構成図である。プロセッサ１２０ａ〜１２０ｈは接続先のルータを除いて夫々同じ構成を備えている。
プロセッサ１２０は、プロセッサコア１２１、パケット生成器１２２、および出力ポート１２３を備えている。出力ポート１２３は、ルータ９０−２に接続されている。プロセッサコア１２１は、メインメモリ６０にアクセスする際には、メモリアクセス要求の通常パケットを発行し、ＡＰＵ１１０ａまたはＡＰＵ１１０ｂの条件設定を行う際には、禁止条件または許可条件を記述した設定パケットを発行する。パケット生成器１２２は、メモリアクセス要求を受信すると、当該メモリアクセス要求にアクセス元ＩＤを付与するなどして通常パケットを生成する。また、パケット生成器１２２は、設定パケットを受信すると、ＡＰＵ設定要求にアクセス元ＩＤを付与するなどして第２の設定パケットを生成する。なお、第５の実施形態においては、図３に示した設定パケットを第１の設定パケットということとする。
【００５８】
図２１は、第２の設定パケットを示す図である。第２の設定パケットは、ＡＰＵ設定フラグと、禁止条件、アクセス種類およびアクセス元ＩＤが記述されている。禁止条件は、アクセス禁止領域の開始アドレスおよび終了アドレスである。ＡＰＵ設定フラグは、ＡＰＵに対する条件設定を行うパケットであることを示すフラグである。
【００５９】
ルータ９０−２は、ＡＰＵが夫々接続されているルータ９０−１ａ，９０−１ｂの両方をパケットの転送先とすることができる。また、ＡＰＵ１１０ａ，１１０ｂは、違反メモリアクセスの検出対象とするメモリ領域が互いに異なる。そこで、ルータ９０−２は、受信したパケットに記載されているアクセス先アドレスまたはアクセス禁止領域がどちらのメモリ領域であるかに基づいて、パケットの転送先を切り替える。
【００６０】
図２２は、ルータ９０−２の構成図である。ルータ９０−２は、入力ポート９１，９２、出力ポート９３，９４、パケット復号器９５およびパケット変換器９６を備えている。入力ポート９１，９２は異なるプロセッサ１２０に、出力ポート９３はルータ９０−１ａに、出力ポート９４はルータ９０−１ｂに、夫々接続されている。
【００６１】
パケット復号器９５は、入力されたパケットのうち、第２の設定パケットをパケット変換器９６に転送する。また、パケット復号器９５は、入力されたパケットのうち通常パケットを、記載されているアクセス先アドレスに基づいて出力ポート９３または９４に転送する。
【００６２】
パケット変換器９６は、第２の設定パケットから変換した第１の設定パケットを出力ポート９３または９４に転送する。パケット変換器９６は、記載されているアクセス禁止領域がメモリ領域ａとメモリ領域ｂのどちらに含まれているかにより決める。なお、第２の設定パケットは、設定項目として、アクセス禁止領域の開始アドレスおよび終了アドレスとアクセス種類とを含んでいる。したがって、１つの第２の設定パケットの変換により３つの第１の設定パケットが生成される。
【００６３】
図２３は、ルータ９０−２の動作を説明する図である。
パケットがルータ９０−２に入力されると、パケット復号器９５は、当該パケットにＡＰＵ設定フラグの有無を確認して、ＡＰＵ宛ての第２の設定パケットであるか否かを判定する（Ｓ５１）。
【００６４】
入力されたパケットがＡＰＵ宛ての第２の設定パケットであった場合（Ｓ５１、Ｙｅｓ）、パケット変換器９６は、第２の設定パケットに記述されているアクセス禁止領域がメモリ領域ａとメモリ領域ｂとを跨いでいるか否かを判定する（Ｓ５２）。アクセス禁止領域がメモリ領域ａとメモリ領域ｂとを跨いでいる場合（Ｓ５２、Ｙｅｓ）、パケット変換器９６は、第２の設定パケットを変換して、メモリ領域ａにアクセス禁止領域を設定するパケットとメモリ領域ｂにアクセス禁止領域を設定するパケットとの２つの第１の設定パケットを生成する（Ｓ５３）。具体的には、パケット変換器９６は、アクセス禁止領域をメモリ領域ａに含まれている領域とメモリ領域ｂに含まれている領域とに分割して、分割したアクセス禁止領域を夫々新たなアクセス禁止領域とする第１の設定パケットを生成する。その後、パケット変換器９６は、メモリ領域ａにアクセス禁止領域を設定する第１の設定パケットを一方のルータ９０−１ａに、メモリ領域ｂにアクセス禁止領域を設定する第１の設定パケットを他方のルータ９０−１ｂに転送し（Ｓ５４）、動作を終了する。
【００６５】
また、第２の設定パケットに記述されているアクセス禁止領域がメモリ領域ａとメモリ領域ｂとを跨いでいない場合（Ｓ５２、Ｎｏ）、パケット変換器９６は、アクセス禁止領域がメモリ領域ａに含まれているか否かをさらに判定する（Ｓ５５）。アクセス禁止領域がメモリ領域ａに含まれている場合（Ｓ５５、Ｙｅｓ）、パケット変換器９６は、第２の設定パケットを変換して第１の設定パケットを生成し（Ｓ５６）、第１の設定パケットをルータ９０−１ａに転送し（Ｓ５７）、動作を終了する。アクセス禁止領域がメモリ領域ａに含まれていない場合（Ｓ５５、Ｎｏ）、パケット変換器９６は、第２の設定パケットを変換して第１の設定パケットを生成し（Ｓ５８）、第１の設定パケットをルータ９０−１ｂに転送し（Ｓ５９）、動作を終了する。
【００６６】
一方、ルータ９０−２に入力されたパケットがＡＰＵ宛てではなかった場合（Ｓ５１、Ｎｏ）、即ちパケットが通常パケットであった場合、パケット復号器９５は、通常パケットに記述されているアクセス先アドレスがメモリ領域ａに含まれているか否かをさらに判定する（Ｓ６０）。アクセス先アドレスがメモリ領域ａに含まれている場合（Ｓ６０、Ｙｅｓ）、パケット復号器９５は、通常パケットをルータ９０−１ａに転送し（Ｓ６１）、動作を終了する。アクセス先アドレスがメモリ領域ａに含まれていない場合（Ｓ６０、Ｎｏ）、パケット復号器９５は、通常パケットをルータ９０−１ｂに転送し（Ｓ６２）、動作を終了する。
【００６７】
図２２のルータ９０−２の構成は、ＡＰＵが接続されているルータ９０−１の両方に直接、パケットを転送可能なルータを示している。
なお、ルータ９０−１に直接接続されたルータ９０−２が別のルータ９０−２からパケットを送信される場合、当該別のルータ９０−２にパケット復号器９５およびパケット変換器９６を搭載するようにしてもよい。すなわち、プロセッサとルータ９０−１間に経由するルータ９０−２のいずれかにパケット復号器９５およびパケット変換器９６が搭載されていればよい。また、ルータ９０−１にパケット復号器９５およびパケット変換器９６を搭載し、ルータ９０−２に、メモリ領域ａおよびメモリ領域ｂのうちのどちらをアクセス先またはメモリ禁止領域の設定対象としているかに基づいて転送先を決定する機能を搭載するようにしてもよい。
【００６８】
本発明の第５の実施形態によれば、ＡＰＵが接続されている複数のルータ９０−１に転送可能なルータ９０−２は、通常パケットが指定するアクセス先アドレスがどのＡＰＵが違反メモリアクセスの検出対象のメモリ領域に属するかに基づいて、前記通常パケットを経由させるルータをルータ９０ｅおよびルータ９０ｆのうちから１つ選択する、ようにしたので、共有キャッシュメモリ４０に直接接続されているルータ９０−１が複数存在する場合であっても当該ルータ９０−１にＡＰＵを配設することで不正なメモリアクセスを検出することができるので、少ないＡＰＵで不正なメモリアクセスを検出することができる。
【００６９】
また、ルータ９０−２は、第２の設定パケットに記述されている許可条件または禁止条件が指定する領域がどのＡＰＵが違反メモリアクセスの検出対象のメモリ領域に属するかに基づいて、第１の設定パケットの転送先のルータを選択する、ようにしたので、ＡＰＵが接続されたルータが複数存在する場合でも設定パケットを設定対象のＡＰＵに転送することができる。
【００７０】
また、ルータ９０−２は、アクセス先アドレスを指定する記述を含まない第２の設定パケットを禁止条件または許可条件の登録先がマッピングされているアクセス先アドレスを付加した第１の設定パケットに変換するパケット変換器９６を備える、ようにしたので、プロセッサ１２０は、ＡＰＵ１１０がマッピングされているアドレスを知らなくてもＡＰＵ１１０に禁止条件または許可条件を設定することができる。
【００７１】
このように、第１〜第５の実施形態によれば、グラフ構造を形成するルータ群のうち、メインメモリ６０に最も近いルータ（共有キャッシュメモリ４０に接続されているルータ）にＡＰＵを接続し、当該ルータを通過するメモリアクセスをＡＰＵが検査するようにしたので、少ないＡＰＵで不正なメモリアクセスを検出することができる。
【００７２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７３】
１〜３  ＮｏＣ、１０ａ〜１０ｄ、１１、１２０ａ〜１２０ｈ  プロセッサ、１２、１２１  プロセッサコア、１３  キャッシュメモリ、１４、７２、８１、１２２  パケット生成器、２０ａ〜２０ｃ、９０−１ａ、９０−１ｂ、９０−２ａ〜９０−２ｄ、１００  ルータ、２１、２２、３１、３２、９１、９２  入力ポート、１５、２３、２４、２５、８２、９３、９４、１２３  出力ポート、２６、３３、７１、９５  パケット復号器、３４  違反検出器、３５  エントリ登録器、３６  設定情報記憶部、４０  共有キャッシュメモリ、５０  バス、６０  メインメモリ、９６  パケット変換器、３４１  判定器、３４２  表示器。
【図１】
2013196167.tif 000003
【図２】
2013196167.tif 000004
【図３】
2013196167.tif 000005
【図４】
2013196167.tif 000006
【図５】
2013196167.tif 000007
【図６】
2013196167.tif 000008
【図７】
2013196167.tif 000009
【図８】
2013196167.tif 000010
【図９】
2013196167.tif 000011
【図１０】
2013196167.tif 000012
【図１１】
2013196167.tif 000013
【図１２】
2013196167.tif 000014
【図１３】
2013196167.tif 000015
【図１４】
2013196167.tif 000016
【図１５】
2013196167.tif 000017
【図１６】
2013196167.tif 000018
【図１７】
2013196167.tif 000019
【図１８】
2013196167.tif 000020
【図１９】
2013196167.tif 000021
【図２０】
2013196167.tif 000022
【図２１】
2013196167.tif 000023
【図２２】
2013196167.tif 000024
【図２３】
2013196167.tif 000025