計算機指令集的相關概念

songlh1234發表於2020-05-08

文章內容直接摘自百度百科https://baike.baidu.com/item/%E6%8C%87%E4%BB%A4%E9%9B%86/238130?fr=aladdin

計算機指令就是指揮機器工作的指示和命令,程式就是一系列按一定順序排列的指令,執行程式的過程就是計算機的工作過程。指令集,就是CPU中用來計算和控制計算機系統的一套指令的集合,而每一種新型的CPU在設計時就規定了一系列與其他硬體電路相配合的指令系統。而指令集的先進與否,也關係到CPU的效能發揮,它也是CPU效能體現的一個重要標誌。每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效的工具之一。從現階段的主流體系結構講,指令集可分為複雜指令集和精簡指令集兩部分 [1]  。

目錄

  1. 簡介
  2. 型別
  3. ▪ SSE指令集(Streaming SIMD Extensions)
  4. ▪ SSE2指令集
  1. ▪ SSE3指令集
  2. ▪ SSE4指令集
  3. ▪ 3D Now!擴充套件指令集
  4. ▪ X86指令集
  5. ▪ EM64T指令集
  6. ▪ RISC指令集
  1. ▪ AVX指令集
  2. AT指令集在移動衛星通訊中的應用

簡介

編輯

在計算機中,指示計算機硬體執行某種運算、處理功能的命令稱為指令。指令是計算機執行的最小的功能單位,而硬體的作用是完成每條指令規定的功能。一臺計算機上全部指令的集合,就是這臺計算機的指令系統。指令系統也稱指令集,是這臺計算機全部功能的體現。而人們設計計算機首要考慮的是它擁有的功能,也就是首先要按功能檔次設計指令集,然後按指令集的要求在硬體上實現。指令系統不僅僅是指令的集合,還包括全部指令的指令格式、定址方式和資料形式。所以,各計算機執行的指令系統不僅決定了機器所要求的能力,而且也決定了指令的格式和機器的結構。反過來說,不同結構的機器和不同的指令格式應該具有與之相匹配的指令系統。為此,設計指令系統時,要對指令格式、型別及操作功能給予應有的重視。軟體是為了使用計算機而編寫的各種系統和使用者的程式,程式由一個序列的計算機指令組成。從這個角度上說,指令是用於設計程式的一種計算機語言單位 [2]  

計算機的指令系統是指一臺計算機上全部指令的集合,也稱計算機的指令集。指令系統包括指令格式、定址方式和資料形式。一臺計算機的指令系統反映了該計算機的全部功能,機器型別不同,其指令系統也不同,因而功能也不同。指令系統的設定和機器的硬體結構密切相關,一臺計算機要有較好的效能,必須設計功能齊全、通用性強、內含豐富的指令系統,這就需要複雜的硬體結構來支援 [2]  。

常見的指令集有: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指令暫存器可以全速執行,保證了與浮點運算的並行性。

SSE2指令集

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

SSE3指令集

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

SSE4指令集

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

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

3D Now!擴充套件指令集

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

3DNow!+指令集:在原有的指令集基礎上,增加到52條指令,其中包含了部分SSE指令,該指令集主要用於新型的AMDCPU上。

X86指令集

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

以後就將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。MIPS 指令集是最早實現商用的精簡指令集(RISC)之一,上個世紀80年代初由史丹佛大學的研究小組研發,並在1984年成立MIPS計算機公司 [3]  。隨後MIPS 成為上世紀90年代最流行的指令集,一度與 x86 和ARM 指令集齊名。RISC具有設計更簡單、設計週期更短等優點,並可以應用更多先進的技術,開發更快的下一代處理器。MIPS是出現最早的商業RISC架構晶片之一,新的架構整合了所有原來MIPS指令集,並增加了許多更強大的功能。隨著移動網際網路的興起,MIPS 指令集逐漸衰落,公司也多次輾轉被收購。

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年推出的meniikoa CPU“Larrabee (LARAB)”處理器,就會採用AVX指令集。從地位上來看AVX也開始了Intel處理器指令集的新篇章。

AT指令集在移動衛星通訊中的應用

編輯

