JP2012146201A - オンチップルータ及びそれを用いたマルチコアシステム - Google Patents

オンチップルータ及びそれを用いたマルチコアシステム Download PDF

Info

Publication number
JP2012146201A
JP2012146201A JP2011005106A JP2011005106A JP2012146201A JP 2012146201 A JP2012146201 A JP 2012146201A JP 2011005106 A JP2011005106 A JP 2011005106A JP 2011005106 A JP2011005106 A JP 2011005106A JP 2012146201 A JP2012146201 A JP 2012146201A
Authority
JP
Japan
Prior art keywords
destination
router
core
packet
request packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2011005106A
Other languages
English (en)
Inventor
Toru Sano
野 徹 佐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011005106A priority Critical patent/JP2012146201A/ja
Priority to US13/191,212 priority patent/US8848703B2/en
Publication of JP2012146201A publication Critical patent/JP2012146201A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus

Abstract

【課題】コア間通信用のバッファを新たに設けることなく、コア間通信のレイテンシを低減可能なオンチップルータ及びそれを用いたマルチコアシステムを提供する。
【解決手段】実施形態に係るオンチップルータは、宛先変更用テーブルと、検索部と、経路計算部と、ヘッダー生成部とを備える。宛先変更用テーブルは、共有メモリ上の宛先アドレスと、宛先コアに接続されたルータの識別子とを対応させる。検索部は、書き込み要求パケットの宛先アドレスと同一のアドレスを有する有効なエントリが宛先変更用テーブルに存在するか否かを検索する。経路計算部は、検索の結果、有効なエントリが前記宛先変更用テーブルに存在すれば、そのエントリの識別子のルータを宛先として経路計算を行う。ヘッダー生成部は、計算されたルータの識別子を書き込み要求パケットのヘッダーに格納し、かつ宛先を変更したことを示すリルーテッドフラグを立てる。
【選択図】図4

Description

