常見的CPU指令集介紹


本文摘自網絡
 
一、X86
是微處理器執行的 計算機語言指令集,指一個intel通用計算機系列的標准編號縮寫,也標識一套通用的計算機指令集合,屬於CISC。
1.1、簡介
X86指令集是美國Intel公司為其第一塊16位CPU(i8086)專門開發的,美國IBM公司1981年推出的世界第一台PC機中的CPU?/FONT> i8088(i8086簡化版)使用的也是X86指令,同時電腦中為提高浮點數據處理能力而增加的X87芯片系列數學協處理器則另外使用X87指令,以后就將X86指令集和X87指令集統稱為X86指令集。雖然隨着CPU技術的不斷發展,Intel陸續研制出更新型的i80386、i80486直到今天的Pentium Ⅲ(以下簡為PⅢ)系列,但為了保證電腦能繼續運行以往開發的各類應用程序以保護和繼承豐富的軟件資源,所以Intel公司所生產的所有CPU仍然繼續使用X86指令集,所以它的CPU仍屬於X86系列。 另外除Intel公司之外,AMD和Cyrix等廠家也相繼生產出能使用X86指令集的CPU,由於這些CPU能運行所有的為Intel CPU所開發的各種軟件,所以電腦業內人士就將這些CPU列為Intel的CPU兼容產品。由於Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。當然在目前的台式(便攜式)電腦中並不都是使用X86系列CPU。
1.2、特點

是一種為了便於編程和提高記憶體訪問效率的芯片設計體系,包括兩大主要特點:一是使用微代碼,指令集可以直接在微代碼記憶體里執行,新設計的處理器,只需增加較少的電晶體就可以執行同樣的指令集,也可以很快地編寫新的指令集程式;二是擁有龐大的指令集,x86擁有包括雙運算元格式、寄存器到寄存器、寄存器到記憶體以及記憶體到寄存器的多種指令類型,為實現復雜操作,微處理器除向程序員提供類似各種寄存器和機器指令功能外,還通過存於只讀存儲器(ROM)中的微程序來實現極強的功能,微處理器在分析完每一條指令之后執行一系列初級指令運算來完成所需的功能。

1.3、優缺點

優點:x86指令體系的優勢體現在能夠有效縮短新指令的微代碼設計時間,允許實現CISC體系機器的向上兼容,新的系統可以使用一個包含早期系統的指令集合。另外微程式指令的格式與高階語言相匹配,因而編譯器並不一定要重新編寫。

缺點:

  • 通用寄存器規模小,x86指令集只有8個通用寄存器,CPU大多數時間是在訪問存儲器中的數據,影響整個系統的執行速度。而RISC系統往往具有非常多的通用寄存器,並采用了重疊寄存器窗口和寄存器堆等技術,使寄存器資源得到充分的利用
  • 解碼器影響性能表現,解碼器的作用是把長度不定的x86指令轉換為長度固定的類似於RISC的指令,並交給RISC內核。解碼分為硬件解碼和微解碼,對於簡單的x86指令只要硬件解碼即可,速度較快,而遇到復雜的x86指令則需要進行微解碼,並把它分成若干條簡單指令,速度較慢且很復雜。
  • 尋址范圍小,約束用戶需要。
  • 單個指令長度不同,運算能力強大,不過相對來說結構復雜,很難將CISC全部硬件集成在一顆芯片上。

1.4、匯編指令

  • 數據傳送指令
  • 數據傳送指令
  • 邏輯運算指令

  • 串操作指令

  • 控制轉移指令

  • 處理器控制指令

  • 保護方式指令

二、X64

又叫“x86-64”,簡稱為“x64”,是64位微處理器架構及其相應指令集的一種,也是Intel x86架構的延伸產品,也是屬於CISC。

2.1、簡介

“x86-64”1999由AMD設計,AMD首次公開64位集以擴充給IA-32,稱為x86-64(后來改名為AMD64)。其后也為英特爾所采用,現時英特爾稱之為“Intel 64”,在之前曾使用過Clackamas Technology (CT)、IA-32e及EM64T。外界多使用"x86-64"或"x64"去稱呼此64位架構,從而保持中立,不偏袒任何廠商。

