天天看點

SSE指令集和3D Now指令集

SSE指令集

  SSE(Streaming SIMD Extensions,單指令多資料流擴充)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前,Intel公司就曾經通過各種管道公布過所謂的KNI(Katmai New Instruction)指令集,這個指令集也就是SSE指令集的前身,并一度被很多傳媒稱之為MMX指令集的下一個版本,即MMX2指令集。究其背景,原來"KNI"指令集是Intel公司最早為其下一代晶片命名的指令集名稱,而所謂的"MMX2"則完全是硬體評論家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式釋出過關于MMX2的消息。

  而最終推出的SSE指令集也就是所謂勝出的"網際網路SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多資料技術)浮點運算指令、12條MMX 整數運算增強指令、8條優化記憶體中連續資料塊傳輸指令。理論上這些指令對目前流行的圖像處理、浮點運算、3D運算、視訊處理、音頻處理等諸多多媒體應用起到全面強化的作用。S SE指令與3DNow!指令彼此互不相容,但SSE包含了3DNow!技術的絕大部分功能,隻是實作的方法不同。SSE相容MMX指令,它可以通過SIMD和單時鐘周期并行處理多個浮點資料來有效地提高浮點運算速度。

  在後來Intel為了應對AMD的3Dnow!+指令集,又在SSE的基礎上開發了SSE2,增加了一些指令,使得其P4處理器性能有大幅度提高。到P4設計結束為止,Intel增加了一套包括144條建立指令的SSE2指令集。像最早的SIMD擴充指令集,SSE2涉及了多重的資料目标上立刻執行一單個的指令(即SIMD,一個計算低工控最好的方法是讓每指令執行更多的工作)。最重要的是SSE2能處理128位和兩倍精密浮點數學運算。處理更精确浮點數的能力使SSE2成為加速多媒體程式、3D處理工程以及工作站類型任務的基礎配置。但重要的是軟體是否能适當的優化利用它。

  3D Now !指令集

  由AMD公司提出的3DNow!指令集應該說出現在SSE指令集之前,并被AMD廣泛應用于其K6-2 、K6-3以及Athlon(K7)處理器上。3DNow!指令集技術其實就是21條機器碼的擴充指令集。

  與Intel公司的MMX技術側重于整數運算有所不同,3DNow!指令集主要針對三維模組化、坐标變換 和效果渲染等三維應用場合,在軟體的配合下,可以大幅度提高3D處理性能。後來在Athlon上開發了Enhanced 3DNow!。這些AMD标準的SIMD指令和Intel的SSE具有相同效能。因為受到Intel在商業上以及Pentium III成功的影響,軟體在支援SSE上比起3DNow!更為普遍。Enhanced 3DNow!AMD公司繼續增加至52個指令,包含了一些SSE碼,因而在針對SSE做最佳化的軟體中能獲得更好的效能。

SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多資料技術)浮點運算指令、12條MMX 整數運算增強指令、8條優化記憶體中連續資料塊傳輸指令。理論上這些指令對目前流行的圖像處理、浮點運算、3D運算、視訊處理、音頻處理等諸多多媒體應用起到全面強化的作用

尤其是這一段,SSE指令裡面還有8條優化記憶體中連續資料塊傳輸的指令