TW202307646A - 具有省略邏輯的按位元積和累加 - Google Patents

具有省略邏輯的按位元積和累加 Download PDF

Info

Publication number
TW202307646A
TW202307646A TW111114891A TW111114891A TW202307646A TW 202307646 A TW202307646 A TW 202307646A TW 111114891 A TW111114891 A TW 111114891A TW 111114891 A TW111114891 A TW 111114891A TW 202307646 A TW202307646 A TW 202307646A
Authority
TW
Taiwan
Prior art keywords
value
sum
input
bit
threshold
Prior art date
Application number
TW111114891A
Other languages
English (en)
Other versions
TWI815404B (zh
Inventor
柯文昇
邱硯晟
洪哲民
張孟凡
Original Assignee
台灣積體電路製造股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 台灣積體電路製造股份有限公司 filed Critical 台灣積體電路製造股份有限公司
Publication of TW202307646A publication Critical patent/TW202307646A/zh
Application granted granted Critical
Publication of TWI815404B publication Critical patent/TWI815404B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Complex Calculations (AREA)
  • Hardware Redundancy (AREA)
  • Communication Control (AREA)

Abstract

一種用於以按字元輸入及按位元權重的方式執行輸入向量及權重向量的乘積的部分和累加的方法、裝置及系統導致部分累加積和。在每一權重位元之後將部分累加積和與臨限條件進行比較,當部分累加積和滿足臨限條件時,宣告省略指示符指示省略和累加的剩餘計算。

Description

具有省略邏輯的按位元積和累加
無。
乘法累加器可用於以按字元按位元方式將輸入資料與相應權重資料相乘。該操作的輸出可以在人工智慧網路中用於形成節點之間的連接。在此情況下,可將乘法累加的輸出提供至啟動函數。一個啟動函數為整流線性單元或ReLU啟動函數。若函數的輸入小於0,則返回0,否則返回值。
以下揭示內容提供用於實現發明的不同特徵的許多不同的實施例或實例。以下描述組件及佈置的特定實例用以簡化本揭示內容。當然,該些僅為實例,並不旨在進行限制。例如,在下面的描述中在第二特徵上方或之上形成第一特徵可包括其中第一特徵及第二特徵直接接觸形成的實施例,且亦可包括其中在第一特徵與第二特徵之間形成附加特徵的實施例,以使得第一特徵及第二特徵可不直接接觸。此外,本揭示內容可在各個實例中重複元件符號或字母。此重複係出於簡單及清楚的目的,其本身並不指定所討論之各種實施例及/或組態之間的關係。應理解,訊號可宣告為高1或低0,且除非上下文或慣例另有規定,否則本文使用的「1」理解為表示「宣告」,且除非上下文或慣例另有規定,否則本文使用的「0」理解為表示「未宣告」。視裝置及設計而定,一般技藝人士可以根據需要容易地轉化這些訊號。
在人工神經網路領域,機器學習獲取輸入資料,對輸入資料執行一些計算,然後應用啟動函數來處理資料。啟動函數的輸出實質上為輸入資料的一些簡化表示。輸入資料可以為節點層中的資料節點。第1圖說明3×3卷積的實例,該實例通常用於處理機器學習中的影像資料。影像10由單個像素11組成。影像可以在色彩空間中表示,諸如紅-綠-藍(red-green-blue,RGB)或色調-飽和度-發光(hue-saturation-luminescence,HSL),其中每一色彩空間變量的一個值為每一像素分配。影像的節點12為3×3像素塊,其中節點12中的每一像素11具有節點12的像素11的每一色彩空間變量的輸入值 I 1-9 。3×3卷積中的一種可能計算使用積和計算,其中每一輸入值 I 1-9 分別乘以權重矩陣14的權重值 W 1-9 。隨著進行每次乘法,可以保持每一乘積的運行總和。這種積和計算可稱為乘法累加運算/計算(multiply accumulate computation/calculation,MAC) 16。包含於運算20的MAC 16的輸出提供至包含於運算20的啟動函數18。在3×3卷積中,使用的啟動函數通常為整流線性啟動函數(整流線性單元(rectified linear unit)或ReLU)。ReLU為輸出y=max (0,x)的分段函數,其中x是MAC 16的結果。因此,所有負值設置為0,非零值為輸入的線性恆等式。
第2圖以更一般的方式說明第1圖中說明的概念,亦即,對於任何長度的輸入節點。每一輸入 I 0 ~ I N-1 分別乘以權重向量 W 0 ~ W N-1 。然後在積和計算(MAC)中對這些值求和,且經受ReLU啟動函數。輸出O為ReLU啟動函數的輸出。
第3圖說明ReLU啟動函數的圖表及ReLU啟動函數的分段函數表示。如第3圖中的圖表所示,對於x≤0的所有值,y的值=0,且對於x>0的所有值,y的值=x。應注意,在此情況下,若x的值等於0,則無論使用哪個函數,輸出為「0」(因此,若函數界定為y={x, x≥0|0, x)。可對ReLU啟動函數進行一些修改。
迄今為止,已經在一般意義上討論這些計算。例如,可以寫入在通用處理器上執行的電腦程式,包括簡單的for迴圈,該迴圈在INPUT數組及WEIGHT數組上執行MAC,然後將MAC的輸出傳遞至ReLU,例如以下邏輯:將計數器整數初始化為0。將儲存變量(例如MAC)初始化為0。提供長度為n且帶有輸入值的INPUT數組。提供長度為n且帶有符號權重值的WEIGHT數組。對於計數器=0,計數器<n,計數器++{MAC=MAC+(INPUT[計數器]*WEIGHT[計數器])。}輸出=(0, MAC)的最大值。提供輸出值。
對於大型資料集,在通用處理器上執行效率低下。為提高效率,該算法可在專用硬體,例如,應用特定積體電路(application specific integrated circuit,ASIC)或現場可程式閘陣列(field programmable gate array,FPGA)中實現。然而,在專用硬體(諸如應用特定積體電路(application specific integrated circuit,ASIC))中實現此邏輯涉及在數位邏輯塊中使用二進制數學。現在將在硬體中實現MAC (及ReLU)的上下文中提供描述。硬體實現涉及計算MAC且以二進制格式實現ReLU。
第4圖說明用於在硬體中算法實現MAC的輸入資料、權重向量及MAC的二進制表示。下文結合省略模組更詳細地討論硬體實現。對於節點中的資料點,輸入資料展示為無符號值的節點,例如幅度。輸入資料的長度為N位。例如,N可為4位元、8位元、16位元等。例如,若N為8,則每一輸入值在0與255之間。權重向量為2的補碼格式的有符號權重值。因此,負數將在最高有效位元(most significant bit,MSB)中以1開頭。每一權重向量的長度為K位元。N可等於K或者可為不同的值。例如,若K為8位元,則每一權重值可在-128與127之間。在符號中,對於輸入值,第i個輸入對應於節點中輸入資料點的輸入索引。每一權重將具有相應的權重向量的第i個權重索引。換言之,第i個輸入與第i個權重向量之間存在一對一的相關性。相比之下,每一輸入或每一權重向量的第j位元為由左至右,因此MSB為第0位元,最低有效位元(least significant bit,LSB)為輸入的第N-1位元,及權重向量的第K-1位元。由於N及K可為不同的值,故輸入資料中第j個位置的總數可能與權重向量的第j位置不同。作為符號的實例,其中i=2及j=5的I i,j位元對應於第三輸入資料的第六位元。類似地,i=3及j=4的W i,j位元對應於第四權重向量的第五位元。如第4圖所示,MAC產生的總位元數等於N加K加M的對數(以2為底),四捨五入至最接近的整數。例如,若節點中的輸入數為9 (例如,對應於9點卷積)且N及K各為8,則MAC的輸出中的位數為8+8+Roundup(log 29)=20。該值同樣可以表示為Roundup(N+K+log 2M)。
第5圖說明用於以按位元方式處理輸入值及權重向量的數學公式。具體地,每一輸入值與權重向量的每一位元相乘,且在每次迭代後求和。等式的左側為i個輸入及相應i個權重向量的和乘積的通用公式。由於將執行的數學為二進制數學,故可以分解為等式的右側,其中包括用於處理權重向量的符號位元的第一項及用於處理剩餘位元的第二項。
第一項表示N位元無符號輸入與每一有符號K位元權重向量的符號位元的和積。如第4圖所示,權重向量的MSB保存符號位元,且表示為權重向量的第0位元,因為位元j=0。第一項將輸入乘以權重向量的第0位元(表示符號位元)且將結果乘以第0位元的位值,即等於2 K-1。然後將該結果記錄為負值。實質上,輸入與符號位元之間的乘積建立權重向量的最大負性。例如,若權重向量為8位元且為負數,則符號位元表示2 7位值中的「1」。這相當於取輸入的2的補碼且將其左移7次。此係針對每一輸入I i迭代完成,且第一項表示所有這些乘積的和結果。當相應的權重向量不為負時,將加上零。
第二項包括兩個嵌套求和運算。內部求和表示權重向量 W i 中每一剩餘j位元的總和,乘以輸入 I i ,再乘以權重向量 W i 中相應第j位元的位值。外部求和對每一輸入 I i 及權重向量 W i 重複內部求和,且將所有這些求和加在一起。
第6圖說明輸入 I及權重向量 W的樣本計算,其中M=1、N=8且K=8。 I 0 = 77 (0100 1101)及 W 0 = - 116 (1000 1100)。在求和
Figure 02_image001
中,第一項可調解為-1∙(0100 1101)∙(1∙2 7)=1011 0011∙2 7=1101 1001 1000 0000 (注意,符號位元已用附加前導「1」填充)。第二項可調解為77·(0·2 6)+77·(0 2 5)+77·(0·2 4)+77·(1·2 3)+77·(1·2 2)+77·(0·2 1)+77·(0·2 0)=77·2 3+77·2 2=616 (0010 0110 1000)+308 (0001 0011 0100)=924 (0011 1001 1100)。第一項與第二項相加得到和-8932 (1101 1101 0001 1100)。
如該實例可見,當權重向量為負時,按位元數學將權重向量設置為輸入的-128倍,然後隨後的位元將正部分加回負數(使其負數較小),直至達到最終結果。
在權重向量為正的情況下,第一項將導致「0」,且第二項將為權重向量的剩餘位元的按位元求和,類似於關於負權重向量所展示的情況。
關於第7圖至第12圖,討論省略評估及啟動特徵(亦稱為省略模組),當與兼容的啟動函數(例如ReLU啟動函數)一起使用時,簡化輸入節點的MAC和積累加器及相應的權重向量的計算複雜度。如上所述,例如,ReLU啟動函數提供MAX(0,input)的輸出,其中輸入等於MAC積和。MAC積和經由一系列部分累加來判定,因為迭代處理權重向量的位元。因此,若在特定迭代之後的部分累加積和永遠不會變為正數(或永遠不會滿足啟動函數的條件),則可判定可省略剩餘的計算。
在按位元迭代地處理權重向量 W的情況下,在每次迭代之後,可以將部分積和累加的輸出與為權重向量 W的每一剩餘位元假定的「最壞情況」場景進行比較 「最壞情況」為會產生最多計算週期的情況,即不產生省略條件。這裡,最壞情況為權重向量 W的所有剩餘位元假定為等於1。這意味著,例如,8位元權重向量 W i ,若 W i 為負(即,以 W i,0 =1開頭),小於0的最小負數為-1 (二進制中的所有1)。並且,若 W i 為正(即,以 W i,0 =0開頭),則最大數為127 (剩餘位元為二進制中的所有1)。
第7圖說明求和公式30,考慮任何給定迭代 n的權重向量的「未知」部分。第7圖的公式說明與第5圖中的公式類似的公式。包括一般積和累加公式31,該公式31分解為符號位元求和項32及權重向量的剩餘位元的嵌套求和。剩餘位元的嵌套求和分解為用於權重向量的前n位元(n>0)的第一嵌套求和項34及用於權重向量的剩餘K-1位元的第二嵌套求和項36。對於迭代n,第一嵌套求和項34為處理第n位元之後權重向量的已知n位元的求和積,且第二嵌套求和項36含有來自權重向量 W的剩餘n+1位元至剩餘K-1位元的剩餘位元。如上所述,在一些實施例中,未知權重向量位元可以假定為所有位元等於1的「最壞情況」。隨著權重向量自MSB至LSB按位處理,更多實際權重向量為已知的,且未知的假設權重向量的位元有效值隨著每次迭代而降低。
第8圖至第12圖說明根據一些實施例的省略模組的應用。特別地,第8圖至第12圖演示如何根據第13圖的流程圖(下面討論)實現第7圖的求和公式。第8圖至第12圖中的每一者說明一組M=9輸入向量 I i ,每一輸入向量具有N=8位元,及M=9權重向量 W i ,,每一權重向具有K=8位元。出於演示目的,每一輸入向量的值係隨機產生的,分別為77、138、179、76、175、159、153、212、128。出於演示目的,每一權重向量的值係隨機產生的,分別為116、76、90、-83、33、-8、-60、-98、-22。這些數中的每一者的二進制表示亦在第8圖至第12圖中說明。
第8圖及第9圖說明求和公式30的計算,其中迭代n=0。在迭代n=0的情況下,求和公式在第一權重位元j=0處進行調解。第8圖說明每一輸入向量乘以各個權重向量的符號位元,且進一步乘以符號位元的位元值(2 7)。若權重向量為正,則符號位元的位元值為「0」且將應計「0」。若權重向量為負,則符號位元的位元值為「1」,且應計值將等於輸入向量的負數乘以2 7。這些乘積相加。如第8圖所說明,這些乘積的和為-103,040。該值為可能的最負累加值。若權重向量的所有其他位均為「0」,則輸出值為103,040。若權重向量的任何剩餘位元為「1」,則該值將導致累加值較不負。因此,所有其他操作對累加值沒有影響或只有正影響。
第9圖說明剩餘兩項的處理。第一嵌套求和項34 (參見第7圖)將不會應計任何操作,因為在j=1的情況下,開始求和。在此情況下,在n=1的情況下,j=0,因此第一項不會產生任何值。假定第二嵌套求和項36為「最壞情況」,如上所述,這為會導致最多計算週期的情況。若最終的累加積和大於0,則會產生最多計算週期。因此,在假設剩餘權重向量的每一位元為「1」的情況下,可以採用最壞情況。該值為十進制的127,因此每一輸入值乘以每一假設的權重向量的值127,然後加在一起得到數164,719。若將此最壞情況的和與累加值-103,040進行比較,可以看出最終值可能高達-103,040+164,719=61,679。由於該值為非負的,即啟動函數後的結果為非零值,因此需要處理更多的位元。
第10圖說明求和,其中n=1,亦即,其中j=0、1。其中j=0已計算為-103,040。在j=1求的情況下,在第一嵌套求和項34 (參見第7圖)中,每一輸入向量 I i 乘以相應權重向量(即, W i,1 )中的j=1位元,且該值乘以1位元的位值(2 K-j-1-> 2 8-1-1-> 2 6)。因此,在 W i,1 =0的情況下,應計值將為0,而在 W i,1 =1的情況下,應計值將為相應輸入乘以2 6。這些為根據第一嵌套求和項34的外部求和計算然後求和。在該實例中,和等於48,448。當將該值加至j=0值時,總和為-54,592。
假設第10圖的第二嵌套求和項36為「最壞情況」,如上所述,這為會導致最多計算週期的情況,即假設權重向量的每一剩餘未知位元成為「1」。在n=1的情況下,該值為十進制的63,因此每一輸入值乘以每一假定的權重向量的值63,然後加在一起得到數81,711。若將此最壞情況和與累加值-54,592進行比較,可以看出最終值可能高達-54,592+81,711=27,119。由於該值為非負的,即啟動函數後的結果為非零值,因此需要處理更多的位元。應注意,因為權重向量的第二位元(j=1)實際上不為最壞情況,故處理累加值與最壞情況值之間的第二位元後的差–27,119小於僅處理上述第一位元後的差–61,679。
第11圖說明求和,其中n=2,即,其中j=0、1、2。其中j=0、1已計算為-54,592。在j=2的情況下,在第一嵌套求和項34 (參見第7圖)中,每一輸入向量 I i 乘以相應權重向量(即, W i,2 )中的j=2位元,且該值乘以2位元的位值(2 K-j-1-> 2 8-2-1-> 2 5)。因此,在 W i,2 =0的情況下,應計值將為0,且在 W i,2 =1的情況下,應計值將為相應輸入乘以2 5。這些為根據第一嵌套求和項34的外部求和計算然後求和。在該實例中,和等於17,216。當將此值加至j=0,1值時,總和為-37,376。
假設第11圖的第二嵌套求和項36為「最壞情況」,如上所述,這為會導致最多計算週期的情況,即假設權重向量的每一剩餘未知位元為「1」。當n=2時,該值為十進制的31,因此每一輸入值乘以每一假設的權重向量的值31,然後加在一起得到數40,207。若將此最壞情況和與累加值-37,376進行比較,可以看出最終值可能高達-37,376+40,207=2,831。由於該值為非負的,即啟動函數後的結果為非零值,因此需要處理更多的位元。
第12圖說明求和,其中n=3,即,其中j=0、1、2、3。其中j=0已計算為-37,376。在j=1的情況下,在第一嵌套求和項34 (參見第7圖)中,每一輸入向量 I i 乘以相應權重向量(即, W i,3 )中的j=3位元,且該值乘以3位元的位值(2 K-j-1-> 2 8-3-1-> 2 4)。因此,在 W i,3 =0的情況下,應計值將為0,而在 W i,3 =1的情況下,應計值將為相應輸入乘以2 4。這些為根據第一嵌套求和項34的外部求和計算然後求和。在該實例中,和等於8,800。當將該值加至j=0、1、2值時,總和為-28,576。
假設第12圖的第二嵌套求和項36為「最壞情況」,如上所述,這為會導致最多計算週期的情況,即假設權重向量的每一剩餘未知位元為「1」。在n=3的情況下,該值為十進制的15,因此每一輸入值乘以每一假設的權重向量的值15,然後加在一起得到數19,455。若將該最壞情況和與累加值-28,576進行比較,可以看出最終值可能高達-28,576+19,455=-9121。由於該值對於「最壞情況」的情況為負的,則可判定權重向量的任何剩餘值不可能導致非負值。換言之,對於n=4、5、6、7的權重向量的剩餘位元沒有任何值,這將導致非負積和累加。由於權重向量的任何剩餘未處理位元的累加值始終為負,因此當傳遞至ReLU啟動函數時,結果將始終為0。因此,處理任何進一步位元將浪費資源。在此情況下,省略模組可啟動省略訊號,且將處理下一輸入區塊。
第13圖說明用於省略評估及啟動特徵的製程流程圖100。在操作110,作為MAC和積累加的一部分,以按字元輸入及按位元權重的方式執行部分和累加。該方式如上所述,其中整個無符號輸入值(任何位元長度)以按位元方式乘以有符號權重向量。部分和累加態樣反映按位處理權重向量的迭代製程。因此,在操作110,處理權重向量的一個位元。在操作120,針對省略條件評估部分累加積和。省略條件可以基於相應的啟動函數。例如,在一些實施例中,啟動函數可為ReLU啟動函數,使得若MAC和積累加的輸出為負,則啟動函數的輸出為零。因此,省略條件可評估部分累加積和以預測MAC和積可能為正的或負的。在一些實施例中,省略條件可基於預定義臨限(參見例如第23A圖及第23B圖及其隨附描述)。在其他實施例中,可基於對剩餘未處理權重位元的預測來動態計算省略條件。
在操作130處,若判定部分累加積和滿足省略條件,則在操作140處,宣告訊號以指示可省略後續操作。後續操作可包括例如記憶體存取讀取操作(例如,加載輸入或權重值等)或計算操作(例如,後續迭代)。若在操作130判定部分累加積和不滿足省略條件,則在操作150判定是否已處理所有權重位元。若所有權重位元已處理完畢,則處理結束,且在操作160部分累加積和已累加成MAC和積輸出。在操作160判定輸出後,在操作170將啟動函數應用於輸出。若在操作150,尚未處理所有權重位元,則在操作180將推進下一權重位元,且該製程將在操作110處重複。應注意,在操作140之後,若滿足省略條件且宣告該訊號以省略後續操作,則輸出可以可選地作為累加積和,且可對輸出執行操作170處的啟動函數。
第14圖說明MAC省略電路200的硬體實現的高級電路方塊圖。在一些實施例中,MAC省略電路200可在單一半導體基板上實現。在其他實施例中,MAC省略電路200可在複數個半導體基板上實現且根據需要互連。輸入正反器(flip-flop,FF)210自無符號輸入向量205獲取輸入值。權重正反器220自有符號權重向量215獲取輸入。輸入向量205藉由乘法器225乘以權重向量215的下一位元。若下一位元為第一位元,結果轉換為2的補碼格式,且藉由加法區塊230與左移部分和的位元255a (初始化為「0」)相加,然後儲存為新的部分和235a,否則,結果藉由加法區塊230與左移部分和的位元255a相加。若已處理權重向量215的所有位元,則部分和235a作為輸出240。否則,在每次迭代之後,部分和235a由省略模組245評估以判定是否存在省略條件。若存在省略條件,則宣告省略訊號。若不存在省略條件,則對權重向量的K位元中的每一位再次重複該製程,直至宣告省略訊號或直至處理完剩餘的K位元。若宣告省略訊號,則可將部分和235a作為輸出240,可修改且作為輸出240,或者可將零作為輸出240。
第15圖說明根據一些實施例的MAC省略電路200的更詳細的方塊圖。類似的參考符號用於指代與上文關於第14圖討論的MAC省略電路200類似的元件。應理解,具有相同標籤的引腳耦接在一起(例如,標記為「x」的輸出引腳將耦接至標記為「x」的輸入引腳)。INPUT向量205包括一組M個N位元向量。INPUT向量205通向INPUT正反器(Flip Flop,FF) 210的箭頭線中的斜線表示一條線用於說明多條線。在一些實施例中,可能有M條線通向INPUT FF 210,一條線用於每一輸入向量205。在一些實施例中,M個向量中的每一者可能有N條線,或N×M條線通向INPUT FF 210。在這些實施例中,可以並行處理M個向量的每一位元。輸入向量205可一次閂鎖一個位元,或者可以按字元的方式閂鎖,例如一次8位元。
INPUT FF 210為用於將輸入向量205閂鎖至MAC省略電路200中的正反器電路區塊。IN_LAT引腳為INPUT FF 210提供閂鎖訊號輸入,當啟動時,該閂鎖訊號輸入使得INPUT FF 210將INPUT向量205閂鎖至INPUT FF 210中。RST引腳為INPUT FF 210的重置訊號輸入,以適應通用重置訊號,該通用重置訊號可提供至各種區塊,從而使MAC省略電路200 (包括INPUT FF 210)的狀態變為返回初始/重置狀態。在一些實施例中,INPUT FF 210包括足夠的正反器狀態以適應每一輸入向量205的每一位元,即M×N個正反器狀態。正反器可佈置在一系列暫存器中,例如,一個N位元暫存器用於每一M個輸入向量205。
WEIGHT FF 220為用於將權重向量215閂鎖至MAC省略電路200中的正反器電路區塊。W_LAT引腳為WEIGHT FF 220提供閂鎖訊號輸入,當啟動時,該閂鎖訊號輸入使得WEIGHT FF 220將權重向量215閂鎖至WEIGHT FF 220中。RST引腳為WEIGHT FF 220的重置訊號輸入,以適應通用重置訊號,該通用重置訊號可提供至各種區塊,從而使MAC省略電路200 (包括WEIGHT FF 220)的狀態變為返回至初始/重置狀態。在一些實施例中,WEIGHT FF 220閂鎖所有權重向量215且具有足夠的正反器狀態來容納M個K位元權重向量215,即M×K正反器狀態。在其他實施例中,WEIGHT FF 220一次僅自每一權重向量215閂鎖一個位元,自MSB開始,即K個正反器狀態。WEIGHT FF 220的輸出可包括對於每一權重向量215的相同位值的每一權重位元的並行輸出。
乘法器225為乘法器電路區塊,用於以按位元方式將閂鎖在INPUT FF 210中的每一INPUT向量205與閂鎖在WEIGHT FF 220中的每一相應權重向量215相乘。換言之,每次僅將來自每一權重向量215的一個位元與相應的輸入向量205相乘。乘法器225亦包括Flow_Thru引腳,當啟動時,該Flow_Thru引腳使乘法器225穿過輸入向量205,而不管來自WEIGHT FF 220的位元值。
第14圖的加法區塊230分解為加法器230a及累加器230b。加法器230a為用於將每一位元權重輸入向量205加在一起的加法器電路區塊。如圖所說明,使用加法器樹電路區塊,然而,可以使用其他類型的加法器。加法器策略保留進位。加法器230a的輸出位元數與每一輸入向量的位元數(N)及輸入向量數(M)有關。加法器將輸出N+Roundup(log 2M)位元。因此,對於9個8位元輸入向量的例示性卷積,加法器將輸出8+4=12位元。加法器230a的輸出引腳耦接至累加器230b的輸入引腳。
累加器230b實質上為將輸入的和積與位元移位的先前和積相加的2×1加法器電路區塊,若累加器230b將其反饋至累加器230b的另一輸入引腳。累加器230b包括ADD(加法)引腳,在啟動時,該ADD引腳指示累加器230b將兩個輸入相加而非減去兩個輸入。累加器230b的輸出提供至移位暫存器235的輸入引腳及省略模組245的輸入引腳。
移位暫存器235包括佈置在具有移位能力的暫存器中的多個正反器。移位暫存器235包括SHIFT輸入引腳255,當啟動時,該SHIFT輸入引腳255使得移位暫存器235左移移位暫存器235的內容。移位暫存器235亦包括ACC_LAT引腳,以提供閂鎖訊號輸入以閂鎖累加器230b的輸出進入移位暫存器235。RST引腳為移位暫存器235的重置訊號輸入,以適應通用重置訊號,該通用重置訊號可提供至可能導致MAC省略電路200 (包括移位暫存器235)的狀態以返回初始/重置狀態。
省略模組245為判定是否發生省略條件的電路區塊。省略模組的細節將在下文參考第17圖更詳細地討論。省略模組245包括接收累加器230b的輸出的輸入引腳及可以向控制器260提供省略訊號的輸出引腳250 (SKIP引腳250)。RST引腳為用於省略模組245的重置訊號輸入,以適應通用重置訊號,該通用重置訊號可提供至可能導致MAC省略電路200 (包括省略模組245)的狀態返回至初始/重置狀態。
控制器260為含有狀態機且驅動必要訊號以控制上述第15圖的各種電路區塊之間的交互的電路區塊。接下來更詳細地討論控制器260。
第16圖說明控制器260電路區塊的方塊圖。控制器260包括若干子電路區塊,包括有限狀態機(finite state machine,FSM) 305電路區塊、狀態邏輯310電路區塊、計數器(counter,CNT) 315電路區塊、計數器邏輯(CNT logic) 320電路區塊、解碼狀態正反器(state flip flop,SFF) 325電路區塊、用於控制訊號的邏輯330電路區塊及跳轉(jump,JMP)邏輯335電路區塊。控制器260具有用於接收來自引腳250的SKIP訊號輸入、START訊號輸入、NEXT訊號輸入及RST訊號輸入的引腳,每一訊號輸入接收在同名的引腳上。控制器260具有用於提供控制訊號的引腳,包括IN_LAT訊號、W_LAT訊號、ACC_LAT訊號、ADD訊號、來自引腳255的SHIFT訊號、SKIPFF_LAT訊號、SKIPSR_LAT訊號、SkipSHIFT訊號、Flow_Thru訊號及OUT_RDY訊號,每一訊號提供在同名的引腳上。這些控制訊號由用於控制訊號的邏輯330提供。
SKIP引腳250接收來自省略模組245的訊號,下文將進一步詳細討論。NEXT引腳接收訊號以指示控制器260是否應進入狀態機中的下一狀態。NEXT引腳接收的訊號可切換以指示狀態機應繼續下一步。NEXT引腳接收的訊號可能來自系統外部且有助於控制系統。START引腳接收指示狀態機應自第一狀態移動至第二狀態的訊號。邏輯可以將START引腳訊號與NEXT切換組合,使得當START=1及NEXT切換時,狀態機進入下一狀態。START引腳接收的訊號可能來自系統外部且有助於控制系統。RST引腳接收訊號以指示控制器260是否應將所有閂鎖器及狀態重置回初始狀態。RST引腳接收的訊號可能來自系統外部且有助於控制系統。
IN_LAT引腳、W_LAT引腳、ACC_LAT引腳、ADD引腳、SHIFT引腳255、SKIPFF_LAT引腳、SKIPSR_LAT引腳、SkipSHIFT引腳及Flow_Thru引腳在上文針對上面討論的各種電路區塊的相應引腳進行討論。OUT_RDY引腳提供訊號,在啟動時,該訊號指示MAC省略電路200的輸出準備好由例如實現啟動功能(例如ReLU啟動功能)的電路獲取或提供至該電路。
FSM 305為判定當前狀態及下一狀態的電路區塊,當前狀態在ST引腳上輸出,在當前實施例中,該些ST引腳可包括根據下面關於第24A圖及第24B圖描述的狀態圖代表八種可能狀態之一的三個引腳<0:2>。基於當前狀態、START引腳上的值、RST引腳上的值、JMP0引腳上的值、JMP1引腳上的值及NEXT引腳的值的切換來產生下一狀態且置放於ST引腳上。
ST引腳耦接至狀態邏輯310電路區塊處的同名引腳。狀態邏輯310塊使用ST引腳及NEXT引腳來判定使用一種熱方式置放在引腳ST_d上的解碼輸出,包括8個引腳。一種熱方式解碼將八種可能狀態中的每一者轉換為輸出條件,其中一次只有一個輸出引腳為高,而另一者保持低,使得一個引腳有效地分配至每一可能的狀態。NEXT引腳在啟動時向狀態邏輯310發出訊號以尋找新的輸入。
計數器(counter,CNT) 315電路區塊為產生計數器的電路區塊,該計數器用於追蹤權重向量的位元位置,以便以按位元方式處理權重值。CNT 315的CNT引腳包括<0:K'>引腳,其中K'等於Roundup(log 2K)。CNT 315模組輸出上的值會根據CNTplus引腳發生變化。當CNTplus引腳啟動時,CNT引腳將發生變化,從而輸出值,該值等於大於前一輸出的1。RST引腳為引腳,在啟動時,重置CNT 315,從而使CNT引腳的值調解為零。
CNT邏輯320電路區塊為類似於狀態邏輯310電路區塊的電路區塊。CNT邏輯320電路區塊具有耦接至CNT 315電路區塊的同名引腳,且在引腳CNT_d上以一種熱方式提供解碼輸出。CNT_d的引腳數為<0:K>,其中K如上所述,亦即權重向量215中的位元數。NEXT引腳在啟動時向CNT邏輯320發出訊號以在CNT上尋找新的輸入。
狀態正反器(state flip flop,SFF) 325電路區塊為含有正反器的電路區塊,該正反器用於儲存來自狀態邏輯310電路區塊的解碼狀態引腳上存在的每一值。例如,SFF 325可含有用於每一解碼狀態引腳的D型正反器。作為替代,可使用其他正反器類型。ST_dlat引腳可將閂鎖訊號傳輸至控制訊號的邏輯330。
用於控制訊號電路區塊的邏輯330為具有用於ST_dlat的引腳、用於CNT_d的引腳、用於NEXT的引腳、用於RST的引腳、用於CNTplus的引腳及用於IN_LAT、W_LAT、ACC_LAT、ADD、來自引腳255的SHIFT訊號、SkipFF_LAT、SkipR_LAT、SkipSHIFT、Flow_Thru及OUT_RDY的引腳的電路區塊。這些同名引腳的訊號為根據下文描述的狀態圖及狀態表使用邏輯閘產生。
跳轉(jump,JMP)邏輯335電路區塊為具有耦接至CNT或CNT_d引腳的引腳、耦接至ST或ST_d引腳的引腳、耦接至RST引腳的引腳、耦接至NEXT引腳的引腳及耦接至SKIP引腳250的引腳的電路區塊。JMP邏輯335亦具有耦接至FSM 305的JMP0引腳的JMP0引腳及耦接至FSM 305的JMP4引腳的JMP4引腳。JMP邏輯335使用當兩個條件之一為真時啟動JMP0引腳的邏輯。第一,當RST=0 AND NEXT切換AND CNT=1時,或第二,當SKIP=1時。JMP邏輯335使用在RST=0 AND NEXT切換AND CNT!=7時啟動JMP4引腳的邏輯。可選地,JMP0或JMP4引腳的啟動可能限於當前狀態為7的情況。這可以自ST或ST_d引腳獲取,亦可以自經過熱引腳解碼的特定ST_d引腳獲取,例如ST_d<7>引腳。應理解,JMP邏輯335電路區塊僅為實現該邏輯的一種方式。該邏輯亦可作為附加狀態整合至邏輯330或有限狀態機中。
第17圖說明根據一些實施例的省略模組245電路區塊的方塊圖。省略模組245電路區塊可以根據第7圖的數學公式、第8圖至第12圖的實例或第13圖的流程圖使用其他邏輯/電路區塊來實現。省略模組245包括數個子電路區塊,包括輸入和正反器(input sum flip flop,IS_FF)350、移位暫存器355、減法器360、比較器365、絕對值(absolute value,Abs)電路區塊370及省略正反器(skip flip flop,SkipFF) 375電路區塊。省略模組245包括SkipSHIFT引腳、SkipSR_LAT引腳、SkipFF_LAT引腳、RST引腳、輸入和引腳組、累加積和引腳組及SKIP引腳250。這些引腳提供或接收同名的訊號且耦接至如上所述的MAC省略電路200的同名引腳。
IS_FF 350電路區塊為可利用正反器來儲存來自IS引腳的輸入和的電路區塊。SkipFF_LAT引腳可提供訊號以將輸入和閂鎖至IS_FF 350中。RST引腳可提供訊號以將IS_FF 350重置至初始化狀態。IS_FF 350的位元數可等於INPUT向量205的位元數N加上輸入向量數M的對數(以2為底)(Roundup(log 2M))。IS_FF 350的輸出引腳可耦接至移位暫存器355及減法器360作為減數。
移位暫存器355電路區塊為利用能夠執行左移位的暫存器的電路區塊。SkipSHIFT引腳在啟動時會觸發左移位。SkipSR_LAT引腳在啟動時使得來自IS_FF 350的輸入和(Input Sum,IS)閂鎖至移位暫存器355中。RST引腳可提供訊號以將移位暫存器355重置至初始化狀態。移位暫存器355的位元數可等於INPUT向量205的位元數N加上權重向量215的位元數K加上輸入向量數M的對數(以2為底)(Roundup(log 2M))。移位暫存器355的輸出引腳可耦接至減法器360作為被減數。
減法器360取IS_FF 350的值且自移位暫存器355的值減去該值以計算輸出B。減法器360經由輸出引腳將輸出B提供至比較器365。
絕對值(absolute value,Abs)電路區塊370為用以獲取累加積和(accumulated product sum,APS)且計算絕對值且將其作為輸出A提供至比較器365的電路區塊。Abs電路區塊370包括這些功能的相應引腳。Abs 電路區塊370可以可選地用以經由一組TH引腳獲取臨限TH值,該臨限TH值可加至APS的絕對值作為臨限偏移,以提高或降低發現省略條件的可能性。在這些實施例中,Abs 電路區塊370可包括加法器,以在將輸出A提供至比較器365之前自輸出A加上或減去臨限TH。下面參考第23A圖及第23B圖更詳細地討論臨限TH。
比較器365電路區塊為將輸出A與輸出B進行比較的電路區塊。若輸出A大於輸出B,則發現省略條件。比較器包括這些值的相應引腳。省略條件提供在耦接至SkipFF 375電路區塊的Skip_LAT引腳上。SkipFF 375電路區塊為包括正反器的電路區塊,當由Skip_LAT引腳上的訊號啟動時,該正反器會閂鎖SKIP輸出引腳250。
第15圖的MAC省略電路200的操作可參看第15圖、第16圖及第17圖中的電路方塊圖藉由第18圖至第22圖中的例示性情況來演示。第18圖說明與上文關於第8圖使用的相同的輸入向量及權重向量。輸入向量閂鎖在INPUT FF 210中。權重向量的第一MSB位元閂鎖在WEIGHT FF 220中。在第18圖中,在不管權重值如何,Flow_Thru引腳在乘法器225中啟動,且允許輸入向量流過乘法器225。這相當於將每一輸入向量乘以「1」。然後輸入向量由加法器230a相加,且輸入和0101 0001 0001 (1297)提供至省略模組245。輸入和閂鎖至IS_FF 350中。如上所述,IS_FF 350的位元數N IS=K+Roundup(log 2M)。輸入和的最高N IS–K+1位元閂鎖至移位暫存器355。這相當於將輸入和除以2 N IS -K+1,在此情況下為2 7。這樣做的原因為由於輸入向量及權重向量的MSB的乘積的計算尚未完全加權。每一週期將部分累加積和移動一個位置。同樣,每一週期將移位暫存器移動一個位置。因此,利用輸入和的最高N IS–K+1位元可確保比較在同一乘法器中進行。
例如,權重位元的MSB的部分累加積和等於
Figure 02_image003
,然後乘以其位值2 7。剩餘未處理的權重可調解為
Figure 02_image005
。在最壞的情況下,每一權重位元為1。因此,上式可以重寫為
Figure 02_image007
,其中IS等於所有權重位元為1的情況。分解出IS,這相當於IS·127。由於部分累加積和的位值尚未移位,故IS·127除以128,可以藉由計算IS-IS/128得到,例如,
Figure 02_image009
因此,省略臨限STH可藉由將輸入和的最高N IS–K+1位元代入移位暫存器355來計算,如上所述,這相當於將輸入和除以128。然後移位暫存器355可自輸入和減去以獲得STH。
在第19圖中,處理第一權重位元。各個輸入分別乘以權重向量的MSB中的相應一者。然後將這些乘積相加,得到0011 0010 0101 (-805)。由於第一位元為符號位元,故自初始化的累加積和(亦即,0)中減去該值(ADD=0),將累加積和變成2的補碼格式。藉由自作為被減數的IS_FF 0101 0001 0001 (1297)減去作為減數的移位暫存器1010 (10)來計算省略臨限(STH)。為判定是否出現省略條件,將STH 0101 0000 0111 (1287)與累加積和的絕對值0011 0010 0101 (805)進行比較。由於不滿足條件A>B,則在後續週期中處理下一權重位元。
在第20圖中,累加積和左移位,且處理第二權重位元。各個輸入均乘以權重向量的下一位元中的相應一者。然後將這些乘積加在一起,得到0010 1111 0101 (757)。將該值加至移位累加積和中,得到1111 1111 1100 1010 1011 (-853)。因此,累加積等於
Figure 02_image011
。移位暫存器355亦移位且再次自IS_FF 350減去以找到省略臨限值STH 0000 0000 0100 1111 1101 (1277)。這樣做的原因為最壞的情況為
Figure 02_image013
,等於IS·63。移位暫存器355先前為IS除以128,但由於累加積和移位一次,故亦移位一次,因此除以64。值IS·63/64可藉由計算IS–IS/64得到。或者,輸入和的最高N IS–K位元可閂鎖至移位暫存器355中,這相當於將IS除以64。為判定是否發生省略條件,STH 0000 0000 0100 1111 1101 (1277)與累加乘積和的絕對值0011 0101 0101 (853)進行比較。由於不滿足條件A>B,則在後續週期中處理下一權重位元。
在第21圖中,累加積和左移位,且處理第二權重位元。各個輸入均乘以權重向量的下一位元中的相應一者。然後將這些乘積相加,得到0010 0001 1010 (538)。將該值加至移位累加積和中,得到1111 1111 1011 0111 0000 (-1168)。因此,累加積和等於
Figure 02_image015
。移位暫存器355亦移位且再次自IS_FF 350減去以找到省略臨限STH 0000 0000 0100 1110 1001 (1257)。這樣做的原因為最壞的情況為
Figure 02_image017
,等於IS·31。移位暫存器355先前為IS除以64,但由於累加積和已移位一次,故移位暫存器亦移位一次,因此除以32。值IS·31/32可藉由計算IS–IS/32得到。或者,輸入和的最高N IS–K–1位元可閂鎖至移位暫存器355,這相當於IS除以32。為判定是否發生省略條件,STH 0000 0000 0100 1110 1001 (1257)與累加積和的絕對值0100 1001 0000 (1168)進行比較。由於不滿足條件A>B,則在後續週期中處理下一權重位元。
在第22圖中,累加積和左移位,且處理第三權重位元。各個輸入均乘以權重向量的下一位元中的相應一者。然後將這些乘積相加,得到0010 0010 0110 (550)。將該值加至移位累加積和中,得到1111 1111 1001 0000 0110 (-1786)。因此,累加積等於
Figure 02_image019
。移位暫存器355亦移位且再次自IS_FF 350減去以找到省略臨限STH 0000 0000 0100 1100 0001 (1217)。這樣做的原因為最壞的情況為
Figure 02_image021
,等於IS·15。移位暫存器355先前為IS除以32,但由於累加積和已移位一次,故移位暫存器亦移位一次,因此除以16。值IS·15/16可藉由計算IS–IS/16得到。或者,輸入和的最高N IS–K–2位元可閂鎖至移位暫存器355中,這相當於IS除以16。為判定是否發生省略條件,STH 0000 0000 0100 1110 1001 (10000 0000 0100 1100 0001 (1217)與累加積和的絕對值0110 1111 1010 (1786)進行比較。由於滿足條件A>B,故中止權重位元的剩餘處理,且可提供輸出至實現啟動函數(例如ReLU啟動函數)的電路。
假設未達到臨限,則處理將以幾乎相同的方式繼續下一週期。各個輸入將乘以權重向量的下一位元。然後將這些乘積相加,得到加法器230A輸出。然後將該值加至移位累加積和中,得到
Figure 02_image023
。移位暫存器355亦移位且再次自IS_FF 350減去以找到省略臨限。這樣做的原因為最壞的情況為
Figure 02_image025
,等於IS·7。移位暫存器先前為IS除以16,但由於累加積和已移位一次,故移位暫存器亦移位一次,因此除以8。藉由計算IS–IS/8可得到值IS·7/8。或者,輸入和的最高N IS–K–3位元可閂鎖至移位暫存器355中,這相當於IS除以8。為判定是否發生省略條件,將STH與累加積和的絕對值進行比較。
假設未達到臨限,則處理將以相同的方式繼續下一週期。各個輸入將乘以權重向量的下一位元。然後將這些乘積相加,得到加法器230A輸出。然後將該值加至移位累加積和中,得到
Figure 02_image027
。移位暫存器355亦移位且再次自IS_FF 350減去以找到省略臨限。這樣做的原因為最壞的情況為
Figure 02_image029
,等於IS·3。移位暫存器先前為IS除以8,但由於累加積和已移位一次,故移位暫存器亦移位一次,因此除以4。藉由計算IS–IS/4可得到值IS·3/4。或者,輸入和的最高N IS–K–4位元可閂鎖至移位暫存器355中,這相當於IS除以4。為判定是否發生省略條件,將STH與累加積和的絕對值進行比較。
假設未達到臨限,則處理將以相同的方式繼續下一週期。各個輸入將乘以權重向量的下一位元。然後將這些乘積相加,得到加法器230A輸出。然後將該值加至移位累加積和中,得到
Figure 02_image031
。移位暫存器355亦移位且再次自IS_FF 350減去以找到省略臨限。這樣做的原因為最壞的情況為
Figure 02_image033
,等於IS。移位暫存器先前為IS除以4,但由於累加積和已移位一次,故移位暫存器亦移位一次,因此除以2。藉由計算IS–IS/2可得到值IS·1/2。或者,輸入和的最高N IS–K–5位元可閂鎖至移位暫存器355中,這相當於IS除以2。為判定是否發生省略條件,將STH與累加積和的絕對值進行比較。
假設未達到臨限,則處理將以相同方式繼續下一週期。若權重位元數K等於8,如該實例所示,這為最後一個週期,因為將不再有未知的權重值。各個輸入將乘以權重向量的下一位元。然後將這些乘積相加,得到加法器230A輸出。然後將該值加至移位累加積和中,得到
Figure 02_image035
。由於已處理所有權重位元,故輸出提供至實現啟動函數(例如,ReLU啟動函數)的電路。
參看第23A圖及第23B圖,展示說明臨限TH的使用的流程圖,如第17圖所示。如上所述,當Abs (累加積和)>STH時偵測省略條件。臨限TH可為附加值,可以用來放寬跳脫省略條件所需的條件。如上所述,例如,STH的計算基於權重向量的最壞情況的假設。由於權重向量的所有位元不太可能均為「1」,故藉由加上臨限TH來放寬要求可能會導致更少的計算能量,而不會引入不可接受的誤差量(例如,若加上臨限TH會導致省略不應省略的值,則可能會發生誤差)。
在第23A圖中,在一些實施例中,臨限TH可為基於權重向量的一些已知統計特性及誤差容限的預定義值。例如,若已知誤差容限允許放寬最壞情況,則臨限TH可等於輸入和的除法部分。例如,臨限可等於輸入和除以4、8或16。在其他實施例中,臨限TH可為基於累加積和(accumulated product sum,APS)的預定義值。例如,臨限TH可等於加回自身的Abs (APS)的一部分,例如Abs(APS)+Abs(APS)/8。在又一實施例中,臨限TH可為常數,諸如值128或一些其他值。在操作405,臨限TH基於預定條件計算,諸如上述任何條件。在這些實施例中,臨限TH為常數或者基於可用的數值之一來計算,諸如輸入和或APS。在操作410,TH在進入比較器365之前加至Abs (APS)。實際上,比較器365判定A+TH>B? 或A>B-TH?。注意,雖然TH展示為加至Abs (APS),但在進入減法器360之前,可以自被減數(IS_FF)減去TH或(自移位暫存器355)加至減數。
在第23B圖中,在一些實施例中,臨限TH可為基於一些外部因數計算的動態值,或者可使用如上所述的預定分量加上本文討論的動態分量。例如,若計算裝置的資源低(電池、電源、記憶體、處理可用性等),則可增加臨限。在操作455,偵測條件,該條件包括一些外部因數,諸如低計算資源、高溫、失敗的冷卻條件、運動等等。在操作460,增加TH以降低計算能量。若TH增加,則觸發省略條件的可能性亦會增加。在一些實施例中,TH可基於如上所述的預定TH,但隨後調整以進一步降低計算能量。增加TH具有增加誤差的潛在負面影響。在其他實施例中,TH可等於0。在操作465,偵測到條件已經恢復或改變以允許使用更多的計算資源。在操作470,降低TH以增加計算能量且減少誤差。
在第24A圖、第24B圖及第25圖中,提供關於狀態的資訊。應理解,此資訊可能會根據實際使用的部件的運行參數及特性而有所變化。例如,移位暫存器可使用組合邏輯,以使閂鎖訊號以特定方式與移位訊號相互作用。作為另一實例,在一些硬體中,乘法器225及加法器230a電路區塊可立即開始計算而不存在單獨狀態。第24A圖提供狀態圖,且第24B圖描述在每一狀態期間完成的基本製程。為簡單起見,本說明書中的CNT具有介於0與7之間的值。應理解,這裡的7為值K-1,其中K=8,用於每一權重向量中的位元數。若K為不同的數,則可以適當替換值「7」。
在狀態0,MAC空閒,Skip空閒,且記憶體空閒。狀態0為就緒狀態。當與其他狀態相關的計算完成時,亦為返回狀態。當在任何其他狀態下宣告RST訊號時,亦為返回狀態。如第25圖所示,在狀態0,OUT_RDY訊號為高,且累加積和可用於啟動函數。若&&START=1觸發RST=0&&NEXT,則進入狀態1。
在狀態1,記憶體讀取輸入向量205且在MAC省略電路200的引腳上提供那些值。輸入向量205閂鎖至INPUT FF 210中。因此,INPUT_FF 210的輸出立即具有可用於乘法器225電路區塊的輸出。Flow_Thru引腳處於活動狀態,允許輸入向量205經由乘法器225電路區塊流向加法器230a。加法器230a將輸入向量205加在一起且產生輸入和(input sum,IS)至省略模組245。如第25圖所示,在狀態1,IN_LAT引腳處於活動狀態,Flow_Thru引腳處於活動狀態。若觸發RST=0&&NEXT,則進入狀態2。
在狀態2,輸入和IS閂鎖至省略模組245的IS_FF 350中。如第25圖所示,在狀態2,Flow_Thru引腳處於活動狀態且SkipFF_LAT引腳處於活動狀態。若觸發RST=0&&NEXT,則進入狀態3。
在狀態3,記憶體讀取閂鎖至WEIGHT FF 220中的權重向量215的MSB。在省略模組245中,IS的最高N IS–K+1位元閂鎖至移位暫存器355中。如第25圖所示,在狀態3,W_LAT引腳處於活動狀態,而SkipSR_LAT引腳處於活動狀態。若觸發RST=0&&NEXT,則進入狀態4。
在狀態4,輸入向量205由INPUT FF 210提供且當前權重位元由WEIGHT FF 220提供至乘法器225電路區塊,該乘法器225電路區塊將輸入向量205乘以當前權重位元且提供輸出至加法器230a。將積和提供至累加器230b。在一些實施例中,可以在先前狀態中提供積和(例如,若閂鎖操作立即將輸入提供至乘法器225)。若CNT=0,則ADD訊號處於不活動狀態且將減去積和,由於積和應為負,因為該積和將表示權重向量215的符號位元的積和。若CNT=0,則部分累加積和為0。若CNT!=0,則部分積和已自先前狀態7執行轉移。在累加器將來自移位暫存器235的部分累加積和APS與當前積和相加之後,累加器230b的輸出引腳準備就緒。然後計數器增加以表示已處理當前位元。如第25圖所示,在狀態4,CNT_plus引腳處於活動狀態。若觸發RST=0&&NEXT,則進入狀態5。
在狀態5,新的累加積和APS閂鎖至移位暫存器235中,且提供至省略模組245,其中省略模組245經由比較器365電路區塊將Abs (APS)與STH進行比較。如第25圖所示,在狀態5,ACC_LAT引腳處於活動狀態,表示閂鎖累加積和APS。若觸發RST=0&&NEXT,則進入狀態6。
在狀態6,省略比較的結果閂鎖在SkipFF 375中。如第25圖所示,在狀態6,SKIP_LAT引腳處於活動狀態(除非CNT=7,因為已處理所有位元)。若觸發RST=0&&NEXT,則進入狀態7。
在狀態7,若CNT!=7,則移位暫存器235左移位以準備下一權重位處理,記憶體讀取權重向量的下一位元,且權重向量的下一位元閂鎖至WEIGHT FF 220中。若&&CNT!=7觸發RST=0&&NEXT,則進入狀態4。這表示還有其他權重位元需要處理且沒有宣告省略。若&&CNT=7觸發RST=0&&NEXT,則進入狀態0,表示已處理所有權重位元。無論CNT值如何,若SKIP=1,亦進入狀態0,中止對剩餘權重位元的進一步處理。如第25圖所示,在狀態7,(若CNT!=7) W_LAT,ACC_SHIFT引腳處於活動狀態,以表示移位暫存器235的移位,且SkipSHIFT引腳處於活動狀態。
第26圖為使用MAC省略電路的系統500的系統圖。記憶體505耦接至MAC省略電路200以向MAC省略電路200提供輸入資料及權重。記憶體505可為用於儲存非暫時性電腦可讀資料的任何合適的記憶體裝置及媒介。控制器510,例如卷積控制器510,耦接至MAC省略電路200及記憶體505。控制器510提供控制訊號及邏輯以指示MAC省略電路200操作,例如START及NEXT控制訊號。MAC省略電路200亦提供控制器510的狀態訊號,例如OUT_READY訊號。控制器510亦指示記憶體505將哪些輸入及權重提供至MAC省略電路。啟動函數515採用MAC省略電路200的輸出且將啟動函數應用於輸出,例如ReLU啟動函數。然後可將結果儲存回記憶體505且提供至控制器510。
第27圖說明來自一系列樣品測試的結果。該圖說明運行累加部分和的每一資料點所需的能量。虛線卵形包圍在沒有省略模組的情況下處理產生的累加部分和。如圖所示,當累加部分和大於零時,使用省略模組用於計算累加部分和的能量大於不使用省略模組的能量。然而,當累加部分和僅適當地小於0時,使用省略模組時的能量需求要少得多。在該實例中,使用省略模組的平均節能為約12.2%。可實現10%至40%的節能。
上述MAC製程的計算複雜度隨著輸入及權重向量數M的增大而增加。已知ReLU啟動函數僅在MAC的輸出值為正時儲存MAC的輸出值,而在MAC的輸出值為負時儲存零,實施例提供可以可選地省略剩餘處理輸入資料以節省計算能力的處理方法、電路及系統。實施例迭代地計算積和。在每次迭代之後,省略功能塊評估部分累加積和。若部分累加積和為負以至於剩餘操作不能使結果為正,則省略剩餘計算。省略剩餘計算提供減少的計算週期及減少的記憶體調用。
一個實施例為一種方法,包括以下步驟:以按字元輸入及按位元權重的方式對輸入向量及權重向量的乘積進行部分和累加以產生部分累加積和。方法亦包括以下步驟:將部分累加積和與臨限條件進行比較。方法亦包括以下步驟:當部分累加積和滿足臨限條件時,宣告省略指示符以指示省略和累加的剩餘計算。
在實施例中,方法進一步包括以下步驟:省略輸入向量與權重向量的至少一個位元位置的乘積的部分和累加。在實施例中,臨限條件為動態計算的臨限條件。在實施例中,當部分累加積和為負且剩餘的一組未知權重位元將無法使部分累加積和為正時,宣告省略指示符。在實施例中,剩餘的一組未知權重位元假設為1。在實施例中,方法進一步包括以下步驟:對部分累加積和執行啟動函數,且將啟動函數的輸出記錄為等於0或部分累加積和的較大值。在實施例中,方法進一步包括以下步驟:當部分累加積和小於臨限條件時,以按字元輸入及按位元權重的方式對輸入向量及權重向量的剩餘部分的乘積進行第二部分和累加,以產生第二部分累加積和。
另一實施例為一種裝置,包括乘法累加電路區塊,用以分別將一組m個輸入向量乘以一組m個權重向量的第一權重位元以計算第一組m個乘積,將第一組m個乘積相加計算第一積和,且在積和輸出引腳組上提供第一積和。裝置亦包括累加器電路區塊,累加器電路區塊包括耦接至積和輸出引腳組的累加器輸入引腳組,累加器電路區塊用以藉由在累加器輸入引腳組上接收第一值且將第一值加至累加器電路區塊中的累加值中來累加第一值以替換累加值,且在累加值輸出引腳組上提供累加值。裝置亦包括省略電路區塊,省略電路區塊包括耦接至累加值輸出引腳組的累加值輸入引腳組,省略電路區塊用以將累加值與臨限值進行比較,且當滿足臨限值時,宣告省略引腳上的省略訊號;控制電路區塊,用以檢查省略引腳是否有省略訊號,且當未宣告省略訊號時,使乘法累加電路區塊處理該組m個權重向量的下一權重位元,且當宣告省略訊號時,終止處理該組m個權重向量的剩餘部分,宣告輸出就緒訊號,且將累加值提供至啟動電路。
在實施例中,省略電路區塊包括:減法電路區塊,用以自輸入和減去移位輸入和以計算臨限值,移位輸入和基於處理的該組m個權重向量的權重位元位置移位多次,且比較臨限值與累加值。在實施例中,臨限值為第一臨限值,其中減法電路區塊進一步用以藉由在將第一臨限值與累加值相比較之前將第二臨限值加至累加值來改變累加值。在實施例中,第二臨限值為定值、基於輸入和或累加值的衍生值或基於環境變量的動態值,該環境變量包括功率狀態、電池狀態、硬體狀態或資源狀態。在實施例中,累加器電路區塊包含ADD引腳,其中累加器電路區塊用以當由ADD引腳控制時自累加值中減去第一值,其中控制電路區塊進一步用以當第一權重位元對應於該組m個權重向量的最高有效位元時,經由ADD引腳控制累加器電路區塊減去第一值。在實施例中,裝置進一步包括:輸入閂鎖電路區塊,用以儲存該組m個輸入向量;權重位元閂鎖電路區塊,用以儲存該組m個權重位元;及乘法累加電路區塊,包括乘法塊及加法器樹以計算第一積和。
另一實施例為一種系統,包括乘法累加裝置,用於分別以按位元權重的方式計算輸入節點與輸入的多個權重向量的多個乘積,且對每一乘積求和以計算每一位元的積和,根據用於每一位元的位元值位置對積和進行加權,且將積和累加為累加積和。系統亦包括省略模組,用以將積和與臨限進行比較且在達到該臨限時宣告省略訊號。系統亦包括控制邏輯裝置,用以當未宣告省略訊號時,使乘法累加裝置處理權重向量的下一位元,且當宣告省略訊號時,使乘法累加設備中止處理權重向量的剩餘部分。系統亦包括啟動裝置,啟動裝置基於累加積和的值判定輸入節點的卷積值。
在實施例中,省略模組用以在處理每一權重位元之後評估積和。在實施例中,基於輸入節點的所有輸入的輸入和計算省略模組的臨限。在實施例中,藉由自輸入和減去位元移位輸入和計算省略模組的臨限,該位元移位輸入和移位與當前評估權重位元的位元位置相對應的位元數。在實施例中,臨限為第一臨限,省略模組進一步用以將第二臨限加至積和的絕對值且與第一臨限進行比較,且若絕對值大於第一臨限,則宣告省略訊號。在實施例中,第二臨限為基於積和的當前值、輸入節點的所有輸入的輸入和或定值的預定臨限。在實施例中,第二臨限為基於環境因數的動態臨限,環境因數包含功率狀態、電池電量、計算資源可用性或硬體故障中的一或多者。
上文概述了數個實施例的特徵,使得熟習此項技術者可以更好地理解本揭示內容的各態樣。熟習此項技術者應理解,熟習此項技術者可以容易地將本揭示內容用作設計或修改其他製程及結構的基礎,以實現與本文介紹的實施例相同的目的及/或實現相同的優點。熟習此項技術者亦應認識到,該些等效構造不脫離本揭示內容的精神及範疇,並且在不脫離本揭示內容的精神及範疇的情況下,該些等效構造可以進行各種改變、替代及變更。
10:影像 11:像素 12:節點 14:權重矩陣 16:乘法累加運算/計算 18:啟動函數 20:運算 30:求和公式 31:公式 32:符號位元求和項 34:第一嵌套求和項 36:第二嵌套求和項 100:製程流程圖 110、120、130、140、150、160、170、180:操作 200:MAC省略電路 205:向量 210:正反器 215:權重向量 220:正反器 225:乘法器 230:加法區塊 230a:加法器 230b:累加器 235a:部分和 235:移位暫存器 240:輸出 245:省略模組 250:引腳 255:引腳 255a:位元 260:控制器 305:有限狀態機 310:狀態邏輯 315:計數器 320:計數器邏輯 325:狀態正反器 330:邏輯 335:跳轉邏輯 350:輸入和正反器 355:移位暫存器 360:減法器 365:比較器 370:電路區塊 375:省略正反器 405、410、455、460、465、470:操作 500:系統 505:記憶體 510:控制器 515:啟動函數
結合附圖,根據以下詳細描述可以最好地理解本揭示內容的各態樣。注意,根據行業中的標準實務,各種特徵未按比例繪製。實際上,為了討論清楚起見,各種特徵的尺寸可任意增加或減小。 第1圖說明根據一些實施例的在機器學習中處理影像資料時經常使用的3×3卷積的實例。 第2圖以更一般的方式說明根據一些實施例的第1圖中說明的概念。 第3圖說明根據一些實施例的ReLU啟動函數。 第4圖說明根據一些實施例的用於在硬體中算法實現MAC的輸入資料、權重向量及MAC的二進制表示。 第5圖說明根據一些實施例的用於以按位元方式處理輸入值及權重向量的數學公式。 第6圖說明根據一些實施例的輸入 I及權重向量 W的樣本計算。 第7圖至第12圖說明根據一些實施例的省略評估及啟動特徵。 第13圖說明根據一些實施例的用於省略評估及啟動特徵的製程流程圖100。 第14圖至第17圖說明根據一些實施例的MAC省略電路的電路方塊圖的各種視圖。 第18圖至第22圖說明根據一些實施例的MAC省略電路的操作的各種視圖。 第23A圖及第23B圖說明根據一些實施例的用於向省略模組提供臨限的流程圖。 第24A圖、第24B圖及第25圖說明根據一些實施例的狀態機模型及訊號值。 第26圖說明根據一些實施例的包括MAC省略電路的系統圖。 第27圖說明根據一些實施例的利用MAC省略電路降低能量消耗的測試資料的結果。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
100:製程流程圖
110、120、130、140、150、160、170、180:操作

Claims (20)

  1. 一種方法,包含: 以一按字元輸入及按位元權重的方式對多個輸入向量及多個權重向量的一乘積進行一部分和累加,以產生一部分累加積和; 將該部分累加積和與一臨限條件進行比較;及 當該部分累加積和滿足該臨限條件時,宣告一省略指示符以指示省略一和累加的多個剩餘計算。
  2. 如請求項1所述之方法,進一步包含: 省略該些輸入向量與該些權重向量的至少一個位元位置的一乘積的一部分和累加。
  3. 如請求項1所述之方法,其中該臨限條件為一動態計算的臨限條件。
  4. 如請求項1所述之方法,其中當該部分累加積和為負且一組剩餘的未知權重位元將不能使該部分累加積和為正時,宣告該省略指示符。
  5. 如請求項4所述之方法,其中該組剩餘的未知權重位元中的每一者假設為「1」。
  6. 如請求項1所述之方法,進一步包含: 對該部分累加積和執行一啟動函數,且記錄該啟動函數的一輸出等於0或該部分累加積和的較大值。
  7. 如請求項1所述之方法,進一步包含:當該部分累加積和小於該臨限條件時,以該按字元輸入及按位元權重的方式對該些輸入向量及該些權重向量的一剩餘部分的一乘積進行一第二部分和累加,以產生一第二部分累加積和。
  8. 一種裝置,包含: 一乘法累加電路區塊,用以分別將一組M個輸入向量乘以一組M個權重向量的多個第一權重位元以計算一第一組M個乘積,將該第一組M個乘積相加以計算一第一積和,且在一積和輸出引腳組上提供該第一積和; 一累加器電路區塊,包含耦接至該積和輸出引腳組的一累加器輸入引腳組,該累加器電路區塊用以藉由在該累加器輸入引腳組上接收一第一值且將該第一值加至該累加器電路區塊的一累加值中來累加該第一值以替換該累加值,且在一累加值輸出引腳組上提供該累加值; 一省略電路區塊,包含耦接至該累加值輸出引腳組的一累加值輸入引腳組,該省略電路區塊用以將該累加值與一臨限值進行比較,且當滿足該臨限值時,在一省略引腳上宣告一省略訊號,及 一控制電路區塊,用以檢查該省略引腳是否有該省略訊號,且當未宣告該省略訊號時,使該乘法累加電路區塊處理該組M個權重向量的下一權重位元,且當宣告該省略訊號時,終止處理該組M個權重向量的一剩餘部分,宣告一輸出就緒訊號,且將該累加值提供至一啟動電路。
  9. 如請求項8所述之裝置,其中該省略電路區塊包含: 一減法電路區塊,用以自一輸入和減去一移位輸入和以計算該臨限值,該移位輸入和基於處理的該組M個權重向量的一權重位元位置移位多次,且比較該臨限值與該累加值。
  10. 如請求項9所述之裝置,其中該臨限值為一第一臨限值,其中該減法電路區塊進一步用以藉由在將該第一臨限值與該累加值相比較之前將一第二臨限值加至該累加值來改變該累加值。
  11. 如請求項10所述之裝置,其中該第二臨限值為一定值、基於該輸入和或該累加值的一衍生值或基於一環境變量的一動態值,該環境變量包括一功率狀態、電池狀態、硬體狀態或資源狀態。
  12. 如請求項8所述之裝置,其中該累加器電路區塊包含一加法引腳,其中該累加器電路區塊用以當由該加法引腳控制時自該累加值中減去該第一值,其中該控制電路區塊進一步用以當該些第一權重位元對應於該組M個權重向量的多個最高有效位元時,經由該加法引腳控制該累加器電路區塊減去該第一值。
  13. 如請求項8所述之裝置,進一步包含: 一輸入閂鎖電路區塊,用以儲存該組M個輸入向量; 一權重位元閂鎖電路區塊,用以儲存該組M個權重位元;及 該乘法累加電路區塊,包括一乘法塊及加法器樹以計算該第一積和。
  14. 一種系統,包含: 一乘法累加裝置,用於分別以按位元權重的方式計算一輸入節點與一輸入的多個權重向量的多個乘積,且對每一乘積求和以計算每一位元的一積和,根據用於每一位元的一位元值位置對該積和進行加權,且將該積和累加為一累加積和; 一省略模組,用以將該積和與一臨限進行比較且在達到該臨限時宣告一省略訊號; 一控制邏輯裝置,用以當未宣告該省略訊號時,使該乘法累加裝置處理該些權重向量的下一位元,且當宣告該省略訊號時,使該乘法累加裝置中止處理該些權重向量的多個剩餘部分;及 一啟動裝置,該啟動裝置基於該累加積和的一值判定該輸入節點的一卷積值。
  15. 如請求項14所述之系統,其中該省略模組用以在處理每一權重位元之後評估該積和。
  16. 如請求項14所述之系統,其中基於該輸入節點的所有輸入的一輸入和計算該省略模組的該臨限。
  17. 如請求項16所述之系統,其中藉由自該輸入和減去一位元移位輸入和計算該省略模組的該臨限,該位元移位輸入和移位與一當前評估權重位元的一位元位置相對應的一位元數。
  18. 如請求項14所述之系統,其中該臨限為一第一臨限,該省略模組進一步用以將一第二臨限加至該積和的一絕對值且與該第一臨限進行比較,且若該絕對值大於該第一臨限,則宣告該省略訊號。
  19. 如請求項18所述之系統,其中該第二臨限為基於該積和的一當前值、該輸入節點的所有輸入的一輸入和或一定值的一預定臨限。
  20. 如請求項18所述之系統,其中該第二臨限為基於一環境因數的一動態臨限,該環境因數包含功率狀態、電池電量、計算資源可用性或硬體故障中的一或多者。
TW111114891A 2021-08-13 2022-04-19 用於處理資料之方法、裝置及系統 TWI815404B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163232915P 2021-08-13 2021-08-13
US63/232,915 2021-08-13
US202163254574P 2021-10-12 2021-10-12
US63/254,574 2021-10-12
US17/679,260 US20230053294A1 (en) 2021-08-13 2022-02-24 Bitwise product-sum accumulations with skip logic
US17/679,260 2022-02-24

Publications (2)

Publication Number Publication Date
TW202307646A true TW202307646A (zh) 2023-02-16
TWI815404B TWI815404B (zh) 2023-09-11

Family

ID=84368016

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111114891A TWI815404B (zh) 2021-08-13 2022-04-19 用於處理資料之方法、裝置及系統

Country Status (6)

Country Link
US (1) US20230053294A1 (zh)
JP (1) JP7420880B2 (zh)
KR (1) KR20230025325A (zh)
CN (1) CN115469825A (zh)
DE (1) DE102022105152A1 (zh)
TW (1) TWI815404B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0830572A (ja) * 1994-07-18 1996-02-02 Nippon Telegr & Teleph Corp <Ntt> ニューラルネットワーク回路及びこれを用いた演算方法
JP3292073B2 (ja) * 1996-12-19 2002-06-17 日本電気株式会社 ニューラルユニット演算方式およびその装置
SG90099A1 (en) * 1999-02-25 2002-07-23 Texas Instruments Inc A system and method for optimizing signal processing via a unique truncating and rounding operation
CN109328361B (zh) * 2016-06-14 2020-03-27 多伦多大学管理委员会 用于深度神经网络的加速器
US11663001B2 (en) * 2018-11-19 2023-05-30 Advanced Micro Devices, Inc. Family of lossy sparse load SIMD instructions
US11562212B2 (en) * 2019-09-09 2023-01-24 Qualcomm Incorporated Performing XNOR equivalent operations by adjusting column thresholds of a compute-in-memory array

Also Published As

Publication number Publication date
DE102022105152A1 (de) 2023-02-16
KR20230025325A (ko) 2023-02-21
JP2023026404A (ja) 2023-02-24
JP7420880B2 (ja) 2024-01-23
TWI815404B (zh) 2023-09-11
US20230053294A1 (en) 2023-02-16
CN115469825A (zh) 2022-12-13

Similar Documents

Publication Publication Date Title
GB2568083A (en) Histogram-based per-layer data format selection for hardware implementation of deep neutral network
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
Anguita et al. Feed-forward support vector machine without multipliers
EP3769208B1 (en) Stochastic rounding logic
US20220291901A1 (en) Data processing method for processing unit, electronic device and computer readable storage medium
JP2023084094A (ja) 面積高効率畳み込みブロック
TW202319909A (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
JP2005018759A (ja) 2の浮動小数点数乗の概算を実施するための方法および装置
US11609741B2 (en) Apparatus and method for processing floating-point numbers
US20210034327A1 (en) Apparatus and Method for Processing Floating-Point Numbers
US11562235B2 (en) Activation function computation for neural networks
TWI815404B (zh) 用於處理資料之方法、裝置及系統
US20230161783A1 (en) Device for accelerating self-attention operation in neural networks
TW202333041A (zh) 執行浮點運算的系統及方法
CN111445016A (zh) 加速非线性数学计算的系统及方法
CN117063183A (zh) 激活函数的高效压缩
TW202219739A (zh) 藉由算數及/或逐位元單元的條件敘述執行
Zadiraka et al. Calculating the Sum of Multidigit Values in a Parallel Computational Model
Wisayataksin et al. A Programmable Artificial Neural Network Coprocessor for Handwritten Digit Recognition
US20190073584A1 (en) Apparatus and methods for forward propagation in neural networks supporting discrete data
US20240231757A9 (en) Device and method with in-memory computing
Sreehari et al. A hardware accelerator based on quantized weights for deep neural networks
US11947960B2 (en) Modulo-space processing in multiply-and-accumulate units
US20240086152A1 (en) Calculation unit for multiplication and accumulation operations
US20220060315A1 (en) Sign-based partial reduction of modular operations in arithmetic logic units