计算机组成原理第4章-指令系统
寫在前面:本文參考王道考研的計算機組成書籍。
簡述各常見尋址方式的特點和適用情況
基址尋址和變址尋址的區別
文章目錄
- 第四章 指令系統
- 4.1指令格式
- 4.2 指令的尋址格式
- 4.2.1 指令尋址和數據尋址
- 1 指令尋址
- 2 數據尋址
- 4.2.2 常見的數據尋址方式
- 1 隱含尋址
- 2 立即(數)尋址
- 3 直接尋址
- 4 間接尋址
- 5 寄存器尋址
- 6 寄存器間接尋址
- 7 相對尋址
- 8 基址尋址
- 9 變址尋址
- 4.3 CISC和RISC的基本概念
第四章 指令系統
4.1指令格式
4.2 指令的尋址格式
尋址方式是指尋找指令或操作數有效地址的方式,即確定本條指令的數據地址及下一條待執行指令的地址的辦法。 尋址方式分為指令尋址和數據尋址兩大類。
指令中的地址碼字段并不代表操作數的真實地址,這種地址稱為形式地址(A).形式地址結合尋址方式,可以計算出操作數在存儲器中的真實地址,這種地址稱為有效地址(EA)。
注意:(A)表示地址為A的數值,A既可以是寄存器編號,也可以是內存地址。對應的(A)就是寄存器中的數值,或相應內存單元的數值。例如,EA=(A)意思是有效地址是地址A中的數值。
4.2.1 指令尋址和數據尋址
尋址方式分為指令尋址和數據尋址兩大類。尋找下一條將要執行的指令地址稱為指令尋址;尋找操作數的地址稱為數據尋址。
1 指令尋址
需要注意的是,每條指令的執行都分為“取指令”和“執行指令”兩部分, CPU在取出指令之后,執行指令之前,就會自動讓PC值+1.
2 數據尋址
數據尋址是指如何在指令中表示一個操作數的地址,如何用這種表示得到操作數或怎樣計算出操作數的地址。
數據尋址的方式有很多,為區別各種方式,通常在指令字中設一個字段,用來指明屬于哪種尋址方式, 由此可得指令的格式如下所示:
4.2.2 常見的數據尋址方式
1 隱含尋址
這種類型的指令不明顯地給出操作數的地址,而在指令中隱含操作數的地址。例如,單地址的指令格式就不明顯地在地址字段中指出第二操作數的地址,而規定累加器作為第二操作數地址。因此,累加器對單地址指令來說是隱含尋址。
優點: 有利于縮短指令字長;
缺點:需要增加存儲操作數或隱含地址的硬件。
2 立即(數)尋址
這種類型的指令的地址字段指出的不是操作數的地址,而是操作數本身,又稱立即數。 數據采用補碼形式存放。
優點: 指令在執行階段不訪存,指令執行時間最短;
缺點:A的位數限制了立即數的范圍。
3 直接尋址
指令字中的形式地址A是操作數的真實地址,即EA=A。
優點: 簡單,指令在執行階段僅訪存一次,不需要專門計算操作數的地址;
缺點:A的位數決定了該指令操作數的尋址范圍,操作數的地址不易修改。
4 間接尋址
間接尋址是相對于直接尋址而言的,指令的地址字段給出的形式地址不是操作數的真正地址,而是操作數有效地址所在的存儲單元的地址,也就是操作數地址的地址,即EA=(A)。間接尋址可以是一次間接尋址,也可以是多次間接尋址。
在上圖中,主存字第一位為1時,表示取出的仍不是操作數的地址,即多次間址;主存字第一位為0時,表示取得的是操作數的地址。
間接尋址的優點:
可擴大尋址范圍,便于編制程序(用間接尋址可方便地完成子程序返回);
缺點:
指令在執行階段多次訪存(一次間接尋址需要兩次訪存,多次間接尋址需要根據存儲字的最高位數確定訪存次數)。由于訪問速度過慢,所以這種尋址方式不常用。一般問擴大尋址范圍時,通常指的是寄存器間接尋址。
5 寄存器尋址
寄存器尋址是指在指令字中直接給出操作數所在的寄存器編號,即EA=RiEA=R_iEA=Ri?,其操作數在Ri所指的寄存器中。
優點: 執行在執行階段不訪問主存,地址碼長度較小,執行速度快,支持向量/矩陣運算。
缺點: 寄存器價格昂貴,寄存器個數有限。
6 寄存器間接尋址
寄存器間接尋址是指在寄存器Ri中給出的不是一個操作數,而是操作數所在主存單元的地址, 即EA=(Ri)EA=(R_i)EA=(Ri?)。
優點: 與一般間接尋址相比速度更快
缺點:但是需要訪問主存
下面講的 相對尋址、基址尋址和變址尋址都是偏移尋址。
7 相對尋址
相對尋址是把程序計數器(PC)的內容加上指令格式中的形式地址A而形成操作數的有效地址,即EA=(PC)+AEA=(PC)+AEA=(PC)+A,其中A是相對于下一條指令地址的偏移量,可正可負,補碼表示。
在上圖中,A的位數決定操作數的尋址范圍。
相對尋址的優點:
操作數的地址不是固定的,它隨PC值的變化而變化,且與指令地址之間總是相差一個固定值,因此便于程序浮動,相對尋址廣泛應用于轉移指令。
8 基址尋址
基址尋址是指將CPU中基址寄存器(Baseaddress Register ,BR)的內容加上指令格式中的形式地址A而形成操作數的有效地址。即EA=(BR)+A 。其中基址寄存器既可以采用專用寄存器,也可以采用通用寄存器。
基址寄存器是面向操作系統的,其內容由操作系統或管理程序確定,主要用于解決程序邏輯空間與存儲器物理空間的無關性。 在程序執行過程中,基址寄存器BR的內容不變(作為基地址),形式地址可變(作為偏移量)。采用通用寄存器作為基址寄存器時,可由用戶決定哪個寄存器作為基址寄存器,但其內容仍由操作系統確定。
程序運行前,CPU將BR的值修改為該程序的起始地址
基址尋址的優點:
擴大尋址范圍(基址寄存器的位數大于形式地址A的位數);用戶不用考慮自己的程序存于主存的哪個空間區域,因此有利于多道程序合計,并可用于編制浮動程序,但偏移量(形式地址A)的位數較短。
9 變址尋址
變址尋址是指有效地址EA等于指令字中的形式地址A與變址寄存器(Index Register,IX)的內容之和,即EA=(IX)+A,其中IX為變址寄存器(專用),也可用通用寄存器作為變址寄存器。
變址寄存器是面向用戶的,在程序執行過程中,變址寄存器IX
的內容可由用戶改變(作為偏移量),形式地址A不變(作為基地址)。
變址尋址的優點:
擴大尋址范圍;在數組處理過程中,可設定形式地址A為數組的首地址,不斷改變變址寄存器IX的內容,便可很容易形成數組中任一數據的地址,特別適合編制循環程序。偏移量(變址寄存器IX)的位數足以表示整個存儲空間。
4.3 CISC和RISC的基本概念
| 指令系統 | 復雜,龐大 | 簡單,精簡 |
| 指令數目 | 一般大于200條 | 一般小于100條 |
| 指令字長 | 不固定 | 定長 |
| 可訪存指令 | 不加限制 | 只有Load/Store指令 |
| 各種指令執行時間 | 相差較大 | 絕大多數在一個周期內完成 |
| 各種指令使用頻率 | 相差很大 | 都比較常用 |
| 通用寄存器數量 | 較少 | 多 |
| 目標代碼 | 難以用優化編譯生成高效的目標代碼程序 | 采用優化的編譯程序,生成代碼較為高效 |
| 控制方式 | 絕大多數為微程序控制 | 絕大多數為組合邏輯控制 |
| 指令流水線 | 可以通過一定方式實現 | 必須實現 |
總結
以上是生活随笔為你收集整理的计算机组成原理第4章-指令系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021考研数一李正元400题、张宇4套
- 下一篇: 计算机组成原理第5章-中央处理器