banner
cos

cos

愿热情永存,愿热爱不灭,愿生活无憾
github
tg_channel
bilibili

計算機組成原理復習總結(四)指令系統

第四章 指令系統#

4.1 指令系統的發展與性能要求#

指令系統基本概念

  • 指令:就是要計算機執行某種操作的命令。從計算機組成的層次結構來說,計算機的指令有微指令、機器指令和宏指令之分。
    • 微指令是微程序級的命令,它屬於硬體;
    • 宏指令:由若干條機器指令組成的軟體指令,它屬於軟體;
    • 機器指令:介於微指令與宏指令之間,通常簡稱為指令
  • 每一條指令可完成一個獨立的算術運算或邏輯運算操作。本章所討論的指令,是機器指令。
  • 一台計算機中所有機器指令的集合,稱為這台計算機的指令系統
    • 指令系統是表徵一台計算機性能的重要因素,它的格式與功能不僅直接影響到機器的硬體結構,而且也直接影響到系統軟體,影響到機器的適用範圍

4.1.1 指令系統的發展#

發展情況#

  • 50 年代,指令系統只有定點加減、邏輯運算、資料傳送、轉移等十幾至幾十條指令

  • 60 年代後期,增加了乘除、浮點、十進制、字串處理等指令,指令數目多達一二百條,尋址方式也趨多樣化,開始出現系列計算機

  • 70 年代末期,大多數計算機的指令系統多達幾百條,稱這些計算機為複雜指令系統計算機 (CISC,Complex Instruction Set Computer)。

    • 但是如此龐大的指令系統不但使計算機的研製週期變長,難以保證正確性,不易調試維護,而且由於採用了大量使用頻率很低的複雜指令而造成硬體資源浪費,產生指令集所謂20:80 規律
    • 最常使用的簡單指令僅占指令總數的 20%,但在程式中出現的頻率卻占 80%。
  • 於是人們又提出了便於 VLSI 技術實現的精簡指令系統計算機 (RISC,Reduced Instruction Set Computer)

4.1.2 對指令系統性能的要求#

  • 完備性:完備性是指用匯編語言編寫各種程式時,指令系統直接提供的指令足夠使用,而不必用軟體來實現。 完備性要求指令系統豐富、功能齊全、使用方便。一台計算機中最基本、必不可少的指令是不多的。許多指令可用最基本的指令編程來實現。
  • 有效性:有效性是指利用該指令系統所編寫的程式能夠高效率地運行。 高效率主要表現在程式佔據儲存空間小、執行速度快。
  • 規整性:規整性包括指令系統的對稱性、均齊性、指令格式和資料格式的一致性。
    • 對稱性:在指令系統中所有的寄存器和儲存器單元都可同等對待,所有的指令都可使用各種尋址方式;
    • 均齊性:一種操作性質的指令可以支持各種資料類型,如算術運算指令可支持字節、字、雙字整數的運算,十進制數運算和單、雙精度浮點數運算等;
    • 指令格式和資料格式的一致性:指令長度和資料長度有一定的關係,以方便處理和存取。例如指令長度和資料長度通常是字節長度的整數倍。
  • 兼容性:系列機各機種之間具有相同的基本結構和共同的基本指令集,因此指令系統是兼容的,即各機種上基本軟體可以通用。但由於不同機種推出的時間不同,在結構和性能上有差異,做到所有軟體都完全兼容是不可能的,只能做到 **“向上兼容”**,即低檔機上運行的軟體可以在高檔機上運行

4.2 指令格式#

  • 指令格式:指令字用二進制代碼表示的結構形式
  • 指令能反映以下信息:
    • 做什麼操作
    • 如果需要操作數,從哪裡取
    • 結果送哪裡、下一條指令從哪裡取
  • 指令格式包括兩個方面:
操作碼字段 OP地址碼字段 A
表明指令的操作特性與功能指定參與操作的操作數的地址

4.2.1 操作碼#

  • 設計計算機時,對指令系統的每一條指令都要規定一個操作碼。
  • 指令的操作碼 OP 表示該指令應進行什麼性質的操作,如進行加法、減法、乘法、除法、取數、存數等等。不同的指令用操作碼字段的不同編碼來表示,每一種編碼代表一種指令。例如,操作碼 001 可規定為加法操作;操作碼 010 可規定為減法操作
  • 組成操作碼字段的位數一般取決於計算機指令系統的規模。較大的指令系統就需要更多的位數來表示每條特定的指令。例如,一個指令系統有 32 條指令,則需要 5 位操作碼。一般來說,一個包含 n 位的操作碼最多能表示 2^n^ 條指令

