fbpx
维基百科

SSE4

SSE4 (Streaming SIMD Extensions 4)是Intel Core微架構AMD K10中所使用的SIMD CPU指令集。它在2006年9月27日在英特爾開發者論壇上被宣佈,白皮書上的細節還較為模糊。[1]隨後在北京的2007年春季英特爾開發者論壇上的演示文稿中提供了47個指令的更精確細節。[2]SSE4與為前代英特爾64和IA-32架構微處理器編寫的軟體完全兼容。所有現有軟體均可正確運行,無需修改包含SSE4的微處理器,以及現有和新應用程式(包含SSE4)。[3]

SSE4子集

英特爾SSE4包含54條指令。由Penryn提供的包含47條指令的子集,在英特爾文檔中稱為SSE4.1。此外,SSE4.2是由剩餘7條指令組成的第二個子集,首次在基於NehalemCore i7中提供。英特爾將開發人員的反饋信息稱為指令集開發中的重要角色。

從基於Barcelona的處理器開始,AMD推出了SSE4a指令集,其中有原有的4條SSE4指令和4條新的SSE指令。在支持SSE4.1的英特爾處理器中沒有發現這些指令并且AMD處理器僅在基於Bulldozer的 FX 處理器上開始支援英特爾的 SSE4.1和SSE4.2 (完整的 SSE4 指令集)。在使用SSE4a時,AMD還引入了未對齊的SSE特性,這意味著未對齊的加載指令在對齊的地址上與對齊版本一樣快。它還允許禁止訪問內存的非加載SSE操作的對齊檢查。[4]英特爾後來在他們的Nehalem處理器中對未對齊的SSE進行了類似的速度改進,但是沒有在AVX之前引入非負載SSE指令的未對齊訪問。[5]

名稱混淆

Intel Core 2系列中引入的現在稱為SSSE3(補充流式SIMD擴展3)的部分在英特爾提出SSSE3名稱之前被媒體稱為SSE4。而在內部則把新的指令稱為Merom。 一些記者批評英特爾最初並沒有計畫給它們指定一個獨有的名稱。[6]英特爾最終清除了混淆,並保留了SSE4名稱以用於下一個指令集擴展。[7]

英特爾正在使用營銷術語HD Boost來指代SSE4。[8]

新的說明

與之前SSE的所有迭代不同,SSE4包含執行不特定於多媒體應用的操作的指令。它具有許多指令,其操作由一個常量字段和一組將XMM0作為隱式第三操作數的指令決定。

enryn公司的單週期shuffle引擎啟用了其中的幾條指令。(隨機操作重新排序寄存器中的字節被稱爲shuffle。)

指令 描述
MPSADBW 計算絕對差的八個偏移和,每次四個(即:|x0−y0|+|x1−y1|+|x2−y2|+|x3−y3|, |x0−y1|+|x1−y2|+|x2−y3|+|x3−y4|, …, |x0−y7|+|x1−y8|+|x2−y9|+|x3−y10|)。這個操作對一些HD 編解碼器來說很重要。並且允許在少於七個週期內計算8×8塊的差異。[9]三位直接運算元的一個位指示是否應從目標運算元中使用y0 .. y10或 y4 .. y14, 另外兩種方法是否應從源中使用x0..x3, x4..x7, x8..x11或x12..x15
PHMINPOSUW 將目標的底部無符號16位字設置為源中最小的無符號16位字,將底部的下一個字設置為源中該字的索引。
PMULDQ 在兩組四個壓縮整數中的兩組中進行壓縮有符號乘法,第一個和第三個壓縮4,給出兩個打包的64位結果。
PMULLD 打包有符號乘法,四個打包的32位整數組相乘,得到4個打包的32位結果。
DPPS;DPPD AOS(結構數組)數據的點積。這需要一個立即操作數,它由四個(或兩個DPPD)位組成,用於選擇輸入中的哪個條目進行乘法和累加,另外四個(或兩個DPPD)選擇是將0還是點積輸出的相應字段。
BLENDPS;BLENDPD;

BLENDVPS;BLENDVPD;

PBLENDVB;PBLENDW

基於(對於非V形式)立即操作數中的位以及(對於V形式)寄存器XMM0中的位的條件複製一個位置中的元素與另一個位置中的元素。
PMINSB;PMAXSB;

PMINUW;PMAXUW;

