TW202319909A - 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 - Google Patents

用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 Download PDF

Info

Publication number
TW202319909A
TW202319909A TW111133343A TW111133343A TW202319909A TW 202319909 A TW202319909 A TW 202319909A TW 111133343 A TW111133343 A TW 111133343A TW 111133343 A TW111133343 A TW 111133343A TW 202319909 A TW202319909 A TW 202319909A
Authority
TW
Taiwan
Prior art keywords
signed
input
circuit
hardware
word
Prior art date
Application number
TW111133343A
Other languages
English (en)
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 TW202319909A publication Critical patent/TW202319909A/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/4824Methods 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 using signed-digit representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3896Bit slicing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Transceivers (AREA)
  • Radar Systems Or Details Thereof (AREA)

Abstract

本發明揭示方法、系統及設備,其等包含針對經組態為一帶正負號多字乘法器之一硬體電路在一電腦儲存媒體上編碼的電腦程式。該電路包含接收各自具有一各自位元寬度之輸入的一處理電路。該處理電路可基於具有超過該硬體電路之一固定位元寬度之一位元寬度之第一輸入而將至少一個輸入表示為一帶正負號多字輸入。該電路包含各自經組態以將帶正負號輸入相乘的帶正負號乘法器。各帶正負號乘法器包含乘法電路,該乘法電路經組態以:接收該帶正負號多字輸入;接收一帶正負號第二輸入;且回應於將該帶正負號多字輸入與該帶正負號第二輸入相乘而產生一帶正負號輸出。

Description

