TW202324210A - 支援深度式迴旋神經網路(cnn)的記憶體內計算(cim)架構和資料串流 - Google Patents
支援深度式迴旋神經網路(cnn)的記憶體內計算(cim)架構和資料串流 Download PDFInfo
- Publication number
- TW202324210A TW202324210A TW111124296A TW111124296A TW202324210A TW 202324210 A TW202324210 A TW 202324210A TW 111124296 A TW111124296 A TW 111124296A TW 111124296 A TW111124296 A TW 111124296A TW 202324210 A TW202324210 A TW 202324210A
- Authority
- TW
- Taiwan
- Prior art keywords
- cim
- columns
- rows
- neural network
- array
- Prior art date
Links
Images
Classifications
-
- 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
- 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/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- 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
- 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
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
- H03M1/34—Analogue value compared with reference values
- H03M1/36—Analogue value compared with reference values simultaneously only, i.e. parallel type
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
某些態樣提供了一種用於神經網路中的信號處理的裝置。該裝置通常包括被配置為作為用於神經網路計算的第一核心的第一記憶體內計算(CIM)單元集合以及被配置為作為用於神經網路計算的第二核心的第二CIM單元集合,第一CIM單元集合包括CIM陣列的一或多個第一列和第一複數個行,第二CIM單元集合包括CIM陣列的一或多個第二列和第二複數個行。在一些態樣中,一或多個第一列不同於一或多個第二列,並且第一複數個行不同於第二複數個行。
Description
相關申請的交叉引用
本專利申請案請求2021年6月29日提出申請的美國申請第17/361,784號的優先權,該美國申請案被轉讓給本案的受讓人,並經由引用整體結合於此。
本案的態樣係關於執行機器學習任務,特定言之係關於記憶體內計算(computation in memory)架構和資料串流。
機器學習大體是產生經訓練的模型(例如,人工神經網路、樹或其他結構)的程序,經訓練的模型表示對一組先驗已知的訓練資料的廣義擬合。將經訓練的模型應用於新資料會產生可以用於獲得對新資料的洞察的推理(inference)。在一些情況下,將模型應用於新資料被描述為在新資料上「運行推理」。
由於為了實現各種機器學習(或人工智慧)任務,機器學習的使用已經激增,已經出現了對機器學習模型資料的更高效處理的需求。在一些情況下,諸如機器學習加速器之類的專用硬體可以用來增強處理系統處理機器學習模型資料的能力。然而,此種硬體需要空間和功率,而空間和功率在處理設備上並不總是可用的。例如,「邊緣處理」設備(諸如行動設備、始終線上設備、物聯網路(IoT)設備等)必須在處理能力與功率和封裝約束之間取得平衡。此外,加速器可能需要在共用資料匯流排上移動資料,這可能導致大量的功率使用並給共享資料匯流排的其他程序帶來時延。由此,正在考慮處理系統的其他態樣來處理機器學習模型資料。
記憶體設備是處理系統的另一態樣的一個實例,該處理系統可以用於經由所謂的記憶體內計算(computation in memory,CIM)程序來執行對機器學習模型資料的處理。不幸的是,在沒有附加的硬體元件(諸如數位乘法累加電路(digital multiply-and-accumulate circuit,DMAC)和相關的周邊設備)的情況下,習知的CIM程序可能不能夠執行對複雜模型結構(諸如深度式可分(depthwise separable)迴旋神經網路)的處理。該等附加的硬體元件在其實現方式中使用了附加的空間、功率和複雜性,這往往會降低利用記憶體設備作為附加的計算資源的優勢。即使在處理系統的輔助態樣具有可用於執行不能在記憶體內直接執行的處理的DMAC的情況下,將資料移入和移出彼等輔助態樣亦需要時間和功率,且因此減輕了CIM程序的益處。
相應地,需要用於執行更廣泛的各種機器學習模型架構(諸如深度式可分迴旋神經網路)的記憶體內計算的系統和方法。
某些態樣提供了一種用於神經網路中的信號處理的裝置。該裝置大體包括被配置為作為用於神經網路計算的第一核心的第一組記憶體內計算(CIM)單元以及被配置為作為用於神經網路計算的第二核心的第二CIM單元集合,第一CIM單元集合包括CIM陣列的一或多個第一列和第一複數個行,第二CIM單元集合包括CIM陣列的一或多個第二列和第二複數個行。在一些態樣中,一或多個第一列不同於一或多個第二列,並且第一複數個行不同於第二複數個行。
某些態樣提供了一種用於神經網路中的信號處理的方法。該方法大體包括經由一或多個第一列載入具有第一核心的第一多個權重參數的第一CIM單元集合以執行神經網路計算,第一CIM單元集合包括CIM陣列的一或多個第一列和第一複數個行。該方法亦可以包括經由一或多個第二列載入具有第二核心的第二複數個權重參數的第二CIM單元集合以執行神經網路計算,第二CIM單元集合包括CIM陣列的一或多個第二列和第二複數個行。一或多個第一列可以不同於一或多個第二列,並且第一複數個行可以不同於第二複數個行。該方法亦可以包括藉由將第一啟動輸入應用於第一複數個行並將第二啟動輸入應用於第二複數個行來執行神經網路計算。
某些態樣提供了一種包括指令的非暫時性電腦可讀取媒體,當該些指令被處理系統的一或多個處理器執行時,使得處理系統執行一種神經網路中的信號處理方法。該方法大體包括經由一或多個第一列載入具有第一核心的第一複數個權重參數的第一CIM單元集合以執行神經網路計算,第一CIM單元集合包括CIM陣列的一或多個第一列和第一複數個行。該方法亦可以包括經由一或多個第二列載入具有第二核心的第二複數個權重參數的第二CIM單元集合以執行神經網路計算,第二CIM單元集合包括CIM陣列的一或多個第二列和第二複數個行。一或多個第一列可以不同於一或多個第二列,並且第一複數個行可以不同於第二複數個行。該方法亦可以包括藉由將第一啟動輸入應用於第一複數個行並將第二啟動輸入應用於第二複數個行來執行神經網路計算。
其他態樣提供了:一種被配置為執行前述方法以及本文描述的方法的處理系統;一種包括指令的非暫時性電腦可讀取媒體,當該指令被處理系統的一或多個處理器執行時,使得處理系統執行前述方法以及本文描述的方法;一種體現在電腦可讀取儲存媒體上的電腦程式產品,包括用於執行前述方法以及本文進一步描述的方法的代碼;及一種包括用於執行前述方法以及本文進一步描述的方法的部件的處理系統。
以下描述和相關附圖詳細闡述了一或多個態樣的某些說明性特徵。
本案的態樣提供了用於執行機器學習模型的記憶體內計算(computation in memory,CIM)的裝置、方法、處理系統和電腦可讀取媒體,包括深度式可分(depthwise separable)迴旋神經網路。某些態樣涉及為不同核心配置的CIM陣列的CIM單元,其中CIM單元在CIM陣列的不同的行和列上實現,從而便於第一核心和第二核心的平行作業。例如,第一核心可以在CIM陣列的第一行和第一列上實現,並且第二核心可以在CIM陣列的第二行和第二列上實現,其中第一行和第二列不同於第二行和第二列。在不同的行和列上實現的每個核心可以耦合到類比數位轉換器(ADC),從而允許經由核心進行並行的深度式(depth-wise,DW)計算和類比數位轉換。DW計算的結果可以被輸入到非線性啟動電路以供進一步處理,並被輸入到另一CIM陣列以供點式(point-wise,PW)計算,如本文更詳細描述的。
基於CIM的機器學習(ML)/人工智慧(AI)任務加速器可以用於各種各樣的任務,包括圖像和音訊處理。此外,CIM可以基於各種類型的記憶體架構,諸如DRAM、SRAM(例如,基於圖5中的SRAM單元)、MRAM和ReRAM,並且可以附接到各種類型的處理單元,包括中央處理器單元(CPU)、數位訊號處理器(DSP)、圖形處理器單元(GPU)、現場可程式設計閘陣列(FPGA)、AI加速器等。大體上,CIM可以有益地減少「記憶體牆(memory wall)」問題,「記憶體牆」問題是資料移入和移出記憶體比資料計算消耗更多功率的情況。因此,經由執行記憶體內計算,可以實現顯著的功率節省。這對於各種類型的電子設備(諸如低功率邊緣處理設備、行動設備等)特別有用。
例如,行動設備可以包括被配置用於儲存資料和記憶體內計算操作的記憶體設備。行動設備可以被配置為基於由行動設備產生的資料(諸如由行動設備的相機感測器產生的圖像資料)來執行ML/AI操作。行動設備的記憶體控制器單元(MCU)因此可以將權重從另一板載記憶體(例如,快閃記憶體或RAM)載入到記憶體設備的CIM陣列中,並且分配輸入特徵緩衝器和輸出(例如,啟動)緩衝器。隨後,處理設備可以藉由將例如層載入到輸入緩衝器中並用載入到CIM陣列中的權重來處理該層,來著手圖像資料的處理。可以對圖像資料的每一層重複該處理,並且可以將輸出(例如,啟動)儲存在輸出緩衝器中,隨後由行動設備將其用於ML/AI任務,諸如臉孔辨識。
關於神經網路、深度神經網路和深度學習的簡要背景
神經網路被組織成多層互連的節點。大體上,節點(或神經元)是發生計算的地方。例如,節點可以將輸入資料與放大或衰減輸入資料的一組權重(或係數)進行組合。因此,輸入信號的放大或衰減可以被認為是對關於網路試圖學習的任務的各種輸入的相對重要性的指派。大體上,對輸入權重乘積進行求和(或累加),隨後將總和通過節點的啟動函數進行傳遞,以決定該信號是否應該在網路中進一步前進以及前進到什麼程度。
在最基本的實現方式中,神經網路可以具有輸入層、隱藏層和輸出層。「深度」神經網路通常具有不止一個隱藏層。
深度學習是一種訓練深度神經網路的方法。大體上,深度學習將網路的輸入映射到網路的輸出,因此有時稱其為「通用近似器(universal approximator)」,因為其可以學習對任何輸入x與任何輸出y之間的未知函數
進行近似。換句話說,深度學習找到將x轉換成y的正確f。
更具體地,深度學習基於一組作為前一層的輸出的不同特徵來訓練每一層節點。因此,對於深度神經網路的每個連續層,特徵變得更加複雜。因此,深度學習是強大的,因為其可以從輸入資料中逐步提取更高級別的特徵,並且經由學習在每一層中以連續更高級別抽象表示輸入來執行複雜的任務(諸如物件辨識),從而建立輸入資料的有用特徵表示。
例如,若用視覺資料來呈現,則深度神經網路的第一層可以學習辨識輸入資料中相對簡單的特徵,諸如邊緣。在另一實例中,若用聽覺資料來呈現,則深度神經網路的第一層可以學習辨識輸入資料中特定頻率中的譜功率。深度神經網路的第二層隨後可以學習基於第一層的輸出來辨識特徵的組合,諸如視覺資料的簡單形狀或聽覺資料的聲音組合。更高層隨後可以學習辨識視覺資料中的複雜形狀或聽覺資料中的單詞。更高層可以學習辨識常見的視覺物件或口語短語。因此,當應用於具有自然層次結構的問題時,深度學習架構可能表現得尤其好。
神經網路中的層連線性
諸如深度神經網路之類的神經網路可以被設計成在層之間具有多種連線性模式(connectivity pattern)。
圖1A圖示全連接神經網路102的實例。在全連接神經網路102中,第一層中的節點將其輸出傳送給第二層中的每一個節點,使得第二層之每一者節點將接收來自第一層中的每一個節點的輸入。
圖1B圖示局部連接神經網路104的實例。在局部連接神經網路104中,第一層中的節點可以連接到第二層中有限數量的節點。更一般地,局部連接神經網路104的局部連接層可以被配置成使得層之每一者節點將具有相同或相似的連線性模式,但是其中連接強度(或權重)可以具有不同值(例如,110、112、114和116)。局部連接連線性模式可以在更高層中產生空間上有區別的感受野(receptive field),因為給定區域中的更高層節點可以接收輸入,該等輸入經由訓練被調諧到網路的總輸入的受限部分的屬性。
一種類型的局部連接神經網路是迴旋神經網路。圖1C圖示迴旋神經網路106的實例。迴旋神經網路106可以被配置成使得與第二層之每一者節點的輸入相關聯的連接強度被共享(例如,108)。迴旋神經網路非常適合於輸入的空間位置有意義的問題。
一種類型的迴旋神經網路是深度迴旋網路(deep convolutional network,DCN)。深度迴旋網路是多個迴旋層的網路,其可以進一步被配置有例如池化層和正規化層。
圖1D圖示DCN 100的實例,DCN 100被設計成在由圖像擷取裝置130產生的圖像126中辨識視覺特徵。例如,若圖像擷取裝置130是安裝在車輛中的相機,則DCN 100可以用各種監督學習技術來進行訓練,以識別交通標誌乃至交通標誌上的數。DCN 100同樣可以被訓練用於其他任務,諸如識別車道標記或識別交通燈。該等只是一些示例任務,並且許多其他任務亦是可能的。
在該實例中,DCN 100包括特徵提取部分和分類部分。在接收到圖像126時,迴旋層132將迴旋核心(例如,如圖2圖示和描述的)應用於圖像126,以產生第一組特徵圖(或中間啟動)118。大體上,「核心」或「濾波器」包括被設計成強調輸入資料通道的不同態樣的多維權重陣列。在各種實例中,「核心」和「濾波器」可以互換使用,以代表在迴旋神經網路中應用的多組權重。
隨後,第一組特徵圖118可以經由池化層(例如,最大池化層,未圖示)進行二次取樣以產生第二組特徵圖120。池化層可以減小第一組特徵圖118的大小,同時維持大部分資訊以便提高模型效能。例如,第二組特徵圖120可以經由池化層從28×28下取樣到14×14。
該程序可以經由許多層進行重複。換句話說,第二組特徵圖120可以經由一或多個後續迴旋層(未圖示)進一步迴旋,以產生後續的一組或多組特徵圖(未圖示)。
在圖1D的實例中,第二組特徵圖120被提供給全連接層124,全連接層124又產生輸出特徵向量128。輸出特徵向量128的每個特徵可以包括與圖像126的可能特徵(諸如「符號」、「60」和「100」)相對應的數。在一些情況下,softmax函數(未圖示)可以將輸出特徵向量128中的數轉換成概率。在此種情況下,DCN 100的輸出122是圖像126包括一或多個特徵的概率。
softmax函數(未圖示)可以將輸出特徵向量128的各個元素轉換成概率,以便DCN 100的輸出122是圖像126包括一或多個特徵(諸如輸入圖像126中的其上具有數「60」的符號)的一或多個概率。因此,在該實例中,輸出122中的「符號」和「60」的概率應該高於輸出122中的其他輸出(諸如「30」、「40」、「50」、「70」、「80」、「90」和「100」)的概率。
在訓練DCN 100之前,由DCN 100產生的輸出122可能是不正確的。因此,可以計算輸出122與先驗已知的目標輸出之間的誤差。例如,這裡的目標輸出是圖像126包括「符號」和數位「60」的指示。隨後,利用已知的目標輸出,可以經由訓練來調整DCN 100的權重,使得DCN 100的後續輸出122達到目標輸出。
為了調整DCN 100的權重,學習演算法可以計算權重的梯度向量。梯度可以指示在以特定方式調整權重的情況下誤差將增加或減少的量。隨後可以調整權重以減小誤差。此種調整權重的方式可以被稱為「反向傳播」,因為其涉及通過DCN 100的層的「反向傳遞」。
在實踐中,權重的誤差梯度可以經由少量示例來計算,使得計算出的梯度近似真實的誤差梯度。此種近似方法可以稱為隨機梯度下降。可以對隨機梯度下降進行重複,直到整個系統的可實現誤差率已經停止下降,或者直到誤差率已經達到目標水平。
在訓練之後,DCN 100可以用新的圖像來呈現,並且DCN 100可以產生推斷(諸如分類),或者各種特徵位於新圖像中的概率。
用於迴旋神經網路的迴旋技術
迴旋大體用於從輸入資料集中提取有用的特徵。例如,在諸如如前述的迴旋神經網路中,迴旋能夠使用其權重在訓練期間自動學習的核心及/或濾波器來提取不同的特徵。隨後對所提取的特徵進行組合以進行推斷。
可以在迴旋神經網路的每一層之前及/或之後應用啟動函數。啟動函數大體是決定神經網路的節點的輸出的數學函數(例如,方程)。因此,啟動函數基於節點的輸入是否與模型的預測相關來決定節點是否應該傳遞資訊。在一個實例中,在
(亦即,y = x的迴旋)的情況下,x和y通常皆可以被認為是「啟動」。然而,就特定迴旋操作而言,x亦可以被稱為「預啟動」或「輸入啟動」,因為其存在於特定迴旋之前,並且y可以被稱為輸出啟動或特徵圖。
圖2圖示了其中使用5×5×3的迴旋核心204和步距(或步長)1來對12像素×12像素×3通道輸入圖像進行迴旋的傳統迴旋的實例。所得的特徵圖206是8像素×8像素×1通道。如該示例中可見的,傳統迴旋可以與輸出資料相比來改變輸入資料的維度(這裡,從12×12像素到8×8像素),包括通道維度(這裡,從3個通道到1個通道)。
一種減少計算負擔(例如,以每秒浮點運算數(floating point operations per second,FLOP)來量測)和與包括迴旋層的神經網路相關聯的參數數量的方法是對迴旋層進行因式分解。例如,諸如圖2所圖示的空間可分迴旋可以被因式分解成兩個分量:(1)深度式迴旋,其中每個空間通道經由深度式迴旋進行獨立迴旋(例如,空間融合);和(2)點式迴旋,其中對所有空間通道進行線性組合(例如,通道融合)。在圖3A和圖3B中圖示了深度式可分迴旋的實例。通常,在空間融合期間,網路從空間平面學習特徵,而在通道融合期間,網路跨通道學習該等特徵之間的關係。
在一個實例中,可分深度式迴旋可以使用用於空間融合的3×3核心和用於通道融合的1×1核心來實現。具體地,通道融合可以使用經由深度為d的輸入圖像之每一者單點進行反覆運算的1×1×d核心,其中核心的深度d大體與輸入圖像的通道數量相匹配。經由點式迴旋的通道融合對於高效計算的維度降低是有用的。應用1×1×d核心並在核心之後添加啟動層可以賦予網路增加的深度,這可以提高其效能。
圖3A和圖3B描述了深度式可分迴旋操作的實例。
具體地,在圖3A中,12像素×12像素×3通道的輸入圖像302與包括三個分開的核心304A-304C的濾波器(每個核心的維度為5×5×1)進行迴旋,以產生8像素×8像素×3通道的特徵圖306,其中每個通道由304A-304C當中地各個核心產生。
隨後,使用其中核心308(例如,核心)的維度為1×1×3的點式迴旋操作進一步對特徵圖306進行迴旋,以產生8像素×8像素×1通道的特徵圖310。如該示例中所圖示的,特徵圖310具有降低的維度(1個通道對3個通道),這允許利用特徵圖310進行更高效的計算。
儘管圖3A和圖3B中的深度式可分迴旋的結果基本上類似於圖2中的傳統迴旋,但是計算次數顯著減少,且因此在網路設計允許的情況下,深度式可分迴旋提供了顯著的效率增益。
儘管沒有在圖3B中圖示,但是多個(例如,m個)點式迴旋核心308(例如,濾波器的單個元件)可以用於增加迴旋輸出的通道維度。因此,例如,可以產生m = 256個1×1×3核心308,每個核心308輸出8像素×8像素×1通道的特徵圖(例如,310),並且該等特徵圖可以被堆疊以獲得8像素×8像素×256通道的所得特徵圖。所得的通道維度的增加提供了更多用於訓練的參數,這可以提高迴旋神經網路(例如,在輸入圖像302中)識別特徵的能力。
記憶體內計算(CIM)架構示例
圖4圖示根據本案的態樣的被配置用於執行機器學習模型計算的示例性記憶體內計算(CIM)陣列400。在該實例中,CIM陣列400被配置為使用針對人工神經網路的混合類比/數位操作來類比MAC操作。相應地,如本文所使用的,術語乘法和加法可以指此種模擬操作。CIM陣列400可以用於實現本文描述的處理技術的態樣。
在所圖示的態樣,CIM陣列400包括預充電字線(precharge word line,PCWL)425a、425b和425c(統稱為425)、讀取字線(read word line,RWL)427a、427b和427c(統稱為427)、類比數位轉換器(ADC)410a、410b和410c(統稱為410)、數字處理單元413、位元線418a、418b和418c(統稱為418)、PMOS電晶體411a-111i(統稱為411)、NMOS電晶體413a-413i(統稱為413)以及電容器423a-423i(統稱為423)。
與神經網路層相關聯的權重可以被儲存在CIM陣列400的SRAM單元中。在該實例中,在CIM陣列400的SRAM位元單元405a-405i中圖示二進位權重。在PCWL 425a-c上提供輸入啟動(例如,可以是輸入向量的輸入值)
乘法發生在CIM陣列400的與位元線相關聯的每個位元單元405a-405i中,並且所有位元單元乘法結果的累加(求和)發生在針對一列的同一位元線上。每個位元單元405a-405i中的乘法是與相對應的啟動和權重的AND運算等效的操作形式,其中結果作為電荷被儲存在相對應的電容器423上。例如,僅在啟動為1(這裡,因為使用了PMOS,所以針對啟動為1,PCWL為0)且權重為1的情況下,才產生產出為1,並且由此產生電容器423上的電荷。
例如,在累加階段,RWL 427被切換到高(high),使得電容器423上的任何電荷(基於對應的位元單元(權重)和PCWL(啟動)值)可以被累加在相對應的位元線418上。累加電荷的電壓值隨後被ADC 410轉換成數位值(其中例如,輸出值可以是指示總電荷是否大於參考電壓的二進位值)。該等數位值(輸出)可以作為輸入被提供給機器學習模型的另一態樣,諸如下一層。
當預充電字線(PCWL)425a、425b和425c上的啟動是例如1、0、1時,位元線418a-418c之和分別對應於0+0+1=1、1+0+0=1和1+0+1=2。ADC 410a、410b和410c的輸出被傳遞到數字處理單元413以供進一步處理。例如,若CIM 100正在處理多位元(multi-bit)權重值,則ADC 110的數位輸出可以被求和以產生最終輸出。
示例性的3×3 CIM電路400可以用於例如對三元素核心(或濾波器)執行高效的3通道迴旋,其中每個核心的權重對應於三列中的每一列的元素,使得對於給定的三元素感受野(或輸入資料補片(input data patch)),並行地計算針對三個通道之每一者通道的輸出。
注意,儘管圖4描述了使用SRAM單元的CIM的實例,但是亦可以使用其他記憶體類型。例如,動態隨機存取記憶體(DRAM)、磁阻隨機存取記憶體(MRAM)和電阻隨機存取記憶體(ReRAM或RRAM)同樣可以用於其他實施例中。
圖5A圖示了示例性位元單元500的附加細節。
圖5A的態樣可以是圖4的態樣的示例或者與圖4的態樣相關。具體地,位元線521類似於位元線418a,電容器523類似於圖4的電容器423,讀取字線527類似於圖4的讀取字線427a,並且預充電字線525類似於圖4的預充電字線425a,PMOS電晶體511類似於圖1的PMOS電晶體411a,並且NMOS電晶體513類似於圖1的NMOS電晶體413。
位元單元500包括靜態隨機存取記憶體(SRAM)單元501(其可以表示圖4的SRAM位元單元405a)以及電晶體511(例如,PMOS電晶體)、電晶體513(例如,NMOS電晶體)和耦合到地的電容器523。儘管PMOS晶體管用於電晶體511,但是可以在對其相應控制信號進行相對應的調整(例如,反相)的情況下使用其他電晶體(例如,NMOS電晶體)來代替PMOS電晶體。這同樣適用於本文描述的其他電晶體。根據本發明的態樣,包括附加的電晶體511和513以實現記憶體內計算陣列。在一個態樣中,SRAM單元501是習知的六電晶體(6T)SRAM單元。
針對多次啟動,可以執行一次對位元單元中的權重的程式設計。例如,在操作中,SRAM單元501經由寫入字線(write word line,WWL)516在節點517和519處僅接收1位元資訊。例如,在寫入期間(當WWL 216為高時),若寫入位元線(write bit line,WBL)229為高(例如,「1」),則節點217設置為高,並且節點219設置為低(例如,「0」);或者若WBL 229為低,則節點217設置為低,並且節點219設置為高。相反,在寫入期間(當WWL 216為高時),若寫入位元條線(write bit bar line,WBBL)231為高,則節點217設置為低,並且節點219設置為高;或者若WBBL 229為低,則節點217設置為高,並且節點219設置為低。
權重的程式設計之後可以是啟動輸入和乘法步驟,以根據相對應的乘積對電容器進行充電。例如,電晶體511由由記憶體內計算陣列的預充電字線(PCWL)525的啟動信號(PCWL信號)來啟動,以執行乘法步驟。隨後電晶體513由通過記憶體內計算陣列的另一字線(例如,讀取字線(read word line,RWL)527)的信號來啟動,以執行來自位元單元500與陣列的其他位元單元的乘法值的累加,諸如上文相對於圖4所描述的。
若節點517為「0」(例如,當所儲存的權重值為「0」時),則將在低PCWL指示在電晶體511的閘極處的啟動「1」的情況下不對電容器523進行充電。相應地,沒有電荷被提供給位元線521。然而,若與權重值相對應的節點517為「1」並且PCWL被設置為低(例如,當啟動輸入為高時),這導通充當短路的PMOS電晶體511,從而允許對電容器523進行充電。在對電容器523進行充電之後,關斷電晶體511,因此將電荷儲存在電容器523中。為了將電荷從電容器523移動到位元線521,經由RWL 527將NMOS電晶體513導通,從而使得NMOS電晶體513充當短路。
表1圖示根據AND運算設置的記憶體內計算陣列操作的實例,諸如可以由圖5A中的位元單元500來實現。
表1:AND運算
| 啟動 | PCWL | 單元節點(權重) | 電容器節點 |
| 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 |
表1的第一列(啟動)包括輸入的啟動信號的可能值。
表1的第二列(PCWL)包括PCWL值,PCWL值根據本案的態樣來啟動被設計成實現記憶體內計算功能的電晶體。因為該示例中的電晶體511是PMOS電晶體,所以PCWL值是啟動值的倒數。例如,記憶體內計算陣列包括由經由預充電字線(PCWL)525的啟動信號(PCWL信號)啟動的電晶體511。
表1的第三列(單元節點)包括被儲存在SRAM單元節點中的權重值(例如,與諸如可以在迴旋操作中使用的權重張量中的權重相對應的)。
表1的第四列(電容器節點)圖示將作為電荷被儲存在電容器上的結果乘積。例如,電荷可以被儲存在電容器523的節點或電容器423a-423i之一的節點處。當電晶體513被啟動時,來自電容器523的電荷被移動到位元線521。例如,參考電晶體511,當單元節點517處的權重為「1」(例如,高電壓)並且輸入啟動為「1」(因此PCWL為「0」)時,對電容器523進行充電(例如,電容器的節點為「1」)。對於所有其他組合,電容節點的值將為0。
圖5B圖示了另一示例性位元單元550的附加細節。
主要基於包括耦合到附加電晶體554的附加預充電字線552,位元單元550不同於圖5A中的位元單元500。
表2圖示除了根據XNOR操作設置之外類似於表1的記憶體內計算陣列操作的實例,諸如可以由圖5B中的位元單元550來實現。
表2:XNOR操作
| 啟動 | PCWL1 | PCWL2 | 單元節點(權重) | 電容器節點 |
| 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 |
表2的第一列(啟動)包括輸入的啟動信號的可能值。
表2的第二列(PCWL1)包括PCWL1值,PCWL1值根據本案的態樣來啟動被設計成實現記憶體內計算功能的電晶體。此處,同樣地,電晶體511是PMOS電晶體,並且PCWL1值是啟動值的倒數。
表2的第三列(PCWL2)包括PCWL2值,PCWL2值根據本案的態樣來啟動被設計成實現記憶體內計算功能的另一電晶體。
表2的第四列(單元節點)包括被儲存在SRAM單元節點中的權重值(例如,與諸如可以在迴旋操作中使用的權重張量中的權重相對應)。
表2的第五列(電容器節點)圖示將作為電荷被儲存在電容器(諸如電容器523)上的結果乘積。
圖6圖示了在記憶體內計算(CIM)陣列操作期間各種信號的示例時序圖600。
在所圖示的實例中,時序圖600的第一行圖示預充電字線PCWL(例如,圖4的425a或圖5A的525)變低。在該實例中,低PCWL指示啟動「1」。當PCWL為低時,PMOS電晶體導通,這允許對電容器的充電(若權重為「1」的話)。第二行圖示讀取字線RWL(例如,圖4的讀取字線427a或圖5A的讀取字線527)。第三行圖示讀取位元線RBL(例如,圖4的418或圖5A的521),第四行圖示類比數位轉換器(ADC)讀出信號,並且第五行圖示重置信號。
例如,參考圖5A的電晶體511,當讀取字線RWL為高時,來自電容器523的電荷被逐漸傳遞到讀取位元線RBL。
總和電荷/電流/電壓(例如,圖4的403或從圖5A的位元線521總和電荷)被傳遞到比較器或ADC(例如,圖4的ADC 411),在該比較器或ADC處將總和電荷轉換成數位輸出(例如,數位信號/數值)。對電荷的求和可以發生在時序圖600的累加區域中,並且來自ADC的讀出(readout)可以與時序圖600的ADC讀出區域相關聯。在獲得ADC讀出之後,重置信號使所有電容器(例如,電容器423a-423i)放電,以便為處理下一組啟動輸入做準備。
本案的並行處理技術可以有助於涉及人工神經網路的任何類型的邊緣計算。該等技術可應用於推理階段或神經網路處理的任何其他階段。儘管所圖示的示例是基於二進位網路的(當不需要高精度時可以使用二進位網路),但是相同的概念適用於使用多位元權重的網路。
記憶體內迴旋處理的示例
圖7圖示了由記憶體內計算(CIM)陣列708實現的示例性迴旋層架構700。迴旋層架構700可以是迴旋神經網路的一部分(例如,如上文相對於圖1D所描述的)並且被設計成處理多維資料(諸如張量資料)。
在所圖示的實例中,迴旋層架構700的輸入702的尺寸為38(高度)×11(寬度)×1(深度)。迴旋層的輸出704的尺寸為34×10×64,其包括與作為迴旋程序的一部分應用的濾波器張量714的64個核心相對應的64個輸出通道。此外,在該實例中,濾波器張量714的64個核心之每一者核心(例如,示例性核心712)的尺寸為5×2×1(濾波器張量714的核心合起來相當於一個5×2×64濾波器)。
在迴旋程序期間,每個5×2×1核心與輸入702進行迴旋,以產生輸出704的一個34×10×1層。在迴旋期間,濾波器張量714(5×2×64)的640個權重可以被儲存在記憶體內計算(CIM)陣列708中,該CIM陣列在該示例中包括用於每個核心(亦即,64列)的一列。隨後,使用字線(例如,716)將每個5×2感受野的啟動(例如,感受野輸入706)輸入到CIM陣列708,並且將其乘以相對應的權重,以產生1×1×64輸出張量(例如,輸出張量710)。輸出張量704表示針對輸入702的所有感受野(例如,感受野輸入706)的1×1×64的各個輸出張量的累加。為簡單起見,圖7的CIM陣列708僅圖示針對CIM陣列708的輸入和輸出的幾個示例線。
在所圖示的實例中,CIM陣列708包括字線716(CIM陣列708經由字線716接收感受野(例如,感受野輸入706))以及位元線718(對應於CIM陣列708的列)。儘管未圖示,但是CIM陣列708亦可以包括預充電字線(PCWL)和讀取字線RWL(如上面相對於圖4和圖5所描述的)。
在該實例中,字線716用於初始權重定義。然而,一旦出現初始權重定義,啟動輸入就啟動CIM位元單元中專門設計的線以執行MAC操作。因此,位元線718和字線716的每個交叉點表示濾波器權重值,該濾波器權重值乘以字線716上的輸入啟動以產生乘積。隨後對沿著每個位元線718的各個乘積進行求和,以產生輸出張量710的相對應的輸出值。總和值可以是電荷、電流或電壓。在該實例中,在處理迴旋層的整個輸入702之後的輸出張量704的尺寸為34×10×64,儘管CIM陣列708一次僅產生64個濾波器輸出。因此,整個輸入702的處理可以在34×10或340個週期內完成。
用於深度式可分迴旋的CIM架構
基於記憶體內計算(CIM)的人工智慧(AI)硬體(HW)加速器可以用於各種任務,包括圖像、感測器和音訊處理AI任務。CIM可以有助於減少與從記憶體移動資料時的功耗相關聯的問題。在一些情況下,資料移動可能比計算消耗更多的功率。由於CIM的權重不變性質,使用CIM可以導致功率節省。換句話說,用於神經網路計算的權重可以被儲存在例如隨機存取記憶體(RAM)(諸如靜態隨機存取記憶體(SRAM)記憶體單元)中,從而允許在記憶體內執行計算而導致功耗降低。
在CIM架構的記憶體中實現的向量矩陣乘法塊通常可以很好地執行習知的迴旋神經網路處理,但是其對於支援深度式可分迴旋神經網路並不是高效的,這在許多現有技術的機器學習架構中可以找到。例如,現有的CIM架構大體不能在一個階段中執行深度式可分迴旋神經網路處理,因為每個多維濾波器使用不同的輸入通道。因此,同一行中的濾波器權重可以不共享針對不同通道的相同啟動輸入。由此,大體需要矩陣-矩陣乘法(MxM)架構來支援一個相位週期中的深度式可分迴旋處理。
用於解決這一缺點的傳統解決方案包括添加分開的數位MAC塊來應對針對可分迴旋的深度式部分的處理,而CIM陣列可以應對可分迴旋的點式部分。然而,此種混合方法導致資料移動增加,這可以抵消CIM架構的記憶體高效優勢。此外,混合方法大體涉及附加的硬體(例如,數位乘法累加(digital multiply-and-accumulate,DMAC)元件),這增加了空間和功率需求,並且增加了處理時延。此外,DMAC的使用可能影響處理操作的時序,並且引起超越模型輸出時序約束(或其他依賴性)。為解決該問題,各種折衷可能是必要的,諸如降低輸入資料的訊框速率、提高處理系統元件(包括CIM陣列)的時脈速率、減小輸入特徵大小等等。
本文描述的CIM架構改進了針對深度式可分迴旋的處理操作的時序效能。與使用更多硬體(例如,DMAC)及/或更多資料移動的習知架構相比,該等改進有益地導致了針對深度式可分迴旋操作的更少週期時間,並且實現了更高的每瓦特每秒總操作(total operations per second,TOPS)的處理能力,即TOPS/W。
圖8圖示根據本案的某些態樣的包括多個CIM陣列的CIM系統800。
如圖所示,CIM系統800包括為深度式(depthwise,DW)迴旋配置的CIM陣列802和為點式(pointwise,PW)迴旋配置的CIM陣列804。在一些態樣中,核心(例如,3×3核心)可以按對角方式在CIM陣列802的不同列上實現。例如,可以使用列810、812(例如,位元線)和九行814-1、814-2至814-8和814-9(例如,字線(WL),統稱為行814)上的CIM單元來實現核心806,以實現具有2位元權重參數的3×3濾波器。可以在列816、818和九行820-1至820-9(統稱為行820)上實現另一核心808,以實現另一3×3濾波器。因此,核心806和808在不同的行和列上實現,以便於針對DW的並行迴旋操作。亦即,啟動針對核心806、808中的一個的行和列不會影響針對核心806、808中的另一個的行和列。可以向核心806、808中的每一個提供不同的啟動輸入,從而允許核心806、808並行地操作。
每個核心的輸入啟動緩衝器可以用來自先前層的相對應的輸出通道補片(patch)來填充(例如,儲存)。例如,針對核心806的行(例如,行814)可以耦合到啟動緩衝器830-1、830-2至830-8和830-9(統稱為啟動緩衝器830),並且針對核心808的行(例如,行820)可以耦合到啟動緩衝器832-1至832-9(統稱為啟動緩衝器832)。
核心806(例如,在列810、812處)的輸出可以耦合到類比數位轉換器(ADC)840,並且核心808(例如,在列816、818處)的輸出可以耦合到ADC 842。例如,ADC 840的每個輸入可以從列810、812中的每一個接收行814的累加電荷,並且ADC 842的每個輸入可以從列816、818中的每一個接收行820的累加電荷,基於此,ADC 840、842中的每一個產生數位輸出信號。在考慮到儲存在列812中的位元以相應的權重表示比儲存在列810中的位元更低的重要性的情況下,ADC 840將來自列810、812的信號作為輸入並產生信號的數位表示。類似地,在考慮到儲存在列818中的位元以相應的權重表示比儲存在列816中的位元更低的重要性的情況下,ADC 842將來自列816、818的信號作為輸入並產生信號的數位表示。
儘管ADC 840、842被實現為從兩列接收信號以便於針對具有2位元權重參數的核心的類比數位轉換,但是本文描述的態樣可以被實現為被配置為從任何數目的列(例如三列,以執行針對具有3位元權重參數的核心的類比數位轉換)接收信號的ADC。
ADC 840、842的輸出可以耦合到非線性操作電路850(和緩衝器)以實現非線性操作,諸如整流線性單元(rectified linear unit,ReLU)和平均池化(average pooling,AvePool)等等。非線性操作允許建立輸入與輸出之間的複雜映射,從而允許學習和模型化複雜資料,諸如圖像、視訊、音訊以及非線性的或具有高維度的資料集。非線性操作電路850的輸出可以耦合到針對為PW迴旋配置的CIM陣列804的輸入啟動緩衝器860。CIM陣列804的輸出可以耦合到ADC 870,並且ADC 870的輸出可以被提供給非線性操作電路880,如圖所示。儘管圖示單個ADC 870,但是可以為CIM陣列804的不同列實現多個ADC。
儘管核心806、808中的每一個皆包括兩列,從而允許在核心的每一行中儲存2位元權重,但是核心806、808可以使用任何數量的合適的列來實現,諸如一列用於1位元二進位權重,或者兩列或更多列用於多位元權重。例如,核心806、808中的每一個可以使用三列來實現以便於將三位元權重參數儲存在核心的每一行中,或者使用單個列來實現以便於將一位元權重儲存在核心的每一行中。此外,儘管為了便於理解,核心806、808中的每一個皆被實現為用於3×3核心的九行,但是核心806、808可以用於任何數量的行來實現,以實現合適的核心大小。此外,可以使用CIM陣列的單元的子集來實現兩個以上的核心。例如,CIM陣列802可以包括一或多個其他核心,其中CIM陣列802的核心皆在不同的行和列上實現,以便於並行的迴旋操作。例如,核心806可以對應於相對於圖3A描述的核心304A,核心808可以對應於相對於圖3A描述的核心304B。與核心304C相對應的另一核心(圖8中未圖示)亦可以在與核心806、808不同的行和列上實現。
圖9圖示根據本案的某些態樣的經由圖8的CIM系統800進行信號處理的示例操作900。操作900可以從處理DW-CNN層開始。例如,在方塊904,DW迴旋權重可以被載入到CIM陣列的CIM單元中(例如,針對核心806、808),如本文所描述的。例如,在方塊904,DW 3×3核心權重可以被分組並寫入到圖8的CIM陣列802中。亦即,可以向列810、812提供2位元核心權重,並且可以封閉記憶體單元(例如,圖8所示的記憶體單元b01和b11)的傳輸閘開關,以將2位元核心權重儲存在記憶體單元中。濾波器權重可以以類似的方式儲存在核心806、808中的每一個的CIM單元的每一行中。
先前可能已經儲存在與活動核心(active kernel)相同列但不同行的記憶體單元中的權重可以被置零。例如,邏輯0可以被儲存在列816、818和行820處的記憶體單元(未圖示)中,以及列810、812和行814處的記憶體單元中。在一些情況下,在儲存針對核心806和808的權重之前,首先CIM陣列802可以被置零。
在一些實現方式中,CIM陣列可以被分割成拼片(tile)。例如,與活動核心在同一列上的塊可以以三態模式進行配置。在三態模式中,拼片的記憶體單元的輸出可以被配置為具有相對高的阻抗,從而有效地消除單元對輸出的影響。如本文所描述的,不同的列和行中的DW迴旋核心可以被堆疊。可以為每個後續層更新DW迴旋權重和PW迴旋權重兩者。
在方塊906,(例如,在啟動緩衝器830、832處的)DW迴旋啟動輸入可以在同一週期期間被應用於核心806、808的每組行,以使用兩個核心並行地產生DW迴旋輸出。
在方塊908,ADC 840、842可以將(例如,在列810、812和列816、818處的)核心806、808的迴旋輸出從類比域轉換到數位域。可以基於用於DW迴旋的ADC 840、842的輸出經由非線性操作電路850執行非線性(NL)操作。
在方塊910,來自非線性操作電路850的輸出可以被應用於針對CIM陣列804的(例如,儲存在輸入啟動緩衝器860中的)PW輸入以執行PW迴旋。在方塊912,ADC 870可以將來自CIM陣列804的PW迴旋輸出從類比域轉換到數位域。可以基於用於PW迴旋的ADC 870的輸出經由非線性操作電路880執行非線性操作。
經由在不同的行和列上實現核心,可以並行地執行迴旋操作,從而便於與習知實現相比更快的處理時間和更低的動態功率。換句話說,執行並行的迴旋操作允許在一個週期中處理多個濾波器,而不是在不同的週期中處理每個濾波器,從而節省了處理時間並降低了動態功率。在一些態樣中,每個核心可以被重複多次,以增加行利用率並減少ADC範圍壓縮,如本文更詳細描述的。
降低功耗並提高CIM陣列利用率的技術
圖10圖示根據本案的某些態樣的被劃分為拼片(tile)(亦稱為子庫(sub-bank))以節省功率的CIM陣列1000。作為實例,CIM陣列1000可以具有1024行和256列。可以啟用或禁用行和列(r×c)的各個拼片(例如,子庫)。例如,拼片可以包括128行和23列。作為一個實例,拼片陣列1002(例如,包括多個拼片,諸如拼片1004)針對DW-CNN迴旋可以是活動的,而剩餘的拼片可以被禁用。換句話說,剩餘的拼片可以以三態模式進行配置。
在一些實現方式中,行和列填充單元(filler cell)可以在CIM陣列1000中實現。填充電路(例如,緩衝器或開關)可以用於啟用或禁用CIM陣列的拼片以節省功率。列填充單元可以是AND閘控邏輯,並且行填充單元可以是寫入位元線上(write bit-line,WBL)的緩衝器和讀取位元線(read bit-line,RBL)上的傳輸開關。傳輸開關的大小和類型可以基於線性規範來進行配置。
DW迴旋可以使用相對小的核心尺寸(3×3、5×5、……),並且CIM陣列的未充分利用可能由於範圍壓縮(例如,神經網路的輸出由於非線性啟動而分佈在小範圍內)而影響輸出訊雜比(SNR)。本案的某些態樣針對用於提高SNR的技術。例如,可以使用細粒度拼片設計來減輕對SNR的影響,如本文相對於圖11更詳細描述的。
圖11圖示根據本案的某些態樣的具有對角堆疊的核心的CIM陣列802。可以在CIM陣列802中實現各種對角堆疊的核心。例如,CIM陣列802可以包括針對核心806和808的CIM單元(如相對於圖8所論述的,以及針對核心1108、1110、1112、1114、1116的CIM單元(各自在CIM陣列802的不同的行和列上實現)。如圖所示,CIM陣列802可以被分割成拼片,諸如拼片1104、1106。不包括至少一部分核心的CIM陣列的每個拼片(例如,拼片1106)可以被停用以節省功率。
在一些態樣中,針對運行DW迴旋(例如,16行和32列)的CIM庫(bank),可以使用相對小的拼片大小(例如,在晶片設計期間選擇),以提高CIM陣列利用率並節省功率。使用較小的拼片大小提高了活動CIM單元的利用率,活動CIM單元是並非被禁用的拼片的一部分的單元。
作為實例,可以設計三個CIM單元組來執行神經網路架構逆瓶頸。逆瓶頸操作大體是指用於擴展輸入特徵、接著進行DW迴旋並經由PW迴旋減小DW輸出尺寸的操作。第一CIM單元組(CIM1)可用於瓶頸操作,第二CIM單元組(CIM2)可以用於DW迴旋操作,並且第三CIM單元組(CIM3)可以用於瓶頸操作。在一些態樣中,用於DW迴旋的CIM2可以具有更細的拼片排列(例如,具有16行以實現3×3核心,或者具有32行以實現5×5核心)以提高CIM陣列利用率和節省功率,而CIM1和CIM3可以具有粗粒度拼片(例如,64或128行)以避免填充單元對非DW迴旋操作的影響(例如,因為針對CIM陣列使用較小的拼片導致針對CIM陣列的更大數量的填充單元)。以此種方式,針對DW操作和非DW操作,CIM陣列庫的再使用性可以加倍。
作為實例,在粗粒度拼片(例如,其中每個拼片使用具有1024行的CIM陣列的64行和32列)的情況下,平均的(例如,近似的)CIM利用率針對3×3核心可以是13.08%,並且針對5×5核心可以是31.44%。換句話說,CIM陣列中僅有13.08%的活動記憶體單元可以用於3×3核心,並且CIM陣列中由31.44%的活動記憶體單元可以用於5×5核心。在另一方面,在每個拼片使用16行和32列的細粒度拼片的情況下,以及在具有1024行的CIM陣列的情況下,平均CIM利用率針對3×3核心可以是40.46%,並且針對5×5核心可以是47.64%。在具有1024行的CIM陣列的每個拼片使用32行和32列的細粒度拼片的情況下,平均CIM利用率針對3×3核心可以是24.18%,並且針對5×5核心可以是47.64%。因此,針對(例如,用於DW迴旋的)較小核心大小的濾波器,細拼片提高了CIM陣列利用率。提高CIM陣列利用率導致更高百分比的活動記憶體單元被利用,從而減少由未被利用的活動記憶體單元所導致的功率損耗。
在一些態樣中,可以經由選擇更接近核心大小的拼片大小來提高利用率。例如,如圖11所示,16的拼片大小(例如,如針對拼片1104所示)可以用於9的核心大小(例如9行,如針對核心806所示)。拼片大小可以是核心大小的2次冪(對數標度),以提高應對不同神經網路模型的靈活性。在一些態樣中,可以對核心進行重複以提高行利用率並提高ADC SNR,如相對於圖12更詳細描述的。
圖12圖示根據本案的某些態樣的用重複的核心實現的CIM陣列。
如圖所示,可以對多個核心進行重複以形成核心組。例如,可以在同一列上實現多個核心,諸如核心806、1204或核心808、1208。相同的權重參數可以被儲存在同一列上的核心組的重複的核心(例如,核心806、1204)中,並且相同的啟動輸入可以被提供給重複的核心。因此,重複的核心可以產生在每一列(輸出)處進行組合的相同輸出信號,從而導致在針對重複的核心的輸出處的動態範圍增加。例如,使用兩個重複的核心可能導致在被提供給ADC(例如,ADC 840)的重複的核心的輸出處的動態範圍加倍。增加在核心的輸出處的動態範圍便於以更高精度進行類比數位轉換,因為其可以利用ADC的更寬範圍。換句話說,使用ADC輸入的整個範圍允許ADC的數位輸出更精確地識別ADC的類比輸入和提高ADC的SNR。
在一些情況下,可在CIM陣列中實現的DW迴旋通道的數量可能受到CIM陣列的尺寸的限制。例如,若實現3×3濾波器,則針對具有1024行的CIM陣列,可以實現113個通道(例如,因為113×9小於1024)。換句話說,用於DW迴旋的DW核心可能由於與CIM陣列相關聯的行數限制或列數限制而不適合一個CIM陣列。因此,輸入啟動和DW迴旋權重可以由定序器(sequencer)排列,使得可以計算部分DW迴旋通道總和。
在一些情況下,可在CIM陣列中實現的最大核心數量可能少於針對所有通道的核心的總數。可以在CIM陣列中實現最大數量的核心。隨後,可以處理所有相對應的通道輸入,以產生部分通道輸出。隨後,該陣列可以被載入有下一批核心,並且可以處理該部分輸出,直到處理所有核心。作為另一實例,可以基於後續PW層尺寸資訊來決定DW迴旋輸入批量大小。可以多次載入核心來處理輸入批量大小。隨後,部分DW輸出可以被饋送到下一PW迴旋層,以產生部分瓶頸輸出。
用於在CIM陣列中執行神經網路處理的示例操作
圖13是示出根據本案的某些態樣的用於神經網路中的信號處理的示例操作1300的流程圖。操作1300可以由控制器(諸如相對於圖14所描述的CIM控制器1432)來執行。
操作1300在方塊1305開始,控制器經由一或多個第一列(例如,圖8的810、812)載入具有針對第一核心(例如,圖8的核心806)的第一複數個權重參數的第一記憶體內計算(CIM)單元集合以執行神經網路計算(例如,DW神經網路計算),第一CIM單元集合具有CIM陣列(例如,圖8的CIM陣列802)的一或多個第一列和第一複數個行(例如,圖8的行814)。在方塊1310,控制器經由一或多個第二列(例如,圖8的列816、818)載入具有針對第二核心(例如,圖8的核心808)的第二複數個權重參數的第二CIM單元集合以執行神經網路計算,第二CIM單元集合具有CIM陣列的一或多個第二列和第二複數個行(例如,圖8的行820)。例如,第一CIM單元集合可以包括CIM陣列的單元的子集,並且第二CIM單元集合包括CIM陣列的另一單元的子集。在一些態樣中,一或多個第一列可以不同於一或多個第二列,並且第一複數個行可以不同於第二複數個行。在方塊1315,控制器可以藉由將第一啟動輸入應用於第一複數個行並將第二啟動輸入應用於第二複數個行來執行神經網路計算。
在一些態樣中,操作1300亦可以包括載入具有針對第三核心的第三複數個權重的另一CIM陣列(例如,圖8的CIM陣列804)以執行點式神經網路計算。控制器亦可以基於來自深度式神經網路計算的輸出信號產生第二CIM陣列的(例如,經由圖8的輸入啟動緩衝器860提供的)輸入信號。
在一些態樣中,操作1300亦可以包括藉由將一或多個第一列處的電壓從類比域轉換到數位域來(例如,經由圖8的ADC 840)產生第一數位信號,以及藉由將一或多個第二列處的電壓從類比域轉換到數位域來(例如,經由圖8的ADC 842)產生第二數位信號。操作1300亦可以包括基於第一數位信號和第二數位信號(例如,經由非線性啟動電路(ACT)850)執行非線性啟動操作。
在一些態樣中,可以對核心進行重複以提高CIM陣列利用率並增加針對ADC的輸入範圍壓縮。例如,控制器亦可以經由一或多個第一列載入具有針對第三核心(例如,圖12的核心1204)的第一複數個權重參數的第三CIM單元以執行神經網路計算。第三CIM單元可以在CIM陣列的一或多個第一列和第三複數個行上。控制器可以藉由至少將第一啟動輸入(例如,提供給第一核心的相同啟動輸入)應用於第三複數個行來執行神經網路計算。如本文所描述的,權重參數的每個位元可以經由核心的列進行儲存。例如,一或多個第一列的數量可以與第一複數個權重參數之每一者權重參數的一或多個位元的數量相關聯,並且一或多個第二列的數量可以與第二複數個權重參數之每一者權重參數的一或多個位元的數量相關聯。
用於執行相位選擇迴旋的示例處理系統
圖14圖示示例電子設備1400。電子設備1400可以被配置為執行本文描述的方法,包括相對於圖13描述的操作1300。
電子設備1400包括中央處理單元(CPU)1402,CPU 1402在一些態樣中可以是多核CPU。在CPU 1402處執行的指令可以例如從與CPU 1402相關聯的程式記憶體載入,或者可以從記憶體1424載入。
電子設備1400亦包括對特定功能定製的附加處理塊,諸如圖形處理單元(GPU)1404、數位訊號處理器(DSP)1406、神經處理單元(NPU)1408、多媒體處理塊1410、多媒體處理塊1410和無線連線性處理塊1412。在一個實現方式中,NPU 1408在CPU 1402、GPU 1404及/或DSP 1406中的一或多個中實現。
在一些態樣中,無線連線性處理塊1412可以包括例如用於第三代(3G)連線性、第四代(4G)連線性(例如,4G LTE)、第五代連線性(例如,5G或NR)、Wi-Fi連線性、藍芽連線性和無線資料傳輸標準的元件。無線連線性處理塊1412亦連接到一或多個天線1414,以便於無線通訊。
電子設備1400亦可以包括與任何形式的感測器相關聯的一或多個感測器處理器1416、與任何形式的圖像感測器相關聯的一或多個圖像信號處理器(ISP)1418及/或可以包括基於衛星的定位系統元件(例如,GPS或GLONASS)以及慣性定位系統元件的導航處理器1420。
電子設備1400亦可以包括一或多個輸入及/或輸出設備1422,諸如螢幕、觸敏表面(包括觸敏顯示器)、實體按鈕、揚聲器、麥克風等。在一些態樣中,電子設備1400的一或多個處理器可以基於ARM指令集。
電子設備1400亦包括記憶體1424,記憶體1424表示一或多個靜態及/或動態儲存裝置器,諸如動態隨機存取記憶體、基於快閃記憶體的靜態記憶體等。在該實例中,記憶體1424包括電腦可執行元件,電腦可執行元件可以由電子設備1400的一或多個前述處理器或CIM控制器1432來執行。例如,電子設備1400可以包括CIM電路1426,CIM電路1426包括一或多個CIM陣列,諸如本文描述的CIM陣列802和CIM陣列804。CIM電路1426可以經由CIM控制器1432來控制。例如,在一些態樣中,記憶體1424可以包括用於載入(例如,載入具有權重參數的CIM單元)的代碼1424A、用於計算(例如,經由應用啟動輸入來執行神經網路計算)的代碼1424B。如圖所示,CIM控制器1432可以包括用於載入(例如,載入具有權重參數的CIM單元)的電路1428A和用於計算(例如,藉由應用啟動輸入來執行神經網路計算)的電路1428B。所圖示的元件以及其他未圖示的元件可以被配置為執行本文描述的方法的各個態樣。
在一些態樣中,諸如在電子設備1400是伺服器設備的情況下,可以從圖14圖示的態樣中省去各個態樣,諸如多媒體元件1410、無線連線性元件1412、天線1414、感測器1416、ISP 1418或導航1420中的一或多個。
示例條款
態樣1. 一種用於神經網路中的信號處理的裝置,包括:第一記憶體內計算(CIM)單元,被配置為作為用於神經網路計算的第一核心,第一CIM單元集合包括CIM陣列的一或多個第一列和第一複數個行;及第二CIM單元集合,被配置為作為用於神經網路計算的第二核心,第二CIM單元集合包括CIM陣列的一或多個第二列和第二複數個行,其中:一或多個第一列不同於一或多個第二列,並且第一複數個行不同於第二複數個行。
態樣2. 根據態樣1之裝置,其中第一CIM單元集合包括CIM陣列的單元的子集,並且第二CIM單元集合包括CIM陣列的另一單元的子集。
態樣3. 根據態樣1至2中任一態樣所述的裝置,其中神經網路計算包括深度式(DW)神經網路計算。
態樣4. 根據態樣3之裝置,還包括:被配置為作為用於點式(PW)神經網路計算的第三核心的另一CIM陣列,其中對另一CIM陣列的輸入信號基於來自CIM陣列的輸出信號而被產生。
態樣5. 根據態樣1至4中任一態樣所述的裝置,還包括:第一類比數位轉換器(ADC),被耦合到一或多個第一列;及第二ADC,被耦合到一或多個第二列。
態樣6. 根據態樣5之裝置,還包括被耦合到第一ADC和第二ADC的輸出的非線性啟動電路。
態樣7. 根據態樣1至6中任一態樣所述的裝置,還包括被配置為作為用於神經網路計算的第三核心的第三CIM單元,第三CIM單元位於CIM陣列的一或多個第一列和第三複數個行上。
態樣8. 根據態樣7之裝置,其中相同的權重參數被配置為被儲存在第一CIM單元集合和第三CIM單元中。
態樣9. 根據態樣1至8中任一態樣所述的裝置,其中:第一複數個行的每一行上的第一CIM單元集合中的一或多個CIM單元被配置為儲存第一權重參數;並且第二複數個行的每一行上的第二CIM單元集合中的一或多個CIM單元被配置為儲存第二權重參數。
態樣10. 根據態樣9之裝置,其中:一或多個第一列的數量與第一權重參數的一或多個位元的數量相關聯;並且一或多個第二列的數量與第二權重參數的一或多個位元的數量相關聯。
態樣11. 一種用於神經網路中的信號處理的方法,包括:經由一或多個第一列載入具有針對第一核心的第一複數個權重參數的第一記憶體內計算(CIM)單元以執行神經網路計算,第一CIM單元集合包括CIM陣列的一或多個第一列和第一複數個行;經由一或多個第二列載入具有針對第二核心的第二複數個權重參數的第二CIM單元集合以執行神經網路計算,第二CIM單元集合包括CIM陣列的一或多個第二列和第二複數個行,其中一或多個第一列不同於一或多個第二列,並且其中第一複數個行不同於第二複數個行;及藉由將第一啟動輸入應用於第一複數個行並將第二啟動輸入應用於第二複數個行來執行神經網路計算。
態樣12. 根據態樣11之方法,其中第一CIM單元集合包括CIM陣列的單元的子集,並且第二CIM單元集合包括CIM陣列的另一單元的子集。
態樣13. 根據態樣11至12中任一態樣所述的方法,其中神經網路計算包括深度式(DW)神經網路計算。
態樣14. 根據態樣13之方法,還包括:載入具有針對第三核心的第三複數個權重的另一CIM陣列以執行點式(PW)神經網路計算;及基於來自DW神經網路計算的輸出信號產生另一CIM陣列的輸入信號。
態樣15. 根據態樣11至14中任一態樣所述的方法,還包括:藉由將一或多個第一列處的電壓從類比域轉換到數位域來產生第一數位信號;及藉由將一或多個第二列處的電壓從類比域轉換到數位域來產生第二數位信號。
態樣16. 根據態樣15之方法,還包括基於第一數位信號和第二數位信號執行非線性啟動操作。
態樣17. 根據態樣11至16中任一態樣所述的方法,還包括:經由一或多個第一列載入具有針對第三核心的第一複數個權重參數的第三CIM單元以執行神經網路計算,第三CIM單元在記憶體的一或多個第一列和第三複數個行上,其中執行神經網路計算還包括將第一啟動輸入應用於第三複數個行。
態樣18. 根據態樣11至17中任一態樣所述的方法,其中:一或多個第一列的數量與第一複數個權重參數之每一者權重參數的一或多個位元的數量相關聯;並且一或多個第二列的數量與第二複數個權重參數之每一者權重參數的一或多個位元的數量相關聯。
態樣19. 一種非暫時性電腦可讀取媒體,包括指令,該等指令當由處理系統的一或多個處理器執行時,使處理系統執行神經網路中的信號處理方法,該方法包括:經由一或多個第一列載入具有針對第一核心的第一複數個權重參數的第一記憶體內計算(CIM)單元以執行神經網路計算,第一CIM單元集合包括CIM陣列的一或多個第一列和第一複數個行;經由一或多個第二列載入具有針對第二核心的第二複數個權重參數的第二CIM單元集合以執行神經網路計算,第二CIM單元集合包括CIM陣列的一或多個第二列和第二複數個行,其中一或多個第一列不同於一或多個第二列,並且其中第一複數個行不同於第二複數個行;及藉由將第一啟動輸入應用於第一複數個行並將第二啟動輸入應用於第二複數個行來執行神經網路計算。
附加考慮
提供前文的描述是為了使任何熟習此項技術者能夠實踐本文描述的各個態樣。本文論述的示例不限制請求項中闡述的範圍、適用性或態樣。對該等態樣的各種修改對於熟習此項技術者來說將是顯而易見的,並且本文定義的通用原理可以應用於其他態樣。例如,在不脫離本案的範圍的情況下,可以對所論述的元素的功能和排列進行改變。各種示例可以適當地省去、替換或添加各種程程序或元件。例如,所描述的方法可以按照與所描述次序不同的次序來執行,並且可以添加、省去或組合各種步驟。此外,相對於一些示例而描述的特徵可以在一些其他示例中組合。例如,可以使用本文闡述的任何數量的態樣來實現裝置或實踐方法。此外,本案的範圍意欲覆蓋此種裝置或方法,該裝置或方法使用除了本文闡述的本案的各個態樣之外或與之不同的其他結構、功能或結構和功能來實踐。應該理解,本文揭露的本案的任何態樣可以由請求項的一或多個元素來體現。
如本文所使用的,單詞「示例性」意味著「用作示例、實例或說明」。本文描述為「示例性」的任何態樣不一定被解釋為比其他態樣更優選或更有利。
如本文所使用的,涉及項目列表「中的至少一個」的短語是指彼等項目的任何組合,包括單個成員。作為實例,「a、b或c中的至少一個」意欲涵蓋a、b、c、a-b、a-c、b-c和a-b-c,以及具有多個相同元素的任何組合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b、b-b-b、b-b-c、c-c和c-c-c,或者a、b和c的任何其他排序)。
如本文所使用的,術語「決定」涵蓋各種各樣的動作。例如,「決定」可以包括操作、計算、處理、推導、調查、檢視(例如,在表格、資料庫或另一資料結構中檢視)、查明等。此外,「決定」可以包括接收(例如,接收到資訊)、存取(例如,存取記憶體內的資料)等。此外,「決定」可以包括解析、選擇、挑選、建立等。
本文揭露的方法包括用於實現該方法的一或多個步驟或動作。在不脫離請求項的範圍的情況下,方法步驟及/或動作可以彼此互換。換句話說,除非指定了步驟或動作的特定次序,否則在不脫離請求項的範圍的情況下,可以修改特定步驟及/或動作的次序及/或使用。此外,如前述的方法的各種操作可以由能夠執行相應功能的任何合適的構件來執行。該等構件可以包括各種硬體及/或軟體元件及/或模組,包括但不限於電路、特殊應用積體電路(ASIC)或處理器。大體上,在圖中圖示操作的情況下,彼等操作可以具有相對應的具有相似編號的配對的構件加功能元件。
以下請求項不意欲限於本文所示的態樣,而是符合與請求項的語言一致的全部範圍。在請求項內,除非特別聲明,否則以單數形式提及的元素並不意欲意味著「一個且只有一個」,而是「一或多個」。除非特別聲明,否則術語「一些」是指一或多個。不根據專利法的規定來解釋請求項元素,除非使用短語「用於……的構件」明確敘述該元素,或者在方法請求項的情況下使用短語「用於……步驟」敘述該元素。一般熟習此項技術者已知的或以後將會知道的貫穿本案所描述的各個態樣的元素的所有結構和功能均等物經由引用而被明確地結合於此,並且意欲被請求項所涵蓋。此外,本文揭露的任何內容皆不意欲奉獻給公眾,不管此種揭露是否在請求項中明確敘述。
100:DCN
102:全連接神經網路
104:局部連接神經網路
106:迴旋神經網路
108:連接強度
110:ADC
112:值
114:值
116:值
118:第一組特徵圖
120:第二組特徵圖
122:輸出
124:全連接層
126:圖像
128:輸出特徵向量
130:圖像擷取裝置
132:迴旋層
204:迴旋核心
206:特徵圖
302:輸入圖像
304:核心
304A-C:核心
306:特徵圖
308:核心
310:特徵圖
400:示例性記憶體內計算(CIM)陣列
403:總和電荷/電流/電壓
405a:SRAM位元單元
405b:SRAM位元單元
405c:SRAM位元單元
405d:SRAM位元單元
405e:SRAM位元單元
405f:SRAM位元單元
405g:SRAM位元單元
405h:SRAM位元單元
405i:SRAM位元單元
410a:ADC
410b:ADC
410c:ADC
411a:PMOS電晶體
413:NMOS電晶體
413a:NMOS電晶體
413b:NMOS電晶體
413c:NMOS電晶體
413d:NMOS電晶體
413e:NMOS電晶體
413f:NMOS電晶體
413g:NMOS電晶體
413h:NMOS電晶體
413i:NMOS電晶體
418a:位元線
418b:位元線
418c:位元線
423a:節點或電容器
423b:節點或電容器
423c:節點或電容器
423d:節點或電容器
423e:節點或電容器
423f:節點或電容器
423g:節點或電容器
423h:節點或電容器
423i:節點或電容器
425a:預充電字線
425b:預充電字線
425c:預充電字線
427a:讀取字線
427b:讀取字線
427c:讀取字線
500:示例性位元單元
501:靜態隨機存取記憶體(SRAM)單元
511:電晶體
513:電晶體
516:寫入字線
517:節點
519:節點
521:位元線
523:電容器
525:預充電字線(PCWL)
527:讀取字線
550:另一示例性位元單元
552:附加預充電字線
554:附加電晶體
600:示例時序圖
700:示例性迴旋層架構
702:迴旋層的輸入
704:迴旋層的輸出
706:感受野輸入
708:CIM陣列
710:輸出張量
712:示例性核心
714:濾波器張量
716:字線
718:位元線
800:CIM系統
802:CIM陣列
804:CIM陣列
806:核心
808:另一核心
810:列
812:列
814-1:行
814-2:行
814-8:行
814-9:行
816:列
818:列
820-1:行
820-9:行
830-1:啟動緩衝器
830-2:啟動緩衝器
830-8:啟動緩衝器
830-9:啟動緩衝器
832-1:啟動緩衝器
832-9:啟動緩衝器
840:類比數位轉換器(ADC)
842:ADC
850:非線性操作電路
860:輸入啟動緩衝器
870:ADC
880:非線性操作電路
900:操作
904:方塊
906:方塊
908:方塊
910:方塊
912:方塊
1000:CIM陣列
1002:拼片陣列
1004:拼片
1104:拼片
1106:拼片
1108:核心
1110:核心
1112:核心
1114:核心
1116:核心
1204:核心
1208:核心
1300:操作
1305:方塊
1310:方塊
1315:方塊
1400:電子設備
1402:CPU
1404:圖形處理單元(GPU)
1406:數位訊號處理器(DSP)
1408:神經處理單元(NPU)
1410:多媒體處理塊
1412:無線連線性處理塊
1414:天線
1416:感測器處理器
1418:圖像信號處理器(ISP)
1420:導航處理器
1422:輸入及/或輸出設備
1424:記憶體
1424A:代碼
1424B:代碼
1426:CIM電路
1428A:電路
1428B:電路
ADC:類比數位轉換器
PCWL:預充電字線
PCWL1:預充電字線
PCWL2:預充電字線
RBL:讀取位元線
RWL:讀取字線
WBBL:位元條線
WBL:寫入位元線
WWL:寫入字線
附圖圖示了一或多個態樣中的某些態樣,且因此不應被認為是對本案的範圍的限制。
圖1A-圖1D圖示了各種類型的神經網路的實例。
圖2圖示了習知迴旋操作的實例。
圖3A和圖3B圖示了深度式可分迴旋操作的實例。
圖4圖示被配置用於執行機器學習模型計算的示例記憶體內計算(CIM)陣列。
圖5A-圖5B圖示了可以表示圖4中的位元單元的示例性位元單元的附加細節。
圖6圖示了在記憶體內計算(CIM)陣列操作期間各種信號的示例時序圖。
圖7圖示了由記憶體內計算(CIM)陣列實現的示例性迴旋層架構。
圖8圖示根據本案的某些態樣的包括多個CIM陣列的CIM架構。
圖9圖示根據本案的某些態樣的用於經由CIM架構進行訊號傳遞處理的示例操作。
圖10圖示根據本案的某些態樣的被劃分成子庫以節省功率的CIM陣列。
圖11圖示根據本案的某些態樣的具有對角堆疊核心的CIM陣列。
圖12圖示根據本案的某些態樣的用重複的核心實現的CIM陣列。
圖13是示出根據本案的某些態樣的用於神經網路中的信號處理的示例操作的流程圖。
圖14圖示根據本案的某些態樣的被配置為執行用於神經網路中的信號處理的操作的示例電子設備。
為了便於理解,在可能的情況下,使用相同的元件符號來表示附圖中共有的相同元素。預期一個態樣的元素和特徵可以有益地結合到其他態樣中,而無需進一步敘述。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
800:CIM系統
802:CIM陣列
804:CIM陣列
806:核心
808:另一核心
810:列
812:列
814-1:行
814-2:行
814-8:行
814-9:行
816:列
818:列
820-1:行
820-9:行
830-1:啟動緩衝器
830-2:啟動緩衝器
830-8:啟動緩衝器
830-9:啟動緩衝器
832-1:啟動緩衝器
832-9:啟動緩衝器
840:類比數位轉換器(ADC)
842:ADC
850:非線性操作電路
860:輸入啟動緩衝器
870:ADC
880:非線性操作電路
Claims (19)
- 一種裝置,包括: 一第一記憶體內計算(CIM)單元集合,被配置為作為用於一神經網路計算的一第一核心,該第一CIM單元集合包括CIM陣列的一或多個第一列和一第一複數個行;及 一第二CIM單元集合,被配置為作為用於該神經網路計算的一第二核心,該第二CIM單元集合包括該CIM陣列的一或多個第二列和一第二複數個行,其中: 該一或多個第一列不同於該一或多個第二列,並且 該第一複數個行不同於該第二複數個行。
- 根據請求項1之裝置,其中該第一CIM單元集合包括該CIM陣列的單元的一子集,並且該第二CIM單元集合包括該CIM陣列的另一單元的子集。
- 根據請求項1之裝置,其中該神經網路計算包括深度式(DW)神經網路計算。
- 根據請求項3之裝置,還包括: 另一CIM陣列,被配置為作為用於一點式(PW)神經網路計算的一第三核心, 其中對該另一CIM陣列的輸入信號基於來自該CIM陣列的輸出信號而被產生。
- 根據請求項1之裝置,還包括: 一第一類比數位轉換器(ADC),被耦合到該一或多個第一列;及 一第二ADC,被耦合到該一或多個第二列。
- 根據請求項5之裝置,還包括被耦合到該第一ADC和該第二ADC的輸出的一非線性啟動電路。
- 根據請求項1之裝置,還包括被配置為作為用於該神經網路計算的一第三核心的一第三CIM單元集合,該第三CIM單元集合在該CIM陣列的一或多個第一列和一第三複數個行上。
- 根據請求項7之裝置,其中相同的權重參數被配置為被儲存在該第一CIM單元集合和該第三CIM單元集合中。
- 根據請求項1之裝置,其中: 該第一複數個行的每一行上的該第一CIM單元集合中的一或多個CIM單元被配置為儲存一第一權重參數;並且 該第二複數個行的每一行上的該第二CIM單元集合中的一或多個CIM單元被配置為儲存一第二權重參數。
- 根據請求項9之裝置,其中: 該一或多個第一列的一數量與該第一權重參數的一或多個位的一數量相關聯;及 該一或多個第二列的一數量與該第二權重參數的一或多個位的一數量相關聯。
- 一種方法,包括: 經由一或多個第一列載入具有針對一第一核心的一第一複數個權重參數的一第一記憶體內計算(CIM)單元集合以執行一神經網路計算,該第一CIM單元集合包括一CIM陣列的一或多個第一列和一第一複數個行; 經由一或多個第二列載入具有針對一第二核心的一第二複數個權重參數的第二CIM單元集合以執行該神經網路計算,該第二CIM單元集合包括該CIM陣列的一或多個第二列和一第二複數個行,其中該一或多個第一列不同於該一或多個第二列,並且其中該第一複數個行不同於該第二複數個行;及 藉由將第一啟動輸入應用於該第一複數個行並將第二啟動輸入應用於該第二複數個行來執行該神經網路計算。
- 根據請求項11之方法,其中該第一CIM單元集合包括該CIM陣列的單元的一子集,並且該第二CIM單元集合包括該CIM陣列的另一單元的子集。
- 根據請求項11之方法,其中該神經網路計算包括一深度式(DW)神經網路計算。
- 根據請求項13之方法,還包括: 載入具有針對一第三核心的一第三複數個權重的另一CIM陣列以執行一點式(PW)神經網路計算;及 基於來自該DW神經網路計算的輸出信號產生該另一CIM陣列的輸入信號。
- 根據請求項11之方法,還包括: 藉由將該一或多個第一列處的一電壓從一類比域轉換到一數位域來產生一第一數位信號;及 藉由將該一或多個第二列處的一電壓從該類比域轉換到該數位域來產生一第二數位信號。
- 根據請求項15之方法,還包括基於該第一數位信號和該第二數位信號執行一非線性啟動操作。
- 根據請求項11之方法,還包括: 經由該一或多個第一列載入具有針對一第三核心的該第一多個權重參數的一第三CIM單元集合以執行該神經網路計算,該第三CIM單元集合在該記憶體的一或多個第一列和一第三複數個行上,其中執行該神經網路計算還包括將該第一啟動輸入應用於該第三複數個行。
- 根據請求項11之方法,其中: 該一或多個第一列的一數量與該第一複數個權重參數之每一者權重參數的一或多個位元的一數量相關聯;及 該一或多個第二列的一數量與該第二複數個權重參數之每一者權重參數的一或多個位的一數量相關聯。
- 一種非暫時性電腦可讀取媒體,包括指令,該等指令當由一處理系統的一或多個處理器執行時,使該處理系統執行一種方法,該方法包括: 經由一或多個第一列載入具有針對一第一核心的一第一複數個權重參數的一第一記憶體內計算(CIM)單元集合以執行一神經網路計算,該第一CIM單元集合包括一CIM陣列的一或多個第一列和一第一複數個行; 經由一或多個第二列載入具有針對一第二核心的一第二複數個權重參數的一第二CIM單元集合以執行該神經網路計算,該第二CIM單元集合包括該CIM陣列的一或多個第二列和一第二複數個行,其中該一或多個第一列不同於該一或多個第二列,並且其中該第一複數個行不同於該第二複數個行;及 藉由將第一啟動輸入應用於該第一複數個行並將第二啟動輸入應用於該第二複數個行來執行該神經網路計算。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/361,784 US20220414444A1 (en) | 2021-06-29 | 2021-06-29 | Computation in memory (cim) architecture and dataflow supporting a depth-wise convolutional neural network (cnn) |
| US17/361,784 | 2021-06-29 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202324210A true TW202324210A (zh) | 2023-06-16 |
Family
ID=82701682
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111124296A TW202324210A (zh) | 2021-06-29 | 2022-06-29 | 支援深度式迴旋神經網路(cnn)的記憶體內計算(cim)架構和資料串流 |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US20220414444A1 (zh) |
| EP (1) | EP4364047A1 (zh) |
| JP (1) | JP2024525332A (zh) |
| KR (1) | KR20240025523A (zh) |
| CN (1) | CN117546178A (zh) |
| BR (1) | BR112023026704A2 (zh) |
| TW (1) | TW202324210A (zh) |
| WO (1) | WO2023279002A1 (zh) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR102881284B1 (ko) * | 2021-07-07 | 2025-11-05 | 삼성전자주식회사 | 뉴런 모듈 회로 장치 및 그 동작 방법 |
| CN114298297B (zh) * | 2021-11-04 | 2025-07-25 | 清华大学 | 存内计算装置、芯片及电子设备 |
| US11935586B2 (en) * | 2022-02-11 | 2024-03-19 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory device and method for computing-in-memory (CIM) |
| CN117494651B (zh) * | 2023-11-14 | 2025-01-17 | 合芯科技(苏州)有限公司 | 基于机器学习的sram位单元的优化设计方法、装置、介质及终端 |
| KR102837526B1 (ko) * | 2024-01-26 | 2025-07-22 | 연세대학교 산학협력단 | 하이브리드 메모리 기반 cim 및 이의 가중치 저장 방법 |
| KR102842772B1 (ko) * | 2024-05-02 | 2025-08-06 | 한양대학교 에리카산학협력단 | 데이터 처리 장치 및 그 제어 방법 |
| US20250385684A1 (en) * | 2024-06-12 | 2025-12-18 | Macronix International Co., Ltd. | Analog-to-digital converter |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12111878B2 (en) * | 2018-10-12 | 2024-10-08 | International Business Machines Corporation | Efficient processing of convolutional neural network layers using analog-memory-based hardware |
| WO2020139895A1 (en) * | 2018-12-24 | 2020-07-02 | The Trustees Of Columbia University In The City Of New York | Circuits and methods for in-memory computing |
| US11188815B2 (en) * | 2019-01-07 | 2021-11-30 | International Business Machines Corporation | Weight shifting for neuromorphic synapse array |
| US20220164639A1 (en) * | 2019-03-28 | 2022-05-26 | Agency For Science, Technology And Research | A system for mapping a neural network architecture onto a computing core and a method of mapping a neural network architecture onto a computing core |
| US11531898B2 (en) * | 2019-05-16 | 2022-12-20 | International Business Machines Corporation | Training of artificial neural networks |
| KR102706475B1 (ko) * | 2019-06-26 | 2024-09-12 | 삼성전자주식회사 | 아날로그-디지털 컨버터 및 이를 포함하는 뉴로모픽 컴퓨팅 장치 |
| US20210073317A1 (en) * | 2019-09-05 | 2021-03-11 | International Business Machines Corporation | Performing dot product operations using a memristive crossbar array |
| US11790241B2 (en) * | 2019-09-09 | 2023-10-17 | Qualcomm Incorporated | Systems and methods for modifying neural networks for binary processing applications |
| US11562205B2 (en) * | 2019-09-19 | 2023-01-24 | Qualcomm Incorporated | Parallel processing of a convolutional layer of a neural network with compute-in-memory array |
| US11562240B2 (en) * | 2020-05-27 | 2023-01-24 | International Business Machines Corporation | Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference |
| WO2022006733A1 (en) * | 2020-07-07 | 2022-01-13 | NeoNexus Pte. Ltd. | Apparatus and method for matrix multiplication using processing-in-memory |
| US12254395B2 (en) * | 2020-09-21 | 2025-03-18 | Hewlett Packard Enterprise Development Lp | System and method for processing convolutions on crossbar-based neural network accelerators for increased inference throughput |
| CN114945916B (zh) * | 2020-10-27 | 2025-04-25 | 北京苹芯科技有限公司 | 使用存内处理进行矩阵乘法的装置和方法 |
| US12488250B2 (en) * | 2020-11-02 | 2025-12-02 | International Business Machines Corporation | Weight repetition on RPU crossbar arrays |
| US11914973B2 (en) * | 2020-11-19 | 2024-02-27 | Apple Inc. | Performing multiple bit computation and convolution in memory |
-
2021
- 2021-06-29 US US17/361,784 patent/US20220414444A1/en active Pending
-
2022
- 2022-06-28 JP JP2023577150A patent/JP2024525332A/ja active Pending
- 2022-06-28 BR BR112023026704A patent/BR112023026704A2/pt unknown
- 2022-06-28 EP EP22747561.3A patent/EP4364047A1/en active Pending
- 2022-06-28 CN CN202280044411.3A patent/CN117546178A/zh active Pending
- 2022-06-28 WO PCT/US2022/073230 patent/WO2023279002A1/en not_active Ceased
- 2022-06-28 KR KR1020237043714A patent/KR20240025523A/ko active Pending
- 2022-06-29 TW TW111124296A patent/TW202324210A/zh unknown
Also Published As
| Publication number | Publication date |
|---|---|
| WO2023279002A1 (en) | 2023-01-05 |
| US20220414444A1 (en) | 2022-12-29 |
| EP4364047A1 (en) | 2024-05-08 |
| JP2024525332A (ja) | 2024-07-12 |
| KR20240025523A (ko) | 2024-02-27 |
| BR112023026704A2 (pt) | 2024-03-12 |
| CN117546178A (zh) | 2024-02-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW202324210A (zh) | 支援深度式迴旋神經網路(cnn)的記憶體內計算(cim)架構和資料串流 | |
| US12056459B2 (en) | Compute in memory architecture and dataflows for depth-wise separable convolution | |
| US12288142B2 (en) | Sparsity-aware compute-in-memory | |
| US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
| US12340304B2 (en) | Partial sum management and reconfigurable systolic flow architectures for in-memory computation | |
| US20230031841A1 (en) | Folding column adder architecture for digital compute in memory | |
| EP4416585B1 (en) | Accumulator for digital computation-in-memory architectures | |
| JP2024532682A (ja) | メモリ内デジタル計算 | |
| TW202324205A (zh) | 用於分階段逐深度迴旋的記憶體內計算架構 | |
| WO2023004570A1 (en) | Activation buffer architecture for data-reuse in a neural network accelerator | |
| WO2023004374A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements |