TW202036269A - 迭代運算的處理 - Google Patents

迭代運算的處理 Download PDF

Info

Publication number
TW202036269A
TW202036269A TW109103625A TW109103625A TW202036269A TW 202036269 A TW202036269 A TW 202036269A TW 109103625 A TW109103625 A TW 109103625A TW 109103625 A TW109103625 A TW 109103625A TW 202036269 A TW202036269 A TW 202036269A
Authority
TW
Taiwan
Prior art keywords
iteration
floating
operand
result
circuit system
Prior art date
Application number
TW109103625A
Other languages
English (en)
Other versions
TWI822952B (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 TW202036269A publication Critical patent/TW202036269A/zh
Application granted granted Critical
Publication of TWI822952B publication Critical patent/TWI822952B/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
    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
    • 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
    • G06F7/485Adding; Subtracting
    • 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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
  • Optical Integrated Circuits (AREA)

Abstract

本發明揭示一種具有處理電路系統之裝置,該處理電路系統用以回應於由指令解碼器對迭代運算指令的解碼來執行迭代運算,該迭代運算包含處理的至少兩個迭代,其中一迭代取決於在先前迭代中產生之運算元。初始資訊產生電路系統執行給定迭代的處理的初始部分以產生初始資訊。結果產生電路系統執行給定迭代的處理的剩餘部分,以使用初始資訊來產生結果值。對於除了最終迭代之外的迭代,轉發電路系統將結果值作為迭代運算的下一迭代的運算元轉發。初始資訊產生電路系統與結果產生電路系統完成當前迭代的剩餘部分並行地開始執行下一迭代的初始部分,以提高效能。

Description

迭代運算的處理
本發明之技術係關於資料處理的領域。
諸如微處理器之資料處理裝置可具有:指令解碼器,用以解碼程式指令;及處理電路系統,用以回應於程式指令的解碼執行處理運算。在設計處理電路邏輯時可能會存在挑戰,以便對於給定指令的運算可在由期望得以支援的時鐘頻率施加的時序約束之內完成。
至少一些實例提供一種裝置,包含: 指令解碼器,用以解碼程式指令;及 處理電路系統,用以回應於由指令解碼器對迭代運算處理的解碼,執行包含複數個處理迭代的迭代運算,對於該複數個處理迭代,除了第一迭代之外的後續迭代取決於在先前迭代中產生的運算元; 處理電路系統包含: 初始資訊產生電路系統,用以執行給定迭代的處理的初始部分以產生初始資訊; 結果產生電路系統,用以執行給定迭代的處理的剩餘部分,以使用由初始資訊產生電路系統判定的初始資訊來產生結果值;及 轉發電路系統,用以當給定迭代為除了最終迭代之外的迭代時,將在給定迭代中產生的結果值作為迭代運算的下一個迭代的運算元轉發;其中: 當結果產生電路系統執行除了最終迭代之外的給定迭代的剩餘部分時,初始資訊產生電路系統經配置以與結果產生電路系統完成當前迭代的剩餘部分並行地開始執行下一迭代的初始部分。
至少一些實例提供一種裝置,包含: 解碼構件,用於解碼程式指令;及 處理構件,用以回應於由指令解碼器對迭代運算指令的解碼,執行包含複數個處理迭代的迭代運算,對於該複數個處理迭代,除了第一迭代之外的迭代取決於在先前迭代中產生的運算元; 處理構件包含: 用於產生初始資訊的構件,該初始資訊係藉由執行給定迭代的處理的初始部分來產生; 用於產生結果值的構件,該結果值係藉由執行給定迭代的處理的剩餘部分,使用由初始資訊產生電路系統判定的初始資訊來產生;及 用於轉發的構件,用以當給定迭代為除了最終迭代之外的迭代時,將在給定迭代中產生的結果值作為迭代運算的下一個迭代的運算元轉發;其中: 當結果產生電路系統執行除了最終迭代之外的給定迭代的剩餘部分時,初始資訊產生電路系統經配置以與結果產生電路系統完成當前迭代的剩餘部分並行地開始執行下一迭代的初始部分。
至少一些實例提供一種資料處理方法,包含: 使用指令解碼器解碼迭代運算指令;且 回應於對迭代運算指令的解碼,執行包含複數個處理迭代的迭代運算,對於該複數個處理迭代,除了第一迭代之外的迭代取決於在先前迭代中產生的運算元; 其中迭代運算係使用處理電路系統執行,該處理電路系統包含: 初始資訊產生電路系統,用以執行給定迭代的處理的初始部分以產生初始資訊; 結果產生電路系統,用以執行給定迭代的處理的剩餘部分,以使用由初始資訊產生電路系統判定的初始資訊來產生結果值;及 轉發電路系統,用以當給定迭代為除了最終迭代之外的迭代時,將在給定迭代中產生的結果值作為迭代運算的下一個迭代的運算元轉發;其中: 當結果產生電路系統執行除了最終迭代之外的給定迭代的剩餘部分時,初始資訊產生電路系統與結果產生電路系統完成當前迭代的剩餘部分並行地開始執行下一迭代的初始部分。
本發明技術的進一步態樣、特徵及優點將自實例的以下描述顯而易見,該等實例將結合附圖來閱讀。
處理電路系統可回應於由指令解碼器解碼的程式指令執行資料處理運算。當設計處理電路系統的電路邏輯時,可能在平衡以下兩個方面時存在不斷的設計挑戰:一方面,用以支援某些相對複雜指令的期望,該等相對複雜指令可能需要具有更大邏輯深度的電路邏輯,但當信號經過電路邏輯時將因此引發更大的處理延遲;且另一方面,儘可能多地增加時鐘頻率以提供改良的效能的期望。需要更大邏輯深度之相對複雜運算可橫跨多個處理週期分離,但若使用更大數目的週期,則可能減慢依賴於此運算的處理工作負荷。這對於需要兩個或兩個以上處理迭代的某些迭代操作指令可能是一個特定的問題,因為若每一迭代必須在更大數目的週期上分離,則對於相同的指令多次引發對應的效能衝擊。應對此設計挑戰的另一方法可為降低所支援的最大時鐘頻率,從而為在一定數量的時鐘週期之內完成更複雜的操作留出更多時間,但是在此情況下,降低的時鐘頻率將降低其他類型的操作之效能,而其他類型的操作將需要較少的邏輯深度並且可能會以更快的時鐘頻率及時完成。
下文論述了用於提高迭代運算指令之每次迭代效能的技術,當該迭代運算指令由指令解碼器解碼時,控制處理電路系統執行包括兩個或兩個以上處理迭代的迭代運算,對於該等處理迭代,除了迭代運算的第一迭代之外的後續迭代取決於在先前迭代中產生的運算元。
處理電路系統包括初始資訊產生電路系統,以藉由執行迭代運算的給定迭代之處理的初始部分來產生初始資訊。結果產生電路系統執行給定迭代的處理的剩餘部分,以使用由初始資訊產生電路系統判定的初始資訊來產生結果值。當給定迭代為除了迭代運算的最終迭代之外的迭代時,轉發電路系統將在給定迭代中產生的結果值作為迭代運算的下一個迭代的運算元轉發。
對於其中較早迭代之結果經轉發用於後續迭代的的迭代運算,吾人會認為直至先前迭代的結果已經產生為止才有可能開始下一個迭代。然而,與直覺相反,發明者認識到,初始資訊產生電路系統有可能與結果產生電路系統完成當前迭代的剩餘部分並行開始執行下一迭代的處理的初始部分。因為每次迭代潛時可能小於處理的初始部分及剩餘部分之組合潛時,所以賦能效能得以提高,以便迭代運算指令可在支援比原本可能的時鐘頻率更高的時鐘頻率之處理電路系統上執行。如此不僅為迭代操作指令本身提供了效能益處,而且亦為其他指令提供益處,因為當迭代操作指令支援更高的時鐘頻率時,其他指令亦可從該更高的時鐘頻率受益。
初始資訊產生電路系統開始給定迭代的初始部分與初始資訊產生電路系統開始下一迭代的初始部分之間的潛時,可小於初始資訊產生電路系統開始給定迭代的初始部分與結果產生電路系統完成給定迭代的剩餘部分之間的潛時。此意謂處理電路系統能夠根據具有一時鐘週期之時鐘信號操作,該時鐘週期短於初始部分及剩餘部分的組合潛時。自開始給定迭代的初始部分與開始下一迭代的初始部分之間的延遲可對應於N個時鐘週期,其中N為1或更大,但歸因於下一次迭代的初始部分與當前迭代的剩餘部分的完成之間的重疊,此意謂給定迭代之總的處理(初始部分和剩餘部分的組合)實際具有多於N個週期要完成,以便時鐘頻率的更積極縮放變為可能。
初始資訊產生電路系統可在比一時鐘週期更早的時鐘週期中執行給定迭代之初始部分,在該前一時鐘週期中,結果產生電路系統開始執行給定迭代的剩餘部分。因此,對於為迭代操作指令執行的第一個迭代,該第一迭代的初始部分可在設置時鐘週期中執行,且隨後在下一個時鐘週期中,可為給定迭代開始剩餘部分,其中下一個迭代的初始部分與給定迭代的剩餘部分的結束並行執行。
此技術可應用於對於處理的剩餘部分需要兩個或兩個以上時鐘週期的運算,亦即,其中在上文論述的實例中,N等於2或更大。然而,這對於邏輯深度比單個時鐘週期所能容納的邏輯深度稍深的運算尤其有用,因為該技術可隨後允許在一個週期內具有過多邏輯的運算仍可根據單週期每迭代利用延遲縮放進行處理,此對於效能可能是極其有益的。特定言之,對於其中N=1的實施(亦即,一個迭代的初始部分在先前迭代的初始部分之後開始一個週期),產生結果所用之時鐘週期的總數可為M+1(一個設置週期及M個每次迭代結果產生週期),其中M為迭代操作中的迭代數目。
給定迭代的處理之初始部分可包含產生關於待在彼迭代中處理的運算元之資訊。例如,可能需要運算元的一些初始處理以判定需要結果產生電路系統之內的哪些邏輯路徑,或以產生用於配置結果產生電路系統之某些邏輯元件的配置信號(諸如判定移位器的移位量,例如用於有效對齊的部分或完全指數差)。
有人可能會問,為什麼涉及迭代之間的依賴性(且因此需要將一迭代的結果作為下一迭代的運算元轉發)的迭代操作有可能在下一迭代的初始部分與先前迭代的結束並行執行之情況下實施。然而,發明者認識到可在迭代之間實現並行化若干選項,儘管基於先前迭代的結果進行下一迭代之運算元的轉發。
在一個實例中,對於除了第一迭代之外後續迭代,該後續迭代可不僅取決於由轉發電路系統基於來自先前迭代的結果值轉發之經轉發的運算元,而且取決於與先前迭代的結果無關的第二運算元。在此情況下,由初始資訊產生電路系統判定的初始資訊可包含自第二運算元導出的資訊。因為第二運算元與先前迭代的結果無關,所以第二運算元在先前迭代的結果已產生之前可獲得。初始資訊產生電路系統可因此在完成先前迭代的處理之剩餘部分之前開始自第二運算元導出資訊,以便處理的剩餘部分的邏輯深度可更淺,因為其不需要包括用於判定來自第二運算元的初始資訊之邏輯。
作為從第二獨立運算元導出初始資訊的替代或另外,另一方法可為:初始資訊可為從經轉發的運算元上的早期資訊導出的資訊,該資訊在經轉發的運算元已經完全由對於先前迭代的結果產生電路系統判定之前可用。例如,將經轉發至下一迭代的運算元上的某些部分資訊可提早獲得,且因此某些初始資訊可從用於迭代運算的下一迭代的早期資訊導出,此舉與在先前迭代中的經轉發運算元的完整值之進行中的計算並行。
例如,經轉發的運算元可為具有符號、指數和有效位數之浮點運算元。通常,浮點結果的符號及/或指數可比有效位數更早地可用,因為計算有效位數可能需要比計算指數或符號更大的邏輯深度。因此,關於轉發運算元返回的早期資訊可包括從經轉發的運算元的符號或指數之至少一者導出的資訊。因此,在已為先前迭代計算出包括有效位數之完整經轉發運算元之前,可預先計算將在下一迭代中處理的有關運算元的初始資訊,以加速下一迭代的處理。
在其中亦存在與先前迭代的結果無關的第二運算元之情況下,可將關於經轉發的運算元的早期資訊與從第二運算元導出的資訊比較,以提供額外的初始資訊。例如,可將經轉發的運算元之早期可用指數與第二獨立運算元的指數比較,以產生指數差值之至少一個位元,該位元可對加速下一迭代中的浮點加法很有用。
本技術可對於其給定迭代的結果值包含藉由將浮點運算元相加而獲得之捨入浮點值的迭代運算尤為有用。浮點加法可能相對緩慢且需要相對大的邏輯深度,因為浮點運算元的加法可能需要浮點運算元的指數的初始分析、基於指數之間的差異的運算元的有效位數之對準、經對準的有效位數之相加及捨入以產生經捨入的浮點結果。因此,當設計給定處理器的處理邏輯時,浮點加法可通常提供一些最嚴格的時序約束。在於每一迭代需要浮點加法的迭代運算中,上文論述的技術可非常有用於藉由降低每次迭代潛時來加速效能,此潛時降低係藉由將初始資訊計算的部分與剩餘部分重疊以產生在先前迭代中的經捨入浮點值來獲得。
對於涉及浮點加法的此迭代運算,初始資訊可包含關於待相加的浮點運算元的各種不同類型的資訊。例如,初始資訊可包含以下任何一或多者: •        浮點運算元之一者是否為次正規的指示; •        浮點運算元之一者是否為無限大的指示; •        浮點運算元之一者是否為非數值的指示; • 指示浮點運算元的指數之間的差的指數差值之至少一部分; •浮點運算元之一者的有效位數的分數部分是否為零的指示; • 浮點運算元是類似符號運算元還是非類似符號運算元的指示。
所有該等類型的資訊可用於控制浮點加法。藉由與先前迭代之結束並行計算該等類型的資訊之任一者,如此降低了對於剩餘部分的整體邏輯深度,且因此藉由賦能更高的時鐘頻率來提高效能。
雖然本發明之技術可用於涉及浮點加法的任何迭代操作,但是本技術可特定用於浮點歸約運算。對於此運算,迭代運算指令可識別純量浮點運算元及包含多個資料元件的向量資料值,每一資料元件指定一浮點運算元。對於此指令,迭代運算的每一有效迭代可包含將第一浮點運算元與第二浮點運算元相加。對於有效迭代的第一有效迭代,第一浮點運算元為純量浮點運算元,且第二浮點運算元為在向量資料值的第一有效資料元件中指定的浮點運算元。對於有效迭代的後續有效迭代,第一浮點運算元為在先前有效迭代中之加法的轉發結果,且第二浮點運算元為在向量資料值的後續有效資料元件中指定的浮點運算元。可提供述詞資訊以指定向量資料值中的哪些資料元件為有效資料元件。每一迭代將向量的對應元件作為其第二浮點運算元,且若該向量由述詞資訊標記為有效,則此意謂對應迭代為有效迭代,而對於其述詞資訊指示向量的對應資料元件為非有效的迭代被視為非有效迭代。對於非有效迭代,處理邏輯中的正反器可使其賦能信號無效,以防止其基於非有效向量元件更新。
處理系統可支援向量運算,對於其可回應於單個指令執行處理的多個通道(此方法亦可稱為單一指令多重資料(single instruction multiple data; SIMD)或SIMD),每一通道使用至少一個向量運算元的相應資料元件。一些SIMD實施方式可提供用於並行處理多個向量通道的硬體,而其他電路實施方式可順序地或以區塊形式一個接一個執行至少一些向量通道。無論何種方式,與對於處理的每一通道需要單獨指令的等效純量代碼相比,使用向量處理可藉由降低擷取且解碼指令時的負擔來提高代碼密度且提高效能。
此類向量指令的一種使用可為執行浮點處理之數個通道,該數個通道將其結果累積至向量的各個元件中,但最終可能期望將向量中的所有元件相加在一起以產生純量結果,在此情況下上文論述之向量歸約運算可能是有用的。在加法中包括純量運算元可能是有用的,因為此意謂向量歸約指令可將向量運算元的所有元件相加至由先前向量歸約指令基於不同的向量運算元獲得之純量結果中,以便藉由連續執行若干向量歸約指令,來自多個向量的元件可累積在一起。
然而,由於浮點加法是非相關聯的,所以可能重要的是,各個向量元件的加法係以預定義次序執行,以確保將元件相加的結果為可預測的/可重複的。因此,將向量的每一連續元件添加至純量運算元或較早迭代的結果之迭代可能需要順序地執行。此意謂單個迭代的效能可能很重要,因為單個迭代的任何速度降低皆會對整體指令產生影響,因為其延遲會多次發生。然而,因為每次迭代涉及浮點加法,與其他類型之處理運算相比,浮點加法可為相對慢的運算,且因此時序約束可相對嚴格。上文論述的技術可對於該等向量歸約運算非常有用以允許在一週期中的較小邏輯深度,因為用於下一週期之某些初始資訊係與用於較早週期的結果並行計算,以整體提高系統的效能且支援更高的時鐘頻率。
對於此向量歸約運算的一個問題為關於第一有效迭代,純量浮點運算元係作為第一浮點運算元注入,而對於後續週期,第一浮點運算元為從前述有效迭代之結果轉發的經轉發運算元。人們認為此將需要多工器選擇何時將純量浮點運算元作為第一浮點運算元注入,並且該多工器應設置於轉發迴路信號路徑上,該轉發迴路信號路徑將在先前有效迭代中的加法之轉發結果作為第一浮點運算元提供,該第一浮點運算元待輸入用於後續有效迭代。然而,實際上,多工器可引發相對較大的邏輯深度並且此對轉發迴路信號路徑增加的延遲可能足以使得當在某些較高的時鐘頻率下計時時,該信號路徑在單個週期中執行向量歸約運算的單個迭代變得不切實際。
取而代之地,如下文進一步論述,用於選擇何時注入純量浮點的多工器可位於轉發迴路信號路徑之外,該轉發迴路信號路徑將在先前有效迭代中的加法之經轉發結果作為後續有效迭代的第一浮點運算元提供。因此,經轉發結果可在不經過多工器的情況下僅輸入至下一迭代,並且多工器經由轉發迴路脫離關鍵時序路徑。取而代之地,轉發迴路信號路徑可包含或電路系統,該或電路系統提供待在給定迭代中處理之第一浮點運算元。此或電路系統可根據按位元或運算將第一輸入與第二輸入組合。在除了第一有效運算之外的迭代中,或電路系統之第一輸入可為在先前有效迭代中執行的加法的經轉發結果。第二輸入可包含多工器之輸出,該多工器在純量運算元、全零值及視情況地其他值之間選擇,該其他值諸如來自執行向量歸約(迭代運算)指令之先前實例的最終迭代的經轉發結果。由於或電路系統典型地具有比多工器更淺的邏輯深度,如此提高了效能,因為沿著轉發迴路信號路徑的潛時更短,從而使得在較高的時鐘頻率下執行浮點向量歸約運算的單個週期變得切實可行。
為了能夠在關鍵時序路徑上使用或電路邏輯代替多工器,結果產生電路及多工器本身可同時確保在其中該兩者不意欲將待使用的值作為第一浮點運算元提供的週期中,結果產生電路及多工器輸出零值,以便當與來自其他路徑的輸出進行或運算時,或結果將是正確的。因此,在對於第一迭代運算指令的迭代運算的最終迭代中,處理電路系統可在轉發迴路信號路徑上提供全零值,該全零值待用作用於後續迭代運算指令之第一有效迭代的或閘的第一輸入。另一方面,多工器可在給定迭代運算指令的第一有效迭代中選擇純量浮點運算元(或者來自較早迭代運算指令的最終迭代之經轉發結果),並且在一或多個後續有效迭代中選擇全零值。因此,在每一迭代中,多工器的輸出或者轉發迴路信號路徑上的輸出之任一者為零,而(除非有效加法迭代之輸出為由轉發電路系統返回的真零)另一者為非零(兩個輸出同時為非零是不可能的)。以此方式,可避免在關鍵時序路徑上的多工器的存在,將其用或電路系統替代以提高效能且降低潛時。
避免多工器在轉發迴路信號路徑上的潛時損失的另一方式可為在設置處理週期期間經由一信號路徑將純量浮點運算元注入至轉發電路系統之輸出中,該信號路徑具有比經由用於產生實際浮點加法結果的結果產生電路系統之邏輯深度更短的邏輯深度。因此,在設置處理週期期間,轉發電路系統(該電路系統在後續週期中將為給定迭代提供浮點加法結果)之輸出可取而代之地輸出純量浮點運算元,以便在後續時鐘週期中,結果產生電路系統可使用純量浮點運算元作為迴路的第一迭代之第一浮點運算元來執行處理的剩餘部分。該方法可從轉發迴路的關鍵時序路徑除去或電路以及多工器。
浮點表示
浮點(floating-point; FP)為使用較小數目的位來近似實數的有用方式。IEEE 754-2008 FP標準為FP數提供了多種不同格式,而有些格式為二進制64位(亦稱為雙精度,或(double precision; DP))、二進制32位(亦稱為單精度,或(single precision; SP)),及二進制16位(亦稱為半精度,或(half precision; HP))。數字64、32和16代表每一格式所需的位數。
FP數非常類似於在科學課中教示之「科學計法」,其中我們寫的不是-2,000,000,而是 -2.0 x 106 。此數值的各部分為正負號(在該情況下為負號)、有效位數(2.0)、指數的底數(10),及指數(6)。在FP數中之所有該等部分皆相似,儘管存在差異;其最重要之處為各組成部分以二進制數儲存,指數的底數始終為2。
更精確而言,FP數由符號位元、一些的有偏指數位元,和一些分數位元組成。感興趣的一些FP格式提供以下位元:
  符號 指數 分數 指數偏位
DP [63:0] 63 62:52(11位元) 51:0(52位元) 1023
SP [31:0] 31 30:23(8位元) 22:0(23位元) 127
HP [15:0] 15 14:10(5位元) 9:0(10位元) 15
負數的符號為1,正數的符號為0。每個數字(包括零)皆具有符號。
指數偏位意謂真實指數與數字中儲存的指數不同。例如,經偏位的SP指數為8位元長並且範圍從0至255。指數0及255為特殊情況,但是所有其他指數具有偏位127,意謂真實指小於經偏位指數127。最小經偏位指數為1,對應於真實指數-126。最大經偏位指數為254,對應於真實指數127。HP及DP指數以相同方式工作,其中偏位在上表中指示。
SP指數255(或DP指數2047,或HP指數31)經保留用於無限大及被稱為NaN的特殊符號(非數字)。無限大(可為正數或負數)的分數為零。具有指數255及非零分數的任何數皆為NaN。無限大提供一飽和值,因此該值實際意謂著諸如「此計算產生的數字大於吾人可以此格式所表示的數字」的情況。NaN對於未在實數上數學定義之操作將返回,例如除以零或者取負數的平方根。
任意格式的指數零經保留用於次正規數及零。正規數表示以下值:-1符號 x1.分數x 2e , 其中e為從經偏位指數計算的指數。術語1.分數被稱為有效位數,並且1並未儲存為FP數的一部分,而是從指數中推斷而得。除了零及最大指數的所有指數指示形式1.分數的有效位數。指數零指示形式0.分數的有效位數,並且真實指數等於給定格式的1偏位。該數字被稱為次正規(歷史上此類數字被稱為非正規,但是現代使用傾向於術語次正規)。指數及分數均等於零的數字為零。
下表具有HP格式的示例性數字。該等條目採用二進制格式,並添加了‘_’字符以增加可讀性。應注意,次正規條目(表中第4行,指數為零)產生與前一行中的正規條目不同的有效位數。
  5位元指數 10位元分數 11位元有效位數
0 01111 00_0000_0000 100_0000_0000 1.0 X 20
1 01110 10_0000_0000 110_0000_0000 -1.1 X 2-1
0 00001 10_0000_0000 110_0000_0000 1.1 X 2-14
0 00000 10_0000_0000 010_0000_0000 0.1 X 2-14
1 11111 00_0000_0000   -無限大
0 11111 00_1111_0011   NaN
FP實施的複雜性的大部分係歸因於次正規,因此其通常藉由微碼或軟體處置。與軟體或微碼實施方式相比,處置硬體中之次正規的處理電路系統可將該等運算加速10至100倍。
整數、定點、浮點
處置符號的FP方式稱為符號量值,並且該方式不同於通常整數儲存於電腦中的方式(二的補數)。在符號量值表示法中,相同數目之正負版本僅符號位元不同。4位元符號量值整數(由符號位元及3個有效位數位元組成)將令加減一表示為: +1 = 0001 -1 = 1001
在二的補數表示法中,n位元整數i係藉由二進制n+1位元值 2n +i的低階 n 位元表示,因此4位元二的補數整數將令加減一表示為: +1 = 0001 -1 = 1111
二的補數格式實際上對帶符號的整數是通用的,因為該格式簡化了電腦運算。
定點數看起來完全像一個整數,但實際上其表示具有一定數量分數位元的值。感測器資料通常為定點格式,並且在廣泛採用FP之前,存在大量已編寫的定點軟體。定點數字的使用非常繁瑣,因為程式員必須追蹤「二進制點」,亦即數字的整數與分數部分之間的分隔符,並且還必須不斷將數字移位以保持位元在正確的位置。FP數字則不沒有此困難,因此期望能夠在定點數字和FP數字之間轉換。能夠進行轉換意謂我們仍可使用定點軟體及資料,但當編寫新的軟體時我們不限於定點。
FP 數的捨入
IEEE-754標準要求對大多數FP運算進行計算,就好像該運算係在無限制的範圍及精度下進行,且隨後經捨入以適合FP數。若計算與FP數完全匹配,則該值始終被返回,當通常該計算產生位於兩個連續浮點數之間的值。捨入為選擇應返回兩個連續數中之何者的過程。
存在稱為捨入模式的多個捨入方式;六個該等捨入模式如下:
  模式 定義
RNE 最近捨入,取偶數值 取最接近的值,或若兩個值同樣接近,則取偶數值
RNA 最近捨入,取較遠值 取最接近的值,或若兩個值同樣接近,則取離零最遠的值
RZ 向零捨入 取最接近零的值
RP 向正無限大捨入 取最接近正無限大的值
RM 向負無限大捨入 取最接近負無限大的值
RX 向奇數捨入 取奇數值
該定義未告訴我們如何以任何實際方式進行取捨。一種常見之實施方式為進行運算,查找截斷值(亦即,適合FP格式的值)以及所有剩餘位元,且隨後在滿足某些條件的情況下調整截斷值。所有計算全部係基於: L (最低)截斷值的最低有效位元 G (保護)下一最高有效位元(亦即,未包括在截斷中之第一位元) S (黏性)並非截斷之一部分的所有剩餘位元的邏輯或
給定該三個值及截斷值,吾人可根據下表(表1)計算經正確捨入的值:
表1
模式 改變至截斷值
RNE 若 (L&G) | (G&S),則遞增
RNA 若G,則遞增
RZ
RP 若為正數& (G|S),則遞增
RM 若為負數& (G|S),則遞增
RX 若G|S,則設置L
例如,考慮將兩個4位元有效位數相乘,且隨後捨入至4位元有效位數。 sig1 = 1011(十進制11) sig2 = 0111 (十進制7) 將收益相乘 sig1 × sig2 = 1001_101 (十進制77) L Gss
經截斷的4位元結果之最低有效位元被標記為L、下一位元G,並且S為標記為s(亦即,S = 0 | 1 = 1)的剩餘位元的邏輯或。為了捨入,我們根據上表中的捨入模式及計算來調整自己的4位元結果(1001)。因此例如在RNA捨入中,G經設定,因此我們返回1001 + 1 = 1010。對於RX捨入,G | S為真,因此我們將L設定為1(其已經為1,因此在該情況下無任何變化)並且返回1001。
實例
第1圖示意地圖示資料處理裝置2的實例。資料處理裝置具有處理管線4,處理管線包括數個管線級。在此實例中,管線級包括:擷取級6,該擷取級用於從指令快取記憶體8擷取指令;解碼級10,用於解碼擷取程式指令以產生待由管線的其餘級處理的微運算;發佈級12,用於檢查是否在暫存器檔案14中可獲得微運算所需之運算元,並且一旦給定微運算的所需運算元可用,就發佈用於執行的微運算;執行級16,用於藉由處理讀取自暫存器檔案14的運算元來執行對應於微運算之資料處理運算以產生結果值;及寫回級18,用於將處理之結果寫回至暫存器檔案14。將瞭解,此僅為可能的管線架構的一個實例,並且其他系統可具有額外的級或者不同配置的級。例如,在亂序處理器中,可包括額外的暫存器重新命名級用於將由程式指令或微運算指定的架構暫存器映射至實體暫存器說明符,該實體暫存器說明符識別暫存器檔案14中的實體暫存器。
執行級16包括用於執行不同類別的處理運算之多個處理單元。例如,執行單元可包括純量算術/邏輯單元(scalar arithmetic/logic unit; ALU) 20,用於對讀取自純量暫存器檔案21之純量運算元執行算術或邏輯運算;浮點單元22,用於對浮點值執行運算;分支單元24,用於評估分支運算的結果且相應地調整表示當前執行點的程式計數器;及載入/儲存單元28,用於執行載入/儲存運算以存取記憶體系統8、30、32、34中的資料。在此實例中,記憶體系統包括一階資料快取記憶體30、一階指令快取記憶體8、共享二階快取記憶體32,及主系統記憶體34。將瞭解,此僅為可能的記憶體階層之一個實例,並且可提供快取記憶體的其他佈置。在執行級16中所示的特定類型的處理單元20至28僅為一個實例,並且其他實施可具有不同集合的處理單元或可包括相同類型的處理單元之多個實例,以便可並行處置相同類型的多個微運算。將瞭解,第1圖僅為可能的處理器管線架構的某些元件的簡化表示,並且處理器可包括為了簡潔起見未示出的許多其他元件,諸如分支預測機構或者位址平移或記憶體管理機構。
浮點單元22支援對以浮點表示表示的運算元執行的處理運算。浮點運算可包括對儲存在純量暫存器之內的純量浮點運算元,或對儲存在向量暫存器中的向量運算元之相應資料元件的浮點運算元執行的運算。一些運算亦可處理純量及向量運算元兩者。
可能由浮點單元22支援的一種類型之浮點運算,可為浮點向量歸約運算;該運算可由如第2圖中所示的向量歸約指令FADDA控制。FADDA指令為如上文論述的迭代運算指令的實例。FADDA指令指定純量目的地暫存器Rd、向量源暫存器Za、純量源暫存器Rb、述詞暫存器Pg。純量源暫存器Rb包含純量浮點運算元Sc,純量浮點運算元Sc包含如上文論述的符號、有效位數及指數。而且,向量源暫存器Za的每個元件V還包含浮點運算元,該浮點運算元再次包含符號、有效位數及指數。述詞暫存器Pg包含一系列的述詞指示,述詞指示每一者指示源向量暫存器Za的對應元件是有效還是無效的。在此實例中,向量元件V[1]經指示為無效,因為在述詞暫存器的位置1中的其對應述詞旗標為0;而Za的其他向量元件全部有效,因為其述詞旗標為1。
第2圖的下部圖示待執行用於FADDA指令的運算。在第一迭代(迭代0)中,使用包括捨入及正規化的浮點加法,將暫存器Rb中之純量運算元Sc與向量暫存器Za中之第一有效元件V[0]相加,以產生迭代0結果Sc + V[0]。在此實例中,下一迭代(迭代1)通常會將迭代0的結果相加至向量元件V[1],但由於V[1]元件由述詞屏蔽為無效,所以迭代0的輸出經保持為迭代1的輸出,而無需在下一向量元件V[1]中相加。對於第2圖中所示的後續迭代2及迭代3,再次使用包括捨入及正規化的浮點加法,將向量的連續有效元件V[2]、V[3]一次一個地相加至前述迭代的結果,直至產生最終結果為止;在此實例中,該最終結果對應於純量運算元Sc及三個有效元件V[0]、V[2]及V[3]的總和。此最終結果經儲存至目的地暫存器Rd。實際上,連續執行若干FADDA指令可能是相對常見的,其中對於一個FADDA指令的如向量暫存器Za,及目的地暫存器Rd的不同源向量變為用於下一指令的源純量暫存器Rb,以將橫跨多個向量的向量元件相加在一起。
浮點加法為非相關聯的,為了提供可預測的結果,迭代必須按照與源向量中的向量元件的順序相對應的順序進行,且迭代無法並行進行,以便此類型的運算對於與執行單個迭代的浮點加法相關聯的任何增加的潛時相對敏感,因為任何增加的潛時皆將發生多次,每迭代一次。因此,可能期望提供用於降低對於此指令的每迭代潛時的技術。
為了比較,第3圖圖示可在用於支援此類型的浮點加法的浮點單元22之內提供的處理邏輯之實例。第3圖圖示單個迭代的邏輯,並且為了簡潔起見,未圖示運算元返回另一迭代的轉發。通常,加法可涉及關於使用邏輯30的待相加的運算元opa、opb的第一計算資訊。例如,可計算運算元的指數之間的指數差,以及關於是否指數/有效位數具有某些特殊值的資訊,該等特殊值指示浮點運算元為如上文論述的次正規、無限大、NaN等。該經計算的資訊可隨後被用於配置加法/捨入電路系統32或特殊值處置系統34如何處理運算元以產生結果。
取決於對於運算元的經計算之資訊,加法/捨入電路系統32可包括處置不同類型的處理的近路徑邏輯36及遠路徑邏輯38。浮點加法可被視為表示類似符號加法(like-signed-addition; LSA)或非類似符號加法(unlike-signed-addition; USA)。當加法運算作用於具有符號的相同值兩個運算元或當減法運算作用於具有不同符號的值(該兩者實際上為加法)時,執行LSA;而USA為作用於具有不同符號的浮點運算元的加法運算,或為作用於具有相同符號的運算元的減法運算。遠路徑邏輯38可經設計以處置所有LSA及作用於其指數差大於1的運算元之彼等USA。遠路徑邏輯38可包括用於基於指數差將運算元的有效位數對準、將對準的有效位數相加並且將結果捨入的處理。另一方面,近路徑邏輯36可處置其中指數相同或僅相差1的USA,在此情況下,可能需要用於基於加法結果中的前導零之數目調整指數,並且用於處置潛在次正規輸出的邏輯。
因此,通常,浮點加法可能需要計算關於運算元的一些資訊以決定如何處理運算元,例如以便可選擇是需要近路徑36還是遠路徑38;且用於配置運算的其他部分,諸如在遠路徑38中用於對準所需的移位量;或用於決定是否需要諸如無限大或NaN的特殊浮點值的特殊值處理34。
如第4圖中所示,若浮點加法包括在諸如第2圖的向量歸約運算的迭代運算中,則人們會認為在迭代運算的每一週期中,將需要首先計算關於待在彼週期中處理的運算元的資訊,且隨後基於關於運算元的經計算之資訊將運算元相加。用於計算關於運算元的資訊的邏輯30及隨後的加法電路系統32可均需要某一邏輯深度,以便可由處理邏輯支援的最小時鐘週期C1(且因此最大時鐘頻率)可基於電路邏輯30、32的經組合之邏輯深度而得以約束。
第5圖圖示替代方法。第5圖示用於支援第2圖中所示的浮點向量歸約之處理的浮點單元22的一部分。浮點向量歸約邏輯包括兩個級,級0及級1。級1包括用於執行浮點加法(例如,近/遠路徑邏輯)的大部分電路邏輯。對於近路徑及遠路徑邏輯(為了簡潔起見,該兩者在第5圖中並未區分)兩者,加法電路邏輯可包括:有效位數處理邏輯50,其產生將兩個浮點運算元opa、opb相加的結果之有效位數;指數及符號處理邏輯52,其產生將運算元OPA、OPB相加的結果之指數及符號。該等位於執行級1中。
選擇電路系統54經提供以選擇將何運算元作為第一浮點運算元opa提供至有效位數處理邏輯50及指數/符號處理邏輯52。在迭代浮點歸約運算之初始週期中,來自純量暫存器Rb之值可經選擇為運算元opa,而在後續週期中,可使用來自先前迭代的浮點結果,該浮點結果在轉發電路系統之轉發路徑56上轉發。另一方面,可從對於FADDA指令的源向量Za之各個向量元件中選擇其他運算元opb。
如第5圖中所示,浮點單元包括初始資訊判定電力系統60,該系統包括級0之內的部分60-0及在級1之內的部分60-1。與有效位數處理邏輯50完成先前迭代之加法結果的產生並行,初始資訊產生電路系統60產生待在FADDA指令的下一迭代中處理的運算元opa、opb。如此利用FADDA指令的兩個性質,其意謂儘管迭代運算的一迭代需要在先前迭代中產生之結果,但仍然有可能將連續迭代的處理重疊,以便連續迭代部分並行執行。首先,對於FADDA指令,在向量暫存器Za之內的向量元件通常可從指令處理之開始獲得,並且不取決於運算的較早週期中的加法輸出,隨後級0初始資訊產生電路系統60-0可與產生待用於下一循環的經轉發運算元opa的加法邏輯50、52並行預計算初始資訊。
此外,通常,指數及符號處理邏輯52可具有比有效位數處理邏輯50更短的邏輯深度。例如,有效位數處理邏輯50可能需要相對緩慢的運算,諸如用於對準的移位及進位傳播加法;而指數及符號可基於組合邏輯或藉由在輸入運算元的指數及符號之間選擇來產生,且因此可更早地可用。因此,在完整的經轉發運算元56可用之前,可獲得關於待用作下一迭代之運算元opa的值的指數或符號的早期資訊58。因此,在opa的完整值已產生之前,級1初始資訊產生電路系統60-1可預計算關於待在下一週期中使用的運算元opa的資訊。同時,此級1初始資訊產生60-1可基於下一迭代的運算元opa的早期資訊與對於下一迭代的運算元opb已知的完整值之比較來預計算資訊(例如,指數差的所有或部分)。
藉由將關於運算元的資訊的一些預計算引入較早週期,此意謂下一週期的加法邏輯50、52之內的邏輯深度可較短,以便有可能使用更高的時鐘頻率。第6圖圖示如何將此實現的時序圖。如第6圖中所示,與第4圖比較,第6圖中的時鐘週期C2可相對於第4圖的時鐘週期C1減小,因為現在用於產生對於給定迭代的運算元的初始資訊之處理70的初始部分係與用於產生先前迭代的結果的剩餘部分72之完成重疊。
因此,在迭代0中,首先在設置時鐘週期之內執行處理的初始部分70,以計算關於待在迭代0中處理之運算元opa[0]、opb[0]的初始資訊;且隨後在下一時鐘週期(週期0)中,產生處理輸入運算元opa[0]、opb[0]的結果,並且此結果經轉發用作迭代1的運算元opa[1]。同時,與產生結果OPA [1]的迭代0之處理的剩餘部分72的結束並行,基於提前已知的opb[1]的值且基於在opa[1]的指數及符號上返回的早期資訊58,在時鐘週期0中執行迭代1的初始部分70。類似地,對於迭代2及3,在前述迭代的剩餘部分結束之前開始初始部分70。
因此,此意謂FADDA指令可在使用一時鐘信號的系統上得以支援,該時鐘信號具有比迭代運算的給定迭代之初始部分70及後續部分72的組合潛時L更短的時鐘週期C2。如此實現時鐘頻率的更積極縮放以不僅為FADDA指令本身提高效能,而且為由處理電路系統支援的所有其他指令提高效能;如當處理電路系統以更高的時鐘頻率的計時時,則該等其他運算亦加速。
第7圖圖示可在上文論述的浮點單元22之內提供的浮點歸約單元的實例。如在第7圖的左手側所示,當執行如上文論述的FADDA指令時,浮點歸約單元分別從純量暫存器Rb、向量源暫存器Za,及述詞暫存器Pg接收其輸入值。在當執行FADDA運算的後續迭代時在後一時鐘週期中需要來自Rb的純量運算元及除了第一向量元件el_0的之外的向量元件el_1至el_3的時間,在對應的源暫存器Rb、Za已經覆寫的情況下,該純量運算元經保存在浮點歸約單元的內部暫存器100之內,且該向量元件el_1至el_3經保存在浮點歸約單元的內部暫存器102之內。提供用於保存純量運算元的內部暫存器100,因為有可能向量的第一有效元件可為元件el_1至el_3的一者(若述詞Pg將el_0標記為無效),在此情況下將在後續迭代中需要純量值。
賦能邏輯103經提供以提供賦能信號,該等賦能信號賦能第二執行級104中的正反器基於來第一執行級106的值更新。在FADDA操作之迭代X中,若元件el_X的述詞指示元件el_X無效,則賦能邏輯103使正反器賦能信號無效,以確保第二執行級104的輸出正反器108保持其先前值且將不被更新,有效地提供了如在對於迭代1的第2圖的實例中所示的迭代的屏蔽。藉由防止正反器更新,此亦節省了用於迭代運算的無效迭代的功率。第一執行級106包括多工器110,多工器110從暫存器Za中選擇輸入向量的元件el_0至el_3中之何者作為當前迭代中的運算元opb提供。多工器係藉由元件計數器112控制,元件計數器112循環通過值0、1、2、3以選擇每一循環的下一個元件。加法的另一運算元opa係藉由選擇電路系統54選擇,該選擇電路系統54係使用多工器54-0及或閘54-1來實施,此將在下文中更詳細描述。
如第5圖中所示,在第二執行級104中提供加法邏輯50、52,並且提供初始資訊產生電路系統60,該初始資訊產生電路系統包括在第一級106之內的部分60-1及在第二級104內的部分60-1。在此實例中,由初始產生電路系統60提前計算的關於下一迭代的運算元opa、opb之資訊包括每一運算元opa、opb的指數是否為0的指示,該指示係在正反器116中擷取。預計算指數是否為零可能是有用的,因為如此可允許在浮點加法器50、52之內的邏輯的早期配置。例如,如此可允許判定浮點運算元是否為次正規,次正規可能需要在處理之前將指數從0調整至1。與用先前迭代的浮點結果計算並行,藉由發生與判定一個迭代之指數是否為0相關聯的邏輯延遲,此降低了在第二執行級之內的潛時,使得將浮點加法器50、52的邏輯深度適合在單個時鐘週期之內更加切實可行。
第7圖圖示用作轉發電路系統的轉發路徑56,以將在一迭代期間由浮點加法器產生之浮點結果轉發回,用於作為下一迭代的運算元opa的輸入。雖然有人可能認為此將需要經轉發至多工器以在轉發路徑56上的經轉發結果與從暫存器Rb提供的純量輸入之間選擇,但是此多工器可能引入顯著的額外延遲。因此,為了加速處理,實際情況為,轉發路徑56將其輸入提供至或閘54-1,並且至或閘54-1的另一輸入為多工器54-0的輸出。因此,或閘54-1僅執行其兩個輸入的按位元或,並且將結果作為運算元opa(包括指數及分數)提供至浮點加法器50、52。或閘具有比多工器短得多的邏輯延遲,因此其提高了效能。
當使用或閘時,隨後若任一輸入為非零,則在彼輸入中的非零位元將影響或閘54-1的輸出。因此,為了確保或閘輸入中僅一者為非零,迴路轉發路徑56,或多工器54-0的輸出之任一者通常應提供0值。正反器120經提供以提供信號至浮點加法器60-1,浮點加法器強制在轉發路徑56上提供的值在給定浮點歸約指令FADDA的處理的最終迭代中清除為0。因此,當元件計數器112等於值「完成」時,此正反器120在時鐘週期中判定,該值「完成」對應於在向量之最有效端處的元件位置(例如,對於第2圖的4元件實例,「完成」=3)。因此,在執行一個浮點向量歸約運算的最終迭代中,在轉發迴路信號路徑56上的值經輸出為全零,此意謂當浮點歸約單元開始執行下一浮點向量歸約指令的迭代運算時,在彼下一指令的第一週期上,於迴路轉發路徑56上的全零值將不會干擾由多工器54-0輸出的值,該輸出值隨後可基於純量值而選擇。
在除了迭代運算的第一有效迭代之外的任何週期中,opa多工器54-0選擇待提供至或閘54-1的全零值122,以便該值將不會干擾提供自先前迭代中的加法的轉發路徑56上之經轉發的結果。在對於給定浮點向量歸約指令的第一有效迭代中,opa多工器54-0選擇以下一者:(1)來自純量源暫存器Rb自身的輸出124;(2)在浮點歸約單元之內部暫存器100中儲存之經保存的純量運算元;(3)在指令至指令轉發路徑126上提供的浮點運算元,該指令至指令轉發路徑126將來自一FADDA指令的結果108作為潛在輸入且作為來自下一指令的純量運算元提供,以避免將結果寫入暫存器且隨後結果再次讀取出的延遲。因此,若需要在指令之間的轉發,則可選擇在內部指令至指令轉發路徑126上的值。若在指令之間不需要轉發(因為執行的先前指令不是另一浮點向量歸約指令,或者因為先前浮點向量歸約指令的目的地暫存器Rd不同於當前浮點向量歸約指令的源暫存器Rb),且若第一迭代有效,則來自原始純量暫存器Rb的值124係在第一迭代(對應於元件el_0)上選擇;或者若第一有效迭代為除了迭代0之外的後續迭代1、2、3之一者,則來自內部暫存器100的值係在第一有效迭代上選擇,因為迭代0由述詞標記為無效。一旦給定有效迭代已經處理,則對於任何剩餘迭代,opa多工器54-0選擇全零值122以避免與迴路信號路徑56上的迭代至迭代轉發干擾。
因此,由於多工器54-0在沿著迴路56的關鍵時序路徑之外,如此提高了效能並且因此實現時鐘頻率的更積極縮放。
第7圖圖示其中多工器54-0的輸出通過或電路系統54-1之實例,該或電路系統將來自轉發路徑56之經轉發運算元與多工器54-0的純量輸出組合。然而,另一方法為在設置時鐘週期期間經由輕邏輯載入的特殊路徑注入初始迭代的純量值,以產生關於轉發電路系統56的輸出之純量值;除了移除多工器54-0之外,如此還將從單週期轉發返回路徑56中完全移除或閘54-1。
第7圖圖示其中關於下一週期的運算元計算之初始資訊為是否任一運算元opa、opb之指數為零的指示的實例。如此允許有效位數之較早建構。而且,在第7圖中,指數值可較早地返回,並且對於給定迭代,由浮點加法器50、52對指數的處理可相對於有效位數的處理偏斜,以便指數處理在有效位數處理之前開始。
然而,有可能的是,與完成用於在先前迭代中產生浮點加法結果的處理的剩餘部分並行判定用於下一迭代的運算元opa、opb上之其他初始資訊。例如,有可能提前預計算運算元opa、opb之指數之間的指數差的低階位元或低階位元集,或甚至計算完整的指數差expa-expb及/或expb-expa。在一些實施方式中,可能並不預先知道運算元中之何者具有較大指數,因此可並行計算指數差expa-expb及expb-expa兩者以允許較早處理。可能需要該等指數差以判定位元位置之數目,較小運算元的有效位數應藉由該等位元位置移位以便與其他有效位數對準,並且指數差亦可用於產生諸如捨入狀態的其他資訊。
同時,運算元的符號可較早地預計算,並且如此可控制用於處置LSA或USA的處理路徑是否可使用,例如,如此可控制如上文論述之近處理邏輯與遠處理邏輯之間的選擇。此外,預計算邏輯60可計算關於給定浮點運算元是為無限大還是NaN的資訊,該資訊可控制用於處置此類特殊浮點值的特殊處置邏輯是否被使用。
另一實例可預計算運算元opb是否等於0(若經偏位指數及分數同時為0,則可將此判定),此舉可有助於加速處理,因為若已知運算元為0,則可省略涉及加法之更複雜的處理信號路徑。若對於給定迭代opb=0,則可去能用於暫存器108的正反器賦能信號以防止先前迭代之結果被更新,因為先前結果+ 0仍為先前結果。
因此,可計算關於運算元opa及/或opb的各種資訊,並且藉由將該邏輯引出單個迭代之關鍵路徑,如此加速了比迭代之處理並且實現了較高時鐘頻率的使用。
第8圖為示出執行迭代運算的方法的流程圖。在步驟202處,在設置週期中,初始資訊產生電路系統60判定待在迭代運算之迭代n中處理的運算元上的初始資訊,其中對於初始設置週期,n=0。
在後續時鐘週期中,在步驟204處,結果產生電路系統50、52產生對於迭代n的結果值,並且與完成用於產生彼結果之迭代的剩餘部分並行,在步驟206處,初始資訊產生電路系統60執行下一迭代的處理之初始部分以判定關於待在下一迭代n+1上執行的運算元的初始資訊。
在步驟208處,可以判定迭代n是否為迭代運算之最後迭代;若是,則在步驟210處,迭代n的在步驟204處產生的最終結果經輸出為指令之結果。然而,若仍然有另一迭代待處理,則在步驟212處,轉發電路系統56將迭代n的結果作為下一迭代n+1的輸入轉發,並且n遞增。因此,在下一時鐘週期中,再次執行步驟204、206以執行後續迭代n+2、n+1之初始/剩餘部分。
因此,利用該技術,與計算初始資訊相關聯之潛時可隱藏在判定結果之潛時陰影中,以提高效能。
在本案中,用詞「經配置以」係用以意謂裝置的元件具有能夠執行經定義運算的配置。在本上下文中,「配置」意謂將硬體或軟體互連之佈置或方式。例如,裝置可具有提供經定義運算之專用硬體,或者處理器或可經程式化以執行功能的其他處理設備。「經配置以」不意味裝置元件需要以任何方式改變以提供經定義的運算。
儘管本發明之說明性實施例已參考附圖在其中詳細描述,但是應將理解,本發明不限於彼等精確實施例,並且在不背離如由隨附請求項定義的本發明之範圍及精神的情況下,可由熟習該項技術者於本發明中進行各種改變及修改。
2:資料處理裝置 4:處理管線 6:擷取級 8:指令快取記憶體 10:解碼級 12:發佈級 14:暫存器檔案 16:執行級 18:寫回級 20:純量算術/邏輯單元(ALU) 22:浮點單元 24:分支單元 28:載入/儲存單元 30:一階資料快取記憶體 32:共享二階快取記憶體 34:主系統記憶體 36:近路徑邏輯 38:遠路徑邏輯 50:有效位數處理邏輯/浮點加法器 52:指數及符號處理邏輯/浮點加法器 54:選擇電路系統 54-0:多工器 54-1:或閘 56:轉發路徑 58:早期資訊 60-0:級0之內的部分 60-1:級1之內的部分 70:初始部分 72:後續部分 100:內部暫存器 102:內部暫存器 103:賦能邏輯 104:第二執行級 106:第一執行級 108:輸出正反器 112:元件計數器 116:正反器 120:正反器 122:全零值 124:輸出 126:指令轉發路徑 202:步驟 204:步驟 206:步驟 208:步驟 210:步驟 212:步驟
第1圖示意地圖示資料處理裝置的實例;
第2圖圖示浮點歸約運算的實例,該浮點歸約運算為迭代運算的實例;
第3圖圖示用於將兩個浮點運算元相加的浮點加法單元之一部分的實例;
第4圖圖示示例性時序圖,為了比較,該時序圖示出其中在迭代運算的連續迭代的處理中沒有重疊的方法;
第5圖圖示支援迭代運算的處理電路系統的一部分,其中給定迭代的處理的初始部分可與完成先前迭代的剩餘部分並行執行;
第6圖圖示時序圖,該時序圖示出使用第5圖的處理電路系統執行迭代運算的實例;
第7圖圖示用於執行第2圖的浮點歸約運算的浮點歸約單元;及
第8圖為示出執行迭代運算的方法的流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
58:早期資訊
70:初始部分
72:後續部分

Claims (19)

  1. 一種裝置,包含: 一指令解碼器,用以解碼程式指令;及 處理電路系統,用以回應於由該指令解碼器對一迭代運算處理的解碼,執行包含複數個處理迭代的一迭代運算,對於該複數個處理迭代,除了一第一迭代之外的一後續迭代取決於在一先前迭代中產生的一運算元; 該處理電路系統包含: 初始資訊產生電路系統,用以執行一給定迭代的處理的一初始部分以產生初始資訊; 結果產生電路系統,用以執行該給定迭代的處理的一剩餘部分,以使用由初始資訊產生電路系統判定的該初始資訊來產生一結果值;及 轉發電路系統,用以當該給定迭代為除了一最終迭代之外的一迭代時,將在該給定迭代中產生的該結果值作為該迭代運算的一下一個迭代的一運算元轉發;其中: 當該結果產生電路系統執行除了該最終迭代之外的該給定迭代的該剩餘部分時,該初始資訊產生電路系統經配置以與該結果產生電路系統完成當前迭代的該剩餘部分並行開始執行該下一迭代的該初始部分。
  2. 如請求項1所述之裝置,其中該初始資訊產生電路系統開始該給定迭代的該初始部分與該初始資訊產生電路系統開始該下一迭代的該初始部分之間的一潛時,可小於該初始資訊產生電路系統開始該給定迭代的該初始部分與該結果產生電路系統完成該給定迭代的該剩餘部分之間的一潛時。
  3. 如請求項1所述之裝置,其中該處理電路系統能夠根據具有一時鐘週期之一時鐘信號操作,該時鐘週期短於該初始部分及該剩餘部分的一組合潛時。
  4. 如請求項1所述之裝置,其中該初始資訊產生電路系統經配置以在比一時鐘週期更早的時鐘週期中執行該給定迭代之該初始部分,在該前一時鐘週期中,該結果產生電路系統開始執行該給定迭代的該剩餘部分。
  5. 如請求項1所述之裝置,其中該結果產生電路系統經配置以執行一單個時鐘週期中的該給定迭代的該剩餘部分。
  6. 如請求項1所述之裝置,其中除了該第一迭代之外的該後續迭代取決於以下各者: 由該轉發電路系統基於來自一先前迭代的該結果值轉發的一經轉發運算元;及 與該前一迭代之該結果無關的一第二運算元。
  7. 如請求項6所述之裝置,其中該初始資訊包含自該第二運算元導出的資訊。
  8. 如請求項1所述之裝置,其中除了該第一迭代之外該後續迭代取決於由該轉發電路系統基於來自一先前迭代的該結果值轉發之一經轉發的運算元,且該初始資訊包含從該經轉發的運算元上的早期資訊導出的資訊,該資訊在該經轉發的運算元完全由對於該先前迭代的該結果產生電路系統判定之前可用。
  9. 如請求項8所述之裝置,其中該經轉發的運算元為具有一符號、一指數及一有效位數的一浮點運算元;及 該早期資訊包含從該經轉發的運算元的該符號或該指數之至少一者導出的資訊。
  10. 如請求項1所述之裝置,其中該給定迭代的該結果值包含藉由將浮點運算元相加而獲得之一捨入浮點值。
  11. 如請求項10所述之裝置,其中該初始資訊包含以下至少一者: 該等浮點運算元之一者是否為次正規的一指示; 該等浮點運算元之一者是否為無限大的一指示; 該等浮點運算元之一者是否為非數值的一指示; 指示該等浮點運算元的指數之間的一差的一指數差值之至少一部分; 該等浮點運算元之一者的一有效位數的一分數部分是否為零的一指示; 該等浮點運算元是類似符號運算元還是非類似符號運算元的一指示。
  12. 如請求項1所述之裝置,其中該迭代運算指令識別一純量浮點運算元及包含複數個資料元件的一向量資料值,每一資料元件指定一浮點運算元; 該迭代運算的每一有效迭代包含將一第一浮點運算元與一第二浮點運算元相加; 對於該有效迭代的一第一有效迭代,該第一浮點運算元為該純量浮點運算元,且該第二浮點運算元為在該向量資料值的一第一有效資料元件中指定的一浮點運算元;及 對於該有效迭代的一後續有效迭代,該第一浮點運算元為在一先前有效迭代中之一加法的一經轉發結果,且該第二浮點運算元為在該向量資料值的一後續有效資料元件中指定的一浮點運算元。
  13. 如請求項12所述之裝置,其中該處理電路系統經配置以基於述詞資訊判定哪些迭代是有效的,該述詞資訊指定該向量資料值之何資料元件為有效資料元件。
  14. 如請求項12所述之裝置,其中該轉發電路系統包含一轉發迴路信號路徑,以將在該先前有效迭代中之該加法的經轉發結果提供作為該後續有效迭代之該第一浮點運算元; 該裝置包含一多工器以選擇何時將該純量浮點運算元作為該第一浮點運算元注入; 該多工器位於該轉發迴路信號路徑外部。
  15. 如請求項14所述之裝置,其中該轉發迴路信號路徑可包含或電路系統以提供待在一給定迭代中處理之該第一浮點運算元; 該或電路系統經配置以根據一按位元或運算將一第一輸入與一第二輸入組合; 在除了一第一有效迭代之迭代以外,該第一輸入包含在該先前有效迭代中由該結果產生電路系統執行的該加法的該經轉發結果;及 該第二輸入包含該多工器的一輸出。
  16. 如請求項15所述之裝置,其中在對於一第一迭代運算指令的該迭代運算的一最終迭代中,該處理電路系統可在該轉發迴路信號路徑上提供一全零值,該全零值待用作用於後續迭代運算指令之一第一有效迭代的該或閘的該第一輸入。
  17. 如請求項15所述之裝置,其中該多工器經配置以在第一有效迭代中選擇純量浮點運算元或較早的迭代運算指令中的經轉發結果,並且以在一或多個後續有效迭代中選擇全零值。
  18. 一種裝置,包含: 解碼構件,用於解碼程式指令;及 處理構件,用以回應於由該指令解碼器對一迭代運算指令的解碼,執行包含複數個處理迭代的一迭代運算,對於該複數個處理迭代,除了一第一迭代之外的一迭代取決於在一先前迭代中產生的一運算元; 處理構件包含: 用於產生初始資訊的構件,該初始資訊係藉由執行一給定迭代的處理的一初始部分來產生; 用於產生一結果值的構件,該結果值係藉由執行該給定迭代的處理的一剩餘部分,使用由初始資訊產生電路系統判定的該初始資訊來產生;及 用於轉發的構件,用以當該給定迭代為除了一最終迭代之外的一迭代時,將在該給定迭代中產生的該結果值作為該迭代運算的一下一個迭代的一運算元轉發;其中: 當該結果產生電路系統執行除了該最終迭代之外的該給定迭代的該剩餘部分時,該初始資訊產生電路系統經配置以與該結果產生電路系統完成該當前迭代的該剩餘部分並行開始執行該下一迭代的該初始部分。
  19. 一種資料處理方法,包含以下步驟: 使用一指令解碼器解碼一迭代運算指令;且回應於對該迭代運算指令的解碼,執行包含複數個處理迭代的一迭代運算,對於該複數個處理迭代,除了一第一迭代之外的一迭代取決於在一先前迭代中產生的一運算元; 其中該迭代運算係使用處理電路系統執行,該處理電路系統包含: 初始資訊產生電路系統,用以執行一給定迭代的處理的一初始部分以產生初始資訊; 結果產生電路系統,用以執行該給定迭代的處理的一剩餘部分,以使用由初始資訊產生電路系統判定的該初始資訊來產生一結果值;及 轉發電路系統,用以當該給定迭代為除了一最終迭代之外的一迭代時,將在該給定迭代中產生的該結果值作為該迭代運算的一下一個迭代的一運算元轉發;其中: 當該結果產生電路系統執行除了該最終迭代之外的該給定迭代的該剩餘部分時,該初始資訊產生電路系統與結果產生電路系統完成當前迭代的該剩餘部分並行開始執行該下一迭代的該初始部分。
TW109103625A 2019-03-29 2020-02-06 迭代運算的處理 TWI822952B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/368,930 US10970070B2 (en) 2019-03-29 2019-03-29 Processing of iterative operation
US16/368,930 2019-03-29

Publications (2)

Publication Number Publication Date
TW202036269A true TW202036269A (zh) 2020-10-01
TWI822952B TWI822952B (zh) 2023-11-21

Family

ID=72607238

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109103625A TWI822952B (zh) 2019-03-29 2020-02-06 迭代運算的處理

Country Status (3)

Country Link
US (1) US10970070B2 (zh)
CN (1) CN111752613A (zh)
TW (1) TWI822952B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4272371B2 (ja) * 2001-11-05 2009-06-03 パナソニック株式会社 デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US8291197B2 (en) * 2007-02-12 2012-10-16 Oracle America, Inc. Aggressive loop parallelization using speculative execution mechanisms
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
TWI523437B (zh) * 2014-04-25 2016-02-21 衡宇科技股份有限公司 Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法
EP3340037B1 (en) * 2016-12-22 2019-08-28 ARM Limited A data processing apparatus and method for controlling vector memory accesses
US10820017B2 (en) * 2017-03-15 2020-10-27 Mediatek Inc. Method and apparatus of video coding
CA3060368C (en) * 2017-04-17 2020-07-28 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning

Also Published As

Publication number Publication date
TWI822952B (zh) 2023-11-21
US10970070B2 (en) 2021-04-06
CN111752613A (zh) 2020-10-09
US20200310796A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
US11347511B2 (en) Floating-point scaling operation
US8447800B2 (en) Mode-based multiply-add recoding for denormal operands
TWI608410B (zh) 標準格式中間結果
JP2017538197A (ja) 有効度整合
WO2017081437A1 (en) Multiplication of first and second operands using redundant representation
US11119729B2 (en) Alignment shifting and incrementing to determine a rounded result of adding first and second floating-point operands
WO2017081435A1 (en) Lane position information for processing of vector
WO2017081434A1 (en) Redundant representation of numeric value using overlap bits
JPH07168697A (ja) 倍精度除算回路および方法
US8965946B2 (en) Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value
US10061561B2 (en) Floating point addition with early shifting
Boersma et al. The POWER7 binary floating-point unit
JP2006228191A (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
TWI822952B (zh) 迭代運算的處理
GB2549153B (en) Apparatus and method for supporting a conversion instruction
EP0840207A1 (en) A microprocessor and method of operation thereof
US8005884B2 (en) Relaxed remainder constraints with comparison rounding
KR20210124347A (ko) 앵커 데이터 요소 변환
EP0837390A1 (en) Improvements in or relating to microprocessor integrated circuits
Loutskii et al. METHOD OF SIMPLIFICATION OF COMPUTATIONS WITH A FLOATING POINT IN THE SUPERSCALAR PROCESSOR
JPS60263230A (ja) 多重精度浮動小数点加算回路
JP2001188670A (ja) 演算装置