本発明の実施形態は、オンチップルータ及びそれを用いたマルチコアシステムに関する。
共有メモリ型のマルチコアシステムでは、プロセッサコア(以下、「コア」)間の通信は共有メモリを介して行われる。まず、コアAが書き込み要求パケットをオンチップルータ(以下、「ルータ」)により共有メモリに送信する。そして、書き込み要求パケットに含まれるデータが共有メモリ上の所定アドレスに書き込まれる。その後、所定アドレスのデータを必要とするコアBがデータを読み出すための読出し要求パケットを共有メモリに送信し、コアAが書き込んだデータを取得する。
このように共有メモリ型マルチコアシステムにおけるコア間通信では、共有メモリを介してデータをやりとりするため、一般にレイテンシが大きいという問題がある。さらに、コア間通信による共有メモリの一時的な使用が、共有メモリを圧迫するという問題もある。
一方、いわゆるメッセージパッシング型と呼ばれるコア間通信方式では、共有メモリを介さずに、コアAからコアBにデータを直接送信する。この方式の場合、レイテンシを低減させることができるが、次の問題がある。コア間通信に用いる専用バッファをコアごとに設ける必要があるため、実装コストの増大、チップ面積の増加、消費電力の増大という問題が発生する。さらに、専用バッファには、他のコアからアクセス可能なようにグローバルアドレスを割り当てる必要があるため、限られたアドレス空間を圧迫するという問題もある。
特開2009−37273号公報
本発明が解決しようとする課題は、コア間通信用のバッファを新たに設けることなく、コア間通信のレイテンシを低減可能なオンチップルータ及びそれを用いたマルチコアシステムを提供することである。
一実施形態に係るオンチップルータは、共有メモリ型のマルチコアシステムにおいてコア間通信を行うオンチップルータであって、バッファと、スイッチ部と、宛先変更用テーブルと、検索部と、経路計算部と、ヘッダー生成部と、を備える。
前記バッファは、各入力ポートに設けられており、前記入力ポートで受信したデータを格納する。前記スイッチ部は、受信したパケットが所望の出力ポートから送出されるように、パケットの出力先を切り替える。前記宛先変更用テーブルは、共有メモリ上の宛先アドレスと、宛先コアに直接接続されたルータの識別子とを対応させており、送信元コアにより設定される。前記検索部は、前記送信元コアから受信した書き込み要求パケットのヘッダーに格納された前記共有メモリ上の宛先アドレスと同一のアドレスを有する有効なエントリが前記宛先変更用テーブルに存在するかどうかを検索する第1の検索を行う。前記経路計算部は、前記第1の検索の結果、前記有効なエントリが前記宛先変更用テーブルに存在すれば、そのエントリの識別子のルータを宛先としてソースルーティング方式により経路計算を行う。前記ヘッダー生成部は、前記経路計算により求められたルータの識別子を、前記書き込み要求パケットのヘッダーのホップルータフィールドに格納し、かつ宛先を変更したことを示すリルーテッドフラグを立てる。
一実施形態に係る共有メモリ型のマルチコアシステムの概略的な構成を示す図である。 マルチコアシステムのコア間通信で用いられるパケットの構造を示す図である。 ソースルーティング方式におけるパケットのヘッダーの詳細を示す図である。 一実施形態に係るルータの構成を示す図である。 宛先変更用テーブルの一例を示す図である。 送信元コアと直接接続されたルータにより生成されたヘッダーの詳細を示す図である。 第1の実施形態におけるパケットの転送経路の一例を示す図である。 適応型ルーティング方式におけるパケットのヘッダーの詳細を示す図である。 第3の実施形態に係るルータの構成を示す図である。 第4の実施形態におけるパケットの転送経路の一例を示す図である。 第5の実施形態に係る宛先変更用テーブルの一例を示す図である。 第5の実施形態におけるパケットの転送経路の一例を示す図である。
以下、本発明に係る実施形態について図面を参照しながら説明する。なお、各図において同等の機能を有する構成要素には同一の符号を付し、同一符号の構成要素の詳しい説明は繰り返さない。
まず、各実施形態に共通するマルチコアシステムの構成およびコア間通信に用いられるパケットの概略的な構成について説明する。
図1は、本実施形態に係る共有メモリ型のマルチコアシステムの概略的な構成を示している。図1のマルチコアシステムは、16個のコア101〜116と、20個のルータ201〜220と、4個の共有メモリ301〜304と、を含んでいる。
ルータ201〜220は、格子状に配置され、メッシュ型のネットワークを構成している。ルータ201〜216は対応するコア101〜116と接続されており、ルータ217〜220は対応する共有メモリ301〜304と接続されている。例えば、コア101にはルータ201が接続されており、共有メモリ301にはルータ217が接続されている。各コアは、メッシュ状に接続されたルータを介して、互いに接続されるとともに共有メモリと接続されている。
なお、図1においてルータを示す円内の数字は、ルータの識別子(ID)を示している。即ち、ルータ201〜220の識別子はそれぞれ、0〜19である。また、共有メモリ301〜304については、キャッシュ機能を有する場合、メモリが用いられることもある。
次に、マルチコアシステムの通信で用いられるパケットの構造について、図2を用いて説明する。パケットは、宛先などに関する情報が格納されるヘッダーと、書き込みデータ又は読出しデータ等が格納されるボディとから構成される。ヘッダーおよびボディはフリット(Flit)と呼ばれるデータ単位から構成されており、図2に示すパケットの例では、ヘッダーは2つのヘッダーフリット0及び1からなり、ボディは5つのボディフリット0〜4からなる。
次にパケットの転送方式について説明する。パケットを転送する方式は、ソースルーティング(固定型ルーティング)方式と適応型ルーティング方式がある。ソースルーティング方式では、送信元コアに接続されたルータが、宛先アドレスに応じてパケットの転送経路、即ちパケットの経由するルータを予め全て決める。よって、ソースルーティング方式の場合、転送経路が途中で変更されることはない。適応型ルーティング方式では、パケットを受信した各ルータは、宛先アドレスの他、ネットワークの混雑状況等を考慮して経路計算を行い、パケットの次の転送先を決定する。このように適応型ルーティングの場合、転送経路はパケットを受信したルータごとに決められる。
以下、第1乃至第5の実施形態について説明する。
(第1の実施形態)
第1の実施形態は、ソースルーティング方式を採った場合の実施形態である。第1の実施形態ではコア間通信は非同期で行われる。
まず、図3を用いて、ソースルーティング方式の場合のパケットのヘッダーの詳細を説明する。ヘッダーフリット0は、コマンドフィールド(Cmd)と、リルーテッドフラグ(Rerouted Flag)と、Ack要求フラグ(Ack Required Flag)と、宛先アドレスフィールド(Dest Address)と、ソースコアフィールド(Src Core)と、ライフサイクルフィールド(Life Cycle)と、ホップルータフィールド(Hop Router 1)と、を有する。ヘッダーフリット1は、ホップルータフィールド(Hop Router 2〜5)を有する。
コマンドフィールドはパケットの種類を示すフィールドである。例えば、書き込み要求パケットの場合、コマンドフィールドには“write”を意味する符号が格納され、読み出し要求パケットの場合、コマンドフィールドには“read”を意味する符号が格納される。リルーテッドフラグは、パケットの宛先を変更したことを示すフラグである。
Ack要求フラグは、発信元のコアが受領通知を要求するフラグである。第1の実施形態ではコア間通信は非同期であるため、Ack要求フラグには“0”が格納される。宛先アドレスフィールドは、共有メモリ上の宛先アドレスを格納するフィールドである。ソースコアフィールドは、発信元のコアの識別子を格納するフィールドである。
ライフサイクルフィールドは、パケットの寿命を示すフィールドである。このフィールドに設定されるライフサイクル値は、ネットワークの特性等に依存する。例えば初期値として“20”が格納され、ライフサイクル値が所定の値(例えば零)になるとタイムアウトとなる。
ホップルータフィールドは、パケットが経由するルータの識別子を格納するフィールドである。ホップルータフィールドの数は、ルータの中継段数に応じて変化する。発信元コアに接続されたルータは、パケットが宛先コア若しくは共有メモリに接続されたルータに達するまでに経由する全てのルータの識別子をヘッダーに格納する。このため、ルータの中継段数によっては、複数のヘッダーフリットが必要になる。
なお、マルチコアシステムに設けられた各ルータは、受信パケットのホップルータフィールドのうち最後尾のフィールドを参照することで、自分が宛先コアに接続されたルータであるか否かを認識することができる。つまり、最後尾のホップルータフィールドに格納された識別子が自身の識別子と一致すれば、自身が宛先コアに接続されたルータであると認識することができる。
図4は、第1の実施形態に係るルータの構成図の一例である。図4のルータは入力ポートおよび5つの出力ポートを5つずつ有する。ここでは、入力ポート及び出力ポートはそれぞれ、西方向(W)、東方向(E)、北方向(N)、南方向(S)およびコア方向(C)と表現する。ただし、ルータの配置位置により入出力ポートの数は異なる。例えば、ルータ201は、コア方向、北方向および東方向について入出力ポートを有する。ルータ202は、コア方向、西方向、東方向及び北方向について入出力ポートを有する。
ルータは、各入力ポートに設けられたバッファ21と、スイッチ部22と、宛先変更用テーブル23と、検索部24と、ヘッダー生成部25と、経路計算部26とを有する。
バッファ21は、入力ポートで受信したデータを格納する。バッファ21の深さ(大きさ)は1Flit以上(例えば4〜8Flit)である。スイッチ部22は、受信パケットが所望の出力ポートから送出されるように、パケットの出力先を切り替える。このスイッチ部22は経路計算部26により制御される。
宛先変更用テーブル23は、共有メモリ上の宛先アドレスと、宛先コアに接続されたルータの識別子とを対応させた表である。この宛先変更用テーブル23は送信元コアにより設定される。送信元コアは、自身の制御用レジスタにアクセスするのと同様にして、接続されたルータの宛先変更用テーブル23に書き込むことができる。
図5は宛先変更用テーブル23の一例を示している。図5の宛先変更用テーブル23は、データの有効性を示すVフラグ(Valid Flag)を格納するVと、共有メモリ上の宛先アドレスを格納するDest. Addressと、宛先ルータの識別子を格納するDest Router IDとから構成される。Vフラグ、宛先アドレスおよび宛先ルータ識別子のセットをエントリと呼ぶ。図5のエントリ0はVフラグが立ち、有効なエントリである。エントリ0において、宛先アドレスは0x31B8_9BC0(以下、アドレスDA1)であり、宛先ルータ識別子は“10”(ルータ211)である。なお、図5ではエントリ数は1であるが、宛先変更用テーブル23は複数のエントリを有することができる。
次に、コア101を送信元コア、コア111を宛先コアとした場合における、第1の実施形態によるコア間通信の詳細について説明する。
まず、送信元のコア101は、書き込み要求パケットを送信する前に、自身と接続されたルータ201に対して設定を行う。具体的には、コア101は、宛先変更用テーブル23のエントリ0の宛先アドレスDA1を、宛先ルータ識別子として、ルータ211の識別子“10”をそれぞれ書き込む。さらに、コア101は、エントリ0が有効であることを示す“1”をVフラグに書き込む。
宛先変更用テーブルを設定した後、コア101は、書き込み要求パケットを生成し、ルータ201へ送信する。書き込み要求パケットは、宛先アドレスフィールドに共有メモリ301のアドレスDA1が格納されている。
次に、ルータ201の検索部24は、コア101から受信した書き込み要求パケットのヘッダーに格納された宛先アドレスと同一のアドレスを有する有効なエントリが宛先変更用テーブル23に存在するかどうかを検索する。検索の結果、同一のアドレスを有する有効なエントリが存在する場合、ルータ201の経路計算部26は、エントリの識別子のルータを宛先として経路計算を行う。第1の実施形態の場合、ソースルーティングによる経路計算が行われる。
そして、ヘッダー生成部25は、求められた全てのルータの識別子を、パケットの経由する順にポップルータフィールドに格納するとともに、リルーテッドフラグに“1”を設定する。図6は、このようにして生成されたパケットのヘッダーの一例を示している。図6の各ホップルータフィールドには、経路計算により求められたルータの識別子“1”、“2”、“6”、“10”がそれぞれ格納されている。
その後、経路計算部26からの制御を受けて、スイッチ部22はパケットの出力先を、ルータ202(ID=1)の方向であるE方向のポートに切替える。これにより、宛先変更された書き込み要求パケットがルータ201からルータ202に送出される。
図7は、パケットの転送経路の一例を示す図である。書き込み要求パケットは、例えば図7の経路Aに示すように、ルータ201、202、203及び207を経由してルータ211に達する。
ここで、コア111は、アドレスDA1のデータを読み出す場合、ルータ211に対して読み出し要求パケットを送信する。読出し要求パケットの宛先アドレスフィールドにはアドレスDA1が格納されている。
ルータ211はコア111から読み出し要求パケットを受信すると、検索部24により読み出し要求パケットの宛先アドレスと同一のアドレスを有し、かつ、リルーテッドフラグが“1”の書き込み要求パケットがバッファに蓄積されているかどうかを検索する。検索の結果、バッファ内に存在する場合、ルータ211はヘッダー生成部25により書き込み要求パケットのヘッダーを書き換え、読み出し要求パケットに対する応答パケットのヘッダーを生成し、コア111に送出される。したがって、宛先のコア111は、アドレスDA1のデータを迅速に読み出すことができる。なお、応答パケットを生成する際、バッファ内に蓄積されていた書き込み要求パケットは削除される。
次に、コア間通信が非同期であることに起因する問題と、それに対する対処方法について説明する。ここでは、コア101からの書き込み要求パケットがルータ211に到達した後に、宛先のコア111が別のアドレスDA2の読み出しを行った場合を考える。
ルータ211内のバッファ21に空きがない場合、アドレスDA2のデータを有する読み出し応答パケットは、途中のルータに留まり、いつまで経ってもルータ211に到達することができない。このためコア111の処理が停止するという不具合が生じる。
本実施形態では、ルータ211はライフサイクルを利用し、タイムアウトが発生した場合には、既に到達していた書き込み要求パケットを共有メモリに転送する。具体的には、ルータ211は、自身のバッファ内にリルーテッドフラグが“1”の書き込み要求パケットがある場合、ライフサイクル値を1サイクル経過するごとに1ずつ減らす。タイムアウトすると、ルータ211は、その書き込み要求パケットを共有メモリ301に転送する。ルータ211は、ヘッダー生成部25により書き込み要求パケットのアドレスDA1を宛先として転送経路を計算し、求められたルータ識別子をホップルータフィールドに格納する。書き込み要求パケットのリルーテッドフラグは、“0”に設定する。これにより、書き込み要求パケットはルータ211から共有メモリ301に向けて送信され、例えば図7に示す経路Bに沿って転送される。
上記のようにしてルータ211に滞留した書き込み要求パケットを共有メモリに転送することで、ルータ211のバッファ21に空きを生じさせる。これにより、コア111による読出し要求に対する応答パケットは、ルータ211に到達することができる。その結果、コア111の処理が停止する事態を回避することができる。
第1の実施形態によれば、コア間通信用のバッファを新たに設けることなく、共有メモリを介さないコア間通信を実現することができる。このため、従来に比べてコア間通信のレイテンシを低減することができる。
また、第1の実施形態によれば、共有メモリがキャッシュ機能を有する場合、従来に比べてキャッシュラインの追い出しが低減することでヒット率を向上させることができ、その結果、マルチコアシステム全体の性能を向上させることができる。
(第2の実施形態)
第2の実施形態では、書き込み要求パケットのAck要求フラグを用い、同期をとってコア間通信を行う。宛先コアに接続されたルータは、Ack要求フラグが立てられた書き込み要求パケットを受信すると、送信元コアにパケットの転送完了を通知する。そして、送信元コアは宛先コアにデータ書き込み完了通知を送信する。その後、宛先コアは読み出し要求パケットを送信する。よって、同期したコア間通信を行うことができる。以下、詳細について説明する。
コア101を送信元コア、コア111を宛先コアとする。送信元コア101から書き込み要求パケットを受信したルータ201は、書き込み要求パケットのAck要求フラグに“1”を設定する。宛先コア111と接続されたルータ211は、コア101にパケットの転送が完了したことを通知する。
なお、この通知は、専用の信号線等により行ってもよいし、通常のデータ転送と区別可能な特殊なパケットを用いて行ってもよい。後者の場合は、特殊パケットがルータのバッファでデータ転送用パケットを追い越すことができるようにすることが好ましい。これにより、特殊パケットが通常のパケットに阻害されて送信元のコア101に到達できないために同期が完了しないという事態を回避することができる。
ルータ211からパケットの転送が完了した旨が通知されると、送信元コア101は、マルチコアシステムの提供する同期機構(メモリ上の共有変数や割り込み等)により、コア111へデータ書き込みの完了を通知する。コア111はその通知を受信すると、アドレスDA1に対する読出し要求パケットを送信する。それ以降の動作は第1の実施形態と同様であるので詳しい説明は省略する。
第2の実施形態によれば、宛先コアは送信元コアからデータ書き込みの完了通知を受けてから、読出し要求を行うため、宛先コアは送信元コアからの書き込みデータを確実に読み出すことができる。また、第2の実施形態によれば、従来に比べて、コア間通信のレイテンシを低減することができる。
(第3の実施形態)
第3の実施形態について説明する。まず、図8を用いて、適応型ルーティング方式の場合のパケットのヘッダーの構成について説明する。
ソースルーティング方式の場合との相違点は、ホップルータフィールドの代わりに、宛先ルータフィールド(Dest Router)が設けられていることである。宛先ルータフィールドには、宛先コアに接続されたルータの識別子が格納される。なお、従来の場合、宛先ルータフィールドは存在せず、宛先アドレスフィールドの情報を用いて経路計算が行われる。
図9は第3の実施形態に係るルータの構成を示している。図9のルータは、バッファ21と、スイッチ部22と、宛先変更用テーブル23と、検索部24と、ヘッダー生成部25と、経路計算部26とを有する。
さらに、第3の実施形態に係るルータは、隣接するルータのバッファの状態(データの埋まり具合)を通知するフィードバック線29を有する。経路計算部26は、フィードバック線29からの情報を考慮して経路計算を行い、パケットの出力先を決定することができる。
次に、コア101を送信元コア、コア111を宛先コアとした場合における、第3の実施形態によるコア間通信の詳細について説明する。
まず、送信元のコア101は、書き込み要求パケットを送信する前に、ルータ201の宛先変更用テーブル23に対して設定を行う。即ち、コア101は宛先変更用テーブル23のエントリに、Vフラグ“1”、アドレスDA1及びルータ識別子“10”を書き込む。
次に、コア101は、宛先アドレスをアドレスDA1とした書き込み要求パケットをルータ201へ送信する。ルータ201の検索部24は、書き込み要求パケットの宛先アドレスと同一のアドレスを有する有効なエントリが宛先変更用テーブル23に存在するかどうかを検索する。検索の結果、同一のアドレスを有する有効なエントリが存在する場合、ヘッダー生成部25はそのエントリの宛先ルータ識別子を宛先ルータフィールドに格納するとともに、リルーテッドフラグに“1”を設定する。なお、この際、ヘッダー生成部25は、Ack要求フラグについて、非同期の場合には “0”を設定し、同期の場合には“1”を設定する。
次に、ルータ201の経路計算部26は、格納された識別子のルータを宛先として経路計算を行い、次の転送先を決定する。その決定に従い、経路計算部26はスイッチ部22を制御する。これにより、書き込み要求パケットは、ルータ201から決定されたルータに向けて送信される。
パケットが転送された中継ルータの経路計算部26は、リルーテッドフラグが立っている場合には、宛先ルータフィールドに格納された識別子のルータを転送先として経路計算を行い、パケットの出力先を決定する。一方、リルーテッドフラグが立っていない場合には、経路計算部26は、宛先アドレスフィールドに格納されたアドレスを転送先として経路計算を行う。
コア101からの書き込み要求パケットは転送され、最終的に宛先ルータであるルータ211に到達する。それ以降の動作は、非同期の場合は第1の実施形態、同期の場合は第2の実施形態と同様であるので詳しい説明は省略する。
第3の実施形態によれば、第1の実施形態と同様、従来に比べてコア間通信のレイテンシを低減することができるとともに、共有メモリがキャッシュ機能を有する場合には、従来に比べてマルチコアシステム全体の性能を向上させることができる。
また、第3の実施形態によれば、同期式のコア間通信を行う場合、第2の実施形態と同様、宛先コアは送信元コアからの書き込みデータを確実に読み出すことができるとともに、従来に比べて、コア間通信のレイテンシを低減することができる。
(第4の実施形態)
第4の実施形態は、ネットワークの混雑等により書き込み要求パケットが宛先コアに接続されたルータに到達できない場合の動作に関する。コア101からコア111に書き込み要求パケットを転送する場合を例にとって説明する。なお、ルーティング方式は、ソースルーティング方式でも適応型ルーティング方式でもよい。
コア101から送信された書き込み要求パケットは、ルータ201において宛先変更用テーブル23の設定に従って宛先をルータ211に変更され、経路計算を行って求められた出力ポートから送出され、ルータ211に転送される。
ここで、ルータ211への経路が混雑しているために、書き込み要求パケットが途中のルータ207(ID=6)で滞留し、ルータ211に到達できない場合を考える。第4の実施形態では、ルータ207は、ルータ211に転送することを断念し、宛先を宛先アドレスの存在する共有メモリ301に変更する。具体的には、ルータ207の経路計算部26が、アドレスDA1を宛先として経路計算を行い、新たな転送経路を求める。また、ヘッダー生成部25は書き込み要求パケットのリルーテッドフラグを“0”にする。そして、書き込み要求パケットはルータ207から共有メモリ301に向けて転送される。図10の経路Eは、このときの転送経路の一例を示している。
その後、コア111が読み出し要求を行った場合、ルータ211のバッファには書き込み要求パケットは存在しない。このため、従来と同様に共有メモリから宛先アドレスのデータが読み出される。
次に、送信元コア101に接続されたルータ201がルータ211への経路が混雑していると判断した場合について説明する。この場合は、初めから共有メモリ301に向けて書き込み要求パケットを転送する。
ルータ201は、コア101からパケットを受信すると、宛先変更用テーブル23を参照し、宛先を変更すべきパケットであるかどうかを判断する。そして、宛先を変更すべきパケットである場合には、以下の処理を行う。
ルータ201がルータ211への経路が混雑していると判断した場合、ルータ201の経路計算部26は、アドレスDA1を宛先として経路計算を行う。また、ヘッダー生成部25は書き込み要求パケットのリルーテッドフラグを“0”に設定する。書き込み要求パケットは共有メモリ301に転送される。なお、ネットワークが混雑しているかどうかを判断する方法として、例えば、フィードバック線29からの情報を用いる。
第4の実施形態では、宛先ルータに到達することが困難なことが分かった段階で、ルータの動作を変更して、宛先コアへの転送を中止し、共有メモリに書き込み要求パケットを送信する。送信元コア及び宛先コアの動作を変更する必要はない。これにより、第4の実施形態によれば、ネットワークの混雑状況に応じて、共有メモリを介したコア間通信と、共有メモリを介さないコア間通信とを柔軟に切替えることができる。
(第5の実施形態)
第5の実施形態は、パケットのマルチキャスト転送を行う。第5の実施形態では、送信元コアからのデータを共有メモリに接続されたルータのバッファに蓄積し、宛先コアからの読み出し要求に応じてこのバッファから複数のコアに対してデータを送信する。これにより共有メモリへの書き込み・読み出しが発生しないことから、従来の共有メモリ型のコア間通信よりもレイテンシの小さいマルチキャストを実現させることができる。
以下、送信元コア101から2つのコア111とコア114へデータを転送する場合について詳細に説明する。ここでは、同期の適応型ルーティング方式の場合について説明するが、第5の実施形態はソースルーティング方式や非同期の場合についても適用可能である。
まず、送信元コア101は、書き込み要求パケットを送信する前に、ルータ201の宛先変更用テーブル23の設定を行う。例えば図11に示すように、コア101は、宛先変更用テーブル23のエントリに、Vフラグ“1”、アドレスDA1、及び共有メモリ301に接続されたルータの識別子“16”をそれぞれ書き込む。
次に、コア101は、宛先アドレスをアドレスDA1とした書き込み要求パケットをルータ201へ送信する。ルータ201の検索部24は、書き込み要求パケットの宛先アドレスと同一のアドレスを有する有効なエントリが宛先変更用テーブル23に存在するかどうかを検索する。検索の結果、同一のアドレスを有する有効なエントリが存在する場合、ヘッダー生成部25は、そのエントリのルータ識別子“16”を宛先ルータフィールドに格納するとともに、リルーテッドフラグに“1”を設定する。この際、ヘッダー生成部25は、Ack要求フラグに“1”を設定する。
次に、ルータ201の経路計算部26は、宛先ルータフィールドに格納された識別子のルータを宛先として経路計算を行い、次の転送先を決定する。その決定に従い、経路計算部26はスイッチ部22を制御する。これにより、書き込み要求パケットは、例えば図12の経路Hに沿って転送され、最終的にルータ217へ到達する。
ルータ217の検索部は、宛先ルータフィールドに格納された識別子が自身のものと一致するパケットを検索し、そのようなパケットが存在すると、ルータ217はコア101に転送完了を通知する。
コア101は、ルータ217から転送完了通知を受信すると、コア111及びコア114に対し、割り込みなどの手段により同期をかける。コア111及びコア114は、宛先をアドレスDA1とした読み出し要求パケットを送信する。これらの読み出し要求パケットは、共有メモリ301に向けて転送され、ルータ217へ到達する。
ルータ217の検索部は読み出し要求パケットを受信すると、自身のバッファ21の中からリルーテッドフラグが“1”であり、かつ宛先アドレスフィールドの宛先アドレスが読み出し要求パケットの宛先アドレスと一致する書き込み要求パケットを検索する。ルータ217のヘッダー生成部は、該当する書き込み要求パケットを書き換え、読み出し要求パケットに対する応答パケットのヘッダーを生成する。
そして、生成した応答パケットを読み出し結果としてコア111及びコア114に送信する。なお、マルチキャストに対応するため、バッファに蓄積された書き込み要求パケットはそのまま保存しておき、マルチキャストが終了した後、共有メモリ301に書き込むとともにバッファから消去する。なお、マルチキャストの終了のタイミングとして、例えばライフサイクル値を用いたタイムアウトを用いることができる。図12の経路I及び経路Jは応答パケットの転送経路の一例を示している。
第5の実施形態によれば、共有メモリにデータの書き込み及び読み出しを行わない分のレイテンシを低減させることができる。
以上、本発明に係る実施形態について説明した。本実施形態ではメッシュ型のマルチコアネットワークを例にとったが、これに限らず、コア及び共有メモリにそれぞれ対応するルータが接続されていればよく、リング型やトーラス型でもよい。
また、非同期のコア間通信を行う実施形態において、宛先コアにパケットを直接転送するとともに、共有メモリにもパケットを転送し、共有メモリの宛先アドレスにデータを書き込むようにしてもよい。このようにすることで、予め判明しているコア間通信についてはパケットを直接転送することでレイテンシを低減するとともに、その後他のコアが読み出し要求を行った場合には共有メモリからデータを読み出すことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
21 バッファ
22 スイッチ部
23 宛先変更用テーブル
24 検索部
25 ヘッダー生成部
26 経路計算部
29 フィードバック線
101〜116 コア
201〜220 ルータ
301〜304 共有メモリ

Claims (5)

  1. パケットを受信する複数の入力ポートと、
    前記パケットを送信する複数の出力ポートと、
    前記入力ポートのそれぞれに設けられており、前記受信したパケットのデータを格納する複数のバッファと、
    前記パケットが所望の出力ポートから送出されるように、パケットの出力先を切り替えるスイッチ部と、
    送信元コアにより設定された共有メモリ上の宛先アドレスとルータの識別子とを対応させて格納する宛先変更用テーブルと、
    受信した書き込み要求パケットに格納された共有メモリ上の宛先アドレスと同一のアドレスを有する有効なエントリが前記宛先変更用テーブルに存在するかどうかを検索する第1の検索を行う検索部と、
    前記第1の検索の結果、前記宛先変更用テーブルに存在する有効なエントリのルータを宛先として経路計算を行う経路計算部と、
    前記経路計算部により求められた経路を示すルータの識別子を、前記書き込み要求パケットに格納し、かつ宛先を変更したことを示すリルーテッドフラグを立てるヘッダー生成部と、を備えることを特徴とするオンチップルータ。
  2. 前記検索部は、前記宛先コアから受信した読み出し要求パケットに格納された共有メモリ上の宛先アドレスと同一のアドレスを有し、かつ、前記リルーテッドフラグが立てられた書き込み要求パケットが、前記バッファに蓄積されているかどうかを検索する第2の検索を行い、
    前記ヘッダー生成部は、前記第2の検索の結果、該当する書き込み要求パケットが存在すれば、その書き込み要求パケットのヘッダーを書き換え、前記読み出し要求パケットに対する応答パケットのヘッダーを生成する、
    ことを特徴とする請求項1に記載のオンチップルータ。
  3. 前記ヘッダー生成部は、前記書き込み要求パケットのリルーテッドフラグが立っている場合、1サイクル経過する毎に、前記バッファに蓄積された前記書き込み要求パケットのライフサイクル値を減じ、
    前記経路計算部は、前記ライフサイクル値が所定の値まで減少すると、前記書き込み要求パケットの共有メモリ上の宛先アドレスを宛先として経路計算を行い、
    前記ヘッダー生成部は、その結果求められたルータ識別子を前記書き込み要求パケットに格納し、前記リルーテッドフラグを倒す、
    ことを特徴とする請求項1または2のいずれかに記載のオンチップルータ。
  4. 転送先のルータのバッファに空きがない場合、前記経路計算部はパケットに格納された共有メモリ上の宛先アドレスを宛先として経路計算を行い、前記ヘッダー生成部は前記リルーテッドフラグを倒すことを特徴とする請求項1乃至3のいずれかに記載のオンチップルータ。
  5. 複数のプロセッサコアと、前記プロセッサコアに接続され、前記プロセッサコア間で送受信されるパケットを転送する複数のオンチップルータとを備えるマルチコアシステムであって、
    前記オンチップルータは、
    前記パケットを受信する複数の入力ポートと、
    前記パケットを送信する複数の出力ポートと、
    前記入力ポートのそれぞれに設けられており、前記受信したパケットのデータを格納する複数のバッファと、
    前記パケットが所望の出力ポートから送出されるように、パケットの出力先を切り替えるスイッチ部と、
    自身が接続された前記プロセッサコアにより設定された共有メモリ上の宛先アドレスと、ルータの識別子とを対応させて格納する宛先変更用テーブルと、
    受信した書き込み要求パケットに格納された共有メモリ上の宛先アドレスと同一のアドレスを有する有効なエントリが前記宛先変更用テーブルに存在するかどうかを検索する第1の検索を行う検索部と、
    前記第1の検索の結果、前記宛先変更用テーブルに存在する有効なエントリのルータを宛先として経路計算を行う経路計算部と、
    前記経路計算部により求められた経路を示すルータの識別子を、前記書き込み要求パケットに格納し、かつ宛先を変更したことを示すリルーテッドフラグを立てるヘッダー生成部とを備える、
    ことを特徴とするマルチコアシステム。
