TW202219839A - 神經網絡處理單元及系統 - Google Patents
神經網絡處理單元及系統 Download PDFInfo
- Publication number
- TW202219839A TW202219839A TW110142113A TW110142113A TW202219839A TW 202219839 A TW202219839 A TW 202219839A TW 110142113 A TW110142113 A TW 110142113A TW 110142113 A TW110142113 A TW 110142113A TW 202219839 A TW202219839 A TW 202219839A
- Authority
- TW
- Taiwan
- Prior art keywords
- point
- neural network
- processing unit
- fixed
- floating
- Prior art date
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
一種神經網絡(NN)處理單元包括運算電路,用於以第一數值表示和第二數值表示中的其中一種方式執行神經網絡的給定層的張量運算。神經網絡處理單元還包括轉換電路,其耦接運算電路的輸入端與輸出端中的至少一個,以在第一數值表示與第二數值表示之間進行轉換。第一數值表示為定點數表示和浮點數表示中的其中一種,第二數值表示為定點數表示和浮點數表示中的另一種。
Description
本發明實施例通常涉及一種神經網絡處理單元和由該神經網絡處理單元執行的深度神經網絡運算(operation)。
深度神經網絡是具有輸入層、輸出層以及位於輸入層和輸出層之間的一個或多個隱藏層(hidden layer)的神經網絡。每層對一個或多個張量(tensor)執行運算。張量是一個數學對象,它可以是零維(又名標量,scaler)、一維(又名向量,vector)、二維(又名矩陣,matrix)或多維。各層執行的運算是數值計算,包括但不限於:卷積、反捲積、全連接運算、歸一化、激活、池化、縮放(resizing)、逐元素算術(element-wise arithmetic)、串聯、切片等。一些層將過濾器權值應用到張量,例如,在卷積運算中。
張量在神經網絡中逐層移動。通常,由層產生的張量存儲在本地記憶體中,並由下一層從本地記憶體中獲取(retrieve)作為輸入。張量的存儲和獲取以及任何適用的過濾器權值可能會使用記憶體總線上的大量資料帶寬。
神經網絡計算是計算密集型和帶寬要求高的計算。現代計算機通常在數值計算中使用具有大位寬(例如,32位)的浮點數來實現高精度。然而,高精度是以高功耗和高資料帶寬為代價的。在神經網絡計算中平衡低功耗和低資料帶寬,同時保持可接受的精度的這種需求是一個挑戰。
以下發明內容僅是說明性的,而無意於以任何方式進行限制。即,提供以下概述來介紹本文描述的新穎和非顯而易見的技術的概念,重點,益處和優點。選擇的實施方式在下面的詳細描述中進一步描述。因此,以下發明內容既不旨在標識所要求保護的主題的必要特徵,也不旨在用於確定所要求保護的主題的範圍。
在一實施例中,神經網絡(NN)處理單元包括運算電路和轉換電路,運算電路用於以第一數值表示和第二數值表示中的其中一者執行神經網絡的給定層的張量運算;以及,轉換電路耦接該運算電路的輸入端和輸出端中的至少一者,以在該第一數值表示和該第二數值表示之間進行轉換。其中,該第一數值表示為定點數表示和浮點數表示中的其中一者,該第二數值表示為該定點數表示和該浮點數表示中的另一者。
在一些實施例中,根據該神經網絡的該給定層的操作參數,該轉換電路被配置為耦接到該運算電路的該輸入端和該輸出端中的一者或兩者。
在一些實施例中,根據該神經網絡的該給定層的操作參數,該轉換電路被配置為:針對輸入轉換和輸出轉換中的一者或兩者是被啟用的或被旁路的。
在一些實施例中,該神經網絡處理單元用於對該給定層的第一輸入運算對象和第二輸入運算對象執行層內混合精度計算,該第一輸入運算對象和該第二輸入運算對象具有不同的數值表示。
在一些實施例中,該神經網絡處理單元用於執行層間混合精度計算,在該層間混合精度計算中,該神經網絡的第一層中的計算是以該第一數值表示的方式進行的,而該神經網絡的第二層中的計算是以該第二數值表示的方式進行的。
在一些實施例中,通過一次對一個層進行操作,該神經網絡處理單元在該神經網絡的多個層之間是被分時共享的。
在一些實施例中,該神經網絡處理單元還包括:緩衝記憶體,用於給該轉換電路緩沖未被轉換的輸入,以在該神經網絡的該給定層的操作期間確定用於在該第一數值表示和該第二數值表示之間進行轉換的比例因子。
在一些實施例中,該神經網絡處理單元還包括:緩衝器,耦接在該轉換電路與該運算電路之間。
在一些實施例中,該運算電路包括定點電路和浮點電路,該定點電路以定點方式計算該神經網絡的一層,以及,該浮點電路以浮點方式計算該神經網絡的另一層。
在一些實施例中,該神經網絡處理單元耦接到一個或多個處理器,該一個或多個處理器用於以該第一數值表示的方式執行該神經網絡的一個或多個層的操作。
在一些實施例中,該神經網絡處理單元包括:多個該運算電路,每個運算電路包括一個或多個定點電路和/或浮點電路,其中,不同的運算電路用於計算該神經網絡的不同層;以及,一個或多個該轉換電路,耦接該運算電路。
在一些實施例中,該運算電路進一步包括以下一項或多項:加法器、減法器、乘法器、函數評估器和乘法累加(MAC)電路。
在另一實施例中,一種神經網絡(NN)處理單元包括運算電路和轉換電路。該神經網絡處理單元用於:根據神經網絡的給定層的操作參數,選擇啟用或旁路用於對輸入運算對象進行輸入轉換的轉換電路,其中,該輸入轉換在被啟用時將該輸入運算對象第一數值表示轉換為第二數值表示;將按照該第二數值表示的該輸入運算對象執行張量運算,以產生按照該第二數值表示的輸出運算對象;以及,根據該操作參數選擇啟用或旁路用於對輸出運算對象進行輸出轉換的轉換電路,其中,該輸出轉換在被啟用時將該輸出運算對象從該第二數值表示轉換為該第一數值表示,其中,該第一數值表示為定點數表示和浮點數表示中的其中一者,該第二數值表示為該定點數表示和該浮點數表示中的另一者。
在一些實施例中,該神經網絡處理單元被操作為:對於該神經網絡的另一給定層,對具有該第一數值表示方式的另一輸入運算對象執行額外的張量運算,以產生具有該第一數值表示方式的另一輸出運算對象。
在一些實施例中,通過一次對一個層進行操作,該神經網絡處理單元在該神經網絡的多個層之間是被分時共享的。
在又一實施例中,一種神經網絡處理系統包括一個或多個浮點電路、一個或多個定點的電路以及一個或多個轉換電路。該一個或多個浮點電路用於給神經網絡的一個層或多個層執行浮點張量運算;該一個或多個定點電路用於給神經網絡的其它層或其它多個層執行定點張量運算;以及,該一個或多個轉換電路耦接到該浮點電路和該定點電路中的至少一者,用於在浮點數表示和定點數表示之間進行轉換。
在一些實施例中,該一個或多個浮點電路和該一個或多個定點電路是根據預定順序彼此串聯耦接的。
在一些實施例中,該一個或多個浮點電路之一者的輸出端和該一個或多個定點電路之一者的輸出端並聯耦接到多工器。
在一些實施例中,該一個或多個轉換電路包括浮點至定點轉換器,該浮點至定點轉換器耦接該定點電路的輸入端或耦接該浮點電路的輸出端。
在一些實施例中,該一個或多個轉換電路包括定點至浮點轉換器,該定點至浮點轉換器耦接該浮點電路的輸入端或耦接該定點電路的輸出端。
在結合附圖閱讀特定實施例的以下描述後,其它方面和特徵對於本領域普通技術人員將變得顯而易見。本發明內容是通過示例的方式提供的,並非旨在限定本發明。在下面的詳細描述中描述其它實施例和優點。本發明由申請專利範圍限定。
以下描述為本發明實施的較佳實施例。以下實施例僅用來例舉闡釋本發明的技術特徵,並非用來限制本發明的範疇。在通篇說明書及申請專利範圍當中使用了某些詞彙來指稱特定的組件。所屬技術領域中具有通常知識者應可理解,製造商可能會用不同的名詞來稱呼同樣的組件。本說明書及申請專利範圍並不以名稱的差異來作為區別組件的方式,而係以組件在功能上的差異來作為區別的基準。本發明的範圍應當參考後附的申請專利範圍來確定。在以下描述和申請專利範圍當中所提及的術語“包含”和“包括”為開放式用語,故應解釋成“包含,但不限定於…”的意思。此外,術語“耦接”意指間接或直接的電氣連接。因此,若文中描述一個裝置耦接至另一裝置,則代表該裝置可直接電氣連接於該另一裝置,或者透過其它裝置或連接手段間接地電氣連接至該另一裝置。文中所用術語“基本”或“大致”係指在可接受的範圍內,所屬技術領域中具有通常知識者能夠解決所要解決的技術問題,基本達到所要達到的技術效果。舉例而言,“大致等於”係指在不影響結果正確性時,所屬技術領域中具有通常知識者能夠接受的與“完全等於”有一定誤差的方式。
本發明實施例提供一種神經網絡(NN)處理單元,其包括用於多層神經網絡的層內混合精度(hybrid-precision)和層間混合精度(mixed-precision)計算的專用電路。在此使用的術語“層內混合精度計算”和“層間混合精度計算”是指對不同的數值表示方式下的數值進行的神經網絡計算,例如浮點數(floating-point number)和定點數(fixed-point number)。在混合精度計算中,一個層可以接收多個輸入運算對象(input operands),其包括浮點數和定點數。對該輸入運算對象執行的計算要麼是浮點運算要麼是定點運算;因此,對該輸入運算對象的一個或多個執行轉換,以使得所有的輸入運算對象具有相同的數值表示(number representation)。輸入運算對象可以是輸入激活(input activation)、過濾器權值(filter weight)、特徵圖(feature map)等。在層間混合精度計算中,神經網絡中的一層或多層以浮點運算方式進行計算,另一層或另一多層以定點運算方式進行計算。每一層的數值表示的選擇會對計算精度、功耗和資料帶寬產生重大影響。
由NN處理單元執行的神經網絡運算被稱為張量運算。NN處理單元根據DNN(Deep Neural Network,深度神經網絡)模型執行張量運算。DNN模型包括多個操作層(operation layer),也稱為OP層或層。對於每一層,NN處理單元被操作參數(operating parameter)配置為在不同的數值表示之間執行轉換以及在數值表示的方式下執行計算。NN處理單元提供專用的硬體處理路徑,以執行張量運算并在不同的數值表示之間執行轉換。對浮點數和定點數的硬體支援使得各種人工智能(artificial intelligence,AI)應用程序能夠在邊緣設備上運行。
定點算法廣泛用於延遲要求超過準確性的應用中。可以通過位寬(bit-width)和小數點(radix point)的位置來定義定點數。與浮點算法相比,定點算法易於在硬體中實現並且計算效率更高,但精度較低。這裡使用的術語“定點表示(fixed-point representation)”是指對於整數部分和小數部分具有固定位數的數值表示。定點表示(亦稱為定點數表示)可選地包括符號位。
另一方面,浮點運算廣泛用於科學計算或主要關注精度的應用中。這裡使用的術語“浮點表示”是指具有尾數(mantissa,也稱為“係數(coefficient)”)和指數(exponent)的數值表示。浮點表示(亦稱為浮點數表示)可選地包括符號位。浮點表示的示例包括但不限於IEEE 754標準格式,例如,16位、32位、64位浮點數,或某些處理器支援的其它浮點格式。
第1圖是根據一實施例示出的可操作為執行張量運算的系統100的框圖。系統100包括處理硬體(processing hardware)110,處理硬體110進一步包括一個或多個處理器130,例如,中央處理單元(central processing unit,CPU)、圖形處理單元(graphics processing unit,GPU)、數位處理單元(digital processing unit,DSP)、現場可編程門陣列(field-programmable gate array,FPGA)和其它通用用途處理器和/或專用處理器。處理器130耦接到神經網絡(NN)處理單元150。NN處理單元150專門用於神經網絡運算;例如,張量運算。張量運算的例子包括但不限於:卷積(convolution)、反捲積(deconvolution)、全連接運算(fully-connected operation)、歸一化(normalization)、激活(activation)、池化(pooling)、縮放(resizing)、逐元素算術(element-wise arithmetic)、串聯(concatenation)、切片(slicing)等。
NN處理單元150至少包括運算(operation,OP)電路152,其至少耦接到轉換電路154。運算(OP)電路152執行數學計算,包括但不限於以下一項或多項:加、減、乘、乘法累加(multiply-and-add,MAC)、函數F(x)評估以及上述張量運算的任意項。運算(OP)電路152可以包括以下功能單元中的一個或多個:加法器、減法器、乘法器、函數評估器(function evaluator)和乘法累加(MAC)電路。函數評估器的非限制性示例包括tanh(X)、sigmoid(X)、ReLu(X)、GeLU(X)等。運算(OP)電路152可以包括浮點電路或定點電路。或者,運算(OP)電路152可包括浮點電路和定點電路這兩者。浮點電路包括一個或多個浮點功能單元(floating-point functional unit),用於以浮點形式實現上述張量運算。定點電路包括一個或多個定點功能單元(fixed-point functional unit),用於以定點形式實現上述張量運算。在NN處理單元150包括多個運算(OP)電路152的實施例中,不同的運算(OP)電路152可以包括用於不同的數值表示的硬體;例如,一些運算(OP)電路152可以包括浮點電路,而另一些運算(OP)電路152可以包括定點電路。
轉換電路154包括用於在浮點數(floating-point number)和定點數(fixed-point number)之間轉換的專用硬體。轉換電路154可以是浮點至定點轉換器(floating-point to fixed-point converter)、定點至浮點轉換器(fixed-point to floating-point converter)、包括浮點至定點轉換器和定點至浮點轉換器的組合轉換器(combined converter),或者,可配置為從浮點轉換為定點或者從定點轉換為浮點的轉換器。轉換電路154可以包括轉換硬體,例如但不限於,加法器、乘法器、移位器(shifter)等中的一個或多個。轉換硬體還可以包括檢測器(detector)或計數器(counter),用於在浮點數的情況下處理前導的0或1。轉換電路154可進一步包括多工器,該多工器具有轉換路徑(conversion path)和旁路路徑(bypass path),其中,轉換路徑連接到轉換硬體(可以理解地,運算對象經由轉換路徑進行轉換),旁路路徑允許未轉換的運算對象繞過(bypass,亦可稱為旁路)轉換(可以理解地,運算對象經由旁路路徑不進行轉換)。可以將選擇信號提供至多工器,以針對每個層選擇啟用或繞過(bypass)輸入轉換和/或輸出轉換。在NN處理單元150包括多個轉換電路154的實施例中,一些轉換電路154可以用於從浮點轉換到定點,而一些其它轉換電路154可以用於從定點轉換到浮點。此外,一些轉換電路154可以耦接到相應的運算(OP)電路152的輸出端,而一些其它轉換電路154可以耦接到相應的運算(OP)電路152的輸入端。
處理硬體110耦接到記憶體(memory)120,記憶體120可以包括諸如動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態隨機存取記憶體(static random access memory,SRAM)、閃存和其它非暫時性機器可讀存儲介質的存儲裝置;例如,易失性或非易失性存儲裝置。為了簡化說明,記憶體120被表示為一個模塊;然而,應當理解,記憶體120可以表示記憶體組件的層次結構,例如,高速緩存記憶體、NN處理單元150的本地記憶體、系統記憶體、固態或磁存儲裝置等。處理硬體110執行被存儲在記憶體120中的指令,以執行操作系統功能和運行用戶應用程序。例如,記憶體120可存儲NN編譯器(compiler)123,其能夠被處理器130執行,以將源程序編譯為可執行代碼供處理硬體根據DNN模型125執行操作。DNN模型125可由包括多個層(其包括輸入層、輸出層和位於兩者中間的一個或多個隱藏層)的計算圖(computational graph)表示。DNN模型125被訓練為具有與該多個層的一個或一個以上層相關聯的權值。NN處理單元150利用已訓練的權值根據DNN模型125執行張量運算。張量運算可以包括層內混合精度計算和/或層間混合精度計算。記憶體120還針對DNN模型125的每個層存儲操作參數(operating parameter)126,以針對該層指示是否啟用或繞過(亦稱為旁路)數值表示的轉換。
在可選實施例中,操作參數126以有限狀態機的形式被本地存儲在NN處理單元150中,或以其它方式可供NN處理單元150訪問(access)。NN處理單元150可根據有限狀態機中的操作參數126進行操作以執行張量運算。
例如,在執行時間或功耗的約束下,NN處理單元150可被配置為以定點運算執行高計算要求任務(例如,矩陣乘法)的一些或全部。如果某一層接收一個浮點形式的輸入運算對象和另一定點形式的輸入運算對象,則轉換電路154能夠在運行時將浮點運算對象轉換為定點運算對象,以便運算(OP)電路152執行定點乘法。
在一些實施例中,記憶體120可以存儲指令,當這些指令由處理硬體110執行時,能夠使得處理硬體110根據DNN模型125和操作參數126執行層間混合和/或層內混合精度計算。
在繼續其它實施例之前,描述浮點和定點之間的轉換是有幫助的。浮點向量Float[i]和對應的定點向量Fixed[i]之間的關係(i = [1,N])可以用以下公式來描述:Float[i]=S×(Fixed[i]+O),其中,S是比例因子(scaling factor),O是偏移量(offset)。當O為零時,轉換是對稱的(symmetric);當O非零時,它是不對稱的(asymmetric)。比例因子和偏移量可以是離線計算提供的。在一些實施例中,該比例因子可以是基於該浮點數和該定點數的相應範圍動態地/實時地/即時(on the fly)計算出來的;即,在NN操作的推理階段的期間動態計算。在一些實施例中,該偏移量可以是基於浮點數和定點數在零附近的分佈動態計算的。例如,當該浮點數和定點數的分佈不是以零為中心時,使用非對稱轉換能夠減少量化誤差。
轉換電路154對運算(OP)電路152的輸入運算對象進行轉換,使得由運算(OP)電路152操作的數值具有相同的數值表示,例如,其包括:在浮點數情況下針對尾數和指數具有相同的位寬以及在定點數情況下針對整數部分和小數部分具有相同的位寬。此外,當數值範圍不以零為中心時,相同的數值表示包括相同的數值中心偏移量。此外,相同的數值表示包括相同的符號表示或無符號表示。
第2圖是根據一實施例示出的包括定點電路210的NN處理單元200的示例的框圖。NN處理單元200可以是第1圖中NN處理單元150的一種示例。定點電路210作為運算(OP)電路152(第1圖)的示例,以及,定點電路210原生支援(natively support)定點表示方式。例如,定點電路210能夠直接對定點數表示方式的數值進行運算。定點電路210的輸入端耦接輸入轉換器(converter)220,以及,定點電路210的輸出端耦接輸出轉換器230。即,當輸入至DNN層的運算對象具有不同的數值表示方式時,NN處理單元200能夠執行層內混合精度計算。例如,從不同輸入通道接收到的輸入運算對象使用不同的數值表示;如,浮點表示和定點表示。再舉一個例子,某個層可能會以不同於該層的過濾器權值的數值表示接收輸入激活。NN處理單元200還可以在沒有輸入轉換的情況下執行定點張量運算,例如,當輸入運算對象均為定點表示時。在第2圖示出的實施例中,NN處理單元200接收具有不同數值表示的浮點數和定點數。
當NN處理單元200針對給定層接收浮點形式(浮點數表示)的第一輸入運算對象和定點形式(定點數表示)的第二輸入運算對象時,輸入轉換器220將浮點形式的運算對象轉換為定點形式。然後,定點電路210對轉換後的第一輸入運算對象和第二輸入運算對象執行定點計算以產生定點形式的輸出運算對象。取決於DNN輸出或DNN的後續層所需的數值表示,輸出轉換器230可以被繞過或者可以將該輸出運算對象從定點形式轉換為浮點形式。
因此,對於DNN的每一層,輸入轉換器220和/或輸出轉換器230可以被選擇性地啟用或繞過(selectively enabled or bypassed)。雖然第2圖示出了NN處理單元200包括輸入轉換器220和輸出轉換器230這兩者,但在替代實施例中,NN處理單元200可以包括輸入轉換器220和輸出轉換器230的其中一者。此外,第2圖示出了輸入轉換器220和輸出轉換器230作為兩個獨立的組件;但在一些實施例中,輸入轉換器220和輸出轉換器230可被組合成組合轉換器(combined converter),其根據需要將浮點數轉換為定點數和/或將定點數轉換為浮點數。這種組合轉換器可以是第1圖中的轉換電路154的示例。
第3圖是根據一實施例示出的包括浮點電路310的NN處理單元300的示例的框圖。NN處理單元300是第1圖中NN處理單元150的一種示例。浮點電路310作為第1圖中運算(OP)電路152的示例,其支援浮點表示。浮點電路310具有耦接輸入轉換器320的輸入端和耦接輸出轉換器330的輸出端。當DNN層的輸入運算對象具有不同的數值表示時,NN處理單元300可進行層內混合精度計算。輸入轉換器320可將定點數轉換為浮點數,輸出轉換器330可將浮點數轉換為定點數。類似於第2圖中的轉換器220和230,對於DNN的每一層,輸入轉換器320和/或輸出轉換器230可以被選擇性地啟用(enabled)或旁路(bypassed)。在替代實施例中,NN處理單元300可以包括輸入轉換器220和輸出轉換器230之一者。此外,在一些實施例中,輸入轉換器320和輸出轉換器330可被組合成組合轉換器,該組合轉換器根據需要將浮點數轉換為定點數和/或將定點數轉換為浮點數。這種組合轉換器可以是第1圖中的轉換電路154的一種示例。
除了結合第2圖和第3圖提到的層內混合精度計算之外,處理硬體110(第1圖)還支援層間混合精度計算,在該層間混合精度計算中,神經網絡的其中一層以定點方式進行計算,而另一層以浮點方式進行計算。在一實施例中,處理硬體110可包括NN處理單元200和NN處理單元300這兩者,其中,NN處理單元200對一些層執行定點運算,以及,NN處理單元300對一些其它層執行浮點運算。在另一實施例中,處理硬體110可使用處理器130并結合NN處理單元200或NN處理單元300來執行層內混合和/或層間混合精度計算。
第4A圖和第4B圖是根據一些實施例示出的第1圖中的NN處理單元150的一些示例的框圖。在第4A圖中,NN處理單元400包括用於浮點張量運算(即,對浮點數進行張量運算)的浮點電路410和用於定點張量運算(即對定點數進行張量運算)的定點電路420。浮點電路410和定點電路420的輸入端分別耦接到輸入轉換器415和425,並且它們的輸出端通過多工器(multiplexer)440並行耦接到輸出轉換器430。輸入轉換器415將定點數轉換為浮點數,以及,輸入轉換器425將浮點數轉換為定點數。多工器440根據當前層使用哪個電路來選擇從浮點電路410或定點電路420進行輸出。例如,如果當前層的計算是使用浮點電路410,則多工器選擇浮點電路410輸出的浮點數進行輸出,以及,如果當前層的計算是使用定點電路420,則多工器選擇定點電路420輸出的定點數進行輸出。選擇的輸出被發送至輸出轉換器430,其中,輸出轉換器430能夠將該輸出轉換為所需的數值表示;即,根據需要將浮點數轉換為定點數和/或將定點數轉換為浮點數。對於每一層,轉換器415、425和430中的每一個可以被選擇性地啟用或旁路。類似於第2圖和第3圖,轉換器415、425和430可以由組合轉換器來實現,該組合轉換器在兩個方向上轉換數值表示。在替代實施例中,NN處理單元400可以僅包括輸入轉換器415和425而不包括輸出轉換器430。在第4B圖所示的又一實施例中,NN處理單元450僅包括輸出轉換器430而不包括輸入轉換器415和425。
第5A圖和第5B圖是根據一些實施例示出的第1圖中的NN處理單元150的附加示例的框圖。第5A圖示出了NN處理單元500,其包括用於浮點張量運算的浮點電路510和用於定點張量運算的定點電路520。浮點電路510和定點電路520的輸出端並聯連接到多工器540,多工器540可選擇浮點電路510的浮點輸出或定點電路520的定點輸出。浮點電路510可以以浮點方式計算神經網絡的某一層,而定點電路520可以以定點方式計算神經網絡的另一層。NN處理單元500還包括轉換器515、525和530,它們分別執行與轉換器415、425和430(圖4)相同的轉換功能。此外,轉換器515、525和530耦接到緩衝記憶體(buffer memory)。例如,緩衝記憶體可以包括緩衝器(buffer)516、526和536,以提供速率控制(rate control)或速率補償(rate compensation)。例如,轉換器515、525和530每個週期處理一個數(one number),以及,電路510和520可以每512個週期一次(at a time)輸出512個數。每個緩衝器(516、526或536)位於浮點/定點電路和相應的轉換器之間。
在第5B圖的示例中,NN處理單元550包括位於相應的轉換器565、575和585內部(internal)的緩衝器566、576和586,以提供速率控制或速率補償。通過緩衝未被轉換的輸入(the non-converted input),緩衝器566和576可以在給定層的操作期間啟用相應的輸入轉換器(565和575)來確定比例因子,該比例因子用於在不同的數值表示之間進行轉換。即,輸入轉換器565和575能夠即時(on the fly)計算定點表示和相應的/對應的浮點表示之間的比例因子。輸入轉換器565和575可以額外地即時/動態計算定點表示和對應的浮點表示之間的偏移量。關於向量的定點表示和相應的浮點表示之間的關係已經結合第1圖描述了比例因子和偏移量。比例因子(scaling factor,或被稱為scaling_factor)用於在浮點數和定點數之間轉換的時候使用,因為浮點數能表示的範圍較大,要轉換為定點數時,需要統計要轉的這一群資料的最大值與最小值來決定這個比例因子,所以需要緩存(buffer)起來。以轉換浮點數到8b定點為例,scaling factor = (127/max(abs(min_data), bas(max_data))),從而,將scaling_factor*each_data就可以將值限縮在-127~128。
參考第5A圖,轉換器515、525和530可以由組合轉換器來實現,其在兩個方向上轉換數值表示。例如,將輸入的定點數轉換為浮點數以進行運算,將用以輸出的浮點數轉換為定點數。在替代實施例中,NN處理單元500或550可以僅包括輸入轉換器及其對應的緩衝器,而不包括輸出轉換器及其對應的緩衝器。在又一實施例中,NN處理單元500或550可以僅包括輸出轉換器及其對應的緩衝器而不包括輸入轉換器及其對應的緩衝器。第5A圖和第5B圖僅為一種示例,具體地,本發明對此不做限制。
第6圖是根據一實施例示出的NN處理單元600的框圖。NN處理單元600是第1圖中NN處理單元150的一種示例。NN處理單元600包括算術邏輯單元(arithmetic logic unit,ALU)引擎610,其包括處理元件(processing element)611的陣列(array)。ALU引擎610是第1圖中運算(OP)電路152的示例。針對DNN的任何給定層,每個處理元件611被指示為執行浮點或定點計算。ALU引擎610耦接到轉換引擎(conversion engine)620,轉換引擎620包括用於從浮點到定點轉換以及從定點到浮點轉換的電路。轉換引擎620是第1圖中轉換電路154的一個例子。
在一實施例中,處理元件611互連以優化加速的張量運算,例如,卷積運算、全連接運算、激活、池化、歸一化、逐元素數學計算等。在一些實施例中,NN處理單元600包括本地記憶體(例如,SRAM),以存儲從一特定層移動到下一層的運算對象。處理元件611還可包括乘法器和加法器電路等,用於執行數學運算,例如乘法累加(MAC)運算和其它張量運算。
第7圖是根據又一實施例示出的NN處理單元700的框圖。NN處理單元700是第1圖中NN處理單元150的一個例子。NN處理單元700包括浮點電路710、定點電路720和浮點電路730,例如,第7圖中示出其相互串聯耦接。電路710、720和730中的每一個可以針對神經網絡的不同層執行張量運算。轉換器711位於浮點電路710與定點電路720之間,用於將浮點數轉換為定點數。另一轉換器721位於定點電路720與浮點電路730之間,用於將定點數轉換為浮點數。NN處理單元700的替代實施例可以包括彼此串聯耦接的一個或多個浮點電路和一個或多個定點電路。該替代實施例還可以包括一個或多個轉換電路,以及,每個轉換電路可以耦接到浮點電路和/或定點電路,以在浮點數表示和定點數表示之間進行轉換。每個浮點/定點電路可以針對神經網絡的相應層執行張量運算。
第8A圖是根據一實施例示出的分時共享(time-sharing)第1圖中的NN處理單元150的方面的示意圖,例如,不同時間處理不同的層。還參考第1圖,處理硬體110可以包括一個NN處理單元150,該一個NN處理單元150是被DNN 725的多個層分時共享(time-share)的;例如,時隙0用於層0(layer 0,或稱為第0層)的運算(圖中標註為“OP Layer0”),時隙1用於層1(layer 1,或稱為第1層)的運算(圖中標註為“OP Layer1”),時隙2用於層2(layer 2,或稱為第2層)的運算(圖中標註為“OP Layer2”),等等。應當說明的是,層0、層1、層2等用語是用於稱呼或區別不同層的描述,其不具有特定的限制含義。被分時共享的NN處理單元150可以是第1圖至第6圖所示的上述NN處理單元中的任何一個。在一實施例中,NN處理單元150可以針對不同的層和不同的時隙具有不同的配置;例如,針對層0(時隙0)進行混合精度計算和針對層1和層2(時隙1和時隙2)進行定點計算。第1圖至第6圖中所示的不同實施例可以支援跨層(across the layers)的數值表示的不同組合。在每一層內,轉換電路154根據DNN 725的操作參數(operating parameter)被選擇性地啟用或繞過。
在另一實施例中,處理硬體110可以包括多個NN處理單元150,並且每個NN處理單元150可以是第1圖至第6圖中所示的上述NN處理單元中的任一個。每個NN處理單元150可以計算神經網絡的不同層。多個NN處理單元150可以包括相同的硬體(例如,相同NN處理單元的N個副本)。或者,處理硬體110可包括第1圖至第6圖中所示的前述NN處理單元中的任意者的組合。在一實施例中,操作參數可以指示從DNN的每個層到NN處理單元中的相應者的映射。
第8B圖是根據一實施例示出的第2圖中的NN處理單元200的使用示例的示意圖。還可以參考第3圖中的NN處理單元300提供類似的使用示例。參考第2圖,NN處理單元200包括定點電路210以及轉換器220和230。在該示例中,包括5個OP層(例如,layer0,layer1,layer2,layer3,layer4)的DNN 825由NN處理單元200執行。處理器130(例如,CPU)在時隙0處以浮點方式計算層0並產生層0的浮點輸出。
層1、層2和層3以定點方式計算。輸入轉換器220將層0的浮點輸出轉換為定點數,以及,定點電路210將這些轉換後的定點數乘以層1的定點權值,以生成層1的定點輸出(定點數輸出,即輸出的數具有定點數表示的格式)。針對層1,輸出轉換器230被旁路。
對於層2計算,輸入轉換器220被旁路,以及,定點電路210將層1的定點輸出乘以層2的定點權值,以生成層2的定點輸出。針對層2,輸出轉換器230被旁路。
對於層3計算,輸入轉換器220被旁路,以及,定點電路210將層2的定點輸出乘以層3的定點權值,以生成層3的定點輸出。輸出轉換器230將層3的定點輸出轉換為層3的浮點數并進行輸出。層4以浮點方式計算。處理器130在時隙4處對層3的浮點數輸出進行運算,以執行浮點運算並產生最終的浮點輸出(浮點輸出,即輸出的數具有浮點數表示的格式)。
在上面的例子中,NN處理單元200繞過了對連續層(layer1至layer3)的層1的輸出轉換,連續層(layer1至layer3)的層3的輸入轉換以及中間層(layer2)的輸入轉換和輸出轉換。此外,連續層的定點運算由NN處理單元200中的專用硬體執行,而不使用NN處理單元200外部的處理器(例如,處理器130)。NN處理單元200針對層1執行層內混合精度張量運算,在該層內混合精度張量運算中,處理器130(layer0)接收浮點形式的輸入激活。整個DNN 825的執行操作包括層內混合精度和層間混合精度計算。層間混合精度計算針對不同的層採用不同數值表示的運算,其包括浮點運算(layer0和layer4)和定點運算(layer1至layer3)。定點電路210以及硬體轉換器220和230的使用能夠顯著地加速定點計算且功耗低。對於需要高精度的計算,處理器130可以通過執行軟體指令來執行浮點運算和數值表示的轉換。NN處理單元200處理的各個層可以包括連續層和/或非連續層。
上面關於NN處理單元200的描述可以通過切換浮點和定點來類似地應用於第3圖中的NN處理單元300。參考第3圖,NN處理單元300包括浮點電路310以及轉換器320和330。在這個使用示例中,NN處理單元300以浮點方式計算層1至層3,處理器130以定點方式計算層0和層4,但本發明並不限於該示例。連續層的浮點運算由NN處理單元300中的專用硬體執行,而不使用NN處理單元300外部的處理器(例如,處理器130)。在一些實施例中,定點數運算由定點電路(例如,定點電路只支援定點數運算)執行,浮點數運算由CPU執行(因為CPU原生已帶浮點運算器),從而能夠節省電路成本。
第9圖是根據一實施例示出的用於層間混合層內混合精度計算的方法900的流程圖。方法900可以由第1圖的系統100(其包括第1圖至第7圖中的任意NN處理單元)來執行。
方法900開始於步驟910,在步驟910,NN處理單元接收浮點表示的第一運算對象和定點表示的第二運算對象,第一運算對象和第二運算對象是神經網絡中給定層的輸入運算對象。在步驟920,轉換電路對第一運算對象和第二運算對象中的其中一者進行轉換,使得第一運算對象和第二運算對象具有相同的數值表示。在步驟930,NN處理單元利用該相同的數值表示對第一運算對象和第二運算對象執行張量運算。
第10圖是根據一實施例示出的用於層內混合層間混合精度計算的方法1000的流程圖。方法1000可以由第1圖的系統100(其包括第1圖至第7圖中的任意NN處理單元)執行。
方法1000開始於步驟1010,在步驟1010,NN處理單元以第一數值表示方式執行神經網絡的第一層的第一張量運算。在步驟1020,NN處理單元以第二數值表示方式執行神經網絡的第二層的第二張量運算。第一數值表示和第二數值表示包括定點數表示和浮點數表示。
第11圖是根據一實施例示出的用於配置張量運算的方法的流程圖。方法1100可以由第1圖的系統100執行,該系統100包括上述NN處理單元中的任一個。
方法1100開始於步驟1110,在步驟1110,NN處理單元根據神經網絡的給定層的操作參數選擇啟用或繞過用於對輸入運算對象進行輸入轉換的轉換電路,該輸入轉換在被啟用時將第一數值表示轉換為第二數值表示。在步驟1120,NN處理單元對第二數值表示的輸入運算對象執行張量運算,以生成第二數值表示的輸出運算對象。在步驟1130,NN處理單元根據該操作參數選擇啟用或繞過用於對輸出運算對象進行輸出轉換的轉換電路。該輸出轉換在被啟用時將第二數值表示轉換為第一數值表示。在一實施例中,NN處理單元可以提供選擇信號到多工器,以選擇啟用或旁路該轉換電路。
已經參考第1圖至第7圖的示例性實施例描述了第9圖至第11圖的流程圖的操作。然而,應當理解,第9圖至第11圖的流程圖的操作可以由除第1圖至第7圖的實施例之外的實施例執行,以及,第1圖至第7圖的實施例可以執行與那些參考流程圖討論的操作不同的操作。雖然第9圖至第11圖的流程圖示出了由本發明的某些實施例執行的特定操作順序,但應當理解,這種順序是示例性的(例如,替代實施例可以以不同的順序執行操作、組合某些操作、重疊某些操作等)。
在申請專利範圍中使用諸如“第一”,“第二”,“第三”等序數術語來修改申請專利要素,其本身並不表示一個申請專利要素相對於另一個申請專利要素的任何優先權、優先級或順序,或執行方法動作的時間順序,但僅用作標記,以使用序數詞來區分具有相同名稱的一個申請專利要素與具有相同名稱的另一個元素要素。
雖然已經對本發明實施例及其優點進行了詳細說明,但應當理解的係,在不脫離本發明的精神以及申請專利範圍所定義的範圍內,可以對本發明進行各種改變、替換和變更,例如,可以通過結合不同實施例的若干部分來得出新的實施例。所描述的實施例在所有方面僅用於說明的目的而並非用於限制本發明。本發明的保護範圍當視所附的申請專利範圍所界定者為准。所屬技術領域中具有通常知識者皆在不脫離本發明之精神以及範圍內做些許更動與潤飾。
100:系統
110:處理硬體
130:處理器
150,200,300,400,450,500,550,600,700:NN處理單元
154:轉換電路
126:操作參數
152:運算(OP)電路
120:記憶體
123:編譯器
125:DNN模型
220,230,320,330,415,425,430,515,526,530,565,575,580,711,721:轉換器
210,420,520,720:定點電路
310,410,510,710:浮點電路
440,540:多工器
516,525,536,566,576,586:緩衝器
620:轉換引擎
610:ALU引擎
611:處理元件
725,825:DNN
900,1000,1100:方法
810,920,930,1010,1020,1110,1120,1130:步驟
附圖(其中,相同的數值表示相同的組件)示出了本發明實施例。包括的附圖用以提供對本公開實施例的進一步理解,以及,附圖被併入並構成本公開實施例的一部分。附圖示出了本公開實施例的實施方式,並且與說明書一起用於解釋本公開實施例的原理。可以理解的是,附圖不一定按比例繪製,因為可以示出一些部件與實際實施中的尺寸不成比例以清楚地說明本公開實施例的概念。需要說明的是,本發明對“一”或“一個”實施例的不同引用並不一定是指同一實施例,此類引用表示至少一個。此外,當結合實施例描述特定特徵、結構或特性時,可以認為在本領域技術人員的知識範圍內能夠實現與其它實施例相關的這種特徵、結構或特性,無論是否有明確描述。
第1圖是根據一實施例示出的可操作為執行神經網絡(neural network,NN)操作的系統的框圖。
第2圖是根據一實施例示出的包括定點電路(fixed-point circuit)的NN處理單元的示例的框圖。
第3圖是根據一實施例示出的包括浮點電路(floating-point)的NN處理單元的示例的框圖。
第4A圖和第4B圖是根據一些實施例示出的具有不同轉換器佈置的NN處理單元的框圖。
第5A圖和第5B圖是根據一些實施例示出的具有緩衝記憶體的NN處理單元的框圖。
第6圖是根據另一實施例示出的NN處理單元的框圖。
第7圖是根據又一實施例示出的NN處理單元的框圖。
第8A圖和第8B圖是根據一些實施例示出的NN處理單元被分時共享的一些方面的示意圖。
第9圖是根據一實施例示出的用於混合精度計算的方法的流程圖。
第10圖是根據一實施例示出的用於混合精度計算的方法的流程圖。
第11圖是根據一實施例示出的用於可配置張量操作的方法的流程圖。
在下面的詳細描述中,為了說明的目的,闡述了許多具體細節,以便所屬技術領域中具有通常知識者能夠更透徹地理解本發明實施例。然而,顯而易見的是,可以在沒有這些具體細節的情況下實施一個或複數個實施例,不同的實施例或不同實施例中披露的不同特徵可根據需求相結合,而並不應當僅限於附圖所列舉的實施例。
100:系統
110:處理硬體
130:處理器
150:NN處理單元
154:轉換電路
126:操作參數
152:運算(OP)電路
120:記憶體
123:編譯器
125:DNN模型
Claims (20)
- 一種神經網絡處理單元,包括: 運算電路,用於以第一數值表示和第二數值表示中的其中一種方式執行神經網絡的給定層的張量運算;以及, 轉換電路,耦接該運算電路的輸入端和輸出端中的至少一者,以在該第一數值表示和該第二數值表示之間進行轉換; 其中,該第一數值表示為定點數表示和浮點數表示中的其中一者,該第二數值表示為該定點數表示和該浮點數表示中的另一者。
- 如請求項1所述之神經網絡處理單元,其中,根據該神經網絡的該給定層的操作參數,該轉換電路被配置為耦接到該運算電路的該輸入端和該輸出端中的一者或兩者。
- 如請求項1所述之神經網絡處理單元,其中,根據該神經網絡的該給定層的操作參數,該轉換電路被配置為:針對輸入轉換和輸出轉換中的一者或兩者是被啟用的或被旁路的。
- 如請求項1所述之神經網絡處理單元,其中,該神經網絡處理單元用於對該給定層的第一輸入運算對象和第二輸入運算對象執行層內混合精度計算,該第一輸入運算對象和該第二輸入運算對象具有不同的數值表示。
- 如請求項1所述之神經網絡處理單元,其中,該神經網絡處理單元用於執行層間混合精度計算,在該層間混合精度計算中,該神經網絡的第一層中的計算是以該第一數值表示的方式進行的,而該神經網絡的第二層中的計算是以該第二數值表示的方式進行的。
- 如請求項1所述之神經網絡處理單元,其中,通過一次對一個層進行操作,該神經網絡處理單元在該神經網絡的多個層之間是被分時共享的。
- 如請求項1所述之神經網絡處理單元,其中,該神經網絡處理單元還包括: 緩衝記憶體,用於給該轉換電路緩沖未被轉換的輸入,以在該神經網絡的該給定層的操作期間確定用於在該第一數值表示和該第二數值表示之間進行轉換的比例因子。
- 如請求項1所述之神經網絡處理單元,其中,該神經網絡處理單元還包括: 緩衝器,耦接在該轉換電路與該運算電路之間。
- 如請求項1所述之神經網絡處理單元,其中,該運算電路包括定點電路和浮點電路,該定點電路以定點方式計算該神經網絡的一層,以及,該浮點電路以浮點方式計算該神經網絡的另一層。
- 如請求項1所述之神經網絡處理單元,其中,該神經網絡處理單元耦接到一個或多個處理器,該一個或多個處理器用於以該第一數值表示的方式執行該神經網絡的一個或多個層的操作。
- 如請求項1所述之神經網絡處理單元,其中,該神經網絡處理單元包括: 多個該運算電路,每個運算電路包括一個或多個定點電路和/或浮點電路,其中,不同的運算電路用於計算該神經網絡的不同層;以及, 一個或多個該轉換電路,耦接該運算電路。
- 如請求項1所述之神經網絡處理單元,其中,該運算電路進一步包括以下一項或多項: 加法器、減法器、乘法器、函數評估器和乘法累加(MAC)電路。
- 一種神經網絡處理單元,包括運算電路和轉換電路,該神經網絡處理單元用於: 根據神經網絡的給定層的操作參數,選擇啟用或旁路用於對輸入運算對象進行輸入轉換的轉換電路,其中,該輸入轉換在被啟用時將該輸入運算對象第一數值表示轉換為第二數值表示; 對具有該第二數值表示方式的該輸入運算對象執行張量運算,以產生具有該第二數值表示方式的輸出運算對象;以及, 根據該操作參數選擇啟用或旁路用於對輸出運算對象進行輸出轉換的轉換電路,其中,該輸出轉換在被啟用時將該輸出運算對象從該第二數值表示轉換為該第一數值表示, 其中,該第一數值表示為定點數表示和浮點數表示中的其中一者,該第二數值表示為該定點數表示和該浮點數表示中的另一者。
- 如請求項13所述之神經網絡處理單元,其中,該神經網絡處理單元被操作為: 對於該神經網絡的另一給定層,對具有該第一數值表示方式的另一輸入運算對象執行額外的張量運算,以產生具有該第一數值表示方式的另一輸出運算對象。
- 如請求項13所述之神經網絡處理單元,其中,通過一次對一個層進行操作,該神經網絡處理單元在該神經網絡的多個層之間是被分時共享的。
- 一種神經網絡處理系統,包括: 一個或多個浮點電路,用於給神經網絡的一個層或多個層執行浮點張量運算; 一個或多個定點電路,用於給神經網絡的其它層或其它多個層執行定點張量運算;以及, 一個或多個轉換電路,耦接到該浮點電路和該定點電路中的至少一者,用於在浮點數表示和定點數表示之間進行轉換。
- 如請求項16所述之系統,其中,該一個或多個浮點電路和該一個或多個定點電路是根據預定順序彼此串聯耦接的。
- 如請求項16所述之系統,其中,該一個或多個浮點電路之一者的輸出端和該一個或多個定點電路之一者的輸出端並聯耦接到多工器。
- 如請求項16所述之系統,其中,該一個或多個轉換電路包括浮點至定點轉換器,該浮點至定點轉換器耦接該定點電路的輸入端或耦接該浮點電路的輸出端。
- 如請求項16所述之系統,其中,該一個或多個轉換電路包括定點至浮點轉換器,該定點至浮點轉換器耦接該浮點電路的輸入端或耦接該定點電路的輸出端。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063113215P | 2020-11-13 | 2020-11-13 | |
US63/113,215 | 2020-11-13 | ||
US17/505,422 US20220156567A1 (en) | 2020-11-13 | 2021-10-19 | Neural network processing unit for hybrid and mixed precision computing |
US17/505,422 | 2021-10-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202219839A true TW202219839A (zh) | 2022-05-16 |
TWI800979B TWI800979B (zh) | 2023-05-01 |
Family
ID=81492971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110142113A TWI800979B (zh) | 2020-11-13 | 2021-11-12 | 神經網絡處理單元及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220156567A1 (zh) |
CN (1) | CN114492771A (zh) |
TW (1) | TWI800979B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI815539B (zh) * | 2022-06-12 | 2023-09-11 | 聯發科技股份有限公司 | 神經網絡計算方法及系統 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10650303B2 (en) * | 2017-02-14 | 2020-05-12 | Google Llc | Implementing neural networks in fixed point arithmetic computing systems |
US20190205736A1 (en) * | 2017-12-29 | 2019-07-04 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US11663464B2 (en) * | 2018-09-20 | 2023-05-30 | Kneron (Taiwan) Co., Ltd. | Deep neural network with low-precision dynamic fixed-point in reconfigurable hardware design |
CN111857649B (zh) * | 2020-06-22 | 2022-04-12 | 复旦大学 | 一种用于隐私保护机器学习的定点数编码及运算系统 |
-
2021
- 2021-10-19 US US17/505,422 patent/US20220156567A1/en active Pending
- 2021-11-11 CN CN202111332073.7A patent/CN114492771A/zh active Pending
- 2021-11-12 TW TW110142113A patent/TWI800979B/zh active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI815539B (zh) * | 2022-06-12 | 2023-09-11 | 聯發科技股份有限公司 | 神經網絡計算方法及系統 |
Also Published As
Publication number | Publication date |
---|---|
TWI800979B (zh) | 2023-05-01 |
CN114492771A (zh) | 2022-05-13 |
US20220156567A1 (en) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9104510B1 (en) | Multi-function floating point unit | |
JP5175379B2 (ja) | 選択可能な下位精度を有する浮動小数点プロセッサ | |
US8280939B2 (en) | Methods and apparatus for automatic accuracy-sustaining scaling of block-floating-point operands | |
US9753695B2 (en) | Datapath circuit for digital signal processors | |
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
US8914430B2 (en) | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions | |
CN109634558B (zh) | 可编程的混合精度运算单元 | |
Hickmann et al. | Intel nervana neural network processor-t (nnp-t) fused floating point many-term dot product | |
US8019805B1 (en) | Apparatus and method for multiple pass extended precision floating point multiplication | |
Samy et al. | A decimal floating-point fused-multiply-add unit | |
TW202219839A (zh) | 神經網絡處理單元及系統 | |
Nannarelli | Variable precision 16-bit floating-point vector unit for embedded processors | |
GB2423385A (en) | Determining an initial estimate of a result value of a reciprocal operation | |
US11609741B2 (en) | Apparatus and method for processing floating-point numbers | |
TWI815539B (zh) | 神經網絡計算方法及系統 | |
Shirke et al. | Implementation of IEEE 754 compliant single precision floating-point adder unit supporting denormal inputs on Xilinx FPGA | |
Schulte et al. | Floating-point division algorithms for an x86 microprocessor with a rectangular multiplier | |
US10289413B2 (en) | Hybrid analog-digital floating point number representation and arithmetic | |
Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
Lasith et al. | Efficient implementation of single precision floating point processor in FPGA | |
US20230098421A1 (en) | Method and apparatus of dynamically controlling approximation of floating-point arithmetic operations | |
US9619205B1 (en) | System and method for performing floating point operations in a processor that includes fixed point operations | |
Chen et al. | Decimal floating-point antilogarithmic converter based on selection by rounding: Algorithm and architecture | |
US20230334117A1 (en) | Method and system for calculating dot products | |
KR20170030327A (ko) | 연산을 제어하기 위한 장치 및 방법 |