4.2.2 地址碼(重點)#

  • 根據一條指令中有幾個操作數地址,可將該指令稱為幾操作數指令或幾地址指令

零地址指令#

操作碼 OP
功能:不需要操作數的指令,如 “停機”、“空操作”、“清除” 等控制類指令。

一地址指令#

操作碼 OP操作數 A1
功能描述: OP (A1) →A1
(AC) OP (A1) →AC
隱含約定操作數在累加器 AC 中

二地址指令#

操作碼 OP操作數 A1操作數 A2
A1: 源 / 目的操作數地址
A2: 目的 / 源操作數地址
功能描述:
(A1) OP (A2)→A1
(A1) OP (A2)→A2

二地址指令根據操作數的物理位置分為

  • SS 儲存器 - 儲存器類型
  • RS 寄存器 - 儲存器類型
  • RR 寄存器 - 寄存器類型

三地址指令#

操作碼A1A2A3
A1: 被操作數地址,也稱源操作數地址
A2: 操作數地址,也稱目的操作數地址
A3: 存放操作結果的地址
功能描述:(A1) OP (A2)→A3

4.2.3 指令字長度 (重點)#

概念#

  • 指令字長度:一個指令字包含二進制代碼的位數)
  • 機器字長:計算機能直接處理的二進制資料的位數。
  • 單字長指令: 指令字長度等於機器字長度的指令。
  • 半字長指令: 指令字長度等於半個機器字長度的指令。
  • 雙字長指令: 指令字長度等於兩個機器字長度的指令。

多字長指令的優缺點#

  • 優點:提供足夠的地址位來解決訪問記憶體任何單元的尋址問題 ;
  • 缺點:必須兩次或多次訪問記憶體以取出一整條指令,降低了 CPU 的運算速度,又佔用了更多的儲存空間。
  • 指令系統中指令採用等長指令的優點:各種指令字長度是相等的,指令字結構簡單,且指令字長度是不變的 ;
  • 採用非等長指令的的優點:各種指令字長度隨指令功能而異,結構靈活,能充分利用指令長度,但指令的控制較複雜
  • 題目一般默認機器字長為 16 位,如下題
    在這裡插入圖片描述

4.3 操作數類型#

4.3.1 一般的資料類型#

  • 地址資料: 地址實際上也是一種形式的資料。
  • 數值資料: 計算機中普遍使用的三種類型的數值資料。
    • 定點整數或定點小數、浮點數、壓縮十進制數
  • 字符資料: 文本資料或字串,目前廣泛使用 ASCII 碼。
  • 邏輯資料: 一個單元中有若干二進制 bit 項組成,每個 bit 的值可以是 1 或 0。當資料以這種方式看待時,稱為邏輯性資料。

4.4 指令和資料的尋址方式 (重點!)#

  • 在儲存器中,操作數或指令字寫入或讀出的方式,有地址指定方式、相聯儲存方式和堆疊存取方式。幾乎所有的計算機,在記憶體中都採用地址指定方式
  • 尋址方式:形成操作數或指令地址的方式
    • 指令尋址方式:用於形成指令在記憶體中的地址
    • 資料尋址方式:用於形成操作數在記憶體中的地址

4.4.1 指令尋址方式#

  • 順序尋址方式
  • 跳躍方式
    在這裡插入圖片描述

4.4.2 操作數尋址方式#

根據指令中給出的地址碼字段尋找真實操作數的方式,即形成操作數的有效地址的方法,稱為操作數的尋址方式。例如,一種單地址指令的結構如下:

操作碼 OP變址 X   間址 I形式地址 A
尋址方式特徵位偏移量

尋址過程就是把操作數的形式地址,變換為操作數的有效地址的過程。
在這裡插入圖片描述

1、隱含尋址#

  • 特點:在指令中不明顯地給出操作數的地址,而是隱含著操作數的地址
  • 單地址的指令格式,在指令地址字段中,沒有指明第二操作數的地址,而是規定累加器 AC 作為第二操作數地址,AC 就是一個隱含地址

