JP7206531B2 - メモリデバイスおよびその動作方法 - Google Patents
メモリデバイスおよびその動作方法 Download PDFInfo
- Publication number
- JP7206531B2 JP7206531B2 JP2022012871A JP2022012871A JP7206531B2 JP 7206531 B2 JP7206531 B2 JP 7206531B2 JP 2022012871 A JP2022012871 A JP 2022012871A JP 2022012871 A JP2022012871 A JP 2022012871A JP 7206531 B2 JP7206531 B2 JP 7206531B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- accumulation
- results
- memory
- multiplication
- 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
Links
- 238000000034 method Methods 0.000 title claims description 14
- 238000009825 accumulation Methods 0.000 claims description 117
- 239000000872 buffer Substances 0.000 claims description 46
- 238000006243 chemical reaction Methods 0.000 claims description 45
- 239000013598 vector Substances 0.000 claims description 39
- 238000001514 detection method Methods 0.000 claims description 15
- 238000011094 buffer selection Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 4
- 230000009466 transformation Effects 0.000 claims 2
- 230000035508 accumulation Effects 0.000 description 81
- 238000013506 data mapping Methods 0.000 description 14
- 101100162020 Mesorhizobium japonicum (strain LMG 29417 / CECT 9101 / MAFF 303099) adc3 gene Proteins 0.000 description 13
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 101100434411 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADH1 gene Proteins 0.000 description 1
- 101150102866 adc1 gene Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Image Input (AREA)
- Electrotherapy Devices (AREA)
Description
本開示は、概してインメモリコンピューティングのメモリデバイスおよびその動作方法に関する。
最近、多くの分野の非常に効果的なソリューションとして、人工知能(「AI」)が台頭している。このAIにおける重要な問題とは、AIが積和(MAC)演算を行うために大量の入力データ(例えば、入力特徴マップ)および重みを取り込むということである。
しかしながら、現在のAI構造は通常、IO(入力/出力)のボトルネックおよび非効率的なMAC演算フローに直面する。
高い精度を実現するためには、マルチビットの入力およびマルチビットの重みを有するMAC演算を行うことになるであろう。しかし、IOのボトルネックは悪化し、効率は低くなる。
インメモリコンピューティング(「IMC」)は、IMCがプロセス中心のアーキテクチャにおける算術論理演算装置(ALU)の複雑さを低減し、メモリ内のMAC演算の大量並列処理を提供できるので、MAC演算を加速させることができる。
IMCを実行する際に、演算速度が向上するならば、IMC性能も向上することになる。
1つの実施形態によれば、メモリデバイスが提供され、本メモリデバイスは、入力データを格納する複数のページバッファと、これらのページバッファに結合された複数のメモリプレーンであって、メモリプレーンの受信済みアドレスに基づいて、複数の重みがメモリプレーンに格納され、メモリプレーンは複数の重みとページバッファに含まれる入力データとに対してビット乗算を並列に行い、複数のビット乗算結果を並列に生成し、ビット乗算結果はページバッファに戻されて格納される、複数のページバッファと、これらのページバッファに結合された少なくとも1つの累算回路であって、メモリプレーンのビット乗算結果に対してビット累算を並列にまたは順番に行って積和(MAC)演算結果を生成するための少なくとも1つの累算回路とを含む。
別の実施形態によれば、メモリデバイスの動作方法が提供される。この動作方法は、入力データを複数のページバッファに格納する段階と、複数のメモリプレーンの受信済みアドレスに基づいて、複数のメモリプレーンに格納された複数の重みと、入力データとに対して、メモリプレーンがビット乗算を並列に行って複数のビット乗算結果を並列に生成する段階であって、複数のビット乗算結果はページバッファに戻されて格納される、生成する段階と、メモリプレーンの複数のビット乗算結果に対してビット累算を並列にまたは順番に行って積和(MAC)演算結果を生成する段階とを含む。
以下の詳細な説明では、説明を目的として、開示される実施形態の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、こうした具体的な詳細がなくても、1つまたは複数の実施形態が実施され得ることは明らかであろう。他の例では、図面を簡略にするために、よく知られている構造およびデバイスが概略的に示されている。
本開示の専門用語は、本開示の技術分野における一般的定義に基づいている。本開示で1つまたはいくつかの用語が記載されるか説明される場合、その用語の定義は本開示の記載または説明に基づいている。開示される実施形態のそれぞれは、1つまたは複数の技術的特徴を持っている。実行可能な実装において、当業者であれば、本開示の任意の実施形態の一部または全部の技術的特徴を選択的に実装するか、あるいは本開示の実施形態の一部または全部の技術的特徴を選択的に組み合わせるであろう。
[第1実施形態]
図1は、本願の第1実施形態によるIMC(In-Memory-Computing:インメモリコンピューティング)メモリデバイス100の機能ブロック図を示している。メモリデバイス100は、複数のメモリプレーンと、複数のページバッファと、複数の変換部と、1つの累算検出回路120と、1つの出力ラッチ130と、1つの累算回路140とを含む。変換部は例えば、限定されないが、アナログデジタル変換器(ADC)である。
簡略化するために、図1では、メモリデバイス100は4つのメモリプレーンMP0~MP3と、4つのページバッファPB0~PB3と、4つの変換部ADC0~ADC3と、1つの累算検出回路120と、1つの出力ラッチ130と、1つの累算回路140とを含む。しかし、本願はこれによって限定されない。
ページバッファPB0~PB3は、入力データINを格納し、この入力データINをメモリプレーンMP0~MP3に送出してよい。メモリプレーンMP0~MP3により生成された複数のビット乗算結果BM0~BM3が、ページバッファPB0~PB3に戻されて格納される。さらに、出力ラッチ130は、ページバッファ選択信号PB_SELにより制御されて、対応するページバッファPB0~PB3に格納された、累算回路140へのビット乗算結果BM0~BM3を選択する。
メモリプレーンMP0~MP3は、ページバッファPB0~PB3に結合される。メモリプレーンMP0~MP3は、メモリプレーンMP0~MP3に格納された重みに対して、ページバッファPB0~PB3からの入力データINとのビット乗算演算(例えば、ビットAND演算)を並列に行い、ビット乗算結果BM0~BM3を並列に生成する。ビット乗算結果BM0~BM3は、ページバッファPB0~PB3に戻されて格納される。さらに、メモリプレーンMP0~MP3の1つまたは複数のメモリセルストリングを選択して、センシング動作を有効にする。メモリプレーンMP0~MP3に格納された重みと、ページバッファPB0~PB3からの入力データINとがビット乗算されると、メモリプレーンMP0~MP3の複数のメモリセルが複数のメモリセル電流IMC0~IMC3を生成し、これらのメモリセル電流IMC0~IMC3は通常、変換部ADC0~ADC3に入力される。
変換部ADC0~ADC3は、メモリプレーンMP0~MP3に結合される。メモリプレーンMP0~MP3のメモリセル電流IMC0~IMC3はそれぞれ、変換部ADC0~ADC3に入力される。変換部ADC0~ADC3は、メモリプレーンMP0~MP3のメモリセル電流IMC0~IMC3を変換して、複数の変換結果AMACO0~AMACO3にする。
累算検出回路120は、変換部ADC0~ADC3に結合される。累算検出回路120は、変換部ADC0~ADC3の変換結果AMACO0~AMACO3をそれぞれ閾値と比較して、出力ラッチ130へのページバッファ選択信号PB_SELを生成し、且つ累算回路140への累算イネーブル信号ACC_ENを生成する。変換結果AMACO0~AMACO3が閾値より高い場合、出力ラッチ130は、ページバッファ選択信号PB_SELに応答して、対応するページバッファPB0~PB3に格納された、累算回路140への対応するビット乗算結果BM0~BM3を選択する。
変換結果AMACO0~AMACO3の中の少なくとも1つが閾値より高い場合、累算イネーブル信号ACC_ENは有効状態になり、そうでなければ、この累算イネーブル信号ACC_ENは無効状態になる。
出力ラッチ130は、累算検出回路120およびページバッファPB0~PB3に結合される。出力ラッチ130は、ページバッファ選択信号PB_SELに応答して、対応するページバッファPB0~PB3に格納された、累算回路140への対応するビット乗算結果BM0~BM3を選択する。例えば、限定されないが、変換部ADC0およびADC1からの変換結果AMACO0およびAMACO1が閾値より高い場合、出力ラッチ130は、ページバッファ選択信号PB_SELに応答して、対応するページバッファPB0~PB1に格納された、累算回路140への対応するビット乗算結果BM0~BM1を選択する。
累算回路140は、出力ラッチ130および累算検出回路120に結合される。累算回路140は、累算イネーブル信号ACC_ENによって有効になると、出力ラッチ130からのビット乗算結果BM0~BM3に対してビット累算演算を行ってMAC演算結果OUTを生成する。この詳細については、後述する。
図2は、本願の第1実施形態によるメモリプレーンおよび累算回路の機能ブロック図を示している。図2のメモリプレーンMPは、図1のメモリプレーンMP0~MP3を実装するのに用いられてよい。図2に示すように、メモリプレーンMPは、メモリブロック210と乗算回路220とを含む。累算回路140は、グルーピング回路240と計数部250とを含む。乗算回路220はアナログ方式であるが、累算回路140、グルーピング回路240、および計数部250はデジタル方式である。
メモリブロック210は、複数のメモリセル211を含む。本願の1つの実施形態において、メモリセル211は例えば、限定されないが、不揮発性メモリセルである。MAC演算において、メモリセル211は重みを格納するのに用いられる。
乗算回路220は、メモリブロック210に結合される。乗算回路220は、複数の単ビット乗算部221を含む。これらの単ビット乗算部221のそれぞれは、入力ラッチ221A、センスアンプ(SA)221B、出力ラッチ221C、および共通データラッチ(CDL)221Dを含む。入力ラッチ221Aは、メモリブロック210に結合される。センスアンプ221Bは、入力ラッチ221Aに結合される。出力ラッチ221Cは、センスアンプ221Bに結合される。共通データラッチ221Dは、出力ラッチ221Cに結合される。乗算回路220からのビット乗算結果BMは、ページバッファPBに戻されて格納される。
メモリセル211に格納された重みが論理レベル1であり、対応する入力データINも論理レベル1である場合、メモリセル211はセル電流を生成する。メモリセル211からのセル電流が積算されて、メモリセル電流IMCになる。
本願の第1実施形態では、「デジタル累算」とは、累算回路140は有効であるが、変換部ADC0~ADC3は有効ではないことを指している。「ハイブリッド累算」とは、累算回路140および変換部ADC0~ADC3が有効であることを指している。すなわち、本願の第1実施形態において、変換部ADC0~ADC3は任意選択的に作動する。
本願の1つの実施形態では、変換部の作動は、無用なデータを迅速に選別してMAC演算速度を高めるのに用いられてよく、累算回路140は、未選別データを累算してMAC演算精度を高めることができる。ハイブリッド累算は、低解像度の量子化を用いることによる変動の影響を排除し、無用なデータの累算を防ぎ、解像度を維持することができる。
グルーピング回路240は、出力ラッチ130に結合される。グルーピング回路240は、複数のグルーピング部241を含む。グルーピング部241は、ビット乗算結果BM0~BM3に対してグルーピング演算を行って、複数のグルーピング結果を生成する。本願の1つの実行可能な実施形態において、このグルーピング方式は多数決方式(例えば、多数決関数方式)で実施されてよく、グルーピング回路240は、多数決関数方式に基づく多数決グルーピング回路により実装されてよく、グルーピング部241は、分散型多数決グルーピング部により実装されてよいが、これらによって、本願を限定することは意図されていない。グルーピング方式は、他の同様な方式で実施されてもよい。
計数部250は、グルーピング回路240に結合される。本願の1つの実施形態において、計数部250は、グルーピング回路240からのグルーピング結果(すなわち、多数決結果)に対してビット単位の計数またはビット単位の累算を行い、MAC演算結果OUTを生成するためのものである。本願の1つの実施形態において、計数部250は、既知の計数回路(例えば、限定されないが、リップルカウンタ)によって実装される。本願において、用語「計数」および「累算」は置き換え可能であり、計数器および累算器は実質的に同じ意味である。
本願の第1実施形態では、図1および図2の回路構造により、各メモリプレーンからの電流は個々に量子化されてよい。さらに、累算回路140は複数のメモリプレーンにより共有されてよく、これにより、回路面積がさらに縮小され得る。
ここで、本願の1つの実施形態によるデータマッピングを示す図3を参照する。図3に示すように、それぞれの入力データおよびそれぞれの重みは、8ビット精度のN次元(Nは正の整数)であるが、本願はこれに限定されない。
入力データのデータマッピングが一例として説明されるが、本願はこれに限定されない。以下の説明は、重みのデータマッピングにも適している。
入力データ(または重み)が2進8ビット形式で表されている場合、入力データ(または重み)は最上位ビット(MSB)ベクトルおよび最下位ビット(LSB)ベクトルを含む。8ビットの入力データ(または重み)のMSBベクトルはビットB7~B4を含み、8ビットの入力データ(または重み)のLSBベクトルはビットB3~B0を含む。
入力データのMSBベクトルおよびLSBベクトルの各ビットは、単進符号(値形式)で表される。例えば、入力データのMSBベクトルのビットB7はB70~B77として表されてよく、入力データのMSBベクトルのビットB6はB60~B63として表されてよく、入力データのMSBベクトルのビットB5はB50~B51として表されてよく、入力データのMSBベクトルのビットB4はB4として表されてよい。
次に、単進符号(値形式)で表される入力データのMSBベクトルの各ビットおよび入力データのLSBベクトルの各ビットをそれぞれ複数回複製して、展開ドット積(unFDP)形式にする。例えば、入力データのMSBベクトルのそれぞれは(24-1)回複製され、同様に、入力データのLSBベクトルのそれぞれも(24-1)回複製される。そうすることで、入力データはunFDP形式で表される。同様に、重みもunFDP形式で表される。
入力データ(unFDP形式)および重み(unFDP形式)に対して乗算演算を行い、複数の乗算結果を生成する。
理解のために、データマッピングの1つの例が説明されるが、本願はこれに限定されない。
ここで、本願の第1実施形態による1次元のデータマッピングに関する1つの実行可能な例を示す図4Aを参照する。図4Aに示すように、入力データは(IN1,IN2)=(2,1)であり、重みは(We1,We2)=(1,2)である。入力データのMSBおよびLSBは2進形式で表されているので、IN1=10であり、IN2=01である。同様に、重みのMSBおよびLSBも2進形式で表されているので、We1=01であり、We2=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(または乗算)演算に用いられるメモリセル総数は、(2i-1)×(2j-1)になる。
ここで、本願の第1実施形態によるデータマッピングに関する別の可能な例を示す図4Bを参照する。図4Bに示すように、入力データは(IN1)=(2)であり、重みは(We1)=(1)である。入力データおよび重みは4ビットである。
入力データは2進形式で表されているので、IN1=0010である。同様に、重みも2進形式で表されているので、We1=0001である。
入力データおよび重みを符号化して、単進符号(値形式)にする。例えば、入力データの最高位ビット「0」を符号化して「00000000」とし、入力データの最低位ビット「0」を符号化して「0」とするといった具合である。同様に、重みの最高位ビット「0」を符号化して「00000000」とし、重みの最低位ビット「1」を符号化して「1」とする。
次に、入力データ(単進符号に符号化済み)の各ビットを、unFDP形式で表されるように複数回複製する。例えば、入力データ(単進符号に符号化済み)の最高位ビット401Aを15回複製してビット403Aとし、入力データ(単進符号に符号化済み)の最低位ビット401Bを15回複製してビット403Bとする。
重み402(単進符号に符号化済み)を15回複製して、unFDP形式で表す。
入力データ(unFDP形式で表されている)および重み(unFDP形式で表されている)に対して乗算演算を行い、MAC演算結果を生成する。詳しくは、入力データのビット403Aを重み402と掛け合わせる、入力データのビット403Bを重み402と掛け合わせるといった具合である。これらの乗算値を加算することで、MAC演算結果(「2」)が生成される。
ここで、本願の第1実施形態によるデータマッピングに関する別の可能な例を示す図4Cを参照する。図4Cに示すように、入力データは(IN1)=(1)であり、重みは(We1)=(5)である。入力データおよび重みは4ビットである。
入力データは2進形式で表されているので、IN1=0001である。同様に、重みも2進形式で表されているので、We1=0101である。
次に、入力データおよび重みを符号化して、単進符号(値形式)にする。
次に、入力データ(単進符号に符号化済み)の各ビットを、unFDP形式で表されるように複数回複製する。図4Cでは、入力データの各ビットおよび重みの各ビットを複製するときに、ビット「0」を追加する。例えば、入力データ(単進符号に符号化済み)の最高位ビット411Aを15回複製し、ビット「0」を追加して、ビット413Aを形成する。また、入力データ(単進符号に符号化済み)の最低位ビット411Bを15回複製し、ビット「0」を追加して、ビット413Bを形成する。そうすることで、入力はunFDP形式で表される。
同様に、重み412(単進符号に符号化済み)を15回複製し、さらにビット「0」を重み414のそれぞれに追加する。そうすることで、重みはunFDP形式で表される。
入力データ(unFDP形式で表されている)および重み(unFDP形式で表されている)に対して乗算演算を行い、MAC演算結果を生成する。詳しくは、入力データのビット413Aを重み414と掛け合わせる、入力データのビット413Bを重み414と掛け合わせるといった具合である。これらの乗算値を加算することで、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および図2を参照する。本願の1つの実施形態では、乗算演算において、重み(相互コンダクタンス)はメモリブロック210のメモリセル211に格納され、入力データ(電圧)はページバッファによって格納され、読み出されて共通データラッチ221Dに送信される。共通データラッチ221Dは、入力データを入力ラッチ221Aに出力する。
本願の1つの実施形態の乗算演算を説明するために、ここで、本願の1つの実施形態の乗算演算に関する1つの例を示す図5を参照する。図5は、選択されたビット線の読み出し機能をメモリデバイスがサポートする場合に用いられる。図5において、入力ラッチ221Aは、ラッチ505とビット線スイッチ510とを含む。
図5に示すように、重みは図3に示すような単進符号(値形式)で表される。こうして、重みの最高位ビットが8つのメモリセル211に格納され、重みの2番目の最高位ビットが4つのメモリセル211に格納され、重みの3番目の最高位ビットが2つのメモリセル211に格納され、重みの最低位ビットが1つのメモリセル211に格納される。
同様に、入力データも(図3に示すような)単進符号(値形式)で表される。こうして、入力データの最高位ビットが8つの共通データラッチ221Dに格納され、入力データの2番目の最高位ビットが4つの共通データラッチ221Dに格納され、入力データの3番目の最高位ビットが2つの共通データラッチ221Dに格納され、入力データの最低位ビットが1つの共通データラッチ121Dに格納される。入力データは、共通データラッチ221Dからラッチ505に送出される。
図5では、複数のビット線スイッチ510が、メモリセル211とセンスアンプ221Bとの間に結合される。ビット線スイッチ510は、ラッチ505の出力によって制御される。例えば、ラッチ505がビット「1」を出力すると、ビット線スイッチ510は導通し、ラッチ505がビット「0」を出力すると、ビット線スイッチ510は切断される。
さらに、メモリセル211に格納された重みがビット1であり、且つビット線スイッチ510が導通している(すなわち、入力データがビット1である)場合、SA221Bはメモリセル電流を検知して乗算結果「1」を生成する。メモリセル211に格納された重みがビット0であり、且つビット線スイッチ510が導通している(すなわち、入力データがビット1である)場合、SA221Bはメモリセル電流を検知しない。メモリセル211に格納された重みがビット1であり、且つビット線スイッチ510が切断されている(すなわち、入力データがビット0である)場合、SA221Bはメモリセル電流を検知しない(その結果、乗算結果「0」を生成する)。メモリセル211に格納された重みがビット0であり、且つビット線スイッチ510が切断されている(すなわち、入力データがビット0である)場合、SA221Bはメモリセル電流を検知しない。
すなわち、図5に示すレイアウトによって、入力データがビット1であり且つ重みがビット1である場合、SA221Bはメモリセル電流を検知する(その結果、乗算結果「1」を生成する)。他の状況では、SA221Bはメモリセル電流を検知しない(その結果、乗算結果「0」を生成する)。SA221Bの乗算結果は、出力ラッチ221Cに送出される。出力ラッチ221Cの出力(ビット乗算結果BMを形成する)は、共通データラッチ221Dを介してページバッファPBに戻されて格納される。
メモリセル211からのメモリセル電流IMCは、積算されて変換部ADC0~ADC3のうちの1つに入力される。
上記の表では、HVTおよびLVTはそれぞれ、高閾値メモリセルおよび低閾値メモリセルを指しており、IHVTおよびILVTは、入力データが論理レベル1の場合に、高閾値メモリセル(重みは0(HVT))および低閾値メモリセル(重みは+1(LVT))により生成されるそれぞれのアナログメモリセル電流IMCを指している。
本願の1つの実施形態では、乗算演算において、選択ビット線読み出し(SBL-read)コマンドは、単ビット表現による変動の影響を低減するのに再利用されてよい。
ここで、本願の1つの実施形態によるグルーピング演算(多数決演算)およびビット単位の計数を示す図6Aを参照する。図6Aに示すように、「GM1」は入力データの1番目のMSBベクトルに重みをビット単位で掛け合わせて得られた第1の乗算結果を指し、「GM2」は入力データの2番目のMSBベクトルに重みをビット単位で掛け合わせて得られた第2の乗算結果を指し、「GM3」は入力データの3番目のMSBベクトルに重みをビット単位で掛け合わせて得られた第3の乗算結果を指し、「GL」は入力データのLSBベクトルに重みをビット単位で掛け合わせて得られた第4の乗算結果を指す。グルーピング演算(多数決演算)の後に、第1の乗算結果「GM1」に対して行われたグルーピング結果が第1のグルーピング結果CB1(その累算重みは22)であり、第2の乗算結果「GM2」に対して行われたグルーピング結果が第2のグルーピング結果CB2(その累算重みは22)であり、第3の乗算結果「GM3」に対して行われたグルーピング結果が第3のグルーピング結果CB3(その累算重みは22)であり、第4の乗算結果「GL」に対する直接計数結果が第4のグルーピング結果CB4(その累算重みは20)である。
図6Bは、図4Cの1つの累算例を示している。図4Cおよび図6Bを参照されたい。図6Bに示すように、入力データ(図4C)のビット413Bを重み414と掛け合わせる。入力データ(図4C)のビット413Bを重み414と掛け合わせて生成された乗算結果の最初の4つのビット(「0000」)が、第1の乗算結果「GM1」としてグルーピングされる。同様に、入力データ(図4C)のビット413Bを重み414と掛け合わせて生成された乗算結果の5番目~8番目のビット(「0000」)が、第2の乗算結果「GM2」としてグルーピングされる。入力データ(図4C)のビット413Bを重み414と掛け合わせて生成された乗算結果の9番目~12番目のビット(「1111」)が、第3の乗算結果「GM3としてグルーピングされる。入力データ(図4C)のビット413Bを重み414と掛け合わせて生成された乗算結果の13番目~16番目のビット(「0010」)が、直接的にカウントされる。
グルーピング演算(多数決演算)の後に、第1のグルーピング結果CB1は「0」(その累算重みは22)であり、第2のグルーピング結果CB2は「0」(その累算重みは22)であり、第3のグルーピング結果CB3は「1」(その累算重みは22)である。計数の際に、それぞれのグルーピング結果CB1~CB4をそれぞれの累算重みと掛け合わせて累算することにより、MAC結果が生成される。例えば、図6Bに示すように、MAC演算結果OUTは、CB1×22+CB2×22+CB3×22+CB4×20=0×22+0×22+1×22+1×20=0000 0000 0000 0000 0000 0000 0000 0101=5である。
上記の表において、ケースAでは、このグループが正しいビットを有する(「1111」はエラービットがないことを意味する)ため、多数決結果は1である。同様に、上記の表において、ケースEでは、このグループが正しいビットを有する(「0000」)はエラービットがないことを意味する)ため、多数決結果は0である。
ケースBでは、このグループがエラービットを1つ有する(「1110」の中でビット「0」はエラーである)ため、多数決関数によって、グループ「1110」は「1」と判定される。ケースDでは、このグループがエラービットを1つ有する(「0001」の中でビット「1」はエラーである)ため、多数決関数によって、グループ「0001」は「0」と判定される。
ケースCでは、このグループがエラービットを2つ有する(「1100」の中でビット「00」または「11」はエラーである)ため、多数決関数によって、グループ「1100」は「1」または「0」と判定される。
こうして、本願の1つの実施形態では、グルーピング(多数決)関数によってエラービットが減少する。
グルーピング回路240からの多数決結果は、ビット単位の計数のために計数部250に入力される。
計数の際に、MSBベクトルの乗算結果についての計数結果と、LSBベクトルの乗算結果についての計数結果とが、加算されるか、または累算される。図6Aに示すように、2つの累算器が用いられる。第1累算器には、大きい累算重み(例えば22)が割り当てられる。第1累算器は、(1)乗算結果GM1に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)と、(2)乗算結果GM2に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)と、(3)乗算結果GM3に対してグルーピング演算(多数決演算)を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)とを累算している。第1累算器による累算結果には、大きい累算重み(例えば、22)が割り当てられる。第2累算器には、小さい累算重み(例えば、20)が割り当てられる。第2累算器は、乗算結果GL(複数のビットを有する)を直接的に累算する。この2つの累算器による2つの累算結果を加算して、MAC演算結果OUTを出力する。例えば、限定されないが、(1)乗算結果GM1に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「1」(1つのビット)である、(2)乗算結果GM2に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「0」(1つのビット)である、(3)乗算結果GM3に対してグルーピング(多数決)演算を行ったことによるグルーピング結果(多数決結果)(1つのビットを有する)が「1」(1つのビット)である。重み付け後の第1累算器による累算結果は、2(=1+0+1)×22=8である。乗算結果GLは4(3つのビットを有する)である。MAC演算結果OUTは、8+4=12である。
上記のことから、本願の1つの実施形態では、計数または累算において、入力データはunFDP形式であり、CDLに格納されたデータはMSBベクトルおよびLSBベクトルにグルーピングされる。グルーピング(多数決)関数によって、MSBベクトルおよびLSBベクトルに含まれるエラービットは減少する。
さらに、本願の1つの実施形態では、従来型の累算器(従来型の計数器)を用いても、計数および累算の時間コストが同様に削減される。これは、本願の1つの実施形態にはデジタル計数コマンド(エラービットの計数)が適用され、異なるベクトル(MSBベクトルおよびLSBベクトル)が異なる累算重みによって割り当てられるためである。1つの実行可能な例において、累算演算の時間コストは約40%に削減される。
図7Aおよび図7Bは、本願の1つの実施形態におけるMAC演算フローを示している。図7Aは、変換部ADC0~ADC3が作動する場合のMAC演算フローを示しており、このMAC演算フローはハイブリッド型MAC演算フローとも呼ばれることがある。図7Bは、変換部ADC0~ADC3が作動しない場合のMAC演算フローを示しており、このMAC演算フローはデジタルMAC演算フローとも呼ばれることがある。変換部ADC0~ADC3が作動しない場合、出力ラッチ130はビット乗算結果BM0~BM3をビット累算のために累算回路140に出力する(すなわち、出力ラッチ130はページバッファ選択信号PB_SELによって制御されることはなく、累算回路140も累算イネーブル信号ACC_ENによって制御されることはない。
図7Aにおいて、期間T11では、入力がブロードキャストされる(すなわち、入力データが受信される)。期間T12では、メモリプレーンの複数のアドレスが受信される。メモリプレーンは、異なるアドレスに基づいて演算を行う。しかしながら、本願の1つの実施形態は、いくつかのメモリプレーンが同じアドレスを用いるという状況を防ぐので、メモリプレーンは異なるアドレスを用いる。期間T13では、メモリプレーンの受信済みアドレスに基づいて、ビット乗算が行われる。期間T14では、ビット乗算結果が出力される(例えば、メモリプレーンから累算回路に出力される)。期間T15では、ビット累算が行われる。異なるメモリプレーンでのビット累算が順番に実行される。例えば、図7Aに示すように、変換結果AMACO0およびAMACO2は閾値より高く、メモリプレーンMP0およびMP2でのビット累算が順番に実行されるのに対して、メモリプレーンMP1およびMP3でのビット累算は実行されない。当然ながら、ビット累算の順序は、図7Aによって限定されるものではない。図7Aでは、メモリプレーンMP2でのビット累算が最初に実行され、それからメモリプレーンMPでのビット累算が後で実行される。こうしたことも本願の趣旨および範囲に含まれる。期間T16では、MAC演算結果が出力され、メモリプレーンの次のアドレスも出力される。
図7Bでは、期間T21~T24およびT26が期間T11~T14およびT16と同じであるか、または類似している。期間T25(ビット累算)では、変換部ADC0~ADC3が作動しないため、ビット累算において、全メモリプレーンでのビット累算が順番に実行される。例えば、図7Bに示すように、メモリプレーンMP0、MP1、MP2、およびMP3でのビット累算が順番に実行される。当然ながら、ビット累算の順序は図7Bによって限定されるものではなく、ビット累算の他の実行順序も可能であり、こうしたことも本願の趣旨および範囲に含まれる。
図7Aおよび図7Bに示すように、本願の第1実施形態では、異なるメモリプレーンでのビット乗算演算が並列に行われるのに対して、異なるメモリプレーンでのビット累算演算が順番に行われる。こうして、本願の第1実施形態では、スケジューリングが集中制御されるので、回路面積および消費電力が削減される。
図7Aおよび図7Bから、本願のこの実施形態におけるMAC演算には2種類の副演算がある。1つ目の副演算は、入力データを重みと掛け合わせる乗算であり、これは選択ビット線読み出しコマンドに基づいている。2つ目の副演算は、累算(データ計数)、特にフェイルビット計数である。本願の他の実行可能な実施形態では、より多くの計数部を用いて計数または累算演算を加速させてもよい。
[第2実施形態]
図8は、本願の第2実施形態によるIMC(In-Memory-Computing:インメモリコンピューティング)メモリデバイス800の機能ブロック図を示している。メモリデバイス800は、複数のメモリプレーンと、複数のページバッファと、複数の変換部と、複数の累算検出回路と、1つの出力ラッチ830と、複数の累算回路とを含む。変換部は例えば、限定されないが、アナログデジタル変換器(ADC)である。
簡略化するために、図8では、メモリデバイス800は4つのメモリプレーンMP0~MP3と、4つのページバッファPB0~PB3と、4つの変換部ADC0~ADC3と、4つの累算検出回路820-0~820-3と、1つの出力ラッチ830と、4つの累算回路840-0~840-3とを含む。しかし、本願はこれによって限定されない。
ページバッファPB0~PB3は、入力データINを格納し、この入力データINをメモリプレーンMP0~MP3に送出してよい。メモリプレーンMP0~MP3により生成された複数のビット乗算結果BM0~BM3が、ページバッファPB0~PB3に戻って、累算回路840-0~840-3に送出するために格納される。
メモリプレーンMP0~MP3は、ページバッファPB0~PB3に結合される。メモリプレーンMP0~MP3は、メモリプレーンMP0~MP3に格納された重みに対してページバッファPB0~PB3からの入力データINとのビット乗算演算(例えば、ビットAND演算)を並列に行い、ビット乗算結果BM0~BM3を並列に生成する。ビット乗算結果BM0~BM3は、ページバッファPB0~PB3に戻されて格納される。さらに、メモリプレーンMP0~MP3の1つまたは複数のメモリセルストリングを選択して、センシング動作を有効にする。メモリプレーンMP0~MP3に格納された重みと、ページバッファPB0~PB3からの入力データINとがビット乗算されると、メモリプレーンMP0~MP3の複数のメモリセルが複数のメモリセル電流IMC0~IMC3を生成し、これらのメモリセル電流IMC0~IMC3は通常、変換部ADC0~ADC3に入力される。
変換部ADC0~ADC3は、メモリプレーンMP0~MP3に結合される。メモリプレーンMP0~MP3のメモリセル電流IMC0~IMC3はそれぞれ、変換部ADC0~ADC3に入力される。変換部ADC0~ADC3は、メモリプレーンMP0~MP3のメモリセル電流IMC0~IMC3を変換して、複数の変換結果AMACO0~AMACO3にする。
累算検出回路820-0~820-3は、変換部ADC0~ADC3に結合される。累算検出回路820-0~820-3は、変換部ADC0~ADC3の変換結果AMACO0~AMACO3と閾値とを比較して、累算回路840-0~840-3への複数の累算イネーブル信号ACC_EN0~ACC_EN3を生成する。変換結果AMACO0~AMACO3が閾値より高い場合、対応する累算イネーブル信号ACC_EN0~ACC_EN3は有効状態になり、そうでなければ、これらの累算イネーブル信号ACC_EN0~ACC_EN3は無効状態になる。
累算回路840-0~840-3は、累算検出回路820-0~820-3に結合される。累算回路840-0~840-3は、累算イネーブル信号ACC_EN0~ACC_EN3によって有効になると、メモリプレーンMP0~MP3からのビット乗算結果BM0~BM3に対してビット累算演算を行って、複数のデジタル累算結果DMACO0~DMACO3を生成する。
出力ラッチ830は、累算回路840-0~840-3に結合される。出力ラッチ830は、累算回路840-0~840-3からのデジタル累算結果DMACO0~DMACO3をMAC演算結果OUTに出力する。
累算回路840-0~840-3は、図2の累算回路140と同じまたは類似した回路構造および演算を有してよいので、詳細については省略する。同様に、図2のメモリプレーンMPは、図8のメモリプレーンMP0~MP3を実装するのに用いられてよい。
本願の第2実施形態において、各メモリプレーンのセル電流は個々に量子化される。
第2実施形態のデータマッピングは、第1実施形態のデータマッピングと同じでも、類似していてもよいので、詳細については省略する。
図9Aおよび図9Bは、本願の第2実施形態におけるMAC演算フローを示している。図9Aは、変換部ADC0~ADC3が作動する場合のMAC演算フローを示しており、このMAC演算フローはハイブリッド型MAC演算フローとも呼ばれることがある。図9Bは、変換部ADC0~ADC3が作動しない場合のMAC演算フローを示しており、このMAC演算フローはデジタルMAC演算フローとも呼ばれることがある。変換部ADC0~ADC3が作動しない場合、累算回路840-0~840-3は、ビット乗算結果BM0~BM3に対してビット累算を行う(すなわち、累算回路840-0~840-3は累算イネーブル信号ACC_EN0~ACC_EN3によって制御されない)。
図9Aでは、期間T31~T34およびT36が期間T11~T14およびT16と同じであるか、または類似している。期間T35では、ビット累算が行われる。ビット累算では、異なるメモリプレーンでのビット累算が並列に実行される。例えば、図9Aに示すように、変換結果AMACO0およびAMACO2は閾値より高く、メモリプレーンMP0およびMP2でのビット累算が並列に実行されるのに対して、メモリプレーンMP1およびMP3でのビット累算は実行されない。
図9Bでは、期間T41~T44およびT46が期間T11~T14およびT16と同じであるか、または類似している。期間T45では、変換部ADC0~ADC3が作動しないため、ビット累算において、全メモリプレーンでのビット累算が並列に実行される。
図9Aおよび図9Bに示すように、本願の第2実施形態では、異なるメモリプレーンでのビット乗算演算が並列に行われるのに対して、異なるメモリプレーンでのビット累算演算が並列に行われる。こうして、本願の第2実施形態では、スケジューリングが分散制御されることにより、MAC演算が高速化される。
図3、図4A~図4C、図5、および図6A~図6Bも、本願の第2実施形態に適用可能である。
[第3実施形態]
図10は、本願の第3実施形態によるメモリデバイスの動作方法を示している。本願の第3実施形態によるメモリデバイスの動作方法は、入力データを複数のページバッファに格納する段階(1010)と、複数のメモリプレーンの受信済みアドレスに基づいて、複数のメモリプレーンに格納された複数の重みと、入力データとに対して、メモリプレーンがビット乗算を並列に行って複数のビット乗算結果を並列に生成する段階であって、複数のビット乗算結果はページバッファに戻されて格納される、生成する段階(1020)と、メモリプレーンの複数のビット乗算結果に対してビット累算を並列にまたは順番に行って積和(MAC)演算結果を生成する段階であって、MAC演算結果が出力され、メモリプレーンの次のアドレスも出力される、生成する段階(1030)とを含む。段階1010~1030の詳細については、上述した通りなので省略する。
読み出し電圧は、ADCからの出力値とビット1の読み出しとに影響を与えることがある。本願の第1実施形態~第3実施形態では、動作条件(例えば、限定されないが、プログラミングサイクル、温度、または読み出しディスターブ)に基づいて、読み出し電圧が周期的に較正され、高い精度と高い信頼性とを保つことができる。
本願の第1実施形態~第3実施形態は、NAND型フラッシュメモリ、または記憶保持や熱変動に敏感なメモリデバイス、例えば、限定されないが、NOR型フラッシュメモリ、相変化メモリ、磁気RAM、または抵抗変化型RAMに適用される。
本願の第1実施形態~第3実施形態は、3D構造のメモリデバイスおよび2D構造のメモリデバイス、例えば、限定されないが、2D/3DのNAND型フラッシュメモリ、2D/3DのNOR型フラッシュメモリ、2D/3Dの相変化メモリ、2D/3Dの磁気RAM、または2D/3Dの抵抗変化型RAMに適用される。
本願の第1実施形態~第3実施形態では、入力データおよび/または重みがMSBベクトルおよびLSBベクトル(すなわち、2つのベクトル)に分割されるが、本願はこれによって限定されることはない。本願の他の実行可能な実施形態では、入力データおよび/または重みがより多くのベクトルに分割されるが、それでも本願の趣旨および範囲に含まれる。
本願の第1実施形態~第3実施形態は、多数決グルーピング方式に適用されるだけでなく、累算を加速させる他のグルーピング方式にも適用される。
本願の第1実施形態~第3実施形態はAI方式であり、例えば、限定されないが顔識別である。
本願の第1実施形態~第3実施形態では、変換部は電流モードADC、電圧モードADC、またはハイブリッドモードADCによって実装されてよい。
本願の第1実施形態~第3実施形態は、シリアルMAC演算またはパラレルMAC演算に適用されてよい。
本願の第1実施形態~第3実施形態は、不揮発性メモリまたは揮発性メモリに適用されてよい。
開示された実施形態に対して様々な修正および変形を施せることが、当業者には明らかであろう。本明細書および実施例は例示的であるとしかみなされず、本開示の真の範囲は以下の特許請求の範囲およびその均等物によって示されることが意図されている。
Claims (10)
- 入力データを格納する複数のページバッファと、
前記複数のページバッファに結合された複数のメモリプレーンであって、複数の重みが前記複数のメモリプレーンに格納され、前記複数のメモリプレーンの受信済みアドレスに基づいて、前記複数のメモリプレーンが前記複数の重みと前記複数のページバッファに含まれる前記入力データとに対してビット乗算を並列に行い、複数のビット乗算結果を並列に生成し、前記複数のビット乗算結果が前記複数のページバッファに戻されて格納される、複数のメモリプレーンと、
前記複数のページバッファに結合された少なくとも1つの累算回路であって、前記複数のメモリプレーンの前記複数のビット乗算結果に対してビット累算を並列にまたは順番に行って積和(MAC)演算結果を生成するための少なくとも1つの累算回路と
を備えるメモリデバイス。 - 前記メモリデバイスがさらに、
前記複数のメモリプレーンに結合された複数の変換部であって、前記複数のメモリプレーンからの複数のメモリセル電流を変換して複数の変換結果にするための複数の変換部と、
前記複数の変換部に結合された累算検出回路であって、前記複数の変換部の前記複数の変換結果と閾値とをそれぞれ比較してページバッファ選択信号を生成し且つ累算イネーブル信号を生成するための累算検出回路と、
前記累算検出回路に結合された出力ラッチであって、前記ページバッファ選択信号に応答して、前記出力ラッチが、対応する前記複数のページバッファに格納された、前記少なくとも1つの累算回路への対応する前記複数のビット乗算結果を選択する、出力ラッチと
を備え、
前記累算イネーブル信号に応答して、前記少なくとも1つの累算回路が、前記出力ラッチからの前記複数のビット乗算結果に対してビット累算演算を順番に行って前記MAC演算結果を生成する、請求項1に記載のメモリデバイス。 - 前記複数の変換部が作動する場合、前記メモリデバイスがハイブリッドMAC演算を行い、前記少なくとも1つの累算回路が前記複数の変換結果の中の少なくとも1つの対象変換結果に対してビット累算を順番に行い、前記少なくとも1つの対象変換結果が前記閾値より高く、
前記複数の変換部が作動しない場合、前記メモリデバイスがデジタルMAC演算を行い、前記複数の変換結果が前記閾値より高いか高くないかに関係なく、前記少なくとも1つの累算回路が前記複数の変換結果の全てに対してビット累算を順番に行い、
前記少なくとも1つの累算回路が、前記複数のメモリプレーンからの前記複数のビット乗算結果に対してグルーピング演算を行って複数のグルーピング結果を生成するためのグルーピング回路と、前記複数のグルーピング結果に対してビット単位の計数を行って前記MAC演算結果を生成するための、前記グルーピング回路に結合された計数部とを含み、
前記入力データのそれぞれまたは前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
前記複数のビットベクトルの各ビットが2進形式から単進符号に変換され、
前記単進符号で表された前記複数のビットベクトルの前記各ビットが複数回複製されて、unFDP(展開ドット積)形式になり、
乗算回路が、前記unFDP形式で表された前記入力データおよび前記複数の重みに対して乗算演算を行って前記複数のビット乗算結果を生成する、請求項2に記載のメモリデバイス。 - 前記メモリデバイスがさらに、
前記複数のメモリプレーンに結合された複数の変換部であって、前記複数のメモリプレーンからの複数のメモリセル電流を変換して複数の変換結果にするための複数の変換部と、
前記複数の変換部に結合された複数の累算検出回路であって、前記複数の変換部の前記複数の変換結果と閾値とをそれぞれ比較して複数の累算イネーブル信号を生成するための複数の累算検出回路と、
出力ラッチと
を備え、
前記少なくとも1つの累算回路が前記複数の累算検出回路に結合された複数の累算回路を含み、前記累算回路が、前記複数の累算イネーブル信号によって有効になると、前記複数のメモリプレーンからの前記複数のビット乗算結果に対してビット累算演算を並列に行って複数のデジタル累算結果を生成し、
前記出力ラッチが、前記複数の累算回路からの前記複数のデジタル累算結果を前記MAC演算結果に出力するために前記複数の累算回路に結合される、請求項1に記載のメモリデバイス。 - 前記複数の変換部が作動する場合、前記メモリデバイスがハイブリッドMAC演算を行い、前記複数の累算回路が前記複数の変換結果の中の少なくとも1つの対象変換結果に対してビット累算を並列に行い、前記少なくとも1つの対象変換結果が前記閾値より高く、
前記複数の変換部が作動しない場合、前記メモリデバイスがデジタルMAC演算を行い、前記複数の変換結果が前記閾値より高いか高くないかに関係なく、前記複数の累算回路が前記複数の変換結果の全てに対してビット累算を並列に行い、
前記入力データのそれぞれまたは前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
前記複数のビットベクトルの各ビットが2進形式から単進符号に変換され、
前記単進符号で表された前記複数のビットベクトルの前記各ビットが複数回複製されて、unFDP(展開ドット積)形式になり、
乗算回路が、前記unFDP形式で表された前記入力データおよび前記複数の重みに対して乗算演算を行って前記複数のビット乗算結果を生成する、請求項4に記載のメモリデバイス。 - メモリデバイスの動作方法であって、前記動作方法が、
入力データを複数のページバッファに格納する段階と、
複数のメモリプレーンの受信済みアドレスに基づいて、前記複数のメモリプレーンに格納された複数の重みと、前記入力データとに対して、前記複数のメモリプレーンがビット乗算を並列に行って複数のビット乗算結果を並列に生成する段階であって、前記複数のビット乗算結果は前記複数のページバッファに戻されて格納される、生成する段階と、
前記複数のメモリプレーンの前記複数のビット乗算結果に対してビット累算を並列にまたは順番に行って積和(MAC)演算結果を生成する段階と
を備える、メモリデバイスの動作方法。 - 前記メモリデバイスの動作方法がさらに、
前記複数のメモリプレーンから複数のメモリセル電流を変換して複数の変換結果にする段階と、
前記複数の変換結果と閾値とをそれぞれ比較してページバッファ選択信号を生成し且つ累算イネーブル信号を生成する段階と、
前記ページバッファ選択信号および前記累算イネーブル信号に応答して、対応する前記複数のページバッファに格納された対応する前記複数のビット乗算結果を選択して、ビット累算演算を順番に行い且つ前記MAC演算結果を生成する段階と
を備える、請求項6に記載のメモリデバイスの動作方法。 - ハイブリッドMAC演算を行うときには、前記複数の変換結果の中の少なくとも1つの対象変換結果に対してビット累算を順番に行い、前記少なくとも1つの対象変換結果が前記閾値より高く、
デジタルMAC演算を行うときには、前記複数の変換結果が前記閾値より高いか高くないかに関係なく、前記複数の変換結果の全てに対してビット累算を順番に行い、
前記複数のメモリプレーンからの前記複数のビット乗算結果に対してグルーピング演算を行って複数のグルーピング結果を生成し、前記複数のグルーピング結果に対してビット単位の計数を行って前記MAC演算結果を生成し、
前記入力データのそれぞれまたは前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
前記複数のビットベクトルの各ビットが2進形式から単進符号に変換され、
前記単進符号で表された前記複数のビットベクトルの前記各ビットが複数回複製されて、unFDP(展開ドット積)形式になり、
乗算回路が、前記unFDP形式で表された前記入力データおよび前記複数の重みに対して乗算演算を行って前記複数のビット乗算結果を生成する、請求項7に記載のメモリデバイスの動作方法。 - 前記メモリデバイスの動作方法がさらに、
前記複数のメモリプレーンからの複数のメモリセル電流を変換して複数の変換結果にする段階と、
前記複数の変換結果と閾値とをそれぞれ比較して複数の累算イネーブル信号を生成する段階と、
前記複数の累算イネーブル信号に応答して、前記複数のメモリプレーンからの前記複数のビット乗算結果に対してビット累算演算を並列に行って複数のデジタル累算結果を生成する段階と、
前記複数のデジタル累算結果を前記MAC演算結果に出力する段階と
を備える、請求項6に記載のメモリデバイスの動作方法。 - ハイブリッドMAC演算を行うときには、前記複数の変換結果の中の少なくとも1つの対象変換結果に対してビット累算を並列に行い、前記少なくとも1つの対象変換結果が前記閾値より高く、
デジタルMAC演算を行うときには、前記複数の変換結果が前記閾値より高いか高くないかに関係なく、前記複数の変換結果の全てに対してビット累算を並列に行い、
前記複数のメモリプレーンからの前記複数のビット乗算結果に対してグルーピング演算を行って複数のグルーピング結果を生成し、前記複数のグルーピング結果に対してビット単位の計数を行って前記MAC演算結果を生成し、
前記入力データのそれぞれまたは前記複数の重みのそれぞれの複数のビットが複数のビットベクトルに分割され、
前記複数のビットベクトルの各ビットが2進形式から単進符号に変換され、
前記単進符号で表された前記複数のビットベクトルの前記各ビットが複数回複製されて、unFDP(展開ドット積)形式になり、
乗算回路が、前記unFDP形式で表された前記入力データおよび前記複数の重みに対して乗算演算を行って前記複数のビット乗算結果を生成する、請求項9に記載のメモリデバイスの動作方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163175554P | 2021-04-16 | 2021-04-16 | |
US63/175,554 | 2021-04-16 | ||
US17/542,557 US11656988B2 (en) | 2021-04-16 | 2021-12-06 | Memory device and operation method thereof |
US17/542,557 | 2021-12-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022164559A JP2022164559A (ja) | 2022-10-27 |
JP7206531B2 true JP7206531B2 (ja) | 2023-01-18 |
Family
ID=83602553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022012871A Active JP7206531B2 (ja) | 2021-04-16 | 2022-01-31 | メモリデバイスおよびその動作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11656988B2 (ja) |
JP (1) | JP7206531B2 (ja) |
KR (1) | KR20220143562A (ja) |
CN (1) | CN115220690A (ja) |
TW (1) | TWI788128B (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001188767A (ja) | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
JP3250244B2 (ja) | 1992-01-23 | 2002-01-28 | 松下電器産業株式会社 | トラックジャンプ制御装置 |
JP2002269067A (ja) | 2001-12-26 | 2002-09-20 | Matsushita Electric Ind Co Ltd | 行列演算装置 |
JP2018521374A (ja) | 2015-05-21 | 2018-08-02 | グーグル エルエルシー | ニューラルネットワークプロセッサで使用される重みのプリフェッチ |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
US9507603B2 (en) * | 2013-03-09 | 2016-11-29 | Gerald George Pechanek | Methods and apparatus for signal flow graph pipelining that reduce storage of temporary variables |
US10824934B2 (en) * | 2017-01-12 | 2020-11-03 | Texas Instruments Incorporated | Methods and apparatus for matrix processing in a convolutional neural network |
JP2019057053A (ja) * | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | 半導体記憶装置 |
US11934480B2 (en) * | 2018-12-18 | 2024-03-19 | Macronix International Co., Ltd. | NAND block architecture for in-memory multiply-and-accumulate operations |
KR102658831B1 (ko) * | 2018-12-31 | 2024-04-18 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 비휘발성 메모리 장치를 이용한 계산 방법 |
TWI718566B (zh) | 2019-06-21 | 2021-02-11 | 旺宏電子股份有限公司 | 立體記憶體陣列裝置與乘積累加方法 |
US11562205B2 (en) * | 2019-09-19 | 2023-01-24 | Qualcomm Incorporated | Parallel processing of a convolutional layer of a neural network with compute-in-memory array |
-
2021
- 2021-12-06 TW TW110145455A patent/TWI788128B/zh active
- 2021-12-06 US US17/542,557 patent/US11656988B2/en active Active
- 2021-12-17 CN CN202111558035.3A patent/CN115220690A/zh active Pending
-
2022
- 2022-01-31 JP JP2022012871A patent/JP7206531B2/ja active Active
- 2022-02-17 KR KR1020220020971A patent/KR20220143562A/ko unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3250244B2 (ja) | 1992-01-23 | 2002-01-28 | 松下電器産業株式会社 | トラックジャンプ制御装置 |
JP2001188767A (ja) | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
JP2002269067A (ja) | 2001-12-26 | 2002-09-20 | Matsushita Electric Ind Co Ltd | 行列演算装置 |
JP2018521374A (ja) | 2015-05-21 | 2018-08-02 | グーグル エルエルシー | ニューラルネットワークプロセッサで使用される重みのプリフェッチ |
Also Published As
Publication number | Publication date |
---|---|
CN115220690A (zh) | 2022-10-21 |
US11656988B2 (en) | 2023-05-23 |
KR20220143562A (ko) | 2022-10-25 |
JP2022164559A (ja) | 2022-10-27 |
US20220334964A1 (en) | 2022-10-20 |
TWI788128B (zh) | 2022-12-21 |
TW202242873A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10459724B2 (en) | Memory device, and data processing method based on multi-layer RRAM crossbar array | |
Liu et al. | Sme: Reram-based sparse-multiplication-engine to squeeze-out bit sparsity of neural network | |
CN114499538A (zh) | 多比特输入数据编码方法、装置、电子设备及存储介质 | |
Diware et al. | Unbalanced bit-slicing scheme for accurate memristor-based neural network architecture | |
JP7255068B2 (ja) | メモリデバイス及びその動作方法 | |
JP7206531B2 (ja) | メモリデバイスおよびその動作方法 | |
CN110889080A (zh) | 乘积累加运算装置、乘积累加运算方法和系统 | |
US20230075348A1 (en) | Computing device and method using multiplier-accumulator | |
CN114153420A (zh) | 存储器内运算方法及装置 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
JP7279293B2 (ja) | メモリデバイスおよびその動作方法 | |
TWI783573B (zh) | 記憶體裝置及其操作方法 | |
CN111611528A (zh) | 电流值可变的电流积分和电荷共享的多位卷积运算模组 | |
US20230050279A1 (en) | Integrated circuit and method of operating same | |
US20230161556A1 (en) | Memory device and operation method thereof | |
TWI806641B (zh) | 記憶體裝置及其操作方法 | |
US11764801B2 (en) | Computing-in-memory circuit | |
CN115664422B (zh) | 一种分布式逐次逼近型模数转换器及其运算方法 | |
US20240176584A1 (en) | Scalable Switch Capacitor Computation Cores for Accurate and Efficient Deep Learning Inference | |
CN117492696A (zh) | 乘加运算电路、存储器及电子设备 | |
Sabri et al. | ReDy: A Novel ReRAM-centric Dynamic Quantization Approach for Energy-efficient CNN Inference | |
Liu et al. | An Energy-Efficient Mixed-Bit ReRAM-based Computing-in-Memory CNN Accelerator with Fully Parallel Readout | |
CN116594588A (zh) | 一种通用的存内矩阵-张量处理器及其操作方法 | |
WO2022029790A1 (en) | A flash adc based method and process for in-memory computation | |
Zhang et al. | Algorithm-hardware co-design for Energy-Efficient A/D conversion in ReRAM-based accelerators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220131 |
|
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: 20221206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221212 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7206531 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |