【計算機組成原理詳細知識點】指令系統
4.1.1指令系統的發展
程式:計算機的程式是由一系列的機器指令組成的。
指令就是計算機執行某種操作的命令。
這裡某種操作???其實很有意思啊
20世紀50年代,所支援的指令系統只有定點加減,邏輯運算、資料傳送、轉移等十幾至幾十條指令。
60年代後期,除以上基本指令,還設定了乘除運算、浮點運算、十進位制運算、字串處理,指令數目多達幾百條,定址方式也趨多樣化
計算機的指令有微指令、機器指令和巨集指令。
微指令:微程式級的命令,屬於硬體。
巨集指令:若干條機器指令組成的軟體指令,屬於軟體。
機器指令:介於微指令和巨集指令之間,通常簡稱為指令。
每一條指令可完成一個獨立的算術運算或算術邏輯運算操作。
4.1.2指令系統的效能要求
完備性
指令系統豐富、功能齊全、使用方便。
有效性
該指令系統編寫的程式能夠高效率地執行。
高效率主要表現在程式佔據儲存空間小、執行速度快。
規整性
對稱性
勻齊性
指令格式和資料格式的一致性
相容性
系列機各機種之間具有相同的基本結構和共有的基本指令集,因而指令系統是相容的,即各機種上基本軟體可以通用。
4.2 指令格式
機器指令
機器指令是機器字來表示。
表示一條指令的機器字,就稱為指令字,通常簡稱指令。
指令格式,則是指令字用二進位制程式碼來表示的結構形式,通常由操作碼欄位和地址碼欄位組成。
一條指令的結構如下形式來表示:
操作碼欄位OP | 地址碼欄位A |
---|
操作碼
設計計算機時,對指令系統的每一條指令都要規定一個操作碼。
操作碼欄位應該執行怎樣的操作?
加法,減法,乘法,除法,取數,存數等等。
一般來說,一個包含 n” role=”presentation”>nn 條指令。
地址碼
有幾個運算元地址,稱為幾運算元 或 幾地址指令。
在早期,一般運算元有被運算元、運算元和操作結果這三種數,所以就形成了三地址指令格式。
後來發展成二地址格式、一地址格式和零地址格式。
(1)零地址指令:只有操作碼,沒有地址碼。
(2)一地址指令只有一個地址碼,指定一個運算元,另一個運算元是隱含的。
例數學含義:AC<–(AC)op(A)
累加暫存器AC中的資料位隱含的被運算元,操作結果又回到累加暫存器AC中,而累加暫存器中原來的數隨即被沖掉。
op表示操作性質:加、減、乘、除…
(AC)表示累加暫存器中AC的數;(A)表示記憶體中地址A的儲存單元中的數;然後運算完又送回到(AC).
(3)二地址指令,有兩個地址碼欄位A1,A2” role=”presentation”>A1,A2A1,A2 兼做存放操作結構的地址。so數學含義:
A1<−(A1)op(A2)” role=”presentation”>A1<−(A1)op(A2)A1<−(A1)op(A2)
在二地址指令格式中,從運算元的物理位置來說,可以歸結為三種類型:
1.訪問記憶體的指令格式,稱為儲存器-儲存器(SS)型。
2.訪問暫存器的指令格式,稱為暫存器-暫存器(RR)型。
3.即要訪問記憶體單元,又要訪問暫存器,稱為暫存器-儲存器(RS)型。
(4)三地址指令中有三個運算元 A1,A2,A3” role=”presentation”>A1,A2,A3A1,A2,A3,其數學含義:
A3<−(A1)op(A2)” role=”presentation”>A3<−(A1)op(A2)A3<−(A1)op(A2)
指令字長度
一個指令字中包含二進位制程式碼的位數,稱為指令字長度。
機器字長:計算機能直接處理的二進位制資料的位數,他決定了計算機的運算精度。
半字長指令:指令字長度等於半個機器字長度的指令。
單字長指令:指令字長度等於機器長度的指令。
雙字長指令:指令字長度等於兩個機器長度的指令。
多字長指令的缺點:必須兩次或三次訪問記憶體以取出一整條指令,這就降低了CPU的運算速度,同時又佔用了更多的空間。
例題考察:
分清楚單字長還是雙字長;
操作碼欄位OP可以指定 2n” role=”presentation”>2n2n 條指令
二地址指令格式中,根據訪問的物理位置來判斷RR\SS\RS型
4.3 運算元型別
4.3.1 一般的資料型別
地址資料
無符號整數
數值資料
①定點整數或定點小數;②浮點數;③壓縮十進位制數,一個位元組用兩位BCD碼錶示
字元資料
目前廣泛使用ASCII碼
邏輯資料
一個單元有若干二進位制位項組成,每個位的值可以是1或0.
4.4 指令和資料的定址方式
定址方式分為 指令定址方式 和 地址定址方式。
在馮·諾依曼型結構的計算機中,記憶體中指令的定址和資料的定址是交替進行的。
4.4.1 指令的定址方式
有兩種;
順序定址方式
指令地址在記憶體中按順序安排,當執行一段程式時,通常是一條指令接一條指令的順序進行。
指令的順序定址方式,必須使用程式計數器PC來計數指令的順序號,該順序號就是指令在記憶體中的地址。
跳躍定址方式
所謂跳躍,是指下條指令的地址碼不是由程式計數器給出,而是由本條指令給出。
4.4.2 運算元基本定址方式
隱含定址
不是明顯地給出運算元的地址,而是在指令中隱含著運算元的地址。
運算元在專用暫存器中
立即定址
指令的地址欄位指出的不是運算元的地址,而是運算元本身。
特點:指令中包含的運算元立即可用,節省了訪問記憶體的時間。
運算元=A.
直接定址
特點:在指令格式的地址欄位中直接指出運算元在記憶體的地址A。
如果用D表示運算元,那麼直接定址的表示式為:D=(A).
EA=A.
間接定址
相對於直接定址而言,指令地址欄位中的形式地址A不是運算元D的真正地址,而是運算元地址的指示器。
兩次訪存,影響指令執行速度。
EA=(A).
暫存器定址
當運算元不在記憶體中,而是放在CPU的通用暫存器中,可採用暫存器定址方式。
指令結構中的RR型指令,就是採用暫存器定址方式的例子。
EA=R
暫存器間接定址
與暫存器定址的區別:
指令格式中的暫存器內容不是運算元,而是運算元的地址,該地址指明的運算元在記憶體中。
EA=(R).
偏移定址
直接定址和暫存器間接定址的結合。
EA=A+(R);
常用的三種偏移定址:
相對定址:EA=A+(PC);引用的專用暫存器是程式計數器(PC).
基址定址:EA=A+(R);引用的專用暫存器是基址暫存器.
變址定址:EA=A+(R);引用的專用暫存器是變址暫存器.
段定址方式
EA=A+(R);
堆疊定址
EA=棧頂
作業題作業題
一種二地址RS型指令的結構如下所示:
6位 | 4位 | 1位 | 2位 | 16位 | |
---|---|---|---|---|---|
OP | – | 通用暫存器 | 間接定址標誌http://www.w3.org/1998/Math/MathML">I” role=”presentation”>II | 定址模式欄位X | 偏移量欄位D |
給出定址方式
有效地址E演算法 | 說明 |
---|---|
http://www.w3.org/1998/Math/MathML">E=D” role=”presentation”>E=DE=D | |
http://www.w3.org/1998/Math/MathML">E=(PC+D)” role=”presentation”>E=(PC+D)E=(PC+D) | PC為程式計數器 |
http://www.w3.org/1998/Math/MathML">E=(R2)+D” role=”presentation”>E=(R2)+DE=(R2)+D | http://www.w3.org/1998/Math/MathML">R2” role=”presentation”>R2R2 為變址暫存器 |
http://www.w3.org/1998/Math/MathML">E=(R2)” role=”presentation”>E=(R2)E=(R2) | |
http://www.w3.org/1998/Math/MathML">E=(D)” role=”presentation”>E=(D)E=(D) | |
http://www.w3.org/1998/Math/MathML">E=(R1)+D” role=”presentation”>E=(R1)+DE=(R1)+D | http://www.w3.org/1998/Math/MathML">R1” role=”presentation”>R1R1 為基址暫存器 |
寫出6種定址方式的名稱。(簡單吶!)