JP7232633B2 - ストレージデバイス及びその制御方法 - Google Patents

ストレージデバイス及びその制御方法 Download PDF

Info

Publication number
JP7232633B2
JP7232633B2 JP2018231630A JP2018231630A JP7232633B2 JP 7232633 B2 JP7232633 B2 JP 7232633B2 JP 2018231630 A JP2018231630 A JP 2018231630A JP 2018231630 A JP2018231630 A JP 2018231630A JP 7232633 B2 JP7232633 B2 JP 7232633B2
Authority
JP
Japan
Prior art keywords
input feature
value
lookup table
feature maps
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018231630A
Other languages
English (en)
Other versions
JP2019109886A (ja
Inventor
グ ペン
ティ. マラディ クリシュナ
宏 忠 ツェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019109886A publication Critical patent/JP2019109886A/ja
Application granted granted Critical
Publication of JP7232633B2 publication Critical patent/JP7232633B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Memory System (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Description

本発明はメモリに関し、特に、ディープラーニングアクセラレータのための高帯域幅メモリを含むストレージデバイス及びその制御方法に関する。
ディープニューラルネットワークを含むマシンラーニングアプリケーションは、多くの計算やメモリの要件を含む多くの動作を包含している。
したがって、マシンラーニングアプリケーションは、相異なるデータセットを訓練するために多くのリソースを必要とすることで正確に学習することができる。
しかしながら、マシンラーニングアプリケーションや、グラフィックアルゴリズムを含む他のコンピューティング・アプリケーションは、コンピュータの要件及びメモリ要件の増加を引き起こしているという問題がある。
メモリでの処理は、CPU(Central Processing Unit)ではなく、メモリブロック内で計算を実行することによって、これらの問題のいくつかに対処するために使用されてきた。
米国特許第7055018号明細書 米国特許第7305540号明細書 米国特許第8890215号明細書 米国特許第9053951号明細書 米国特許第9577644号明細書 米国特許第9727113号明細書 米国特許出願公開第2016/0098200号明細書 米国特許出願公開第2016/0379115号明細書
本発明は上記従来のメモリにおける問題点に鑑みてなされたものであって、本発明の目的は、ディープラーニングアクセラレータのための高帯域幅メモリを含むストレージデバイス及びその制御方法を提供することにある。
上記目的を達成するためになされた本発明によるストレージデバイスは、カーネルと複数の入力特徴マップとを用いて演算を実行するためのコマンドを伝送するホストと、前記ホストに結合され、前記コマンドを受信するように構成されるロジックダイと、メモリアレイを含む前記ロジックダイに結合されるメモリダイを含む高帯域幅メモリ(High Bandwidth Memory:HBM)スタックと、を有し、前記カーネルは、複数の加重値を含み、前記入力特徴マップは、複数の値を含み、前記演算は、前記カーネルの第1加重値と前記複数の入力特徴マップの内の2つ以上の入力特徴マップのそれぞれの前記複数の値の内の第1値との積を決定することを含み、前記カーネル及び前記複数の入力特徴マップは、前記メモリアレイに格納され、計算ルックアップテーブルが前記メモリアレイに格納され、前記計算ルックアップテーブルは、複数のロー(row)及び複数のカラム(column)を有し、前記複数のローの内、第1ローは、前記カーネルの複数の加重値の中の1つに対応し、前記複数のカラムの内、第1カラムは、前記複数の入力特徴マップの値の中の1つに対応し、第1結果値は、前記計算ルックアップテーブルの第1位置に格納され、前記第1位置は、前記第1ローと前記第1カラムに対応し、前記第1結果値は、前記第1ローに対応する前記複数の加重値の中の1つと、前記第1カラムに対応する前記複数の値の中の1つと、の積であることを特徴とする。
第1ローデコーダーと、第2ローデコーダーと、をさらに有し、前記メモリダイは、前記第1加重値に対応する前記計算ルックアップテーブルの前記第1ローをローバッファーにロード(load)するために、前記第1ローデコーダーに前記第1加重値を入力し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値を中間バッファーにロードするために、前記第1加重値を前記第2ローデコーダーに入力することが好ましい。
カラムアクセススケジューラーと、カラムデコーダーと、をさらに有し、前記カラムアクセススケジューラーは、前記中間バッファーからの前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値を受信し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値について、前記第1値に対応する前記第1カラムに対応する前記ローバッファーの位置の前記第1結果値にアクセスするように前記カラムデコーダーを制御し、前記第1結果値を読み取りバッファーに出力するように構成されることが好ましい。
前記ロジックダイは、処理要素(processing element)を含み、前記読み取りバッファーは、前記中間バッファーの前記第1値に対する前記第1結果値を受信するとき、前記第1値に対する前記第1結果値を前記ロジックダイに出力し、前記処理要素は、前記第1値に対する前記第1結果値を処理するように構成されることが好ましい。
前記処理要素は、第1入力特徴マップに対応する前記第1値に対応する前記第1結果値を受信し、前記第1入力特徴マップに対する出力を生成するために前記受信した前記第1結果値を他の受信した結果値と結合するように構成されることが好ましい。
前記ホストは、第2カーネル及び第2の複数の入力特徴マップを用いて第2演算を実行するための第2コマンドを伝送し、第2計算ルックアップテーブルは、前記メモリアレイに格納され、前記第2計算ルックアップテーブルは、複数のローを有し、前記第2計算ルックアップテーブルの前記複数のロー(row)の内、第2ローは前記第2カーネルの前記複数の加重値に対応し、前記第2計算ルックアップテーブルは、複数のカラム(column)を有し、前記第2計算ルックアップテーブルの前記複数のカラムの内、第2カラムは第2の複数の入力特徴マップの前記値の中の1つに対応し、第2結果値は、前記第2計算ルックアップテーブルの第2位置に格納され、前記第2位置は、前記複数のローの内の前記第2ロー、及び前記第2計算ルックアップテーブルの前記複数のカラムの内の前記第2カラムに対応し、前記第2結果値は、前記第2ローに対応する前記加重値と前記第2カラムに対応する前記値との積であることが好ましい。
前記第2コマンドは、前記第2カーネルを前記第2の複数の入力特徴マップのうち、2つ以上の入力特徴マップとコンボルブ(convolve:畳み込み)するコンボリューション演算(convolution operation)を実行するためのものであることが好ましい。
前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップに前記カーネルを乗算するためのものであることが好ましい。
前記ストレージデバイスは、前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するように構成されることが好ましい。
前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドによって識別される演算に基づき、前記計算ルックアップテーブルを含む前記メモリアレイの割合は「OPA×M/N」であり、ここで、「OPA」は、アクセスされた処理要素当り実行された点ごとの演算の数であり、「M」は、前記メモリアレイがサイクルに提供できる処理要素の個数であり、「N」は、前記計算ルックアップテーブルがサイクル(cycle)に提供できる点ごとの演算の個数であることが好ましい。
上記目的を達成するためになされた本発明によるストレージデバイスの制御方法は、コマンドを伝送するホストと、前記ホストに結合されるロジックダイと、メモリアレイを含む前記ロジックダイに結合されるメモリダイを含む高帯域幅メモリスタックと、を有するストレージデバイスを制御する方法であって、前記ホストにより、カーネルと複数の入力特徴マップを使用する演算を実行するためのコマンドを前記ロジックダイに伝送するステップと、前記ロジックダイにより、前記メモリアレイに前記カーネルと前記複数の入力特徴マップを格納するステップと、を有し、前記カーネルは、複数の加重値を含み、前記入力特徴マップは、複数の値を含み、前記演算の実行として、前記ロジックダイにより、前記カーネルの第1加重値と前記複数の入力特徴マップの内の2つ以上の入力特徴マップのそれぞれの前記複数の値の内の第1値との積を決定するステップをさらに有し前記ホストから計算ルックアップテーブルを前記メモリアレイに格納するステップをさらに有し、前記計算ルックアップテーブルは、複数のロー(row)及び複数のカラム(column)を有し、前記複数のローの内、第1ローは、前記カーネルの複数の加重値の中の1つに対応し、前記複数のカラムの内、第1カラムは、前記複数の入力特徴マップの値の中の1つに対応し、第1結果値は、前記計算ルックアップテーブルの第1位置に格納され、前記第1位置は、前記第1ローと前記第1カラムに対応し、前記第1結果値は、前記第1ローに対応する前記加重値と前記第1カラムに対応する前記値との積であることを特徴とする。
前記第1加重値に対応する前記計算ルックアップテーブルの前記第1ローをローバッファーにロード(load)するために、第1ローデコーダーに前記第1加重値を入力するステップと、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値を中間バッファーにロードするために、前記第1加重値を第2ローデコーダーに入力するステップと、をさらに有することが好ましい。
前記中間バッファーから前記複数の入力特徴マップの内の2つ以上の入力特徴マップのそれぞれの前記第1値を受信するステップと、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値について、前記第1値に対応する前記第1カラムに対応する前記ローバッファーの位置の前記第1結果値にアクセスするステップと、前記第1結果値を読み込みバッファーに出力するステップと、をさらに有することが好ましい。
前記中間バッファー内の前記第1値に対する前記第1結果値を受信すると、前記第1値に対する前記第1結果値をロジックダイに出力するステップと、処理要素により前記第1値ごとに前記第1結果値を処理するステップと、をさらに有することが好ましい。
前記処理要素により処理するステップは、第1入力特徴マップに対応する前記第1値に対応する前記第1結果値を受信するステップと、前記第1入力特徴マップに対する出力値を生成するために、前記受信した第1結果値を前記第1入力特徴マップに対する他の受信した結果値と結合するステップと、を含むことが好ましい。
第2カーネル及び第2の複数の入力特徴マップを用いて第2演算を実行するための前記ロジックダイに第2コマンドを伝送するステップと、前記メモリアレイに第2計算ルックアップテーブルを格納するステップと、をさらに有し、前記第2計算ルックアップテーブルは、複数のロー(row)と複数のカラム(column)を含み、前記第2計算ルックアップテーブルの前記複数のローの内、第2ローは、前記第2カーネルの前記複数の加重値の中の1つに対応し、前記第2計算ルックアップテーブルの前記複数のカラムの内、第2コラムは、前記第2の複数の入力特徴マップの前記値の中の1つに対応し、第2結果値は、前記第2計算ルックアップテーブルの第2位置に格納され、前記第2位置は、前記第2計算ルックアップテーブルの前記第2ロー及び前記第2カラムに対応し、前記第2結果値は、前記第2ローに対応する前記加重値と前記第2カラムに対応する前記値との積であることが好ましい。
前記第2コマンドは、前記第2の複数の入力特徴マップの内の前記2つ以上を前記第2カーネルとコンボルブ(convolve:畳み込み)するコンボリューション(convolution)演算を実行するためのものであることが好ましい。
前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップに前記カーネルを乗算するためのものであることが好ましい。
前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するステップと、をさらに有することが好ましい。
前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドによって識別される演算に基づき、前記計算ルックアップテーブルを含む前記メモリアレイの割合は「OPA×M/N」であり、ここで、「OPA」は、アクセスされた処理要素当り実行された点ごとの演算の数であり、「M」は、前記メモリアレイがサイクルに提供できる処理要素の個数であり、「N」は、前記計算ルックアップテーブルがサイクル(cycle)に提供できる点ごとの演算の個数であることが好ましい。
本発明に係るストレージデバイス及びその制御方法によれば、DRAMダイ上のメモリルックアップの計算とロジックダイでの累積演算とを完全に重複して行うことができるので、ハードウェアは完全に使用され、全体の処理量が高くなる、という効果がある。
本発明の一実施形態によるアクセラレータカードの概要を示す上面図である。 本発明の一実施形態によるアクセラレータカードの概要を示す側面図である。 本発明の一実施形態によるDRAMダイ及びロジックダイの概略構成を示すブロック図である。 本発明の一実施形態による図3の処理ブロックの一例を示すブロック図である。 本発明の一実施形態によるバッチ処理されたコンボリューション(convolution)演算を説明するための図である。 図5のバッチ処理されたコンボリューション演算の出力を示す図である。 本発明の一実施形態によるバッチ処理された行列乗算の演算を説明するための図である。 本発明の実施形態による点ごとの(pointwise)演算を説明するためのブロック図である。
次に、本発明に係るストレージデバイス及びその制御方法を実施するための形態の具体例を図面を参照しながら説明する。
以下、具体的な説明において、例示により、本発明の特定の実施形態だけが示して説明する。通常の技術者(当業者)が理解できるよう、発明が多くの相異なる形態で具現され、本明細書で説明する実施形態に限定されるものと理解されてはならない。それぞれの実施形態内の特徴又は側面の説明は、他の実施形態の他の類似した特徴又は側面に対し利用可能なものと、一般的に考慮されるべきである。明細書全般にかけて同じ参照番号は同じ構成要素を示す。
図面で、構成要素、層及び領域の相対的な大きさは、明確性のために誇張することができる。一つの要素又は図面で図示された他の構成要素又は特徴との特徴的な関係を説明するための説明を容易にするために、「下の」、「下」、「低い」、「特定の部分下」、「上に」、「上部」のような空間的で相対的な用語がここで使用することができる。空間的で相対的な用語は、図面で描写された方向に加えて使用又は動作で、デバイスの他の方向を含むように意図されたことが理解されるだろう。例えば、もし図面の装置が回転されると、他の構成要素、特徴の「下」、「下の」又は「特定の部分の下」で説明された構成要素は、他の構成要素又は特徴の「上に」に合わせられるようになる。したがって、「下の」又は「特定の部分の下」の例示的な用語は、上又は下方向の両方を含み得る。デバイスは、異なるように合わせられ(例えば、90度回転、又は他の方向に回転される)、これにより、空間的に相対的な記述子は、それに応じて解釈されるべきである。
但し、ここで「第1」、「第2」、「第3」などの用語は多様な要素、成分、領域、層、及び/又はセクションを説明するために使用するが、斯かる要素、成分、領域、層、及び/又はセクションは、斯かる用語により限定されないことと理解されるだろう。斯かる用語は、他の要素、成分、領域、層、又はセクションから一つの要素、構成、領域、層、又はセクションを区別するために使用される。したがって、後述する第1構成要素、成分、領域、層、又はセクションは、本発明の思想及び範囲を逸脱せずに、第2構成要素は、成分、領域、層、又はセクションを指し示すことができる。
本明細書で使用する用語は、単に特定の実施形態を説明するためのものであって、本発明を制限しようとするものではない。本明細書で使用するように、文脈上明らかに異なると意味しない限り、単数形「一つ」は、複数形も含むものと意図される。「構成される」、「構成されている」、「含む」、そして「包含している」という用語は、本明細書で使用するとき、斯かる用語は、定められた特徴、整数、ステップ、動作、要素、及び/又は成分が存在を明示するが、一つ又はそれ以上の他の特徴、整数、ステップ、動作、要素、成分、及び/又はそれらのグループの追加又は存在を不可能にしない。本明細書で使用するように、「及び/又は」という用語は、一つ又はそれ以上の列挙された項目と関連された任意かつすべての組み合わせを包含する。「少なくとも一つ」のような表現は、要素全体のリストを修正して、リストの個々の要素を修正しない。
本明細書で使用したように、「できる」の使用は、本発明の実施形態を説明するとき、「本発明の1つ以上の実施形態」を指し示す。本明細書で使用するように、「使用する」、「使用する~」、及び「使用された」という用語は、「利用する」、「利用する~」、及び「使用された」という用語の同義語としてそれぞれ見なすことができる。なお、「例示的な」という用語は、例示又は実施形態を示すことを意図する。
異なるように定義されていない限り、本明細書で使用する(技術的な、科学的な用語を包含する)すべての用語は、本発明が属する技術分野における通常の技術者(当業者)によって一般的に理解されるのと同一な意味を有する。
一般的に使用される辞典で定義される用語のような用語は、本明細書で明示的に定義されていない限り、関連した技術及び/又は本明細書の脈絡での意味と一致する意味を有するものと解釈されるべきで、理想的であるか、過度に形式的な意味で解釈されてはならない。
図1は、本発明の一実施形態によるアクセラレータカード100(例えば、グラフィックスカード)の概要を示す上面図である。
アクセラレータカード100は、HBM2のような高帯域幅メモリ(High-Bandwidth Memory:HBM)アーキテクチャを使用することができる。
アクセラレータカード100は、ホスト110及び、複数のメモリスタック(以下、DRAMスタック)(120A~120D)を包含する。
図2は、本発明の一実施形態によるアクセラレータカード100の概要を示す側面図である。
図2の側面図は、DRAMスタック120の中の1つを含む。
DRAMスタック120は、複数のメモリダイ(die)(以下、DRAMダイ)(121A~121D)、及びロジックダイ123を含む。
いくつかの実施形態で、DRAMスタック120は、アクセラレータダイ125を含むことができ、アクセラレータダイ125は、ロジックダイ123と協力して、又はロジックダイ123に代わって演算を行うことができる。
ホスト110は、インターポーザ(interposer)130を介して、ロジックダイ123と接続される。
インターポーザ130は、HBMアーキテクチャを使用して、ホスト110が、複数のDRAMスタック(120A~120D)と通信するように設計することができる。
インターポーザ130は、ホスト110と外部システムとの間のインタフェースを提供できるパッケージ基板140に接続される(例えば、パッケージ基板140は、PCIeコネクターを含み得る)。
図3は、本発明の一実施形態によるDRAMダイとロジックダイの概要を示すブロック図である。
DRAMダイ121は、書き込みバッファー240、スケジューラー250、要請/応答キュー260、及び読み取りバッファー270を含む。
DRAMダイ121はまた、1つ以上のメモリアレイにモデルパラメーター210、中間結果220、及び1つ以上の計算ルックアップテーブル230を含み得る。
書き込みバッファー240と読み取りバッファー270は、DRAMダイ121のための入力及び出力ポイント(points)としての役割を行い、スケジューラー250及び要請/応答キュー260は、DRAMダイ121上でデータの流れを制御する。
ロジックダイ123は、出力バッファー310、1つ以上の処理ブロック(320A、320B)、コマンドキュー330、入力バッファー340、スケジューラー360、及びコントローラー370を含む。
図4は、本発明の一実施形態による図3の処理ブロック(320A、320B)の一例を示すブロック図である。
図4を参照すると、処理ブロック(320A、320B)は、点ごとの(pointwise)乗算結果やコンボリューション(畳み込み)演算の一部の結果等の入力値を一時的に格納する入力バッファー321と、演算結果を一時的に格納する出力バッファー310とを有する。
処理ブロック320は、ディスパッチャー325、及び複数の処理要素(或いは処理素子)(processing elements)(327A~327D)を含む。
ディスパッチャー325は、入力バッファー321のデータを処理要素(327A~327D)に伝送し、処理要素(327A~327D)からのデータを出力バッファー323に伝送する役割を担う。
図3を再び参照すると、ロジックダイ123の入力バッファー340及び出力バッファー310は、ロジックダイ123に対するデータを格納する。
コントローラー370は、ホスト110と通信する役割を担い、スケジューラー360は、計算作業をスケジューリングする役割を担う。
コントローラー370は、ホスト110からコマンドを受信する。
コマンドに応答して、コントローラー370は、コマンドの内容に基づいて、スケジューラー360に対し作業をスケジュールするように指示する。
スケジューラー360は、コマンドキュー330が事前計算データをDRAMダイ121に伝送することを要請することができる。
いくつかの実施形態では、事前計算データは、コマンドと共にホスト110から受信する。
いくつかの実施形態で、事前計算データは、ロジックダイ123により、例えば、ホスト110からのコマンドに基づいて、コントローラー370により、計算される。
事前計算データは、1つ以上のカーネルに対する加重値、1つ以上の入力特徴マップ(input feature map)、及び/又は1つ以上の計算ルックアップテーブルに対する値を含む。
DRAMダイ121は、出力バッファー310から書き込みバッファー240まで事前計算データを一時的に読み取ることができ、スケジューラー250は、モデルパラメーター210のアレイ、又は中間結果220のアレイに事前計算データを格納することができる。
1つ以上のカーネルに対する加重値は、モデルパラメーター210のアレイに格納することができ、複数の入力特徴マップは、中間結果220のアレイに格納されることができる。
計算ルックアップテーブル230において、値は、ローとカラムに対応する位置に格納される。
それぞれのローとカラムの組み合わせは、位置とその位置に格納された値を有する。
いくつかの実施形態で、ホスト110は、計算ルックアップテーブル230の内容を計算し、その内容をアクセラレータカード100に伝送する。
いくつかの実施形態で、計算ルックアップテーブルは、ホストメモリからローディングされる。
いくつかの実施形態で、ホスト110は、ロジックダイ123でプログラムを初期化することができ、これにより、ロジックダイ123は、計算ルックアップテーブルの内容を計算することができる。
計算ルックアップテーブル230は、点ごとの(pointwise)乗算のような事前構成値の点ごとの処理をサポートするように構成される。
計算ルックアップテーブル230は、事前構成値の第1セット(例えば、カーネルの加重値)に対するすべての可能な値に対応するローを含み、事前構成値の第2セット(例えば、入力特徴マップ)に対するすべての可能な値に対応するコラムを含む。
それぞれの位置に格納された値は、その位置について、ローに関連する値とカラムに関連する値との積である。
事前構成値の第1セットの中の1つと事前構成値の中の1つとを乗算するため、DRAMダイ121は、事前構成値の第1セットの一つの値に対応するローを見つけ出してローデータをローバッファーに移すための計算ルックアップテーブル230上でのルックアップ動作を実行する。
その後、DRAMダイ121は、事前構成値の第2セットの中の1つの値に対応するコラムに対するリストを見つけ出すためにローバッファーのローデータ上でのカラムルックアップ動作を実行し、その動作での値を読み取りバッファー270に出力する。
点ごとの乗算が以上の説明で実施形態として使用されるとしても、本発明は、これに限定されず、他の点ごとの演算が、本発明の権利範囲内にあることに注意を要する。
演算は、算術(例えば、指数関数)演算及び/又は論理(例えば、XOR)演算を含み得る。
いくつかの実施形態で、DRAMダイ121は、相異なる点ごとの演算に対応する複数の計算ルックアップテーブル230を含む(又は、1つの計算ルックアップテーブル230にそれぞれの点ごとの演算に対するそれぞれの値に対する複数のローを包含する)。
例として、第1計算ルックアップテーブル230でそれぞれの位置での値は、その位置に対してローとカラムに対応する値の積に対応し、第2計算ルックアップテーブル230でそれぞれの位置での値は、その位置に対しローとカラムに対応する値の間の商(quotient)に対応する。
スケジューラー250は、点ごとの演算に対応する計算ルックアップテーブル230でのロー及び/又はカラムのアクセス動作をスケジューリングすることにより、どのような点ごとの演算を実行するかを判定する。
読み取りバッファー270の内容は、ロジックダイ123の入力バッファー340にストリーム処理される。
スケジューラー360は、入力バッファー340から処理ブロック320の入力バッファー321にデータをコピー(copy)し、処理ブロック320の処理要素(327A~327D)は、データ上で追加的な処理を実行して、そのデータを出力バッファー323に出力する。
DRAMダイ121上でのメモリルックアップ計算及びロジックダイ123での累積演算は、完全に重複することができるので、ハードウェアは完全に使用されて、全体の処理量が高くなる。
いくつかの実施形態で、計算ルックアップテーブル230としてのメモリアレイ又は下位アレイの個数は、ホスト110から受信したコマンドのタイプに基づく。
メモリに対する計算の割合が高いコマンドに対しては、さらに多くの下位アレイが計算ルックアップテーブルとして構成され得、メモリに対する計算の割合が低いコマンドに対して、はるかに少ない下位アレイが計算ルックアップテーブルとして構成される。
カーネルのメモリに対する計算の割合は、計算ルックアップテーブルからアクセスされた処理要素当たりの演算(例えば、点ごとの演算)の個数を指し示す。
計算ルックアップテーブルを含むメモリ下位アレイの割合は、「OPA×M/N」であり得る。
このとき、「OPA」は、アクセスされた処理要素当り実行された点ごとの演算の数であり、「M」は、それぞれのメモリ下位アレイがそれぞれのサイクルに提供できる処理要素の個数であり、「N」は、それぞれの計算ルックアップテーブルがそれぞれのサイクル(cycle)に提供できる点ごとの演算の個数である。
図5は、本発明の実施形態によるバッチ処理された(batched)コンボリューション(convolution)演算を説明するための図であり、図6は、図5のバッチ処理されたコンボリューション演算の出力を示す図である。
図5及び図6を参照すると、バッチ処理されたコンボリューション演算は、以上説明したDRAMスタック120により実行されうる。
ホスト110は、複数の入力特徴マップ510及び1つ以上のカーネル520を使用するバッチ処理されたコンボリューション演算の実行を指示するコマンドをコントローラー370に伝送する。
複数の入力特徴マップ510は、中間結果220のメモリアレイに格納され、1つ以上のカーネル520は、モデルパラメーター210のアレイに格納される。
バッチ処理サイズは、入力特徴マップ510の個数として理解することができる。
それぞれの入力特徴マップ510は、幅、高さ、及び深さ(depth)を有する値の3次元アレイであり得、入力チャンネルは、深さ(depth)として理解することができる。
カーネル520は、入力特徴マップ510の高さよりも小さいカーネルの高さ、入力特徴マップの幅よりも小さいカーネル幅、及び入力特徴マップの深さ(depth)と同等(つまり、入力チャンネルと同等)の深さ(depth)を有する値の3次元アレイであり得る。
カーネル520は、例えば、反復的なグリッドパターンで、入力特徴マップ510の複数の位置に適用される。
それぞれの位置で、カーネル520の加重値は、入力特徴マップ510の対応する値に掛けられる。
与えられた位置でそれぞれの加重値と入力特徴マップ510の対応する値の積は、その入力特徴マップのその位置に対し出力値「P1」、「P2」及び「P3」を得るために共に加わって、与えられた入力特徴マップ510のそれぞれの位置に対する値は、その入力特徴マップとカーネルの組み合わせに対する出力行列610を形成するために結合される。
このようなプロセスは、それぞれの入力特徴マップ及びそれぞれのカーネルについて反復される。
カーネルの加重値は「kj_wi」と称することができ、この時、「j」は、カーネルを識別し、「i」は、カーネル内の加重値の特定の位置であり、入力特徴マップの値は、「Ix_Py_wz」と称することができ、この時、「x」は、入力特徴マップを識別し、「y」は、入力特徴マップ上のカーネルの位置であり、「z」は、入力特徴マップの値の(カーネルに対する「i」に直接対応する)特定の位置である。
図5に示すように、加重値「k1_w1」は、第1カーネルの示された位置に対応する。
図6の出力を生成するために、加重値「k1_w1」は、それぞれの値の「I1_P1_w1」、「1_P2_w1」、「I1_P3_w1」、「I2_P1_w1」、「I2_P2_w1」、「I2_P3_w1」及びそれぞれの入力特徴マップ510のそれぞれの位置の近似した値に掛けられる。
図7は、本発明の一実施形態によるバッチ処理された行列乗算の演算を説明するための図である。
バッチ処理された行列の乗算演算は、以上で説明したDRAMスタック120によって実行することができる。
ホスト110は、複数の入力特徴マップ710及び1つ以上のカーネル720を使用するバッチ処理された行列乗算の演算に対する実行命令をコントローラー370に伝送する。
複数の入力特徴マップ710は、中間結果220のメモリアレイに格納され、1つ以上のカーネル720は、モデルパラメーター210のアレイに格納される。
バッチサイズは、入力特徴マップ710の個数として理解することができる。
それぞれの入力特徴マップ710は、幅と高さを有する値の2次元行列であり得、高さ方向の入力ロー712に分けられる。
カーネル720は、幅と高さを有する加重値の2次元アレイであり得、幅方向のカラム722に分けられる。
入力特徴マップ710の高さ(つまり、ローの個数)は、カーネル720の幅(すなわち、カラムの数)と同等である。
カーネル720に対する出力を生成するために、カーネル720のカラムでのそれぞれの加重値は、入力特徴マップ710のそれぞれのローそれぞれに対応する値に掛けられる。
例として、カーネルの加重値は「kj_wi」と称され、この時、「j」は、加重値のカラムであり、「i」は、カラムで加重値の位置であり、入力特徴マップの値は、「Ix_Py_wz」と称され、この時、「x」は、入力特徴マップを識別し、「y」は、値のローであり、「z」は、ローで値の位置である。
図7に示すように、バッチ処理で入力特徴マップ710のそれぞれに対する出力を生成するために、加重値「k1_w1」は、値の「I1_P1_w1」、「I1_P2_w1」、「I1_P3_w1」、「I2_P1_w1」、「I2_P2_w1」、「I3_P3_w1」、「I3_P2_w1」、「I3_P3_w1」及び入力特徴マップ710のそれぞれのローのそれぞれで位置のそれぞれの近似した値に掛けられる。
図8は、本発明の実施形態による他の点ごとの演算を説明するためのブロック図である。
図8の動作で、演算は、入力特徴マップのカーネル及びバッチ処理上で実行される。
例として、いくつかの実施形態で、入力特徴マップは値の3次元アレイであり、カーネルは入力特徴マップよりも小さい高さを有するが、同じ深さ(depth)を有する加重値の3次元アレイであり、演算はカーネルを入力特徴マップのバッチ処理とコンボルブ(convolve)する。
いくつかの実施形態で、入力特徴マップは値の2次元行列であり、カーネルは加重値の2次元行列であり、演算は、カーネルと、それぞれの入力特徴マップ行列を乗ずる。
図8は、入力特徴マップテーブル810及び計算ルックアップテーブル820を含む。
計算ルックアップテーブル820は、カーネルのすべての可能な加重値に対応するローを含み、入力特徴マップのすべての可能な値に対応するカラムを含む。
位置のそれぞれに格納された値は、その位置に対しローに関連する加重値とカラムに関連する値の積である。
入力特徴マップテーブル810は、入力特徴マップのバッチ処理の値を含む。
カーネルの同じ加重値の位置と点ごとに掛けられなければならない入力の特徴マップの位置は、カーネルの加重値位置の値によってインデックス(index)された同じローに格納され得る。
ロジックダイ850は、コマンドキュー、入力バッファー、及び出力バッファー、いくつかの加算器ADDとレジスターを有するものとして示す。
これは説明の便宜のために単純化された図であり、ロジックダイ850は、他の構成要素を含むことができ、図に示した構成要素は、記載したものよりも複雑でありうる。
例として、入力バッファー、出力バッファー、加算器ADD、及びレジスターは、ロジックダイ850の1つの処理要素のためのものであり、ロジックダイ850は、いくつかの処理要素及び/又は図に示した入力バッファーと出力バッファーに/から情報を伝送するための分離された入力/出力バッファーを含み得る。
ロジックダイ850の命令キューは、カーネルの与えられた加重値(例えば、図8で示すように、第1加重値「k1_w1」)に対応する結果値に対する要請を伝送する。
さらに説明すれば、カーネルの与えられた加重値に対する結果値は、加重値を相異なる入力特徴マップ及び/又は1つの入力特徴マップの相異なる位置に掛けて生成される値である。
これに応答して、要請キューは、第1加重値に対応するローに対するルックアップ要請を待機する。
一度ローアクセススケジューラーが実行されるべき第1加重値に対応するローに対するルックアップ要請を指示すると、第1加重値(又は第1加重値に対応するローの値)は、入力特徴マップテーブル810に対する第1ローデコーダー及び計算ルックアップテーブル810に対する第2ローデコーダーに伝達される。
第1ローデコーダーは、入力特徴マップテーブル810のローを中間バッファーに出力する。
第1加重値に対応する入力特徴マップテーブルのローの値は、第1加重値に掛けられなければならない入力特徴マップで多様な位置から抽出される値である。
例として、加重値が「k1_w1」のとき、値は「I1_P1_w1」、「I1_P2_w1」、「I1_P3_w1」であり得る。
第2ローデコーダーは、計算ルックアップテーブル820のローをローバッファーに出力する。
第1加重値に対応する計算ルックアップテーブルのローの値は、第1加重値と入力特徴テーブルの値のすべての可能な積である。
カラムアクセススケジューラーは、入力バッファーの値のそれぞれを受信する。
入力バッファーの値のそれぞれは、計算ルックアップテーブル820のカラムに対応する。
入力バッファーの値のそれぞれについて、カラムアクセススケジューラーは、値(つまり、結果値)に対応するカラムに対するローバッファーに格納された値を出力バッファーに出力するために、カラムデコーダーと通信する。
いくつかの実施形態で、カラムアクセススケジューラーは、演算を並列に実行するために、複数のカラムデコーダーと通信する。
ローバッファーに格納された結果値は、第1加重値と入力特徴マップの値のそれぞれの積であるので、ローバッファーの値に対するカラムは入力特徴マップの値であり、中間バッファーの値は入力特徴マップ値であり、出力バッファに出力される結果値は、第1加重値と入力特徴マップ値の積であり、これらは、メモリから、例えば、プロセッサのリソースを使用せずに決定される。
中間バッファーに格納された値のそれぞれは、第1加重値によって掛けられなければならない。
ローバッファーは、既に第1加重値に対するローの値を既に含むから、カラムルックアップ動作のみが入力バッファーの値のそれぞれに対する結果値を得るために行われなければならない。
別のロールックアップ動作は必要としない。
結果的に、メモリルックアップは、高いバッファーヒット率を有することができ(又は、第1加重値に対する追加的なロールックアップ動作を実行しない可能性があり)、これは動作の待機時間を相当に減少させることができる。
いくつかの実施形態で、出力バッファーは、中間バッファーの値のそれぞれの結果値を受信する前まで、結果値のそれぞれを格納し、そのとき、格納された結果値をロジックダイ850の入力バッファーに伝送する。
いくつかの実施形態で、出力バッファーは、より小さな結果値のセットを伝送したり、継続的に結果値をロジックダイ850の入力バッファーにストリーミングしたりすることができる。
ロジックダイ850は、演算に対する入力特徴マップのそれぞれの出力を生成するために、結果値をさらに処理する。
例として、入力バッファーは、入力特徴マップ(この時、入力特徴マップは行列である)の与えられたロー又は入力特徴マップ(この時、入力特徴マップは、3次元アレイである)の与えられた位置に対する結果値のそれぞれを得て、その結果値を別の加算器ADDに伝達する。
したがって、加算器は、レジスターに格納された値を増加させる。
一度入力特徴マップに対する全ての値がカーネルの加重値のそれぞれについて処理されると、レジスターは、入力特徴マップに対する出力行列の1つのエントリーの値のようなそれぞれの入力特徴マップに対する出力を計算するために必要な値を含む。
レジスターは、この値を出力し、ロジックダイ及び/又はホストは、入力特徴マップのそれぞれに対する出力を生成するために、それぞれのレジスターからの出力を結合したり、さらに処理したりする。
本明細書で説明した本発明の実施形態による、電子又は電気装置及び/又は他の関連されたデバイス及び構成要素は、任意の適切なハードウェア、ファームウェア(例えば、オンデマンド(on demand)半導体(application-specific integrated circuit:ASIC))、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの組み合わせを使用して具現することができる。
例として、斯かるデバイスの多様な構成要素は、一つのICチップ又は分離されたICチップ上に形成することができる。
なお、斯かるデバイスの多様な構成要素は、フレキシブル印刷回路(flexible printed circuit:FPC)フィルム、TCP(tape carrier package)、印刷回路基板(printed circuit board;PCB)上で具現したり、単一の基板上で形成することもできる。
なお、斯かるデバイスの多様な構成要素は、本明細書で説明した多様な機能を実行するために、1つ以上のプロセッサに上で実行され、1つ以上のコンピューティングデバイスであり、コンピュータプログラム命令を実行し、他のシステム構成要素と相互作用するプロセッサ又はスレッドであり得る。
コンピュータプログラム命令は、例として、RAMのような標準的なメモリデバイスを使用して、コンピューティングデバイス内に具現することのできるメモリに格納される。
コンピュータプログラム命令は、例として、CD-ROM、フラッシュドライブなどのような他の非一時的コンピュータ読取可能記憶媒体に格納することもできる。
なお、当該技術の通常の技術者(当業者)は、多様なコンピューティングデバイスの機能が一つのコンピューティングデバイスに結合又は統合されることができるか、特定のコンピューティングデバイスの機能が、本発明の例示的な実施形態の思想と範囲から逸脱しない一つ以上の他のコンピューティングデバイス全般に分配されうることを認知しなければならない。
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
本発明は、ディープラーニングアクセラレーションの可能な高帯域幅のメモリデバイスに好適に使用される。
100 アクセラレータカード
110 ホスト
120、120A~120D (メモリスタック)DRAMスタック
121、121A~121D (メモリダイ)DRAMダイ
123、850 ロジックダイ
125 アクセラレータダイ
130 インターポーザ
140 パッケージ基板
210 モデルパラメーター
220 中間結果
230、820 計算ルックアップテーブル
240 書き込みバッファー
250 スケジューラー
260 要請/応答キュー
270 読み取りバッファー
310、323 出力バッファー
320、320A、320B 処理ブロック
321、340 入力バッファー
325 ディスパッチャー
327A~327D 処理要素
330 コマンドキュー
360 スケジューラー
370 コントローラー
510、710 入力特徴マップ
520、720 カーネル
610 出力行列
712 入力特徴マップの高さ方向の入力ロー
722 カーネルの幅方向のカラム
810 入力特徴マップテーブル

Claims (20)

  1. ストレージデバイスであって、
    カーネルと複数の入力特徴マップとを用いて演算を実行するためのコマンドを伝送するホストと、
    前記ホストに結合され、前記コマンドを受信するように構成されるロジックダイと、
    メモリアレイを含む前記ロジックダイに結合されるメモリダイを含む高帯域幅メモリ(High Bandwidth Memory:HBM)スタックと、を有し、
    前記カーネルは、複数の加重値を含み、
    前記入力特徴マップは、複数の値を含み、
    前記演算は、前記カーネルの第1加重値と前記複数の入力特徴マップの内の2つ以上の入力特徴マップのそれぞれの前記複数の値の内の第1値との積を決定することを含み、
    前記カーネル及び前記複数の入力特徴マップは、前記メモリアレイに格納され、
    計算ルックアップテーブルが前記メモリアレイに格納され、
    前記計算ルックアップテーブルは、複数のロー(row)及び複数のカラム(column)を有し、前記複数のローの内、第1ローは、前記カーネルの複数の加重値の中の1つに対応し、前記複数のカラムの内、第1カラムは、前記複数の入力特徴マップの値の中の1つに対応し、
    第1結果値は、前記計算ルックアップテーブルの第1位置に格納され、
    前記第1位置は、前記第1ローと前記第1カラムに対応し、
    前記第1結果値は、前記第1ローに対応する前記複数の加重値の中の1つと、前記第1カラムに対応する前記複数の値の中の1つと、の積であることを特徴とするストレージデバイス。
  2. 第1ローデコーダーと、第2ローデコーダーと、をさらに有し、
    前記メモリダイは、前記第1加重値に対応する前記計算ルックアップテーブルの前記第1ローをローバッファーにロード(load)するために、前記第1ローデコーダーに前記第1加重値を入力し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値を中間バッファーにロードするために、前記第1加重値を前記第2ローデコーダーに入力することを特徴とする請求項1に記載のストレージデバイス。
  3. カラムアクセススケジューラーと、カラムデコーダーと、をさらに有し、
    前記カラムアクセススケジューラーは、前記中間バッファーからの前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値を受信し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値について、前記第1値に対応する前記第1カラムに対応する前記ローバッファーの位置の前記第1結果値にアクセスするように前記カラムデコーダーを制御し、前記第1結果値を読み取りバッファーに出力するように構成されることを特徴とする請求項2に記載のストレージデバイス。
  4. 前記ロジックダイは、処理要素(processing element)を含み、
    前記読み取りバッファーは、前記中間バッファーの前記第1値に対する前記第1結果値を受信するとき、前記第1値に対する前記第1結果値を前記ロジックダイに出力し、
    前記処理要素は、前記第1値に対する前記第1結果値を処理するように構成されることを特徴とする請求項3に記載のストレージデバイス。
  5. 前記処理要素は、第1入力特徴マップに対応する前記第1値に対応する前記第1結果値を受信し、前記第1入力特徴マップに対する出力を生成するために前記受信した前記第1結果値を他の受信した結果値と結合するように構成されることを特徴とする請求項4に記載のストレージデバイス。
  6. 前記ホストは、第2カーネル及び第2の複数の入力特徴マップを用いて第2演算を実行するための第2コマンドを伝送し、
    第2計算ルックアップテーブルは、前記メモリアレイに格納され、
    前記第2計算ルックアップテーブルは、複数のローを有し、前記第2計算ルックアップテーブルの前記複数のロー(row)の内、第2ローは前記第2カーネルの前記複数の加重値に対応し、
    前記第2計算ルックアップテーブルは、複数のカラム(column)を有し、前記第2計算ルックアップテーブルの前記複数のカラムの内、第2カラムは第2の複数の入力特徴マップの前記値の中の1つに対応し、
    第2結果値は、前記第2計算ルックアップテーブルの第2位置に格納され、
    前記第2位置は、前記複数のローの内の前記第2ロー、及び前記第2計算ルックアップテーブルの前記複数のカラムの内の前記第2カラムに対応し、
    前記第2結果値は、前記第2ローに対応する前記加重値と前記第2カラムに対応する前記値との積であることを特徴とする請求項1に記載のストレージデバイス。
  7. 前記第2コマンドは、前記第2カーネルを前記第2の複数の入力特徴マップのうち、2つ以上の入力特徴マップとコンボルブ(convolve:畳み込み)するコンボリューション演算(convolution operation)を実行するためのものであることを特徴とする請求項6に記載のストレージデバイス。
  8. 前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップに前記カーネルを乗算するためのものであることを特徴とする請求項1に記載のストレージデバイス。
  9. 前記ストレージデバイスは、前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するように構成されることを特徴とする請求項1に記載のストレージデバイス。
  10. 前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドによって識別される演算に基づき、前記計算ルックアップテーブルを含む前記メモリアレイの割合は「OPA×M/N」であり、
    ここで、「OPA」は、アクセスされた処理要素当り実行された点ごとの演算の数であり、「M」は、前記メモリアレイがサイクルに提供できる処理要素の個数であり、「N」は、前記計算ルックアップテーブルがサイクル(cycle)に提供できる点ごとの演算の個数であることを特徴とする請求項9に記載のストレージデバイス。
  11. コマンドを伝送するホストと、前記ホストに結合されるロジックダイと、メモリアレイを含む前記ロジックダイに結合されるメモリダイを含む高帯域幅メモリスタックと、を有するストレージデバイスを制御する方法であって、
    前記ホストにより、カーネルと複数の入力特徴マップを使用する演算を実行するためのコマンドを前記ロジックダイに伝送するステップと、
    前記ロジックダイにより、前記メモリアレイに前記カーネルと前記複数の入力特徴マップを格納するステップと、を有し、
    前記カーネルは、複数の加重値を含み、
    前記入力特徴マップは、複数の値を含み、
    前記演算の実行として、前記ロジックダイにより、前記カーネルの第1加重値と前記複数の入力特徴マップの内の2つ以上の入力特徴マップのそれぞれの前記複数の値の内の第1値との積を決定するステップをさらに有し
    前記ホストから計算ルックアップテーブルを前記メモリアレイに格納するステップをさらに有し
    前記計算ルックアップテーブルは、複数のロー(row)及び複数のカラム(column)を有し、前記複数のローの内、第1ローは、前記カーネルの複数の加重値の中の1つに対応し、前記複数のカラムの内、第1カラムは、前記複数の入力特徴マップの値の中の1つに対応し、
    第1結果値は、前記計算ルックアップテーブルの第1位置に格納され、
    前記第1位置は、前記第1ローと前記第1カラムに対応し、
    前記第1結果値は、前記第1ローに対応する前記加重値と前記第1カラムに対応する前記値との積であることを特徴とするストレージデバイスの制御方法。
  12. 前記第1加重値に対応する前記計算ルックアップテーブルの前記第1ローをローバッファーにロード(load)するために、第1ローデコーダーに前記第1加重値を入力するステップと、
    前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値を中間バッファーにロードするために、前記第1加重値を第2ローデコーダーに入力するステップと、をさらに有することを特徴とする請求項11に記載のストレージデバイスの制御方法。
  13. 前記中間バッファーから前記複数の入力特徴マップの内の2つ以上の入力特徴マップのそれぞれの前記第1値を受信するステップと、
    前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップのそれぞれの前記第1値について、前記第1値に対応する前記第1カラムに対応する前記ローバッファーの位置の前記第1結果値にアクセスするステップと、
    前記第1結果値を読み込みバッファーに出力するステップと、をさらに有することを特徴とする請求項12に記載のストレージデバイスの制御方法。
  14. 前記中間バッファー内の前記第1値に対する前記第1結果値を受信すると、前記第1値に対する前記第1結果値をロジックダイに出力するステップと、
    処理要素により前記第1値ごとに前記第1結果値を処理するステップと、をさらに有することを特徴とする請求項13に記載のストレージデバイスの制御方法。
  15. 前記処理要素により処理するステップは、第1入力特徴マップに対応する前記第1値に対応する前記第1結果値を受信するステップと、
    前記第1入力特徴マップに対する出力値を生成するために、前記受信した第1結果値を前記第1入力特徴マップに対する他の受信した結果値と結合するステップと、を含むことを特徴とする請求項14に記載のストレージデバイスの制御方法。
  16. 第2カーネル及び第2の複数の入力特徴マップを用いて第2演算を実行するための前記ロジックダイに第2コマンドを伝送するステップと、
    前記メモリアレイに第2計算ルックアップテーブルを格納するステップと、をさらに有し、
    前記第2計算ルックアップテーブルは、複数のロー(row)と複数のカラム(column)を含み、前記第2計算ルックアップテーブルの前記複数のローの内、第2ローは、前記第2カーネルの前記複数の加重値の中の1つに対応し、
    前記第2計算ルックアップテーブルの前記複数のカラムの内、第2カラムは、前記第2の複数の入力特徴マップの前記値の中の1つに対応し、
    第2結果値は、前記第2計算ルックアップテーブルの第2位置に格納され、
    前記第2位置は、前記第2計算ルックアップテーブルの前記第2ロー及び前記第2カラムに対応し、
    前記第2結果値は、前記第2ローに対応する前記加重値と前記第2カラムに対応する前記値との積であることを特徴とする請求項11に記載のストレージデバイスの制御方法。
  17. 前記第2コマンドは、前記第2の複数の入力特徴マップの内の前記2つ以上を前記第2カーネルとコンボルブ(convolve:畳み込み)するコンボリューション(convolution)演算を実行するためのものであることを特徴とする請求項16に記載のストレージデバイスの制御方法。
  18. 前記コマンドは、行列乗算演算を実行し、前記複数の入力特徴マップの内の前記2つ以上の入力特徴マップに前記カーネルを乗算するためのものであることを特徴とする請求項11に記載のストレージデバイスの制御方法。
  19. 前記コマンドに基づいて、前記カーネル、前記複数の入力特徴マップ、及び前記計算ルックアップテーブルを前記メモリアレイに格納するステップと、をさらに有することを特徴とする請求項11に記載のストレージデバイスの制御方法。
  20. 前記計算ルックアップテーブルに割り当てられた前記メモリアレイの割合は、前記コマンドによって識別される演算に基づき、前記計算ルックアップテーブルを含む前記メモリアレイの割合は「OPA×M/N」であり、
    ここで、「OPA」は、アクセスされた処理要素当り実行された点ごとの演算の数であり、「M」は、前記メモリアレイがサイクルに提供できる処理要素の個数であり、「N」は、前記計算ルックアップテーブルがサイクル(cycle)に提供できる点ごとの演算の個数であることを特徴とする請求項19に記載のストレージデバイスの制御方法。
JP2018231630A 2017-12-15 2018-12-11 ストレージデバイス及びその制御方法 Active JP7232633B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762599534P 2017-12-15 2017-12-15
US62/599,534 2017-12-15
US15/916,228 US11119677B2 (en) 2017-12-15 2018-03-08 HBM based memory lookup engine for deep learning accelerator
US15/916,228 2018-03-08

Publications (2)

Publication Number Publication Date
JP2019109886A JP2019109886A (ja) 2019-07-04
JP7232633B2 true JP7232633B2 (ja) 2023-03-03

Family

ID=66815998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018231630A Active JP7232633B2 (ja) 2017-12-15 2018-12-11 ストレージデバイス及びその制御方法

Country Status (5)

Country Link
US (3) US11119677B2 (ja)
JP (1) JP7232633B2 (ja)
KR (2) KR102672941B1 (ja)
CN (1) CN110058802B (ja)
TW (1) TWI739029B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687759B2 (en) * 2018-05-01 2023-06-27 Semiconductor Components Industries, Llc Neural network accelerator
CN112334915A (zh) * 2018-06-25 2021-02-05 奥林巴斯株式会社 运算处理装置
US11171115B2 (en) 2019-03-18 2021-11-09 Kepler Computing Inc. Artificial intelligence processor with three-dimensional stacked memory
US11836102B1 (en) * 2019-03-20 2023-12-05 Kepler Computing Inc. Low latency and high bandwidth artificial intelligence processor
US20200356836A1 (en) * 2019-05-07 2020-11-12 Apple Inc. Fast deep learning fully-connected column-major implementation
US11152343B1 (en) 2019-05-31 2021-10-19 Kepler Computing, Inc. 3D integrated ultra high-bandwidth multi-stacked memory
US11844223B1 (en) 2019-05-31 2023-12-12 Kepler Computing Inc. Ferroelectric memory chiplet as unified memory in a multi-dimensional packaging
CN112684977B (zh) * 2019-10-18 2024-05-28 旺宏电子股份有限公司 存储器装置及其存储器内计算方法
KR20210053384A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
TWI722797B (zh) * 2020-02-17 2021-03-21 財團法人工業技術研究院 記憶體內運算器及其運算方法
KR20220034542A (ko) 2020-09-11 2022-03-18 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102430982B1 (ko) * 2021-06-10 2022-08-11 삼성전자주식회사 프로세싱부를 포함하는 이종 메모리 시스템을 억세스하는 데이터 처리 시스템 및 방법
CN115469800A (zh) 2021-06-10 2022-12-13 三星电子株式会社 数据处理***以及用于访问异构存储器***的方法
US11791233B1 (en) 2021-08-06 2023-10-17 Kepler Computing Inc. Ferroelectric or paraelectric memory and logic chiplet with thermal management in a multi-dimensional packaging
CN113408713B (zh) * 2021-08-18 2021-11-16 成都时识科技有限公司 消除数据副本的方法、神经网络处理器及电子产品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017138867A (ja) 2016-02-05 2017-08-10 富士通株式会社 演算処理回路、および情報処理装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1083388A (ja) * 1996-05-20 1998-03-31 Matsushita Electric Ind Co Ltd 直交変換装置
US8890215B2 (en) 1997-10-08 2014-11-18 Pact Xpp Technologies Ag Reconfigurable elements
US7305540B1 (en) 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US7055018B1 (en) 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
US8390035B2 (en) 2009-05-06 2013-03-05 Majid Bemanian Massively parallel interconnect fabric for complex semiconductor devices
US8885890B2 (en) * 2010-05-07 2014-11-11 Microsoft Corporation Depth map confidence filtering
US8405214B2 (en) 2011-08-12 2013-03-26 Nanya Technology Corp. Semiconductor package structure with common gold plated metal conductor on die and substrate
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US9836277B2 (en) 2014-10-01 2017-12-05 Samsung Electronics Co., Ltd. In-memory popcount support for real time analytics
US9954533B2 (en) 2014-12-16 2018-04-24 Samsung Electronics Co., Ltd. DRAM-based reconfigurable logic
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10540588B2 (en) 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
KR102479212B1 (ko) * 2016-08-17 2022-12-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017138867A (ja) 2016-02-05 2017-08-10 富士通株式会社 演算処理回路、および情報処理装置

Also Published As

Publication number Publication date
US11681451B2 (en) 2023-06-20
JP2019109886A (ja) 2019-07-04
KR20240083094A (ko) 2024-06-11
US11119677B2 (en) 2021-09-14
US20230289081A1 (en) 2023-09-14
TW201931124A (zh) 2019-08-01
TWI739029B (zh) 2021-09-11
CN110058802A (zh) 2019-07-26
KR102672941B1 (ko) 2024-06-07
KR20190072404A (ko) 2019-06-25
CN110058802B (zh) 2024-03-15
US20210405877A1 (en) 2021-12-30
US20190187898A1 (en) 2019-06-20

Similar Documents

Publication Publication Date Title
JP7232633B2 (ja) ストレージデバイス及びその制御方法
US11775294B2 (en) Memory lookup computing mechanisms
JP2671120B2 (ja) データ処理セルおよびデータプロセッサ
TW202123093A (zh) 實行卷積運算的系統及方法
JP7506086B2 (ja) データ処理
US11355181B2 (en) High bandwidth memory and system having the same
WO2021206974A1 (en) Deep learning accelerator and random access memory with separate memory access connections
US11429310B2 (en) Adjustable function-in-memory computation system
CN113254359A (zh) 用于执行存储器内计算的方法和存储器模块
JP2021128752A5 (ja)
US20230153616A1 (en) Multiply-accumulate sharing convolution chaining for efficient deep learning inference
KR102606207B1 (ko) 매트릭스 수학 명령어 세트에 대한 타일링 알고리즘
KR102373802B1 (ko) 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법
US20200097417A1 (en) Scale-out high bandwidth memory system
TW202203000A (zh) 用於記憶體內計算的方法及用於計算的系統
KR20140093510A (ko) 3d 반도체 패키지 디자인 방법 및 컴퓨팅 시스템
TWI781722B (zh) 記憶體裝置
Cheng et al. The 3-D parallel processor applied to matrix inversion

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230220

R150 Certificate of patent or registration of utility model

Ref document number: 7232633

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150