JP2015128294A - 複数の処理エンジンを相互接続するオンチップルータのマトリックスおよびこれを用いるルーティング方法 - Google Patents

複数の処理エンジンを相互接続するオンチップルータのマトリックスおよびこれを用いるルーティング方法 Download PDF

Info

Publication number
JP2015128294A
JP2015128294A JP2014263372A JP2014263372A JP2015128294A JP 2015128294 A JP2015128294 A JP 2015128294A JP 2014263372 A JP2014263372 A JP 2014263372A JP 2014263372 A JP2014263372 A JP 2014263372A JP 2015128294 A JP2015128294 A JP 2015128294A
Authority
JP
Japan
Prior art keywords
chip
output port
priority
input
router
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.)
Granted
Application number
JP2014263372A
Other languages
English (en)
Other versions
JP6556450B2 (ja
Inventor
アン・ティー・トラン
T Tran Anh
ジェラルド・シュミット
Schmidt Gerald
ツァヒ・ダニエル
Daniel Tsahi
ニマラン・シバ
Siva Nimalan
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.)
Xpliant Inc
Original Assignee
Xpliant Inc
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 Xpliant Inc filed Critical Xpliant Inc
Publication of JP2015128294A publication Critical patent/JP2015128294A/ja
Application granted granted Critical
Publication of JP6556450B2 publication Critical patent/JP6556450B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/101Packet switching elements characterised by the switching fabric construction using crossbar or matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3018Input queuing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】柔軟性および拡張性があるネットワークを含むチップを提供する。【解決手段】このネットワークは、複数の処理エンジン105と、オンチップルータ110のマトリックスとを備える。オンチップルータ110のそれぞれは、処理エンジン105の個別のグループと、そのオンチップルータ110に最も近接するオンチップルータ110とに通信可能に結合されている。オンチップルータ110は、入力ポートと、出力ポートと、出力ポートに対応の出力ポートアービタとを含む。出力ポートアービタは、そのオンチップルータの全ての出力ポートアービタによって共有されるグローバル許可ベクトルglobal_priority_vectorと、その出力ポートアービタに固有のローカル許可ベクトルlocal_priority_vectorとを用いて、入力ポートの1つからのクエリ要求を許可する。【選択図】図4

Description

本発明は、単一チップ上の複数の処理エンジン(プロセスエンジン)間におけるデータパケットの転送に関し、より詳細には、複数の処理エンジンを相互接続するオンチップルータのマトリックス、およびこれを用いるルーティング方法に関する。
トランジスタのサイズが小さくなるにつれ、より多くの計算素子、メモリ、および処理エンジンが単一チップに集積され得る。このような高度な集積により、より多くのシステムタスクを並行して処理することができ、その結果、より高度なシステム性能が達成できる。
これらの計算素子、メモリ、および処理エンジンは、それらの間でデータを転送するための通信ファブリックを必要とする。処理エンジンの数が増すにつれ、バスおよびリングアーキテクチャなどの相互接続技術は、もはや拡張性がなく、これらのエンジンのための十分な通信帯域幅を提供できない。
オンチップネットワークは、単一チップ上にある多数の処理エンジンのための相互接続技術である。ネットワークは、各オンチップルータがネットワーク内の最隣接の1つまたは複数のオンチップルータに接続する複数のオンチップルータを含む。各処理エンジンはオンチップルータのうちの1つに接続され、1つのオンチップルータは複数の処理エンジンに接続できる。処理エンジン間で通信されるデータはオンチップルータのネットワークを介して転送される。
しかし、従来技術のオンチップルータには課題がある。例えば、従来技術のオンチップルータは、固定のルーティングアルゴリズムを有する。したがって、従来技術のオンチップルータは、処理エンジンのアドレスが変わったり、ネットワークからより多くの処理エンジンが追加または削除されたりすると、動作を停止する。さらに、これら従来技術のオンチップルータは、処理エンジン間のユニキャストデータパケットと、固定のアービトレーション方式しかサポートしない。
単一チップ上の複数の処理エンジンのための相互接続方式は拡張性があり、複数の処理エンジンを接続するための構成変更可能ルータのオンチップネットワークを含む。このネットワークは、柔軟性があり、ネットワークを利用するチップ上で動作するアプリケーションによって必要とされる、より多くのまたはより少ない処理エンジンを接続するように拡張性がある。オンチップルータは、ネットワークトポロジや処理エンジンのアドレスの変更に適合するように再構成可能である。処理エンジン間で通信されるデータパケットは、ユニキャストルーティング方式およびマルチキャストルーティング方式の両方をサポートできるフォーマットで定義される。各オンチップルータは、公平でデッドロックのないアービトレーション方式を使用して、テーブルに基づいたユニキャストデータパケットおよびマルチキャストデータパケットの両方をサポートする。この公平でデッドロックのないアービトレーション方式により、オンチップルータは、入力データパケットをその出力ポートに、公平かつデッドロックなしに確実に正しく送出することが可能になる。マルチキャストデータパケットについては、各オンチップルータは、データパケットを正しい所望の出力ポートに転送するための2つの再構成可能モードを提供する。1つのモードは、ある入力ポートが全ての所望の出力ポートから通知を受け取っていない場合でも、許可を受信すると直ちにコピーを送信するものであり、もう1つのモードは、全ての所望の出力ポートから全ての許可を受信するまで待機してから、所望の出力ポートの全てにコピーを同時に送信するものである。各オンチップルータのルーティングテーブルは、ソフトウェアによりプログラム可能である。
一構成では、チップが提供される。前記チップはネットワークを含む。前記ネットワークは、典型的には複数の処理エンジンと、複数のオンチップルータのマトリックスとを含む。前記オンチップルータのそれぞれは、前記処理エンジンの個別のグループと、最も近接する、当該マトリックス内のオンチップルータとに通信可能に結合されている。前記複数の処理エンジンは、前記オンチップルータのマトリックスを介して互いに通信を行う。いくつかの実施形態では、オンチップルータはソフトウェアによって構成変更可能である。
前記オンチップルータのそれぞれは、複数の入力ポートと、複数の出力ポートと、これら出力ポートそれぞれの出力ポートアービタとを含む。前記出力ポートアービタは、そのオンチップルータの全ての出力ポートアービタによって共有されるグローバル許可ベクトルと、その出力ポートアービタに固有のローカル許可ベクトルとを用いて、前記複数の入力ポートのうちの1つからのクエリ要求(問合せ要求)を許可する。
いくつかの実施形態では、前記ネットワークは追加の処理エンジンをサポートするように拡張性を有する。例えば、前記追加の処理エンジンは複数のオンチップルータと結合され得る。他の例では、追加のオンチップルータが前記マトリックスに追加され得、前記追加の処理エンジンは前記追加のオンチップルータと結合される。
いくつかの実施形態では、ネットワークの輻輳を低減するためにルータ対ルータのリンクが複数のデータパケットを並行して転送可能なように、2つのオンチップルータを接続するリンクは、オンチップルータと処理エンジンとを接続するリンクよりも、複数倍幅広い。
いくつかの実施形態では、前記ネットワークの端に位置するオンチップルータは、前記ネットワークの配線物理レイアウトを簡素化するために前記ネットワークの外側の構成要素に接続可能である。
他の構成において、オンチップルータが提供される。前記オンチップルータは、M個の入力ポートと、N個の出力ポートと、前記M個の入力ポートと前記N個の出力ポートとを接続するクロスバーとを含む。
前記M個の入力ポートのそれぞれは、典型的には、その入力ポートと接続する上流オンチップルータまたは処理エンジンから受信した入力データパケットを格納するための入力待ち行列と、前記入力待ち行列の先頭のデータパケットの少なくとも1つの所望の出力ポートを特定するルーティングブロックと、前記少なくとも1つの所望の出力ポートのそれぞれに対してクエリ要求を送信してこれら出力ポートのそれぞれから許可を受信し、前記少なくとも1つの所望の出力ポートのそれぞれに前記データパケットを転送する転送制御ブロックとを含む。
前記N個の出力ポートのそれぞれは、少なくとも1つの入力ポートからのその出力ポートへのクエリ要求を収集し、前記クエリ要求のうちの1つを許可する、出力ポートアービタを含む。
前記クロスバーは、前記出力ポートアービタの結果によって制御される。いくつかの実施形態では、前記クロスバーは、M入力マルチプレクサをN組含む。Mは前記オンチップルータの入力ポートの数であり、Nは前記オンチップルータの出力ポートの数である。各M入力マルチプレクサは、一般の2入力マルチプレクサのM−1個の2分木であり、2入力マルチプレクサの遅延のlog(M)倍の遅延を有する。
いくつかの実施形態では、前記データパケットは、当該データパケットがユニキャストパケットおよびマルチキャストパケットのうちのいずれであるかを示す制御ビットを含む。
いくつかの実施形態では、前記オンチップルータは、さらに、データパケットの1つまたは複数の所望の出力ポートを特定するための再構成可能ユニキャストルーティングテーブルおよび再構成可能マルチキャストルーティングテーブルを含む。前記M個の入力ポートのそれぞれは、自己のユニキャストルーティングテーブルおよびマルチキャストルーティングテーブルを有する。あるいは、前記M個の入力ポートは、前記ルーティングテーブルを共有する。
いくつかの実施形態では、前記オンチップルータは、入力ポートから出力ポートへマルチキャストデータパケットを転送するための2つの構成変更可能モードのうちの1つを実施する。
前記出力ポートアービタは、前記M個の入力ポートのうちの1つまたは複数からのマルチキャストデータパケットおよびユニキャストデータパケットに関する、その出力ポートへの複数のクエリ要求に対して、1つの許可をアービトレーションする。いくつかの実施形態では、前記出力ポートアービタは、全ての出力ポートアービタによって共有されるglobal_priority_vector変数(グローバル優先順位ベクトル変数)と、各出力ポートアービタによって維持されるlocal_priority_vector変数(ローカル優先順位ベクトル変数)と、各出力ポートアービタによって維持されるpriority_vector変数(優先順位変数)とを使用する。前記global_priority_vector変数は、マルチキャストデータパケット間で許可を割り振るためのものである。前記local_priority_vector変数は、ユニキャストデータパケット間で許可を割り振るためのものである。前記priority_vector変数には、前記global_priority_vectorおよび local_priority_vectorのうちの1つの値が動的に割り当てられる。
いくつかの実施形態では、出力ポートアービタの前記priority_vector値に対する値の割当ては、転送モードと、当該出力ポートアービタがマルチキャストデータパケットからのクエリ要求を受信したかとに依存する。各出力ポートアービタは、対応する前記priority_vector値に基づいて1つのクエリ要求のみに許可を与える。
いくつかの実施形態では、共有される前記global_priority_vector変数および全てのlocal_priority_vector変数は、許可される機会を全てのデータパケットが常に有しかつデッドロックが生じないことが保証されるように、許可の結果に基づいて各サイクルの後に更新される。
さらに他の構成において、オンチップルータで実施される方法が提供される。複数の入力ポートのうちの1つに優先順位を与えるように、前記オンチップルータの全てのN個の出力ポートアービタによって共有されるglobal_priority_vector変数が初期化される。前記global_priority_vector変数は、典型的には、マルチキャストデータパケット間で許可を割り振るためのものである。前記N個の出力ポートアービタによって維持されるN個のlocal_priority_vector変数のそれぞれが、前記複数の入力ポートのうちの1つに初期化される。前記N個のlocal_priority_vector変数のそれぞれは、典型的には、ユニキャストデータパケット間で許可を割り振るためのものである。次いで、転送モードが判断される。いくつかの実施形態では、前記転送モードはソフトウェアによって再構成可能である。
前記N個の出力ポートアービタのそれぞれにおいて、クエリ要求がマルチキャストデータパケットからのものであるか否かが判断される。前記転送モードが第1のモードであるという判断または前記クエリ要求がマルチキャストデータパケットからのものでないという判断に基づいて、priority_vectorの値が前記local_priority_vectorの値に設定される。前記転送モードが第2のモードであるという判断および前記クエリ要求がマルチキャストデータパケットからのものであるという判断に基づいて、priority_vectorの値が前記global_priority_vectorの値に設定される。対応する出力ポートが利用可能であると、前記priority_vectorに基づき許可が入力ポートに送信される。
その後、前記global_priority_vector変数および前記N個のlocal_priority_vector変数が更新される。
いくつかの実施形態では、前記転送モードが前記第1のモードであるか、または許可を受けようとする入力ポートがない場合に、前記global_priority_vector変数は更新されない。その代わり、前記転送モードが前記第2のモードであり、かつ許可を受けようとする少なくとも1つの入力ポートがある場合に、前記global_priority_vector変数は、次に最も高い優先順位を有する入力ポートに更新される。
いくつかの実施形態では、前記対応する出力ポートアービタがマルチキャストデータパケットからの少なくとも1つのクエリ要求を受信するか、または許可が送信されない場合には、local_priority_vector変数が更新されない。その代わり、前記対応する出力ポートアービタがマルチキャストデータパケットからのクエリ要求を受信せず、かつ許可が送信される場合には、local_priority_vector変数が更新される。
いくつかの実施形態では、前記第1のモードは、入力ポートが全ての所望の出力ポートから通知を受け取っていない場合でも、許可を受信するとコピーを送信し、前記第2のモードは、全ての所望の出力ポートから全ての許可を受信するまで待機してから、前記所望の出力ポートの全てにコピーを同時に送信する。
本発明の一実施形態による、単一チップにおいて複数の処理エンジン(PE)を接続する構成変更可能オンチップルータの拡張性可能ネットワークのブロック図である。 本発明の一実施形態によるオンチップルータの各入力ポートにおけるデータパケットの処理の方法を示す図である。 本発明の一実施形態によるオンチップルータの各出力ポートにおけるデータパケットの処理の方法を示す図である。 本発明の一実施形態によるオンチップルータのブロック図である。 本発明の一実施形態によるデータパケットのフォーマットである。 本発明の一実施形態によるオンチップルータにおける例示的な構成変更可能ユニキャストルーティングテーブルである。 本発明の一実施形態によるオンチップルータにおける例示的な構成変更可能マルチキャストルーティングテーブルである。 本発明の一実施形態によるオンチップルータの各入力ポートにおけるデータパケット転送制御の方法を示す図である。 本発明の一実施形態によるオンチップルータの各出力ポートにおけるアービトレーション方法を示す図である。 本発明の一実施形態による使用例を例示的に示す図である。 本発明の一実施形態によるオンチップルータにおけるクロスバーの模式図である。
上記は、以下の本発明の例示的な実施形態のさらに具体的な説明から明らかになるであろう。添付図面において、異なる図全体にわたり、同様の部分は同様の参照符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
以下の説明では、説明の目的で様々な詳細を述べる。しかし、当業者ならば、これらの特定の詳細事項を用いずとも本発明を実施できることを理解するであろう。よって、本発明は、示される実施形態に限定されることを意図するのではなく、本明細書で説明される原理および特徴に合致する最も広い範囲に従うものである。
単一チップ上の複数の処理エンジンのための拡張性可能相互接続方式は、拡張性があり、複数の処理エンジンを接続する構成変更可能ルータのオンチップネットワークを含む。このネットワークは、柔軟性があり、ネットワークを利用するチップ上で動作するアプリケーションからの要求に応じて、より多くまたはより少ない処理エンジンを接続するという拡張性がある。オンチップルータは、ネットワークトポロジや処理エンジンのアドレスの変更に適合するように再構成可能である。処理エンジン間で通信されるデータパケットは、ユニキャストルーティング方式およびマルチキャストルーティング方式の両方をサポートできるフォーマットで定義される。各オンチップルータは、公平でデッドロックのないアービトレーション方式を使用して、テーブルに基づいたユニキャストデータパケットおよびマルチキャストデータパケットの両方をサポートする。この公平でデッドロックのないアービトレーション方式により、オンチップルータは、入力データパケットをその出力ポートに、公平かつデッドロックなしに確実に正しく送出することが可能になる。マルチキャストデータパケットについて、オンチップルータは、データパケットを正しい所望の出力ポートに転送するための2つの再構成可能モードを設ける。1つのモードは、ある入力ポートが全ての所望の出力ポートから通知を受け取っていない場合でも、1つの許可を受信すると直ちにコピーを送信するものであり、もう1つのモードは、全ての所望の出力ポートから全ての許可を受信するまで待機してから、所望の出力ポートの全てにコピーを同時に送信するものである。オンチップルータのルーティングテーブルは、ソフトウェアによりプログラム可能である。
図1は、本発明の実施形態による単一チップにおいて複数の処理エンジン(PE)105を接続する、構成変更可能オンチップルータ110の拡張性可能ネットワーク100のブロック図である。図1において、各オンチップルータ110は4つのPE105と接続されているが、オンチップルータの領域の割当可能量のようなアプリケーション要件に応じて、1つのオンチップルータが、より多いまたはより少ないPEと接続できる。各オンチップルータ110はまた、他のオンチップルータ110と接続されて、ネットワーク100を形成する。図1は、4つの最隣接のオンチップルータ110に接続して2Dメッシュのネットワークを形成する各オンチップルータ110を図示しているが、1つのオンチップルータ110に接続された最隣接のオンチップルータの数は、異なるネットワークトポロジをサポートするために異なっていてもよい。例えば、2Dメッシュのネットワークは、3Dシリコン貫通バイアに基づくIC技術において、中間層の各オンチップルータを最上層および/または最下層の最も近接するルータと接続することによって、3Dメッシュのネットワークにアップグレードできる。
このネットワークは、柔軟性があり、処理エンジンの数が変更可能なように拡張容易である。チップで多数の処理エンジンをサポートするために、各オンチップルータは、より多くの処理エンジンに接続されることができ、追加のオンチップルータがネットワークに追加されることができ、またはその両方が可能である。
ルータ対ルータリンクにおけるネットワーク内のデータ輻輳を低減するために、ルータ対ルータリンクはルータ対PEリンクよりも幅広くてもよい。図1に示すように、ルータ対ルータリンクは、各ルータ対ルータリンクが4つのデータパケットを並行して搬送できるように、ルータ対PEリンクより4倍幅広い。あるいは、幅広いリンクを使用する代わりに、各ルータ対ルータリンクは、各レーンが独立した複数の並行レーンであってもよい。この代替案は、複数の車が同時に走行できるようにした、道路の複数レーンと同様である。
ネットワーク100内の処理エンジン105は、図1に示すように、ネットワーク100の端に位置するオンチップルータ110の入力ポートおよび出力ポートを介してネットワーク100外の他のエンジン/ブロックと通信可能である。この構成により、チップにおけるネットワークのための配線物理レイアウトが容易になる。
各オンチップルータ110は、入力ポートから入力データパケットを受信し、これらのデータパケットを正しい出力ポートに転送する。オンチップルータ110における決定性ルーティングアルゴリズムを使用するのではなく、ネットワーク100内の各オンチップルータ110は、構成変更可能ルーティングテーブルを備える。この構成変更可能ルーティングテーブルは、ネットワークトポロジもしくはアドレス変更に適合するように、デッドロックを回避するように、および/または出力ポートにおける回線争奪を低減するように、ソフトウェアによって再プログラム可能であってもよい。
図2は、本発明の実施形態によるオンチップルータの各入力ポートにおけるデータパケットを処理する方法200を示す。方法200は、ステップ205から開始する。入力ポートは、入力データパケットを受信するまで待機する。入力データパケットは、ローカルPEまたはこの入力ポートと接続する上流オンチップルータから到着し得る。ステップ205において、入力データパケットは入力ポートの入力待ち行列に格納される。いくつかの実施形態では、入力待ち行列はFIFO待ち行列である。入力待ち行列が満杯の場合、データパケットのソース(すなわち、当該PEまたは上流オンチップルータのいずれか)には、新たなデータパケットの送信を停止するよう通知される。
入力待ち行列が空でなければ、ステップ210において、入力待ち行列の先頭にあるデータパケットが、転送のために処理される。ステップ215において、このデータパケットは、それがマルチキャストデータパケットであるかユニキャストデータパケットであるかについて、検査される。データパケットの種類(すなわち、マルチキャストまたはユニキャスト)に従って、入力ポートは対応するマルチキャストまたはユニキャストテーブルを探索して、どの出力ポート(1つまたは複数の出力ポート)に当該データパケットを送信すべきかを探し出す。データパケットがマルチキャストデータパケットである場合、ステップ220aにおいて、マルチキャストルーティングテーブルを使用してマルチキャストルーティング探索が行われる。あるいは、データパケットがユニキャストデータパケットである場合、ステップ220bにおいて、ユニキャストルーティングテーブルを使用してユニキャストルーティング探索が行われる。マルチキャストルーティングおよびユニキャストルーティングを以下に詳述する。
入力ポートがデータパケットの所望の出力ポートリストを把握すると、ステップ225において、クエリ要求がリスト内の所望の出力ポート(1つまたは複数の出力ポート)に送信されて、当該出力ポートがそのデータパケットを受け入れ可能か否かが検査される、
入力ポートは、出力ポート(1つまたは複数の出力ポート)から許可(1つまたは複数の許可)を受信するまで待機してから、ステップ235において、データパケットのコピー(1つまたは複数のコピー)を当該出力ポート(1つまたは複数の出力ポート)に転送する処理を行う。ステップ230において、許可(1つまたは複数の許可)が出力ポート(1つまたは複数の出力ポート)から受信される。ステップ235において、データパケットのコピー(1つまたは複数のコピー)が当該出力ポート(1つまたは複数の出力ポート)に送信または転送される。他で述べるように、いくつかの実施形態では、マルチキャストデータパケットを転送するために2つのモードがある。ステップ235の後、方法200はステップ205に戻る。
図3は、本発明の実施形態によるオンチップルータの各出力ポートにおけるデータパケットの処理の方法300を示す。方法300は、ステップ305から開始する。出力ポートは、入力ポートからクエリ要求を受信するまで待機する。
出力ポートは、当該出力ポートにデータパケットを送信しようとする異なる入力ポートから複数のクエリ要求を受信できるので、各出力ポートは、これらのクエリ要求の許可を処理する出力ポートアービタを備える。ステップ310において、複数のクエリ要求が当該(同一の)出力ポートで受信されると、アービトレーションが行われる。アービトレーションは、好ましくは、公平に(例えば、要求が現在のサイクルで許可されると、次のサイクルでは最低の優先順位になるように、各クエリ要求に対する優先順位が各サイクルで更新される。)かつデッドロックなしに(例えば、各サイクルにおいて、複数の要求を出している入力ポートのうち、許可されて転送が行われる1つの入力ポートが常にある)行われる。
ステップ315において、当該出力ポートにクエリ要求を送信した入力ポートのうちの1つに、許可が与えられ、つまり許可が送信される。
ステップ320において、対応する入力ポートつまり許可された入力ポートがデータパケットを正しい出力ポート(1つまたは複数の出力ポート)に送信できるようにクロスバーがセットアップされる。ステップ320の後、方法300はステップ305に戻る。
図4は、本発明の実施形態によるオンチップルータ400のブロック図を示す。図1で述べたオンチップルータは、オンチップルータ400と同様に構成される。オンチップルータ400は、M個の入力ポートとN個の出力ポートとを有し、MおよびNは、ネットワークトポロジに依存する。各入力ポートは、当該入力ポートへの入力データパケットを格納する入力待ち行列(入力キュー)405を有する。ルーティングブロック410において、入力ポートは、入力待ち行列の先頭にあるデータパケットがマルチキャストであるかユニキャストであるかを、データパケット内の「宛先エンジンID」フィールドに基づいて検査し、次いで、オンチップルータ内の再構成可能ルーティングテーブルから当該データパケットの所望の出力ポートを探索する。
転送制御ブロック415が、所望の出力ポートにクエリ要求を送信し、所望の出力ポートから許可を受信し、次いで、データパケットのコピー(マルチキャストの場合)および許可された出力ポート(1つまたは複数の出力ポート)への転送を行う。N個の出力ポートアービタ420が存在し、N個の出力ポートのそれぞれにつき、出力ポートアービタ420が1つずつ存在する。各出力ポートアービタ420は、その対応する出力ポートへの全てのクエリ要求について、アービトレーションを行う。これらの出力ポートアービタからの許可信号は、データパケットを入力ポートからそれら正しい出力ポートへ転送するためのクロスバー425をセットアップするのに使用される。クロスバー425は、オンチップルータの入力ポートおよび出力ポートの数に対応するM個の入力ポートおよびN個の出力ポートを有する。転送制御ブロック415、出力ポートアービタ420、およびクロスバー425のそれぞれを、以下にさらに詳述する。
図5は、本発明の実施形態によるデータパケット500のフォーマットを示す。データパケット500はデータ部505を含み、データ部505は送信エンジンと受信エンジンとの間を転送される。データパケット500はまた、ヘッダー部510を含み、ヘッダー部510は、ネットワーク内でデータパケット500をルーティングするのに使用される制御ビット515a、515b(まとめて515と称する)を含む。ヘッダー部510において、「宛先エンジンID」フィールドがオンチップルータによって検査される。「宛先エンジンID」フィールドはnビットを有すると仮定する。いくつかの実施形態では、最上位ビット(すなわち、nビットにおける位置n−1のビット)での「0」は、データパケットがユニキャストであることを示し、最上位ビットでの「1」は、データパケットがマルチキャストであることを示す。
ユニキャストデータパケットの場合、「宛先エンジンID」フィールドのn−1個の最下位ビットの値が、このデータパケットの宛先エンジンのアドレスを示す。n−1個の最下位ビットの値は「ユニキャスト宛先エンジンアドレス」として知られ、図5では「UC宛先アドレス」と示されている。「ユニキャスト宛先エンジンアドレス」を使用して、入力ポートが、そのユニキャストルーティングテーブルを探索し、このデータパケットがどの出力ポートを所望しているかを探し出す。
マルチキャストデータパケットの場合、「宛先エンジンID」フィールドのn−1個の最下位ビットの値が、このデータパケットのマルチキャストグループの識別を示す。n−1個の最下位ビットの値は、「マルチキャストグループID」として知られ、図5では「MC(マルチキャスト)グループID」と示されている。「マルチキャストグループID」を使用して、入力ポートが、そのマルチキャストルーティングテーブルを探索し、このデータパケットがどの出力ポートを所望しているかを探し出す。
図6Aは、本発明の実施形態によるオンチップルータにおける例示的な構成変更可能ユニキャストルーティングテーブル600を示す。図6Aに示す例では、「UC宛先アドレス」は5ビット幅であり、値は0から31の範囲である。ルーティングテーブル600は、各ユニキャスト宛先アドレスのための所望の出力ポートIDを一覧表示している。1つのオンチップルータが8つの出力ポートを有すると仮定する。図6Aに示すように、ユニキャスト宛先アドレス0を有するデータパケットは出力ポート3に行き、ユニキャスト宛先アドレス1を有するデータパケットは出力ポート0に行く、などとなっている。
図6Bは、本発明の実施形態によるオンチップルータにおける例示的な構成変更可能マルチキャストルーティングテーブル650を示す。図6Bに示す例では、「MCグループID」は5ビット幅であり、値は0から31の範囲である。ルーティングテーブル650は、各マルチキャストグループIDのための所望の出力ポートマスクを一覧表示している。出力ポートマスクは8ビットベクトルであり、各ビットは出力ポートを提示する。データパケットは、コピーされ、マルチキャストグループIDに対する出力ポートマスクに設定されたビットに対応する全ての出力ポートに送信される。1つのオンチップルータが8つの出力ポートを有すると仮定する。図6Bに示すように、マルチキャストグループID0を有するデータパケットは、コピーされて、出力ポート3および5(出力ポートマスクが00101000であるから)に送信され、マルチキャストグループID1を有するデータパケットは、コピーされて、出力ポート0、1、2、および3(出力ポートマスクが00001111であるから)に送信される、などとなっている。
マルチキャストルーティングでは、典型的には、複数ビットが、各マルチキャストグループIDに対する出力ポートマスクにおいて設定される。しかし、出力ポートマスクに1ビットのみが設定され得ることも可能である。この場合、そのようなマルチキャストデータパケットは、ユニキャストデータパケットと同様に処理される。換言すれば、このユニキャストルーティングは、マルチキャストルーティングの特別な場合である。
全てのルーティングテーブル600、650はソフトウェアにより再構成可能である。各入力ポートは、自己のユニキャストルーティングテーブルおよびマルチキャストルーティングテーブルを有することができる。あるいは、全ての入力ポートが、単一のユニキャストテーブルおよび/または単一のマルチキャストテーブルを共有できる。しかし、専用のルーティングテーブルはより高い柔軟性を提供するが、専用のルーティングテーブルはより大きいシリコン領域を有することを理解されたい。同様に、共有ルーティングテーブルの場合、必要とするシリコン領域はより小さくなるが、共有ルーティングテーブルでは柔軟性が制限されることを理解されたい。
図7は、本発明の実施形態によるオンチップルータの入力ポートにおけるデータパケット転送制御の方法700を示す。いくつかの実施形態において、方法700は、図4の転送制御415によって実施される。方法700は、ステップ705から開始する。ステップ705において、新たなデータパケットの所望の出力ポートリストがルーティングブロックから受信される。
入力ポートが新たなデータパケットの所望の出力ポート(1つまたは複数の出力ポート)を把握すると、ステップ710において、クエリ要求が当該所望の出力ポート(1つまたは複数の出力ポート)に送信される。
ステップ715において、許可(1つまたは複数の許可)が出力ポート(1つまたは複数の出力ポート)の出力ポートアービタ(1つまたは複数のアービタ)から受信される。入力ポートは、典型的には、許可(1つまたは複数の許可)を受信するまで待機してから、当該データパケットを出力ポート(1つまたは複数の出力ポート)に転送する。ユニキャストデータパケットの場合、所望の出力ポートが1つしかない。したがって、許可を受信した後、データパケットは当該出力ポートに送信されることになる。マルチキャストデータパケットの場合、典型的には複数の所望の出力ポートがある。したがって、入力ポートは、複数のクエリ要求を、所望の出力ポートのそれぞれに1つずつ送信するであろう。出力ポートから受信された各許可に対して、データパケットがコピーされ、当該出力ポートに送信される。いくつかの実施形態では、2つの転送モードが提供される。モード選択は、cfg_forward_modeというレジスタを設定することにより、ソフトウェアによって構成変更可能である。
●cfg_forward_modeが0に設定されると、ある出力ポートから許可を受信すると、当該入力ポートが他の所望の出力ポート(1つまたは複数の出力ポート)から通知を受け取っていない場合でも、データパケットのコピーが送信される。当該入力ポートは、次のサイクルで残りの所望の出力ポート(1つまたは複数の出力ポート)にクエリ要求を再送信する。この処理は、マルチキャストデータパケットのコピーが全ての所望の出力ポートに転送されるまで繰り返される。
●cfg_forward_modeが1に設定されると、当該入力ポートは、全ての所望の出力ポートから全ての許可を受信するまで待機してから、当該所望の出力ポートの全てにマルチキャストデータパケットのコピーを同時に送信する。
cfg_forward_modeレジスタは、スループットは重要であるがデータパケットの受信される順番は重要ではないアプリケーションにおいて0に設定され得る。そのような場合にはデータパケット送達の順番は保証され得ないことに留意されたい。なぜならばデータパケットは、許可が入力ポートで受信されるや否や送信されるからである。
しかし、いくつかのアプリケーションでは、処理のための正しいデータパケットをPEが確実に受信できるようにするために、データパケットがPEで受信される順番が重要である。入力ポートが出力ポートから許可を受信するや否やデータパケットが送信される場合、1つのPEがデータパケットを受信する順番が狂ってしまうことがあり得る。したがって、データパケットが送信される順番が重要な場合には、cfg_forward_modeレジスタを1に設定することができる。そのような場合には、入力ポートは全ての出力ポートから全ての許可を受信するまで待機してから、データパケットのコピーを同時に送信して、送達順番を保証する。2つ以上の競合するアクションがそれぞれ自分の番を待っている(例えば、2つの入力ポートがそれぞれ全ての許可の受信を待っている)場合、デッドロックが結果として生じる。しかし、下記に詳述するように、各オンチップルータによって実施されるアービトレーション方式により、デッドロックを有利に回避することができる。端的にいうと、オンチップルータの複数の出力ポートが協働して単一の入力ポートに許可を同時に送信し、それによって、当該入力ポートが全ての許可を1サイクルで得て処理を進められるようにする。
図7に戻って、ステップ720において、cfg_forward_modeが0に設定されているか否かが判断される。ステップ720においてcfg_forward_modeが1に設定されていると判断されると、ステップ725において、全ての許可が全ての所望の出力ポートから受信されているか否かが判断される。全ての許可が全ての所望の出力ポートから受信されていない場合、処理700はステップ710に戻る。そうでない場合は、ステップ730において、データパケットのコピーが全ての所望の出力ポートに送信される。ステップ730の後、処理700はステップ705に戻る。
ステップ720において、cfg_forward_modeが0に設定されていると判断された場合、ステップ735において、データパケットのコピー(1つまたは複数のコピー)が、許可された出力ポート(1つまたは複数の出力ポート)に、これらの出力ポート(1つまたは複数の出力ポート)から許可(1つまたは複数の許可)が受信されると直ちに送信される。
ステップ740において、所望の出力ポートリストが更新される。ステップ745において所望の出力ポートリストが空であると判断されると、処理700はステップ705に戻る。そうでない場合、処理はステップ710に戻り、クエリ要求が(残りの)所望の出力ポートに送信される。
上述のとおり、ユニキャストルーティングは、実際に、1つのデータパケットにつき1つの所望の出力ポートしかない、マルチキャストルーティングの特別な場合である。したがって、図7に記載のデータパケット転送方法は、ユニキャストデータパケットとマルチキャストデータパケットの両方をサポートする。
図8は、本発明の実施形態によるオンチップルータの各出力ポートにおけるアービトレーション方法800を示す。方法800は、複数の入力ポートからのクエリ要求を処理する出力ポートのアービトレーションブロックにおいて行われる。各出力ポートは、local_priority_vectorという自己の変数と、priority_vectorという自己の変数とを維持する。全ての出力ポートは、global_priority_vectorという同一の変数を共有する。これらベクトルのビット幅は入力ポートの数に等しい。これら優先順位ベクトルのそれぞれは、1に設定されたビットは1つしか有さない。各ベクトル内のビット「1」の位置が、対応する入力ポートが最高の優先順位を得て許可されることを示す。出力ポートのアービタにおけるlocal_priority_vector変数は、この出力ポートに行きたがっているユニキャストデータパケットに許可を与えるために使用される。global_priority_vector変数は、デッドロックを回避するようにマルチキャストデータパケットに許可を与えるために、全ての出力ポートアービタによって使用される。priority_vectorベクトルは、出力ポートアービタによって、当該出力ポートへのクエリ要求のうちの1つを許可するために、使用される。
ステップ805において、各出力ポートアービタのlocal_priority_vector変数と、共有global_priority_vector変数とが、好みの(favorite)入力ポートに最高の優先順位を与えるように初期化される。いくつかの実施形態では、ステップ805は、リセット時などの最初に行われる。これらベクトルの初期化された値は、ソフトウェアによって再構成可能である。したがって、出力ポートが最初にどの入力ポートに最高の優先順位を与えたいかに依存して、全ての出力ポートは、異なる初期化されたlocal_priority_vectorsを有し得る。
ステップ810において、マルチキャストデータパケットからのクエリ要求があるか否か、およびcfg_forward_modeレジスタが1であるか否かが判断される。ステップ810において、マルチキャストデータパケットからのクエリ要求があり、かつcfg_forward_modeレジスタが1であると判断されると、ステップ820において、そのpriority_vector変数は、global_priority_vector変数の値に設定される。このように設定することで、ある出力ポートアービタによってマルチキャストデータパケットが許可された場合、その全ての所望の出力ポートアービタから許可されることが保証される。これは、global_priority_vectorが全ての出力ポートアービタによって共有されているからである。この設計により、異なるマルチキャストデータパケット間でデッドロックが生じないことが保証される。
ステップ810において、cfg_forward_mode registerが0であるまたは出力ポートアービタがマルチキャストデータパケットからのクエリ要求を受信していないと判断された場合、ステップ815において、priority_vector変数は、そのlocal_priority_vector変数の値に設定される。
ステップ825において、出力ポートが利用可能であるか否かが判断される。出力ポートが利用可能でない場合、方法800はステップ810に戻る。そうでない場合、priority_vector変数に値を割り当てた後、ステップ830において、出力ポートアービタは、一旦その対応する出力ポートが利用可能となれば、受信されたクエリ要求のうち1つに許可を送信する。典型的には、出力ポートは、このポートに接続する下流オンチップルータまたはエンジンが新たなデータパケットを受け入れる準備ができていれば、利用可能である。
いくつかの実施形態では、許可アルゴリズムは、以下に示すように、priority_vectorの値に基づく:入力ポートの数をMと仮定すると、priority_vectorはMビットを有し、1つのビットは1つの入力ポートの優先順位を示す。priority_vectorは、1に設定されたビットは1つしか有さない。ビット「1」が、右から左に数えてビット位置iにあると仮定する。優先順位の順番は、入力ポートi、i+1、i+2、…、M−1、0、…i−1からのクエリ要求に対して、降順に与えられる。出力ポートアービタが1つしかクエリ要求を受信しない場合、そのクエリ要求は許可される。出力ポートアービタが複数のクエリ要求を受信した場合、許可は全てのクエリ要求の中で最高の優先順位を有するクエリ要求に与えられる。別の言い方をすれば、出力ポートアービタが入力ポートiからクエリ要求を受信すると、そのクエリ要求は許可される。出力ポートアービタが入力ポートi以外の入力ポートからも1つ以上のクエリ要求を受信すると、最高の優先順位を有する入力ポートに許可が与えられる。
許可処理が終わると、ステップ835において、共有global_priority_vector変数と全ての出力ポートアービタのlocal_priority_vector変数とが更新される。
global_priority_vector変数は以下のように更新される:cfg_forward_modeが0であるまたは許可される入力ポートがない場合、global_priority_vectorは変更されない。そうでない場合、現在のglobal_priority_vector変数が位置iにビット「1」を有すると仮定すると、入力ポートがi、i+1、…、M、0、…、i−1の順番で検査されて、これら入力ポートのうちのどれが最初にその全ての所望の出力ポートからその全てのクエリ要求を許可されるかが調べられる。この検査に適合する最初の入力ポートが入力ポートjであると仮定すると、global_priority_vector変数内のビットj+1が1に設定され、他の全てのビットは0に設定される。このことは、今や、全ての出力ポートアービタに対する次のマルチキャストクエリ要求については、入力ポートj+1が最高の優先順位を有し、入力ポートjが最低の優先順位を有することを意味する。
各出力ポートアービタのlocal_priority_vector変数は以下のように更新される:出力ポートアービタがマルチキャストデータパケットからのクエリ要求を受信するか、または(クエリ要求がないかもしくは出力ポートが利用可能でないために)許可が送信されていない場合、local_priority_vector変数は変更されない。そうでない場合、入力ポートkに許可を与えると仮定すると、local_priority_vector変数内のビットk+1が1に設定され、他の全てのビットは0に設定される。このことは、今や、この出力ポートアービタに対する次のクエリ要求については、入力ポートk+1が最高の優先順位を有し、入力ポートkが最低の優先順位を有することを意味する。
ステップ825の後、方法800はステップ810に戻る。
上述のアービトレーションおよび優先順位更新処理は、公平であることを保証する。なぜなら、各入力ポートは許可される機会を常に有するからである。ある入力ポートが今回許可されると、次回、この入力ポートは、許可について最低の優先順位を有することになる。さらに、提案されたアービトレーションはまた、2つの転送モードの両方においてマルチキャストデータパケット間のデッドロックを生じさせないことを保証する。
図9は本発明の実施形態による使用例を例示的に示す。この使用例は、オンチップルータによるデータパケットルーティングにおける最初の2つのサイクルを示す。オンチップルータが5つの入力ポートと3つの出力ポートとを有し、かつcfg_forward_modeレジスタが1に設定されていると仮定する。これは、各入力ポートは全ての所望の出力ポートから全ての許可を受信するまで待機してから、所望の出力ポートの全てにマルチキャストデータパケットのコピーを同時に送信しなければならないことを意味する。また、オンチップルータのサイクル1において、入力ポート0は出力ポート0と出力ポート1とにマルチキャストメッセージを送信したい状態にあり、入力ポート1〜4のそれぞれは出力ポート1、0、2、2にそれぞれユニキャストメッセージを送信したい状態にある、と仮定する。各出力ポートは自己のlocal_priority_vector変数と自己のpriority_vector変数とを有する。出力ポート同士は、同一のglobal_priority_vector変数を共有している。各出力ポートアービタのlocal_priority_vector変数と共有global_priority_vector変数とが、まず好みの入力ポートに最高の優先順位を与えるために初期化されている。図9に示すように、共有global_priority_vectorは、00001(入力ポート0)に初期化され、出力ポート0において出力ポートアービタによって使用されるlocal_priority_vector変数は、00001(入力ポート0)に初期化されており、出力ポート1において出力ポートアービタによって使用されるlocal_priority_vector変数は、00010(入力ポート1)に初期化されており、出力ポート2において出力ポートアービタによって使用されるlocal_priority_vector変数は、00100(入力ポート2)に初期化されている。
出力ポート0のpriority_vectorは、出力ポート0がマルチキャストメッセージに対する少なくとも1つのクエリ要求を受信しているので、global_priority_vectorの値(例えば、入力ポート0である00001)に設定される。同様に、出力ポート1のpriority_vectorは、出力ポート1がマルチキャストメッセージに対する少なくとも1つのクエリ要求を受信しているので、global_priority_vectorの値(例えば、入力ポート0である00001)に設定される。出力ポート2のpriority_vectorは、出力ポート2がユニキャストメッセージに対するクエリ要求しか受信していないので、そのlocal_priority_vectorの値(例えば、入力ポート2である00100)に設定される。
サイクル1におけるpriority_vector値に基づき、出力ポート0は、現在最高の優先順位を与えられている入力ポート0からクエリ要求を受信しているので、入力ポート0に許可を与え、出力ポート1は、現在最高の優先順位を与えられている入力ポート0からクエリ要求を受信しているので、入力ポート0に許可を与え、出力ポート2は、入力ポート2の次に高い優先順位を与えられている入力ポート3からクエリ要求を受信しているので、入力ポート3に許可を与える。したがって、入力ポート0および3は、所望の出力ポートにデータパケットを送信する。
次のサイクル、すなわちサイクル2では、入力ポート1、2、4は、サイクル1で前回のクエリ要求が許可されなかったため、自己のクエリ要求を再度トライし、出力ポート1、0、2にそれぞれクエリ要求を再送信する。サイクル2では、入力ポート0は今回は出力ポート0と出力ポート2とにマルチキャストメッセージを送信したい状態にあり、入力ポート3は出力ポート1にユニキャストメッセージを送信したい状態にある。共有のglobal_priority_vector変数は、次の優先順位のポート、すなわち00010に更新される。出力ポート0は前回のサイクルでマルチキャストメッセージからのクエリ要求を受信しているので、出力ポート0のlocal_priority_vector変数の値は同じままである(すなわち、入力ポート0である00001)。同様に、出力ポート1は前回のサイクルでマルチキャストメッセージからのクエリ要求を受信しているので、出力ポート1のlocal_priority_vector変数の値は同じままである(すなわち、入力ポート1である00010)。しかし、出力ポート2は、前回のサイクルでユニキャストメッセージからのクエリ要求を受信しており許可が入力ポート3に送信されたので、出力ポート2のlocal_priority_vector変数の値は00100から10000(入力ポート4)に更新される。
入力ポート1の次に高い優先順位を与えられた入力ポート2からクエリ要求を受信しているので、サイクル2におけるpriority_vector値に基づき、出力ポート0は、入力ポート2に許可を与え、出力ポート1は、現在最高の優先順位を与えられている入力ポート1からクエリ要求を受信しているので、入力ポート1に許可を与え、出力ポート2は、現在最高の優先順位を与えられている入力ポート4からクエリ要求を受信しているので、入力ポート4に許可を与える。したがって、入力ポート1、2、4は所望の出力ポートにデータパケットを送信する。
次のサイクル、すなわちサイクル3では、入力ポート0および3は、自己のクエリ要求を再度トライし、出力ポート0および1にそれぞれクエリ要求を再送信する。これに続く各サイクルにおいて出力ポートから許可を受信することになる入力ポートは、同様にして判断される。
出力ポートアービタが自己の許可を入力ポートへ送信した後、これら出力ポートアービタは、当該許可された入力ポートを自己の正しい出力ポートに接続するためのクロスバーをセットアップする。クロスバー論理を図10に示す。クロスバーは、実際には、N個のマルチプレクサの集合であり、Nはオンチップルータの出力ポートの数である。各マルチプレクサはM個の入力を有し、Mはオンチップルータの入力ポートの数である。各マルチプレクサは対応する出力ポートアービタによる許可信号によって制御される。例えば、出力ポートアービタnが入力ポートmに許可を送信すると、マルチプレクサnが、出力ポートnに送信される入力ポートmからのデータパケットに対してセットアップされる。
各複数−入力マルチプレクサは、一般的な2入力マルチプレクサからなる2分木から構築される。したがって、M入力マルチプレクサのための2入力マルチプレクサの数は、M−1である。M入力マルチプレクサの遅延は、2入力マルチプレクサの遅延のlog(M)倍である。
本発明の実施形態は、オンチップ構成変更可能ルータを使用した単一チップ上の複数の処理エンジンの拡張性可能相互接続方式に関する。この相互接続方式は、処理エンジンによって通信されるデータパケットのユニキャストルーティングとマルチキャストルーティングとをサポートする。各オンチップ構成変更可能ルータは、ソフトウェアによってプログラム可能なルーティングテーブルを含み、公平かつデッドロックなしに入力データパケットをその出力ポートに正しく送出するように構成される。特に、オンチップ構成変更可能ルータの各出力ポートは、オンチップ構成変更可能ルータの出力ポートにおいて回線争奪がある場合にデッドロックを回避しかつ転送されたデータパケット間の送達において公平性を保証する、出力ポートアービタを含む。
当業者ならば、他の使用法や利点もまた存在することを理解するであろう。本発明を様々な特定の詳細を参照に説明したが、当業者ならば、本発明の精神から逸脱することなく本発明が他の特定の形式で実施され得ることを理解するであろう。したがって、当業者ならば、本発明が上述の例示の詳細によって限定されず、添付の請求項によって定義されることを理解するであろう。

