TWI845270B - 記憶體內計算記憶體裝置及記憶體內計算方法 - Google Patents
記憶體內計算記憶體裝置及記憶體內計算方法 Download PDFInfo
- Publication number
- TWI845270B TWI845270B TW112114762A TW112114762A TWI845270B TW I845270 B TWI845270 B TW I845270B TW 112114762 A TW112114762 A TW 112114762A TW 112114762 A TW112114762 A TW 112114762A TW I845270 B TWI845270 B TW I845270B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- voltage
- value
- input
- computational
- Prior art date
Links
Images
Landscapes
- Read Only Memory (AREA)
Abstract
本案提供一種記憶體內計算(IMC)記憶體裝置與方法。記憶體內計算(IMC)記憶體裝置包括:複數個運算記憶胞,組成複數個記憶串,該些運算記憶胞儲存複數個權重值;一負載電容,耦接至該些運算記憶胞;以及一量測電路,耦接至該負載電容。於進行運算時,複數個輸入電壓分別輸入至該些運算記憶胞,該些輸入電壓有關於複數個輸入值,該些運算記憶胞之複數個有效阻抗值有關於該些輸入電壓與該些權重值。當一讀取電壓施加至該些運算記憶胞時,該些運算記憶胞產生複數個記憶胞電流,該些記憶胞電流形成複數個記憶串電流。由該些記憶串所產生該些記憶串電流對該負載電容充電。該量測電路量測該負載電容之一電容電壓。根據該負載電容之該電容電壓、至少一延遲時間與一既定電壓間之一關係,決定該些輸入值與該些權重值之一運算結果。
Description
本發明是有關於一種記憶體內計算(IN-MEMORY COMPUTING (IMC))記憶體裝置及記憶體內計算方法。
對於神經網路計算與應用而言,向量-矩陣乘法(vector-matrix multiplication),亦即感知器操作(Perceptron operation),已廣泛應用。當在記憶體內實現神經網路計算時,可將權重值存在記憶體陣列內,且把輸入值施加至記憶體陣列,來進行感知器計算,以減少功率消耗並改良計算效率。
由於記憶體陣列架構的關係,感知器計算或向量-矩陣乘法的輸入值通常是從字元線側或位元線側輸入,並利用感應放大器來讀出計算結果。故而,輸入值的數量將受限於記憶體陣列大小及感應放大器的累積總電流大小。
因為輸入值的數量會被受限,目前做法是將該些輸入值分成多個輸入值群組,並利用多個感應放大器來分別感應該些輸入值群組的個別電流。由多個不同感應放大器所得到的讀取結果還要再進行加總,但這種加總可能會引起讀取錯誤,並要花費更多運算時間及/或功率消耗。
此外,以目前而言,主要有兩種架構來評估記憶體內計算(IN-MEMORY COMPUTING (IMC))結果,一種是電流加總(sum-of-current)架構,一種是電壓加總(sum-of-voltage)架構。
對於現有的電流加總架構,如果輸入值數量太多的話,加總電流可能會太高,所以需要降低各晶胞電流或需要有特別設計的感應放大器。但這樣會額外增加設計複雜度。
對於現有的電壓加總架構,各運算記憶胞的阻值必需低才能提高感應電流,來降低本體效應(body effect)。
故而,目前需要有一種記憶體內計算(IN-MEMORY COMPUTING (IMC))記憶體裝置及記憶體內計算方法,以期能改善目前做法的缺點。
根據本案一方面,提出一種記憶體內計算(IMC)記憶體裝置,包括:複數個運算記憶胞,組成複數個記憶串,該些運算記憶胞儲存複數個權重值;一負載電容,耦接至該些運算記憶胞;以及一量測電路,耦接至該負載電容。於進行運算時,複數個輸入電壓分別輸入至該些運算記憶胞,該些輸入電壓有關於複數個輸入值,該些運算記憶胞之複數個有效阻抗值有關於該些輸入電壓與該些權重值。當一讀取電壓施加至該些運算記憶胞時,該些運算記憶胞產生複數個記憶胞電流,該些記憶胞電流形成複數個記憶串電流。由該些記憶串所產生該些記憶串電流對該負載電容充電。該量測電路量測該負載電容之一電容電壓。根據該負載電容之該電容電壓、至少一延遲時間與一既定電壓間之一關係,決定該些輸入值與該些權重值之一運算結果。
根據本案另一方面,提出一種記憶體內計算方法,應用於一記憶體內計算記憶體裝置,該記憶體內計算方法包括:儲存複數個權重值於複數個運算記憶胞,該些運算記憶胞組成複數個記憶串;分別輸入複數個輸入電壓至該些運算記憶胞,該些輸入電壓有關於複數個輸入值,該些運算記憶胞之複數個有效阻抗值有關於該些輸入電壓與該些權重值;當一讀取電壓施加至該些運算記憶胞時,該些運算記憶胞產生複數個記憶胞電流,該些記憶胞電流形成複數個記憶串電流;由該些記憶串所產生該些記憶串電流對該負載電容充電;量測該負載電容之一電容電壓;以及根據該負載電容之該電容電壓、至少一延遲時間與一既定電壓間之一關係,決定該些輸入值與該些權重值之一運算結果。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
第1圖繪示根據本案一實施例的記憶體內計算(IN-MEMORY COMPUTING (IMC))記憶體裝置。如第1圖所示,根據本案一實施例的記憶體內計算(IMC)記憶體裝置100包括:複數個運算記憶胞C11~Cmn(m與n為正整數),負載電容C以及量測電路120。該些運算記憶胞C11~Cmn耦接至負載電容C以及量測電路120。在一可能例中,量測電路120可由感應放大器所實施。量測電路120可比較負載電容C的電容電壓VC與參考電壓VREF。
此些運算記憶胞C11~Cmn設置排列為n個縱向行及m個橫向列以執行記憶體內運算(in-memory computing,IMC)。每一個縱向行的運算記憶胞可形成記憶串S1~Sn。記憶串S1包括運算記憶胞C11、C21、…、Cm1,其餘可依此類推。
該些運算記憶胞C11~Cmn分別接收輸入電壓V11~Vmn。詳細地說,運算記憶胞C11、C21、…、Cm1分別接收輸入電壓V11、V21、…、Vm1;運算記憶胞C12、C22、…、Cm2分別接收輸入電壓V12、V22、…、Vm2。該些輸入電壓V11~Vmn有關於複數個輸入值IN11~INmn。
該些運算記憶胞C11~Cmn儲存複數個權重值W11~Wmn。
該些記憶串S1~Sn則為並聯。由並聯的該些記憶串S1~Sn所產生的該些記憶串電流I1~In則充電該負載電容C。
在本案一實施例中,當施加讀取電壓Vread至該記憶體裝置100的該些運算記憶胞C11~Cmn之一端,則該些運算記憶胞C11~Cmn會產生複數個晶胞電流。同一個記憶串的該些運算記憶胞所產生的晶胞電流會加總,以成為記憶串電流I1~In。
在本案一實施例中,於進行IMC操作時,施加讀取電壓Vread至該記憶體裝置100的該些運算記憶胞C11~Cmn之一端(例如但不受限於,為汲極端),以及,測量負載電容C的電容電壓VC,以測量出負載電容C被充電至一既定電壓的充電時間(亦可稱為延遲時間)。為方便定義,將施加讀取電壓Vread之時間點稱為第一時間點,而將測量到負載電容C的電容電壓VC被充電至該既定電壓之一時間點稱為第二時間點,則在本案一實施例中,延遲時間乃是定義為:從第一時間點到第二時間點。負載電容C的電容電壓VC可由量測電路120加以量測,以量測出負載電容C的延遲時間。
在本案一實施例中,記憶串Si(i=1~n)之記憶串電阻值Ri(i=1~n)可表示如下:
。
其中,i代表記憶串編號,k代表該運算記憶胞在該記憶串之編號,一個記憶串有m個運算記憶胞。
所以,記憶串Si之記憶串電流Ii可表示如下:
。
運算記憶胞之權重值W11~Wmn是輸入值IN11~INmn的函數,所以,權重值Wki可以表示為運算記憶胞之阻抗值Wki=
。
在本案一實施例中,負載電容C被充電至該既定電壓的充電時間可用於代表該些運算記憶胞C11~Cmn的該些權重值W11~Wmn與該些輸入值IN11~INmn之乘積和(sum of product)。這是因為,在本案一實施例中,該些運算記憶胞C11~Cmn的該些權重值與該些輸入值IN11~INmn之乘積和(sum of product)乃是一總電流Itotal。Itotal可表示如下:
。
此總電流Itotal乃是對負載電容C進行充電,故而,負載電容C的電容電壓VC被充電至該既定電壓之時間點有關於負載電容C之電容值與總電流Itotal,而在本案一實施例中,負載電容C之電容值乃是已知。故而,可以得知,在本案一實施例中,負載電容C的電容電壓VC被充電至該既定電壓之時間點可視為負相關於總電流Itotal,亦即,當總電流Itotal愈大時,負載電容C的電容電壓VC被充電至該既定電壓之時間點愈短,而當總電流Itotal愈小時,負載電容C的電容電壓VC被充電至該既定電壓之時間點愈長。
故而,在本案一實施例中,可以先行找出在既定情況下,負載電容C被充電至該既定電壓的延遲時間與該些運算記憶胞C11~Cmn的該些權重值與該些輸入值IN11~INmn之乘積和之間的一既定關係。於後續的IMC運算時,則可以藉由測量出延遲時間來轉換得到該些運算記憶胞C11~Cmn的該些權重值與該些輸入值IN11~INmn之乘積和。
此外,在本案一實施例中,當運算記憶胞之權重值及/或輸入值改變時,運算記憶胞之有效阻抗值也隨之改變。這將導致不同的延遲時間(充電時間)。
第2A圖與第2B圖顯示根據本案一實施例之測量延遲時間之示意圖。在第2A圖與第2B圖中,RS1、RS2與RS3代表該些記憶串S1~Sn之不同總有效阻抗值,其中,RS1<RS2<RS3。
在第2A圖中,該延遲時間為,從施加該讀取電壓之一第一時間點到該負載電容的該電容電壓被充電至一既定電壓之一第二時間點,該既定電壓是根據該讀取電壓而決定。
在第2A圖中,當該些記憶串S1~Sn之不同總有效阻抗值為RS1時,於時間T1處,負載電容C被充電至既定電壓(VREF),所以,延遲時間T1代表該些權重值W11~Wmn與該些輸入值IN11~INmn之乘積和為001。同樣地,當該些記憶串S1~Sn之不同總有效阻抗值為RS2時,於時間T2處,負載電容C被充電至既定電壓(VREF),所以,延遲時間T2代表該些權重值W11~Wmn與該些輸入值IN11~INmn之乘積和為010。同樣地,當該些記憶串S1~Sn之不同總有效阻抗值為RS3時,於時間T3處,負載電容C被充電至既定電壓(VREF),所以,延遲時間T3代表該些權重值W11~Wmn與該些輸入值IN11~INmn之乘積和為011。其餘可依此類推。
此外,於本案另一實施例中,可選擇複數個既定延遲時間,於該些既定延遲時間處,比較電容電壓VC與參考電壓VREF,比較結果代表該些輸入值與該些權重值之運算結果(乘積和),如第2B圖所示。亦即,選擇數個既定延遲時間(t0~t3),於該些既定延遲時間處,檢查電容電壓VC是否到達既定電壓VREF,以決定該些輸入值與該些權重值之運算結果(乘積和)。如果在延遲時間t0處,電容電壓VC到達既定電壓VREF,則決定該些輸入值與該些權重值之運算結果(乘積和)為000;如果在延遲時間t1處,電容電壓VC到達既定電壓VREF,則決定該些輸入值與該些權重值之運算結果(乘積和)為001;其餘可依此類推。
於第2B圖中,當該些記憶串S1~Sn之不同總有效阻抗值為RS1時,在延遲時間t1處,電容電壓VC到達既定電壓VREF,則決定該些輸入值與該些權重值之運算結果(乘積和)為001。同樣地,當該些記憶串S1~Sn之不同總有效阻抗值為RS2時,在延遲時間t1處,電容電壓VC到達既定電壓VREF,則決定該些輸入值與該些權重值之運算結果(乘積和)為001。當該些記憶串S1~Sn之不同總有效阻抗值為RS3時,在延遲時間t3處,電容電壓VC到達既定電壓VREF,則決定該些輸入值與該些權重值之運算結果(乘積和)為011。
現將說明根據本案一實施例的運算記憶胞的不同例子。
第3A圖為本案第一實施例的運算記憶胞C(a)mn的電路圖。運算記憶胞C(a)mn可用於實現第1圖的記憶體裝置100的運算記憶胞C11~Cmn。運算記憶胞C(a)mn包括電晶體TRmn及電阻R(a)mn,電晶體TRmn並聯連接於電阻R(a)mn,且電阻R(a)mn具有固定電阻值。運算記憶胞C(a)mn連接於第n條位元線BLn。電晶體TRmn的汲極d與源極s連接於位元線BLn,電晶體TRmn的閘極g接收輸入電壓Vmn。電阻R(a)mn亦連接於位元線BLn。
電晶體TRmn例如為浮動閘極(floating gate)電晶體。電晶體TRmn具有臨界電壓(threshold voltage) Vt,可施加編程電壓以調整臨界電壓Vt的電壓值。當電晶體TRmn在擦除狀態(erase state)時,臨界電壓Vt的電壓值為第一臨界電壓值VtL。當電晶體TRmn在編程狀態(programing state)時,臨界電壓Vt的電壓值可編程為第二臨界電壓值VtH。第二臨界電壓值VtH大於第一臨界電壓值VtL。第一臨界電壓值VtL例如為0.4V,第二臨界電壓值VtH例如為4.8V。並且,臨界電壓Vt對應於運算記憶胞C(a)mn儲存的權重值(weight value) Wmn。當臨界電壓Vt為第一臨界電壓值VtL時,對應於運算記憶胞C(a)mn儲存的權重值Wmn為「0」。當臨界電壓Vt為第二臨界電壓值VtH時,對應於運算記憶胞C(a)mn儲存的權重值Wmn為「1」。
電晶體TRmn的閘極g接收輸入電壓Vmn。輸入電壓Vmn對應於運算記憶胞C(a)mn接收的輸入值INmn。當輸入電壓Vmn的電壓值為第一輸入電壓值VL時,對應於輸入值INmn為「1」。當輸入電壓Vmn的電壓值為第二輸入電壓值VH時,對應於輸入值INmn為「0」。第二輸入電壓值VH大於第一輸入電壓值VL。第二輸入電壓值VH例如為3V。第一輸入電壓值VL例如為-1V。並且,第二輸入電壓值VH大於第二臨界電壓值VtH以及第一臨界電壓值VtL。再者,第一輸入電壓值VL小於第二臨界電壓值VtH且大於第一臨界電壓值VtL。
運算記憶胞C(a)mn可經由位元線BLn接收讀取電壓Vread,以產生晶胞電流Imn。在運作上,因應於不同電壓值的輸入電壓Vmn及臨界電壓Vt,運算記憶胞C(a)mn可產生或不產生晶胞電流Imn。
當運算記憶胞C(a)mn接收的輸入電壓Vmn為第二輸入電壓值VH、且電晶體TRmn的臨界電壓Vt為第一臨界電壓值VtL或第二臨界電壓值VtH時,由於輸入電壓Vmn大於臨界電壓Vt,因此電晶體TRmn為開啟狀態(turned-on) (即,導通狀態),故而,運算記憶胞C(a)mn可產生晶胞電流Imn。在此狀況下,運算記憶胞C(a)mn的等效阻抗為電晶體TRmn本身的等效電阻值Rtr並聯於電阻R(a)mn。在一種示例中,電阻R(a)mn的電阻值遠大於電晶體TRmn的等效電阻值Rtr,因而運算記憶胞C(a)mn的等效阻抗大致相等於電晶體TRmn的等效電阻值Rtr。
另一方面,當運算記憶胞C(a)mn接收的輸入電壓Vmn為第一輸入電壓值VL、且電晶體TRmn的臨界電壓Vt為第一臨界電壓值VtL時,由於輸入電壓Vmn大於臨界電壓Vt,因此電晶體TRmn為開啟狀態,故而,運算記憶胞C(a)mn可產生晶胞電流Imn。在此狀況下,運算記憶胞C(a)mn的等效阻抗大致相等於電晶體TRmn的等效電阻值Rtr。
再者,當運算記憶胞C(a)mn接收的輸入電壓Vmn為第一輸入電壓值VL、且電晶體TRmn的臨界電壓Vt為第二臨界電壓值VtH時,由於輸入電壓Vmn小於臨界電壓Vt,因此電晶體TRmn為關閉狀態(turned-off) (即,斷路狀態),故而,運算記憶胞C(a)mn不產生晶胞電流Imn。在此狀況下,運算記憶胞C(a)mn的等效阻抗大致相等於電阻R(a)mn。
根據上述的運算記憶胞C(a)mn的運作方式,表1所示為運算記憶胞C(a)mn是否產生晶胞電流Imn對應於輸入值INmn及權重值Wmn的真值表(truth table)。
表1
| Wmn INmn | 0 | 1 |
| 0 | 產生晶胞電流Imn | 產生晶胞電流Imn |
| 1 | 產生晶胞電流Imn | 不產生晶胞電流Imn |
參見表1,當輸入值INmn為「0」且權重值Wmn為「0」或「1」時,運算記憶胞C(a)mn產生晶胞電流Imn。當輸入值INmn為「1」且權重值Wmn為「0」時,運算記憶胞C(a)mn產生晶胞電流Imn。當輸入值INmn為「1」且權重值Wmn為「1」時,運算記憶胞C(a)mn不產生晶胞電流Imn。據此,運算記憶胞C(a)mn可執行輸入值INmn與權重值Wmn的乘積運算(product operation),運算記憶胞C(a)mn所產生的晶胞電流Imn有關於輸入值INmn與權重值Wmn的乘積。
第3B圖為本案第二實施例的運算記憶胞C(b)mn的電路圖。相較於第3A圖的運算記憶胞C(a)mn,第3B圖的運算記憶胞C(b)mn僅包括電晶體TRmn,並不包括電阻。運算記憶胞C(b)mn可經由位元線BLn接收讀取電壓Vread,以產生晶胞電流Imn。在運作上,因應於不同電壓值的輸入電壓Vmn及臨界電壓Vt,運算記憶胞C(b)mn可產生或不產生晶胞電流Imn。運算記憶胞C(b)mn的操作細節可相同或相似於運算記憶胞C(a)mn。
當運算記憶胞C(b)mn接收的輸入電壓Vmn為第二輸入電壓值VH、且電晶體TRmn的臨界電壓Vt為第一臨界電壓值VtL或第二臨界電壓值VtH時,電晶體TRmn皆為開啟狀態,運算記憶胞C(b)mn的等效阻抗大致相等於電晶體TRmn本身的等效電阻值Rtr,運算記憶胞C(b)mn產生晶胞電流Imn。
另一方面,當運算記憶胞C(b)mn接收的輸入電壓Vmn為第一輸入電壓值VL、且電晶體TRmn的臨界電壓Vt為第一臨界電壓值VtL時,電晶體TRmn為開啟狀態,運算記憶胞C(b)mn產生晶胞電流Imn。
再者,當運算記憶胞C(b)mn接收的輸入電壓Vmn為第一輸入電壓值VL、且電晶體TRmn的臨界電壓Vt為第二臨界電壓值VtH時,由於輸入電壓Vmn小於臨界電壓Vt,電晶體TRmn為關閉狀態,運算記憶胞C(b)mn不產生晶胞電流Imn。
表2所示為運算記憶胞C(b)mn是否產生晶胞電流Imn對應於輸入值INmn及權重值Wmn的真值表,其相同於表1所示的數值。據此,運算記憶胞C(b)mn可執行乘積運算,運算記憶胞C(b)mn所產生的晶胞電流Imn有關於輸入值INmn與權重值Wmn的乘積。
表2
| Wmn INmn | 0 | 1 |
| 0 | 產生晶胞電流Imn | 產生晶胞電流Imn |
| 1 | 產生晶胞電流Imn | 不產生晶胞電流Imn |
第4A圖與第4B圖為本案第三實施例的運算記憶胞C(c)mn的電路圖。相較於第3A圖的運算記憶胞C(a)mn,第4A圖與第4B圖的運算記憶胞C(c)mn的電阻R(c)mn為可變電阻,其具有可變的電阻值,可在記憶體裝置運作時動態調整電阻R(c)mn的電阻值。在另一種示例中,電阻R(c)mn具有固定的電阻值,然而,可調整製程參數以在製造過程中調整電阻R(c)mn的電阻值。在第4A圖中,電晶體TRmn是可程式化電晶體(programmable transistor),而第4B圖中,電晶體TRmn是一般電晶體。
電阻R(c)mn可例如調整為四個電阻值R0、R1、R2、R3,其中電阻值R0趨近於零,電阻值R0遠小於電阻值R1、R2、R3。並且,運算記憶胞C(c)mn的電晶體TRmn的等效電阻值Rtr亦遠小於電阻值R1、R2及R3。
當運算記憶胞C(c)mn儲存的權重值Wmn為「0」時,電阻R(c)mn調整為電阻值R0。類似的,當運算記憶胞C(c)mn儲存的權重值Wmn為「1」、「2」、「3」時,電阻R(c)mn調整為電阻值R1、R2、R3。
當輸入值INmn為「0」時,輸入電壓Vmn為高電壓值的第二輸入電壓值VH,電晶體TRmn為開啟狀態,運算記憶胞C(c)mn的等效阻抗大致相等於電晶體TRmn本身的等效電阻值Rtr,且運算記憶胞C(c)mn產生晶胞電流Imn。在此狀況下,不論權重值Wmn設定為「0」、「1」、「2」或「3」(即,不論電阻R(c)mn調整為電阻值R0、R1、R2或R3),運算記憶胞C(c)mn產生晶胞電流Imn。
另一方面,當輸入值INmn為「1」時,輸入電壓Vmn為低電壓值的第一輸入電壓值VL,電晶體TRmn為關閉狀態,運算記憶胞C(c)mn不產生晶胞電流Imn。當權重值Wmn設定為「0」、「1」、「2」、「3」時,電阻R(c)mn調整為電阻值R0、R1、R2、R3,運算記憶胞C(c)mn所產生的晶胞電流Imn有關於電阻值R0、R1、R2、R3。據此,運算記憶胞C(c)mn可執行乘積運算,運算記憶胞C(c)mn所產生的晶胞電流Imn有關於輸入值INmn與權重值Wmn的乘積。
第5圖為本案第四實施例的運算記憶胞C(d)mn的電路圖。如第5圖所示,運算記憶胞C(d)mn包括多工器(multiplexer) M1及電阻Ra、Rb、Rc、Rd。多工器M1具有一個輸入端a1、四個輸出端b0、b1、b2、b3,以及兩個控制端S1、S2。輸入端a1連接於位元線以接收讀取電壓Vread 。控制端S1、S2連接於一組字元線以接收輸入訊號INmn-1、INmn-2。例如,控制端S1經由第一字元線以接收輸入訊號INmn-1,控制端S2經由第二字元線以接收輸入訊號INmn-2。根據輸入訊號INmn-1、INmn-2,多工器M1透過輸出端b0、b1、b2、b3的其中一者而將讀取電壓Vread施加至電阻Ra、Rb、Rc、Rd的其中一者。
在運作上,運算記憶胞C(d)mn的輸入值INmn對應於兩個位元的輸入訊號INmn-1、INmn-2。輸入值INmn為「0」對應於輸入訊號INmn-1、INmn-2為「0 0」,以控制多工器M1將讀取電壓Vread施加至電阻Ra,此時運算記憶胞C(d)mn產生的晶胞電流Imn=(Vread/Ra)。類似的,輸入值INmn為「1」、「2」、「3」分別對應於輸入訊號INmn-1、INmn-2為「0 1」、「1 0」、「1 1」,讀取電壓Vread分別施加至電阻Rb、Rc、Rd,運算記憶胞C(d)mn對應產生的晶胞電流Imn=(Vread/Rb),或者,晶胞電流Imn=(Vread/Rc),或者,晶胞電流Imn=(Vread/Rd)。
運算記憶胞C(d)mn可儲存權重值Wmn,並根據權重值Wmn對應調整電阻Ra、Rb、Rc、Rd的電阻值。即,權重值Wmn對應於電阻Ra、Rb、Rc、Rd的不同電阻值。
第6圖為本案第五實施例的運算記憶胞C(e)mn的電路圖。如第6圖所示,運算記憶胞C(e)mn包括開關元件SW1、SW2及電阻Ra、Rb。在一種示例中,開關元件SW1、SW2為NMOS型的電晶體,其經由電晶體的閘極接收輸入訊號A1、A1’。本實施例的開關元件SW1、SW2的運作方式類似於多工器,其類似於第5圖的實施例的多工器M1的運作方式。即,本實施例中,以開關元件SW1、SW2實現多工器。
輸入訊號INmn-1、INmn-2對應於運算記憶胞C(e)mn的輸入值INmn。輸入值INmn為「0」對應於輸入訊號INmn-1、INmn-2為「0 1」,開關元件SW1為關閉狀態且開關元件SW2為開啟狀態。此時,讀取電壓Vread僅經由開關元件SW2而施加至電阻Rb,運算記憶胞C(e)mn產生的晶胞電流Imn=Vread/Rb。運算記憶胞C(e)mn可儲存權重值Wmn,根據權重值Wmn將電阻Ra、Rb分別調整為第一電阻值RL或第二電阻值RH。其中,第二電阻值RH大於第一電阻值RL。
另一方面,輸入值INmn為「1」對應於輸入訊號INmn-1、INmn-2為「1 0」,開關元件SW1為開啟狀態且開關元件SW2為關閉狀態。讀取電壓Vread僅經由開關元件SW1而施加至電阻Ra,運算記憶胞C(e)mn產生的晶胞電流Imn=Vread/Ra。
第7圖為本案第六實施例的運算記憶胞C(f)mn的電路圖。相較於第6圖的運算記憶胞C(e)mn接收一個位元的輸入值INmn以執行運算,第7圖的運算記憶胞C(f)mn接收兩個位元的輸入值[INmnA INmnB]以執行運算。如第7圖所示,運算記憶胞C(f)mn包括8個開關元件SW1~SW8及4個電阻Ra、Rb、Rc、Rd。第一組的開關元件SW1、SW2串聯連接於電阻Ra,第二組的開關元件SW3、SW4串聯連接於電阻Rb,第三組的開關元件SW5、SW6串聯連接於電阻Rc,第四組的開關元件SW7、SW8串聯連接於電阻Rd。
開關元件SW1、SW5連接於一條字元線以接收輸入訊號A1。開關元件SW3、SW7連接於一條反相字元線以接收輸入訊號A1’。開關元件SW2、SW8連接於另一條字元線以接收輸入訊號B1。開關元件SW4、SW6連接於另一條反相字元線以接收接收輸入訊號B1’。輸入訊號A1’為輸入訊號A1的反相,輸入訊號B1’為輸入訊號B1的反相。開關元件SW1、SW3、SW5、SW7共同連接於位元線以接收讀取電壓Vread。開關元件SW1~SW8例如為NMOS型的電晶體,經由電晶體的閘極接收輸入訊號A1、A1’、B1、B1’。 本實施例以開關元件SW1~SW8來實現多工器,開關元件SW1~SW8的功能類似於第5圖的多工器M1。藉由輸入值INmnA、INmnB分別控制開關元件SW1~SW8的導通或斷路,以使讀取電壓Vread經由開關元件SW1~SW8而選擇性施加至電阻Ra~Rd的其中一者。
輸入值INmnA 對應於輸入訊號A1、A1’, 輸入值INmnB對應於輸入訊號B1、B1’。輸入值INmnA、INmnB為「0 0」對應於輸入訊號A1、A1’、B1、B1’為「0 1 0 1」,此時開關元件SW3、SW7、SW4、SW6為開啟狀態,開關元件SW1、SW5、SW2、SW8為關閉狀態,讀取電壓Vread經由開關元件SW3、SW4施加至電阻Rb,運算記憶胞C(f)mn對應產生的晶胞電壓Imn為Imn=(Vread/Rb)。
輸入值INmnA、INmnB為「0 1」對應於輸入訊號A1、A1’、B1、B1’為「0 1 1 0」,此時開關元件SW3、SW7、SW2、SW8為開啟狀態,開關元件SW1、SW5、SW4、SW6為關閉狀態。讀取電壓Vread經由開關元件SW7、SW8施加至電阻Rd,運算記憶胞C(f)mn對應產生的晶胞電壓Imn為Imn=(Vread/Rd)。
輸入值INmnA、INmnB為「1 0」對應於輸入訊號A1、A1’、B1、B1’為「1 0 0 1」,此時開關元件SW1、SW5、SW4、SW6為開啟狀態,SW3、SW7、SW2、SW8為關閉狀態,讀取電壓Vread經由開關元件SW5、SW6施加至電阻Rc,運算記憶胞C(f)mn對應產生的晶胞電壓Imn為Imn=(Vread/Rc)。
輸入值INmnA、INmnB為「1 1」對應於輸入訊號A1、A1’、B1、B1’為「1 0 1 0」,此時開關元件SW1、SW5、SW2、SW8為開啟狀態,SW3、SW7、SW4、SW6為關閉狀態,讀取電壓Vread經由開關元件SW1、SW2施加至電阻Ra,運算記憶胞C(f)mn對應產生的晶胞電壓Imn為Imn=(Vread/Ra)。
根據上述運算,表3所示為提供不同的輸入值INmnA、INmnB的狀況下,運算記憶胞C(f)mn產生的晶胞電壓Imn。
表3
| Imn | ||
| INmnA、 INmnB=[0 0] | A1 A1’ B1 B1’ =[0 1 0 1] | Imn=(Vread/Rb) |
| INmnA、INmnB =[0 1] | A1 A1’ B1 B1’ =[0 1 1 0] | Imn=(Vread/Rd) |
| INmnA、INmnB =[1 0] | A1 A1’ B1 B1’ =[1 0 0 1] | Imn=(Vread/Rc) |
| INmnA、INmnB =[1 1] | A1 A1’ B1 B1’ =[1 0 1 0] | Imn=(Vread/Ra) |
運算記憶胞C(f)mn可儲存權重值Wmn,根據權重值Wmn調整電阻Ra、Rb、Rc、Rd的電阻值。在一種示例中,可類似於第5圖的運算記憶胞C(d)mn的電阻值的調整方式,當權重值Wmn為「0」時,電阻Ra、Rb、Rc、Rd皆調整為電阻值R0。當權重值Wmn為「1」時,電阻Ra、Rb、Rc、Rd分別調整為電阻值R3、R0、R2、R1。當權重值Wmn為「2」時,電阻Ra、Rb、Rc、Rd分別調整為2*R3、2*R0、2*R2、2*R1。當權重值Wmn為「3」時,電阻Ra、Rb、Rc、Rd分別調整為3*R3、3*R0、3*R2、3*R1。據此,本實施例的運算記憶胞C(f)mn可執行乘積運算。在其他示例中,可根據權重值Wmn對於電阻Ra、Rb、Rc、Rd的電阻值進行調變(modulation),以使運算記憶胞C(f)mn執行不同類型的邏輯運算。
第8圖為本案第七實施例的運算記憶胞C(g)mn的電路圖。當第7圖的運算記憶胞C(f)mn的電阻Rb、電阻Rc與電阻Rd具有相同的電阻值時,電阻Rb、電阻Rc與電阻Rd可整合為單一的等效電阻,而簡化為本實施例的運算記憶胞C(g)mn。運算記憶胞C(g)mn的電阻Rb為整合後的等效電阻,開關元件SW4、SW6、SW8共同連接於電阻Rb。
運算記憶胞C(g)mn的輸入值INmnA、INmnB為「0 0」對應於輸入訊號A1、A1’、B1、B1’為「0 1 0 1」,此時開關元件SW3、SW7、SW4、SW6為開啟狀態,開關元件SW1、SW5、SW2、SW8為關閉狀態,讀取電壓Vread經由開關元件SW3、SW4施加至電阻Rb。類似的,輸入值INmnA、INmnB為「0 1」對應於輸入訊號A1、A1’、B1、B1’為「0 1 1 0」,此時開關元件SW3、SW7、SW2、SW8為開啟狀態,開關元件SW1、SW5、SW4、SW6為關閉狀態,讀取電壓Vread經由開關元件SW7、SW8施加至電阻Rb。輸入值INmnA、INmnB為「1 0」對應於輸入訊號A1、A1’、B1、B1’為「1 0 0 1」,此時開關元件SW1、SW5、SW4、SW6為開啟狀態,SW3、SW7、SW2、SW8為關閉狀態,讀取電壓Vread經由開關元件SW5、SW6施加至電阻Rb。由上,當輸入值INmnA、INmnB為「0 0」、「0 1」、「1 0」時,讀取電壓Vread施加至電阻Rb,使運算記憶胞C(g)mn對應產生的晶胞電壓Imn為Imn=(Vread/Rb)。
另一方面,輸入值INmnA、INmnB為「1 1」對應於輸入訊號A1、A1’、B1、B1’為「1 0 1 0」,此時開關元件SW1、SW5、SW2、SW8為開啟狀態,SW3、SW7、SW4、SW6為關閉狀態,讀取電壓Vread經由開關元件SW1、SW2施加至電阻Ra,使運算記憶胞C(g)mn對應產生的晶胞電壓Imn為Imn=(Vread/Ra)。
可將電阻Ra、Rb分別調整為第二電阻值RH或第一電阻值RL,使運算記憶胞C(g)mn執行不同類型的邏輯運算。在一種示例中,電阻Ra調整為第二電阻值RH,電阻Rb調整為第一電阻值RL,且第二電阻值RH大於第一電阻值RL,運算記憶胞C(g)mn可執行輸入值INmnA與輸入值INmnB的邏輯「及」運算,如表4所示,其中,Yn代表輸入值INmnA與輸入值INmnB的邏輯運算結果。
表4
| 邏輯「及」運算 | Wmn=0 | ||
| Imn | Yn | ||
| INmnA INmnB =[0 0] | A1A1’B1B1’ =[0 1 0 1] | Vread/Rb= Vread/RL | 0 |
| INmnA INmnB =[0 1] | A1A1’B1B1’ =[0 1 1 0] | Vread/Rb= Vread/RL | 0 |
| INmnA INmnB =[1 0] | A1A1’B1B1’ =[1 0 0 1] | Vread/Rb= Vread/RL | 0 |
| INmnA INmnB =[1 1] | A1A1’B1B1’ =[1 0 1 0] | Vread/Ra= Vread/RH | 1 |
在另一種示例中,電阻Ra調整為第一電阻值RL,電阻Rb調整為第二電阻值RH,則運算記憶胞C(g)mn可執行輸入值INmnA與輸入值INmnB的邏輯「反及」運算,如表5所示。
表5
| 邏輯「反及」運算 | Wmn=0 | ||
| Imn | Yn | ||
| INmnA INmnB =[0 0] | A1A1’B1B1’ =[0 1 0 1] | Vread/Rb= Vread/RH | 1 |
| INmnA INmnB =[0 1] | A1A1’B1B1’ =[0 1 1 0] | Vread/Rb= Vread/RH | 1 |
| INmnA INmnB =[1 0] | A1A1’B1B1’ =[1 0 0 1] | Vread/Rb= Vread/RH | 1 |
| INmnA INmnB =[1 1] | A1A1’B1B1’ =[1 0 1 0] | Vread/Ra= Vread/RL | 0 |
第9圖為本案第八實施例的運算記憶胞C(h)mn的電路圖。當第7圖的運算記憶胞C(f)mn的電阻Ra與電阻Rb具有相同的電阻值時,電阻Ra與電阻Rb可整合為單一的第一等效電阻,且當電阻Rc與電阻Rd具有相同的電阻值時,電阻Rc與電阻Rd可整合為單一的第二等效電阻。據此,第9圖的運算記憶胞C(h)mn的電阻Ra為整合後的第一等效電阻,電阻Rb為整合後的第二等效電阻。開關元件SW2、SW4共同連接於電阻Ra,開關元件SW6、SW8共同連接於電阻Rb。
輸入值INmnA、INmnB 為「0 0」對應於輸入訊號A1、A1’、B1、B1’為「0 1 0 1」,讀取電壓Vread經由開關元件SW3、SW4施加至電阻Ra。輸入值INmnA、INmnB為「1 1」對應於輸入訊號A1、A1’、B1、B1’為「1 0 1 0」,讀取電壓Vread經由開關元件SW1、SW2施加至電阻Ra。
另一方面,輸入值INmnA、INmnB為「1 0」對應於輸入訊號A1、A1’、B1、B1’為「1 0 0 1」,讀取電壓Vread經由開關元件SW5、SW6施加至電阻Rb。輸入值INmnA、INmnB為「0 1」對應於輸入訊號A1、A1’、B1、B1’為「0 1 1 0」,讀取電壓Vread經由開關元件SW7、SW8施加至電阻Rb。
在一種示例中,電阻Ra調整為第二電阻值RH,電阻Rb調整為第一電阻值RL,且第二電阻值RH大於第一電阻值RL,運算記憶胞C(h)mn可執行輸入值INmnA與輸入值INmnB的邏輯「反互斥或」運算,如表6所示。
表6
| 邏輯「反互斥或」運算 | Wmn=0 | ||
| Imn | Yn | ||
| INmnA INmnB =[0 0] | A1A1’B1B1’ =[0 1 0 1] | Vread/Ra= Vread/RH | 1 |
| INmnA INmnB =[0 1] | A1A1’B1B1’ =[0 1 1 0] | Vread/Rb= Vread/RL | 0 |
| INmnA INmnB =[1 0] | A1A1’B1B1’ =[1 0 0 1] | Vread/Rb= Vread/RL | 0 |
| INmnA INmnB =[1 1] | A1A1’B1B1’ =[1 0 1 0] | Vread/Ra= Vread/RH | 1 |
在另一種示例中,電阻Ra調整為第一電阻值RL,電阻Rb調整為第二電阻值RH,運算記憶胞C(h)mn可執行輸入值INmnA與輸入值INmnB的邏輯「互斥或」運算,如表7所示。
表7
| 邏輯「互斥或」運算 | Wmn=0 | ||
| Imn | Yn | ||
| INmnA INmnB =[0 0] | A1A1’B1B1’ =[0 1 0 1] | Vread/Ra= Vread/RL | 0 |
| INmnA INmnB =[0 1] | A1A1’B1B1’ =[0 1 1 0] | Vread/Rb= Vread/RH | 1 |
| INmnA INmnB =[1 0] | A1A1’B1B1’ =[1 0 0 1] | Vread/Rb= Vread/RH | 1 |
| INmnA INmnB =[1 1] | A1A1’B1B1’ =[1 0 1 0] | Vread/Ra= Vread/RL | 0 |
根據上述之本案不同實施例,運算記憶胞由一或多個電晶體及/或電阻組成。可調整電晶體的臨界電壓以改變運算記憶胞儲存的權重值,並根據權重值將電阻調整為高電阻值、低電阻值或不同比例的電阻值。並且,根據輸入值對應的輸入電壓控制運算記憶胞操作於「導通狀態」或「斷路狀態」,據此控制讀取電壓選擇性施加至電晶體或電阻,使運算記憶胞產生對應的晶胞電流以表示輸出值。輸出值表示輸入值與權重值的乘積運算的結果,並可加總得到乘積的總和。此外,運算記憶胞亦可包括多工器。藉由多工器的運作,使讀取電壓選擇性施加被選擇路徑上的電阻,使運算記憶胞執行輸入值與權重值的邏輯運算,或兩個位元的輸入值之間的邏輯運算。
第10A圖至第10D圖顯示根據本案一實施例的模擬圖。於第10A圖至第10D圖中,乃是分別模擬,1個記憶體串、2個記憶體串、4個記憶體串與8個記憶體串(各記憶體串包括32個串聯運算記憶胞)的延遲時間與乘積和結果,故而,其輸入值的數量分別為32個輸入值、64個輸入值、128個輸入值與256個輸入值。運算記憶胞的阻值例如為20K歐姆。在第10A圖至第10D圖中,負載電容C的電容值CL分別為1pF、4pF與10pF。在本案一實施例中,可以調整負載電容C的電容值CL,以調整延遲時間。在底下,以讀取電壓為0.5V,而負載電容C的電容電壓VC被充電至既定電壓為0.3V所需要的充電時間當成延遲時間為例做說明,但當知本案並不受限於此。既定電壓是根據讀取電壓而決定。
以第10A圖為例,於負載電容C的電容值CL為10pF,當延遲時間為1μs時,則代表對1個記憶體串(包括32個串聯運算記憶胞)乘積和結果為5,其餘可依此類推。
由第10A圖至第10D圖可以看出,在本案一實施例中,延遲時間會正比於乘積和。
第11A圖至第11D圖顯示根據本案一實施例的另一種模擬圖。於第11A圖至第11D圖中,乃是分別模擬,1個記憶體串、2個記憶體串、4個記憶體串與8個記憶體串(各記憶體串包括8個串聯運算記憶胞)的延遲時間與乘積和結果,故而,其輸入值的數量分別為8個輸入值、16個輸入值、32個輸入值與64個輸入值。運算記憶胞的阻值例如為50K歐姆。
由第11A圖至第11D圖可以看出,在本案一實施例中,延遲時間會正比於乘積和。
第12圖繪示根據本案一實施例的記憶體內計算(IMC)記憶體裝置。如第12圖所示,根據本案一實施例的記憶體內計算(IMC)記憶體裝置1200包括:複數個運算記憶胞C11~Cmn(m與n為正整數),複數個阻抗元件1210-1~1210-n,負載電容C以及量測電路120。該些阻抗元件1210-1~1210-n形成於記憶串S1~Sn之內。該些阻抗元件1210-1~1210-n串聯於該些運算記憶胞C11~Cmn,例如,該阻抗元件1210-1串聯於該些運算記憶胞C11、C21、…Cm1。
第13A圖與第13B圖顯示快速充電行為。
在本案一實施例中,可能會出現快速充電行為(fast charging behavior),如第13A圖的參考符號1310所示。快速充電行為是指,當同一記憶串的所有運算記憶胞都處於低阻抗狀態時,該同一記憶串的等效阻抗太低,使得該同一記憶串的電流過高,對負載電容C的充電電流過高,使得負載電容C的電位快速提升,進而導致誤判的可能性。
所以,在本案一實施例中,對該些記憶串S1~Sn額外增加阻抗元件1210-1~1210-n,以增加該些記憶串S1~Sn的等效阻抗,以有效減少或避免快速充電行為。即便是當同一記憶串的所有運算記憶胞都處於低阻抗狀態時,由於阻抗元件1210-1~1210-n的關係,該同一記憶串的等效阻抗仍不會太低,使得該同一記憶串的電流不會過高,對負載電容C的充電電流不會過高,使得負載電容C的電位不會快速提升,進而降低誤判的可能性。
在本案一實施例中,該些運算記憶胞具有至少兩種阻抗狀態,高阻抗狀態與低阻抗狀態。當該些運算記憶胞處於高阻抗狀態時(亦可稱為第一阻抗狀態),該些運算記憶胞具有一高阻抗值RH(亦可稱為第一阻抗值);以及,當該些運算記憶胞處於低阻抗狀態時(亦可稱為第二阻抗狀態),該些運算記憶胞具有一低阻抗值RL(亦可稱為第二阻抗值)。
在本案一實施例中,該些阻抗元件1210-1~1210-n的等效阻抗RS例如但不受限於為,RS=2RL,或者,RS=5RL,則可以有效減少快速充電行為。在本案一實施例中,該些阻抗元件1210-1~1210-n的等效阻抗RS例如但不受限於為,RS=10RL,或者,RS≧0.5*RH,則可以有效避免甚至完全避免快速充電行為。
在本案一實施候中,例如但不受限於,該些運算記憶胞的高阻抗值RH為555K歐姆,而該些運算記憶胞的低阻抗值RL為13K歐姆。則該些阻抗元件1210-1~1210-n的等效阻抗RS可依上述方式來設定,以有效減少或避免快速充電行為。
如第13B圖所示,於本案一實施例中,當沒有阻抗元件1210-1~1210-n(無RS)時,快速充電行為較明顯。然而,當阻抗元件1210-1~1210-n的等效阻抗RS逐漸增加時,快速充電行為愈來愈被減少或避免。由此可知,本案第12圖的實施例的確可以減少或避免快速充電行為,進而降低誤判的可能性。
於本案一實施例中,該些阻抗元件1210-1~1210-n例如為但不受限於,由製程所形成的一電阻。或者,於本案一實施例中,該些阻抗元件1210-1~1210-n例如為但不受限於,為電晶體。或者,於本案一實施例中,該些阻抗元件1210-1~1210-n例如為但不受限於,電晶體與電阻之組合,當進行程式化操作(programming operation)或運算記憶胞權重調整時,該電晶體為導通,當進行感應操作(sensing operation)時,電晶體被關閉。
在本案一實施例中,藉由調整負載電容的電容值,可以將IMC記憶體裝置的IMC運算操作的功率消耗調整至合理範圍內。此外,對於給定的輸入值數量與運算記憶胞數量,適當排列記憶串數量與各記憶串的運算記憶胞數量,也有助於調整功率消耗。
在本案一實施例中,一記憶串的運算記憶胞數量至少要大於等於2,以及,記憶體陣列的記憶串數量可為任意的。而且,運算記憶胞的阻抗值可被輸入值所改變。
在本案一實施例中,當記憶體裝置100是NAND型記憶體裝置時,讀取電壓Vread低於1V。
在本案一實施例中,記憶體裝置100可應用於,例如但不受限於,神經網路的計算,或者是,乘積和運算,或者是,將輸入資料比較於所儲存資料等。
在本案一實施例中,由於不是採用電壓加總架構來進行IMC,故而,可以同時運算更多筆輸入值,且可以僅使用單一感應放大器即可滿足IMC,本案實施例具有可以降低讀取錯誤與功率消耗的優點。
本案一實施例的IMC記憶體裝置是電流加總架構與電壓加總架構的混合模式,可允許同時運算更多筆輸入值,且能避免電流加總架構中由於較大加總電流所帶來的問題,亦能避免電壓加總架構中由於低感應電流所帶來的問題。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
I1~In:記憶串電流
BL1~BLn:位元線
V11~Vmn:輸入電壓
C11~Cmn:運算記憶胞
100:記憶體裝置
IN11~INmn:輸入值
S1~Sn:記憶串
C:負載電容
120:量測電路
Vread:讀取電壓
C(a)mn~C(h)mn:運算記憶胞
SW1~SW8:開關元件
R(a)mn,R(c)mn:電阻
Ra,Rb,Rc,Rd:電阻
TRmn:電晶體
g:閘極
d:汲極
s:源極
INmn-1、INmn-2:輸入值
INmnA、INmnB:輸入值
A1、A1’、B1、B1’:輸入訊號
M1:多工器
a1:輸入端
b0~b3:輸出端
S1,S2:控制端
1200:記憶體裝置
1210-1~1210-n:阻抗元件
1310:快速充電行為
第1圖繪示根據本案一實施例的記憶體內計算(IN-MEMORY COMPUTING (IMC))記憶體裝置。
第2A圖與第2B圖顯示根據本案一實施例之測量延遲時間之示意圖。
第3A圖為本案第一實施例的運算記憶胞的電路圖。
第3B圖為本案第二實施例的運算記憶胞的電路圖。
第4A圖與第4B圖為本案第三實施例的運算記憶胞的電路圖。
第5圖為本案第四實施例的運算記憶胞的電路圖。
第6圖為本案第五實施例的運算記憶胞的電路圖。
第7圖為本案第六實施例的運算記憶胞的電路圖。
第8圖為本案第七實施例的運算記憶胞的電路圖。
第9圖為本案第八實施例的運算記憶胞的電路圖。
第10A圖至第10D圖顯示根據本案一實施例的模擬圖。
第11A圖至第11D圖顯示根據本案一實施例的另一種模擬圖。
第12圖繪示根據本案一實施例的記憶體內計算(IMC)記憶體裝置。
第13A圖與第13B圖顯示快速充電行為。
I1~In:記憶串電流
BL1~BLn:位元線
V11~Vmn:輸入電壓
C11~Cmn:運算記憶胞
100:記憶體裝置
IN11~INmn:輸入值
S1~Sn:記憶串
C:負載電容
120:量測電路
Vread:讀取電壓
Claims (19)
- 一種記憶體內計算(IMC)記憶體裝置,包括: 複數個運算記憶胞,組成複數個記憶串,該些運算記憶胞儲存複數個權重值; 一負載電容,耦接至該些運算記憶胞;以及 一量測電路,耦接至該負載電容, 其中,於進行運算時, 複數個輸入電壓分別輸入至該些運算記憶胞,該些輸入電壓有關於複數個輸入值, 該些運算記憶胞之複數個有效阻抗值有關於該些輸入電壓與該些權重值, 當一讀取電壓施加至該些運算記憶胞時,該些運算記憶胞產生複數個記憶胞電流,該些記憶胞電流形成複數個記憶串電流, 由該些記憶串所產生該些記憶串電流對該負載電容充電, 該量測電路量測該負載電容之一電容電壓,以及 根據該負載電容之該電容電壓、至少一延遲時間與一既定電壓間之一關係,決定該些輸入值與該些權重值之一運算結果。
- 如請求項1所述之記憶體內計算(IMC)記憶體裝置,其中, 各記憶串包括串聯的至少2個運算記憶胞,該些記憶串為並聯, 該延遲時間為,從施加該讀取電壓之一第一時間點到該負載電容的該電容電壓被充電至該既定電壓之一第二時間點,該既定電壓是根據該讀取電壓而決定。
- 如請求項1所述之記憶體內計算(IMC)記憶體裝置,其中,於複數個既定延遲時間處,檢查該電容電壓是否到達該既定電壓以得到一比較結果,該比較結果代表該些輸入值與該些權重值之該運算結果。
- 如請求項1所述之記憶體內計算(IMC)記憶體裝置,其中, 各該些運算記憶胞包括: 一電晶體,連接於一位元線,該電晶體經由該位元線接收該讀取電壓且接收該輸入電壓以產生該記憶胞電流; 該電晶體具有一臨界電壓,因應於該權重值,該臨界電壓調整為一第一臨界電壓值或一第二臨界電壓值;以及 因應於該輸入電壓及該電晶體的該臨界電壓,該電晶體處於一開啟狀態或一關閉狀態。
- 如請求項4所述之記憶體內計算(IMC)記憶體裝置,其中, 當該輸入電壓具有一第一輸入電壓值、且該臨界電壓具有該第二臨界電壓值時,該電晶體處於該關閉狀態,該電晶體不產生該晶胞電流;以及 當該輸入電壓具有一第二輸入電壓值時,該電晶體處於該開啟狀態,該電晶體產生該晶胞電流, 其中,該第一輸入電壓值小於該第二輸入電壓值,該第一臨界電壓值小於該第二臨界電壓值,該第一輸入電壓值小於該第二臨界電壓值。
- 如請求項5所述之記憶體內計算(IMC)記憶體裝置,其中各該些運算記憶胞更包括: 一電阻,並聯連接於該電晶體,且連接於該位元線,該電阻具有一固定電阻值或一可變電阻值,以及 因應於該權重值,該可變電阻值至少調整為一第一電阻值或一第二電阻值。
- 如請求項1所述之記憶體內計算(IMC)記憶體裝置,其中, 各該些運算記憶胞包括: 一多工器;以及 複數個電阻,耦接至該多工器, 該多工器接收該讀取電壓與該輸入電壓, 根據該輸入值,該多工器將該讀取電壓施加至該些電阻的其中一者, 該運算記憶胞產生的該晶胞電流有關於該讀取電壓與該些電阻的該其中一者, 根據該運算記憶胞的該權重值而調整該些電阻的複數個電阻值。
- 如請求項1所述之記憶體內計算(IMC)記憶體裝置,其中, 各該些運算記憶胞包括: 複數個開關元件,接收該輸入電壓,以及 複數個電阻,耦接至該些開關元件, 該輸入電壓控制該些開關元件的導通或斷路,以使該讀取電壓經由該些開關元件而選擇性施加至該些電阻的其中一者,以及 根據該運算記憶胞的該權重值而調整該些電阻的複數個電阻值。
- 如請求項1所述之記憶體內計算(IMC)記憶體裝置,更包括: 複數個阻抗元件,形成於該些記憶串之內,該些阻抗元件串聯於該些運算記憶胞。
- 如請求項9所述之記憶體內計算(IMC)記憶體裝置,其中, 該些運算記憶胞具有一第一阻抗值與一第二阻抗值,該第一阻抗值高於該第二阻抗值;以及 該些阻抗元件的一等效阻抗為等於或高於該第二阻抗值之兩倍,或者,該些阻抗元件的該等效阻抗等於或高於該第一阻抗值的一半。
- 一種記憶體內計算方法,應用於一記憶體內計算記憶體裝置,該記憶體內計算方法包括: 儲存複數個權重值於複數個運算記憶胞,該些運算記憶胞組成複數個記憶串; 分別輸入複數個輸入電壓至該些運算記憶胞,該些輸入電壓有關於複數個輸入值,該些運算記憶胞之複數個有效阻抗值有關於該些輸入電壓與該些權重值; 當一讀取電壓施加至該些運算記憶胞時,該些運算記憶胞產生複數個記憶胞電流,該些記憶胞電流形成複數個記憶串電流; 由該些記憶串所產生該些記憶串電流對該負載電容充電; 量測該負載電容之一電容電壓;以及 根據該負載電容之該電容電壓、至少一延遲時間與一既定電壓間之一關係,決定該些輸入值與該些權重值之一運算結果。
- 如請求項11所述之記憶體內計算方法,其中, 該延遲時間為,從施加該讀取電壓之一第一時間點到該負載電容的該電容電壓被充電至該既定電壓之一第二時間點,該既定電壓是根據該讀取電壓而決定。
- 如請求項11所述之記憶體內計算方法,其中,於複數個既定延遲時間處,檢查該電容電壓是否到達該既定電壓以得到一比較結果,該比較結果代表該些輸入值與該些權重值之該運算結果。
- 如請求項11所述之記憶體內計算方法,其中, 各該些運算記憶胞包括: 一電晶體,連接於一位元線,該電晶體經由該位元線接收該讀取電壓且接收該輸入電壓,該電晶體產生該晶胞電流; 該電晶體具有一臨界電壓,因應於該權重值,該臨界電壓調整為一第一臨界電壓值或一第二臨界電壓值;以及 因應於該輸入電壓及該電晶體的該臨界電壓,該電晶體處於一開啟狀態或一關閉狀態。
- 如請求項14所述之記憶體內計算方法,其中, 當該輸入電壓具有一第一輸入電壓值、且該臨界電壓具有該第二臨界電壓值時,該電晶體處於該關閉狀態,該電晶體不產生該晶胞電流;以及 當該輸入電壓具有一第二輸入電壓值時,該電晶體處於該開啟狀態,該電晶體產生該晶胞電流, 其中,該第一輸入電壓值小於該第二輸入電壓值,該第一臨界電壓值小於該第二臨界電壓值,該第一輸入電壓值小於該第二臨界電壓值。
- 如請求項15所述之記憶體內計算方法,其中各該些運算記憶胞更包括: 一電阻,並聯連接於該電晶體,且連接於該位元線,該電阻具有一固定電阻值或一可變電阻值,以及 因應於該權重值,該可變電阻值至少調整為一第一電阻值或一第二電阻值。
- 如請求項11所述之記憶體內計算方法,其中, 各該些運算記憶胞包括: 一多工器;以及 複數個電阻,耦接至該多工器, 該多工器接收該讀取電壓與該輸入電壓, 根據該輸入值,該多工器將該讀取電壓施加至該些電阻的其中一者, 該運算記憶胞產生的該晶胞電流有關於該讀取電壓與該些電阻的該其中一者, 根據該運算記憶胞的該權重值而調整該些電阻的複數個電阻值。
- 如請求項11所述之記憶體內計算方法,其中, 各該些運算記憶胞包括: 複數個開關元件,接收該輸入電壓,以及 複數個電阻,耦接至該些開關元件, 該輸入電壓控制該些開關元件的導通或斷路,以使該讀取電壓經由該些開關元件而選擇性施加至該些電阻的其中一者,以及 根據該運算記憶胞的該權重值而調整該些電阻的複數個電阻值。
- 如請求項11所述之記憶體內計算方法,其中,該記憶體內計算記憶體裝置更包括:複數個阻抗元件,形成於該些記憶串之內,該些阻抗元件串聯於該些運算記憶胞; 該些運算記憶胞具有一第一阻抗值與一第二阻抗值,該第一阻抗值高於該第二阻抗值;以及 該些阻抗元件的一等效阻抗為等於或高於該第二阻抗值之兩倍,或者,該些阻抗元件的該等效阻抗等於或高於該第一阻抗值的一半。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112114762A TWI845270B (zh) | 2023-04-20 | 2023-04-20 | 記憶體內計算記憶體裝置及記憶體內計算方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112114762A TWI845270B (zh) | 2023-04-20 | 2023-04-20 | 記憶體內計算記憶體裝置及記憶體內計算方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI845270B true TWI845270B (zh) | 2024-06-11 |
| TW202443573A TW202443573A (zh) | 2024-11-01 |
Family
ID=92541765
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112114762A TWI845270B (zh) | 2023-04-20 | 2023-04-20 | 記憶體內計算記憶體裝置及記憶體內計算方法 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI845270B (zh) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210264243A1 (en) * | 2020-02-22 | 2021-08-26 | Vishal Sarin | Method for analog in-memory compute for neural networks |
| WO2021222821A1 (en) * | 2020-04-30 | 2021-11-04 | Qualcomm Incorporated | Voltage offset for compute-in-memory architecture |
| US11270764B2 (en) * | 2020-07-02 | 2022-03-08 | Nanjing UCUN Technology Inc | Two-bit memory cell and circuit structure calculated in memory thereof |
| EP4116978A1 (en) * | 2021-07-09 | 2023-01-11 | STMicroelectronics International N.V. | Serial word line actuation with linked source voltage supply modulation for an in-memory compute operation where simultaneous access is made to plural rows of a static random access memory (sram) |
-
2023
- 2023-04-20 TW TW112114762A patent/TWI845270B/zh active
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210264243A1 (en) * | 2020-02-22 | 2021-08-26 | Vishal Sarin | Method for analog in-memory compute for neural networks |
| WO2021222821A1 (en) * | 2020-04-30 | 2021-11-04 | Qualcomm Incorporated | Voltage offset for compute-in-memory architecture |
| US11551759B2 (en) * | 2020-04-30 | 2023-01-10 | Qualcomm Incorporated | Voltage offset for compute-in-memory architecture |
| US11270764B2 (en) * | 2020-07-02 | 2022-03-08 | Nanjing UCUN Technology Inc | Two-bit memory cell and circuit structure calculated in memory thereof |
| EP4116978A1 (en) * | 2021-07-09 | 2023-01-11 | STMicroelectronics International N.V. | Serial word line actuation with linked source voltage supply modulation for an in-memory compute operation where simultaneous access is made to plural rows of a static random access memory (sram) |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202443573A (zh) | 2024-11-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11663457B2 (en) | Neural network circuits having non-volatile synapse arrays | |
| US11727258B2 (en) | Multi-bit, SoC-compatible neuromorphic weight cell using ferroelectric FETs | |
| US11657259B2 (en) | Kernel transformation techniques to reduce power consumption of binary input, binary weight in-memory convolutional neural network inference engine | |
| CN111581141B (zh) | 存储器装置及其操作方法 | |
| EP3373304A2 (en) | Semiconductor cell for performing a logic xnor or xor operation | |
| TWI740235B (zh) | 記憶體操作之事件計數器及相關計數方法 | |
| US11289171B1 (en) | Multi-level ultra-low power inference engine accelerator | |
| CN117157636A (zh) | 存算一体装置、系统及其操作方法 | |
| CN110729011A (zh) | 用于类神经网路的存储器内运算装置 | |
| CN113261062B (zh) | 经配置以产生用于神经网络的加权输入的存储器单元 | |
| CN118824307A (zh) | 存储器内计算存储器装置及存储器内计算方法 | |
| US20200210822A1 (en) | Multibit Neural Network | |
| TWI845270B (zh) | 記憶體內計算記憶體裝置及記憶體內計算方法 | |
| US8189410B1 (en) | Memory device and method thereof | |
| JP7480391B2 (ja) | インメモリコンピューティングのための記憶装置 | |
| TWI827143B (zh) | 用於記憶體內運算之記憶體裝置 | |
| TWI866591B (zh) | 記憶體內計算記憶體裝置及記憶體內計算方法 | |
| CN117037877A (zh) | 基于NOR Flash的存内计算芯片及其控制方法 | |
| US8339873B1 (en) | Memory device and method thereof | |
| US20190108879A1 (en) | Sensing circuit and memory using thereof | |
| CN119964621A (zh) | 存内计算存储器装置及存内计算方法 | |
| CN117437961A (zh) | 用于存储器内运算的存储器装置 |