TWI858395B - 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 - Google Patents
在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 Download PDFInfo
- Publication number
- TWI858395B TWI858395B TW111136446A TW111136446A TWI858395B TW I858395 B TWI858395 B TW I858395B TW 111136446 A TW111136446 A TW 111136446A TW 111136446 A TW111136446 A TW 111136446A TW I858395 B TWI858395 B TW I858395B
- Authority
- TW
- Taiwan
- Prior art keywords
- programming
- volatile memory
- memory cell
- selected non
- current
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
- G11C11/5635—Erasing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
- G11C16/0425—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors comprising cells containing a merged floating gate and select transistor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/02—Structural aspects of erasable programmable read-only memories
- G11C2216/04—Nonvolatile memory cell provided with a separate control gate for erasing the cells, i.e. erase gate, independent of the normal read control gate
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Non-Volatile Memory (AREA)
- Read Only Memory (AREA)
- Feedback Control In General (AREA)
- Networks Using Active Elements (AREA)
- Stored Programmes (AREA)
Abstract
揭示了精度程式化演算法及裝置之眾多具體例,該演算法及裝置用於在一人工神經網路中之一向量乘矩陣乘法(VMM)陣列內之一非揮發性記憶體單元的浮動閘極上精確且快速地沉積正確量之電荷。選定單元藉此可以極高精度經程式化以保持N個不同值中之一者。
Description
[優先權主張]本申請案主張2019年11月11日申請,且標題為「PRECISE PROGRAMMING METHOD AND APPARATUS FOR ANALOG NEURAL MEMORY IN A DEEP LEARNING ARTIFICIAL NEURAL NETWORK」之美國臨時申請案第62/933,809號,及2020年1月23日申請,且標題為「PRECISE PROGRAMMING METHOD AND APPARATUS FOR ANALOG NEURAL MEMORY IN A DEEP LEARNING ARTIFICIAL NEURAL NETWORK」之美國專利申請案第16/751,202號的優先權。
揭示了精度程式化演算法及裝置之眾多具體例,該演算法及裝置用於在人工神經網路中之向量乘矩陣乘法(VMM)陣列內之非揮發性記憶體單元的浮動閘極上精確且快速地沉積正確量之電荷。
人工神經網路模擬生物神經網路(動物之中樞神經系統,特定言之,大腦),且用於估計或估算可取決於大量輸入且通常未知的功能。人工神經網路通常包括彼此之間交換訊息之互連「神經元」層。
圖1例示人工神經網路,其中圓形表示輸入或神經元層。連接(被稱作突觸)由箭頭表示,且具有可基於經驗進行調諧之數值權重。此使得人工神經網路適應於輸入且能夠學習。通常,人工神經網路包括多個輸入之層。通常,存在一或多個中間神經元層及提供神經網路之輸出的輸出神經元層。每個層級處之神經元基於自突觸所接收之資料而個別地或共同地作出決策。
用於高效能資訊處理之人工神經網路之發展中的主要挑戰之一在於缺乏充分的硬體技術。實際上,切實可行的人工神經網路依賴於極大量之突觸,從而實現神經元之間的高連接性,亦即極高計算並行性。原則上,此複雜性可用數位超級電腦或專用圖形處理單元叢集來實現。然而,除了高成本之外,與生物網路相比,此等方法亦受中等能效困擾,主要因為生物網路執行低精度類比計算,所以其消耗少得多的能量。CMOS類比電路已用於人工神經網路,但鑒於大量神經元及突觸,大部分實施CMOS之突觸已過於龐大。
申請人先前在公開為美國專利公開案第2017/0337466號之美國專利申請案第15/594,439號中揭示了一種人工(類比)神經網路,其利用一或多個非揮發性記憶體陣列作為突觸,該美國專利公開案以引用之方式併入。非揮發性記憶體陣列操作為類比神經形態記憶體。如本文中所使用,術語神經形態意謂實施神經系統之模型的電路。類比神經形態記憶體包括第一複數個突觸,該第一複數個突觸經組構以接收第一複數個輸入且自該第一複數個輸入產生第一複數個輸出;及經組構以接收第一複數個輸出之第一複數個神經元。第一複數個突觸包括複數個記憶體單元,其中記憶體單元中之每一者包括形成於半導體基板中的間隔開之源極及汲極區,其中通道區延伸於該兩區之間;裝設於通道區之第一部分上方且與第一部分絕緣之浮動閘極;及裝設於通道區之第二部分上方且與第二部分絕緣之非浮動閘極。複數個記憶體單元中之每一者經組構以儲存對應於浮動閘極上之電子數目的權重值。複數個記憶體單元經組構以使第一複數個輸入乘以所儲存權重值以產生第一複數個輸出。以此方式配置之記憶體單元陣列可被稱作向量乘矩陣乘法(VMM)陣列。
類比神經形態記憶體陣列中使用之每個非揮發性記憶體單元必須經抹除及程式化,以在浮動閘極中保持特定且精確量之電荷,亦即電子數目。例如,每個浮動閘極必須保持N個不同值中之一者,其中N為可由每個單元指示之不同權重之數目。N之實施例包括16、32、64、128及256。類比神經形態記憶體系統中之一個挑戰為以N的不同值所需之精度及精細度程式化選定單元之能力。
需要適於與類比神經形態記憶體中之VMM陣列一起使用的經改良程式化系統及方法。
揭示了精度程式化演算法及裝置之眾多具體例,該演算法及裝置用於在類比神經形態記憶體中之向量乘矩陣乘法(VMM)陣列內之非揮發性記憶體單元的浮動閘極上精確且快速地沉積正確量之電荷。選定單元藉此可以極高精度經程式化以保持N個不同值中之一者。
本發明之人工神經網路利用CMOS技術與非揮發性記憶體陣列之組合。
非揮發性記憶體單元
數位非揮發性記憶體係熟知的。例如,以引用方式併入本文中之美國專利5,029,130(「'130專利」)揭示分離閘式非揮發性記憶體單元之陣列,其為一種類型的快閃記憶體單元。圖2中展示此記憶體單元210。每個記憶體單元210包括形成於半導體基板12中之源極區14及汲極區16,其中通道區18處於源極區與汲極區之間。浮動閘極20形成於通道區18之第一部分上方且與第一部分絕緣(且控制第一部分之導電性),且在源極區14之一部分上方。字線端子22 (其通常耦接至字線)具有:第一部分,其裝設於通道區18之第二部分上方且與第二部分絕緣(且控制第二部分之導電性);及第二部分,其在浮動閘極20上及上方延伸。浮動閘極20及字線端子22由閘極氧化物與基板12絕緣。位元線端子24耦接至汲極區16。
記憶體單元210藉由將高正電壓置於字線端子22上而經抹除(其中自浮動閘極移除電子),此使得浮動閘極20上之電子經由富爾-諾罕(Fowler-Nordheim)穿隧自浮動閘極20通過中間絕緣件穿隧至字線端子22。
記憶體單元210藉由將正電壓置於字線端子22上且將正電壓置於源極區14上而經程式化(其中電子被置於浮動閘極上)。電子電流將自源極區14 (源極線端子)朝向汲極區16流動。當電子到達字線端子22與浮動閘極20之間的間隙時,該等電子將加速且被加熱。經加熱電子中之一些將由於來自浮動閘極20之吸引靜電力而通過閘極氧化物注入至浮動閘極20上。
記憶體單元210藉由將正讀取電壓置於汲極區16及字線端子22上而經讀取(此接通通道區18之在字線端子下的部分)。若浮動閘極20帶正電(亦即,電子經抹除),則通道區18之在浮動閘極20下的部分亦被接通,且電流將跨越通道區18流動,此被感測為經抹除或「1」狀態。若浮動閘極20帶負電(亦即,用電子程式化),則通道區之在浮動閘極20下的部分大部分或完全被斷開,且電流將並不跨越通道區18流動(或將存在極少電流流動),此被感測為經程式化或「0」狀態。
表1描繪可施加至記憶體單元110之端子以用於執行讀取、抹除及程式化操作的典型電壓範圍:
表1:圖2之快閃記憶體單元210之操作
「讀取1」為其中單元電流在位元線上輸出之讀取模式。「讀取2」為其中單元電流在源極線端子上輸出之讀取模式。
| WL | BL | SL | |
| 讀取1 | 0.5-3V | 0.1-2V | 0V |
| 讀取2 | 0.5-3V | 0-2V | 2-0.1V |
| 抹除 | ~11-13V | 0V | 0V |
| 程式化 | 1-2V | l-3μA | 9-10V |
圖3展示記憶體單元310,其類似於圖2的記憶體單元210,且添加了控制閘極(CG)端子28。控制閘極端子28在程式化時被偏壓在高電壓,例如10V下;在抹除時被偏壓在低或負電壓,例如0v/-8V下;在讀取時被偏壓在低或中間範圍,例如0v/2.5V下。其他端子以類似於圖2之方式被偏壓。
圖4描繪四閘極記憶體單元410,其包含源極區14、汲極區16、在通道區18之第一部分上方的浮動閘極20、在通道區18之第二部分上方的選擇閘極22 (通常耦接至字線WL)、在浮動閘極20上方之控制閘極28,及在源極區14上方之抹除閘極30。此組構描述於美國專利6,747,310中,其出於所有目的以引用之方式併入本文中。此處,除了浮動閘極20以外,所有閘極皆為非浮動閘極,此意謂該等閘極電連接或可電連接至電壓源。程式化係藉由來自通道區18之經加熱電子將自身注入至浮動閘極20上來執行。抹除係藉由電子自浮動閘極20穿隧至抹除閘極30來執行。
表2描繪可施加至記憶體單元410之端子以用於執行讀取、抹除及程式化操作的典型電壓範圍:
表2:圖4之快閃記憶體單元410之操作
「讀取1」為其中單元電流在位元線上輸出之讀取模式。「讀取2」為其中單元電流在源極線端子上輸出之讀取模式。
| WL/SG | BL | CG | EG | SL | |
| 讀取1 | 0.5-2V | 0.1-2V | 0-2.6V | 0-2.6V | 0V |
| 讀取2 | 0.5-2V | 0-2V | 0-2.6V | 0-2.6V | 2-0.1V |
| 抹除 | -0.5V/0V | 0V | 0V/-8V | 8-12V | 0V |
| 程式化 | 1V | 1μA | 8-11V | 4.5-9V | 4.5-5V |
圖5展示記憶體單元510,除了記憶體單元510不含有抹除閘極EG端子以外,該記憶體單元類似於圖4的記憶體單元410。抹除係藉由將基板18偏壓至高電壓並將控制閘極CG端子28偏壓至低或負電壓來執行。替代地,抹除係藉由將字線端子22偏壓至正電壓並將控制閘極端子28偏壓至負電壓來執行。程式化及讀取類似於圖4之程式化及讀取。
圖6描繪三閘極記憶體單元610,其為另一類型之快閃記憶體單元。除了記憶體單元610不具有單獨的控制閘極端子以外,記憶體單元610與圖4的記憶體單元410相同。除了未施加控制閘極偏壓以外,抹除操作(其中經由使用抹除閘極端子進行抹除)及讀取操作類似於圖4的抹除操作及讀取操作。程式化操作亦在無控制閘極偏壓之情況下進行,且結果,在程式化操作期間較高電壓必須被施加在源極線端子上以補償控制閘極偏壓之缺乏。
表3描繪可施加至記憶體單元610之端子以用於執行讀取、抹除及程式化操作的典型電壓範圍:
表3:圖6之快閃記憶體單元610之操作
「讀取1」為其中單元電流在位元線上輸出之讀取模式。「讀取2」為其中單元電流在源極線端子上輸出之讀取模式。
| WL/SG | BL | EG | SL | |
| 讀取1 | 0.5-2.2V | 0.1-2V | 0-2.6V | 0V |
| 讀取2 | 0.5-2.2V | 0-2V | 0-2.6V | 2-0.1V |
| 抹除 | -0.5V/0V | 0V | 11.5V | 0V |
| 程式化 | 1V | 2-3μA | 4.5V | 7-9V |
圖7描繪堆疊閘式記憶體單元710,其為另一類型之快閃記憶體單元。除了浮動閘極20在整個通道區18上方延伸,且控制閘極端子22 (其在此處將耦接至字線)在浮動閘極20上方延伸以外,記憶體單元710類似於圖2的記憶體單元210,該浮動閘極由絕緣層(未示出)分離。抹除、程式化及讀取操作以與先前針對記憶體單元210所描繪之方式類似的方式操作。
表4描繪可施加至記憶體單元710之端子及基板12以用於執行讀取、抹除及程式化操作之典型電壓範圍:
表4:圖7之快閃記憶體單元710之操作
| CG | BL | SL | 基板 | |
| 讀取1 | 0-5V | 0.1-2V | 0-2V | 0V |
| 讀取2 | 0.5-2V | 0-2V | 2-0.1V | 0V |
| 抹除 | -8至-10V/0V | FLT | FLT | 8-10V/15-20V |
| 程式化 | 8-12V | 3-5V/0V | 0V/3-5V | 0V |
「讀取1」為其中單元電流在位元線上輸出之讀取模式。「讀取2」為其中單元電流在源極線端子上輸出之讀取模式。視情況,在包含記憶體單元210、310、410、510、610或710之列及行之陣列中,源極線可耦接至記憶體單元之一個列或記憶體單元之兩個鄰近列。亦即,源極線端子可由記憶體單元的鄰近列共用。
為了利用包含上文在人工神經網路中所描述之非揮發性記憶體單元類型中之一者的記憶體陣列,進行兩個修改。首先,線經組構成使得每個記憶體單元可個別地經程式化、抹除及讀取而不會不利地影響陣列中之其他記憶體單元之記憶體狀態,如下文進一步解釋。其次,提供記憶體單元之連續(類比)程式化。
具體而言,陣列中之每個記憶體單元之記憶體狀態(亦即,浮動閘極上之電荷)可連續地自完全抹除狀態改變為完全程式化狀態,其方式為獨立的且對其他記憶體單元之干擾最小。在另一具體例中,陣列中之每個記憶體單元之記憶體狀態(亦即,浮動閘極上之電荷)可連續地自完全程式化狀態改變為完全抹除狀態,且反之亦然,其方式為獨立的且對其他記憶體單元之干擾最小。此意謂單元儲存為類比的,或至少可儲存許多離散值(諸如16或64個不同值)中之一者,此允許對記憶體陣列中之所有單元進行極精確且個別的調諧,且此使得記憶體陣列對於儲存神經網路之突觸權重及對該等突觸權重進行精細調諧調整係理想的。
本文中所描述之方法及手段可應用於其他非揮發性記憶體技術,諸如但不限於氧化矽-氮化物-氧化物-矽 (SONOS,氮化物中之電荷捕捉)、金屬-氧化物-氮化物-氧化物-矽 (MONOS,氮化物中之金屬電荷捕捉)、電阻式ram (ReRAM)、相變記憶體(PCM)、磁性ram (MRAM)、鐵電ram (FeRAM)、雙層級或多層級一次性可程式化(OTP)及相關電子ram (CeRAM)。本文中所描述之方法及手段可應用於用於神經網路之揮發性記憶體技術,諸如但不限於SRAM、DRAM及其他揮發性突觸單元。
採用非揮發性記憶體單元陣列之神經網路
圖8在概念上例示利用本具體例之非揮發性記憶體陣列的神經網路之非限制性實施例。此實施例將非揮發性記憶體陣列神經網路用於面部辨識應用,但任何其他適當應用可使用基於非揮發性記憶體陣列之神經網路來實施。
S0為輸入層,對於此實施例,該輸入層為具有5位元精度之32×32像素RGB影像(亦即,三個32×32像素陣列,每種色彩R、G及B一個陣列,每個像素為5位元精度)。自輸入層S0行進至層C1之突觸CB1在一些情況下施加不同權重集合且在其他情況下施加共用權重,且用3×3像素重疊濾波器(核心)掃描輸入影像,從而使濾波器移位1個像素(或多於1個像素,如由模型所指示)。具體而言,影像(亦即,稱作濾波器或核心)之3×3部分中之9個像素的值被提供至突觸CB1,在該突觸處使此等9個輸入值乘以適當權重,且在對彼乘法之輸出求和之後,判定單個輸出值且由第一突觸CB1提供該單個輸出值以用於產生特徵圖層C1中之一者的像素。3×3濾波器接著在輸入層S0內向右移位一個像素(亦即,在右側上添加三個像素之行,且在左側上丟棄三個像素之行),藉此將此新定位濾波器中之9個像素值提供至突觸CB1,在該突觸處使該等像素值乘以相同權重,且由相聯結突觸判定第二單個輸出值。此程序針對所有三個色彩且針對所有位元(精度值)繼續,直至3×3濾波器跨越輸入層S0之整個32×32像素影像掃描為止。程序接著使用不同權重集合進行重複以產生C1之不同特徵圖,直至層C1之所有特徵圖已經計算為止。
在本實施例中,在層C1中存在16個特徵圖,其中每個特徵圖具有30×30個像素。每個像素為自使輸入與核心相乘提取之新特徵像素,且因此每一特徵圖為二維陣列,且因此在此實施例中,層C1構成二維陣列之16個層(應謹記,本文中所參考之層及陣列為邏輯關係,未必為實體關係,亦即,陣列未必定向於實體二維陣列中)。層C1中之16個特徵圖中之每一者由施加至濾波器掃描之十六個不同突觸權重集合中的一者產生。C1特徵圖可皆針對同一影像特徵之不同態樣,諸如邊界識別。例如,第一圖(使用第一權重集合產生,共用於用以產生此第一圖之所有掃描)可識別圓形邊緣,第二圖(使用不同於第一權重集合之第二權重集合產生)可識別矩形邊緣,或某些特徵之縱橫比等等。
在自層C1行進至層S1之前應用激發函數P1 (池化(pooling)),其池化來自每個特徵圖中之連續非重疊2×2區的值。池化函數之目的為使附近位置達到平均數(或亦可使用最大函數),以例如降低邊緣位置之相依性且在進入下一級之前縮減資料大小。在層S1處,存在16個15×15特徵圖(亦即,各自具有15×15個像素之十六個不同陣列)。自層S1行進至層C2之突觸CB2用4×4濾波器掃描S1中之圖,其中濾波器移位1個像素。在層C2處,存在22個12×12特徵圖。在自層C2行進至層S2之前應用激發函數P2 (池化),其池化來自每個特徵圖中之連續非重疊2×2區的值。在層S2處,存在22個6×6特徵圖。在自層S2行進至層C3之突觸CB3處應用激發函數(池化),其中層C3中之每一神經元經由CB3之各別突觸連接至層S2中之每一圖。在層C3處,存在64個神經元。自層C3行進至輸出層S3之突觸CB4將C3完全連接至S3,亦即,層C3中之每一神經元連接至層S3中之每一神經元。S3處之輸出包括10個神經元,其中最高輸出神經元判定類別。此輸出可例如指示原始影像之內容之識別或分類。
每個突觸層係使用非揮發性記憶體單元之陣列或陣列之一部分來實施。
圖9為可用於彼目的之系統的方塊圖。向量乘矩陣乘法(VMM)系統32包括非揮發性記憶體單元,且用作一個層與下一層之間的突觸(諸如圖6中之CB1、CB2、CB3及CB4)。具體而言,VMM系統32包括包含配置成列及行之非揮發性記憶體單元之VMM陣列33、抹除閘極及字線閘極解碼器34、控制閘極解碼器35、位元線解碼器36及源極線解碼器37,其解碼用於非揮發性記憶體單元陣列33之各別輸入。至VMM陣列33之輸入可來自抹除閘極及字線閘極解碼器34或來自控制閘極解碼器35。源極線解碼器37在此實施例中亦解碼VMM陣列33之輸出。替代地,位元線解碼器36可解碼VMM陣列33的輸出。
VMM陣列33用於兩個目的。首先,其儲存將由VMM系統32使用之權重。其次,VMM陣列33有效地使輸入乘以儲存於VMM陣列33中之權重,且按輸出線(源極線或位元線)將結果相加以產生輸出,該輸出將為至下一層之輸入或至最終層之輸入。藉由執行乘法及加法函數,VMM陣列33消除了對單獨的乘法及加法邏輯電路之需要,且由於其就地記憶體計算亦為功率高效的。
VMM陣列33的輸出被供應至差分求和器(諸如求和運算放大器或求和電流鏡) 38,其對VMM陣列33之輸出進行求和以產生用於彼卷積之單個值。差分求和器38經配置以執行正權重輸入與負權重輸入之求和以輸出單個值。
接著將差分求和器38之總計輸出值供應至對輸出進行整流之激發函數電路39。激發函數電路39可提供S型(sigmoid)、雙曲正切(tanh)、ReLU函數,或任何其他非線性函數。激發函數電路39之經整流輸出值變成下一層(例如圖8中之C1)之特徵圖之元素,且接著被應用於下一突觸以產生下一特徵圖層或最終層。因此,在此實施例中,VMM陣列33構成複數個突觸(其自先前神經元層或自諸如影像資料庫之輸入層接收其輸入),且求和器38及激發函數電路39構成複數個神經元。
至圖9中之VMM系統32的輸入(WLx、EGx、CGx且視情況地BLx及SLx)可為類比層級、二進位層級、數位脈衝(在此情況下,可能需要脈衝至類比轉換器PAC以將脈衝轉換至適當輸入類比層級)或數位位元(在此情況下,提供DAC以將數位位元轉換至適當輸入類比層級),且輸出可為類比層級、二進位層級、數位脈衝或數位位元(在此情況下,提供輸出ADC以將輸出類比層級轉換成數位位元)。
圖10為描繪VMM系統32 (此處標記為VMM系統32a、32b、32c、32d及32e)之眾多層之使用的方塊圖。如圖10中所示,表示為Inputx之輸入由數位至類比轉換器31自數位轉換至類比,且被提供至輸入VMM系統32a。經轉換之類比輸入可為電壓或電流。第一層之輸入D/A轉換可藉由使用函數或查找表(LUT)來進行,該函數或LUT將輸入Inputx映射至用於輸入VMM系統32a之矩陣乘法器的適當類比層級。輸入轉換亦可由類比至類比(A/A)轉換器進行以將外部類比輸入轉換為至輸入VMM系統32a之經映射類比輸入。輸入轉換亦可由數位至數位脈衝(D/P)轉換器進行以將外部數位輸入轉換為至輸入VMM系統32a之一或多個經映射數位脈衝。
由輸入VMM系統32a產生之輸出被提供為至下一VMM系統(隱藏層級1) 32b之輸入,該輸入又產生被提供為至下一VMM系統(隱藏層級2) 32c之輸入的輸出,等等。VMM系統32之各種層充當卷積神經網路(CNN)之突觸及神經元的不同層。每個VMM系統32a、32b、32c、32d及32e可為包含各別非揮發性記憶體陣列之獨立實體系統,或多個VMM系統可利用同一實體非揮發性記憶體陣列之不同部分,或多個VMM系統可利用同一實體非揮發性記憶體陣列之重疊部分。每個VMM系統32a、32b、32c、32d及32e亦可針對其陣列或神經元之各種部分進行時間多工。圖10中所示之實施例含有五個層(32a、32b、32c、32d、32e):一個輸入層(32a)、兩個隱藏層(32b、32c)及兩個完全連接層(32d、32e)。一般熟習此項技術者將瞭解,此僅為例示性的,且系統替代地可包含多於兩個隱藏層及多於兩個完全連接層。
VMM陣列
圖11描繪神經元VMM陣列1100,其尤其適於如圖3中所示之記憶體單元310,且用作輸入層與下一層之間的突觸及神經元部分。VMM陣列1100包含非揮發性記憶體單元之記憶體陣列1101及非揮發性參考記憶體單元之參考陣列1102 (在陣列之頂部處)。替代地,另一參考陣列可置於底部處。
在VMM陣列1100中,控制閘極線(諸如控制閘極線1103)在豎直方向上沿行(因此,列方向上之參考陣列1102與控制閘極線1103正交),且抹除閘極線(諸如抹除閘極線1104)在水平方向上沿行。此處,至VMM陣列1100之輸入設置於控制閘極線(CG0、CG1、CG2、CG3)上,且VMM陣列1100之輸出出現於源極線(SL0、SL1)上。在一個具體例中,僅使用偶數列,且在另一具體例中,僅使用奇數列。置於每個源極線(分別為SL0、SL1)上之電流對來自連接至彼特定源極線之記憶體單元的所有電流執行求和函數。
如本文中針對神經網路所描述,VMM陣列1100之非揮發性記憶體單元,亦即,VMM陣列1100之快閃記憶體,較佳地經組構以在次臨限區中操作。
本文中所描述之非揮發性參考記憶體單元及非揮發性記憶體單元在弱反轉(weak inversion)中經偏壓:
,
其中
其中Ids為汲極至源極電流;Vg為記憶體單元上之閘極電壓;Vth為記憶體單元之臨限電壓;Vt為熱電壓,其=k*T/q,其中k為波茲曼常數,T為以克耳文為單位之溫度,且q為電子電荷;n為斜率因數,其= 1 + (Cdep/Cox),其中Cdep=耗盡層之電容且Cox為閘極氧化物層之電容;Io為等於臨限電壓之閘極電壓下之記憶體單元電流,Io與
成比例,其中u為記憶體單元之載流子遷移率,且Wt及L分別為寬度及長度。
為了令使用記憶體單元(諸如參考記憶體單元或周邊記憶體單元)或電晶體之I至V對數轉換器將輸入電流Ids轉換成輸入電壓,Vg:
此處,wp為參考或周邊記憶體單元之w。
為了令使用記憶體單元(諸如參考記憶體單元或周邊記憶體單元)或電晶體之I至V對數轉換器將輸入電流Ids轉換成輸入電壓,Vg:
此處,wp為參考或周邊記憶體單元之w。
對於用作向量矩陣乘法器VMM陣列之記憶體陣列,輸出電流為:
,亦即
此處,wa=記憶體陣列中之每個記憶體單元的w。
字線或控制閘極可用作用於輸入電壓的記憶體單元之輸入。
替代地,本文中所描述之VMM陣列的非揮發性記憶體單元可經組構以在線性區中操作:
Ids = β*(Vgs-Vth)*Vds;β = u*Cox*Wt/L,
,
此意謂線性區中之權重W與(Vgs-Vth)成比例
字線或控制閘極或位元線或源極線可用作在線性區中操作之記憶體單元之輸入。位元線或源極線可用作記憶體單元之輸出。
對於I至V線性轉換器,記憶體單元(諸如,參考記憶體單元或周邊記憶體單元)或在線性區中操作之電晶體或電阻器可用以將輸入/輸出電流線性地轉換成輸入/輸出電壓。
替代地,本文中所描述之VMM陣列之記憶體單元可經組構以在飽和區中操作:
Ids = ½*β*(Vgs-Vth)
2;β = u*Cox*Wt/L
Wα (Vgs-Vth)
2,此意謂權重W與(Vgs-Vth)
2成比例
字線、控制閘極或抹除閘極可用作在飽和區中操作之記憶體單元的輸入。位元線或源極線可用作輸出神經元之輸出。
替代地,本文中所描述之VMM陣列之記憶體單元可用於所有區或其組合(次臨限、線性或飽和)中。
用於圖9之VMM陣列33的其他具體例描述於美國專利申請案第15/826,345號中,該申請案以引用之方式併入本文中。如彼申請案中所描述,源極線或位元線可用作神經元輸出(電流求和輸出)。
圖12描繪神經元VMM陣列1200,其尤其適於如圖2中所示之記憶體單元210,且用作輸入層與下一層之間的突觸。VMM陣列1200包含非揮發性記憶體單元之記憶體陣列1203、第一非揮發性參考記憶體單元之參考陣列1201及第二非揮發性參考記憶體單元之參考陣列1202。配置於陣列之行方向上的參考陣列1201及1202用以將流入端子BLR0、BLR1、BLR2及BLR3中之電流輸入轉換成電壓輸入WL0、WL1、WL2及WL3。實際上,第一及第二非揮發性參考記憶體單元為二極體連接之貫穿多工器1214 (僅部分描繪),其中電流輸入流入該等多工器中。參考單元經調諧(例如,經程式化)至目標參考層級。目標參考層級由參考迷你陣列矩陣(未示出)提供。
記憶體陣列1203用於兩個目的。首先,其儲存將由VMM陣列1200在其各別記憶體單元上使用之權重。其次,記憶體陣列1203有效地使輸入(亦即,在端子BLR0、BLR1、BLR2及BLR3中提供之電流輸入,其由參考陣列1201及1202轉換成輸入電壓以供應至字線WL0、WL1、WL2及WL3)乘以儲存於記憶體陣列1203中之權重,且接著將所有結果(記憶體單元電流)相加以在各別位元線(BL0至BLN)上產生輸出,該輸出將為至下一層之輸入或至最終層之輸入。藉由執行乘法及加法函數,記憶體陣列1203消除了對單獨的乘法及加法邏輯電路之需要,且亦為功率高效的。此處,電壓輸入設置於字線WL0、WL1、WL2及WL3上,且輸出在讀取(推理)操作期間出現於各別位元線BL0至BLN上。置於位元線BL0至BLN中之每一者上之電流對來自連接至彼特定位元線之所有非揮發性記憶體單元的電流執行求和函數。
表5描繪用於VMM陣列1200之操作電壓。該表中之行指示置於以下各者上之電壓:選定單元之字線、未選定單元之字線、選定單元之位元線、未選定單元之位元線、選定單元之源極線及未選定單元之源極線,其中FLT指示浮動,亦即未施加電壓。列指示讀取、抹除及程式化之操作。
表5:圖12之VMM陣列1200之操作
| WL | WL-未選定 | BL | BL-未選定 | SL | SL-未選定 | |
| 讀取 | 0.5-3.5V | -0.5V/0V | 0.1-2V (Ineuron) | 0.6V-2V/FLT | 0V | 0V |
| 抹除 | ~5-13V | 0V | 0V | 0V | 0V | 0V |
| 程式化 | 1-2V | -0.5V/0V | 0.1-3uA | Vinh ~2.5V | 4-10V | 0-1V/FLT |
圖13描繪神經元VMM陣列1300,其尤其適於如圖2中所示之記憶體單元210,且用作輸入層與下一層之間的突觸及神經元部分。VMM陣列1300包含非揮發性記憶體單元之記憶體陣列1303、第一非揮發性參考記憶體單元之參考陣列1301及第二非揮發性參考記憶體單元之參考陣列1302。參考陣列1301及1302在VMM陣列1300之列方向上沿行。除了在VMM陣列1300中,字線在豎直方向上沿行以外,VMM陣列類似於VMM 1000。此處,輸入設置於字線(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)上,且輸出在讀取操作期間出現於源極線(SL0、SL1)上。置於每個源極線上之電流對來自連接至彼特定源極線之記憶體單元的所有電流執行求和函數。
表6描繪用於VMM陣列1300之操作電壓。該表中之行指示置於以下各者上之電壓:選定單元之字線、未選定單元之字線、選定單元之位元線、未選定單元之位元線、選定單元之源極線及未選定單元之源極線。列指示讀取、抹除及程式化之操作。
表6:圖13之VMM陣列1300之操作
| WL | WL-未選定 | BL | BL-未選定 | SL | SL-未選定 | |
| 讀取 | 0.5-3.5V | -0.5V/0V | 0.1-2V | 0.1V- 2V/FLT | -0.3-1V (Ineuron) | 0V |
| 抹除 | ~5-13V | 0V | 0V | 0V | 0V | SL-抑制 (~4-8V) |
| 程式化 | 1-2V | -0.5V/0V | 0.1-3uA | Vinh ~2.5V | 4-10V | 0-lV/FLT |
圖14描繪神經元VMM陣列1400,其尤其適於如圖3中所示之記憶體單元310,且用作輸入層與下一層之間的突觸及神經元部分。VMM陣列1400包含非揮發性記憶體單元之記憶體陣列1403、第一非揮發性參考記憶體單元之參考陣列1401及第二非揮發性參考記憶體單元之參考陣列1402。參考陣列1401及1402用以將流入端子BLR0、BLR1、BLR2及BLR3中之電流輸入轉換成電壓輸入CG0、CG1、CG2及CG3。實際上,第一及第二非揮發性參考記憶體單元為二極體連接之貫穿多工器1412 (僅部分展示),其中電流輸入經由BLR0、BLR1、BLR2及BLR3流入該等多工器中。多工器1412各自包括各別多工器1405及串疊電晶體1404,以確保在讀取操作期間第一及第二非揮發性參考記憶體單元中之每一者之位元線(諸如BLR0)上存在恆定電壓。參考單元經調諧至目標參考層級。
記憶體陣列1403用於兩個目的。首先,其儲存將由VMM陣列1400使用之權重。其次,記憶體陣列1403有效地使輸入(提供至端子BLR0、BLR1、BLR2及BLR3之電流輸入,其中參考陣列1401及1402將此等電流輸入轉換成輸入電壓以供應至控制閘極(CG0、CG1、CG2及CG3))乘以儲存於記憶體陣列中之權重,且接著將所有結果(單元電流)相加以產生輸出,該輸出呈現於BL0至BLN上,且將為至下一層之輸入或至最終層之輸入。藉由執行乘法及加法函數,記憶體陣列消除了對單獨的乘法及加法邏輯電路之需要,且亦為功率高效的。此處,輸入設置於控制閘極線(CG0、CG1、CG2及CG3)上,且輸出在讀取操作期間出現於位元線(BL0至BLN)上。置於每個位元線上之電流對來自連接至彼特定位元線之記憶體單元的所有電流執行求和函數。
VMM陣列1400對記憶體陣列1403中之非揮發性記憶體單元實施單向調諧。亦即,每個非揮發性記憶體單元經抹除且接著經部分程式化,直至達到浮動閘極上之所要電荷為止。此可例如使用下文所描述之精度程式化技術來執行。若過多電荷被置於浮動閘極上(使得錯誤值儲存於單元中),則單元必須被抹除且必須重新開始部分程式化操作之序列。如所示,共用同一抹除閘極(諸如EG0或EG1)之兩個列需要被一起抹除(此被稱為頁面抹除),且此後,部分地程式化每個單元直至達到浮動閘極上之所要電荷為止。
表7描繪用於VMM陣列1400之操作電壓。該表中之行指示置於以下各者上之電壓:選定單元之字線、未選定單元之字線、選定單元之位元線、未選定單元之位元線、選定單元之控制閘極、與選定單元相同扇區中之未選定單元之控制閘極、與選定單元不同扇區中之未選定單元之控制閘極、選定單元之抹除閘極、未選定單元之抹除閘極、選定單元之源極線及未選定單元之源極線。列指示讀取、抹除及程式化之操作。
表7:圖14之VMM陣列1400之操作
| WL | WL-未選定 | BL | BL-未選定 | CG | CG-未選定 相同扇區 | CG-未選定 | EG | EG-未選定 | SL | SL-未選定 | |
| 讀取 | 0.5-2V | -0.5V/ 0V | 0.1-2V (Ineuron) | 0V/FLT | 0-2.6V | 0-2.6V | 0-2.6V | 0-2.6V | 0-2.6V | 0V | 0V |
| 抹除 | 0V | 0V | 0V | 0V | 0V | 0-2.6V | 0-2.6V | 5-12V | 0-2.6V | 0V | 0V |
| 程式化 | 0.7-1V | -0.5V/ 0V | 0.1-luA | Vinh (1-2V) | 4-11V | 0-2.6V | 0-2.6V | 4.5-5V | 0-2.6V | 4.5-5V | 0-1V |
圖15描繪神經元VMM陣列1500,其尤其適於如圖3中所示之記憶體單元310,且用作輸入層與下一層之間的突觸及神經元部分。VMM陣列1500包含非揮發性記憶體單元之記憶體陣列1503、第一非揮發性參考記憶體單元之參考陣列1501及第二非揮發性參考記憶體單元之參考陣列1502。EG線EGR0、EG0、EG1及EGR1豎直地沿行,而CG線CG0、CG1、CG2及CG3以及SL線WL0、WL1、WL2及WL3水平地沿行。除了VMM陣列1500實施雙向調諧以外,VMM陣列1500類似於VMM陣列1400,其中由於單獨EG線之使用,每個個別單元可視需要經完全抹除、部分程式化及部分抹除以達到浮動閘極上之所要電荷量。如所示,參考陣列1501及1502將端子BLR0、BLR1、BLR2及BLR3中之輸入電流轉換成待在列方向上施加至記憶體單元之控制閘極電壓CG0、CG1、CG2及CG3 (經由二極體連接之參考單元貫穿多工器1514進行之動作)。電流輸出(神經元)在位元線BL0至BLN中,其中每個位元線對來自連接至彼特定位元線之非揮發性記憶體單元的所有電流進行求和。
表8描繪用於VMM陣列1500之操作電壓。該表中之行指示置於以下各者上之電壓:選定單元之字線、未選定單元之字線、選定單元之位元線、未選定單元之位元線、選定單元之控制閘極、與選定單元相同扇區中之未選定單元之控制閘極、與選定單元不同扇區中之未選定單元之控制閘極、選定單元之抹除閘極、未選定單元之抹除閘極、選定單元之源極線及未選定單元之源極線。列指示讀取、抹除及程式化之操作。
表8:圖15之VMM陣列1500之操作
| WL | WL-未選定 | BL | BL-未選定 | CG | CG-未選定 相同扇區 | CG-未選定 | EG | EG-未選定 | SL | SL-未選定 | |
| 讀取 | 1.0-2V | -0.5V/ 0V | 0.6-2V (Ineuron) | 0V/FLT | 0-2.6V | 0-2.6 V | 0-2.6V | 0-2.6V | 0-2.6V | 0V | 0V/FLT |
| 抹除 | 0V | 0V | 0V | 0V | 0V | 4-9V | 0-2.6V | 5-12V | 0-2.6V | 0V | 0V |
| 程式化 | 0.7-1V | -0.5V/ 0V | 0.1-luA | Vinh (1-2V) | 4-11V | 0-2.6V | 0-2.6V | 4.5-5V | 0-2.6V | 4.5- 5V | 0-1V |
圖16描繪神經元VMM陣列1600,其尤其適於如圖2中所示之記憶體單元210,且用作輸入層與下一層之間的突觸及神經元部分。在VMM陣列1600中,輸入INPUT
0…INPUT
N分別在位元線BL
0…BL
N上經接收,且輸出OUTPUT
1、OUTPUT
2、OUTPUT
3及OUTPUT
4分別產生於源極線SL
0、SL
1、SL
2及SL
3上。
圖17描繪神經元VMM陣列1700,其尤其適於如圖2中所示之記憶體單元210,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0、INPUT
1、INPUT
2及INPUT
3分別在源極線SL
0、SL
1、SL
2及SL
3上經接收,且輸出OUTPUT
0…OUTPUT
N產生於位元線BL
0…BL
N上。
圖18描繪神經元VMM陣列1800,其尤其適於如圖2中所示之記憶體單元210,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0…INPUT
M分別在字線WL
0…WL
M上經接收,且輸出OUTPUT
0…OUTPUT
N產生於位元線BL
0…BL
N上。
圖19描繪神經元VMM陣列1900,其尤其適於如圖3中所示之記憶體單元310,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0…INPUT
M分別在字線WL
0…WL
M上經接收,且輸出OUTPUT
0…OUTPUT
N產生於位元線BL
0…BL
N上。
圖20描繪神經元VMM陣列2000,其尤其適於如圖4中所示之記憶體單元410,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0…INPUT
n分別在豎直控制閘極線CG
0…CG
N上經接收,且輸出OUTPUT
1及OUTPUT
2產生於源極線SL
0及SL
1上。
圖21描繪神經元VMM陣列2100,其尤其適於如圖4中所示之記憶體單元410,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0…INPUT
N分別在位元線控制閘極2901-1、2901-2…2901-(N-1)及2901-N之閘極上經接收,該等位元線控制閘極分別耦接至位元線BL
0…BL
N。例示性輸出OUTPUT
1及OUTPUT
2產生於源極線SL
0及SL
1上。
圖22描繪神經元VMM陣列2200,其尤其適於如圖3中所示之記憶體單元310、如圖5中所示之記憶體單元510及如圖7中所示之記憶體單元710,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0…INPUT
M在字線WL
0…WL
M上經接收,且輸出OUTPUT
0…OUTPUT
N分別產生於位元線BL
0…BL
N上。
圖23描繪神經元VMM陣列2300,其尤其適於如圖3中所示之記憶體單元310、如圖5中所示之記憶體單元510及如圖7中所示之記憶體單元710,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0…INPUT
M在控制閘極線CG
0…CG
M上經接收。輸出OUTPUT
0…OUTPUT
N分別產生於豎直源極線SL
0…SL
N上,其中每個源極線SL
i耦接至行i中之所有記憶體單元之源極線。
圖24描繪神經元VMM陣列2400,其尤其適於如圖3中所示之記憶體單元310、如圖5中所示之記憶體單元510及如圖7中所示之記憶體單元710,且用作輸入層與下一層之間的突觸及神經元部分。在此實施例中,輸入INPUT
0…INPUT
M在控制閘極線CG
0…CG
M上經接收。輸出OUTPUT
0…OUTPUT
N分別產生於豎直位元線BL
0…BL
N上,其中每個位元線BL
i耦接至行i中之所有記憶體單元之位元線。
長短期記憶體
先前技術包括被稱為長短期記憶體(LSTM)之概念。LSTM常常用於人工神經網路中。LSTM允許人工神經網路在預定任意時間間隔內記住資訊且在後續操作中使用彼資訊。習知LSTM包含單元、輸入閘極、輸出閘極及遺忘閘極。三個閘極調節資訊進入及離開單元之流動及在LSTM中記住資訊的時間間隔。VMM尤其適用於LSTM。
圖25描繪例示性LSTM 2500。LSTM 2500在此實施例中包含單元2501、2502、2503及2504。單元2501接收輸入向量x
0,且產生輸出向量h
0及單元狀態向量c
0。單元2502接收輸入向量x
1、來自單元2501之輸出向量(隱藏狀態) h
0及來自單元2501之單元狀態c
0,且產生輸出向量h
1及單元狀態向量c
1。單元2503接收輸入向量x
2、來自單元2502之輸出向量(隱藏狀態) h
1及來自單元2502之單元狀態c
1,且產生輸出向量h
2及單元狀態向量c
2。單元2504接收輸入向量x
3、來自單元2503之輸出向量(隱藏狀態) h
2及來自單元2503之單元狀態c
2,且產生輸出向量h
3。可使用額外單元,且具有四個單元之LSTM僅為實施例。
圖26描繪LSTM單元2600之例示性實施方案,該LSTM單元可用於圖25中之單元2501、2502、2503及2504。LSTM單元2600接收輸入向量x(t)、來自之前單元之單元狀態向量c(t-1)及來自之前單元之輸出向量h(t-1),且產生單元狀態向量c(t)及輸出向量h(t)。
LSTM單元2600包含S型函數構件2601、2602及2603,其中之每一者應用0與1之間的數字以控制輸入向量中之每一分量被允許通過輸出向量之量。LSTM單元2600亦包含用以將雙曲正切函數應用於輸入向量之雙曲正切構件2604及2605、用以將兩個向量相乘在一起之乘法器構件2606、2607及2608,以及用以將兩個向量相加在一起之加法構件2609。輸出向量h(t)可被提供至系統中之下一LSTM單元,或其可經存取以用於其他目的。
圖27描繪LSTM單元2700,其為LSTM單元2600之實施方案的實施例。為了方便讀者,來自LSTM單元2600之相同編號用於LSTM單元2700中。S型函數構件2601、2602及2603以及雙曲正切構件2604各自包含多個VMM陣列2701及激發電路區塊2702。因此,可見VMM陣列尤其適用於在某些神經網路系統中使用之LSTM單元。
圖28中展示LSTM單元2700之替代例(及LSTM單元2600之實施方案的另一實施例)。在圖28中,S型函數構件2601、2602及2603以及雙曲正切構件2604可以時間多工方式共用同一實體硬體(VMM陣列2801及激發函數區塊2802)。LSTM單元2800亦包含用以將兩個向量相乘在一起之乘法器構件2803、用以將兩個向量相加在一起之加法構件2808、雙曲正切構件2605 (其包含激發電路區塊2802)、用以當自S型函數區塊2802輸出i(t)時儲存值i(t)之暫存器2807、用以當經由多工器2810自乘法器構件2803輸出值f(t) * c(t-1)時儲存彼值之暫存器2804、用以當經由多工器2810自乘法器構件2803輸出值i(t) * u(t)時儲存彼值之暫存器2805,及用以當經由多工器2810自乘法器構件2803輸出值o(t) * c~(t)時儲存彼值之暫存器2806,以及多工器2809。
儘管LSTM單元2700含有多個集合之VMM陣列2701及各別激發函數區塊2702,但LSTM單元2800僅含有一個集合之VMM陣列2801及激發函數區塊2802,其用於表示LSTM單元2800之具體例中之多個層。LSTM單元2800將需要比LSTM 2700少的空間,此係因為LSTM單元2800相比於LSTM單元2700將需要1/4之空間用於VMM及激發函數區塊。
可進一步瞭解,LSTM單元將通常包含多個VMM陣列,其中之每一者需要由VMM陣列外部之某些電路區塊(諸如求和器及激發電路區塊以及高電壓產生區塊)提供的功能性。為每個VMM陣列提供單獨電路區塊將需要半導體構件內之大量空間且將略微低效。因此,下文所描述之具體例嘗試最小化VMM陣列自身在外部所需之電路。
閘控循環單元
類比VMM實施方案可用於閘控循環單元(GRU)。GRU為循環人工神經網路中之閘控機構。除了GRU單元通常含有少於LSTM單元之組件以外,GRU類似於LSTM。
圖29描繪例示性GRU 2900。在此實施例中,GRU 2900包含單元2901、2902、2903及2904。單元2901接收輸入向量x
0且產生輸出向量h
0。單元2902接收輸入向量x
1、來自單元2901之輸出向量h
0且產生輸出向量h
1。單元2903接收輸入向量x
2及來自單元2902之輸出向量(隱藏狀態) h
1,且產生輸出向量h
2。單元2904接收輸入向量x
3及來自單元2903之輸出向量(隱藏狀態) h
2,且產生輸出向量h
3。可使用額外單元,且具有四個單元之GRU僅為實施例。
圖30描繪GRU單元3000之例示性實施方案,該GRU單元可用於圖29的單元2901、2902、2903及2904。GRU單元3000接收輸入向量x(t)及來自之前GRU單元之輸出向量h(t-1),且產生輸出向量h(t)。GRU單元3000包含S型函數構件3001及3002,其中之每一者將0與1之間的數字應用至來自輸出向量h(t-1)及輸入向量x(t)之分量。GRU單元3000亦包含用以將雙曲正切函數應用至輸入向量之雙曲正切構件3003,用以將兩個向量相乘在一起之複數個乘法器構件3004、3005及3006,用以將兩個向量相加在一起之加法構件3007,及用以自1減去輸入以產生輸出之互補構件3008。
圖31描繪GRU單元3100,其為GRU單元3000之實施方案的實施例。為方便讀者,與GRU單元3000相同之編號用於GRU單元3100中。如圖31中可見,S型函數構件3001及3002以及雙曲正切構件3003各自包含多個VMM陣列3101及激發函數區塊3102。因此,可見VMM陣列尤其用於在某些神經網路系統中使用之GRU單元。
圖32中展示GRU單元3100之替代例(及GRU單元3000之實施方案的另一實施例)。在圖32中,GRU單元3200利用VMM陣列3201及激發函數區塊3202,該VMM陣列及激發函數區塊在經組構為S型函數時應用0與1之間的數字以控制輸入向量中之每一分量被允許通過輸出向量之量。在圖32中,S型函數構件3001及3002以及雙曲正切構件3003以時間多工方式共用同一實體硬體(VMM陣列3201及激發函數區塊3202)。GRU單元3200亦包含用以將兩個向量相乘在一起之乘法器構件3203、用以將兩個向量相加在一起之加法構件3205、用以自1減去輸入以產生輸出之互補構件3209、多工器3204、用以當經由多工器3204自乘法器構件3203輸出值h(t-1) * r(t)時保持彼值之暫存器3206、用以當經由多工器3204自乘法器構件3203輸出值h(t-1) *z(t)時保持彼值之暫存器3207,及用以當經由多工器3204自乘法器構件3203輸出值h^(t) * (1-z(t))時保持彼值之暫存器3208。
雖然GRU單元3100含有多個集合之VMM陣列3101及激發函數區塊3102,但GRU單元3200僅含有一個集合之VMM陣列3201及激發函數區塊3202,其用於表示GRU單元3200之具體例中之多個層。GRU單元3200將需要比GRU單元3100少的空間,此係因為GRU單元3200相比於GRU單元3100將需要1/3之空間用於VMM及激發函數區塊。
可進一步瞭解,利用GRU之系統將通常包含多個VMM陣列,其中之每一者需要由VMM陣列外部之某些電路區塊(諸如求和器及激發電路區塊以及高電壓產生區塊)提供的功能性。為每個VMM陣列提供單獨電路區塊將需要半導體構件內之大量空間且將略微低效。因此,下文所描述之具體例嘗試最小化VMM陣列自身在外部所需之電路。
至VMM陣列之輸入可為類比層級、二進位層級、定時脈衝或數位位元,且輸出可為類比層級、二進位層級、定時脈衝或數位位元(在此情況下,需要輸出ADC將輸出類比層級電流或電壓轉換成數位位元)。
對於VMM陣列中之每個記憶體單元,每個權重w可由單個記憶體單元或差分單元或兩個混合記憶體單元(2個或更多個單元之平均值)實施。在差分單元情況下,需要兩個記憶體單元以將權重w實施為差分權重(w = w+ - w-)。在兩個混合記憶體單元中,需要兩個記憶體單元以將權重w實施為兩個單元之平均值。
用於VMM中之單元的精確程式化之具體例
現將描述藉由遞增或遞減施加至記憶體單元之不同端子之程式化電壓而在VMM內精確程式化記憶體單元之具體例。
圖33A描繪程式化方法3300。首先,開始該方法(步驟3301),該步驟通常係回應於接收到程式化(調諧)命令而發生。接下來,批量程式化操作將所有單元程式化至「0」狀態(步驟3302)。接著,軟抹除操作將所有單元抹除至中間弱抹除層級,使得每個單元將在讀取操作期間汲取例如大約3至5 μA之電流(步驟3303)。此與深度抹除之最大層級形成對比,其中每個單元將在讀取操作期間汲取大約~20至30 μA之電流。軟抹除係例如藉由施加遞增抹除電壓脈衝,直至達到中間單元電流為止進行的。遞增抹除電壓脈衝用以自硬抹除(亦即,最大抹除層級)限制記憶體單元所經歷之降級。接著,對所有未選定單元執行硬程式化,使其處於極深的程式化狀態,以將電子添加至單元的浮動閘極(步驟3304),以確保彼等單元實際上為「關閉」的,此意謂彼等單元將在讀取操作期間汲取可忽略量之電流,例如未使用之記憶體單元。硬程式化係例如用較高遞增程式化電壓脈衝及/或較長程式化時間執行的。
接著對選定單元執行粗略程式化方法(以使單元更接近於目標,例如2倍至100倍之目標) (步驟3305),隨後對選定單元執行精度程式化方法(步驟3306)以程式化每個選定單元所要之精確值。
圖33B描繪另一程式化方法3310,其類似於程式化方法3300。然而,代替如圖33A之步驟3302中的將所有單元程式化至「0」狀態之程式化操作,在開始該方法(步驟3301)之後,使用軟抹除操作以將所有單元抹除至「1」狀態(步驟3312)。接著,使用軟程式化操作(步驟3313)以將所有單元程式化至中間層級,使得每個單元將在讀取操作期間汲取大約3至5uA之電流。然後,執行如圖33A中之粗略程式化方法3305及精度程式化方法3306。圖33B的具體例之變化將完全移除軟程式化操作(步驟3313)。可使用多個粗略程式化方法以加速程式化,諸如藉由在執行精度(精細)程式化步驟3306之前以多個逐漸變小之粗略目標為目標。例如用精細(精度)遞增程式化電壓脈衝或恆定程式化定時脈衝進行精度程式化方法3306。
記憶體單元之不同端子可用於粗略程式化方法3305及精度程式化方法3306。亦即,在粗略程式化方法3305期間,將更改施加至記憶體單元之端子中之一者(其可被稱作粗略程式化端子)的電壓,直至在浮動閘極20內實現所要電壓位準為止,且在精度程式化方法3306期間,將更改施加至記憶體單元之端子中之一者(其可被稱作精度程式化端子)的電壓,直至實現所要位準為止。表9中展示可用作粗略程式化端子及精度程式化端子之端子的各種組合:
表9:用於粗略及精度程式化方法之記憶體單元端子
端子之其他組合可能用於粗略程式化及精度程式化步驟。
| 程式化序列名稱 | 粗略程式化端子 | 精度程式化端子 | 可適用記憶體單元類型 |
| CG-CG | 控制閘極28 (CG) | 控制閘極28 (CG) | 310,410,510,710 |
| CG-EG | 控制閘極28 (CG) | 抹除閘極30 (EG) | 410 |
| CG-EG | 控制閘極28 (CG) | 控制閘極28 (CG)及抹除 閘極30 (EG)或源極線14 (SL) | 410 |
| EG-EG | 抹除閘極30 (EG) | 抹除閘極30 (EG) | 410,610 |
| EG-CG | 抹除閘極30 (EG) | 控制閘極28 (CG) | 410 |
| CG-SL | 控制閘極28 (CG) | 源極線14 (SL) | 310,410,510,710 |
| SL-CG | 源極線14 (SL) | 控制閘極28 (CG) | 310,410,510,710 |
| SL-EG | 源極線14 (SL) | 抹除閘極30 (EG) | 410,610 |
圖34描繪粗略程式化方法3305之第一具體例,其為搜尋及執行方法3400。首先,執行查找表搜尋或函數(I-V曲線),以基於意欲儲存於選定單元中之值判定用於彼選定單元之粗略目標電流值(I
CT)(步驟3401)。此表係例如藉由矽特性化或自晶圓測試中之校準創建。選定單元可經程式化以儲存N個可能值(例如,128個、64個、32個等)中之一者。N個值中之每一者對應於由選定單元在讀取操作期間汲取之不同所要電流值(I
D)。在一個具體例中,查找表可能含有M個可能電流值,以在搜尋及執行方法3400期間用作用於選定單元之粗略目標電流值I
CT,其中M為小於N的整數。例如,若N為8,則M可為4,此意謂存在選定單元可儲存之8個可能值,且4個粗略目標電流值中之一者將被選擇為用於搜尋及執行方法3400之粗略目標。亦即,搜尋及執行方法3400(其同樣為粗略程式化方法3305之具體例)意欲將選定單元快速地程式化至在某種程度上接近於所要值(I
D)之值(I
CT),且接著精度程式化方法3306意欲更精確地程式化選定單元以實現或極接近於所要值(I
D)。
表10及11中針對N=8及M=4之簡單實施例描繪單元值、所要電流值及粗略目標電流值的實施例:
表10:用於N=8之N個所要電流值的實施例
表11:用於M=4之M個目標電流值的實施例
偏移值I
CTOFFSETx用於防止在粗略調諧期間過衝所要電流值。
| 待儲存於選定單元中之值 | 所要電流值(I D) |
| 000 | 0.5 nA |
| 001 | 1 nA |
| 010 | 1.5 nA |
| 011 | 2 nA |
| 100 | 2.5 nA |
| 101 | 3 nA |
| 110 | 3.5 nA |
| 111 | 4 nA |
| 粗略目標電流值(I CT) | 相聯結單元值 |
| 4 nA+ I CTOFFSET1 | 000,001 |
| 8 nA+ I CTOFFSET2 | 010,011 |
| 12 nA+ I CTOFFSET3 | 100,101 |
| 16 nA+ I CTOFFSET4 | 110,111 |
一旦選擇了粗略目標電流值I
CT,在步驟3402中,藉由根據上文表9中所列之序列中之一者將初始電壓v
0施加至選定單元之粗略程式化端子來程式化選定單元。(視情況,可自儲存v
0相較於粗略目標電流值I
CT之電壓查找表判定初始電壓v
0的值及適當粗略程式化端子):
表12:施加至粗略程式化端子之初始電壓v
0
| 程式化序列名稱 | 粗略程式化端子 | 施加至粗略程式化端子之初始電壓v 0 |
| CG-CG | 控制閘極28 (CG) | 3-6V |
| CG-EG | 控制閘極28 (CG) | 3-6V |
| EG-EG | 抹除閘極30 (EG) | 0-3V |
| CG-SL | 控制閘極28 (CG) | 3-6V |
| SL-CG | 源極線14 (SL) | 3-4V |
| SL-EG | 源極線14 (SL) | 3-4V |
接下來,在步驟3403中,藉由將電壓v
i= v
i-1+v
increment施加至粗略程式化端子來程式化選定單元,其中i在1處開始且每當重複此步驟時遞增,且其中v
increment為粗略電壓之增量,其將引起適於所要改變之精細度的程式化程度。因此,執行第一次步驟3403,i=1,且v
1將為v
0+ v
increment。接著,進行驗證操作(步驟3404),其中對選定單元執行讀取操作且量測經由選定單元汲取之電流(I
cell)。若I
cell小於或等於I
CT(其在此處為第一臨限值),則完成搜尋及執行方法3400且可開始精度程式化方法3306。若I
cell不小於或等於I
CT,則重複步驟3403,且i遞增。
因此,在結束粗略程式化方法3305且開始精度程式化方法3306時,電壓v
i將為施加至粗略程式化端子以程式化選定單元之最後電壓,且選定單元將正儲存與粗略目標電流值I
CT相聯結之值,特定言之其小於或等於I
CT。精度程式化方法3306之目標為將選定單元程式化至在讀取操作期間汲取電流I
D(±諸如+/-30%或更小之可接受偏差容限)之點,該電流為與意欲儲存於選定單元中之值相聯結之所要電流值。
圖35描繪不同電壓進展之實施例,該等電壓可根據表9在粗略程式化方法3305期間施加至選定記憶體單元之粗略程式化端子,及/或在精度程式化方法3306期間施加至選定記憶體單元之精度程式化端子。
在第一方法下,在進展中將增大之電壓施加至粗略程式化端子及/或精度程式化端子以進一步程式化選定記憶體單元。開始點為v
i,其為在粗略程式化方法3305期間施加的最後電壓。增量v
p1被添加至v
i,且電壓v
i+ v
p1接著用於程式化選定單元(由進展3501中之左側的第二脈衝指示)。v
p1係小於v
increment(在粗略程式化方法3305期間使用的電壓增量)的增量。在每個程式化電壓被施加至程式化端子之後,執行驗證步驟(類似於步驟3404),在該步驟中判定Icell是否小於或等於I
PT1(其為第一精度目標電流值且此處為第二臨限值),其中I
PT1= I
D+ I
PT1OFFSET,其中I
PT1OFFSET為經添加以防止程式化過衝之偏移值。若否,則將另一增量v
p1添加至先前施加之程式化電壓,且重複該程序。重複此過程,直至I
cell小於或等於I
PT1時為止,此時停止程式化序列的此部分。視情況,若I
PT1以充分精度等於I
D或幾乎等於I
D,則成功地程式化選定記憶體單元。
若I
PT1不足夠接近I
D,則可進行較小精細度的進一步程式化。此處,現在使用進展3502。用於進展3502之開始點為用於進展3501下之程式化的最後電壓。增量V
p2(其小於v
p1)被添加至彼電壓,且經組合電壓被施加至精度程式化端子以程式化選定記憶體單元。在施加了每個程式化電壓之後,執行驗證步驟(類似於步驟3404),在該步驟中判定I
cell是否小於或等於I
PT2(其為第二精度目標電流值且此處為第三臨限值),其中I
PT2= ID + I
PT2OFFSET,I
PT2OFFSET為經添加以防止程式化過衝之偏移值。若否,則將另一增量V
p2添加至先前施加之程式化電壓,且重複該程序。重複此過程,直至I
cell小於或等於I
PT2時,此時停止程式化序列的此部分。此處,假定I
PT2等於I
D或足夠接近I
D使得程式化可停止,此係由於已以充分精度實現目標值。一般熟習此項技術者可瞭解,可用所使用之越來越小的程式化增量來應用額外進展。例如,在圖36A中,應用三個進展(3601、3602及3603)而非僅兩個。
在進展3503中展示第二方法。此處,代替增大在選定記憶體單元之程式化期間施加之電壓,在逐漸增大週期之持續時間內施加相同電壓(諸如V
i或V
i+V
p1+V
p1或V
i+V
P2+V
P2)。代替添加增量電壓,諸如進展3501中之v
p1及進展3502中之v
p2,時間t
p1之額外增量被添加至程式化脈衝,使得每個所施加脈衝比先前施加之脈衝長t
p1。在將每個程式化脈衝施加至精度程式化端子之後,執行相同驗證步驟,如先前針對進展3501所描述。視情況,可應用額外進展,其中經添加至程式化脈衝之額外時間增量的持續時間短於先前所使用的進展。
視情況,可應用額外程式化循環進展,其中程式化脈衝之持續時間相同於先前所使用的程式化循環進展。儘管僅展示一個時間進展,但一般熟習此項技術者將瞭解,可應用任何數目個不同時間進展。亦即,代替更改程式化期間使用之電壓量值或更改程式化期間使用之電壓脈衝週期,系統可替代地更改所使用程式化循環之數目。
圖36B展示互補脈衝程式化進展之圖,其中施加至一個精度程式化端子之電壓增大而施加至另一精度程式化端子之電壓降低。例如,增大之電壓進展可應用於選定單元之控制閘極,且降低之電壓進展被應用於選定單元之抹除閘極或源極線。或在替代例中,增大之電壓進展可應用於選定單元之抹除閘極或源極線,且降低之電壓進展被應用於選定單元之控制閘極。此等互補漸進性程式化脈衝帶來較大程式化精度。例如,在具有l0mV之CG增量及20mV之EG減量之程式化脈衝循環中,在精度程式化脈衝循環之後FG中之所得電壓為10mV*40% - 20mV*15% =~ lmV,其中假定相較於FG,存在40%之CG耦合比及10%之EG耦合比。此互補脈衝程式化方法可用於粗略程式化步驟3305之後的精度程式化步驟3306,此係由於粗略程式化步驟3305通常將僅在其程式化操作期間使用CG增量或EG增量。
現將為粗略程式化方法3305之第二及第三具體例提供額外細節。
圖37描繪粗略程式化(調諧)方法3305之第二具體例,其為自適應校準方法3700。該方法開始(步驟3701)。藉由根據表9中所示之序列中之一者將初始電壓v
0施加至粗略程式化端子來程式化單元(步驟3702)。不同於搜尋及執行方法3400,此處,v
0並非自查找表導出,且替代地可為相對較小之預定初始值。在第一電流值IR1(例如,l00na)下量測單元之控制閘極(或抹除閘極)電壓(其可被稱作CG1或EG1),且在第二電流值IR2(例如,10na)下量測同一閘極上之電壓(其可被稱作CG2或EG2),亦即在IR2為IR1之10%的非限制性具體例中,且基於彼等量測判定次臨限I-V斜率(例如,電流之360mV/dec或dV/d LOG (I))並進行儲存(步驟3703)。線性區中之I-V斜率將為dV/dI。
判定新程式化電壓v
i。第一次執行此步驟,即i=l,且使用諸如以下之次臨限等式基於所儲存次臨限斜率值以及電流目標及偏移值來判定程式化電壓v
1:
,
v
increment與Vg之斜率成比例
此處,wa為記憶體單元之w,Ids為單元電流,Io為Vg=Vth時之單元電流,Vt為熱電壓,且在利用自1至2之g時,其中判定電流IR1下之V1且判定電流IR2下之V2。
斜率 = (V1 - V2) / (LOG(IR1) - LOG(IR2))
其中v
increment= α*斜率* (LOG (IR1) - LOG (I
CT))
,其中I
CT為目標電流且α為<1之預定常數(程式化偏移值)以防止過衝,例如,0.9。
若所儲存斜率值相對急劇,則可使用相對較小之電流偏移值。若所儲存斜率值相對較扁平,則可使用相對較高的電流偏移值。因此,判定斜率資訊將允許選擇針對所討論的特定單元定製的電流偏移值。此通常將使程式化程序較短。當重複步驟3704時,i遞增,且v
i= v
i-1+ v
increment 。接著藉由將v
i施加至粗略自適應程式化端子來程式化單元。亦可自儲存v
increment的值相較於目標電流值之查找表判定v
increment。
接下來,進行驗證操作,其中對選定單元執行讀取操作,且量測經由選定單元汲取之電流(I
cell) (步驟3705)。若I
cell小於或等於I
CT(其在此處為粗略目標臨限值),其中I
CT= I
D+ I
CTOFFSET,其中I
CTOFFSET係經添加以防止程式化過衝之偏移值,則完成自適應校準方法3700且可開始精度程式化方法3306。若I
cell並不小於或等於I
CT,則重複步驟3704至3705(其中用新資料點量測新斜率量測)或步驟3703至3705(其中再用先前使用之同一斜率),且i遞增。
圖38描繪用於實施方法3703之電路的高階方塊圖。電流源3801用於將例示性電流值IR1及IR2施加至選定單元(此處為記憶體單元3802),且接著量測記憶體單元3802之粗略程式化端子處的電壓(對於IR1為V1(VCGR1或VEGR1)且對於IR2為V2(VCGR2或VEGR2)),其中粗略程式化端子係根據表9選定的。線性斜率將為LOG I-V曲線上之單元電流的(Vl-V2)/十進位,或等效地等於(V1 - V2)/ ( LOG (IR1) - LOG (IR2))。
圖39描繪程式化方法3305之第三具體例,其為自適應校準方法3900。該方法開始(步驟3901)。藉由將v
0施加至單元之粗略自適應程式化端子而在預設開始值v
0下程式化單元(步驟3902)。v
0係自查找表導出,諸如自矽特性創建,該表值經偏移以便不過衝經程式化目標。表13中展示v
0之實施例:
表13:自適應校準方法3900期間施加至粗略自適應程式化端子之初始電壓v
0
| 程式化序列名稱 | 粗略自適應程式化端子 | 施加至粗略程式化端子之初始電壓v 0 | V1 | V2 |
| CG-CG | 控制閘極28 (CG) | ~5-7V | ~1.3 | ~1.5V |
| CG-EG | 控制閘極28 (CG) | ~5-7V | ~1.3 | ~1.5V |
| EG-EG | 抹除閘極30 (EG) | ~0-2V | ~1.3 | ~1.5V |
| CG-SL | 控制閘極28 (CG) | ~5-7V | ~1.3 | ~1.5V |
| SL-CG | 源極線14 (SL) | ~3-3.5V | ~1.3 | ~1.5V |
| SL-EG | 源極線14 (SL) | ~3-3.5V | ~1.3 | ~1.5V |
在步驟3903中,創建用於預測下一程式化電壓之I-V斜率參數。將第一電壓V1施加至選定單元之控制閘極或抹除閘極,且量測所得單元電流IR
1。接著將第二電壓V2施加至選定單元之控制閘極或抹除閘極,且量測所得單元電流IR
2。斜率係例如根據次臨限區(在次臨限中操作之單元)中之等式而基於彼等量測經判定且經儲存:
斜率 = (V1 - V2) / (LOG(IR
1) - LOG(IR
2))
(步驟3903)。上文表13中展示V1及V2之值的實施例。
判定I-V斜率資訊允許選擇針對所討論的特定單元定製之v
increment值。此通常將使程式化程序較短。
每當執行步驟3904時,i在初始值為0之情況下遞增,以使用諸如以下之等式基於所儲存斜率值以及電流目標及偏移值而判定所要程式化電壓v
i:
,
其中v
increment=α*斜率* (LOG(IR
1) - LOG(I
CT)),
其中I
CT為目標電流且α為<1之預定常數(程式化偏移值)以防止過衝,例如,0.9。
接著使用v
i程式化選定單元。(步驟3905)
接下來,進行驗證操作,其中對選定單元執行讀取操作,且量測經由選定單元汲取之電流(I
cell) (步驟3906)。若I
cell小於或等於I
CT(其在此處為粗略目標臨限值),其中I
CT= I
D+ I
CTOFFSET,其中I
CTOFFSET為經添加以防止程式化過衝之偏移值,則該程序繼續進行至步驟3907。若否,則程序返回至步驟3903(新斜率量測)或3904(再用先前斜率)且i遞增。
在步驟3907中,將I
cell與小於I
CT之臨限值I
CT2進行比較。此步驟之目的為查看是否已發生過衝。亦即,儘管該目標係使I
cell低於I
CT,但若其遠低於I
CT,則會發生過衝且所儲存值可實際上對應於錯誤值。若I
cell並不小於或等於I
CT2,則不會發生過衝,且自適應校準方法3900已完成,此時,該程序行進至精度程式化方法3306。若I
cell小於或等於I
CT2,則會發生過衝。接著抹除選定單元(步驟3908),且程式化程序在步驟3902處開始。視情況,若步驟3908被執行多於預定次數,則可認為選定單元為不應使用之不良單元,且輸出識別單元之錯誤信號或旗標集合。
精度程式化方法3306可由多個驗證及程式化循環組成,其中藉由具有固定脈衝寬度之恆定精細電壓遞增程式化電壓,或其中程式化電壓為固定的且針對每個額外程式化脈衝變化程式化脈衝寬度。
視情況,判定讀取或驗證操作期間通過選定非揮發性記憶體單元之電流是否小於或等於第一臨限電流值的步驟3906可藉由如下操作來執行:將固定偏壓施加至非揮發性記憶體單元之端子,量測及數位化由選定非揮發性記憶體單元汲取之電流以產生數位輸出位元,以及比較數位輸出位元與表示第一臨限電流I
CT之數位位元。
視情況,判定讀取或驗證操作期間通過選定非揮發性記憶體單元之電流是否小於或等於第二臨限電流值之步驟3907可藉由如下操作來執行:將固定偏壓施加至非揮發性記憶體單元之端子,量測及數位化由選定非揮發性記憶體單元汲取之電流以產生數位輸出位元,以及比較數位輸出位元與表示第二臨限電流I
CT2之數位位元。
視情況,判定讀取或驗證操作期間通過選定非揮發性記憶體單元之電流是否分別小於或等於第一或第二臨限電流值之步驟3906、3907中之每一者可藉由如下操作來執行:將輸入施加至非揮發性記憶體單元之端子,用輸出脈衝調變由選定非揮發性記憶體單元汲取之電流以產生經調變輸出,數位化經調變輸出以產生數位輸出位元,及比較數位輸出位元與分別表示第一或第二臨限電流值之數位位元。
可藉由在多次,例如8至32次內達到平均數來進行出於驗證或讀取電流之目的量測單元電流,以減小雜訊之影響。
圖40描繪粗略程式化方法3305之第四具體例,其為絕對校準方法4000。該方法開始(步驟4001)。在預設開始值v
0下程式化單元之相關端子(步驟4002)。表14中展示v
0之實施例:
表14:絕對校準方法4000期間施加至記憶體單元端子之初始電壓v
0
| 程式化序列名稱 | 粗略程式化端子 | 施加至粗略程式化端子 之初始電壓v 0 |
| CG-CG | 控制閘極28 (CG) | ~5-7V |
| CG-EG | 控制閘極28 (CG) | ~5-7V |
| EG-EG | 抹除閘極30 (EG) | ~0-2V |
| CG-SL | 控制閘極28 (CG) | ~5-7V |
| SL-CG | 源極線14 (SL) | ~3-3.5V |
| SL-EG | 源極線14 (SL) | ~3-3.5V |
在驅動通過單元之電流值Itarget下量測粗略程式化端子上之電壓vTx,如上文關於圖38所描述,並儲存該電壓(步驟4003)。基於所儲存電壓vTx及偏移值vToffset(其對應於Ioffset)判定新粗略程式化電壓v
1(步驟4004)。例如,新所要電壓v
1可如下計算:v
1= v
0+ (VTBIAS - vTx) - vToffset,其中VTBIAS例如=~ 1.5V,其為在最大目標電流(意指記憶體單元允許之最大電流位準)下之預設端子電壓。基本上,藉由為目標電流下之當前電壓vTx與最大電壓的差之量及偏移來調整新目標電壓。
接著使用v
i程式化單元(步驟4005)。當i=1時,使用來自步驟4004之電壓v
1。當i>=2時,使用電壓v
i= v
i-1+ v
increment。可自儲存v
increment的值相較於目標電流值之查找表判定v
increment。接下來,進行驗證操作,其中對選定單元執行讀取操作,且將經由選定單元汲取之電流(I
cell)相比於I
CT(步驟4006)。若I
cell小於或等於I
CT(其在此處為臨限值),則完成絕對校準方法4000且可開始精度程式化方法3306。若I
cell並不小於或等於I
CT,則重複步驟4005至4006且i遞增。
圖41描繪用於量測絕對校準方法4000之步驟4003中的vTx之電路4100。vTx係在每個記憶體單元4103 (4103-0、4103-1、4103-2…4103-n)上量測的。此處,n+1個不同電流源4101 (4101-0、4101-1、4101-2…4101-n)產生具有逐漸增大的量值之不同電流IO0、IO1、IO2…IOn。每個電流源4101連接至各別反相器4102 (4102-0、4102-1、4102-2…4102-n)及記憶體單元4103 (4103-0、4103-1、4103-2…4103-n)。至每個反相器4102 (4102-0、4102-1、4102-2…4102-n)之輸入最初為高,且每個反相器之輸出最初為低。因為IO0 < IO1 < IO2 <…< IOn,所以反相器4102-0之輸出將首先自低切換為高,此係因為記憶體單元4103-0將自電流源4101-0且亦自反相器4102-0之輸入節點汲取電流,從而使至反相器4102-0之輸入電壓在至其他反相器4102之輸入電壓之前降為低。反相器4102-1之輸出接下來將自低切換為高,接著反相器4102-2之輸出將自低切換為高等等,直至反相器4102-n的輸出自低切換為高為止。每個反相器4102控制各別開關4104 (4104-0、4104-1、4104-2…4104-n),使得在反相器4102之輸出為高時,開關4104閉合,此將使得由電容器4105 (4105-0、4105-1、4105-2…4105-n)取樣vTx。因此,開關4104及電容器4105形成取樣保持電路。以此方式,使用取樣保持電路來量測vTx。
圖42描繪用於在自適應校準方法3700或絕對校準方法4000期間程式化選定單元之例示性進展4200。使用位元線啟用信號En_blx(其中x在1與n之間變化,其中n為位元線之數目)將電壓VTP(其為施加至CG或EG端子之程式化電壓且對應於圖37之步驟3704中的vi及圖40之步驟4005中的vi)施加至選定記憶體單元之端子。
圖43描繪用於在自適應校準方法3700或絕對校準方法4000期間程式化選定單元之另一例示性進展4300。使用位元線啟用信號En_blx(其中x在1與n之間變化,其中n為位元線之數目)將電壓VTP(其為施加至CG或EG端子之程式化電壓且對應於圖37之步驟3704中的vi及圖40之步驟4005中的vi)施加至選定記憶體單元之端子。
在另一具體例中,施加至控制閘極端子之電壓經遞增且施加至抹除閘極端子之電壓亦經遞增。
在另一具體例中,施加至控制閘極端子之電壓經遞增且施加至抹除閘極端子之電壓經遞減。此例示於表15中:
表15:控制閘極端子增量及抹除閘極端子減量
| VCG 增量 mV | VEG 減量 mV | CG-FG 耦合比 | 由於VCG增量之差量VFG mV | EG-FG耦合比 | 由於VEG減量之差量VFG mV | 總差量VFG mV |
| 10 | -10 | 40% | 4 | 15% | -1.5 | 2.5 |
| 10 | -20 | 40% | 4 | 15% | -3 | 1 |
| 20 | -50 | 40% | 8 | 15% | -7.5 | 0.5 |
為比較起見,表16中含有僅遞增控制閘極端子或僅遞增抹除閘極端子之實施例:
表16:控制閘極端子增量;抹除閘極端子增量
| 情況1:VCG遞增 | |||
| vcg增量mV | CG-FG耦合比 | 差量VFG mV | |
| 10 | 40% | 4 | |
| 情況2:VEG遞增 | |||
| veg增量mV | CG-FG耦合比 | 差量VFG mV | |
| 10 | 15% | 1.5 |
圖44描繪用於實施輸入及輸出方法之系統,該輸入及輸出方法用於在精度程式化之後在VMM陣列內進行讀取或驗證。輸入函數電路4401接收數位位元值,並將彼等數位值轉換成接著用於將電壓施加至陣列4404中之選定單元的控制閘極之類比信號,其中選定單元係經由控制閘極解碼器4402經判定。同時,字線解碼器4403亦用於選擇選定單元所位於的列。輸出神經元電路區塊4405接收來自陣列4404中之單元的每一行的輸出電流。輸出電路區塊4405可包含積分類比至數位轉換器(ADC)、逐次近似(SAR) ADC、積分三角ADC或任何其他ADC方案以提供數位輸出。
在一個具體例中,提供至輸入函數電路4401之數位值包含四個位元(DIN3、DIN2、DIN1及DIN0)或任何數目個位元,且由彼等位元表示之數位值對應於程式化操作期間待施加至控制閘極的數個輸入脈衝。較大數目之脈衝將使得在單元中儲存較大值,在單元經讀取時此將帶來較大輸出電流。表17中展示輸入位元值及脈衝值之實施例:
表17:數位位元輸入相較於所產生脈衝
| DIN3 | DIN2 | DIN1 | DIN0 | 所產生輸入脈衝 |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 0 | 2 |
| 0 | 0 | 1 | 1 | 3 |
| 0 | 1 | 0 | 0 | 4 |
| 0 | 1 | 0 | 1 | 5 |
| 0 | 1 | 1 | 0 | 6 |
| 0 | 1 | 1 | 1 | 7 |
| 1 | 0 | 0 | 0 | 8 |
| 1 | 0 | 0 | 1 | 9 |
| 1 | 0 | 1 | 0 | 10 |
| 1 | 0 | 1 | 1 | 11 |
| 1 | 1 | 0 | 0 | 12 |
| 1 | 1 | 0 | 1 | 13 |
| 1 | 1 | 1 | 0 | 14 |
| 1 | 1 | 1 | 1 | 15 |
在上文實施例中,對於4個位元之數位輸入,存在最大15個脈衝。每個脈衝等於一個單位的單元值(電流),亦即精度程式化電流。例如,若Icell單位=1nA,則對於DIN[3-0] = 0001,Icell = l*1nA = 1nA;且對於DIN[3-0] = 1111,Icell = 15*1nA = 15nA。
在另一具體例中,數位位元輸入使用數位位元位置求和以讀出單元或神經元(例如,位元線輸出上之精確程式化值)值,如表18中所示。此處,僅需要4個脈衝或4個固定的相同偏壓輸入(例如,字線或控制閘極上之輸入)來評估4個位元之數位值。例如,第一脈衝或第一固定偏壓用於評估DIN0,與第一脈衝或第一固定偏壓具有相同值的第二脈衝或第二固定偏壓用於評估DIN1,與第一脈衝或第一固定偏壓具有相同值的第三脈衝或第三固定偏壓用於評估DIN2,且與第一脈衝或第一固定偏壓具有相同值的第四脈衝或第四固定偏壓用於評估DIN3。接著,根據位元位置對來自四個脈衝之結果進行求和,其中每個輸出結果乘以為2^n之乘法器因數(藉由其縮放),n係如表19中所示之數位位元位置。所實現數位位元求和等式為如下:輸出=2^0*DIN0 + 2^1*DIN1 + 2^2*DIN2 + 2^3*DIN3)*Icell單位,其中Icell單位表示精度程式化電流。
例如,若Icell單位=1nA,則對於DIN[3-0] = 0001,Icell總數= 0+0+0+l*lnA = 1nA;且對於DIN[3-0] = 1111,Icell總數= 8* 1nA + 4* 1nA + 2* 1nA + l*1nA =15nA。
表18:數位位元輸入求和
表19:具有2^n輸出乘法因數之數位輸入位元Dn求和
| 2^3*DIN3 | 2^2*DIN2 | 2^1*DIN1 | 2^0*DIN0 | 總數值 |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 2 | 0 | 2 |
| 0 | 0 | 2 | 1 | 3 |
| 0 | 4 | 0 | 0 | 4 |
| 0 | 4 | 0 | 1 | 5 |
| 0 | 4 | 2 | 0 | 6 |
| 0 | 4 | 2 | 1 | 7 |
| 8 | 0 | 0 | 0 | 8 |
| 8 | 0 | 0 | 1 | 9 |
| 8 | 0 | 2 | 0 | 10 |
| 8 | 0 | 2 | 1 | 11 |
| 8 | 4 | 0 | 0 | 12 |
| 8 | 4 | 0 | 1 | 13 |
| 8 | 4 | 2 | 0 | 14 |
| 8 | 4 | 2 | 1 | 15 |
| DIN3 | DIN2 | DIN1 | DIN0 | 輸出X因數 |
| Y | X1 | |||
| Y | X2 | |||
| Y | X4 | |||
| Y | X8 |
對於例示性4位元數位輸入,具有具多個數位輸入脈衝範圍及輸入數位範圍求和的混合輸入之另一具體例在表20中展示。在此具體例中,DINn-0可劃分成m個不同群組,其中評估每個群組且藉由乘以群組二進位位置之乘法因數來縮放輸出。作為實施例,對於4位元DIN3-0,群組可為DIN3-2及DIN1-0,其中用於DIN1-0之輸出係藉由一(X1)縮放且用於DIN3-2之輸出係藉由4(X4)縮放。
表20:具有多個輸入範圍之混合式輸入輸出求和
| DIN 3 | DIN2 | DIN1 | DIN0 | 輸入脈衝(或等效脈衝寬度) | 輸出X因數 | ||
| 0 | 0 | 0 | X1 | ||||
| 0 | 1 | 1 | X1 | ||||
| 1 | 0 | 2 | X1 | ||||
| 1 | 1 | 3 | X1 | ||||
| 0 | 0 | 0 | X4 | ||||
| 0 | 1 | 1 | X4 | ||||
| 1 | 0 | 2 | X4 | ||||
| 1 | 1 | 3 | X4 |
另一具體例組合混合式輸入範圍與混合式超大單元。混合式超大單元包括多個實體x位元單元以實施具有藉由2^n二進位位置縮放之x單元輸出之邏輯n位元單元。例如,為了實施8位元邏輯單元,使用兩個4位元單元(cell1,cell0)。用於cell0之輸出係藉由一(X1)縮放,且用於cell1之輸出係藉由四(X,2^2)縮放。用以實施n位元邏輯單元之實體x單元的其他組合係可能的,諸如兩個2位元實體單元及一個4位元實體單元,以實施8位元邏輯單元。
圖45描繪類似於圖44的系統之另一具體例,除了數位位元輸入使用數位位元位置求和以讀出由調變器4510調變之單元或神經元(例如,位元線輸出上之值)電流以外(例如,以將電流轉換成輸出電壓V =電流*脈衝寬度/電容),該單元或神經元電流具有根據數位輸入位元位置設計之輸出脈衝寬度。例如,第一偏壓(在輸入字線或控制閘極上施加)係用於評估DIN0,電流(單元或神經元)輸出係由調變器4510以與DIN0位元位置成比例之單位脈衝寬度而經調變,該單位脈衝寬度為一(x1)單位,第二輸入偏壓係用於評估DIN1,電流輸出係由調變器4510以與DIN1位元位置成比例之脈衝寬度而經調變,該脈衝寬度為二(x2)單位,第三輸入偏壓係用於評估DIN2,電流輸出係由調變器4510以與DIN2位元位置成比例之脈衝寬度而經調變,該脈衝寬度為四(x4)單位,第四輸入偏壓係用於評估DIN3,電流輸出係由調變器4510以與DIN3位元位置成比例之脈衝寬度而經調變,該脈衝寬度為八(x8)單位。每個輸出接著由類比至數位轉換器(ADC)4511轉換成用於每個數位輸入位元DIN0至DIN3之數位位元。總輸出接著由求和器4512作為自DIN0至3輸入產生之四個數位輸出的總和而輸出。
圖46描繪電荷求和器4600的實施例,其可用於在驗證操作期間或在輸出神經元類比至數位轉換期間對VMM之輸出Icell進行求和,以獲得表示VMM之輸出之單個類比值,且可視情況將其轉換成數位位元值。例如,電荷求和器4600可用作求和器4512。電荷求和器4600包含電流源4601(其在此處表示由VMM輸出之電流Icell),及包含開關4602及取樣保持(S/H)電容器4603之取樣保持電路。所示實施例將4位元數位值用於輸出,但可替代地使用其他數目之位元。存在保持自4個評估脈衝產生之值的4個S/H電路,其中值係在程序結束時進行總計。選擇具有與S/H電容器4603之2^n*DINn位元位置相聯結之比率的彼S/H電容器。例如,在Icell> 8 x電流臨限值時閉合用於C_DIN3之開關4602,在Icell> 4 x電流臨限值時閉合用於C_DIN2之開關4602,在Icell> 2 x電流臨限值時閉合用於C_DIN1之開關4602,且在Icell >電流臨限值時閉合用於C_DIN0之開關4602。因此,由取樣保持電容器4603儲存之數位值將反映Icell 4601的值。
圖47描繪電流求和器4700,其可用於在驗證操作期間或在輸出神經元類比至數位轉換期間對VMM之輸出Icell進行求和。例如,電荷求和器4700可用作求和器4512。電流求和器4700包含電流源4701(其在此處表示自VMM輸出之Icell)、開關4702、開關4703及4704以及電晶體4705。所示實施例將4位元數位值用於輸出,其中位元值由電流I_DIN0、I_DIN1、I_DIN2及I_DIN3表示。每個電晶體4705之位元位置影響由彼位元表示之值。在Icell>8 x電流臨限值時閉合用於I_DIN3之開關4703,在Icell>4 x電流臨限值時閉合用於I_DIN2之開關4703,在Icell>2 x電流臨限值時閉合用於I_DIN1之開關4704,且在Icell>電流臨限值時閉合用於I_D1N0之開關4703。因此,由電晶體4705輸出之數位值(其中「1」由正電流表示且「0」由無電流表示或反過來)將反映Icell 4601的值。
圖48描繪數位求和器4800,其接收複數個數位值,對其進行總計且產生表示輸入之總和的輸出DOUT。例如,數位求和器4600可用作求和器4512。可在驗證操作期間或在輸出神經元類比至數位轉換期間使用數位求和器4800。如針對4位元數位值之實施例所示,存在用以保持來自4個評估脈衝之值的數位輸出位元,其中該等值在程序結束時進行總計。數位輸出係基於2^n*DINn位元位置用數位方式經縮放;例如,DOUT3 = x8 DOUT0,_DOUT2 = x4 DOUT1,I_DOUT1 = x2 DOUT0,I_DOUT0 = DOUT0。
圖49A展示積分雙斜率ADC 4900,其應用於輸出神經元以將單元電流轉換成數位輸出位元。由積分運算放大器4901及積分電容器4902組成之積分器將單元電流ICELL與參考電流IREF進行積分。如圖49B中所示,在固定時間t1期間,開關S1閉合且開關S2斷開,且單元電流被向上積分(Vout在波形4950中上升),且接著開關S1斷開且開關S2閉合,使得在時間t2內施加參考電流IREF以向下積分(Vout在波形4950中下降)。電流Icell的值被判定為= t2/t1* IREF。例如,對於t1,對於10位元數位位元解析度,使用1024個循環,且用於t2之循環數目取決於Icell值而在0至1024個循環之間變化。在作為VREF之目標值被施加至比較器4904之情況下,比較器4904之輸出EC 4905可用作判定直至VOUT降為低於VREF施加IREF之循環數目之觸發。
圖49C展示積分單斜率ADC 4960,其應用於輸出神經元4966 ICELL以將單元電流轉換成數位輸出位元。ADC 4960積分運算放大器4961、積分電容器4962、運算放大器4964以及開關S1及S3。積分運算放大器4961及積分電容器4962對輸出神經元電流ICELL進行積分。如圖49D中所示,在時間t1期間,單元電流被向上積分(Vout上升直至其達到Vref2),且在與時間t1同時開始但大於時間t1之時間t2期間,參考單元之單元電流被向上積分。單元電流ICELL被判定為= Cint*Vref2/t。耦接至比較器4965之輸出的脈衝計數器用於計數各別積分時間t1、t2期間之脈衝(數位輸出位元)數目。例如,如所示,用於t1之數位輸出位元小於t2的數位輸出位元,此意指t1期間之單元電流大於t2期間之單元電流。進行初始校準以用參考電流及固定時間校準積分電容器值,Cint = Tref*Iref/Vref2。
圖49E展示積分雙斜率ADC 4980,其應用於輸出神經元4984 ICELL以將單元電流轉換成數位輸出位元。積分雙斜率ADC 4980包含開關S1、S2及S3、運算放大器4981、電容器4982及參考電流源4983。積分雙斜率ADC 4980不利用積分運算放大器。單元電流或參考電流直接在電容器4982上進行積分。脈衝計數器用於對積分時間期間之脈衝(數位輸出位元)進行計數。電流Icell= t2/t1 * IREF。
圖49F展示積分單斜率ADC 4990,其應用於輸出神經元4994 ICELL以將單元電流轉換成數位輸出位元。積分單斜率ADC 4990包含開關S2及S3、運算放大器4991及電容器4992。積分單斜率ADC 4980不利用積分運算放大器。單元電流直接在電容器4992上進行積分。脈衝計數器用於對積分時間期間之脈衝(數位輸出位元)進行計數。單元電流Icell = Cint*Vref2/t。
圖50A展示逐次近似暫存器(SAR) ADC,其應用於輸出神經元以將單元電流轉換成數位輸出位元。單元電流可跨越電阻器下降以轉換成電壓VCELL。替代地,單元電流可對S/H電容器進行充電以將單元電流轉換成電壓VCELL。VCELL被提供至比較器5003之反相輸入,比較器之輸出被饋送至SAR 5001之選擇輸入。時脈輸入CLK被進一步提供至SAR 5001。二進位搜尋用於計算自MSB位元(最高有效位元)開始的位元。基於自SAR 5001輸出且作為至DAC 5002之輸入接收的數位位元DN至D0,DAC 5002之輸出用於設定比較器5003之非反相輸入,亦即至比較器5003之適當類比參考電壓。比較器5003之輸出又回饋至SAR 5001以選擇下一類比層級。如圖50B中所示,對於4位元數位輸出位元之實施例,非限制性地,存在4個評估週期:第一脈衝藉由中途設定類比層級來評估DOUT3,接著第二脈衝藉由在上半部分的中途或下半部分的中途設定類比層級來評估DOUT2。
諸如循環(演算法) ADC之經改良二進位搜尋可用於單元調諧(例如,程式化)驗證或輸出神經元轉換。諸如開關電容器(SC)電荷重新分配ADC之經改良二進位搜尋可用於單元調諧(例如,程式化)驗證或輸出神經元轉換。
圖51展示積分三角ADC 5100,其應用於輸出神經元以將單元電流轉換成數位輸出位元。由運算放大器5101及電容器5105組成之積分器對來自選定單元電流5106之電流ICELL及產生於1位元電流cDAC 5104之參考電流IREF的總和進行積分。比較器5102比較運算放大器5101之經積分輸出電壓相較於參考電壓VREF 2。時控DFF 5103提供取決於比較器5102之輸出的數位輸出串流,該輸出係在DFF 5103之D輸入處接收。數位輸出串流通常在輸出為數位輸出位元之前轉至數位濾波器。
圖52A描繪斜坡類比至數位轉換器5200,其包含電流源5201 (其表示經接收神經元電流ICELL)、開關5202、可變的可組構電容器5203及比較器5204,該斜坡類比至數位轉換器接收跨越可變的可組構電容器5203產生之表示為Vneu之電壓作為非反相輸入且接收可組構的參考電壓Vreframp作為反相輸入並產生輸出Cout。Vreframp在每個比較時脈循環內以離散層級逐漸上升。比較器5204比較Vneu與Vreframp,且結果當Vneu>Vreframp時,輸出Cout將為「1」,否則將為「0」。因此,輸出Cout將為一脈衝,其寬度回應於Ineu而變化。較大Ineu將使得Cout在較長時間週期內為「1」,從而產生用於輸出Cout之較寬脈衝。數位計數器5220將輸出Cout之脈衝522的每個脈衝轉換成為數位輸出位元之計數值5221,如圖52B中針對分別表示為OT1A及OT2A之兩個不同ICELL電流所示。
替代地,斜坡電壓Vreframp為連續斜坡電壓5255,如圖52B之圖5250中所示。
替代地,圖52C中展示多斜坡具體例,其用於藉由利用粗略-精細斜坡轉換演算法來縮減轉換時間。首先,粗略參考斜坡參考電壓5271以快速方式逐漸上升以找出用於每個ICELL之子範圍。接下來,精細參考斜坡參考電壓5272,亦即Vreframp1及Vreframp2,分別用於每個子範圍以轉換各別子範圍內之ICELL電流。如所示,存在用於精細參考斜坡電壓之兩個子範圍。多於兩個粗略/精細步驟或兩個子範圍係可能的。
圖53描繪演算法類比至數位輸出轉換器5300,其包含開關5301、開關5302、取樣保持(S/H)電路5303、1位元類比至數位轉換器(ADC) 5304、1位元數位至類比轉換器(DAC) 5305、求和器5306及兩個殘差運算放大器(2x opamp) 5307之增益。演算法類比至數位輸出轉換器5300回應於施加至開關5302及5302之類比輸入Vin及控制信號而產生轉換數位輸出5308。在類比輸入Vin (例如,圖52之Vneu)處接收之輸入首先由S/H電路5303回應於開關5302而取樣,接著對N個位元以N個時脈循環執行轉換。對於每個轉換時脈循環,1位元ADC 5304比較S/H電壓5309與參考電壓VREF/2,且輸出數位位元(例如,在輸入<=VREF/2時輸出「0」,且在輸入>VREF/2時輸出「1」)。此數位輸出位元為數位輸出信號5308,其又由1位元DAC 5305轉換成類比電壓(例如至VREF/2或0 V)並被饋送至求和器5306以自S/H電壓5309減去。2x殘差運算放大器5307接著將求和器差電壓輸出放大為轉換殘差電壓5310,該轉換殘差電壓經由開關5301經饋送至S/H電路5303以用於下一時脈循環。代替此1位元(亦即,2層級)演算法ADC,1.5位元(亦即,3層級)演算法ADC可用於降低諸如來自ADC 5304及殘差運算放大器5307之偏移的效應。1.5位元或2位元(亦即,4層級)DAC較佳用於與1.5位元演算法ADC一起使用。在另一具體例中,可使用混合式ADC。例如,對於9位元ADC,前4個位元可由SAR ADC產生,且剩餘的5個位元可使用斜率ADC或斜坡ADC產生。
程式化及驗證作為單個邏輯多位元單元之多個實體單元
上文所描述的程式化及驗證構件及方法可在作為邏輯多位元單元之多個實體單元上並行操作。
圖54描繪邏輯多位元單元5400,其包含標記為實體單元5401-1、5401-2、…、5401-i的i個實體單元。在一個具體例中,實體單元5401具有均勻擴散寬度(電晶體寬度)。在另一具體例中,實體單元5401具有非均勻擴散寬度(不同電晶體寬度,其中具有較大寬度之電晶體可儲存較大數目之層級且因此可儲存較大數目之位元)。在兩具體例中,實體單元5401被作為整體,具體而言作為相比m位元單元中之每一者可儲存較大數目之層級的單個邏輯n位元單元經程式化、驗證及讀取。例如,若m=2,則每個實體單元5401可保持四個層級(L0、L1、L2、L3)中之一者。兩個此類單元可被視為單個邏輯單元,其中n=3,使得單個邏輯單元可保持八個層級(L0、L1、L2、L3、L4、L5、L6、L7)中之一者。作為另一實施例,若m=3,則每個實體單元5401可保持8個層級(L0…L7)中之一者。四個此類單元可被視為單個邏輯單元,其中n=5,使得單個邏輯單元可保持32個層級(L0…L31)中之一者。
圖55描繪程式化邏輯多位元單元5400之方法5500。首先,使用粗略程式化方法3305中之任一者程式化並驗證
i個實體單元5401-1、…、5401-i中之
j個實體單元(其中
j<=
i),直至實現
j個實體單元之粗略電流目標為止(步驟5501)。接下來,使用精度程式化方法3306中之任一者程式化並驗證
j個實體單元中之
k個實體單元(其中
k<=
j),直至實現
k個實體單元之精度電流目標為止(步驟5502)。
可對
i個實體單元5401-1、…、5401-i之多於一個子集執行方法5500,以實現邏輯多位元單元5400之所要總層級。
例如,若i=4,則將存在四個單元5401-1、5401-2、5401-3及5401-4。若假定每個單元可保持8個不同層級中之一者,則邏輯多位元單元5400可保持32個不同層級中之一者。若所要程式化值為L27,則可以任何數目之不同方式實現彼層級(其對應於所要讀取電流)。
例如,可對單元5401-1、5401-2及5401-3執行方法5500,直至彼等單元共同地保持L23(第24層級)為止,且接著可對單元5401-4執行方法5500以將彼單元程式化至其第四層級,使得邏輯多位元單元5400實現L27(第28層級)。
作為另一實施例,可對單元5401-1、5401-2、5401-3及5401-4執行方法5500,直至彼等單元共同地保持L25(第26層級)為止,且接著可僅對單元5401-4執行方法5500,直至其儲存使邏輯多位元單元5400整體實現L27(第28層級)之值為止。
其他方法係可能的,且可對i個實體單元之不同子集執行方法5500,直至實現所要層級為止。
在另一具體例中,在
i個實體單元具有非均勻擴散寬度之情況中,可對具有較寬電晶體寬度之
j1個實體單元執行粗略程式化步驟3305,直至
j1個實體單元共同地實現粗略電流目標為止,且接著可對具有最小電晶體寬度之
j2個實體單元執行精度程式化步驟3306,直至
j1+
j2個實體單元共同地實現精度電流目標為止。
應注意,如本文中所使用,術語「在...上方」及「在...上」兩者包括「直接在...上」(其間未裝設有中間材料、元件或空間)及「間接地在...上」(其間裝設有中間材料、元件或空間)。同樣地,術語「鄰近」包括「直接鄰近」(其間未裝設有中間材料、元件或空間)及「間接鄰近」(其間裝設有中間材料、元件或空間),「安裝至」包括「直接安裝至」(其間未裝設有中間材料、元件或空間)及「間接安裝至」(其間裝設有中間材料、元件或空間),且「電耦接」包括「直接電耦接至」(其間無將元件電連接在一起的中間材料或元件)及「間接電耦接至」(其間具有將元件電連接在一起的中間材料或元件)。例如,「在基板上方」形成元件可包括直接在基板上形成元件而其間無中間材料/元件,以及間接地在基板上形成元件而其間具有一或多種中間材料/元件。
12:半導體基板
14:源極區
16:汲極區
18:通道區
20:浮動閘極
22:字線端子,選擇閘極,控制閘極端子
24:位元線端子
28:控制閘極(CG)端子
30:抹除閘極EG
31:數位至類比轉換器
32,32a,32b,32c,32d,32e:向量乘矩陣乘法(VMM)系統
33:VMM陣列,非揮發性記憶體單元陣列
34:抹除閘極及字線閘極解碼器
35:控制閘極解碼器
36:位元線解碼器
37:源極線解碼器
38:差分求和器
39:激發函數電路
210,310,510,3802,4103:記憶體單元
410:四閘極記憶體單元
610:三閘極記憶體單元
710:堆疊閘式記憶體單元
1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400:神經元VMM陣列
1101,1203,1303,1403,1503:非揮發性記憶體單元之記憶體陣列
1102:非揮發性參考記憶體單元之參考陣列
1103:控制閘極線
1104:抹除閘極線
1201,1301,1401,1501:第一非揮發性參考記憶體單元之參考陣列
1202,1302,1402,1502:第二非揮發性參考記憶體單元之參考陣列
1214,1412:二極體連接之貫穿多工器
1404:串疊電晶體
1405:多工器
1514:二極體連接之參考單元貫穿多工器
2500:長短期記憶體(LSTM)
2501,2502,2503,2504,2901,2902,2903,2904:單元
2600,2700,2800:LSTM單元
2601,2602,2603,3001,3002:S型函數構件
2604,2605,3003:雙曲正切構件
2606,2607,2608,2803,3004,3005,3006,3203:乘法器構件
2609,2808,3007,3205:加法構件
2701,2801,3101,3201:VMM陣列
2702,2802,3102,3202:激發電路區塊,激發函數區塊
2804,2805,2806,2807,3206,3207,3208:暫存器
2809,2810,3204:多工器
2900:閘控循環單元(GRU)
2901-1-2901-N:位元線控制閘極
3000,3100,3200:GRU單元
3008,3209:互補構件
3300,3310:程式化方法
3301,3302,3303,3304,3305,3306,3312,3313,3401,3402,3403,3404,3701,3702,3703,3704,3705,3901,3902,3903,3904,3905,3906,3907,3908,4001,4002,4003,4004,4005,4006,5501,5502:步驟
3400:搜尋及執行方法
3501,3502,3503,3601,3602,3603,4200,4300:進展
3700,3900:自適應校準方法
3801,4101,4601,4701,5201:電流源
4000:絕對校準方法
4100:電路
4102:反相器
4104,4602,4702,4703,4704,5202,5301,5302:開關
4105,4982,4992,5105:電容器
4401:輸入函數電路
4402:控制閘極解碼器
4403:字線解碼器
4404:陣列
4405:輸出神經元電路區塊
4510:調變器
4511:類比至數位轉換器(ADC)
4512,5306:求和器
4600:電荷求和器
4603:取樣保持(S/H)電容器
4700:電流求和器
4705:電晶體
4800:數位求和器
4900,4980:積分雙斜率ADC
4901,4961:積分運算放大器
4902,4962:積分電容器
4904,4965,5003,5102,5204:比較器
4905:輸出EC
4950:波形
4960,4990:積分單斜率ADC
4964,4981,4991,5101:運算放大器
4966,4984,4994:輸出神經元
4983:參考電流源
5001:逐次近似暫存器(SAR)
5002:DAC
5100:積分三角ADC
5103:時控DFF
5104:1位元電流cDAC
5106:選定單元電流
5200:斜坡類比至數位轉換器
5203:可變的可組構電容器
5220:數位計數器
5221:計數值
5222:脈衝
5250:圖
5255:連續斜坡電壓
5271:粗略參考斜坡參考電壓
5272:精細參考斜坡參考電壓
5300:演算法類比至數位輸出轉換器
5303:取樣保持(S/H)電路
5304:1位元類比至數位轉換器(ADC)
5305:1位元數位至類比轉換器(DAC)
5307:兩個殘差運算放大器(2x opamp)
5308:轉換數位輸出,數位輸出信號
5309:S/H電壓
5310:轉換殘差電壓
5400:邏輯多位元單元
5401-1-5401-i:實體單元
5500:方法
BL0-BLN,BL
0-BL
N:位元線
BLR0,BLR1,BLR2,BLR3:端子
c
0,c
1,c
2:單元狀態向量
C1:特徵圖層
C2,C3:層
CB1:第一突觸
CB2,CB3,CB4:突觸
CG0,CG1,CG2,CG3,CG
0-CG
N:控制閘極CG線,控制閘極電壓
CLK:時脈輸入
DIN3,DIN2,DIN1,DIN0:位元
DN-D0:數位位元
EG0,EG1,EGR0,EGR1:抹除閘極EG線
En_blx:位元線啟用信號
h
0,h
1,h
2,h
3:輸出向量
I
cell,IO0-Ion,I_DIN0,I_DIN1,I_DIN2,I_DIN3:電流
I
CT:粗略目標電流值
I
CT2:臨限值
ICELL:單元電流
IREF:參考電流
OT1A,OT2AICELL:電流
OUTPUT
0-OUTPUT
N,DOUT,Cout:輸出
P1,P2:激發函數
S0:輸入層
S1,S2:層,開關
S3:輸出層,開關
SL0,SL1,SL
0-SL
N:源極線
t
p1,t1,t2:時間
v
0:初始電壓
v
i:開始點
Vin:類比輸入
v
increment:電壓增量
v
p1,V
p2:增量
VREF:目標值
VREF 2,VREF/2:參考電壓
Vreframp:可組構的參考電壓,斜坡電壓
vTx,VTP,VCELL,Vneu:電壓
x
0,x
1,x
2,x
3:輸入向量
WL,WL0,WL1,WL2,WL3,WLA0,WLB0,WLA1,WLB1,WLA2,WLB2,WLA3,WLB3,WL
0-WL
M:字線
WLx,EGx,CGx,BLx,SLx,Inputx,INPUT
0-INPUT
N,INPUT
0-INPUT
M:輸入
圖1為例示先前技術人工神經網路之圖。
圖2描繪先前技術分離閘式快閃記憶體單元。
圖3描繪另一先前技術分離閘式快閃記憶體單元。
圖4描繪另一先前技術分離閘式快閃記憶體單元。
圖5描繪另一先前技術分離閘式快閃記憶體單元。
圖6描繪另一先前技術分離閘式快閃記憶體單元。
圖7描繪先前技術堆疊閘式快閃記憶體單元。
圖8為例示利用一或多個非揮發性記憶體陣列之例示性人工神經網路之不同層級的圖。
圖9為例示向量乘矩陣乘法系統之方塊圖。
圖10為例示利用一或多個向量乘矩陣乘法系統之例示性人工神經網路的方塊圖。
圖11描繪向量乘矩陣乘法系統之另一具體例。
圖12描繪向量乘矩陣乘法系統之另一具體例。
圖13描繪向量乘矩陣乘法系統之另一具體例。
圖14描繪向量乘矩陣乘法系統之另一具體例。
圖15描繪向量乘矩陣乘法系統之另一具體例。
圖16描繪向量乘矩陣乘法系統之另一具體例。
圖17描繪向量乘矩陣乘法系統之另一具體例。
圖18描繪向量乘矩陣乘法系統之另一具體例。
圖19描繪向量乘矩陣乘法系統之另一具體例。
圖20描繪向量乘矩陣乘法系統之另一具體例。
圖21描繪向量乘矩陣乘法系統之另一具體例。
圖22描繪向量乘矩陣乘法系統之另一具體例。
圖23描繪向量乘矩陣乘法系統之另一具體例。
圖24描繪向量乘矩陣乘法系統之另一具體例。
圖25描繪先前技術長短期記憶體系統。
圖26描繪用於長短期記憶體系統中之例示性單元。
圖27描繪圖26之例示性單元的具體例。
圖28描繪圖26之例示性單元的另一具體例。
圖29描繪先前技術閘控循環單元系統。
圖30描繪用於閘控循環單元系統中之例示性單元。
圖31描繪圖30之例示性單元的具體例。
圖32描繪圖30之例示性單元的另一具體例。
圖33A描繪程式化非揮發性記憶體單元之方法的具體例。
圖33B描繪程式化非揮發性記憶體單元之方法的另一具體例。
圖34描繪粗略程式化方法之具體例。
圖35描繪用於非揮發性記憶體單元之程式化中的例示性脈衝。
圖36A描繪用於非揮發性記憶體單元之程式化中的例示性脈衝。
圖36B描繪用於非揮發性記憶體單元之程式化中的例示性互補遞增及遞減脈衝。
圖37描繪用於非揮發性記憶體單元之程式化之校準演算法,其基於單元的斜率特性調整程式化參數。
圖38描繪用於圖37之校準演算法中的電路。
圖39描繪用於非揮發性記憶體單元之程式化之校準演算法。
圖40描繪用於非揮發性記憶體單元之程式化之校準演算法。
圖41描繪用於圖41之校準演算法中之電路。
圖42描繪在程式化操作期間施加至非揮發性記憶體單元之控制閘極的電壓之例示性進展。
圖43描繪在程式化操作期間施加至非揮發性記憶體單元之控制閘極的電壓之例示性進展。
圖44描繪用於在向量乘乘法矩陣系統內之非揮發性記憶體單元之程式化期間施加程式化電壓之系統。
圖45描繪具有輸出區塊之向量乘乘法矩陣系統,該輸出區塊包含調變器、類比至數位轉換器及求和器。
圖46描繪電荷求和器電路。
圖47描繪電流求和器電路。
圖48描繪數位求和器電路。
圖49A描繪用於神經元輸出之積分類比至數位轉換器之具體例。
圖49B描繪展示圖49A之積分類比至數位轉換器隨時間推移之電壓輸出之圖。
圖49C描繪用於神經元輸出之積分類比至數位轉換器的另一具體例。
圖49D描繪展示圖49C之積分類比至數位轉換器隨時間推移之電壓輸出之圖。
圖49E描繪用於神經元輸出之積分類比至數位轉換器的另一具體例。
圖49F描繪用於神經元輸出之積分類比至數位轉換器的另一具體例。
圖50A及圖50B描繪用於神經元輸出之逐次近似類比至數位轉換器。
圖51描繪積分三角類比至數位轉換器之具體例。
圖52A、圖52B及圖52C描繪斜坡類比至數位轉換器之具體例。
圖53描繪演算法類比至數位轉換器之具體例。
圖54描繪邏輯多位元單元。
圖55描繪程式化圖54之邏輯多位元單元的方法。
Claims (17)
- 一種程式化一選定非揮發性記憶體單元以儲存N個可能值中之一者的方法,其中,N為大於2之整數,該選定非揮發性記憶體單元包含一浮動閘極、一控制閘極端子、一抹除閘極端子及一源極線端子,該方法包含:執行包含多個程式化驗證循環之一第一程式化程序,其中具有增大週期的一程式化電壓持續時間在第一程式化驗證循環之後的每個程式化驗證循環中被施加至該選定非揮發性記憶體單元之一端子,其中,每個程式化驗證循環包含驗證一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第一臨限電流值;及當該讀取或驗證操作期間通過該選定非揮發性記憶體單元之該電流小於或等於該第一臨限電流值時,執行一第二程式化程序,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第二臨限電流值為止,其中,該第二程式化程序包含將具有增大持續時間的電壓脈衝施加至該選定非揮發性記憶體單元之該控制閘極,及將具有降低持續時間的電壓脈衝施加至該選定非揮發性記憶體單元之該抹除閘極。
- 一種程式化一選定非揮發性記憶體單元以儲存N個可能值中之一者的方法,其中,N為大於2之整數,該選定非揮發性記憶體單元包含一浮動閘極、一控制閘極端子、一抹除閘極端子及一源極線端子,該方法包含:執行包含多個程式化驗證循環之一第一程式化程序,其中具有增大 週期的一程式化電壓持續時間在第一程式化驗證循環之後的每個程式化驗證循環中被施加至該選定非揮發性記憶體單元之一端子;其中,每個程式化驗證循環包含:將一第一電壓施加至該選定非揮發性記憶體單元之該抹除閘極端子及該控制閘極端子中之一者;量測通過該選定非揮發性記憶體單元產生之一第一電流;將一第二電壓施加至該選定非揮發性記憶體單元之該抹除閘極端子及該控制閘極端子中之該一者;量測通過該選定非揮發性記憶體單元產生之一第二電流;基於該第一電壓、該第二電壓、該第一電流及該第二電流判定一斜率值;基於該斜率值判定該等程式化持續時間中具有增大持續時間的一下一程式化持續時間;用該下一程式化持續時間程式化該非揮發性記憶體單元;及重複判定一下一程式化持續時間及用該下一程式化持續時間程式化該非揮發性記憶體單元之步驟,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第一臨限電流值為止。
- 一種程式化一選定非揮發性記憶體單元以儲存N個可能值中之一者的方法,其中,N為大於2之整數,該選定非揮發性記憶體單元包含一浮動閘極、一控制閘極端子、一抹除閘極端子及一源極線端子,該方法包含:執行包含多個程式化驗證循環之一第一程式化程序,其中具有增大 週期的一程式化電壓持續時間在第一程式化驗證循環之後的每個程式化驗證循環中被施加至該選定非揮發性記憶體單元之一端子,及其中當通過該選定非揮發性記憶體單元之一電流小於或等於一第三臨限電流值時,抹除該選定非揮發性記憶體單元並重複該第一程式化程序。
- 如請求項1之方法,其中,該選定非揮發性記憶體單元為一分離閘式快閃記憶體單元。
- 如請求項1之方法,其中,該選定非揮發性記憶體單元在一類比神經網路中之一向量乘矩陣乘法陣列中。
- 一種程式化一選定非揮發性記憶體單元以儲存N個可能值中之一者的方法,其中,N為大於2之整數,該選定非揮發性記憶體單元包含一浮動閘極、一控制閘極端子、一抹除閘極端子及一源極線端子,該方法包含:執行包含多個程式化驗證循環之一第一程式化程序,其中在該程式化程序中,具有增大持續時間的一第一程式化電壓被施加至該選定非揮發性記憶體單元之該控制閘極端子,而具有降低持續時間的一第二程式化電壓被施加至該選定非揮發性記憶體單元之該抹除閘極端子。
- 如請求項6之方法,其中,每個程式化驗證循環包含驗證一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第一臨限電流值。
- 如請求項6之方法,其中,每個程式化驗證循環包含:將一第一電壓施加至該選定非揮發性記憶體單元之該抹除閘極及該控制閘極中之一者; 量測通過該選定非揮發性記憶體單元產生之一第一電流;將一第二電壓施加至該選定非揮發性記憶體單元之該抹除閘極及該控制閘極中之該一者;量測通過該選定非揮發性記憶體單元產生之一第二電流;基於該第一電壓、該第二電壓、該第一電流及該第二電流判定一斜率值;基於該斜率值分別判定具有增大持續時間及降低持續時間的該程式化電壓之一下一程式化持續時間;用該下一程式化持續時間程式化該非揮發性記憶體單元;重複判定一下一程式化持續時間及用該下一程式化持續時間程式化該非揮發性記憶體單元之步驟,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第一臨限電流值為止。
- 如請求項6之方法,其進一步包含:執行一第二程式化程序,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第二臨限電流值為止。
- 如請求項6之方法,其中,執行一第一程式化程序之步驟進一步包含:當通過該選定非揮發性記憶體單元之一電流小於或等於一第三臨限電流值時,抹除該選定非揮發性記憶體單元並重複該第一程式化程序。
- 如請求項9之方法,其進一步包含:執行一第三程式化程序,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第四臨限電流值為止。
- 一種程式化一選定非揮發性記憶體單元以儲存N個可能值中之一者的方法,其中,N為大於2之整數,該選定非揮發性記憶體單元包含一浮動閘極、一控制閘極、一抹除閘極及一源極線端子,該方法包含:執行包含多個程式化驗證循環之一第一程式化操作,其中在該程式化操作中,具有增大持續時間的一第一程式化電壓被施加至該選定非揮發性記憶體單元之該抹除閘極,而具有降低持續時間的一第二程式化電壓被施加至該選定非揮發性記憶體單元之該控制閘極。
- 如請求項12之方法,其中,每個程式化驗證循環包含驗證一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第一臨限電流值。
- 如請求項13之方法,其中,每個程式化驗證循環包含:將一第一電壓施加至該選定非揮發性記憶體單元之該抹除閘極及該控制閘極中之一者;量測通過該選定非揮發性記憶體單元產生之一第一電流;將一第二電壓施加至該選定非揮發性記憶體單元之該抹除閘極及該控制閘極中之該一者;量測通過該選定非揮發性記憶體單元產生之一第二電流;基於該第一電壓、該第二電壓、該第一電流及該第二電流判定一斜率值;基於該斜率值分別判定具有增大持續時間及降低持續時間的該程式 化電壓之一下一程式化持續時間;用該下一程式化持續時間程式化該非揮發性記憶體單元;重複判定一下一程式化持續時間及用該下一程式化持續時間程式化該非揮發性記憶體單元之步驟,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第一臨限電流值為止。
- 如請求項12之方法,其進一步包含:執行一第二程式化程序,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第二臨限電流值為止。
- 如請求項12之方法,其中,執行一第一程式化程序之步驟進一步包含:當通過該選定非揮發性記憶體單元之一電流小於或等於一第三臨限電流值時,抹除該選定非揮發性記憶體單元並重複該第一程式化程序。
- 如請求項15之方法,其進一步包含:執行一第三程式化程序,直至一讀取或驗證操作期間通過該選定非揮發性記憶體單元之一電流小於或等於一第四臨限電流值為止。
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962933809P | 2019-11-11 | 2019-11-11 | |
| US62/933,809 | 2019-11-11 | ||
| US16/751,202 | 2020-01-23 | ||
| US16/751,202 US11755899B2 (en) | 2019-11-11 | 2020-01-23 | Precise programming method and apparatus for analog neural memory in an artificial neural network |
| WOPCT/US20/034326 | 2020-05-22 | ||
| PCT/US2020/034326 WO2021096563A1 (en) | 2019-11-11 | 2020-05-22 | Precise programming method and apparatus for analog neural memory in an artificial neural network |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202307848A TW202307848A (zh) | 2023-02-16 |
| TWI858395B true TWI858395B (zh) | 2024-10-11 |
Family
ID=75847810
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113133375A TWI901333B (zh) | 2019-11-11 | 2020-10-26 | 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 |
| TW109137025A TWI782343B (zh) | 2019-11-11 | 2020-10-26 | 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 |
| TW111136446A TWI858395B (zh) | 2019-11-11 | 2020-10-26 | 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 |
Family Applications Before (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113133375A TWI901333B (zh) | 2019-11-11 | 2020-10-26 | 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 |
| TW109137025A TWI782343B (zh) | 2019-11-11 | 2020-10-26 | 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US11755899B2 (zh) |
| EP (3) | EP4350697B1 (zh) |
| JP (3) | JP7340101B2 (zh) |
| KR (2) | KR102764740B1 (zh) |
| CN (2) | CN120766737A (zh) |
| TW (3) | TWI901333B (zh) |
| WO (1) | WO2021096563A1 (zh) |
Families Citing this family (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210125049A1 (en) * | 2019-10-29 | 2021-04-29 | Taiwan Semiconductor Manufacturing Co., Ltd. | System for executing neural network |
| US11755899B2 (en) * | 2019-11-11 | 2023-09-12 | Silicon Storage Technology, Inc. | Precise programming method and apparatus for analog neural memory in an artificial neural network |
| US12124944B2 (en) | 2020-01-03 | 2024-10-22 | Silicon Storage Technology, Inc. | Precise data tuning method and apparatus for analog neural memory in an artificial neural network |
| US11475946B2 (en) * | 2020-01-16 | 2022-10-18 | International Business Machines Corporation | Synapse weight update compensation |
| CN113255875A (zh) * | 2020-02-07 | 2021-08-13 | 华为技术有限公司 | 神经网络电路和神经网络系统 |
| US12299562B2 (en) * | 2020-05-10 | 2025-05-13 | Silicon Storage Technology, Inc. | Analog neural memory array in artificial neural network with source line pulldown mechanism |
| KR102861762B1 (ko) * | 2020-05-22 | 2025-09-17 | 삼성전자주식회사 | 인-메모리 프로세싱을 수행하는 장치 및 이를 포함하는 컴퓨팅 장치 |
| US20230306251A1 (en) * | 2022-03-23 | 2023-09-28 | International Business Machines Corporation | Hardware implementation of activation functions |
| US12243587B2 (en) | 2022-09-22 | 2025-03-04 | Silicon Storage Technology, Inc. | Multiple row programming operation in artificial neural network array |
| WO2025122167A1 (en) * | 2023-12-06 | 2025-06-12 | Silicon Storage Technology, Inc. | Programming of a selected non-volatile memory cell by changing programming pulse characteristics |
| US12511073B2 (en) | 2024-01-12 | 2025-12-30 | Silicon Storage Technology, Inc. | Coarse and fine programming of non-volatile memory cells |
| WO2025151138A1 (en) * | 2024-01-12 | 2025-07-17 | Silicon Storage Technology, Inc. | Coarse and fine programming of non-volatile memory cells |
| WO2025188339A1 (en) * | 2024-03-08 | 2025-09-12 | Silicon Storage Technology, Inc. | Sequential erase for tuning the program state of non-volatile memory cells |
| JP2025158147A (ja) * | 2025-07-25 | 2025-10-16 | 株式会社大都技研 | 遊技台 |
| JP2025158139A (ja) * | 2025-07-25 | 2025-10-16 | 株式会社大都技研 | 遊技台 |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7978533B2 (en) * | 2001-09-17 | 2011-07-12 | Sandisk Corporation | NAND flash memory with a programming voltage held dynamically in a NAND chain channel region |
| US20140269058A1 (en) * | 2013-03-14 | 2014-09-18 | Silicon Storage Technology, Inc. | Non-volatile Memory Program Algorithm Device And Method |
| TWI613657B (zh) * | 2012-09-14 | 2018-02-01 | 恩智浦美國公司 | 具有可適性寫入操作的非揮發性記憶體 |
| US20190164617A1 (en) * | 2017-11-29 | 2019-05-30 | Silicon Storage Technology, Inc. | High Precision And Highly Efficient Tuning Mechanisms And Algorithms For Analog Neuromorphic Memory In Artificial Neural Networks |
| EP3281203B1 (en) * | 2015-04-09 | 2019-06-26 | Silicon Storage Technology Inc. | System and method for programming split-gate, non-volatile memory cells |
| WO2019177691A1 (en) * | 2018-03-14 | 2019-09-19 | Silicon Storage Technology, Inc. | Method and apparatus for programming analog neural memory in a deep learning artificial neural network |
| US20190341110A1 (en) * | 2018-05-01 | 2019-11-07 | Silicon Storage Technology, Inc. | Method and apparatus for high voltage generation for analog neural memory in deep learning artificial neural network |
Family Cites Families (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5029130A (en) | 1990-01-22 | 1991-07-02 | Silicon Storage Technology, Inc. | Single transistor non-valatile electrically alterable semiconductor memory device |
| JP3626221B2 (ja) * | 1993-12-13 | 2005-03-02 | 株式会社東芝 | 不揮発性半導体記憶装置 |
| JP2001067884A (ja) | 1999-08-31 | 2001-03-16 | Hitachi Ltd | 不揮発性半導体記憶装置 |
| US6747310B2 (en) * | 2002-10-07 | 2004-06-08 | Actrans System Inc. | Flash memory cells with separated self-aligned select and erase gates, and process of fabrication |
| US7139198B2 (en) | 2004-01-27 | 2006-11-21 | Sandisk Corporation | Efficient verification for coarse/fine programming of non-volatile memory |
| US7068539B2 (en) * | 2004-01-27 | 2006-06-27 | Sandisk Corporation | Charge packet metering for coarse/fine programming of non-volatile memory |
| US7173859B2 (en) * | 2004-11-16 | 2007-02-06 | Sandisk Corporation | Faster programming of higher level states in multi-level cell flash memory |
| US7450426B2 (en) * | 2006-10-10 | 2008-11-11 | Sandisk Corporation | Systems utilizing variable program voltage increment values in non-volatile memory program operations |
| US7580292B2 (en) * | 2007-06-14 | 2009-08-25 | Macronix International Co., Ltd. | Method for programming a multilevel memory |
| US7936599B2 (en) * | 2007-06-15 | 2011-05-03 | Micron Technology, Inc. | Coarse and fine programming in a solid state memory |
| US7978520B2 (en) * | 2007-09-27 | 2011-07-12 | Sandisk Corporation | Compensation of non-volatile memory chip non-idealities by program pulse adjustment |
| US7852683B2 (en) * | 2008-07-02 | 2010-12-14 | Sandisk Corporation | Correcting for over programming non-volatile storage |
| KR20100053201A (ko) * | 2008-11-12 | 2010-05-20 | 삼성전자주식회사 | 플래시 메모리의 소거 방법 |
| KR101532584B1 (ko) * | 2009-01-30 | 2015-06-30 | 삼성전자주식회사 | 비휘발성 메모리 장치, 및 그의 프로그램 방법 |
| KR102125376B1 (ko) * | 2013-07-01 | 2020-06-23 | 삼성전자주식회사 | 저장 장치 및 그것의 쓰기 방법 |
| FR3035536B1 (fr) | 2015-04-21 | 2017-05-12 | Commissariat Energie Atomique | Procede de determination d'une impulsion de tension optimale pour programmer une cellule memoire flash |
| KR102274280B1 (ko) * | 2015-06-22 | 2021-07-07 | 삼성전자주식회사 | 불휘발성 메모리 장치의 동작 방법 |
| US9343156B1 (en) * | 2015-06-25 | 2016-05-17 | Sandisk Technologies Inc. | Balancing programming speeds of memory cells in a 3D stacked memory |
| CN106328197B (zh) * | 2015-07-07 | 2019-01-25 | 华邦电子股份有限公司 | 存储器写入装置以及方法 |
| JP6833873B2 (ja) | 2016-05-17 | 2021-02-24 | シリコン ストーリッジ テクノロージー インコーポレイテッドSilicon Storage Technology, Inc. | 不揮発性メモリアレイを使用したディープラーニングニューラルネットワーク分類器 |
| US10741568B2 (en) * | 2018-10-16 | 2020-08-11 | Silicon Storage Technology, Inc. | Precision tuning for the programming of analog neural memory in a deep learning artificial neural network |
| US12075618B2 (en) * | 2018-10-16 | 2024-08-27 | Silicon Storage Technology, Inc. | Input and digital output mechanisms for analog neural memory in a deep learning artificial neural network |
| US11755899B2 (en) * | 2019-11-11 | 2023-09-12 | Silicon Storage Technology, Inc. | Precise programming method and apparatus for analog neural memory in an artificial neural network |
| US11393535B2 (en) * | 2020-02-26 | 2022-07-19 | Silicon Storage Technology, Inc. | Ultra-precise tuning of analog neural memory cells in a deep learning artificial neural network |
| US11532354B2 (en) * | 2020-03-22 | 2022-12-20 | Silicon Storage Technology, Inc. | Precision tuning of a page or word of non-volatile memory cells and associated high voltage circuits for an analog neural memory array in an artificial neural network |
| US11393534B2 (en) * | 2020-05-28 | 2022-07-19 | Micron Technology, Inc. | Adjustment of a starting voltage corresponding to a program operation in a memory sub-system |
| US12051467B2 (en) * | 2020-06-04 | 2024-07-30 | Sandisk Technologies Llc | Programming of memory cells using a memory string dependent program voltage |
| US20220215239A1 (en) * | 2021-01-01 | 2022-07-07 | Silicon Storage Technology, Inc. | Digital output mechanisms for analog neural memory in a deep learning artificial neural network |
-
2020
- 2020-01-23 US US16/751,202 patent/US11755899B2/en active Active
- 2020-05-22 EP EP24159590.9A patent/EP4350697B1/en active Active
- 2020-05-22 EP EP20732400.5A patent/EP4059018B1/en active Active
- 2020-05-22 CN CN202510843147.5A patent/CN120766737A/zh active Pending
- 2020-05-22 KR KR1020227014358A patent/KR102764740B1/ko active Active
- 2020-05-22 EP EP24159600.6A patent/EP4354440B1/en active Active
- 2020-05-22 JP JP2022526411A patent/JP7340101B2/ja active Active
- 2020-05-22 WO PCT/US2020/034326 patent/WO2021096563A1/en not_active Ceased
- 2020-05-22 CN CN202080077970.5A patent/CN114651307B/zh active Active
- 2020-05-22 KR KR1020257003286A patent/KR20250021645A/ko active Pending
- 2020-10-26 TW TW113133375A patent/TWI901333B/zh active
- 2020-10-26 TW TW109137025A patent/TWI782343B/zh active
- 2020-10-26 TW TW111136446A patent/TWI858395B/zh active
-
2023
- 2023-07-27 US US18/227,254 patent/US20230368011A1/en active Pending
- 2023-08-25 JP JP2023136978A patent/JP7676489B2/ja active Active
-
2025
- 2025-04-30 JP JP2025075177A patent/JP2025124641A/ja active Pending
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7978533B2 (en) * | 2001-09-17 | 2011-07-12 | Sandisk Corporation | NAND flash memory with a programming voltage held dynamically in a NAND chain channel region |
| TWI613657B (zh) * | 2012-09-14 | 2018-02-01 | 恩智浦美國公司 | 具有可適性寫入操作的非揮發性記憶體 |
| US20140269058A1 (en) * | 2013-03-14 | 2014-09-18 | Silicon Storage Technology, Inc. | Non-volatile Memory Program Algorithm Device And Method |
| EP3281203B1 (en) * | 2015-04-09 | 2019-06-26 | Silicon Storage Technology Inc. | System and method for programming split-gate, non-volatile memory cells |
| US20190164617A1 (en) * | 2017-11-29 | 2019-05-30 | Silicon Storage Technology, Inc. | High Precision And Highly Efficient Tuning Mechanisms And Algorithms For Analog Neuromorphic Memory In Artificial Neural Networks |
| WO2019177691A1 (en) * | 2018-03-14 | 2019-09-19 | Silicon Storage Technology, Inc. | Method and apparatus for programming analog neural memory in a deep learning artificial neural network |
| US20190341110A1 (en) * | 2018-05-01 | 2019-11-07 | Silicon Storage Technology, Inc. | Method and apparatus for high voltage generation for analog neural memory in deep learning artificial neural network |
Also Published As
| Publication number | Publication date |
|---|---|
| EP4350697B1 (en) | 2025-10-22 |
| WO2021096563A1 (en) | 2021-05-20 |
| TW202127450A (zh) | 2021-07-16 |
| JP7676489B2 (ja) | 2025-05-14 |
| JP2023169170A (ja) | 2023-11-29 |
| EP4350697A3 (en) | 2024-08-14 |
| TW202307848A (zh) | 2023-02-16 |
| US20230368011A1 (en) | 2023-11-16 |
| EP4354440B1 (en) | 2025-10-15 |
| JP7340101B2 (ja) | 2023-09-06 |
| TW202501478A (zh) | 2025-01-01 |
| KR20220073798A (ko) | 2022-06-03 |
| KR20250021645A (ko) | 2025-02-13 |
| EP4350697A2 (en) | 2024-04-10 |
| JP2023501998A (ja) | 2023-01-20 |
| TWI782343B (zh) | 2022-11-01 |
| KR102764740B1 (ko) | 2025-02-06 |
| EP4354440A2 (en) | 2024-04-17 |
| TWI901333B (zh) | 2025-10-11 |
| CN114651307A (zh) | 2022-06-21 |
| JP2025124641A (ja) | 2025-08-26 |
| EP4059018B1 (en) | 2024-04-17 |
| EP4354440A3 (en) | 2024-07-31 |
| EP4059018A1 (en) | 2022-09-21 |
| US11755899B2 (en) | 2023-09-12 |
| CN120766737A (zh) | 2025-10-10 |
| CN114651307B (zh) | 2025-06-27 |
| US20210142156A1 (en) | 2021-05-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI858395B (zh) | 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 | |
| TWI799006B (zh) | 讀取選定非揮發性記憶體單元之方法 | |
| TWI784318B (zh) | 在深度學習人工神經網路中用於類比神經記憶體之程式化的精確度調校 | |
| CN116635869A (zh) | 深度学习人工神经网络中模拟神经存储器的数字输出机制 | |
| TW202601658A (zh) | 在一人工神經網路中之類比神經記憶體之精確程式化方法及裝置 | |
| TW202230376A (zh) | 深度學習人工神經網路中類比神經記憶體之輸入及數位輸出機制 |