IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ フェイスブック,インク.の特許一覧

特開2023-84110クロスバーを使用するNOC性能の最適化
<>
  • 特開-クロスバーを使用するNOC性能の最適化 図1
  • 特開-クロスバーを使用するNOC性能の最適化 図2
  • 特開-クロスバーを使用するNOC性能の最適化 図3
  • 特開-クロスバーを使用するNOC性能の最適化 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023084110
(43)【公開日】2023-06-16
(54)【発明の名称】クロスバーを使用するNOC性能の最適化
(51)【国際特許分類】
   G06F 15/173 20060101AFI20230609BHJP
   G06F 15/80 20060101ALI20230609BHJP
【FI】
G06F15/173 683C
G06F15/173 680
G06F15/80
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022191602
(22)【出願日】2022-11-30
(31)【優先権主張番号】17/543,636
(32)【優先日】2021-12-06
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】508178054
【氏名又は名称】メタ プラットフォームズ, インク.
(74)【代理人】
【識別番号】110002974
【氏名又は名称】弁理士法人World IP
(72)【発明者】
【氏名】ウー, オリヴィア
(72)【発明者】
【氏名】ディリル, アブデュルカディル ウツク
(72)【発明者】
【氏名】カンサル, パンカジ
(72)【発明者】
【氏名】チェン, リンダ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045BB16
5B045BB18
5B045BB29
5B045DD01
5B045GG12
(57)【要約】      (修正有)
【課題】処理エンジンのアレイに関するトラフィックのルーティングを改善するシステム及び方法を提供する。
【解決手段】計算システム200は、処理素子220のアレイ、周辺クロスバー及び記憶素子270-0~15を含む。処理素子のアレイは、集積回路上でネットワーク230を介してグリッド状に相互接続される。周辺クロスバーは、処理素子のアレイのエッジに接続される。記憶素子は、周辺クロスバーに接続され、各々の周辺クロスバーは、対応するエッジに接続される。システムはまた、アレイのコーナーにあり、周辺クロスバーのうちの1つ又は複数に接続される外付けマスタ282、284、288を含む。処理素子、記憶素子のうちの幾つか及び外付けマスタは、同じ周辺クロスバーと結合され、周辺クロスバーの各々は、処理素子のアレイ内のある処理素子用のデータが単一の方向に沿ってグリッド内部をルーティングされるように、レーンを選択する。
【選択図】図2
【特許請求の範囲】
【請求項1】
集積回路上でネットワークを介してグリッド状に相互接続された処理素子のアレイと、
前記処理素子のアレイの複数のエッジに接続された複数の周辺クロスバーと、
前記複数の周辺クロスバーに接続された複数の記憶部品と
を備える、システム。
【請求項2】
前記周辺クロスバーの各々が、前記複数のエッジのうちの対応するエッジに接続され、
前記複数の記憶部品の各々が、前記複数の周辺クロスバーのうちの対応する1つに接続されている、請求項1に記載のシステム。
【請求項3】
前記アレイが、前記複数の周辺クロスバーのうちのある周辺クロスバーに対応する前記複数のエッジのうちのあるエッジに複数のレーンを含み、前記周辺クロスバーが、前記複数のレーンに接続されている、請求項1に記載のシステム。
【請求項4】
前記周辺クロスバーは、前記処理素子のアレイ内のある処理素子用のデータが単一の方向に沿って前記アレイ内部をルーティングされるように、前記複数のレーンのうちのあるレーンを選択する、請求項3に記載のシステム。
【請求項5】
前記周辺クロスバーは、前記処理素子のアレイ内のある処理素子用のデータが前記ネットワーク内で最小数のホップを利用して前記アレイ内部をルーティングされるように、前記複数のレーンのうちのあるレーンを選択する、請求項3に記載のシステム。
【請求項6】
前記複数の周辺クロスバーのうちの少なくとも1つの周辺クロスバーが、外付けマスタに結合されている、請求項1に記載のシステム。
【請求項7】
前記複数の記憶部品のうちのある部分が、前記少なくとも1つの周辺クロスバーに接続され、前記少なくとも1つの周辺クロスバーが、前記複数の記憶部品のうちの前記部分から前記アレイの外部の前記外付けマスタへとデータをルーティングするように構成されている、請求項6に記載のシステム。
【請求項8】
前記外付けマスタに結合されたメモリブリッジであって、前記メモリブリッジが、前記外付けマスタから前記データをルーティングするために前記少なくとも1つの周辺クロスバーのうちのある周辺クロスバーを選択し、前記周辺クロスバーが、前記アレイを通る前記データの最短経路に対応する、メモリブリッジ
をさらに備える、請求項7に記載のシステム。
【請求項9】
集積回路上でネットワークを介してグリッド状に相互接続された処理素子のアレイであって、前記アレイが、複数のエッジ、および前記複数のエッジのうちの対向するエッジを接続する複数のレーンを有する、処理素子のアレイと、
前記複数のエッジに接続された複数の周辺クロスバーと、
複数の記憶部品であって、前記記憶部品のうちの第1の部分が、前記複数の周辺クロスバーのうちの対応する1つに接続される、複数の記憶部品と、
前記アレイのコーナーに存在し、前記複数の周辺クロスバーのうちの少なくとも1つの周辺クロスバーに接続される複数の外付けマスタであって、前記複数の記憶部品のうちの第2の部分が、前記少なくとも1つの周辺クロスバーと結合される、複数の外付けマスタと
を備え、
前記複数の周辺クロスバーは、前記処理素子のアレイ内のある処理素子用のデータが単一の方向に沿って前記アレイ内部をルーティングされるように、前記複数のレーンのうちのあるレーンを選択する、
システム。
【請求項10】
前記少なくとも1つの周辺クロスバーが、前記複数の記憶部品のうちの前記部分と前記アレイの外部の前記外付けマスタとの間でデータをルーティングするように構成されている、請求項9に記載のシステム。
【請求項11】
前記複数の外付けマスタに結合された少なくとも1つのメモリブリッジであって、前記少なくとも1つのメモリブリッジが、前記複数の外付けマスタからのデータをルーティングするために前記少なくとも1つの周辺クロスバーのうちのある周辺クロスバーを選択し、前記周辺クロスバーが、前記アレイを通る前記データの最短経路に対応する、少なくとも1つのメモリブリッジ
をさらに備える、請求項10に記載のシステム。
【請求項12】
前記複数の周辺クロスバーが、前記データが前記ネットワーク内で最小数のホップを利用して前記アレイ内部をルーティングされるように、前記レーンを選択する、請求項10に記載のシステム。
【請求項13】
集積回路上でネットワークを介してグリッド状に相互接続された処理素子のアレイを設けることと、
前記処理素子のアレイの複数のエッジに接続される複数の周辺クロスバーを設けることと、
前記複数の周辺クロスバーに接続される複数の記憶部品を設けることと
を含む、方法。
【請求項14】
前記複数のクロスバーを前記設けることが、
前記周辺クロスバーの各々を前記複数のエッジのうちの対応するエッジに結合すること
を含み、
前記複数の記憶部品を前記設けることが、前記複数の記憶部品の各々を前記複数の周辺クロスバーのうちの対応する1つに結合することをさらに含む、
請求項13に記載の方法。
【請求項15】
前記グリッドが、前記複数の周辺クロスバーのうちのある周辺クロスバーに対応する前記複数のエッジのうちのあるエッジ上に複数のレーンを含み、前記複数の周辺クロスバーを前記設けることが、
前記複数のレーンに前記周辺クロスバーを接続すること
をさらに含む、請求項13に記載の方法。
【請求項16】
前記複数の周辺クロスバーを前記設けることが、
前記処理素子のアレイ内のある処理素子用のデータが単一の方向に沿って前記アレイ内部をルーティングされるように、前記複数のレーンのうちのあるレーンを選択するように前記周辺クロスバーを構成すること
をさらに含む、請求項15に記載の方法。
【請求項17】
前記複数の周辺クロスバーを前記設けることが、
前記処理素子のアレイ内のある処理素子用のデータが前記ネットワーク内で最小数のホップを利用して前記アレイ内部をルーティングされるように、前記複数のレーンのうちのあるレーンを選択するように前記周辺クロスバーを構成すること
をさらに含む、請求項15に記載の方法。
【請求項18】
外付けマスタを設けること
をさらに含み、
前記複数の周辺クロスバーを前記設けることが、前記複数の周辺クロスバーのうちの少なくとも1つの周辺クロスバーを前記外付けマスタに結合することをさらに含む、
請求項13に記載の方法。
【請求項19】
前記複数の記憶部品を前記設けることが、
前記少なくとも1つの周辺クロスバーに前記複数の記憶部品のうちのある部分を接続すること
をさらに含み、
前記複数の周辺クロスバーを前記設けることが、前記複数の記憶部品の前記部分から前記アレイの外部の前記外付けマスタへデータをルーティングするように前記少なくとも1つの周辺クロスバーを構成することをさらに含む、
請求項18に記載の方法。
【請求項20】
前記外付けマスタに結合されたメモリブリッジを設けることであって、前記メモリブリッジが、前記外付けマスタからの前記データをルーティングするために前記少なくとも1つの周辺クロスバーのうちのある周辺クロスバーを選択し、前記周辺クロスバーが、前記グリッドを通る前記データの最短経路に対応する、メモリブリッジを設けること
をさらに含む、請求項19に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
相互接続された処理エンジンのグループが、様々な用途で使用されることがある。いくつかのケースでは、処理エンジンは、グリッド状に組織化され、メッシュネットワークを介して相互接続される。処理エンジンは、ネットワークの各々のノードにある。各々の処理エンジンは、ネットワークの他のすべてのノードにおける処理エンジンと通信することができる。ノード、したがって処理エンジンは、グリッドの外部の素子とも通信することができる。このグリッド構成では、データは、グリッド内の処理エンジン同士の間で、およびグリッドを取り囲んでいる他の素子と、共有され得る。メッシュネットワークを介して相互接続された処理エンジンの使用は、処理エンジンの数の増加に伴って、より容易にスケーリングされ得る。
【0002】
処理エンジンがグリッド内で相互接続され得るとはいえ、この構成にともなう問題点があり得る。トラフィックは、ネットワーク全体にわたって均等に分散されることが一般に望まれる。このような分散は、輻輳およびレイテンシを減少させ得る。しかしながら、高トラフィックの局所的な領域がネットワーク内に生じることがある。トラフィックにおけるこれらのホットスポットは、ネットワークを通るデータのルーティングに悪影響を及ぼすことがある。さらに、ネットワークを通る多くの可能な経路がある。効率を向上させるために、ネットワークを通ってルーティングされるトラフィックは、最も短いレイテンシを有する最短経路を取ることが望まれる。このゴールは、場合によっては実現することが困難なことがあり得る。その結果、処理エンジンのアレイに関するトラフィックのルーティングを改善するための仕組みが望まれる。
【0003】
様々な実施形態が、下記の詳細な説明および添付の図面において開示される。
【図面の簡単な説明】
【0004】
図1】処理素子のアレイを利用するシステムの実施形態を描く図である。
図2】処理素子のアレイを利用するシステムの実施形態を描く図である。
図3】処理素子のアレイを通ってトラフィックをルーティングするための方法の実施形態を描くフローチャートである。
図4】処理素子のアレイを含むシステムを設けるための方法の実施形態を描くフローチャートである。
【発明を実施するための形態】
【0005】
本開示は、プロセス、装置、システム、物質の組成、コンピュータ可読記憶媒体に具現化されたコンピュータプログラム製品、ならびに/またはプロセッサに結合されたメモリに記憶されたおよび/もしくはメモリにより提供される命令を実行するように構成されたプロセッサなどのプロセッサを含め、数多くの手法で実装され得る。この明細書では、これらの実装形態、または本開示が取り得るいずれかの他の形態が、技術と呼ばれることがある。一般に、開示されるプロセスのステップの順番は、本開示の範囲内で変えられてもよい。別なふうに述べない限り、タスクを実行するように構成されるように記載されるプロセッサまたはメモリなどの構成部品は、所定の時刻にタスクを実行するように一時的に構成された汎用構成部品またはタスクを実行するために製造された特定の構成部品として実装されてもよい。本明細書において使用するように、「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された1つまたは複数のデバイス、回路、および/または処理コアを呼ぶ。
【0006】
1つまたは複数の実施形態の詳細な説明が、本開示の原理を図説する添付の図とともに下記に提供される。本開示は、このような実施形態に関連して説明されるが、いずれかの実施形態に限定されない。本開示の範囲は、特許請求の範囲によってのみ限定され、本開示は、数多くの代替形態、修正形態および均等物を包含する。数多くの具体的な詳細が、本開示の十分な理解を提供するために下記の説明において述べられる。これらの詳細は、例示の目的で提供され、本開示は、これらの具体的な詳細のうちのいくつかまたはすべてを用いずに特許請求の範囲にしたがって行われてもよい。明確化の目的で、本開示に関係する技術分野において知られている技術的マテリアルは、本開示が不必要に不明瞭にされないように詳細には記述されていない。
【0007】
人工知能(AI)推論特定用途向け集積回路(ASICS)などのいくつかのアプリケーションでは、処理エンジンの集合体が使用される。処理エンジンは、個別に動作してもよい、またはより複雑なタスクを実行するためにクラスタで一緒に作業してもよい。いくつかのケースでは、処理エンジンは、メッシュネットワークを介して相互接続される。処理エンジンは、ネットワークの各々のノードに接続されてもよい。相互接続された処理エンジンのアレイは、各々の処理エンジンがネットワーク内のあるノードに結合され、各々のノードが互いに他のノードと通信することができるという理由でネットワークオンチップ(NOC)であると考えられてもよい。ノードはまた、処理エンジンのグリッドの外部の素子とも通信してもよい。この構成では、データは、グリッド内の素子とグリッドを取り囲んでいる素子との間で信頼性良く共有され得る。このようなメッシュネットワークの使用もまた、面積および消費されるパワーが処理エンジンの数の増加とともに直線的に大きくなることも可能にする。
【0008】
処理エンジンはグリッド状に配置され得るとはいえ、欠点がある。例えば、トラフィックは、輻輳を避けるためおよびレイテンシを減少させるためにネットワークの全体にわたって均等に分散されることが一般に望まれる。メモリ(例えば、キャッシュ)、中央処理ユニット(CPU)、および処理エンジンにより使用される他の素子などの素子は、ネットワークの外部に存在してもよい。したがって、ネットワークを通るトラフィックは、処理エンジン同士の間だけでなくこれらの外付け素子へおよび外付け素子からもルーティングされることがある。グリッドの外部の外付け素子の使用は、素子に近いネットワークの一部分に高トラフィックの局所領域を結果的にもたらすことがある。均等に分散されたトラフィックからのこの変動は、ネットワークを通るトラフィックのルーティングに悪影響を及ぼす。ネットワークを通過するために、多くの可能な経路がある。レイテンシを減少させるために、ネットワークを通りルーティングされるトラフィックは、最小のレイテンシを有する最短経路を取ることが望まれる。このことは、いくつかのケースでは実現することが難しいことがある。その結果、相互接続された素子のアレイに関するトラフィックのルーティングを改善するための仕組みが望まれる。
【0009】
処理素子のアレイ、周辺クロスバーおよび記憶部品を含むシステムが説明される。処理素子のアレイは、集積回路上でネットワークを介してグリッド状に相互接続される。周辺クロスバーは、処理素子のアレイのエッジに接続される。記憶部品は、周辺クロスバーに接続される。いくつかの実施形態では、各々の周辺クロスバーは、対応するエッジに接続される。したがって、アレイの各々のエッジには、対応する周辺クロスバーがあってもよい。周辺クロスバーはまた、エッジ全体に沿って伸びてもよい。いくつかの実施形態では、システムは外付けマスタを含む。外付けマスタは、アレイのコーナーにあってもよい。外付けマスタはまた、周辺クロスバーのうちの1つまたは複数に接続される。したがって、処理素子、記憶部品のうちの少なくともいくつか、および外付けマスタは、同じ周辺クロスバーと結合されてもよい。周辺クロスバーの各々は、処理素子のアレイ内のある処理素子用のデータが単一の方向に沿ってグリッド内部をルーティングされるように、レーンを選択する。
【0010】
処理システムを設けるための方法が説明される。方法は、集積回路上でネットワークを介してグリッド状に相互接続された処理素子のアレイを設けることを含む。方法はまた、処理素子のアレイのエッジに接続された周辺クロスバーを設けることも含む。周辺クロスバーに接続された記憶部品もまた設けられる。いくつかの実施形態では、外付けマスタもまた設けられる。外付けマスタは、複数の周辺クロスバーのうちの少なくとも1つに結合される。いくつかの実施形態では、外付けマスタに結合されたメモリブリッジもまた設けられる。メモリブリッジは、外付けマスタからデータをルーティングするために(複数の)周辺クロスバーのうちの1つを選択する。選択された周辺クロスバーは、グリッドを通るデータの最短経路に対応する。
【0011】
図1は、計算システム100の実施形態を描く図である。明確化のために、計算システム100のいくつかの部分だけが示される。システム100は、グリッド状に配置された処理素子120-0、120-1、120-2、120-3、120-4、120-5、120-6、120-7、120-8、120-9、120-10、120-11、120-12、120-13、120-14、および120-15(包括的にまたは一般的に処理素子120)を有するアレイ110を含む。システム100はまた、ネットワーク130、周辺クロスバー152、154、156、および158(包括的にまたは一般的に周辺クロスバー150)、ならびに記憶素子170-0、170-1、170-2、170-3、170-4、170-5、170-6、170-7、170-8、170-9、170-10、170-11、170-12、170-13、170-14、および170-15(包括的にまたは一般的に記憶素子170)も含む。示した実施形態では、アレイ110は、ネットワーク130を介して相互接続された16個の処理素子120を含む。処理素子120は、処理エンジンであってもよい。例えば、処理素子120は、AI推論ASICSにおいて使用されてもよい。いくつかの実施形態では、処理素子120は、他の構成部品であってもよい。
【0012】
ネットワーク130は、ノード132(そのうちの1つだけが符号を付けられる)ならびに南北レーン134および東西レーン136にレイアウトされると考えられ得るインターコネクトを含むメッシュである。ネットワーク130およびしたがって処理素子120のアレイ110は、グリッド状にレイアウトされていると見られてもよい。単一の配線として示されるとはいえ、ネットワーク130のインターコネクトは多数の配線を一般に保有する。例えば、単一のインターコネクトは、データ線、制御線、ユーティリティ線、および/または他の配線を有することがある。処理素子120に加えて、ルータが、ネットワーク130を通ってトラフィックをルーティングするためにノード132において接続され得る。いくつかの実施形態では、このようなルータは、スタティックルーティングを実行する。他の実施形態では、このようなルータは、ダイナミックルーティングを実行することがある。各々のノード132は、対応する処理素子120に結合される。したがって、トラフィックは、ネットワーク130を通って、ならびに処理素子120へおよび処理素子120からルーティングされ得る。
【0013】
周辺クロスバー150は、アレイ110のエッジに存在する。示した実施形態では、周辺クロスバー150は、アレイ110の各々にある。したがって周辺クロスバー152、154、156、および158は、アレイ110の、それぞれ西、北、東および南のエッジに存在する。例えば、クロスバー152および156は、アレイ110の対向するエッジにあると考えられてもよい。同様にクロスバー154および158もまた、アレイ110の対向するエッジにあると考えられてもよい。示した実施形態では、アレイ110は、長方形形状である。しかしながら、他の形状が可能である。そのような実施形態では、周辺クロスバー150に似ている周辺クロスバーは、そのようなアレイの各々のエッジにあってもよい。さらに、周辺クロスバー150は、エッジのすべてのレーン134または136と接続される。したがって、周辺クロスバー152および156は、各々のレーン136へのポート接続部を有する。周辺クロスバー154および158は、各々のレーン134に接続されたポートを有する。
【0014】
周辺クロスバー150は、処理素子120を記憶素子170に結合する。したがって、各々の周辺クロスバー150は、アレイ110のエッジにおいてネットワーク130のレーン134または136(すなわち、インターコネクト)に結合された1つのタイプのポートを有する。各々の周辺クロスバー150は、記憶素子170に結合されたもう1つのタイプのポートを有する。周辺クロスバー150は、(例えば、ネットワーク130への/からの)1つのタイプのポートのすべてのポートと(例えば、記憶素子170への/からの)別のタイプのポートのすべてのポートとの間の接続を可能にすることがある。いくつかの実施形態では、周辺クロスバー150はまた、同じタイプのポート同士の間(ネットワーク130のレーン134もしくは136同士の間または記憶素子170同士の間)の接続も可能にする。したがって、周辺クロスバー150は、アレイ110を進むべきまたは通るべきトラフィックをルーティングするために適切なレーン134または136を選択する。周辺クロスバー150はまた、記憶素子170のためのトラフィック用に適切な記憶素子170も選択する。コンピュータシステム100は、追加の素子を含んでもよい。このような素子もまた、周辺クロスバー150を介してアレイ110および記憶素子170に接続されてもよい。そのような実施形態では、追加のポートが、対応する周辺クロスバーに設けられてもよい。
【0015】
記憶素子170は、周辺クロスバー150を介して処理素子120に結合される。いくつかの実施形態では、記憶素子170はキャッシュである。しかしながら、他の記憶素子が使用されてもよい。追加の処理素子および/またはメモリなどの追加の素子が、記憶素子170に結合されてもよい。例えば、キャッシュ170は、DDR DRAM(図示せず)または他のメモリにサービス提供してもよい。追加の素子への接続は、追加のクロスバーなどの追加のルーティング素子を介して行われてもよい。
【0016】
動作では、計算システム100の構成要素は、パケットがアレイ110内を直線に沿って進み、アレイ110内部で短縮した移動の距離(例えば、いくつかの実施形態では最小数のホップ)を有し得るように適切なレーン134および136を選択する。周辺クロスバー150は、パケットが単一のレーン134または136上を(すなわち、直線で)進むようにアレイ110内でトラフィックをルーティングさせるために適切なレーン134または136を選択する。いくつかの実施形態では、周辺クロスバー150は、ネットワーク130内で最小距離(ノード132同士の間の最小数のホップ)を進むようにアレイ110内でトラフィックをルーティングさせるために適切なレーン134または136を選択する。より具体的に、処理素子120は、1つまたは複数の記憶素子170からデータを検索する。そうするために、処理素子120はデータを要求する。記憶素子170から処理素子120へトラフィックをルーティングするときに、周辺クロスバー150は、ネットワーク130内で処理素子のノードと交差し、移動の単一のレーンおよび削減した数のホップに対応するレーン134または136を選択する。いくつかの実施形態では、これは、アレイ110内の処理素子の場所に基づいて処理素子120を扱うことにより行われる。例えば、x-y(または、北/南-東/西)座標が、処理素子120および記憶素子170などの他の構成部品に対して使用されてもよい。座標に基づいて、周辺クロスバー150は、トラフィックが進むための適切なレーン134または136を選択する。
【0017】
例えば、処理素子120-5は、記憶素子170-9、170-10、および170-11に記憶されるデータをフェッチするために要求を一斉送信してもよい。データは、記憶素子170-9、170-10、および170-11から検索される。周辺クロスバー156は、パケットが単一のレーン136に沿って進むように記憶素子170からデータをルーティングする。記憶素子170-9、170-10、および170-11からのデータ用のパケットは、処理素子120-5が存在する同じレーン136上を進む。したがって、パケットは、周辺クロスバー156から、処理素子120-7に対応するノード132を通り、処理素子120-6に対応するノード132を通り、処理素子120-5へとこの順番で進む。したがって、記憶素子170-9、170-10、および170-11からのパケットは、処理素子120-5へとネットワーク130を通る同じ(単一の)レーン136を通り同じ経路を進む。結果として、ノード132同士の間の最小数のホップ(上の例では3つ)もまた進む。同様に、処理素子120-5が記憶素子170-12および170-13からデータを検索する場合、周辺クロスバー158はデータパケットが単一のレーンに沿って(例えば、直線で)進むようにレーン134を選択する。このレーン134は、処理素子120-5に対応するノード132と交差する。したがって、記憶素子170-12および170-13からのパケットは、周辺クロスバー158から、処理素子120-13に対応するノード132を通り、処理素子120-9に対応するノード132を通り、処理素子120-5へと進む。
【0018】
同様に、トラフィックは、周辺クロスバー150を使用して処理素子120から記憶素子170へとより容易にルーティングされ得る。処理素子120は、望まれる記憶素子170に対応するアレイ110のエッジにおける周辺クロスバー150へと、処理素子120が存在するノード132と交差しているレーン134または136に沿ってトラフィックを単純に送ってもよい。例えば、処理素子120-5は、記憶素子170-7にデータを書き込んでもよい。処理素子120-5は、それ自体のノード132と交差しているレーン134に沿ってデータを送る。周辺クロスバー154は、データを受信し、宛先として記憶素子170-7を選択する。したがって、処理素子120-5からのデータは、処理素子120-1に対応するノード132へ、周辺クロスバー154へと進む。周辺クロスバー154は、宛先記憶素子170-7にデータを提供する。したがって、データパケットは、アレイ110内、したがってネットワーク130内をある直線に沿って進む。処理素子120からのトラフィックが直線で進むという理由で、短縮された経路長(例えば、いくつかの実施形態では最小数のホップ)を通過することがある。
【0019】
システム100は、改善した性能を持ち得る。トラフィックが、アレイ110内で、およびアレイを通って、直線で単一のレーン134または136に沿って進むという理由で、アレイ110は、短いレイテンシ、高帯域幅、トラフィックのデッドロックフリールーティングを有し得る。システム100の速度および効率は、このように改善される。例えば、処理素子120は、毎秒より多数の作業を実行することが可能になり得る。加えて、より少ない待ち行列が、ノード132に存在するルータに関して使用され得る。トラフィックがレーン134または136に沿って直線でルーティングされるという理由で、ノード132におけるルータは、北から南へ、南から北へ、東から西へ、および西から東へ走るトラフィックに関する待ち行列を含み得る。北から東へ、東から南へ、南から西へ、西から北へ、北から西へ、西から南へ、南から東へ、および東から北へ走るトラフィックに関する待ち行列は、省略されてもよい。その結果、システム100の設計および製造は、単純化され得る。アレイ110/ネットワーク130を通るトラフィックパターンの解析もまた、トラフィックが直線でアレイ110/ネットワーク130を通り進むという理由で促進され得る。結果として、モデリングが単純化され、様々なルートのレイテンシがより容易に決定され得る。システム100の性能を調査するために使用されるテストケースが、より簡単に決定され得る。その結果、システム100の性能、製造、および使用が、改善され得る。
【0020】
図2は、処理素子のアレイを利用するシステム200の実施形態を描く図である。明確化のために、計算システム200のいくつかの部分だけが示される。システム200はシステム100に似ている。その結果、システム200は、処理素子220を有するアレイ210、ネットワーク230、周辺クロスバー252、254、256、および258(包括的にまたは一般的に周辺クロスバー250)、ならびに記憶素子270-0、270-1、270-2、270-3、270-4、270-5、270-6、270-7、270-8、270-9、270-10、270-11、270-12、270-13、270-14、および270-15(包括的にまたは一般的に記憶素子270)を含み、これらは、それぞれ、処理素子120を有するアレイ110、ネットワーク130、周辺クロスバー152、154、156、および158、ならびに記憶素子170に似ている。示した実施形態では、アレイ210は、ネットワーク230を介して相互接続された64個の処理素子220を含む。処理素子220は、処理エンジンであってもよい。例えば、処理素子220は、AI推論ASICSにおいて使用されてもよい。ネットワーク230は、ノード232(そのうちの1つだけが符号を付けられる)ならびに南北レーン234および東西レーン236にレイアウトされるように考えられてもよいインターコネクトを含むメッシュである。その結果、アレイ210内の処理素子220およびネットワーク230は、グリッド状にレイアウトされると考えられてもよい。処理素子220に加えて、ルータが、ネットワーク230を通るトラフィックをルーティングするためにノード232において接続され得る。いくつかの実施形態では、このようなルータは、スタティックルーティングを実行する。他の実施形態では、このようなルータは、ダイナミックルーティングを実行してもよい。各々のノード232が、対応する処理素子220に結合される。
【0021】
システム200はまた、それぞれ周辺クロスバー252、254、256、および258と処理素子220との間に結合された論理素子262、264、266、および268(包括的にまたは一般的に論理素子260)も含む。論理素子260は、限定しないがハッシングおよび/またはアンローリング(データの小さなチャンクへの分離)などの様々な機能を実行してもよい。しかしながら、いくつかの実施形態では、論理素子260は、省略されるまたは他の素子で置き換えられてもよい。さらに示したものは、追加の素子280、282、284、286、および288である。いくつかの実施形態では、素子280および286は、メモリブリッジである。素子282、284、および288は、外付けマスタである。外付けマスタ282、284、および288は、CPUであってもよい、および/またはブートアップを調整すること、構成、デバッギング、処理素子の作業量の管理、外付けデバイスと通信すること、デコーディング、スクランブリング、および/または他の機能などの機能を実行する他の処理素子であってもよい。メモリブリッジ280は、周辺クロスバー256および258と外付けマスタ282および284との間の通信を制御するために使用されてもよい。同様に、メモリブリッジ286は、外付けマスタ288と周辺クロスバー252および254との間の通信を制御してもよい。メモリブリッジ280および286は、外付けマスタ282、284、および288と通信するための適切な周辺クロスバー250を選択してもよい。記憶素子270は、追加の記憶素子および/または追加の処理素子などの追加の素子(図示せず)に結合されてもよい。これらの接続は、クロスバー(図示せず)を介して行われてもよい。
【0022】
周辺クロスバー250が周辺クロスバー150に似ているとはいえ、周辺クロスバー250は、3つのタイプのポート、(論理素子260を介して)アレイ210/ネットワーク230に結合された1つのタイプ、記憶素子270に結合された1つのタイプ、ならびにメモリブリッジ280および286を介して外付けマスタ282、284、および288に結合された1つのタイプを含む。示した実施形態では、周辺クロスバー250は、特定のタイプのポートがもう1つのタイプの任意のポートに接続できるように構成される。したがって、各々の処理素子220は、周辺クロスバー250を介してすべての記憶素子270ならびにすべての外付けマスタ282、284、および288に結合され得る。同様に、各々の記憶素子270は、周辺クロスバー250を介してすべての処理素子220ならびにすべての外付けマスタ282、284、および288に結合されてもよい。各々の外付けマスタ282、284、および288は、周辺クロスバー250を介してすべての処理素子220およびすべての記憶素子270に結合されてもよい。いくつかの実施形態では、同じタイプのポート同士もまた、接続されてもよい。そのような実施形態では、例えば、各々の記憶素子270は、同じ周辺クロスバー250に接続されたもう1つの記憶素子270に、その同じ周辺クロスバー250を通して接続されてもよい。
【0023】
システム200は、システム100に似た方式で動作する。システム200は、単一のレーン234もしくは236に沿って直線でおよび/または短縮した経路長でアレイ210を通りトラフィックをルーティングする。したがって、トラフィックは、トラフィックがアレイ110/ネットワーク130内をどのように進むかに似た方式でアレイ210/ネットワーク230を通って進む。パケットは、東-西、西-東、北-南、および南-北へ進む。パケットは、例えば、北-東、北-西、東-南、東-北、南-東、南-西、西-南、および西-北へ進まない。したがって、システム200は、システム100の利点を共有する。
【0024】
加えて、システム200は、外付けマスタ282、284、および288などの他の外付け素子用のデータを効率的にルーティングしてもよい。外付けマスタ282、284、および288とアレイ210/ネットワーク230の外部にある記憶素子270などの素子との間の通信に関して、トラフィックは、アレイ210の部分的にまたは完全に外部をルーティングされてもよい。アレイ210/ネットワーク230を通りルーティングされるトラフィックは、単一のレーン234または236に沿って進む。例えば、外付けマスタ282が記憶素子270-8からデータをフェッチする場合、対応するメモリブリッジ280は、要求を受信するために周辺クロスバー256を選択する。記憶素子270-8は、対応するメモリブリッジ280へデータを送る周辺クロスバー256へデータを提供する。メモリブリッジ280は、外付けマスタ282へデータを提供する。同様に、外付けマスタ282が記憶素子270-13からデータを検索する場合、メモリブリッジ280は、周辺クロスバー258へ要求を提供する。周辺クロスバー258は、記憶素子270-13へ要求を提供する。記憶素子270-13から検索されたデータは、メモリブリッジ280へ周辺クロスバー258により提供される。メモリブリッジ280は、外付けマスタ282へデータを提供する。
【0025】
外付けマスタ282が、アレイ210/ネットワーク230を介して特定の処理素子220または他の記憶素子270と通信すべき場合、メモリブリッジ280は、要求がアレイ210内の直線に沿って、かつ、単一のレーン234または236内をルーティングされ得るように、適切な周辺クロスバー250へ要求を提供する。したがって、ルーティングは、短縮した経路長(例えば、最小ホップ)を依然として有し得る。例えば、外付けマスタ282が記憶素子270-6と通信すべき場合、メモリブリッジ280は、南北に走る適切なレーン234(例えば、アレイ210/ネットワーク230の東端から3番目)を選択する要求を周辺クロスバー258へ提供する。要求は、記憶素子270-6に要求を提供する周辺クロスバー254へ送られる。データは、記憶素子270-6から周辺クロスバー254へ送られた。周辺クロスバー254は、周辺クロスバー258へ南にデータを送るために適切なレーン234(例えば、アレイ210の東端から3番目の同じレーン)を選択する。周辺クロスバー258は、データを要求している外付けマスタ282へデータを転送するメモリブリッジ280へデータを提供する。
【0026】
処理素子220との通信は、似た方式で行われてもよい。例えば、外付けマスタ284は、アレイ210の北東のコーナーのプロセッサ220(図2で符号を付けられた処理素子220)と通信してもよい。メモリブリッジ280は、アレイ210内の経路が最短である周辺クロスバー256を選択してもよい。もう1つの実施形態では、メモリブリッジ280は、周辺クロスバー258または周辺クロスバー256のいずれかを選択し得る。周辺クロスバー256は、プロセッサ220と交差しているレーン236を選択する。トラフィックは、アレイ210内の直線に沿って、周辺クロスバー256からプロセッサ220へルーティングされる。
【0027】
システム200は、システム100の利点を共有し得る。トラフィックが、アレイ210/ネットワーク230内で、およびアレイ210/ネットワーク230を通って、直線で単一のレーンに沿って進むという理由で、アレイ210は、短いレイテンシ、高帯域幅、およびトラフィックのデッドロックフリールーティングを有し得る。システム200の速度および効率は、このように改善され得る。ノード232におけるルータはまた、数少ない待ち行列を含み得る。その結果、システム200の設計および製造は単純化され得る。アレイ210/ネットワーク230を通るトラフィックパターンの解析もまた、トラフィックが直線でアレイ210/ネットワーク230通り進むという理由で促進され得る。結果として、モデリングが単純化されてもよく、様々なルートのレイテンシがより容易に決定されてもよく、そしてシステム200の性能を調査するためのテストケースがより簡単に決定され得る。
【0028】
その上、外付けマスタ282、284、および288の使用が促進される。記憶素子270と、同じ周辺クロスバー250を共有する外付けマスタ282、284、および288との間の通信は、アレイ210/ネットワーク230を通って進む必要がない。したがって、ネットワーク230のリソースは、このような通信のために使用される必要がない。ネットワーク230/アレイ210用の帯域幅は、このように保存され得る。したがって、処理素子220は、記憶素子270からデータをフェッチするとき、または記憶素子270へデータを書き込むときに、より低い輻輳を経験することになり得る。アクセスされる記憶素子270が外付けマスタ282、284、または288と同じ周辺クロスバー250を共有しない場合、そのときにはトラフィックは、アレイ210を通り単一のレーン234または236上をルーティングされる。したがって、帯域幅が保存され得、外付けマスタ282、284、および288に近接するエリアは、高輻輳を経験しないことになり得る。したがって、トラフィックは、アレイ210/ネットワーク230を通ってより均等に広げられ得る。その結果、システム200の性能、製造、および使用が、改善され得る。
【0029】
図3は、メッシュネットワークを通ってトラフィックをルーティングするための方法300の実施形態を描くフローチャートである。方法300は、サブステップを含め追加のステップを含んでもよい。特定の順番で示されるとはいえ、ステップは、並列を含め異なる順番で行われてもよい。構成部品は、302において、トラフィックをルーティングするためのネットワークのレーンを選択する。選択されたレーンは、トラフィックがその宛先まで単一のレーンで進み、そして短縮した経路長を取り得るようなものである。トラフィックは、304において、選択されたレーン上のアレイ内部をまたはアレイを通ってルーティングされる。アレイの外のいかなるルーティングも、306において実行される。アレイの外部で始まる通信に関して、306は、302および304に先立って実行される。いくつかの実施形態では、グリッドの外部だけで生じる通信に関して、302および304は、省略されてもよい。
【0030】
例えば、方法300は、システム200と協働して使用され得る。処理素子220への通信に関して、記憶素子270または外付けマスタ282、284、もしくは288から周辺クロスバー250への外のルーティングが、306において、最初に実行される。周辺クロスバー250は、302において、適切なレーン234または236を選択する。302において選択されたレーン234または236は、宛先処理素子220と交差する。トラフィックは、304において、次いで宛先処理素子220へルーティングされる。もう1つの例では、外付けマスタ282は、同じ周辺クロスバー258に接続された記憶素子270-12(または図2には図示されていない追加の素子)と通信してもよい。トラフィックは、外付けマスタ282、メモリブリッジ280、周辺クロスバー258と記憶素子270-12との間をルーティングされる。したがって、トラフィックは、アレイ210/ネットワーク230を通過しない。
【0031】
したがって、方法300を使用して、トラフィックは、周辺クロスバーおよびメッシュネットワークを含むシステム内を効率的にルーティングされ得る。したがって、このようなシステムの性能、製造、および使用が改善され得る。
【0032】
図4は、処理素子のアレイを利用するシステムを設けるための方法の実施形態を描くフローチャートである。方法400は、サブステップを含め追加のステップを含んでもよい。特定の順番で示されるとはいえ、ステップは、並列を含め異なる順番で行われてもよい。
【0033】
ネットワークを介して相互接続される処理素子のアレイが、402において設けられる。402は、インターコネクト(レーン)、ノード、およびノード用のルータを含むメッシュネットワークを設けることを含んでもよい。処理素子はまた、402において、ノードにも接続される。処理素子およびネットワークは、集積回路の一部であってもよい。したがって、ネットワークおよび処理素子を含むグリッドが形成される。いくつかの実施形態では、論理素子などの追加の構成部品もまた、402において設けられる。
【0034】
周辺クロスバーが、404において、アレイのエッジに設けられる。404において設けられる各々の周辺クロスバーは、対応するエッジと交差するアレイ/ネットワークの各々のレーン(インターコネクト)用のポートを含む。いくつかの実施形態では、アレイの各々のエッジには、404において設けられた対応するクロスバーがある。さらに、周辺クロスバーは、各々のエッジのすべてのレーンに接続されてもよい。
【0035】
記憶部品が、406において設けられる。記憶部品は、周辺クロスバーに接続される。こしたがって、周辺クロスバーは、処理素子のアレイと記憶部品との間でデータをルーティングできる。
【0036】
いくつかの実施形態では、他の外付け素子が、408において設けられる。これらの素子もまた、周辺クロスバーに結合される。例えば、外付けマスタ、メモリブリッジ、追加のメモリ、および/または追加のクロスバーもまた設けられる。これらの外付け素子もまた、対応する周辺クロスバーを介して処理素子および/またはグリッドにアクセスする。
【0037】
例えば、処理素子220、アレイ210、およびネットワーク230が、402において設けられる。論理素子260もまた、402において設けられてもよい。周辺クロスバー250が、404において設けられる。周辺クロスバー250は、アレイ210/ネットワーク230のレーン234および236に結合される。記憶素子270が、406において設けられる。したがって、記憶素子270は、周辺クロスバー250のポートに結合される。他の外付け素子が、408において設けられる。例えば、メモリブリッジ280および286ならびに外付けマスタ282、284、および288が、408において設けられる。外付け素子もまた、直接的にまたは間接的に、周辺クロスバー250に結合される。
【0038】
したがって、方法400を使用して、処理素子のグリッド、対応するメッシュネットワーク、グリッドのエッジにおける周辺クロスバー、および記憶素子を含むシステムが設けられる。外付けマスタなどの外付け部品もまた設けられる。システム100および/または200の利点を有するシステムが、このように製造され得る。
【0039】
前述の実施形態は、理解の明確化の目的で、いくぶんか詳細に説明されてきているとはいえ、本開示は、提供された詳細に限定されない。本開示を実装する多くの代替の手法がある。開示された実施形態は、例示であり、限定ではない。
図1
図2
図3
図4
【外国語明細書】