TWI684141B - 人工神經元中以非零封包加速乘法運算的裝置及方法 - Google Patents
人工神經元中以非零封包加速乘法運算的裝置及方法 Download PDFInfo
- Publication number
- TWI684141B TWI684141B TW107134911A TW107134911A TWI684141B TW I684141 B TWI684141 B TW I684141B TW 107134911 A TW107134911 A TW 107134911A TW 107134911 A TW107134911 A TW 107134911A TW I684141 B TWI684141 B TW I684141B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit map
- zero
- bitmap
- nzp
- matrix
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6047—Power optimization with respect to the encoder, decoder, storage or transmission
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本發明揭露一種加速裝置,包含:一及閘陣列、一第一儲存裝置、一第二儲存裝置以及一乘法累加器(MAC)電路。該及閘陣列包含複數個及閘,用以接收一第一位元映圖及一第二位元映圖以產生一輸出位元映圖。該第一儲存裝置儲存包一第一裝載部,及根據一第一存取位址輸出一對應非零第一元素,其中該第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關。該第二儲存裝置儲存一第二裝載部,及根據一第二存取位址輸出一對應非零第二元素,其中該第二存取位址係與該第二位元映圖及該輸出位元映圖的比較結果有關。該MAC電路計算從該第一儲存裝置及該第二儲存裝置輸出的二個元素序列的內積。
Description
本發明係有關於積體電路(integrated circuit),尤有關於一種使用於人工神經元(artificial neuron)中,以非零封包加速乘法運算的裝置及方法。
人工神經網路(artificial neural network)是基於一個大量連結神經元的集合。當處理及傳播輸入訊號時,對於饋入至神經元突觸(synapse)的各輸入值(以下稱之為”突觸值”),係利用突觸的各權值來分別調整。此過程的作用是讓部分突觸值通過該突觸,而該部分突觸值的大小是與該權值成比例。依此方式,該權值調整該突觸的連結強度,之後,再與其他同樣處理的突觸值加總而產生結果。各神經元接收來自上一階的神經元的加權輸入值,並計算乘積值的總和。各神經元的傳播功能/函數(propagation function)可以數學方程式表示如下:,其中,y表示一給定神經元的傳播功能的輸出值,Xi表示饋入至該給定神經元的突觸i的突觸值,Wi表示用以調整於該給定神經元的突觸i上的權值,以及該給定神經元的突觸的總數目等於N。
目前,神經網路通常以個人電腦執行模擬軟體來執行。然而,隨著網路規模的擴大,軟體的複雜度及處理時間也隨之增加。可預見的是,神經元的運作可以硬體來執行,但隨著輸入數目及記憶體容量的增加,硬體的複雜度及成本也會大幅增加。實務上,當一神經網路以積體電路的形式來實施時,執行上述傳播功能會有二個缺點:需具有大的記憶體容量以儲存多個權值及多個突觸值,以及需具有大量乘法器,以執行該些權值及該些突觸值之間的乘法運算。第1A圖的例子顯示在一習知人工神經元中,32個權值W0~W31與32個突觸值X0~X31,以32個乘法器進行相乘。請參考第1A圖,假設直接計算該傳播函數、N=32以及各權值(W0~W31)與各突觸值(X0~X31)的位元長度(bit length)是16個位元,則儲存該些權值(W0~W31)及該些突觸值(X0~X31)的記憶體大小需要1024(=(32+32)x16)個位元,且所需的乘法器10的數目等於32。通常該些乘法器10的尺寸較大且複雜,會占據積體電路顯著比例的可用面積,對那些處理大量突觸值的神經元而言,此現象會更明顯,因為每一突觸值都需搭配一個專屬的乘法器。
在機器學習(machine learning)領域中,在L1正規化(regularization)或網路修剪(pruning)後,權值矩陣W的權值通常會變得稀疏。當一個矩陣包含少量非零元素時,被稱為稀疏的。傳統上,「零值略過(zero-skipping)」只應用於 權值,以加速上述傳播函數的計算,如第1B圖所示。第1B圖係根據第1A圖的例子,顯示在「零值略過」應用於權值矩陣W後,非零權值與對應的突觸值相乘的示意圖。請參考第1B圖,因為略過零值權值,儲存該些權值(W0~W31)及該些突觸值(X0~X31)的記憶體大小需要752(=(15+32)x16)個位元,且需要的乘法器10的數目等於15。相較於第1A圖,第1B圖中儲存該權值矩陣W及該資料矩陣X的記憶體大小及計算量負荷(computation overhead)都降低了。
為了盡可能減少神經網路中的乘法器的數目、以及為了進一步減少儲存該權值矩陣W及該資料矩陣X的記憶體大小及計算量負荷,藉以在積體電路的單位面積中容納更多神經元,同時允許該些神經元以高速及低功率消耗進行處理,因此提出本發明。
有鑒於上述問題,本發明的目的之一是提供一種加速裝置,用以減少計算量負荷及儲存該些權值及突觸值的記憶體大小。
根據本發明之一實施例,提供一種加速裝置,適用於一人工神經元,包含:一及閘陣列、一第一儲存裝置、一第二儲存裝置以及一乘法累加器(MAC)電路。該及閘陣列包含複數個及閘,用以接收一第一位元映圖及一第二位元映圖以產生一輸出位元映圖。該第一儲存裝置儲存包一第一裝 載部,及根據一第一存取位址輸出一對應非零第一元素,其中該第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關。該第二儲存裝置儲存一第二裝載部,及根據一第二存取位址輸出一對應非零第二元素,其中該第二存取位址係與該第二位元映圖及該輸出位元映圖的比較結果有關。該MAC電路耦接至該第一儲存裝置及該第二儲存裝置的輸出端,用以產生該對應非零第一元素及該對應非零第二元素的乘積值,並根據該乘積值及至少一先前累加值,產生一目前累加值。其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,而該第二位元映圖包含該M2個非零第二元素在該第二裝載部的位置資訊。
本發明另一實施例,提供一種加速方法,適用於一人工神經元,包含以下步驟:對一第一位元映圖及一第二位元映圖,進行一按位元邏輯及運算,以產生一輸出位元映圖;依序儲存包含M1個非零第一元素的第一裝載部至一第一儲存裝置,以及依序儲存包含M2個非零第二元素的第二裝載部至一第二儲存裝置;根據一第一存取位址,由該第一儲存裝置輸出一對應非零第一元素,以及根據一第二存取位址,由該第二儲存裝置輸出一對應非零第二元素,其中該第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關,以及該第二存取位址係與該第二位元映圖及該輸出位元映圖的比較結果有關;計算及累加該對應非零第一 元素及該對應非零第二元素的乘積值;以及,重複該輸出步驟及該計算及累加步驟直到該輸出位元映圖中的至少一非零位元都處理完為止,以產生一累加值;其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,而該第二位元映圖包含該M2個非零第二元素在該第二裝載部的位置資訊。
本發明另一實施例,提供一種加速裝置,適用於一人工神經元,包含:一及閘陣列、一第一儲存裝置以及一計算電路。該及閘陣列包含複數個及閘,用以接收P1個位元映圖之一以及一第一位元映圖以產生一輸出位元映圖。該第一儲存裝置依序儲存包含M1個非零第一元素的第一裝載部,及根據一第一存取位址輸出一對應非零第一元素,其中該第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關。該計算電路耦接至該第一儲存裝置,用以根據P1個不同的群組值之一及由該第一儲存裝置之輸出的加總,計算及累加各該P1個位元映圖所對應之一乘積值以產生一累加值。其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,以及該P1個位元映圖分別搭配該P1個不同的群組值來一起運作。
本發明另一實施例,提供一種加速方法,適用於一人工神經元,包含以下步驟:依序儲存包含M1個非零第一元素的第一裝載部至一第一儲存裝置;在P1個位元映圖 之一及一第一位元映圖之間,進行一按位元邏輯及運算,以產生一輸出位元映圖;根據各第一存取位址,由該第一儲存裝置輸出各對應非零第一元素,其中各第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關;根據由該第一儲存裝置之輸出的加總及P1個不同的群組值之一,計算各該P1個位元映圖所對應之一乘積值;累加該乘積值;以及,重複該進行該按位元邏輯及運算步驟、該輸出、該計算以及該累加步驟直到該P1個位元映圖都處理完為止以產生一累加值。其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,以及該P1個位元映圖分別搭配該P1個不同的群組值來一起運作。
茲配合下列圖示、實施例之詳細說明及申請專利範圍,將上述及本發明之其他目的與優點詳述於後。
10‧‧‧乘法器
30‧‧‧一維NZP
31、51、81‧‧‧位元映圖標頭
32、52、72、82‧‧‧裝載部
321‧‧‧非零元素
400A、400B‧‧‧加速裝置
411‧‧‧壓縮器
412、413、414‧‧‧語法分析器
410A、410B‧‧‧前端模組
420A、420B‧‧‧非零封包引擎
421、422‧‧‧SRAM
423、424‧‧‧位址解碼器
425‧‧‧及閘陣列
450、450a‧‧‧乘法累加器
451、460、475‧‧‧乘法器
452‧‧‧加法器
453‧‧‧累加器
470a、470b‧‧‧累加裝置
471‧‧‧反向器
53‧‧‧濾片
54‧‧‧目標像素
55‧‧‧輸入影像
56‧‧‧來源像素
57‧‧‧感受區
58‧‧‧該感受區的位元映圖子集
60‧‧‧動態NZP
63‧‧‧前置標頭
63a‧‧‧控制碼字欄位
70‧‧‧多層次NZP-x
71‧‧‧節點/葉片區
73‧‧‧子節點基底位址
80‧‧‧SVG NZP
81a‧‧‧最小值SVG位元映圖
81b‧‧‧最大值SVG位元映圖
第1A圖顯示在一習知人工神經元中,利用32個乘法器,將32個權值(W0~W31)及32個突觸值(X0~X31)相乘的一個例子。
第1B圖係根據第1A圖的例子,顯示在「零值略過」應用於權值矩陣W後,非零權值與對應的突觸值相乘的示意圖。
第2圖係根據本發明,基於第1A圖的例子,顯示在「零 值略過」應用於該權值矩陣W及該資料矩陣X後,非零權值與對應的非零突觸值相乘的一個示意圖。
第3A圖顯示一DNN模組的一個示例,該DNN模組在輸入層及輸出層之間包含二個隱藏層。
第3B圖係代表第3A圖中權值向量W及資料向量X的二個一維NZP的示意圖。
第4A圖係根據本發明一實施例,顯示一加速裝置的架構方塊圖。
第4B圖係根據本發明另一實施例,顯示一加速裝置的架構方塊圖。
第5A圖顯示使用於一CNN模組下的輸入影像55及濾片53的一個例子。
第5B圖顯示代表第5A圖的輸入影像55及濾片53的二個二維NZP的示意圖。
第6A圖顯示一個具有一前置標頭的動態NZP的示意圖。
第6B圖顯示包含一連串NZP 60或30的NZP串流的一個示例。
第7A圖顯示以三層的多層次NZP的位元映圖標頭31來表示一超大資料或權值向量(4096x1)的一個示例。
第7B圖是根據第7A圖顯示一多層次NZP的例子。
第8圖是一資料向量X以及具有二個SVG的SVG NZP 80的一個例子。
在通篇說明書及後續的請求項當中所提及的「一」及「該」等單數形式的用語,都同時包含單數及複數的涵義,除非本說明書中另有特別指明。
本發明的特色之一係提供非零封包(non-zero packet,NZP)給一權值矩陣W(包含複數個權值)及一資料矩陣X(包含複數個突觸值),以加速人工神經元中上述傳播函數的計算,藉以減少計算量負荷及儲存該些權值及突觸值的記憶體大小。NZP的格式提供高壓縮率給該權值矩陣W及該資料矩陣X,並且啟動一直接定址(direct addressing)機制,係允許對壓縮格式下的NZP進行隨機存取,而無需解壓縮NZP,此特色在本說明書中稱之為”壓縮下執行(execution-in-compression)”特色。該”壓縮下執行”特色免除了解壓縮潛時(latency)及解壓縮的非直接存取的緩衝器。本發明的另一特色是對代表該權值矩陣W及該資料矩陣X的二個NZP的位元映圖(bitmap)進行按位元邏輯”及”(bitwise logical AND)運算,以立即決定需被擷取及相乘的非零元素對(element pairs),進而提高處理效率。
有些激勵函數(activation function),例如線性整流函數(rectified linear unit,ReLU),會導致該資料矩陣X的資料稀疏性。若該權值矩陣W及該資料矩陣X都是稀疏的,則將「零值略過」應用於該權值矩陣W及該資料矩陣X,如 第2圖所示。第2圖係根據第1A圖的例子,顯示在「零值略過」應用於該權值矩陣W及該資料矩陣X後,非零權值與對應的非零突觸值相乘的示意圖。請參考第2圖,因為略過零值權值,儲存該些權值(W0~W31)及該些突觸值(X0~X31)的記憶體大小需要512(=(15+15)x16)個位元,且需要的乘法器10的數目等於8。顯然地,相較於第1A圖及第1B圖,第2圖在「零值略過」應用於權值矩陣W及資料矩陣X後,儲存該權值矩陣W及該資料矩陣X的記憶體大小及計算量負荷都降低了。
在深度神經網路(deep neural network,DNN)中,有鑒於權值矩陣W及資料矩陣X的大部分元素都是零值,本發明提供NZP以捨棄該權值矩陣W及該資料矩陣X的零值,並聚焦於該權值矩陣W及該資料矩陣X的非零元素。第3A圖顯示一DNN模組的一個示例,該DNN模組在輸入層及輸出層之間包含二個隱藏層(hidden layer),其中N=16、x[i]表示前一層神經元的輸出、w[i]表示用以調整該神經元突觸i上的權值、xnz[j]表示依序存放的非零突觸值,以及wnz[j]表示依序存放的非零權值,其中,i=0~15,0=<j=<15。請注意,第3A圖中該矩陣W及X的大小(16x1)僅用於說明,而非本發明之限制。在第3A圖的各矩陣W及X僅有一行,通常稱之為”行向量”。第3B圖係顯示代表第3A圖中權值向量W及資料向量X的二個一維NZP的示意圖。參考第3B圖,各一維NZP 30包含一位元映圖標頭(header)31及一裝載部(payload)32。 因為N=16,該位元映圖標頭31是一個代表向量X或W中16個元素(即突觸值或權值)的位元映圖。具體而言,該位元映圖標頭31中的每一位元代表向量X或W中一對應元素。一實施例中,若向量X或W中一元素等於0,則該位元映圖標頭31中的對應位元設為0;反之,若該元素不等於0,則該位元映圖標頭31中的對應位元設為1。非零元素依序儲存於該裝載部32,該裝載部32並不儲存任何該些零值元素。該位元映圖標頭31及該裝載部32中的各非零元素具有固定的大小,如第3B圖中是16位元。依此,該權值向量W及該資料向量X分別被壓縮成一維NZP-w 30及一維NZP-x 30。
參考第3B圖的右側,係對一維NZP-w 30及一維NZP-x 30的二個位元映圖標頭31進行按位元邏輯”及”運算以產生一輸出位元映圖。因為在該輸出位元映圖中有二個非零位元,可立即決定需擷取的二對非零元素(第一對:xnz[1]及wnz[1];第二對:xnz[2]及wnz[3]),之後,再對該二對非零元素進行乘法累加(multiply-accumulate)運算以得到結果,即y=xnz[1]*wnz[1]+xnz[2]*wnz[3]。
第4A圖係根據本發明一實施例,顯示一加速裝置的架構方塊圖。參考第4A圖,本發明加速裝置400A包含一前端模組410A及一非零封包引擎420A。本發明加速裝置400A,適用於一人工神經元,係用來進行稀疏向量對稀疏向量的乘法(如第3A~3B圖),或進行稀疏矩陣對稀疏矩陣的乘 法(如第5A~5B圖)。該前端模組410A包含一壓縮器(compressor)411及一語法分析器(parser)412。非零封包引擎420A包含二個靜態隨機存取記憶體(static random access memory,SRAM)421及422、二個位址解碼器(address decoder)423及424、一及閘陣列(AND gate array)425及一乘法累加器(multiplier-accumulator)450。其中,乘法器460並不是必須元件,因此以虛線表示。該及閘陣列425中所包含的及閘數目係取決於一維NZP的位元映圖標頭31的位元總數,或代表一濾片53的二維NZP-w的位元映圖標頭51的位元總數(請參考第5A~5B圖的相關說明)。由於第3B圖的位元映圖標頭31包含16個位元,故該及閘陣列425包含16個並聯的及閘。該MAC 450包含一乘法器451、一加法器452及一累加器453。請注意,該前端模組410A包含該壓縮器411及該語法分析器412僅是一示例,而非本發明之限制。在實際實施時,該壓縮器411及該語法分析器412可互相交換,或是以二個壓縮器或二個語法分析器來取代。請再注意,在本說明書及圖式中,具相同或類似功能的電路元件使用相同的參考符號。
以下請同時參考第3A~3B圖,說明該加速裝置400A的運作方式。在第3A~3B圖的例子中,該加速裝置400A係用來計算該權值向量W及該資料向量X的內積(dot product)。首先,該壓縮器411接收該向量X的原始數據(raw data)(x[0]~x[15])、將該向量X的原始數據壓縮成一維NZP-x 30的一位元映圖標頭31及一個具四個非零元素321的裝載部32(xnz[0]~xnz[3])、將該位元映圖標頭31傳送給該位址解碼器423與該及閘陣列425、以及將該裝載部32傳送給該SRAM 421。該語法分析器412接收一維NZP-w 30、對該一維NZP-w 30進行語法分析以將該一維NZP-w 30分割為其對應的位元映圖標頭31及裝載部32(包含五個非零元素wnz[0]~wnz[4])、將該位元映圖標頭31傳送給該位址解碼器424與該及閘陣列425、以及將該裝載部32傳送給SRAM 422。該SRAM 421從一基底位址(base address)b-addr1開始依序存放該四個非零元素xnz[0]~xnz[3],而該SRAM 422從基底位址b-addr2開始依序存放該五個非零元素wnz[0]~wnz[4]。
在二個向量X及W開始進行按元素的乘法之前,該及閘陣列425對一維NZP-w 30及一維NZP-x 30的二個位元映圖標頭31,平行地進行按位元邏輯”及”運算以產生具有二個非零位元(即位元5及10)的輸出位元映圖o-bm。接著,根據該輸出位元映圖o-bm及該NZP-x 30的位元映圖標頭31,該位址解碼器423依序計算出二個非零元素(xnz[1]及xnz[2])的資料位移(即0x2及0x4),並且分別將該二個資料位移與該基底位址(base address)b-addr1相加,以輸出二個資料位址,即0x2+b-addr1及0x4+b-addr1;根據該輸出位元映圖o-bm及該NZP-w 30的位元映圖標頭31,該位址解碼器424 依序計算出二個非零元素(wnz[1]及wnz[3])的權值位移(即0x2及0x6),並且分別將該二個權值位移與該基底位址b-addr2相加,以輸出二個權值位址,即0x2+b-addr2及0x6+b-addr2。根據二個資料位址(0x2+b-addr1及0x4+b-addr1),該SRAM 421依序輸出對應的非零元素(或突觸值)至該MAC 450;而根據二個權值位址(0x2+b-addr2及0x6+b-addr2),該SRAM 422依序輸出對應的非零元素(或權值)至該MAC 450。根據SRAM 421及422的輸出,該MAC 450依序產生和輸出位元映圖o-bm的第一個非零位元有關的非零權值wnz[1]及非零突觸值xnz[1]的乘積值,以及和輸出位元映圖o-bm的第二個非零位元有關的非零權值wnz[3]及非零突觸值xnz[2]的乘積值,再依序加上該些乘積值以存入該累積器453,以產生一累加值,即y=xnz[1]*wnz[1]+xnz[2]*wnz[3]。請注意,於本實施例中,係假設該語法分析器412將一增益(gain)設為1,並將該增益傳送給該乘法器460,故輸出out=y。
根據該輸出位元映圖o-bm,該非零封包引擎420A僅需對向量X及W的對應非零元素進行乘法累加運算,故可最大化吞吐量(throughput)及能量效率。因為一維NZP 30具有固定尺寸的非零元素,藉由比較該輸出位元映圖o-bm及一維NZP 30的位元映圖標頭31,資料/權值位移/位址可用來直接存取該SRAM 421及422中的一特定非零元素(稱為”直 接定址機制”),而無需解壓縮該一維NZP 30。此”直接定址機制”允許隨機存取該SRAM 421及422以取得該一維NZP 30的一特定非零元素(稱之為”壓縮下執行”特色)。該”壓縮下執行”特色減少解壓縮的額外計算、極小化計算期間的記憶體運作與資料傳遞、並加速大型矩陣計算的吞吐量,特別是在DNN下。
由於上述NZP的格式及”直接定址機制”,NZP及該加速裝置400A也能應用於二維的資料矩陣X及權值矩陣W。換言之,NZP及該加速裝置400A也能在卷積神經網路(convolutional neural network,CNN)中運作順暢。第5A圖顯示使用於一CNN模組下的輸入影像55及濾片(filter)53的一個例子。參考第5A圖,一輸入影像55(對應於一資料矩陣X)是一個7x7的像素值(或突觸值)陣列,而一濾片53(對應於一權值矩陣W)則是一個3x3的權值陣列;業界有時又稱該濾片53為核心(kernel)。該輸入影像55的左上角(亦即是具3x3視窗(window)的感受區(receptive field)57)是把該濾片53作用於該輸入影像55的第一個位置,而該濾片53的中心元素是置於一來源像素56之上。在該來源像素56被替換成該感受區57的對應像素值與該濾片53的對應權值的乘積值之和(-8)後,該來源像素56被定義為一目標像素54。換言之,該濾片53的權值與該感受區57的對應像素值之間進行按元素相乘後,加總該九個乘積值以產生該目標像素54的新值(=-8),代表該濾片 53係位在該輸入影像55的左上角。該輸入影像55的每個位置都會進行上述的計算。然後,該濾片53往右移一個像素,之後,再往右移一個像素,依此類推。該輸入影像55的每個位置都會產生一個數字。在該濾片53滑過該輸入影像55的每個位置之後,便產生一個5x5的數字陣列,稱為激勵映圖(activation map)或特徵映圖(feature map)。
第5B圖顯示代表第5A圖的輸入影像55及濾片53的二個二維NZP的示意圖。參考第5B圖,各二維NZP 50包含一位元映圖標頭51及一裝載部52。因為該輸入影像55是7x7陣列,二維NZP-x 50的位元映圖標頭51是代表該輸入影像55中49個像素值的二維位元映圖;因為該濾片53是3x3陣列,二維NZP-w 50的位元映圖標頭51是代表該濾片53中9個像素值的二維位元映圖。類似第3B圖的例子,該位元映圖標頭51的各位元代表該輸入影像55或該濾片53的一對應元素。一實施例中,若該輸入影像55或該濾片53的一元素等於0,其位元映圖標頭51的對應位元被設為0;反之,若該輸入影像55或該濾片53的一元素不等於0,其位元映圖標頭51的對應位元被設為1。非零元素依序儲存於該裝載部52,該裝載部52並不儲存任何零值元素。請注意,在第5A~5B圖的例子中,二維NZP-x 50及二維NZP-w 50的位元映圖標頭51及該裝載部52中各非零元素具有不同的大小,例如二維NZP-x 50的位元映圖標頭51是49個位元、二維NZP-w 50的位元映圖標頭51 是9個位元、及二維NZP-x 50及二維NZP-w 50的裝載部52的各非零元素是16個位元。依此,該濾片53及該輸入影像55分別被壓縮成二維NZP-w 50及二維NZP-x 50。
以下請同時參考第5A~5B圖,說明該加速裝置400A的運作方式。在第5A~5B圖的例子中,該加速裝置400A係用來計算一特徵映圖中所有的值,且該特徵映圖中的每個值等於該濾片53及該輸入影像55之一對應感受區57中對應元素的乘積值之和;該壓縮器411被組態為將該二維輸入影像55壓縮成其對應的位元映圖標頭51及裝載部52;該語法分析器412被組態為對該二維NZP-w 50進行語法分析以將該二維NZP-w 50分割為其對應的位元映圖標頭51及裝載部52。首先,該壓縮器411接收該二維輸入影像55的原始數據、將該二維輸入影像55的原始數據壓縮成二維NZP-x 50的一位元映圖標頭51及一裝載部52(包含26個非零元素xnz[1][0]~xnz[6][3])、以及將該裝載部52傳送給該SRAM 421。請注意,該壓縮器411每次傳送一個和其對應感受區有關的位元映圖子集(subset)58給該位址解碼器423與該及閘陣列425。該語法分析器412接收二維NZP-w 50、對該二維NZP-w 50進行與法分析以將該二維NZP-w 50分割為其對應的位元映圖標頭51及裝載部52(包含二個非零元素wnz[0][0]及wnz[2][0])、將該位元映圖標頭51傳送給該位址解碼器424與該及閘陣列425、以及將該裝載部52傳送給SRAM 422。根 據二維NZP-x 50的裝載部52中非零元素的位置,該SRAM 421分別從該裝載部52之各列的基底位址b-addr1[k],依序存放該26個非零元素xnz[1][0]~xnz[6][3],其中k=1~6。例如,該SRAM 421從基底位址b-addr1[1]開始依序存放該裝載部52第一列的非零元素xnz[1],而從基底位址b-addr1[2]開始依序存放該裝載部52第二列的非零元素xnz[2]。因此,該位址解碼器423需要去維護該二維NZP-x 50的裝載部52之各列的基底位址b-addr1[k]。同樣地,根據二維NZP-w 50的裝載部52中非零元素的位置,該SRAM 422分別從該裝載部52之各列的基底位址b-addr2[k],依序存放該2個非零元素wnz[0][0]及wnz[2][0],其中k=0~2。因此,該位址解碼器424需要去維護該二維NZP-w 50的裝載部52之各列的基底位址b-addr2[k]。
請注意,為配合第5B圖中該二維NZP-w 50的位元映圖標頭51具有9個位元,該及閘陣列425包含9個並聯的及閘。在對該濾片53及該輸入影像55之該感受區57計算對應元素的乘積值之和之前,該及閘陣列425對二維NZP-w 50的位元映圖標頭51及該感受區57的位元映圖子集58,平行地進行按位元邏輯”及”運算以產生具有一個非零位元的輸出位元映圖o-bm,如第5B圖的右側所示。
接著,根據輸出位元映圖o-bm及該位元映圖子集58,該位址解碼器423計算出一個非零元素(xnz[2][1],位 在二維NZP-x 50的裝載部52的第二列第一行)的資料位移(即0x2),並且將該資料位移與該基底位址b-addr1[2]相加,以輸出一資料位址,即0x2+b-addr1[2];根據輸出位元映圖o-bm及該NZP-w 50的位元映圖標頭51,該位址解碼器424計算出一非零元素(wnz[2][0],位在二維NZP-w 50的裝載部52的第二列第0行)的權值位移(即0x0),並且將該權值位移與該基底位址b-addr2[2]相加,以輸出一權值位址,即0x0+b-addr2[2]。根據該資料位址(0x2+b-addr1[2]),該SRAM 421輸出對應的非零元素(或突觸值)至該MAC 450;而根據權值位址(0x0+b-addr2[2]),該SRAM 422輸出對應的非零元素(或權值)至該MAC 450。根據該SRAM 421及422的輸出,該MAC 450產生和輸出位元映圖o-bm的非零位元有關的非零權值wnz[2][0]及非零突觸值xnz[2][1]的乘積值,即y=xnz[2][1]*wnz[2][0]。
除了位元映圖標頭31/51之外,NZP還可選擇性的包含一前置(prefix)標頭63,以定義該裝載部32/52中非零元素的資料格式。如第6A圖所示,一動態(dynamic)NZP 60包含一前置標頭63、一位元映圖標頭(31或51)及一裝載部(32或52)。該前置標頭63包含一控制碼字(codeword)欄位63a,用以規定該裝載部32或52中非零元素的資料格式;另外,該前置標頭63更包含一多層次(hierarchy)欄位63b,用以指出本NZP是否是一個多層次NZP(將於後面說明)。實際實施時, 可利用不同資料格式,將該裝載部的非零元素打包成封包,以提高NZP的資料壓縮率。該資料格式包含,但不限於,固定點(fixed-point)4位元(fix4)、固定點8位元(fix8)、固定點16位元(fix16)、固定點32位元(fix32)、浮點8位元(flp8)、浮點16位元(flp16)、浮點32位元(flp32)以及4位元對數(log4)。每一資料格式利用一對應的控制碼字來定義/指定並填入至該控制碼字欄位。假設一動態NZP 60輸入至第4A圖的語法分析器412,該語法分析器412從該控制碼字欄位63a中抽取出該控制碼字並發出一對應資料尺寸ds給該位址解碼器424及SRAM 422。根據該資料尺寸ds,該位址解碼器424可正確計算該SRAM 422中非零元素的權值位移/位址,而根據該權值位址及該資料尺寸ds,該SRAM 422可正確輸出一對應的非零元素。該資料尺寸包含,但不限於,半位元組(nibble)、位元組、字組(word)及雙字組(double word)。第6B圖顯示包含一連串NZP 60或30的NZP串流(stream)的一個示例。參考第6B圖,各動態NZP 60中前置標頭63的前4個位元(b0~b3,也就是控制碼字欄位63a)被設為一預設的控制碼字,用來定義該動態NZP 60及後續NZP 30中所有非零元素的資料格式,直到下一個動態NZP 60定義出一個新的資料格式;同時,若該動態NZP 60不是一個多層次NZP,各前置標頭63的b4及b5(也就是多層次欄位63b)被設為0;各前置標頭63的b6~b15被設為1,其中bk代表該前置標頭63的第k個位元,且 k=0~15。
根據一動態NZP-w 60的控制碼字欄位63a中的控制碼字,該語法分析器412以接近零計算成本,將壓縮資料(即裝載部32/52)解碼。此外,根據該資料格式,藉由乘上一個增益或計算一數學方程式來動態改變該裝載部32/52中非零元素值的範圍。一實施例中,為了動態改變該裝載部32/52中非零元素值的範圍,如表1所示,對於資料格式fix8及log4,係嵌入一增益因子(gain factor)於該控制碼字欄位63a中,而對於資料格式fix8、log4、flp8及flp16,則分別提供一數學方程式。
舉例而言,若控制碼字欄位63a包含的值等於0b1110,表示後續的非零元素的資料格式是fix16,且該輸出值等於對應的非零元素nz[15:0](表示該裝載部32/52中非零 元素值的範圍不變),故其增益等於1,對應地,該語法分析器412將其增益設為1,並將該增益傳送給該乘法器460。若該控制碼字欄位63a包含的值等於0b0xxx,表示後續的非零元素的資料格式是fix8,且其增益因子等於gn[2:0](請參考表1);根據表1的方程式,該語法分析器412將1往左移gn[2:0]個位元以得到一個位移後的值,將其增益設為該位移後的值,並將該增益傳送給該乘法器460。若控制碼字欄位63a包含的值等於0b1111,表示後續的非零元素的資料格式是flp16,根據表1的方程式,需連接一浮點至固定點轉換器(floating point to fixed point converter)(圖未示)至SRAM 422的輸出端,以對後續從SRAM 422輸出的任一非零元素進行浮點至固定點轉換flp2fix(1.5.10);對應地,該語法分析器412將其增益設為1,並將該增益傳送給該乘法器460。請注意,表1中該控制碼字欄位63a在該前置標頭63的位置、該控制碼字欄位63a的位元長度、該些資料格式、該些控制碼字以及該些方程式僅提供作為示例,而非本發明之限制。在實際實施時,可以修改表1中該控制碼字欄位63a在該前置標頭63的位置、該控制碼字欄位63a的位元長度、該些資料格式、該些控制碼字以及該些方程式,而上述的修改均落入本發明之範圍內。請再注意,雖然上述實施例僅描述一動態NZP 60實施於矩陣W(亦即語法分析器412、位址解碼器424、SRAM 422及乘法器460),但本發明不因此而受限,該動態NZP 60 亦可實施於矩陣X(必須透過適當接線及組態的壓縮器411、位址解碼器423、SRAM 421及乘法器460)。
本發明支援代表超大資料及權值向量的多層次NZP,使擷取非零元素變得更有彈性,以進行按元素的乘法。第7A圖顯示以三層的多層次NZP的位元映圖標頭31來表示一超大資料或權值向量(4096x1)的一個示例。參考第7A圖,由於該超大資料或權值向量的尺寸為4096x1,將該向量的所有元素分為三層以便計算一超大資料向量X及一超大權值向量W的內積。對於具有16個位元的一節點(node)(第一及二層)位元映圖標頭31,各位元代表其子節點或後續階層的16個位元;對於具有16個位元的一葉片(leaf)(第三層)位元映圖標頭31,各位元代表該向量X/W的一對應元素。舉例而言,第一層/節點1的第0個位元b0等於0代表其子節點有16個零值位元,故可略過其子節點而無須進行按位元邏輯”及”運算;第一層/節點1的第1個位元b1等於1代表其子節點至少有1個非零位元,故其子節點須進行該按位元邏輯”及”運算。第7B圖是根據第7A圖顯示一多層次NZP的例子。參考第7B圖,在該多層次NZP 70中,節點係排在葉片之前,而非零元素排在葉片之後。該多層次NZP 70包含一節點/葉片區71及一裝載部72。在第7B圖的例子中,該節點/葉片區71包含三個節點及三個葉片,各節點及葉片包含一前置標頭63、一位元映圖標頭31及一子節點基底位址73(亦即一指標係指向其子節 點的起始位址或該裝載部72對應非零元素的起始位址)。一般來說,在該節點/葉片區71的該些節點的數目大於0,而該些葉片的數目大於或等於0。
以下請同時參考第7A~7B圖,說明該加速裝置400A的運作方式。假設一超大資料向量X及一多層次NZP-w 70分別饋入至該加速裝置400A之該壓縮器411及該語法分析器412;該壓縮器411被組態為將該超大資料向量X壓縮成具有該節點/葉片區71及該裝載部72的多層次NZP-x 70;該語法分析器412被組態為對該多層次NZP-w 70進行語法分析以將該多層次NZP-w 70分割為該節點/葉片區71及該裝載部72;該位址解碼器423及424被組態為可回應控制訊號CS1及CS2,而被致能或禁能。首先,該壓縮器411及該語法分析器412傳送該多層次NZP-x 70與多層次NZP-w 70之節點1的二個位元映圖標頭31至該及閘陣列425(具有16個及閘),及傳送具有第一電壓位準的控制訊號CS1及CS2以禁能該位址解碼器423及424。若從該及閘陣列425輸出的該輸出位元映圖o-bm中所有位元都等於0,就捨棄該多層次NZP-x 70與多層次NZP-w 70之MAC運算;相反地,根據該輸出位元映圖o-bm中非零元素的位置及其子節點基底位址,該壓縮器411及該語法分析器412傳送對應的節點/葉片位元映圖標頭31至該及閘陣列425。重複上述步驟直到該些節點/葉片位元映圖標頭31都處理完為止。根據該多層次NZP-x 70與多層次NZP-w 70中該前置標頭63的該控制碼字欄位63a(b4及b5),該壓縮器411及該語法分析器412可分辨其多層次類型(一節點或一葉片)。例如,若在該多層次NZP-x 70及多層次NZP-w 70的控制碼字欄位63a包含的值等於0b01,表示這是一節點,且壓縮器411及該語法分析器412便傳送具第一電壓位準的對應的控制訊號CS1及CS2以禁能該位址解碼器423及424,及根據該輸出位元映圖o-bm中非零元素的位置及其子節點基底位址,傳送對應的位元映圖標頭31至該及閘陣列425,而不會傳送出任何非零元素。若在該多層次NZP-x 70及多層次NZP-w 70的控制碼字欄位63a包含的值等於0b10,表示這是一葉片,且該壓縮器411及該語法分析器412便分別傳送具第二電壓位準的對應的控制訊號CS1及CS2以致能該位址解碼器423及424、分別傳送對應的位元映圖標頭31至該及閘陣列425及位址解碼器423及424、及根據其子節點基底位址,分別傳送對應的非零元素至SRAM 421及423。根據該輸出位元映圖o-bm及該位元映圖標頭31,該位址解碼器423及424分別計算該非零元素的資料位移及權值位移,並分別將該資料位移加上SRAM 421的基底位移b-addr1及將該權值位移加上SRAM 422的基底位移b-addr2,以輸出至少一資料位址及至少一權值位址。若在該多層次NZP-x 70或/及多層次NZP-w 70的控制碼字欄位63a包含的值等於0b00,表示這不是一個多層次NZP。接著,該MAC 450依序計算從SRAM 421及422 輸出的對應非零元素的乘積,並依序加總該些乘積至該累加器453以產生一累加值。在上述計算該超大資料向量X及該超大權值向量W的內積的過程中,藉由直接略過該些節點及葉片中大量的零值乘法及專注於非零元素的乘法,該多層次NZP改善了計算效能。須注意的是,第7A~7B圖中三層的多層次NZP僅是一個示例,而非本發明的限制。實際實施時,多層次NZP的層次數目取決於該超大資料向量X及該超大權值向量W的元素總數及該位元映圖標頭31的位元長度。
激勵函數是人工神經網路中非常重要的特色,係決定一神經元是否被激勵或致動(activated)。激勵函數係對其輸入訊號進行非線性轉換,而轉換後的輸出再傳送至下一層神經元當作輸入。有些激勵函數會飽和在一特定值,例如ReLu函數會飽和在0。因此,具有飽和特性之激勵函數的前一層神經元的輸出x[i]包含至少一同值群組(same-value-group,SVG)(其突觸值相同),且該SVG的突觸值通常是最大值或最小值。例如,tanh函數會飽和在1及-1,具有tanh函數的前一層神經元的輸出x[i]可分成四個群組:二個SVG(其群組值分別等於1及-1)、一個零值群組及一變數群組(其非零元素值不等於1及-1),如第8圖的左側所示。透過減少乘法運算的次數及減少相同非零元素的儲存空間,將同值的非零元素分在同一組(SVG)有利於計算該傳播函數。第8圖是一資料向量X(具有16個元素x[i],其中i=0~15)以及 具有二個SVG的SVG NZP 80的一個例子。參考第8圖,該SVG NZP 80包含一位元映圖標頭81及一裝載部82。為了支援二個SVG、一個零值群組及一變數群組,該SVG NZP 80的位元映圖標頭81的每P(=2)個位元指出下列Q個類型之一:零值、變數(其元素值不等於1及-1)、最大值(1)及最小值(-1),來定義該資料向量X的一個對應元素x[i],其中,2P>=Q。
第4B圖係根據本發明一實施例,顯示一加速裝置的架構方塊圖。參考第4B圖,本發明加速裝置400A包含一前端模組410B及一非零封包引擎420B。本發明加速裝置400B,適用於一人工神經元,係用來進行稀疏資料矩陣X對稀疏權值矩陣W的乘法,其中該資料矩陣X包含至少一SVG。該前端模組410B包含二個語法分析器413及414。非零封包引擎420A包含二個SRAM 421及422、二個位址解碼器423及424、一及閘陣列425、一MAC 450a、一反向器(inverter)471、二個累加裝置470a及470b、及一乘法器475。該MAC 450a具有該MAC 450所有的功能,而該累加裝置470b具有和該累加裝置470a所有的功能,另外,該MAC 450a及該累加裝置470b會回應一控制訊號CS3而致能或禁能。
以下請同時參考第8圖的例子,說明該加速裝置400B的運作方式。一實施例中,一SVG NZP 80及一維NZP-w 30分別饋入至該加速裝置400B之該語法分析器413及414;該語法分析器413被組態為將對該SVG NZP 80進行語法分析以 將該SVG NZP 80的位元映圖標頭81及裝載部82解碼為:具群組值-1的最小值SVG位元映圖81a、具群組值+1的最大值SVG位元映圖81b以及一維NZP-x 30(其非零元素值不等於1及-1,相當於上述變數群組),如第8圖所示。該語法分析器414被組態為對該一維NZP-x 30進行語法分析以將該一維NZP-x 30分割為一位元映圖標頭31及一裝載部32。請注意,該一維NZP-x 30不會與該最小值SVG位元映圖81a及該最大值SVG位元映圖81b同時運作,換言之,該累加裝置470b不會與該位址解碼器423及該MAC 450a同時運作。
一實施例中,該加速裝置400B先處理該最小值SVG位元映圖81a及該最大值SVG位元映圖81b,再處理該一維NZP-x 30。在此實施例中,該語法分析器413傳送具第一電壓位準的控制訊號CS3以禁能該位址解碼器423及該MAC 450a及致能該累加裝置470b。接著,該語法分析器413傳送該最小值SVG位元映圖81a給該及閘陣列425,並傳送該群組值-1給該乘法器475。具有16個及閘的該及閘陣列425對該最小值SVG位元映圖81a及該一維NZP-w 30的該位元映圖標頭31之間,平行地進行按位元邏輯”及”運算以產生該輸出位元映圖o-bm。接著,該位址解碼器424根據該輸出位元映圖o-bm及該一維NZP-w 30的該位元映圖標頭31,依序計算至少一非零元素的至少一權值位移,再分別將將至少一權值位移加上該SRAM 422的基底位址b-addr2以輸出至少一權值位址。根 據該至少一權值位址,該SRAM 422依序輸出對應的非零元素(即權值)至該累加裝置470b。然後,該累加裝置470b累加該SRAM 422的輸出非零權值,而該乘法器475計算出該累加裝置470b的輸出及該群組值-1的第一乘積值,接著,該加法器452加上第一乘積值並存入至該累加器453。由以上內容可知,由於該最小值SVG位元映圖81a是搭配該群組值-1(即非零元素等於-1)來運作,故無需儲存該群組值-1於SRAM 422;另外,本實施例是先加總所有對應的非零權值,再將該加總值乘上對應的群組值-1即可,而不用將各群組值-1(或突觸值-1)個別乘上對應的權值。因此,可減少乘法運算的數目、節省該群組值-1的儲存空間及強化處理速度。
該加速裝置400B係以和該最小值SVG位元映圖81a同樣的方式,來處理該最大值SVG位元映圖81b,因此,對應該最大值SVG位元映圖81b,該乘法器475計算出該累加裝置470b的輸出及該群組值+1的第二乘積值。然後,該加法器452將該第一乘積值加上該第二乘積值並將其和存入至該累加器453。至於代表其他非零元素(不等於-1及+1)的一維NZP-x 30,該語法分析器413先傳送具第二電壓位準的控制訊號CS3以致能該位址解碼器423及該MAC 450a及禁能該累加裝置470b,接著,該語法分析器413傳送該一維NZP-x 30的位元映圖標頭31給該位址解碼器423及該及閘陣列425,之後的計算過程類似於第3A~3B及4A圖的運作方式,故在此省 略該一維NZP-x 30的說明。然後,該加法器452將該MAC 450a的輸出加上該累加器453的輸出(等於該第一乘積值加上該第二乘積值),再將其和存入至該累加器453。最後,該累加器453輸出一累加值ac。
另一實施例中,該加速裝置400B先處理該一維NZP-x 30,再處理該最小值SVG位元映圖81a及該最大值SVG位元映圖81b。只要該加速裝置400B不平行處理該一維NZP-x 30、該最小值SVG位元映圖81a及該最大值SVG位元映圖81b,其最後累加值ac都是一樣的。請注意,該位元映圖標頭81包含二個SVG僅是一個示例,而非本發明之限制。實際實施時,其他數目的SVG也適用於該位元映圖標頭81及該加速裝置400B。另請注意,該變數群組是否存在取決於資料矩陣X的非零元素的值及SVG數目的上限。一實施例中,SVG數目的上限被設為2;若資料矩陣X的非零元素的值可分成三個以上具有不同群組值的群組,從該三個以上具有不同群組值的群組選擇其二中之二以形成二個SVG,而其他的具不同群組值的群組就形成該變數群組;若資料矩陣X的非零元素的值可分成二個(含)以下具有不同群組值的群組,該二個(含)以下具有不同群組值的群組形成二個(含)以下的SVG,但不會形成任何變數群組。若沒有形成任何變數群組,該加速裝置400B就禁能該位址解碼器423及該MAC 450a,或是捨棄該SRAM 421、該位址解碼器423及該MAC 450a。由於該 SRAM 421、該位址解碼器423及該MAC 450a並非必須元件,故在第4B圖中以虛線顯示。此外,第4A~4B圖中的該SRAM 421及422可用任何揮發性及非揮發性儲存裝置來取代。
本發明加速裝置400A/B可以軟體、硬體、或軟體(或韌體)及硬體的組合來實施,一單純解決方案的例子是現場可程式閘陣列(field programmable gate array)或一特殊應用積體電路(application specific integrated circuit)。一較佳實施例中,該加速裝置400A/B係利用一個一般用途(general-purpose)處理器以及一程式記憶體來實施,而該程式記憶體儲存一處理器可執行程式。當該一般用途處理器執行該處理器可執行程式時,該一般用途處理器被組態以運作有如:該壓縮器411、該語法分析器412~414、該位址解碼器423及424、該及閘陣列425、該MAC 450及450a、該乘法器460及475以及該累加裝置470a/b。
上述僅為本發明之較佳實施例而已,而並非用以限定本發明的申請專利範圍;凡其他未脫離本發明所揭示之精神下所完成的等效改變或修飾,均應包含在下述申請專利範圍內。
400A‧‧‧加速裝置
411‧‧‧壓縮器
412‧‧‧語法分析器
410A‧‧‧前端模組
420A‧‧‧非零封包引擎
421、422‧‧‧SRAM
423、424‧‧‧位址解碼器
425‧‧‧及閘陣列
450‧‧‧乘法累加器
451、460‧‧‧乘法器
452‧‧‧加法器
453‧‧‧累加器
Claims (47)
- 一種加速裝置,適用於一人工神經元,包含:一及閘陣列,包含複數個及閘,用以接收一第一位元映圖及一第二位元映圖以產生一輸出位元映圖;一第一儲存裝置,依序儲存包含M1個非零第一元素的第一裝載部,及根據一第一存取位址輸出一對應非零第一元素,其中該第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關;一第二儲存裝置,依序儲存包含M2個非零第二元素的第二裝載部,及根據一第二存取位址輸出一對應非零第二元素,其中該第二存取位址係與該第二位元映圖及該輸出位元映圖的比較結果有關;以及一乘法累加器(MAC)電路,耦接至該第一儲存裝置及該第二儲存裝置的輸出端,用以產生該對應非零第一元素及該對應非零第二元素的乘積值,並根據該乘積值及至少一先前累加值,產生一目前累加值;其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,而該第二位元映圖包含該M2個非零第二元素在該第二裝載部的位置資訊。
- 如申請專利範圍第1項所記載之裝置,其中一第一非零封包(NZP)係有關於一第一矩陣並包含一第一超標頭及該第一裝載部,而一第二NZP係有關於一第二矩陣並包含一第 二超標頭及該第二裝載部,以及其中該第一超標頭及該第二超標頭分別包含該第一位元映圖及該第二位元映圖。
- 如申請專利範圍第2項所記載之裝置,其中該第一位元映圖的各位元分別指出該第一矩陣中的對應第一元素是否等於0,及該第二位元映圖的各位元分別指出該第二矩陣中的對應第二元素是否等於0。
- 如申請專利範圍第2項所記載之裝置,更包含:一第一前端電路,用以將該第一NZP及該第一矩陣的原始數據之其一轉換成該第一位元映圖及該第一裝載部,傳送該第一位元映圖至該及閘陣列,以及傳送該第一裝載部至第一儲存裝置;以及一第二前端電路,用以將該第二NZP及該第二矩陣的原始數據之其一轉換成該第二位元映圖及該第二裝載部,傳送該第二位元映圖至該及閘陣列,以及傳送該第二裝載部至第一儲存裝置。
- 如申請專利範圍第4項所記載之裝置,其中該第一前端電路以及該第二前端電路為一語法分析器及一壓縮器之其一。
- 如申請專利範圍第4項所記載之裝置,更包含:一第一位址解碼器,耦接至該第一前端電路及該及閘陣列,用以根據該第一位元映圖及該輸出位元映圖的比較結果,決定一第一位移,以及將該第一位移與一第一基底位 址相加以產生該第一存取位址;以及一第二位址解碼器,耦接至該第二前端電路及該及閘陣列,用以根據該第二位元映圖及該輸出位元映圖的比較結果,決定一第二位移,以及將該第二位移與一第二基底位址相加以產生該第二存取位址;其中,該M1個非零第一元素係從該第一儲存裝置的該第一基底位址依序儲存,以及該M2個非零第二元素係從該第二儲存裝置的該第二基底位址依序儲存。
- 如申請專利範圍第6項所記載之裝置,更包含:一乘法器,耦接至該第一前端電路及該第二前端電路之至少其一及該MAC電路的輸出端;其中,該第一超標頭及該第二超標頭之至少其一更包含一前置標頭,其中該前置標頭包含一控制碼字欄位,該控制碼字欄位定義一目前NZP的非零元素的資料格式以及後續未包含任何前置標頭的NZP的非零元素的資料格式;以及其中,根據該第一NZP及該第二NZP之至少其一的控制碼字欄位,一對應前端電路傳送一資料尺寸給一對應位址解碼器及傳送一增益給該乘法器。
- 如申請專利範圍第1項所記載之裝置,更包含:一第三前端電路,用以將一第一NZP及一第一矩陣的原始數據之其一轉換成一第三位元映圖及該第一裝載部,依 序傳送該第三位元映圖之一預設部分當作該第一位元映圖至該及閘陣列,以及傳送該第一裝載部至第一儲存裝置;以及一第四前端電路,用以將一第二NZP及一第二矩陣的原始數據之其一轉換成該第二位元映圖及該第二裝載部,傳送該第二位元映圖至該及閘陣列,以及傳送該第二裝載部至第一儲存裝置;其中,該第一NZP係有關於該第一矩陣並包含該第三位元映圖及該第一裝載部,而該第二NZP係有關於該第二矩陣並包含該第二位元映圖及該第二裝載部;其中,該第三位元映圖的尺寸大於該第二位元映圖,以及該第二矩陣的尺寸等於一預設視窗;以及其中,該第三位元映圖之該預設部分對應至該預設視窗滑過該第一矩陣的重疊部分。
- 如申請專利範圍第2項所記載之裝置,其中該第一超標頭及該第二超標頭分別包含N1個節點及N2個葉片,其中各該N1個節點及各該N2個葉片包含一前置標頭、一位元映圖標頭以及一子節點基底位址,且該前置標頭包含一多層次欄位用以定義一多層次類型,其中當該多層次欄位定義一節點時,該子節點基底位址指向本身的子節點,其中當該多層次欄位定義一葉片時,該子節點基底位址指向對應裝載部的對應非零元素的起始位址,其中N1>0,N2>=0。
- 如申請專利範圍第9項所記載之裝置,更包含:一第三位址解碼器,當該多層次欄位定義一葉片時,該第三位址解碼器被致能,用以根據該第一位元映圖及該輸出位元映圖的比較結果,決定一第一位移,以及將該第一位移與一第一基底位址相加以產生該第一存取位址;一第四位址解碼器,當該多層次欄位定義一葉片時,該第四位址解碼器被致能,用以根據該第二位元映圖及該輸出位元映圖的比較結果,決定一第二位移,以及將該第二位移與一第二基底位址相加以產生該第二存取位址;一第五前端電路,用以轉換該第一NZP及該第一矩陣的原始數據之其一,其中當該多層次欄位定義一節點時,該第五前端電路根據該輸出位元映圖的至少一非零位元的位置及其子節點基底位址,傳送一對應的位元映圖標頭當作該第一位元映圖至該及閘陣列,以及其中當該多層次欄位定義一葉片時,該第五前端電路傳送一對應的位元映圖標頭當作該第一位元映圖至該及閘陣列以及該第三位址解碼器,並根據其子節點基底位址,傳送對應非零第一元素當作該第一裝載部至第一儲存裝置;以及一第六前端電路,用以轉換該第二NZP及該第二矩陣的原始數據之一,其中當該多層次欄位定義一節點時,該第六前端電路根據該輸出位元映圖的至少一非零位元的位置及其子節點基底位址,傳送一對應的位元映圖標頭當作 該第二位元映圖至該及閘陣列,以及其中當該多層次欄位定義一葉片時,該第六前端電路傳送一對應的位元映圖標頭當作該第二位元映圖至該及閘陣列以及該第四位址解碼器,並根據其子節點基底位址,傳送對應非零第二元素當作該第二裝載部至第二儲存裝置;其中,該些非零第一元素係從該第一儲存裝置的該第一基底位址依序儲存,以及該些非零第二元素係從該第二儲存裝置的該第二基底位址依序儲存。
- 一種加速方法,適用於一人工神經元,包含以下步驟:對一第一位元映圖及一第二位元映圖,進行一按位元邏輯及運算,以產生一輸出位元映圖;依序儲存包含M1個非零第一元素的第一裝載部至一第一儲存裝置,以及依序儲存包含M2個非零第二元素的第二裝載部至一第二儲存裝置;根據一第一存取位址,由該第一儲存裝置輸出一對應非零第一元素,以及根據一第二存取位址,由該第二儲存裝置輸出一對應非零第二元素,其中該第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關,以及該第二存取位址係與該第二位元映圖及該輸出位元映圖的比較結果有關;以及計算及累加該對應非零第一元素及該對應非零第二元素的乘積值;以及 重複該輸出步驟及該計算及累加步驟直到該輸出位元映圖中的至少一非零位元都處理完為止,以產生一累加值;其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,而該第二位元映圖包含該M2個非零第二元素在該第二裝載部的位置資訊。
- 如申請專利範圍第11項所記載之方法,其中一第一非零封包(NZP)係有關於一第一矩陣並包含一第一超標頭及該第一裝載部,而一第二NZP係有關於一第二矩陣並包含一第二超標頭及該第二裝載部,以及其中該第一超標頭及該第二超標頭分別包含該第一位元映圖及該第二位元映圖。
- 如申請專利範圍第12項所記載之方法,其中該第一位元映圖的各位元分別指出該第一矩陣中的對應第一元素是否等於0,及該第二位元映圖的各位元分別指出該第二矩陣中的對應第二元素是否等於0。
- 如申請專利範圍第12項所記載之方法,更包含:將該第一NZP及該第一矩陣的原始數據之其一轉換成該第一位元映圖及該第一裝載部;以及將該第二NZP及該第二矩陣的原始數據之其一轉換成該第二位元映圖及該第二裝載部。
- 如申請專利範圍第11項所記載之方法,更包含:根據該第一位元映圖及該輸出位元映圖的比較結果,決 定一第一位移,以及將該第一位移與一第一基底位址相加以產生該第一存取位址;以及根據該第二位元映圖及該輸出位元映圖的比較結果,決定一第二位移,以及將該第二位移與一第二基底位址相加以產生該第二存取位址;其中,該M1個非零第一元素係從該第一儲存裝置的該第一基底位址依序儲存,以及該M2個非零第二元素係從該第二儲存裝置的該第二基底位址依序儲存。
- 如申請專利範圍第12項所記載之方法,更包含:根據該第一NZP中的一控制碼字欄位,決定一第一資料尺寸及一第一增益;根據該第二NZP中的一控制碼字欄位,決定一第二資料尺寸及一第二增益;在該輸出步驟前,傳送該第一資料尺寸至該第一儲存裝置以及該第二資料尺寸至該第二儲存裝置;以及在該重覆步驟之後,將該第一增益、該第二增益以及該累加值相乘以得到一結果;其中,該第一超標頭及該第二超標頭之任一更包含一前置標頭,其中該前置標頭包含一控制碼字欄位,該控制碼字欄位定義一目前NZP的非零元素的資料格式以及後續未包含任何前置標頭的NZP的非零元素的資料格式。
- 如申請專利範圍第11項所記載之方法,更包含:將一第一NZP及一第一矩陣的原始數據之其一轉換成一第三位元映圖及該第一裝載部;依序提供該第三位元映圖之一預設部分當作該第一位元映圖;以及將一第二NZP及一第二矩陣的原始數據之其一轉換成該第二位元映圖及該第二裝載部;其中,該第一NZP係有關於該第一矩陣並包含該第三位元映圖及該第一裝載部,而該第二NZP係有關於該第二矩陣並包含該第二標頭及該第二裝載部,以及其中該第三位元映圖的尺寸大於該第二位元映圖,以及該第二矩陣的尺寸等於一預設視窗;以及其中,該第三位元映圖之該預設部分對應至該預設視窗滑過一第一矩陣的重疊部分。
- 如申請專利範圍第12項所記載之方法,其中該第一超標頭及該第二超標頭分別包含N1個節點及N2個葉片,其中各該N1個節點及各該N2個葉片包含一前置標頭、一位元映圖標頭以及一子節點基底位址,且該前置標頭包含一多層次欄位用以定義一多層次類型,其中當該多層次欄位定義一節點時,該子節點基底位址指向本身的子節點,其中當該多層次欄位定義一葉片時,該子節點基底位址指向對應裝載部的對應非零元素的起始位址,其中N1>0,N2>=0。
- 如申請專利範圍第18項所記載之方法,更包含:轉換該第一NZP及該第一矩陣的原始數據之其一為該第一超標頭及該第一裝載部,以及轉換該第二NZP及該第二矩陣的原始數據之其一為該第二超標頭及該第二裝載部;分別檢查該第一超標頭及該第二超標頭之該多層次欄位;當該第一超標頭的該多層次欄位定義一節點時,根據該輸出位元映圖的至少一非零位元的位置及其子節點基底位址,提供一對應的位元映圖標頭當作該第一位元映圖;當該第一超標頭的該多層次欄位定義一葉片時,提供一對應的位元映圖標頭當作該第一位元映圖,並根據其子節點基底位址,提供對應非零第一元素當作該第一裝載部給該第一儲存裝置;當該第二超標頭的該多層次欄位定義一節點時,根據該輸出位元映圖的至少一非零位元的位置及其子節點基底位址,提供一對應的位元映圖標頭當作該第二位元映圖;以及當該第二超標頭的該多層次欄位定義一葉片時,提供一對應的位元映圖標頭當作該第二位元映圖,並根據其子節點基底位址,提供對應非零第二元素當作該第二裝載部給第二儲存裝置;其中,該些非零第一元素係從該第一儲存裝置的該第一 基底位址依序儲存,以及該些非零第二元素係從該第二儲存裝置的該第二基底位址依序儲存。
- 一種加速裝置,適用於一人工神經元,包含:一及閘陣列,包含複數個及閘,用以接收P1個位元映圖之一以及一第一位元映圖以產生一輸出位元映圖;一第一儲存裝置,依序儲存包含M1個非零第一元素的第一裝載部,及根據一第一存取位址輸出一對應非零第一元素,其中該第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關;以及一計算電路,耦接至該第一儲存裝置,用以根據P1個不同的群組值之一以及由該第一儲存裝置輸出的加總,計算及累加各該P1個位元映圖所對應之一乘積值以產生一累加值;其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,以及該P1個位元映圖分別搭配該P1個不同的群組值來一起運作。
- 如申請專利範圍第20項所記載之裝置,更包含:一第二儲存裝置,依序儲存包含M2個非零第二元素的第二裝載部,及根據一第二存取位址輸出一對應非零第二元素,其中該第二存取位址係與該第二位元映圖及該輸出位元映圖的比較結果有關;其中,該及閘陣列更接收該P1個位元映圖及一第二位元映 圖之一,以及該第一位元映圖以產生該輸出位元映圖;其中,當該及閘陣列係接收該第二位元映圖時,該計算電路計算從該第一儲存裝置及該第二儲存裝置輸出的二個元素序列的內積,其中當該及閘陣列接收該P1個位元映圖之一時,該計算電路根據由該第一儲存裝置之輸出元素的加總值及一對應的群組值,計算該P1個位元映圖之一所對應之該乘積值,以及其中,該計算電路累加該內積及該P1個位元映圖對應之P1個乘積值以產生該累加值;以及其中,該第二位元映圖包含該M2個非零第二元素在該第二裝載部的位置資訊。
- 如申請專利範圍第21項所記載之裝置,其中一第一非零封包(NZP)係有關於一第一矩陣並包含該第一位元映圖及該第一裝載部,而一第二NZP係有關於一第二矩陣並包含一第三位元映圖及一第三裝載部,以及其中該第二矩陣包含M3個第二元素,且該M3個第二元素分為一零值群組、一變數群組以及P1個同值群組,其中該第二裝載部的該M2個非零元素的值不同於該P1個不同的群組值,以及其中該P1個同值群組係有關於該P1個位元映圖及該P1個不同的群組值。
- 如申請專利範圍第22項所記載之裝置,其中該第一位元映圖的各位元分別指出該第一矩陣中的對應第一元素是否等於0,及該第三位元映圖的每P2個位元指出該第二矩 陣中的對應第二元素屬於哪一個群組,以及其中2 P2>=(2+P1)。
- 如申請專利範圍第22項所記載之裝置,更包含:一第一位址解碼器,耦接至該第一儲存裝置及該及閘陣列,根據該第一位元映圖及該輸出位元映圖的比較結果,決定一第一位移,以及將該第一位移與一第一基底位址相加以產生該第一存取位址;以及一第二位址解碼器,耦接至該第二儲存裝置及該及閘陣列,當該及閘陣列接收該第二位元映圖時,該第二位址解碼器被致能,該第二位址解碼器根據該第二位元映圖及該輸出位元映圖的比較結果,決定一第二位移,以及將該第二位移與一第二基底位址相加以產生該第二存取位址;其中,該M1個非零第一元素係從該第一儲存裝置的該第一基底位址依序儲存,以及該M2個非零第二元素係從該第二儲存裝置的該第二基底位址依序儲存。
- 如申請專利範圍第22項所記載之裝置,更包含:一第一前端電路,用以將該第一NZP及該第一矩陣的原始數據之一轉換成該第一位元映圖及該第一裝載部,傳送該第一位元映圖至該及閘陣列,以及傳送該第一裝載部至第一儲存裝置;以及一第二前端電路,用以將該第二NZP及該第二矩陣的原始數據之一轉換成該第二位元映圖、該第二裝載部、該P1 個位元映圖以及該P1個不同的群組值,傳送該P1個位元映圖以及該第二位元映圖至該及閘陣列、傳送該第二裝載部至第二儲存裝置、以及傳送該P1個不同的群組值至該計算電路。
- 如申請專利範圍第25項所記載之裝置,其中該第二前端電路平行地傳送該P1個位元映圖之一至該及閘陣列以及一對應群組值至該計算電路,以及其中該第二前端電路於不同時間點傳送該P1個位元映圖以及該第二位元映圖。
- 如申請專利範圍第25項所記載之裝置,其中該第一前端電路以及該第二前端電路為一語法分析器及一壓縮器之其一。
- 如申請專利範圍第21項所記載之裝置,其中該計算電路包含:一MAC電路,當該及閘陣列接收該第二位元映圖時,該MAC電路被致能,該MAC電路計算從該第一儲存裝置及該第二儲存裝置輸出的該二個元素序列的內積;一第一累加電路,當該及閘陣列接收該P1個位元映圖之一時,該第一累加電路被致能,該第一累加電路累加從該第一儲存裝置輸出的元素,以產生一加總值;一乘法器,用以將該加總值乘上該對應群組值以產生該P1個位元映圖之一對應之該乘積值;以及一第二累加電路,累加該內積及該P1個位元映圖之該P1 個乘積值以產生該累加值。
- 如申請專利範圍第20項所記載之裝置,其中一第一非零封包(NZP)係有關於一第一矩陣並包含該第一位元映圖及該第一裝載部,而一第二NZP係有關於一第二矩陣並包含一第三位元映圖及一第三裝載部,以及其中該第二矩陣包含M5個第二元素,且該M5個第二元素分為一零值群組以及P1個同值群組,以及其中該P1個同值群組係有關於該P1個位元映圖及該P1個不同的群組值。
- 如申請專利範圍第29項所記載之裝置,其中該第一位元映圖的各位元分別指出該第一矩陣中的對應第一元素是否等於0,及該第三位元映圖的每P3個位元指出該第二矩陣中的對應第二元素屬於哪一個群組,以及其中2 P3>=(1+P1)。
- 如申請專利範圍第29項所記載之裝置,更包含:一位址解碼器,耦接至該第一儲存裝置及該及閘陣列,用以根據該第一位元映圖及該輸出位元映圖的比較結果,決定一第一位移,以及將該第一位移與一第一基底位址相加以產生該第一存取位址;其中,該M1個非零第一元素係從該第一儲存裝置的該第一基底位址依序儲存。
- 如申請專利範圍第29項所記載之裝置,更包含:一第一前端電路,用以將該第一NZP及該第一矩陣的原 始數據之一轉換成該第一位元映圖及該第一裝載部,傳送該第一位元映圖至該及閘陣列,以及傳送該第一裝載部至第一儲存裝置;以及一第二前端電路,用以將該第二NZP及該第二矩陣的原始數據之一轉換成該P1個位元映圖以及該P1個不同的群組值,傳送該P1個位元映圖至該及閘陣列以及傳送該P1個不同的群組值至該計算電路。
- 如申請專利範圍第32項所記載之裝置,其中該第一前端電路以及該第二前端電路為一語法分析器及一壓縮器之其一。
- 如申請專利範圍第29項所記載之裝置,其中該計算電路包含:一第一累加電路,累加從該第一儲存裝置輸出的元素,以產生該P1個位元映圖之一對應之該加總值;一乘法器,用以將該加總值乘上一對應群組值以產生該乘積值;以及一第二累加電路,累加該P1個位元映圖之P1個加總值以產生該累加值。
- 一種加速方法,適用於一人工神經元,包含以下步驟:依序儲存包含M1個非零第一元素的第一裝載部至一第一儲存裝置;在P1個位元映圖之一及一第一位元映圖之間,進行一按 位元邏輯及運算,以產生一輸出位元映圖;根據各第一存取位址,由該第一儲存裝置輸出各對應非零第一元素,其中各第一存取位址係與該第一位元映圖及該輸出位元映圖的比較結果有關;根據由該第一儲存裝置輸出的加總及P1個不同的群組值之一,計算該P1個位元映圖之一所對應之一乘積值;累加該乘積值;以及重複該進行該按位元邏輯及運算步驟、該輸出、該計算以及該累加步驟直到該P1個位元映圖都處理完為止以產生一累加值;其中,該第一位元映圖包含該M1個非零第一元素在該第一裝載部的位置資訊,以及該P1個位元映圖分別搭配該P1個不同的群組值來一起運作。
- 如申請專利範圍第35項所記載之方法,其中該進行該按位元邏輯及運算步驟更包含:從該P1個位元映圖及一第二位元映圖選擇其一為一選擇位元映圖;以及在該選擇位元映圖與該第一位元映圖之間,進行該按位元邏輯及運算,以產生該輸出位元映圖。
- 如申請專利範圍第36項所記載之方法,其中該計算步驟更包含:當對該P1個位元映圖之一以及該第一位元映圖進行該 按位元邏輯及運算時,根據由該第一儲存裝置之輸出的加總值及一對應群組值,計算該P1個位元映圖之一所對應之乘積值;以及當對第二位元映圖以及該第一位元映圖進行該按位元邏輯及運算時,依序儲存包含M2個非零第一元素的第二裝載部至一第二儲存裝置、導致該第二儲存裝置根據各第二存取位址輸出各對應非零第二元素、以及計算從該第一儲存裝置及該第二儲存裝置輸出的二個元素序列的內積;其中各第二存取位址係與該第二位元映圖及該輸出位元映圖的比較結果有關。
- 如申請專利範圍第37項所記載之方法,其中該累加步驟更包含:當對該P1個位元映圖之一以及該第一位元映圖進行該按位元邏輯及運算時,累加該P1個位元映圖之一所對應之乘積值;以及當對第二位元映圖以及該第一位元映圖進行該按位元邏輯及運算時,累加該內積。
- 如申請專利範圍第38項所記載之方法,其中該重複步驟更包含:重複該進行該按位元邏輯及運算步驟、該輸出、該計算以及該累加步驟直到該P1個位元映圖及該第二位元映圖都處理完為止以產生該累加值。
- 如申請專利範圍第37項所記載之方法,其中一第一非零封包(NZP)係有關於一第一矩陣並包含該第一位元映圖及該第一裝載部,且一第二NZP係有關於一第二矩陣並包含一第三位元映圖及一第三裝載部,以及其中該第二矩陣包含M3個第二元素,且該M3個第二元素分為一零值群組、一變數群組以及P1個同值群組,其中該第二裝載部的該M2個非零元素不同於該P1個不同的群組值,以及其中該P1個同值群組係有關於該P1個位元映圖及該P1個不同的群組值。
- 如申請專利範圍第40項所記載之方法,其中該第一位元映圖的各位元分別指出該第一矩陣中的對應第一元素是否等於0,及該第三位元映圖的每P2個位元指出該第二矩陣中的對應第二元素屬於哪一個群組,以及其中2 P2>=(2+P1)。
- 如申請專利範圍第40項所記載之方法,更包含:根據該第一位元映圖及該輸出位元映圖的比較結果,決定各第一位移,以及將各第一位移與一第一基底位址相加以產生各第一存取位址;以及當對第二位元映圖以及該第一位元映圖進行該按位元邏輯及運算時,根據該第二位元映圖及該輸出位元映圖的比較結果,決定各第二位移,以及將各第二位移與一第二基底位址相加以產生各第二存取位址; 其中,該M1個非零第一元素係從該第一儲存裝置的該第一基底位址依序儲存,以及該M2個非零第二元素係從該第二儲存裝置的該第二基底位址依序儲存。
- 如申請專利範圍第40項所記載之方法,更包含:在該依序儲存該第一裝載部之前,該將該第一NZP及該第一矩陣的原始數據之一轉換成該第一位元映圖及該第一裝載部;以及在該依序儲存該第二裝載部之前,將該第二NZP及該第二矩陣的原始數據之一轉換成該第二位元映圖、該第二裝載部、該P1個位元映圖以及該P1個不同的群組值。
- 如申請專利範圍第35項所記載之方法,其中一第一非零封包(NZP)係有關於一第一矩陣並包含該第一位元映圖及該第一裝載部,而一第二NZP係有關於一第二矩陣並包含一第三位元映圖及一第三裝載部,其中該第二矩陣包含M5個第二元素,且該M5個第二元素分為一零值群組以及P1個同值群組,以及其中該P1個同值群組係有關於該P1個位元映圖及該P1個不同的群組值。
- 如申請專利範圍第44項所記載之方法,其中該第一位元映圖的各位元分別指出該第一矩陣中的對應第一元素是否等於0,及該第三位元映圖的每P3個位元指出該第二矩陣中的對應第二元素屬於哪一個群組,以及其中2 P3>=(1+P1)。
- 如申請專利範圍第44項所記載之方法,更包含:根據該第一位元映圖及該輸出位元映圖的比較結果,決定各第一位移,以及分別將各第一位移與一第一基底位址相加以產生各第一存取位址;其中,該M1個非零第一元素係從該第一儲存裝置的該第一基底位址依序儲存。
- 如申請專利範圍第44項所記載之方法,更包含:在該依序儲存該第一裝載部之前,將該第一NZP及該第一矩陣的原始數據之一轉換成該第一位元映圖及該第一裝載部;以及將該第二NZP及該第二矩陣的原始數據之一轉換成該P1個位元映圖以及該P1個不同的群組值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762571297P | 2017-10-12 | 2017-10-12 | |
US62/571,297 | 2017-10-12 | ||
US201762581053P | 2017-11-03 | 2017-11-03 | |
US62/581,053 | 2017-11-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201915835A TW201915835A (zh) | 2019-04-16 |
TWI684141B true TWI684141B (zh) | 2020-02-01 |
Family
ID=66096128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107134911A TWI684141B (zh) | 2017-10-12 | 2018-10-03 | 人工神經元中以非零封包加速乘法運算的裝置及方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10637500B2 (zh) |
TW (1) | TWI684141B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10878310B2 (en) * | 2016-11-29 | 2020-12-29 | Mellanox Technologies, Ltd. | Accelerated convolution in convolutional neural networks |
TWI684141B (zh) * | 2017-10-12 | 2020-02-01 | 英屬開曼群島商意騰科技股份有限公司 | 人工神經元中以非零封包加速乘法運算的裝置及方法 |
US10671891B2 (en) * | 2018-07-19 | 2020-06-02 | International Business Machines Corporation | Reducing computational costs of deep reinforcement learning by gated convolutional neural network |
US10768895B2 (en) | 2018-11-08 | 2020-09-08 | Movidius Limited | Dot product calculators and methods of operating the same |
US12008475B2 (en) * | 2018-11-14 | 2024-06-11 | Nvidia Corporation | Transposed sparse matrix multiply by dense matrix for neural network training |
US10846363B2 (en) * | 2018-11-19 | 2020-11-24 | Microsoft Technology Licensing, Llc | Compression-encoding scheduled inputs for matrix computations |
US11493985B2 (en) | 2019-03-15 | 2022-11-08 | Microsoft Technology Licensing, Llc | Selectively controlling memory power for scheduled computations |
KR20200125212A (ko) * | 2019-04-26 | 2020-11-04 | 에스케이하이닉스 주식회사 | 신경망 가속 장치 및 그것의 동작 방법 |
TWI745697B (zh) * | 2019-05-24 | 2021-11-11 | 創鑫智慧股份有限公司 | 用於神經網路參數的運算系統及其壓縮方法 |
US11630770B2 (en) * | 2019-07-11 | 2023-04-18 | Meta Platforms Technologies, Llc | Systems and methods for reading and writing sparse data in a neural network accelerator |
US11120101B2 (en) * | 2019-09-27 | 2021-09-14 | Arm Limited | Matrix multiplication system and method |
US20210287074A1 (en) * | 2020-03-12 | 2021-09-16 | Semiconductor Components Industries, Llc | Neural network weight encoding |
US12045306B2 (en) * | 2020-04-09 | 2024-07-23 | Verisilicon Microelectronics (Shanghai) Co., Ltd. | Multiplier with zero skipping |
KR20210136476A (ko) | 2020-05-07 | 2021-11-17 | 삼성전자주식회사 | 쿼드 트리 방법의 파라미터들을 이용하여 압축하는 장치 및 방법 |
CN112230884B (zh) * | 2020-12-17 | 2021-04-20 | 季华实验室 | 目标检测硬件加速器及加速方法 |
US20210397414A1 (en) * | 2021-06-25 | 2021-12-23 | Intel Corporation | Area and energy efficient multi-precision multiply-accumulate unit-based processor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101527010A (zh) * | 2008-03-06 | 2009-09-09 | 上海理工大学 | 人工神经网络算法的硬件实现方法及其*** |
TW201232429A (en) * | 2011-01-17 | 2012-08-01 | Univ Nat Taipei Technology | High-speed hardware back-propagation and recurrent type artificial neural network with flexible architecture |
TWI417797B (zh) * | 2010-02-04 | 2013-12-01 | Univ Nat Taipei Technology | A Parallel Learning Architecture and Its Method for Transferred Neural Network |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110214157A1 (en) * | 2000-09-25 | 2011-09-01 | Yevgeny Korsunsky | Securing a network with data flow processing |
US8010469B2 (en) * | 2000-09-25 | 2011-08-30 | Crossbeam Systems, Inc. | Systems and methods for processing data flows |
US9460387B2 (en) * | 2011-09-21 | 2016-10-04 | Qualcomm Technologies Inc. | Apparatus and methods for implementing event-based updates in neuron networks |
US20130325766A1 (en) * | 2012-06-04 | 2013-12-05 | Csaba Petre | Spiking neuron network apparatus and methods |
US9436909B2 (en) * | 2013-06-19 | 2016-09-06 | Brain Corporation | Increased dynamic range artificial neuron network apparatus and methods |
US20190005377A1 (en) * | 2017-06-30 | 2019-01-03 | Advanced Micro Devices, Inc. | Artificial neural network reduction to reduce inference computation time |
TWI684141B (zh) * | 2017-10-12 | 2020-02-01 | 英屬開曼群島商意騰科技股份有限公司 | 人工神經元中以非零封包加速乘法運算的裝置及方法 |
-
2018
- 2018-10-03 TW TW107134911A patent/TWI684141B/zh active
- 2018-10-05 US US16/153,474 patent/US10637500B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101527010A (zh) * | 2008-03-06 | 2009-09-09 | 上海理工大学 | 人工神经网络算法的硬件实现方法及其*** |
TWI417797B (zh) * | 2010-02-04 | 2013-12-01 | Univ Nat Taipei Technology | A Parallel Learning Architecture and Its Method for Transferred Neural Network |
TW201232429A (en) * | 2011-01-17 | 2012-08-01 | Univ Nat Taipei Technology | High-speed hardware back-propagation and recurrent type artificial neural network with flexible architecture |
Also Published As
Publication number | Publication date |
---|---|
US10637500B2 (en) | 2020-04-28 |
US20190115933A1 (en) | 2019-04-18 |
TW201915835A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI684141B (zh) | 人工神經元中以非零封包加速乘法運算的裝置及方法 | |
CN108108811B (zh) | 神经网络中的卷积计算方法和电子设备 | |
EP3499428A1 (en) | Method and electronic device for convolution calculation in neutral network | |
EP3651075B1 (en) | Computation device and method | |
WO2020057161A1 (zh) | 一种用于卷积神经网络加速器的拆分累加器 | |
US10997272B2 (en) | Apparatus and method for generating efficient convolution | |
US20220164663A1 (en) | Activation Compression Method for Deep Learning Acceleration | |
US11341400B1 (en) | Systems and methods for high-throughput computations in a deep neural network | |
CN110555516A (zh) | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 | |
US20230068450A1 (en) | Method and apparatus for processing sparse data | |
US11928176B2 (en) | Time domain unrolling sparse matrix multiplication system and method | |
TWI738048B (zh) | 算數框架系統及操作浮點至定點算數框架的方法 | |
TWI684140B (zh) | 適用於人工神經元的處理裝置及其方法 | |
CN115994561A (zh) | 卷积神经网络加速方法、***、存储介质、装置及设备 | |
CN115222028A (zh) | 基于fpga的一维cnn-lstm加速平台及实现方法 | |
US20200327182A1 (en) | Method for processing numerical data, device, and computer readable storage medium | |
CN116957018A (zh) | 一种逐通道卷积的实现方法 | |
WO2020185238A1 (en) | Decompression of model parameters using functions based upon cumulative count distributions | |
US20240152327A1 (en) | Computing circuit, computing method, and decoder | |
EP4379541A1 (en) | Computing apparatus, method and system, and circuit, chip and device | |
CN113836481B (zh) | 矩阵计算电路、方法、电子设备及计算机可读存储介质 | |
WO2022061867A1 (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN115238875A (zh) | 数据处理电路及故障减轻方法 | |
CN114492728A (zh) | 基于图像数据y分量的处理方法、装置、设备及存储介质 |