共找到2條詞條名為SSE的結果 展開

SSE

SSE

SSE(Streaming SIMD Extensions)是英特爾在AMD的3D Now!發布一年之後,在其計算機晶元Pentium III中引入的指令集,是繼MMX的擴展指令集。SSE指令集提供了70條新指令。AMD後來在Athlon XP中加入了對這個新指令集的支持。

簡介


SSE是“網際網路數據流單指令序列擴展 ( Internet Streaming SIMD Extensions)的縮寫。SSE除保持原有的MMX指令外,又新增了70條指令,在加快浮點運算的同時,改善了內存的使用效率,使內存速度更快。它對遊戲性能的改善十分顯著,按Intel的說法,SSE對下述幾個領域的影響特別明顯:3D幾何運算及動畫處理、圖形處理(如Photoshop)、視頻編輯/壓縮/解壓(如MPEG和DVD)、語音識別以及聲音壓縮和合成等。
SSE由一組隊結構的擴展組成,用以提高先進的媒體和通信應用程序的性能。該擴展(包括新的寄存器、新的數據類型和新的指令)與單指令多數據(SIMD)技術相結合,有利於加速應用程序的運行。這個擴展與MMX技術相結合,將顯著地提高多媒體應用程序的效率。
典型的應用程序是:運動視頻,圖形和視頻的組合,圖像處理,音頻合成,語音的識別、合成與壓縮,電話、視頻會議和2D,3D圖形。對於需要有規律地訪問大量數據的應用程序,也可以從流式SIMD擴展的高性能預取和存儲方面獲得好處。
SSE定義了一種簡單靈活的軟體模式。這種新的模式引入了一種新的操作系統可視狀態。為了增強并行性,它增加了一組新的寄存器。現存的各種軟體,可以在不作修改的情況下繼續在增加了SSE的IA處理器上正確運行。SSE引入了一組新的、通用的浮點指令,可對8個128位SIMD浮點寄存器組進行操作。SSE 指令系統使得程序設計人員能夠去設計這樣一類的演演算法,即SSE指令和MMX指令兩者混合在一起的緊縮單精度浮點運算和緊縮整型運算的演演算法。SSE 提供了一些新的指令以控制整個MMX數據類型和32位數據類型的可高速緩存性,能夠將數據流直接送存儲器而不涉及Cache。SSE還提供了能夠預取數據的新指令。SSE對於IA編程環境而言,提供了如下的新擴展:
●8個SIMD浮點寄存器(XMM0~XMM7);
●SIMD浮點數據類型(128位緊縮浮點數);
●SSE指令系統。

浮點寄存器

IA的SSE提供了8個128位的通用寄存器,每個寄存器可以直接定址。這些寄存器都是新的,需要能使用該類寄存器的操作系統支持。
SIMD浮點寄存器保存著緊縮的128位數據。流式SIMD擴展指令訪問SIMD浮點寄存器時,直接使用寄存器名XMM0~XMM7。SIMD浮點寄存器可被用以完成數據計算,但不能用來定址存儲器。定址仍然使用整型寄存器來實現,並且採用標準的IA定址方式以及通用寄存器名。
MMX寄存器被映射為浮點寄存器。從MMX操作轉換到浮點操作需要執行EMMS指令。由於SIMD浮點寄存器是一個獨立的寄存器文件,因此MMX指令和浮點指令都能夠與流式SIMD擴展指令混合在一起,而不需要執行如EMMS指令那樣的特殊操作。

浮點數據類型

IA流式SIMD擴展的基本數據類型是緊縮單精度浮點操作數,即4個32位,單精度浮點(SP ~ FP)數。新的SIMD整型指令可以按緊縮位元組、緊縮字或者緊縮雙字的數據類型進行操作。新的預取指令是在32位元組或者更大的數據規模基礎之上工作的,它不管這些數據屬於何種類型。4個32位單精度浮點數編號為0~3,第0個數據位於寄存器的第32位之中。
SSE與存儲器之間的緊縮數據(單精度的浮點雙字)傳送,按64位的塊或者128位的塊來進行。但是,當按緊縮數據類型執行算術操作或者邏輯操作時,卻按SIMD浮點寄存器中4個獨立的雙字并行地進行操作。新的SIMD整型指令遵循MMX指令的慣例,按MMX寄存器的數據類型,而不是按SIMD浮點128位寄存器的數據類型進行操作。

