(58)【調査した分野】(Int.Cl.,DB名)
前記DRAM基盤のコンピューティングセルの各々は、前記DRAM基盤のコンピューティングセルのビットラインに連結されたALU(Arithmetic Logic Unit)を更に含み、
前記ALUは、前記ロジック機能を提供することを特徴とする請求項7に記載のDPU。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第5,901,095号明細書
【特許文献2】米国特許第6,035,384号明細書
【特許文献3】米国特許第6,195,738号明細書
【特許文献4】米国特許第7,299,099号明細書
【特許文献5】米国特許第8,042,082号明細書
【特許文献6】米国特許第9,136,872号明細書
【特許文献7】米国特許第9,197,285号明細書
【特許文献8】米国特許第9,317,482号明細書
【特許文献9】米国特許第9,378,181号明細書
【特許文献10】米国特許出願公開第2007/0226567号明細書
【特許文献11】米国特許出願公開第2011/0302366号明細書
【特許文献12】米国特許出願公開第2012/0246380号明細書
【特許文献13】米国特許出願公開第2015/0089166号明細書
【特許文献14】米国特許出願公開第2015/0131383号明細書
【特許文献15】米国特許出願公開第2016/0147667号明細書
【特許文献16】米国特許出願公開第2016/0173102号明細書
【特許文献17】欧州特許出願公開第1193502号明細書
【特許文献18】欧州特許出願公開第2523352号明細書
【非特許文献】
【0004】
【非特許文献1】MATAM,Kiran et al.,“Energy−Efficient Large−Scale Matrix Multiplication on FPGAs”,2013 International Conference on Reconfigurable Computing and FPGAs(ReConFig),December9−11,2013(8pages).
【非特許文献2】NODA,Hideyuki et al.,“A cost−efficient high−performance dynamic TCAM with pipelined hierarchical searching and shift redundancy architecture”,IEEE Journal of Solid−State Circuits,Vol.40,No.1,January3,2005(10pages).
【非特許文献3】SESHADRI,Vivek et al.,“Fast Bulk Bitwise AND and OR in DRAM”,IEEE Computer Architecture Letters,Vol.14,No.2,May18,2015(6pages).
【非特許文献4】SESHADRI,Vivek et al.,“RowClone:Ffast and Energy−Efficient In−DRAM Bulk Data Copy and Initialization”,MICRO−46,Proc. of 46th IEEE/ACM Int. Symp. on Microarchitecture,December7,2013,pp.185−197.
【非特許文献5】WANG,Gesan et al.,“TCAM−Based Forwarding Engine with Minimum Independent Prefix Set(MIPS) for Fast Updating”,2006 IEEE International Conference on Communications,June11−15,2006(7pages).
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【0012】
本明細書で、多様な詳細な説明を本文の理解を提供するために提示する。しかし、このような詳細な説明無しに記載した本発明の思想が当業者によって容易に具現されることはよく理解される。他の例で、広く公知された方法、手続、構成、及び回路は本文を曖昧にしないために説明しない。
【0013】
詳細な説明で“1つの実施形態”又は“一実施形態”を参照することは、実施形態に関連する特定の特徴、構造、又は特性が本文の少なくとも1つの実施形態に含まれることを意味する。即ち、本文の多様な箇所で使用する“1つの実施形態で”又は“一実施形態で”又は“1つの実施形態によって”又は類似な意味を有する他の表現は同一の実施形態を参照することを要求しない。更に、特定の特徴、構造、又は特性は適切な方式により1つ以上の実施形態で組合される。これに関連して、本明細書で使用するように、“例示的な”という単語は“例(example、instance、illustration)として提供される”ということを意味する。本明細書で“例示的な”のように記述した実施形態は、他の実施形態に比べて必ずしも望ましいか又は有利であるものと考えてはならない。また、本文で言及する内容に従って、単数用語は複数の形態も含み、複数用語は単数形態も含む。構成図面を含む多様な図面は、説明の目的のためにのみ本文で言及し、正確な縮尺ではない。同様に、多様な波形及びタイミング図は説明の目的のためにのみ図示する。例えば、一部の構成要素は明確性のために他の構成要素と比較して誇張して図示する。更に、適切に考えられる場合、参照符号は、対応する構成要素及び/又は類似の構成要素を示すために図面で反復する。
【0014】
本明細書で使用する用語は、特定の実施形態のみを説明するものであり、本発明を制限しようとするものとして意図しない。本明細書で使用するように、文脈上で明確に異なって意味しない限り、単数形態の“1つ”は複数の形態も含むものとして意図する。“構成される”、“構成されている”、“含む”、及び“含んでいる”の用語を本明細書で使用する場合、このような用語は、定まった特徴、整数、段階、動作、要素、及び/又は成分の存在を明示するが、1つ又はそれ以上の他の特徴、整数、段階、動作、要素、成分、及び/又はそれらのグループの追加又は存在を排除しない。“第1”、“第2”のような用語は、先に説明した構成に対するラベルとして使用され、別の定義が無い限り特定の順序(例えば、空間的、時間的、論理的、等)を意図するものではない。更に、同一の参照符号は、同一であるか若しくは類似の機能を有する部品、構成、ブロック、回路、ユニット、又はモジュールに関連する2つ以上の図面に亘って使用される。しかし、このような使用は、説明の簡易化のみのためであり、このような構成及びユニットの構成又は構造的な細部事項が全ての実施形態又は共通的に参照される部分/モジュールで同一なものとして意図せず、本発明の特定の実施形態のみを指称するための1つの手段である。
【0015】
異なって定義しない限り、全ての用語(技術又は科学用語を含む)は本発明の装置と方法が属する分野で当業者に通常的に理解される同一な意味を有する。また、辞書的な意味として定義した用語は、関連する記述及び/又は本発明の説明の状況に従って解釈されなければならず、このように定義されない限り、理想的に理解されるか若しくは過度に形式的な意味として理解されてはならない。
【0016】
本明細書に記述する発明は、多様な動作に対してプログラム可能(programmable)であり、再構成可能な(reconfigurable)DPU(DRAM(Dynamic Random Access Memory) based Processing Unit)を提供する。例えば、多様な動作は、加算、乗算、シフト、最大/最小(MIN/MAX)、及び比較(COMPARISON)等を含むが、本発明はこれに制限されない。一実施形態で、DPUは、3つのトランジスタ及び1つのキャパシター(3T1C)を含むDRAMプロセス及び構造に基づく。他の実施形態で、若干の変化と共に、DPUは、1つのトランジスタ及び1つのキャパシター(1T1C)を含むDRAMプロセス及び構造に基づく。従って、DPUは、特定のコンピューティングロジック回路(例えば、アダー(加算器)のような)を含まないが、高度の並列動作を使用するメモリセルを使用する計算を提供する。一実施形態で、DPUは、乗算(multiplication)動作がANDロジック動作に変換され、加算(addition)動作が多重化(multiplexing)動作に変換される確率的(stochastic)コンピューティングアレイを含む。
【0017】
また、本明細書に記述する発明は、DPUをプログラムし、再構成するためのISA(Instruction Set Architecture)、コンパイラ、ドライバー、ライブラリ、フレームワーク拡張を有する環境(ecosystem)を含むシステム構造を提供する。
【0018】
更に、本明細書に記述する発明は、データセンター及び/又はモバイルアプリケーションに適合するシステム構造を提供する。そして、システム構造は、GPU/ASIC(Application Specific Integrated Circuit)(TPU)/FPGA(Field−Programmable Gate Array)マシンラーニングアプリケーションに対して選択的に二進(binary)及び固定小数点方式(fixed point)の計算の両方に対するマシンラーニングアプリケーションのためのPIM(Processor−in Memory)ソリューションを提供する。一実施形態で、本明細書に記述する発明は、高性能、エネルギー効率的、低価格のシステムを提供する。該当システムは、例えば二進加重ニューラルネットワーク(Binary Weight Neural Network)に対する加速化されたディープラーニングを提供する。
【0019】
本明細書に記述する発明は、再構成及びプログラム可能であり、DRAM技術を利用して構成されるDPUに関連する。一実施形態で、DPUは、多様な動作(例えば、加算、乗算、整列、等)を遂行するように構成されるDRAM基盤のメモリセルアレイ及びDRAM基盤のコンピューティングセルアレイを含む。
【0020】
DPUの内部構成は、サブアレイの複数のバンクに連結されたシステムバスを含む。一実施形態で、システムバスはサブアレイのHツリー連結バンクを提供するように構成される。各々のサブアレイはローカルコントローラを含み、各々の独立的なサブアレイは分離的に又は同時に活性化される。一実施形態で、DRAM基盤のセルは2つのアレイ(データセルアレイ及びコンピューティングセルアレイ)に区分される。一実施形態で、コンピューティングセルアレイはDRAM基盤のメモリセルで具現される。他の実施形態で、コンピューティングセルアレイはロジック回路を含むDRAM基盤のメモリセルで具現される。DPU内部構造は、またデータシフト及びデータ移動回路を含む。一実施形態で、確率的データ計算のために構成される第3DRAM基盤のセルアレイがある。
【0021】
図1は、本発明の一実施形態によるDPU(DRAM(Dynamic Random Access Memory) based Processing Unit)100の一例を示すブロック図である。DPU100は1つ以上のバンク(101a〜101m)を含む。
図1では、1つ以上のバンク(101a〜101m)の中のバンク101a、101bのみを図示する。各バンク101は1つ以上のサブアレイ(102a〜102n)を含む。
図1では、1つ以上のサブアレイ(102a〜102n)の中のサブアレイ102a、102bのみを図示する。また、各バンク101はバッファ103を含む。バッファ103は、個別サブアレイ102に連結され、システムバス104に連結される。バッファ103は、バンク102内の全体ロー(row)を読み出し、その後該当ローを再び同一のバンク又は他のバンクに書き込む。バッファ103は、また該当ローデータのコピーをサブアレイ102内の複数のマット(105a〜105n)にブロードキャスト(broadcast)する。一実施形態で、バンク101及びシステムバス104はHツリー連結バンクを提供する。
【0022】
各サブアレイ102は1つ以上のマット(又はレーン)105を含む。
図1では、1つ以上のマット105の中のサブアレイ102aのマット105a〜105nのみを図示する。各マット105は、データセルアレイ106、コンピューティングセルアレイ107、及びイントラマット(intra−mat)シフトアレイ108を含むDPU100の一領域である。マット105の例は点線109で囲まれるように
図1で示される。各マット105は、データセルアレイデコーダー110、コンピューティングセルアレイデコーダー111、インターマット(inter−mat)シフトアレイ112、及びインターマットフォワーディングアレイ113を、隣接するマットと共有する。一実施形態で、データセルアレイデコーダー110、コンピューティングセルアレイデコーダー111、及びインターマットシフトアレイ112は、隣接するマット105の間にサブアレイコントローラ114と交互に物理的に配置される。一実施形態で、各デコーダー(110、111)は従来のDARMタイプのメモリデコーダーのように動作する。
【0023】
一実施形態で、各マット105は通信的に(communicatively)サブアレイコントローラ114に連結される。各サブアレイコントローラ114は他のサブアレイコントローラ114から独立して構成される。サブアレイコントローラ114はアドレス(addr)として命令をDRAMアドレスバスから受信する。アドレス(即ち、アドレス信号)に応答して、サブアレイコントローラ114は、データセルアレイ106及びコンピューティングセルアレイ107の中の少なくとも1つのアレイに出力としてデコーディングされたアドレスを提供する。即ち、サブアレイコントローラ114は、関連するデータセルアレイ106に対するデータセルアレイデコーダー110によってデコーディングされたソース/目的地(destination)(src/dst)アドレスを出力する。そして、コンピューティングセルアレイ107の場合、サブアレイコントローラ114は、コンピューティングセルアレイデコーダー111によってデコーディングされた動作/計算(op/calc)アドレスを出力する。また、サブアレイコントローラ114は、2つ以上のサブアレイコントローラ114が組織化された方法で動作するDRAMバスからのアドレスとして命令を受信する。また、サブアレイコントローラ114はデータ移動回路を制御する。例えば、サブアレイコントローラ114は、イントラマットシフトアレイ108、インターマットシフトアレイ112、及びインターマットフォワーディングアレイ113を制御する。
【0024】
各データセルアレイ106は、少なくとも1つのカラム(column)及び少なくとも1つのロー(row)内に配置される1つ以上のDRAMセルを含む。一実施形態で、データセルアレイ106は従来のDRAMセルアレイのように構成される。一実施形態で、データセルアレイ106は2Kカラム及び16ローを含む。他の実施形態で、データセルアレイ106は2Kカラムより少ないか又は多いカラムを含み、また16ローより少ないか又は多いローを含む。
【0025】
各コンピューティングセルアレイ107は、少なくとも1つのカラム及び少なくとも1つのロー内に配置される1つ以上のコンピューティングセルを含む。コンピューティングセルアレイ107内のカラム数はデータセルアレイ106内のカラム数と同一である。一実施形態で、コンピューティングセルアレイ107は2Kカラム及び16ローを含む。他の実施形態で、コンピューティングセルアレイ107は2Kカラムより少ないか又は多いカラムを含み、また16ローより少ないか又は多いローを含む。
【0026】
図2Aは、コンピューティングセルアレイ107内のコンピューティングセルに対して使用される3つのトランジスタ及び1つのキャパシター(3T1C)によるDRAMコンピューティングセルトポグラフィ(topography)201の一例を示す図である。
図2Aに示すように、ローX内の3T1Cコンピューティングセルは第1トランジスタT1を含む。第1トランジスタT1は、書込みビットライン(Write BL)に電気的に連結されたソース端、キャパシターC1の第1端及び第2トランジスタT2のゲート端の両側に電気的に連結されたドレーン端、並びに書込みイネーブル(WEN)ラインに電気的に連結されたゲート端を含む。キャパシターC1の第2端はグラウンド(ground)ラインに電気的に連結される。第2トランジスタT2は、グラウンドラインに電気的に連結されたソース端、及び第3トランジスタT3のソース端に電気的に連結されたドレーン端を含む。第3トランジスタT3は、ワードラインWLに電気的に連結されたゲート端、及び読出しビットライン(Read BL)に電気的に連結されたドレーン端を含む。3T1Cコンピューティングセルトポグラフィ201は、読出しビットライン(Read BL)に電気的に連結された入力及び書込みビットライン(Write BL)に電気的に連結された出力を含むセンスアンプ(Sense Amplifier:SA)を含む。
【0027】
また、ローY内のコンピューティングセル及びローR内のコンピューティングセルの両方は、ローX内のコンピューティングセルの配置と同様に、3T1C DRAM構成に配置された3つのトランジスタ(T1〜T3)及びキャパシターCを含む。
図2Aに示した3つのコンピューティングセル及びセンスアンプ(SA)の一例は、NORロジック動作(即ち、‘X NOR Y’ロジック動作)を提供するように構成される。該当NORロジック動作の結果はローRに格納される。3T1C DRAMコンピューティングセルの1つのカラムのみを
図2Aに明示的に示したが、3T1Cコンピューティングセルが複数のカラム(例えば、2Kカラム)内に構成される等の他の実施形態が可能である。また、3つ以上のローが提供される他の実施形態が可能である。また、
図2Aに示した3T1C DRAMコンピューティングセル構成はNORロジック動作を提供するが、3T1C DRAMコンピューティングセルトポグラフィ201のNORロジック動作は多様な機能的な動作を提供するために使用される。例えば、機能的な動作は、排他ノア(XNOR)、加算(ADD)、セレクト(SET)、MAX、SIGN、多重化(MUX)、CSA(Conditional Sum Addition)ロジック、乗算、ポップカウント(popcount)、COMPARE等を含む。但し、本発明はこれに制限されない。また、イントラマットシフトアレイ108及びインターマットシフトアレイ112はシフト機能を提供する。
【0028】
図2Bは、
図1のコンピューティングセルアレイ107内のコンピューティングセルに対して使用される1つのトランジスタ及び1つのキャパシター(1T1C)によるDRAMコンピューティングセルトポグラフィ(topography)202の他の例を示す図である。
図2Bに示すように、1T1Cコンピューティングセルは第4トランジスタT4を含む。第4トランジスタT4は、キャパシターC2の第1端に電気的に連結されたソース端、ビットラインBLに電気的に連結されたドレーン端、及びワードラインWLに電気的に連結されたゲート端を含む。キャパシターC2の第2端はグラウンドラインに電気的に連結される。ビットラインBLはセンスアンプ(SA)の入力に電気的に連結される。センスアンプ(SA)の出力は、多重化器(MUX)の第1入力、第5トランジスタT5のドレーン端、及びALU(Arithmetic Logic Unit)の入力に電気的に連結される。多重化器(MUX)の出力はラッチ(LATCH)の入力に電気的に連結される。第5トランジスタT5のソース端はラッチ(LATCH)の出力に電気的に連結される。ALUの出力は多重化器(MUX)の第2入力に電気的に連結される。
図2Bで、第5トランジスタT5、多重化器(MUX)、ラッチ(LATCH)、及びALUは、それぞれコントローラ114から制御信号(CNTL1〜NTL4)を受信する。一実施形態で、ALUはNOR機能を提供するように構成される。
図2BのビットラインBLに電気的に連結されたロジック回路はNORロジック動作を提供するが、ビットラインBLに電気的に連結されたロジック回路(即ち、ALU)は他の機能動作(例えば、排他ノア(XNOR)、加算(ADD)、セレクト(SET)、MAX、SIGN、多重化(MUX)、CSA(Conditional Sum Addition)ロジック、乗算、ポップカウント(popcount)、COMPARE等)を提供する。但し、本発明はこれに制限されない。また、イントラマットシフトアレイ108及びインターマットシフトアレイ112はシフト機能を提供する。
図2Bで1つの1T1Cコンピューティングセルのみを図示したが、複数のカラム及びローの1T1Cコンピューティングセルが提供される。
【0029】
図2A及び
図2Bから分かるように、DPUのコンピューティングセルは、特定の複雑なコンピューティングロジックを含まない。但し、代わりに、DPUのコンピューティングセルは、複数の多様なタイプの計算を遂行する機能(ability)を提供する再プログラム可能な性質(nature)を有する相対的に単純なトポグラフィを含む。また、DPUのポグラフィは、より多くの計算をより速くより効率的に遂行するためにメモリ構造に内在され、大量並列処理の長所を有するように配置される。
【0030】
図3は、本発明の一実施形態によるイントラマット(intra−mat)シフト(shift)アレイ108の一例を示す図である。イントラマットシフトアレイ108の記述(description)を単純化するために、
図3に示すように、4つのカラムのコンピューティングメモリセルアレイ107の幅のマット105を考慮する。イントラマットシフトアレイ108は、アレイ内に配置された複数の第6トランジスタT6(
図3では、1つのトランジスタのみをT6で表示する)、2
nシフトラインSLs(nはマット105内のコンピューティングセルのカラムである)、n+2シフトレフト(left)コントロールラインSLcLs、2シフトライト(right)コントロールラインSRcLs、及びnシフトマスクラインSMLsを含む。イントラマットシフトアレイ108の第6トランジスタT6の一部は書込みビットライン(Write BL)と2
nシフトラインSLsとの間に電気的に連結され、イントラマットシフトアレイ108の他の第6トランジスタT6は読出しビットライン(Read BL)と2
nシフトラインSLsとの間に連結される。このような第6トランジスタT6のゲートはn+2シフトレフトコントロールラインSLcLs及び2シフトライトコントロールラインSRcLsに電気的に連結される。イントラマットシフトアレイ108の他の第6トランジスタT6はnシフトマスクラインSMLsと2
nシフトラインSLsとの間に電気的に連結される。イントラマットシフトアレイ108のコントロールラインはマット105に関連するサブアレイコントローラ114に電気的に連結される。
【0031】
コントロールライン(SLcLs、SRcLs)上の適切な信号によって、イントラマットシフトアレイ108は、マット105内でデータをレフト(left)シフト又はライト(right)シフトする。レフトシフトに対して、データは、サイン(sign)ビットで満たされ、1つの動作毎に1ビット又は(n−1)ビット程シフトされる。nはマット105当たりのカラム数である。ライトシフトに対して、命令による制御に従ってデータは0又は1で満たされる。或いは、データは2
0、2
1、…、2
k−1、2
kマット当たりのカラム数までシフトされる。2
kはカラム数である。
【0032】
図4Aは、本発明の一実施形態によるインターマット(inter−mat)シフトアレイ112の一例を示す図である。インターマットシフトアレイ112の記述(descripition)を単純化するために、
図4A〜
図4Cに示すように、マット105が2つのカラムのコンピューティングメモリセルアレイ107の幅であるマット105の構成を考慮する。即ち、各マット105はコンピューティングメモリセル107aの第1カラム及びコンピューティングメモリセル107bの第2カラムを含む。インターマットシフトアレイ112は、トランジスタT112a、T112b、トランジスタT112c、T112d、データシフトライン112e、112f、及びインターマットシフトコントロールラインISLcLsを含む。マット内で、トランジスタT112aは、コンピューティングメモリセル107aの第1カラムの読出しビットライン(Read BL)に電気的に連結されたソース端、データシフトライン112eに電気的に連結されたドレーン端を含む。トランジスタT112bは、コンピューティングメモリセル107bの第2カラムの読出しビットライン(Read BL)に電気的に連結されたソース端、データシフトライン112fに電気的に連結されたドレーン端を含む。データシフトライン(112e、112f)はバッファ103に電気的に連結される。バッファ103は
図4Aに図示していない。異なるマットの間で、トランジスタT112cは、隣接マット内のデータシフトライン112eにそれぞれ電気的に連結されたソース端及びドレーン端を含む。トランジスタT112dは、隣接マット内のデータシフトライン112fにそれぞれ電気的に連結されたソース端及びドレーン端を含む。トランジスタT112c、T112dのゲートはそれぞれ異なるインターマットシフトコントロールラインISLcLsのそれぞれに連結される。インターマットシフトコントロールラインISLcLs上の適切な信号によって、インターマットシフトアレイ112は、異なるマットの間でデータをレフトシフト又はライトシフトする。インターマットシフトアレイ112のコントロールラインはマット105に関連するサブアレイコントローラ114に電気的に連結される。
【0033】
図4Bは、本発明の一実施形態による左側のインターマットシフトに対する隣接するコンピューティングセルカラム(マット105a、105b)で同様に配置された2つのコンピューティングセル間のインターマットシフトインターコネクション(interconnection)構成を概念的に示す図である。
図4Bのインターコネクション構成を、利用されるインターコネクションノードによって概念的に図示し、利用されるインターコネクションノードを強調して図示する。例えば、トランジスタT112c、T112dは活性化され、これに従って導線経路が各々のトランジスタの間に形成される。従って、左側のコンピューティングセルカラム(マット105a)と右側のコンピューティングセルカラム(マット105b)との間でデータシフトライン(112e、112f)は連結される。トランジスタT112c、T112dのゲート端はアクティブなインターマットシフトコントロールラインISLcLに電気的に連結される。マット105b内のトランジスタT112a、T112bは活性化され、従ってマット105b内のコンピューティングセル107aの読出しビットライン(Read BL)は、マット105bの左側であるマット105a内のコンピューティングセル107aの書込みビットライン(Write BL)に電気的に連結される。また、これに従って、マット105b内のコンピューティングセル107bの読出しビットライン(Read BL)は、マット105bの左側であるマット105a内のコンピューティングセル107bの書込みビットライン((Write BL)に電気的に連結される。
【0034】
図4Cは、本発明の一実施形態による左側のインターマットシフトに対する隣接するコンピューティングセルカラム(105a、105b)で同一でないように配置された2つのコンピューティングセル間のインターマットシフトインターコネクション(interconnection)構成を概念的に示す図である。
図4Cのインターコネクション構成を、利用されるインターコネクションノードによって概念的に図示し、利用されるインターコネクションノードを強調して図示する。例えば、トランジスタT112c、T112dは活性化されて導線経路が各々のトランジスタの間に形成される。従って、左側のコンピューティングセルカラム(マット105a)と右側のコンピューティングセルカラム(マット105b)との間でデータシフトライン(112e、112f)は連結される。トランジスタT112c、T112dのゲート端はアクティブなインターマットシフトコントロールラインISLcLに電気的に連結される。マット105aのトランジスタT112a、T112bは活性化され、従ってマット105a内のコンピューティングセル107aの読出しビットライン(Read BL)は、マット105aの右側であるマット105b内のコンピューティングセル107aの書込みビットライン(Write BL)に電気的に連結される。また、これに従って、マット105a内のコンピューティングセル107bの読出しビットライン(Read BL)は、マット105aの右側であるマット105b内のコンピューティングセル107bの書込みビットライン(Write BL)に電気的に連結される。
【0035】
図5は、本発明の一実施形態によるインターマットフォワーディング(forwading)アレイ113を示す図である。インターマットフォワーディングアレイ113の説明を単純化するために、
図5に示すように、2つのカラムのコンピューティングセルアレイ107の幅のマット105の構成を考慮する。即ち、各マット105はコンピューティングセル107aの第1カラム及びコンピューティングセル107bの第2カラムを含む。マット105と共に、インターマットフォワーディングアレイ113は、トランジスタT113a、T113b、トランジスタT113c、T113d、トランジスタT113e、T113f、2
nフォワーディングデータラインFDL、フォワーディングコントロールラインFCL、及び2
mフォワーディングセクションラインFSLを含む。ここで、nはマット内のコンピューティングセルのカラム数であり、mはセクション数である。トランジスタT113a、T113bのソース端はそれぞれコンピューティングセル107aの第1カラムの書込みビットライン(Write BL)及び読出しビットライン(Read BL)に電気的に連結される。トランジスタT113a、T113bのドレーン端は第1データフォワーディングライン(FDL)113gに電気的に連結される。トランジスタT113c、T113dのソース端はそれぞれコンピューティングセル107bの第2カラムの書込みビットライン(Write BL)及び読出しビットライン(Read BL)に電気的に連結される。トランジスタT113c、T113dのドレーン端は第2データフォワーディングライン(FDL)113hに電気的に連結される。トランジスタT113e、T113fのソース端はそれぞれトランジスタT113a、T113bのゲート端に電気的に連結される。トランジスタT113e、T113fのドレーン端は両方とも同一のフォワーディングセクションラインFSLに連結される。トランジスタT113e、T113fのゲート端はそれぞれ異なるフォワーディングコントロールラインFCLsに連結される。フォワーディングコントロールラインFCLs上の適切な信号によって、インターマットフォワーディングアレイ113は、マットの間でデータをフォワーディングする。インターマットフォワーディングアレイ113のコントロールラインは、相互間でデータがフォワーディングされるマット105に関連するサブアレイコントローラ114に電気的に連結される。
【0036】
図6A〜
図6Gは、本発明の一実施形態によるDPUによって提供されるNORロジック基盤の動作を示す図である。
図6A〜
図6Gで、第1オペランド(operand)はローXに格納され、第2オペランドはローY又はローWに格納される。
図6A〜
図6G内の矢印はコンピューティングセルの全体ローに対するNORロジック動作の入出力フローを示す。例えば、
図6AのローXはローXのコンピューティングセルに格納されたオペランドの全体ローを示す。ローX内に格納されたオペランド及びローY内に格納されたオペランドのNORロジック動作の結果は結果ローR内に格納される。一実施形態で、ローX及びローYのオペランドは、例えば100個のカラム(例えば、x
1、x
2、…、x
100及びy
1、y
2、…、y
100)を含み、結果はローR(例えば、r
1、r
2、…、r
100)内に格納される。即ち、‘x
i NOR y
i=r
i’である。ここで、iはカラムインデックスである。他の実施形態で、ローXはロー内のコンピューティングセルの選択されたグループのみを示す。
【0037】
図6Bはプレフィックス(prefix)Kogge−Stoneアダー(加算器)に基づくNビット数に対するプールアダー動作を例示的に示す。
図6Bで、第1NビットオペランドはローX内に格納され、第2NビットオペランドはローY内に格納される。
図6B内に示した例示的な加算動作で、中間値(intermediate term)(G
0、P
0、G
1、P
1、G
2、P
2、…、
GlogN+1、P
logN+1)が計算される。
図6Bの最上のブロックはローX及びローYからの入力オペランドを利用してG
0及びP
0を決定する5個の分離された動作を示す。第1動作で、最上のブロックはローXの逆(即ち、〜X)を決定し、これはロー1に格納される。第2動作はローYの逆(即ち、〜Y)を決定し、これはロー2に格納される。第3動作は‘ローX NOR ローY’の動作を決定し、これはロー3に格納される。第4動作は‘G0=ロー1 NOR ロー2’を決定し、これはロー4に格納される。第5動作は‘P
0=ロー3 NOR ロー4’を決定し、これはロー5に格納される。
【0038】
図6Bの中間ブロックを参照すると、最上ブロックからの中間結果G
0、P
0が中間結果G
i+1、P
i+1を決定するために使用される。ここで、iはカラムインデックスである。即ち、
図6Aの最上のブロックから決定された中間結果G
0、P
0が中間結果G
1、P
1を決定するために使用される。中間結果G
1、P
1は中間結果G
2、P
2を決定するために使用され、同様に中間結果G
logN+1、P
logN+1が決定される。
図6Bの最下のブロックで、結果ローR1及び結果ローR2はそれぞれプールアダー(full adder)動作に対するキャリー(carry)結果及び総合(sum)結果を格納する。
【0039】
図6Cは3T1C DRAMコンピューティングセルトポグラフィ201によって提供される例示的なセレクター動作を示す。ロー1はローXの逆(即ち、〜X)の中間結果を格納する。ロー2はローYの逆(即ち、〜Y)の中間結果を格納する。ロー3はローSの逆(即ち、〜S)の中間結果を格納する。ロー4は‘ロー1 NOR ロー3’の中間結果を格納する。ロー5は‘ロー2 NOR ローS’の中間結果を格納する。ロー6は‘ロー4 NOR ロー5’の中間結果を格納する。ローRはロー6の逆の結果(S?X:Y)を格納する。
【0040】
図6Dは3T1C DRAMコンピューティングセルトポグラフィ201によって提供される他の例示的なセレクター動作を示す。ロー1はローXの逆(即ち、〜X)の中間結果を格納する。ロー2はローSの逆(即ち、〜S)の中間結果を格納する。ロー3は‘ロー1 NOR ローS’の中間結果を格納する。ロー4はローXの逆(〜X)の中間結果を格納する。ローRは‘ロー3 NOR ロー4’の結果(S?X:〜X)を格納する。
【0041】
図6Eは3T1C DRAMコンピューティングセルトポグラフィ201によって提供される例示的なMAX/MIN動作を示す。ロー1はローYの逆(即ち、〜Y)の中間結果を格納する。ロー2はローX+(〜Y+1)の中間結果を格納する。ロー3は‘C
out>>n’の中間結果を格納する。ロー4は‘C
out?X:Y’の中間結果を格納する。ローRは‘MAX(X:Y)’の結果を格納する。
【0042】
図6Fは3T1CDRAMコンピューティングセルトポグラフィ201によって提供される例示的な1ビット乗算動作を示す。ロー1は‘ローX NOR ローW’の中間結果を格納する。ロー2は‘ローX NOR ロー1’の中間結果を格納する。ロー3は‘ローW NOR ロー1’の中間結果を格納する。結果ローRは‘ロー2 NOR ロー3’の結果(即ち、‘ローX XNOR ローW’の結果)を格納する。
【0043】
図6Gは3T1C DRAMコンピューティングセルトポグラフィ201によって提供される例示的な複数ビット乗算動作を示す。
図6Gの上方のブロックで、ロー1はローWの逆(即ち、〜W)の中間結果を格納する。ロー2は2
i番目のレフトシフトされたローXの逆(即ち、〜X<<2
i)の中間結果を格納する。ここで、iはインデックスである。ロー3は‘ロー1 NOR ロー2’の中間結果(PP
i=〜W NOR 〜X<<2
i)を格納する。
図6Gの下方のブロックで、ロー1は‘ローPP
0 SUM ローPP
i(ΣPP
i)’の中間結果を格納する。ロー2は‘ロー2 NOR ローW
sign’の中間結果を格納する。ローRは‘X*W’の結果を格納する。
【0044】
図7は、本発明の一実施形態による確率的(stochastic)データアレイ715を含むDPU700の一例を示すブロック図である。
図1に示したDPU100の構成要素と同一な参照インジケータ(indicator)を有するDPU700の多様な構成要素は同様であり、このような同様の構成要素の記述はここで省略する。DPU700のサブアレイ102は、(実際の)データセルアレイ106、コンピューティングセルアレイ107、及びイントラマットシフトアレイ108と共に、確率的データアレイ715及びコンバーターツー確率(converter−to−stochastic)アレイ716を含む。
【0045】
確率的データアレイ715の各々は、少なくとも1つのカラム及び少なくとも1つのロー内に配置された1つ以上の確率的コンピューティングセルを含む。確率的データアレイ715内のカラム数はデータセルアレイ106及びコンピューティングセルアレイ107内のカラム数と同一である。一実施形態で、確率的データアレイ715は2Kカラム及び16ローを含む。他の実施形態で、確率的データアレイ715は2Kカラムより少ないか又は多いカラム、或いは16ローより少ないか又は多いローを含む。確率的データアレイ715内で、‘1’が存在する確率が使用され、2nビットはnビット値を示すために使用される。コンバーターツー確率アレイ716内の任意数生成器は実数(real number)を確率的な数に変換するために使用される。ポップカウント動作は確率的な数を再び実数に変換するために使用される。
【0046】
確率的なコンピューティングアプローチを使用して、加算は多重化(multiplexing)動作に変換され、乗算はANDロジック動作に変換される。例えば、
図8Aは、多重化動作に変換される加算動作に対する確率的コンピューティング動作を示す図であり、
図8Bは、ANDロジック動作に変換される乗算動作に対する確率的コンピューティング動作を示す図である。確率的コンピューティングに対する従来の技術は巨大なメモリ容量を要求する。しかし、本明細書に記述した発明は高度に効率的な確率的コンピューティングを提供するために使用される。これはDRAM基盤のDPUが多くの並列AND動作及びマックス(MUX)動作を遂行するためである。本明細書に記述したDPUを使用する確率的コンピューティングは、またディープラーニングが一般的なアプリケーションである複雑な動作を加速化する。
【0047】
図9は、本発明の一実施形態によるDPUを含むシステム構造900を示す図である。システム構造900は、ハードウェアレイヤー910、ライブラリ及びドライバーレイヤー920、フレームワークレイヤー930、及びアプリケーションレイヤー940を含む。
【0048】
ハードウェアレイヤー910は、本明細書に記述したDPUのような内装されたDPUを含むハードウェア装置及び/又は構成要素を含む。装置及び/又は構成要素の一実施形態は、1つ以上の内装されたDPUを含むPCIe装置911である。装置及び/又は構成要素の他の実施形態は、1つ以上の内装されたDPUを含むDIMM(Dual In−line Memory Module)912である。システム構造900のハードウェアレイヤー910はPCIe装置及び/又はDIMMに制限されず、ハードウェアレイヤー910はDPUを含むSOC(System On Chip)装置又は他のメモリタイプ装置を含むことは容易に理解される。ハードウェアレベル910で装置及び/又は構成要素内に内装されるDPUは、
図1のDPU100及び/又は
図7のDPU700と同様に構成される。他の実施形態で、DPUの特定コンピューティングセルアレイは、
図2Aの3T1Cコンピューティングセルトポグラフィ201又は
図2Bの1T1Cコンピューティングセルトポグラフィ202を含むように構成される。
【0049】
システム構造900のライブラリ及びドライバーレイヤー920は、DPUライブラリ921、DPUドライバー922、及びDPUコンパイラ923を含む。DPUライブラリ921は、アプリケーションレイヤー940で動作する多様なアプリケーションに対するハードウェアレイヤー910内のDPU内サブアレイの各々に対する最適のマッピング機能、リソース割当機能、及びスケジューリング機能を提供するように構成される。
【0050】
一実施形態で、DPUライブラリ921は、移動、加算、乗算等の動作を含むフレームワークレイヤー930に対するハイレベルAPI(Application Programming Interface)を提供する。例えば、DPUライブラリ921は、また標準タイプのルーチン(routines)に対する具現を含む。標準タイプのルーチンに対する具現は、加速化されたディープラーニングプロセスに対して適用されるフォワード(forward)及びバックワード(backward)コンボリューション(convolution)、プーリング(pooling)、正規化(normalization)、及び活性化(activation)レイヤーを含む。但し、本発明はこれに制限されない。一実施形態で、DPUライブラリ921は、CNN(Convolution Neural Network)の全体コンボリューションレイヤーに対する計算をマッピングするAPI類似機能を含む。更に、DPUライブラリ921は、DPU上へのコンボリューションレイヤー計算のマッピングを最適化するためのAPI類似機能を含む。
【0051】
また、DPUライブラリ921は、タスク(例えば、バッチ(batch)、出力チャンネル、ピクセル、入力チャンネル、コンボリューションカーネル)内の全ての個別又は複数の並列性(parallelism)を、チップ、バンク、サブアレイ、及び/又はマットレベルで該当DPU並列性にマッピングして、リソース割当を最適化するためのAPI類似機能を含む。更に、DPUライブラリ921は、性能(即ち、データ移動フロー)と電力消耗との間で均衡を維持(trade off)する初期化及び/又はランタイム時に最適のDPU構成を提供するAPI類似機能を含む。DPUライブラリ921によって提供される他のAPI類似機能はデザインノブ(knob)タイプ機能を含む。例えば、デザインノブタイプ機能は、バンク当たり活性化されたサブアレイの数、活性化されたサブアレイ当たりの入力機能マップの数、機能マップのパーティショニング(partitioning)、及び/又はコンボリューションカーネルの再使用スキームの設定を含む。また他のAPI類似機能は、各サブアレイに対して特定タスク(例えば、コンボリューションコンピューティング、チャンネル圧縮(sum up)、及び/又はデータディスパッチング(dispatching))を割当することによって、追加的なリソースの割当最適化を提供する。オペランドが整数と確率的数字との間で変換された場合、DPUライブラリ921は、精密度制限を満足させながらも、オーバーヘッドを最小化するAPI類似機能を含む。精密度が予想より低い場合、DPUライブラリ921は、確率的表現のための追加的なビットを使用して値を再び計算するか、又は他のハードウェア(例えば、CPU(Central Processing Unit))にタスクを分担(offload)するAPI類似機能を含む。
【0052】
DPUライブラリ921は、またDPU内の活性化されたサブアレイをスケジュールすると同時にデータ移動をスケジュールして、データ移動がコンピューティング動作によって隠されるAPI類似機能を含む。
【0053】
DPUライブラリ921の他の様相は追加的なDPU開発のための拡張インターフェイスを含む。一実施形態で、DPUライブラリ921は、NOR及びシフトロジックを利用して直接機能をプログラムして標準タイプ動作(例えば、加算、乗算、MAX/MIN等)及び他の動作が提供されるインターフェイスを提供する。拡張インターフェイスは、またインターフェイスを提供し、従ってDPUライブラリ921によって具体的に支援されない動作が、ライブラリ及びドライバーレイヤー920で、SoCコントローラ(図示せず)、CPU/GPU構成要素、及び/又はCPU/TPU構成要素として分担される。DPUライブラリ921の他の様相は、DPUメモリがコンピューティングのために使用されない場合に、メモリの拡張としてDPUのメモリを使用するためのAPI類似機能を提供する。
【0054】
DPUドライバー922は、DPUハードウェアレイヤーをシステムに集積するために、ハードウェアレイヤー910でのDPU、DPUライブラリ921、及びより高いレイヤーでのオペレーティングシステム(OS:Operating System)との間のインターフェイス連結を提供するように構成される。即ち、DPUドライバー922はDPUをシステムOS及びDPUライブラリ921に露出する。一実施形態で、DPUドライバー922は初期化時にDPUコントロールを提供する。一実施形態で、DPUドライバー922はDRAMタイプのアドレス又はDRAMタイプのアドレスのシーケンスの形態で命令をDPUに伝送し、DPUの内外へのデータ移動を制御する。DPUドライバー922は、DPU−CPU及び/又はDPU−GPU通信を処理すると共に多重DPU通信を提供する。
【0055】
DPUコンパイラ923は、DPUライブラリ921からのDPUコードを、DPUを制御するためにDPUドライバー922によって使用されるメモリアドレスの形態であるDPU命令にコンパイルする。DPUコンパイラ923によって生成されたDPU命令は、DPU内の1つ及び/又は2つのロー上で作動する単一命令(例えば、ベクトル命令、及び/又は集合(gathered)ベクトル、リードオン動作命令)である。
【0056】
フレームワークレイヤー930は使いやすい(user−friendly)インターフェイスをライブラリ及びドライバーレイヤー920並びにハードウェアレイヤー910に提供するように構成される。一実施形態で、フレームワークレイヤー930は、アプリケーションレイヤー940で広範囲なアプリケーションと互換可能な使いやすいインターフェイスを提供し、DPUハードウェアレイヤー910をユーザーに透過的に(transparent)提供する。他の実施形態で、フレームワークレイヤー930は、定量化(quantitation)機能を、例えばTorch7タイプアプリケーションやTensorFlowタイプアプリケーションのような、既存の、従来の方法に追加するフレームワーク拡張を含む。但し、本発明はこれに制限されない。一実施形態で、フレームワークレイヤー930はトレーニングアルゴリズムに定量化機能を追加することを含む。他の実施形態で、フレームワークレイヤー930は、既存の割り算、乗算、平方根のバッチ正規化方法に対して、割り算、乗算、平方根の近似方法にシフトする置換を提供する。他の実施形態で、フレームワークレイヤー930は、ユーザーが計算のために使用するビット数を設定する拡張を提供する。他の実施形態で、フレームワークレイヤー930は、DPUライブラリ及びドライバーレイヤー920からフレームワークレイヤー930に多重DPU APIをラップ(wrap)するための容量を提供する。従って、ユーザーは複数のGPUの使用と同様にハードウェアレイヤーで複数のDPUを使用することができる。フレームワークレイヤー930の他の機能は、ユーザーがハードウェアレイヤー910でDPU又はGPUに機能を割当する。
【0057】
アプリケーション940は、広範囲なアプリケーション(例えば、イメージタグ(tag)プロセシング、セルフドライビング/パイロッティング(piloting)運送手段、アルファ碁タイプディープマインドアプリケーション、及び/又は音声研究(speech research)等)を含む。但し、本発明はこれに制限されない。
【0058】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。