新四季網

處理器中的有效並行浮點異常處理的製作方法

2023-08-12 11:51:26


專利名稱::處理器中的有效並行浮點異常處理的製作方法
技術領域:
:本公開文本總體上涉及微處理器領域。具體的,本公開文本涉及用於處理執行單指令多數據流(SIMD)指令的處理器中的浮點異常的有效技術。
背景技術:
:用於浮點運算的IEEE(電氣和電子工程師學會)標準(正EE754)規定了如何表示單精度(32位)、雙精度(64位)、單擴展精度(》43位,但不常用)和雙擴展精度(》79位,常常以80位來實施)的浮點數(包括負零、非規格化數(denormal)、無窮大以及NaN,NaN表示"非數字"),以及應如何對它們執行運算。這個標準僅需要32位的值;其它的是可任選的。它還規定了四種捨入(round)模式和5種異常(包括何時出現異常,以及當它們出現時會發生什麼)。將指數偏移("—1,其中e是指數欄位所使用的位數。例如,單精度數具有8-位指數,因此單精度數的指數是以27-1=127加上該指數的方式來存儲的,也稱為"偏移127"。規格化單精度指數的範圍在-126到127之間。指數128被保留以供正或負無窮大使用。指數-127(全零)被保留以供正或負零使用(或者用於非規格化數,但在非規格化數的情況下,所用的偏移是(2"2,即使用126而不是127,因為假定尾數的最高有效位是0,而不是l)。在表l中示出了單精度浮點表示的一些示例。表l:單精度浮點表示示例類型符號expexp+偏移指數小數00或1127000000000000000000000000000000010270111111100000000000000000000000tableseeoriginaldocumentpage8規格化浮點數具有v-sx2exm的值,其中,s、e和m定義為符號位為0時,s=+1(正數和+0)符號位為1時,s--l(負數和-0)e=指;教-偏移(即,以偏移加上指數的方式來存儲該指數)w=l./rac//owC二遂虔O(就是說,尾數或有效數字(significand)是這樣的隱含的前導位值1,隨後是小數點,隨後是小數(戶Mto")的二進位位)。因此,l^m<2。非規格化數(也稱為反規格化(denormalized)數或次規格化(subnormal)數)是(絕對值)小於最小的規格化數但仍不為0的數。非規格化數的產生有時稱為逐級下溢(gradualunderflow),因為它允許在結果較小時,計算緩慢地降低精度。在Intel8087浮點協處理器中實現了非規格化數,同時撰寫了IEEE754標準。這個實現表明可以在實際實施中支持非規格化數。在規格化浮點表示中,假定尾數中的前導二進位數字等於1。由於已知它等於l,在一些浮點表示中,可以省略尾數的前導二進位數字,並相應地調整指數值。非規格化數值是那些不能以規格化形式來表示的值(即具有最小的可能指數,並且其帶有非零的尾數)。浮點單元(FTU)的一些實現方式在硬體中不直接支持非規格化數,而是轉移到某些種類的軟體或微代碼支持。儘管這對於用戶而言可能是透明的,但它會導致產生或使用非規格化數的計算比對規格化數進行類似計算慢得多。現代處理器還可以具有用於對浮點數執行單指令多數據(SIMD)運算的指令。當這些SIMD運算產生或使用非規格化數時,會觸發異常,以便在微代碼的幫助下在軟體或硬體中處理該運算。在硬體中支持非規格化數的一個方式是通過更寬的內部表示,其具有足夠的精度來簡單地將非規格化數作為較小的規格化數來處理。例如,如果觸發了包含單精度非規格化數的異常,則微代碼會將單精度操作數轉換為規格化雙精度操作數,並在更寬的表示上重新執行該運算,隨後對結果進行反規格化,並將它們轉換回單精度。類似地,可以將雙精度非規格化數作為雙擴展精度規格化數來處理。一個缺陷在於,產生或使用非規格化數的計算仍會比對規格化數進行類似計算慢得多。到目前為止,還沒有充分地研究出用於在執行SIMD指令的處理器中處理浮點異常的更有效的技術。在附圖的各個圖中作為示例而非限制來圖示說明本發明。圖1示出了用於存儲標量(scalar)正EE浮點數和分組(packed)IEEE浮點數的示例性存儲格式。圖2示出了系統的一個實施例,其包括執行SIMD浮點指令並使用用於處理SIMD浮點異常的有效技術的處理器。圖3示出了執行SIMD浮點指令並使用用於處理SIMD浮點異常的有效技術的處理器的一個實施例。圖4示出了一個裝置的可替換實施例,用於有效地處理在執行單指令多數據(SIMD)指令的處理器中的浮點異常。圖5a-b示出了用於存儲分組浮點數的內部表示的示例性存儲格式。圖6示出了用於處理在SIMD浮點加法器中的某些數值異常的處理的一個實施例的流程圖。圖7示出了用於處理在SIMD浮點乘法器中的某些常見異常的處理的9一個實施例的流程圖。圖8示出了用於處理在執行SIMD浮點指令的處理器中的數值異常的處理的一個替換實施例的流程圖。具體實施例方式公開了用於處理在執行單指令多數據(SIMD)指令的處理器中的浮點異常的方法和裝置。在一個實施例中,為SIMD浮點運算識別數值異常,啟動一對SIMD微運算(micro-operation),以便為SIMD浮點運算產生分組結果的兩個分組局部結果。可以理解在以下公開文本的上下文中的數值異常包括通過識別非規格化輸入值,或者通過識別有可能作為結果產生非規格化輸出值的下溢條件而觸發的至少一個異常,並且隨後可以要求微代碼輔助。啟動SIMD反規格化微運算,以便合併這兩個分組局部結果,並且對所合併的分組局部結果中的一個或多個元素執行反規格化,以便為SIMD浮點運算產生具有一個或多個非規格化元素的分組結果。可以設定標誌,並將其與分組局部結果和/或分組結果一起進行存儲,以便標識所述非規格化元素。在一個實施例中,當SIMD浮點運算是乘法(或除法、平方根或變換)時,啟動SIMD規格化微運算,以便在該SIMD浮點運算之前產生規格化的偽內部浮點表示。這種偽內部浮點表示可以與規格化分組浮點操作數存儲在相同的寄存器中,其中設定標誌來表示非規格化元素的哪一個相應的偽內部浮點表示需要被轉換為非規格化元素的實際內部浮點表示。在非規格化元素的這種偽內部浮點表示中,可以對尾數執行規格化,並且可以以這樣的方式來存儲指數即,使得易於將它們恢復為實際內部浮點表示的更寬指數。例如,如果從非規格化數的指數中減去尾數的前導O的數量(以實際內部浮點表示的更寬指數格式進行偏移),則較高位會是恆定的(例如,10),並且因此可以從偽內部浮點表示得出並易於恢復較高位。因此,這種技術可以用於透明地處理SIMD浮點異常,同時不必轉換為標量運算並且僅需執行少量的額外微運算。可以根據以下教導來實現本發明的這些及其它實施例,並且顯然,可以在不背離本發明的廣泛的精神與範圍的情況下,對以下教導做出各種修改和改變。因此,說明書和附圖應認為是示例性而不是限制性的意義,本發明僅依據權利要求及其等價物來度量。在以下描述中,為了解釋的原因,闡述了許多具體細節,以便提供對本發明透徹的理解。然而,本領域普通技術人員會意識到這些具體細節並非是實現本發明的一些實施例所必需的。在其它情況下,沒有詳細闡明公知的電氣結構和電路,以便不模糊對本發明的實施例的理解。隨著越來越多的計算機系統用於網際網路和多媒體應用,隨著時間的過去己經開發出了額外的處理器支持。例如,單指令、多數據(SIMD)整數/浮點指令和流式SIMD擴展(SSE)是減少了執行特定程序任務所需的指令總數的指令。這些指令可以通過對多個數據元素進行並行操作,來加速軟體性能。結果,可以在包括視頻、語音和圖像/照片處理的寬泛範圍的應用中實現性能的提高。SIMD指令在微處理器及相似類型的邏輯電路中的實現常常包括多個問題。而且,SIMD運算的複雜性常常導致需要額外的電路來準確地處理和操作數據。圖l示出了一些示例性存儲格式101-105,其用於存儲標量浮點數和分組IEEE浮點數。單精度格式101包括32位符號位lll、8個指數位112和23個有效數字或尾數位113。雙精度格式102包括64位符號位121、11個指數位122和52個有效數字或尾數位123。雙擴展精度格式103包括80位符號位131、15個指數位132和64個有效數字或尾數位133。在IEEE浮點數的每一個存儲格式中,有效數字或尾數112、122和132還可以包括隱含最高有效位J,其假定為等於l。因此,例如,如果雙精度格式102的52-位的尾數存儲十六進位值23456789ABCDE,所表示的十六進位值就是1.23456789ABCDE,其中小數點在隱含位J後面。指數偏移了(2""-1,其中e是指數欄位所使用的位數。因此,單精度格式101的8-位的指數被偏移了127,雙精度格式102的11-位的指數被偏移了1023。分組單精度格式104包括128位,每一個32-位的部分141-144都存儲具有單精度格式101的單精度浮點數。分組雙精度格式105也包括128位,每一個64-位的部分151-152都存儲具有雙精度格式102的雙精度浮點數。本領域中公知的,分組單精度格式104和分組雙精度格式105可以用於執行SIMD浮點運算。會意識到,儘管將分組單精度格式104和分組雙精度格式105顯示為包括128位,但本發明不限於此。具體地,本發明的實施例可以包括用於執行SIMD浮點運算的、包含有256位或512位數據或者更多位數據的多種格式的分組單精度浮點數和分組雙精度浮點數。當這些SIMD浮點運算產生或使用非規格化數時,可以觸發異常(有可能被屏蔽),以便以軟體或硬體和/或在微代碼輔助下處理該運算。在一些現有處理器中,處理這種異常可以包括將分組浮點數轉換為更寬表示的標量浮點數,並作為標量運算對該更寬表示重新執行運算,隨後按照需要對結果進行反規格化,並將它們轉換回分組浮點數。如上指出的,處理這種產生或使用非規格化數的計算會比對規格化數執行類似計算慢得多,尤其是在分組浮點數的格式會包括256位或512位或者更多位數據的情況下。因此,就需要本文公開的更有效的技術來處理在執行SIMD指令的處理器中的浮點異常。圖2示出了系統200的一個實施例,該系統200包括處理器300,其執行SIMD浮點指令並使用用於處理SIMD浮點異常的更有效的技術。例如在本文所述實施例中,根據本發明,系統200包括諸如處理器300的組件,處理器300利用包含邏輯的執行單元來執行用於執行SIMD浮點運算的算法。系統200代表了基於可以從加利福尼亞SantaClara的Intel公司獲得的PENTIUMIII,PENTIUM4,Celeron,XEON,ITANIUM,CENTRINO,COREDuo,CORE2Duo和/或CORETM2Quad微處理器的處理系統,儘管也可以使用其它系統(包括具有其它微處理器的PC、工程工作站、機頂盒等)。在一個實施例中,示例系統200可以執行可從Redmond,Wash.的Microsoft公司獲得的WINDOWStm操作系統的某個版本,儘管也可以使用其它作業系統(例如MACOSXLEOPARD作業系統、UNIX和域Li皿x)、嵌入式軟體、和/或圖形用戶接口。因此,本發明不限於硬體電路和軟體的任何特定組合。處理器300包括一個或多個執行單元203,用以根據本發明對分組浮點數據執行SIMD指令。在單處理器臺式機或伺服器系統的環境下描述本實施例,但可替換的實施例可以包括在多處理器系統中。系統200的一個實施例是中心(hub)架構的示例。計算機系統200包括處理器300,用以處理數據信號。處理器300可以是例如複雜指令集計算機(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、執行多個指令集的組合的處理器,或者諸如數字處理器之類的任何其它處理器設備。處理器300耦合到處理器總線210,處理器總線210能夠在處理器300與系統200中的其它組件之間傳輸數據信號。系統200的元件執行它們傳統的功能,這是熟悉本領域的人員公知的。在一個實施例中,處理器300包括1級(L1)內部高速緩衝存儲器207。根據架構,處理器300可以具有單級內部高速緩存或多級內部高速緩存。可替換地,在另一個實施例中,高速緩衝存儲器可以位於處理器300之外。其它實施例還可以包括內部高速緩存和外部高速緩存兩者的組合,這取決於具體實現方式及需要。寄存器文件(Registerfile)208可以在多種寄存器中存儲不同類型的數據,這些寄存器包括SIMD寄存器和/或標量寄存器、整數寄存器、浮點寄存器、狀態寄存器和指令指針寄存器。包含用以執行整數和浮點運算的邏輯的執行單元203也位於處理器300中。處理器300還包括微代碼(ucode)ROM,其存儲特定宏指令的微代碼和/或用於在微代碼的輔助下以硬體處理異常操作。對於該實施例,執行單元203包括用以處理分組指令集209的邏輯,其中分組指令集209包括SIMD浮點指令。通過將分組指令集209包括在通用處理器300的指令集中,連同用以執行所述指令的相關電路一起,可以用分組數據在通用處理器300中執行由許多多媒體應用所使用的運算。因此,通過使用處理器數據總線的完全寬度來對分組數據執行運算,可以加速並更有效地執行許多多媒體應用。這可以消除為了執行一個或多個運算而通過處理器的數據總線傳遞更小單位的數據(一次傳遞一個數據元素)的需要。執行單元203的替換實施例還可以用於微控制器、嵌入式處理器、圖形設備、DSP及其它類型的邏輯電路中。系統200包括存儲器220。存儲器220可以是動態隨機存取存儲器(DRAM)設備、靜態隨機存取存儲器(SRAM)設備、快閃記憶體存儲器設備或其它存儲器設備。存儲器220可以存儲由可由處理器300執行的數據信號所表示的指令和/或數據。系統邏輯晶片力6耦合到處理器總線210和存儲器220。在示出的實施例中的系統邏輯晶片216是存儲器控制中心(MCH)。處理器300可以經由處理器總線210與MCH216通信。MCH216向存儲器220提供高帶寬的存13儲器通路218,用於指令和數據的存儲,並用於圖形命令、數據和紋理的存儲。MCH216用於導引在處理器300、存儲器220及系統200中其它組件之間的數據信號,並用於橋接在處理器總線210、存儲器220和系統I/O222之間的數據信號。在一些實施例中,系統邏輯晶片216可以提供用於耦合到圖形控制器212上的圖形埠。MCH216通過存儲器接口218耦合到存儲器220。圖形卡212通過加速圖形埠(AGP)互連214耦合到MCH216。系統200的一些實施例使用專用中心接口總線222來將MCH216耦合到I/O控制中心(ICH)230。ICH230經由本地I/O總線向一些I/O設備提供直接連接。本地1/0總線是用於將外圍設備連接到存儲器220、晶片組和處理器300的高速I/O總線。一些示例是音頻控制器、固件中心(快閃記憶體BIOS)228、無線收發機226、數據存儲器224、包含用戶輸入和鍵盤接口的傳統I/O控制器、諸如通用串行總線(USB)的串行擴展埠、和網絡控制器234。數據存儲設備224可以包括硬碟驅動器、軟盤驅動器、CD-ROM設備、快閃記憶體存儲器設備,或其它大容量存儲設備。在系統200的一些實施例中,MCH216和ICH230可以集成到單個系統邏輯晶片201中。在一些替換實施例中,MCH216可以直接集成到處理器300中,用於指導處理器300對存儲器220的訪問。對於系統200的另一個實施例,處理器300可以直接集成到晶片上系統中。晶片上系統的一個實施例包括處理器300和存儲器220。用於一個這種系統的存儲器220是快閃記憶體存儲器。快閃記憶體存儲器220可以與處理器300及其它系統組件位於同一管芯(die)上。另外,諸如存儲器控制器或圖形控制器之類的其它邏輯塊也可以位於晶片上系統中。圖3示出了處理器300的一個實施例,該處理器300執行SIMD浮點指令,並使用用於處理SIMD浮點異常的有效技術。按順序的前端(in-orderfrontend)301是處理器300中的用於讀取要執行的宏指令並將它們準備好以便在處理器流水線中使用的部分。這個實施例的前端301包括幾個單元。指令預取器326從存儲器220和/或從I-高速緩存327讀取宏指令,並將它們輸入到指令解碼器328,指令解碼器328依次將它們解碼為機器知道如何執行的、稱為微指令或微運算(也稱為微-op或uop)的原語(primitive)。微-op高速緩存330取得解碼的微-op,並存儲它們以便將來重新執行而不進行解碼。微-op高速緩存330的一些實施例可以包括追蹤高速緩存(tracecache),它將微-op組合為按程序順序的序列,或者追蹤用於執行的微-op隊列334。對於一些實施例,當解碼器328或者當微-op高速緩存330的'追蹤高速緩存遇到複雜的宏指令時,微代碼ROM344可以提供完成該操作所需的微-op。許多宏指令可以轉換為單個微-op,但其他宏指令需要幾個微-op來完成整個操作。在一個實施例中,如果需要多於4個微-op來完成宏指令,則解碼器328就訪問微代碼ROM344,以提供執行該宏指令所需的微-op。對於一個實施例,浮點運算的異常可以編碼到微代碼ROM344中的少量微-op中,並由其來處理,以便以能夠提供對執行SIMD浮點指令的處理器300中的異常情況(例如非規格化數)的支持的方式來重新執行浮點運算。一些SIMD及其他多媒體類型的指令被認為是複雜指令。大多數與浮點相關的指令也是複雜指令。如此,當指令解碼器328遇到複雜宏指令時,就訪問微代碼ROM344的適當位置,以獲得用於該宏指令的微代碼序列。將執行該宏指令所需的各種微-op傳輸到亂序執行引擎303,用於在適當的整數執行單元和浮點執行單元中執行。亂序執行引擎303是在其中準備微指令以便執行的場所。亂序執行邏輯具有多個緩衝器,用以在微指令穿過流水線行進並被調度以執行時,平滑並重新排序微指令流來優化性能。分配器重命名器邏輯333分配每一個微-op的執行所需的機器緩衝器和資源,並將邏輯寄存器重命名到寄存器文件的條目上。分配器重命名器邏輯333的一個實施例還為多個隊列中的每一個微-op分配條目,這些隊列可以包括用於存儲器操作的存儲器隊列331、用於整數運算或定點運算的整數隊列332和用於浮點運算的浮點隊列336。依據這些隊列(例如分別是331、332和336),由存儲器調度器321、整數調度器302和浮點調度器306調度微-op,以便分別由讀/寫單元311、整數執行單元312和浮點執行單元316執行。微-op調度器3M、302和306基於它們相關的輸入寄存器操作數源準備就緒和微-op完成其操作所需的執行資源的可用性,來確定微-op何時準備好執行。會意識到,執行單元311、312和316中的每一個或任何一個都可以具有用於執行標量或SIMD運算的相同的執行單元。15寄存器文件旁路(bypass)網絡308位於調度器321、302和306與執行單元311、312和316之間。在寄存器文件旁路網絡308的一些實施例中,可以存在用於整數運算和浮點運算的單獨的寄存器文件。這種實施例的每一個寄存器文件還可以包括這樣的旁路網絡,即該旁路網絡可以將剛剛完成的、還沒有寫入到寄存器文件中的結果旁路或轉發給新的相關微-op,並且還能夠彼此傳送數據。可替換地,可以統一寄存器文件旁路網絡308的多個實施例。寄存器文件旁路網絡308的一個替換實施例具有用於存儲分組源操作數和目標操作數的至少256位寬的寄存器條目,這些操作數包括用於SIMD浮點運算的分組浮點源操作數和分組浮點結果。微-op調度器321、302和306的一些實施例可以在父負載完成執行之前分派相關操作。由於在處理器300中推測性地調度並執行微-op,處理器300還包括用以處理存儲器未命中的邏輯。如果在數據高速緩存中未命中數據負載,在流水線中就會存在暫停(inflight)的相關操作,其使調度器具有暫時的不正確數據。重放機制可以追蹤並重新執行使用不正確數據的指令。只需要重放相關操作,可以允許完成獨立的操作。當已經完成了微-op的執4亍時,由重排序退役(retire)邏輯310以順序程序的次序使它們退役。浮點執行單元316的一個實施例包括異常電路346,用以識別SIMD浮點運算的異常,其包括例如數值異常。響應於數值異常,可以位於微代碼ROM344中的微代碼異常處理機(handler),或一些專用的有限狀態機(例如在異常電路346中)利用微代碼ROM344來啟動用於遇到異常的該SIMD浮點運算的SIMD微運算序列。在一個實施例中,SIMD微運算為SIMD浮點運算產生分組結果的兩個分組局部結果。SIMD反規格化微運算合併這兩個分組局部結果,並且對所合併的分組局部結果中的一個或多個元素執行反規格化,以便為具有一個或多個非規格化元素的該SIMD浮點運算產生分組結果。可以設定標誌並將其與分組局部結果一起進行存儲,用以標識在一個或多個元素中的非規格化結果,在此情況下,對於一些實施例,在反規格化微運算之前可能需要對分組局部結果中的一個執行規格化。在微代碼異常處理機的一個實施例中,當SIMD浮點運算是乘法時,還可以利用微代碼ROM344來啟動SIMD規格化微運算,以便產生規格化的偽內部浮點表示作為用於該SIMD浮點運算的SIMD微運算序列的一部分。可以設定標誌並將其與分組結果一起進行存儲,用以標識以規格化的偽內部浮點表示所表示的非規格化結果。對於這個實施例,當SIMD浮點運算是加法時,SIMD規格化微運算不是必需的,因為SIMD浮點加法器能夠接受包含非規格化數值的分組操作數作為SIMD浮點加法的輸入。在一些實施例中,可以設定標誌並將其與規格化的偽內部浮點表示一起進行存儲,用以標識非規格化元素,並能夠依據規格化的偽內部浮點表示來重建實際的內部浮點表示。因此,如上所述的微代碼輔助機制可以利用微代碼344來透明地處理SIMD浮點異常。圖4示出了用於有效地處理執行單指令多數據(SIMD)指令的處理器中的浮點異常的裝置460的一個替換實施例。裝置460包括寄存器文件旁路網絡308,其可操作地與浮點執行單元316耦合。SIMD浮點執行單元316的一個實施例包括SIMD浮點加法器單元(FAU)400和SIMD浮點乘法單元(FMU)420。包括SIMDFAU400和/或SIMDFMU420的實施例還可以包括SIMD浮點規格化單元(FNU)410和SIMD浮點反規格化單元(FDU)430。SIMDFAU400包括浮點加法器401、402、…408,其可以包括能夠使用用於單精度浮點值的內部浮點表示來執行單精度加法的多個浮點加法器,和能夠使用用於雙精度浮點值的內部浮點表示來執行雙精度加法的多個浮點加法器。在SIMDFAU400的一個實施例中,浮點加法器401、402、…408中每隔一個的浮點加法器能夠執行單精度加法和雙精度加法兩者。在SIMDFAU400的一個替換實施例中,可以分割和/或組合浮點加法器401、402、…408,來分別執行單精度加法和/或雙精度加法。浮點加法器401、402、…408的實施例包括對齊(alignment)電路,用以將浮點操作數元素的尾數對齊;以及加法器電路,用於將浮點操作數元素的尾數相加。SIMDFAU400還包括分別與浮點加法器401、402、…408耦合的異常電路441、442、…448。異常電路441、442、…448的一些實施例包括非規格化檢測電路,用以檢測用於SIMD浮點加法運算的分組操作數的非規格化元素;以及異常產生電路,用以識別包含非規格化結果的、SIMD浮點加法運算的異常結果。異常電路441、442、…448的實施例還可以可操作地與微代碼ROM344耦合,用以響應於所識別的異常結果,啟動微-op序列來重新執行SIMD浮點加法運算。在SIMDFAU400的一些實施例中,如果相應的第二個元素不是非規格化的,則浮點加法器401、402、…408的對齊電路可以按照未偏移的指數差(即,不是經偏移的指數差)將非規格化的第一個元素的尾數與該相應的第二個元素的尾數對齊,但在第一個元素和第二個元素都是非規格化的情況下保持對齊狀態不變。在這些實施例中,如果所得到的和數可以表示為該SIMD浮點加法運算的分組結果中的規格化結果元素,則浮點加法器401、402、…408還可以(例如通過FNU410)捨入並重新規格化所得到的和數。如果確定結果不能表示為該SIMD浮點加法運算的分組結果中的規格化結果元素,則浮點加法器401、402、…408的(或者規格化器411、412、…418的)實施例還可以設定標誌,該標誌用以將加法結果標識為分組結果中的非規格化元素。寄存器文件旁路網絡308的實施例還包括結果存儲電路,用以存儲SIMD浮點運算的分組結果,並用以存儲將結果元素標識為分組結果中的非規格化元素的任何標誌。SIMDFNU410包括浮點規格化器411、412、…418,其可以包括能夠使用用於單精度浮點值的內部浮點表示來執行單精度規格化的多個浮點規格化器,和能夠使用用於雙精度浮點值的內部浮點表示來執行雙精度規格化的多個浮點規格化器。在SIMDFNU410的一個實施例中,浮點規格化器411、412、…418中每隔一個的浮點規格化器能夠執行單精度規格化和雙精度規格化兩者。在SIMDFNU410的一個替換實施例中,可以分割和/或組合浮點規格化器411、412、…418,來分別執行單精度規格化和/或雙精度規格化。浮點規格化器411、412、…418的實施例還可以包括尾數捨入電路,用以執行並行的單精度和/或雙精度捨入和規格化。浮點規格化器411、412、…418的一些實施例還能夠在對分組操作數的偽內部浮點表示的規格化中使用常數值(例如,10)。SIMDFMU420包括浮點乘法器421、422、…428,其可以包括能夠使用用於單精度浮點值的內部浮點表示來執行單精度乘法的多個浮點乘法器,和能夠使用用於雙精度浮點值的內部浮點表示來執行雙精度乘法的多個浮點乘法器。在SIMDFMU420的一個實施例中,浮點乘法器421、422、…18428中的每隔一個浮點乘法器能夠執行單精度乘法和雙精度乘法兩者。在SIMDFMU420的一個替換實施例中,可以分割和/或組合浮點乘法器421、422、…428,來分別執行單精度乘法和/或雙精度乘法。SIMDFMU420還可以包括分別與浮點乘法器421、422、…428耦合的異常電路451、452、."458。異常電路451、452、…458的一些實施例包括非規格化檢測電路,用以檢測SIMD浮點乘法運算的分組操作數中的非規格化元素;以及異常產生電路,用以識別包含非規格化結果的、SIMD浮點乘法運算的異常結果。異常電路451、452、…458的實施例還可以可操作地與微代碼ROM344耦合,以便響應於檢測到的分組操作數中的非規格化元素,或者響應於所識別的異常結果,啟動微-op序列來重新執行SIMD浮點乘法運算。浮點乘法器421、422、…428的實施例可以包括指數比較器電路和預測器,用以基於比較,對異常操作數元素的一些常見結果(例如0、最小可表示的非規格化數、或可任選的無窮大)做出預測,並將這種預測的結果存儲為該乘法的結果,從而避免了異常。相反地,當不能預測異常操作數元素的乘法的這種常見結果時,可以對接收到的操作數執行乘法,並且可以根據本文所述的可替換的技術(例如處理801中的)來處理所出現的任何異常。SIMDFDU430包括浮點反規格化器431、432、…438,其可以包括能夠使用用於單精度浮點值的內部浮點表示來執行單精度反規格化的多個浮點反規格化器,和能夠使用用於雙精度浮點值的內部浮點表示來執行雙精度反規格化的多個浮點反規格化器。在SIMDFDU430的一個實施例中,浮點反規格化器431、432、…438中每隔一個的浮點反規格化器都能夠執行單精度反規格化和雙精度反規格化兩者。在SIMDFDU430的一個替換實施例中,可以分割和/或組合浮點反規格化器431、432、…438,來分別執行單精度反規格化和/或雙精度反規格化。浮點反規格化器431、432、…438的實施例還可以包括尾數捨入電路,用以執行並行的單精度和/或雙精度捨入和反規格化。浮點反規格化器431、432、…438的一些實施例還能夠在分組局部結果對的反規格化中使用恆定的非規格化指數值(例如-126或-1022)。SIMDFNU410的實施例可操作來產生具有規格化和/或非規格化成分浮點元素的分組操作數的偽內部浮點表示。SIMDFAU400和SIMDFMU420的實施例可在規格化模式下操作,以產生具有規格化成分浮點元素的單一分組結果,並且可在數值異常處理模式下操作,以產生具有規格化和/或非規格化成分浮點元素的分組結果的兩個分組局部結果。在數值異常處理模式的一個實施例中,可以將階段一的分組局部結果與階段二的分組局部結果(同時地或者以任意時間順序分別地)存儲到寄存器文件的分開的存儲單元中,以構成兩個分組局部結果。微代碼ROM344的實施例還可以包括用以向SIMDFAU400和SIMDFMU420指明它們是在數值異常處理模式的階段一中執行還是在數值異常處理模式的階段二中執行的微-op。SIMDFDU430的實施例可操作來接收具有規格化和/或非規格化成分浮點元素的分組結果的這兩個分組局部結果,並產生具有規格化和/或非規格化成分浮點元素的單一分組結果。圖5a示出了用於存儲分組浮點數的內部表示的示例性存儲格式501和502。用一對單精度浮點數來圖示說明格式501和格式502,但會意識到格式501和格式502僅僅代表了典型的較寬分組浮點操作數(例如,代表了具有4個單精度元素或者2個雙精度元素的分組操作數,或者代表了具有8個單精度元素或4個雙精度元素的分組操作數)。格式501表示用於SIMD浮點運算的分組單精度目標操作數的(在SIMD寄存器文件中,諸如在寄存器文件旁路網絡308中)一對分組局部結果的示例。格式501包括一對單精度元素,每一個單精度元素都包括39位第一元素包括一個符號位(S511)、IO個指數位(Ex519和Exp8512)、和28個尾數位(0515、一個明確位(explicitbit)J516、Mant23513和GRS517);第二元素包括一個符號位(S521)、10個指數位(Ex529和Exp8522)、和28個尾數位(O525、一個明確位J526、Mant23523和GRS527)。格式501包括一對標誌位IMDN514和524,用以分別標識第一元素和/或第二元素是否是非規格化元素。在格式501的一個實施例中,這對單精度元素的成分存儲在兩個分組數據寄存器中第一分組數據寄存器包括該對標誌位IMDN514和524、符號位S521(例如位63)、指數位Exp8522(例如位62—55)、尾數位Mant23523(例如位54—32)、符號位S511(例如位31)、指數位Exp8512(例如位30—23)、尾數位Mant23513(例如位22—0);第二分組數據寄存器包括兩個最高有效尾數位0525和J526(例如位63和59)、指數位Ex529(例如位62—61)、三個最低有效尾數位GRS527(例如位42—40)、兩個最高有效尾數位0515和J516(例如位34-33)、指數位Ex519(例如位32一31)和三個最低有效尾數位GRS517(例如位6—4)。會意識到,分組元素的成分作為一對分組局部結果存儲在這兩個分組數據寄存器中的具體位置可以由設計者來選擇,以便有利於將分組元素的成分從這對分組局部結果復用到浮點運算單元(例如SIMDFAU400和/或用於反規格化的SIMDFDU430)的內部浮點表示中。格式502表示用於SIMD浮點運算的分組源操作數的(在諸如FAU400的浮點運算單元中的)內部浮點表示的示例。類似于格式501,格式502包括一對單精度元素的內部表示,每一個單精度元素都包括39位第一元素包括一個符號位(S511)、10個指數位(Ex519和Exp8512)、和28個尾數位(0515、J516、Mant23513和GRS517);第二元素包括一個符號位(S521)、10個指數位(Ex529和Exp8522)、和28個尾數位(O525、J526、Mant23523和GRS527)。在格式502的一個實施例中,浮點運算單元的內部浮點表示存儲分開的指數用於第一元素的Ex519和Exp8512(例如位9一0),和用於第二元素的Ex529和Exp8522(例如位9一0)。在格式502的這個實施例中,可以將這兩個元素的尾數存儲為分組尾數具有O515(例如位67)、J516(例如位66)、Mant23513(例如位65—43)和GRS517(例如位42—40)的第一尾數;和具有0525(例如位31)、J526(例如位30)、Mant23523(例如位29—7)和GRS527(例如位6—4)的第二尾數;每一個元素的最低有效位中都填充了0(例如位39—32和位3—0)。圖5b示出了用於存儲分組浮點數的內部表示的示例性存儲格式503和504。用一個雙精度浮點數來圖示說明格式503和格式504,但會意識到格式503和格式504僅僅代表了典型的較寬分組浮點操作數(例如,代表了具有4個單精度元素或者2個雙精度元素的分組操作數,或者代表了具有8個單精度元素或4個雙精度元素的分組操作數)。格式503表示用於SIMD浮點運算的分組操作數的雙精度目標操作數元素的(在SIMD寄存器文件中,諸如在寄存器文件旁路網絡308中)一對分組局部結果的示例。格式503包括包含71位或更多位的雙精度元素的一對分組局部結果,其包括一個符號位(S531)、13個或更多個指數位(Ex539和Expll532)、和57個尾數位(O535、一個明確位J536、Mant52533和GRS537)。格式503包括與每一個雙精度元素相關聯的標誌位IMDN534,用於標識該元素是否是非規格化元素。會意識到,分組元素的成分作為一對分組局部結果存儲在這兩個分組數據寄存器中的具體位置可以由設計者來選擇,以便有利於將分組元素的成分從這對分組局部結果復用到浮點運算單元的內部浮點表示中。格式504表示用於SIMD浮點運算的分組操作數的分組源操作數元素的(在諸如FAU400的浮點運算單元中的)內部浮點表示的示例。類似于格式503,格式504包括包含71位或更多位的雙精度元素的內部表示,其包括一個符號位(S531)、13個或更多個指數位(Ex539和Exp11532)、和57個尾數位(O535、J536、Mant52533和GRS537)。在格式504的一個實施例中,浮點運算單元的內部浮點表示為每一個元素存儲分開的指數Ex539和Expl1532(例如位16—0)。在格式504的這個實施例中,分組元素的尾數可以存儲為分組尾數,第一個尾數具有0535(例如位67)、J536(例如位66)、Mant52533(例如位65—14)和GRS537(例如位14_11),每一個尾數的最低有效位中都填充了0(例如位10—0)。會意識到,使用內部存儲格式501—504,可以將分組浮點數據存儲在固定大小的寄存器中,同時可以在不必轉換為標量運算並且僅需要執行少量額外的微運算的情況下,明晰地處理SIMD浮點異常。還會意識到,格式501、502、503和/或504的實施例中,可以隱含地表示一些位(例如0525、J526、0535和/或J536)。圖6示出了處理601的一個實施例的流程圖,處理601用於處理SIMD浮點加法器中的特定數值異常。由處理塊來執行處理601及本文公開的其他處理,其中處理塊可以包括專用硬體,或者可以由通用機器或由專用機器或由二者的組合執行的軟體或固件操作代碼。處理601的一些實施例及本文公開的其他處理體現為機器可執行指令或狀態轉換。指令或狀態轉換可以用於使得以該指令或狀態轉換編程的通用處理器或專用處理器執行本發明的各個步驟。可以作為電腦程式產品或軟體或微代碼補丁(patch)來提供本發明,其可以包括在其上存儲了指令或狀態轉換的機器或計算機可讀介質,上述指令或狀態轉換可以用於編程計算機(或其他電子設備)來執行根據本發明的處理。這種軟體可以存儲在系統的存儲器中或者存儲在網絡伺服器上。類似地,可以經由網絡或藉助於其它計算機可讀介質來分發所述代碼。因此,機器可讀介質可以包括用於以機器(例如計算機)可讀的形式存儲或傳輸信息的任何機制,但不限於軟盤、光碟、緊緻盤只讀存儲器(CD-ROM)和磁光碟、只讀存儲器(ROM)、隨機存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)、磁卡或光卡、快閃記憶體存儲器、通過網際網路的傳輸、電、光、聲或其它形式的傳播信號。在處理塊611開始,在SIMDFAU的浮點加法器電路之一中接收用於SIMD浮點加法運算的分組操作數中的非規格化操作數元素。在處理塊612,確定用於該SIMD浮點加法運算的第二分組操作數中的相應的第二操作數元素是否也是非規格化的。在一個實施例中,可以由非規格化檢測電路(例如電路441-448中的一個)來檢測非規格化操作數元素和可能的相應的第二操作數元素。如果這個相應的第二操作數元素不是非規格化的,那麼就將該非規格化操作數元素和相應的第二操作數元素輸入到處理塊613中的對齊電路中,在對齊電路中,按照未偏移指數差,將非規格化操作數元素的尾數與相應的第二操作數元素的尾數對齊。否則,如果相應的第二操作數元素也是非規格化的,那麼該非規格化操作數元素的尾數已經與相應的第二操作數元素的尾數對齊,從而處理直接前進到處理塊614,在處理塊614中,由浮點加法器電路將這兩個尾數相加。在處理塊615,確定該加法的結果是否可以表示為該SIMD浮點加法運算的分組結果中的規格化浮點結果元素。如果是,就在處理塊616中對所得到的和數執行規格化。否則,就僅在處理塊617中簡單地對所得到的和數進行捨入,並在處理塊618中進行重新規格化(例如如果O等於1,就右移1位),並且當在處理塊619中存儲該SIMD浮點加法運算的分組結果時,可以將非規格化結果存儲為分組結果中的元素。會意識到,如果在處理塊615確定所得到的和數不能表示為規格化浮點結果元素,那麼存儲該SIMD浮點加法運算的分組結果的結果存儲電路還可以存儲一個標誌,該標誌將所得到的和數標識為該分組結果中的非規格化結果元素。會意識到,處理601的實施例可以在無需(例如來自微代碼的)額外輔助的情況下,處理SIMD執行單元(例如SIMD浮點執行單元316)中SIMD浮點運算中的諸如非規格化數之類的常見異常輸入。圖7示出了處理701的一個實施例的流程圖,處理701用於處理SIMD浮點乘法器中某些常見(屏蔽的)異常。在處理塊711,在SIMDFMU的浮點乘法器電路之一中接收SIMD浮點乘法運算的分組操作數中的異常操作數元素。在處理塊712,比較相應操作數元素的指數。在處理塊7B,基於這個比較,做出對於異常操作數元素的乘法的一些常見結果的預測。在處理塊714,如果結果被預測為0,處理就前進到處理塊717,在處理塊717中存儲預測值0作為結果。否則,處理就繼續在處理塊715中進行,在處理塊715中,如果結果被預測為是最小可表示的非規格化數,則處理就前進到處理塊717,在處理塊717中存儲所預測的最小可表示的非規格化值作為結果。否則,處理就可選地在處理塊716中進行,在處理塊716中,如果結果被預測為是無窮大,處理就前進到處理塊717,在處理塊717中存儲所預測的無窮大值作為結果。否則,在處理塊718,對接收到的操作數執行乘法,並根據本文所述的可替換技術(例如在處理801中的)來處理出現的任何異常。會意識到,處理701的實施例可以在無需額外的輔助(例如來自微代碼的)的情況下,預測並處理SIMD執行單元(例如SIMD浮點執行單元316)中的SIMD浮點運算的常見異常結果。在這種經常出現的情況中,基本上可以消除或減小用於處理異常情況的損耗。可替換地,在剩餘的情況中,可以在不轉換為標量運算並且僅需要執行少量額外的微代碼的情況下,可以使用這些技術來處理SIMD浮點異常。圖8示出了處理801的可替換實施例的流程圖,處理801用於處理執行SIMD浮點指令的處理器中非規格化浮點異常。在處理塊811,為SIMD浮點運算識別數值異常。響應於該數值異常,在必要時,在處理塊812啟動一個或多個可選的規格化微運算。對於處理801的一個實施例,如果要由SIMD浮點乘法器至少部分地執行SIMD浮點運算(例如,乘法、除法、平方根、或從單精度轉換為雙精度),就啟動規格化微運算。作為規格化微運算的結果,可以將分組操作數存儲為該SIMD浮點運算的包含非規格化數的原始分組操作數的規格化的偽內部浮點表示。對於處理801的一個實施例,如果要由SIMD浮點加法器執行SIMD浮點運算(例如,加法/減法、或從雙精度轉換為單精度),就無需該規格化微運算,因為SIMD浮點加法器能夠接受包含非規格化數的操作數作為輸入。在處理塊813,啟動第一SIMD微運算,用以為SIMD浮點運算產生第一分組局部結果,並啟動第二SIMD微運算,用以為SIMD浮點運算產生第二分組局部結果。會意識到,在處理801的一些實施例中,可以以任意順序執行第一SIMD微運算和第二SIMD微運算,只要它們產生為SIMD浮點運算的分組結果而存儲的一對分組局部結果。在處理塊814,啟動SIMD反規格化微運算,用以合併這對分組局部結果,並且如果需要,則對所合併的分組局部結果中的任何元素執行反規格化,以便產生具有相應非規格化元素的分組結果。對於SIMDFAU400的一些實施例,合併這對分組局部結果還可以包括在數值異常處理模式的階段一中規格化分組局部結果。在處理塊815,計算異常標誌(例如IMDN514和524或534),以便標識分組結果中的非規格化元素。在處理塊816,作為結果,將這些異常標誌與該SIMD浮點運算的分組結果一起進行存儲。會意識到,處理801的實施例提供了可以用於處理SIMD浮點異常的有效技術,其中所述SIMD浮點異常產生了非規格化數並需要重新執行。可以在不轉換為標量運算並且僅需要執行少量額外的微運算的情況下,透明地並行處理這種異常。以上描述旨在說明本發明的優選實施例。依據以上的論述,明顯的是,在快速增長並且不易預見到進一步發展的這個
技術領域:
中,本領域技術人員在不背離在所附權利要求及其等價物的範圍內的本發明的原理的情況下,可以在配置和細節中修改本發明。2權利要求1、一種用於處理執行單指令多數據(SIMD)指令的處理器中的浮點異常的方法,所述方法包括識別SIMD浮點運算的數值異常;啟動第一SIMD微運算,以便為所述SIMD浮點運算產生第一分組局部結果;啟動第二SIMD微運算,以便為所述SIMD浮點運算產生第二分組局部結果;啟動SIMD反規格化微運算,以便合併所述第一分組局部結果和所述第二分組局部結果,並且對所合併的第一和第二分組局部結果中的第一元素執行反規格化,以便產生具有非規格化元素的第三分組結果;為所述SIMD浮點運算存儲所述第三分組結果;以及設定用於標識在所述第一分組局部結果中的、所述第三分組結果的所述非規格化元素的標誌。2、如權利要求1所述的方法,還包括為所述SIMD浮點運算啟動對於所述第一分組局部結果的SIMD規格化微運算。3、如權利要求l所述的方法,其中,用於為所述SIMD浮點運算產生所述第一分組局部結果和所述第二分組局部結果的一組一個或多個分組源操作數以其原始表示寬度進行存儲。4、如權利要求1所述的方法,還包括如果要由SIMD浮點乘法器至少部分地執行所述SIMD浮點運算,就啟動SIMD規格化微運算。5、如權利要求3所述的方法,其中,所述SIMD規格化微運算將第二元素規格化為所述SIMD浮點運算的分組操作數的偽內部浮點表示,所述第二元素對應於所述SIMD浮點運算的所述分組操作數中的非規格化元素。6、如權利要求5所述的方法,其中,將一標誌與所述SIMD浮點運算的分組操作數的所述偽內部浮點表示一起進行存儲,該標誌用於將所述第二元素標識為對應於所述非規格化元素。7、一種製造產品,包括機器可訪問介質,包括用於為SIMD浮點運算處理數值異常的數據和指令,以使得所述數據和指令當由機器訪問時,使得所述機器啟動第一SIMD微運算,以便為所述SIMD浮點運算產生第一分組局部結果;啟動第二SIMD微運算,以便為所述SIMD浮點運算產生第二分組局部結果;啟動SIMD反規格化微運算,以便合併所述第一分組局部結果和所述第二分組局部結果,並且對所合併的第一和第二分組局部結果中的第一元素執行反規格化,以便產生具有非規格化元素的第三分組結果;為所述SIMD浮點運算存儲所述第三分組結果;以及設定用於標識在所述第一分組局部結果中的、所述第三分組結果的所述非規格化元素的標誌。8、如權利要求7所述的製造產品,所述機器可訪問介質包括數據和指令,所述數據和指令當由機器訪問時,使得所述機器為所述SIMD浮點運算啟動對於所述第一分組局部結果的SIMD規格化微運算。9、如權利要求7所述的製造產品,其中,用於為所述SIMD浮點運算產生所述第一分組局部結果和所述第二分組局部結果的一組一個或多個分組源操作數以其原始表示寬度進行存儲。10、如權利要求7所述的製造產品,所述機器可訪問介質包括數據和指令,所述數據和指令當由所述機器訪問時,^^得所述機器如果要由SIMD浮點乘法器至少部分地執行所述SIMD浮點運算,就啟動SIMD規格化微運算。11、如權利要求10所述的製造產品,其中,所述SIMD規格化微運算將第二元素規格化為所述SIMD浮點運算的分組操作數的偽內部浮點表示,所述第二元素對應於所述SIMD浮點運算的所述分組操作數中的非規格化元素。12、如權利要求ll所述的製造產品,其中,將一標誌與所述SIMD浮點運算的分組操作數的所述偽內部浮點表示一起進行存儲,該標誌用於將所述第二元素標識為對應於所述非規格化元素。13、一種用於執行SIMD浮點加法運算的裝置,所述裝置包括第一非規格化檢測電路,用以檢測用於所述SIMD浮點加法運算的第一分組操作數中的非規格化的第一元素;第二非規格化檢測電路,用以檢測用於所述SIMD浮點加法運算的第二分組操作數中的相應的第二元素是否也是非規格化的;對齊電路,用以如果所述相應的第二元素不是非規格化的,則按照未偏移指數差,將所述非規格化的第一元素的尾數與所述相應的第二元素的尾數對齊;加法器電路,用以將所述第一元素的尾數與所述第二元素的尾數相加,並且如果確定所得到的和數能夠表示為所述SIMD浮點加法運算的分組結果中的規格化結果元素,則規格化所得到的和數;以及結果存儲電路,用以存儲所述SIMD浮點加法運算的所述分組結果,並且如果確定所得到的和數不能表示為所述SIMD浮點加法運算的所述分組結果中的規格化結果元素,則存儲用於將所述相加的結果標識為所述分組結果中的非規格化結果元素的標誌。14、如權利要求13所述的裝置,具有數值異常處理模式,其中,為所述SIMD浮點加法運算存儲第一分組局部結果和第二分組局部結果。15、如權利要求13所述的裝置,包括規格化電路,用以對為所述SIMD浮點加法運算所存儲的所述第一分組局部結果進行規格化。16、一種處理器,包括寄存器文件,用以為SIMD浮點運算存儲多個分組浮點操作數和多個分組浮點結果;異常產生電路,用以識別第一SIMD浮點運算的數值異常;微代碼異常處理機,響應於所述數值異常,啟動第一SIMD微運算,以便為所述SIMD浮點運算產生第一分組結果;所述微代碼異常處理機,還響應於所述數值異常,啟動第二SIMD微運算,以便為所述SIMD浮點運算產生第二分組結果;所述微代碼異常處理機,還響應於所述數值異常,啟動SIMD反規格化微運算,以便合併所述第一分組結果和所述第二分組結果,對所合併的第一和第二分組結果中的元素執行反規格化,產生具有該被反規格化的元素的第三分組結果,為所述SIMD浮點運算存儲所述第三分組結果,以及設定用於標識在所述第一分組結果中的、所述第三分組結果的該被反規格化的第一元素的標誌。17、如權利要求16所述的處理器,其中,所述第一分組結果和所述第二分組結果包括一對分組局部結果,所述分組局部結果具有加法指數位和尾數位,所述加法指數位和尾數位支持產生或使用具有非規格化元素的分組數據的SIMD浮點運算。18、如權利要求16所述的處理器,還包括SIMD浮點加法單元,用以檢測用於SIMD浮點加法運算的第一分組操作數中的非規格化的第一元素;檢測用於所述SIMD浮點加法運算的第二分組操作數中的相應的第二元素是否也是非規格化的;如果所述相應的第二元素不是非規格化的,則按照未偏移指數差,將所述非規格化的第一元素的尾數與所述相應第二元素的尾數對齊;將所述第一元素的尾數與所述第二元素的尾數相加,並且如果確定所述相加的結果能夠表示所述SIMD浮點加法運算的分組結果中的規格化結果元素,則規格化所述相加的結果;存儲所述SMD浮點加法運算的所述分組結果;以及如果確定所述相加的結果能夠表示規格化結果元素,則設定用於將所述相加的結果標識為所述分組結果中的規格化結果元素的標誌。19、如權利要求16所述的處理器,所述微代碼異常處理機還響應於所述數值異常,在要由SIMD浮點乘法器至少部分地執行所述SIMD浮點運算的情況下,啟動SIMD規格化微運算。20、如權利要求19所述的處理器,其中,所述SIMD規格化微運算的所述分組結果以其原始表示寬度進行存儲。21、如權利要求19所述的處理器,其中,所述SIMD規格化微運算將第一元素規格化為所述SIMD浮點運算的分組操作數的偽內部浮點表示,所述第一元素對應於所述SIMD浮點運算的所述分組操作數中的非規格化元素。22、如權利要求21所述的處理器,其中,將一標誌與所述SIMD浮點運算的所述分組操作數的所述偽內部浮點表示一起進行存儲,該標誌用於將所述第一元素標識為對應於所述非規格化元素。全文摘要公開了用於處理執行單指令多數據(SIMD)指令的處理器中的浮點異常的方法和裝置。在一個實施例中,為SIMD浮點運算識別數值異常,啟動SIMD微運算,以便為所述SIMD浮點運算產生分組結果的兩個分組局部結果。啟動SIMD反規格化微運算,以便合併這兩個分組局部結果,並對所合併的分組局部結果中的一個或多個元素執行反規格化,以便為SIMD浮點運算產生具有一個或多個非規格化元素的分組結果。設定標誌,並將其與分組局部結果一起進行存儲,用以標識非規格元素。在一個實施例中,在SIMD浮點運算使用乘法時,啟動SIMD規格化微運算,以便在該SIMD浮點運算之前,產生規格化的偽內部浮點表示。文檔編號G06F15/80GK101620589SQ20091013964公開日2010年1月6日申請日期2009年6月30日優先權日2008年6月30日發明者A·格拉德斯坦,G·普裡布希,G·貝爾,S·芬克爾斯坦,T·龐斯,Z·斯佩貝爾申請人:英特爾公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