CPU指令集你又知道多少?

指令集是存儲在CPU內部,對CPU運算進行指導和優化的硬程序。擁有這些指令集,CPU就可以更高效地運行。Intel主要有x86,EM64T,MMX,SSE,SSE2,SSE3,SSSE3 (Super SSE3),SSE4A,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX等指令集。AMD主要是x86,x86-64,3D-Now!指令集。

SSE指令集

Streaming SIMD Extensions

由於MMX指令並沒有帶來3D遊戲性能的顯著提升,1999年Intel公司在Pentium IIICPU產品中推出了數據流單指令序列擴展指令(SSE)。SSE兼容MMX指令,它可以通過SIMD(單指令多數據技術)和單時鐘週期並行處理多個浮點來有效地提高浮點運算速度。

在MMX指令集中,借用了浮點處理器的8個寄存器,這樣導致了浮點運算速度降低。而在SSE指令集推出時,Intel公司在Pentium III CPU中增加了8個128位的SSE指令專用寄存器。而且SSE指令寄存器可以全速運行,保證了與浮點運算的並行性。 [1]

SSE2指令集

在Pentium 4 CPU中,Intel公司開發了新指令集SSE2。這一次新開發的SSE2指令一共144條,包括浮點SIMD指令、整形SIMD指令、SIMD浮點和整形數據之間轉換、數據在MMX寄存器中轉換等幾大部分。其中重要的改進包括引入新的數據格式,如:128位SIMD整數運算和64位雙精度浮點運算等。為了更好地利用高速緩存。另外,在Pentium 4中還新增加了幾條緩存指令,允許程序員控制已經緩存過的數據。

[1]

SSE3指令集

相對於SSE2,SSE3又新增加了13條新指令,此前它們被統稱為pni(prescott new instructions)。13條指令中,一條用於視頻解碼,兩條用於線程同步,其餘用於複雜的數學運算、浮點到整數轉換和SIMD浮點運算。 [1]

SSE4指令集

SSE4又增加了50條新的增加性能的指令,這些指令有助於編譯、媒體、字符/文本處理和程序指向加速。

SSE4指令集將作為Intel公司未來“顯著視頻增強”平臺的一部分。該平臺的其他視頻增強功能還有Clear Video技術(CVT)和統一顯示接口(UDI)支持等,其中前者是對ATi AVIVO技術的回應,支持高級解碼、後處理和增強型3D功能。 [1]

3D Now!擴展指令集

3D Now!指令集是AMD公司1998年開發的多媒體擴展指令集,共有21條指令。針對MMX指令集沒有加強浮點處理能力的弱點,重點提高了AMD公司K6系列CPU對3D圖形的處理能力。由於指令有限,3D Now!指令集主要用於3D遊戲,而對其他商業圖形應用處理支持不足。

X86指令集

要知道什麼是指令集,還要從當今的X86架構的CPU說起。X86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,IBM1981年推出的世界第一臺PC機中的CPU—i8088(i8086簡化版)使用的也是X86指令,同時電腦中為提高浮點數據處理能力而增加的X87芯片系列數學協處理器則另外使用X87指令,

CPU指令集你又知道多少?

以後就將

X86指令集和X87指令集統稱為X86指令集。雖然隨著CPU技術的不斷髮展,Intel陸續研製出更新型的i80386、i80486直到今天,但為了保證電腦能繼續運行以往開發的各類應用程序以保護和繼承豐富的軟件資源,所以Intel公司所生產的所有CPU仍然繼續使用X86指令集,所以它的CPU仍屬於X86系列。由於Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。

EM64T指令集Intel公司的EM64T(Extended Memory 64 Technology)即64位內存擴展技術。該技術為服務器和工作站平臺應用提供擴充的內存尋址能力,擁有更多的內存地址空間,可帶來更大的應用靈活性,特別有利於提升音頻視頻編輯、CAD設計等複雜工程軟件及遊戲軟件的應用。常說的64位指的是AMD公司出的64位CPU,而EM64T則是Intel公司按照自己的意思理解出來的64位,也就是和AMD公司的64位對應的另一種叫法。

RISC指令集RISC指令集是以後高性能CPU的發展方向。它與傳統的CISC(複雜指令集)相對。相比而言,RISC的指令格式統一,種類比較少,尋址方式也比複雜指令集少。使用RISC指令集的體系結構主要有ARM、MIPS。

3DNow!+指令集

在原有的指令集基礎上,增加到52條指令,其中包含了部分SSE指令,該指令集主要用於新型的AMD CPU上。 [1]

AVX指令集

Intel AVX指令集在SIMD計算性能增強的同時也沿用了的MMX/SSE指令集。不過和MMX/SSE的不同點在於增強的AVX指令,從指令的格式上就發生了很大的變化。x86(IA-32/Intel 64)架構的基礎上增加了prefix(Prefix),所以實現了新的命令,也使更加複雜的指令得以實現,從而提升了x86 CPU的性能。

AVX並不是x86 CPU的擴展指令集,可以實現更高的效率,同時和CPU硬件兼容性也更好,並且也有著足夠的擴展空間,這都和其全新的命令格式系統有關。更加流暢的架構就是AVX發展的方向,換言之,就是擺脫傳統x86的不足,在SSE指令的基礎上AVX也使SSE指令接口更加易用。

針對AVX的最新的命令編碼系統,Intel也給出了更加詳細的介紹,其中包括了大幅度擴充指令集的可能性。比如Sandy Bridge所帶來的融合了乘法的雙指令支持。從而可以更加容易地實現512bits和1024bits的擴展。而在2008年末到2009年推出的meniikoaCPU“Larrabee(LARAB)”處理器,就會採用AVX指令集。從地位上來看AVX也開始了Intel處理器指令集的新篇章。


分享到:


相關文章: