TWI784980B - 用於執行算術運算以累加浮點數的裝置及方法 - Google Patents

用於執行算術運算以累加浮點數的裝置及方法 Download PDF

Info

Publication number
TWI784980B
TWI784980B TW106136025A TW106136025A TWI784980B TW I784980 B TWI784980 B TW I784980B TW 106136025 A TW106136025 A TW 106136025A TW 106136025 A TW106136025 A TW 106136025A TW I784980 B TWI784980 B TW I784980B
Authority
TW
Taiwan
Prior art keywords
point
floating
bit
circuitry
fixed
Prior art date
Application number
TW106136025A
Other languages
English (en)
Other versions
TW201821979A (zh
Inventor
大衛雷蒙 陸茲
尼爾 伯吉斯
克里斯朵夫尼爾 海德斯
安迪雅絲杜 英霍斯特韋特
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW201821979A publication Critical patent/TW201821979A/zh
Application granted granted Critical
Publication of TWI784980B publication Critical patent/TWI784980B/zh

Links

Images

Classifications

    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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
    • 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

本發明提供用於執行算術運算以累加浮點數之裝置及方法。裝置包含用以執行算術運算之執行電路系統,及解碼器電路系統,此解碼器電路系統用以解碼指令序列以產生控制訊號來控制由執行電路系統執行的算術運算。提供轉換及累加指令,且解碼器電路系統回應於解碼指令序列內之此種轉換及累加指令,以產生一或多個控制訊號來控制執行電路系統。特定言之,執行電路系統回應於這種控制訊號以將由轉換及累加指令識別之至少一個浮點運算元轉換成具有M分數位元的對應N位元定點運算元,其中M小於N且M取決於浮點運算元之格式。另外,執行電路系統累加每個對應N位元定點運算元及由轉換及累加指令識別之P位元定點運算元,以產生P位元定點結果值,其中P大於N且亦具有M分數位元。此處以關聯之方式提供了用於累加浮點數的快速且有效之機制,並由此使得產生可再生且正確之結果,而與累加浮點數之順序無關。

Description

用於執行算術運算以累加浮點數的裝置及方法
本方法係關於用以執行浮點數之累加的裝置及方法。
通常在資料處理系統中使用浮點(floating-point; FP)表示。浮點數包括有效數及指示有效數之位元的有效位的指數。這允許使用有限數目之位元表示大範圍內之數值。然而,伴隨浮點運算之問題為計算通常為非關聯性的。例如,當累加若干浮點值時,每次另一值添加至先前加法/減法之結果(此結果經捨入且正規化),或自先前加法/減法之結果減去,其意謂總體結果根據累加值之順序而不同。因此,和為非可再生的,除非以完全相同之順序完成。為了產生可再生之結果,必須通常順序地執行一系列加法或減法,其可能使浮點運算相對緩慢。
提供用於有效處理浮點數之累加的改良方法是值得期待的。
在一個示例性配置中,提供一種裝置,此裝置包含:執行電路系統,用以執行算術運算;及解碼器電路系統,用以解碼指令序列以產生控制訊號來控制由執行電路系統執行的算術運算;解碼器電路系統回應解碼序列內之轉換及累加指令以產生一或多個控制訊號來控制執行電路系統,以將由轉換及累加指令識別的至少一個浮點運算元轉換為具有M分數位元之對應N位元定點運算元,其中M小於N且M取決於浮點運算元之格式,以及用以累加每個對應N位元定點運算元及由轉換及累加指令識別之P位元定點運算元,以產生P位元定點結果值,其中P大於N且具有M分數位元。
在另一示例性配置中,提供一種在裝置內執行浮點數之累加的方法,此裝置具有用以執行算術運算之執行電路系統,及解碼器電路系統,此解碼器電路系統用以解碼指令序列以產生控制訊號來控制由執行電路系統執行的算術運算,此方法包含:在解碼器電路系統內解碼序列內之轉換及累加指令以產生一或多個控制訊號;以及回應於該一或多個控制訊號來控制執行電路系統以將由轉換及累加指令識別的至少一個浮點運算元轉換為具有M分數位元之對應N位元定點運算元,其中M小於N且M取決於浮點運算元之格式,以及用以累加每個對應N位元定點運算元及藉由轉換及累加指令識別之P位元定點運算元,以產生P位元定點結果值,其中P大於N且具有M分數位元。
在又一示例性配置中,提供一種裝置,此裝置包含:執行構件,用於執行算術運算;及解碼器構件,用於解碼指令序列以產生控制訊號來控制藉由執行構件執行的算術運算;此解碼器構件用於解碼序列內之轉換及累加指令以產生一或多個控制訊號;以及執行構件用於回應於該一或多個控制訊號,將由轉換及累加指令識別之至少一個浮點運算元轉換為具有M分數位元之對應N位元定點運算元,其中M小於N且M取決於浮點運算元之格式,以及用以累加每個對應N位元定點運算元及由轉換及累加指令識別之P位元定點運算元,以產生P位元定點結果值,其中P大於N且具有M分數位元。
在參考附圖論述實施例之前,提供了對實施例的以下描述。
在一個實施例中,提供一種裝置,此裝置具有用於執行算術運算之執行電路系統,及解碼器電路系統,此解碼器電路系統用於解碼指令序列以產生控制訊號來控制藉由執行電路系統執行之算術運算,進而致使裝置執行由指令序列所需之運算。根據一個實施例,提供轉換及累加指令,其當在指令序列內被解碼器電路系統遇到時,致使解碼器電路系統解碼轉換及累加指令以產生用於執行電路系統之一或多個控制訊號。特定言之,彼等或一個控制訊號致使執行電路系統將藉由轉換及累加指令識別之至少一個浮點運算元轉換成具有M分數位元的對應N位元定點運算元。M小於N且M取決於浮點運算元之格式。由解碼器電路系統產生之一或多個控制訊號不僅致使上述自浮點格式至定點格式之轉換發生,而且致使執行電路系統累加在轉化過程中產生之每個N位元定點運算元及由轉換及累加指令識別之P位元定點運算元,以產生P位元定點結果值。P大於N且具有M分數位元。
每個此種轉換及累加指令可以指定一或多個浮點運算元。藉由將每個浮點運算元轉換成定點格式,隨後以定點格式執行累加,這使得累加比使用浮點運算之累加更快地執行,並且累加亦為關聯的。另外,藉由累加N位元定點運算元與P位元定點運算元,其中P大於N,這使得由對應浮點運算元之轉換產生之多個N位元定點運算元累加於P位元定點表示中,而無溢出之風險。可發生而無任何溢出之潜在風險的累加的次數將取決於N及P之值。
僅舉例而言,如若輸入浮點運算元為16位元浮點運算元(本文亦稱作FP16運算元),任意FP16值可表示為41位元(即,N為41)之定點表示;以及如若例如P為64,這種41位元定點值之223 可累加在64位元表示內,而無溢出之任何危險。如前所述,分數位元M之數目取決於使用之定點格式。再次假設,例如其中使用FP16值之情況,則最小可能之FP16值為2-24 ,並由此在41位元定點表示內最低有效24位元可以用作分數位元。
藉由以上述方式提供用以轉換及累加浮點值之單個指令,這提供用於以關聯之方式累加浮點值的尤其有效機制,因此允許產生可再生且正確之結果而與累加浮點數之順序無關。因此,這支援浮點累加處理之並行處理,使得當與使用浮點累加方法相比時可達成有效加速。
儘管浮點運算元原則上可以任意浮點格式提供,但已發現當浮點運算元為16位元浮點運算元時此方法尤其有益。特定言之,以定點格式表示此種浮點運算元所需之位元數相對較小,且在現代資料處理系統中顯著小於標準暫存器大小。例如,通常使用64位元暫存器,由此處理64位元運算元。因為FP16值可經轉換為41位元定點表示,但是許多這種浮點值可以累加進64位元寬執行管線內。
在一個實施例中,裝置進一步包含當執行該等算術運算時執行電路系統可存取之一組暫存器。轉換及累加指令可以具有識別該組暫存器內之至少一個第一源暫存器的第一暫存器識別符欄位,該至少一個第一源暫存器含有至少一個浮點運算元;及識別該組暫存器內之第二源暫存器的第二暫存器識別符欄位,第二源暫存器含有P位元定點運算元。儘管不止一個第一源暫存器可用以識別待轉換為定點表示且隨後與定點運算元累加進第二源暫存器中之所需浮點運算元,但在許多實例中單個第一源暫存器將足以識別在執行指令期間待處理之浮點運算元。例如,假設64位元暫存器、四個FP16浮點運算元可在單個64位元暫存器內指定,因此單指令可用以轉換四個FP16值並將產生之定點表示與第二源暫存器之內容累加。
儘管由轉換及累加指令之執行產生之P位元定點結果值可儲存在任意所要暫存器內,但在一個實施例中,第二源暫存器亦用作定點結果值之目標暫存器,以及因此在執行轉換及累加指令時,輸入P位元定點運算元將由指令之執行而產生之結果值改寫。
在一個實施例中,裝置可以採取SIMD(單指令多資料)裝置之形式。因此,執行電路系統可以採取提供複數個並行處理之路徑的SIMD電路系統的形式,其中每條路徑具有P位元之寬度。在此種實施例中,轉換及累加指令可以採取SIMD指令之形式,對於複數條路徑之多條路徑的每一者,此SIMD指令識別待轉換為對應N位元定點運算元之至少一個浮點運算元,及待累加至其之對應N位元定點運算元之每一者的P位元定點運算元。
此種方法因此藉由允許累加浮點運算元之有效並行處理而提供用於進一步效能改良之潛能。在其中SIMD執行電路系統提供並行處理之L條路徑的實施例中,由轉換及累加指令指定之第一及第二源暫存器可以為Lx64位元暫存器,以及轉換及累加指令識別對於L路徑之每一路徑含有高達四個16位元浮點數的第一源暫存器。執行電路系統隨後回應於一或多個控制訊號,此一或多個控制訊號藉由解碼器電路系統回應於解碼轉換及累加指令而產生,以在多個路徑之每一路徑內執行將高達四個16位元浮點數之每一者轉換成對應定點運算元,以及累加每個對應定點運算元及含在第二源暫存器內之64位元定點運算元而產生,以產生含在含有來自每條路徑之結果值的Lx64位元結果內之64位元結果值。因此,藉由這種方法,多個結果值可在Lx64位元結果內俘獲並因此寫入執行電路系統可存取之暫存器的一者中。
可執行此種轉換及累加指令之多個實例以執行大量浮點運算元之累加,其中結果以定點表示來表示。一旦已獲得最終結果,則在一個實施例中,結果之產生的定點表示可轉換回所要浮點格式之浮點數。例如,在一個實施例中,指令序列進一步包含定點至浮點轉換指令,該指令當藉由解碼器電路系統解碼時,致使執行電路系統將由轉換及累加指令之更多實例之一者的執行獲得的定點結果值轉換成具有由定點至浮點轉換指令指定之浮點格式的浮點結果值。應注意,結果轉換成其之浮點格式不一定為與累加之初始輸入浮點運算元相同之浮點格式。例如,可以使用上述方法(結果值將不再符合FP16格式)累加足夠數目之16位元浮點運算元,而不執行捨入運算。然而,這可輕易地符合FP32(32位元浮點)格式,例如因此定點至浮點轉換指令可將定點結果值轉換成FP32值。
在一個實施例中,輸入浮點運算元為標準浮點表示。然而,在替代實施例中,由轉換及累加指令識別之至少一個浮點運算元可以包含複數個浮點值之未捨入乘積。這將意謂輸入浮點表示比標準浮點表示具有更多位元。然而,執行電路系統可將浮點表示轉換成適宜大小之定點表示,隨後將此類轉換值之多個實例累加進更寬之定點表示中。或者,由轉換過程產生之定點表示可在累加之前捨位,以便避免用以表示定點累加值之位元數的增加。
執行電路系統可採取各種形式。然而,在一個實施例中,執行電路系統包含:提供一或多個轉換方塊之轉換電路系統,每個轉換方塊經佈置以接收由轉換及累加指令識別之輸入浮點運算元及用以產生對應N位元定點運算元;以及累加電路系統,其用以執行累加運算以累加每個對應N位元定點運算元及該P位元定點運算元以產生該P位元定點結果值。
每個轉換方塊可採取各種形式,但在一個實施例中,每個轉換方塊包含:有效數產生電路系統,用以產生來自輸入浮點運算元之分數位元的有效值及輸入浮點運算元之指數位元之邏輯組合;以及移位電路系統,該移位電路系統回應於為規範浮點值之輸入浮點值,用以對有效數值執行左移運算達一移動量,此移動量取決於由該指數位元指示之指數值,以產生輸出值。如若需要,輸出值隨後可在累加之前擴充至P位元格式。
回應於轉換及累加指令執行之累加可包括將產生之轉換定點值添加至由轉換及累加指令指定之P位元定點運算元,但在其他實施例中可涉及加法或者減法任一者。為了使得能夠實現使用累加電路系統內之加法電路計算之減法,在一個實施例中每個該轉換方塊另外包含:一的補數電路系統,用以當浮點運算元之符號位元指示輸入浮點運算元為負數時對輸出值執行一的補數運算。在這種實施例中,浮點運算元之符號位元可以用作累加電路系統之進位位元。因此,如若浮點運算元為正數,則將零之進位值提供至累加電路系統;而如若浮點運算元為負值,則將1之進位位元提供至累加電路系統。
累加電路系統可以各種方式佈置,但在一個實施例中經佈置以執行每個對應N位元定點運算元及該P位元定點運算元之二的補數加法,以產生該P位元定點結果值。
如前所述,在許多實施例中,將大量轉換浮點運算元累加進P位元定點表示內,而無溢出之任何風險將是可能的。然而,為調節其中可能發生溢出之情況,在一個實施例中累加電路系統可包括溢出偵測電路系統,其用以當累加電路系統之最高有效位元位置之進位不等於來自彼最高有效位元位置之進位輸出時偵測溢出條件。溢出之偵測可採取許多步驟。例如,在一個實施例中,可由裝置用訊號發出溢出異常。
具體實施例現將參考附圖描述。
浮點(floating-point; FP)為使用少量位元處理實數之有用方法。IEEE 754-2008 FP標準提出FP數之多個不同格式,其中之一些為二進位64(亦稱為雙倍精度,或DP)、二進位32(亦稱為單倍精度,或SP)、及二進位16(亦稱為半精度,或HP)。數目64、32及16指每個格式所需之位元的數目。表示
FP數非常類似於科學課程中教示之「科學計數法」,而不是我們寫之兩百萬的負數-2.0 x 106 。此數目之部分為符號(在負數之情況下)、有效數(2.0)、指數之基數(10)及指數(6)。該等部分之全部在FP數中具有類似項,儘管存在差異,但其之最重要部分為儲存為二進制數之組成部分,以及指數之基數總為2。
更確切而言,所有FP數包括符號位元、一些數目之偏移指數位元及一些數目之分數位元。特定言之,我們感興趣之格式包括以下位元:
Figure 106136025-A0304-0001
對於負數符號為1及對於正數符號為0。包括0之每個數具有符號。
偏移指數,其意謂真指數不同於儲存在數中之一指數。例如,偏移SP指數為8位元長並在0至255之範圍中。指數0及255為特殊情況,但所有其他指數具有偏移127,其意謂著真指數為小於偏移指數的127。最小偏移指數為1,其對應於-126之真指數。最大偏移指數為254,其對應於127之真指數。HP及DP指數與在上表中指示之偏移值以相同方式工作。
SP指數255(或DP指數2047,或HP指數31)保留用於無限數及稱作NaNs之特殊符號(而非數字)。無限數(其可為正數或負數)具有零分數。具有指數255及非零分數之任意數為NaN。無限數提供飽和值,所以其實際上意謂「計算產生之數字大於我們可以用這種格式表示的數」。對於在實數上沒有數學定義之操作返回NaN,例如除以零或取負數的平方根。
以任何格式之指數零保留為次規範數及零。規範數表示值: -1符號 ×1.分數×2e 其中e為由偏移指數計算之真指數。術語1.分數稱作有效數,且1沒有儲存為FP數之部分,而改為從指數推測。除零及最大指數之外的全部指數指示形式1.分數之有效數。指數零指示形式0.分數之有效數,以及對於給定格式真指數等於1偏差。這種數稱為次規範(歷史上這些數稱為非規範,但現代用法更傾向術語次規範)。
具有等於零之指數及分數兩者之數為零。
下表具有以HP格式之一些示例數。實數為二進制的,其中「_」字符經添加以增大可讀性。應注意,次規範條目(表之第4行,具有零指數)在前一行中產生不同於規範條目之有效數。
Figure 106136025-A0304-0002
Figure 106136025-A0304-0003
FP實施之複雜性之大部分起因於次規範,因此它們經常由微碼或軟體處理。一些處理器處理硬體中之次規範,進而相比於軟體或微碼實施,將該等運算加速10倍至100倍。整數、定點、浮點
處理符號之FP方式稱作符號數值,並且它與整數儲存在電腦中(二的補數)之常用方式不同。在符號數值表示中,同一數之正負版本僅在符號位元中不同。包括符號位元及3個有效數位元之4位元符號數值整數將表示加一與減一,如下: +1=0001 -1=1001
在二的補數表示中,n位元整數i由二進制n+1位元值2n +i之低階n位元表示,所以4位元二的補數整數將表示加一與減一,如下: +1=0001 -1=1111
二的補數格式實質上對於帶符號之整數為通用的,因為它簡化了電腦運算。
定點數看起來完全像整數,但實質上表示具有若干分數位元之值。感測器資料通常為定點格式,以及存在廣泛採用FP之前寫入的大量定點軟體。定點數是非常繁瑣的工作,因為程式員必須跟蹤「二進位點」,即數之整數及小數部分之間的分隔符號,並且亦必須不斷地移動數字以保持位元在正確之位置。FP數沒有這個困難,所以希望能夠在定點數與FP數之間進行轉換。能夠轉換亦意謂著我們可仍然使用定點軟體及資料,但當寫入新軟體時我們並不限於定點。FP 數不是實數
很容易將FP數看作實數,但它們根本上不同,即使是最基本的屬性: 1. 其為不關聯的。例如,在SP中我們可添加3個數字並返回1百萬或零,或許不是人們認為捨入誤差之情況: (245 +-245 )+220 =220 245 + (-245 + 220 ) = 0 2. 其不服從分配規律。此外,在SP中: 3,000,001*(4.00001+5.00001)=0x4bcdfe83 (3,000,001*4.00001)+(3,000,001*5.00001)=0x4bcdfe82以及事情在溢出存在之情況下變得更加糟糕: 250 *(278 -277 )=2127 (250 *278 )-(250 *277 )=無限數 3. 由於IEEE NaN規則,沒有乘法或加法身份。一或零作為數值之身份工作。
用以考慮FP數之一個有用方式為假定它們為非常長之定點數,其中至多一些(對於HP為11)連續位元可為非零。例如,非無限HP數可以在30個位置的任何一個中具有有效數的第一位元,並且第一位元後跟10個其他分數位元,並且有一個符號位元,因此任何有限之HP數皆可以表示為30+10+1=41位元定點數。
根據下文描述之實施例,提供轉換及累加指令,該指令當由裝置執行時,致使由轉換及累加指令識別之一或多個浮點運算元的每一運算元轉換成具有M分數位元之對應N位元定點運算元,其中M小於N且M取決於浮點運算元之格式。指令之執行另外致使產生之定點運算元的每一者與亦由轉換及累加指令識別之P位元定點運算元累加,以產生P位元定點結果值,其中P大於N且具有M分數位元。如從以下描述之實施例清晰可見,此處以關聯之方式提供了用於累加浮點數的尤其快速且有效之機制,由此使得能夠產生可再生且正確之結果,而與累加浮點數之順序無關。
第1圖圖示根據一個實施例之裝置。解碼器電路系統10經佈置以接收自記憶體提取之指令流,並解碼每個指令以產生一或多個控制訊號來控制藉由執行電路系統20執行之操作。由解碼器電路系統產生之控制訊號選擇性地經由發布隊列15轉發至執行電路系統,在發佈隊列15中各解碼指令在發布至執行電路系統內之適宜部件之前可以暫時駐留。執行電路系統可包含許多執行單元,例如用於執行算術運算之算術邏輯單元(arithmetic logic unit; ALU)、用於執行浮點運算之浮點單元(floating-point unit; FPU)、用於執行乘法累加運算之乘法累加(multiply-accumulate; MAC)單元等等。執行電路系統亦可包括用於將浮點數轉換成定點表示,及類似地將定點數轉換成浮點表示之部件。
如下文將更詳細地論述,當解碼器電路系統10解碼上述轉換及累加指令之一者時,這致使轉換電路系統25用以將由指令指定之一或多個浮點運算元的每一者轉換成對應定點運算元。另外,累加電路系統30(其可設置在執行電路系統之任意適宜指定單元內,例如ALU內)隨後用以使用由轉換電路系統25產生之定點運算元及由轉換及累加指令識別之定點運算元的每一者作為輸入來執行累加運算,從而引起定點結果值之產生。
如在第1圖中圖示,執行電路系統20可存取一組工作暫存器35,其中可儲存源運算元及目標運算元。因此,例如在一個實施例中,轉換及累加指令可指定含有將轉換為定點格式之一或多個浮點運算元的一個源暫存器,並且亦指定含有待在累加運算中使用之輸入定點運算元的另一源暫存器。如若需要,亦可指定單獨的目標暫存器,但在一個實施例中,目標暫存器與含有輸入定點運算元之源暫存器相同。
第2A圖示意地圖示了根據一個實施例之設置在轉換及累加指令內的欄位。在此實例中,假定指令僅指定單個輸入浮點運算元而非指定多個輸入浮點運算元,以及因此指令之此變體在本文中將稱作純量轉換及累加指令。欄位52具有指示指令為指令之純量變體的數值,及操作碼54包含識別指令為轉換及累加指令之許多位元。欄位56指定在其內指定單個浮點運算元之源暫存器。儘管原則上浮點運算元可為任意浮點格式,但對於本文描述之實施例,將假定輸入浮點運算元為FP16浮點運算元(本文亦稱作HP浮點運算元)。源暫存器可以具有足以儲存浮點運算元之任意適宜大小。然而,在一個實施例中,假定暫存器檔案35內之暫存器為64位元暫存器,以及因此FP16值將由在欄位56中識別之源暫存器內的某子集之位元指定。通常將預定源暫存器內之何子集之位元識別FP16值。
欄位58識別含有64位元定點值之第二源暫存器。在一個實施例中,對於由於執行轉換及累加運算而產生之結果,源暫存器亦用作目標暫存器。
如亦在第2A圖中圖示,可在指令內設置一或多個可選擇的欄位59,例如用以識別指定需要存在以便執行指令之條件的條件碼。
如隨後參看剩餘附圖更詳細地描述,當執行轉換及累加指令時,轉換電路系統25用以將在源暫存器1中指定之FP16值轉換成定點格式。特定言之,在一個實施例中,FP16值轉換成具有24分數位元之41位元定點值。任意FP16值可轉換成表示在41位元內之定點格式。應注意,這顯著小於設置在暫存器內之64位元,以及因此當執行累加運算以累加產生之定點表示之FP16值與在源暫存器2中指定之64位元定點值時,非常不可能發生溢出,除非源暫存器2中之值已經相對接近於64位元格式中可表示之最大值。如隨後論述,如若需要偵測溢出條件,可仍然提供溢出偵測電路系統。
第2B圖圖示指令之另一形式,其中多個輸入浮點運算元在第一源暫存器內指定。因此,歸因於在源暫存器1內指定之輸入浮點值的向量,轉換及累加指令之格式將在本文稱作向量轉換及累加指令。特定言之,在一個實施例中,源暫存器為64位元暫存器,由此根據在第2B圖中圖示之指令之向量變體,欄位66識別含有四個FP16值之源暫存器。
因此,指令60之向量變體具有欄位62,其設置以將指令識別為指令之向量變體,以及欄位64中之操作碼識別指令為轉換及累加指令,並識別四個浮點值與由欄位66識別之源暫存器一起指定。欄位68類似於第2A圖之欄位58,並識別64位元定點值用作累加運算之輸入。此外,如若需要提供可選擇的欄位69,例如用以指定條件碼。
應理解,可提供指令之其他變體。例如,可提供另一向量變體,其中欄位66中之源暫存器識別多於一個,但小於四個之FP16值,例如識別兩個FP16值。操作碼隨後將識別轉換及累加指令將在源暫存器1內指定之兩個FP16值上運行。
第3圖為圖示了可以提供以在第1圖之轉換電路系統25內實施FP16至定點轉換方塊的部件的方塊圖。這個方塊在指定為運算元A 105之單個輸入FP16值上運行。如從HP浮點值之先前論述將顯而易見,FP16運算元將為16位元值,其中位元15為符號位元,位元14至位元10提供指數值,且位元9至位元0識別分數部分。如在第3圖中圖示,將分數部分提供至左移電路系統115,且五個指數位元係藉由或(OR)電路系統110經歷邏輯或操作以產生單個位元輸出。假定浮點值為規範浮點值,來自或電路系統110之輸出將為邏輯一值,其當前置至10位元分數時產生輸入至左移電路系統115之11位元有效數值。在浮點運算元為次規範之情況下,邏輯零值隨後將自或電路系統110輸出且前置至分數位元以形成輸入至左移電路系統115的有效數。
佈置左移電路系統115,當輸入浮點值為規範浮點值時,以及因此將輸入至左移電路系統之有效數之最高位元設置為邏輯一值,以執行左移操作達一量,此量由 自指數減去從或電路系統110輸出之規範值(即1)來決定。當數值「expa-規範」為零時對於次規範浮點輸入不執行左移。可執行之最大左移量為30個位元,以及因此左移電路系統之輸出表示為41位元值。
在此後描述之實施例中,累加電路系統在64位元輸入上運行,以及因此來自FP16至定點方塊100之41位元輸出在一個實施例中被符號擴充至64位元。達成此之一方式為在將產生之64位元值輸入至一的補數電路系統120中之前將23個零前置至移位器115之輸出。
如若輸入浮點值之符號在邏輯「0」值處,則指示浮點值為正數,則不用藉由一的補數電路系統120進行調整,並且輸入64位元值輸出為64位元值「fixeda」。符號位元亦輸出為用於累加電路系統之進位位元「cina」,並且應理解對於正數,進位位元因此為零。然而,如若符號位元指示浮點數為負的,則藉由電路系統120執行一的補數操作以產生至電路系統之輸入的一的補數版本,其中一的補數版本輸出為值fixeda。在這種情況下,進位值cina經設置為邏輯一值。藉由此方法,應理解,下游累加電路系統可執行二的補數加法,以及將準確地從由轉換及累加指令指定之輸入定點運算元減去定點表示之浮點數,在此情況下,浮點運算元為負數。類似地,如若浮點運算元為正數,則藉由累加電路系統執行之二的補數加法準確地將定點表示之浮點數添加至輸入定點運算元。
第4圖為圖示了在第3圖中圖示之FP16至固定區塊電路系統100可以如何耦接至累加電路系統以執行由描述之實施例之轉換及累加指令所需的轉換及累加運算的方塊圖。如在第4圖中圖示,將輸入浮點運算元105提供至以先前參考第3圖論述之方法操作的FP16至定點區塊100,以及因此輸出64位元值fixeda(其如前所述僅為FP16值之41位元定點表示的符號擴展版本),以及進位值cina。fixeda值提供為至累加電路系統150之一個輸入,其接收由轉換及累加指令指定之64位元定點運算元作為其其他輸入。如前論述,在一個實施例中,含有彼值之源暫存器155亦充當目標暫存器,以及因此如第4圖中圖示,暫存器155亦連接至累加電路系統150之輸出。因此,應理解,累加電路系統150執行兩個64位元輸入值之二的補數加法,其中對於加法,fixeda值將表示為來自左移電路系統115之零擴充輸出及進位位元將為零;而對於減法,fixeda值將為來自左移電路系統115之零擴充輸出之一的補數,以及進位值將設置為一。
如前所述,因為定點表示之FP16浮點值可表示為41位元,所以許多FP16值可累加進64位元寬定點表示中。特定言之,這種數之223 可累加進64位元定點表示中而沒有溢出之任何危險。然而,溢出偵測可藉由提供溢出標記160而輕易地提供,如若至64位元累加器150之高階位元的進位不等於自高階位元位置之進位輸出,則設置溢出標記160。當設置溢出標記160時,可在裝置內觸發動作以處理溢出。例如,在一個實施例中可產生溢出異常。
儘管在一個實施例中藉由轉換及累加指令識別之每個浮點運算元為標準浮點格式,但在另一實施例中每個浮點運算元可為非標準格式;並且特定言之,例如可以包含複數個浮點值之未捨入乘積。當以這種未捨入形式時,輸入浮點運算元將包含資訊之更多位元。因此,當彼等浮點位元轉換為定點形式時,定點表示將亦通常包含更多位元。在一個實施例中這可以藉由在浮點至定點轉換方塊中具有更寬資料路徑以調節在浮點格式內提供之額外分數位元,以及藉由左移電路系統支援之更大潛在的左移量而調節。這隨後可能需要更大累加寬度得以支援,例如大於64位元的累加寬度。然而,在另一實施例中,浮點至定點轉換方塊之輸出可捨位以便輸出折算為所關注之範圍,以及隨後可仍然在標準處理寬度內累加,例如64位元寬度。
第5圖為圖示諸如先前參考第3圖論述之多個FP16至定點轉換方塊可以如何與轉換由轉換及累加指令之單個實例指定的轉換多個浮點運算元並行使用的方塊圖。特定言之,當使用第2B圖之先前描述之向量轉換及累加指令時,可以提供四個FP16至定點轉換方塊205、轉換方塊210、轉換方塊215、轉換方塊220,每個轉換方塊經佈置以接收在第一源暫存器200中指定的資料的16位元部分。特定言之,64位元源暫存器200將在此情況中含有四個16位元浮點運算元,且可將每個浮點運算元提供至FP16至定點轉換方塊之一者。彼等方塊將隨後產生41位元定點表示之每個浮點數,如先前在一個實施例中論述,其在輸出至累加電路系統之前將被符號擴充至64位元。在此情況中,累加電路系統包括5:2進位保留加法器,該進位保留加法器自四個FP16至定點轉換方塊205、轉換方塊210、轉換方塊215、轉換方塊220接收輸出,以及亦自第二源暫存器235接收64位元定點輸入運算元。保留進位加法器以標準方式操作以減少至可提供至64位元累加器230的形式的輸入,以產生最後的64位元累加結果。因為目標暫存器經指定與第二源暫存器相同,則如在第5圖中圖示,輸出回寫至暫存器235。
如在第5圖中說明,四個進位輸入(一者藉由FP16至定點轉換方塊205、轉換方塊210、轉換方塊215、轉換方塊220之每一者產生)經注入低階進位位元中,這些低階進位位元在保留進位加法器折算及進位至最後加法器中總為零。
藉由使用第5圖之電路系統,這使得單指令指定填入64位元字中之四個FP16值,並且用於待轉換成定點表示及隨後在單個循環內添加至定點數的彼等。
第6圖為圖示處理之流程圖,處理可根據一個實施例執行以使用先前描述之轉換及累加指令之一或多個實例累加一系列浮點運算元。在步驟300處,決定當前指令是否為轉換及累加指令。如若是,則指令藉由解碼器電路系統10解碼以產生控制訊號,此控制訊號在步驟305處控制執行電路系統20以將每個識別之FP16值轉換成定點表示,隨後將每個轉換值加至亦由指令指定之運算元的64位元定點值或自該定點值減去,以進而產生累加結果。此後,處理回到步驟300。如若在步驟300處決定當前指令不是轉換及累加指令,則在步驟310處決定指令是否為指定累加結果為源運算元的定點至浮點轉換指令。特定言之,一旦已執行轉換及累加指令之一或多個實例,則每個使用相同第二源暫存器以便經由執行轉換及累加指令之多個實例使得一系列浮點運算元能夠累加在一起,可期望將產生之累加結果轉換回浮點格式。這可藉由使用此種定點至浮點轉換指令獲得,其將通常指定用於結果之浮點格式。
因此,如若在步驟310處遇到定點至浮點轉換指令,則在步驟315將累加結果轉換成由指令指定之浮點格式的浮點數。隨後處理回到步驟300。如若在步驟310處,決定當前指令不是定點至浮點轉換指令,則如一般由方塊320俘獲的,指令不為用於執行浮點累加之指令,且僅以標準方法執行之指令。在步驟320處,指令可因此為在程式序列中之任意其他指令。此後處理回到300。
在另一實施例中,如在第7圖中示意圖示,裝置可以具有SIMD架構,其中執行電路系統識別並行處理之多路徑,以及轉換及累加指令可採取SIMD指令之形式。特定言之,在並行處理之路徑的每條路徑內,可獨立地並聯執行上述轉換及累加運算。在第7圖中圖示之實例中,假設SIMD執行電路系統具有並行處理之兩條路徑,但應理解,在其他SIMD佈置中可以提供多於兩條路徑。
用於轉換及累加指令之SIMD變體的基本指令格式類似於先前參考第2A圖及第2B圖論述之指令格式。然而,操作碼將識別指令為SIMD指令及源暫存器之每一者可為Lx64位元暫存器,其中L為並行處理之路徑的數目。因此,在第7圖之實例中,源暫存器之每個可為128位元暫存器,每個暫存器含有兩個64位元部分。假設使用第2B圖之變體,128位元第一源暫存器之每個64位元部分將識別四個FP16值。類似地,第二源暫存器之每個64位元部分將含有64位元累加值。該兩個源暫存器分別藉由元件400、元件420在第7圖中示意地圖示。關於可選擇之欄位,除可為指令之非SIMD變體提供之可選擇欄位外,對於SIMD變體,謂詞值可以經指定以識別哪條路徑為有效的,並且因此識別在哪條路徑內需要執行處理。例如,在具有四條路徑之SIMD架構中,可以期望在若干子集之路徑內(例如路徑1、路徑3及路徑4)執行轉換及累加運算,但不在路徑2內執行任何處理,且此可藉由使用這種謂詞值來指示。
如在第7圖中圖示,在每條路徑內,提供先前參考第5圖論述之彼電路系統相當的電路系統。因此,在路徑2內存在複數個FP16至定點轉換方塊405、轉換方塊410,其全部裝進累加電路系統415中。在其中存在四個FP16至定點轉換方塊之實例中,隨後累加電路系統415將包括在第5圖中圖示之5:2保留進位加法器225及加法器電路230。類似地,在路徑1內提供複數個FP16至定點轉換單元425、轉換單元430以及關聯累加電路系統435。假設第一源暫存器400,第一64位元部分經佈線進路徑1中及第二64位元部分經佈線進路徑2中。在個別路徑內,在64位元部分內之個別FP16值經佈線至各別FP16至定點轉換方塊405、轉換方塊410或轉換方塊425、轉換方塊430。類似地,關於包括兩個64位元定點輸入運算元之第二源暫存器420,彼等定點運算元之第一個經提供至路徑1中之累加電路系統435,而其他的提供至路徑2中之累加電路系統415。
因此,在每個路徑內可見,執行先前參考第5圖論述之處理,從而導致輸出兩個64位元累加結果,其隨後可在目標暫存器440內共同地俘獲到。如先前論述,在一個實施例中,目標暫存器440將實質上與第二源暫存器420相同,以及因此相乘之兩個累加結果將改寫第二源暫存器之上述內容。
藉由採用這種SIMD方法,此藉由允許有效並行處理浮點運算元之累加而提供用於進一步效能改良的潛能。
經由使用所述實施例之方法,提供用於以關聯方式累加浮點值的快速且有效機制,以及因此累加可以任意順序累加且完全地可再生為可能的。當與試圖使用浮點運算累加浮點值相比時,此方法之速度及準確度提供了顯著優勢,以及因此將在各種實際應用中提供顯著益處。例如,當處理深度學習問題時,這種方法將尤其有益。深度學習之運算為基礎地矩陣乘法(GEMM),因此它折算至大量沉積之總和。藉由採用本文描述之方法,大量浮點運算元,例如FP16運算元,可以完全決定性之方式累加,而與累加發生之順序無關。方法適用於並行處理,從而提供待實現之顯著效能改良。
在本申請案中,用詞「經配置以…」用以意謂著裝置之元件具有能夠執行定義運算之配置。在上下文中,「配置」意味著硬體或軟體之互連的佈置或方式。例如,裝置可以具有提供定義運算之專用硬體,或處理器或其他處理設備可以經程式化以執行功能。「經配置以」並未暗示裝置元件必須以任意方式改變以提供定義運算。
儘管本文參照附圖已經詳細描述了本發明之說明性實施例,但是應當理解,本發明不限於彼等精確實施例,並且可以在不脫離如由所附申請專利範圍限定的本發明的範圍和精神的情況下,由熟習該項技術者在其中實現各種改變、添加和修改。例如,可在不背離本發明之範圍之情況下,將從屬請求項之特徵與獨立請求項之特徵進行各種組合。
10‧‧‧解碼器電路系統15‧‧‧發佈隊列20‧‧‧執行電路系統25‧‧‧轉換電路系統30‧‧‧累加電路系統35‧‧‧暫存器52‧‧‧欄位54‧‧‧操作碼56‧‧‧欄位58‧‧‧欄位59‧‧‧欄位60‧‧‧指令62‧‧‧欄位64‧‧‧欄位66‧‧‧欄位68‧‧‧欄位69‧‧‧欄位100‧‧‧定點方塊105‧‧‧輸入浮點運算元110‧‧‧或電路系統115‧‧‧左移電路系統120‧‧‧電路系統150‧‧‧累加電路系統155‧‧‧暫存器160‧‧‧溢出標記200‧‧‧源暫存器205‧‧‧定點轉換方塊210‧‧‧轉換方塊215‧‧‧轉換方塊220‧‧‧轉換方塊225‧‧‧保留進位加法器230‧‧‧加法器電路235‧‧‧第二源暫存器300‧‧‧步驟305‧‧‧步驟310‧‧‧步驟315‧‧‧步驟320‧‧‧步驟400‧‧‧元件405‧‧‧定點轉換方塊410‧‧‧轉換方塊415‧‧‧累加電路系統420‧‧‧元件425‧‧‧定點轉換單元430‧‧‧定點轉換單元435‧‧‧關聯累加電路系統440‧‧‧目標暫存器
如附圖所示,下面僅以舉例方式參照本發明之實施例進一步說明本發明之技術,其中:
第1圖為根據一個實施例之系統的方塊圖;
第2A圖及第2B圖示意地圖示在一個實施例中使用之轉換及累加指令;
第3圖圖示根據一個實施例之16位元浮點(FP16)至定點轉換方塊;
第4圖圖示根據一個實施例之第3圖之FP16至定點轉換方塊可以如何連接至執行電路系統內之累加電路系統;
第5圖為圖示在一個實施例中多個FP16至定點轉換方塊可以如何連接至累加電路系統以回應於單個轉換及累加指令使得多個浮點值得以累加的圖表;
第6圖為圖示經由使用轉換及累加指令以及用以將最終結果值轉換回浮點格式的定點至浮點轉換指令,根據一個實施例執行之浮點累加運算的流程圖;以及
第7圖圖示根據一個實施例之SIMD實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序注記) 無
10‧‧‧解碼器電路系統
15‧‧‧發佈隊列
20‧‧‧執行電路系統
25‧‧‧轉換電路系統
30‧‧‧累加電路系統
35‧‧‧暫存器

