JP5226714B2 - オンチップネットワーク内のパケットルーティング - Google Patents

オンチップネットワーク内のパケットルーティング Download PDF

Info

Publication number
JP5226714B2
JP5226714B2 JP2010052437A JP2010052437A JP5226714B2 JP 5226714 B2 JP5226714 B2 JP 5226714B2 JP 2010052437 A JP2010052437 A JP 2010052437A JP 2010052437 A JP2010052437 A JP 2010052437A JP 5226714 B2 JP5226714 B2 JP 5226714B2
Authority
JP
Japan
Prior art keywords
port
ports
output
output port
core
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.)
Active
Application number
JP2010052437A
Other languages
English (en)
Other versions
JP2011139413A (ja
Inventor
(ビル)エイチ. マンジョーネ−スミス,ウィリアム
Original Assignee
エンパイア テクノロジー ディベロップメント エルエルシー
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 エンパイア テクノロジー ディベロップメント エルエルシー filed Critical エンパイア テクノロジー ディベロップメント エルエルシー
Publication of JP2011139413A publication Critical patent/JP2011139413A/ja
Application granted granted Critical
Publication of JP5226714B2 publication Critical patent/JP5226714B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Description

背景
[0001] コンピュータ産業において、プロセッサ技術の進歩は、絶えず達成されている。技術におけるこれらの進歩は、しばしば多様な方法で表される。例えば、クロック速度は、性能の指標とされることが多い。より高いクロック速度は、より良い性能を提供する。
[0002] 現在、プロセッサの性能はしばしば、クロック速度だけでなく、利用可能なプロセッサコアの数という点でも表される。例えば、デュアルコアプロセッサは通常、遅いクロック速度で動作する場合であっても、シングルコアプロセッサよりも高い性能を有する。
[0003] マルチコアプロセッサの初期の発展において、コア(及びその他のコンポーネント)は、従来のバス技術を使用して接続されていた。しかし、このアプローチは、プロセッサ内のコア数が増加するにつれ、実行不能になり、実際は、マルチコアプロセッサの性能に悪影響を与えかねない。その結果、プロセッサの設計者は、オンチップネットワークの概念を検討し始めた。オンチップネットワークは、データ又はパケットを、従来のバス技術よりも速くルーティングすることを可能にする。
発明が解決すべき課題
[0004] オンチップネットワークの発展にもかかわらず、マルチコアプロセッサの性能は、十分な発展の余地がある。例えば、従来のマルチコアプロセッサにおけるパケットのルーティング時間は、少なくとも、パケットが作成するよう要求されるホップの数及び各コアにおいてパケットをルートするのに要する時間によって決まる。オンチップネットワーク内で高いスループット及び少ない待ち時間を提供するための性能は、とりわけ、仮想化、コアサイズの上昇及びコア数の増加の動向という点でますます重要になっている。
[0005] 図1は、複数のプロセッサコアを含むマルチコアプロセッサのブロック図の例示的実施形態を示す。 [0006] 図2は、少なくともマルチコアプロセッサのプロセッサコアを接続するオンチップネットワークの一例を示すブロック図である。 [0007] 図3は、マルチコアプロセッサに含まれるコアの一例を示すブロック図である。 [0008] 図4は、オンチップネットワークで伝送されたパケットをルートするのに好適な、マルチコアプロセッサ内の各コアに含まれるネットワークスイッチの一例を示す。 [0009] 図5は、パケットのための出力ポートを選択する予測モジュールの一例を示す。 [0010] 図6は、パケットのための出力ポートを選択する際に考慮から除外されるポートの例を示す。 [0011] 図7は、オンチップネットワークにおいてパケットのルーティング方法の例示的実施形態のフロー図である。 [0012] 図8は、オンチップネットワークにおいてパケットのルーティング方法の別の例示的実施形態のフロー図である。 [0013] 図9は、マルチコアプロセッサを含む計算装置の一例を示す。
[0014] 以下の詳細な説明において、本明細書の一部をなす図面を参照する。図面では、文脈が別途指示する場合を除き、一般に同様の符号は同様の構成要素を示す。詳細な説明、図面及び請求の範囲に記載される例示的な実施例は、限定的であるようには意図されていない。本明細書に提示されている主題の精神又は範囲から逸脱することなく、他の実施例が使用されてよく、かつ他の変更もされてよい。本明細書において一般的に記載されかつ図示される本開示の態様が、多岐にわたる構成で配置され、置き換えられ、組み合わされ、かつ設計されることができ、それらの全てが明確に意図されているということが充分に理解されるだろう。
[0015] 本明細書に記載される実施形態は、マルチコアプロセッサのオンチップネットワークにおけるパケットのルーティングに関する。マルチコアプロセッサにおけるコア及びネットワークスイッチは、通常、複数のポートを含む。結果として、オンチップネットワークにおいて伝送されたパケットを、正しいポートに素早くルーティングすることは、マルチコアプロセッサの性能を向上させることができる。例えば、パケットをどこにルーティングするか決定するために費やす時間が少ないマルチコアプロセッサは、パケットをどのようにルーティングするか決定するためにより多くのクロック周期を費やすマルチコアプロセッサよりもより効率的であるだろう。
[0016] マルチコアプロセッサにおけるパケットのルーティングは、本明細書に開示されるように、パケットのための出力ポートの選択を含む。この出力ポートの選択又は同定は、パケットのルーティング時にいくつかのポートを考慮から積極的に除外する。パケット数の削減は、正しい出力ポートの同定を容易にする。考慮から除外されるポートは、不正な出力ポートである。
[0017] いくつかのポートの除外は、ある場合では、素早くパケットをルートするために、正しい出力ポートの予測と組み合わせられることができる。削減されたポート群から出力ポートを予測することによって、正しいポートを選択する可能性が高くなり、ポートの選択が、わずか1クロック周期で達成されることができる。
[0018] 図1は、複数のプロセッサコア140を含み、コンピュータ又は他の計算装置に含まれうるマルチコアプロセッサ100のブロック図の例示的実施形態を示す。マルチコアプロセッサ100は、コンピュータ及び処理を目的とする他の装置において使用されうる。マルチコアプロセッサ100は、コンピュータにロード、記憶その他アクセス可能にされたソフトウェア又は他の実行可能な命令の動作又は実行に責任を有する。本明細書により詳細に記載されるとおり、マルチコアプロセッサ100は、データをルーティングする間、特定のポートを考慮から除外することによって、データを内部でルーティングしうる。
[0019] マルチコアプロセッサ100は、プロセッサコア140を含む。プロセッサコア140は、コンピュータ又はコンピュータシステムにおいて命令を実行し、計算を実行し、また計算及び処理能力を提供する。プロセッサコア140は、入力/出力モジュール104を介して、コンピュータ内の他のモジュールやコンポーネントと通信することができる。入力/出力モジュール104は、しばしばシステムバス106上で運ばれるデータを受信/伝送することができる。
[0020] 入力/出力モジュール104は、ギガビットイーサーネット、XAUI、PCle、JTAG、TWIなどを含むがこれらに限定されない複数のプロトコルに従い構成されるか又は実行可能である。入力/出力モジュール104はまた、必要があればデータの直列化/非直列化を行いうる。入力/出力モジュール104は、各プロトコルのために構成可能な個別のモジュールを含みうる。入力/出力モジュール104は、マルチコアプロセッサ100又はコンピュータを他のコンピュータと、ローカルエリアネットワーク、インターネットなどのネットワーク上で通信できるようにしうる。例えば、マルチコアプロセッサ100を有するサーバーコンピュータは、ネットワーク上でクライアントコンピュータと通信しうる。前述の例では、クライアントコンピュータは、マルチコアプロセッサ100を含んでも、含まなくてもよい。
[0021] マルチコアプロセッサ100はまた、コントローラ102を含む。コントローラ102は、複数のコントローラ102を含みうるが、多様なキャッシュレベル、RAMなど又はこれらの組み合わせなどのシステムメモリへのアクセスを、プロセッサコア140に提供しうる。当業者は、マルチコアプロセッサ100が他のモジュール(例えば、命令デコーダ、バスインターフェースユニット、アドレスジェネレータ、浮動小数点ユニット、整数実行ユニット、レジスタなど)を含みうることが理解できるだろう。さらに、マルチコアプロセッサ100は、単一のチップに統合されうる。代替的に、本明細書に記載されたモジュールのいくつかは、互いに作用しあう個別のチップに統合されてもよい。
[0022] 図2は、少なくともマルチコアプロセッサ100のプロセッサコア140を接続するオンチップネットワーク200の一例を示すブロック図である。図2は、マルチコアプロセッサ100内のプロセッサコア140のより詳細な図を提供する。プロセッサコア140は、コア250a、コア250b及びコア250cを含む複数の個別のコア250を含む。文脈次第では、コア250への参照又は記述は、コア250a、コア250b及びコア250cのそれぞれに適用される。同様に、コア250a、コア250b及びコア250cへの参照又は記述はまた、文脈に従い、他のコア250に適用されうる。
[0023] コア250のそれぞれは、総じて同一であるが、コア250のいくつかは、他のコアと構造的に異なる場合がある。例えば、コア250のいくつかのコアは、入力/出力モジュールと直接インターフェースしうるし、あるコアは、他のコアを介して入力/出力モジュールと通信しうる。コア250に含まれるコア250aは、コア250を介してマルチコアプロセッサ100のモジュール又はコンポーネントと通信しうる。
[0024] コア250は、異なる構成又はトポロジーで構成されることができる。メッシュトポロジー、格子トポロジー、トーラストポロジー又はファットツリートポロジーは、本明細書において記載されるようにそれぞれが接続されうるコアトポロジーの例である。
[0025] コア250のそれぞれは、プロセッサコア140における他のコアとは独立して機能することができるプロセッサを含む。コア250のぞれぞれは、必要があれば通常それ自身においてコンピュータプログラムを実行することができる。マルチコアプロセッサ100の1つの利点は、コア250が、アプリケーションの実行又は命令の実行などのために集合的に(例えば、並行して)作動することができることである。
[0026] アプリケーションを集合的に実行する際、コア250は、実行されているアプリケーション内で異なる責任を有しうる。結果として、マルチコアプロセッサ100は、単一のコアでアプリケーションを実行する場合又は単一のコアプロセッサと比較すると、より早く同じアプリケーションを実行することができる。加えて、コア250は、同時にコンピューティングシステム内の異なるアプリケーション又はプロセスにおいて動作することができる。これは、例えば、いくつかのコア250が1つのアプリケーションを実行する一方で、他のコア250が他のアプリケーション又はプロセスを実行することを許可する。加えて、コア250は、アプリケーションプロセスを切り替えることもできる。
[0027] マルチコアプロセッサ100におけるプロセス又はアプリケーションの実行時、データ(例えば、アプリケーションデータ、アドレス、命令など)を1つのコア150から別のコア250へ(例えば、コア250bから250cへ)移動させる必要があるかもしれない。これは、コネクション252を含むオンチップネットワーク200を使用してしばしば達成されうる。
[0028] 図2において、コネクション252は、コア250を互いに接続させるために使用されている。全てのコア250が直接互いに接続されない(例えば、コア250bがコア250aに直接接続されていない)一方で、コネクション252は、コア250のいずれもが他のコア250と、直接又は1つ以上の他のコアを介して通信できることを確実にする。例えば、コア250がグリッド構成で配置されている場合、コア250は、コネクション252を、上、右、左及び下の方向に有しうる。本例では、各コネクション252は、複数のチャネル202を含みうる。このチャネルは、コア250間の物理接続を含みうる。結果として、複数のチャネルは、直接接続されたコア250間に存在しうる。
[0029] 図3は、マルチコアプロセッサ100に含まれるコア250aの一例を示すブロック図である。コア250aは、プロセッサ302、キャッシュ304及びネットワークスイッチ300を含む。コネクション252を使用したデータの配信又は転送の能力は、各コア250にネットワークスイッチ300を提供することによって達成される。ネットワークスイッチ300は、コネクション252の例であるコネクション306、コネクション308、コネクション310及びコネクション312によって、他のコア内の隣接するネットワークスイッチに接続されうる。前述のとおり、コネクション252、312、306、308及び310のそれぞれは、通常、複数のチャネルを含む。結果として、コア250aは、複数のチャネルを介して、隣接の又は直接接続されたコア250と通信することができる。
[0030] ネットワークスイッチ300は、ポート320を介して、コネクション306、308、310及び312とインターフェースする。より具体的には、コネクション312、306、308及び308のそれぞれによって表されるチャネルは、ポート320に含まれる特定のポートに接続される。1つの例では、ネットワークスイッチ300のポート320は、およそ10のポート、20のポート又はそれ以上のポートを含む。本例では、コア250aは、少なくとも4つの他のポートと通信しうる。
[0031] 各コネクションは、例としては、5つのチャネルに対応する5つのポートを含みうる。各コネクションが、対応するポートより多い又は少ないチャネルを含みうることは、当業者には理解されよう。本例において、5つのチャネルのそれぞれは、各ポートへの物理接続を提供する。加えて、ネットワークスイッチ300はプロセッサ302を有するチャネルを有しうる。
[0032] コア250aはまた、キャッシュ304を含む。キャッシュ304は、コア250aに特有であってよいし、又は、他のコア250と共有されてもよい。代替的に、キャッシュ304は、ネットワークスイッチ300に含まれうるか、又は、ネットワークスイッチ300にアクセス可能であってもよい。
[0033] 図4は、オンチップネットワーク上で伝送されるパケットをルーティングすることに好適な、マルチコアプロセッサ100におけるコア250のそれぞれに含まれるネットワークスイッチ300の一例を示す。ネットワークスイッチ300は、図4においてポート320a及びポート320bとして示されるポート320を含む。便宜上、ポート320は入力ポート320a及び出力ポート320bとして概念的に示されている。しかし、ポート320のいずれも、ネットワークスイッチ300のための入力ポートでありうるし、また出力ポートでありうる。
[0034] より具体的には、図4は、ポート320が個別のポート412、414、416、418、420、422、424及び426を含むことを示している。ポート320の1つにおけるデータの受信時、他のポートは潜在的出力ポートを構成する。前述したとおり、ネットワークスイッチ300は、いかなる所望の数のポートを有することができることは、当業者には理解されよう。
[0035] 前述のとおり、パケット434で表現されるデータのネットワークスイッチ300による受信/伝送時、ポート320のいずれも、前述のとおり、パケット434の入力ポートになりうるし、また、パケット434の出力ポートになりうる。パケット434は、例として、オンチップネットワーク200においてコア250間で伝送又は通信されうる単一のパケット、複数のパケット、ストリーミングデータ(例えば、オーディオ、ビデオ)、命令、アドレス、若しくは他のデータなど、又はこれらの組み合わせを表しうる。
[0036] パケット434は、それゆえ、オンチップネットワーク300において伝送されたデータを表す。例として、パケット434は、ポート412に到着し、それゆえポート412はパケット434の入力ポートとなる。ルーティングモジュール430は、ネットワークスイッチ300のためのコントローラを含みうるが、パケット434が更なるプロセスのために送信先コアに達していない限り、それからパケット434をポート420(出力ポート)にルーティングしうる。より具体的には、ルーティングモジュール430は、出力ポートとしてポート420を選択し、次いで、パケット434をルーティングする。
[0037] 図4は、ルーティングモジュール430が、パケット434のための出力ポートを選択するために使用される予測モジュール432を含むことを示す。パケット434のための出力ポートを選択することによって、出力ポートを選択するために要する時間が短縮できる。例えば、出力ポートを選択するために要する時間を、4クロック周期、2又はそれより少ないクロック周期より少なくすることができるか、又は1クロック周期にすることができる。
[0038] いくつかの例では、出力ポートの選択は、出力ポートの予測又は出力ポートの部分的予測を含む。パケット434の伝送はさらなるクロック周期を要するが、出力ポートの選択は、1つの実施形態では1クロック周期のみを要し、他の実施形態は2つ以上のクロック周期を使用しうる。
[0039] 予測モジュール432は、パケット434のための出力ポートを選択する。より具体的には、パケット434が入力ポートに到着すると、いずれのポート320がパケット434を送るべき出力ポートであるかを決定するために、予測モジュール432は、ルーティングモジュール430によって使用される。
[0040] 図5は、パケット434のための出力ポート510を選択する予測モジュール432の一例を示す。予測モジュール432は、出力ポート予測器502、不正ポート予測器504及びポート選択モジュール506を含む。出力ポート予測器502及び不正ポート予測器504から提供された情報を使用し、ポート選択モジュール506は、パケット434のための出力ポート510(これは本例におけるポート320の1つである。)を選択する。
[0041] 図4及び5を参照して、例えば、パケット434は、この場合では入力ポートであるポート412に到着するだろう。予測モジュール432は、例えば、出力ポート510がポート420であると予測する。ルーティングモジュール430は、それから、パケット434を、本例では出力ポートであるポート420にルーティングする。
[0042] 予測モジュール432により選択された出力ポートが誤っている場合、パケット434の伝送をキルするために強制終了(kill)信号が送信され、パケット434は、ついで、ポート320から選択された異なる出力ポートへ向けられるか又はルーティングされる。選択された出力ポートは、予測アルゴリズムを使用して選択されうることに一部起因して、誤っている場合がある。予測された出力ポートが正しい出力ポートである場合、パケット434の転送遅延は軽減され、性能が改善される。予測された出力ポートが不正な出力ポートである場合、強制終了信号が、パケット434が不正に伝播されないようにする。
[0043] 本例では、予測モジュール432はまた、出力ポートの二度目の選択を行いうる。しかしこの場合、ポート420は、不正として知られており、予測モジュール432によって考慮から除外される。
[0044] 予測モジュール432は、パケット434のための正しい出力ポートが選択される可能性を高める。正しい出力ポートが選択されたとき、とりわけ、パケット434が、送信元コア(例えばコア250c)と送信先コア(例えばコア250b)との間の経路におけるオンチップネットワーク200上で、いくつかのホップを作成する必要がある場合、マルチコアプロセッサ100全体の性能が改善される。
[0045] 本例では、不正ポート予測器504が、いずれのポート320が不正であるかを同定した場合に、出力ポート510の選択は達成される。不正ポート予測器504は、パケット434のための正しい出力ポートでないことを意味する、不正であるポート320の組を同定することができる。ポート選択モジュール506は、いくつかの実施形態において、不正ポート予測器504からの出力を使用することができ、次いで、残存するポート(すなわち、不正ポートとして同定されていないポート)の1つを出力ポート510として単に選択することができる。
[0046] 通常、不正ポート予測器504の出力で同定されたポートは、正しいポートであることは殆どない。言い換えると、不正ポート予測器504の出力で同定されたポートが、不正であることは殆ど確かである。1つの例において、不正ポート又は不正ポートの組は、ブルームフィルタ(Bloom filters)を使用して同定される。
[0047] ブルームフィルタは、ソフトウェアに実装されうるが、特定の事象が発生しえないときを予測する、低オーバーヘッドのハードウェア構造である。1つの実施形態では、ブルームフィルタは、ハッシュ関数の組及びある長さのベクトルを含む。通常、ハッシュ関数は、ベクトルの長さ内にある値を返却し、ベクトル中のエントリ(例えばビット)は、初めは0に設定されうる。ベクトルは、例えば50の長さを有し、ハッシュ関数は1から50の間の値を返却する。
[0048] 次に、全てのハッシュ関数にキーが実行され、結果は、ベクトルへの効果的なオフセットである。ベクトル内のオフセットに対応するエントリは、次いで1に設定される。キーは、徐々に、1を有するベクトル内のエントリのいくつかを代入する。
[0049] 未知のキーがブルームフィルタに提示された場合、この未知のキーがブルームフィルタ内に存在するかどうか確かめるために全てのハッシュと共にハッシュされることができる。全てのハッシュの結果が0であるエントリに対応する場合、ブルームフィルタ内にそのキーは存在しない。全てのハッシュの結果が1である場合、そのキーはブルームフィルタ内に存在しうる。ハッシュ結果のいくつかが0で、別のいくつかが1である場合、キーは誤検出でありうる。
[0050] 本例では、キーは、ブルームフィルタを通過する際に、いずれのポートが不正ポートであるか決定することができる情報又はデータに対応しうる。1つの例では、各ポートはブルームフィルタと関連付けられうる。代替的に、全てのポートは、単一のブルームフィルタによって表されることができる。
[0051] 例えば、入力ポートにおいて受信されたパケット又はその一部は、ブルームフィルタを通して実行されることができるキーでありうる。不正ポート予測器504への入力は、パケット又はその一部でありえ、不正ポート予測器504の出力は、不正ポートを同定する。より具体的には、不正ポート予測器504への入力がハッシュされ、結果が0であるベクトル内のエントリに対応する場合、不正ポートは、殆ど完全な確実性をもって決定されることができる。
[0052] 更なる例として、同一のルートを辿る一連のパケットの1つであるが、その一連の最初のものでないものとしてパケットを同定する目印(indicia)を含むパケットの場合を考える。かかる目印は、パケットヘッダにおいては稀ではない。そのようなパケットが到着し、ソースアドレスからのパケットが特定のポートから出てこなかった場合、ブルームフィルタは、その特定のポートが適切な目的地であり得ないことを同定できる。ブルームフィルタは、単一のクロック周期でアクセスされることができる完全な組み合わせ並列構造でありうる。
[0053] この場合、不正ポート予測器504は、不正なポートを同定するためにブルームフィルタを使用しうる。ブルームフィルタにおいて誤検出は起こりうるが、検出漏れは起こり得ない。結果として、不正ポート予測器504は、ポートが実際には正しい場合、これを不正であると同定することは決してない。
[0054] 1つの実施形態では、不正ポート予測器504と並行して、出力ポート予測器502が、いずれのポート320が出力ポートである可能性が高いかを決定するため、ポート320をランク付けしうる。ポート320はしたがって、例えば、正しい出力ポートである可能性によってランク付けされることができる。
[0055] 例えば、出力ポート予測器502は、出力ポート510が以前のパケットのための出力ポートと同一である場合、ストラテジを使用して出力ポート510を予測しうる。この場合、直近のポートは他のポートよりも高くランク付けされ、正しい出力ポートである最も高い可能性を有しうる。
[0056] 別の例では、予測モジュール432は、出力ポートとして使用されたポートの履歴を保持しうる。出力ポート予測器502は、次いで、出力ポート510として最も頻繁に使用されたポートを選択しうる。最も頻繁に使用されたポートは、最も高くランク付けされる。残りのポートは、次いで、使用頻度に基づきランク付けされることができる。選択された出力ポート510は、不正ポート予測器がこれを排除しない限り、最も頻繁に使用されたポートである。
[0057] 別の例では、予測モジュール432は、不正ポート予測器によって排除されていないポートから無作為に出力ポート510を選択しうる。出力ポート510をランク付け又は予測するための追加アルゴリズムは、参照により本明細書に組み込まれる“Prediction Router: Yet Another Low Latency On−Chip Router Architecture”(第15回IEEE国際シンポジウム(2009年2月14〜18日))に記載される。
[0058] ポート選択モジュール506は、出力ポート510を選択するために出力ポート予測器502の出力及び不正ポート予測器504の出力を受信する。例えば、不正ポート予測器504は、ポート424が不正であること、及び、ポート434がポート424へ又はこれを介して伝送されるよう意図されていないことを同定しうる。結果として、出力ポート予測器502が、ポート424が正しい出力ポートであると確信していたとしても、ポート424は、ポート選択モジュール506によって考慮から除外されうる。
[0059] 不正ポート予測器504は、出力ポート510の選択時、ポート選択モジュール506によって考慮されるポートの数を効果的に減らす。特定のポートが考慮から除外されているから、ポート選択モジュール506は、正しい出力ポート510を選択するより高い可能性を有する。ネットワークスイッチ300の性能は改善され、マルチコアプロセッサ100のオンチップネットワーク300において、パケット434はより速く、より効率的にルーティングされることができる。
[0060] 不正ポート予測器504は、マルチコアプロセッサ100の複数の候補ポートから第1のポート群を同定することができる。出力ポート予測器502は、1つの例における第1のポート群を考慮せずに、複数のポートから第2のポート群を同定することができる。したがって、第2のポート群は、第1のポート群のいくつかを含むかもしれないし、含まないかもしれない。出力ポート予測器502によって同定された第2のポート群は、少なくとも第1のポート群のいくつかを含む場合、選択モジュール506は、出力ポート510を選択する前又は選択中に、それらを除外することができる。
[0061] 以下の例は、不正ポート予測器504がポート320から不正ポートを同定する方法を示す。本例では、マルチコアプロセッサ100は、マルチコアプロセッサ100のオンチップネットワーク上のパケットをルーティングするために、仮想回路(virtual circuit)(送信元コアから送信先コアまでのコア250間の経路)を使用又は構築しうる。例えばコア250aは、このような仮想回路に含まれうる。実際、コア250aは、多数の発信コア及び多数の目的コアを含む複数の仮想回路に含まれうる。
[0062] コア250aが複数の仮想回路に含まれている場合、予測モジュール432及び特に不正ポート予測器504は、パケット434のための出力ポートの選択の考慮から特定のポートが除外されることを同定することができる。コア250a(又は不正ポート予測器504などの、このモジュール)は、コア250aのトラバースを含む仮想回路のいずれも、ポート420を使用しないと判断することができる。結果として、不正ポート予測器504の出力は、ポート選択モジュール506が、出力ポート410を選択する際に考慮からポート420を除外することができることを示唆する。言い換えると、不正ポート予測器504は、いくつかの実施形態において、不正である不正出力ポートを確実性をもって同定することができる。それゆえ、不正出力ポートは、殆ど完全な確実性をもって決定されることができる。
[0063] ブルームフィルタは、通常、並列ランダムアクセスメモリ構造、プログラマブルレジスタ及び組み合わせ論理の組み合わせを使用して実装されることができる。大型のハードウェア構造を実装するコストに対して、不正ポートの可能な限り最大の組を特定する必要に基づき、広範な設計上の選択が存在する。
[0064] 図6は、パケット434のための出力ポート510を選択する際の考慮から除外されているポートの例を示す。例示として図6に示されるように、パケット434は、入力ポート602によって受信された可能性がある。さらに、不正ポート予測器504は、出力ポートが選択される考慮からポート604の組が除外されると決定したかもしれない。出力ポート予測器502は、ポート606の組を可能性に応じてランク付けすることができる。出力ポート予測器606は、604及び606の組の全てのポートをランク付けしうるが、不正ポートと決定されたポートは、出力ポート510の考慮から除外される。この情報で、ポート選択モジュール506は、ポート606の組の中から出力ポート510を選択することができる。
[0065] 図7は、オンチップネットワークにおけるパケットのルーティング方法の例示的実施形態を示すフロー図である。ブロック702において開始され、パケットは、オンチップネットワークにおいて接続されたコアの1つの入力ポートにおいて受信される。前述のとおり、マルチコアプロセッサの各コアは、通常、複数のポートを含み、入力ポートは、これらのいずれのポートであってもよい。コアの目標、及び特に、コアに含まれたネットワークスイッチの目標は、出力ポートをできるだけ早く選択すること、次いで、選択された出力ポートへパケットをルーティングすることである。
[0066] ブロック704において、パケットが受信されたコアは、パケットのための出力ポートとしての考慮からいくつかのポートを除外する。いくつかの実施形態において、不正ポート選択器504は、上述のとおり、出力ポートとして考慮から除外されるポートを同定しうる。いくつかのポートを考慮から除外することは、不正であるポートを同定することを含みうる。言い換えると、確実に適切な出力ポートではないこれらのポートは、不正であると同定される。1つの例では、不正であると同定された不正ポートは、ブルームフィルタ又は対応するコアにより記憶された知識を使用して決定される。いくつかの場合においては、不正ポートの同定は、100パーセントの確実であることができる。代替的に、確実性のより少ない他のフィルタが、不正ポートを同定するために使用されてもよい。
[0067] ブロック706において、コアが残りのポート(すなわち、考慮から除外されなかったポート)から出力ポートを選択する。いくつかの実施形態において、ポート選択モジュール506は、上述のとおり、出力ポートを選択する。(不正ポートを除外した後の)残りのポートから出力ポートを選択することは、残りのポートを例えば、それぞれのポートの、出力ポートである可能性に従い順序付けを行うことを含みうる。出力ポートが選択されると、パケットは選択されたポートへルーティングされる。代替的に、全てのポートはランク付け又は順序付けされることができ、不正なポートは、出力ポートの選択時に単純に無視される。
[0068] 本明細書に記載されたこのプロセス及び方法並びに他のプロセス及び方法のために、本プロセス及び方法において実行された機能が、異なる順番で実施されよもよいということが当業者には理解されよう。さらに、説明されたステップ及びオペレーションは、例として提示されたのみであり、ステップ及びオペレーションのいくつかは、記載された実施形態の本質を損なうことなく、選択的であるか、より少ないステップ及びオペレーションへ統合されるか又は追加のステップ及びオペレーションへ拡張されうる。
[0069] 図8は、オンチップネットワークにおいてパケットをルーティングする方法の例示的実施形態を示すフロー図である。ブロック802において、パケットはコアのうちの1つの入力ポートにおいて受信される。入力ポートは、パケットの到着前はコアにとって未知でありうる。ブロック804において、コア又は不正コア予測器といったコアのモジュールは、コアのポートから不正ポートを同定する。ブロック806において、コアは、コアの残りのポート(すなわち、不正ポート予測器によって除外されなかったポート)から出力ポートを選択する。1つの例では、出力ポートの選択は、不正ポートを考慮から除外することを含む。出力ポートが選択された後、ブロック808においてパケットは、選択された出力ポートにルートされる。
[0070] 図9は、本開示に従い、マルチコアプロセッサのオンチップネットワークにおいて、パケットをルーティングするために構成された計算装置900の例を示すブロック図である。極めて基本的な構成902において、計算装置900は、通常、1つ以上のコア904及びシステムメモリ906を含む。1つ以上のコア904のそれぞれは、コアの1例でありうる。コア904は、それゆえマルチコアプロセッサの例である。メモリバス908は、プロセッサ904及びシステムメモリ906間の通信のために使用されうる。
[0071] 所望の構成により、コア904は、いかなる種類であってもよく、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはこれらの組み合わせを含むがこれに限定されない。前述のとおり、コア904は、コア250の1つをあらわしうる。計算装置900は、それゆえ複数のコア250を用いて構成される。コア904は、レベル1キャッシュ910及びレベル2キャッシュ912などのキャッシングの1つ以上のレベル、プロセッサ914及びレジスタ916を含む。コア914の一例は、算術論理演算装置(ALU)、浮動小数点演算装置(FPU)、デジタル信号処理コア(DSPコア)又はこれらの組み合わせを含みうる。メモリコントローラ918の例は、コア904と共に使用されるか、又は、いくつかの実施形態では、メモリコントローラ918は、コア904の内部部品でありうる。
[0072] 所望の構成により、システムメモリ906は、いいかなる種類であってもよく、揮発性メモリ(RAMなど)、不揮発性メモリ(ROM、フラッシュメモリなど)又はこの組み合わせを含むがこれらに限定されない。システムメモリ906は、オペレーティングシステム920、1つ以上のアプリケーション922及びプログラムデータ924を含みうる。アプリケーション922は、プロセッサ904の1つ以上のコアを使用するよう構成されたプログラム926を含みうる。プログラムデータ924は、以下にさらに記載されるように、アプリケーション922を実行する間、コア904によってプロセスされたデータ928の組を含みうる。いくつかの実施形態において、アプリケーション922は、不正ポート予測器504が不正なポートを同定できるように、オペレーティングシステム920においてプログラムデータ924と動作するよう構成されうる。プログラムデータ924は、例えば、ブルームフィルタによって要約又は使用されるデータ928の組を含みうる。ここで説明した基本構成902は、図9の内側の破線内のコンポーネントによって示される。
[0073] 計算装置900は、基本構成902と必要なデバイス及びインターフェースとの間の通信を促進するために追加の特徴又は機能、及び追加のインターフェースを有しうる。例えば、記憶装置インターフェースバス934を介した基本構成902と1つ以上のデータ記憶デバイス932との間の通信を促進するため、バス/インターフェースコントローラ930が使用されうる。データ記憶デバイス932は、取り外し可能な記憶デバイス936、取り外し不能な記憶デバイス938又はこれらの組み合わせでありうる。取り外し可能な記憶デバイス及び取り外し不能な記憶デバイスの例は、数例を挙げると、フレキシブルディスクドライブ及びハードディスクドライブ(HDD)などの磁気ディスクデバイス、コンパクトディスク(CD)ドライブ又はデジタル多用途ディスクドライブなどの光学ディスクドライブ、ソリッドステートドライブ(SSD)及びテープドライブを含む。コンピュータ記憶媒体の例は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報の記憶のための方法又は技術に実装される、揮発性及び不揮発性、取り外し可能及び取り外し不能な媒体を含みうる。
[0074] システムメモリ906、取り外し可能記憶デバイス936及び取り外し不能記憶デバイス938は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、以下に限定されないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、又は所望の情報を記憶するために使用され、かつ、計算装置900によりアクセスされうる他の媒体を含む。このようなコンピュータ記憶媒体のいずれも、計算装置900の一部であってよい。
[0075] 計算装置900はまた、多様なインターフェースデバイス(例えば、出力デバイス942、周辺インターフェース944及び通信デバイス946)から基本構成902への、バス/インターフェースコントローラ930を介した通信を促進するためのインターフェースバス940を含みうる。出力デバイス942の例は、ディスプレイ又はスピーカーなどの多様な外部デバイスを1つ以上のA/Vポート952を介して通信するように構成されうるグラフィクス処理装置948及びオーディオ処理装置950を含む。周辺インターフェース944の例は、入力デバイス(例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど)又は他の周辺デバイス(例えば、プリンタ、スキャナなど)の外部デバイスを1つ以上のI/Oポート958を介して通信するように構成されうるシリアルインターフェースコントローラ954又はパラレルインターフェースコントローラ956を含む。通信デバイス946の例は、1つ以上の通信ポート964を介する、ネットワーク通信リンク上の1つ以上の他の計算装置962との通信を促進するように構成されうるネットワークコントローラ960を含む。
[0076] ネットワーク通信リンクは、通信媒体の一例でありうる。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波若しくは他の運搬機構といった変調されたデータ信号の他のデータによって具現化され、また、情報配信媒体を含みうる。「変調されたデータ信号」は、信号内の情報をエンコードするように設定又は変更された特徴を1つ以上有する信号でありうる。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体、及び、音響、無線周波(RF)、マイクロ波、赤外線(IR)及び他の無線媒体などの無線媒媒体を含みうる。本明細書において使用されるコンピュータ可読命令という用語は、記憶媒体と通信媒体の両方を含みうる。
[0077] 計算装置900は、携帯電話、携帯情報端末(PDA)、パーソナルメディアプレイヤーデバイス、無線ウェブ閲覧デバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、又は上述の機能を含むハイブリッドデバイスなどの小型フォームファクタ携帯(モバイル)電子デバイスの一部として実装されうる。計算装置900はまた、ラップトップ及び非ラップトップのコンピュータ構成を含むパーソナルコンピュータとして実装されうる。
[0078] 本開示は、多様な態様を説明するよう意図されている本出願において記載された特定の実施形態に限定されるものではない。その精神及び範囲を逸脱することなく様々な変形及び変化がなされてよいことは当業者には明らかである。本明細書に列挙されたものに加え、本開示の範囲内にある機能的に同等な方法及び装置は、上述から当業者にとっては明らかとなろう。そのような変形及び変化は、添付の請求の範囲の範囲内になるように意図されている。本開示は、添付の請求の範囲及びかかる請求の範囲が主張するものと同等の全範囲によってのみ限定される。本開示が、当然多様に変化しうる特定の方法、試薬、化合物、合成物、生体系に限定されるものでないことを理解されたい。本明細書で使用される用語は、特定の実施形態のみを説明する目的のためであり、限定的であるよう意図されていない。
[0079] 本明細書で使用される実質的にあらゆる複数及び/又は単数の用語について、当業者は、文脈及び/又は用途に応じて適切に、複数の用語を単数に、及び/又は単数の用語を複数に置き換えることができる。本明細書では、明確性を目的として、多様な単数/複数の置き換えが明記されうる。
[0080] 一般に、本明細書、特に添付の請求の範囲(例えば、添付の請求の範囲の要部)中で使用される用語は、一般に「非限定的な(open)」用語として意図されている(例えば、「含んでいる(including)」という用語は「・・・を含んでいるが限定されない(including but not limited to)」と解釈されるべきであり、「有している(having)」という用語は「少なくとも・・・を有している(having at least)」と解釈されるべきであり、「含む(includes)」という用語は「・・・を含むが限定されない(includes but is not limited to)」と解釈されるべきである。)ことが当業者には理解されるであろう。さらに、導入されたクレーム記載において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しないことが当業者には理解されるであろう。理解を促すために、例えば、後続の添付の請求の範囲では、「少なくとも1つの(at least one)」及び「1つ以上の(one or more)」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって「a」又は「an」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「1つ以上の」又は「少なくとも1つの」といった導入句と「a」又は「an」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を1つのみ含む実施形態に限定されるということが示唆されると解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つの」又は「1つ以上の」を意味すると解釈されるべきである。)。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。さらに、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、「少なくとも」記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう(例えば、他に修飾語のない、単なる「2つの記載事項」という記載がある場合、この記載は、「少なくとも」2つの記載事項、又は「2つ以上の」記載事項を意味する。)さらに、「A、B及びCなどのうち少なくとも1つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味で意図されている(例えば、「A、B及びCのうち少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、及び/又は、AとBとCの全て、などを有するシステムを含むがこれに限定されない)。また、「A、B又はCなどのうち少なくとも1つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味で意図されている(例えば、「A、B又はCのうち少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、及び/又は、AとBとCの全て、などを有するシステムを含むがこれに限定されない)。さらに、2つ以上の選択可能な用語を表す実質的にあらゆる離接語及び/又は離接句は、説明文内であろうと、請求の範囲内であろうと、又は図面内であろうと、それらの用語のうちの1つ、それらの用語のうちのいずれか、又はそれらの用語の両方を含む可能性を意図すると理解されるべきであることが、当業者には理解されるであろう。例えば、「A又はB」という句は、「A」又は「B」若しくは「A及びB」の可能性を含むことが理解されよう。
[0081] 加えて、本開示の特徴又は態様がマーカッシュグループによって記載されると、それにより本開示がマーカッシュグループのあらゆる個々の要素、又は要素のサブグループの観点からも記載されるということを当業者は認識するであろう。
[0082] 当業者に理解されるように、記述を提供するなどの、一切の目的のため、本明細書に開示される全ての範囲は、一切の可能な部分範囲及びその部分範囲の組み合わせをも含む。記載されたあらゆる範囲は、少なくとも半分、3分の1、4分の1、5分の1、10分の1などへと細分化される同一の範囲を十分に記載し、かつ可能にしていることが容易に認識されるだろう。限定されない例として、本明細書に記載される各範囲は、下部3分の1、中部3分の1、上部3分の1などと容易に分けられる。また、当業者には理解されるように、「まで(up to)」、「少なくとも(at least)」などの全ての文言は、記載される数を含み、上述したような部分範囲に細分化しうる範囲を指す。最後に、当業者に理解されるように、範囲は個々の要素を含む。それゆえ、例えば1から3つのセルを有するグループは、1、2又は3つのセルを有するグループを指す。同様に、1から5つのセルを有するグループは、1、2、3、4、又は5つのセルを有するグループなどを指す。
[0083] 上述から、説明の目的上、本開示の多様な実施形態が本明細書に記載されていること及び本開示の範囲及び精神を逸脱することなく多様な変形がなされうることが理解されるだろう。よって、本明細書において開示された多様な実施形態は、限定的であるよう意図されておらず、真の精神及び範囲は、以下の請求の範囲によって示される。

