TWI405126B - 微處理器及其執行指令之方法 - Google Patents
微處理器及其執行指令之方法 Download PDFInfo
- Publication number
- TWI405126B TWI405126B TW099124666A TW99124666A TWI405126B TW I405126 B TWI405126 B TW I405126B TW 099124666 A TW099124666 A TW 099124666A TW 99124666 A TW99124666 A TW 99124666A TW I405126 B TWI405126 B TW I405126B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- microinstruction
- floating point
- field
- result
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 26
- 238000000926 separation method Methods 0.000 claims abstract description 5
- 230000000295 complement effect Effects 0.000 claims description 26
- 238000006243 chemical reaction Methods 0.000 description 19
- 239000004606 Fillers/Extenders Substances 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (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)
- Executing Machine-Instructions (AREA)
Description
本發明係有關於一種在微處理器中的浮點運算,特別是有關於浮點捨入(round)指令。
Intel將一組新的相關SSE指令加入至其指令組:ROUNDPD、ROUNDPS、ROUNDSD、以及ROUNDSS,在此統一稱為ROUND指令。ROUND指令捨入一浮點輸入數值以成為一整數數值,接著將此整數數值恢復至一浮點數值。在由浮點數值轉換至整數數值期間的捨入操作是根據捨入控制或捨入模式(rounding mode)而操作。
由浮點至整數的這些轉換以及由整數至浮點的轉換實際上已眾所周知。首要操作需要確定整數最小有效位元(least significant bit,LSB)的位置以及確定原始資料數值(藉由一向右移位器而具有關鍵延遲)內的二進制捨入點的位置,接著需要有條件的非分數數值(non-fractional value)增量。次要操作可能需要前導零列舉(leading zero enumeration),接著需要正規化左移位以及適當的指數計算。必須要決定將如何在目標浮點硬體設計上提供此兩操作。
習知的多週期或高延遲設計在連續電路連接(sequential circuit connection)上提供了必要的能力,首先,執行向右調正移位,接著是有條件的捨入增量,然後是前導零列舉,最後是有條件的正規化左移位。值得注意的是,假使此方式被提供作為有效利用的硬體而不是特殊目的的硬體時,此方式不利於任何其不需某部分本身具有固有延遲的連續連接的計算。假使此方式提供作為特殊目的的硬體,此方式會消耗掉有用的晶粒空間。在強調最大電路元件利用的高效能微處理器中這些方式是不被接受的。
其他的低延遲浮點設計試圖使組成電路元件分隔成複數計算種類(例如,近程對遠程計算(near versus far calculation))所需要的最小群組。每一種類的特定特性藉由消除非必要電路元件而使得每一計算的整體延遲減少。例如,近程減法計算可能具有非重要的向右調正需求。這些設計類型可能以暫時地連續方式來提供新ROUND所必要的能力,那就是,藉由排程使用一群組而變為整數的轉換以及排程使用一不同群組而變為浮點的次一轉換。
在一觀點中,本發明提供一種微處理器,用以執行一指令,此指令指定具有一預設尺寸之一浮點輸入運算元,此指令指示微處理器使用一捨入模式來將浮點輸入運算元捨入至一整數數值且將整數數值回復為具有與浮點輸入運算元相同之預設尺寸的一浮點結果。此微處理器包括一指令轉譯器,用以將指令轉譯為一第一微指令與一第二微指令。微處理器也包括一執行單元,用以執行第一微指令與第二微指令。第一微指令接收浮點輸入運算元以作為輸入運算元,且自浮點輸入運算元來產生一中間結果。第二微指令接收第一微指令之中間結果來作為輸入運算元,且自中間結果來產生指令的浮點結果。中間結果具有與浮點輸入運算元相同之預設尺寸。
根據另一觀點,本發明提供一種執行指令之方法,由一微處理器所執行,此指令指定具有一預設尺寸之一浮點輸入運算元,此指令指示微處理器使用一捨入模式來將浮點輸入運算元捨入至整數數值且將整數數值回復為具有與浮點輸入運算元相同之預設尺寸的一浮點結果。此方法包括將指令轉譯為一第一微指令與一第二微指令,其中,轉譯步驟由微處理器之一指令轉譯器所執行。此方法也包括執行第一微指令與第二微指令,其中,執行步驟由微處理器之一執行單元所執行。第一微指令接收浮點輸入運算元以作為輸入運算元,且自浮點輸入運算元來產生一中間結果。第二微指令接收第一微指令之中間結果來作為輸入運算元,且自中間結果來產生指令的浮點結果。中間結果具有與浮點輸入運算元相同之預設尺寸。
為使本發明之上述目的、特徵和優點能更明顯易懂,下文特舉一較佳實施例,並配合所附圖式,作詳細說明如下。
此處敘述之低延遲浮點硬體設計的實施例不需要加入貧於利用且特殊功能電路部件。組成電路元件被分離成複數計算種類所需的最小群組,藉此最小化每一計算的整體電路延遲。為了提供ROUND指令所必要的操作而不需要增加特殊目的硬體,這些操作被排程且連續地被分配至一適當的電路群組。
其次必要的是,決定此兩必要操作(在此實施例中係關於微指令,稱為XROUND1與XROUND2)是否將被排程且以鎖定方式而緊接於另一者而立刻被分配,或者決定此兩必要操作是否被視為獨立的微指令,其必須是連續的但在時間或時脈週期上可能具有不定(indeterminate)的間隔。
第1圖之微處理器100提供一種無序(out-of-order)微指令分配結構,其企圖藉由極致利用有效的計算電路來最小化每指令週期數的平均以及所引起的軟體延遲。本發明已判斷出特定情況分配需求(例如對於一特定軟體指令,在分配上將兩微指令鎖定在一起)在分配電路上會需要非期望的複雜度並導致提供非期望的電路延遲。因此,ROUND指令所需的微指令必須容忍不定的短暫分離。
隨著無序指令分配,特別期望必要操作(XROUND1及XROUND2)不需要額外結構狀態的保護。在儲存至暫存器的計算結果位元形式下的某些結構狀態或者在MXCSR中先前提供的條件碼位元已經存在了。這些的伴隨服務者是相依性偵測與排程邏輯或電路(例如第1圖之暫存器命名表(register alias table,RAT)116以及保留站118,以及必要實體導線連接以完成資料記錄與遞送。此外,暫存器檔案(即第1圖之暫存器檔案與重排緩衝器(reorder buffer,ROB)126)係提供來儲存關於不定時間間隔的資料。由XROUND1微指令至XROUND2微指令之聯繫而所需要的任何額外結構狀態,會使得有意義的相依性偵測、排程、與遞送邏輯及電路的增加成為必要的,然而,不期望在只有一個軟體指令類型的特定情況基礎上提供這些能力。
因此,此處所敘述的實施例是採取新的方式來實現ROUND指令所須的操作或微指令,其不需要額外的架構狀態來將資料由第一操作轉移或傳遞至第二操作。這有利於低延遲且高時脈頻率浮點執行硬體之設計。
參閱第1圖,其表示微處理器100之方塊圖。微處理器100包括指令快取記憶體102,其快取微處理器100之指令集結構的程式指令。,在一實施例中,指令集包括已知的資料流SIMD延伸(Streaming SIMD Extensions,SSE)指令集的指令,其包括上述的ROUND指令134。指令快取記憶體102提供指令給指令轉譯器112,其將程式指令(已知為巨集指令)轉譯為組成指令(constituent instruction)(已知為微指令或微操作),以由微處理器100的複數執行單元122來執行。根據一實施例,指令轉譯器112將ROUND微指令轉譯成兩個微指令132,命名為XROUND1微指令及XROUND2微指令,如同依據第4圖之方塊402及404所述。
指令轉譯器112提供轉譯後的微指令至暫存器命名表(register alias table,RAT)116,其產生指令相依性並維持其列表,如同依據第4圖之方塊406所述。微處理器100也包括與執行單元112連接之複數保留站118,用以守住等待被分配至執行單元122的微指令,例如XROUND1微指令以及XROUND2微指令,如同依據第4圖之方塊408及414所述。RAT 116按程序順序來接收微指令,且可脫離受到相依性限制的程序順序來將其分配至保留站118。引退單元(retire unit)124按程序順序來引退指令。程序順序係由暫存器檔案與重排緩衝器(reorder buffer,ROB)126來維持。暫存器檔案與ROB 126耦接RAT 116、保留站118、執行單元122、以及引退單元124。暫存器檔案126包括結構暫存器檔案與非結構暫存器檔案,以儲存中間微指令結果。
執行單元122包括浮點加法器單元104。浮點加法器單元104包括執行XROUND1微指令的近程路徑以及執行XROUND2微指令的遠程路徑,如同依據第4圖之方塊412及416所述。執行單元122也包括用來傳遞指令結果至另一者的遞送路徑。
接著,特定數學結果種類被考慮來證明實施例的特徵與功能。SSE單精確度(single precision,SP)與雙精確度(double precision,DP)浮點數格式定義了有限的指數數值組。在此兩格式中,具有單一符號位元。在SP格式中,指數為8位元(範圍由-126至+127),且有效位數為23位元,而在DP格式中,指數為11位元(範圍由-1022至+1023),且有效位數為52位元。當浮點輸入數值處於正規化格式時,此兩格式也指明一隱含有效位數位元。換句話說,在正規化格式中,SP格式將一隱含的第24(24th
)位元指定給二進制點的左側,其具有數值’1,且DP格式將一隱含的第53位元(53rd
)位元指定給二進制點的左側,其具有數值’1。此輸入數格式引起了兩個考量。
第一個考量是輸入指數欄位能指定一數值,使得輸入有效位數的所有位元為整數位元,即沒有分數位元存在於有效位數中。換句話說,例如,在SP情況下,假使指數數值為23或更大(即根據一實施例而其考量到一參考指數數值,指數數值表示2^23或更大),接著,成為一整數數值的轉換將不會產生分數位元給捨入點的右側。我們有助益地將此情況稱為ROUND指令的”ROUND溢位”情況。在ROUND溢位情況中,對於指令而言,輸入與輸出數值之間不存在差異。在此情況下,輸入數值已由具有浮點格式的整數來表示,且不需要捨入來產生正確的結果數值。
第二個考量是隱含有效位數位元在暫時分離第一(轉換至整數)與第二操作(轉換至浮點)的設計下,可能引發額外結構狀態的需要,此於後文解釋說明。
在ROUND溢位情況下,由於最後結果已知,因此刪除至變為浮點微指令的隨後轉換是有可能的,但是在指令完成和可能的資料傳遞至其他指令的期間,這會引起複雜度。假使在分配之後XROUND2微指令有條件地刪除,有條件地自XROUND1或XROUND2微指令傳遞資料將會是必須的,且根據相依性指令是否已經被排程或分配而可能具有或不具有效能優點。這保證的複雜度變為顯著。雖然此處所述的實施例係在XROUND1微指令期間偵測ROUND溢位情況,但這些實施例可發佈與執行XROUND2微指令。由於這減少了在資料傳遞與指令完成上的複雜度,上述操作是有益的。
如下所述,當浮點加法器單元104偵測到ROUND溢位情況時,其將資訊由XROUND1微指令傳遞至XROUND2微指令。SP與DP輸入數可以是非常大的數值。當轉換至整數時,其二進制表示的尺寸可以輕易地超過其輸入尺寸(SP為32位元,而DP為64位元)。這引起了對於額外且特例的極端尺寸儲存暫存器以及額外結果匯流排導線的特別不期望的需求。因為這個理由,在ROUND溢位情況下,不期望將輸入浮點數值轉換為傳統二進制整數表示法。
浮點加法器單元104偵測對於XROUND微指令之輸入指數的大小(進入至ROUND指令的輸入被提供作為輸入至XROUND1微指令的輸入),如同依據第5圖之判斷方塊504所述,且浮點加法器單元104選擇性地在ROUND溢位情況下不執行變為整數的轉換。這只能微處理器100將傳遞輸入符號、指數、以及有效位數(所以都未改變)給XROUND2微指令,如同依據第5圖之方塊506所述。
此外,此範例證明了由XROUND1微指令至XROUND2微指令的資料傳遞的格式,如同第2圖所示。即是,由XROUND1微指令傳遞至XROUND2微指令的資料的格式包括三個欄位標示為第2圖之X 202、Y 204、及Z 206。X欄位202為單一位元,其具有ROUND指令輸入之符號位元的數值。Y欄位204為SP格式的8位元欄位以及DP格式的11位元欄位,其持有ROUND指令輸入指數的有條件增量版本,詳細如下文所述。Z欄位206為SP格式的23位元欄位以及DP格式的52位元欄位,其持有未改變ROUND指令輸入有效位數位元或轉換的整數位元所得知的位元,如依據第5圖之方塊514及516所述。規定符號、指數、以及其他可能有條件地包括轉換後的整數數值的資料格式對於新的ROUND指令實施而言是新穎的且獨特的。對於效能與降低的複雜度而言,其提供了某些優點。值得注意的是,為了有益地使用現行資料傳遞匯流排與暫存器而不需建立特定目的邏輯與伴隨的複雜度,這些位元的總數量將不會超過輸入資料格式尺寸(不論是SP或DP格式)。
假使輸入資料數為不是ROUND溢位數值,則必須變為整數操作的轉換,如依據第5圖之方塊508所述。在此情況下,用來表示結果整數所需要的位元數量一般將不會超過表示輸入有效位數(不包括隱含位元)所需的位元數量。因此,微處理器100不需避免去使用前述由XROUND1微指令至XROUND2微指令的資料格式。
然而,此論點特別的重要:在一輸入數值的情況下,在被XROUND1微指令轉換為整數的期間,輸入有效位數可以上捨入(round up),因此比起不包括隱含位元的有效位數位元,其需要多一個表示位元。換句話說,輸入資料數值可被上捨入以變成ROUND溢位情況。我們將此情況稱為上捨入至ROUND溢位(Round Up To ROUND Overflow,RUTRO)情況。在RUTRO情況下,指出一額外位元是XROUND1微指令所產生之整數的必要部分變為必要的,且當其由整數轉換為浮點表示時,必須被XROUND2微指令所考量。沒有不明確的結構狀態或先前技術存在,以保護此額外位元數值,尤其是在先前所述由XROUND1微指令傳遞至XROUND2微指令的形式下,這承接了前述的優點。因此,本案發明人發明一新穎的技術,連同前述的資料格式,用來將RUTRO情況(依據第圖之方塊512所偵測到)由XROUND1微指令傳遞至XROUND2微指令。
關於正(positive)的XROUND1數值輸入(例如符號位元為0),浮點加法器單元104偵測到適當的邊界指數數值輸入(SP格式時為22,DP格式時為51),且當其偵測到RUTRO情況時有條件地增加該數值。此有條件地增加之指數數值藉由使用前述資料格式而由XROUND1微指令傳送至XROUND2微指令,如同依據第5圖之方塊514所述。再有條件增加的指數數值之外,微處理器100將某轉換的整數位元由XROUND1微指令傳送至XROUND2微指令,如同依據第5圖之方塊514所述。值得注意的是,這些傳送之整數位元的位元數值稍後將在XROUND2微指令執行期間促進的期望結果產生,並轉換為浮點。這些傳送的整數位元的數值將會是在RUTRO情況下最終ROUND指令有效位數位元所需要的數值。在一實施例中,在符號轉換至整數操作之期間,不需使用特定的規定來最佳化地產生此數值。在使用最有利之此方式來處理具有正符號之輸入數值的情況下,藉由依據XROUND1輸入符號位元來適當地偵測整數有效值之額外位元的極性,可簡易地偵測RUTRO情況。
第3A圖係表示第1圖中執行XROUND1微指令的浮點加法器單元104之部分電路。在一實施例中,浮點加法器單元104包括使用在高速浮點加法的近程與遠程。第3A圖所表示之部分係有關於遠程,且用來執行XROUND1微指令。第6圖表示之部分是有關於近程,且用來執行XROUND2微指令,如以下所討論。反向器(NOT)386、多工器388、移位器/延伸器384、增量器302、以及捨入邏輯單元304一起操作由XROUND1浮點輸入來產生捨入2補數整數數值。在正輸入數值的情況下,移位器/延伸器384接收包括隱含整數位元的輸入有效位數,且接著零延伸(zero-extend)。在負(negative)輸入數值的情況下,移位器/延伸器384接收包括補數的隱含整數位元的輸入有效位數,且接著符號位元延伸(sign-extend)。移位器/延伸器384根據輸入指數來移位輸入,以導致輸出的最小有效整數位元被提供至增量器302之最小有效位元輸入。因此,假使輸入為正時,移位器/延伸器384輸出向右調正零延伸數值;假使輸入為負時,移位器/延伸器384輸出向右調正符號位元延伸1補數數值(在依實施例中,增量器302為具有進位輸入之64位元2輸入運算元加法器(64-bit 2-input operand adder);只有較低的24位元被使用在SP情況下,且只有較低的53位元被使用在DP情況下;在XROUND1微指令的情況下,第二輸入運算元為零)。移位器/延伸器384也提供分數位元給捨入邏輯單元304。
第3B圖的範例係說明一SP輸入的RUTRO情況,儘管應該瞭解浮點加法器單元104能處裡DP輸入的RUTRO情況。在第3B圖之範例中,浮點加法器單元104接收23位元輸入,其有效位數位元被指定為S22至S0。在第3B圖的範例中,指數數值為2^22(即指數數值表示2^22,根據一實施例,其考量一參考指數數值),因此,移位器/延伸器384將輸入移位,使得S1位元被提供至24位元增量器302之最小有效位元輸入(輸入位元0),而S22位元被提供至增量器302之輸入位元21。換句話說,在此範例中,移位輸入數值之二進制點在S1與S0位元之間。增量器302之輸入位元22接收隱含整數位元(數值’1),且其輸入位元23接收數值0。S0位元被提供至捨入邏輯單元304,其根據捨入控制306之數值來產生捨入位元數值、S0位元、以及符號位元。在一實施例中,捨入邏輯單元304執行注入捨入(injection rounding),且有條件地執行與一負數之2補數產生相關聯的增量,即捨入邏輯單元304考量被提供至增量器302之1補數數值是否需要被增量以代替任何捨入考量。捨入邏輯單元304之捨入位元輸出被提供至增量器302以作為進位位元。整數有效值之額外位元是增量器302之輸出位元23,在一範例中其將為’1。特別是,在SP情況下,假使符號為正,指數數值為22,排除隱含整數位元之有效位數數值為0x7FFFFF,且捨入控制數值導致上捨入,接著出現RUTRO情況,在此情況下,比較器316之輸出將為真,且增量器302之輸出將為0X800000(即位元23為’1)。
如上所述且由第3B圖所示,根據偵測RUTRO情況,為了執行XROUND1微指令,浮點加法器單元104將增量指數數值(在SP情況下由22增至23)。此外,由於在增量之指數數值之前該輸入不是ROUND溢位情況,浮點加法器單元104將把轉換整數位元(即增量器302之所有位元但除了最大有效整數位元以外,其在SP情況下為輸出位元0至22)放置在XROUND1結果數值之Z欄位206。在RUTRO情況下,所有的轉換整數位元將為零。如同ROUND溢位情況,XROUND2微指令將有利地偵測在RUTRO情況下的XROUND1結果數值(例如,在SP情況下,Y欄位204數值為23),且XROUND2微指令將簡單地傳送其輸入數值以作為將成為ROUND指令之結果的輸出數值,而輸出數值為正確的結果。換句話說,在ROUND指令之結果下有效值的額外位元將由浮點格式所固有的’1數值隱含整數位元所提供。
有利於時序緣故,如第3A及3B圖所示,RUTRO邊界指數輸入數值(RUTRO boundary exponent input value)的偵測可由立即由比較器316來執行,換句話說,與移位器/延伸器384以及增量器302之操作並行。此外,更有利於時序緣故,雖然互斥或閘(XOR)308與及閘(AND)322隨著比較器316和增量器302而相繼執行,但於他們每一者只有2位元操作,因此是操作快速的。如第3B圖所示,XOR 308接收符號位元(SB)以及接收由增量器302對輸入所執行之捨入至整數操作結果之整數有效值的額外位元。因此,假使符號位元為0(正輸入數值)且結果之整數有效值的額外位元為1且假使輸入指數數值為輸入浮點格式的邊界指數數值,則偵測到RUTRO情況。
正輸入數值可上捨入至ROUND溢位(RUTRO),而負數值可下捨入至ROUND溢位(Round Down To Round Overflow,RDTRO),即朝向負無限。RDTRO情況需要不同於先前所述正數值RUTRO技術的技術。整數有效值之額外位元(有關於符號位元)的極性不足以指示RDTRO。換句話說,由於符號位元與整數有效值之額外位元都為’1,因此第3A圖之XOR 308將不會產生數值’1。這是因為第一個負值(即最大負值表示捨入整數)或邊界ROUND溢位數值(即在SP情況下,具有符號位元=’1、指數=22、有效位數=0x7FFFFF欄位之輸入數值,其產生具有符號位元=’1、Y欄位204數值=22、增量輸出=0x800000之輸出數值)不會引起最大有效轉換整數位元的極性改變(即在最大有效四位元字中的最大有效位元為’1且因此為符號位元),且無法使用前述XOR 308偵測架構來偵測。因此,對於RDTRO的情況,浮點加法器單元104不會增量被偵測到的邊界數值。為了應付此情況或具有負輸入數值的其他情況,XROUND2微指令(其轉換至浮點)將作為最大有效位元之輸入符號位元數值(即X欄位202之數值)連結至輸入轉換整數位元,如第6圖所示。這提供了來自符號(正或負)2補數整數的正確轉換給表示位元數值的全部範圍。連同前述正RUTRO之技術,捨入至ROUND溢位之正及負數值也正確地計算出。
使用SP情況作為一範例,輸入至XROUND1微指令且將引起RDTRO情況的輸入數值為負符號位元(即數值’1)、22的指數數值、以及連同一捨入控制數值之23位元有位數0x7FFFFF,其中,捨入控制數值導致對24位元增量器302之進位,以藉由2補數正朝負無限捨入的效力而變為數值’0。因此,隨著適當的捨入控制數值,增量器302之輸出為0x800000,其具有數值’1的整數有效值之額外位元。此0x800000的真24位元轉換整數數值無法表示在結果的23位元Z欄位206內。因此,23位元0x00000數值被放置在XROUND1微指令結果的23位元Z欄位206內,且必要的整數有效值之額外位元以X欄位202之數值’1而被傳送至XROUND2微指令。注意到,0x800000數值指示最大的負2補數整數,其以24位元來表示。因此,當XROUND2微指令將0x800000整數轉換為浮點數值時,產生了正確結果。
為了RUTRO與RDTRO情況,這些特定X欄位202、Y欄位204、Z欄位206數值到達XROUND2微指令的傳送,是使用此述資料格式以將資訊由XROUND1微指令傳遞至XROUND2微指令的附加優點。透過被提供作為XROUND1與XROUND2微指令之兩必要操作的任何暫時分離,此資料格式保持了額外整數位元數值的必要有效值。應可瞭解,在被傳送的Y欄位204數值小於必要值以指示ROUND溢位情況的正數值情況(例如符號位元為’0)下,根據第6圖所示之部分浮點加法器單元104,而由XROUND2微指令所執行浮點運算的轉換將說明被傳送的X欄位202位元數值如同不具備有效值(由於其為’0)。
如第7圖的流程圖所示,關於XROUND2微指令,首先,檢查由XROUND1微指令的Y欄位204數值,在一實施例中,係藉由再次使用用來執行關於XROUND1微指令的檢查的相同電路。假使Y欄位204之數值不表示ROUND溢位情況,浮點加法器單元104使用在Z欄位206內且由XROUND1微指令先前提供之轉換整數位元,並藉由將X欄位202數值連接輸入轉換整數位元之最大有效位元,來選擇性地執行成為浮點運算的轉換。假使檢查過的Y欄位204沒有表示ROUND溢位情況,如前所述,浮點加法器單元104選擇性地不執行成為浮點運算的的轉換。在此情況下,X、Y、Z欄位數值被傳送且沒有改變,以作為XROUND2微指令的結果並作為ROUND指令整體的正確結果。根據於此,可清楚瞭解伴隨較小的複雜度而有益地提供正確結果。
第8圖係以圖示方式來表示執行SSE 4.1 ROUND指令的整體程序,詳細如下文所述。
雖然已說明為了接收XROUND1微指令的中間結果而使得在XROUND1微指令之後XROUND2微指令開始執行的實施例,然而可考量微指令預料ROUND溢位情況將存在並使用ROUND指令輸入運算元數值(其是與在ROUND溢位情況下XROUND1微指令中間結果相等的數值)來推測定地執行XROUND2微指令的實施例;假使推測是不正確地,XROUND2微指令藉由使用XROUND1微指令中間結果來重新執行。這致能了XROUND2微指令在XROUND1微指令之前或與同時於XROUND2微指令而實際開始其本身的執行。
此外,雖然已敘述了在X與Z欄位數值的中間結果一起表示2補數整數數值的實施例,但也可考量其表示無符號整數數值或符號大小(sign-magnitude)整數數值或1補數整數數值的實施例。舉例來說,無符號或符號大小整數數值表示法可藉由偵測與增量指數(關於在2補數實施例中的RUTRO情況)來提供RDTRO情況所需的獨特的溢位邊界數值(例如單精確度,28位元=0x800000)。此外,關於1補數表示法,XROUND1微指令可能在對1補數的轉換之前來捨入輸入數值、偵測引起導致指數增量的捨入溢位邊界數值、以及只有假使沒有引起指數增量時對1補數的轉換;以及,XROUND2微指令可能偵測溢位指數狀態並引起輸入被傳送至輸出,以及偵測較少的溢位指數狀態並引發自1補數表示法的轉換,接著執行正規化與最後指數計算。在2補數的實施例中,當正傳送期望的最終捨入整數數值(對於RUTRO情況,於其中整數的最大有效位元被隱含,但在RDTRO情況下不會被提供)時,關於1補數表示法的這些規定會適當地區別出具有適當X位元數值以及是當Y欄位數值的正與負捨入溢位。這些規定提供了在單一精確度情況下的數值以及其適當且獨特的1補數表示法,例如:
1) positive(RUTRO boundary-1):X=0,Y=2e22,Z=0x7FFFFF(23 bits)
(由於最大有效位元被提供為X,因此1補數整數表示為0x7FFFFF,如同在2補數之實施例中)
2) negative(RUTRO boundary-1): X=1,Y=2e22,Z=0x000000(23 bits)
(由於最大有效位元被提供為X,因此1補數整數表示為0x800000,如同在2補數之實施例中)
3) positive zero: X=0,Y=0,Z=0x000000(23 bits)
(由於最大有效位元被提供為X,因此1補數整數表示為0x000000,如同在2補數之實施例中)
4) negative zero: X=1,Y=0,Z=0x7FFFFF(23 bits)
(由於最大有效位元被提供為X,因此1補數整數表示為0xFFFFFF,如同在2補數之實施例中)
此外,雖然係敘述ROUND指令結果的尺寸等於其輸入運算元的尺寸之實施例,但是也可考量結果尺寸不同於輸入尺寸的實施例。舉例來說,XROUND微指令可被調整來移位輸入運算元以將其調正至一相異的捨入點,且XROUND2微指令可被調整來將結果整規化與格式化至新的期望尺寸,可能包括相異指數結果的計算。
本發明的不同實施例已於本文敘述,但本領域具有通常知識者應能瞭解這些實施例僅作為範例,而非限定於此。本領域具有通常知識者可在不脫離本發明之精神的情況下,對形式與細節上做不同的變化。例如,軟體可致能本發明實施例所述的裝置與方法之功能、組建(fabrication)、模組化(modeling)、模擬、描述(description)、以及/或測試。可透過一般程式語言(C、C++)、硬體描述語言(Hardware Description Languages,HDL)(包括Verilog HDL、VHDL等等)、或其他可利用的程式語言來完成。此軟體可配置在任何已知的電腦可使用媒介,例如半導體、磁碟、或光碟(例如CD-ROM、DVD-ROM等等)。本發明所述之裝置與方法實施例可被包括於半導體智慧財產核心,例如微處理器核心(以HDL來實現),並轉換成積體電路產品的硬體。此外,本發明所述之裝置與方法可實現為硬體與軟體的結合。因此,本發明不應侷限於所揭露之實施例,而是依後附之申請專利範圍與等同實施所界定。特別是,本發明可實施在使用於一般用途電腦中的微處理器裝置內。最後,本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...微處理器
102...指令快取記憶體
104...浮點加法器單元
112...指令轉譯器
116...暫存器命名表(RAT)
118...保留站
122...執行單元
124...引退單元
126...暫存器檔案與重排緩衝器
132...微指令
134...ROUND指令
202...X欄位
204...Y欄位
206...Z欄位
302...增量器
304...捨入邏輯單元
306...捨入控制
308...互斥或閘(XOR)
312...RUTRO=’1
316...比較器
322...及閘(AND)
324...比較器
384...移位器/延伸器
386...反向器(NOT)
388、394、396、398...多工器(MUX)
392...增量器
402、404、406、408、412、414、416...步驟方塊
502、504、506、508、512、514、516...步驟方塊
624...比較器
626...捨入溢位
644...參考指數(SP=’24’;DP=’53’)
646...前導零之數量的編碼計數
648...減法器
652...正規化移位器
654...增量器
656...多工器
686...反向器
694、696...多工器
702、704、706、708...步驟方塊
第1圖表示微處理器之方塊圖;
第2圖之方塊圖表示被傳送至XROUND2微指令之XROUND1微指令之中間結果的資料格式;
第3A圖之方塊圖表示第1圖之微處理器中用以執行XROUND1微指令之浮點加法器單元的部分電路;
第3B圖之方塊圖表示在ROUND溢位情況下第3A圖之浮點加法器單元之部分電路;
第4圖表示第1圖中微處理器之操作流程圖;
第5圖表示第3A圖之浮點加法器單元用以執行XROUND1微指令之操作流程圖;
第6圖之方塊圖表示第1圖之微處理器中用以執行XROUND2微指令之浮點加法器單元的部分電路;
第7圖表示第6圖之浮點加法器單元用以執行XROUND2微指令之操作流程圖;以及
第8圖之流程圖表示透過XROUND1微指令與XROUND2微指令之代理以及具有第2圖之資料格式的中間結果而由第1圖之微處理器100處理的ROUND指令的執行。
100...微處理器
102...指令快取記憶體
104...浮點加法器單元
112...指令轉譯器
116...暫存器命名表(RAT)
118...保留站
122...執行單元
124...引退單元
126...暫存器檔案與重排緩衝器
132...微指令
134...ROUND指令
Claims (20)
- 一種微處理器,用以執行一指令,該指令指定具有一預設尺寸之一浮點輸入運算元,該指令指示該微處理器使用一捨入模式來將該浮點輸入運算元捨入至一整數數值且將該整數數值回復為具有與該浮點輸入運算元相同之該預設尺寸的一浮點結果,該微處理器包括:一指令轉譯器,將該指令轉譯為一第一微指令與一第二微指令;以及一執行單元,執行該第一微指令與該第二微指令;其中,該第一微指令接收該浮點輸入運算元以作為輸入運算元,且自該浮點輸入運算元來產生一中間結果;其中,該第二微指令接收該第一微指令之該中間結果來作為輸入運算元,且自該中間結果來產生該指令的該浮點結果;以及其中,該中間結果具有與該浮點輸入運算元相同之該預設尺寸。
- 如申請專利範圍第1項所述之微處理器,其中,該微處理器用來執行該第一微指令與該第二微指令,使得該第一微指令與該第二微指令執行的開始在時間上具有不定的分離。
- 如申請專利範圍第2項所述之微處理器,其中,該第二微指令在該第一微指令後開始執行,不論該第一微指令之該中間結果,該第二微指令總被執行。
- 如申請專利範圍第1項所述之微處理器,其中,該浮點輸入運算元具有一單一符號位元、一M-位元指數、以及N-位元有效位數,該中間結果包括一第一單一位元欄位、一第二M-位元欄位、以及一第三N-位元欄位,且該執行單元用來執行該第一微指令以產生該中間結果,使得:(1)當該指數表示2^N或更大時,該中間結果為未改變之該浮點輸入運算元;以及(2)當該指數表示2^(N-1),該有效位數都是二進制的1,且該捨入模式引發上捨入時,該第一欄位為該浮點輸入運算元之該符號位元,該第二欄位等於N,且該第三欄位都是二進制的0。
- 如申請專利範圍第4項所述之微處理器,其中,該執行單元執行該第二微指令以產生該浮點結果,使得:當該第二欄位表示2^N或更大時,該浮點結果為未改變之該中間結果。
- 如申請專利範圍第5項所述之微處理器,其中,該浮點結果具有一單一符號位元、一M-位元指數、以及一N-位元有效位數,該執行單元更執行該第二微指令以產生該浮點結果,使得:當該第二欄位表示小於2^N時,該執行單元考慮將該第一欄位之位元作為最大有效位元來添加至該第三欄位以成為一整數數值,且該執行單元將該整數數值轉換為該浮點結果。
- 如申請專利範圍第6項所述之微處理器,其中,當該第二欄位表示小於2^N時,該浮點結果之該符號位元為該第一欄位之位元。
- 如申請專利範圍第6項所述之微處理器,其中,該執行單元執行該第一微指令以產生該中間結果,使得:當該情況(1)與(2)都非為真時:該第一欄位之位元為該浮點輸入運算元之該符號位元;以及該第三欄位為轉換自該浮點輸入運算元之N-位元捨入2補數整數數值。
- 如申請專利範圍第8項所述之微處理器,該執行單元執行該第一微指令以產生該中間結果,使得:當該情況(1)與(2)都非為真時:該第二欄位為未改變之該浮點輸入運算元之該指數。
- 如申請專利範圍第1項所述之微處理器,其中,該浮點輸入運算元具有一單一符號位元、一M-位元指數、以及N-位元有效位數,該中間結果包括一第一單一位元欄位、一第二M-位元欄位、以及一第三N-位元欄位;其中,該執行單元用來執行該第一微指令以產生該中間結果,使得當該指數表示2^(N-1),該有效位數都是二進制的1,該符號位元為負,且該捨入模式指示在負無限方向的捨入時:該第一欄位為該浮點輸入運算元之該符號位元;該第二欄位為該浮點輸入運算元之未改變的該指數;以及該第三欄位為轉換自該浮點輸入運算元之N-位元捨入2補數整數數值;其中,該浮點結果具有一單一符號位元、一M-位元指數、以及一N-位元有效位數;以及其中,該執行單元更執行該第二微指令以產生該浮點結果,使得當該第二欄位表示2^(N-1)時,該執行單元考慮將該第一欄位之位元作為最大有效位元來添加至該第三欄位以成為一整數數值,且該執行單元將該整數數值轉換為該浮點結果。
- 一種執行指令之方法,由一微處理器所執行,該指令指定具有一預設尺寸之一浮點輸入運算元,該指令指示該微處理器使用一捨入模式來將該浮點輸入運算元捨入至一整數數值且將該整數數值回復為具有與該浮點輸入運算元相同之該預設尺寸的一浮點結果,該執行指令之方法包括:將該指令轉譯為一第一微指令與一第二微指令,其中,該轉譯步驟由該微處理器之一指令轉譯器所執行;以及執行該第一微指令與該第二微指令,其中,該執行步驟由該微處理器之一執行單元所執行;其中,該第一微指令接收該浮點輸入運算元以作為輸入運算元,且自該浮點輸入運算元來產生一中間結果;其中,該第二微指令接收該第一微指令之該中間結果來作為輸入運算元,且自該中間結果來產生該指令的該浮點結果;以及其中,該中間結果具有與該浮點輸入運算元相同之該預設尺寸。
- 如申請專利範圍第11項所述之執行指令之方法,其中,執行該第一微指令與該第二微指令之該步驟包括執行該第一微指令與該第二微指令,使得該第一微指令與該第二微指令執行的開始在時間上具有不定的分離。
- 如申請專利範圍第12項所述之執行指令之方法,其中,該第二微指令在該第一微指令後開始執行,不論該第一微指令之該中間結果,該第二微指令總被執行。
- 如申請專利範圍第11項所述之執行指令之方法,其中,該浮點輸入運算元具有一單一符號位元、一M-位元指數、以及N-位元有效位數,該中間結果包括一第一單一位元欄位、一第二M-位元欄位、以及一第三N-位元欄位,且執行該第一微處理器之該步驟包括執行該第一微指令以產生該中間結果,使得:(1)當該指數表示2^N或更大時,該中間結果為未改變之該浮點輸入運算元;以及(2)當該指數表示2^(N-1),該有效位數都是二進制的1,且該捨入模式引發上捨入時,該第一欄位為該浮點輸入運算元之該符號位元,該第二欄位等於N,且該第三欄位都是二進制的0。
- 如申請專利範圍第14項所述之執行指令之方法,其中,執行該第二微指令之該步驟包括執行該第二微指令以產生該浮點結果,使得:當該第二欄位表示2^N或更大時,該浮點結果為未改變之該中間結果。
- 如申請專利範圍第15項所述之執行指令之方法,其中,該浮點結果具有一單一符號位元、一M-位元指數、以及一N-位元有效位數,且執行該第二微指令之該步驟包括執行該第二微指令以產生該浮點結果,使得:當該第二欄位表示小於2^N時,該執行單元考慮將該第一欄位之位元作為最大有效位元來添加至該第三欄位以成為一整數數值,且該執行單元將該整數數值轉換為該浮點結果。
- 如申請專利範圍第16項所述之執行指令之方法,其中,當該第二欄位表示小於2^N時,該浮點結果之該符號位元為該第一欄位之位元。
- 如申請專利範圍第17項所述之執行指令之方法,其中,執行該第一微指令之該步驟包括執行該第一微指令以產生該中間結果,使得:當該情況(1)與(2)都非為真時:該第一欄位之位元為該浮點輸入運算元之該符號位元;以及該第三欄位為轉換自該浮點輸入運算元之N-位元捨入2補數整數數值。
- 如申請專利範圍第18項所述之執行指令之方法,執行該第一微指令之該步驟更包括執行該第一微指令以產生該中間結果,使得:當該情況(1)與(2)都非為真時:該第二欄位為未改變之該浮點輸入運算元之該指數。
- 如申請專利範圍第11項所述之執行指令之方法,其中,該浮點輸入運算元具有一單一符號位元、一M-位元指數、以及N-位元有效位數,該中間結果包括一第一單一位元欄位、一第二M-位元欄位、以及一第三N-位元欄位;其中,執行該第一微指令之該步驟包括執行該第一微指令以產生該中間結果,使得當該指數表示2^(N-1),該有效位數都是二進制的1,該符號位元為負,且該捨入模式指示在負無限方向的捨入時:該第一欄位為該浮點輸入運算元之該符號位元;該第二欄位為該浮點輸入運算元之未改變的該指數;以及該第三欄位為轉換自該浮點輸入運算元之N-位元捨入2補數整數數值;其中,該浮點結果具有一單一符號位元、一M-位元指數、以及一N-位元有效位數;以及其中,執行該第二微指令之該步驟包括執行該第二微指令以產生該浮點結果,使得當該第二欄位表示2^(N-1)時,該執行單元考慮將該第一欄位之位元作為最大有效位元來添加至該第三欄位以成為一整數數值,且該執行單元將該整數數值轉換為該浮點結果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22904009P | 2009-07-28 | 2009-07-28 | |
US12/783,769 US8386755B2 (en) | 2009-07-28 | 2010-05-20 | Non-atomic scheduling of micro-operations to perform round instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201104569A TW201104569A (en) | 2011-02-01 |
TWI405126B true TWI405126B (zh) | 2013-08-11 |
Family
ID=43528086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099124666A TWI405126B (zh) | 2009-07-28 | 2010-07-27 | 微處理器及其執行指令之方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8386755B2 (zh) |
TW (1) | TWI405126B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI658406B (zh) * | 2016-11-30 | 2019-05-01 | 大陸商上海兆芯集成電路有限公司 | 計算機指令的執行方法以及使用此方法的裝置 |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9104479B2 (en) | 2011-12-07 | 2015-08-11 | Arm Limited | Apparatus and method for rounding a floating-point value to an integral floating-point value |
US10209986B2 (en) | 2011-12-22 | 2019-02-19 | Intel Corporation | Floating point rounding processors, methods, systems, and instructions |
US9411586B2 (en) * | 2011-12-23 | 2016-08-09 | Intel Corporation | Apparatus and method for an instruction that determines whether a value is within a range |
WO2013101233A1 (en) | 2011-12-30 | 2013-07-04 | Intel Corporation | Floating point round-off amount determination processors, methods, systems, and instructions |
US9059726B2 (en) * | 2012-05-11 | 2015-06-16 | Arm Limited | Apparatus and method for performing a convert-to-integer operation |
US9606842B2 (en) * | 2013-05-08 | 2017-03-28 | National Science Foundation | Resource and core scaling for improving performance of power-constrained multi-core processors |
US9461667B2 (en) | 2013-12-30 | 2016-10-04 | Samsung Electronics Co., Ltd. | Rounding injection scheme for floating-point to integer conversion |
CN106126189B (zh) | 2014-07-02 | 2019-02-15 | 上海兆芯集成电路有限公司 | 微处理器中的方法 |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
WO2016097815A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor |
JP6286065B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
JP6286067B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム |
US9645827B2 (en) | 2014-12-14 | 2017-05-09 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
KR101819314B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 오프다이 제어 부재 접근에 따라 로드 리플레이를 억제하는 장치 |
KR101819315B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 |
US10108429B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor |
KR101819316B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 캐시 불가의존 로드 리플레이를 억제하는 메커니즘 |
US10146547B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10108427B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
WO2016097800A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
WO2016097796A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US10146546B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Load replay precluding mechanism |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US9817661B2 (en) * | 2015-10-07 | 2017-11-14 | Arm Limited | Floating point number rounding |
US10078512B2 (en) | 2016-10-03 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processing denormal numbers in FMA hardware |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
US10360036B2 (en) * | 2017-07-12 | 2019-07-23 | International Business Machines Corporation | Cracked execution of move-to-FPSCR instructions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200506720A (en) * | 2003-06-28 | 2005-02-16 | Transitive Ltd | Method and apparatus for the emulation of high precision floating point instructions |
TW200634617A (en) * | 2005-03-18 | 2006-10-01 | Via Tech Inc | Apparatus and method for instruction-level specification of floating point format |
US7330864B2 (en) * | 2001-03-01 | 2008-02-12 | Microsoft Corporation | System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations |
US7461116B2 (en) * | 2003-09-17 | 2008-12-02 | Agility Design Solutions Inc. | Emulation of a fixed point operation using a corresponding floating point operation |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7689641B2 (en) * | 2003-06-30 | 2010-03-30 | Intel Corporation | SIMD integer multiply high with round and shift |
GB2411975B (en) * | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
US20070038693A1 (en) * | 2005-08-10 | 2007-02-15 | Christian Jacobi | Method and Processor for Performing a Floating-Point Instruction Within a Processor |
-
2010
- 2010-05-20 US US12/783,769 patent/US8386755B2/en active Active
- 2010-07-27 TW TW099124666A patent/TWI405126B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7330864B2 (en) * | 2001-03-01 | 2008-02-12 | Microsoft Corporation | System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations |
TW200506720A (en) * | 2003-06-28 | 2005-02-16 | Transitive Ltd | Method and apparatus for the emulation of high precision floating point instructions |
US7461116B2 (en) * | 2003-09-17 | 2008-12-02 | Agility Design Solutions Inc. | Emulation of a fixed point operation using a corresponding floating point operation |
TW200634617A (en) * | 2005-03-18 | 2006-10-01 | Via Tech Inc | Apparatus and method for instruction-level specification of floating point format |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI658406B (zh) * | 2016-11-30 | 2019-05-01 | 大陸商上海兆芯集成電路有限公司 | 計算機指令的執行方法以及使用此方法的裝置 |
Also Published As
Publication number | Publication date |
---|---|
US20110029760A1 (en) | 2011-02-03 |
TW201104569A (en) | 2011-02-01 |
US8386755B2 (en) | 2013-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI405126B (zh) | 微處理器及其執行指令之方法 | |
JP6001276B2 (ja) | 浮動小数点加算を実行するための装置および方法 | |
CN106325811B (zh) | 微处理器中的方法 | |
US6904446B2 (en) | Floating point multiplier/accumulator with reduced latency and method thereof | |
US9110713B2 (en) | Microarchitecture for floating point fused multiply-add with exponent scaling | |
US5392228A (en) | Result normalizer and method of operation | |
US8166092B2 (en) | Arithmetic device for performing division or square root operation of floating point number and arithmetic method therefor | |
US11119729B2 (en) | Alignment shifting and incrementing to determine a rounded result of adding first and second floating-point operands | |
US8046400B2 (en) | Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor | |
WO2018138469A1 (en) | An apparatus and method for processing input operand values | |
US7668892B2 (en) | Data processing apparatus and method for normalizing a data value | |
US8620983B2 (en) | Leading sign digit predictor for floating point near subtractor | |
Boersma et al. | The POWER7 binary floating-point unit | |
US20040199751A1 (en) | Apparatus and method for generating packed sum of absolute differences | |
CN101930354B (zh) | 微处理器及其执行指令的方法 | |
EP0840207A1 (en) | A microprocessor and method of operation thereof | |
TWI822952B (zh) | 迭代運算的處理 | |
He et al. | Multiply-add fused float point unit with on-fly denormalized number processing | |
US11704092B2 (en) | High-precision anchored-implicit processing | |
US20240004611A1 (en) | Tininess detection | |
US20230305805A1 (en) | Chained multiply accumulate using an unrounded product | |
WO1998006029A1 (en) | Apparatus and methods for execution of computer instructions | |
JPS60263230A (ja) | 多重精度浮動小数点加算回路 |