ルータ及びメニーコアシステム
【課題】ルータ又は共有メモリの構造を複雑にすることなく、リードアクセスレイテンシを低減する。
【解決手段】ルータ14は、複数のコアと、複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理する。ルータ14は、解析部144と、パケットメモリ145と、制御部143と、を備え,解析部144は、パケットがリードパケット及びライトパケットの何れかを解析し、パケットメモリ145は、発行されたライトパケットの一部を格納可能である。制御部143は、解析部144の解析結果に基づいて、ライトパケットの場合に、パケットのキャッシュデータと、格納されるべきキャッシュアドレスとを格納し、リードパケットであり、且つ、キャッシュデータがパケットメモリ145に格納されている場合に、キャッシュデータをリードパケットに対するレスポンスデータとして、コアへ出力する。
【解決手段】ルータ14は、複数のコアと、複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理する。ルータ14は、解析部144と、パケットメモリ145と、制御部143と、を備え,解析部144は、パケットがリードパケット及びライトパケットの何れかを解析し、パケットメモリ145は、発行されたライトパケットの一部を格納可能である。制御部143は、解析部144の解析結果に基づいて、ライトパケットの場合に、パケットのキャッシュデータと、格納されるべきキャッシュアドレスとを格納し、リードパケットであり、且つ、キャッシュデータがパケットメモリ145に格納されている場合に、キャッシュデータをリードパケットに対するレスポンスデータとして、コアへ出力する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ルータ及びメニーコアシステムに関する。
【背景技術】
【0002】
一般的なメニーコアシステムでは、複数のコアと、複数のルータと、共有メモリと、がネットワークを介して接続されている。このようなメニーコアシステムでは、コアにより発行されるリードリクエスト及びライトリクエストは、ネットワークを介して共有メモリへ出力される。一般的に、リードリクエストはライトリクエストより転送量が小さいので、リードリクエストの到着時間はライトリクエストの処理時間より短い。
【0003】
しかしながら、従来のメニーコアシステムでは、ライトリクエストが発行された後にリードリクエストが発行されると、ライトリクエストの処理が完了するまでリードリクエストの処理は開始しない。従って、リードリクエストが発行されてからリードレスポンスがコアに到達するまでの時間(以下、「リードアクセスレイテンシ」という)が増加する。その結果、コアの性能だけでなく、メニーコアシステム全体の性能を低下させる。
【0004】
一方、ライトリクエストを一時的に格納するバッファをコアに設けることにより、ライトリクエストが発行された後に発行されるリードリクエストをライトリクエストより先に出力する方法がある。しかしながら、このような方法では、バッファから出力されたライトリクエストの処理の後に実行されるべきリードリクエストの処理が、ライトリクストの処理より先に実行される可能性がある。すなわち、リクエストの発行順と処理順とが入れ替わる。このため、ルータ又は共有メモリに、リクエストの発行順と処理順とが入れ替わったことに起因する問題を解消する機能を設ける必要がある。その結果、ルータ又は共有メモリの構造が複雑になる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特公平8−10447号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、ルータ又は共有メモリの構造を複雑にすることなく、リードアクセスレイテンシを低減することである。
【課題を解決するための手段】
【0007】
本発明の実施形態のルータは、複数のコアと、複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理する。ルータは、解析部と、パケットメモリと、制御部と、を備える。解析部は、パケットがリードパケット及びライトパケットの何れであるかを解析する。パケットメモリは、コアにより発行されたライトパケットの少なくとも一部を格納可能である。制御部は、解析部の解析結果に基づいて、パケットがライトパケットである場合に、パケットのキャッシュデータと、キャッシュデータが格納されるべきキャッシュアドレスと、をパケットメモリに格納し、パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスがパケットメモリに格納されている場合に、パケットメモリに格納されたキャッシュデータをリードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する。
【図面の簡単な説明】
【0008】
【図1】本実施形態のメニーコアシステム10のネットワークトポロジを示すブロック図。
【図2】本実施形態のメニーコアシステムにおいて取り扱われるライトパケットの構造を示す概略図。
【図3】本実施形態のメニーコアシステムにおいて取り扱われるリードパケットの構造を示す概略図。
【図4】本実施形態のメニーコアシステムにおいて取り扱われるレスポンスパケットの構造を示す概略図。
【図5】本実施形態のルータ14の構成を示すブロック図。
【図6】本実施形態のリクエスト処理のフローチャート。
【図7】本実施形態のライトリクエスト処理のフローチャート。
【図8】本実施形態のリードリクエスト処理のフローチャート。
【図9】本実施形態に係るレスポンス処理のフローチャート。
【図10】本実施形態のメニーコアシステムの動作例におけるタイムライン。
【図11】本実施形態のメニーコアシステムの動作例におけるライトリクエスト(1)のライトパケット並びにリードリクエスト(2)及び(3)のリードパケットの概略図。
【図12】本実施形態のメニーコアシステムの動作例におけるパケットメモリ145に格納されるデータを示す概略図。
【図13】本実施形態の変形例のライトパケットの構造を示す概略図。
【図14】本実施形態の変形例のパケットメモリ145の構造を示す概略図。
【図15】本実施形態の変形例のメニーコアシステムの動作例におけるパケットメモリ145に格納される情報及びライトパケットのテイルフリットを示す概略図。
【発明を実施するための形態】
【0009】
本発明の実施形態のメニーコアシステムの構成について説明する。図1は、本実施形態のメニーコアシステム10のネットワークトポロジを示すブロック図である。メニーコアシステム10は、複数のコア12a〜12dと、複数のルータ14a〜14dと、複数のキャッシュメモリ16a〜16dと、を備える。
【0010】
各コア12a〜12dは、各キャッシュメモリ16a〜16dに対するリードリクエストのパケット(以下、「リードパケット」という)と、ライトリクエストのパケット(以下、「ライトパケット」という)と、を発行するとともに、リードリクエストに対するレスポンスのパケット(以下、「レスポンスパケット」という)に含まれるデータ(以下、「レスポンスデータ」という)に対して所定の処理を実行するモジュールである。各ルータ14a〜14dは、各コア12a〜12d及び各キャッシュメモリ16a〜16d間で転送されるパケットの経路を管理するモジュールである。以下、各ルータ14a〜14dを「ルータ14」と表し、各コア12a〜12dを「コア12」と表し、各キャッシュメモリ16a〜16dを「キャッシュメモリ16」と表する場合がある。
【0011】
なお、本実施形態では、コア12、ルータ14、及びキャッシュメモリ16の数は4個に限られない。また、本実施形態では、メニーコアシステムのネットワークトポロジは、図1のネットワークトポロジに限られない。
【0012】
図2は、本実施形態のメニーコアシステムにおいて取り扱われるライトパケットの構造を示す概略図である。ライトパケットは、ヘッダフリットと、第1ボディフリットと、第2ボディフリットと、テイルフリットと、を含む(図2(A))。
【0013】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む(図2(B))。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「HEADER」が設定される。コマンドフィールドには、ライトパケットであることを示すコマンド情報「WRITE」が設定される。ソースフィールドには、ライトパケットを発行したコア12の固有情報(以下、「コアID(Identification)」という)が設定される。宛先フィールドには、ライトパケットの出力先であるキャッシュメモリ16の固有情報(以下、「キャッシュID」という)が設定される。ルーティングフィールドには、ソースフィールドに設定されたコアID及び宛先フィールドに設定されたキャッシュIDにより一意に決まるルータ14の入力ポート及び出力ポートの固有情報(以下、「ポートID」という)のリストが設定される。ルーティングフィールドは、可変長フィールドである。
【0014】
第1ボディフリットは、ヘッダフリットに後続するフリットである。第1ボディフリットは、タイプフィールドと、アドレスフィールドと、フリットデータと、を含む(図2(C))。タイプフィールドには、ボディフリットであることを示すタイプ情報「BODY」が設定される。アドレスフィールドには、キャッシュデータの格納先であるキャッシュメモリ16のアドレス(以下、「キャッシュアドレス」という)が設定される。フリットデータは、キャッシュデータが第1ボディフリット、第2ボディフリット、及びテイルフリットの総数で分割されたものである。例えば、1キャッシュラインサイズが256バイトであって、第1ボディフリット、第2ボディフリット、及びテイルフリットの総数が4個である場合には、フリットデータは、64バイトである。
【0015】
第2ボディフリットは、第1ボディフリットに後続するフリットである。テイルフリットは、終端に配置されるフリットである。第2ボディフリット及びテイルフリットは、それぞれ、タイプフィールドと、フリットデータと、を含む(図2(D)及び(E))。第2ボディフリットのタイプフィールドには、ボディフリットであることを示すタイプ情報「BODY」が設定される。テイルフリットのタイプフィールドには、テイルフリットであることを示すタイプ情報「TAIL」が設定される。フリットデータは、第1ボディフリットと同様である。
【0016】
図3は、本実施形態のメニーコアシステムにおいて取り扱われるリードパケットの構造を示す概略図である。リードパケットは、ヘッダフリットと、テイルフリットと、を含む(図3(A))。
【0017】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む(図3(B))。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「HEADER」が設定される。コマンドフィールドには、リードパケットであることを示すコマンド情報「READ」が設定される。ソースフィールドには、リードパケットを発行したコア12のコアIDが設定される。宛先フィールドには、リードパケットの出力先であるキャッシュメモリ16のキャッシュIDが設定される。ルーティングフィールドには、ポートIDのリストが設定される。ルーティングフィールドは、可変長フィールドである。
【0018】
テイルフリットは、終端に配置されるフリットである。テイルフリットは、タイプフィールドと、アドレスフィールドと、を含む(図3(C))。タイプフィールドには、テイルフリットであることを示すタイプ情報「TAIL」が設定される。アドレスフィールドには、キャッシュメモリ16から読み出されるべきキャッシュデータが格納されたキャッシュアドレスが設定される。リードパケットは、ライトパケットと異なり、フリットデータを含まない。すなわち、リードパケットのデータ量は、ライトパケットのデータ量より少ない。
【0019】
図4は、本実施形態のメニーコアシステムにおいて取り扱われるレスポンスパケットの構造を示す概略図である。レスポンスパケットは、ヘッダフリットと、ボディフリットと、テイルフリットと、を含む(図4(A))。
【0020】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む(図4(B))。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「HEADER」が設定される。コマンドフィールドには、レスポンスパケットであることを示すコマンド情報「RESPONSE」が設定される。ソースフィールドには、レスポンスするべきキャッシュID又はルータIDが設定される。宛先フィールドには、レスポンスパケットの出力先であるコア12のコアIDが設定される。ルーティングフィールドには、ソースフィールドに設定されたキャッシュID又はルータIDと、宛先フィールドに設定されたコアIDと、により一意に決まるポートIDのリストが設定される。ルーティングフィールドは、可変長フィールドである。
【0021】
ボディフリットは、ヘッダフリットに後続するフリットである。テイルフリットは、終端に配置されるフリットである。ボディフリット及びテイルフリットは、それぞれ、タイプフィールドと、フリットデータと、を含む(図4(C)及び(D))。ボディフリットのタイプフィールドには、ボディフリットであることを示すタイプ情報「BODY」が設定される。テイルフリットのタイプフィールドには、テイルフリットであることを示すタイプ情報「TAIL」が設定される。フリットデータは、ライトパケットと同様である。
【0022】
図5は、本実施形態のルータ14の構成を示すブロック図である。ルータ14は、複数の入力ポート141と、複数のバッファ142と、制御部143と、解析部144と、パケットメモリ145と、スイッチ146と、複数の出力ポート147と、を備える。
【0023】
各入力ポート141は、リード用入力ポートRIN0〜RIN3と、ライト用入力ポートWIN0〜WIN3と、を含む。各出力ポート147は、リード用出力ポートROUT0〜ROUT3と、ライト用出力ポートWOUT0〜WOUT3と、を含む。すなわち、ルータ14において、リードチャネルとライトチャネルとは、物理的に分かれている。これにより、リードリクエスト及びライトリクエストが並列に処理可能になる。なお、入力ポート141及び出力ポート147の数は、接続されるモジュール(例えば、コア、キャッシュメモリ、及びルータ等)の数により決まる。各バッファ142は、各入力ポート141に対応して設けられ、各入力ポート141に入力されたパケットを一時的に格納するモジュールである。
【0024】
制御部143は、解析部144、パケットメモリ145、及びスイッチ146を制御するモジュールである。解析部144は、パケットを解析するモジュールである。スイッチ146は、パケットの出力先に接続された出力ポートを選択するモジュールである。
【0025】
パケットメモリ145は、コア12で発行されたライトパケットの少なくとも一部を格納可能である。パケットメモリ145は、宛先領域と、アドレス領域と、データ領域と、リプレイス領域と、を含む。宛先領域は、ヘッダフリットのソースフィールドに設定されたコアIDを格納する。アドレス領域は、第1ボディフリットのアドレスフィールドに設定されたキャッシュアドレスを格納する。データ領域は、ライトパケットに含まれる全てのフリットデータ(すなわち、キャッシュデータ)を格納する。リプレイス領域には、ライトパケットの読み出し及び削除の可否を示すリプレイスビット(例えば、2ビット)を設定する。
【0026】
本実施形態のメニーコアシステムの動作について説明する。図6は、本実施形態のリクエスト処理のフローチャートである。例えば、リプレイスビットは、削除が許可されたライトパケットが存在しない場合を「2」、ライトパケットの読み出し及び削除を禁止する場合を「0」、ライトパケットの読み出しを許可し且つ削除を禁止する場合に「1」とする。
【0027】
<S600〜S614> 解析部144は、入力されたリクエストパケットのヘッダフリットを解析する(S600)。コマンド情報「WRITE」が設定されている場合には(S602−YES)、ライトリクエスト処理(S604)に進む。コマンド情報「READ」が設定されている場合には(S602−NO)、リードリクエスト処理(S614)に進む。
【0028】
まず、本実施形態のライトリクエスト処理について説明する。図7は、本実施形態のライトリクエスト処理のフローチャートである。ライトリクエスト処理は、各ルータ14で実行される。以下、ライトリクエスト処理の一例として、コア12aがキャッシュメモリ16aに対してライトリクエストを発行した場合について説明する。
【0029】
<S700> 制御部143は、解析部144の解析結果に基づいてスイッチ146を制御する。スイッチ146は、ライト用出力ポートWOUT0〜WOUT3の中からライトパケットの出力先に接続されたポートを選択する(S700)。例えば、解析部144によりポートIDが解析されると、制御部143は、該ポートIDに対応するポートを選択するようにスイッチ146を制御する。
【0030】
<S702> 制御部143は、パケットメモリ145がフルであるか否かを判定する(S702)。例えば、パケットメモリ145に空き領域が存在せず、且つ、リプレイスビット「2」が設定されたリプレイス領域が存在しない場合に、制御部143は、パケットメモリ145がフルであると判定する。パケットメモリ145がフルである場合には(S702−YES)、ライトパケットをパケットメモリ145には格納せず、後段のルータ又はキャッシュメモリに出力する。パケットメモリ145がフルでない場合には(S702−NO)、S704に進む。
【0031】
<S704> 制御部143は、バッファ142に格納されたライトパケットをパケットメモリ145に格納させる(S704)。このとき、制御部143は、パケットメモリ145にリプレイスビット「0」を設定する。
【0032】
<S706及びS708> 制御部143は、ライトパケット出力が完了したか否かを判定する(S706)。例えば、ルータ14aの制御部143は、S700において選択されたライト用出力ポートWOUTからライトパケットが出力された(すなわち、ライトパケットがルータ14bに転送された)ときに、ライトパケット出力が完了したと判定する。また、ルータ14bの制御部143は、S700において選択されたライト用出力ポートWOUTからライトパケットが出力された(すなわち、ライトパケットがキャッシュメモリ16aに格納された)ときに、ライトパケット出力が完了したと判定する。キャッシュメモリ16aは、ライトパケットが格納されると、ルータ14bを介して、ライトパケットを受領したことを示す受領信号をルータ14aへ出力する。ライトパケット出力が完了したと判定されると(S706−YES)、制御部143は、このライトパケットの読み出し及び削除を許可するリプレイスビット「2」をリプレイス領域に設定する(S708)。
【0033】
例えば、ルータ14aのパケットメモリ145がフルである場合には(S702−YES)、ライトパケットはルータ14bに出力される。そして、ルータ14bのパケットメモリ145に空きがある場合に、ライトパケットは格納される。一方、ルータ14bのパケットメモリ145がフルである場合には(S702−YES)、ライトパケットは、キャッシュメモリ16aに格納される。これにより、ルータ14aに先に到達したライトパケット(以下、「第1ライトパケット」という)がルータ14bのパケットメモリ145又はキャッシュメモリ16aに格納されていることと、第1ライトパケットの後に発行されたライトパケット(以下、「第2ライトパケット」という)及び第1ライトパケットの発行順と処理順とが同一であることと、が保証される。
【0034】
次に、本実施形態のリードリクエスト処理について説明する。図8は、本実施形態のリードリクエスト処理のフローチャートである。リードリクエスト処理は、各ルータ14a〜14dにより、ライトリクエスト処理と並行して実行される。
【0035】
<S800> 制御部143は、リードパケットに設定されたキャッシュアドレス(以下、「リードキャッシュアドレス」という)と同じアドレスがパケットメモリ145のアドレス領域に格納されている否かを判定する(S800)。該キャッシュアドレスが格納されていない場合には(S800−NO)、S802に進む。該キャッシュアドレスが格納されている場合には(S800−YES)、S812に進む。
【0036】
<S802> 制御部143は、解析部144の解析結果に基づいてスイッチ146を制御する。スイッチ146は、リード用出力ポートROUT0〜ROUT3の中からリードパケットの出力先に接続されたポートを選択する(S802)。すなわち、制御部143は、キャッシュアドレスがパケットメモリ145に格納されていない場合に、リードキャッシュアドレスに対応するキャッシュメモリへリードパケットを出力する。例えば、解析部144によりポートIDが解析されると、制御部143は、該ポートIDに対応するポートを選択するようにスイッチ146を制御する。
【0037】
<S812及びS814> 制御部143は、パケットメモリ145のリプレイス領域にリプレイスビット「2」が設定されているか否かを判定する(S812)。リプレイスビット「2」が設定されていない場合には(S812−NO)、リプレイスビット「2」が設定されるまで待機する。リプレイスビット「2」が設定されている場合には(S812−YES)、制御部143は、レスポンスパケットを出力するためのレスポンス処理(S814)を実行する。なお、制御部143は、リプレイスビット「2」が設定されるまで待機する代わりに、後段のルータのパケットメモリ145にリードキャッシュアドレスが設定されている場合には、後段のルータのパケットメモリ145に格納されたキャッシュデータを用いてレスポンス処理(S814)を実行しても良い。図9は、本実施形態に係るレスポンス処理のフローチャートである。
【0038】
<S900及びS902> 制御部143は、パケットメモリ145にリプレイスビット「1」を設定する(S900)。制御部143は、パケットメモリ145に格納されているデータを用いて、レスポンスパケットのヘッダフリットを生成する(S902)。例えば、制御部143は、タイプフィールドにタイプ情報「HEADER」、コマンドフィールドにコマンド情報「RESPONSE」、ソースフィールドにルータ14のルータID、宛先フィールドにパケットメモリ145の宛先領域に格納されたコアIDを設定する。さらに、制御部143は、ルータIDとコアIDとにより一意に決まる経路上のポートIDのリストをルーティングフィールドに設定する。
【0039】
<S904> 制御部143は、パケットメモリ145に格納されたデータを用いて、レスポンスパケットを生成する(S904)。例えば、制御部143は、パケットメモリ145のキャッシュデータを複数のフリットデータに分割し、各フリットデータをボディフリット又はテイルフリットに格納する。そして、制御部143は、ボディフリットにタイプ情報「BODY」を設定し、テイルフリットにタイプ情報「TAIL」を設定し、ヘッダフリット、ボディフリット、及びテイルフリットを所定順に配列して、レスポンスパケットを生成する。
【0040】
<S906> 制御部143は、解析部144のレスポンスパケットのヘッダフリットに基づいてスイッチ146を制御する。スイッチ146は、複数の出力ポート147の中からレスポンスパケットの出力先に接続されたポートを選択する(S906)。
【0041】
<S908> 制御部143は、レスポンスパケットの出力後、パケットメモリ145に格納されたライトパケットのリプレイスビット「2」を設定する。その結果、バッファ142に格納された他のライトパケットがパケットメモリ145に格納可能になる。
【0042】
次に、本実施形態のメニーコアシステムの動作例について説明する。図10は、本実施形態のメニーコアシステムの動作例におけるタイムラインである。図11は、本実施形態のメニーコアシステムの動作例におけるライトリクエスト(1)のライトパケット並びにリードリクエスト(2)及び(3)のリードパケットの概略図である。図12は、本実施形態のメニーコアシステムの動作例におけるパケットメモリ145に格納されるデータを示す概略図である。
【0043】
コア12aは、時刻T0にライトリクエスト(1)、時刻T1にリードリクエスト(2)、時刻T2にリードリクエスト(3)を発行したとする。ライトリクエスト(1)は、キャッシュメモリ16aのキャッシュアドレス「0x40002220」にキャッシュデータを書き込むためのリクエストである。リードリクエスト(2)は、キャッシュメモリ16cのキャッシュアドレス「0x40003200」に格納されたキャッシュデータを読み出すためのリクエストである。リードリクエスト(3)は、キャッシュメモリ16aのキャッシュアドレス「0x40002220」に格納されたキャッシュデータ(すなわち、ライトリクエスト(1)によりキャッシュメモリ16aに格納されるべきキャッシュデータ)を読み出すためのリクエストである。
【0044】
ルータ14aは、時刻T3からライトリクエスト(1)の処理(S604)を実行する。ライトパケットは、パケットメモリ145に格納される。ただし、時刻T6までは、ライトパケットは他のルータ14及びキャッシュメモリ16aに到達していないので、パケットメモリ145にはリプレイスビット「0」が設定される(図12(A))。時刻T6で、ライトパケットは、他のルータ14及びキャッシュメモリ16aの少なくとも1つに格納され、ルータ14aはパケットメモリ145にリプレイスビット「2」が設定される(図12(B))。
【0045】
一方、ルータ14aは、時刻T4からリードリクエスト(2)の処理(S614)を実行する。リードパケットは、ルータ14dを介して、キャッシュメモリ16cへ出力される。その結果、キャッシュメモリ16cのキャッシュアドレス「0x40003200」に格納されたキャッシュデータが、レスポンスデータとしてコア12aに転送される。リードリクエスト(2)の処理は、ライトリクエスト(1)の処理が完了する前の時刻T5に完了する。
【0046】
また、ルータ14aは、時刻T7からリードリクエスト(3)の処理(S614)を実行する。ライトリクエスト(1)により、ルータ14aのパケットメモリ145には、キャッシュメモリ16aのキャッシュアドレス「0x40002220」に書き込まれたキャッシュデータが格納されている。すなわち、リードリクエスト(3)に対するレスポンスデータがパケットメモリ145に格納されている(図12(B))。したがって、ルータ14aは、リードリクエスト(3)に対しレスポンス処理(S814)を実行する。時刻T7で、パケットメモリ145にリプレイスビット「1」が設定される(図12(C))。次いで、ルータ14aは、パケットメモリ145のデータを用いて生成されたレスポンスパケットをコア12aへ出力する。レスポンスパケットの出力後の時刻T8で、パケットメモリ145にリプレイスビット「2」が設定される(図12(D))。
【0047】
本実施形態によれば、制御部143は、解析部144の解析結果に基づいてパケットがリードパケット又はライトパケットの何れであるかを判定する。また、制御部143は、パケットがライトパケットである場合に、ライトパケットのキャッシュデータと、キャッシュアドレスと、をパケットメモリ145に格納する。また、制御部143は、パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスがパケットメモリ145に格納されている場合に、パケットメモリ145に格納されたキャッシュデータをリードパケットに対するレスポンスデータとして、リードリクエストを発行したコア(例えば、コア12a)へ出力する。これにより、ライトリクエスト及びリードリクエストの発行順が保証された上で、リードリクエストに対するリードレスポンスがキャッシュアクセスなしにコア12へ供給される。従って、ライトリクエスト及びリードリクエストの発行順と処理順が入れ替わったことに起因する問題を解消する機能をルータ14又は共有メモリ16に設ける必要はない。その結果、ルータ14又は共有メモリ16の構造を複雑にすることなく、リードアクセスレイテンシを低減することができる。
【0048】
本実施形態の変形例について説明する。図13は、本実施形態の変形例のライトパケットの構造を示す概略図である。図14は、本実施形態の変形例のパケットメモリ145の構造を示す概略図である。上述の実施形態と同様の内容の説明は省略する。
【0049】
ライトパケットのテイルフリットは、タイプフィールド及びフリットデータに加えて、リードビットフィールドを含む。リードビットフィールドには、リードビット(例えば1ビット)が設定される。リードビットは、ライトパケットが発行された後に発行されたリードパケットに対するレスポンスデータになり得るキャッシュデータがコア12へ出力されたか否かを示す。パケットメモリ145は、宛先領域と、アドレス領域と、リプレイス領域と、を備えるが、データ領域を備えていない。
【0050】
図15は、本実施形態の変形例のメニーコアシステムの動作例におけるパケットメモリ145に格納される情報及びライトパケットのテイルフリットを示す概略図である。コア12aでライトパケットが発行されると、ライトパケットはバッファ142に格納された後、キャッシュIDに対応するキャッシュメモリ16に出力される。このとき、コアID及びキャッシュアドレスがパケットメモリ145に格納され、リプレイスビット「0」及びリードビット「0」が設定される(図15(A))。ここで、リードビット「0」は、ライトパケットが発行された後に発行されたリードパケットのうち、該ライトパケットのキャッシュデータを読み出すためのリードパケットがルータ14から出力されていないことを示す。
【0051】
次いで、コア12aで該ライトパケットのキャッシュデータを読み出すリードパケットが発行されると、制御部143は、バッファ142に格納されたリードキャッシュアドレスと同じアドレスがパケットメモリ145に格納されている否かを判定する。該キャッシュアドレスが格納されている場合には、リードビット「1」が設定される(図15(B))。リードビット「1」は、ライトパケットが発行された後に発行されたリードパケットが、該ライトパケットより先に出力可能な状態になったこと(すなわち、リードリクエストがライトリクエストを追い越し可能になったこと)を示す。次いで、バッファ145に格納された該ライトパケットに基づいてレスポンスパケットが生成される。
【0052】
本実施形態の変形例によれば、ライトパケットにリードビットを含む。これにより、パケットメモリ145にデータ領域を設けなくても、本実施形態と同様の効果が得られる。その結果、パケットメモリ145の容量を低減することができる。
【0053】
本実施形態に係るメニーコアシステム10の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、メニーコアシステム10の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
【0054】
また、本実施形態に係るメニーコアシステム10の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
【0055】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0056】
10 メニーコアシステム
12 コア
14 ルータ
141 入力ポート
142 バッファ
143 制御部
144 解析部
145 パケットメモリ
146 スイッチ
147 複数の出力ポート
16 キャッシュメモリ
【技術分野】
【0001】
本発明の実施形態は、ルータ及びメニーコアシステムに関する。
【背景技術】
【0002】
一般的なメニーコアシステムでは、複数のコアと、複数のルータと、共有メモリと、がネットワークを介して接続されている。このようなメニーコアシステムでは、コアにより発行されるリードリクエスト及びライトリクエストは、ネットワークを介して共有メモリへ出力される。一般的に、リードリクエストはライトリクエストより転送量が小さいので、リードリクエストの到着時間はライトリクエストの処理時間より短い。
【0003】
しかしながら、従来のメニーコアシステムでは、ライトリクエストが発行された後にリードリクエストが発行されると、ライトリクエストの処理が完了するまでリードリクエストの処理は開始しない。従って、リードリクエストが発行されてからリードレスポンスがコアに到達するまでの時間(以下、「リードアクセスレイテンシ」という)が増加する。その結果、コアの性能だけでなく、メニーコアシステム全体の性能を低下させる。
【0004】
一方、ライトリクエストを一時的に格納するバッファをコアに設けることにより、ライトリクエストが発行された後に発行されるリードリクエストをライトリクエストより先に出力する方法がある。しかしながら、このような方法では、バッファから出力されたライトリクエストの処理の後に実行されるべきリードリクエストの処理が、ライトリクストの処理より先に実行される可能性がある。すなわち、リクエストの発行順と処理順とが入れ替わる。このため、ルータ又は共有メモリに、リクエストの発行順と処理順とが入れ替わったことに起因する問題を解消する機能を設ける必要がある。その結果、ルータ又は共有メモリの構造が複雑になる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特公平8−10447号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、ルータ又は共有メモリの構造を複雑にすることなく、リードアクセスレイテンシを低減することである。
【課題を解決するための手段】
【0007】
本発明の実施形態のルータは、複数のコアと、複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理する。ルータは、解析部と、パケットメモリと、制御部と、を備える。解析部は、パケットがリードパケット及びライトパケットの何れであるかを解析する。パケットメモリは、コアにより発行されたライトパケットの少なくとも一部を格納可能である。制御部は、解析部の解析結果に基づいて、パケットがライトパケットである場合に、パケットのキャッシュデータと、キャッシュデータが格納されるべきキャッシュアドレスと、をパケットメモリに格納し、パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスがパケットメモリに格納されている場合に、パケットメモリに格納されたキャッシュデータをリードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する。
【図面の簡単な説明】
【0008】
【図1】本実施形態のメニーコアシステム10のネットワークトポロジを示すブロック図。
【図2】本実施形態のメニーコアシステムにおいて取り扱われるライトパケットの構造を示す概略図。
【図3】本実施形態のメニーコアシステムにおいて取り扱われるリードパケットの構造を示す概略図。
【図4】本実施形態のメニーコアシステムにおいて取り扱われるレスポンスパケットの構造を示す概略図。
【図5】本実施形態のルータ14の構成を示すブロック図。
【図6】本実施形態のリクエスト処理のフローチャート。
【図7】本実施形態のライトリクエスト処理のフローチャート。
【図8】本実施形態のリードリクエスト処理のフローチャート。
【図9】本実施形態に係るレスポンス処理のフローチャート。
【図10】本実施形態のメニーコアシステムの動作例におけるタイムライン。
【図11】本実施形態のメニーコアシステムの動作例におけるライトリクエスト(1)のライトパケット並びにリードリクエスト(2)及び(3)のリードパケットの概略図。
【図12】本実施形態のメニーコアシステムの動作例におけるパケットメモリ145に格納されるデータを示す概略図。
【図13】本実施形態の変形例のライトパケットの構造を示す概略図。
【図14】本実施形態の変形例のパケットメモリ145の構造を示す概略図。
【図15】本実施形態の変形例のメニーコアシステムの動作例におけるパケットメモリ145に格納される情報及びライトパケットのテイルフリットを示す概略図。
【発明を実施するための形態】
【0009】
本発明の実施形態のメニーコアシステムの構成について説明する。図1は、本実施形態のメニーコアシステム10のネットワークトポロジを示すブロック図である。メニーコアシステム10は、複数のコア12a〜12dと、複数のルータ14a〜14dと、複数のキャッシュメモリ16a〜16dと、を備える。
【0010】
各コア12a〜12dは、各キャッシュメモリ16a〜16dに対するリードリクエストのパケット(以下、「リードパケット」という)と、ライトリクエストのパケット(以下、「ライトパケット」という)と、を発行するとともに、リードリクエストに対するレスポンスのパケット(以下、「レスポンスパケット」という)に含まれるデータ(以下、「レスポンスデータ」という)に対して所定の処理を実行するモジュールである。各ルータ14a〜14dは、各コア12a〜12d及び各キャッシュメモリ16a〜16d間で転送されるパケットの経路を管理するモジュールである。以下、各ルータ14a〜14dを「ルータ14」と表し、各コア12a〜12dを「コア12」と表し、各キャッシュメモリ16a〜16dを「キャッシュメモリ16」と表する場合がある。
【0011】
なお、本実施形態では、コア12、ルータ14、及びキャッシュメモリ16の数は4個に限られない。また、本実施形態では、メニーコアシステムのネットワークトポロジは、図1のネットワークトポロジに限られない。
【0012】
図2は、本実施形態のメニーコアシステムにおいて取り扱われるライトパケットの構造を示す概略図である。ライトパケットは、ヘッダフリットと、第1ボディフリットと、第2ボディフリットと、テイルフリットと、を含む(図2(A))。
【0013】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む(図2(B))。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「HEADER」が設定される。コマンドフィールドには、ライトパケットであることを示すコマンド情報「WRITE」が設定される。ソースフィールドには、ライトパケットを発行したコア12の固有情報(以下、「コアID(Identification)」という)が設定される。宛先フィールドには、ライトパケットの出力先であるキャッシュメモリ16の固有情報(以下、「キャッシュID」という)が設定される。ルーティングフィールドには、ソースフィールドに設定されたコアID及び宛先フィールドに設定されたキャッシュIDにより一意に決まるルータ14の入力ポート及び出力ポートの固有情報(以下、「ポートID」という)のリストが設定される。ルーティングフィールドは、可変長フィールドである。
【0014】
第1ボディフリットは、ヘッダフリットに後続するフリットである。第1ボディフリットは、タイプフィールドと、アドレスフィールドと、フリットデータと、を含む(図2(C))。タイプフィールドには、ボディフリットであることを示すタイプ情報「BODY」が設定される。アドレスフィールドには、キャッシュデータの格納先であるキャッシュメモリ16のアドレス(以下、「キャッシュアドレス」という)が設定される。フリットデータは、キャッシュデータが第1ボディフリット、第2ボディフリット、及びテイルフリットの総数で分割されたものである。例えば、1キャッシュラインサイズが256バイトであって、第1ボディフリット、第2ボディフリット、及びテイルフリットの総数が4個である場合には、フリットデータは、64バイトである。
【0015】
第2ボディフリットは、第1ボディフリットに後続するフリットである。テイルフリットは、終端に配置されるフリットである。第2ボディフリット及びテイルフリットは、それぞれ、タイプフィールドと、フリットデータと、を含む(図2(D)及び(E))。第2ボディフリットのタイプフィールドには、ボディフリットであることを示すタイプ情報「BODY」が設定される。テイルフリットのタイプフィールドには、テイルフリットであることを示すタイプ情報「TAIL」が設定される。フリットデータは、第1ボディフリットと同様である。
【0016】
図3は、本実施形態のメニーコアシステムにおいて取り扱われるリードパケットの構造を示す概略図である。リードパケットは、ヘッダフリットと、テイルフリットと、を含む(図3(A))。
【0017】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む(図3(B))。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「HEADER」が設定される。コマンドフィールドには、リードパケットであることを示すコマンド情報「READ」が設定される。ソースフィールドには、リードパケットを発行したコア12のコアIDが設定される。宛先フィールドには、リードパケットの出力先であるキャッシュメモリ16のキャッシュIDが設定される。ルーティングフィールドには、ポートIDのリストが設定される。ルーティングフィールドは、可変長フィールドである。
【0018】
テイルフリットは、終端に配置されるフリットである。テイルフリットは、タイプフィールドと、アドレスフィールドと、を含む(図3(C))。タイプフィールドには、テイルフリットであることを示すタイプ情報「TAIL」が設定される。アドレスフィールドには、キャッシュメモリ16から読み出されるべきキャッシュデータが格納されたキャッシュアドレスが設定される。リードパケットは、ライトパケットと異なり、フリットデータを含まない。すなわち、リードパケットのデータ量は、ライトパケットのデータ量より少ない。
【0019】
図4は、本実施形態のメニーコアシステムにおいて取り扱われるレスポンスパケットの構造を示す概略図である。レスポンスパケットは、ヘッダフリットと、ボディフリットと、テイルフリットと、を含む(図4(A))。
【0020】
ヘッダフリットは、先頭に配置されるフリットである。ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、ルーティングフィールドと、を含む(図4(B))。タイプフィールドには、ヘッダフリットであることを示すタイプ情報「HEADER」が設定される。コマンドフィールドには、レスポンスパケットであることを示すコマンド情報「RESPONSE」が設定される。ソースフィールドには、レスポンスするべきキャッシュID又はルータIDが設定される。宛先フィールドには、レスポンスパケットの出力先であるコア12のコアIDが設定される。ルーティングフィールドには、ソースフィールドに設定されたキャッシュID又はルータIDと、宛先フィールドに設定されたコアIDと、により一意に決まるポートIDのリストが設定される。ルーティングフィールドは、可変長フィールドである。
【0021】
ボディフリットは、ヘッダフリットに後続するフリットである。テイルフリットは、終端に配置されるフリットである。ボディフリット及びテイルフリットは、それぞれ、タイプフィールドと、フリットデータと、を含む(図4(C)及び(D))。ボディフリットのタイプフィールドには、ボディフリットであることを示すタイプ情報「BODY」が設定される。テイルフリットのタイプフィールドには、テイルフリットであることを示すタイプ情報「TAIL」が設定される。フリットデータは、ライトパケットと同様である。
【0022】
図5は、本実施形態のルータ14の構成を示すブロック図である。ルータ14は、複数の入力ポート141と、複数のバッファ142と、制御部143と、解析部144と、パケットメモリ145と、スイッチ146と、複数の出力ポート147と、を備える。
【0023】
各入力ポート141は、リード用入力ポートRIN0〜RIN3と、ライト用入力ポートWIN0〜WIN3と、を含む。各出力ポート147は、リード用出力ポートROUT0〜ROUT3と、ライト用出力ポートWOUT0〜WOUT3と、を含む。すなわち、ルータ14において、リードチャネルとライトチャネルとは、物理的に分かれている。これにより、リードリクエスト及びライトリクエストが並列に処理可能になる。なお、入力ポート141及び出力ポート147の数は、接続されるモジュール(例えば、コア、キャッシュメモリ、及びルータ等)の数により決まる。各バッファ142は、各入力ポート141に対応して設けられ、各入力ポート141に入力されたパケットを一時的に格納するモジュールである。
【0024】
制御部143は、解析部144、パケットメモリ145、及びスイッチ146を制御するモジュールである。解析部144は、パケットを解析するモジュールである。スイッチ146は、パケットの出力先に接続された出力ポートを選択するモジュールである。
【0025】
パケットメモリ145は、コア12で発行されたライトパケットの少なくとも一部を格納可能である。パケットメモリ145は、宛先領域と、アドレス領域と、データ領域と、リプレイス領域と、を含む。宛先領域は、ヘッダフリットのソースフィールドに設定されたコアIDを格納する。アドレス領域は、第1ボディフリットのアドレスフィールドに設定されたキャッシュアドレスを格納する。データ領域は、ライトパケットに含まれる全てのフリットデータ(すなわち、キャッシュデータ)を格納する。リプレイス領域には、ライトパケットの読み出し及び削除の可否を示すリプレイスビット(例えば、2ビット)を設定する。
【0026】
本実施形態のメニーコアシステムの動作について説明する。図6は、本実施形態のリクエスト処理のフローチャートである。例えば、リプレイスビットは、削除が許可されたライトパケットが存在しない場合を「2」、ライトパケットの読み出し及び削除を禁止する場合を「0」、ライトパケットの読み出しを許可し且つ削除を禁止する場合に「1」とする。
【0027】
<S600〜S614> 解析部144は、入力されたリクエストパケットのヘッダフリットを解析する(S600)。コマンド情報「WRITE」が設定されている場合には(S602−YES)、ライトリクエスト処理(S604)に進む。コマンド情報「READ」が設定されている場合には(S602−NO)、リードリクエスト処理(S614)に進む。
【0028】
まず、本実施形態のライトリクエスト処理について説明する。図7は、本実施形態のライトリクエスト処理のフローチャートである。ライトリクエスト処理は、各ルータ14で実行される。以下、ライトリクエスト処理の一例として、コア12aがキャッシュメモリ16aに対してライトリクエストを発行した場合について説明する。
【0029】
<S700> 制御部143は、解析部144の解析結果に基づいてスイッチ146を制御する。スイッチ146は、ライト用出力ポートWOUT0〜WOUT3の中からライトパケットの出力先に接続されたポートを選択する(S700)。例えば、解析部144によりポートIDが解析されると、制御部143は、該ポートIDに対応するポートを選択するようにスイッチ146を制御する。
【0030】
<S702> 制御部143は、パケットメモリ145がフルであるか否かを判定する(S702)。例えば、パケットメモリ145に空き領域が存在せず、且つ、リプレイスビット「2」が設定されたリプレイス領域が存在しない場合に、制御部143は、パケットメモリ145がフルであると判定する。パケットメモリ145がフルである場合には(S702−YES)、ライトパケットをパケットメモリ145には格納せず、後段のルータ又はキャッシュメモリに出力する。パケットメモリ145がフルでない場合には(S702−NO)、S704に進む。
【0031】
<S704> 制御部143は、バッファ142に格納されたライトパケットをパケットメモリ145に格納させる(S704)。このとき、制御部143は、パケットメモリ145にリプレイスビット「0」を設定する。
【0032】
<S706及びS708> 制御部143は、ライトパケット出力が完了したか否かを判定する(S706)。例えば、ルータ14aの制御部143は、S700において選択されたライト用出力ポートWOUTからライトパケットが出力された(すなわち、ライトパケットがルータ14bに転送された)ときに、ライトパケット出力が完了したと判定する。また、ルータ14bの制御部143は、S700において選択されたライト用出力ポートWOUTからライトパケットが出力された(すなわち、ライトパケットがキャッシュメモリ16aに格納された)ときに、ライトパケット出力が完了したと判定する。キャッシュメモリ16aは、ライトパケットが格納されると、ルータ14bを介して、ライトパケットを受領したことを示す受領信号をルータ14aへ出力する。ライトパケット出力が完了したと判定されると(S706−YES)、制御部143は、このライトパケットの読み出し及び削除を許可するリプレイスビット「2」をリプレイス領域に設定する(S708)。
【0033】
例えば、ルータ14aのパケットメモリ145がフルである場合には(S702−YES)、ライトパケットはルータ14bに出力される。そして、ルータ14bのパケットメモリ145に空きがある場合に、ライトパケットは格納される。一方、ルータ14bのパケットメモリ145がフルである場合には(S702−YES)、ライトパケットは、キャッシュメモリ16aに格納される。これにより、ルータ14aに先に到達したライトパケット(以下、「第1ライトパケット」という)がルータ14bのパケットメモリ145又はキャッシュメモリ16aに格納されていることと、第1ライトパケットの後に発行されたライトパケット(以下、「第2ライトパケット」という)及び第1ライトパケットの発行順と処理順とが同一であることと、が保証される。
【0034】
次に、本実施形態のリードリクエスト処理について説明する。図8は、本実施形態のリードリクエスト処理のフローチャートである。リードリクエスト処理は、各ルータ14a〜14dにより、ライトリクエスト処理と並行して実行される。
【0035】
<S800> 制御部143は、リードパケットに設定されたキャッシュアドレス(以下、「リードキャッシュアドレス」という)と同じアドレスがパケットメモリ145のアドレス領域に格納されている否かを判定する(S800)。該キャッシュアドレスが格納されていない場合には(S800−NO)、S802に進む。該キャッシュアドレスが格納されている場合には(S800−YES)、S812に進む。
【0036】
<S802> 制御部143は、解析部144の解析結果に基づいてスイッチ146を制御する。スイッチ146は、リード用出力ポートROUT0〜ROUT3の中からリードパケットの出力先に接続されたポートを選択する(S802)。すなわち、制御部143は、キャッシュアドレスがパケットメモリ145に格納されていない場合に、リードキャッシュアドレスに対応するキャッシュメモリへリードパケットを出力する。例えば、解析部144によりポートIDが解析されると、制御部143は、該ポートIDに対応するポートを選択するようにスイッチ146を制御する。
【0037】
<S812及びS814> 制御部143は、パケットメモリ145のリプレイス領域にリプレイスビット「2」が設定されているか否かを判定する(S812)。リプレイスビット「2」が設定されていない場合には(S812−NO)、リプレイスビット「2」が設定されるまで待機する。リプレイスビット「2」が設定されている場合には(S812−YES)、制御部143は、レスポンスパケットを出力するためのレスポンス処理(S814)を実行する。なお、制御部143は、リプレイスビット「2」が設定されるまで待機する代わりに、後段のルータのパケットメモリ145にリードキャッシュアドレスが設定されている場合には、後段のルータのパケットメモリ145に格納されたキャッシュデータを用いてレスポンス処理(S814)を実行しても良い。図9は、本実施形態に係るレスポンス処理のフローチャートである。
【0038】
<S900及びS902> 制御部143は、パケットメモリ145にリプレイスビット「1」を設定する(S900)。制御部143は、パケットメモリ145に格納されているデータを用いて、レスポンスパケットのヘッダフリットを生成する(S902)。例えば、制御部143は、タイプフィールドにタイプ情報「HEADER」、コマンドフィールドにコマンド情報「RESPONSE」、ソースフィールドにルータ14のルータID、宛先フィールドにパケットメモリ145の宛先領域に格納されたコアIDを設定する。さらに、制御部143は、ルータIDとコアIDとにより一意に決まる経路上のポートIDのリストをルーティングフィールドに設定する。
【0039】
<S904> 制御部143は、パケットメモリ145に格納されたデータを用いて、レスポンスパケットを生成する(S904)。例えば、制御部143は、パケットメモリ145のキャッシュデータを複数のフリットデータに分割し、各フリットデータをボディフリット又はテイルフリットに格納する。そして、制御部143は、ボディフリットにタイプ情報「BODY」を設定し、テイルフリットにタイプ情報「TAIL」を設定し、ヘッダフリット、ボディフリット、及びテイルフリットを所定順に配列して、レスポンスパケットを生成する。
【0040】
<S906> 制御部143は、解析部144のレスポンスパケットのヘッダフリットに基づいてスイッチ146を制御する。スイッチ146は、複数の出力ポート147の中からレスポンスパケットの出力先に接続されたポートを選択する(S906)。
【0041】
<S908> 制御部143は、レスポンスパケットの出力後、パケットメモリ145に格納されたライトパケットのリプレイスビット「2」を設定する。その結果、バッファ142に格納された他のライトパケットがパケットメモリ145に格納可能になる。
【0042】
次に、本実施形態のメニーコアシステムの動作例について説明する。図10は、本実施形態のメニーコアシステムの動作例におけるタイムラインである。図11は、本実施形態のメニーコアシステムの動作例におけるライトリクエスト(1)のライトパケット並びにリードリクエスト(2)及び(3)のリードパケットの概略図である。図12は、本実施形態のメニーコアシステムの動作例におけるパケットメモリ145に格納されるデータを示す概略図である。
【0043】
コア12aは、時刻T0にライトリクエスト(1)、時刻T1にリードリクエスト(2)、時刻T2にリードリクエスト(3)を発行したとする。ライトリクエスト(1)は、キャッシュメモリ16aのキャッシュアドレス「0x40002220」にキャッシュデータを書き込むためのリクエストである。リードリクエスト(2)は、キャッシュメモリ16cのキャッシュアドレス「0x40003200」に格納されたキャッシュデータを読み出すためのリクエストである。リードリクエスト(3)は、キャッシュメモリ16aのキャッシュアドレス「0x40002220」に格納されたキャッシュデータ(すなわち、ライトリクエスト(1)によりキャッシュメモリ16aに格納されるべきキャッシュデータ)を読み出すためのリクエストである。
【0044】
ルータ14aは、時刻T3からライトリクエスト(1)の処理(S604)を実行する。ライトパケットは、パケットメモリ145に格納される。ただし、時刻T6までは、ライトパケットは他のルータ14及びキャッシュメモリ16aに到達していないので、パケットメモリ145にはリプレイスビット「0」が設定される(図12(A))。時刻T6で、ライトパケットは、他のルータ14及びキャッシュメモリ16aの少なくとも1つに格納され、ルータ14aはパケットメモリ145にリプレイスビット「2」が設定される(図12(B))。
【0045】
一方、ルータ14aは、時刻T4からリードリクエスト(2)の処理(S614)を実行する。リードパケットは、ルータ14dを介して、キャッシュメモリ16cへ出力される。その結果、キャッシュメモリ16cのキャッシュアドレス「0x40003200」に格納されたキャッシュデータが、レスポンスデータとしてコア12aに転送される。リードリクエスト(2)の処理は、ライトリクエスト(1)の処理が完了する前の時刻T5に完了する。
【0046】
また、ルータ14aは、時刻T7からリードリクエスト(3)の処理(S614)を実行する。ライトリクエスト(1)により、ルータ14aのパケットメモリ145には、キャッシュメモリ16aのキャッシュアドレス「0x40002220」に書き込まれたキャッシュデータが格納されている。すなわち、リードリクエスト(3)に対するレスポンスデータがパケットメモリ145に格納されている(図12(B))。したがって、ルータ14aは、リードリクエスト(3)に対しレスポンス処理(S814)を実行する。時刻T7で、パケットメモリ145にリプレイスビット「1」が設定される(図12(C))。次いで、ルータ14aは、パケットメモリ145のデータを用いて生成されたレスポンスパケットをコア12aへ出力する。レスポンスパケットの出力後の時刻T8で、パケットメモリ145にリプレイスビット「2」が設定される(図12(D))。
【0047】
本実施形態によれば、制御部143は、解析部144の解析結果に基づいてパケットがリードパケット又はライトパケットの何れであるかを判定する。また、制御部143は、パケットがライトパケットである場合に、ライトパケットのキャッシュデータと、キャッシュアドレスと、をパケットメモリ145に格納する。また、制御部143は、パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスがパケットメモリ145に格納されている場合に、パケットメモリ145に格納されたキャッシュデータをリードパケットに対するレスポンスデータとして、リードリクエストを発行したコア(例えば、コア12a)へ出力する。これにより、ライトリクエスト及びリードリクエストの発行順が保証された上で、リードリクエストに対するリードレスポンスがキャッシュアクセスなしにコア12へ供給される。従って、ライトリクエスト及びリードリクエストの発行順と処理順が入れ替わったことに起因する問題を解消する機能をルータ14又は共有メモリ16に設ける必要はない。その結果、ルータ14又は共有メモリ16の構造を複雑にすることなく、リードアクセスレイテンシを低減することができる。
【0048】
本実施形態の変形例について説明する。図13は、本実施形態の変形例のライトパケットの構造を示す概略図である。図14は、本実施形態の変形例のパケットメモリ145の構造を示す概略図である。上述の実施形態と同様の内容の説明は省略する。
【0049】
ライトパケットのテイルフリットは、タイプフィールド及びフリットデータに加えて、リードビットフィールドを含む。リードビットフィールドには、リードビット(例えば1ビット)が設定される。リードビットは、ライトパケットが発行された後に発行されたリードパケットに対するレスポンスデータになり得るキャッシュデータがコア12へ出力されたか否かを示す。パケットメモリ145は、宛先領域と、アドレス領域と、リプレイス領域と、を備えるが、データ領域を備えていない。
【0050】
図15は、本実施形態の変形例のメニーコアシステムの動作例におけるパケットメモリ145に格納される情報及びライトパケットのテイルフリットを示す概略図である。コア12aでライトパケットが発行されると、ライトパケットはバッファ142に格納された後、キャッシュIDに対応するキャッシュメモリ16に出力される。このとき、コアID及びキャッシュアドレスがパケットメモリ145に格納され、リプレイスビット「0」及びリードビット「0」が設定される(図15(A))。ここで、リードビット「0」は、ライトパケットが発行された後に発行されたリードパケットのうち、該ライトパケットのキャッシュデータを読み出すためのリードパケットがルータ14から出力されていないことを示す。
【0051】
次いで、コア12aで該ライトパケットのキャッシュデータを読み出すリードパケットが発行されると、制御部143は、バッファ142に格納されたリードキャッシュアドレスと同じアドレスがパケットメモリ145に格納されている否かを判定する。該キャッシュアドレスが格納されている場合には、リードビット「1」が設定される(図15(B))。リードビット「1」は、ライトパケットが発行された後に発行されたリードパケットが、該ライトパケットより先に出力可能な状態になったこと(すなわち、リードリクエストがライトリクエストを追い越し可能になったこと)を示す。次いで、バッファ145に格納された該ライトパケットに基づいてレスポンスパケットが生成される。
【0052】
本実施形態の変形例によれば、ライトパケットにリードビットを含む。これにより、パケットメモリ145にデータ領域を設けなくても、本実施形態と同様の効果が得られる。その結果、パケットメモリ145の容量を低減することができる。
【0053】
本実施形態に係るメニーコアシステム10の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、メニーコアシステム10の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
【0054】
また、本実施形態に係るメニーコアシステム10の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
【0055】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0056】
10 メニーコアシステム
12 コア
14 ルータ
141 入力ポート
142 バッファ
143 制御部
144 解析部
145 パケットメモリ
146 スイッチ
147 複数の出力ポート
16 キャッシュメモリ
【特許請求の範囲】
【請求項1】
複数のコアと、前記複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理するルータであって、
前記パケットがリードパケット及びライトパケットの何れであるかを解析する解析部と、
前記コアにより発行されたライトパケットの少なくとも一部を格納可能なパケットメモリと、
前記解析部の解析結果に基づいて、前記パケットがライトパケットである場合に、前記パケットのキャッシュデータと、前記キャッシュデータが格納されるべきキャッシュアドレスと、を前記パケットメモリに格納し、前記パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスが前記パケットメモリに格納されている場合に、前記パケットメモリに格納されたキャッシュデータを前記リードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する制御部と、
を備えることを特徴とするルータ。
【請求項2】
前記制御部は、前記パケットメモリに格納されたキャッシュデータの読み出し及び削除の可否を示すリプレイスビットを前記パケットメモリのリプレイス領域に設定する、請求項1に記載のルータ。
【請求項3】
前記制御部は、前記ライトパケットの出力が完了した場合に、前記キャッシュデータの読み出し及び削除を許可するリプレイスビットを前記リプレイス領域に設定する、請求項2に記載のルータ。
【請求項4】
前記制御部は、前記パケットメモリに格納されたキャッシュデータをレスポンスデータとして出力するときに、前記キャッシュデータの読み出しを許可し、削除を禁止するリプレイスビットを前記リプレイス領域に設定する、請求項2又は3に記載のルータ。
【請求項5】
複数のコアと、
前記複数のコアからアクセス可能なキャッシュメモリと、
前記コアと前記キャッシュメモリとの間で転送されるパケットの経路を管理するルータと、を備え、
前記ルータは、
前記パケットがリードパケット及びライトパケットの何れであるかを解析する解析部と、
前記コアにより発行されたライトパケットの少なくとも一部を格納可能なパケットメモリと、
前記解析部の解析結果に基づいて、前記パケットが前記ライトパケットである場合に、前記パケットのキャッシュデータと、前記キャッシュデータが格納されるべきキャッシュアドレスと、を前記パケットメモリに格納し、前記パケットが前記リードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスが前記パケットメモリに格納されている場合に、前記パケットメモリに格納されたキャッシュデータを前記リードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する制御部と、
を備えることを特徴とするメニーコアシステム。
【請求項1】
複数のコアと、前記複数のコアからアクセス可能なキャッシュメモリとの間で転送されるパケットの経路を管理するルータであって、
前記パケットがリードパケット及びライトパケットの何れであるかを解析する解析部と、
前記コアにより発行されたライトパケットの少なくとも一部を格納可能なパケットメモリと、
前記解析部の解析結果に基づいて、前記パケットがライトパケットである場合に、前記パケットのキャッシュデータと、前記キャッシュデータが格納されるべきキャッシュアドレスと、を前記パケットメモリに格納し、前記パケットがリードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスが前記パケットメモリに格納されている場合に、前記パケットメモリに格納されたキャッシュデータを前記リードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する制御部と、
を備えることを特徴とするルータ。
【請求項2】
前記制御部は、前記パケットメモリに格納されたキャッシュデータの読み出し及び削除の可否を示すリプレイスビットを前記パケットメモリのリプレイス領域に設定する、請求項1に記載のルータ。
【請求項3】
前記制御部は、前記ライトパケットの出力が完了した場合に、前記キャッシュデータの読み出し及び削除を許可するリプレイスビットを前記リプレイス領域に設定する、請求項2に記載のルータ。
【請求項4】
前記制御部は、前記パケットメモリに格納されたキャッシュデータをレスポンスデータとして出力するときに、前記キャッシュデータの読み出しを許可し、削除を禁止するリプレイスビットを前記リプレイス領域に設定する、請求項2又は3に記載のルータ。
【請求項5】
複数のコアと、
前記複数のコアからアクセス可能なキャッシュメモリと、
前記コアと前記キャッシュメモリとの間で転送されるパケットの経路を管理するルータと、を備え、
前記ルータは、
前記パケットがリードパケット及びライトパケットの何れであるかを解析する解析部と、
前記コアにより発行されたライトパケットの少なくとも一部を格納可能なパケットメモリと、
前記解析部の解析結果に基づいて、前記パケットが前記ライトパケットである場合に、前記パケットのキャッシュデータと、前記キャッシュデータが格納されるべきキャッシュアドレスと、を前記パケットメモリに格納し、前記パケットが前記リードパケットであり、且つ、キャッシュデータが読み出されるべきキャッシュアドレスが前記パケットメモリに格納されている場合に、前記パケットメモリに格納されたキャッシュデータを前記リードパケットに対するレスポンスデータとして、リードリクエストを発行したコアへ出力する制御部と、
を備えることを特徴とするメニーコアシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−155650(P2012−155650A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−16317(P2011−16317)
【出願日】平成23年1月28日(2011.1.28)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願日】平成23年1月28日(2011.1.28)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]