JP7255068B2 - メモリデバイス及びその動作方法 - Google Patents

メモリデバイス及びその動作方法 Download PDF

Info

Publication number
JP7255068B2
JP7255068B2 JP2021138238A JP2021138238A JP7255068B2 JP 7255068 B2 JP7255068 B2 JP 7255068B2 JP 2021138238 A JP2021138238 A JP 2021138238A JP 2021138238 A JP2021138238 A JP 2021138238A JP 7255068 B2 JP7255068 B2 JP 7255068B2
Authority
JP
Japan
Prior art keywords
accumulation
circuit
operation result
multiplication
digital
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
JP2021138238A
Other languages
English (en)
Other versions
JP2022045335A (ja
Inventor
フ ハン-ウェン
リー ユン-チュン
リン ボ-ロン
ワン フアイ-ム
Original Assignee
旺宏電子股▲ふん▼有限公司
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 旺宏電子股▲ふん▼有限公司 filed Critical 旺宏電子股▲ふん▼有限公司
Publication of JP2022045335A publication Critical patent/JP2022045335A/ja
Application granted granted Critical
Publication of JP7255068B2 publication Critical patent/JP7255068B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06JHYBRID COMPUTING ARRANGEMENTS
    • G06J1/00Hybrid computing arrangements
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Fuzzy Systems (AREA)
  • Automation & Control Theory (AREA)
  • Read Only Memory (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Description

本開示は、概してインメモリコンピューティングのメモリデバイス及びその動作方法に関する。
最近、多くの分野の非常に効果的なソリューションとして、人工知能(「AI」)が台頭している。AIの重要な問題とは、AIが、積和演算(MAC)を行うための大量の入力データ(例えば、入力特徴マップ)及び重みで構成されていることである。
しかしながら、現在のAI構造は通常、IO(入力/出力)のボトルネック及び非効率的なMAC演算フローに直面する。
高い精度を実現するためには、マルチビットの入力及びマルチビットの重みを有するMAC演算を行うことになるであろう。しかし、IOのボトルネックは悪化し、効率は低下する。
インメモリコンピューティング(「IMC」)は、IMCがプロセス中心のアーキテクチャにおける算術論理演算ユニット(ALU)の複雑さを低減し、メモリ内のMAC演算の大量並列処理を提供できるので、MAC演算を加速させることができる。
不揮発性IMC(NVMベースのIMC)の利点は、不揮発性記憶装置、データ移動の削減によるものである。
「コンピューティングインメモリチップ及びメモリセルアレイ構造」と題する米国特許出願公開第20210151106号は、コンピューティングインメモリチップ及びメモリセルアレイ構造において、その中にあるメモリセルアレイが、アレイ内に配置された複数のメモリセルサブアレイを含むことを開示している。各メモリセルサブアレイは、アレイ内に配置された複数のスイッチユニット及び複数のメモリセルを有し、各列の全メモリセルの第1端子がソース線に接続されており、全メモリセルの第2端子がビット線に接続されており、各行の全メモリセルの第3端子がスイッチユニットを介してワード線に接続されており、これに対応してメモリセルの複数の行が複数のスイッチユニットに接続されており、複数のスイッチユニットの制御端子がメモリセルサブアレイのローカルワード線に接続されており、メモリセルサブアレイをアクティブにするかどうかがローカルワード線を制御することで制御される。
IMCを実行する際に、演算速度及び演算精度が両方とも満たされているならば、IMC性能は改良されることになる。
1つの実施形態によれば、メモリデバイスが提供される。本メモリデバイスは、複数の重みを格納する複数のメモリセルを含むメモリアレイと、メモリアレイに結合され、複数の入力データ及び複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する乗算回路であって、ビット単位の乗算を行う際に、複数のメモリセルが複数のメモリセル電流を生成する、乗算回路と、乗算回路に結合され、複数の乗算結果に対してデジタル累算を行うデジタル累算回路と、メモリアレイに結合され、複数のメモリセル電流に対してアナログ累算を行って第1のMAC演算結果を生成するアナログ累算回路と、デジタル累算回路及びアナログ累算回路に結合され、アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する決定ユニットとを含む。ハイブリッド累算を行う際に、デジタル累算回路をトリガするかどうかが第1のMAC演算結果に基づいている。
別の実施形態によれば、メモリデバイスの動作方法が提供される。本動作方法は、メモリデバイスのメモリアレイの複数のメモリセルに複数の重みを格納する段階と、複数の入力データ及び複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する段階と、複数の入力データ及び複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する段階であって、ビット単位の乗算では、複数のメモリセルが複数のメモリセル電流を生成する、生成する段階と、アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する段階であって、アナログ累算を行う際には、複数のメモリセル電流に対してアナログ累算を行って第1のMAC演算結果を生成し、デジタル累算を行う際には、複数の乗算結果に対してデジタル累算を行って第2のMAC演算結果を生成し、ハイブリッド累算を行う際には、第1のMAC演算結果に基づいてデジタル累算をトリガするかどうかを決定する、決定する段階とを含む。
本願の1つの実施形態によるIMC(In-Memory-Computing:インメモリコンピューティング)メモリデバイスの機能ブロック図を示している。
本願の1つの実施形態によるデータマッピングを示している。
本願の1つの実施形態によるデータマッピングの実行可能な例を示している。 本願の1つの実施形態によるデータマッピングの実行可能な例を示している。 本願の1つの実施形態によるデータマッピングの実行可能な例を示している。
本願の1つの実施形態による乗算演算の一例を示している。
本願の1つの実施形態によるグルーピング演算(多数決演算)及び計数を示している。 本願の1つの実施形態によるグルーピング演算(多数決演算)及び計数を示している。
本願の1つの実施形態によるMAC演算フローを示している。
本願の1つの実施形態における固定メモリページのプログラミングを示している。 本願の1つの実施形態における読み出し電圧調整のフローチャートを示している。
本願の1つの実施形態によるMAC演算フローを示している。
以下の詳細な説明では、説明を目的として、開示される実施形態の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、こうした具体的な詳細がなくても、1つ又は複数の実施形態が実施され得ることは明らかであろう。他の例では、図面を簡略にするために、よく知られている構造及びデバイスが概略的に示されている。
本開示の専門用語は、本開示の技術分野の一般的定義に基づいている。本開示で1つ又はいくつかの用語が記載されるか説明される場合、その用語の定義は本開示の記載又は説明に基づいている。開示される実施形態のそれぞれは、1つ又は複数の技術的特徴を持っている。実行可能な実装において、当業者であれば、本開示の任意の実施形態の一部又は全部の技術的特徴を選択的に実装するか、あるいは本開示の実施形態の一部又は全部の技術的特徴を選択的に組み合わせるであろう。
図1は、本願の1つの実施形態によるIMC(In-Memory-Computing:インメモリコンピューティング)メモリデバイス100の機能ブロック図を示している。IMCメモリデバイス100は、メモリアレイ110と、乗算回路120と、入力/出力回路130と、デジタル累算回路135と、アナログ累算回路160と、決定ユニット170と、コンパレータ163とを含む。デジタル累算回路135は、グルーピング回路140と計数ユニット150とを含む。アナログ累算回路160は、アナログデジタル変換器(ADC)161を含む。メモリアレイ110、乗算回路120、アナログ累算回路160、及びアナログデジタル変換器161はアナログ方式であり、デジタル累算回路135、グルーピング回路140、及び計数ユニット150はデジタル方式である。
メモリアレイ110は、複数のメモリセル111を含む。本願の1つの実施形態では、メモリセル111は、限定されないが、例えば不揮発性メモリセルである。MAC演算では、メモリセル111は重みを格納するのに用いられる。
乗算回路120は、メモリアレイ110に結合される。乗算回路120は、複数の単ビット乗算ユニット121を含む。それぞれの単ビット乗算ユニット121は、入力ラッチ121Aと、センスアンプ(SA)121Bと、出力ラッチ121Cと、共通データラッチ(CDL)121Dとを含む。入力ラッチ121Aは、メモリアレイ110に結合される。センスアンプ121Bは、入力ラッチ121Aに結合される。出力ラッチ121Cは、センスアンプ121Bに結合される。共通データラッチ121Dは、出力ラッチ121Cに結合される。
入力/出力回路130は、乗算回路120、グルーピング回路140、及び計数ユニット150に結合される。入力/出力回路130は、入力データを受信し、メモリデバイス100が生成するデータを出力するためのものである。
デジタル累算回路135は、デジタル累算を行うためのものであり、詳細については以下の通りである。
アナログ累算回路160は、アナログ累算を行うためのものであり、詳細については以下の通りである。
決定ユニット170は、メモリデバイス100がアナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定するためのものである。決定ユニット170は、イネーブル信号EN1及びEN2をそれぞれアナログ累算回路160及びデジタル累算回路135に出力し、アナログ累算回路160を有効にするのか、デジタル累算回路135を有効にするのかを決定する。
アナログ累算とは、アナログ累算回路160が有効になっているが、デジタル累算回路135が無効になっていることを指す。デジタル累算とは、デジタル累算回路135が有効になっているが、アナログ累算回路160が無効になっていることを指す。ハイブリッド累算とは、アナログ累算回路160及びデジタル累算回路135が両方とも有効になっていることを指す。
ADC161は、メモリアレイ110のメモリセル111に結合される。各メモリセル111からのセル電流が足し合わされてADC161に入力され、第1のMAC演算結果OUT1に変換される。
コンパレータ163は、第1のMAC演算結果OUT1とトリガ基準値とを比較するために、ADC161に結合される。ハイブリッド累算を行う際に、第1のMAC演算結果OUT1がトリガ基準値より低い場合、コンパレータ163はトリガ信号TSをデジタル累算回路135に出力せず、第1のMAC演算結果OUT1がトリガ基準値より高い場合、コンパレータ163はトリガ信号TSをデジタル累算回路135に出力して、デジタル累算を行うためにデジタル累算回路135をトリガする。アナログ累算を行う場合、コンパレータ163からのトリガ信号TSは、デジタル累算回路135によって無視されることになる。
本願の1つの実施形態では、アナログ累算は、無用なデータを迅速に選別してMAC演算速度を向上させるのに用いられてよく、デジタル累算は、未選別データを累算してMAC演算精度を高めることができ、ハイブリッド累算は、低解像度の量子化を用いて受けた変動の影響を排除し、無用なデータの累算を回避して解像度を維持することができる。すなわち、ハイブリッド累算は、アナログ累算及びデジタル累算の利点と欠点のバランスをとっている。
グルーピング回路140は、乗算回路120に結合される。グルーピング回路140は、複数のグルーピングユニット141を含む。グルーピングユニット141は、単ビット乗算ユニット121からの複数の乗算結果に対してグルーピング演算を行い、複数のグルーピング結果を生成する。本願の1つの実行可能な実施形態では、多数決方式(例えば、多数決関数方式)によってグルーピング方式が実装されてよく、グルーピング回路140は、多数決関数方式に基づいて多数決グルーピング回路により実装されてよく、グルーピングユニット141は、分散型多数決グルーピングユニットにより実装されてよいが、これによって本願を限定することは意図されていない。このグルーピング方式は、他の同様な方式で実装されてもよい。本願の1つの実施形態では、グルーピング回路140は任意的である。
計数ユニット150は、グルーピング回路140又は乗算回路120に結合される。本願の1つの実施形態では、計数ユニット150は(メモリデバイス100がグルーピング回路140を含まない場合)、乗算回路からの乗算結果に対してビット単位の計数又はビット単位の累算を行い、第2のMAC演算結果OUT2を生成するためのものである。あるいは、計数ユニット150は(メモリデバイス100がグルーピング回路140を含む場合)、グルーピング回路140からのグルーピング結果(すなわち、多数決結果)に対してビット単位の計数又はビット単位の累算を行い、第2のMAC演算結果OUT2を生成するためのものである。本願の1つの実施形態では、計数ユニット150は、既知の計数回路(限定されないが、例えば、リップルカウンタ)によって実装される。本願において、「計数」及び「累算」という用語は交換可能であり、カウンタ及び累算器は実質的に同じ意味である。
換言すれば、メモリデバイス100がアナログ累算を行うと決定ユニット170が決定した場合、第1のMAC演算結果OUT1がMAC演算結果として用いられる。メモリデバイス100がデジタル累算を行うと決定ユニット170が決定した場合、第2のMAC演算結果OUT2がMAC演算結果として用いられる。メモリデバイス100がハイブリッド累算を行うと決定ユニット170が決定した場合、第1のMAC演算結果OUT1がMAC演算結果として用いられた後に、デジタル累算回路135がトリガ信号TSでトリガされ、デジタル累算回路135がトリガ信号TSでトリガされた後に、第2のMAC演算結果OUT2がMAC演算結果として用いられる。
ここで、本願の1つの実施形態によるデータマッピングを示している図2を参照する。図2に示すように、それぞれの入力データ及びそれぞれの重みは、8ビット精度のN次元(Nは正の整数)を有するが、本願はこれに限定されない。
入力データのデータマッピングが一例として説明されるが、本願はこれに限定されない。以下の説明は、重みのデータマッピングにも好適である。
入力データ(又は重み)が2進8ビットフォーマットで表される場合、入力データ(又は重み)は、最上位ビット(MSB)ベクトル及び最下位ビット(LSB)ベクトルを含む。8ビットの入力データ(又は重み)のMSBベクトルはビットB7~B4を含み、8ビットの入力データ(又は重み)のLSBベクトルはビットB3~B0を含む。
入力データのMSBベクトル及びLSBベクトルの各ビットは、単進符号(バリューフォーマット)で表される。例えば、入力データのMSBベクトルのビットB7はB7~B7として表されてよく、入力データのMSBベクトルのビットB6はB6~B6として表されてよく、入力データのMSBベクトルのビットB5はB5~B5として表されてよく、入力データのMSBベクトルのビットB4はB4として表されてよい。
次に、単進符号(バリューフォーマット)で表される、入力データのMSBベクトルの各ビット及び入力データのLSBベクトルの各ビットはそれぞれ、複数回複製されて、展開ドット積(unFDP)フォーマットになる。例えば、入力データのMSBベクトルのそれぞれが(2-1)回複製され、同様に、入力データのLSBベクトルのそれぞれが(2-1)回複製される。そうすることで、入力データがunFDPフォーマットで表される。同様に、重みもunFDPフォーマットで表される。
入力データ(unFDPフォーマット)及び重み(unFDPフォーマット)に対して乗算演算が行われ、複数の乗算結果が生成される。
理解のために、データマッピングの1つの例が説明されるが、本願はこれに限定されない。
ここで、本願の1つの実施形態による1次元データマッピングの1つの実行可能な例を示している図3Aを参照する。図3Aに示すように、入力データは(IN,IN)=(2,1)であり、重みは(We,We)=(1,2)である。入力データのMSB及びLSBは2進フォーマットで表されるので、IN=10であり、IN=01である。同様に、重みのMSB及びLSBは2進フォーマットで表されるので、We=01であり、We=10である。
次に、入力データのMSB及びLSB、並びに重みのMSB及びLSBはエンコードされて、単進符号(バリューフォーマット)になる。例えば、入力データのMSBはエンコードされて「110」になり、入力データのLSBはエンコードされて「001」になる。同様に、重みのMSBはエンコードされて「001」になり、重みのLSBはエンコードされて「110」になる。
次に、入力データのMSB(110、エンコードされて単進符号になっている)の各ビットと、入力データのLSB(001、エンコードされて単進符号になっている)の各ビットとが、複数回複製されて、unFDPフォーマットで表される。例えば、入力データのMSB(110、バリューフォーマットで表されている)の各ビットは3回複製されるので、入力データのMSBのunFDPフォーマットは、111111000である。同様に、入力データのLSB(001、バリューフォーマットで表されている)の各ビットは3回複製されるので、入力データのLSBのunFDPフォーマットは、000000111である。
入力データ(unFDPフォーマットで表されている)及び重みに対して乗算演算が行われ、MAC演算結果が生成される。MAC演算結果は、1×0=0,1×0=0,1×1=1,1×0=0,1×0=0,1×1=1,0×0=0,0×0=0,0×1=0,0×1=0,0×1=0,0×0=0,0×1=0,0×1=0,0×0=0,1×1=1,1×1=1,1×0=0である。各値が足し合わされて、0+0+1+0+0+1+0+0+0+0+0+0+0+0+0+1+1+0=4になる。
上記の説明から、入力データが「i」ビットであり、重みが「j」ビットである場合(「i」及び「j」は両方とも正の整数)、MAC(又は乗算)演算に用いられるメモリセル総数は、(2-1)×(2-1)になる。
ここで、本願の1つの実施形態によるデータマッピングの別の実行可能な例を示している図3Bを参照する。図3Bに示すように、入力データは(IN)=(2)であり、重みは(We)=(1)である。入力データ及び重みは、4ビットになっている。
入力データは2進フォーマットで表されるので、IN=0010である。同様に、重みは2進フォーマットで表されるので、We=0001である。
入力データ及び重みはエンコードされて、単進符号(バリューフォーマット)になる。例えば、入力データの最上位ビット「0」がエンコードされて「00000000」になり、入力データの最下位ビット「0」がエンコードされて「0」になるといった具合である。同様に、重みの最上位ビット「0」がエンコードされて「00000000」になり、重みの最下位ビット「1」がエンコードされて「1」になる。
次に、入力データ(エンコードされて単進符号になっている)の各ビットは複数回複製されて、unFDPフォーマットで表される。例えば、入力データ(エンコードされて単進符号になっている)の最上位ビット301Aが15回複製されてビット303Aになり、入力データ(エンコードされて単進符号になっている)の最下位ビット301Bが15回複製されてビット303Bになる。
重み302(エンコードされて単進符号になっている)は15回複製されて、unFDPフォーマットで表される。
入力データ(unFDPフォーマットで表されている)及び重み(unFDPフォーマットで表されている)に対して乗算演算が行われ、MAC演算結果が生成される。詳細に言うと、入力データのビット303Aが重み302と掛け合わされ、入力データのビット303Bが重み302と掛け合わされるといった具合である。各乗算値を加算して、MAC演算結果(「2」)が生成される。
ここで、本願の1つの実施形態によるデータマッピングの別の実行可能な例を示している図3Cを参照する。図3Cに示すように、入力データは(IN)=(1)であり、重みは(We)=(5)である。入力データ及び重みは、4ビットになっている。
入力データは2進フォーマットで表されるので、IN=0001である。同様に、重みは2進フォーマットで表されるので、We=0101である。
次に、入力データ及び重みがエンコードされて、単進符号(バリューフォーマット)になる。
次に、入力データ(エンコードされて単進符号になっている)の各ビットは複数回複製されて、unFDPフォーマットで表される。図3Cでは、入力データの各ビット及び重みの各ビットが複製されると、ビット「0」が追加される。例えば、入力データ(エンコードされて単進符号になっている)の最上位ビット311Aは15回複製され、ビット「0」が追加されてビット313Aが形成され、入力データ(エンコードされて単進符号になっている)の最下位ビット311Bが15回複製され、ビット「0」が追加されてビット313Bが形成される。そうすることで、入力がunFDPフォーマットで表される。
同様に、重み312(エンコードされて単進符号になっている)は15回複製され、ビット「0」がさらに追加されてそれぞれの重み314になる。そうすることで、重みはunFDPフォーマットで表される。
入力データ(unFDPフォーマットで表されている)と重み(unFDPフォーマットで表されている)とに対して乗算演算が行われ、MAC演算結果が生成される。詳細に言うと、入力データのビット313Aが重み314と掛け合わされ、入力データのビット313Bが重み314と掛け合わされるといった具合である。各乗算値を加算して、MAC演算結果(「5」)が生成される。
従来技術では、8ビットの入力データ及び8ビットの重みに対するMAC演算において、直接的MAC演算が用いられる場合、直接的MAC演算に用いられるメモリセル総数は、255×255×512=33,292,822個になる。
これに対して、本願の1つの実施形態では、8ビットの入力データ及び8ビットの重みに対するMAC演算において、直接的MAC演算に用いられるメモリセル総数は、15×15×512×2=115,200×2=230,400個になる。したがって、本願の1つの実施形態によるMAC演算に用いられるメモリセル数は、従来技術に用いられるメモリセル数の約0.7%である。
本願の1つの実施形態では、unFDPベースのデータマッピングを用いることで、MAC演算に用いられるメモリセル数が削減されるので、演算コストも削減される。さらに、ECC(エラー訂正符号)コストも削減され、フェイルビット効果の公差が改善される。
再度、図1を参照する。本願の1つの実施形態では、乗算演算において、重み(相互コンダクタンス)はメモリアレイ110のメモリセル111に格納され、入力データ(電圧)は格納され、入力/出力回路130によって読み出され、共通データラッチ121Dに送信される。共通データラッチ121Dは、入力データを入力ラッチ121Aに出力する。
本願の1つの実施形態の乗算演算を説明するために、ここで、本願の1つの実施形態の乗算演算の1つの例を示している図4を参照する。図4は、選択されたビット線の読み出し機能をメモリデバイスがサポートする場合に用いられる。図4では、入力ラッチ121Aがラッチ(第1ラッチ)405と、ビット線スイッチ410とを含む。
図4に示すように、重みは、図2に示されるような単進符号(バリューフォーマット)で表される。したがって、重みの最上位ビットが8つのメモリセル111に格納され、重みの2番目の最上位ビットが4つのメモリセル111に格納され、重みの3番目の最上位ビットが2つのメモリセル111に格納され、重みの最下位ビットが1つのメモリセル111に格納される。
同様に、入力データは(図2に示されるような)単進符号(バリューフォーマット)で表される。したがって、入力データの最上位ビットが8つの共通データラッチ121Dに格納され、入力データの2番目の最上位ビットが4つの共通データラッチ121Dに格納され、入力データの3番目の最上位ビットが2つの共通データラッチ121Dに格納され、入力データの最下位ビットが1つの共通データラッチ121Dに格納される。入力データは、共通データラッチ121Dからラッチ405に送られる。
図4には、複数のビット線スイッチ410が、メモリセル111とセンスアンプ121Bとの間に結合される。ビット線スイッチ410は、ラッチ405の出力で制御される。例えば、ラッチ405がビット「1」を出力すると、ビット線スイッチ410が入り、ラッチ405がビット「0」を出力すると、ビット線スイッチ410が切断される。
さらに、メモリセル111に格納された重みがビット1であり、且つビット線スイッチ410が入っている(すなわち、入力データがビット1である)場合、SA121Bは、メモリセル電流を検知して乗算結果「1」を生成する。メモリセル111に格納された重みがビット0であり、且つビット線スイッチ410が入っている(すなわち、入力データがビット1である)場合、SA121Bはメモリセル電流を検知しない。メモリセル111に格納された重みがビット1であり、且つビット線スイッチ410が切断されている(すなわち、入力データがビット0である)場合、SA121Bはメモリセル電流を検知しない(その結果、乗算結果「0」を生成する)。メモリセル111に格納された重みがビット0であり、且つビット線スイッチ410が切断されている(すなわち、入力データがビット0である)場合、SA121Bはメモリセル電流を検知しない。
すなわち、図4に示すレイアウトにおいて、入力データがビット1であり、且つ重みがビット1である場合、SA121Bはメモリセル電流を検知する(その結果、乗算結果「1」を生成する)。他の状況では、SA121Bはメモリセル電流を検知しない(その結果、乗算結果「0」を生成する)。
メモリセル111からのメモリセル電流IMCは、足し合わされてADC161に入力される。
入力データと、重みと、デジタル乗算結果と、アナログメモリセル電流IMCとの間の関係は、以下の表の通りである。
Figure 0007255068000001
上記の表では、HVT及びLVTはそれぞれ、高閾値メモリセル及び低閾値メモリセルを指しており、IHVT及びILVTはそれぞれ、入力データが論理1の場合、高閾値メモリセル(重みは0(HVT))及び低閾値メモリセル(重みは+1(LVT))により生成されるアナログメモリセル電流IMCを指している。
本願の1つの実施形態では、乗算演算において、選択されたビット線の読み出し(SBL-読み出し)コマンドは、単ビット表現による変動の影響を低減するのに再利用されてよい。
ここで、図5Aを参照する。この図は、本願の1つの実施形態によるグルーピング演算(多数決演算)及びビット単位の計数を示している。図5Aに示すように、「GM1」は入力データの1番目のMSBベクトルに重みを掛け合わせるビット単位の乗算による第1の乗算結果を指し、「GM2」は入力データの2番目のMSBベクトルに重みを掛け合わせるビット単位の乗算による第2の乗算結果を指し、「GM3」は入力データの3番目のMSBベクトルに重みを掛け合わせるビット単位の乗算による第3の乗算結果を指し、「GL」は入力データのLSBベクトルに重みを掛け合わせるビット単位の乗算による第4の乗算結果を指す。グルーピング演算(多数決演算)の後に、第1の乗算結果「GM1」に対して行われたグルーピングの結果が第1のグルーピング結果CB1(その累算重みは2)であり、第2の乗算結果「GM2」に対して行われたグルーピングの結果が第2のグルーピング結果CB2(その累算重みは2)であり、第3の乗算結果「GM3」に対して行われたグルーピングの結果が第3のグルーピング結果CB3(その累算重みは2)であり、第4の乗算結果「GL」に対する直接計数結果が第4のグルーピング結果CB4(その累算重みは2)である。
図5Bは、図3Cの1つの累算例を示している。図3C及び図5Bを参照されたい。図5Bに示すように、入力データ(図3C)のビット313Bが重み314と掛け合わされる。入力データ(図3C)のビット313Bと重み314とを掛け合わせて生成された乗算結果の最初の4つのビット(「0000」)が、第1の乗算結果「GM1」としてグルーピングされる。同様に、入力データ(図3C)のビット313Bを重み314と掛け合わせて生成された乗算結果の5番目~8番目のビット(「0000」)が、第2の乗算結果「GM2」としてグルーピングされる。入力データ(図3C)のビット313Bを重み314と掛け合わせて生成された乗算結果の9番目~12番目のビット(「1111」)が、第3の乗算結果「GM3」としてグルーピングされる。入力データ(図3C)のビット313Bを重み314と掛け合わせて生成された乗算結果の13番目~16番目のビット(「0010」)が、直接的にカウントされる。
グルーピング演算(多数決演算)の後に、第1のグルーピング結果CB1は「0」(その累算重みは2)になり、第2のグルーピング結果CB2は「0」(その累算重みは2)になり、第3のグルーピング結果CB3は「1」(その累算重みは2)になる。計数の際には、それぞれの累算重みと掛け合わされたそれぞれのグルーピング結果CB1~CB4を累算することで、MAC結果が生成される。例えば、図5Bに示すように、MAC結果(第2のMAC演算結果OUT2)は、CB1×2+CB2×2+CB3×2+CB4×2=0×2+0×2+1×2+1×2=0000 0000 0000 0000 0000 0000 0000 0101=5である。
本願の1つの実施形態では、グルーピング規則(例えば、多数決規則)は以下の通りである。
Figure 0007255068000002
上記の表において、ケースAでは、このグループが正しいビットを有している(「1111」はエラービットがないことを意味している)ため、多数決結果は1である。同様に、上記の表において、ケースEでは、このグループは正しいビットを有している(「0000」はエラービットがないことを意味している)ため、多数決結果は0である。
ケースBでは、このグループがエラービットを1つ有している(「1110」の中でビット「0」はエラーである)ため、多数決関数によって、グループ「1110」は「1」であると決定される。ケースDでは、このグループがエラービットを1つ有している(「1000」の中でビット「1」はエラーである)ため、多数決関数によって、グループ「1000」は「0」であると決定される。
ケースCでは、このグループがエラービットを2つ有している(「1100」の中でビット「00」又はビット「11」はエラーである)ため、多数決関数によって、グループ「1100」は「1」又は「0」であると決定される。
こうして、本願の1つの実施形態では、グルーピング(多数決)関数によってエラービットが低減される。
グルーピング回路140からの多数決結果は、ビット単位の計数を行うために、計数ユニット150に入力される。
計数の際には、MSBベクトルの乗算結果に対する計数結果と、LSBベクトルの乗算結果に対する計数結果とが加算される、すなわち累算される。図5Aに示すように、2つの累算器が用いられる。第1累算器には、大きい累算重み(例えば、2)が割り当てられる。第1累算器は、(1)乗算結果GM1に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)と、(2)乗算結果GM2に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)と、(3)乗算結果GM3に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)とを累算する。第1累算器による累算結果には、大きい累算重み(例えば、2)が割り当てられる。第2累算器には、小さい累算重み(例えば、2)が割り当てられる。第2累算器は、乗算結果GL(複数のビットを有する)を直接的に累算する。2つの累算器による2つの累算結果は加算され、MAC演算結果が出力される。例えば、限定されないが、(1)乗算結果GM1に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「1」(1つのビット)であり、(2)乗算結果GM2に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「0」(1つのビット)であり、(3)乗算結果GM3に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「1」(1つのビット)である。第1累算器による累算結果は、重み付けの後に、2(=1+0+1)×2=8になる。乗算結果GLは4(3つのビットを有する)である。MAC演算結果は、8+4=12である。
上記のことから、本願の1つの実施形態では、計数又は累算において、入力データはunFDPフォーマットになっており、CDLに格納されるデータはMSBベクトル及びLSBベクトルにグルーピングされる。グルーピング(多数決)関数によって、MSBベクトル及びLSBベクトルに含まれるエラービットが低減する。
さらに、本願の1つの実施形態では、従来型の累算器(従来型のカウンタ)を用いても、計数及び累算の時間コストが削減される。これは、デジタル計数コマンド(エラービット計数)が本願の1つの実施形態に適用され、異なるベクトル(MSBベクトル及びLSBベクトル)に異なる累算重みが割り当てられるからである。1つの実行可能な例では、累算演算の時間コストが約40%に削減される。
図6は、本願の1つの実施形態におけるMAC演算フローを示している。図6において、DMACとは第1デジタル累算(多数決演算は行われない、すなわちメモリデバイス100はグルーピング回路140を含まない)を指し、mDMACとは第2デジタル累算(多数決演算が行われる、すなわちメモリデバイス100はグルーピング回路140を含む)を指し、AMACとはアナログ累算を指し、HMACとはハイブリッド累算を指す。
本願の1つの実施形態における第1デジタル累算のMAC演算フローでは、入力データがメモリデバイスに送信される。ビット線の設定とワード線の設定とが同時に行われる。ビット線を設定した後に、センシングが行われる。次に、デジタル累算が行われる。デジタル累算の結果が返される。上記の各段階は、全ての入力データが処理されるまで繰り返される。
本願の1つの実施形態における第2デジタル累算のMAC演算フローでは、多数決演算がさらに、デジタル累算速度を加速させ得る。
本願の1つの実施形態におけるアナログ累算のMAC演算フローでは、データセンシング期間にADC変換と比較演算とが完了し、これによってさらに、アナログ累算速度が加速され得る。
本願の1つの実施形態におけるハイブリッド累算のMAC演算フローでは、アナログ累算及びデジタル累算の両方が実行されるので、ハイブリッド累算の演算速度はアナログ累算より遅いが、デジタル累算より速い。しかしながら、ハイブリッド累算の精度はデジタル累算とほぼ等しいが、アナログ累算より高い。
図6を見ると、本願の実施形態におけるMAC演算には2種類の副演算がある。1つ目の副演算は入力データを重みと掛け合わせる乗算であり、この乗算は、選択したビット線読み出しコマンドに基づいている。2つ目の副演算は累算(データ計数)、特にフェイルビット計数である。本願の他の実行可能な実施形態では、計数又は累算演算を加速するために、より多くの計数ユニットが用いられてもよい。
デジタル累算の演算期間は、計数ユニット150がビット単位の累算を行うので、主に計数ユニット150の累算速度に依存する。ADC161の量子化精度は、主にメモリセルのばらつき公差に依存する。したがって、デジタル累算は、アナログ累算と比較すると精度は高いが累算速度は遅い。
さらに、本願の1つの実施形態では、読み出し電圧も調整される。図7Aは、本願の1つの実施形態における固定メモリページのプログラミングを示している。図7Bは、本願の1つの実施形態における読み出し電圧調整のフローチャートを示している。
図7Aに示すように、段階710では、既知の入力データが固定メモリページにプログラミングされる。ここで、既知の入力データのビットレートが、ビット「0」の75%であり、ビット「1」の25%である。
図7Bに示すように、段階720では、固定メモリページが読み出され、ADCが有効になる。段階730では、ADCからの出力値(すなわち、第1のMAC演算結果OUT1)が基準テスト値(例えば、限定されないが、ADCが8ビットADCの場合、基準テスト値は127である)に近いかどうかが判定される。段階730の判定が「いいえ」である場合、本フローは段階740へ進む。段階730の判定が「はい」である場合、本フローは段階750へ進む。
段階740では、ADCからの出力値が基準テスト値より小さい場合、読み出し電圧を増やし、ADCからの出力値が基準テスト値より大きい場合、読み出し電圧を減らす。段階740の後に、本フローは段階720に戻る。
段階750では、現在の読み出し電圧が、次の読み出し操作のために記録される。
読み出し電圧は、ADCからの出力値とビット1の読み出しとに影響を与えることがある。本願の1つの実施形態では、動作条件(例えば、限定されないが、プログラミングサイクル、温度、又は読み出しディスターブ)に基づいて、読み出し電圧は高い精度及び高い信頼性を保つために周期的に較正されてよい。
図8は、本願の1つの実施形態によるMAC演算フローを示している。段階810では、メモリデバイスのメモリアレイの複数のメモリセルに複数の重みが格納される。段階820では、複数の入力データ及び重みに対してビット単位の乗算が行われ、複数の乗算結果が生成される。ビット単位の乗算では、これらのメモリセルが複数のメモリセル電流を生成する。段階830では、アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかが決定される。段階840では、アナログ累算を行う際に、メモリセル電流に対してアナログ累算が行われ、第1のMAC演算結果が生成される。段階850では、デジタル累算を行う際に、乗算結果に対してデジタル累算が行われ、第2のMAC演算結果が生成される。段階860では、ハイブリッド累算を行う際に、デジタル累算をトリガするかどうかが第1のMAC演算結果に基づいている。
本願の1つの実施形態が、NAND型フラッシュメモリ、又は記憶保持や温度の変動に敏感なメモリデバイス(例えば、限定されないが、NOR型フラッシュメモリ、相変化メモリ、磁気RAM、又は抵抗変化型RAM)に適用される。
本願の1つの実施形態が、3D構造メモリデバイス及び2D構造メモリデバイス、例えば、限定されないが、2D/3DのNAND型フラッシュメモリ、2D/3DのNOR型フラッシュメモリ、2D/3Dの相変化メモリ、2D/3Dの磁気RAM、又は2D/3Dの抵抗変化型RAMに適用される。
本願のこの実施形態では、入力データ及び/又は重みがMSBベクトル及びLSBベクトル(すなわち、2つのベクトル)に分割されるが、本願はこれに限定されない。本願の他の実行可能な実施形態では、入力データ及び/又は重みがより多くのベクトルに分割されるが、それでも、本願の趣旨及び範囲に含まれる。
本願の実施形態は、多数決グルーピング方式だけでなく、累算を加速する他のグルーピング方式にも適用される。
本願の実施形態は、AI方式(例えば限定されないが、顔識別)である。
本願の1つの実施形態では、ADC161は、電流モードADC、電圧モードADC、又はハイブリッドモードADCにより実装されてもよい。
本願の1つの実施形態が、シリアルMAC演算又はパラレルMAC演算に適用されてもよい。
開示された実施形態に対して様々な修正及び変形を施せることが、当業者には明らかであろう。本明細書及び各実施例は例示的としかみなされず、本開示の真の範囲は、以下の特許請求の範囲及びそれらの均等物によって示されることが意図されている。

Claims (16)

  1. 複数の重みを格納する複数のメモリセルを含むメモリアレイであって、前記複数のメモリセルは、複数のメモリセル電流を生成する、メモリアレイと、
    前記メモリアレイに結合され、複数の入力データ及び前記複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する乗算回路と
    前記乗算回路に結合され、前記複数の乗算結果に対してデジタル累算を行うデジタル累算回路と、
    前記メモリアレイに結合され、第2のMAC演算結果を生成するために前記複数のメモリセル電流に対してアナログ累算を行って第1のMAC演算結果を生成するアナログ累算回路と、
    前記デジタル累算回路及び前記アナログ累算回路に結合され、前記アナログ累算を行うのか、前記デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する決定ユニットと
    を含むメモリデバイスであって、
    前記ハイブリッド累算を行う際に、前記デジタル累算回路をトリガするかどうかが前記第1のMAC演算結果に基づいており
    前記決定ユニットが前記アナログ累算を行うことを決定する場合、前記第1のMAC演算結果は、MAC演算結果として使用され、
    前記決定ユニットが前記デジタル累算を行うことを決定する場合、前記第2のMAC演算結果は、前記MAC演算結果として使用され、
    前記決定ユニットが前記ハイブリッド累算を行うことを決定する場合、前記第1のMAC演算結果は、前記デジタル累算回路がトリガされる前に、前記MAC演算結果として使用され、前記第2のMAC演算結果は、前記デジタル累算回路がトリガされた後に、前記MAC演算結果として使用される、メモリデバイス。
  2. 前記アナログ累算を行う際に、前記決定ユニットが前記アナログ累算回路を有効にするが、前記デジタル累算回路を無効にし、
    前記デジタル累算を行う際に、前記決定ユニットが前記デジタル累算回路を有効にするが、前記アナログ累算回路を無効にし、
    前記ハイブリッド累算を行う際に、前記決定ユニットが前記アナログ累算回路及び前記デジタル累算回路を両方とも有効にする、請求項1に記載のメモリデバイス。
  3. 前記メモリデバイスがさらに、
    前記アナログ累算回路及び前記デジタル累算回路に結合され、前記第1のMAC演算結果とトリガ基準値とを比較して、前記デジタル累算回路にトリガ信号を出力し、前記デジタル累算を行う前記デジタル累算回路をトリガするコンパレータを含む、請求項1又は2に記載のメモリデバイス。
  4. 前記アナログ累算回路が前記メモリアレイに結合されたアナログデジタル変換器を含み、前記複数のメモリセルからの前記複数のメモリセル電流が、足し合わされ、前記アナログデジタル変換器に入力されて、前記第1のMAC演算結果に変換される、請求項1から3のいずれか一項に記載のメモリデバイス。
  5. 前記デジタル累算回路が、計数ユニットを含み、前記計数ユニットは、前記乗算回路に結合され、前記複数の乗算結果に対してビット単位の計数を行い、前記第2のMAC演算結果を生成する、請求項1から4のいずれか一項に記載のメモリデバイス。
  6. 前記メモリデバイスがさらに、
    前記乗算回路及び前記計数ユニットに結合され、前記乗算回路からの前記複数の乗算結果に対してグルーピング演算を行い、複数のグルーピング結果を生成し、前記複数のグルーピング結果を前記計数ユニットに送るグルーピング回路を含前記グルーピング演算は、多数決関数方式の演算である、請求項5に記載のメモリデバイス。
  7. 前記複数の入力データのそれぞれ又は前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
    前記複数のビットベクトルの各ビットが2進フォーマットから単進符号に変換され、
    前記単進符号で表された前記複数のビットベクトルの前記各ビットが、複数回複製されてunFDP(展開ドット積)フォーマットになり、
    前記乗算回路が、前記unFDPフォーマットで表された前記複数の入力データ及び前記複数の重みに対して乗算演算を行って前記複数の乗算結果を生成する、請求項1から6のいずれか一項に記載のメモリデバイス。
  8. 前記複数の乗算結果に対してグルーピング演算を行う際に、前記複数の乗算結果に対してそれぞれグルーピング演算を行って複数のグルーピング結果を生成するグルーピング回路を含む、請求項7に記載のメモリデバイス。
  9. ビット単位の計数を行う際に、前記複数の乗算結果に対してそれぞれグルーピング演算を行うことにより生成された複数のグルーピング結果にそれぞれ異なる累算重みが割り当てられて、第2のMAC演算結果が生成される、請求項7に記載のメモリデバイス。
  10. 前記グルーピング回路が、複数の多数決ユニットを含む多数決回路である、請求項6に記載のメモリデバイス。
  11. メモリデバイスの動作方法であって、前記動作方法は、
    前記メモリデバイスのメモリアレイの複数のメモリセルに複数の重みを格納する段階であって、前記複数のメモリセルは、複数のメモリセル電流を生成する、格納する段階と、
    複数の入力データ及び前記複数の重みに対してビット単位の乗算を行って複数の乗算結果を生成する段階と
    アナログ累算を行うのか、デジタル累算を行うのか、ハイブリッド累算を行うのかを決定する段階であって、
    前記アナログ累算を行う際には、前記複数のメモリセル電流に対して前記アナログ累算を行って、MAC演算結果として第1のMAC演算結果を生成し
    前記デジタル累算を行う際には、前記複数の乗算結果に対して前記デジタル累算を行って、前記MAC演算結果として第2のMAC演算結果を生成し、
    前記ハイブリッド累算を行う際には、前記デジタル累算をトリガするかどうかを前記第1のMAC演算結果に基づいて決定
    前記第1のMAC演算結果は、前記デジタル累算がトリガされる前に、前記MAC演算結果として使用され、前記第2のMAC演算結果は、前記デジタル累算がトリガされた後に、前記MAC演算結果として使用される、
    決定する段階と
    を含むメモリデバイスの動作方法。
  12. 前記動作方法がさらに、
    前記複数のメモリセルからの前記複数のメモリセル電流を足し合わせ、アナログデジタル変換を行って前記第1のMAC演算結果にする段階を含む、請求項11に記載のメモリデバイスの動作方法。
  13. 前記第1のMAC演算結果がトリガ基準値と比較され、前記デジタル累算をトリガするかどうかが決定される、請求項11又は12に記載のメモリデバイスの動作方法。
  14. 前記複数の入力データのそれぞれ又は前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
    前記複数のビットベクトルの各ビットが2進フォーマットから単進符号に変換され、
    前記単進符号で表された前記複数のビットベクトルの前記各ビットが、複数回複製されてunFDP(展開ドット積)フォーマットになり、
    前記unFDPフォーマットで表された前記複数の入力データ及び前記複数の重みに対して複数の乗算演算が行われ、前記複数の乗算結果が生成される、請求項11から13のいずれか一項に記載のメモリデバイスの動作方法。
  15. ビット単位の計数を行う際に、前記複数の乗算結果に対してそれぞれグルーピング演算を行うことにより生成された複数のグルーピング結果にそれぞれ異なる累算重みが割り当てられて、前記第2のMAC演算結果が生成される、請求項14に記載のメモリデバイスの動作方法。
  16. 前記複数の乗算結果に対してグルーピング演算を行う段階が、前記複数の乗算結果に対して多数決演算を行うことで実現され、前記グルーピング演算は、多数決関数方式の演算である、請求項14又は15に記載のメモリデバイスの動作方法。
