TWI894925B - 記憶體裝置及其運算方法 - Google Patents
記憶體裝置及其運算方法Info
- Publication number
- TWI894925B TWI894925B TW113114917A TW113114917A TWI894925B TW I894925 B TWI894925 B TW I894925B TW 113114917 A TW113114917 A TW 113114917A TW 113114917 A TW113114917 A TW 113114917A TW I894925 B TWI894925 B TW I894925B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- input data
- memory device
- memory cells
- cells
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/14—Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
- G11C5/147—Voltage reference generators, voltage or current regulators; Internally lowered supply levels; Compensation for voltage drops
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1096—Write circuits, e.g. I/O line write drivers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/12—Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/16—Storage of analogue signals in digital stores using an arrangement comprising analogue/digital [A/D] converters, digital memories and digital/analogue [D/A] converters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/18—Bit line organisation; Bit line lay-out
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Power Engineering (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
本案提供一種記憶體裝置與其運算方法。儲存複數個權重資料於該記憶體裝置的複數個第一記憶體晶胞。從複數條串選擇線輸入複數個輸入資料。根據該些權重資料與該些輸入資料,該些第一記憶體晶胞產生複數個記憶體晶胞電流。該些記憶體晶胞電流加總於耦接至該些串選擇線的複數條位元線以得到複數個加總電流。將該些加總電流轉換成複數個類比數位轉換結果。累積該些類比數位轉換結果,以得到一運算結果。
Description
本發明是有關於一種記憶體裝置及其運算方法。
在過去幾年中,已有許多針對大規模近似最近鄰搜索(large-scale approximate nearest neighbor search)的新研究和創新方法,包括基於分區、基於圖的索引策略或機器學習(Partition based,graph-based indexing strategies or machine learning)。
索引策略(indexing strategy)是指在資料庫或資料結構中用於加速資料檢索和查詢的技術方法。索引是對資料進行結構化組織的方式,以便更快地訪問和檢索資料。索引策略包括各種技術和演算法,如分區索引、B樹索引、雜湊索引等。根據資料的特點和使用場景來選擇最合適的索引結構和演算法,以提高資料檢索的效率和性能。
目前已知道可以利用加速器和固態硬碟(SSD)之間的計算空間,以減少大規模資料集中的記憶體牆(memory wall)問題。
記憶體牆(memory wall)是指在電腦系統中,處理器和記憶體之間的速度差異日益增大的現象。隨著處理器性能的不斷提升,處理器能夠執行的指令數量和速度遠遠超過了記憶體能夠提供資料的速度。因此,處理器在等待從記憶體中檢索資料時會出現停滯,導致整體性能受限,就像碰到了一道“牆”一樣。這種情況尤其在處理大規模資料集時更為顯著,因為資料量較大時,記憶體速度的限制會更加明顯。為了解決記憶體牆問題,需要採取各種方法,如增加暫存記憶體(buffer)、優化演算法、利用更高效的儲存技術等。
乘積累加運算(Multiply Accumulate,MAC)是一種基本的數學運算,指的是將兩個數相乘然後將結果與另一個數相加。在數位信號處理、神經網路和矩陣乘法等領域中,MAC是普遍常見運算。在神經網路中,MAC操作通常用於計算神經元的輸出。神經網路的MAC操作中,權重與輸入相乘,然後將結果累加以產生最終輸出。
故而,如何能夠利用記憶體裝置來高效率且低耗能的進行如神經網路的MAC操作等運算,對於業界是重要努力方向。
根據本發明之一方面,提出一種記憶體裝置的運算方法,包括:儲存複數個權重資料於該記憶體裝置的複數個第一記憶體晶胞;從複數條第一串選擇線輸入複數個輸入資料;根據
該些權重資料與該些輸入資料,該些第一記憶體晶胞產生複數個記憶體晶胞電流;該些記憶體晶胞電流加總於耦接至該些第一串選擇線的複數條位元線以得到複數個加總電流;將該些加總電流轉換成複數個類比數位轉換結果;以及累積該些類比數位轉換結果,以得到一運算結果。
根據本發明之一方面,提出一種記憶體裝置,包括:複數個第一記憶體晶胞,儲存複數個權重資料;複數條第一串選擇線,耦接至該些第一記憶體晶胞;複數條位元線,耦接至該些第一串選擇線;複數個轉換器,耦接至該些位元線;以及一累積器,耦接至該些轉換器。從該些串第一選擇線輸入複數個輸入資料。根據該些權重資料與該些輸入資料,該些第一記憶體晶胞產生複數個記憶體晶胞電流。該些記憶體晶胞電流加總於該些位元線以得到複數個加總電流。該些轉換器將該些加總電流轉換成複數個類比數位轉換結果。該累積器累積該些類比數位轉換結果,以得到一運算結果。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式詳細說明如下:
100:記憶體裝置
110:記憶體陣列
120:轉換電路
130:累積器
C:記憶體晶胞
WL0-WLM、WL95:字元線
SSL0-SSL(N+P):串選擇線
CB:補償偏壓
ADC:類比數位轉換器
210-250:步驟
310-360:步驟
402-446:步驟
GSL:整體源極線
CSL:共同源極線
BL0-BLN:位元線
710-713:平面
810-840:步驟
910-913:平面
第1圖顯示根據本案一實施例的記憶體裝置的示意圖。
第2圖顯示根據本案一實施例的記憶體裝置的運算流程。
第3圖顯示根據本案另一實施例的記憶體裝置的運算流程。
第4A圖與第4B圖顯示根據本案一實施例的MAC運算示意圖。
第5圖顯示根據本案一實施例的記憶體裝置的MAC操作示意圖。
第6A圖至第6D圖顯示根據本案一實施例的記憶體裝置進行MAC操作。
第7圖顯示根據本案一實施例的記憶體裝置於進行MAC操作時的地板平面(floor plane)。
第8A圖與第8B圖顯示根據本案一實施例的記憶體裝置於進行MAC操作時的電路設計與邏輯設計。
第9A圖至第9E圖顯示根據本案另一實施例的記憶體裝置的MAC運算示意圖。
第10圖顯示根據本案一實施例的第9A圖至第9E圖的記憶體裝置於進行MAC操作時的地板平面。
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者選擇性地將這些實施例中部分或全部的技術特徵加以組合。
第1圖顯示根據本案一實施例的記憶體裝置的示意圖。如第1圖所示,根據本案一實施例的記憶體裝置100至少包括:記憶體陣列110、轉換電路120與累積器130。記憶體陣列
110耦接至轉換電路120。轉換電路120耦接至累積器130。
記憶體陣列110包括複數個記憶體晶胞。該些記憶體晶胞C位於字元線WL0-WLM(M為正整數)與串選擇線SSL0-SSLN(N為正整數)的交叉處。此外,為了進行補償在類比運算過程中可能發生的雜訊,補償偏壓(compensate bias)b0-bn儲存在耦接至串選擇線SSL(N+1)與SSL(N+P)(P為正整數)的該些記憶體晶胞內。補償偏壓b0-bn具有多準位(multi-level)。在本案一實施例中,存放補償偏壓b0-bn的該些記憶體晶胞可以不同於接收輸入資料的該些記憶體晶胞。例如,在一可能例中,接收輸入資料的該些記憶體晶胞可以是單準位晶胞(single level cell,SLC),而存放補償偏壓b0-bn的該些該些記憶體晶胞可以是多準位晶胞(multi-level cell,MLC)。或者,在另一可能例中,接收輸入資料的該些記憶體晶胞可以是單準位晶胞(single level cell,SLC),而存放補償偏壓b0-bn的該些記憶體晶胞也可以是單準位晶胞(single level cell,SLC),但是組合多個單準位晶胞來存放補償偏壓b0-bn之任一者。於進行MAC運算時,該些記憶體晶胞C被寫入權重,而輸入資料則是透過串選擇線SSL0-SSLN而輸入至該些記憶體晶胞C。在進行MAC運算時,以字元線WL0為例,位於字元線WL0上的第一橫列記憶體晶胞C會透過串選擇線SSL0-SSLN而接收輸入資料(亦即,權重相乘於輸入資料)。根據輸入資料與記憶體晶胞C所儲存的權重,該些記憶體晶胞C會產生(類比)記憶體晶胞電流,該些記憶體晶胞電
流在位元線上被加總成加總電流ISUM。該些加總電流ISUM輸入至轉換電路120。
轉換電路120包括複數個類比數位轉換器ADC。該些類比數位轉換器ADC將該些電流ISUM進行類比數位轉換。
累積器130接收並累加由轉換電路120的該些類比數位轉換器ADC所產生的複數個類比數位轉換結果,以得到數位輸出結果OUT。其中,數位輸出結果OUT即為該些輸入資料與該些權重資料的MAC運算結果。累積器130可以例如是藉由使用一晶片、晶片內的一電路區塊、一韌體電路、含有數個電子元件及導線的電路板。進一步地,前述主要描述了本案實施例中提供的解決方案。可以理解,在實現前述功能時,累積器130包括執行功能的相應硬件結構和/或軟件模組。本領域具有通常知識者應該很容易意識到,結合本案所述實施例中描述的單元和演算法步驟,本案實施例可以以硬體形式或將硬體與電腦軟體結合的形式來實現。一個功能是由硬體執行還是由電腦軟體驅動的硬體執行取決於特定的應用和技術解決方案的設計限制。本領域具有通常知識者可以使用不同的方法來為每個特定的應用實現所述的功能,但應該認知道,該些實現皆在本案範圍內。
在本案一個實施例中,累積器130可以根據前述方法示例被劃分為功能模組。例如,每個功能模組可以通過根據每個相應功能進行劃分而獲得,或者兩個或兩個以上的功能可以整合到一個處理模組中。整合模組可以以硬體形式實現,也可以以
軟體功能模組的形式實現。值得注意的是,在本案實施例中,將模組劃分是一個示例,僅僅是邏輯功能劃分。在實際實施過程中,可能會使用其他劃分方式。
第2圖顯示根據本案一實施例的記憶體裝置的運算流程。於步驟210中,將輸入資料輸入至暫存器(未示出)以控制串選擇線開關。
於步驟220中,導通耦接至同一條位元線的多條串選擇線,以將該些串選擇線的電流加總。
於步驟230中,將所加總的電流進行類比數位轉換。步驟210-230係在記憶體陣列內進行。
於步驟240中,將所得到的類比數位轉換結果送回至SSD(固態硬碟)驅動電路。步驟240係由記憶體裝置的有限狀態機(finite state machinc,FSM)進行。
於步驟250中,將所接收到的類比數位轉換結果由SSD(固態硬碟)驅動電路進行累積,以得到MAC運算結果。步驟250係由SSD(固態硬碟)驅動電路進行。
第3圖顯示根據本案另一實施例的記憶體裝置的運算流程。於步驟310中,將輸入資料輸入至暫存器(未示出)以控制串選擇線開關。
於步驟320中,導通耦接至同一條位元線的多條串選擇線,以將該些串選擇線的電流加總。
於步驟330中,將所加總的電流進行類比數位轉換。
步驟310-330係在記憶體陣列內進行。
於步驟340中,根據記憶體裝置FSM的反相表(inverter table)與移位相加(shift-and-add),觸發部份結果反相(partial result inversion)。
於步驟350中,將偏壓加至MAC運算結果。
於步驟360中,由記憶體裝置的FSM將MAC運算結果送至SSD驅動電路。步驟340-360係由記憶體裝置的有限狀態機進行。
第4A圖與第4B圖顯示根據本案一實施例的MAC運算示意圖。如第4A圖與第4B圖所示,於根據本案一實施例的MAC運算中,對於權重資料(例如但不受限於,原本為8位元)可以進行量化步驟402以得到較少位元的權重資料(例如但不受限於,為4位元)。於步驟404中,將量化後權重資料寫入至記憶體裝置。於本案一實施例中,對於權重資料預處理(量化步驟402)可以是離線(offline)處理之。
對於輸入資料(例如但不受限於,原本為8位元)可以進行量化步驟412以得到較少位元的輸入資料(例如但不受限於,為4位元)。於步驟414中,將量化後輸入資料饋入至記憶體裝置(例如但不受限於透過串選擇線SSL來輸入至記憶體裝置)。於本案一實施例中,對於輸入資料預處理(量化步驟412)則是線上(online)處理之。
於步驟420中,對於該些(量化後)權重資料與該些
(量化後)輸入資料可以進行1位元輸入資料-1位元權重資料的向量向量乘法(VVM,vector-vector-multiplication)。
步驟420的細節如下。在此以權重與輸入資料有128維度為例做說明。於第0維度D<0>下,權重資料w0=w0(3),w0(2),w0(1),w0(0);輸入資料x0=x0(3),x0(2),x0(1),x0(0)。其餘可以依此類推。所以,權重資料與輸入資料的相乘w0*x0可表示為:w0*x0=(w0(3),w0(2),w0(1),w0(0))*(x0(3),x0(2),x0(1),x0(0))=x0(3)w0(3)+x0(3)w0(2)+x0(3)w0(1)+x0(3)w0(0)+x0(2)w0(3)+x0(2)w0(2)+x0(2)w0(1)+x0(2)w0(0)+x0(1)w0(3)+x0(1)w0(2)+x0(1)w0(1)+x0(1)w0(0)+x0(0)w0(3)+x0(0)w0(2)+x0(0)w0(1)+x0(0)w0(0)。其餘維度的相乘可依此類推。在第4A圖與第4B圖中,代表x 0(3) w 0(2)的反相。XD(i)代表輸入資料X的第D維度(D為正整數)的第i個位元(i為正整數)。WD(j)代表權重資料W的第D維度的第j個位元(j為正整數)。
於步驟422中,對於VVM結果進行類比數位轉換。步驟422即第2圖的步驟230與第3圖的步驟330。在此,ADC轉換例如但不受限於,將權重Wj與輸入資料Xi進行MAC可如運算式所表示:
在上式中,以權重與輸入資料有128維度為例做說明,但當初本案並不受限於此。
對於MAC結果C的量化結果Q(C)則可表示如下:
其中,LV代表位階(level),而th則代表臨界值。亦即,如果MAC結果C小於臨界值th 0的話,則Q(C)=0,其餘可依此類推。
於本案一實施例中,對於步驟422的結果,可以由FSM進行後續操作(步驟432-438),或者由SSD驅動電路進行後續操作(步驟442-446)。
於步驟432中,進行數位移位與相加。
於步驟434中,對於步驟432的相加結果進行轉換成2的補數。
於步驟436中,完成VVM操作。
於步驟438中,將VVM結果送回至SSD驅動電路。步驟432-438即為由FSM所完成。或者說,步驟432-438即可等同於步驟340-360。
步驟442中,將所得到的類比數位轉換結果送回至SSD(固態硬碟)驅動電路。
步驟444中,進行數位移位與相加,以及,對於相加結果進行轉換成2的補數。
步驟446中,完成VVM操作。
步驟442-446即為由SSD驅動電路所完成。或者說,步驟442-446即可等同於步驟240-250。
第5圖顯示根據本案一實施例的記憶體裝置的MAC操作示意圖。於本案一實施例中,權重w0(0)、w1(0)...、w127(0)存在字元線WL95上的該些記憶體晶胞內。相似地,權重w0(1)、w1(1)...、w127(1)存在字元線WL94(未示出)上的該些記憶體晶胞內。權重“wi(j)”代表第i個(2i)位階與第j個維度的權重。另外,輸入資料x0(0)、x1(0)...、x127(0)則是透過串選擇線SSL0-SSL127而輸入至該些記憶體晶胞。同理,在下一個周期時,輸入資料x0(1)、x1(1)...、x127(1)則是透過串選擇線SSL0-SSL127而輸入至該些記憶體晶胞。輸入資料“xi(j)”代表第i個(2i)位階與第j個維度的輸入資料。於第5圖中,GSL代表整體源極線(global source line),而CSL代表共同源極線(common source line)。輸入資料x0(0)、x1(0)...、x127(0)亦可稱為輸入資料的一第一部份輸入資料,而輸入資料x0(1)、x1(1)...、x127(1)亦可稱為輸入資料的一第二部份輸入資料,其餘可依此類推。
於第5圖中,可以看出,由該些記憶體晶胞所輸出的晶胞電流於位元線(如BL0)上加總成為加總電流(如第1圖的ISUM)而輸入至ADC。
第6A圖至第6D圖顯示根據本案一實施例的記憶體裝置進行MAC操作。於本案一實施例中,在多個周期內來完成
一個MAC操作。在此以4個周期完成一個MAC操作為例做說明,但當知本案並不受限於此。於第6A圖至第6D圖中,CB代表補償偏壓。
於第6A圖中,於進行MAC操作時,在第0周期,輸入資料x(0)(x(0)=x0(0),x1(0),…,x127(0))係透過串選擇線SSL0-SSL127而輸入至該些記憶體晶胞。故而,透過位元線BL0-BLN與ADC,可以得到w0*x0,...、w0*x0,w1*x0,...、w1*x0,w2*x0,...、w2*x0,w3*x0,...、w3*x0。其中,w0*x0=w0(0)*x0(0)+w1(0)*x1(0)+...+w127(0)*x127(0),其餘可依此類推。
於第6B圖中,於進行MAC操作時,在第1周期,輸入資料x(1)(x(1)=x0(1),x1(1),…,x127(1))係透過串選擇線SSL0-SSL127而輸入至該些記憶體晶胞。故而,透過位元線BL0-BLN與ADC,可以得到w0*x1,...、w0*x1,w1*x1,...、w1*x1,w2*x1,...、w2*x1,w3*x1,...、w3*x1。其中,w0*x1=w0(0)*x0(1)+w1(0)*x1(1)+...+w127(0)*x127(1),其餘可依此類推。
於第6C圖中,於進行MAC操作時,在第2周期,輸入資料x(2)(x(2)=x0(2),x1(2),…,x127(2))係透過串選擇線SSL0-SSL127而輸入至該些記憶體晶胞。故而,透過位元線BL0-BLN與ADC,可以得到w0*x2,...、w0*x2,w1*x2,...、w1*x2,w2*x2,...、w2*x2,w3*x2,...、w3*x2。其中,
w0*x2=w0(0)*x0(2)+w1(0)*x1(2)+...+w127(0)*x127(2),其餘可依此類推。
於第6D圖中,於進行MAC操作時,在第3周期,輸入資料x(3)(x(3)=x0(3),x1(3),…,x127(3))係透過串選擇線SSL0-SSL127而輸入至該些記憶體晶胞。故而,透過位元線BL0-BLN與ADC,可以得到w0*x3,...、w0*x3,w1*x3,...、w1*x3,w2*x3,...、w2*x3,w3*x3,...、w3*x3。其中,w0*x3=w0(0)*x0(3)+w1(0)*x1(3)+...+w127(0)*x127(3),其餘可依此類推。
故而,於4個周期後,透過上述方式可以完成1個MAC操作,其中,由累積器130所輸出的累積結果即為w0(0)*x0(0)+w0(1)*x0(0)+...w127(3)*x127(3)的乘積累加結果。
第7圖顯示根據本案一實施例的記憶體裝置於進行MAC操作時的地板平面(floor plane)。如第7圖所示,在此以將記憶體陣列110虛擬分為多個平面710、711、712與713為例做說明,但當知本案並不受限於此。至於平面710、711、712或713則可如第6A圖至第6D圖的電路圖所示。亦即,第6A圖至第6D圖中的電路圖可視為顯示平面710(或711或712或713)。
為方便解釋,在進行權重資料與輸入資料的MAC操作時,Gw(0)=w0(0),w1(0),...w127(0);Gx(0)=x0(0),x1(0),...x127(0),其餘可依此類推。
故而,如第7圖所示,在第0周期時,平面710進行Gw(3:0)*Gx(0)的運算,在第1周期時,平面710進行Gw(3:0)*Gx(1)的運算,在第2周期時,平面710進行Gw(3:0)*Gx(2)的運算,在第3周期時,平面710進行Gw(3:0)*Gx(3)的運算,其中,Gw(3:0)=Gw(0),Gw(1),Gw(2),Gw(3)。
第8A圖與第8B圖顯示根據本案一實施例的記憶體裝置於進行MAC操作時的電路設計與邏輯設計。於本案一實施例中,串選擇線的最大數量決定了輸入資料的最大維度,以及,位元線的數量決定了權重資料的最大數量。各平面710至平面713皆輸出部份MAC乘積。
於第8A圖與第8B圖中,於步驟810中,可以在平面中計算。步驟810所得到亦可稱為部份MAC乘積。
於步驟820中,將部份MAC乘積反相(← Gw (i) Gx (j) ),並累加多個部份MAC乘積。
於步驟830中,加入補償偏壓(至串選擇線)以得到MAC結果。
於步驟840中,將所得到的結果存至暫存器中。
於第8A圖與第8B圖中,權重累積(ACC)控制可用於送出控制信號至各功能方塊。
第9A圖至第9E圖顯示根據本案另一實施例的記憶
體裝置的MAC運算示意圖。在第6A圖至第6D圖中,乃是以一個平面來在多個周期完成MAC運算。相反地,在第9A圖至第9E圖中,則是以多個平面(例如但不受限於,4個平面)來在同一個周期內完成MAC運算。如第9A圖至第9E圖所示,平面910用於在同一個周期(例如但不受限於,周期0)內完成計算Gx(0)*W(0)、Gx(0)*W(1)、Gx(0)*W(2)、Gx(0)*W(3);平面911用於在同一個周期(例如但不受限於,周期0)內完成計算Gx(1)*W(0)、Gx(1)*W(1)、Gx(1)*W(2)、Gx(1)*W(3);平面912用於在同一個周期(例如但不受限於,周期0)內完成計算Gx(2)*W(0)、Gx(2)*W(1)、Gx(2)*W(2)、Gx(2)*W(3);以及,平面913用於在同一個周期(例如但不受限於,周期0)內完成計算Gx(3)*W(0)、Gx(3)*W(1)、Gx(3)*W(2)、Gx(3)*W(3)。
第10圖顯示根據本案一實施例的第9A圖至第9E圖的記憶體裝置於進行MAC操作時的地板平面。如第10圖所示,在此以將記憶體陣列110虛擬分為多個平面910、911、912與913為例做說明,但當知本案並不受限於此。至於平面910、911、912或913則可如第9A圖至第9E圖的電路圖所示。
為方便解釋,在進行權重資料與輸入資料的MAC操作時,Gw(0)=w0(0),w1(0),...w127(0);Gx(0)=x0(0),x1(0),...x127(0),其餘可依此類推。
故而,如第10圖所示,在同一個周期內,平面910進行Gw(3:0)*Gx(0)的運算,平面911進行Gw(3:0)*Gx(1)的
運算,平面912進行Gw(3:0)*Gx(2)的運算,平面913進行Gw(3:0)*Gx(3)的運算,其中,Gw(3:0)=Gw(0),Gw(1),Gw(2),Gw(3)。
亦即,在第10圖中,把輸入資料送至4個平面的串選擇線以在同一個周期內平行產生多個部份MAC運算結果,並由累積器130來累積該些部份MAC運算結果。
在本案上述實施例中,將輸入資料透過串選擇線平行輸入至記憶體陣列,可以得到高計算效能。例如,以128個維度,輸入資料與權重資料皆為4位元為例,如果平面大小為16KB,而平面數量為4,MAC速度約為40μs,功率消耗為200mW,則本案一實施例的MAC的每秒一兆次操作(Tera Operations Per Second,TOPS)為524,288/16/40us/200mW*2*128=1TOPS/W。故而,本案一實施例的記憶體裝置具有高算力。
本案一實施例的記憶體裝置與其運算方法利用記憶體裝置來達成類比式MAC操作,與傳統的數位式MAC操作相比,本案一實施例的記憶體裝置與其運算方法具有更寬的計算頻寬和更低的耗能。
本案一實施例的記憶體裝置與其運算方法有關於具有儲存平面的類比MAC操作的輸入資料與權重資料映射機制(如第6A圖至第6D圖,或者第9A圖至第9E圖),並結合ADC和累積器。
本案一實施例的記憶體裝置與其運算方法並不受限
於4位元128維資料向量或矩陣,還包括其他各種VVM/MAC操作的資料格式。
本案一實施例的記憶體裝置與其運算方法不僅可應用於3D記憶體結構,也可應用於2D記憶體結構;例如,2D/3D NAND快閃記憶體記憶體,2D/3D相變記憶體(Phase Change Memory,PCM),2D/3D電阻式記憶體(Resistive Random Access Memory,RRAM),2D/3D磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等。
本案一實施例的記憶體裝置與其運算方法不僅可應用於非揮發性記憶體,也可應用於揮發性記憶體。
本案一實施例的記憶體裝置與其運算方法可以通過利用多個記憶平面的串選擇線來最大化輸入向量的計算吞吐量。
本案一實施例的記憶體裝置與其運算方法可應用的環境包括,例如但不受限於,具有數據映射的模擬VVM、啟動串選擇線以在單條位元線上將類比電流總和、以及,基於頁緩衝器式的類比數位轉換器(page buffer-based ADC)與累積器。
於本案一實施例的記憶體裝置與其運算方法中,任何的多位元輸入多位元權重的VVM都可以分解為多位元乘以多位元的1位元輸入-1位元權重的VVM。
本案一實施例的記憶體裝置與其運算方法可應用於邊緣人工智慧應用中,包括電腦視覺處理和信號處理。在這些情景中,大多數記憶體裝置利用記憶體內計算(in-memory
computing)。本案一實施例的記憶體裝置與其運算方法可應用於,例如但不受限於,具有VVM/MAC計算的人工智慧全連接層(AI fully connection layer)。另外,本案一實施例的記憶體裝置與其運算方法也可應用於,例如但不受限於,使用通用矩陣乘法(GEMM,General Matrix Multiplication)的數位信號處理或影像處理中。
雖然本案可能描述了許多具體細節,但這些不應被理解為對所申請發明的範疇限制,而應被視為對特定實施方式的特性的描述。在本案說明中,在單一實施例的上下文中描述的某些特性也可以在單一實施例中以組合方式實施。相反地,也可以將在單一實施例的上下文中描述的各種特性在多個實施例中單獨或任何適當子組合中實施。此外,雖然可能最初會將特性描述為在某些組合中起作用,甚至最初會將其說明為這樣的組合,但在某些情況下,可以從該組合中刪除一個或多個特性,而所說明的組合可能會針對一個子組合或子組合的變化。同樣地,雖然在圖示中將操作描繪為以特定順序進行,但這並不應被理解為要求這些操作必須按照顯示的特定順序或順序進行,或者必須執行所有描繪的操作,以實現期望的結果。
雖然本案上述實施例只揭示了一些例子和實現方式。根據所揭示的內容,可以對所述的例子和實現方式以及其他實現方式進行變更、修改和增強。
綜上所述,雖然本發明已以實施例揭露如上,然其
並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:記憶體裝置
110:記憶體陣列
120:轉換電路
130:累積器
C:記憶體晶胞
WL0-WLM:字元線
SSL0-SSL(N+P):串選擇線
CB:補償偏壓
ADC:類比數位轉換器
Claims (10)
- 一種記憶體裝置的運算方法,包括: 儲存複數個權重資料於該記憶體裝置的複數個第一記憶體晶胞與儲存複數個補償偏壓於複數個第二記憶體晶胞; 從複數條第一串選擇線輸入複數個輸入資料; 根據該些權重資料、該些補償偏壓與該些輸入資料,該些第一記憶體晶胞與該些第二記憶體晶胞產生複數個記憶體晶胞電流; 該些記憶體晶胞電流加總於耦接至該些第一串選擇線的複數條位元線以得到複數個加總電流; 將該些加總電流轉換成複數個類比數位轉換結果;以及 累積該些類比數位轉換結果,以得到一運算結果。
- 如請求項1所述之記憶體裝置的運算方法,其中, 該些複數個補償偏壓具有多準位, 該些第一記憶體晶胞與該些第二記憶體晶胞為複數個單準位晶胞,組合多個該第二記憶體晶胞以存放該些補償偏壓之任一者,或者,該些第一記憶體晶胞為複數個單準位晶胞而該些第二記憶體晶胞為複數個多準位晶胞。
- 如請求項1所述之記憶體裝置的運算方法,其中, 該記憶體裝置包括至少一記憶平面, 於複數個周期內,該記憶平面分別接受該些輸入資料的複數個部份輸入資料,以得到該運算結果。
- 如請求項1所述之記憶體裝置的運算方法,其中, 該記憶體裝置包括複數個記憶平面, 於同一個周期內,該些記憶平面分別接受該些輸入資料的複數個部份輸入資料,以得到該運算結果。
- 如請求項1所述之記憶體裝置的運算方法,其中, 以離線來預處理該些權重資料,對該些權重資料進行量化;以及 以線上來預處理該些輸入資料,對該些輸入資料進行量化。
- 一種記憶體裝置,包括: 複數個第一記憶體晶胞,儲存複數個權重資料; 複數個第二記憶體晶胞,儲存複數個補償偏壓; 複數條第一串選擇線,耦接至該些第一記憶體晶胞; 複數條位元線,耦接至該些第一串選擇線; 複數個轉換器,耦接至該些位元線;以及 一累積器,耦接至該些轉換器, 其中, 從該些第一串選擇線輸入複數個輸入資料; 根據該些權重資料、該些補償偏壓與該些輸入資料,該些第一記憶體晶胞與該些第二記憶體晶胞產生複數個記憶體晶胞電流; 該些記憶體晶胞電流加總於該些位元線以得到複數個加總電流; 該些轉換器將該些加總電流轉換成複數個類比數位轉換結果;以及 該累積器累積該些類比數位轉換結果,以得到一運算結果。
- 如請求項6所述之記憶體裝置,其中, 該些複數個補償偏壓具有多準位, 該些第一記憶體晶胞與該些第二記憶體晶胞為複數個單準位晶胞,組合多個該第二記憶體晶胞以存放該些補償偏壓之任一者,或者,該些第一記憶體晶胞為複數個單準位晶胞而該些第二記憶體晶胞為複數個多準位晶胞。
- 如請求項6所述之記憶體裝置,其中, 該記憶體裝置包括至少一記憶平面, 於複數個周期內,該記憶平面分別接受該些輸入資料的複數個部份輸入資料,以得到該運算結果。
- 如請求項6所述之記憶體裝置,其中, 該記憶體裝置包括複數個記憶平面, 於同一個周期內,該些記憶平面分別接受該些輸入資料的複數個部份輸入資料,以得到該運算結果。
- 如請求項6所述之記憶體裝置,其中, 以離線來預處理該些權重資料,對該些權重資料進行量化;以及 以線上來預處理該些輸入資料,對該些輸入資料進行量化。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202363548542P | 2023-11-14 | 2023-11-14 | |
| US63/548,542 | 2023-11-14 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202520265A TW202520265A (zh) | 2025-05-16 |
| TWI894925B true TWI894925B (zh) | 2025-08-21 |
Family
ID=95657554
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113114917A TWI894925B (zh) | 2023-11-14 | 2024-04-22 | 記憶體裝置及其運算方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20250157508A1 (zh) |
| CN (1) | CN120015073A (zh) |
| TW (1) | TWI894925B (zh) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9728267B2 (en) * | 2012-04-17 | 2017-08-08 | Micron Technology, Inc. | Memory devices configured to apply different weights to different strings of memory cells coupled to a data line and methods |
-
2024
- 2024-04-22 TW TW113114917A patent/TWI894925B/zh active
- 2024-04-22 US US18/641,578 patent/US20250157508A1/en active Pending
- 2024-05-15 CN CN202410605106.8A patent/CN120015073A/zh active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9728267B2 (en) * | 2012-04-17 | 2017-08-08 | Micron Technology, Inc. | Memory devices configured to apply different weights to different strings of memory cells coupled to a data line and methods |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202520265A (zh) | 2025-05-16 |
| US20250157508A1 (en) | 2025-05-15 |
| CN120015073A (zh) | 2025-05-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Deng et al. | Lacc: Exploiting lookup table-based fast and accurate vector multiplication in dram-based cnn accelerator | |
| Sridharan et al. | X-former: In-memory acceleration of transformers | |
| US10241971B2 (en) | Hierarchical computations on sparse matrix rows via a memristor array | |
| US12056599B2 (en) | Methods of performing processing-in-memory operations, and related devices and systems | |
| US10496855B2 (en) | Analog sub-matrix computing from input matrixes | |
| EP3789925A1 (en) | Non-volatile memory die with deep learning neural network | |
| CN114816326B (zh) | 存储器内运算器及存储器内运算方法 | |
| US11663471B2 (en) | Compute-in-memory deep neural network inference engine using low-rank approximation technique | |
| US20220188604A1 (en) | Method and Apparatus for Performing a Neural Network Operation | |
| Roohi et al. | Processing-in-memory acceleration of convolutional neural networks for energy-effciency, and power-intermittency resilience | |
| Tsai et al. | RePIM: Joint exploitation of activation and weight repetitions for in-ReRAM DNN acceleration | |
| CN112561049A (zh) | 一种基于忆阻器的dnn加速器的资源分配方法及装置 | |
| Liu et al. | Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity | |
| CN114281301A (zh) | 支持内部数据乒乓的高密度存内计算乘加单元电路 | |
| TWI894925B (zh) | 記憶體裝置及其運算方法 | |
| Liu et al. | IM3A: Boosting Deep Neural Network Efficiency via I n-M emory A ddressing-A ssisted A cceleration | |
| CN119831067B (zh) | 利用张量积中稀疏性的量子错误缓解加速方法和加速器 | |
| Zhao et al. | RACE-IT: A reconfigurable analog CAM-crossbar engine for in-memory transformer acceleration | |
| US12373131B2 (en) | Data sequencing circuit and method | |
| US20250181495A1 (en) | Memory die with on-chip binary vector database search | |
| CN117521734A (zh) | 一种用于实现高能效乘法运算的存内计算电路 | |
| CN112949834B (zh) | 一种概率计算脉冲式神经网络计算单元和架构 | |
| Park et al. | Input/mapping precision controllable digital CIM with adaptive adder tree architecture for flexible DNN inference | |
| US12032959B2 (en) | Non-volatile memory die with latch-based multiply-accumulate components | |
| US20250028635A1 (en) | Look-up table-based in-memory computing system |