TWI544413B - 可執行scale、round、getexp、round、getmant、reduce、range和class指令之乘加功能單元 - Google Patents
可執行scale、round、getexp、round、getmant、reduce、range和class指令之乘加功能單元 Download PDFInfo
- Publication number
- TWI544413B TWI544413B TW100134351A TW100134351A TWI544413B TW I544413 B TWI544413 B TW I544413B TW 100134351 A TW100134351 A TW 100134351A TW 100134351 A TW100134351 A TW 100134351A TW I544413 B TWI544413 B TW I544413B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- functional unit
- floating point
- shifter
- support
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims description 16
- 238000000034 method Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation of IEEE-754 Standard
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Description
本發明之領域,一般係論及電子運算,以及係更明確論及一個能夠執行功能近似化之功能單元。
第1圖顯示一個一般性處理核心100,其被認為係說明許多不同類型之處理核心架構,諸如,複雜指令系統電腦(CISC)、精簡指令系統電腦(RISC)、和極長指令字組(VLIW)。第1圖之一般性處理核心100包含:1)一個可抓取指令(舉例而言,自快取區和/或記憶體)之抓取單元103;2)一個可解碼指令之解碼單元104;3)一個可決定發給該執行單元106之指令的時序和/或順序之排程單元105(特別是該排程器為可選擇性);4)一個具有可執行指令之執行單元的執行級段106(一些典型之指令執行單元包含:分支執行單元、整數算術執行單元(舉例而言,ALUs)、浮點算術執行單元(舉例而言,FPUs)、和記憶體存取執行單元);和5)一個可表示一個指令之成功完成的引退單元107。特言之,該處理核心100,可能會或者可能不會採用微碼108。在微碼式處理器之情況中,該等微運算元,典型地係儲存在一個非揮發性機器可讀取式媒體(諸如唯讀記憶體(ROM))中,其係位於該半導體晶片內,該處理器係建造在後者上面,以及可使該處理器內之執行單元,執行該指令所叫出之想要的功能。
依據本發明之一實施例,係特別提出一種處理器,其包含:一個功能單元,其具有指數差計算邏輯、一個乘法器、和一個加法器,以支援一個乘加(multiply-add)指令,該功能單元亦具有一個捨位器(rounder)以支援一個捨位指令,其指明一個尾數(mantissa)值要捨位至多少個二進位位數,該指數差計算邏輯具有一個移位器(shifter)以支援該乘加指令和該捨位指令之執行。
本發明係藉由範例加以例示,以及並非受限於所附諸圖之繪圖中,其中,相似之參考數字,係指明類似之元件,以及其中:第1圖顯示一個處理器之實施例;第2圖顯示一個乘加功能單元之實施例;第3圖顯示一個可在第2圖之功能單元上面運作的GETEXP指令之流程圖;第4圖顯示一個可在第2圖之功能單元上面運作的SCALE指令之流程圖;第5圖顯示一個可在第2圖之功能單元上面運作的ROUND指令之流程圖;第6圖顯示一個可在第2圖之功能單元上面運作的GETMANT指令之流程圖;第7圖顯示一個可在第2圖之功能單元上面運作的REDUCE指令之流程圖;第8圖顯示一個可在第2圖之功能單元上面運作的RANGE指令之流程圖;而第9圖則顯示一個範例性運算系統。
第2圖顯示一個能夠執行本說明書所說明之許多不同指令的執行單元(亦被指稱為一個功能單元)。
第2圖之架構能夠執行的基本指令,係一個乘加(MADD)指令,其可使一個被乘數(A)與乘數(B)相乘,以及使其乘積(AB)加至一個加數(C)。亦即,該MADD指令會執行指令R=(AB)+C(在一個實施例中,該MADD指令,可被用來執行任何下列之計算:AB+C、AB-C、-AB+C、-AB-C)。在浮點形式中,如同本技藝中所習見,一個值可以一個尾數項和一個指數項來表示。因此,舉例而言,被乘數A係表示為;(A.mant,A.exp),乘數B係表示為(B.mant,B.exp),以及加數C係表示為(C.mant;C.exp)。
第2圖之架構,就浮點運算而言,包含指數計算邏輯201和尾數計算邏輯202。依據一個浮點MADD指令之基本運算,該指數計算邏輯201,可決定該浮點結果之指數項(R.exp),以及該尾數計算邏輯202,可決定該浮點結果之尾數項(R.mant)。就該浮點MADD指令而言,該指數計算邏輯201,起初可決定該R.exp項為:i) C.exp;ii)(A.exp+B.exp)之最大值。
該尾數邏輯202,包含指數差邏輯203,其包含左移位邏輯204和右移位邏輯205兩者。該尾數邏輯,亦包含一個乘法器206。該乘法之動作,可被視為許多部分積之總和。第2圖亦顯示一個特定之乘法器設計解決方案,其中,該選擇器邏輯207,可產生該A.mant項和該B.mant項之乘法運算的部分積(值得注意的是,該B.mant項亦為布斯加密式)。該瓦利氏樹邏輯208,可有效地執行該選擇器邏輯207所產生之部分積的總和。特言之,該加數尾數項(C.mant),係使加進該瓦利氏樹208,而使該瓦利氏樹208,亦可執行該AB+C加法。
然而,在該加入動作之前,該C.mant項會被調整,以使其在該部分積總和中,被適當地調準。在此,由於該乘法器所執行之乘法,會自然地產生一個屬級次A.exp+B.exp之尾數項,該指數差邏輯203,可使該C.mant項移位多達C.exp與(A.exp+B.exp)間之差異。特言之,若C.exp大於(A.exp+B.exp),該C.mant項將會被左移位邏輯204,向左移位C.exp-(A.exp+B.exp)二進位小數點(亦即,該C.mant項之二進位小數點,將會向右移位,其具有增加其整數項之效應)。同理,若C.exp小於(A.exp+B.exp),該C.mant項將會被該右移位邏輯205,向右移位(A.exp+B.exp)-C.exp十進位小數點(亦即,該C.mant項之二進位小數點,將會向左移位,其具有減少其整數項之效應)。在此情況中,C.mant之較低次分數項,會被該邏輯213結合成一個黏著位元(sticky bit),而被一個捨位器217用作下文進一步說明之指令。
該瓦利氏樹邏輯207所執行之總和,可產生一個總和項和一個進位項,彼等會被該加法器209相加,使產生一個有關AB+C計算之結果。在此,若該AB+C計算之結果,包含前位零(或前位一,若該結果為負),該前位改變預測器210,將會使得該結果向左移位(藉由該左移位器211),而多達前位零/一之數目,使移除彼等。此相同之資訊,會提供給該指數計算邏輯201,藉以調整R.exp。
在此有兩個移位器,一個左移位器204,使移除前位零/一(在該情況中,R.exp係以shift_count使更新);和一個右移位器212(其在C.exp大於A+B.exp時會有需要,在該情況中,該瓦利氏樹結果,係使右移位至等於C.exp-(A+B.exp)之小數點。)。該Mux 213可選擇在該兩移位器211、212中,何者被利用來實行該正確之結果。在一個實施例中,若該C.mant項為向左移位,該加法器209可能會產生一個進位項214。此進位項214可致能一個遞增器215,其可有效地將該進位項加至上述經左移位之C.mant項(亦即,該遞增器215之輸出,會流經該2:1多工器216,倘若該加法器209,產生一個進位項)。在一個實施例中,該加法器209係屬108位元,以及該遞增器215係一個53位元之遞增器。
許多可在第2圖之功能單元上面執行的附加指令,係在下文做進一步之詳細說明。就任何此等指令加上前述之FMADD指令而言,在一個實施例中,該功能單元在設計上,可針對標量資料(scalar data)或分組資料(packed data)(SIMD)類型之運算元的任何組合以及在單精度或雙精度中運作。彼等運算元之類型和精度的規範組合,係明訂在該指令中。此外,第2圖之功能單元,可多次加以具現化,使實行一個向量功能單元。在此,在該向量功能單元之輸出與該向量功能單元內的每個具現化功能單元間,可能會強制地建立一個遮罩層。
向量運算可被視為與SIMD運算有所臨別,其意義在於,該輸入運算元之維度,就向量機器而言係屬可變,但就SIMD機器運算而言係屬固定。上述之遮罩層,提供了改變該向量機器中之元素數目的能力。特言之,每個來自該具現化功能單元中的一個之輸出元素,可能係以其自己之對應寫入邏輯電子電路來寫入。在一個實施例中,該寫入邏輯電子電路,可寫至該向量功能單元之任何輸出元素位置。藉由僅就該等相當於一個有效之向量運算元元素之元素,來致能該寫入邏輯電子電路,彼等可變長度之向量係屬可處理。此具有基本上可致能僅屬該具現化功能單元而相當於一個有效之向量元素的運算之效應。此外,該遮罩層可能經設計而使該個別具現化功能單元偵測到之任何算術例外,僅就該致能之具現化功能單元,為有效之輸出而呈現,同時抑制來自該等未被致能者之例外。
該SCALE指令之流程圖,係顯示在第3圖中。該SCALE指令可藉由floor:Y(其係浮點項Y之最小整數表示式),來標定一個第一浮點項X。該VSCALE指令實際上,可被視為一個可使X之二進位小數點移位一個數量floor:Y的指令。
以數學術語而言,此可能會被表示為
R=(X.mant E X.exp)*2^(floor:Y.mant E Y.exp)=X.mant E(X.exp+(floor:Y.mant E Y.exp)).
因此,該結果之尾數項,為R.mant=X.mant,以及該結果之指數項,為R.exp=X.exp+(floor:Y.mant E Y.exp)。關於R.exp之計算,值得注意的是,該X.exp項本身係一個整數,以及Y.mant E Y.exp可使轉換成一個整數,其係僅藉由移位該Y.mant項之二進位小數點,直至其中無分數位元為止。亦即,舉例而言,若Y.mant=1.01011,以及Y.exp=5,則Y=101011。此基本上係相當於在一個移位器內,使Y.exp向左移位Y.mant。在此,該下取整(floor)運算,基本上係相當於捨棄該等分數位元。因此,該R.exp項在計算上可藉由:i)移位Y.mant使達一個等於Y.exp之數量;以及ii)將該移位值加至X.exp。
此可在第2圖之指數差邏輯203內加以完成,其係以上述可處理該MADD指令之加數項(C.mant和C.exp)的資料路徑,來處理該Y項,同時迫使該等A.exp和B.exp項=0。在此情況中,C.exp-(A.exp+B.exp):Y.exp-(0)=Y.exp,將會使得Y.mant,被該左移位器204,向左移位Y.exp。該移位器204之輸出,接著會提供給該指數計算邏輯201,其可將該移位器204之輸出,加至該X.exp項。該X.exp項可能會強加任何至該指數計算邏輯201之A.exp、B.exp、C.exp輸入。該總和係提供為R.exp。R.mant係僅提供為該輸入X.mant項。
該GETEXP指令之流程圖,係顯示在第4圖中。該GETEXP指令,可接收一個輸入項(Z.mant,Z.exp),可自Z.exp之值減去偏差,以及可以浮點形式提供解答。基本上,該指令係以浮點形式,提供輸入Z之實際指數。在此,誠如本技藝中所習見,彼等浮點指數值,係典型地使偏移,而使涉及負指數之計算更加容易。舉例而言,在單精度之情況中,有8個位元保留給該指數項,其會給出一個有254個不同值之範圍(特別意義給了其他兩個值)。在此,就一個-127至+127之實際指數範圍而言,一個+127之偏差,係藉由硬體加至任何此等實際之指數值,以致就該指數在硬體中實體上計算之數值範圍,係自0延伸至254。因此,就單精度而言,該GETEXP指令,會自Z.exp減去127之值,以及會以浮點形式來提供該解答。在雙精度情況中,一個1023之值,會自Z.exp減除(值得注意的是,雙精度在.exp項,具有11個位元)。
在單精度之情況中,一個127之值會藉由加入-127之值,而自另一個項減除。在二補數整數形式中,-127可被表示為10000001,其可被重新調準為0.10000001 E 8(亦即,若該值10000001 E 0,係使向右移位八個小數點位數),就此而論,依據一個解決方案,就單精度而言,一個0.10000001之值,係促使為該被乘數(A.mant),以及一個1之值係促使為該乘數(B.mant),上述來自如該乘法器所執行之AB項的乘積之結果,係0.10000001,其係相當於向右移位八個位數之-127。
該Z.exp項係沿該加數(C.mant)資料路徑而被接收,以及亦藉由該右移位器205,使向右移位八個位數,而在其被加進該瓦利氏樹208之前,使其與該乘法器輸出相調準。來自該加法器209之結果,係相當於該Z.exp減去127之偏差,以及係使向右移位八個位數。該等前位改變預測器210和左移位器211,將會移除任何之前位零/一,以及該結果係提供為R.mant。R.exp係由該指數計算邏輯來加以計算,再次地,就單精度而言,為R.exp=8-(來自LCA 210之前位零/一計數)+127+1。就雙精度而言,上文所說明之同一運算係適用,除了該偏差為1023以外,以及該等值係使移位11個位元,而非8個位元。就此而論,R.exp=11-(來自LCA 210之前位零計數)+1023+1。
在該輸入項(Z.mant,Z.exp)為非正規(亦即,具有一個零之偏差指數項以及形式為0.XXXX…X之非零尾數)之情況中,該Z.mant項係在LCA 210之控制下,藉由該左移位器211使向左移位,直至該首位1被發現到為止。該結果係提供為R.mant。該左移位計數,係相當於上述亦被瞭解為負之指數的絕對值。因此,R.exp係由該指數計算邏輯來呈現,而為來自該LCA 210之R.exp=-|前位零計數。
此ROUND指令之流程圖,係顯示在第5圖中。該ROUND指令,可使一個輸入項(S.mant;S.exp)之尾數S.mant,捨位至一個輸入項Q所指明之若干二進位位數。舉例而言,若S=10111.11001 E 0以及Q=2,該指令將會提供一個結果R=10111.11 E 0(亦即,R.mant=10111.11;R.exp=0)。為實行此運算,該S.mant項係被接收為該加數尾數輸入(C.mant),以及係藉由該右移位器205,使向右移位一個數量:(S.mant中之分數位元的個數)-Q。
在上文所提供之範例中,S.mant中之分數位元的數目為5(亦即,字串"11001"中有五個位元)。因此,S.mant係使向右移位5 Q=5-2=3位數。使10111.11001之輸入S.mant項,向右移位3個位數,而會產生一個相當於10.11111 E 3之結果,其具有自該原始輸入S捨棄最低有序分數位元字串"001"之效應。在一個實施例中,該指令可支援下列之捨位模態:1)上捨位;2)下捨位;3)捨位至最近之偶數;和4)捨位至零。
依據該指明之捨位模態和被捨棄之分數位元,完全運算可使該最小分數值上捨位或下捨位,以及可呈現具有原始指數(亦即,10111.11 E 0)之結果。在此,會有一個遮罩建立成,其包含一些與部份之原始S.mant相調準的前位0,彼等係保持與一些後位1串接,後者係與該原始S.mant項捨棄之部分相調準。在本說明書正在討論之範例中,此係相當於0000000111。該遮罩係與該原始之S.mant輸入做邏輯或運算(OR),使舉例而言產生一個第一值1011111111。該遮罩之邏輯非值(NOT)(1111111000),係使與該原始輸入之S.mant項做邏輯和運算(AND),使產生一個第二值1011111000。有一個捨位器217,可接收兩者之值,以及可使該第一值遞增,其係相當於一個上捨位值。該第二值係相當於一個非上捨位值。該等第一值或第二值,將會基於所指明之捨位模態和該右移位器205所捨棄之位元,被選定為正確之尾數解答。在此範例中,該等被捨棄之位元,係相當於"001",所以,一個上捨位不應發生(在捨位至最近(round-to-nearest)模態中),以及該第二值係被選定為該正確之尾數。在上捨位模態(和輸入符號為正),或者下捨位模態(以及輸入符號為負)之情況中,該上捨位值便會被選定。該非上捨位值總是在捨位至零(round-to-zero)模態中被選定。該指數計算邏輯,可決定該正確之指數(舉例而言,考慮捨位至最近模態中之S=11111.11111 E 0和Q=2:在常態化之後,R.exp=S.exp+1)。
特別地,該等第一值和第二值中的一個,係相當於一個偶數尾數值,以及另一個為奇數尾數值。在捨位至最近偶數之情況中,選擇係基於該最左捨棄之位元和另一個捨棄之位元(黏著位元)的邏輯或值。若該最左捨棄之位元為1,但該黏著位元為0,該偶數值便會被選定。若該黏著位元為1,選擇係基於最左捨棄之位元:若為1,便選擇上捨位值;若0,便選擇截取(亦即,非上捨位)之值。在捨位至無限大(round-to-infinity)之情況中,若任何被捨棄之分數位元為1,該上捨位值便會被選定;另外,若所有被捨棄之位元為0,該非上捨位值會被選定。在一個實施例中,該捨位至無限大之規則,係就下捨位模態中之負輸入,以及就上捨位模態中之正輸入加以應用。該捨位至零之規則,係就下捨位模態中之正輸入,以及就上捨位模態中之負輸入加以應用。上述所說明之捨位行為,係符合IEEE標準754-2008中所給出之捨位模態定義。
該GETMANT指令之流程圖,係顯示在第6圖中。GETMANT可提供一個浮點形式中之尾數的值。上述以浮點形式表示之尾數,係在C.mant輸入處被接收。該結果之尾數部分(後文稱為"有意義(significand")",係使成為1.XXXX…X之形式。該輸出值勢必要落於其內之數值範圍(亦稱作一個常態化值),亦係提供為一個輸入參數。依據一個實施例,其中有四個區間,彼等可被指明為:[1,2);[1/2,1);[1/2,2);和[3/4,3/2)。
一個[1,2)之範圍,係相當於形式為1.XXXX…X之輸出二進位數字。在該C.mant輸入屬形式1.XXX…X之情況中,該C.mant輸入項,係僅呈現為該輸出結果。該指數邏輯可將該指數結果設定成0(或BIAS),使該輸出值呈現在該正確之範圍內。
一個[1/2,1)之範圍,係相當於形式為0.1XXXX…X之輸出二進位數字。在該C.mant輸入屬形式1.XXX…X之情況中,該C.mant輸入項,係僅呈現為該輸出尾數結果。該指數結果係呈現為-1(或BIAS-1),使提供該輸出值,在該指明之範圍內(亦即,形式為0.1XXXX…X之數值數字)。
一個[1/2,2)之範圍,係相當於形式為0.1XXXX…X或1.XXXX…X之輸出二進位數字。在該C.mant輸入屬形式1.XXX…X之情況中,該C.mant輸入項,係僅呈現為該輸出尾數結果。若該C.mant輸入項屬形式0.1XXX…X,該指數係呈現為-1(或BIAS-1),使提供該輸出值,在該正確之數值範圍內。若該C.mant輸入項屬形式1.XXXX…X(或BIAS),該指數係呈現為0(或BIAS),使提供該輸出值,而在該正確之數值範圍內。
一個[3/4,3/2)之範圍,係相當於形式為0.1XXXX…X或1.0XXX…X之輸出二進位數字。在該C.mant輸入屬形式1.XXX…X之情況中,該C.mant輸入項,係僅呈現為該輸出尾數結果。若該C.mant輸入項屬形式1.0XXX…X,該指數係呈現為0(或BIAS),使提供該輸出值,而在該正確之數值範圍內。若該C.mant輸入項屬形式1.1XXX…X,該指數係呈現為-1(或BIAS-1),使提供該輸出值,而在該正確之數值範圍內。
就任何上述之指令而言,其中,該輸入項係非正規(亦即,具有一個零之偏差指數項,和一個形式為0.XXXX…X之非零尾數),該C.mant項係在該LZA 210之控制下,藉由該左移位器211,而使向左移位,直至該首位1被發現到為止,其復相當於以1.XXXX…X之形式呈現該輸出(其係所想要之輸出形式)。該正確之指數,接著係就該適用之特定範圍如上文所說明地加以建立。
該REDUCE指令之流程圖,係顯示在第7圖中。REDUCE會依據關係R=X-Round(2MX)2-M,來擷取一個輸入值之約減引數。在此,M係一個標度因數,其可決定該擷取參照所由之位元位置。一個輸入值亦明訂該Round運算是否為上捨位、下捨位、或捨位至最近偶數。舉例而言,若X=1.01010101,以及一個下捨位具有一個3之標度因數,則Round(23X)=1010.00000,以及Round(23X)23=1.01000000。因此,X-Round(2MX)2-M=1.01010101-1.01000000=0.00010101。在此情況中,R將會被表示成1.0101,而具有一個零之指數。
參照第2圖,某一控制邏輯(未示出),可接收上述提供為具有該指令之輸入的標度參數M。該值X會在C.mant.input處被接收,以及係在該控制邏輯之控制下,藉由該左移位器204使向左移位。特言之,該控制邏輯可使該左移位器204,將該值X向左移位一個等於該標度參數M之二進位位數的數目。此可產生該2MX項。運作接著會如上文有關該ROUND指令之說明而前進,除外的是未使用該右移位器205,因為就當前之運作而言,該ROUND指令之Q參數為0。
在一個實施例中,該捨位器217能夠自該指令,接收另一個輸入參數,使指示其是否假定為上捨位、下捨位、或捨位至最近偶數。此等不同模態有關之捨位器的運作,係如上文有關ROUND指令之說明。
當該捨位之解答,係由該捨位器217提供時,其會被該右移位器205,向右移位移位一個等於該標度參數M之二進位位數的數目(特別地,該捨位器217之輸出,係耦合至該右移位器205之輸入)。該右移位器205之輸出,係相當於Round(2MX)2-M,以及係使傳遞給該瓦利氏樹209,而做適當之符號操控,使實行其之負表示式。該乘法器可在該C.mant輸入端處,而在A.mant輸入端或B.mant輸入端處,接收同一輸入值,以及另一個輸入係使固定至一個1之值。因此,該加法器209可提供X-Round(2MX)2-M。在一個上捨位之情況中,該加法器209之結果,將會為負值或零。若該結果為負值,該LCA將會使該左移位器211,將前位1移位出。在一個下捨位之情況中,該加法器209之結果,將會為正值或零。若該結果為正值,該LCA將會使該左移位器211,將前位零移位出。在一個捨位至最近偶數之情況中,該加法器之結果,可為負值、正值、或零。該LCA 209將會如上文剛就正值和負值之結果所說明,造成適當之移位。該輸出接著會由該功能單元提供。
該RANGE指令之流程圖,係顯示在第8圖中。該RANGE指令,會接收兩個值F和G,以及會回報以下之任何:i) F和G之最小值;ii) F和G之最大值;iii) F之絕對值和G之絕對值的最小值;和iv) F之絕對值和G之絕對值的最大值。在一個實施例中,i)至iv)的一個特定決定,係在該執行有關之指令中被識別。參照第2圖,在一個實施例中,就上文之指令i)和ii)而言,F係提供在該C.mant輸入端處,以及G係提供在該A.mant輸入端處。該B.mant輸入係促使為一個1.0之值。G有關之符號項係使交換,而使透過該等瓦利氏樹和加法器209,來實行一個計算F-G。該加法器209之輸出有關的符號項,係表明F和G何者較大。特別地,若該符號項為正,F係較大,或者,若該符號項為負,G係較大。因此,F在前者之情況中,會被發送為該輸出,以及G在後者之情況中,會被發送為該輸出。彼等指令iii)和iv),係以類似之方式運作,除外的是,該等F和G值有關之符號項,在提交給該乘法器之前,係被採納為正值。
該CLASS指令,可決定一個運算元之類型。在一個實施例中,該指令係相當於一個測試,其係有關多數之不同資料類型,和一個特定之輸出格式,其就每個類型而言,基本上係保留一個位元位置,以及若該運算元係屬一個特定之測試類型,該功能單元,可將一個1置於該輸出對應於該類型之位元位置中。在又一實施例中,其中有八個要測試之不同資料類型。彼等係;i) QNaN;ii)負有限(Negative Finite;);iii)非正規(Denormal);iv)負無限大;v)正無限大;vi)負零;vii)正零;viii)SNAN。在一個實施例中,該功能單元之控制邏輯(未顯示在第2圖中),會就該C.mant輸入端處所呈現之運算元做出決定,以及會響應而構思出該特定之輸出結果。
此BLENDSEM指令,可依據對應之緊接位元[7:0],使第二來源運算元中之分組式雙精度浮點值的符號、指數、和尾數,有條件地與第一來源運算元中之分組式雙精度浮點值的符號、指數、和尾數相合併。此所成就之分組式雙精度浮點值,係使儲存在目的地暫存器中。該緊接位元[7:0]可決定,來自第二來源運算元中或第一來源運算元中之單精度浮點值的對應符號、指數、和尾數,是否勢必要複製至目的地。一些特定之值,亦基於該最近的控制而加以操控。
該FIXUPIMM指令,可使用來自int64向量之32-位元表列值,來執行一個float64向量zmm2中之各種實數和特定數字類型的逐元素修補。該結果係使合併成一個float64向量zmm1。此指令係特別意使用來修補一些涉及一個來源之算術計算的結果,以便彼等可配合該規範,雖然其通常係有用於修補多指令序列之結果,使反映特數(special-number)輸入。舉例而言,考慮rcp(0)。輸入0至rcp,以及該結果應為INF。然而,經由牛頓-拉福生(Newton-Raphson)評估rcp,其中x=approx(1/0),會產生一個不正確之結果。要處理此,FIXUPIMM可在N-R倒數序列之後,被用來將該結果設定至該正確之值(亦即,INF,當該輸入為0時)。非正規輸入運算元,zmm1或zmm2,係被視為正規輸入,以及並不會觸發任何之修補或故障報告。
在一個實施例中,該等BLENDSEM和FIXUPIMM指令,係在一個稱為"改組"功能單元之不同功能單元上面執行。
該RCP14指令,可執行該來源運算元(第二運算元)中之四/二分組式雙精度浮點值的近似倒數之SIMD計算,以及可將該分組式雙精度浮點結果,儲存進該目的地運算元內。此近似值有關之最大相對誤差,係小於2-14。該來源運算元,可為一個ZMM暫存器,或一個512-位元之記憶體位置。該目的地運算元,係一個ZMM暫存器。該RCP14PD指令,不會受到捨位控制位元之影響。當一個來源值為一個0.0時,會有一個具有該來源值之符號的∞回報。當一個來源值為一個SNaN或QNaN時,該SNaN會被轉換成一個QNaN,或者會回報該來源QNaN。
此RSQRT14指令,可執行該來源運算元(第二運算元)中之八分組式雙精度浮點值的平方根之近似倒數的SIMD計算,以及可將該分組式雙精度浮點結果,儲存進該目的地運算元內。此近似值有關之最大相對誤差,係小於2-14。該來源運算元,可為一個ZMM暫存器,或一個512-位元之記憶體位置。該目的地運算元,係一個ZMM暫存器。該RSQRT14PD指令,不會受到捨位控制位元之影響。當一個來源值為一個0.0時,會有一個具有該來源值之符號的?(回報。當該來源運算元為一個∞時,便會有一個具有該來源值之符號的零回報。當該來源運算元為一個負值(0.0除外)時,便會有一個浮點不定值回報。當一個來源值為一個SNaN或QNaN時,該SNaN會被轉換成一個QNaN,或者會回報該來源QNaN。
在一個實施例中,該等VRCP14和VRSQRT14指令,係在另一個稱為"PFPROMS"功能單元之不同功能單元上面執行。
一個具有上文所說明之功能性的處理器,亦同樣可使體現在各種之運算系統內。第9圖係顯示一個運算系統(舉例而言,電腦)之實施例。第9圖之範例性運算系統包含:1)一個或多個可能經設計使包含一個向量邏輯精簡指令之處理器901;2)一個記憶體控制中心(MCH) 902;3)一個系統記憶體903(其存在有不同之類型,諸如DDR RAM、EDO RAM、等等);4)一個快取區904;5)一個輸入/輸出控制中心(ICH) 905;6)一個圖形處理器906;7)一個顯示器/螢幕907(其存在有不同之類型,諸如影像管(CRT)、平板顯示器、薄膜電晶體(TFT)、液晶顯示器(LCD)、DPL、等等):和8)一個或多個輸入/輸出裝置908。該運算系統,亦可能包含一個硬碟驅動器(未示出)。
該等一個或多個處理器901可執行指令,以便執行該運算系統所體現之任何軟體常式。該等指令經常會涉及針對資料所執行之某些類型的運算。資料和指令兩者,係使儲存在該等系統記憶體903和快取區904內。此快取區904典型地係設計使具有比起該系統記憶體903更短之潛時。舉例而言,該快取區904或可能與該(等)處理器一起集成至同一矽晶片上面,以及/或者使以較快速之SRAM晶元來建立,而該系統記憶體903,或可能以一些較慢之DRAM晶元來建立。藉由傾向於將更加頻繁使用之指令和資料,儲存進該快取區904內,而非該系統記憶體903,該運算系統之整體性能效率將會得到改善。
該系統記憶體903,係特意利用該運算系統內之其他組件。舉例而言,自各種介面(舉例而言,鍵盤和滑鼠、印表機介面、LAN介面、數據機介面、等等)接收至運算系統或自該運算系統之內部儲存元件(舉例而言,硬碟驅動器)取回的資料,在一個軟體程式之體現中被一個或多個處理器901運作之前,經常係使暫時佇列進該系統記憶體903內。同理,一個軟體程式決定應自該運算系統透過一個運算系統介面傳送至一個外在實體或使儲存進一個內部儲存元件內的資料,在被傳輸或儲存之前,經常係使暫時佇列進該系統記憶體903內。
該ICH 905負責確保此等資料在該系統記憶體903與其之適當對應運算系統介面(和內部儲存裝置,若該運算系統係經如此設計)間可適當地被傳遞。該MCH 902負責管理各種有關該系統記憶體903在彼此可能前後緊接發生之處理器901、介面、和內部儲存元件間的存取之競爭請求。
有一個或多個輸入/輸出裝置908,亦使體現在一個典型之運算系統中。彼等輸入/輸出裝置,通常負責傳輸資料,使來回於該運算系統(舉例而言,聯網轉接器);或該運算系統內之大型非揮發性儲存器(舉例而言,硬碟驅動器)。該ICH 905具有在其本身與該等被觀察之輸入/輸出裝置908間的雙向點對點鏈路。
在前文之專利說明書中,本發明業已參照彼等之特定範例性實施例加以說明。然而,顯然的是,對其係可能完成各種修飾體和變更形式,而不違離如所附申請專利範圍中所闡明本發明之精神和界定範圍。此專利說明書和繪圖,因而應被視為屬例示性,而非有限制意。
100...一般性處理核心
103...抓取單元
104...解碼單元
105...排程單元
106...執行單元
106...執行級段
107...引退單元
108...微碼
201...指數計算邏輯
202...尾數計算邏輯
203...指數差邏輯
204...左移位邏輯
205...右移位邏輯
206...乘法器
207...選擇器邏輯
208...瓦利氏樹邏輯
209...加法器
210...前位改變預測器
211...左移位器
212...右移位器
213...多工器
214...進位項
215...遞增器
216...2:1多工器
217...捨位器
901...處理器
902...記憶體控制中心(MCH)
903...系統記憶體
904...快取區
905...輸入/輸出控制中心(ICH)
906...圖形處理器
907...顯示器/螢幕
908...輸入/輸出裝置
第1圖顯示一個處理器之實施例;
第2圖顯示一個乘加功能單元之實施例;
第3圖顯示一個可在第2圖之功能單元上面運作的GETEXP指令之流程圖;
第4圖顯示一個可在第2圖之功能單元上面運作的SCALE指令之流程圖;
第5圖顯示一個可在第2圖之功能單元上面運作的ROUND指令之流程圖;
第6圖顯示一個可在第2圖之功能單元上面運作的GETMANT指令之流程圖;
第7圖顯示一個可在第2圖之功能單元上面運作的REDUCE指令之流程圖;
第8圖顯示一個可在第2圖之功能單元上面運作的RANGE指令之流程圖;而
第9圖則顯示一個範例性運算系統。
201...指數計算邏輯
202...尾數計算邏輯
203...指數差邏輯
204...左移位邏輯
205...右移位邏輯
206...乘法器
207...選擇器邏輯
208...瓦利氏樹邏輯
209...加法器
210...前位改變預測器
211...左移位器
212...右移位器
213...多工器
214...進位項
215...遞增器
216...2:1多工器
217...捨位器
Claims (25)
- 一種處理器,其包含:一個功能單元,其能夠執行至少三個不同浮點指令且具有指數差計算邏輯、一個乘法器、和一個加法器,以支援為該至少三個不同浮點指令中的第一的一個乘加(multiply-add)指令,該功能單元亦具有一個捨位器(rounder)以支援為該至少三個不同浮點指令中的第二的一個捨位指令,其用以指明一個尾數(mantissa)值要捨位至多少個二進位位數,該指數差計算邏輯具有一個移位器(shifter)以支援該乘加指令和該捨位指令之執行,其中該功能單元也能夠執行不同於該乘加指令和該捨位指令的至少一其它指令。
- 如申請專利範圍第1項之處理器,其中,該移位器亦用以支援一個要被該功能單元執行之標度(scale)指令。
- 如申請專利範圍第2項之處理器,其中,該指數差計算邏輯包含一個第二移位器以支援該乘加指令之執行,其中,該第二移位器亦用以支援一個要被該功能單元執行之取得指數(get exponent)指令。
- 如申請專利範圍第1項之處理器,其中,該指數差計算邏輯包含一個第二移位器以支援該乘加指令之執行,其中,該第二移位器亦用以支援一個要被該功能單元執行之取得指數指令。
- 如申請專利範圍第4項之處理器,其中,該移位 器、該第二移位器、和該捨位器,亦用以支援一個要被該功能單元執行之約減(reduce)指令。
- 如申請專利範圍第1項之處理器,其中,該移位器和該捨位器,亦用以支援一個要被該功能單元執行之約減指令。
- 如申請專利範圍第1-6項中任一項之處理器,其中,該捨位指令係向量捨位指令,其用以指明浮點值之向量之每一尾數值要捨位至多少個二進位位數。
- 如申請專利範圍第1-6項中任一項之處理器,其中,該指數差計算邏輯亦支援複數個附加的不同浮點指令。
- 如申請專利範圍第1-6項中任一項之處理器,其中該功能單元係用以運算具有複數個元素之分組資料運算元,且其中該功能單元包括用以致能用於有效元素之該功能單元以及未致能用於無效元素之該功能單元的一遮罩層。
- 如申請專利範圍第1-6項中任一項之處理器,其中,該移位器亦用以支援一個要被該功能單元執行之標度指令,該標度指令用以藉由取整(floor)第二浮點值而標度第一浮點值。
- 一種在處理器中執行的方法,該方法包括:以一個功能單元執行一個第一浮點指令,該第一浮點指令為一個乘加指令;以該功能單元執行一個第二浮點指令,該第二浮點指 令為一個捨位指令;以及以該功能單元執行複數個附加的不同浮點指令,其中該複數個附加的不同浮點指令係選自標度指令、取得指數指令、取得尾數指令、約減指令及範圍指令。
- 如申請專利範圍第11項之方法,其中,執行該複數個附加的不同浮點指令包含執行一個標度指令。
- 如申請專利範圍第12項之方法,其中,執行該複數個附加的不同浮點指令包含執行一個取得指數指令。
- 如申請專利範圍第13項之方法,其中,執行該複數個附加的不同浮點指令包含執行一個約減指令。
- 如申請專利範圍第14項之方法,其中,執行該複數個附加的不同浮點指令包含執行一個取得尾數指令。
- 如申請專利範圍第15項之方法,其中,執行該複數個附加的不同浮點指令包含執行一個範圍指令。
- 一種運算系統,其包含:一個硬碟驅動器;以及一個處理器,該處理器具有一個功能單元,該功能單元能夠執行至少三個不同浮點指令且具有一個指數差計算邏輯、一個乘法器、和一個加法器,以為該至少三個不同浮點指令中的第一的支援一個乘加指令,該功能單元亦具有一個捨位器以支援為該至少三個不同浮點指令中的第二的一個捨位指令,其用以指明一個尾數值要捨位至多少個二進位位數,該指數差計算邏輯具有一個移位器以支援該乘加指令和該捨位指令之執行,其中該功能單元也能夠執 行不同於該乘加指令和該捨位指令的至少一其它指令。
- 如申請專利範圍第17項之運算系統,其中,該移位器亦用以支援一個要被該功能單元執行之標度指令。
- 如申請專利範圍第18項之運算系統,其中,該指數差計算邏輯包含一個第二移位器以支援該乘加指令之執行,其中,該第二移位器亦用以支援一個要被該功能單元執行之取得指數指令。
- 如申請專利範圍第17項之運算系統,其中,該指數差計算邏輯包含一個第二移位器以支援該乘加指令之執行,其中,該第二移位器亦用以支援一個要被該功能單元執行之取得指數指令。
- 如申請專利範圍第20項之運算系統,其中,該移位器、該第二移位器、和該捨位器,亦用以支援一個要被該功能單元執行之約減指令。
- 一種處理器,其包含:指令抓取單元,其用以抓取指令;指令解碼單元,器用以解碼該指令;以及用以執行數個功能單元,該數個功能單元中的一個功能單元用以執行至少三個不同浮點指令且具有指數差計算邏輯、一個乘法器、和一個加法器,以支援為該至少三個不同浮點指令中的第一的一個乘加指令,該功能單元亦具有一個捨位器以支援為該至少三個不同浮點指令中的第二的一個捨位指令,其用以指明一個尾數(mantissa)值要捨位至多少個二進位位數,該指數差計算邏輯具有一個移位 器(shifter)以支援該乘加指令和該捨位指令之執行,以及其中該功能單元也能夠執行不同於該乘加指令和該捨位指令的至少一其它指令。
- 如申請專利範圍第22項之處理器,其中,該指數差計算邏輯包含一個第二移位器以支援該乘加指令之執行,其中,該第二移位器亦用以支援一個要被該功能單元執行之取得指數(get exponent)指令。
- 如申請專利範圍第22-23項中任一項之處理器,其中,該指數差計算邏輯亦支援複數個附加的不同浮點指令。
- 如申請專利範圍第22-24項中任一項之處理器,其中該功能單元係用以運算具有複數個元素之分組資料運算元,且其中該功能單元包括用以致能用於有效元素之該功能單元以及未致能用於無效元素之該功能單元的一遮罩層。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/890,543 US8914430B2 (en) | 2010-09-24 | 2010-09-24 | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201224922A TW201224922A (en) | 2012-06-16 |
TWI544413B true TWI544413B (zh) | 2016-08-01 |
Family
ID=45871876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100134351A TWI544413B (zh) | 2010-09-24 | 2011-09-23 | 可執行scale、round、getexp、round、getmant、reduce、range和class指令之乘加功能單元 |
Country Status (8)
Country | Link |
---|---|
US (4) | US8914430B2 (zh) |
JP (1) | JP5684393B2 (zh) |
KR (1) | KR101533516B1 (zh) |
CN (1) | CN106528044A (zh) |
DE (1) | DE112011103206B4 (zh) |
GB (1) | GB2497469B (zh) |
TW (1) | TWI544413B (zh) |
WO (1) | WO2012040632A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI794967B (zh) * | 2021-09-10 | 2023-03-01 | 臺灣發展軟體科技股份有限公司 | 資料處理電路及故障修補方法 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8914430B2 (en) | 2010-09-24 | 2014-12-16 | Intel Corporation | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions |
US10209986B2 (en) | 2011-12-22 | 2019-02-19 | Intel Corporation | Floating point rounding processors, methods, systems, and instructions |
WO2013101010A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | Floating point scaling processors, methods, systems, and instructions |
US9513871B2 (en) | 2011-12-30 | 2016-12-06 | Intel Corporation | Floating point round-off amount determination processors, methods, systems, and instructions |
US8924454B2 (en) | 2012-01-25 | 2014-12-30 | Arm Finance Overseas Limited | Merged floating point operation using a modebit |
US10289412B2 (en) * | 2012-02-09 | 2019-05-14 | Qualcomm Incorporated | Floating point constant generation instruction |
US9542154B2 (en) * | 2013-06-25 | 2017-01-10 | Intel Corporation | Fused multiply add operations using bit masks |
US10402214B2 (en) * | 2014-01-31 | 2019-09-03 | Hewlett Packard Enterprise Development Lp | Device provided script to convert command |
US10489114B2 (en) * | 2014-06-27 | 2019-11-26 | International Business Machines Corporation | Shift amount correction for multiply-add |
US9778908B2 (en) | 2014-07-02 | 2017-10-03 | Via Alliance Semiconductor Co., Ltd. | Temporally split fused multiply-accumulate operation |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US10289386B2 (en) * | 2016-04-21 | 2019-05-14 | Oracle International Corporation | Iterative division with reduced latency |
US10078512B2 (en) * | 2016-10-03 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processing denormal numbers in FMA hardware |
CN106775587B (zh) * | 2016-11-30 | 2020-04-14 | 上海兆芯集成电路有限公司 | 计算机指令的执行方法以及使用此方法的装置 |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
US11366663B2 (en) | 2018-11-09 | 2022-06-21 | Intel Corporation | Systems and methods for performing 16-bit floating-point vector dot product instructions |
CN109840067B (zh) * | 2019-01-14 | 2021-04-20 | 中国人民解放军国防科技大学 | 一种基于数学近似的浮点程序精度缺陷修复方法 |
US11625244B2 (en) * | 2021-06-22 | 2023-04-11 | Intel Corporation | Native support for execution of get exponent, get mantissa, and scale instructions within a graphics processing unit via reuse of fused multiply-add execution unit hardware logic |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63189936A (ja) | 1987-02-03 | 1988-08-05 | Fujitsu Ltd | 浮動少数点乗算装置 |
US5673407A (en) * | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
US5598362A (en) * | 1994-12-22 | 1997-01-28 | Motorola Inc. | Apparatus and method for performing both 24 bit and 16 bit arithmetic |
GB2338094B (en) * | 1998-05-27 | 2003-05-28 | Advanced Risc Mach Ltd | Vector register addressing |
US6282634B1 (en) * | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US7346643B1 (en) | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6996596B1 (en) | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
US6738795B1 (en) | 2000-05-30 | 2004-05-18 | Hewlett-Packard Development Company, L.P. | Self-timed transmission system and method for processing multiple data sets |
CA2327924A1 (en) * | 2000-12-08 | 2002-06-08 | Ibm Canada Limited-Ibm Canada Limitee | Processor design for extended-precision arithmetic |
US20060047738A1 (en) * | 2004-08-31 | 2006-03-02 | International Business Machines Corporation | Decimal rounding mode which preserves data information for further rounding to less precision |
US7499962B2 (en) | 2004-12-21 | 2009-03-03 | Intel Corporation | Enhanced fused multiply-add operation |
US7401107B2 (en) | 2004-12-22 | 2008-07-15 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
US7461117B2 (en) | 2005-02-11 | 2008-12-02 | International Business Machines Corporation | Floating point unit with fused multiply add and method for calculating a result with a floating point unit |
US7720900B2 (en) | 2005-09-09 | 2010-05-18 | International Business Machines Corporation | Fused multiply add split for multiple precision arithmetic |
US9223751B2 (en) | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
JP4806453B2 (ja) | 2007-02-09 | 2011-11-02 | 富士通株式会社 | 演算処理装置、情報処理装置、および演算方法 |
CN101021832A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 支持局部寄存和条件执行的64位浮点整数融合运算群 |
US8838663B2 (en) * | 2007-03-30 | 2014-09-16 | Intel Corporation | Method and apparatus for performing multiplicative functions |
US7917568B2 (en) * | 2007-04-10 | 2011-03-29 | Via Technologies, Inc. | X87 fused multiply-add instruction |
CN101174200B (zh) * | 2007-05-18 | 2010-09-08 | 清华大学 | 一种具有五级流水线结构的浮点乘加融合单元 |
CN101221490B (zh) * | 2007-12-20 | 2010-11-10 | 清华大学 | 一种具有数据前送结构的浮点乘加单元 |
US8032854B2 (en) | 2008-08-29 | 2011-10-04 | International Business Machines Corporation | 3-stack floorplan for floating point unit |
CN101692202B (zh) * | 2009-09-27 | 2011-12-28 | 龙芯中科技术有限公司 | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 |
US8914430B2 (en) | 2010-09-24 | 2014-12-16 | Intel Corporation | Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions |
-
2010
- 2010-09-24 US US12/890,543 patent/US8914430B2/en active Active
-
2011
- 2011-09-23 WO PCT/US2011/053094 patent/WO2012040632A2/en active Application Filing
- 2011-09-23 KR KR1020137007355A patent/KR101533516B1/ko active IP Right Grant
- 2011-09-23 TW TW100134351A patent/TWI544413B/zh active
- 2011-09-23 GB GB1304865.7A patent/GB2497469B/en active Active
- 2011-09-23 JP JP2013530370A patent/JP5684393B2/ja active Active
- 2011-09-23 DE DE112011103206.4T patent/DE112011103206B4/de active Active
- 2011-09-23 CN CN201611001272.9A patent/CN106528044A/zh active Pending
-
2014
- 2014-12-03 US US14/559,160 patent/US9606770B2/en active Active
-
2017
- 2017-03-27 US US15/469,919 patent/US10318244B2/en active Active
-
2019
- 2019-06-10 US US16/436,901 patent/US10649733B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI794967B (zh) * | 2021-09-10 | 2023-03-01 | 臺灣發展軟體科技股份有限公司 | 資料處理電路及故障修補方法 |
US11978526B2 (en) | 2021-09-10 | 2024-05-07 | Skymizer Taiwan Inc. | Data processing circuit and fault mitigating method |
Also Published As
Publication number | Publication date |
---|---|
JP2013543176A (ja) | 2013-11-28 |
GB201304865D0 (en) | 2013-05-01 |
WO2012040632A2 (en) | 2012-03-29 |
JP5684393B2 (ja) | 2015-03-11 |
US10318244B2 (en) | 2019-06-11 |
US20170199726A1 (en) | 2017-07-13 |
GB2497469A (en) | 2013-06-12 |
US10649733B2 (en) | 2020-05-12 |
US20190361676A1 (en) | 2019-11-28 |
US9606770B2 (en) | 2017-03-28 |
DE112011103206T5 (de) | 2013-10-10 |
DE112011103206B4 (de) | 2021-02-18 |
US20120079251A1 (en) | 2012-03-29 |
CN106528044A (zh) | 2017-03-22 |
WO2012040632A3 (en) | 2012-05-18 |
TW201224922A (en) | 2012-06-16 |
CN103119532A (zh) | 2013-05-22 |
KR101533516B1 (ko) | 2015-07-02 |
GB2497469B (en) | 2019-06-05 |
US8914430B2 (en) | 2014-12-16 |
KR20130079511A (ko) | 2013-07-10 |
US20150088947A1 (en) | 2015-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI544413B (zh) | 可執行scale、round、getexp、round、getmant、reduce、range和class指令之乘加功能單元 | |
JP6248328B2 (ja) | ベクトル機能ユニット、方法、およびコンピューティングシステム | |
Zhang et al. | Efficient multiple-precision floating-point fused multiply-add with mixed-precision support | |
JP5636110B2 (ja) | ベクトル先頭ゼロ、ベクトル末尾ゼロ、ベクトルオペランド1sカウントおよびベクトルパリティ計算のための機能ユニット | |
US9703626B2 (en) | Recycling error bits in floating point units | |
GB2423386A (en) | Performing a reciprocal operation on an input value to produce a result value | |
GB2423385A (en) | Determining an initial estimate of a result value of a reciprocal operation | |
US10445066B2 (en) | Stochastic rounding floating-point multiply instruction using entropy from a register | |
EP3921942A1 (en) | Encoding special value in anchored-data element | |
US10963245B2 (en) | Anchored data element conversion | |
US11966740B2 (en) | Use of multiple different variants of floating point number formats in floating point operations on a per-operand basis | |
CN103119532B (zh) | 处理器、指令执行方法和计算系统 |