JP2011005106A 2011-01-13 2011-01-13 オンチップルータ及びそれを用いたマルチコアシステム Withdrawn JP2012146201A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011005106A JP2012146201A (ja) 2011-01-13 2011-01-13 オンチップルータ及びそれを用いたマルチコアシステム
US13/191,212 US8848703B2 (en) 2011-01-13 2011-07-26 On-chip router and multi-core system using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011005106A JP2012146201A (ja) 2011-01-13 2011-01-13 オンチップルータ及びそれを用いたマルチコアシステム

Publications (1)

Publication Number Publication Date
JP2012146201A true JP2012146201A (ja) 2012-08-02

Family

ID=46491628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011005106A Withdrawn JP2012146201A (ja) 2011-01-13 2011-01-13 オンチップルータ及びそれを用いたマルチコアシステム

Country Status (2)

Country Link
US (1) US8848703B2 (ja)
JP (1) JP2012146201A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021501947A (ja) * 2017-11-03 2021-01-21 コーヒレント・ロジックス・インコーポレーテッド メモリ・ネットワーク・プロセッサ

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5636995B2 (ja) * 2011-02-07 2014-12-10 セイコーエプソン株式会社 ネットワーク通信装置、方法、及びプログラム
US8630286B2 (en) * 2011-09-30 2014-01-14 Broadcom Corporation System and method for improving multicast performance in banked shared memory architectures
CN103581008B (zh) * 2012-08-07 2017-04-12 杭州华三通信技术有限公司 路由器及其软件升级方法
CN109165189B (zh) * 2013-08-28 2020-12-08 威盛电子股份有限公司 微处理器及其配置方法、以及计算机可读存储介质
KR102260369B1 (ko) 2014-10-28 2021-06-03 에스케이하이닉스 주식회사 보정 회로 및 이를 포함하는 보정 장치
KR102515924B1 (ko) * 2016-04-19 2023-03-30 에스케이하이닉스 주식회사 미디어 컨트롤러 및 이를 포함한 데이터 저장 장치
US11755255B2 (en) 2014-10-28 2023-09-12 SK Hynix Inc. Memory device comprising a plurality of memories sharing a resistance for impedance matching
US11082043B2 (en) 2014-10-28 2021-08-03 SK Hynix Inc. Memory device
US10067903B2 (en) 2015-07-30 2018-09-04 SK Hynix Inc. Semiconductor device
KR102358177B1 (ko) 2015-12-24 2022-02-07 에스케이하이닉스 주식회사 제어회로 및 제어회로를 포함하는 메모리 장치
US10057281B2 (en) * 2015-03-24 2018-08-21 Utah State University Runtime detection of a bandwidth denial attack from a rogue interconnect
US9690494B2 (en) * 2015-07-21 2017-06-27 Qualcomm Incorporated Managing concurrent access to multiple storage bank domains by multiple interfaces
US11265291B2 (en) 2017-08-25 2022-03-01 Red Hat, Inc. Malicious packet filtering by a hypervisor
CN111382115B (zh) * 2018-12-28 2022-04-15 北京灵汐科技有限公司 一种用于片上网络的路径创建方法、装置及电子设备
US11709716B2 (en) * 2019-08-26 2023-07-25 Red Hat, Inc. Hardware offload support for an operating system offload interface using operation code verification
CN112367279A (zh) * 2020-10-30 2021-02-12 河南城建学院 一种基于二维mesh结构多核芯片组的路由方法及系统

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021470A (en) 1997-03-17 2000-02-01 Oracle Corporation Method and apparatus for selective data caching implemented with noncacheable and cacheable data for improved cache performance in a computer networking system
US6912608B2 (en) * 2001-04-27 2005-06-28 Pts Corporation Methods and apparatus for pipelined bus
US20020176355A1 (en) * 2001-05-22 2002-11-28 Alan Mimms Snooping standby router
JP4588262B2 (ja) * 2001-07-04 2010-11-24 富士通株式会社 ルータ及びネットワークにおける一時停止方法
JP4161557B2 (ja) * 2001-09-03 2008-10-08 株式会社日立製作所 パケット転送方法及びその装置
DE10203221A1 (de) 2002-01-28 2003-08-21 Siemens Ag Vorrichtung und Verfahren zur Vermeidung von Retrainigsvorgängen bei integrierter Voice- und xDSL- Datenübertragung ####
KR100429904B1 (ko) 2002-05-18 2004-05-03 한국전자통신연구원 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법
JP4157403B2 (ja) * 2003-03-19 2008-10-01 株式会社日立製作所 パケット通信装置
US20050078708A1 (en) 2003-10-14 2005-04-14 International Business Machines Corporation Formatting packet headers in a communications adapter
US20060088051A1 (en) 2004-10-22 2006-04-27 Geoff Mulligan Method for lossless IPv6 header compression
FR2883116B1 (fr) 2005-03-08 2007-04-13 Commissariat Energie Atomique Architecture de communication globalement asynchrone pour systeme sur puce.
FR2883117B1 (fr) * 2005-03-08 2007-04-27 Commissariat Energie Atomique Architecture de noeud de communication dans un systeme de reseau sur puce globalement asynchrone.
WO2006106476A1 (en) 2005-04-07 2006-10-12 Koninklijke Philips Electronics N. V. Network-on-chip environment and method for reduction of latency
KR100675850B1 (ko) 2005-10-12 2007-02-02 삼성전자주식회사 AXI 프로토콜을 적용한 NoC 시스템
US8228908B2 (en) 2006-07-11 2012-07-24 Cisco Technology, Inc. Apparatus for hardware-software classification of data packet flows
JP2008027153A (ja) 2006-07-20 2008-02-07 Ricoh Co Ltd 情報処理プログラム、情報処理装置および情報処理方法
KR100785472B1 (ko) 2006-09-19 2007-12-13 삼성전자주식회사 긴급 NoC 패킷 대기시간 관리 장치 및 그 방법
WO2008038235A2 (en) * 2006-09-27 2008-04-03 Ecole Polytechnique Federale De Lausanne (Epfl) Method to manage the load of peripheral elements within a multicore system
US8531963B2 (en) * 2007-06-08 2013-09-10 Nec Corporation Semiconductor integrated circuit and filter control method
EP2009554A1 (en) 2007-06-25 2008-12-31 Stmicroelectronics SA Method for transferring data from a source target to a destination target, and corresponding network interface
JP2009037273A (ja) 2007-07-31 2009-02-19 Hitachi Ltd マルチプロセッサシステム
JP2009037279A (ja) 2007-07-31 2009-02-19 Chugoku Electric Power Co Inc:The 検針方法および検針システム
WO2009133918A1 (ja) 2008-04-30 2009-11-05 日本電気株式会社 ルータ、そのルータを有する情報処理装置及びパケットのルーティング方法
US8423749B2 (en) 2008-10-22 2013-04-16 International Business Machines Corporation Sequential processing in network on chip nodes by threads generating message containing payload and pointer for nanokernel to access algorithm to be executed on payload in another node
US8509078B2 (en) 2009-02-12 2013-08-13 Microsoft Corporation Bufferless routing in on-chip interconnection networks
US8285900B2 (en) * 2009-02-17 2012-10-09 The Board Of Regents Of The University Of Texas System Method and apparatus for congestion-aware routing in a computer interconnection network
JPWO2010104033A1 (ja) 2009-03-09 2012-09-13 日本電気株式会社 プロセッサ間通信システム及び通信方法、ネットワークスイッチ、及び並列計算システム
US8495643B2 (en) 2009-06-30 2013-07-23 International Business Machines Corporation Message selection based on time stamp and priority in a multithreaded processor
US8537772B2 (en) 2009-07-02 2013-09-17 Qualcomm Incorporated Transmitter quieting during spectrum sensing
JP5493575B2 (ja) 2009-08-10 2014-05-14 富士通株式会社 情報処理装置及び情報処理装置の制御方法
JPWO2011125889A1 (ja) * 2010-04-06 2013-07-11 日本電気株式会社 半導体集積回路システム及び半導体集積回路におけるパケット伝送制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021501947A (ja) * 2017-11-03 2021-01-21 コーヒレント・ロジックス・インコーポレーテッド メモリ・ネットワーク・プロセッサ
JP7295104B2 (ja) 2017-11-03 2023-06-20 コーヒレント・ロジックス・インコーポレーテッド メモリ・ネットワーク・プロセッサ
US11829320B2 (en) 2017-11-03 2023-11-28 Coherent Logix, Incorporated Memory network processor