Claims (27)

  1. ネットワークを含むチップであって、前記ネットワークは、
    複数の処理エンジンと、
    オンチップルータのマトリックスであって、前記オンチップルータのそれぞれは、前記処理エンジンの個別のグループと、そのオンチップルータに最も近接する、当該マトリックス内のオンチップルータとに通信可能に結合されており、前記オンチップルータのそれぞれは、入力ポートと、出力ポートと、前記出力ポートそれぞれの出力ポートアービタとを含み、前記出力ポートアービタは、そのオンチップルータの全ての出力ポートアービタによって共有されるグローバル許可ベクトルと、その出力ポートアービタに固有のローカル許可ベクトルとを用いて、前記入力ポートのうちの1つからのクエリ要求を許可する、オンチップルータのマトリックスとを備えた、チップ。
  2. 請求項1に記載のチップにおいて、前記複数の処理エンジンが、前記オンチップルータの前記マトリックスを介して互いに通信を行う、チップ。
  3. 請求項1に記載のチップにおいて、前記ネットワークが、追加の処理エンジンをサポートするように拡張性を有する、チップ。
  4. 請求項3に記載のチップにおいて、前記追加の処理エンジンが、前記複数のオンチップルータに接続される、チップ。
  5. 請求項3に記載のチップにおいて、追加のオンチップルータが前記マトリックスに追加され、前記追加の処理エンジンが前記追加のオンチップルータと結合される、チップ。
  6. 請求項1に記載のチップにおいて、ネットワークの輻輳を低減するためにルータ対ルータのリンクが複数のデータパケットを並行して転送可能なように、2つのオンチップルータを接続するリンクが、オンチップルータと処理エンジンとを接続するリンクよりも複数倍幅広い、チップ。
  7. 請求項1に記載のチップにおいて、前記ネットワークの端に位置するオンチップルータが、前記ネットワークの配線物理レイアウトを簡素化するために前記ネットワーク外の構成要素に接続可能である、チップ。
  8. 請求項1に記載のチップにおいて、前記オンチップルータはソフトウェアによって構成変更可能である、チップ。
  9. オンチップルータであって、
    M個の入力ポートであって、これらM個の入力ポートのそれぞれは、
    その入力ポートと接続する上流のオンチップルータまたは処理エンジンから受信した入力データパケットを格納する入力待ち行列、
    前記入力待ち行列の先頭のデータパケットの少なくとも1つの所望の出力ポートを特定するルーティングブロック、および、
    前記少なくとも1つの所望の出力ポートのそれぞれにクエリ要求を送信してこれら出力ポートのそれぞれから許可を受信し、前記少なくとも1つの所望の出力ポートのそれぞれに前記データパケットを転送する、転送制御ブロックを含む、M個の入力ポートと、
    N個の出力ポートであって、前記N個の出力ポートのそれぞれは、少なくとも1つの入力ポートからのその出力ポートへのクエリ要求を収集し、前記クエリ要求のうちの1つを許可する、出力ポートアービタを含む、N個の出力ポートと、
    前記M個の入力ポートと前記N個の出力とを接続するクロスバーであって、前記出力ポートアービタの結果によって制御される、クロスバーとを備えた、オンチップルータ。
  10. 請求項9に記載のオンチップルータにおいて、前記クロスバーは、M入力マルチプレクサをN組含み、Mは前記オンチップルータの入力ポートの数であり、Nは前記オンチップルータの出力ポートの数である、オンチップルータ。
  11. 請求項10に記載のオンチップルータにおいて、各M入力マルチプレクサは、一般の2入力マルチプレクサのM−1個の2分木であり、2入力マルチプレクサの遅延のlog(M)倍の遅延を有する、オンチップルータ。
  12. 請求項9に記載のオンチップルータにおいて、前記データパケットは、当該データパケットがユニキャストパケットおよびマルチキャストパケットのうちのいずれであるかを示す制御ビットを含む、オンチップルータ。
  13. 請求項9に記載のオンチップルータにおいて、さらに、
    データパケットの1つまたは複数の所望の出力ポートを特定するための再構成可能ユニキャストルーティングテーブルおよび再構成可能マルチキャストルーティングテーブルを備えた、オンチップルータ。
  14. 請求項13に記載のオンチップルータにおいて、前記M個の入力ポートのそれぞれが、自己のユニキャストルーティングテーブルおよびマルチキャストルーティングテーブルを有する、オンチップルータ。
  15. 請求項13に記載のオンチップルータにおいて、前記M個の入力ポートが、前記ユニキャストルーティングテーブルおよび前記マルチキャストルーティングテーブルを共有する、オンチップルータ。
  16. 請求項9に記載のオンチップルータにおいて、前記オンチップルータは、入力ポートから出力ポートへマルチキャストデータパケットを転送するための2つの構成変更可能モードのうちの1つを実施する、オンチップルータ。
  17. 請求項9に記載のオンチップルータにおいて、前記出力ポートアービタは、前記M個の入力ポートのうちの1つまたは複数からのマルチキャストデータパケットおよびユニキャストデータパケットに関する、その出力ポートへの複数のクエリ要求に対して、1つの許可をアービトレーションする、オンチップルータ。
  18. 請求項17に記載のオンチップルータにおいて、前記出力ポートアービタは、
    全ての出力ポートアービタによって共有されるglobal_priority_vector変数であって、マルチキャストデータパケット間で許可を割り振るためのglobal_priority_vector変数と、
    各出力ポートアービタによって維持されるlocal_priority_vector変数であって、ユニキャストデータパケット間で許可を割り振るためのlocal_priority_vector変数と、
    各出力ポートアービタによって維持されるpriority_vector変数であって、前記global_priority_vectorおよび前記local_priority_vectorのうちの1つの値が動的に割り当てられるpriority_vector変数とを使用する、オンチップルータ。
  19. 請求項18に記載のオンチップルータにおいて、各出力ポートアービタの前記priority_vector値に対する値の割当てが、転送モードと、当該出力ポートアービタがマルチキャストデータパケットからのクエリ要求を受信したかとに依存する、オンチップルータ。
  20. 請求項18に記載のオンチップルータにおいて、各出力ポートアービタは、対応する前記priority_vector値に基づいて1つのクエリ要求のみに許可を与える、オンチップルータ。
  21. 請求項18に記載のオンチップルータにおいて、共有される前記global_priority_vector変数および全てのlocal_priority_vector変数が、許可される機会を全てのデータパケットが常に有しかつデッドロックが生じないことが保証されるように、許可の結果に基づいて各サイクルの後に更新される、オンチップルータ。
  22. オンチップルータで実施される方法であって、
    複数の入力ポートのうちの1つに優先順位を与えるように、前記オンチップルータの全てのN個の出力ポートアービタによって共有されるglobal_priority_vector変数を初期化することであって、前記global_priority_vector変数は、マルチキャストデータパケット間で許可を割り振るためのものである、初期化することと、
    前記N個の出力ポートアービタによって維持されるN個のlocal_priority_vector変数のそれぞれを、前記複数の入力ポートのうちの1つに初期化することであって、前記N個のlocal_priority_vector変数のそれぞれは、ユニキャストデータパケット間で許可を割り振るためのものである、初期化することと、
    転送モードを判断することと、
    前記N個の出力ポートアービタのそれぞれにおける、
    クエリ要求がマルチキャストデータパケットからのものであるか否かを判断することと、
    前記転送モードが第1のモードであるという判断または前記クエリ要求がマルチキャストデータパケットからのものでないという判断に基づいて、priority_vectorの値を前記local_priority_vectorの値に設定することと、
    前記転送モードが第2のモードであるという判断および前記クエリ要求がマルチキャストデータパケットからのものであるという判断に基づいて、priority_vectorの値を前記global_priority_vectorの値に設定することと、
    対応する出力ポートが利用可能であると、前記priority_vectorに基づき入力ポートに許可を送信することと、
    前記global_priority_vector変数および前記N個のlocal_priority_vector変数を更新することとを備えた、方法。
  23. 請求項22に記載の方法において、前記転送モードが前記第1のモードであるか、または許可を受けようとする入力ポートがない場合に、前記global_priority_vector変数は更新されない、方法。
  24. 請求項22に記載の方法において、前記転送モードが前記第2のモードであり、かつ許可を受けようとする少なくとも1つの入力ポートがある場合に、前記global_priority_vector変数は、次に高い優先順位を有する入力ポートに更新される、方法。
  25. 請求項22に記載の方法において、前記対応する出力ポートアービタがマルチキャストデータパケットからの少なくとも1つのクエリ要求を受信するか、または許可が送信されない場合には、local_priority_vector変数が更新されない、方法。
  26. 請求項22に記載の方法において、前記対応する出力ポートアービタがマルチキャストデータパケットからのクエリ要求を受信せず、かつ許可が送信される場合には、local_priority_vector変数が更新される、方法。
  27. 請求項22に記載の方法において、前記第1のモードは、入力ポートが全ての所望の出力ポートから通知を受け取っていない場合でも、許可を受信するとコピーを送信し、前記第2のモードは、全ての所望の出力ポートから全ての許可を受信するまで待機してから、前記所望の出力ポートの全てにコピーを同時に送信する、方法。
