(57)【要約】  本開示は、機械学習アクセラレータシステム、及び機械学習アクセラレータシステムを用いてデータを移送する方法に関する。機械学習アクセラレータシステムは、スイッチノードのアレイと処理要素のアレイとを含むスイッチネットワークを含んでもよい。処理要素のアレイの各処理要素は、スイッチノードのアレイのスイッチノードに接続されており、スイッチノードを介して移送可能なデータを生成するように構成されている。方法は、スイッチノードを用いてデータソースから入力データを受信することと、スイッチノードに接続される処理要素を用いて入力データに基づいて出力データを生成することとを含んでもよい。方法は、スイッチノードを用いて宛先処理要素に生成出力データを移送することを含んでもよい。
2021511576.tif 000002
【特許請求の範囲】
【請求項１】
スイッチノードのアレイと、
処理要素のアレイと
を含むスイッチネットワークを含む機械学習アクセラレータシステムであって、前記処理要素のアレイの各処理要素は、前記スイッチノードのアレイのうちの１つのスイッチノードに接続されており、前記スイッチノードを介して移送可能なデータを生成するように構成される、
機械学習アクセラレータシステム。
【請求項２】
前記スイッチノードのアレイのうちの宛先スイッチノードと、前記宛先スイッチノードに接続されている宛先処理要素とを更に含む、請求項１に記載の機械学習アクセラレータシステム。
【請求項３】
前記生成されたデータは、前記宛先処理要素の位置、前記宛先処理要素内の記憶位置、及び前記生成されたデータに関する情報を含む１つ又は複数のデータパケットで移送される、請求項２に記載の機械学習アクセラレータシステム。
【請求項４】
前記宛先処理要素の前記位置に関する前記情報は、前記処理要素のアレイ内の前記宛先処理要素の（ｘ、ｙ）座標を含む、請求項３に記載の機械学習アクセラレータシステム。
【請求項５】
前記スイッチノードのアレイのうちの１つのスイッチノードは、前記スイッチノードのアレイ又は前記処理要素のアレイのうち少なくとも１つの事前定義構成に基づいて、前記スイッチネットワークにおける経路に沿って前記データパケットを移送するように構成される、請求項３又は４に記載の機械学習アクセラレータシステム。
【請求項６】
前記データパケットは、前記スイッチネットワークにおけるデータフローパターンの解析に基づく経路に沿って移送される、請求項３又は４に記載の機械学習アクセラレータシステム。
【請求項７】
前記経路は、水平パス、垂直パス、又はこれらのパスの組み合わせを含む、請求項５又は６に記載の機械学習アクセラレータシステム。
【請求項８】
前記スイッチノードのアレイのうちの１つのスイッチノードは、前記スイッチノードの動作状態に基づいて前記データパケットを受信することを拒否するように構成される、請求項３〜７のいずれか一項に記載の機械学習アクセラレータシステム。
【請求項９】
前記スイッチノードのアレイのうちの１つのスイッチノードは、前記スイッチノードの動作状態に基づいて前記データパケットの前記経路を変更するように構成される、請求項４〜７のいずれか一項に記載の機械学習アクセラレータシステム。
【請求項１０】
前記処理要素は、
前記データを生成するように構成されるプロセッサコアと、
前記生成されたデータを記憶するように構成されるメモリバッファと
を含む、請求項１〜９のいずれか一項に記載の機械学習アクセラレータシステム。
【請求項１１】
機械学習アクセラレータシステムでデータを移送する方法であって、
スイッチネットワークにおけるスイッチノードのアレイのうちの１つのスイッチノードを用いて、データソースから入力データを受信することと、
前記スイッチノードに接続され、処理要素のアレイの一部である１つの処理要素を用いて、前記入力データに基づいて出力データを生成することと、
前記スイッチノードを用いて、前記スイッチネットワークを介して前記処理要素のアレイのうちの１つの宛先処理要素に前記生成された出力データを移送することと
を含む方法。
【請求項１２】
前記処理要素のアレイ内の１つの宛先処理要素の位置、前記宛先処理要素内の記憶位置、及び前記生成された出力データに関する情報を含む１つ又は複数のデータパケットを形成することを更に含む、請求項１１に記載の方法。
【請求項１３】
前記処理要素のアレイ内の前記宛先処理要素のメモリバッファに前記生成された出力データを記憶することを更に含む、請求項１２に記載の方法。
【請求項１４】
前記スイッチノードのアレイ又は前記処理要素のアレイの事前定義構成に基づいて、前記スイッチネットワークにおける経路に沿って前記１つ又は複数のデータパケットを移送することを含む、請求項１２又は１３に記載の方法。
【請求項１５】
前記データパケットを、前記スイッチネットワークにおけるデータフローパターンの解析に基づく前記スイッチネットワークにおける経路に沿って移送する、請求項１２又は１３に記載の方法。
【請求項１６】
前記経路は、水平パス、垂直パス、又はこれらのパスの組み合わせを含む、請求項１４又は１５に記載の方法。
【請求項１７】
前記スイッチノードのアレイのうちの１つのスイッチノードは、前記スイッチノードのアレイのうちの前記スイッチノードの動作状態に基づいて前記１つ又は複数のデータパケットの前記経路を変更するように構成される、請求項１４〜１６のいずれか一項に記載の方法。
【請求項１８】
前記スイッチノードのアレイのうちの１つのスイッチノードは、前記スイッチノードの動作状態に基づいて前記データパケットを受信することを拒否するように構成される、請求項１４〜１６のいずれか一項に記載の方法。
【請求項１９】
実行可能な命令のセットを記憶する非一時的コンピュータ可読媒体であって、前記命令のセットは、機械学習アクセラレータシステムにデータを移送する方法を実行させるように、前記機械学習アクセラレータシステムの１つ又は複数のプロセッサによって実行可能であり、前記方法は、
処理要素のアレイのうちの１つの処理要素によって受信される入力データに基づいて当該処理要素によって生成される出力データを、スイッチネットワークを介して、前記処理要素のアレイのうちの１つの宛先処理要素に移送する経路指定命令を生成することを含み、前記処理要素のアレイの各処理要素は、前記スイッチネットワークにおけるスイッチノードのアレイのうちの１つのスイッチノードに接続される、
非一時的コンピュータ可読媒体。
【請求項２０】
前記機械学習アクセラレータシステムの１つ又は複数のプロセッサによって実行可能な前記命令のセットは、前記機械学習アクセラレータシステムに、
前記処理要素のアレイ内の１つの宛先処理要素の位置、前記宛先処理要素内の記憶位置、及び前記生成された出力データに関する情報を含む１つ又は複数のデータパケットを形成することと、
前記スイッチノードのアレイ又は前記処理要素のアレイのうち少なくとも１つの事前定義構成に基づいて、前記スイッチネットワークにおける経路に沿って前記１つ又は複数のデータパケットを移送することと
を更に実行させる、請求項１９に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[001]  この出願は、「Deep Learning Accelerator Method Using a Light Weighted Mesh Network with 2D Processing Unit Array」と称する２０１８年１月２４日に出願の米国仮特許出願第６２／６２１，３６８号への優先権に基づいており、この優先権を主張しており、その内容全体を参照により本明細書に引用する。
【背景技術】
【０００２】
背景
[002]  事業単位にわたるニューラルネットワークベースのディープラーニングアプリケーションの急激な増加に伴って、商品の中央処理装置（ＣＰＵ）／図形処理ユニット（ＧＰＵ）ベースのプラットフォームは、性能、電力効率、及び経済的スケーラビリティの点で、増え続ける計算要求を支援する適切な計算基板ではない。ニューラルネットワークベースのディープラーニングアプリケーションを高速化するニューラルネットワークプロセッサの開発は、既存の集積チップ（ＩＣ）製造業者、スタートアップ企業、及び大きいインターネット企業を含む多くの事業部門にわたって、大幅に進展している。
【０００３】
[003]  既存のニューラルネットワーク処理ユニット（ＮＰＵ）又はテンソル処理ユニット（ＴＰＵ）は、プログラマブル決定性実行パイプラインを特徴とする。このパイプラインの重要な部分は、２５６×２５６の８ビット乗算器−累算器ユニット（ＭＡＣ）と２４メビバイト（ＭｉＢ）メモリバッファとを有する行列ユニットを含んでもよい。しかし、半導体技術が７ｎｍノードの方へ進むにつれて、トランジスタ密度は、１０Ｘを超えて増加する見込みである。このような構成において、効率的なデータ転送を可能にするには、より大きい課題を潜在的に引き起こす、この行列ユニットのサイズ及びバッファサイズの増大を必要とすることがある。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
[004]  本開示は、機械学習アクセラレータシステム、及び機械学習アクセラレータシステムでデータを交換する方法に関する。機械学習アクセラレータシステムは、スイッチノードのアレイと処理要素のアレイとを含むスイッチネットワークを含んでもよい。処理要素のアレイの各処理要素は、スイッチノードのアレイのうちの１つのスイッチノードに接続されてもよく、スイッチノードを介して移送可能なデータを生成するように構成されてもよい。生成データは、宛先処理要素の位置、宛先処理要素内の記憶位置、及び生成されたデータに関する情報を含む１つ又は複数のデータパケットで移送されてもよい。
【０００５】
[005]  本開示は、機械学習アクセラレータシステムでデータを移送する方法を提供する。方法は、スイッチネットワークにおけるスイッチノードのアレイのうちの１つのスイッチノードを用いて、データソースから入力データを受信することを含んでもよい。方法は、当該スイッチノードに接続され、処理要素のアレイの一部である処理要素を用いて、入力データに基づいて出力データを生成することと、当該スイッチノードを用いて、スイッチネットワークを介して処理要素のアレイのうちの１つの宛先処理要素に、生成された出力データを移送することとを含んでもよい。
【０００６】
[006]  幾つかの開示の実施形態と一致して、上述の方法を実行する少なくとも１つのプロセッサによって実行可能な命令のセットを含むコンピュータ可読記憶媒体が提供される。
【０００７】
[007]  他の開示の実施形態と一致して、非一時的コンピュータ可読記憶媒体は、少なくとも１つの処理デバイスによって実行されかつ上述の方法を実行するプログラム命令を記憶してもよい。
【０００８】
図面の簡単な説明
[008]  本開示の実施形態及び様々な態様を、下記の詳細な説明及び添付図面で例示する。図面に示す様々な特徴は、原寸に比例して描かれていない。
【図面の簡単な説明】
【０００９】
【図１】[009]本開示の実施形態と一致する例示的なディープラーニングアクセラレータシステムを例示する。
【図２】[010]開示の実施形態による例示的なディープラーニングアクセラレータシステムのブロック図を例示する。
【図３Ａ】[011]開示の実施形態による例示的なメッシュベースのディープラーニングアクセラレータシステムを例示する。
【図３Ｂ】[012]開示の実施形態によるディープラーニングアクセラレータシステムの例示的な処理要素を例示する。
【図４】[013]開示の実施形態による例示的なデータパケットのブロック図を例示する。
【図５】[014]開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパスを例示する。
【図６】[015]開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパスを例示する。
【図７】[016]開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパスを例示する。
【図８】[017]本開示の実施形態によるディープラーニングアクセラレータシステムでデータを移送する例示的な方法の処理フローチャートである。
【発明を実施するための形態】
【００１０】
詳細な説明
[018]   例示的な実施形態について詳細に説明し、その例は添付図面で例示される。下記の説明は、特に指示がない限り、異なる図面における同じ番号が同じ又は同様の要素を表す添付図面を参照する。例示的な実施形態の下記の説明に記載の実装形態は全て、本発明と一致する実装形態を表すとは限らない。代わりに、実装形態は、添付の特許請求の範囲に記載のような本発明に関する態様と一致する装置及び方法の例に過ぎない。
【００１１】
[019]  上述のように、従来のアクセラレータは、幾つかの欠点を有する。例えば、従来の図形処理ユニット（ＧＰＵ）は、全命令セットを有する数千のシェーダコア、作業の動的スケジューラ、及び複雑なメモリ階層を特徴とすることがあり、大量の消費電力、及びディープラーニング作業負荷に対する余分な作業を引き起こすことがある。
【００１２】
[020]  従来のデータ処理ユニット（ＤＰＵ）は、データフローベースの粗粒度再構成可能アーキテクチャ（ＣＧＲＡ）を特徴とすることがある。このＣＧＲＡを、３２×３２クラスタのメッシュとして構成してもよく、各クラスタを、１６個のデータフロー処理要素（ＰＥ）として構成してもよい。データを隣に直接渡すＰＥによって、このメッシュを介してデータを渡してもよい。これは、データフローを非効率的にして、計算に集中する代わりに、データを渡すのに数サイクルを費やすようにＰＥに要求することがある。
【００１３】
[021]  本発明の実施形態は、従来のアクセラレータのこれらの問題を克服する。例えば、実施形態は、軽量のスイッチネットワークを提供し、これによって、ＰＥが計算に集中することができる。更に、計算及び記憶資源を、多くのＰＥにわたって分配する。二次元メッシュ接続を用いて、ＰＥの間でデータを伝達してもよい。ソフトウェアは、ニューラルネットワークの作業負荷及びデータをＰＥのアレイに柔軟に分割して、それに応じてデータフローをプログラム化することができる。同様な理由で、より多くの作業及びデータをまとめることの難しさを増すことなく、追加資源を追加するのが容易である。
【００１４】
[022]  図１は、開示の実施形態による例示的なディープラーニングアクセラレータシステムアーキテクチャ１００を例示する。この開示のコンテキストにおいて、ディープラーニングアクセラレータシステムを、機械学習アクセラレータと呼んでもよい。ここで、機械学習及びディープラーニングを交換可能に使用してもよい。図１に示すように、アクセラレータシステムアーキテクチャ１００は、オンチップ通信システム１０２、ホストメモリ１０４、メモリ制御器１０６、直接メモリアクセス（ＤＭＡ）ユニット１０８、ジョイントテストアクショングループ（ＪＴＡＧ）／テストアクセスエンド（ＴＡＰ）制御器１１０、周辺インターフェース１１２、バス１１４、グローバルメモリ１１６などを含んでもよい。オンチップ通信システム１０２は、通信データに基づいてアルゴリズム演算を実行することができることが分かる。更に、アクセラレータシステムアーキテクチャ１００は、メインメモリとしての機能を果たすためにオンチップメモリブロック（例えば、８ＧＢの第二世代高帯域幅メモリの４ブロック（ＨＢＭ２））を有するグローバルメモリ１１６を含んでもよい。
【００１５】
[023]  オンチップ通信システム１０２は、グローバルマネージャ１２２、及び複数の処理要素１２４を含んでもよい。グローバルマネージャ１２２は、１つ又は複数の処理要素１２４と連係するように構成されている１つ又は複数のタスクマネージャ１２６を含んでもよい。各タスクマネージャ１２６を、ニューラルネットワークにシナプス／ニューロン回路を与える処理要素１２４のアレイと関連付けてもよい。例えば、図１の処理要素の最上層は、ニューラルネットワークに対する入力層を表す回路を提供する一方、処理要素の第２層は、ニューラルネットワークの１つ又は複数の隠れ層を表す回路を提供してもよい。図１に示すように、グローバルマネージャ１２２は、処理要素１２４の２つのアレイと連係するように構成されている２つのタスクマネージャ１２６を含んでもよい。幾つかの実施形態において、アクセラレータシステムアーキテクチャ１００を、ニューラルネットワーク処理ユニット（ＮＰＵ）アーキテクチャ１００と呼んでもよい。
【００１６】
[024]  処理要素１２４は、１つ又は複数の処理要素を含んでもよく、各処理要素は、グローバルマネージャ１２２の制御下で通信データに関する１つ又は複数の演算（例えば、乗算、加算、乗累算など）を実行するように構成されている１つ又は複数の処理ユニットを含む単一命令多重データ（ＳＩＭＤ）アーキテクチャを含む。通信データパケットに対して操作を実行するために、処理要素１２４は、コア及びメモリバッファを含んでもよい。各処理要素は、任意の数の処理ユニットを含んでもよい。幾つかの実施形態において、処理要素１２４を、タイルなどと考えてもよい。
【００１７】
[025]  ホストメモリ１０４は、ホストＣＰＵのメモリなどのオフチップメモリであってもよい。例えば、ホストメモリ１０４は、ダブルデータレートの同期ダイナミックランダムアクセスメモリ（ＤＤＲ−ＳＤＲＡＭ）のメモリなどであってもよい。より高いレベルのキャッシュとしての機能を果たす、１つ又は複数のプロセッサ内に集積されたオンチップメモリと比較して、より低いアクセス速度を有する大量のデータを記憶するようにホストメモリ１０４を構成してもよい。
【００１８】
[026]  メモリ制御器１０６は、グローバルメモリ１１６内でメモリブロック（例えば、ＨＢＭ２）へのデータの読み書きを管理してもよい。例えば、メモリ制御器１０６は、外部チップ通信システムから（例えば、ＤＭＡユニット１０８、又は別のＮＰＵに対応するＤＭＡユニットから）、又はオンチップ通信システム１０２から（例えば、グローバルマネージャ１２２のタスクマネージャ１２６によって制御される二次元メッシュを介して処理要素１２４におけるローカルメモリから）来る読み書きデータを管理してもよい。更に、１つのメモリ制御器を図１に示すが、２つ以上のメモリ制御器をＮＰＵアーキテクチャ１００に設けることができることが分かる。例えば、グローバルメモリ１１６内で各メモリブロック（例えば、ＨＢＭ２）に対して１つのメモリ制御器があってもよい。
【００１９】
[027]  メモリ制御器１０６は、メモリアドレスを生成し、メモリ読み取り又は書き込みサイクルを開始してもよい。メモリ制御器１０６は、１つ又は複数のプロセッサによって読み書き可能な数個のハードウェアレジスタを含んでもよい。レジスタは、メモリアドレスレジスタ、バイト数レジスタ、１つ又は複数の制御レジスタ、及び他のタイプのレジスタを含んでもよい。これらのレジスタは、ソース、宛先、転送方向（入出力（Ｉ／Ｏ）デバイスからの読み取り、又はＩ／Ｏデバイスへの書き込み）、転送単位のサイズ、１バーストで転送すべきバイト数、及び／又はメモリ制御器の他の典型的な特徴について、ある組み合わせを指定してもよい。
【００２０】
[028]  ＤＭＡユニット１０８は、ホストメモリ１０４とグローバルメモリ１１６との間のデータの転送を支援してもよい。更に、ＤＭＡユニット１０８は、複数のアクセラレータ間のデータの転送を支援してもよい。ＤＭＡユニット１０８により、オフチップデバイスは、ＣＰＵ割込みを引き起こすことなく、オンチップ及びオフチップメモリの両方にアクセスすることができる。従って、ＤＭＡユニット１０８は、メモリアドレスを生成し、メモリ読み取り又は書き込みサイクルを開始してもよい。ＤＭＡユニット１０８は、メモリアドレスレジスタ、バイト数レジスタ、１つ又は複数の制御レジスタ、及び他のタイプのレジスタを含む、１つ又は複数のプロセッサによって読み書き可能な数個のハードウェアレジスタを含んでもよい。これらのレジスタは、ソース、宛先、転送方向（入出力（Ｉ／Ｏ）デバイスからの読み取り、又はＩ／Ｏデバイスへの書き込み）、転送単位のサイズ、及び／又は１バーストで転送すべきバイト数について、ある組み合わせを指定してもよい。アクセラレータアーキテクチャ１００は第２のＤＭＡユニットを含んでいてもよく、第２のＤＭＡユニットは、複数のアクセラレータアーキテクチャがホストＣＰＵを必要とすることなく直接通信できるように、他のアクセラレータアーキテクチャとの間でデータを転送するために使用できることが分かる。
【００２１】
[029]  ＪＴＡＧ／ＴＡＰ制御器１１０は、システムアドレス及びデータバスへの直接外部アクセスを必要とすることなくアクセラレータへの低オーバヘッドアクセス用のシリアル通信インターフェース（例えば、ＪＴＡＧインターフェース）を実施する専用デバッグポートを指定してもよい。ＪＴＡＧ／ＴＡＰ制御器１１０は、様々な部品のチップ論理レベル及びデバイス性能を示すテストレジスタのセットにアクセスするプロトコルを実施するように構成されているオンチップテストアクセスインターフェース（例えば、ＴＡＰインターフェース）を有してもよい。
【００２２】
[030]  周辺インターフェース１１２（例えば、ＰＣＩｅインターフェース）は、存在するならば、アクセラレータと他のデバイスとの間の通信を行う（典型的な）チップ間バスとしての機能を果たしてもよい。
【００２３】
[031]  バス１１４は、チップ内バス及びチップ間バスの両方を含む。チップ内バスは、システムアーキテクチャによって必要とされるように、全ての内部構成要素を互いに接続する。全ての構成要素をあらゆる他の構成要素に接続するとは限らない一方で、全ての構成要素は、通信する必要がある他の構成要素と接続されている。チップ間バスは、オフチップメモリ又は周辺機器などの他のデバイスにアクセラレータを接続する。典型的には、周辺インターフェース１１２（例えば、チップ間バス）がある場合、バス１１４はチップ内バスにのみ関係するが、幾つかの実装形態では、バス１１４は専用バス間通信にも関係し得る。
【００２４】
[032]  図１のアクセラレータアーキテクチャ１００は、ＮＰＵアーキテクチャ（更に後述する）を概ね目的としているが、開示の実施形態は、ディープラーニングなどの幾つかのアプリケーションを高速化する任意のタイプのアクセラレータに適用できることが分かる。このようなチップは、例えば、ＧＰＵ、ベクトル／行列処理能力を有するＣＰＵ、又はディープラーニング用のニューラルネットワークアクセラレータであってもよい。ＳＩＭＤ又はベクトルアーキテクチャは、図形処理及びディープラーニングなどのデータ並列処理を用いた計算デバイスを支援するためによく使用される。
【００２５】
[033]  図２について説明する。図２は、開示の実施形態による例示的なディープラーニングアクセラレータシステム２００のブロック図を例示する。ディープラーニングアクセラレータシステム２００は、ニューラルネットワーク処理ユニット（ＮＰＵ）２０２、ＮＰＵメモリ２０４、ホストＣＰＵ２０８、ホストＣＰＵ２０８と関連付けられたホストメモリ２１０、及びディスク２１２を含んでもよい。
【００２６】
[034]  図２に例示するように、ＮＰＵ２０２を、周辺インターフェース（例えば、図１の周辺インターフェース１１２）を介してホストＣＰＵ２０８に接続してもよい。ここで記載のように、ニューラルネットワーク処理ユニット（例えば、ＮＰＵ２０２）は、ニューラルネットワーク計算タスクを高速化する計算デバイスであってもよい。幾つかの実施形態において、ＮＰＵ２０２を、ホストＣＰＵ２０８のコプロセッサとして使用されるように構成してもよい。
【００２７】
[035]  幾つかの実施形態において、ＮＰＵ２０２は、コンパイラ（図示せず）を含んでもよい。このコンパイラは、プログラム、又は１つのプログラミング言語で書かれたコンピュータコードをＮＰＵ命令に変換して実行可能プログラムを生成するコンピュータソフトウェアであってもよい。マシニングの応用では、コンパイラは、様々な演算、例えば、前処理、字句解析、構文解析、意味解析、入力プログラムの中間表現への変換、コード最適化、コード生成、又はこれらの組み合わせを実行してもよい。
【００２８】
[036]  幾つかの実施形態において、コンパイラは、１つ又は複数のコマンドをＮＰＵ２０２にプッシュするように構成されているホストユニット（例えば、図２のホストＣＰＵ２０８又はホストメモリ２１０）上にあってもよい。これらのコマンドに基づいて、タスクマネージャ（例えば、図１のタスクマネージャ１２６）は、任意の数のタスクを１つ又は複数の処理要素（例えば、図１の処理要素１２４）に割り当ててもよい。一部のコマンドは、ホストメモリ（例えば、図１のホストメモリ１０４）からグローバルメモリに命令及びデータをロードするようにＤＭＡユニット（例えば、図１のＤＭＡユニット１０８）に指示してもよい。次に、ロードされた命令を、対応するタスクに割り当てられた各処理要素１２４に分散させてもよく、１つ又は複数の処理要素１２４は、これらの命令を処理してもよい。
【００２９】
[037]  処理要素によって受信された最初の数個の命令は、グローバルメモリから処理要素の１つ又は複数のローカルメモリ（例えば、処理要素のメモリ、又は各能動処理要素に対するローカルメモリ）にデータをロード／記憶するように処理要素に指示することができることが分かる。次に、各処理要素は、命令パイプラインを開始してもよく、命令パイプラインは、ローカルメモリから（例えば、フェッチユニットを介して）命令をフェッチすること、（例えば、命令復号器を介して）命令を復号して（例えば、オペランドに対応する）ローカルメモリアドレスを生成すること、ソースデータを読み取ること、演算を実行する又はロード／記憶すること、及び結果を書き戻すことを含む。
【００３０】
[038]  ホストＣＰＵ２０８を、ホストメモリ２１０及びディスク２１２と関連付けてもよい。幾つかの実施形態において、ホストメモリ２１０は、ホストＣＰＵ２０８と関連付けられた統合メモリ又は外部メモリであってもよい。ホストメモリ２１０は、ローカル又はグローバルメモリであってもよい。幾つかの実施形態において、ディスク２１２は、ホストＣＰＵ２０８に追加メモリを設けるように構成されている外部メモリを含んでもよい。
【００３１】
[039]  図３Ａについて説明する。図３Ａは、開示の実施形態による例示的なディープラーニングアクセラレータシステム３００を例示する。ディープラーニングアクセラレータシステム３００は、スイッチングノード３０４のアレイと処理要素３０６のアレイとを含むスイッチネットワーク３０２、ＤＭＡユニット３０８、制御ユニット３１４によって制御されるホストＣＰＵ３１０、周辺インターフェース３１２、高帯域幅メモリ３１６、及び高帯域幅メモリインターフェース３１８を含んでもよい。ディープラーニングアクセラレータシステム３００は、ここに例示されない他の構成要素を含むことができることが分かる。
【００３２】
[040]  幾つかの実施形態において、スイッチネットワーク３０２は、スイッチノード３０４のアレイを含んでもよい。スイッチノード３０４を、スイッチノード３０４の二次元（２Ｄ）アレイを形成するように配置してもよい。幾つかの実施形態において、図３Ａに例示のように、スイッチネットワーク３０２は、スイッチネットワークにおける各スイッチノード３０４を、直接隣接するスイッチノード３０４に接続することができるように、スイッチノードの二次元メッシュ接続を含むスイッチネットワークを含んでもよい。スイッチノード３０４を、スイッチネットワーク３０２から及びスイッチネットワーク３０２へデータを経路指定するように、又はスイッチネットワーク３０２内でデータを経路指定するように構成してもよい。データを、スイッチネットワーク３０２の別のスイッチノード３０４から内部的に、又はＤＭＡユニット３０８から外部的に受信してもよい。経路指定データは、他の関連構成要素（例えば、ディープラーニングアクセラレータシステム３００の別のスイッチノード３０４又は処理要素３０６）への受信及び転送データを含んでもよい。幾つかの実施形態において、スイッチノード３０４は、ＤＭＡ３０８、スイッチネットワーク３０２の処理要素３０６、及び１つ又は複数の隣接スイッチノード３０４からデータを受信してもよい。
【００３３】
[041]  図３Ａに例示のように、各スイッチノード３０４を、対応する処理要素３０６と関連付けてもよい。処理要素３０６は、図１の処理要素１２４と同様であってもよい。ディープラーニングアクセラレータシステム３００は、スイッチネットワーク３０２の対応するスイッチノード３０４に各々が接続する処理要素３０６の二次元アレイを含んでもよい。データパケット（後述）の形でデータを生成するように、処理要素３０６を構成してもよい。幾つかの実施形態において、コンピュータ実行可能プログラム、ソフトウェア、ファームウェア、又は事前定義構成に基づいてデータを生成するように、処理要素３０６を構成してもよい。更に、スイッチノード３０４にデータを送信するように、処理要素３０６を構成してもよい。
【００３４】
[042]  幾つかの実施形態において、スイッチノード３０４の動作状態に基づいて処理要素３０６に応答するように、スイッチノード３０４を構成してもよい。例えば、データパケットを経路指定するのにスイッチノード３０４が使用中である場合、スイッチノード３０４は、処理要素３０６からのデータパケットを拒否又は一時的に先送りしてもよい。幾つかの実施形態において、スイッチノード３０４は、データパケットを再経路指定してもよく、例えば、スイッチノード３０４は、動作状態又は全システム状態に基づいて、水平パスから垂直パスに、又は垂直パスから水平パスに、データパケットの流れ方向を変更してもよい。
【００３５】
[043]  幾つかの実施形態において、スイッチネットワーク３０２は、対応する個々の処理要素３０６に各々が接続するスイッチノード３０４の二次元アレイを含んでもよい。スイッチノード３０４は、ある位置から別の位置にデータを転送するように構成してもよい一方、処理要素３０６は、入力データを計算して出力データを生成するように構成してもよい。計算及び転送資源のこのような分配により、スイッチネットワーク３０２は、軽量で効率的であることができる。軽量な二次元スイッチネットワークは、とりわけ以下に記載の利点の一部又は全部を有することができる。
（ｉ）単純なスイッチベースの設計。提案された二次元スイッチネットワークは、ネットワーク内のデータフローを制御する単純なスイッチを含む。スイッチノードの使用により、処理要素の二次元アレイの間の２地点間通信を行うことができる。
（ｉｉ）高い計算効率。ネットワークのスイッチノード間のデータの交換及び転送を含むデータフロー管理を、ソフトウェア又はファームウェアなどの実行可能プログラムによって実行する。ソフトウェアは、データフローパターン、作業負荷特性、データ通信量などに基づいて、データフローをスケジュールすることができ、効率的なディープラーニングアクセラレータシステムが得られる。
（ｉｉｉ）高性能及び低消費電力。提案された軽量なスイッチネットワークは、全システムのより高い性能を可能にする分散資源割り当てに依拠する。例えば、中央コア又は処理要素ハブの代わりに、計算資源及びデータ記憶資源を処理要素のアレイの間で分配する。単純なメッシュベースの接続により、処理要素間の通信を行うことができる。
（ｉｖ）設計の柔軟性及びスケーラビリティ。ソフトウェアは、ニューラルネットワークの作業負荷及びデータを処理要素のアレイに柔軟に分割して、それに応じてデータフローをプログラム化することができる。これにより、計算効率及び全システム効率を維持しながら、追加資源は、より大量のデータを計算することができる。
（ｖ）データ経路指定戦略の柔軟性。提案された二次元スイッチネットワークは、デッドロック検出、輻輳回避、又はデータ衝突管理のための複雑なフロー制御機構を不要とすることができる。メッシュネットワーク及び接続性のために、単純且つ効率的な経路指定戦略を使用することができる。
（ｖｉ）ソフトウェア互換性。ソフトウェア又はファームウェアは、実行時の前に、作業負荷、データフローパターン及びデータ記憶の静的解析に基づいて輻輳及びデッドロックを回避するデータパケットを生成するために、処理要素用のタスクをスケジュールすることができる。
【００３６】
[044]  幾つかの実施形態において、ＤＭＡユニット３０８は、図１のＤＭＡユニット１０８と同様であってもよい。ＤＭＡユニット３０８は、バックボーンを含んでもよく、ディープラーニングアクセラレータシステムは、２つの別々のバスシステムを含んでもよい（例えば、図１のバス１１４）。一方のバスシステムは、スイッチネットワークのスイッチノード３０４間の通信を行うことができ、他方のバスシステムは、ＤＭＡユニット３０８とバックボーンとの間の通信を行うことができる。スイッチネットワーク３０２に出入りするデータのフローを制御及び編成するように、ＤＭＡユニット３０８を構成してもよい。
【００３７】
[045]  ディープラーニングアクセラレータシステム３００は、ホストＣＰＵ３１０を含んでもよい。幾つかの実施形態において、ホストＣＰＵ３１０を、制御ユニット３１４と電気的に接続してもよい。更に、ホストＣＰＵ３１０を、周辺インターフェース３１２及び高帯域幅インターフェース３１８に接続してもよい。ＤＭＡユニット３０８は、高帯域幅メモリインターフェース３１８を介してホストＣＰＵ３１０又は高帯域幅メモリ３１６と通信してもよい。幾つかの実施形態において、高帯域幅メモリ３１６は、図１に示すディープラーニングアクセラレータシステム１００のグローバルメモリ１１６と同様であってもよい。
【００３８】
[046]  図３Ｂについて説明する。図３Ｂは、この開示の実施形態による例示的な処理要素のブロック図を例示する。処理要素３０６は、他の構成要素として、処理コア３２０及びメモリバッファ３２２を含んでもよい。ＤＭＡユニット３０８から、又はスイッチネットワーク３０２の別の処理要素３０６から受信される入力データを処理するように、処理コア３２０を構成してもよい。幾つかの実施形態において、入力データを処理し、データパケットの形で出力データを生成し、生成された出力データパケットを隣接処理要素３０６に渡すように、処理コア３２０を構成してもよい。メモリバッファ３２２は、必要に応じて、ローカルメモリ、グローバル共用メモリ、又はこれらの組み合わせを含んでもよい。入力データ又は出力データを記憶するように、メモリバッファ３２２を構成してもよい。
【００３９】
[047]  図４について説明する。図４は、本開示の実施形態による例示的なデータパケットを例示する。データパケット４００を、宛先位置及びデータ自体に関する情報を含むようにフォーマットしてもよい。幾つかの実施形態において、データパケット４００は、宛先位置、及びこの宛先位置に転送されるべきデータ４１０に関する情報を含んでもよい。宛先位置に関する情報は、スイッチネットワークにおける宛先処理要素３０６の（Ｘ、Ｙ）座標、及びデータオフセットを含んでもよい。幾つかの実施形態において、ＰＥＸは、宛先処理要素３０６のＸ座標４０４を含んでもよく、ＰＥＹは、宛先処理要素３０６のＹ座標４０６を含んでもよく、ＰＥオフセットは、処理要素３０６のメモリバッファ３２２内の位置に関する情報を含んでもよい。例えば、メモリバッファ３２２が２５６ビットメモリであり、メモリにおける各行が３２ビットである場合、メモリは８行を有する。このような構成において、ＰＥオフセット情報は、データ４１０が属するメモリ内の宛先行番号を示してもよい。データ通信量、データ転送効率、共用データのタイプなどに基づく１つ又は複数の経路指定戦略を用いて、スイッチネットワーク内のスイッチノード３０４によって、データパケット４００を経路指定してもよい。データの経路指定戦略の幾つかの例について、ここで説明する。必要に応じて他の経路指定戦略を使用することができることが分かる。
【００４０】
[048]  図５は、開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパス５００を例示する。転送パス５００に沿ってデータを転送することは、図５に例示のように、水平方向にデータパケット５０２、５０４、５０６及び５０８を転送することを含んでもよい。データパケット５０２、５０４、５０６及び５０８を、図４に例示のデータパケット４００と同じような方法でフォーマットしてもよい。４つのデータパケットだけを例示しているが、ディープラーニングアクセラレータシステムは、データ計算に必要な任意の数のデータパケットを含んでもよい。ディープラーニングアクセラレータシステムの計算作業負荷を、分割して処理要素３０６に割り当ててもよい。
【００４１】
[049]  幾つかの実施形態において、図５に例示のような水平パイプラインデータ転送は、スイッチネットワークにおいて（Ｘ、Ｙ）座標を有するスイッチノード３０４から（Ｘ＋ｉ、Ｙ）座標（但し、「ｉ」は正の整数である）を有するスイッチノード３０４への、データ、又はデータ（例えば、図４のデータ４１０）を含むデータパケットの転送を意味する。幾つかの実施形態において、宛先スイッチノード３０４は、（Ｘ−ｉ、Ｙ）座標を有してもよい。データパケットの移動は、宛先スイッチノードに応じて、左から右への移動、又は右から左への移動であってもよい。
【００４２】
[050]  一例として、図５は、４つのデータパケット（例えば、異なる線フォーマットを用いて図面中に示されたデータパケット５０２、５０、５０６及び５０８）に対するデータ転送経路を例示する。各データパケットに対する宛先位置は、（Ｘ＋４、Ｙ）である。これを、サイクル０、サイクル１、サイクル２及びサイクル３と呼ばれる４つのサイクルで達成することができる。各サイクルにおいて、１つのスイッチノード３０４は１つのデータパケットを移動させるだけである。幾つかの実施形態において、宛先スイッチノードにデータパケットを移動させるのに必要なサイクルの数は、特定の方向にデータパケットを移送するのに必要なスイッチノードの数と等しい。幾つかの実施形態において、Ｘ方向に沿った行、又はＹ方向に沿った列におけるスイッチノード３０４を、ディープラーニングアクセラレータシステムの層と呼んでもよい。
【００４３】
[051]  幾つかの実施形態において、データパケット（例えば、図４のデータパケット４００又は図５のデータパケット５０２）を受信し、処理要素３０６のメモリバッファ３２２にデータを記憶するように、スイッチノード３０４と関連付けられた処理要素３０６を構成してもよい。データを、受信データパケットのＰＥオフセットに基づいてメモリバッファ３２２内に記憶してもよい。
【００４４】
[052]  図６について説明する。図６は、開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパス６００を例示する。転送パス６００に沿ってデータを転送することは、図６に例示のように、垂直方向にデータパケット６０２、６０４及び６０６を転送することを含んでもよい。データパケット６０２、６０４及び６０６は、図４に例示のデータパケット４００と同様であってもよい。
【００４５】
[053]  幾つかの実施形態において、図６に例示のような垂直パイプラインデータ転送は、スイッチネットワークにおいて（Ｘ、Ｙ）座標を有するスイッチノード３０４から（Ｘ、Ｙ＋ｉ）座標（但し、「ｉ」は正の整数である）を有するスイッチノード３０４への、データ、又はデータ（例えば、図４のデータ４１０）を含むデータパケットの転送を意味する。幾つかの実施形態において、宛先スイッチノード３０４は、（Ｘ、Ｙ−ｉ）座標を有してもよい。データパケットの移動は、宛先スイッチノードに応じて、下から上への移動、又は上から下への移動であってもよい。
【００４６】
[054]  図７について説明する。図７は、開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパス７００を例示する。幾つかの実施形態において、処理要素のアレイの処理要素３０６は、ＤＭＡユニット（例えば、図３ＡのＤＭＡユニット３０８）又は他のデータソースから外部でデータを受信してもよい。受信データに基づいて、処理要素３０６は、計算データ、及び計算データに対する宛先位置情報を含むデータパケットを生成してもよい。図７は、水平方向及び垂直方向の両方に転送されるデータパケット７０２、７０４、７０６及び７０８を示す。このような構成において、２段階の工程を使用してもよい。第１の段階では、宛先スイッチノード３０４に到達するまで、データパケット７０２、７０４、７０６及び７０８を、Ｙ座標に沿って垂直方向に転送してもよい。宛先Ｙ座標に到達時に、第２の段階では、宛先スイッチノード３０４に到達するまで、データパケット７０２、７０４、７０６及び７０８を、Ｘ座標に沿って水平方向に転送してもよい。
【００４７】
[055]  幾つかの実施形態において、実行される前に、又はランタイムの前に、データフローの方向を、ソフトウェアによって判定してもよい。例えば、処理要素３０６が、計算結果を含む出力データを生成する場合、ソフトウェアは、パイプライン方法で水平データフローを判定してもよく、処理要素３０６が、入力データを隣接処理要素と共用する場合、ソフトウェアは、パイプライン方法で垂直データフローを判定してもよい。
【００４８】
[056]  図８について説明する。図８は、開示の実施形態によるディープラーニングアクセラレータシステム（例えば、図１のディープラーニングアクセラレータシステム１００）でデータを移送する例示的な方法の処理フローチャート８００を例示する。この方法は、スイッチノードを用いて内部又は外部データソースからデータを受信することと、処理要素を用いて、受信された入力データに基づいて出力データを生成することと、宛先処理要素に出力データを移送することとを含んでもよい。
【００４９】
[057]  ステップ８１０において、データソースからデータを受信するように、スイッチノード（例えば、図３Ａのスイッチノード３０４）を構成してもよい。データソースは、内部データソース、例えば、スイッチノードのアレイの別のスイッチノード、又は処理要素（例えば、図３Ａの処理要素３０６）であってもよい。幾つかの実施形態において、データソースは、外部データソース、例えば、ＤＭＡユニット（例えば、図３ＡのＤＭＡユニット３０８）であってもよい。ホストＣＰＵ（例えば、図３ＡのホストＣＰＵ３１０）と二次元スイッチネットワーク（例えば、図３Ａのスイッチネットワーク３０２）との間のデータフローを制御するように、ＤＭＡユニットを構成してもよい。幾つかの実施形態において、ＤＭＡユニットは、スイッチネットワークの１つ又は複数のスイッチノード３０４とデータを伝達及び交換してもよい。
【００５０】
[058]  ＤＭＡユニットは、ホストメモリ（例えば、ホストＣＰＵのローカルメモリ）と高帯域幅メモリ（例えば、図３Ａの高帯域幅メモリ３１６）との間のデータの転送を支援してもよい。更に、複数の処理ユニット間のデータを転送するように、ＤＭＡユニットを構成してもよい。幾つかの実施形態において、ＤＭＡユニットにより、オフチップデバイスは、ＣＰＵ割込みを引き起こすことなく、オンチップ及びオフチップメモリの両方にアクセスすることができる。従って、ＤＭＡユニットは、メモリアドレスを生成し、メモリ読み取り又は書き込みサイクルを開始してもよい。ＤＭＡユニットは、メモリアドレスレジスタ、バイト数レジスタ、１つ又は複数の制御レジスタ、及び他のタイプのレジスタを含む、１つ又は複数のプロセッサによって読み書き可能な数個のハードウェアレジスタを含んでもよい。
【００５１】
[059]  入力データを受信し、受信された入力データ又は出力データを処理要素からスイッチネットワーク内の宛先位置に移送するように、スイッチノードを構成してもよい。メッシュスイッチネットワークにより、二次元アレイにおける処理要素間のポイントツゥーポイント通信を行うことができる。
【００５２】
[060]  ステップ８２０において、処理要素（例えば、図３Ａの処理要素３０６）は、内部で又は外部で受信される入力データに基づいて出力データを生成してもよい。メッシュスイッチネットワークは、処理要素の二次元アレイを含んでもよい。メッシュスイッチネットワークの処理要素の各々を、少なくとも１つのスイッチノードと関連付けてもよい。幾つかの実施形態において、システム設計及び性能要件に基づいて、複数の処理要素を１つのスイッチノードと関連付けてもよい。
【００５３】
[061]  処理要素は、プロセッサコア（例えば、図３Ｂのプロセッサコア３２０）及びメモリ（例えば、図３Ｂのメモリバッファ３２２）を含んでもよい。出力データを計算して生成するように、プロセッサコアを構成してもよい一方、生成された出力データを記憶するように、メモリバッファを構成してもよい。幾つかの実施形態において、メモリバッファは、出力データを計算するのに必要なデータ及び命令を記憶してもよい。出力データを、データパケット（例えば、図４のデータパケット４００）の形で生成して移送してもよい。宛先処理要素の（Ｘ、Ｙ）座標、出力データ、及びデータを記憶する必要がある宛先処理要素のメモリバッファ内の位置を含むように、データパケットをフォーマットしてもよい。例えば、データパケットは、ＰＥＸ、ＰＥＹ、ＰＥオフセット、及びデータを含んでもよい。ここで、ＰＥＸは、宛先処理要素のＸ座標を示してもよく、ＰＥＹは、宛先処理要素のＹ座標を示してもよく、ＰＥオフセットは、メモリバッファにおけるメモリ空間のビット行アドレスを示してもよい。
【００５４】
[062]  処理要素は、ローカルメモリ又はグローバル共用メモリを含んでもよい。処理要素のプロセッサコア３２０によって、処理要素のローカルメモリにアクセスしてもよい一方、メッシュスイッチネットワークにおける任意の処理要素の任意のプロセッサコアによって、グローバル共用メモリにアクセスしてもよい。
【００５５】
[063]  ステップ８３０において、処理要素のメモリバッファに記憶される宛先情報に基づいて、生成された出力データ又はデータパケットを宛先処理要素に移送してもよい。１つ又は複数の経路を介して、データを宛先処理要素に移送してもよい。データ移送経路は、メッシュスイッチネットワークにおけるスイッチノードのアレイ又は処理要素のアレイのうち少なくとも１つの事前定義構成に基づいてもよい。ソフトウェア又はファームウェア又はコンピュータ実行可能プログラムは、ランタイムの前に、経路を判定してもよい。
【００５６】
[064]  幾つかの実施形態において、少なくとも、データフローパターン、又はデータフロー通信量、又はデータ量などを静的に解析することによって判定される経路に沿って、データ又はデータパケットを移送してもよい。ソフトウェア（例えば、ホストＣＰＵにおけるコンパイラなど）は、処理要素用のタスクをスケジュールし、処理要素をプログラム化して、輻輳及びデッドロックを回避するデータパケットを生成してもよい。判定経路は、図５に示すような水平パス、又は図６に示すような垂直パス、又は図７に示すような水平パス及び垂直パスの組み合わせであってもよい。必要に応じて、他の経路指定戦略を使用してもよい。
【００５７】
[065]  本実施形態の様々な例は、方法ステップ又は工程の一般的なコンテキストで説明され、それらは、ネットワーク環境でコンピュータによって実行されるコンピュータ実行可能命令（例えば、プログラムコード）を含むコンピュータ可読媒体で具体化されるコンピュータプログラム製品によって１つの態様で実施することができる。コンピュータ可読媒体は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）など（但し、これらに限定されない）を含む、取り外し可能及び取り外し不可能記憶デバイスを含んでもよい。一般的に、プログラムモジュールは、特定のタスクを実行する、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含んでもよい。コンピュータ実行可能命令、関連データ構造、及びプログラムモジュールは、ここに開示の方法のステップを実行するプログラムコードの例を示す。このような実行可能命令又は関連データ構造の特定の順序は、このようなステップ又は工程に記載の機能を実施するための対応する動作の例を示す。
【００５８】
[066]  上述の明細書において、実装形態によって異なることがある多くの特定の詳細を参照して実施形態が説明されている。記載の実施形態の特定の変更及び修正を行うことができる。他の実施形態は、ここに開示の本発明の明細書及び実行の考察から当業者に明白である。明細書及び例は単に例示的であると考えられ、本発明の真の範囲及び精神は下記の特許請求の範囲によって示されると意図されている。更に、図面に示すステップの順序は、単に例示を目的としていると意図されており、ステップの任意の特定の順序に限定されるように意図されていない。そのようなものとして、当業者は、同じ方法を実施しながら、これらのステップを異なる順序で実行することができることが分かる。
【００５９】
[067]  図面及び明細書において、例示的な実施形態が開示されている。しかし、多くの変更及び修正を、これらの実施形態に行うことができる。従って、特定の用語を使用しているけれども、これらの用語は、限定の目的でなく、単に一般的及び記述的な意味で使用され、実施形態の範囲は、下記の特許請求の範囲によって規定される。
【図１】
2021511576.tif 000003
【図２】
2021511576.tif 000004
【図３Ａ】
2021511576.tif 000005
【図３Ｂ】
2021511576.tif 000006
【図４】
2021511576.tif 000007
【図５】
2021511576.tif 000008
【図６】
2021511576.tif 000009
【図７】
2021511576.tif 000010
【図８】
2021511576.tif 000011
【国際調査報告】
2021511576.tif 000012
2021511576.tif 000013