新四季網

檢測推測性浮點運算ieee下溢異常的機制的製作方法

2023-05-07 20:02:11

專利名稱:檢測推測性浮點運算ieee下溢異常的機制的製作方法
背景技術:
一條指令可以被安排成跟一組指令並行執行,也就是這條指令能夠跟這一組指令同時執行,如果這條指令不需要這一組指令中任何一個指令產生的結果,也就是說這個指令不依賴於任何其它指令的結果。為了提高ILP,一些編譯器在被安排的代碼部分的指定範圍內尋找獨立指令,安排這些獨立指令跟這個指令部分中的指令同時執行。
分支指令在處理器執行的指令序列(「執行路徑」)中增加了不確定因素,因而使得指令的安排更加複雜。隨著有關分支條件的分解度不同,分支指令使處理器沿著兩條或者更多條執行路徑中的一條往下走。我們說在這一分支指令以後一條執行路徑上的指令受到這一分支指令的「保護」,因為它的執行狀態,也就是是否執行這條指令,取決於這一分支是如何分解的。控制推測是編譯器的優化,由此來重新安排指令,在保護其執行的分支之前執行。在保護它的分支之前執行這一指令必定是推測性的,因為除非分支條件被隨後分解,否則就不會知道是否需要實際執行這一指令。
以推測方式執行一條指令的時候,不應當寄存指令可能觸發的特定事件,除非分解了指令的執行狀態。例如,處理器對每個浮點指令產生的結果進行各種檢查,以確定這一結果是否滿足特定的大小或者格式標準。不滿足這些標準的結果必定是異常的,可以觸發對「異常處理程序」的調用。二進位算術運算(IEEE 754)的IEEE 754-1985標準給浮點運算的異常下了定義。例如,當數值結果太大(小),不能夠用為這個結果指定的格式表示的時候,就出現了上溢(下溢)。
是否出現異常可以用對應狀態標誌的狀態來說明,它們在產生這一結果的浮點硬體的控制下被置位。當異常被允許(未加屏蔽),並且對應的狀態標誌說明發生了異常的時候,就調用一個異常處理程序來處理這一異常。如果異常被禁止(被屏蔽),就不調用異常處理程序,即使對應的狀態標誌說明發生了異常。為推測性指令屏蔽所有異常能夠防止處理器在確定指令的執行狀態之前將資源耗費在這條指令上。如果以推測方式執行的指令不在處理器的執行路徑上,那麼用來處理它產生的異常的任何資源都是一種浪費。
關於以推測方式執行的浮點指令的一個難題是在IEEE 754下,下溢狀態標誌是在不同條件下置位的,具體取決於是否屏蔽了下溢異常。當下溢異常未屏蔽的時候,如果計算出來的數比為這個數指定的格式能夠表示的最小數小,也就是說,這個結果毫無疑問地「細小」,就將下溢狀態標誌置位。如果下溢異常被屏蔽,那麼當結果「細小」以及「不精確」,也就是不能夠精確地表示它的時候,都要將下溢異常狀態標誌置位。這樣,指令能夠產生不同的結果,具體取決於它是被正常執行,也就是按照它的原始順序執行的,還是以推測方式執行的。
本發明提供一種機制,用來解決跟推測方式執行的指令的異常處理有關的這些難題和其它難題。
發明簡述本發明提供一種機制,用來在以推測方式執行的浮點指令中檢測下溢情況。
本發明的一種方法對浮點指令的下溢異常進行屏蔽,並執行這一指令。如果這個指令產生的結果小於指定的一個最小值,就將狀態標誌置位。
在本發明的一個實施方案中,如果到達跟這個指令有關的註冊點,就讀取這個狀態標誌,如果這個狀態標誌被置位,就產生一個未屏蔽的下溢異常。在本發明的另一個實施方案中,狀態標誌是浮點狀態寄存器中的一個粘性位,通過執行一個清除標誌指令來清除這個狀態標誌。