AT 命令集是由賀氏公司(Hayes)發明,賀氏公司起初是一家生產撥號調變解調器的公司,而 AT 命令集最初的用途正是為了控制撥號調變解調器,其控制協議採用文字格式,且每條指令以 AT 打頭,AT 指令集因此得名。隨著技術的不斷進步,低速的撥號調變解調器逐步開始滿足不了高頻寬、高速率的應用需求,因此逐步被市場所淘汰。賀氏公司也在這一技術升級換代的浪潮中所消失。但是 AT 指令卻得以儲存,其後,當時幾家主要的行動電話生產商諾基亞、摩托羅拉、HP和愛立信基於賀氏AT指令加以延伸擴充套件,針對行動電話中的 GSM模組控制,研製出了一套完整的 AT 指令。由此,之後GSM 07.05標準、GSM07.07標準均將AT指令納入其中。並且工業上常用PDU、GPRS控制等也均採用AT 指令來進行實際的控制。因此,AT 指令也成為了這些產品的事實標準。ATCoP,是 AT Command Processor的縮寫,它是負責軟體實現 AT 指令的模組,我們對 AT 指令的新增和修改都是通過 AT 命令處理器來實現的。其具體流程為 :當 AT 命令處理器接收到串列埠的 AT 命令,進行相應的解析工作,並根據具體的解析結果去 AT 命令表查詢是否存在對應的處理選項,若找到對應的項,則繼續執行相應

AT命令處理器的實現架構如圖所示AT命令處理器的實現架構如圖所示

的處理過程,並在處理結束後將得到的響應資料返回到串列埠,AT命令處理器的實現架構如圖所示。

SIO資料預處理模組的主要工作是將串列埠收到的AT命令先進行一個資料預處理,同時,將預處理所產生的非中斷(null-terminated)命令列傳送給 AT 命令解析模組。

AT 命令解析模組對傳送來的非中斷(null-terminated)命令列進行解析,並將每一個非中斷命令列對映成一個 token 結構,並將此token結構放入到佇列中,形成 AT命令表,等待AT命令處理模組進行查詢呼叫。

AT命令處理模組處理AT命令時,對AT命令表中的token結構逐一進行查詢,如果查詢到匹配選項,則繼續執行具體的處理函式,並將此token結構刪除。AT命令響應產生模組主要是格式化解析AT命令產生的響應資料,並將此格式化的響應傳送給資料終端裝置(Data Terminal Equipment :資料終端裝置)。

AT命令處理器的容錯機制為 :一次只進行一條AT指令的處理,並且如果AT命令存在錯誤,在SIO 資料預處理模組就會給出一個錯誤響應,併產生一個錯誤程式碼,不再對其進行處理。

常規的衛星行動通訊系統主要由衛星、衛星天線、功放及射頻模組、通道模組以及使用者組成。其中,地面站網路管理控制中心(Network Control Center,NCC)負責對整個衛星網內的各衛星地面站裝置進行入網、退網、建立衛星業務通道、各種業務流程等進行統一的管理控制。衛星地面站裝置包括衛星控制通道、衛星業務通道、射頻及功放裝置、衛星收發天線等。它負擔著整個衛星業務的業務流程控制,業務資料採集、調製解調等工作。衛星控制通道主要負責整個衛星地面站裝置的入網、退網等控制信令的傳輸控制,衛星業務通道負責對需要傳送的衛星業務資料或者衛星話音資料進行加密、調製解調成射頻訊號傳輸給射頻裝置,或者對接收到的射頻訊號進行調製解調、解密轉變成衛星業務資料或話音資料。射頻裝置以及衛星收發天線主要負責對經過通道處理的衛星資料進行傳送或者接收對端傳輸來的衛星射頻訊號。當衛星地面站裝置1的衛星使用者1想和衛星地面站裝置 N 的使用者 N 進行衛星通訊時,使用者1通過衛星電話終端或者衛星資料終端進行衛星業務發起,這時,衛星控制通道將對業務發起的控制信令進行處理,通過地面站網路管理控制中心,為兩個衛星地面站裝置建立空中鏈路業務通道,之後兩個地面站的使用者就可以進行需要的業務通訊了。當通訊結束時,一方使用者進行掛機操作,衛星控制終端將會發起業務結束控制信令,拆除兩個衛星地面站裝置之間的衛星鏈路。通過前面的簡介可以知道,在整個衛星行動通訊過程中,由於衛星通訊天生的時延等特性,要進行正常的衛星業務通訊,對每個衛星地面站裝置的入退網管控、話音或者衛星資料流程的發起、結束,衛星業務鏈路的建立、拆除等控制流程起著至關重要的作用,因此這裡我們將簡單可靠的 AT 指令集引入,作為衛星行動通訊系統的控制協議。這裡我們將衛星控制通道稱之為 AT命令解析器(AT Command Processor,AP),將衛星業務通道稱之為通道處理器(Channel Processor,CP)在衛星控制通道中使用 AT 指令來進行具體對本地面站裝置的的控制與解析、對衛星業務流程的發起管理與結束、以及對 CP 的設定與查詢等指令。在 CP 中主要接收來自 AP 的一些引數的設定與查詢命令,以及根據來自 AP 的 AT 指令進行業務通訊的具體流程 [4]  。

相關文章