TW202209192A - 用於卷積類神經網路應用的記憶體元件 - Google Patents
用於卷積類神經網路應用的記憶體元件 Download PDFInfo
- Publication number
- TW202209192A TW202209192A TW110112986A TW110112986A TW202209192A TW 202209192 A TW202209192 A TW 202209192A TW 110112986 A TW110112986 A TW 110112986A TW 110112986 A TW110112986 A TW 110112986A TW 202209192 A TW202209192 A TW 202209192A
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- elements
- memory
- voltage
- node
- Prior art date
Links
Images
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
- 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
-
- 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/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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/02—Computing arrangements based on specific mathematical models using fuzzy logic
- G06N7/023—Learning or tuning the parameters of a fuzzy system
-
- 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/005—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
-
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/412—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using field-effect transistors only
-
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
- G11C11/417—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
- G11C11/418—Address 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
- G11C11/417—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
- G11C11/419—Read-write [R-W] circuits
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Neurology (AREA)
- Automation & Control Theory (AREA)
- Fuzzy Systems (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Read Only Memory (AREA)
Abstract
一種卷積神經網路(CNN)包括記憶體單元陣列,其包括複數個記憶體單元。每一個記憶體單元包括複數個第一電容性元件中之至少一個第一電容性元件。每一個記憶體單元用以使權重位元與輸入位元相乘以產生乘積。當乘積滿足預定閾值時,至少一個第一電容性元件被啟用。CNN包括參考單元陣列,其包括複數個第二電容性元件。CNN包括記憶體控制器,其用以比較與複數個第一電容性元件相關聯之第一訊號與和複數個第二電容性元件中之至少一個第二電容性元件相關聯的第二訊號,且基於此比較,決定是否啟用此至少一個第一電容性元件。
Description
無
神經網路可用於基於人工智慧之機器學習方法中,其可(例如)應用於語音識別、影像識別/物件偵測,及其他領域。卷積神經網絡為一類神經網路,其通常包括(若干)計算卷積層、(若干)全連接層及(若干)分類器之三個階段。
無
以下揭示內容提供用於實施所提供標的之不同特徵的許多不同實施例或實例。以下描述部件及佈置的特定實例以簡化本揭示案之一些實施例。當然,此些僅為實例且並不意欲為限制性的。舉例而言,在如下描述中第一特徵在第二特徵之上或在第二特徵上形成可包括其中第一特徵與第二特徵形成為直接接觸之實施例,且亦可包括其中額外特徵可在第一特徵與第二特徵之間形成而使得第一特徵與第二特徵可不直接接觸的實施例。另外,本揭示案之一些實施例可在各種實例中重複元件符號及/或字母。此重複是出於簡化及清楚目的,且其自身並不表示所論述之各種實施例及/或配置之間的關係。
另外,為了描述簡單,可在本文中使用諸如「在……之下」、「下方」、「下部」、「上方」、「上部」以及其類似術語之空間相對術語,以描述如諸圖中所繪示之一個元件或特徵與另一(其他)元件或特徵的關係。除了諸圖中所描繪之定向以外,此些空間相對術語意欲涵蓋元件在使用中或操作中之不同定向。裝置可以其他方式定向(旋轉90度或以其他定向),且可同樣相應地解釋本文中所使用之空間相對描述詞。
卷積神經網路(CNN)計算權重以對新資料(例如,輸入資料字元)執行計算。可在靜態隨機存取記憶體(SRAM)中實施CNN。兩種習知類型之基於SRAM的CNN為基於電流的CNN及基於電荷共享之CNN。然而,此些習知類型中之每一者存在高複雜性、大面積及匹配不良與雜訊問題。
本文中揭示基於執行二進位搜尋之基於SRAM的CNN之實施例。在一些實施例中,基於二進位搜尋的CNN搜尋數位字元。在搜尋之每次迭代運算期間,CNN比較類比訊號(例如,類比電壓),且轉換類比訊號以輸出數位位元。類比訊號是藉由在預定時間內用電流對電容器充電而產生。輸出數位位元可儲存在對應複數個暫存器中。在一些實施例中,在二進位搜尋之每次迭代運算中,基於二進位搜尋的CNN比較記憶體單元陣列之第一類比訊號與參考單元區域之第二類比訊號,並將比較之輸出映射至對應的輸出數位位元。在一些實施例中,可藉由對複數個類比元件充電或使用複數個類比元件供應電流而產生第一及第二類比訊號。因為需要比習知CNN中少的偏置電路系統,所以複雜性得以減小。隨著電容器充電更多,類比訊號相對於雜訊增大,此可能導致不正確的類比至數位轉換。因此,增大類比訊號會減小雜訊的影響。與習知CNN相比較而言,可減小基於二進位搜尋的CNN之SRAM電路系統中之電晶體及/或電容器的大小。舉例而言,基於二進位搜尋的CNN之SRAM電路系統中的電晶體比習知基於電流的CNN中之電晶體小,因為基於二進位搜尋的CNN之SRAM電路系統中的電晶體是用於開關,且電晶體性質(例如,寬度、長度、閾值電壓)之匹配不良不會使基於二進位搜尋的CNN之效能降級,而習知基於電流的CNN中之電晶體是用於電流鏡,且對應的電晶體性質匹配不良會導致跨各種記憶體單元之電路系統供應之電流的差別,此將影響習知基於電流的CNN之輸出的準確度。此外,由於熱雜訊限制,基於二進位搜尋的CNN之SRAM電路系統的電容器小於習知基於電荷的CNN之電容器。具體而言,藉由基於二進位搜尋的CNN比較之類比訊號與電容器之大小成反比,使得熱雜訊(例如,kT/C)隨著大小增大而減小,而習知基於電荷的CNN之輸出處的類比訊號與用於相乘累加(例如,相乘與平均)操作所需之電容器的大小成比例。在習知基於電荷的CNN中,使得熱(例如,kT/C)雜訊隨著大小增大而增大。
第1圖為根據一個實施例之記憶體元件100的圖式。在一些實施例中,記憶體元件100包括記憶體控制器105及記憶體陣列120。記憶體陣列120可包括以二維或三維陣列佈置之複數個儲存電路或記憶體單元125。每一記憶體單元125可耦合至對應字元線WL及對應位元線BL。記憶體控制器105可根據經過字元線WL及位元線BL之電訊號將資料寫入至記憶體陣列120或自記憶體陣列120讀取資料。在其他實施例中,記憶體元件100包括比第1圖中所示部件更多、更少或與其不同之部件。
記憶體陣列120為儲存資料之硬體部件。在一個態樣中,記憶體陣列120體現為半導體記憶體元件。記憶體陣列120包括複數個儲存電路或記憶體單元125。記憶體陣列120包括各自在第一方向(例如,X方向)上延伸之字元線WL0,WL1,…WLK,以及各自在第二方向(例如,Y方向)上延伸之位元線(例如,權重線)BL0,BL1,…BLK。字元線WL及位元線BL可為導電金屬或導電導軌。在一個態樣中,每一記憶體單元125耦合至對應字元線WL及對應位元線,且可根據經過對應字元線WL及對應位元線BL之電壓或電流來操作。在一些實施例中,記憶體陣列120包括額外或替代的線(例如,數位輸入線、選擇線、參考線、參考控制線、電力導軌等)。舉例而言,除了字元線以外,記憶體陣列120可包括在第一方向上延伸之輸入資料線。在一些實施例中,記憶體單元中之每一者包括複數個類比元件(例如,電容性元件)。以下關於第2A圖至第8圖來提供對記憶體元件100之配置及操作的詳細描述。
記憶體控制器105為控制記憶體陣列120之操作的硬體部件。在一些實施例中,記憶體陣列120包括位元線控制器112、字元線控制器114及時序控制器110。在一個配置中,字元線控制器114為提供經過記憶體陣列120之一個或多個字元線WL的電壓或電流之電路,且位元線控制器112為提供或感測經過記憶體陣列120之一個或多個位元線BL的電壓或電流之電路。在一個配置中,時序控制器110為提供控制訊號或時脈訊號以使位元線控制器112及字元線控制器114的操作同步化之電路。位元線控制器112可耦合至記憶體陣列120之位元線BL,且字元線控制器114可耦合至記憶體陣列120之字元線WL。在一個實例中,為了將資料寫入至記憶體單元125,字元線控制器114經由耦合至記憶體單元125之字元線WL向記憶體單元125提供電壓或電流,且經由耦合至記憶體單元125之位元線BL向記憶體單元125施加偏置電壓。在一個實例中,為了自記憶體單元125讀取資料,字元線控制器114經由耦合至記憶體單元125之字元線WL向記憶體單元125提供電壓或電流,且經由耦合至記憶體單元125之位元線感測對應於記憶體單元125所儲存之資料的電壓或電流。在一些實施例中,字元線控制器114包括列解碼器,此列解碼器解碼長度為n之列,且藉由斷定2n
個字元線中之對應一者來啟動2n
個列中之一者,且位元線控制器114控制多工器以自此列選擇2n
個位元作為要存取之資料。在一些實施例中,記憶體控制器105包括比第1圖中所示部件更多、更少或與其不同之部件。
在一些實施例中,記憶體控制器105包括二進位搜尋控制器130。在一個配置中,二進位搜尋控制器130為決定記憶體陣列120中之哪些類比元件被啟用之電路。以下關於第2A圖至第8圖來提供對二進位元搜尋控制器130之配置及操作的詳細描述。
在一些實施例中,記憶體元件100包括參考記憶體陣列140。參考記憶體陣列140為藉由二進位搜尋控制器130進行操作之硬體部件。在一些實施例中,參考記憶體陣列140類似於記憶體陣列120。以下關於第2A圖至第8圖來提供對參考記憶體陣列140之配置及操作的詳細描述。
第2A圖為根據一些實施例之卷積神經網路(CNN)200A的實例方塊圖。CNN 200A包括記憶體單元陣列202。記憶體單元陣列202包括定義多個列之在第一方向(例如,X方向)上延伸的數位輸入(Din)線DL1,DL2,…DLM,以及定義多個行之在第二方向(例如,Y方向)上延伸的權重線WTL1、WTL2、…WTLK。在一些實施例中,權重線類似於第1圖之位元線。在一些實施例中,記憶體單元陣列202另外包括在第一方向上延伸之字元線(例如,第1圖中之字元線)。Din線DL1、DL2、…DLM中之每一者(亦即,每一Din線DL)可攜載Din字之一個Din位元,此Din字包括M個Din位元(例如,Din1、Din2、…DinM)。權重線WTL1、WTL2、…WTLK中之每一者(亦即,每一權重線WTL)可攜載權重字元之一個權重位元,此權重字元包括K個權重位元(例如,Weight1、Weight2、…WeightK)。在一些實施例中,斷定每一字元線,以使得可存取及/或儲存在對應列上之權重位元。
記憶體單元陣列202包括複數個記憶體單元2031,1
至203M,K
。K位於Din線與權重線之交叉點。舉例而言,2031,1
耦合至對應權重線。複數個記憶體單元2031,1
至203M,K
中之每一者(亦即,每一記憶體單元203)用以儲存(例如,預儲存)一個權重位元。因此,每一權重位元是儲存在記憶體單元203之共享(例如,耦合至)同一行之子集。每一記憶體單元203用以接收一個Din位元。因此,在記憶體單元203之共享同一行之子集上斷定每一Din位元。
在每一記憶體單元203中,存在一種電路,此電路用以使儲存於其上之權重位元與藉此接收到之Din位元相乘(例如,以按元素方式),以(在一些實施例中)產生乘積。關於第5A圖至第5F圖描述此電路之實施例。因此,根據如下方程式,複數個記憶體單元2031,1
至203M,K
為按行主要形式之Din字與按列主要形式之權重字元的矩陣相乘,以產生複數個乘積:
每一記憶體單元203包括至少一個類比元件(例如,被動元件、電容性元件、電阻性元件或處於飽和及/或主動模式下之電晶體元件)。在一些實施例中,類比元件用以將對應產生之乘積(其為數位的)轉換為類比訊號。在一些實施例中,當Din位元處於第一電壓位準(例如,高電壓位準、VDD、第一邏輯狀態、高邏輯狀態)且權重位元處於第一電壓位準時,啟用類比元件(例如,接通、連接、具有第一類比訊號)。在一些實施例中,當Din位元處於第二電壓位準(例如,低電壓位準、GND、第二邏輯狀態、低邏輯狀態)或權重位元處於第二電壓位準時,啟用類比元件(例如,關斷、斷開連接、具有第二類比訊號)。在一些實施例中,類比元件為與第一開關及第二開關串聯耦合之電容器元件,此第一開關及第二開關分別受Din位元及權重位元控制。若Din位元及權重位元中之每一者皆處於第一電壓下(例如,若啟用開關中之每一者),則啟用電容性元件(例如,電容性元件可被充電(例如,由電流源)以保持(例如,攜載、儲存)電壓)。在一些實施例中,電容器可保持之電壓的量值與權重位元之電壓及Din位元之電壓的乘積之量值成比例。舉例而言,若Din位元及權重位元處於表示高邏輯狀態之第一電壓下(例如,VDD),則跨電容性元件所儲存之電壓的量值為非零值,而若Din位元或權重位元中之至少一者處於表示低邏輯狀態之第二電壓下(例如,0 V),則跨電容性元件所儲存之電壓的量值為零。在一些實施例中,類比元件為與第一開關及第二開關串聯耦合之處於飽和的電晶體元件,此第一開關及第二開關分別受Din位元及權重位元控制。若Din位元及權重位元中之每一者皆處於第一電壓下(例如,若啟用開關中之每一者),則啟用電晶體元件(例如,電晶體元件可向與電晶體元件及此些開關串聯之被動元件(諸如,電阻性或電容性元件)供應電流及/或自此被動元件汲取電流)。在一些實施例中,由於供應/汲取電流之電晶體元件而跨被動元件儲存之電壓的量值與權重位元之電壓及Din位元之電壓的乘積之量值成比例。
在一些實施例中,至少一個類比元件之數目(例如,其大小、其數量、其諸多並行個例)與權重位元之位置(例如,權重位元位置)成比例(例如,按二進位成比例、根據此位置按二進位加權),此權重位元用以產生與此至少一個類比元件相關聯之乘積。舉例而言,記憶體單元2031,1
包括N個類比元件,此與儲存於其上之第一(例如,最重要)權重位元Weight1的位置成比例,記憶體單元2031,2
包括N/2個類比元件,此與儲存於其上之下一權重位元Weight2的位置成比例,以此類推,直至記憶體單元2031,K
包括1個類比元件為止,此與儲存於其上之最末(例如,最不重要)權重位元WeightK的位置成比例,其中2K
=N。在另一實施例中,若存在7位元的解析度,則對於相應記憶體單元而言類比元件之數目為64、32、16、8、4、2及1。
在一些實施例中,當對應Din位元及對應權重位元均滿足預定閾值時,啟用(例如,啟動、耦合至具有小於預定阻抗之阻抗的節點電壓)至少一個第一類比元件。在一些實施例中,滿足預定閾值包括對應Din位元及對應權重位元均大於供應電壓的一半。在一些實施例中,滿足預定閾值包括對應Din位元及對應權重位元均處於高邏輯狀態(例如,為「1」、接通、高電壓、供應電壓、VDD)。在一些實施例中,當對應Din位元及對應權重位元中之任一者滿足第二預定閾值時,停用(例如,撤銷啟動(deactivated)、浮置(floating)、耦合至具有大於預定阻抗之阻抗的節點電壓)此至少一個第一類比元件。在一些實施例中,滿足第二預定閾值包括對應Din位元及對應權重位元中之任一者小於供應電壓的一半。在一些實施例中,滿足第二預定閾值包括對應Din位元及對應權重位元中之任一者處於低邏輯狀態(例如,為「0」、關斷、低電壓、接地電壓、GND、0 V)。
在一些實施例中,當所產生之乘積滿足預定閾值時,啟用至少一個第一類比元件。在一些實施例中,滿足預定閾值包括此乘積為高邏輯狀態(例如,VDD),其對應於Din位元與權重位元之AND運算。在一些實施例中,滿足預定閾值包括Din位元及權重位元中之每一者的電壓大於參考電壓(例如,VDD/2)。在一些實施例中,滿足預定閾值包括此乘積為低邏輯狀態(例如,GND),其對應於Din位元與權重位元之NAND運算。在一些實施例中,滿足預定閾值包括Din位元或權重位元中之至少一者的電壓小於參考電壓(例如,VDD/2)。
CNN 200A包括參考單元陣列204。參考單元陣列204包括複數個參考單元205A至205K。在一些實施例中,參考單元205A至205K類似於記憶體單元2031,1
至203M,K
,不同之處在於,不接收權重位元及Din位元,參考單元205A至205K中之每一者(亦即,每一參考單元205)接收包括參考位元MSB,MSB-1,…LSB之參考字的參考位元。每一參考單元205包括至少一個第二類比元件。在一些實施例中,至少一個類比元件之數目(例如,其大小)與參考位元之位置(例如,參考位元位置)成比例(例如,按二進位成比例、根據此位置按二進位加權),此參考位元用以啟用此至少一個類比元件。舉例而言,參考單元205A包括N個類比元件,此與自二進位搜尋控制器212接收到之第一(例如,最重要)參考位元MSB的位置成比例,參考單元205B包括N/2個類比元件,此與自二進位搜尋控制器212接收到之下一參考位元MSB-1的位置成比例,以此類推,直至參考單元205K包括1個類比元件為止,此與自二進位搜尋控制器212接收到之最末(例如,最不重要)參考位元LSB的位置成比例,其中2K
=N。在另一實施例中,若存在7位元的解析度,則對於相應記憶體單元而言類比元件之數目為64、32、16、8、4、2及1。
在一些實施例中,當對應的參考位元滿足第三預定閾值時,啟用至少一個第二類比元件。在一些實施例中,滿足第三預定閾值包括參考位元大於供應電壓的一半。在一些實施例中,滿足預定閾值包括參考位元為高邏輯狀態。在一些實施例中,參考單元205接收第二、固定訊號(例如,VDD、AVDD、供應訊號)。
CNN 200A包括記憶體控制器207。在一些實施例中,記憶體控制器207用以將複數個類比元件之一個或多個類比訊號轉換為可儲存在一個或多個相應暫存器中之相應的一個或多個數位位元。記憶體控制器207包括充電電路系統209。在一些實施例中,充電電路系統209包括電流源(CS)(參見第2B圖)或被動(例如,被動的或電阻性的)元件(參見第2C圖至第2E圖)。當被啟用時,充電電路系統209之第一部分為記憶體單元陣列202之第一類比元件(例如,電容性元件)的被啟用子集(例如,部分)充電。當被啟用時,充電電路系統209之第二部分為參考單元陣列204之第二類比元件(例如,電容性元件)的被啟用子集充電。當被啟用時,充電電路系統209之第三部分為第一類比元件之被啟用子集充電。當被啟用時,充電電路系統209之第一部分為第二類比元件之被啟用子集充電。
記憶體控制器207包括比較器210。比較器210比較在對應於第一類比元件之第一節點(例如,第一感測節點)NM處的第一訊號(例如,電壓)VM與在與複數個第二電容性元件相關聯之第二節點(例如,第二感測節點)NA處的第二訊號(例如,電壓)VA,且基於此比較在節點Nout處產生輸出(例如,數位輸出)訊號(例如,電壓)Vout。在一些實施例中,若VA與VM之差為第一極性(例如,若VA大於VM),則Vout為高邏輯狀態,且若VA與VM之差為第二極性(例如,若VA小於VM),則Vout為低邏輯狀態。在一些實施例中,比較器210為硬體部件。在一些實施例中,比較器包括運算放大器,其中運算放大器之增益將導致輸入VM及VA之電壓的任何差皆大於預定閾值(例如,1 nV),以產生高或低邏輯狀態作為Vout。運算放大器可實施為差分、二級放大器或熟習硬體電路設計之此項技術者所已知的其他運算放大器實施。
記憶體控制器207包括二進位搜尋控制器212。二進位元搜尋控制器212用以以迭代運算方式決定記憶體陣列202之被啟用之第一類比元件的數目,且將此數目儲存在一個或多個暫存器中。二進位搜尋控制器212用以將複數個參考位元中之每一者設定(例如,選擇、更新)為高邏輯狀態或低邏輯狀態。二進位搜尋控制器212用以選擇充電電路系統209的部分。二進位搜尋控制器212用以接收來自比較器之Vout。二進位搜尋控制器212用以基於Vout將複數個參考位元中之每一者設定為高邏輯狀態或低邏輯狀態。二進位搜尋控制器212用以對MSB執行二進位搜尋之迭代,接著對MSB-1執行,以此類推,直至其對LSB執行了迭代為止。在一些實施例中,二進位搜尋控制器212包括比較器210及充電電路系統209中之至少一者。
第3圖為根據一些實施例之記憶體控制器207的操作300之實例時序圖。在t1,1
之前,如第2A圖至第2E圖及第5A圖至第5F圖中所描述,基於由記憶體單元陣列202儲存之權重字元以及由記憶體單元陣列202接收之Din字,啟用記憶體單元陣列202之類比元件(例如,第一類比元件、第一電容性元件)的子集。在t1,1
之前,參考單元204陣列之所有類比元件(例如,參考/第二類比元件、參考/第二電容性元件)被停用(例如,藉由預設)。對於關於第3圖之實例的其餘部分而言,將類比元件稱作電容性元件。
操作300之第一迭代包括在t1,1
至t1,7
處之事件。在第一迭代運算期間,記憶體控制器決定(例如,找到)MSB,其指示在記憶體單元陣列202之第一行中的被啟用電容性元件之子集。在t1,1
處,記憶體控制器207將複數個參考位元之MSB設定為高電壓(例如,VDD、VDD1)。將MSB設定為高電壓使至少一個電容性元件205A被啟用。在一些實施例中,MSB(例如,MSB之電壓)是儲存在暫存器中。在t1,2
處,記憶體控制器207將第一啟用位元(I1_EN)設定為高電壓(例如,VDD、VDD2,其中VDD2與VDD1相同或不同)(例如,將第一enable_bar位元設定為低電壓(GND)等等)。當被設定為高電壓時,I1_EN位元啟用充電電路系統209之第一及第二部分。回應於啟用充電電路系統209之第一部分,此第一部分使電荷轉移(例如,導致電流流動)至第一電容性元件之被啟用子集(例如,第一電容性元件之被啟用子集聚集電荷),且導致電壓VM根據以下方程式(方程式2)升高:
回應於啟用充電電路系統209之第二部分,此第二部分使電荷轉移至參考電容性元件之被啟用子集,且導致電壓VA根據以下方程式(方程式3)升高:
在t1,3
處,記憶體控制器207將I1_EN位元設定為低電壓(例如,GND)。當被設定為低電壓時,I1_EN位元停用充電電路系統209之第一及第二部分。作為回應,第一電容性元件之被啟用子集保持其電荷,且電壓VM得以保持(例如,儲存、穩定、恆定、隨時間恆定、大體上隨時間恆定,在+/-1 mV內等),且參考電容性元件之被啟用子集保持其電荷,且電壓VA得以保持。
在t1,4
處,記憶體控制器207比較VM與VA,且產生(例如,產生、決定、識別等)Vout。在一些實施例中,若VA大於VM,則指示在記憶體單元陣列202中比在參考單元陣列204中啟用了更多電容性元件,且Vout為高電壓(例如,VDD、VDD3,其中VDD3與VDD1及VDD2系統或不同),且若VA小於VM,則指示在參考單元陣列204中比在記憶體單元陣列202中啟用了更多電容性元件,且Vout為低電壓(例如,GND)。在此實例中,因為VA大於VM,所以Vout為高電壓。
在t1,5
處,記憶體控制器207將I2啟用位元(I2_EN)設定為高電壓(例如,VDD)(例如,將第二enable_bar位元設定為低電壓(GND)等)。當被設定為高電壓時,I2_EN位元啟用充電電路系統209之第三及第四部分。回應於啟用充電電路系統209之第三部分,第三部分使電荷自第一電容性元件之被啟用子集轉移至參考平面,諸如,接地平面(例如,第一電容性元件之被啟用子集放電),且導致電壓VM根據以下方程式(方程式4)下降:
當電流源206D耦合至節點NA時,電流源206D使電荷自參考電容性元件之被啟用子集轉移至參考平面,且導致電壓VA根據以下方程式(方程式5)下降:
在t1,6
處,記憶體控制器207將I2_EN位元設定至低電壓(例如,GND)。當被設定為低電壓時,I2_EN位元停用第三及第四部分。作為回應,第一電容性元件之被啟用子集保持其剩餘電荷(若存在),且電壓VM得以保持,且參考電容性元件之被啟用子集保持其剩餘電荷(若存在),且電壓VA得以保持。
在t1,7
處,記憶體控制器207將Vout映射(例如,耦合、傳遞、轉換)至MSB之電壓。在一些實施例中,若Vout為高電壓(例如,VDD、VDD3),則記憶體控制器207將MSB設定為高電壓(例如,VDD、VDD1)。在一些實施例中,若Vout為低電壓(例如,GND),則記憶體控制器207將MSB設定為低電壓(例如,GND)。在此實例中,因為Vout為高電壓,所以記憶體控制器207將MSB設定為高電壓。在一些實施例中,MSB是儲存在暫存器中。在一些實施例中,MSB更新了其中例如在t1,1
處儲存了MSB之暫存器。
操作300之第二迭代包括t2,1
至t2,7
處之事件。第二迭代類似於第一迭代,不同之處在於,(1)參考單元陣列204中之被啟用電容性元件的子集是基於第一迭代,以及(2)在第二迭代期間,記憶體控制器207決定(例如,找到)MSB-1,其指示記憶體單元陣列202之第二行中之被啟用電容性元件的子集。在第二迭代之此實例中,Vout為低電壓,因為VA小於VM且記憶體控制器207將Vout映射至MSB-1之低電壓。執行接下來的迭代,直至記憶體控制器207決定所有參考位元MSB至LSB為止。在一些實施例中,t2,1
及t1,7
可為同一時間(例如,可在相同時間或在其中基於比較更新MSB位元之同一事件期間設定MSB-1位元)。
在一些實施例中,時間(例如,t1,1
、t1,2
等)及時間週期/範圍(例如,t1,2
至t1,1
等)中之每一者是預定的(例如,由預定時脈或源自此時脈之訊號觸發,在此類時脈或訊號中之上升/下降/位準等)。在一些實施例中,此些時間及時間週期中之每一者是可調整/可重新配置的(例如,調整時脈頻率,工作循環比,使用不同時脈來觸發不同事件等)。
返回參考第2A圖,在一些實施例中,CNN 200A包括偏移單元214。偏移單元214用以補償記憶體單元陣列及參考單元陣列之類比元件的性質之間的匹配不良。舉例而言,記憶體單元陣列中之單個電容性元件的大小可大於參考單元陣列中之單個電容性元件的大小。類比元件性質的匹配不良可導致驅動比較器210之類比電壓的差別,即使對於記憶體單元202及參考單元204而言電容性元件之數目及所供應電流之量值是相同的。偏移單元214包括複數個類比元件,其經選擇性地啟用且選擇性地耦合至記憶體單元陣列202或參考單元陣列204。在一些實施例中,記憶體控制器207設定複數個參考位元,以使得在參考單元陣列204中啟用相同數目個類比元件。記憶體控制器207比較基於第一類比元件之被啟用子集的第一訊號與基於參考類比元件之被啟用子集的第二訊號。在一些實施例中,若第一及第二訊號之差大於預定閾值,則記憶體控制器207添加偏移單元214之偏移類比元件,直至此差低於預定閾值為止。在一些實施例中,第一及第二訊號之差的極性為第一極性,且記憶體控制器207添加偏移單元214之偏移類比元件,直至極性差為與第一極性相反之第二極性為止。
在一些實施例中,記憶體控制器207為第1圖中之記憶體控制器105的個例。在一些實施例中,記憶體單元陣列202為第1圖中之記憶體單元陣列120的個例。在一些實施例中,每一記憶體單元203為第1圖中之記憶體單元125的個例。在一些實施例中,參考陣列204為第1圖中之參考記憶體陣列140的個例。在一些實施例中,二進位搜尋控制器212為第1圖中之二進位搜尋控制器130的個例。
第2B圖為根據一些實施例之CNN 200B的實例方塊圖。CNN 200B類似於第2A圖之CNN 200A,不同之處在於,CNN 200B包括記憶體控制器207A。記憶體控制器207A類似於第2A圖之記憶體控制器207,不同之處在於,記憶體控制器207A包括電流源電路系統209A。電流源電路系統209A為第2A圖之充電電路系統209的一個實施例。電流源電路系統209A包括電流源(CS)206A至206D。當被啟用時,CS 206A將電流供應給記憶體單元陣列202之第一電容性元件的被啟用子集(例如,部分)。當被啟用時,CS 206B將電流供應給參考單元陣列204之第二電容性元件的被啟用子集。在一些實施例中,CS 206A至206B供應相等的電流I1。當被啟用時,CS 206C自第一電容性元件之被啟用子集汲取電流。當被啟用時,CS 206D自第二電容性元件之被啟用子集汲取電流。在一些實施例中,CS 206C至206D汲取相等的電流I2。在一些實施例中,CS 206A至206D為可程式化的,因為其可經程式化而提供不同的電流量值。在一些實施例中,使用參考電流源/產生器以及電流鏡來實施CS 206A至206D。
在一些實施例中,電流源電路系統209A包括開關208A至208D。在一些實施例中,選擇性地啟用開關208A至208D,以分別啟用CS 206A至206D(例如,提供用於CS 206A至206D供應/汲取電流之路徑)。舉例而言,若啟用開關208A,則CS 206A可將電流供應給第一電容性元件之被啟用子集,但若停用開關208A,則CS 206A與第一電容性元件之被啟用子集斷開連接。在一些實施例中,將開關208A至208D實施為N型金屬氧化物半導體(NMOS)開關(例如,傳輸閘)、P型MOS(PMOS)開關、互補MOS(CMOS)開關等。在一些實施例中,將開關208A至208B實施為PMOS開關,且將開關208C至208D實施為NMOS開關,以(例如)減小每一開關之電阻-電容(RC)時間常數,此時間常數為開關之接通電阻與開關之關斷電容的乘積。
第2C圖為根據一些實施例之CNN 200C的實例方塊圖。CNN 200C類似於第2A圖之CNN 200A,不同之處在於,CNN 200C包括記憶體控制器207B。記憶體控制器207B類似於第2A圖之記憶體控制器207,不同之處在於,記憶體控制器207B包括充電電路系統209B。充電電路系統209B為第2A圖之充電電路系統209的一個實施例。充電電路系統209B包括電阻性元件226A至226B。電阻性元件226A(例如,電阻性元件226A之第一部分)經由節點NM耦合至記憶體單元陣列202,且電阻性元件226B(例如,電阻性元件226B之第一部分)經由節點NA耦合至參考單元陣列204。在一些實施例中,當電阻性元件226A處於第一偏置配置中時(例如,當電壓電位(例如,電壓降、電壓差等)跨電阻性元件226A具有第一極性時),電流自電阻性元件226A流動(例如,電荷轉移)並流至記憶體單元陣列202之第一電容性元件的被啟用子集(例如,部分)。在一些實施例中,當電阻性元件226B處於第一偏置配置中時,電流自電阻性元件226B流動(例如,電荷轉移)並流至參考單元陣列204之第二電容性元件的被啟用子集(例如,部分)。在一些實施例中,當電阻性元件226A處於第二偏置配置中時,電流流動(例如,電荷轉移)至電阻性元件226A並自記憶體單元陣列202之第一電容性元件的被啟用子集(例如,部分)流動。在一些實施例中,當電阻性元件226B處於第二偏置配置中時,電流流動(例如,電荷轉移)至電阻性元件226B並自參考單元陣列204之第二電容性元件的被啟用子集(例如,部分)流動。
在一些實施例中,充電電路系統209B包括反相器228。反相器228包括以反相器配置佈置之開關230A至230B(例如,開關230A至230B之閘極連至輸入(例如,來自二進位搜尋控制器212),開關230A之源極連至低參考節點(例如,GND),開關230B之源極連至高參考節點(例如,VDD),且開關230A至230B之汲極連至輸出,此輸出耦合至電阻性元件226A至226B(例如,電阻性元件226A至226B之第二部分))。在一些實施例中,選擇性地啟用開關230A至230B,以偏置電阻性元件226A至226B。舉例而言,若反相器228之輸入處的電壓ENB為高(例如,VDD),則開關230A被啟用,且開關230B被停用,從而使電阻性元件226A至226B耦合至高參考節點(例如,VDD),且在將電阻性元件226A至226B偏置在第一偏置配置中。在一些實施例中,若反相器228之輸入處的電壓ENB為低(例如,GND),則開關230B被啟用,且開關230A被停用,從而使電阻性元件226A至226B耦合至低參考節點(例如,GND),且將電阻性元件226A至226B偏置在第二偏置配置中。在一些實施例中,開關230A至230B之閘極並未連在一起,且具有不同輸入。在一些實施例中,可獨立地控制不同輸入,以使得藉由同時地停用開關230A至230B兩者而將電阻性元件226A至226B偏置在第三偏置配置中。在第三偏置配置中,記憶體單元陣列202中之第一電容性元件及參考單元陣列204中之第二電容性元件保持其相應的電荷。在一些實施例中,將開關230A實施為NMOS開關,且將開關230B實施為PMOS開關。
第2D圖為根據一些實施例之CNN 200D的實例方塊圖。CNN 200D類似於第2A圖之CNN 200A,不同之處在於,CNN 200D包括記憶體控制器207C。記憶體控制器207C類似於第2A圖之記憶體控制器207,不同之處在於,記憶體控制器207C包括充電電路系統209C。充電電路系統209C為第2A圖之充電電路系統209的一個實施例。充電電路系統209C包括電阻性元件226A至226B。電阻性元件226A至226B之操作類似於第2C圖之電阻性元件226A至226B的操作。
在一些實施例中,充電電路系統209B包括開關238A至238B。開關238A至238C使其閘極連至輸入(例如,來自於二進位搜尋控制器212)。開關238A之源極耦合至低參考節點(例如,GND)。開關238A之汲極耦合至NM節點。開關238B之源極耦合至低參考節點(例如,GND)。開關238B之汲極耦合至NA節點。開關238C之源極耦合至高參考節點(例如,VDD)。開關238C之汲極耦合至電阻性元件226A至226B。在一些實施例中,選擇性地啟用開關238A至238C,以偏置電阻性元件226A至226B。舉例而言,若反相器228之輸入處的電壓ENB為高(例如,VDD),則開關238A至238B被啟用,且開關238C被停用,從而使電阻性元件226A至226B耦合至高參考節點(例如,VDD),且將電阻性元件226A至226B偏置在第一偏置配置中。在一些實施例中,若反相器228之輸入處的電壓ENB為低(例如,GND),則開關238C被啟用,且開關230A至230B被停用,從而使電阻性元件226A至226B耦合至低參考節點(例如,GND),且將電阻性元件226A至226B偏置在第二偏置配置中。在一些實施例中,開關238A至238C之閘極並未連在一起,且具有不同輸入。在一些實施例中,可獨立地控制不同輸入,以使得藉由同時地停用開關238A至238C中之兩者而將電阻性元件226A至226B偏置在第三偏置配置中。在第三偏置配置中,記憶體單元陣列202中之第一電容性元件及參考單元陣列204中之第二電容性元件保持其相應的電荷。在一些實施例中,將開關238A至238B實施為NMOS開關,且將開關238C實施為PMOS開關。
第2E圖為根據一些實施例之CNN 200E的實例方塊圖。CNN 200E類似於第2A圖之CNN 200A,不同之處在於,CNN 200E包括記憶體控制器207D。記憶體控制器207D類似於第2A圖之記憶體控制器207,不同之處在於,記憶體控制器207D包括負載電路系統209D。負載電路系統209D為第2A圖之充電電路系統209的一個實施例。負載電路系統209D包括負載元件246A至246B。負載元件246A接收來自記憶體單元陣列202之類比元件的被啟用第一子集之電流,以跨負載元件246A產生電壓V1。負載元件246B接收來自參考單元陣列204之參考類比元件的被啟用子集之電流,以跨負載元件246B產生電壓V2。在一些實施例中,負載元件246A至246B為被動元件(例如,電阻性元件、電容性元件)。
在一些實施例中,負載電路系統209D包括電壓依賴型電壓源(VDVS)248A至248B。VDVS 248A在節點NM處產生與電壓V1成比例(例如,線性比例)之電壓VM。VDVS 248B在節點NA處產生與電壓V2成比例(例如,線性地成比例)之電壓VA。
第4圖為根據一些實施例之二進位搜尋控制器212的實例電路圖。第4圖之實例電路圖示出了如何儲存(例如,在暫存器420<K:1>中)表示記憶體單元陣列202中之類比元件之被啟用子集的數位輸出之實施。第4圖之實例電路圖示出了如何產生控制訊號(例如,電流源206A至206D之啟用符I1_EN及I2_EN、比較器210啟用符Comp_En、參考單元陣列204之類比元件的啟用符MSB至LSB)之實施。第4圖之實例電路圖示出了如何產生用於決定參考單元陣列204啟用符及數位輸出的中間訊號(例如,RefBit_En、RefBitUpd_En)之實施。在一些實施例中,二進位搜尋控制器212包括電路系統402,此電路系統402用於產生用以觸發第3圖之操作300的單個迭代之諸多(例如,7個)事件的啟用訊號(例如,位元、脈衝、電壓、週期性訊號)。在一些實施例中,一個訊號可觸發多個事件(例如,上升觸發第一事件且下降觸發第二事件)。在一些實施例中,電路系統402包括計數器406,此計數器406接收週期性時脈訊號(CLK)並產生指示事件(例如,時間事件、階段等)計數之在log2
J範圍內的字(EN_sel<log2
J:1>),其中J為在操作300之單個迭代期間之事件的數目。在一些實施例中,在已計數了事件的數目之後,計數器重設。在一些實施例中,電路系統402包括解多工器(demux)408,此解多工器(demux)408基於在其控制/選擇輸入處接收到的EN_sel<log2
J:1>選擇性地將其訊號輸入處之高電壓(例如,VDD)傳送至其J個輸出中之一者。在一些實施例中,此些輸出包括Refbit_En(例如,對於t1,1
、t2,1
等)、I1_En(例如,對於t1,2
、t1,3
、t2,2
、t2,3
等)、Comp_En(例如,對於t1,4
、t2,4
等)、I2_En(例如,對於t1,2
、t1,3
、t2,2
、t2,3
等),以及RefBitUpd_En(例如,對於t1,7
、t2,7
等)。
在一些實施例中,二進位搜尋控制器212包括用於決定參考單元陣列204之複數個參考位元的電路系統404。在一些實施例中,電路系統404包括計數器410,此計數器410接收週期性訊號(RefBit_En)並產生指示參考位元計數之在log2
K範圍內的字(RefBit_iter_sel<log2
K:1>),其中K為參考字中參考位元的數目。在一些實施例中,在已計數了參考位元的數目之後,計數器重設。在一些實施例中,電路系統404包括demux 412,此demux 412基於在其控制/選擇輸入處接收到的RefBit_iter_sel<log2
K:1>選擇性地將其訊號輸入處之高電壓(例如,VDD)傳送至其K個輸出(RefBit_iter<K:I>)中之一者。在一些實施例中,電路系統404包括K個正反器414(例如,邊緣觸發正反器、位準觸發正反器、D正反器、SR正反器、鎖存器)。每一正反器414基於在其相應時脈輸入處之RefBit_iter<i>的觸發器(例如,觸發事件、上升邊緣、具有比預定閾值大之斜率的上升邊緣、高於預定閾值之位準)將高電壓(例如,VDD)自其相應輸入傳送至其相應輸出(RefBit<i>,其中1<=i<=K)。舉例而言,當Refbit_En第一次變高時,RefBit_iter_sel=l,RefBit_iter<1>=VDD,且RefBit<1>=VDD。在一些實施例中,RefBit<l>直接地或間接地(經由如以下所述之多工器422<1>)連至MSB。因此,在一些實施例中,在第一迭代中,將MSB設定為VDD。
在一些實施例中,電路系統404包括計數器416,此計數器416接收週期性訊號(RefBitUpd_En)並產生指示參考位元計數之在log2
K範圍內的字(RefBitUpd_iter_sel<log2
K:1>)。在一些實施例中,在已計數了參考位元的數目之後,計數器重設。在一些實施例中,電路系統404包括demux 418,此demux 418基於在其控制/選擇輸入處接收到的RefBitUpd_iter_sel<log2
K: 1>選擇性地將其訊號輸入處之高電壓(例如,VDD)傳送至其K個輸出(RefBitUpd_iter<K:l>)中之一者。在一些實施例中,電路系統404包括K個正反器420。每一正反器420基於在其相應時脈輸入處之RefBitUpd_iter<i>的觸發器將Vout自其相應輸入傳送至其相應輸出(RefBitUpd<i>)。在一些實施例中,正反器420為儲存指示記憶體單元陣列202中之類比元件的數目之複數個參考位元之暫存器的實施。
在一些實施例中,電路系統404包括K個多工器(mux)422。K個mux中之每一者基於在其相應控制輸入處之選擇位元(Upd_sel<i>)來選擇RefBit<i>及RefBitUpd<i>中之一者以傳送至其輸出。K個mux 422之輸出分別為複數個參考位元(例如,MSB,MSB-1,…,LSB)中之每一者。在一些實施例中,電路系統404包括K個正反器424。正反器424中之每一者基於在其相應時脈輸入處之RefBitUpd_iter<i>的觸發事件選擇性地將其相應輸入處之高電壓(例如,VDD)傳送至其相應輸出處之Upd_sel<i>。
第5A圖至第5F圖為根據一些實施例之記憶體單元203的不同實施例之實例電路圖。第5A圖至第5F圖之記憶體單元203A至203F中的每一者分別為記憶體單元203之不同實施例。第5A圖為記憶體單元203A之實例電路圖。記憶體單元203A包括儲存權重位元之記憶體單元核心502。第6A圖為記憶體單元核心502之實例電路圖。如第6A圖中所示,記憶體單元核心502包括交叉耦合之反相器602A至602B、在反相器602A之輸出處的位元線(BL)、將BL耦合至字元線WL之傳輸閘604A、在反相器602B之輸出處的位元線條(BLB)、將BLB耦合至字元線條WLB之傳輸閘604B。在一些實施例中,權重位元之第一電壓是儲存在BL上。在一些實施例中,權重位元之第二電壓是儲存在BLB上。在一些實施例中,第二電壓是回應於反相器602B之輸入處的第一電壓而在反相器602B之輸出處產生。在一些實施例中,記憶體單元核心502包括六電晶體(6T)靜態隨機存取記憶體(SRAM)單元(例如,單元核心)、二電晶體-二電阻器(2T-2R)SRAM單元、四電晶體(4T)SRAM單元、八電晶體(8T)SRAM單元、十電晶體(10T)SRAM單元、動態隨機存取記憶體(DRAM)單元,以及適合於在記憶體陣列中使用之其他類型的記憶體單元(在第9圖中列舉了其中一些)。
記憶體單元203A包括元件M1,此元件M1包括至少三個端子(一個輸入及兩個輸出)。M1在其輸入處接收Din位元,並基於其輸入處之Din位元的電壓位準超過預定閾值而選擇性地耦合其兩個輸出。記憶體單元203A包括元件M2,此元件M2包括至少三個端子(一個輸入及兩個輸出)。M2耦合至記憶體單元核心502,以在其輸入處接收權重位元,且基於其輸入處之權重位元的電壓位準超過預定閾值而選擇性地耦合其兩個輸出。M2之輸出中的一者耦合至M1之輸出中的一者,以使得其為級聯結構。M2之另一輸出耦合至參考節點,此參考節點具有小於諸如GND之預定閾值(例如,1歐姆)之阻抗。在一些實施例中,M1及M2處於線性區域之MOS電晶體(例如,NMOS或PMOS電晶體),每一MOS包括用於輸入之閘極以及用於其輸出之源極及汲極。
記憶體單元203A包括被動元件504。被動元件504之第一端子(埠、末端、側、平面、板等)耦合至M1之另一末端,且被動元件之第二端子耦合至感測節點(例如,耦合至第2A圖之電流源電路系統209A的節點、節點NM等)。當M1在其輸入處接收高電壓(例如,VDD)時,M1接通(例如,跨M1的兩個輸出之阻抗小於諸如1歐姆之預定閾值)。當M2在其輸入處接收高電壓(例如,VDD)時,M2接通。當元件M1及M2接通時,被動元件504被啟用(例如,被動元件504經由M1及M2耦合至參考節點,且被動元件504與參考節點之間的阻抗小於諸如1歐姆之預定閾值)。在一些實施例中,當啟用被動元件時,第6B圖為被動元件504之實例電路圖。如第6B圖中所示,被動元件504包括MOS電晶體電容性元件M3,其中閘極形成M3之第一及第二端子中的一者,且汲極及源極耦合以形成第一及第二端子中的另一者。在一些實施例中,被動元件504包括電容性元件,諸如,MOS電容性元件、金屬對金屬(MOM)電容性元件、金屬-絕緣體-金屬(MIM)電容性元件,或以一定距離分離開之任何兩個導電板;電阻性元件;或電感性元件。
第5B圖為記憶體單元203B之實例電路圖。記憶體單元203B類似於記憶體單元203A,不同之處在於,M1與M2之級聯結構使感測節點耦合至被動元件504之第一端子,且被動元件504之第二端子耦合至參考節點。當(例如)被動元件504與感測節點之間的阻抗小於諸如1歐姆之預定閾值時,啟用被動元件504。
第5C圖為記憶體單元203C之實例電路圖。記憶體單元203C類似於記憶體單元203A,不同之處在於,M1之輸出中的一者耦合至權重位元而使得權重位元為參考節點,且M1之另一輸出耦合至被動元件504之第一端子。在一些實施例中,當權重位元為低電壓(例如,GND)且Din位元為高電壓(例如,VDD)時,啟用被動元件504。
第5D圖為記憶體單元203D之實例電路圖。記憶體單元203D包括記憶體單元核心502。儲存在記憶體單元502中之權重位元耦合至M1之輸入。Din位元耦合至M1之第一輸出。M1之第二輸出耦合至處於飽和之電晶體元件M4。儲存在記憶體單元502中之權重位元的倒數耦合至M2之輸入。參考節點耦合至M2之第一輸出。M2之第二輸出耦合至M4之輸入。M4之第一輸出耦合至參考節點。M4之第二輸出耦合至負載(例如,第2E圖之負載電路系統209D、負載元件246A等)。在一些實施例中,當權重位元為高電壓(例如,VDD)且Din位元為高電壓(例如,VDD)時,啟用被動元件504。
第5E圖為記憶體單元203E之實例電路圖。記憶體單元203E類似於記憶體單元203D,不同之處在於,M4為在線性區域中偏置之電晶體元件(例如,包括至少三個端子之開關)。在一些實施例中,記憶體單元203E包括被動元件504,此被動元件504將M4之第一輸出耦合至參考節點(例如,GND)或將M4之第二輸出耦合至感測節點(例如,VM)。
第5F圖為記憶體單元203F之實例電路圖。記憶體單元203F類似於記憶體單元203B,不同之處在於,記憶體單元203F包括處於線性區域之電晶體元件M5及M6。權重位元的倒數耦合至M5之輸入,Din位元耦合至M5之第一輸出,且M1之輸入耦合至M5之第二輸出。權重位元的倒數耦合至M6之輸入。參考節點(例如,GND)耦合至M6之第一輸出,且M6之第二輸出耦合至M1之輸入。在一些實施例中,M1、M2及M6為NMOS電晶體,且M5為PMOS電晶體。
在一些實施例中,將參考單元205A至205K實施為記憶體單元203A至203F中之一者。在一些實施例中,205A至205K之實施類似於記憶體單元203A至203F,不同之處在於,其不具有記憶體單元核心502。在一些實施例中,205A至205K之實施類似於記憶體單元203A至203F,不同之處在於,其接收參考位元、高電壓位元(例如,VDD)及低電壓位元(例如,GND),而非接收Din位元、權重位元,及權重位元的倒數。在一些實施例中,205A至205K之實施類似於記憶體單元203A至203F,不同之處在於,其少包括了一個電晶體元件(例如,其不包括M2),其接收參考位元而非接收Din位元,且其不接收權重位元或權重位元的倒數。
第7圖為根據一些實施例之相乘方法700的流程圖。方法700可由第2A圖之記憶體控制器207執行。在一些實施例中,以第7圖中所描繪之次序來執行方法700的操作。在一些實施例中,同時地及/或以不同於第7圖中所描繪的次序之次序來執行方法700的操作。在一些實施例中,在執行方法700之一個或多個操作之前、之間、期間及/或之後執行一個或多個操作。
在操作710處,對於與複數個被動元件相關聯之記憶體單元陣列202中的每一記憶體單元203,記憶體控制器207將第一輸入(權重)儲存在記憶體單元203中。在一些實施例中,每一記憶體單元203包括複數個被動元件中之一個或多個被動元件。在操作720處,對於每一記憶體單元203,記憶體控制器207向記憶體單元203發送第二輸入(Din)。基於儲存在記憶體單元203上之第一輸入以及第二輸入產生乘積。基於此乘積選擇性地啟用記憶體單元203中之一個或多個被動元件。舉例而言,若第一輸入為高電壓(例如,VDD)且第二輸入為高電壓(例如,VDD),則啟用一個或多個被動元件,且若第一輸入或第二輸入為低電壓(例如,GND),則停用一個或多個被動元件。在操作730處,記憶體控制器207決定複數個被動元件之被啟用的子集。在一些實施例中,記憶體控制器207藉由執行二進位搜尋(如第8圖中所繪示)來決定此子集。
第8圖為根據一些實施例之執行搜尋的方法800之流程圖。方法800可由第2A圖之記憶體控制器207執行。在一些實施例中,以第8圖中所描繪之次序來執行方法800的操作。在一些實施例中,同時地及/或以不同於第8圖中所描繪的次序之次序來執行方法800的操作。在一些實施例中,在執行方法800之一個或多個操作之前、之間、期間及/或之後執行一個或多個操作。在一些實施例中,方法800之一個或多個操作可與方法700之一個或多個操作組合。
在操作810處,記憶體控制器207將複數個參考元件中之每一者設定為第一邏輯狀態(例如,低電壓、GND)。在一些實施例中,回應於將複數個參考位元中之每一者設定為第一邏輯狀態而停用參考單元陣列204之複數個參考類比元件。在操作820處,記憶體控制器207將第一參考位元MSB設定為第二邏輯狀態(例如,高電壓、VDD)。在一些實施例中,操作方法800之系統根據第4圖之電路系統來決定哪一位元為第一參考位元。在一些實施例中,回應於將第一參考位元設定為第二邏輯狀態而啟用複數個參考類比元件之第一子集。
在操作830處,記憶體控制器207產生在第一節點NM(耦合至記憶體單處元陣列202之複數個第一類比元件)處的第一電壓VM,及在第二節點NA(耦合至複數個參考類比元件)處的第二電壓VA。在操作840處,記憶體控制器207比較第一電壓與第二電壓。在操作850處,記憶體控制器207基於此比較將第一參考位元更新為第一邏輯狀態及第二邏輯狀態中之一者。在一些實施例中,更新為第一邏輯狀態意謂記憶體控制器207已決定停用記憶體單元2031,1
之一個或多個電容性元件。在一些實施例中,更新為第一邏輯狀態意謂記憶體控制器207已決定啟用記憶體單元2031,1
之一個或多個電容性元件。在操作860處,記憶體控制器207儲存第一參考位元(例如,第一參考位元之邏輯狀態)(例如,在暫存器中)。
在操作870處,記憶體控制器207對其餘參考位元重複操作820至860。此是因為方法800正執行二進位搜尋。在操作840處進行了第一次比較之後,記憶體控制器207僅已決定輸出數位字為<l000000或>l000000(假設對應於第一記憶體單元2031,1
中之N=64個電容器的7位元數位字,在第二記憶體單元2031,2
中N=32等)。在一些實施例中,在執行操作870之後,複數個參考類比元件之被啟用子集等同於複數個第一類比元件之被啟用子集,且在一些實施例中,所儲存之複數個參考位元指示複數個第一類比元件之被啟用子集。
現參考第9圖,根據本揭示案之一些實施例,示出計算系統900之實例方塊圖。計算系統900由電路或佈局設計者用於積體電路設計。如本文中所使用,「電路」為電部件(諸如,電阻器、電晶體、開關、電池、電感器,或用於實施期望功能之其他類型的半導體元件)之互連。計算系統900包括與記憶體元件910相關聯之主機設備905。主機設備905可用以接收來自一個或多個輸入設備915之輸入,並將輸出提供至一個或多個輸出設備920。主機設備905可用以分別經由適當的介面925A、925B及925C與記憶體元件910、輸入設備915及輸出設備920通訊。計算系統900可實施在多種計算設備中,諸如,電腦(例如,桌上型電腦、膝上型電腦、伺服器、資料中心等)、平板電腦、個人數位助理、行動式設備、其他掌上型或可攜式設備,或適用於使用主機設備905來執行示意圖設計及/或佈局設計之任何其他計算單元。
輸入設備915可包括多種輸入技術中之任一者,諸如,鍵盤、手寫筆、觸控屏、鼠標、軌跡球、小鍵盤、麥克風、語音識別、動作識別、遙控器、輸入埠、一個或多個按鈕、轉盤、操縱桿,以及與主機設備905相關聯且允許諸如使用者(例如,電路或佈局設計者)之外部源將資訊(例如,資料)鍵入主機設備中並向主機設備發送指令之任何其他輸入周邊設備。類似地,輸出設備920可包括多種輸出技術,諸如,外部記憶體、列印機、揚聲器、顯示器、麥克風、發光二極體、頭戴式耳機、視訊設備,以及用以自主機設備905接收資訊(例如,資料)之任何其他輸出周邊設備。輸入至主機設備905及/或自主機設備輸出之「資料」可包括多種文本資料、電路資料、訊號資料、半導體元件資料、圖形資料、其組合或適合於使用計算系統900進行處理之其他類型的類比及/或數位資料中之任一者。
主機設備905包括一個或多個處理單元/處理器(諸如,中央處理單元(「CPU」)核心930A至930N)或與其相關聯。CPU核心930A至930N可實施為特殊應用積體電路(「ASIC」)、現場可程式化閘極陣列(「FPGA」)或任何其他類型的處理單元。CPU核心930A至930N中之每一者可用以執行用於運行主機設備905之一個或多個應用程式的指令。在一些實施例中,用以運行一個或多個應用程式之指令及資料可儲存在記憶體元件910內。主機設備905亦可用以將運行一個或多個應用程式之結果儲存在記憶體元件910內。因此,主機設備905可用以請求記憶體元件910執行多種操作。舉例而言,主機設備905可請求記憶體元件910讀取資料、寫入資料、更新或刪除資料,及/或執行管理或其他操作。主機設備905可用以運行之一個此種應用程式可為標準單元應用程式935。標準單元應用程式935可為電腦輔助設計或電子設計自動化軟體套件的一部分,此電腦輔助設計或電子設計自動化軟體套件可由主機設備905的使用者使用以使用、創建或修改電路之標準單元。在一些實施例中,用以執行或運行標準單元應用程式935之指令可儲存在記憶體元件910內。標準單元應用程式935可由CPU核心930A至930N中之一或更多者使用與來自記憶體元件910之與標準單元應用程式相關聯的指令來執行。在一個實例中,標準單元應用程式935允許使用者利用記憶體元件100或記憶體元件100的一部分之預先產生的示意圖及/或佈局設計來輔助積體電路設計。在積體電路之佈局設計完成之後,可藉由製造設施根據佈局設計來製造積體電路的多個部分(例如,記憶體元件100或記憶體元件100的一部分)。
仍參考第9圖,記憶體元件910包括記憶體控制器940,此記憶體控制器940用以自記憶體陣列945讀取資料或將資料寫入至記憶體陣列945。記憶體陣列945可包括多種揮發性及/或非揮發性的記憶體。舉例而言,在一些實施例中,記憶體陣列945可包括NAND快閃記憶體核心。在其他實施例中,記憶體陣列945可包括NOR快閃記憶體核心、SRAM核心、動態隨機存取記憶體(DRAM)核心、磁阻式隨機存取記憶體(MRAM)核心、相變記憶體(PCM)核心、電阻式隨機存取記憶體(ReRAM)核心、3D XPoint記憶體核心、鐵電隨機存取記憶體(FeRAM)核心,及適合於在記憶體陣列內使用之其他類型的記憶體核心。可藉由記憶體控制器940單獨地且獨立地控制記憶體陣列945內之記憶體。換言之,記憶體控制器940可用以單獨地且獨立地與記憶體陣列945內之每一記憶體通訊。藉由與記憶體陣列945通訊,記憶體控制器940可用以回應於自主機設備905接收到之指令自記憶體陣列讀取資料或將資料寫入至記憶體陣列中。儘管被示為記憶體元件910的一部分,但在一些實施例中,記憶體控制器940可為主機設備905的一部分或計算系統900之另一部件的一部分,且與記憶體元件相關聯。記憶體控制器940可實施為在軟體、硬體、韌體或其組合中之邏輯電路,以執行本文所述功能。舉例而言,在一些實施例中,記憶體控制器940可用以在接收來自主機設備905之請求之後擷取與儲存在記憶體元件910的記憶體陣列945中之標準單元應用程式935相關聯的指令。
應理解,第9圖中僅示出並描述了計算系統900之一些部件。然而,計算系統900可包括其他部件,諸如,各種電池及電源、網路介面、路由器、開關、外部記憶體系統、控制器等。大體而言,計算系統900可包括在執行本文所述功能時需要或被視為需要之多種硬體、軟體及/或韌體部件中的任一者。類似地,主機設備905、輸入設備915、輸出設備920以及記憶體元件910(包括記憶體控制器940及記憶體陣列945)可包括被視為在執行本文所述功能時必要或需要之其他硬體、軟體及/或韌體部件。
本文之一些實施例是關於一種用於卷積神經網路(CNN)應用的記憶體元件。此CNN包括記憶體單元陣列,記憶體單元陣列包括複數個記憶體單元。每一個記憶體單元包括複數個第一電容性元件中之至少一個第一電容性元件。每一個記憶體單元用以使權重位元與輸入位元相乘。當權重位元之第一電壓及輸入位元之第二電壓中之每一者滿足預定閾值時,此至少一個第一電容性元件被啟用。CNN包括參考單元陣列,參考單元陣列包括複數個第二電容性元件。CNN包括記憶體控制器,記憶體控制器用以比較與複數個第一電容性元件相關聯之第一訊號與和複數個第二電容性元件中之至少一個第二電容性元件相關聯的第二訊號,以及基於此比較,決定是否啟用此至少一個第一電容性元件。
在一些實施例中,複數個記憶體單元位於定義多個列之複數個輸入線與定義多個行之複數個權重線的交點處。在一些實施例中,經由複數個權重線將包括複數個權重位元之權重字元儲存在複數個記憶體單元上,以使得每一個權重位元是儲存在記憶體單元之不同行中。在一些實施例中,包括多個輸入位元之輸入字元經由複數個輸入線在複數個記憶體單元上被斷定,以使得每一個輸入位元在記憶體單元之不同列上被斷定。
在一些實施例中,此至少一個第一電容性元件具有與此至少一個電容性元件所與之相關聯的權重位元之權重位元位置成比例的數量。
在一些實施例中,記憶體控制器用以儲存指示複數個第一電容性元件之被啟用子集的複數個參考位元。
在一些實施例中,記憶體單元陣列包括成級聯配置之第一電晶體及第二電晶體。在一些實施例中,權重位元耦合至第一電晶體之輸入。在一些實施例中,輸入位元耦合至第二電晶體之輸入。在一些實施例中,第一電晶體之第一輸入耦合至此至少一個第一電容性元件。在一些實施例中,第二電晶體之第一輸出耦合至參考節點。
在一些實施例中,記憶體控制器包括電流源以對至少一個電容性元件充電歷時預定時間量。
在一些實施例中,記憶體控制器包括比較器以比較第一訊號與第二訊號。
在一些實施例中,此CNN進一步包括偏移單元以補償複數個第一電容性元件之第一性質與複數個第二電容性元件之第二性質的匹配不良。
本文之一些實施例是關於一種藉由記憶體控制器進行之操作卷積神經網路的方法。此方法包括開始於複數個參考位元中之每一者處於第一邏輯狀態而使得參考單元陣列之複數個參考類比元件被停用,進行至搜尋記憶體單元陣列中之複數個第一類比元件的被啟用子集。進行至搜尋第一類比元件之被啟用子集包括將第一參考位元設定為第二邏輯狀態,藉此啟用複數個參考類比元件之第一子集;產生在耦合至複數個第一類比元件之第一節點處的第一電壓,及在耦合至複數個參考類比元件之第二節點處的第二電壓;比較第一電壓與第二電壓;基於此比較,將第一參考位元更新為第一邏輯狀態及第二邏輯狀態中之一者;以及儲存第一參考位元。進行至搜尋第一類比元件之被啟用子集包括進行用複數個已更新參考位元充當下一迭代之初始值,直至複數個參考位元指示第一類比元件之被啟用子集為止。
在一些實施例中,將第一參考位元更新為第一邏輯狀態導致參考類比元件之第一被啟用子集被停用。
在一些實施例中,複數個第一類比元件包括複數個第一電容性元件,且複數個參考類比元件包括複數個第二電容性元件。
在一些實施例中,進行至搜尋第一類比元件之被啟用子集包括在第一預定時間週期內,將第一電流供應至第一節點以對複數個第一電容性元件之被啟用子集,且將第二電流供應至第二節點以對複數個參考電容性元件之被啟用子集充電;以及在第二預定時間週期內,自第一節點汲取第三電流以使第一電容性元件之被啟用子集放電,且自第二節點汲取第四電流以使參考電容性元件之被啟用子集放電。
在一些實施例中,複數個第一類比元件包括處於飽和的複數個第一電晶體,且複數個參考類比元件包括處於飽和的複數個第二電晶體。
在一些實施例中,第一類比元件之被啟用子集將第一電流供應至第一節點,且參考類比元件之被啟用子集將第二電流供應至第二節點。
在一些實施例中,經由耦合第一節點與參考節點之第一被動負載供應第一電流產生了第一電壓,且經由耦合第二節點與參考節點之第二被動負載供應第二電流產生了第二電壓。
本文之一些實施例是關於一種記憶體單元。此記憶體單元包括單元核心,用以儲存權重位元;一個或多個類比元件;以及一個或多個開關,用以基於權重位元及數位輸入位元將一個或多個類比元件選擇性地耦合至感測節點或參考節點中之一者。
在一些實施例中,一個或多個開關成級聯結構。
在一些實施例中,一個或多個開關用以回應於權重位元具有大於預定閾值之第一電壓位準且數位輸入位元具有大於此預定閾值之第二電壓位準而將一個或多個類比元件耦合至感測節點或參考節點中之一者。
在一些實施例中,一個或多個類比元件之數量與權重位元之權重位元位置成比例。
在一些實施例中,單元核心為六電晶體(6T)靜態隨機存取記憶體(SRAM)單元,且一個或多個類比元件為一個或多個電容性元件。
前文概述了若干實施例之特徵,使得熟習此項技術者可較佳地理解本揭示案之一些實施例之態樣。熟習此項技術者應瞭解,他們可容易地使用本揭示案之一些實施例作為設計或修改用於實現相同目的及/或達成本文中所介紹之實施例之相同優勢的其他製程及結構的基礎。熟習此項技術者亦應認識到,此些等效構造不脫離本揭示案之一些實施例之精神及範疇,且他們可在不脫離本揭示案之一些實施例之精神及範疇的情況下在本文作出各種改變、代替及替換。
100:記憶體元件
105:記憶體控制器
110:時序控制器
112:位元線控制器
114:字元線控制器
120:記憶體陣列
125:記憶體單元
130:二進位搜尋控制器
140:參考記憶體陣列
200A:卷積神經網路(CNN)
200B:CNN
200C:CNN
200D:CNN
200E:CNN
202:記憶體單元陣列
2031,1
:記憶體單元
2031,K
:記憶體單元
203M,1
:記憶體單元
203M,K
:記憶體單元
203A:記憶體單元
203B:記憶體單元
203C:記憶體單元
203D:記憶體單元
203E:記憶體單元
203F:記憶體單元
204:參考單元陣列
205A:參考單元
205B:參考單元
205K:參考單元
206A:電流源
206B:電流源
206C:電流源
206D:電流源
207:記憶體控制器
207A:記憶體控制器
207B:記憶體控制器
207C:記憶體控制器
207D:記憶體控制器
208A:開關
208B:開關
208C:開關
208D:開關
209:充電電路系統
209A:電流源電路系統
209B:充電電路系統
209C:充電電路系統
209D:負載電路系統
210:比較器
212:二進位搜尋控制器
214:偏移單元
226A:電阻性元件
226B:電阻性元件
228:反相器
230A:開關
230B:開關
238A:開關
238B:開關
238C:開關
246A:負載元件
246B:負載元件
248A:電壓依賴型電壓源
248B:電壓依賴型電壓源
300:操作
402:電路系統
404:電路系統
406:計數器
408:解多工器
410:計數器
412:解多工器
414:正反器
416:計數器
418:解多工器
420:正反器
422:多工器
424:正反器
502:記憶體單元核心
504:被動元件
602A:反相器
602B:反相器
604A:傳輸閘
604B:傳輸閘
700:方法
710:操作
720:操作
730:操作
800:方法
810:操作
820:操作
830:操作
840:操作
850:操作
860:操作
870:操作
900:計算系統
905:主機設備
910:記憶體元件
915:輸入設備
920:輸出設備
925A:介面
925B:介面
925C:介面
930A:CPU核心
930N:CPU核心
935:標準單元應用程式
940:記憶體控制器
945:記憶體陣列
BL、BLB、BL0、BL1、BL2、BLK:位元線
Comp_En:啟用符
CLK:訊號
Din、Din1、DinM:位元
DL1、DLM:數位輸入線
ENB:電壓
EN_sel<log2
J:1>:訊號
GND:電壓
I1、I2:電流
I1_EN、I2_EN:位元
I1_En、I2_En:訊號
LSB:啟用符
log2
J、log2
K:數字
J:數字
K:數字
M1、M2、M3、M4、M5:
MSB、MSB-1、MSB-2:啟用符
NA:節點
NM:節點
Nout:節點
R1:電阻性元件
RefBit_En、RefBitUpd_En:訊號
RefBitUpd<K:1>:訊號
RefBit<K:1>、RefBit_iter_sel、RefBit_iter_sel<log2
K:1>、RefBit_iter<K:1>、
<K:1>:訊號
t0、t1,1
、t1,2
、t1,3
、t1,4
、t1,5
、t1,6
、t1,7
、t1,8
、t1,9
、t2,1
、t2,2
、t2,3
、t2,4
、t2,5
、t2,6
、t2,7
、t3,1
:時間
Upd_sel<K:1>:訊號
V1、V2:電壓
VA:電壓
VDD:電壓
VM:電壓
Vout:電壓
Weight、Weight1、WeightB、WeightK:權重位元
WL、WLB、WL0、WL1、WL2、WLK:字元線
WTL1、WTLK:權重線
當結合隨附諸圖閱讀時,得以自以下詳細描述最佳地理解本揭示案之一些實施例之態樣。應注意,根據行業上之標準實務,各種特徵未按比例繪製。事實上,為了論述清楚,可任意地增大或減小各種特徵之尺寸。
第1圖為根據一些實施例之記憶體元件的實例方塊圖。
第2A圖至第2E圖為根據一些實施例之卷積神經網路(convolutional neural network, CNN)的實例方塊圖。
第3圖為根據一些實施例之記憶體控制器的操作之實例時序圖。
第4圖為根據一些實施例之二進位搜尋控制器的實例電路圖。
第5A圖至第5F圖為根據一些實施例之記憶體單元的不同實施例之實例電路圖。
第6A圖為根據一些實施例之記憶體單元核心的實例電路圖。
第6B圖為根據一些實施例之被動元件的實例電路圖。
第7圖為根據一些實施例之相乘方法的流程圖。
第8圖為根據一些實施例之執行搜尋的方法之流程圖。
第9圖為根據一些實施例之計算系統。
200A:卷積神經網路(CNN)
202:記憶體單元陣列
2031,1
:記憶體單元
2031,K
:記憶體單元
203M,1
:記憶體單元
203M,K
:記憶體單元
204:參考單元陣列
205A:參考單元
205B:參考單元
205K:參考單元
207:記憶體控制器
209:充電電路系統
210:比較器
212:二進位搜尋控制器
214:偏移單元
Din1、DinM:位元
DL1、DLM:數位輸入線
LSB:啟用符
MSB、MSB-1:啟用符
NA:節點
NM:節點
Nout:節點
VA:電壓
VM:電壓
Vout:電壓
Weight1、WeightK:權重位元
WTL1、WTLK:權重線
Claims (20)
- 一種卷積神經網路,包括: 一記憶體單元陣列,包括複數個記憶體單元,其中該些記憶體單元中的每一者包括複數個第一電容性元件中之至少一個第一電容性元件,其中該些記憶體單元中的每一者用以使一權重位元與一輸入位元相乘,且其中當該權重位元之一第一電壓及該輸入位元之一第二電壓中之每一者滿足一預定閾值時,該至少一個第一電容性元件被啟用; 一參考單元陣列,包括複數個第二電容性元件;以及 一記憶體控制器,用以: 比較與該些第一電容性元件相關聯之一第一訊號與和該些第二電容性元件中之至少一個第二電容性元件相關聯的一第二訊號;以及 基於該比較,決定是否啟用該至少一個第一電容性元件。
- 如請求項1所述之卷積神經網路,其中該些記憶體單元位於定義多個列之複數個輸入線與定義多個行之複數個權重線的一交點處,其中經由該些權重線將包括複數個權重位元之一權重字元儲存在該些記憶體單元上,以使得該些權重位元中的每一者是儲存在該些記憶體單元之不同行中,且其中包括多個輸入位元之一輸入字元經由該些輸入線在該些記憶體單元上被斷定,以使得該些輸入位元中的每一者在該些記憶體單元之不同列上被斷定。
- 如請求項1所述之卷積神經網路,其中該至少一個第一電容性元件具有一數量,該數量與該權重位元之一權重位元位置成比例,且該權重位元位置與該至少一個第一電容性元件相關聯。
- 如請求項1所述之卷積神經網路,其中該記憶體控制器用以儲存複數個參考位元,該些參考位元指示該些第一電容性元件之該被啟用子集。
- 如請求項1所述之卷積神經網路,其中該記憶體單元陣列包括成一級聯配置之一第一電晶體及一第二電晶體,其中該權重位元耦合至該第電晶體之一輸入,其中該輸入位元耦合至該第二電晶體之一輸入,其中該第一電晶體之一第一輸出耦合至該至少一個第一電容性元件,且其中該第二電晶體之一第一輸出耦合至一參考節點。
- 如請求項1所述之卷積神經網路,其中該記憶體控制器包括一電流源以對該至少一個電容性元件充電歷時一預定時間量。
- 如請求項1所述之卷積神經網路,其中該記憶體控制器包括一比較器以比較該第一訊號與該第二訊號。
- 如請求項1所述之卷積神經網路,進一步包括: 一偏移單元以補償該些第一電容性元件之一第一性質與該些第二電容性元件之一第二性質的匹配不良。
- 一種方法,藉由一記憶體控制器進行,包括以下的操作: 開始於複數個參考位元中之每一者處於一第一邏輯狀態而使得一參考單元陣列之複數個參考類比元件被停用,進行至搜尋一記憶體單元陣列中之複數個第一類比元件的被啟用一子集,其中進行至搜尋該些第一類比元件之被啟用的該子集包括以下的操作: 將一第一參考位元設定為一第二邏輯狀態,藉此啟用該些參考類比元件之一第一子集; 產生在耦合至該些第一類比元件之一第一節點處的一第一電壓,及在該些參考類比元件之一第二節點處的一第二電壓; 比較該第一電壓與該第二電壓; 基於該比較,將該第一參考位元更新為該第一邏輯狀態及該第二邏輯狀態中之一者;以及 儲存該第一參考位元, 用已更新的該些參考位元充當下一迭代之一初始值,直至該些參考位元指示該些第一類比元件之被啟用的該子集為止。
- 如請求項9所述之方法,其中將該第一參考位元更新為該第一邏輯狀態導致該些參考類比元件之被啟用的該第一子集被停用。
- 如請求項9所述之方法,其中該些第一類比元件包括複數個第一電容性元件,且該些參考類比元件包括複數個第二電容性元件。
- 如請求項11所述之方法,其中進行至搜尋該些第一類比元件之被啟用的該子集包括以下的操作: 在一第一預定時間週期內,將一第一電流供應至該第一節點以對該些第一電容性元件之被啟用一子集充電,且將一第二電流供應至該第二節點以對該些參考電容性元件之被啟用一子集充電;以及 在一第二預定時間週期內,自該第一節點汲取一第三電流以使該些第一電容性元件之被啟用的該子集放電,且自該第二節點汲取一第四電流以使該些參考電容性元件之被啟用的該子集放電。
- 如請求項9所述之方法,其中該些第一類比元件包括處於飽和的複數個第一電晶體,且該些參考類比元件包括處於飽和的複數個第二電晶體。
- 如請求項13所述之方法,其中該些第一類比元件之被啟用的一子集將一第一電流供應至該第一節點,且該些參考類比元件之被啟用的一子集將一第二電流供應至該第二節點。
- 如請求項14所述之方法,其中經由耦合該第一節點與一參考節點之一第一被動負載供應該第一電流產生了該第一電壓,且其中經由耦合該第二節點與該參考節點之一第二被動負載供應該第二電流產生了該第二電壓。
- 一種記憶體單元,包括: 一單元核心,用以儲存一權重位元; 一個或多個類比元件;以及 一個或多個開關,用以基於該權重位元及一數位輸入位元將該一個或多個類比元件選擇性地耦合至一感測節點或一參考節點中之一者。
- 如請求項16所述之記憶體單元,其中該一個或多個開關成一級聯結構。
- 如請求項16所述之記憶體單元,其中該一個或多個開關用以回應於該權重位元具有大於一預定閾值之一第一電壓位準且該數位輸入位元具有大於該預定閾值之一第二電壓位準而將該一個或多個類比元件耦合至該感測節點或該參考節點中之一者。
- 如請求項16所述之記憶體單元,其中該一個或多個類比元件之一數量與該權重位元之一權重位元位置成比例。
- 如請求項16所述之記憶體單元,其中該單元核心為一六電晶體靜態隨機存取記憶體單元,且該一個或多個類比元件為一個或多個電容性元件。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/001,947 | 2020-08-25 | ||
| US17/001,947 US11853880B2 (en) | 2020-08-25 | 2020-08-25 | SRAM architecture for convolutional neural network application |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202209192A true TW202209192A (zh) | 2022-03-01 |
Family
ID=78130080
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110112986A TW202209192A (zh) | 2020-08-25 | 2021-04-09 | 用於卷積類神經網路應用的記憶體元件 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US11853880B2 (zh) |
| CN (1) | CN113554158A (zh) |
| TW (1) | TW202209192A (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12191135B2 (en) * | 2020-12-23 | 2025-01-07 | Intel Corporation | Two transistor gain cell memory with indium gallium zinc oxide |
| CN114300012B (zh) * | 2022-03-10 | 2022-09-16 | 中科南京智能技术研究院 | 一种解耦合sram存内计算装置 |
| US12406705B2 (en) | 2022-05-25 | 2025-09-02 | Stmicroelectronics International N.V. | In-memory computation circuit using static random access memory (SRAM) array segmentation |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3674991B1 (en) * | 2018-12-28 | 2024-07-17 | IMEC vzw | Multibit neural network |
| US12094524B2 (en) * | 2020-01-30 | 2024-09-17 | Texas Instruments Incorporated | Computation in-memory using 6-transistor bit cells |
| US12050997B2 (en) * | 2020-05-27 | 2024-07-30 | International Business Machines Corporation | Row-by-row convolutional neural network mapping for analog artificial intelligence network training |
| US12537053B2 (en) * | 2022-08-01 | 2026-01-27 | Intel Corporation | SRAM-based in-memory computing macro using analog computation scheme |
-
2020
- 2020-08-25 US US17/001,947 patent/US11853880B2/en active Active
-
2021
- 2021-02-25 CN CN202110215141.5A patent/CN113554158A/zh active Pending
- 2021-04-09 TW TW110112986A patent/TW202209192A/zh unknown
-
2023
- 2023-11-22 US US18/518,151 patent/US20240086708A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US20220067501A1 (en) | 2022-03-03 |
| US20240086708A1 (en) | 2024-03-14 |
| CN113554158A (zh) | 2021-10-26 |
| US11853880B2 (en) | 2023-12-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10825510B2 (en) | Multi-bit dot product engine | |
| CN115039177B (zh) | 低功耗存储器内计算位单元 | |
| US20240086708A1 (en) | Sram architecture for convolutional neural network application | |
| TW202201396A (zh) | 記憶體內計算動態隨機存取記憶體 | |
| US20250131259A1 (en) | Mtj-based hardware synapse implementation for binary and ternary deep neural networks | |
| KR102470924B1 (ko) | 인메모리 컴퓨팅 및 하이브리드 계산/저장 메모리 아키텍처를 위한 sram 기반 셀 | |
| JP2013524393A (ja) | 安定性が改善されビットセルサイズが縮小された低出力5tsram | |
| US20230282272A1 (en) | Fast, energy efficient 6t sram arrays using harvested data | |
| Do et al. | 0.2 V 8T SRAM with PVT-aware bitline sensing and column-based data randomization | |
| Luo et al. | A FeRAM based volatile/non-volatile dual-mode buffer memory for deep neural network training | |
| CN118333119A (zh) | 存算单元、存算方法、存内计算区块及神经网络电路组件 | |
| CN115954029B (zh) | 多比特运算模块以及使用了该模块的存内计算电路结构 | |
| Pal et al. | A low power SRAM cell design for wireless sensor network applications | |
| Ko et al. | CMOS-compatible flash-gated thyristor–based neuromorphic module with small area and low energy consumption for in-memory computing | |
| Bharti et al. | Compute-in-memory using 6T SRAM for a wide variety of workloads | |
| US11990181B2 (en) | Low-power static random access memory | |
| US12094527B2 (en) | Reconfigurable data processing and storage unit for deep neural networks | |
| Lin | A Reconfigurable In-SRAM Computing Architecture for CNN Application | |
| CN112927738A (zh) | 基于非易失器件的电路和电荷域存内计算方法 | |
| US12277991B2 (en) | Memory device with reset voltage control | |
| TWI910765B (zh) | 記憶體裝置及其操作方法 | |
| Lo et al. | A 266.7 TOPS/W Computing-in Memory Using Single-Ended 6T 4-kb SRAM in 16-nm FinFET CMOS Process | |
| Chen | High Power Efficiency Sub-threshold Operation SRAM-Based Computing-in-Memory Macro and Its Application for Keyword Spotting | |
| Chen | An In-SRAM Computing Architecture for the Application of Keyword Spotting | |
| Zhang et al. | An 8T SRAM Array with Configurable Word Lines for In-Memory Computing Operation. Electronics 2021, 10, 300 |