SIMD執行方式

SSE使用單指令多數據(SIMD)技術,按照128位浮點寄存器中的單精度浮點數完成算術和邏輯操作。這種技術通過一條指令并行地處理多個數據元素,以提高軟體的速度性能。流式SIMD擴展支持緊縮的單精度浮點數據類型的操作,其SIMD整型指令支持緊縮整型數據類型(位元組、字、雙字)的操作。SSE 指令能夠在保護方式、實地址方式和虛擬8086方式下運行。

數據格式

SSE的緊縮128位數據,編號為0~127。位0為最低有效位(ISB),127為最高有效位( MSB)。當存儲數據時,128位的數據總是按“小端”法進行排序,即低地址的位元組為低有效位元組,高地址的位元組為高有效位元組。
Pentium II處理器的SIMD浮點指令以32位單精度浮點數據為單位進行操作。SIMD浮點寄存器中的值與存儲器中的128位數具有相同的格式。
當存儲器存儲實型數時,單精度實型值按4個連續的位元組存儲在存儲器中。128位的訪問方式用於128位的存儲器訪問SIMD浮點寄存器之間的128位傳送以及所有的邏輯展開/算術指令操作。32位的訪問方式則用於32位的存儲器訪問、SIMD浮點寄存器之間的32位傳送以及各種算術指令操作。其中,算術指令有128位操作的,也有32位操作的。

控制狀態寄存器

控制/狀態寄存器MXCSR用來屏蔽/開放數值異常處理、設置舍入方式、設置清零方式和觀察狀態標誌。該寄存器的內容可以通過LDMXCSR和FXRSTOR指令來載入,通過STMXSCRR和FXSAVE指令將它存入存儲器。
寄存器中的位5 ~位0表示是否檢測到SIMD浮點數值異常。它們是“粘貼( Sticky)"標誌,通過LDMXSCR指令對相應欄位寫0可以清除這些標誌。如果LDMXCSR指令清除了相應的屏蔽位之後又對相應的異常標誌置1,不會立即產生異常。只有在下一次SSE擴展處理時,出現了這種異常條件才會發生異常。SSE的每種異常只有一個異常標誌,因此一次緊縮數據(4個SP浮點數)操作時,不能為每個數據操作提供異常報告。在同一條指令之內出現多個異常條件時,則修改相關的異常標誌並且指示著這些條件中最後一個異常條件所發生的異常。在複位時,這些標誌將被清除。
● 位12~位7組成數值異常屏蔽。如果相應的位置1,則該種異常被屏蔽;如果相應的位被清除,則該種異常開放。在複位時,這些位置全被置為1,意味著屏蔽所有的數值異常。
● 位14~位13為舍入控制欄位。舍人控制除提供定向舍入、截尾舍入之外,還控制著公用的就近舍入方式。在複位時,舍入控制被置為就近舍入。
● 位15( FZ)用來啟動“清洗為0( Flush To Zero)"方式。在複位時,該位被清除,為禁止“清洗為0”方式。MXCSR寄存器的其他位(位31 ~ 位16和位6)定義為保留位並清除為0。試圖使用FXRSTOR或者LDMXCSR指令對保留位寫入非0值,將引起通用保護異常。 
啟動“清洗為0"方式,在下列情況下,會有如下的效果:
(1)回送0結果,且0值帶有真實結果的符號;
(2)精度異常標誌和下溢異常標誌置為1。
在應用程序中,下溢異常出現時,希望能以精度的輕微損失為代價而換得應用程序的快速運行,因此採用“清洗為0"方式。對於“清洗為0”的下溢是這樣定義的:當計算結果規格化之前,指數部分處於不可規格化範圍,則產生“清洗為0",而不管是否有精度損失。未屏蔽的下溢異常是早於“清洗為0”方式產生的,這就意味著,當下溢異常未被屏蔽時,產生了下溢條件的SSE指令,將調用異常處理程序,而不管“清洗為0"方式是否為“使能”狀態。
Intel在Pentium IV處理器中加入了SSE2指令集。與Pentium III處理器採用的SSE指令集相比,目前Pentium IV的整個SSE2指令集共有144條,其中包括原有的68組SSE指令及新增加76組SSE2的指令。全新的SSE2指令除了將傳統整數MMX寄存器也擴展成128位(128bit MMX)位,另外還提供了128位SIMD整數運算操作和128位雙精密度浮點運算操作。

指令集


概述

SSE(Streaming SIMD Extensions)是英特爾在AMD的3D Now!發布一年之後,在其計算機晶元Pentium III中引入的指令集,是MMX的超集。AMD後來在Athlon XP中加入了對這個指令集的支持。這個指令集增加了對8個128位寄存器XMM0-XMM7的支持,每個寄存器可以存儲4個單精度浮點數。使用這些寄存器的程序必須使用FXSAVE和FXRSTR指令來保持和恢復狀態。但是在Pentium III對SSE的實現中,浮點數寄存器又一次被新的指令集佔用了,但是這一次切換運算模式不是必要的了,只是SSE和浮點數指令不能同時進入CPU的處理線而已。
SSE2是Intel在P4的最初版本中引入的,但是AMD後來在Opteron 和Athlon 64中也加入了對它的支持。這個指令集添加了對64位雙精度浮點數的支持。這個指令集還增加了對CPU的緩存的控制指令。AMD對它的擴展增加了8個XMM寄存器,但是需要切換到64位模式(AMD64)才可以使用這些寄存器Intel後來在其EM64T架構中也增加了對AMD64的支持。
SSE3是Intel在P4的Prescott版中引入的指令集,AMD在Athlon 64的第五個版本中也添加了對它的支持。以及對超線程技術的支持。
SSE的概述圖
SSE的概述圖
SSE4指令集將給英特爾下一代平台帶來“相當大的視頻性能提升”。,其它視頻增強技術還包括CVT(明晰視頻技術)--英特爾對ATI Avivo的回應--和對UDI的支持。上述兩項技術基於英特爾965晶元組。其它英特爾官方文件把CVT技術定義為:支持高級解碼、擁有預處理和增強型3D處理能力。 SSE4指令集是Conroe架構所引入的新指令集。這項原本計劃應用於NetBurst微架構Tejas核心處理器之上的全新技術也隨著它的夭折最終沒能實現,這不能不說是個遺憾,但是SSE4指令集出現在了Conroe上又讓我們看到了希望。
SSE4指令集共包括16條指令,不過雖然扣肉處理器推出已經有一些時日。也許英特爾是基於特殊的考慮,僅讓少數合作軟體廠商取得數據,只是這種做法實在很沒有說服力就是了,天底下沒有哪家處理器廠商,希望自己新增的指令越少人用越好。
不過,從Intel Core微架構針對SSE指令所作出的修改被稱之為“Intel Advanced Digital Media Boost”技術來看,未來SSE4將更注重針對視頻方面的優化,我們認為SSE4主要改進之處可能將針對英特爾的Clear Video高清視頻技術及UDI介面規範提供強有力的支持。這兩項技術基於965晶元組,Intel的官方把Clear Video技術定義為:支持高級解碼、擁有預處理和增強型3D處理能力。值得一提的是,在SSE4中另一個重要的改進就是提供完整128位寬的SSE執行單元,一個頻率周期內可執行一個128位SSE指令。Conroe中SSE的ADDPS(4D 32bit共128bit,單精度加法)、MULPS(4D 32bit共128bit,單精度乘法)和SSE2的ADDPD(2D 64bit共128bit,雙精度加法)、MULPD(2D 64bit共128bit,雙精度乘法),這四條重要SSE算術指令的吞吐周期都降低到1個周期,真正做到了英特爾宣稱的每個周期執行一條128位向量加法指令和一條128位向量乘法指令的能力。
可以說 Conroe的向量單元已經全面引入了流水線化的設計。而支持SSE3的NetBurst微處理器架構雖然提供128位寬執行單元,但僅有一組,性能孰高孰低一目了然。更為重要的是,可見其應用範圍相當廣泛。
配合完整的128位SSE執行單元,以及龐大的執行單元數目,Conroe處理器可在一個頻率周期內,同時執行128位乘法、128位加法、128位數據載入與128位數據回存,或著是4個32位單倍浮點精確度乘法與4個32位單倍浮點精確度加法運算,這將使其更利於多媒體應用。因此,SSE4指令集能夠有效帶來系統性能上的提升,這一代在眾多測試中早已被證實。雖然其不會像當年SSE2指令集出現時那樣帶來巨大的性能提升,但是其在某些特殊方面的應用還是讓我們對它充滿了期待。

後續版本

SSE2
SSE2是Intel在Pentium 4處理器的最初版本中引入的,但是AMD後來在Opteron 和Athlon 64處理器中也加入了SSE2的支持。SSE2指令集添加了對64位雙精度浮點數的支持。這個指令集還增加了對CPU快取的控制指令。AMD對它的擴展增加了8個XMM寄存器,但是需要切換到64位模式(AMD64)才可以使用這些寄存器。
SSE3
SSE3是Intel在Pentium 4處理器的 Prescott 核心中引入的第三代SIMD指令集,AMD在Athlon 64的第五個版本,Venice核心中也加入了SSE3的支持。以及對超執行緒技術的支持。
SSSE3
SSSE3是Intel針對SSE3指令集的一次額外擴充,最早內建於Core 2 Duo處理器中。
SSE4
SSE4是Intel在Penryn核心的Core 2 Duo與Core 2 Solo處理器時,新增的47條新多媒體指令集,多媒體指令集,並內建在Phenom與Opteron等K10架構處理器中,不過無法與Intel的SSE4系列指令集相容。
SSE5
SSE5]是AMD為了打破Intel壟斷在處理器指令集的獨霸地位所提出的,SSE5初期規劃將加入超過100條新指令,其中最引人注目的就是三運算元指令(3-Operand Instructions)及熔合乘法累積(Fused Multiply Accumulate)。其中,三運算元指令讓處理器可將一個數學或邏輯函式庫,套用到運算元或輸入資料。藉由增加運算元的數量,一個 x86 指令能處理二至三筆資料, SSE5 允許將多個簡單指令彙整成一個指令,達到更有效率的指令處理模式。提升為三運算指令的運算能力,是少數 RISC 架構的水平。熔合乘法累積讓允許建立新的指令,有效率地執行各種複雜的運算。熔合乘法累積可結合乘法與加法運算,透過單一指令執行多筆重複計算。透過簡化程式碼,讓系統能迅速執行繪圖著色、快速相片著色、音場音效,以及複雜向量演算等效能密集的應用作業。SSE5最快將內建於AMD下一代Bulldozer核心。
AVX
AVX是Intel的SSE延伸架構,如IA16至IA32般的把暫存器XMM 128bit提升至YMM 256bit,以增加一倍的運算效率。此架構支持了三運算指令(3-Operand Instructions),減少在編碼上需要先複製才能運算的動作。在微碼部分使用了LES LDS這兩少用的指令作為延伸指令Prefix。
FMA
FMA是Intel的AVX擴充指令集,如名稱上熔合乘法累積(Fused Multiply Accumulate)的意思一樣。

寄存器


