1. 程式人生 > >【筆記】指令系統(二)

【筆記】指令系統(二)

三、定址方式

  定址方式分為指令定址資料定址兩大類。

1.指令定址

  指令定址分為順序定址跳躍定址兩種。
  順序定址可通過程式計數器PC加1,自動形成下一條指令的地址;跳躍定址則通過轉移類指令實現。

2.資料定址

  指令的地址碼欄位通常都不代表運算元的真實地址,把它稱為形式地址,記作A。運算元的真實地址稱為有效地址,記作EA,它是由定址方式形式地址共同來確定的。

這裡寫圖片描述

立即定址

  立即定址的特點是運算元本身設在指令字內,即形式地址A不是運算元的地址,而是運算元本身,又稱為立即數。資料是採用補碼形式存放的。

這裡寫圖片描述

  優點在於只要取出指令,便可立即獲得運算元,這種指令在執行階段不必再訪問儲存器。A的位數限制了這類指令所能表述的立即數的範圍。

直接定址

  直接定址的特點是指令字中的形式地址A就是運算元的真實地址EA,即EA=A

這裡寫圖片描述

  它的優點是尋找運算元比較簡單,也不需要專門計算運算元的地址,在指令執行階段對主存只訪問一次。缺點在於A的位數限制了運算元的定址範圍,而且必須修改A的值,才能修改運算元的地址。

隱含定址

  隱含定址是指指令字中不明顯地給出運算元的地址,其運算元的地址隱含在操作碼或某個暫存器中

這裡寫圖片描述

  由於隱含定址在指令字中少了一個地址,因此這種定址方式的指令有利於縮短指令字長。

間接定址

  倘若指令字中的形式地址不直接指出運算元的地址,而是指出運算元有效地址所在的儲存單元地址,也就是有效地址是由形式地址間接提供的,即為間接定址,即EA=(A)

這裡寫圖片描述

  當多次間接定址時,可用儲存字的首位來標誌間接定址是否結束。當儲存字首位是“1”時,表明還需繼續訪存定址;當儲存字首位為“0”時,標明該儲存字即為EA。
  優點:這種定址方式與直接定址相比,擴大了運算元的定址範圍,因為A的位數通常小於指令字長,而儲存字長可與指令字長相等。另外它便於編制程式。只要在呼叫前先將返回地址存入子程式最末條指令的形式地址A的儲存單元內,便可準確返回到原程式斷點。
  缺點:指令的執行階段需要訪存兩次(一次間接定址)或多次(多次間接定址),致使指令執行時間延長。

暫存器定址

  在暫存器定址的指令字中,地址碼欄位直接指出了暫存器編號,其運算元在由RiR_i所指的暫存器內

,即EA=RiEA=R_i

這裡寫圖片描述

  由於運算元不在主存中,故暫存器定址在指令執行階段無須訪存,減少了執行時間。由於地址欄位只需指明暫存器編號(計算機中暫存器數有限),故指令字較短,節省了儲存空間。

暫存器間接定址

  RiR_i中的內容不是運算元,而是運算元所在主存單元的地址號,即有效地址EA=(Ri)EA=(R_i)

這裡寫圖片描述

  與暫存器定址相比,指令的執行階段還需訪問主存。因有效地址不是存放在儲存單元中,故稱其為暫存器間接定址,它比間接定址少訪存一次。

基址定址

  基址定址需設有基址暫存器BR,其運算元的有效地址EA等於指令字中的形式地址與基址暫存器中的內容(稱為基地址)相加,即EA=A+(BR)EA=A+(BR)

這裡寫圖片描述

  基址暫存器可採用隱式的和顯示的兩種。所謂隱式,是在計算機內專門設有一個基址暫存器BR,使用時使用者不必明顯指出該基址暫存器,只需由指令的定址特徵位反映出基址定址即可。顯式在一組通用暫存器裡,由使用者名稱明確指出哪個暫存器用作基址暫存器,存放基地址。

  基址定址可以擴大運算元的定址範圍,因基址暫存器的位數可以大於形式地址A的位數。當主存容量較大時,若採用直接定址,因受A的位數限制,無法對主存所有單元進行訪問,但採用基址定址便可實現對主存空間的更大範圍尋訪。
  使用者可不必考慮自己的程式存於主存的哪一空間區域,完全可由作業系統或管理程式根據主存的使用狀況,賦予基址暫存器內一個初始值(即基地址),便可將使用者程式的邏輯地址轉化為主存的實體地址(實際地址),把使用者程式安置於主存的某一空間區域。

變址定址

  其有效地址EA等於指令字中的形式地址A與變址暫存器IX的內容相加之和,即EA=A+(IX)EA=A+(IX)
  只要變址暫存器位數足夠,也可擴大運算元的定址範圍。