2.2、特點

主要是與X86兼容,既有支持64位通用暫存器、64位整數及邏輯運算,以及64位虛擬地址。設計人員也為架構作出不少改進,部份重大改變如下:新增暫存器,地址闊度加長,“禁止運行”比特 (NX-bit): AMD64其中一個特色是擁有“禁止運行”(No-Execute, NX)的比特,可以防止蠕蟲病毒緩沖器滿溢的方式來進行攻擊(也稱:緩存溢出攻擊,Buffer Overflow)。

2.3、優缺點

由於源自X86,都是CSIC,所以具有X86差不多的缺點,跟X86比較,有如下優勢:

  • 64位尋址空間
  • 擴展的寄存器組
  • 開發者熟悉的命令集
  • 可以在64位結構的操作系統上運行32位程序
  • 可以直接使用32位操作系統

2.4、匯編指令

基本跟X86一樣,大多數X86指令在X64的64位模式下是有效的。在64位模式不常使用的指令不在支持。如:BCD碼算術指令。

三、ARM

曾稱進階精簡指令集機器(Advanced RISC Machine)更早稱作Acorn RISC Machine,是一個32位精簡指令集(RISC)處理器架構。還有基於ARM設計的派生產品,重要產品包括MarvellXScale架構和德州儀器OMAP系列。ARM家族占比所有32位嵌入式處理器的75%,成為占全世界最多數的32位架構。是為了提高處理器運行速度而設計的芯片體系,它的關鍵技術在於流水線操作即在一個時鍾周期里完成多條指令。屬於RISC。

3.1、簡介

一顆主要用於 路由器的Conexant ARM處理器是Acorn電腦公司(Acorn Computers Ltd)於1983年開始的開發計划。這個團隊由Roger Wilson和Steve Furber帶領,着手開發一種新架構,類似進階的MOS Technology 6502處理器。Acorn有一大堆建構在6502架構上的電腦,因此能設計出一顆類似的芯片即意味着對公司有很大的優勢。團隊在1985年時開發出ARM1 Sample版,而首顆"真正"的產能型ARM2於次年量產。ARM2具有32位的 數據總線、26位的 尋址空間,並提供64 Mbyte的尋址范圍與16個32-bit的 暫存器。這些暫存器其中有一顆做為(word大小)程式計數器,其前面6 bits和后面2 bits用來保存處理器狀態標記(Processor Status Flags)。ARM2可能是全世界最簡單實用的32位 微處理器,其僅容納了30,000個晶體管(相較於Motorola六年后的68000其包含了70,000顆)。主要應用於工控/嵌入式和手持設備等領域。
3.2、特點
ARM指令集架構的主要特點:一是體積小、低功耗、低成本、高性能;二是大量使用寄存器且大多數數據操作都在寄存器中完成,指令執行速度更快;三是尋址方式靈活簡單,執行效率高;四是指令長度固定,可通過多流水線方式提高處理效率。
3.3、優缺點
  • 體積小,低功耗,低成本,高性能;
  • 支持 Thumb ( 16 位) /ARM ( 32 位)雙指令集,能很好的兼容 8 位 /16 位器件; 大量使用寄存器,指令執行速度更快;大多數數據操作都在寄存器中完成;
  • 尋址方式靈活簡單,執行效率高;
  • 指令長度固定;
  • 流水線處理方式
  • Load_store結構:在RISC中,所有的計算都要求在寄存器中完成。而寄存器和內存的通信則由單獨的指令來完成。而在CSIC中,CPU是可以直接對內存進行操作的。
3.4、匯編指令
  • 算數和邏輯指令
  • 比較指令
  • 跳轉指令
  • 移位指令
  • 程序狀態字訪問指令存
  • 儲器訪問指令

四、其他

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游戲,而對其他商業圖形應用處理支持不足。
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處理器指令集的新篇章。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM