(58)【調査した分野】(Int.Cl.,DB名)
DRAM基盤プロセシングユニット(Dynamic Random Access Memory based Processing Unit、DPU)であって、
少なくとも第1所定数のカラム(column)及び第2所定数のロー(row)を有するアレイ内に配置された複数のDRAM基盤のコンピューティングセルを含む少なくとも1つのコンピューティングセルアレイと、
前記少なくとも1つのコンピューティングセルアレイに連結され、DPU動作を遂行するように前記少なくとも1つのコンピューティングセルアレイを構成するコントローラと、を含み、
前記第1所定数は3以上であり、前記第2所定数は3以上であり、
カラムの各々は、前記カラムの第1ロー及び第2ローを機能的に動作させるロジック機能からなる前記DPU動作を提供するように構成され、前記カラムの第3ロー内に前記ロジック機能の結果を格納するように構成され、
前記少なくとも1つのコンピューティングセルアレイは、第3所定数のシフトラインをさらに含み、前記第3所定数は前記第1所定数の2倍であり、
シフトラインの各々は、少なくとも1つの対応する第1トランジスタを介してコンピューティングセルのカラムに連結され、
前記シフトライン及び前記対応する第1トランジスタは、前記少なくとも1つのコンピューティングセルアレイにおいて、選択されたカラムのコンピューティングセルの2つのローのデータを少なくとも2カラム右方向または左方向にシフトするように構成されていることを特徴とするDPU。
【発明を実施するための形態】
【0010】
以下において、多様な詳細な説明を本文の理解を提供するために提示する。しかし、このような詳細な説明無しに記載された本発明の思想が当業者によって容易に具現されることはよく理解されるべきである。他の例において、広く公知の方法、手続、構成、及び回路は本文を曖昧にしないために説明しない。
【0011】
詳細な説明において‘‘1つの実施形態’’又は‘‘一実施形態’’を参照することは実施形態と連関された特定な特徴、構造、又は特性が本文の少なくとも1つの実施形態に含まれることを意味する。即ち、本文の多様な位置で使用される‘‘1つの実施形態で’’又は‘‘一実施形態で’’又は‘‘1つの実施形態に係って’’又は類似な意味を有する他の表現は同一の実施形態を参照することを要求しない。さらに、特定の特徴、構造、又は特性は適切な方式により1つ以上の実施形態に組合される。これと関連して、本明細書において使用する‘‘例示的な’’という単語は‘‘例(example、instance、illustration)として提供される’’ということを意味する。本明細書において‘‘例示的な’’のように記述した実施形態は他の実施形態に比べて必ず望ましいか、有利であると考えてはならない。また、本文において言及した内容にしたがって、単数用語は複数の形態を含み、複数用語は単数形態を含む。構成図面を含む多様な図面はただ説明の目的のために使用し、図示し、定量化しない。同様に、多様な波形及びタイミング図は単純に説明の目的のために図示する。例えば、一部の構成要素は明確性のために他の構成要素と比較して誇張して図示する。さらに、適切と考慮される場合、参照番号は対応する構成要素及び/又は類似の構成要素を示すために図面に使用した。
【0012】
本明細書で使用した用語は単に特定の実施形態を説明するためであり、本発明の制限を意図しない。本明細書において使用したように、文脈上特に記載しない限り、単数形態の‘‘1つ’’は複数の形態も含むと意図する。‘‘構成される’’、‘‘構成されている’’、‘‘含む’’、及び‘‘含んでいる’’の用語を本明細書において使用する時、このような用語は定まれた特徴、整数、段階、動作、要素、及び/又は成分が存在を明示するが、1つ又はそれ以上の他の特徴、整数、段階、動作、要素、成分、及び/又はそれらのグループの追加又は存在を不可能にしない。‘‘第1’’、‘‘第2’’のような用語は先に説明した構成に対するラベルとして使用し、別の定義が無い限り特定の順序(例えば、空間的、時間的、論理的、等)を意図しない。その上に、同一の参照番号は同一であるか、或いは類似の機能を有する部品、構成、ブロック、回路、ユニット、又はモジュールと関連された2つ以上の図面にわたって使用する。しかし、このような使用は単純に説明の簡易化のためであり、このような構成及びユニットの構成又は構造的な細部事項がすべての実施形態又は共通的に参照される部分/モジュールにおいて同一と意図せず、単純に、本発明の特定実施形態を指称するための1つの手段である。
【0013】
特に定義しない限り、すべての用語(技術又は科学用語を含む)は本発明の装置と方法が属する分野における当業者に通常的に理解される同一の意味を有する。また、辞書的な意味として定義された用語は関連された記述及び/又は本発明の説明の状況にしたがって解釈されなければならず、このように定義されない限り、理想的に理解されるか、或いは過度に形式的な意味として理解されてはならない。
【0014】
本明細書に記述した発明は多様な動作に対してプログラム可能(programmable)であり、再構成可能な(reconfigurable) DPU(DRAM(Dynamic Random Access Memory) based Processing Unit)を提供する。例えば、多様な動作は加算、乗算、シフティング(shifting)、最大/最小(MIN/MAX)、及び比較(Comparison)等を含み、本発明はこれに制限されない。一実施形態において、DPUは3つのトランジスタ、1つのキャパシター(3T1C)DRAMプロセスと構造に基づく。他の実施形態において、若干の変化と共に、DPUは1つのトランジスタ、1つのキャパシター(1T1C)DRAMプロセスと構造に基づく。したがって、DPUは特定のコンピューティングロジック回路(例えば、加算器(adder)のような)を含まない。しかし、高度の並列動作を使用するメモリセルを使用する計算を提供する。一実施形態において、DPUは乗算(multiplication)動作がANDロジック動作に変換され、加算(addition)動作が多重化(multiplexing)動作に変換される確率的コンピューティングアレイを含む。
【0015】
また、本明細書に記述した発明はDPUをプログラムし、再構成するためのISA(Instruction Set Architecture)とコンパイラ(compiler)、ドライバー、ライブラリ、フレームワーク(framework)拡張(extension)を含む環境(ecosystem)を含むシステム構造を提供する。
【0016】
追加的に、本明細書に記述した発明はデータセンター及び/又はモバイルアプリケーションに適合なシステム構造を提供する。そして、システム構造はGPU/ASIC(Application Specific Integrated Circuit)(TPU)/FPGA(Field−Programmable Gate Array)マシンラーニングアプリケーションに対する代案である二進(binary)と固定小数点方式(fixed point)の計算の双方に対するマシンラーニングアプリケーションのためのPIM(Processor−in Memory)ソリューションを提供する。一実施形態において、本明細書に記述した発明は高性能であり、エネルギー効率的であり、安価なシステムを提供する。該当システムは例えば二進加重ニューラルネットワーク(Binary Weight Neural Network)に対する加速化されたディープラーニングを提供する。
【0017】
本明細書に記述した発明は再構成及びプログラム可能であり、DRAM技術を利用して構成されるDPUと関連される。一実施形態において、DPUは多様な動作(例えば、加算、乗算、整列、等)を遂行するように構成されるDRAM基盤のメモリセルアレイとDRAM基盤のコンピューティングセルアレイを含む。
【0018】
DPUの内部構成はサブアレイ(sub−array)の複数のバンクと連結されたシステムバスを含む。一実施形態において、システムバスはサブアレイのHツリー(tree)連結されたバンクを提供するように構成される。各々のサブアレイはローカルコントローラを含み、各々の独立的なサブアレイは分離的に又は同時に活性化される。一実施形態において、DRAM基盤のセルは2つのアレイ(データセルアレイとコンピューティングセルアレイ)に区分される。一実施形態において、コンピューティングセルアレイはDRAM基盤のメモリセルにより具現される。他の実施形態において、コンピューティングセルアレイはロジック回路を含むDRAM基盤のメモリセルにより具現される。DPU内部構造は、またデータ−シフティング(data−shifting)及びデータ−移動(data−movement)回路を含む。一部の実施形態において、確率的データ計算のために構成される第3DRAM基盤のセルアレイがあり得る。
【0019】
図1は本発明の実施形態に係るDPU100を例示的に示すブロック図である。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ツリー連結されたバンクを提供するように構成される。
【0020】
各サブアレイ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、及びインターマットフォワーディング(forwarding)アレイ113を隣接するマットと共有する。一実施形態において、データセルアレイデコーダー110、コンピューティングセルアレイデコーダー111、及びインターマットシフトアレイ112は隣接するマット105の間にサブアレイコントローラ114と交互に物理的に配置される。一実施形態において、データセルアレイデコーダー110、コンピューティングセルアレイデコーダー111は従来のDRAM−タイプのメモリデコーダーのように動作する。
【0021】
一実施形態において、各マット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を制御する。
【0022】
各データセルアレイ106は少なくとも1つのカラム(column)と少なくとも1つのロー(row)内に配置される1つ以上のDRAMセルを含む。一実施形態において、データセルアレイ106は従来のDRAMセルアレイのように構成される。一実施形態において、データセルアレイ106は2Kカラム及び16ローを含む。他の実施形態において、データセルアレイ106は2Kカラムより少ないか、或いは多いカラムを含み、及び/又は16ローより少ないか、或いは多いローを含む。
【0023】
各コンピューティングセルアレイ107は少なくとも1つのカラムと少なくとも1つのロー内に配置される1つ以上のコンピューティングセルを含む。コンピューティングセルアレイ107内のカラムの数はデータセルアレイ106内のカラムの数と同一である。一実施形態において、コンピューティングセルアレイ107は2Kカラム及び16ローを含む。他の実施形態において、コンピューティングセルアレイ107は2Kカラムより少ないか、或いは多いカラムを含み、及び/又は16ローより少ないか、或いは多いローを含む。
【0024】
図2はコンピューティングセルアレイ(cell array)107内のコンピューティングセルに対して使用される3つのトランジスタ、1つのキャパシター(3T1C)のDRAMコンピューティングセルトポグラフィ201の例示的な実施形態を示す。
図2に図示したように、ロー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は読出しビットラインと電気的に連結された入力とライトビットライン(Write BL)と電気的に連結された出力を含むセンスアンプ(Sense Amplifier、SA)を含む。
【0025】
また、ローY内のコンピューティングセルとローR内のコンピューティングセルの双方はローX内のコンピューティングセルの配置と同様に3T1C DRAM構成に配置された3つのトランジスタT1乃至T3とキャパシターCとを含む。
図2に図示した3つのコンピューティングセル及びセンスアンプ(SA)の例はNORロジック動作(即ち、‘X NOR Y’ロジック動作)を提供するように構成される。該当NORロジック動作の結果はローRに格納される。3T1C DRAMコンピューティングセルの1つのカラムのみを
図2に明示的に図示したが、3T1Cコンピューティングセルが複数のカラム(例えば、2Kカラム)内に構成される等の他の実施形態が可能であることが理解されるべきである。また、3つ以上のローが提供される他の実施形態が可能であることが理解されるべきである。また、
図2に図示した3T1C DRAMコンピューティングセル構成がNORロジック動作を提供するが、3T1C DRAMコンピューティングセルトポグラフィ201のNORロジック動作が多様な機能的な動作を提供するために使用されることが理解されるべきである。例えば、機能的な動作は排他ノア(XNOR)、加算(ADD)、セレクト(SET)、MAX、SIGN、多重化(MUX)、CSA(Conditional Sum Addition)ロジック、乗算、ポップカウント(popcount)、及びCOMPARE等を含む。但し、本発明はこれに制限されない。また、イントラマットシフトアレイ108とインターマットシフトアレイ112とはシフティング機能を提供する。
【0026】
図3は
図1のコンピューティングセルアレイ107内のコンピューティングセルに対して使用される1つのトランジスタ、1つのキャパシター(1T1C)のDRAMコンピューティングセルトポグラフィ202の他の例示的な実施形態を示す。
図3に図示したように、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入力と電気的に連結される。
図3において、第5トランジスタT5、多重化器(MUX)、ラッチ(LATCH)、及びALUは各々コントローラ114から制御信号CNTL1乃至NTL4を受信する。一実施形態において、ALUはNOR機能を提供するように構成される。
図3のビットラインBLと電気的に連結されたロジック回路がNORロジック動作を提供しても、ビットラインBLと電気的に連結されたロジック回路(即ち、ALU)が他の機能動作(例えば、排他ノア(XNOR)、加算(ADD)、セレクト(SET)、MAX、SIGN、多重化(MUX)、CSA(Conditional Sum Addition)ロジック、乗算、ポップカウント、及びCOMPARE等)を提供することを理解すべきである。但し、本発明はこれに制限されない。また、イントラマットシフトアレイ108とインターマットシフトアレイ112とはシフティング機能を提供する。
図3において1つの1T1Cコンピューティングセルのみを図示したが、複数のカラム及びローの1T1Cコンピューティングセルが提供されることは理解されるべきである。
【0027】
図2及び
図3から分かるように、DPUのコンピューティングセルは特定の複雑なコンピューティングロジックを含まない。但し、代わりに、DPUのコンピューティングセルは複数の、多様なタイプの計算を遂行する機能(ability)を提供する再プログラム可能な性質(nature)を有する相対的に単純なトポグラフィを含む。追加的に、DPUのトポグラフィは、さらに多くの計算をさらに速くてさらに効率的に遂行するためにメモリ構造に内在され、大量並列処理の長所を有するように配置される。
【0028】
図4は本発明の実施形態に係るイントラマットシフトアレイ108を例示的に示す。イントラマットシフトアレイ108の説明を単純化するために、例えば
図4に図示したように、4つのカラムのコンピューティングセルアレイ107の広さのマット105を考慮する。イントラマットシフトアレイ108はアレイ内に配置された複数の第6トランジスタT6(
図4において1つのトランジスタのみをT6により表示する)、2
nシフトラインSL(nはマット105内のコンピューティングセルのカラムである)、n+2シフトレフト(left)コントロールラインSLcL、2シフトライト(right)コントロールラインSRcLs、及びnシフトマスクラインSMLを含む。イントラマットシフトアレイ108の第6トランジスタT6の一部はライトビットライン(Write BL)と2
nシフトラインSLとの間に電気的に連結され、イントラマットシフトアレイ108の他の第6トランジスタT6は読出しビットライン(Read BL)と2
nシフトラインSLとの間に連結される。このような第6トランジスタT6のゲートはn+2シフトレフトコントロールラインSLcLと2シフトライトコントロールラインSRcLsと電気的に連結される。イントラマットシフトアレイ108の他の第6トランジスタT6はnシフトマスクラインSML及び2
nシフトラインSLの間に電気的に連結される。イントラマットシフトアレイ108のコントロールラインはマット105と関連されたサブアレイコントローラ114と電気的に連結される。
【0029】
コントロールラインSLcL、SRcL上の適合な信号によって、イントラマットシフトアレイ108はマット105内においてデータをレフト(left)シフト又はライト(right)シフトする。レフトシフティングに対して、データはサイン(sign)ビットで満たされ、1つの動作毎に1ビット又は(n−1)ビットぐらいシフトされる。nはマット105当たりのカラムの数である。ライトシフトに対して、命令による制御にしたがってデータは0又は1で満たされる。又は、データは2
0、2
1、・・・、2
k−1、2
kマット当たりのカラムの数までシフトされる。2
kはカラムの数である。
【0030】
図5は本発明の実施形態に係るインターマット(inter−mat)シフトアレイ112を例示的に示す。インターマットシフトアレイ112の説明を単純化するために、例えば
図5乃至
図7に図示したように、マット105が2つのカラムのコンピューティングセルアレイ107の広さであるマット105の構成を考慮する。即ち、各マット105はコンピューティングセル107aの第1カラムとコンピューティングセル107bの第2カラムとを含む。インターマットシフトアレイ112はトランジスタT112a、T112bとトランジスタT112c、T112d、データシフトライン112e、112f、及びインターマットシフトコントロールラインISLcLを含む。マット内において、トランジスタT112aはコンピューティングセル107aの第1カラムの読出しビットライン(Read BL)と電気的に連結されたソース端、データシフトライン112eと電気的に連結されたドレイン端を含む。トランジスタT112bはコンピューティングセル107bの第2カラムの読出しビットライン(Read BL)と電気的に連結されたソース端、データシフトライン112fと電気的に連結されたドレイン端を含む。データシフトライン112e、112fはバッファ103と電気的に連結される。バッファ103は
図5に図示されない。相異なるマットとの間において、トランジスタT112cは隣接マット内のデータシフトライン112eと各々電気的に連結されたソース端及びドレイン端を含む。トランジスタT112dは隣接マット内のデータシフトライン112fと各々電気的に連結されたソース端及びドレイン端を含む。トランジスタT112c、T112dのゲートは各々相異なるインターマットシフトコントロールラインISLcLの各々と連結される。インターマットシフトコントロールラインISLcL上の適合な信号によって、インターマットシフトアレイ112は相異なるマットの間においてデータをレフトシフト又はライトシフトする。インターマットシフトアレイ112のコントロールラインはマット105と連関されたサブアレイコントローラ114と電気的に連結される。
【0031】
図6は本発明の実施形態に係る左側のインターマットシフトに対する隣接するコンピューティングセルカラム105a、105bにより同様に配置された2つのコンピューティングセルの間のインターマットシフトインターコネクション(interconnection)構成を概念的に示す。
図6のインターコネクション構成は利用されるインターコネクションノードによって概念的に図示する。利用されるインターコネクションノードは強調して図示する。例えば、トランジスタT112c、T112dは活性化され、これにしたがって導線経路が各々のトランジスタの間に形成される。したがって、左側のコンピューティングセルカラム105aと右側のコンピューティングセルカラム105bとの間でデータシフトライン112e、112fは連結される。トランジスタT112c、T112dのゲート端はアクティブ(active)インターマットシフトコントロールラインISLcLと電気的に連結される。マット105b内のトランジスタT112a、T112bはアクティブ化され、したがってマット105b内のコンピューティングセル107aの読出しビットライン(Read BL)はマット105bの左側であるマット105a内のコンピューティングセル107aのライトビットライン(Write BL)と電気的に連結される。また、これにしたがって、マット105b内のコンピューティングセル107bの読出しビットライン(Read BL)はマット105bの左側であるマット105a内のコンピューティングセル107bのライトビットライン((Write BL)と電気的に連結される。
【0032】
図7は本発明の実施形態に係る左側のインターマットシフトに対する隣接するコンピューティングセルカラム105a、105bにより同一でないように配置された2つのコンピューティングセルの間のインターマットシフトインターコネクション(interconnection)構成を概念的に示す。
図7のインターコネクション構成は利用されるインターコネクションノードによって概念的に図示している。利用されるインターコネクションノードは強調して図示する。例えば、トランジスタ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)と電気的に連結される。
【0033】
図8は本発明の実施形態に係るインターマットフォワーディングアレイ113を示す。インターマットフォワーディングアレイ113の説明を単純化するために、
図8に図示したように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に電気的に連結される。
【0034】
図9乃至
図15は本発明の実施形態に係るDPUによって提供されるNORロジック基盤の動作を示す。
図9乃至
図15において、第1オペランド(operand)はローXに格納され、第2オペランドはローY又はローWに格納される。
図9乃至
図15内の矢印はコンピューティングセルの全体ローに対するNORロジック動作の入出力流れを示す。例えば、
図9のロー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 NORy
i=r
iである。ここで、iはカラムインデックス(index)である。他の実施形態において、ローXはロー内のコンピューティングセルの選択されたグループのみを示す。
【0035】
図10はプレフィックス(prefix) Kogge−Stone アダー(Adder、加算器)に基づくNビット数に対するプールアダー動作を例示的に示す。
図10において、第1NビットオペランドはローX内に格納され、第2NビットオペランドはローY内に格納される。
図10内に図示した例示的な加算動作により、中間者(intermediate term)(G
0、P
0、G
1、P
1、G
2、P
2、・・・、G
logN+1、P
logN+1)が計算される。
図10の最上のブロックはローX及びYからの入力オペランドを利用してG
0及びP
0を決定する5個の分離された動作を示す。第1動作において、最上のブロックはローXのインバース(inverse)(即ち、〜X)を決定し、これはロー1に格納される。第2動作はローYのインバース(即ち、〜Y)を決定し、これは(row)2に格納される。第3動作は‘ローXNORローY’の動作を決定し、これはロー3に格納される。第4動作は‘G0=ロー1NORロー2’を決定し、これはロー4に格納される。第5動作は‘P
0=ロー3NORロー4’を決定し、これはロー5に格納される。
【0036】
図10の中間ブロックを参照すれば、最上ブロックからの中間結果G
0、P
0が中間結果G
i+1、P
i+1を決定するために使用される。ここで、iは行インデックスである。即ち、
図9の最上のブロックから決定された中間結果G
0、P
0が中間結果G
1、P
1を決定するために使用される。中間結果G
1、P
1は中間結果G
2、P
2を決定するために使用され、同一な過程によって中間結果G
logN+1、P
logN+1が決定される。
図10の最下のブロックにおいて、結果ローR1と結果ローR2は各々プールアダー(full adder)動作に対するキャリー(carry)結果と総合(sum)結果を格納する。
【0037】
図11は3T1C DRAMコンピューティングセルトポグラフィ201によって提供される例示的なセレクター(selector)動作を示す。ロー1はローXのインバース(即ち、〜X)の中間結果を格納する。ロー2はローYのインバース(即ち、〜Y)の中間結果を格納する。ロー3はローSのインバース(即ち、〜S)の中間結果を格納する。ロー4は‘ロー1NORロー3’の中間結果を格納する。ロー5は‘ロー2NORローS’の中間結果を格納する。ロー6は‘ロー4NORロー5’の中間結果を格納する。ローRはロー6のインバースの結果(S? X:Y)を格納する。
【0038】
図12は3T1C DRAMコンピューティングセルトポグラフィ201によって提供される他の例示的なセレクター動作を示す。ロー1はローXのインバース(即ち、〜X)の中間結果を格納する。ロー2はローSのインバース(即ち、〜S)の中間結果を格納する。ロー3は‘ロー1NORローS’の中間結果を格納する。ロー4はローXのインバース(〜X)の中間結果を格納する。ローRは‘ロー3NORロー4’の結果(S? X:〜X)を格納する。
【0039】
図13は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)’の結果を格納する。
【0040】
図14は3T1CDRAMコンピューティングセルトポグラフィ201によって提供される例示的な1ビット乗算動作を示す。ロー1は‘ローXNORローW’の中間結果を格納する。ロー2は‘ローXNORロー1’の中間結果を格納する。ロー3は‘ローWNORロー1’の中間結果を格納する。結果ローRは‘ロー2NORロー3’の結果(即ち、‘ローX XNOR ローW’の結果)を格納する。
【0041】
図15は3T1C DRAMコンピューティングセルトポグラフィ201によって提供される例示的な複数ビット乗算動作を示す。
図15の上方のブロックにおいて、ロー1はローWのインバース(即ち、〜W)の中間結果を格納する。ロー2は2
i番目のレフトシフトされたローXのインバース(即ち、〜X<<2
i)の中間結果を格納する。ここで、iはインデックスである。ロー3は‘ロー1NORロー2’の中間結果(PP
i=〜W NOR〜X<<2
i)を格納する。
図15の下方のブロックにおいて、ロー1は‘ローPP
0 SUM ローPP
i(ΣPP
i)’の中間結果を格納する。ロー2は‘ロー2NORローW
sign’の中間結果を格納する。ローRは‘X*W’の結果を格納する。
【0042】
図16は本発明の実施形態に係る確率的(stochastic)データ領域715を含むDPU700を例示的に示すブロック図である。
図1に図示したDPU100の構成要素と同一の参照インジケータ(indicator)を有するDPU700の多様な構成要素は類似であり、このような類似の構成要素の記述はここでは省略する。DPU700のサブアレイ102は、(実際の)データセルアレイ106、コンピューティングセルアレイ107、及びイントラマットシフトアレイ108と共に、確率的データアレイ715とコンバーターツー確率(converter−to−stochastic)アレイ716とを含む。
【0043】
確率的データアレイ715は各々少なくとも1つのカラムと少なくとも1つのロー内に配置された1つ以上の確率的コンピューティングセルを含む。確率的データアレイ715内のカラムの数はデータセルアレイ106とコンピューティングセルアレイ107内のカラムの数と同一である。一実施形態において、確率的データアレイ715は2Kカラム及び16ローを含む。他の実施形態において、確率的データアレイ715は2Kカラムより少ないか、或いは多いカラム及び/又は16ローより少ないか、或いは多いローを含む。確率的データアレイ715内において、‘1‘が存在する確率が使用され、2
nビットはnビット値を示すために使用される。コンバーターツー確率アレイ716内の乱数生成器は実数(real number)を確率的な数に変換するために使用される。ポップカウント動作は確率的な数を再び実数に変換するために使用される。
【0044】
確率的なコンピューティング接近(approach)を使用して、加算は多重化動作に変換され、乗算はANDロジック動作に変換される。例えば、
図17は多重化動作としての確率的加算動作を提供する回路を図示し、
図18はANDロジック動作としての確率的乗算動作を提供する回路を図示する。確率的コンピューティングに対する従来の技術は巨大なメモリ容量を要求する。しかし、本明細書に記述する発明は高度に効率的な確率的コンピューティングを提供するために使用される。これはDRAM基盤のDPUが多い並列AND動作及びマックス(MUX)動作を遂行できるためである。本明細書に記述したDPUを使用する確率的コンピューティングは、またディープラーニングが一般的なアプリケーションである複雑な動作を加速化する。
【0045】
図19は本発明の実施形態に係るDPUを含むシステム構造900を示す。システム構造900はハードウェアレイヤー910、ライブラリ及びドライバーレイヤー920、フレームワークレイヤー930、及びアプリケーションレイヤー940を含む。
【0046】
ハードウェアレイヤー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及び/又は
図16のDPU700と同様に構成される。他の実施形態において、DPUの特定コンピューティングセルアレイは
図2の3T1Cコンピューティングセルトポグラフィ201又は
図3の1T1Cコンピューティングセルトポグラフィ202を含むように構成される。
【0047】
システム構造900のライブラリ及びドライバーレイヤー920はDPUライブラリ921、DPUドライバー922、及びDPUコンパイラ923を含む。DPUライブラリ921は、アプリケーションレイヤー940で動作できる多様なアプリケーションに対するハードウェアレイヤー910内のDPU内サブアレイ各々に対する、最適のマッピング機能、リソース割当機能、及びスケジューリング機能を提供するように構成される。
【0048】
一実施形態において、DPUライブラリ921は移動(move)、加算、乗算等の動作を含むフレームワークレイヤー930に対するハイ−レベル(high−level)API(Application Programming Interface)を提供する。例えば、DPUライブラリ921は、また標準タイプのルーチン(routines)に対する具現を含む。標準タイプのルーチンに対する具現は、加速化されたディープラーニングプロセスに対して適用されるフォワード(forward)及びバックワード(backward)コンヴォリューション(convolution)、プリング(pooling)、標準化(normalization)、及び活性化(activation)レイヤーを含む。但し、本発明はこれに制限されない。一実施形態において、DPUライブラリ921はCNN(Convolution Neural Network)の全体コンヴォリューションレイヤーに対する計算をマッピングするAPI類似機能を含む。追加的に、DPUライブラリ921はDPU上へのコンヴォリューションレイヤー計算のマッピングを最適化するためのAPI類似機能を含む。
【0049】
また、DPUライブラリ921は、タスク(task)(例えば、配置(batch)、出力チャンネル、ピクセル、入力チャンネル、コンヴォリューションカーネル)内のすべての個別又は複数の並列性(parallelism)をチップ、バンク、サブアレイ及び/又はマットレベルに該当DPU並列性にマッピングして、リソース割当を最適化するためのAPI類似機能を含む。追加的に、DPUライブラリ921は、性能(即ち、データ移動流れ)と消費電力との間において均衡を維持(trade off)する、初期化及び/又はランタイム(runtime)の時に最適のDPU構成を提供するAPI類似機能を含む。DPUライブラリ921によって提供される他のAPI類似機能はデザインノブ(knob)タイプ機能を含む。例えば、デザインノブタイプ機能はバンク当たり活性化されたサブアレイの数、活性化されたサブアレイ当たりの入力機能マップの数、機能マップのパーティショニング(partitioning)、及び/又はコンヴォリューションカーネルの再使用スキームの設定を含む。続いて、他のAPI類似機能は各サブアレイに対して特定タスク(例えば、コンヴォリューションコンピューティング、チャンネル圧縮(sum up)、及び/又はデータディスパッチング(dispatching))の割当によって、追加的なリソース割当最適化を提供する。仮にオペランドが整数と確率的数字との間で変換されれば、DPUライブラリ921は精密度制限を満足させながらも、オーバーヘッド(overhead)を最小化するAPI類似機能を含む。精密度が予想より低い場合、DPUライブラリ921は確率的表現のための追加的なビットを使用して値を再び計算するか、又は他のハードウェア(例えば、CPU(Central Processing Unit))にタスクを分担(offload)するAPI類似機能を含む。
【0050】
DPUライブラリ921は、またDPU内の活性化されたサブアレイをスケジュールするのと同時にデータ移動をスケジュールして、データ移動がコンピューティング動作によって隠されるAPI類似機能を含む。
【0051】
DPUライブラリ921の他の様相は追加的なDPU開発のための拡張インターフェイスを含む。一実施形態において、DPUライブラリ921はNOR及びシフトロジックを利用して直接機能をプログラムして標準タイプ動作(例えば、加算、乗算、MAX/MIN等)と他の動作が提供されるようにするインターフェイスを提供する。拡張インターフェイスは、またインターフェイスを提供し、したがってDPUライブラリ921によって具体的に支援されない動作が、ライブラリ及びドライバーレイヤー920において、SoCコントローラ(図示せず)、CPU/GPU構成要素及び/又はCPU/TPU構成要素として分担される。DPUライブラリ921のその他の様相は、DPUメモリがコンピューティングのために使用されない場合に、メモリの拡張としてDPUのメモリを使用するためのAPI類似機能を提供する。
【0052】
DPUドライバー922は、DPUハードウェアレイヤーをシステムに集積するために、ハードウェアレイヤー910におけるDPU、DPUライブラリ921、及びさらに高いレイヤーにおけるオペレーティングシステム(OS:Operating System)の間のインターフェイス連結を提供するように構成される。即ち、DPUドライバー922はDPUをシステムOS及びDPUライブラリ921に露出する。一実施形態において、DPUドライバー922は初期化時にDPUコントロールを提供する。一実施形態において、DPUドライバー922はDRAMタイプの住所又はDRAMタイプの住所のシークェンス(sequence)の形態により命令をDPUに伝送し、DPUの内或いは外へのデータ移動を制御する。DPUドライバー922はDPU−CPU及び/又はDPU−GPU通信を処理すると共に多重DPU通信を提供する。
【0053】
DPUコンパイラ923は、DPUライブラリ921からのDPUコードを、DPUを制御するためにDPUドライバー922によって使用されるメモリ住所の形態であるDPU命令にコンパイルする。DPUコンパイラ923によって生成されたDPU命令はDPU内の1つ及び/又は2つのロー上において運営される単一命令(例えば、ベクトル命令、及び/又は集合(gathered)ベクトル、リード(read)オン(on)動作命令)である。
【0054】
フレームワークレイヤー930は使いやすい(user−friendly)インターフェイスをライブラリ及びドライバーレイヤー920とハードウェアレイヤー910とに提供するように構成される。一実施形態において、フレームワークレイヤー930はアプリケーションレイヤー940において広範囲であるアプリケーションと互換可能な使いやすいインターフェイスを提供し、ハードウェアレイヤー910をユーザーに透明に(transparent)する。他の実施形態において、フレームワークレイヤー930は定量化(quantitation)機能を、例えばTorch7タイプアプリケーション、及びTensorFlowタイプアプリケーションのような既存の、従来の方法に追加するフレームワーク拡張を含む。但し、本発明はこれに制限されない。一実施形態において、フレームワークレイヤー930はトレーニング(training)アルゴリズムに正量化機能を追加することを含む。他の実施形態において、フレームワークレイヤー930は既存の割り算、乗算、平方根(square root)の配置(batch)−標準化(normalization)方法を割り算、乗算、平方根のシフト近似方法に置換を提供する。他の実施形態において、フレームワークレイヤー930はユーザーが計算のために使用するビットの数を設定する拡張を提供する。他の実施形態において、フレームワークレイヤー930はDPUライブラリ及びドライバーレイヤー920からフレームワークレイヤー930に多重DPU APIをラップ(wrap)するための容量を提供する。したがって、ユーザーは複数のGPUの使用と同様にハードウェアレイヤーにおいて複数のDPUを使用できる。フレームワークレイヤー930の他の機能はユーザーがハードウェアレイヤー910でDPU又はGPUに機能を割当するようにする。
【0055】
アプリケーションレイヤー940は広範囲であるアプリケーション(例えば、イメージタッグ(tag)プロセシング、セルフ−ドライビング/パイロッティング(piloting)運送手段、アルファ碁タイプディープマインドアプリケーション及び/又は音声研究(speech research)等)を含む。但し、本発明はこれに制限されない。
【0056】
当業者が認識できるように、本明細書に記述した革新的な概念は広範囲であるアプリケーションに掛けて変形され、変更される。したがって、請求する本発明の思想の範囲は上述の任意の例示的な教示に制限されてはならず、代わりに請求の範囲によって定義される。