1.概述
指令系統(tǒng):指一臺(tái)計(jì)算機(jī)所具有的
全部機(jī)器指令的集合,反映了該計(jì)算機(jī)所擁有的基本功能,是計(jì)算機(jī)硬件的語言系統(tǒng),也被稱為機(jī)器語言
- CISC與RISC指令系統(tǒng)的特點(diǎn)及區(qū)別
| CISC | RISC |
|---|---|
| 指令系統(tǒng)龐大,軟件硬化 | 指令系統(tǒng)簡(jiǎn)單 |
| 指令格式和尋址方式多樣性 | 指令長(zhǎng)度固定,指令格式,尋址方式種類少 |
| 編譯程序復(fù)雜,程序編譯速度慢 | 優(yōu)先選取高頻簡(jiǎn)單指令,避免復(fù)雜指令 |
| 大多數(shù)指令功能復(fù)雜 | 各字段劃分比較一致,功能也比較規(guī)整 |
| 各種指令都可訪問存儲(chǔ)器 | 只有LOAD,STORE指令可訪問存儲(chǔ)器 |
| 絕大多數(shù)指令需多個(gè)機(jī)器周期完成 | 多數(shù)指令一個(gè)機(jī)器周期內(nèi)完成 |
| 控制單元設(shè)計(jì)采用微程序控制技術(shù) | 控制單元設(shè)計(jì)采用硬布線控制邏輯 |
| 各種指令使用頻度相差懸殊 | CPU使用流水線結(jié)構(gòu) |
| 難以調(diào)試維護(hù),可靠性差 | 采用編譯優(yōu)化技術(shù),減少程序執(zhí)行時(shí)間 |
-
指令系統(tǒng)的設(shè)計(jì)原則
- 完整性:要求通用計(jì)算機(jī)應(yīng)具備完善的指令功能
- 規(guī)整性:所有運(yùn)算部件都能等同地訪問所有數(shù)據(jù)存儲(chǔ)單元
- 高效性:利用該指令系統(tǒng)編寫的程序能夠高效率地運(yùn)行
- 兼容性:通常只能做到
向上兼容,向后兼容
-
地址空間
- 三地址空間:通用寄存器,主存儲(chǔ)器,輸入輸出設(shè)備分別進(jìn)行
獨(dú)立編址 - 二地址空間:通用寄存器獨(dú)立編址,主存和I/O設(shè)備統(tǒng)一編址,
優(yōu)點(diǎn):能夠簡(jiǎn)化指令系統(tǒng),不必另外設(shè)置輸入輸出指令,所有能訪問主存的指令都能訪問I/O設(shè)備
缺點(diǎn):所有訪問主存的指令都需通過地址譯碼來判斷是否訪問I/O設(shè)備,影響指令的執(zhí)行速度
二地址空間 - 一地址空間:所有設(shè)備
統(tǒng)一編址,地址編碼最長(zhǎng),所有能訪問寄存器的指令,也能訪問主存和I/O設(shè)備
一地址空間 - 零地址空間:隱含編址方式,堆棧計(jì)算機(jī)中有這種方式
- 三地址空間:通用寄存器,主存儲(chǔ)器,輸入輸出設(shè)備分別進(jìn)行
-
獨(dú)立編址和統(tǒng)一編址的對(duì)比
- 獨(dú)立編址
專用的I/O端口編址,存儲(chǔ)器和I/O端口在兩個(gè)獨(dú)立的地址空間中- 優(yōu)點(diǎn):I/O端口的地址碼較短,譯碼電路簡(jiǎn)單,存儲(chǔ)器同I/O端口的操作指令不同,程序比較清晰;存儲(chǔ)器和I/O端口的控制結(jié)構(gòu)相互獨(dú)立,可以分別設(shè)計(jì)
- 缺點(diǎn):需要有專用的I/O指令,程序設(shè)計(jì)的靈活性較差
- 統(tǒng)一編址
存儲(chǔ)器映像編址,存儲(chǔ)器和I/O端口共用統(tǒng)一的地址空間,當(dāng)一個(gè)地址空間分配給I/O端口以后,存儲(chǔ)器就不能再占有這一部分的地址空間- 優(yōu)點(diǎn):不需要專用的I/O指令,任何對(duì)存儲(chǔ)器數(shù)據(jù)進(jìn)行操作的指令都可用于I/O端口的數(shù)據(jù)操作,程序設(shè)計(jì)比較靈活;由于I/O端口的地址空間是內(nèi)存空間的一部分,這樣,I/O端口的地址空間可大可小,從而使外設(shè)的數(shù)量幾乎不受限制
- 缺點(diǎn):I/O端口占用了內(nèi)存空間的一部分,影響了系統(tǒng)的內(nèi)存容量;訪問I/O端口也要同訪問內(nèi)存一樣,由于內(nèi)存地址較長(zhǎng),導(dǎo)致執(zhí)行時(shí)間增加
- 獨(dú)立編址
2.編址方式
-
按字編址
- 實(shí)現(xiàn)容易簡(jiǎn)單,每個(gè)
編址單位與設(shè)備的訪問單位一致,即每個(gè)編址單位所包含的信息量(二進(jìn)制位數(shù))與訪問一次設(shè)備所獲得的信息量是等同的,早期采用這種方式 - 缺點(diǎn):對(duì)非數(shù)值計(jì)算支持不足,不支持
字節(jié)操作,位操作,需專門設(shè)置字節(jié)操作指令,微操作指令
- 實(shí)現(xiàn)容易簡(jiǎn)單,每個(gè)
-
按字節(jié)編址
- 編址單位是
字節(jié),與信息的基本單位一致 - 即有字節(jié)地址,又有字地址,字節(jié)地址一般連續(xù),字地址一般不連續(xù)
字地址 = n * 字長(zhǎng) / 8(n = 0,1,2,...) - 每個(gè)編址單位所包含的信息量與訪問一次存儲(chǔ)器所獲得的信息量不相同
- 編址單位是
-
字節(jié)編址順序問題
- 小端方式(低字節(jié)低地址)
字節(jié)地址從左往右逆序
小端方式 - 大端方式(高字節(jié)低地址)
字節(jié)地址從左往右升序
大端方式
- 小端方式(低字節(jié)低地址)
-
數(shù)據(jù)存放邊界對(duì)齊問題
- 邊界對(duì)齊
- 規(guī)定了
字節(jié),半字,單字,雙字存放的起始位置 - 優(yōu)點(diǎn):訪問各種長(zhǎng)度的數(shù)據(jù)都可在
一個(gè)存儲(chǔ)周期內(nèi)完成,讀寫控制簡(jiǎn)單 - 缺點(diǎn):造成
存儲(chǔ)空間浪費(fèi),存儲(chǔ)空間利用率低
邊界對(duì)齊
- 規(guī)定了
- 邊界不對(duì)齊:可從
任意位置開始存儲(chǔ)- 不浪費(fèi)存儲(chǔ)空間,不同長(zhǎng)度的數(shù)據(jù)
一個(gè)緊接著一個(gè)存放,存儲(chǔ)空間利用率高 - 訪問雙字,單字都有可能
跨越兩個(gè)字單元存放,可能需花費(fèi)兩個(gè)存儲(chǔ)周期的時(shí)間,存儲(chǔ)器工作速度降低一倍 -
存儲(chǔ)器讀寫控制復(fù)雜
邊界不對(duì)齊
- 不浪費(fèi)存儲(chǔ)空間,不同長(zhǎng)度的數(shù)據(jù)
- 邊界對(duì)齊
3.指令格式
- 操作碼:給出指令操作性質(zhì),即指令要完成的功能
-
地址碼:指出操作數(shù)的地址,或下一條指令在主存儲(chǔ)器中的地址
指令基本格式 - 三地址指令:指令執(zhí)行后
兩個(gè)源操作數(shù)內(nèi)容不變,但指令字長(zhǎng)較長(zhǎng)- 通常完成 A3 <- (A1)OP(A2)
三地址指令
- 通常完成 A3 <- (A1)OP(A2)
- 二地址指令:兩個(gè)源地址之一和目的地址結(jié)合起來,留下另一個(gè)源地址格式保持獨(dú)立
- 通常完成 A1 <- (A1)OP(A2)
- 優(yōu)勢(shì):通過減少一個(gè)地址碼字段,可以
減少指令字長(zhǎng)度。可通過增加地址碼字段位數(shù),提高可尋址范圍 -
缺點(diǎn):影響了程序的靈活性
二地址指令
- 一地址指令:在二地址指令格式基礎(chǔ)上,將源操作數(shù)或目的操作數(shù)設(shè)定到一個(gè)
專用寄存器(通常為AC累加器)中- 通常完成 AC <- (AC)OP(A)
一地址指令
- 通常完成 AC <- (AC)OP(A)
- 零地址指令:源操作數(shù)和目的操作數(shù)都
內(nèi)含在一個(gè)處理機(jī)堆棧中,由兩個(gè)棧頂單元提供兩個(gè)源操作數(shù),結(jié)果(目的操作數(shù))存放在棧頂
零地址指令 - 地址碼個(gè)數(shù)選擇標(biāo)準(zhǔn)
- 程序所占存儲(chǔ)量盡可能小
- 程序的執(zhí)行速度盡可能快
4.操作碼擴(kuò)展技術(shù)
可充分利用指令信息位,有效壓縮操作碼平均長(zhǎng)度
基本思想:當(dāng)采用定長(zhǎng)指令字格式,且多種地址碼結(jié)構(gòu)混合使用,可利用地址碼個(gè)數(shù)較少的指令空出來的地址碼字段,來增加操作碼的位數(shù)
- 定長(zhǎng)操作碼: 操作碼
OP長(zhǎng)度固定,指令譯碼結(jié)構(gòu)簡(jiǎn)單,浪費(fèi)信息位 - 變長(zhǎng)操作碼:操作碼
OP長(zhǎng)度不固定,
首先需明確兩個(gè)原則: - 不允許短碼是長(zhǎng)碼的前綴
-
可表示的指令的操作碼一定不能重復(fù)
通常用全1作為擴(kuò)展標(biāo)志碼,例如下圖,4位操作碼時(shí),用1111作為擴(kuò)展標(biāo)志碼,該操作碼不表示三地址指令,這樣,8位操作碼時(shí),操作碼高4位全為1表示是因?yàn)?code>不允許短碼是長(zhǎng)碼的前綴,若高4位用從0000~1110之間任一編碼,則違反了上述第一個(gè)原則,故高位必須是上一長(zhǎng)度操作碼的擴(kuò)展標(biāo)志碼,只能從低位開始進(jìn)行當(dāng)前操作碼長(zhǎng)度指令編碼,故最多可表示15條二地址指令,12位時(shí),11111111作為擴(kuò)展標(biāo)志碼,16位操作碼時(shí),由于后面沒有可擴(kuò)展的地址空間了,故1111111111111111 可以表示一條零地址指令
5.尋址方式
幾個(gè)與地址相關(guān)的概念
形式地址:指指令中顯式給出的地址
有效地址:也稱邏輯地址,通常指在本程序中的相對(duì)地址,可根據(jù)形式地址通過某種變換得到
即 有效地址 = 形式地址 + 尋址方式
- 指令尋址:
確定下一條將要執(zhí)行的指令所在主存單元地址的方法- 順序?qū)ぶ罚撼绦蛴?jì)數(shù)器
PC+1,自動(dòng)形成下一條指令地址,PC初始值設(shè)定為該程序第一條指令所在主存單元的地址 - 跳躍尋址:
轉(zhuǎn)移類指令給出下一條指令的地址信息
- 順序?qū)ぶ罚撼绦蛴?jì)數(shù)器
- 數(shù)據(jù)尋址
如圖,通常在指令地址碼字段設(shè)置尋址方式子字段,又稱尋址特征字段,指出具體尋址方式,另一個(gè)子字段給出形式地址,一條指令可能包含多個(gè)操作數(shù),各操作數(shù)的尋址方式可以不同
一地址指令-
基本尋址方式
根據(jù)數(shù)據(jù)所在位置不同可分為:-
立即尋址:
操作數(shù)直接在指令地址碼字段給出,即操作數(shù)本身設(shè)在指令字中- 形式地址 I 不是操作數(shù)的地址,而是
操作數(shù)本身,又稱立即數(shù) -
#表示立即尋址特征 - 只能用于
源操作數(shù)尋址 - 作用 :
給寄存器賦初值,立即數(shù)作為常數(shù)參與運(yùn)算 - 有效地址EA 就是
該指令在主存單元的地址 - 特點(diǎn):只要取出指令,便可立即獲得操作數(shù),執(zhí)行階段不必再次訪問存儲(chǔ)器,指令
執(zhí)行速度快 - 缺點(diǎn):I 的位數(shù)限制了所能表示的
立即數(shù)范圍,大量使用立即尋址程序的通用性會(huì)下降
立即尋址
- 形式地址 I 不是操作數(shù)的地址,而是
-
寄存器尋址 : 指
源操作數(shù)已經(jīng)在通用寄存器中,或操作結(jié)果要返回通用寄存器,源操作數(shù),目的操作數(shù)都適用- 形式地址
EA = Ri,Ri為通用寄存器編號(hào) - 獲得操作數(shù)
無需訪問內(nèi)存,指令執(zhí)行時(shí)間短 - 形式地址字段只需指明
寄存器編號(hào)(位數(shù)遠(yuǎn)小于主存單元地址位數(shù)),故指令字長(zhǎng)短,節(jié)省存儲(chǔ)空間
寄存器尋址
- 形式地址
-
存儲(chǔ)器尋址
按有效地址形成方式,可分為:-
直接尋址:地址碼字段的
形式地址A就是操作數(shù)或下一條指令的有效地址- 有效地址
EA = A -
形成地址無需變換,獲得有效地址比較簡(jiǎn)單, - 指令執(zhí)行期間
需訪問一次內(nèi)存 - 缺點(diǎn):
指令字長(zhǎng)限制了形式地址字段的位數(shù),故操作數(shù)或指令的可尋址范圍比較小
直接尋址
- 有效地址
-
存儲(chǔ)器間接尋址
- 形式地址是
操作數(shù)地址的地址 - 有效地址
EA = (A),括號(hào)表示地址A對(duì)應(yīng)存儲(chǔ)單元的內(nèi)容 - 至少
兩次或兩次以上訪存才可獲得操作數(shù)(或指令),可多次間接 - 指令中
形式地址碼長(zhǎng)度可以很短,但尋址范圍可以很大 - 尋址范圍取決于
主存字長(zhǎng)m - 一次間接尋址的最大尋址范圍
2^m字,兩次間接尋址的最大尋址范圍2^(m-1)字(其中一位用來作間接尋址標(biāo)志位,故為m-1次方) - 可為程序設(shè)計(jì)提供很好
靈活性 - 訪問不同主存單元數(shù)據(jù)時(shí),可通過
改變形式地址對(duì)應(yīng)主存單元內(nèi)容,而不必改變指令本身 - 缺點(diǎn):
需多次訪問主存,影響指令執(zhí)行速度
存儲(chǔ)器一次間接尋址 - 多次間接尋址的
尋址標(biāo)志問題
第一次間接尋址標(biāo)志由指令給出,以后每次的間接尋址標(biāo)志由緊接著訪問主存所取出來的地址碼給出,如果取出的地址碼的間接尋址標(biāo)志位(通常用最高位)為1,則表示要用除去標(biāo)志位后的部分作為地址碼,繼續(xù)訪問主存,直至取出來的間接尋址標(biāo)志位為0為止,此時(shí)除去間接尋址標(biāo)志位的地址碼即為有效地址
多次間接尋址
多次間接尋址
- 形式地址是
-
寄存器間接尋址
- 有效地址
EA = (Ri) - 指令中
地址碼長(zhǎng)度更短,寄存器間接尋址范圍取決于寄存器位數(shù)(即機(jī)器字長(zhǎng)n)
寄存器間接尋址
- 有效地址
-
偏移尋址
- 有效地址
EA = (Ri) + A,Ri 是專用寄存器或通用寄存器編號(hào),形式地址A為偏移量,是有符號(hào)整數(shù)
偏移尋址
偏移尋址可分為如下三類:
- 相對(duì)尋址
- 有效地址
EA = (PC) + A,PC為程序計(jì)數(shù)器 - 地址碼字段較短
- 相對(duì)尋址范圍取決于
偏移量A的位數(shù)k,即尋址范圍為:(PC)-2^(k-1) ~ (PC)+2^(K-1) -1(A是有符號(hào)數(shù),k位補(bǔ)碼表示范圍為-2^(k-1) ~ 2^(K-1) -1) - 特點(diǎn):只要操作數(shù)或下一條指令與當(dāng)前指令的相對(duì)距離不變,無論程序存放在主存中哪段區(qū)域都可以正確執(zhí)行,即有利于程序在內(nèi)存中浮動(dòng) ,可編寫與位置無關(guān)的代碼
- 有效地址
- 變址尋址
- 引用一個(gè)
變址寄存器, - 若采用
專用變址寄存器Rx,有效地址EA = (Rx) + A - 若采用
通用寄存器Ri,有效地址EA = (Ri) + A -
常用于對(duì)數(shù)組處理或字符串操作,變址寄存器存放
地址修改量,形式地址A給出基本地址值(起始地址,無符號(hào)整數(shù)) - 操作數(shù)地址變化由
變址值增,減量完成 - 尋址范圍由
變址寄存器位數(shù)n決定,最大尋址空間2^n字
- 引用一個(gè)
- 基址尋址
- 引用一個(gè)
基址寄存器Rb, - 有效地址
EA = (Rb) + A - 常用于實(shí)現(xiàn)操作系統(tǒng)對(duì)用戶程序的動(dòng)態(tài)定位
- 基址寄存器存放的是
基本地址值,一旦設(shè)定后一般用戶不能改變 - 操作數(shù)或指令地址變化由不同的偏移量A完成,尋址范圍由偏移量位數(shù)決定
- 引用一個(gè)
- 變址尋址和基址尋址的共同目標(biāo)是不必修改程序中指令,而達(dá)到修改地址碼的目的
- 有效地址
-
段尋址:基址尋址的一種特例,用于
地址長(zhǎng)度超過機(jī)器字長(zhǎng)的場(chǎng)合- 基本思想:將主存空間在邏輯上劃分成若干段,一個(gè)程序可以占用多個(gè)段,對(duì)指令或操作數(shù)的訪問,需指出
所在段以及段內(nèi)偏移量。與機(jī)器字長(zhǎng)相等的段地址和段內(nèi)偏移量錯(cuò)位相加,獲得更長(zhǎng)存儲(chǔ)器地址,段地址存放在專用的段地址寄存器Rs中 - 整個(gè)段尋址過程由
硬件自動(dòng)完成,對(duì)用戶透明 - 段內(nèi)偏移量是其他尋址方式形成的有效地址EA
- 段尋址后形成的地址就是
實(shí)際的主存單元地址,即物理地址
- 基本思想:將主存空間在邏輯上劃分成若干段,一個(gè)程序可以占用多個(gè)段,對(duì)指令或操作數(shù)的訪問,需指出
-
-
堆棧尋址:FIFO先進(jìn)后出
- 寄存器堆棧(硬堆棧)
- 存儲(chǔ)器堆棧(軟堆棧):在主存開辟一塊區(qū)域,一端固定稱為
棧底,另一端浮動(dòng)稱為棧頂
-
復(fù)合尋址方式:將
兩種以上尋址方式聯(lián)合起來使用即復(fù)合尋址,關(guān)鍵問題在于地址的計(jì)算順序,一般從名稱反映,先按在前的方式進(jìn)行尋址
-




















