TWI919552B - 記憶體電路及其操作方法 - Google Patents
記憶體電路及其操作方法Info
- Publication number
- TWI919552B TWI919552B TW113142626A TW113142626A TWI919552B TW I919552 B TWI919552 B TW I919552B TW 113142626 A TW113142626 A TW 113142626A TW 113142626 A TW113142626 A TW 113142626A TW I919552 B TWI919552 B TW I919552B
- Authority
- TW
- Taiwan
- Prior art keywords
- data elements
- input
- control signal
- data
- pes
- Prior art date
Links
Abstract
一種記憶體電路包含:一第一緩衝器,用以儲存複數個第一資料元素;一第二緩衝器,用以儲存複數個第二資料元素;一控制器,用以基於一層類型產生一控制信號;一陣列,包括複數個處理組件(PE),該些PE中的每一者包含複數個儲存單元;及一資料路由器,用以接收該控制信號且基於該控制信號來判定是將該些第一資料元素中的一對應者還是該些第二資料元素中的多個對應者儲存於該些PE中的每一者的該些儲存單元中。
Description
本揭示內容是關於一種記憶體電路,特別是關於一種具有多列儲存單元的記憶體電路及其操作方法。
人工智慧(artificial intelligence,AI)或機器學習(machine learning,ML)為一種可用於在經程式化以像人類一樣思考及行動的機器中模擬人類智慧的強大工具。AI可用於各種應用及行業中。AI加速器為用於高效處理如神經網路的AI工作負載的硬體裝置。一種類型的AI加速器包含可經由乘法及累加運算對輸入執行運算的脈動陣列。
本揭示內容包含一種記憶體電路,包括:第一緩衝器,用以儲存第一資料元素;第二緩衝器,用以儲存第二資料元素;控制器,用以基於一層類型產生控制信號;陣列,包括處理組件(PE),PE中的每一者包含儲存單元;及資料路由器,用以接收控制信號且基於控制信號來判定是將第一資料元素中的對應者還是第二資料元素中的對應者儲存於PE中的每一者的儲存單元中。
本揭示內容包含一種記憶體電路,包括:陣列,包括處理組件(PE);其中PE中的每一者包含儲存單元;且其中PE中的每一者用以基於指示一層類型的控制信號來選擇性地(i)將第一資料元素中的單一者儲存於對應儲存單元中的者中;或(ii)將第二資料元素中的複數者分別儲存於對應儲存單元中。
本揭示內容包含一種操作記憶體電路的方法,包括以下步驟:識別神經網路的用於處理輸入資料元素及權重資料元素的一層類型;回應於該層類型為第一類型,將權重資料元素中的單一者儲存於對應處理組件的儲存單元中的者中;及回應於層類型為第二類型,將輸入資料元素中的複數者分別儲存於對應處理組件的儲存單元中。
以下揭露內容提供用於實現所提供主題的不同特徵的許多不同實施例或實例。下文描述元件及配置的具體實例係為了簡化本揭露。當然,這些僅為實例且不意欲為限制性的。舉例而言,在以下描述中,在第二特徵上方或第二特徵上形成第一特徵可包含第一特徵及第二特徵直接接觸地形成的實施例,且亦可包含可在第一特徵與第二特徵之間形成額外特徵以使得第一特徵及第二特徵可不直接接觸的實施例。另外,本揭露可在各種實例中重複參考標號及/或字母。此重複係出於簡單及清楚的目的,且本身並不指示所論述的各種實施例及/或組態之間的關係。
此外,為易於描述,本文中可使用諸如「在……之下」、「下方」、「下部」、「上方」、「上部」、「頂部」、「底部」及類似者的空間相對術語來描述如圖中所說明的一個組件或特徵與另一組件或特徵的關係。除圖中所描繪的取向以外,空間相對術語亦意欲涵蓋裝置在使用或操作中的不同取向。設備可以其他方式定向(旋轉90度或處於其他取向),且本文中所使用的空間相對描述詞可同樣相應地進行解譯。
AI加速器為一類用於加速深度神經網路(deep neural network,DNN)處理的機器學習工作負載的專用硬體,該等學習工作負載通常為涉及大量記憶體存取及高度並行但簡單計算的神經網路。AI加速器可基於特殊應用積體電路(application-specific integrated circuit,ASIC),該等特殊應用積體電路包含空間上或時間上經配置以執行乘法累加(multiply-and-accumulate,MAC)運算的一部分的多個處理組件(processing element,PE) (或處理電路)。MAC運算係基於輸入激活狀態(有時稱為輸入資料元素)及權重(有時稱為權重資料元素)執行的,且接著將其相加在一起以提供輸出激活狀態。輸入激活狀態及輸出激活狀態通常分別稱為PE的輸入及輸出。
典型的AI加速器(稱為固定資料流加速器(fixed dataflow accelerator,FDA))經定製以支持一個固定資料流,諸如輸出穩定資料流、輸入穩定資料流或權重穩定資料流。然而,AI工作負載包含可能有利於不同資料流(例如,適合一個工作負載的一個資料流)的各種層類型/形狀,或者一個層可能不為其他層的最佳解決方案,因此限制了效能。舉例而言,各種層類型可包含規則卷積層、逐深度卷積層、注意力層、完全連接層等。在典型的資料流架構中,一或多個卷積層之後可為將先前輸出輸出(或展平)成單個向量的全連接層。然而,卷積層類型通常對於某些資料流更有效,且全連接層類型通常對於不同資料流更有效。鑒於工作負載在層類型方面的多樣性,適合一個工作負載的一個資料流或一個層可能不為其他者的最佳解決方案,因此限制了效能。
本揭露提供實現為記憶體電路的AI加速器的各種實施例,該記憶體電路可自適應地處理各種層類型。基於識別對應神經網路的層類型,記憶體電路可調整其元件的組態或操作以最佳化該等元件的使用效率。舉例而言,記憶體電路可包含具有複數個處理組件的記憶體陣列,且處理組件中的每一者可包含複數個儲存單元。記憶體電路可包含資料路由器,以使得每一處理組件的儲存單元基於用於處理權重資料元素及輸入資料元素的層類型(例如,規則卷積層、注意力層或逐深度卷積層)來選擇性地儲存複數個權重資料元素中的至少單一者或儲存複數個輸入資料元素中的複數者。藉由此可撓性,可以改良的效率利用每一處理組件的多個儲存單元,此繼而增強所揭露的AI加速器的總體能量效率及產量。此外,記憶體電路可包含逐行寫入電路,該逐行寫入電路可一列一列地(或逐列)自處理組件同時讀出中間結果且一行一行一行地(或逐行)將那些中間結果回寫至處理組件中。因而,記憶體電路不含額外緩衝器及讀取/寫入操作來轉置矩陣,此通常使得處理神經網路的注意力層具有顯著挑戰性。通過所揭露的逐行寫入電路,所揭露的記憶體電路可甚至以低能量、低延遲及小面積處理注意力層(除規則卷積層及逐深度卷積層以外)。
第1圖說明了根據各種實施例的實例神經網路100。如所示出,神經網路100包含四個層110、120、130及140,其中層110及140分別稱為輸入層及輸出層,且層120至130各自稱為隱藏層。層中的每一者可包含數個神經元。一般而言,神經網路100的隱藏層在很大程度上可被視為神經元層,該等神經元層各自從層之間的網狀互連結構中的一或多個其他(例如先前)神經元層的神經元接收加權輸出。從特定先前神經元的輸出至另一後續神經元的輸入的連接的權重係根據該先前神經元將對該後續神經元的影響或效應設置的(為簡單起見,僅標記一個神經元101及輸入連接的權重)。本文中,該先前神經元的輸出值乘以其與該後續神經元的連接的權重,以判定該先前神經元呈現給該後續神經元的特定刺激。
神經元的總輸入刺激對應於其所有加權輸入連接的組合刺激。根據各種實現方式,若神經元的總輸入刺激超過某一臨限值,則該神經元經觸發以對其輸入刺激執行一些例如線性或非線性數學函數。數學函數的輸出對應於神經元的輸出,該神經元的該輸出隨後乘以神經元的輸出與其後續神經元的連接的各別權重。一般而言,神經元之間的連接愈多,每層神經元就愈多,及/或神經元層就愈多,網路能夠實現的智慧就愈大。因而,用於實際、真實世界的人工智慧應用的神經網路的特徵在於大量神經元及神經元之間的大量連接。因此,通過神經網路處理資訊涉及大量計算(不僅針對神經元輸出函數,而且針對加權連接)。
對輸入刺激執行的處理係基於層類型(或機制)。神經網路可具有或實現各種層類型(或機制),諸如例如全連接層、卷積層、解卷積層、遞回層、注意力層等。一般而言,卷積層(或卷積機制)為卷積神經網路的核心構建區塊。卷積層的參數由一組可學習濾波器(有時稱為核或權重)組成,其中每一濾波器具有常常呈正方形的寬度及高度。這些濾波器小(就其空間尺寸而言),但在體積的整個深度中延伸。基於卷積層的組態,可存在另外的卷積:規則卷積(有時稱為規則卷積層)及逐深度卷積(有時稱為逐深度卷積層)。規則卷積層與逐深度卷積層之間的關鍵差別在於,逐深度卷積僅沿著一個空間維度(有時稱為通道)應用卷積,而規則卷積在每一步長下跨越所有空間維度/通道進行應用。注意力層(或注意力機制)的概念為改良遞回神經網路(recurrent neural network,RNN)以用於處理較長的序列或句子。注意力機制藉由包含關於輸入上下文的資訊來增強輸入刺激嵌入的資訊內容。換言之,注意力機制使得模型能夠權衡輸入刺激中不同元素的重要性且動態地調整其對輸出的影響。
一般而言,神經網路計算權重以對輸入資料(輸入刺激或輸入)執行計算。機器學習當前依賴於點積及絕對差的計算,通常藉由對參數、輸入資料及權重執行的乘法累加(multiply-and-accumulate,MAC)運算進行計算。大型及深度神經網路的計算通常涉及如此多的資料元素,且因此將其儲存於處理器高速緩衝記憶體中為不切實際的。因此,這些資料元素通常儲存於記憶體中。因此,機器學習為極其計算密集型的,其中計算及比較許多不同的資料元素。處理器內的運算的計算比處理器與主記憶體資源之間的資料元素的傳送快多個數量級。歸因於儲存資料元素所需的記憶體大小,將所有資料元素置放為更靠近高速緩衝記憶體中的處理器對於絕大多數實際系統而言為極其昂貴的。因此,資料元素的傳送成為AI計算的主要瓶頸。隨著資料集增加,計算系統用於移動資料元素的時間及功率/能量最終可能為用於實際執行計算的時間及功率的倍數。
就此而言,已提出記憶體中計算(Compute-In-Memory,CIM)電路來執行此類MAC運算。相反,CIM電路在合適的記憶體電路內原位進行資料處理。CIM電路抑制資料/程式提取及輸出結果上載於對應記憶體(例如,記憶體陣列)中的延遲,因此解決了習知計算機的記憶體(或馮諾依曼(von Neumann))瓶頸。歸因於記憶體陣列的具體架構,CIM電路的另一關鍵優點為高計算並行性,其中計算可同時沿著若干電流路徑進行。CIM電路亦受益於具有計算裝置的多個記憶體陣列的高密度,該等計算裝置通常具有優異的可擴縮性及3D整合能力。作為非限制性實例,針對各種機器學習應用的CIM電路可在記憶體內本地執行MAC運算(亦即,不必將資料元素發送至主機處理器),以實現神經元激活及權重矩陣的更高產量點積,同時與主機處理器的計算相比仍然提供更高效能及更低能量。
第2圖說明了根據一些實施例的在具有權重「W」的卷積機制中處理的輸入「A」的實例方塊圖,且第3圖說明了第2圖的輸入A的至少一部分與權重W之間的實例卷積的示意圖。應注意,第3圖的示意圖僅出於說明性目的作為非限制性實例提供,且並不意欲限制本揭露的範圍。舉例而言,所揭露的記憶體電路(例如,第5圖)亦可被實現以處理各種其他卷積層類型中的任一者,同時在本揭露的範圍內。
如第2圖中所示出,規則卷積層的輸入(A)通常配置為具有輸入資料元素(其有時可稱為神經元或激活)的「P」個平面的輸入張量A。每一平面具有輸入資料元素的尺寸X × Y,其通常稱為輸入通道或通道。規則卷積層與一或多個可訓練權重、濾波器或核(W)相關聯。每一濾波器W包含複數個權重資料元素。舉例而言,在規則卷積層的情況下,每一濾波器W具有m × n × P的尺寸。因而,濾波器W跨越輸入張量A的多個平面(通道)共用。換言之,濾波器W與輸入張量一樣深,允許通道自由混合以產生輸出。在另一實例中,在逐深度卷積層的情況下,輸入張量A的通道為分離的,且各自與各別濾波器W卷積。因而,通常利用分別具有不同尺寸(例如,m × n × 1)的多個濾波器W。
為了產生輸出(例如,通過將輸入張量A乘以一或多個濾波器W),藉由分別在步長「s」及「t」處在X及Y方向上使濾波器W滑動跨越輸入張量A來使每一濾波器W與輸入張量A卷積。在某一方向上的滑動步長的大小通常稱為彼方向上的步幅大小。在每一步長下,計算輸入資料元素及權重資料元素的點積以產生輸出資料元素(其可稱為輸出神經元)。在任一步長下應用於權重資料元素的輸入資料元素通常稱為輸入張量A的卷積視窗(或視窗)。因此,每一濾波器W產生輸出的輸出平面或輸出張量「B」(例如,輸出資料元素或輸出神經元的二維集合,其可稱為激活映射或輸出通道)。
一般而言,卷積運算產生在X及/或Y方向上相對於輸入張量A更小的輸出張量B。舉例而言,第3圖說明了與在X及Y方向上步幅大小為2的3 × 3濾波器W卷積的5 × 5輸入張量A (具有一個平面或通道),該3 × 3濾波器W產生2 × 2輸出張量B。具體而言,輸入張量A具有5 × 5個輸入資料元素,例如A1,1、A1,2、A1,3、A1,4、A1,5、A2,1、A2,2、A2,3、A2,4、A2,5、A3,1、A3,2、A3,3、A3,4 、A3,5、A4,1、A4,2、A4,3 、A4,4、A4,5、A5,1、A5,2、A5,3、A5,4及A5,5;且濾波器W具有3 × 3個權重資料元素,例如W1,1、W1,2、W1,3、W2,1、W2,2 、W2,3 、W3,1、W3,2及W3,3。當第一權重資料元素W1,1與輸入資料元素A2i-1,2j-1對準時,輸出張量B、Bi,j (其中「i」表示輸出張量中的列且「j」表示行)的每一輸出資料元素等於輸入資料元素與權重資料元素的點積。
舉例而言,當權重資料元素W1,1與輸入資料元素A1,1對準(如301所指示)時,輸出資料元素B1,1等於輸入資料元素與權重資料元素的點積。具體而言,輸出元素B1,1等於A1,1 × W1,1 + A1,2 × W1,2 + A1,3 × W1,3 + A2,1 × W2,1 + A2,2 × W2,2 + A2,3 × W2,3 + A3,1 × W3,1 + A3,2 × W3,2 + A3,3 × W3,3。鑒於步幅大小為2,視窗接下來以2個輸入資料元素的步長在X方向上(例如,向右)移動,使得權重資料元素W1,1與輸入資料元素A1,3對準(如303所指示)。因此,輸出資料元素B1,2等於A1,3 × W1,1 + A1,4 × W1,2 + A1,5 × W1,3 + A2,3 × W2,1 + A2,4 × W2,2 + A2,5 × W2,3 + A3,3 × W3,1 + A3,4 × W3,2 + A3,5 × W3,3。遵循相同原理,輸出資料元素B2,1可藉由在X方向(向左)及Y方向(向下)上移動視窗以將權重資料元素W1,1與輸入資料元素A3,1對準來產生,且輸出資料元素B2,2可藉由在X方向上(向右)移動視窗以將權重資料元素W1,1與輸入資料元素A3,3對準來產生。
如上文所提及,已在神經網路中實現各種類型的卷積層,例如規則卷積層及逐深度卷積層。儘管輸入張量A在第3圖的實例示意圖中示出為具有單個平面(或通道),但應理解,所描述的原理應當應用於規則卷積層及逐深度卷積層二者。舉例而言,在濾波器W實現為規則卷積層的情況下,當輸入張量A具有多個平面(或通道)時,同一濾波器W與所有通道卷積。在另一實例中,在濾波器W實現為逐深度卷積層的情況下,當輸入張量A具有多個平面(或通道)時,濾波器W僅與通道中的一者卷積。
除了上文所論述的卷積層以外,注意力層已在基於轉換器的模型(例如,大型語言模型)中廣泛適用於處理更長的序列或句子。一般而言,注意力機制藉由強調輸入的重要部分且不再強調輸入的不大重要部分來模仿認知注意力。注意力機制涉及查詢、值及鍵,其中查詢模仿認知注意力中的自主線索,值(例如,中間特徵表示)模仿認知注意力中的感覺輸入,鍵模仿認知注意力中的感覺輸入的非自主線索。注意力機制將查詢及鍵值對集合映射至對應輸出,其中查詢、鍵、值及輸出皆為向量;輸出經計算為值的加權和,其中指派給每一值的權重藉由查詢與對應鍵的兼容性函數來計算。換言之,每一查詢會注意到所有鍵值對且產生一個注意力輸出。
第4圖說明了根據各種實施例的在注意力機制中處理的輸入(張量)「X」的實例示意圖。第4圖的示意圖概述了自注意力機制的流程圖。應注意,第4圖的示意圖僅出於說明性目的作為非限制性實例提供,且並不意欲限制本揭露的範圍。舉例而言,所揭露的記憶體電路(例如,第5圖)亦可被實現以處理各種其他注意力層類型(例如,交叉注意力機制或多頭注意力)中的任一者,同時在本揭露的範圍內。
如所示出,注意力機制通常包含轉換器(或轉換器模型)以定義要轉換的三個可學習權重矩陣,包含查詢權重矩陣WQ、鍵權重矩陣WK及值權重矩陣WV。一般而言,這些三個權重矩陣可操作地用於將輸入張量X分別投影至序列的查詢、鍵及值分量中。首先將輸入張量X投影至這些權重矩陣上(例如,藉由將輸入張量X乘以每一權重矩陣),產生查詢矩陣Q (Q=X·WQ)、鍵矩陣K (K=X·WK)及向量矩陣V (V=X·WV)。接下來,轉換器將查詢與所有鍵的點積計算為A=Q·KT,其中KT表示正在轉置的鍵矩陣K。接著使用softmax運算子對矩陣A進行歸一化或縮放以獲得注意力分數A’,該等注意力分數A’有時稱為注意力權重A’。因此,輸出Z可產生為A′·V,其中輸出Z的每一實體成為輸入中之所有實體的加權和,其中權重由注意力分數A′給出。在一些實施例中,第4圖中所示出的轉換器(例如,分量WQ、WK、WV、Q、K、V、Q·KT及A)有時可稱為注意力層。在一些其他實施例中,注意力機制可包含複數個所說明的注意力層,且複數個注意力層耦接至全連接層,該全連接層將複數個注意力層的先前輸出(Z)輸出(或展平)至單個向量中。此注意力機制允許轉換器基於查詢矩陣(或向量) Q與鍵矩陣(或向量) K之間的類似性來關注輸入張量X的相關部分,增強對應模型有效捕獲資料內的相依性及關係的能力。
第5圖說明了根據各種實施例的記憶體中計算(Compute-In-Memory,CIM)電路500的實例方塊圖。應理解,已簡化第5圖的方塊圖,且因此,CIM電路500可包含各種其他元件中的任一者,同時保持在本揭露的範圍內。
如所示出,CIM電路500包含陣列510、第一緩衝器520、第二緩衝器530、資料路由器540、逐行寫入電路550、控制器560及加法器周邊電路570。在簡要概述中,為了高效率、低功耗及低延遲,可以可操作地用作AI加速器的一部分的CIM電路500可基於神經網路的用於處理多個輸入資料元素及權重資料元素的層類型來自適應地組態其元件。
陣列510可包括配置於複數個行(C1、C2…CY)及複數個列(R1、R2…RX)上的數個處理組件(processing element,PE) 512。PE 512中的每一者位於該等行中的一對應者及該等列中的一對應者的交叉點處。PE 512中的每一者可包含至少數個暫存器(或儲存單元),例如M0、M1…MN,及計算元件CP (例如,乘法器)。儲存單元可為記憶體的單元的儲存空間,其用以傳送資料以供中央處理單元(Central Processing Unit,CPU)或圖形處理單元(Graphic Processing Unit,GPU)立即用於資料處理。在一些實施例中,每一PE 512可包含複數個此類儲存單元。每一PE 512的儲存單元M0至MN可用以選擇性地儲存複數個權重資料元素中的單一者或複數個輸入資料元素中的複數者,此將在下文論述。每一PE 512的儲存單元M0至MN可沿著單個行配置,其中儲存單元安置於各別列中。因而,此PE有時稱為多列儲存記憶體單元。計算元件CP可對與儲存單元M0至MN的輸出的激活執行乘法運算。PE 512 (或其計算元件CP)中的每一者可用以對複數個第一資料元素(例如,輸入激活或輸入資料元素)中的一對應者及複數個第二資料元素(例如,權重或權重資料元素)中的一對應者執行乘法運算,且接著執行求和運算以組合一或多個乘積以便產生部分乘積。每一PE可將輸出(例如,部分乘積)提供至加法器周邊電路570以用於求和運算。在一些實施例中,加法器周邊電路570可包含數個加法器樹、數個移位器或各自用以執行求和運算的其他合適的電路。
第一緩衝器520可包含可接收及儲存神經網路的輸入激活(或輸入資料元素)的一或多個記憶體(例如,暫存器)。第一緩衝器520有時可稱為激活緩衝器520。這些輸入資料元素可作為來自例如不同記憶體電路(未示出)、全域緩衝器(未示出)或不同裝置的輸出而接收。在一些實施例中,來自激活緩衝器520的輸入資料元素可提供至資料路由器540,用於基於由控制器560提供的控制信號516來選擇性地儲存於PE 512中,此將在下文進一步詳細描述。
第二緩衝器530可包含可接收及儲存神經網路的權重(或權重資料元素)的一或多個記憶體(例如,暫存器)。第二緩衝器530有時可稱為權重緩衝器530。這些權重資料元素可作為來自例如不同記憶體電路(未示出)、全域緩衝器(未示出)或不同裝置的輸出而接收。在一些實施例中,來自權重緩衝器530的權重資料元素可提供至資料路由器540,用於基於由控制器560提供的控制信號561來選擇性地儲存於PE 512中,此將在下文進一步詳細描述。
可操作地耦接至激活緩衝器520及權重緩衝器530的資料路由器540可基於由控制器560提供的控制信號561來選擇待儲存於PE 512中的資料元素。舉例而言,陣列510可進一步包含至少一個寫入埠514及一個輸入埠516。在本揭露的各種實施例中,寫入埠514用以接收待經程式化至PE 512中的資料元素;且輸入埠516用以接收待乘以儲存於PE中的資料元素的資料元素。控制信號561可指示神經網路的用於處理輸入資料元素及權重資料元素的層類型。舉例而言,層類型可至少包含規則卷積層、注意力層及逐深度卷積層。
在一個態樣中,基於指示待處理的資料元素與規則卷積層(機制)或注意力層(機制)相關聯的控制信號561,資料路由器540可選擇自激活緩衝器520接收到的輸入資料元素且將其轉發至輸入埠516,並且選擇自權重緩衝器530接收到的權重資料元素且將其轉發至寫入埠514。因而,權重資料元素儲存於PE 512中,其中輸入資料元素乘以對應的所儲存權重資料元素,此有時稱為「權重穩定(weight stationary,WS)資料流」。此外,在一些實施例中,每一PE 512可利用其儲存單元中的單一者來儲存權重資料元素中的一對應者。
在另一態樣中,基於指示待處理的資料元素與逐深度卷積層(機制)相關聯的控制信號561,資料路由器540可選擇自激活緩衝器520接收到的輸入資料元素且將其轉發至寫入埠514,並且選擇從權重緩衝器530接收到的權重資料元素且將其轉發至輸入埠516。因而,輸入資料元素儲存於PE 512中,其中權重資料元素乘以對應的所儲存輸入資料元素,此有時稱為「輸入穩止(input stationary,IS)資料流」。此外,在一些實施例中,每一PE 512可利用其儲存單元中的多者來分別儲存輸入資料元素中的對應者。
控制器560可藉由識別神經網路的層類型來產生控制信號561。在一些實施例中,控制器560可與指示層類型的另一元件(例如,使用者界面)通信地耦接。除了為資料路由器540產生控制信號561以選擇將哪些資料元素程式化至陣列510的PE 512中以外,控制器560亦可產生另一控制信號563以選擇性地組態逐行寫入電路550。
舉例而言,當層類型經識別為包含注意力層時,控制器560可產生控制信號563以在第一邏輯狀態與第二邏輯狀態之間切換,該第一邏輯狀態使得逐行寫入電路550啟用逐行回寫操作,該第二邏輯狀態使得逐行寫入電路550禁用逐行回寫操作。當層類型經識別為包含卷積層(例如,規則或逐深度卷積層)時,控制器560可產生在第二邏輯狀態下固定的控制信號563,使得逐行寫入電路550禁用逐行回寫操作。當禁用逐行回寫操作時,逐行寫入電路550可執行逐列寫入操作。在逐行回寫操作的情況下,CIM電路500不包含用於執行轉置函數的額外電路,該轉置函數通常在處理具有注意力層的神經網路時需要。下文將進一步詳細論述此逐行回寫操作。
第6圖說明了根據各種實施例的資料路由器540的實例電路圖。資料路由器540可操作地耦接於緩衝器520~530與埠514~516之間,且用以基於控制信號561來選擇待轉發至寫入埠514的資料元素。應理解,已簡化第6圖的電路圖,且因此,資料路由器540可包含各種其他元件中的任一者,同時保持在本揭露的範圍內。
如所示出,資料路由器540包含第一多工器(MUX) 610及第二多工器(MUX) 620。在第6圖的說明性實例中,第一MUX 610及第二MUX 620中的每一者實現為由各別控制信號控制的2比1 MUX。舉例而言,第一MUX 610由控制信號561控制,且第二MUX 620由與控制信號561邏輯上相反的另一控制信號565控制。此外,第一MUX 610具有用以分別自激活緩衝器520及權重緩衝器530接收輸入資料元素及權重資料元素的第一輸入及第二輸入,且第二MUX 620具有用以分別自激活緩衝器520及權重緩衝器530接收輸入資料元素及權重資料元素的第一輸入及第二輸入。基於控制信號561的邏輯狀態,第一MUX 610可選擇通過其第一或第二輸入接收到的資料元素中的一者作為轉發至寫入埠514的輸出。類似地,第二MUX 620可基於控制信號565的邏輯狀態來選擇通過其第一或第二輸入接收到的資料元素中的一者作為轉發至輸入埠516的輸出。
由於控制信號561及565在邏輯上彼此相反,因此資料路由器540可基於控制信號561來判定是將輸入資料元素還是權重資料元素路由至寫入埠514。舉例而言,當控制信號561處於指示層類型為規則卷積層或注意力層的第一邏輯狀態時,第一MUX 610可選擇自其第二輸入接收到的資料元素(例如,權重資料元素)且將其轉發至寫入埠514。同時,第二MUX 620可選擇自其第一輸入接收到的資料元素(例如,輸入資料元素)且將其轉發至輸入埠516。當控制信號561處於指示層類型為逐深度卷積層的第二邏輯狀態時,第一MUX 610可選擇自其第一輸入接收到的資料元素(例如,輸入資料元素)且將其轉發至寫入埠514。同時,第二MUX 620可選擇自其第二輸入接收到的資料元素(例如,權重資料元素)且將其轉發至輸入埠516。
根據本揭露的各種實施例,當層類型指示為規則卷積層或注意力層(亦即,寫入埠514接收權重資料元素且輸入埠516接收輸入資料元素)時,資料路由器540可將權重資料元素中的單一者輸出至PE 512中的一對應者中;且當層類型指示為逐深度卷積層(亦即,寫入埠514接收輸入資料元素且輸入埠516接收權重資料元素)時,資料路由器540可將權重資料元素中的多者輸出至PE 512中的一對應者中。
第7圖說明了在具有濾波器/權重「W」的卷積機制中處理的輸入張量「A」的另一實例方塊圖,其中輸入張量A具有4 × 4的尺寸,且濾波器W具有3 × 3的尺寸,其中步長大小為1。舉例而言,在第7圖中,輸入張量A具有配置於4個行及4個列上的輸入資料元素A1,1、A1,2、A1,3 、A1,4、A2,1 、A2,2、A2,3、A2,4、A3,1、A3,2、A3,3、A3,4、A4,1 、A4,2、A4,3及A4,4,且濾波器W具有配置於3個行及3個列上的權重資料元素W1,1、W1,2、W1,3、W2,1、W2,2、W2,3、W3,1、W3,2及W3,3。
基於關於第2圖至第3圖所論述的卷積原理,產生第一卷積視窗(尺寸為3 × 3)以將權重資料元素W1,1與輸入資料元素A1,1對準,其中剩餘的權重資料元素W1,2、W1,3、W2,1、W2,2、W2,3、W3,1、W3,2及W3,3分別與輸入資料元素A1,2、A1,3、A2,1、A2,2 、A2,3 、A3,1、A3,2及A3,3對準。結果,第一部分乘積可由對應PE (例如,512)通過將輸入資料元素與各別的經對準權重資料元素相乘來產生(亦即,A1,1 × W1,1 + A1,2 × W1,2 + A1,3 × W1,3 + A2,1 × W2,1 + A2,2 × W2,2 + A2,3 × W2,3 + A3,1 × W3,1 + A3,2 × W3,2 + A3,3 × W3,3)。此第一卷積視窗由701指示。接下來,產生第二卷積視窗、第三卷積視窗及第四卷積視窗(呈3 × 3的相同尺寸)以將權重資料元素W1,1分別與輸入資料元素A1,2、A2,1及A2,2對準,如由703、705及707所指示。
使用第7圖的輸入張量A及濾波器W作為說明性實例,第8圖及第9圖分別說明了根據各種實施例的當層類型指示為規則卷積層(或注意力層)及逐深度卷積層時資料元素如何儲存於PE 512中的示意圖。特定而言,第8圖說明了基於權重穩定(weight stationary,WS)資料流產生部分乘積的實例,且第9圖說明了基於輸入穩定(input stationary,IS)資料流產生部分乘積的實例。
在第8圖中,權重資料元素W1,1由資料路由器540路由至陣列510的寫入埠514,且接著儲存於陣列510的PE 512中的第一者中,其中PE 512中的每一者可具有4列儲存單元M0、M1、M2及M3。權重資料元素W1,1可儲存於第一PE 512的儲存單元M0中。對應的輸入資料元素A1,4、A1,3、A1,2、A1,1由資料路由器540路由至輸入埠516作為第一PE 512的激活。在一些實施例中,第一PE 512的激活(例如,輸入資料元素A1,4、A1,3、A1,2、A1,1)可在列基礎上饋送至陣列510中。此外,輸入資料元素A1,4、A1,3、A1,2、A1,1分別為視窗701至707中的將與權重資料元素W1,1相乘(對準)的資料元素。遵循相同原理,權重資料元素W1,2、W1,3、W2,1、W2,2、W2,3、W3,1、W3,2及W3,3各自儲存於第二PE、第三PE、第四PE、第五PE、第六PE、第七PE、第八PE及第九PE中的一對應者的儲存單元中的一者中,其中對應的激活(輸入資料元素)饋送至陣列510中。在一些實施例中,這些九個PE可沿著陣列510的單個行配置,但可設想其他組態。
在第9圖中,輸入資料元素A1,4、A1,3、A1,2、A1,1由資料路由器540路由至陣列510的寫入埠514,且接著儲存於陣列510的PE 512中的第一者中。具體而言,PE 512可分別將輸入資料元素A1,1 、A1,2 、A1,3及A1,4儲存於儲存單元M0 、M1、M2及M3中。在一些實施例中,輸入資料元素A1,4、A1,3、A1,2、A1,1可在行基礎上饋送至陣列510中。此外,輸入資料元素A1,4、A1,3、A1,2、A1,1分別為視窗701至707中的將與權重資料元素W1,1相乘(對準)的資料元素。對應的權重資料元素W1,1由資料路由器540路由至輸入埠516作為第一PE 512的激活。遵循相同原理,分別對應於權重資料元素W1,2、W1,3、W2,1、W2,2、W2,3 、W3,1、W3,2及W3,3的輸入資料元素的各別集合(A1,2、A1,3、A2,2及A2,3)、(A1,3、A1,4、A2,3及A2,4)、(A2,1、A2,2、A3,1及A3,2)、(A2,2、A2,3、A3,2及A3,3)、(A2,3、A2,4、A3,3及A3,4)、(A3,1、A3,2、A4,1及A4,2)、(A3,2 、A3,3、A4,2及A4,3)、(A3,3、A3,4 、A4,3及A4,4)各自儲存於第二PE、第三PE、第四PE、第五PE、第六PE、第七PE、第八PE及第九PE中的一對應者的儲存單元中,其中對應的激活(權重資料元素)饋送至陣列510中。在一些實施例中,這些九個PE可沿著陣列510的單個行配置,但可設想其他組態。
第10圖說明了根據各種實施例的逐行寫入電路550的實例電路圖。逐行寫入電路550可操作地耦接於資料路由器540與寫入埠514之間,且用以基於控制信號563選擇性地執行逐行回寫操作。應理解,可簡化第10圖的電路圖,且因此,逐行寫入電路550可包含各種其他元件中的任一者,同時保持在本揭露的範圍內。
如所示出,逐行寫入電路550通過其寫入埠514 (第10圖中未示出)耦接至陣列510。陣列510示出為具有PE 512的「Y」個行及「X」個列,其中X及Y可各自為等於或大於2的整數。在一些實施例中,逐行寫入電路550可包含分別耦接至陣列510的列的數個MUX 1012、1014、1016等,及分別耦接到陣列510的行的數個AND閘1022、1024、1026等。陣列510的列可耦接至用以基於「ROW_SEL」信號選擇列中的一者的MUX 1018,且陣列510的行可耦接至用以基於「COL_SEL」信號選擇行中的一者的MUX 1028。
為了選擇性地啟用上文所提及的逐行回寫操作,MUX 1012至1016各自由控制信號563控制。控制信號563有時稱為「COL_EN」信號,其某種程度指示對應的神經網路的層類型是否含有需要轉置函數的注意力層或類似者。舉例而言,當處理注意力相關機制時,控制信號563可在第一邏輯狀態與第二邏輯狀態之間轉變以選擇性地啟用逐行回寫操作。在另一實例中,當神經網路的層類型不與任何注意力相關機制相關聯或不需要轉置函數時,控制信號563可保持在恆定邏輯狀態以禁用逐行回寫操作。
具體而言,MUX 1012至1016中的每一者可具有第一輸入、第二輸入及輸出。第一輸入及第二輸入中的每一者用以通過寫入埠514接收數個資料元素(第5圖)。亦即,通過第一或第二輸入接收到的資料元素用以經程式化至陣列510 (或PE 512)中。在各種實施例中,第一輸入用以通過寫入埠514接收數個資料元素(例如,第4圖中所說明的鍵權重矩陣WK的權重資料元素),且第二輸入用以亦通過寫入埠514接收已與對應激活相乘的資料元素的一部分(例如,第4圖中所說明的鍵矩陣K的資料元素中的一者)。在控制信號563指示啟用逐行回寫操作時,MUX 1012至1016可各自選擇自第二輸入接收到的資料元素且將其轉發至其輸出;並且在控制信號563指示禁用逐行回寫操作時,MUX 1012至1016可各自選擇自第一輸入接收到的資料元素且將其轉發至其輸出。
第11圖說明了根據各種實施例的注意力機制的一部分的實例方塊圖,其中輸入張量「X」與鍵權重矩陣「WK」一起處理以產生矩陣「K」,且查詢矩陣「Q」與經轉置之矩陣KT一起處理以產生預歸一化權重分數矩陣「A」。應理解,出於說明性目的,已簡化第11圖的實例,且矩陣中的每一者的尺寸可等於任何其他值。
在第11圖的說明性實例中,輸入張量X、鍵權重矩陣WK及查詢矩陣Q各自具有2 × 2的尺寸。輸入張量X具有配置於2個行及2個列上的輸入資料元素X1,1、X1,2、X2,1及X2,2;鍵權重矩陣具有配置於2個行及2個列上的權重資料元素WK1,1、WK1,2、WK2,1及WK2,2;且查詢矩陣Q具有配置於2個行及2個列上的權重資料元素Q1,1、Q1,2、Q2,1及Q2,2。基於上文所論述的注意力機制(例如,第4圖),由配置於2個行及2個列上的K1,1、K1,2、K2,1及K2,2組成的矩陣K藉由將輸入張量X與鍵權重矩陣WK相乘來產生(K=X·WK)。接下來,由配置於2個行及2個列上的A1,1、A1,2、A2,1及A2,2組成的矩陣A藉由將查詢矩陣Q與經轉置矩陣KT相乘來產生(A=Q·KT)。
第12圖為說明根據各種實施例的逐行寫入電路550如何處理第11圖中所示出的輸入張量X、鍵權重矩陣WK及查詢矩陣Q以自陣列510讀出中間結果同時執行逐行回寫操作的操作流程。舉例而言,在第12圖中,陣列510示出為具有配置為2 × 2陣列的四個PE 512A、512B、512C及512D,其中PE 512A至512d中的每一者包含兩個儲存單元。
首先,鍵權重矩陣WK、WK1,1、WK1,2、WK2,1、WK2,2的資料元素分別經程式化至四個PE 512中。具體而言,鍵權重矩陣WK的第一列(WK1,1及WK1,2)分別寫入至第一列PE 512A及512B的第一儲存單元中,且鍵權重矩陣WK的第二列(WK2,1及WK2,2)分別寫入至第二列PE 512C及512D的第一儲存單元中。換言之,鍵權重矩陣WK的資料元素逐列寫入至陣列510中。可通過輸入埠516接收到的輸入張量X的第一列(X1,1及X1,2)與儲存於第一儲存單元中的資料元素的第一行(WK1,1及WK2,1)相乘,且與儲存於第一儲存單元中的資料元素的第二行(WK1,2及WK2,2)相乘,以分別產生中間結果,例如資料元素K1,1及K1,2。舉例而言,K1,1 = X1,1 × WK1,1 + X1,2 × WK2,1,且K1,2 = X1,1 × WK1,2 + X1,2 × WK2,2。
與產生或讀出資料元素K1,1及K1,2同時地,逐行寫入電路550可逐行將那些資料元素(中間結果)回寫至陣列510中,如箭頭1201所指示。舉例而言,資料元素K1,1寫入至第一行PE (例如,512A)中的第一者的第二儲存單元中,且資料元素K1,2寫入至相同第一行PE (例如,512C)中的第二者的第二儲存單元中。接下來,可通過輸入埠516接收到的輸入張量X的第二列(X2,1及X2,2)與儲存於第一儲存單元中的資料元素的第一行(WK1,1及WK2,1)相乘,且與儲存於第一儲存單元中的資料元素的第二行(WK1,2及WK2,2)相乘,以分別產生中間結果,例如資料元素K2,1及。類似地,逐行寫入電路550可逐行將那些資料元素K2,1及K2,2回寫至陣列510中,如箭頭1203所指示。舉例而言,資料元素K2,1寫入至第二行PE (例如,512B)中的第一者的第二儲存單元中,且資料元素K2,2寫入至相同第二行PE (例如,512D)中的第二者的第二儲存單元中。
在資料元素K1,1、K1,2、K2,1及K2,2一行一行地回寫於陣列510中的情況下,資料元素K1,1、K1,2、K2,1及K2,2等價地在陣列510中轉置。舉例而言,類似於資料元素K2,1,資料元素K1,2已自(第11圖中的鍵矩陣K的)第一列與第二行的交叉點處的第一位置改變至(由PE 512A至512D形成的矩陣的)第二列與第一行的交叉點處的第二位置。因而,可通過輸入埠516接收到的查詢矩陣Q的第一列(Q1,1及Q1,2)可與儲存於第二儲存單元中的資料元素的第一行(K1,1及K1,2)相乘,且與儲存於第二儲存單元中的所儲存資料元素的第二行(K2,1及K2,2)相乘,以分別產生資料元素A1,1及A1,2。舉例而言,A1,1 = Q1,1 × K1,1 + Q1,2 × K1,2,且A1,2 = Q1,1 × K2,1 + Q1,2 × K2,2。類似地,資料元素A2,1及A2,2可通過分別將查詢矩陣Q的第二列(Q2,1及Q2,2)與資料元素(K1,1及K1,2)及資料元素(K2,1及K2,2)相乘來產生。
第13圖說明了根據本揭露的各種實施例的用於操作CIM電路的實例方法1300的流程圖。方法1300的操作可由上文(例如,第5圖及第6圖)所描述的元件執行,且因此,上文所使用的一些參考標號可在對方法1300的以下論述中再使用。舉例而言,方法1300主要針對由控制器560及資料路由器540執行的操作。應理解,已簡化方法1300,且因此,可在第13圖的方法1300之前、期間及之後提供額外操作,且一些其他操作可僅在本文中簡要描述。
方法1300開始於識別神經網路的用於處理複數個輸入資料元素及複數個權重資料元素的層類型的操作1310。舉例而言,控制器560可識別此層類型,且將控制信號561提供至資料路由器540。作為非限制性實例,當層類型(第一類型)為規則卷積層或注意力層時,可在第一邏輯狀態下提供控制信號561,且當層類型(第二類型)為逐深度卷積層時,可在第二邏輯狀態下提供控制信號561。應當係第一邏輯狀態或第二邏輯狀態中的任一者可指示神經網路的各種其他層類型中的任一者,同時保持在本揭露的範圍內。
方法1300繼續進行至回應於第一類型經識別而將權重資料元素中的單一者儲存於對應處理組件(processing element,PE)的一個儲存單元中的操作1320。繼續同一實例,回應於在第一邏輯狀態(例如,規則卷積層或注意力層)下提供控制信號561,資料路由器540 (或在第6圖的非限制性實現方式中,其第一MUX 610)可選擇自權重緩衝器530接收到的一或多個權重資料元素以轉發至陣列510的寫入埠514。同時,資料路由器540 (或其第二MUX 620)可選擇自激活緩衝器520接收到的一或多個輸入資料元素以轉發至陣列510的輸入埠516。通過寫入埠514接收到的權重資料元素可分別經程式化至不同的PE中。具體而言,具有複數個儲存單元的每一PE可將對應的權重資料元素儲存於其多個儲存單元中的一者中。在一些實施例中,所儲存的權重資料元素可與輸入資料元素的子集(例如,輸入資料元素中的複數者)相乘,該等輸入資料元素可逐列饋送至陣列510中。
方法1300繼續進行至回應於第二類型經識別而將輸入資料元素中的複數者儲存於對應處理組件(processing element,PE)的多個儲存單元中的操作1330。繼續同一實例,回應於在第二邏輯狀態(例如,逐深度卷積層)下提供控制信號561,資料路由器540 (或在第6圖的非限制性實現方式中,其第一MUX 610)可選擇自激活緩衝器520接收到的一或多個輸入資料元素以轉發至陣列510的寫入埠514。同時,資料路由器540 (或其第二MUX 620)可選擇自權重緩衝器530接收到的一或多個權重資料元素以轉發至陣列510的輸入埠516。通過寫入埠514接收到的輸入資料元素可分別經程式化至不同的PE中。具體而言,具有複數個儲存單元的每一PE可將對應的輸入資料元素分別儲存於其多個儲存單元中。在一些實施例中,所儲存的輸入資料元素可與權重資料元素的子集(例如,權重資料元素中的單一者)相乘,該等權重資料元素可逐列饋送至陣列510中。
第14圖說明了根據本揭露的各種實施例的用於操作CIM電路的實例方法1400的流程圖。方法1400的操作可由上文(例如,第5圖及第10圖)所描述的元件執行,且因此,上文所使用的一些參考標號可在對方法1400的以下論述中再使用。舉例而言,方法1400主要針對由控制器560及逐行寫入電路550執行的操作。應理解,已簡化方法1400,且因此,可在第14圖的方法1400之前、期間及之後提供額外操作,且一些其他操作可僅在本文中簡要描述。舉例而言,方法1400可選擇性地在方法1300之後執行。
方法1400開始於識別神經網路的用於處理複數個輸入資料元素及複數個權重資料元素的層類型包含注意力層的操作1410。在一些實施例中,操作1410可與方法1300的操作1310一致或為操作1310的一部分。舉例而言,控制器560可識別注意力層,且將控制信號561及563分別提供至資料路由器540及逐行寫入電路550。當層類型包含注意力層時,控制信號563可提供為在第一邏輯狀態與第二邏輯狀態之間切換,且當層類型不包含注意力層時,控制信號563可提供為在第二邏輯狀態下固定。
方法1400繼續至自記憶體陣列逐列讀出中間結果的操作1420。使用第12圖作為代表性實例,此類中間結果對應於藉由將輸入張量X的第一列(例如,X1,1及X1,2)與鍵權重矩陣WK (例如,WK1,1、WK1,2、WK2,1及)相乘來產生的矩陣K的資料元素(例如,K1,1及K1,2)。舉例而言,在讀出矩陣K的資料元素之前,逐行寫入電路550可回應於在第二邏輯狀態下提供控制信號563而將鍵權重矩陣的資料元素(WK1,1、WK1,2、WK2,1及WK2,2)一列一列地寫入至記憶體陣列510。鍵權重矩陣WK的第一列(WK1,1、WK1,2)可儲存於第一列PE (512A及512B)的各別第一儲存單元中,且鍵權重矩陣WK的第二列(WK2,1、WK2,2)可儲存於第二列PE (512C及512D)的各別第一儲存單元中。接下來,資料元素K1,1及K1,2可分別由PE 512A~D基於K1,1 = X1,1 × WK1,1 + X1,2 × WK2,1且K1,2 = X1,1 × WK1,2 + X1,2 × WK2,2來產生,且由逐行寫入電路550通過加法器周邊電路570接收。
方法1400繼續至逐行將中間結果回寫至記憶體陣列的操作1430。在第12圖的同一實例的情況下,與逐行寫入電路550接收資料元素K1,1及K1,2同時地,逐行寫入電路550可接著回應於控制信號563轉變至第一邏輯狀態而逐行將資料元素回寫至陣列510中。舉例而言,資料元素K1,1及K1,2可回寫至PE的第一行(512A及512C)的各別第二儲存單元中。在各種實施例中,操作1420及1430可被執行一或多次,使得輸入張量X的第二列(例如,X2,1及X2,2)與鍵權重矩陣WK相乘作為中間結果(K2,1及K2,2),該等中間結果回寫至PE的第二行(512B及512D)的各別第二儲存單元。
在本揭露的一個態樣中,揭露了一種記憶體電路。記憶體電路包含:第一緩衝器,用以儲存複數個第一資料元素;第二緩衝器,用以儲存複數個第二資料元素;控制器,用以基於層類型產生控制信號;陣列,包括複數個處理組件(processing element,PE),該等PE中的每一者包含複數個儲存單元;及資料路由器,用以接收控制信號且基於控制信號來判定是將複數個第一資料元素中的一對應者還是複數個第二資料元素中的多個對應者儲存於PE中的每一者的儲存單元中。
在一些實施例中,第一資料元素包含權重資料元素,且第二資料元素包含輸入資料元素。在一些實施例中,資料路由器包含:第一多工器,具有連接至第二緩衝器的第一輸入、連接至第一緩衝器的第二輸入及連接至陣列的輸入埠的第一輸出;及第二多工器,具有連接至第二緩衝器的第三輸入、連接至第一緩衝器的第四輸入及連接至陣列的寫入埠的第二輸出。在一些實施例中,第一多工器用以基於控制信號的邏輯反相版本來選擇自第一輸入或第二輸入中的者接收到的一資料元素,且該第二多工器用以基於該控制信號來選擇自該第三輸入或該第四輸入中的一者接收到的一資料元素。在一些實施例中,當控制信號指示層類型為規則卷積層或注意力層時,第一多工器用以將第二資料元素輸出至輸入埠,且第二多工器用以將第一資料元素輸出至寫入埠。在一些實施例中,回應於控制信號的指示,PE中的每一者用以儲存第一資料元素中的單個對應者。在一些實施例中,當控制信號指示層類型為逐深度卷積層時,第一多工器用以將第一資料元素輸出至輸入埠,且第二多工器用以將第二資料元素輸出至寫入埠。在一些實施例中,回應於控制信號的指示,PE中的每一者用以儲存第二資料元素中的對應者。在一些實施例中,儲存於每一PE中的第二資料元素的數目基於以下各者中的至少一者來判定:第一資料元素的對應於視窗大小的配置;第二資料元素的配置;或步幅大小。在一些實施例中,第二資料元素沿著每一PE中的單個行儲存單元儲存。
在本揭露的另一態樣中,揭露一種記憶體電路。記憶體電路包含包括複數個處理組件(processing element,PE)的陣列。PE中的每一者包含複數個儲存單元。PE中的每一者用以基於指示層類型的控制信號來選擇性地(i)將複數個第一資料元素中的單一者儲存於對應儲存單元中的一者中;或(ii)將複數個第二資料元素中的複數者分別儲存於對應儲存單元中。
在一些實施例中,第一資料元素包含權重資料元素,且第二資料元素包含輸入資料元素。在一些實施例中,記憶體電路進一步包括資料路由器,資料路由器用以接收控制信號且基於控制信號來判定是儲存第一資料元素中的單一者還是第二資料元素中的複數者。在一些實施例中,資料路由器包含:第一多工器,具有用以接收第二資料元素中的至少一者的第一輸入、用以接收第一資料元素中的至少一者的第二輸入及連接至陣列的輸入埠的第一輸出;及第二多工器,具有用以接收第二資料元素中的至少一者的第三輸入、用以接收第一資料元素中的至少一者的第四輸入及連接至陣列的寫入埠的第二輸出。在一些實施例中,當控制信號指示層類型為規則卷積層或注意力層時,第一多工器用以將通過第一輸入接收到的至少一個第二資料元素輸出至輸入埠,且第二多工器用以將通過第四輸入接收到的至少一個第一資料元素輸出至寫入埠。在一些實施例中,當控制信號指示該層類型為逐深度卷積層時,第一多工器用以將通過第二輸入接收到的至少一個第一資料元素輸出至輸入埠,且第二多工器用以將通過第三輸入接收到的該至少一個第二資料元素輸出至寫入埠。在一些實施例中,PE各自用以對第一資料元素中的一或多者及第二資料元素中的一或多者執行至少一乘法運算。
在本揭露的又另一態樣中,揭露一種用於操作記憶體中計算電路的方法。方法包含識別神經網路的用於處理複數個輸入資料元素及複數個權重資料元素的層類型。方法包含回應於層類型為第一類型,將複數個權重資料元素中的單一者儲存於對應處理組件的複數個儲存單元中的一者中。方法包含回應於層類型為第二類型,將複數個輸入資料元素中的複數者分別儲存於對應處理組件的複數個儲存單元中。
在一些實施例中,第一類型包含一規則卷積層或一注意力層,且該第二類型包含一逐深度卷積層。
如本文中所使用,術語「約」及「大約」通常指示給定量的值,該值可基於與主題半導體裝置相關聯的特定技術節點而變化。基於特定技術節點,術語「約」可指示給定量的在例如該值的10~30% (例如,該值的+10%、±20%或±30%)內變化的值。
前述內容概述了若干實施例的特徵,使得熟習此項技術者可更佳地理解本揭露的態樣。熟習此項技術者應瞭解,他們可容易地使用本揭露作為設計或修改用於實現本文中所引入的實施例的相同目的及/或達成相同優點的其他製程及結構的基礎。熟習此項技術者亦應認識到,此類等效構造並不脫離本揭露的精神及範圍,且在不脫離本揭露的精神及範圍的情況下可在本文中進行各種改變、替換及變更。
100:神經網路 101:神經元 110、120、130、140:層 301、303、701、703、705、707:視窗 500:CIM電路 510:陣列 512、512A、512B、512C及512D:處理元件 514:寫入埠 516:輸入埠 520:第一緩衝器、激活緩衝器 530:第二緩衝器、權重緩衝器 540:資料路由器 550:逐行寫入電路 560:控制器 561、563、565:控制信號 570:加法器周邊電路 610:第一多工器 620:第二多工器 1012、1014、1016、1028:多工器 1022、1024、1026:AND閘 1201、1203:箭頭 1300、1400:方法 1310、1320、1330、1410、1420、1430:操作 C1、C2、CY:行 COL_SEL、ROW_SEL:信號 CP:計算組件 M0、M1、M2、M3、MN:儲存單元 R1、R2、RX:列 X、Y:方向
當與隨附圖式一起閱讀時,自以下詳細描述可最好地理解本揭露的態樣。應注意,根據行業中的標準實踐,各種特徵未按比例繪製。實際上,為論述清楚起見,各種特徵的尺寸可任意地增大或減小。 第1圖說明了根據一些實施例的實例神經網路。 第2圖說明了根據一些實施例的在具有權重(W)的卷積機制中處理的輸入(A)的實例方塊圖。 第3圖說明了根據一些實施例的第2圖的輸入A的至少一部分與權重W之間的實例卷積的示意圖。 第4圖說明了根據一些實施例的在注意力機制中處理的輸入(X)的實例示意圖。 第5圖說明了根據一些實施例的記憶體中計算(Compute-In-Memory,CIM)電路的實例方塊圖。 第6圖說明了根據一些實施例的第5圖的CIM電路的資料路由器的實例電路圖。 第7圖說明了根據一些實施例的在具有權重(W)的卷積機制中處理的輸入(A)的另一實例方塊圖。 第8圖說明了根據一些實施例的當層類型指示為規則卷積層(或注意力層)時資料元素如何儲存於第5圖的CIM電路的處理組件中的示意圖。 第9圖說明了根據一些實施例的當層類型指示為逐深度卷積層時資料元素如何儲存於第5圖的CIM電路的處理組件中的示意圖。 第10圖說明了根據一些實施例的第5圖的CIM電路的逐行寫入電路的實例電路圖。 第11圖說明了根據一些實施例的注意力機制的一部分的實例方塊圖。 第12圖為說明根據一些實施例的第10圖的逐行寫入電路如何處理第11圖的輸入張量X、關鍵權重矩陣WK及查詢矩陣Q的操作流程。 第13圖說明了根據一些實施例的用於操作第5圖的CIM電路的方法的實例流程圖。 第14圖說明了根據一些實施例的用於操作第5圖的CIM電路的另一方法的實例流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)無
100:神經網路
101:神經元
110、120、130、140:層
Claims (10)
- 一種記憶體電路,包括: 一第一緩衝器,用以儲存複數個第一資料元素; 一第二緩衝器,用以儲存複數個第二資料元素; 一控制器,用以基於一層類型產生一控制信號; 一陣列,包括複數個處理組件(PE),該些PE中的每一者包含複數個儲存單元;及 一資料路由器,用以接收該控制信號且基於該控制信號來判定是將該些第一資料元素中的一對應者還是該些第二資料元素中的多個對應者儲存於該些PE中的每一者的該些儲存單元中。
- 如請求項1所述之記憶體電路,其中該資料路由器包含: 一第一多工器,具有連接至該第二緩衝器的一第一輸入、連接至該第一緩衝器的一第二輸入及連接至該陣列的一輸入埠的一第一輸出;及 一第二多工器,具有連接至該第二緩衝器的一第三輸入、連接至該第一緩衝器的一第四輸入及連接至該陣列的一寫入埠的一第二輸出。
- 如請求項2所述之記憶體電路,其中該第一多工器用以基於該控制信號的一邏輯反相版本來選擇自該第一輸入或該第二輸入中的一者接收到的一資料元素,且該第二多工器用以基於該控制信號來選擇自該第三輸入或該第四輸入中的一者接收到的一資料元素。
- 如請求項3所述之記憶體電路,其中當該控制信號指示該層類型為一規則卷積層或一注意力層時,該第一多工器用以將該些第二資料元素輸出至該輸入埠,且該第二多工器用以將該些第一資料元素輸出至該寫入埠。
- 如請求項3所述之記憶體電路,其中當該控制信號指示該層類型為一逐深度卷積層時,該第一多工器用以將該些第一資料元素輸出至該輸入埠,且該第二多工器用以將該些第二資料元素輸出至該寫入埠。
- 如請求項5所述之記憶體電路,其中回應於該控制信號的該指示,該些PE中的每一者用以儲存該些第二資料元素中的複數個對應者。
- 一種記憶體電路,包括: 一陣列,包括複數個處理組件(PE); 其中該些PE中的每一者包含複數個儲存單元;且 其中該些PE中的每一者用以基於指示一層類型的一控制信號來選擇性地(i)將複數個第一資料元素中的一單一者儲存於該些對應儲存單元中的一者中;或(ii)將複數個第二資料元素中的複數者分別儲存於該些對應儲存單元中。
- 如請求項7所述之記憶體電路,進一步包括一資料路由器,該資料路由器用以接收該控制信號且基於該控制信號來判定是儲存該些第一資料元素中的該單一者還是該些第二資料元素中的該複數者。
- 如請求項8所述之記憶體電路,其中該資料路由器包含: 一第一多工器,具有用以接收該些第二資料元素中的至少一者的一第一輸入、用以接收該些第一資料元素中的至少一者的一第二輸入及連接至該陣列的一輸入埠的一第一輸出;及 一第二多工器,具有用以接收該些第二資料元素中的至少一者的一第三輸入、用以接收該些第一資料元素中的至少一者的一第四輸入及連接至該陣列的一寫入埠的一第二輸出。
- 一種操作記憶體電路的方法,包括以下步驟: 識別一神經網路的用於處理複數個輸入資料元素及複數個權重資料元素的一層類型; 回應於該層類型為一第一類型,將該些權重資料元素中的一單一者儲存於一對應處理組件的複數個儲存單元中的一者中;及 回應於該層類型為一第二類型,將該些輸入資料元素中的複數者分別儲存於該對應處理組件的該些儲存單元中。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202463621248P | 2024-01-16 | 2024-01-16 | |
| US63/621,248 | 2024-01-16 | ||
| US18/757,043 US20250232163A1 (en) | 2024-01-16 | 2024-06-27 | Memory circuits with multi-row storage cells and methods for operating the same |
| US18/757,043 | 2024-06-27 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202531056A TW202531056A (zh) | 2025-08-01 |
| TWI919552B true TWI919552B (zh) | 2026-03-21 |
Family
ID=
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201937490A (zh) | 2018-02-23 | 2019-09-16 | 加拿大商溫德特爾人工智慧有限公司 | 計算記憶體 |
| US20220028453A1 (en) | 2020-07-24 | 2022-01-27 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory circuit and method of operating the same |
| CN114171075A (zh) | 2021-11-30 | 2022-03-11 | 京微齐力(北京)科技有限公司 | 基于存储器阵列的数据配置电路和方法 |
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW201937490A (zh) | 2018-02-23 | 2019-09-16 | 加拿大商溫德特爾人工智慧有限公司 | 計算記憶體 |
| US20220028453A1 (en) | 2020-07-24 | 2022-01-27 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory circuit and method of operating the same |
| CN114171075A (zh) | 2021-11-30 | 2022-03-11 | 京微齐力(北京)科技有限公司 | 基于存储器阵列的数据配置电路和方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
| Haj-Ali et al. | Imaging: In-memory algorithms for image processing | |
| CN109871236A (zh) | 具有低功率并行矩阵乘法流水线的流处理器 | |
| CN112825153A (zh) | 神经网络系统中数据处理的方法、神经网络系统 | |
| US20230297819A1 (en) | Processor array for processing sparse binary neural networks | |
| CN108053848A (zh) | 电路结构及神经网络芯片 | |
| US11874897B2 (en) | Integrated circuit device with deep learning accelerator and random access memory | |
| US11887647B2 (en) | Deep learning accelerator and random access memory with separate memory access connections | |
| CN220773595U (zh) | 可重配置处理电路以及处理核心 | |
| CN113392959A (zh) | 一种在计算系统中重构架构的方法及计算系统 | |
| CN112559046A (zh) | 数据处理装置及人工智能处理器 | |
| Meng et al. | PPOAccel: A high-throughput acceleration framework for proximal policy optimization | |
| Lou et al. | 3dict: a reliable and qos capable mobile process-in-memory architecture for lookup-based cnns in 3d xpoint rerams | |
| CN109447257B (zh) | 一种通道自组织的深度神经网络加速芯片的运算装置 | |
| TWI919552B (zh) | 記憶體電路及其操作方法 | |
| Qu et al. | A coordinated model pruning and mapping framework for rram-based dnn accelerators | |
| Kuppannagari et al. | Energy performance of fpgas on perfect suite kernels | |
| KR20240044918A (ko) | Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법 | |
| US20250232163A1 (en) | Memory circuits with multi-row storage cells and methods for operating the same | |
| TWI909131B (zh) | 用於人工智慧加速器的管線化異構資料流的系統和方法 | |
| Chen et al. | An efficient ReRAM-based inference accelerator for convolutional neural networks via activation reuse | |
| Wang et al. | Parallel stateful logic in RRAM: Theoretical analysis and arithmetic design | |
| US20250094125A1 (en) | Multi-mode compute-in-memory systems and methods for operating the same | |
| CN114072778A (zh) | 存储器处理单元架构 | |
| US20250028946A1 (en) | Parallelizing techniques for in-memory compute architecture |