TW202203053A - 記憶體電路及其操作方法 - Google Patents

記憶體電路及其操作方法 Download PDF

Info

Publication number
TW202203053A
TW202203053A TW110118621A TW110118621A TW202203053A TW 202203053 A TW202203053 A TW 202203053A TW 110118621 A TW110118621 A TW 110118621A TW 110118621 A TW110118621 A TW 110118621A TW 202203053 A TW202203053 A TW 202203053A
Authority
TW
Taiwan
Prior art keywords
data element
data elements
bits
memory
memory cell
Prior art date
Application number
TW110118621A
Other languages
English (en)
Other versions
TWI771014B (zh
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 TW202203053A publication Critical patent/TW202203053A/zh
Application granted granted Critical
Publication of TWI771014B publication Critical patent/TWI771014B/zh

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • 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
    • 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/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
    • G06F7/523Multiplying only
    • 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
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital 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/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4074Power supply or voltage generation circuits, e.g. bias voltage generators, substrate voltage generators, back-up power, power control circuits
    • 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
    • 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
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • 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/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1036Read-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

一種記憶體電路包括一選擇電路、一記憶體單元行、及一加法器樹。該選擇電路用以接收輸入資料元,各輸入資料元包括一等於H的數目個位元,及輸出該些輸入資料元中的H個位元中的第k個位元的一經選擇的集合。該記憶體單元行的各記憶體單元包括一第一儲存單元,該第一儲存單元用以儲存一第一權重資料元及一第一乘法器,該乘法器用以基於該第一權重資料元及第k個位元的該經選擇的集合的一第一個第k個位元產生一第一乘積資料元。該加法器樹用以基於該些第一乘積資料元中的各者產生一求和資料元。

Description

記憶體內運算的電路及方法
記憶體陣列通常用於儲存及存取用於各種類型的運算(諸如邏輯或數學運算)的資料。為了執行此等運算,資料位元在記憶體陣列及用於執行運算的電路之間移動。在一些情況下,運算包括多層運算,且第一運算的結果被用作第二運算中的輸入資料。
以下揭示內容提供用於實施所提供標的物的不同特徵的許多不同實施例或實例。組件、值、操作、材料、配置、或類似者的特定實例將在下文描述以簡化本揭示內容。當然,此等各者僅為實例且不欲為限制性的。考慮其他組件、值、操作、材料、配置、或類似者。舉例而言,在以下描述中第一特徵於第二特徵上方或上的形成可包括第一及第二特徵直接接觸地形成的實施例,且亦可包括額外特徵可形成於第一特徵與第二特徵之間使得第一特徵及第二特徵可不直接接觸的實施例。另外,本揭示內容在各種實例中可重複參考數位及/或字母。此重複係出於簡單及清楚的目的,且本身並不指明所論述的各種實施例及/或組態之間的關係。
此外,為了方便用於描述如諸圖中圖示的一個元件或特徵與另一元件(多個)或特徵(多個)的關係的描述,在本文中可使用空間相對術語,諸如「在……下面」、「在……之下」、「下部」、「在……之上」、「上部」、及類似者。空間相對術語意欲涵蓋除了諸圖中所描繪的定向以外的元件在使用或操作時的不同定向。設備可另外定向(例如,旋轉90度或處於其他定向),且本文中所使用的空間相對描述符可類似地加以相應解釋。
在各種實施例中,記憶體電路的記憶體陣列包括記憶體儲存單元及數學運算單元兩者,且由此用以執行記憶體內運算,從而基於輸入資料元及儲存的權重資料元產生部分和。與記憶體陣列不包括用以執行記憶體內運算的元件的方法相比,此類記憶體電路能夠使用較小的面積及較低的功率位凖來產生部分和。在各種應用中,例如卷積類神經網路(convolutional neural network;CNN)應用中,記憶體電路使儲存的權重資料元的陣列能夠有效地應用於針對輸入資料元的一或多個集合的乘積累加(multiply and accumulate;MAC)運算中。
第1A圖及第1B圖係根據一些實施例的記憶體電路100A及100B各自的圖。各記憶體電路100A及100B包括耦接至輸入資料匯流排IDB及對應記憶體陣列120A或120B的選擇電路110、耦接至對應記憶體陣列120A或120B的輸入/輸出(input/output;I/O)電路130及M數目個累加器140、及經由控制信號匯流排CTRLB耦接至以下各者的控制電路150:選擇電路110、對應記憶體陣列120A或120B、I/O電路130、及各累加器140。
各記憶體陣列120A及120B包括對應於M個累加器140的M個行C1至CM。記憶體陣列120A包括N數目個記憶體單元BCX列,各記憶體單元BCX列包括單個輸入端子(未標記)及單個輸出端子(未標記),各輸入端子由此對應於記憶體陣列120A的N個資料列中的一者。記憶體陣列120B包括N/2個記憶體單元BX2列,各記憶體單元BX2列包括兩個輸入端子(未標記)及單個輸出端子(未標記),各輸入端子由此對應於記憶體陣列120B的N個資料列中的一者。如下所述,各記憶體電路100A及100B由此用以在輸入資料匯流排IDB上接收複數N個輸入資料元A1至AN,各輸入資料元A1至AN包括一等於H的數目個位元。
第1表描繪輸入資料元A1至AN的資料結構,該N個輸入資料元A1至AN中的各者包括H個資料位元。
資料元 位元 1 位元 2 .. 位元 H
A1 A11 A12 .. A1H
A2 A21 A22 .. A2H
: : : : :
AN AN1 AN2 .. ANH
第一表
如下所述,記憶體電路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上輸出部分和PS1至PSM。
在第1A圖描繪的實施例中,記憶體陣列120A包括記憶體單元BCX,該些記憶體單元BCX用以各接收輸入資料元A1至AN的第k個位元的依序經選擇的集合中的一個位元,及在第1B圖描繪的實施例中,記憶體陣列120B包括記憶體單元BX2,該些記憶體單元BX2用以各接收輸入資料元A1至AN的第k個位元的依序經選擇的集合中的相鄰資料元的兩個位元。各記憶體電路100A及100B由此用以能夠執行一方法(例如,下文關於第9圖及第10圖論述的方法900或1000中的一或兩者)的一些或全部,藉由該方法執行記憶體內運算。
在各種實施例中,記憶體電路100A或100B包括於類神經網路中,例如CNN、感測器(例如磁、影像、振動、或陀螺感測器)、射頻(radio-frequency;RF)裝置、或其他積體電路(integrated circuit;IC)裝置。
為了說明的目的,簡化了各記憶體電路100A及100B。在各種實施例中,記憶體電路100A或100B中的一或兩者包括除第1A圖及第1B圖中描繪的那些元件之外的各種元件,或以其他方式佈置以執行下述操作。
基於一或多個直接信號連接及/或一或多個間接信號連接,兩或多個電路元件被認為係耦接的,該些信號連接包括兩或多個電路元件之間的一或多個邏輯裝置,例如反相器或邏輯閘。在一些實施例中,兩或多個耦接的電路元件之間的信號通訊能夠藉由一或多個邏輯裝置經修改,例如,經反相或使其有條件。
選擇電路110係一種電子電路,該電子電路包括耦接至輸入資料匯流排IDB的一或多個資料暫存器(第1A圖及第1B圖中未示出),及耦接至該一或多個資料暫存器及控制信號匯流排CTRLB的一或多個多工器或類似電路(第1A圖及第1B圖中未示出)。
資料暫存器,在一些實施例中亦稱為緩衝器,係一種電子電路,該電子電路用以臨時儲存一或多個資料元的一些或全部,例如各輸入資料元A1至AN的H個位元。在各種實施例中,資料暫存器包括用以輸入及輸出資料位元的端子的單個集合,或用於輸入及輸出資料位元的端子的分開集合。
多工器係一種電子電路,該電子電路包括用以接收複數個信號(例如,輸入資料元A1至AN中的一者的H個位元)的端子的第一集合、用以接收一或多個控制信號(例如,控制信號CTRL)的一或多個切換裝置(例如,電晶體)、及至少一個端子,該端子用以響應於該一或多個控制信號輸出接收的信號中經選擇的一者。
由此選擇電路110用以儲存在輸入資料匯流排上接收的各資料元A1至AN的H個位元,且響應於在控制信號匯流排CTRLB上接收的一或多個控制信號CTRL,將選擇的第k個位元A1k至ANk的集合輸出至記憶體陣列120A或120B中的對應一者。對於各輸入資料元A1至AN,該對應選擇的第k個位元A1k至ANk係總計H個位元的相同的第k個位元。在一些實施例中,選擇電路110包括下文關於第2圖論述的選擇電路200。
在一些實施例中,選擇電路110用以接收N數目(範圍自4至512)個輸入資料元A1至AN。在一些實施例中,選擇電路110用於接收N數目(範圍自32至128)個輸入資料元A1至AN。
在一些實施例中,選擇電路110用以接收各輸入資料元A1至AN的H數目(範圍自1至16)個位元。在一些實施例中,選擇電路110用以接收各輸入資料元A1至AN的H數目(範圍自4至8)個位元。
在各種實施例中,一或多個控制信號CTRL用以在操作中使選擇電路110自最低有效位元(least significant bit;LSB)至最高有效位元(most significant bit;MSB)或自MSB至LSB依序輸出第k個位元A1k至ANk的集合。在各種實施例中,一或多個控制信號CTRL用以使選擇電路110依序輸出H數目個的位元集合的全部或H數目個的位元集合的子集。在一些實施例中,各輸入資料元A1至AN包括少於H的數目個位元,且一或多個控制信號CTRL用以使選擇電路110依序輸出接收的位元數目個位元集合的全部或子集。
在各種實施例中,一或多個控制信號CTRL用以使選擇電路110針對計數器k的各值,輸出第k個位元A1k至ANk的對應經選擇的集合的全部或子集。在一些實施例中,複數個輸入資料元包括少於N的數目個資料元,且一或多個控制信號CTRL用以使選擇電路110針對計數器k的各值,輸出接收的資料元數目個資料元的第k個位元A1k至ANk的對應集合的全部或子集。
各記憶體陣列120A及120B係一種電子電路,該電子電路包括M個行C1至CM,各行C1至CM包括下文論述的加法器樹122,及耦接至加法器樹122的對應記憶體單元BCX或BX2。各行C1至CM的記憶體單元BCX或BX2進一步耦接至選擇電路110且由此用以使得在操作中,各行C1至CM同時接收自選擇電路110基於計數器k輸出的第k個位元A1k至ANk的經選擇的集合。
因爲各記憶體單元BCX用以接收單個資料元A1至AN的位元,記憶體陣列120A包括總計N個記憶體單元BCX列R1至RN,使得各列R1至RN對應於記憶體陣列120A的一資料列。因爲各記憶體單元BX2用以接收兩個資料元A1至AN的位元,記憶體陣列120B包括總計L個記憶體單元BX2列R1至RL,數目L等於N/2,使得各列R1至RL對應於記憶體陣列120B的兩個資料列。在第1A圖及第1B圖描繪的實施例中,記憶體單元BCX或BX2的各實例包括位置指示符,例如21,對應於給定實例所在的行及列。
在一些實施例中,記憶體陣列120A或120B包括M數目(範圍自2至512)個行C1至CM。在一些實施例中,記憶體陣列120A或120B包括M數目(範圍自16至128)個行C1至CM。
在第1A圖及第1B圖描繪的實施例中,各記憶體陣列120A及120B包括列R1至RN或列R1至RL及行C1至CM的單個陣列層。在一些實施例中,記憶體陣列120A或120B中的一或兩者除第1A圖及第1B圖描繪的單個層之外還包括一或多個陣列層(未示出),由此包括除單個層的那些列及行之外的列及行。
記憶體單元BCX包括耦接至乘法器(第1A圖及第1B圖中未示出)的儲存元件。儲存元件係用以儲存由邏輯狀態表達的一或多個資料位元的電氣、機電、電磁、或其他裝置。在一些實施例中,邏輯狀態對應於儲存元件的部分或全部中儲存的電荷的電壓位凖。在一些實施例中,邏輯狀態對應於儲存元件的部分或全部的物理特性,例如,電阻或磁取向。
在一些實施例中,儲存元件包括一或多個靜態隨機存取記憶體(static random-access memory;SRAM)單元。在各種實施例中,SRAM單元,例如,五電晶體(five-transistor;5T)、六電晶體(six-transistor;6T)、八電晶體(eight-transistor;8T)、或九電晶體(nine-transistor;9T)SRAM單元,包括範圍自二至十二的數目個電晶體。在一些實施例中,SRAM單元包括多軌SRAM單元。在一些實施例中,SRAM單元包括至少兩倍於寬度的長度。
在一些實施例中,儲存元件包括一或多個動態隨機存取記憶體(dynamic random-access memory;DRAM)單元、電阻隨機存取記憶體(resistive random-access memory;RRAM)單元、磁電阻隨機存取記憶體(magnetoresistive random-access memory;MRAM)單元、鐵電隨機存取記憶體(ferroelectric random-access memory;FeRAM)單元、反或快閃單元、反及快閃單元、導電橋隨機存取記憶體(conductive-bridging random-access memory;CBRAM)單元、資料暫存器、非揮發性記憶體(non-volatile memory;NVM)單元、3D NVM單元、或其他能夠儲存位元資料的記憶體單元類型。
在一些實施例中,儲存元件用以儲存範圍自1至16的數目個資料位元。在一些實施例中,儲存元件用以儲存範圍自4至8的數目個資料位元。
儲存元件包括一或多個I/O連接(未示出),經由該些I/O連接邏輯狀態在寫入操作中經程式化及在讀取操作中經存取,例如乘法運算。
乘法器係包括一或多個邏輯閘的電子電路,該些邏輯閘用以基於接收的資料位元(例如,選擇的第k個位元A1k至ANk中的一者)及接收的資料元(例如,儲存在儲存元件中的多位元權重資料元)執行數學運算(例如,乘法),由此產生等於輸入資料位元與輸入資料元的乘積的乘積資料元。在一些實施例中,乘法器用以產生乘積資料元,該乘積資料元包括等於接收的資料元的位元數目的數目個位元。在各種實施例中,乘法器包括一或多個及閘或反或閘或適於執行乘法運算的一些或全部的其他電路。
藉由包括耦接至乘法器且用以儲存權重資料元的儲存元件,及耦接至選擇電路110且用以接收第k個位元A1k至ANk的經選擇的集合中的一個位元的乘法器,各記憶體單元BCX用以基於第k個位元A1k至ANk的經選擇的集合中的一個位元及對應於記憶體陣列120A內給定的記憶體單元BCX的位置的權重資料元產生乘積資料元P11至PMN。在一些實施例中,記憶體單元BCX包括下文關於第3A圖論述的記憶體單元300A。
記憶體單元BX2包括耦接至第一乘法器的第一儲存元件、耦接至第二乘法器的第二儲存元件及耦接至第一及第二乘法器的加法器(第1A圖及第1B圖中未示出)。第一儲存元件及乘法器用以產生第一乘積資料元,如上文關於記憶體單元BCX所論述;及第二儲存元件及乘法器用以產生第二乘積資料元,如上文關於記憶體單元BCX所論述。
加法器係包括一或多個邏輯閘的電子電路,該些邏輯閘用以基於接收的第一及第二資料元(例如,由第一及第二乘法器產生的第一及第二乘積資料元)執行數學運算,例如加法,由此產生與接收的第一及第二資料元的和相等的和資料元。在一些實施例中,加法器用以產生和資料元,該和資料元包括比接收的第一及第二資料元中的各者的位元數目大一的數目個位元。在各種實施例中,加法器包括一或多個全加器(full adder)閘、半加器(half adder)閘、漣波進位加法器(ripple-carry adder)電路、進位保存加法器(carry-save adder)電路、進位選擇加法器(carry-select adder)電路、進位預看加法器(carry-look-ahead adder)電路、或適於執行加法運算的一些或全部的其他電路。
藉由包括用以基於第k個位元A1k至ANk的經選擇的集合的一第一位元及第一儲存的權重資料元產生第一乘積資料元的第一乘法器、用以基於第k個位元A1k至ANk的經選擇的集合的第二位元產生第二乘積資料元的第二乘法器、及耦接至第一乘法器及第二乘法器中的各者的加法器,各記憶體單元BX2用以基於第k個位元A1k至ANk的經選擇的集合中的第一及第二位元及對應於記憶體陣列120B內給定的記憶體單元BX2的位置的第一及第二權重資料元產生和資料元S11至SML。在一些實施例中,記憶體單元BX2包括下文關於第3B圖論述的記憶體單元300B。
加法器樹122係包括多個加法器層(第1A圖及第1B圖中未示出)的電子電路,該多個加法器層中第一層用以接收複數個資料元,例如乘積資料元P11至PMN或和資料元S11至SML,且最後層包括單個加法器,該單個加法器用以基於接收的複數個資料元產生一資料元,例如求和資料元SD1至SDM。在一些實施例中,第一層及最後層之間一或多個連續層中的各者用以接收由前一層產生的第一數目個和資料元,且基於第一數目個和資料元產生第二數目個和資料元,第二數目係第一數目的一半。囙此,總層數個層包括第一及最後層及各連續層(若存在)。在一些實施例中,加法器樹122包括下文關於第4圖論述的加法器樹400。
加法器樹122由此用以接收一複數數目個資料元,該複數數目等於二的一數目次冪,該數目等於總層數,資料元的數目由此係總層數的二元指數。在第1A圖描繪的實施例中,記憶體陣列120A包括加法器樹122的各實例,加法器樹122包括總層數個層,使得二的總層數次冪等於N個乘積資料元,例如P11至P1N。在第1B圖描繪的實施例中,記憶體陣列120B包括加法器樹122的各實例,加法器樹122包括總層個層,使得二的總層數次冪等於L個和資料元,例如S11至S1L。
在一些實施例中,加法器樹122包括範圍自2至9的總層數個層。在一些實施例中,加法器樹122包括範圍自4至7的總層數個層。
在一些實施例中,加法器樹122的各層中的各加法器用以產生對應和資料元,該和資料元包括比前一層的和資料元(或在第一層的情況下,接收的複數個資料元中的資料元)的位元數目大一的數目個位元。
在第1A圖描繪的一些實施例中,加法器樹122包括第一層,該第一層用以接收乘積資料元P11至PMN,該些乘積資料元包括等於儲存在各記憶體單元BCX中的權重資料元的位元數目的第一數目個位元,及最後層,該最後層用以產生求和資料元SD1至SDM,該些求和資料元包括第二數目個位元,該第二數目等於第一數目加上等於加法器樹122中總層數的一值。
在第1B圖中描繪的一些實施例中,加法器樹122包括第一層,該第一層用以接收和資料元S11至SML,該些和資料元包括比儲存在各記憶體單元BX2中的權重資料元的位元數目大1的第一數目個位元,及最後層,該最後層用以產生求和資料元SD1至SDM,該些求和資料元包括第二數目個位元,該第二數目等於第一數目加上等於加法器樹122中總層數的一值。
I/O電路130係經由一或多個字線、一或多個位元線及/或一或多個資料線(未示出)耦接至控制信號匯流排CTRLB及耦接至記憶體陣列120A的各記憶體單元BCX或記憶體陣列120B的各記憶體單元BX2的各儲存元件的一或多個I/O連接的電子電路。I/O電路130由此用以響應於接收自控制信號匯流排CTRLB的一或多個控制信號CTRL,在寫入操作中將各記憶體單元BCX或BX2程式化為一或多個邏輯狀態,且使儲存在各記憶體單元BCX或BX2中的一或多個邏輯狀態可在讀取操作中經存取。
累加器140係耦接至控制信號匯流排CTRLB的電子電路,且包括在反饋配置中集體耦接的一或多個加法器、一或多個資料暫存器及一或多個移位器(第1A圖及第1B圖中未示出)。一或多個加法器耦接至加法器樹122,且由此用以接收求和資料元SD1至SDM中的一者,各求和資料元SD1至SDM係對應於基於計數器k自選擇電路110輸出的第k個位元A1k至ANk的依序經選擇的集合的H個求和資料元SD1至SDM序列中的一者。
一或多個加法器進一步用以接收自一或多個移位器輸出的移位資料元,且基於移位資料元及求和資料元SD1至SDM中的一者產生內部和資料元。一或多個資料暫存器用以自一或多個加法器接收內部和資料元、儲存內部和資料元、及將儲存的內部和資料元輸出至一或多個移位器及輸出至輸出埠O1至OM中的對應一者。一或多個移位器用以接收自一或多個資料暫存器輸出的儲存的內部資料元,且藉由將儲存的內部資料元在MSB方向或LSB方向上移動一個位元來產生移位資料元。
累加器140由此用以響應於在控制信號匯流排CTRLB上接收的一或多個控制信號CTRL執行累加運算,從而儲存的內部求和資料元隨著求和資料元SD1至SDM的序列中的各一者的接收而增加。一或多個控制信號CTRL基於及/或包括計數器k資訊,且由此用以使累加運算與第k個位元A1k至ANk的集合的依序選擇相協調,使得儲存的內部資料元經移位且與選擇的求和資料元SD1至SDM相加,同步於第k個位元的集合的依序產生的時序及MSB/LSB方向。
在操作中,基於在第k個位元A1k至ANk的集合的H個位元的跨度上迴圈計數器k的累加運算的執行及求和資料元SD1至SDM的對應H個實例使儲存在一或多個資料暫存器中的內部資料元作為部分和PS1至PSM中的對應一者在對應輸出埠O1至OM上輸出。
控制電路150係一種電子電路,該電子電路用以藉由產生控制信號CTRL及在控制信號匯流排CTRLB上輸出控制信號CTRL控制記憶體電路100A或100B的操作。在操作中,根據上文及下文論述的實施例,藉由選擇電路110、記憶體陣列120A或120B、I/O電路130、及累加器140自控制信號匯流排CTRLB接收控制信號CTRL。在一些實施例中,控制電路150用以產生包括及/或基於一或多個計時信號的控制信號CTRL。
在各種實施例中,控制電路150包括硬體處理器152及非暫態電腦可讀儲存媒體154。電腦可讀儲存媒體154除其他外,經編碼(即儲存)電腦程式碼(即一組可執行指令)。由硬體處理器152執行指令表示(至少部分地)一種記憶體電路操作工具,該記憶體電路操作工具實現例如下文關於第9圖論述的方法900及/或下文關於第10圖論述的方法1000的部分或全部(以下,所述過程及/或方法)。
在各種實施例中,處理器152經由I/O介面電耦接至電腦可讀儲存媒體154,且經由匯流排電耦接至網路(細節未示出)。網路介面連接至網路(未示出),使得處理器152及電腦可讀儲存媒體154能夠經由網路連接至外部元件。處理器152用以執行在電腦可讀儲存媒體154中編碼的電腦程式碼,以便使控制電路150及記憶體電路100A或100B可用於執行所述處理及/或方法的部分或全部。在一或多個實施例中,處理器152係中央處理單元(central processing unit;CPU)、多處理器、分散式處理系統、專用積體電路(application specific integrated circuit;ASIC)及/或適當的處理單元。
在一或多個實施例中,電腦可讀儲存媒體154係電子、磁性、光學、電磁、紅外及/或半導體系統(或設備或裝置)。舉例而言,電腦可讀儲存媒體154包括半導體或固態記憶體、磁帶、可移動電腦磁片、RAM、SRAM、DRAM、唯獨記憶體(read-only memory;ROM)、硬磁片、及/或光碟。在使用光碟的一或多個實施例中,電腦可讀儲存媒體154包括光碟唯讀記憶體(compact disk-read only memory;CD-ROM)、光碟讀/寫(compact disk-read/write;CD-R/W)及/或數位視訊光碟(digital video disc;DVD)。
在一或多個實施例中,電腦可讀儲存媒體154儲存用以使控制電路150產生控制信號的電腦程式碼,以便可用於執行所述過程及/或方法的部分或全部。在一或多個實施例中,電腦可讀儲存媒體154亦儲存有助於執行所述過程及/或方法的部分或全部的資訊。
藉由上文論述的組態,各記憶體電路100A及100B能夠在操作中在輸入資料匯流排IDB上接收輸入資料元A1至AN、使用選擇電路110依序選擇第k個位元A1k至ANk的組合、在記憶體單元BCX或BX2的各行C1至CM處接收位元A1k至ANk的經選擇的集合的序列、及使用記憶體單元BCX或BX2及對應加法器樹122執行同步的一系列數學運算,從而在輸出埠O1至OM上輸出部分和PS1至PSM。藉由包括記憶體陣列120A或120B,記憶體電路100A或100B各自用以執行記憶體內運算,從而基於輸入資料元A1至AN及儲存的權重資料元產生至少一個部分和PS1至PSM。與記憶體陣列不包括用以執行記憶體內運算的元件的方法相比,此類記憶體電路能夠使用較小的面積及較低的功率位凖來產生部分和。
第2圖係根據一些實施例的選擇電路的圖。選擇電路200,在一些實施例中亦稱為多工電路200,可用作上文關於第1A圖及第1B圖論述的選擇電路110。選擇電路200包括耦接至輸入資料匯流排IDB的資料暫存器200R,及耦接至資料暫存器200R及控制信號匯流排CTRLB的複數N個多工器M1至MN。
資料暫存器200R包括耦接至輸入資料匯流排IDB的端子的第一集合(未示出)且由此用以接收包括各輸入資料元A1至AN的H個位元的位元資料,及臨時儲存位元資料。在各種實施例中,資料暫存器200R用以在操作中平行或串列地接收位元資料。資料暫存器200R包括耦接至多工器M1至MN的端子的第二集合(未示出)且由此用以在操作中輸出各輸入資料元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上接收的一或多個控制信號CTRL,在對應輸出端子M1O至MNO上輸出對應資料元A1至AN的第k個位元A1k至ANk的經選擇的集合。多工器M1至MN及一或多個控制信號CTRL用以在操作中同時輸出各資料元A1至AN的的相同第k個位元,由此基於上文論述的計數器k產生第k個位元A1k至ANk的集合。
選擇電路200由此用以能夠執行上文關於選擇電路110及第1A圖及第1B圖論述的操作。藉由包括選擇電路200作為選擇電路110,各記憶體電路100A及100B能夠實現上述益處。
第3A圖及第3B圖係根據一些實施例的記憶體單元300A及300B各自的圖。記憶體單元300A,在一些實施例中亦稱為位元單元300A,可用作上文關於第1A圖論述的記憶體單元BCX的一或多個實例,及記憶體單元300B,在一些實施例中亦稱為位元單元300B,可用作上文關於第1B圖論述的記憶體單元BX2的一或多個實例。
為了說明的目的,簡化了各記憶體單元300A及300B。在各種實施例中,記憶體單元300A或300B中的一或兩者包括除第3A圖及第3B圖描繪的那些之外的各種元件,或以其它方式佈置以執行下文論述的操作。在各種實施例中,記憶體單元300A或300B包括至一或多個字線、一或多個位線、及/或一或多個資料線(未示出)的複數個電連接,且由此至上文關於第1A圖及第1B圖論述的I/O電路130,經由該些電連接,下文論述的權重資料元WTmn及WTm(n+1)經儲存及/或經存取。
各記憶體單元300A及300B包括耦接至乘法器MUL1的儲存單元SU1。記憶體單元300B亦包括耦接至乘法器MUL2的儲存單元SU2,及耦接至乘法器MUL1及MUL2中的各者的加法器ADD。
儲存單元SU1用以儲存權重資料元WTmn,及儲存單元SU2用以儲存權重資料元WTm(n+1)。在一些實施例中,指示符m對應於M數目個行C1至CM中的一者,且指示符n對應於記憶體陣列120A或120B的N數目個資料列中的一者。
在各種實施例中,各儲存單元SU1及SU2用以儲存各自的權重資料元WTmn或WTm(n+1),該些權重資料元包括一單個位元或多個位元。在一些實施例中,儲存單元SU1或SU2中的一或兩者用以儲存包括範圍自1至16的數目個位元的對應權重資料元WTmn或WTm(n+1)。在一些實施例中,儲存單元SU1或SU2中的一或兩者用以儲存包括範圍自4至8的數目個位元的對應權重資料元WTmn或WTm(n+1)。在一些實施例中,儲存單元SU1或SU2中的一或兩者用以儲存包括可程式化數目個位元的對應權重資料元WTmn或WTm(n+1)。
各乘法器MUL1及MUL2用以執行乘法運算,該乘法運算包括與給定的乘法器MUL1或MUL2耦接至的對應儲存單元SU1或SU2的位元數目相等的數目個位元。乘法器MUL1用以自儲存單元SU1接收權重資料元WTmn及在第3A圖及第3B圖中表示爲Ank的第k個位元A1k至ANk中的一第一者,且將乘積輸出爲乘積資料元Pmn。
在一些實施例中,例如,其中記憶體單元300A用作記憶體單元BCX的那些實施例中,基於指示符m及n的乘積資料元Pmn對應於上文關於第1A圖論述的乘積資料元P11至Pmn中的一者。記憶體單元300A由此用以能夠執行上文關於記憶體單元BCX及第1A圖論述的操作。
乘法器MUL2用以自儲存單元SU2接收權重資料元WTm(n+1)及在第3B圖中表示為第A(n+1)k的第k個位元A1k至ANk中的第二一者,且將乘積輸出為乘積資料元Pm(n+1)。
加法器ADD用以接收具有對應乘法器MUL1或MUL2的位元數目個位元的各乘積資料元Pmn及Pm(n+1),執行加法運算,及將和輸出為具有比各乘積資料元Pmn及Pm(n+1)的位元數目大一的數目個位元的和資料元Sml。在一些實施例中,指示符l對應於記憶體陣列120B的L數目個記憶體單元BX2列中的一者。
在一些實施例中,例如,記憶體單元300B用作記憶體單元BX2的那些實施例中,基於指示符m及l的和資料元Sml對應於上文關於第1B圖論述的和資料元S11至Sml中的一者。記憶體單元300B由此用以能夠執行上文關於記憶體單元BX2及第1B圖論述的操作。
藉由包括記憶體單元300A作為記憶體單元BCX的一或多個實例或包括記憶體單元300B作為記憶體單元BX2的一或多個實例,對應記憶體電路100A或100B能夠實現上述益處。
第4圖係根據一些實施例的加法器樹400的圖。加法器樹400可用作上文關於第1A圖及第1B圖論述的加法器樹122。加法器樹400包括u數目個的加法器層ADD1至ADDu。
第一加法器層包括用以接收U(=2u )數目個和資料元SUM11至SUM1U的加法器ADD1,第一層由此包括U/2數目個加法器ADD1。在一些實施例中,例如,其中加法器樹400用作記憶體陣列120A的行C1至CM中的加法器樹122的那些實施例中,和資料元SUM11至SUM1U對應於由記憶體單元BCX的對應行輸出的複數個乘積資料元,例如,上文關於第1A圖論述的由行C1輸出的乘積資料元P11至P1N。在一些實施例中,例如,其中加法器樹400用作記憶體陣列120B的行C1至CM中的加法器樹122的那些實施例中,和資料元SUM11至SUM1U對應於由記憶體單元BX2的對應行輸出的複數個和資料元,例如,上文關於第1B圖論述的由行C1輸出的和資料元S11至S1L。
各加法器ADD1用以對和資料元的對應接收對(例如和資料元SUM11至SUM1U中的SUM11及SUM12)執行加法運算,且將和輸出為和資料元SUM21至SUM2(U/2)中的對應一者。加法器ADD1用以接收和資料元SUM11至SUM1U,和資料元SUM11至SUM1U包括第一位元數目個位元,例如,上文關於第1A圖論述的乘積資料元P11至PMN的位元數目個位元或上文關於第1B圖論述的和資料元S11至SML的位元數目個位元,且輸出包括比第一位元數目大一的第二位元數目個位元的和資料元SUM21至SUM2(U/2)。
第二加法器層包括U/4數目個加法器ADD2。各加法器ADD2用以對和資料元的對應接收對(例如和資料元SUM21至SUM2(U/2)中的SUM21及SUM22)執行加法運算,且將和輸出為和資料元SUM31至SUM3(U/4)中的對應一者。加法器ADD2用以接收包括第二位元數目個位元的和資料元SUM21至SUM2(U/2),且輸出包括比第二位元數目大一的第三位元數目個位元的和資料元SUM31至SUM3(U/4)。
最後加法器層包括單個加法器ADDu,該單個加法器用以對自前一層的加法器接收的一對和資料元SUMu1及SUMu2執行加法運算,且將和作為求和資料元SDm輸出。加法器ADDu用以接收包括第四位元數目個位元的和資料元SUMu1及SUMu2,且輸出包括比第四位元數目大一且等於第一位元數目加上數目u的第五位元數目個位元的求和資料元SDm。在一些實施例中,例如,其中加法器樹400用作加法器樹122的那些實施例中,求和資料元SDm對應於上文關於第1A圖及第1B圖論述的求和資料元SD1至SDm中的一者。
在各種實施例中,加法器樹400包括第4圖中描繪的第二層及最後層之間的一或多個附加加法器層,各附加層經與上文論述的第一層、第二層及最後層的組態一致的組態,使得在運算中,基於接收的和資料元SUM11至SUM1U產生求和資料元SDm。在一些實施例中,加法器樹400不包括第二加法器層ADD2,且由此包括總計u=2個層,使得在運算中,基於總計U=4個和資料元SUM11至SUM1U產生求和資料元SDm。
在一些實施例中,加法器樹400由此包括範圍自2至9的總層數個層。在一些實施例中,加法器樹400由此包括範圍自4至7的總層數個層。
加法器樹400由此用以能夠執行上文關於加法器樹122及第1A圖及第1B圖論述的操作。藉由包括加法器樹400作為加法器樹122,各記憶體電路100A及100B能夠實現上述益處。
第5圖係根據一些實施例的累加器500的圖。累加器500,在一些實施例中亦稱為部分和電路500,可用作上文關於第1A圖及第1B圖論述的累加器140。累加器500包括耦接至資料暫存器R1及移位器SH1中的各者的加法器ADDA。移位器SH1亦耦接至資料暫存器R1,使得加法器ADDA、資料暫存器R1及移位器SH1由此在反饋配置中集體耦接。
加法器ADDA用以在運算中接收上文關於第4圖論述的求和資料元SDm。在一些實施例中,例如,其中累加器500用作累加器140的那些實施例中,求和資料元SDm對應於上文關於第1A圖及第1B圖論述的求和資料元SD1至SDM中的一者。
加法器ADDA進一步用以在運算中接收自移位器SH1輸出的移位資料元SDE,及基於移位資料元SDE及求和資料元SDm產生內部和資料元IDE。資料暫存器R1用以自加法器ADDA接收內部和資料元IDE、儲存內部和資料元IDE、及將儲存的內部和資料元IDE輸出至移位器SH1及輸出埠Om。移位器SH1用以接收自資料暫存器R1輸出的儲存的內部資料元IDE,及藉由在MSB方向或LSB方向上將儲存的內部資料元IDE移位一個位元產生移位資料元SDE。
累加器500由此用以響應於在控制信號匯流排CTRLB(第5圖中未示出)上接收的一或多個控制信號CTRL執行累加運算,從而儲存的內部和資料元IDE隨著接收的求和資料元SDm的序列中的各者增加。由此,在求和資料元SDm的複數個實例上執行累加運算使儲存在資料暫存器R1中的內部資料元IDE在輸出埠Om上輸出為求和資料元SDm的該些實例的部分和PSm。
在一些實施例中,例如,其中累加器500用作累加器140的那些實施例中,輸出埠Om上輸出的部分和PSm對應於上文關於第1A圖及第1B圖論述的對應輸出埠O1至Om上輸出的部分和PS1至PSM中的一者。
累加器500由此用以能夠執行上文關於累加器140及第1A圖及第1B圖論述的運算。藉由包括累加器500作為累加器140,各記憶體電路100A及100B能夠實現上述益處。
第6圖係根據一些實施例的記憶體陣列120A或120B(120A/120B)的部分的圖。第6圖包括記憶體單元BCX或BX2(BCX/BX2)的多個實例及加法器樹122的實例,各實例在上文關於第1A圖及第1B圖中經論述。在第6圖描繪的實施例中,記憶體陣列120A/120B亦包括耦接於記憶體單元BCX/BX2與加法器樹122之間的多工器MA。為了說明的目的,簡化了第6圖。
多工器用以將記憶體單元BCX/BX2中的一或多者選擇性地耦接至加法器樹122,使得在操作中,自記憶體單元BCX/BX2輸出的資料元(例如,上文關於第1A圖及第1B圖中論述的乘積資料元P11至PMN或和資料元S11至SML)響應於在控制信號匯流排CTRLB上接收的一或多個控制信號CTRL(第6圖中未示出)而經選擇性地傳播至加法器樹122。在各種實施例中,記憶體單元BCX/BX2包括於C1至CM的相同行中或包括於C1至CM的分開的行中,加法器樹122由此在C1至CM的兩個行之間共用。
藉由上文論述的組態,記憶體電路100A或100B包括記憶體陣列120A/120B,該記憶體陣列包括在多個記憶體單元BCX/BX2之間共用的至少一個加法器樹122。在此實施例中,與其中記憶體陣列不包括在多個記憶體單元之間共用的至少一個加法器樹的方法相比,記憶體電路100A或100B由此能夠使用較小的面積來產生部分和。
第7A圖及第7B圖係根據一些實施例的記憶體電路100A或100B(100A/100B)的部分的圖。第7A圖及第7B圖的各者描繪非限制性實例,該非限制性實例中兩或多個部分和PS1至PSM經組合,且為了說明的目的簡化了該實例。
在第7A圖描繪的實施例中,記憶體電路100A/100B包括對應記憶體陣列120A/120B及累加器140的兩個實例,以上各者在上文關於第1A圖及第1B圖中經論述。在第7A圖描繪的實施例中,累加器140的第一實例的輸出埠O2耦接至累加器140的第二實例,使得在運算中,部分和PS2由累加器140的第二實例接收且包括於輸出埠O1上輸出的部分和PS1中。在一些實施例中,累加器140的兩個實例用以在運算中選擇性地輸出部分和PS1及PS2而不包括部分和PS2於部分和PS1中,例如,響應於在控制信號匯流排CTRLB上接收的一或多個控制信號CTRL(第7A圖及第7B圖中未示出)。
在第7B圖描繪的實施例中,記憶體電路100A/100B包括行C1至C4中的各者(包括累加器140的對應實例),行C1至C4中的各者用以在運算中接收輸入資料匯流排IDB上的輸入資料元A1至AN及輸出對應部分和PS1至PS4,如上文關於第1A圖及第1B圖所論述。在第7B圖描繪的實施例中,記憶體電路100A/100B亦包括加法器ADDSUM,該加法器用以在運算中接收各部分和PS1至PS4,且基於各部分和PS1至PS4產生組合的部分和OSUM。在一些實施例中,記憶體電路100A/100B用以在運算中選擇性地輸出部分和PS1至PS4而不輸出部分和OSUM,例如,響應於在控制信號匯流排CTRLB上接收的一或多個控制信號CTRL。
第7A圖及第7B圖中描繪的非限制性實例的各者中,在運算中,自記憶體電路100A/100B輸出的部分和PS1或OSUM係基於各輸入資料元A1至AN與行C1至CM中的兩或多者中的記憶體單元BCX/BX2組合。部分和PS1或OSUM由此基於記憶體單元BCX/BX2中儲存的權重資料元的組合的位元產生,使得與部分和PS1至PSM係基於輸入資料元A1至AN與行C1至CM中的單一一者組合的實施例相比,部分和PS1或OSUM的解析度或精度經提高。
在一些實施例中,記憶體單元BCX/BX2包括權重資料元,該些權重資料元包括總計四個位元,使得在運算中,在第7A圖描繪的實施例中,部分和PS1係基於總計八個位元的權重資料元輸出,且在第7B圖描繪的實施例中,部分和OSUM係基於總計十六個位元的權重資料元輸出。
第7A圖及第7B圖中描繪的實施例係為了說明的目的而提供的非限制性實例。在各種實施例中,記憶體電路100A/100B以其他方式組態為基於組合的儲存的權重資料元產生一或多個部分和,從而與部分和不基於組合的權重資料元的實施例相比提高了解析度。
第8圖係根據一些實施例的記憶體電路工作電壓VDD的圖。第8圖描繪的實施例中,工作電壓VDD係記憶體電路100A或100B在其中工作的功率域的電源電壓,如上文關於第1A圖及第1B圖所論述。工作電壓VDD包括0V、VDD1及VDD2三個電源電壓位凖,三個電壓電壓位準中電源電壓位凖VDD1大於電源電壓位凖VDD2。第8圖中描繪的電壓位準及時序關係,例如相對歷時及/或強度及序列,係為了說明的目的而提供的非限制性實例。
電源電壓位凖0V表示掉電模式,在該模式下不執行記憶體電路操作。在一些實施例中,記憶體陣列120A或120B包括儲存單元SU1及SU2(若存在),儲存單元SU1及SU2包括非揮發性記憶體單元,使得權重資料元WTmn及/或WTm(n+1)在工作電壓VDD具有0V電壓位凖的一或多個歷時經留存。
電源電壓位凖VDD1表示I/O模式,在該模式期間,一或多個權重元件WTmn及/或WTm(n+1)在一或多個寫入操作中經儲存於記憶體單元BCX及或BX2中,及/或在一或多個讀取操作中經存取。
電源電壓位凖VDD2表示運算模式,在該模式期間,一或多個記憶體內運算的運算經執行,如上文關於第1A圖及第1B圖所論述及/或如下文關於方法900及1000所論述。
第8圖中描繪的實施例中,藉由在小於電源電壓位凖VDD1的電源電壓位凖VDD2下執行記憶體內運算,與在具有與I/O模式相同的電壓位凖的運算模式下執行記憶體內運算的方法相比,功耗降低。
第9圖係根據一些實施例的操作記憶體電路的方法900的流程圖。方法900可用於記憶體電路,例如,上文關於第1A圖及第1B圖論述的記憶體電路100A或100B。
第9圖中描繪方法900的操作的序列僅用於說明;方法900的操作能夠同時經執行或以不同於第9圖中描繪的序列執行。在一些實施例中,除第9圖中描繪的那些操作之外的操作在第9圖描繪的操作之前、之間、期間及/或之後經執行。在一些實施例中,方法900的操作係操作IC(例如,感測器、RF裝置、處理器、邏輯或信號處理電路、或類似者)的方法的子集。在各種實施例中,方法900的一或多個操作係下文關於第10圖論述的方法1000的子集。
方法900係部分和計算的非限制性實例,其中部分和PS1至PSM的實例PSm係針對行C1至CM中的對應第m一者計算,如上文關於第1A圖至第5圖所論述。在第9圖中描繪的實施例中,計數器k在各輸入資料元A1至AN的各H數目個位元中的各者之間迴圈。在計數器k的各值處,對應於求和資料元SD1至SDM的實例,求和資料元Pk 經計算為對應第k個位元及權重資料元Wmn的N數目個乘積的和。部分和PSm係藉由累加的資料元Pk 產生,如下所述。
在操作910處,將計數器k初始化為零。在一些實施例中,初始化計數器k包括使用上文關於第1A圖至第5圖論述的控制電路150。
在一些實施例中,將計數器k初始化為零包括將一或多個資料暫存器的內容設定為零。在一些實施例中,將計數器k初始化為零包括將資料暫存器R1的內部資料元IDE設定為零,如上文關於累加器500及第5圖所論述。
在操作920處,計數器k增加一,且基於計數器k的值產生求和資料元Pk 。產生求和資料元Pk 包括在自n=1至N定義的範圍上對對應於記憶體陣列120A或120B中的N個資料列中的各者的乘積資料元進行求和。各第n個乘積資料元係對應於計數器n及k的輸入資料元An的第k個位元Ank與對應權重資料元Wmn或Wm(n+1)相乘。在n=1至N的範圍上對所得乘積資料元進行求和,由此產生對應於求和資料元SD1至SDM的實例的求和資料元Pk
在一些實施例中,產生求和資料元Pk 包括使用對應於行C1至CM中的第m一者的加法器樹122在n=1至n=N的範圍上對由記憶體單元BCX輸出的乘積資料元Pmn進行求和,如上文關於記憶體電路100A及第1A圖至第5圖所論述。在一些實施例中,產生求和資料元Pk 包括使用記憶體單元BX2在l=1至l=L的範圍上產生求和資料元Sm1至SmL,及使用對應於行C1至CM中的第m者的加法器樹122對由記憶體單元BX2輸出的和乘積資料元Sm1至SmL進行求和,如上文關於記憶體電路100B和第1圖所論述。
在操作930處,部分和資料元Ok 基於計數器k的值產生。產生部分和資料元Ok 包括當計數器k具有值1時將部分和資料元Ok 初始化為求和資料元Pk 的第一值,及當計數器k具有非1的值時,移位資料元Ok 的前一值(Ok-1 )且與求和資料元Pk 的當前值相加。
移位部分和資料元Ok 的前一值對應於將前一值增加或減少一有效位元。在一些實施例中,將計數器k自1遞增至H對應於增加輸入資料元A1至AN的有效位元,且移位部分和資料元Ok 的前一值對應於將前一值增加一有效位元,即,將前一值乘以2。在一些實施例中,將計數器k自1遞增至H對應於減少輸入資料元A1至AN的有效位元,且移位部分和資料元Ok 的前一值對應於將前一值減少一有效位元,即,將前一值除以2。
在一些實施例中,產生部分和資料元Ok 包括將部分和資料元PS1至PSM設定為對應求和資料元SD1至SDM的第一實例,係藉由:儲存對應求和資料元SD1至SDM的第一實例為資料暫存器R1中的內部資料元IDE,使用移位器SH1移位內部資料元IDE,及將求和資料元SD1至SDM的後續實例與移位器資料元SDE相加,如上文關於第1A圖至第5圖所論述。
在操作940處,將計數器k與數目H進行比較。若計數器k小於數目H,則方法900返回至操作920;及若計數器k等於數目H,則方法900繼續操作950。
在操作950處,將部分和資料元PSm設定為對應於計數器k=H的部分和資料元Ok 的最終值。在一些實施例中,數目H=4,遞增計數器k對應於增加輸入資料元A1至AN的有效位元,且設定部分和資料元PSm為部分和資料元Ok 的最終值,由PSm=   20
Figure 02_image001
+21
Figure 02_image003
+22
Figure 02_image005
+23
Figure 02_image007
給出,其中計數器k=1對應於一LSB及係數20 ,及計數器k=4對應於一MSB及係數23
在一些實施例中,設定部分和資料元PSm為部分和資料元Ok 的最終值包括在對應第m個輸出埠O1至OM上輸出第m個部分和資料元PS1至PSM,如上文關於第1A圖至第5圖所論述。
藉由使用記憶體電路100A或100B執行方法900的操作的部分或全部,部分和基於記憶體內運算產生,由此實現上文關於記憶體電路100A及100B論述的益處。
第10圖係根據一些實施例的操作記憶體電路的方法1000的流程圖。方法1000可用於記憶體電路,例如,上文關於第1A圖及第1B圖論述的記憶體電路100A或100B。
第10圖中描繪方法1000的操作的序列僅用於說明;方法1000的操作能夠以不同於第10圖中描繪的序列經執行。在一些實施例中,除第10圖中描繪的那些操作之外的操作在第10圖中描繪的操作之前、之間、期間及/或之後執行。在一些實施例中,方法1000的操作係操作IC(例如,感測器、RF裝置、處理器、邏輯或信號處理電路、或類似者)的方法的子集。在一些實施例中,方法1000的操作係操作CNN或其他類神經網路的方法的子集。
在操作1010處,在一些實施例中,第一權重資料元儲存在一記憶體單元行的各記憶體單元中。在一些實施例中,在記憶體單元行的各記憶體單元中儲存第一權重資料元包括在記憶體單元的複數個行中儲存權重資料。在各種實施例中,在各記憶體單元行的各記憶體單元中儲存第一權重資料元包括使用I/O電路130將權重資料元WTmn及/或WTm(n+1)儲存在行C1至CM的記憶體單元BCX或BX2中,如上文關於第1A圖至第5圖所論述。
在一些實施例中,在記憶體單元行的各記憶體單元中儲存第一權重資料元包括在大於執行操作1020至1070的一些或全部的第二電源電壓位準的第一電源電壓位準下操作記憶體電路。在一些實施例中,在第一電源電壓位準下操作記憶體電路包括在電源電壓位準VDD1下操作記憶體電路,及在第二電源電壓位準下操作記憶體電路包括在電源電壓位準VDD2下操作記憶體電路,如上文關於第8圖所論述。
在操作1020處,在一些實施例中,複數個輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合自選擇電路同時輸出。在一些實施例中,同時輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合包括自選擇電路110輸出輸入資料元A1至AN的第k個位元A1k至ANk的集合,如上文關於第1A圖至第5圖所論述。
在各種實施例中,同時輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合係藉由自LSB至MSB或自MSB至LSB遞增依序輸出第k個位元的集合的一部分。
在一些實施例中,同時輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合包括在選擇電路處接收該些輸入資料元。在一些實施例中,同時輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合包括在選擇電路中儲存該些輸入資料元,例如,儲存在一或多個資料暫存器中。在一些實施例中,同時輸出該些輸入資料元中的各輸入資料元的第k個位元的集合包括使用上文關於第1A圖及第1B圖論述的選擇電路110接收及儲存輸入資料元A1至AN。在一些實施例中,同時輸出該些輸入資料元中的各輸入資料元的第k個位元的集合包括使用上文關於第2圖論述的選擇電路200。
在一些實施例中,同時輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合包括產生及響應於一或多個控制信號,例如,藉由上文關於第1A圖至第5圖論述的控制電路150產生的一或多個控制信號CTRL。
在一些實施例中,同時輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合包括執行下文關於第9圖論述的方法900的一些或全部。
在操作1030處,在一記憶體單元行處接收第k個位元的集合。在各種實施例中,在記憶體單元行處接收第k個位元的集合包括在記憶體單元BCX或BX2行處接收第k個位元A1k至ANk的集合。
在一些實施例中,在記憶體單元行處接收第k個位元的集合包括在複數個行的各行處接收第k個位元的集合。在各種實施例中,在該些行處接收第k個位元的集合包括在上文關於第1A圖至第5圖論述的行C1至CM的各者處接收第k個位元A1k至ANk的集合。
在一些實施例中,在記憶體單元行處接收第k個位元的集合包括執行下文關於第9圖論述的方法900的一些或全部。
在操作1040處,記憶體單元行的各記憶體單元用於將對應輸入資料元的第k個位元與儲存在記憶體單元中的第一權重資料元相乘,由此產生對應第一乘積資料元。在各種實施例中,使用記憶體單元將對應輸入資料元的第k個位元與儲存在記憶體單元中的第一權重資料元相乘包括使用記憶體單元BCX或BX2將第k個位元A1k至ANk與第一權重資料元相乘,如上文關於第1A圖至第5圖所論述。
在一些實施例中,將對應輸入資料元的第k個位元與儲存在記憶體單元中的第一權重資料元相乘由此產生對應第一乘積資料元,包括將位元Ank與權重資料元WTmn相乘由此產生乘積資料元Pmn,如上文關於記憶體單元300A及300B及第3A圖及第3B圖所論述。
在一些實施例中,使用記憶體單元行的各記憶體單元將該些資料元中的對應輸入資料元的第k個位元與第一權重資料元相乘,包括使用記憶體單元行的各記憶體單元將該些資料元中的另一對應輸入資料元的第k個位元與儲存在記憶體單元中的第二權重資料元相乘,由此產生第二乘積資料元,且將第一乘積資料元與第二乘積資料元相加以產生和資料元。
在一些實施例中,將該些資料元的另一對應輸入資料元的第k個位元與儲存在記憶體單元中的第二權重資料元相乘,由此產生第二乘積資料元,且將第一乘積資料元與第二乘積資料元相加以產生和資料元,包括將位元A(n+1)k與權重資料元WTm(n+1)相乘,由此產生乘積資料元Pm(n+1),且將乘積資料元Pmn與乘積資料元Pm(n+1)相加以產生上文關於記憶體單元300B及第3B圖論述的和資料元Sml。
在各種實施例中,使用記憶體單元將對應輸入資料元的第k個位元與儲存在記憶體單元中的第一權重資料元相乘,包括使用複數個記憶體單元行(例如,上文關於第1A圖至第5圖論述的行C1至CM)將對應輸入資料元的第k個位元A1k至ANk與複數個第一權重資料元中的對應第一權重資料元相乘。
在各種實施例中,使用記憶體單元行將對應輸入資料元的第k個位元與儲存在記憶體單元中的第一權重資料元相乘包括產生及響應於一或多個控制信號,例如,由上文第1A圖至第5圖論述的控制電路150產生的一或多個控制信號CTRL。
在一些實施例中,使用記憶體單元行將對應輸入資料元的第k個位元與儲存在記憶體單元中的第一權重資料元相乘包括執行下文關於第9圖論述的方法900的一些或全部。
在操作1050處,加法器樹用於基於第一乘積資料元中的各者產生求和資料元。在一些實施例中,使用加法器樹基於第一乘積資料元中的各者產生求和資料元包括使用加法器樹122基於上文關於第1A圖至第5圖論述的乘積資料元Pmn及/或Pm(n+1)產生求和資料元SD1至SDM的實例。
在一些實施例中,使用加法器樹產生求和資料元包括使用上文關於第4圖論述的加法器樹400。
在一些實施例中,使用加法器樹產生求和資料元包括使用複數個加法器樹產生複數個求和資料元,例如,如上文關於第1A圖至第5圖論述的求和資料元SD1至SDM。
在一些實施例中,使用加法器樹產生求和資料元包括在加法器樹處接收第一乘積資料元。在一些實施例中,在加法器樹處接收第一乘積資料元包括在加法器樹122處接收乘積資料元P11至PMN,如上文關於第1A圖至第5圖所論述。
在一些實施例中,使用加法器樹產生求和資料元包括在加法器樹處接收和資料元。在一些實施例中,在加法器樹處接收和資料元包括在加法器樹122處接收和資料元S11至SML,如上文關於第1A圖至第5圖所論述。
在一些實施例中,使用加法器樹產生求和資料元包括使用多工器將加法器樹耦接至選擇的記憶體單元,例如,使用上文關於第6圖論述的多工器MA。
在一些實施例中,使用加法器樹基於第一乘積資料元中的各者產生求和資料元包括產生及響應於一或多個控制信號,例如,藉由上文關於第1A圖至第5圖論述的控制電路150產生的一或多個控制信號CTRL。
在一些實施例中,使用加法器樹基於第一乘積資料元中的各者產生求和資料元包括執行下文關於第9圖論述的方法900的一些或全部。
在操作1060處,累加器用於基於求和資料元產生部分和。在一些實施例中,使用累加器基於求和資料元產生部分和包括使用累加器140基於對應求和資料元SD1至SDM產生部分和PS1至PSM,如上文關於第1A圖至第5圖所論述。
在一些實施例中,使用累加器產生部分和包括將第一求和資料元與儲存在資料暫存器中且由移位器移位的第二求和資料元相加。在一些實施例中,將第一求和資料元與第二求和資料元相加同步於選擇電路依序輸出第k個位元集合。在一些實施例中,使用累加器產生部分和包括使用累加器500產生部分和PSm,如上文關於第5圖所論述。
在一些實施例中,使用累加器基於求和資料元產生部分和包括使用複數個累加器產生複數個部分和資料元,例如,如上文關於第1A圖至第5圖論述的部分和資料元PS1至PSM。
在一些實施例中,使用該些累加器產生該些部分和包括使用第一累加器基於由第二累加器產生的第二部分和產生第一部分和,例如,使用累加器140的第一實例基於部分和PS2產生部分和PS1,如上文關於第7A圖所論述。
在一些實施例中,使用該些累加器產生該些部分和包括使用一加法器基於由多個累加器產生的多個部分和產生一部分和,例如,使用加法器ADDSUM基於部分和PS1至PS4產生部分和OSUM,如上文關於第7B圖所論述。
在一些實施例中,使用累加器基於求和資料元產生部分和包括產生及響應於一或多個控制信號,例如,藉由上文關於第1A圖至第5圖論述的控制電路150產生的一或多個控制信號CTRL。
在一些實施例中,使用累加器基於求和資料元產生部分和包括執行下文關於第9圖論述的方法900的一些或全部。
在操作1070處,在一些實施例中,重複操作1010至1060的一些或全部。在一些實施例中,重複操作1010至1060的一些或全部包括同步操作1010至1060的一些或全部的執行。在一些實施例中,重複操作1010至1060的一些或全部包括遞增計數器,例如,上文關於第1A圖至第9圖論述的計數器k。在一些實施例中,重複操作1010至1060的一些或全部包括產生一或多個控制信號,例如,使用控制電路150產生控制信號CTRL中的一或多者,如上文關於第1A圖至第5圖所論述。
在一些實施例中,重複操作1010至1060的一些或全部包括執行上文關於第9圖論述的方法900的一些或全部。
在一些實施例中,重複操作1010至1060的一些或全部包括使用累加器基於H個求和資料元產生部分和,例如,使用累加器140基於對應求和資料元SD1至SDM中的H個實例產生部分和PS1至PSM,如上文關於第1A圖至第5圖所論述。
在一些實施例中,重複操作1010至1060的一些或全部包括將由選擇電路輸出的第k個位元的集合與對應第一權重資料元依序相乘,由此產生複數個第一乘積資料元,例如,上文關於第3A圖及第3B圖論述的第一乘積資料元Pmn。
在一些實施例中,重複操作1010至1060的一些或全部包括將由選擇電路輸出的第k個位元的集合與對應第二權重資料元依序相乘,由此產生複數個第二乘積資料元,例如,上文關於第3B圖論述的第二乘積資料元Pm(n+1)。
在一些實施例中,重複操作1010至1060的一些或全部包括使用加法器樹基於該些第一乘積資料元、及在一些實施例中進一步基於該些第二乘積資料元產生H個求和資料元。
在一些實施例中,該些輸入資料元係複數個輸入資料元的集合中的第一複數個輸入資料元,且重複操作1010至1060的一些或全部包括依序接收複數個輸入資料元的集合中的各複數個輸入資料元,及執行操作1010至1060的一些或全部以基於複數個輸入資料元的集合中的各複數個輸入資料元及單一複數個權值資料元來產生一或多個部分和。
藉由執行方法1000的操作的一些或全部,基於記憶體內運算產生部分和,由此實現上文關於記憶體電路100A及100B論述的益處。在基於複數個輸入資料元的集合中的各複數個輸入資料元及單一複數個權值資料元產生一或多個部分和的實施例中,與單一複數個權值資料元未重複用於多個記憶體內部分和運算的方法相比,功率位準進一步降低。
在一些實施例中,記憶體電路包括用以接收複數個輸入資料元(該些輸入資料元中的各輸入資料元包括等於N的數目個位元)且輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的經選擇的集合的選擇電路、記憶體單元行(記憶體單元行的各記憶體單元包括用以儲存第一權重資料元的第一儲存單元及用以基於第一權重資料元及第k個位元的經選擇的集合中的第一第k個位元產生第一乘積資料元的第一乘法器)及用以基於第一乘積資料元中的各者產生求和資料元的加法器樹。在一些實施例中,第一權重資料元係多位元資料元。在一些實施例中,記憶體單元行的各記憶體單元包括用以儲存第二權重資料元的第二儲存單元,用以基於第二權重資料元及第k個位元的經選擇的集合中的第二第k個位元產生第二乘積資料元的第二乘法器,及用以自第一及第二乘積資料元產生和資料元的加法器,其中加法器樹用以基於和資料元中的各者產生求和資料元。在一些實施例中,求和資料元係H個求和資料元中的一求和資料元,選擇電路用以自第一個位元至第H個位元依序輸出第k個位元的集合,加法器樹用以基於依序輸出第k個位元的集合產生H個求和資料元中的各者,及記憶體電路包括用以基於H個求和資料元產生部分和的累加器。在一些實施例中,記憶體電路包括控制電路,控制電路用以產生由選擇電路及累加器接收的一或多個控制信號,記憶體電路由此用以同步於選擇電路依序輸出第k個位元的集合產生部分和。在一些實施例中,記憶體單元行係複數個記憶體單元行中的一行,各記憶體單元行用以接收各複數個位元中的H個位元中的第k個位元的經選擇的集合;加法器樹係複數個加法器樹中的一加法器樹,加法器樹耦接至該些記憶體單元行中的對應行;累加器係複數個累加器中的一累加器,累加器耦接至該些加法器樹中的對應加法器樹,且該些累加器中的各累加器用以基於由該些加法器樹中的對應加法器樹產生的H個求和資料元產生對應部分和。在一些實施例中,該些累加器中的至少一累加器用以基於由該些累加器中的另一累加器產生的部分和產生對應部分和。在一些實施例中,各第一儲存單元包括SRAM裝置,SRAM裝置用以儲存第一權重資料元的一些或全部。在一些實施例中,記憶體電路包括I/O電路,I/O電路用以將各第一權重資料元儲存在對應第一儲存單元中。
在一些實施例中,操作記憶體電路的方法包括在記憶體單元行處接收該些輸入資料元中的各輸入資料元的H數目個位元中的第k個位元的集合;使用記憶體單元行的各記憶體單元將該些資料元中的對應輸入資料元的第k個位元與儲存在記憶體單元中的第一權重資料元相乘,由此產生對應第一乘積資料元;及使用加法器樹基於第一乘積資料元的各者產生求和資料元。在一些實施例中,使用記憶體單元行的各記憶體單元將該些資料元中的對應輸入資料元的第k個位元與第一權重資料元相乘包括使用記憶體單元行的各記憶體單元將該些資料元中的另一對應輸入資料元的第k個位元與儲存在記憶體單元的第二權重資料元相乘,由此產生第二乘積資料元,及將第一乘積資料元與第二乘積資料元相加以產生和資料元,其中使用加法器樹產生求和資料元係基於對應和資料元的各者。在一些實施例中,方法包括使用選擇電路依序輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合,及使用累加器基於H個求和資料元產生部分和,其中使用記憶體單元行的各記憶體單元將該些資料元中的輸入資料元的第k個位元與第一權重資料元相乘包括將各第k個位元與第一權重資料元依序相乘,由此產生複數個第一乘積資料元;及使用加法器樹基於第一乘積資料元的各者產生求和資料元包括使用加法器樹基於該些第一乘積資料元產生H個求和資料元。在一些實施例中,接收該些輸入資料元中的各輸入資料元的第k個位元包括在複數個記憶體單元行的各記憶體單元行處接收第k個位元的集合;使用記憶體單元行的各記憶體單元將第k個位元與第一權重資料元相乘包括使用該些記憶體單元行中的各記憶體單元行的各記憶體單元將第k個位元與儲存在記憶體單元中的對應第一權重資料元相乘,由此產生對應第一乘積資料元;使用加法器樹產生求和資料元包括基於第一乘積資料元使用複數個加法器樹產生複數個求和資料元;及使用累加器產生部分和包括使用複數個累加器基於對應H個求和資料元產生複數個部分和。在一些實施例中,使用該些累加器產生該些部分和包括使用第一累加器基於由第二累加器產生的第二部分和產生第一部分和。在一些實施例中,使用累加器產生部分和包括將第一求和資料元與儲存在資料暫存器中且由移位器移位的第二求和資料元相加,且將第一求和資料元與第二求和資料元相加係同步於選擇電路依序輸出第k個位元的集合。在一些實施例中,使用選擇電路依序輸出該些輸入資料元中的各輸入資料元的H個位元中的第k個位元的集合包括自LSB至MSB輸出第k個位元的集合。在一些實施例中,方法包括基於第一電源電壓位準將第一權重資料元儲存在記憶體單元行的各記憶體單元中,其中使用記憶體單元行的各記憶體單元將第k個位元與第一權重資料元相乘及使用加法器樹產生求和資料元中的各者係基於低於第一電源電壓位準的第二電源電壓位準。
在一些實施例中,記憶體電路包括一選擇電路,選擇電路用以針對各包含H個位元的複數個輸入資料元,將第k個位元的經選擇的集合依序輸出至複數個記憶體單元行中的各記憶體單元行的對應記憶體單元;複數個加法器樹,該些加法器樹中的各加法器樹耦接至該些記憶體單元行中的對應記憶體單元行;及複數個累加器,該些累加器中的各累加器耦接至該些加法器樹的對應加法器樹。各記憶體單元行的各記憶體單元包括乘法器,乘法器用以基於第k個位元的經選擇的集合中的對應第k個位元及儲存在記憶體單元中的權重資料元產生乘積資料元;該些加法器樹中的各加法器樹用以針對第k個位元的各依序輸出集合,基於對應記憶體單元行的乘積資料元的各者產生求和資料元;及該些累加器中的各累加器用以基於由該些加法器樹中的對應加法器樹產生的求和資料元產生部分和。在一些實施例中,該些加法器樹中的各加法器樹包括第一加法器,第一加法器用以接收第一及第二和資料元及輸出具有第一位元數目個位元的求和資料元;及第二及第三加法器,該第二或第三加法器用以基於對應記憶體單元行的乘積資料元輸出第一及第二和資料元,第一及第二和資料元中的各者具有比第一位元數目少一的第二位元數目個位元。在一些實施例中,該些加法器樹中的至少一加法器樹經由多工器耦接至該些記憶體單元行中的對應記憶體單元行。
前述內容概述幾個實施例的特徵,使得熟習此項技術者可更佳地理解本揭示內容的態樣。熟習此項技術者應瞭解,該些技術者可容易將本揭示內容用作作爲設計或修改用於實現本文中介紹的實施例的相同目的及/或達成與本文中介紹的實施例的相同優優點的其他製程及結構的基礎。熟習此項技術者亦應認識到,此等等效構造不背離本揭示內容的精神及範疇,且該些技術者可在不背離本揭示內容的精神及範疇的情況下作出本文中的各種改變、取代及改動。
100A:記憶體電路 100B:記憶體電路 110:選擇電路 120A:記憶體陣列 120B:記憶體陣列 122:加法器樹 130:I/O電路 140:累加器 150:控制電路 152:處理器 154:電腦可讀儲存媒體 200:選擇電路 200R:資料暫存器 300A:記憶體單元 300B:記憶體單元 400:加法器樹 500:累加器 900:方法 910:操作 920:操作 930:操作 940:操作 950:操作 1000:方法 1010:操作 1020:操作 1030:操作 1040:操作 1050:操作 1060:操作 1070:操作
本揭示內容的態樣將在結合附圖閱讀時自以下詳細描述最佳地瞭解。應注意,根據行業中的標準慣例,各種特徵未按比例繪製。實際上,各種特徵的尺寸可為了論述清楚經任意地增大或減小。 第1A圖及第1B圖係根據一些實施例的記憶體電路的圖。 第2圖係根據一些實施例的選擇電路的圖。 第3A圖及第3B圖係根據一些實施例的記憶體單元的圖。 第4圖係根據一些實施例的加法器樹的圖。 第5圖係根據一些實施例的累加器的圖。 第6圖係根據一些實施例的記憶體陣列的部分的圖。 第7A圖及第7B圖係根據一些實施例的記憶體電路的部分的圖。 第8圖係根據一些實施例的記憶體電路工作電壓的圖。 第9圖係根據一些實施例的操作記憶體電路的方法的流程圖。 第10圖係根據一些實施例的操作記憶體電路的方法的流程圖。
國內寄存資訊(請依寄存機構、日期、號碼依序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼依序註記) 無
1000:方法
1010:操作
1020:操作
1030:操作
1040:操作
1050:操作
1060:操作
1070:操作

Claims (20)

  1. 一種記憶體電路,包含: 一選擇電路,用以 接收複數個輸入資料元,該些輸入資料元中的各輸入資料元包含等於H的數目個位元,以及 輸出該些輸入資料元中的各輸入資料元的該H個位元的多個第k個位元的一經選擇的集合; 一記憶體單元行,該記憶體單元行的各記憶體單元包含: 一第一儲存單元,用以儲存一第一權重資料元;及 一第一乘法器,用以基於該第一權重資料元及多個第k個位元的該經選擇的集合中的一對應第一第k個位元產生一第一乘積資料元;及 一加法器樹,用以基於該些第一乘積資料元中的各者產生一求和資料元。
  2. 如請求項1所述之記憶體電路,其中該第一權重資料元係一多位元資料元。
  3. 如請求項1所述之記憶體電路,其中該記憶體單元行的各記憶體單元進一步包含: 一第二儲存單元,用以儲存一第二權重資料元; 一第二乘法器,用以基於該第二權重資料元及多個第k個位元的該經選擇的集合中的一對應第二第k個位元產生一第二乘積資料元;及 一加法器,用以自該第一乘積資料元及該第二乘積資料元產生一和資料元, 其中該加法器樹用以基於該些和資料元中的各者產生該求和資料元。
  4. 如請求項1所述之記憶體電路,其中 該求和資料元係H個求和資料元中的一個求和資料元, 該選擇電路用以自一第一個位元至一第H個位元依序輸出多個第k個位元的集合, 該加法器樹用以基於該依序輸出多個第k個位元的集合產生該H個求和資料元中的各者,且 該記憶體電路進一步包含一累加器,該累加器用以基於該H個求和資料元產生一部分和。
  5. 如請求項4所述之記憶體電路,進一步包含一控制電路,該控制電路用以產生由該選擇電路及該累加器接收的一或多個控制信號,該記憶體電路由此用以同步於該選擇電路依序輸出多個第k個位元的該些集合產生該部分和。
  6. 如請求項4所述之記憶體電路,其中 該記憶體單元行係複數個記憶體單元行中的一個行,各記憶體單元行用以接收複數個位元的各者中的該H個位元中的多個第k個位元的該經選擇的集合, 該加法器樹係複數個加法器樹中的一個加法器樹,該些加法器樹耦接至該些記憶體單元行中的多個對應行, 該累加器係複數個累加器中的一個累加器,該些累加器耦接至該些加法器樹中的多個對應加法器樹,且 該些累加器中的各累加器用以基於由該些加法器樹中的該對應加法器樹產生的該H個求和資料元產生一對應部分和。
  7. 如請求項6所述之記憶體電路,其中該些累加器中的至少一累加器用以基於由該些累加器中的另一累加器產生的一部分和產生該對應部分和。
  8. 如請求項1所述之記憶體電路,其中各第一儲存單元包含一靜態隨機存取記憶體裝置,該靜態隨機存取記憶體裝置用以儲存該第一權重資料元的一些或全部。
  9. 如請求項1所述之記憶體電路,進一步包含一輸入/輸出電路,該輸入/輸出電路用以將各第一權重資料元儲存在該對應第一儲存單元中。
  10. 一種操作一記憶體電路的方法,包含: 在一記憶體單元行處接收複數個輸入資料元中的各輸入資料元的H數目個位元的多個第k個位元的一集合; 使用該記憶體單元行的各記憶體單元將該些資料元中的一對應輸入資料元的該第k個位元與儲存在該記憶體單元中的一第一權重資料元相乘,以產生一對應第一乘積資料元;及 使用一加法器樹基於該些第一乘積資料元中的各者產生一求和資料元。
  11. 如請求項10所述之方法,其中該使用該記憶體單元行的各記憶體單元將該些資料元中的該對應輸入資料元的該第k個位元與該第一權重資料元相乘包含使用該記憶體單元行的各記憶體單元以進行以下操作: 將該些資料元中的另一對應輸入資料元的該第k個位元與儲存在該記憶體單元中的一第二權重資料元相乘,以產生一第二乘積資料元;且 將該第一乘積資料元與該第二乘積資料元相加以產生一和資料元, 其中該使用該加法器樹產生該求和資料元係基於該些對應和資料元中的各者。
  12. 如請求項10所述之方法,進一步包含: 使用一選擇電路依序輸出該些輸入資料元中的各輸入資料元的該H個位元中的多個第k個位元的多個集合;及 使用一累加器基於H個求和資料元產生一部分和, 其中 該使用該記憶體單元行的各記憶體單元將該些資料元中的該對應輸入資料元的該第k個位元與該第一權重資料元相乘包含:將各第k個位元與該第一權重資料元依序相乘,以產生複數個第一乘積資料元;且 該使用該加法器樹基於該些第一乘積資料元中的各者產生該求和資料元包含:使用該加法器樹基於該些第一乘積資料元產生該H個求和資料元。
  13. 如請求項12所述之方法,其中 該接收該些輸入資料元中的各輸入資料元的多個第k個位元的該集合包含:在複數個記憶體單元行中的各記憶體單元行處接收多個第k個位元的該集合, 該使用該記憶體單元行的各記憶體單元將該第k個位元與該第一權重資料元相乘包含:使用該些記憶體單元行中的各記憶體單元行的各記憶體單元將該第k個位元與儲存在該記憶體單元中的一對應第一權重資料元相乘,以產生該對應第一乘積資料元, 該使用該加法器樹產生該求和資料元包含:使用複數個加法器樹基於該些第一乘積資料元產生複數個求和資料元,且 該使用該累加器產生該部分和包含:使用複數個累加器基於對應H個求和資料元產生複數個部分和。
  14. 如請求項13所述之方法,其中該使用該些累加器產生該些部分和包含:使用一第一累加器基於由一第二累加器產生的一第二部分和產生一第一部分和。
  15. 如請求項12所述之方法,其中 該使用該累加器產生該部分和包含:將一第一求和資料元與儲存在一資料暫存器中且由一移位器移位的一第二求和資料元相加,且 該將該第一求和資料元與該第二求和資料元相加係同步於該選擇電路依序輸出多個第k個位元的該些集合。
  16. 如請求項12所述之方法,其中該使用該選擇電路依序輸出該些輸入資料元中的各輸入資料元的該H個位元中的多個第k個位元的該些集合包含:自一最低有效位元至一最高有效位元輸出多個第k個位元的該些集合。
  17. 如請求項10所述之方法,該方法進一步包含: 基於一第一電源電壓位準將該第一權重資料元儲存在該記憶體單元行的各記憶體單元中, 其中該使用該記憶體單元行的各記憶體單元將該第k個位元與該第一權重資料元相乘及該使用該加法器樹產生該求和資料元中的各者係基於低於該第一電源電壓位準的一第二電源電壓位準。
  18. 一種記憶體電路,包含: 一選擇電路,用以針對各包含H個位元的複數個輸入資料元,依序輸出多個第k個位元的多個經選擇的集合至複數個記憶體單元行中的各記憶體單元行的多個對應記憶體單元; 複數個加法器樹,該些加法器樹中的各加法器樹耦接至該些記憶體單元行中的一對應記憶體單元行;及 複數個累加器,該些累加器中的各累加器耦接至該些加法器樹中的一對應加法器樹, 其中 各記憶體單元行的各記憶體單元包含一乘法器,該乘法器用以基於多個第k個位元的該經選擇的集合中的該對應第k個位元及儲存在該記憶體單元中的一權重資料元產生一乘積資料元, 該些加法器樹中的各加法器樹用以針對多個第k個位元的依序輸出的各集合,基於該對應記憶體單元行的該些乘積資料元中的各者產生一求和資料元,且 該些累加器中的各累加器用以基於由該些加法器樹中的該對應加法器樹產生的該些求和資料元產生一部分和。
  19. 如請求項18所述之記憶體電路,其中該些加法器樹中的各加法器樹包含: 一第一加法器,該第一加法器用以接收一第一和資料元及一第二和資料元,及輸出具有一第一位元數目個位元的該些求和資料元;及 一第二加法器及一第三加法器,該第二加法器及該第三加法器用以基於該對應記憶體單元行的該些乘積資料元輸出該第一和資料元及該第二和資料元,該第一和資料元及該第二和資料元中的各者具有比該第一位元數目少一的一第二位元數目個位元。
  20. 如請求項18所述之記憶體電路,其中該些加法器樹中的至少一加法器樹經由一多工器耦接至該些記憶體單元行中的該對應記憶體單元行。
TW110118621A 2020-07-14 2021-05-24 記憶體電路及其操作方法 TWI771014B (zh)

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 (2)

Publication Number Publication Date
TW202203053A true TW202203053A (zh) 2022-01-16
TWI771014B TWI771014B (zh) 2022-07-11

Family

ID=76920518

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110118621A TWI771014B (zh) 2020-07-14 2021-05-24 記憶體電路及其操作方法

Country Status (7)

Country Link
US (1) US20220019407A1 (zh)
EP (1) EP3940527A1 (zh)
JP (1) JP2022018112A (zh)
KR (1) KR102555621B1 (zh)
CN (1) CN113571109A (zh)
DE (1) DE102021107093A1 (zh)
TW (1) TWI771014B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022117853A (ja) * 2021-02-01 2022-08-12 パナソニックIpマネジメント株式会社 診断回路、電子デバイス及び診断方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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

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
TWI771014B (zh) 2022-07-11
DE102021107093A1 (de) 2022-01-20
US20220019407A1 (en) 2022-01-20
JP2022018112A (ja) 2022-01-26

Similar Documents

Publication Publication Date Title
Haj-Ali et al. Efficient algorithms for in-memory fixed point multiplication using magic
US11886378B2 (en) Computer architecture with resistive processing units
Zidan et al. Field-programmable crossbar array (FPCA) for reconfigurable computing
US20220188604A1 (en) Method and Apparatus for Performing a Neural Network Operation
TW202044016A (zh) 以sram為基礎的記憶體系統中處理
US11537861B2 (en) Methods of performing processing-in-memory operations, and related devices and systems
US11211115B2 (en) Associativity-agnostic in-cache computing memory architecture optimized for multiplication
US9933998B2 (en) Methods and apparatuses for performing multiplication
TWI771014B (zh) 記憶體電路及其操作方法
CN114974337B (zh) 一种基于自旋磁随机存储器的时间域存内计算电路
Monga et al. A Novel Decoder Design for Logic Computation in SRAM: CiM-SRAM
US20230005529A1 (en) Neuromorphic device and electronic device including the same
CN113553028B (zh) 基于概率比特电路的问题求解优化方法及系统
Kim et al. An energy-efficient processing-in-memory architecture for long short term memory in spin orbit torque mram
CN108109655B (zh) 基于mig逻辑的rram迭代乘法器电路及实现方法
US11853596B2 (en) Data sequencing circuit and method
Jao et al. Technology-assisted computing-in-memory design for matrix multiplication workloads
TWI844086B (zh) 輸入電路、記憶電路及其操作方法
US12032959B2 (en) Non-volatile memory die with latch-based multiply-accumulate components
Tasnim et al. MAGIC-DHT: Fast in-memory computing for Discrete Hadamard Transform
CN117807021B (zh) 2t-2mtj存算单元和mram存内计算电路
TWI842375B (zh) 讀取記憶體的方法及記憶體裝置
US20230418557A1 (en) Data computation circuit and method
US20230161557A1 (en) Compute-in-memory devices and methods of operating the same
Rayapati et al. VPU-CIM: A 130nm, 33.98 TOPS/W RRAM based Compute-In-Memory Vector Co-Processor