TWI743648B - 加速非線性數學計算的系統及方法 - Google Patents

加速非線性數學計算的系統及方法 Download PDF

Info

Publication number
TWI743648B
TWI743648B TW109100559A TW109100559A TWI743648B TW I743648 B TWI743648 B TW I743648B TW 109100559 A TW109100559 A TW 109100559A TW 109100559 A TW109100559 A TW 109100559A TW I743648 B TWI743648 B TW I743648B
Authority
TW
Taiwan
Prior art keywords
function
nonlinear
accelerator
processor
accelerating
Prior art date
Application number
TW109100559A
Other languages
English (en)
Other versions
TW202029063A (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 TW202029063A publication Critical patent/TW202029063A/zh
Application granted granted Critical
Publication of TWI743648B publication Critical patent/TWI743648B/zh

Links

Images

Classifications

    • 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/556Logarithmic or exponential functions
    • 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
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • 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/548Trigonometric functions; Co-ordinate transformations
    • 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
    • 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

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)
  • Neurology (AREA)
  • Artificial Intelligence (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 ,其中nm 可以是任何正整數。當處理器110將輸入值與識別非線性函數的選擇訊號一起發送時,加速器120作為響應賦能一個第一運算器120,如fi ,其中i是[1,n ]中的整數。如果非線性函數是複合函數,加速器120額外地賦能一個第二加速器250(如,gj ),其中j是[1,m ]中的整數。每一第一運算器230以及第二運算器250是為運算各自的非線性函數指定的固定功能的硬體電路。加速器120的輸出被發送回處理器110。
由第一運算器230運算的非線性函數fi 的示例可以包括但不限於指數函數、對數函數、倒數函數、三角函數等等。例如,非線性函數fi可以包括但不限於:
Figure 02_image001
;
Figure 02_image003
;
Figure 02_image005
;
Figure 02_image007
;
Figure 02_image009
由第二運算器250運算的非線性函數gj 的示例可以包括但不限於以下:
Figure 02_image011
,其與f2 組合形成sigmoid函數
Figure 02_image013
;
Figure 02_image015
,其與f2 組合形成雙曲線正切函數
Figure 02_image017
Figure 02_image019
,其與f2 組合形成另一個雙曲線正切函數
Figure 02_image021
Figure 02_image023
,其與f2 組成形成複合函數
Figure 02_image025
;
Figure 02_image027
,其與f4 組合形成複合函數
Figure 02_image029
注意到由第一運算器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個元素的向量,每一元素被表示為:
Figure 02_image031
在一個實施例中,處理器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來運算指數函數
Figure 02_image033
(第5圖中標記為exp (xj) )。在步驟540,加速器120運算指數函數以及輸出結果到處理器110。還參考第1圖,在步驟550,處理器110使用累加器114來累加指數函數的輸出,以及將每一指數的值儲存在記憶體113中。疊代隨著遞增的j值繼續進行。當迴圈結束時(即,當j=K時),在步驟560,處理器110賦能加速器120來計算累加結果(即,指數的和)的倒數,以及在步驟570,加速器120運算該倒數;如,藉由運算
Figure 02_image005
,其中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. 一種用於加速非線性數學計算的系統,包括:一加速器,包括一組第一運算器以及一組第二運算器,其中每一該第一運算器以及該第二運算器是為運算一各自的非線性函數指定的一固定功能的硬體電路;以及一處理器,耦合於該加速器,該處理器用於解碼一指令集中的一數學指令,發送識別用於執行一神經網路計算中一非線性函數的一訊號到該加速器,該非線性函數對應於該數學指令,以及從該加速器接收該非線性函數的一輸出,其中該加速器根據該訊號用於使用一個第一運算器來運算該非線性函數,以及,當該訊號識別該非線性函數為一複合函數時,對該一個第一運算器的一輸出額外地使用一個第二運算器。
  2. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該指令集包括至少一複合指令,該複合指令指定該數學指令以及有該處理器執行的一或複數個指令,以及其中該處理器用於並行解碼該複合指令中的該數學指令以及該一或複數個指令。
  3. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該加速器包括複數個管線階段來在完成一第一非線性函數的運算之前,運算一第二非線性函數。
  4. 如申請專利範圍第3項所述之用於加速非線性數學計算的系統,其中該處理器包括複數個管線階段來在連續的時鐘週期中賦能該加速器來運算該第一非線性函數以及該第二非線性函數。
  5. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該加速器包括一第一運算單元以及一第二運算單元,該第一運算單元進一步包括該組第一運算器以及該第二運算單元進一步包括該組第二運算器,以及 其中該第一運算單元具有耦合於該第二運算單元一第一輸出路徑,以及旁路該第二運算單元的一第二輸出路徑。
  6. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該處理器進一步包括一累加器,來在多次疊代中累加來自該加速器的一非線性函數輸出。
  7. 如申請專利範圍第6項所述之用於加速非線性數學計算的系統,其中該處理器用於執行指令來使用該累加的非線性函數輸出來計算一softmax函數。
  8. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該指令集包括指定複合函數的數學指令,以及其中每一複合函數是至少兩個非線性函數的一複合。
  9. 如申請專利範圍第8項所述之用於加速非線性數學計算的系統,其中該複合函數包括至少一sigmoid函數或一雙曲線正切函數。
  10. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該第一運算器用於運算非線性函數,該非線性函數包括至少一指數函數、一對數函數、一倒數函數以及一三角函數。
  11. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該處理器進一步包括一記憶體來儲存一查閱資料表,其將該非線性函數與一索引以及輸入參數相關聯,該索引識別該非線性函數以及該輸入參數將與該訊號一起被發送到該加速器。
  12. 如申請專利範圍第1項所述之用於加速非線性數學計算的系統,其中該加速器進一步包括一輸入介面以及一輸出介面來分別轉換一輸入資料格式轉換以及一輸出資料格式。
  13. 一種用於加速非線性數學計算的方法,包括: 由一加速器從一處理器接收識別用於執行一神經網路計算中一非線性函數的一訊號,該非線性函數對應於該處理器的一指令集中的一數學指令;由該加速器根據該訊號使用複數個第一運算器之一運算該非線性函數,以及,當該訊號識別該非線性函數為一複合函數時,對一個第一運算器的一輸出額外地使用複數個第二運算器之一,其中每一該等第一運算器以及該等第二運算器是為運算一各自的非線性函數指定的一固定功能的硬體電路;以及發送來自該加速器的該非線性函數的一輸出到該處理器。
  14. 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該指令集包括至少一複合指令,該複合指令指定該數學指令以及由該處理器執行的一或複數個指令,以及其中該處理器用於並行解碼該複合指令中的該數學指令以及該一或複數個指令。
  15. 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,進一步包括:由該加速器在複數個管線階段中運算一第一非線性函數以及一第二非線性函數,其中該第二非線性函數在完成該第一非線性函數的運算前被運算。
  16. 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該加速器包括第一運算單元以及一第二運算單元,該第一運算單元進一步包括該等第一運算器以及該第二運算單元進一步包括該等第二運算器,以及其中該方法進一步包括:由該加速器根據該訊號選擇耦合於該第二運算單元的一輸入的一第一路徑與旁路該第二運算單元的一第二路徑之間選擇該第一運算單元的一輸出路徑。
  17. 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該指令集包括數學指令,當由該處理器執行該數學指令時,其使得該處理器在多次疊代中累加來自的該加速器的一非線性函數輸出,以及使用該 累加的非線性函數輸出計算一softmax函數。
  18. 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該指令集包括指定複合函數的數學指令,以及其中每一複合函數是至少兩個非線性函數的一複合。
  19. 如申請專利範圍第18項所述之用於加速非線性數學計算的方法,其中該複合函數包括至少一sigmoid函數或一雙曲線正切函數。
  20. 如申請專利範圍第13項所述之用於加速非線性數學計算的方法,其中該非線性函數包括至少一指數函數、一對數函數、一倒數函數以及一三角函數。
TW109100559A 2019-01-16 2020-01-08 加速非線性數學計算的系統及方法 TWI743648B (zh)

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 US11144282B2 (en) 2019-01-16 2019-12-31 Mathematical accelerator for artificial intelligence applications
US16/731,527 2019-12-31

Publications (2)

Publication Number Publication Date
TW202029063A TW202029063A (zh) 2020-08-01
TWI743648B true 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)

