TW202029063A - 加速非線性數學計算的系統及方法 - Google Patents
加速非線性數學計算的系統及方法 Download PDFInfo
- Publication number
- TW202029063A TW202029063A TW109100559A TW109100559A TW202029063A TW 202029063 A TW202029063 A TW 202029063A TW 109100559 A TW109100559 A TW 109100559A TW 109100559 A TW109100559 A TW 109100559A TW 202029063 A TW202029063 A TW 202029063A
- Authority
- TW
- Taiwan
- Prior art keywords
- function
- nonlinear
- accelerator
- processor
- accelerating
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 22
- 230000006870 function Effects 0.000 claims abstract description 140
- 239000002131 composite material Substances 0.000 claims abstract description 16
- 238000004364 calculation method Methods 0.000 claims description 40
- 150000001875 compounds Chemical class 0.000 claims description 20
- 238000012886 linear function Methods 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 238000003786 synthesis reaction Methods 0.000 claims 1
- 238000013528 artificial neural network Methods 0.000 description 11
- 238000007620 mathematical function Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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
- 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/556—Logarithmic or exponential functions
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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
-
- 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/548—Trigonometric functions; Co-ordinate transformations
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Nonlinear Science (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Advance Control (AREA)
Abstract
系統包括加速器來加速非線性數學函數的計算。該加速器包括一組第一運算器以及一組第二運算器。每一該等第一運算器以及該等第二運算器是為運算一各自的非線性函數指定的一固定功能的硬體電路。該系統進一步包括一處理器,其解碼一指令集中的一數學指令,發送識別一非線性函數的一訊號到加速器,該非線性函數對應於該數學指令,以及從該加速器接收該非線性函數的一輸出。根據該訊號,該加速器使用一個第一運算器運算該非線性函數。當該訊號識別該非線性函數為一複合函數時,該加速器對該一個第一運算器的一輸出額外地使用一個第二運算器。
Description
本發明的實施例涉及用於人工智慧(artificial intelligence,AI)計算的處理器以及加速器(accelerator)。
深度學習(deep learning)由於其在電腦視覺(computer vision)、話音識別(speech recognition)、自然語言處理(natural language processing)、生物資訊學(bioinformatics)等等領域中的優越性能而得到廣泛認可。深度學習是機器學習(machine learning)的分支,其使用包括超過一個隱藏層(hidden layer)的人工神經網路(artificial neural network)。神經網路計算的工作量(workload)是密集的以及通常涉及非線性函數的運算(evaluation)。
例如,在特徵提取中、神經網路計算可以包括用一組濾波器的輸入資料的卷積(convolution),緊接著是非線性計算、下採樣計算以及類分數計算(class scores computation)。非線性計算已經被示出為高度資源需求,以及會造成長延遲以及高功率消耗。因此,需要在神經網路計算中的改善以增加系統性能。
在一個實施例中,一系統被提供來加速非線性數學計算。該系統包括一加速器與一處理器。該加速器包括一組第一運算器以及一組第二運算器。每一該等第一運算器與該等第二運算器是為運算一各自的非線性函數指定的一固定功能的硬體電路。該處理器用於解碼一指令集中一數學指令,發送識別一非線性函數的一訊號到該加速器,該非線性函數對應於該數學指令,以及從該加速器接收該非線性函數的一輸出。該加速器根據該訊號用於使用一個第一運算器運算該非線性函數。當該訊號識別該非線性函數為複合函數時,該加速器對該一個第一加速器的一輸出額外地使用一個第二加速器。
在另一個實施例中,由一加速器執行的一方法被提供用於加速非線性數學計算。該方法包括:從一處理器接收識別一非線性函數的一訊號,該非線性函數對應於該處理器的一指令集中的一數學指令。由根據該訊號使用複數個第一運算器之一運算該非線性函數,以及,當該訊號識別該非線性函數為一複合函數時,對一個第一運算器的一輸出額外地使用複數個第二運算器之一,其中每一該等第一運算器以及該等第二運算器是為運算一各自的非線性函數指定的一固定功能的硬體電路。該方法進一步包括發送該非線性函數的一輸出到該處理器。
藉由本發明之方面可以有效改善非線性計算中純軟體方案造成的大延遲以及高功率的問題。
在結合附圖閱讀具體實施例的下文描述後,其他方面以及特徵對本領域習知技術者將是顯而易見的。
在後續描述中,給出了許多具體的細節。然而,能理解,可以在沒有這些具體細節的情況下實施本發明。在其他情況下,公知的電路、結構以及技術未被詳細示出以不混淆這些描述的理解。然而,本領域習知技術者將能理解,本發明可以在沒有這些特定細節被實施。具有所包括描述的本領域習知技術者將能夠實現適當的功能而不需要過度實驗。
本發明的實施例提供了一指令集用於處理器來支援由數學加速器(也稱為加速器)執行的數學計算。該指令集包括數學(“math”)指令,當由處理器執行時,其使得加速器對輸入值運算(即,計算)數學函數。該數學函數包括但不限於在如人工神經網路(artificial neural network,ANN)的人工智慧(AI)計算中通常作為啟動函數的非線性函數。在一個實施例中,每一數學函數在加速器中具有對應的運算路徑(path)用於執行對應的數學操作。每一運算路徑由為對應的非線性數學函數的運算指定的硬體電路組成。
在描述處理器以及加速器的硬體架構之前,描述與ANN相關的一些技術可能是有用的。ANN在輸入層與輸出層之間可以包括複數個層。這一神經網路有時被稱為深度學習神經網路或深度神經網路(deep neural network,DNN)。DNN可以包括卷積層、輪詢(pooling)層、整流器線性單元(ReLU)層、全連接(FC)層的、softmax層等的組合。在許多這些層中執行的計算包括應用非線性啟動函數到一組資料值。這些函數可以包括但不限於指數函數(exponential function)、雙曲線正切函數(hyperbolic tangent function)、對數函數(log function)、自然對數函數(natural log function)、sigmoid函數、softmax函數等等。根據本發明的實施例,當處理器解碼數學指令時,其發送具有輸入參數的選擇訊號到加速器,其中該選擇訊號指示由數學指令指定或對應於數學指令的非線性函數。該加速器賦能一或複數個運算器來運算非線性函數,以及發送運算輸出到加速器用於進一步的處理器。
第1圖是示出了根據一個實施例的耦合到加速器120的處理器110的圖示。加速器120包括硬體電路來加速非線性數學計算。處理器110的指令集包括由處理器110執行的指令,例如載入、儲存、加法、乘法等等,以及由加速器120執行的數學指令。在一個實施例中,處理器110也可以被稱為中央處理器單元(CPU)、核心或處理器核心。處理器110可以包括解碼器111、一或複數個算術與邏輯單元(ALU)112、記憶體113以及累加器114(如,耦合到暫存器的加法器)。記憶體113可以包括揮發性記憶體、非揮發性記憶體或兩者的組合。記憶體113可以儲存指令集中的定義的指令。
在一個實施例中,當解碼器111解碼數學指令時,其生成選擇訊號到加速器120來指示將被運算的非線性函數。解碼器111可以查閱一表115,其將每一非線性函數與索引相關聯,該索引識別該非線性函數以及輸入參數,如數據、格式、尺寸等。在一個實施例中,該表內容可以被合成到包括組合的邏輯多工器(multiplexer)的硬體電路。被發送到加速器120的該選擇訊號可以包括索引。處理器110還向加速器120發送非線性函數的輸入值。該加速器120然後運算非線性函數以及返回輸出到處理器110。
加速器包括一第一運算單元123以及一第二運算單元125。該第一運算單元123運算第一組非線性函數,以及該第二運算單元125運算第二組非線性函數。在一個實施例中,加速器120進一步包括輸入介面121與輸出介面122來在其他操作中執行資料轉換(如,整數與浮點數(floating-point number)之間的轉換)以及位元移位(shfiting)操作。該資料轉換確保處理器110與加速器120之間的資料可靠性。
第一運算單元123具有兩個可選輸出路徑:該第一輸出路徑耦合到該第二運算單元125的輸入,以及第二輸入路徑旁路(bypass)該第二運算單元125來到達加速器120的輸出。當運算複合函數(composite function)時,加速器120賦能該第一輸出路徑。否則,該加速器120賦能該第二輸出路徑。在本公開中,複合函數被定義為至少兩個非線性函數的複合。
系統100可以包括為了簡便說明未在第1圖示出的額外硬體元件。例如,系統100可以包括額外的處理器,如額外的CPU、影像處理單元(GPU)、數位訊號處理器(DSP)或者其他通用與/或專用處理器電路。系統100還可以包括耦合到處理器110的記憶體裝置,如揮發性與/或非揮發性記憶體裝置,如動態隨機存取記憶體(DRAM)、閃速記憶體等。系統100還可以包括用於連接到網路(如,個人區域網路、區域網路、廣域網路絡等等)的網路介面與/或使用者介面裝置,如顯示幕、觸摸感測器、攝像頭、麥克風、揚聲器等等。系統100可以是計算裝置、通信裝置或計算與通信裝置的組合的一部分。系統100的示例可以包括但不限於智慧手機、智慧家電、遊戲裝置、娛樂裝置、物聯網(IOT)裝置等等。
第2圖是示出了根據一個實施例的加速器120進一步細節的圖示。第一運算單元123包括一組第一運算器230,其每一者運算一非線性函數。每一第一運算器230是為運算對應的非線性函數指定的固定功能的硬體電路單元。除了第一運算器230,加速器120還包括該第二運算單元125中的一組第二運算器250。僅當加速器120運算複合函數時使用該第二運算器250。每一第二運算器250運算非線性函數,其中該函數的輸入是一個第一運算器230的輸出。每一第二運算器250是為運算對應的非線性函數指定的固定功能的硬體電路。
例如,第一運算單元123可以包括n
個第一運算器230來分別運算非線性函數f1 、 f2 、 f3,…,fn
,以及該第二運算單元125可以包括m
個第二運算器250來分別運算非線性函數g1 、 g2 、 g3,…,gm
,其中n
與m
可以是任何正整數。當處理器110將輸入值與識別非線性函數的選擇訊號一起發送時,加速器120作為響應賦能一個第一運算器120,如fi
,其中i是[1,n
]中的整數。如果非線性函數是複合函數,加速器120額外地賦能一個第二加速器250(如,gj
),其中j是[1,m
]中的整數。每一第一運算器230以及第二運算器250是為運算各自的非線性函數指定的固定功能的硬體電路。加速器120的輸出被發送回處理器110。
由第二運算器250運算的非線性函數gj
的示例可以包括但不限於以下:
注意到由第一運算器230以及第二運算器250運算的非線性函數可以包括以上所描述函數、相關函數(如,雙曲線正切函數)與/或其他非線性函數的替換形式。
第3圖是示出了根據一個實施例的由處理器110以及加速器120執行的管線操作的圖示。這一示例示出了用於三個指令(如,instr_0、instr_M1以及instr_M2)的管線操作。在處理器110的操作中有五個管線階段,其中該五個階段是:指令提取(IF)、指令解碼(ID)、執行(EX)、記憶體存取(MEM)以及寫回(WB)。在一個可選實施例中,處理器的管線階段的數目可以大於或小於5。第一指令Instr_0是由處理器110執行的指令(如,載入儲存指令、或者由處理器110中ALU 112執行的ALU指令)。第二以及第三指令分別是數學指令instr_M1以及instr_M2。在這一示例中,instr_0以及instr_M1並行的被提取以及解碼。在EX階段(時鐘3),處理器110使用其內部硬體電路(如,由ALU 112)執行instr_0,以及賦能加速器120(由math_en指示)來執行f1(x)
,其是Instr_M1中指定的非線性函數,x是函數的輸入值。處理器110然後等待加速器120完成f1(x)
,其通常消耗1到5個時鐘週期。在這一示例中,加速器120在時鐘7輸出結果,以及處理器110寫回結果。
處理器110可以賦能加速器120在連續的時鐘週期來運算兩個非線性函數。作為示例,處理器110在晚於instr_0以及instr__M1的一個時鐘後提取以及解碼第三指令instr_M2。處理器110在EX階段(時鐘4)賦能加速器120(由math_en指示)去執行instr_M2。在這一示例中,instr_M2指定複合函數,其可以被運算為g2(f2(x))
,其中x是複合函數的輸入。加速器120首先運算函數f2(x)
,以及然後運算g2(f2(x))
。每一函數f2(x)
以及g2(x)
的運算通常消耗一個到五個時鐘週期。在時鐘10,加速器120輸出結果到處理器110,以及處理器110寫回結果。
從第3圖的示例,注意到,加速器120對非線性函數執行管線操作。例如,加速器120可以在重疊的時鐘週期中運算f1(x)
以及f2(x)
,因為使用不同的硬體電路(即,不同的第一運算器230)運算兩個函數,因此硬體電路可以被獨立地執行。在上述示例中,在完成第一非線性函數f1(x)
的運算前,加速器120運算第二非線性函數f2(x)
。
從第3圖的示例中也注意到,處理器110可以並存執行兩個(或複數個)指令。第4圖是示出了根據一個實施例的處理器110的指令集中複合指令400的格式。在這一示例中,複合指令400包括是三個擴充槽(slot):Slot_a、Slot_b以及Slot_c。每一擴充槽由一個指令佔用,如由處理器110執行的指令或者指定非線性函數的數學指令。在可選實施例中,複合指令可以包括至少為2的任何數目的擴充槽。不管擴充槽的數目,複合指令中複數個擴充槽之一可以是數學指令。在第3圖的示例中,instr_0以及instr_M1可以是複合指令的一部分。當處理器遇到複合指令時,處理器110並行提取以及解碼該複合指令的複數個擴充槽中的所有指令。
通常在AI計算中使用的一個非線性函數是softmax函數。softmax是將k實數(real number)的向量作為輸入的函數,以及將數歸一化成由K個可能性組合的概率分佈。對於[x1
,x2
,…xk
]的輸入向量,softmax函數輸出K個元素的向量,每一元素被表示為:
在一個實施例中,處理器110與加速器120結合可以執行指令用於計算softmax函數。在一個實施例中,加速器110可以包括用於計算分母(即,指數的和)的累加器114。處理器110可以計算K個疊代(iteration)回路的和,以及在每一疊代中,處理器110賦能加速器120來運算K個指數函數之一。
第5圖是示出了根據一個實施例的用於運算前述所提到的softmax函數的進程500。在步驟510,當處理器110進入環路將迴圈索引j初始化為0時,進程500開始。當索引j還沒有達到K時(步驟520),每一疊代中(步驟530)該處理器110賦能加速器120來運算指數函數(第5圖中標記為exp (xj)
)。在步驟540,加速器120運算指數函數以及輸出結果到處理器110。還參考第1圖,在步驟550,處理器110使用累加器114來累加指數函數的輸出,以及將每一指數的值儲存在記憶體113中。疊代隨著遞增的j值繼續進行。當迴圈結束時(即,當j=K時),在步驟560,處理器110賦能加速器120來計算累加結果(即,指數的和)的倒數,以及在步驟570,加速器120運算該倒數;如,藉由運算,其中x等於指數的和。在步驟580,處理器110用每一先前計算的指數乘以該倒數函數的輸出來獲得softmax輸出的對應元素。
第5圖的示例示出了藉由加速非線性函數的運算,加速器120可以節省大量時間;例如,平均從幾十或上百個時鐘週期到1~5個時鐘週期。特別地,當運算涉及大量疊代時,時間節省可以顯著地改善系統性能。
在一個實施例中,非暫態電腦可讀媒介在其上儲存指令,當由系統100中的處理器110執行時,使得系統執行第5圖的進程500。
第6圖是示出了根據一個實施例的用於加速非線性數學計算的方法600的流程圖。在一個實施例中,方法600可以由第1圖以及第2圖中的加速器120執行。
方法600開始於加速器在步驟610從處理器接收識別非線性函數的訊號,該非線性函數對應於該處理器的一指令集中的一數學指令。處理器的示例是第1圖中的處理器110。在步驟620,該加速器根據該訊號使用一個第一運算器(如第2圖中的第一運算器230)運算該非線性函數。當該訊號將該非線性函數是被為複合函數時,該加速器藉由對該一個第一運算器的輸出額外地使用一個第二運算器來運算該非線性函數。每一第一運算器以及第二運算器是為運算各自的非線性函數指定的固定功能的硬體電路。該硬體電路通常包括電晶體。在步驟630,加速器發送非線性函數的輸出到處理器。
第5圖以及第6圖的流程圖的操作已經參考第1圖以及第2圖的示例性實施例進行描述。然而,將能理解,第5圖以及第6圖的流程圖的操作可以由除了參考第1圖以及第2圖所討論的實施例之外的本發明的其他實施例來執行,以及參考第1圖以及第2圖所討論的實施例可以執行不同於參考該流程圖討論的這些操作。雖然第5圖以及第6圖示出了由本發明某些實施例執行的操作的特定次序,將能理解,這一次序是示例性的(例如,可選的實施例可以以不同的次序、組合某些操作、重疊某些操作等來執行操作)。
雖然本發明已經在幾個實施例的方面進行描述,本領域習知技術者將意識到,本發明不限於所描述的實施例,以及可以用所附申請專利範圍的精神以及範圍內的修正以及改變來實施。因此描述被認為是說明性的而非限制性的。
100:系統
110:處理器
111:解碼器
112:算術與邏輯單元
113:記憶體
114:累加器
120:加速器
121:輸入介面
122:輸出介面
123:第一運算單元
125:第二運算單元
230:第一運算器
250:第二運算器
400:複合指令
510~580、610~630:步驟
在後續附圖的圖示中以示例的方式而不是限制的方式示出本發明,其中相似的附圖標記表示相同的元件。注意到的是,本公開中對“一(an)”或者“一個(one)”實施例的不同引用不一定指相同的實施例,以及這種引用意指至少一個。此外,當結合一實施例描述特定特徵、結構或者特性時,認為無論是否明確描述,結合其他實施例實施這樣的特徵、結構或特性在本領域習知技術者的知識範圍內。
第1圖示出了根據一個實施例的用於加速的數學函數計算的系統。
第2圖示出了根據一個實施例的一加速器中的一些硬體電路。
第3圖示出了根據一個實施例的由處理器以及加速器執行的管線(pipeline)操作。
第4圖示出了根據一個實施例的複合(compound)指令格式。
第5圖是示出了根據一個實施例的用於運算softmax函數的方法的流程圖。
第6圖是示出了根據一個實施例的用於加速的數學函數計算的方法的流程圖。
610~630:步驟
Claims (20)
- 一種用於加速非線性數學計算的系統,包括: 一加速器,包括一組第一運算器以及一組第二運算器,其中每一該第一運算器以及該第二運算器是為運算一各自的非線性函數指定的一固定功能的硬體電路;以及 一處理器,耦合於該加速器,該處理器用於解碼一指令集中的一數學指令,發送識別一非線性函數的一訊號到該加速器,該非線性函數對應於該數學指令,以及從該加速器接收該非線性函數的一輸出, 其中該加速器根據該訊號用於使用一個第一運算器來運算該非線性函數,以及,當該訊號識別該非線性函數為一複合函數時,對該一個第一運算器的一輸出額外地使用一個第二運算器。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該指令集包括至少一複合指令,該複合指令指定該數學指令以及有該處理器執行的一或複數個指令,以及其中該處理器用於並行解碼該複合指令中的該數學指令以及該一或複數個指令。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該加速器包括複數個管線階段來在完成一第一非線性函數的運算之前,運算一第二非線性函數。
- 如申請專利範圍第3項所述之用於加速非線性數學計算的系統,其中該處理器包括複數個管線階段來在連續的時鐘週期中賦能該加速器來運算該第一非線性函數以及該第二非線性函數。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該加速器包括一第一運算單元以及一第二運算單元,該第一運算單元進一步包括該組第一運算器以及該第二運算單元進一步包括該組第二運算器,以及 其中該第一運算單元具有耦合於該第二運算單元一第一輸出路徑,以及旁路該第二運算單元的一第二輸出路徑。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該處理器進一步包括一累加器,來在多次疊代中累加來自該加速器的一非線性函數輸出。
- 如申請專利範圍第6項所述之用於加速非線性數學計算的系統,其中該處理器用於執行指令來使用該累加的非線性函數輸出來計算一softmax函數。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該指令集包括指定複合函數的數學指令,以及其中每一複合函數是至少兩個非線性函數的一複合。
- 如申請專利範圍第8項所述之用於加速非線性數學計算的系統,其中該複合函數包括至少一sigmoid函數或一雙曲線正切函數。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該第一運算器用於運算非線性函數,該非線性函數包括至少一指數函數、一對數函數、一倒數函數以及一三角函數。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該處理器進一步包括一記憶體來儲存一查閱資料表,其將該非線性函數與一索引以及輸入參數相關聯,該索引識別該非線性函數以及該輸入參數將與該訊號一起被發送到該加速器。
- 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該加速器進一步包括一輸入介面以及一輸出介面來分別轉換一輸入資料格式轉換以及一輸出資料格式。
- 一種用於加速非線性數學計算的方法,包括: 由一加速器從一處理器接收識別一非線性函數的一訊號,該非線性函數對應於該處理器的一指令集中的一數學指令; 由該加速器根據該訊號使用複數個第一運算器之一運算該非線性函數,以及,當該訊號識別該非線性函數為一複合函數時,對一個第一運算器的一輸出額外地使用複數個第二運算器之一,其中每一該等第一運算器以及該等第二運算器是為運算一各自的非線性函數指定的一固定功能的硬體電路;以及 發送來自該加速器的該非線性函數的一輸出到該處理器。
- 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該指令集包括至少一複合指令,該合成指令指定該數學指令以及由該處理器執行的一或複數個指令,以及其中該處理器用於並行解碼該合成指令中的該數學指令以及該一或複數個指令。
- 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,進一步包括: 由該加速器在複數個管線階段中運算一第一非線性函數以及一第二非線性函數,其中該第二非線性函數在完成該第一非線性函數的運算前被運算。
- 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該加速器包括第一運算單元以及一第二運算單元,該第一運算單元進一步包括該等第一運算器以及該第二運算單元進一步包括該等第二運算器,以及其中該方法進一步包括: 由該加速器根據該訊號選擇耦合於該第二運算單元的一輸入的一第一路徑與旁路該第二運算單元的一第二路徑之間選擇該第一運算單元的一輸出路徑。
- 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該指令集包括數學指令,當由該處理器執行該數學指令時,其使得該處理器在多次疊代中累加來自的該加速器的一非線性函數輸出,以及使用該累加的非線性函數輸出計算一softmax函數。
- 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該指令集包括指定複合函數的數學指令,以及其中每一複合函數是至少兩個非線性函數的一複合。
- 如申請專利範圍第18項所述之用於加速非線性數學計算的方法,其中該複合函數包括至少一sigmoid函數或一雙曲線正切函數。
- 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該非線性函數包括至少一指數函數、一對數函數、一倒數函數以及一三角函數。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962792985P | 2019-01-16 | 2019-01-16 | |
US62/792,985 | 2019-01-16 | ||
US16/731,527 | 2019-12-31 | ||
US16/731,527 US11144282B2 (en) | 2019-01-16 | 2019-12-31 | Mathematical accelerator for artificial intelligence applications |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202029063A true TW202029063A (zh) | 2020-08-01 |
TWI743648B TWI743648B (zh) | 2021-10-21 |
Family
ID=71516073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109100559A TWI743648B (zh) | 2019-01-16 | 2020-01-08 | 加速非線性數學計算的系統及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11144282B2 (zh) |
CN (1) | CN111445016B (zh) |
TW (1) | TWI743648B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11455144B1 (en) * | 2019-11-21 | 2022-09-27 | Xilinx, Inc. | Softmax calculation and architecture using a modified coordinate rotation digital computer (CORDIC) approach |
EP3882823A1 (en) * | 2020-03-17 | 2021-09-22 | Samsung Electronics Co., Ltd. | Method and apparatus with softmax approximation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
US11527523B2 (en) * | 2018-12-10 | 2022-12-13 | HangZhou HaiCun Information Technology Co., Ltd. | Discrete three-dimensional processor |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10691996B2 (en) * | 2016-12-15 | 2020-06-23 | Beijing Deephi Intelligent Technology Co., Ltd. | Hardware accelerator for compressed LSTM |
US11151077B2 (en) * | 2017-06-28 | 2021-10-19 | Wisconsin Alumni Research Foundation | Computer architecture with fixed program dataflow elements and stream processor |
US10482337B2 (en) * | 2017-09-29 | 2019-11-19 | Infineon Technologies Ag | Accelerating convolutional neural network computation throughput |
US10725742B2 (en) * | 2018-06-05 | 2020-07-28 | Texas Instruments Incorporated | Transcendental function evaluation |
US20200226444A1 (en) * | 2019-01-15 | 2020-07-16 | BigStream Solutions, Inc. | Systems, apparatus, methods, and architecture for precision heterogeneity in accelerating neural networks for inference and training |
-
2019
- 2019-12-31 US US16/731,527 patent/US11144282B2/en active Active
-
2020
- 2020-01-08 CN CN202010016390.7A patent/CN111445016B/zh active Active
- 2020-01-08 TW TW109100559A patent/TWI743648B/zh active
Also Published As
Publication number | Publication date |
---|---|
TWI743648B (zh) | 2021-10-21 |
CN111445016A (zh) | 2020-07-24 |
US20200225913A1 (en) | 2020-07-16 |
CN111445016B (zh) | 2023-06-09 |
US11144282B2 (en) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102443546B1 (ko) | 행렬 곱셈기 | |
US11137981B2 (en) | Operation processing device, information processing device, and information processing method | |
JP7485820B2 (ja) | ベクトル縮小プロセッサ | |
CN107341547B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
WO2019109795A1 (zh) | 卷积运算处理方法及相关产品 | |
WO2017124644A1 (zh) | 一种人工神经网络压缩编码装置和方法 | |
TWI743648B (zh) | 加速非線性數學計算的系統及方法 | |
CN111027690B (zh) | 执行确定性推理的组合处理装置、芯片和方法 | |
US11513799B2 (en) | Chained buffers in neural network processor | |
KR20220062620A (ko) | 뉴럴 프로세서를 위한 다중 모드 평면 엔진 | |
CN116888591A (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
US11853868B2 (en) | Multi dimensional convolution in neural network processor | |
WO2023116400A1 (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
US20230169316A1 (en) | Indexing Operations In Neural Network Processor | |
US20130262819A1 (en) | Single cycle compare and select operations | |
WO2022159300A1 (en) | Branching operation for neural processor circuit | |
CN113705795A (zh) | 卷积处理方法、装置、卷积神经网络加速器和存储介质 | |
KR20210112834A (ko) | 뉴럴 네트워크 내 레이어에 관한 컨볼루션 연산의 처리 방법 및 장치 | |
Kang et al. | Datapath Extension of NPUs to Support Nonconvolutional Layers Efficiently | |
CN113673690B (zh) | 一种水下噪声分类卷积神经网络加速器 | |
TWI798591B (zh) | 卷積神經網路運算方法及裝置 | |
US11307860B1 (en) | Iterating group sum of multiple accumulate operations | |
Menard et al. | Exploiting reconfigurable SWP operators for multimedia applications | |
US20210042127A1 (en) | Group Load Register of a Graph Streaming Processor | |
US20220222509A1 (en) | Processing non-power-of-two work unit in neural processor circuit |