指令系統
文章目錄
- 指令系統
- 7.1 機器指令
- 7.1.1 指令的一般格式
- 7.1.2 指令字長
- 7.2 操作數類型和操作類型
- 7.2.1 操作數類型
- 7.2.2 數據在存儲器中的存放方式
- 7.2.3 操作類型
- 7.3 尋址方式
- 7.3.1 指令尋址
- 7.3.1.1 順序尋址
- 7.3.1.2 跳躍尋址
- 7.3.2 數據尋址
- 7.3.2.1 立即尋址
- 7.3.2.2 直接尋址
- 7.3.2.3 隱含尋址
- 7.3.2.4 間接尋址
- 7.3.2.5 寄存器尋址
- 7.3.2.6 寄存器(間接)尋址
- 7.3.2.7 基址尋址
- 7.3.2.8 變址尋址
- 7.3.2.9 相對尋址
- 7.3.2.10 堆棧尋址
- 7.4 指令格式舉例
- 7.4.1 設計指令時應考慮的各種因素
- 7.4.2 舉例
- 7.5 RISC技術
- 7.5.1 RISC的產生和發展
- 7.5.2 RISC的主要特征
- 7.5.3 CISC的主要特征
- 7.5.4 RISC與CISC的比較
7.1 機器指令
計算機就是連續執行每一條機器語句而實現全自動工作的。
把每一條機器語言的語句稱為機器指令;
又將全部機器指令的集合稱為機器的指令系統 / 指令集。
指令集就是計算機系統軟件和硬件的交界面,軟件通過指令系統告訴計算機的硬件做什么操作,計算機的硬件通過指令系統把運算結果和硬件的狀態返回給軟件。
7.1.1 指令的一般格式
指令是由操作碼和地址碼兩部分組成的
-
操作碼
操作碼用來指明該指令所要完成的操作。通常,其位數反映了機器的操作種類, 也即機器允許的指令條數,如操作碼占7位,則該機器最多包含27=128 條指令
實際上操作碼的作用遠遠不止反映機器做什么操作,很多機器的指令集當中,操作碼還要指出對什么樣的數據進行操作,例如IBM360的指令系統當中,同樣是加法操作,因為參與加法操作的數據的類型不一樣,表示的基值不一樣,一個加法指令實際上是八條指令,分別對應了對定點數加法、浮點數加法、在浮點數加法中尾數的基值是二進制還是十六進制等等。
另外在有些機器的指令集當中,操作碼還指出了操作數的尋址方式。-
固定長
- 將操作碼集中放在指令字的一個字段內。這種格式便于硬件設計,指令譯碼時間短,廣泛用于字長較長的、大中型計算機和超級小型計算機以及RISC(Reduced Instruction Set Computer)中。
-
可變長
-
操作碼長度不固定會增加指令譯碼和分析的難度,使控制器的設計復雜。通常采用擴展操作碼技術,使操作碼的長度隨地址數的減少而增加,不同地址數的指令可以具有不同長度的操作
碼,從而在滿足需要的前提下,有效地縮短指令字長。
-
-
-
地址碼
7.1.2 指令字長
?
7.2 操作數類型和操作類型
7.2.1 操作數類型
機器中常見的操作數類型有地址、數字、字符、邏輯數據等。
? (1)地址
? 地址實際上也可看做是一種數據,在許多情況下要計算操作數的地址。地址可被認為是一個無符號的整數。
? (2)數字
? 計算機中常見的數字有定點數、浮點數和十進制數
? (3)字符
? 普遍采用 ASCI 碼,還有其他一些字符編碼 - 擴展BCD交換碼等。
? (4)邏輯數據
? 作邏輯運算,此時n個0和1的組合不是被看做算術數字,而是被看做邏輯數。
7.2.2 數據在存儲器中的存放方式
字節編址
7.2.3 操作類型
-
數據傳送
- - - - - 源 寄存器 寄存器 存儲器 存儲器 目的 寄存器 存儲器 寄存器 存儲器 例如 MOVE STORE LOAD MOVE MOVE MOVE PUSH POP 置“1”,清“0”
-
算術邏輯操作
加、減、乘、除、增1、減1、求補、浮點運算、十進制運算、與、或、非、異或、位操作、位測試、位清除、位求反
如 8086ADD SUB MUL DIV INC DEC CMP NEG
AAA AAS AAM AAD
AND OR NOT XOR TEST -
移位
移位可分為算術移位、邏輯移位和循環移位(帶進位和不帶進位)三種。
算術移位和邏輯移位分別可實現對有符號數和無符號數乘以2n(左移)或整除以2n(右移)的運算,并且移位操作所需時間遠比乘除操作執行時間短,因此,移位操作經常被用來代替簡單的乘法和除法運算。
-
轉移
(1)無條件轉移
無條件轉移不受任何條件約束,可直接把程序轉移到下一條需執行指令的地址。
例如“JMP X"其功能是將指令地址無條件轉至X
(2)條件轉移
(3)調用與返回
?
(4)陷阱(Trap)與陷阱指令
-
輸入輸出
并不是每一種指令集都有輸入輸出指令,如果I/O端口的編址空間被作為內存編址空間的一部分,那么這個指令集就不需要輸入輸出指令,直接用訪問內存的指令就可以對外部設備進行輸入輸出,如果外部設備有自己的獨立地址空間單獨編址,就需要單獨的輸入輸出指令對外設進行訪問。
?
-
其他
其他包括 等待指令、停機指令、空操作指令、開中斷指令、關中斷指令、條件碼指令 等。
為了適應計算機的信息管理、數據處理及辦公自動化等領域的應用,有的計算機還設有 非數值處理指令 。如字符串傳送、字符串比較、字符串查詢及字符串轉換等。
在多用戶、多任務的計算機系統中,還設有 特權指令 ,這類指令只能用于操作系統或其他系統軟件,用戶是不能使用的。
在有些大型或巨型機中,還設有 向量指令 ,可對整個向量或矩陣進行求和、求積運算。
在多處理器系統中還配有專門的 多處理機指令 。
7.3 尋址方式
確定本條指令的操作數地址
下一條要執行指令的指令地址
7.3.1 指令尋址
7.3.1.1 順序尋址
取完一條指令后,順序的取下一條指令。
內存單元的編址單位是字節,每一條指令的長度是32位(四個字節),順序存儲每次加的值就是4,
如果指令的長度是64位,則PC+8。
如果指令是可變長度的話,這個1會更加復雜。
7.3.1.2 跳躍尋址
由轉移指令給出下一條指令地址
7.3.2 數據尋址
?
7.3.2.1 立即尋址
?
7.3.2.2 直接尋址
?
7.3.2.3 隱含尋址
7.3.2.4 間接尋址
7.3.2.5 寄存器尋址
?
7.3.2.6 寄存器(間接)尋址
7.3.2.7 基址尋址
基址寄存器可采用隱式的和顯式的兩種。
所謂隱式,是在計算機內專門設有一個基址寄存器BR,使用時用戶不必明顯指出該基址寄存器,只需由指令的尋址特征位反映出基址尋址即可。
顯式是在一組通用寄存器里,由用戶明確指出哪個寄存器用做基址寄存器,存放基地址。
- 采用專用寄存器作為基址寄存器,有效地址是基址寄存器中的內容加上形式地址(形式地址實際上就是一個偏移量)。
?
- 采用通用寄存器作基址寄存器
7.3.2.8 變址尋址
7.3.2.9 相對尋址
7.3.2.10 堆棧尋址
在計算機的硬件實現的棧是高地址向低地址方向,即棧頂是低地址,棧底是高地址。
7.4 指令格式舉例
7.4.1 設計指令時應考慮的各種因素
指令系統的 兼容性
其他因素
操作類型 包括指令個數及操作的難易程度
數據類型 確定哪些數據類型可參與操作
指令格式 指令字長是否固定操作碼位數,是否采用擴展操作碼技術地址碼位數,地址個數,尋址方式類型
尋址方式 指令尋址、操作數尋址
寄存器個數 寄存器的多少直接影響指令的執行時間
7.4.2 舉例
-
PDP - 8
-
PDP - 11
-
IBM 360
-
Intel8086
7.5 RISC技術
7.5.1 RISC的產生和發展
RISC (Reduced Instruction Set Computer ) 精簡指令系統計算機
CISC(Complex Instruction Set Computer ) 復雜指令系統計算機
RISC技術 —— 80 - 20 規律
- 典型程序中80%的語句僅僅使用處理機中20%的指令
- 執行頻度高的簡單指令,因復雜指令的存在,執行速度無法提高
- 能否用20%的簡單指令組合不常用的80%的指令功能
7.5.2 RISC的主要特征
- 選用使用頻度較高的一些簡單指令復雜指令的功能由簡單指令來組合
- 指令 長度固定、指令格式種類少、尋址方式少
- 只有 LOAD /STORE 指令訪存
- CPU 中有多個 通用寄存器
- 采用 流水技術 一個時鐘周期內完成一條指令
- 采用 組合邏輯 實現控制器
7.5.3 CISC的主要特征
- 系統指令復雜龐大,各種指令使用頻度相差大指令
- 長度不固定、指令格式種類多、尋址方式多
- 訪存 指令 不受限制
- CPU 中設有 專用寄存器
- 大多數指令需要 多個時鐘周期 執行完畢
- 采用 微程序 控制器
7.5.4 RISC與CISC的比較
- RISC更能 充分利用 VLSI 芯片的面積【VLSI芯片:超大規模集成電路(Very Large Scale Integration Circuit)】
- RISC 更能 提高計算機運算速度
- 指令數、指令格式、尋址方式少
- 通用 寄存器多,減少訪存次數
- 采用 組合邏輯比微程序延遲小,縮短CPU周期
- 便于實現 指令流水
- RISC 便于設計,可 降低成本,提高 可靠性
- RISC 不易 實現 指令系統兼容
參考:
教材:計算機組成原理 (唐朔飛).pdf
視頻:
https://www.bilibili.com/video/BV1t4411e7LH?p=107&vd_source=a89593e8d33b31a56b894ca9cad33d33