JP2014263372A 2013-12-27 2014-12-25 複数の処理エンジンを相互接続するオンチップルータのマトリックスおよびこれを用いるルーティング方法 Active JP6556450B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/142,497 US9548945B2 (en) 2013-12-27 2013-12-27 Matrix of on-chip routers interconnecting a plurality of processing engines and a method of routing using thereof
US14/142,497 2013-12-27

Publications (2)

Publication Number Publication Date
JP2015128294A true JP2015128294A (ja) 2015-07-09
JP6556450B2 JP6556450B2 (ja) 2019-08-07

Family

ID=53483205

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014263372A Active JP6556450B2 (ja) 2013-12-27 2014-12-25 複数の処理エンジンを相互接続するオンチップルータのマトリックスおよびこれを用いるルーティング方法

Country Status (6)

Country Link
US (1) US9548945B2 (ja)
JP (1) JP6556450B2 (ja)
KR (4) KR102319463B1 (ja)
CN (1) CN104954254B (ja)
HK (1) HK1210882A1 (ja)
TW (1) TWI661702B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104378288B (zh) * 2014-11-19 2017-11-21 清华大学 基于路由交换范式的构件组装方法及系统
US9923730B2 (en) * 2014-12-17 2018-03-20 Intel Corporation System for multicast and reduction communications on a network-on-chip
US10050843B2 (en) * 2015-02-18 2018-08-14 Netspeed Systems Generation of network-on-chip layout based on user specified topological constraints
US9864728B2 (en) * 2015-05-29 2018-01-09 Netspeed Systems, Inc. Automatic generation of physically aware aggregation/distribution networks
US10594505B2 (en) 2016-01-27 2020-03-17 Quanta Computer Inc. System and method for avoiding deadlock in transmission of broadcast traffic in a server system
US9853916B2 (en) * 2016-04-01 2017-12-26 Intel Corporation Modular fabric internal datapath
US10142258B2 (en) * 2016-04-08 2018-11-27 Advanced Micro Devices, Inc. Methods and apparatus for processing in a network on chip (NOC)
US10372640B2 (en) 2016-11-21 2019-08-06 International Business Machines Corporation Arbitration of data transfer requests
US10587504B2 (en) * 2017-02-08 2020-03-10 International Business Machines Corporation Packet broadcasting mechanism for mesh interconnected multi-computers
US10476814B2 (en) * 2017-07-21 2019-11-12 Aruba Networks Inc. Arbiter circuit for crossbar
CN107807901A (zh) * 2017-09-14 2018-03-16 武汉科技大学 一种可扩展的可重构多核处理器连接方法
US20200099993A1 (en) * 2018-09-21 2020-03-26 Advanced Micro Devices, Inc. Multicast in the probe channel
CN110866599A (zh) * 2019-11-08 2020-03-06 芯盟科技有限公司 芯片、及在芯片内建立数据路径的方法
US11398980B2 (en) 2019-11-19 2022-07-26 Advanced Micro Devices, Inc. Packet router with virtual channel hop buffer control
US11245643B2 (en) * 2020-05-20 2022-02-08 Tenstorrent Inc. Speculative resource allocation for routing on interconnect fabrics
CN111666139B (zh) * 2020-05-26 2022-11-11 中国人民解放军国防科技大学 一种多输入多输出多服务等级数据队列的调度方法及装置
CN111970201A (zh) * 2020-08-28 2020-11-20 迈普通信技术股份有限公司 一种多芯片级联的转发系统及转发控制方法
US20230224239A1 (en) * 2022-01-13 2023-07-13 Nvidia Corporation Network multicasting using alternate sets of directives
CN114679422B (zh) * 2022-03-25 2024-04-26 中国电子科技集团公司第五十八研究所 一种基于双网络的无死锁多裸芯集成微系统高性能架构
CN114915594B (zh) * 2022-07-14 2022-09-30 中科声龙科技发展(北京)有限公司 均衡路由的方法、网络互连系统、交叉开关装置及芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001024641A (ja) * 1999-07-06 2001-01-26 Nec Corp クロスバー型スイッチのアービタにおける接続許可システム及び方法
JP2002208938A (ja) * 2001-01-05 2002-07-26 Fujitsu Ltd パケットスイッチ
WO2009133918A1 (ja) * 2008-04-30 2009-11-05 日本電気株式会社 ルータ、そのルータを有する情報処理装置及びパケットのルーティング方法
US20130294458A1 (en) * 2011-10-14 2013-11-07 Panasonic Corporation Router, method for controlling the router, and computer program

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929939A (en) 1988-10-31 1990-05-29 International Business Machines Corporation High-speed switching system with flexible protocol capability
US5319347A (en) 1992-04-30 1994-06-07 Sgs-Thomson Microelectronics, Inc. Parallelized magnitude comparator for comparing a binary number to a fixed value
US6667984B1 (en) * 1998-05-15 2003-12-23 Polytechnic University Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing
ATE319249T1 (de) 2000-01-27 2006-03-15 Ibm Verfahren und vorrichtung für klassifizierung von datenpaketen
US7461167B1 (en) * 2002-11-22 2008-12-02 Silicon Image, Inc. Method for multicast service in a crossbar switch
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
EP1553738A1 (en) 2004-01-12 2005-07-13 Thomson Licensing S.A. Method and apparatus for generating data packets
US20060059269A1 (en) * 2004-09-13 2006-03-16 Chien Chen Transparent recovery of switch device
US20060140126A1 (en) * 2004-12-27 2006-06-29 Intel Corporation Arbitrating virtual channel transmit queues in a switched fabric network
US8054744B1 (en) 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
US9159420B1 (en) 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US9674114B2 (en) * 2012-02-09 2017-06-06 Intel Corporation Modular decoupled crossbar for on-chip router
US20140153443A1 (en) 2012-11-30 2014-06-05 International Business Machines Corporation Per-Address Spanning Tree Networks
CN104022960B (zh) 2013-02-28 2017-05-31 新华三技术有限公司 基于OpenFlow协议实现PVLAN的方法和装置
US9973599B2 (en) 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001024641A (ja) * 1999-07-06 2001-01-26 Nec Corp クロスバー型スイッチのアービタにおける接続許可システム及び方法
JP2002208938A (ja) * 2001-01-05 2002-07-26 Fujitsu Ltd パケットスイッチ
WO2009133918A1 (ja) * 2008-04-30 2009-11-05 日本電気株式会社 ルータ、そのルータを有する情報処理装置及びパケットのルーティング方法
US20130294458A1 (en) * 2011-10-14 2013-11-07 Panasonic Corporation Router, method for controlling the router, and computer program

