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