用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
本說明書係關於用於執行數學運算之硬體電路。
運算電路可包含具有用於將諸如整數及浮點數之數字輸入相乘之硬體乘法器之乘法電路。乘法電路對於購買及整合至一現有運算電路中可係昂貴的且一些電路未針對特定應用有效地定大小。舉例而言,一些乘法電路可包含帶正負號乘法器及不帶正負號乘法器兩者,該兩者消耗一電路晶粒之一大面積但儘管其等大小很大,在運算處理能力方面仍未提供優勢。對於特定運算應用過大之乘法器電路可導致功率消耗及利用率的低效。
可使用一硬體電路來實施一神經網路。特定言之,可在包含數個硬體乘法器之一運算電路上實施具有多個層之一神經網路。硬體電路之運算電路亦可表示用於針對一給定層執行神經網路運算的一運算單元。舉例而言,在給定一輸入之情況下,電路可藉由使用硬體電路之運算單元中之乘法器之一或多者執行內積運算而使用神經網路來運算輸入之一推論。
本文件描述用於將輸入相乘之一專用硬體電路。該硬體電路包含接收各自具有一各自位元寬度之輸入的一處理電路。該處理電路可基於具有超過該硬體電路之一固定位元寬度之一位元寬度之第一輸入而將至少一個輸入表示為一帶正負號多字輸入。該硬體電路經組態為一帶正負號多字乘法器且包含各自經組態以將帶正負號輸入相乘的帶正負號乘法器。各帶正負號乘法器包含乘法電路,該乘法電路經組態以:接收該帶正負號多字輸入;接收一帶正負號第二輸入;且回應於將該帶正負號多字輸入與該帶正負號第二輸入相乘而產生一帶正負號輸出。
可在用於將輸入集相乘之一硬體電路中具體實施本說明書中描述之標的之一個態樣。該硬體電路包含:處理電路,其接收一第一輸入及一第二輸入,該第一輸入及該第二輸入之各者具有一各自位元寬度,其中該處理電路經組態以基於具有超過該硬體電路之一固定位元寬度之一位元寬度之該第一輸入而將至少該第一輸入表示為一帶正負號多字輸入;及多個帶正負號乘法器,該多個帶正負號乘法器之各帶正負號乘法器經組態以將兩個或兩個以上帶正負號輸入相乘,各帶正負號乘法器包含乘法電路,該乘法電路經組態以:接收表示該第一輸入之該帶正負號多字輸入;接收對應於該第二輸入之一帶正負號第二輸入;且回應於使該帶正負號多字輸入與該帶正負號第二輸入相乘而產生一帶正負號輸出。
此等及其他實施方案可各自視情況包含以下特徵之一或多者。舉例而言,在一些實施方案中,帶正負號多字輸入係包含N個字之一經移位帶正負號數,各N字包含B個位元;且N係大於1之一整數且B係大於1之一整數。在一些實施方案中,基於下式定義經移位帶正負號數之一數值:
Figure 02_image001
Figure 02_image003
,其中a表示帶正負號多字輸入之一各自帶正負號字。在一些實施方案中,基於下式定義經移位帶正負號數之一可表示數字範圍:
Figure 02_image005
。在一些實施方案中,基於下式定義S:
Figure 02_image007
。在一些實施方案中,處理電路經組態以將第一輸入表示為一帶正負號多字輸入,該帶正負號多字輸入包含:一帶正負號高位字部分;及一帶正負號低位字部分。
在一些實施方案中,將第一輸入表示為帶正負號多字輸入包含:使用一量化方案以基於硬體電路之固定位元寬度而修改第一輸入之一資料格式。在一些實施方案中,量化方案經組態以藉由產生各自字部分以將第一輸入表示為帶正負號多字輸入而修改第一輸入之資料格式;且包含各各自字部分之一總位元寬度等於硬體電路之固定位元寬度。在一些實施方案中,帶正負號多字輸入包含多個各自字;且乘法電路經組態以藉由將帶正負號多字輸入之各字與帶正負號第二輸入之各字相乘而產生帶正負號輸出。在一些實施方案中,帶正負號第二輸入包含多個各自帶正負號字;且乘法電路經組態以產生帶正負號輸出作為從使帶正負號多字輸入之各字與帶正負號第二輸入之各帶正負號字相乘運算之各自乘積之一和。
可在用於使用一硬體電路將輸入集相乘之一方法中具體實施本說明書中描述之標的之一個態樣。該方法包含:藉由該硬體電路之一處理電路接收一第一輸入及一第二輸入,該第一輸入及該第二輸入之各者具有一各自位元寬度,其中至少該第一輸入具有超過包含於該硬體電路中之乘法硬體之一固定位元寬度的一位元寬度,使用該乘法硬體以將該第一輸入及該第二輸入相乘;從至少該第一輸入產生包含各自具有複數個位元之複數個帶正負號字的一帶正負號多字輸入,其中該帶正負號多字輸入之一位元寬度小於該乘法硬體之該固定位元寬度;將該帶正負號多字輸入及一帶正負號第二輸入提供至該乘法硬體以進行乘法,其中該帶正負號第二輸入對應於該第二輸入且具有在該乘法硬體之該固定位元寬度內的一位元寬度;及使用至少該第一輸入及該第二輸入從該乘法硬體產生一帶正負號輸出。
此等及其他實施方案可各自視情況包含以下特徵之一或多者。舉例而言,在一些實施方案中,帶正負號多字輸入係包含N個字之一經移位帶正負號數,各N字包含B個位元;且N係大於1之一整數且B係大於1之一整數。在一些實施方案中,基於下式定義經移位帶正負號數之一數值:
Figure 02_image009
Figure 02_image011
,其中a表示帶正負號多字輸入之一各自帶正負號字。在一些實施方案中,基於下式定義經移位帶正負號數之一可表示數字範圍:
Figure 02_image013
。在一些實施方案中,其中基於下式定義S:
Figure 02_image015
。在一些實施方案中,產生帶正負號多字輸入包含將第一輸入表示為一帶正負號多字輸入,該帶正負號多字輸入包含:一帶正負號高位字部分;及一帶正負號低位字部分。
在一些實施方案中,將第一輸入表示為帶正負號多字輸入包含:使用一量化方案以基於硬體電路之固定位元寬度而修改第一輸入之一資料格式。在一些實施方案中,方法進一步包含:基於量化方案藉由產生各自字部分以將第一輸入表示為帶正負號多字輸入而修改第一輸入之資料格式,其中包含各各自字部分之一總位元寬度等於硬體電路之固定位元寬度。在一些實施方案中,帶正負號第二輸入包含多個各自字且方法進一步包含:使用乘法硬體之一帶正負號乘法器產生帶正負號輸出作為將帶正負號多字輸入之各字與帶正負號第二輸入之各字相乘之各自乘積之一和。
本態樣及其他態樣之其他實施方案包含經組態以執行在電腦儲存裝置(例如,非暫時性機器可讀儲存媒體)上編碼之方法之動作的對應系統、設備及電腦程式。可憑藉安裝於一或多個電腦或硬體電路之一運算系統上之在操作中導致該系統執行動作之軟體、韌體、硬體、或其等之一組合如此組態該系統。可憑藉具有在由資料處理設備執行時導致該設備執行動作之指令如此組態一或多個電腦程式。
可在特定實施例中實施本說明書中描述之標的以實現以下優勢之一或多者。可使用所描述之技術來實施用於將兩個或兩個以上輸入相乘,同時需要比用於將輸入相乘之習知電路更少之功率的一專用硬體電路。本文件中描述之硬體電路之組件形成具有經組態以將帶正負號輸入相乘以產生一帶正負號輸出之帶正負號乘法器之一帶正負號多字乘法器電路。多字乘法器可係一低功率硬體乘法電路,其基於用於表示帶正負號數之一唯一數字格式而將數個輸入(例如,浮點輸入)有效地相乘。
乘法電路可經組態以具有僅包含用於執行輸入之乘法之帶正負號硬體乘法器的乘法硬體。電路包含處理電路,該處理電路用於回應於處理具有一習知編號格式(諸如二的補數格式)之輸入而產生經移位帶正負號多字數。帶正負號多字數使用帶正負號硬體乘法器相乘以產生一帶正負號輸出。相對於將輸入相乘之習知電路,乘法電路之此等特徵導致電路處之降低的功率消耗。此係因為僅使用帶正負號乘法器而非帶正負號乘法器及不帶正負號乘法器兩者來完成乘法。此外,包含用於支援多個模式(例如,帶正負號模式及不帶正負號模式)之硬體乘法器之電路亦增加由電路消耗之晶片面積,藉此增加電路之製造成本。故,所提出之技術不僅提供功率消耗之降低,而且提供製造成本之降低。
當電路之乘法硬體經組態以僅包含帶正負號硬體乘法器時,整個硬體電路消耗比必須包含用以支援帶正負號運算模式及不帶正負號運算模式兩者之額外乘法硬體之習知電路少得多的功率。因此,可最佳化此低功率硬體乘法器電路用於基於利用一僅帶正負號模式來產生將兩個或兩個以上帶正負號多字輸入相乘之一乘積之至少帶正負號乘法器組態而用降低的功率要求將數字輸入相乘。
在隨附圖式及以下描述中陳述本說明書中描述之標的之一或多個實施方案之細節。將從描述、圖式及發明申請專利範圍變得明白標的之其他潛在特徵、態樣及優勢。
習知電腦架構按一固定位元寬度B提供乘法硬體。當此等架構需要將具有超過位元寬度之若干位元之輸入相乘時,架構將輸入數分成多段(「字」),其中各字具有一長度或位元寬度B。為產生一運算輸出,此等架構將第一輸入之每一字與第二輸入之每一字相乘。然而,為產生一帶正負號(例如,正、負、或零)輸出,必須可在一帶正負號模式及一不帶正負號模式兩者中組態架構(例如,其中輸入僅係正或零)。必須可在帶正負號模式及一不帶正負號模式兩者中組態之習知電路需要額外硬體組件,此轉化成增加的功率消耗。
在一例示性實施方案中,一硬體電路可用於實施一多層神經網路且藉由透過神經網路之層之各者處理輸入而執行運算(例如,神經網路運算)。特定言之,神經網路之個別層可各自具有一各自參數集。各層接收一輸入且根據層之參數集處理該輸入以基於使用一例示性運算單元之乘法電路執行之運算而產生一輸出。舉例而言,在執行一輸入陣列及一參數陣列之矩陣乘法時或作為運算一輸入陣列與一參數核心陣列之間之一卷積之部分,神經網路層運算多個乘積。
一般而言,使用用於執行數學運算(例如,乘法及加法)之電路來完成透過一神經網路之一層處理一輸入。一例示性硬體電路可包含用於將兩個或兩個以上輸入相乘的硬體乘法器。乘法器電路可連同硬體加法器一起分組以形成硬體電路之一運算單元,例如,用於一矩陣或向量處理單元。運算單元用於將諸如整數及浮點數之數字輸入相加及相乘。舉例而言,在硬體電路用於執行神經網路運算時發生加法及乘法,諸如用於透過一神經網路之一層處理一輸入之矩陣-向量乘法。
考量上文背景內容,本文件描述用於實施用於將表示為帶正負號多字輸入之兩個或兩個以上輸入相乘之一專用硬體電路的技術。技術可用於將帶正負號或不帶正負號輸入表示為「經移位帶正負號多字數」。此等經移位帶正負號多字數使用一唯一數字格式來將所接收之輸入表示為帶正負號數。所接收之輸入可係多字數之個別字,其亦可包含單字輸入及多字輸入。藉由將輸入表示為帶正負號數,專用硬體電路無需支援一不帶正負號模式。因此,所描述之硬體電路使用一更簡化架構,其包含用於帶正負號模式操作而非帶正負號模式及不帶正負號模式兩者之操作的乘法電路。由於所描述之硬體電路僅經組態用於帶正負號模式操作,故電路需要較少組件,此轉化成在與習知架構相比時之經改良電源效率。
圖1展示用於將輸入102相乘之一例示性專用硬體電路100之一圖式。在一例示性實施方案中,輸入102A (「輸入A」)及102B (「輸入B」)係可在軟體中使用一二進位資料結構表示之各自浮點或二補數。二進位資料結構可具有特定數目個位元,例如,一16位元、一24位元或一32位元資料結構。舉例而言,輸入A或B之各者可係一各自帶正負號浮點數且各輸入之一(若干)符號位元可指示輸入之符號(例如,正或負)。
各數字輸入之資料結構可與一特定資料格式相關聯。資料格式可指示可使用該資料格式表示之一有限數值範圍。在一些實施方案中,輸入A之一16位元資料結構可包含表示輸入A之二的補數資料格式的二進位輸入(例如,0010)。關於數字範圍,普通二的補數可具有以下有限可表示數值範圍[-32,768, 32,767]。此外,各數字輸入在其資料結構中具有指示數字係一帶正負號數或一不帶正負號數之一或多個位元。
如本文件中描述,表示帶正負號數字輸入(例如,整數)之資料結構可保存正數值(例如,整數值)及負數值兩者,而表示不帶正負號數字輸入之資料結構可保存較大範圍之正數值且不保存負數值。一般而言,處理器電路(諸如GPU或神經網路處理器)通常包含用於執行涉及不同類型之輸入(例如,整數或浮點輸入)之運算的算術邏輯單元(ALU)或運算單元。
涉及帶正負號輸入之運算對應於帶正負號模式操作,而涉及不帶正負號輸入之運算對應於不帶正負號模式操作。用於執行涉及帶正負號及不帶正負號數字輸入之運算之ALU及運算單元需要相異組之硬體組件以支援各自帶正負號模式及不帶正負號模式操作。舉例而言,如上文描述,一些電腦架構按一固定位元寬度B提供乘法硬體。當此等架構需要將具有超過位元寬度之若干位元之輸入相乘時,架構將輸入數分成多段(「字」),其中各字具有一長度或位元寬度B。為產生一運算輸出,架構將第一輸入之每一字與第二輸入之每一字相乘。
但如先前論述,為產生一帶正負號(例如,正、負、或零)輸出,架構必須可在一帶正負號模式及一不帶正負號模式兩者中組態(例如,其中輸入僅係正的)。必須可針對帶正負號操作及一不帶正負號操作兩者組態之架構需要額外硬體組件,此轉化成增加的功率消耗。在此背景內容中,描述用於實施一專用硬體電路100的技術,該專用硬體電路100經組態以將具有一唯一資料格式之帶正負號輸入相乘,同時相對於習知硬體電路消耗較少功率。專用電路100包含用於僅支援帶正負號模式操作的乘法電路。在僅將輸入表示為帶正負號數時,電路達成特定功率節省。舉例而言,藉由從僅將帶正負號輸入相乘產生運算輸出,電路100可包含較少硬體組件及具有用以將輸入相乘之減小數目個軟體指令之一較小指令集。
電路100包含經組態以產生帶正負號多字輸入的一輸入處理器104。硬體電路100之一部分可包含具有提供用於將輸入102相乘之硬體乘法器之乘法電路的一運算單元103。輸入處理器104可經組態以基於電路100之一運算單元103中之乘法電路之一固定位元寬度而產生帶正負號多字輸入。更明確言之,輸入處理器104經組態以從一輸入102產生一經移位帶正負號多字數。舉例而言,輸入處理器104可產生經移位帶正負號多字數106及108。經移位帶正負號多字數106可包含各自從輸入A產生的各自帶正負號字輸入C及D,而經移位帶正負號多字數108可包含各自從輸入B產生的各自帶正負號字輸入E及F。
硬體電路100包含帶正負號硬體乘法器110及112。在一些實施方案中,電路100經組態以包含低功率帶正負號整數或浮點乘法電路。在一些實例中,乘法器110、112可經由一選用連接件113連接以形成硬體電路100之一單一、大規模帶正負號乘法電路。在一些其他實例中,乘法器110及112可表示一較大乘法電路114之不同硬體乘法器且電路100可包含一或多個乘法電路114。雖然在圖1之實例中展示兩個乘法器,但電路100 (或電路114)可經組態以包含更多或更少乘法器。舉例而言,電路100可包含一單一乘法器,該單一乘法器經組態以隨時間用於多個目的以達成與多個個別乘法器相同(或類似)之運算效應。以此方式,可最佳化電路100用於藉由舉例而言僅包含帶正負號乘法器或僅支援帶正負號模式操作所需之其他硬體組件而用降低的功率要求將特定數字輸入相乘。在一些情況中,專用硬體電路100使用乘法電路來執行用於透過一神經網路之層處理輸入之運算。運算可包含輸入及參數之乘法以產生累積值,進一步處理該等累積值以產生一神經網路層之一層輸出。
在一例示性操作中,在給定包含各自帶正負號字輸入C及D (其等各自從輸入A產生)及各自帶正負號字輸入E及F (其等各自從輸入B產生)之一輸入集的情況下,電路100經組態以將輸入C及E相乘(C*E)、將輸入C及F相乘(C*F)、將輸入D及E相乘(D*E)、且將輸入D及F相乘(D*F)。運算單元103包含一加法器電路120 (「加法器120」),該加法器電路120經組態以在由乘法電路114之乘法器110、112之一或多者產生之乘積之間執行一適當加法運算。運算單元103經組態以在將一或多個乘積值移位達必要位元寬度之後執行加法運算。舉例而言,運算單元103可在執行以下加法運算(C*E << (2*B)) + ((C*F + D*E) << B) + D*F之前使用加法器120來執行移位操作(例如,<<2*B、<< B等)。
加法器120接收帶正負號乘積116及118作為輸入且將帶正負號乘積116及118相加以產生運算單元103之一帶正負號輸出122。在一些實施方案中,使用一帶負號乘積118之二的補數版本來執行加法運算,該加法運算涉及將帶正負號乘積116與帶正負號乘積118之二的補數版本相加以產生帶正負號輸出122。在一些情況中,將輸入相加可包含在產生帶正負號輸出122之前使用捨入邏輯以對一初始和執行一捨入運算。舉例而言,捨入邏輯可用於在產生帶正負號輸出122之前將初始和捨入至一最接近小數或整數值。在一些實施方案中,帶正負號輸出122表示用於回應於透過一神經網路層處理數字輸入102而產生該神經網路層之一層輸出之累積值。
圖2展示用於產生提供至電路100之帶正負號硬體乘法器以產生一帶正負號輸出122之帶正負號多字輸入之一程序圖200。如下文更詳細地描述,程序圖200包含各自表示輸入處理器104之一各自邏輯功能的多個邏輯塊。一般而言,各自邏輯功能之一或多者可用於產生經移位帶正負號多字數。
參考程序圖200,硬體電路100經組態為一帶正負號模式電路且包含用於產生帶正負號多字數106的輸入處理電路104。輸入處理器104至少基於判定輸入具有超過硬體電路處包含之一硬體乘法器之一固定位元寬度之一位元寬度而從輸入102產生經移位帶正負號多字數(204)。舉例而言,輸入處理器104可分析輸入102之二進位資料結構以判定各各自輸入是否超過包含於運算單元103中之乘法電路114之一固定位元寬度。
產生帶正負號多字數106包含基於輸入處理器104判定輸入102在用於表示經移位帶正負號多字數106之一資料格式之一預定義數字範圍內而產生數字106 (206)。舉例而言,輸入處理器104回應於判定輸入102之一數值(例如,二的補數)符合表示經移位帶正負號多字數106之資料格式之可用數字範圍而產生帶正負號多字數106。對於一給定輸入102,若輸入處理器104判定輸入102之一數值不符合資料格式之可用數字範圍,則輸入處理器104結束程序200 (208)。
若輸入處理器104判定輸入102在資料格式之預定義數字範圍內,則輸入處理器104基於具有超過硬體電路100之一固定位元寬度之一位元寬度之至少第一輸入而導致輸入之一或多者表示為一各自帶正負號多字輸入。舉例而言,為將輸入表示為一帶正負號多字輸入,輸入處理器104產生各自具有B個位元之各自帶正負號N個字(210)。接著,輸入處理器104使用各自具有B個位元之各帶正負號N字來產生一經移位帶正負號數(212)。在一些實施方案中,N係大於1之一整數且B係大於1之一整數。將帶正負號多字輸入提供至乘法電路114之帶正負號硬體乘法器以最終產生一帶正負號輸出。
在一些情況中,輸入處理器104判定輸入102具有未超過硬體電路處包含之一硬體乘法器110之一固定位元寬度的一位元寬度(205)。在此案例中,輸入處理器104將輸入214提供至乘法電路114之一帶正負號乘法器。舉例而言,輸入處理器104可基於匹配一特定硬體乘法器之一正負號之輸入之正負號而將輸入214提供至該特定硬體乘法器。在此實施方案中,由於輸入214不具有大於乘法電路114之一固定位元寬度的一位元寬度,故輸入214將非用於產生帶正負號多字輸入之一適合輸入。
對於一例示性乘法運算,判定是否從一輸入102產生一經移位帶正負號多字數以及帶正負號多字輸入之後續產生可在一運算週期中相對較早地發生。舉例而言,可使用與電路100通信以獲得用於透過一神經網路層處理之輸入之一外部主機控制器在晶片外進行判定。在一些實施方案中,當從一例示性神經網路處理器之一記憶體(諸如一啟動記憶體,其儲存由在包含硬體電路100之一神經網路處理器上實施之一神經網路層產生之啟動)獲得輸入時,發生判定及後續產生。
在其他實施方案中,判定是否產生一帶正負號多字輸入以及帶正負號多字輸入之後續產生可在一先前管線階段中(例如,在運算單元103之一先前乘法器、一ALU、或一旁路電路處)發生。在一些情況中,各帶正負號硬體乘法器110、112之一介面可經修改或增強以包含一各自輸入處理器104。在此等情況中,在各乘法器110、112之一輸入處接收之輸入102可經處理以產生適當數目個經移位多字輸入用於在各自硬體乘法器110、112處進行乘法。
圖3展示用於使用所描述之硬體乘法器電路100將輸入相乘之一例示性程序300之一流程圖。如上文指示,輸入可係數字輸入,諸如表示為位元(例如,16個位元或32個位元)之一資料結構的浮點數。可至少使用與本文件中描述之其他電路、組件及系統組合之電路100來執行程序300。
現參考程序300,電路100接收各自具有一各自位元寬度之一第一輸入及一第二輸入(302)。處理電路經組態以基於具有超過硬體電路之一固定位元寬度之一位元寬度之第一輸入而將至少該第一輸入表示為一帶正負號多字輸入。舉例而言,硬體電路之固定位元寬度可係16個位元,而第一輸入之一例示性資料結構之一位元寬度係32個位元。
電路100從至少第一輸入產生包含各自具有多個位元之多個帶正負號字的一帶正負號多字輸入(304)。帶正負號多字輸入/數係包含N個字之一經移位帶正負號數,各N字包含B個位元。一般而言,N可係大於1之一整數且B係大於1之一整數。舉例而言,回應於分析第一輸入之資料結構,輸入處理器104可判定該第一輸入包括32個位元。輸入處理器104可判定或運算第一輸入中之位元數目與針對硬體電路之固定位元寬度之位元數目之間之一差。
輸入處理器104可基於運算差而產生一帶正負號多字數。在一些實施方案中,使用形成第一輸入102之32位元資料結構之位元之一部分來產生帶正負號多字數之各字。舉例而言,帶正負號多字數可由四個8位元數或兩個16位元數形成。此等數可對應於上文描述之帶正負號多字數106及108。在一些情況中,帶正負號多字數之各字係一帶正負號字,其包含來自第一輸入之位元之一部分及表示形成該帶正負號多字數之帶正負號字之一符號之一對應符號位元。
在一些實施方案中,當一經移位帶正負號多字數由四個8位元數形成時,此經移位帶正負號數包含N = 4個字,其中各N字包含B = 8個位元。由各自具有位元寬度B之N個普通帶正負號數表示此「經移位帶正負號N字B位元數」。藉由實例,使a0、a1、…、a{N-1}係該等普通帶正負號數,且使a係各數一起表示之經移位帶正負號數。經移位帶正負號數之一數值u定義為:
Figure 02_image017
,其中a表示帶正負號多字輸入之一各自帶正負號字。個別字a0、a1、…、a{N-1}係各帶正負號數。在一些其他實施方案中,一原始輸入數經零擴展(例如,在最高有效端處添加「0」位元)或符號擴展(例如,將原始輸入數之最高有效位元複製至過量位元)直至位元寬度係B的倍數。
如上文論述,一資料格式可具有可使用該資料格式表示之一有限數值範圍。在一些實施方案中,經移位帶正負號多字數具有一可表示數字範圍,該可表示數字範圍基於用於表示普通二的補數之數字範圍之一例示性已知表達式進行定義,但其包含一額外參數S。使用下式來獲得經移位帶正負號多字數之數字範圍:
Figure 02_image019
。參數S將一移位函數引入至用於表示二的補數之數字範圍之已知表達式。舉例而言,當B = 8且N = 2時,普通二的補數具有一可表示範圍,即:         [-32,768, 32,767]。使用已知表達式來獲得普通二的補數之此範圍:
Figure 02_image021
Figure 02_image023
。關於本文件中描述之唯一資料格式,參數S用於將已知表達式相對於普通N字*B位元二的補數可表示範圍向左(例如,朝向負無窮大)移位達一距離S。在一些實施方案中,基於下式定義S及對應移位:
Figure 02_image025
Figure 02_image027
在一些實施方案中,硬體電路100及輸入處理器104使用一量化方案以基於硬體電路之固定位元寬度而修改第一輸入之一資料格式。量化方案經組態以藉由產生各自字部分以將第一輸入表示為帶正負號多字輸入而修改第一輸入之資料格式。舉例而言,可基於一特定量化方案而修改用於從一神經網路層之參數或核心權重值產生帶正負號多字數之資料格式,使得參數可適當地用於運算層之一輸出。對於產生之帶正負號多字輸入,包含各各自字部分之總位元寬度可等於硬體電路之固定位元寬度。在一些實施方案中,輸入處理器104經組態以調整特定軟體方案以重新量化或改變在電路100處獲得並處理參數及權重的方式。
電路100將帶正負號多字輸入及一帶正負號第二輸入提供至乘法硬體以進行乘法(306)。帶正負號第二輸入對應於所接收之第二輸入。在一些實施方案中,第二輸入可對應於未超過硬體電路之一位元寬度之帶正負號輸入或另一經移位帶正負號多字數。在一些其他實施方案中,第二輸入對應於確實超過硬體電路之一位元寬度之一帶正負號輸入,使得電路100從第二輸入產生一帶正負號多字數。
電路100使用至少第一輸入及第二輸入從乘法硬體產生一帶正負號乘積(308)。舉例而言,電路100回應於將第一輸入之經移位帶正負號多字數與第二輸入之經移位帶正負號多字數相乘而產生一帶正負號乘積116或118。此等經移位帶正負號多字輸入包含多個各自字且乘法電路114經組態以藉由將帶正負號多字第一輸入之各字與帶正負號多字第二輸入之各字相乘而產生帶正負號乘積。經移位帶正負號多字數之一優勢係其等可相乘而無需一不帶正負號硬體乘法器。舉例而言,為運算兩個此等數a及b之帶正負號乘積116:
Figure 02_image029
Figure 02_image031
, 硬體電路100運算a i* b j之乘積,其等可全部使用電路100之帶正負號硬體乘法器進行運算。
已描述若干實施例。然而,將瞭解,可在不脫離本發明之範疇之情況下作出各種修改。舉例而言,可使用上文展示之各種形式之流程,其中重新排序、添加或移除步驟。因此,其他實施例在以下發明申請專利範圍之範疇內。雖然本說明書含有許多特定實施方案細節,但此等不應被解釋為對可主張之內容之範疇之限制,而係解釋為可能特定於特定實施例之特徵之描述。本說明書中在單獨實施例之背景內容中描述之某些特徵亦可在一單一實施例中組合實施。
相反地,在一單一實施例之背景內容中描述之各種特徵亦可在多個實施例中分別或以任何適合子組合實施。此外,儘管特徵在上文中可被描述為以某些組合起作用且甚至最初如此主張,然來自一所主張組合之一或多個特徵在一些情況中可從組合刪除,且所主張組合可能係關於一子組合或一子組合之變化例。
類似地,雖然在圖式中以一特定順序描繪操作,但此不應被理解為要求以展示之特定順序或以循序順序執行此等操作,或執行全部繪示操作以達成所要結果。在某些情境中,多任務及並行處理可係有利的。此外,上文中描述之實施例中之各種系統模組及組件之分離不應被理解為在全部實施例中要求此分離,且應瞭解,所描述之程式組件及系統通常可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。舉例而言,發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,附圖中描繪之程序不一定要求所展示之特定順序,或循序順序以達成所要結果。在一些情況中,多任務及並行處理可係有利的。
100:專用硬體電路 102:輸入 103:運算單元 104:輸入處理器 106:經移位帶正負號多字數 108:經移位帶正負號多字數 110:帶正負號硬體乘法器 112:帶正負號硬體乘法器 113:選用連接件 114:乘法電路 116:帶正負號乘積 118:帶正負號乘積 120:加法器電路 122:帶正負號輸出 200:程序圖 204:步驟 205:步驟 206:步驟 208:步驟 210:步驟 212:步驟 214:輸入 300:程序 302:步驟 304:步驟 306:步驟 308:步驟
圖1展示用於將輸入相乘之一例示性專用硬體電路之一圖式。
圖2展示用於產生提供至帶正負號硬體乘法器以產生一帶正負號輸出之帶正負號多字輸入之一流程圖。
圖3展示用於在所描述之硬體乘法器電路中將輸入相乘之一例示性程序之一流程圖。
各個圖式中之相同元件符號及名稱指示相同元件。
100:專用硬體電路
102:輸入
103:運算單元
104:輸入處理器
106:經移位帶正負號多字數
108:經移位帶正負號多字數
110:帶正負號硬體乘法器
112:帶正負號硬體乘法器
113:選用連接件
114:乘法電路
116:帶正負號乘積
118:帶正負號乘積
120:加法器電路
122:帶正負號輸出

