• 指令集架構

    編輯
    本詞條由“匿名用戶” 建檔。

    指令集架構

    編輯

    計算機科學中,一個指令集架構(ISA),也被稱為計算機體系結構,是一個抽象的模型一的計算機。執行由該ISA描述的指令的設備,例如中央處理單元(CPU),稱為實現。

    一般而言,指令集架構定義了支持的指令、數據類型、寄存器、管理主內存的硬件支持、基本特性(例如內存一致性、尋址模式、虛擬內存)以及一系列實現的輸入/輸出模型。

    指令集架構以不依賴于該實現的特征的方式指定在該ISA的實現上運行的機器代碼的行為,提供實現之間的二進制兼容性。這使得ISA的多種實現在性能、物理大小和貨幣成本(除其他外)等特征上不同,但能夠運行相同的機器代碼,因此性能較低、成本較低的機器可以更換成本更高、性能更高的機器,而無需更換軟件。它還支持微架構的演進ISA的實現,以便ISA的更新、更高性能的實現可以運行在前幾代實現上運行的軟件。

    如果操作系統為特定指令集架構維護了標準且兼容的應用程序二進制接口(ABI),則機器代碼將在該ISA和操作系統的未來實現上運行。但是,如果一個ISA支持運行多個操作系統,它并不能保證一個操作系統的機器代碼會在另一個操作系統上運行,除非xxx個操作系統支持運行為另一個操作系統構建的機器代碼。

    可以通過添加指令或其他功能,或添加對更大地址和數據值的支持來擴展ISA;擴展ISA的實現仍然能夠為沒有這些擴展的ISA版本執行機器代碼。使用這些擴展的機器代碼只會在支持這些擴展的實現上運行。

    它們提供的二進制兼容性使ISA成為計算中最基本的抽象之一。

    指令集架構的分類

    編輯

    指令集架構可以按多種不同方式分類。一個常見的分類是按體系結構復雜性。一個復雜指令集計算機(CISC)有許多專門的說明,其中一些可能只在實際程序中很少使用。甲精簡指令集計算機(RISC)通過有效地實現僅是經常在程序中使用的指令,而較不常見的操作被作為子程序來實現,其具有產生的額外處理器的執行時間通過很少使用偏移簡化了處理器。

    其他類型包括超長指令字(VLIW)架構,以及密切相關的長指令字(LIW)和顯式并行指令計算(EPIC)架構。這些架構通過讓編譯器負責指令發布和調度,以比RISC和CISC更少的硬件來開發指令級并行性。

    已經研究了更復雜的體系結構,例如最小指令集計算機(MISC)和一個指令集計算機(OISC)。這些是理論上重要的類型,但尚未商業化。

    指令集架構說明

    編輯

    機器語言是由離散的語句或指令構成的。在處理架構上,給定指令可以指定:

    • 操作碼(要執行的指令)例如添加、復制、測試
    • 任何顯式操作數:

    寄存器文字/常量值用于訪問內存的尋址模式

    更復雜的操作是通過組合這些簡單的指令來構建的,這些指令是按順序執行的,或者按照控制流指令的其他方式執行。

    指令類型

    許多指令集常見的操作示例包括:

    數據處理和內存操作

    • 設置一個寄存器到一個固定的恒定值。
    • 將數據從內存位置或寄存器復制到內存位置或寄存器(機器指令通常稱為move;但是,該術語具有誤導性)。用于存儲寄存器的內容、計算結果,或檢索存儲的數據以便稍后對其進行計算。通常稱為加載和存儲操作。
    • 從硬件設備讀取和寫入數據。

    算術和邏輯運算

    • 加、減、乘或除兩個寄存器的值,將結果放在一個寄存器中,可能在一個狀態寄存器中設置一個或多個條件代碼。
      • 增量,在某些ISA中遞減,在瑣碎的情況下保存操作數獲取。
    • 執行按位運算,例如,取一對寄存器中相應位的與和或取相,取寄存器中每一位的取反。
    • 比較寄存器中的兩個值(例如,查看一個值是否較小,或者它們是否相等)。
    • 用于對浮點數進行算術運算的浮點指令s。

    控制流操作

    • 分支到程序中的另一個位置并在那里執行指令。
    • 如果某個條件成立,則有條件地分支到另一個位置。
    • 間接分支到另一個位置。
    • 調用另一個代碼塊,同時保存下一條指令的位置作為返回點。

    協處理器指令

    • 從協處理器加載/存儲數據或與CPU寄存器交換數據。
    • 執行協處理器操作。

    復雜指令

    處理器可能在其指令集中包含“復雜”指令。單個“復雜”指令執行的操作可能需要在其他計算機上執行許多指令。此類指令的典型代表是執行多個步驟、控制多個功能單元或以其他方式出現在比給定處理器實現的大量簡單指令更大的范圍內的指令。“復雜”指令的一些示例包括:

    • 一次將多個寄存器傳入或傳出內存(尤其是堆棧)
    • 移動大內存塊(例如字符串復制或DMA傳輸)
    • 復雜整數和浮點運算(例如平方根,或超越函數,如對數,正弦,余弦等)
    • SIMD指令s,單個指令并行對許多同質值執行操作,可能在專用的SIMD寄存器中
    • 執行原子測試和設置指令或其他讀-修改-寫原子指令
    • 使用來自內存而不是寄存器的操作數執行ALU操作的指令

    復雜指令在CISC指令集中比在RISC指令集中更常見,但RISC指令集中也可能包含它們。RISC指令集通常不包括帶有內存操作數的ALU操作,或移動大內存塊的指令,但大多數RISC指令集包括SIMD或向量指令,它們同時對多條數據執行相同的算術運算。SIMD指令能夠在最短的時間內處理大型向量和矩陣。SIMD指令允許輕松并行化通常涉及聲音、圖像和視頻處理的算法。各種SIMD實現已以MMX等商品名推向市場,3D現在!,和AltiVec。

    指令編碼

    一條指令可能有多個字段,用于標識邏輯操作,還可能包括源地址和目標地址以及常量值。這是MIPS“立即添加”指令,它允許選擇源和目標寄存器并包含一個小常量。

    在傳統架構中,一條指令包含一個操作碼,用于指定要執行的操作,例如將內存的內容添加到寄存器——以及零個或多個操作數說明符,這些說明符可以指定寄存器、內存位置或文字數據。操作數說明符可能具有確定其含義的尋址模式,也可能位于固定字段中。在包括許多微碼架構的超長指令字(VLIW)架構中,在單個指令中指定多個同時運行的操作碼和操作數。

    一些特殊指令集沒有操作碼字段,例如傳輸觸發架構(TTA),只有操作數。

    所述第四虛擬機和其他“0操作數”指令集缺少任何操作數說明符字段,如一些堆疊機包括NOSC。

    條件指令通常有一個謂詞字段——幾位編碼特定條件以導致執行而不是不執行操作。例如,如果條件為真,條件分支指令將轉移控制,以便繼續執行程序的不同部分,如果條件為假,則不轉移控制,從而按順序繼續執行。有的指令集也有條件移動,這樣移動就會被執行,數據存放在目標位置,如果條件為真,不執行,目標位置不修改,如果條件為假。類似地,IBMz/Architecture有一個條件存儲指令。一些指令集在每條指令中都包含一個謂詞字段;這就是所謂的分支預測。

    指令集架構設計

    編輯

    指令集的設計是一個復雜的問題。微處理器的歷史有兩個階段。xxx個是CISC(復雜指令集計算機),它有許多不同的指令。然而,在1970年代,IBM等地方做了研究,發現集合中的許多指令都可以消除。結果是RISC(精簡指令集計算機),一種使用較小指令集的架構。更簡單的指令集可以提供更高速度、減小處理器尺寸和降低功耗的潛力。但是,更復雜的集合可能會優化常見操作,提高內存和緩存效率,或者簡化編程

    一些指令集設計者為某種系統調用或軟件中斷保留一個或多個操作碼。例如,MOSTechnology6502使用00H,ZilogZ80使用八個代碼C7,CF,D7,DF,E7,EF,F7,FFH而Motorola68000使用A000..AFFFH范圍內的代碼。

    如果指令集滿足Popek和Goldberg虛擬化要求,則快速虛擬機更容易實現。

    如果將內存的“未編程”狀態解釋為NOP,則在免疫感知編程中使用的NOP幻燈片更容易實現。

    在具有多個處理器的系統,無阻塞同步算法是實現容易得多如果該指令集包括用于一些諸如“支持讀取和加載”,“負載鏈路/條件存儲”(LL/SC)或“原子比較和交換”。

    指令集實現

    編輯

    任何給定的指令集都可以通過多種方式實現。實現特定指令集的所有方式都提供相同的編程模型,并且該指令集的所有實現都能夠運行相同的可執行文件。實現指令集的各種方式會在成本、性能、功耗、大小等之間做出不同的權衡。

    指令集架構

    在設計處理器的微架構時,工程師使用“硬連線”電子電路塊(通常單獨設計),例如加法器、多路復用器、計數器、寄存器、ALU等。然后通常使用某種寄存器傳輸語言來描述使用這種物理微架構對ISA的每條指令進行解碼和排序。有兩種基本方法可以構建控制單元來實現此描述(盡管許多設計使用中間方法或折衷方法):

    1. 一些計算機設計“硬連線”完整的指令集解碼和排序(就像微體系結構的其余部分一樣)。
    2. 其他設計采用微代碼例程或表格(或兩者)來執行此操作——通常作為片上ROM或PLA或兩者兼而有之(盡管歷史上曾使用單獨的RAM和ROM)。在西數MCP-1600是一個老例如,使用微碼專用,單獨的ROM。

    一些設計將硬連線設計和微代碼結合用于控制單元。

    一些CPU設計使用可寫控制存儲——它們將指令集編譯到CPU內的可寫RAM或閃存(例如Rekursiv處理器和ImsysCjip)、或FPGA(可重構計算)。

    ISA也可以由解釋器在軟件中模擬。自然地,由于解釋開銷,這比在仿真硬件上直接運行程序要慢,除非運行仿真器的硬件快一個數量級。今天,新ISA或微體系結構的供應商通常會在硬件實現準備就緒之前向軟件開發人員提供軟件模擬器。

    通常,實現的細節對為指令集選擇的特定指令有很大的影響。例如,指令流水線的許多實現只允許每條指令進行單個內存加載或內存存儲,從而導致加載-存儲架構(RISC)。再比如,一些早期的指令流水線實現方式導致了延遲槽。

    高速數字信號處理的需求已經推向相反的方向——迫使指令以特定方式執行。例如,為了足夠快地執行數字濾波器,典型的數字信號處理器(DSP)中的MAC指令必須使用一種可以同時獲取一條指令和兩個數據字的哈佛架構,并且需要一個單周期的乘法累加乘數。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/127546/

    (6)
    詞條目錄
    1. 指令集架構
    2. 指令集架構的分類
    3. 指令集架構說明
    4. 指令類型
    5. 數據處理和內存操作
    6. 算術和邏輯運算
    7. 控制流操作
    8. 協處理器指令
    9. 復雜指令
    10. 指令編碼
    11. 指令集架構設計
    12. 指令集實現

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久