Claims (18)

  1. 一種用於執行浮點數的累加的裝置,包含:執行電路系統,用以執行算術運算;及解碼器電路系統,用以解碼一指令序列以產生控制訊號來控制由該執行電路系統執行之該算術運算;該解碼器電路系統回應於解碼該序列內之一轉換及累加指令以產生一或多個控制訊號來控制該執行電路系統,以將由該轉換及累加指令識別之至少一個浮點運算元轉換成具有M分數位元之一對應N位元定點運算元,其中M小於N且M取決於該浮點運算元之一格式,以及累加每個對應N位元定點運算元及由該轉換及累加指令識別之一P位元定點運算元,以產生P位元定點結果值,其中P大於N且具有M分數位元;及一組暫存器,當執行該算術運算時該執行電路系統可存取該組暫存器;其中該轉換及累加指令具有識別該組暫存器內之至少一個第一源暫存器的一第一暫存器識別符欄位,該至少一個第一源暫存器含有該至少一個浮點運算元;及識別該組暫存器內之一第二源暫存器的一第二暫存器識別符欄位,該第二源暫存器含有該P位元定點運算元。
  2. 如請求項1所述之裝置,其中藉由該轉換及累加指令識別之該至少一個浮點運算元的每一者為16位元浮點運算元。
  3. 如請求項2所述之裝置,其中佈置該執行電路系統以將由該轉換及累加指令識別之該至少一個浮點運算元轉換成具有24分數位元之一對應41位元定點運算元。
  4. 如請求項1所述之裝置,其中由該轉換及累加指令識別之該P位元定點運算元為一64位元定點運算元。
  5. 如請求項1所述之裝置,其中佈置該執行電路系統以為該第二源暫存器中之儲存器輸出該P位元定點結果值。
  6. 如請求項1所述之裝置,其中該第一及第二源暫存器為64位元暫存器,以及該轉換及累加指令識別含有高達四個16位元浮點數之一第一源暫存器,該執行電路系統回應於該一或多個控制訊號,該一或多個控制訊號由該解碼器電路系統回應於解碼該轉換及累加指令而產生,以將該高達四個16位元浮點數之每一者轉換成一對應定點運算元,以及累加每個對應定點運算元及含在該第二源暫存器內之一64位元定點運算元,以產生一64位元結果值。
  7. 如請求項1所述之裝置,其中該執行電路系統為提供複數個並行處理之路徑的SIMD(單指令多資料)電路系統,每條路徑具有P位元之一寬度,以及該轉換及累加指令為一SIMD指令,該SIMD指令對於該複數個路徑之多條路徑的每一者,識別待轉換為一對應N位元定點運算元之至少一個浮點運算元,以及待累加至其之該等對應N位元定點運算元的一P位元定點運算元。
  8. 如請求項1中所述之裝置,其中:該執行電路系統為提供並行處理之L條路徑的SIMD(單指令多資料)電路系統,每條路徑具有P位元的一寬度,以及該轉換及累加指令為一SIMD指令,該SIMD指令對於該等L條路徑的多條路徑的每一者,識別待轉換為一對應N位元定點運算元的至少一個浮點運算元,以及待累加至其之該等對應N位元定點運算元的一P位元定點運算元;該第一及第二源暫存器為Lx64位元暫存器,以及該轉換及累加指令識別對於該L條路徑之每條含有高達四個16位元浮點數之一第一源暫存器,該執行電路系統回應於該一或多個控制訊號,該一或多個控制訊號由該解碼器電路系統回應於解碼該轉換及累加指令而產生,以在該多條路徑之每條內執行將該高達四個 16位元浮點數之每個轉換成一對應定點運算元,以及累加每個對應定點運算元及含在該第二源暫存器內之一64位元定點運算元,以產生包含在含有每條路徑之一結果值的一Lx64位元結果內的一64位元結果值。
  9. 如請求項1所述之裝置,其中該指令序列進一步包含一定點至浮點轉換指令,其當藉由該解碼器電路系統解碼時,致使該執行電路系統將藉由執行該轉換及累加指令之更多實例之一個實例而獲得的一定點結果值轉換成具有藉由該定點至浮點轉換指令指定之一浮點格式的一浮點結果值。
  10. 如請求項1所述之裝置,其中藉由該轉換及累加指令識別之該至少一個浮點運算元包含複數個浮點值之一未捨入乘積。
  11. 如請求項1所述之裝置,其中該執行電路系統包含:轉換電路系統,提供一或多個轉換方塊,每個轉換方塊經佈置以接收由該轉換及累加指令識別之一輸入浮點運算元並用以產生該對應N位元定點運算元;以及累加電路系統,用以執行一累加運算以累加每個對應N位元定點運算元及該P位元定點運算元,以產生該P位元定點結果值。
  12. 如請求項11所述之裝置,其中每個該轉換方塊包含:有效數產生電路系統,用以產生來自該輸入浮點運算元之分數位元的一有效數值及該輸入浮點運算元之指數位元之一邏輯組合;以及移位電路系統,回應於為一規範浮點值之該輸入浮點值,用以對該有效數值執行一左移達一移動量,該移動量取決於由該指數位元識別之一指數值,以產生一輸出值。
  13. 如請求項12所述之裝置,其中每個該轉換方塊進一步包含:一的補數電路系統,用以當該浮點運算元之一符號位元指示該輸入浮點運算元為一負數時對該輸出值執行一一的補數運算。
  14. 如請求項12所述之裝置,其中該浮點運算元之一符號位元用作該累加電路系統之一進位位元。
  15. 如請求項11所述之裝置,其中佈置該累加電路系統以執行每個對應N位元定點運算元及該P位元定點運算元之二的補數加法以產生該P位元定點結果值。
  16. 如請求項11所述之裝置,其中該累加電路系統包括用以當該累加電路系統之一最高有效位元位 置的一進位不等於彼最高有效位元位置之一進位輸出時偵測一溢出條件的溢出偵測電路系統。
  17. 一種執行一裝置內之浮點數的累加的方法,該裝置具有用以執行算術運算之執行電路系統、用以解碼一指令序列以產生控制訊號來控制由該執行電路系統執行的該算術運算的解碼器電路系統、以及當執行該算術運算時該執行電路系統可存取的一組暫存器,該方法包含以下步驟:在該解碼器電路系統內解碼該序列內之一轉換及累加指令,以產生一或多個控制訊號;以及回應於該一或多個控制訊號,控制該執行電路系統以將由該轉換及累加指令識別的至少一個浮點運算元轉換為一對應N位元定點運算元,該對應N位元定點運算元具有M分數位元,其中M小於N且M取決於該浮點運算元之一格式,以及用以累加每個對應N位元定點運算元及由該轉換及累加指令識別之一P位元定點運算元,以產生一P位元定點結果值,其中P大於N且具有M分數位元;其中該轉換及累加指令具有識別該組暫存器內之至少一個第一源暫存器的一第一暫存器識別符欄位,該至少一個第一源暫存器含有該至少一個浮點運算元;及識別該組暫存器內之一第二源暫存器的一第二暫存 器識別符欄位,該第二源暫存器含有該P位元定點運算元。
  18. 一種用於執行浮點數的累加的裝置,包含:執行構件,用以執行算術運算;解碼器構件,用以解碼一指令序列以產生控制訊號來控制由該執行構件執行之該算術運算;該解碼器構件,用於解碼該序列內之一轉換及累加指令,以產生一或多個控制訊號;以及該執行構件,回應於該一或多個控制訊號,用以將由該轉換及累加指令識別的至少一個浮點運算元轉換為一對應N位元定點運算元,該對應N位元定點運算元具有M分數位元,其中M小於N且M取決於該浮點運算元之一格式,以及用以累加每個對應N位元定點運算元及由該轉換及累加指令識別之一P位元定點運算元,以產生一P位元定點結果值,其中P大於N且具有M分數位元;以及一組暫存器,當執行該算術運算時該執行構件可存取該組暫存器;其中該轉換及累加指令具有識別該組暫存器內之至少一個第一源暫存器的一第一暫存器識別符欄位,該至少一個第一源暫存器含有該至少一個浮點運算元; 及識別該組暫存器內之一第二源暫存器的一第二暫存器識別符欄位,該第二源暫存器含有該P位元定點運算元。
