(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-17
(45)【発行日】2024-04-25
(54)【発明の名称】テンソル計算データフロー加速器半導体回路
(51)【国際特許分類】
G06F 17/16 20060101AFI20240418BHJP
G06F 12/06 20060101ALI20240418BHJP
【FI】
G06F17/16 M
G06F12/06 540E
G06F17/16 C
(21)【出願番号】P 2019213487
(22)【出願日】2019-11-26
【審査請求日】2022-11-10
(32)【優先日】2018-12-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-04-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】ペン グ
(72)【発明者】
【氏名】クリシュナ マラディ
(72)【発明者】
【氏名】チェン 宏 忠
(72)【発明者】
【氏名】牛 迪 民
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2018-521374(JP,A)
【文献】米国特許第09779786(US,B1)
【文献】国際公開第2017/171769(WO,A1)
【文献】特開2012-064087(JP,A)
【文献】米国特許出願公開第2018/0253402(US,A1)
【文献】GAO,Mingyu et al.,TETRIS: Scalable and Efficient Neural Network Acceleration with 3D Memory, ACM SIGARCH Computer Architecture News,米国,ACM,2017年04月04日,Volume 45 Issue 1,pp 751-764
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/00-17/18
G06F 15/173
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
テンソル計算データフロー加速器半導体回路であって、
メモリバンクと、
前記メモリバンクに隣接するように配置される複数の(乗算・加算)ユニットの周辺アレイと、
前記(乗算・加算)ユニットの周辺アレイの中の(乗算・加算)ユニットを含む複数のプロセッシングエンジンの周辺アレイと、を有し、
前記複数のプロセッシングエンジンの周辺アレイの各プロセッシングエンジンは、前記複数の(乗算・加算)ユニットのアレイの中の各(乗算・加算)ユニットを含み、
前記
複数のプロセッシングエンジンの周辺アレイは、データ累算のために前記
複数のプロセッシングエンジンの周辺アレイの中の第1
プロセッシングエンジンに含まれる(乗算・加算)ユニットからの部分出力データが前記
複数のプロセッシングエンジンの周辺アレイの中の他の
プロセッシングエンジンに含まれる(乗算・加算)ユニットに入力されるパイプライン方式のデータフローチェーン(dataflow chain)を形成するように構成され、
前記プロセッシングエンジンの各々は、入力バッファと、部分和バッファと、加重値バッファと、を含み、
前記メモリバンクは、DRAMメモリバンクであり、
前記テンソル計算データフロー加速器半導体回路は、複数のチャンネルを含む「NDP-DF」(near-DRAM-processing dataflow)加速器ユニットダイをさらに有し、
前記チャンネルの各々は、蛇行方式で配列される複数のスマートバンクユニットを含み、
前記スマートバンクユニットの各々は、DRAMバンク、入力バッファ、シストリックMACアレイ、及び出力バッファを含むことを特徴とするテンソル計算データフロー加速器半導体回路。
【請求項2】
前記複数のプロセッシングエンジンの前記第1
プロセッシングエンジンに含まれる(乗算・加算)ユニットは、第1(乗算・加算)ユニットであり、
前記複数のプロセッシングエンジンの他の
プロセッシングエンジンに含まれる(乗算・加算)ユニットは、第2(乗算・加算)ユニットであり、
前記
複数の(乗算・加算)ユニットのアレイは、前記メモリバンクに隣接するように配置
されることを特徴とする請求項1に記載のテンソル計算データフロー加速器半導体回路。
【請求項3】
前記プロセッシングエンジンの各々の前記加重値バッファは、初期化された状態で加重値行列ベクトルを格納するように構成されることを特徴とする
請求項1に記載のテンソル計算データフロー加速器半導体回路。
【請求項4】
前記プロセッシングエンジンの周辺アレイの中でプロセッシングエンジンの前記入力バッファは、ストリーミング方式で前記メモリバンクから
複数の入力行列ベクトルを受信するように構成されることを特徴とする
請求項3に記載のテンソル計算データフロー加速器半導体回路。
【請求項5】
前記プロセッシングエンジンの前記(乗算・加算)ユニットは、前記入力行列ベクトルと、前記プロセッシングエンジンの前記加重値バッファに格納された前記加重値行列ベクトルとの積を計算するように構成されることを特徴とする
請求項4に記載のテンソル計算データフロー加速器半導体回路。
【請求項6】
前記プロセッシングエンジン
が、第1プロセッシングエンジン
であると、前記第1プロセッシングエンジンは、前記第1プロセッシングエンジンに隣接する第2プロセッシングエンジンに前記積を出力するように構成されることを特徴とする
請求項5に記載のテンソル計算データフロー加速器半導体回路。
【請求項7】
前記第2プロセッシングエンジンは、前記第2プロセッシングエンジンの前記部分和バッファに前記積を格納するように構成されることを特徴とする
請求項6に記載のテンソル計算データフロー加速器半導体回路。
【請求項8】
前記入力行列ベクトル
が、第1入力行列ベクトル
であると、前記積は、第1積であり、
前記第2プロセッシングエンジンの前記入力バッファは、前記ストリーミング方式で前記メモリバンクから第2入力行列ベクトルを受信するように構成され、
前記第2プロセッシングエンジンの前記(乗算・加算)ユニットは、前記第2入力行列ベクトルと、前記第2プロセッシングエンジンの前記加重値バッファに格納された前記加重値行列ベクトルとの第2積を計算するように構成され、
前記第2プロセッシングエンジンの前記(乗算・加算)ユニットは、前記第1積と前記第2積との和を計算するように構成されることを特徴とする
請求項7に記載のテンソル計算データフロー加速器半導体回路。
【請求項9】
前記第2プロセッシングエンジンは、前記第1積と前記第2積との和を前記プロセッシングエンジンの周辺アレイの中で前記第2プロセッシングエンジンに隣接する第3プロセッシングエンジンに出力するように構成され、
前記第3プロセッシングエンジンは、前記和を前記第3プロセッシングエンジンの前記部分和バッファに格納するように構成されることを特徴とする
請求項8に記載のテンソル計算データフロー加速器半導体回路。
【請求項10】
前記
複数のプロセッシングエンジンの周辺アレイは、蛇行方式(serpentine fashion)で部分和を伝播するように構成されるシストリックアレイ(systolic array)であり、
前記プロセッシングエンジンの周辺アレイは、ストリーミング方式で複数の入力行列ベクトルを受信し、前記部分和のデータフロー方向と垂直になる方向に前記複数の入力行列ベクトルを伝播させるように構成されることを特徴とする
請求項9に記載のテンソル計算データフロー加速器半導体回路。
【請求項11】
前記シストリックMACアレイは、前記(乗算・加算)ユニットのアレイを含み、
前記「NDP-DF」加速器ユニットダイは、順次に積層される複数の「NDP-DF」加速器ユニットダイの中の1つであることを特徴とする
請求項1に記載のテンソル計算データフロー加速器半導体回路。
【請求項12】
パッシブシリコンインターポーザ(passive silicon interposer)と、
前記パッシブシリコンインターポーザ上に配置されるプロセッサと、
前記プロセッサに隣接して前記パッシブシリコンインターポーザ上に配置されるベースダイと、をさらに有し、
前記複数の「NDP-DF」加速器ユニットダイは、前記ベースダイ上に積層されることを特徴とする
請求項11に記載のテンソル計算データフロー加速器半導体回路。
【請求項13】
前記複数の「NDP-DF」加速器ユニットダイと前記ベースダイとを貫通して配置される1つ以上のTSV(through silicon via)をさらに有し、
前記1つ以上のTSVは、前記複数の「NDP-DF」加速器ユニットダイと前記ベースダイとを相互接続し、前記ベースダイと前記プロセッサを相互接続するように構成され、
前記複数の「NDP-DF」加速器ユニットダイと前記ベースダイは、前記プロセッサから計算をオフロードするように構成されることを特徴とする
請求項12に記載のテンソル計算データフロー加速器半導体回路。
【請求項14】
パッシブシリコンインターポーザと、
前記パッシブシリコンインターポーザ上に配置されるコントローラと、
前記コントローラに隣接して前記パッシブシリコンインターポーザ上に配置されるベースダイと、をさらに有し、
前記複数の「NDP-DF」加速器ユニットダイは、前記ベースダイ上に積層されることを特徴とする
請求項11に記載のテンソル計算データフロー加速器半導体回路。
【請求項15】
前記複数の「NDP-DF」加速器ユニットダイと前記ベースダイとを貫通して配置される1つ以上のTSV(through silicon via)をさらに有し、
前記1つ以上のTSVは、前記複数の「NDP-DF」加速器ユニットダイと前記ベースダイとを相互接続し、前記ベースダイと前記コントローラを相互接続するように構成され、
前記複数の「NDP-DF」加速器ユニットダイと前記ベースダイは、前記テンソル計算データフロー加速器半導体回路から分離されたホストから計算をオフロードするように構成されることを特徴とする
請求項14に記載のテンソル計算データフロー加速器半導体回路。
【請求項16】
前記複数の積層された「NDP-DF」加速器ユニットダイと前記ベースダイは、前記部分出力データを並列に処理するように構成されることを特徴とする
請求項14に記載のテンソル計算データフロー加速器半導体回路。
【請求項17】
前記複数の積層された「NDP-DF」加速器ユニットダイと前記ベースダイは、前記部分出力データを逆方向(backward direction)に伝播するように構成されることを特徴とする
請求項14に記載のテンソル計算データフロー加速器半導体回路。
【請求項18】
前記複数の積層された「NDP-DF」加速器ユニットダイと前記ベースダイは、部分行列転置(partial matrix transposition)を実行するように構成されることを特徴とする
請求項14に記載のテンソル計算データフロー加速器半導体回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はディープラーニング(deep learning)に関し、特に、ディープラーニングで一般的な(行列-行列)乗算及びテンソル計算のためのデータフロー加速器構造(dataflow accelerator architecture)に関する。
【背景技術】
【0002】
深層ニューラルネットワーク(Deep neural networks:DNN)は、人工知能を実現するための有望なアプローチとみなされており、そして多数のアプリケーションでその効果が立証されている。
深層ニューラルネットワークトレーニング(training)は、効率的な浮動少数点演算を要求する高い正確性(正確度)と広い動的範囲の全てを必要とする。
浮動少数点演算の大部分を含み、深層ニューラルネットワークトレーニングで最大時間を占めるテンソル計算(tensor computation)は、加速のための核心基本演算である。
【0003】
計算性能は、メモリ帯域幅及びレイテンシ(latency)よりはるかに速くスケーリングされ、そしてオフチップデータ移動は浮動少数点演算より2桁大きいエネルギーを消費するので、テンソル計算のためのコンピューティング中心の加速器は“メモリ壁(memory wall)”問題を抱えている。
テンソル計算は、ディープラーニングで幅広いアプリケーションで重要な役割を果たす。
メモリモジュールの内部又はメモリモジュールに隣接する計算能力を有効にするPIM(Process-in-memory)構造は、その大きな内部帯域幅、データ移動の減少、及び大規模なメモリ並列処理(parallelism)のため、テンソル計算を加速する潜在力が立証されている。
【0004】
しかし、従来のPIMアプローチ法は、減少した正確性を許容するが、複雑な浮動少数点トレーニング作業ができないディープラーニング推論アプリケーションを主に探求する。
NDP(Near-Data-Processing)構造は、侵入(intrusive)が少なく、そして複雑なALU(Arithmetic Logic Unit)をメモリコアバンクの外部に配置する。
しかし、ALUの数は、エリアバジェット(area budget)のために厳格に制限され、そしてNDPアプローチ法は、またコンピューティング中心の構造と比較して内部帯域幅の相当な量を損失する。
これらの短所は、コンピューティング中心のアプローチ法と比較してNPD構造を浮動少数点性能で効果が低くなる。
【0005】
さらに、テンソルプロセッシングの計算上の要求を満足するために、単にFPU(floating points unit)を追加することは、DRAMダイ(die)内における重大な許容できない面積オーバーヘッドを引き起こす。
また、最近作られた不揮発性メモリベースの加速器は、書き込み耐久性(endurance)が良くなく、書き込みレイテンシが長いので、書込み集中型のディープラーニングトレーニング作業には適していないという問題がある。
また、SRAMベースの加速器は、ディープラーニングトレーニングに必要である全てのモデルパラメーターと中間結果を格納するのに充分なオンチップメモリ容量を有しないという問題がある。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許出願公開第2018/0075339号明細書
【文献】米国特許出願公開第2018/0315158号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は上記従来のデータフロー加速器における問題点に鑑みてなされたものであって、本発明の目的は、ディープラーニングのためのテンソル計算データフロー加速器半導体回路を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するためになされた本発明によるテンソル計算データフロー加速器半導体回路は、メモリバンクと、前記メモリバンクに隣接するように配置される複数の(乗算・加算)ユニットの周辺アレイと、前記(乗算・加算)ユニットの周辺アレイの中の(乗算・加算)ユニットを含む複数のプロセッシングエンジンの周辺アレイと、を有し、前記複数のプロセッシングエンジンの周辺アレイの各プロセッシングエンジンは、前記複数の(乗算・加算)ユニットのアレイの中の各(乗算・加算)ユニットを含み、前記複数のプロセッシングエンジンの周辺アレイは、データ累算のために前記複数のプロセッシングエンジンの周辺アレイの中の第1プロセッシングエンジンに含まれる(乗算・加算)ユニットからの部分出力データが前記複数のプロセッシングエンジンの周辺アレイの中の他のプロセッシングエンジンに含まれる(乗算・加算)ユニットに入力されるパイプライン方式のデータフローチェーン(dataflow chain)を形成するように構成され、前記プロセッシングエンジンの各々は、入力バッファと、部分和バッファと、加重値バッファと、を含み、前記メモリバンクは、DRAMメモリバンクであり、前記テンソル計算データフロー加速器半導体回路は、複数のチャンネルを含む「NDP-DF」(near-DRAM-processing dataflow)加速器ユニットダイをさらに有し、前記チャンネルの各々は、蛇行方式で配列される複数のスマートバンクユニットを含み、前記スマートバンクユニットの各々は、DRAMバンク、入力バッファ、シストリックMACアレイ、及び出力バッファを含むことを特徴とする。
【0009】
データフロー加速器は、DRAMバンク及びDRAMバンクに隣接するように配置される(乗算・加算)ユニットの周辺アレイを含む。
(乗算・加算)ユニットの周辺アレイは、(乗算・加算)ユニットのアレイの中で1つの(乗算・加算)ユニットからの部分出力データがデータ累算のために(乗算・加算)ユニットのアレイの中で他の(乗算・加算)ユニットに入力されるパイプライン方式のデータフローチェーンを形成するように構成される。
「NDP-DF」(Near-DRAM-processing dataflow)加速器ユニットダイは、ベースダイ上に積層される。
ベースダイは、プロセッサ又はコントローラに隣接してパッシブシリコンインターポーザ上に配置される。
「NDP-DF」加速器ユニットは、部分行列出力データを並列に処理する。
部分行列出力データは、順方向又は逆方向に伝播される。
テンソル計算データフロー加速器は、部分行列転置を実行する。
【発明の効果】
【0010】
本発明に係るテンソル計算データフロー加速器半導体回路によれば、ディープラーニングでGEMM及びテンソル計算のためのデータフロー加速器構造に関して、検索で、浮動少数点(スカラ-ベクトル)乗算をDRAMベースルックアップテーブルでの同時ルックアップ(検索)動作に変形し、すべての周辺ロジック支援をDRAMコアバンクの外部に追加する。
したがって、全的にFPUを追加することと比較してより小さい面積が消費され、より短いレイテンシが達成される。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施形態に係るルックアップテーブルを利用するスカラ浮動少数点(乗算・累算)エンジンを説明するための例示的なブロック図である。
【
図2】本発明の一実施形態に係る計算のために全体のルックアップテーブルと関連した入力行列を含むローカルDRAMバンクを説明するための例示的なブロック図である。
【
図3】本発明の一実施形態に係るGEMMデータフロー加速器の概略構成を例示するブロック図である。
【
図4】本発明の一実施形態に係る集積されたスタックデータフロー加速器の概略構成を側面から例示するブロック図である。
【
図5】本発明の一実施形態に係る集積されたスタックデータフロー加速器の概略構成を例示するブロック図である。
【
図6】本発明の他の実施形態に係る別個のスタックデータフロー加速器の概略構成を側面から例示するブロック図である。
【
図7】本発明の他の実施形態に係る別個のスタックデータフロー加速器の概略構成を例示するブロック図である。
【
図8】本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器の概略構成を側面から例示するブロック図である。
【
図9】本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器の概略構成を例示するブロック図である。
【
図10】本発明の一実施形態に係る浮動少数点(乗算・累算)エンジン及び/又はGEMMデータフロー加速器と関連して使用され得る単一「NDP-DF」ダイのコンテンツを含む例示的なブロック図である。
【
図11】本発明の一実施形態に係るテンソル計算データフロー加速器と関連して使用される単一「NDP-DF」ダイのコンテンツを含む例示するブロック図である。
【
図12】本発明の一実施形態に係るテンソル計算データフロー加速器の概略構成を例示するブロック図である。
【
図13】MACユニットの概略構成を例示するブロック図である。
【
図14】シストリックMACアレイの高さとシストリックアレイの幅を説明するための例示的なブロック図である。
【
図15】レイヤー間データフィーディング及びタイリング技術を説明するための例示的なブロック図である。
【
図16】本発明の一実施形態に係るテンソル計算データフロー加速器のPGのマイクロ構造を示す例示的なブロック図である。
【
図17】本発明の一実施形態に係るテンソル計算データフロー加速器のPGのキューブを示す例示的な側面図である。
【
図18】本発明の一実施形態に係るPGの多数のボールトを含むテンソル計算データフロー加速器のPGのキューブを示す例示的な平面図である。
【
図19】本発明の一実施形態に係るテンソル計算データフロー加速器のベースダイの概略構成を例示するブロック図である。
【
図20】本発明の一実施形態に係るパッシブシリコンインターポーザ、及びその上に配置される複数のキューブを含むテンソル計算データフロー加速器の概略構成を例示するブロック図である。
【
図21】本発明の一実施形態に係るテンソル計算データフロー加速器の概略構成を例示するブロック図である。
【
図22】本発明の一実施形態に係る順方向伝播データレイアウト及びデータフローを説明するための図である。
【
図23】本発明の一実施形態に係る互いに接続された複数のプロセッシンググループを含む計算グループを例示的に示すブロック図である。
【
図24】本発明の一実施形態に係るテンソル計算データフロー加速器の複数のキューブの概略構成を例示するブロック図であり、減少動作がどのように実行されるかを示す図である。
【
図25】本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフローを説明するための図である。
【
図26】本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフローを説明するための図である。
【
図27】本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフローを説明するための図である。
【発明を実施するための形態】
【0012】
次に、本発明に係るテンソル計算データフロー加速器半導体回路を実施するための形態の具体例を図面を参照しながら説明する。
【0013】
本発明の実施形態を詳細に例示し、これらの例示は添付した図面を参照する。
以下の詳細な説明で、多様な特定な細部事項が本発明の完全な理解を可能であるようにするために提供する。
しかし、当業者はこのような特定な細部事項無しでも本発明を具現することができることが理解されなければならない。
他の例として、広く公知された方法、手続、構成要素、回路、及びネットワークは実施形態の側面を不必要に曖昧にしないために詳細に説明しない。
第1、第2、等の用語が多様な要素を説明するために本文で使用することがあるが、これらの要素はこのような用語によって限定されないことを理解するべきである。
これらの用語は単なる1つの要素を他のことと区別するためにのみ使用する。
例えば、本発明の範囲から逸脱しなく、第1スタック(stack)は第2スタックで称することができ、そして、類似に、第2スタックは第1スタックで称することができる。
【0014】
本発明の説明で使用する用語は、単なる特定な実施形態を説明するための目的であり、本発明を制限しようとする意図ではない。
本発明の説明及び添付された請求項で使用したように、脈絡で明確に相違を示さない限り、単数形態は複数の形態も含むこととみなすものとする。
本文で使用する“及び/又は”用語は1つ以上の関連した列挙された項目の任意の、そしてすべての可能な組み合せを示し、含むことがまた理解されるべきである。
“包含する”及び/又は“含む”用語は、本明細書で使用する時、明示された特徴、整数、段階、動作、要素、及び/又は構成要素の存在を明示するが、1つ以上の他の特徴、整数、段階、動作、要素、構成要素、及び/又はそれらのグループの存在又は追加を排除しないことをさらに理解されるべきである。
図面の構成要素及び特徴は、必ずしも一定の比率で示すものではない。
【0015】
本発明は、ディープラーニングでGEMM(general matrix-matrix multiplication)及びテンソル計算(tensor computation)のためのデータフロー(dataflow)加速器構造に関する。
開示する実施形態は、浮動少数点(スカラ-ベクトル)乗算をDRAMベースのルックアップテーブル(lookup table)での同時(concurrent:並行)ルックアップ(検索)動作に変形し、すべての周辺ロジック支援をDRAMコアバンクの外部に追加する。
したがって、全的にFPU(floating point multiplication unit)を追加することと比較してより小さい面積が消費され、より短いレイテンシが達成される。
【0016】
開示する実施形態は、メモリ感知回路の相当な修正を要求する現位置の(in-situ)アナログPIMユニットよりさらに実用的である。
テーブル検索間ロー活性化回数を減少させるため、周辺ロジックは1つ以上のルックアップテーブルバッファを使用して検索結果をキャッシュし、そして開示されたデータマッピングは一括処理された(batched)ディープラーニングトレーニング作業で非常に高いバッファヒットレート(hit rate)を算出する。
開示されたマッピングは、また、入力テンソルがローカルDRAMバンクから来ることを保障し、したがって読み出しトラフィック(traffic)のためにバンクそのままの(raw)内部帯域幅を完全に利用する。
【0017】
拡張性及び書き込みトラフィックを向上させるために、シストリック(systolic)アレイデータフロー構造が開示され、これは多数のバンク及びチャンネルに掛けてテンソル計算を調整して、隣接バンク又はチャンネルは「生成者-消費者」(或いは「プロデューサー-コンシューマー」(producer-consumer))パイプライン方式で動作し、データは最終ステージのみでバンクに書き込まれる(記入される)。
不足なテンソル計算を支援するために、ゼロスキップロジック(zero-skipping logic)が使用され得る。
【0018】
本明細書で実施形態は、メモリLUT(ルックアップテーブル)を利用する乗算器を具現し、ここで乗数(multiplier)はローアドレスとして使用され、被乗数(multiplicand)はカラムアドレスとして使用される。
LUTの幅は、バンク内に含まれ得、DRAMサブアレイに効果的に格納及びアクセスすることができる。
電力及び時間を全て消費するDRAMLUTロー活性化を減少させるため、LUTバッファをバンク周辺回路に追加することができ、GEMM(general matrix-multiplication)タイリング(tiling)技術が使用してLUTバッファの検索結果の再使用が増加する。
【0019】
処理量を向上させるために、検索ベーステンソル外積プロセッシングエンジン(processing engine:PE)が使用され得る。
各バッファは、幾つのセグメント(segment)に分けられ、セグメントの各々は1つの独立的な値ベースの検索を提供する。
累算器(accumulator:或いは累積器)は、時分割(time-multiplexed)技術で部分和を合算するために(又は集計するために)、バンク周辺に含まれ得る。
部分和のライトバック(write-back)及び再ロード(re-load)を回避するために、シストリックデータフロー構造を使用することができ、ここで以前バンクの累算器はそれらの現在部分和を次のバンクの累算(或いは累積)のために伝送し、最後バンクはその結果を他のチャンネルに伝達する(relay)。
【0020】
3D積層(stacking)でのシリコン貫通電極(Through-silicon-via:TSV)は、チャンネル間の高いデータ伝送帯域幅を提供するのに使用する。
開示したGEMMブロックマッピング技術は、任意のサイズの入力テンソルを同一のデータフローグループ内すべてのバンクに掛けて分散させる。
入力部分テンソル及びLUTは、全てバンクに対して局部的であるので、テンソルにアクセスする広いバンクインターフェイス(例えば、256ビット)を使用することができ、1回のサイクルでLUTの全体ローにアクセスする(ロー-複製)引用(row-clone citation)を使用することができる。
【0021】
したがって、DRAMベースのルックアップテーブルは、隣接メモリデータフロー構造と共に使用することができるので、ディープラーニングで浮動少数点テンソル計算を加速することができ、このようにすることによってコンピューティング中心のアクセス法に比べて帯域幅拡張性長所を増加させる。
メモリ内の検索(Lookup-in-memory)データフローテンソル計算が支援される。
バンク内部帯域幅を利用する外積ベースGEMMブロックマッピングは、ロー活性化を減少させ、帯域幅拡張性を増加させる。
開示する実施形態では、豊富なオンチップメモリ容量、対称的な読み出し/書き込み性能を有し、書き込み耐久性問題からフリーな3D積層DRAMベース加速器を含み得る。
【0022】
3D積層は、メモリ及び計算の密度を増加させることができ、ダイ間通信の高帯域幅を提供することができる。
浮動少数点乗算器の大部分の面積は、少数乗算器が主に占め、全体少数乗算テーブルは無視できる程度の容量オーバーヘッドに1つのDRAMバンクに格納され得る。
並列乗算は、並列検索計算に変換することができる。
1つのバンクは、各バンクの横に周辺回路を追加することによって、1つのPEに変形されることができるので、検索オーバーヘッドを緩和し、そしてPEの性能を増加させることができる。
開示したデータマッピング技術は、すべての読み出しトラフィックが各バンクに対して局部的であることを保証してデータ移動長さを短縮させ、また、バンクレベルの読み出し帯域幅を利用する。
【0023】
バンクレベルの回路及びマイクロ構造細部事項を本明細書で開示する。
データを再書き込みの前にデータ再使用を増加させるために、シストリックデータフロー構造がチャンネル内の多数のバンクに使用することができ、ここで部分結果は累算のために隣接するバンクに伝播(propagate)させる。
円滑なデータフローを維持し、各バンクの活用を最大化するために、効率的なデータフィーディング(feeding:供給又は提供とも称される)技術がニューラルネットワーク内部レイヤー間のデータ移動に使用することができる。
さらに一般的なニューラルネットワークトレーニングのために、1つ以上の汎用ALUが3Dスタック(stack)のベースダイ(base die)上に配置されるので、重要であるが、時間を消費しない配置正規化(batch-normalization)、活性化(activation)、及びプーリング(pooling)のような演算を実現することができる。
【0024】
ダイ及びスタックレベルの構造も本明細書で開示する。
また、任意のサイズの行列乗算及びコンヴォリューション演算をベクトル外積演算に公式化し(定式化し)、パイプライン並列処理及びデータ並列処理プログラミングを利用してデータマッピングを決定し、計算をスケジューリング(scheduling)するスケーラブル(scalable)技術を開示する。
また、加速器のための新しい構造及びコントローラ設計を開示する。
コントローラ、計算スケジューリング、全体アプリケーションデータマッピング、及びシステム集積の様相も本明細書で開示する。
【0025】
図1は、本発明の一実施形態に係るルックアップテーブルを利用するスカラ浮動少数点(乗算・累算)エンジン(scalar floating point multiply-and-accumulate engine)100を説明するための例示的なブロック図である。
浮動少数点乗算累算エンジン100は、ルックアップテーブル105、符号ビットロジック110、加算器回路115、累算器(又は累積器)120を含む。
【0026】
ルックアップテーブル105は、矢印125で、((A-少数)155ローアドレス)と矢印130で、(B-少数)155カラムアドレス)を受信する。
言い換えれば、(A-少数)155の値はルックアップテーブル105へのローアドレスとして使用され、(B-少数)155の値はルックアップテーブル105ヘのカラムアドレスとして使用される。
したがって、通常的に使用される部分積乗算器は、それ以上必要としない。
したがって、ダイ面積の相当な量が節約される。
ルックアップテーブル105からの出力135は、符号ビットロジック110によって決定される(A-符号ビット)145及び(B-符号ビット)145と結合される。
符号ビット(例えば、(A-符号ビット)145及び(B-符号ビット)145)は、乗算結果の符号を示す。
【0027】
加算器回路115は、(A-少数)及び(B-少数)と関連した指数(例えば、(A-指数)150及び(B-指数)150)を合算する。
乗算演算の積140は、累算器120によって累算される。
一部の実施形態で、積140は、11ビット値である。
ルックアップテーブル105は、DRAMベースのルックアップテーブルである。
DRAMベースのルックアップテーブル105は、ベクトル外積(vector outer-product)を具現するのに使用される。
一部の実施形態で、DRAMベースのルックアップテーブル105のサイズは、16Mbである。
【0028】
周辺ロジックは、DRAMバンクの外部に含まれ得るので、DRAMコアは変更する必要がない。
DRAMバンクの外部に、MAC(multiply-and-add又はmultiply-and-accumulate)ユニットを使用することと比較して、DRAMベースルックアップテーブル105は、相当の面積及びプロセッシングオーバーヘッドを節約する。
また、ベースロジックダイ上のNDPと比較して、DRAMベースのルックアップテーブル105は、より高い内部帯域幅(例えば、バンクレベルの帯域幅)、及びより高い計算性能を提供する。
したがって、浮動少数点テンソル乗算は、ルックアップテーブル105を利用するPIM(Process-in-Memory)構造で支援される。
【0029】
図2は、本発明の一実施形態に係る全体のルックアップテーブル105と関連した入力行列を含むローカルDRAMバンク202を説明するための例示的なブロック
図200である。
ルックアップテーブル105は、2つの整数のすべての可能な組み合わせの乗算結果を含む。
【0030】
2つの整数は、浮動少数点数の少数部分の長さと同一のビット長さを有する。
(A-エントリ)225及び(B-エントリ)230は、ローカルDRAMバンク(例えば、符号202)に格納することができ、そして(C-エントリ)220は、他のPEの間で伝播及び累算される。
累算されたチェーン(chain)の最後のPEは、ローカルDRAMバンク(例えば、符号202)に再び格納される累算された(C-エントリ)220を惹起する。
(A-エントリ)225は、ローカルDRAMバンク202から直接的にストリーミング(streaming)され得、このようにすることによってDRAMローバッファ及び高いバンク読み出し帯域幅を利用する。
【0031】
(B-エントリ)230は、1つ以上の加重値を含み、ローカルDRAMバンク202から全体のルックアップテーブル105にアクセスするためのローアドレスとして使用することができる。
後述するように、(A-エントリ)225がローカルDRAMバンク202からストリーミングされる間に、全体のルックアップテーブル105の結果は、ルックアップテーブルバッファ235に臨時的に固定され得る。
【0032】
図3は、本発明の一実施形態に係るGEMMデータフロー加速器300の概略構成を例示するブロック図である。
GEMMデータフロー加速器300は、ローカルDRAMバンク202、複数のルックアップテーブルバッファ(例えば、235a及び235b)を含むルックアップテーブルバッファ区域335を含む。
GEMMデータフロー加速器300は、Bベクトルバッファ305及びAベクトルバッファ310をさらに含む。
GEMMデータフロー加速器300は、1つ以上の加算器(例えば、315a及び315b)をさらに含む。
GEMMデータフロー加速器300は、出力バッファ320をさらに含む。
【0033】
GEMMデータフロー加速器300は、1つ以上の外積演算を実行する。
図3において、丸数字1(数字“1”を○で囲んだもの、以下同様)によって表示された第1番目の段階で、BベクトルはローカルDRAMバンク202から読み出され、Bベクトルバッファ305に格納される。
丸数字2で、Bベクトルは、DRAMロー複製動作(clone operation)でルックアップテーブルバッファ235aに格納される。
丸数字3によって表示された第3番目の段階で、AベクトルはローカルDRAMバンク202から読み出され、Aベクトルバッファ310に格納される。
丸数字4で、Aベクトルは、1つ以上のルックアップテーブルバッファ(例えば、235a及び235b)にストリーミングされ、積(例えば、
図1の符号140)は、DRAMバンク202のルックアップテーブル(例えば、
図1の符号105)と関連したAベクトル及びBベクトル情報に基づいて決定される。
【0034】
言い換えれば、ルックアップテーブルバッファ(235a及び235b)は、乗算動作を実行しないで、積を決定する。
丸数字5で、加算演算が積に対して実行される(例えば、
図1の符号140)。
加算演算の結果340は、出力バッファ320に格納される。
言い換えれば、積は他の積に加えられ、合わせた積は累算される。
丸数字6で、出力バッファ320は、結果340をルックアップテーブルアレイ325及び/又はデータアレイ330に伝送する。
【0035】
段階(丸数字1、丸数字2、及び丸数字3)は、バンクレベルの高帯域幅を活用することができる。
段階(丸数字3、丸数字4、丸数字5、及び丸数字6)で、図に示した段階は、複数回、そして段階(丸数字1及び丸数字1)より複数回繰り返され得る。
これは、ルックアップテーブルバッファ区域335に提供される複数のルックアップテーブルバッファ(例えば、235a及び235b)に対する高いバッファヒットレート(buffer hit rate)が存在するためである。
したがって、ルックアップテーブルバッファ区域335で複数のルックアップテーブルバッファ(例えば、235a及び235b)を提供することによって、DRAMバンク202に格納された全体のルックアップテーブル(例えば、105)の性能は、相当に大きく増加する。
例えば、8、16、32、64、128、256個、又はさらに多いルックアップテーブルバッファを使用することができる。
【0036】
図4は、本発明の一実施形態に係る集積されたスタックデータフロー加速器400の概略構成を側面から例示するブロック図である。
集積されたスタックデータフロー加速器400は、「NDP-DF」(near-DRAM-processing dataflow)加速器ユニット410の複数のレイヤー405を含む。
【0037】
4つの「NDP-DF」加速器ユニット410を
図4で示すが、任意の適切な数の「NDP-DF」加速器ユニット410が順次に(1つが他の1つの上に)積層することができることが理解されるべきである。
「NDP-DF」加速器ユニット410は、垂直方向に順次に積層される。
「NDP-DF」加速器ユニット410は、ベースダイ415上に積層される。
ベースダイ415は、コントローラ、バッファ、プロセッシングロジック等を含み得る。
ベースダイ415は、パッシブシリコンインターポーザ420(passive silicon interposer)上に積層することができる。
プロセッサ425(例えば、xPU)は、ベースダイ415に隣接してパッシブシリコンインターポーザ420上に積層され得る。
プロセッサは、CPU(central processing unit)、GPU(graphical processing unit)、又は他の適切なプロセッサである。
【0038】
計算は、矢印線430で示すように、プロセッサ425で「NDP-DF」加速器ユニット410のスタック405及びベースダイ415にオフロード(offload)される。
TSV(Through silicon via)435は、1つ以上の「NDP-DF」加速器ユニット410を貫通して配置される。
TSV435は、「NDP-DF」加速器ユニット410とベースダイ415を相互接続する。
その代わりに、又は追加に、TSV435は、ベースダイ415とプロセッサ425を相互接続することができる。
TSV435は、パッシブシリコンインターポーザ420を経由してベースダイ415とプロセッサ425を相互接続することができる。
【0039】
図5は、本発明の一実施形態に係る集積されたスタックデータフロー加速器400の概略構成を例示するブロック図である。
集積されたスタックデータフロー加速器400は、「NDP-DF」加速器ユニット410の複数のスタック405を含む。
「NDP-DF」加速器ユニット410のスタックの各々は、パッシブシリコンインターポーザ420を経由してプロセッサ425と通信するように接続される。
ホスト500は、通信リンク505を経由して集積されたスタックデータフロー加速器400と通信するように接続される。
通信リンク505は、有線リンク、無線リンク、カード、ポート等であってもよい。
【0040】
図6は、本発明の一実施形態に係る別個の(discrete)スタックデータフロー加速器600の概略構成を側面から例示するブロック図である。
別個のスタックデータフロー加速器600は、「NDP-DF」加速器ユニット410の複数のレイヤー405を含む。
4つの「NDP-DF」加速器ユニット410を
図6で示すが、任意の適切な数の「NDP-DF」加速器ユニット410が順次に積層され得ることが理解されるべきである。
【0041】
「NDP-DF」加速器ユニット410は、垂直方向に順次に積層される。
「NDP-DF」加速器ユニット410は、ベースダイ615上に積層される。
ベースダイ615は、コントローラ、バッファ、プロセッシングロジック等を含み得る。
ベースダイ615は、パッシブシリコンインターポーザ620上に積層され得る。
コントローラ625は、ベースダイ615に隣接してパッシブシリコンインターポーザ620上に積層される。
TSV(Through silicon via)435は、1つ以上の「NDP-DF」加速器ユニット410を貫通して配置される。
TSV435は、「NDP-DF」加速器ユニット410とベースダイ615を相互接続する。
その代わりに、又は追加に、TSV435は、ベースダイ615とコントローラ625を相互接続することができる。
TSV435は、パッシブシリコンインターポーザ620を経由してベースダイ615とコントローラ625を相互接続する。
【0042】
図7は、本発明の他の実施形態に係るスタックデータフロー加速器600の概略構成を例示するブロック図である。
別個のスタックデータフロー加速器600は、「NDP-DF」加速器ユニット410の複数のスタック405を含む。
「NDP-DF」加速器ユニット410のスタックの各々は、パッシブシリコンインターポーザ620を経由してコントローラ625と通信するように接続される。
ホスト700は、通信リンク705を経由して別個のスタックデータフロー加速器600と通信するように接続される。
通信リンク705は、有線リンク、無線リンク、カード、ポート等であってもよい。
計算は、矢印線730で示すように、ホスト700で別個のスタックデータフロー加速器600にオフロードされる。
【0043】
図8は、本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器800の概略構成を側面から例示するブロック図である。
別個のスタックデータフロー加速器800は、「NDP-DF」加速器ユニット410の複数のレイヤー405を含む。
【0044】
スタック405当たり4つの「NDP-DF」加速器ユニット410を
図8で示すが、任意の適切な数の「NDP-DF」加速器ユニット410が順次に積層され得ることが理解されるべきである。
「NDP-DF」加速器ユニット410は、垂直方向に順次に積層される。
各スタック405で、「NDP-DF」加速器ユニット410は、該当ベースダイ(例えば、815)上に積層される。
各ベースダイ815は、コントローラ、バッファ、プロセッシングロジック等を含み得る。
各ベースダイ815は、パッシブシリコンインターポーザ820上に積層される。
コントローラ625は、ベースダイ815の中の1つに隣接してパッシブシリコンインターポーザ820上に積層される。
【0045】
TSV435は、1つ以上の「NDP-DF」加速器ユニット410を貫通して配置される。
TSV435は、「NDP-DF」加速器ユニット410と該当ベースダイ815を相互接続する。
その代わりに、又は追加に、TSV435は、各ベースダイ815とコントローラ825を相互接続することができる。
TSV435は、パッシブシリコンインターポーザ825を経由して各ベースダイ815とコントローラ825を相互接続する。
1つ以上のスイッチ850は、1つ以上のベースダイ815に隣接してパッシブシリコンインターポーザ820上に配置される。
一部の実施形態で、コントローラ825は、また、スイッチを含む。
【0046】
図9は、本発明のさらに他の実施形態に係る別個のスタックデータフロー加速器800の概略構成を例示するブロック図である。
別個のスタックデータフロー加速器800は、「NDP-DF」加速器ユニット410の複数のスタック405を含む。
一部の実施形態で、「NDP-DF」加速器ユニット410の12個のスタック405がある。
一部の実施形態で、コントローラ/スイッチ825から離れた4つのスイッチ850がある。
各スイッチ850は、「NDP-DF」加速器ユニット410の4つのスタック405と通信するように接続される。
【0047】
「NDP-DF」加速器ユニット410のスタックの各々は、スイッチ850及び/又はパッシブシリコンインターポーザ820を経由してコントローラ825と通信するように接続される。
一部の実施形態で、コントローラ/スイッチ825は、その両側に「NDP-DF」加速器ユニット410の6個のスタック405、そして両側に2つのスイッチ850を有するパッシブシリコンインターポーザ820の中心領域に配置される。
ホスト900は、通信リンク905を経由して別個のスタックデータフロー加速器800と通信するように接続される。
通信リンク905は、有線リンク、無線リンク、カード、ポート等であってもよい。
計算は、矢印線930で示すようにホスト900で別個のスタックデータフロー加速器800にオフロードされる。
【0048】
図10は、本発明の一実施形態に係る浮動少数点(乗算・累算)エンジン100及び/又はGEMMデータフロー加速器300と関連して使用され得る単一「NDP-DF」ダイ410のコンテンツ(contents)を含む例示的なブロック
図1000である。
「NDP-DF」ダイ410は、複数のチャンネル(例えば、CH0、CH1)を含む。
チャンネル(例えば、CH0、CH1)の各々は、複数のスマートバンクユニット(例えば、B0、B1、…、B15)を含む。
チャンネル(例えば、CH0、CH1)は、矢印線1005によって互いに接続される。
例えば、チャンネルCH0のスマートバンクユニットB12の出力は、チャンネルH1のスマートバンクユニットB0の入力に接続される。
【0049】
TSV435は、(例えば、
図4~
図9で示したように)チャンネル(例えば、CH0、CH1)を他の「NDP-DF」ダイ410の他のチャンネルに接続することができる。
各チャンネル(例えば、CH1)内の矢印線1010は、チャンネルのスマートバンクユニットの各々を通じたシストリックデータフロー方向を示す。
言い換えれば、シストリックデータフローは、スマートバンクユニットB0で始め、その次のスマートバンクユニットB3に移動(travel)し、その次の方向を変え、スマートバンクユニットB7からスマートバンクユニットB4に反対方向に移動し、その次の方向を再び変え、このような蛇行(又はS字形:serpentine)方式にスマートバンクユニットの各々を通じて移動する。
【0050】
各チャンネル(例えば、CH1)内の点線矢印線1015は、バンクデータI/O経路を示す。
したがって、バンクデータI/O経路は、スマートバンクユニットを通じた蛇行データフローを横切っていく。
スマートバンクユニットの各々は(例えば、B0)、DRAMバンク(例えば、
図3の符号202)を含み得る。
DRAMバンクの各々は(例えば、202)、全体のルックアップテーブル(例えば、
図1の符号105)を含み得る。
RAMバンクの各々は(例えば、202)、複数のルックアップテーブルバッファ(例えば、235a、235b)、複数の加算器(例えば、315a、315b)、及び出力バッファ(例えば、320)と関連する。
【0051】
ルックアップテーブルバッファ(例えば、235a、235b)は、前述した、又は後述するように、全体のルックアップテーブル105の部分を臨時的に格納することができる。
一部の実施形態で、すべての読み出し動作は、各DRAMバンク(例えば、202)に対して局部的であり、そしてすべての書き込み動作は、次のDRAMバンクに伝播される。
ルックアップテーブルバッファ(例えば、235a、235b)、加算器(例えば、315a、315b)、及び出力バッファ(例えば、320)は、DRAMバンクの各々(例えば、202)に対して周辺ロジック、装置、回路等であり、そして隣接するバンクを接続することができる。
【0052】
マルチプレクサー(multiplexor:図示せず)及びデマルチプレクサー(de-multiplexor:図示せず)のような他の周辺ロジックもまた含まれ得る。
出力バッファからの出力は、隣接バンクに入力(或いは、フィード(feed))される。
例えば、1つのバンクの出力バッファからの出力は、隣接バンクの加算器に入力される。
並列処理は、空間的にそして一時的に達成され得る。
言い換えれば、複数の臨時のプロセッシングサイクルの中で与えられたプロセッシングサイクルのために、行列データは複数のバンクによって並列に(或いは同時に)処理され得る。
各新しいプロセッシングサイクルは、複数の異なるバンクによって並列に処理される行列データを有することができる。
したがって、本発明の一実施形態に係るGEMMデータフロー加速器の性能は増加する。
【0053】
図11は、後述するテンソル計算データフロー加速器と関連して使用される単一「NDP-DF」ダイ410のコンテンツを含む例示的なブロック
図1100である。
「NDP-DF」ダイ410は、複数のチャンネル(例えば、CH0、CH1)を含む。
チャンネル(例えば、CH0、CH1)の各々は、複数のスマートバンクユニット(例えば、B0、B1、…、B15)を含む。
チャンネル(例えば、CH0、CH1)は、矢印線1005によって互いに接続される。
例えば、チャンネルCH0のスマートバンクユニットB12の出力は、チャンネルCH1のスマートバンクユニットB0の入力に接続される。
【0054】
TSV435は、チャンネル(例えば、CH0、CH1)を他の「NDP-DF」ダイ410(例えば、
図4~
図9で示したように)の他のチャンネルに接続することができる。
各チャンネル(例えば、CH1)内の実線矢印線1010は、チャンネルのスマートバンクユニットの各々を通じたシストリックデータフロー方向を示す。
言い換えれば、シストリックデータフローは、スマートバンクユニットB0で始めて、その次のスマートバンクユニットB3に移動し、その次に方向を変え、スマートバンクユニットB7からスマートバンクユニットB4に反対方向に移動し、その次の方向を再び変え、このような蛇行方式でスマートバンクユニットの各々を通じて移動することができる。
各チャンネル(例えば、CH1)内の点線矢印線1015は、バンクデータI/O経路を示す。
したがって、バンクデータI/O経路は、スマートバンクユニットを通じた蛇行データフローを横切っていく。
【0055】
スマートバンクユニット(例えば、B0)の各々は、DRAMバンク(例えば、
図3の符号202)を含む。
DRAMバンクの各々は(例えば、202)、入力バッファ(例えば、1105)、シストリック乗算及び累算(MAC)アレイ1110、及び出力バッファ(例えば、320)と関連する。
一部の実施形態で、すべての読み出し動作は、各DRAMバンク(例えば、202)に対して局部的であり、そしてすべての書き込み動作は、次のDRAMバンクに伝播される。
入力バッファ(例えば、1105)、MACアレイ(例えば、1110)、及び出力バッファ(例えば、320)は、DRAMバンク(例えば、202)の各々に対して周辺ロジック、装置、回路等であり、そして隣接するバンクを接続する。
【0056】
マルチプレクサー(図示せず)及びデマルチプレクサー(図示せず)のような他の周辺ロジックもまた含まれ得る。
出力バッファからの出力は、隣接バンクに入力される。
例えば、1つのバンクの出力バッファからの出力は、隣接バンクのシストリックMACアレイに入力される。
並列処理は、空間的に、そして一時的に達成され得る。
言い換えれば、複数の臨時のプロセッシングサイクルの中で与えられたプロセッシングサイクルのために、行列データは、複数のバンクによって並列に(同時に)処理される。
各新しいプロセッシングサイクルは、複数の異なるバンクによって並列に処理される行列データを有する。
したがって、本発明の実施形態よるテンソル計算データフロー加速器の性能は、増加する。
【0057】
図12は、本発明の一実施形態に係るテンソル計算データフロー加速器1200の概略構成を例示するブロック図であり、
図13は、MACユニット1210の概略構成を例示するブロック
図1300である。
以下では、
図12及び
図13を参照して説明する。
【0058】
テンソル計算データフロー加速器1200は、ローカルDRAMバンク202、1つ以上の入力バッファ(例えば、1105)、シストリックMACアレイ1110、及び出力バッファ320を含む。
シストリックMACアレイ1110は、複数のPE(例えば、1215)を含む。
一部の実施形態で、入力バッファ1105は、ダブルバッファ1205を形成する。
各PE1215は、入力バッファ1220、MACユニット1210、加重値バッファ1225、及び部分和バッファ1230を含む。
PE1215内の垂直点線1235は、データの入力方向を示す。
PE1215内の水平の実線矢印1240は、データの部分和方向を示す。
【0059】
加重値バッファ1225は、加重値をMACユニット1210に入力する。
MACユニット1210は、
図13で示すように乗算器回路1305及び加算器回路1310を含む。
テンソル計算データフロー加速器1200は、1つのPEからの入力とシストリックMACアレイ1110内の次のPEヘの部分結果を利用してスカラベクトル乗算演算を実行する。
後述するように、加重値は、乗算及び累算演算を実行するための準備として、各PE(例えば、1215)のローカル書込みバッファ1225に事前に決定及び格納され得る。
【0060】
図14は、シストリックMACアレイ1110の高さ1405とシストリックMACアレイ1110の幅1410を説明するための例示的なブロック図である。
シストリックMACアレイ1110は、任意の適切な数のPE1215、任意の適切な高さ1405、及び任意の適切な幅1410を有する。
【0061】
図15は、レイヤー間データフィーディング及びタイリング技術を説明するための例示的なブロック
図2000である。
技術は、バンクの複数のレイヤー(例えば、レイヤー1及びレイヤー2)を含む。
レイヤーの各々は、複数のバンク(例えば、バンク1~バンクN)を含む。
第1入力テンソルは、符号2005で提供される。
第1加重値テンソルは、符号2010で提供される。
第2入力テンソルは、符号2015で提供される。
第2加重値テンソルは、符号2020で提供される。
【0062】
入力テンソル(例えば、T1~TN)の第1タイリンググループ2025は、レイヤー1の複数のバンク(例えば、バンク1~バンクN)と関連する。
加重値テンソル(例えば、W1~WN)の第2タイリンググループ2030は、レイヤー1の複数のバンク(例えば、バンク1~バンクN)と関連する。
入力テンソル(例えば、T1~TM)の第3タイリンググループ2035は、レイヤー2の複数のバンク(例えば、バンク1~バンクN)と関連する。
加重値テンソル(例えば、W1~WM)の第4タイリンググループ2040は、レイヤー2の複数のバンク(例えば、バンク1~バンクN)と関連する。
データフィード2045は、レイヤー1バンクと第3タイリンググループ2035との間に提供される。
【0063】
図16は、本発明の一実施形態に係るテンソル計算データフロー加速器のプロセッシンググループ2105(processing group:PG)のマイクロ構造を示す例示的なブロック図である。
PG2105は、複数のPE(例えば、PE[1]~PE[8])を含む。
PEは互いに接続され、共有されたデータバス2110を経由してTSV2115に接続される。
PG2105は、TSV2215とTSV2120を経由してスイッチ2130に接続される。
コントローラ2125は、スイッチ2130及び/又はPG2105と通信するように接続され、スイッチ2130及び/又はPG2105を制御する。
【0064】
図17は、本発明の一実施形態に係る複数のPG(例えば、PG[1]~PG[8])が複数のスタック(例えば、2210及び2215)で順次に積層されてPGのキューブ(cube)を形成するテンソル計算データフロー加速器のPGのキューブ2205を示す例示的な側面図である。
TSV2140は、各スタックのPGを相互接続する。
【0065】
図18は、PGの複数のボールト(vaults;例えば、Vault[1]~Vault[8])を含むテンソル計算データフロー加速器のPGのキューブ2205を示す例示的な平面図である。
例えば、ボールトは、PGの垂直のグルーピング(grouping)を含む。
【0066】
図19は、本発明の一実施形態に係るテンソル計算データフロー加速器のベースダイ2405の概略構成を例示するブロック図である。
ベースダイ2405は、ネットワークインターフェイス2410及びプログラマブルコア2415を含む。
ベースダイ2405は、複数のボールト周辺ロジック、装置、又は回路2420をさらに含む。
【0067】
各ボールト周辺2420は、バッファ2425、1つ以上のALU2430、スイッチ2130、コントローラ2125、及び/又は1つ以上のTSV2120を含む。
ボールト周辺の各々は(例えば、2420)、該当ボールト(例えば、
図18のVault[1])と関連し、支援するバッファーリング、プロセッシング、及びスイッチングサービスを該当ボールトに提供する。
【0068】
図20は、パッシブシリコンインターポーザ2505、及びその上に配置される複数のキューブ(例えば、2205)を含むテンソル計算データフロー加速器2500の概略構成を例示するブロック図である。
キューブ(例えば、2205)は、交差する(又は十字形)(crisscrossing)矢印によって図に示すように、互いに通信することができる。
【0069】
図21は、本発明の一実施形態に係るテンソル計算データフロー加速器2600の概略構成を例示するブロック図である。
テンソル計算データフロー加速器2600は、DRAMバンク2605、データバッファ2610、第1被乗数バッファ2615、マルチプレクサーのような選択器2620、入力FIFO(first-in-first-out)2625、第2被乗数バッファ2630、複数のMAC(例えば、2635)、及び出力FIFO2640を含む。
【0070】
テンソル計算データフロー加速器2600は、1つ以上の計算マッピング演算(動作)を実行する。
図21において、丸数字1によって表示された第1番目の段階で、A-ベクトルは、ローカルDRAMバンク2605から読み出され、データバッファ2610に格納される。
丸数字2で、A-ベクトルは、被乗数バッファ2630にコピー及び格納される。
丸数字3によって表示された第3番目の段階で、B-ベクトルは、ローカルDRAMバンク2605から読み出され、データバッファ2610に格納される。
丸数字4で、B-ベクトルは、被乗数バッファ2615にコピー及び格納される。
【0071】
丸数字5で、(スカラ-ベクトル)乗算は、与えられたPEから来る入力、そして次のPEに伝達される部分結果を用いて、MAC(例えば、2635)を用いて数回実行される。
垂直点線(例えば、2650)は、マルチプレクサー2620を経由して被乗数バッファ2615から受信される行列データの入力方向を示す。
垂直実線(例えば、2655)は、部分和がMAC(例えば、2635)にわたって伝播され、累算されることに対応した部分和のフロー方向を示す。
MAC2635のアレイは、任意の適切な高さ及び幅を有することができることが理解される。
【0072】
図22は、本発明の一実施形態に係る順方向(forward)伝播データレイアウト及びデータフロー2700を説明するための図である。
データレイアウト及びデータフロー2700は、出力行列2705を含む。
出力行列2705は、例示的な部分ベクトル2710及び部分ベクトル2715、関連する外積演算2720を図に示す。
【0073】
複数のPG(PG[1]、PG[2]等)を含み得る入力行列2725を図に示す。
PGの各々は、複数のPE(PE[1]、PE[2]等)を含み得る。
加重値行列2730もまた図に示す。
加重値行列2730は、複数のPG(PG[1]、PG[2]等)を含み得る。
加重値行列2730は、各々が複数のPGを含む1つ以上の計算グループ(例えば、CG[1])を含む。
PGの各々は、複数のPE(PE[1]、PE[2]等)を含み得る。
【0074】
一部の実施形態で、PG当たり8個のPEがある。
演算の出力順序2735を図に示す。
例えば、外積演算2720からの出力は、出力行列2705を通じて蛇行的に伝播する。
CGが、最終結果のタイル(例えば、ボックス2740)を生成した以後に、最終結果のタイルは、最終減少(final reduction)のためにベースダイ(例えば、
図19の2405)にストリーミングされる。
すべての部分結果が同一のチャンネルで減少された以後に、後述するように、部分結果はチャンネル間で組み合わせることができる。
【0075】
図23は、本発明の一実施形態に係る互いに接続された複数のプロセッシンググループ(例えば、PG[1]、PG[2])を含む計算グループ(例えば、CG[1])を例示的に示すブロック図である。
例えば、各PGは、複数のPE(PE[1]~PE[8])を含む。
1つのPG(例えば、PG[1])から1つのPE(例えば、PE[8])の出力は、他のPG(例えば、PG[2])の他のPE(例えば、PE[1])の入力に入力(提供)することができる。
したがって、行列データは、処理及び累算される。
【0076】
図24は、本発明の一実施形態に係るテンソル計算データフロー加速器(例えば、
図21の符号2600)の複数のキューブ(例えば、CUBE[1]、CUBE[2])の概略構成を例示するブロック図であり、減少動作がどのように実行されるかを示す図である。
各キューブ(例えば、CUBE[1]、CUBE[2])は、複数の計算グループ(例えば、CG[1]、CG[2]等)を含む。
【0077】
各計算グループは、行列データをボールト(例えば、Vault[1]、Vault[2]等)に入力して、
図24にて丸数字1で示すように、行列データが該当ボールトヘの減少動作で減少する。
丸数字2で、行列データは、1つのボールト(例えば、Vault[1])が他のボールト(例えば、Vault[2])に統合され、減少する。
丸数字3で、行列データは、キューブ交差(cross-cube)累算動作でCUBE[2]からのボールト(例えば、Vault[4])に統合され、減少する。
これは「O」(log2(numberCG))減少ラウンド(round)の最大レイテンシを有し、プロセスは、最終結果が漸進的に生成されるにしたがって出力タイルの最終結果と共に完全にパイプライン化されるので、性能オーバーヘッドは最小であり、実質的に無視することができる。
【0078】
図25~
図27は、本発明の一実施形態に係る逆方向伝播データレイアウト及びデータフロー3000を説明するための図である。
逆方向伝播データレイアウト及びデータフロー3000は、複数の入力データDRAMバンク(例えば、入力データバンク[1]、入力データバンク[2]等)を含む。
【0079】
逆方向伝播データレイアウト及びデータフロー3000は、出力データバンク3015をさらに含む。
逆方向伝播データレイアウト及びデータフロー3000は、複数のPG(例えば、PG[1]及びPG[2])をさらに含み、各PGは、複数のPE(例えば、PE[1]、PE[2]等)を含む。
点線矢印線3005は、部分結果累算を示し、そして実線矢印線3010は、入力データブロードキャスティング(broadcasting)を示す。
言い換えれば、入力行列データは、入力データバンク(例えば、入力データバンク[1]、入力データバンク[2]等)から実線矢印線3010を経由して受信され、PE(例えば、PE[1]、PE[2]等)に提供される。
PEは、入力行列データを用いることができるので、乗算及び加算演算を実行することができ、その次の部分結果は、点線矢印線3005に沿って累算される。
【0080】
以下に示す数式1は、本発明の一実施形態に係る順方向データレイアウトソフトウェア分割技術の擬似コード例示である。
【数1】
【0081】
以下に示す数式2は、本発明の一実施形態に係る逆方向データレイアウトの擬似コード例示である。
【数2】
【0082】
以下に示す数式3は、本発明の一実施形態に係る順方向計算スケジューリングソフトウェアスケジューリング技術の擬似コード例示である。
【数3】
【0083】
以下に示す数式1は、本発明の一実施形態に係る逆方向計算スケジューリングの擬似コード例示である。
【数4】
【0084】
並列処理は、空間的に、そして一時的に達成される。
言い換えれば、複数の臨時のプロセッシングサイクルの中で与えられたプロセッシングサイクルのために、行列データは複数のバンクによって並列に(同時に)処理される。
各新しいプロセッシングサイクルは、複数の異なるバンクによって並列に処理される行列データを有する。
したがって、本発明の実施形態によるテンソル計算データフロー加速器の性能は、増加する。
したがって、計算ロジックは、各DRAMバンクの周辺に追加することができ、普通パッシブ構成要素でスマートプロセッシングエンジンに転換する。
【0085】
各ボールトでベースロジックダイのコントローラは、データアクセス及び計算スケジューリングを制御する。
主計算資源(例えば、MACアレイ)は、DRAMバンクに対して周辺サイドロジック(peripheral side logic)としてDRAMダイ上に配置される。
PEを用いるシストリックMACアレイは、処理及び累算される行列データを引き起こす。
転置(transpose)エンジンは、逆方向経路に用いることができる。
計算ロジック(例えば、MACアレイ)は、DRAMバンクに隣接するので、メモリは分散され、そして逆方向に適切なメモリレイアウト及び部分転置レイアウトが可能になる。
3D積層DRAM技術は、並列処理を向上させるのに使用される。
【0086】
本発明の一実施形態は、メモリ制約的(memory-bound)であり、計算集約的(compute-intensive)であるカーネルを対象とした強い計算能力を有する。
したがって、MACアレイ及び関連した構成要素は、例えばGPU計算区域から分離され、DRAMバンク横に集積された計算ロジックを有するPIM3D積層構造内に埋め込まれる(embedded)。
行列乗算及び他のプロセッシングは、DRAMバンクに隣接した外部で実行されるため、すべての読み出しがローカルDRAMバンクからであるバンクレベルの内部高帯域幅を使用するようになる。
本発明の一実施形態は、浮動少数点演算を支援し、そして例えば、人工ニューラルネットワーク及び関連したトレーニングに特別に有用である。
【0087】
本発明の一実施形態は、ディープラーニングトレーニングで帯域幅に制限された浮動少数点GEMM演算を目標とする。
累算次元(例えば、GEMM[M、K、N]でK次元)に対するタイリングを伴う技術であり、同一のバンクに対するライトバックを必要としなく、読み出し-書き込み衝突が発生しない。
すべての書き込み動作は、データフローパイプラインで次のレベルに伝播される。
すべての以前レイヤーの出力は、次のレイヤーの入力バンクであり、これは全体行列データ移動を減少させる。
本発明の一実施形態は、逆伝播プロセスを可能にする行列転置のためのデータレイアウト及びハードウェア支援を含む。
【0088】
本明細書で説明したように、ロジックレイヤーは、TSVを利用して互いに垂直に通信するDRAMダイの間に又は隣接して積層される。
ハードウェア効率(性)は、浮動少数点乗算ユニットの個数を最小化することによって向上する。
本発明の一実施形態によるPIM構造は、部分結果がシストリック方式にPE間で伝播される外積プロセッシングエンジンのための分割方法を使用する。
DRAMベースルックアップテーブルは、浮動少数点ユニットの面積オーバーヘッドを減少させるのに使用される。
階層的構造は、ルックアップテーブルベースの浮動少数点ユニットのレイテンシを減少させるのに使用される。
外積計算技術は、PE当たりに使用される。
【0089】
分割及びスケジューリングアルゴリズムは、任意のサイズのGEMM演算に使用されて性能及びエネルギー効率を向上させることができる。
したがって、浮動少数点テンソル乗算がPIM構造で提供される。
DRAMベースルックアップテーブルは、ベクトル外積を具現するのに使用される。
シストリックアレイパイプライン方式の構造は、バンク間接続に使用される。
周辺ロジックは、DRAMバンクの外部に隣接して配置されるので、DRAMコアロジックを変更する必要がなく、このようにすることによって本発明の一実施形態は、非常に実用的に具現することができる。
【0090】
DRAMバンクの外部にMACユニットを直接的に追加することと比較して、DRAMベースのルックアップテーブルは、相当な面積オーバーヘッドを節減することができる。
ベースロジックダイ上のNDP技術と比較して、本発明の一実施形態は、より高い(TSVレベルよりはバンクレベルの)内部帯域幅及びより高い計算性能を提供する。
複数のルックアップテーブルバッファは、長い行活性化レイテンシ及びエネルギー消費を減少させるのに使用される。
前述した方法の多様な動作(演算)は、多様な動作(演算)を実行することができる多様なハードウェア及び/又はソフトウェア構成要素)、回路、及び/又はモジュールのような任意の適切な手段によって実行される。
【0091】
一部の実施形態は、テンソル計算データフロー加速器半導体回路を含む。
テンソル計算データフロー加速器半導体回路は、メモリバンク、及びメモリバンクに隣接するように配置される(乗算・加算)ユニットの周辺アレイを含む。
一部の実施形態で、(乗算・加算)ユニットの周辺アレイは、データ累算のために(乗算・加算)ユニットのアレイの中の1つの(乗算・加算)ユニットからの部分出力データが(乗算-・加算)ユニットのアレイの中の他の(乗算・加算)ユニットに入力されるパイプライン方式のデータフローチェーンを形成するように構成される。
【0092】
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、各々が(乗算・加算)ユニットの周辺アレイの中の(乗算・加算)ユニットを含むプロセッシングエンジンの周辺アレイを含む。
一部の実施形態で、プロセッシングエンジンの各々は、入力バッファ、部分和バッファ、及び加重値バッファを含む。
一部の実施形態で、プロセッシングエンジンの各々の加重値バッファは、初期化された状態で加重値行列ベクトルを格納するように構成される。
一部の実施形態で、プロセッシングエンジンの周辺アレイの中のプロセッシングエンジンの入力バッファは、ストリーミング方式にメモリバンクから入力行列ベクトルを受信するように構成される。
一部の実施形態で、プロセッシングエンジンの(乗算・加算)ユニットは、入力行列ベクトルとプロセッシングエンジンの加重値バッファに格納された加重値行列ベクトルの積を計算するように構成される。
【0093】
一部の実施形態で、プロセッシングエンジンの周辺アレイは、蛇行的に部分和を伝播するように構成されるシストリックアレイである。
一部の実施形態で、プロセッシングエンジンの周辺アレイは、ストリーミング方式に複数の入力行列ベクトルを受信し、部分和のデータフロー方向と垂直である方向に複数の入力行列ベクトルを伝播させるように構成される。
一部の実施形態で、メモリバンクは、DRAMメモリバンクである。
回路は、複数のチャンネルを含む「NDP-DF」(near-DRAM-processing dataflow)加速器ユニットダイをさらに含む。
一部の実施形態で、チャンネルの各々は、蛇行的に配列される複数のスマートバンクユニットを含む。
一部の実施形態で、スマートバンクユニットの各々は、DRAMバンク、入力バッファ、シストリックMACアレイ、及び出力バッファを含む。
【0094】
一部の実施形態で、シストリックMACアレイは、(乗算・加算)ユニットの周辺アレイを含む。
一部の実施形態で、「NDP-DF」加速器ユニットダイは、順次に積層される複数の「NDP-DF」加速器ユニットダイの中の1つである。
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるプロセッサ、及びプロセッサに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
【0095】
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイは、ベースダイ上に積層される。
一部の実施形態で、テンソル計算データフロー加速器半導体回路は複数のNDP-DF加速器ユニットダイ及びベースダイを貫通して配置される1つ以上のTSV(through silicon via)をさらに含む。
一部の実施形態で、1つ以上のTSVは、複数の「NDP-DF」加速器ユニットダイとベースダイ、及びベースダイとプロセッサを相互接続するように構成される。
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイとベースダイは、プロセッサから計算をオフロード(offload)するように構成される。
【0096】
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるコントローラ、及びコントローラに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイは、ベースダイ上に積層される。
一部の実施形態で、テンソル計算データフロー加速器半導体回路は、複数の「NDP-DF」加速器ユニットダイとベースダイを貫通して配置される1つ以上のTSV(through silicon via)をさらに含む。
一部の実施形態で、1つ以上のTSVは、複数の「NDP-DF」加速器ユニットダイとベースダイ、及びベースダイとコントローラを相互接続するように構成される。
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイとベースダイは、テンソル計算データフロー加速器半導体回路から分離されたホストから計算をオフロードするように構成される。
【0097】
一部の実施形態において、複数の積層された「NDP-DF」加速器ユニットダイとベースダイは、並列に部分出力データを処理するように構成される。
一部の実施形態で、複数の積層された「NDP-DF」加速器ユニットダイとベースダイは、逆方向へ部分出力データを伝播させるように構成される。
一部の実施形態で、複数の積層された「NDP-DF」加速器ユニットダイとベースダイは、部分行列転置を実行するように構成される。
【0098】
本発明の一実施形態は、GEMMデータフロー加速器半導体回路を含む。
GEMMデータフロー加速器半導体回路は、メモリバンク、メモリバンクに格納された周辺ルックアップテーブル、ルックアップテーブルヘのローアドレスとして使用される第1ベクトルを格納するように構成される第1ベクトルバッファを含む。
GEMMデータフロー加速器半導体回路は、ルックアップテーブルヘのカラムアドレスとして使用される第2ベクトルを格納するように構成される第2ベクトルバッファをさらに含み得る。
【0099】
GEMMデータフロー加速器半導体回路は、1つ以上のルックアップテーブルエントリを受信するように構成される1つ以上のルックアップテーブルバッファをさらに含み得る。
一部の実施形態で、第2ベクトルバッファは、第2ベクトルを1つ以上のルックアップテーブルバッファにストリーミングするように構成され、1つ以上のルックアップテーブルバッファは、ルックアップテーブルから1つ以上のルックアップテーブルエントリを格納するように構成される。
一部の実施形態で、1つ以上のルックアップテーブルバッファは、乗算演算を実行しなく、第1ベクトルと第2ベクトルの積を決定するように構成される。
一部の実施形態で、積は第1積であり、GEMM回路は、第1積と第2積を加算するように構成される1つ以上の加算器、第1積と第2積の合算結果を格納するように構成される出力バッファをさらに含む。
【0100】
一部の実施形態で、1つ以上のルックアップテーブルバッファは、乗算演算を実行しないで、ルックアップテーブルヘの、各々、カラムアドレス及びローアドレスとして、第1ベクトルの値と第2ベクトルの値を利用して第1積を決定するように構成される。
一部の実施形態で、1つ以上のルックアップテーブルバッファは、乗算演算を実行しなく、ルックアップテーブルヘの、各々、カラムアドレス及びローアドレスとして、第3ベクトルの値と第4ベクトルの値を利用して第2積を決定するように構成される。
一部の実施形態で、メモリバンク、周辺ルックアップテーブル、第1ベクトルバッファ、1つ以上のルックアップテーブルバッファ、及び第2ベクトルバッファは、階層的ルックアップ構造を形成してレイテンシを減少させる。
【0101】
一部の実施形態で、GEMMデータフロー加速器半導体回路は、1つ以上のルックアップテーブルバッファを含む複数のルックアップテーブルバッファをさらに含む。
一部の実施形態で、複数のルックアップテーブルバッファは、該当複数の行列ベクトルを格納してメモリバンクに格納されたルックアップテーブルにアクセスすることなく、乗算演算を実行しないで、複数の行列ベクトルの複数の積を決定するように構成される。
一部の実施形態で、GEMMデータフロー加速器半導体回路は、スマートバンクユニットの周辺アレイをさらに含む。
一部の実施形態で、スマートバンクユニットの周辺アレイは、データ累算のためにスマートバンクユニットのアレイの中の1つのスマートバンクユニットからの部分出力データがスマートバンクユニットのアレイの中の他のスマートバンクユニットに入力されるパイプライン方式のデータフローチェーンを形成するように構成される。
【0102】
一部の実施形態で、スマートバンクユニットの各々は、メモリバンク、ルックアップテーブル、複数のルックアップテーブルバッファ、1つ以上の加算器、及び出力バッファを含む。
一部の実施形態で、複数のスマートバンクユニットの中の第1スマートバンクユニットは、第1スマートバンクユニットに隣接する第2スマートバンクユニットに積を出力するように構成される。
一部の実施形態で、第2スマートバンクユニットは、第1スマートバンクユニットから受信した積を格納するように構成される。
一部の実施形態で、積は第1積であり、第2スマートバンクユニットは、ストリーミング方式でメモリバンクから第3ベクトルを受信するように構成される。
【0103】
一部の実施形態で、第2スマートバンクユニットの1つ以上のルックアップテーブルバッファは、乗算演算を実行しないで、ルックアップテーブルを利用して第3ベクトルに基づいて第2積を決定するように構成される。
一部の実施形態で、第2スマートバンクユニットの1つ以上の加算器は、第1積と第2積の和を計算するように構成される。
一部の実施形態で、第2スマートバンクユニットの出力バッファは、第1積と第2積の和を格納するように構成される。
一部の実施形態で、第2スマートバンクユニットは第1積と第2積の和をスマートバンクユニットの周辺アレイの中で第3スマートバンクユニットに出力するように構成される。一部の実施形態で、第3スマートバンクユニットは第2スマートバンクユニットに隣接する。一部の実施形態で、第3スマートバンクユニットは和を格納するように構成される。
一部の実施形態で、スマートバンクユニットの周辺アレイは、蛇行的に部分和を伝播するように構成される。
一部の実施形態で、スマートバンクユニットの周辺アレイは、ストリーミング方式で複数の入力行列ベクトルを受信し、部分和のデータフロー方向と垂直になる方向に複数の入力行列ベクトルを伝播するように構成される。
【0104】
一部の実施形態で、メモリバンクは、DRAMメモリバンクであり、回路は、複数のチャンネルを含む「NDP-DF」(near-DRAM-processing dataflow)加速器ユニットダイをさらに含む。
一部の実施形態で、チャンネルの各々は、蛇行的に配列されるスマートバンクユニットの周辺アレイを含む。
一部の実施形態で、スマートバンクユニットの各々は、DRAMバンク、ルックアップテーブル、複数のルックアップテーブルバッファ、1つ以上の加算器、及び出力バッファを含む。
【0105】
一部の実施形態で、「NDP-DF」加速器ユニットダイは、順次に積層される複数の「NDP-DF」加速器ユニットダイの中の1つである。
一部の実施形態で、GEMM回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるプロセッサ、及びプロセッサに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイは、ベースダイ上に積層される。
一部の実施形態で、GEMM回路は、複数の「NDP-DF」加速器ユニットダイ及びベースダイを貫通して配置される1つ以上のTSV(through silicon via)をさらに含む。
【0106】
一部の実施形態で、1つ以上のTSVは、複数の「NDP-DF」加速器ユニットダイとベースダイ、及びベースダイとプロセッサを相互接続するように構成される。
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイとベースダイは、プロセッサから計算をオフロードするように構成される。
一部の実施形態で、GEMMデータフロー加速器半導体回路は、パッシブシリコンインターポーザ、パッシブシリコンインターポーザ上に配置されるコントローラ、及びコントローラに隣接してパッシブシリコンインターポーザ上に配置されるベースダイをさらに含む。
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイは、ベースダイ上に積層される。
【0107】
一部の実施形態で、GEMMデータフロー加速器半導体回路は、複数の「NDP-DF」加速器ユニットダイとベースダイを貫通して配置される1つ以上のTSV(through silicon via)をさらに含む。
一部の実施形態で、1つ以上のTSVは、複数の「NDP-DF」加速器ユニットダイとベースダイ、及びベースダイとコントローラを相互接続するように構成される。
一部の実施形態で、複数の「NDP-DF」加速器ユニットダイとベースダイは、テンソル計算データフロー加速器半導体回路から分離されたホストから計算をオフロードするように構成される。
一部の実施形態で、複数の積層された「NDP-DF」加速器ユニットダイとベースダイは、並列に部分出力データを処理するように構成される。
【0108】
本発明の一実施形態と関連して説明した方法又はアルゴリズム及び機能のブロック又は段階は、ハードウェア方式、プロセッサによって実行されるソフトウェアモジュール、又はこれらの2つ間の組み合わせで直接的に具現することができる。
本発明の実施形態は、1つ以上のプロセッサによって実行可能な命令語を含む非一時的機械読み出し可能な記録媒体を含むことができ、命令語は本発明の一実施形態に係る要素を実行する命令語を含む。
【0109】
ソフトウェアとして具現されれば、機能は有形の(tangible)、非一時的(non-transitory)コンピュータ読み出し可能記録媒体上の1つ以上の命令語又はコードとして格納されるか、或いは伝送され得る。
ソフトウェアモジュールは、RAM(Random Access Memory)、フラッシュメモリ、ROM(Read Only Memory)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、レジスター、ハードディスク、移動式ディスク(removable disk)、CD ROM、又は技術分野に公知された任意の他の形態の記録媒体に位置することができる。
【0110】
次の論議は、本発明の特定な様相が具現され得る適切な機械(マシン)又は複合体の機械(machines)であり、一般的な説明を提供するように意図される。
普通、機械又は複合体機械は、プロセッサ、メモリ、例えばRAM、ROM、又は他の状態保持媒体、格納装置、ビデオインターフェイス、及び入力/出力インターフェイスポートが付着されたシステムバスを含む。
機械又は複合体機械は、少なくとも一部は他の機械から受信される指示、仮想現実(VR)環境との相互作用、生体フィードバック、又は他の入力信号のみならず、キーボード、マウス等のような通常的な入力装置からの入力によって制御される。
【0111】
ここで使用するように、“機械”の用語は、単一機械、仮想機械、又は複合体機械、仮想機械、又は共に動作する装置と通信するように結合されたシステムを広く含むことと意図する。
例示的な機械は、例えば自動車、鉄道列車、タクシー等のような個人用又は公共輸送のような輸送装置のみならず、個人用コンピュータ、ワークステーション、サーバー、ポータブル(portable)コンピュータ、ハンドヘルド(handheld)装置、電話、タブレット(tablets)等のようなコンピューティング装置を含む。
機械又は複合体機械は、プログラム可能な又はプログラム不可能である論理装置又はアレイ、ASIC(Application Specific Integrated Circuit)、埋め込み型コンピュータ、スマートカード等のような埋め込み型コントローラを含むことができる。
機械又は複合体機械は、ネットワークインターフェイス、モデム、又は他の通信カップリングを介して、1つ以上の遠隔機械に対する1つ以上の接続を利用できる。
【0112】
機械は、イントラネット、インターネット、LAN(local area networks)、WAN(wide area networks)等のような物理的及び/又は論理的ネットワークを経由して相互接続され得る。
当業者は、ネットワーク通信が多様な有線及び/又は無線近距離又は遠距離キャリヤー及び無線周波数(RF)、衛星、マイクロ波、IEEE(Institute of Electrical and Electronics Engineers)545.11、Bluetooth(登録商標)、光学、赤外線、ケーブル、レーザー等を含むプロトコルを活用できることを理解できる。
【0113】
本発明の実施形態は、機械によってアクセスされる時に機械が作業を実行するか、又は抽象的なデータ類型又は低レベルハードウェアコンテキストを定義することを引き起こす関数、手続、データ構造、アプリケーションプログラム等を含む関連したデータを参照して、又は協力して説明することができる。
関連したデータは、例えば、RAM、ROM等のような揮発性及び/又は不揮発性メモリ、又は他のストレージ装置、及びハードドライブ、フロッピーディスク(登録商標)、光学ストレージ、テープ、フラッシュメモリ、メモリスティック(登録商標)、デジタルビデオディスク、生体ストレージ等を含む関連したストレージ媒体に格納することができる。
関連したデータは、物理的及び/又は論理的ネットワークを含む伝送環境を経てパケット、直列データ、並列データ、伝送信号等の形態に伝達され、圧縮された又は暗号化されたフォーマットとして利用される。
関連したデータは、分散環境で使用することができ、機械アクセスに対して地域的及び/又は遠隔に格納することができる。
【0114】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0115】
100 浮動少数点乗算累算エンジン
105 ルックアップテーブル
110 符号ビットロジック
115 加算器回路
120 累算器(又は累積器)
145 符号ビット((A-符号ビット)、(B-符号ビット))
150 指数((A-指数)、(B-指数))
155 少数((A-少数)及び(B-少数))
202 ローカルDRAMバンク
220 (C-エントリ)
225 (A-エントリ)
230 (B-エントリ)
235、235a、235b ルックアップテーブルバッファ
300 GEMMデータフロー加速器
305 Bベクトルバッファ
310 Aベクトルバッファ
315a、315b 加算器
320 出力バッファ
325 ルックアップテーブルアレイ
330 データアレイ
335 ルックアップテーブルバッファ区域
400 集積されたスタックデータフロー加速器
405 スタック(レイヤー)
410 「NDP-DF」加速器ユニット
415 ベースダイ
420 パッシブシリコンインターポーザ
425 プロセッサ
435 TSV(Through silicon via)
500 ホスト
505 通信リンク