TWI842375B - 讀取記憶體的方法及記憶體裝置 - Google Patents
讀取記憶體的方法及記憶體裝置 Download PDFInfo
- Publication number
- TWI842375B TWI842375B TW112104276A TW112104276A TWI842375B TW I842375 B TWI842375 B TW I842375B TW 112104276 A TW112104276 A TW 112104276A TW 112104276 A TW112104276 A TW 112104276A TW I842375 B TWI842375 B TW I842375B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- read
- sum
- bits
- input
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 69
- 238000004364 calculation method Methods 0.000 claims abstract description 34
- 239000013598 vector Substances 0.000 claims description 138
- 238000009825 accumulation Methods 0.000 claims description 10
- 230000001186 cumulative effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 46
- 238000012360 testing method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 238000005265 energy consumption Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 9
- 238000004904 shortening Methods 0.000 description 6
- 230000035508 accumulation Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 2
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- XDDAORKBJWWYJS-UHFFFAOYSA-N glyphosate Chemical compound OC(=O)CNCP(O)(O)=O XDDAORKBJWWYJS-UHFFFAOYSA-N 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 231100001261 hazardous Toxicity 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Abstract
實施例包括針對某些條件監測乘法累積計算的部分和。當滿足某些條件時,使用降低的讀取能量來讀取記憶體內容,而非使用常規讀取能量。可藉由降低預充電電壓、保留預充電電壓或提供接地信號、及/或減少電壓保持時間(即,減少提供及/或放電預充電電壓的時間)來獲得降低的讀取能量。
Description
本揭露係關於一種讀取記憶體的方法及記憶體裝置,特別係關於一種包含部分和暫存器的讀取記憶體的方法及記憶體裝置。
乘法累加器可用於以逐字逐位元的方式將輸入資料乘以相應的加權資料。輸入資料從記憶體中讀取,乘以權重,並且結果儲存在乘法累加暫存器中。結果可用於各種應用,如用於人工智慧計算。
本揭露之一實施例提供一種讀取記憶體的方法,包含:決定記憶體計算操作的部分和是否為正以獲得第一結果;決定部分和的選定位元是否從0轉換至1以獲得第二結果;及回應於第一結果及第二結果均為真,調整記憶體計算操作的記憶體單元的讀取操作的讀取配置。
本揭露之另一實施例提供一種讀取記憶體的方法,包含:利用第一讀取能量從記憶體的一組加權向量中讀取第一組位元;將一組輸入乘以第一組位元以獲得第一乘積;將第一乘積添加到一累積乘積和中;當累積乘積和為正且累積乘積和的位元條件從0變為1時,啟用降低讀取能量信號;及利用小於第一讀取能量的第二讀取能量從記憶體
中讀取該組加權向量中的第二組位元。
本揭露之另一實施例提供一種記憶體裝置,包含電腦可讀記憶體、乘法累加裝置、多工器以及動態讀取邏輯。電腦可讀記憶體儲存一組輸入及對應的一組加權向量。乘法累加裝置包括加法器、乘法器及部分和暫存器。部分和暫存器用以儲存該組輸入及對應的該組加權向量的迭代乘積和運算的累積結果。多工器用以向感測放大器提供偏置電壓以用於讀取加權向量。動態讀取邏輯用以評估部分和,決定是否應啟用降低讀取能量信號,並啟用降低讀取能量信號。降低讀取能量信號被提供給多工器。
10:圖像
11:像元
12:節點
14:加權矩陣
16:乘法累積計算/計算
20:位元數
30:計算
34:第二項
100:區塊圖
110:記憶體陣列
120:字線驅動器
130:控制區塊
140:多工器
150:輸入/輸出(IO)區塊
160:MAC區塊
161:權重暫存器
162:輸入暫存器
163:乘法塊
164:加法器區塊
165:部分和暫存器
170:DYNR區塊
200:流程圖
210:流程元素
220:流程元素
230:流程元素
240:流程
241:流程元素
242:流程元素
243:流程元素
244:流程元素
245:流程元素
246:流程元素
247:流程元素
248:流程元素
250:流程元素
260:流程元素
270:流程元素
280:流程元素
290:流程元素
AP:累積乘積
BL:位元線
BL/BLB:位元線/位元線位元
F26:封閉區域
GBL:全域位元線
GSL:全域源線
I:輸入
I1:輸入
I2:輸入
I3:輸入
I4:輸入
I5:輸入
I6:輸入
I7:輸入
I8:輸入
I9:輸入
IM-1:輸入
IN-1:輸入
N:長度
NZ:輸入
O:輸出
P:概率
P1:概率
P2:概率
P3:概率
P5:概率
PRE:预
PS:部分和
PS11:部分和
PS12:部分和
PS13:部分和
PS14:部分和
PS19:部分和
PSP:部分和
PSX:輸出信號
Q:輸出
Q':輸出
R:信號
RRE:降低的讀取能量
RRE<0>:信號
RRE<1>:信號
RST:重設輸入
S:信號
SA_BL:位元線
SAEN:感測放大器賦能
TPS 11:傳輸閘
VBL_RD:偏置電壓
VDD:電壓
VREF:參考電壓
VSA:電壓型感測放大器
W:加權向量
W1:加權向量
W2:加權向量
W3:加權向量
W4:加權向量
W5:加權向量
W6:加權向量
W7:加權向量
W8:加權向量
W9:加權向量
WM-1:加權向量
WN-1:加權向量
WL:字線
當結合附圖閱讀時,根據以下詳細描述可很好地理解本揭示案之態樣。應當注意,根據工業中標準實務,各特徵未按比例繪製。事實上,為論述清楚,各特徵之維度可任意地增加或縮小。
第1圖及第2圖示出了根據一些實施例可使用的輸入節點、加權向量及總和。
第3圖至第6圖示出了根據一些實施例的乘法累積計算(multiply accumulate computation;MAC)的各個階段。
第7圖示出了根據一些實施例的用於提供MAC運算的記憶體計算(compute-in-memory;CIM)系統圖。
第8圖示出了根據一些實施例的動態讀取操作的高級區塊圖100。
第9圖示出了MAC塊160的示例實施方式。
第10圖示出了根據一些實施例提供用於執行MAC操作的流程200的流程圖。
第11圖及第12圖示出了根據一些實施例的流程圖,圖式提供了用於評估部分和PS是否滿足動態讀取條件的流程240。
第13圖示出了根據一些實施例用於評估及決定降低的讀取能量(reduced read energy;RRE)信號是否被啟用的動態讀取(dynamic read;DYNR)塊的示例實施。
第14圖示出了根據一些實施例可賦能的示例性邏輯條件集,而非部分和PS的選擇位元的一對一輸入。
第15圖至第22圖示出了根據一些實施例的DYNR塊操作的取樣計算及演示。
第23圖提供了根據一些實施例的一個圖表,展示了當賦能降低的讀取能量時可獲得的降低的讀取能量。
第24圖示出了根據一些實施例的讀取電壓與感測良率之間的關係。
第25圖示出了根據一些實施例的簡化示意圖,圖中說明了與陣列相關聯的一個輸入/輸出(input/output;IO)的讀取路徑。
第26圖示出了根據一些實施例的第25圖的展開視圖。
第27圖示出了根據一些實施例的時序圖及感測放大器
的視圖。
第28圖示出了邏輯電路圖的視圖,若賦能了降低的讀取能量,則不會提供預充電。
應理解,以下揭示案提供許多不同實施例或實例,以實現本揭露之不同特徵。下文描述具體部件、佈置之實例以簡化本揭示案。當然,此等僅僅為實例且不意指限制。例如,在隨後描述中在第二特徵上第一特徵之形成可包括第一及第二特徵形成為直接接觸之實施例,且亦可包括額外特徵可形成在第一與第二特徵之間,使得第一及第二特徵不可直接接觸之實施例。另外,本揭示案可在各實例中重複元件符號及/或字母。此重複為出於簡易及清楚的目的,且本身不指示所論述各實施例及/或配置之間的關係。應當理解,信號可被啟用為高1或低0,並且除非上下文或約定另有規定,否則本文中使用的「1」被理解為表示「已啟用」,並且除非上下文或約定另有規定,否則本文中使用的「0」被理解為代表「未經啟用」。熟習本領域者可根據裝置及設計根據需要隨時反轉此些信號。
在人工神經網路領域,機器學習獲取輸入資料,對輸入資料進行一些計算,隨後應用啟動函數處理資料。啟動函數的輸出本質上為輸入資料的一些簡化表示。輸入資料可為節點層中的資料節點。第1圖示出了3x3卷積的實例,此卷積可用於機器學習中的圖像資料處理。圖像10由各個像元11組成。圖像可在顏色空間中表示,諸如RGB
(紅-綠-藍)或HSL(色調-飽和-發光),為每個像元的每個顏色空間變數分配一個值。圖像的節點12為3x3像元區塊,節點12中的每個像元11具有針對節點12的像元11的每個顏色空間變數的一輸入值I 1~9 。3x3卷積中的一種可能計算使用乘積和計算,其中每個輸入值I 1~9 分別乘以加權矩陣14的加權值W 1~9 。每次乘法時,可保持每個乘積的累加總和。此種乘積和計算可稱為乘法累積計算/計算(multiply accumulate computation/calculation;MAC)16。在計算期間,中間值可稱為累積乘積和(Accumulated Product Sum;APS)。在計算流程結束時,將APS作為MAC 16的輸出。隨後可將此輸出提供給啟動函數進行評估。
第2圖以更一般的方式說明了第1圖中所示的概念,即對於任意長度的N個輸入節點。每個輸入I 0~ I N-1 分別乘以加權向量W 0~ W N-1 。隨後在乘積和計算(MAC)中總和此些值。隨後可將MAC作為輸出O,並可選地提供給啟動函數或以某種其他方式使用。
為了提高效率,此演算法可在專用硬體中實施,例如在特殊應用積體電路(application specific integrated circuit;ASIC)或現場可程式設計閘陣列(field programmable gate array;FPGA)中。然而,在專用硬體(如特殊應用積體電路(ASIC))中實施此邏輯涉及在數位邏輯塊中使用二元數學。此種硬體實施可稱為記憶體計算(compute-in-memory;CIM)實施。CIM實施涉及從記憶體中讀取資料,包括輸入資料及加權資料,並對其執行簡單操作,包括MAC操作。本文所述的硬體中CIM實施使用二元數學來計算MAC。
第4圖示出了輸入資料、加權向量及MAC的二元表示,用於在硬體中以演算法實施MAC。下文將結合動態讀取模組更詳細地論述硬體實施。輸入資料顯示為節點中資料點的無符號值節點,例如幅值。輸入資料的長度為N
位元。例如,N可為4位元、8位元、16位元等。例如,若N為8,則每個輸入值都在0到255之間。加權向量為2的補數格式的有符號加權值。因此,負數將在最高有效位元(most significant bit;MSB)中以1開頭。每個加權向量的長度為K位元。N可等於K,亦可為不同的值。例如,若K為8位元,則每個加權值可能在-128與127之間。在符號中,對於輸入值,第i個輸入對應於節點中輸入資料點的輸入指數。每個權重將具有加權向量的對應第i個權重指數。換言之,第i個輸入與第i個加權向量之間存在一對一的相關性。
各第i個輸入的長度可能不同於各第i個加權向量。輸入從最低有效位元(least significant bit;LSB)到MSB排序。例如,第i個輸入的第r個值等於I i,r x 2r。加權向量的順序與輸入相反,即從MSB到LSB。例如,第i個加權向量的第j個值等於W i,j x 2K-j-1。在輸入中,k=0位元為最低有效位元(least significant bit;LSB),並且第i個輸入具有值I i,0 x 20。
如第3圖所示,MAC產生的位元總數等於N加K加M的對數(以2為底),四捨五入到最近的整數。例如,若節點中的輸入數為9(例如,對應於9點卷積),並且N及K分別為8,則MAC的輸出中的位元數為8+8+Roundup(log2 9)=20。此值可等效地表示為Roundup(N+K+log2 M)。
鑒於此些關係,第4圖示出了以逐位方式處理輸
入值及加權向量的數學公式。藉由逐位方式,將每個輸入值乘以加權向量的每個位元,並在每次迭代後總和。等式左側為i個輸入及對應i個加權向量的和乘積的通式。此總和可分解為等式的右側,其中包括用於處理加權向量的符號位元的第一項及用於處理剩餘位元的第二項。
第一項表示N位元無符號輸入與每個有符號K位元加權向量的符號位元的乘積之和。如第3圖所示,加權向量的MSB保留符號位元,並以符號表示為加權向量的第0位,因為位元j=0。第一項將輸入乘以加權向量的第0位元(表示符號位元),並將結果乘以第0位的位值,此值等於2K-1。隨後將此結果記錄為負值。本質上,輸入與符號位元之間的乘法建立了加權向量的最大負性。例如,若加權向量為8位元且為負,即W i,0 =1,則符號位元表示27位值中的「1」。在二元數學中,此相當於將輸入的2s補數左移7次。對每個輸入Ii迭代進行此步驟,第一項表示所有此些乘積的總和。當對應的加權向量不為負時,即W i,0 =0,則將添加零。
第二項包括兩種實施選項。在第一個選項中,第二項包括兩個嵌套的總和運算。內部總和表示加權向量W i 中剩餘j個位元中每一個的總和,乘以輸入I i ,再乘以加權向量W i 中對應第j個位元的位值。換言之,對於特定輸入I i ,整個輸入I i 將分別乘以每個j位元及其加權向量的j位元的對應j位值(2 K-j-1 )並相加。外部總和對每個輸入I i 及加權向量W i 重複內部總和,並將所有此些總和相加。
在第二個選項中,第二項包括兩個嵌套總和運算,然而,其與第一個選項中使用的順序相反。內部總和表示每個輸入I i 的總和乘以K個加權向量中每一個的特定加權向量位元值。此些值相加。隨後,每個輸入I i 乘以K個加權向量中每一個的下一個加權向量位元。以此方式,在為每個位值處理完所有加權位元後,再移動到下一個位值。
第5圖示出了第4圖所示總和公式的示例實施。使用單輸入I及單加權向量W,其中M=1、N=8及K=8。I 0 =77(0100 1101)及W 0 =116(0111 0100)。在總和中,第一項可調節為-(77.0.27)=0000 0000。第二項可調節為77.(1.26)+77.(1.25)+77.(1.24)+77.(0.23)+77.(1.22)+77.(0.21)+77.(0.2)=77.26+77.25+77.24+77.22=4928(1 0011 0100 0000)+2464(1001 1010 0000)+1232(100 1101 0000)+308(1 0011 0100)=8932(0010 0010 1110 0100)。將第一項(0)添加到第二項,得到總和8932(0010 0010 1110 0100)。
相反,若加權向量為負,即,-116(1000 1100),則結果如下:-(77.1.27)=-(0100 1101).27=1011 0011.27=101 1001 1000 0000。第二項可調節為77.(0.26)+77.(0.25)+77.(0.24)+77.(1.23)+77.(1.22)+77.(0.21)+77.(0.20)=77.23+77.22=616(0010 0110 1000)+308
(0001 0011 0100)=924(0011 1001 1100)。將第一項與第二項相加,得出總和-8932(1101 1101 0001 1100)。
從本實例中可看出,當加權向量為負時,逐位數學將加權向量設置為輸入的-128倍,隨後後續位元將正數部分加回負數(使負數更少),直到達到最終結果。當加權向量為正時,第一項將導致「0」,第二項將為加權向量其餘位元的逐位總和。
第6圖將第4圖的右側項分解為兩部分,以表示給定點的計算狀態,例如,在處理加權向量W的n個位元之後。第一部分透過加權向量W的第n位元為MAC操作提供部分和。第二部分2 K-j-1))表示從加權向量W的n+1位元到K-1位元的剩餘未知部分和。在任何給定的n處,將收集已知部分和作為累積部分和,並且尚未計算未知剩餘和。
實施例評估已知部分和,以決定是否可使用降低的讀取能量來執行剩餘計算,以從記憶體讀取在後續計算中使用的加權位元。使用降低的讀取能量增加了錯誤的記憶體讀取的可能性,或者,如下文關於一些實施例所述,將剩餘的未讀位元強制為「0」。此允許誤差有效地導致對未知剩餘和的排序估計。由於以下數個原因,誤差可能是允許的。首先,由於從MSB到LSB處理加權向量,因此未知剩餘和通常比已知部分和小得多,並且對最終MAC值的貢獻比已知部分和表示的早期評估位元小得多。例如,
在關於第15圖至第22圖的示例計算中,若完全計算,則MAC輸出將為38865。在此值中,加權向量的最後一個位元僅對此值貢獻253,最後兩個位元僅對此值貢獻1317,最後三個位元僅對此值貢獻2641,最後四個位元對此值貢獻6017,並且最後五個位元對此值貢獻15601。上述各者分別表示MAC輸出值38865的0.7%、3.4%、6.8%、15.5%及40.1%。儘管此些百分比及值對於如下所示的此些輸入及加權向量為特定的,但其表示(正如吾人所期望)加權向量的較低有效位元的貢獻對最終MAC的值的影響較小。其次,MAC的輸出被理解為輸入資料的某種表示(而非實際資料本身),因此一些錯誤可容忍,因為最終表示本身成為了輸入資料的衍生表示。因此,實施例提供了測試累積乘積和的能力,以決定是否可使用降低的讀取能量來讀取用於計算未知剩餘和的位元。
藉由使用降低的讀取能量(reduced read energy;RRE)信號,實施例提供了藉由監測部分和累積來減少乘法累積函數的計算能量的方法,並且若部分和累積滿足某些條件,則降低用於為剩餘計算從記憶體讀取輸入值的記憶體讀取能量。降低記憶體讀取能量將導致讀取錯誤值的風險更大,但會降低能量成本。如上所述,此有效地導致估計或近似的最終累積值。由於對條件進行監控,因此不需要精確值,因此估計值被視為足以進行輸入處理。當部分和的條件滿足降低讀取能量的條件時,實施例可藉由降低讀取電壓、縮短讀取延遲或跳過讀取操作來實施動
態讀取操作以降低讀取能耗。下文將詳細描述此些實施例。
例如,假設0.2V的標稱電壓為用於讀取記憶體位置的讀取電壓(或偏置電壓)。當部分和滿足如下所述的條件時,若讀取電壓可降低到0.1V,則執行乘法累積運算所需的總能量可顯著降低。例如,平均讀取能量可藉由以下等式表徵:REAVG=P1×E1+P2×E2
其中P1為讀取電壓為標稱讀取電壓V1(例如,0.2V)的概率,E1為讀取電壓為標稱讀取電壓V1時的能耗,P2為讀取電壓為降低的讀取電壓V2(例如,0.1V)的概率,E2為讀取電壓為降低的讀取電壓V2時的能耗。作為能耗的實例,對於磁阻式隨機存取記憶體(MRAM)裝置,E1可為約256飛焦耳(fJ)/位元,E2可為約144fJ/位元。若P1=P2=50%,則平均讀取能量為0.5×256+0.5×144=200fJ/位元。在此種情況下,節能將為256-200)/256=22%。當然,將理解,此些值僅為實例,根據記憶體類型、讀取電壓及彼讀取電壓下的能耗,可使用其他值。
第7圖示出了根據一些實施例提供MAC運算的CIM系統圖。此系統可被稱為MAC系統100。MAC系統100包括數個區塊。記憶體陣列110(或記憶體110或記憶體裝置110)保持輸入值及加權向量。記憶體陣列110可為任何適當記憶體裝置的任何適當陣列。例如,記憶體陣列110可包括電阻隨機存取記憶體(resistive
RAM;RRAM)、MRAM、動態隨機存取記憶體(dynamic RAM;DRAM)、同步DRAM(synchronous DRAM;SDRAM)、相變隨機存取記憶體(phase change RAM;PCRAM)等,或其組合。字線驅動器(word line driver;WLDR)120可用於驅動用於從記憶體陣列110存取位元的字線。控制區塊130包含用於字線的x解碼器及用於位元線及感測線的y解碼器。控制區塊亦包含讀寫操作的定時控制。多工器(multiplexer;MUX)140基於來自控制的解碼信號選擇位元線及感測線。輸入/輸出(input/output;IO)區塊為來自記憶體陣列110的輸入/輸出操作提供感測放大器。乘法累積單元(multiply accumulate unit;MAC)區塊160提供用於執行MAC操作的功能單元,如加法器、乘法器、暫存器等。動態讀取(dynamic read;DYNR)區塊170計算是否滿足降低的讀取能量條件,並基於是否滿足降低的讀取能量條件來啟用RRE信號。
第8圖示出了根據一些實施例的動態讀取操作的高級區塊圖100。在動態讀取操作中,一些系統區塊協同工作以決定提供給MAC區塊160的資料是使用降低的讀取能量讀取還是使用標稱讀取能量讀取。動態讀取(dynamic read;DYNR)區塊170向多工器(multiplexer;MUX)區塊140提供降低的讀取能量(reduced read energy;RRE)信號。輸入的初始條件可能取決於讀取配置是否需要更節能或更可靠。根據一些
實施例,根據輸入,多工器區塊140將提供用於對輸入/輸出(input/output;IO)區塊150的位元線感測放大器輸入預充電的動態讀取偏置電壓V1或V2。IO區塊150用於從提供給乘法累加器計算(multiply accumulator compute;MAC)區塊160的記憶體裝置讀取加權向量W位元。輸入I亦被提供給MAC區塊160。輸入向量I及加權向量W具有一對一的對應關係,使得輸入向量的數量M等於加權向量的數量M。部分和PS(部分(即,所選位元)或整個部分和)被提供給DYNR區塊170,DYNR區塊170可使用部分和PS來測試一組條件下的部分和,此組條件決定RRE信號是否啟用從DYNR區塊170返回MUX 140以進行後續處理。在一些實施例中,每個加權向量一次處理一個完整的加權向量,並且此和被累積為部分和PS。在此種實施例中,MAC的輸出則是另一個MAC暫存器中累積的另一部分和。在其他實施例中,如下文詳細論述的,部分處理每個加權向量,以便針對每個輸入處理每個加權向量的所有j個位元,隨後處理每個加權向量的j+1個位元,以此類推。
第9圖示出了MAC區塊160的示例實施。將W 0 ~W M-1 中每一者的W j 個位元提供給權重暫存器161。輸入I 0 ~I M-1 被提供到一組輸入暫存器162中。在乘法區塊163處,將此些輸入中的每一個乘以每個加權向量的W j 個位元。將結果提供給加法器區塊164,加法器區塊將乘法結果在移位後添加到先前儲存的部分和。隨後將結果
儲存回部分和暫存器165。可將部分和PS提供給DYNR區塊170。
應當理解,MAC區塊160的子區塊可以各種方式配置。在一些實施例中,輸入暫存器162一次保存一個輸入向量,在其他實施例中,輸入暫存器162可保存資料節點的所有輸入向量。在一些實施例中,權重暫存器161保存來自每個加權向量的一個有符號加權向量或對應位元,在其他實施例中,權重暫存器161一次保存來自加權向量的一個位元。乘法區塊163可利用移位暫存器,從加權向量的最高有效位元到最低有效位元,以逐位方式將輸入向量與加權向量相乘。隨後,在輸入向量與加權向量相乘之後,可將結果提供給加法器區塊164,隨後提供給部分和區塊165。
第10圖示出了根據一些實施例提供用於執行MAC操作的流程200的流程圖。在流程元素210處,若降低的讀取能量(reduced read energy;RRE)信號處於活動狀態,則使用能量降低流程讀取後續加權位元;若RRE信號未啟動,則使用標稱流程讀取後續加權位元。如上所述,能量降低的流程可包括使用降低的偏置電壓、縮短的定時、及/或跳過讀取(例如,藉由將偏置電壓降低到0,使剩餘位元被讀取為「0」)。在流程元素220處,以逐字輸入及逐位加權的方式執行部分和累積流程,作為MAC和乘積累積的一部分。在流程元素230處,評估RRE是否處於活動狀態。若其不處於活動狀態,則在流程元素
240處針對動態讀取條件評估部分和(partial-sum;PS)。若RRE處於活動狀態,則在一些實施例中,RRE信號保持活動,直到若RRE處於活動狀態,則除非重設,否則不會返回到非活動狀態為止。因此,若RRE處於活動狀態,則流程可跳到流程元素270以評估是否處理了所有加權位元。再次在流程元素250處,若PS滿足賦能動態讀取操作的條件,則在流程元素260處RRE將設定為活動,否則流程可轉到流程元素270並評估是否處理了所有加權位元。若處理了所有加權位元,則在流程元素280處將PS作為MAC輸出。若尚未處理所有加權位元,則在流程元素290,系統前進到加權向量的下一個加權位元。
第11圖示出了一流程圖,其提供了用於評估PS是否滿足動態讀取條件的流程240(見第10圖)。在流程元素241處,從PS接收資料。接收的資料可為整個APS,亦可為來自PS的選擇位元。在流程元素242處,檢查PS(PS19)的第19位元(或符號位元),以決定PS的值是正還是負。若PS為負,則流程可跳到流程元素247,從而決定PS不滿足動態讀取條件。若PS為正,則可進一步評估。若PS不為20位元長,則所選位元可為符號位元是此PS的任何位元。例如,若PS是24位元長,則符號位元將為PS23。流程元素243、244、245及246分別測試PS的特定位元,以決定其是否已從0移動到1。特別地,流程元素243測試PS11,流程元素244測試PS12,流程元素245測試PS13,及流程元素246測試PS14。此
些位元值僅為實例。可提供多於或少於四個PS位元進行測試。此外,測試的位元指數可能不同於位元11、12、13及14。在探索此流程的實例後,將在下文進一步詳細論述測試位元的選擇。
在一些實施例中,如第11圖所示,所示位元11、12、13及/或14中的一或更多個可被賦能以進行測試。在一些實施例中,可根據需要為每個位元賦能或禁用測試元素。測試早期位元將導致PS在流程的早期階段滿足流程元素248處的動態讀取條件。一旦測試了較早的位元(例如,位元11)並滿足條件,則不需要測試較晚的位元,因此,流程可立即移動到流程元素248,即PS滿足動態讀取條件。
在第12圖中,在其他實施例中,可使用位元的邏輯組合。所示的邏輯組合僅為實例,可根據需要使用任何邏輯組合。相似元素用相似元件符號標記。然而,在流程元素244處,均檢查PS11位元及PS12位元,以決定兩者是否已從0移動到1。在流程元素245處,全部檢查PS11位元、PS12位元及PS13位元,以決定是否全部從0移動到1。在流程元素246處,檢查PS11位元、PS12位元、PS13位元及PS14位元,以決定是否全部從0移動到1。當滿足此些條件之一時,流程移動到流程元素248,並且決定PS滿足動態讀取條件。
第13圖示出了用於評估及決定RRE信號是否被啟用的DYNR區塊170的示例實施。DYNR區塊170接
收包括重設輸入RST的輸入,當被啟用時,重設輸入RST表示MAC流程被重設。例如,可在MAC流程完成後由控制區塊130啟用RST信號。當RST信號為一時,MAC流程應重設。當RST信號為零時,MAC流程可繼續。DYNR區塊170亦接收表示輸入不為零的輸入NZ。若NZ為0,則不應執行計算,因為輸出將始終為零,因為輸入與加權向量相乘。若NZ為1,則輸入不為零,MAC流程可繼續。PS19位元假設為20位元部分和165(見第9圖)。若部分和165具有另一位元長度b,則符號位元將為PSb-1,並且此位元將為被檢查的位元,而非PS19位元。檢查PS19位元以決定部分和165是否為負,即「1」。若部分和165為負,則不會啟用RRE信號。若部分和165為正,則可根據部分和165的其他位元的值啟用RRE信號。
第13圖亦示出了根據一些實施例,DYNR區塊170可接收PS11、PS12、PS13及PS14位元。此些位元中的每一個亦可具有來自控制區塊130的對應賦能位元信號,此控制區塊賦能各個位元信號的傳輸閘。例如,傳輸閘TPS11可具有賦能輸入,其賦能傳輸閘從輸入PS11傳輸到輸出PSX。TPS11的賦能輸入初始時亦可作為輸入,但為了簡單起見,未對其進行說明。此賦能輸入可來自控制區塊130,或可在內部產生。賦能輸入允許PS11、PS12、PS13及PS14的信號選擇性地傳輸到輸出信號PSX。例如,DYNR區塊170可測試j=0的最低位元PS11、j=1的下
一位元(PS12)、j=2的下一位元(PS13)及j≧3的下一位元(PS14)。或者在另一實例中,DYNR區塊170可測試j=≦1的最低位元PS11、j=2的下一位元(PS12)、j=3的下一位元(PS13)、j≧4的下一位元(PS14)。其他配置亦是可能的。例如,在一些實施例中,所選位元可基於輸入的總和值。最大總和為(N8-1)×M,其中N為輸入的位元長度,M為輸入的數量。在N=8及M=9時,最大輸入和IS為2295。在一實施例中,例如,若總和輸入在下四分位(1≦IS≦573)中,則可賦能最低位元PS11以選擇到輸出信號PSX中。若總輸入和IS在第二個四分位(574≦IS≦1147),則可賦能下一位元PS12。若總輸入和IS在第三個四分位(1148≦IS≦1721),則可賦能下一位元PS13。若總輸入和IS在第四個四分位(1722≦IS≦2295),則可賦能下一位元PS14。
應當理解,上述用於測試的位元(PS11、PS12、PS13及PS14)基於假設的20位元部分和165。若輸入的數量M較大或較小,或者輸入的位元長度N較大或較小,則可能適合測試部分和165的其他位元。例如,測試的最低位元的指數可等於位元數N+取整(log2 M)-1。接下來的三位元可從此位元開始查找元素。在所描述的實例中,此將導致8+4-1=11,以及接下來的三個指數12、13及14。由於部分和PS 165為迭代構建的,因此PS儲存在為加權向量處理每個加權位元時迭代左移的值。此意味著測試的位元應基於輸入的位元長度、加權向量的位元長度
及輸入節點中的輸入數量。若部分和亦基於此些因素決定大小,則可基於部分和的長度來近似測試位元。在一些實施例中,儘管亦可使用其他位元,但測試位元可位於部分和的上半部分。
仍然參考第13圖,輸出PSX與反轉的PS19信號一起提供給反及閘。若兩者均為1,則反及閘的輸出將為0,否則為1。此輸出饋入SR閂鎖的S側,SR閂鎖的R側接收反向RST信號。SR閂鎖的輸出Q及Q'與RST信號及NZ信號一起提供給各自的反或閘。反或閘的輸出分別提供RRE<1>或RRE<0>信號。即,反或閘信號的反向輸出為RRE<1>及RRE<0>的值。當RST信號為0且NZ信號為1時,則一次只能有一個輸出為「1」,因為其基於來自SR閂鎖的相反信號Q及Q'。當下文描述RRE<0>=0時,使用Vread偏差的規範條件。當RRE<1>=0時,則使用Vread偏差的風險讀取。若RRE<0>=0及RRE<1>=0,則認為此是高優先順序讀取,將使用更高的Vread。除非另有說明,否則引用RRE<1>表示RRE<1>=0,且RRE<0>=1,從而賦能降低的偏置電壓,即風險讀取。類似地,引用RRE<0>表示RRE<0>=0及RRE<1>=1,賦能規範偏置電壓,即安全讀取。將理解,第13圖中提供的邏輯僅為一實例,其他實施亦為可能的。
下文提供的真值表說明了信號RST、NZ、PS19、PSX、S、R、Q、Q',RRE<1>及RRE<0>之間的關係。字母X表示輸出與信號無關,字母NC表示沒有變化。
在表1的第1列,RST信號被啟動,重設SR閂鎖;RRE<0>及RRE<1>均等於0,因此更高的電壓將用於Vread偏置。在表1的第2列,輸入為0,導致NZ等於0;RRE<0>及RRE<1>均等於0,因此更高的電壓將用於Vread偏置。在表1的第3列,部分和PS為負;使用RRE<0>,因此將在Vread偏置中使用安全讀取。在表1的第4列,部分和PS為正,但選定的部分和位元PSX為0;使用RRE<0>,因此將在Vread偏置中使用安全讀取。在表1的第5列,部分和PS為正,所選部分和位元PSX為1;使用RRE<1>,因此風險讀取將用於Vread偏置。
第14圖示出了可賦能的示例性邏輯條件集,而非部分和165的選擇位元的一對一輸入。邏輯實施了來自第12圖的流程元素243、244、245及246的流程。可使用其他邏輯條件,並且所示的邏輯條件僅作為使用邏輯組合來決定PSX信號的一實例。
第15圖至第22圖示出了DYNR區塊170操作
的取樣計算及演示。在此些圖的頂部為一組長度為N=8的M=9輸入I及一組長度為K=8的M加權向量W。第一行中每個圖的底部再次列出了輸入值,在第二行中乘以正在處理的W i,j 的加權向量的相應位元權重。即時和在第三行值中提供。第四行值演示了正在處理的加權向量W的第j個位元的位元值乘數,或換言之,2K-1-j。第五行為第i個輸入乘以第i個加權向量的第j個加權位元乘以位值乘數的乘積。第三行及第五行的底部分別顯示即時和及值和的總和。即時和與部分和累積。部分和暫存器165示出為顯示當前部分和PS值。亦提供了之前的部分和PSp,其為從之前的值結轉而來的,顯示了剛好在移位之前的部分和PS。PS19、PS14、PS13、PS12及PS11分別從部分和PS中調用及提供。第16圖至第22圖在每個圖式的底部亦提供了當前即時和與先前即時和(已移位)的計算,及先前值和與當前值和的計算。下文將更詳細地解釋此些態樣。
在第15圖中,提供了計算30的第一項32。此項計算輸入I乘以加權向量W的符號位元。若任何加權向量為負,則結果為負,否則結果為零。由於加權向量W採用有符號2的補數格式,因此負加權向量的MSB將為「1」,正加權向量的MSB將為「0」。因此,將輸入I乘以負加權向量W得到最終值可能為最負值。計算符號位元後的值和將與加權向量的值為-128(1000 0000)時相同。加權向量中的任何其他位元(即「1」而非「0」)最終將導
致最終乘積和變為較小負數。如第15圖所示,輸入I 0 乘以位元W 0,0,輸入I 1 乘以位元W 1,0 ,輸入I 2 乘以位元W 2,0 ,依此類推,直到輸入I 8 乘以權重W 8,0 。唯一為「1」的加權向量位元對應於W 5,0 、W 7,0 及W 8,0 。各個輸入與此些權重的乘積分別為-21、-98及-108。求其總和以提供-227的部分和,其作為部分和(1111 1111 1111 0001 1101)儲存在部分和PS暫存器165中。亦提供了此總和的位元值,即-29056。PS19、PS14、PS13、PS12及PS11分別等於1。由於PS19位元表示負數,因此RRE<0>信號保持為0,表明不應使用降低的讀取能量。
在第16圖至第22圖中,計算30的第二項34已開始處理,例如,對於加權向量的值,其中j≧1。在第16圖中,j=1及加權向量W的對應位元乘以各自的輸入。如第16圖所示,輸入I 0 乘以位元W 0,1 ,輸入I 1 乘以位元W 1,1 ,輸入I 2 乘以位元W 2,1 ,依此類推,直到輸入I 8 乘以權重W 8,1 。唯一為「1」的加權向量位元對應於W 0,1 、W 1,1 、W 2,1 、W 5,1 、W 6,1 及W 8,1 。各個輸入與此些權重的乘積分別為164、137、43、21、110、及108。求其總和以提供583的中間和。先前的部分和PSp-227左移為-454,並添加到中間和583以提供新的部分和PS 129,其作為部分和(0000 0000 0000 1000 0001)儲存在部分和PS暫存器165中。還提供了此和的位元值,即8256(例如,若位元-位值亦相乘)。PS19位元現在等於0,表示PS為正。然而,PS14、PS13、PS12及PS11位元現
在亦等於0。儘管PS19位元表示正數,但RRE<0>信號仍為0,因為PS14、PS13、PS12及PS11位元都不會將PSX觸發為1。因此,降低的讀取能量不應用於下一次讀取。
在第17圖中,j=2及加權向量W的對應位元乘以各自的輸入。如第17圖所示,輸入I 0 乘以位元W 0,2 ,輸入I 1 乘以位元W 1,2 ,輸入I 2 乘以位元W 2,2 ,依此類推,直到輸入I 8 乘以權重W 8,2 。唯一為「1」的加權向量位元對應於W 0,2 、W 2,2 、W 3,2 、W 5,2 、W 7,2 、及W 8,2 。各個輸入及此些加權的乘積分別為164、43、35、21、98及108。求其總和以提供469的中間和。先前的部分和PSp 129左移為258,並添加到中間和469以提供新的部分和PS 727,其作為部分和(0000 0000 0010 1101 0111)儲存在部分和PS暫存器165中。亦提供了此和的位元值,即8256+15008=23264(例如,若位元-位值亦相乘並添加到先前的部分和)。PS19位元等於0表示PS為正。但PS14、PS13、PS12及PS11位元仍然等於0。儘管PS19位元表示正數,但RRE<0>信號仍為0,因為PS14、PS13、PS12及PS11位元都不會將PSX觸發為1。因此,降低的讀取能量不應用於下一次讀取。
在第18圖中,j=3及加權向量W的對應位元乘以各自的輸入。如第18圖所示,輸入I 0 乘以位元W 0,3 ,輸入I 1 乘以位元W 1,3 ,輸入I 2 乘以位元W 2,3 ,依此類推,直到輸入I 8 乘以權重W 8,3 。唯一為「1」的加權向量位元
對應於W 1,3 、W 3,3 、W 4,3 、W 6,3 、W 7,3 、及W 8,3 。各個輸入及此些加權的乘積分別為137、35、111、110、98、及108。求其總和以提供599的中間和。先前的部分和PSp 727左移為1454,並添加到中間和599以提供新的部分和PS 2053,其作為部分和(0000 0000 1000 000 0101)儲存在部分和PS暫存器165中。亦提供了此和的位元值,即23264+9584=32848(例如,若位元-位值亦相乘並添加到先前的部分和)。PS19位元等於0表示PS為正。PS14、PS13及PS12位元仍然等於0,但PS11位元已觸發為1。若賦能了PS11位元的傳輸閘,則PS11位元將傳輸到PSX位元,並提供RRE<1>信號(RRE<1>=0),從而降低下一次讀取的讀取能量。為了便於此說明,可假設傳輸閘TPS11未賦能,因此PSX保持為0。因此,降低的讀取能量不會用於下一次讀取。
在第19圖中,j=4及加權向量W的對應位元乘以各自的輸入。如第19圖所示,輸入I 0 乘以位元W 0,4 ,輸入I 1 乘以位元W 1,4 ,輸入I 2 乘以位元W 2,4 ,依此類推,直到輸入I 8 乘以權重W 8,4 。唯一為「1」的加權向量位元對應於W 1,4 、W 2,4 、W 4,4 、W 5,4 、及W 6,4 。各個輸入及此些加權的乘積分別為137、43、111、21及110。求其總和以提供422的中間和。先前的部分和PSp 2053左移為4106,並添加到中間和422以提供新的部分和PS 4528,其作為部分和(0000 0001 0001 1011 0000)儲存在部分和PS暫存器165中。亦提供了此和的位元值,
即32848+3376=36224(例如,若位元-位值亦相乘並添加到先前的部分和)。PS19位元等於0表示PS為正。PS14、PS13及(現在)PS11位元等於0,但PS12位元已觸發為1。若賦能了PS12位元的傳輸閘,則PS12位元將傳輸到PSX位元,並提供RRE<1>信號,從而降低下一次讀取的讀取能量。為了便於此說明,可假設PS12位元的傳輸閘未賦能,因此PSX保持為0。因此,降低的讀取能量不會用於下一次讀取。
在第20圖中,j=5及加權向量W的對應位元乘以各自的輸入。如第20圖所示,輸入I 0 乘以位元W 0,5 ,輸入I 1 乘以位元W 1,5 ,輸入I 2 乘以位元W 2,5 ,依此類推,直到輸入I 8 乘以權重W 8,5 。唯一為「1」的加權向量位元對應於W 0,5 、W 3,5 、W 4,5 、及W 6,5 。各個輸入及此些加權的乘積分別為164、35、111及21。求其總和以提供331的中間和。先前的部分和PSp 4528左移為9056,並添加到中間和331以提供新的部分和PS 9387,其作為部分和(0000 0010 0100 1010 1011)儲存在部分和PS暫存器165中。亦提供了此和的位元值,即36224+1324=37548(例如,若位元-位值亦相乘並添加到先前的部分和)。PS19位元等於0表示PS為正。PS14及(現在)PS12及PS11位元等於0,但PS13位元已觸發為1。若賦能PS13位的傳輸閘,則PS13位元將傳輸到PSX位元,並提供RRE<1>信號,從而降低下一次讀取的讀取能量。為了便於此說明,可假設PS13位元的傳輸閘未
賦能,因此PSX保持為0。因此,降低的讀取能量不會用於下一次讀取。
在第21圖中,j=6及加權向量W的相應位元乘以各自的輸入。如第21圖所示,輸入I 0 乘以位元W 0,6 ,輸入I 1 乘以位元W 1,6 ,輸入I 2 乘以位元W 2,6 ,依此類推,直到輸入I 8 乘以權重W 8,6 。唯一為「1」的加權向量位元對應於W 1,6 、W 2,6 、W 3,6 、W 4,6 、W 7,6 及W 8,6 。各個輸入及此些加權的乘積分別為137、43、35、111、98及108。求其總和以提供532的中間和。先前的部分和PSp 9387左移為18774,並添加到中間和532以提供新的部分和PS 19306,其作為部分和(0000 0100 100 1011 1010)儲存在部分和PS暫存器165中。亦提供了此和的位元值,即37548+532=38612(例如,若位元-位值亦相乘並添加到先前的部分和)。PS19位元等於0表示PS為正。PS14現在已觸發到1。若賦能了PS14位元的傳輸閘,則PS14位元將傳輸到PSX位元,並提供RRE<1>信號,從而降低下一次讀取的讀取能量。為了便於此說明,可假設PS14位元的傳輸閘已賦能,因此PSX現在變為1。因此,降低的讀取能量RRE<1>用於下一次讀取。
在第22圖中,j=7及加權向量W的對應位元乘以各自的輸入。然而,由於賦能了RRE<1>信號,因此使用減少的讀取能量來讀取W i,7 的加權向量W位元值,從而降低了總功耗。第22圖示出了W i,7 值的所有加權向量被
讀取為等於0的情況。在一些實施例中,此可能是故意為了賦能跳過讀取條件。在此類實施例中,記憶體位置實際上沒有被讀取,並且被假定為0。在第22圖中,若MAC流程已執行到完成,則計算的PS與實際MAC值之間的差值為253,從而導致0.65%的誤差。第22圖亦提供了觀察到最大值(所有W i,7 =1)時的值,導致中間值827,及其與實際MAC值存在的差異574,導致1.48%的誤差。此可被視為此組特定計算的最壞情況,因為提供了與實際MAC值可能存在的最大偏差。
從上文的計算中可看出,與早期計算相比,後期計算對PS的貢獻率要小得多。由於早期的計算是左移的,因此其在每次迭代中具有更大的意義。因此,可看出,儘管降低讀取能量會帶來更高的讀取錯誤值的風險,但在減少節省方面進行權衡可能是值得的。實際上,引入的讀取風險遠低於第22圖中論述的最壞情況,下文將更詳細地論述。
在上述實例中,藉由觀察PS14位元觸發RRE<1>信號。此時,計算出的部分和PS佔總MAC值的99.35%。若PS13位元觸發了RRE<1>信號,則在此點計算的部分和將表示總MAC值的96.61%。若PS12位元觸發了RRE<1>信號,則在此點計算的部分和將表示總MAC值的93.2%。若PS11位元觸發了RRE<1>信號,則在此點計算的部分和將表示總MAC值的84.52%。
第23圖提供了一個圖表,展示了當RRE<1>=0
時可能獲得的降低的讀取能量。在一些實施例中,Vread=0.2V可被視為標稱讀取電壓,即當RRE<0>=0時使用。將Vread電壓降到0.15V、0.1V或更低時,可節省能源。用於讀取記憶體信號的預充電、形成及恢復流程的能量可減少。例如,將預充電電壓從0.2V降至0.15V,可將能量用量從約15262飛焦耳(fJ)降至約6783fJ。在另一個實例中,將預充電電壓從0.2V降至0.1V,可將能量用量從約15262fJ降至約4016fJ。在形成及恢復流程中亦觀察到了節能。在總計能量用量的和之後,255.5fJ的每位元總能量在0.15V時可減少至174.1fJ,在0.1V時可減少至144.2fJ。此意味著能源節約分別為31.9%及43.6%。應理解,此些值僅為實例,能耗可能根據記憶體類型及處理條件(如,工作溫度等)而變化。在一些實施例中,將預充電、形成及恢復電壓改變25%可導致約25%到約35%之間的節能,將預充電、顯影及恢復電壓改變50%可導致約38%到48%之間的節能。第23圖中的圖表亦顯示,某些能耗不會隨Vread電壓值而變化,因此,無論Vread的值如何,都會出現基線能耗。
第24圖示出了根據一些實施例的讀取電壓與感測良率之間的關係。當Vread為0.2V時,感測良率基本上無誤差。當Vread為0.15V時,感測良率下降至99.6%±0.3%;當Vread為0.1V時,感測良率下降至約98.3%±0.4%。本質上,例如,此意味著當Vread為99.6%時,1000位元讀數中約有4個位元不正確,當Vread為0.1V
時,1000位元讀數中約有17個位元不正確。此外,如第24圖所示,隨著Vread下降,讀取能量亦下降,然而,能量下降與Vread下降不成比例。類似地,隨著Vread的增加,感測良率亦會增加,然而,感測良率與Vread不成比例。因此,根據設計者的容錯性及節能目標,可選擇Vread來平衡節能與感測良率(可靠性)。
第25圖示出了一個簡化的示意圖,此圖示出了與1條字線WL、32條位元線BL及8條公共源線的陣列尺寸相關聯的一個IO的讀取路徑。此示意圖應被理解為儘為實例,並且可使用其他實施方式。源線MUX 140包括連接到全域源線GSL的全域源線下拉GSL_PD電晶體。全域源線GSL進入由一組第一源線選擇SLSEL1線控制的一組源線傳輸閘。MUX 140的輸出用於控制記憶體110的公共源線CSL。在此實例中,記憶體110被示為1電晶體1磁穿隧接面(1T1MTJ)MRAM裝置,然而,可如上所述使用其他記憶體裝置。字線WL信號為從字線驅動器WLDR 120到記憶體110的輸入。位元線MUX 140提供來自第一位元線選擇BLSEL1信號及來自第二位元線選擇BLSEL2信號的一組傳輸閘輸入,其賦能記憶體110的BL首先使用BLSEL1信號流向局域位元線LBL,隨後使用BLSEL2信號流向全域位元線GBL以選擇哪些位元線BL以輸出到IO 150。DYNR區塊170提供RRE<0:1>信號輸出,以連接選定的Vread偏置電壓(見第26圖)。READ閘控制信號賦能全域位元線GBL流向
位元線SA_BL的感測放大器。圖示了一電壓類型感測放大器(voltage type sensing amplifier;VSA),其利用參考電壓將BL值與全域位元線GBL進行比較,並放大全域位元線GBL以提供輸出。PRECHARGE閘控制信號賦能Vread偏置電壓VBL_RD對IO 150的電壓感測放大器預充電。第26圖提供了封閉區域F26的展開視圖。
第26圖顯示了第25圖中虛線框F26的展開視圖。在第26圖中,根據一些實施例,DYNR區塊170的輸出耦合到MUX 140以提供位元線BL的偏置。PRECHARGE信號為用於賦能Vread偏置電壓的閘極控制信號。然而,DYNR區塊170提供RRE<1>及RRE<0>信號以提供不同的Vread偏置電壓,此取決於RRE<1>信號是賦能(即,等於1)還是禁用(即,等於0)。因此,第26圖的邏輯提供了一種將PRECHARGE信號與RRE<1>及RRE<0>信號連接的方法,以控制使用哪個Vread偏置電壓。值得注意的是,可使用替代實施例。例如,可使用替代邏輯。在一些實施例中,RRE信號為具有值1或0的單線,此取決於是否應使用減少的讀取能量。在第26圖中,當PRECHARGE信號為0時,兩個閘極都不會開啟。當PRECHARGE信號為1時,若RRE<0>=0,則將使用安全讀取,位元線偏置BL偏置將用Vread安全偏置電壓來偏置。若RRE<1>=0,將使用風險讀取,BL偏置將用Vread安全偏置電壓來偏置。若出於某種原因(例如,重設MAC後),RRE<0>及
RRE<1>=0,則將使用更高的電壓,即Vread安全。
第27圖示出了根據一些實施例的時序圖及感測放大器的視圖。在一些實施例中,RRE<1>信號可賦能控制區塊130改變讀取操作的定時,以縮短執行讀取所花費的時間,從而減少能量用量。在一些實施例中,可減少提供預充電電壓的時間長度,從而減少在預充電時間期間提供的總功率。在其他實施例中,用於放電位元線電壓的時間長度可減少,從而導致在讀取時間期間放電的總功率減少。縮短讀取操作的延遲時間的風險在於,由於時間縮短,某些值可能無法正確讀取。在VSA感測之前,與資料的邏輯「0」及邏輯「1」相關的電壓(例如,在位元線BL上)被預充電及放電,以與參考電壓進行比較。例如,對於MRAM記憶體裝置110,反並聯高電阻狀態可表示「0」,並聯低電阻狀態可表示邏輯「1」。其他記憶體類型亦可進行類似的設置。將反並聯及並聯狀態與參考電壓進行比較,以獲得儲存在記憶體裝置110中的資料。縮短讀取延遲可減少能耗。在第27圖中,所示時序圖包括三個時間段--用於準備及對Vread進行位元線預充電的時間段1 P1,用於透過記憶體裝置110的記憶體結構放電位元線電壓的時間段2 P2,及用於賦能感測放大器並輸出感測放大器的Q/QB的時間段3 P3。在一些實施例中,可藉由縮短用於預充電位元線的時間來縮短週期P1。風險在於位元線可能充電不足,無法將值與參考電壓進行比較,以接收可靠的讀數。在一些實施例中,可藉由縮短用於放電位元線的時
間來縮短週期P2。風險在於位元線可能放電不足,無法將此值與參考電壓進行比較,以接收可靠的讀數。
第28圖示出了邏輯電路圖的視圖,若RRE<1>=0,則不提供預充電。在一些實施例中,當滿足RRE<1>時,則剩餘的加權向量W位元可讀取為0。此可藉由強制繞過預充電來實現。當繞過預充電時,所有(或大部分)剩餘加權向量位元將被讀取為0。第22圖中提供了一個實例,其中儘管有額外的加權位元可用,但其餘的位元被處理為0。應注意,在某些情況下,即使不施加預充電電壓,亦可能讀取1,但預充電電壓不提供能量。當預充電被賦能且RRE<1>=1時,預充電讀數將正常。將預充電設定為禁用亦可藉由將Vread危險電壓設定為第26圖中的接地來實現。應該理解,可使用其他邏輯來實現繞過預充電。此處提供的邏輯不應被視為排除其他邏輯。
實施例實現了優勢。動態讀取電壓條件可藉由監測記憶體計算MAC操作中的部分和來設定。當滿足部分和的某些條件時,可減少其餘MAC操作的記憶體讀取能量。可藉由為電壓感測放大器提供較低(風險較高)的預充電偏置電壓、縮短執行感測操作的延遲時間段,或者藉由跳過讀取剩餘加權向量(假設其餘為0)來實現能量降低。亦可使用此些操作的組合。例如,縮短的延遲可與任何其他策略相結合。跳躍亦可與較低的預充電偏置電壓相結合,藉由在監測部分和PS的不同位元上的條件後實施跳躍,而非在用於危險電壓偏置的位元上實施跳躍來實現。例如,
PS11位元可能會觸發Vread的危險讀取條件。除了危險的電壓偏置外,PS12位元亦可能觸發較低的延遲。並且PS13或PS14位元可觸發要跳過的其餘位元。
一個實施例為一方法,包括決定記憶體計算(compute-in-memory;CIM)操作的部分和是否為正以獲得第一結果。方法亦包括決定從0到1轉變的部分和的選定位元以獲得第二結果。方法亦包括回應於第一結果及第二結果均為真,而調整CIM的記憶體單元的讀取操作的讀取配置。在一實施例中,調整讀取配置以減少等待讀取記憶體單元的時間延遲。在一實施例中,調整讀取配置以降低用於讀取記憶體單元的偏置電壓。在一實施例中,調整讀取配置以移除用於讀取記憶體單元的偏置電壓。在一實施例中,所選位元位於部分和的上半部分。
在一些實施例中,調整讀取配置以減少等待讀取記憶體單元的時間延遲。
在一些實施例中,調整讀取配置以降低用於讀取記憶體單元的偏置電壓。
在一些實施例中,調整讀取配置以去除用於讀取記憶體單元的偏置電壓。
在一些實施例中,所選位元位於部分和的上半部分。
另一實施例為一方法,包括利用第一讀取能量從記憶體的一組加權向量中讀取第一組位元。方法亦包括將一組輸入乘以第一組位元以獲得第一乘積。方法亦包括將第
一乘積添加到累積乘積和。方法亦包括以下步驟,當累積乘積和為正且累積乘積和的一位元條件從0變為1時,啟用降低的讀取能量信號。方法亦包括利用小於第一讀取能量的第二讀取能量從記憶體中讀取加權向量組的第二組位元。在一實施例中,方法可包括以下步驟:在將第一個乘積添加到累積乘積和之前,對累積乘積和進行位元移位。在一實施例中,讀取第二組位元利用比用於讀取第一組位元的定時週期更短的定時週期。在一實施例中,讀取第二組位元利用讀取放大器的第二預充電電壓,此電壓低於用於讀取第一組位元的第一預充電電壓。在一實施例中,在不為讀取放大器提供正預充電電壓的情況下讀取第二組位元。在一實施例中,位元條件對應於具有第一指數、第二指數、第三指數或第四指數的累積乘積和的選定位元,其中第一指數等於輸入組的第一輸入的位元長度加上輸入組中數位輸入的以2為底的對數(四捨五入到下一個整數),其中第二指數等於第一指數加一,第三指數等於第一指數加二,第四指數等於第一指數加三。在一實施例中,位元條件對應於累積乘積和的兩個或更多個選定位元的邏輯組合。在一實施例中,從加權向量讀取第二組位元會錯誤地決定第二組位元中的一或更多個值。
在一些實施例中,方法進一步包含:在將第一乘積添加到累積乘積和之前,對累積乘積和進行位元移位。
在一些實施例中,讀取第二組位元使用比用於讀取第一組位元的時間段更短的時間段。
在一些實施例中,讀取第二組位元利用讀取放大器的第二預充電電壓,預充電電壓低於用於讀取第一組位元的第一預充電電壓。
在一些實施例中,執行讀取第二組位元時不會提供用於讀取放大器的正預充電電壓。
在一些實施例中,位元條件對應於具有第一指數、第二指數、第三指數或第四指數的累積乘積和的選定位元,其中第一指數等於該組輸入的第一輸入的位元長度加上該組輸入中的多個輸入的以2為底的對數,對數四捨五入到下一個整數,其中第二指數等於第一指數加一,其中第三指數等於第一指數加二,並且其中第四指數等於第一指數加三。
在一些實施例中,位元條件對應於累積乘積和的兩個或更多個選定位元的邏輯組合。
在一些實施例中,從加權向量中讀取第二組位元會錯誤地決定第二組位元中的一或更多個位元的值。
另一個實施例為一裝置,包括電腦可讀記憶體,此記憶體儲存一組輸入及一組對應的加權向量。裝置亦包括乘法-累積裝置,包括加法器、乘法器及部分和(partial-sum;PS)暫存器,PS暫存器用以儲存輸入組及對應加權向量組的迭代乘積和運算的累積結果。此裝置亦包括多工器,其用以向感測放大器提供偏置電壓以用於讀取加權向量。裝置亦包括動態讀取邏輯,用以評估PS,決定是否應啟用降低的讀取能量(reduced read energy;
RRE)信號,並啟用RRE信號,即提供給多工器的RRE信號。在一實施例中,裝置可包括:控制區塊,其中RRE信號被進一步提供給此控制區塊,控制區塊提供記憶體存取定時,控制區塊用以在啟用RRE信號時減少讀取記憶體的讀取延遲。在一實施例中,動態讀取邏輯用以藉由檢查PS的符號位元及PS的選定位元來評估PS。在一實施例中,選定位元對應於PS的位元指數、位元指數加一、位元指數加二或位元指數加三,位元指數等於輸入組的第一個輸入的位元長度加上輸入組的多個輸入的四捨五入的以2為底的對數減去一。在一實施例中,多工器用以基於RRE信號選擇偏置電壓,其中當啟用RRE信號時,多工器用以提供比未啟用RRE信號時更小的偏置電壓。在一實施例中,當啟用RRE信號時,多工器用以提供使感測放大器輸出0的偏置電壓。在一實施例中,動態讀取邏輯用以藉由檢查PS的符號位元及PS的兩個或更多個選定位元的邏輯組合來評估PS。
在一些實施例中,記憶體裝置進一步包含控制區塊。降低讀取能量信號被進一步提供給控制區塊,控制區塊提供記憶體存取定時,控制區塊用以在啟用降低讀取能量信號時減少讀取電腦可讀記憶體的讀取延遲。
在一些實施例中,動態讀取邏輯用以藉由檢查部分和的符號位元及部分和的選定位元來評估部分和。
在一些實施例中,選定位元對應於部分和的位元指數、位元指數加1、位元指數加2或位元指數加3,位元指
數等於該組輸入的第一輸入的位元長度加上該組輸入的多個輸入的以2為底的取整的對數減1。
在一些實施例中,多工器用以基於降低讀取能量信號選擇偏置電壓,其中當降低讀取能量信號被啟用時,多工器用以提供比未啟用降低讀取能量信號時更小的偏置電壓。
在一些實施例中,當降低讀取能量信號被啟用時,多工器用以提供偏置電壓,偏置電壓使感測放大器輸出0。
在一些實施例中,動態讀取邏輯用以藉由檢查部分和的符號位元及部分和的兩個或更多個選定位元的邏輯組合來評估部分和。
上文概述數個實施例的特徵,使得熟習此項技術者可更好地理解本揭示案之態樣。熟習此項技術者應瞭解,本揭示案可便於用作設計或修改其他製程及結構的基礎,以便實施本文所介紹之實施例的相同目的及/或實施相同優勢。熟習此項技術者亦應認識到,此類等效結構並未脫離本揭示案的精神及範疇,且可在不脫離本揭示案的精神及範疇的情況下產生本文的各種變化、替代及更改。
10:圖像
11:像元
12:節點
14:加權矩陣
16:乘法累積計算/計算
20:位元數
I1:輸入
I2:輸入
I3:輸入
I4:輸入
I5:輸入
I6:輸入
I7:輸入
I8:輸入
I9:輸入
W1:加權向量
W2:加權向量
W3:加權向量
W4:加權向量
W5:加權向量
W6:加權向量
W7:加權向量
W8:加權向量
W9:加權向量
Claims (10)
- 一種讀取記憶體的方法,包含:決定一記憶體計算操作的一部分和是否為正以獲得一第一結果;決定該部分和的一選定位元是否從0轉換至1以獲得一第二結果;及回應於該第一結果及該第二結果均為真,調整該記憶體計算操作的一記憶體單元的一讀取操作的一讀取配置。
- 一種讀取記憶體的方法,包含:利用一第一讀取能量從一記憶體的一組加權向量中讀取一第一組位元;將一組輸入乘以該第一組位元以獲得一第一乘積;將該第一乘積添加到一累積乘積和中;當該累積乘積和為正且該累積乘積和的一位元條件從0變為1時,啟用一降低讀取能量信號;及利用小於該第一讀取能量的一第二讀取能量從該記憶體中讀取該組加權向量中的一第二組位元。
- 如請求項2所述的方法,進一步包含:在將該第一乘積添加到該累積乘積和之前,對該累積乘積和進行位元移位。
- 如請求項2所述的方法,其中讀取該第二組 位元使用比用於讀取該第一組位元的時間段更短的時間段。
- 如請求項2所述的方法,其中讀取該第二組位元利用一讀取放大器的一第二預充電電壓,該預充電電壓低於用於讀取該第一組位元的一第一預充電電壓。
- 如請求項2所述的方法,其中該位元條件對應於具有一第一指數、一第二指數、一第三指數或一第四指數的該累積乘積和的一選定位元,其中該第一指數等於該組輸入的一第一輸入的一位元長度加上該組輸入中的多個輸入的以2為底的一對數,該對數四捨五入到下一個整數,其中該第二指數等於該第一指數加一,其中該第三指數等於該第一指數加二,並且其中該第四指數等於該第一指數加三。
- 一種記憶體裝置,包含:一電腦可讀記憶體,該電腦可讀記憶體儲存一組輸入及對應的一組加權向量;一乘法累加裝置,包括一加法器、一乘法器及一部分和暫存器,該部分和暫存器用以儲存該組輸入及對應的該組加權向量的迭代乘積和運算的累積結果;一多工器,用以向一感測放大器提供一偏置電壓以用於讀取該些加權向量;及 一動態讀取邏輯,用以評估一部分和,決定是否應啟用一降低讀取能量信號,並啟用該降低讀取能量信號,該降低讀取能量信號被提供給該多工器。
- 如請求項7所述的記憶體裝置,進一步包含:一控制區塊,其中該降低讀取能量信號被進一步提供給該控制區塊,該控制區塊提供記憶體存取定時,該控制區塊用以在啟用該降低讀取能量信號時減少讀取該電腦可讀記憶體的一讀取延遲。
- 如請求項7所述的記憶體裝置,其中該動態讀取邏輯用以藉由檢查該部分和的一符號位元及該部分和的一選定位元來評估該部分和。
- 如請求項7所述的記憶體裝置,其中該多工器用以基於該降低讀取能量信號選擇該偏置電壓,其中當該降低讀取能量信號被啟用時,該多工器用以提供比未啟用該降低讀取能量信號時更小的一偏置電壓。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263268830P | 2022-03-03 | 2022-03-03 | |
US63/268,830 | 2022-03-03 | ||
US202263269899P | 2022-03-25 | 2022-03-25 | |
US63/269,899 | 2022-03-25 | ||
US17/860,228 US20230280976A1 (en) | 2022-03-03 | 2022-07-08 | Using reduced read energy based on the partial-sum |
US17/860,228 | 2022-07-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202336608A TW202336608A (zh) | 2023-09-16 |
TWI842375B true TWI842375B (zh) | 2024-05-11 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118348A (zh) | 2020-08-31 | 2022-03-01 | 三星电子株式会社 | 加速器、操作加速器的方法以及包括加速器的电子装置 |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118348A (zh) | 2020-08-31 | 2022-03-01 | 三星电子株式会社 | 加速器、操作加速器的方法以及包括加速器的电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831446B2 (en) | Digital bit-serial multi-multiply-and-accumulate compute in memory | |
US20210216246A1 (en) | Results processing circuits and methods associated with computational memory cells | |
KR20170047363A (ko) | 대입 카운트를 결정하기 위한 장치들 및 방법들 | |
CN114008583B (zh) | 存储器中的位串运算 | |
US20220188604A1 (en) | Method and Apparatus for Performing a Neural Network Operation | |
JP7144423B2 (ja) | 計算における誤り訂正 | |
US10340001B2 (en) | Single-readout high-density memristor crossbar | |
TWI842375B (zh) | 讀取記憶體的方法及記憶體裝置 | |
JP7507905B2 (ja) | 部分和に基づいた低減した読取エネルギーの使用 | |
TWI771014B (zh) | 記憶體電路及其操作方法 | |
US20230075348A1 (en) | Computing device and method using multiplier-accumulator | |
TWI782573B (zh) | 記憶體內運算器及記憶體內運算方法 | |
Kim et al. | An energy-efficient processing-in-memory architecture for long short term memory in spin orbit torque mram | |
US11853596B2 (en) | Data sequencing circuit and method | |
US12032959B2 (en) | Non-volatile memory die with latch-based multiply-accumulate components | |
US20240028298A1 (en) | Memory device and method with in-memory computing | |
Tasnim et al. | MAGIC-DHT: Fast in-memory computing for Discrete Hadamard Transform | |
US12040011B2 (en) | Memory device with low power consumption and operation method thereof | |
US20230053948A1 (en) | Apparatus and method with in-memory computing | |
US20230333814A1 (en) | Compute-in memory (cim) device and computing method thereof | |
TW202416112A (zh) | 資料計算電路及其操作方法以及記憶體中計算電路 | |
Nie et al. | Cross-layer designs against non-ideal effects in ReRAM-based processing-in-memory system | |
US20230161557A1 (en) | Compute-in-memory devices and methods of operating the same | |
WO2022132287A1 (en) | Method and apparatus for performing a neural network operation | |
WO2022029790A1 (en) | A flash adc based method and process for in-memory computation |