版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章計(jì)算機(jī)屬性的優(yōu)選技術(shù)
軟件與硬件功能的分配是計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)的關(guān)鍵,是確定
計(jì)算機(jī)硬件屬性的基礎(chǔ),而計(jì)算機(jī)硬件屬性包括數(shù)據(jù)表示、尋址技
術(shù)、指令系統(tǒng)、總線與機(jī)器級(jí)的I/O結(jié)構(gòu)(含中斷機(jī)構(gòu))、信息保
護(hù)等方面的內(nèi)容。為避免與計(jì)算機(jī)組成原理等其它課程重復(fù),本章
從軟硬件功能分配出發(fā),著重討論計(jì)算機(jī)硬件屬性的優(yōu)化或選擇技
術(shù)。
第一節(jié)數(shù)據(jù)表示
第二節(jié)尋址技術(shù)與存儲(chǔ)保護(hù)
第三節(jié)指令格式的優(yōu)化設(shè)計(jì)
第四節(jié)指令系統(tǒng)的功能設(shè)計(jì)
第五節(jié)輸入輸出系統(tǒng)與總線
第一節(jié)數(shù)據(jù)表示
一、數(shù)據(jù)表示的基本概念
二、引入數(shù)據(jù)表示的基本原則
三、自定義數(shù)據(jù)表示
四、向量與堆棧數(shù)據(jù)表示
五、浮點(diǎn)數(shù)的尾數(shù)基值
一、數(shù)據(jù)表示的基本概念
1.數(shù)據(jù)類型
具有一組值的集合,并定義了作用于該集合的操作集。數(shù)據(jù)類型可分為
基本類型和結(jié)構(gòu)(復(fù)合)類型?;绢愋褪侵覆豢稍俜值膯蝹€(gè)數(shù)據(jù)元素的數(shù)
據(jù)類型,一般包括二進(jìn)制位、二進(jìn)制位串、整數(shù)、十進(jìn)制數(shù)、浮點(diǎn)數(shù)、字符、
布爾數(shù)等;結(jié)構(gòu)類型是由一組相互有關(guān)的數(shù)據(jù)元素復(fù)合而成的數(shù)據(jù)類型,如
數(shù)組、字符串、向量、堆棧、隊(duì)列、記錄等。
2.數(shù)據(jù)表示與數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)類型的表示有兩種方式,一種是用計(jì)算機(jī)的硬件直接表示,另一種
是通過(guò)軟件間接表示,即通過(guò)軟件映像變換成計(jì)算機(jī)的硬件能直接表示的數(shù)
據(jù)類型的集合。
數(shù)據(jù)表蒜指由計(jì)算機(jī)硬件能直接識(shí)別、指令系統(tǒng)能引用的數(shù)據(jù)類型。
數(shù)據(jù)結(jié)構(gòu)是指面向系統(tǒng)軟件與實(shí)際應(yīng)用所需要處理的復(fù)合的數(shù)據(jù)類型,數(shù)
據(jù)結(jié)構(gòu)是數(shù)據(jù)類型中復(fù)雜的、硬件表示難以或無(wú)法實(shí)現(xiàn)的,主要有文件、鏈
表、表、樹(shù)和圖等除了數(shù)據(jù)表示之外的所有數(shù)據(jù)類型。
3.數(shù)據(jù)表示對(duì)運(yùn)算器結(jié)構(gòu)的影響
早期的機(jī)器只有定點(diǎn)數(shù)據(jù)表示,浮點(diǎn)數(shù)則是用兩個(gè)定點(diǎn)數(shù)來(lái)分別
表示其階碼和尾數(shù)。
隨著數(shù)據(jù)處理的需要,增加了浮點(diǎn)數(shù)據(jù)表示、運(yùn)算指令和相應(yīng)
的運(yùn)算硬件,能直接對(duì)浮點(diǎn)數(shù)進(jìn)行運(yùn)算和處理。
變址操作為向量和陣列數(shù)據(jù)類型的實(shí)現(xiàn)提供了直接支持。
可變長(zhǎng)字符串?dāng)?shù)據(jù)表小的引入有力地支持了串?dāng)?shù)據(jù)類型的實(shí)現(xiàn)。
計(jì)算機(jī)的運(yùn)算類指令和運(yùn)算器結(jié)構(gòu)主要是由計(jì)算機(jī)的數(shù)據(jù)表示來(lái)
確定的。
3.高級(jí)數(shù)據(jù)表示及其種類
確定哪些數(shù)據(jù)類型用數(shù)據(jù)表示實(shí)現(xiàn),哪些數(shù)據(jù)類型用數(shù)據(jù)結(jié)構(gòu)
實(shí)現(xiàn),實(shí)質(zhì)是軟硬件的取舍問(wèn)題。
在確定數(shù)據(jù)表示時(shí)應(yīng)考慮怎樣為數(shù)據(jù)類型的實(shí)現(xiàn)提供支持,有
時(shí)引入一些高級(jí)數(shù)據(jù)表示,比在指令系統(tǒng)中增設(shè)技巧性新指令的意
義要大。
高級(jí)。數(shù)據(jù)表示是指需要多個(gè)數(shù)據(jù)字或一個(gè)數(shù)據(jù)字要分為兩個(gè)字段
以上才能實(shí)現(xiàn)的數(shù)據(jù)表不。目前,高級(jí)數(shù)據(jù)表示主要有浮點(diǎn)數(shù)據(jù)表
示、堆棧數(shù)據(jù)表示、向量數(shù)據(jù)表示和自定義數(shù)據(jù)表示
二、引入數(shù)據(jù)表示的基本原則
1.提高系統(tǒng)效率原則
能否提高系統(tǒng)的效率是引入高級(jí)數(shù)據(jù)表示的一個(gè)標(biāo)準(zhǔn)。效率能
否提高取決于是否減少了實(shí)現(xiàn)時(shí)間和存儲(chǔ)空間。實(shí)現(xiàn)時(shí)間是否減少
主要取決于主存和處理機(jī)之間傳送的信息量是否減少,傳送的信息
量越少,實(shí)現(xiàn)時(shí)間就越少。存儲(chǔ)空間的減少,則反映在編譯程序的
縮短(編譯工作減輕)以及目標(biāo)程序指令條數(shù)的減少等方面。
2.通用性強(qiáng)與利用率高的原則
能否提高系統(tǒng)的通用性和利用率是引入高級(jí)數(shù)據(jù)表示的又一個(gè)
標(biāo)準(zhǔn)。
三、自定義數(shù)據(jù)的表示
為解決指令系統(tǒng)識(shí)別數(shù)據(jù)類型,簡(jiǎn)化指令系統(tǒng),減輕編譯的負(fù)
擔(dān),在20世紀(jì)60年代初,美國(guó)Burroughs公司在B5000大型計(jì)算機(jī)上
引入自定義數(shù)據(jù)表示。自定義(Self-defining)數(shù)據(jù)表示包括標(biāo)
志符數(shù)據(jù)表示和描述符數(shù)據(jù)表示兩類。
]標(biāo)志符數(shù)據(jù)表示
標(biāo)志若薪據(jù)表票是指將數(shù)據(jù)類型與數(shù)據(jù)本身直接聯(lián)系在一起,
用標(biāo)志符來(lái)表示數(shù)據(jù)類型。標(biāo)志符應(yīng)由編譯程序建立,對(duì)高級(jí)語(yǔ)言
程序透明,以減輕應(yīng)用程序員的負(fù)擔(dān)。
標(biāo)志域數(shù)城域
類型1其它數(shù)值
1
1
主要優(yōu)點(diǎn)
①、簡(jiǎn)化了指令系統(tǒng)和程序設(shè)計(jì)
②減輕了編譯軟件的負(fù)擔(dān)
③便于硬件實(shí)現(xiàn)數(shù)據(jù)的一致性校驗(yàn)和自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換
④支持?jǐn)?shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)與數(shù)據(jù)類型無(wú)關(guān)的要求
⑤支持軟件調(diào)試和應(yīng)用軟件開(kāi)發(fā)
主要缺點(diǎn)
①增加了程序所占的主存空間。數(shù)據(jù)字因增設(shè)標(biāo)志符而加長(zhǎng),
從而增加了程序所占的主存空間
②降低了指令的執(zhí)行速度
③增加了硬件的復(fù)雜度
綜上所述,標(biāo)志符數(shù)據(jù)表示有明顯的優(yōu)點(diǎn),加上硬件和存儲(chǔ)器價(jià)格
持續(xù)下降,使這種能縮小高級(jí)語(yǔ)言和機(jī)器語(yǔ)言語(yǔ)義差距的標(biāo)
志符數(shù)據(jù)表示得到廣泛的使用。
2.描述符數(shù)據(jù)表示
描述符和標(biāo)志符的主要差別是標(biāo)志符只作用于一個(gè)數(shù)據(jù),與數(shù)
據(jù)合存于同一存儲(chǔ)單元,描述單個(gè)數(shù)據(jù)的類型特性;而描述符是與
數(shù)據(jù)分開(kāi)存放的,獨(dú)立占據(jù)一個(gè)存儲(chǔ)單元,用于描述所要訪問(wèn)的一
組數(shù)據(jù)的屬性(含該組數(shù)據(jù)的訪問(wèn)地址、長(zhǎng)度及其特征或信息等。
描述符數(shù)據(jù)表示的優(yōu)缺點(diǎn)與標(biāo)志符數(shù)據(jù)表示基本一樣,描述符
數(shù)據(jù)表示的機(jī)器比標(biāo)志符數(shù)據(jù)表示可能要復(fù)雜。
101各種標(biāo)志位K度地址000數(shù)據(jù)
(a)描述符(b)數(shù)據(jù)
圖4.4B6700機(jī)中的描述符數(shù)據(jù)表示格式
描述符數(shù)據(jù)表示的訪問(wèn)方法特別地可將描述符按樹(shù)形
連接起來(lái)描述多維數(shù)組
四、向量與堆棧數(shù)據(jù)表示
1.向量數(shù)組數(shù)據(jù)表示
在引入向量數(shù)組數(shù)據(jù)表示的基礎(chǔ)上,一般會(huì)設(shè)置相應(yīng)的硬件以
支持向量、數(shù)組等數(shù)據(jù)結(jié)構(gòu)的快速運(yùn)算,從而組成向量處理機(jī)。
在具有向量、數(shù)組數(shù)據(jù)表示的向量處理機(jī)上,硬件上設(shè)置有豐
富的的向量或陣列運(yùn)算指令,配置有以流水或陣列方式處理的高速
運(yùn)算器,只需用一條向量加法指令:
C(l:lOOO)=A(1:1000)+B(1:1000)
優(yōu)點(diǎn):
@便于實(shí)現(xiàn)將向量元素成塊預(yù)取到中央處理器
②利用硬件判斷下標(biāo)是否越界,并讓越界判斷和元素運(yùn)算并行
③可設(shè)有對(duì)陣列中的每一個(gè)元素又是一個(gè)子陣列的列的相關(guān)型交叉
陣列進(jìn)行操作的處理硬件,還可設(shè)有對(duì)大量元素是零的稀疏向量
、數(shù)組進(jìn)行壓縮存儲(chǔ)、還原、運(yùn)算等指令和硬件,從而不但可節(jié)
省大量的存儲(chǔ)空間,也由于不必處理零元素而節(jié)省了很多時(shí)間。
2.堆棧數(shù)據(jù)表示
具有堆棧數(shù)據(jù)表示的機(jī)器稱為堆棧型機(jī)器,它在堆棧操作方面比通用
寄存器型機(jī)器有明顯優(yōu)勢(shì)。
在硬件上,堆棧型機(jī)器對(duì)堆棧數(shù)據(jù)表示的支持體現(xiàn)在具有高速寄存器組
成的硬件堆棧,并附加控制電路讓它與主存中的堆棧區(qū)在邏輯上組成一個(gè)整
體,使堆棧的訪問(wèn)速度是寄存器的速度,而堆棧的容量是主存的容量。通用
寄存型機(jī)器的堆棧置于內(nèi)存中,訪問(wèn)速度低。
在軟件上,堆棧型機(jī)器有很豐富的堆棧操作類指令且功能很強(qiáng),直接可
對(duì)堆棧中的數(shù)據(jù)進(jìn)行各種運(yùn)算和處理。相對(duì)來(lái)說(shuō),通用寄存器型用于堆棧操
作的指令很少,且功能單一。
堆棧型機(jī)器對(duì)編譯和子程序調(diào)用遠(yuǎn)優(yōu)于通用寄存器型機(jī)器。
堆棧型機(jī)器是面向堆棧尋址的,采用所謂的零地址尋址。通用寄存型機(jī)
器面向寄存器尋址而不用訪存,速度比面向堆??斓枚啵瑢?duì)向量、矩陣運(yùn)算
有明顯優(yōu)勢(shì)。而堆棧型機(jī)器一般是對(duì)棧頂運(yùn)算,難以直接訪問(wèn)到不在棧頂?shù)?/p>
向量或矩陣的任一元素,遠(yuǎn)不如面向寄存器尋址。
五、浮點(diǎn)數(shù)的尾數(shù)基值
1.浮點(diǎn)數(shù)數(shù)據(jù)表示的格式
浮點(diǎn)數(shù)據(jù)表示的格式包括兩個(gè)部分:階碼和尾數(shù),其一般形式
為:
e
N=mXrm
m:尾數(shù)的數(shù)值,一般采用定點(diǎn)小數(shù)的原碼或補(bǔ)碼表示;
e:階碼的數(shù)值,一般采用定點(diǎn)整數(shù)的補(bǔ)碼或移碼表示;
rm:尾數(shù)的基值,一般為二、八、十或十六;
re:階碼的基值,一般為二進(jìn)制數(shù);
P:尾數(shù)的長(zhǎng)度(不含符號(hào)位);
q:階碼的長(zhǎng)度(不含符號(hào)位)。
可表示的零,
;可表示負(fù)實(shí)數(shù),可表示正實(shí)數(shù),
負(fù)下溢區(qū)正下溢區(qū),
負(fù)上溢區(qū),區(qū)中的離散值,需展牌-葉溢區(qū).
---------------,KKX。興?實(shí)數(shù)軸?
01?
圖4.7浮點(diǎn)數(shù)可表示實(shí)數(shù)域中的值?
由圖4.7可見(jiàn),浮點(diǎn)數(shù)階碼的位數(shù)q主要影響兩個(gè)可表示區(qū)的大
小,即可表示數(shù)的范圍;而尾數(shù)的位數(shù)p主要影響在可表示區(qū)中能
表示值的精度。
當(dāng)階值位數(shù)q一定時(shí),尾數(shù)采用什么進(jìn)制也會(huì)影響浮點(diǎn)數(shù)的可
表示范圍、精度及數(shù)在數(shù)軸上分布的離散程度。機(jī)器中階碼都采用
二進(jìn)制,以避免運(yùn)算中因?qū)﹄A造成的精度和有效數(shù)值的過(guò)多損失。
那么,尾數(shù)應(yīng)采用什么進(jìn)制呢?
2.浮點(diǎn)數(shù)尾數(shù)基值對(duì)浮點(diǎn)數(shù)特性的影響
在機(jī)器中,一個(gè)%進(jìn)制的數(shù)需用riog2rmJ個(gè)機(jī)器位來(lái)表示。
尾數(shù)的機(jī)器位數(shù)是p時(shí),相當(dāng)于%進(jìn)制的尾數(shù)有個(gè)數(shù)位p'個(gè)數(shù)位,其
位權(quán)由小數(shù)點(diǎn)向右依次為%"、……、rm-P1,且其中:
p'=p/r10g2rmJ
分析尾數(shù)基數(shù)%取不同值的影響,顯然應(yīng)是在機(jī)器位數(shù)、階值
位數(shù)q、尾數(shù)位數(shù)p相同的情況下,認(rèn)識(shí)不同的%對(duì)數(shù)據(jù)表示的特性
參數(shù)的影響,如表4-1所示。為簡(jiǎn)化分析,一是只比較非負(fù)階、正
尾數(shù),且都是規(guī)格化的數(shù),對(duì)于負(fù)階和負(fù)尾數(shù)也是一定適用的;二
是以%是2的整數(shù)幕來(lái)討論,對(duì)%不是2的整數(shù)幕時(shí)也是符合的。
條件:非負(fù)階、正尾階值:二進(jìn)制q位若q=2,p=4
數(shù)、規(guī)格化尾數(shù):。進(jìn)制p'位
當(dāng)r:2(即p,=4)當(dāng)rj16(即p'=1)
可表示最小尾數(shù)值IXrJ(即%,)1/21/16
可表示用大尾數(shù)值1-1Xr「’(即l-r「’)15/1615/16
特例:1-2中
最大階值2^-13:3
可表示最小值0°XrmT(即r/)1/21/16
可表示最大值7.53840
r-廠2)
特例:產(chǎn)”x(l—2-")
可.表示的尾數(shù)個(gè)數(shù)rj'X(7-l)/r”815
特例:2Px(yD/r.
可表示階的個(gè)數(shù)2q44
可表示數(shù)的個(gè)數(shù)2'XrE(r“-l)/r?,3260
特例:2/2"(4-1)/%
具體分析如下:
(1)可表示數(shù)的范圍。由表4-1知,隨%增大,可表示的最小值小」將減
小??杀硎咀畲笾禐閺S廠T>x(「2-。),其中(12P)部分為常數(shù),隨%增大,因增
大而使得可表示的最大值增大。因此,隨小的增大,可表示數(shù)的范圍增大。
(2)可表示數(shù)的個(gè)數(shù)。由表4-1可知,可表示數(shù)的個(gè)數(shù)為2q+p(i-%」),其
中2q+p為常數(shù),所以隨小的增大,將因(1-%」)增大而使可表示數(shù)的個(gè)數(shù)增多
°(3)數(shù)在數(shù)軸上的分布。%越大,在與7=2的浮點(diǎn)數(shù)相重疊的范圍內(nèi),
數(shù)的密度分布越稀。
(4)可表示數(shù)的精度。%越大,數(shù)在數(shù)軸上的分布變稀,數(shù)的表示精度
自然下降。
(5)運(yùn)算中的精度損失。%越大,尾數(shù)右移的機(jī)會(huì)越小,精度的損失就
越小。
(6)運(yùn)算速度。入大時(shí),由于對(duì)階或尾數(shù)溢出需右移和規(guī)格化需左移的
次數(shù)減少,運(yùn)算速度可以提高。
3.浮點(diǎn)數(shù)格式的設(shè)計(jì)
浮點(diǎn)數(shù)格式的設(shè)計(jì)是要在浮點(diǎn)數(shù)表數(shù)范圍和表數(shù)精度給定的情況下,確
定浮點(diǎn)數(shù)表數(shù)的位數(shù)和尾數(shù)字長(zhǎng)p二階碼字長(zhǎng)
根據(jù)大多數(shù)計(jì)算機(jī)的實(shí)際情況,假定浮點(diǎn)數(shù)的尾數(shù)用原碼、小數(shù)表示,
階碼用移碼、整數(shù)表示,尾數(shù)基值3=2,階碼基值又=2,BPp=p^;根據(jù)實(shí)際
應(yīng)用要求給出表數(shù)范圍不小于4(N為能表示的最大的正數(shù)),表數(shù)精度不
低于3,并且要求尾數(shù)和階碼都正、負(fù)對(duì)稱。
由表數(shù)范圍的要求,則有:
22£,-1>AA=>2">I。-z+1
log(logN/log2+1)
q(4-4)
log2
根據(jù)表數(shù)精度的要求,則有:
—X2-(77-])<3[=>2-/?<3
2
解不等式得到尾數(shù)字長(zhǎng):
(4-5)
由(4-4)和(4-5)兩個(gè)不等式計(jì)算出浮點(diǎn)數(shù)的尾數(shù)字長(zhǎng)p和階
碼字長(zhǎng)q,再加上一個(gè)尾數(shù)符號(hào)位和一個(gè)階碼符號(hào)位就構(gòu)成了一種
浮點(diǎn)數(shù)格式。
六、原子類型操作數(shù)的大小
原子類型操作數(shù)的大?。╯ize)是指操作數(shù)的位數(shù)或字節(jié)數(shù)。一
般來(lái)說(shuō),原子類型操作數(shù)的大小主要有:字節(jié)(8位)、半字(16
位)、字(32位)、雙字(64位)。
表4-2不同操作數(shù)大小的訪問(wèn)頻度
操作數(shù)大小訪問(wèn)頻度
整型平均浮點(diǎn)平均
字節(jié)7%()
半字19%0
單字74%31%
雙字069%
例4.1IBM370系統(tǒng)計(jì)算機(jī)的短浮點(diǎn)數(shù)使用的階碼基值%=2,階
值位數(shù)6位,尾數(shù)基值r「16,尾數(shù)位數(shù)p—6,即按照使用的二進(jìn)
制位數(shù)來(lái)說(shuō),等價(jià)于p=24。計(jì)算在非負(fù)階、正尾數(shù)、規(guī)格化情況
下的最小尾數(shù)值、最大尾數(shù)值、最大階值、可表示的最小值和最
大值、可表示數(shù)的個(gè)數(shù)及可表示數(shù)的精度。
解:最小尾數(shù)值:%"=16/=2」
最大尾數(shù)值:=1-16-6=1-23
最大階值:2q-1=26-1=63
114
可表示數(shù)的最小值:2°Xrm=16-=2-
z
可表示數(shù)的最大值:蠟—X(l-rm-P)=1663(1-16-24)=2252
(1-16-24)
30
可表示數(shù)的個(gè)數(shù):2^^(rm-l)"m=26X166(16-1)/16=2
(1-2-4)
可表示數(shù)的精度:/xr-=16-(6/)/2=2-21
例4.2設(shè)計(jì)一種浮點(diǎn)數(shù)格式,其表數(shù)范圍要求在1。37至1Q37之間,正負(fù)
數(shù)對(duì)稱,表數(shù)精度不低于10",且浮點(diǎn)數(shù)的尾數(shù)用原碼、小數(shù)表示,階碼用
移碼、整數(shù)表示,尾數(shù)基值?和階碼基值一都為2。
解依題意,取表數(shù)范圍N=1037,表數(shù)精度3=10-16。
由式(4-4)得:.>1°超。=6.95,上取
整,得到階碼字長(zhǎng)q=7。1082
由式(4-5)得:,>一:::;"=53.2,上取整,得
到尾數(shù)字長(zhǎng)p=54。
從而加上一個(gè)尾數(shù)符號(hào)位和一個(gè)階碼符號(hào)位,浮點(diǎn)數(shù)的
總字長(zhǎng)為:p+q+2=54+7+2=63。
實(shí)際浮點(diǎn)數(shù)總字長(zhǎng)應(yīng)為8的倍數(shù),故取浮點(diǎn)數(shù)總字長(zhǎng)為
64位。讓p增加一位,即p=55。如圖4-8所示是設(shè)計(jì)出來(lái)的
浮點(diǎn)數(shù)格式。
位序63628760
尾符S階符F~
長(zhǎng)度1p=551q=7
第二節(jié)尋址技術(shù)與存儲(chǔ)保護(hù)
一、編址方式
二、尋址方式
三、程序裝入與定位
一、編制方式
1.編址單位
目前常用的編址單位有字編址、字節(jié)編址和位編址等三種,其
中寄存器、堆棧和輸入輸出設(shè)備的編址單位對(duì)機(jī)器的影響與編址單
位對(duì)應(yīng)性強(qiáng),容易作出選擇。主存儲(chǔ)器對(duì)于不同的編址單位對(duì)機(jī)
器的影響則會(huì)產(chǎn)生極端現(xiàn)象,因此主要討論主存儲(chǔ)器編址單位。
字編址方式每個(gè)編址單位與功能部件的訪問(wèn)單位相一致;其主
要缺點(diǎn)是對(duì)非數(shù)值數(shù)據(jù)沒(méi)有支持。
字節(jié)編址適合于非數(shù)值數(shù)據(jù)的處理,其編址單位也與部分功能
部件(如外部設(shè)備)的信息單位相一致。
當(dāng)字節(jié)編址時(shí),一個(gè)多字節(jié)的數(shù)據(jù)字有2種存儲(chǔ)方式。
一是小端存儲(chǔ)(LittleEndian)
字地址NB3BB()
字地址N+3N+2N+lN+0
二是大端存儲(chǔ)(BigEndian)
字地址NB
B32B.Bo
字地址N+0N+lN+2N+3
2.線性編址方式
存儲(chǔ)數(shù)據(jù)信息的功能部件有寄存器、主存儲(chǔ)器、堆棧和輸入輸
出設(shè)備,其中堆棧不需要編址。線性編址方式是依據(jù)零地址空間的
個(gè)數(shù)來(lái)分,對(duì)寄存器、主存儲(chǔ)器和輸入輸出設(shè)備等三種存儲(chǔ)部件來(lái)
說(shuō),則零地址空間的個(gè)數(shù)有零個(gè)、一個(gè)、二個(gè)和三個(gè):
(1)三個(gè)零地址空間即是對(duì)寄存器、主存儲(chǔ)器和輸入輸出設(shè)備等三種存
儲(chǔ)部件分別進(jìn)行地址定位。
(2)二個(gè)零地址空間即是寄存器單獨(dú)地址定位,主存儲(chǔ)器和輸入輸出
設(shè)備則統(tǒng)一進(jìn)行地址定位,一般在高端地址中給出一部分作為輸入輸出設(shè)備
的地址。
(3)一個(gè)零地址空間即是寄存器、主存儲(chǔ)器和輸入輸出設(shè)備等三種存
儲(chǔ)部件統(tǒng)一進(jìn)行地址定位,一般在高端地址中給出一部分作為輸入輸出設(shè)備
的地址,在低端地址中給出一部分作為寄存器的地址。
(4)零個(gè)零地址空間即是隱含地址定位,它進(jìn)一步把一個(gè)零地址空間的
優(yōu)缺點(diǎn)推到極端。
3.I/O設(shè)備的非線性編址
計(jì)算機(jī)系統(tǒng)中的I/O設(shè)備多種多樣,接口上需要編址的寄存器數(shù)
目相差很大,因此I/O設(shè)備的編址必須根據(jù)對(duì)具體設(shè)備操作的要求
來(lái)決定,一般有三種編址方法:
(1)一臺(tái)設(shè)備一個(gè)地址
(2)一臺(tái)設(shè)備兩個(gè)地址
(3)一臺(tái)設(shè)備多個(gè)I/O地址
二、尋址方式
尋址包括指令尋址和操作數(shù)尋址。操作數(shù)尋址過(guò)程復(fù)雜、形式
多樣。根據(jù)操作數(shù)存放的位置可有下列幾種類型。
1.立即數(shù)尋址
指直接在指令的地址碼部分給出操作數(shù)。該尋址方式的優(yōu)點(diǎn)是
不需要存儲(chǔ)單元,指令執(zhí)行速度快。但只能用于源操作數(shù)尋址,數(shù)
據(jù)長(zhǎng)度不能太長(zhǎng),程序的通用性差。
2.通用寄存器尋址
通用寄存器尋址是指操作數(shù)置放在通用寄存器中。
優(yōu)點(diǎn):1)指令字長(zhǎng)短;2)指令執(zhí)行速度快;3)支持向量數(shù)組
運(yùn)算。
缺點(diǎn):1)不利于優(yōu)化編譯;2)現(xiàn)場(chǎng)切換困難;3)硬件復(fù)雜。
3.主存儲(chǔ)器尋址
主存儲(chǔ)器的尋址方式包括直接尋址、間接尋址和變址尋址等
三種類型。
1)直接尋址是指在指令中直接給出操作數(shù)在主存中的有效地
址;
2)間接尋址是指指令中給出的是操作數(shù)在主存中地址的地
址;
3)變址尋址是指用一稱為變址寄存器的內(nèi)容與一個(gè)地址偏
移量做算術(shù)加來(lái)得到有效地址。
4.堆棧尋址
堆棧尋址方式的地址是隱含的,在指令中不必給出操作數(shù)的地
址,所需要的操作數(shù)在堆棧棧頂彈出。
特點(diǎn):1)算術(shù)表達(dá)式可很容易轉(zhuǎn)化為逆波蘭式,直接形成由堆
棧指令組成的程序,從而支持高級(jí)語(yǔ)言,簡(jiǎn)化了編譯程序。2)含
有堆棧尋址的指令中地址碼很短,相應(yīng)的程序存儲(chǔ)容量小。3)堆
5.I/O設(shè)備尋址
相對(duì)主存儲(chǔ)器來(lái)說(shuō),I/O設(shè)備端口尋址種類單一,一般是直接尋
址和間接尋址,速度也較慢。在主存儲(chǔ)器和I/O設(shè)備端口統(tǒng)一編址
的情況下,其尋址似乎與主存儲(chǔ)器尋址一樣,但執(zhí)行過(guò)程比較復(fù)雜
,速度可能更慢。因此,在需要批量、高速傳送I/O數(shù)據(jù)時(shí),必須
采用中斷、DMA或通道等方式。
三、程序裝入與定位
程序員編寫程序時(shí)使用的地址成為邏輯地址(LA),程序的邏
輯地址相對(duì)本程序一般從0開(kāi)始。程序在主存儲(chǔ)器中的實(shí)際地址稱
為物理地址(PA),它是從0開(kāi)始的一維線性空間。在計(jì)算機(jī)中的
往往要運(yùn)行多道程序,如何把程序和相關(guān)數(shù)據(jù)從外存裝入主存儲(chǔ)器
,就涉及需要進(jìn)行程序的邏輯地址空間到存儲(chǔ)程序的物理地址空間
的映像和變換,這個(gè)過(guò)程稱為程序的定位。程序需要定位的主要原
因有以下幾個(gè)方面。
(1)程序的獨(dú)立性要求;
(2)程序的模塊化設(shè)計(jì);
(3)有些程序本身很大,難以一次性加載,需要在程序運(yùn)行中
分段替換裝入,這同樣要求動(dòng)態(tài)決定程序和數(shù)據(jù)的主存儲(chǔ)器物理地
也
程序定位的方式
根據(jù)程序中指令和數(shù)據(jù)的主存儲(chǔ)器物理地址的確定時(shí)間,有三
種定位方式:
1)直接定位:直接定位方式是程序員編程時(shí)就已經(jīng)確定好程
序的地址空間,即利用物理地址編程。一般適用于單任務(wù)方式,因
為一個(gè)程序運(yùn)行時(shí),計(jì)算機(jī)的全部資源即被它獨(dú)占。
2)靜態(tài)定位:目的程序裝入主存儲(chǔ)器時(shí),通過(guò)調(diào)配運(yùn)行系統(tǒng)
配備的裝入程序,把目的程序的邏輯地址用軟的方法逐一修改成物
理地址。在程序執(zhí)行時(shí),物理地址不能再改變。這種定位技術(shù)稱為
靜態(tài)定位方式。
優(yōu)點(diǎn):一是可由軟件完成;二是可對(duì)多個(gè)程序段組成的程序進(jìn)
行靜態(tài)鏈接,實(shí)現(xiàn)起來(lái)簡(jiǎn)單。
缺點(diǎn):一是在程序執(zhí)行期間不能動(dòng)態(tài)調(diào)整,不利于程序再裝;
二是多個(gè)用戶或進(jìn)程不能分享主存儲(chǔ)器中的某個(gè)公共代碼,如果幾
個(gè)用戶要使用同一個(gè)程序,必須在各自的主存儲(chǔ)器空間中存放一個(gè)
程序副本,這不利于多道程序的運(yùn)行環(huán)境;三是若程序所需存儲(chǔ)容
量超過(guò)了分配給它的主存儲(chǔ)器空間,則程序員必須采用覆蓋結(jié)構(gòu);
四是不利于重疊、流水線技術(shù)的應(yīng)用。
(a)第一次靜態(tài)定位(b)第二次靜態(tài)定位
3)動(dòng)態(tài)定位:動(dòng)態(tài)定位方式采用基址尋址方法,即設(shè)置基址寄
存器和地址加法器,將主存儲(chǔ)器的起始地址存入該程序的基址寄存
器中,指令的地址字段不做修改,程序在執(zhí)行過(guò)程中不斷將邏輯地
址加上基址寄存器中的基址來(lái)形成物理地址。
優(yōu)點(diǎn):一是提高了主存空間的利用利率;二是多個(gè)程序可以共
享主存中的同一個(gè)程序段;三是支持虛擬存儲(chǔ)器。
缺點(diǎn):1)需要由硬件支持;2)實(shí)現(xiàn)存儲(chǔ)管理的軟件算法比較
復(fù)雜。
第三節(jié)指令格式的優(yōu)化設(shè)計(jì)
一、指令系統(tǒng)設(shè)計(jì)的基礎(chǔ)
二、指令系統(tǒng)的結(jié)構(gòu)分類
三、指令字的編碼格式
四、指令格式中的地址碼
五、指令格式中的操作碼編碼
六、指令系統(tǒng)中的控制指令
一、指令系統(tǒng)設(shè)計(jì)的基礎(chǔ)
指令系統(tǒng)是軟、硬件之間的主要界面,在很大程度上,指令系
統(tǒng)決定了計(jì)算機(jī)系統(tǒng)具有的基本功能。指令系統(tǒng)的設(shè)計(jì)包括指令的
功能設(shè)計(jì)和指令格式設(shè)計(jì)。為指令系統(tǒng)設(shè)計(jì)一套有效的指令格式,
不僅能夠讓機(jī)器語(yǔ)言程序設(shè)計(jì)者使用起來(lái)很方便,硬件實(shí)現(xiàn)起來(lái)比
較容易,而且能夠節(jié)省大量的程序存儲(chǔ)空間。而指令格式有很多類
型,就需要進(jìn)行折中和優(yōu)化組合。
1.指令系統(tǒng)設(shè)計(jì)的基本要求
(1)完備性。完備性指用匯編語(yǔ)言編寫各種程序時(shí),指令系統(tǒng)
直接提供的指令足夠使用,而不必用軟件來(lái)實(shí)現(xiàn)。
(2)高效性。高效性是指利用該指令系統(tǒng)所編寫的程序能夠高
效率的運(yùn)行,其主要表現(xiàn)在程序占據(jù)存儲(chǔ)空間小、執(zhí)行速度快、指
令的使用頻度高。
(3)規(guī)整性。規(guī)整性包括指令系統(tǒng)的對(duì)稱性、勻齊性、指令格
式和數(shù)據(jù)格式的一致性。對(duì)稱性是指所有與指令系統(tǒng)有關(guān)的存儲(chǔ)單
元的使用、操作碼的設(shè)置等都是對(duì)稱的,可同等對(duì)待,所有的指令
都可使用各種尋址方式。勻齊性是指一種操作性質(zhì)的指令可以支持
各種不同的數(shù)據(jù)類型、操作數(shù)大小和存儲(chǔ)單元。指令格式和數(shù)據(jù)格
式的一致性是指指令長(zhǎng)度和數(shù)據(jù)長(zhǎng)度有一定的關(guān)系,以方便處理和
存取。
(4)兼容性。系列機(jī)各機(jī)種之間具有相同的基本結(jié)構(gòu)和共同的
基本指令系統(tǒng),因而指令系統(tǒng)是兼容的,即各機(jī)種上基本軟件可以
通用。但由于不同機(jī)種推出的時(shí)間不同,在結(jié)構(gòu)和性能上有差異,
做到所有軟件都完全兼容是不可能的,只能做到“向上兼容”,即
在低檔機(jī)上開(kāi)發(fā)運(yùn)行的軟件可以在高檔機(jī)上運(yùn)行,也就是指令系統(tǒng)
的指令可以增加,但不能刪除或更改指令功能和格式。
(5)正交性。正交性是指指令中各個(gè)不同含義的字段,如操作
類型、數(shù)據(jù)類型、尋址方式等,在編碼時(shí)應(yīng)互不相關(guān)、相互獨(dú)立。
2.指令格式優(yōu)化設(shè)計(jì)的目的
指令是由操作碼和地址碼兩部分組成。操作碼指示指令的功能
(即操作性質(zhì)或操作類型)和所用操作數(shù)的數(shù)據(jù)類型(對(duì)于操作數(shù)
不帶類型標(biāo)志的操作數(shù)而言)。地址碼指示操作數(shù)存放的位置,體
現(xiàn)操作數(shù)的來(lái)源和表示,包括操作數(shù)地址、尋址方式及地址的附加
信息,如偏移量、塊長(zhǎng)度、跳距等。
指令格式的設(shè)計(jì)就是要確定操作碼字段和地址碼字段(含尋址
方式)的大小、組合形式、編碼方法和表示方式。而指令格式設(shè)計(jì)
的主要目的有兩個(gè),一是使指令字的平均長(zhǎng)度短,用較少的位數(shù)來(lái)
表示指令的操作信息和地址信息,以便節(jié)省程序的存儲(chǔ)空間,二是
使指令格式盡量規(guī)整,以減少硬件譯碼的復(fù)雜程度,提高指令的執(zhí)
行速度。
指令格式優(yōu)化設(shè)計(jì)的基本思想為:指令格式的優(yōu)化設(shè)計(jì)可以從
操作碼、地址碼、尋址方式、地址結(jié)構(gòu)等幾個(gè)方面著手,盡量接近
指令格式優(yōu)化設(shè)計(jì)的兩個(gè)主要目標(biāo)。具體說(shuō)來(lái)是:
(1)采用合適的操作碼編碼方法;
(2)采用0、1、2、3等多種地址結(jié)構(gòu),增強(qiáng)單條指令的功能
,縮短整個(gè)程序的長(zhǎng)度,并加快程序的執(zhí)行速度;
(3)在同種地址結(jié)構(gòu)時(shí)再采用多種地址形式;
(4)米用多種尋址方式。
二、指令系統(tǒng)的結(jié)構(gòu)分類
I.按操作數(shù)在CPU中的存儲(chǔ)方法分類
計(jì)算機(jī)指令系統(tǒng)的結(jié)構(gòu)分類主要由5個(gè)因素來(lái)決定,即:
①操作數(shù)在CPU中的存儲(chǔ)方法;
②操作數(shù)在指令中顯式表示的個(gè)數(shù);
③操作數(shù)的尋址方式;
④指令系統(tǒng)提供的操作類型;
⑤操作數(shù)的類型和大小。
其中操作數(shù)在CPU中的存儲(chǔ)方法,即用來(lái)存儲(chǔ)操作數(shù)的存儲(chǔ)單
元的類型,是各種指令系統(tǒng)的結(jié)構(gòu)之間最主要的區(qū)別。
在CPU中用來(lái)存儲(chǔ)操作數(shù)的存儲(chǔ)單元主要有堆棧、累加器和一
組寄存器等,從而也就有堆棧型、累加器型和寄存器型等三種類型
的指令。
表4-5三種類型指令對(duì)操作數(shù)的存取方式及其優(yōu)缺點(diǎn)
運(yùn)算指令顯
目的存操作數(shù)的訪問(wèn)
類型式的操作數(shù)優(yōu)點(diǎn)缺點(diǎn)
儲(chǔ)單元方法
個(gè)數(shù)
一種表示計(jì)算的
不能隨機(jī)訪問(wèn)堆棧,
堆棧型0堆棧PUSH/POP簡(jiǎn)單模型,指令
短小難以生成有效代碼
加
累
器
LOAD/STORE累減少機(jī)器內(nèi)部狀累加器是惟一的,
型1累加器
加器態(tài),指令短小通信開(kāi)銷大
寄存器操作數(shù)均要命名且
寄存器LOAD/STORE寄代碼生成的最一
2/3或存儲(chǔ)顯式表示,指令較
型存器或存儲(chǔ)器般模型
器長(zhǎng)
2.通用寄存器指令系統(tǒng)的結(jié)構(gòu)分類
通用寄存器型指令系統(tǒng)結(jié)構(gòu)的主要優(yōu)點(diǎn):
1)能夠使編譯器有效地使用寄存器。在表達(dá)式求值方面,
寄存器型指令系統(tǒng)結(jié)構(gòu)比堆棧型指令集結(jié)構(gòu)和累加器型指令系統(tǒng)結(jié)
構(gòu)具有更大的靈活性;
2)寄存器可以用來(lái)存放變量。
通用寄存器指令系統(tǒng)結(jié)構(gòu)是現(xiàn)代指令集結(jié)構(gòu)類型的主流,而且
可能延續(xù)使用相當(dāng)長(zhǎng)的時(shí)間。
CPU到底需要設(shè)置多少個(gè)寄存器呢?
通用寄存器型指令系統(tǒng)結(jié)構(gòu)細(xì)分:
1)寄存器-寄存器型(R?R:Register?Register)
2)寄存器-存儲(chǔ)器型(R?M:Register—Memory)
3)存儲(chǔ)器--存儲(chǔ)器型(M~M:Memory?Memory)。
三、指令字的編碼格式
指令字的長(zhǎng)度主要取決于操作碼的長(zhǎng)度、操作數(shù)地址的長(zhǎng)度和
操作數(shù)地址的個(gè)數(shù),由于不同的指令,操作碼的長(zhǎng)度、操作數(shù)地址
的長(zhǎng)度和操作數(shù)地址的個(gè)數(shù)都有可能不一樣,所以指令字的長(zhǎng)度一
般不是固定的,通常是字節(jié)的整數(shù)倍。
舞祚海地址曬::操作根■速痂:由地址F法::地址口驊:
空白;::毓城照空白蚯址何2::地址段3;:
操作碼空白;三地卅滴空白空白;區(qū)址檄:
圖4-15指令字長(zhǎng)度固定時(shí)等長(zhǎng)地址碼的編碼格式圖4-15指令字長(zhǎng)度固定時(shí)等長(zhǎng)操作碼的編碼格式
1.操作碼長(zhǎng)度固定的編碼格式
在操作碼長(zhǎng)度固定的情況下,即使操作數(shù)地址的個(gè)數(shù)不變,通
過(guò)設(shè)置不同的地址字段,可以形成不同特點(diǎn)三的種指令系統(tǒng)的編碼
格式,如圖4-17所示:
變長(zhǎng)編碼格式操作地址描述符地址碼字段1......地址描述符地址碼字段
碼1nn
操作地址碼1地址碼2地址碼
定長(zhǎng)編碼格式碼3
混合編碼格式操作地址描述符地址描述符2地址碼字段
碼1
操作地址描述地址碼字操作地址描述符地址碼字段1地址碼字段2
碼符段碼
第一種是變長(zhǎng)編碼格式
當(dāng)指令系統(tǒng)包含多種尋址方式和操作類型時(shí),該編碼方式
可有效減少指令系統(tǒng)指令字的平均長(zhǎng)度,降低目標(biāo)代碼的長(zhǎng)度,但
會(huì)使各條指令字的長(zhǎng)度和執(zhí)行時(shí)間大不一樣。多數(shù)CISC計(jì)算機(jī)的
指令系統(tǒng)采用這種編碼格式。
第二種是定長(zhǎng)編碼格式
定長(zhǎng)編碼格式是將操作類型和尋址方式組合編碼在操作碼
中,一般可使所有指令的長(zhǎng)度是固定統(tǒng)一的。當(dāng)尋址方式和操作類
型非常少時(shí),可以有效降低譯碼的復(fù)雜度,提高譯碼的性能。一般
RISC計(jì)算機(jī)的指令集結(jié)構(gòu)均采用這種的編碼格式。
第三種是混合編碼格式
混合編碼格式的目的是通過(guò)提供一定類型的指令字長(zhǎng),期
望能夠兼顧降低目標(biāo)代碼長(zhǎng)度和降低譯碼復(fù)雜度兩個(gè)目標(biāo),也是指
令系統(tǒng)通常采用的一種編碼格式。
2.操作碼的擴(kuò)展
在指令字長(zhǎng)度固定的情況下,為縮短指令字的平均長(zhǎng)度,操作
碼和地址碼長(zhǎng)度都不固定。通常在指令中用一個(gè)固定長(zhǎng)度的字段來(lái)
表示基本操作碼,而對(duì)于一部分不需要某個(gè)地址碼的指令,則把操
作碼的長(zhǎng)度擴(kuò)充到該地址字段。以指令字長(zhǎng)度為16位為例,將這16
位分成4段,1個(gè)4位的基本操作碼字段和3個(gè)4位的地址字段,其一
般格式如圖4-18所示。
操作碼地址碼A地址碼B地址碼C
1512118743
0
假設(shè)某機(jī)器指令系統(tǒng)中有15條三地址指令、15條二地址指令、
15條一地址指令和16條零地址指令,共61條。若指令字、操作碼和
地址碼長(zhǎng)度固定,則操作碼要6位,指令字長(zhǎng)度為18位。若采用操
作碼的擴(kuò)展技術(shù),指令字長(zhǎng)度為16位,減少了2位。該機(jī)器指令系
統(tǒng)的指令可進(jìn)行如下編碼:
①15條三地址的操作碼用4位基本操作碼字段(12?15位)編碼,即
0000?1110表示指令,剩下的一個(gè)編碼“1111”用于把地址碼A擴(kuò)展為操作
碼。
。②15條二地址的操作碼用高4位的“1111”擴(kuò)展編碼和4位地址碼A(8?
11位)編碼,即11110000?11111110表示指令,剩下的一個(gè)編碼“11111111”
用于把地址碼B擴(kuò)展為操作碼。
③15條一地址的操作碼用高8位的“11111111”歹展編碼和4位地址碼B
(4?7位)編碼,即11111110000?11111111110表示指令,剩卜的一個(gè)編碼
“111111111111”用于把地址碼C擴(kuò)展為操作碼。
④16條一地址的操作碼用高12位的“111111111111”擴(kuò)展編碼和4位地址
碼C(0?3位)編碼,即1111111111110000?1111111111111111表示指令。
四、指令格式中的地址碼
1.地址碼的個(gè)數(shù)
地址碼在指令中所占的長(zhǎng)度最長(zhǎng),而地址碼編碼的長(zhǎng)度主要與
指令中地址碼的個(gè)數(shù)、操作數(shù)存放的存儲(chǔ)設(shè)備(通用寄存器、主存
儲(chǔ)器和堆棧等)、存儲(chǔ)設(shè)備的尋址空間大小、編址方式和尋址方式
等有關(guān),其中地址碼的個(gè)數(shù)是關(guān)鍵。
指令中的地址碼的個(gè)數(shù)通常有3個(gè)、2個(gè)、1個(gè)和沒(méi)有地址碼4種,
因此按地址碼的個(gè)數(shù)來(lái)分,指令格式的類型就有三地址指令、二地
址指令、一地址指令和零地址指令4種。
二地址的指令
指令中有一個(gè)源操作數(shù)地址和一個(gè)目標(biāo)地址,運(yùn)算所需的兩個(gè)
基本操作數(shù)分別來(lái)自源地址和目標(biāo)地址,運(yùn)算結(jié)果覆蓋目標(biāo)地址指
定的源操作數(shù)。適用于通用寄存器的使用和只需一個(gè)源操作數(shù)的
指令。
一地址的指令
指令中只有一個(gè)源地址,運(yùn)算所需的兩個(gè)操作數(shù),一個(gè)隱含在
累加器(通用寄存器)中,另一個(gè)由源地址指定,運(yùn)算結(jié)果隱含存
入累加器。采用一地址指令的計(jì)算機(jī)系統(tǒng)必須有且只有一個(gè)累加器,
其硬件結(jié)構(gòu)簡(jiǎn)單,特別適合連續(xù)運(yùn)算,如求累加和、算術(shù)表達(dá)式計(jì)
算等。
三地址的指令
指令中有兩個(gè)源操作數(shù)地址和一個(gè)目標(biāo)地址,運(yùn)算結(jié)果按目標(biāo)
地址存入。該指令在運(yùn)算后,不會(huì)破壞源操作數(shù),其硬件結(jié)構(gòu)復(fù)雜,
適合于向量和矩陣運(yùn)算的指令。
零地址指令即堆棧型指令
運(yùn)算所需操作數(shù)隱含從堆棧頂部彈出,運(yùn)算結(jié)果隱含壓入堆棧
頂部,因此不需要地址碼。訪問(wèn)堆棧的信息量很大,從而造成程序
執(zhí)行速度降低。為了克服這一缺點(diǎn),可以把堆棧頂部改為一個(gè)高速
寄存器堆,以提高棧頂壓入和彈出的速度。
地址個(gè)數(shù)操作碼長(zhǎng)度程序存儲(chǔ)量程序執(zhí)行速度適用場(chǎng)合
三地址短很大一般向量和矩陣運(yùn)算
二地址一般較大較慢一般不用
二地址R型一般很小很快多累加器、數(shù)據(jù)傳輸多
-地址較長(zhǎng)較小較快連續(xù)運(yùn)算、硬件結(jié)構(gòu)簡(jiǎn)單
零地址很長(zhǎng)很小很慢嵌套、遞歸、變量多
2.尋址方式表示的編碼方法
CPU在執(zhí)行指令的時(shí)候,首先對(duì)指令進(jìn)行譯碼,然后根據(jù)譯碼
結(jié)果確定指令所表示的操作和指令所指定的尋址方式,定位指令執(zhí)
行所需要的操作數(shù)。
而尋址方式的表示通常兩種編碼方法。一種是將尋址方式編碼
于操作碼中,由操作碼在描述指令操作的同時(shí),也描述了相應(yīng)操作
數(shù)的尋址方式,如圖4-19(b)所示;另一種是為每個(gè)操作數(shù)設(shè)置
?個(gè)地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式,如
圖4-19(a)所示。
操作碼地址描述符地址碼字段......操作碼地址碼字段.....
(a)(b)
3.地址碼長(zhǎng)度的縮短
在一般計(jì)算機(jī)系統(tǒng)中,邏輯地址空間的大小是確定的??s短地
址碼長(zhǎng)度就是要用一個(gè)比較短的地址碼表示一個(gè)比較大的邏輯地
址空間,同時(shí)要求有比較靈活有效的尋址方式。而縮短地址長(zhǎng)度
的方法很多,現(xiàn)僅就通過(guò)尋址方式來(lái)縮短地址碼長(zhǎng)度的方法進(jìn)行
分析。
1)間址尋址方式在主存的低地址端專門安排一個(gè)區(qū)域用于間址尋址。
由于表示主存低地址端存儲(chǔ)單元的地址碼長(zhǎng)度可以很短,使得采用間址尋
址方式的指令地址碼很短。
2)變址尋址方式:由于程序的局部性,在變址尋址方式中使用的地址
偏移量可以比較短,通??梢园驯容^長(zhǎng)的基地址(如32位)放在變址寄存
器中,在指令的地址碼中只需給出比較短的地址偏移量。因此,采用變址
尋址方式的地址碼長(zhǎng)度通常有10多位或20位左右就可以。
3)寄存器間接尋址方式:用寄存器間接尋址比用主存單元間址尋址不
僅因減少訪存次數(shù)而節(jié)省尋址空間,而且指令中地址碼長(zhǎng)度還可以更短。
因?yàn)榧拇嫫鞯臄?shù)量比較少,表示一個(gè)寄存器的地址只需要很少幾位。
五、指令格式中的操作碼編碼
1.操作碼編碼的基本思想
操作碼編碼的主要目標(biāo)是:采用優(yōu)化的編碼方法縮短指令式中
操作碼的長(zhǎng)度以減少程序總位數(shù),并能增加指令字所能表示的操作
信息和地址信息。
Huffman編碼壓縮方法
基本思想是:對(duì)使用頻度最高的對(duì)象,用最短位數(shù)的編碼表示;對(duì)使用
頻度較低的對(duì)象,允許用較長(zhǎng)位的編碼表示。操作碼編碼的優(yōu)化程度可用信
息源尷和信息冗余量來(lái)衡量。根據(jù)Huffman編碼壓縮的方法原理,所有操作
碼的平均長(zhǎng)度最短(即信息源嫡)為:
n
〃=,P,xlog22
Z=1
其中:Pi為操作碼i在程序中出現(xiàn)的概率,n為操作碼的個(gè)數(shù)。
信息冗余量為:
n
7?=(L-/7)/Z=l-(^p,.xlog2p,.)/Z
/=1
其中:L為操作碼編碼的平均長(zhǎng)度。
例如,假設(shè)一臺(tái)模型計(jì)算機(jī)有II?17共7條指令,它們?cè)诔绦蛑惺?/p>
用的概率如表4-8所示。該模型計(jì)算機(jī)指令的信息源燧為:
指令使用概率指令使用概率
T10.45150.03
120.30160.01
130.15170.01
140.05
n
xl
H二一2A°g2A=1959
Z=1
實(shí)際上,操作碼的平均長(zhǎng)度不可能達(dá)到最短的平均長(zhǎng)度(信息源?。?,因?yàn)?/p>
每個(gè)操作碼的位數(shù)必須是正整數(shù)。因此,操作碼編碼的方法通常有三種,即
固定長(zhǎng)度編碼法、Huffman編碼法和擴(kuò)展編碼法。
2.固定長(zhǎng)度編碼法
固定長(zhǎng)度編碼法是指令操作碼長(zhǎng)度采用固定長(zhǎng)度的編碼方式,
如果需要編碼的操作碼有n個(gè),那么定長(zhǎng)操作碼的位數(shù)至少需要
riog2nj位。該編碼方式非常規(guī)整,使硬件譯碼很簡(jiǎn)單,但信息
冗余量比較大。
例如,用一個(gè)字節(jié)表示定長(zhǎng)操作碼,可表示28=256個(gè)操作碼,
如果指令系統(tǒng)只設(shè)計(jì)了150條指令,那么8位定長(zhǎng)操作碼表示的冗余
編碼為106個(gè)。
3.Huffman編碼法
Huffman編碼法(又稱為最小概率合并法)是利用Huffinan算法,
通過(guò)構(gòu)造Huffman樹(shù)對(duì)操作碼進(jìn)行編碼,該編碼稱為Huffinan編碼。
Huffinan編碼法的具體步驟為:
(1)將要編碼的指令按概率值大小從左向右排列(概率相等的指令可任
意排列),每條指令的操作碼是一個(gè)結(jié)點(diǎn)。
(2)選取兩個(gè)概率最小的結(jié)點(diǎn)合并成一個(gè)概率值是兩者概率之和的
新結(jié)點(diǎn),并把這個(gè)新結(jié)點(diǎn)插入到其他尚未合并的結(jié)點(diǎn)中重新排列。
(3)繼續(xù)過(guò)程2,直到全部結(jié)點(diǎn)合并完畢得到一個(gè)根結(jié)點(diǎn)(根結(jié)點(diǎn)的
概率值為1),構(gòu)成了一棵Huffman樹(shù)。
(4)若某個(gè)概率值結(jié)點(diǎn)是由兩個(gè)概率值結(jié)點(diǎn)相加而成,則在三個(gè)結(jié)
點(diǎn)連接的路徑上給定代碼0和1。
(5)繼續(xù)過(guò)程4,直到全部結(jié)點(diǎn)連接的路徑上均給定代碼0和1。
(6)從根結(jié)點(diǎn)開(kāi)始,沿箭頭所指方向到指令結(jié)點(diǎn)所經(jīng)過(guò)的路徑代碼
序列,則是該指令的Huffinan編碼。
4.擴(kuò)展編碼法
采用Huffinan編碼方法能夠使操作碼的平均長(zhǎng)度短、信息冗余量
小,但形成的編碼很不規(guī)整。例如表4-10中7條指令就形成6種不同
長(zhǎng)度的操作碼,既不利于硬件的譯碼,也不利于軟件的編譯。另外,
長(zhǎng)度各異的操作碼也很難與地址碼配合以形成有規(guī)則長(zhǎng)度的指令編
碼。
。在許多處理機(jī)中,操作碼編碼采用固定長(zhǎng)度編碼法與Huffman
編碼法相結(jié)合的一種折中的編碼方法,稱為擴(kuò)展編碼法。
擴(kuò)展編碼法包含有等長(zhǎng)擴(kuò)展編碼法和不等及擴(kuò)展編碼法兩種。
等長(zhǎng)擴(kuò)展編碼法是指出現(xiàn)概率較低的操作碼用較長(zhǎng)的編碼表示
時(shí),每次擴(kuò)展的編碼位數(shù)相等。
不等長(zhǎng)擴(kuò)展編碼法是指每次擴(kuò)展的編碼位數(shù)不相等,例如1-2-3-
5擴(kuò)展法的前2次擴(kuò)展都加長(zhǎng)1位,第3次擴(kuò)展加長(zhǎng)2位。
對(duì)表4-8模型計(jì)算機(jī)指令的操作碼采用1-2-3-5擴(kuò)展編碼法和2-4擴(kuò)展編碼
法,可得出如表4-11所示的兩種編碼結(jié)果。
一
指
指令出現(xiàn)概率Huffman編操作碼現(xiàn)1-2-3-5擴(kuò)操作碼擴(kuò)展操作
令2-4
率
碼長(zhǎng)度黑展編碼長(zhǎng)度編碼碼長(zhǎng)
度
110.4501位一
110.401位002位
位
120.301025
位
130.151103120.3102位012位
140.0511104位0
150.03111105位130.11103位102位
5
160.011111106位
140.0111005位11004位
170.011111116位5
150.0111015位11014位
3
160.0111105位11104位
1
170.0111115位11114位
1
無(wú)論采用哪一種擴(kuò)展編碼方法,衡量的標(biāo)準(zhǔn)是操作碼平均長(zhǎng)度
是否最短,或信息冗余量是否最小。由于操作碼平均長(zhǎng)度取決于各
指令的出現(xiàn)概率,因此可根據(jù)指令出現(xiàn)的概率分布來(lái)選擇采用何種
擴(kuò)展編碼法。
另外,需要考慮操作碼編碼的最長(zhǎng)位數(shù)和需要編碼的操作碼
個(gè)數(shù)。
從信息冗余量最小來(lái)看,Huffinan編碼方法是最好的;從編
碼規(guī)整性來(lái)看,固定長(zhǎng)度編碼方法是最好的。等長(zhǎng)擴(kuò)展編碼的信息
冗余量較小,規(guī)整性也較好,便于實(shí)現(xiàn)硬件譯碼,便于與地址碼配
合形成規(guī)則的指令格式。
六、指令系統(tǒng)中的控制指令
1.條件分支指令中條件表示的方法
指令系統(tǒng)中能夠改變控制流的控制指令有3種:條件分支、無(wú)條
件跳轉(zhuǎn)和過(guò)程調(diào)用/返回,它們的使用頻度如表4-12所示,其中百
分比是指它們占控制指令總數(shù)的比例。
指令類型使用頻度
整型平均浮點(diǎn)平均
調(diào)用/返回19%8%
無(wú)條件跳轉(zhuǎn)6%10%
條件分支75%82%
1.條件分支指令中條件表示的方法
分支條件的表示是影響該指令執(zhí)行速度的主要因素。目前分支
條件的表示方法有3種,各種表示方法的優(yōu)缺點(diǎn)如表4-13所示。
名稱條件表示的方法優(yōu)點(diǎn)缺點(diǎn)
條件碼(CC)檢測(cè)由ALU操作設(shè)置?些可自由設(shè)置分條件碼是增設(shè)的狀態(tài),會(huì)限制指
特殊的位(CC)支條件令執(zhí)行順序。
條件寄存器比較結(jié)果放入任何一個(gè)寄簡(jiǎn)單占用一個(gè)寄存器
存器,檢測(cè)該寄存器
比較與分支比較操作是分支指令的一用一條指令實(shí)比較受到一定限制,流水方式時(shí)
部分現(xiàn)因操作多而無(wú)法在一拍內(nèi)完成
2.控制指令中目標(biāo)地址的表示方法
在控制指令中,需要給出轉(zhuǎn)移目標(biāo)地址,且一般情況下,除過(guò)
程返回指令外,轉(zhuǎn)移目標(biāo)地址都會(huì)顯式給出的(在編譯時(shí);過(guò)程返
回指令的轉(zhuǎn)移目標(biāo)地址還不知道)。指定轉(zhuǎn)移目標(biāo)地址最常用的方
法是PC相對(duì)尋址,即在指令中提供一個(gè)偏移量,該偏移量與程序
計(jì)數(shù)器(PC)值相加而得出轉(zhuǎn)移目標(biāo)地址。PC相對(duì)尋址有許多優(yōu)
點(diǎn),一是轉(zhuǎn)移目標(biāo)地址通常是離當(dāng)前很近,用相對(duì)于當(dāng)前PC值的
偏移量來(lái)確定目標(biāo)地址,可以減少表示該目標(biāo)地址所需要的位數(shù);
二是使代碼被裝入到主存儲(chǔ)器任意位置執(zhí)行,即“位置無(wú)關(guān)”,可
減少程序鏈接的工作量,即使是動(dòng)態(tài)鏈接的程序也是有效的。
采用PC相對(duì)尋址方式來(lái)確定轉(zhuǎn)移目標(biāo)地址時(shí),需要知道偏移量
大小的分布情況,以便確定偏移量字段的長(zhǎng)度。有模擬結(jié)果表明,
采用4?8位偏移量字段就能表示大多數(shù)控制指令的轉(zhuǎn)移目標(biāo)地址。
例4.3設(shè)某計(jì)算機(jī)為定長(zhǎng)指令字結(jié)構(gòu),指令字長(zhǎng)為12位,每個(gè)
地址碼占3位,提出一種該計(jì)算機(jī)指令系統(tǒng)的設(shè)計(jì)方案,使其包含:
4條三地址指令、8條二地址指令和180條一地址指令。
解由題意可知,當(dāng)指令系統(tǒng)的基本操作碼的位數(shù)為:12-3X3
=3位,即三地址指令的操作碼位數(shù)為3位。3位操作碼共有23=8種
編碼?,F(xiàn)使“000?011”為四條三地址數(shù)指令的編碼,“100?111”
四個(gè)編碼把一個(gè)地址碼(三位)擴(kuò)展為操作碼。
用4個(gè)擴(kuò)展編碼中的“100”把一個(gè)地址碼(三位)擴(kuò)展為
操作碼,共有23=8種編碼“100000?100111”為八條二地址數(shù)指
令的編碼,其余3個(gè)擴(kuò)展編碼把一個(gè)地址碼(三位)擴(kuò)展為操作碼,
共有3X23=24種編碼。
用24種編碼把一個(gè)地址碼(三位)擴(kuò)展為操作碼,共有
24X23=182種編碼,用其中的180個(gè)編碼為180條一地址數(shù)指令的
編碼。
例4.4對(duì)表4-8給出的模型機(jī)的指令操作碼分別進(jìn)行等長(zhǎng)擴(kuò)展編
碼和不等長(zhǎng)擴(kuò)展編碼,并分別計(jì)算編碼的信息冗余量。
解模型機(jī)有7個(gè)操作碼需要編碼。
(1)采用2-4等長(zhǎng)擴(kuò)展編碼
對(duì)出現(xiàn)概率較高的II?13分別用00、01和10表示,保留一個(gè)碼點(diǎn)標(biāo)
志11用于擴(kuò)展編碼,擴(kuò)展2位得至!J4位長(zhǎng)的4個(gè)編碼1100、1101、1110和1111,
正好表示14?17的4個(gè)操作碼。這和設(shè)-4等長(zhǎng)擴(kuò)展編碼如表4-14第4列所示。采
用2-4等長(zhǎng)擴(kuò)展編碼可以保留用于擴(kuò)展編碼的不同的碼點(diǎn)標(biāo)志和不同的碼點(diǎn)
標(biāo)志個(gè)數(shù)而形成不相同的2-4等長(zhǎng)擴(kuò)展編碼。例如,可以用00和01表示II和12
的操作碼,保留兩個(gè)碼點(diǎn)標(biāo)志10和
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 請(qǐng)?zhí)?寫作課件
- 愛(ài)蓮說(shuō)精簡(jiǎn)課件
- 2024-2025學(xué)年初中同步測(cè)控優(yōu)化設(shè)計(jì)物理八年級(jí)下冊(cè)配人教版第9章 第3節(jié) 大氣壓強(qiáng)含答案
- 第三單元(復(fù)習(xí))-三年級(jí)語(yǔ)文上冊(cè)單元復(fù)習(xí)(統(tǒng)編版)
- 2024年黑龍江省綏化市中考地理真題卷及答案解析
- 西京學(xué)院《運(yùn)營(yíng)管理》2021-2022學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《隨機(jī)過(guò)程與數(shù)理統(tǒng)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 高質(zhì)量專題教學(xué)模板
- 中班語(yǔ)言我想
- 西京學(xué)院《程序設(shè)計(jì)基礎(chǔ)》2021-2022學(xué)年期末試卷
- 大學(xué)生計(jì)算與信息化素養(yǎng)-北京林業(yè)大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 無(wú)人機(jī)導(dǎo)航與通信技術(shù)PPT完整全套教學(xué)課件
- 公共行政學(xué)網(wǎng)上學(xué)習(xí)行為300字
- 第四代篦冷機(jī)液壓系統(tǒng)的故障與維護(hù)獲獎(jiǎng)科研報(bào)告
- 二次函數(shù)線段的最值課件
- 呼吸消化科科室現(xiàn)狀調(diào)研總結(jié)與三年發(fā)展規(guī)劃匯報(bào)
- 與復(fù)旦大學(xué)合作協(xié)議書
- 人大代表為人民
- 第五單元(知識(shí)清單)【 新教材精講精研精思 】 七年級(jí)語(yǔ)文上冊(cè) (部編版)
- 文明之痕:流行病與公共衛(wèi)生知到章節(jié)答案智慧樹(shù)2023年四川大學(xué)
- 鋼結(jié)構(gòu)設(shè)計(jì)原理全套PPT完整教學(xué)課件
評(píng)論
0/150
提交評(píng)論