TWI812117B - 用於記憶體內計算(cim)的記憶體元件及方法 - Google Patents

用於記憶體內計算(cim)的記憶體元件及方法 Download PDF

Info

Publication number
TWI812117B
TWI812117B TW111111434A TW111111434A TWI812117B TW I812117 B TWI812117 B TW I812117B TW 111111434 A TW111111434 A TW 111111434A TW 111111434 A TW111111434 A TW 111111434A TW I812117 B TWI812117 B TW I812117B
Authority
TW
Taiwan
Prior art keywords
memory
weight data
data
read
weight
Prior art date
Application number
TW111111434A
Other languages
English (en)
Other versions
TW202309899A (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 TW202309899A publication Critical patent/TW202309899A/zh
Application granted granted Critical
Publication of TWI812117B publication Critical patent/TWI812117B/zh

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • 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/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1057Data output buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • 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/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • 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/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1069I/O lines read out arrangements
    • 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/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • 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/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/12Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/18Bit line organisation; Bit line lay-out
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/16Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4814Non-logic devices, e.g. operational amplifiers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Memory System (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Communication Control (AREA)

Abstract

本揭露提供一種用於記憶體內計算(CIM)的記憶體元件 及方法。記憶體元件具有包括儲存權重資料的記憶體區段的記憶陣列、耦接至記憶體區段並且被配置成保存將在記憶體區段中更新的新的權重資料的權重緩衝器、邏輯電路以及耦接至邏輯電路的輸出的計算電路。邏輯電路更具有:藉由位元線耦接至記憶體區段的第一輸入;以及被配置成接收輸入資料的第二輸入。邏輯電路被配置成在輸出處產生與輸入資料及經由位元線自記憶體區段讀取的權重資料對應的中間資料。計算電路被配置成基於中間資料產生輸出資料,輸出資料與對輸入資料及自至少一個記憶體區段讀取的權重資料執行的計算相對應。

Description

用於記憶體內計算(CIM)的記憶體元件及方法
本揭露是有關於一種記憶體元件及以及操作記憶體元件的方法,且特別是有關於一種用於記憶體內計算(computing-in-memory,CIM)的記憶體元件及操作記憶體元件的。
人工智慧領域的最新發展已經產生了各種產品及/或應用,包括但不限於話音辨識、影像處理、機器學習、自然語言處理等。此種產品及/或應用常常使用神經網路來處理大量資料,以進行學習、訓練、認知計算等。
本揭露的記憶體元件包括記憶陣列、至少一個權重緩衝器、至少一個邏輯電路以及計算電路。記憶陣列包括被配置成儲存權重資料的至少一個記憶體區段。所述至少一個權重緩衝器耦接至所述至少一個記憶體區段。所述至少一個權重緩衝器保存將 在所述至少一個記憶體區段中更新的新的權重資料。所述至少一個邏輯電路具有第一輸入、第二輸入以及輸出。第一輸入藉由至少一條位元線耦接至所述至少一個記憶體區段。第二輸入接收輸入資料。計算電路耦接至所述至少一個邏輯電路的輸出。所述至少一個邏輯電路被配置成在輸出處產生與輸入資料及經由所述至少一條位元線自所述至少一個記憶體區段讀取的權重資料對應的中間資料。計算電路被配置成基於中間資料產生輸出資料,輸出資料與對輸入資料及自所述至少一個記憶體區段讀取的權重資料執行的計算相對應。
本揭露的操作記憶體元件的方法包括同時進行以下的操作:使用自記憶體元件的記憶體區段中的多個記憶胞中的第一記憶胞讀取的第一筆權重資料來執行記憶體內計算(CIM)操作;以及更新記憶體區段中的所述多個記憶胞中的第二記憶胞中的第二筆權重資料,第二記憶胞不同於第一記憶胞。
本揭露的記憶體元件包括記憶陣列、輸入驅動器以及乘法累加(MAC)電路。記憶陣列包括多個記憶體區段、多條寫入位元線以及多條讀取位元線。所述多個記憶體區段儲存用於記憶體內計算(CIM)操作的權重資料。所述多條寫入位元線耦接至所述多個記憶體區段,以更新儲存在所述多個記憶體區段中的權重資料。所述多條讀取位元線耦接至所述多個記憶體區段,以讀出儲存在所述多個記憶體區段中用於記憶體內計算操作的權重資料。輸入驅動器耦接至多條輸入資料線並藉由所述多條輸入資料 線供應輸入資料。乘法累加(MAC)電路耦接至所述多條讀取位元線及所述多條輸入資料線。乘法累加(MAC)電路基於自所述多個記憶體區段讀出的權重資料及自輸入驅動器供應的輸入資料來執行記憶體內計算操作。
100A、100B、200A、234、300、400A、400C、400D、500A、500B、500C、600、700:記憶體元件
105:第一記憶體區段
107:第二記憶體區段
110、130、202、204、206、208、330、630、630_1、630_2、630_63:記憶體巨集
112、132、602:記憶陣列
113、133、135、400E、MC、MC[0]、MC[1]、MC[2]、MC[N]:記憶胞
114、351、352、353、414、514、614:權重緩衝器
115、415、525、535:暫存器
116、416、516、526、646:邏輯電路
117:計算電路
119、Y[1]、Y[M-1]、Y[M]:中間資料
120:記憶體控制器/控制器
122:字元線驅動器
124:位元線驅動器
126:控制電路
128、328:輸入緩衝器
200B:神經網路
200C:積體電路(IC)元件
211:輸入資料
212、214、216、218:矩陣
219:輸出資料
220:記憶體控制器
232:硬體處理器/處理器
236:匯流排
256、642:權重解多工器
341、342、343、412、512、522、612:記憶體區段
361、362、363:邏輯電路/Reg+LOC電路
370、417、651:MAC電路
400B、805、815、825:操作
422、424、426、428、430:脈衝
436、670、671、672、673:反或閘
446:及閘
510:多埠記憶胞
520:多讀取埠記憶胞
536:邏輯電路
641:寫入位址解多工器
643:讀取位址解多工器
644:輸入驅動器
645、XINLB、XINLB[0]~[3]:資料線
647、648、649:加法器
650:加法器樹
652:位元移位器及累加器
660:輸入驅動器塊
661:正反器
662:MUX
702、712、714、716、718、720、722、724、745、746、747:部分
704:加法器區域
708、711:記憶體行
710:箭頭
732、734、736、738:第三級加法器
740、742:第四級加法器
744:第五級加法器
750:FA胞元
751、752、753、754、755、756、757、758、759、760:PMOS電晶體
761、762、763、764、765、766、767、768、769、770:NMOS電晶體
771、772、INV1、INV2、INV3、INV4:反相器
781、782:第一級加法器
783、784:第二級加法器
800:方法
A、B:層/節點
A1、B1、CI、CO、Q、QB、S:節點
ACM_EN、SIGN:控制訊號
BL、BL1、BL2、BLt:位元線/資料線
BLB:互補位元線/位元線
C、D、E:層
CIM[0]、CIM[1]:CIM操作
CLK、CLKR:時脈訊號
D_IN、DIN、DIN4、DIN6、DIN8、IN、XIN[3:0]:輸入資料
D_OUT、DOUT、DOUT2、DOUT4、DOUT6:輸出資料
IN[1]、IN[M-1]、IN[M]:輸入資料區段
IN0:第一組輸入資料
IN1:第二組輸入資料
LCK:控制訊號
LOC1、LOC2:邏輯電路區域
LOC_1:第一輸入/輸入
LOC_2:第二輸入/輸入
LOC_Out:輸出
M1、M2:電晶體
MC:記憶胞
NOUT:CIM操作的結果
RA:讀取存取訊號
RBL、RBL1、RBL2、RBLB、RBLt:讀取位元線
RBLB1:第一讀取位元線/讀取位元線
RBLB2:第二讀取位元線/讀取位元線
RD[0]、RD[1]:讀取週期
Reg_In:輸入
Reg_Out:輸出
RP:讀取埠
RP1:讀取埠/第一讀取埠
RP2:讀取埠/第二讀取埠
RWL、RWLB、RWLr、RWL0_1[3:0]、RWLB0_1[3:0]、RWL1_2[3:0]、RWLB1_2[3:0]:讀取字元線
RWL1:第一讀取字元線/讀取字元線
RWL2:第二讀取字元線/讀取字元線
RWLB1:第一讀取字元線
RWLB2:第二讀取字元線
ST:儲存電路
TG1、TG2、TG3、TG4:傳輸閘
VDD:電源電壓
VSS:電壓
W[0]、W[1]、W[M-1]、W[M]、W[N]、W1,t、W1,1、W1,2、W2,1、W2,2、W2,t、Wr,1、Wr,2、Wn[0]、Wn[1]~Wn[N]、Wr,t:權重資料
W(A1,B1):權重
WA:寫入存取訊號
WBL、WBL1、WBL2、WBLB、WBLt:寫入位元線
WL、WL[0]、WL[1]、WL[N]、WL1、WL2、WLr、WWLB:字元線
WP:寫入埠
WWL、WWL1、WWLr:字元線/寫入字元線
WWL[7:0]、WWLB[7:0]、WWL[15:8]、WWLB[15:8]:寫入字元線
X、Y:方向
XINSEL[3:0]:選擇訊號/訊號
藉由結合附圖閱讀以下詳細說明,會最佳地理解本揭露的各態樣。應注意,根據行業中的標準慣例,各種特徵並非按比例繪製。事實上,為論述清晰起見,可任意增大或減小各種特徵的尺寸。
圖1A是根據一些實施例的記憶體元件的示意圖。
圖1B是根據一些實施例的記憶體元件的示意圖。
圖2A是根據一些實施例的記憶體元件的示意圖。
圖2B是根據一些實施例的神經網路的示意圖。
圖2C是根據一些實施例的積體電路(integrated circuit,IC)元件的示意圖。
圖3是根據一些實施例的記憶體元件的一部分的示意圖。
圖4A是根據一些實施例,與記憶體元件的記憶體區段對應的一部分的示意圖。
圖4B是根據一些實施例,在與記憶體元件的記憶體區段對應的一部分中的示例性操作的時序圖。
圖4C是根據一些實施例,與記憶體元件的記憶體區段對應 的一部分的示意圖。
圖4D是根據一些實施例,與記憶體元件的記憶體區段對應的一部分的示意圖。
圖4E是根據一些實施例的示例性單埠記憶胞的示意性電路圖。
圖5A是根據一些實施例,與記憶體元件的記憶體區段對應的一部分的示意圖。
圖5B是根據一些實施例,與記憶體元件的記憶體區段對應的一部分的示意圖。
圖5C是根據一些實施例,與記憶體元件的記憶體區段對應的一部分的示意圖。
圖6A是根據一些實施例的記憶體元件的示意圖。
圖6B是根據一些實施例,在記憶體元件中的輸入驅動器及對應邏輯電路的示意性電路圖。
圖7A是根據一些實施例的記憶體元件的示意圖。
圖7B是根據一些實施例,在記憶體元件中的加法器樹的一部分的示意性電路圖。
圖8是根據一些實施例的方法的流程圖。
以下揭露內容提供用於實施所提供標的的不同特徵的許多不同實施例或實例。以下闡述部件、值、操作、材料、排列等 的具體實例以簡化本揭露。當然,該些僅為實例且不旨在進行限制。設想其他部件、值、操作、材料、排列等。舉例而言,以下說明中將第一特徵形成於第二特徵「上方」或第二特徵「上」可包括其中第一特徵與第二特徵被形成為直接接觸的實施例,且亦可包括其中第一特徵與第二特徵之間可形成有附加特徵進而使得第一特徵與第二特徵可不直接接觸的實施例。另外,本揭露可能在各種實例中重複使用參考編號及/或字母。此種重複使用是出於簡潔及清晰的目的,而不是自身表示所論述的各種實施例及/或配置之間的關係。
被配置成執行記憶體內計算(computing-in-memory,CIM)操作的記憶體元件(在本文中亦稱為CIM記憶體元件)是可用的神經網路應用以及其他應用。一種CIM記憶體元件包括記憶陣列,所述記憶陣列被配置成儲存將在一或多個CIM操作中與輸入資料一起使用的權重資料。在一或多個CIM操作之後,記憶陣列中的權重資料被更新以用於進一步的CIM操作。
在一些實施例中,一或多個權重緩衝器被包括在含有儲存權重資料的記憶陣列的同一記憶體巨集(memory macro)中。一或多個權重緩衝器耦接至記憶陣列中對應的一或多個記憶體區段。在至少一個實施例中,自所述對應的一或多個權重緩衝器更新一或多個記憶體區段中的權重資料,同時其他記憶體區段被存取以獲得用於CIM操作的權重資料。在至少一個實施例中,自所述對應的權重緩衝器更新記憶體區段的一或多個記憶胞中的權重 資料,而同一記憶體區段的其他記憶胞中的權重資料用於CIM操作。因此,在一或多個實施例中,可同時執行權重資料更新與CIM操作。此與其他方法不同,在其他方法中,整個記憶陣列被存取用於CIM操作,且因此,每當執行權重資料更新時,CIM操作就停止。由於根據其他方法,權重資料更新與CIM操作不同時執行,因此此類方法可能遭受包括但不限於效能降低、處理時間增加、功耗增加等的一或多個問題。根據一些實施例的CIM記憶體元件可避免此類問題,在所述CIM記憶體元件中,可同時執行權重資料更新與CIM操作。在至少一個實施例中,由於一或多個權重緩衝器被包括在與儲存權重資料的記憶陣列相同的記憶體巨集中,因此可消除或者至少減小記憶體巨集外部的權重緩衝器的尺寸。此乃與需要外部權重緩衝器的其他方法的另一區別。相較於其他方法,在至少一個實施例中,無外部權重緩衝器或具有尺寸減小的外部權重緩衝器的CIM記憶體元件提供包括但不限於減小晶片面積、降低製造成本、提高效能等的一或多個優點。
圖1A是根據一些實施例的記憶體元件100A的示意圖。記憶體元件是一種積體電路(IC)元件。在至少一個實施例中,記憶體元件是個別的IC元件。在一些實施例中,記憶體元件被包括作為較大IC元件的一部分,所述較大IC元件包括不同於用於其他功能的記憶體元件的電路系統。
記憶體元件100A包括記憶體巨集110及記憶體控制器120。記憶體巨集110包括記憶陣列112、一或多個權重緩衝器 114、一或多個暫存器115、一或多個邏輯電路116及計算電路117。記憶體控制器120包括字元線驅動器122、位元線驅動器124、控制電路126及輸入緩衝器128。在一些實施例中,記憶體控制器120的一或多個組件被包括在記憶體巨集110中,及/或記憶體巨集110的一或多個組件(除記憶陣列112之外)被包括在記憶體控制器120中。
巨集具有可重用的配置,且可用於各種類型或設計的IC元件中。在一些實施例中,巨集在類似於模組化程式化的架構等級的上下文中進行理解,其中次常式/程序由主程式(或由其他次常式)調用以執行給定的計算功能。在此上下文中,IC元件使用巨集來執行一或多個給定的功能。因此,在此上下文中且就架構等級而言,IC元件類似於主程式,且巨集類似於次常式/程序。在一些實施例中,巨集是軟巨集。在一些實施例中,巨集是硬巨集。在一些實施例中,巨集是在暫存器轉移層次(register-transfer level,RTL)代碼中以數位方式描述的軟巨集。在一些實施例中,合成、放置及路由尚未在巨集上執行,使得可為各種過程節點合成、放置及路由軟巨集。在一些實施例中,巨集是以二進制文件格式(例如,圖形資料庫系統II(Graphic Database System II,GDSII)流格式)以數位方式描述的硬巨集,其中二進制文件格式以分等級形式表示巨集的一或多個佈局圖的平面幾何形狀、文本標籤、其他資訊等。在一些實施例中,已經對巨集執行了合成、放置及路由,使得硬巨集特定於特定的過程節點。
記憶體巨集是包括記憶胞的巨集,所述記憶胞是可定址的,以允許向記憶胞寫入資料或自記憶胞讀取資料。在一些實施例中,記憶體巨集更包括被配置成提供對記憶胞的存取及/或執行與記憶胞相關聯的進一步功能的電路系統。舉例而言,記憶體巨集110包括如本文中所述的記憶胞MC,並且權重緩衝器114、暫存器115、邏輯電路116及計算電路117形成被配置成提供與記憶胞MC相關聯的CIM功能的電路系統。在至少一個實施例中,被配置成提供CIM功能的記憶體巨集被稱為CIM巨集。所描述的巨集配置為實例。其他配置在各種實施例的範圍內。
記憶體巨集110的記憶胞MC被排列在記憶陣列112的多個行及列中。記憶體控制器120電性耦接至記憶胞MC,並且被配置成控制記憶胞MC的操作,所述操作包括但不限於讀取操作、寫入操作等。
記憶陣列112更包括沿列延伸的多條字元線(亦稱為「位址線」)WL1至WLr、以及沿記憶胞MC的行延伸的多條位元線(亦稱為「資料線」)BL1至BLt,其中r及t是自然數。各記憶胞MC藉由字元線中的至少一者及位元線中的至少一者電性耦接至記憶體控制器120。在一些示例性操作中,字元線被配置用於傳輸要自其讀取的記憶胞MC的位址,或者用於傳輸要寫入的記憶胞MC的位址等。在至少一個實施例中,一組字元線被配置成作為讀取字元線及寫入字元線兩者來執行。位元線的實例包括用於傳輸自由對應字元線指示的記憶胞MC讀取的資料的讀取位元線、用於 傳輸要寫入由對應字元線指示的記憶胞MC的資料的寫入位元線等。在至少一個實施例中,一組位元線被配置成作為讀取位元線及寫入位元線兩者來執行。字元線在本文中通常被稱為WL,且位元線在本文中通常被稱為BL。記憶陣列112中的各種數量的字元線及/或位元線在各種實施例的範圍內。記憶胞MC的示例性記憶體類型包括但不限於靜態隨機存取記憶體(static random-access memory,SRAM)、電阻隨機存取記憶體(resistive RAM,RRAM)、磁阻隨機存取記憶體(magnetoresistive RAM,MRAM)、相變隨機存取記憶體(phase change RAM,PCRAM)、自旋轉移力矩隨機存取記憶體(spin transfer torque RAM,STTRAM)、浮閘金屬氧化物半導體場效應電晶體(floating-gate metal-oxide-semiconductor field-effect transistors,FGMOS)、自旋電子學(spintronics)等。在本文中描述的一或多個示例性實施例中,記憶胞MC包括SRAM記憶胞。
在圖1A的示例性配置中,記憶胞MC是單埠記憶胞。在一些實施例中,記憶胞的埠由字元線WL及位元線BL的集合(在本文中稱為WL/BL集合)表示,所述字元線WL及位元線BL被配置成在讀取操作(即,讀取存取)及/或寫入操作(即,寫入存取)中提供對記憶胞的存取。單埠記憶胞具有一個WL/BL集合,所述集合被配置用於讀取存取及寫入存取兩者,但所述兩者不同時進行。多埠記憶胞具有幾個WL/BL集合,各所述WL/BL集合被配置成僅用於讀取存取,或僅用於寫入存取,或者用於讀取存 取及寫入存取兩者。參照圖1A、圖4E描述了單埠記憶胞的實例。參照圖1B、圖5A、圖5B、圖5C描述了多埠記憶胞的實例。
記憶陣列112包括多個記憶體區段。在一些實施例中,記憶體區段包括記憶體列、記憶體行、記憶體庫等。記憶體列包括耦接至同一字元線WL的多個記憶胞。記憶體行(亦稱為「記憶體串」)包括耦接至同一位元線BL的多個記憶胞。記憶體庫包括一個以上的記憶體列及/或一個以上的記憶體行。在至少一個實施例中,記憶體庫包括具有多個記憶體列及多個記憶體行的記憶陣列112的一部分。在一些實施例中,記憶體區段包括多個記憶體庫。在實例中,第一記憶體區段105包括耦接至位元線BL1的記憶胞MC的記憶體行,第二記憶體區段107包括耦接至位元線BL2的記憶胞MC的記憶體行等。將記憶陣列112分成多個記憶體區段的其他方式在各種實施例的範圍內。
各記憶胞MC被配置成儲存將在CIM操作中使用的一筆權重資料。在本文中描述的一或多個示例性實施例中,記憶胞MC是單位元記憶胞,即每個記憶胞被配置成儲存一位元的權重資料。此為實例,並且多位元記憶胞(其各自被配置成儲存多於一個位元的權重資料)在各種實施例的範圍內。在一些實施例中,單位元記憶胞亦被稱為位元胞(bitcell)。舉例而言,耦接至字元線WL1及位元線BLt的記憶胞113被配置成儲存一筆權重資料W1,t。儲存在多個記憶胞中的多筆權重資料的組合構成將在CIM操作中使用的權重值。為簡潔起見,儲存在記憶胞MC中的一筆 權重資料、儲存在多個記憶胞MC中的多筆權重資料、或者儲存在記憶陣列112的所有記憶胞MC中的所有多筆權重資料在本文中被稱為權重資料。
權重緩衝器114耦接至記憶陣列112,並且被配置成臨時保存要在記憶陣列112中更新的新的權重資料。在本文中描述的一些實施例中,每個記憶體區段耦接至對應的權重緩衝器。在本文中描述的一或多個實施例中,共用權重緩衝器耦接至幾個記憶體區段。權重緩衝器114經由位元線BL耦接至記憶陣列112中的記憶胞MC。在權重資料更新操作中,新的權重資料自權重緩衝器114並經由對應的位元線BL被寫入一或多個記憶胞MC中。如在圖1A中示意性示出,權重緩衝器114耦接至記憶體控制器120,以接收新的權重資料及/或控制訊號,所述控制訊號指定何時及/或在哪些記憶胞MC中將更新新的權重資料。在至少一個實施例中,自記憶體元件100A外部的外部電路系統(例如,在本文中描述的處理器)接收新的權重資料。新的權重資料經由記憶體控制器120的一或多個輸入/輸出(input/output,I/O)電路(未示出)接收,並被轉發至權重緩衝器114。示例性權重緩衝器包括但不限於暫存器、記憶胞或被配置用於資料儲存的其他電路組件。
暫存器115具有耦接至位元線BL的輸入,以接收自記憶胞MC中的一或多者讀出的權重資料。暫存器115被配置成鎖存自位元線BL接收的權重資料,並且經由暫存器115的輸出將鎖存的權重資料供應至邏輯電路116。因此,當如在本文中所述在邏輯 電路116及/或計算電路117處在CIM操作中使用鎖存的權重資料時,位元線BL可用於寫入操作中,以用來自權重緩衝器114的新的權重資料更新一或多個記憶胞MC。權重資料更新與CIM操作的同時執行提供一或多個優點,如本文中所述。暫存器115的實例包括正反器、鎖存器等。在一些實施例中,暫存器115中的每個暫存器耦接至記憶陣列112的位元線BL中的一條位元線。在一或多個實施例中,暫存器115中的一個暫存器(例如,多位元暫存器)耦接至記憶陣列112的位元線BL中的多條位元線。
根據一些實施例,除了所描述的對記憶體區段中的不同記憶胞同時執行權重資料更新及CIM操作之外,還可在不同的記憶體區段中同時執行權重資料更新及CIM操作。舉例而言,第一記憶體區段105中的權重資料藉由自權重緩衝器114中的對應權重緩衝器經由位元線BL1供應的新的權重資料來更新,而同時,經由不同的位元線BL2自第二記憶體區段107讀出的權重資料正被用於CIM操作中。在至少一個實施例中,不同位元線BL上不同資料的存在不影響或干擾同時執行的權重資料更新及CIM操作。
邏輯電路116具有耦接至暫存器115的輸出的輸入。邏輯電路116更具有被耦接以接收輸入資料D_IN的輸入,所述輸入資料D_IN將在CIM操作中與權重資料一起使用。在圖1A的示例性配置中,自記憶體控制器120中的輸入緩衝器128供應輸入資料D_IN。在一或多個實施例中,輸入資料D_IN是自記憶體元件 100A的另一記憶體巨集(未示出)供應的輸出資料。在一些實施例中,輸入資料D_IN以位元流的形式串列地供應至邏輯電路116,如本文中所述。邏輯電路116被配置成在其輸出處產生與輸入資料D_IN及自記憶胞MC中的一或多者讀取的權重資料對應的中間資料119。邏輯電路116的實例包括但不限於反或閘、及閘、任何其他邏輯閘、邏輯閘的組合等。
計算電路117耦接至邏輯電路116的輸出,並且被配置成基於自邏輯電路116輸出的中間資料119而產生與對輸入資料D_IN及自記憶胞MC中的一或多者讀取的權重資料執行的CIM操作對應的輸出資料D_OUT。CIM操作的實例包括但不限於數學運算、邏輯運算、其組合等。在一些實施例中,計算電路117被配置成將由多個邏輯電路116輸出的多個中間資料119組合成輸出資料D_OUT。在至少一個實施例中,計算電路117包括乘法累加(Multiply Accumulate,MAC)電路,並且CIM操作包括一或多個多位元權重值與一或多個多位元輸入資料值的乘法。被配置成執行除乘法之外的CIM操作的其他計算電路亦在各種實施例的範圍內。在一些實施例中,輸出資料D_OUT作為輸入資料被供應至記憶體元件100A的另一記憶體巨集(未示出)。在一或多個實施例中,輸出資料D_OUT經由記憶體控制器120的一或多個I/O電路(未示出)輸出至記憶體元件100A外部的外部電路系統,例如在本文中描述的處理器。
在圖1A的示例性配置中,控制器120包括字元線驅動器 122、位元線驅動器124、控制電路126及輸入緩衝器128。在至少一個實施例中,控制器120更包括用於為記憶體元件100A的各種部件提供時脈訊號的一或多個時脈發生器、用於與外部元件進行資料交換的一或多個輸入/輸出(I/O)電路、及/或用於控制記憶體元件100A中的各種操作的一或多個控制器。
字元線驅動器122經由字元線WL耦接至記憶陣列112。字元線驅動器122被配置成對在讀取操作或寫入操作中被選擇進行存取的記憶胞MC的列位址進行解碼。字元線驅動器122被配置成向與所解碼的列位址對應的所選字元線WL供應電壓,並且向其他未選擇的字元線WL供應不同的電壓。
位元線驅動器124經由位元線BL耦接至記憶陣列112。位元線驅動器124被配置成對在讀取操作或寫入操作中被選擇進行存取的記憶胞MC的行位址進行解碼。位元線驅動器124被配置成向與所解碼的行位址對應的所選位元線BL供應電壓,並且向其他未選擇的位元線BL供應不同的電壓。
控制電路126耦接至權重緩衝器114、暫存器115、邏輯電路116、計算電路117、字元線驅動器122、位元線驅動器124、輸入緩衝器128中的一或多者,以在記憶體元件100A的整體操作中協調該些電路、驅動器及/或緩衝器的操作。舉例而言,控制電路126被配置成產生各種控制訊號,用於控制權重緩衝器114、暫存器115、邏輯電路116、計算電路117、字元線驅動器122、位元線驅動器124、輸入緩衝器128中的一或多者的操作。
輸入緩衝器128被配置成自記憶體元件100A外部的外部電路系統(例如,在本文中描述的處理器)接收輸入資料。輸入資料經由記憶體控制器120的一或多個I/O電路(未示出)接收,並經由輸入緩衝器128轉發至邏輯電路116。示例性輸入緩衝器包括但不限於暫存器、記憶胞或被配置用於資料儲存的其他電路組件。
在至少一個實施例中,例如記憶體元件100A等CIM記憶體元件相較於在記憶體與處理器之間來回移動資料的其他方法具有優勢,乃因此種來回資料移動(其為效能及能量效率兩者的瓶頸)是可避免的。CIM應用的實例包括但不限於人工智慧、影像辨識、用於機器學習的神經網路等。在一些實施例中,記憶體元件100A使得在一或多個實施例中同時執行權重資料更新及CIM操作成為可能。此外,在記憶體巨集110中包括權重緩衝器114使得消除或者至少減小記憶體巨集110外部的外部權重緩衝器的尺寸成為可能。因此,在至少一個實施例中,可達成包括但不限於減少處理時間、減少功耗、減小晶片面積、降低製造成本、提高效能等的一或多個優點。
圖1B是根據一些實施例的記憶體元件100B的示意圖。具有圖1A中對應部件的圖1B中的部件由與圖1A中相同的參考編號表示。
記憶體元件100A與記憶體元件100B之間的區別在於:記憶體元件100A包括單埠記憶胞,而記憶體元件100B包括多埠 記憶胞。具體而言,記憶體元件100B包括具有記憶陣列132的記憶體巨集130,在記憶陣列132中,多埠記憶胞MC排列在多個列及行中。多條讀取字元線RWL1至RWLr(通常稱為「RWL」)及多條寫入字元線WWL1至WWLr(通常稱為「WWL」)沿著列延伸。多條讀取位元線RBL1至RBLt(通常稱為「RBL」)及多條寫入位元線WBL1至WBLt(通常稱為「WBL」)沿著行延伸。每個記憶胞MC耦接至一對讀取字元線RWL及讀取位元線RBL、以及另一對寫入字元線WWL及寫入位元線WBL。舉例而言,記憶胞133耦接至一對讀取字元線RWL1及讀取位元線RBLt、以及另一對寫入字元線WWL1及寫入位元線WBLt。對於每個記憶胞MC,RWL/RBL對(RWL/RBL pair)呈現讀取埠,而WWL/WBL對(WWL/WBL pair)呈現寫入埠。在一些實施例中,一組字元線WL被配置成寫入字元線及讀取字元線兩者。權重緩衝器114經由寫入位元線WBL耦接至記憶陣列132。在圖1B中的示例性配置中,省略了暫存器115,並且邏輯電路116耦接至讀取位元線RBL。在至少一個實施例中,暫存器115包括在記憶體元件100B中,並且以類似於記憶體元件100A的方式耦接在讀取位元線RBL與邏輯電路116之間。在一或多個實施例中,暫存器115在被包括在記憶體元件100B中時使得在邏輯電路116的輸入處將鎖存的權重資料保存一段延長的時間成為可能,若不包括暫存器115,此可能難以達成。
在至少一個實施例中,記憶陣列132的多埠記憶胞使得 同時執行權重資料更新及CIM操作成為可能。舉例而言,當在讀取操作中存取記憶胞133以讀出用於CIM操作的對應一筆權重資料W1,t時,所讀取的所述一筆權重資料W1,t經由對應的讀取位元線RBLt供應至邏輯電路116。同時,對同一行或記憶體串中的任何其他記憶胞執行權重資料更新。舉例而言,在對記憶胞133執行CIM操作的同時,記憶胞135中的所述一筆權重資料可藉由自權重緩衝器114經由對應的寫入位元線WBLt供應的一筆新的權重資料來更新。所描述的CIM操作及權重資料更新在兩個不同的位元線(即,讀取位元線RBLt及寫入位元線WBLt)上進行,而不會彼此影響或以其他方式彼此干擾。因此,在一或多個實施例中,可同時執行權重資料更新與CIM操作。在至少一個實施例中,在本文中關於記憶體元件100A描述的一或多個優點可由記憶體元件100B達成。
圖2A是根據一些實施例的記憶體元件200A的示意圖。
記憶體元件200A包括記憶體巨集202、204、206、208及記憶體控制器220。在一些實施例中,記憶體巨集202、204、206、208中的一或多者對應於記憶體巨集110、130中的一或多者,且/或記憶體控制器220對應於記憶體控制器120。在圖2A的示例性配置中,記憶體控制器220是記憶體巨集202、204、206、208的共用記憶體控制器。在至少一個實施例中,記憶體巨集202、204、206、208中的至少一者具有其自己的記憶體控制器。記憶體元件200A中的四個記憶體巨集的數量為實例。其他配置在各種實 施例的範圍內。
記憶體巨集202、204、206、208依次彼此耦接,其中前一個記憶體巨集的輸出資料是隨後記憶體巨集的輸入資料。舉例而言,輸入資料DIN被輸入至記憶體巨集202中。記憶體巨集202基於儲存在記憶體巨集202中的輸入資料DIN及權重資料執行一或多個CIM操作,並產生輸出資料DOUT2作為CIM操作的結果。輸出資料DOUT2被供應作為記憶體巨集204的輸入資料DIN4。記憶體巨集204基於儲存在記憶體巨集204中的輸入資料DIN4及權重資料執行一或多個CIM操作,並產生輸出資料DOUT4作為CIM操作的結果。輸出資料DOUT4被供應作為記憶體巨集206的輸入資料DIN6。記憶體巨集206基於儲存在記憶體巨集206中的輸入資料DIN6及權重資料執行一或多個CIM操作,並產生輸出資料DOUT6作為CIM操作的結果。輸出資料DOUT6被供應作為記憶體巨集208的輸入資料DIN8。記憶體巨集208基於儲存在記憶體巨集208中的輸入資料DIN8及權重資料執行一或多個CIM操作,並產生輸出資料DOUT作為CIM操作的結果。輸入資料DIN、DIN4、DIN6、DIN8中的一或多者對應於參照圖1A至圖1B描述的輸入資料D_IN,且/或輸出資料DOUT2、DOUT4、DOUT6、DOUT中的一或多者對應於參照圖1A至圖1B描述的輸出資料D_OUT。在至少一個實施例中,記憶體巨集202、204、206、208的所述配置實施神經網路。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件200A達成。
圖2B是根據一些實施例的神經網路200B的示意圖。
神經網路200B包括多個層A至E,所述多個層A至E中的每一者包括多個節點(或神經元)。神經網路200B的連續層中的節點藉由連接矩陣或陣列彼此連接。舉例而言,層A及層B中的節點藉由矩陣212中的連接彼此連接,層B及層C中的節點藉由矩陣214中的連接彼此連接,層C及層D中的節點藉由矩陣216中的連接彼此連接,且層D及層E中的節點藉由矩陣218中的連接彼此連接。層A是被配置成接收輸入資料211的輸入層。輸入資料211經由神經網路200B經由層之間對應的連接矩陣而自一層傳播至下一層。當資料經由神經網路200B傳播時,資料經歷一或多次計算,並作為輸出資料219自層E輸出,層E是神經網路200B的輸出層。輸入層A與輸出層E之間的層B、層C、層D有時被稱為隱藏層或中間層。圖2B中的層數、連接矩陣的數量以及每層中的節點數量為實例。其他配置在各種實施例的範圍內。舉例而言,在至少一個實施例中,神經網路200B不包括隱藏層,並且具有藉由一個連接矩陣連接至輸出層的輸入層。在一或多個實施例中,神經網路200B具有一個、二個或三個以上的隱藏層。
在一些實施例中,矩陣212、214、216、218對應地由記憶體巨集202、204、206、208實施,輸入資料211對應於輸入資料DIN,且輸出資料219對應於輸出資料DOUT。具體而言,在矩陣212中,層A中的節點與層B中的另一節點之間的連接具有對應的權重。舉例而言,節點A1與節點B1之間的連接具有與儲 存在記憶體巨集202的記憶陣列中的權重值對應的權重W(A1,B1)。記憶體巨集204、206、208以類似的方式配置。當使用神經網路200B執行機器學習時,記憶體巨集202、204、206、208中的一或多者中的權重資料例如由處理器並經由記憶體控制器220來更新。根據一些實施例,本文中所述的一或多個優點可在整體或部分由一或多個記憶體巨集及/或記憶體元件實施的神經網路200B中達成。
圖2C是根據一些實施例的積體電路(IC)元件200C的示意圖。
IC元件200C包括一或多個硬體處理器232、藉由一或多條匯流排236耦接至處理器232的一或多個記憶體元件234。在一些實施例中,IC元件200C包括一或多個另外的電路,所述電路包括但不限於蜂巢式收發器、全球定位系統(global positioning system,GPS)接收器、用於無線保真(wireless fidelity,Wi-Fi)、通用串列匯流排(universal serial bus,USB)、藍芽等中的一或多者的網路介面電路系統。處理器232的實例包括但不限於中央處理單元(central processing unit,CPU)、多核CPU、神經處理單元(neural processing unit,NPU)、圖形處理單元(graphics processing unit,GPU)、數位訊號處理器(digital signal processor,DSP)、現場可程式化閘陣列(field-programmable gate array,FPGA)、應用專用積體電路(application-specific integrated circuit,ASIC)、其他可程式化邏輯元件、多媒體處理器、影像訊 號處理器(image signal processors,ISP)等。記憶體元件234的實例包括本文中所述的一或多個記憶體元件及/或記憶體巨集。在至少一個實施例中,處理器232中的每一者耦接至記憶體元件234中的對應記憶體元件。
由於記憶體元件234中的一或多者是CIM記憶體元件,因此在記憶體元件中執行各種計算,此減少了對應處理器的計算工作量,減少了記憶體存取時間,並提高了效能。在至少一個實施例中,IC元件200C是系統晶片(system-on-a-chip,SOC)。在至少一個實施例中,在本文中描述的一或多個優點可由IC元件200C達成。
圖3是根據一些實施例的記憶體元件300的一部分的示意圖。在至少一個實施例中,記憶體元件300對應於記憶體元件100A、100B中的至少一者。如圖3所示,記憶體元件300至少包括記憶體巨集330及輸入緩衝器328。為簡潔起見,省略了記憶體元件300的其他部件。
在一些實施例中,記憶體巨集330對應於記憶體巨集110、130中的至少一者。在圖3的示例性配置中,記憶體巨集330被配置用於CIM操作,並被稱為CIM巨集。記憶體巨集330包括M個記憶體區段341、342、343、M個權重緩衝器351、352、353、M個暫存器及邏輯電路(在圖3中用標籤「Reg+LOC」設計)361、362、363,其中M是自然數。M個記憶體區段341、342、343中的每一者包括記憶體巨集330的記憶陣列中的記憶體列、記憶體 行或至少一個記憶體庫。在一些實施例中,記憶體巨集330的記憶陣列對應於記憶陣列112、132中的至少一者。記憶體區段341、342、343中的每一者被配置成儲存對應的權重資料W[1]、...、W[M-1]、W[M]。記憶體區段341、342、343中的每一者耦接至權重緩衝器351、352、353中的對應權重緩衝器、以及Reg+LOC電路361、362、363中的對應Reg+LOC電路。在一些實施例中,權重緩衝器351、352、353對應於權重緩衝器114中的一或多者。權重緩衝器351、352、353被配置成提供新的權重資料,以更新儲存在對應的記憶體區段341、342、343中的權重資料。在一些實施例中,Reg+LOC電路361、362、363中的每一者包括對應於暫存器115中的一或多者的暫存器、以及對應於邏輯電路116中的一或多者的邏輯電路。記憶體巨集330更包括耦接至Reg+LOC電路361、362、363的輸出的MAC電路370。在一些實施例中,MAC電路370對應於計算電路117。
輸入緩衝器328位於記憶體巨集330外部。在一些實施例中,輸入緩衝器328對應於輸入緩衝器128。輸入緩衝器328被配置成將作為多個輸入資料區段IN[1]、...、IN[M-1]、IN[M]的輸入資料D_IN供應至對應的Reg+LOC電路361、362、363。Reg+LOC電路361、362、363被配置成產生與輸入資料區段IN[1]、...、IN[M-1]、IN[M]及自記憶體區段341、342、343讀取的權重資料W[1]、...、W[M-1]、W[M]對應的中間資料Y[1]、...、Y[M-1]、Y[M]。中間資料Y[1]、...、Y[M-1]、Y[M]被供應至MAC 電路370,所述MAC電路370被配置成執行進一步的數學及/或邏輯運算以將中間資料Y[1]、...、Y[M-1]、Y[M]組合成輸出資料D_OUT。在一些實施例中,MAC電路370與Reg+LOC電路361、362、363中的邏輯電路一起被配置成執行由權重資料W[1]、...、W[M-1]、W[M]中的一或多者表示的多位元權重值與由輸入資料區段IN[1]、...、IN[M-1]、IN[M]中的一或多者表示的多位元輸入資料值的乘法。在至少一個實施例中,自Reg+LOC電路361、362、363中省略暫存器。
在一些實施例中,記憶體區段341、342、343中的一或多者中的權重資料由自對應權重緩衝器供應的新的權重資料更新,而自另一記憶體區段讀出的權重資料正被用於CIM操作。舉例而言,以類似於圖1A的方式,經由第一位元線供應新的權重資料以更新記憶體區段343,而經由第二不同的位元線自記憶體區段342中讀出權重資料W[M-1]用於CIM操作。在至少一個實施例中,不同位元線上不同資料的存在不影響或干擾同時執行的權重資料更新與CIM操作。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體巨集330達成。
圖4A是根據一些實施例,與記憶體元件400A的記憶體區段對應的一部分的示意圖。在一些實施例中,記憶體元件400A對應於記憶體元件100A、300中的至少一者。
在圖4A所示的部分中,記憶體元件400A包括記憶體區段412、權重緩衝器414、暫存器415、邏輯電路416及MAC電 路417。在一些實施例中,記憶體區段412是記憶體元件400A的記憶陣列的一部分。在一些實施例中,記憶體區段412對應於記憶體區段341、342、343中的至少一者,權重緩衝器414對應於權重緩衝器351、352、353中的至少一者,暫存器415及邏輯電路416對應於Reg+LOC電路361、362、363中的至少一者,並且MAC電路417對應於MAC電路370。
在圖4A的示例性配置中,記憶體區段412是記憶體行。在本文中關於為記憶體行的記憶體區段412的配置及操作的描述適用於其他類型的記憶體區段。記憶體區段412包括對應地儲存權重資料W[0]...W[N]的多個記憶胞MC[0]...MC[N]。記憶胞MC[0]...MC[N]耦接至一對位元線BL及互補位元線BLB。為簡潔起見,在本文中描述了位元線BL,並且關於位元線BL的描述適用於互補位元線BLB。記憶胞MC[0]...MC[N]是被配置成在讀取操作及寫入操作兩者中使用位元線BL的單埠記憶胞。記憶胞MC[0]...MC[N]耦接至對應的字元線WL[0]...WL[N],以在讀取操作或寫入操作中經由對應的字元線被存取。位元線BL耦接至權重緩衝器414,以接收將在寫入操作中在記憶胞MC[0]...MC[N]中的一者中更新的新的權重資料。位元線BL進一步耦接至暫存器415的輸入Reg_In,以在讀取操作中向暫存器415輸出記憶胞MC[0]...MC[N]中的一者中的權重資料。暫存器415更被配置成接收控制訊號LCK,並且具有輸出Reg_Out。暫存器415的輸出Reg_Out耦接至邏輯電路416的第一輸入LOC_1。邏輯電路416 更包括第二輸入LOC_2,所述第二輸入LOC_2被配置成如在本文中所述例如自輸入緩衝器接收輸入資料IN。邏輯電路416的輸出LOC_Out耦接至MAC電路417。
圖4B是根據一些實施例,在記憶體元件400A的一部分中的示例性操作400B的時序圖。圖4B中的示例性操作400B是根據具有多個時脈脈衝的時脈訊號CLK來執行的。
在讀取週期RD[0]中,藉由字元線WL[0]上的脈衝422在讀取操作中存取記憶胞MC[0]。當前儲存在記憶胞MC[0]中的權重資料W[0]自記憶胞MC[0]中讀出,出現在位元線BL上,並由位元線BL供應至暫存器415的輸入Reg_In。在圖4B中,權重資料W[0]被示意性地示出,以指示權重資料W[0]可包括邏輯「1」(高位準)或邏輯「0」(低位準)。圖4B中的其他權重資料及/或輸入資料以類似的方式示意性地示出。
在讀取週期RD[0]中,控制訊號LCK的脈衝424被供應至暫存器415。舉例而言,控制訊號LCK由對應於記憶體控制器120的記憶體控制器產生或供應。在至少一個實施例中,暫存器415(例如,正反器)被配置成因應於控制訊號LCK的脈衝424的上升邊緣鎖存輸入Reg_In處的資料或邏輯狀態。鎖存的資料或邏輯狀態保持在暫存器415的輸出Reg_Out處,直至控制訊號LCK的下一個脈衝426的上升邊緣。因此,在脈衝424、426的上升邊緣之間的週期期間,自記憶胞MC[0]讀取的權重資料W[0]被鎖存在暫存器415的輸出Reg_Out處,並且不受位元線BL上的資料的 影響。
在圖4B中被指定為CIM[0]/更新(Update)的下一個週期中,使用鎖存的權重資料W[0]執行CIM操作,而同時對記憶體區段412中的記憶胞中的一或多者執行權重資料更新。在CIM操作中,暫存器415的輸出Reg_Out處的鎖存的權重資料W[0]被供應至邏輯電路416的輸入LOC_1。輸入資料IN被供應至邏輯電路416的另一個輸入LOC_2。在一些實施例中,輸入資料IN包括多個位元,所述多個位元在幾個時脈週期內串列供應至邏輯電路416,以與權重資料W[0]一起被處理。在至少一個實施例中,邏輯電路416被配置成將輸入資料IN中的一系列位元與權重資料W[0]相乘,並將相乘結果輸出至MAC電路417,所述MAC電路417被配置成執行例如加法、移位等進一步的處理,以獲得CIM操作的最終結果。
當使用鎖存的權重資料W[0]執行CIM操作時,位元線BL藉由暫存器415與邏輯電路416及MAC電路417隔離,並且可用於記憶胞中的一或多者中的權重資料更新,而不影響CIM操作,並且不受CIM記憶體元件的影響。舉例而言,藉由對應字元線WL[1]_WL[N]上的脈衝428,在寫入操作中存取記憶胞MC[1]~MC[N]中的一者。對應的一筆新的權重資料Wn[1]~Wn[N]自權重緩衝器414被供應至位元線BL,並且在記憶胞MC[1]~MC[N]中被存取的記憶胞中被寫入或更新。
在一些實施例中,依據定義CIM[0]/更新(Update)週期 的長度的輸入資料IN中的一系列位元的長度,可在使用自記憶胞MC[0]讀取的鎖存的權重資料W[0]執行CIM操作的同時,對多於一個記憶胞執行權重資料更新。舉例而言,當仍正使用鎖存的權重資料W[0]執行CIM操作時,藉由對應字元線WL[0]上的脈衝430在寫入操作中存取記憶胞MC[0]。對應的一筆新的權重資料Wn[0]自權重緩衝器414供應至位元線BL,並在被存取的記憶胞MC[0]中被寫入或更新。在至少一個實施例中,當正使用自一個記憶胞讀取的鎖存的權重資料W[0]執行CIM操作時,可更新多於兩個記憶胞的權重資料。
在下一個讀取週期RD[1]中,藉由對應字元線WL[1]上的對應脈衝(圖4B中未示出),在讀取操作中存取記憶胞MC[1]。倘若記憶胞MC[1]未例如藉由脈衝428較早地更新,則當前儲存在記憶胞MC[1]中的權重資料W[1]被自記憶胞MC[1]中讀出並放置於位元線BL上。然而,若記憶胞MC[1]被較早地更新,則新的權重資料Wn[1]被讀出並放置於位元線BL上。因應於控制訊號LCK中的脈衝426的上升邊緣,權重資料W[1]或新的權重資料Wn[1]在暫存器415的輸出Reg_Out處被鎖存,並被供應至邏輯電路416的輸入LOC_1,用於在圖4B中被指定為CIM[1]/更新(Update)在下一週期中的CIM操作,並且重複執行所描述的過程。在一些實施例中,即使當記憶體區段412包括多埠記憶胞時,所描述的操作及配置亦為適用的。在一些實施例中,所描述的操作及配置使得有可能同時執行權重資料更新及CIM操作,藉此節 省處理時間、功耗等。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件400A及/或操作400B達成。
圖4C是根據一些實施例,與記憶體元件400C的記憶體區段對應的一部分的示意圖。具有圖4A中對應部件的圖4C中的部件由與圖4A中相同的參考編號表示。
記憶體元件400C與記憶體元件400A之間的區別在於:記憶體元件400A中的邏輯電路416由記憶體元件400C中的反或閘436實施。記憶體元件400C的操作類似於參照圖4A至圖4B描述的操作。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件400C達成。
圖4D是根據一些實施例,與記憶體元件400D的記憶體區段對應的一部分的示意圖。具有圖4A中對應部件的圖4D中的部件由與圖4A中相同的參考編號表示。
記憶體元件400D與記憶體元件400A之間的區別在於:記憶體元件400A中的邏輯電路416由記憶體元件400D中的及閘446實施。記憶體元件400D的操作類似於參照圖4A至圖4B描述的操作。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件400D達成。被描述為包括反或閘或及閘的邏輯電路的配置為實例。其他邏輯電路配置在各種實施例的範圍內。
圖4E是根據一些實施例的示例性單埠記憶胞400E的示意性電路圖。在至少一個實施例中,記憶胞400E對應於記憶體元件100A、300、400A、400C、400D中的一或多者中的一或多個記 憶胞。
記憶胞400E包括電晶體M1、M2及反相器INV1、INV2。反相器INV2的輸入在節點Q處耦接至反相器INV1的輸出。反相器INV2的輸出在節點QB處耦接至反相器INV1的輸入。電晶體M1、M2的閘極耦接至字元線WL。電晶體M1串聯耦接在節點Q與位元線BL之間。電晶體M2串聯耦接在節點QB與互補位元線BLB之間。反相器INV1、INV2形成儲存電路ST,用於儲存對應於節點Q或QB的邏輯狀態的資料。電晶體M1、M2是存取電晶體,所述存取電晶體被配置成因應於施加至字元線WL的適當電壓而將儲存電路ST耦接至位元線BL/BLB,用於讀取存取或寫入存取。在一些實施例中,反相器INV1、INV2中的每一者包括兩個電晶體,從而使得在記憶胞400E中總共有6個電晶體,所述記憶胞400E亦被稱為6T(6個電晶體)SRAM記憶胞。記憶胞400E中的電晶體的實例包括但不限於金屬氧化物半導體場效應電晶體(metal oxide semiconductor field effect transistors,MOSFET)、互補金屬氧化物半導體(complementary metal oxide semiconductor,CMOS)電晶體、雙極結型電晶體(bipolar junction transistors,BJT)、高壓電晶體、高頻電晶體、p通道及/或n通道場效應電晶體(p-channel/n-channel field effect transistors,PFET/NFET)、鰭式場效應電晶體(FinFET)、具有凸起源極/汲極的平面MOS電晶體等。所描述的單埠記憶胞的配置為實例。其他單埠記憶胞配置在各種實施例的範圍內。
圖5A是根據一些實施例,與記憶體元件500A的記憶體區段對應的一部分的示意圖。在一些實施例中,記憶體元件500A對應於記憶體元件100B、300中的至少一者。
在圖5A所示的部分中,記憶體元件500A包括記憶體區段512、權重緩衝器514及邏輯電路516。記憶體元件500A更包括耦接至邏輯電路516的輸出的MAC電路(未示出)。在一些實施例中,記憶體區段512、權重緩衝器514及邏輯電路516對應於記憶體元件400A中的記憶體區段412、權重緩衝器414及邏輯電路416。
記憶體元件400A與記憶體元件500A之間的區別在於:在記憶體元件400A中,記憶體區段412包括單埠記憶胞,而在記憶體元件500A中,記憶體區段512包括多埠記憶胞。在圖5A中的示例性配置中,一組字元線WL[0]...WL[N]被配置為寫入字元線及讀取字元線兩者。具有一組寫入字元線及一組單獨的讀取字元線的其他配置在各種實施例的範圍內。記憶體區段512中的多埠記憶胞藉由寫入位元線WBLB耦接至權重緩衝器514,寫入位元線WBLB是與讀取位元線RBLB不同的位元線,記憶體區段512的多埠記憶胞藉由讀取位元線RBLB耦接至邏輯電路516。在圖5A的示例性配置中,省略了對應於暫存器415的暫存器。在至少一個實施例中,在記憶體元件500A中在讀取位元線RBLB與邏輯電路516之間包括對應於暫存器415的暫存器。在一些實施例中,邏輯電路516包括反或閘或及閘。其他邏輯電路配置在各種實施 例的範圍內。
圖5A示出根據一些實施例的示例性多埠記憶胞510的示意性電路圖。在圖5A的示例性配置中,多埠記憶胞510包括反相器INV1、INV2、INV3及傳輸閘TG1、TG2、TG3。反相器INV1、INV2被耦接以形成儲存電路ST,如參照圖4E所述。各傳輸閘TG1、TG2、TG3包括NMOS電晶體及NMOS電晶體。傳輸閘TG1中的PMOS電晶體及NMOS電晶體的閘極對應地耦接至一對寫入字元線WWL/WWLB。傳輸閘TG2中的NMOS電晶體及PMOS電晶體的閘極對應地耦接至寫入字元線WWL/WWLB。傳輸閘TG3中的NMOS電晶體及PMOS電晶體的閘極對應地耦接至一對讀取字元線RWL/RWLB。傳輸閘TG1耦接在節點Q與反相器INV1的輸出之間。傳輸閘TG2耦接在節點Q與互補寫入位元線WBLB之間。傳輸閘TG3耦接在反相器INV3的輸出與互補讀取位元線RBLB之間。反相器INV3的輸入耦接至節點QB。傳輸閘TG1、TG2形成寫入埠WP。反相器INV3及傳輸閘TG3形成輸出緩衝器或讀取埠RP。在所描述的多埠記憶胞510中總共有12個電晶體,所述多埠記憶胞510亦被稱為12T SRAM記憶胞。所描述的多埠記憶胞510的配置為實例。其他多埠記憶胞配置在各種實施例的範圍內。
當傳輸閘TG3被讀取字元線RWL/RWLB上的適當電壓導通時,對應於節點QB的邏輯狀態的所儲存的一筆權重資料經由反相器INV3及導通的傳輸閘TG3被讀取,並被供應至讀取位元 線RBLB以用於CIM操作。同時,新的權重資料可應用於寫入位元線WBLB以更新記憶體區段512的另一個記憶胞,而不影響記憶胞MC[N]的所儲存及/或讀取的權重資料,乃因傳輸閘TG1、TG2未被導通。因此,可同時對記憶體區段512中的不同記憶胞執行CIM操作與權重資料更新,如亦參照圖1B進行描述。在至少一個實施例中,對應於暫存器415的暫存器被包括在記憶體元件500A中,並且以類似於記憶體元件400A的方式被耦接在讀取位元線RBLB與邏輯電路516之間。在一或多個實施例中,暫存器在被包括在記憶體元件500A中時使得在邏輯電路516的輸入處將鎖存的權重資料保存一段延長的時間成為可能,若不包括暫存器,此可能難以達成。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件500A達成。
圖5B是根據一些實施例,與記憶體元件500B的記憶體區段對應的一部分的示意圖。在一些實施例中,記憶體元件500B對應於記憶體元件100B、300、500A中的至少一者。
在圖5B所示的部分中,記憶體元件500B包括記憶體區段522、權重緩衝器514及邏輯電路526、536。記憶體元件500B更包括耦接至邏輯電路526、536的輸出的MAC電路(未示出)。在一些實施例中,記憶體區段522及邏輯電路526、536對應於記憶體元件500A中的記憶體區段512及邏輯電路516。
在本文中描述了記憶體元件500A與記憶體元件500B之間的區別。在記憶體元件500A中,記憶體區段512包括各自具有 一個讀取埠RP的多埠記憶胞,而在記憶體元件500B中,記憶體區段522包括各自具有兩個讀取埠RP1、RP2的多埠記憶胞。記憶體區段522中的記憶胞在本文中被稱為多讀取埠記憶胞。在圖5B的示例性配置中,為簡潔起見,示出一組字元線WL[0]...WL[N]。在一些實施例中,提供一組寫入字元線WWL、一組單獨的第一讀取字元線RWL1及一組單獨的第二讀取字元線RWL2,以分別存取記憶體區段522中每個記憶胞的寫入埠WP及兩個讀取埠RP1、RP2。其他配置在各種實施例的範圍內。記憶體區段522中的多讀取埠記憶胞藉由寫入位元線WBLB耦接至權重緩衝器514,寫入位元線WBLB是與第一讀取位元線RBLB1及第二讀取位元線RBLB2不同的位元線,記憶體區段522的各多讀取埠記憶胞藉由第一讀取位元線RBLB1及第二讀取位元線RBLB2耦接至邏輯電路526、536。在一些實施例中,各邏輯電路526、536包括反或閘或及閘。其他邏輯電路配置在各種實施例的範圍內。
圖5B示出根據一些實施例的示例性多讀取埠記憶胞520的示意性電路圖。在圖5B的示例性配置中,除了圖5B中的多讀取埠記憶胞520另外包括反相器INV4及傳輸閘TG4之外,多讀取埠記憶胞520類似於參照圖5A描述的多埠記憶胞510。如同多埠記憶胞510一樣,多讀取埠記憶胞520包括反相器INV3及傳輸閘TG3,以形成耦接至第一讀取字元線RWL1/RWLB1及第一讀取位元線RBLB1的第一讀取埠RP1。類似地,反相器INV4及傳輸 閘TG4形成耦接至第二讀取字元線RWL2/RWLB2及第二讀取位元線RBLB2的第二讀取埠RP2。多讀取埠記憶胞520的所述配置為實例。其他多讀取埠記憶胞配置在各種實施例的範圍內。
由於記憶體區段522中的每個記憶胞具有兩個讀取埠,因此在一或多個實施例中,可經由讀取位元線RBLB1、RBLB2對應地同時自兩個不同的記憶胞讀取權重資料用於CIM操作,並且還可經由寫入位元線WBLB更新記憶體區段522中的一或多個另外的記憶胞中的權重資料。舉例而言,第一讀取位元線RBLB1上的第一權重資料自記憶胞MC[0]讀取,並且由邏輯電路526與第一組輸入資料IN0組合,例如相乘。
第二讀取位元線RBLB2上的第二權重資料自記憶胞MC[1]讀取,並由邏輯電路536與第二組輸入資料IN1組合,例如相乘。由邏輯電路526、536輸出的結果或中間資料被供應至MAC電路,用於進一步處理以完成CIM操作。同時,剩餘記憶胞中的一或多者(即MC[2]~MC[N])經由寫入位元線WBLB用來自權重緩衝器514的新的權重資料更新。因此,可同時對記憶體區段522中的不同記憶胞執行CIM操作及權重資料更新,如亦參照圖1B、圖5A中的一或多者所述。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件500B達成。
圖5C是根據一些實施例,與記憶體元件500C的記憶體區段對應的一部分的示意圖。在一些實施例中,記憶體元件500C對應於記憶體元件100B、300、500A、500B中的至少一者。
相較於記憶體元件500B,記憶體元件500C另外包括對應地耦接至讀取位元線RBLB1、RBLB2的暫存器525、535,從而以類似於參照圖4A描述的暫存器415的方式因應於相同的控制訊號LCK鎖存讀取位元線RBLB1、RBLB2上的權重資料,並將鎖存的權重資料供應至對應的邏輯電路526、536。在至少一個實施例中,暫存器525、535使得在邏輯電路526、536的輸入處將鎖存的權重資料保存一段延長的時間成為可能,若不包括暫存器525、535,此可能難以達成。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件500C達成。
圖6A是根據一些實施例的記憶體元件600的示意圖。在一些實施例中,記憶體元件600對應於記憶體元件100B、300、500A中的一或多者。
記憶體元件600包括64個記憶體巨集630、630_1、630_2、...、630_63。在至少一個實施例中,所述64個記憶體巨集是相同的或以類似方式配置的。在本文中詳細描述了記憶體巨集630。為簡潔起見,省略了對其他記憶體巨集的詳細描述。在一些實施例中,記憶體元件600更包括耦接至64個記憶體巨集中的一或多者並被配置成控制所述64個記憶體巨集中的所述一或多者的記憶體控制器(未示出)。在一些實施例中,64個記憶體巨集中的多個記憶體巨集如參照圖2A所述被依序耦接以實施神經網路。所描述的64個記憶體巨集的數量為實例。記憶體元件600中所包括的記憶體巨集的其他數量在各種實施例的範圍內。
記憶體巨集630包括被分成64個記憶體區段的記憶陣列602,所述64個記憶體區段各自具有4列及4行16個記憶胞。在圖6A中示出代表性的記憶體區段612。在至少一個實施例中,記憶體區段612對應於參照圖5A描述的記憶體區段512。64個記憶體區段沿著Y方向並排堆疊。在一些實施例中,記憶陣列602中的記憶胞是多埠記憶胞。在至少一個實施例中,如參照圖5A所述,多埠記憶胞是12T SRAM記憶胞。記憶陣列602中的記憶體區段的數量及/或每個記憶體區段的尺寸為實例。其他配置在各種實施例的範圍內。
記憶體巨集630更包括權重緩衝器614。在至少一個實施例中,權重緩衝器614對應於參照圖5A描述的權重緩衝器514。權重緩衝器614經由沿著X方向延伸的權重解多工器642及256個寫入位元線WBLB耦接至記憶陣列602。四條寫入位元線WBLB耦接至記憶體區段612中對應的四個記憶體行,並且在圖6A中通常由標籤「4xWBLB」指示。在至少一個實施例中,各寫入位元線WBLB及對應的記憶體行對應於參照圖5A描述的寫入位元線WBLB及記憶體區段512(其為記憶體行)。耦接至記憶體區段612的四條寫入位元線WBLB被配置成用自權重緩衝器614輸出的4位元字(4-bit word)D[3:0]更新記憶體區段612中具有四個記憶胞的記憶體列。記憶體區段612及對應的四條寫入位元線WBLB由施加至權重解多工器642的8位元寫入存取訊號WA的6個位元(即,位元[7:2])選擇。寫入存取訊號WA的剩餘2個位元(即, 位元[1:0])被施加至寫入位址解多工器641,以在記憶陣列602的四個寫入字元線WWL中選擇一個寫入字元線WWL。所選擇的一個寫入字元線WWL對應於記憶體區段612中其中將寫入權重資料的字D[3:0]的記憶體列。在圖6A的示例性配置中,跨越記憶體區段612中的記憶體列同時更新四個位元的權重資料。在至少一個實施例中,四條寫入字元線WWL對應於參照圖5A描述的寫入字元線。藉由使用權重解多工器642,權重緩衝器614可用作多個記憶體區段的共用權重緩衝器。所描述的權重資料位元、寫入位元線WBLB及寫入字元線WWL的數量為實例。其他配置在各種實施例的範圍內。
具有2個位元(即[1:0])的讀取存取訊號RA被施加至讀取位址解多工器643,以自記憶陣列602的四個讀取字元線RWL中選擇一個讀取字元線RWL。所選擇的一個讀取字元線RWL對應於記憶體區段612中的記憶體列,自所述記憶體列中將讀出儲存的權重資料的4位元字用於CIM操作。在圖6A的示例性配置中,自記憶體區段612中的記憶體列同時讀出四個位元的權重資料。在至少一個實施例中,四條讀取字元線RWL對應於參照圖5A描述的寫入字元線。
記憶體巨集630包括256條讀取位元線RBLB,所述256條讀取位元線RBLB包括在每組中具有四條讀取位元線RBLB的64個組。所述64個組對應於64個記憶體區段。每組中的四條讀取位元線RBLB耦接至對應記憶體區段中的對應四個記憶體行。 舉例而言,耦接至記憶體區段612中的四個記憶體行的四條讀取位元線RBLB在圖6A中通常由標籤「4xRBLB」指示。在至少一個實施例中,四條讀取位元線RBLB中的每一者對應於參照圖5A描述的讀取位元線RBLB。當選擇讀取字元線RWL中的一者時,四個位元的權重資料自記憶體區段612中的對應記憶體列同時被讀出,並被輸出至對應的四條讀取位元線RBLB上。在所有64個記憶體區段中,當選擇讀取字元線RWL中的一者時,256個位元的權重資料被輸出至對應的256條讀取位元線RBLB上。所描述的權重資料位元、讀取位元線RBLB及讀取字元線RWL的數量為實例。其他配置在各種實施例的範圍內。
輸入驅動器644被配置成接收輸入資料XIN,所述輸入資料XIN包括被分成64組(即[63:0])的256個位元,其中每組中具有4個位元(即[3:0])。輸入驅動器644包括64個輸入驅動器塊,所述64個輸入驅動器塊各自被配置成將對應組中的4個位元的輸入資料轉換成由相同的四個位元形成的流,所述由相同的四個位元形成的流依序輸出至耦接至輸入驅動器644的總共64條資料線XINLB中的一條資料線XINLB上。根據選擇訊號XINSEL[3:0]執行自四個並行位元至由四個串列位元形成的流的轉換。在一些實施例中,資料線645上由四個串列位元形成的流對應於參照圖5A描述的輸入資料IN。參照圖6B給出了輸入驅動器644的詳細描述。
記憶體巨集630更包括64個邏輯電路,所述64個邏輯 電路在圖6A中被示意性地示出為反或閘。所述64個邏輯電路中的每一者耦接至64條資料線XINLB中的對應資料線、以及對應的一組四條讀取位元線RBLB。舉例而言,邏輯電路646耦接至對應於記憶體區段612的資料線645及四條讀取位元線RBLB。在至少一個實施例中,邏輯電路646對應於參照圖5A描述的邏輯電路516。在一些實施例中,所述64個邏輯電路是4位元乘1位元乘法器,如在本文中參照圖6B所述。
記憶體巨集630更包括加法器樹650,加法器樹650包括排列在多個級中的多個加法器,以累加自64個邏輯電路或乘法器輸出的乘法結果。在圖6A的示例性配置中,加法器樹650包括六個級,包括在第一級中的加法器647、在第二級中的加法器648及在第六級中的加法器649。在一些實施例中,加法器樹650及64個邏輯電路一起形成MAC電路651。在一或多個實施例中,自最終加法器649輸出的結果包括10位元字。在圖6A的示例性配置中,記憶體巨集630更包括位元移位器及累加器652,所述位元移位器及累加器652被配置成因應於控制訊號SIGN及ACM_EN進一步執行位元移位及/或累加。在一些實施例中,位元移位器及累加器652被簡化或省略,或者具有不同的配置。基於儲存在記憶陣列602中的權重資料及輸入資料XIN的CIM操作的結果作為NOUT自記憶體巨集630輸出。在圖6A的示例性配置中,如本文中所述,權重緩衝器614及權重解多工器642被包括在記憶體巨集630中,而寫入位址解多工器641、讀取位址解多工器643及輸 入驅動器644位於記憶體巨集630外部,並且被包括在記憶體控制器中。
圖6B是根據一些實施例的記憶體元件600中的輸入驅動器644及邏輯電路646的示意性電路圖。
輸入驅動器644包括64個以類似方式配置的輸入驅動器塊。圖6B中更詳細地示出了代表性的輸入驅動器塊660。輸入驅動器塊660包括四個正反器(其中一個用661表示)及MUX 662。輸入資料XIN[3:0]的四個位元對應地被並行輸入至四個正反器中,所述四個正反器的輸出耦接至MUX 662的輸入。MUX 662根據訊號XINSEL[3:0]將輸入資料的四個位元依序輸出至資料線645上。
邏輯電路646包括四個反或閘670至673。反或閘670至673的第一輸入通常耦接至資料線645,以接收輸入資料的四個位元的序列。反或閘670至673的第二輸入對應地耦接至讀取位元線RBLB[0]~[3],所述讀取位元線RBLB[0]~[3]耦接至記憶體區段612中對應的四個記憶體行。自記憶體區段612的選定列讀取的權重資料的四個位元被施加至反或閘670至673的第二輸入。
在第一時脈週期中,反或閘670至673將權重資料的四個位元中的每一位元與輸入資料的四個位元的序列中的第一位元相乘,並且對應的第一結果被輸出至加法器樹650的第一級中的對應加法器。在第二時脈週期中,反或閘670至673將權重資料的四個位元中的每一位元與輸入資料的四個位元的序列中的第二 位元相乘,並且對應的第二結果被輸出至加法器樹650的第一級中的對應加法器。在第三時脈週期中,反或閘670至673將權重資料的四個位元中的每一位元與輸入資料的四個位元的序列中的第三位元相乘,並且對應的第三結果被輸出至加法器樹650的第一級中的對應加法器。在第四時脈週期中,反或閘670至673將權重資料的四個位元中的每一位元與輸入資料的四個位元的序列中的第四位元相乘,並且對應的第四結果被輸出至加法器樹650的第一級中的對應加法器。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件600達成。
圖7A是根據一些實施例的記憶體元件700的示意圖。在一些實施例中,記憶體元件700對應於記憶體元件100B、300、500A、600中的一或多者。
在本文中描述了記憶體元件600與記憶體元件700之間的區別。在記憶體元件600中,每個記憶體區段包括彼此實體相鄰或連續的多個記憶體行。在記憶體元件700中,每個記憶體區段包括不實體相鄰或者與另一記憶體區段的記憶體行交錯的多個記憶體行。
舉例而言,記憶體元件700的一部分702在圖7A中詳細示出。部分702包括記憶體元件700的64個記憶體庫中的四個記憶體庫,例如庫0~3。記憶體元件700的每個記憶體庫對應於在本文中描述的記憶體區段。記憶體元件700的每個記憶體庫包括四個記憶體行,每個記憶體行包括沿著四個對應列排列的四個記憶 胞。記憶體行沿著X方向延伸,且列沿著垂直於X方向的Y方向延伸。部分702包括加法器區域704,加法器區域704包括對應於庫0至3的第一級加法器及第二級加法器。庫0及1在X方向上實體排列在加法器區域704的一側上。庫2及3在X方向上實體排列在加法器區域704的另一側上。部分702包括邏輯電路區域LOC1,所述邏輯電路區域LOC1沿著X方向實體排列在庫0、1與加法器區域704之間。部分702更包括邏輯電路區域LOC2,所述邏輯電路區域LOC2沿著X方向實體排列在庫2、3與加法器區域704之間。邏輯電路區域LOC1、LOC2包括在本文中描述的各種邏輯電路。
庫0及1的記憶體行沿著Y方向交替排列。為了清楚起見,在圖7A中,庫0的記憶體行通常用708表示。庫2及3的記憶體行沿著Y方向交替排列。庫0~3在讀取操作中被對應的讀取字元線RWL0_1[3:0]、RWLB0_1[3:0]、RWL1_2[3:0]、RWLB1_2[3:0]及對應的讀取位元線存取。讀取位元線由自庫0~3的記憶體行延伸至對應的邏輯電路區域LOC1、LOC2中的箭頭示意性地示出。舉例而言,箭頭710示意性地表示耦接在庫1的記憶體行711與邏輯電路區域LOC1中的對應邏輯電路之間的讀取位元線。在寫入操作中藉由對應的寫入字元線WWL[7:0]、WWLB[7:0]、WWL[15:8]、WWLB[15:8]及對應的寫入位元線WBLB[3:0]存取庫0~3。寫入位元線WBLB耦接至權重緩衝器(未示出),以接收新的權重資料,用於更新部分702中的一或多個記憶胞。
資料線XINLB[0]上的輸入資料被輸入至邏輯電路區域LOC1中,以與自庫0讀出的權重資料相乘。資料線XINLB[1]上的輸入資料被輸入至邏輯電路區域LOC1中,以與自庫1讀出的權重資料相乘。資料線XINLB[2]上的輸入資料被輸入至邏輯電路區域LOC2中,以與自庫2讀出的權重資料相乘。資料線XINLB[3]上的輸入資料被輸入至邏輯電路區域LOC2,以與自庫3讀出的權重資料相乘。在一些實施例中,資料線XINLB[0]~[3]上的每個輸入資料包括輸入資料位元的流或系列,例如如參照圖6B所述。自庫0~3中的記憶胞讀出的權重資料與輸入資料的流相乘的結果由自邏輯電路區域LOC1、LOC2延伸至加法器區域704中的箭頭示意性地示出。加法器區域704包括多個全加器(full adder,FA)胞元,所述多個全加器胞元中的每一者包括用於累加乘法的輸出結果的第一級加法器及第二級加法器。參照圖7B描述了FA胞元750的細節。
如圖7A的右側所示,記憶體元件700更包括與部分702以類似方式配置的部分712、714、716、718、720、722、724,並且包括記憶體元件700的庫4~31以及對應的第一級加法器及第二級加法器。部分702、712中的第二級加法器的輸出耦接至第三級加法器732的輸入。部分714、716中的第二級加法器的輸出耦接至第三級加法器734的輸入。部分718、720中的第二級加法器的輸出耦接至第三級加法器736的輸入。部分722、724中的第二級加法器的輸出耦接至第三級加法器738的輸入。第三級加法器 732、734的輸出耦接至第四級加法器740的輸入。第三級加法器736、738的輸出耦接至第四級加法器742的輸入。第四級加法器740、742的輸出耦接至第五級加法器744的輸入。
部分702、712、714、716、718、720、722、724、第三級加法器732、734、736、738、第四級加法器740、742及第五級加法器744一起形成記憶體元件700的一部分745。記憶體元件700更包括與部分745以類似方式配置的部分746。記憶體元件700的部分746含有具有對應的邏輯電路及第一級加法器至第五級加法器的庫32至63。記憶體元件700更包括部分747,所述部分747包括第六級加法器、位元移位器、累加電路及寫入電路系統。在一些實施例中,記憶體元件700以類似於記憶體元件500A、600中的一或多者的方式操作。在至少一個實施例中,在本文中描述的一或多個優點可由記憶體元件700達成。
圖7B是根據一些實施例的記憶體元件700中的FA胞元750的示意性電路圖。
FA胞元750包括第一級加法器781、782及第二級加法器783、784。除了第二級加法器783、784對應於第一級加法器781、782的極性反轉電路之外,第一級加法器781、782與第二級加法器783、784以類似方式配置。在本文中詳細描述第一級加法器781的電路圖。
第一級加法器781包括PMOS電晶體751~760、NMOS電晶體761~770及反相器771、772。PMOS電晶體751至753串 聯耦接在電源電壓VDD與節點S之間。PMOS電晶體754至756並聯耦接在VDD與反相器771的賦能端(enabling terminal)之間。PMOS電晶體757至758串聯耦接在VDD與節點CO之間。PMOS電晶體759至760並聯耦接在VDD與反相器772的賦能端之間。PMOS電晶體751、754的閘極耦接在一起並耦接至節點CI。PMOS電晶體752、755、757、760的閘極耦接在一起並耦接至節點B。PMOS電晶體753、756、758、759的閘極耦接在一起並耦接至節點A。NMOS電晶體761至763串聯耦接在電壓VSS與節點S之間。NMOS電晶體764至766並聯耦接在VSS與反相器771的賦能端之間。NMOS電晶體767至768串聯耦接在VSS與節點CO之間。NMOS電晶體769至770並聯耦接在VSS與反相器772的賦能端之間。NMOS電晶體761、764的閘極耦接在一起並耦接至節點CI。NMOS電晶體762、765、767、770的閘極耦接在一起並耦接至節點B。NMOS電晶體763、766、768、769的閘極耦接在一起並耦接至節點A。反相器771的輸入耦接至節點S。反相器771的輸出耦接至節點CO及反相器771的輸出。反相器772的輸入耦接至節點CI。
圖8是根據一些實施例的方法800的流程圖。在至少一個實施例中,方法800在參照圖1A至圖7B描述的一或多個IC、記憶體元件、記憶體巨集中執行或由所述一或多個IC、記憶體元件、記憶體巨集執行。方法800包括操作805、815、825,其中操作815與825同時執行。
在操作805處,自記憶體元件的記憶體區段中的多個記憶胞中的第一記憶胞讀取第一筆權重資料。舉例而言,如參照圖4A、圖4B中的一或多者所述,將脈衝422施加至與要自其讀取的第一記憶胞MC[0]對應的字元線WL[0],並且讀出儲存在記憶胞MC[0]中的一筆權重資料W[0]並將其放置於位元線BL上。以類似的方式,在圖5A中的記憶體元件中,選擇字元線WL[0],並且讀出儲存在記憶胞MC[0]中的一筆權重資料W[0],並將其放置於讀取位元線RBLB上。
在操作815處,使用自第一記憶胞讀取的第一筆權重資料來執行記憶體內計算(CIM)操作。舉例而言,如參照圖4A、圖4B中的一或多者所述,控制耦接至位元線BL的暫存器415,以在邏輯電路416的第一輸入處鎖存自記憶胞MC[0]讀取的第一筆權重資料W[0]。輸入資料IN被供應至邏輯電路416的第二輸入。邏輯電路416及MAC電路417執行鎖存的所述一筆權重資料W[0]與輸入資料IN的CIM操作,例如乘法。對於另一實例,如參照圖5A所述,記憶體區段中被存取的記憶胞是多埠記憶胞,其允許自記憶胞MC[0]讀取的所述一筆權重資料W[0]被保持在讀取位元線RBLB上,而不受例如在另一寫入位元線WBLB上的權重資料更新等其他活動的影響。自記憶胞MC[0]讀取的所述一筆權重資料W[0]及輸入資料IN以與參照圖4A、圖4B描述的方式類似的方式用於CIM操作中。
至少部分地與操作815同時執行操作825以更新在不同 於第一記憶胞的第二記憶胞中的第二筆權重資料。舉例而言,如參照圖4A、圖4B中的一或多者所述,當正使用自記憶胞MC[0]讀取的所述一筆權重資料W[0]及輸入資料IN執行CIM操作時,記憶胞MC[1]~MC[N]中的一者在寫入操作中藉由對應字元線WL[1]~WL[N]上的脈衝428被存取,並且對應的一筆新的權重資料Wn[1]~Wn[N]自權重緩衝器414供應至位元線BL並被寫入記憶胞MC[1]~MC[N]中被存取的記憶胞中或在所述被存取的記憶胞中被更新。在至少一個實施例中,在CIM操作期間,使用自記憶胞MC[0]讀取的權重資料對多於一個記憶胞執行所描述的權重資料更新。對於另一實例,如參照圖5A所述,對另一記憶胞(例如,記憶胞MC[N])執行權重資料更新,以在正使用經由另一條位元線(即讀取位元線RBLB)自記憶胞MC[0]讀取的權重資料W[0]執行CIM操作時,經由寫入位元線WBLB向記憶胞MC[N]寫入新的權重資料。因此,可在多埠記憶胞的記憶體區段中同時執行CIM操作及權重資料更新,而不需要耦接至記憶體區段的位元線的暫存器。在一些實施例中,然而暫存器耦接至多埠記憶胞的記憶體區段的讀取位元線RBLB,以在延長的週期內保持讀出的權重資料,從而確保CIM操作的恰當執行。在至少一個實施例中,在本文中描述的一或多個優點可由方法800達成。
所描述的方法及演算法包括示例性操作,但其未必需要以所示的順序執行。根據本揭露的實施例的精神及範圍,可視情況對操作進行添加、替換、改變順序及/或消除。組合不同特徵及/ 或不同實施例的實施例在本揭露的範圍內,並且在閱讀本揭露之後對於此項技術中具有通常知識者而言將為顯而易見的。
在一些實施例中,一種記憶體元件包括:記憶陣列,包括被配置成儲存權重資料的至少一個記憶體區段;至少一個權重緩衝器,耦接至所述至少一個記憶體區段,並且被配置成保存將在所述至少一個記憶體區段中更新的新的權重資料;至少一個邏輯電路;以及計算電路,耦接至邏輯電路的輸出。邏輯電路更具有:第一輸入,藉由至少一條位元線耦接至所述至少一個記憶體區段;以及第二輸入,被配置成接收輸入資料。邏輯電路被配置成在輸出處產生與輸入資料及經由所述至少一條位元線自所述至少一個記憶體區段讀取的權重資料對應的中間資料。計算電路被配置成基於中間資料產生輸出資料,輸出資料與對輸入資料及自所述至少一個記憶體區段讀取的權重資料執行的計算相對應。
在一些實施例中,記憶陣列、所述至少一個權重緩衝器、所述至少一個邏輯電路及計算電路被包括在同一記憶體巨集中。
在一些實施例中,所述至少一個邏輯電路包括反或閘或及閘。
在一些實施例中,計算電路包括乘法累加(MAC)電路。
在一些實施例中,乘法累加電路包括具有多個加法器級的加法器樹。
在一些實施例中,記憶體元件更包括至少一個暫存器。所述至少一個暫存器耦接至所述至少一條位元線。所述至少一個 暫存器位於所述至少一個記憶體區段與所述至少一個邏輯電路的所述第一輸入之間。
在一些實施例中,所述至少一個記憶體區段包括耦接至所述至少一條位元線的單埠記憶胞。
在一些實施例中,所述至少一個記憶體區段包括多個記憶胞,所述多個記憶胞中的每一者具有儲存電路以及輸出緩衝器。儲存電路儲存對應的一筆權重資料。輸出緩衝器耦接在儲存電路與所述至少一條位元線之間。
在一些實施例中,輸出緩衝器包括反相器及傳輸閘。反相器耦接在儲存電路與傳輸閘之間。傳輸閘耦接在反相器與所述至少一條位元線之間。
在一些實施例中,所述至少一條位元線包括第一位元線及第二位元線。所述多個記憶胞中的每一者是多埠記憶胞。多埠記憶胞具有第一讀取埠以及第二讀取埠。第一讀取埠耦接至第一位元線。第二讀取埠耦接至第二位元線。所述至少一個邏輯電路包括第一邏輯電路以及第二邏輯電路。第一邏輯電路具有耦接至第一位元線的第一輸入及被配置成接收輸入資料的第一部分的第二輸入。第二邏輯電路具有耦接至第二位元線的第一輸入及被配置成接收輸入資料的第二部分的第二輸入。
在一些實施例中,記憶體元件更包括第一暫存器以及第二暫存器。第一暫存器耦接至第一位元線。第一暫存器位於所述至少一個記憶體區段與第一邏輯電路之間。第二暫存器耦接至第 二位元線。第二暫存器位於所述至少一個記憶體區段與第二邏輯電路之間。
在一些實施例中,一種方法包括同時進行以下操作:使用自記憶體元件的記憶體區段中的多個記憶胞中的第一記憶胞讀取的第一筆權重資料來執行記憶體內計算(CIM)操作;以及更新記憶體區段中的所述多個記憶胞中的第二記憶胞中的第二筆權重資料,第二記憶胞不同於第一記憶胞。
在一些實施例中,所述方法更包括:在使用自第一記憶胞讀取的第一筆權重資料執行記憶體內計算操作的同時,用新的第一筆權重資料更新第一記憶胞中的第一筆權重資料。
在一些實施例中,所述更新第一記憶胞中的第一筆權重資料及更新第二記憶胞中的第二筆權重資料包括自耦接至記憶體區段的同一權重緩衝器中對應地獲得所述新的第一筆權重資料及新的第二筆權重資料。
在一些實施例中,所述方法更包括:在使用自第一記憶胞讀取的第一筆權重資料執行記憶體內計算操作的同時,更新記憶體區段中的所述多個記憶胞中的至少一個第三記憶胞中的至少一個第三筆權重資料,所述至少一個第三記憶胞不同於第一記憶胞及第二記憶胞。
在一些實施例中,所述方法更包括:在暫存器的輸出處鎖存自第一記憶胞讀取的第一筆權重資料。所述使用第一筆權重資料執行記憶體內計算操作包括在暫存器的輸出處使用鎖存的第 一筆權重資料執行記憶體內計算操作。
在一些實施例中,記憶體區段中的所述多個記憶胞包括耦接至同一位元線的單埠記憶胞。位元線耦接至暫存器的輸入。
在一些實施例中,所述使用第一筆權重資料執行記憶體內計算操作包括:在邏輯電路處,執行第一筆權重資料與輸入資料的乘法,以及將所述乘法的結果輸出至加法器樹。
在一些實施例中,一種記憶體元件包括記憶陣列、輸入驅動器及乘法累加(MAC)電路。記憶陣列包括:多個記憶體區段,被配置成儲存用於記憶體內計算(CIM)操作的權重資料;多條寫入位元線,耦接至所述多個記憶體區段,以更新儲存在所述多個記憶體區段中的權重資料;以及多條讀取位元線,耦接至所述多個記憶體區段,以讀出儲存在所述多個記憶體區段中用於CIM操作的權重資料。輸入驅動器耦接至多條輸入資料線,並被配置成藉由所述多條輸入資料線供應輸入資料。MAC電路耦接至所述多條讀取位元線及所述多條輸入資料線,並且被配置成基於自所述多個記憶體區段讀出的權重資料及自輸入驅動器供應的輸入資料來執行CIM操作。
在一些實施例中,記憶體元件更包括權重緩衝器。權重緩衝器由所述多個記憶體區段共用並耦接至所述多條寫入位元線。權重緩衝器被配置成在所述多個記憶體區段中的另一記憶體區段被讀取時向所述多個記憶體區段中的記憶體區段提供新的權重資料,以將儲存在所述另一記憶體區段中的對應的權重資料供 應至乘法累加電路用於記憶體內計算操作。
前述內容概述了若干實施例的特徵,以使熟習此項技術者可更佳地理解本揭露的各個態樣。熟習此項技術者應理解,他們可容易地使用本揭露作為設計或修改其他製程及結構的基礎來施行與本文中所介紹的實施例相同的目的及/或達成與本文中所介紹的實施例相同的優點。熟習此項技術者亦應認識到,該些等效構造並不背離本揭露的精神及範圍,而且他們可在不背離本揭露的精神及範圍的條件下在本文中對其作出各種改變、代替及變更。
300:記憶體元件
328:輸入緩衝器
330:記憶體巨集
351、352、353:權重緩衝器
341、342、343:記憶體區段
361、362、363:邏輯電路/Reg+LOC電路
370:MAC電路
D_IN:輸入資料
D_OUT:輸出資料
IN[1]、IN[M-1]、IN[M]:輸入資料區段
Y[1]、Y[M-1]、Y[M]:中間資料

Claims (10)

  1. 一種記憶體元件,包括:記憶陣列,包括被配置成儲存權重資料的至少一個記憶體區段;至少一個權重緩衝器,耦接至所述至少一個記憶體區段,並且被配置成保存將在所述至少一個記憶體區段中更新的新的權重資料;至少一個邏輯電路,具有:第一輸入,藉由至少一條位元線耦接至所述至少一個記憶體區段,第二輸入,被配置成接收輸入資料,以及輸出;以及計算電路,耦接至所述至少一個邏輯電路的所述輸出,其中:所述至少一個邏輯電路中的第一邏輯電路以及所述計算電路使用自所述至少一個記憶體區段中的第一記憶胞讀取的第一筆權重資料來執行記憶體內計算操作,並且在執行所述記憶體內計算操作的同時,所述至少一個記憶體區段中的第二記憶胞的第二筆權重資料被更新,所述第二記憶胞不同於所述第一記憶胞。
  2. 如請求項1所述的記憶體元件,其中:所述計算電路包括乘法累加電路。
  3. 如請求項2所述的記憶體元件,其中:所述乘法累加電路包括具有多個加法器級的加法器樹。
  4. 如請求項1所述的記憶體元件,更包括:至少一個暫存器,耦接至所述至少一條位元線,位於所述至少一個記憶體區段與所述至少一個邏輯電路的所述第一輸入之間。
  5. 一種操作記憶體元件的方法,所述方法包括:同時進行以下操作:使用自所述記憶體元件的記憶體區段中的多個記憶胞中的第一記憶胞讀取的第一筆權重資料來執行記憶體內計算操作,以及更新所述記憶體區段中的所述多個記憶胞中的第二記憶胞中的第二筆權重資料,所述第二記憶胞不同於所述第一記憶胞。
  6. 如請求項5所述的操作記憶體元件的方法,更包括:在所述使用自所述第一記憶胞讀取的所述第一筆權重資料執行所述記憶體內計算操作的同時,用新的第一筆權重資料更新所述第一記憶胞中的所述第一筆權重資料。
  7. 如請求項5所述的操作記憶體元件的方法,更包括:在暫存器的輸出處鎖存自所述第一記憶胞讀取的所述第一筆權重資料, 其中所述使用所述第一筆權重資料執行所述記憶體內計算操作包括在所述暫存器的所述輸出處使用鎖存的所述第一筆權重資料執行所述記憶體內計算操作。
  8. 如請求項5所述的操作記憶體元件的方法,其中:所述使用所述第一筆權重資料執行所述記憶體內計算操作包括:在邏輯電路處,執行所述第一筆權重資料與輸入資料的乘法,以及將所述乘法的結果輸出至加法器樹。
  9. 一種記憶體元件,包括:記憶陣列,包括:多個記憶體區段,被配置成儲存用於記憶體內計算操作的權重資料,多條寫入位元線,耦接至所述多個記憶體區段,以更新儲存在所述多個記憶體區段中的所述權重資料,以及多條讀取位元線,耦接至所述多個記憶體區段,以讀出儲存在所述多個記憶體區段中用於所述記憶體內計算操作的所述權重資料;輸入驅動器,耦接至多條輸入資料線,並被配置成藉由所述多條輸入資料線供應輸入資料;以及乘法累加電路,耦接至所述多條讀取位元線及所述多條輸入資料線,並且被配置成基於自所述多個記憶體區段讀出的所述權 重資料及自所述輸入驅動器供應的所述輸入資料來執行所述記憶體內計算操作,其中在所述乘法累加電路使用自所述多個記憶體區段中的第一記憶胞讀取的第一筆權重資料執行所述記憶體內計算操作的同時,所述多個記憶體區段中的第二記憶胞的第二筆權重資料被更新,所述第二記憶胞不同於所述第一記憶胞。
  10. 如請求項9所述的記憶體元件,更包括:權重緩衝器,由所述多個記憶體區段共用並耦接至所述多條寫入位元線,其中所述權重緩衝器被配置成在所述多個記憶體區段中的另一記憶體區段被讀取時向所述多個記憶體區段中的記憶體區段提供新的權重資料,以將儲存在所述另一記憶體區段中的對應的所述權重資料供應至所述乘法累加電路用於所述記憶體內計算操作。
TW111111434A 2021-08-27 2022-03-25 用於記憶體內計算(cim)的記憶體元件及方法 TWI812117B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163237662P 2021-08-27 2021-08-27
US63/237,662 2021-08-27
US17/576,898 US20230068645A1 (en) 2021-08-27 2022-01-14 Memory device and method for computing-in-memory (cim)
US17/576,898 2022-01-14

Publications (2)

Publication Number Publication Date
TW202309899A TW202309899A (zh) 2023-03-01
TWI812117B true TWI812117B (zh) 2023-08-11

Family

ID=84500842

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111111434A TWI812117B (zh) 2021-08-27 2022-03-25 用於記憶體內計算(cim)的記憶體元件及方法

Country Status (5)

Country Link
US (1) US20230068645A1 (zh)
KR (1) KR20230031757A (zh)
CN (1) CN115512729A (zh)
DE (1) DE102022101250A1 (zh)
TW (1) TWI812117B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017124644A1 (zh) * 2016-01-20 2017-07-27 北京中科寒武纪科技有限公司 一种人工神经网络压缩编码装置和方法
WO2018228295A1 (zh) * 2017-06-16 2018-12-20 华为技术有限公司 一种支撑基于 rram 的神经网路训练的外围电路及系统
TWM614073U (zh) * 2020-05-04 2021-07-01 神亞科技股份有限公司 用於執行卷積神經網路運算的處理裝置
TW202129518A (zh) * 2019-11-26 2021-08-01 美商葛如克公司 僅使用一單一側自多維陣列加載運算元及輸出結果

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017124644A1 (zh) * 2016-01-20 2017-07-27 北京中科寒武纪科技有限公司 一种人工神经网络压缩编码装置和方法
WO2018228295A1 (zh) * 2017-06-16 2018-12-20 华为技术有限公司 一种支撑基于 rram 的神经网路训练的外围电路及系统
TW202129518A (zh) * 2019-11-26 2021-08-01 美商葛如克公司 僅使用一單一側自多維陣列加載運算元及輸出結果
TWM614073U (zh) * 2020-05-04 2021-07-01 神亞科技股份有限公司 用於執行卷積神經網路運算的處理裝置

Also Published As

Publication number Publication date
US20230068645A1 (en) 2023-03-02
KR20230031757A (ko) 2023-03-07
DE102022101250A1 (de) 2023-03-02
CN115512729A (zh) 2022-12-23
TW202309899A (zh) 2023-03-01

Similar Documents

Publication Publication Date Title
TWI806842B (zh) 計算記憶體胞元及使用記憶體胞元之處理陣列裝置
US8117567B2 (en) Structure for implementing memory array device with built in computation capability
US10043581B2 (en) Memory circuit capable of implementing calculation operations
US11335387B2 (en) In-memory computing circuit for fully connected binary neural network
US7646648B2 (en) Apparatus and method for implementing memory array device with built in computational capability
US7746709B2 (en) Memory circuit with decoupled read and write bit lines and improved write stability
US7817492B2 (en) Memory device using SRAM circuit
CN107783783A (zh) 与微代码指令有关的设备及方法
CN111429956B (zh) 一种多模式可计算的sram单元电路及其控制方法
Chen et al. Configurable 8T SRAM for enbling in-memory computing
CN114360595A (zh) 一种基于8t sram内存内行列双向的减法计算电路结构
US8862836B2 (en) Multi-port register file with an input pipelined architecture with asynchronous reads and localized feedback
JP2012064292A (ja) 半導体集積回路
TWI812117B (zh) 用於記憶體內計算(cim)的記憶體元件及方法
Wang et al. Efficient time-domain in-memory computing based on TST-MRAM
Chen et al. Reconfigurable 2T2R ReRAM with split word-lines for TCAM operation and in-memory computing
Monga et al. A Novel Decoder Design for Logic Computation in SRAM: CiM-SRAM
Ataei et al. A high performance multi-port SRAM for low voltage shared memory systems in 32 nm CMOS
TWI827001B (zh) 記憶胞、記憶胞陣列及記憶胞的操作方法
US11935586B2 (en) Memory device and method for computing-in-memory (CIM)
Chen et al. A multi-functional 4T2R ReRAM macro enabling 2-dimensional access and computing in-memory
US11908545B2 (en) Memory device and operating method for computing-in-memory
Kumar et al. Efficient Implementation of Fast Half Adder using 8T SRAM for In-Memory Computing Applications
JPS60236189A (ja) 多ポ−トレジスタセル
Monga et al. Design of In-Memory Computing Enabled SRAM Macro