(57)【要約】【課題】ディープラーニングのためのテンソル計算データフロー加速器半導体回路を提供する。【解決手段】本発明によるテンソル計算データフロー加速器半導体回路は、メモリバンクと、前記メモリバンクと通信するプロセッシングユニットの周辺アレイと、を有し、前記プロセッシングユニットの周辺アレイは、データ累算のために前記プロセッシングユニットの周辺アレイの中の第１プロセッシングユニットからの部分出力データが前記プロセッシングユニットの周辺アレイの中の他のプロセッシングユニットに入力されるパイプライン方式のデータフローチェーン（ｄａｔａｆｌｏｗ  ｃｈａｉｎ）を形成するように構成される。【選択図】  図１
2020091861.tif 000002
【特許請求の範囲】
【請求項１】
テンソル計算データフロー加速器半導体回路であって、
メモリバンクと、
前記メモリバンクと通信するプロセッシングユニットの周辺アレイと、を有し、
前記プロセッシングユニットの周辺アレイは、データ累算のために前記プロセッシングユニットの周辺アレイの中の第１プロセッシングユニットからの部分出力データが前記プロセッシングユニットの周辺アレイの中の他のプロセッシングユニットに入力されるパイプライン方式のデータフローチェーン（ｄａｔａｆｌｏｗ  ｃｈａｉｎ）を形成するように構成されることを特徴とするテンソル計算データフロー加速器半導体回路。
【請求項２】
前記プロセッシングユニットの周辺アレイは、（乗算・加算（ｍｕｌｔｉｐｌｙ−ａｎｄ−ａｄｄ））ユニットのアレイを含み、
前記第１プロセッシングユニットは、第１（乗算・加算）ユニットであり、
前記他のプロセッシングユニットは、第２（乗算・加算）ユニットであり、
前記（乗算・加算）ユニットのアレイは、前記メモリバンクに隣接するように配置され、
前記テンソル計算データフロー加速器半導体回路は、プロセッシングエンジンの周辺アレイをさらに有し、
各プロセッシングエンジンは、前記（乗算・加算）ユニットのアレイの中から（乗算・加算）ユニットを含むことを特徴とする請求項１に記載のテンソル計算データフロー加速器半導体回路。
【請求項３】
前記プロセッシングエンジンの各々は、入力バッファと、
部分和バッファと、
加重値バッファと、を含むことを特徴とする請求項２に記載のテンソル計算データフロー加速器半導体回路。
【請求項４】
前記プロセッシングエンジンの各々の前記加重値バッファは、初期化された状態で加重値行列ベクトルを格納するように構成されることを特徴とする請求項３に記載のテンソル計算データフロー加速器半導体回路。
【請求項５】
前記プロセッシングエンジンの周辺アレイの中でプロセッシングエンジンの前記入力バッファは、ストリーミング方式で前記メモリバンクから入力行列ベクトルを受信するように構成されることを特徴とする請求項４に記載のテンソル計算データフロー加速器半導体回路。
【請求項６】
前記プロセッシングエンジンの前記（乗算・加算）ユニットは，前記入力行列ベクトルと、前記プロセッシングエンジンの前記加重値バッファに格納された前記加重値行列ベクトルとの積を計算するように構成されることを特徴とする請求項５に記載のテンソル計算データフロー加速器半導体回路。
【請求項７】
前記プロセッシングエンジンは、第１プロセッシングエンジンであり、
前記第１プロセッシングエンジンは、前記第１プロセッシングエンジンに隣接する第２プロセッシングエンジンに前記積を出力するように構成されることを特徴とする請求項６に記載のテンソル計算データフロー加速器半導体回路。
【請求項８】
前記第２プロセッシングエンジンは、前記第２プロセッシングエンジンの前記部分和バッファに前記積を格納するように構成されることを特徴とする請求項７に記載のテンソル計算データフロー加速器半導体回路。
【請求項９】
前記入力行列ベクトルは、第１入力行列ベクトルであり、
前記積は、第１積であり、
前記第２プロセッシングエンジンの前記入力バッファは、前記ストリーミング方式で前記メモリバンクから第２入力行列ベクトルを受信するように構成され、
前記第２プロセッシングエンジンの前記（乗算・加算）ユニットは、前記第２入力行列ベクトルと、前記第２プロセッシングエンジンの前記加重値バッファに格納された前記加重値行列ベクトルとの第２積を計算するように構成され、
前記第２プロセッシングエンジンの前記（乗算・加算）ユニットは、前記第１積と前記第２積との和を計算するように構成されることを特徴とする請求項８に記載のテンソル計算データフロー加速器半導体回路。
【請求項１０】
前記第２プロセッシングエンジンは、前記第１積と前記第２積との和を前記プロセッシングエンジンの周辺アレイの中で前記第２プロセッシングエンジンに隣接する第３プロセッシングエンジンに出力するように構成され、
前記第３プロセッシングエンジンは、前記和を前記第３プロセッシングエンジンの前記部分和バッファに格納するように構成されることを特徴とする請求項９に記載のテンソル計算データフロー加速器半導体回路。
【請求項１１】
前記プロセッシングエンジンの周辺アレイは、蛇行方式（ｓｅｒｐｅｎｔｉｎｅ  ｆａｓｈｉｏｎ）で部分和を伝播するように構成されるシストリックアレイ（ｓｙｓｔｏｌｉｃ  ａｒｒａｙ）であり、
前記プロセッシングエンジンの周辺アレイは、ストリーミング方式で複数の入力行列ベクトルを受信し、前記部分和のデータフロー方向と垂直になる方向に前記複数の入力行列ベクトルを伝播させるように構成されることを特徴とする請求項１０に記載のテンソル計算データフロー加速器半導体回路。
【請求項１２】
前記メモリバンクは、ＤＲＡＭメモリバンクであり、
前記テンソル計算データフロー加速器半導体回路は、複数のチャンネルを含む「ＮＤＰ−ＤＦ」（ｎｅａｒ−ＤＲＡＭ−ｐｒｏｃｅｓｓｉｎｇ  ｄａｔａｆｌｏｗ）加速器ユニットダイをさらに有し、
前記チャンネルの各々は、蛇行方式で配列される複数のスマートバンクユニットを含み、
前記スマートバンクユニットの各々は、ＤＲＡＭバンク、入力バッファ、シストリックＭＡＣアレイ、及び出力バッファを含むことを特徴とする請求項３に記載のテンソル計算データフロー加速器半導体回路。
【請求項１３】
前記シストリックＭＡＣアレイは、前記（乗算・加算）ユニットのアレイを含み、
前記「ＮＤＰ−ＤＦ」加速器ユニットダイは、順次に積層される複数の「ＮＤＰ−ＤＦ」加速器ユニットダイの中の１つであることを特徴とする請求項１２に記載のテンソル計算データフロー加速器半導体回路。
【請求項１４】
パッシブシリコンインターポーザ（ｐａｓｓｉｖｅ  ｓｉｌｉｃｏｎ  ｉｎｔｅｒｐｏｓｅｒ）と、
前記パッシブシリコンインターポーザ上に配置されるプロセッサと、
前記プロセッサに隣接して前記パッシブシリコンインターポーザ上に配置されるベースダイと、をさらに有し、
前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイは、前記ベースダイ上に積層されることを特徴とする請求項１３に記載のテンソル計算データフロー加速器半導体回路。
【請求項１５】
前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイとを貫通して配置される１つ以上のＴＳＶ（ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）をさらに有し、
前記１つ以上のＴＳＶは、前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイとを相互接続し、前記ベースダイと前記プロセッサを相互接続するように構成され、
前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイは、前記プロセッサから計算をオフロードするように構成されることを特徴とする請求項１４に記載のテンソル計算データフロー加速器半導体回路。
【請求項１６】
パッシブシリコンインターポーザと、
前記パッシブシリコンインターポーザ上に配置されるコントローラと、
前記コントローラに隣接して前記パッシブシリコンインターポーザ上に配置されるベースダイと、をさらに有し、
前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイは、前記ベースダイ上に積層されることを特徴とする請求項１３に記載のテンソル計算データフロー加速器半導体回路。
【請求項１７】
前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイとを貫通して配置される１つ以上のＴＳＶ（ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）をさらに有し、
前記１つ以上のＴＳＶは、前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイとを相互接続し、前記ベースダイと前記コントローラを相互接続するように構成され、
前記複数の「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイは、前記テンソル計算データフロー加速器半導体回路から分離されたホストから計算をオフロードするように構成されることを特徴とする請求項１６に記載のテンソル計算データフロー加速器半導体回路。
【請求項１８】
前記複数の積層された「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイは、前記部分出力データを並列に処理するように構成されることを特徴とする請求項１３に記載のテンソル計算データフロー加速器半導体回路。
【請求項１９】
前記複数の積層された「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイは、前記部分出力データを逆方向（ｂａｃｋｗａｒｄ  ｄｉｒｅｃｔｉｏｎ）に伝播するように構成されることを特徴とする請求項１３に記載のテンソル計算データフロー加速器半導体回路。
【請求項２０】
前記複数の積層された「ＮＤＰ−ＤＦ」加速器ユニットダイと前記ベースダイは、部分行列転置（ｐａｒｔｉａｌ  ｍａｔｒｉｘ  ｔｒａｎｓｐｏｓｉｔｉｏｎ）を実行するように構成されることを特徴とする請求項１３に記載のテンソル計算データフロー加速器半導体回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディープラーニング（ｄｅｅｐ  ｌｅａｒｎｉｎｇ）に関し、特に、ディープラーニングで一般的な（行列−行列）乗算及びテンソル計算のためのデータフロー加速器構造（ｄａｔａｆｌｏｗ  ａｃｃｅｌｅｒａｔｏｒ  ａｒｃｈｉｔｅｃｔｕｒｅ）に関する。
【背景技術】
【０００２】
深層ニューラルネットワーク（Ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ：ＤＮＮ）は、人工知能を実現するための有望なアプローチとみなされており、そして多数のアプリケーションでその効果が立証されている。
深層ニューラルネットワークトレーニング（ｔｒａｉｎｉｎｇ）は、効率的な浮動少数点演算を要求する高い正確性（正確度）と広い動的範囲の全てを必要とする。
浮動少数点演算の大部分を含み、深層ニューラルネットワークトレーニングで最大時間を占めるテンソル計算（ｔｅｎｓｏｒ  ｃｏｍｐｕｔａｔｉｏｎ）は、加速のための核心基本演算である。
【０００３】
計算性能は、メモリ帯域幅及びレイテンシ（ｌａｔｅｎｃｙ）よりはるかに速くスケーリングされ、そしてオフチップデータ移動は浮動少数点演算より２桁大きいエネルギーを消費するので、テンソル計算のためのコンピューティング中心の加速器は“メモリ壁（ｍｅｍｏｒｙ  ｗａｌｌ）”問題を抱えている。
テンソル計算は、ディープラーニングで幅広いアプリケーションで重要な役割を果たす。
メモリモジュールの内部又はメモリモジュールに隣接する計算能力を有効にするＰＩＭ（Ｐｒｏｃｅｓｓ−ｉｎ−ｍｅｍｏｒｙ）構造は、その大きな内部帯域幅、データ移動の減少、及び大規模なメモリ並列処理（ｐａｒａｌｌｅｌｉｓｍ）のため、テンソル計算を加速する潜在力が立証されている。
【０００４】
しかし、従来のＰＩＭアプローチ法は、減少した正確性を許容するが、複雑な浮動少数点トレーニング作業ができないディープラーニング推論アプリケーションを主に探求する。
ＮＤＰ（Ｎｅａｒ−Ｄａｔａ−Ｐｒｏｃｅｓｓｉｎｇ）構造は、侵入（ｉｎｔｒｕｓｉｖｅ）が少なく、そして複雑なＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）をメモリコアバンクの外部に配置する。
しかし、ＡＬＵの数は、エリアバジェット（ａｒｅａ  ｂｕｄｇｅｔ）のために厳格に制限され、そしてＮＤＰアプローチ法は、またコンピューティング中心の構造と比較して内部帯域幅の相当な量を損失する。
これらの短所は、コンピューティング中心のアプローチ法と比較してＮＰＤ構造を浮動少数点性能で効果が低くなる。
【０００５】
さらに、テンソルプロセッシングの計算上の要求を満足するために、単にＦＰＵ（ｆｌｏａｔｉｎｇ  ｐｏｉｎｔｓ  ｕｎｉｔ）を追加することは、ＤＲＡＭダイ（ｄｉｅ）内における重大な許容できない面積オーバーヘッドを引き起こす。
また、最近作られた不揮発性メモリベースの加速器は、書き込み耐久性（ｅｎｄｕｒａｎｃｅ）が良くなく、書き込みレイテンシが長いので、書込み集中型のディープラーニングトレーニング作業には適していないという問題がある。
また、ＳＲＡＭベースの加速器は、ディープラーニングトレーニングに必要である全てのモデルパラメーターと中間結果を格納するのに充分なオンチップメモリ容量を有しないという問題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１８／００７５３３９号明細書
【特許文献２】米国特許出願公開第２０１８／０３１５１５８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は上記従来のデータフロー加速器における問題点に鑑みてなされたものであって、本発明の目的は、ディープラーニングのためのテンソル計算データフロー加速器半導体回路を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明によるテンソル計算データフロー加速器半導体回路は、メモリバンクと、前記メモリバンクと通信するプロセッシングユニットの周辺アレイと、を有し、前記プロセッシングユニットの周辺アレイは、データ累算のために前記プロセッシングユニットの周辺アレイの中の第１プロセッシングユニットからの部分出力データが前記プロセッシングユニットの周辺アレイの中の他のプロセッシングユニットに入力されるパイプライン方式のデータフローチェーン（ｄａｔａｆｌｏｗ  ｃｈａｉｎ）を形成するように構成されることを特徴とする。
【０００９】
データフロー加速器は、ＤＲＡＭバンク及びＤＲＡＭバンクに隣接するように配置される（乗算・加算）ユニットの周辺アレイを含む。
（乗算・加算）ユニットの周辺アレイは、（乗算・加算）ユニットのアレイの中で１つの（乗算・加算）ユニットからの部分出力データがデータ累算のために（乗算・加算）ユニットのアレイの中で他の（乗算・加算）ユニットに入力されるパイプライン方式のデータフローチェーンを形成するように構成される。
「ＮＤＰ−ＤＦ」（Ｎｅａｒ−ＤＲＡＭ−ｐｒｏｃｅｓｓｉｎｇ  ｄａｔａｆｌｏｗ）加速器ユニットダイは、ベースダイ上に積層される。
ベースダイは、プロセッサ又はコントローラに隣接してパッシブシリコンインターポーザ上に配置される。
「ＮＤＰ−ＤＦ」加速器ユニットは、部分行列出力データを並列に処理する。
部分行列出力データは、順方向又は逆方向に伝播される。
テンソル計算データフロー加速器は、部分行列転置を実行する。
【発明の効果】
【００１０】
本発明に係るテンソル計算データフロー加速器半導体回路によれば、ディープラーニングでＧＥＭＭ及びテンソル計算のためのデータフロー加速器構造に関して、検索で、浮動少数点（スカラ−ベクトル）乗算をＤＲＡＭベースルックアップテーブルでの同時ルックアップ（検索）動作に変形し、すべての周辺ロジック支援をＤＲＡＭコアバンクの外部に追加する。
したがって、全的にＦＰＵを追加することと比較してより小さい面積が消費され、より短いレイテンシが達成される。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係るルックアップテーブルを利用するスカラ浮動少数点（乗算・累算）エンジンを説明するための例示的なブロック図である。
【図２】本発明の一実施形態に係る計算のために全体のルックアップテーブルと関連した入力行列を含むローカルＤＲＡＭバンクを説明するための例示的なブロック図である。
【図３】本発明の一実施形態に係るＧＥＭＭデータフロー加速器の概略構成を例示するブロック図である。
【図４】本発明の一実施形態に係る集積されたスタックデータフロー加速器の概略構成を側面から例示するブロック図である。
【図５】本発明の一実施形態に係る集積されたスタックデータフロー加速器の概略構成を例示するブロック図である。
【図６】本発明の他の実施形態に係る別個のスタックデータフロー加速器の概略構成を側面から例示するブロック図である。
【図７】本発明の他の実施形態に係る別個のスタックデータフロー加速器の概略構成を例示するブロック図である。
【図８】本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器の概略構成を側面から例示するブロック図である。
【図９】本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器の概略構成を例示するブロック図である。
【図１０】本発明の一実施形態に係る浮動少数点（乗算・累算）エンジン及び／又はＧＥＭＭデータフロー加速器と関連して使用され得る単一「ＮＤＰ−ＤＦ」ダイのコンテンツを含む例示的なブロック図である。
【図１１】本発明の一実施形態に係るテンソル計算データフロー加速器と関連して使用される単一「ＮＤＰ−ＤＦ」ダイのコンテンツを含む例示するブロック図である。
【図１２】本発明の一実施形態に係るテンソル計算データフロー加速器の概略構成を例示するブロック図である。
【図１３】ＭＡＣユニットの概略構成を例示するブロック図である。
【図１４】シストリックＭＡＣアレイの高さとシストリックアレイの幅を説明するための例示的なブロック図である。
【図１５】レイヤー間データフィーディング及びタイリング技術を説明するための例示的なブロック図である。
【図１６】本発明の一実施形態に係るテンソル計算データフロー加速器のＰＧのマイクロ構造を示す例示的なブロック図である。
【図１７】本発明の一実施形態に係るテンソル計算データフロー加速器のＰＧのキューブを示す例示的な側面図である。
【図１８】本発明の一実施形態に係るＰＧの多数のボールトを含むテンソル計算データフロー加速器のＰＧのキューブを示す例示的な平面図である。
【図１９】本発明の一実施形態に係るテンソル計算データフロー加速器のベースダイの概略構成を例示するブロック図である。
【図２０】本発明の一実施形態に係るパッシブシリコンインターポーザ、及びその上に配置される複数のキューブを含むテンソル計算データフロー加速器の概略構成を例示するブロック図である。
【図２１】本発明の一実施形態に係るテンソル計算データフロー加速器の概略構成を例示するブロック図である。
【図２２】本発明の一実施形態に係る順方向伝播データレイアウト及びデータフローを説明するための図である。
【図２３】本発明の一実施形態に係る互いに接続された複数のプロセッシンググループを含む計算グループを例示的に示すブロック図である。
【図２４】本発明の一実施形態に係るテンソル計算データフロー加速器の複数のキューブの概略構成を例示するブロック図であり、減少動作がどのように実行されるかを示す図である。
【図２５】本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフローを説明するための図である。
【図２６】本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフローを説明するための図である。
【図２７】本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフローを説明するための図である。
【発明を実施するための形態】
【００１２】
次に、本発明に係るテンソル計算データフロー加速器半導体回路を実施するための形態の具体例を図面を参照しながら説明する。
【００１３】
本発明の実施形態を詳細に例示し、これらの例示は添付した図面を参照する。
以下の詳細な説明で、多様な特定な細部事項が本発明の完全な理解を可能であるようにするために提供する。
しかし、当業者はこのような特定な細部事項無しでも本発明を具現することができることが理解されなければならない。
他の例として、広く公知された方法、手続、構成要素、回路、及びネットワークは実施形態の側面を不必要に曖昧にしないために詳細に説明しない。
第１、第２、等の用語が多様な要素を説明するために本文で使用することがあるが、これらの要素はこのような用語によって限定されないことを理解するべきである。
これらの用語は単なる１つの要素を他のことと区別するためにのみ使用する。
例えば、本発明の範囲から逸脱しなく、第１スタック（ｓｔａｃｋ）は第２スタックで称することができ、そして、類似に、第２スタックは第１スタックで称することができる。
【００１４】
本発明の説明で使用する用語は、単なる特定な実施形態を説明するための目的であり、本発明を制限しようとする意図ではない。
本発明の説明及び添付された請求項で使用したように、脈絡で明確に相違を示さない限り、単数形態は複数の形態も含むこととみなすものとする。
本文で使用する“及び／又は”用語は１つ以上の関連した列挙された項目の任意の、そしてすべての可能な組み合せを示し、含むことがまた理解されるべきである。
“包含する”及び／又は“含む”用語は、本明細書で使用する時、明示された特徴、整数、段階、動作、要素、及び／又は構成要素の存在を明示するが、１つ以上の他の特徴、整数、段階、動作、要素、構成要素、及び／又はそれらのグループの存在又は追加を排除しないことをさらに理解されるべきである。
図面の構成要素及び特徴は、必ずしも一定の比率で示すものではない。
【００１５】
本発明は、ディープラーニングでＧＥＭＭ（ｇｅｎｅｒａｌ  ｍａｔｒｉｘ−ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）及びテンソル計算（ｔｅｎｓｏｒ  ｃｏｍｐｕｔａｔｉｏｎ）のためのデータフロー（ｄａｔａｆｌｏｗ）加速器構造に関する。
開示する実施形態は、浮動少数点（スカラ−ベクトル）乗算をＤＲＡＭベースのルックアップテーブル（ｌｏｏｋｕｐ  ｔａｂｌｅ）での同時（ｃｏｎｃｕｒｒｅｎｔ：並行）ルックアップ（検索）動作に変形し、すべての周辺ロジック支援をＤＲＡＭコアバンクの外部に追加する。
したがって、全的にＦＰＵ（ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｕｎｉｔ）を追加することと比較してより小さい面積が消費され、より短いレイテンシが達成される。
【００１６】
開示する実施形態は、メモリ感知回路の相当な修正を要求する現位置の（ｉｎ−ｓｉｔｕ）アナログＰＩＭユニットよりさらに実用的である。
テーブル検索間ロー活性化回数を減少させるため、周辺ロジックは１つ以上のルックアップテーブルバッファを使用して検索結果をキャッシュし、そして開示されたデータマッピングは一括処理された（ｂａｔｃｈｅｄ）ディープラーニングトレーニング作業で非常に高いバッファヒットレート（ｈｉｔ  ｒａｔｅ）を算出する。
開示されたマッピングは、また、入力テンソルがローカルＤＲＡＭバンクから来ることを保障し、したがって読み出しトラフィック（ｔｒａｆｆｉｃ）のためにバンクそのままの（ｒａｗ）内部帯域幅を完全に利用する。
【００１７】
拡張性及び書き込みトラフィックを向上させるために、シストリック（ｓｙｓｔｏｌｉｃ）アレイデータフロー構造が開示され、これは多数のバンク及びチャンネルに掛けてテンソル計算を調整して、隣接バンク又はチャンネルは「生成者−消費者」（或いは「プロデューサー−コンシューマー」（ｐｒｏｄｕｃｅｒ−ｃｏｎｓｕｍｅｒ））パイプライン方式で動作し、データは最終ステージのみでバンクに書き込まれる（記入される）。
不足なテンソル計算を支援するために、ゼロスキップロジック（ｚｅｒｏ−ｓｋｉｐｐｉｎｇ  ｌｏｇｉｃ）が使用され得る。
【００１８】
本明細書で実施形態は、メモリＬＵＴ（ルックアップテーブル）を利用する乗算器を具現し、ここで乗数（ｍｕｌｔｉｐｌｉｅｒ）はローアドレスとして使用され、被乗数（ｍｕｌｔｉｐｌｉｃａｎｄ）はカラムアドレスとして使用される。
ＬＵＴの幅は、バンク内に含まれ得、ＤＲＡＭサブアレイに効果的に格納及びアクセスすることができる。
電力及び時間を全て消費するＤＲＡＭＬＵＴロー活性化を減少させるため、ＬＵＴバッファをバンク周辺回路に追加することができ、ＧＥＭＭ（ｇｅｎｅｒａｌ  ｍａｔｒｉｘ−ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）タイリング（ｔｉｌｉｎｇ）技術が使用してＬＵＴバッファの検索結果の再使用が増加する。
【００１９】
処理量を向上させるために、検索ベーステンソル外積プロセッシングエンジン（ｐｒｏｃｅｓｓｉｎｇ  ｅｎｇｉｎｅ：ＰＥ）が使用され得る。
各バッファは、幾つのセグメント（ｓｅｇｍｅｎｔ）に分けられ、セグメントの各々は１つの独立的な値ベースの検索を提供する。
累算器（ａｃｃｕｍｕｌａｔｏｒ：或いは累積器）は、時分割（ｔｉｍｅ−ｍｕｌｔｉｐｌｅｘｅｄ）技術で部分和を合算するために（又は集計するために）、バンク周辺に含まれ得る。
部分和のライトバック（ｗｒｉｔｅ−ｂａｃｋ）及び再ロード（ｒｅ−ｌｏａｄ）を回避するために、シストリックデータフロー構造を使用することができ、ここで以前バンクの累算器はそれらの現在部分和を次のバンクの累算（或いは累積）のために伝送し、最後バンクはその結果を他のチャンネルに伝達する（ｒｅｌａｙ）。
【００２０】
３Ｄ積層（ｓｔａｃｋｉｎｇ）でのシリコン貫通電極（Ｔｈｒｏｕｇｈ−ｓｉｌｉｃｏｎ−ｖｉａ：ＴＳＶ）は、チャンネル間の高いデータ伝送帯域幅を提供するのに使用する。
開示したＧＥＭＭブロックマッピング技術は、任意のサイズの入力テンソルを同一のデータフローグループ内すべてのバンクに掛けて分散させる。
入力部分テンソル及びＬＵＴは、全てバンクに対して局部的であるので、テンソルにアクセスする広いバンクインターフェイス（例えば、２５６ビット）を使用することができ、１回のサイクルでＬＵＴの全体ローにアクセスする（ロー−複製）引用（ｒｏｗ−ｃｌｏｎｅ  ｃｉｔａｔｉｏｎ）を使用することができる。
【００２１】
したがって、ＤＲＡＭベースのルックアップテーブルは、隣接メモリデータフロー構造と共に使用することができるので、ディープラーニングで浮動少数点テンソル計算を加速することができ、このようにすることによってコンピューティング中心のアクセス法に比べて帯域幅拡張性長所を増加させる。
メモリ内の検索（Ｌｏｏｋｕｐ−ｉｎ−ｍｅｍｏｒｙ）データフローテンソル計算が支援される。
バンク内部帯域幅を利用する外積ベースＧＥＭＭブロックマッピングは、ロー活性化を減少させ、帯域幅拡張性を増加させる。
開示する実施形態では、豊富なオンチップメモリ容量、対称的な読み出し／書き込み性能を有し、書き込み耐久性問題からフリーな３Ｄ積層ＤＲＡＭベース加速器を含み得る。
【００２２】
３Ｄ積層は、メモリ及び計算の密度を増加させることができ、ダイ間通信の高帯域幅を提供することができる。
浮動少数点乗算器の大部分の面積は、少数乗算器が主に占め、全体少数乗算テーブルは無視できる程度の容量オーバーヘッドに１つのＤＲＡＭバンクに格納され得る。
並列乗算は、並列検索計算に変換することができる。
１つのバンクは、各バンクの横に周辺回路を追加することによって、１つのＰＥに変形されることができるので、検索オーバーヘッドを緩和し、そしてＰＥの性能を増加させることができる。
開示したデータマッピング技術は、すべての読み出しトラフィックが各バンクに対して局部的であることを保証してデータ移動長さを短縮させ、また、バンクレベルの読み出し帯域幅を利用する。
【００２３】
バンクレベルの回路及びマイクロ構造細部事項を本明細書で開示する。
データを再書き込みの前にデータ再使用を増加させるために、シストリックデータフロー構造がチャンネル内の多数のバンクに使用することができ、ここで部分結果は累算のために隣接するバンクに伝播（ｐｒｏｐａｇａｔｅ）させる。
円滑なデータフローを維持し、各バンクの活用を最大化するために、効率的なデータフィーディング（ｆｅｅｄｉｎｇ：供給又は提供とも称される）技術がニューラルネットワーク内部レイヤー間のデータ移動に使用することができる。
さらに一般的なニューラルネットワークトレーニングのために、１つ以上の汎用ＡＬＵが３Ｄスタック（ｓｔａｃｋ）のベースダイ（ｂａｓｅ  ｄｉｅ）上に配置されるので、重要であるが、時間を消費しない配置正規化（ｂａｔｃｈ−ｎｏｒｍａｌｉｚａｔｉｏｎ）、活性化（ａｃｔｉｖａｔｉｏｎ）、及びプーリング（ｐｏｏｌｉｎｇ）のような演算を実現することができる。
【００２４】
ダイ及びスタックレベルの構造も本明細書で開示する。
また、任意のサイズの行列乗算及びコンヴォリューション演算をベクトル外積演算に公式化し（定式化し）、パイプライン並列処理及びデータ並列処理プログラミングを利用してデータマッピングを決定し、計算をスケジューリング（ｓｃｈｅｄｕｌｉｎｇ）するスケーラブル（ｓｃａｌａｂｌｅ）技術を開示する。
また、加速器のための新しい構造及びコントローラ設計を開示する。
コントローラ、計算スケジューリング、全体アプリケーションデータマッピング、及びシステム集積の様相も本明細書で開示する。
【００２５】
図１は、本発明の一実施形態に係るルックアップテーブルを利用するスカラ浮動少数点（乗算・累算）エンジン（ｓｃａｌａｒ  ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｍｕｌｔｉｐｌｙ−ａｎｄ−ａｃｃｕｍｕｌａｔｅ  ｅｎｇｉｎｅ）１００を説明するための例示的なブロック図である。
浮動少数点乗算累算エンジン１００は、ルックアップテーブル１０５、符号ビットロジック１１０、加算器回路１１５、累算器（又は累積器）１２０を含む。
【００２６】
ルックアップテーブル１０５は、矢印１２５で、（（Ａ−少数）１５５ローアドレス）と矢印１３０で、（Ｂ−少数）１５５カラムアドレス）を受信する。
言い換えれば、（Ａ−少数）１５５の値はルックアップテーブル１０５へのローアドレスとして使用され、（Ｂ−少数）１５５の値はルックアップテーブル１０５ヘのカラムアドレスとして使用される。
したがって、通常的に使用される部分積乗算器は、それ以上必要としない。
したがって、ダイ面積の相当な量が節約される。
ルックアップテーブル１０５からの出力１３５は、符号ビットロジック１１０によって決定される（Ａ−符号ビット）１４５及び（Ｂ−符号ビット）１４５と結合される。
符号ビット（例えば、（Ａ−符号ビット）１４５及び（Ｂ−符号ビット）１４５）は、乗算結果の符号を示す。
【００２７】
加算器回路１１５は、（Ａ−少数）及び（Ｂ−少数）と関連した指数（例えば、（Ａ−指数）１５０及び（Ｂ−指数）１５０）を合算する。
乗算演算の積１４０は、累算器１２０によって累算される。
一部の実施形態で、積１４０は、１１ビット値である。
ルックアップテーブル１０５は、ＤＲＡＭベースのルックアップテーブルである。
ＤＲＡＭベースのルックアップテーブル１０５は、ベクトル外積（ｖｅｃｔｏｒ  ｏｕｔｅｒ−ｐｒｏｄｕｃｔ）を具現するのに使用される。
一部の実施形態で、ＤＲＡＭベースのルックアップテーブル１０５のサイズは、１６Ｍｂである。
【００２８】
周辺ロジックは、ＤＲＡＭバンクの外部に含まれ得るので、ＤＲＡＭコアは変更する必要がない。
ＤＲＡＭバンクの外部に、ＭＡＣ（ｍｕｌｔｉｐｌｙ−ａｎｄ−ａｄｄ又はｍｕｌｔｉｐｌｙ−ａｎｄ−ａｃｃｕｍｕｌａｔｅ）ユニットを使用することと比較して、ＤＲＡＭベースルックアップテーブル１０５は、相当の面積及びプロセッシングオーバーヘッドを節約する。
また、ベースロジックダイ上のＮＤＰと比較して、ＤＲＡＭベースのルックアップテーブル１０５は、より高い内部帯域幅（例えば、バンクレベルの帯域幅）、及びより高い計算性能を提供する。
したがって、浮動少数点テンソル乗算は、ルックアップテーブル１０５を利用するＰＩＭ（Ｐｒｏｃｅｓｓ−ｉｎ−Ｍｅｍｏｒｙ）構造で支援される。
【００２９】
図２は、本発明の一実施形態に係る全体のルックアップテーブル１０５と関連した入力行列を含むローカルＤＲＡＭバンク２０２を説明するための例示的なブロック図２００である。
ルックアップテーブル１０５は、２つの整数のすべての可能な組み合わせの乗算結果を含む。
【００３０】
２つの整数は、浮動少数点数の少数部分の長さと同一のビット長さを有する。
（Ａ−エントリ）２２５及び（Ｂ−エントリ）２３０は、ローカルＤＲＡＭバンク（例えば、符号２０２）に格納することができ、そして（Ｃ−エントリ）２２０は、他のＰＥの間で伝播及び累算される。
累算されたチェーン（ｃｈａｉｎ）の最後のＰＥは、ローカルＤＲＡＭバンク（例えば、符号２０２）に再び格納される累算された（Ｃ−エントリ）２２０を惹起する。
（Ａ−エントリ）２２５は、ローカルＤＲＡＭバンク２０２から直接的にストリーミング（ｓｔｒｅａｍｉｎｇ）され得、このようにすることによってＤＲＡＭローバッファ及び高いバンク読み出し帯域幅を利用する。
【００３１】
（Ｂ−エントリ）２３０は、１つ以上の加重値を含み、ローカルＤＲＡＭバンク２０２から全体のルックアップテーブル１０５にアクセスするためのローアドレスとして使用することができる。
後述するように、（Ａ−エントリ）２２５がローカルＤＲＡＭバンク２０２からストリーミングされる間に、全体のルックアップテーブル１０５の結果は、ルックアップテーブルバッファ２３５に臨時的に固定され得る。
【００３２】
図３は、本発明の一実施形態に係るＧＥＭＭデータフロー加速器３００の概略構成を例示するブロック図である。
ＧＥＭＭデータフロー加速器３００は、ローカルＤＲＡＭバンク２０２、複数のルックアップテーブルバッファ（例えば、２３５ａ及び２３５ｂ）を含むルックアップテーブルバッファ区域３３５を含む。
ＧＥＭＭデータフロー加速器３００は、Ｂベクトルバッファ３０５及びＡベクトルバッファ３１０をさらに含む。
ＧＥＭＭデータフロー加速器３００は、１つ以上の加算器（例えば、３１５ａ及び３１５ｂ）をさらに含む。
ＧＥＭＭデータフロー加速器３００は、出力バッファ３２０をさらに含む。
【００３３】
ＧＥＭＭデータフロー加速器３００は、１つ以上の外積演算を実行する。
図３において、丸数字１（数字“１”を○で囲んだもの、以下同様）によって表示された第１番目の段階で、ＢベクトルはローカルＤＲＡＭバンク２０２から読み出され、Ｂベクトルバッファ３０５に格納される。
丸数字２で、Ｂベクトルは、ＤＲＡＭロー複製動作（ｃｌｏｎｅ  ｏｐｅｒａｔｉｏｎ）でルックアップテーブルバッファ２３５ａに格納される。
丸数字３によって表示された第３番目の段階で、ＡベクトルはローカルＤＲＡＭバンク２０２から読み出され、Ａベクトルバッファ３１０に格納される。
丸数字４で、Ａベクトルは、１つ以上のルックアップテーブルバッファ（例えば、２３５ａ及び２３５ｂ）にストリーミングされ、積（例えば、図１の符号１４０）は、ＤＲＡＭバンク２０２のルックアップテーブル（例えば、図１の符号１０５）と関連したＡベクトル及びＢベクトル情報に基づいて決定される。
【００３４】
言い換えれば、ルックアップテーブルバッファ（２３５ａ及び２３５ｂ）は、乗算動作を実行しないで、積を決定する。
丸数字５で、加算演算が積に対して実行される（例えば、図１の符号１４０）。
加算演算の結果３４０は、出力バッファ３２０に格納される。
言い換えれば、積は他の積に加えられ、合わせた積は累算される。
丸数字６で、出力バッファ３２０は、結果３４０をルックアップテーブルアレイ３２５及び／又はデータアレイ３３０に伝送する。
【００３５】
段階（丸数字１、丸数字２、及び丸数字３）は、バンクレベルの高帯域幅を活用することができる。
段階（丸数字３、丸数字４、丸数字５、及び丸数字６）で、図に示した段階は、複数回、そして段階（丸数字１及び丸数字１）より複数回繰り返され得る。
これは、ルックアップテーブルバッファ区域３３５に提供される複数のルックアップテーブルバッファ（例えば、２３５ａ及び２３５ｂ）に対する高いバッファヒットレート（ｂｕｆｆｅｒ  ｈｉｔ  ｒａｔｅ）が存在するためである。
したがって、ルックアップテーブルバッファ区域３３５で複数のルックアップテーブルバッファ（例えば、２３５ａ及び２３５ｂ）を提供することによって、ＤＲＡＭバンク２０２に格納された全体のルックアップテーブル（例えば、１０５）の性能は、相当に大きく増加する。
例えば、８、１６、３２、６４、１２８、２５６個、又はさらに多いルックアップテーブルバッファを使用することができる。
【００３６】
図４は、本発明の一実施形態に係る集積されたスタックデータフロー加速器４００の概略構成を側面から例示するブロック図である。
集積されたスタックデータフロー加速器４００は、「ＮＤＰ−ＤＦ」（ｎｅａｒ−ＤＲＡＭ−ｐｒｏｃｅｓｓｉｎｇ  ｄａｔａｆｌｏｗ）加速器ユニット４１０の複数のレイヤー４０５を含む。
【００３７】
４つの「ＮＤＰ−ＤＦ」加速器ユニット４１０を図４で示すが、任意の適切な数の「ＮＤＰ−ＤＦ」加速器ユニット４１０が順次に（１つが他の１つの上に）積層することができることが理解されるべきである。
「ＮＤＰ−ＤＦ」加速器ユニット４１０は、垂直方向に順次に積層される。
「ＮＤＰ−ＤＦ」加速器ユニット４１０は、ベースダイ４１５上に積層される。
ベースダイ４１５は、コントローラ、バッファ、プロセッシングロジック等を含み得る。
ベースダイ４１５は、パッシブシリコンインターポーザ４２０（ｐａｓｓｉｖｅ  ｓｉｌｉｃｏｎ  ｉｎｔｅｒｐｏｓｅｒ）上に積層することができる。
プロセッサ４２５（例えば、ｘＰＵ）は、ベースダイ４１５に隣接してパッシブシリコンインターポーザ４２０上に積層され得る。
プロセッサは、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、ＧＰＵ（ｇｒａｐｈｉｃａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、又は他の適切なプロセッサである。
【００３８】
計算は、矢印線４３０で示すように、プロセッサ４２５で「ＮＤＰ−ＤＦ」加速器ユニット４１０のスタック４０５及びベースダイ４１５にオフロード（ｏｆｆｌｏａｄ）される。
ＴＳＶ（Ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）４３５は、１つ以上の「ＮＤＰ−ＤＦ」加速器ユニット４１０を貫通して配置される。
ＴＳＶ４３５は、「ＮＤＰ−ＤＦ」加速器ユニット４１０とベースダイ４１５を相互接続する。
その代わりに、又は追加に、ＴＳＶ４３５は、ベースダイ４１５とプロセッサ４２５を相互接続することができる。
ＴＳＶ４３５は、パッシブシリコンインターポーザ４２０を経由してベースダイ４１５とプロセッサ４２５を相互接続することができる。
【００３９】
図５は、本発明の一実施形態に係る集積されたスタックデータフロー加速器４００の概略構成を例示するブロック図である。
集積されたスタックデータフロー加速器４００は、「ＮＤＰ−ＤＦ」加速器ユニット４１０の複数のスタック４０５を含む。
「ＮＤＰ−ＤＦ」加速器ユニット４１０のスタックの各々は、パッシブシリコンインターポーザ４２０を経由してプロセッサ４２５と通信するように接続される。
ホスト５００は、通信リンク５０５を経由して集積されたスタックデータフロー加速器４００と通信するように接続される。
通信リンク５０５は、有線リンク、無線リンク、カード、ポート等であってもよい。
【００４０】
図６は、本発明の一実施形態に係る別個の（ｄｉｓｃｒｅｔｅ）スタックデータフロー加速器６００の概略構成を側面から例示するブロック図である。
別個のスタックデータフロー加速器６００は、「ＮＤＰ−ＤＦ」加速器ユニット４１０の複数のレイヤー４０５を含む。
４つの「ＮＤＰ−ＤＦ」加速器ユニット４１０を図６で示すが、任意の適切な数の「ＮＤＰ−ＤＦ」加速器ユニット４１０が順次に積層され得ることが理解されるべきである。
【００４１】
「ＮＤＰ−ＤＦ」加速器ユニット４１０は、垂直方向に順次に積層される。
「ＮＤＰ−ＤＦ」加速器ユニット４１０は、ベースダイ６１５上に積層される。
ベースダイ６１５は、コントローラ、バッファ、プロセッシングロジック等を含み得る。
ベースダイ６１５は、パッシブシリコンインターポーザ６２０上に積層され得る。
コントローラ６２５は、ベースダイ６１５に隣接してパッシブシリコンインターポーザ６２０上に積層される。
ＴＳＶ（Ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）４３５は、１つ以上の「ＮＤＰ−ＤＦ」加速器ユニット４１０を貫通して配置される。
ＴＳＶ４３５は、「ＮＤＰ−ＤＦ」加速器ユニット４１０とベースダイ６１５を相互接続する。
その代わりに、又は追加に、ＴＳＶ４３５は、ベースダイ６１５とコントローラ６２５を相互接続することができる。
ＴＳＶ４３５は、パッシブシリコンインターポーザ６２０を経由してベースダイ６１５とコントローラ６２５を相互接続する。
【００４２】
図７は、本発明の他の実施形態に係るスタックデータフロー加速器６００の概略構成を例示するブロック図である。
別個のスタックデータフロー加速器６００は、「ＮＤＰ−ＤＦ」加速器ユニット４１０の複数のスタック４０５を含む。
「ＮＤＰ−ＤＦ」加速器ユニット４１０のスタックの各々は、パッシブシリコンインターポーザ６２０を経由してコントローラ６２５と通信するように接続される。
ホスト７００は、通信リンク７０５を経由して別個のスタックデータフロー加速器６００と通信するように接続される。
通信リンク７０５は、有線リンク、無線リンク、カード、ポート等であってもよい。
計算は、矢印線７３０で示すように、ホスト７００で別個のスタックデータフロー加速器６００にオフロードされる。
【００４３】
図８は、本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器８００の概略構成を側面から例示するブロック図である。
別個のスタックデータフロー加速器８００は、「ＮＤＰ−ＤＦ」加速器ユニット４１０の複数のレイヤー４０５を含む。
【００４４】
スタック４０５当たり４つの「ＮＤＰ−ＤＦ」加速器ユニット４１０を図８で示すが、任意の適切な数の「ＮＤＰ−ＤＦ」加速器ユニット４１０が順次に積層され得ることが理解されるべきである。
「ＮＤＰ−ＤＦ」加速器ユニット４１０は、垂直方向に順次に積層される。
各スタック４０５で、「ＮＤＰ−ＤＦ」加速器ユニット４１０は、該当ベースダイ（例えば、８１５）上に積層される。
各ベースダイ８１５は、コントローラ、バッファ、プロセッシングロジック等を含み得る。
各ベースダイ８１５は、パッシブシリコンインターポーザ８２０上に積層される。
コントローラ６２５は、ベースダイ８１５の中の１つに隣接してパッシブシリコンインターポーザ８２０上に積層される。
【００４５】
ＴＳＶ４３５は、１つ以上の「ＮＤＰ−ＤＦ」加速器ユニット４１０を貫通して配置される。
ＴＳＶ４３５は、「ＮＤＰ−ＤＦ」加速器ユニット４１０と該当ベースダイ８１５を相互接続する。
その代わりに、又は追加に、ＴＳＶ４３５は、各ベースダイ８１５とコントローラ８２５を相互接続することができる。
ＴＳＶ４３５は、パッシブシリコンインターポーザ８２５を経由して各ベースダイ８１５とコントローラ８２５を相互接続する。
１つ以上のスイッチ８５０は、１つ以上のベースダイ８１５に隣接してパッシブシリコンインターポーザ８２０上に配置される。
一部の実施形態で、コントローラ８２５は、また、スイッチを含む。
【００４６】
図９は、本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器８００の概略構成を例示するブロック図である。
別個のスタックデータフロー加速器８００は、「ＮＤＰ−ＤＦ」加速器ユニット４１０の複数のスタック４０５を含む。
一部の実施形態で、「ＮＤＰ−ＤＦ」加速器ユニット４１０の１２個のスタック４０５がある。
一部の実施形態で、コントローラ／スイッチ８２５から離れた４つのスイッチ８５０がある。
各スイッチ８５０は、「ＮＤＰ−ＤＦ」加速器ユニット４１０の４つのスタック４０５と通信するように接続される。
【００４７】
「ＮＤＰ−ＤＦ」加速器ユニット４１０のスタックの各々は、スイッチ８５０及び／又はパッシブシリコンインターポーザ８２０を経由してコントローラ８２５と通信するように接続される。
一部の実施形態で、コントローラ／スイッチ８２５は、その両側に「ＮＤＰ−ＤＦ」加速器ユニット４１０の６個のスタック４０５、そして両側に２つのスイッチ８５０を有するパッシブシリコンインターポーザ８２０の中心領域に配置される。
ホスト９００は、通信リンク９０５を経由して別個のスタックデータフロー加速器８００と通信するように接続される。
通信リンク９０５は、有線リンク、無線リンク、カード、ポート等であってもよい。
計算は、矢印線９３０で示すようにホスト９００で別個のスタックデータフロー加速器８００にオフロードされる。
【００４８】
図１０は、本発明の一実施形態に係る浮動少数点（乗算・累算）エンジン１００及び／又はＧＥＭＭデータフロー加速器３００と関連して使用され得る単一「ＮＤＰ−ＤＦ」ダイ４１０のコンテンツ（ｃｏｎｔｅｎｔｓ）を含む例示的なブロック図１０００である。
「ＮＤＰ−ＤＦ」ダイ４１０は、複数のチャンネル（例えば、ＣＨ０、ＣＨ１）を含む。
チャンネル（例えば、ＣＨ０、ＣＨ１）の各々は、複数のスマートバンクユニット（例えば、Ｂ０、Ｂ１、…、Ｂ１５）を含む。
チャンネル（例えば、ＣＨ０、ＣＨ１）は、矢印線１００５によって互いに接続される。
例えば、チャンネルＣＨ０のスマートバンクユニットＢ１２の出力は、チャンネルＨ１のスマートバンクユニットＢ０の入力に接続される。
【００４９】
ＴＳＶ４３５は、（例えば、図４〜図９で示したように）チャンネル（例えば、ＣＨ０、ＣＨ１）を他の「ＮＤＰ−ＤＦ」ダイ４１０の他のチャンネルに接続することができる。
各チャンネル（例えば、ＣＨ１）内の矢印線１０１０は、チャンネルのスマートバンクユニットの各々を通じたシストリックデータフロー方向を示す。
言い換えれば、シストリックデータフローは、スマートバンクユニットＢ０で始め、その次のスマートバンクユニットＢ３に移動（ｔｒａｖｅｌ）し、その次の方向を変え、スマートバンクユニットＢ７からスマートバンクユニットＢ４に反対方向に移動し、その次の方向を再び変え、このような蛇行（又はＳ字形：ｓｅｒｐｅｎｔｉｎｅ）方式にスマートバンクユニットの各々を通じて移動する。
【００５０】
各チャンネル（例えば、ＣＨ１）内の点線矢印線１０１５は、バンクデータＩ／Ｏ経路を示す。
したがって、バンクデータＩ／Ｏ経路は、スマートバンクユニットを通じた蛇行データフローを横切っていく。
スマートバンクユニットの各々は（例えば、Ｂ０）、ＤＲＡＭバンク（例えば、図３の符号２０２）を含み得る。
ＤＲＡＭバンクの各々は（例えば、２０２）、全体のルックアップテーブル（例えば、図１の符号１０５）を含み得る。
ＲＡＭバンクの各々は（例えば、２０２）、複数のルックアップテーブルバッファ（例えば、２３５ａ、２３５ｂ）、複数の加算器（例えば、３１５ａ、３１５ｂ）、及び出力バッファ（例えば、３２０）と関連する。
【００５１】
ルックアップテーブルバッファ（例えば、２３５ａ、２３５ｂ）は、前述した、又は後述するように、全体のルックアップテーブル１０５の部分を臨時的に格納することができる。
一部の実施形態で、すべての読み出し動作は、各ＤＲＡＭバンク（例えば、２０２）に対して局部的であり、そしてすべての書き込み動作は、次のＤＲＡＭバンクに伝播される。
ルックアップテーブルバッファ（例えば、２３５ａ、２３５ｂ）、加算器（例えば、３１５ａ、３１５ｂ）、及び出力バッファ（例えば、３２０）は、ＤＲＡＭバンクの各々（例えば、２０２）に対して周辺ロジック、装置、回路等であり、そして隣接するバンクを接続することができる。
【００５２】
マルチプレクサー（ｍｕｌｔｉｐｌｅｘｏｒ：図示せず）及びデマルチプレクサー（ｄｅ−ｍｕｌｔｉｐｌｅｘｏｒ：図示せず）のような他の周辺ロジックもまた含まれ得る。
出力バッファからの出力は、隣接バンクに入力（或いは、フィード（ｆｅｅｄ））される。
例えば、１つのバンクの出力バッファからの出力は、隣接バンクの加算器に入力される。
並列処理は、空間的にそして一時的に達成され得る。
言い換えれば、複数の臨時のプロセッシングサイクルの中で与えられたプロセッシングサイクルのために、行列データは複数のバンクによって並列に（或いは同時に）処理され得る。
各新しいプロセッシングサイクルは、複数の異なるバンクによって並列に処理される行列データを有することができる。
したがって、本発明の一実施形態に係るＧＥＭＭデータフロー加速器の性能は増加する。
【００５３】
図１１は、後述するテンソル計算データフロー加速器と関連して使用される単一「ＮＤＰ−ＤＦ」ダイ４１０のコンテンツを含む例示的なブロック図１１００である。
「ＮＤＰ−ＤＦ」ダイ４１０は、複数のチャンネル（例えば、ＣＨ０、ＣＨ１）を含む。
チャンネル（例えば、ＣＨ０、ＣＨ１）の各々は、複数のスマートバンクユニット（例えば、Ｂ０、Ｂ１、…、Ｂ１５）を含む。
チャンネル（例えば、ＣＨ０、ＣＨ１）は、矢印線１００５によって互いに接続される。
例えば、チャンネルＣＨ０のスマートバンクユニットＢ１２の出力は、チャンネルＣＨ１のスマートバンクユニットＢ０の入力に接続される。
【００５４】
ＴＳＶ４３５は、チャンネル（例えば、ＣＨ０、ＣＨ１）を他の「ＮＤＰ−ＤＦ」ダイ４１０（例えば、図４〜図９で示したように）の他のチャンネルに接続することができる。
各チャンネル（例えば、ＣＨ１）内の実線矢印線１０１０は、チャンネルのスマートバンクユニットの各々を通じたシストリックデータフロー方向を示す。
言い換えれば、シストリックデータフローは、スマートバンクユニットＢ０で始めて、その次のスマートバンクユニットＢ３に移動し、その次に方向を変え、スマートバンクユニットＢ７からスマートバンクユニットＢ４に反対方向に移動し、その次の方向を再び変え、このような蛇行方式でスマートバンクユニットの各々を通じて移動することができる。
各チャンネル（例えば、ＣＨ１）内の点線矢印線１０１５は、バンクデータＩ／Ｏ経路を示す。
したがって、バンクデータＩ／Ｏ経路は、スマートバンクユニットを通じた蛇行データフローを横切っていく。
【００５５】
スマートバンクユニット（例えば、Ｂ０）の各々は、ＤＲＡＭバンク（例えば、図３の符号２０２）を含む。
ＤＲＡＭバンクの各々は（例えば、２０２）、入力バッファ（例えば、１１０５）、シストリック乗算及び累算（ＭＡＣ）アレイ１１１０、及び出力バッファ（例えば、３２０）と関連する。
一部の実施形態で、すべての読み出し動作は、各ＤＲＡＭバンク（例えば、２０２）に対して局部的であり、そしてすべての書き込み動作は、次のＤＲＡＭバンクに伝播される。
入力バッファ（例えば、１１０５）、ＭＡＣアレイ（例えば、１１１０）、及び出力バッファ（例えば、３２０）は、ＤＲＡＭバンク（例えば、２０２）の各々に対して周辺ロジック、装置、回路等であり、そして隣接するバンクを接続する。
【００５６】
マルチプレクサー（図示せず）及びデマルチプレクサー（図示せず）のような他の周辺ロジックもまた含まれ得る。
出力バッファからの出力は、隣接バンクに入力される。
例えば、１つのバンクの出力バッファからの出力は、隣接バンクのシストリックＭＡＣアレイに入力される。
並列処理は、空間的に、そして一時的に達成され得る。
言い換えれば、複数の臨時のプロセッシングサイクルの中で与えられたプロセッシングサイクルのために、行列データは、複数のバンクによって並列に（同時に）処理される。
各新しいプロセッシングサイクルは、複数の異なるバンクによって並列に処理される行列データを有する。
したがって、本発明の実施形態よるテンソル計算データフロー加速器の性能は、増加する。
【００５７】
図１２は、本発明の一実施形態に係るテンソル計算データフロー加速器１２００の概略構成を例示するブロック図であり、図１３は、ＭＡＣユニット１２１０の概略構成を例示するブロック図１３００である。
以下では、図１２及び図１３を参照して説明する。
【００５８】
テンソル計算データフロー加速器１２００は、ローカルＤＲＡＭバンク２０２、１つ以上の入力バッファ（例えば、１１０５）、シストリックＭＡＣアレイ１１１０、及び出力バッファ３２０を含む。
シストリックＭＡＣアレイ１１１０は、複数のＰＥ（例えば、１２１５）を含む。
一部の実施形態で、入力バッファ１１０５は、ダブルバッファ１２０５を形成する。
各ＰＥ１２１５は、入力バッファ１２２０、ＭＡＣユニット１２１０、加重値バッファ１２２５、及び部分和バッファ１２３０を含む。
ＰＥ１２１５内の垂直点線１２３５は、データの入力方向を示す。
ＰＥ１２１５内の水平の実線矢印１２４０は、データの部分和方向を示す。
【００５９】
加重値バッファ１２２５は、加重値をＭＡＣユニット１２１０に入力する。
ＭＡＣユニット１２１０は、図１３で示すように乗算器回路１３０５及び加算器回路１３１０を含む。
テンソル計算データフロー加速器１２００は、１つのＰＥからの入力とシストリックＭＡＣアレイ１１１０内の次のＰＥヘの部分結果を利用してスカラベクトル乗算演算を実行する。
後述するように、加重値は、乗算及び累算演算を実行するための準備として、各ＰＥ（例えば、１２１５）のローカル書込みバッファ１２２５に事前に決定及び格納され得る。
【００６０】
図１４は、シストリックＭＡＣアレイ１１１０の高さ１４０５とシストリックＭＡＣアレイ１１１０の幅１４１０を説明するための例示的なブロック図である。
シストリックＭＡＣアレイ１１１０は、任意の適切な数のＰＥ１２１５、任意の適切な高さ１４０５、及び任意の適切な幅１４１０を有する。
【００６１】
図１５は、レイヤー間データフィーディング及びタイリング技術を説明するための例示的なブロック図２０００である。
技術は、バンクの複数のレイヤー（例えば、レイヤー１及びレイヤー２）を含む。
レイヤーの各々は、複数のバンク（例えば、バンク１〜バンクＮ）を含む。
第１入力テンソルは、符号２００５で提供される。
第１加重値テンソルは、符号２０１０で提供される。
第２入力テンソルは、符号２０１５で提供される。
第２加重値テンソルは、符号２０２０で提供される。
【００６２】
入力テンソル（例えば、Ｔ１〜ＴＮ）の第１タイリンググループ２０２５は、レイヤー１の複数のバンク（例えば、バンク１〜バンクＮ）と関連する。
加重値テンソル（例えば、Ｗ１〜ＷＮ）の第２タイリンググループ２０３０は、レイヤー１の複数のバンク（例えば、バンク１〜バンクＮ）と関連する。
入力テンソル（例えば、Ｔ１〜ＴＭ）の第３タイリンググループ２０３５は、レイヤー２の複数のバンク（例えば、バンク１〜バンクＮ）と関連する。
加重値テンソル（例えば、Ｗ１〜ＷＭ）の第４タイリンググループ２０４０は、レイヤー２の複数のバンク（例えば、バンク１〜バンクＮ）と関連する。
データフィード２０４５は、レイヤー１バンクと第３タイリンググループ２０３５との間に提供される。
【００６３】
図１６は、本発明の一実施形態に係るテンソル計算データフロー加速器のプロセッシンググループ２１０５（ｐｒｏｃｅｓｓｉｎｇ  ｇｒｏｕｐ：ＰＧ）のマイクロ構造を示す例示的なブロック図である。
ＰＧ２１０５は、複数のＰＥ（例えば、ＰＥ［１］〜ＰＥ［８］）を含む。
ＰＥは互いに接続され、共有されたデータバス２１１０を経由してＴＳＶ２１１５に接続される。
ＰＧ２１０５は、ＴＳＶ２２１５とＴＳＶ２１２０を経由してスイッチ２１３０に接続される。
コントローラ２１２５は、スイッチ２１３０及び／又はＰＧ２１０５と通信するように接続され、スイッチ２１３０及び／又はＰＧ２１０５を制御する。
【００６４】
図１７は、本発明の一実施形態に係る複数のＰＧ（例えば、ＰＧ［１］〜ＰＧ［８］）が複数のスタック（例えば、２２１０及び２２１５）で順次に積層されてＰＧのキューブ（ｃｕｂｅ）を形成するテンソル計算データフロー加速器のＰＧのキューブ２２０５を示す例示的な側面図である。
ＴＳＶ２１４０は、各スタックのＰＧを相互接続する。
【００６５】
図１８は、ＰＧの複数のボールト（ｖａｕｌｔｓ；例えば、Ｖａｕｌｔ［１］〜Ｖａｕｌｔ［８］）を含むテンソル計算データフロー加速器のＰＧのキューブ２２０５を示す例示的な平面図である。
例えば、ボールトは、ＰＧの垂直のグルーピング（ｇｒｏｕｐｉｎｇ）を含む。
【００６６】
図１９は、本発明の一実施形態に係るテンソル計算データフロー加速器のベースダイ２４０５の概略構成を例示するブロック図である。
ベースダイ２４０５は、ネットワークインターフェイス２４１０及びプログラマブルコア２４１５を含む。
ベースダイ２４０５は、複数のボールト周辺ロジック、装置、又は回路２４２０をさらに含む。
【００６７】
各ボールト周辺２４２０は、バッファ２４２５、１つ以上のＡＬＵ２４３０、スイッチ２１３０、コントローラ２１２５、及び／又は１つ以上のＴＳＶ２１２０を含む。
ボールト周辺の各々は（例えば、２４２０）、該当ボールト（例えば、図１８のＶａｕｌｔ［１］）と関連し、支援するバッファーリング、プロセッシング、及びスイッチングサービスを該当ボールトに提供する。
【００６８】
図２０は、パッシブシリコンインターポーザ２５０５、及びその上に配置される複数のキューブ（例えば、２２０５）を含むテンソル計算データフロー加速器２５００の概略構成を例示するブロック図である。
キューブ（例えば、２２０５）は、交差する（又は十字形）（ｃｒｉｓｓｃｒｏｓｓｉｎｇ）矢印によって図に示すように、互いに通信することができる。
【００６９】
図２１は、本発明の一実施形態に係るテンソル計算データフロー加速器２６００の概略構成を例示するブロック図である。
テンソル計算データフロー加速器２６００は、ＤＲＡＭバンク２６０５、データバッファ２６１０、第１被乗数バッファ２６１５、マルチプレクサーのような選択器２６２０、入力ＦＩＦＯ（ｆｉｒｓｔ−ｉｎ−ｆｉｒｓｔ−ｏｕｔ）２６２５、第２被乗数バッファ２６３０、複数のＭＡＣ（例えば、２６３５）、及び出力ＦＩＦＯ２６４０を含む。
【００７０】
テンソル計算データフロー加速器２６００は、１つ以上の計算マッピング演算（動作）を実行する。
図２１において、丸数字１によって表示された第１番目の段階で、Ａ−ベクトルは、ローカルＤＲＡＭバンク２６０５から読み出され、データバッファ２６１０に格納される。
丸数字２で、Ａ−ベクトルは、被乗数バッファ２６３０にコピー及び格納される。
丸数字３によって表示された第３番目の段階で、Ｂ−ベクトルは、ローカルＤＲＡＭバンク２６０５から読み出され、データバッファ２６１０に格納される。
丸数字４で、Ｂ−ベクトルは、被乗数バッファ２６１５にコピー及び格納される。
【００７１】
丸数字５で、（スカラ−ベクトル）乗算は、与えられたＰＥから来る入力、そして次のＰＥに伝達される部分結果を用いて、ＭＡＣ（例えば、２６３５）を用いて数回実行される。
垂直点線（例えば、２６５０）は、マルチプレクサー２６２０を経由して被乗数バッファ２６１５から受信される行列データの入力方向を示す。
垂直実線（例えば、２６５５）は、部分和がＭＡＣ（例えば、２６３５）にわたって伝播され、累算されることに対応した部分和のフロー方向を示す。
ＭＡＣ２６３５のアレイは、任意の適切な高さ及び幅を有することができることが理解される。
【００７２】
図２２は、本発明の一実施形態に係る順方向（ｆｏｒｗａｒｄ）伝播データレイアウト及びデータフロー２７００を説明するための図である。
データレイアウト及びデータフロー２７００は、出力行列２７０５を含む。
出力行列２７０５は、例示的な部分ベクトル２７１０及び部分ベクトル２７１５、関連する外積演算２７２０を図に示す。
【００７３】
複数のＰＧ（ＰＧ［１］、ＰＧ［２］等）を含み得る入力行列２７２５を図に示す。
ＰＧの各々は、複数のＰＥ（ＰＥ［１］、ＰＥ［２］等）を含み得る。
加重値行列２７３０もまた図に示す。
加重値行列２７３０は、複数のＰＧ（ＰＧ［１］、ＰＧ［２］等）を含み得る。
加重値行列２７３０は、各々が複数のＰＧを含む１つ以上の計算グループ（例えば、ＣＧ［１］）を含む。
ＰＧの各々は、複数のＰＥ（ＰＥ［１］、ＰＥ［２］等）を含み得る。
【００７４】
一部の実施形態で、ＰＧ当たり８個のＰＥがある。
演算の出力順序２７３５を図に示す。
例えば、外積演算２７２０からの出力は、出力行列２７０５を通じて蛇行的に伝播する。
ＣＧが、最終結果のタイル（例えば、ボックス２７４０）を生成した以後に、最終結果のタイルは、最終減少（ｆｉｎａｌ  ｒｅｄｕｃｔｉｏｎ）のためにベースダイ（例えば、図１９の２４０５）にストリーミングされる。
すべての部分結果が同一のチャンネルで減少された以後に、後述するように、部分結果はチャンネル間で組み合わせることができる。
【００７５】
図２３は、本発明の一実施形態に係る互いに接続された複数のプロセッシンググループ（例えば、ＰＧ［１］、ＰＧ［２］）を含む計算グループ（例えば、ＣＧ［１］）を例示的に示すブロック図である。
例えば、各ＰＧは、複数のＰＥ（ＰＥ［１］〜ＰＥ［８］）を含む。
１つのＰＧ（例えば、ＰＧ［１］）から１つのＰＥ（例えば、ＰＥ［８］）の出力は、他のＰＧ（例えば、ＰＧ［２］）の他のＰＥ（例えば、ＰＥ［１］）の入力に入力（提供）することができる。
したがって、行列データは、処理及び累算される。
【００７６】
図２４は、本発明の一実施形態に係るテンソル計算データフロー加速器（例えば、図２１の符号２６００）の複数のキューブ（例えば、ＣＵＢＥ［１］、ＣＵＢＥ［２］）の概略構成を例示するブロック図であり、減少動作がどのように実行されるかを示す図である。
各キューブ（例えば、ＣＵＢＥ［１］、ＣＵＢＥ［２］）は、複数の計算グループ（例えば、ＣＧ［１］、ＣＧ［２］等）を含む。
【００７７】
各計算グループは、行列データをボールト（例えば、Ｖａｕｌｔ［１］、Ｖａｕｌｔ［２］等）に入力して、図２４にて丸数字１で示すように、行列データが該当ボールトヘの減少動作で減少する。
丸数字２で、行列データは、１つのボールト（例えば、Ｖａｕｌｔ［１］）が他のボールト（例えば、Ｖａｕｌｔ［２］）に統合され、減少する。
丸数字３で、行列データは、キューブ交差（ｃｒｏｓｓ−ｃｕｂｅ）累算動作でＣＵＢＥ［２］からのボールト（例えば、Ｖａｕｌｔ［４］）に統合され、減少する。
これは「Ｏ」（ｌｏｇ２（ｎｕｍｂｅｒＣＧ））減少ラウンド（ｒｏｕｎｄ）の最大レイテンシを有し、プロセスは、最終結果が漸進的に生成されるにしたがって出力タイルの最終結果と共に完全にパイプライン化されるので、性能オーバーヘッドは最小であり、実質的に無視することができる。
【００７８】
図２５〜図２７は、本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフロー３０００を説明するための図である。
逆方向伝播データレイアウト及びデータフロー３０００は、複数の入力データＤＲＡＭバンク（例えば、入力データバンク［１］、入力データバンク［２］等）を含む。
【００７９】
逆方向伝播データレイアウト及びデータフロー３０００は、出力データバンク３０１５をさらに含む。
逆方向伝播データレイアウト及びデータフロー３０００は、複数のＰＧ（例えば、ＰＧ［１］及びＰＧ［２］）をさらに含み、各ＰＧは、複数のＰＥ（例えば、ＰＥ［１］、ＰＥ［２］等）を含む。
点線矢印線３００５は、部分結果累算を示し、そして実線矢印線３０１０は、入力データブロードキャスティング（ｂｒｏａｄｃａｓｔｉｎｇ）を示す。
言い換えれば、入力行列データは、入力データバンク（例えば、入力データバンク［１］、入力データバンク［２］等）から実線矢印線３０１０を経由して受信され、ＰＥ（例えば、ＰＥ［１］、ＰＥ［２］等）に提供される。
ＰＥは、入力行列データを用いることができるので、乗算及び加算演算を実行することができ、その次の部分結果は、点線矢印線３００５に沿って累算される。
【００８０】
以下に示す数式１は、本発明の一実施形態に係る順方向データレイアウトソフトウェア分割技術の擬似コード例示である。
【数１】
2020091861.tif 000003
【００８１】
以下に示す数式２は、本発明の一実施形態に係る逆方向データレイアウトの擬似コード例示である。
【数２】
2020091861.tif 000004
【００８２】
以下に示す数式３は、本発明の一実施形態に係る順方向計算スケジューリングソフトウェアスケジューリング技術の擬似コード例示である。
【数３】
2020091861.tif 000005
【００８３】
以下に示す数式１は、本発明の一実施形態に係る逆方向計算スケジューリングの擬似コード例示である。
【数４】
2020091861.tif 000006
【００８４】
並列処理は、空間的に、そして一時的に達成される。
言い換えれば、複数の臨時のプロセッシングサイクルの中で与えられたプロセッシングサイクルのために、行列データは複数のバンクによって並列に（同時に）処理される。
各新しいプロセッシングサイクルは、複数の異なるバンクによって並列に処理される行列データを有する。
したがって、本発明の実施形態によるテンソル計算データフロー加速器の性能は、増加する。
したがって、計算ロジックは、各ＤＲＡＭバンクの周辺に追加することができ、普通パッシブ構成要素でスマートプロセッシングエンジンに転換する。
【００８５】
各ボールトでベースロジックダイのコントローラは、データアクセス及び計算スケジューリングを制御する。
主計算資源（例えば、ＭＡＣアレイ）は、ＤＲＡＭバンクに対して周辺サイドロジック（ｐｅｒｉｐｈｅｒａｌ  ｓｉｄｅ  ｌｏｇｉｃ）としてＤＲＡＭダイ上に配置される。
ＰＥを用いるシストリックＭＡＣアレイは、処理及び累算される行列データを引き起こす。
転置（ｔｒａｎｓｐｏｓｅ）エンジンは、逆方向経路に用いることができる。
計算ロジック（例えば、ＭＡＣアレイ）は、ＤＲＡＭバンクに隣接するので、メモリは分散され、そして逆方向に適切なメモリレイアウト及び部分転置レイアウトが可能になる。
３Ｄ積層ＤＲＡＭ技術は、並列処理を向上させるのに使用される。
【００８６】
本発明の一実施形態は、メモリ制約的（ｍｅｍｏｒｙ−ｂｏｕｎｄ）であり、計算集約的（ｃｏｍｐｕｔｅ−ｉｎｔｅｎｓｉｖｅ）であるカーネルを対象とした強い計算能力を有する。
したがって、ＭＡＣアレイ及び関連した構成要素は、例えばＧＰＵ計算区域から分離され、ＤＲＡＭバンク横に集積された計算ロジックを有するＰＩＭ３Ｄ積層構造内に埋め込まれる（ｅｍｂｅｄｄｅｄ）。
行列乗算及び他のプロセッシングは、ＤＲＡＭバンクに隣接した外部で実行されるため、すべての読み出しがローカルＤＲＡＭバンクからであるバンクレベルの内部高帯域幅を使用するようになる。
本発明の一実施形態は、浮動少数点演算を支援し、そして例えば、人工ニューラルネットワーク及び関連したトレーニングに特別に有用である。
【００８７】
本発明の一実施形態は、ディープラーニングトレーニングで帯域幅に制限された浮動少数点ＧＥＭＭ演算を目標とする。
累算次元（例えば、ＧＥＭＭ［Ｍ、Ｋ、Ｎ］でＫ次元）に対するタイリングを伴う技術であり、同一のバンクに対するライトバックを必要としなく、読み出し−書き込み衝突が発生しない。
すべての書き込み動作は、データフローパイプラインで次のレベルに伝播される。
すべての以前レイヤーの出力は、次のレイヤーの入力バンクであり、これは全体行列データ移動を減少させる。
本発明の一実施形態は、逆伝播プロセスを可能にする行列転置のためのデータレイアウト及びハードウェア支援を含む。
【００８８】
本明細書で説明したように、ロジックレイヤーは、ＴＳＶを利用して互いに垂直に通信するＤＲＡＭダイの間に又は隣接して積層される。
ハードウェア効率（性）は、浮動少数点乗算ユニットの個数を最小化することによって向上する。
本発明の一実施形態によるＰＩＭ構造は、部分結果がシストリック方式にＰＥ間で伝播される外積プロセッシングエンジンのための分割方法を使用する。
ＤＲＡＭベースルックアップテーブルは、浮動少数点ユニットの面積オーバーヘッドを減少させるのに使用される。
階層的構造は、ルックアップテーブルベースの浮動少数点ユニットのレイテンシを減少させるのに使用される。
外積計算技術は、ＰＥ当たりに使用される。
【００８９】
分割及びスケジューリングアルゴリズムは、任意のサイズのＧＥＭＭ演算に使用されて性能及びエネルギー効率を向上させることができる。
したがって、浮動少数点テンソル乗算がＰＩＭ構造で提供される。
ＤＲＡＭベースルックアップテーブルは、ベクトル外積を具現するのに使用される。
シストリックアレイパイプライン方式の構造は、バンク間接続に使用される。
周辺ロジックは、ＤＲＡＭバンクの外部に隣接して配置されるので、ＤＲＡＭコアロジックを変更する必要がなく、このようにすることによって本発明の一実施形態は、非常に実用的に具現することができる。
【００９０】
ＤＲＡＭバンクの外部にＭＡＣユニットを直接的に追加することと比較して、ＤＲＡＭベースのルックアップテーブルは、相当な面積オーバーヘッドを節減することができる。
ベースロジックダイ上のＮＤＰ技術と比較して、本発明の一実施形態は、より高い（ＴＳＶレベルよりはバンクレベルの）内部帯域幅及びより高い計算性能を提供する。
複数のルックアップテーブルバッファは、長い行活性化レイテンシ及びエネルギー消費を減少させるのに使用される。
前述した方法の多様な動作（演算）は、多様な動作（演算）を実行することができる多様なハードウェア及び／又はソフトウェア構成要素）、回路、及び／又はモジュールのような任意の適切な手段によって実行される。
【００９１】
一部の実施形態は、テンソル計算データフロー加速器半導体回路を含む。
テンソル計算データフロー加速器半導体回路は、メモリバンク、及びメモリバンクに隣接するように配置される（乗算・加算）ユニットの周辺アレイを含む。
一部の実施形態で、（乗算・加算）ユニットの周辺アレイは、データ累算のために（乗算・加算）ユニットのアレイの中の１つの（乗算・加算）ユニットからの部分出力データが（乗算−・加算）ユニットのアレイの中の他の（乗算・加算）ユニットに入力されるパイプライン方式のデータフローチェーンを形成するように構成される。
【００９２】
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、各々が（乗算・加算）ユニットの周辺アレイの中の（乗算・加算）ユニットを含むプロセッシングエンジンの周辺アレイを含む。
一部の実施形態で、プロセッシングエンジンの各々は、入力バッファ、部分和バッファ、及び加重値バッファを含む。
一部の実施形態で、プロセッシングエンジンの各々の加重値バッファは、初期化された状態で加重値行列ベクトルを格納するように構成される。
一部の実施形態で、プロセッシングエンジンの周辺アレイの中のプロセッシングエンジンの入力バッファは、ストリーミング方式にメモリバンクから入力行列ベクトルを受信するように構成される。
一部の実施形態で、プロセッシングエンジンの（乗算・加算）ユニットは、入力行列ベクトルとプロセッシングエンジンの加重値バッファに格納された加重値行列ベクトルの積を計算するように構成される。
【００９３】
一部の実施形態で、プロセッシングエンジンの周辺アレイは、蛇行的に部分和を伝播するように構成されるシストリックアレイである。
一部の実施形態で、プロセッシングエンジンの周辺アレイは、ストリーミング方式に複数の入力行列ベクトルを受信し、部分和のデータフロー方向と垂直である方向に複数の入力行列ベクトルを伝播させるように構成される。
一部の実施形態で、メモリバンクは、ＤＲＡＭメモリバンクである。
回路は、複数のチャンネルを含む「ＮＤＰ−ＤＦ」（ｎｅａｒ−ＤＲＡＭ−ｐｒｏｃｅｓｓｉｎｇ  ｄａｔａｆｌｏｗ）加速器ユニットダイをさらに含む。
一部の実施形態で、チャンネルの各々は、蛇行的に配列される複数のスマートバンクユニットを含む。
一部の実施形態で、スマートバンクユニットの各々は、ＤＲＡＭバンク、入力バッファ、シストリックＭＡＣアレイ、及び出力バッファを含む。
【００９４】
一部の実施形態で、シストリックＭＡＣアレイは、（乗算・加算）ユニットの周辺アレイを含む。
一部の実施形態で、「ＮＤＰ−ＤＦ」加速器ユニットダイは、順次に積層される複数の「ＮＤＰ−ＤＦ」加速器ユニットダイの中の１つである。
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるプロセッサ、及びプロセッサに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
【００９５】
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイは、ベースダイ上に積層される。
一部の実施形態で、テンソル計算データフロー加速器半導体回路は複数のＮＤＰ−ＤＦ加速器ユニットダイ及びベースダイを貫通して配置される１つ以上のＴＳＶ（ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）をさらに含む。
一部の実施形態で、１つ以上のＴＳＶは、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイ、及びベースダイとプロセッサを相互接続するように構成される。
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、プロセッサから計算をオフロード（ｏｆｆｌｏａｄ）するように構成される。
【００９６】
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるコントローラ、及びコントローラに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイは、ベースダイ上に積層される。
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイを貫通して配置される１つ以上のＴＳＶ（ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）をさらに含む。
一部の実施形態で、１つ以上のＴＳＶは、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイ、及びベースダイとコントローラを相互接続するように構成される。
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、テンソル計算データフロー加速器半導体回路から分離されたホストから計算をオフロードするように構成される。
【００９７】
一部の実施形態において、複数の積層された「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、並列に部分出力データを処理するように構成される。
一部の実施形態で、複数の積層された「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、逆方向へ部分出力データを伝播させるように構成される。
一部の実施形態で、複数の積層された「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、部分行列転置を実行するように構成される。
【００９８】
本発明の一実施形態は、ＧＥＭＭデータフロー加速器半導体回路を含む。
ＧＥＭＭデータフロー加速器半導体回路は、メモリバンク、メモリバンクに格納された周辺ルックアップテーブル、ルックアップテーブルヘのローアドレスとして使用される第１ベクトルを格納するように構成される第１ベクトルバッファを含む。
ＧＥＭＭデータフロー加速器半導体回路は、ルックアップテーブルヘのカラムアドレスとして使用される第２ベクトルを格納するように構成される第２ベクトルバッファをさらに含み得る。
【００９９】
ＧＥＭＭデータフロー加速器半導体回路は、１つ以上のルックアップテーブルエントリを受信するように構成される１つ以上のルックアップテーブルバッファをさらに含み得る。
一部の実施形態で、第２ベクトルバッファは、第２ベクトルを１つ以上のルックアップテーブルバッファにストリーミングするように構成され、１つ以上のルックアップテーブルバッファは、ルックアップテーブルから１つ以上のルックアップテーブルエントリを格納するように構成される。
一部の実施形態で、１つ以上のルックアップテーブルバッファは、乗算演算を実行しなく、第１ベクトルと第２ベクトルの積を決定するように構成される。
一部の実施形態で、積は第１積であり、ＧＥＭＭ回路は、第１積と第２積を加算するように構成される１つ以上の加算器、第１積と第２積の合算結果を格納するように構成される出力バッファをさらに含む。
【０１００】
一部の実施形態で、１つ以上のルックアップテーブルバッファは、乗算演算を実行しないで、ルックアップテーブルヘの、各々、カラムアドレス及びローアドレスとして、第１ベクトルの値と第２ベクトルの値を利用して第１積を決定するように構成される。
一部の実施形態で、１つ以上のルックアップテーブルバッファは、乗算演算を実行しなく、ルックアップテーブルヘの、各々、カラムアドレス及びローアドレスとして、第３ベクトルの値と第４ベクトルの値を利用して第２積を決定するように構成される。
一部の実施形態で、メモリバンク、周辺ルックアップテーブル、第１ベクトルバッファ、１つ以上のルックアップテーブルバッファ、及び第２ベクトルバッファは、階層的ルックアップ構造を形成してレイテンシを減少させる。
【０１０１】
一部の実施形態で、ＧＥＭＭデータフロー加速器半導体回路は、１つ以上のルックアップテーブルバッファを含む複数のルックアップテーブルバッファをさらに含む。
一部の実施形態で、複数のルックアップテーブルバッファは、該当複数の行列ベクトルを格納してメモリバンクに格納されたルックアップテーブルにアクセスすることなく、乗算演算を実行しないで、複数の行列ベクトルの複数の積を決定するように構成される。
一部の実施形態で、ＧＥＭＭデータフロー加速器半導体回路は、スマートバンクユニットの周辺アレイをさらに含む。
一部の実施形態で、スマートバンクユニットの周辺アレイは、データ累算のためにスマートバンクユニットのアレイの中の１つのスマートバンクユニットからの部分出力データがスマートバンクユニットのアレイの中の他のスマートバンクユニットに入力されるパイプライン方式のデータフローチェーンを形成するように構成される。
【０１０２】
一部の実施形態で、スマートバンクユニットの各々は、メモリバンク、ルックアップテーブル、複数のルックアップテーブルバッファ、１つ以上の加算器、及び出力バッファを含む。
一部の実施形態で、複数のスマートバンクユニットの中の第１スマートバンクユニットは、第１スマートバンクユニットに隣接する第２スマートバンクユニットに積を出力するように構成される。
一部の実施形態で、第２スマートバンクユニットは、第１スマートバンクユニットから受信した積を格納するように構成される。
一部の実施形態で、積は第１積であり、第２スマートバンクユニットは、ストリーミング方式でメモリバンクから第３ベクトルを受信するように構成される。
【０１０３】
一部の実施形態で、第２スマートバンクユニットの１つ以上のルックアップテーブルバッファは、乗算演算を実行しないで、ルックアップテーブルを利用して第３ベクトルに基づいて第２積を決定するように構成される。
一部の実施形態で、第２スマートバンクユニットの１つ以上の加算器は、第１積と第２積の和を計算するように構成される。
一部の実施形態で、第２スマートバンクユニットの出力バッファは、第１積と第２積の和を格納するように構成される。
一部の実施形態で、第２スマートバンクユニットは第１積と第２積の和をスマートバンクユニットの周辺アレイの中で第３スマートバンクユニットに出力するように構成される。一部の実施形態で、第３スマートバンクユニットは第２スマートバンクユニットに隣接する。一部の実施形態で、第３スマートバンクユニットは和を格納するように構成される。
一部の実施形態で、スマートバンクユニットの周辺アレイは、蛇行的に部分和を伝播するように構成される。
一部の実施形態で、スマートバンクユニットの周辺アレイは、ストリーミング方式で複数の入力行列ベクトルを受信し、部分和のデータフロー方向と垂直になる方向に複数の入力行列ベクトルを伝播するように構成される。
【０１０４】
一部の実施形態で、メモリバンクは、ＤＲＡＭメモリバンクであり、回路は、複数のチャンネルを含む「ＮＤＰ−ＤＦ」（ｎｅａｒ−ＤＲＡＭ−ｐｒｏｃｅｓｓｉｎｇ  ｄａｔａｆｌｏｗ）加速器ユニットダイをさらに含む。
一部の実施形態で、チャンネルの各々は、蛇行的に配列されるスマートバンクユニットの周辺アレイを含む。
一部の実施形態で、スマートバンクユニットの各々は、ＤＲＡＭバンク、ルックアップテーブル、複数のルックアップテーブルバッファ、１つ以上の加算器、及び出力バッファを含む。
【０１０５】
一部の実施形態で、「ＮＤＰ−ＤＦ」加速器ユニットダイは、順次に積層される複数の「ＮＤＰ−ＤＦ」加速器ユニットダイの中の１つである。
一部の実施形態で、ＧＥＭＭ回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるプロセッサ、及びプロセッサに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイは、ベースダイ上に積層される。
一部の実施形態で、ＧＥＭＭ回路は、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイ及びベースダイを貫通して配置される１つ以上のＴＳＶ（ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）をさらに含む。
【０１０６】
一部の実施形態で、１つ以上のＴＳＶは、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイ、及びベースダイとプロセッサを相互接続するように構成される。
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、プロセッサから計算をオフロードするように構成される。
一部の実施形態で、ＧＥＭＭデータフロー加速器半導体回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるコントローラ、及びコントローラに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイは、ベースダイ上に積層される。
【０１０７】
一部の実施形態で、ＧＥＭＭデータフロー加速器半導体回路は、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイを貫通して配置される１つ以上のＴＳＶ（ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）をさらに含む。
一部の実施形態で、１つ以上のＴＳＶは、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイ、及びベースダイとコントローラを相互接続するように構成される。
一部の実施形態で、複数の「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、テンソル計算データフロー加速器半導体回路から分離されたホストから計算をオフロードするように構成される。
一部の実施形態で、複数の積層された「ＮＤＰ−ＤＦ」加速器ユニットダイとベースダイは、並列に部分出力データを処理するように構成される。
【０１０８】
本発明の一実施形態と関連して説明した方法又はアルゴリズム及び機能のブロック又は段階は、ハードウェア方式、プロセッサによって実行されるソフトウェアモジュール、又はこれらの２つ間の組み合わせで直接的に具現することができる。
本発明の実施形態は、１つ以上のプロセッサによって実行可能な命令語を含む非一時的機械読み出し可能な記録媒体を含むことができ、命令語は本発明の一実施形態に係る要素を実行する命令語を含む。
【０１０９】
ソフトウェアとして具現されれば、機能は有形の（ｔａｎｇｉｂｌｅ）、非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）コンピュータ読み出し可能記録媒体上の１つ以上の命令語又はコードとして格納されるか、或いは伝送され得る。
ソフトウェアモジュールは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、レジスター、ハードディスク、移動式ディスク（ｒｅｍｏｖａｂｌｅ  ｄｉｓｋ）、ＣＤ  ＲＯＭ、又は技術分野に公知された任意の他の形態の記録媒体に位置することができる。
【０１１０】
次の論議は、本発明の特定な様相が具現され得る適切な機械（マシン）又は複合体の機械（ｍａｃｈｉｎｅｓ）であり、一般的な説明を提供するように意図される。
普通、機械又は複合体機械は、プロセッサ、メモリ、例えばＲＡＭ、ＲＯＭ、又は他の状態保持媒体、格納装置、ビデオインターフェイス、及び入力／出力インターフェイスポートが付着されたシステムバスを含む。
機械又は複合体機械は、少なくとも一部は他の機械から受信される指示、仮想現実（ＶＲ）環境との相互作用、生体フィードバック、又は他の入力信号のみならず、キーボード、マウス等のような通常的な入力装置からの入力によって制御される。
【０１１１】
ここで使用するように、“機械”の用語は、単一機械、仮想機械、又は複合体機械、仮想機械、又は共に動作する装置と通信するように結合されたシステムを広く含むことと意図する。
例示的な機械は、例えば自動車、鉄道列車、タクシー等のような個人用又は公共輸送のような輸送装置のみならず、個人用コンピュータ、ワークステーション、サーバー、ポータブル（ｐｏｒｔａｂｌｅ）コンピュータ、ハンドヘルド（ｈａｎｄｈｅｌｄ）装置、電話、タブレット（ｔａｂｌｅｔｓ）等のようなコンピューティング装置を含む。
機械又は複合体機械は、プログラム可能な又はプログラム不可能である論理装置又はアレイ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、埋め込み型コンピュータ、スマートカード等のような埋め込み型コントローラを含むことができる。
機械又は複合体機械は、ネットワークインターフェイス、モデム、又は他の通信カップリングを介して、１つ以上の遠隔機械に対する１つ以上の接続を利用できる。
【０１１２】
機械は、イントラネット、インターネット、ＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ）等のような物理的及び／又は論理的ネットワークを経由して相互接続され得る。
当業者は、ネットワーク通信が多様な有線及び／又は無線近距離又は遠距離キャリヤー及び無線周波数（ＲＦ）、衛星、マイクロ波、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）５４５．１１、Ｂｌｕｅｔｏｏｔｈ（登録商標）、光学、赤外線、ケーブル、レーザー等を含むプロトコルを活用できることを理解できる。
【０１１３】
本発明の実施形態は、機械によってアクセスされる時に機械が作業を実行するか、又は抽象的なデータ類型又は低レベルハードウェアコンテキストを定義することを引き起こす関数、手続、データ構造、アプリケーションプログラム等を含む関連したデータを参照して、又は協力して説明することができる。
関連したデータは、例えば、ＲＡＭ、ＲＯＭ等のような揮発性及び／又は不揮発性メモリ、又は他のストレージ装置、及びハードドライブ、フロッピーディスク（登録商標）、光学ストレージ、テープ、フラッシュメモリ、メモリスティック（登録商標）、デジタルビデオディスク、生体ストレージ等を含む関連したストレージ媒体に格納することができる。
関連したデータは、物理的及び／又は論理的ネットワークを含む伝送環境を経てパケット、直列データ、並列データ、伝送信号等の形態に伝達され、圧縮された又は暗号化されたフォーマットとして利用される。
関連したデータは、分散環境で使用することができ、機械アクセスに対して地域的及び／又は遠隔に格納することができる。
【０１１４】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【０１１５】
１００    浮動少数点乗算累算エンジン
１０５    ルックアップテーブル
１１０    符号ビットロジック
１１５    加算器回路
１２０    累算器（又は累積器）
１４５    符号ビット（（Ａ−符号ビット）、（Ｂ−符号ビット））
１５０    指数（（Ａ−指数）、（Ｂ−指数））
１５５    少数（（Ａ−少数）及び（Ｂ−少数））
２０２    ローカルＤＲＡＭバンク
２２０    （Ｃ−エントリ）
２２５    （Ａ−エントリ）
２３０    （Ｂ−エントリ）
２３５、２３５ａ、２３５ｂ    ルックアップテーブルバッファ
３００    ＧＥＭＭデータフロー加速器
３０５    Ｂベクトルバッファ
３１０    Ａベクトルバッファ
３１５ａ、３１５ｂ    加算器
３２０    出力バッファ
３２５    ルックアップテーブルアレイ
３３０    データアレイ
３３５    ルックアップテーブルバッファ区域
４００    集積されたスタックデータフロー加速器
４０５    スタック（レイヤー）
４１０    「ＮＤＰ−ＤＦ」加速器ユニット
４１５    ベースダイ
４２０    パッシブシリコンインターポーザ
４２５    プロセッサ
４３５    ＴＳＶ（Ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）
５００    ホスト
５０５    通信リンク
【図１】
2020091861.tif 000007
【図２】
2020091861.tif 000008
【図３】
2020091861.tif 000009
【図４】
2020091861.tif 000010
【図５】
2020091861.tif 000011
【図６】
2020091861.tif 000012
【図７】
2020091861.tif 000013
【図８】
2020091861.tif 000014
【図９】
2020091861.tif 000015
【図１０】
2020091861.tif 000016
【図１１】
2020091861.tif 000017
【図１２】
2020091861.tif 000018
【図１３】
2020091861.tif 000019
【図１４】
2020091861.tif 000020
【図１５】
2020091861.tif 000021
【図１６】
2020091861.tif 000022
【図１７】
2020091861.tif 000023
【図１８】
2020091861.tif 000024
【図１９】
2020091861.tif 000025
【図２０】
2020091861.tif 000026
【図２１】
2020091861.tif 000027
【図２２】
2020091861.tif 000028
【図２３】
2020091861.tif 000029
【図２４】
2020091861.tif 000030
【図２５】
2020091861.tif 000031
【図２６】
2020091861.tif 000032
【図２７】
2020091861.tif 000033