這裡寫圖片描述

  基址定址主要用於為程式或資料分配儲存空間,故基址暫存器的內容通常由作業系統或管理程式確定,在程式的執行過程中其值是不可變的,而指令字中的A是可變的。在變址定址中,變址暫存器的內容是由使用者設定的,在程式執行過程中其值可變,而指令字中的A是不可變的。變址定址主要用於處理資料問題,在陣列處理過程中,可設定A為陣列的首地址,不斷改變變址暫存器的IX的內容,便可很容易形成陣列中任一資料的地址,特別適合編制迴圈程式。

  有的機器的變址定址具有自動變址的功能,即每存取一個數據,根據資料長度(即所佔位元組數),變址暫存器能自動增量或減量,以便形成下一個資料的地址。
  變址定址還可以與其他定址方式結合使用。變址定址可與基址定址合用,此時有效地址EA等於指令字中的形式地址A和變址暫存器的內容(IX)及基址暫存器BR中的內容(BR)相加之和,即EA=A+(IX)+(BR)EA=A+(IX)+(BR)。變址暫存器還可與間接定址合用,形成先變址後間址或先間址再變址等定址方式。

相對定址

  相對定址的有效地址是將程式計數器PC的內容與指令字中的形式地址A相加而成,即EA=(PC)+AEA=(PC)+A

這裡寫圖片描述

  相對定址常被用於轉移類指令,轉移後的目標地址與當前指令有一段距離,稱為相對位移量,它由指令字的形式地址A給出,故A又稱位移量。位移量A可正可負,通常用補碼錶示。
  相對定址的最大特點是轉移地址不固定,它可隨PC指的變化而變,因此無論程式在主存的哪段區域,都可正確執行,對於編寫浮動程式特別有利。
  相對定址也可與間接定址配合使用。

堆疊定址

  堆疊定址要求計算機中設有堆疊。堆疊既可用暫存器組(稱為硬堆疊)來實現,也可利用主存的一部分空間作堆疊(稱為軟堆疊)。堆疊的執行方式為先進後出或先進先出兩種,先進後出型堆疊的運算元只能從一個口進行讀或寫。堆疊定址也可視為一種隱含定址,其運算元的地址總被隱含在SP中。堆疊定址就其本質也可視為暫存器間接定址,因SP可視為暫存器,它存放著運算元的有效地址。

四、RISC技術

  RISC即精簡指令系統計算機,與其對應的是CISC,即複雜指令系統計算機。

1.RISC的主要特徵

  RISC技術是用20%的簡單指令的組合來實現不常用的80%的那些指令功能。在提高效能方面,RISC技術採取的最有效的方法就是減少指令的執行週期數。
  計算機執行程式所需的時間P可用下式表述:P=I×C×TP=I\times C\times T其中,I是高階語言程式編譯後在機器上執行年的機器指令數;C為執行每條機器指令所需的平均機器週期,T是每個機器週期的執行時間。
  RISC的效能優於CISC 2~5倍。

  RISC的主要特點:

  1. 選取使用頻度較高的一些簡單指令乙級一些很有用但又不復雜的指令,讓複雜指令的功能由頻度高的簡單指令的組合來實現。
  2. 指令長度固定,指令格式種類少,定址方式種類少。
  3. 只有取數/存數(LOAD/STORE)指令訪問儲存器,其餘指令的操作都暫存器內完成。
  4. CPU中有多個通用暫存器。
  5. 採用流水線愛你技術,大部分指令在一個時鐘週期內完成。採用超標量和超流水線技術,可使每條指令的平均執行時間小於一個時鐘週期。
  6. 控制器採用組合邏輯控制,不用微程式控制。
  7. 採用優化的編譯程式。

  CISC的指令系統複雜龐大,各種指令使用頻度相差很大;指令字長不固定,指令格式多,定址方式多;可以訪存的指令不受限制;CPU中設有專用暫存器;絕大多數指令需要多個時鐘週期方可執行完畢;採用微程式控制器;難以用優化編譯生成高效的目的碼。

2.RICS II 指令系統舉例

(1)指令種類
  RICS II共有39條指令,分為以下4類。

暫存器-暫存器操作:移位、邏輯、算術運算等12條指令。
取/存數指令:取存位元組、半字、字等16條。
控制轉移指令:條件轉移、呼叫/返回等6條。
其他:存取程式狀態字PSW和程式計數器等5條。

(2)指令格式
  RICS機的指令格式比較簡單,定址方式也比較少,如RICS II的指令格式有兩種:短立即數格式長立即數格式。指令字長固定為32位,指令字中每個欄位都有固定位置。

(3)定址方式
  RICS II指令系統有兩種訪存方式。一種是變址定址,另一種是相對定址,還可以組合方式產生其他定址方式。若令變址暫存器內容為0,則成為直接定址方式;若令位移量為0,則稱為暫存器間接定址方式

3.RICS指令系統的擴充

  因用途不同還可擴充一些指令。

  • 浮點指令
  • 特權指令
  • 讀後置數指令
  • 一些簡單的專用指令

4.RISC和CISC的比較

  與CISC機相比,RISC機的主要優點可歸納如下:

  1. 充分利用VLSI晶片的面積
  2. 提高計算機的運算速度
  3. 便於設計,可降低成本,提高可靠性
  4. 有效支援高階語言程式