JP2021138238A 2020-09-08 2021-08-26 メモリデバイス及びその動作方法 Active JP7255068B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063075311P 2020-09-08 2020-09-08
US63/075,311 2020-09-08
US17/375,024 2021-07-14
US17/375,024 US12106070B2 (en) 2020-09-08 2021-07-14 Memory device and operation method thereof

Publications (2)

Publication Number Publication Date
JP2022045335A JP2022045335A (ja) 2022-03-18
JP7255068B2 true JP7255068B2 (ja) 2023-04-11

Family

ID=80461938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021138238A Active JP7255068B2 (ja) 2020-09-08 2021-08-26 メモリデバイス及びその動作方法

Country Status (4)

Country Link
US (1) US12106070B2 (ja)
JP (1) JP7255068B2 (ja)
KR (1) KR102603799B1 (ja)
CN (1) CN114153421A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115935878B (zh) * 2023-01-06 2023-05-05 上海后摩智能科技有限公司 基于模拟信号的多比特数据计算电路、芯片及计算装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019139300A (ja) 2018-02-06 2019-08-22 国立大学法人北海道大学 ニューラル電子回路
US20200034686A1 (en) 2018-07-24 2020-01-30 Sandisk Technologies Llc Differential non-volatile memory cell for artificial neural network
WO2020046495A1 (en) 2018-08-27 2020-03-05 Silicon Storage Technology, Inc. Temperature and leakage compensation for memory cells in an analog neural memory system used in a deep learning neural network

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781702A (en) 1995-06-07 1998-07-14 Univ South Western Hybrid chip-set architecture for artificial neural network system
US6803989B2 (en) 1997-07-15 2004-10-12 Silverbrook Research Pty Ltd Image printing apparatus including a microcontroller
US8064269B2 (en) * 2008-05-02 2011-11-22 Micron Technology, Inc. Apparatus and methods having majority bit detection
US9892782B1 (en) * 2011-05-25 2018-02-13 Terra Prime Technologies, Llc Digital to analog converters and memory devices and related methods
US9830999B2 (en) * 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US10410724B2 (en) * 2016-04-08 2019-09-10 SK Hynix Inc. Erase page indicator
WO2018194952A1 (en) * 2017-04-17 2018-10-25 Octavo Systems Llc Mixed signal computer architecture
WO2019246064A1 (en) * 2018-06-18 2019-12-26 The Trustees Of Princeton University Configurable in-memory computing engine, platform, bit cells and layouts therefore
US10877752B2 (en) * 2018-09-28 2020-12-29 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory
KR102658831B1 (ko) * 2018-12-31 2024-04-18 삼성전자주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치를 이용한 계산 방법
US11474785B2 (en) * 2019-02-08 2022-10-18 Samsung Electronics Co., Ltd. Memory device and computing device using the same
CN111614353A (zh) * 2019-02-26 2020-09-01 北京知存科技有限公司 一种存算一体芯片中数模转换电路与模数转换电路复用装置
US10741247B1 (en) * 2019-06-21 2020-08-11 Macronix International Co., Ltd. 3D memory array device and method for multiply-accumulate
CN112151095A (zh) 2019-06-26 2020-12-29 北京知存科技有限公司 存算一体芯片、存储单元阵列结构
US11561795B2 (en) * 2020-03-30 2023-01-24 Arm Limited Accumulating data values and storing in first and second storage devices
US20240135118A1 (en) * 2021-02-19 2024-04-25 University Of Central Florida Research Foundation, Inc. Hybrid analog and digital computational system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019139300A (ja) 2018-02-06 2019-08-22 国立大学法人北海道大学 ニューラル電子回路
US20200034686A1 (en) 2018-07-24 2020-01-30 Sandisk Technologies Llc Differential non-volatile memory cell for artificial neural network
WO2020046495A1 (en) 2018-08-27 2020-03-05 Silicon Storage Technology, Inc. Temperature and leakage compensation for memory cells in an analog neural memory system used in a deep learning neural network
JP2021536623A (ja) 2018-08-27 2021-12-27 シリコン ストーリッジ テクノロージー インコーポレイテッドSilicon Storage Technology, Inc. 深層学習ニューラルネットワークで使用されるアナログニューラルメモリシステムのメモリセルに対する温度補償及び漏れ補償

Also Published As

Publication number Publication date
US20220075600A1 (en) 2022-03-10
KR102603799B1 (ko) 2023-11-17
CN114153421A (zh) 2022-03-08
US12106070B2 (en) 2024-10-01
KR20220033021A (ko) 2022-03-15
JP2022045335A (ja) 2022-03-18

Similar Documents

Publication Publication Date Title
CN111722830A (zh) 快闪存储器的非易失性计算方法
JP7255068B2 (ja) メモリデバイス及びその動作方法
US20230005529A1 (en) Neuromorphic device and electronic device including the same
CN110889080B (zh) 乘积累加运算装置、乘积累加运算方法和系统
TWI771835B (zh) 用於神經網路之推理引擎及其操作方法
JP7279293B2 (ja) メモリデバイスおよびその動作方法
JP7206531B2 (ja) メモリデバイスおよびその動作方法
CN114168107B (zh) 一种存内精度可调的矢量矩阵乘法运算方法及运算器
CN113268133B (zh) 内存内运算器及其运算方法
TWI783573B (zh) 記憶體裝置及其操作方法
CN114153420A (zh) 存储器内运算方法及装置
Sabri et al. Redy: A novel reram-centric dynamic quantization approach for energy-efficient cnn inference
TWI777645B (zh) 記憶體裝置及其操作方法
TWI806641B (zh) 記憶體裝置及其操作方法
CN111126580B (zh) 采用Booth编码的多精度权重系数神经网络加速芯片运算装置
US20230161556A1 (en) Memory device and operation method thereof
CN113343585B (zh) 一种用于矩阵乘法运算的权位分立存算阵列设计方法
Cheng et al. A Low-Power High-Throughput In-Memory CMOS-ReRAM Accelerator for Large-Scale Deep Residual Neural Networks
US20220334800A1 (en) Exact stochastic computing multiplication in memory
WO2022029790A1 (en) A flash adc based method and process for in-memory computation
CN116524977A (zh) 存储器系统和存储器阵列的操作方法
CN117519642A (zh) 存储装置及用于内存计算的数据重排方法
CN116594588A (zh) 一种通用的存内矩阵-张量处理器及其操作方法
CN116127257A (zh) 基于1t1r实现矢量乘法运算的电路构架及运算方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210826

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221216

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: 20230228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230309

R150 Certificate of patent or registration of utility model

Ref document number: 7255068

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150