TWI727641B - 記憶體裝置及其操作方法 - Google Patents
記憶體裝置及其操作方法 Download PDFInfo
- Publication number
- TWI727641B TWI727641B TW109103232A TW109103232A TWI727641B TW I727641 B TWI727641 B TW I727641B TW 109103232 A TW109103232 A TW 109103232A TW 109103232 A TW109103232 A TW 109103232A TW I727641 B TWI727641 B TW I727641B
- Authority
- TW
- Taiwan
- Prior art keywords
- weight matrix
- indicator
- information
- memory device
- accumulating
- Prior art date
Links
- 238000000034 method Methods 0.000 title abstract description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 107
- 238000012545 processing Methods 0.000 claims abstract description 30
- 239000000872 buffer Substances 0.000 claims description 39
- 238000009825 accumulation Methods 0.000 claims description 36
- 238000011017 operating method Methods 0.000 claims description 12
- 238000013473 artificial intelligence Methods 0.000 claims description 8
- 101100289995 Caenorhabditis elegans mac-1 gene Proteins 0.000 description 18
- 238000013528 artificial neural network Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000005265 energy consumption Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010191 image analysis Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3557—Indexed addressing using program counter as base address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/045—Combinations of networks
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Abstract
一種記憶體裝置及其操作方法。記憶體裝置包括模式配置暫存器、系統記憶體陣列、指標器及包含有多個乘積累加單元的運算電路。模式配置暫存器儲存權重矩陣資訊及基準位址。系統記憶體陣列自基準位址起依據權重矩陣資訊安排特徵地圖的多個特徵值的儲存位址。指標器儲存基準位址及權重矩陣大小,以提供指標資訊。運算電路依據指標資訊依序或並行讀取特徵值。運算電路依據權重矩陣資訊,將選中權重矩陣中的多個權重係數及對應的特徵值並行地配置於對應的各乘積累加單元中,並使乘積累加單元平行地進行乘積累加運算,以輸出中間層特徵值至處理單元。
Description
本發明是有關於一種記憶體架構,且特別是有關於一種可執行人工智慧(Artificial Intelligence,AI)運算的記憶體裝置及其運算方法。
隨著AI運算的演進,AI運算的應用範圍越來越廣泛。例如,經由神經網路模型來進行影像分析、語音分析、自然語言處理等神經網路運算。因此,各技術領域持續地投入AI的研發與應用,適用於卷積神經網路(Convolutional Neural Network,CNN)及深度神經網路(Deep Neural Networks, DNN)等等的各種演算法也不斷推陳出新。
無論是哪一種神經網路運算所使用的演算法,在隱藏層(Hidden layer)中所使用的資料量非常龐大,以達成機器學習的功能。伴隨於此,處理晶片對於其外部記憶體裝置的資料搬移量也會大增。然而,在目前的范紐曼型架構(Von Neumann architecture)中,記憶體裝置是處於被動的角色,其僅提供資料讀寫的功能而不具有AI運算功能。因此,處理晶片與記憶體裝置間來回大量的資料讀寫便成為各種演算法在提升運算速度與降低能耗上的難以突破瓶頸。
本發明提供一種可執行AI運算的記憶體裝置及其操作方法,可將特徵地圖(Feature map)中的資料依據神經網路運算所要使用的權重矩陣(亦稱為卷積核(kernel)或是濾波器(filter))安排在適當的儲存位址,並搭配內建的乘積累加單元(MAC unit)而在記憶體裝置內進行卷積運算。
本發明的記憶體裝置適用於AI運算。記憶體裝置包括模式配置暫存器、系統記憶體陣列、指標器以及包含有多個乘積累加單元的運算電路。模式配置暫存器儲存權重矩陣資訊以及基準位址。系統記憶體陣列自基準位址起依據權重矩陣資訊安排特徵地圖的多個特徵值的儲存位址。指標器耦接系統記憶體陣列。指標器儲存基準位址以及權重矩陣大小,以提供指標資訊。運算電路耦接模式配置暫存器以及指標器。運算電路依據指標資訊依序或並行讀取多個特徵值。運算電路依據權重矩陣資訊,將選中權重矩陣中的多個權重係數以及對應的特徵值並行地配置於對應的各乘積累加單元中,並使乘積累加單元平行地進行乘積累加運算,以產生多個中間層特徵值,並且運算電路輸出中間層特徵值至處理單元。
在本發明的一實施例中,上述的各乘積累加單元包括第一緩衝器、第二緩衝器以及第三緩衝器。運算電路依據權重矩陣資訊將權重係數排列配置在第一緩衝器,並且將對應的特徵值排列配置在第二緩衝器,以在第三緩衝器提供對應的中間層特徵值。
本發明的記憶體裝置的操作方法適用於具有指標器以及多個乘積累加單元的記憶體裝置。操作方法包括下列步驟:儲存權重矩陣資訊以及基準位址;自基準位址起依據權重矩陣資訊安排特徵地圖中的多個特徵值的儲存位址;將基準位址以及權重矩陣大小儲存至指標器中,以提供指標資訊;依據指標資訊依序或並行讀取多個特徵值;依據權重矩陣資訊,將選中權重矩陣中的多個權重係數以及對應的特徵值並行地配置於對應的各乘積累加單元中;利用乘積累加單元平行地進行乘積累加運算,以產生多個中間層特徵值;以及輸出中間層特徵值至處理單元。
基於上述,本發明的記憶體裝置及其操作方法可充分利用內建的乘積累加單元來平行地處理大量密集的矩陣運算,以分擔隱藏層中所需的運算。藉此,不僅提升了神經網路運算的運算速度,還大幅降低處理晶片與記憶體裝置間來回搬送的資料量,從而降低能耗。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
觀察隱藏層可發現,卷積神經網路或深度神經網路的運算基礎實際上是大量密集的矩陣運算。矩陣運算的範圍(行列大小)則是取決於將特徵地圖進行卷積運算時所使用的權重矩陣。據此,本發明可依據權重矩陣資訊自動分解矩陣運算,以適當地安排特徵地圖所具有的特徵值的儲存位址。此外,本發明的記憶體儲存裝置內建有乘積累加單元。藉此,可在記憶體儲存裝置中將特定儲存位址的特徵值與權重係數進行乘積累加運算,以在記憶體裝置內分擔進行隱藏層所需的運算。
以下請參照圖1,圖1是依照本發明一實施例所繪示之記憶體裝置的電路示意圖。在圖1中,記憶體裝置100耦接至外部的處理單元180。處理單元180例如是中央處理單元(Central Processing Unit,CPU)、圖形處理器(Graphics Processing Unit,GPU)、張量處理器(Tensor Processing Unit,TPU),或是其他可程式化之一般用途或特殊用途的微處理器(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似裝置或這些裝置的組合。
本發明實施例的記憶體裝置100可執行隱藏層中的權重矩陣與特徵地圖的卷積運算。詳細來說,當經由神經網路模型來進行影像分析時,使用者可透過處理單元180給定在卷積運算中所要使用的權重矩陣。接著,記憶體裝置100可按照步長(stride)設定使權重矩陣於特定的特徵地圖中依序地滑動,並且與特徵地圖中的對應區域進行卷積運算,直到掃描完特徵地圖中的所有區域,從而產生新的特徵地圖。也就是說,記憶體裝置100可將特定的特徵地圖依據權重矩陣的大小分成多個區域,並分別將各區域內的特徵值與權重矩陣運算後即能得出輸出新的特徵地圖。
如圖1所示,記憶體裝置100包括模式配置暫存器110、系統記憶體陣列120、向量陣列130、指標器140、運算電路150以及回饋控制單元160。運算電路150具有多個乘積累加單元MAC_1~MAC_9。
模式配置暫存器110可儲存權重矩陣資訊WMI以及基準位址BA。權重矩陣資訊WMI包括要拿來進行卷積運算的選中權重矩陣WM及權重矩陣大小FS(列數及行數)等相關資訊。使用者可透過處理單元180將權重矩陣資訊WMI以及基準位址BA儲存於模式配置暫存器110中。然而,在其他實施例中,權重矩陣資訊WMI以及基準位址BA也可被預先經由任何方式而儲存至模式配置暫存器110中,本發明並不以此為限。
系統記憶體陣列120可例如是由動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)及靜態隨機存取記憶體(Static Random Access Memory,SRAM)等揮發性記憶體元件,或是由快閃記憶體、相變化記憶體、電阻式記憶體等非揮發性記憶體元件所構成。處理單元180可自系統記憶體陣列120的基準位址BA起依據權重矩陣資訊安排特徵地圖FM的多個特徵值X11~X69的儲存位址。以下利用圖2進行說明。
圖2是依照本發明一實施例所繪示之記憶體裝置的操作方法的範例。在圖2中,特徵地圖FM包括特徵值X11~X69,權重矩陣WM包括權重係數W11~W33。在圖2右方則表示了系統記憶體陣列120內資料的儲存位址。在本實施例中將選中權重矩陣WM舉例為3x3的矩陣,但在其他實施例中也可以其他大小的權重矩陣進行卷積運算,本發明並不以此為限。
記憶體裝置100可從模式配置暫存器110所儲存的權重矩陣資訊WMI來得知在特徵地圖FM上進行運算的對應區域的大小也會是3x3的矩陣。並且,記憶體裝置100可推斷出當以區域A1作為進行卷積運算的對應區域時,會進行如以下公式(1)所示的運算。
公式(1)
其中,Z11~Z33是將權重係數W11~W33與特徵值X11~X69進行卷積運算所產生的中間值特徵值。
因此,如圖2所示,處理單元180可自系統記憶體陣列120的基準位址BA(位址1)依據權重矩陣資訊WMI安排特徵地圖FM中的特徵值X11~X33的儲存位址,以使特徵值X11~X33的儲存位址可以符合公式(1)中矩陣的運算順序。也就是說,由於選中權重矩陣WM的行數為3,處理單元180會將同一行的三個特徵值X11~X31與下一行的三個特徵值X12~X32安排在系統記憶體陣列120的連續的儲存位址(位址1~位址6),以符合公式(1)中矩陣的運算順序。其他特徵值的儲存位址也可以此類推。
請回到圖1,向量陣列130可例如是由動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)及靜態隨機存取記憶體(Static Random Access Memory,SRAM)等揮發性記憶體元件,或是由快閃記憶體、相變化記憶體、電阻式記憶體等非揮發性記憶體元件所構成。向量陣列130耦接模式配置暫存器110以及運算電路150。向量陣列130儲存了多個權重矩陣。向量陣列130可依據模式配置暫存器110所儲存的權重矩陣資訊WMI自所儲存的多個權重矩陣中選擇所要用的選中權重矩陣WM,以提供至運算電路150。
此外,如圖1所示,在本實施例中,系統記憶體陣列120以及向量陣列130是整合在記憶體裝置100的同一個主記憶體陣列190中,並且可例如依據模式配置暫存器110中所儲存的資訊對系統記憶體陣列120以及向量陣列130的記憶體位址與範圍進行調整。然而,本發明並不以此為限,在其他實施例中,系統記憶體陣列120以及向量陣列130也可分別位於不同的記憶體元件中。
指標器140耦接模式配置暫存器110、系統記憶體陣列120以及運算單元150。指標器140可從模式配置暫存器110接收並儲存基準位址BA以及權重矩陣大小FS,以提供指標資訊PI。具體來說,使用者可透過處理單元180將基準位址BA、權重矩陣大小FS以及步長設定SN儲存於模式配置暫存器110中,以提供至指標器140。經由適當地電路配置與運算,可基於權重矩陣大小FS計算出卷積運算中所使用的特徵值的資料長度DL,使指標器140所提供的指標資訊PI可針對每次卷積運算指示出系統記憶體陣列120中特徵值的儲存位址,以讓運算電路150正確地讀取所需的特徵值。
舉例來說,圖3是依照本發明一實施例所繪示之指標器的電路示意圖。指標器140包括指標暫存器300以及資料長度暫存器310。指標暫存器300用以接收並儲存當前的基準位址BA(位址1)。資料長度暫存器310用以接收並儲存在對應區域的卷積運算中所使用的特徵值的資料長度DL。當以圖2中特徵地圖FM的區域A1作為進行卷積運算的對應區域時,由於區域A1包含9個特徵值X11~X33,其資料長度DL為9。據此,指標器140可依據儲存於指標暫存器300以及資料長度暫存器310的內容,提供指標資訊PI,以指示特徵值X11~X33在系統記憶體陣列120中的儲存位址(位址1~位址9)。
請回到圖1,運算電路150耦接模式配置暫存器110、向量陣列130以及指標器140。當利用選中權重矩陣WM對特徵地圖FM中的對應區域進行卷積運算時,運算電路150可依據指標資訊PI依序讀取特徵值X11~X69。接著,運算電路150可依據權重矩陣資訊WMI,將選中權重矩陣WM中的權重係數W11~W33以及對應的特徵值分別配置於對應的各乘積累加單元MAC_1~MAC_9中,並使乘積累加單元MAC_1~MAC_9平行地進行乘積累加運算以產生多個中間層特徵值IFD,且將這些中間層特徵值IFD依序或並行地輸出至處理單元180。
首先,對以圖2所示的特徵地圖FM的區域A1作為進行卷積運算的對應區域的情況進行說明。此時,由於指標器140的指標暫存器300所儲存的基準位址BA為特徵值X11在系統記憶體陣列120中的儲存位址(位址1),資料長度暫存器310也儲存了在區域A1的卷積運算中所使用的特徵值的資料長度DL(長度為9)。運算電路150可依據指標器140所提供的指標資訊PI,自系統記憶體陣列120依序或並行地讀取出位址1~位址9所對應的特徵值X11~X33。
接著,運算電路150可依據權重矩陣資訊WMI,將選中權重矩陣WM中的權重係數W11~W33以及特徵值X11~X33並行地配置於對應的各乘積累加單元MAC_1~MAC_9中。
舉例來說,圖4是依照本發明一實施例所繪示之各乘積累加單元的配置方式的範例。運算電路150依據權重矩陣資訊WMI可得知是要以3x3的選中權重矩陣WM進行卷積運算。因此,如圖4所示,運算電路150會以選中權重矩陣WM的三個行權重係數,搭配特徵地圖FM的三個列特徵值分別配置於各乘積累加單元MAC_1~MAC_9中。
在圖4中,各乘積累加單元MAC_1~MAC_9皆包括第一緩衝器BF1、第二緩衝器BF2以及第三緩衝器BF3。如圖4所示,運算電路150可依據權重矩陣資訊WMI將權重係數W11~W33排列配置在各乘積累加單元MAC_1~MAC_9的第一緩衝器BF1,將特徵值X11~X33排列配置在各乘積累加單元MAC_1~MAC_9的第二緩衝器BF2。舉例來說,如圖4所示,在乘積累加單元MAC_1中,運算電路150將選中權重矩陣WM的三個行權重係數W11、W12、W13配置於第一緩衝器BF1中,並且將特徵地圖FM的三個列特徵值X11、X21、X31配置於第二緩衝器BF2中,以對應公式(1)中的矩陣運算。其他乘積累加單元的配置方式也可以此類推。
各乘積累加單元MAC_1~MAC_9中的第一緩衝器BF1、第二緩衝器BF2以及第三緩衝器BF3可例如以特定範圍的記憶體陣列來實現。第一緩衝器BF1、第二緩衝器BF2以及第三緩衝器BF3可以是以暫存器、靜態隨機存取記憶體、動態隨機存取記憶體或其組合來實施。本發明充分利用了記憶體陣列中資料可平行地讀出的特性,將資料從系統記憶體陣列120平行地讀出到乘積累加單元MAC_1~MAC_9中,然後在運算電路150中使乘積累加單元MAC_1~MAC_9平行地進行乘積累加運算。並且,通過適當地線路配置使中間層特徵值Z11~Z33暫存在各乘積累加單元MAC_1~MAC_9的第三緩衝器BF3中,且自這些第三緩衝器BF3依序或並行地輸出。
需說明的是,第一緩衝器BF1、第二緩衝器BF2以及第三緩衝器BF3的大小,可依據選中權重矩陣WM的大小而適當進行調整。再者,由於在本案記憶體裝置100中可透過乘積累加單元MAC_1~MAC_9平行地進行乘積累加運算,可大量減少運算所需的時間,大幅提升處理速度。
此外,在一實施例中,運算電路150還可包括乘積累加配置單元170。乘積累加配置單元170可以例如包括依需求而設計的多個邏輯閘。乘積累加配置單元170被配置為依據權重矩陣資訊WMI,將乘積累加單元MAC_1~MAC_9分為多個組,以控制同一組的乘積累加單元平行地進行乘積累加運算,且控制不同組的乘積累加單元依序地進行乘積累加運算。
在圖1中,回饋控制單元160可例如包括傳送閘。回饋控制單元160耦接模式配置暫存器110、系統記憶體陣列120以及運算電路150。在一實施例中,處理單元180可將保留資訊RI儲存於模式配置暫存器110中。當中間層特徵值IFD需要被拿來進行下一階層的運算時,回饋控制單元160可依據模式配置暫存器110所提供的保留資訊RI將中間層特徵值IFD存回至系統記憶體陣列120,以作為新的特徵值。於一實施例中,中間層特徵值IFD覆蓋了原本儲存在系統記憶體陣列120的指定位置的特徵值,藉以在節省記憶空間的要求下更新特徵值。詳細來說,保留資訊RI被配置以啟用回饋控制單元160,藉以使運算電路150所輸出的中間層特徵值IFD被提供至系統記憶體陣列120儲存,而不輸出至處理單元180。此外,回饋控制單元160可更包括用以控制傳送閘的計數器,且保留資訊RI也可包含將中間層特徵值IFD存回至系統記憶體陣列120的次數。藉此,回饋控制單元160可依據保留資訊RI將運算電路150所迭代運算出的多個中間層特徵值IFD分次地存回至系統記憶體陣列120,以自動地進行資料的反饋與迭代運算。
圖5是依照本發明一實施例所繪示之模式配置暫存器的配置方式的範例。如圖5所示,於一實施例中,模式配置暫存器110可包括多個暫存單元MR1~MR5,暫存單元MR1儲存權重矩陣大小FS,暫存單元MR2儲存權重係數,暫存單元MR3儲存基準位址BA,暫存單元MR4儲存步長設定SN,且暫存單元MR5儲存保留資訊RI。
接著,在將圖2所示特徵地圖FM的區域A1的卷積運算執行完畢之後,指標器140可依據當前指標暫存器300中所儲存的基準位址、權重矩陣資訊WMI以及步長設定SN來更新指標暫存器300中所儲存的基準位址,以提供更新後的指標資訊PI。藉此,可依據步長設定SN於特徵地圖FM中進行滑動,以選擇新的區域來進行卷積運算。
以下舉例說明在步長設定SN為1的情況下,在指標資訊PI被更新以滑動至選擇新的區域後,對於系統記憶體陣列130的讀取方式。圖6A~圖6D是依照本發明一實施例所繪示之記憶體裝置的操作方法的範例。在圖6A~圖6C中,分別繪示了滑動操作S1~S3,以依序地在特徵地圖FM中進行滑動以選擇區域A2~A4。在圖6D中,繪示了在滑動操作S1之前與在滑動操作S1~S3中,指標器140所提供的多個指標資訊PI,以及根據這些指標資訊PI從系統記憶體陣列120所讀取的對應於各區域A1~A4的特徵值。這些區域A1~A4的特徵值將依序地被提供至運算電路150以進行卷積運算。
具體來說,指標器140可依據當前的基準位址、選中權重矩陣WM的行數以及步長設定SN來更新基準位址,以進行滑動操作。其中更新後的基準位址滿足下述關係:
BA_2=BA_1+[(Column of Filter )x SN]
DL(Data Length) = Row_size x Column_size 公式(2)
其中,BA_1為當前的基準位址(指標暫存器300中所儲存的當前基準位址BA)。SN為步長設定。BA_2為更新後的基準位址。其中步長設定SN與對特徵地圖FM進行掃描的解析度有關。步長設定SN可依需求調整 。
如圖6A所示,滑動操作S1用以自以實線表示的區域A1滑動至以虛線表示的區域A2。接著,如圖6B所示,滑動操作S2用以自以實線表示的區域A2滑動至以虛線表示的區域A3。接著,如圖6C所示,滑動操作S3用以自實線表示的區域A3滑動至以虛線表示的區域A4。
為了實現滑動操作S1~S3,指標器140必須針對各滑動操作提供對應的指標資訊PI。如圖6D所示,在滑動操作S1前,指標器140所提供的指標資訊PI_1指到位址1,亦即指標暫存器300所儲存的基準位址為位址1,以將區域A1進行卷積操作。
於滑動操作S1中,在選中權重矩陣WM的行數為3,步長設定SN為1的情況下,將位址1作為當前的基準位址BA_1而帶入公式(2)中,可得到更新後的基準位址BA_2為4(位址4)。藉此,如圖6D所示,運算電路150可依據指標器140所提供的更新後的指標資訊PI_2依序讀取位址4~位址12中的特徵值X12~X34,以將區域A2進行卷積運算。
於滑動操作S2中,在選中權重矩陣WM行數為3,步長設定SN為1的情況下,將位址4作為當前的基準位址BA_1而帶入公式(2)中,可得到更新後的基準位址BA_2為7(位址7)。藉此,如圖6D所示,運算電路150可依據指標器140所提供的更新後的指標資訊PI_3依序讀取位址7~位址15中的特徵值X13~X35,以將區域A3進行卷積運算。
於滑動操作S3中,在選中權重矩陣WM的行數為3,步長設定SN為1的情況下,將位址7作為當前的基準位址BA_1而帶入公式(2)中,可得到更新後的基準位址BA_2為10(位址10)。藉此,如圖6D所示,運算電路150可依據指標器140所提供的更新後的指標資訊PI_4依序讀取位址10~位址18中的特徵值X14~X36,以將區域A4進行卷積運算。以此類推,運算電路150可依據指標器140所提供的指標資訊PI依序地讀取特徵地圖FM中剩下的特徵值,並且進行卷積運算,直到掃描完特徵地圖FM中的所有區域為止。
圖7A是依照本發明一實施例所繪示之記憶體裝置的操作方法的流程圖。請參照圖7A,在本實施例中記憶體裝置的操作方法包括下列步驟。儲存權重矩陣資訊以及基準位址(步驟S610)。接著,自基準位址起依據權重矩陣資訊安排特徵地圖中的多個特徵值的儲存位址(步驟S620)。接著,將基準位址以及權重矩陣大小儲存至指標器中,以提供指標資訊(步驟S630)。依據指標資訊依序或並行地讀取特徵值(步驟S640)。接著,依據權重矩陣資訊,將選中權重矩陣中的多個權重係數以及對應的特徵值並行地配置於對應的各乘積累加單元中(步驟S650)。利用乘積累加單元平行地進行乘積累加運算,以產生多個中間層特徵值(步驟S660)。輸出中間層特徵值至處理單元(步驟S670)。
圖7B也是依照本發明一實施例所繪示之記憶體裝置的操作方法的流程圖。與前述實施例不同的是,於此實施例中,在步驟S660之後0更包括判斷指標資訊的基準位址與資料長度的和是否等於系統記憶體陣列用以儲存特徵地圖的最終位址(步驟S661)。當指標資訊的基準位址與資料長度的和等於系統記憶體陣列用以儲存特徵地圖的最終位址時,輸出中間層特徵值至處理單元(步驟S670)。當指標資訊的基準位址與資料長度的和不等於系統記憶體陣列120用以儲存特徵地圖的最終位址,更新指標資訊(步驟S680)並回到步驟S640。
圖7C也是依照本發明一實施例所繪示之記憶體裝置的操作方法的流程圖。與前述實施例不同的是,於此實施例中,步驟S610’更包括儲存保留資訊。並且,在步驟S660之後與步驟S670之前,依據保留資訊將中間層特徵值存回至系統記憶體陣列,以作為新的特徵值(步驟S662)。於一實施例中,保留資訊包括特徵值的更新次數,並依據保留資訊將多個中間層特徵值分次地存回至系統記憶體陣列。其中,上述步驟的細節可參照圖1至圖6的實施例,在此則不再贅述。
綜上所述,本發明的記憶體裝置及其操作方法可充分利用內建的乘積累加單元來平行地處理大量密集的矩陣運算。一旦提供了卷積運算所使用的權重矩陣的相關資訊,本發明的記憶體裝置即可分擔隱藏層中所需的運算。藉此,不僅提升了神經網路運算的運算速度,還大幅降低處理晶片與記憶體裝置間來回搬送的資料量,從而降低能耗。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100:記憶體裝置
110:模式配置暫存器
120:系統記憶體陣列
130:向量陣列
140:指標器
150:運算電路
160:回饋控制單元
170:乘積累加配置單元
180:處理單元
190:主記憶體陣列
300:指標暫存器
310:資料長度暫存器
A1~A4:區域
BA:基準位址
BF1:第一緩衝器
BF2:第二緩衝器
BF3:第三緩衝器
DL:資料長度
FM:特徵地圖
FS:權重矩陣大小
IFD:中間層特徵值
MAC_1~MAC_9:乘積累加單元
MR1~MR5:暫存單元
PI、PI_1、PI_2、PI_3、PI_4:指標資訊
RI:保留資訊
S1~S3:滑動操作
SN:步長設定
W11~W33:權重係數
WM:選中權重矩陣
WMI:權重矩陣資訊
X11~X69:特徵值
Z11~Z33:中間層特徵值
步驟:S610~S680、S661、S662、S610’
圖1是依照本發明一實施例所繪示之記憶體裝置的電路示意圖。
圖2是依照本發明一實施例所繪示之記憶體裝置的操作方法的範例。
圖3是依照本發明一實施例所繪示之指標器的電路示意圖。
圖4是依照本發明一實施例所繪示之各乘積累加單元的配置方式的範例。
圖5是依照本發明一實施例所繪示之模式配置暫存器的配置方式的範例。
圖6A~圖6D是依照本發明一實施例所繪示之記憶體裝置的操作方法的範例。
圖7A~圖7C是依照本發明一實施例所繪示之記憶體裝置的操作方法的流程圖。
100:記憶體裝置
110:模式配置暫存器
120:系統記憶體陣列
130:向量陣列
140:指標器
150:運算電路
160:回饋控制單元
170:乘積累加配置單元
180:處理單元
190:主記憶體陣列
BA:基準位址
FS:權重矩陣大小
FM:特徵地圖
IFD:中間層特徵值
MAC_1~MAC_9:乘積累加單元
PI:指標資訊
RI:保留信號
SN:步長設定
WM:選中權重矩陣
WMI:權重矩陣資訊
X11~X69:特徵值
Claims (12)
- 一種記憶體裝置,適用於人工智慧運算,該記憶體裝置包括: 一模式配置暫存器,儲存一權重矩陣資訊以及一基準位址; 一系統記憶體陣列,自該基準位址起依據該權重矩陣資訊安排一特徵地圖的多個特徵值的儲存位址; 一指標器,耦接該模式配置暫存器以及該系統記憶體陣列,接收並儲存該基準位址以及一權重矩陣大小,以提供一指標資訊;以及 一運算電路,耦接該模式配置暫存器以及該指標器,依據該指標資訊依序或並行讀取該些特徵值, 其中該運算電路包括多個乘積累加單元,該運算電路依據該權重矩陣資訊,將一選中權重矩陣中的多個權重係數以及對應的該些特徵值並行地配置於對應的各該些乘積累加單元中,並使該些乘積累加單元平行地進行乘積累加運算,以產生多個中間層特徵值,並且該運算電路輸出該些中間層特徵值至一處理單元。
- 如申請專利範圍第1項所述的記憶體裝置,其中各該些乘積累加單元包括一第一緩衝器、一第二緩衝器以及一第三緩衝器,該運算電路依據該權重矩陣資訊將該些權重係數排列配置在該第一緩衝器,將對應的該些特徵值排列配置在該第二緩衝器,以在該第三緩衝器提供對應的該中間層特徵值。
- 如申請專利範圍第1項所述的記憶體裝置,其中該模式配置暫存器更儲存在該對應區域的卷積運算中所使用的該些特徵值的一步長設定, 該指標器經配置而基於該權重矩陣大小計算出一資料長度,且該指標器包括: 一指標暫存器,接收並儲存該基準位址;以及 一資料長度暫存器,接收並儲存該資料長度, 該指標器依據當前該指標暫存器中所儲存的該基準位址、該權重矩陣資訊以及該步長設定來更新該指標暫存器中所儲存的該基準位址,以提供更新後的該指標資訊,藉此依據該步長設定於該特徵地圖中進行滑動。
- 如申請專利範圍第1項所述的記憶體裝置,其中該記憶體裝置包括更包括: 一向量陣列,耦接該模式配置暫存器以及該運算電路,儲存多個權重矩陣, 其中該向量陣列依據該權重矩陣資訊自該些權重矩陣中選擇該選中權重矩陣,以提供至該運算電路。
- 如申請專利範圍第1項所述的記憶體裝置,其中該運算電路更包括: 一乘積累加配置單元,依據該權重矩陣資訊,將該些乘積累加單元分為多個組,以控制同一組的該些乘積累加單元平行地進行乘積累加運算,且控制不同組的該些乘積累加單元依序地進行乘積累加運算。
- 如申請專利範圍第1項所述的記憶體裝置,其中該模式配置暫存器更儲存一保留資訊, 該記憶體裝置更包括: 一回饋控制單元,耦接該模式配置暫存器、該系統記憶體陣列以及該運算電路,依據該保留資訊將該些中間層特徵值存回至該系統記憶體陣列,以作為新的特徵值。
- 一種記憶體裝置的操作方法,適用於具有一指標器以及多個乘積累加單元的記憶體裝置,該操作方法包括下列步驟: 儲存一權重矩陣資訊以及一基準位址; 自該基準位址起依據該權重矩陣資訊安排一特徵地圖的多個特徵值的儲存位址; 將該基準位址以及一權重矩陣大小儲存至該指標器中,以提供一指標資訊; 依據該指標資訊依序或並行讀取該些特徵值; 依據該權重矩陣資訊,將一選中權重矩陣中的多個權重係數以及對應的該些特徵值並行地配置於對應的各該些乘積累加單元中; 利用該些乘積累加單元平行地進行乘積累加運算,以產生多個中間層特徵值;以及 輸出該些中間層特徵值至一處理單元。
- 如申請專利範圍第7項所述的記憶體裝置的操作方法,其中各該些乘積累加單元包括一第一緩衝器、一第二緩衝器以及一第三緩衝器,該依據該權重矩陣資訊,將該選中權重矩陣中的該些權重係數以及對應的該些特徵值並行地配置於對應的各該些乘積累加單元中的步驟包括: 依據該權重矩陣資訊將該些權重係數排列配置在該第一緩衝器,將對應的該些特徵值排列配置在該第二緩衝器,以在該第三緩衝器提供對應的該中間層特徵值。
- 如申請專利範圍第7項所述的記憶體裝置的操作方法,其中該指標器包括一指標暫存器,該操作方法更包括: 基於該權重矩陣大小計算出一資料長度; 依據當前該指標暫存器中所儲存的該基準位址、該權重矩陣資訊以及一步長設定來更新該指標暫存器中所儲存的該基準位址,以提供更新後的該指標資訊,藉此依據該步長設定於該特徵地圖中進行滑動。
- 如申請專利範圍第7項所述的記憶體裝置的操作方法,更包括: 依據該權重矩陣資訊自多個權重矩陣中選擇該選中權重矩陣,以提供至該些乘積累加單元。
- 如申請專利範圍第7項所述的記憶體裝置的操作方法,其中該利用該些乘積累加單元平行地進行乘積累加運算的步驟包括: 依據該權重矩陣資訊,將該些乘積累加單元分為多個組; 控制同一組的該些乘積累加單元平行地進行乘積累加運算;以及 控制不同組的該些乘積累加單元依序地進行乘積累加運算。
- 如申請專利範圍第7項所述的記憶體裝置的操作方法,更包括: 依據一保留資訊儲存該些中間層特徵值,以作為新的特徵值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109103232A TWI727641B (zh) | 2020-02-03 | 2020-02-03 | 記憶體裝置及其操作方法 |
US17/163,587 US11188344B2 (en) | 2020-02-03 | 2021-02-01 | Apparatus and method for generating intermediate layer values in parallel |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109103232A TWI727641B (zh) | 2020-02-03 | 2020-02-03 | 記憶體裝置及其操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI727641B true TWI727641B (zh) | 2021-05-11 |
TW202131317A TW202131317A (zh) | 2021-08-16 |
Family
ID=77036255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109103232A TWI727641B (zh) | 2020-02-03 | 2020-02-03 | 記憶體裝置及其操作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11188344B2 (zh) |
TW (1) | TWI727641B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107392305A (zh) * | 2016-05-13 | 2017-11-24 | 三星电子株式会社 | 实现和执行神经网络的方法及计算机可读介质 |
US20180082181A1 (en) * | 2016-05-13 | 2018-03-22 | Samsung Electronics, Co. Ltd. | Neural Network Reordering, Weight Compression, and Processing |
WO2019023984A1 (en) * | 2017-08-02 | 2019-02-07 | Intel Corporation | SYSTEM AND METHOD FOR INCLUSION OF NEURAL NETWORKS 1 AMONG N ON AN AUTOMATIC LEARNING COMPUTER PLATFORM |
WO2019104695A1 (zh) * | 2017-11-30 | 2019-06-06 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、芯片、设备及相关方法 |
US20200012608A1 (en) * | 2016-10-27 | 2020-01-09 | Google Llc | Exploiting input data sparsity in neural network compute units |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3025344B1 (fr) * | 2014-08-28 | 2017-11-24 | Commissariat Energie Atomique | Reseau de neurones convolutionnels |
US11544539B2 (en) * | 2016-09-29 | 2023-01-03 | Tsinghua University | Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system |
CN107832844A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
US11681902B2 (en) * | 2019-09-27 | 2023-06-20 | Amazon Technologies, Inc. | Transposed convolution using systolic array |
-
2020
- 2020-02-03 TW TW109103232A patent/TWI727641B/zh active
-
2021
- 2021-02-01 US US17/163,587 patent/US11188344B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107392305A (zh) * | 2016-05-13 | 2017-11-24 | 三星电子株式会社 | 实现和执行神经网络的方法及计算机可读介质 |
US20180082181A1 (en) * | 2016-05-13 | 2018-03-22 | Samsung Electronics, Co. Ltd. | Neural Network Reordering, Weight Compression, and Processing |
US20200012608A1 (en) * | 2016-10-27 | 2020-01-09 | Google Llc | Exploiting input data sparsity in neural network compute units |
WO2019023984A1 (en) * | 2017-08-02 | 2019-02-07 | Intel Corporation | SYSTEM AND METHOD FOR INCLUSION OF NEURAL NETWORKS 1 AMONG N ON AN AUTOMATIC LEARNING COMPUTER PLATFORM |
WO2019104695A1 (zh) * | 2017-11-30 | 2019-06-06 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、芯片、设备及相关方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210240483A1 (en) | 2021-08-05 |
TW202131317A (zh) | 2021-08-16 |
US11188344B2 (en) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11423285B2 (en) | Buffer addressing for a convolutional neural network | |
US11403025B2 (en) | Matrix transfer accelerator system and method | |
US11886536B2 (en) | Methods and systems for implementing a convolution transpose layer of a neural network | |
US10942986B2 (en) | Hardware implementation of convolutional layer of deep neural network | |
KR101959376B1 (ko) | 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 | |
WO2020156508A1 (zh) | 基于具有运算阵列的芯片的运算方法、装置及芯片 | |
US11550586B2 (en) | Method and tensor traversal engine for strided memory access during execution of neural networks | |
US11705207B2 (en) | Processor in non-volatile storage memory | |
TWI727641B (zh) | 記憶體裝置及其操作方法 | |
Liu et al. | An energy-efficient mixed-bit CNN accelerator with column parallel readout for ReRAM-based in-memory computing | |
CN113361679B (zh) | 存储器装置及其操作方法 | |
GB2582868A (en) | Hardware implementation of convolution layer of deep neural network | |
TW202230225A (zh) | 用於執行神經網路計算的類比電路的校準方法及裝置 | |
Huang et al. | A low-bit quantized and hls-based neural network fpga accelerator for object detection | |
US20210288650A1 (en) | Semiconductor device and circuit layout method | |
JP2003186866A (ja) | データ駆動型情報処理装置およびその処理方法 | |
TWI844108B (zh) | 積體電路及操作方法 | |
JP7078129B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
Ma et al. | DCIM-GCN: Digital Computing-in-Memory Accelerator for Graph Convolutional Network | |
CN115481721A (zh) | 一种针对卷积神经网络的新型Psum计算电路 | |
Yang et al. | DATIC: A Data-Aware Time-Domain Computing-in-Memory-Based CNN Processor With Dynamic Channel Skipping and Mapping | |
CN115600661A (zh) | Argmax或argmin在硬件中的实施 | |
TW202321992A (zh) | 積體電路及操作方法 | |
JP2024048930A (ja) | 半導体装置 | |
GB2622869A (en) | Methods and systems for online selection of number formats for network parameters of a neural network |