Claims (18)

  1. オンチップネットワークによって接続された複数のコアを含むマルチコアプロセッサ内のパケットをルーティングする方法であって、
    前記複数のコアに含まれる、プロセッサ及びネットワークスイッチを含むコアの入力ポートでパケットを受信することと、
    前記パケットを受信するように構成された複数の出力ポートの中から第1の出力ポート群を除外することと、
    前記複数の出力ポートの中から第2の出力ポート群を予測することと、
    除外されていない前記複数の出力ポートのうちの予測された前記第2の出力ポート群から少なくとも1つの出力ポートを選択することと、
    前記パケットを選択された前記少なくとも1つの出力ポートへルーティングすることと
    を含む方法。
  2. 第1の出力ポート群を除外することが、ポート予測器で前記第1の出力ポート群を同定することをさらに含み、前記ポート予測器が、前記第1の出力ポート群を同定するために、前記複数の出力ポートに少なくとも1つのブルームフィルタを適用する、請求項1に記載の方法。
  3. 除外されていない前記複数の出力ポートのうち予測されパケットがルーティングされるべき前記出力ポートである可能性が最も高い出力ポートを選択するために、除外されていない前記複数の出力ポートをランク付けすることをさらに含む、請求項1に記載の方法。
  4. 前記少なくとも1つの出力ポートを選択するために、除外されていない前記複数の出力ポートが正しい出力ポートである可能性に応じてランク付けされる、請求項1に記載の方法。
  5. 前記第1の出力ポート群のいずれもが前記パケットのための前記出力ポートでないという完全な確実性をもって、前記第1の出力ポート群を除外することをさらに含む、請求項1に記載の方法。
  6. マルチコアプロセッサのオンチップネットワーク内でパケットをルーティングする方法であって、前記マルチコアプロセッサが、前記オンチップネットワークによって接続されている複数のコアを含み、
    複数のポートを含む、前記チップのコアのネットワークスイッチにおいて、前記複数のポートに含まれる出力ポートにルーティングされるべきパケットを受信することと、
    前記複数のポートの中から、前記出力ポートから除外されるべき第1のポート群を同定することと、
    前記複数のポートの中から第2のポート群を予測し、除外された前記第1のポート群以外の前記複数のポートのうちの前記予測された第2のポート群から前記出力ポートを選択することと、
    前記パケットを前記出力ポートへルーティングすることと、
    を含む方法。
  7. 前記複数のポートから第1のポート群を同定することが、前記複数のポートのうちの前記パケットのルーティングのための正しいポートではないポートを決定することをさらに含む、請求項6に記載の方法。
  8. 前記複数のポートから第1のポート群を同定することが、前記第1のポート群のいずれもが前記出力ポートでないことを、ブルームフィルタを使用して決定することをさらに含む、請求項7に記載の方法。
  9. 前記出力ポートを選択するために前記第2のポート群をランク付けすることをさらに含む、請求項6に記載の方法。
  10. 前記第2のポート予測する前に、前記第1のポート群が前記複数の出力ポート群から除外される、請求項6に記載の方法。
  11. 前記複数のポートから第1のポート群を同定することがさらに、前記第1のポート群のいずれのポートも前記出力ポートでないという完全な確実性をもって決定することを含む、請求項7に記載の方法。
  12. マルチコアプロセッサであって、複数のプロセッサコアを含み、少なくとも1つのコアが、
    プロセッサと、
    キャッシュと、
    入力ポート及び出力ポートのいずれにもなりうる複数のポートと、
    前記入力ポートにおいて受信したパケットを、前記複数のポートから選択される前記出力ポートへルーティングするネットワークスイッチとを含み、
    前記ネットワークスイッチは、前記複数のポートから第1のポート群を除外するとともに、第2のポート群を予測し、除外されていない前記複数のポートのうちの予測された前記第2のポート群から少なくとも1つのポートを前記出力ポートとして選択する、
    マルチコアプロセッサ。
  13. 前記ネットワークスイッチが、第2のポート群を予測するための第1のポート予測器をさらに含み、前記出力ポートが、前記第2のポート群から選択され、前記パケットが前記選択された出力ポートへルーティングされる、請求項12に記載のマルチコアプロセッサ。
  14. 前記第1のポート予測器が、前記第2のポート群を、前記第2のポート群の各ポートが前記出力ポートである可能性に応じてランク付けする、請求項13に記載のマルチコアプロセッサ。
  15. 前記ネットワークスイッチが、前記第1のポート群を同定するための第2のポート予測器をさらに含む、請求項13に記載のマルチコアプロセッサ。
  16. 前記第2のポート予測器が、前記複数のポートから前記第1のポート群を同定するためにブルームフィルタを含む、請求項15に記載のマルチコアプロセッサ。
  17. 前記第2のポート予測器が前記第1のポート予測器と並行して動作する、請求項15に記載のマルチコアプロセッサ。
  18. 前記第1のポート予測器の出力及び前記第2のポート予測器の出力から、前記出力ポートを選択するポート選択モジュールをさらに含む、請求項15に記載のマルチコアプロセッサ。
JP2010052437A 2009-12-28 2010-03-10 オンチップネットワーク内のパケットルーティング Active JP5226714B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/648,124 US8559307B2 (en) 2009-12-28 2009-12-28 Routing packets in on-chip networks
US12/648,124 2009-12-28

Publications (2)

Publication Number Publication Date
JP2011139413A JP2011139413A (ja) 2011-07-14
JP5226714B2 true JP5226714B2 (ja) 2013-07-03

Family

ID=44188889

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010052437A Active JP5226714B2 (ja) 2009-12-28 2010-03-10 オンチップネットワーク内のパケットルーティング

Country Status (2)

Country Link
US (2) US8559307B2 (ja)
JP (1) JP5226714B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549249B1 (en) * 2009-09-21 2013-10-01 Tilera Corporation Supporting secondary atomic operations using primary atomic operations
WO2011125889A1 (ja) * 2010-04-06 2011-10-13 日本電気株式会社 半導体集積回路システム及び半導体集積回路におけるパケット伝送制御方法
US9009349B2 (en) * 2013-02-08 2015-04-14 Dell Products, Lp System and method for dataplane extensibility in a flow-based switching device
US9654423B2 (en) * 2014-01-17 2017-05-16 Wipro Limited Method and system for port performance ranking in multi-protocol switch
CN107077699B (zh) * 2014-06-30 2021-03-12 Cfph 有限责任公司 用于通信网络的设备
US9582251B2 (en) 2014-11-14 2017-02-28 Cavium, Inc. Algorithm to achieve optimal layout of decision logic elements for programmable network devices
US10785295B2 (en) * 2016-06-30 2020-09-22 Intel Corporation Fabric encapsulated resilient storage
US10700968B2 (en) * 2016-10-19 2020-06-30 Rex Computing, Inc. Optimized function assignment in a multi-core processor
US10355975B2 (en) 2016-10-19 2019-07-16 Rex Computing, Inc. Latency guaranteed network on chip
US10284501B2 (en) * 2016-12-08 2019-05-07 Intel IP Corporation Technologies for multi-core wireless network data transmission
US11934945B2 (en) 2017-02-23 2024-03-19 Cerebras Systems Inc. Accelerated deep learning
EP3607503B1 (en) 2017-04-17 2022-03-09 Cerebras Systems Inc. Task activating for accelerated deep learning
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
CA3060368C (en) 2017-04-17 2020-07-28 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning
US11336559B2 (en) * 2018-08-21 2022-05-17 Intel Corporation Fast-lane routing for multi-chip packages
WO2020044152A1 (en) 2018-08-28 2020-03-05 Cerebras Systems Inc. Scaled compute fabric for accelerated deep learning
WO2020044238A1 (en) 2018-08-29 2020-03-05 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
US11321087B2 (en) 2018-08-29 2022-05-03 Cerebras Systems Inc. ISA enhancements for accelerated deep learning
US10880236B2 (en) * 2018-10-18 2020-12-29 Mellanox Technologies Tlv Ltd. Switch with controlled queuing for multi-host endpoints

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020041409A1 (en) * 2000-10-06 2002-04-11 Mohammad Laham Maintenance system and method for an optical switch fabric
GB0208797D0 (en) * 2002-04-17 2002-05-29 Univ Cambridge Tech IP-Capable switch
US7743257B2 (en) * 2002-06-27 2010-06-22 Nxp B.V. Security processor with bus configuration
TWI277322B (en) * 2003-12-12 2007-03-21 Via Tech Inc Switch capable of controlling data packet transmission and related method
JP2005277915A (ja) 2004-03-25 2005-10-06 Fujitsu Ltd パケット振り分け方法及び振り分け装置
JP5086585B2 (ja) * 2006-08-11 2012-11-28 アラクサラネットワークス株式会社 ネットワーク中継装置
US7644254B2 (en) 2007-04-18 2010-01-05 International Business Machines Corporation Routing data packets with hint bit for each six orthogonal directions in three dimensional torus computer system set to avoid nodes in problem list
US7830905B2 (en) * 2007-04-20 2010-11-09 Cray Inc. Speculative forwarding in a high-radix router
JP2008294586A (ja) 2007-05-22 2008-12-04 Research Organization Of Information & Systems ルータおよび並列分散システム
US20090119619A1 (en) * 2007-11-02 2009-05-07 Bailey Thomas J Method, apparatus and software for providing path usage data for links between data pages in a computer system
US8509078B2 (en) * 2009-02-12 2013-08-13 Microsoft Corporation Bufferless routing in on-chip interconnection networks
US8473657B2 (en) * 2009-03-23 2013-06-25 Lsi Corporation High speed packet FIFO output buffers for switch fabric with speedup
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics
US8549249B1 (en) * 2009-09-21 2013-10-01 Tilera Corporation Supporting secondary atomic operations using primary atomic operations