PMINUD;PMAXUD;

PMINSD;PMAXSD

不同整型操作數類型的最小/最大值壓縮。
ROUNDPS;ROUNDSS;

ROUNDPD;ROUNDSD

使用立即數操作數指定的四種舍入模式中的一種將浮點寄存器中的值整數到整數。
INSERTPS;PINSRB;

PINSRD / PINSRQ;

EXTRACTPS;PEXTRB;

PEXTRD / PEXTRQ

NSERTPS和PINSR指令從x86寄存器或存儲器位置讀取8,16或32位,並將其插入由立即數操作數給定的目標寄存器中的字段。EXTRACTPS和PEXTR從源寄存器中讀取一個字段,並將其插入x86寄存器或記憶體位置。例如,PEXTRD eax,[xmm0],1; EXTRACTPS [addr + 4 * eax],xmm1,1將xmm1的第一個字段存儲在由xmm0的第一個字段給出的位址中。
PMOVSXBW;PMOVZXBW;

PMOVSXBD;PMOVZXBD;

PMOVSXBQ;PMOVZXBQ;

PMOVSXWD;PMOVZXWD;

PMOVSXWQ ;PMOVZXWQ;

PMOVSXDQ;PMOVZXDQ

打包標誌/零擴展到更廣泛的類型。
PTEST 這與TEST指令相似,因為它將Z標誌設置為其操作數之間的AND結果:如果DEST AND SRC等於0,則設置ZF。另外,如果(NOT DEST)AND SRC等於零。

這相當於如果沒有設置SRC掩碼的位,則設置Z標誌,如果設置了SRC掩碼的所有位,則設置C標誌。

PCMPEQQ 四字節(64位)相等比較。
PACKUSDW 將帶符號的DWORD轉換為飽和的無符號WORD。
MOVNTDQA 從寫入組合存儲區有效讀取到SSE寄存器; 這對於從連接到存儲器總線的外設檢索結果很有用。

SSE4.2

SSE4.2添加了STTNI(字符串和文本新指令)[10],和每次對16個字節的兩個操作數執行字符搜索和比較的幾個新指令。這些設計(除其他外)旨在加快解析XML文檔。[11]這也增加了一個CRC32指令來計算循環冗餘校驗,比如可以在某些數據傳輸協議使用。這些指令首先在基於Nehalem的Intel Core i7產品系列中實現,並完成SSE4指令集。支持通過CPUID.01H:ECX.SSE42 [bit20]標誌指示。

指令 描述
CRC32 使用多項式0x11EDC6F41(或沒有高位,0x1EDC6F41)累加CRC32C值。
PCMPESTRI 打包比較顯式長度字符串,返回索引。
PCMPESTRM 打包比較顯式長度字符串,返回掩碼。
PCMPISTRI 打包比較隱式長度字符串,返回索引。
PCMPISTRM 打包比較隱式長度字符串,返回掩碼。
PCMPGTQ 比較已打包簽名的64位數據。For Greater Than

POPCNT和LZCNT

這些指令在整數而不是SSE寄存器上運行,因為它們不是SIMD指令,而是同時出現的指令。雖然它們是由AMD通過SSE4a指令集引入的,但卻往往被視為單獨的擴展,並且帶有自己的專用CPUID位以指示對其的支援。Intel以Nehalem微體系架構和LZCNT開始,實現了從Haswell微架構開始的POPCNT 。AMD從Barcelona微體系架構開始實施。

AMD稱這一對高級位操作Advanced Bit Manipulation (ABM)指令。

指令 描述
POPCNT 漢明權重(計數位數設置為1)。支持通過CPUID.01H:ECX.POPCNT [位23]標誌指示。
LZCNT Find First Set。支持通過CPUID.80000001H:ECX.ABM [位5]標誌指示。

除非輸入為0,否則lzcnt的結果等於bsr(位掃描反轉)。lzcnt產生32的結果,而bsr產生未定義的結果(並設置零標誌)。lzcnt的編碼與bsr的編碼相似,如果lzcnt在不支持它的CPU上執行,比如Haswell之前的Intel CPU,它將執行bsr操作,而不是產生無效的指令錯誤。

Trailing zeros可以使用現有的bsf指令進行計數。

SSE4a

