TWI788964B - 子單元、mac陣列、位寬可重構的模數混合存內計算模組 - Google Patents
子單元、mac陣列、位寬可重構的模數混合存內計算模組 Download PDFInfo
- Publication number
- TWI788964B TWI788964B TW110130777A TW110130777A TWI788964B TW I788964 B TWI788964 B TW I788964B TW 110130777 A TW110130777 A TW 110130777A TW 110130777 A TW110130777 A TW 110130777A TW I788964 B TWI788964 B TW I788964B
- Authority
- TW
- Taiwan
- Prior art keywords
- calculation
- type mos
- mos transistor
- capacitor
- mac
- Prior art date
Links
Images
Landscapes
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本發明關於一種模數混合存內計算的子單元,用於1位乘法計算,僅需要9個晶體管,在此基礎上,提出多個子單元共用計算電容器、晶體管以組成1個計算單元,使得平均下來子單元的晶體管數量逼近6個,進而提出一種MAC陣列,用於乘加計算,包含多個計算單元,每個單元內的子單元以時分多工的方式被激活。進一步地,提出MAC陣列的差分體系,提高計算的容錯能力。進一步地,提出一種用於內存內模數混合運算模組,對MAC陣列的並行模擬輸出數字化並進行其它數字域的運算。所述運算模組中的模數轉換模組充分利用MAC陣列的電容器,既能減少運算模組的面積,又能降低運算誤差。進一步地,提出一種充分利用數據稀疏性來節省模數轉換模組能耗的方法。
Description
本發明關於一種模數混合存內計算領域,並且更具體地,關於一種子單元、MAC陣列、位寬可重構的模數混合存內計算模組。
目前,現有移動和物聯網之類的新興邊緣應用要求高能效和高單位面積的運算速率。高能效意味著更長的電池壽命,而高單位面積的運算速率意味著在指定的運算速率下減小面積,進而降低成本。如今,深度神經網路(Deep Neural Network;DNN)中的前饋推理計算以乘法累加(Multiply-And-Accumulate;MAC)計算為主導,需要MAC計算的高能效和低面積的實現,同時減少待處理數據的搬運量。傳統數字積體電路實現MAC有抗噪聲能力强、精度高、擴展性好、設計方法成熟等優點,但是數字電路占用的晶片面積大,功耗大,難以實現高能效的大規模神經網路。並且傳統數字電路採用的范紐曼架構帶來的儲存器和中央運算單元之間的數據交換瓶頸在DNN應用中的大規模數據搬運下會嚴重限制運算能效和運算速度。模擬電路實現MAC具有結構簡單、功耗較低的優點,所以模擬和模數混合訊號計算具有實現高能效的潛力。而為了打破范紐曼架構的瓶頸,近年來成為研究熱點的存內計算從本質上無法以純數字電路的形式實現,需要模擬電路的輔助。同時由於DNN對包括電路噪聲造成的計算錯誤的承受能力較高,DNN專用積體電路(Application-Specific Integrated Circuit;ASIC)正重新引起關注。
論文“A mixed-signal binarized convolutional-neural-network accelerator integrating dense weight storage and multiplication for reduced data movement”,DOI:10.1109/VLSIC.2018.8502421(以下稱“論文1”)和論文“A Microprocessor implemented in 65nm CMOS with configurable and bit-scalable accelerator for programmable in-memory computing”,arXiv:1811.04047(以下稱“論文2”),闡述1位MAC計算的乘法階段是等效於1位權重和1位輸入進行同或(XNOR)運算,把XNOR運算結果以電壓的形式儲存到電容器,加法階段是利用電荷共享,每個電容器的電荷相同但所有電容器的總電荷不變,得出1位MAC計算結果。上述1位MAC計算的每個1位計算單元都有10個晶體管。論文1和論文2的習知技術存在的問題為:(1)對於每個加法操作,將無條件驅動每個計算單元中的傳輸門,而無法利用輸入數據的稀疏性達到節省能耗的目的;(2)每一個進行1位乘法的運算單元配置一個獨立電容器,逐次逼近型(Successive Approximation ;SAR)模擬數字轉換器(Analog to Digital Converter;ADC)的金屬氧化物金屬(Metal Oxide Metal ;MOM)電容器位於靜態隨機儲存器(Static Random Access Memory;SRAM)計算陣列之外,因為該陣列內部沒有空間,從而降低了面積效率;(3)利用電荷共享的加法階段需要連接儲存XNOR運算結果的電容器的頂板。這種電路拓撲使加法容易受到非理想效應的影響,例如電荷注入、時鐘饋通、傳輸門晶體管的漏極或源極處的非線性寄生電容,以及連接到電容器頂板的晶體管的漏電等,從而導致計算錯誤。此外,因為物理版圖的不匹配而帶來的運算電容器與ADC中的數模轉換器裡的電容器之間的不匹配也會導致計算錯誤。
論文“An always-on 3.8μJ/86% CIFAR-10 mixed-signal binary CNN processor with all memory on chip in 28nm CMOS”,DOI: 10.1109/ISSCC.2018.8310264 (以下稱“論文3”)提出一種僅支持二進制化的權重和激活值的二值神經網路(BNN)的運算模組。論文3中的運算模組的不足為:(1)該架構只支持BNN,無法用於視覺應用的大型DNN模型、例如對象檢測等,適用範圍小;(2)1位MAC計算的乘法階段至少需要一個或(OR)門,兩個同或(XNOR)門,兩個異或(NOR)門和一個鎖存器,使用的晶體管數量多,面積占用大。
論文“Conv-RAM: an energy-efficient SRAM with embedded convolution computation for low-power CNN-based machine learning applications”,DOI: 10.1109/ISSCC.2018.8310397 (以下稱“論文4”)提出一種具有嵌入式卷積計算功能的節能SRAM。論文4中的SRAM的不足有:(1)每個1位計算SRAM單元具有10個晶體管。每個單元中的晶體管數越高,儲存密度越小;(2)利用位線上的寄生電容儲存電荷,以用於隨後的平均操作。與如MOM電容器之類的顯式電容器相比,位線寄生電容的建模不充分,並且可能遭受更大的失配,導致較低的計算精度;(3)論文內所使用的水平電荷平均方法需要6個額外的晶體管,這些晶體管在幾行單元之間共享,限制了吞吐量,因為並非所有行都可以同時執行計算;(4)差分電荷平均線VpAVG和VnAVG上的共模電壓取決於輸入數據Xin的大小,在通過局部MAV電路評估平均值後,此共模電壓是不恆定的。因此差分結構的高效率高速ADC,例如SAR ADC並不適用。文章的方案採用了最大占用2N-1(N是ADC分辨率)次步驟進行收斂的基於斜坡的ADC,降低了模數轉換的速度,導致了較低的計算吞吐量;(5)陣列的輸入使用額外的DAC電路將輸入數據Xin(通常是特徵圖)從數字表示轉換為模擬表示,DAC電路的非理想特性會導致更多的精度損失以及面積和能量的開銷。
綜上所述,習知技術中的MAC陣列中進行1位乘法的計算單元使用的晶體管多;儲存乘法結果用於累加的電容器與儲存單元一一對應,即儲存單元的個數與電容器的數量相同,而電容一般會比SRAM單元大很多,特別是在先進工藝製程下,會導致MAC陣列占用面積大;同時存在乘加運算中晶體管的無條件的驅動,導致運算能效不高;另外,計算錯誤率高導致適用場景有限等。
因此,在模數混合存內計算領域,亟需一種面積小、能效高、容錯能力好的位寬可重構的模數混合存內計算的運算模組。
有鑒於此,本發明提供一種子單元、MAC陣列、位寬可重構的模數混合存內計算模組。為減小計算誤差,還提供了差分體系的MAC陣列的實現。為達到上述目的,本發明採用如下技術方案:
第一方面,提供了一種內存內計算的子單元,包括:儲存模組、計算電容器、以及控制模組;
所述儲存模組包括交叉耦合的兩個CMOS反相器和一個互補傳輸門,交叉耦合的兩個CMOS反相器儲存1位的過濾器參數,所述互補傳輸門N型MOS管柵極連接輸入訊號,互補傳輸門P型MOS管柵極連接互補輸入訊號,其中一個CMOS反相器的輸出端連接互補傳輸門的輸入端,互補傳輸門的輸出端連接計算電容器的底板以及控制模組;
所述輸入訊號與所述過濾器參數的乘法結果儲存為計算電容器底板的電壓;
多個子單元用於組成一個計算單元,所述同一計算單元內的每一個子單元共用同一所述控制模組和一個計算電容器。
在該方案中,1位的過濾器參數或權重w寫入並儲存在交叉耦合的兩個CMOS反相器中,輸入訊號A連接互補傳輸門的N型MOS管柵極,互補傳輸門的P型MOS管柵極連接互補輸入訊號nA,輸入訊號A與權重w的乘法結果儲存為計算電容器底板的電壓,所述多個子單元組成一個計算單元,同一計算單元內的每一個子單元共用同一所述控制模組和計算電容器,子單元以2×2、4×2等可行的方式排列。直觀地,該方案減少了由MOS管組成的控制模組的數量。以2×2的子單元為例,減少了3個控制模組以及3個計算電容器。
在一些實施方式中,控制模組包括一個第一N型MOS管、一個第二N型MOS管、一個P型MOS管,第一N型MOS管柵極連接訊號B。特別地,對於一個計算子單元,互補輸入訊號nA的位準在計算時與訊號B相同。交叉耦合的兩個CMOS反相器中的一個CMOS反相器的輸出端連接互補傳輸門的輸入端。所述第二N型MOS管的源極接地,柵極接一條位線,所述P型MOS管的源極接VDD,柵極接另一條互補位線。這樣的拓撲結構可以避免傳輸門的無條件驅動,提高能效。例如,當訊號B=0,互補輸入訊號nA=0,輸入訊號A=1,過濾器參數w=1,計算電容與N型MOS管連接的支路不通,互補傳輸門與計算電容器連接的支路導通,過濾器參數w與輸入訊號A的乘法結果儲存為計算電容器底板電壓V
btm。這樣,所述完成一位乘法(過濾器參數w與輸入訊號A)的子單元只需要9個晶體管,減小了完成1位乘法的子單元的面積。傳輸門避免了連接到進行電荷累加的電容器的頂板,這樣可以最小化計算誤差,特別是由於MOS管用作開關時的時鐘饋通、由導通轉向關斷時的電荷注入、在傳輸門晶體管的漏/源處的非線性寄生電容、以及晶體管的漏電引起的誤差。
結合第一方面及其可能的實施方式,在一些實施方式中,為了減少位線的數量方便物理版圖中的走線,改變了控制模組中MOS管之間的連接方式,與計算電容器底板連接的第二N型MOS管和P型MOS管串聯形成一個第一CMOS反相器。所述第一CMOS反相器的P型MOS管的源極接VDD,第一CMOS反相器的第二N型MOS管的源極連接第一N型MOS管的漏極;所述第一N型MOS管源極接地,柵極的輸入訊號與所述互補傳輸門P型MOS管柵極連接的訊號在運算時位準相同;所述第一CMOS反相器的輸入連接一條位線,輸出連接計算電容器底板。
結合第一方面及其可能的實施方式,在一些實施方式中,為了減少計算單元中晶體管的數量,並且方便儲存單元內容的讀出,控制單元中保留第一N型MOS管和P型MOS管,去掉第二N型MOS管。第一N型MOS管的漏極與P型MOS管的漏極相連並連接到電容器的底板,第一N型MOS管的源極與P型MOS管的源極相連並連接到一條位線。第一N型MOS管的柵極連接一條控制字線,其位準在計算時與互補傳輸門中P型MOS管的柵極位準相同。P型MOS管的柵極連接另一條控制字線。
結合第一方面及其可能的實施方式,越多的子單元共用所述控制單元中的MOS管與計算電容器,此時需要的器件數量及面積均攤到每一個子單元上,每個子單元需要的晶體管數量越接近於6個。
結合第一方面,在一些實施方式中,計算單元內的子單元以時分多工的方式被激活,即一個子單元被激活時,同一個計算單元內的其他子單元被停用,每個計算單元內的第一N型MOS管柵極輸入的訊號與某時刻處於工作狀態的子單元內互補傳輸門的P端柵極位準相同。在一個子單元參與完成計算後,同一計算單元包含的其他子單元內儲存的過濾器參數可以立即用於內存內運算,不需要再從外部移動數據儲存到子單元內後再進行計算,提高了計算速度以及數據吞吐量並且減少能量損耗以及面積消耗。
第二方面,提供了包含第一方面以及第一方面可能實施方式的一種MAC陣列,進行乘加運算,包括:多個計算單元,每個計算單元內的所有子單元的互補傳輸門的輸出端連接同一個計算電容器同一底板,同一列的所有計算單元內的計算電容器頂板連接同一累加總線,每一累加總線的電壓對應每一列乘法計算的累加和。
在該方案中,由於一個電容占用的面積一般是一個SRAM單元占用面積的數倍,在所述子單元採用共用由晶體管組成的控制模組以及計算電容器的方式下,即多個用於1位乘法的子單元共用一個電容器儲存計算結果相對其他的1個子單元用於1位乘法需要連接一個電容器儲存計算結果的設計,可以極大地提高單位面積的儲存容量。對於內存內計算,減少片內外部數據的移動是減少能量消耗的最主要方式之一。方案中,單位面積MAC陣列包括更多的交叉耦合的CMOS反相器,可以一次性儲存更多的神經網路過濾器參數從而減少數據移動。
結合第二方面,在一些實施方式中,MAC陣列還包括第二CMOS反相器和差分計算電容器,對應組成MAC陣列的每一計算單元中,所有子單元的互補傳輸門的輸出端連接同一第二CMOS反相器的輸入端,第二CMOS反相器的輸出端連接差分計算電容器的同一底板;同一列的所有差分計算電容器頂板連接同一差分累加總線。
第三方面,提供了一種位寬可重構的模數混合MAC計算器,包括:第二方面或第二方面的任意可能的實現方式中的MAC陣列,計算後列向累積的結果表示為模擬電壓;filter/ifmap模組,提供被寫入並儲存在MAC陣列中的過濾器參數或神經網路上一層計算完的激活值;ifmap/filter模組,提供MAC陣列的輸入,與所述的過濾器參數或神經網路上一層計算完的激活值進行乘加運算;模數轉換模組,將MAC後得到的模擬電壓轉換為數字表示;數字處理模組,對模數轉換模組輸出的數字表示進行多位融合、偏置、縮放或非線性操作,輸出結果為部分和或者為能用於下一層網路輸入的激活值。
該方案中,所述過濾器參數或者神經網路上一層計算完的激活值通過filter/ifmap模組寫入並儲存在MAC陣列中,使子單元中的交叉耦合的兩個CMOS反相器儲存邏輯1或0,並與ifmap/filter模組提供的輸入進行乘加運算。此過程,每個子單元內的儲存值與輸入的乘法運算屬於數字運算,等效於AND運算,乘法運算的結果儲存在計算電容器中,加法階段,由於同一列的所有計算電容器的頂板通過同一累加總線連接在一起,不同計算電容器中儲存的電荷通過該累加總線進行共享,列向累積的乘法結果儲存為模擬電壓。隨後,模擬結果通過模數轉換模組轉換為數字表示,最後對該數字表示進行處理,輸出結果為部分和或者為能用於下一層網路輸入的激活值。在傳統數字實現的神經網路計算過程中,MAC耗費大量能耗。該方案中,MAC採用模數混合運算,可以極大降低能耗,同時MAC陣列的低面積實現可以提高能效以及計算速度。針對整個神經網路計算的不同階段採用不同的運算方式的結合,極大地利用了模擬和數字運算的不同優點,保證了計算過程的低功耗、高能效、高速度、高精度的實現。
結合第三方面,在一種可能的實施方式中,模數轉換模組採用SAR ADC,具體為二進制加權電容結構的SAR ADC。
結合第三方面和第一種可能的實施方式,在第二種實施方式中,MAC陣列的輸入數值以及儲存數值的稀疏性可以使SAR DAC中的部分電容器的開關序列免於切換,從而獲得更高的能效和ADC轉換速度。換一種方式說,MAC陣列中每一列SAR ADC的位寬可以實時地由輸入數值以及儲存數值的稀疏性來決定。
結合第三方面或第三方面可能的實施方式,在第三種可能的實施方式中,MAC DAC和SAR DAC可以連接在一起,應當理解,所述MAC DAC指的是MAC陣列中的一列計算電容陣列,即一列MAC陣列中的電容器與SAR DAC中的電容器並聯。
結合第三方面或第三方面可能的實施方式,在其他實施方式中,允許MAC DAC通過底板採樣多工為SAR DAC,從而使用相同的電容陣列實現MAC操作以及模數轉換,避免在MAC操作環節的MAC DAC和模數轉換階段的SAR DAC中使用不同電容陣列導致的失配以及精度損失,進一步地,並且允許全差分SAR ADC的實現,更好地解決共模相關的比較器的輸入失調電壓偏移的問題。
為了使發明的目的、原理、技術方案及優點更加清楚明白,以下結合圖式及實施例,對本發明進行進一步詳細說明。應當理解,正如本發明內容部分所述,此處所描述的具體實施例用以解釋本發明,並不用於限定本發明。
需要特別說明的是,根據說明書的文字或者技術內容可以確定的連接或位置關係,為了圖畫的簡潔進行了部分的省略或者沒有畫出全部的位置變化圖,本說明書未明確說明省略的或者沒有畫出的位置變化圖,不能認為沒有說明,為了闡述的簡潔,在具體闡述時不再一一進行說明,在此統一說明。
此外,術語“第一”、“第二”等僅用於描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術特徵的數量。
作為一種常見的應用場景,本發明實施例所提供的的位寬可重構的模數混合計算的運算模組可以應用在視覺、聲學DNN架構中,更具體地,實現對象檢測、低功耗的聲學特徵提取等。
以特徵提取為例,將待處理數據與特徵提取器中的由權重構成的過濾器進行卷積運算後,輸出相應的特徵圖/激活值。過濾器選取不同,提取的特徵也會不同。此過程中,待處理數據與過濾器的卷積運算需要的能耗最高,需要避免電路無條件驅動等情形造成的能耗,特別是待處理數據為稀疏矩陣時。
本發明提出一種用於存內計算的子單元,如圖1a,包括:儲存模組、計算電容器、以及控制模組;所述儲存模組包括交叉耦合的兩個CMOS反相器和一個互補傳輸門,交叉耦合的兩個CMOS反相器儲存1位的過濾器參數,所述互補傳輸門N型MOS管柵極連接輸入訊號A,互補傳輸門P型MOS管柵極連接互補輸入訊號nA,其中一個CMOS反相器的輸出端連接互補傳輸門的輸入端,互補傳輸門的輸出端連接計算電容器的底板和控制模組。應當注意,互補傳輸門是一個雙向器件,本發明中所說的互補傳輸門的輸入端指的是與其中一個CMOS反相器的輸出端連接的一端。互補傳輸門的N端和P端柵極的既可以分別連接到字線訊號WL、nWL,用於控制子單元的寫入或者讀出權重w,又可以分別連接到輸入訊號A和互補輸入訊號nA,用於參與1位乘法計算。
所述輸入訊號A與權重w的乘法結果儲存為計算電容器底板的電壓V
btm。
為描述方便,所述互補傳輸門與計算電容器連接的是計算電容器的底板,計算電容器與累加總線連接的是頂板。由交叉耦合的兩個CMOS反相器連接一個互補傳輸門構成的儲存模組稱為6T結構(6T sub-cell,包含6個晶體管),參見圖1b。
多個子單元用於組成一個計算單元,同一所述計算單元內的每一個子單元共用同一所述控制模組和一個計算電容器。
圖2a為用於1位乘運算的子單元結構一實施例示意圖,其中控制模組包括一個第一N型MOS管、一個第二N型MOS管、一個P型MOS管,所述第一N型MOS管源極接地,漏極與第二N型MOS管漏極、P型MOS管的漏極、所述互補傳輸門的輸出端連接計算電容器的同一底板,所述互補傳輸門N型MOS管柵極連接輸入訊號A,第一N型MOS管柵極輸入的訊號B與互補傳輸門P型MOS管柵極連接的互補輸入訊號nA的位準相同;所述第二N型MOS管的源極接地,柵極接一條位線BL
k;所述P型MOS管的源極接VDD,柵極接另一條位線nBL
k。
在一些可能的實施方式中,可以採用互補輸入訊號nA與訊號B共用節點從而提供相同的位準。應當理解,所述第一N型MOS管柵極輸入的訊號B不僅用於將計算電容器的底板電壓重置,使子單元用於下一次的計算,還參與了1位乘法運算,如圖2d真值表所示。交叉耦合的兩個CMOS反相器儲存被寫入的過濾器參數或權重w與所述互補傳輸門的N端的輸入訊號A進行一位乘法的運算,所述乘法運算的結果儲存為計算電容器底板的電壓。舉例說明,所述互補傳輸門用於控制寫入過濾器參數w,子單元內的互補傳輸門的N端和P端柵極接收的字線訊號需要確保互補傳輸門導通。具體地,互補傳輸門的N端柵極連接的字線訊號WL置VDD和互補傳輸門的P端柵極連接的另一字線訊號nWL置0。如果要寫入“0”,位線BL
k和nBL
k都被置為高位準,此時第二N型MOS管導通,P型MOS管不導通;如果要寫入“1”,位線BL
k和nBL
k都被置為低位準,此時第二N型MOS管不導通,P型MOS管導通。而在進行存內計算的時候,位線BL
k被置為低位準,位線nBL
k被置為高位準,保證互補傳輸門中的存內計算的乘法結果儲存在計算電容器中。
進一步地,位線過多對於走線是很大的挑戰,為了減少位線的數量方便物理版圖中的走線,在另外的實施例中,對基於上述子單元中控制模組的位線設計進行了優化,參見圖2b,為優化後一個子單元示意圖,具體地,在包含一個第一N型MOS管、一個第二N型MOS管和一個P型MOS管的控制模組中,相對於與圖2a的實施例,第二N型MOS管和P型MOS管串聯組成一個第一CMOS反相器,所述第一CMOS反相器的P型MOS管的源極接VDD,第一CMOS反相器的第二N型MOS管的源極連接第一N型MOS管的漏極;所述第一N型MOS管源極接地,柵極的輸入訊號與所述互補傳輸門P型MOS管柵極連接的訊號在運算時位準相同;所述第一CMOS反相器的輸入連接一條位線,輸出連接計算電容器底板。在本實施例中,當所述6T結構寫入過濾器參數或權重的時候,如果要寫入0,位線BL
k和B都被置為高位準;如果要寫入1,位線BL
k被置為低位準。在進行存內計算的時候,位線BL
k被置為高位準,訊號B與互補輸入訊號nA的位準相同。
進一步地,為了繼續減少子單元中晶體管的數量,在另外的實施例中,圖2a和圖2b兩個實施例中的第二N型MOS管被去掉,參見圖2c,為控制單元只有兩個晶體管的子單元示意圖。第一N型MOS管的漏極連接P型MOS管的漏極,並於計算電容器的底板相連。第一N型MOS管的源極和P型MOS管的源極與一條位線相連。第一N型MOS管的柵極連接字線訊號B,其位準特別地在計算時與6T單元中互補傳輸們的P型MOS管的柵極位準相同。P型MOS管的柵極連接另一條字線訊號nB。在本實施例中,當所述6T結構寫入過濾器參數或權重的時候,如果要寫入0,位線BL
k被置為低位準,訊號B被置為高位準;如果要寫入1,位線BL
k被置為高位準,字線訊號nB被置為低位準。在進行存內計算的時候,位線BL
k被置為低位準,訊號B與互補輸入訊號nA的位準相同,字線訊號nB被置為高位準,可以理解,本實施例中完成1位乘法運算的子單元只需要8個晶體管。
可選的,子單元進行一位乘法計算的過程如下: 1. 計算電容器的頂板電壓V
top通過累加總線上的復位開關S
rst復位到V
rst。 2. 將子單元中第一N型MOS管的柵極訊號B提升到VDD,導通第一N型MOS管,將電容器的底板電壓V
btm重置為0,將子單元中的傳輸門的輸入訊號A和互補輸入訊號nA分別保持在0和VDD。底板電壓V
btm重置為0後,復位開關S
rst斷開連接。 3. 計算過程中,激活訊號A和互補輸入訊號nA,激活子單元時1位乘法運算的真值表如圖2d所示。 4. 子單元乘法運算完成後,計算電容器的底板電壓V
btm要麼保持在0,要麼進入VDD,乘法運算的輸出結果為計算電容器底板電壓V
btm表示為VDD×W×A。
可以理解,所述完成一位乘法(過濾器參數w與輸入訊號A)的子單元只需要9個或者甚至8個晶體管,相對習知技術,減小了子單元的面積,提高能效。另外,傳輸門連接在計算電容器的底板相對於習知技術中的連接在計算電容器的頂板的方案能夠最小化計算誤差,特別是由於MOS管用作開關時的時鐘饋通,由導通轉向關斷時的電荷注入,在傳輸門晶體管的漏/源處的非線性寄生電容,以及晶體管本身的漏電等等引起的誤差。
上述實施例中的多個子單元用於組成一個計算單元,子單元以2×2、4×2等可行的方式排列,排列方式參考圖3a。直觀地,該方案減少了計算電容器以及組成控制模組的MOS管的數量。以2×2的子單元為例,減少了3個控制模組和3個計算電容器。如圖3b、圖3c、圖3d所示的分別對應由上述子單元組成計算單元的實施例,同個計算單元內的每個子單元保留各自所述的6T結構,多個計算子單元用於組成一個計算單元,所述同一計算單元內的每一個子單元共用同一所述控制模組和一個計算電容器,可以理解,一個計算單元內只有一個控制模組、一個計算電容器。直觀地,該方案通過共用的方式減少了對應實現相同數量獨立的子單元所需要的控制模組以及計算電容器的數量,以圖3b的計算單元為例,多個子單元共用同一所述計算電容器、一個第一N型MOS管、一個第二N型MOS管和一個P型MOS管,每個子單元的互補傳輸門輸出端連接同一個第一N型MOS管的漏極、同一計算電容器的底板、同一P型MOS管的漏極、同一第二N型MOS管漏極。應當注意,控制模組一般由晶體管組成,那麼越多的子單元共用所述器件,分攤下來每個子單元需要的晶體管數量就會越接近儲存模組所需要的晶體管數量,也即6T結構的晶體管數量。
另外,由於單個電容占用的面積一般是所述6T結構占用面積的數倍,差距懸殊,採用所述子單元共用器件的方式,即多個用於1位乘法的子單元共用一個電容器儲存計算結果,相較於每個1位乘法的子單元單獨連接一個電容器儲存計算結果,可以極大的提高指定面積內的儲存容量,即相同面積內可以一次性儲存較習知技術更多的過濾器參數或權重。
進一步地,同一計算單元內的子單元以時分多工的方式被激活,即一個子單元被激活時,同一個計算單元內的其他子單元被停用。子單元被激活後按照上述執行一位乘法的運算,單元內計算的真值表參考圖3e,具體地,在一些實施例中,子單元互補傳輸門的N端柵極和P端柵極的訊號分別為A
ij和nA
ij,其中i為單元列的索引,且為0~(n-1)的非負整數,j為單元內子單元的索引,在2×2的單元內,j=a,b,c,d。可以理解,所述子單元共用晶體管以及電容器的方式,指的是一個計算單元內包含了多個能用於乘法運算的子單元。應當注意,不同於單個獨立的子單元,當多個子單元組成一個計算單元時,所述第一N型MOS管柵極的輸入訊號B
i與每個子單元的互補傳輸門的P端柵極的輸入訊號nA
ij是分別控制的,在時分多工下,雖然某時刻處於工作狀態的子單元內的輸入訊號nA
ij與輸入訊號B
i位準相同,但是不再適用二者共用節點的情形。相對於相同數量且獨立的子單元來說,子單元組合成的計算單元內需要的計算電容器、控制模組的數量分別減少n-1個,即計算電容器、第一N型MOS管、第二N型MOS管、P型MOS管的控制模組的數量分別減少n-1個,計算單元內完成1位乘法的子單元結構逼近6個晶體管。一般地,由於製作工藝的區別,計算電容器的占用的面積是子單元6T儲存結構的數倍,所述共用的方式減少單位面積中電容的數量,可以提高計算單元組成的模組的儲存容量。並且,在一個子單元參與完成計算後,同一計算單元包含的其他子單元內儲存的過濾器參數可以立即用於內存內運算,不需要再從外部移動數據儲存到子單元內後再進行計算,提高了計算速度。
第二方面,結合第一方面的子單元、計算單元,得到一種MAC陣列,參見圖4,進行乘加運算,所述MAC陣列包括:多個計算單元,同一列的所有計算電容器頂板連接同一累加總線。並且,如前述可以理解,每個計算單元包括至少一個所述子單元,計算單元內的每一個互補傳輸門的輸出端連接同一個計算電容器同一底板,每一累加總線的電壓對應每一列計算的累加和。
該方案中,相對於獨立的子單元組成的MAC陣列,所述採用共用電容器及晶體管的模式的計算單元,MAC陣列可以儲存更多的神經網路參數或者上一層網路計算完成的值。具體地,計算單元內的完成1位乘法的計算並將計算結果儲存在計算電容器中,處於MAC陣列中的同一列計算單元通過計算電容器頂板連接的同一條累加總線將各自的1位乘法結果累加。
另外,對於內存內計算,減少晶片內外部數據的移動是減少能量消耗的直接方式。可以理解,因為單個計算電容器的占用的面積是單個儲存單元的數倍,方案中,共用計算電容器的方式使得單位面積MAC陣列容納了更多的儲存單元,可以一次性儲存較習知技術更多的過濾器參數。在一個子單元計算完成後,同一單元的其他子單元內交叉耦合的兩個CMOS反相器儲存的過濾器參數可以立即用於內存內運算,不需要再從外部移動數據儲存到儲存單元內後再進行計算,這極大地提高了計算速度,提高吞吐量並且減少能量損耗以及面積消耗。
參見圖5所示,特別地,同一列的所有計算電容器的頂板通過累加總線連接在一起,累加總線電壓為底板電壓V
top,需要明確的是,多個計算單元按列分布,1個計算單元對應1個計算電容器,1個計算單元中包含多個第一方面或者第一方面實施例所述的子單元。
在一些實施例中,MAC陣列以下列“方式一”執行乘加運算: 1. 過濾器參數(或上一層網路計算完成的激活值)首先按照寫入過程寫入各個子單元,並被儲存在子單元的交叉耦合的2個CMOS反相器中; 2. 計算電容器的頂板電壓V
top通過累加總線上的復位開關S
rst復位到V
rst,V
rst可以為0; 3. 將每個計算單元中的輸入訊號Bi提升到VDD,計算電容器的底板電壓V
btmi重置為0,每個計算單元中的訊號A
ij和nA
ij分別保持在0和VDD。復位開關S
rst斷開連接; 4. 在計算過程中,訊號A
ij和nA
ij以時間多工的方式被激活,例如,當A
0a和nA
0a被激活時,A
0j和nA
0j(j=b, c, d)被停用,即分別保持在0和VDD。值得注意,在計算過程中,一個計算單元的B
0與該時刻被激活的子單元內的nA
0j是一樣的位準。 5. 在一列計算單元的相乘完成後,計算電容器的底板電壓V
btmi要麼保持在0,要麼進入VDD。電荷在一列計算電容器中重新分布,類似於SAR DAC的電容器中的電荷重新分布。如果不考慮寄生電容等非理想性,則一列計算電容器的模擬輸出頂板電壓V
top表示如下式的累加結果,如圖5。
在其他實施例中,MAC陣列可以按照下面的“方式二”進行運算: 1. 過濾器參數(或上一層網路計算完成的激活值)寫入各個子單元; 2. 計算電容器的頂板電壓V
top通過累加總線上的復位開關S
rst復位到V
rst。復位開關S
rst保持頂板電壓V
top和V
rst之間的連接。 3. 將每個單元中的輸入訊號B
i提升到VDD,將計算電容器的底板電壓V
btmi重置為0,將每個單元中的訊號A
ij和nA
ij分別保持在0和VDD; 4. 在計算過程中,同理,訊號A
ij和nA
ij以時間多工的方式被激活。 5. 在一列計算單元的相乘完成後,每個計算電容器的底板電壓V
btmi要麼保持在0,要麼進入VDD。然後斷開復位開關S
rst,將底板電壓V
btmi設置為0或VDD,每個計算單元的控制模組裡的MOS開關運行逐次逼近算法進行模數轉換。以底板電壓V
btmi均被置為0為例,頂板電壓V
top可表示為:
特別地,第二方面或者第二方面所述的MAC陣列可用於多位權重的計算,每一列的計算單元執行逐位的MAC操作,通過把模數轉換後的數字表示進行移位相加的操作得到多位權重的輸出結果。舉例而言,對於一個k位的權重/過濾器參數,每一列執行逐位的MAC,可以是第1列執行最低位,即第0位的值與輸入訊號的MAC,第k列執行最高位,即第k-1位的值與輸入訊號的MAC。可以理解,相當於每一列單獨對一個多位的二進制權重的一位進行MAC,所有參與計算的列得到的MAC結果包含了k個元素,最後對進行模數轉換後的k個元素進行數字域的移位相加。
為了減少計算誤差,可使用差分體系的MAC陣列架構,在一些實施方式中,MAC陣列還包括第二CMOS反相器和差分計算電容器,參見圖6a、圖6b、圖6c,MAC陣列中每個計算單元連接一個第二CMOS反相器和一個差分計算電容器得到MAC陣列的差分架構。具體地,每一計算單元中的所有子單元的互補傳輸門輸出端連接同一個第二CMOS反相器的輸入端,第二CMOS反相器的輸出端連接差分計算電容器的底板;同一列的所有差分計算電容器頂板連接同一差分累加總線。為描述方便,由上述實施例中的子單元所組成的計算單元連接一個第二CMOS反相器和一個差分計算電容器的結構為差分單元。那麼可以理解,所述同一差分單元內的子單元共用同一所述第一N型MOS管、一個第二N型MOS管(圖6a、圖6b)、一個P型MOS管、差分計算電容器和第二CMOS反相器,所述差分單元內的子單元同樣以所述的時分多工的方式被激活。
圖7為由前述差分單元構成的MAC陣列,差分單元內的每一個互補傳輸門的輸出端連接同一個計算電容器的底板,同一列的所有計算電容器頂板連接同一累加總線,所有差分計算電容器頂板連接同一差分累加總線。
第三方面,提供了一種位寬可重構的模數混合計算模組,參見圖8,包括:第二方面或第二方面的任意可能的實現方式中的MAC陣列,計算完成後MAC陣列中列向累積的結果表示為模擬電壓,即上述實施例中電容器頂板的頂板電壓V
top;filter/ifmap模組,提供被寫入並儲存在MAC陣列中的過濾器參數,應當理解,對於神經網路,所述被寫入並儲存在MAC陣列中的還可以是上一層網路計算完成後所輸出的值;ifmap/filter模組,提供MAC陣列的輸入,具體地,提供計算單元內互補傳輸門兩端輸入,與所述的過濾器參數或上一層網路的激活值進行乘加運算;模數轉換模組,將MAC操作得到的模擬電壓轉換為數字表示;數字處理模組,對模數轉換模組輸出的數字表示至少進行多位融合、偏置、縮放或非線性等操作,輸出結果為部分和或者為能直接用於下一層網路輸入的激活值。
可以理解,將本發明的模組用於神經網路的MAC計算時,一般情况下,由於相同的面積上,模組包括更多的儲存單元,即交叉耦合的兩個CMOS反相器,可以一次性預先用於加載過濾器參數(權重)。在完成一層網路的計算後,輸出部分和或者是最終用於下一層網路計算的激活值(特徵圖),可以立即與預先加載並儲存在模組中的過濾器參數(權重)進行MAC計算,減少了片外的數據搬運的等待時間以及功耗。另外,模組的大吞吐量可以提高片上的儲存能力,例如,儲存單元除了儲存過濾器參數外,本層網路輸出的激活值(特徵圖)也可以儲存在MAC陣列中。
應當理解,除了在第一方面、第二方面所述的計算單元、MAC陣列內採用的共用晶體管和計算電容器的方式,實際上,在所述模組的非MAC陣列區域,所述計算單元還共用一些參與模數轉換和數字處理的晶體管等器件。
本發明中,所述模數轉換模組可為並行電容結構的SAR ADC,將列向計算單元輸出的頂板電壓V
top轉換為數字表示,包括MAC DAC,SAR DAC,比較器,開關序列和SAR邏輯。相對於採用其他類型如電阻、混合阻容結構等的SAR ADC,採用並行電容結構的SAR ADC更能充分利用本發明已有的結構,達到節省器件,減小面積的效果。MAC DAC由前述MAC陣列中一列計算單元的電容器並聯組成,應當理解,所述MAC DAC的輸出電壓為頂板電壓V
top。SAR DAC包括(B+1)個並聯電容器,B=log
2N,N是MAC DAC中電容器的數量;所述電容器包括從最高位(Most Significant Bit;MSB)到最低位(Least Significant Bit;LSB)的電容呈2倍遞減的B個電容器,還包括一個1個與最低位LSB電容等值的電容器,作為冗餘電容器。舉例說明,MAC DAC中電容器的數量N=8,則B=3,最高位MSB電容器C
B-1的電容為C,次高位電容器C
B-2的電容為C/2,最低位LSB電容器C
0的電容為C/4,從MSB到LSB能夠分配SAR DAC的基準電壓比例分別為:1/2、1/4、1/8,冗餘電容器C
u的電容為C/4,所述B個電容器和冗餘電容器的一端並聯在一起,B個電容器的另一端連接開關序列,冗餘電容器的另一端始終接地。所述開關序列的自由端包括VDD端和接地端,SAR邏輯控制所述開關序列。
在一實施例中,如圖9,MAC DAC的輸出頂板電壓V
top作為比較器的正輸入V+;SAR DAC的輸出VSAR作為比較器的負輸入V-,SAR邏輯控制所述開關序列使負輸入V-近似等於正輸入V+,最終的SAR邏輯輸出是V+的數字表示。特別地,MAC陣列的激活稀疏性可以使SAR DAC中的某些電容器免於切換,從而獲得更高的能效和ADC轉換速度。例如,如果已知在MAC操作之後,底板電壓V
btmi為VDD的MAC電容器數量小於25%,即MAC陣列中,一列計算單元進行1位乘法中1×0、0×0、0×1的情形較多,而1×1的情形小於該列計算單元數量的1/4,則可以將SAR DAC的前兩位電容器,即C
B-1和C
B-2對應的開關序列的S
B-1和S
B-2撥向接地端,並不是無條件激活SAR DAC中的所有電容進行數模轉換,節省能耗。應當注意,本發明圖式所示的比較器V+側和V-側的連接方式只是為了方便說明,實際上V+側和V-側的連接可以互換。
在另一實施例中,參見圖10,MAC DAC和SAR DAC可以連接在一起,即使所有電容器並聯,產生的總電壓為比較器的正輸入V+;比較器的負輸入V-為V
ref;SAR邏輯控制開關序列使正輸入V+逼近V
ref。應當注意,本實施例應在MAC操作遵循前述“方式一”的情况下。如果Vrst= 0且未考慮電路非理想情况,連接至比較器負輸入V-側的V
ref可以為0或VDD / 2。例如,如果V
ref=0,SAR DAC中的電容器最初是通過從S
0到S
B-1的開關連接到VDD的,則SAR操作可以在給出數字表示的同時使V +返回0,對應了“方式一”中電容器的頂板電壓V
top通過重置復位開關Srst重置為0這一步驟所需的Vrst=0。
圖9和圖10所示的兩個實施例中,當比較器的正輸入V+和負輸入V-無限地彼此接近時,比較器很容易在模數轉換過程中遭受亞穩性問題,即在短暫的時間內無法判斷比較器的正輸入V+和負輸入V-的差異。這是因為要量化的模擬MAC結果的幅度不是連續的而是離散的,並且離散的幅度級別與SAR DAC對齊。為了減輕比較器的亞穩性,如圖11,在另一實施例中,相對於圖9,比較器的正輸入V+側的MAC DAC和負輸入V-側的SAR DAC均添加一個與其他電容器並聯的半LSB電容器;正輸入V+側的半LSB電容器另一端始終接地,負輸入V-側的半LSB電容器另一端可連接開關序列。這將在MAC DAC和SAR DAC之間的離散模擬位準之間產生半個LSB電壓的差異,提供額外的誤差容限。上述半LSB電容器可以是兩個串聯的最低位LSB電容器,以實現良好的匹配。
在另一實施例,允許MAC DAC通過底板採樣多工為SAR DAC。如圖12,比較器的正輸入V+側連接MAC DAC和一個半LSB電容器,MAC DAC的第1個至第N-1個單元的電容器和半LSB電容器均可連接開關序列的接VDD端或者接地端,第N個單元的電容器可選擇連接地端;比較器的負輸入V-側不連接電容器而是電壓V
ref。實際上,本實施例中的MAC DAC也是SAR DAC。應當注意,此實施例應當在MAC計算遵循“方式二”的操作,且通常V
ref=V
rst。SAR轉換完成後,比較器的正輸入電壓V +返回V
rst,對應了“方式二”中電容器的頂板電壓V
top通過重置復位開關S
rst重置為V
rst這一步驟所需的V
rst。這樣使用相同的電容陣列實現MAC操作以及模數轉換,避免在MAC操作環節的MAC DAC和模數轉換階段SAR DAC中的電容陣列不同而導致的失配以及精度損失,並且允許全差分SAR ADC的實現。應當特別指出的是,本實施例中的實現開關序列所需要的晶體管已經包括在前述計算單元裡的控制模組中而不需要加入額外的晶體管。
結合圖12的實施例,在另一實施例中,圖13顯示差分MAC體系結構,解決了共模相關比較器輸入失調電壓偏移的問題。比較器的正輸入V+側連接MAC DAC和一個額外的LSB電容器,模數轉換過程中,MAC DAC的第1個至第N-1個單元的電容器和額外LSB電容器均可連接開關序列的接VDD端或者接地端,第N個單元的電容器可選擇連接接地端;比較器的負輸入V-側連接差分MAC DAC和一個額外的LSB電容器,模數轉換過程中,差分MAC DAC的第1個至第N-1個單元的電容器和額外LSB電容器均可連接開關序列,第N個單元的電容器可選擇連接接地端。所述差分MAC DAC由MAC陣列中的一列差分計算電容器組成。應當注意,所述差分MAC體系結構需與前述差分結構的模組結合才可實現。應當特別指出的是,本實施例中的實現開關序列所需要的晶體管已經包括在前述差分計算單元裡的控制模組中而不需要加入額外的晶體管。
在一實施例中,一列SAR ADC的位寬可以實時地由輸入數據以及儲存在該列的數值的稀疏性來決定,這樣平均下來在模數轉換過程中需要充放電的二進制加權電容器陣列裡的電容的個數有可能大量減少,從而達到大幅節省模數轉換能耗的效果。特別地,如圖14所示,SAR ADC的實時位寬可以計算為ceil(log
2(min(X,W)+1))。其中ceil為上取整函數,min為最小值函數,X為1比特輸入向量中1的個數,可以通過加法器樹計算得到,W為計算陣列的一列裡儲存的1的個數,可以在片下計算得到,並且在將數據儲存在計算陣列裡的時候已經存放在SAR邏輯裡。計算位寬的式子裡的min,log
2,ceil函數可以被簡單的數字組合邏輯替代而得到同樣的計算結果。
值得注意的是,上述實施例中,所包括的各個模組只是按照功能邏輯進行劃分的,但並不局限於上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便於相互區分,並不用於限制本發明的保護範圍,如實施例中的“第一N型MOS管”,“第二N型MOS管”僅為區分處於不同連接位置的器件,不能理解為特定的器件。
以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。
A:輸入訊號
nA:互補輸入訊號
A
ij:訊號
nA
ij:訊號
BL
k、nBL
k:位線
B:訊號
B
i:輸入訊號
nB:字線訊號
C
u:冗餘電容器
C
0、C
B-1~3:電容器
S
0、S
B-1~3:開關
S
rst:復位開關
V
btm:底板電壓
V
btmi:底板電壓
V
rst:電壓
V
top:頂板電壓
WL、nWL:字線訊號
W:一列裡儲存的1的個數
w:權重/過濾器參數
X:輸入向量中1的個數
圖1a為本發明一實施例中的子單元的示意圖; 圖1b為本發明一實施例中的子單元中6T結構的示意圖; 圖2a為本發明一實施例中的子單元結構的示意圖; 圖2b為本發明另一實施例中的子單元結構的示意圖; 圖2c為本發明另一實施例中的子單元結構的示意圖; 圖2d為本發明一實施例中1位乘子單元真值表的示意圖; 圖3a為本發明一實施例中計算單元中子單元排列示意圖; 圖3b為本發明一實施例中多個子單元組成的計算單元的示意圖; 圖3c為本發明另一實施例中多個子單元組成的計算單元的示意圖; 圖3d為本發明另一實施例中多個子單元組成的計算單元的示意圖; 圖3e為本發明一實施例中計算單元內子單元真值表; 圖4為本發明一實施例中包含計算單元MAC陣列示意圖; 圖5為本發明一實施例中計算電容器底、頂板電壓示意圖; 圖6a為本發明一實施例中計算單元連接第二CMOS反相器和差分計算電容器示意圖; 圖6b為本發明另一實施例中計算單元連接第二CMOS反相器和差分計算電容器示意圖; 圖6c為本發明另一實施例中計算單元連接第二CMOS反相器和差分計算電容器示意圖; 圖7為本發明一實施例中差分體系下組成MAC陣列示意圖; 圖8為本發明一實施例中存內計算模組示意圖; 圖9為本發明一實施例中模數轉換模組示意圖; 圖10為本發明另一實施例中模數轉換模組示意圖; 圖11為本發明另一實施例中模數轉換模組示意圖; 圖12為本發明另一實施例中模數轉換模組示意圖; 圖13為本發明另一實施例中模數轉換模組差分結構示意圖;以及 圖14為本發明一實施例中減少模數轉換的能量消耗的架構示意圖。
Bi:輸入訊號
BLk、nBLk:位線
Vbtmi:底板電壓
Claims (15)
- 一種內存內模數混合計算之子單元,係用於進行1位乘法計算,所述子單元包括:儲存模組;計算電容器;以及控制模組;所述儲存模組包括交叉耦合的兩個CMOS反相器和一個互補傳輸門,所述交叉耦合的兩個CMOS反相器儲存1位的過濾器參數,所述互補傳輸門N型MOS管柵極連接輸入訊號,所述互補傳輸門P型MOS管柵極連接互補輸入訊號,其中一個CMOS反相器的輸出端連接所述互補傳輸門的輸入端,所述互補傳輸門的輸出端連接所述計算電容器的底板以及所述控制模組;所述輸入訊號與所述過濾器參數的乘法運算結果儲存為所述計算電容器的底板的電壓;以及多個計算子單元用於組成一個計算單元,同一所述計算單元內的每一個子單元共用同一所述控制模組和一個所述計算電容器;其中,所述控制模組包括一個第一N型MOS管、一個第二N型MOS管、一個P型MOS管,所述第一N型MOS管的源極接地,漏極與所述第二N型MOS管的漏極、所述P型MOS管的漏極連接所述計算電容器的同一底板;第一N型MOS管柵極輸入訊號與所述互補傳輸門P型MOS管柵極連接的訊號在運算時位準相同;所述第二N型MOS管的源極接地,柵極接一條位線,所述P型MOS管的源極接VDD,柵極接另一條互補位線。
- 如請求項1所述之子單元,其中,所述第二N型MOS管和所述P型MOS管串聯組成一個第一CMOS反相器;所述第一CMOS反相器的所述P型MOS管的源極接VDD,所述第一CMOS反相器的所述第二N型MOS管的源極連接所述第一N型MOS管的漏極;所述第一N型MOS管的源極接地,柵極的輸入訊號與所述互補傳輸門P型MOS管柵極連接的訊號在運算時位準相同;所述第一CMOS反相器的輸入連接一條位線, 輸出連接所述計算電容器的底板;其中,所述計算單元內的子單元以時分多工的方式被激活,同一所述計算單元內的第一N型MOS管柵極連接的訊號與某時刻處於工作狀態的子單元內互補傳輸門的P型MOS管柵極連接的互補輸入訊號位準相同。
- 一種內存內模數混合計算之子單元,係用於進行1位乘法計算,所述子單元包括:儲存模組;計算電容器;以及控制模組;所述儲存模組包括交叉耦合的兩個CMOS反相器和一個互補傳輸門,所述交叉耦合的兩個CMOS反相器儲存1位的過濾器參數,所述互補傳輸門N型MOS管柵極連接輸入訊號,所述互補傳輸門P型MOS管柵極連接互補輸入訊號,其中一個CMOS反相器的輸出端連接所述互補傳輸門的輸入端,所述互補傳輸門的輸出端連接所述計算電容器的底板以及所述控制模組;所述輸入訊號與所述過濾器參數的乘法運算結果儲存為所述計算電容器的底板的電壓;以及多個計算子單元用於組成一個計算單元,同一所述計算單元內的每一個子單元共用同一所述控制模組和一個所述計算電容器;其中,所述控制模組包括一個第一N型MOS管、一個P型MOS管;所述第一N型MOS管的漏極連接所述P型MOS管的漏極,並連接到所述計算電容器的底板;所述第一N型MOS管的源極連接所述P型MOS管的源極,並連接到一條位線;所述第一N型MOS管的柵極連接一條控制字線,其位準與所述互補傳輸門P型MOS管柵極連接的訊號在運算時的位準相同;所述P型MOS管的柵極連接另一條控制字線。
- 如請求項3所述之子單元,其中,所述計算單元內的子單元以時分多工的方式被激活,同一所述計算單元內的第一N型MOS管柵極連接的訊號與某時刻處於工作狀態的子單元內互補傳輸門的P型MOS管 柵極連接的互補輸入訊號位準相同。
- 一種包含如請求項1至4中任一項所述的子單元之MAC陣列,係用於進行乘加運算,其特徵在於,所述MAC陣列包含多個計算單元,每個計算單元內的所有子單元的互補傳輸門的輸出端連接同一個計算電容器的底板,同一列的所有計算單元內的計算電容器頂板連接同一累加總線,每一累加總線的電壓對應所述MAC陣列中每一列乘法計算的累加和。
- 如請求項5所述之MAC陣列,其中,所述MAC陣列中還包括第二CMOS反相器和差分計算電容器,組成所述MAC陣列的每一計算單元中的所有子單元的互補傳輸門輸出端連接同一所述第二CMOS反相器的輸入端,所述第二CMOS反相器的輸出端連接所述差分計算電容器的底板;同一列的所有所述差分計算電容器的頂板連接同一差分累加總線。
- 一種位寬可重構的模數混合內存內計算之運算模組,其特徵在於,包括:如請求項5所述的MAC陣列,所述MAC陣列中列向累積的乘法結果表示為模擬電壓;filter/ifmap模組,提供被寫入並儲存在所述MAC陣列中的過濾器參數或上一層計算完成的激活值;ifmap/filter模組,提供所述MAC陣列的輸入,與神經網路的過濾器參數或者上一層計算完成的激活值進行乘法計算;模數轉換模組,將MAC後得到的模擬電壓轉換為數字表示;以及數字處理模組,對所述模數轉換模組的輸出至少進行多位融合、偏置、縮放或非線性操作,輸出結果為部分和或者為能作為下一層網路輸入的激活值。
- 如請求項7所述之運算模組,其中,所述模數轉換模組為二進制加權電容陣列的SAR ADC,所述SAR ADC包括:MAC DAC,由所述MAC陣列中一列的計算電容器組成;SAR DAC,由多個所述二進制加權電容器和1個與LSB電容等值的冗餘電容器組成的陣列;比較器;以及開關序列以及SAR邏輯,所述SAR邏輯控制所述開關序列。
- 如請求項8所述之運算模組,其中,所述MAC DAC的輸出電壓作為所述比較器一端的輸入;所述SAR DAC的輸出電壓作為所述比較器另一端的輸入。
- 如請求項8所述之運算模組,其中,所述MAC DAC和所述SAR DAC中的電容器並聯產生的輸出電壓作為所述比較器一端的輸入;比較電壓Vref作為所述比較器另一端的輸入。
- 如請求項9所述之運算模組,其中,所述比較器兩端分別添加一個半LSB電容器;所述MAC DAC和所述半LSB電容器並聯產生的輸出電壓作為所述比較器一端的輸入,所述SAR DAC和所述半LSB電容器並聯產生的輸出電壓作為所述比較器另一端的輸入。
- 如請求項8所述之運算模組,其中,所述MAC DAC和半LSB電容器均連接所述開關序列多工為所述SAR DAC,此雙用途DAC的輸出電壓作為所述比較器一端的輸入;比較電壓Vref作為所述比較器另一端的輸入。
- 如請求項8所述之運算模組,其中,所述SAR ADC還包括差分MAC DAC,所述差分MAC DAC由所述MAC陣列中一列的差分計算電容器組成。
- 如請求項13所述之運算模組,其中,所述MAC DAC和一 個額外並聯的LSB電容器均連接所述開關序列多工為所述SAR DAC,此雙用途DAC的輸出電壓作為所述比較器一端的輸入;所述差分MAC DAC和一個額外並聯的差分LSB電容器均連接所述開關序列多工為差分SAR DAC,此雙用途差分DAC的輸出電壓作為所述比較器另一端的輸入。
- 如請求項8所述之運算模組,其中,所述SAR ADC的位寬實時地根據輸入數據和儲存在計算陣列中的數據的稀疏性來決定,此實時位寬可以計算為ceil(log2(min(X,W)+1));其中ceil為上取整函數,min為最小值函數,X為1比特輸入向量中1的個數,W為計算陣列的一列裡儲存的1的個數,所述計算式子可以在電路中等效地由數字組合邏輯實現。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110130777A TWI788964B (zh) | 2021-08-20 | 2021-08-20 | 子單元、mac陣列、位寬可重構的模數混合存內計算模組 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110130777A TWI788964B (zh) | 2021-08-20 | 2021-08-20 | 子單元、mac陣列、位寬可重構的模數混合存內計算模組 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI788964B true TWI788964B (zh) | 2023-01-01 |
TW202309758A TW202309758A (zh) | 2023-03-01 |
Family
ID=86669912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110130777A TWI788964B (zh) | 2021-08-20 | 2021-08-20 | 子單元、mac陣列、位寬可重構的模數混合存內計算模組 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI788964B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111431536A (zh) * | 2020-05-18 | 2020-07-17 | 深圳市九天睿芯科技有限公司 | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 |
US20210158854A1 (en) * | 2019-11-27 | 2021-05-27 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute in memory system |
-
2021
- 2021-08-20 TW TW110130777A patent/TWI788964B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210158854A1 (en) * | 2019-11-27 | 2021-05-27 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute in memory system |
CN111431536A (zh) * | 2020-05-18 | 2020-07-17 | 深圳市九天睿芯科技有限公司 | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 |
Also Published As
Publication number | Publication date |
---|---|
TW202309758A (zh) | 2023-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021232949A1 (zh) | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 | |
WO2021223547A1 (zh) | 子单元、mac阵列、位宽可重构的模数混合存内计算模组 | |
US20210240441A1 (en) | Computation in-memory using 6-transistor bit cells | |
US11875244B2 (en) | Enhanced dynamic random access memory (eDRAM)-based computing-in-memory (CIM) convolutional neural network (CNN) accelerator | |
TWI750038B (zh) | 記憶體裝置、計算裝置及計算方法 | |
CN110941185B (zh) | 一种用于二值神经网络的双字线6tsram单元电路 | |
US11762700B2 (en) | High-energy-efficiency binary neural network accelerator applicable to artificial intelligence internet of things | |
CN115048075A (zh) | 基于电容耦合的sram存算一体芯片 | |
Mu et al. | SRAM-based in-memory computing macro featuring voltage-mode accumulator and row-by-row ADC for processing neural networks | |
CN115390789A (zh) | 基于磁隧道结计算单元的模拟域全精度存内计算电路及方法 | |
CN113936717B (zh) | 一种复用权重的存算一体电路 | |
Lee et al. | A charge-sharing based 8t sram in-memory computing for edge dnn acceleration | |
CN115080501A (zh) | 基于局部电容电荷共享的sram存算一体芯片 | |
Nasrin et al. | Memory-immersed collaborative digitization for area-efficient compute-in-memory deep learning | |
TWI788964B (zh) | 子單元、mac陣列、位寬可重構的模數混合存內計算模組 | |
Kim et al. | A charge-domain 10T SRAM based in-memory-computing macro for low energy and highly accurate DNN inference | |
CN115691613B (zh) | 一种基于忆阻器的电荷型存内计算实现方法及其单元结构 | |
Yu et al. | A 4-bit mixed-signal MAC array with swing enhancement and local kernel memory | |
Xiao et al. | A 128 Kb DAC-less 6T SRAM computing-in-memory macro with prioritized subranging ADC for AI edge applications | |
Zang et al. | 282-to-607 TOPS/W, 7T-SRAM Based CiM with Reconfigurable Column SAR ADC for Neural Network Processing | |
KR102470924B1 (ko) | 인메모리 컴퓨팅 및 하이브리드 계산/저장 메모리 아키텍처를 위한 sram 기반 셀 | |
Rasul et al. | A 128x128 SRAM macro with embedded matrix-vector multiplication exploiting passive gain via MOS capacitor for machine learning application | |
Jeong et al. | A Ternary Neural Network Computing In Memory Processor with 16T1C Bitcell Architecture | |
Tang et al. | High-density energy-efficient charge-domain computing based on CAA-IGZO TFT with BEOL-compatible 3D integration | |
US20230251943A1 (en) | Row repair and accuracy improvements in analog compute-in-memory architectures |