Also Published As

Publication number Publication date
US20140023073A1 (en) 2014-01-23
JP2011139413A (ja) 2011-07-14
US20110161626A1 (en) 2011-06-30
US8559307B2 (en) 2013-10-15
US9191341B2 (en) 2015-11-17

Similar Documents

Publication Publication Date Title
JP5226714B2 (ja) オンチップネットワーク内のパケットルーティング
CN108370352B (zh) 使用网络处理器的高速灵活分组分类
US7861065B2 (en) Preferential dispatching of computer program instructions
US8494833B2 (en) Emulating a computer run time environment
US8020168B2 (en) Dynamic virtual software pipelining on a network on chip
US8078850B2 (en) Branch prediction technique using instruction for resetting result table pointer
US9569383B2 (en) Method of handling network traffic through optimization of receive side scaling
US7694068B1 (en) Re-entrant processing in a content addressable memory
CA3036226C (en) Packet processing framework
US11294841B1 (en) Dynamically configurable pipeline
CN115917473A (zh) 用分布式lpm实现的高度可扩展算法构建数据结构的系统
Yamaki et al. Data prediction for response flows in packet processing cache
US10616116B1 (en) Network traffic load balancing using rotating hash
US9515929B2 (en) Traffic data pre-filtering
EP1631906B1 (en) Maintaining entity order with gate managers
US9391927B2 (en) Heterogeneous router clock assignment and packet routing
US9098262B2 (en) Efficient arithimetic logic units
Khan et al. Congestion aware routing for on-chip communication in noc systems
JP3956652B2 (ja) プロセッサシステム
US9026424B1 (en) Emulation of multiple instruction sets
US20230409889A1 (en) Machine Learning Inference Service Disaggregation
JP6991446B2 (ja) パケット処理装置及びそのメモリアクセス制御方法
US20150058551A1 (en) Pico engine pool transactional memory architecture
TW201719658A (zh) 記憶體機器
US20150054547A1 (en) Hardware prefix reduction circuit

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120627

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: 20130227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130314

R150 Certificate of patent or registration of utility model

Ref document number: 5226714

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250