AMD公司的Barcelona微體系架構中引入了SSE4a指令組。這些說明在英特爾處理器中不可用。支持通過CPUID.80000001H:ECX.SSE4A [Bit 6]標誌指示。

指令 描述
EXTRQ / INSERTQ 組合掩碼移位指令。
MOVNTSD / MOVNTSS 標量流存儲指令。

支援的CPU

引用

  1. ^ Schema Validation with Intel® Streaming SIMD Extensions 4 (Intel® SSE4) | Intel® Software. www.intel.com. [2018-06-16]. (原始内容于2009-05-30) (英语). 
  2. ^ (PDF). [2018-06-16]. (原始内容 (PDF)存档于2021-03-08). 
  3. ^ Intel SSE4 Programming Reference (PDF). [2018-06-16]. (原始内容 (PDF)于2020-02-15). 
  4. ^ 歡迎 | Community. developer.amd.com. [2018-06-16]. (原始内容于2016-08-03) (中文). 
  5. ^ AMD. Retrieved. . 2015-03-03. (原始内容存档于2015-04-02). 
  6. ^ Retrieved. . 2015-03-03. (原始内容存档于2013-10-15). 
  7. ^ (PDF). 2011-11-24 [2018-06-16]. (原始内容 (PDF)存档于2011-11-24). 
  8. ^ Intel | Data Center Solutions, IoT, and PC Innovation. Intel. [2018-06-16]. (原始内容于2013-02-07) (英语). 
  9. ^ Motion Estimation with Intel® Streaming SIMD Extensions 4 (Intel® SSE4) | Intel® Software. software.intel.com. [2018-06-16]. (原始内容于2018-06-16) (英语). 
  10. ^ Schema Validation with Intel® Streaming SIMD Extensions 4 (Intel® SSE4) | Intel® Software. software.intel.com. [2018-06-16]. (原始内容于2018-06-17) (英语). 
  11. ^ XML Parsing Accelerator with Intel® Streaming SIMD Extensions 4 (Intel® SSE4) | Intel® Software. software.intel.com. [2018-06-16]. (原始内容于2018-06-17) (英语). 

