(57)【要約】      （修正有）【課題】ディープラーニングアクセラレータのための高帯域幅メモリを含むストレージデバイス及びその制御方法を提供する。【解決手段】ストレージデバイス１００（アクセラレータカード）は、ホスト１１０、ロジックダイ及びメモリダイを含む高帯域幅のメモリスタック１２０Ａ〜１２０Ｄを含む。メモリダイのメモリアレイは、計算ルックアップテーブルを格納する。ホストは、カーネル及び複数の入力特徴マップを使用して演算を実行するためのコマンドを伝送し、カーネルの加重値と多数の入力特徴マップの値の積を求める。計算ルックアップテーブルは、複数のカラムと、カーネルの加重値に対応する複数のローを含む。カラムは、入力特徴マップの値に対応し、ローとカラムに対応する位置に格納された結果値は、ローに対応する加重値とカラムに対応する値との積である。【選択図】図１
2019109886.tif 000002
【特許請求の範囲】
【請求項１】
ストレージデバイスであって、
カーネルと複数の入力特徴マップとを用いて演算を実行するためのコマンドを伝送するホストと、
前記ホストに結合され、前記コマンドを受信するように構成されるロジックダイと、
メモリアレイを含む前記ロジックダイに結合されるメモリダイを含む高帯域幅メモリ（Ｈｉｇｈ  Ｂａｎｄｗｉｄｔｈ  Ｍｅｍｏｒｙ：ＨＢＭ）スタックと、を有し、
前記カーネルは、複数の加重値を含み、
前記入力特徴マップは、複数の値を含み、
前記演算は、前記カーネルの第１加重値と前記複数の入力特徴マップの内の２つ以上の入力特徴マップのそれぞれの前記複数の値の内の第１値との積を決定することを含み、
前記カーネル及び前記複数の入力特徴マップは、前記メモリアレイに格納され、
計算ルックアップテーブルが前記メモリアレイに格納され、
前記計算ルックアップテーブルは、複数のロー（ｒｏｗ）及び複数のカラム（ｃｏｌｕｍｎ）を有し、前記複数のローの内、第１ローは、前記カーネルの複数の加重値の中の１つに対応し、前記複数のカラムの内、第１カラムは、前記複数の入力特徴マップの値の中の１つに対応し、
第１結果値は、前記計算ルックアップテーブルの第１位置に格納され、
前記第１位置は、前記第１ローと前記第１カラムに対応し、
前記第１結果値は、前記第１ローに対応する前記複数の加重値の中の１つと、前記第１カラムに対応する前記複数の値の中の１つと、の積であることを特徴とするストレージデバイス。
【請求項２】
第１ローデコーダーと、第２ローデコーダーと、をさらに有し、
前記メモリダイは、前記第１加重値に対応する前記計算ルックアップテーブルの前記第１ローをローバッファーにロード（ｌｏａｄ）するために、前記第１ローデコーダーに前記第１加重値を入力し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値を中間バッファーにロードするために、前記第１加重値を前記第２ローデコーダーに入力することを特徴とする請求項１に記載のストレージデバイス。
【請求項３】
カラムアクセススケジューラーと、カラムデコーダーと、をさらに有し、
前記カラムアクセススケジューラーは、前記中間バッファからの前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値を受信し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値について、前記第１値に対応する前記第１カラムに対応する前記ローバッファーの位置の前記第１結果値にアクセスするように前記カラムデコーダーを制御し、前記第１結果値を読み取りバッファーに出力するように構成されることを特徴とする請求項２に記載のストレージデバイス。
【請求項４】
前記ロジックダイは、処理要素（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）を含み、
前記読み取りバッファーは、前記中間バッファーの前記第１値に対する前記第１結果値を受信するとき、前記第１値に対する前記第１結果値を前記ロジックダイに出力し、
前記処理要素は、前記第１値に対する前記第１結果値を処理するように構成されることを特徴とする請求項３に記載のストレージデバイス。
【請求項５】
前記処理要素は、第１入力特徴マップに対応する前記第１値に対応する前記第１結果値を受信し、前記第１入力特徴マップに対する出力を生成するために前記受信した前記第１結果値を他の受信した結果値と結合するように構成されることを特徴とする請求項４に記載のストレージデバイス。
【請求項６】
前記ホストは、第２カーネル及び第２の複数の入力特徴マップを用いて第２演算を実行するための第２コマンドを伝送し、
第２計算ルックアップテーブルは、前記メモリアレイに格納され、
前記第２計算ルックアップテーブルは、複数のローを有し、前記第２計算ルックアップテーブルの前記複数のロー（ｒｏｗ）の内、第２ローは前記第２カーネルの前記複数の加重値に対応し、
前記第２計算ルックアップテーブルは、複数のカラム（ｃｏｌｕｍｎ）を有し、前記第２計算ルックアップテーブルの前記複数のカラムの内、前記第２カラムは第２の複数の入力特徴マップの前記値の中の１つに対応し、
第２結果値は、前記第２計算ルックアップテーブルの第２位置に格納され、
前記第２位置は、前記複数のローの内の第２ロー、及び前記第２計算ルックアップテーブルの前記複数のカラムの内の第２カラムに対応し、
前記第２結果値は、前記第２ローに対応する前記加重値と第２カラムに対応する前記値との積であることを特徴とする請求項１に記載のストレージデバイス。
【請求項７】
前記第２コマンドは、前記第２カーネルを前記第２の複数の入力特徴マップのうち、２つ以上の入力特徴マップとコンボルブ（ｃｏｎｖｏｌｖｅ：畳み込み）するコンボリューション演算（ｃｏｎｖｏｌｕｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）を実行するためのものであることを特徴とする請求項６に記載のストレージデバイス。
【請求項８】
前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップに前記カーネルを乗算することであることを特徴とする請求項１に記載のストレージデバイス。
【請求項９】
前記ストレージデバイスは、前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するように構成されることを特徴とする請求項１に記載のストレージデバイス。
【請求項１０】
前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドによって識別される演算に基づくことを特徴とする請求項９に記載のストレージデバイス。
【請求項１１】
ストレージデバイスを制御する方法であって、
カーネルと複数の入力特徴マップを使用する演算を実行するためのロジックダイにコマンドを伝送するステップと、
メモリアレイに前記カーネルと前記複数の入力特徴マップを格納するステップと、を有し、
前記カーネルは、複数の加重値を含み、
前記入力特徴マップは、複数の値を含み、
前記演算は、前記カーネルの第１加重値と前記複数の入力特徴マップの内の２つ以上の入力特徴マップのそれぞれの前記複数の値の内の第１値との積を決定するステップを含み、
計算ルックアップテーブルが前記メモリアレイに格納され、
前記計算ルックアップテーブルは、複数のロー（ｒｏｗ）及び複数のカラム（ｃｏｌｕｍｎ）を有し、前記複数のローの内、第１ローは、前記カーネルの複数の加重値の中の１つに対応し、前記複数のカラムの内、第１カラムは、前記複数の入力特徴マップの値の中の１つに対応し、
第１結果値は、前記計算ルックアップテーブルの第１位置に格納され、
前記第１位置は、前記第１ローと前記第１カラムに対応し、
前記第１結果値は、前記第１ローに対応する前記加重値と前記第１カラムに対応する前記値との積であることを特徴とするストレージデバイスの制御方法。
【請求項１２】
前記第１加重値に対応する前記計算ルックアップテーブルの前記第１ローをローバッファーにロード（ｌｏａｄ）するために、第１ローデコーダーに前記第１加重値を入力するステップと、
前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値を中間バッファーにロードするために、前記第１加重値を第２ローデコーダーに入力するステップと、をさらに有することを特徴とする請求項１１に記載のストレージデバイスの制御方法。
【請求項１３】
前記中間バッファーから前記複数の入力特徴マップの内の２つ以上の入力特徴マップのそれぞれの前記第１値を受信するステップと、
前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値について、前記第１値に対応する前記第１カラムに対応する前記ローバッファーの位置の前記第１結果値にアクセスするステップと、
前記第１結果値を読み込みバッファーに出力するステップと、をさらに有することを特徴とする請求項１２に記載のストレージデバイスの制御方法。
【請求項１４】
前記中間バッファー内の前記第１値に対する前記第１結果値を受信すると、前記第１値に対する前記第１結果値をロジックダイに出力するステップと、
処理要素により前記第１値ごとに前記第１結果値を処理するステップと、をさらに有することを特徴とする請求項１３に記載のストレージデバイスの制御方法。
【請求項１５】
前記処理要素により処理するステップは、第１入力特徴マップに対応する前記第１値に対応する前記第１結果値を受信するステップと、
前記第１入力特徴マップに対する出力値を生成するために、前記受信した第１結果値を前記第１入力特徴マップに対する他の受信した結果値と結合するステップと、を含むことを特徴とする請求項１４に記載のストレージデバイスの制御方法。
【請求項１６】
第２カーネル及び第２の複数の入力特徴マップを用いて第２演算を実行するための前記ロジックダイに第２コマンドを伝送するステップと、
前記メモリアレイに第２計算ルックアップテーブルを格納するステップと、をさらに有し、
前記第２計算ルックアップテーブルは、複数のロー（ｒｏｗ）と複数のカラム（ｃｏｌｕｍｎ）を含み、前記第２計算ルックアップテーブルの前記複数のローの内、第２ローは、前記第２カーネルの前記複数の加重値の中の１つに対応し、
前記第２計算ルックアップテーブルの前記複数のカラムの内、第２コラムは、前記第２の複数の入力特徴マップの前記値の中の１つに対応し、
第２結果値は、前記第２計算ルックアップテーブルの第２位置に格納され、
前記第２位置は、前記第２計算ルックアップテーブルの前記第２ロー及び前記第２カラムに対応し、
前記第２結果値は、前記第２ローに対応する前記加重値と前記第２カラムに対応する前記値との積であることを特徴とする請求項１１に記載のストレージデバイスの制御方法。
【請求項１７】
前記第２コマンドは、前記第２の複数の入力特徴マップの内の前記２つ以上を前記第２カーネルとコンボルブ（ｃｏｎｖｏｌｖｅ：畳み込み）するコンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算を実行するためのものであることを特徴とする請求項１６に記載のストレージデバイスの制御方法。
【請求項１８】
前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップに前記カーネルを乗算することであることを特徴とする請求項１１に記載のストレージデバイスの制御方法。
【請求項１９】
前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するステップと、をさらに有することを特徴とする請求項１１に記載のストレージデバイスの制御方法。
【請求項２０】
前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドに基づいて識別される演算に基づくことを特徴とする請求項１９に記載のストレージデバイスの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリに関し、特に、ディープラーニングアクセラレータのための高帯域幅メモリを含むストレージデバイス及びその制御方法に関する。
【背景技術】
【０００２】
ディープニューラルネットワークを含むマシンラーニングアプリケーションは、多くの計算やメモリの要件を含む多くの動作を包含している。
したがって、マシンラーニングアプリケーションは、相異なるデータセットを訓練するために多くのリソースを必要とすることで正確に学習することができる。
【０００３】
しかしながら、マシンラーニングアプリケーションや、グラフィックアルゴリズムを含む他のコンピューティング・アプリケーションは、コンピュータの要件及びメモリ要件の増加を引き起こしているという問題がある。
メモリでの処理は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）ではなく、メモリブロック内で計算を実行することによって、これらの問題のいくつかに対処するために使用されてきた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７０５５０１８号明細書
【特許文献２】米国特許第７３０５５４０号明細書
【特許文献３】米国特許第８８９０２１５号明細書
【特許文献４】米国特許第９０５３９５１号明細書
【特許文献５】米国特許第９５７７６４４号明細書
【特許文献６】米国特許第９７２７１１３号明細書
【特許文献７】米国特許出願公開第２０１６／００９８２００号明細書
【特許文献８】米国特許出願公開第２０１６／０３７９１１５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は上記従来のメモリにおける問題点に鑑みてなされたものであって、本発明の目的は、ディープラーニングアクセラレータのための高帯域幅メモリを含むストレージデバイス及びその制御方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた本発明によるストレージデバイスは、カーネルと複数の入力特徴マップとを用いて演算を実行するためのコマンドを伝送するホストと、前記ホストに結合され、前記コマンドを受信するように構成されるロジックダイと、メモリアレイを含む前記ロジックダイに結合されるメモリダイを含む高帯域幅メモリ（Ｈｉｇｈ  Ｂａｎｄｗｉｄｔｈ  Ｍｅｍｏｒｙ：ＨＢＭ）スタックと、を有し、前記カーネルは、複数の加重値を含み、前記入力特徴マップは、複数の値を含み、前記演算は、前記カーネルの第１加重値と前記複数の入力特徴マップの内の２つ以上の入力特徴マップのそれぞれの前記複数の値の内の第１値との積を決定することを含み、前記カーネル及び前記複数の入力特徴マップは、前記メモリアレイに格納され、計算ルックアップテーブルが前記メモリアレイに格納され、前記計算ルックアップテーブルは、複数のロー（ｒｏｗ）及び複数のカラム（ｃｏｌｕｍｎ）を有し、前記複数のローの内、第１ローは、前記カーネルの複数の加重値の中の１つに対応し、前記複数のカラムの内、第１カラムは、前記複数の入力特徴マップの値の中の１つに対応し、第１結果値は、前記計算ルックアップテーブルの第１位置に格納され、前記第１位置は、前記第１ローと前記第１カラムに対応し、前記第１結果値は、前記第１ローに対応する前記複数の加重値の中の１つと、前記第１カラムに対応する前記複数の値の中の１つと、の積であることを特徴とする。
【０００７】
第１ローデコーダーと、第２ローデコーダーと、をさらに有し、前記メモリダイは、前記第１加重値に対応する前記計算ルックアップテーブルの前記第１ローをローバッファーにロード（ｌｏａｄ）するために、前記第１ローデコーダーに前記第１加重値を入力し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値を中間バッファーにロードするために、前記第１加重値を前記第２ローデコーダーに入力することが好ましい。
カラムアクセススケジューラーと、カラムデコーダーと、をさらに有し、前記カラムアクセススケジューラーは、前記中間バッファからの前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値を受信し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値について、前記第１値に対応する前記第１カラムに対応する前記ローバッファーの位置の前記第１結果値にアクセスするように前記カラムデコーダーを制御し、前記第１結果値を読み取りバッファーに出力するように構成されることが好ましい。
前記ロジックダイは、処理要素（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔ）を含み、前記読み取りバッファーは、前記中間バッファーの前記第１値に対する前記第１結果値を受信するとき、前記第１値に対する前記第１結果値を前記ロジックダイに出力し、前記処理要素は、前記第１値に対する前記第１結果値を処理するように構成されることが好ましい。
前記処理要素は、第１入力特徴マップに対応する前記第１値に対応する前記第１結果値を受信し、前記第１入力特徴マップに対する出力を生成するために前記受信した前記第１結果値を他の受信した結果値と結合するように構成されることが好ましい。
【０００８】
前記ホストは、第２カーネル及び第２の複数の入力特徴マップを用いて第２演算を実行するための第２コマンドを伝送し、第２計算ルックアップテーブルは、前記メモリアレイに格納され、前記第２計算ルックアップテーブルは、複数のローを有し、前記第２計算ルックアップテーブルの前記複数のロー（ｒｏｗ）の内、第２ローは前記第２カーネルの前記複数の加重値に対応し、前記第２計算ルックアップテーブルは、複数のカラム（ｃｏｌｕｍｎ）を有し、前記第２計算ルックアップテーブルの前記複数のカラムの内、前記第２カラムは第２の複数の入力特徴マップの前記値の中の１つに対応し、第２結果値は、前記第２計算ルックアップテーブルの第２位置に格納され、前記第２位置は、前記複数のローの内の第２ロー、及び前記第２計算ルックアップテーブルの前記複数のカラムの内の第２カラムに対応し、前記第２結果値は、前記第２ローに対応する前記加重値と第２カラムに対応する前記値との積であることが好ましい。
前記第２コマンドは、前記第２カーネルを前記第２の複数の入力特徴マップのうち、２つ以上の入力特徴マップとコンボルブ（ｃｏｎｖｏｌｖｅ：畳み込み）するコンボリューション演算（ｃｏｎｖｏｌｕｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）を実行するためのものであることが好ましい。
前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップに前記カーネルを乗算することであることが好ましい。
前記ストレージデバイスは、前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するように構成されることが好ましい。
前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドによって識別される演算に基づくことが好ましい。
【０００９】
上記目的を達成するためになされた本発明によるストレージデバイスの制御方法は、カーネルと複数の入力特徴マップを使用する演算を実行するためのロジックダイにコマンドを伝送するステップと、メモリアレイに前記カーネルと前記複数の入力特徴マップを格納するステップと、を有し、前記カーネルは、複数の加重値を含み、前記入力特徴マップは、複数の値を含み、前記演算は、前記カーネルの第１加重値と前記複数の入力特徴マップの内の２つ以上の入力特徴マップのそれぞれの前記複数の値の内の第１値との積を決定するステップを含み、計算ルックアップテーブルが前記メモリアレイに格納され、前記計算ルックアップテーブルは、複数のロー（ｒｏｗ）及び複数のカラム（ｃｏｌｕｍｎ）を有し、前記複数のローの内、第１ローは、前記カーネルの複数の加重値の中の１つに対応し、前記複数のカラムの内、第１カラムは、前記複数の入力特徴マップの値の中の１つに対応し、第１結果値は、前記計算ルックアップテーブルの第１位置に格納され、前記第１位置は、前記第１ローと前記第１カラムに対応し、前記第１結果値は、前記第１ローに対応する前記加重値と前記第１カラムに対応する前記値との積であることを特徴とする。
【００１０】
前記第１加重値に対応する前記計算ルックアップテーブルの前記第１ローをローバッファーにロード（ｌｏａｄ）するために、第１ローデコーダーに前記第１加重値を入力するステップと、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値を中間バッファーにロードするために、前記第１加重値を第２ローデコーダーに入力するステップと、をさらに有することが好ましい。
前記中間バッファーから前記複数の入力特徴マップの内の２つ以上の入力特徴マップのそれぞれの前記第１値を受信するステップと、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップのそれぞれの前記第１値について、前記第１値に対応する前記第１カラムに対応する前記ローバッファーの位置の前記第１結果値にアクセスするステップと、前記第１結果値を読み込みバッファーに出力するステップと、をさらに有することが好ましい。
前記中間バッファー内の前記第１値に対する前記第１結果値を受信すると、前記第１値に対する前記第１結果値をロジックダイに出力するステップと、処理要素により前記第１値ごとに前記第１結果値を処理するステップと、をさらに有することが好ましい。
前記処理要素により処理するステップは、第１入力特徴マップに対応する前記第１値に対応する前記第１結果値を受信するステップと、前記第１入力特徴マップに対する出力値を生成するために、前記受信した第１結果値を前記第１入力特徴マップに対する他の受信した結果値と結合するステップと、を含むことが好ましい。
【００１１】
第２カーネル及び第２の複数の入力特徴マップを用いて第２演算を実行するための前記ロジックダイに第２コマンドを伝送するステップと、前記メモリアレイに第２計算ルックアップテーブルを格納するステップと、をさらに有し、前記第２計算ルックアップテーブルは、複数のロー（ｒｏｗ）と複数のカラム（ｃｏｌｕｍｎ）を含み、前記第２計算ルックアップテーブルの前記複数のローの内、第２ローは、前記第２カーネルの前記複数の加重値の中の１つに対応し、前記第２計算ルックアップテーブルの前記複数のカラムの内、第２コラムは、前記第２の複数の入力特徴マップの前記値の中の１つに対応し、第２結果値は、前記第２計算ルックアップテーブルの第２位置に格納され、前記第２位置は、前記第２計算ルックアップテーブルの前記第２ロー及び前記第２カラムに対応し、前記第２結果値は、前記第２ローに対応する前記加重値と前記第２カラムに対応する前記値との積であることが好ましい。
前記第２コマンドは、前記第２の複数の入力特徴マップの内の前記２つ以上を前記第２カーネルとコンボルブ（ｃｏｎｖｏｌｖｅ：畳み込み）するコンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算を実行するためのものであることが好ましい。
前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記２つ以上の入力特徴マップに前記カーネルを乗算することであることが好ましい。
前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するステップと、をさらに有することが好ましい。
前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドに基づいて識別される演算に基づくことが好ましい。
【発明の効果】
【００１２】
本発明に係るストレージデバイス及びその制御方法によれば、ＤＲＡＭダイ上のメモリルックアップの計算とロジックダイでの累積演算とを完全に重複して行うことができるので、ハードウェアは完全に使用され、全体の処理量が高くなる、という効果がある。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態によるアクセラレータカードの概要を示す上面図である。
【図２】本発明の一実施形態によるアクセラレータカードの概要を示す側面図である。
【図３】本発明の一実施形態によるＤＲＡＭダイ及びロジックダイの概略構成を示すブロック図である。
【図４】本発明の一実施形態による図３の処理ブロックの一例を示すブロック図である。
【図５】本発明の一実施形態によるバッチ処理されたコンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算を説明するための図である。
【図６】図５のバッチ処理されたコンボリューション演算の出力を示す図である。
【図７】本発明の一実施形態によるバッチ処理された行列乗算の演算を説明するための図である。
【図８】本発明の実施形態による点ごとの（ｐｏｉｎｔｗｉｓｅ）演算を説明するためのブロック図である。
【発明を実施するための形態】
【００１４】
次に、本発明に係るストレージデバイス及びその制御方法を実施するための形態の具体例を図面を参照しながら説明する。
【００１５】
以下、具体的な説明において、例示により、本発明の特定の実施形態だけが示して説明する。通常の技術者（当業者）が理解できるよう、発明が多くの相異なる形態で具現され、本明細書で説明する実施形態に限定されるものと理解されてはならない。それぞれの実施形態内の特徴又は側面の説明は、他の実施形態の他の類似した特徴又は側面に対し利用可能なものと、一般的に考慮されるべきである。明細書全般にかけて同じ参照番号は同じ構成要素を示す。
【００１６】
図面で、構成要素、層及び領域の相対的な大きさは、明確性のために誇張することができる。一つの要素又は図面で図示された他の構成要素又は特徴との特徴的な関係を説明するための説明を容易にするために、「下の」、「下」、「低い」、「特定の部分下」、「上に」、「上部」のような空間的で相対的な用語がここで使用することができる。空間的で相対的な用語は、図面で描写された方向に加えて使用又は動作で、デバイスの他の方向を含むように意図されたことが理解されるだろう。例えば、もし図面の装置が回転されると、他の構成要素、特徴の「下」、「下の」又は「特定の部分の下」で説明された構成要素は、他の構成要素又は特徴の「上に」に合わせられるようになる。したがって、「下の」又は「特定の部分の下」の例示的な用語は、上又は下方向の両方を含み得る。デバイスは、異なるように合わせられ（例えば、９０度回転、又は他の方向に回転される）、これにより、空間的に相対的な記述子は、それに応じて解釈されるべきである。
【００１７】
但し、ここで「第１」、「第２」、「第３」などの用語は多様な要素、成分、領域、層、及び／又はセクションを説明するために使用するが、斯かる要素、成分、領域、層、及び／又はセクションは、斯かる用語により限定されないことと理解されるだろう。斯かる用語は、他の要素、成分、領域、層、又はセクションから一つの要素、構成、領域、層、又はセクションを区別するために使用される。したがって、後述する第１構成要素、成分、領域、層、又はセクションは、本発明の思想及び範囲を逸脱せずに、第２構成要素は、成分、領域、層、又はセクションを指し示すことができる。
【００１８】
本明細書で使用する用語は、単に特定の実施形態を説明するためのものであって、本発明を制限しようとするものではない。本明細書で使用するように、文脈上明らかに異なると意味しない限り、単数形「一つ」は、複数形も含むものと意図される。「構成される」、「構成されている」、「含む」、そして「包含している」という用語は、本明細書で使用するとき、斯かる用語は、定められた特徴、整数、ステップ、動作、要素、及び／又は成分が存在を明示するが、一つ又はそれ以上の他の特徴、整数、ステップ、動作、要素、成分、及び／又はそれらのグループの追加又は存在を不可能にしない。本明細書で使用するように、「及び／又は」という用語は、一つ又はそれ以上の列挙された項目と関連された任意かつすべての組み合わせを包含する。「少なくとも一つ」のような表現は、要素全体のリストを修正して、リストの個々の要素を修正しない。
【００１９】
本明細書で使用したように、「できる」の使用は、本発明の実施形態を説明するとき、「本発明の１つ以上の実施形態」を指し示す。本明細書で使用するように、「使用する」、「使用する〜」、及び「使用された」という用語は、「利用する」、「利用する〜」、及び「使用された」という用語の同義語としてそれぞれ見なすことができる。なお、「例示的な」という用語は、例示又は実施形態を示すことを意図する。
異なるように定義されていない限り、本明細書で使用する（技術的な、科学的な用語を包含する）すべての用語は、本発明が属する技術分野における通常の技術者（当業者）によって一般的に理解されるのと同一な意味を有する。
一般的に使用される辞典で定義される用語のような用語は、本明細書で明示的に定義されていない限り、関連した技術及び／又は本明細書の脈絡での意味と一致する意味を有するものと解釈されるべきで、理想的であるか、過度に形式的な意味で解釈されてはならない。
【００２０】
図１は、本発明の一実施形態によるアクセラレータカード１００（例えば、グラフィックスカード）の概要を示す上面図である。
アクセラレータカード１００は、ＨＢＭ２のような高帯域幅メモリ（Ｈｉｇｈ−Ｂａｎｄｗｉｄｔｈ  Ｍｅｍｏｒｙ：ＨＢＭ）アーキテクチャを使用することができる。
アクセラレータカード１００は、ホスト１１０及び、複数のメモリスタック（以下、ＤＲＡＭスタック）（１２０Ａ〜１２０Ｄ）を包含する。
【００２１】
図２は、本発明の一実施形態によるアクセラレータカード１００の概要を示す側面図である。
図２の側面図は、ＤＲＡＭスタック１２０の中の１つを含む。
ＤＲＡＭスタック１２０は、複数のメモリダイ（ｄｉｅ）（以下、ＤＲＡＭダイ）（１２１Ａ〜１２１Ｄ）、及びロジックダイ１２３を含む。
いくつかの実施形態で、ＤＲＡＭスタック１２０は、アクセラレータダイ１２５を含むことができ、アクセラレータダイ１２５は、ロジックダイ１２３と協力して、又はロジックダイ１２３に代わって演算を行うことができる。
【００２２】
ホスト１１０は、インターポーザ（ｉｎｔｅｒｐｏｓｅｒ）１３０を介して、ロジックダイ１２３と接続される。
インターポーザ１３０は、ＨＢＭアーキテクチャを使用して、ホスト１１０が、複数のＤＲＡＭスタック（１２０Ａ〜１２０Ｄ）と通信するように設計することができる。
インターポーザ１３０は、ホスト１１０と外部システムとの間のインタフェースを提供できるパッケージ基板１４０に接続される（例えば、パッケージ基板１４０は、ＰＣＩｅコネクターを含み得る）。
【００２３】
図３は、本発明の一実施形態によるＤＲＡＭダイとロジックダイの概要を示すブロック図である。
ＤＲＡＭダイ１２１は、書き込みバッファー２４０、スケジューラー２５０、要請／応答キュー２６０、及び読み取りバッファー２７０を含む。
ＤＲＡＭダイ１２１はまた、１つ以上のメモリアレイにモデルパラメーター２１０、中間結果２２０、及び１つ以上の計算ルックアップテーブル２３０を含み得る。
書き込みバッファー２４０と読み取りバッファー２７０は、ＤＲＡＭダイ１２１のための入力及び出力ポイント（ｐｏｉｎｔｓ）としての役割を行い、スケジューラー２５０及び要請／応答キュー２６０は、ＤＲＡＭダイ１２１上でデータの流れを制御する。
【００２４】
ロジックダイ１２３は、出力バッファー３１０、１つ以上の処理ブロック（３２０Ａ、３２０Ｂ）、コマンドキュー３３０、入力バッファー３４０、スケジューラー３６０、及びコントローラー３７０を含む。
【００２５】
図４は、本発明の一実施形態による図３の処理ブロック（３２０Ａ、３２０Ｂ）の一例を示すブロック図である。
図４を参照すると、処理ブロック（３２０Ａ、３２０Ｂ）は、点ごとの（ｐｏｉｎｔｗｉｓｅ）乗算結果やコンボリューション（畳み込み）演算の一部の結果等の入力値を一時的に格納する入力バッファー３２１と、演算結果を一時的に格納する出力バッファー３１０とを有する。
処理ブロック３２０は、ディスパッチャー３２５、及び複数の処理要素（或いは処理素子）（ｐｒｏｃｅｓｓｉｎｇ  ｅｌｅｍｅｎｔｓ）（３２７Ａ〜３２７Ｄ）を含む。
ディスパッチャー３２５は、入力バッファー３２１のデータを処理要素（３２７Ａ〜３２７Ｄ）に伝送し、処理要素（３２７Ａ〜３２７Ｄ）からのデータを出力バッファー３２３に伝送する役割を担う。
【００２６】
図３を再び参照すると、ロジックダイ１２３の入力バッファー３４０及び出力バッファー３１０は、ロジックダイ１２３に対するデータを格納する。
コントローラー３７０は、ホスト１１０と通信する役割を担い、スケジューラー３６０は、計算作業をスケジューリングする役割を担う。
【００２７】
コントローラー３７０は、ホスト１１０からコマンドを受信する。
コマンドに応答して、コントローラー３７０は、コマンドの内容に基づいて、スケジューラー３６０に対し作業をスケジュールするように指示する。
スケジューラー３６０は、コマンドキュー３３０が事前計算データをＤＲＡＭダイ１２１に伝送することを要請することができる。
いくつかの実施形態では、事前計算データは、コマンドと共にホスト１１０から受信する。
いくつかの実施形態で、事前計算データは、ロジックダイ１２３により、例えば、ホスト１１０からのコマンドに基づいて、コントローラー３７０により、計算される。
【００２８】
事前計算データは、１つ以上のカーネルに対する加重値、１つ以上の入力特徴マップ（ｉｎｐｕｔ  ｆｅａｔｕｒｅ  ｍａｐ）、及び／又は１つ以上の計算ルックアップテーブルに対する値を含む。
ＤＲＡＭダイ１２１は、出力バッファー３１０から書き込みバッファー２４０まで事前計算データを一時的に読み取ることができ、スケジューラー２５０は、モデルパラメーター２１０のアレイ、又は中間結果２２０のアレイに事前計算データを格納することができる。
１つ以上のカーネルに対する加重値は、モデルパラメーター２１０のアレイに格納することができ、複数の入力特徴マップは、中間結果２２０のアレイに格納されることができる。
【００２９】
計算ルックアップテーブル２３０において、値は、ローとカラムに対応する位置に格納される。
それぞれのローとカラムの組み合わせは、位置とその位置に格納された値を有する。
いくつかの実施形態で、ホスト１１０は、計算ルックアップテーブル２３０の内容を計算し、その内容をアクセラレータカード１００に伝送する。
いくつかの実施形態で、計算ルックアップテーブルは、ホストメモリからローディングされる。
いくつかの実施形態で、ホスト１１０は、ロジックダイ１２３でプログラムを初期化することができ、これにより、ロジックダイ１２３は、計算ルックアップテーブルの内容を計算することができる。
【００３０】
計算ルックアップテーブル２３０は、点ごとの（ｐｏｉｎｔｗｉｓｅ）乗算のような事前構成値の点ごとの処理をサポートするように構成される。
計算ルックアップテーブル２３０は、事前構成値の第１セット（例えば、カーネルの加重値）に対するすべての可能な値に対応するローを含み、事前構成値の第２セット（例えば、入力特徴マップ）に対するすべての可能な値に対応するコラムを含む。
それぞれの位置に格納された値は、その位置について、ローに関連する値とカラムに関連する値との積である。
事前構成値の第１セットの中の１つと事前構成値の中の１つとを乗算するため、ＤＲＡＭダイ１２１は、事前構成値の第１セットの一つの値に対応するローを見つけ出してローデータをローバッファーに移すための計算ルックアップテーブル２３０上でのルックアップ動作を実行する。
その後、ＤＲＡＭダイ１２１は、事前構成値の第２セットの中の１つの値に対応するコラムに対するリストを見つけ出すためにローバッファーのローデータ上でのカラムルックアップ動作を実行し、その動作での値を読み取りバッファー２７０に出力する。
【００３１】
点ごとの乗算が以上の説明で実施形態として使用されるとしても、本発明は、これに限定されず、他の点ごとの演算が、本発明の権利範囲内にあることに注意を要する。
演算は、算術（例えば、指数関数）演算及び／又は論理（例えば、ＸＯＲ）演算を含み得る。
いくつかの実施形態で、ＤＲＡＭダイ１２１は、相異なる点ごとの演算に対応する複数の計算ルックアップテーブル２３０を含む（又は、１つの計算ルックアップテーブル２３０にそれぞれの点ごとの演算に対するそれぞれの値に対する複数のローを包含する）。
例として、第１計算ルックアップテーブル２３０でそれぞれの位置での値は、その位置に対してローとカラムに対応する値の積に対応し、第２計算ルックアップテーブル２３０でそれぞれの位置での値は、その位置に対しローとカラムに対応する値の間の商（ｑｕｏｔｉｅｎｔ）に対応する。
スケジューラー２５０は、点ごとの演算に対応する計算ルックアップテーブル２３０でのロー及び／又はカラムのアクセス動作をスケジューリングすることにより、どのような点ごとの演算を実行するかを判定する。
【００３２】
読み取りバッファー２７０の内容は、ロジックダイ１２３の入力バッファー３４０にストリーム処理される。
スケジューラー３６０は、入力バッファー３４０から処理ブロック３２０の入力バッファー３２１にデータをコピー（ｃｏｐｙ）し、処理ブロック３２０の処理要素（３２７Ａ〜３２７Ｄ）は、データ上で追加的な処理を実行して、そのデータを出力バッファー３２３に出力する。
【００３３】
ＤＲＡＭダイ１２１上でのメモリルックアップ計算及びロジックダイ１２３での累積演算は、完全に重複することができるので、ハードウェアは完全に使用されて、全体の処理量が高くなる。
【００３４】
いくつかの実施形態で、計算ルックアップテーブル２３０としてのメモリアレイ又は下位アレイの個数は、ホスト１１０から受信したコマンドのタイプに基づく。
メモリに対する計算の割合が高いコマンドに対しては、さらに多くの下位アレイが計算ルックアップテーブルとして構成され得、メモリに対する計算の割合が低いコマンドに対して、はるかに少ない下位アレイが計算ルックアップテーブルとして構成される。
カーネルのメモリに対する計算の割合は、計算ルックアップテーブルからアクセスされた処理要素当たりの演算（例えば、点ごとの演算）の個数を指し示す。
計算ルックアップテーブルを含むメモリ下位アレイの割合は、「ＯＰＡ×Ｍ／Ｎ」であり得る。
このとき、「ＯＰＡ」は、アクセスされた処理要素当り実行された点ごとの演算の数であり、「Ｍ」は、それぞれのメモリ下位アレイがそれぞれのサイクルに提供できる処理要素の個数であり、「Ｎ」は、それぞれの計算ルックアップテーブルがそれぞれのサイクル（ｃｙｃｌｅ）に提供できる点ごとの演算の個数である。
【００３５】
図５は、本発明の実施形態によるバッチ処理された（ｂａｔｃｈｅｄ）コンボリューション（ｃｏｎｖｏｌｕｔｉｏｎ）演算を説明するための図であり、図６は、図５のバッチ処理されたコンボリューション演算の出力を示す図である。
図５及び図６を参照すると、バッチ処理されたコンボリューション演算は、以上説明したＤＲＡＭスタック１２０により実行されうる。
ホスト１１０は、複数の入力特徴マップ５１０及び１つ以上のカーネル５２０を使用するバッチ処理されたコンボリューション演算の実行を指示するコマンドをコントローラー３７０に伝送する。
【００３６】
複数の入力特徴マップ５１０は、中間結果２２０のメモリアレイに格納され、１つ以上のカーネル５２０は、モデルパラメーター２１０のアレイに格納される。
バッチ処理サイズは、入力特徴マップ５１０の個数として理解することができる。
それぞれの入力特徴マップ５１０は、幅、高さ、及び深さ（ｄｅｐｔｈ）を有する値の３次元アレイであり得、入力チャンネルは、深さ（ｄｅｐｔｈ）として理解することができる。
カーネル５２０は、入力特徴マップ５１０の高さよりも小さいカーネルの高さ、入力特徴マップの幅よりも小さいカーネル幅、及び入力特徴マップの深さ（ｄｅｐｔｈ）と同等（つまり、入力チャンネルと同等）の深さ（ｄｅｐｔｈ）を有する値の３次元アレイであり得る。
【００３７】
カーネル５２０は、例えば、反復的なグリッドパターンで、入力特徴マップ５１０の複数の位置に適用される。
それぞれの位置で、カーネル５２０の加重値は、入力特徴マップ５１０の対応する値に掛けられる。
与えられた位置でそれぞれの加重値と入力特徴マップ５１０の対応する値の積は、その入力特徴マップのその位置に対し出力値「Ｐ１」、「Ｐ２」及び「Ｐ３」を得るために共に加わって、与えられた入力特徴マップ５１０のそれぞれの位置に対する値は、その入力特徴マップとカーネルの組み合わせに対する出力行列６１０を形成するために結合される。
このようなプロセスは、それぞれの入力特徴マップ及びそれぞれのカーネルについて反復される。
【００３８】
カーネルの加重値は「ｋｊ＿ｗｉ」と称することができ、この時、「ｊ」は、カーネルを識別し、「ｉ」は、カーネル内の加重値の特定の位置であり、入力特徴マップの値は、「Ｉｘ＿Ｐｙ＿ｗｚ」と称することができ、この時、「ｘ」は、入力特徴マップを識別し、「ｙ」は、入力特徴マップ上のカーネルの位置であり、「ｚ」は、入力特徴マップの値の（カーネルに対する「ｉ」に直接対応する）特定の位置である。
図５に示すように、加重値「ｋ１＿ｗ１」は、第１カーネルの示された位置に対応する。
図６の出力を生成するために、加重値「ｋ１＿ｗ１」は、それぞれの値の「Ｉ１＿Ｐ１＿ｗ１」、「１＿Ｐ２＿ｗ１」、「Ｉ１＿Ｐ３＿ｗ１」、「Ｉ２＿Ｐ１＿ｗ１」、「Ｉ２＿Ｐ２＿ｗ１」、「Ｉ２＿Ｐ３＿ｗ１」及びそれぞれの入力特徴マップ５１０のそれぞれの位置の近似した値に掛けられる。
【００３９】
図７は、本発明の一実施形態によるバッチ処理された行列乗算の演算を説明するための図である。
バッチ処理された行列の乗算演算は、以上で説明したＤＲＡＭスタック１２０によって実行することができる。
ホスト１１０は、複数の入力特徴マップ７１０及び１つ以上のカーネル７２０を使用するバッチ処理された行列乗算の演算に対する実行命令をコントローラー３７０に伝送する。
複数の入力特徴マップ７１０は、中間結果２２０のメモリアレイに格納され、１つ以上のカーネル７２０は、モデルパラメーター２１０のアレイに格納される。
バッチサイズは、入力特徴マップ７１０の個数として理解することができる。
それぞれの入力特徴マップ７１０は、幅と高さを有する値の２次元行列であり得、高さ方向の入力ロー７１２に分けられる。
【００４０】
カーネル７２０は、幅と高さを有する加重値の２次元アレイであり得、幅方向のカラム７２２に分けられる。
入力特徴マップ７１０の高さ（つまり、ローの個数）は、カーネル７２０の幅（すなわち、カラムの数）と同等である。
カーネル７２０に対する出力を生成するために、カーネル７２０のカラムでのそれぞれの加重値は、入力特徴マップ７１０のそれぞれのローそれぞれに対応する値に掛けられる。
例として、カーネルの加重値は「ｋｊ＿ｗｉ」と称され、この時、「ｊ」は、加重値のカラムであり、「ｉ」は、カラムで加重値の位置であり、入力特徴マップの値は、「Ｉｘ＿Ｐｙ＿ｗｚ」と称され、この時、「ｘ」は、入力特徴マップを識別し、「ｙ」は、値のローであり、「ｚ」は、ローで値の位置である。
図７に示すように、バッチ処理で入力特徴マップ７１０のそれぞれに対する出力を生成するために、加重値「ｋ１＿ｗ１」は、値の「Ｉ１＿Ｐ１＿ｗ１」、「Ｉ１＿Ｐ２＿ｗ１」、「Ｉ１＿Ｐ３＿ｗ１」、「Ｉ２＿Ｐ１＿ｗ１」、「Ｉ２＿Ｐ２＿ｗ１」、「Ｉ３＿Ｐ３＿ｗ１」、「Ｉ３＿Ｐ２＿ｗ１」、「Ｉ３＿Ｐ３＿ｗ１」及び入力特徴マップ７１０のそれぞれのローのそれぞれで位置のそれぞれの近似した値に掛けられる。
【００４１】
図８は、本発明の実施形態による他の点ごとの演算を説明するためのブロック図である。
図８の動作で、演算は、入力特徴マップのカーネル及びバッチ処理上で実行される。
例として、いくつかの実施形態で、入力特徴マップは値の３次元アレイであり、カーネルは入力特徴マップよりも小さい高さを有するが、同じ深さ（ｄｅｐｔｈ）を有する加重値の３次元アレイであり、演算はカーネルを入力特徴マップのバッチ処理とコンボルブ（ｃｏｎｖｏｌｖｅ）する。
いくつかの実施形態で、入力特徴マップは値の２次元行列であり、カーネルは加重値の２次元行列であり、演算は、カーネルと、それぞれの入力特徴マップ行列を乗ずる。
【００４２】
図８は、入力特徴マップテーブル８１０及び計算ルックアップテーブル８２０を含む。
計算ルックアップテーブル８２０は、カーネルのすべての可能な加重値に対応するローを含み、入力特徴マップのすべての可能な値に対応するカラムを含む。
位置のそれぞれに格納された値は、その位置に対しローに関連する加重値とカラムに関連する値の積である。
入力特徴マップテーブル８１０は、入力特徴マップのバッチ処理の値を含む。
カーネルの同じ加重値の位置と点ごとに掛けられなければならない入力の特徴マップの位置は、カーネルの加重値位置の値によってインデックス（ｉｎｄｅｘ）された同じローに格納され得る。
【００４３】
ロジックダイ８５０は、コマンドキュー、入力バッファー、及び出力バッファー、いくつかの加算器ＡＤＤとレジスターを有するものとして示す。
これは説明の便宜のために単純化された図であり、ロジックダイ８５０は、他の構成要素を含むことができ、図に示した構成要素は、記載したものよりも複雑でありうる。
例として、入力バッファー、出力バッファー、加算器ＡＤＤ、及びレジスターは、ロジックダイ８５０の１つの処理要素のためのものであり、ロジックダイ８５０は、いくつかの処理要素及び／又は図に示した入力バッファーと出力バッファーに／から情報を伝送するための分離された入力／出力バッファーを含み得る。
【００４４】
ロジックダイ８５０の命令キューは、カーネルの与えられた加重値（例えば、図８で示すように、第１加重値「ｋ１＿ｗ１」）に対応する結果値に対する要請を伝送する。
さらに説明すれば、カーネルの与えられた加重値に対する結果値は、加重値を相異なる入力特徴マップ及び／又は１つの入力特徴マップの相異なる位置に掛けて生成される値である。
これに応答して、要請キューは、第１加重値に対応するローに対するルックアップ要請を待機する。
一度ローアクセススケジューラーが実行されるべき第１加重値に対応するローに対するルックアップ要請を指示すると、第１加重値（又は第１加重値に対応するローの値）は、入力特徴マップテーブル８１０に対する第１ローデコーダー及び計算ルックアップテーブル８１０に対する第２ローデコーダーに伝達される。
【００４５】
第１ローデコーダーは、入力特徴マップテーブル８１０のローを中間バッファーに出力する。
第１加重値に対応する入力特徴マップテーブルのローの値は、第１加重値に掛けられなければならない入力特徴マップで多様な位置から抽出される値である。
例として、加重値が「ｋ１＿ｗ１」のとき、値は「Ｉ１＿Ｐ１＿ｗ１」、「Ｉ１＿Ｐ２＿ｗ１」、「Ｉ１＿Ｐ３＿ｗ１」であり得る。
第２ローデコーダーは、計算ルックアップテーブル８２０のローをローバッファーに出力する。
第１加重値に対応する計算ルックアップテーブルのローの値は、第１加重値と入力特徴テーブルの値のすべての可能な積である。
【００４６】
カラムアクセススケジューラーは、入力バッファーの値のそれぞれを受信する。
入力バッファーの値のそれぞれは、計算ルックアップテーブル８２０のカラムに対応する。
入力バッファーの値のそれぞれについて、カラムアクセススケジューラーは、値（つまり、結果値）に対応するカラムに対するローバッファーに格納された値を出力バッファーに出力するために、カラムデコーダーと通信する。
いくつかの実施形態で、カラムアクセススケジューラーは、演算を並列に実行するために、複数のカラムデコーダーと通信する。
ローバッファーに格納された結果値は、第１加重値と入力特徴マップの値のそれぞれの積であるので、ローバッファーの値に対するカラムは入力特徴マップの値であり、中間バッファーの値は入力特徴マップ値であり、出力バッファに出力される結果値は、第１加重値と入力特徴マップ値の積であり、これらは、メモリから、例えば、プロセッサのリソースを使用せずに決定される。
【００４７】
中間バッファーに格納された値のそれぞれは、第１加重値によって掛けられなければならない。
ローバッファーは、既に第１加重値に対するローの値を既に含むから、カラムルックアップ動作のみが入力バッファーの値のそれぞれに対する結果値を得るために行われなければならない。
別のロールックアップ動作は必要としない。
結果的に、メモリルックアップは、高いバッファーヒット率を有することができ（又は、第１加重値に対する追加的なロールックアップ動作を実行しない可能性があり）、これは動作の待機時間を相当に減少させることができる。
【００４８】
いくつかの実施形態で、出力バッファーは、中間バッファーの値のそれぞれの結果値を受信する前まで、結果値のそれぞれを格納し、そのとき、格納された結果値をロジックダイ８５０の入力バッファーに伝送する。
いくつかの実施形態で、出力バッファーは、より小さな結果値のセットを伝送したり、継続的に結果値をロジックダイ８５０の入力バッファーにストリーミングしたりすることができる。
【００４９】
ロジックダイ８５０は、演算に対する入力特徴マップのそれぞれの出力を生成するために、結果値をさらに処理する。
例として、入力バッファーは、入力特徴マップ（この時、入力特徴マップは行列である）の与えられたロー又は入力特徴マップ（この時、入力特徴マップは、３次元アレイである）の与えられた位置に対する結果値のそれぞれを得て、その結果値を別の加算器ＡＤＤに伝達する。
したがって、加算器は、レジスターに格納された値を増加させる。
一度入力特徴マップに対する全ての値がカーネルの加重値のそれぞれについて処理されると、レジスターは、入力特徴マップに対する出力行列の１つのエントリーの値のようなそれぞれの入力特徴マップに対する出力を計算するために必要な値を含む。
レジスターは、この値を出力し、ロジックダイ及び／又はホストは、入力特徴マップのそれぞれに対する出力を生成するために、それぞれのレジスターからの出力を結合したり、さらに処理したりする。
【００５０】
本明細書で説明した本発明の実施形態による、電子又は電気装置及び／又は他の関連されたデバイス及び構成要素は、任意の適切なハードウェア、ファームウェア（例えば、オンデマンド（ｏｎ  ｄｅｍａｎｄ）半導体（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ：ＡＳＩＣ））、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組み合わせを使用して具現することができる。
例として、斯かるデバイスの多様な構成要素は、一つのＩＣチップ又は分離されたＩＣチップ上に形成することができる。
なお、斯かるデバイスの多様な構成要素は、フレキシブル印刷回路（ｆｌｅｘｉｂｌｅ  ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ：ＦＰＣ）フィルム、ＴＣＰ（ｔａｐｅ  ｃａｒｒｉｅｒ  ｐａｃｋａｇｅ）、印刷回路基板（ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ；ＰＣＢ）上で具現したり、単一の基板上で形成することもできる。
なお、斯かるデバイスの多様な構成要素は、本明細書で説明した多様な機能を実行するために、１つ以上のプロセッサに上で実行され、１つ以上のコンピューティングデバイスであり、コンピュータプログラム命令を実行し、他のシステム構成要素と相互作用するプロセッサ又はスレッドであり得る。
【００５１】
コンピュータプログラム命令は、例として、ＲＡＭのような標準的なメモリデバイスを使用して、コンピューティングデバイス内に具現することのできるメモリに格納される。
コンピュータプログラム命令は、例として、ＣＤ−ＲＯＭ、フラッシュドライブなどのような他の非一時的コンピュータ読取可能記憶媒体に格納することもできる。
なお、当該技術の通常の技術者（当業者）は、多様なコンピューティングデバイスの機能が一つのコンピューティングデバイスに結合又は統合されることができるか、特定のコンピューティングデバイスの機能が、本発明の例示的な実施形態の思想と範囲から逸脱しない一つ以上の他のコンピューティングデバイス全般に分配されうることを認知しなければならない。
【００５２】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【産業上の利用可能性】
【００５３】
本発明は、ディープラーニングアクセラレーションの可能な高帯域幅のメモリデバイスに好適に使用される。
【符号の説明】
【００５４】
１００    アクセラレータカード
１１０    ホスト
１２０、１２０Ａ〜１２０Ｄ    （メモリスタック）ＤＲＡＭスタック
１２１、１２１Ａ〜１２１Ｄ    （メモリダイ）ＤＲＡＭダイ
１２３、８５０    ロジックダイ
１２５    アクセラレータダイ
１３０    インターポーザ
１４０    パッケージ基板
２１０    モデルパラメーター
２２０    中間結果
２３０、８２０    計算ルックアップテーブル
２４０    書き込みバッファー
２５０    スケジューラー
２６０    要請／応答キュー
２７０    読み取りバッファー
３１０、３２３    出力バッファー
３２０、３２０Ａ、３２０Ｂ    処理ブロック
３２１、３４０    入力バッファー
３２５    ディスパッチャー
３２７Ａ〜３２７Ｄ    処理要素
３３０    コマンドキュー
３６０    スケジューラー
３７０    コントローラー
５１０、７１０    入力特徴マップ
５２０、７２０    カーネル
６１０    出力行列
７１２    入力特徴マップの高さ方向の入力ロー
７２２    カーネルの幅方向のカラム
８１０    入力特徴マップテーブル
【図１】
2019109886.tif 000003
【図２】
2019109886.tif 000004
【図３】
2019109886.tif 000005
【図４】
2019109886.tif 000006
【図５】
2019109886.tif 000007
【図６】
2019109886.tif 000008
【図７】
2019109886.tif 000009
【図８】
2019109886.tif 000010