TWI788128B - 記憶體裝置及其操作方法 - Google Patents
記憶體裝置及其操作方法 Download PDFInfo
- Publication number
- TWI788128B TWI788128B TW110145455A TW110145455A TWI788128B TW I788128 B TWI788128 B TW I788128B TW 110145455 A TW110145455 A TW 110145455A TW 110145455 A TW110145455 A TW 110145455A TW I788128 B TWI788128 B TW I788128B
- Authority
- TW
- Taiwan
- Prior art keywords
- accumulation
- bit
- results
- multiplication
- memory
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000009825 accumulation Methods 0.000 claims abstract description 165
- 230000015654 memory Effects 0.000 claims abstract description 159
- 239000000872 buffer Substances 0.000 claims abstract description 50
- 238000006243 chemical reaction Methods 0.000 claims description 82
- 239000013598 vector Substances 0.000 claims description 41
- 238000001514 detection method Methods 0.000 claims description 20
- 230000001960 triggered effect Effects 0.000 claims description 13
- 238000011094 buffer selection Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 7
- 101100162020 Mesorhizobium japonicum (strain LMG 29417 / CECT 9101 / MAFF 303099) adc3 gene Proteins 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000001186 cumulative effect Effects 0.000 description 11
- 238000013506 data mapping Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 101100434411 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADH1 gene Proteins 0.000 description 1
- 101150102866 adc1 gene Proteins 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000026683 transduction Effects 0.000 description 1
- 238000010361 transduction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Electrotherapy Devices (AREA)
- Image Input (AREA)
Abstract
本案提供記憶體裝置與其操作方法。記憶體裝置包括:複數個頁緩衝器,暫存一輸入資料;複數個記憶平面,耦接至該些頁緩衝器,複數個權重儲存於該些記憶平面,根據所接收的該些記憶平面的複數個位址,該些記憶平面對該些權重與該些頁緩衝器的該輸入資料平行進行位元乘法,以平行得到複數個位元乘法結果,該些位元乘法結果存回於該些頁緩衝器;以及至少一累積電路,耦接至該些頁緩衝器,對該些記憶平面的該些位元乘法結果平行或依序進行位元累積操作以得到一乘積累加運算結果。
Description
本發明係有關於一種具有記憶體內運算(In-Memory-Computing(IMC))的記憶體裝置及其操作方法。
人工智慧(AI)已在許多領域中成為高度有效解決方案。AI的關鍵操作在於對大量的輸入資料(如輸入特徵圖(input feature maps))與權重值進行乘積累加運算(multiply-accumulation(MAC))。
然而,以目前的AI架構而言,容易遇到輸出入瓶頸(IO bottleneck)與低效率的MAC運算流程(inefficient MAC operation flow)。
為達到高準確度,可執行具有多位元輸入及多位元權重值的MAC操作。然而,輸出入瓶頸變得更加嚴重,且效率將更低。
記憶體內運算(In-Memory-Computing(IMC))可用於加速MAC運算,因為IMC可減少在中央處理架構下所需要用
的複雜算術邏輯單元(Arithmetic logic unit,ALU),且提供記憶體內的MAC操作的高並行性(parallelism)。
在進行IMC時,如果能加快「操作速度」的話,對於IMC性能將可有所助益。
根據本案一實例,提出一種記憶體裝置,包括:複數個頁緩衝器,暫存一輸入資料;複數個記憶平面,耦接至該些頁緩衝器,根據所接收的該些記憶平面的複數個位址,複數個權重儲存於該些記憶平面,該些記憶平面對該些權重與該些頁緩衝器的該輸入資料平行進行位元乘法,以平行得到複數個位元乘法結果,該些位元乘法結果存回於該些頁緩衝器;以及至少一累積電路,耦接至該些頁緩衝器,對該些記憶平面的該些位元乘法結果平行或依序進行位元累積操作以得到一乘積累加運算結果。
根據本案另一實例,提出一種記憶體裝置之操作方法,包括:暫存一輸入資料於複數個頁緩衝器;根據所接收的該些記憶平面的複數個位址,由該些記憶平面對所儲存的複數個權重與該輸入資料平行進行位元乘法,以平行得到複數個位元乘法結果,該些位元乘法結果存回於該些頁緩衝器;以及對該些記憶平面的該些位元乘法結果平行或依序進行位元累積操作以得到一乘積累加運算結果。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
100:記憶體裝置
MP0~MP3:記憶平面
PB0~PB3:頁緩衝器
ADC0~ADC3:轉換單元
120:累積偵測電路
130:輸出閂鎖器
140:累積電路
MP:記憶平面
PB:頁緩衝器
210:記憶體區塊
220:乘法電路
240:分群電路
250:計數單元
211:記憶體單元
221:乘法單元
221A:輸入閂鎖器
221B:感應放大器
221C:輸出閂鎖器
221D:共同資料閂鎖器
241:分群單元
401A、403A、401B、403B、411A、413A、411B、413B:位元
402、412、414:權重值
505:閂鎖器
510:位元線開關
T11~T46:時序
800:記憶體裝置
820-0~820-3:累積偵測電路
830:輸出閂鎖器
840-0~840-3:累積電路
1010~1030:步驟
第1圖繪示根據本案第一實施例的具有記憶體內運算(In-Memory-Computing(IMC))功能之記憶體裝置之功能方塊圖。
第2圖顯示根據本案第一實施例的記憶平面與累積電路的功能方塊圖。
第3圖顯示根據本案第一實施例的資料對映(data mapping)示意圖。
第4A圖至第4C圖顯示根據本案第一實施例的一維資料對映的數例。
第5圖顯示本案第一實施例的乘法運算的示範例示意圖。
第6A圖與第6B圖顯示根據本案第一實施例的分群操作(多數決操作)與位元計數(bitwise counting)示意圖。
第7A圖與第7B圖顯示本案第一實施例的MAC運算流程。
第8圖繪示根據本案第二實施例的具有記憶體內運算功能之記憶體裝置之功能方塊圖。
第9A圖與第9B圖顯示本案第二實施例的MAC運算流程。
第10圖顯示根據本案第三實施例之記憶體裝置之操作方法流程圖。
本說明書的技術用語係參照本技術領域之習慣用語,
如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
第一實施例
第1圖繪示根據本案第一實施例的具有記憶體內運算(In-Memory-Computing(IMC))功能之記憶體裝置100之功能方塊圖。記憶體裝置100包括複數個記憶平面(memory plane),複數個頁緩衝器(page buffer)、複數個轉換單元、累積偵測電路(accumulation detection circuit)120、輸出閂鎖器(output latch)130與累積電路(accumulation circuit)140。轉換單元例如但不受限於為,類比數位轉換器(ADC)。
為方便解釋,在第1圖中,記憶體裝置100包括4個記憶平面MP0~MP3,4個頁緩衝器PB0~PB3、4個轉換單元ADC0~ADC3、累積偵測電路120、輸出閂鎖器130與累積電路140。但當知本案並不受限於此。
頁緩衝器PB0~PB3可用於暫存輸入資料IN,並將輸入資料IN傳至記憶平面MP0~MP3。記憶平面MP0~MP3所產生的複數個位元乘法結果BM0~BM3存回於頁緩衝器PB0~PB3。此外,受控於頁緩衝器選擇信號PB_SEL,輸出閂鎖器130選擇相對應的頁緩衝器PB0~PB3所儲存的該些位元乘法
結果BM0~BM3以傳送給累積電路140。
記憶平面MP0~MP3耦接至頁緩衝器PB0~PB3。記憶平面MP0~MP3可對所儲存的權重與頁緩衝器PB0~PB3的輸入資料IN平行進行位元乘法(例如是位元AND操作),以平行得到複數個位元乘法結果BM0~BM3。該些位元乘法結果BM0~BM3存回於頁緩衝器PB0~PB3。此外,亦可決定記憶平面MP0~MP3的哪些記憶晶胞串列(memory cell string)要被選擇以致能感應操作。此外,當對所儲存的權重與頁緩衝器PB0~PB3的輸入資料IN進行位元乘法(例如是位元AND操作)時,記憶平面MP0~MP3的複數個記憶體單元更產生記憶體單元電流IMC0~IMC3,該些記憶體單元電流IMC0~IMC3共同輸入至相應的該些轉換單元ADC0~ADC3。
轉換單元ADC0~ADC3耦接至記憶平面MP0~MP3。記憶平面MP0~MP3的該些記憶體單元電流IMC0~IMC3分別輸入至轉換單元ADC0~ADC3。轉換單元ADC0~ADC3將記憶平面MP0~MP3的該些記憶體單元電流IMC0~IMC3進行轉換後得到複數個轉換結果AMACO0~AMACO3。
累積偵測電路120耦接至轉換單元ADC0~ADC3。累積偵測電路120分別將轉換單元ADC0~ADC3的該些轉換結果AMACO0~AMACO3比較於一門檻值,以產生頁緩衝器選擇信號PB_SEL給輸出閂鎖器130,並產生累積致能信號ACC_EN
給累積電路140。當該些轉換結果AMACO0~AMACO3高於該門檻值時,回應於頁緩衝器選擇信號PB_SEL,輸出閂鎖器130選擇相對應的頁緩衝器PB0~PB3所儲存的該些位元乘法結果BM0~BM3傳送給累積電路140。
當至少有一該些轉換結果AMACO0~AMACO3高於該門檻值時,累積致能信號ACC_EN為致能狀態;否則,累積致能信號ACC_EN為失能狀態。
輸出閂鎖器130耦接至累積偵測電路120與頁緩衝器PB0~PB3。回應於頁緩衝器選擇信號PB_SEL,輸出閂鎖器130選擇相對應的頁緩衝器PB0~PB3所儲存的該些位元乘法結果BM0~BM3,以傳送給累積電路140。例如,當轉換單元ADC0與ADC1的轉換結果AMACO0與AMACO1高於該門檻值時,回應於頁緩衝器選擇信號PB_SEL,輸出閂鎖器130選擇相對應的頁緩衝器PB0與PB1所儲存的該些位元乘法結果BM0~BM1傳送給累積電路140。
累積電路140耦接至輸出閂鎖器130與累積偵測電路120。當被累積致能信號ACC_EN所致能時,累積電路140對輸出閂鎖器130所傳來的該些位元乘法結果BM0~BM3進行位元累積操作以得到乘積累加運算結果OUT,其細節將於底下說明之。
第2圖顯示根據本案第一實施例的記憶平面MP與累積電路140的功能方塊圖。第2圖的記憶平面MP可用於實現
第1圖的記憶平面MP0~MP3。如第2圖所示,記憶平面MP包括:記憶體區塊210與乘法電路220。累積電路140包括分群電路240與計數單元250。其中,乘法電路220是類比的,而累積電路140、分群電路240與計數單元250是數位的。
記憶體區塊210包括複數個記憶體單元211。在本案一實施例中,記憶體單元211例如但不受限於,為非揮發性記憶體單元。當進行MAC操作時,記憶體單元211可用於儲存權重值(weight)。
乘法電路220耦接至記憶體區塊210。乘法電路220包括複數個單位元乘法單元221。各單位元乘法單元221包括:輸入閂鎖器221A、感應放大器(SA)221B、輸出閂鎖器221C與共同資料閂鎖器(common data latch(CDL))221D。輸入閂鎖器221A耦接至記憶體區塊210。感應放大器221B耦接至輸入閂鎖器221A。輸出閂鎖器221C耦接至感應放大器221B。共同資料閂鎖器221D耦接至輸出閂鎖器221C。乘法電路220進行乘法操作所得到的位元乘法結果BM可存回至頁緩衝器PB。
當記憶體單元211所存的權重值為邏輯1且相對應的輸入資料也為邏輯1時,記憶體單元211可產生單元電流。該些記憶體單元211的該些單元電流可累加後而得到記憶體單元電流IMC。
在本案第一實施例中,「數位式累加」代表致能累積電路140但不致能轉換單元ADC0~ADC3。「混合式累加」代
表致能累積電路140與轉換單元ADC0~ADC3。亦即,在本案第一實施例中,轉換單元ADC0~ADC3可被選擇性觸發。
在本案一實施例中,透過觸發轉換單元ADC0~ADC3可快速濾掉無用資料,以增快MAC的操作速度。而累積電路140則可累積未被濾掉的資料,以增加MAC的準確度。而「混合式累加」則由於使用低解析度量化操作,可以減少變動影響(variation influence),此外,也可以避免累積無用資料,且可以維持解析度。
分群電路240耦接至輸出閂鎖器130。分群電路240包括複數個分群單元241。該些分群單元241對於該些位元乘法結果BM0~BM3進行分群操作,以得到複數個分群結果。在本案一可能實施例中,分群操作例如可由多數決技術(majority technique)所實施,例如多數決功能技術(majority function technique)。分群電路240由根據多數決功能技術的多數決群體電路(majority grouping circuit)所實施,分群單元241由分散式多數決群體單元(majority grouping unit)所實施,但本案並不受限於此。分群技術可由其他相似技術來實施。
計數單元250耦接至分群電路240。計數單元250用以對分群電路240的分群結果(例如,多數決結果)進行位元計數或位元累積,以產生乘積累加運算結果OUT。在本案一實施例中,計數單元250可以用已知的計數電路,例如但不限於,漣波計數器(ripple counter)來實現。在本案說明中,計數與累積基本
上具有相同意思,而計數器與累積器基本上具有相同意思。
在本案第一實施例中,透過第1圖與第2圖的架構,可獨立地量化各記憶平面的電流。且,累積電路140可被該些記憶平面所共享,進而降低電路面積。
現請參照第3圖,其顯示根據本案一實施例的資料對映(data mapping)示意圖。如第3圖所示,以各輸入資料(或各權重值)具有N個維度(N是正整數)的8位元為例(但當知本案並不受限於此)。
底下以輸入資料的資料對映為例做說明,但當知本案並不受限於此。底下的說明同樣適用於權重值的資料對映。
當將輸入資料以二進位8位元表示時,輸入資料(或權重值)分為最高有效位元(most significant bit,MSB)向量(vector)與最低有效位元(least significant bit,LSB)向量。8位元輸入資料(或權重值)的最高有效位向量包括4位元B7~B4,而最低有效位向量包括4位元B3~B0。
將輸入資料的MSB向量與LSB向量的各位元以一元編碼(Unary coding)(亦即數值形式(value format))表示。例如,輸入資料的最高有效位向量的位元B7可以表示為B70~B77,輸入資料的最高有效位向量的位元B6可以表示為B60~B63,輸入資料的最高有效位向量的位元B5可以表示為B50~B51,輸入資料的最高有效位向量的位元B4一樣表示為B4。
將以一元編碼(數值形式)表示的輸入資料的MSB
向量的各位元與輸入資料的LSB向量的各位元重複多次以成為展乘積(unfolding dot product,unFDP)形式。例如,輸入資料的MSB的各位元被重複(24-1)次,同樣地,輸入資料的LSB的各位元被重複(24-1)次。如此可以將輸入資料以展乘積形式表示。
對輸入資料(展乘積形式)與權重值進行乘法操作,以得到乘法操作結果。
為方便了解,底下以一例做說明,但當知其並非用於限制本案。
現請參照第4A圖,其顯示根據本案第一實施例的一維資料對映的一例。如第4A圖所示,輸入資料=(IN1,IN2)=(2,1),與權重值=(We1,We2)=(1,2)。將輸入資料的MSB與LSB以二進位形式表示,所以,IN1=10,而IN2=01,相似地,將權重值的MSB與LSB的各位元以二進位形式表示,所以,We1=01,而We2=10。
將輸入資料的MSB與LSB,以及,權重值的MSB與LSB,編碼為以一元編碼(數值形式)表示。亦即,將輸入資料的MSB編碼為110,將輸入資料的LSB編碼為001,相似地,將權重值的MSB編碼為001,將權重值的LSB編碼為110。
之後,將以編碼為一元編碼的輸入資料的MSB(110)的各位元與編碼為一元編碼的輸入資料的LSB(001)的各位元重複多次以成為展乘積(unfolding dot product,unFDP)形式。例如,輸入資料的MSB(110)的各位元被重複3次,
所以得到輸入資料的MSB的展乘積形式為111111000。輸入資料的LSB(001)的各位元被重複3次,所以得到輸入資料的LSB的展乘積形式為000000111。
對輸入資料(展乘積形式)與權重值進行MAC操作,以得到MAC操作結果。MAC操作結果為:1*0=0、1*0=0、1*1=1、1*0=0、1*0=0、1*1=1、0*0=0、0*0=0、0*1=0、0*1=0、0*1=0、0*0=0、0*1=0、0*1=0、0*0=0、1*1=1、1*1=1、1*0=0。將這些數值相加,則可以得到:0+0+1+0+0+1+0+0+0+0+0+0+0+0+0+1+1+0=4。
由上述可知,如果輸入資料是i位元而權重值是j位元(i與j皆為正整數),則所用的記憶體單元數量為:(2i-1)*(2j-1)。
現請參照第4B圖,其顯示根據本案第一實施例的資料映對的另一可能例。在第4B圖中,輸入資料是(IN1)=(2),而權重值是(We1)=(1)。輸入資料與權重值是4位元。
輸入資料表示為二進位格式時,IN1=0010。相似地,權重值表示為二進位格式時,We1=0001。
將輸入資料與權重值編碼成一元編碼(數值形式)。例如,輸入資料的最高位元“0”編碼成“00000000”,而輸入資料的最低位元“0”編碼成“0”,以此類推。相似地,權重值的最高位元“0”編碼成“00000000”,而權重值的最低位元“1”編碼成“1”。
編碼成一元編碼的輸入資料的各位元被複製多次以
成為展乘積形式。例如,編碼成一元編碼的輸入資料的最高位元401A被複製15次以成為位元403A;以及,編碼成一元編碼的輸入資料的最低位元401B被複製15次以成為位元403B。
編碼成一元編碼的權重值402也被複製15次,以表示為展乘積形式。
對表示為展乘積形式的輸入資料與表示為展乘積形式的權重值進行乘法操作以產生MAC操作結果。詳細而言,輸入資料的位元403A乘上權重值402;輸入資料的位元403B乘上權重值402,依此類推。將乘法值加總可以產生MAC操作結果(“2”)。
現請參照第4C圖,其顯示根據本案第一實施例的資料映對的另一可能例。在第4C圖中,輸入資料是(IN1)=(1),而權重值是(We1)=(5)。輸入資料與權重值是4位元。
輸入資料表示為二進位格式時,IN1=0001。相似地,權重值表示為二進位格式時,We1=0101。
將輸入資料與權重值編碼成一元編碼(數值形式)。
編碼成一元編碼的輸入資料的各位元被複製多次以成為展乘積形式。在第4C圖中,當複製輸入資料的各位元與權重值的各位元時,加入位元“0”。例如,編碼成一元編碼的輸入資料的最高位元411A被複製15次並加入位元“0”以成為位元413A;以及,編碼成一元編碼的輸入資料的最低位元411B被複製15次並加入位元“0”以成為位元413B。藉此將輸入資料表示為展乘積
形式。
相似地,編碼成一元編碼的權重值412也被複製15次,並額外加入位元“0”至各權重值414。藉此將權重值表示為展乘積形式。
對表示為展乘積形式的輸入資料與表示為展乘積形式的權重值進行乘法操作以產生MAC操作結果。詳細而言,輸入資料的位元413A乘上權重值414;輸入資料的位元413B乘上權重值414,依此類推。將乘法值加總可以產生MAC操作結果(“5”)。
在習知技術中,對8位元輸入資料與8位元權重值進行MAC操作,如果採用直接MAC運算法,則所用的記憶體單元數量為255*255*512=33,292,822。
相反地,如上述般,在本案實施例中,對8位元輸入資料與8位元權重值進行MAC操作,則所用的記憶體單元數量為15*15*512*2=115,200*2=230,400。故而,本案實施例在進行MAC操作中所用的記憶體單元數量約為習知技術的0.7%。
在本案實施例中,利用unFDP式的資料映對,可以減少運算時所用的記憶體單元數量,故而可以減少運算成本,且減少錯誤校正碼(ECC,error correction code)成本。另外,也可以容忍錯誤位元效應(fail-bit effect)。
請再參考第1圖與第2圖。在本案實施例中,於進行乘法運算時,權重值(轉導值)乃是儲存於記憶體區塊210的該
些記憶體單元211內,而輸入資料(電壓)則是由頁緩衝器讀取並傳送給共同資料閂鎖器221D。共同資料閂鎖器221D傳送輸入資料給輸入閂鎖器221A。
為更了解本案第一實施例的乘法運算,現請參考第5圖,其顯示本案第一實施例的乘法運算的示範例示意圖。第5圖應用於記憶體裝置支援受選位元線讀取(the selected bit-line read function)。第5圖中,輸入閂鎖器221A包括閂鎖器505與位元線開關510。
如第5圖所示,將權重值以一元編碼(數值形式)表示(如第3圖)。故而,權重值的最高位元存於8個記憶體單元211內,權重值的次高位元存於4個記憶體單元211內,權重值的第三高位元存於2個記憶體單元211內,權重值的最低位元存於1個記憶體單元211內。
同樣地,將輸入資料以一元編碼(數值形式)表示(如第3圖),故而,輸入資料的最高位元存於8個共同資料閂鎖器221D內,輸入資料的次高位元存於4個共同資料閂鎖器221D內,輸入資料的第三高位元存於2個共同資料閂鎖器221D內,輸入資料的最低位元存於1個共同資料閂鎖器221D內。輸入資料從共同資料閂鎖器221D送至閂鎖器505。
於第5圖中,該些複數個位元線開關510耦接於記憶體單元211與感應放大器221B之間。位元線開關510受控於閂鎖器505。例如,當閂鎖器505輸出位元1時,位元線開關510
為導通,而當閂鎖器505輸出位元0時,位元線開關510為關閉。
此外,當記憶體單元211內的權重值為位元1且位元線開關510為導通(輸入資料為位元1)時,感應放大器221B將感應到記憶體單元電流以產生乘法結果“1”。當記憶體單元211內的權重值為位元0且位元線開關510為導通(輸入資料為位元1)時,感應放大器221B感應不到記憶體單元電流。當記憶體單元211內的權重值為位元1且位元線開關510為關閉(輸入資料為位元0)時,感應放大器221B感應不到記憶體單元電流以產生乘法結果“0”。當記憶體單元211內的權重值為位元0且位元線開關510為關閉(輸入資料為位元0)時,感應放大器221B感應不到記憶體單元電流。
亦即,經由第5圖的佈局方式,當輸入資料為位元1且權重值為位元1時,感應放大器221B感應到記憶體單元電流以產生乘法結果“1”。至於其他情況,感應放大器221B感應不到記憶體單元電流,以產生乘法結果“0”。感應放大器221B的乘法結果輸入至輸出閂鎖器221C。該些輸出閂鎖器221C的輸出結果(用以形成位元乘法結果BM)則透過共同資料閂鎖器221D而回存至頁緩衝器PB。
由該些記憶體單元211所產生的記憶體單元電流IMC會共同輸入至相應的該些轉換單元ADC0~ADC3之一。
在上表中,HVT與LVT分別代表高臨界值記憶體單元與低臨界值記憶體單元。而IHVT與ILVT則分別代表當輸入資料為邏輯1時,高臨界值記憶體單元與低臨界值記憶體單元(權重值分別為0(HTV)與+1(LTV))所產生的類比記憶體單元電流IMC。
在本案實施例中,於進行乘法運算時,可以重複使用受選位元線讀取(selected bit line read,SBL-read)指令。故而,本案實施例可以減少以單位元表示(single-bit representation)所來的變動影響(variation influence)。
現請參考第6A圖,其顯示根據本案第一實施例的分群操作(多數決操作)與位元計數(bitwise counting)示意圖。如第6A圖所示,參考符號GM1代表對輸入資料的第一MSB向量與權重值進行位元乘法(bitwise multiplication)後所得到的第一乘法運算結果;參考符號GM2代表對輸入資料的第二MSB向量與權重值進行位元乘法後所得到的第二乘法運算結果;參考符號GM3代表對輸入資料的第三MSB向量與權重值進行位元乘法後
所得到的第三乘法運算結果;參考符號GL代表對輸入資料的LSB與權重值進行位元乘法後所得到的第四乘法運算結果。在分群操作(多數決操作)後,對第一乘法運算結果GM1進行分群結果是第一分群結果CB1(其累積權重是22);對第二乘法運算結果GM2進行分群結果是第二分群結果CB2(其累積權重是22);對第三乘法運算結果GM3進行分群結果是第三分群結果CB3(其累積權重是22);以及,對第四乘法運算結果GL進行分群結果是第四分群結果CB4(其累積權重是20)。
第6B圖顯示第4C圖的累積例。請參照第4C圖與第6B圖。如第6B圖所示,輸入資料(第4C圖)的位元413B乘上權重值414。從輸入資料(第4C圖)的位元413B乘上權重值414所產生的乘法結果的前四個位元(“0000”)被分群為第一乘法結果“GM1”。相似地,從輸入資料(第4C圖)的位元413B乘上權重值414所產生的乘法結果的第五至第八位元(“0000”)被分群為第二乘法結果“GM2”。從輸入資料(第4C圖)的位元413B乘上權重值414所產生的乘法結果的第九至第十二位元(“1111”)被分群為第三乘法結果“GM3”。從輸入資料(第4C圖)的位元413B乘上權重值414所產生的乘法結果的第十三至第十六位元(“0010”)則被直接計數。
在分群操作(多數決操作)後,第一分群結果CB1是“0”(其累積權重是22);第二分群結果CB2是“0”(其累積權重是22);第三分群結果CB3是“1”(其累積權重是22)。在計數時,將
這些分群結果CB1~CB4乘上個別累積權重並加以累積而產生乘積累加運算結果OUT。例如,如第6B圖所示,乘積累加運算結果OUT是CB1*22+CB2*22+CB3*22+CB4*20=0*22+0*22+1*22+1*20=0000 0000 0000 0000 0000 0000 0000 0101=5。
在上表中,以狀況A而言,由於群組皆為正確的(“1111”沒有錯誤位元),故而,其多數決結果為1。以狀況E而言,由於群組皆為正確的(“0000”沒有錯誤位元),故而,其多數決結果為0。
以狀況B而言,由於群組中有1個位元是錯誤(“1110”中的“0”是錯誤的),透過多數決,可以將“1110”決定為“1”。以狀況D而言,由於群組中有1個位元是錯誤(“0001”中的“1”是錯誤的),透過多數決,可以將“0001”決定為“0”。
以狀況C而言,群組中有2個位元是錯誤的(“1100”
中的“00”是錯誤的,或者,“1100”中的“11”是錯誤的),透過多數決,可以將“1100”決定為“1”或“0”。
故而,在本案實施例中,透過分群(多數決)功能,可以減少錯誤位元。
分群電路240的分群結果係輸入至計數單元250進行位元計數。
在進行計數時,將MSB向量的乘法運算結果的計數結果與LSB向量的乘法運算結果的計數結果進行累積。以第6A圖的情況而言,使用兩種累積器。第一種累積器要被分配較高的累積權重值(例如是22)。第一種累積器要累積:(1)「對乘法運算結果GM1進行分群(多數決)的所得到分群(多數決)結果:1位元」加上「對乘法運算結果GM2進行分群(多數決)的分群(多數決)結果:1位元」再加上「對乘法運算結果GM3進行分群(多數決)的分群(多數決)結果:1位元」。第一種累積器所得到的計數結果再乘以較高的累積權重值(例如是22)。第二種累積器要被分配較低的累積權重值(例如是20)。第二種累積器則是對乘法運算結果GL(多位元)進行直接計數。將經累積權重加權過的兩種累積結果相加,即可得到乘積累加運算結果OUT。例如,對乘法運算結果GM1進行分群的所得到分群結果為1(1位元),對乘法運算結果GM2進行分群的分群結果為0(1位元),對乘法運算結果GM3進行分群的分群結果為1(1位元)。第一種累積器所得到的計數結果(1+0+1)再乘以22,等於2 * 22=8。對乘法運算結果GL為4(3
位元),可直接計數。將經累積權重加權過的兩種累積結果相加,即可得到乘積累加運算結果OUT為8+4=12。
由上述可知,在本案實施例中,於進行計數或累積(accumulation)時,由於輸入資料已展開為unFDP形式,可以對儲存在共同資料閂鎖器內的資料進行分群(亦即,分為MSB向量與LSB向量),藉由分群機制(多數決機制)可以減少在MSB向量/LSB向量內的錯誤位元。
此外,在本案實施例中,即便使用傳統的累積器(計數器),仍可以減少計數/累積時間,這是因為本案實施例乃是使用數位計數指令(錯誤位元計數),以及對於不同向量(MSB向量與LSB向量)的累積結果給予不同累積權重。以一例而言,可以將累積運算時間減少至約40%。
第7A圖與第7B圖顯示本案第一實施例的MAC運算流程。第7A圖顯示轉換單元ADC0~ADC3被觸發的MAC運算流程,亦可稱為混合式MAC運算。而第7B圖顯示轉換單元ADC0~ADC3未被觸發的MAC運算流程,亦可稱為數位式MAC運算。而當轉換單元ADC0~ADC3未被觸發時,輸出閂鎖器130將該些位元乘法結果BM0~BM3傳給累積電路140進行位元累積(亦即,輸出閂鎖器130不再受控於頁緩衝器選擇信號PB_SEL,且累積電路140不再受控於累積致能信號ACC_EN)。
以第7A圖來看,於時序T11內,進行輸入廣播(input broadcasting)(接收輸入資料)。於時序T12內,接收該些
的記憶平面的個別位址。其中,該些記憶平面可針對不同的位址進行運算。然而,萬一有多個記憶平面用到同一位址,則本案一實施例需避免這種情況,讓該些記憶平面用到不同的位址。於時序T13內,根據所接收的該些記憶平面的該些位址,進行位元乘法。於時序T14內,將位元乘法結果輸出(例如,從記憶平面輸出到累積電路)。於時序T15內,進行位元累積。於進行位元累積時,不同記憶平面的位元累積是依序進行。例如,以第7A圖來看,由於轉換結果AMACO0與AMACO2高於該門檻值,所以,依序執行對記憶平面MP0與MP2的位元累積,而記憶平面MP1與MP3的位元累積則不執行。當知,位元累積執行順序並不受限於第7A圖,以第7A圖的情形而言,也可以先執行對記憶平面MP2的位元累積,再執行對記憶平面MP0的位元累積,此亦在本案精神範圍內。於時序T16內,將所得到的乘積累加運算結果輸出,且輸出該些記憶平面所用的下一個位址。
如第7B圖所示,時序T21~T24與T26相似或相同於時序T11~T14與T16。於時序T25內,由於轉換單元ADC0~ADC3未被觸發,所以,於進行位元累積時,所有記憶平面的位元累積是依序進行。例如,以第7B圖來看,依序執行對記憶平面MP0、MP1、MP2與MP3的位元累積。當知,位元累積執行順序並不受限於第7B圖,亦可有其他變化,此亦在本案精神範圍內。
由第7A圖與第7B圖可看出,在本案第一實施例中,
平行進行位元乘法操作,且依序執行位元累積操作。亦即,在本案第一實施例中,乃是以中央式(centralized)控制操作的進行,如此可以使得電路面積與功率降低。
由第7A圖與第7B可知,本案實施例的MAC操作可以分為兩種子操作類型。第一種子操作類型是乘法操作,將輸入資料乘上權重值,乃是根據受選位元線讀取指令而進行。第二種子操作類型則是累積(資料計數),特別是錯誤位元計數(fail bit counting)。在本案其他可能實施例中,可以加入更多計數單元,以加速計數/累積操作。
第二實施例
第8圖繪示根據本案第二實施例的具有記憶體內運算功能之記憶體裝置800之功能方塊圖。記憶體裝置800包括複數個記憶平面,複數個頁緩衝器、複數個轉換單元、複數個累積偵測電路、一輸出閂鎖器830與複數個累積電路。轉換單元例如但不受限於為,類比數位轉換器(ADC)。
為方便解釋,在第8圖中,記憶體裝置800包括4個記憶平面MP0~MP3,4個頁緩衝器PB0~PB3、4個轉換單元ADC0~ADC3、4個累積偵測電路820-0~820-3、輸出閂鎖器830與4個累積電路840-0~840-3。但當知本案並不受限於此。
頁緩衝器PB0~PB3可用於暫存輸入資料IN,並將輸入資料IN傳至記憶平面MP0~MP3。此外,記憶平面MP0~MP3所得到的該些位元乘法結果BM0~BM3回存至該些頁
緩衝器PB0~PB3,以傳送給該些累積電路840-0~840-3。
記憶平面MP0~MP3耦接至頁緩衝器PB0~PB3。記憶平面MP0~MP3可對所儲存的權重與頁緩衝器PB0~PB3的輸入資料IN平行進行位元乘法,以平行得到複數個位元乘法結果BM0~BM3。該些位元乘法結果BM0~BM3存回於頁緩衝器PB0~PB3。此外,亦可決定記憶平面MP0~MP3的哪些記憶晶胞串列要被選擇以致能感應操作。此外,當所儲存的權重與頁緩衝器PB0~PB3的輸入資料IN進行位元乘法(例如是位元AND操作)時,記憶平面MP0~MP3的複數個記憶體單元更產生記憶體單元電流IMC0~IMC3,該些記憶體單元電流IMC0~IMC3共同輸入至相應的該些轉換單元ADC0~ADC3。
轉換單元ADC0~ADC3耦接至記憶平面MP0~MP3。記憶平面MP0~MP3的該些記憶體單元電流IMC0~IMC3分別輸入至轉換單元ADC0~ADC3。轉換單元ADC0~ADC3將記憶平面MP0~MP3的該些記憶體單元電流IMC0~IMC3進行轉換後得到複數個轉換結果AMACO0~AMACO3。
該些累積偵測電路820-0~820-3耦接至轉換單元ADC0~ADC3。該些累積偵測電路820-0~820-3分別將轉換單元ADC0~ADC3的該些轉換結果AMACO0~AMACO3比較於一門檻值,以產生累積致能信號ACC_EN0~ACC_EN3給該些累積電路840-0~840-3。當該些轉換結果AMACO0~AMACO3高於該
門檻值時,累積致能信號ACC_EN0~ACC_EN3為致能狀態;否則,累積致能信號ACC_EN0~ACC_EN3為失能狀態。
該些累積電路840-0~840-3耦接至該些累積偵測電路820-0~820-3。當被累積致能信號ACC_EN0~ACC_EN3所致能時,該些累積電路840-0~840-3對該些記憶平面MP0~MP3所傳來的該些位元乘法結果BM0~BM3進行位元累積操作以得到複數個數位累積結果DMACO0~DMACO3。
該輸出閂鎖器830耦接至該些累積電路840-0~840-3。該輸出閂鎖器830將該些累積電路840-0~840-3的該些數位累積結果DMACO0~DMACO3輸出成乘積累加運算結果OUT。
至於該些累積電路840-0~840-3之電路架構與操作可參照第2圖的累積電路140,於其不重述。同樣地,第2圖的記憶平面MP可用於實現第8圖的記憶平面MP0~MP3。
在本案第二實施例中,可獨立地量化各記憶平面的電流。
至於第二實施例的資料對映可參照第一實施例的資料對映,於此不重述。
第9A圖與第9B圖顯示本案第二實施例的MAC運算流程。第9A圖顯示轉換單元ADC0~ADC3被觸發的MAC運算流程,亦可稱為混合式MAC運算。而第9B圖顯示轉換單元ADC0~ADC3未被觸發的MAC運算流程,亦可稱為數位式MAC
運算。而當轉換單元ADC0~ADC3未被觸發時,該些累積電路840-0~840-3對該些位元乘法結果BM0~BM3進行位元累積(亦即,該些累積電路840-0~840-3不再受控於該些累積致能信號ACC_EN0~ACC_EN3)。
以第9A圖來看,時序T31~T34與T36相似或相同於時序T11~T14與T16。於時序T35內,進行位元累積。於進行位元累積時,不同記憶平面的位元累積是同時進行。例如,以第9A圖來看,由於轉換結果AMACO0與AMACO2高於該門檻值,所以,同時執行對記憶平面MP0與MP2的位元累積,而記憶平面MP1與MP3的位元累積則不執行。
如第9B圖所示,時序T41~T44與T46相似或相同於時序T11~T14與T16。於時序T45內,由於轉換單元ADC0~ADC3未被觸發,所以,於進行位元累積時,所有記憶平面的位元累積是同時進行。
由第9A圖與第9B圖可看出,在本案第二實施例中,平行進行位元乘法操作,且平行執行位元累積操作。亦即,在本案第二實施例中,乃是以分散式(distributed)控制操作的進行,如此可以使得更加快MAC操作速度。
第3圖、第4A圖至第4C圖、第5圖、第6A圖至第6B圖亦可應用於第二實施例中。
第三實施例
第10圖顯示根據本案第三實施例之記憶體裝置之
操作方法流程圖。根據本案第三實施例之記憶體裝置之操作方法包括:暫存一輸入資料於複數個頁緩衝器(1010);根據所得到的複數個記憶平面的複數個位址,由該些記憶平面對所儲存的複數個權重與該輸入資料平行進行位元乘法,以平行得到複數個位元乘法結果,該些位元乘法結果存回於該些頁緩衝器(1020);以及對該些記憶平面的該些位元乘法結果平行或依序進行位元累積操作以得到一乘積累加運算結果,將所得到的乘積累加運算結果輸出,且輸出該些記憶平面所用的下一個位址(1030)。至於該些步驟1010~1030的細節如上所述,於此不重述。
如所知般,讀取電壓將會影響到ADC輸出值與位元1的讀取。故而,在本案上述第一至第三實施例中,可以根據操作條件(例如但不受限於,程式化周期,溫度或讀取干擾等),周期性地校正讀取電壓,以保持高正確性與可靠度。
本案第一至第三實施例可應用於NAND型快閃記憶體,或者敏感於保持與熱變化的記憶體裝置,例如但不受限於,NOR型快閃記憶體,相變(PCM)型快閃記憶體,磁式隨機存取記憶體(magnetic RAM)或電阻式RAM。
本案第一至第三實施例可應用於3D型記憶體與2D型記憶體,例如但不受限於,2D/3D NAND型快閃記憶體,2D/3D NOR型快閃記憶體,2D/3D相變(PCM)型快閃記憶體,2D/3D磁式隨機存取記憶體(magnetic RAM)或2D/3D電阻式RAM。
雖然上述第一至第三實施例中,將輸入資料及/或權
重值分為MSB向量與LSB向量(2個向量),但本案並不受限於此。於本案其他可能實施例中,輸入資料及/或權重值亦可分為更多個向量,此亦在本案精神範圍內。
本案第一至第三實施例不只可應用多數決分群技術,也可應用其他分群技術,以加速累積。
本案第一至第三實施例可應用於,例如但不受限於,臉部辨認等AI技術之中。
本案第一至第三實施例中,轉換單元可為電流模式類比數位轉換單元,或者是電壓模式類比數位轉換單元,或者是混合模式類比數位轉換單元。
本案第一至第三實施例不只可應用於串聯式MAC操作,也可應用於並聯式MAC操作。
本案第一至第三實施例不只可應用於非揮發式記憶體,也可應用於揮發式記憶體。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:記憶體裝置
MP0~MP3:記憶平面
PB0~PB3:頁緩衝器
ADC0~ADC3:轉換單元
120:累積偵測電路
130:輸出閂鎖器
140:累積電路
Claims (10)
- 一種記憶體裝置,包括:複數個頁緩衝器,暫存一輸入資料;複數個記憶平面,耦接至該些頁緩衝器,複數個權重儲存於該些記憶平面,根據所接收的該些記憶平面的複數個位址,該些記憶平面對該些權重與該些頁緩衝器的該輸入資料平行進行位元乘法,以平行得到複數個位元乘法結果,該些位元乘法結果存回於該些頁緩衝器;以及至少一累積電路,耦接至該些頁緩衝器,對該些記憶平面的該些位元乘法結果平行或依序進行位元累積操作以得到一乘積累加運算結果。
- 如請求項1所述之記憶體裝置,更包括:複數個轉換單元,耦接至該些記憶平面,該些轉換單元將該些記憶平面的複數個記憶體單元電流進行轉換後得到複數個轉換結果;一累積偵測電路,耦接至該些轉換單元,該累積偵測電路分別將該些轉換單元的該些轉換結果比較於一門檻值,以產生一頁緩衝器選擇信號並產生一累積致能信號;以及一輸出閂鎖器,耦接至該累積偵測電路,回應於該頁緩衝器選擇信號,該輸出閂鎖器選擇相對應的該些頁緩衝器所儲存的該些位元乘法結果傳送給該至少一累積電路, 回應於該累積致能信號,該至少一累積電路對該輸出閂鎖器所傳來的該些位元乘法結果依序進行位元累積操作以得到該乘積累加運算結果。
- 如請求項2所述之記憶體裝置,其中,當該些轉換單元被觸發時,該記憶體裝置進行混合式乘積累加運算,該至少一累積電路對該些轉換結果之至少一目標轉換結果依序執行位元累積,其中,該至少一目標轉換結果高於該門檻值;以及當該些轉換單元未被觸發時,該記憶體裝置進行數位式乘積累加運算,該至少一累積電路對該些轉換結果依序執行位元累積,不論該些轉換結果是否高於該門檻值,其中,該至少一累積電路包括:一分群電路,該分群電路對該些記憶平面的該些位元乘法結果進行分群操作,以得到複數個分群結果;以及一計數單元,耦接至該分群電路,對該些分群結果進行位元計數以得到該乘積累加運算結果;其中,各該些輸入資料或各該些權重值的複數個位元分為複數個位元向量;將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示; 將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及該些記憶平面對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些位元乘法結果。
- 如請求項1所述之記憶體裝置,更包括:複數個轉換單元,耦接至該些記憶平面,該些轉換單元將該些記憶平面的複數個記憶體單元電流進行轉換後得到複數個轉換結果;複數個累積偵測電路,耦接至該些轉換單元,該些累積偵測電路分別將該些轉換結果比較於一門檻值,以產生複數個累積致能信號;以及一輸出閂鎖器,其中,該至少一累積電路包括複數個累積電路,耦接至該些累積偵測電路,當被該些累積致能信號所致能時,該些累積電路對該些記憶平面所傳來的該些位元乘法結果平行進行位元累積操作以得到複數個數位累積結果;以及該輸出閂鎖器,耦接至該些累積電路,將該些累積電路的該些數位累積結果輸出成該乘積累加運算結果。
- 如請求項4所述之記憶體裝置,其中,當該些轉換單元被觸發時,該記憶體裝置進行混合式乘積累加運算,該些累積電路對該些轉換結果之至少一目標轉換結 果平行執行位元累積,其中,該至少一目標轉換結果高於該門檻值;以及當該些轉換單元未被觸發時,該記憶體裝置進行數位式乘積累加運算,該些累積電路對該些轉換結果平行執行位元累積,不論該些轉換結果是否高於該門檻值,其中,各該些累積電路包括:一分群電路,該分群電路對該些記憶平面的該些位元乘法結果進行分群操作,以得到複數個分群結果;以及一計數單元,耦接至該分群電路,對該些分群結果進行位元計數以得到該乘積累加運算結果;其中,各該些輸入資料或各該些權重值的複數個位元分為複數個位元向量;將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示;將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及該些記憶平面對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些位元乘法結果。
- 一種記憶體裝置之操作方法,包括:暫存一輸入資料於複數個頁緩衝器; 根據所接收的該些記憶平面的複數個位址,由該些記憶平面對所儲存的複數個權重與該輸入資料平行進行位元乘法,以平行得到複數個位元乘法結果,該些位元乘法結果存回於該些頁緩衝器;以及對該些記憶平面的該些位元乘法結果平行或依序進行位元累積操作以得到一乘積累加運算結果。
- 如請求項6所述之記憶體裝置之操作方法,更包括:將該些記憶平面的複數個記憶體單元電流進行轉換後得到複數個轉換結果;分別將該些轉換結果比較於一門檻值,以產生一頁緩衝器選擇信號並產生一累積致能信號;以及回應於該頁緩衝器選擇信號與該累積致能信號,選擇相對應的該些頁緩衝器所儲存的該些位元乘法結果以依序進行位元累積操作以得到該乘積累加運算結果。
- 如請求項7所述之記憶體裝置之操作方法,其中,該記憶體裝置進行混合式乘積累加運算,對該些轉換結果之至少一目標轉換結果依序執行位元累積,其中,該至少一目標轉換結果高於該門檻值;或者該記憶體裝置進行數位式乘積累加運算,對該些轉換結果依序執行位元累積,不論該些轉換結果是否高於該門檻值,其中, 對該些記憶平面的該些位元乘法結果進行分群操作,以得到複數個分群結果;以及對該些分群結果進行位元計數以得到該乘積累加運算結果,其中,各該些輸入資料或各該些權重值的複數個位元分為複數個位元向量;將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示;將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些位元乘法結果。
- 如請求項6所述之記憶體裝置之操作方法,更包括:將該些記憶平面的複數個記憶體單元電流進行轉換後得到複數個轉換結果;分別將該些轉換結果比較於一門檻值,以產生複數個累積致能信號;回應於該些累積致能信號,對該些記憶平面所傳來的該些位元乘法結果平行進行位元累積操作以得到複數個數位累積結果;以及將該些數位累積結果輸出成該乘積累加運算結果。
- 如請求項9所述之記憶體裝置之操作方法,其中,該記憶體裝置進行混合式乘積累加運算,對該些轉換結果之至少一目標轉換結果平行執行位元累積,其中,該至少一目標轉換結果高於該門檻值;或者該記憶體裝置進行數位式乘積累加運算,對該些轉換結果平行執行位元累積,不論該些轉換結果是否高於該門檻值,其中,對該些記憶平面的該些位元乘法結果進行分群操作,以得到複數個分群結果;以及對該些分群結果進行位元計數以得到該乘積累加運算結果,其中,各該些輸入資料或各該些權重值的複數個位元分為複數個位元向量;將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示;將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些位元乘法結果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163175554P | 2021-04-16 | 2021-04-16 | |
US63/175,554 | 2021-04-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202242873A TW202242873A (zh) | 2022-11-01 |
TWI788128B true TWI788128B (zh) | 2022-12-21 |
Family
ID=83602553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110145455A TWI788128B (zh) | 2021-04-16 | 2021-12-06 | 記憶體裝置及其操作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11656988B2 (zh) |
JP (1) | JP7206531B2 (zh) |
KR (1) | KR20220143562A (zh) |
CN (1) | CN115220690A (zh) |
TW (1) | TWI788128B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9507603B2 (en) * | 2013-03-09 | 2016-11-29 | Gerald George Pechanek | Methods and apparatus for signal flow graph pipelining that reduce storage of temporary variables |
TW202024898A (zh) * | 2018-12-18 | 2020-07-01 | 旺宏電子股份有限公司 | 用於記憶體內乘法及累加運算的電路及其方法 |
TWI718566B (zh) * | 2019-06-21 | 2021-02-11 | 旺宏電子股份有限公司 | 立體記憶體陣列裝置與乘積累加方法 |
US10971230B2 (en) * | 2018-12-31 | 2021-04-06 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and method of processing in memory (PIM) using the same |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
JP3250244B2 (ja) | 1992-01-23 | 2002-01-28 | 松下電器産業株式会社 | トラックジャンプ制御装置 |
JP2001188767A (ja) | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
JP3333779B2 (ja) | 2001-12-26 | 2002-10-15 | 松下電器産業株式会社 | 行列演算装置 |
US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US10824934B2 (en) * | 2017-01-12 | 2020-11-03 | Texas Instruments Incorporated | Methods and apparatus for matrix processing in a convolutional neural network |
JP2019057053A (ja) * | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | 半導体記憶装置 |
US11562205B2 (en) * | 2019-09-19 | 2023-01-24 | Qualcomm Incorporated | Parallel processing of a convolutional layer of a neural network with compute-in-memory array |
-
2021
- 2021-12-06 TW TW110145455A patent/TWI788128B/zh active
- 2021-12-06 US US17/542,557 patent/US11656988B2/en active Active
- 2021-12-17 CN CN202111558035.3A patent/CN115220690A/zh active Pending
-
2022
- 2022-01-31 JP JP2022012871A patent/JP7206531B2/ja active Active
- 2022-02-17 KR KR1020220020971A patent/KR20220143562A/ko not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9507603B2 (en) * | 2013-03-09 | 2016-11-29 | Gerald George Pechanek | Methods and apparatus for signal flow graph pipelining that reduce storage of temporary variables |
TW202024898A (zh) * | 2018-12-18 | 2020-07-01 | 旺宏電子股份有限公司 | 用於記憶體內乘法及累加運算的電路及其方法 |
US10971230B2 (en) * | 2018-12-31 | 2021-04-06 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and method of processing in memory (PIM) using the same |
TWI718566B (zh) * | 2019-06-21 | 2021-02-11 | 旺宏電子股份有限公司 | 立體記憶體陣列裝置與乘積累加方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20220143562A (ko) | 2022-10-25 |
JP2022164559A (ja) | 2022-10-27 |
JP7206531B2 (ja) | 2023-01-18 |
CN115220690A (zh) | 2022-10-21 |
US11656988B2 (en) | 2023-05-23 |
US20220334964A1 (en) | 2022-10-20 |
TW202242873A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210365241A1 (en) | Multiplication and accumulation circuit based on radix-4 booth code and differential weight | |
CN110796241A (zh) | 基于忆阻器的神经网络的训练方法及其训练装置 | |
CN114830134A (zh) | 用于解码经编码数据的递归神经网络和系统 | |
Diware et al. | Unbalanced bit-slicing scheme for accurate memristor-based neural network architecture | |
US11764801B2 (en) | Computing-in-memory circuit | |
CN111710356B (zh) | 编码型闪存装置和编码方法 | |
KR102603799B1 (ko) | 메모리 장치 및 그 동작 방법 | |
TWI788128B (zh) | 記憶體裝置及其操作方法 | |
CN110889080A (zh) | 乘积累加运算装置、乘积累加运算方法和系统 | |
TWI783573B (zh) | 記憶體裝置及其操作方法 | |
CN114153420A (zh) | 存储器内运算方法及装置 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
TWI777645B (zh) | 記憶體裝置及其操作方法 | |
KR102603795B1 (ko) | 메모리 장치 및 그 동작 방법 | |
CN111611528A (zh) | 电流值可变的电流积分和电荷共享的多位卷积运算模组 | |
US20230161556A1 (en) | Memory device and operation method thereof | |
TWI806641B (zh) | 記憶體裝置及其操作方法 | |
Sabri et al. | Redy: A novel reram-centric dynamic quantization approach for energy-efficient cnn inference | |
CN117492696A (zh) | 乘加运算电路、存储器及电子设备 | |
CN113723044B (zh) | 一种基于数据稀疏性的超额行激活存算一体加速器设计方法 | |
US20220334800A1 (en) | Exact stochastic computing multiplication in memory | |
Chang et al. | BFP-CIM: Runtime Energy-Accuracy Scalable Computing-in-Memory-Based DNN Accelerator Using Dynamic Block-Floating-Point Arithmetic | |
KR20230018972A (ko) | 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치에 의해 수행되는 처리 방법 | |
CN114168192A (zh) | 一种数据位数转换电路及方法 | |
CN116469426A (zh) | 存储器装置及其操作方法 |