sse4, streaming, simd, extensions, 是intel, core微架構和amd, k10中所使用的simd, cpu指令集, 它在2006年9月27日在英特爾開發者論壇上被宣佈, 白皮書上的細節還較為模糊, 隨後在北京的2007年春季英特爾開發者論壇上的演示文稿中提供了47個指令的更精確細節, 與為前代英特爾64和ia, 32架構微處理器編寫的軟體完全兼容, 所有現有軟體均可正確運行, 無需修改包含的微處理器, 以及現有和新應用程式, 包含, 目录, 子集, 名稱混淆, 新的說明, p. SSE4 Streaming SIMD Extensions 4 是Intel Core微架構和AMD K10中所使用的SIMD CPU指令集 它在2006年9月27日在英特爾開發者論壇上被宣佈 白皮書上的細節還較為模糊 1 隨後在北京的2007年春季英特爾開發者論壇上的演示文稿中提供了47個指令的更精確細節 2 SSE4與為前代英特爾64和IA 32架構微處理器編寫的軟體完全兼容 所有現有軟體均可正確運行 無需修改包含SSE4的微處理器 以及現有和新應用程式 包含SSE4 3 目录 1 SSE4子集 2 名稱混淆 3 新的說明 3 1 SSE4 2 3 2 POPCNT和LZCNT 3 3 SSE4a 4 支援的CPU 5 引用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操作的對齊檢查 4 英特爾後來在他們的Nehalem處理器中對未對齊的SSE進行了類似的速度改進 但是沒有在AVX之前引入非負載SSE指令的未對齊訪問 5 名稱混淆 编辑在Intel Core 2系列中引入的現在稱為SSSE3 補充流式SIMD擴展3 的部分在英特爾提出SSSE3名稱之前被媒體稱為SSE4 而在內部則把新的指令稱為Merom 一些記者批評英特爾最初並沒有計畫給它們指定一個獨有的名稱 6 英特爾最終清除了混淆 並保留了SSE4名稱以用於下一個指令集擴展 7 英特爾正在使用營銷術語HD Boost來指代SSE4 8 新的說明 编辑與之前SSE的所有迭代不同 SSE4包含執行不特定於多媒體應用的操作的指令 它具有許多指令 其操作由一個常量字段和一組將XMM0作為隱式第三操作數的指令決定 enryn公司的單週期shuffle引擎啟用了其中的幾條指令 隨機操作重新排序寄存器中的字節被稱爲shuffle 指令 描述MPSADBW 計算絕對差的八個偏移和 每次四個 即 x0 y0 x1 y1 x2 y2 x3 y3 x0 y1 x1 y2 x2 y3 x3 y4 x0 y7 x1 y8 x2 y9 x3 y10 這個操作對一些HD 編解碼器來說很重要 並且允許在少於七個週期內計算8 8塊的差異 9 三位直接運算元的一個位指示是否應從目標運算元中使用y0 y10或 y4 y14 另外兩種方法是否應從源中使用x0 x3 x4 x7 x8 x11或x12 x15 PHMINPOSUW 將目標的底部無符號16位字設置為源中最小的無符號16位字 將底部的下一個字設置為源中該字的索引 PMULDQ 在兩組四個壓縮整數中的兩組中進行壓縮有符號乘法 第一個和第三個壓縮4 給出兩個打包的64位結果 PMULLD 打包有符號乘法 四個打包的32位整數組相乘 得到4個打包的32位結果 DPPS DPPD AOS 結構數組 數據的點積 這需要一個立即操作數 它由四個 或兩個DPPD 位組成 用於選擇輸入中的哪個條目進行乘法和累加 另外四個 或兩個DPPD 選擇是將0還是點積輸出的相應字段 BLENDPS BLENDPD BLENDVPS BLENDVPD PBLENDVB PBLENDW 基於 對於非V形式 立即操作數中的位以及 對於V形式 寄存器XMM0中的位的條件複製一個位置中的元素與另一個位置中的元素 PMINSB PMAXSB PMINUW PMAXUW PMINUD PMAXUD PMINSD PMAXSD 不同整型操作數類型的最小 最大值壓縮 ROUNDPS ROUNDSS ROUNDPD ROUNDSD 使用立即數操作數指定的四種舍入模式中的一種將浮點寄存器中的值整數到整數 INSERTPS PINSRB PINSRD PINSRQ EXTRACTPS PEXTRB PEXTRD PEXTRQ NSERTPS和PINSR指令從x86寄存器或存儲器位置讀取8 16或32位 並將其插入由立即數操作數給定的目標寄存器中的字段 EXTRACTPS和PEXTR從源寄存器中讀取一個字段 並將其插入x86寄存器或記憶體位置 例如 PEXTRD eax xmm0 1 EXTRACTPS addr 4 eax xmm1 1將xmm1的第一個字段存儲在由xmm0的第一個字段給出的位址中 PMOVSXBW PMOVZXBW PMOVSXBD PMOVZXBD PMOVSXBQ PMOVZXBQ PMOVSXWD PMOVZXWD PMOVSXWQ PMOVZXWQ PMOVSXDQ PMOVZXDQ 打包標誌 零擴展到更廣泛的類型 PTEST 這與TEST指令相似 因為它將Z標誌設置為其操作數之間的AND結果 如果DEST AND SRC等於0 則設置ZF 另外 如果 NOT DEST AND SRC等於零 這相當於如果沒有設置SRC掩碼的位 則設置Z標誌 如果設置了SRC掩碼的所有位 則設置C標誌 PCMPEQQ 四字節 64位 相等比較 PACKUSDW 將帶符號的DWORD轉換為飽和的無符號WORD MOVNTDQA 從寫入組合存儲區有效讀取到SSE寄存器 這對於從連接到存儲器總線的外設檢索結果很有用 SSE4 2 编辑 SSE4 2添加了STTNI 字符串和文本新指令 10 和每次對16個字節的兩個操作數執行字符搜索和比較的幾個新指令 這些設計 除其他外 旨在加快解析XML文檔 11 這也增加了一個CRC32指令來計算循環冗餘校驗 比如可以在某些數據傳輸協議使用 這些指令首先在基於Nehalem的Intel Core i7產品系列中實現 並完成SSE4指令集 支持通過CPUID 01H ECX SSE42 bit20 標誌指示 指令 描述CRC32 使用多項式0x11EDC6F41 或沒有高位 0x1EDC6F41 累加CRC32C值 PCMPESTRI 打包比較顯式長度字符串 返回索引 PCMPESTRM 打包比較顯式長度字符串 返回掩碼 PCMPISTRI 打包比較隱式長度字符串 返回索引 PCMPISTRM 打包比較隱式長度字符串 返回掩碼 PCMPGTQ 比較已打包簽名的64位數據 For Greater ThanPOPCNT和LZCNT 编辑 這些指令在整數而不是SSE寄存器上運行 因為它們不是SIMD指令 而是同時出現的指令 雖然它們是由AMD通過SSE4a指令集引入的 但卻往往被視為單獨的擴展 並且帶有自己的專用CPUID位以指示對其的支援 Intel以Nehalem微體系架構和LZCNT開始 實現了從Haswell微架構開始的POPCNT AMD從Barcelona微體系架構開始實施 AMD稱這一對高級位操作Advanced Bit Manipulation ABM 指令 指令 描述POPCNT 漢明權重 計數位數設置為1 支持通過CPUID 01H ECX POPCNT 位23 標誌指示 LZCNT Find First Set 支持通過CPUID 80000001H ECX ABM 位5 標誌指示 除非輸入為0 否則lzcnt的結果等於bsr 位掃描反轉 lzcnt產生32的結果 而bsr產生未定義的結果 並設置零標誌 lzcnt的編碼與bsr的編碼相似 如果lzcnt在不支持它的CPU上執行 比如Haswell之前的Intel CPU 它將執行bsr操作 而不是產生無效的指令錯誤 Trailing zeros可以使用現有的bsf指令進行計數 SSE4a 编辑 AMD公司的Barcelona微體系架構中引入了SSE4a指令組 這些說明在英特爾處理器中不可用 支持通過CPUID 80000001H ECX SSE4A Bit 6 標誌指示 指令 描述EXTRQ INSERTQ 組合掩碼移位指令 MOVNTSD MOVNTSS 標量流存儲指令 支援的CPU 编辑Intel Intel Core 2處理器 45納米 支援SSE4 1 Intel Core i3 i5 i7 i9 支援SSE4 1 SSE4 2 Intel Pentium和Intel Celeron Sandy Bridge微架構和以後 支援SSE4 1 SSE4 2 AMD 基於AMD K10的處理器 支持SSE4a 基於AMD 12h AMD Llano AMD 14h AMD Bobcat 的處理器 支持SSE4a 基於AMD 15h AMD Bulldozer AMD Piledriver AMD Excavator AMD Steamroller 的處理器 支持SSE4 1 SSE4 2和SSE4a 基於AMD 16h AMD Jaguar AMD Puma 的處理器 支持SSE4 1 SSE4 2和SSE4a 基於AMD Zen的處理器 支持SSE4 1 SSE4 2和SSE4a VIA Nano處理器 支持SSE4 1 引用 编辑 Schema Validation with Intel Streaming SIMD Extensions 4 Intel SSE4 Intel Software www intel com 2018 06 16 原始内容存档于2009 05 30 英语 Tuning for Intel SSE4 for the 45nm Next Generation Intel Core Microarchitecture PDF 2018 06 16 原始内容 PDF 存档于2021 03 08 Intel SSE4 Programming Reference PDF 2018 06 16 原始内容存档 PDF 于2020 02 15 歡迎 Community developer amd com 2018 06 16 原始内容存档于2016 08 03 中文 AMD Retrieved Barcelona Processor Feature SSE Misaligned Access 2015 03 03 原始内容存档于2015 04 02 Retrieved Inside Intel Nehalem Microarchitecture 2015 03 03 原始内容存档于2013 10 15 Extending the World s Most Popular Processor Architecture PDF 2011 11 24 2018 06 16 原始内容 PDF 存档于2011 11 24 Intel Data Center Solutions IoT and PC Innovation Intel 2018 06 16 原始内容存档于2013 02 07 英语 Motion Estimation with Intel Streaming SIMD Extensions 4 Intel SSE4 Intel Software software intel com 2018 06 16 原始内容存档于2018 06 16 英语 Schema Validation with Intel Streaming SIMD Extensions 4 Intel SSE4 Intel Software software intel com 2018 06 16 原始内容存档于2018 06 17 英语 XML Parsing Accelerator with Intel Streaming SIMD Extensions 4 Intel SSE4 Intel Software software intel com 2018 06 16 原始内容存档于2018 06 17 英语 取自 https zh wikipedia org w index php title SSE4 amp oldid 70209020, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。