(57)【要約】  情報処理システムの処理を高速化する。  半導体集積回路（１１）が、半導体集積回路（１１，１２）のそれぞれが用いるメモリ（１４，１５）のアドレスが定義されたメモリマップ情報（１１ｍ）に基づいて、データ送信先である半導体集積回路（１２）に接続されたメモリ（１５）のアドレス（ａ１）を指定し、アドレス（ａ１）を、データ送信先で参照されるメモリマップ情報（１２ｍ）において定義されるメモリ（１５）のアドレス（ａ３）に変換し、アドレス（ａ３）と送信データとを、ＰＣＩｅインタフェース（１１ｄ）を用いて出力し、スイッチ（１３）が、アドレス（ａ３）と送信データとを、ＰＣＩｅインタフェース（１３ａ，１３ｂ）を用いてデータ送信先に転送し、データ送信先が、ＰＣＩインタフェース（１２ｄ）を用いて、アドレス（ａ３）と送信データとを受信し、アドレス（ａ３）に対応するメモリ（１５）の受信バッファ領域に送信データを書き込む。
2018101136.tif 000002
【特許請求の範囲】
【請求項１】
複数の半導体集積回路のそれぞれが用いる各メモリのアドレスが定義された第１のメモリマップ情報に基づいて、前記複数の半導体集積回路の１つであるデータ送信先に接続された第１のメモリの第１のアドレスを指定し、前記第１のアドレスを、前記データ送信先で参照される第２のメモリマップ情報において定義される前記第１のメモリの第２のアドレスに変換し、前記第２のアドレスと送信データとを、前記データ送信先からの応答を待たずに連続的な送信が可能なバスインタフェースを用いて出力する第１の半導体集積回路と、
前記第２のアドレスと前記送信データとを、前記バスインタフェースを用いて前記データ送信先に転送するスイッチと、
前記データ送信先であり、前記バスインタフェースを用いて、前記第２のアドレスと前記送信データとを受信し、前記第２のアドレスに対応する前記第１のメモリの受信バッファ領域に前記送信データを書き込む第２の半導体集積回路と、
を有することを特徴とする情報処理システム。
【請求項２】
前記第１のメモリマップ情報には、前記複数の半導体集積回路のそれぞれにおいて割り込み設定値が設定される各記憶回路のアドレスがさらに定義されており、
前記第１の半導体集積回路は、前記第１のメモリマップ情報に基づいて、前記データ送信先において前記割り込み設定値が設定される第１の記憶回路の第３のアドレスを指定し、前記第３のアドレスを、前記第２のメモリマップ情報において定義される前記第１の記憶回路の第４のアドレスに変換し、前記第４のアドレスと前記割り込み設定値とを、前記バスインタフェースを用いて出力し、
前記スイッチは、前記第４のアドレスと前記割り込み設定値とを、前記バスインタフェースを用いて前記データ送信先に転送し、
前記第２の半導体集積回路は、前記バスインタフェースを用いて、前記第４のアドレスと前記割り込み設定値とを受信し、前記第４のアドレスに対応する前記第１の記憶回路に前記割り込み設定値を書き込み、前記割り込み設定値に基づいて、前記送信データの受信の終了を判定する、
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記スイッチは、第１のスイッチと、前記第１のスイッチと前記バスインタフェースを用いて情報の送受信を行う第２のスイッチとを含み、
前記第２のアドレス、前記第４のアドレス、前記送信データ及び前記割り込み設定値は、前記第１のスイッチと前記第２のスイッチとを介して前記第２の半導体集積回路に転送される、
ことを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記スイッチは、前記第２のアドレス及び前記第４のアドレスを、前記複数の半導体集積回路のうち、第３の半導体集積回路が参照する第３のメモリマップ情報において定義される、前記第３の半導体集積回路に接続された第２のメモリの第５のアドレスと、前記第３の半導体集積回路において前記割り込み設定値が設定される第２の記憶回路の第６のアドレスに変換する、ことを特徴とする請求項２または３に記載の情報処理システム。
【請求項５】
前記受信バッファ領域には、前記複数の半導体集積回路のそれぞれに対応したバッファ領域が、それぞれ異なるアドレスで指定されるように設定されている、ことを特徴とする請求項１乃至４の何れか一項に記載の情報処理システム。
【請求項６】
前記第１の半導体集積回路は、前記第１のアドレスを指定する第１の制御回路と、前記第１のアドレスを前記第２のアドレスに変換する第１のアドレス変換回路と、前記バスインタフェースとを有する、ことを特徴とする請求項１乃至５の何れか一項に記載の情報処理システム。
【請求項７】
前記第２の半導体集積回路は、第２の制御回路と、前記割り込み設定値に基づいて、前記送信データの受信が終了したことを示す割り込み信号を前記第２の制御回路に通知する割り込み制御回路と、を有することを特徴とする請求項２乃至６の何れか一項に記載の情報処理システム。
【請求項８】
前記第１のメモリマップ情報は、
前記複数の半導体集積回路のうち、前記第１のメモリマップ情報を参照する半導体集積回路に接続されたメモリのアドレスを定義する第１のアドレス空間と、
前記第１のメモリマップ情報を参照する半導体集積回路以外の他の半導体集積回路に接続されたメモリのアドレスを定義する第２のアドレス空間と、
前記第１のメモリマップ情報を参照する半導体集積回路の割り込み設定値が設定される記憶回路のアドレスを定義する第３のアドレス空間と、
前記他の半導体集積回路の割り込み設定値が設定される記憶回路のアドレスを定義する第４のアドレス空間と、
を含むことを特徴とする請求項２乃至７の何れか一項に記載の情報処理システム。
【請求項９】
前記データ送信先からの応答を待たずに連続的な送信が可能な前記バスインタフェースは、ＰＣＩｅインタフェースであることを特徴とする請求項１乃至８の何れか一項に記載の情報処理システム。
【請求項１０】
前記複数の半導体集積回路のうちの２つ以上には、前記複数の半導体集積回路のそれぞれが用いる各メモリよりも容量が大きい第３のメモリが接続されている、請求項１乃至９の何れか一項に記載の情報処理システム。
【請求項１１】
前記複数の半導体集積回路のうちの２つ以上には、特定機能向けＬＳＩが接続されている、請求項１乃至１０の何れか一項に記載の情報処理システム。
【請求項１２】
複数の半導体集積回路のそれぞれが用いる各メモリのアドレスが定義された第１のメモリマップ情報に基づいて、前記複数の半導体集積回路の１つであるデータ送信先に接続された第１のメモリの第１のアドレスを指定する制御回路と、
前記第１のアドレスを、前記データ送信先で参照される第２のメモリマップ情報において定義される前記第１のメモリの第２のアドレスに変換するアドレス変換回路と、
前記第２のアドレスと送信データとを出力する、前記データ送信先からの応答を待たずに連続的な送信が可能な第１のバスインタフェースと、
を有することを特徴とする半導体集積回路。
【請求項１３】
前記第１のメモリマップ情報には、前記複数の半導体集積回路のそれぞれにおいて割り込み設定値が設定される各記憶回路のアドレスがさらに定義されており、
前記制御回路は、前記第１のメモリマップ情報に基づいて、前記データ送信先において前記割り込み設定値が設定される第１の記憶回路の第３のアドレスを指定し、
前記アドレス変換回路は、前記第３のアドレスを、前記第２のメモリマップ情報において定義される前記第１の記憶回路の第４のアドレスに変換し、
前記第１のバスインタフェースは、前記第４のアドレスと前記割り込み設定値とを出力する、ことを特徴とする請求項１２に記載の半導体集積回路。
【請求項１４】
前記第１のバスインタフェースは、他の半導体集積回路から、前記第１のメモリマップ情報において定義される第２のメモリの第５のアドレスと、書き込みデータとを受信し、前記第５のアドレスに対応する前記第２のメモリの受信バッファ領域に前記書き込みデータを書き込む、ことを特徴とする請求項１２または１３に記載の半導体集積回路。
【請求項１５】
割り込み設定値が設定される第２の記憶回路をさらに有し、
前記第１のバスインタフェースは、前記他の半導体集積回路から出力された、前記第１のメモリマップ情報において定義される前記第２の記憶回路の第６のアドレスと、前記割り込み設定値とを受信し、前記第６のアドレスに対応する前記第２の記憶回路に前記割り込み設定値を書き込み、
前記制御回路は、前記割り込み設定値に基づいて、前記書き込みデータの受信の終了を判定する、ことを特徴とする請求項１４に記載の半導体集積回路。
【請求項１６】
前記割り込み設定値に基づいて、前記書き込みデータの受信が終了したことを示す割り込み信号を前記制御回路に通知する割り込み制御回路をさらに有する、ことを特徴とする請求項１５に記載の半導体集積回路。
【請求項１７】
前記第１のメモリマップ情報は、
前記第２のメモリのアドレスを定義する第１のアドレス空間と、
前記第１のメモリのアドレスを定義する第２のアドレス空間と、
前記第２の記憶回路のアドレスを定義する第３のアドレス空間と、
前記第１の記憶回路のアドレスを定義する第４のアドレス空間と、
を含む、ことを特徴とする請求項１２乃至１６の何れか一項に記載の半導体集積回路。
【請求項１８】
前記複数の半導体集積回路のそれぞれが用いる各メモリよりも容量が大きい第３のメモリ、または、特定機能向けＬＳＩと接続可能な第２のバスインタフェースを含む、ことを特徴とする請求項１２乃至１７の何れか一項に記載の半導体集積回路。
【請求項１９】
第１の半導体集積回路が、
複数の半導体集積回路のそれぞれが用いる各メモリのアドレスが定義された第１のメモリマップ情報に基づいて、前記複数の半導体集積回路の１つであるデータ送信先に接続された第１のメモリの第１のアドレスを指定し、前記第１のアドレスを、前記データ送信先で参照される第２のメモリマップ情報において定義される前記第１のメモリの第２のアドレスに変換し、前記第２のアドレスと送信データとを、前記データ送信先からの応答を待たずに連続的な送信が可能なバスインタフェースを用いて出力し、
スイッチが、
前記第２のアドレスと前記送信データとを、前記バスインタフェースを用いて前記データ送信先に転送し、
前記データ送信先である第２の半導体集積回路が、
前記バスインタフェースを用いて、前記第２のアドレスと前記送信データとを受信し、前記第２のアドレスに対応する前記第１のメモリの受信バッファ領域に前記送信データを書き込む、
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、半導体集積回路及び情報処理方法に関する。
【背景技術】
【０００２】
情報処理システムの複雑化や大規模化に伴い、複数のＳｏＣ（System on Chip）を含む情報処理システムが提案されている。複数のＳｏＣを含む情報処理システムの１つとして、複数のＣＰＵ（Central Processing Unit）をネットワークで接続し、各ＣＰＵによる並列処理を実現するＣＰＵクラスタが提案されている。【０００３】
なお、従来、イーサネット（登録商標）スイッチを用いて複数のサーバを接続する際に、イーサネットスイッチのハードウェアを削減するために、ＰＣＩｅ（Peripheral Component Interconnect express）を用いる技術があった。また、ＰＣＩｅスイッチを用いて、複数のプロセッサを接続し、あるプロセッサが他のプロセッサに接続されるメモリにアクセスする技術があった。また、データセンタ内のサーバ間通信に、イーサネットの代わりにＰＣＩｅを用いることが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７４８０３０３号明細書
【特許文献２】米国特許出願公開第２０１５／００６７２２９号明細書
【特許文献３】国際公開第２０１３／１３６５２２号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
高速な処理が可能なＣＰＵクラスタを実現するために、クラスタ構成を密結合クラスタとすることが考えられる。密結合クラスタでは、共有メモリやプロセス間通信が用いられ、各ＣＰＵが連携処理を行う。複数のＣＰＵを接続するネットワークについては、比較的低コストで高速通信が可能なイーサネットを用いることが考えられる。しかし、イーサネットを用いる場合、送信元は送信先からの応答信号の受信を待ってからでないと次の送信を行えないなどのプロトコルオーバヘッドなどが存在し、密結合クラスタの高速化を制限してしまう問題があった。
【課題を解決するための手段】
【０００６】
発明の一観点によれば、複数の半導体集積回路のそれぞれが用いる各メモリのアドレスが定義された第１のメモリマップ情報に基づいて、前記複数の半導体集積回路の１つであるデータ送信先に接続された第１のメモリの第１のアドレスを指定し、前記第１のアドレスを、前記データ送信先で参照される第２のメモリマップ情報において定義される前記第１のメモリの第２のアドレスに変換し、前記第２のアドレスと送信データとを、前記データ送信先からの応答を待たずに連続的な送信が可能なバスインタフェースを用いて出力する第１の半導体集積回路と、前記第２のアドレスと前記送信データとを、前記バスインタフェースを用いて前記データ送信先に転送するスイッチと、前記データ送信先であり、前記バスインタフェースを用いて、前記第２のアドレスと前記送信データとを受信し、前記第２のアドレスに対応する前記第１のメモリの受信バッファ領域に前記送信データを書き込む第２の半導体集積回路と、を有する情報処理システムが提供される。【０００７】
また、発明の一観点によれば、複数の半導体集積回路のそれぞれが用いる各メモリのアドレスが定義された第１のメモリマップ情報に基づいて、前記複数の半導体集積回路の１つであるデータ送信先に接続された第１のメモリの第１のアドレスを指定する制御回路と、前記第１のアドレスを、前記データ送信先で参照される第２のメモリマップ情報において定義される前記第１のメモリの第２のアドレスに変換するアドレス変換回路と、前記第２のアドレスと送信データとを出力する、前記データ送信先からの応答を待たずに連続的な送信が可能な第１のバスインタフェースと、を有する半導体集積回路が提供される。【０００８】
また、発明の一観点によれば、第１の半導体集積回路が、複数の半導体集積回路のそれぞれが用いる各メモリのアドレスが定義された第１のメモリマップ情報に基づいて、前記複数の半導体集積回路の１つであるデータ送信先に接続された第１のメモリの第１のアドレスを指定し、前記第１のアドレスを、前記データ送信先で参照される第２のメモリマップ情報において定義される前記第１のメモリの第２のアドレスに変換し、前記第２のアドレスと送信データとを、前記データ送信先からの応答を待たずに連続的な送信が可能なバスインタフェースを用いて出力し、スイッチが、前記第２のアドレスと前記送信データとを、前記バスインタフェースを用いて前記データ送信先に転送し、前記データ送信先である第２の半導体集積回路が、前記バスインタフェースを用いて、前記第２のアドレスと前記送信データとを受信し、前記第２のアドレスに対応する前記第１のメモリの受信バッファ領域に前記送信データを書き込む、情報処理方法が提供される。
【発明の効果】
【０００９】
情報処理システムの処理を高速化できる。
本発明の上記及び他の目的、特徴及び利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の情報処理システムの一例を示す図である。
【図２】第２の実施の形態の情報処理システムの一例を示す図である。
【図３】メモリマップ情報の一例を示す図である。
【図４】各ＳＯＣのＤＲＡＭ上の共用領域の一例を示す図である。
【図５】受信バッファ領域に格納されるパケットデータの一例を示す図である。
【図６】情報処理システムによる送信制御の一例の流れを示すフローチャートである。
【図７】情報処理システムによる受信制御（読み出し制御）の一例の流れを示すフローチャートである。
【図８】第３の実施の形態の情報処理システムの一例を示す図である。
【図９】第４の実施の形態の情報処理システムの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の情報処理システムの一例を示す図である。
【００１２】
情報処理システム１０は、半導体集積回路１１，１２、スイッチ１３、メモリ１４，１５を有する。
半導体集積回路１１，１２、スイッチ１３は、たとえば、それぞれ１チップのＳｏＣである。図１では、説明を簡単にするために、２つの半導体集積回路１１，１２と１つのスイッチ１３が図示されているが、この数に限定されるものではない。３つ以上の半導体集積回路と２つ以上のスイッチを有する情報処理システムの例については後述する。
【００１３】
半導体集積回路１１は、制御回路１１ａ、割り込み制御回路１１ｂ、アドレス変換回路１１ｃ、ＰＣＩｅインタフェース（Ｉ／Ｆ）１１ｄ、システムバス１１ｅを有する。また、半導体集積回路１１には、メモリ１４が接続されている。
【００１４】
制御回路１１ａは、システムバス１１ｅを介して半導体集積回路１１の各部を制御して、種々のアプリケーション処理を実行する。制御回路１１ａは、たとえば、マイクロコントローラ、ＣＰＵ、複数のＣＰＵコアを有するＣＰＵなどである。
【００１５】
割り込み制御回路１１ｂは、図示しない記憶回路（以下割り込み設定レジスタと呼ぶ）に設定される割り込み設定値に基づいて、割り込みの発生を制御回路１１ａに通知する。
アドレス変換回路１１ｃは、複数の半導体集積回路１１，１２のそれぞれが用いるメモリ１４，１５のアドレスなどが定義されたメモリマップ情報１１ｍ，１２ｍに基づいて、アドレス変換を行う。
【００１６】
ＰＣＩｅインタフェース１１ｄは、送信先からの応答を待たずに連続的な送信が可能なバスインタフェースの一例であり、ＰＣＩｅバスを介してスイッチ１３と情報の送受信を行う。
【００１７】
半導体集積回路１２も、半導体集積回路１１と同様に、制御回路１２ａ、割り込み制御回路１２ｂ、アドレス変換回路１２ｃ、ＰＣＩｅインタフェース１２ｄ、システムバス１２ｅを有する。
【００１８】
スイッチ１３は、ＰＣＩｅインタフェース１３ａ，１３ｂと、ＰＣＩｅインタフェース１３ａ，１３ｂを接続するシステムバス１３ｃを有する。
ＰＣＩｅインタフェース１３ａは、半導体集積回路１１のＰＣＩｅインタフェース１１ｄと情報の送受信を行う。
【００１９】
ＰＣＩｅインタフェース１３ｂは、半導体集積回路１２のＰＣＩｅインタフェース１２ｄと情報の送受信を行う。
図１に示すような情報処理システム１０において、ＰＣＩｅインタフェース１１ｄ，１２ｄ，１３ａ，１３ｂが用いられる場合、ＰＣＩｅインタフェース１１ｄ，１２ｄには、半導体集積回路１１，１２がエンドポイントとなるような設定がなされる。また、ＰＣＩｅインタフェース１３ａ，１３ｂには、スイッチ１３がルートコンプレックスになるような設定がなされる。
【００２０】
なお、ＰＣＩｅインタフェース１１ｄ，１２ｄ，１３ａ，１３ｂの代わりに、送信先からの応答を待たずに連続的な送信が可能なバスインタフェースの他の例である、ＵＳＢ（Universal Serial Bus）インタフェースなどを用いてもよい。
【００２１】
メモリ１４，１５はそれぞれ、半導体集積回路１１，１２に接続されたメモリであり、、制御回路１１ａ，１２ａが実行するプログラムや各種データ（受信データなども含む）を記憶する。メモリ１４，１５は、たとえば、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の半導体メモリでもよいし、フラッシュメモリなどの揮発性のストレージでもよい。なお、メモリ１４，１５は、半導体集積回路１１，１２に含まれていてもよい。また、メモリ１４，１５は、それぞれ複数あってもよい。
【００２２】
以下、半導体集積回路１１をデータの送信元、半導体集積回路１２をデータの送信先として、情報処理システム１０の動作の一例を説明する。半導体集積回路１１がデータの送信先、半導体集積回路１２がデータの送信元である場合も同様の処理が行われる。
【００２３】
なお、以下では半導体集積回路１１をＳＯＣ１、半導体集積回路１２をＳＯＣ２と呼ぶ場合もある。
制御回路１１ａは、半導体集積回路１２へのデータの送信の際、図１に示すようなＳＯＣ１のメモリマップ情報１１ｍに基づいて、アドレスの指定を行う。
【００２４】
メモリマップ情報１１ｍには、自ＳＯＣ（つまりＳＯＣ１）のメモリ１４のメモリ空間のアドレスと、他ＳＯＣ（つまりＳＯＣ２）のメモリ１５のメモリ空間のアドレスが定義されている。さらに、メモリマップ情報１１ｍには、自ＳＯＣの割り込み設定レジスタ空間のアドレスと、他ＳＯＣの割り込み設定レジスタ空間のアドレスが定義されている。割り込み設定レジスタ（図示せず）は、たとえば、割り込み制御回路１１ｂ，１２ｂ内に設けられている。
【００２５】
なお、半導体集積回路１２が参照するメモリマップ情報１２ｍにおいても、メモリマップ情報１１ｍと同様に、自ＳＯＣ（つまりＳＯＣ２）のメモリ１５のメモリ空間のアドレスと、他ＳＯＣ（つまりＳＯＣ１）のメモリ空間のアドレスが定義されている。さらに、メモリマップ情報１２ｍには、自ＳＯＣの割り込み設定レジスタ空間のアドレスと、他ＳＯＣの割り込み設定レジスタ空間のアドレスが定義されている。
【００２６】
制御回路１１ａは、半導体集積回路１２へのデータの送信の際、そのデータ（送信データ）を書き込むメモリ１５の、メモリマップ情報１１ｍで定義されているアドレスを指定する。図１では、制御回路１１ａが、メモリマップ情報１１ｍで定義されている他ＳＯＣメモリ空間のアドレスａ１を指定した例が示されている。
【００２７】
アドレス変換回路１１ｃは、制御回路１１ａがアドレスａ１を指定した場合、たとえば、図示しない変換テーブルなどによって、ＳＯＣ２のメモリマップ情報１２ｍで定義されているＳＯＣ２のメモリ空間のアドレスａ３に変換する。ＰＣＩｅインタフェース１１ｄは、変換したアドレスａ３と、送信データとを出力（送信）する。アドレスａ３と送信データは、スイッチ１３により、半導体集積回路１２に転送される。
【００２８】
半導体集積回路１２は、ＰＣＩｅインタフェース１２ｄを用いて、アドレスａ３と送信データとを受信し、そのアドレスに対応するメモリ１５の受信バッファ領域に送信データを書き込む。たとえば、アドレス変換回路１２ｃは、図示しない変換テーブルなどによって、アドレスａ３を、メモリ１５の実際のアドレスに変換する。これにより、そのアドレスから始まるメモリ１５の受信バッファ領域に送信データが書き込まれる。
【００２９】
その後、半導体集積回路１１の制御回路１１ａは、半導体集積回路１２の割り込み設定レジスタの、メモリマップ情報１１ｍで定義されているアドレスを指定する。図１では、制御回路１１ａが、メモリマップ情報１１ｍで定義されている他ＳＯＣレジスタ空間のアドレスａ２を指定した例が示されている。
【００３０】
アドレス変換回路１１ｃは、制御回路１１ａがアドレスａ２を指定した場合、たとえば、図示しない変換テーブルなどによって、ＳＯＣ２のメモリマップ情報１２ｍで定義されているＳＯＣ２の割り込み設定レジスタ空間のアドレスａ４に変換する。ＰＣＩｅインタフェース１１ｄは、変換したアドレスａ４と、割り込みの発生を示す割り込み設定値（たとえば、“１”）とを出力（送信）する。アドレスａ４と割り込み設定値とは、スイッチ１３により、半導体集積回路１２に転送される。
【００３１】
半導体集積回路１２は、ＰＣＩｅインタフェース１２ｄを用いて、アドレスａ４と割り込み設定値とを受信し、そのアドレスに対応する割り込み設定レジスタに割り込み設定値を書き込む。たとえば、アドレス変換回路１２ｃは、図示しない変換テーブルなどによって、アドレスａ４を、割り込み設定レジスタの実際のアドレスに変換する。そのアドレスで指定される割り込み設定レジスタに割り込み設定値が書き込まれる。
【００３２】
割り込み設定レジスタに、割り込みの発生を示す割り込み設定値が書き込まれると、割り込み制御回路１２ｂは、制御回路１２ａに、割り込みが発生した旨を通知する。これにより、制御回路１２ａは、送信データの受信（書き込み）の終了を判定し、メモリ１５の受信バッファ領域に書き込まれた送信データを読み出す。そして、制御回路１２ａは、たとえば、読み出した送信データを用いて、種々のアプリケーション処理を実行する。
【００３３】
以上のように、第１の実施の形態の情報処理システム１０において、半導体集積回路１１は、メモリマップ情報１１ｍに基づいて、複数の半導体集積回路１１，１２の１つであるデータ送信先（半導体集積回路１２）が用いるメモリ１５のアドレスａ１を指定する。そして、半導体集積回路１１は、そのアドレスを、データ送信先で参照されるメモリマップ情報１２ｍにおいて定義されたメモリ１５のアドレスａ３に変換する。そして、半導体集積回路１１は、アドレスａ３と送信データとを、ＰＣＩｅインタフェース１１ｄを用いて出力する。スイッチ１３は、アドレスａ３と送信データとを、ＰＣＩｅインタフェース１３ａ，１３ｂを用いてデータ送信先に転送する。データ転送先である半導体集積回路１２は、ＰＣＩｅインタフェースを用いて、アドレスａ３と送信データとを受信し、アドレスａ３に対応するメモリ１５の受信バッファ領域に送信データの書き込みを行う。
【００３４】
これによって、半導体集積回路１１は、半導体集積回路１２が用いるメモリ１５のアドレスが定義されたメモリマップ情報１１ｍに基づいて、直接そのアドレスを指定した送信（書き込み）処理が可能となる。また、情報処理システム１０では、ＰＣＩｅインタフェース１１ｄ，１２ｄ，１３ａ，１３ｂが用いられているため、半導体集積回路１１は、データ送信先からの応答を待つことなく、データ送信を連続的に行える。以上のことから、情報処理システム１０の処理を高速化できる。
【００３５】
また、スーパコンピュータに用いられるような高価な高速ネットワークを用いなくても済み、比較的安価に密結合、高並列・高性能のＣＰＵクラスタを実現できるようになる。また、消費電力の大きい高性能なＣＰＵを使用しなくて済むため、情報処理システム１０の消費電力を削減できる。
【００３６】
また、半導体集積回路１１は、半導体集積回路１２の割り込み設定レジスタのアドレスが定義されたメモリマップ情報１１ｍに基づいて、直接そのアドレスを指定して割り込み設定値の設定を行う。そして、半導体集積回路１２は、割り込みの発生を示す割り込み設定値が設定されると、受信（書き込み）が終了したと判定し、送信データの読み出しを行う。これによって、パケット受信を契機にデータ読み込み処理を行うようなイーサネットプロトコルを擬似的に再現できる。
【００３７】
（第２の実施の形態）
図２は、第２の実施の形態の情報処理システムの一例を示す図である。
情報処理システム２０は、半導体集積回路２１ａ０，２１ａ１，２１ａｎ，２１ａｎ＋１を含む複数の半導体集積回路と、ＤＲＡＭ２２ａ０，２２ａ１，２２ａｎ，２２ａｎ＋１を含む複数のＤＲＡＭを有する。さらに、２段のスイッチ２３，２４を有する。
【００３８】
半導体集積回路２１ａ０は、ＣＰＵ２１ｂ０、ＩＣＵ（Interrupt Controller Unit）２１ｃ０、ＭＭＵ（Memory Management Unit）２１ｄ０、ＰＣＩｅインタフェース２１ｅ０、システムバス２１ｆ０を有する。また、半導体集積回路２１ａ０には、ＤＲＡＭ２２ａ０が接続されている。
【００３９】
ＣＰＵ２１ｂ０は、図１に示した制御回路１１ａの一例であり、システムバス２１ｆ０を介して半導体集積回路２１ａ０の各部を制御する。
ＩＣＵ２１ｃ０は、図１に示した割り込み制御回路１１ｂの一例であり、割り込みの発生をＣＰＵ２１ｂ０に通知する。
【００４０】
ＭＭＵ２１ｄ０は、図１に示したアドレス変換回路１１ｃの機能を有し、複数のＤＲＡＭのアドレスなどが定義されたメモリマップ情報に基づいて、アドレス変換を行う。
ＰＣＩｅインタフェース２１ｅ０は、送信先からの応答を待たずに連続的な送信が可能なバスインタフェースの一例であり、スイッチ２３と情報の送受信を行う。
【００４１】
半導体集積回路２１ａ１も、半導体集積回路２１ａ０と同様に、ＣＰＵ２１ｂ１、ＩＣＵ２１ｃ１、ＭＭＵ２１ｄ１、ＰＣＩｅインタフェース２１ｅ１、システムバス２１ｆ１を有する。図示を省略しているが、その他の半導体集積回路も同様の要素を有する。
【００４２】
スイッチ２３は、ＰＣＩｅインタフェース２３ａ０，２３ａ１，…，２３ａｎ，２３ａｎ＋１、ＭＭＵ２３ｂ０，２３ｂ１，…，２３ｂｎ，２３ｂｎ＋１、システムバス２３ｃを有する。スイッチ２４は、ＰＣＩｅインタフェース２４ａ１，２４ａ２を含む複数のＰＣＩｅインタフェース、ＭＭＵ２４ｂ１，２４ｂ２を含む複数のＭＭＵ、システムバス２４ｃを有する。
【００４３】
スイッチ２３において、ＰＣＩｅインタフェース２３ａ０〜２３ａｎ＋１は、ＭＭＵ２３ｂ０〜２３ｂｎ＋１を介してシステムバス２３ｃに接続されている。スイッチ２４において、ＰＣＩｅインタフェース２４ａ１，２４ａ２もＭＭＵ２４ｂ１，２４ｂ２を介してシステムバス２４ｃに接続されている。
【００４４】
ＰＣＩｅインタフェース２３ａ０は、半導体集積回路２１ａ０のＰＣＩｅインタフェース２１ｅ０と情報の送受信を行う。ＰＣＩｅインタフェース２３ａ１は、半導体集積回路２１ａ１のＰＣＩｅインタフェース２１ｅ１と情報の送受信を行う。ＰＣＩｅインタフェース２３ａｎは、半導体集積回路２１ａｎのＰＣＩｅインタフェース（図示せず）と情報の送受信を行う。ＰＣＩｅインタフェース２３ａｎ＋１は、スイッチ２４のＰＣＩｅインタフェース２４ａ１と情報の送受信を行う。ＰＣＩｅインタフェース２４ａ２は、半導体集積回路２１ａｎ＋１のＰＣＩｅインタフェース（図示せず）と情報の送受信を行う。
【００４５】
図２に示すような情報処理システム２０では、ＰＣＩｅインタフェース２１ｅ０，２１ｅ１には、半導体集積回路２１ａ０，２１ａ１がエンドポイントとなるような設定がなされる。また、ＰＣＩｅインタフェース２３ａ０〜２３ａｎ，２４ａ１，２４ａ２には、スイッチ２３，２４がルートコンプレックスになるような設定がなされる。また、ＰＣＩｅインタフェース２３ａｎ＋１には、スイッチ２３がエンドポイントとなるような設定がなされる。
【００４６】
ＭＭＵ２３ｂ０は、図示しない変換テーブルなどによって、ＰＣＩｅインタフェース２３ａ０が受信したアドレスを、別のアドレスに変換する機能を有する。ＭＭＵ２３ｂ１は、図示しない変換テーブルなどによって、ＰＣＩｅインタフェース２３ａ１が受信したアドレスを、別のアドレスに変換する機能を有する。ＭＭＵ２３ｂｎは、図示しない変換テーブルなどによって、ＰＣＩｅインタフェース２３ａｎが受信したアドレスを、別のアドレスに変換する機能を有する。ＭＭＵ２３ｂｎ＋１は、図示しない変換テーブルなどによって、ＰＣＩｅインタフェース２３ａｎ＋１が受信したアドレスや、ＰＣＩｅインタフェース２３ａｎ＋１が送信するアドレスを、別のアドレスに変換する機能を有する。ＭＭＵ２４ｂ１は、図示しない変換テーブルなどによって、ＰＣＩｅインタフェース２３ａｎが受信したアドレスを、別のアドレスに変換する機能を有する。ＭＭＵ２４ｂ２は、図示しない変換テーブルなどによって、ＰＣＩｅインタフェース２４ａ２が受信したアドレスを、別のアドレスに変換する機能を有する。
【００４７】
上記の情報処理システム２０では、スイッチ２３に、ｎ＋１個の半導体集積回路２１ａ１〜２１ａｎが接続されている。また、スイッチ２４にも半導体集積回路２１ａｎ＋１を含む複数の半導体集積回路が接続されている。
【００４８】
このため、半導体集積回路２１ａ０がＤＲＡM２２ａｎ＋１にデータの書き込みを行う場合、半導体集積回路２１ａ０が出力する２種類のアドレス、送信データ及び割り込み設定値は、スイッチ２３，２４を介して半導体集積回路２１ａｎ＋１に転送される。
【００４９】
たとえば、物理的な制約などによって、１つのスイッチ２３に接続可能な半導体集積回路の最大数が決まっている場合、図２に示すように、スイッチ２４を追加することにより、多数の半導体集積回路を含む情報処理システム２０を実現できる。なお、図１では、２つのスイッチ２３，２４を有する例が示されているが、スイッチは３つ以上設けられていてもよい。
【００５０】
また、上記の情報処理システム２０では、スイッチ２３，２４にもＭＭＵ２３ｂ０〜２３ｂｎ＋１，２４ｂ１，２４ｂ２が設けられている。
このようなＭＭＵ２３ｂ０〜２３ｂｎ＋１，２４ｂ１，２４ｂ２を設けることで、通信の接続状況を変更することができる。
【００５１】
たとえば、半導体集積回路２１ａ０が、データ送信先（書き込み先）のアドレスとして、半導体集積回路２１ａ１が参照するメモリマップ情報により定義されているＤＲＡＭ２２ａ１のアドレスを出力する場合を考える。このとき、スイッチ２３のＭＭＵ２３ｂ０は、そのアドレスを、たとえば、半導体集積回路２１ａｎが参照するメモリマップ情報により定義されているＤＲＡＭ２２ａｎのアドレスに変換すると、送信データをＤＲＡＭ２２ａｎに書き込ませることができる。ＭＭＵ２３ｂ０は、割り込み設定レジスタのアドレスについても同様の変換を行うことができる。
【００５２】
これにより、たとえば、半導体集積回路２１ａ１とスイッチ２３との接続がなくなった場合にも、他の半導体集積回路を変更せずに、データ送信先を変更できる。つまり通信の接続状況を変更できる。
【００５３】
上記のような情報処理システム２０において、半導体集積回路２１ａ０〜２１ａｎ＋１を含むＮ個の半導体集積回路は、たとえば、以下に示すようなメモリマップ情報に基づいて、書き込み先のアドレス指定を行う。メモリマップ情報は、たとえば、半導体集積回路２１ａ０〜２１ａｎ＋１を含むＮ個の半導体集積回路が用いるメモリ（ＤＲＡＭ２２ａ０）、または、Ｎ個の半導体集積回路のそれぞれの中に設けられたＲＯＭ（Read Only Memory）などに格納されていてもよい。
【００５４】
なお、以下では、半導体集積回路２１ａ０〜２１ａｎ＋１を含むＮ個の半導体集積回路をＳＯＣ［０］〜ＳＯＣ［Ｎ］と表記する。たとえば、半導体集積回路２１ａ０を、ＳＯＣ［０］、半導体集積回路２１ａ１を、ＳＯＣ［１］と表記する。
【００５５】
図３は、メモリマップ情報の一例を示す図である。
ＳＯＣ［０］用のメモリマップ情報３０ａ０には、ＩＣＵレジスタ空間３０ｂ０、ローカルＤＲＡＭ空間３０ｃ０，３０ｄ０，３０ｅ０、ＰＣＩｅバス空間３０ｆ０，３０ｇ０のアドレスが定義されている。
【００５６】
ＩＣＵレジスタ空間３０ｂ０のアドレスは、ＳＯＣ［０］のＩＣＵ２１ｃ０が割り込みの発生をＣＰＵ２１ｂ０に通知するか否かを決定するために用いる割り込み設定値を格納する割り込み設定レジスタのアドレスに対応している。割り込み設定レジスタは、たとえば、ＩＣＵ２１ｃ０に設けられている。
【００５７】
ローカルＤＲＡＭ空間３０ｃ０〜３０ｅ０のアドレスは、ＤＲＡＭ２２ａ０のアドレスに対応している。図３の例では、ローカルＤＲＡＭ空間３０ｃ０〜３０ｅ０は３つある。ローカルＤＲＡＭ空間３０ｃ０は、アドレス０ｘ００００＿８０００＿００００〜０ｘ００００＿ＦＦＦＦ＿ＦＦＦＦで定義される。ローカルＤＲＡＭ空間３０ｃ０は、アドレス０ｘ０００８＿８０００＿００００〜０ｘ０００Ｆ＿ＦＦＦＦ＿ＦＦＦＦで定義される。ＤＲＡＭ空間３０ｅ０は、アドレス０ｘ００８８＿００００＿００００〜０ｘ００８Ｆ＿ＦＦＦＦ＿ＦＦＦＦで定義される。ローカルＤＲＡＭ空間の数は３つに限定されない。
【００５８】
ＰＣＩｅバス空間３０ｆ０のアドレスは、ＰＣＩｅバスで接続される他のＳＯＣ［１］，ＳＯＣ［２］，…，ＳＯＣ［Ｎ］の割り込み設定レジスタのアドレスに対応している。図３の例では、ＰＣＩｅバス空間３０ｆ０は、アドレス０ｘ０００６＿００００＿００００〜０ｘ０００６＿ＦＦＦＦ＿ＦＦＦＦで定義される。ＰＣＩｅバス空間３０ｆ０のアドレスは、ＳＯＣ［１］〜ＳＯＣ［Ｎ］用のメモリマップ情報３０ａ１，３０ａ２，…，３０ａＮで定義されるＩＣＵレジスタ空間３０ｂ１，３０ｂ２〜３０ｂＮのアドレスに対応している。
【００５９】
ＰＣＩｅバス空間３０ｇ０のアドレスは、ＰＣＩｅバスで接続される他のＳＯＣ［１］，ＳＯＣ［２］，…，ＳＯＣ［Ｎ］が用いるメモリ（ＤＲＡＭ２２ａ１など）のアドレスに対応している。図３の例では、ＰＣＩｅバス空間３０ｇ０は、アドレス０ｘ００４０＿００００＿００００〜０ｘ００７Ｆ＿ＦＦＦＦ＿ＦＦＦＦで定義される。ＳＯＣ［１］〜ＳＯＣ［Ｎ］が用いるメモリのアドレスは、メモリマップ情報３０ａ１〜３０ａＮではローカルＤＲＡＭ空間３０ｃ１，３０ｄ１，３０ｅ１，３０ｃ２，３０ｄ２，３０ｅ２，…，３０ｃＮ，３０ｄＮ，３０ｅＮのアドレスとして定義されている。ＰＣＩｅバス空間３０ｇ０のアドレスは、メモリマップ情報３０ａ１〜３０ａＮのローカルＤＲＡＭ空間３０ｅ１〜３０ｅＮのアドレスと対応付けられている。
【００６０】
図３の例では、各メモリマップ情報３０ａ０〜３０ａＮで定義されるローカルＤＲＡＭ空間３０ｅ０〜３０ｅＮは、他のＳＯＣから送信される書き込みデータが書き込まれる受信バッファ領域として機能する。つまり、ローカルＤＲＡＭ空間３０ｅ０〜３０ｅＮは、他のＳＯＣからアクセス可能な共用領域である。
【００６１】
なお、ＳＯＣ［１］〜ＳＯＣ［Ｎ］用のメモリマップ情報３０ａ１〜３０ａＮにおいても、ＰＣＩｅバス空間が定義されているが、図示が省略されている。また、メモリマップ情報３０ａ０〜３０ａＮには、他の周辺機器についてのメモリ空間のアドレスが定義されていてもよい。
【００６２】
図４は、各ＳＯＣのＤＲＡＭ上の共用領域の一例を示す図である。図４では、８つのＳＯＣ［０］〜ＳＯＣ［７］が用いるＤＲＡＭ（ＤＲＡＭ２２ａ０〜２２ａｎ＋１など）上の共用領域の一例が示されている。
【００６３】
ＳＯＣ［０］が用いるＤＲＡＭ２２ａ０上の共用領域には、ＳＯＣ［１］〜ＳＯＣ［７］用の受信バッファ領域が順に設定されている。ＳＯＣ［１］のＤＲＡＭ２２ａ１上の共用領域には、ＳＯＣ［０］，ＳＯＣ［２］〜ＳＯＣ［７］用の受信バッファ領域が順に設定されている。ＳＯＣ［７］のＤＲＡＭ上の共用領域には、ＳＯＣ［０］〜ＳＯＣ［６］用の受信バッファ領域が順に設定されている。
【００６４】
ＳＯＣ［ｎ］のＤＲＡＭ２２ａｎ上の共用領域のＳＯＣ［ｍ］用の受信バッファ領域には、ＳＯＣ［ｍ］が送信する送信データが書き込まれる。各共用領域における受信バッファ領域は、ＳＯＣ［０］〜ＳＯＣ［７］の受信バッファのそれぞれは、異なるアドレスで指定されるように設定されている。つまり、各共用領域における受信バッファの割り当ては固定であり、同一バッファに複数のＳＯＣが書き込みを行うことはない。このため、他のＳＯＣの送信データによる上書きを防止できる。
【００６５】
なお、図４の例では、各共用領域は７分割されているが、Ｎ＝６３の場合には、６３分割されるようにしてもよい。ただ、ソフトウェア実装の観点から扱いやすい、８分割また６４分割としてもよく、ＤＲＡＭ容量に余裕がある場合、余る１領域は不使用状態で放置しておいてもよい。
【００６６】
図５は、受信バッファ領域に格納されるパケットデータの一例を示す図である。図５には、図４に示したＳＯＣ［ｎ］のＤＲＡＭ上の共用領域のＳＯＣ［ｍ］用の受信バッファ領域に格納されるパケットデータの一例が示されている。
【００６７】
受信バッファ領域は、たとえば、それぞれ６４ＫｉＢのｐａｃｋｅｔ＿ｂｕｆ［０］，ｐａｃｋｅｔ＿ｂｕｆ［１］，…，ｐａｃｋｅｔ＿ｂｕｆ［ｉ］，…，ｐａｃｋｅｔ＿ｂｕｆ［ｌａｓｔ］に分割されている。
【００６８】
ｐａｃｋｅｔ＿ｂｕｆ［０］〜ｐａｃｋｅｔ＿ｂｕｆ［ｌａｓｔ］のそれぞれには、以下に示す情報を含むパケットデータが格納される。
パケットデータは、ｖａｌｉｄフィールド、ｌｅｎｇｔｈフィールド、ｐａｄｄｉｎｇ［２］フィールド、ｄａｔａ［６５５２６］フィールドを含む。
【００６９】
ｖａｌｉｄフィールドは、当該パケットデータが有効かつ、ＳＯＣ［ｎ］による受信処理待ちであるか否かを示すｂｏｏｌ型の値を含む。ｖａｌｉｄフィールドには、当該パケットデータが有効かつ、ＳＯＣ［ｎ］による受信処理待ちである場合には１、当該パケットデータが無効の場合には、０が格納される。
【００７０】
ｌｅｎｇｔｈフィールドは、ｄａｔａ［］フィールドに格納されたイーサネットフレームの有効サイズ［ｂｙｔｅｓ］を示す３２ビットの整数型の値を含む。
ｐａｄｄｉｎｇ［２］フィールドは、ｄａｔａ［］フィールドに格納されたイーサネットフレームのＩＰ（Internet Protocol）ヘッダの先頭を４ｂｙｔｅアラインするためのパディングを示す８ビットの整数型の値を含む。
【００７１】
ｄａｔａ［６５５２６］フィールドは、イーサネットフレームデータを示す８ビットの整数型の値を含む。なお、６５５２６は、ｐａｃｋｅｔ＿ｂｕｆ［ｉ］のサイズである６４ＫｉＢから逆算して得られるバイト数である。この結果、最大のＭＴＵ（Maximum Transmission Unit）は６５５１２バイトとなる。
【００７２】
以下、第２の実施の形態の情報処理システム２０の動作の一例を、フローチャートを用いて説明する。
図６は、情報処理システムによる送信制御の一例の流れを示すフローチャートである。
【００７３】
以下では、ＳＯＣ［０］が、ＳＯＣ［１］のメモリ（ＤＲＡＭ２２ａ１）にデータの書き込みを行う場合を例にして説明する。
まず、ＳＯＣ［０］のＣＰＵ２１ｂ０は、書き込み先のアドレスとして、ＳＯＣ［１］用のメモリマップ情報３０ａ１のローカルＤＲＡＭ空間３０ｅ１のアドレスに対応付けられているＰＣＩｅバス空間３０ｇ０のアドレスを指定する（ステップＳ１０）。
【００７４】
なお、ＣＰＵ２１ｂ０は、図５に示したｐａｃｋｅｔ＿ｂｕｆ［０］〜ｐａｃｋｅｔ［ｌａｓｔ］が昇順にアクセスされるようにアドレスを指定する。ｐａｃｋｅｔ［ｌａｓｔ］がアクセスされた後は、ｐａｃｋｅｔ＿ｂｕｆ［０］がアクセスされるようにアドレスが指定される。
【００７５】
図３に示したようなＰＣＩｅバス空間３０ｇ０のアドレスは、ＭＭＵ２１ｄ０によって、送信先のＳＯＣ［１］が参照するメモリマップ情報３０ａ１のローカルＤＲＡＭ空間３０ｅ１のアドレスに変換される（ステップＳ１１）。
【００７６】
次に、ＣＰＵ２１ｂ０は、書き込み先のｖａｌｉｄが０であることを確認する（ステップＳ１２）。
たとえば、ＣＰＵ２１ｂ０は、ＭＭＵ２１ｄ０が変換したアドレスに対する読み出し命令を発行する。そして、ＣＰＵ２１ｂ０は、そのアドレスに対応したＳＯＣ［１］のＤＲＡＭ２２ａ１の共用領域にあるＳＯＣ［０］用の受信バッファ領域のｐａｃｋｅｔ＿ｂｕｆ［ｉ］のｖａｌｉｄの値を、スイッチ２３を介して読み出し、確認する。
【００７７】
なお、図示を省略しているが、ＣＰＵ２１ｂ０は、ｖａｌｉｄの値が１の場合（受信バッファ領域がｆｕｌｌである場合）、たとえば、データ送信を一定期間中断し、一定期間後もｖａｌｉｄの値が１である場合には、送信制御を終了する。
【００７８】
次に、ＣＰＵ２１ｂ０は、書き込み先のｌｅｎｇｈ、ｄａｔａ［］（図５参照）にデータを設定する（データ送信）（ステップＳ１３）。
ＣＰＵ２１ｂ０は、ｌｅｎｇｈ、ｄａｔａ［］として受信バッファ領域に書き込むデータを、ＭＭＵ２１ｄ０が変換したアドレスとともに、ＰＣＩｅインタフェースに出力させる。アドレスとデータは、スイッチ２３によってＳＯＣ［１］に転送される。アドレスは、ＳＯＣ［１］のＭＭＵ２１ｄ１にて、ＤＲＡM２２ａ１の実際のアドレスに変換され、ＳＯＣ［０］用の受信バッファ領域にデータが書き込まれる。
【００７９】
その後、ＣＰＵ２１ｂ０は、ｖａｌｉｄを１に設定する（ステップＳ１４）。ｖａｌｉｄの設定は、ステップＳ１３の処理と同様に行われる。
最後に、ＣＰＵ２１ｂ０は、受信先であるＳＯＣ［１］のＣＰＵ２１ｂ１に送信（書き込み）の終了を知らせるために、ＳＯＣ［１］の割り込み設定レジスタに割り込み設定値を設定する（ステップＳ１５）。
【００８０】
たとえば、ＣＰＵ２１ｂ０は、ＳＯＣ［１］用のメモリマップ情報３０ａ１のＩＣＵレジスタ空間３０ｂ１のアドレスに対応付けられているＰＣＩｅバス空間３０ｆ０のアドレスを指定する。指定されたアドレスは、ＭＭＵ２１ｄ０によって、ＳＯＣ［１］用のメモリマップ情報３０ａ１のＩＣＵレジスタ空間３０ｂ１のアドレスに変換される。そして、そのアドレスと割り込みの発生を示す割り込み設定値（たとえば、“１”）が、ＣＰＵ２１ｂ０の制御のもと、ＰＣＩｅインタフェース２１ｅ０から出力される。アドレスと割り込み設定値は、スイッチ２３によって、ＳＯＣ［１］に転送される。アドレスは、ＳＯＣ［１］のＭＭＵ２１ｄ１にて、割り込み設定レジスタの実際のアドレスに変換され、割り込み設定レジスタに割り込み設定値が書き込まれる。
【００８１】
図７は、情報処理システムによる受信制御（読み出し制御）の一例の流れを示すフローチャートである。
以下では、ＳＯＣ［１］が、受信したデータを読み出す制御について説明する。
【００８２】
ＳＯＣ［１］のＣＰＵ２１ｂ１は、ＩＣＵ２１ｃ１から割り込みの発生を通知されると受信制御（読み出し制御）を開始する。
ＣＰＵ２１ｂ１は、まず、ＤＲＡＭ２２ａ１の共用領域の各ＳＯＣの受信バッファ領域の読み出し位置のｖａｌｉｄが０であるか否かを判定する（ステップＳ２０）。
【００８３】
ｖａｌｉｄが０である場合には、図５に示したように、パケットデータは無効であるので、ＣＰＵ２１ｂ１は受信制御を終了する。
ｖａｌｉｄが１である場合、ＣＰＵ２１ｂ１は、ステップＳ２１の処理を行う。ステップＳ２１では、図５に示したようなｄａｔａ［］フィールドに格納されたイーサネットフレームデータを、たとえば、ＯＳ（Operating System）のソケットバッファ（ｓｋ＿ｂｕｆｆと表記されている）構造体にコピーする読み出し処理が行われる。
【００８４】
その後、ＣＰＵ２１ｂ１は、ｖａｌｉｄを０に設定し（ステップＳ２２）、ソケットバッファ構造体をＴＣＰ（Transmission Control Protocol）／ＩＰスタックに引き渡す（ステップＳ２３）。
【００８５】
その後、ステップＳ２０の処理に戻り、次の読み出し位置のｖａｌｉｄが０であるか否かが判定され、同様の処理が繰り返される。
以上のように、ＳＯＣ［０］〜ＳＯＣ［Ｎ］のそれぞれは、他のＳＯＣのメモリ（ＤＲＡＭ２２ａ１など）のアドレスが定義されたメモリマップ情報３０ａ０〜３０ａＮに基づいて、直接そのアドレスを指定した送信及び書き込み処理が可能である。また、情報処理システム２０では、ＰＣＩｅインタフェース２１ｅ０，２１ｅ１，２３ａ０〜２３ａｎ＋１，２４ａ１，２４ａ２が用いられている。そのため、ＳＯＣ［０］〜ＳＯＣ［Ｎ］のそれぞれは、データ送信先からの応答を待つことなく、データ送信を連続的に行える。以上のことから、情報処理システム２０の処理を高速化できる。
【００８６】
また、スーパコンピュータに用いられるような高価な高速ネットワークを用いなくても済み、比較的安価に密結合、高並列・高性能のＣＰＵクラスタを実現できるようになる。また、消費電力の大きい高性能なＣＰＵを使用しなくて済むため、情報処理システム２０の消費電力を削減できる。
【００８７】
また、ＳＯＣ［０］〜ＳＯＣ［Ｎ］のそれぞれは、他のＳＯＣの割り込み設定レジスタのアドレスが定義されたメモリマップ情報３０ａ０〜３０ａＮに基づいて、直接そのアドレスを指定して割り込み設定値の設定を行う。そして、データ送信先のＳＯＣは、割り込みの発生を示す割り込み設定値が設定されると、受信（書き込み）が終了したと判定し、送信データの読み出しを行う。これによって、パケット受信を契機にデータ読み込み処理を行うようなイーサネットプロトコルを擬似的に再現できる。
【００８８】
また、第２の実施の形態の情報処理システム２０は、スイッチ２３，２４にも、アドレス変換回路として機能するＭＭＵ２３ｂ０〜２３ｂｎ＋１，２４ｂ１，２４ｂ２を有している。これにより、ＳＯＣ［０］〜ＳＯＣ［Ｎ］の構成を変えずに、書き込み先の変更など、通信の接続状況を変更することができる。
【００８９】
また、図２のようにスイッチ２３，２４を複数段設けることで、１つのスイッチに接続できるＳＯＣの数に物理的な制約がある場合でも、より多くのＳＯＣを含む情報処理システム２０を実現することができる。
【００９０】
（第３の実施の形態）
図８は、第３の実施の形態の情報処理システムの一例を示す図である。図８において、図２に示した第２の実施の形態の情報処理システム２０と同じ要素については同一符号が付されている。また、以下では、半導体集積回路４１ａ０〜４１ａｎ＋１を含むＮ個の半導体集積回路をＳＯＣ［０］〜ＳＯＣ［Ｎ］と表記する。たとえば、半導体集積回路４１ａ０を、ＳＯＣ［０］、半導体集積回路４１ａ１を、ＳＯＣ［１］と表記する。
【００９１】
第３の実施の形態の情報処理システム４０において、ＳＯＣ［０］〜ＳＯＣ［Ｎ］のうちの２つ以上には、ＤＲＡＭとは異なるメモリが接続されている。図８の例では、ＳＯＣ［０］にはメモリ４２ａ０が接続され、ＳＯＣ［ｎ］にはメモリ４２ａｎが接続され、ＳＯＣ［ｎ＋１］にはメモリ４２ａｎ＋１が接続されている。
【００９２】
メモリ４２ａ０〜４２ａｎ＋１のそれぞれは、ＤＲＡＭ２２ａ０〜２２ａｎ＋１のそれぞれよりも、容量が大きい情報記憶装置である。メモリ４２ａ０〜４２ａｎ＋１は、たとえば、ＳＳＤ（Solid State Drive）メモリである。
【００９３】
メモリ４２ａ０と接続するためのインタフェースの一例として、ＳＯＣ［０］は、ＰＣＩｅインタフェース４１ｂ０を有する。ＰＣＩｅインタフェース４１ｂ０は、ＭＭＵ４１ｃ０を介して、バス２１ｆ０に接続される。すなわち、メモリ４２ａ０は、スイッチ２３がＰＣＩｅインタフェース２１ｅ０とＭＭＵ２１ｄ０を介してバス２１ｆ０に接続されるのと同様に、バス２１ｆ０に接続される。ＭＭＵ４１ｃ０は、ＭＭＵ２１ｄ０と同様の機能を有しているが、ＰＣＩｅインタフェース４１ｂ０がメモリ４２ａ０に接続される場合であって、たとえば、メモリ４２ａ０へのアクセス（ライト動作またはリード動作）がＳＯＣ［０］内のＣＰＵ２１ｂ０からのアクセスに限定される場合は、その機能が無効となっていてもよく、また、ＭＭＵ４１ｃ０自体がなくてもよい。
【００９４】
メモリ４２ａ０は、ＣＰＵ２１ｂ０が出力するコマンドによって、ライト動作またはリード動作を行う。
なお、ＭＭＵ４１ｃ０が、ＭＭＵ２１ｄ０と同様の機能を有している場合、スイッチ２３がＰＣＩｅインタフェース４１ｂ０に接続され、メモリ４２ａ０がＰＣＩｅインタフェース２１ｅ０に接続されていてもよい。
【００９５】
図示を省略しているがＳＯＣ［ｎ］、ＳＯＣ［ｎ＋１］なども、ＳＯＣ［０］と同様の回路構成である。
上記のような情報処理システム４０によれば、個々のＳＯＣが扱えるデータサイズを増やせるため、より高効率な分散処理が可能となる。また、情報処理システム４０は、高速処理が可能な第２の実施の形態の情報処理システム２０をベースとしているため、その利点を生かして、大規模なデータを高速に処理できる。
【００９６】
（第４の実施の形態）
図９は、第４の実施の形態の情報処理システムの一例を示す図である。図９において、図８に示した第３の実施の形態の情報処理システム４０と同じ要素については同一符号が付されている。
【００９７】
第４の実施の形態の情報処理システム５０において、ＳＯＣ［０］〜ＳＯＣ［Ｎ］のうちの２つ以上には、特定機能向けＬＳＩ（Large Scale Integrated circuit）が接続されている。図９の例では、ＳＯＣ［０］には特定機能向けＬＳＩ５１ａ０が接続され、ＳＯＣ［ｎ］には特定機能向けＬＳＩ５１ａｎが接続され、ＳＯＣ［ｎ＋１］には特定機能向けＬＳＩ５１ａｎ＋１が接続されている。
【００９８】
特定機能向けＬＳＩ５１ａ０〜５１ａｎ＋１のそれぞれは、たとえば、映像データのエンコード処理など、負荷が比較的重いタスクを行うＬＳＩであり、たとえば、ＡＳＳＰ（Application Specific Standard Product）である。
【００９９】
特定機能向けＬＳＩ５１ａ０は、たとえば、インタフェースの一例であるＰＣＩｅインタフェース４１ｂ０と、ＭＭＵ４１ｃ０を介して、バス２１ｆ０に接続される。ＭＭＵ４１ｃ０は、ＭＭＵ２１ｄ０と同様の機能を有しているが、ＰＣＩｅインタフェース４１ｂ０が特定機能向けＬＳＩ５１ａ０に接続される場合であって、たとえば、特定機能向けＬＳＩ５１ａ０の動作がＳＯＣ［０］内のＣＰＵ２１ｂ０が出力する制御信号に基づく動作に限定される場合は、その機能が無効となっていてもよく、また、ＭＭＵ４１ｃ０自体がなくてもよい。
【０１００】
なお、ＭＭＵ４１ｃ０が、ＭＭＵ２１ｄ０と同様の機能を有している場合、スイッチ２３がＰＣＩｅインタフェース４１ｂ０に接続され、特定機能向けＬＳＩ５１ａ０がＰＣＩｅインタフェース２１ｅ０に接続されていてもよい。
【０１０１】
特定機能向けＬＳＩ５１ａ０は、ＣＰＵ２１ｂ０が出力する制御信号に基づいて動作する。特定機能向けＬＳＩ５１ａ０が、たとえば、ＨＥＶＣ（High Efficiency Video Coding）エンコーダである場合には、特定機能向けＬＳＩ５１ａ０は、動画像データをＳＯＣ［０］から受け、その動画像データを圧縮したＨＥＶＣデータを生成して出力する。
【０１０２】
特定機能向けＬＳＩ５１ａｎ，５１ａｎ＋１なども同様にＳＯＣ［ｎ］，ＳＯＣ［ｎ＋１］に接続され、ＳＯＣ［ｎ］，ＳＯＣ［ｎ＋１］のＣＰＵが出力する制御信号に基づいて動作する。
【０１０３】
上記のような情報処理システム５０によれば、個々のＳＯＣに接続された各特定機能向けＬＳＩが並列処理を行うことで、映像データの解析やメタデータの抽出、統合などの負荷が比較的重いタスクをより高効率に処理可能となる。
【０１０４】
なお、上記第３の実施の形態の情報処理システム４０と第４の実施の形態の情報処理システム５０は、互いに組み合わせることもできる。すなわち、ＳＯＣ［０］〜ＳＯＣ［Ｎ］のうち、あるＳＯＣにはＳＳＤメモリなどのメモリが接続され、他のＳＯＣには特定機能向けＬＳＩが接続されてもよい。
【０１０５】
また、ＳＯＣ［０］〜ＳＯＣ［ｎ＋１］において、ＰＣＩｅインタフェースなどのインタフェースをさらに追加して、ＳＳＤメモリなどのメモリと、特定機能向けＬＳＩの両方が接続されるようにしてもよい。
【０１０６】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成及び応用例に限定されるものではなく、対応する全ての変形例及び均等物は、添付の請求項及びその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１０７】
１０  情報処理システム
１１，１２  半導体集積回路
１１ａ，１２ａ  制御回路
１１ｂ，１２ｂ  割り込み制御回路
１１ｃ，１２ｃ  アドレス変換回路
１１ｄ，１２ｄ，１３ａ，１３ｂ  ＰＣＩｅインタフェース
１１ｅ，１２ｅ，１３ｃ  システムバス
１１ｍ，１２ｍ  メモリマップ情報
ａ１〜ａ４  アドレス
１３  スイッチ
１４，１５  メモリ
【図１】
2018101136.tif 000003
【図２】
2018101136.tif 000004
【図３】
2018101136.tif 000005
【図４】
2018101136.tif 000006
【図５】
2018101136.tif 000007
【図６】
2018101136.tif 000008
【図７】
2018101136.tif 000009
【図８】
2018101136.tif 000010
【図９】
2018101136.tif 000011
【国際調査報告】
2018101136.tif 000012
2018101136.tif 000013