Also Published As

Publication number Publication date
US8848703B2 (en) 2014-09-30
US20120185633A1 (en) 2012-07-19

Similar Documents

Publication Publication Date Title
JP2012146201A (ja) オンチップルータ及びそれを用いたマルチコアシステム
US10204070B2 (en) Method, device, system and storage medium for implementing packet transmission in PCIE switching network
US9294403B2 (en) Mechanism to control resource utilization with adaptive routing
JP5280135B2 (ja) データ転送装置
US8401012B2 (en) Packet routing
JP2010218364A (ja) 情報処理システム、通信制御装置および方法
US20140177473A1 (en) Hierarchical asymmetric mesh with virtual routers
JP6536677B2 (ja) Cpuおよびマルチcpuシステム管理方法
JP5787061B2 (ja) スイッチシステム、ラインカード、fdb情報の学習方法及びプログラム
US10305825B2 (en) Bus control device, relay device, and bus system
US10038571B2 (en) Method for reading and writing forwarding information base, and network processor
CN111080510B (zh) 数据处理装置、方法、芯片、处理器、设备及存储介质
US6570885B1 (en) Segment-controlled process for controlling castouts from a communication cache in a port in any of multiple nodes in a communications network
JP2012216078A (ja) 情報処理装置、並列計算機システム、および並列計算機システムの制御方法
JP2014038494A (ja) 演算処理装置および演算処理装置の制御方法
JP5624579B2 (ja) オンチップルータ
CN116915708A (zh) 路由数据包的方法、处理器及可读存储介质
EP2405362B1 (en) A connection arrangement
JP5674179B1 (ja) 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法
CN113568863A (zh) 数据传输方法、路由节点、众核系统、计算机可读介质
JPH06266684A (ja) プロセッサ間ルーティング方式
WO2020087248A1 (zh) 多核芯片数据总线布线结构和数据发送的方法
EP3938920A1 (en) Permutated ring network interconnected computing architecture
JP6740683B2 (ja) 並列処理装置及び通信制御方法
JP2020005017A (ja) 動的可変容量メモリ装置及び記憶容量動的可変方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20140401