(57)【要約】      （修正有）【課題】ルータ又は共有メモリの構造を複雑にすることなく、リードアクセスレイテンシを低減する。【解決手段】ルータ１４は、複数のコアと、複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理する。ルータ１４は、解析部１４４と、パケットメモリ１４５と、制御部１４３と、を備え，解析部１４４は、パケットがリードパケット及びライトパケットの何れかを解析し、パケットメモリ１４５は、発行されたライトパケットの一部を格納可能である。制御部１４３は、解析部１４４の解析結果に基づいて、ライトパケットの場合に、パケットのキャッシュデータと、格納されるべきキャッシュアドレスとを格納し、リードパケットであり、且つ、キャッシュデータがパケットメモリ１４５に格納されている場合に、キャッシュデータをリードパケットに対するレスポンスデータとして、コアへ出力する。【選択図】図５
2012155650.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと、前記複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理するルータであって、
前記パケットがリードパケット及びライトパケットの何れであるかを解析する解析部と、
前記コアにより発行されたライトパケットの少なくとも一部を格納可能なパケットメモリと、
前記解析部の解析結果に基づいて、前記パケットがライトパケットである場合に、前記パケットのキャッシュデータと、前記キャッシュデータが格納されるべきキャッシュアドレスと、を前記パケットメモリに格納し、前記パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスが前記パケットメモリに格納されている場合に、前記パケットメモリに格納されたキャッシュデータを前記リードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する制御部と、
を備えることを特徴とするルータ。
【請求項２】
前記制御部は、前記パケットメモリに格納されたキャッシュデータの読み出し及び削除の可否を示すリプレイスビットを前記パケットメモリのリプレイス領域に設定する、請求項１に記載のルータ。
【請求項３】
前記制御部は、前記ライトパケットの出力が完了した場合に、前記キャッシュデータの読み出し及び削除を許可するリプレイスビットを前記リプレイス領域に設定する、請求項２に記載のルータ。
【請求項４】
前記制御部は、前記パケットメモリに格納されたキャッシュデータをレスポンスデータとして出力するときに、前記キャッシュデータの読み出しを許可し、削除を禁止するリプレイスビットを前記リプレイス領域に設定する、請求項２又は３に記載のルータ。
【請求項５】
複数のコアと、
前記複数のコアからアクセス可能なキャッシュメモリと、
前記コアと前記キャッシュメモリとの間で転送されるパケットの経路を管理するルータと、を備え、
前記ルータは、
前記パケットがリードパケット及びライトパケットの何れであるかを解析する解析部と、
前記コアにより発行されたライトパケットの少なくとも一部を格納可能なパケットメモリと、
前記解析部の解析結果に基づいて、前記パケットが前記ライトパケットである場合に、前記パケットのキャッシュデータと、前記キャッシュデータが格納されるべきキャッシュアドレスと、を前記パケットメモリに格納し、前記パケットが前記リードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスが前記パケットメモリに格納されている場合に、前記パケットメモリに格納されたキャッシュデータを前記リードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する制御部と、
を備えることを特徴とするメニーコアシステム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ルータ及びメニーコアシステムに関する。
【背景技術】
【０００２】
一般的なメニーコアシステムでは、複数のコアと、複数のルータと、共有メモリと、がネットワークを介して接続されている。このようなメニーコアシステムでは、コアにより発行されるリードリクエスト及びライトリクエストは、ネットワークを介して共有メモリへ出力される。一般的に、リードリクエストはライトリクエストより転送量が小さいので、リードリクエストの到着時間はライトリクエストの処理時間より短い。
【０００３】
しかしながら、従来のメニーコアシステムでは、ライトリクエストが発行された後にリードリクエストが発行されると、ライトリクエストの処理が完了するまでリードリクエストの処理は開始しない。従って、リードリクエストが発行されてからリードレスポンスがコアに到達するまでの時間（以下、「リードアクセスレイテンシ」という）が増加する。その結果、コアの性能だけでなく、メニーコアシステム全体の性能を低下させる。
【０００４】
一方、ライトリクエストを一時的に格納するバッファをコアに設けることにより、ライトリクエストが発行された後に発行されるリードリクエストをライトリクエストより先に出力する方法がある。しかしながら、このような方法では、バッファから出力されたライトリクエストの処理の後に実行されるべきリードリクエストの処理が、ライトリクストの処理より先に実行される可能性がある。すなわち、リクエストの発行順と処理順とが入れ替わる。このため、ルータ又は共有メモリに、リクエストの発行順と処理順とが入れ替わったことに起因する問題を解消する機能を設ける必要がある。その結果、ルータ又は共有メモリの構造が複雑になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特公平８−１０４４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、ルータ又は共有メモリの構造を複雑にすることなく、リードアクセスレイテンシを低減することである。
【課題を解決するための手段】
【０００７】
本発明の実施形態のルータは、複数のコアと、複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理する。ルータは、解析部と、パケットメモリと、制御部と、を備える。解析部は、パケットがリードパケット及びライトパケットの何れであるかを解析する。パケットメモリは、コアにより発行されたライトパケットの少なくとも一部を格納可能である。制御部は、解析部の解析結果に基づいて、パケットがライトパケットである場合に、パケットのキャッシュデータと、キャッシュデータが格納されるべきキャッシュアドレスと、をパケットメモリに格納し、パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスがパケットメモリに格納されている場合に、パケットメモリに格納されたキャッシュデータをリードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する。
【図面の簡単な説明】
【０００８】
【図１】本実施形態のメニーコアシステム１０のネットワークトポロジを示すブロック図。
【図２】本実施形態のメニーコアシステムにおいて取り扱われるライトパケットの構造を示す概略図。
【図３】本実施形態のメニーコアシステムにおいて取り扱われるリードパケットの構造を示す概略図。
【図４】本実施形態のメニーコアシステムにおいて取り扱われるレスポンスパケットの構造を示す概略図。
【図５】本実施形態のルータ１４の構成を示すブロック図。
【図６】本実施形態のリクエスト処理のフローチャート。
【図７】本実施形態のライトリクエスト処理のフローチャート。
【図８】本実施形態のリードリクエスト処理のフローチャート。
【図９】本実施形態に係るレスポンス処理のフローチャート。
【図１０】本実施形態のメニーコアシステムの動作例におけるタイムライン。
【図１１】本実施形態のメニーコアシステムの動作例におけるライトリクエスト（１）のライトパケット並びにリードリクエスト（２）及び（３）のリードパケットの概略図。
【図１２】本実施形態のメニーコアシステムの動作例におけるパケットメモリ１４５に格納されるデータを示す概略図。
【図１３】本実施形態の変形例のライトパケットの構造を示す概略図。
【図１４】本実施形態の変形例のパケットメモリ１４５の構造を示す概略図。
【図１５】本実施形態の変形例のメニーコアシステムの動作例におけるパケットメモリ１４５に格納される情報及びライトパケットのテイルフリットを示す概略図。
【発明を実施するための形態】
【０００９】
本発明の実施形態のメニーコアシステムの構成について説明する。図１は、本実施形態のメニーコアシステム１０のネットワークトポロジを示すブロック図である。メニーコアシステム１０は、複数のコア１２ａ〜１２ｄと、複数のルータ１４ａ〜１４ｄと、複数のキャッシュメモリ１６ａ〜１６ｄと、を備える。
【００１０】
各コア１２ａ〜１２ｄは、各キャッシュメモリ１６ａ〜１６ｄに対するリードリクエストのパケット（以下、「リードパケット」という）と、ライトリクエストのパケット（以下、「ライトパケット」という）と、を発行するとともに、リードリクエストに対するレスポンスのパケット（以下、「レスポンスパケット」という）に含まれるデータ（以下、「レスポンスデータ」という）に対して所定の処理を実行するモジュールである。各ルータ１４ａ〜１４ｄは、各コア１２ａ〜１２ｄ及び各キャッシュメモリ１６ａ〜１６ｄ間で転送されるパケットの経路を管理するモジュールである。以下、各ルータ１４ａ〜１４ｄを「ルータ１４」と表し、各コア１２ａ〜１２ｄを「コア１２」と表し、各キャッシュメモリ１６ａ〜１６ｄを「キャッシュメモリ１６」と表する場合がある。
【００１１】
なお、本実施形態では、コア１２、ルータ１４、及びキャッシュメモリ１６の数は４個に限られない。また、本実施形態では、メニーコアシステムのネットワークトポロジは、図１のネットワークトポロジに限られない。
【００１２】
図２は、本実施形態のメニーコアシステムにおいて取り扱われるライトパケットの構造を示す概略図である。ライトパケットは、ヘッダフリットと、第１ボディフリットと、第２ボディフリットと、テイルフリットと、を含む（図２（Ａ））。
【００１３】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む（図２（Ｂ））。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「ＨＥＡＤＥＲ」が設定される。コマンドフィールドには、ライトパケットであることを示すコマンド情報「ＷＲＩＴＥ」が設定される。ソースフィールドには、ライトパケットを発行したコア１２の固有情報（以下、「コアＩＤ（Identification）」という）が設定される。宛先フィールドには、ライトパケットの出力先であるキャッシュメモリ１６の固有情報（以下、「キャッシュＩＤ」という）が設定される。ルーティングフィールドには、ソースフィールドに設定されたコアＩＤ及び宛先フィールドに設定されたキャッシュＩＤにより一意に決まるルータ１４の入力ポート及び出力ポートの固有情報（以下、「ポートＩＤ」という）のリストが設定される。ルーティングフィールドは、可変長フィールドである。
【００１４】
第１ボディフリットは、ヘッダフリットに後続するフリットである。第１ボディフリットは、タイプフィールドと、アドレスフィールドと、フリットデータと、を含む（図２（Ｃ））。タイプフィールドには、ボディフリットであることを示すタイプ情報「ＢＯＤＹ」が設定される。アドレスフィールドには、キャッシュデータの格納先であるキャッシュメモリ１６のアドレス（以下、「キャッシュアドレス」という）が設定される。フリットデータは、キャッシュデータが第１ボディフリット、第２ボディフリット、及びテイルフリットの総数で分割されたものである。例えば、１キャッシュラインサイズが２５６バイトであって、第１ボディフリット、第２ボディフリット、及びテイルフリットの総数が４個である場合には、フリットデータは、６４バイトである。
【００１５】
第２ボディフリットは、第１ボディフリットに後続するフリットである。テイルフリットは、終端に配置されるフリットである。第２ボディフリット及びテイルフリットは、それぞれ、タイプフィールドと、フリットデータと、を含む（図２（Ｄ）及び（Ｅ））。第２ボディフリットのタイプフィールドには、ボディフリットであることを示すタイプ情報「ＢＯＤＹ」が設定される。テイルフリットのタイプフィールドには、テイルフリットであることを示すタイプ情報「ＴＡＩＬ」が設定される。フリットデータは、第１ボディフリットと同様である。
【００１６】
図３は、本実施形態のメニーコアシステムにおいて取り扱われるリードパケットの構造を示す概略図である。リードパケットは、ヘッダフリットと、テイルフリットと、を含む（図３（Ａ））。
【００１７】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む（図３（Ｂ））。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「ＨＥＡＤＥＲ」が設定される。コマンドフィールドには、リードパケットであることを示すコマンド情報「ＲＥＡＤ」が設定される。ソースフィールドには、リードパケットを発行したコア１２のコアＩＤが設定される。宛先フィールドには、リードパケットの出力先であるキャッシュメモリ１６のキャッシュＩＤが設定される。ルーティングフィールドには、ポートＩＤのリストが設定される。ルーティングフィールドは、可変長フィールドである。
【００１８】
テイルフリットは、終端に配置されるフリットである。テイルフリットは、タイプフィールドと、アドレスフィールドと、を含む（図３（Ｃ））。タイプフィールドには、テイルフリットであることを示すタイプ情報「ＴＡＩＬ」が設定される。アドレスフィールドには、キャッシュメモリ１６から読み出されるべきキャッシュデータが格納されたキャッシュアドレスが設定される。リードパケットは、ライトパケットと異なり、フリットデータを含まない。すなわち、リードパケットのデータ量は、ライトパケットのデータ量より少ない。
【００１９】
図４は、本実施形態のメニーコアシステムにおいて取り扱われるレスポンスパケットの構造を示す概略図である。レスポンスパケットは、ヘッダフリットと、ボディフリットと、テイルフリットと、を含む（図４（Ａ））。
【００２０】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む（図４（Ｂ））。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「ＨＥＡＤＥＲ」が設定される。コマンドフィールドには、レスポンスパケットであることを示すコマンド情報「ＲＥＳＰＯＮＳＥ」が設定される。ソースフィールドには、レスポンスするべきキャッシュＩＤ又はルータＩＤが設定される。宛先フィールドには、レスポンスパケットの出力先であるコア１２のコアＩＤが設定される。ルーティングフィールドには、ソースフィールドに設定されたキャッシュＩＤ又はルータＩＤと、宛先フィールドに設定されたコアＩＤと、により一意に決まるポートＩＤのリストが設定される。ルーティングフィールドは、可変長フィールドである。
【００２１】
ボディフリットは、ヘッダフリットに後続するフリットである。テイルフリットは、終端に配置されるフリットである。ボディフリット及びテイルフリットは、それぞれ、タイプフィールドと、フリットデータと、を含む（図４（Ｃ）及び（Ｄ））。ボディフリットのタイプフィールドには、ボディフリットであることを示すタイプ情報「ＢＯＤＹ」が設定される。テイルフリットのタイプフィールドには、テイルフリットであることを示すタイプ情報「ＴＡＩＬ」が設定される。フリットデータは、ライトパケットと同様である。
【００２２】
図５は、本実施形態のルータ１４の構成を示すブロック図である。ルータ１４は、複数の入力ポート１４１と、複数のバッファ１４２と、制御部１４３と、解析部１４４と、パケットメモリ１４５と、スイッチ１４６と、複数の出力ポート１４７と、を備える。
【００２３】
各入力ポート１４１は、リード用入力ポートＲＩＮ０〜ＲＩＮ３と、ライト用入力ポートＷＩＮ０〜ＷＩＮ３と、を含む。各出力ポート１４７は、リード用出力ポートＲＯＵＴ０〜ＲＯＵＴ３と、ライト用出力ポートＷＯＵＴ０〜ＷＯＵＴ３と、を含む。すなわち、ルータ１４において、リードチャネルとライトチャネルとは、物理的に分かれている。これにより、リードリクエスト及びライトリクエストが並列に処理可能になる。なお、入力ポート１４１及び出力ポート１４７の数は、接続されるモジュール（例えば、コア、キャッシュメモリ、及びルータ等）の数により決まる。各バッファ１４２は、各入力ポート１４１に対応して設けられ、各入力ポート１４１に入力されたパケットを一時的に格納するモジュールである。
【００２４】
制御部１４３は、解析部１４４、パケットメモリ１４５、及びスイッチ１４６を制御するモジュールである。解析部１４４は、パケットを解析するモジュールである。スイッチ１４６は、パケットの出力先に接続された出力ポートを選択するモジュールである。
【００２５】
パケットメモリ１４５は、コア１２で発行されたライトパケットの少なくとも一部を格納可能である。パケットメモリ１４５は、宛先領域と、アドレス領域と、データ領域と、リプレイス領域と、を含む。宛先領域は、ヘッダフリットのソースフィールドに設定されたコアＩＤを格納する。アドレス領域は、第１ボディフリットのアドレスフィールドに設定されたキャッシュアドレスを格納する。データ領域は、ライトパケットに含まれる全てのフリットデータ（すなわち、キャッシュデータ）を格納する。リプレイス領域には、ライトパケットの読み出し及び削除の可否を示すリプレイスビット（例えば、２ビット）を設定する。
【００２６】
本実施形態のメニーコアシステムの動作について説明する。図６は、本実施形態のリクエスト処理のフローチャートである。例えば、リプレイスビットは、削除が許可されたライトパケットが存在しない場合を「２」、ライトパケットの読み出し及び削除を禁止する場合を「０」、ライトパケットの読み出しを許可し且つ削除を禁止する場合に「１」とする。
【００２７】
＜Ｓ６００〜Ｓ６１４＞  解析部１４４は、入力されたリクエストパケットのヘッダフリットを解析する（Ｓ６００）。コマンド情報「ＷＲＩＴＥ」が設定されている場合には（Ｓ６０２−ＹＥＳ）、ライトリクエスト処理（Ｓ６０４）に進む。コマンド情報「ＲＥＡＤ」が設定されている場合には（Ｓ６０２−ＮＯ）、リードリクエスト処理（Ｓ６１４）に進む。
【００２８】
まず、本実施形態のライトリクエスト処理について説明する。図７は、本実施形態のライトリクエスト処理のフローチャートである。ライトリクエスト処理は、各ルータ１４で実行される。以下、ライトリクエスト処理の一例として、コア１２ａがキャッシュメモリ１６ａに対してライトリクエストを発行した場合について説明する。
【００２９】
＜Ｓ７００＞  制御部１４３は、解析部１４４の解析結果に基づいてスイッチ１４６を制御する。スイッチ１４６は、ライト用出力ポートＷＯＵＴ０〜ＷＯＵＴ３の中からライトパケットの出力先に接続されたポートを選択する（Ｓ７００）。例えば、解析部１４４によりポートＩＤが解析されると、制御部１４３は、該ポートＩＤに対応するポートを選択するようにスイッチ１４６を制御する。
【００３０】
＜Ｓ７０２＞  制御部１４３は、パケットメモリ１４５がフルであるか否かを判定する（Ｓ７０２）。例えば、パケットメモリ１４５に空き領域が存在せず、且つ、リプレイスビット「２」が設定されたリプレイス領域が存在しない場合に、制御部１４３は、パケットメモリ１４５がフルであると判定する。パケットメモリ１４５がフルである場合には（Ｓ７０２−ＹＥＳ）、ライトパケットをパケットメモリ１４５には格納せず、後段のルータ又はキャッシュメモリに出力する。パケットメモリ１４５がフルでない場合には（Ｓ７０２−ＮＯ）、Ｓ７０４に進む。
【００３１】
＜Ｓ７０４＞  制御部１４３は、バッファ１４２に格納されたライトパケットをパケットメモリ１４５に格納させる（Ｓ７０４）。このとき、制御部１４３は、パケットメモリ１４５にリプレイスビット「０」を設定する。
【００３２】
＜Ｓ７０６及びＳ７０８＞  制御部１４３は、ライトパケット出力が完了したか否かを判定する（Ｓ７０６）。例えば、ルータ１４ａの制御部１４３は、Ｓ７００において選択されたライト用出力ポートＷＯＵＴからライトパケットが出力された（すなわち、ライトパケットがルータ１４ｂに転送された）ときに、ライトパケット出力が完了したと判定する。また、ルータ１４ｂの制御部１４３は、Ｓ７００において選択されたライト用出力ポートＷＯＵＴからライトパケットが出力された（すなわち、ライトパケットがキャッシュメモリ１６ａに格納された）ときに、ライトパケット出力が完了したと判定する。キャッシュメモリ１６ａは、ライトパケットが格納されると、ルータ１４ｂを介して、ライトパケットを受領したことを示す受領信号をルータ１４ａへ出力する。ライトパケット出力が完了したと判定されると（Ｓ７０６−ＹＥＳ）、制御部１４３は、このライトパケットの読み出し及び削除を許可するリプレイスビット「２」をリプレイス領域に設定する（Ｓ７０８）。
【００３３】
例えば、ルータ１４ａのパケットメモリ１４５がフルである場合には（Ｓ７０２−ＹＥＳ）、ライトパケットはルータ１４ｂに出力される。そして、ルータ１４ｂのパケットメモリ１４５に空きがある場合に、ライトパケットは格納される。一方、ルータ１４ｂのパケットメモリ１４５がフルである場合には（Ｓ７０２−ＹＥＳ）、ライトパケットは、キャッシュメモリ１６ａに格納される。これにより、ルータ１４ａに先に到達したライトパケット（以下、「第１ライトパケット」という）がルータ１４ｂのパケットメモリ１４５又はキャッシュメモリ１６ａに格納されていることと、第１ライトパケットの後に発行されたライトパケット（以下、「第２ライトパケット」という）及び第１ライトパケットの発行順と処理順とが同一であることと、が保証される。
【００３４】
次に、本実施形態のリードリクエスト処理について説明する。図８は、本実施形態のリードリクエスト処理のフローチャートである。リードリクエスト処理は、各ルータ１４ａ〜１４ｄにより、ライトリクエスト処理と並行して実行される。
【００３５】
＜Ｓ８００＞  制御部１４３は、リードパケットに設定されたキャッシュアドレス（以下、「リードキャッシュアドレス」という）と同じアドレスがパケットメモリ１４５のアドレス領域に格納されている否かを判定する（Ｓ８００）。該キャッシュアドレスが格納されていない場合には（Ｓ８００−ＮＯ）、Ｓ８０２に進む。該キャッシュアドレスが格納されている場合には（Ｓ８００−ＹＥＳ）、Ｓ８１２に進む。
【００３６】
＜Ｓ８０２＞  制御部１４３は、解析部１４４の解析結果に基づいてスイッチ１４６を制御する。スイッチ１４６は、リード用出力ポートＲＯＵＴ０〜ＲＯＵＴ３の中からリードパケットの出力先に接続されたポートを選択する（Ｓ８０２）。すなわち、制御部１４３は、キャッシュアドレスがパケットメモリ１４５に格納されていない場合に、リードキャッシュアドレスに対応するキャッシュメモリへリードパケットを出力する。例えば、解析部１４４によりポートＩＤが解析されると、制御部１４３は、該ポートＩＤに対応するポートを選択するようにスイッチ１４６を制御する。
【００３７】
＜Ｓ８１２及びＳ８１４＞  制御部１４３は、パケットメモリ１４５のリプレイス領域にリプレイスビット「２」が設定されているか否かを判定する（Ｓ８１２）。リプレイスビット「２」が設定されていない場合には（Ｓ８１２−ＮＯ）、リプレイスビット「２」が設定されるまで待機する。リプレイスビット「２」が設定されている場合には（Ｓ８１２−ＹＥＳ）、制御部１４３は、レスポンスパケットを出力するためのレスポンス処理（Ｓ８１４）を実行する。なお、制御部１４３は、リプレイスビット「２」が設定されるまで待機する代わりに、後段のルータのパケットメモリ１４５にリードキャッシュアドレスが設定されている場合には、後段のルータのパケットメモリ１４５に格納されたキャッシュデータを用いてレスポンス処理（Ｓ８１４）を実行しても良い。図９は、本実施形態に係るレスポンス処理のフローチャートである。
【００３８】
＜Ｓ９００及びＳ９０２＞  制御部１４３は、パケットメモリ１４５にリプレイスビット「１」を設定する（Ｓ９００）。制御部１４３は、パケットメモリ１４５に格納されているデータを用いて、レスポンスパケットのヘッダフリットを生成する（Ｓ９０２）。例えば、制御部１４３は、タイプフィールドにタイプ情報「ＨＥＡＤＥＲ」、コマンドフィールドにコマンド情報「ＲＥＳＰＯＮＳＥ」、ソースフィールドにルータ１４のルータＩＤ、宛先フィールドにパケットメモリ１４５の宛先領域に格納されたコアＩＤを設定する。さらに、制御部１４３は、ルータＩＤとコアＩＤとにより一意に決まる経路上のポートＩＤのリストをルーティングフィールドに設定する。
【００３９】
＜Ｓ９０４＞  制御部１４３は、パケットメモリ１４５に格納されたデータを用いて、レスポンスパケットを生成する（Ｓ９０４）。例えば、制御部１４３は、パケットメモリ１４５のキャッシュデータを複数のフリットデータに分割し、各フリットデータをボディフリット又はテイルフリットに格納する。そして、制御部１４３は、ボディフリットにタイプ情報「ＢＯＤＹ」を設定し、テイルフリットにタイプ情報「ＴＡＩＬ」を設定し、ヘッダフリット、ボディフリット、及びテイルフリットを所定順に配列して、レスポンスパケットを生成する。
【００４０】
＜Ｓ９０６＞  制御部１４３は、解析部１４４のレスポンスパケットのヘッダフリットに基づいてスイッチ１４６を制御する。スイッチ１４６は、複数の出力ポート１４７の中からレスポンスパケットの出力先に接続されたポートを選択する（Ｓ９０６）。
【００４１】
＜Ｓ９０８＞  制御部１４３は、レスポンスパケットの出力後、パケットメモリ１４５に格納されたライトパケットのリプレイスビット「２」を設定する。その結果、バッファ１４２に格納された他のライトパケットがパケットメモリ１４５に格納可能になる。
【００４２】
次に、本実施形態のメニーコアシステムの動作例について説明する。図１０は、本実施形態のメニーコアシステムの動作例におけるタイムラインである。図１１は、本実施形態のメニーコアシステムの動作例におけるライトリクエスト（１）のライトパケット並びにリードリクエスト（２）及び（３）のリードパケットの概略図である。図１２は、本実施形態のメニーコアシステムの動作例におけるパケットメモリ１４５に格納されるデータを示す概略図である。
【００４３】
コア１２ａは、時刻Ｔ０にライトリクエスト（１）、時刻Ｔ１にリードリクエスト（２）、時刻Ｔ２にリードリクエスト（３）を発行したとする。ライトリクエスト（１）は、キャッシュメモリ１６ａのキャッシュアドレス「0x40002220」にキャッシュデータを書き込むためのリクエストである。リードリクエスト（２）は、キャッシュメモリ１６ｃのキャッシュアドレス「0x40003200」に格納されたキャッシュデータを読み出すためのリクエストである。リードリクエスト（３）は、キャッシュメモリ１６ａのキャッシュアドレス「0x40002220」に格納されたキャッシュデータ（すなわち、ライトリクエスト（１）によりキャッシュメモリ１６ａに格納されるべきキャッシュデータ）を読み出すためのリクエストである。
【００４４】
ルータ１４ａは、時刻Ｔ３からライトリクエスト（１）の処理（Ｓ６０４）を実行する。ライトパケットは、パケットメモリ１４５に格納される。ただし、時刻Ｔ６までは、ライトパケットは他のルータ１４及びキャッシュメモリ１６ａに到達していないので、パケットメモリ１４５にはリプレイスビット「０」が設定される（図１２（Ａ））。時刻Ｔ６で、ライトパケットは、他のルータ１４及びキャッシュメモリ１６ａの少なくとも１つに格納され、ルータ１４ａはパケットメモリ１４５にリプレイスビット「２」が設定される（図１２（Ｂ））。
【００４５】
一方、ルータ１４ａは、時刻Ｔ４からリードリクエスト（２）の処理（Ｓ６１４）を実行する。リードパケットは、ルータ１４ｄを介して、キャッシュメモリ１６ｃへ出力される。その結果、キャッシュメモリ１６ｃのキャッシュアドレス「0x40003200」に格納されたキャッシュデータが、レスポンスデータとしてコア１２ａに転送される。リードリクエスト（２）の処理は、ライトリクエスト（１）の処理が完了する前の時刻Ｔ５に完了する。
【００４６】
また、ルータ１４ａは、時刻Ｔ７からリードリクエスト（３）の処理（Ｓ６１４）を実行する。ライトリクエスト（１）により、ルータ１４ａのパケットメモリ１４５には、キャッシュメモリ１６ａのキャッシュアドレス「0x40002220」に書き込まれたキャッシュデータが格納されている。すなわち、リードリクエスト（３）に対するレスポンスデータがパケットメモリ１４５に格納されている（図１２（Ｂ））。したがって、ルータ１４ａは、リードリクエスト（３）に対しレスポンス処理（Ｓ８１４）を実行する。時刻Ｔ７で、パケットメモリ１４５にリプレイスビット「１」が設定される（図１２（Ｃ））。次いで、ルータ１４ａは、パケットメモリ１４５のデータを用いて生成されたレスポンスパケットをコア１２ａへ出力する。レスポンスパケットの出力後の時刻Ｔ８で、パケットメモリ１４５にリプレイスビット「２」が設定される（図１２（Ｄ））。
【００４７】
本実施形態によれば、制御部１４３は、解析部１４４の解析結果に基づいてパケットがリードパケット又はライトパケットの何れであるかを判定する。また、制御部１４３は、パケットがライトパケットである場合に、ライトパケットのキャッシュデータと、キャッシュアドレスと、をパケットメモリ１４５に格納する。また、制御部１４３は、パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスがパケットメモリ１４５に格納されている場合に、パケットメモリ１４５に格納されたキャッシュデータをリードパケットに対するレスポンスデータとして、リードリクエストを発行したコア（例えば、コア１２ａ）へ出力する。これにより、ライトリクエスト及びリードリクエストの発行順が保証された上で、リードリクエストに対するリードレスポンスがキャッシュアクセスなしにコア１２へ供給される。従って、ライトリクエスト及びリードリクエストの発行順と処理順が入れ替わったことに起因する問題を解消する機能をルータ１４又は共有メモリ１６に設ける必要はない。その結果、ルータ１４又は共有メモリ１６の構造を複雑にすることなく、リードアクセスレイテンシを低減することができる。
【００４８】
本実施形態の変形例について説明する。図１３は、本実施形態の変形例のライトパケットの構造を示す概略図である。図１４は、本実施形態の変形例のパケットメモリ１４５の構造を示す概略図である。上述の実施形態と同様の内容の説明は省略する。
【００４９】
ライトパケットのテイルフリットは、タイプフィールド及びフリットデータに加えて、リードビットフィールドを含む。リードビットフィールドには、リードビット（例えば１ビット）が設定される。リードビットは、ライトパケットが発行された後に発行されたリードパケットに対するレスポンスデータになり得るキャッシュデータがコア１２へ出力されたか否かを示す。パケットメモリ１４５は、宛先領域と、アドレス領域と、リプレイス領域と、を備えるが、データ領域を備えていない。
【００５０】
図１５は、本実施形態の変形例のメニーコアシステムの動作例におけるパケットメモリ１４５に格納される情報及びライトパケットのテイルフリットを示す概略図である。コア１２ａでライトパケットが発行されると、ライトパケットはバッファ１４２に格納された後、キャッシュＩＤに対応するキャッシュメモリ１６に出力される。このとき、コアＩＤ及びキャッシュアドレスがパケットメモリ１４５に格納され、リプレイスビット「０」及びリードビット「０」が設定される（図１５（Ａ））。ここで、リードビット「０」は、ライトパケットが発行された後に発行されたリードパケットのうち、該ライトパケットのキャッシュデータを読み出すためのリードパケットがルータ１４から出力されていないことを示す。
【００５１】
次いで、コア１２ａで該ライトパケットのキャッシュデータを読み出すリードパケットが発行されると、制御部１４３は、バッファ１４２に格納されたリードキャッシュアドレスと同じアドレスがパケットメモリ１４５に格納されている否かを判定する。該キャッシュアドレスが格納されている場合には、リードビット「１」が設定される（図１５（Ｂ））。リードビット「１」は、ライトパケットが発行された後に発行されたリードパケットが、該ライトパケットより先に出力可能な状態になったこと（すなわち、リードリクエストがライトリクエストを追い越し可能になったこと）を示す。次いで、バッファ１４５に格納された該ライトパケットに基づいてレスポンスパケットが生成される。
【００５２】
本実施形態の変形例によれば、ライトパケットにリードビットを含む。これにより、パケットメモリ１４５にデータ領域を設けなくても、本実施形態と同様の効果が得られる。その結果、パケットメモリ１４５の容量を低減することができる。
【００５３】
本実施形態に係るメニーコアシステム１０の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、メニーコアシステム１０の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
【００５４】
また、本実施形態に係るメニーコアシステム１０の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
【００５５】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５６】
１０  メニーコアシステム
１２  コア
１４  ルータ
１４１  入力ポート
１４２  バッファ
１４３  制御部
１４４  解析部
１４５  パケットメモリ
１４６  スイッチ
１４７  複数の出力ポート
１６  キャッシュメモリ
【図１】
2012155650.tif 000003
【図２】
2012155650.tif 000004
【図３】
2012155650.tif 000005
【図４】
2012155650.tif 000006
【図５】
2012155650.tif 000007
【図６】
2012155650.tif 000008
【図７】
2012155650.tif 000009
【図８】
2012155650.tif 000010
【図９】
2012155650.tif 000011
【図１０】
2012155650.tif 000012
【図１１】
2012155650.tif 000013
【図１２】
2012155650.tif 000014
【図１３】
2012155650.tif 000015
【図１４】
2012155650.tif 000016
【図１５】
2012155650.tif 000017