圖1是適合於本發明中一個浮點狀態寄存器實施方案的框圖。
圖2是圖1所示浮點狀態寄存器中一個狀態欄位的一個實施方案框圖。
圖3是包括採用本發明的下溢報告機制的一個處理器計算機系統框圖。
圖4是本發明一個方法的流程圖,該方法用於檢測以推測方式執行的浮點指令的未屏蔽下溢異常。
發明詳述下面給出許多具體細節,以便全面理解本發明。但是,在本發明的啟發下,本領域中的普通技術人員會明白可以實踐本發明而不需要這些具體細節。此外,沒有對眾所周知的方法、程序、部件和電路進行詳細描述,以便將注意力集中在本發明的特徵上。
描述本發明的時候針對的是IEEE 745,但是本發明並不限於這一標準。在IEEE 745下,定義下溢的時候考慮的是「細小」和「不精確」,將結果捨入以後檢查它是否「細小」。如果在指數範圍沒有限制的情況下計算出來的結果是嚴格在+2Exp(min)和-2Exp(min)範圍內的一個非零值,就認為這個結果「細小」。在這裡,Exp(min)是給定表示中的最小指數。檢測「細小」的結果常常是非常重要的,因為在後續計算中將它們作為除數會導致下溢。在同樣的標準下,如果它跟指數範圍和精度沒有限制的時候計算出來的結果相差很大,這個結果就是「不精確的」。
根據IEEE 745,按照下溢異常被屏蔽(禁止)還是未屏蔽(允許),會在不同的情況下出現下溢異常。當下溢異常捕獲未被禁止的時候,運算結果「細小」的時候會出現下溢異常。當下溢異常捕獲被屏蔽的時候,如果算術運算結果「細小」同時「不精確」就出現下溢異常。
如上所述,這種差別使得對以推測方式執行的浮點指令下溢異常的檢測更加困難。執行這些指令的時候所有異常,包括下溢異常,通常都是被屏蔽的。屏蔽異常能夠防止處理器在分辨出「異常」指令的情況以前投入資源。如果以推測方式執行的指令來自分支繞過去的執行路徑,那麼對以推測方式執行的指令產生的異常進行處理就會浪費處理器資源。
在這種情況下,只有在指令產生的結果既「細小」又「不精確」的時候才檢測以推測方式執行的指令的下溢異常。如果這一指令是以正常方式也就是以非推測方式執行的,同時下溢異常未屏蔽,那麼當指令產生的結果「細小」的時候就會檢測下溢異常,而不管它是否「不精確」。指令正常執行跟以推測方式執行的時候會產生不同結果這一可能性使得推測的優勢喪失殆盡。
本發明能夠在指令以推測方式執行的時候,也就是在下溢異常被屏蔽的時候,檢測未屏蔽下溢異常。它是通過在浮點指令產生一個「細小」結果的時候將狀態標誌置位來做到這一點的。狀態標誌是按照IEEE745置位/復位,可以被屏蔽的下溢異常狀態標誌以外的一個標誌。將「細小」狀態標誌設置為選定的值,例如1,能夠說明出現了未屏蔽的下溢異常,而不管下溢異常是否被屏蔽。
對於本發明的一個實施方案,下溢異常通過有關的屏蔽位和異常標誌被初始化而加以屏蔽。初始化可以通過例如清除IEEE狀態標誌的一個指令來完成,只要這個指令同時清除「細小」狀態標誌。然後可以以推測方式執行浮點指令,按照產生的結果更新下溢狀態標誌。檢查「細小」狀態標誌的狀態來確定這一條指令是否產生了一個未屏蔽下溢異常。這可以在確定了控制流中以推測方式執行的指令依賴於處理器的執行路徑的點來完成。例如,當處理器到達控制流中正常,也就是非推測方式執行的指令點的時候,處理器可以讀「細小」標誌,如果需要產生一個下溢異常。更加一般地,處理器可以在它非常清楚這條指令會更新處理器的結構狀態,例如當處理器到達指令的註冊點的時候,產生異常。
圖1是適合於本發明的浮點狀態寄存器(FPSR)100的一個實施方案框圖。FPRS 100包括浮點運算的動態控制和狀態信息。這一信息說明,例如,要用幾種不同模式中的哪一種來確定浮點運算的數值結果,以及如果這一運算結果產生一個特殊異常是否做出響應。
公開的FPSR 100的這個實施方案包括一個捕獲欄位110以及一個或者多個狀態欄位120。捕獲欄位110包括一系列屏蔽位112,它們中間的每一個都可以用來屏蔽(禁止)對應的一個異常。這些異常都沒有被屏蔽(允許)的時候,例如,對應的屏蔽位沒有被置位的時候,如果在算術運算結果中檢測到異常,處理器就跳到一個異常處理子程序裡去。當這些屏蔽位中有任何位被置位的時候,如果在結果中檢測到對應的異常,例如,如果對應的異常標誌被置位,就不調用異常處理程序。
狀態欄位120給出模式信息,並跟蹤結果狀態信息。模式信息用來控制計算算術結果的方式。狀態信息說明適合於這一結果的所有異常。可以用多個狀態欄位120來說明多個運算的模式和跟蹤結果狀態信息,或者說明同一運算多個實例的不同模式和跟蹤結果狀態信息。
圖2是狀態欄位120的一個實施方案框圖。公開的狀態欄位120這個實施方案包括一個控制欄位210和一個狀態欄位260。控制欄位210包括說明要進行的運算的模式的予欄位的個數。標誌欄位260包括多個子欄位,例如狀態標誌,每個都可以按照運算結果的特性置位或者復位。例如,狀態標誌可以是用於說明各種異常是否出現在計算結果的時候的異常標誌。表1、2和3概括了控制欄位210一個實施方案的控制子欄位。表4概括了標誌欄位260一個實施方案的狀態子欄位。
表1
在這裡,比特0被置位的時候,Ftz模式導致碰到「細小」的結果被截斷成符號正確的0值。當比特6被置位的時候,Td模式能夠在算術運算結果中檢測到代表特定異常的狀態子欄位的時候,防止處理器調用異常處理程序。它提供了另外一種機制在捕獲欄位110中屏蔽異常來屏蔽比特112。Wre、Pc和Rc跟一個指令完成符一起說明如何對浮點運算進行捨入。指令完成符wre和pc說明結果的有效精度和指數範圍。如果結果「不精確」,rc就說明如何對結果進行捨入。在表2和表3中概括本發明一個實施方案的不同模式。
表2
在表2中,IA指的是因特爾體系結構,PA-RISC指的是惠普體系結構的單元,SP表示單精度,DP表示雙精度,DE表示雙擴展精度。
表3
在表4中概括公開的FPSR 100實施方案的標誌子欄位260和說明。在本發明的一個實施方案中,所有狀態標誌都是粘性位,它們必須明確地置位以及通過清除指令明確清除。IEEE 745給出的異常狀態標誌都在括號中標上了IEEE。用來執行浮點運算的浮點執行單元中的邏輯檢測子欄位260的標誌代表的各種情況,並據此對標誌進行置位。例如,如果浮點運算產生的結果太大(根據IEEE 745),不能用這個結果的格式表示,浮點邏輯就將0粘性位置位。
表4
在這裡,D指的是一個粘性位,指令採用非規格化格式的操作數的時候對它置位。當指定數據格式中操作數最高位等於0的時候這個操作數就是非規格化的。U是一個IEEE粘性位,當浮點運算的結果出現下溢異常的時候對它置位。如果下溢異常未屏蔽,例如,對應的屏蔽位沒有置位,那麼,當浮點運算產生的結果比能夠用指數比特表示的最小數小的時候,也就是說它「細小」的時候,對U置位。如果下溢異常被屏蔽,例如對應的屏蔽位被置位,那麼,只有在這個結果既「細小」又「不精確」的時候才對U置位。如上所述,在IEEE 745下,U的狀態取決於下溢異常是否被屏蔽。在公開的實施方案中,這一點用有關屏蔽位的邏輯狀態說明。
T是一個新的狀態標誌,定義它用來實現本發明。對於本發明的一個實施方案,T是一個粘性位,當指令產生的結果細小的時候對它置位。粘性位T的狀態跟捕獲欄位110(或者控制欄位210中的Td)裡的所有屏蔽位都沒有關係。對於公開的本發明的實施方案,當結果細小的時候對它置位,它被一個清除指令所清除。對於本發明的一個實施方案,可以將FPSR 100中的一個保留位分配給T。儘管在IEEE 745中規定了「細小」,但是這個標準沒有規定一個單獨的「細小」異常。相反,在IEEE 745中,它包括在在下溢異常U中。由於這一原因,在表4中沒有給T標上IEEE。
圖3是按照本發明進行浮點運算的處理器300的一個框圖。還畫出了一個存儲器350,用來將指令提供給處理器300執行。處理器300包括一個浮點執行單元310和一個浮點寄存器文件320。浮點寄存器文件320包括寄存器330(1)-330(n)(一起標為「寄存器330」),它們為執行單元310提供源操作數,並且根據浮點指令(FP INST)從執行單元310接收結果操作數。FP INST跟FPSR 100一起控制執行單元310。FPSR包括一個「細小」異常標誌T來跟蹤執行單元310產生的結果的「細小」。
執行單元310從FR INST和FPSR 100接收要進行的操作的說明和執行模式。寄存器文件320從FP INST說明的寄存器330提供源操作數給執行單元310。對於公開的實施方案,浮點運算可能需要1到3個源操作數。執行單元310為FP INST說明的寄存器330,例如寄存器330(n),提供說明的操作的結果。寄存器330(n)可以是源寄存器之一,或者可以是另一個寄存器。需要的時候執行單元310還要根據浮點運算產生的結果的狀態更新FPSR 100。例如,如果按照IEEE 745其中的一個或者多個定義結果是異常的,執行單元310在FPSR 100的狀態欄位中對一個或者多個異常狀態標誌置位。對於本發明,如果結果滿足IEEE 745中的「細小」定義,執行單元310可以在FPSR 100中將一個「細小」標誌置位。
圖4是按照本發明檢測未屏蔽下溢異常的方法400的一個綜述。為要執行的指令對狀態標誌進行初始化410。對於本發明的一個實施方案,這可以用一個Clear_Flags指令來完成,它將所有狀態標誌設置成說明沒有檢測到任何異常情況的狀態。對於表4表示的狀態標誌的實施方案,狀態標誌V、D、Z、O、U、I和T被設置為0。於是異常被屏蔽420,因此如果在這些指令產生的結果中檢測到異常,按照推測方式執行的指令不會調整處理器的方向。對於本發明的一個實施方案,這可以通過在捕獲欄位110中對屏蔽位112置位來屏蔽對應的異常。也可以在控制欄位210中對屏蔽位TD置位。既然不將它的狀態用來觸發異常處理程序,就不為異常標誌T提供任何屏蔽位。
然後執行430這些指令,讀取狀態標誌,確定是否檢測到以推測方式執行的指令的任何異常。異常標誌T的狀態說明是否出現未屏蔽下溢異常,而不管這一指令是在下溢異常被屏蔽的時候執行的。
在下面說明以推測方式執行一系列浮點指令的方法400的偽碼表示。
Clear_Flags(清除異常標誌,包括T)Set_FPSR (初始化FPSR模式,屏蔽位)FP1(用第一個狀態欄位執行第一個FP指令)FP2(用第二個狀態欄位執行第二個FP指令)FPn(用第n個狀態欄位執行第n個FP指令)Read_Flags (讀取異常標誌,包括T,以識別異常結果)到此為止已經提供了一種方法用來檢測以推測方式執行的指令的未屏蔽下溢異常。該方法採用一個異常狀態標誌,當指令產生的結果「細小」的時候,可以由浮點硬體來設置。清除所有異常狀態標誌,對於以推測方式執行的指令,屏蔽所有異常,包括下溢異常。執行這些指令,讀取「細小」異常狀態標誌來確定這些結果是否產生了一個未屏蔽下溢異常。
已經用IEEE 745標準和特殊的狀態寄存器結構說明了本發明。本領域中的技術人員會明白這一方法可以進行各種改進,但它仍然屬於本發明的範圍。例如,「細小」狀態標誌不必包括在浮點狀態寄存器中。還有,根據異常是否被屏蔽,本發明還可以用於以不同方式定義異常狀況的其它標準。本發明的範圍只是由後面的權利要求加以限制。
權利要求
1.檢測下溢的一種方法,包括清除第一個狀態標誌;屏蔽下溢異常;執行浮點指令;讀取狀態標誌以確定這一浮點指令是否會導致未屏蔽下溢異常。
2.權利要求1的方法,其中屏蔽下溢異常包括將跟下溢異常狀態標誌有關的一個屏蔽位置位。
3.權利要求1的方法,其中清除第一個狀態標誌包括執行清除狀態標誌指令。
4.權利要求1的方法,還包括要發生未屏蔽下溢異常的時候儲存一個標誌;和如果到達跟浮點指令有關的一個註冊點,就讀取這個標誌,跳到異常處理程序中去。
5.檢測下溢異常的一種方法,包括屏蔽下溢異常;執行浮點指令;和如果執行的指令產生的結果小於一個指定的最小值,就將狀態標誌置位。
6.權利要求5的方法,其中屏蔽下溢異常包括執行一個標誌清除指令。
7.權利要求5的方法,還包括到達指令的註冊點並且狀態標誌被置位的時候說明出現了下溢異常。
8.一種機器能夠讀的媒介,其中儲存能夠由處理器執行,實現檢測下溢情況的一種方法的指令,包括為浮點指令屏蔽異常;執行這一浮點指令;和如果執行的指令產生的結果細小,就將一個狀態標誌置位。
9.權利要求8中機器能夠讀的媒介,還包括如果到達指令的註冊點就讀取狀態標誌。
10.權利要求8的方法,其中異常的屏蔽包括清除跟這些浮點指令有關的狀態標誌。
11.權利要求10的方法,其中的狀態標誌包括異常狀態標誌以及將其置位以說明結果是否細小的狀態標誌。
12.一種計算機系統,包括具有浮點狀態寄存器的處理器,浮點狀態寄存器包括一個「細小」狀態標誌和一個下溢狀態標誌;和一個存儲器,用來儲存可以由處理器執行,用來清除細小和下溢狀態標誌的一個指令序列,屏蔽下溢狀態標誌,計算浮點結果;如果浮點結果細小就將這個細小狀態標誌置位。
13.權利要求12的系統,如果細小狀態標誌被置位,並且到達跟浮點計算有關的註冊點,其中的指令序列使得處理器產生下溢異常。
14.權利要求12的系統,其中的浮點狀態寄存器包括一個屏蔽位,可以將它置位,屏蔽下溢狀態標誌。
全文摘要
公開了一種機制,用來檢測以推測方式執行的浮點運算的下溢情況。浮點狀態寄存器包括一個狀態標誌,當浮點指令產生的結果「細小」的時候將它置位。清除這個狀態標誌,屏蔽所有異常,以推測方式執行指令。讀出「細小」異常標誌,以確定以推測方式執行的指令是否會導致未屏蔽下溢異常。如果處理器到達跟這個指令有關的一個註冊點就會發生這一異常。如果沒到達這一點就可以忽略這一異常。
文檔編號G06F9/32GK1415087SQ00818092
公開日2003年4月30日 申請日期2000年9月14日 優先權日1999年10月29日
發明者S·斯託裡 申請人:英特爾公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