TWI806641B - 記憶體裝置及其操作方法 - Google Patents

記憶體裝置及其操作方法 Download PDF

Info

Publication number
TWI806641B
TWI806641B TW111120622A TW111120622A TWI806641B TW I806641 B TWI806641 B TW I806641B TW 111120622 A TW111120622 A TW 111120622A TW 111120622 A TW111120622 A TW 111120622A TW I806641 B TWI806641 B TW I806641B
Authority
TW
Taiwan
Prior art keywords
vector
bit
data
msb
memory
Prior art date
Application number
TW111120622A
Other languages
English (en)
Other versions
TW202329122A (zh
Inventor
王韋程
胡瀚文
李永駿
王淮慕
何建忠
張原豪
郭大維
Original Assignee
旺宏電子股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 旺宏電子股份有限公司 filed Critical 旺宏電子股份有限公司
Application granted granted Critical
Publication of TWI806641B publication Critical patent/TWI806641B/zh
Publication of TW202329122A publication Critical patent/TW202329122A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Electrotherapy Devices (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Dram (AREA)
  • Complex Calculations (AREA)

Abstract

係揭示一種記憶體裝置,包括記憶體陣列,用於儲存多個向量資料。各向量資料具有高有效位元(MSB)向量與低有效位元(LSB)向量。記憶體陣列包括多個記憶單元,各記憶單元具有第一位元及第二位元。第一位元用於儲存各向量資料的MSB向量,第二位元用於儲存各向量資料的LSB向量。各向量資料執行乘積運算,各向量資料的MSB向量執行第一分群計數操作,各向量資料的LSB向量執行第二分群計數操作。各記憶單元的臨界電壓分布區分為N個狀態,N為正整數且N小於2的2次方,各記憶單元儲存的等效位元數小於2。

Description

記憶體裝置及其操作方法
本揭示係關於一種半導體裝置及其操作方法,特別有關於一種記憶體裝置及記憶體內運算的方法。
人工智慧的演算法迅速發展,研發人員尋求適於執行人工智慧的演算法的硬體裝置。半導體的記憶體裝置,例如NAND型的記憶體陣列,可藉由記憶體內運算(in-memory computing,IMC)以執行人工智慧的運算。當執行人工智慧常用的乘積累加(Multiply-and-Accumulate,MAC)運算時,記憶體陣列的每個記憶單元可根據乘積運算結果輸出電流至位元線,並在同一條位元線上累加電流而得到累加運算結果。
在記憶體陣列中,以類比方式執行MAC運算可達到較快的運算速度。然而,電流分布的重疊(overlap)可能導致運算結果的誤判,而降低運算精確度。
並且,當運算資料的位元數較多時,對於各位元逐一進行累加運算將耗費較多的運算資源及運算時間。而執行多次的位元線 設定(bit line setup)亦將耗費多次的設定時間(setup time)而降低運算速度。
此外,當記憶體陣列採用多階記憶單元(multi-level cell,MLC)(或稱為「二階記憶單元」)儲存資料時,記憶單元的臨界電壓分布具有較多數量的狀態,將導致讀取電壓的電壓間隔縮小,可能造成讀取操作的錯誤。
有鑑於上述技術間題,本技術領域之相關產業之技術人員係致力於改良記憶體單元的儲存機制及IMC運算的操作方法,以提升運算精準度及運算速度。
本揭示之技術方案係提供以記憶體陣列執行數位方式的MAC運算、減少記憶單元的臨界電壓分布的狀態的數量、並且採用管線式運算排程及多數決分群計數,以提升運算精準度及運算速度。
根據本揭示之一方面,提供一種記憶體裝置,包括記憶體陣列,用於儲存多個向量資料。各向量資料具有高有效位元(MSB)向量與低有效位元(LSB)向量。記憶體陣列包括多個記憶單元,各記憶單元具有第一位元及第二位元。第一位元用於儲存各向量資料的MSB向量,第二位元用於儲存各向量資料的LSB向量。各向量資料執行乘積運算,各向量資料的MSB向量執行第一分群計數操作,各向量資料的LSB向量執行第二分群計數操作。各記憶單元的臨界電壓分布區分為N個狀態,N為正整數且N小於2的2次方,各記憶單元儲存的等效位元數小於2。
根據本揭示之另一方面,提供一種記憶體裝置的操作方法,其中記憶體裝置包括記憶體陣列,記憶體陣列包括複數個記憶單元,各記憶單元具有第一位元及第二位元,操作方法包括以下步驟。儲存複數個向量資料於記憶體陣列,各向量資料具有高有效位元(MSB)向量與低有效位元(LSB)向量。儲存各向量資料的MSB向量於第一位元。儲存各向量資料的LSB向量於第二位元。根據各向量資料執行一乘積運算。根據各向量資料的MSB向量執行第一分群計數操作。根據各向量資料的LSB向量執行第二分群計數操作。各記憶單元的臨界電壓分布區分為N個狀態,N為正整數且N小於2的2次方,各記憶單元儲存的等效位元數小於2。
透過閱讀以下圖式、詳細說明以及申請專利範圍,可見本揭示之其他方面以及優點。
1000:記憶體裝置
100:記憶體陣列
210:第一資料鎖存器
220:第二資料鎖存器
230:共同資料鎖存器
WL1~WLN:字元線
p0,q1’,q1~qN:特徵向量
S1~S3,S1’~S4’:狀態
VR1~VR3:讀取電壓
VPass:通過電壓
Vt:臨界電壓
W1~W3:電壓間隔
W1’~W4’:電壓間隔
302:MSB向量
304:LSB向量
B0~B7:位元
310~340:第一分群計數操作
510:第二分群計數操作
G-M1~G-M8:群組
B70~B77,B60~B63,B50~B51,B4:位元
400:計數電路
410~440:邏輯電路
450:累加器
460:頁面緩衝器
MGC,MGC1~MGC4:多數決分群計數結果
412,414:多數決處理電路
416:多數決答案轉換電路
412a,412b,412c:NOR閘
414a,414b,414c:NAND閘
416a:XNOR閘
416b:AND閘
MAC-1,MAC-2,MAC-A,MAC-B:MAC運算
T1~T7:時段
S102~S110:步驟
S202~S210:步驟
第1A圖為本揭示一實施例的記憶體裝置的示意圖。
第1B圖為本揭示的記憶體裝置執行的MAC運算的流程圖。
第1C圖為常規的2位元MLC的臨界電壓分布的狀態的示意圖。
第1D圖為本揭示一實施例的1.5位元MLC的臨界電壓分布的狀態的示意圖。
第2A~2E圖為本揭示的記憶體裝置執行的計數操作之不同實施例的示意圖。
第3圖為本揭示的記憶體裝置執行的分群計數操作之一實施例的示意圖。
第4A圖為本揭示的計數電路的電路圖。
第4B圖為本揭示的邏輯電路的電路圖。
第5圖為本揭示的記憶體裝置執行的分群計數操作之另一實施例的示意圖。
第6圖為記憶體裝置執行的MAC運算之另一實施例的流程圖。
第7A圖為記憶體裝置執行的乘積累加運算之一實施例的排程圖,相較於第一個比較例的乘積累加運算。
第7B圖為記憶體裝置執行的乘積累加運算之一實施例的排程圖,相較於第二個比較例的乘積累加運算。
第7C圖為記憶體裝置執行的乘積累加運算之另一實施例的排程圖,相較於第一個比較例的乘積累加運算。
第7D圖為記憶體裝置執行的乘積累加運算之另一實施例的排程圖,相較於第二個比較例的乘積累加運算。
本說明書的技術用語係參照本技術領域之習慣用語,如本說明書對部分用語有加以說明或定義,該部分用語之解釋係以本說明書之說明或定義為準。本揭露之各個實施例分別具有一或多個技術特徵。在可能實施的前提下,本技術領域具有通常知識者可選擇性地實施任一實施例中部分或全部的技術特徵,或者 選擇性地將這些實施例中部分或全部的技術特徵加以組合。
第1A圖為本揭示一實施例的記憶體裝置1000的示意圖。請參見第1A圖,記憶體裝置1000包括記憶體陣列100及複數個資料鎖存器(data latch)210、220及230。記憶體裝置1000可用於執行記憶體內運算(in-memory computation,IMC),例如執行乘積累加(multiply-and-accumulate,MAC)運算。更特定而言,本揭示的記憶體裝置1000用於執行數位的MAC運算以提升運算精準度。資料鎖存器210可稱為「第一資料鎖存器」,資料鎖存器220可稱為「第二資料鎖存器」。並且,資料鎖存器230可稱為「共同資料鎖存器(common data latch,CDL)」,可作為記憶體裝置1000的輸入/輸出介面。
記憶體陣列100包括複數條字元線WL1~WLN,此些字元線WL1~WLN的每一者可儲存一個向量(vector)資料。當記憶體裝置1000用於執行人臉辨識演算法的MAC運算時,N個人臉F1~FN的特徵向量(feature vector)q1~qN可預先儲存於記憶體陣列100的字元線WL1~WLN。例如,第1個人臉F1的特徵向量q1為20個位元的二進位(binary)資料「00110011001100001111」而儲存於字元線WL1,第2個人臉F2的特徵向量q2為20個位元的資料「11001100110000001111」而儲存於字元線WL2,依此類推。
並且,本揭示的記憶體陣列100之中的記憶單元為1.5位元之多階記憶單元(multi-level cell,MLC)。相較於常規 的2位元之MLC記憶單元(以下簡稱為「2位元MLC」),本揭示的1.5位元之MLC記憶單元(以下簡稱為「1.5位元MLC」)儲存的資料量較少,等效位元數為1.5位元。1.5位元MLC的機制將詳述於後文。
資料鎖存器230(即,共同資料鎖存器(CDL))可暫存由記憶體裝置1000外部輸入的向量資料。當執行人臉辨識或人臉搜尋時,待辨識的人臉F0的特徵向量p0可由外部輸入至記憶體裝置1000而暫存於資料鎖存器230。特徵向量p0例如為20個位元的「11111111000000001111」。而後,特徵向量p0由資料鎖存器230轉移(transfer)至資料鎖存器210。
可在記憶體陣列100中執行「選擇位元線讀取操作(selective BL read)」從字元線WL1~WLN分別讀取特徵向量q1~qN,選擇位元線讀取操作可具有乘積運算的功能。待辨識的特徵向量p0亦可稱為「輸入特徵向量p0」,預先儲存的特徵向量q1~qN亦可稱為「權重特徵向量qi」,i=1~N。選擇位元線讀取操作可達成輸入特徵向量p0與權重特徵向量qi的乘積運算。當特徵向量p0的位元與特徵向量qi的對應位元皆為「1」時,選擇位元線讀取操作可將特徵向量qi的該位元讀取為「1」。當特徵向量p0的位元為「0」或特徵向量qi的對應位元為「1」時,選擇位元線讀取操作可將特徵向量qi的該位元讀取為「0」。據此,選擇位元線讀取操作得到的輸出結果qi’=p0*qi。輸出結果qi’亦可稱為「輸出特徵向量qi’」。例如,特徵向量p0= 「11111111000000001111」,第1個人臉F1的特徵向量q1=「00110011001100001111」,選擇位元線讀取操作得到的輸出特徵向量q1’=「00110011000000001111」。而後,輸出特徵向量q1’可寫入資料鎖存器220。
而後,可對於資料鎖存器220暫存的輸出特徵向量q1’執行累加運算,以累加輸出特徵向量q1’之中的「1」的位元。在累加運算的一種示例中,記憶體裝置1000可執行錯誤位元計數指令(fail-bit-count)以對於輸出特徵向量q1’進行計數操作(counting operation)。以輸出特徵向量q1’=「00110011000000001111」為例,其中的8個位元B0~B3、B12、B13、B16、B17為「1」,輸出特徵向量q1’的計數結果C1為十進位「8」,計數結果C1即為特徵向量p0與特徵向量q1的乘積累加結果MAC1。而後,計數結果C1可轉移至資料鎖存器230,並可將計數結果C1輸出至記憶體裝置1000的外部。
在人臉辨識演算法中,預先儲存的人臉F1與待辨識的人臉F0之間的相似度可表示為特徵向量p0與特徵向量q1的內積(inner product)「∥q1∥∥p0∥cosθ」。當人臉F1與人臉F0之間的相似度越高時,角度「θ」越接近於零,特徵向量p0與特徵向量qi的內積接近於「∥q1∥∥p0∥」。因此,可根據特徵向量p0與特徵向量q1的乘積累加結果MAC1評估人臉F1與待辨識的人臉F0之間的相似度。
第1B圖為本揭示的記憶體裝置1000執行的MAC運算的流程圖。請參見第1B圖(並配合參見第1A圖的記憶體裝置1000),在步驟S102,將待辨識的人臉F0的特徵向量p0輸入或饋入(feed)至記憶體裝置1000。特徵向量p0可暫存於資料鎖存器230。
而後,在步驟S104,將特徵向量p0從資料鎖存器230(即,共同資料鎖存器(CDL))轉移至資料鎖存器210(即,第一資料鎖存器)。而後,在步驟S106,執行選擇位元線讀取操作,以從記憶體陣列100的字元線WL1~WLN中分別讀取出特徵向量q1~qN,並對其執行乘積運算。選擇位元線讀取操作得到的輸出特徵向量q1’~qN’為特徵向量q1~qN與特徵向量p0的乘積。輸出特徵向量q1’~qN’可依序暫存於資料鎖存器220。
而後,在步驟S108,分別對於資料鎖存器220依序暫存的輸出特徵向量q1’~qN’執行計數操作以得到計數結果C1。而後,在步驟S110,計數結果C1可轉移至資料鎖存器230,並可經由資料鎖存器230輸出計數結果C1。
第1C圖為常規的2位元MLC的臨界電壓分布的狀態的示意圖。第1D圖為本揭示一實施例的1.5位元MLC的臨界電壓分布的狀態的示意圖,可說明1.5位元MLC的機制。記憶體陣列100的一個實體頁面可包括多個邏輯頁面,例如高頁面(high page)及低頁面(low page)。高頁面對應至MLC記憶單元的第一位元CB1,低頁面對應至MLC記憶單元的第二位元CB2。可將 人臉的特徵向量其中每8個位元的資料區分為高有效位元(most significant bit,MSB)與低有效位元(least significant bit,LSB)的向量(vector)。
請先參見第1C圖,可將記憶單元的臨界電壓Vt編程為不同的電壓位準,根據編程後的臨界電壓Vt的分布,常規的2位元MLC可具有4個狀態S1’~S4’。其中,狀態S1’介於0v(零電位)與讀取電壓VR1之間,狀態S2’介於讀取電壓VR1與讀取電壓VR2之間,狀態S3’介於讀取電壓VR2與讀取電壓VR3之間,狀態S4’介於讀取電壓VR3與通過電壓VPass之間。常規的2位元MLC可儲存2個位元的資料(CB1,CB2)。其中,狀態S1’對應於資料(CB1=1,CB2=1),狀態S2’對應於資料(CB1=1,CB2=0),狀態S3’對應於資料(CB1=0,CB2=0),狀態S4’對應於資料(CB1=0,CB2=1)。常規的2位元MLC的狀態S1’~S4’對應的電壓間距W1’~W4’較窄,可能導致資料(CB1,CB2)的讀取錯誤,進而減損記憶體內運算(例如MAC運算)的運算精確度。
請參見第1D圖,以本揭示的1.5位元MLC而言,臨界電壓Vt的分布僅區分為3個狀態S1~S3。其中,狀態S1介於0v(零電位)與讀取電壓VR1之間,狀態S2介於讀取電壓VR1與讀取電壓VR2之間,狀態S3介於讀取電壓VR2與通過電壓VPass之間。1.5位元MLC可儲存的資料之等效位元數為1.5位元,其中,狀態S1對應於資料(CB1=1,CB2=1),狀態S2對應於資料(CB1=1,CB2=0),狀態S3對應於資料(CB1=0,CB2=0)。換言之, 1.5位元MLC不包括資料(CB1=0,CB2=1),可將常規的2位元MLC的狀態S3’與狀態S4’視為1.5位元MLC的單一個狀態S3。1.5位元MLC的狀態S1~S3對應的電壓間距W1~W3大於常規的2位元MLC的電壓間距W1’~W4’,1.5位元MLC的資料(CB1,CB2)的讀取正確率可因此提升。
表1所示為第一位元CB1與第二位元CB2的內容的一種示例,可顯示1.5位元MLC的資料(CB1,CB2)與常規的2位元MLC之區別。
Figure 111120622-A0305-02-0012-1
第2A~2E圖為本揭示的記憶體裝置1000執行的計數操作之不同實施例的示意圖。在一種示例中,當人臉F0、F1~FN的特徵具有512個參數時,特徵向量p0、特徵向量q1~qN及特 徵向量q1’~qN’的每一者具有16KB的資料量。以16KB的特徵向量q1’的計數操作為例,此計數操作其藉由第2A圖所示的全頁計數操作(full page counting)、第2B圖所示的小訊框計數操作(small frame counting)或第2C、2D、2E圖所示的分群計數操作(group counting)來實施。
如第2A圖所示,特徵向量q1’的全頁計數操作是對於特徵向量q1’全部的16KB的資料量進行計數,計算其中為「1」的位元的總數量。16KB的資料量的計數運算時間大致為550us。再者,如第2B圖所示,特徵向量q1’的小訊框計數操作是將特徵向量q1’分割為複數個小訊框而分別計數。例如,分割為8個資料量為2KB的小訊框,每個小訊框的計數運算時間大致為68us(即,550us/8)。
另一方面,如第2C圖所示,特徵向量q1’的分群計數操作是將特徵向量q1’分群(grouping)為複數個群組而分別計數。例如,特徵向量q1’分群後的每個群組具有16個位元,當單一群組的16個位元中具有任何一個「1」的位元時,分群計數結果GC=1,當16個位元中不具有「1」的位元時,分群計數結果GC=0。16個位元的分群計數運算時間大致為34us(即,550us/16)。
此外,第2D、2E圖的示例將特徵向量q1’分群為不同位元數的群組。第2D圖的示例中,特徵向量q1’的每個群組具有8個位元,分群計數運算時間大致為68us(即,550us/8)。第2E 圖的示例中,特徵向量q1’的每個群組具有4個位元,分群計數運算時間大致為136us(即,550us/4)。
第3圖為本揭示的記憶體裝置1000執行的分群計數操作之一實施例的示意圖,本實施例之分群計數操作可對應於第2E圖的4個位元的分群計數操作。請參見第3圖,可將特徵向量q1、特徵向量p0或特徵向量q1’其中每8個位元區分MSB向量與LSB向量。例如,MSB向量302具有4個位元B4、B5、B6、B7。LSB向量304具有4個位元B0、B1、B2、B3。本實施例之分群計數操作可稱為「第一分群計數操作」,可應用於資料重要性較高而儲存於記憶體陣列100的高頁面的MSB向量302(於後文中,對於LSB向量304執行的分群計數操作則稱為「第二分群計數操作」)。
可將MSB向量302的二進位格式的4個位元B4~B7進行數值展開(value unfolding)以得到一元(unary)格式的位元。其中,位元B4僅展開(重複)20次(即,1次)而保持為位元B4,位元B5展開21次而成為2個位元B50、B51。位元B6展開22次而成為4個位元B60、B61、B62、B63。位元B7展開23次而成為8個位元B70、B71、B72、B73、B74、B75、B76、B77。並且,將展開後的一元格式的位元分群為複數個群組G-M1、G-M2、G-M3,G-M4。每個群組具有4個位元。群組G-M1包括B50、B51、B4及虛設(dummy)位元「0」。群組G-M2包括B60、 B61、B62、B63。群組G-M3包括B74、B75、B76、B77。群組G-M4包括B70、B71、B72、B73
可根據第一資料量D1對於群組G-M1~G-M4分別執行第一分群計數操作310~340。MSB向量302的資料重要性較高而儲存於高頁面,因此第一分群計數操作310~340所根據的第一資料量D1為「精細切粒(fine-grained)」的較少位元數,例如,第一資料量D1為4個位元。
在本實施例中,第一分群計數操作310~340可基於多數決原則(majority function)而執行。如表2所示,當各群組G-M1~G-M4的4個位元中具有3個以上(即,佔多數)的「1」位元時,多數決分群計數結果MGC=1。當群組G-M1~G-M4各自的4個位元中具有1個以下(即,佔少數)的「1」位元時,多數決分群計數結果MGC=0。當4個位元中具有2個(即,半數)「1」位元時,理想(ideal)的多數決分群計數結果MGC=1,並且,非理想(non-ideal)的多數決分群計數結果MGC=0。多數決分群計數操作可容忍單一群組中的錯誤位元,以減低MSB向量302之中的錯誤位元的影響。
Figure 111120622-A0305-02-0015-2
Figure 111120622-A0305-02-0016-3
根據第一資料量D1=4bits得到的常規的分群計數結果GC與多數決分群計數結果MGC示於表3的真值表(truth table)。在常規的分群計數操作(不採用多數決原則)中,當單一群組的4個位元中具有任何一個「1」的位元時,分群計數結果GC=1。
Figure 111120622-A0305-02-0016-4
上述之MSB向量302的多數決分群計數操作可藉由記憶體裝置1000的計數指令而實施,亦可藉由計數電路而實施。請參見第4A圖繪示之本揭示的計數電路400的電路圖,計數電路400包括複數個邏輯電路410~440及累加器450,邏輯電路410~440每一者用於執行4個位元的多數決分群計數操作。
先將MSB向量302的二進位格式的位元B7、B6、B5、B4展開為一元格式的位元B70、B71、B72、B73、B74、B75、B76、B77、B60、B61、B62、B63、B50、B51、B4,並填補虛置 位元「0」。將上述一元格式的位元經由對應位元線的頁面緩衝器(page buffer)460傳送至邏輯電路410~440。
以邏輯電路410為例,邏輯電路410用於執行位元B70~B73的多數決分群計數操作。參見第4B圖繪示之本揭示的邏輯電路410的電路圖,邏輯電路410包括NOR型式的多數決處理電路412、NAND型式的多數決處理電路414及多數決答案轉換(answer transition)電路416。NOR型式的多數決處理電路412包括複數個NOR閘412a、412b、412c,NAND型式的多數決處理電路414包括複數個NAND閘414a、414b、414c,多數決答案轉換電路416包括XNOR閘416a及AND閘416b。上述之各邏輯閘交錯連接而形成邏輯電路410。
再參見第4A圖,在運作上,NOR閘412a及NAND閘414a接收位元B4與虛設位元「0」,NOR閘412b及NAND閘414b接收位元B50、B51。當群組G-M1=(B50 B51 B4 0)=(1 0 1 1)時,邏輯電路410經由AND閘416b輸出最終的多數決分群計數結果MGC1=1。在一種示例中,當位元B51為錯誤位元時,邏輯電路410的多數決分群計數結果MGC1不被錯誤位元影響,因此計數電路400能夠容忍錯誤位元。
邏輯電路420、430、440類似於邏輯電路410。邏輯電路420用於執行位元B74~B77的多數決分群計數操作,邏輯電路430用於執行位元B60~B63的多數決分群計數操作,邏輯電路440用於執行位元B50、B51、B4、「0」的多數決分群計數操 作。當(B70 B71 B72 B73 B74 B75 B76 B77 B60 B61 B65 B63 B50 B51 B4 0)=(0 1 0 0 0 0 1 1 1 1 1 0 1 0 1 1)時,邏輯電路410~440分別產生多數決計數結果MGC1=1、MGC2=1、MGC3=0、MGC4=0。而後,經由累加器450對於結果MGC1~MGC4進行累加,得到累加結果為0+0+1+1=2。累加結果乘上2的2次方,得到最終的多數決分群計數結果MGC為十進位「8」。
展開後一元格式的位元B70~B77、B60~B63、B50、B51、B4、虛置位元「0」之中的「1」的位元的直接計數結果C1=9。並且,上述展開後的位元B70~B77、B60~B63、B50、B51、B4、虛置位元「0」的理想的多數決分群計數結果為0*23+1*22+1*21+1*20+0=7。計數電路400的多數決分群計數結果MGC=8具有足夠的運算精確度。
第5圖為本揭示的記憶體裝置1000執行的分群計數操作之另一實施例的示意圖,本實施例之分群計數操作可稱為「第二分群計數操作」,可應用於資料重要性較低而儲存於記憶體陣列100的低頁面的LSB向量304。如第5圖所示,可將LSB向量304的二進位格式的4個位元B0~B3進行數值展開以得到一元格式的位元B30~B37、B20~B23、B10、B11、B0,並填補虛置位元「0」。上述一元格式的位元分群為群組G-M8、G-M7、G-M6、G-M5。每個群組具有4個位元。可根據第二資料量D2對於群組G-M5~G-M8執行第二分群計數操作510。LSB向量304的資料重要性較低而儲存於低頁面,因此第二分群計數操作 510根據的第二資料量D2為「粗略切粒(coarse-grained)」的較多位元數。例如,第二資料量D2為16個位元,其大於第3圖所示的MSB向量302的第一分群計數操作310~340所根據的第一資料量D1=4bits。
根據第二資料量D2=16bits得到的常規的分群計數結果GC與理想的/非理想的多數決分群計數結果MGC示於表4的真值表。相較於表3所示的「精細切粒」為4個位元的多數決分群計數操作,表4所示的「粗略切粒」為16個位元的多數決分群計數操作可容忍更多的錯誤位元。
Figure 111120622-A0305-02-0019-5
綜上所述,第3圖的實施例是特徵向量q1’的MSB向量302基於第一資料量D1=4bits執行的第一分群計數操作,第5圖的實施例是特徵向量q1’的LSB向量304基於第二資料量D2=16bits執行的第二分群計數操作。在表5所示的其他不同示例中,MSB向量302及LSB向量304亦可基於不同位元數的資料量執行分群計數操作,並可選擇性的採用多數決原則。
Figure 111120622-A0305-02-0020-6
第6圖為記憶體裝置1000執行的MAC運算之另一實施例的流程圖。請參見第6圖,在步驟S202中,判斷記憶體裝置1000的狀況(condition)。當判斷記憶體裝置1000將執行 MAC運算時,接著進行步驟S204:從記憶體陣列100的低頁面讀取資料並進行乘積運算。例如,執行選擇位元線讀取操作以從記憶體陣列100的低頁面讀取第i個權重特徵向量qi,並進行權重向量資料qi與輸入特徵向量p0的乘積運算而得到輸出特徵向量qi’。
接著,進行步驟S206,對於低頁面的輸出特徵向量qi’的LSB向量執行第二分群計數操作,以執行累加運算。第二分群計數操作可基於第二資料量D2=16bits而執行。
另一方面,可在步驟S206的同時或之後,進行步驟S208:從記憶體陣列100的高頁面讀取資料並進行乘積運算。例如,執行選擇位元線讀取操作以從記憶體陣列100的高頁面讀取權重特徵向量qi,並進行乘積運算而得到輸出特徵向量qi’。
接著,進行步驟S210,對於高頁面的輸出特徵向量qi’的MSB向量執行第一分群計數操作,以執行累加運算。第一分群計數操作可基於第一資料量D1=4bits而執行。
另一方面,在步驟S202中,當判斷記憶體裝置1000將產生(create)資料、插入(insert)資料或更新(update)資料時,接著進行步驟S212:計算修正後(revised)的權重特徵向量qi或輸入特徵向量p0。接著,進行步驟S214:將修正後的向量資料編程寫入(program)記憶體陣列100。
或者,在步驟S202中,當判斷記憶體裝置1000將移除(remove)資料時,接著進行步驟S216:刪除資料。例如,刪除記憶體陣列100儲存的N個權重特徵向量q1~qN。
第7A圖為記憶體裝置1000執行的乘積累加運算之一實施例MAC-1的排程圖,相較於第一個比較例的乘積累加運算MAC-A。參見第7A圖,在時段T1,執行記憶體陣列100的第1條字元線WL1的設定(setup)以及位元線的設定。位元線的設定時間大致為60μs。在時段T2,對於字元線WL1對應的低頁面儲存的特徵向量q1的LSB向量執行選擇位元線讀取操作,施加一次的讀取電壓對應的讀取時間大致為15μs。
而後,在時段T3,對於字元線WL1對應的高頁面儲存的特徵向量q1的MSB向量執行選擇位元線讀取操作。同時,對於在時段T2讀取得到的特徵向量q1的LSB向量執行第二分群計數操作(根據第二資料量D2=16bits),第二分群計數運算時間大致為34μs。由上,低頁面儲存的LSB向量的第二分群計數操作高頁面儲存的MSB向量的讀取操作可以管線(pipeline)方式同時並行。
而後,在時段T4,執行記憶體陣列100的第2條字元線WL2以及位元線的設定。同時,對於在時段T3讀取得到的特徵向量q1的MSB向量執行第一分群計數操作(根據第一資料量D1=8bits),第二分群計數運算時間大致為68μs。由上,高頁面 儲存的MSB向量的第一分群計數操作與下一條字元線WL2的設定以管線方式同時並行。
而後,在時段T5,對於字元線WL2對應的低頁面儲存的下一個特徵向量q2的LSB向量執行選擇位元線讀取操作。在時段T6,對於字元線WL2對應的高頁面儲存的特徵向量q2的MSB向量執行選擇位元線讀取操作。同時,對於在時段T5讀取得到的特徵向量q2的LSB向量執行第二分群計數操作。
而後,在時段T7,對於在時段T6讀取得到的特徵向量q2的MSB向量執行第一分群計數操作。
另一方面,在第一個比較例的乘積累加運算MAC-A的排程中,低頁面儲存的LSB向量的分群計數操作與高頁面儲存的MSB向量的分群計數操作並未同時執行,因而乘積累加運算MAC-A的運算時間較長。相較於第一個比較例的乘積累加運算MAC-A,本實施例的乘積累加運算MAC-1在運算時間延遲(latency)上改善了11.47倍。
第7B圖為記憶體裝置1000執行的乘積累加運算之一實施例MAC-1的排程圖,相較於第二個比較例的乘積累加運算MAC-B。參見第7B圖,在第二個比較例的乘積累加運算MAC-B中,低頁面儲存的LSB向量的分群計數操作以管線方式同時並行於位元線及字元線WL2的設定,並且,高頁面儲存的MSB向量的分群計數操作以管線方式同時並行於位元線及字元線WL3的設定,因此第二個比較例的乘積累加運算MAC-B的運 算時間可減少。然而,本揭示的記憶體裝置1000的乘積累加運算MAC-1在運算時間延遲上仍優於第二個比較例的乘積累加運算MAC-B約10.09倍。
第7C圖為記憶體裝置1000執行的乘積累加運算之另一實施例MAC-2的排程圖,相較於第一個比較例的乘積累加運算MAC-A。第7D圖為記憶體裝置1000執行的乘積累加運算之另一實施例MAC-2的排程圖,相較於第二個比較例的乘積累加運算MAC-B。在本實施例的乘積累加運算MAC-2中,高頁面儲存的MSB向量執行的第一分群計數操作根據更精細切粒的位元數而執行(係根據第一資料量D1=4bits)。
本揭示的記憶體裝置1000的乘積累加運算MAC-2在運算時間延遲上優於第一個比較例的乘積累加運算MAC-A約13.59倍,並優於第二個比較例的乘積累加運算MAC-B約11.96倍。
雖然本發明已以較佳實施例及範例詳細揭露如上,可理解的是,此些範例意指說明而非限制之意義。可預期的是,所屬技術領域中具有通常知識者可想到多種修改及組合,其多種修改及組合落在本發明之精神以及後附之申請專利範圍之範圍內。
302:MSB向量
304:LSB向量
B0~B7:位元
310~340:第一分群計數操作
G-M1~G-M4:群組
B70~B77,B60~B63,B50~B51,B4:位元

Claims (10)

  1. 一種記憶體裝置,包括:一記憶體陣列,用於儲存複數個向量資料,各該向量資料具有一高有效位元(MSB)向量與一低有效位元(LSB)向量,該記憶體陣列包括:複數個記憶單元,各該記憶單元具有一第一位元及一第二位元,該第一位元用於儲存各該向量資料的該MSB向量,該第二位元用於儲存各該向量資料的該LSB向量;其中,各該向量資料執行一乘積運算,各該向量資料的該MSB向量執行一第一分群計數操作,各該向量資料的該LSB向量執行一第二分群計數操作,並且各該記憶單元的臨界電壓分布區分為N個狀態,N為正整數且N小於2的2次方,各該記憶單元儲存的等效位元數小於2,其中,各該記憶單元根據(N-1)個讀取電壓與一通過電壓進行操作,該些狀態介於一零伏特電壓、該些讀取電壓或該通過電壓之間,該零伏特電壓、該些讀取電壓及該通過電壓的任意相鄰兩者之間具有一第一電壓間距,該第一電壓間距大於位元數為2的常規記憶單元的讀取電壓的電壓間距。
  2. 如請求項1所述之記憶體裝置,其中該記憶體陣列的一實體頁面具有複數個邏輯頁面,該些邏輯頁面包括一高頁面及一低頁面,該高頁面對應於該第一位元以儲存該MSB向量, 該低頁面對應於該第二位元以儲存該LSB向量。
  3. 如請求項1所述之記憶體裝置,其中該些向量資料包括複數個權重特徵向量及一輸入特徵向量,該記憶體陣列儲存該些權重特徵向量並接收該輸入特徵向量,並根據該輸入特徵向量與該些權重特徵向量的其中一者執行該乘積運算。
  4. 如請求項3所述之記憶體裝置,更包括:一計數電路,用於根據該乘積運算的結果執行一累加運算;其中,該計數電路對於該輸入特徵向量與該些權重特徵向量的該MSB向量執行該第一分群計數操作,該第一分群操作根據一第一資料量而執行。
  5. 如請求項4所述之記憶體裝置,其中該計數電路對於該輸入特徵向量與該些權重特徵向量的該LSB向量執行該第二分群計數操作,該第二分群操作根據一第二資料量而執行,該第二資料量的位元數大於該第一資料量的位元數。
  6. 如請求項5所述之記憶體裝置,其中該第一分群計數操作及該第二分群計數操作選擇性的採用一多數決原則而執行。
  7. 如請求項5所述之記憶體裝置,其中該記憶體陣列根據一選擇位元線讀取操作以讀取該些權重特徵向量的該MSB向量與該LSB向量;其中,該些權重特徵向量的該MSB向量的該選擇位元線讀取操作與該些權重特徵向量的該LSB向量的該第二分群計數操作同時執行。
  8. 如請求項7所述之記憶體裝置,其中該選擇位元線讀取操作的位元線設定與該些權重特徵向量的該MSB向量的該第一分群計數操作同時執行。
  9. 一種記憶體裝置的操作方法,其中該記憶體裝置包括一記憶體陣列,該記憶體陣列包括複數個記憶單元,各該記憶單元具有一第一位元及一第二位元,該操作方法包括:儲存複數個向量資料於該記憶體陣列,各該向量資料具有一高有效位元(MSB)向量與一低有效位元(LSB)向量;儲存各該向量資料的該MSB向量於該第一位元;儲存各該向量資料的該LSB向量於該第二位元;根據各該向量資料執行一乘積運算;根據各該向量資料的該MSB向量執行一第一分群計數操作;以及根據各該向量資料的該LSB向量執行一第二分群計數操作; 其中,各該記憶單元的臨界電壓分布區分為N個狀態,N為正整數且N小於2的2次方,各該記憶單元儲存的等效位元數小於2,其中,各該記憶單元根據(N-1)個讀取電壓與一通過電壓進行操作,該些狀態介於一零伏特電壓、該些讀取電壓或該通過電壓之間,該零伏特電壓、該些讀取電壓及該通過電壓的任意相鄰兩者之間具有一第一電壓間距,該第一電壓間距大於位元數為2的常規記憶單元的讀取電壓的電壓間距。
  10. 如請求項9所述之操作方法,其中該記憶體陣列的一實體頁面具有複數個邏輯頁面,該些邏輯頁面包括一高頁面及一低頁面,該高頁面對應於該第一位元以儲存該MSB向量,該低頁面對應於該第二位元以儲存該LSB向量。
TW111120622A 2022-01-11 2022-06-02 記憶體裝置及其操作方法 TWI806641B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202263298614P 2022-01-11 2022-01-11
US63/298,614 2022-01-11

Publications (2)

Publication Number Publication Date
TWI806641B true TWI806641B (zh) 2023-06-21
TW202329122A TW202329122A (zh) 2023-07-16

Family

ID=87069560

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111120622A TWI806641B (zh) 2022-01-11 2022-06-02 記憶體裝置及其操作方法

Country Status (3)

Country Link
US (1) US20230221956A1 (zh)
CN (1) CN116469427A (zh)
TW (1) TWI806641B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0602588A2 (en) * 1992-12-15 1994-06-22 Sony Corporation Moving picture decoding device
US20140085985A1 (en) * 2012-09-27 2014-03-27 Sandisk Technologies Inc. Sigma Delta Over-Sampling Charge Pump Analog-To-Digital Converter
US20150078079A1 (en) * 2013-09-17 2015-03-19 Sandisk Technologies Inc. Apparatus and method of storing data at a multi-bit storage element
TWI559307B (zh) * 2013-08-26 2016-11-21 英特爾公司 在相變記憶體中的設置與重置操作及相關技術與組態
US20210382693A1 (en) * 2020-01-07 2021-12-09 SK Hynix Inc. Processing-in-memory (pim) devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0602588A2 (en) * 1992-12-15 1994-06-22 Sony Corporation Moving picture decoding device
US20140085985A1 (en) * 2012-09-27 2014-03-27 Sandisk Technologies Inc. Sigma Delta Over-Sampling Charge Pump Analog-To-Digital Converter
TWI559307B (zh) * 2013-08-26 2016-11-21 英特爾公司 在相變記憶體中的設置與重置操作及相關技術與組態
US20150078079A1 (en) * 2013-09-17 2015-03-19 Sandisk Technologies Inc. Apparatus and method of storing data at a multi-bit storage element
US20210382693A1 (en) * 2020-01-07 2021-12-09 SK Hynix Inc. Processing-in-memory (pim) devices

Also Published As

Publication number Publication date
CN116469427A (zh) 2023-07-21
TW202329122A (zh) 2023-07-16
US20230221956A1 (en) 2023-07-13

Similar Documents

Publication Publication Date Title
WO2022199684A1 (zh) 基于数字域存内计算的电路
US10691537B2 (en) Storing deep neural network weights in non-volatile storage systems using vertical error correction codes
CN110428048B (zh) 一种基于模拟延时链的二值化神经网络累加器电路
Laguna et al. Hardware-software co-design of an in-memory transformer network accelerator
US12033699B2 (en) Memory device and operation method thereof for performing multiply accumulate operation
TWI806640B (zh) 記憶體裝置及其操作方法
TWI806641B (zh) 記憶體裝置及其操作方法
Vardar et al. The true cost of errors in emerging memory devices: A worst-case analysis of device errors in IMC for safety-critical applications
JP7255068B2 (ja) メモリデバイス及びその動作方法
CN111710356A (zh) 编码型闪存装置和编码方法
Zhao et al. Configurable memory with a multilevel shared structure enabling in-memory computing
Zeng et al. MLFlash-CIM: Embedded multi-level NOR-flash cell based computing in memory architecture for edge AI devices
JP7279293B2 (ja) メモリデバイスおよびその動作方法
TWI788128B (zh) 記憶體裝置及其操作方法
TWI777645B (zh) 記憶體裝置及其操作方法
Sabri et al. Redy: A novel reram-centric dynamic quantization approach for energy-efficient cnn inference
TW202211217A (zh) 記憶體裝置及其操作方法
TW202232489A (zh) 記憶體裝置及其操作方法
Saikia In-Memory Computing Based Hardware Accelerators Advancing the Implementation of AI/ML Tasks in Edge Devices
Chang et al. BFP-CIM: Runtime Energy-Accuracy Scalable Computing-in-Memory-Based DNN Accelerator Using Dynamic Block-Floating-Point Arithmetic
TW202242875A (zh) 資料處理電路及故障減輕方法
CN115995259A (zh) 存算一体的数据处理方法及存算一体的电路系统
TWI409696B (zh) 大小比較器以及內含此比較器之內容可定址記憶體與不等寬色譜器