* Cited by examiner, † Cited by third party
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN108009106A (zh) * 2016-10-27 2018-05-08 谷歌公司 神经网络计算模组
WO2019005443A1 (en) * 2017-06-28 2019-01-03 Wisconsin Alumni Research Foundation HIGH-SPEED COMPUTER ACCELERATOR WITH PRE-PROGRAMMED FUNCTIONS

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11527523B2 (en) * 2018-12-10 2022-12-13 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
US10691996B2 (en) * 2016-12-15 2020-06-23 Beijing Deephi Intelligent Technology Co., Ltd. Hardware accelerator for compressed LSTM
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106529668A (zh) * 2015-11-17 2017-03-22 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN108009106A (zh) * 2016-10-27 2018-05-08 谷歌公司 神经网络计算模组
WO2019005443A1 (en) * 2017-06-28 2019-01-03 Wisconsin Alumni Research Foundation HIGH-SPEED COMPUTER ACCELERATOR WITH PRE-PROGRAMMED FUNCTIONS

Also Published As

Publication number Publication date
US11144282B2 (en) 2021-10-12
CN111445016A (zh) 2020-07-24
US20200225913A1 (en) 2020-07-16
CN111445016B (zh) 2023-06-09
TW202029063A (zh) 2020-08-01

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) 卷积运算处理方法及相关产品
JP6243000B2 (ja) マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン、ならびに関連ベクトルプロセッサ、システム、および方法
CN111580864B (zh) 一种向量运算装置及运算方法
TWI743648B (zh) 加速非線性數學計算的系統及方法
CN111027690B (zh) 执行确定性推理的组合处理装置、芯片和方法
US11513799B2 (en) Chained buffers in neural network processor
US20210182024A1 (en) Mixed precision floating-point multiply-add operation
KR20220062620A (ko) 뉴럴 프로세서를 위한 다중 모드 평면 엔진
JP7495194B2 (ja) 積和演算用のプロセッサ・ユニット
EP3447690A1 (en) Maxout layer operation apparatus and method
WO2023116400A1 (zh) 向量运算方法、向量运算器、电子设备和存储介质
US11853868B2 (en) Multi dimensional convolution 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
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
TWI798591B (zh) 卷積神經網路運算方法及裝置
US20210042127A1 (en) Group Load Register of a Graph Streaming Processor
US20230128047A1 (en) Binary comparison and reduction operations in neural network processor