Also Published As

Publication number Publication date
KR20150077373A (ko) 2015-07-07
US9548945B2 (en) 2017-01-17
KR20220148777A (ko) 2022-11-07
CN104954254A (zh) 2015-09-30
KR102637136B1 (ko) 2024-02-16
KR20210131293A (ko) 2021-11-02
US20150188848A1 (en) 2015-07-02
TWI661702B (zh) 2019-06-01
TW201547241A (zh) 2015-12-16
HK1210882A1 (en) 2016-05-06
KR102459838B1 (ko) 2022-10-28
JP6556450B2 (ja) 2019-08-07
KR102319463B1 (ko) 2021-10-29
KR20240024150A (ko) 2024-02-23
CN104954254B (zh) 2019-08-09

Similar Documents

Publication Publication Date Title
JP6556450B2 (ja) 複数の処理エンジンを相互接続するオンチップルータのマトリックスおよびこれを用いるルーティング方法
US9742630B2 (en) Configurable router for a network on chip (NoC)
US10853282B2 (en) Arbitrating portions of transactions over virtual channels associated with an interconnect
US10735335B2 (en) Interface virtualization and fast path for network on chip
US7773616B2 (en) System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
US11730325B2 (en) Dual mode interconnect
US20080107106A1 (en) System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
US10983910B2 (en) Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US9203739B2 (en) Adaptive routing apparatus and method
US7773617B2 (en) System and method for arbitration for virtual channels to prevent livelock in a richly-connected multi-processor computer system
US10990552B1 (en) Streaming interconnect architecture for data processing engine array
US20180198682A1 (en) Strategies for NoC Construction Using Machine Learning
US9928204B2 (en) Transaction expansion for NoC simulation and NoC design
EP4385133A2 (en) Interconnecting reconfigurable regions in an field programmable gate array
WO2008057821A2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system
REDDY et al. Design of Reconfigurable NoC Architecture for Low Area and Low Power Applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171225

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20171225

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190610

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190710

R150 Certificate of patent or registration of utility model

Ref document number: 6556450

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250