2、立即尋址#

  • 特點:立即尋址是一種特殊的尋址方式,指令的地址字段指出的不是操作數地址,而是操作數本身
  • 資料就包含在指令中,只要取出指令,就取出了可以立即使用的操作數,因此,這樣的操作數被稱為立即數。
  • 指令中包含的操作數立即可用,節省了訪問記憶體的時間
  • 指令格式:操作碼 OP 操作數 A
  • 例: 指令 mov ax, 100

3、直接尋址#

  • 特點:指令中地址碼字段給出的地址 A 就是操作數的有效地址 EA(Effective Address),又稱為直接地址,即 EA=A。在這裡插入圖片描述

4、間接尋址#

  • 特點:指令地址字段中的形式地址 A 不是操作數的真正地址,而是操作數地址的指示器,即:A 的內容才是操作數的有效地址操作數的有效地址:EA=(A)【就套娃呗(】
    在這裡插入圖片描述

5、寄存器尋址#

  • 特點:操作數不在記憶體中,而是放在通用寄存器中
  • 指令中給出的操作數地址不是記憶體的地址單元編號,而是通用寄存器的編號,指令的操作數存放在相應的寄存器中,即 EA=R~i~在這裡插入圖片描述

優點

  • 由於寄存器在 CPU 的內部,指令在執行時從寄存器中取操作數比訪問主存要快得多
  • 由於寄存器的數量較少,因此寄存器編號所佔位數也較少,從而可以有效減少指令的地址碼字段的長度

6、寄存器間接尋址#

  • 特點:指令中的寄存器內容不是操作數,而是操作數的地址,真正的操作數在記憶體中。即將操作數放在主儲存器中,而操作數的地址放在某一通用寄存器中,然後在指令的地址碼部分給出該通用寄存器的編號,這時有 EA=(Ri)【套娃再套娃呗(】
    在這裡插入圖片描述

  • 優點:這種尋址方式的指令較短,並且在取指後只需一次訪存便可得到操作數,因此指令執行速度較前述的間接尋址方式要快,也是目前在計算機中使用較為廣泛的一種尋址方式。

7、偏移尋址#

  • 直接尋址和寄存器間接尋址方式的結合
  • 有效地址:EA=A+(R),A 是形式地址
    • 要求指令中有兩個地址字段,至少其中一個是顯示的。
    • 形式地址 A 直接被使用
  • 常用的三種偏移尋址是:
    • 相對尋址、基址尋址、變址尋址
  • 相對尋址:由程式計數器 PC 提供基準地址,而指令的地址碼部分給出相對的位移量 D,兩者相加後作為操作數的有效地址,即:EA=(PC)+D。程式計數器的內容就是當前指令的地址。在這裡插入圖片描述
  • 基址尋址:基址寄存器的位數可以設置得很長,從而可以在較大的儲存空間中尋址。在這裡插入圖片描述
  • 變址尋址:變址尋址就是將指令的地址碼部分給出的基準地址 A 與 CPU 內某特定的變址寄存器 Rx 中的內容相加,以形成操作數的有效地址在這裡插入圖片描述

8、段尋址方式#

  • 微型機中採用了段尋址方式,其實質還是基址尋址
  • 將 1MB 主儲存器空間按照最大長度 64KB 劃分成若干段,在尋址一個具體的記憶體單元時,由一個基地址寄存器 (段寄存器) 再加上指令中提供的 16 位偏移量來形成實際的 20 位物理地址
    在這裡插入圖片描述

9、堆疊尋址堆疊#

  • 能存取資料的暫時儲存單元
  • 兩種形式寄存器堆疊和儲存器堆疊
  • 儲存原則:先進後出
  • 資料的存取都通過堆疊頂,需要一個隱式或顯式的堆疊指示器 (堆疊頂指針)
  • 堆疊指令:PUSH、POP

[例 4] 一種二地址 RS 型指令的結構如下:
6 位   4 位         1 位  2 位   16 位
OP   通用寄存器     I   X   偏移量 D
 其中 I 為間接尋址標誌位,X 為尋址模式字段,D 為偏移量字段。通過 I,X,D 的組合,可構成如下尋址方式:
在這裡插入圖片描述
請寫出 6 種尋址方式的名稱。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。