text: SSE4 (Streaming SIMD Extensions 4)是Intel Core微架構和AMD K10中所使用的SIMD CPU指令集。它在2006年9月27日在英特爾開發者論壇上被宣佈，白皮書上的細節還較為模糊。隨後在北京的2007年春季英特爾開發者論壇上的簡報中提供了47個指令的更精確細節。SSE4與為前代英特爾64和IA-32架構微處理器編寫的軟體完全相容。所有現有軟體均可正確執行，無需修改包含SSE4的微處理器，以及現有和新應用程式。SSE4子集.英特爾SSE4包含54條指令。由Penryn提供的包含47條指令的子集，在英特爾文件中稱為SSE4.1。此外，SSE4.2是由剩餘7條指令組成的第二個子集，首次在基於Nehalem的Core i7中提供。英特爾將開發人員的反饋資訊稱為指令集開發中的重要角色。從基於Barcelona的處理器開始，AMD推出了SSE4a指令集，其中有原有的4條SSE4指令和4條新的SSE指令。在支援SSE4.1的英特爾處理器中沒有發現這些指令並且AMD處理器僅在基於Bulldozer的 FX 處理器上開始支援英特爾的 SSE4.1和SSE4.2 (完整的 SSE4 指令集)。在使用SSE4a時，AMD還引入了未對齊的SSE特性，這意味著未對齊的載入指令在對齊的地址上與對齊版本一樣快。它還允許禁止訪問記憶體的非載入SSE操作的對齊檢查。英特爾後來在他們的Nehalem處理器中對未對齊的SSE進行了類似的速度改進，但是沒有在AVX之前引入非負載SSE指令的未對齊訪問。名稱混淆.在Intel Core 2系列中引入的現在稱為SSSE3的部分在英特爾提出SSSE3名稱之前被媒體稱為SSE4。而在內部則把新的指令稱為Merom。 一些記者批評英特爾最初並沒有計畫給它們指定一個獨有的名稱。英特爾最終清除了混淆，並保留了SSE4名稱以用於下一個指令集擴充套件。英特爾正在使用營銷術語HD Boost來指代SSE4。新的說明.與之前SSE的所有迭代不同，SSE4包含執行不特定於多媒體應用的操作的指令。它具有許多指令，其操作由一個常量欄位和一組將XMM0作為隱式第三運算元的指令決定。enryn公司的單週期shuffle引擎啟用了其中的幾條指令。SSE4.2.SSE4.2添加了STTNI旨在加快解析XML文件。這也增加了一個CRC32指令來計算迴圈冗餘校驗，比如可以在某些資料傳輸協議使用。這些指令首先在基於Nehalem的Intel Core i7產品系列中實現，並完成SSE4指令集。支援透過CPUID.01H：ECX.SSE42 [bit20]標誌指示。POPCNT和LZCNT.這些指令在整數而不是SSE暫存器上執行，因為它們不是SIMD指令，而是同時出現的指令。雖然它們是由AMD透過SSE4a指令集引入的，但卻往往被視為單獨的擴充套件，並且帶有自己的專用CPUID位以指示對其的支援。Intel以Nehalem微體系架構和LZCNT開始，實現了從Haswell微架構開始的POPCNT 。AMD從Barcelona微體系架構開始實施。AMD稱這一對高階位操作Advanced Bit Manipulation 指令。除非輸入為0，否則lzcnt的結果等於bsr。lzcnt的編碼與bsr的編碼相似，如果lzcnt在不支援它的CPU上執行，比如Haswell之前的Intel CPU，它將執行bsr操作，而不是產生無效的指令錯誤。Trailing zeros可以使用現有的bsf指令進行計數。SSE4a.AMD公司的Barcelona微體系架構中引入了SSE4a指令組。這些說明在英特爾處理器中不可用。支援透過CPUID.80000001H：ECX.SSE4A [Bit 6]標誌指示。
metadata: erhwenkuo/wikipedia-zhtw
metadata: SSE4
metadata: https://zh.wikipedia.org/wiki?curid=6187875