1. 程式人生 > >計算機組成原理---指令系統

計算機組成原理---指令系統

指令(機器指令)是指示計算機執行某種操作的命令,是計算機執行的最小功能單位。一臺計算機的所有指令的集合構成該機的指令系統,也稱指令集。指令系統是計算機的主要屬性,位於硬體和軟體的互動面上。

一條指令就是機器語言的一個語句,它是一組有意義的二進位制程式碼。一條指令通常包括操作碼欄位和地址碼欄位兩部分。其中,操作碼指出指令中該指令應該執行什麼性質操作和具體何種功能;地址碼用於給出被操作的資訊地址。

指令的長度是指一條指令中所包含的二進位制程式碼的位數。指令的字長取決於操作碼的長度,運算元地址碼的長度和運算元地址的個數。

在一個指令系統中,若所有指令的長度都是相等的,稱為定長指令字結構;若指令的長度隨功能而異,稱為變長指令字結構;因為主存一般按位元組編址,所以指令長多為位元組的整數倍。

根據指令中的運算元地址碼的數目不同,可將指令分為:零地址指令,一地址指令,二地址指令,三地址指令,四地址指令。

定長操作碼指令格式:定長操作碼指令是在指令的最高位部分分配固定的若干位(定長)表示操作碼。定長操作碼對於簡化計算機硬體設計,提高指令譯碼和識別速度很有利。

擴充套件操作碼指令格式:為了在指令字長有限的前提下仍保持比較豐富的指令種類,可採取可變長度操作碼,即全部指令的操作碼欄位位數不固定,且分散在指令的不同位置上。顯然,這將增加指令譯碼和分析的難度,使控制器設計複雜化。在設計擴充套件碼需要注意:

  • 不允許短碼是長碼的字首;
  • 各指令的操作碼一定不能重複。

定址方式是指尋找指令或運算元有效地址的方式,也就是確定本條指令的資料地址,以及下一條將要執行的指令地址的方法。定址方式分為指令定址和資料定址兩大類。指令中的地址碼欄位並不代表運算元真實地址,稱形式地址(A)。

指令定址有兩種:順序定址:通過程式計數器PC加1,自動形成下一條指令的地址;跳躍定址:下一條指令的地址碼不是由程式計數器給出,而是由本條指令給出下條指令地址的計算方式,跳躍的結果是當前指令修改PC值,所以下一條指令仍然是通過程式計數器PC給出。

資料定址:操作碼+定址特徵+形式地址

  • 隱含定址:不是明顯給出運算元地址,而是在指令中隱含著運算元地址;
  • 立即定址:指令的地址欄位指出的不是運算元地址,而是運算元本身,
  • 直接定址:指令中形式地址就是運算元的真實地址;
  • 間接定址:指令的地址欄位給出的是運算元地址的地址;
  • 暫存器定址:指令字中直接給出運算元所在的暫存器的編號;
  • 暫存器間接定址:暫存器給出運算元所在主存單元地址;
  • 相對定址:把程式計數器PC內容加上形式地址而形成運算元有效地址;
  • 基址定址:將CPU中的基址暫存器(BR)的內容加上指令格式中的形式地址得到有效地址,基址暫存器是面向作業系統的,其內容由作業系統或管理程式確定;
  • 變址定址:有效地址等於指令中形式地址與變址暫存器(IX)的內容之和,變址暫存器是面向使用者的,在程式執行過程中,變址暫存器的內容可由使用者改變(作為偏移量),形式地址不變(作為基地址);
  • 堆疊定址:堆疊是儲存器或專用暫存器組中一塊特定的按“後進先出”原則管理的儲存區,該儲存區中被讀/寫單元的地址使用一個特定的暫存器給出,該暫存器稱為堆疊指標(SP),暫存器堆疊又稱為硬堆疊,主存區域堆疊又稱為軟堆疊。

指令系統的發展朝向兩種截然不同的方向發展,一是增強原有指令功能,設定更為複雜的新指令實現軟體功能的硬化,這類機器稱為複雜指令計算機(CISC);另一種是減少指令種類和簡化指令功能,提高指令執行速度,這類機器稱為精簡指令計算機(RISC)。

CISC的主要特點有:指令系統複雜龐大,指令數目一般為200條以上;指令長度不固定,指令格式多,定址方式多;可以訪存的指令不受限制;各種指令使用頻度相差很大;各種指令執行時間相差很大,大多數指令需要多個時鐘週期才能完成;控制器大多數採用微程式控制,難以用優化編譯生成高效的目的碼程式。

RISC的中心思想是要求指令系統簡化,儘量使用暫存器-暫存器操作指令,指令格式力求一致,主要特點有:選取使用頻率最高的一些簡單指令,複雜指令的功能由簡單指令的組合來實現;指令長度固定,指令格式種類少,定址方式種類少;只有Load/Store指令訪存,其餘指令的操作都是在暫存器之間進行;CPU中通用暫存器數量相當多;RISC一定採用指令流水線技術,大部分指令在一個時鐘週期內完成;絕大多數為組合邏輯控制,不用或少用微程式控制;特別重視編譯優化工作,以減少程式執行時間。