Claims (1)

  1. 一種用於將輸入集相乘之硬體電路,該硬體電路經組態用於一單一模式操作且包括: 處理電路,其接收一第一輸入及一第二輸入,該第一輸入及該第二輸入之各者具有一各自位元寬度且係一帶正負號(signed)輸入或一不帶正負號(unsigned)輸入, 其中該處理電路經組態以基於該第一輸入超過一固定位元寬度之一判定而從該第一輸入產生一第一經移位帶正負號多字數(shifted signed multiword number),及 其中該處理電路經組態以基於該第二輸入超過一固定位元寬度之一判定而從該第二輸入產生一第二經移位帶正負號多字數;及 一或多個帶正負號乘法器,其中該一或多個帶正負號乘法器經組態以: 接收該第一經移位帶正負號多字數; 接收該第二經移位帶正負號多字數;及 回應於將該第一經移位帶正負號多字數與該第二經移位帶正負號多字數相乘而產生一帶正負號輸出。
TW111133343A 2019-08-23 2020-08-21 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置 TW202319909A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962890932P 2019-08-23 2019-08-23
US62/890,932 2019-08-23

Publications (1)

Publication Number Publication Date
TW202319909A true TW202319909A (zh) 2023-05-16

Family

ID=72356504

Family Applications (2)

