1. 程式人生 > >【計算機組成原理詳細知識點】指令系統

【計算機組成原理詳細知識點】指令系統

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&lt;&#x2212;(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&lt;&#x2212;(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&quot;>I” role=”presentation”>II 定址模式欄位X 偏移量欄位D

給出定址方式
































有效地址E演算法 說明
http://www.w3.org/1998/Math/MathML&quot;>E=D” role=”presentation”>E=DE=D
http://www.w3.org/1998/Math/MathML&quot;>E=(PC+D)” role=”presentation”>E=(PC+D)E=(PC+D) PC為程式計數器
http://www.w3.org/1998/Math/MathML&quot;>E=(R2)+D” role=”presentation”>E=(R2)+DE=(R2)+D http://www.w3.org/1998/Math/MathML&quot;>R2” role=”presentation”>R2R2 為變址暫存器
http://www.w3.org/1998/Math/MathML&quot;>E=(R2)” role=”presentation”>E=(R2)E=(R2)
http://www.w3.org/1998/Math/MathML&quot;>E=(D)” role=”presentation”>E=(D)E=(D)
http://www.w3.org/1998/Math/MathML&quot;>E=(R1)+D” role=”presentation”>E=(R1)+DE=(R1)+D http://www.w3.org/1998/Math/MathML&quot;>R1” role=”presentation”>R1R1 為基址暫存器

寫出6種定址方式的名稱。(簡單吶!)