TW106136025A 2016-12-06 2017-10-20 用於執行算術運算以累加浮點數的裝置及方法 TWI784980B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/370,660 2016-12-06
US15/370,660 US10216479B2 (en) 2016-12-06 2016-12-06 Apparatus and method for performing arithmetic operations to accumulate floating-point numbers

Publications (2)

Publication Number Publication Date
TW201821979A TW201821979A (zh) 2018-06-16
TWI784980B true TWI784980B (zh) 2022-12-01

Family

ID=60182813

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106136025A TWI784980B (zh) 2016-12-06 2017-10-20 用於執行算術運算以累加浮點數的裝置及方法

Country Status (5)

Country Link
US (1) US10216479B2 (zh)
KR (1) KR102447636B1 (zh)
CN (1) CN110036368B (zh)
TW (1) TWI784980B (zh)
WO (1) WO2018104696A1 (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10671345B2 (en) * 2017-02-02 2020-06-02 Intel Corporation Methods and apparatus for performing fixed-point normalization using floating-point functional blocks
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10698685B2 (en) * 2017-05-03 2020-06-30 Intel Corporation Instructions for dual destination type conversion, mixed precision accumulation, and mixed precision atomic memory operations
US10223114B1 (en) * 2017-09-29 2019-03-05 Intel Corporation Fixed point to floating point conversion
US10224954B1 (en) 2017-09-29 2019-03-05 Intel Corporation Floating point to fixed point conversion
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11609760B2 (en) 2018-02-13 2023-03-21 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11663002B2 (en) 2018-02-13 2023-05-30 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN116991226A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
KR102470893B1 (ko) 2018-06-27 2022-11-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
EP3757896B1 (en) 2018-08-28 2023-01-11 Cambricon Technologies Corporation Limited Method and device for pre-processing data in a neural network
EP3857353B1 (en) * 2018-09-27 2023-09-20 Intel Corporation Apparatuses and methods to accelerate matrix multiplication
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
US11372643B2 (en) * 2018-11-09 2022-06-28 Intel Corporation Systems and methods for performing instructions to convert to 16-bit floating-point format
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
PL3938894T3 (pl) 2019-03-15 2024-02-19 Intel Corporation Zarządzanie pamięcią wielokafelkową dla wykrywania dostępu krzyżowego między kafelkami, zapewnianie skalowanie wnioskowania dla wielu kafelków i zapewnianie optymalnej migracji stron
EP3938888A1 (en) 2019-03-15 2022-01-19 INTEL Corporation Systolic disaggregation within a matrix accelerator architecture
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US11934940B2 (en) 2019-04-18 2024-03-19 Cambricon Technologies Corporation Limited AI processor simulation
CN111832738B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
WO2020247077A1 (en) * 2019-06-04 2020-12-10 Micron Technology, Inc. Bit string accumulation in memory array periphery
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN112400176A (zh) 2019-06-12 2021-02-23 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
FR3097993B1 (fr) * 2019-06-25 2021-10-22 Kalray Opérateur de produit scalaire de nombres à virgule flottante réalisant un arrondi correct
US11663000B2 (en) * 2020-01-07 2023-05-30 SK Hynix Inc. Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator
US20220229633A1 (en) 2020-01-07 2022-07-21 SK Hynix Inc. Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US11403096B2 (en) * 2020-05-11 2022-08-02 Micron Technology, Inc. Acceleration circuitry for posit operations
US11188329B1 (en) * 2020-06-24 2021-11-30 Micron Technology, Inc. Dynamic precision bit string accumulation
CN111796798B (zh) * 2020-09-08 2020-12-22 腾讯科技(深圳)有限公司 一种定点与浮点转换器、处理器、方法以及存储介质
CN112036561B (zh) * 2020-09-30 2024-01-19 北京百度网讯科技有限公司 数据处理方法、装置、电子设备及存储介质
CN112416294B (zh) * 2020-11-20 2022-09-16 安谋科技(中国)有限公司 处理器及其二进制累加方法和计算机可读介质
US11442696B1 (en) * 2021-03-23 2022-09-13 SambaNova Systems, Inc. Floating point multiply-add, accumulate unit with exception processing
US20220308873A1 (en) * 2021-03-27 2022-09-29 Intel Corporation Apparatuses, methods, and systems for instructions for downconverting a tile row and interleaving with a register

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050125641A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for moving data between registers and memory
US20070220076A1 (en) * 2002-12-27 2007-09-20 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point presentations
US8977669B2 (en) * 2010-01-08 2015-03-10 International Business Machines Corporation Multi-input and binary reproducible, high bandwidth floating point adder in a collective network
TW201617857A (zh) * 2014-07-02 2016-05-16 上海兆芯集成電路有限公司 非不可分割分路融合乘積-累加之微處理器與方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5272654A (en) * 1991-09-26 1993-12-21 Advanced Micro Devices, Inc. System for converting a floating point signed magnitude binary number to a two's complement binary number
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
CN102566967B (zh) * 2011-12-15 2015-08-19 中国科学院自动化研究所 一种采用多级流水线结构的高速浮点运算器
US20140195581A1 (en) * 2013-01-08 2014-07-10 Analog Devices, Inc. Fixed point division circuit utilizing floating point architecture
US9608662B2 (en) * 2014-09-26 2017-03-28 Arm Limited Apparatus and method for converting floating-point operand into a value having a different format
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
CN106127302A (zh) * 2016-06-23 2016-11-16 杭州华为数字技术有限公司 处理数据的电路、图像处理系统、处理数据的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070220076A1 (en) * 2002-12-27 2007-09-20 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point presentations
US20050125641A1 (en) * 2003-12-09 2005-06-09 Arm Limited Data processing apparatus and method for moving data between registers and memory
US8977669B2 (en) * 2010-01-08 2015-03-10 International Business Machines Corporation Multi-input and binary reproducible, high bandwidth floating point adder in a collective network
TW201617857A (zh) * 2014-07-02 2016-05-16 上海兆芯集成電路有限公司 非不可分割分路融合乘積-累加之微處理器與方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
M. Muller.,etc.,"Exact Accumulation of Floating-Point Numbers," Proceedings, 10th IEEE Symposium on Grenable, France, IEEE Comput. Soc., 1991 *

Also Published As

Publication number Publication date
KR20190090817A (ko) 2019-08-02
CN110036368A (zh) 2019-07-19
TW201821979A (zh) 2018-06-16
CN110036368B (zh) 2023-02-28
US10216479B2 (en) 2019-02-26
US20180157464A1 (en) 2018-06-07
WO2018104696A1 (en) 2018-06-14
KR102447636B1 (ko) 2022-09-27

Similar Documents

Publication Publication Date Title
TWI784980B (zh) 用於執行算術運算以累加浮點數的裝置及方法
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
TWI761367B (zh) 用於融合乘加運算的系統、裝置及方法
EP3719639A2 (en) Systems and methods to perform floating-point addition with selected rounding
CN112639722A (zh) 加速矩阵乘法的装置和方法
EP3374853A1 (en) Multiplication of first and second operands using redundant representation
TW201102914A (en) Apparatus and method for dynamic floating point register precision control
TW201333818A (zh) 浮點捨入量決定處理器、方法及指令
WO2017081435A1 (en) Lane position information for processing of vector
WO2018138469A1 (en) An apparatus and method for processing input operand values
WO2017081434A1 (en) Redundant representation of numeric value using overlap bits
GB2549153B (en) Apparatus and method for supporting a conversion instruction
KR20210122828A (ko) 앵커 데이터 요소에서의 특수 값 인코딩
WO2017081436A1 (en) Overlap propagation operation
KR20210124347A (ko) 앵커 데이터 요소 변환
US11704092B2 (en) High-precision anchored-implicit processing
TWI841041B (zh) 用於融合乘加運算的系統、裝置及方法