SSE加入新的8個128位寄存器(XMM0~XMM7)。而AMD發表的x86-64延伸架構(又稱AMD64)再加入額外8個寄存器。除此之外還有一個新的32位的控制/狀態寄存器(MXCSR)。不過只能在64位的模式下才能使用額外8個寄存器。
每個寄存器可以容納4個32位單精度浮點數,或是2個64位雙精度浮點數,或是4個32位整數,或是8個16位短整數,或是16個字元。整數運算能夠使用正負號運算。而整數SIMD運算可能仍然要與8個64位MMX寄存器一起運行。
因為操作系統必須要在進程切換的時候保護這些128位的寄存器狀態,除非操作系統去引導這些寄存器,否則默認值是不會去激活的。這表示操作系統必須要知道如何使用FXSAVE與FXRSTOR指令才能存儲x87與SSE寄存器的狀態。而在當時IA-32的主流操作系統很快的都加入了此功能。
由於SSE加入了浮點支持,SSE就比MMX更加常用。而SSE2加入了整數運算支持之後讓SSE更加的有彈性,當MMX變成是多餘的指令集,SSE指令集甚至可以與MMX併發運作,在某些時候可以提供額外的性能增進。
第一個支持SSE的CPU是Pentium III,在FPU與SSE之間共享運行支持。當編譯出來的軟體能夠交叉的同時以FPU與SSE運作,Pentium III並無法在同一個周期中同時運行FPU與SSE。這個限制降低了指令管線的有效性,不過XMM寄存器能夠讓SIMD與標量浮點運算混合運行,而不會因為切換MMX/浮點模式而產生性能的折損。

風向


SSE表示南偏東風向。氣象觀測上,除了用度表示風向外,還用十六方位表示,即將360°劃分為16個區間。在風向的十六方位表示中,SSE代表南偏東風向,介於東南和南之間。氣象上一般以正北為0°,SSE風向的區間是:146.25°—168.75°。

英語SSE


SSE
abbr.
南東南(south-south-east)

數學SSE


SSE(Sum of Squares for Error)即誤差項平方和。反映每個樣本各觀測值的離散狀況,又稱為組內平方和或殘差平方和。

A股SSE


即 交易所和指數
上海證券交易所Shanghai Stock Exchange
上證指數(SH000001)全稱 上海證券交易所股票價格綜合指數,即SSE Composite Index
另外還有上證180指數,SSE 180
上證50指數,SSE 50
A股指數,SSE A等指數系列,其中最早編製的為上證綜合指數。

獲得榮譽


2021年,位居2021福布斯全球企業2000強第634位。

比較


3D Now!是AMD公司用於對抗MMX的指令集技術,而SSE又是Intel公司發布的MMX擴展指令集。那麼,3D Now!和SSE相比又如何呢?
首先,它們有很多相似之處:
(1)兩種指令集都支持SIMD (單指令多數據流)操作。
(2)都支持在一個時鐘周期內執行四次浮點操作。它們在這一性能上旗鼓相當。
(3)都支持“平面”寄存器組結構。
(4)都兼容MMX指令集,可混合使用。也就是說在程序中可以自由地使用這些指令。
(5)都支持數據預取機制,也就是說它們都支持分支預測和推測執行技術。
其次,3D Now!比SSE具有如下優勢:
(1)發布時間早,支持者多。3D Now!技術的推出比SSE早了九個多月,擁有超過1000萬個K6-2 CPU的用戶基礎。而且3D Now!在發布時曾廣泛徵求了3D技術廣大廠商的意見,所以得到了包括微軟在內的很多軟硬體供應商的支持,湧現出了很多專為其優化的軟體、遊戲。而相比之下,對幾經改名的SSE的推出,廣大軟硬體廠商的反應並不太熱烈。
(2)不需要對現存的Windows操作系統做任何修改,因此實現極為容易。3D Now!的性能非常優秀。而SSE與操作系統有關,當時的Windows必須進行修改,以支持SSE的八個新寄存器。所以Windows 98的用戶需要使用軟體補丁,升級以支持SSE;而Windows NT的用戶則必須升級到Windows 2000才行。
第三,SSE比3D Now!具有如下優勢:
(1)由於Intel公司在計算機界的地位和Pentium II的巨大出貨量,Pentium 的用戶一定比 K6-2、Athlon 多得多,所以SSE舉足輕重。
(2)據Intel公司說,SSE提高了網際網路上的3D網頁的開發和運行效率。