TWI755043B - 硬體中s型函數及包括其之可重組態資料處理器 - Google Patents
硬體中s型函數及包括其之可重組態資料處理器 Download PDFInfo
- Publication number
- TWI755043B TWI755043B TW109129892A TW109129892A TWI755043B TW I755043 B TWI755043 B TW I755043B TW 109129892 A TW109129892 A TW 109129892A TW 109129892 A TW109129892 A TW 109129892A TW I755043 B TWI755043 B TW I755043B
- Authority
- TW
- Taiwan
- Prior art keywords
- output
- circuit
- value
- register
- tanh
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
-
- 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
- G06F7/548—Trigonometric functions; Co-ordinate transformations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Nonlinear Science (AREA)
- Logic Circuits (AREA)
Abstract
一種資料處理器之功能單元,其包含:輸入暫存器,用以儲存變數X;第一電路,具有連接到該輸入暫存器之輸入以及具有輸出,用以在其輸出產生值eX
;第二電路,具有連接到該輸入暫存器之輸入以及具有輸出,用以在其輸出產生值(tanh(X/2)+1)/2之輸出;比較器,具有連接到該輸入暫存器之輸入以及具有輸出,用以基於X與常數之間的比較以在其輸出產生一條線;以及選擇器,以在與該第一電路與該第二電路之該輸出所連接的輸入之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出。
Description
本發明相關於低功率、包括諸如在機器學習中廣用的S型函數等激活函數之緊密實作等技術。
機器學習網路(諸如遞迴與卷積類神經網路)可包括數陣列之計算單元,該計算單元類似配置在許多層中之「神經元」。在若干實作中,此等計算單元可執行函數(諸如和差化積),其產生中間值,接著使用激活函數將該中間值變換以產生該單元之輸出。已使用各式各樣激活函數,包括整流的線性單元ReLU、S型、雙曲正切、及softplus等等。請見,激活函數(Activation function)- Wikipedia (https://en.wikipedia.org/wiki/ Activation_function - 8/16/ 2019, 10:57 AM)。激活函數可消耗系統上大部分的計算資源。
可舉例而言使用具有加法器、乘法器與除法器等典型算數邏輯單元ALU電路來實作S型函數(sigmoid function)。另外,也可使用查找表實作S型函數。然而,ALU與查找表方法可能包括潛時(latency)之問題,使得其不適用於若干高性能的實作。替代地,可將查找表編譯以形成組合式邏輯電路,以提供S型函數之結果。然而,此等電路為大且在高速時消耗顯著的功率。
由於逐漸廣泛部屬基於機器學習之技術,透過使用具靈活性之架構以低成本來實作其變得日趨重要。在此種架構(包括積體電路組件)中,面積與功率消耗是關鍵的設計參數。一種類型之積體電路包括可重組態處理器(包括現場可程式閘極陣列(FPGA)),其可經組態以相較於使用執行電腦程式之通用處理器更高效或更快之方式實作各式各樣函數。所謂粗粒度可重組態架構(例如,CGRA)正在被研發,其中在陣列中的可組態單元比典型上更精細粒度之FPGA中所用者更為複雜,且可賦能各種類型函數之更快或更高效執行。舉例而言,CGRA已被提出為可為機器學習與人工智慧工作量實現高能效的加速器。請見,Prabhakar等人,「Plasticine: A Reconfigurable Architecture for Parallel Patterns」,ISCA ’17, 2017年6月24-28, 多倫多Toronto, ON, 加拿大Canada。
因此,期望的是提供一種面積/功率高效的非線性函數(諸如可應用成激活函數之S型)之實作方式,包括適用於積體電路中的實作,包括諸如粗粒度可重組態架構(CGRA)裝置等可程式處理器中的模組。
本發明提供一種面積/功率高效的方式,以實作非線性函數(包括S型函數),該非線性函數在機器學習與其他環境中可用作如激活函數。該技術可應用於積體電路中,例如可重組態資料處理器。
如本文所述,S型函數sig(X)是可透過兩個或更多不同函數來近似化之非線性函數,該兩個或更多不同函數中各者用以表示輸入變數X之域的各個部分上的S型函數,包括該域之第一部分,其中X是比常數C更負之大負數(large negative number),以及該域之第二部分,其中X大於C。相較於直接計算在輸入域上的S型函數之電路,該兩個或更多不同函數之組合可需要較少的計算功率與面積。
在本文所述之實作中,sig(X)在X域之第一部分上是使用X之雙曲正切函數來近似化,並在X域之第二部分上使用e^X來近似化,並且使用比較器來描繪出其中輸入X下降之域。該二或更多不同函數以及比較器可透過使用配置以並行執行之電路來實作,以及所選來表示S型函數之輸出是透過由比較器指示之域的部分來判定。
在本文所述之實作中,描述一種S型函數電路,其包含:輸入暫存器,用以儲存變數X;第一電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生值eX
;第二電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生其值是(tanh(X/2)+ 1)/2之輸出;比較器,具有與該輸入暫存器連接的輸入以及具有輸出,用以基於X與其將輸入域劃分的常數之間的比較以在其輸出產生一條線;以及選擇器,以在該第一電路與該第二電路之該輸出之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出。用於此函數之組合的常數可以是量級高於4之負數(亦即,比-4更為負,或小於-4),用以當X小於該常數時選擇第一電路之輸出,且反之用以選擇第二電路之輸出。
針對支援浮點運算之處理器,該變數X可以為浮點格式表示,以及該選擇器之該輸出是以浮點格式表示。
在浮點格式中,變數X是由有效位數與指數表示,以及產生值tanh(X/2)+1)/2之該第二電路可包括:可配置為從變數X的指數減去1以產生值X/2的階段,產生值tanh(X/2)的階段,加上1以提供tanh(X/2)+1的階段,以及從tanh(X/2)+1的指數減去1以產生該值(tanh(X/2)+1)/2的階段。因此,在本第二電路中執行之除法可使用從指數簡單減去1來實作。第一電路可包含在該輸入域之第一部分上產生輸出eX
之電路。
該功能單元包括輸出暫存器,該輸出暫存器用以接收該選擇器之該輸出,以及其中該輸入暫存器與輸出暫存器是由單元時鐘進行控制。該第一與第二電路可使用電路來實作,以使得在一系統時鐘週期內可由該輸入暫存器中的該輸入X產生表示該值sig(X)之該輸出,並在該單元時鐘之一週期內,將該輸出儲存在該輸出暫存器中。
在一實施例中,功能單元中的第二電路可組態以基於組態參數或運算碼,在其輸出提供該值(tanh(X/2)+1)/2或該值tanh(X)。
該選擇器可組態以在與該第一電路與該第二電路之輸出連接的輸入之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出;以獨立於該比較器之該輸出,選擇與該第一電路之該輸出連接的該輸入以在其輸出提供該值eX
;以及以獨立於該比較器之該輸出,選擇與該第二電路之該輸出連接的該輸入以提供該值tanh(X)。
提供一種可重組態資料處理器,其包含一陣列之可組態單元以及匯流排系統,該匯流排系統與該陣列之可組態單元連接並以處理器時鐘率通訊資料。
在該陣列之可組態單元中的可組態單元裡的功能單元包括:輸入暫存器,用以儲存變數X;第一電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生值eX
;第二電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生值(tanh(X/2) +1)/2之輸出;比較器,具有與該輸入暫存器連接的輸入以及具有輸出,用以基於X與常數之間的比較以在其輸出產生一條線;以及選擇器,以在該第一電路與該第二電路之該輸出所連接的輸入之間進行選擇,以回應該比較器之該輸出,並在單元時鐘之一週期內提供代表值sigmoid(X)之輸出,該單元時鐘可具有與處理器時鐘相同之時鐘率。
提供一種在資料處理器之功能單元中計算S型函數之方法。該方法包含在輸入暫存器中儲存變數X;在第一電路之輸出上產生值eX
,該第一電路具有與該輸入暫存器連接的輸入;在第二電路之輸出上產生值(tanh(X/2)+1)/2,該第二電路具有與該輸入暫存器連接的輸入;基於X與常數之間的比較,在比較器之輸出上產生一條線,該比較器具有與該輸入暫存器連接的輸入;以及在該第一電路與該第二電路之該輸出之間進行選擇,以回應該比較器之該輸出,並在選擇器之輸出上提供表示值sigmoid(X)之結果,該選擇器具有與該第一電路及該第二電路之該輸出連接的輸入。
可透過參閱圖式獲得本發明之其他態樣與優勢,有關詳細說明與所附申請專利範圍,請見下文。
以下描述通常將參考具體的結構實施例和方法。應瞭解,無意將本技術限制為具體揭示的實施例與方法,而是可以使用其他特徵、元件、方法和實施例來實作該技術。描述較佳實施例以描繪本技術,但並不會限制其範疇,本技術之範疇由申請專利範圍所界定。在該技術中具有通常知識者將能體認到以下說明之各式各樣等效變異體。
圖1是描繪包括主機120、記憶體140、以及可重組態資料處理器110的系統之系統圖式。如圖1之實例所示,可重組態資料處理器110包括一陣列190之可組態單元以及組態載入/卸載控制器195。一陣列190之可組態單元可包括如本文所述之S型函數電路。
處理器110包括外部I/O介面130以及外部I/O介面150,該外部I/O介面130透過線125而與主機120連接,該外部I/O介面150透過線145而與記憶體140連接。I/O介面130、150經由匯流排系統115連接到該陣列190之可組態單元與連接到該組態載入/卸載控制器195。匯流排系統115可具有承載一資料塊之匯流排寬度,其可在本實例中是128位元(全文對128位元之參考可一般而言被視成一例示性塊大小)。
使用組態檔案將陣列190之可組態單元中的可組態單元進行組態,主機120可將組態檔案經由介面130、匯流排系統115、以及可重組態資料處理器110中的介面150傳送到記憶體140。可以許多種方式載入組態檔案以適配特定之架構,包括載入到可組態處理器110外部之資料路徑中。該組態檔案可以從記憶體140經由記憶體介面150而取回。組態檔案之塊(chunk)可接著以分佈序列(distribution sequence)被傳送到可重組態資料處理器110中該陣列190之可組態單元中的可組態單元。
外部時脈產生器(時鐘)170或其他時鐘線來源可對可重組態資料處理器110中的元件提供時鐘線175或數個時鐘線,該元件包括該陣列190之可組態單元、匯流排系統115、與外部資料I/O介面。
匯流排系統115可經由時鐘線175或數個時鐘線以處理器時鐘率通訊資料。在一陣列190之可組態單元中可組態單元(例如,400,圖4)中的功能單元(例如,483,圖4)可包括S型函數電路。該S型函數電路可使用組合式電路(已知為組合電路)來實作,以將表示儲存在輸入暫存器中的輸入變數X之值sigmoid(X)之輸出,在應用到單元之一時鐘週期中提供到輸出暫存器,該時鐘週期可以與處理器時鐘相同,以用於代表S型函數的資料值之低潛時計算。
圖2是CGRA(粗粒可重組態架構)處理器的組件之簡化方塊圖。在本實例中,CGRA處理器具有2片(Tile1, Tile2)。該片(Tile)包含與匯流排系統連接的一陣列之可組態單元,其在本實例中包括陣列層級網路。在該片中一陣列之可組態單元(例如,190,圖1)包括S型函數電路。匯流排系統包括將該片連接到外部I/O介面205(或任意數量之介面)之頂層級網路。在其他實施例中,可運用不同的匯流排系統組態。在本實施例中,該在各片中的可組態單元是陣列層級網路上的節點。
各片具有4個AGCU(位址產生與合併單元) (例如MAGCU1、AGCU12、AGCU13、AGCU14)。AGCU是頂層級網路上之層級以及在陣列層級網路上之節點,並且包括用於在頂層級網路之節點間以及在各片中陣列層級網路上的節點間將資料路由之資源。
在本實例中在頂層級網路上之節點包括一或多外部I/O,包括介面205。到外部裝置之介面包括用於再頂層級網路上之節點間與外部裝置間路由資料之資源,諸如高容量記憶體、主機處理器、其他CGRA處理器、FPGA裝置等等,其皆連接到該介面。
在本實例中,在片中之一AGCU經組態成是主AGCU,其包括針對該片之一陣列組態載入/卸載控制器。在其他實施例中,可實作多於一個陣列組態載入/卸載控制器,以及一個陣列組態載入/卸載控制器可透過在多於一個AGCU之間分佈之邏輯來進行實作。
MAGCU1包括用於Tile1之組態載入/卸載控制器,以及MAGCU2包括用於Tile2之組態載入/卸載控制器。在其他實施例中,組態載入/卸載控制器可以被設計用於將多於一片之組態予以載入與卸載。在其他實施例中,多於一個組態控制器可以被設計用於組態單一片。另外,組態載入/卸載控制器可以被實作於其他部分之系統中,包括作為頂層級網路上以及陣列層級網路或數個網路中之獨立節點。
頂層級網路是使用彼此連接以及與頂層級網路上其他節點(包括AGCU)與I/O介面205相連接之頂層級交換器(211-216)來建構。頂層級網路包括連接頂層級交換器之鏈接(例如,L11、L12、L21、L22)。資料在封包中在鏈接上的頂層級交換器之間傳遞,以及從交換器到與交換器連接之網路上的節點。舉例而言,頂層級交換器211與212是透過鏈接L11連接,頂層級交換器214與215是透過鏈接L12連接,頂層級交換器211與214是透過鏈接L13連接,以及頂層級交換器212與213是透過鏈接L21連接。該等鏈接可包括一或多匯流排並支援控制線,例如包括塊寬度匯流排(向量匯流排)。舉例而言,頂層級網路可包括資料、請求與回應通道可協作操作用於以與AXI相容協定同質之方式轉移資料。請見AMBA®AXI與ACE協定規範,ARM,2017。
頂層級交換器可以連接到AGCU。例如,頂層級交換器211、212、214與215分別連接到片Tile1中的MAGCU1、AGCU12、AGCU13與AGCU14。頂層級交換器212、213、215與216分別連接到片Tile2中的MAGCU2、AGCU22、AGCU23與AGCU24。
頂層級交換器可以連接到一或多外部I/O介面(例如,介面205)。
圖3是一片(tile)與在圖2組態中可用的陣列層級網路之簡略圖,其中陣列中該可組態單元是陣列層級網路上的節點。
在本實例中,該陣列之可組態單元300包括複數類型之可組態單元。在本實例中,可組態單元之類型包括模式計算單元(Pattern Compute Unit,PCU),模式記憶體單元(Pattern Memory Unit,PMU),交換單元(switch unit,S)與位址產生與合併單元(各包括兩個位址產生器AG與共享CU)。有關此等類型之可組態單元的功能之實例,請見Prabhakar等人著「Plasticine: A Reconfigurable Architecture For Parallel Patterns」,ISCA ’17, June 24-28, 2017, Toronto, ON, Canada,其透過對其參照而如在本文中完全陳述般將其併入。在本實例中,在該陣列之可組態單元300中之PCU(例如,342)包括S型函數電路(例如,343),如進一步在本文內描述者。各個此等可組態單元包含組態儲存(configuration store),包含一集合之代表執行程式的設定或序列之暫存器或正反器,並且可以包括巢套迴圈的數量、每個迴圈迭代器的限制、每個階段要執行的指令及/或路由,該每個階段要執行的指令及/或路由可包括S型函數、運算元的來源以及輸入和輸出介面的網路參數。
額外地,此等可組態單元各包含組態儲存,包含一集合之暫存器或正反器,其儲存可用以追蹤巢套循環中進度或他者之狀態。在組態儲存中的組態檔案包含表示執行該程式之各組件的初始組態(或開始狀態)之位元流。此位元流被稱作位元檔案(bit-file)。程式載入是在陣列或可組態單元中基於位元檔案之內容來設定好組態儲存之處理,以允許組件可以執行程式(亦即,機器),包括運用S型函數電路343之程式。程式載入也可能需要所有PMU記憶體之載入。
陣列層級網路包括將陣列中可組態單元互連之鏈接。陣列層級網路中的鏈接包括一或多(且在本案之情況下,三種)實體匯流排:塊層級之向量匯流排(例如,128位元之資料)、字層級之純量匯流排(例如,32位元之資料)、以及多位元層級之控制匯流排。舉例而言,交換單元311與312之間的互連321包括具128位元之向量匯流排寬度的向量匯流排互連、具32位元之純量匯流排寬度的純量匯流排互連、與控制匯流排互連。
該三種實體匯流排在轉移之資料粒度方面有所不同。在一實施例中,向量匯流排可承載一包括16-Bytes(=128位元)之資料的塊作為其酬載。純量匯流排可具有32-bit之酬載,並承載純量運算元或控制資訊。在若干使用本系統實作之機器中,可使用浮點資料格式(包括標準或非標準格式)來表示資料。例示性格式包括FP32與BF16,以及他者。可瞭解,在純量與向量匯流排上承載之資料值之數量是以資料值之編碼格式為函數,其中FP32每值運用32位元且BF16每值使用16位元。
控制匯流排可承載諸如符記與其他線之控制交握(handshake)。向量與純量匯流排可為封包交換的,包括指示各封包目的地之標頭與諸如序列號等其他資訊,該序列號等其他資訊可用以當接收到封包順序亂掉時重組一檔案。各封包標頭可包含目的地識別符,其識別目的地交換單元之地理座標(例如,陣列中的行與列);以及包括介面識別符,其識別在目的地交換器(例如,東南西北等)上用以到達目的地單元之介面。控制網路可以是例如基於裝置中計時電路來進行交換(switched)之電路。組態載入/卸載控制器可產生用於128位元的各組態資料塊之標頭。該標頭被傳輸於標頭匯流排上,傳輸到該陣列之可組態單元中的各可組態單元。
在一實例中,128位元之資料塊經傳輸於向量匯流排上,該向量匯流排將該塊提供成向量輸入到可組態單元。向量匯流排可包括128個酬載線,以及一集合之標頭線。該標頭可包括針對各塊之序列ID,其可包括:
● 一位元,以指示該塊是暫用記憶體(scratchpad memory)或是組態儲存資料。
● 數個位元,其形成塊編號。
● 數個位元,其指示行識別符。
● 數個位元,其指示列識別符。
● 數個位元,其指示組件識別符。
針對載入操作,組態載入控制器可將數量N個塊以N-1到0之順序傳送到可組態單元。對此實例而言,以塊5>塊4>塊3>塊2>塊1>塊0(Chunk 5-> Chunk 4->Chunk 3->Chunk 2->Chunk 1-> Chunk 0)的最高有效位元優先的順序發送6個塊。(應註明,該最高有效位元優先的順序將導致塊5在分佈序列之第0輪從陣列組態載入控制器予以分配)針對卸載操作,組態卸載控制器可照順序寫出卸載資料到記憶體。針對載入與卸載操作兩種操作而言,在可組態單元中組態資料儲存裡的組態序列鏈裡的移位是從LSB (最低有效位元)到MSB(最高有效位元),或MSB先出。
圖3A描繪與陣列層級網路中的元件連接之例示性交換單元。如圖3A之實例所示出,交換單元可具有8個介面。該交換單元之東南西北介面(North, South, East and West interface)被用以在交換單元之間進行連接。該交換單元的最東南西北之介面各用以連接到PCU或PMU實例。各片象限中一集合之2個交換單元具有到位址產生與合併單元(AGCU)與合併單元(CU)之連接,該AGCU包括多個位址產生(AG)單元且該CU連接到多個位址產生單元。合併單元(CU)在AG之間進行仲裁併並處理記憶體請求。交換單元之8個介面各可包括向量介面、純量介面、以及控制介面,以與向量網路、純量網路、與控制網路進行通訊。
在組態後執行機器期間,可透過使用在陣列層級網路上一或多交換單元之(一或多)向量介面與向量匯流排,以經由一或多單元交換器與在該等單元交換器之間的一或多鏈接來將資料傳送到可組態單元。
在本文所述實施例中,在將片進行組態之前,組態檔案或位元檔案可透過使用相同的向量匯流排以從組態載入控制器,經由一或多單元交換器與在該等單元交換器之間的一或多鏈接,傳送到可組態單元,其使用在陣列層級網路上一或多交換單元之(一或多)向量介面與向量匯流排。舉例而言,可以經由組態載入/卸載控制器301與切換器單元311之西(West,W)向量介面之間的鏈接320、經由交換單元311、並經由交換單元311之東南(Southeast,SE)向量介面與PMU 341之間的鏈接331,將特定於可組態單元PMU 341的單元檔案中的組態資料塊從該組態載入/卸載控制器301發送到PMU 341。
在本實例中,AGCU中一者經組態以成為主AGCU,其包括組態載入/卸載控制器(例如,301)。主AGCU實作暫存器,透過該暫存器,主機(圖1之120)可傳送指令經由匯流排系統到達主AGCU。主AGCU控制對片中一陣列之可組態單元的操作並實作程式控制狀態機器,以基於其通過對登記寫入而自主機接收到的指令以追蹤該片之狀態。對每個狀態轉換,主AGCU透過菊花鏈拓撲指令匯流排(daisy-chained command bus)發出指令到該片上所有組件(圖4)。該指令包括程式重置指令,以將片內一陣列之可組態單元中的可組態單元重置,以及包括程式載入指令,以將組態檔案載入可組態單元中。
主AGCU中的組態載入控制器負責從記憶體讀取組態檔案,並將組態資料傳送到片中每個可組態單元。主AGCU可較佳以頂層級網路之最大產量來從記憶體讀取組態檔案。根據本文所述之分佈序列,從記憶體讀取之資料被主AGCU傳輸透過陣列層級網路上之向量介面,到對應的可組態單元。
在一實施例中,在可降低可組態單元內佈線需求之方式,在一組件中,由組態與狀態暫存器所固持之將在組態載入處理中載入或將在組態卸載處理中被卸載之單元檔案,是連接於序列鏈中,並且可透過通過該序列鏈之移位位元的處理來載入。在若干組態中,可有多於一個並聯或串聯配置之序列鏈。當可組態單元在一匯流排週期中從主AGCU接收到例如128位元之組態資料時,可組態單元以每週期一位元之速率將本資料移位通過其序列鏈,其中移位器週期可以運行於與匯流排週期相同之速率。可組態單元需花費128個移位器週期,才能將透過向量介面接收到之128位元之資料載入128個組態位元中。128位元之組態資料被被稱為塊(chunk)。可組態單元可能需要多個資料塊以將其全部組態位元載入。
可組態單元透過多個記憶體介面(圖1之150)以與記憶體介接。各個記憶體介面可透過使用些許AGCU來存取。各AGCU包含可重組態純量資料路徑,以產生對晶片外記憶體之請求。各AGCU包含FIFO(先進先出緩衝器,用於組織資料)以將發出指令、資料與從晶片外記憶體來訊的回應緩衝。
圖4是描繪例示性可組態單元400(諸如模式計算單元(PCU))之方塊圖。可組態單元可與純量、向量、與控制匯流排介接,在本實例中使用三種對應集合之輸入與輸出(IO)來與其介接,該等輸入與輸出包括:純量輸入/輸出、向量輸入/輸出、以及控制輸入/輸出。純量IO可用以通訊單一字之資料(例如,32個位元)。向量IO可用以通訊資料塊(例如,128個位元),其使用情形諸如在單元組態載入處理中接收組態資料時,以及在橫跨多個PCU之間的一長管線組態之後的操作期間傳輸與接收資料之情形。控制IO可用以通訊控制線上之訊號,諸如可組態單元之執行的開始或結束。控制輸入是由控制區塊470所接收,以及控制輸出是由控制區塊470所提供。
在本實例中,使用向量FIFO區塊460中的向量FIFO來將各向量輸入進行緩衝,該向量FIFO區塊460可包括一或多向量FIFO。與本實例相似的,使用純量FIFO 450來將各純量輸入進行緩衝。使用輸入FIFO會將資料產生者與消費者之間的計時去耦合,並透過使其對輸入延遲失配具有穩健性,簡化可組態單元間控制邏輯。
在區塊480中,可組態單元包括多個可重組態資料路徑。可組態單元中的資料路徑可以被組織成多階段(階段1…階段N)、可重組態SIMD(單指令多資料)管線。推進可組態單元中組態序列鏈裡的該數個資料塊包括用於該可組態單元中各資料路徑中各階段的組態資料。組態資料儲存420中的組態序列鏈經由線421而連接到區塊480中的多個資料路徑。
經組織成多階管線之可組態資料路徑可在各別的階段包括多個功能單元(例如,481、482、483;484、485、486)。在可組態資料路徑中的特殊功能單元SFU(例如,483,486)可包括可組態模組487,該模組包括S型函數電路與其他專用計算電路,其組合可取決於特定實作而予以最佳化。在一實施例中,特殊功能單元可至少在多階管線中的最終階段,並且可被組態以從多階管線中先前階段之功能單元(例如,482、486)接收輸入線X。在若干實施例中,如PCU之可組態單元可包括多個S型函數電路,或許多經組態使用組態資料用於特殊圖型之特殊功能單元。
特殊功能單元中的S型函數電路可在單元時鐘之一週期內提供代表輸入線X之S型函數(X)值的輸出,該單元時鐘具有與處理器時鐘相同之速率。
該陣列之可組態單元中的可組態單元包括組態資料儲存420(例如,序列鏈),用以儲存包含對對應可組態單元特定的複數個組態資料塊(或其他大小之次檔案)之單元檔案。該陣列之可組態單元中的可組態單元各包括單元組態載入邏輯440,其經由線422連接到組態資料儲存420,用以執行單元組態載入處理。該單元組態載入處理包括經由匯流排系統(例如,向量輸入)接收對可組態單元特定的單元檔案之塊,並將接收到的塊載入可組態單元的組態資料儲存420中。載入到組態資料儲存420中的單元檔案可包括用於實作參照圖6與7所述之S型函數的電路(例如,模組487)之組態資料,該組態資料包括運算碼與路由組態。
在本實例中,在複數個可組態單元的可組態單元中的組態資料儲存包含序列鏈之鎖存器,其中該鎖存器儲存有控制可組態單元中資源組態之位元。組態資料儲存中的序列鏈可包括用於組態資料之移位暫存器鏈以及用於狀態資訊與串聯連接計數器值之第二移位暫存器鏈。
輸入組態資料410可被提供到向量FIFO作為向量輸入,並接著被轉移到組態資料儲存420中。可使用向量輸出從組態資料儲存420卸載輸出組態資料430。
CGRA使用菊花鏈拓撲完成匯流排以指示何時載入/卸載指令已完成。主AGCU將程式載入與卸載指令傳輸透過菊花鏈拓撲指令匯流排到陣列之可組態單元中的可組態單元。如圖4之實例所示,菊花鏈拓撲完成匯流排491與菊花鏈拓撲指令匯流排492經連接到菊花鏈拓撲邏輯493,該邏輯493與單元組態載入邏輯440通訊。該菊花鏈拓撲邏輯493可包括載入完整狀態邏輯,如下述。將在下文中進一步描述菊花鏈拓撲完成匯流排。其他用於指令與完成匯流排之拓樸也是可能的,但此處未描述。
模式記憶體單元(例如,PMU)可包含與目的用於位址計算的可重組態純量資料路徑耦接之暫用記憶體,連帶耦接PCU中所用匯流排介面。PMU可用在該陣列之可重組態單元上分配晶載記憶體。在一實施例中,PMU中記憶體內的位址計算是對PMU資料路徑執行,而核心計算是在PCU內執行。在若干實施例中,PMU可包括具備S型函數電路之特殊功能單元。
圖5A說明S型函數,用於參考用。
tanh函數與S型函數之間的差異在於tanh函數之範圍在(-1,1)之間且S型函數之範圍在(0,1)之間,如圖5A與5B所示。
S型函數可使用以下tanh函數來表示:
sig(X) = (tanh(X/2)+1)/2
基於面積有效的方式將查找表編譯,tanh函數可實作於組合式電路中,其至少部分基於以下因素:
● tanh X以零軸為中心為對稱,因此可忽略對X正負號之計算且僅對正的值運算。輸出之正負號總示與輸入正負號相同。
● 當X是大的正數時,tanh(X)等於1。當X是大負數時,tanh(X)等於-1。
● 當X接近零時,tanh(X) = X。
● 針對其中上述條件無法精準近似化tanh(X)之其他值,可使用查找表。
查找表使用輸入X作為索引以從電路中儲存的表獲得輸出之預定義值。該電路可以被實作於SRAM、ROM、DRAM中或由客制化邏輯建構。
為了提供一種電路透過使用tanh電路來實作針對浮點數之S型函數,值X/2是透過從輸入X之指數減去1所獲得,將該結果應用到tanh電路,對該輸出加上1以獲得分子(tanh(X/2)+1),並接著透過從該分子之指數減去1執行除法,產生sig(X)。
當輸入X是大負數時,可看到使用此方法用於浮點數(例如,包括BF16與FP32格式數)之特徵。在本情況下,tanh (X/2)變成-1,且(tanh(X/2)+1)變成0。當輸入X是大負數時,這會導致與使用浮點格式變數(如BF16)相關之問題,從而導致sig(X)的解析度下降,並增加誤差率。
為解決此問題,當X是大負數時可使用針對sig(X)之另一種近似化。當X是大負數時,e-X
遠大於1,因此針對sig(X)之方程式中的分母(1+e-X
)中的數字1可忽略且可被丟棄,因此S型函數是被近似化成1/e-X
。相應的,當X是大負數時,針對sigmoid(X)之近似化可以由下表示:
用於實作S型函數之例示性電路包括當X是大負數時,此針對sigmoid(X)之近似化,參照圖6所述。
圖6描繪用於使用tanh函數與指數函數來實作S型函數之例示性電路。此電路可用作S型函數電路343(如圖3所示)以及用作一陣列可組態單元中可組態單元中的特殊功能單元483中的模組487(如圖4所示)。
如圖6之實例所示,功能單元600包括輸入暫存器601,用以儲存浮點格式之輸入變數X、第一電路610、以及第二電路620。
第一電路610,具有經由線605連接到該輸入暫存器之輸入,以及具有輸出,用以在其輸出產生值eX
。可使用組合式邏輯電路來實作用以在其輸出產生值eX
之第一電路610。第一電路610之輸出經由線615被提供到選擇器640之輸入。
第二電路620,具有經由線605連接到該輸入暫存器之輸入,以及具有輸出,用以在其輸出產生值(tanh(X/2)+1)/2之輸出。第二電路620之輸出經由線628被提供到選擇器640之輸入。
功能單元600包括比較器630,該比較器具有經由線605連接到該輸入暫存器之輸入,以及具有輸出,用以基於變數X與常數C之間的比較以在其輸出產生一條線635。
可以如在第一電路610中般使用指數電路與在如第二電路620中般使用tanh電路來透過經驗實作運行S型函數實作來獲得常數C。在一實施例中,常數C可以是量級大於4之負數,並且可以被硬編碼到電路中,以使得其可以由比較器630存取。在一實例中,常數C等於-4.0625。
功能單元包括選擇器640,以在分別經由線615及628來與該第一電路610及該第二電路620之輸出連接的輸入之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出。線615與628是分別連接到第一電路610與第二電路620之輸出。
變數X可以為浮點格式表示,以及該選擇器之該輸出可以是以浮點格式表示。在一實施例中,浮點格式是16-bit的Bfloat16(BF16)。BF16格式可表示成:
S | 8位元指數 | 7位元有效位數 |
最高有效位元是正負號位元(S),其0代表正數且1代表負數。隨後之8個位元表示+127之指數偏移,以及剩餘7位元分數帶有隱含或隱藏第八位元以表示全有效位數(full significand)。輸入變數X可以由有效位數與指數(諸如在BF16格式中)來表示。FP 32具有相似格式,其具有相同8位元之指數以及擴充到23位元之有效位數。
第二電路620可包括可組態已從變數X之指數減去1以產生值X/2之一階段。例如,此階段可以被實作成第一減法電路621,其將輸入變數X之指數減去1。
第二電路620可包括產生值tanh(X/2)之一階段。此階段可使用第一減法電路621之輸出作為其輸入,包括該正負號位元、指數與有效位數。例如,透過使用組合式電路,此階段可以被實作成tanh電路623。
第二電路620可包括產生tanh(X/2)+1之一階段。經由線624,此階段可使用tanh電路之輸出作為其輸入,可使用加法器625以對tanh電路之輸出加上1,以及可在線626提供代表tanh(X/2)+1之輸出。
第二電路620可包括用以從tanh(X/2)+1之指數減去1之一階段,以產生值(tanh(X/2)+1)/2。此階段可使用加法器625之輸出作為其輸入。例如,此階段可以被實作成第二減法電路627,其從指數減去1。經由線626,加法器625之輸出被提供到第二電路627之輸入。第二電路627之輸出經由線628被提供到選擇器640之輸入。
該功能單元包括輸出暫存器650,該輸出暫存器連接到該選擇器640之該輸出,以及其中該輸入暫存器601與輸出暫存器650是由時鐘線175上之單元時鐘進行控制。單元時鐘可以從匯流排系統使用的處理器時鐘獲得或與之相同。由輸入暫存器中的輸入X所產生的代表值sigmoid(X)的輸出可以在單元時鐘的一個週期中在輸出暫存器650處被接收。在單元時鐘之一週期中,輸出暫存器650可提供表示值sigmoid(X)的暫存之輸出。舉例而言,單元時鐘可在1 GHz(gigahertz)的單元時鐘率之速率運作,在該情況下單元時鐘率之一週期是1 ns(奈秒)。
圖7描繪可組態以根據組態資料提供表示sig(X)、tanh(X)及eX
等輸出之功能單元。
在本實施例中,可組態單元中的第二電路620可組態以在其輸出處提供值(tanh(X/2)+1)/2或值tanh(X)。圖6與7中相似元件以相似參考編號予以參照。
在圖7之實施例中,第二選擇器722可以在與輸入暫存器601及第一指數減法電路621之輸出連接的輸入(I0, I1)之間進行選擇,並經由線622提供輸出到tanh電路623。第二選擇器722可透過運算碼控制,如由抑揚音符號標記(^)所指示,以做出所述之選擇。
第三選擇器723可在與tanh電路623及第二指數減法電路627之輸出連接的輸入(I0, I1)之間進行選擇,並提供輸出到選擇器640。第三選擇器723可透過運算碼控制,如由抑揚音符號標記(^)所指示,以做出所述之選擇。
當第二選擇器722選擇與輸入暫存器601之輸出連接的輸入(例如,I0),以及第三選擇器723選擇與tanh電路623之輸出連接的輸入(例如,I0),可組態單元中的第二電路(例如,620)是可組態以在其輸出處提供值tanh(X)。
當第二選擇器722選擇與第一指數減法電路621之輸出連接的輸入(例如,I1),以及第三選擇器723選擇與第二指數減法電路627之輸出連接的輸入(例如,I1),可組態單元中的第二電路(例如,620)是可組態以在其輸出處提供值(tanh(X/2)+1)/2。
選擇器640可由組態位元控制,該組態位元包括由抑揚音符號標記(^)所指示之運算碼以回應於比較器630之線635上的輸出抑或是獨立於比較器630之線635上的輸出,來將輸出提供到輸出暫存器645。
取決於運算碼,選擇器640可獨立於比較器630之輸出,選擇與第一電路610之輸出連接的輸入,以將值eX
提供在其輸出處;以及獨立於比較器之輸出,選擇與第二電路620之輸出連接的輸入,以提供值tanh(X)。
例如,用於選擇器640之2-bit運算碼可具有「01」之值來指示提供表示sig(X)之輸出,以及「02」之值來指示選擇提供表示tanh(X)之輸出,以及「03」之值來指示在其輸出處提供值eX
。
圖8是描繪功能單元中計算S型函數之方法的流程圖。流程圖從810開始,將輸入變數X儲存到輸入暫存器(例如,圖6之601)中。輸入變數可以以浮點格式來表示,諸如BF16與FP32。
輸入暫存器輸出是耦接到組合式邏輯880,其使用並聯電路中組合式階段820、830、840來執行函數。在函數820中,產生值(tanh(X/2)+1)/2)(例如,圖6之620)。在函數830中,產生值eX
(例如,圖6之610)。在函數840中,基於X與常數C之間的比較,在比較器之輸出產生訊號(例如,圖6之630)。
在函數850中,取決於函數840之訊號輸出,在(tanh(X/2)+1)/2)與eX
之間做出選擇。接著在函數860,將表示sig(X)之所選值儲存在輸出暫存器中。
可高速運作組合式邏輯880,使得在賦能以對儲存在輸入暫存器中的輸入變數執行時,在單元時鐘之一時鐘週期中可接收輸出且該輸出可用以儲存在輸出暫存器中。
本文中用以提供S型函數的電路之實作可以是極度面積與功率高效的,滿足單元GHz時鐘速度或更高之規範,並供應小於1 V之電壓。
雖然參照上文詳細說明實例和較佳實施例來揭示本發明,但應瞭解該等實例目的旨在是說明性而非限制性的。熟習該技藝者將能思及對特徵之調整與結合,其將會在本發明之精神與以下申請專利範圍之範疇內。申請專利範圍:
110:可重組態資料處理器
115:匯流排系統
120:主機
125:線
130:I/O介面
140:記憶體
145:線
150:I/O介面
170:時脈產生器
175:時鐘線
190:陣列之可組態單元
195:組態載入/卸載控制器
205:I/O介面
211:頂層級交換器
212:頂層級交換器
213:頂層級交換器
214:頂層級交換器
215:頂層級交換器
216:頂層級交換器
L11:鏈接
L12:鏈接
L13:鏈接
L14:鏈接
L21:鏈接
L22:鏈接
1:MAGCU
2:MAGCU
12:AGCU
13:AGCU
14:AGCU
22:AGCU
23:AGCU
24:AGCU
Tile1:片
Tile2:片
300:陣列之可組態單元
301:組態載入/卸載控制器
311:交換單元
312:交換單元
320:鏈接
321:互連
331:鏈接
341:PMU
342:PCU
343:S型函數電路
400:可組態單元
410:輸入組態資料
420:組態資料儲存
421:線
422:線
430:輸出組態資料
440:單元組態載入邏輯
450:純量FIFO
460:向量FIFO區塊
470:控制區塊
480:區塊
481:功能單元
482:功能單元
483:功能單元
484:功能單元
485:功能單元
486:功能單元
487:可組態模組
491:菊花鏈拓撲完成匯流排
492:菊花鏈拓撲指令匯流排
493:菊花鏈拓撲邏輯
600:功能單元
601:輸入暫存器
605:線
610:第一電路
615:線
620:第二電路
621:第一減法電路
622:線
623:tanh電路
624:線
625:加法器
626:線
627:第二指數減法電路
628:線
630:比較器
635:線
640:選擇器
645:輸出暫存器
650:輸出暫存器
722:第二選擇器
723:第三選擇器
810:步驟
820:步驟
830:步驟
840:步驟
850:步驟
860:步驟
880:步驟
[圖1]是描繪包括主機、記憶體、以及可重組態資料處理器的系統之系統圖式。
[圖2]是頂層級網路與CGRA(粗粒可重組態架構)組件之簡化方塊圖。
[圖3]是一片(tile)與在圖2組態中可用的陣列層級網路之簡略圖,其中該可組態單元是陣列層級網路上的節點並包括S型函數電路。
[圖3A]描繪與陣列層級網路中的元件連接之例示性交換單元。
[圖4]是描繪例示性可組態單元之方塊圖。
[圖5A]描繪可在硬體中實作之S型函數,用於在機器學習中的激活函數。
[圖5B]描繪可在硬體中實作之雙曲正切tanh函數,用於在機器學習中的激活函數。
[圖6]描繪用於在陣列之可組態單元中的可組態單元裡的功能單元中,使用tanh函數與指數函數來實作S型函數之例示性電路。
[圖7]描繪替代實施例,其中可組態單元中功能單元裡的第二電路是可組態以在其輸出上提供值(tanh(X/2)+1)/2或值tanh(X)。
[圖8]是描繪用於在資料處理器之功能單元中計算S型函數之方法的流程圖。
110:可重組態資料處理器
115:匯流排系統
120:主機
125:線
130:I/O介面
140:記憶體
145:線
150:I/O介面
170:時脈產生器
175:時鐘線
190:陣列之可組態單元
195:組態載入/卸載控制器
Claims (22)
- 一種功能單元,其包含:輸入暫存器,用以儲存變數X;第一電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生值eX;第二電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生值(tanh(X/2)+1)/2之輸出;比較器,具有與該輸入暫存器連接的輸入以及具有輸出,用以基於X與常數之間的比較以在其輸出產生一條線;以及選擇器,以在該第一電路與該第二電路之該輸出之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出,所述選擇包括當X小於該常數時選擇該第一電路之輸出,且反之用以選擇該第二電路之輸出。
- 如請求項1所述之功能單元,其中該常數是量級大於4之負數。
- 如請求項1所述之功能單元,其中該變數X是以浮點格式表示,以及該選擇器之該輸出是以浮點格式表示。
- 如請求項1所述之功能單元,其中變數X是由正負號位元、有效位數與指數表示,以及該第二電路包括組合式邏輯,該組合式邏輯包括可配置為從變數X的指數減去1以產生值X/2的階段,產生值tanh(X/2)的階段,產生tanh(X/2)+1的階段,以及從tanh(X/2)+1的指數減去1 以產生該值(tanh(X/2)+1)/2的階段。
- 如請求項1所述之功能單元,其包括輸出暫存器,該輸出暫存器與該選擇器之該輸出連接,以及其中該第一與第二電路是組合式電路,以及其中該輸入暫存器與輸出暫存器是由單元時鐘進行控制。
- 如請求項1所述之功能單元,其包括輸出暫存器,該輸出暫存器與該選擇器之該輸出連接,以及其中該輸入暫存器與輸出暫存器是由單元時鐘進行控制,以及在該單元時鐘之一週期內,由該輸入暫存器中的該輸入X所產生之表示該值sigmoid(X)之該輸出,被儲存在該輸出暫存器中。
- 如請求項1所述之功能單元,其中該第二電路可組態以在其輸出提供該值(tanh(X/2)+1)/2或該值tanh(X)。
- 如請求項7所述之功能單元,其中該選擇器可組態以在該第一電路與該第二電路之輸出之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出;以獨立於該比較器之該輸出,選擇該第一電路之該輸出以在其輸出提供該值eX;以及以獨立於該比較器之該輸出,選擇該第二電路之該輸出以提供該值tanh(X)。
- 一種可重組態資料處理器,其包含:一陣列之可組態單元;以及匯流排系統,其與該陣列之可組態單元連接並以處理器時鐘率通訊資料,其中該陣列之可組態單元(CGRA)中 的可組態單元(PCU)包括功能單元,該功能單元包括:輸入暫存器,用以儲存變數X;第一電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生值eX;第二電路,具有與該輸入暫存器連接的輸入以及具有輸出,用以在其輸出產生值(tanh(X/2)+1)/2之輸出;比較器,具有與該輸入暫存器連接的輸入以及具有輸出,用以基於X與常數之間的比較以在其輸出產生一條線;以及選擇器,以在該第一電路與該第二電路之該輸出之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出,所述選擇包括當X小於該常數時選擇該第一電路之輸出,且反之用以選擇該第二電路之輸出。
- 如請求項9所述之資料處理器,其中該常數是量級大於4之負數。
- 如請求項9所述之資料處理器,其中該變數X是以浮點格式表示,以及該選擇器之該輸出是以浮點格式表示。
- 如請求項9所述之資料處理器,其中變數X是由正負號位元、有效位數與指數表示,以及該第二電路包括組合式邏輯,該組合式邏輯包括可配置為從變數X的指數減去1以產生值X/2的階段,產生值tanh(X/2)的階段,產生tanh(X/2)+1的組合式邏輯階段,以及從tanh(X/2)+1的指數減去1以產生該值(tanh(X/2)+1)/2的階段。
- 如請求項9所述之資料處理器,其包括輸出暫存器,該輸出暫存器與該選擇器之該輸出連接,以及其中該輸入暫存器與輸出暫存器是由單元時鐘進行控制。
- 如請求項9所述之資料處理器,其包括輸出暫存器,該輸出暫存器與該選擇器之該輸出連接,以及其中該輸入暫存器與輸出暫存器是由單元時鐘進行控制,以及在該單元時鐘之一週期內,由該輸入暫存器中的該輸入X所產生之表示值sigmoid(X)之該輸出,被儲存在該輸出暫存器中。
- 如請求項9所述之資料處理器,其中該第二電路可組態以在其輸出提供該值(tanh(X/2)+1)/2或該值tanh(X)。
- 如請求項15所述之資料處理器,其中該選擇器可組態以在與該第一電路與該第二電路之輸出連接的輸入之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之輸出;以獨立於該比較器之該輸出,選擇與該第一電路之該輸出連接的該輸入以在其輸出提供該值eX;以及以獨立於該比較器之該輸出,選擇與該第二電路之該輸出連接的該輸入以提供該值tanh(X)。
- 一種用於在資料處理器之功能單元中計算S型函數之方法,其包含:在輸入暫存器中儲存變數X;在第一電路輸出產生值eX; 在第二電路輸出產生值(tanh(X/2)+1)/2;基於X與常數之間的比較,在比較器之輸出產生訊號;在該第一電路與該第二電路之該輸出之間進行選擇,以回應該比較器之該輸出,並提供代表值sigmoid(X)之結果,所述選擇包括當X小於該常數時選擇該第一電路之輸出,且反之用以選擇該第二電路之輸出。
- 如請求項17所述之方法,其中該常數是量級大於4之負數。
- 如請求項17所述之方法,其中該變數X是以浮點格式表示,以及該結果是以浮點格式表示。
- 如請求項17所述之方法,其中變數X是由正負號位元、有效位數與指數表示,以及該第二電路包括組合式邏輯以從變數X的指數減去1以產生值X/2,以產生值tanh(X/2),以加上1以產生tanh(X/2)+1,以及以從tanh(X/2)+1的指數減去1以產生該值(tanh(X/2)+1)/2。
- 如請求項17所述之方法,其包括使用輸出暫存器將該選擇器之該輸出登錄,該輸出暫存器與該選擇器之該輸出連接,以及其中該輸入暫存器與輸出暫存器是由單元時鐘進行控制。
- 如請求項17所述之方法,其包括使用輸出暫存器將該結果登錄,該輸出暫存器與該選擇器之該輸出連接,以及其中該輸入暫存器與輸出暫存器是由單元時鐘進行控制,以及在該單元時鐘之一週期內,由該輸入暫 存器中的該輸入X所產生之表示值sigmoid(X)之該輸出,被儲存在該輸出暫存器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/560,057 | 2019-09-04 | ||
US16/560,057 US11327923B2 (en) | 2019-09-04 | 2019-09-04 | Sigmoid function in hardware and a reconfigurable data processor including same |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202115593A TW202115593A (zh) | 2021-04-16 |
TWI755043B true TWI755043B (zh) | 2022-02-11 |
Family
ID=72561970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109129892A TWI755043B (zh) | 2019-09-04 | 2020-09-01 | 硬體中s型函數及包括其之可重組態資料處理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11327923B2 (zh) |
TW (1) | TWI755043B (zh) |
WO (1) | WO2021046274A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11327923B2 (en) | 2019-09-04 | 2022-05-10 | SambaNova Systems, Inc. | Sigmoid function in hardware and a reconfigurable data processor including same |
US11327713B2 (en) | 2019-10-01 | 2022-05-10 | SambaNova Systems, Inc. | Computation units for functions based on lookup tables |
US11327717B2 (en) | 2019-11-19 | 2022-05-10 | SambaNova Systems, Inc. | Look-up table with input offsetting |
US11328038B2 (en) | 2019-11-25 | 2022-05-10 | SambaNova Systems, Inc. | Computational units for batch normalization |
US11836629B2 (en) | 2020-01-15 | 2023-12-05 | SambaNova Systems, Inc. | Computationally efficient softmax loss gradient backpropagation |
US11163715B1 (en) * | 2020-05-04 | 2021-11-02 | International Business Machines Corporation | CGRA accelerator for weather/climate dynamics simulation |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
US11782729B2 (en) | 2020-08-18 | 2023-10-10 | SambaNova Systems, Inc. | Runtime patching of configuration files |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
TW201807621A (zh) * | 2016-08-22 | 2018-03-01 | 耐能有限公司 | 人造神經網路、人造神經元及其控制方法 |
US20190042924A1 (en) * | 2017-07-14 | 2019-02-07 | Intel Corporation | Hyperbolic functions for machine learning acceleration |
CN109816105A (zh) * | 2019-01-16 | 2019-05-28 | 北京时代民芯科技有限公司 | 一种可配置的神经网络激活函数实现装置 |
EP3531349A1 (en) * | 2018-02-27 | 2019-08-28 | STMicroelectronics International N.V. | Acceleration unit for a deep learning engine |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5365465A (en) | 1991-12-26 | 1994-11-15 | Texas Instruments Incorporated | Floating point to logarithm converter |
JPH07248841A (ja) | 1994-03-09 | 1995-09-26 | Mitsubishi Electric Corp | 非線形関数発生装置およびフォーマット変換装置 |
US6256653B1 (en) | 1997-10-23 | 2001-07-03 | Advanced Micro Devices, Inc. | Multi-function bipartite look-up table |
US20030068097A1 (en) | 2001-06-15 | 2003-04-10 | Massachusetts Institute Of Technology | Adaptive mean estimation and normalization of data |
US7015921B1 (en) | 2001-12-31 | 2006-03-21 | Apple Computer, Inc. | Method and apparatus for memory access |
JP3845636B2 (ja) | 2004-01-21 | 2006-11-15 | 株式会社東芝 | 関数近似値の演算器 |
US7317329B2 (en) | 2005-10-11 | 2008-01-08 | Aten International Co., Ltd | Lookup table circuit |
JP4254785B2 (ja) | 2006-02-02 | 2009-04-15 | コニカミノルタビジネステクノロジーズ株式会社 | インターネットファクシミリ装置及び通信処理プログラム |
US9223751B2 (en) | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
GB2471067B (en) | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
TW201205316A (en) | 2010-07-28 | 2012-02-01 | Ind Tech Res Inst | Method for establishing multiple look-up tables and data acquisition method by using multiple look-up tables |
US9104479B2 (en) | 2011-12-07 | 2015-08-11 | Arm Limited | Apparatus and method for rounding a floating-point value to an integral floating-point value |
CN103959192B (zh) | 2011-12-21 | 2017-11-21 | 英特尔公司 | 用于估算超越函数的数学电路 |
US9104473B2 (en) | 2012-03-30 | 2015-08-11 | Altera Corporation | Conversion and compression of floating-point and integer data |
US9411756B2 (en) | 2012-06-18 | 2016-08-09 | Blackberry Limited | Function approximation circuitry |
US8943118B2 (en) | 2012-07-31 | 2015-01-27 | Arm Limited | Data processing apparatus and method for reducing the size of a lookup table |
US10575005B2 (en) | 2015-07-22 | 2020-02-25 | Dolby Laboratories Licensing Corporation | Video coding and delivery with both spatial and dynamic range scalability |
US20170054449A1 (en) | 2015-08-19 | 2017-02-23 | Texas Instruments Incorporated | Method and System for Compression of Radar Signals |
CN105354006B (zh) | 2015-11-27 | 2017-11-21 | 中国科学院计算技术研究所 | 一种非线性函数的快速运算装置及其方法 |
TWI557641B (zh) | 2015-12-29 | 2016-11-11 | 瑞昱半導體股份有限公司 | 除法運算裝置及其運算方法 |
US20170322774A1 (en) | 2016-05-07 | 2017-11-09 | Chengdu Haicun Ip Technology Llc | Configurable Processor with Backside Look-Up Table |
US10091533B2 (en) | 2016-02-18 | 2018-10-02 | Cisco Technology, Inc. | Generalized filter for removing video compression artifacts |
US20190114139A1 (en) | 2016-05-07 | 2019-04-18 | HangZhou HaiCun Information Technology Co., Ltd. | Configurable Processor with Backside Look-Up Table |
DE102016216944A1 (de) | 2016-09-07 | 2018-03-08 | Robert Bosch Gmbh | Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit vereinfachter Aktivierungsfunktion |
JP2018092294A (ja) | 2016-12-01 | 2018-06-14 | ソニーセミコンダクタソリューションズ株式会社 | 演算装置、演算方法及びコンピュータプログラム |
US10528321B2 (en) | 2016-12-07 | 2020-01-07 | Microsoft Technology Licensing, Llc | Block floating point for neural network implementations |
US10373049B2 (en) | 2016-12-20 | 2019-08-06 | Google Llc | Generating an output for a neural network output layer |
US10949766B2 (en) * | 2017-10-15 | 2021-03-16 | Gsi Technology Inc. | Precise exponent and exact softmax computation |
GB2568087B (en) | 2017-11-03 | 2022-07-20 | Imagination Tech Ltd | Activation functions for deep neural networks |
US10977001B2 (en) | 2018-02-05 | 2021-04-13 | Mediatek Inc. | Asymmetric quantization of multiple-and-accumulate operations in deep learning processing |
US20190279075A1 (en) | 2018-03-09 | 2019-09-12 | Nvidia Corporation | Multi-modal image translation using neural networks |
US11315570B2 (en) | 2018-05-02 | 2022-04-26 | Facebook Technologies, Llc | Machine learning-based speech-to-text transcription cloud intermediary |
US11775805B2 (en) * | 2018-06-29 | 2023-10-03 | Intel Coroporation | Deep neural network architecture using piecewise linear approximation |
US10853067B2 (en) | 2018-09-27 | 2020-12-01 | Intel Corporation | Computer processor for higher precision computations using a mixed-precision decomposition of operations |
US11669747B2 (en) * | 2018-10-30 | 2023-06-06 | Qualcomm Incorporated | Constraining function approximation hardware integrated with fixed-point to floating-point conversion |
US10831507B2 (en) | 2018-11-21 | 2020-11-10 | SambaNova Systems, Inc. | Configuration load of a reconfigurable data processor |
US11188497B2 (en) | 2018-11-21 | 2021-11-30 | SambaNova Systems, Inc. | Configuration unload of a reconfigurable data processor |
US10698853B1 (en) | 2019-01-03 | 2020-06-30 | SambaNova Systems, Inc. | Virtualization of a reconfigurable data processor |
US11562201B2 (en) | 2019-02-25 | 2023-01-24 | Microsoft Technology Licensing, Llc | Neural network layer processing with normalization and transformation of data |
US11106430B1 (en) | 2019-05-16 | 2021-08-31 | Facebook, Inc. | Circuit and method for calculating non-linear functions of floating-point numbers |
US11347511B2 (en) | 2019-05-20 | 2022-05-31 | Arm Limited | Floating-point scaling operation |
US11847568B2 (en) | 2019-07-30 | 2023-12-19 | Perceive Corporation | Quantizing neural networks using shifting and scaling |
TWI698759B (zh) | 2019-08-30 | 2020-07-11 | 創鑫智慧股份有限公司 | 曲線函數裝置及其操作方法 |
US11604647B2 (en) | 2019-09-03 | 2023-03-14 | International Business Machines Corporation | Mixed precision capable hardware for tuning a machine learning model |
US11327923B2 (en) | 2019-09-04 | 2022-05-10 | SambaNova Systems, Inc. | Sigmoid function in hardware and a reconfigurable data processor including same |
US11494163B2 (en) | 2019-09-06 | 2022-11-08 | Intel Corporation | Conversion hardware mechanism |
US11327713B2 (en) | 2019-10-01 | 2022-05-10 | SambaNova Systems, Inc. | Computation units for functions based on lookup tables |
US11328038B2 (en) | 2019-11-25 | 2022-05-10 | SambaNova Systems, Inc. | Computational units for batch normalization |
US11150872B2 (en) | 2019-12-17 | 2021-10-19 | SambaNova Systems, Inc. | Computational units for element approximation |
US11836629B2 (en) | 2020-01-15 | 2023-12-05 | SambaNova Systems, Inc. | Computationally efficient softmax loss gradient backpropagation |
-
2019
- 2019-09-04 US US16/560,057 patent/US11327923B2/en active Active
-
2020
- 2020-09-01 TW TW109129892A patent/TWI755043B/zh active
- 2020-09-03 WO PCT/US2020/049285 patent/WO2021046274A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704916A (zh) * | 2016-08-12 | 2018-02-16 | 北京深鉴科技有限公司 | 一种基于fpga实现rnn神经网络的硬件加速器及方法 |
TW201807621A (zh) * | 2016-08-22 | 2018-03-01 | 耐能有限公司 | 人造神經網路、人造神經元及其控制方法 |
US20190042924A1 (en) * | 2017-07-14 | 2019-02-07 | Intel Corporation | Hyperbolic functions for machine learning acceleration |
EP3531349A1 (en) * | 2018-02-27 | 2019-08-28 | STMicroelectronics International N.V. | Acceleration unit for a deep learning engine |
CN109816105A (zh) * | 2019-01-16 | 2019-05-28 | 北京时代民芯科技有限公司 | 一种可配置的神经网络激活函数实现装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021046274A1 (en) | 2021-03-11 |
TW202115593A (zh) | 2021-04-16 |
US20210064568A1 (en) | 2021-03-04 |
US11327923B2 (en) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI755043B (zh) | 硬體中s型函數及包括其之可重組態資料處理器 | |
TWI764306B (zh) | 基於查詢表的函數的計算單元 | |
US11150872B2 (en) | Computational units for element approximation | |
EP3552090A1 (en) | Block floating point for neural network implementations | |
US11328038B2 (en) | Computational units for batch normalization | |
US20210216873A1 (en) | Computationally Efficient Softmax Loss Gradient Backpropagation | |
US20220197712A1 (en) | Inter-node execution of configuration files on reconfigurable processors using smart network interface controller (smartnic) buffers | |
TWI785416B (zh) | 用於函數f(I)的計算單元、用於計算函數f(I)的方法及可重組態資料處理器 | |
US7734896B2 (en) | Enhanced processor element structure in a reconfigurable integrated circuit device | |
JP2008537268A (ja) | 可変精度相互接続を具えたデータ処理エレメントの配列 | |
US11750195B2 (en) | Compute dataflow architecture | |
TWI802332B (zh) | 可重組態處理器的資源分配 | |
CN118043796A (zh) | 存储器计算系统中的基于片块的结果缓冲 | |
US11016822B1 (en) | Cascade streaming between data processing engines in an array | |
US11250105B2 (en) | Computationally efficient general matrix-matrix multiplication (GeMM) | |
TW202240394A (zh) | 對可重配置處理器之資料流功能卸載 | |
TWI792773B (zh) | 用於可重配置處理器即服務(RPaaS)的節點內基於緩衝器的串流 | |
CN115509988A (zh) | 基于异步机制的Lamoeba芯片架构与运行时重构机制方法 | |
CN115145635A (zh) | 用于并行正弦和余弦确定的硬件 | |
JP2008204356A (ja) | リコンフィギャラブル回路 |