TWI783573B - 記憶體裝置及其操作方法 - Google Patents
記憶體裝置及其操作方法 Download PDFInfo
- Publication number
- TWI783573B TWI783573B TW110125919A TW110125919A TWI783573B TW I783573 B TWI783573 B TW I783573B TW 110125919 A TW110125919 A TW 110125919A TW 110125919 A TW110125919 A TW 110125919A TW I783573 B TWI783573 B TW I783573B
- Authority
- TW
- Taiwan
- Prior art keywords
- accumulation
- circuit
- multiplication
- digital
- memory
- Prior art date
Links
Images
Abstract
本案提供記憶體裝置與其操作方法。記憶體裝置包括:一記憶體陣列,包括複數個記憶體單元,可用於儲存複數個權重值於該記憶體陣列的該些記憶體單元內;一乘法電路,對複數個輸入資料與該些權重值進行乘法,以得到複數個乘法結果,其中於進行乘法時,該些記憶體單元產生複數個記憶體單元電流;一數位式累加電路,對該些乘法結果進行一數位式累加;一類比式累加電路,對該些記憶體單元電流進行一類比式累加以產生一第一乘積累加運算(MAC)操作結果;以及一決定單元,決定進行該類比式累加、該數位式累加或一混合式累加,其中,於進行該混合式累加時,根據該第一乘積累加運算操作結果決定是否觸發該數位式累加電路。
Description
本發明係有關於一種具有記憶體內運算(In-Memory-Computing (IMC))的記憶體裝置及其操作方法。
人工智慧(AI)已在許多領域中成為高度有效解決方案。AI的關鍵操作在於對大量的輸入資料(如輸入特徵圖(input feature maps))與權重值進行乘積累加運算(multiply-and-accumulation (MAC))。
然而,以目前的AI架構而言,容易遇到輸出入瓶頸(IO bottleneck)與低效率的MAC運算流程(inefficient MAC operation flow)。
為達到高準確度,可執行具有多位元輸入及多位元權重值的MAC操作。然而,輸出入瓶頸變得更加嚴重,且效率將更低。
記憶體內運算(In-Memory-Computing (IMC))可用於加速MAC運算,因為IMC可減少在中央處理架構下所需要用的複雜算術邏輯單元 (Arithmetic logic unit,ALU),且提供記憶體內的MAC操作的高並行性(parallelism)。
以非揮發性記憶體式IMC(NVM-based IMC)而言,其優點例如是,非揮發性儲存,資料搬移減少等。
在進行IMC時,如果能有同時兼顧「操作速度」與「操作準確性」的話,對於IMC性能將可有所助益。
根據本案一實例,提出一種記憶體裝置,包括:一記憶體陣列,包括複數個記憶體單元,可用於儲存複數個權重值於該記憶體陣列的該些記憶體單元內;一乘法電路,耦接至該記憶體陣列,該乘法電路對複數個輸入資料與該些權重值進行乘法,以得到複數個乘法結果,其中於進行乘法時,該些記憶體單元產生複數個記憶體單元電流;一數位式累加電路,耦接至該乘法電路,對該些乘法結果進行一數位式累加;一類比式累加電路,耦接至該記憶體陣列,對該些記憶體單元電流進行一類比式累加以產生一第一乘積累加運算(MAC)操作結果;以及一決定單元,耦接至該數位式累加電路與該類比式累加電路,決定進行該類比式累加、該數位式累加或一混合式累加,其中,於進行該混合式累加時,根據該第一乘積累加運算操作結果決定是否觸發該數位式累加電路。
根據本案另一實例,提出一種記憶體裝置之操作方法,包括:儲存複數個權重值於該記憶體裝置之一記憶體陣列的複數個記憶體單元內;對複數個輸入資料與該些權重值進行位元乘法,以得到複數個乘法結果,其中於進行乘法時,該些記憶體單元產生複數個記憶體單元電流;以及決定進行一類比式累加、一數位式累加或一混合式累加,其中,於進行該類比式累加時,對該些記憶體單元電流進行該類比式累加以產生一第一乘積累加運算(MAC)操作結果;於進行該數位式累加時,對該些乘法結果進行該數位式累加產生一第二乘積累加運算操作結果;以及於進行該混合式累加時,根據該第一乘積累加運算操作結果決定是否觸發該數位式累加。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
請參照第1圖,其繪示根據本案一實施例的具有記憶體內運算(In-Memory-Computing (IMC))功能之記憶體裝置100之功能方塊圖。具有記憶體內運算功能之記憶體裝置100包括:記憶體陣列110、乘法電路120、輸出入電路130、數位式累加電路135、類比式累加電路160、決定單元170與比較器163。數位式累加電路135包括分群電路140與計數單元150。類比式累加電路160包括類比數位轉換單元161。其中,記憶體陣列110、乘法電路120與類比式累加電路160、類比數位轉換單元161是類比的,而數位式累加電路135、分群電路140與計數單元150是數位的。
記憶體陣列110包括複數個記憶體單元111。在本案一實施例中,記憶體單元111例如但不受限於,為非揮發性記憶體單元。當進行MAC操作時,記憶體單元111可用於儲存權重值(weight)。
乘法電路120耦接至記憶體陣列110。乘法電路120包括複數個單位元乘法單元121。各單位元乘法單元121包括:輸入閂鎖器121A、感應放大器(SA)121B、輸出閂鎖器121C與共同資料閂鎖器(common data latch(CDL))121D。輸入閂鎖器121A耦接至記憶體陣列110。感應放大器121B耦接至輸入閂鎖器121A。輸出閂鎖器121C耦接至感應放大器121B。共同資料閂鎖器121D耦接至輸出閂鎖器121C。
輸出入電路130耦接至乘法電路120、分群電路140與計數單元150,用以接收輸入資料,並將記憶體裝置100所得到的輸出資料輸出。
數位式累加電路135用以進行數位式累加,其細節將於底下說明之。
類比式累加電路160用以進行類比式累加,其細節將於底下說明之。
決定單元170決定記憶體裝置100進行類比式累加、數位式累加或混合式累加。決定單元170可分別輸出致能信號EN1與EN2至類比式累加電路160與數位式累加電路135,以決定是否致能類比式累加電路160或數位式累加電路135。
「類比式累加」代表致能類比式累加電路160但不致能數位式累加電路135。「數位式累加」代表致能數位式累加電路135但不致能類比式累加電路160。「混合式累加」代表致能數位式累加電路135與類比式累加電路160。
類比數位轉換單元161耦接至記憶體陣列110的該些記憶體單元111。該些記憶體單元111的該些單元電流可累加後輸入至類比數位轉換單元161,以轉換成第一MAC操作結果OUT1。
比較器163耦接至類比數位轉換單元161,用以比較第一MAC操作結果OUT1與一觸發參考值。於選擇「混合式累加」時,當第一MAC操作結果OUT1低於該觸發參考值,該比較器163不輸出一觸發信號TS至數位式累加電路135(亦即,該數位式累加電路135不會被觸發);以及,當第一MAC操作結果OUT1高於該觸發參考值,該比較器163輸出該觸發信號TS至數位式累加電路135,以觸發該數位式累加電路135進行數位式累加。當選擇「類比式累加」時,該比較器163所輸出的觸發信號TS會被數位式累加電路135所忽略。
在本案一實施例中,「類比式累加」可用於快速濾掉無用資料,以增快MAC的操作速度。而「數位式累加」則可累積未被濾掉的資料,以增加MAC的準確度。而「混合式累加」則由於使用低解析度量化操作,可以減少變動影響(variation influence),此外,也可以避免累積無用資料,且可以維持解析度。亦即,「混合式累加」兼顧「類比式累加」與「混合式累加」的優點,而減少其缺點。
分群電路140耦接至乘法電路120。分群電路140包括複數個分群單元141。該些分群單元141對於該些單位元乘法單元121的多個乘法結果進行分群操作,以得到複數個分群結果。在本案一可能實施例中,分群操作例如可由多數決技術(majority technique)所實施,例如多數決功能技術(majority function technique),分群電路140由根據多數決功能技術的多數決群體電路(majority grouping circuit)所實施,分群單元141由分散式多數決群體單元(majority grouping unit)所實施,但本案並不受限於此。分群技術可由其他相似技術來實施。在本案一實施例中,分群電路140可選擇性地設置。
計數單元150耦接至分群電路140或乘法電路120。在本案一實施例中,計數單元150用以對乘法電路120的乘法結果進行位元計數(bitwise counting)或位元累積(bitwise accumulation),以產生第二MAC操作結果OUT2(當記憶體裝置100不包括分群電路140時)。或者是,計數單元150用以對分群電路140的分群結果(例如,多數決結果)進行位元計數或位元累積,以產生第二MAC操作結果OUT2(當記憶體裝置100包括分群電路140時)。在本案一實施例中, 計數單元150可以用已知的計數電路,例如但不限於,漣波計數器(ripple counter)來實現。在本案說明中,計數與累積基本上具有相同意思,而計數器與累積器基本上具有相同意思。
細言之,當決定單元170決定記憶體裝置100進行類比式累加時,以第一MAC操作結果OUT1為MAC操作結果。當決定單元170決定記憶體裝置100進行數位式累加時,以第二MAC操作結果OUT2為MAC操作結果。當決定單元170決定記憶體裝置100進行混合式累加時,於數位式累加電路135未被觸發信號TS觸發前,以第一MAC操作結果OUT1為MAC操作結果;以及,於數位式累加電路135被觸發信號TS觸發後,以第二MAC操作結果OUT2為MAC操作結果。
現請參照第2圖,其顯示根據本案一實施例的資料對映(data mapping)示意圖。如第2圖所示,以各輸入資料(或各權重值)具有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)次。如此可以將輸入資料以展乘積形式表示。
對輸入資料(展乘積形式)與權重值進行乘法操作,以得到乘法操作結果。
為方便了解,底下以一例做說明,但當知其並非用於限制本案。
現請參照第3A圖,其顯示根據本案一實施例的一維資料對映的一例。如第3A圖所示,輸入資料=(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)。
現請參照第3B圖,其顯示根據本案一實施例的資料映對的另一可能例。在第3B圖中,輸入資料是(IN1
)= (2),而權重值是(We1
)=(1)。輸入資料與權重值是4位元。
輸入資料表示為二進位格式時,IN1
=0010。相似地,權重值表示為二進位格式時,We1
=0001。
將輸入資料與權重值編碼成一元編碼(數值形式)。例如,輸入資料的最高位元“0”編碼成“00000000”,而輸入資料的最低位元“0”編碼成“0”,以此類推。相似地,權重值的最高位元“0”編碼成“00000000”,而權重值的最低位元“1” 編碼成“1”。
編碼成一元編碼的輸入資料的各位元被複製多次以成為展乘積形式。例如,編碼成一元編碼的輸入資料的最高位元301A被複製15次以成為位元303A;以及,編碼成一元編碼的輸入資料的最低位元301B被複製15次以成為位元303B。
編碼成一元編碼的權重值302也被複製15次,以表示為展乘積形式。
對表示為展乘積形式的輸入資料與表示為展乘積形式的權重值進行乘法操作以產生MAC操作結果。詳細而言,輸入資料的位元303A乘上權重值302;輸入資料的位元303B乘上權重值302,依此類推。將乘法值加總可以產生MAC操作結果(“2”)。
現請參照第3C圖,其顯示根據本案一實施例的資料映對的另一可能例。在第3C圖中,輸入資料是(IN1
)= (1),而權重值是(We1
)=(5)。輸入資料與權重值是4位元。
輸入資料表示為二進位格式時,IN1
=0001。相似地,權重值表示為二進位格式時,We1
=0101。
將輸入資料與權重值編碼成一元編碼(數值形式)。
編碼成一元編碼的輸入資料的各位元被複製多次以成為展乘積形式。在第3C圖中,當複製輸入資料的各位元與權重值的各位元時,加入位元“0”。例如,編碼成一元編碼的輸入資料的最高位元311A被複製15次並加入位元“0”以成為位元313A;以及,編碼成一元編碼的輸入資料的最低位元311B被複製15次並加入位元“0”以成為位元313B。藉此將輸入資料表示為展乘積形式。
相似地,編碼成一元編碼的權重值312也被複製15次,並額外加入位元“0”至各權重值314。藉此將權重值表示為展乘積形式。
對表示為展乘積形式的輸入資料與表示為展乘積形式的權重值進行乘法操作以產生MAC操作結果。詳細而言,輸入資料的位元313A乘上權重值314;輸入資料的位元313B乘上權重值314,依此類推。將乘法值加總可以產生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圖。在本案實施例中,於進行乘法運算時,權重值(轉導值)乃是儲存於記憶體陣列110的該些記憶體單元111內,而輸入資料(電壓)則是由輸出入電路130讀取並傳送給共同資料閂鎖器121D。共同資料閂鎖器121D傳送輸入資料給輸入閂鎖器121A。
為更了解本案實施例的乘法運算,現請參考第4圖,其顯示本案實施例的乘法運算的示範例示意圖。第4圖應用於記憶體裝置支援受選位元線讀取(the selected bit-line read function)。第4圖中,輸入閂鎖器121A包括閂鎖器(第一閂鎖器)405與位元線開關410。
如第4圖所示,將權重值以一元編碼(數值形式)表示(如第2圖)。故而,權重值的最高位元存於8個記憶體單元111內,權重值的次高位元存於4個記憶體單元111內,權重值的第三高位元存於2個記憶體單元111內,權重值的最低位元存於1個記憶體單元111內。
同樣地,將輸入資料以一元編碼(數值形式)表示(如第2圖),故而,輸入資料的最高位元存於8個共同資料閂鎖器121D內,輸入資料的次高位元存於4個共同資料閂鎖器121D內,輸入資料的第三高位元存於2個共同資料閂鎖器121D內,輸入資料的最低位元存於1個共同資料閂鎖器121D內。輸入資料從共同資料閂鎖器121D送至閂鎖器405。
於第4圖中,該些複數個位元線開關410耦接於記憶體單元111與感應放大器121B之間。位元線開關410受控於閂鎖器405。例如,當閂鎖器405輸出位元1時,位元線開關410為導通,而當閂鎖器405輸出位元0時,位元線開關410為關閉。
此外,當記憶體單元111內的權重值為位元1且位元線開關410為導通(輸入資料為位元1)時,感應放大器121B將感應到記憶體單元電流以產生乘法結果“1”。當記憶體單元111內的權重值為位元0且位元線開關410為導通(輸入資料為位元1)時,感應放大器121B感應不到記憶體單元電流。當記憶體單元111內的權重值為位元1且位元線開關410為關閉(輸入資料為位元0)時,感應放大器121B感應不到記憶體單元電流以產生乘法結果“0”。當記憶體單元111內的權重值為位元0且位元線開關410為關閉(輸入資料為位元0)時,感應放大器121B感應不到記憶體單元電流。
亦即,經由第4圖的佈局方式,當輸入資料為位元1且權重值為位元1時,感應放大器121B感應到記憶體單元電流以產生乘法結果“1”。至於其他情況,感應放大器121B感應不到記憶體單元電流,以產生乘法結果“0”。
由該些記憶體單元111所產生的記憶體單元電流IMC會共同輸入至類比數位轉換單元161。
至於輸入資料、權重值、數式乘法結果與類比記憶體單元電流IMC之間的關係如下表所示:
輸入資料 | 權重值 | 數式乘法結果 | IMC |
0 | 0(HVT) | 0 | 0 |
0 | +1(LVT) | 0 | 0 |
1 | 0(HVT) | 0 | IHVT |
1 | +1(LVT) | 1 | ILVT |
在上表中,HVT與LVT分別代表高臨界值記憶體單元與低臨界值記憶體單元。而IHVT與ILVT則分別代表當輸入資料為邏輯1時,高臨界值記憶體單元與低臨界值記憶體單元(權重值分別為0(HTV)與+1(LTV))所產生的類比記憶體單元電流IMC。
在本案實施例中,於進行乘法運算時,可以重複使用受選位元線讀取(selected bit line read,SBL-read)指令。故而,本案實施例可以減少以單位元表示(single-bit representation)所來的變動影響(variation influence)。
現請參考第5A圖,其顯示根據本案一實施例的分群操作(多數決操作)與位元計數(bitwise counting)示意圖。如第5A圖所示,參考符號GM1代表對輸入資料的第一MSB向量與權重值進行位元乘法(bitwise multiplication)後所得到的第一乘法運算結果;參考符號GM2代表對輸入資料的第二MSB向量與權重值進行位元乘法後所得到的第二乘法運算結果;參考符號GM3代表對輸入資料的第三MSB向量與權重值進行位元乘法後所得到的第三乘法運算結果;參考符號GL代表對輸入資料的LSB與權重值進行位元乘法後所得到的第四乘法運算結果。在分群操作(多數決操作)後,對第一乘法運算結果GM1進行分群結果是第一分群結果CB1(其累積權重是22
);對第二乘法運算結果GM2進行分群結果是第二分群結果CB2(其累積權重是22
);對第三乘法運算結果GM3進行分群結果是第三分群結果CB3(其累積權重是22
);以及,對第四乘法運算結果GL進行分群結果是第四分群結果CB4(其累積權重是20
)。
第5B圖顯示第3C圖的累積例。請參照第3C圖與第5B圖。如第5B圖所示,輸入資料(第3C圖)的位元313B乘上權重值314。從輸入資料(第3C圖)的位元313B乘上權重值314所產生的乘法結果的前四個位元(“0000”)被分群為第一乘法結果“GM1”。相似地,從輸入資料(第3C圖)的位元313B乘上權重值314所產生的乘法結果的第五至第八位元(“0000”)被分群為第二乘法結果“GM2”。 從輸入資料(第3C圖)的位元313B乘上權重值314所產生的乘法結果的第九至第十二位元(“1111”)被分群為第三乘法結果“GM3”。 從輸入資料(第3C圖)的位元313B乘上權重值314所產生的乘法結果的第十三至第十六位元(“0010”)則被直接計數。
在分群操作(多數決操作)後,第一分群結果CB1是“0”(其累積權重是22
);第二分群結果CB2是“0”(其累積權重是22
);第三分群結果CB3是“1”(其累積權重是22
)。在計數時,將這些分群結果CB1~CB4乘上個別累積權重並加以累積而產生MAC操作結果。例如,如第5B圖所示,MAC操作結果(第二MAC操作結果OUT2)是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。
在本案一實施例中,分群原則(多數決原則)可如下所示:
群組位元 | 分群結果(多數決結果) |
1111(狀況A) | 1 |
1110(狀況B) | 1 |
1100(狀況C) | 1或0 |
1000(狀況D) | 0 |
0000(狀況E) | 0 |
在上表中,以狀況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”。
故而,在本案實施例中,透過分群(多數決)功能,可以減少錯誤位元。
分群電路140的分群結果係輸入至計數單元150進行位元計數。
在進行計數時,將MSB向量的乘法運算結果的計數結果與LSB向量的乘法運算結果的計數結果進行累積。以第5A圖的情況而言,使用兩種累積器。第一種累積器要被分配較高的累積權重值(例如是22
)。第一種累積器要累積:(1)「對乘法運算結果GM1進行分群(多數決)的所得到分群(多數決)結果:1位元」加上「對乘法運算結果GM2進行分群(多數決)的分群(多數決)結果:1位元」再加上「對乘法運算結果GM3進行分群(多數決)的分群(多數決)結果:1位元」。第一種累積器所得到的計數結果再乘以較高的累積權重值(例如是22
)。第二種累積器要被分配較低的累積權重值(例如是20
)。第二種累積器則是對乘法運算結果GL(多位元)進行直接計數。將經累積權重加權過的兩種累積結果相加,即可得到MAC結果。例如,對乘法運算結果GM1進行分群的所得到分群結果為1(1位元),對乘法運算結果GM2進行分群的分群結果為0(1位元),對乘法運算結果GM3進行分群的分群結果為1(1位元)。第一種累積器所得到的計數結果(1+0+1)再乘以22
,等於2*22
=8。對乘法運算結果GL為4(3位元) ,可直接計數。將經累積權重加權過的兩種累積結果相加,即可得到MAC結果為8+4=12。
由上述可知,在本案實施例中,於進行計數或累積(accumulation)時,由於輸入資料已展開為unFDP形式,可以對儲存在共同資料閂鎖器內的資料進行分群(亦即,分為MSB向量與LSB向量),藉由分群機制(多數決機制)可以減少在MSB向量/LSB向量內的錯誤位元。
此外,在本案實施例中,即便使用傳統的累積器(計數器),仍可以減少計數/累積時間,這是因為本案實施例乃是使用數位計數指令(錯誤位元計數),以及對於不同向量(MSB向量與LSB向量)的累積結果給予不同累積權重。以一例而言,可以將累積運算時間減少至約40%。
第6圖顯示本案一實施例的MAC運算流程。在第6圖中,DMAC代表第一種數位式累加(但不進行分群操作,亦即記憶體裝置100不包括分群電路140),mDMAC代表第二種數位式累加(進行分群操作,亦即記憶體裝置100包括分群電路140),AMAC代表「類比式累加」,HMAC代表「混合式累加」。
以本案實施例的第一種數位式累加運算流程而言,輸入資料傳輸至記憶體裝置。同時進行位元線設定與字元線設定。於位元線設定完成後,進行感應。進行數位式累加操作。並將數位式累加操作結果回傳。重複上述操作,直到所有輸入資料皆已運算完成。
以本案實施例的第二種數位式累加運算流程而言,透過分群操作可以加速數位式累加的操作速度。
以本案實施例的類比式累加運算流程而言,當在進行感應時,可同時完成ADC轉換與比較操作,所以可以更加提昇MAC操作。
以本案實施例的混合式累加運算流程而言,由於要進行類比式累加與數位式累加,混合式累加的操作速度慢於類比式累加但快於數位式累加。但是,混合式累加的準確度可幾乎等同於數位式累加且高於類比式累加。
由第6圖可知,本案實施例的MAC操作可以分為兩種子操作類型。第一種子操作類型是乘法操作,將輸入資料乘上權重值,乃是根據受選位元線讀取指令而進行。第二種子操作類型則是累積(資料計數),特別是錯誤位元計數(fail bit counting)。在本案其他可能實施例中,可以加入更多計數單元,以加速計數/累積操作。
數位式累加的操作時間主要取決於計數單元150的累積速度,因為計數單元150是逐位元計算。類比數位轉換單元161的量化準確度主要取決於記憶體單元的變化容忍度(variation tolerance)。故而,數位式累加相較於類比式累加具有高準確但低累加速度。
此外,在本案實施例中,亦可調整讀取電壓。第7A圖顯示本案實施例中的程式化固定記憶體頁面(memory page)的流程圖,第7B圖顯示本案實施例中的調整讀取電壓的流程圖。
在第7A圖中,於步驟710中,將一筆已知輸入資料程式化至一固定記憶體頁面內。例如但不受限於,該筆已知輸入資料的位元比率是:75%是位元0,25%是位元1。
在第7B圖中,步驟720中,讀取該固定記憶體頁面,並致能ADC。步驟730中,判斷ADC的輸出值是否接近參考測試值(如果ADC是8位元,則參考測試值為127,但本案不受限於此)。如果步驟730為否,則流程接至步驟740。如果步驟730為是,則流程接至步驟750。
步驟740中,如果ADC的輸出值小於參考測試值,則增加讀取電壓;以及,如果ADC的輸出值大於參考測試值,則減少讀取電壓。步驟740結束後,流程回至步驟720。
步驟750中,記錄目前的讀取電壓,以做為後續讀取操作所用。
如所知般,讀取電壓將會影響到ADC輸出值與位元1的讀取。故而,在本案實施例中,可以根據操作條件(例如但不受限於,程式化周期,溫度或讀取干擾等),周期性地校正讀取電壓,以保持高正確性與可靠度。
第8圖顯示根據本案一實施例的MAC操作流程。於步驟810中,儲存複數個權重值於該記憶體裝置之一記憶體陣列的複數個記憶體單元內。於步驟820中,對複數個輸入資料與該些權重值進行位元乘法,以得到複數個乘法結果,其中於進行乘法時,該些記憶體單元產生複數個記憶體單元電流。於步驟830中,決定進行一類比式累加、一數位式累加或一混合式累加。於步驟840中,於進行該類比式累加時,對該些記憶體單元電流進行類比式累加以得到一第一乘積累加運算(MAC)操作結果。於步驟850中,於進行該數位式累加時,對該些乘法結果進行數位式累加得到一第二乘積累加運算(MAC)操作結果。於步驟860中,於進行該混合式累加時,根據該第一乘積累加運算操作結果決定是否觸發該數位式累加。
本案實施例可應用於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技術之中。
本案實施例中,類比數位轉換單元161可為電流模式類比數位轉換單元,或者是電壓模式類比數位轉換單元,或者是混合模式類比數位轉換單元。
本案實施例不只可應用於串聯式MAC操作,也可應用於並聯式MAC操作。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:記憶體裝置
110:記憶體陣列
120:乘法電路
130:輸出入電路
140:分群電路
150:計數單元
111:記憶體單元
121:單位元乘法單元
121A:輸入閂鎖器
121B:感應放大器
121C:輸出閂鎖器
121D:共同資料閂鎖器
141:分群單元
135:數位式累加電路
160:類比式累加電路
170:決定單元
161:類比數位轉換單元
163:比較器
301A、303A、301B、303B、311A、313A、311B、313B:位元
302、312、314:權重值
405:閂鎖器
410:位元線開關
710-750:步驟
810-860:步驟
第1圖繪示根據本案一實施例的具有記憶體內運算功能之記憶體裝置之功能方塊圖。
第2圖顯示根據本案一實施例的資料對映(data mapping)示意圖。
第3A圖至第3C圖顯示根據本案一實施例的資料對映的數個例。
第4圖顯示本案實施例的乘法運算的兩種示範例示意圖。
第5A圖與第5B圖顯示根據本案一實施例的分群操作(多數決操作)與計數示意圖。
第6圖顯示比較本案一實施例的數種MAC運算流程。
第7A圖顯示本案實施例中的程式化固定記憶體頁面(memory page)的流程圖,第7B圖顯示本案實施例中的調整讀取電壓的流程圖。
第8圖顯示根據本案一實施例的MAC操作流程。
810-860:步驟
Claims (10)
- 一種記憶體裝置,包括: 一記憶體陣列,包括複數個記憶體單元,可用於儲存複數個權重值於該記憶體陣列的該些記憶體單元內; 一乘法電路,耦接至該記憶體陣列,該乘法電路對複數個輸入資料與該些權重值進行乘法,以得到複數個乘法結果,其中於進行乘法時,該些記憶體單元產生複數個記憶體單元電流; 一數位式累加電路,耦接至該乘法電路,對該些乘法結果進行一數位式累加; 一類比式累加電路,耦接至該記憶體陣列,對該些記憶體單元電流進行一類比式累加以產生一第一乘積累加運算(MAC)操作結果;以及 一決定單元,耦接至該數位式累加電路與該類比式累加電路,決定進行該類比式累加、該數位式累加或一混合式累加, 其中,於進行該混合式累加時,根據該第一乘積累加運算操作結果決定是否觸發該數位式累加電路。
- 如請求項1所述之記憶體裝置,其中, 於進行該類比式累加時,該決定單元致能該類比式累加電路但不致能該數位式累加電路; 於進行該數位式累加時,該決定單元致能該數位式累加電路但不致能該類比式累加電路;以及 於進行該混合式累加時,該決定單元致能該數位式累加電路與該類比式累加電路。
- 如請求項1所述之記憶體裝置,更包括: 一比較器,耦接至該類比式累加電路與該數位式累加電路,比較該第一MAC操作結果與一觸發參考值以輸出一觸發信號至該數位式累加電路,以觸發該數位式累加電路進行該數位式累加, 其中,該類比式累加電路包括一類比數位轉換單元,耦接至該記憶體陣列,該些記憶體單元的該些記憶體單元電流累加後輸入至該類比數位轉換單元,以轉換成該第一MAC操作結果。
- 如請求項1所述之記憶體裝置,其中,該數位式累加電路包括: 一計數單元,耦接至該乘法電路,對該些乘法結果進行位元計數以得到一第二MAC運算結果。
- 如請求項4所述之記憶體裝置,更包括一分群電路,耦接至該乘法電路與該計數單元,該分群電路對該乘法電路的該些乘法結果進行分群操作,以得到複數個分群結果,且將該些分群結果輸入至該計數單元。
- 如請求項1所述之記憶體裝置, 各該些輸入資料或各該些權重值的複數個位元分為複數個位元向量; 將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示; 將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及 該乘法電路對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些乘法操作結果。
- 如請求項5所述之記憶體裝置,其中, 於對該些乘法結果進行分群操作時,該分群電路分別對該些向量的複數個乘法結果進行分群操作,以得到該些分群結果; 於進行位元計數時,對於該些分群結果給予不同累積權重值後進行累積以得到該第二乘積累加運算結果;以及 該分群電路是一多數決電路,包括複數個多數決單元。
- 一種記憶體裝置之操作方法,包括: 儲存複數個權重值於該記憶體裝置之一記憶體陣列的複數個記憶體單元內; 對複數個輸入資料與該些權重值進行位元乘法,以得到複數個乘法結果,其中於進行乘法時,該些記憶體單元產生複數個記憶體單元電流;以及 決定進行一類比式累加、一數位式累加或一混合式累加, 其中, 於進行該類比式累加時,對該些記憶體單元電流進行該類比式累加以產生一第一乘積累加運算(MAC)操作結果; 於進行該數位式累加時,對該些乘法結果進行該數位式累加產生一第二乘積累加運算操作結果;以及 於進行該混合式累加時,根據該第一乘積累加運算操作結果決定是否觸發該數位式累加。
- 如請求項8所述之記憶體裝置之操作方法,其中,對該些記憶體單元的該些記憶體單元電流累加後進行類比數位轉換成該第一MAC操作結果;以及 比較該第一MAC操作結果與一觸發參考值以決定是否觸發該數位式累加。
- 如請求項8所述之記憶體裝置之操作方法,其中, 將各該些輸入資料或各該些權重值分為複數個位元向量; 將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示; 將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及 對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些乘法操作結果; 於進行位元累積時,對於該些分群結果給予不同累積權重值後進行累積以得到該第二乘積累加運算結果;以及 對該些乘法結果進行分群操作係對該些乘法結果進行多數決操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063075311P | 2020-09-08 | 2020-09-08 | |
US63/075,311 | 2020-09-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202211217A TW202211217A (zh) | 2022-03-16 |
TWI783573B true TWI783573B (zh) | 2022-11-11 |
Family
ID=81731796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110125919A TWI783573B (zh) | 2020-09-08 | 2021-07-14 | 記憶體裝置及其操作方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI783573B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781702A (en) * | 1995-06-07 | 1998-07-14 | Univ South Western | Hybrid chip-set architecture for artificial neural network system |
CN1558828A (zh) * | 2001-08-06 | 2004-12-29 | ��������³���о�����˾ | 具有微控制器的图像打印装置 |
TW202027076A (zh) * | 2018-09-06 | 2020-07-16 | 埃拉德 希提 | 基於記憶體的處理器 |
-
2021
- 2021-07-14 TW TW110125919A patent/TWI783573B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781702A (en) * | 1995-06-07 | 1998-07-14 | Univ South Western | Hybrid chip-set architecture for artificial neural network system |
US20090207255A1 (en) * | 1997-07-15 | 2009-08-20 | Silverbrook Research Pty Ltd | Camera Sensing Device For Capturing And Manipulating Images |
CN1558828A (zh) * | 2001-08-06 | 2004-12-29 | ��������³���о�����˾ | 具有微控制器的图像打印装置 |
TW202027076A (zh) * | 2018-09-06 | 2020-07-16 | 埃拉德 希提 | 基於記憶體的處理器 |
Also Published As
Publication number | Publication date |
---|---|
TW202211217A (zh) | 2022-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liu et al. | Parallelizing SRAM arrays with customized bit-cell for binary neural networks | |
Meng et al. | Structured pruning of RRAM crossbars for efficient in-memory computing acceleration of deep neural networks | |
Zhang et al. | When sorting network meets parallel bitstreams: A fault-tolerant parallel ternary neural network accelerator based on stochastic computing | |
CN114430889A (zh) | 连续按位排序二进制加权乘法累加器 | |
Tsai et al. | RePIM: Joint exploitation of activation and weight repetitions for in-ReRAM DNN acceleration | |
TWI783573B (zh) | 記憶體裝置及其操作方法 | |
KR102603799B1 (ko) | 메모리 장치 및 그 동작 방법 | |
Khodabandehloo et al. | CVNS-based storage and refreshing scheme for a multi-valued dynamic memory | |
TWI777645B (zh) | 記憶體裝置及其操作方法 | |
TWI788128B (zh) | 記憶體裝置及其操作方法 | |
US11764801B2 (en) | Computing-in-memory circuit | |
US20220318628A1 (en) | Hardware noise-aware training for improving accuracy of in-memory computing-based deep neural network hardware | |
JP7279293B2 (ja) | メモリデバイスおよびその動作方法 | |
CN114153420A (zh) | 存储器内运算方法及装置 | |
TWI806641B (zh) | 記憶體裝置及其操作方法 | |
US20230161556A1 (en) | Memory device and operation method thereof | |
CN113326914A (zh) | 神经网络计算方法和神经网络计算装置 | |
TWI796977B (zh) | 記憶體裝置及其操作方法 | |
US20220334800A1 (en) | Exact stochastic computing multiplication in memory | |
WO2023160735A2 (zh) | 一种运算方法和运算单元 | |
CN115664422B (zh) | 一种分布式逐次逼近型模数转换器及其运算方法 | |
CN116469426A (zh) | 存储器装置及其操作方法 | |
TW202211216A (zh) | 記憶體內運算方法及裝置 | |
CN117492697A (zh) | 乘加运算电路、存储器及电子设备 | |
CN117519642A (zh) | 存储装置及用于内存计算的数据重排方法 |