JP2022018112A - インメモリ計算回路及び方法 - Google Patents
インメモリ計算回路及び方法 Download PDFInfo
- Publication number
- JP2022018112A JP2022018112A JP2021115827A JP2021115827A JP2022018112A JP 2022018112 A JP2022018112 A JP 2022018112A JP 2021115827 A JP2021115827 A JP 2021115827A JP 2021115827 A JP2021115827 A JP 2021115827A JP 2022018112 A JP2022018112 A JP 2022018112A
- Authority
- JP
- Japan
- Prior art keywords
- data element
- memory cell
- adder
- memory
- bits
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- 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
- 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/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- 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
-
- 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/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5318—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/4074—Power supply or voltage generation circuits, e.g. bias voltage generators, substrate voltage generators, back-up power, power control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1012—Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1036—Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift registers
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Complex Calculations (AREA)
- Dram (AREA)
- Semiconductor Memories (AREA)
- Radar Systems Or Details Thereof (AREA)
Abstract
【課題】入力データ要素と記憶された重みデータ要素とに基づいて部分を生成するインメモリ計算を行うメモリ回路を提供する。
【解決手段】メモリ回路100Aは、選択回路110と、メモリセルBCX列と、加算器ツリー122と、を備える。選択回路は、複数の入力データ要素A1k~ANkを受信し、複数の入力データ要素の各入力データ要素のビット数がHであり、複数のデータ要素の各入力データ要素のH個のビットの選択されたk番目ビットのセットを出力する。メモリセル列の各メモリセルは、第1の重みデータ要素を格納する第1のストレージユニットと、第1の重みデータ要素及び選択されたk番目ビットのセットの対応する第1のk番目ビットに基づいて第1の積データ要素を生成する第1の乗算器とを有する。加算器ツリーは、各第1の積データ要素に基づいて加算データ要素を生成する。
【選択図】図1A
【解決手段】メモリ回路100Aは、選択回路110と、メモリセルBCX列と、加算器ツリー122と、を備える。選択回路は、複数の入力データ要素A1k~ANkを受信し、複数の入力データ要素の各入力データ要素のビット数がHであり、複数のデータ要素の各入力データ要素のH個のビットの選択されたk番目ビットのセットを出力する。メモリセル列の各メモリセルは、第1の重みデータ要素を格納する第1のストレージユニットと、第1の重みデータ要素及び選択されたk番目ビットのセットの対応する第1のk番目ビットに基づいて第1の積データ要素を生成する第1の乗算器とを有する。加算器ツリーは、各第1の積データ要素に基づいて加算データ要素を生成する。
【選択図】図1A
Description
本願は、2020年7月14日に提出された米国仮出願第63/051、497号の優先権を主張し、当該出願の全ての内容は本明細書中に参考として援用される。
メモリアレイは、ロジックや計算などの各種計算に用いられるデータを記憶してアクセスするために用いられることが多い。これらの動作を行うために、メモリアレイと計算に用いる回路との間でデータビットを移動させる。計算には、複数層の計算が含まれており、第1の計算の結果は、第2の計算における入力データとして用いられる場合がある。
本開示は、添付図面を参照しながら、適切な実施形態について詳細に説明する。なお、業界標準では、様々なバターンがスケールに描かれていない。実際には、議論の明確にするために、各バターンの寸法を任意に増減させることが可能である。
また、下記の開示は、課題を解決するためになされたものであり、発明の要旨を逸脱しない範囲で種々の変更を行うことが可能である。以下、本開示を簡略化するために構成及び配置に関する具体的な例を説明する。もちろん、これらは一例に過ぎず、これらに限定されるものではない。例えば、以下の説明において、第2の特徴の上方にまたは上に第1の特徴を形成するとは、第1の特徴と第2の特徴とが直接接して形成されている態様を含んでもよいし、第1の特徴と第2の特徴とが直接接していなくてもよいように、第1の特徴と第2の特徴との間に付加的なバターンが形成されている態様を含んでもよい。また、本開示は、各実施例において、参照符号及び/またはキャラクターを繰り返してもよい。なお、この繰り返しは、説明を簡単にするためのものであり、本開示の各種の実施形態の「及び」/「または」という組み合わせの関係を限定するものではない。
また、簡単に説明するために、本開示において、「~の下に」、「~の下方に」、「~より低い」、「~の上に」、「アッパー」等の空間的な相対的な用語を用いて、図面に示すように、一つの素子または特徴と他の素子又は特徴との関係を説明する可能性がある。なお、空間的な相対的な用語とは、図面に示す方向又は位置だけではなく、装置の使用中や動作中の異なる方向又は位置も含むものとする。前記装置は他の方向で(90度又は他の方向)回転させてもよく、本開示では、空間的な相対的な用語についても同様に解釈することができる。
本開示の実施形態において、メモリ回路のメモリアレイは、メモリストレージユニットと計算部の両方を備えることにより、入力データ要素と記憶された重みデータ要素とに基づいて部分を生成するインメモリ計算を行う。このようなメモリ回路は、メモリアレイがインメモリ計算を行う素子を備えていない場合と比較して、小面積かつ低電力で部分和を生成することができる。いくつの実施形態において、例えば、畳み込みニューラルネットワーク(CNN:ConvolutionalNeuralNetwork)アプリケーションなどの様々なアプリケーションにおいて、メモリ回路は、1つ以上の入力データ要素に対して、蓄積された重みデータ要素の配列を効率的に複数蓄積(MAC:MultipleandAccumulation)計算することを可能にする。
図1(A)及び図1(B)は、実施形態に係るメモリ回路100A及び100Bのダイヤグラムである。各メモリ回路100A、100Bは、入力データバスIDB及び対応するメモリアレイ120A、120Bに接続された選択回路110と、対応するメモリアレイ120A、120Bに接続された入出力回路130及びアキュムレータ140と、選択回路110、対応するメモリアレイ120A、120B、I/O回路130及び各アキュムレータ140に制御信号バスCTRLBを介して接続された制御回路150とを備えている。
各メモリアレイ120A、120Bは、M個のアキュムレータ140に対応するM個のカラムC1~CMを有する。メモリアレイ120Aは、1つの入力端子(図示せず)と1つの出力端子(図示せず)とを含むN行のメモリセルBCXを備えており、これにより、各入力端子は、メモリアレイ120BのN行のデータのうちの1つに対応する。メモリアレイ120Bは、2つの入力端子(図示せず)と1つの出力端子(図示せず)とを含むN/2行のメモリセルBX2を備えており、これにより、各入力端子は、メモリアレイ120BのN行のデータのうちの1つに対応する。これにより、各メモリ回路100A、100Bは、後述するように、複数のビット数Hを含む複数のN個の入力データ要素A1~ANが入力されるように構成されている。
表1には、N個の入力データ要素A1~ANがそれぞれHビットのデータを含む入力データ要素A1~ANのデータ構造が示されている。
後述するように、メモリ回路100A、100Bは、動作時に、各メモリアレイ120A、120Bの各列C1-CMに、選択回路110から、各入力データ要素A1-ANの同一番号のビット(k番目のビット)、例えば、ビット集合A1k-ANkが同時に入力されるように構成されている。各列は、受け取ったビットA1k-ANkと、対応するメモリセルBCXまたはBX2に格納された重みデータとに基づいて計算を行うことにより、列C1-CMに対応するM個の集計データSD1-SDMを生成する。
カウンタkは、Hビット、例えば、1~Hの各々を介して、順次選択され、選択回路110は、ビットA1k~ANkの組を順次選択して出力し、各列は、カウンタkの値毎に、選択された組のビットA1k~ANkの計算を繰り返すことにより、H個の加算データSD1~SDMの列を生成する。アキュムレータ140は、加算データSD1~SDMの配列に基づいて対応する部分和PS1~PSMを生成し、対応する出力ポートO1~OMに出力する。
図1Aに示す実施形態では、メモリアレイ120Aは、順次に選択された第kビットの入力データA1~ANの1ビットを受信するメモリセルBCXを備え、図1Bに示す実施形態では、メモリアレイ120Bは、順次選択された第kビットの入力データA1~ANのうちの隣接する2ビットを受信するメモリセルBX2を有する。これにより、各メモリ回路100A、100Bは、後述する方法900、1000のうちの一部または全部を、図9および図10を参照して実行可能に構成されており、これにより、インメモリ計算が行われる。
本開示の実施形態において、記憶回路100A又は100Bは、ニューラルネットワーク、例えば、CNN、センサであり、例えば、磁気、画像、振動、又はジャイロセンサ、無線周波数(RF)装置等の集積回路(IC)装置に含まれる。
各メモリ回路100Aおよび100Bは、説明のために簡略化されている。 いくつの実施形態では、メモリ回路100Aまたは100Bの一方または両方は、図1に示されるものに加えて、様々な要素を含む。 図1Aおよび1Bに記載されている操作を実行するように配置されている。
2つ以上の回路素子は、1又は複数の直接信号接続及び/又は1又は複数のロジック素子、例えば、インバータ又はロジックゲートを含む1又は複数の間接信号接続に基づいて、2つ以上の回路素子の間に接続されていると考えられる。2つ以上の接続された回路素子の間の信号通信は、1つ以上のロジックデバイスによって、変更、例えば、反転、または、条件付きのいずれであってもよい。
選択回路110は、入力データバスIDBに接続された1または複数のデータレジスタ(図1A及びつ1Bに示せず)と、1つまたは複数のデータレジスタおよび制御信号バスCTRLBに接続された1つまたは複数のマルチプレクサ等(図1A及びつ1Bに示せず)とを含む電子回路である。
データレジスタは、いくつかの実施形態ではバッファとも呼ばれ、1つまたは複数のデータ要素、例えば、各入力データ要素A1~ANのHビットのいくつかまたはすべてを一時的に格納するように構成された電子回路である。様々な実施形態では、データレジスタは、データビットを入力および出力するように構成された単一の端末セット、またはデータビットを入力および出力するように構成された別個の端末セットを含む。
マルチプレクサは、複数の信号を入力する第1端子群と、1つ以上の入力データ要素A1~ANのHビットと、1つ以上のスイッチング素子と、例えば、1以上の制御信号を受信するトランジスタと、例えば、制御信号CTRLと、1つ以上の制御信号に応じて、選択された1つの受信信号を出力する少なくとも1つの端子と、を含む電子回路である。
これにより、選択回路110は、入力データバスIDB上に入力された各入力データ要素A1~ANのHビットを格納し、制御信号バスCTRLB上で受信した1つ以上の制御信号CTRLに応答して、選択された第kビットA1k~ANkの組を、対応するメモリアレイ120A、120Bに出力する。入力データ要素A1~ANのそれぞれについて、対応する選択されたk番目のビットA1k~ANkは、Kビットの合計のk番目のビットである。選択回路110は、図2について説明する選択回路200を含む。
本開示の実施形態において、選択回路110は、入力データA1-ANの数Nが4-512の範囲で入力されるように構成されている。選択回路110は、入力データA1-ANの数Nが32-128の範囲で入力されるように構成されている。
幾つかの実施形態では、選択回路110は、入力データ要素A1~ANのビット数Hを1~16の範囲内で受けるように構成されている。幾つかの実施形態では、選択回路110は、各入力データ要素A1~ANのビット数Hを4~8の範囲内で受けるように構成されている。
幾つかの実施形態において、1つ以上の制御信号CTRLは、選択回路110に、最下位ビット(LSB:LEAST SIGNIFICANT BIT)から上位ビット(MSB:MOST SIGNIFICANT BIT)まで、またはMSBからLSBに順次k番目のビットA1k―ANkを順次出力するように構成されている。幾つかの実施形態において、1つ以上の制御信号CTRLは、ビット数Hの全部またはビット数Hのサブセットを選択回路110に順次出力させるように構成されている。幾つかの実施形態では、各入力データ要素A1~ANは、Hビットよりも少ないビット数を含み、1つ以上の制御信号CTRLは、選択回路110に、受信ビット数の全部又は一部を順次出力させるように構成されている。
幾つかの実施形態では、1つ以上の制御信号CTRLは、選択回路110に、カウンタkの値ごとに、選択されたkビットのビットA1k~ANkの全体又はサブセットを出力させるように構成されている。幾つかの実施形態では、複数の入力データ要素は、Nよりも少ない数のデータ要素を含み、1つ以上の制御信号CTRLは、カウンタkの値ごとに、受信データ要素の数のk番目のビットA1k~ANkの全部又は一部を出力するように構成されている。
各メモリアレイ120A、120Bは、M個のカラムC1~CMと、後述する加算器ツリー122を含む各カラムC1~CMと、加算器ツリー122に接続された対応するメモリセルBCX、BX2とを含む電子回路である。各カラムC1~CMのメモリセルBCX、BX2は、選択回路110にさらに接続されており、これにより、各カラムC1~CMは、選択回路110から出力された選択されたKビットのビットA1k~ANkのセットを、カウンタkに基づいて同時に受信するように構成されている。
各メモリセルBCXは、1つのデータ要素A1―ANのビットを受信するように構成されているため、メモリアレイ120Aのデータの行に対応するように、メモリアレイ120Aは、メモリセルBCXのN行のR1~RNの合計を含む。各メモリセルBX2は、2つのデータ要素A1~ANのビットを受信するように構成されているため、メモリアレイ120Bは、メモリセルBX2のL行のR1~RLの合計がN/2であり、各行R1~RLがメモリアレイ120Bの二行分のデータに対応する。図1に示す実施形態において、メモリセルBCX、BX2の各インスタンスは、所定のインスタンスが配置されたカラムおよびロウに対応する位置指示器、例えば21を含む。
本開示の実施形態では、メモリアレイ120A、120Bは、カラム数Mが2~512のカラム数Mを有する。本開示の実施形態では、メモリアレイ120A、12Bは、カラム数Mが16~128のカラム数Mを有する。
図1A及び図1Bに示す実施形態では、各メモリアレイ120A、120Bは、R1~RNまたはR1~RL、C1~CMの1つのアレイ層を有する。なお、メモリアレイ120A、120Bの一方または両方は、図1A及び図1Bに示した単層の他に、1層以上のアレイ層(図示せず)を有することにより、1つの層に加えて、行および列も含む。
メモリセルBCXは、乗算器に接続された記憶素子(図示せず)を含む。記憶素子は、ロジック状態で表される1つ以上のデータビットを記憶する電気、電気機械、電磁等のデバイスである。ロジック的な状態は、記憶素子の一部または全部に蓄積された電荷の電圧レベルに相当する。いくつかの実施形態において、ロジック状態は、記憶素子の一部または全部の物性、例えば、抵抗または磁気配向に対応する。
いくつかの実施形態では、記憶要素は、1つまたは複数のスタティックランダムアクセスメモリ(SRAM)セルを含む。 様々な実施形態において、SRAMセル、例えば、5トランジスタ(5T)、6トランジスタ(6T)、8トランジスタ(8T)、または9トランジスタ(9T)SRAMセルは、2から12までの範囲の多数のトランジスタを含む。
いくつかの実施形態では、記憶素子は、1つまたは複数のダイナミックランダムアクセスメモリ(DRAM:DYNAMIC RANDOM-ACCESS MEMORY)セル、抵抗性ランダムアクセスメモリ(RRAM:RESISTIVE RANDOM-ACCESS MEMORY)セル、磁気抵抗性ランダムアクセスメモリ(MRAM:MAGNETORESISTIVE RANDOM-ACCESS MEMORY)セル、強誘電性ランダムアクセスメモリ(FERAM:FERROELECTRIC RANDOM-ACCESS MEMORY)セルを含む。 NORフラッシュセル、NANDフラッシュセル、導電性ブリッジングランダムアクセスメモリ(CBRAM:CONDUCTIVE-BRIDGING RANDOM-ACCESS MEMORY)セル、データレジスタ、不揮発性メモリ(NVM:NON-VOLATILE MEMORY)セル、3D NVMセル、またはビットデータを格納できるその他のタイプのメモリセルを含む。
幾つかの実施形態において、記憶素子は、1~16のデータビット数を記憶する。幾つかの実施形態では、記憶素子は、4~8のデータビット数を記憶する。
記憶素子は、書込動作時にロジック状態がプログラムされ、読出動作時にアクセスされる1つ以上のI/O接続(図示せず)と、例えば、乗算演算とを含む。
乗算器は、受信データビット、例えば、選択されたk番目のビットA1k~ANkのうちの1つ、および受信データ要素、例えば、ストレージ要素に格納されたマルチビット重みデータ要素。これにより、入力データビットと入力データ要素の積に等しい積データ要素が生成されます。いくつかの実施形態では、乗算器は、受信されたデータ要素のビット数に等しいビット数を含む積データ要素を生成するように構成される。様々な実施形態では、乗算器は、1つまたは複数のANDまたはNORゲート、または乗算演算の一部またはすべてを実行するのに適した他の回路を含む。
乗算器に接続され、重みデータ要素を格納する記憶素子と、選択回路110に接続され、選択されたk番目のビットA1k~ANkの1ビットを受信する乗算器とを備え、各メモリセルBCXは、選択されたk番目のビットA1k~ANkの1ビットと、メモリアレイ120A内の任意のメモリセルBCXの位置に対応する重みデータ要素とに基づいて、積データ要素P11―PMNを生成する。メモリセルBCXは、図3Aに係る後述するメモリセル300Aを含む。
メモリセルBX2は、第1の乗算器に接続された第1の記憶素子と、第2の乗算器に接続された第2の記憶素子と、第1および第2の乗算器(図1A及び図1Bに示せず)に接続された加算器とを有する。第1の記憶素子及び乗算器は、メモリセルBCXに対して上述したように第1の積データ要素を生成するように構成されており、第2の記憶素子及び乗算器は、メモリセルBCXに対して上述したように第2の積データ要素を生成するように構成されている。
加算器は、入力された第1及び第2のデータ要素、例えば、第1及び第2の乗算器により生成された第1及び第2の積データ要素に基づいて、計算を行う1つ又は複数のロジックゲートと、例えば、加算と、を含む電子回路であり、受信した第1及び第2のデータ要素の和に等しい合計データ要素を生成する。幾つかの実施形態では、加算器は、受信した第1及び第2のデータ要素のそれぞれのビット数よりも1ビット多いビット数を含む和データ要素を生成する。種々の実施形態において、加算器は、1つ以上の全加算器ゲートと、半加算器ゲートと、リプル反転加算回路と、キャリーレス加算回路と、キャリー選択加算回路と、キャリーオーバ加算回路と、加算動作の一部または全部を行うのに適した他の回路とを含む。
選択されたk番目のビットA1k~ANkのセットの第1のビットに基づいて第1の積データ要素を生成するように構成された第1の乗算器および第1の記憶された重みデータ要素を含めることによって、第2の乗算器は、第2のk番目のビットA1k-ANkの選択されたセットのビット、および第1および第2の乗算器のそれぞれに結合された加算器、各メモリセルBX2は、選択された第1および第2のビットに基づいて合計データ要素S11-SMLを生成するように構成されます。メモリアレイ120B内の所与のメモリセルBX2の位置に対応するk番目のビットA1k~ANkおよび第1および第2の重みデータ要素のセットを生成する。いくつかの実施形態では、メモリセルBX2は、図3Bに関して以下で説明するメモリセル300Bを含む。
加算器ツリー122は、複数層の加算器(図1A及び図1Bに示せず)を含む電子回路であり、第1層は、複数のデータ要素、例えば、積データ要素P11-PMN又は合計データ要素S11-SMLを入力し、最終層は、入力された複数のデータ要素に基づいて、データ要素、例えば、合計データ要素SD1-SDMを生成する単一の加算器を含む。幾つかの実施形態では、前記第1のレイヤと前記最終のレイヤとの間の連続する1つ以上のレイヤの各々は、前のレイヤで生成された第1の数の合計データを受信し、前記第1の数の合計データに基づいて、前記第1の数の半分の第2の数の合計データを生成する。このように、レイヤの総数は、第1のレイヤと最終のレイヤとが存在する場合には、それぞれのレイヤが連続して存在することになる。いくつかの実施形態では、加算ツリー122は、図4を参照して後述する加算ツリー400を含む。
これにより、加算器ツリー122は、層の総数に等しい累乗された2に等しい数を有する複数のデータ要素を受信するように構成され、データ要素の数は、それにより、層の総数の2進指数である。図1Aに示される実施形態では、メモリアレイ120Aは、層の総数に上げられた2つがN個の積データ要素、例えば、P11~P1Nに等しくなるように、層の総数を含む加算器ツリー122の各インスタンスを含む。図1Bに示される実施形態では、メモリアレイ120Bは、層の総数に上げられた2つがL個の合計データ要素、例えば、S11~S1Lに等しくなるように、層の総数を含む加算器ツリー122の各インスタンスを含む。
幾つかの実施形態において、加算ツリー122は、2から9までの総レイヤ数を含む。加算ツリー122は、4から7までの総レイヤ数を含む。
幾つかの実施形態において、加算器ツリー122の各層の各加算器は、受信した複数のデータ要素のうち、前段の層の合計データ要素のビット数よりも1ビット多いビット数を含む合計データ要素を生成するように構成される。
幾つかの実施形態において、図1Aに示す幾つかの実施形態では、加算ツリー122は、各メモリセルBCXに格納された重みデータ要素のビット数と等しい第1のビット数を含む積データ要素P11~PMNを受信する第1の層と、第1のビット数に等しい第2のビット数と、加算器ツリー122内の総層数と等しい値とを含む加算データ要素SD1~SDMを生成する最終層とを含む。
幾つかの実施形態では、図1Bに示すように、加算ツリー122は、各メモリセルBX2に記憶される重みデータのビット数よりも1ビット多い第1ビット数を含む加算データ要素S11-SMLが入力される第1層と、第1ビット数に加算ツリー122の層数の合計値を加算した第2ビット数を含む加算データ要素SD1-SDMが生成される最終層とを含む。
I/O回路130は、制御信号バスCTRLBに接続され、メモリアレイ120Aの各メモリセルBCXの各記憶素子またはメモリアレイ120Bの各メモリセルBX2の1つ以上のI/O接続に、1本以上のワード線、1本以上のビット線および/または1本以上のデータ線(図示せず)を介して接続された電子回路である。これにより、I/O回路130は、制御信号バスCTRLB上で受信した1つ以上の制御信号CTRLに応じて、各メモリセルBCX、BX2を書き込み動作時の1つ以上のロジック状態にプログラムし、各メモリセルBCX、BX2に記憶された1つ以上のロジック状態を読み出し動作時にアクセスさせるように構成されている。
アキュムレータ140は、制御信号バスCTRLBに接続され、1つ又は複数の加算器と、1つ又は複数のデータレジスタと、1つ又は複数のシフタ(図1A及び図1B示せず)とを一括してフィードバック配置した電子回路である。加算器は、加算器ツリー122に接続されることにより、カウンタkに基づいて、選択回路110から出力された順次選択されたk番目のビットA1k~ANkの組に対応するH個の加算データSD1~SDMのうちの1個の加算データSD1~SDMを受信するように構成されている。
前記1つ以上の加算器は、前記1つ以上のシフタから出力されるシフト後のデータ要素を入力し、前記シフトされたデータ要素と前記1つの加算データ要素SD1~SDMとに基づいて、内部合計データ要素を生成する。前記1つ以上のデータレジスタは、前記1つ以上の加算器から前記内部合計データ要素を受け取り、前記内部合計データ要素を格納し、格納した前記内部合計データ要素を前記1つ以上のシフタおよび対応する出力ポートO1~OMに出力するように構成されている。前記1つ以上のシフタは、前記1つ以上のデータレジスタから出力された前記格納された内部データ要素を受信し、前記格納された内部データ要素をMSB方向又はLSB方向のいずれか一方に1ビットシフトして前記シフトデータ要素を生成する。
これにより、アキュムレータ140は、制御信号バスCTRLB上で受信した1つ以上の制御信号CTRLに応答して、蓄積された内部合計データ要素を加算データ要素SD1~SDMの順番の1つずつ増加させる蓄積動作を行うように構成されている。以上の制御信号CTRLは、カウンタk情報に基づくものであり、これにより、k番目のビットA1k~ANkの組が順次生成されるタイミング及びMSB/LSB方向に同期した受信加算データ要素SD1~SDMに、記憶されている内部データ要素がシフトして加算されるように、k番目のビットA1k―ANkの順次選択に連動させるように構成されている。
動作時には、k番目のビットA1k-ANkの組のHビットと、対応する合計データSD1-SDMのH個のインスタンスとにわたって、サイクルカウンタkに基づく積算動作が実行されることにより、1つ以上のデータレジスタに格納された内部データが、対応する部分合計値PS1-PSMとして、対応する出力ポートO1-OMに出力される。
制御回路150は、制御信号CTRLを生成し、制御信号バスCTRLBに制御信号CTRLを出力することにより、メモリ回路100Aまたは100Bの動作を制御する電子回路である。制御信号CTRLは、選択回路110、メモリアレイ120A、120B、I/O回路130、及び、後述する実施形態に係るアキュムレータ140によって、制御信号バスCTRLBから受信される。制御回路150は、1つ以上のクロック信号に基づいて、制御信号CTRLを生成する。
幾つかの実施形態において、制御回路150は、ハードウェアプロセッサ152と、コンピュータ読み取り可能な非一時的な記憶媒体154とを含む。コンピュータ読み取り可能な記録媒体154は、例えば、ストア、コンピュータプログラムコード、例えば、ハードウェアプロセッサ152(少なくともその一部)による命令の実行は、例えば、図9に示す方法900、及び/又は、図10に示す方法1000(以下、着目したプロセス及び/又は方法)を実現する記憶回路操作ツールを表す。
幾つかの実施形態において、プロセッサ152は、I/Oインタフェースを介してコンピュータ読み取り可能な記録媒体154と電気的に接続されており、バス(図示せず)を介してネットワークと接続されている。ネットワークインタフェースは、ネットワーク(図示せず)に接続されており、プロセッサ152及びコンピュータ読み取り可能な記憶媒体154は、ネットワークを介して外部の要素と接続可能である。プロセッサ152は、制御回路150およびメモリ回路100Aまたは100Bを、上述した処理および/または方法の一部または全部を行うために利用可能なように、コンピュータ読み取り可能な記憶媒体154に記録されたコンピュータプログラムコードを実行するように構成されている。プロセッサ152は、中央処理装置(CPU:CENTRAL PROCESSING UNIT)、マルチプロセッサ、分散処理システム、アプリケーション専用集積回路(ASIC:A P P L I C A T I O N SPECIFICINTEGRATEDCIRCUIT)、および/または、適宜の処理部である。
一つ又は複数の実施形態において、コンピュータ読み取り可能な記憶媒体154は、電子的、磁気的、光学的、電磁的、赤外線、及び/又は半導体システム(又は装置又は装置)である。コンピュータ読み取り可能な記憶媒体154は、例えば、半導体または固体メモリ、磁気テープ、着脱可能なコンピュータ本体、RAM、SRAM、DRAM、読み取り専用メモリ(ROM:READ ONLY MEMORY)、リジッド磁気ディスク、光ディスクなどである。光ディスクを用いた実施の形態では、コンピュータ読み取り可能な記録媒体154は、コンパクトディスク-読み取り専用メモリ(CD―ROM:COMPACT DISK―READONLYMEMORY)、コンパクトディスク-読み取り/書き込み(CD―R/W:COMPACT DISK/書き込み)、デジタルビデオディスク(DVD:DIGITAL VERSATILE DISK)などである。
本開示の実施形態において、コンピュータ読み取り可能な記憶媒体154は、制御回路150に制御信号を生成させるためのプログラムコードを記憶している。また、本開示の実施形態において、コンピュータ読み取り可能な記憶媒体154には、上述した処理の一部または全部を行いやすくするための情報も記憶されている。
以上のように構成することにより、各メモリ回路100A、100Bは、入力データ要素A1~ANを選択回路110を用いて順次選択し、選択されたメモリセルBCX、BX2の各列C1~CMのビットA1k-ANkの組を順次選択し、メモリセルBCX、BX2および対応する加算器ツリー122を用いて、出力ポートO1~OMに部分和PS1~PSMが出力される一連の計算を行うことができる。メモリアレイ120A、120Bを備えることにより、各メモリ回路100A、100Bは、入力されたデータ要素A1~ANと記憶された重みデータ要素とに基づいて、少なくとも1つの部分和PS1~PSMを生成する。このようなメモリ回路は、メモリアレイが1回の計算を行う素子を含まない場合に比べて、面積の小さい部分と低い部分とを用いて部分和を生成することができる。
図2は、選択回路200を示す図である。選択回路200は、図1Aおよび図1Bに関して前述した選択回路110として用いることができる。選択回路200は、入力データバスIDBに接続されたデータレジスタ200Rと、データレジスタ200Rおよび制御信号バスCTRLBに接続された複数のN個のマルチプレクサM1~MNとを有する。
データレジスタ200Rは、入力データバスIDBに接続された第1組の端子(図示せず)を備えており、各入力データ要素A1~ANのHビットを含むビットデータを受け取り、一時的に記憶するように構成されている。種々の実施形態において、データレジスタ200Rは、動作時に、ビットデータを並列または直列に受信するように構成されている。データレジスタ200Rは、マルチプレクサM1~MNに接続された第2の端子(図示せず)を備えており、動作時には、入力データ要素A1~ANのそれぞれのHビットを、図2に示すように、A11―A1H、A21―A2H、AN1―ANHとしてマルチプレクサM1~MNに出力するように構成されている。
マルチプレクサM1~MNは、入力データ要素A1~ANに対応しており、各マルチプレクサM1~MNは、対応するデータ要素A1~ANのHビットを受け付けるための端子(ラベルなし)の組を含む。マルチプレクサM1―MNは、対応する出力端子M1O―MNOを備えており、これにより、制御信号バスCTRLBに入力された1つ以上の制御信号CTRLに応じて、対応する出力端子O1―ON上の対応するデータ素子A1―ANの選択されたk番目のビットA1k―ANkを出力するように構成されている。マルチプレクサM1~MNと1つ以上の制御信号CTRLとは、動作時に、各データ要素A1~ANの同じk番目のビットを同時に出力することにより、上述したように、カウンタkに基づいてk番目のビットA1k~ANkの組を生成するように構成されている。
これにより、選択回路200は、選択回路110および図1Aおよび図1Bに示した動作を行うことができるように構成されている。選択回路200を選択回路110として備えることにより、各メモリ回路100A、100Bは、上述した効果を実現することができる。
図3Aおよび図3Bは、各メモリセル300A、300Bを示すダイヤグラムである。メモリセル300A(以下、ビットセル300Aともいう)は、上述したメモリセルBCXの1つ以上のインスタンスとして用いることができ、メモリセル300B(本実施形態ではビットセル300Bともいう)は、上述したメモリセルBX2の1つ以上のインスタンスとして用いることができる。
なお、各メモリセル300A、300Bは、説明のために簡略化されている。種々の実施形態において、メモリセル300A、300Bの一方または両方は、図3Aおよび図3Bに示した動作に加えて、以下の動作を行うように配置されている。種々の実施形態において、メモリセル300Aまたは300Bは、1つまたは複数のワード線、1つまたは複数のビット線および/または1つまたは複数のデータ線(図示せず)と電気的に接続されることにより、後述する重みデータWTmnおよびWTm(n+1)が格納および/またはアクセスされる図1Aおよび図1Bに関して前述したI/O回路130に接続される。
各メモリセル300A、300Bは、乗算器MUL1に接続されたストレージユニットSU1を有する。また、メモリセル300Bは、乗算器MUL2に接続されたストレージユニットSU2と、乗算器MUL1およびMUL2のそれぞれに接続された加算器ADDとを有する。
ストレージユニットSU1は、重みデータ要素WTmnを記憶し、ストレージユニットSU2は、重みデータ要素WTm(n+1)を記憶する。本実施形態では、指標Mは、列数C1~CMのうちの1つに対応し、指標Nは、メモリアレイ120A、120Bのデータ列数Nの1つに対応する。
各ストレージユニットSU1、SU2は、1ビット又は複数ビットからなる各重みデータ要素WTmn又はWTm(n+1)を記憶するように構成されている。いくつかの実施形態では、ストレージユニットSU1またはSU2の一方または両方は、対応する重みデータ要素WTmnまたはWTm(n+1)を1から16までのビット数を含むWTm(n+1)として記憶するように構成されている。いくつかの実施形態では、ストレージユニットSU1またはSU2の一方または両方は、対応する重みデータ要素WTmnまたはWTm(n+1)を4から8までのビット数を含むWTm(n+1)として記憶するように構成されている。いくつかの実施形態では、ストレージユニットSU1またはSU2の一方または両方は、対応する重みデータ要素WTmnまたはWTm(n+1)をプログラマブルなビット数で記憶するように構成されている。
乗算器MUL1、MUL2は、それぞれ、所定の乗算器MUL1またはMUL2が接続された対応する記憶ユニットSU1またはSU2と同数のビットを含む乗算計算を行うように構成されている。乗算器MUL1は、ストレージユニットSU1から重みデータ要素WTmnと、図3A及び図3Bに示すk番目のビットA1k~ANkのうちの最初の1つをAnkとし、積データ要素Pmnとして出力するように構成されている。
本開示の実施形態では、メモリセル300AをメモリセルBCXとして使用し、積データPmnを表示器m及びnに基づいて作成したものが、上述した積データ要素P11~PMNのうち、図1Aについて説明したものに相当する。これにより、メモリセル300Aは、メモリセルBCXおよび図1Aについて上述した動作を行うことができるように構成されている。
乗算器MUL2は、ストレージユニットSU2からの重みデータWTm(n+1)と、図3Bに示す第kビットA1k-ANkのうちの第A(n+1)kとを入力し、積データPm(n+1)として出力するように構成されている。
加算器ADDは、対応する乗算器MUL1またはMUL2のビット数を有する各積データPmn、Pm(n+1)を受信して加算計算を行い、各積データ要素Pmn、Pm(n+1)のビット数よりも1ビット多い和データ要素として出力するように構成されている。インジケーターLは、メモリアレイ120BのメモリセルBX2の行数Lの1つに対応する。
幾つかの実施形態では、例えば、メモリセル300BがメモリセルBX2として用いられる場合、インジケータm及び1に基づく和データSmlは、図1Bに関して前述した和データS11-SMLのいずれかに対応する。これにより、メモリセル300Bは、メモリセルBX2及び図1Bについて上述した動作を行うことができるように構成されている。
メモリセル300Aを1つ以上のメモリセルBCXとし、または、メモリセル300Bを1つ以上のメモリセルBX2とすることにより、対応するメモリ回路100Aまたは100Bは、上述した効果を実現することができる。
図4は、実施形態に係る加算器ツリー400を示す図である。加算器ツリー400は、図1A及び図1Bに関して前述した加算器ツリー122として用いることができる。加算器ツリー400は、加算器ADD1~ADDuの層数uを含む。
第1層の加算器は、合計データSUM11-SUM1Uの数U(=2U)を入力とする加算器ADD1を有し、第1層は、加算器ADD1の数U/2を有する。例えば、メモリアレイ120AのC1―CM列の加算ツリー122として加算ツリー400を用いた場合、図1Aで説明したように、SUM11―SUM1Uは、対応する列のメモリセルBCXが出力する複数の積データ要素、例えば、C1列が出力する積データ要素P11―P1Nに対応する。例えば、メモリアレイ120BのC1―CM列の加算ツリー122として加算ツリー400を用いた場合、図1Bで説明したように、SUM11―SUM1Uは、対応する列のメモリセルBX2が出力する複数のSUMデータ要素、例えば、C1列が出力するSUMデータ要素S11―S1Lに対応する。
各加算器ADD1は、合計データ要素SUM11~SUM1Uのうち、対応する受信組の合計データ要素、例えば、SUM11、SUM12に対して加算計算を行い、合計データ要素SUM21―SUM2(U/2)として出力するように構成されている。加算器ADD1は、上述した第1ビット数の合計データ要素SUM11―SUM1U、図1Bについて上述した図1Aまたは複数の合計データ要素S11~SMLのそれぞれについて上述した積データ要素P11~PMNのビット数を入力し、第1ビット数よりも大きい第2ビット数を含む出力合計データ要素SUM21―SUM2(U/2)を出力するように構成されている。
加算器の第2層は、加算器ADD2の数U/4を含む。加算器ADD2は、合計データ要素SUM21~SUM2(U/2)のうち、対応する受信組の合計データ要素、例えば、SUM21、SUM22に対して加算計算を行い、合計値を合計データ要素SUM31~SUM3(U/4)として出力するように構成されている。加算器ADD2は、第2ビット数を含む合計データ要素SUM21~SUM2(U/2)と、第2ビット数よりも大きい第3ビット数を含む出力合計データ要素SUM31~SUM3(U/4)とを入力するように構成されている。
最終層の加算器は、前段の加算器から入力された1対の加算データSUMu1、SUMu2を加算して加算データSDmとして出力する1つの加算器ADDuを有する。加算器ADDuは、第4のビット数を含む加算データSUMu1、SUMu2を入力し、第4のビット数よりも1つ大きい第1のビット数プラスuの第5のビット数を含む加算データSDmを出力するように構成されている。例えば、加算ツリー122として加算ツリー400を用いた場合、加算データSDmは、図1Aおよび図1Bで説明した加算データSD1-SDMのいずれかに相当する。
幾つかの実施形態において、加算器ツリー400は、図4に示す第2層と最終層との間に、上述した第1層、第2層、最終層の構成から一貫して構成される加算器の1つ以上の加算層を含み、動作時には、受信した合計データSUM11-SUM1Uに基づいて合計データSDmを生成する。いくつかの実施形態では、加算器ツリー400は、加算器ADD2の第2層を含まないため、合計u=2層を含み、動作時には、合計U=4個の合計データSUM11-SUM1Uに基づいて、合計データSDmが生成される。
幾つかの実施形態において、加算器ツリー400は、2から9までの総レイヤ数を含む。幾つかの実施形態において、加算器ツリー400は、4から7までの総レイヤ数を含む。
これにより、加算ツリー400は、加算ツリー122と、図1A及び図1Bとに対して、上述した動作を行うことができるように構成されている。加算器ツリー400を加算器ツリー122とすることにより、各メモリ回路100A、100Bは、上述した効果を実現することができる。
図5は、アキュムレータ500を示すダイヤグラムである。アキュムレータ500は、図1Aおよび図1Bに関して前述したアキュムレータ140として用いることができる。アキュムレータ500は、データレジスタR1およびシフタSH1のそれぞれに接続された加算器ADDAを有する。また、シフタSH1は、加算器ADDA、データレジスタR1、シフタSH1が一括してフィードバック配置されるように、データレジスタR1に接続されている。
加算器ADDAは、図4について上述した加算データ要素SDmを受信するように構成されている。また、合計データ要素SDmは、積算データ要素SD1~SDMのうち、図1Aおよび図1Bに関して前述した積算データ要素SD1~SDMのいずれかに対応するものである。
加算器ADDAは、演算時に、シフタSH1から出力されるシフトデータSDEを入力し、シフトデータSDEと加算データSDmとに基づいて内部加算データIDEを生成する。データレジスタR1は、加算器ADDAから内部加算データIDEを受け取り、内部加算データIDEを格納し、格納した内部加算データIDEをシフタSH1および出力ポートOmに出力する。シフタSH1は、データレジスタR1から出力される記憶内部データIDEを入力し、記憶内部データIDEをMSB方向またはLSB方向に1ビットシフトしてシフトデータSDEを生成する。
これにより、アキュムレータ500は、制御信号バスCTRLB(図5に示せず)に入力される1つ以上の制御信号CTRLに応じて、蓄積されている内部加算データIDEを加算データSDmの並びごとに増加させる蓄積動作を行うように構成されている。これにより、複数の合計データSDmにわたって蓄積動作が実行されることにより、データレジスタR1に格納された内部データIDEが、複数の合計データSDmの部分和PSmとして出力ポートOmに出力される。
本開示の実施形態において、例えば、アキュムレータ140としてアキュムレータ500を使用し、出力ポートOmに出力される部分和PSmが、図1A、図1Bに関して前述した出力ポートO1~OMに出力される部分和PS1~PSMのいずれかに相当する。
これにより、アキュムレータ500は、アキュムレータ140および図1A及び図1Bについて上述した動作を行うことができるように構成されている。アキュムレータ500をアキュムレータ140とすることにより、各メモリ回路100A、100Bは、上述した効果を実現することができる。
図6は、メモリアレイ120A又は120B(120A/120B)の一部を示すダイヤグラムである。図6は、図1で説明した複数のメモリセルBCX、BX2(BCX/BX2)と加算ツリー122の例を示している。図6に示す実施形態では、メモリアレイ120A/120Bも、メモリセルBCX/BX2と加算ツリー122との間に接続されたマルチプレクサMAを含む。なお、図6は、説明のために簡略化したものである。
マルチプレクサMAは、複数のメモリセルBCX/BX2のうちの1つ以上のメモリセルBCX/BX2を選択的に加算ツリー122に接続することにより、図1Aおよび図1Bに関して前述したメモリセルBCX/BX2、例えば、積データ要素P11―PMNまたは合計データ要素S11―SMLから出力されたデータ要素を、制御信号バスCTRLB上で受信した1つ以上の制御信号CTRLに応じた加算ツリー122に選択的に伝播させる(図6に示せず)。種々の実施形態において、メモリセルBCX/BX2は、同一のカラムC1~CMに含まれるか、または、別々のカラムC1~CMに含まれ、加算ツリー122は、2つのカラムC1~CM間で共有される。
以上の構成により、メモリ回路100Aまたは100Bは、複数のメモリセルBCX/BX2間で共有される少なくとも1つの加算器ツリー122を含むメモリアレイ120A/120Bを備える。これにより、メモリ回路100A又は100Bは、複数のメモリセル間で共有される少なくとも1つの加算器ツリーを含まない場合に比べて、より小さい領域を用いて部分和を生成することができる。
図7A及び図7Bは、メモリ回路100A又は100B(100A/100B)の一部を示すダイヤグラムである。なお、図7Aおよび図7Bでは、2つ以上の部分和PS1~PSMを組み合わせた例を示しているが、説明のために簡略化して示している。
図7Aに示す実施形態では、メモリ回路100A、100Bは、図1A、図1Bで説明したメモリアレイ120A、120Bと、2つのアキュムレータ140とを有する。図7Aに示す実施形態では、第1回目のアキュムレータ140の出力ポートO2と第2回目のアキュムレータ140とが接続されており、動作時には、第2回目のアキュムレータ140によって部分和PS2が受信され、出力ポートO1から出力される部分和PS1に含まれる。幾つかの実施形態において、2つのアキュムレータ140は、例えば、制御信号バスCTRLB(図7A又は図7Bに示せず)に入力される制御信号CTRLの1つ以上に応じて、部分和PS1に部分和PS2を含めずに、選択的に部分和PS1、PS2を出力するように構成されている。
図7Bに示す実施形態では、メモリ回路100A、100Bは、図1A、図1Bで説明したように、入力データバスIDB上の入力データA1-ANを入力し、対応する部分和PS1-PS4を出力するカラムC1-C4(対応するアキュムレータ140を含む)を有する。また、図7Bに示す実施形態では、メモリ回路100A/100Bは、各部分和PS1-PS4を入力し、各部分和PS1-PS4に基づいて合成部分和OSUMを生成する加算器ADDSUMを有する。メモリ回路100A、100Bは、例えば、制御信号バスCTRLBに入力される制御信号CTRLの1つ以上に応じて、部分和OSUMを出力せずに、部分和PS1-PS4を選択的に出力するように構成されている。
図7Aおよび図7Bに示す非限定的な例では、動作時において、メモリ回路100A/100Bから出力される部分和PS1またはOSUMは、入力データ要素A1-ANと、2以上のカラムC1-CMのメモリセルBCX/BX2とを組み合わせたものである。これにより、メモリセルBCX/BX2に格納された重みデータ要素の結合ビットに基づいて部分和PS1またはOSUMが生成されるので、1つのカラムC1-CMに結合された入力データ要素A1-ANに基づいて部分和PS1またはOSUMが生成される場合に比べて、部分和PS1またはOSUMの解像度または精度が向上する。
いくつかの実施形態では、メモリセルBCX/BX2は、合計4ビットの重みデータ要素を含み、図7Aに示す実施形態では、合計8ビットの重みデータ要素に基づいて部分和PS1が出力され、図7Bに示す実施形態では、合計16ビットの重みデータ要素に基づいて部分和OSUMが出力される。
なお、図7Aおよび図7Bに示す実施形態は、説明のための例示である。本実施形態では、記憶回路100A、100Bは、記憶された重みデータに基づいて1つ以上の部分和を生成するように構成されているので、重みデータに基づいて部分和を生成しない場合と比較して、解像度を向上させることができる。
図8は、メモリ回路動作電圧VDDを示すダイヤグラムである。図8に示す実施形態において、動作電圧VDDは、図1で説明したように、メモリ回路100A又は100Bが動作する電源ドメインの電源電圧である。動作電圧VDDは、0V、VDD1、VDD2の3つの電源電圧レベルを含み、電源電圧レベルVDD1は、電源電圧レベルVDD2よりも大きい。なお、図8に示す電圧レベル及びタイミング関係、例えば、相対的な時間及び/又は大きさ、並びにシーケンスは、説明のための例示であって、これらに限定されるものではない。
電源電圧レベル0Vは、メモリ回路動作を行わないパワーダウンモードを示す。本実施形態では、メモリアレイ120Aまたは120Bは、動作電圧VDDが電圧レベル0Vである1つ以上の期間にわたって、重みデータ要素WTmnおよび/またはWTm(n+1)が保持されるように、不揮発性メモリセルを含むストレージユニットSU1、SU2を含む。
電源電圧レベルVDD1は、1回以上のライト動作においてメモリセルBCXおよび/またはBX2に1つ以上の重み要素WTmnおよび/WTm(n+1)が格納されているI/Oモードおよび/または1回以上のリード動作においてアクセスされる。
電源電圧レベルVDD2は、図1Aおよび図1Bに関して前述したように1回または複数回の第2回の計算が行われる計算モードおよび/または方法900および方法1000について説明する。
図8に示す実施形態では、電源電圧レベルVDD1よりも低い電源電圧レベルVDD2でインメモリ演算を行うことで、I/Oモードと同じ電圧レベルの演算モードでインメモリ演算を行う場合に比べて、電力使用量を低減する。
図9は、メモリ回路の動作方法900のフローチャートである。方法900は、例えば、図1A及び図1Bに関して前述したメモリ回路100A又は100Bなどのメモリ回路を用いることができる。
なお、図9に示した方法900の動作のシーケンスはあくまで一例であり、方法900の動作は、図9に示した動作と同時または異なるシーケンスで実行することができる。いくつかの実施形態では、図9に示した動作の前、間、および/または後に、図9に示した動作以外の動作が行われる。いくつかの実施形態において、方法900の動作は、センサ、RFデバイス、プロセッサ、ロジック、信号処理回路などのICの動作方法の一部である。様々な実施形態において、方法900の1つ以上の動作は、図10を参照して後述する方法1000のサブセットである。
方法900は、図1A-図5を参照して説明したように、m番目の列C1-CMについて部分和PS1-PSMのインスタンスPSmを算出する部分和算出の一例である。図9に示す実施形態では、各入力データ要素A1-ANのHビット毎にカウンタkが巡回される。カウンタkの各値では、加算データSD1-SDMの各インスタンスに対応する加算データPkが、対応するk番目のビットと重みデータWmnとのN個の積の和として算出される。部分和PSmは、後述するように、データ要素Pkを累積することにより生成される。
ステップ910では、カウンタkを0に初期化する。幾つかの実施形態では、初期化カウンタkは、図1A~図5に関して前述した制御回路150を用いて構成される。
幾つかの実施形態では、カウンタkをゼロに初期化するとは、1つ以上のデータレジスタの内容をゼロにすることを含む。本実施形態では、初期化カウンタkを0にすることは、図5およびアキュムレータ500で説明したように、データレジスタR1の内部データIDEを0にすることを含む。
ステップ920において、カウンタkは1増加し、加算データ要素Pkは、カウンタkの値に基づいて生成される。加算データ要素Pkの生成は、n=1からNまで定義された範囲にわたって、メモリアレイ120Aまたは120B内のn行のデータのそれぞれに対応する積データ要素を加算することを含む。各N番目の積データ要素は、入力データ要素のk番目のビットAnkである。対応する重みデータ要素WmnまたはWm(n+1)を掛けた、カウンターnおよびkに対応します。結果として得られる積データ要素をn=1からNの範囲で合計すると、合計データ要素SD1-SDMのインスタンスに対応する合計データ要素Pkが生成されます。
いくつかの実施形態では、合計データ要素Pkの生成は、メモリ回路100Aおよび図1A-図5で説明したように、列C1~CMのm番目の1つに対応する加算器ツリー122を使用して、メモリセルBCXによって出力された積データ要素Pmnをn=1からn=Nの範囲にわたって合計することを含む。いくつかの実施形態では、合計データ要素Pkを生成することは、メモリセルBX2を使用して、l=1からl=Lの範囲にわたって合計データ要素Sm1~Sm1を生成すること、および列C1~CMのm番目の1つに対応する加算器ツリー122を使用することを含む。メモリ回路100Bおよび図3に関して上で論じたように、メモリセルBX2によって出力された合計積データ要素Sm1~Sm1を合計する。
ステップ930において、部分和データ要素Okは、カウンタkの値に基づいて生成され、部分和データ要素Okは、カウンタkが値1のときに初期化部分和データ要素Okから合算データ要素Pkの第1の値までの初期化部分和データ要素Okを含み、カウンタkが1以外の値である場合には、前回のデータ要素Ok(Ok―1)の値をシフトして加算データ要素Pkの現在値を加算する。
部分和データ要素Okの前回値をシフトさせることは、前回値を有意ビットだけ増加または減少させることに相当する。ここで、カウンタkを1からHにインクリメントすることは、入力データA1-ANの上位ビットを増加させることに相当し、部分和データOkの前回値をシフトさせることは、前回値を1ビット増加させること、すなわち、前回値を2倍することに相当する。ここで、カウンタkを1からHにインクリメントすることは、入力データA1-ANの有効ビットを減少させることに相当し、部分和データOkの前回値をシフトさせることは、前回値を1ビットだけ減少させること、すなわち、前回値を2で除算することに相当する。
幾つかの実施形態では、部分和データ要素Okを生成するには、データレジスタR1に対応する総和データ要素SD1~SDMの第1のインスタンスを内部データ要素IDEとしてデータレジスタR1に格納し、シフタSH1を用いて内部データ要素IDEをシフトし、それ以降の総和データ要素SD1~SDMを図1A―図5に関して前述したようにシフタデータ要素SDEに追加することにより、部分和データ要素PS1―PSMを対応する総和データ要素SD1―SDMの第1のインスタンスに設定する。
ステップ940では、カウンタKと数Hとを比較し、カウンタkが数H未満であれば、方法900はステップ920に戻り、カウンタkが数Hであれば、方法9000はステップ950に進む。
ステップ950では、部分和データPSmを、カウンタk=Hに対応する部分和データOkの最終値に設定する。いくつかの実施形態では、ここで、H=4であり、カウンタkがインクリメントされることは、入力データ要素A1-ANの上位ビットに対応し、部分和データ要素PSmを部分和データ要素Okの最終値に設定することは、
ここで、カウンタk=1はLSB及び係数20に対応し、カウンタk=4はMSB及び係数23に対応する。
幾つかの実施形態では、部分和データPSmを部分和データOkの最終値に設定することは、図1A-図5を参照して説明したように、第m番目の部分和データPS1-PSMを対応する第M番目の出力ポートO1-OMに出力することを含む。
メモリ回路100Aまたは100Bを用いて、方法900の動作の一部または全部を実行することにより、1回の計算に基づいて部分和を生成することにより、メモリ回路100Aおよび100Bについて上述した効果を実現することができる。
図10は、メモリ回路を動作させる方法1000のフローチャートである。方法1000は、図1Aおよび図1Bに関して前述したメモリ回路、例えば、メモリ回路100Aまたは100Bとして用いることができる。
なお、図10に示した方法1000の動作のシーケンスは、説明のためのものであり、図10に示したシーケンスとは異なるシーケンスで方法1000の動作を実行することができる。いくつかの実施形態では、図10に示した動作の前、間、および/または後に、図10に示した動作以外の動作が行われる。方法1000の動作は、センサ、RFデバイス、プロセッサ、ロジック、信号処理回路などのICの動作方法の一部である。いくつかの実施形態では、方法1000の動作は、CNNなどのニューラルネットワークを動作させる方法の一部である。
ステップ1010では、メモリセルの列の各メモリセルに第1の重みデータ要素を格納する。第1の重みデータ要素をメモリセルの列の各メモリセルに格納することは、複数列のメモリセルに重みデータを格納することを含む。種々の実施形態において、第1の重みデータ要素をメモリセルの列の各メモリセルに格納する場合には、I/O回路130を用いて、図1A~図5を参照して説明したように、カラムC1~CMのメモリセルBCXまたはBX2に、重みデータWTmnおよび/またはWTm(n+1)を格納する。
幾つかの実施形態において、メモリセル列の各メモリセルに第1の重みデータ要素を格納することは、ステップ1020-1070の一部または全部が実行される第2の電源電圧レベルよりも高い第1の電源電圧レベルでメモリ回路を動作させることを含む。本実施形態では、図8で説明したように、メモリ回路を第1の電源電圧レベルで動作させることは、メモリ回路を電源電圧レベルVDD1で動作させることを含み、メモリ回路を第2の電源電圧レベルで動作させることは、メモリ回路を電源電圧レベルVDD2で動作させることを含む。
ステップ1020では、選択回路から、複数の入力データ要素の各入力データ要素のkビットのkビットの組を同時に出力する。幾つかの実施形態では、複数の入力データ要素の各入力データ要素の第kビットのHビットの組を同時に出力するとは、図1A~図5を参照して説明したように、入力データ要素A1~ANのkビットの組を、選択回路110から出力することを含む。
幾つかの実施形態において、複数の入力データ要素の各入力データ要素のHビットのkビットのセットを同時に出力するのは、LSBからMSBに、または、MSBからLSBにインクリメントすることにより、第kビットの組を順次出力する部分である。
幾つかの実施形態では、複数の入力データ要素の各入力データ要素のk番目のビットの集合を同時に出力することは、選択回路において複数の入力データ要素を受け付けることを含む。幾つかの実施形態では、複数の入力データ要素の各入力データ要素のk番目のビットの集合を同時に出力することは、1つ以上のデータレジスタに複数の入力データ要素を選択回路に格納することを含む。幾つかの実施形態では、複数の入力データ要素の各入力データ要素のk番目のビットの集合を同時に出力することは、図1A及び図1Bに関して前述した入力データ要素A1~ANを受け付けて格納することを含む。幾つかの実施形態では、複数の入力データ要素の各入力データ要素のk番目のビットの集合を同時に出力すると、図2に関して前述した選択回路200を用いる。
幾つかの実施形態では、複数の入力データ要素の各入力データ要素のHビットの第kビットの組を同時に出力することは、図1A~図5に関して前述した制御回路150により生成された1つ以上の制御信号、例えば、1つ以上の制御信号CTRLに対応して生成して応答することを含む。
幾つかの実施形態では、複数の入力データ要素の各入力データ要素のHビットの第kビットの集合を同時に出力することは、図9に関して後述する方法900の一部又は全部を行うことを含む。
ステップ1030では、第kビットのセットをメモリセルの列で受信する。種々の実施形態において、メモリセルの列におけるk番目のビットのセットを受けるとは、図1A~図5に関して前述したメモリセルBCX、BX2の列のk番目のビットA1k― ANkのセットを受けることを含む。
幾つかの実施形態では、メモリセルの列のk番目のビットのセットを受信すると、複数の列の各列のk番目のビットのセットを受信する。複数のカラムの第kビットのセットを受信するとは、図1A~図5を参照して説明した各カラムC1~CMのk番目のビットA1k~ANkのセットを受信することを含む。
幾つかの実施形態では、メモリセルの列のk番目のビットのセットを受けると、図9に関して、以下に説明する方法900の一部又は全部が行われる。
ステップ1040では、メモリセルの各メモリセルを用いて、対応する入力データ要素のk番目のビットに、メモリセルに格納されている第1の重みデータ要素を乗算することにより、対応する第1の積データ要素を生成する。種々の実施形態では、メモリセルを用いて、対応する入力データ要素のk番目のビットにメモリセルに格納された第1の重みデータ要素を乗算することにより、図1A~図5に関して前述したように、k番目のビッA1k~ANkに第1の重みデータ要素を乗算するメモリセルBCXまたはBX2を用いる。
幾つかの実施形態では、対応する入力データ要素のk番目のビットに、メモリセルに格納されている第1の重みデータ要素を乗算することにより、対応する第1の積データ要素に重みデータ要素WTmnを乗算することにより、メモリセル300A、300B及び図3A及び図3Bについて上述したように、積データ要素Pmnを生成する。
幾つかの実施形態では、複数のデータ要素のうち対応する入力データ要素のk番目のビットに第1の重みデータ要素を乗算するメモリセルの列の各メモリセルを用いて、複数のデータ要素のうちの対応する他の入力データ要素のk番目のビットにメモリセルに格納された第2の重みデータ要素を乗算することにより、第2の積データ要素を生成し、第2の積データ要素に第1の積データ要素を加算して和データ要素を生成する。
幾つかの実施形態では、複数のデータ要素のうちの対応する他の入力データ要素のk番目のビットに、メモリセルに格納されている第2の重みデータ要素を乗算することにより、第2の積データ要素を生成し、第2の積データ要素に第1の積データ要素を加算して合計データ要素を生成することにより、ビットA(n+1)kに重みデータ要素WTm(n+1)を乗算することにより、積データ要素Pm(n+1)を生成し、生成された積データ要素Pmnを積データ要素Pm(n+1)に加算することにより、メモリセル300B及び図3Bについて上述した和データ要素単位を生成する。
幾つかの実施形態では、メモリセルの列を用いて、対応する入力データ要素のk番目のビットと、メモリセルに格納されている第1の重みデータ要素とを乗算することにより、複数の列のメモリセルを用いて、図1A~図5に関して前述した、例えばC1―CM列を用いて、対応する入力データ要素のk番目のビットと、複数の第1の重みデータ要素の対応する第1の重みデータ要素とを乗算する。
幾つかの実施形態では、メモリセルの列を用いて、対応する入力データ要素のk番目のビットとメモリセルに格納されている第1の重みデータ要素とを乗算することにより、図1A~図5に関して前述した制御回路150により生成された1つ以上の制御信号、例えば、1つ以上の制御信号CTRLを生成して応答する。
幾つかの実施形態では、メモリセルの列を用いて、対応する入力データ要素のk番目のビットと、メモリセルに格納されている第1の重みデータ要素とを乗算することにより、図9について、以下に説明する方法900の一部又は全部が行われる。
ステップ1050では、各第1商品データ要素に基づいて、加算ツリーを用いて、集計データ要素を生成する。幾つかの実施形態では、加算器ツリーを用いて、各第1の積データに基づいて加算データ要素を生成する場合、加算器ツリー122を用いて、図1A~図5に関して前述した積データPmn及び/又はPm(n+1)に基づいて、加算データ要素SD1~SDMのインスタンスを生成する。
幾つかの実施形態では、加算器ツリーを用いて、積算データ要素を生成する場合には図4について上述した加算器ツリー400を用いる。
幾つかの実施形態では、加算器ツリーを用いて、加算データ要素を生成する場合、複数の加算器ツリーを用いて、複数の加算データ要素、例えば、及び、図1A―図5を参照して説明した加算データ要素SD1~SDMを生成する。
幾つかの実施形態では、加算器ツリーを用いて加算データ要素を生成することは、加算器ツリーにおいて第1の積データ要素を受信することを含む。本実施形態では、加算器ツリーにおける第1の積データ要素の受信には、図1A~図5を参照して説明したように、加算器ツリー122における積データ要素P11~PMNの受信が含まれる。
幾つかの実施形態では、加算器ツリーを用いて加算データ要素を生成することは、加算器ツリーにおける和データ要素を受信することを含む。加算器ツリーにおける和データ要素の受信には、図1A~図5に関して前述したように、加算器ツリー122で和データ要素S11―SMLが入力されることがある。
本開示の実施形態では、加算ツリーを用いて加算データ要素を生成するとは、例えば、図6で説明したマルチプレクサMAを用いて、選択されたメモリセルに加算ツリーを接続することを含む。
幾つかの実施形態では、加算器ツリーを用いて、各第1の積データに基づいて合算データ要素を生成する場合には、図1A~図5に関して前述した制御回路150により生成された1つ以上の制御信号、例えば、1つ以上の制御信号CTRLを生成して応答することが挙げられる。
幾つかの実施形態では、加算器ツリーを用いて、第1の積データに基づいて集計データ要素を生成する場合には、図9について、以下に説明する方法900の一部又は全部を行う。
ステップ1060では、加算データ要素に基づいて、アキュムレータを用いて部分和を生成する。幾つかの実施形態では、積算データ要素に基づいて部分和を生成するアキュムレータを用いて、図1A~図5を参照して説明したように、積算データ要素SD1~SDMに基づいて部分和PS1―PSMを生成する。
いくつかの実施形態では、アキュムレータを用いて部分和を生成するステップは、データレジスタに格納され、シフタによりシフトされた第2の加算データ要素に第1の加算データ要素を加算することを含む。幾つかの実施形態では、第2の加算データ要素に第1の加算データ要素を加算することは、第kのビットの組を順次出力する選択回路に同期する。幾つかの実施形態では、アキュムレータを用いて部分和を生成する場合には、アキュムレータ500を用いて、図5について上述したように部分和PSmを生成する。
幾つかの実施形態では、加算データ要素に基づいて部分和を生成するためにアキュムレータを用いるとは、複数の加算器を用いて複数の部分和データ要素、例えば、図1A-図5を参照して説明した部分和データ要素PS1-PSMを生成することを含む。
幾つかの実施形態では、複数のアキュムレータを用いて複数の部分和を生成する場合、第1のアキュムレータを用いて、第2のアキュムレータで生成された第2の部分和に基づいて第1の部分和を生成し、第1のアキュムレータ140を用いて、第1のアキュムレータ140の第1のインスタンスを用いて、図7Aについて上述したように、部分和PS2に基づいて部分和PS1を生成する。
幾つかの実施形態では、複数のアキュムレータを用いて複数の部分和を生成する場合、複数の加算器で生成された複数の部分和に基づいて部分和を生成し、加算器ADDSUMを用いて、図7Bについて上述したように、部分和PS1―PS4に基づいて部分和OSUMを生成する。
幾つかの実施形態では、積算データ要素に基づいて部分和を生成するアキュムレータを用いて、図1A~図5に関して前述した制御回路150により生成された1つ以上の制御信号、例えば、1つ以上の制御信号CTRLを生成して応答する。
幾つかの実施形態では、積算データ要素に基づいて部分和を生成するアキュムレータを用いて、図9について、以下に説明する方法900の一部又は全部を行う。
ステップ1070では、ステップ1010-1060の一部または全部が繰り返される。なお、ステップ1010-1060の一部又は全部を繰り返すとは、ステップ1010-1060の一部又は全部を同期して実行することを含む。なお、ステップ1010-1060の一部または全部を繰り返すことは、例えば、図1A-図9で説明したカウンタkをインクリメントすることを含む。ステップ1010-1060の一部または全部を繰り返すことは、例えば、図1A-図5を参照して説明したように、制御回路150を用いて制御信号CTRLを生成することを含む。
いくつかの実施形態では、ステップ1010-1060の一部または全部が繰り返されることは、図9に関して前述した方法900の一部または全部が実行されることを含む。
幾つかの実施形態では、ステップ1010~1060の一部又は全部を、加算器を用いて加算データ要素に基づいて部分和を生成し、加算器140を用いて、図1A~図5を参照して説明したように、積算データ要素SD1~SDMのH個のインスタンスに基づいて部分和PS1―PSMを生成する。
幾つかの実施形態では、ステップ1010-1060の一部または全部を繰り返すことにより、選択回路が出力するk番目のビットの組と、対応する第1重みデータ要素とを順次乗算して、複数の第1積データ要素、例えば、図3Aおよび図3Bに関して前述した第1積データ要素Pmnを生成する。
いくつかの実施形態では、ステップ1010-1060の一部または全部を繰り返すことにより、選択回路が出力したk番目のビットの組と、対応する第2重みデータ要素とを順次乗算して、複数の第2積データ要素、例えば、図3Bに関して前述した第2積データ要素Pm(n+1)を生成する。
幾つかの実施形態では、ステップ1010―1060の一部又は全部を繰り返すことにより、加算器ツリーを用いて、複数の第1の積データに基づいて、さらに、複数の第2の積データに基づいて、H個の加算データを生成する。
幾つかの実施形態では、前記複数の入力データ要素は、最初に複数の入力データ要素の集合の複数の入力データ要素であり、前記複数の入力データ要素の集合の複数の入力データ要素の各々を順次受信し、前記複数の入力データ要素の集合の複数の入力データ要素の各々と単一の複数の重みデータ要素とに基づいて、一部または全部の部分和を生成する前記ステップ1010-1060の一部または全部を繰り返す。
方法1000の動作の一部または全部を実行することにより、メモリ内演算に基づいて部分和が生成され、メモリ回路100Aおよび100Bについて上述した効果が実現される。複数の入力データ要素と単一の複数の重みデータ要素との組の複数の入力データ要素のそれぞれに基づいて1つ以上の部分和を生成する実施形態では、単一の複数の重みデータ要素を複数回のメモリ内部分和演算に再利用しない手法に比べて、電力レベルがさらに低減される。
本開示の実施形態において、メモリ回路は、複数の入力データ要素を入力し、複数の入力データ要素の各入力データ要素のHビットのうちの選択されたkビットの組を出力する選択回路と、第1重みデータ要素を記憶する第1ストレージユニットと、第1重みデータ要素と選択されたkビットの組のうちの第1 kビットとに基づいて第1積データ要素を生成する第1乗算器と、を含むメモリセルの列と、第1積データ要素のそれぞれに基づいて加算データ要素を生成する加算ツリーと、を備える。幾つかの実施形態では、各重みデータ要素は、多ビットのデータ要素である。メモリセル列の各メモリセルは、第2の重みデータ要素を記憶する第2のストレージユニットと、第2の重みデータ要素と選択されたkビットの組の第2のkビットとに基づいて第2の積データ要素を生成する第2の乗算器と、第1の積データ要素と第2の積データ要素とから和データ要素を生成する加算器とを備え、加算器ツリーは、合計データ要素の各々に基づいて和データ要素を生成する。いくつかの実施形態では、前記総和データ要素は、H個の総和データ要素の1つであり、前記選択回路は、第1ビットから第Hビットまでの第kビットの組を順次出力し、前記加算ツリーは、順次出力される第kビットの組に基づいて、前記H個の総和データ要素のそれぞれを生成し、前記記憶回路は、前記H個の総和データ要素に基づいて部分和を生成するアキュムレータを含む。本発明の好ましい実施の形態においては、前記メモリ回路は、前記選択回路および前記アキュムレータが受ける1以上の制御信号を生成する制御回路を含み、前記選択回路に同期した前記部分和を生成し、前記k番目のビットの組を順次出力する。幾つかの実施形態では、メモリセルの列は、複数のメモリセルの列のうちの1つの列であり、各メモリセルの列は、複数のビットのHビットのうちの選択されたkビットの組が入力され、加算ツリーは、複数のメモリセルの列のうちの対応する列に接続された複数の加算ツリーのうちの1つの加算ツリーであり、アキュムレータは、複数の加算ツリーのうちの対応する加算ツリーに接続された複数のアキュムレータのうちの1つのアキュムレータであり、複数のアキュムレータのそれぞれは、複数の加算ツリーのうちの対応する加算ツリーによって生成されたh個の加算データ要素に基づいて、対応する部分和を生成する。幾つかの実施形態では、複数のアキュムレータのうちの少なくとも1つのアキュムレータは、複数のアキュムレータのうちの他のアキュムレータが生成した部分和に基づいて、対応する部分和を生成するように構成される。幾つかの実施形態では、第1ストレージユニットは、第1重みデータ要素の一部または全部を記憶するSRAMデバイスを含む。幾つかの実施形態では、メモリ回路は、各第1重みデータ要素を対応する第1ストレージユニットに記憶するI/O回路を含む。
本開示の実施形態において、メモリ回路の動作方法は、複数の入力データ要素の各入力データ要素のビット数Hのkビットの組をメモリセルの列に入力し、メモリセルの列の各メモリセルを用いて、複数のデータ要素の対応する入力データ要素のkビットと、メモリセルに記憶された第1重みデータ要素とを乗算して対応する第1積データ要素を生成し、加算ツリーを用いて、各第1積データ要素に基づいて加算データ要素を生成する。複数のデータ要素のうち対応する入力データ要素の第kビットと第1重みデータ要素とを乗算するメモリセル列の各メモリセルを用いることは、複数のデータ要素のうち対応する他の入力データ要素の第kビットとメモリセルに記憶された第2重みデータ要素とを乗算して第2積データ要素を生成し、第1積データ要素と第2積データ要素とを加算して和データ要素を生成することを含み、加算ツリーを用いて加算データ要素を生成することを含む。複数の入力データ要素の各入力データ要素のHビットのkビット目の組を順次出力する選択回路と、H個の総和データ要素に基づいて部分和を生成するアキュムレータとを備え、メモリセル列の各メモリセルを用いて、複数のデータ要素の入力データ要素のkビット目に第1重みデータ要素を乗算するステップは、kビット目に第1重みデータ要素を順次乗算することにより複数の第1積データ要素を生成し、加算ツリーを用いて、複数の第1積データ要素に基づいてH個の総和データ要素を生成するステップは、加算ツリーを用いて、複数の第1積データ要素に基づいてH個の総和データ要素を生成するステップを含む。幾つかの実施形態では、複数の入力データ要素の各々の第kビットを受け付けるステップは、複数列のメモリセルの各々の列において、第kビットの組を受け付け、第kビットに第1重みデータ要素を乗じるステップは、複数列のメモリセルの各々の列において、第kビットに第1重みデータ要素を乗じるステップは、複数列のメモリセルの各々の列において、第kビットにメモリセルに記憶された第1重みデータ要素を乗じることにより、対応する第1積データ要素を生成し、加算データ要素を生成するステップは、加算ツリーを用いて、複数の加算ツリーを用いて、第1積データ要素に基づいて複数の加算データ要素を生成し、部分和を生成するステップは、複数の加算器を用いて、対応するH個の加算データ要素に基づいて複数の部分和を生成するステップを含む。いくつかの実施形態では、複数の累積部を用いて複数の部分和を生成することは、第1累積部を用いて、第2累積部により生成された第2部分和に基づいて第1部分和を生成することを含む。前記アキュムレータを用いて前記部分和を生成するステップは、データレジスタに格納され、シフタによりシフトされた第2の和データ要素に第1の和データ要素を加算するステップと、前記第2の和データ要素に前記第1の和データ要素を加算するステップとを含み、前記第1の和データ要素と前記第2の和データ要素を加算するステップは、前記第kビットを順次出力する前記選択回路に同期する複数の入力データ要素の各入力データ要素のHビットのk番目のビットの組を、選択回路を用いて順次出力することは、LSBからMSBまでのk番目のビットの組を出力することを含む。第1の電源電圧レベルに基づいて、前記メモリセル列の各メモリセルに前記第1の重みデータ要素を格納するステップを含み、前記メモリセル列の各メモリセルを用いて前記第kビットに前記第1の重みデータ要素を乗算し、前記加算ツリーを用いて前記加算データ要素を生成するステップは、前記第1の電源電圧レベルよりも低い第2の電源電圧レベルに基づいていることを特徴とする。
本開示の実施形態において、メモリ回路は、Hビットからなる複数の入力データ要素について、選択されたkビットの組を複数列のメモリセルの各列の対応するメモリセルに順次出力する選択回路と、複数列のメモリセルの対応する列に接続された複数の加算ツリーと、複数の加算ツリーの対応する加算ツリーに接続された複数の累積加算器とを備える。メモリセルの各列のメモリセルは、選択されたkビットの組の対応するkビットとメモリセルに記憶された重みデータとに基づいて積データを生成する乗算器を含み、複数の加算ツリーの各加算ツリーは、順次出力されるkビットの組毎に、対応する列のメモリセルの各積データに基づいて加算データを生成し、複数の加算器の各アキュムレータは、複数の加算ツリーの対応する加算ツリーにより生成された加算データに基づいて部分和を生成する。いくつかの実施形態では、複数の加算ツリーのそれぞれの加算ツリーは、第1および第2の加算データ要素が入力され、第1のビット数を有する加算データ要素を出力する第1の加算器と、対応するメモリセルの列の積データ要素に基づいて、第1のビット数よりも1つ少ない第2のビット数を有する第1および第2の加算データ要素を出力する第2および第3の加算器とを含む。いくつかの実施形態では、複数の加算ツリーのうちの少なくとも1つの加算ツリーは、マルチプレクサを介して、複数のメモリセル列のうちの対応するメモリセル列に接続される。
以上、いくつかの実施形態の概要について説明したが、当業者であれば、本開示の態様をより好適に理解することができる。当業者であれば、本明細書に記載された実施形態と同様の目的を達成するために、他のプロセスや構造を設計、変更すること、および/または同一の効果を達成することは容易であることを理解されるべきである。当業者であれば、これらと均等な構成については、本発明の趣旨及び範囲から逸脱することなく、本発明の趣旨及び範囲から逸脱することなく、種々の変更、置換及び変更を加えることが可能であることを認識すべきである。
Claims (20)
- メモリ回路であって、前記メモリ回路は、
複数の入力データ要素を受信し、前記複数の入力データ要素の各入力データ要素のビット数がHであり、前記複数のデータ要素の各入力データ要素の前記H個のビットの選択されたk番目ビットのセットを出力するように構成される選択回路と、
第1の重みデータ要素を格納する第1のストレージユニットと、前記第1の重みデータ要素及び前記選択されたk番目ビットのセットの対応する第1のk番目ビットに基づいて第1の積データ要素を生成する第1の乗算器とを有するメモリセル列と、
各前記第1の積データ要素に基づいて加算データ要素を生成するように構成される加算器ツリーと、
を備える、前記メモリ回路。 - 各前記重みデータ要素は、マルチビットデータ要素である、
請求項1に記載のメモリ回路。 - 前記メモリセル列の各メモリセルは、
第2の重みデータ要素を格納するように構成される第2のストレージユニットと、
前記第2の重みデータ要素及び前記選択されたk番目ビットのセットの対応する第2のk番目ビットに基づいて第2の積データ要素を生成するように構成される第2の乗算器と、
前記第1および第2の積データ要素から合計データ要素を生成するように構成される加算器と、を更に備え、ここで、
前記加算器ツリーは、各前記合計データ要素に基づいて前記加算データ要素を生成するように構成される、
請求項1に記載のメモリ回路。 - 前記加算データ要素は、H個の加算データ要素のうちの1つの加算データ要素であり、
前記選択回路は、1番目のビットからH番目のビットまでのk番目ビットのセットを順に出力するように構成され、
前記加算器ツリーは、前記順に出力されたk番目ビットのセットに基づいて、前記H個の加算データ要素の各加算データ要素を生成するように構成され、
前記メモリ回路は、前記H個の加算データ要素に基づいて部分和を生成するように構成されるアキュムレータを更に備える、
請求項1に記載のメモリ回路。 - 前記選択回路及び前記アキュムレータによって受信された1つ以上の制御信号を生成するように構成される制御回路をさらに備え、これにより、前記メモリ回路は、前記選択回路がk番目ビットのセットを順に出力すると同時に、前記部分和を生成するように構成される、
請求項4に記載のメモリ回路。 - 前記メモリセル列は複数のメモリセル列のうちの一列であり、各メモリセル列は、各複数ビットのH個のビットの選択されたk番目ビットのセットを受信するように構成され、
前記加算器ツリーは、前記複数のメモリセル列の対応する列に接続された複数の加算器ツリーのうちの1つの加算器ツリーであり、
前記アキュムレータは、前記複数の加算器ツリーの対応する加算器ツリーに接続された複数のアキュムレータのうちの1つのアキュムレータであり、
前記複数のアキュムレータの各アキュムレータは、複数の加算器ツリーの前記対応する加算器ツリーによって生成されたH個の加算データ要素に基づいて、対応する部分和を生成するように構成される、
請求項4に記載のメモリ回路。 - 前記複数のアキュムレータの少なくとも1つのアキュムレータは、前記複数のアキュムレータのうちの他のアキュムレータによって生成された部分和に基づいて、前記対応する部分和を生成するように構成される、
請求項6に記載のメモリ回路。 - 各前記ストレージユニットは、前記第1の重みデータ要素の一部又は全部を格納するように構成されるスタティックランダムアクセスメモリ(SRAM)装置を備える、
請求項1に記載のメモリ回路。 - 各前記第1の重みデータ要素を前記対応する第1のストレージユニットに格納するように構成される入力/出力(I/O)回路をさらに備える、
請求項1に記載のメモリ回路。 - メモリ回路の操作方法であって、前記メモリ回路の操作方法は、
メモリセル列において、複数の入力データ要素の各入力データ要素のH個のビットのk番目ビットのセットを受信することと、
前記メモリセル列の各メモリセルを用いて、前記複数のデータ要素の対応する入力データ要素のk番目ビットに前記メモリセルに格納された第1の重みデータ要素をかけることにより、対応する第1の積データ要素を生成することと、
加算器ツリーを用いて、各前記第1の積データ要素に基づいて、加算データ要素を生成することと、
を含む、前記メモリ回路の操作方法。 - 前記メモリセル列の各メモリセルを用いて、前記複数のデータ要素の前記対応する入力データ要素のk番目ビットに前記第1の重みデータ要素をかけることは、
前記メモリセル列の各メモリセルを用いて、前記複数のデータ要素の他の対応する入力データ要素のk番目ビットに前記メモリセルに格納された第2の重みデータ要素をかけることと、
前記メモリセル列の各メモリセルを用いて、前記第1の積データ要素に前記第2の積データ要素を加えることにより合計データ要素を生成することと、を含み、ここで、
前記加算器ツリーを用いて各前記対応する合計データ要素に基づいて前記加算データ要素を生成する、
請求項10に記載のメモリ回路の操作方法。 - 選択回路を用いて、前記複数の入力データ要素の各入力データ要素のH個のビットのk番目ビットのセットを順に出力することと、
アキュムレータを用いて、H個の加算データ要素に基づいて部分和を生成することと、を更に含み、ここで、
前記メモリセル列の各メモリセルを用いて、前記複数のデータ要素の前記対応する入力データ要素のk番目ビットに前記第1の重みデータ要素をかけることは、各k番目ビットに前記第1の重みデータ要素を順にかけることを含み、これにより、複数の第1の積データ要素を生成し、
前記加算器ツリーを用いて各前記第1の積データ要素に基づいて前記加算データ要素を生成することは、前記加算器ツリーを用いて前記複数の第1の積データ要素に基づいてH個の加算データ要素を生成することを含む、
請求項10に記載のメモリ回路の操作方法。 - 複数の入力データ要素の各入力データ要素のk番目ビットのセットを受信することは、複数のメモリセル列の各メモリセル列のk番目ビットのセットを受信することを含み、
前記メモリセル列の各メモリセルを用いて、前記k番目ビットに前記第1の重みデータ要素をかけることは、前記複数のメモリセル列の各メモリセル列の各メモリセルを用いて、前記k番目ビットに前記メモリセルに格納された対応する第1の重みデータ要素をかけることを含み、これにより、前記対応する第1の積データ要素を生成し、
前記加算器ツリーを用いて前記加算データ要素を生成することは、複数の加算器ツリーを用いて、前記第1の積データ要素に基づいて複数の加算データ要素を生成することを含み、
前記アキュムレータを用いて前記部分和を生成することは、複数のアキュムレータを用いて対応するH個の加算データ要素に基づいて複数の部分和を生成することを含む、
請求項12に記載のメモリ回路の操作方法。 - 前記複数のアキュムレータを用いて複数の部分和を生成することは、第2のアキュムレータによって生成された第2の部分和に基づいて、第1のアキュムレータを用いて第1の部分和を生成することを含む、
請求項13に記載のメモリ回路の操作方法。 - 前記アキュムレータを用いて前記部分和を生成することは、データレジスタに格納され、シフターによってシフトされる第2の加算データ要素に第1の加算データ要素を加えることを含み、
前記第2の加算データ要素に前記第1の加算データ要素を加えると同時に、前記選択回路は前記k番目ビットのセットを順に出力する
請求項12に記載のメモリ回路の操作方法。 - 前記選択回路を用いて前記複数の入力データ要素の各入力データ要素の前記H個のビットの前記k番目ビットのセットを順に出力することは、最下位ビット(LSB)から最上位のビット(MSB)までのk番目ビットのセットを出力することを含む、
請求項12に記載のメモリ回路の操作方法。 - 前記第1の重みデータ要素を第1の電源電圧レベルに基づいて前記メモリセル列の各メモリセルに格納することを更に含み、ここで、
前記メモリセル列の各メモリセルを用いて前記k番目ビットに前記第1の重みデータ要素をかけることと、前記加算器ツリーを用いて前記加算データ要素を生成することとはそれぞれ前記第1の電源電圧レベルよりも低い第2の電源電圧レベルに基づくことである、
請求項10に記載のメモリ回路の操作方法。 - メモリ回路であって、前記メモリ回路は、
それぞれHビットを含む複数の入力データ要素について、選択されたk番目ビットのセットを、複数のメモリセル列の各メモリセル列の対応するメモリセルに順に出力するように構成される選択回路と、
前記複数のメモリセル列の対応するメモリセル列にそれぞれ接続された複数の加算器ツリーと、
前記複数の加算器ツリーの対応する加算器ツリーにそれぞれ接続された複数のアキュムレータと、を備え、ここで、
各メモリセル列の各メモリセルは、選択されたk番目ビットのセットの対応するk番目ビット及び前記メモリセルに格納された重みデータ要素に基づいて、積データ要素を生成する乗算器を有し、
前記複数の加算器ツリーの各加算器ツリーは、k番目ビットのセットを順に出力するごとに、前記対応するメモリセル列の各積データ要素に基づいて加算データ要素を生成するように構成され、
前記複数のアキュムレータの各アキュムレータは、前記複数の加算器ツリーの対応する加算器ツリーによって生成された前記加算データ要素に基づいて部分和を生成するように構成される、前記メモリ回路。 - 前記複数の加算器ツリーの各加算器ツリーは、
第1及び第2の合計データ要素を受信し、第1のビット数を有する前記加算データ要素を出力するように構成される第1の加算器と、
前記対応するメモリセル列の前記積データ要素に基づいて、前記第1のビット数より1つ少ない第2のビット数を有する前記第1及び第2の合計データ要素を出力する第2及び第3の加算器と、を備える、
請求項18に記載のメモリ回路。 - 前記複数の加算器ツリーの少なくとも1つの加算器ツリーは、マルチプレクサを介して前記複数のメモリセル列の前記対応するメモリセル列に接続される、
請求項18のメモリ回路。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063051497P | 2020-07-14 | 2020-07-14 | |
US63/051,497 | 2020-07-14 | ||
US17/203,130 US20220019407A1 (en) | 2020-07-14 | 2021-03-16 | In-memory computation circuit and method |
US17/203,130 | 2021-03-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022018112A true JP2022018112A (ja) | 2022-01-26 |
Family
ID=76920518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021115827A Pending JP2022018112A (ja) | 2020-07-14 | 2021-07-13 | インメモリ計算回路及び方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220019407A1 (ja) |
EP (1) | EP3940527A1 (ja) |
JP (1) | JP2022018112A (ja) |
KR (1) | KR102555621B1 (ja) |
CN (1) | CN113571109A (ja) |
DE (1) | DE102021107093A1 (ja) |
TW (1) | TWI771014B (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022117853A (ja) * | 2021-02-01 | 2022-08-12 | パナソニックIpマネジメント株式会社 | 診断回路、電子デバイス及び診断方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MX9801571A (es) * | 1995-08-31 | 1998-05-31 | Intel Corp | Aparato para realizar operaciones de multiplica-suma en datos empacados. |
TW200520225A (en) * | 2003-10-24 | 2005-06-16 | Matsushita Electric Ind Co Ltd | Pixel arranging apparatus, solid-state image sensing apparatus, and camera |
KR102408858B1 (ko) * | 2017-12-19 | 2022-06-14 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 동작 방법 |
US10678507B2 (en) * | 2017-12-22 | 2020-06-09 | Alibaba Group Holding Limited | Programmable multiply-add array hardware |
US10515689B2 (en) * | 2018-03-20 | 2019-12-24 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory circuit configuration and method |
CN110673824B (zh) * | 2018-07-03 | 2022-08-19 | 赛灵思公司 | 矩阵向量乘电路以及循环神经网络硬件加速器 |
US10664746B2 (en) * | 2018-07-17 | 2020-05-26 | Macronix International Co., Ltd. | Neural network system |
US10831446B2 (en) * | 2018-09-28 | 2020-11-10 | Intel Corporation | Digital bit-serial multi-multiply-and-accumulate compute in memory |
KR102664213B1 (ko) * | 2018-10-08 | 2024-05-08 | 삼성전자주식회사 | 인-메모리 프리페칭을 수행하는 메모리 장치 및 이를 포함하는 시스템 |
US20200183837A1 (en) * | 2018-12-07 | 2020-06-11 | Samsung Electronics Co., Ltd. | Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning |
US11119674B2 (en) * | 2019-02-19 | 2021-09-14 | Macronix International Co., Ltd. | Memory devices and methods for operating the same |
-
2021
- 2021-03-16 US US17/203,130 patent/US20220019407A1/en active Pending
- 2021-03-23 DE DE102021107093.7A patent/DE102021107093A1/de active Pending
- 2021-05-10 KR KR1020210060025A patent/KR102555621B1/ko active IP Right Grant
- 2021-05-24 TW TW110118621A patent/TWI771014B/zh active
- 2021-07-13 JP JP2021115827A patent/JP2022018112A/ja active Pending
- 2021-07-13 EP EP21185220.7A patent/EP3940527A1/en not_active Withdrawn
- 2021-07-13 CN CN202110790436.5A patent/CN113571109A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220008743A (ko) | 2022-01-21 |
EP3940527A1 (en) | 2022-01-19 |
CN113571109A (zh) | 2021-10-29 |
KR102555621B1 (ko) | 2023-07-13 |
TW202203053A (zh) | 2022-01-16 |
TWI771014B (zh) | 2022-07-11 |
DE102021107093A1 (de) | 2022-01-20 |
US20220019407A1 (en) | 2022-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Talati et al. | Logic design within memristive memories using memristor-aided loGIC (MAGIC) | |
Xie et al. | Fast boolean logic mapped on memristor crossbar | |
US11568223B2 (en) | Neural network circuit | |
Zidan et al. | Field-programmable crossbar array (FPCA) for reconfigurable computing | |
JP6844013B2 (ja) | 半導体記憶素子を用いたニューラルネットワーク演算回路及び動作方法 | |
CN113467751B (zh) | 一种基于磁性随机存储器的模拟域存内计算阵列结构 | |
US20220188604A1 (en) | Method and Apparatus for Performing a Neural Network Operation | |
CN110674462B (zh) | 一种矩阵运算装置、方法、处理器和计算机可读存储介质 | |
TWI784879B (zh) | 計算方法及電子裝置 | |
US12046283B2 (en) | Compute-in-memory array and module, and data computing method | |
US9933998B2 (en) | Methods and apparatuses for performing multiplication | |
JP2022018112A (ja) | インメモリ計算回路及び方法 | |
Rai et al. | Perspectives on emerging computation-in-memory paradigms | |
CN116860696A (zh) | 一种基于非易失性存储器的存内计算电路 | |
Monga et al. | A Novel Decoder Design for Logic Computation in SRAM: CiM-SRAM | |
CN113553028B (zh) | 基于概率比特电路的问题求解优化方法及*** | |
Kim et al. | An energy-efficient processing-in-memory architecture for long short term memory in spin orbit torque mram | |
CN112951290B (zh) | 一种基于非易失性随机存储器的内存计算电路及装置 | |
CN108109655B (zh) | 基于mig逻辑的rram迭代乘法器电路及实现方法 | |
Dilna et al. | An Accelerated Variable Stage Size Carry Skip Adder Realization Using 1S1R Resistive Memory | |
US11935586B2 (en) | Memory device and method for computing-in-memory (CIM) | |
US11853596B2 (en) | Data sequencing circuit and method | |
US20240257865A1 (en) | Memory device and method for computing-in-memory (cim) | |
US20230161557A1 (en) | Compute-in-memory devices and methods of operating the same | |
TWI844086B (zh) | 輸入電路、記憶電路及其操作方法 |