Application Number Title Priority Date Filing Date
TW111133343A TW202319909A (zh) 2019-08-23 2020-08-21 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
TW109128680A TWI776213B (zh) 2019-08-23 2020-08-21 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW109128680A TWI776213B (zh) 2019-08-23 2020-08-21 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置

Country Status (7)

Country Link
US (1) US20220283777A1 (zh)
EP (1) EP3987388A1 (zh)
JP (1) JP2022544854A (zh)
KR (1) KR20220031098A (zh)
CN (1) CN114341796A (zh)
TW (2) TW202319909A (zh)
WO (1) WO2021041139A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113391786B (zh) * 2021-08-17 2021-11-26 中科南京智能技术研究院 一种多位正负权重的计算装置
CN114816335B (zh) * 2022-06-28 2022-11-25 之江实验室 一种忆阻器阵列符号数乘法实现方法、装置及设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014684A (en) * 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
JP2000081966A (ja) * 1998-07-09 2000-03-21 Matsushita Electric Ind Co Ltd 演算装置
US6156711A (en) * 1998-08-31 2000-12-05 Brandeis University Thickened butyrolactone-based nail polish remover with applicator
US6421698B1 (en) * 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
US20130113543A1 (en) * 2011-11-09 2013-05-09 Leonid Dubrovin Multiplication dynamic range increase by on the fly data scaling
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
US10114642B2 (en) * 2015-12-20 2018-10-30 Intel Corporation Instruction and logic for detecting the floating point cancellation effect

Also Published As

Publication number Publication date
JP2022544854A (ja) 2022-10-21
WO2021041139A1 (en) 2021-03-04
US20220283777A1 (en) 2022-09-08
CN114341796A (zh) 2022-04-12
TWI776213B (zh) 2022-09-01
KR20220031098A (ko) 2022-03-11
TW202109281A (zh) 2021-03-01
EP3987388A1 (en) 2022-04-27

Similar Documents

Publication Publication Date Title
JP7476175B2 (ja) 乗算累積回路
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
CN110221808B (zh) 向量乘加运算的预处理方法、乘加器及计算机可读介质
US5280439A (en) Apparatus for determining booth recoder input control signals
TWI763079B (zh) 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置
US6601077B1 (en) DSP unit for multi-level global accumulation
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
CN115344237B (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
TWI776213B (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
CN112712172B (zh) 用于神经网络运算的计算装置、方法、集成电路和设备
CN117813585A (zh) 具有高效输入缩减和扩展阵列性能的脉动阵列
US9519459B2 (en) High efficiency computer floating point multiplier unit
KR20230121151A (ko) 디지털 곱셈기 회로망의 수치 정밀도
CN108229668B (zh) 基于深度学习的运算实现方法、装置和电子设备
WO2021073511A1 (zh) 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
CN116974517A (zh) 浮点数处理方法、装置、计算机设备和处理器
Li et al. An Area-Power-Efficient Multiplier-less Processing Element Design for CNN Accelerators
CN115827555A (zh) 数据处理方法、计算机设备、存储介质和乘法器结构
CN115374904A (zh) 一种用于神经网络推理加速的低功耗浮点乘累加运算方法
JPS6285333A (ja) 浮動小数点乗算器丸め処理方式
CN117435164A (zh) 高性能乘加器、乘加方法和电子设备
JP2002304288A (ja) データ演算処理装置及びデータ演算処理プログラム
JPH08305550A (ja) 積和演算器