TW202526936A - 記憶體電路及操作記憶體電路的方法 - Google Patents
記憶體電路及操作記憶體電路的方法 Download PDFInfo
- Publication number
- TW202526936A TW202526936A TW113133157A TW113133157A TW202526936A TW 202526936 A TW202526936 A TW 202526936A TW 113133157 A TW113133157 A TW 113133157A TW 113133157 A TW113133157 A TW 113133157A TW 202526936 A TW202526936 A TW 202526936A
- Authority
- TW
- Taiwan
- Prior art keywords
- subset
- data elements
- buffer
- array
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1057—Data output buffers, e.g. comprising level conversion circuits, circuits for adapting load
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1009—Data masking during input/output
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1012—Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1096—Write circuits, e.g. I/O line write drivers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
Landscapes
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Memory System (AREA)
- Dram (AREA)
- Information Transfer Systems (AREA)
- Complex Calculations (AREA)
Abstract
記憶體電路包括陣列、第一緩衝器、第二緩衝器、提取電路、及控制器。提取電路可用以在第一循環期間自第一緩衝器提取第一資料元素之第一子集並臨時儲存第一資料元素之第一子集,第一循環用於將第一資料元素之第一子集寫入沿著陣列中的列中之第一者配置的複數個處理元件(PE)之第一子集。控制器可用以控制提取電路在第二後續循環期間選擇性地限制自第一緩衝器提取第一資料元素之第二子集,第二循環用於將第一資料元素之第二子集寫入沿著列中之第二者配置的PE之第二子集。
Description
無。
記憶體裝置係電子系統之整體性組件,以允許快速存取及修改之方式儲存資料。傳統上,記憶體裝置設計成在龐大的記憶體單元陣列中以「0」及「1」之形式儲存二進制資訊。記憶體內計算(compute-in-memory,CIM)技術將處理能力直接整合至記憶體陣列中,藉由減少資料在儲存與處理元件之間的傳輸距離致能更快的資料計算。多儲存列CIM採用固定資料映射設計。
無。
以下揭示內容提供用於實施所提供標的物的不同特徵的許多不同實施例、或實例。下文描述組件及配置的特定實例以簡化本揭示實施例。當然,這些僅為實例且非意欲為限制性的。舉例而言,在以下描述中第一特徵於第二特徵上方或上的形成可包括第一特徵與第二特徵直接接觸地形成的實施例,且亦可包括額外特徵可形成於第一特徵與第二特徵之間使得第一特徵與第二特徵可不直接接觸的實施例。此外,本揭示實施例在各種實例中可重複參考數字及/或字母。此重複係出於簡單及清楚之目的,且本身且不指明所論述之各種實施例及/或組態之間的關係。
此外,為了便於描述,在本文中可使用空間相對術語,諸如「在……下方」、「在……之下」、「下部」、「在……之上」、「上部」、「頂部」、「底部」及類似者,來描述諸圖中圖示之一個元件或特徵與另一(多個)元件或特徵之關係。空間相對術語意欲涵蓋除了諸圖中所描繪的定向以外的裝置在使用或操作時的不同定向。器件可另外定向(旋轉90度或處於其他定向),且本文中所使用之空間相對描述符可類似地加以相應解釋。
深度學習利用類神經網路來實現人工智慧。這些網路包含許多互鏈的處理節點,經由分析實例資料來促進機器學習。舉例而言,設計用於識別物件的系統:其可能會處理數千物件影像,諸如貨車,以辨別及學習對應於新影像中物件的視覺模式。類神經網路的結構通常係分層的,資料以單一、正向方向流動經由這些層。網路內每一節點可連接至下一層中的多個節點(其發送資料至這些節點),以及連接至前一層中的許多節點(其自這些節點接收資料)。
在類神經網路內,節點對其連接賦予一數值,稱為「權重」。節點在啟動時可將輸入資料乘以這一權重,並將來自其全部連接的乘積進行相加,得到單個數值輸出。若輸出低於某一臨限值,則節點可阻止其進入下一層。相反,若輸出超過臨限值,則節點可將這一和傳輸至下一層中其所連接的節點。在深度學習系統中,類神經網路模型儲存於記憶體中,且處理器中的計算邏輯對儲存於記憶體中的參數(例如,權重)執行乘法累加(multiply-accumulate,MAC)計算。
習知數位乘法器以數位字形式接收兩個運算元並產生數位結果,處理符號及縮放。記憶體內計算(compute-in-memory,CIM)使用不同的方法,將權重係數作為類比值儲存於具有列與行的特殊設計之電晶體單元子陣列中。輸入的數位資料字進入CIM陣列中之列,觸發類比電壓倍數,接著沿著這些列發生類比電流求和。類比數位轉換器自求和之類比值產生最終的數位字輸出。
在多儲存列記憶體內計算(compute-in-memory,CIM)架構中,資料映射可係固定過程,其中將權重映射至儲存列。在此過程中,緩衝器中的相同資料可經多次存取。這一不靈活映射策略可導致儲存列的顯著利用不足,特別是在處理具有不同特性及要求的類神經網路層時,會導致記憶體使用效率低下及性能不佳。
此外,由於冗餘的資料處理,卷積類神經網路(convolutional neural network,CNN)中輸入啟動的處理通常會加劇能量消耗。在計算期間,自緩衝器讀取卷積窗口內的輸入啟動,轉換成單個向量,接著配送至CIM巨集以供處理。然而,這種方法會帶來效率低下;自緩衝器多次擷取不同卷積窗口間共用的重疊啟動。這一重複的提取過程不僅增加計算負載,且亦導致用於緩衝器存取的額外能量消耗,從而降低記憶體電路之整體能量效率。一種減少冗餘緩衝器存取的最佳化方法可顯著增強CIM運算之能量剖面。
本揭示實施例提供解決此類問題(例如,重複提取)的記憶體電路之各種實施例。舉例而言,本文揭示之記憶體電路包括陣列、第一緩衝器、第二緩衝器、提取電路、及控制器。提取電路可用以在第一循環期間自第一緩衝器提取第一資料元素之第一子集並臨時儲存第一資料元素之第一子集,第一循環用於將第一資料元素之第一子集寫入沿著陣列中的列中之第一者配置的複數個處理元件(processing element,PE)之第一子集。控制器可用以控制提取電路,以在第二後續循環期間選擇性地限制自第一緩衝器提取第一資料元素之第二子集,第二循環用於將第一資料元素之第二子集寫入沿著列中之第二者配置的PE之第二子集。
本揭示實施例概述了一種增強卷積類神經網路(convolutional neural network,CNN)之能量效率及處理產率的方法,CNN在人工智慧(artificial intelligence,AI)驅動之任務(諸如電腦視覺應用)中至關重要。藉由動態調適多儲存列記憶體內計算(compute-in-memory,CIM)巨集內的資料映射及運算流以適應各種類神經網路層的獨特需求,本揭示實施例提供了計算性能的顯著改善。另外,本揭示實施例引入了一種最佳化方法來減少啟動緩衝器存取。這係藉由利用基於跨步的卷積運算中固有的資料再用(CNN中的共同特徵)來實現的,從而最小化了通常與重複資料擷取相關聯的能量成本。本揭示實施例中提出的進步有望為人工智慧領域,特別是涉及卷積層的應用中的能量及操作效率設定新的基準。
本揭示實施例引入了一種自適應資料映射協定,智慧地重新組態資料配置及運算序列,以與各種類神經網路層的不同特性保持一致,從而最佳化記憶體內計算(compute-in-memory,CIM)資源之利用。這一靈活性經由實施客製周邊電路來實現,精心設計這些周邊電路以支援這一動態資料映射。這些電路旨在促進基於移位的資料提取,這種方法與基於跨步的卷積運算的固有資料再用模式(許多深度學習工作負載的特性)相一致。
此外,本揭示實施例包括一種特定寫入序列協定,這一協定根據具體硬體組態及相關工作負載之獨特需求來定製記憶體交互。這一協定在與多儲存列CIM設定內的輸入靜止資料流範例結合使用時尤其有益。藉由此,其大大提高了啟動資料之再用性,而這對提高系統之效率及產率至關重要。這種定製方法不僅減少了運算開銷,且亦簡化了計算過程,確保在最大化性能的同時將能量消耗將至最低。
本揭示實施例提供了一種先進的自適應資料映射技術,旨在顯著提高儲存列之利用率,從而增強類神經網路中之不同層上的產率及能量效率。藉由根據每一層的獨特要求智慧地調整資料至儲存列的配置,這一方法確保記憶體資源的更高效使用。作為補充,本揭示實施例引入了基於移位的寫入操作,該操作經最佳化以減少必須自緩衝器存取啟動資料的次數。這一方法不僅減少了記憶體電路上的計算負載,且亦顯著提高了能量效率。此類操作對速度與功率消耗之間的平衡至關重要的高性能計算任務而言極為關鍵。
第1圖係圖示根據一些實施例的記憶體電路100的實例之方塊圖。記憶體電路100可包括陣列110、第一緩衝器102、第二緩衝器104、提取電路106、控制器108、及第三緩衝器120。儘管第1圖中顯示了某些組件,但實施例不限於此,記憶體電路100中可包括更多或更少的組件。在一些實施例中,記憶體電路100可用作人工智慧(artificial intelligence,AI)加速器的構建區塊。
在一些實施例中,第一緩衝器102 (例如,輸入緩衝器)可包括一或多個記憶體(例如,暫存器),可接收及儲存人工智慧(artificial intelligence,AI)類神經網路的輸入(例如,輸入啟動資料)。舉例而言,這些輸入可作為輸出自例如不同記憶體電路100 (未顯示)、全域緩衝器(未顯示)、或不同裝置接收。來自輸入緩衝器102的輸入可提供至提取電路106及/或PE陣列110,以供如下所述的處理。在一些實施例中,第一緩衝器102可用以儲存第一資料元素(例如,輸入啟動或權重)並將第一資料元素輸出至陣列110。在一些實施例中,第一緩衝器102可耦接至記憶體陣列(未顯示)。記憶體陣列可包含複數個記憶體單元。複數個記憶體單元可儲存類神經網路的輸入或權重。一或多個周邊電路(未顯示)可位於記憶體陣列周邊或內部的一或多個區域處。記憶體單元及周邊電路可藉由字元線及/或互補位元線BL與BLB耦接,並可透過互補位元線BL與BLB自記憶體位單元讀取資料及寫入資料至記憶體位單元。施加至字元線與位元線的不同電壓組合可界定對記憶體位元單元的讀取、抹除、或寫入(程式化)操作。在一些實施例中,記憶體陣列架構可結合各種類型的非揮發性或揮發性記憶體技術,包括但不限於靜態隨機存取記憶體(static random-access memory,SRAM)、電阻式隨機存取記憶體(resistive random-access memory,ReRAM)、磁阻式隨機存取記憶體(magnetoresistive random-access memory,MRAM)、及相改變隨機存取記憶體(phase-change random access memory,PCRAM)。
在一些實施例中,第二緩衝器104 (例如,權重緩衝器)可包括一或多個記憶體(例如,暫存器),可接收及儲存人工智慧(artificial intelligence,AI)類神經網路的權重。權重緩衝器104可自例如不同儲存電路100 (未顯示)、全域緩衝器(未顯示)、或不同裝置接收並儲存權重。來自權重緩衝器104的權重可提供至提取電路106及/或PE陣列110,以供如下所述的處理。在一些實施例中,第二緩衝器104可用以儲存第二資料元素(例如,輸入啟動或權重)並將第二資料元素輸出至陣列110。在一些實施例中,第二緩衝器104可耦接至記憶體陣列(未顯示)。記憶體陣列可包含複數個記憶體單元。複數個記憶體單元可儲存類神經網路的輸入或權重。
在一些實施例中,陣列110可包含配置於複數個行與複數個列(例如,111、112、113、114、115、116、117、118、及119)上方的複數個處理元件(processing element,PE)。PE 111、112、113、114、115、116、117、118、119中之各者可包括暫存器(或記憶體)、多工器(mux)、乘法器、或加法器中之至少一者。暫存器可係用於傳輸資料以供CPU (中央處理單元)立即使用以進行資料處理的記憶體單元的儲存空間。多工器(mux)可係允許一或多個類比或數位輸入訊號在同一通訊傳輸鏈路上一起傳播的網路裝置。乘法器可執行暫存器及/或MUX的輸出之乘法運算。加法器可將乘法器之輸出與多工器之輸出相加。PE可接收包括輸入、權重、及先前輸出的資料訊號。PE 111、112、113、114、115、116、117、118、119中之各者可用以對複數個第一資料元素(例如,輸入啟動)中之對應者與複數個第二資料元素(例如,權重)中之對應者執行乘法累加(multiply and accumulate,MAC)運算。在一些實施例中,陣列110可係記憶體內計算(Compute-in-Memory,CIM)陣列。第一列可包括PE 111~113,第二列可包括PE 114~116,第三列可包括PE 117~119。第一行可包括PE 111、114、117,第二行可包括PE 112、115、118,第三行可包括PE 113、116、119。儘管記憶體電路100包括9個PE 111~119,但實施例並不限於此,且記憶體電路100可包括更多或更少的PE。PE 111~119可基於接收及/或儲存於第一緩衝器102 (例如,輸入緩衝器)、第二緩衝器104 (例如,權重緩衝器)、提取電路106中或自不同PE (例如,PE 111~119)接收的輸入及權重來執行乘法累加(例如,求和)運算(MAC運算)。PE (例如,PE 111)之輸出可提供至同一CIM陣列110中的一或多個不同PE (例如,PE 112、114),以供乘法及/或求和運算。
舉例而言,PE 111可自第一緩衝器102 (經由提取電路106)接收第一輸入(例如,第一資料元素)及自第二緩衝器104接收第一權重(例如,第二資料元素),並可基於第一輸入及第一權重執行乘法及/或求和運算。PE 114可接收PE 111之輸出、(經由提取電路106)自第一緩衝器102接收第二輸入、及自權重緩衝器104接收第二權重,並可基於PE 111之輸出、第二輸入、及第二權重執行乘法及/或求和運算。PE 117可接收PE 114之輸出、自第一緩衝器102 (經由提取電路106)接收第三輸入、及自權重緩衝器104接受第三權重,並基於PE 114之輸出、第三輸入、及第三權重執行乘法及/或求和運算。PE 112可接收PE 111之輸出、自第一緩衝器102 (經由提取電路106)接收第四輸入、自權重緩衝器104接收第四權重,並基於PE 111之輸出、第四輸入、及第四權重執行乘法及/或求和運算。PE 115可接收PE 112及114之輸出、自第一緩衝器102 (經由提取電路106)接收第五輸入、及自權重緩衝器104接收第五權重,並基於PE 112及114之輸出、第五輸入、及第五權重執行乘法及/或求和運算。PE 118可接收PE 115及117之輸出、自第一緩衝器102 (經由提取電路106)接收第六輸入、及自權重緩衝器104接收第六權重,並可基於PE 115及117之輸出、第六輸入、及第六權重執行乘法及/或求和運算。PE 113可接收PE 112之輸出、自第一緩衝器102 (經由提取電路106)接收第七輸入、自權重緩衝器104接收第七權重,並基於PE 112之輸出、第七輸入、及第七權重執行乘法及/或求和運算。PE 116可接收PE 113及115之輸出、自第一緩衝器102 (經由提取電路106)接收第八輸入、及自權重緩衝器104接收第八權重,並可基於PE 113及115之輸出、第八輸入、及第八權重執行乘法及/或求和運算。PE 119可接收PE 116及118之輸出、自第一緩衝器102 (經由提取電路106)接收第九輸入、及自權重緩衝器104接收第九權重,並可基於PE 116及118之輸出、第九輸入、及第九權重執行乘法及/或求和運算。針對PE陣列中之PE的底部列(例如,PE 117~119),輸出亦可提供至一或多個累加器(未顯示)或第三緩衝器120。根據實施例,第一至第九輸入及/或第一至第九權重及/或PE 111~119之輸出可轉發至PE 111~119中之一些或全部。這些運算可平行執行,使得在每個循環提供來自PE 111~119的輸出。在一些實施例中,CIM陣列110可係多儲存列記憶體內計算(compute-in-memory,CIM)。
在一些實施例中,CIM陣列110可包括一或多個累加器。累加器可對PE 111~119的結果之部分和值進行求和。舉例而言,累加器可對由PE 117針對輸入緩衝器102提供的一組輸入所提供的三個輸出進行求和。累加器中之各者可包括一或多個暫存器,儲存來自PE 117~119的輸出;及一計數器,跟蹤在將總和輸出至輸出緩衝器120之前累加運算已執行多少次。舉例而言,在累加器將總和提供至輸出緩衝器120之前,累加器可對PE 117之輸出執行三次求和運算(例如,考慮來自三個PE 111、114、117的輸出)。一旦CIM陣列中的累加器完成對部分值中之全部的求和,則可將輸出提供至輸出緩衝器120。在一些實施例中,CIM陣列110可包括數位加法器電路(或加法器樹)。加法器樹可對MAC元素求和,以經由一個輸出通道提供最終MAC結果。
在一些實施例中,提取電路106可包括複數個多工器及複數個暫存器。由控制器控制的複數個多工器中之各者可包括第一輸入、第二輸入、及耦接至暫存器中之對應者的輸出,該暫存器進一步耦接至行中之對應者。在一些實施例中,多工器與對應暫存器可以基於移位的方式彼此連接。提取電路106之詳細描述可在第5圖至第6圖中找到。在一些實施例中,提取電路106可耦接於第一緩衝器102與陣列110之間。提取電路106可用以自第一緩衝器102提取並儲存第一資料元素之第一子集。舉例而言,在第一循環期間,提取電路106可自第一緩衝器102提取第一資料元素之第一子集並臨時儲存第一資料元素之第一子集,第一循環用於將第一資料元素之第一子集寫入沿著列中之第一者配置的PE之第一子集。在一些實施例中,提取電路106可係基於移位的提取模組。考慮到CNN之重疊啟動的規則模式,基於移位的提取模組利用移位暫存器來再用重疊資料,從而避免對啟動緩衝器的重複存取。
在一些實施例中,第三緩衝器120 (例如,輸出緩衝器)可包括一或多個記憶體(例如,暫存器),可接收及儲存人工智慧(artificial intelligence,AI)類神經網路的輸出(例如,部分和)。第三緩衝器120可儲存CIM陣列110之輸出,並將這些輸出提供至不同記憶體電路(例如,處理核心)作為輸入或者提供至全域輸出緩衝器(未顯示),以供進一步處理及/或分析及/或預測。在一些實施例中,第三緩衝器120可係客製累加電路,以減少特定模式下的累加緩衝器存取。
在一些實施例中,控制器108可包括可控制耦接之組件(例如,第一緩衝器102、第二緩衝器104、第三緩衝器120、提取電路106、及CIM陣列110)的硬體組件。控制器108可耦接至提取電路106,並用以控制提取電路106以選擇性地限制自第一緩衝器102提取第一資料元素。舉例而言,在第二後續循環期間,控制器108可自第一緩衝器102提取第一資料元素之第二子集的部分,第二循環用於將第一資料元素之第二子集寫入沿著列中之第二者配置的PE之第二子集。在一些實施例中,控制器108可用以控制訊號,以滿足記憶體架構(例如,記憶體電路100)內的不同資料映射方案。這些方案對最佳化資料之空間配置係至關重要的。一種策略係將同一單個過濾器之權重分配於多個儲存列上,從而允許平行處理及提高的資料存取速度。這一映射策略可導致效率低下,特別是對具有相對小數目之每過濾器權重的層。另一方法係將不同過濾器之權重映射至多個儲存列,這可有助於同時計算各種過濾器輸出。另外,輸入啟動亦映射至多個儲存列,這係一種確保類神經網路計算所需資料的快速擷取及處理的方法。藉由實施這些靈活的映射策略,系統旨在提高儲存列利用率、提高產率、及提高能量效率。在一些實施例中,在自第一緩衝器102提取任何新資料之前,控制器108 (例如,寫入排程器)可判定是否再用提取電路106 (例如,移位暫存器)中的舊資料,依據係識別出舊資料將在CNN中的一或多個後續循環中由過濾器重疊。這種再用資料可用以在下一個列中產生新輸出(或PS)。
在人工智慧工作負載的領域中,類神經網路層在其結構維度上通常表現出很大的差異,特別是在輸出通道數目及每過濾器權重數量方面。如第1表中所示,當檢查像ResNet-50及MobileNet-v2這樣的模型時,這一多元性係顯而易見的,此類模型的層在這些維度上變化很大。對多列記憶體內計算(Compute-in-Memory,CIM)巨集中資料映射的通用方法無法滿足這一多樣性,導致記憶體資源的次最佳利用率。舉例而言,考慮到具有每MAC運算16列的64x32 CIM陣列,將相同過濾器之權重專門映射至這些儲存列可得到1024x32的映射維度。在這種方案下,儲存列可能未經充分利用,尤其是在MobileNet-v2的情況下,其中每過濾器最大權重甚至沒有達到每一行中可用的1024個儲存列。
第1表
| 工作負載 | 最小輸出通道數目 | 最大輸出通道數目 | 最小每過濾器權重數量 | 最大每過濾器權重數量 |
| ResNet-50 | 64 | 2048 | 64 | 4608 |
| MobileNet-v2 | 16 | 1280 | 9 | 960 |
本揭示實施例提出一種解決方案,藉由引入三種不同的映射方案(第3圖至第5圖),使多列CIM巨集能夠動態適應不同層的要求。這些方案允許儲存列之靈活使用,儲存列可用以映射來自相同或不同過濾器的權重,以及對應於不同卷積窗口的輸入啟動。藉由此,本揭示實施例確保儲存列之更有效使用,從而提高CIM巨集在一系列類神經網路架構上的整體利用率及性能。
第2圖圖示根據一些實施例的單儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。在一些實施例中,CIM陣列110可係單儲存列記憶體內計算(compute-in-memory,CIM)電路。在第2圖中的實例映射方案中,有3個輸入通道及4個輸出通道,使用了總共4個過濾器(例如,210、215、220、225)。每一過濾器由2x2x3權重結構界定,表示每一過濾器核心對3個輸入通道上的2x2區域進行運算。2的跨步指定過濾器在輸入空間上進行卷積時的步長。這種設定在卷積類神經網路中係典型的,其中使用多個過濾器自輸入資料萃取不同的特徵,各個產生其自身之獨特輸出通道。所述架構利用多個過濾器將3維輸入資料轉換成4通道輸出特徵映射。
在一些實施例中,CIM陣列110可係4x2 CIM陣列。在第2圖中,資料流按照權重固定資料流範例進行操作。這一組態允許在將核心應用於這些通道上的2x2區域之後,自每一輸入通道產生9個啟動向量。在這一框架內,累加器緩衝器202負責計算初始部分和(partial sum,PS)。
在初始階段(例如,步驟(a)),將第一過濾器210的第一通道中之K1至K4指定至CIM陣列110之第一行,而第二過濾器215的第一通道中之K5至K8配置至CIM陣列110之第二行。CIM陣列110可基於映射的輸入(例如,第一通道的9個啟動向量)與權重(例如,第一通道中之K1~K8)執行乘法累加(例如,求和)運算。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第一部分和(partial sum,PS),接著將其儲存於CIM陣列110內以供進一步處理。在步驟(b)中,將第一過濾器210的第二通道中之K1至K4指定至CIM陣列110之第一行,而第二過濾器215的第二通道中之K5至K8配置至CIM陣列110之第二行。CIM陣列110可基於映射的輸入(例如,9個啟動向量)與權重(例如,K1~K8)執行乘法累加(例如,求和)運算。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第二部分和(partial sum,PS),接著將其儲存於CIM陣列110內以供進一步處理。
在步驟(c)中,將第一過濾器210的第三通道中之K1至K4指定至CIM陣列110之第一行,而第二過濾器215的第三通道中之K5至K8配置至CIM陣列110之第二行。CIM陣列110可基於映射的輸入(例如,第三通道中之9個啟動向量)與權重(例如,第一通道中之K1~K8)執行乘法累加(例如,求和)運算。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第三部分和(partial sum,PS),接著將其儲存於CIM陣列110內以供進一步處理。累加器緩衝器可頻繁地更新部分和,如這一情境中展示的三輪存取所例示的。在步驟(d)中,將第三過濾器220的第一通道中之K9至K12指定至CIM陣列110之第一行,而第四過濾器225的第一通道中之K13至K16配置至CIM陣列110之第二行。CIM陣列110可基於映射的輸入(例如,第一通道中之9個啟動向量)與權重(例如,第一過濾器210的第一通道中之K1~K4)執行乘法累加(例如,求和)運算。在這些運算之後,累加器緩衝器202可負責計算並臨時保留新輸出之第一部分和(partial sum,PS),接著將其儲存於CIM陣列110內以供進一步處理。在一些實施例中,當用不同過濾器之權重更新CIM陣列110時,啟動可能需要自緩衝器重新載入多次。
在一些實施例中,在權重固定資料流中,在計算開始之前,權重經預填充並儲存於每一PE 110中,使得給定過濾器的PE中之全部沿著PE中之一行配置。輸入特徵映射(例如,IFMAP)接著可經由CIM陣列110之左邊緣串流進入,而權重在每一PE中係固定的,且每一PE在每個循環產生一個部分和。接著產生之部分和可跨越列、沿著每一行平行地縮減,以產生每行一個輸出特徵映射(例如,OFMAP)像素。除映射次序以外,輸入固定資料流類似於權重固定資料流。在每一PE中儲存展開的IFMAP,而非用權重預填充CIM陣列110。接著,權重自邊緣串流進入,每一PE在每個循環產生一個部分和。產生之部分和亦跨越列、沿著每一行平行地縮減,以產生每行一個輸出特徵映射像素。輸出固定資料流係指每一PE執行一個OFMAP的全部計算的映射,而權重及IFMAP自陣列之邊緣饋送,使用PE至PE互連分配至PE。在每一PE內產生部分和並進行縮減。一旦陣列中的全部PE均完成了OFMAP之產生,則結果係經由PE至PE互連的陣列傳輸出的資料。
第3圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。第3圖圖示用於同一過濾器之權重的多儲存列之實例映射方案。在一些實施例中,CIM陣列110可係多儲存列記憶體內計算(compute-in-memory,CIM)電路。在一些實施例中,CIM陣列110可係具有多儲存列(例如,每MAC單元兩個列)的4x2 CIM陣列。在第3圖中的實例映射方案中,有3個輸入通道及4個輸出通道,使用了總共4個過濾器。這一組態允許在將核心應用於這些通道上的2x2區域之後,自輸入通道產生多個交織啟動向量。在這一框架內,累加器緩衝器202的任務係計算初始部分和(partial sum,PS)。在一些實施例中,累加器緩衝器202可包括加法器、暫存器、多工器(MUX)、及記憶體單元(例如,SRAM)。
在這一情境中,交織輸入啟動向量310可對應於CIM陣列110的兩個儲存列320中儲存的權重。CIM陣列110的兩個儲存列320可儲存屬於同一過濾器(例如,第一過濾器210、第二過濾器215、第三過濾器220、或第四過濾器225)的權重。CIM陣列110中之每一行包括兩個儲存列。在步驟(a)中,將第一過濾器210的第一通道中之K1至K4指定至CIM陣列110的第一列之第一行。將第一過濾器210的第二通道中之K1至K4指定至CIM陣列110的第二列之第一行。第二過濾器215的第一通道中之K5至K8配置至CIM陣列110的第一列之第二行。第二過濾器215的第二通道中之K5至K8配置至CIM陣列110的第二列之第二行。CIM陣列110可基於映射的輸入(例如,第一通道中之A1、A2、A7、A8)與權重(例如,第一通道中之K1、K2、K3、及K4)執行乘法累加(例如,求和)運算。在步驟(a)中,活動列321係記憶體內計算(compute-in-memory,CIM)電路中的第一儲存列。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第一部分和(partial sum,PS) (例如,A1×K1+A2×K2+A7×K3+A8×K4),接著將其儲存於暫存器內以供進一步處理。
在步驟(b)中,CIM陣列110可基於映射的輸入(例如,第二通道中之A1、A2、A7、A8)與權重(例如,第一通道中之K1、K2、K3、及K4)執行乘法累加(例如,求和)運算。在步驟(b)中,活動列322係記憶體內計算(compute-in-memory,CIM)電路中的第二儲存列。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第二部分和(partial sum,PS) (例如,A1×K1+A2×K2+A7×K3+A8×K4),接著將其儲存於CIM陣列110內以供進一步處理。這一映射方案有效地延伸了CIM陣列110之列維度,以改善部分和再用。增加CIM陣列110的(例如,每MAC單元)列數可進一步減少對累加器緩衝器存取的需要,儘管這伴隨著增加的控制開銷與更大陣列面積之折衷。
習知地,累加係藉由將新的部分和(partial sum,PS)與自SRAM緩衝器擷取的先前的PS組合來進行的。然而,本揭示實施例引入了一種不同的方法。SEL訊號302用於動態地選擇資料源以供累加。這一選擇可在自SRAM讀取的PS 304與先前循環中儲存於暫存器中的PS之間進行。藉由提供資料源選擇的靈活性,本揭示實施例提高了累加過程的效率及適應性,滿足了不同的計算要求並最佳化了資源利用率。
第4圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。第4圖圖示用於不同過濾器的多儲存列之實例映射方案。在一些實施例中,CIM陣列110可係多儲存列記憶體內計算(compute-in-memory,CIM)電路。在一些實施例中,CIM陣列110可係具有多儲存列(例如,每MAC單元兩個列)的4x2 CIM陣列。在第4圖中的實例映射方案中,有3個輸入通道及4個輸出通道,使用了總共4個過濾器。在這一組態中,每一輸入啟動向量410可在兩個連續循環內保持活動,以與儲存於兩個儲存列中的兩組過濾器相乘。在這一框架內,累加器緩衝器202的任務係計算初始部分和(partial sum,PS)。在一些實施例中,累加器緩衝器202可包括加法器、暫存器、多工器(MUX)、及記憶體單元(例如,SRAM)。
在這一情境中,輸入啟動向量410可對應於CIM陣列110的兩個儲存列420中儲存的權重。CIM陣列110的兩個儲存列420可儲存屬於不同過濾器(例如,第一過濾器210、第二過濾器215、第三過濾器220、或第四過濾器225)的權重。在步驟(a)中,將第一過濾器210的第一通道中之K1至K4指定至CIM陣列110的第一列之第一行。將第三過濾器220的第二通道中之K9至K12指定至CIM陣列110的第二列之第一行。第二過濾器215的第一通道中之K5至K8配置至CIM陣列110的第一列之第二行。第二過濾器215的第二通道中之K5至K8配置至CIM陣列110的第二列之第二行。CIM陣列110可基於映射的輸入(例如,A1、A2、A7、A8)與權重(例如,K1、K2、K3、及K4)執行乘法累加(例如,求和)運算。在步驟(a)中,活動列421係記憶體內計算(compute-in-memory,CIM)電路中的第一儲存列。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第一部分和(partial sum,PS) (例如,A1×K1+A2×K2+A7×K3+A8×K4),接著將其儲存於暫存器內以供進一步處理。
在步驟(b)中,CIM陣列110可基於映射的輸入(例如,A1、A2、A7、A8)與權重(例如,K9、K10、K11、及K12)執行乘法累加(例如,求和)運算。在這一組態中,每一輸入啟動向量可在兩個連續循環內保持活動,以與儲存於兩個儲存列中的兩組過濾器相乘。在步驟(b)中,活動列422係記憶體內計算(compute-in-memory,CIM)電路中的第二儲存列。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第二部分和(partial sum,PS) (例如,A1×K9+A2×K10+A7×K11+A8×K12),接著將其儲存於CIM陣列110內以供進一步處理。這一映射方案有效地延伸了CIM陣列110的行維度以增強啟動再用。在CIM陣列110中實施(諸如每MAC單元)更多列可進一步減少啟動緩衝器存取,代價係需要更大的累加器緩衝器容量,此外還會引起控制及陣列面積開銷。在一些實施例中,兩組累加器202的啟動可交替進行。藉由再用啟動向量,對啟動緩衝器的存取次數可減半。
第5圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。第5圖圖示用於輸入啟動的多儲存列之實例映射方案。在一些實施例中,CIM陣列110可係多儲存列記憶體內計算(compute-in-memory,CIM)電路。在一些實施例中,CIM陣列110可係具有多儲存列(例如,每MAC單元兩個列)的4x2 CIM陣列。在第5圖中的實例映射方案中,有3個輸入通道及4個輸出通道,使用了總共4個過濾器。在這一組態中,每一展開的權重向量可在兩個連續循環內保持活動,以與CIM陣列110中的兩個儲存列中儲存的兩組啟動相乘。在這一框架內,累加器緩衝器202的任務係計算初始部分和(partial sum,PS)。在一些實施例中,累加器緩衝器202可包括加法器、暫存器、多工器(MUX)、及記憶體單元(例如,SRAM)。
在這一情境中,權重510可對應於CIM陣列110的兩個儲存列521、522中儲存的輸入啟動向量。CIM陣列110的兩個儲存列521、522可儲存與兩個卷積窗口(例如,輸入固定)相關聯的輸入啟動。在步驟(a)中,將輸入啟動250中之A1、A2、A7、A8指定至CIM陣列110的第一列之第一行。將輸入啟動250中之A5、A6、A11、A12指定至CIM陣列110的第二列之第一行。將輸入啟動250中之A3、A4、A9、A10指定至CIM陣列110的第一列之第二行。將輸入啟動250中之A13、A14、A19、A20指定至CIM陣列110的第二列之第二行。CIM陣列110可基於映射的權重(例如,K1、K2、K3、K4)與輸入(例如,A1、A2、A7、及A8)執行乘法累加(例如,求和)運算。在步驟(a)中,活動列521係記憶體內計算(compute-in-memory,CIM)電路中的第一儲存列。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第一部分和(partial sum,PS) (例如,K1×A1+K2×A2+K3×A7+K4×A8),接著將其儲存於暫存器或累加器202內以供進一步處理。
在步驟(b)中,CIM陣列110可基於映射的輸入(例如,K1、K2、K3、K4)與權重(例如,A5、A6、A11、及A12)執行乘法累加(例如,求和)運算。在這一組態中,每一展開的權重向量可在兩個連續循環內保持活動,以與CIM陣列110中的兩個儲存列中儲存的兩組啟動相乘。在步驟(b)中,活動列522係記憶體內計算(compute-in-memory,CIM)電路中的第二儲存列。在這些運算之後,累加器緩衝器202可負責計算並臨時保留第二部分和(partial sum,PS) (例如,A1×K9+A2×K10+A7×K11+A8×K12),接著將其儲存於CIM陣列110內以供進一步處理。這一映射方案有效地延伸了CIM陣列110的行維度以增強啟動再用。在CIM陣列110中實施(諸如每MAC單元)更多列可進一步減少啟動緩衝器存取,代價係需要更大的累加器緩衝器容量,此外還會引起控制及陣列面積開銷。在一些實施例中,兩組累加器202的啟動可交替進行。藉由將這一映射與基於移位之提取模組組合,可藉由施加特定的寫入序列(例如,第8圖至第10圖)來進一步利用啟動資料之再用。
第6圖係圖示根據一些實施例的記憶體電路100的實例之方塊圖。第7圖係圖示根據一些實施例的記憶體電路100的實例之方塊圖。記憶體電路可包括CIM陣列110、啟動緩衝器102、提取電路106、及寫入排程器108。儘管某些組件如第6圖及第7圖中所示,但實施例並不限於此,記憶體電路100中可包括更多或更少的組件。在一些實施例中,記憶體電路100可用作人工智慧(artificial intelligence,AI)加速器的構建區塊。第6圖及第7圖之記憶體電路100實質上類似於第1圖之記憶體電路100。為了簡潔起見,本文省略了以上段落中已詳細論述的類似元件之具體操作,除非需要引入與第6圖及第7圖中所示元件的協作關係。為了展示之簡潔性,假設將4個資料點寫入Nx4 CIM陣列。
在一些實施例中,提取電路106可包括複數個多工器602、604、606、608 (MUX)及複數個暫存器612、614、616、618。MUX 602、604、606、608可在啟動緩衝器102與相鄰暫存器之間選擇資料源。暫存器可接收MUX之輸出。暫存器之輸出可提供至CIM陣列。提取電路106可經由暫存器612、614、616、618輸出資料訊號至D[0]、D[1]、D[2]、及D[3]。在一些實施例中,提取電路106可係基於移位之提取模組。考慮到CNN的重疊啟動之規則模式,基於移位之提取模組利用移位暫存器來再用重疊資料,從而避免對啟動緩衝器的重複存取。在某些實施例中,提取電路106可包括更少的多工器(MUX) 604、606、608及更少的暫存器614、616、618。提取電路106可經由暫存器614、616、618輸出資料訊號至D[1]、D[2]、及D[3]。
在一些實施例中,寫入排程器108可包括可控制耦接組件(例如,啟動緩衝器102、提取電路106、及CIM陣列110)的硬體組件。寫入排程器108可耦接至提取電路106,並用以控制提取電路106選擇性地限制自啟動緩衝器102提取第一資料元素。舉例而言,在第二後續循環期間,寫入排程器108可自啟動緩衝器102提取第一資料元素之第二子集的部分,第二循環用於將第一資料元素之第二子集寫入沿著列中之第二者配置的PE之第二子集。在一些實施例中,寫入排程器108可用以控制滿足記憶體架構(例如,記憶體電路100)內不同資料映射方案的訊號。寫入排程器可包括讀取遮罩及寫入遮罩。讀取遮罩可用於過濾掉不必要的SRAM存取,例如,僅自SRAM提取新資料。寫入排程器108可藉由提供讀取/寫入遮罩訊號及選擇用於MUX的訊號來協調過程。寫入遮罩可選擇用於寫入的目標列。藉由適當組態列更新之序列,可最大化移位資料之再用。
第8圖圖示根據一些實施例的無需基於移位之寫入的單儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。在一些實施例中,CIM陣列110可係具有單儲存列(例如,每MAC單元一個列)的4x4 CIM陣列。在第8圖中的實例資料映射中,採用5x5x1輸入特徵映射810 (例如,IFMAP)、2x2x1過濾器820、及4x4x1輸出特徵映射830 (例如,OFMAP)。輸入啟動(例如,IFMAP)在計算開始之前經預填充並儲存於CIM陣列110中之每一PE 110中,使得給定過濾器的PE中之全部沿著PE中之一行配置。接著,權重自邊緣串流進入,每一PE在每個循環產生一個部分和。接著產生之部分和可跨越列、沿著每一行平行地縮減,以產生每行一個輸出特徵映射(例如,OFMAP)像素。
在一些實施例中,提取電路106可在每一循環期間自啟動緩衝器102 (例如,IFMAP)提取4個資料。舉例而言,在第一循環(例如,循環#1)期間,提取電路106可自IFMAP 810提取A1、A2、A3、A4。提取電路106可將A1、A2、A3、A4寫入CIM陣列110中之第一儲存列。在第二循環(例如,循環#2)期間,提取電路106可自IFMAP 810提取A2、A3、A4、A5。提取電路106可將A2、A3、A4、A5寫入CIM陣列110中之第二儲存列。在第三循環(例如,循環#3)期間,提取電路106可自IFMAP 810提取A6、A7、A8、A9。提取電路106可將A6、A7、A8、A9寫入CIM陣列110中之第三儲存列。在第四循環(例如,循環#4)期間,提取電路106可自IFMAP 810提取A7、A8、A9、A10。提取電路106可將A7、A8、A9、A10寫入CIM陣列110中之第四儲存列。在循環#4中,CIM陣列中之每一行可對應於5x5x1輸入特徵映射810 (例如,IFMAP)中的一個CONV窗口(例如,2x2 CONV窗口)。CIM陣列110可基於輸入(例如,A1、A2、A6、A7)與權重(例如,K1、K2、K3、K4)執行乘法累加(例如,求和)運算。CIM陣列110中的累加器緩衝器202可計算並產生部分和(partial sum,PS) (例如,A1×K1+A2×K2+A6×K3+A7×K4),接著將其儲存於輸出特徵映射(例如,OFMAP 830中的O1)內。
在用前一組啟動完成計算之後,自啟動緩衝器102提取新資料以重寫前一CIM陣列110。舉例而言,在第N個循環(例如,循環#N)期間,提取電路106可自IFMAP 810提取A6、A7、A8、A9。提取電路106可將A6、A7、A8、A9寫入CIM陣列110中之第一儲存列。在第N+1個循環(例如,循環#N+1)期間,提取電路106可自IFMAP 810提取A7、A8、A9、A10。提取電路106可將A7、A8、A9、A10寫入CIM陣列110中之第二儲存列。在第N+2個循環(例如,循環#N+2)期間,提取電路106可自IFMAP 810提取A11、A12、A13、A14。提取電路106可將A11、A12、A13、A14寫入CIM陣列110中之第三儲存列。在第N+3個循環(例如,循環#N+3)期間,提取電路106可自IFMAP 810提取A12、A13、A14、A15。提取電路106可將A12、A13、A14、A15寫入CIM陣列110中之第四儲存列。在循環#N+3中,CIM陣列中之每一行可對應於5x5x1輸入特徵映射810 (例如,IFMAP)中的一個CONV窗口(例如,2x2 CONV窗口)。CIM陣列110可基於輸入(例如,A6、A7、A11、A12)與權重(例如,K1、K2、K3、K4)執行乘法累加(例如,求和)運算。CIM陣列110中的累加器緩衝器202可計算並產生部分和(partial sum,PS) (例如,A6×K1+A7×K2+A11×K3+A12×K4),接著將其儲存於輸出特徵映射(例如,OFMAP 830中的O5)內。總共有自啟動緩衝器102的32個資料存取。
第9圖圖示根據一些實施例的具有基於移位之寫入的多儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。在一些實施例中,CIM陣列110可係具有兩個儲存列(例如,每MAC單元兩個列)的4x4 CIM陣列。在第9圖中的實例資料映射中,採用5x5x1輸入特徵映射810 (例如,IFMAP)、2x2x1過濾器820 (步長=1)、及4x4x1輸出特徵映射830 (例如,OFMAP)。輸入啟動(例如,IFMAP)在計算開始之前經預填充並儲存於CIM陣列110中之每一PE 110中,使得給定過濾器的PE中之全部沿著PE中之一行配置。接著,權重自邊緣串流進入,每一PE在每個循環產生一個部分和。接著產生之部分和可跨越列、沿著每一行平行地縮減,以產生每行一個輸出特徵映射(例如,OFMAP)像素。
在一些實施例中,提取電路106可在每一循環期間自啟動緩衝器102 (例如,IFMAP)提取4個資料。給定陣列組態及特定工作負載(例如,過濾器大小、步長、啟動緩衝器大小、權重緩衝器大小、核心大小、或複數個PE之大小),可預先判定資料提取模式。CIM陣列110中之每一行包括兩個儲存列(例如,902及904)。舉例而言,在第一循環(例如,循環#1)期間,提取電路106可自IFMAP 810提取A1、A2、A3、A4。提取電路106可將A1、A2、A3、A4寫入CIM陣列110中之第一儲存列902 (例如,儲存列#1.1 (MAC列號,儲存列#))。CIM陣列110可包括乘法器903 (為了簡單起見,以下循環中未顯示)。
在一些實施例中,在自第一緩衝器102提取任何新資料之前,控制器108 (例如,寫入排程器)可判定是否再用提取電路106 (例如,移位暫存器)中的舊資料,依據係識別出舊資料將在CNN中的一或多個後續循環中由過濾器重疊。舉例而言,在第二循環(例如,循環#2)期間,提取電路106可再用A2、A3、A4,並自IFMAP 810提取A5。提取電路106可將A2、A3、A4、A5寫入CIM陣列110中的第二儲存列904 (例如,儲存列#1.2 (MAC列號,儲存列#))。在第三循環(例如,循環#3)期間,提取電路106可自IFMAP 810提取A6、A7、A8、A9。提取電路106可將A6、A7、A8、A9寫入CIM陣列110中的第一儲存列906 (例如,儲存列#2.1 (MAC列號,儲存列#))。
在第四循環(例如,循環#4)期間,提取電路106可再用A6、A7、A8、A9。提取電路106可將A6、A7、A8、A9寫入CIM陣列110中的第二儲存列904 (例如,儲存列#1.2 (MAC列號,儲存列#))。這種再用資料可用以在下一個列(例如,OFMAP 830中的O5)中產生新輸出(或PS)。在第五循環(例如,循環#5)期間,提取電路106可再用A7、A8、A9,並自IFMAP 810提取A10。提取電路106可將A7、A8、A9、A10寫入CIM陣列110中的第二儲存列908 (例如,儲存列#2.2 (MAC列號,儲存列#))。
在第六循環(例如,循環#6)期間,提取電路106可再用A7、A8、A9、A10。提取電路106可將A7、A8、A9、A10寫入CIM陣列110中的第一儲存列914 (例如,儲存列#4.1 (MAC列號,儲存列#))。這種再用資料可用以在下一個列(例如,OFMAP 830中的O5)中產生新輸出(或PS)。在第七循環(例如,循環#7)期間,提取電路106可自IFMAP 810提取A11、A12、A13、A14。提取電路106可將A11、A12、A13、A14寫入CIM陣列110中的第二儲存列912 (例如,儲存列#3.2 (MAC列號,儲存列#))。在第八循環(例如,循環#8)期間,提取電路106可再用A12、A13、A14,並自IFMAP 810提取A15。提取電路106可將A12、A13、A14、A15寫入CIM陣列110中的第二儲存列916 (例如,儲存列#4.2 (MAC列號,儲存列#))。在第9圖中,相同的權重可分別與兩組啟動相乘(經由列切換),以自CIM陣列110中之每一行產生兩個部分和。舉例而言,CIM陣列110可基於第一儲存列中的輸入(例如,A1、A2、A6、A7)與權重(例如,K1、K2、K3、K4)執行乘法累加(例如,求和)運算。CIM陣列110內的累加器緩衝器202可計算並產生部分和(partial sum,PS) (例如,A1×K1+A2×K2+A6×K3+A7×K4),接著將其儲存於輸出特徵映射(例如,OFMAP 830中的O1)內。CIM陣列110可基於第二儲存列中的輸入(例如,A6、A7、A11、A12)與權重(例如,K1、K2、K3、K4)執行乘法累加(例如,求和)運算。CIM陣列110內的累加器緩衝器202可計算並產生部分和(partial sum,PS) (例如,A6×K1+A7×K2+A11×K3+A12×K4),接著將其儲存於輸出特徵映射(例如,OFMAP 830中的O5)內。總共有對啟動緩衝器102的15個存取,表示與先前32的計數相比減少了2倍以上,同時有對移位暫存器106的9個存取。
第10圖圖示根據一些實施例的具有基於移位之寫入的多儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。在一些實施例中,CIM陣列110可係具有三個儲存列(例如,每MAC單元三個列)的4x4 CIM陣列。在第10圖中的實例資料映射中,採用5x5x1輸入特徵映射810 (例如,IFMAP)、2x2x1過濾器820 (步長=1)、及4x4x1輸出特徵映射830 (例如,OFMAP)。輸入啟動(例如,IFMAP)在計算開始之前經預填充並儲存於CIM陣列110中之每一PE 110中,使得給定過濾器的PE中之全部沿著PE中之一行配置。接著,權重自邊緣串流進入,每一PE在每個循環產生一個部分和。接著產生之部分和可跨越列、沿著每一行平行地縮減,以產生每行一個輸出特徵映射(例如,OFMAP)像素。
在一些實施例中,提取電路106可在每一循環期間自啟動緩衝器102 (例如,IFMAP)提取4個資料。給定陣列組態及特定工作負載(例如,過濾器大小、步長、啟動緩衝器大小、權重緩衝器大小,核心大小、或複數個PE之大小),可預先判定資料提取模式。CIM陣列110中之每一行包括三個儲存列(例如,1002、1004、及1006)。舉例而言,在第一循環(例如,循環#1)期間,提取電路106可自IFMAP 810提取A1、A2、A3、A4。提取電路106可將A1、A2、A3、A4寫入CIM陣列110中的第一儲存列1002 (例如,儲存列#1.1 (MAC列號,儲存列#))。CIM陣列110可包括乘法器(為了簡單起見未顯示)。
在一些實施例中,在自第一緩衝器102提取任何新資料之前,控制器108 (例如,寫入排程器)可判定是否再用提取電路106 (例如,移位暫存器)中的舊資料,依據係識別出舊資料將在CNN中的一或多個後續循環中由過濾器重疊。舉例而言,在第二循環(例如,循環#2)期間,提取電路106可再用A2、A3、A4,並自IFMAP 810提取A5。提取電路106可將A2、A3、A4、A5寫入CIM陣列110中的第一儲存列1008(例如,儲存列#2.1 (MAC列號,儲存列#))。在第三循環(例如,循環#3)期間,提取電路106可自IFMAP 810提取A6、A7、A8、A9。提取電路106可將A6、A7、A8、A9寫入CIM陣列110中的第一儲存列1014 (例如,儲存列#3.1 (MAC列號,儲存列#))。
在第四循環(例如,循環#4)期間,提取電路106可再用A6、A7、A8、A9。提取電路106可將A6、A7、A8、A9寫入CIM陣列110中的第二儲存列1004 (例如,儲存列#1.2 (MAC列號,儲存列#))。這種再用資料可用以在下一個列(例如,OFMAP 830中的O5)中產生新輸出(或PS)。在第五循環(例如,循環#5)期間,提取電路106可再用A7、A8、A9,並自IFMAP 810提取A10。提取電路106可將A7、A8、A9、A10寫入CIM陣列110中的第二儲存列1010 (例如,儲存列#2.2 (MAC列號,儲存列#))。
在第六循環(例如,循環#6)期間,提取電路106可再用A7、A8、A9、A10。提取電路106可將A7、A8、A9、A10寫入CIM陣列110中的第一儲存列1020 (例如,儲存列#4.1 (MAC列號,儲存列#))。這種再用資料可用以在下一個列(例如,OFMAP 830中的O5)中產生新輸出(或PS)。在第七循環(例如,循環#7)期間,提取電路106可自IFMAP 810提取A11、A12、A13、A14。提取電路106可將A11、A12、A13、A14寫入CIM陣列110中的第二儲存列1016 (例如,儲存列#3.2 (MAC列號,儲存列#))。在第八循環(例如,循環#8)期間,提取電路106可再用A12、A13、A14,並自IFMAP 810提取A15。提取電路106可將A12、A13、A14、A15寫入CIM陣列110中的第三儲存列1006 (例如,儲存列#1.3 (MAC列號,儲存列#))。
在第九循環(例如,循環#9)期間,提取電路106可再用A12、A13、A14,並自IFMAP 810提取A15。提取電路106可將A12、A13、A14、A15寫入CIM陣列110中的第三儲存列1012 (例如,儲存列#2.3 (MAC列號,儲存列#))。在第十循環(例如,循環#10)期間,提取電路106可再用A12、A13、A14、A15。提取電路106可將A12、A13、A14、A15寫入CIM陣列110中的第二儲存列1022 (例如,儲存列#4.2 (MAC列號,儲存列#))。在第十一循環(例如,循環#11)期間,提取電路106可自IFMAP 810提取A16、A17、A18、A19。提取電路106可將A16、A17、A18、A19寫入CIM陣列110中的第三儲存列1018 (例如,儲存列#3.3 (MAC列號,儲存列#))。在第十二循環(例如,循環#12)期間,提取電路106可再用A17、A18、A19,並自IFMAP 810提取A20。提取電路106可將A17、A18、A19、A20寫入CIM陣列110中的第三儲存列1024 (例如,儲存列#4.3 (MAC列號,儲存列#))。在第10圖中,相同的權重可分別與三組啟動相乘(經由列切換),以自CIM陣列110中之每一行產生三個部分和。舉例而言,CIM陣列110可基於第一儲存列中的輸入(例如,A1、A2、A6、A7)與權重(例如,K1、K2、K3、K4)執行乘法累加(例如,求和)運算。CIM陣列110內的累加器緩衝器202可計算並產生部分和(partial sum,PS) (例如,A1×K1+A2×K2+A6×K3+A7×K4),接著將其儲存於輸出特徵映射(例如,OFMAP 830中的O1)內。CIM陣列110可基於第二儲存列中的輸入(例如,A6、A7、A11、A12)與權重(例如,K1、K2、K3、K4)執行乘法累加(例如,求和)運算。CIM陣列110內的累加器緩衝器202可計算並產生部分和(partial sum,PS) (例如,A6×K1+A7×K2+A11×K3+A12×K4),接著將其儲存於輸出特徵映射(例如,OFMAP 830中的O5)內。CIM陣列110可基於第三儲存列中的輸入(例如,A11、A12、A16、A17)與權重(例如,K1、K2、K3、K4)執行乘法累加(例如,求和)運算。CIM陣列110內的累加器緩衝器202可計算並產生部分和(partial sum,PS) (例如,A11×K1+A12×K2+A16×K3+A17×K4),接著將其儲存於輸出特徵映射(例如,OFMAP 830中的O9)內。多增加一個儲存列(列#3)允許再用為列#2提取的資料來寫入列#3,從而進一步節省開支。藉由根據每一層的獨特需求智慧地調整資料配置至儲存列,這一方法確保了記憶體資源的更高效利用。
第11圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。在一些實施例中,CIM陣列110可係具有兩個儲存列(例如,每MAC單元兩個列)的9x4 CIM陣列。在第11圖中的實例資料映射中,採用9x9x1輸入特徵映射1110 (例如,IFMAP)、3x3x1過濾器1120 (步長=2)、及4x4x1輸出特徵映射830 (例如,OFMAP)。輸入啟動(例如,IFMAP)在計算開始之前經預填充並儲存於CIM陣列110中之每一PE 110中,使得給定過濾器的PE中之全部沿著PE中之一行配置。接著,權重自邊緣串流進入,每一PE在每個循環產生一個部分和。接著產生之部分和可跨越列、沿著每一行平行地縮減,以產生每行一個輸出特徵映射(例如,OFMAP)像素。
在一些實施例中,提取電路106可在每一循環期間自啟動緩衝器102 (例如,IFMAP)提取4個資料。給定陣列組態及特定工作負載(例如,過濾器大小、步長、啟動緩衝器大小、權重緩衝器大小,核心大小、或複數個PE之大小),可預先判定資料提取模式。CIM陣列110中之每一行包括兩個儲存列。在一些實施例中,移位暫存器硬體保持不變,因為其仍然需要一步移位。在第11圖中,寫入協定根據情況而變化,諸如第8圖中所描繪的實例,以適應不同的情境。
第12圖圖示根據一些實施例的操作記憶體內計算(compute-in-memory,CIM)電路100的實例方法之流程圖。應注意,方法1200僅係實例,並不旨在限制本揭示實施例。因此,可理解,在第12圖之方法1200期間、之前、及之後可提供任何額外的操作,並本文僅簡要描述一些其他操作。方法1200可用於操作記憶體電路110,因此,將結合第1圖至第11圖所述的組件來論述方法1200中之操作。
簡要概述,方法1200開始自操作1202,接收複數個第一資料元素。在一些實施例中,提取電路可自第一緩衝器102接收複數個第一資料元素。接下來,方法1200進行至操作1204,在第一循環期間提取第一資料元素之第一子集並臨時儲存第一資料元素之第一子集,第一循環用於將第一資料元素之第一子集寫入複數個處理元件(processing element,PE)之第一子集。舉例而言,第一循環期間,提取電路106可自第一緩衝器102提取第一資料元素之第一子集並臨時儲存第一資料元素之第一子集,第一循環用於將第一資料元素之第一子集寫入沿著列中之第一者配置的PE之第一子集。考慮到CNN的重疊啟動之規則模式,提取電路106可利用移位暫存器來再用重疊資料。
接下來,方法1200進行至操作1206,基於與複數個第一資料元素相關聯的人工智慧(artificial intelligence,AI)類神經網路之組態來判定是否再用第一資料元素之第一子集中之至少一者。在一些實施例中,AI類神經網路之組態包括過濾器大小、步長、啟動緩衝器大小、權重緩衝器大小、核心大小、或複數個PE之大小中之至少一者。在一些實施例中,在自第一緩衝器102提取任何新資料之前,控制器108 (例如,寫入排程器)可判定是否再用提取電路106 (例如,移位暫存器)中的舊資料,依據係識別出舊資料可在CNN中的一或多個後續循環中由過濾器重疊。
接下來,方法1200進行至操作1208,基於是否再用第一子集中之至少一者的判定,在第二後續循環期間選擇性地限制提取第一資料元素之第二子集,第二循環用於將第一資料元素中之第二子集寫入PE之第二子集。舉例而言,在某一循環(例如,循環#2)期間,提取電路106可再用第一子集的部分(例如,A2、A3、A4),並自第一緩衝器102提取新資料(例如,A5)。
本揭示實施例概述一種提高卷積類神經網路(convolutional neural network,CNN)之能量效率及處理產率的方法,CNN在人工智慧(artificial intelligence,AI)驅動之任務(諸如電腦視覺應用)中至關重要。藉由動態調整多儲存列記憶體內計算(compute-in-memory,CIM)巨集內的資料映射及運算流以適應各種類神經網路層之獨特需求,本揭示實施例提供了計算性能的顯著提高。
如本文所用,術語「約」及「大約」一般意謂所述值的正負10%。舉例而言,約0.5將包括0.45及0.55,約10將包括9至11,約1000將包括900至1100。
前述內容概述若干實施例的特徵,使得熟習此項技術者可更佳地理解本揭示實施例的態樣。熟習此項技術者應瞭解,其可易於使用本揭示實施例作為用於設計或修改用於實施本文中引入之實施例之相同目的及/或達成相同優勢之其他製程及結構的基礎。熟習此項技術者亦應認識至,此類等效構造並不偏離本揭示實施例的精神及範疇,且此類等效構造可在本文中進行各種改變、取代、及替代而不偏離本揭示實施例的精神及範疇。
100:記憶體電路
102:第一緩衝器/輸入緩衝器
104:第二緩衝器/權重緩衝器
106:提取電路
108:控制器
110:陣列
111~119:PE
120:第三緩衝器
202:累加器緩衝器
210:第一過濾器
215:第一過濾器
220:第三過濾器
225:第四過濾器
250:輸入啟動
302:SEL訊號
304:PS
310:輸入啟動向量
320:儲存列
321~322:活動列
410:輸入啟動向量
420:儲存列
421~422:活動列
510:權重
521~522:儲存列
602~608:MUX
612~618:暫存器
810:輸入特徵映射
820:過濾器
830:輸出特徵映射
902:第一儲存列
903:乘法器
904:第二儲存列
906:第一儲存列
908:第二儲存列
910:第一儲存列
912:第二儲存列
914:第一儲存列
916:第二儲存列
1002:第一儲存列
1004:第二儲存列
1006:第三儲存列
1008:第一儲存列
1010:第二儲存列
1012:第三儲存列
1014:第一儲存列
1016:第二儲存列
1018:第三儲存列
1020:第一儲存列
1022:第二儲存列
1024:第三儲存列
1110:輸入特徵映射
1120:過濾器
1130:輸出特徵映射
1200:方法
1202~1208:操作
本揭示實施例的態樣在與隨附諸圖一起研讀時自以下詳細描述內容來最佳地理解。應注意,根據行業中的標準規範,各種特徵未按比例繪製。實際上,各種特徵的維度可為了論述清楚經任意地增大或減小。
第1圖係圖示根據一些實施例的記憶體電路的實例之方塊圖。
第2圖圖示根據一些實施例的單儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。
第3圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。
第4圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。
第5圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)電路中的實例映射方案。
第6圖係根據一些實施例的記憶體電路的實例之方塊圖。
第7圖係根據一些實施例的記憶體電路的實例之方塊圖。
第8圖圖示根據一些實施例的單儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。
第9圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。
第10圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。
第11圖圖示根據一些實施例的多儲存列記憶體內計算(compute-in-memory,CIM)陣列中的實例資料映射。
第12圖圖示根據一些實施例的操作記憶體內計算(compute-in-memory,CIM)電路的實例方法之流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
100:記憶體電路
102:第一緩衝器/輸入緩衝器
104:第二緩衝器/權重緩衝器
106:提取電路
108:控制器
110:陣列
111~119:PE
120:第三緩衝器
Claims (20)
- 一種記憶體電路,其包含: 一陣列,包含配置於複數個行及複數個列上方的複數個處理元件,其中該些處理元件中之各者用以對複數個第一資料元素中之一對應者與複數個第二資料元素中之一對應者執行一乘法累加運算; 一第一緩衝器,用以儲存該些第一資料元素並將該些第一資料元素輸出至該陣列; 一第二緩衝器,用以儲存該些第二資料元素並將該些第二資料元素輸出至該陣列; 一提取電路,耦接於該第一緩衝器與該陣列之間,其中該提取電路用以在一第一循環期間自該第一緩衝器提取該些第一資料元素之一第一子集並臨時儲存該些第一資料元素之該第一子集,該第一循環用於將該些第一資料元素之該第一子集寫入沿著該些列中之一第一者配置的該些處理元件之一第一子集;及 一控制器,耦接至該提取電路,並用以控制該提取電路以在一第二後續循環期間選擇性地限制自該第一緩衝器提取該些第一資料元素之一第二子集,該第二循環用於將該些第一資料元素之該第二子集寫入沿著該些列中之一第二者配置的該些處理元件之一第二子集。
- 如請求項1所述之記憶體電路,其中該提取電路包括複數個多工器及複數個暫存器。
- 如請求項2所述之記憶體電路,其中由該控制器控制的該些多工器中之各者包括一第一輸入、一第二輸入、及耦接至該些暫存器中之一對應者的一輸出,該暫存器進一步耦接至該些行中之一對應者。
- 如請求項3所述之記憶體電路,其中該些多工器與該些對應暫存器以一基於移位之方式彼此連接,使得該些多工器中之一第一者的該第一輸入耦接至該第一緩衝器,其中該第一多工器的該第二輸入耦接至該些暫存器中之一第二者的一輸出;該些多工器中之一第二者的該第一輸入耦接至該第一緩衝器,其中該第二多工器的該第二輸入耦接至該些暫存器中之一第三者的一輸出;且該些多工器中之一第三者的該第一輸入耦接至該第一緩衝器,其中該第三多工器的該第二輸入耦接至該些暫存器中之一第四者的一輸出。
- 如請求項2所述之記憶體電路,其中該些第一資料元素之該第一子集在該第一循環期間臨時儲存於該些暫存器中之一些中。
- 如請求項5所述之記憶體電路,其中在該第二循環期間,該些第一資料元素之該第二子集中之一或多者保持儲存於該些暫存器中之一些中。
- 如請求項1所述之記憶體電路,其中該些第一資料元素之該第一子集與該些第一資料元素之該第二子集藉由該些第一資料元素中之一者而彼此不同。
- 如請求項1所述之記憶體電路,其中該些第一資料元素之該第一子集與該些第一資料元素之該第二子集彼此完全不同。
- 如請求項1所述之記憶體電路,其中該些第一資料元素之該第一子集與該些第一資料元素之該第二子集彼此完全相同。
- 如請求項1所述之記憶體電路,其中該些第二資料元素中之至少一者用以與該些第一資料元素之一第三子集及與該些第一資料元素之一第四子集相乘。
- 如請求項10所述之記憶體電路,其中該些第一資料元素之該第三子集及該些第一資料元素之該第四子集分別寫入該些列中之一第三者及該些列中之一第四者中,且其中該第三列與該第四列彼此緊靠地設置。
- 一種記憶體電路,其包含: 一陣列,包含配置於複數個行及複數個列上方的複數個處理元件,其中處理元件中之各者用以對複數個第一資料元素中之一對應者與複數個第二資料元素中之一對應者執行一乘法累加運算; 一提取電路,耦接至該陣列並用以在一第一循環期間自一對應緩衝器提取該些第一資料元素之一第一子集,該第一循環用於將該些第一資料元素之該第一子集寫入沿著該些列中之一第一者配置的該些處理元件之一第一子集;及 一控制器,耦接至該提取電路並用以使得該提取電路在一第二後續循環期間限制自該緩衝器提取該些第一資料元素之一第二子集,該第二循環用於將該些第一資料元素之該第二子集寫入沿著該些列中之一第二者配置的該些處理元件之一第二子集。
- 如請求項12所述之記憶體電路,其中該緩衝器係用以儲存該些第一資料元素並將該些第一資料元素輸出至該陣列的一啟動緩衝器,或者用以儲存該些第二資料元素並輸出該些第二資料元素至該陣列的一權重緩衝器。
- 如請求項12所述之記憶體電路,其中該提取電路包括複數個多工器及複數個暫存器。
- 如請求項14所述之記憶體電路,其中由該控制器控制的該些多工器中之各者包括一第一輸入、一第二輸入、及耦接至該些暫存器中之一對應者的一輸出,該暫存器進一步耦接至該些行中之一對應者。
- 如請求項15所述之記憶體電路,其中該些多工器與該些對應暫存器以該基於移位之方式彼此連接,使得該些多工器中之一第一者的該第一輸入耦接至該緩衝器,其中該第一多工器的該第二輸入耦接至該些暫存器中之一第二者的一輸出;該些多工器中之一第二者的該第一輸入耦接至該緩衝器,其中該第二多工器的該第二輸入耦接至該些暫存器中之一第三者的一輸出;且該些多工器中之一第三者的該第一輸入耦接至該緩衝器,其中該第三多工器的該第二輸入耦接至該些暫存器中之一第四者的一輸出。
- 如請求項14所述之記憶體電路,其中該些第一資料元素之該第一子集在該第一循環期間臨時儲存於該些暫存器中之一些中。
- 如請求項17所述之記憶體電路,其中該些第一資料元素之該第二子集中之一或多者在該第二循環期間保持儲存於該些暫存器中之一些中。
- 一種操作記憶體電路的方法,該方法包含以下步驟: 經由一緩衝器接收複數個第一資料元素; 在一第一循環期間經由該緩衝器提取該些第一資料元素之一第一子集並臨時儲存該些第一資料元素之該第一子集,該第一循環用於將該些第一資料元素之該第一子集寫入複數個處理元件之一第一子集; 基於與該些第一資料元素相關聯的一人工智慧類神經網路之一組態,經由該緩衝器判定是否再用該些第一資料元素之該第一子集中之至少一者;及 基於是否再用該第一子集中之該至少一者的判定,在一第二後續循環期間選擇性地限制經由該緩衝器提取該些第一資料元素之一第二子集,該第二循環用於將該些第一資料元素之該第二子集寫入該些處理元件之一第二子集。
- 如請求項19所述之方法,其中該人工智慧類神經網路之該組態包括一過濾器大小、一步長、一啟動緩衝器大小、一權重緩衝器大小、一核心大小、或該些處理元件之一大小中之至少一者。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202363613528P | 2023-12-21 | 2023-12-21 | |
| US63/613,528 | 2023-12-21 | ||
| US18/642,339 | 2024-04-22 | ||
| US18/642,339 US20250210078A1 (en) | 2023-12-21 | 2024-04-22 | System and method for improving efficiency of multi-storage-row compute-in-memory |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202526936A true TW202526936A (zh) | 2025-07-01 |
Family
ID=95295174
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW113133157A TW202526936A (zh) | 2023-12-21 | 2024-09-02 | 記憶體電路及操作記憶體電路的方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US20250210078A1 (zh) |
| CN (1) | CN119828971A (zh) |
| TW (1) | TW202526936A (zh) |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20220383081A1 (en) * | 2021-05-28 | 2022-12-01 | Meta Platforms Technologies, Llc | Bandwidth-aware flexible-scheduling machine learning accelerator |
| WO2024263505A1 (en) * | 2023-06-18 | 2024-12-26 | Flex Logix Technologies, Inc. | Extreme-throughput fast-fourier-transform (fft) via multi-stage tensor processing |
-
2024
- 2024-04-22 US US18/642,339 patent/US20250210078A1/en active Pending
- 2024-09-02 TW TW113133157A patent/TW202526936A/zh unknown
- 2024-12-23 CN CN202411906018.8A patent/CN119828971A/zh active Pending
-
2025
- 2025-07-30 US US19/285,632 patent/US20250356890A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| CN119828971A (zh) | 2025-04-15 |
| US20250356890A1 (en) | 2025-11-20 |
| US20250210078A1 (en) | 2025-06-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
| KR102492477B1 (ko) | 행렬 곱셈기 | |
| CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
| TWI639119B (zh) | 執行卷積計算的系統及方法 | |
| CN107153873B (zh) | 一种二值卷积神经网络处理器及其使用方法 | |
| CN108628799B (zh) | 可重构的单指令多数据脉动阵列结构、处理器及电子终端 | |
| Huang et al. | A high performance multi-bit-width booth vector systolic accelerator for NAS optimized deep learning neural networks | |
| CN106970896A (zh) | 面向向量处理器的二维矩阵卷积的向量化实现方法 | |
| CN112506567A (zh) | 数据读取方法和数据读取电路 | |
| Liu et al. | WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs | |
| KR20220149729A (ko) | 프로세싱 인 메모리를 사용하는 카운터 기반 곱셈 | |
| WO2019205617A1 (zh) | 一种矩阵乘法的计算方法及装置 | |
| US20200019847A1 (en) | Processor array for processing sparse binary neural networks | |
| CN113010213A (zh) | 基于阻变忆阻器的精简指令集存算一体神经网络协处理器 | |
| EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
| TWI851030B (zh) | 用於人工智慧加速器的處理核心、可重組態處理元件及其操作方法 | |
| CN118426835A (zh) | 数据处理方法、系统、装置、计算机设备和存储介质 | |
| CN116050492B (zh) | 一种扩展单元 | |
| TW202526936A (zh) | 記憶體電路及操作記憶體電路的方法 | |
| CN118093018B (zh) | 一种存内计算核、存内运算方法、存内处理器及处理方法 | |
| TWI844108B (zh) | 積體電路及操作方法 | |
| Mun et al. | Bottleneck-stationary compact model accelerator with reduced requirement on memory bandwidth for edge applications | |
| Qu et al. | A coordinated model pruning and mapping framework for rram-based dnn accelerators | |
| Miao | A Review on Important Issues in GCN Accelerator Design | |
| US20250232163A1 (en) | Memory circuits with multi-row storage cells and methods for operating the same |