TWI788257B - 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置 - Google Patents
記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置 Download PDFInfo
- Publication number
- TWI788257B TWI788257B TW111117998A TW111117998A TWI788257B TW I788257 B TWI788257 B TW I788257B TW 111117998 A TW111117998 A TW 111117998A TW 111117998 A TW111117998 A TW 111117998A TW I788257 B TWI788257 B TW I788257B
- Authority
- TW
- Taiwan
- Prior art keywords
- macros
- memory
- cim
- input channels
- computation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/025—Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7842—Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- 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/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/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
-
- 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/109—Control signal input circuits
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Credit Cards Or The Like (AREA)
- Hall/Mr Elements (AREA)
- Tests Of Electronic Circuits (AREA)
- Static Random-Access Memory (AREA)
- Image Analysis (AREA)
Abstract
本揭露提出一種記憶體內計算巨集排列的方法、電腦可讀介質以及電子裝置。所述記憶體內計算巨集排列的方法包括:獲得記憶體內計算巨集的數目的資訊及記憶體內計算巨集中的每一者的維度的資訊;獲得指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目的資訊;以及根據記憶體內計算巨集的數目、記憶體內計算巨集中的每一者的維度、指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目,判斷用於對記憶體內計算巨集進行排列的記憶體內計算巨集排列,以用於對輸入通道應用卷積運算以產生輸出通道。
Description
本揭露是有關於一種記憶體內計算(compute-in-memory,CIM)巨集排列的方法及非暫時性電腦可讀介質以及電子裝置。
CIM是一種用於對流行且廣泛使用的馮諾依曼(von-Neumann)處理器/架構內的頻寬與計算不匹配問題進行解決的技術。可通過將記憶體與計算組合在同一區塊中來解決頻寬不匹配問題。然而,由於卷積神經網路的高計算要求,將使用並且應使用多個CIM巨集,但多個CIM巨集的水平/垂直比例是固定的且無法根據用於不同卷積計算的不同數目的輸入通道及輸出通道來進行調整,且所述固定的比例不會針對計算功率/能量度量
而進行優化。
本揭露提出一種CIM巨集排列的方法及非暫時性電腦可讀介質以及電子裝置。
根據示例性實施例中的一者,所述用於CIM巨集排列的方法包括:獲得CIM巨集的數目的資訊及所述CIM巨集中的每一者的維度的資訊;獲得指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目的資訊;以及根據所述CIM巨集的所述數目、所述CIM巨集中的每一者的所述維度、所述指定神經網路的所述指定卷積層的所述輸入通道的所述數目及所述輸出通道的所述數目來判斷用於對所述CIM巨集進行排列的CIM巨集排列,以用於對所述輸入通道進行卷積運算以產生所述輸出通道。
根據示例性實施例中的一者,電子裝置包括CIM巨集及處理電路。所述CIM巨集基於所述CIM巨集的數目、所述CIM巨集中的每一者的維度、以及指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目而排列成預定的CIM巨集排列。所述處理電路被配置成:在經排列的所述CIM巨集中載入權重;以及將一個輸入特徵圖的多個輸入通道輸入到具有載入的所述權重的經排列的所述CIM巨集中,以進行用於產生多個輸出特徵圖中的一者的輸出激活的卷積運算。
根據示例性實施例中的一者,所述非暫時性電腦可讀介
質存儲程式,所述程式使電腦獲得CIM巨集的數目的資訊及所述CIM巨集中的每一者的維度的資訊;獲得指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目的資訊;以及根據所述CIM巨集的所述數目、所述CIM巨集中的每一者的所述維度、所述指定神經網路的所述指定卷積層的所述輸入通道的所述數目及所述輸出通道的所述數目來判斷用於對所述CIM巨集進行排列的CIM巨集排列,以用於對所述輸入通道進行卷積運算以產生所述輸出通道。
1~256、257~512:輸入通道
75:資料線性位址處理器(DLA)
100:計算
110:3D濾波器
120:輸入特徵圖
130:輸出特徵圖
310:垂直排列
320:水平排列
330:正方形排列
410、510、610:輸入立方體
700:系統
710:中央處理器(CPU)
720:DRAM
730:DDR控制器
740:系統晶片(SoC)匯流排
750:指令解析器
760:晶片上SRAM/SRAM
770:CNN調度器
800:電子裝置
810、CIM0、CIM1、CIM2、CIM3、CIM4:CIM巨集
820:處理電路
F0、F1~F63~F127:濾波器
S202、S204、S206:步驟
圖1示出卷積神經網路(convolutional neural network,CNN)中的卷積。
圖2示出根據本揭露示例性實施例中的一者的用於CIM巨集排列的所提出方法的流程圖。
圖3示出根據本揭露示例性實施例中的一者的不同CIM巨集排列。
圖4示出根據本揭露示例性實施例中的一者的卷積運算。
圖5示出根據本揭露示例性實施例中的一者的垂直CIM巨集排列。
圖6示出根據本揭露示例性實施例中的一者的水平CIM巨集排列。
圖7示出根據本揭露示例性實施例中的一者的實行卷積運算的系統的方塊圖。
圖8示出根據本揭露示例性實施例中的一者的所提出電子裝置的示意圖。
深度神經網路(deep neural network,DNN)的常見形式是由多個卷積層構成的卷積神經網路(CNN)。在此種網路中,每一卷積層獲取輸入激活(input activation)資料且產生輸入資料的更高層次的抽象(被稱為特徵圖),所述更高層次的抽象保留必要而獨特的資訊。CNN中的卷積層中的每一者主要由高維卷積構成。舉例來說,圖1示出CNN中的卷積。
參照圖1,在此計算100中,一個層的輸入激活被構造為具有多個通道的一組二維(2D)輸入特徵圖(IX×IY且具有C個通道),所述多個通道中的每一者被稱為輸入通道。每一輸入通道與來自2D濾波器堆疊的不同2D濾波器(即,內核)進行卷積。此2D濾波器堆疊也被稱為單一個三維(3D)濾波器。多個3D濾波器110(具有維度FX×FY×C的M個濾波器)與輸入特徵圖120進行卷積。跨所有輸入通道對每一點的卷積結果進行求和。此計算的結果是一個輸出通道的所有輸出激活(output activations),即,具有維度OX×OY的一個輸出特徵圖。換句話說,3D濾波器110被應用於3D輸入特徵圖120(具有批次大小N)以創建N個
輸出特徵圖130。對於不同DNN中的不同層,輸入通道的數目(由C或IC表示)及輸出通道的數目(由M或OC表示)將依據不同的參數設計而發生大量變化。然而,現有技術中用於多個CIM巨集的CIM巨集排列是固定的且與卷積的輸入/輸出通道數目無關。
為解決上述問題,現在將在下文中參考附圖更全面地闡述本揭露的一些實施例,在附圖中示出本揭露的一些實施例但並非全部實施例。實際上,本揭露的各種實施例可以許多不同的形式來實施且不應被視為僅限於本文中陳述的實施例;確切來說,提供這些實施例是為了使本揭露滿足適用的法律要求。通篇中相同的參考編號指代相同的元件。
圖2示出根據本揭露示例性實施例中的一者的用於CIM巨集排列的所提出方法的流程圖。圖2中的步驟將由產品開發階段中的電腦系統來實施。
參照圖2,獲得CIM巨集的數目的資訊及CIM巨集中的每一者的維度的資訊(步驟S202),且獲得指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目的資訊(步驟S204)。接下來,根據CIM巨集的數目、CIM巨集中的每一者的維度、指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目來判斷用於對CIM巨集進行排列的CIM巨集排列,以用於對輸入通道進行卷積運算以產生輸出通道(步驟S206)。也就是說,通過在硬體中提供動態CIM形狀配置,在軟體中被實施為模組的CIM形狀決策器(decider)可將輸入通道及輸出通道作為輸入且決定能夠
產生最優配置的CIM形狀配置。
在本示例性實施例中,根據延遲(latency)、能量消耗(energy consumption)及利用率(utilization)來判斷能夠實行多個濾波器與輸入通道的卷積的CIM巨集排列。所述延遲與存取動態隨機存取記憶體(dynamic random access memory,DRAM)的延遲、用於將權重載入到CIM巨集中的延遲以及CIM巨集的處理時間中的至少一者相關聯。在本文中,權重意指濾波器的參數,且濾波器的參數的數目等於FX×FY×IC×OC。能量是表示用於使用一種類型的CIM巨集排列來對卷積層進行計算的能量成本的因素,且能量消耗與用於存取至少一個記憶體的能量成本相關聯,所述至少一個記憶體包括與CIM巨集位於同一晶片中的晶片上靜態隨機存取記憶體(static random access memory,SRAM)以及位於晶片之外的DRAM。利用率是CIM巨集的已使用部分對所有CIM巨集的比例。舉例來說,DRAM:SRAM:CIM=200:6:1的比例意指在存取相同數量的資料的基礎上,存取SRAM相對於存取CIM要花費6倍的能量成本。
在一種情況下,所判斷的CIM巨集排列可提供的所有CIM巨集在垂直維度的總和能夠讓此排列的CIM巨集適於以最少的批次下載次數去下載輸入通道以實行濾波器與指定卷積層的輸入通道的卷積。在另一種情況下,所判斷的CIM巨集排列可提供的所有CIM巨集在水平維度的總和能夠讓此排列的CIM巨集適於以最少的批次下載次數去下載輸入通道以實行濾波器與指定卷積
層的輸入通道的卷積。
為直觀地闡釋如何有效地使用多個CIM巨集來將計算性能最大化,圖3示出根據本揭露示例性實施例中的一者的不同CIM巨集排列。
參照圖3,CNN網路的每一卷積層可具有輸入/輸出通道的相應配置。假設CIM巨集的數目是4且每一CIM巨集具有256列(row)及64行(column)的CIM單元。如果輸入通道的數目多於輸出通道的數目,則使用垂直排列310的CIM巨集可更高效率。如果輸出通道的數目多於輸入通道的數目,則使用水平排列320的CIM巨集可更高效率。如果輸入通道的數目等於輸出通道的數目,則使用正方形排列330的CIM巨集可更高效率。
為更方便理解,圖4示出根據本揭露示例性實施例中的一者的卷積運算。
參照圖4,假設對於輸入資料來說IC=512、OX=28且OY=28,對於濾波器F0到F127來說FX=1、FY=1,且OC=128、IX=1、IY=1。在使用兩個巨集、每一巨集具有256列及64行的情形中,用於對卷積進行計算的高效CIM巨集排列可為如圖5中所示的根據本揭露示例性實施例中的一者的垂直CIM巨集排列。
參照圖5,64個濾波器F0、F1、...、F63預先存儲在CIM巨集中。輸入通道1到256被輸入到第一CIM巨集(上部CIM巨集)且輸入通道257到512被輸入到第二CIM巨集(下部CIM巨集)。換句話說,具有維度1×1×512的輸入立方體510的資料(對
應於圖4中的輸入立方體410的資料)被分成兩部分且分別被輸入到第一CIM巨集及第二CIM巨集的每一行(每一行存儲濾波器)以進行乘法運算。對於第一CIM巨集及第二CIM巨集中的每一者,由CIM巨集對每一行的256個乘法結果進行求和以作為輸出值,且外部電路可將所述兩個輸出值相加作為512個乘法結果的總和,以產生卷積輸出。因此,作為整體的第一CIM巨集與第二CIM巨集可產生64個卷積輸出。舉例來說,對於濾波器F0的行,輸出Output以及輸入Input的關係如下:,且對於濾波器F1的行,輸出Output以及輸入Input的關係如下:
其餘64個濾波器F65、F66、...、F127的卷積運算將是相似的。
在使用兩個CIM巨集、每一CIM巨集具有256列及64行的相同情形中,也可使用水平排列的CIM巨集對卷積進行計算。在此種情形中,第一半數量的輸入通道1到256可被輸入到兩個水平排列的CIM巨集的共128行(所述128行分別預先存儲128個濾波器)中的每一行,且每一行的256個乘法結果由CIM巨集進行求和以作為輸出值。然而,由於尚未對第二半數量的輸入通道257到512進行計算,因此此種輸出值無法作為完整的卷積輸出。這些輸出值(不完整的卷積輸出)必須存儲在累加緩衝器(SRAM或D觸發器(D Flip-flop,DFF))中。直到也完成第二半數量的輸入通道257到512的卷積運算才將不完整的卷積輸
出的兩個部分相加以產生128個卷積輸出。在此種情形中,在對累加緩衝器進行存取上花費較多的能量,因此其效率比使用兩個垂直排列的CIM巨集低。
接下來,假設輸入通道的數目是128且輸出通道的數目是512。由於每一巨集具有256列(大於128),因此無需將兩個CIM巨集垂直排列。單個CIM巨集將能夠完成輸入通道1到256的卷積運算(即,單個CIM巨集的利用率僅為50%)。在此種情形中,用於對卷積進行計算的高效CIM巨集排列可為如圖6中所示的根據本揭露示例性實施例中的一者的水平CIM巨集排列。
參照圖6,將一次性載入128個濾波器F0到F127,以減少載入權重的數目。相似地,輸入立方體610的資料被分別輸入到第一CIM巨集及第二CIM巨集的每一行,以用於進行對應的輸出的乘法運算。
不同的產品可應用不同的CNN架構進行資料處理。舉例來說,監視系統(surveillance system)可應用CNN架構A進行資料處理,而外科器械(surgical instrument)可應用CNN架構B進行資料處理。可由離線工具基於產品所選擇的CNN架構的卷積層的配置(即,OX、OY、IC、OC、FX、FY、...等)來預先確定產品的適當CIM巨集排列。
一旦離線確定出產品的CIM巨集排列,圖7示出根據本揭露示例性實施例中的一者的實行卷積運算的系統的方塊圖。
參照圖7,CIM巨集CIM0、CIM1、CIM2及CIM3在系
統700中排列成預定的CIM巨集排列。權重(即,濾波器的參數)及指令可存儲在DRAM 720中。當系統700接收到輸入特徵圖時,中央處理器(central processing unit,CPU)710可觸發CNN調度器770及CIM巨集CIM0到CIM3,以通過硬體(例如DRAM 720、DDR控制器730、系統晶片(system on chip,SoC)匯流排740及資料線性位址(data linear address,DLA)處理器75)對指定神經網路的指定卷積層進行卷積。CNN調度器770可從晶片上SRAM 760接收權重及輸入特徵圖(input feature map,IFM)且從指令解析器750接收CIM配置,將權重及輸入特徵圖載入到CIM0到CIM3中以進行卷積運算,從CIM0到CIM3接收CIM輸出,對所有CIM輸出實行求和以向SRAM 760產生中間結果作為當前卷積層的輸出特徵圖(output feature map,OFM)中且等待另一新的觸發。
在實際應用中,圖8示出根據本揭露示例性實施例中的一者的所提出電子裝置的示意圖,其中假設所述電子裝置由終端使用者使用。
參照圖8,電子裝置800包括多個CIM巨集810及處理電路820。CIM巨集810基於CIM巨集的數目、CIM巨集中的每一者的維度、以及指定神經網路的指定卷積層的輸入通道的數目及輸出通道的數目而排列成預定的CIM巨集排列。在本示例性實施例中,可基於圖2中提出的用於CIM巨集排列的方法來判斷預定的CIM巨集排列。處理電路820被配置成在經排列的CIM巨集
中載入權重,且將一個輸入特徵圖的多個輸入通道輸入到具有載入的權重的經排列的CIM巨集中,以進行用於產生輸出特徵圖中的一者的輸出激活的卷積運算。
在實例中,首先可將濾波器的權重載入到CIM巨集中,且然後可將輸入通道(輸入特徵圖)輸入到CIM巨集中以進行卷積運算。在另一個實例中,首先可將輸入用到載入到CIM巨集,且然後可將權重輸入到CIM巨集以進行卷積運算。
在本示例性實施例中,處理電路820基於預定的CIM巨集排列、濾波器的數目、濾波器中的每一者的每一內核的高度及寬度以及每一濾波器中的內核的數目來在經排列的CIM巨集中載入多個濾波器的權重,其中每一濾波器的內核中的每一者分別被應用於指定神經網路的指定卷積層的輸入通道中的對應一者。
在一個示例性實施例中,處理電路820將濾波器中的每一者逐行載入到經排列的CIM巨集中。處理電路820可基於每一內核的高度及寬度以及經排列的CIM巨集的水平維度的總和來判斷是否在經排列的CIM巨集中批次載入濾波器的權重。
本揭露還提供一種非暫時性電腦可讀記錄介質,所述非暫時性電腦可讀記錄介質對欲載入到電腦系統中的電腦程式進行記錄以執行所提出方法的步驟。電腦程式由多個程式指令構成。一旦程式區段被載入到電腦系統中且由電腦系統執行,便完成所提出方法的步驟。
鑒於前述說明,本揭露所提出技術使得能夠有效地使用
具有最優配置的多個CIM巨集來將計算性能最大化。
S202、S204、S206:步驟
Claims (10)
- 一種記憶體內計算巨集排列的方法,包括:獲得多個記憶體內計算巨集的數目的資訊及所述多個記憶體內計算巨集中的每一者的維度的資訊;獲得指定神經網路的指定卷積層的多個輸入通道的數目及多個輸出通道的數目的資訊;以及根據所述多個記憶體內計算巨集的所述數目、所述多個記憶體內計算巨集中的每一者的所述維度、所述指定神經網路的所述指定卷積層的所述多個輸入通道的所述數目及所述多個輸出通道的所述數目,判斷用於對所述多個記憶體內計算巨集進行排列的記憶體內計算巨集排列,以用於對所述多個輸入通道進行卷積運算以產生所述多個輸出通道。
- 如請求項1所述的方法,其中所述根據所述多個記憶體內計算巨集的所述數目、所述多個記憶體內計算巨集中的每一者的所述維度、以及所述指定神經網路的所述指定卷積層的所述多個輸入通道的所述數目及所述多個輸出通道的所述數目,判斷所述記憶體內計算巨集排列的步驟包括:根據延遲、能量消耗以及利用率,判斷能夠實行多個濾波器與所述多個輸入通道的卷積的所述記憶體內計算巨集排列。
- 如請求項1所述的方法,其中所判斷的所述記憶體內計算巨集排列提供所述多個記憶體內計算巨集的垂直維度的總和,所述多個記憶體內計算巨集適於以最小次數實行所述多個濾 波器與所述指定卷積層的所述多個輸入通道的所述卷積,以用於批次載入所述多個輸入通道。
- 如請求項1所述的方法,其中所判斷的所述記憶體內計算巨集排列提供所述多個記憶體內計算巨集的水平維度的總和,所述多個記憶體內計算巨集適於以最小次數實行所述多個濾波器與所述指定卷積層的所述多個輸入通道的所述卷積,以用於批次載入所述多個濾波器。
- 如請求項2所述的方法,其中所述延遲與動態隨機存取記憶體延遲、用於將權重載入到所述多個記憶體內計算巨集中的延遲以及所述多個記憶體內計算巨集的處理時間中的至少一者相關聯,其中所述能量消耗與用於存取至少一個記憶體的能量成本相關聯,所述至少一個記憶體包括與所述多個記憶體內計算巨集位於同一晶片中的晶片上靜態隨機存取記憶體以及位於所述晶片之外的動態隨機存取記憶體,以及其中所述利用率是所述多個記憶體內計算巨集的已使用部分對所有所述多個記憶體內計算巨集的比例。
- 一種電子裝置,包括:多個記憶體內計算巨集,其中所述多個記憶體內計算巨集基於所述多個記憶體內計算巨集的數目、所述多個記憶體內計算巨集中的每一者的維度、以及指定神經網路的指定卷積層的多個輸 入通道的數目及多個輸出通道的數目而排列成預定的記憶體內計算巨集排列;以及處理電路,被配置成:在經排列的所述多個記憶體內計算巨集中載入權重;以及將一個輸入特徵圖的多個輸入通道輸入到具有載入的所述權重的經排列的所述多個記憶體內計算巨集中,以進行用於產生多個輸出特徵圖中的一者的輸出激活的卷積運算。
- 如請求項6所述的電子裝置,其中所述處理電路基於所述預定的記憶體內計算巨集排列、多個濾波器的數目、所述多個濾波器中的每一者的多個內核中的每一內核的高度及寬度以及所述多個濾波器中的每一濾波器中的所述多個內核的數目來在經排列的所述多個記憶體內計算巨集中載入所述多個濾波器的所述權重,其中每一濾波器的所述多個內核中的每一者分別被應用於所述指定神經網路的所述指定卷積層的所述多個輸入通道中的對應一者。
- 如請求項6所述的電子裝置,其中所述處理電路將所述多個濾波器中的每一者逐行載入到經排列的所述多個記憶體內計算巨集中。
- 如請求項6所述的電子裝置,其中所述處理電路基於每一內核的所述高度及所述寬度以及經排列的所述多個記憶體內 計算巨集的水平維度的總和來判斷是否在經排列的所述多個記憶體內計算巨集中批次載入所述多個濾波器的所述權重。
- 一種非暫時性電腦可讀介質,存儲程式,所述程式使電腦:獲得多個記憶體內計算巨集的數目的資訊及所述多個記憶體內計算巨集中的每一者的維度的資訊;獲得指定神經網路的指定卷積層的多個輸入通道的數目及多個輸出通道的數目的資訊;以及根據所述多個記憶體內計算巨集的所述數目、所述多個記憶體內計算巨集中的每一者的所述維度、所述指定神經網路的所述指定卷積層的所述多個輸入通道的所述數目及所述多個輸出通道的所述數目,判斷用於對所述多個記憶體內計算巨集進行排列的記憶體內計算巨集排列,以用於對所述多個輸入通道進行卷積運算以產生所述多個輸出通道。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163187952P | 2021-05-13 | 2021-05-13 | |
US63/187,952 | 2021-05-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202244794A TW202244794A (zh) | 2022-11-16 |
TWI788257B true TWI788257B (zh) | 2022-12-21 |
Family
ID=83947578
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111117998A TWI788257B (zh) | 2021-05-13 | 2022-05-13 | 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置 |
TW111117977A TWI798081B (zh) | 2021-05-13 | 2022-05-13 | 記憶體內計算巨集裝置及電子裝置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111117977A TWI798081B (zh) | 2021-05-13 | 2022-05-13 | 記憶體內計算巨集裝置及電子裝置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20220366947A1 (zh) |
CN (2) | CN115345287A (zh) |
TW (2) | TWI788257B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118233645A (zh) * | 2022-12-20 | 2024-06-21 | 抖音视界有限公司 | 数据处理方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW202013213A (zh) * | 2018-05-22 | 2020-04-01 | 密西根大學董事會 | 記憶處理單元 |
US10915298B1 (en) * | 2019-10-08 | 2021-02-09 | Ali Tasdighi Far | Current mode multiply-accumulate for compute in memory binarized neural networks |
US20210089865A1 (en) * | 2019-09-19 | 2021-03-25 | Qualcomm Incorporated | Parallel processing of a convolutional layer of a neural network with compute-in-memory array |
TW202117561A (zh) * | 2019-10-18 | 2021-05-01 | 旺宏電子股份有限公司 | 記憶體裝置及其記憶體內計算方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200072308A (ko) * | 2018-12-12 | 2020-06-22 | 삼성전자주식회사 | 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치 |
US11132176B2 (en) * | 2019-03-20 | 2021-09-28 | Macronix International Co., Ltd. | Non-volatile computing method in flash memory |
US20230074229A1 (en) * | 2020-02-05 | 2023-03-09 | The Trustees Of Princeton University | Scalable array architecture for in-memory computing |
US11487507B2 (en) * | 2020-05-06 | 2022-11-01 | Qualcomm Incorporated | Multi-bit compute-in-memory (CIM) arrays employing bit cell circuits optimized for accuracy and power efficiency |
US11996137B2 (en) * | 2021-05-21 | 2024-05-28 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute in memory (CIM) memory array |
-
2022
- 2022-05-13 US US17/743,473 patent/US20220366947A1/en active Pending
- 2022-05-13 TW TW111117998A patent/TWI788257B/zh active
- 2022-05-13 US US17/743,476 patent/US20220366216A1/en active Pending
- 2022-05-13 CN CN202210523375.0A patent/CN115345287A/zh active Pending
- 2022-05-13 TW TW111117977A patent/TWI798081B/zh active
- 2022-05-13 CN CN202210522679.5A patent/CN115344528A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW202013213A (zh) * | 2018-05-22 | 2020-04-01 | 密西根大學董事會 | 記憶處理單元 |
US20210089865A1 (en) * | 2019-09-19 | 2021-03-25 | Qualcomm Incorporated | Parallel processing of a convolutional layer of a neural network with compute-in-memory array |
US10915298B1 (en) * | 2019-10-08 | 2021-02-09 | Ali Tasdighi Far | Current mode multiply-accumulate for compute in memory binarized neural networks |
TW202117561A (zh) * | 2019-10-18 | 2021-05-01 | 旺宏電子股份有限公司 | 記憶體裝置及其記憶體內計算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115344528A (zh) | 2022-11-15 |
TW202244722A (zh) | 2022-11-16 |
TW202244794A (zh) | 2022-11-16 |
US20220366947A1 (en) | 2022-11-17 |
CN115345287A (zh) | 2022-11-15 |
US20220366216A1 (en) | 2022-11-17 |
TWI798081B (zh) | 2023-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220327181A1 (en) | Operation accelerator | |
CN107844828B (zh) | 神经网络中的卷积计算方法和电子设备 | |
CN108108811B (zh) | 神经网络中的卷积计算方法和电子设备 | |
US20210390368A1 (en) | Buffer Addressing for a Convolutional Neural Network | |
US11886536B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
TWI639119B (zh) | 執行卷積計算的系統及方法 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
EP3179415B1 (en) | Systems and methods for a multi-core optimized recurrent neural network | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
US11461632B2 (en) | Method and apparatus for adapting parameters of neural network | |
CN109313663B (zh) | 人工智能计算辅助处理装置、方法、存储介质、及终端 | |
CN112633490B (zh) | 执行神经网络模型的数据处理装置、方法及相关产品 | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
JP7332722B2 (ja) | データ処理方法、装置、記憶媒体及び電子機器 | |
TWI788257B (zh) | 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置 | |
JP7401513B2 (ja) | ハードウェアにおけるスパース行列乗算 | |
US20240143986A1 (en) | Methods and systems for executing a neural network on a neural network accelerator | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN113469333B (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
JP7180751B2 (ja) | ニューラルネットワーク回路 | |
US20220414183A1 (en) | Winograd convolution operation method, apparatus, and device, and storage medium | |
CN114662647A (zh) | 处理用于神经网络的层的数据 | |
CN117413280A (zh) | 具有内核扩展和张量累积的卷积 | |
US11062071B2 (en) | Method for simulating a dynamic system | |
CN118503205B (zh) | 用于处理张量数据的方法和装置 |