TWI777645B - 記憶體裝置及其操作方法 - Google Patents
記憶體裝置及其操作方法 Download PDFInfo
- Publication number
- TWI777645B TWI777645B TW110124221A TW110124221A TWI777645B TW I777645 B TWI777645 B TW I777645B TW 110124221 A TW110124221 A TW 110124221A TW 110124221 A TW110124221 A TW 110124221A TW I777645 B TWI777645 B TW I777645B
- Authority
- TW
- Taiwan
- Prior art keywords
- multiplication
- grouping
- bit
- input data
- circuit
- Prior art date
Links
Images
Landscapes
- Electrotherapy Devices (AREA)
- Logic Circuits (AREA)
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的挑戰在於,最高位元(most significant bit,MSB)的錯誤位元效應(Error-bit effect),不易分辨的電流加總結果(Indistinguishable current summation results),需要大量ADC/DAC故而增加功率消耗及晶片面積。
根據本案一實例,提出一種記憶體裝置,包括:一記憶體陣列,包括複數個記憶體單元,可用於儲存複數個權重值於該記憶體陣列的該些記憶體單元內;一乘法電路,耦接至該記憶體陣列,該乘法電路對複數個輸入資料與該些權重值進行乘法,以得到複數個乘法結果;以及一計數單元,耦接至該乘法電路,對該些乘法結果進行位元計數以得到一乘積累加運算(MAC)運算結果。
根據本案另一實例,提出一種記憶體裝置之操作方法,包括:儲存複數個權重值於該記憶體裝置之一記憶體陣列的複數個記憶體單元內;對複數個輸入資料與該些權重值進行位元乘法,以得到複數個乘法結果;以及對該些乘法結果進行位元計數以得到一乘積累加運算(MAC)運算結果。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
100:記憶體裝置
110:記憶體陣列
120:乘法電路
130:輸出入電路
140:分群電路
150:計數單元
111:記憶體單元
121:單位元乘法單元
121A:輸入閂鎖器
121B:感應放大器
121C:輸出閂鎖器
121D:共同資料閂鎖器
141:分群單元
301A、303A、301B、303B、311A、313A、311B、313B:位元
302、312、314:權重值
405、415:閂鎖器
410:位元線開關
420:及邏輯閘
710-750:步驟
810-860:步驟
第1圖繪示根據本案一實施例的具有記憶體內運算功能之記憶體裝置之功能方塊圖。
第2圖顯示根據本案一實施例的資料對映(data mapping)示意圖。
第3A圖至第3C圖顯示根據本案一實施例的資料對映的數個例。
第4A圖與第4B圖顯示本案實施例的乘法運算的兩種示範例示意圖。
第5A圖與第5B圖顯示根據本案一實施例的分群操作(多數決操作)與計數示意圖。
第6圖顯示比較本案一實施例與習知技術的MAC運算流程。
第7A圖顯示本案實施例中的程式化固定記憶體頁面(memory page)的流程圖,第7B圖顯示本案實施例中的調整讀取電壓的流程圖。
第8圖顯示根據本案一實施例的MAC操作流程。
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係
以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
請參照第1圖,其繪示根據本案一實施例的具有記憶體內運算(In-Memory-Computing(IMC))功能之記憶體裝置100之功能方塊圖。具有記憶體內運算功能之記憶體裝置100包括:記憶體陣列110、乘法電路120、輸出入電路130、分群電路140與計數單元150。其中,記憶體陣列110與乘法電路120是類比的,而分群電路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所得到的輸出資料輸出。
分群電路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操作結果(當記憶體裝置100不包括分群電路140時)。或者是,計數單元150用以對分群電路140的分群結果(例如,多數決結果)進行位元計數或位元累積,以產生MAC操作結果(當記憶體裝置100包括分群電路140時)。在本案一實施例中,計數單元150可以用已知的計數電路,例如但不限於,漣波計數器(ripple counter)來實現。在本案說明中,計數與累積基本上具有相同意思,而計數器與累積器基本上具有相
同意思。
現請參照第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。
為更了解本案實施例的乘法運算,現請參考第4A圖與第4B圖,其顯示本案實施例的乘法運算的兩種示範例示意圖。第4A圖應用於記憶體裝置支援受選位元線讀取(the selected bit-line read function),第4B圖應用於記憶體裝置不支援受選位元線讀取。第4A圖中,輸入閂鎖器121A包括閂鎖器(第一閂鎖器)405與位元線開關410;以及,第4B圖中,輸入閂鎖器121A包括閂鎖器(第二閂鎖器)415與邏輯及閘420。
如第4A圖所示,將權重值以一元編碼(數值形式)表示(如第2圖)。故而,權重值的最高位元存於8個記憶體單元111內,權重值的次高位元存於4個記憶體單元111內,權重值的第三高位元存於2個記憶體單元111內,權重值的最低位元存於1個記憶體單元111內。
同樣地,將輸入資料以一元編碼(數值形式)表示(如第2圖),故而,輸入資料的最高位元存於8個共同資料閂鎖器121D內,輸入資料的次高位元存於4個共同資料閂鎖器121D內,輸入資料的第三高位元存於2個共同資料閂鎖器121D內,輸入資料的最低位元存於1個共同資料閂鎖器121D內。輸入資料從共同資料閂鎖器121D送至閂鎖器405。
於第4A圖中,該些複數個位元線開關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感應不到記憶體單元電流。
亦即,經由第4A圖的佈局方式,當輸入資料為位元1且權重值為位元1時,感應放大器121B感應到記憶體單元電流以產生乘法結果“1”。至於其他情況,感應放大器121B感應不到記憶體單元電流,以產生乘法結果“0”。
於第4B圖,輸入資料從共同資料閂鎖器121D送至閂鎖器415。及邏輯閘420的一端接受感應放大器121B的感應結果(亦即權重值),而另一端則接收閂鎖器415的輸出位元(亦即輸入資料)。當記憶體單元111所儲存的權重值為位元1時,感應放大器121B的感應結果為邏輯高(感應到記憶體單元電流);當記憶體單元111所儲存的權重值為位元0時,感應放大器121B的感應結果為邏輯低(感應不到記憶體單元電流)。
當閂鎖器415輸出位元1(亦即輸入資料為位元1)且感應放大器121B的感應結果為邏輯高(亦即權重值為位元1)時,及邏輯閘420輸出位元1以產生乘法結果“1”,並送至分群電路140或計數單元150。至於其他情況下,及邏輯閘420輸出位元0以產生乘法結果“0”,並送至分群電路140或計數單元150。
第4B圖的實施例不只可應用於非揮發性記憶體,也可應用於揮發性記憶體。
在本案實施例中,於進行乘法運算時,可以重複使用受選位元線讀取(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操作結果是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”。
故而,在本案實施例中,透過分群(多數決)功能,
可以減少錯誤位元。
分群電路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運算流程。以本案實施例與習知技術的MAC運算流程而言,輸入資料傳輸至記憶體裝置。同時進行位元線設定與字元線設定。於位元線設定完成後,進行感應。進行累積操作。並將累積操作結果回傳。重複上述操作,直到所有輸入資料皆已運算完成。
由第6圖可知,本案實施例的MAC操作可以分為兩種子操作類型。第一種子操作類型是乘法操作,將輸入資料乘上權重值,乃是根據受選位元線讀取指令而進行。第二種子操作類型則是累積(資料計數),特別是錯誤位元計數(fail bit counting)。在本案其他可能實施例中,可以加入更多計數單元,以加速計數/累積操作。
相較於習知技術,在本案實施例中,進行累積操作的速度較快,故而可以加快MAC操作。
此外,在本案實施例中,亦可調整讀取電壓。第7A圖顯示本案實施例中的程式化固定記憶體頁面(memory page)的流程圖,第7B圖顯示本案實施例中的調整讀取電壓的流程圖。
在第7A圖中,於步驟710中,將一筆已知輸入資料程式化至一固定記憶體頁面內,其中,該筆已知輸入資料的位元比率是:50%是位元0,50%是位元1。
在第7B圖中,步驟720中,讀取該固定記憶體頁面,並計數位元1的比率。步驟730中,判斷位元1的比率是否接近50%。如果步驟730為否,則流程接至步驟740。如果步驟730為是,則流程接至步驟750。
步驟740中,如果位元1的比率小於50%,則增加讀取電壓;以及,如果位元1的比率大於50%,則減少讀取電壓。步驟740結束後,流程回至步驟720。
步驟750中,記錄目前的讀取電壓,以做為後續讀取操作所用。
如所知般,讀取電壓將會影響到位元1的讀取。故而,在本案實施例中,可以根據操作條件(例如但不受限於,程式化周期,溫度或讀取干擾等),周期性地校正讀取電壓,以保持高正確性與可靠度。
第8圖顯示根據本案一實施例的MAC操作流程。如第8圖所示,於步驟810中,周期性檢查讀取電壓。如果讀取電壓需要調整的話,則可如第7B圖的流程來調整。
於步驟820中,將輸入資料儲存於共同資料閂鎖器121D。
於步驟830中,將輸入資料從共同資料閂鎖器121D傳送至輸入閂鎖器121A。
於步驟840中,在支援受選位元線讀取指令或不支援受選位元線讀取指令下,進行乘法運算。
於步驟850中,進行累積。
於步驟860中,將MAC運算結果輸出(例如藉由輸出入電路30輸出)。
本案實施例可應用於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技術之中。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
810~860:步驟
110:記憶體陣列
121A:輸入閂鎖器
121C:輸出閂鎖器
121D:共同資料閂鎖器
Claims (10)
- 一種記憶體裝置,包括:一記憶體陣列,包括複數個記憶體單元,可用於儲存複數個權重值於該記憶體陣列的該些記憶體單元內;一乘法電路,耦接至該記憶體陣列,該乘法電路對複數個輸入資料與該些權重值進行乘法,以得到複數個乘法結果;以及一計數單元,耦接至該乘法電路,對該些乘法結果進行位元計數以得到一乘積累加運算(MAC)運算結果,其中,各該些輸入資料或各該些權重值的複數個位元分為複數個位元向量;將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示;將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及該乘法電路對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些乘法操作結果。
- 如請求項1所述之記憶體裝置,其中,該乘法電路包括複數個單位元乘法單元,各單位元乘法單元包括:一輸入閂鎖器,耦接至該記憶體陣列,一感應放大器,耦接至該輸入閂鎖器, 一輸出閂鎖器,耦接至該感應放大器,以及一共同資料閂鎖器,耦接至該輸出閂鎖器,其中,該共同資料閂鎖器傳送該輸入資料給該輸入閂鎖器。
- 如請求項2所述之記憶體裝置,其中,該單位元乘法單元產生該些乘法結果並輸入至該計數單元。
- 如請求項2所述之記憶體裝置,更包括一分群電路,耦接至該乘法電路與該計數單元,該分群電路對該乘法電路的該些乘法結果進行分群操作,以得到複數個分群結果,且將該些分群結果輸入至該計數單元,其中,該單位元乘法單元產生該乘法結果並輸入至該分群電路。
- 如請求項1所述之記憶體裝置,更包括:一輸出入電路,耦接至該乘法電路與該計數單元,用以接收該些輸入資料,並將該記憶體裝置所得到的該乘積累加運算結果輸出;其中,該分群電路包括複數個分群單元,該些分群單元對於該些乘法結果進行分群操作,以得到該些分群結果;該記憶體陣列與該乘法電路是類比的,而該分群電路與該計數單元是數位的。
- 如請求項2所述之記憶體裝置,其中,各輸入閂鎖器更包括一第一閂鎖器與一位元線開關,該些第一閂鎖器接收該些共同資料閂鎖器的該輸入資料,該些位元線開關耦接於該些記憶體單元與該些感應放大器之間,該些位元線開關受控於儲存 於該些第一閂鎖器的該些輸入資料以控制該些記憶體單元內的該些權重值是否傳輸至該些感應放大器,以及,該些感應放大器藉由感應該些位元線開關的輸入以產生該些乘法結果。
- 如請求項2所述之記憶體裝置,其中,各輸入閂鎖器更包括一第二閂鎖器與一邏輯閘,該些第二閂鎖器接收該些共同資料閂鎖器的該輸入資料,該些感應放大器感應存於該些記憶體單元內的該些權重值,該些邏輯閘根據該些第二閂鎖器的該輸入資料與透過該些感應放大器所傳來的該些權重值以產生該些乘法結果。
- 如請求項5所述之記憶體裝置,其中,於對該些乘法結果進行分群操作時,該分群電路分別對該些向量的複數個乘法結果進行分群操作,以得到該些分群結果;於進行位元計數時,對於該些分群結果給予不同累積權重值後進行累積以得到該乘積累加運算結果;以及該分群電路是一多數決電路,包括複數個多數決單元。
- 一種記憶體裝置之操作方法,包括:儲存複數個權重值於該記憶體裝置之一記憶體陣列的複數個記憶體單元內;對複數個輸入資料與該些權重值進行位元乘法,以得到複數個乘法結果;以及對該些乘法結果進行位元計數以得到一乘積累加運算(MAC)運算結果, 將各該些輸入資料或各該些權重值分為複數個位元向量;將該些位元向量的各位元從以一二進位形式轉換成以一元編碼表示;將以一元編碼表示的該些位元向量的該各位元重複複數次以成為一展乘積形式;以及對該展乘積形式的該些輸入資料與該展乘積形式的該些權重值進行乘法操作,以得到該些乘法操作結果。
- 如請求項9所述之記憶體裝置之操作方法,其中,於進行位元累積時,對於該些分群結果給予不同累積權重值後進行累積以得到該乘積累加運算結果;以及對該些乘法結果進行分群操作係對該些乘法結果進行多數決操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063075307P | 2020-09-08 | 2020-09-08 | |
US63/075,307 | 2020-09-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202211019A TW202211019A (zh) | 2022-03-16 |
TWI777645B true TWI777645B (zh) | 2022-09-11 |
Family
ID=81746850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110124221A TWI777645B (zh) | 2020-09-08 | 2021-07-01 | 記憶體裝置及其操作方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI777645B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200026498A1 (en) * | 2019-09-27 | 2020-01-23 | Intel Corporation | Compute in/near memory (cim) circuit architecture for unified matrix-matrix and matrix-vector computations |
CN110782026A (zh) * | 2018-07-24 | 2020-02-11 | 闪迪技术有限公司 | Nand存储器阵列中的二值神经网络的实现 |
US20200210369A1 (en) * | 2018-12-31 | 2020-07-02 | Samsung Electronics Co., Ltd. | Method of processing in memory (pim) using memory device and memory device performing the same |
-
2021
- 2021-07-01 TW TW110124221A patent/TWI777645B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110782026A (zh) * | 2018-07-24 | 2020-02-11 | 闪迪技术有限公司 | Nand存储器阵列中的二值神经网络的实现 |
US20200210369A1 (en) * | 2018-12-31 | 2020-07-02 | Samsung Electronics Co., Ltd. | Method of processing in memory (pim) using memory device and memory device performing the same |
US20200026498A1 (en) * | 2019-09-27 | 2020-01-23 | Intel Corporation | Compute in/near memory (cim) circuit architecture for unified matrix-matrix and matrix-vector computations |
Also Published As
Publication number | Publication date |
---|---|
TW202211019A (zh) | 2022-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lin et al. | Learning the sparsity for ReRAM: Mapping and pruning sparse neural network for ReRAM based accelerator | |
US10691537B2 (en) | Storing deep neural network weights in non-volatile storage systems using vertical error correction codes | |
CN102823141B (zh) | 用于固态存储器件的两级bch码 | |
Yan et al. | iCELIA: A full-stack framework for STT-MRAM-based deep learning acceleration | |
Han et al. | Flash memory array for efficient implementation of deep neural networks | |
Tsai et al. | RePIM: Joint exploitation of activation and weight repetitions for in-ReRAM DNN acceleration | |
TWI777645B (zh) | 記憶體裝置及其操作方法 | |
Zorgui et al. | Non-stationary polar codes for resistive memories | |
US11275711B2 (en) | Dynamic hybridized positional notation instruction set computer architecture to enhance security | |
JP7255068B2 (ja) | メモリデバイス及びその動作方法 | |
TWI783573B (zh) | 記憶體裝置及其操作方法 | |
Tanakamaru et al. | Highly reliable coding methods for emerging applications: Archive and enterprise solid-state drives (SSDs) | |
JP7279293B2 (ja) | メモリデバイスおよびその動作方法 | |
TWI788128B (zh) | 記憶體裝置及其操作方法 | |
CN114153420A (zh) | 存储器内运算方法及装置 | |
Mirhoseini et al. | Phase change memory write cost minimization by data encoding | |
TWI806641B (zh) | 記憶體裝置及其操作方法 | |
US20220334800A1 (en) | Exact stochastic computing multiplication in memory | |
Zhang et al. | The impact of non-linear nvm devices on in-memory computing | |
US20230161556A1 (en) | Memory device and operation method thereof | |
TWI835437B (zh) | 記憶體內運算(imc)記憶體裝置及其運算方法 | |
TWI796977B (zh) | 記憶體裝置及其操作方法 | |
CN116524977A (zh) | 存储器系统和存储器阵列的操作方法 | |
TW202211216A (zh) | 記憶體內運算方法及裝置 | |
CN116052731A (zh) | 存储器的多位量化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |