第四章 計算機屬性的技術(shù)_第1頁
第四章 計算機屬性的技術(shù)_第2頁
第四章 計算機屬性的技術(shù)_第3頁
第四章 計算機屬性的技術(shù)_第4頁
第四章 計算機屬性的技術(shù)_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第四章計算機屬性的優(yōu)選技術(shù)

軟件與硬件功能的分配是計算機體系結(jié)構(gòu)設(shè)計的關(guān)鍵,是確定

計算機硬件屬性的基礎(chǔ),而計算機硬件屬性包括數(shù)據(jù)表示、尋址技

術(shù)、指令系統(tǒng)、總線與機器級的I/O結(jié)構(gòu)(含中斷機構(gòu))、信息保

護(hù)等方面的內(nèi)容。為避免與計算機組成原理等其它課程重復(fù),本章

從軟硬件功能分配出發(fā),著重討論計算機硬件屬性的優(yōu)化或選擇技

術(shù)。

第一節(jié)數(shù)據(jù)表示

第二節(jié)尋址技術(shù)與存儲保護(hù)

第三節(jié)指令格式的優(yōu)化設(shè)計

第四節(jié)指令系統(tǒng)的功能設(shè)計

第五節(jié)輸入輸出系統(tǒng)與總線

第一節(jié)數(shù)據(jù)表示

一、數(shù)據(jù)表示的基本概念

二、引入數(shù)據(jù)表示的基本原則

三、自定義數(shù)據(jù)表示

四、向量與堆棧數(shù)據(jù)表示

五、浮點數(shù)的尾數(shù)基值

一、數(shù)據(jù)表示的基本概念

1.數(shù)據(jù)類型

具有一組值的集合,并定義了作用于該集合的操作集。數(shù)據(jù)類型可分為

基本類型和結(jié)構(gòu)(復(fù)合)類型。基本類型是指不可再分的單個數(shù)據(jù)元素的數(shù)

據(jù)類型,一般包括二進(jìn)制位、二進(jìn)制位串、整數(shù)、十進(jìn)制數(shù)、浮點數(shù)、字符、

布爾數(shù)等;結(jié)構(gòu)類型是由一組相互有關(guān)的數(shù)據(jù)元素復(fù)合而成的數(shù)據(jù)類型,如

數(shù)組、字符串、向量、堆棧、隊列、記錄等。

2.數(shù)據(jù)表示與數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)類型的表示有兩種方式,一種是用計算機的硬件直接表示,另一種

是通過軟件間接表示,即通過軟件映像變換成計算機的硬件能直接表示的數(shù)

據(jù)類型的集合。

數(shù)據(jù)表蒜指由計算機硬件能直接識別、指令系統(tǒng)能引用的數(shù)據(jù)類型。

數(shù)據(jù)結(jié)構(gòu)是指面向系統(tǒng)軟件與實際應(yīng)用所需要處理的復(fù)合的數(shù)據(jù)類型,數(shù)

據(jù)結(jié)構(gòu)是數(shù)據(jù)類型中復(fù)雜的、硬件表示難以或無法實現(xiàn)的,主要有文件、鏈

表、表、樹和圖等除了數(shù)據(jù)表示之外的所有數(shù)據(jù)類型。

3.數(shù)據(jù)表示對運算器結(jié)構(gòu)的影響

早期的機器只有定點數(shù)據(jù)表示,浮點數(shù)則是用兩個定點數(shù)來分別

表示其階碼和尾數(shù)。

隨著數(shù)據(jù)處理的需要,增加了浮點數(shù)據(jù)表示、運算指令和相應(yīng)

的運算硬件,能直接對浮點數(shù)進(jìn)行運算和處理。

變址操作為向量和陣列數(shù)據(jù)類型的實現(xiàn)提供了直接支持。

可變長字符串?dāng)?shù)據(jù)表小的引入有力地支持了串?dāng)?shù)據(jù)類型的實現(xiàn)。

計算機的運算類指令和運算器結(jié)構(gòu)主要是由計算機的數(shù)據(jù)表示來

確定的。

3.高級數(shù)據(jù)表示及其種類

確定哪些數(shù)據(jù)類型用數(shù)據(jù)表示實現(xiàn),哪些數(shù)據(jù)類型用數(shù)據(jù)結(jié)構(gòu)

實現(xiàn),實質(zhì)是軟硬件的取舍問題。

在確定數(shù)據(jù)表示時應(yīng)考慮怎樣為數(shù)據(jù)類型的實現(xiàn)提供支持,有

時引入一些高級數(shù)據(jù)表示,比在指令系統(tǒng)中增設(shè)技巧性新指令的意

義要大。

高級。數(shù)據(jù)表示是指需要多個數(shù)據(jù)字或一個數(shù)據(jù)字要分為兩個字段

以上才能實現(xiàn)的數(shù)據(jù)表不。目前,高級數(shù)據(jù)表示主要有浮點數(shù)據(jù)表

示、堆棧數(shù)據(jù)表示、向量數(shù)據(jù)表示和自定義數(shù)據(jù)表示

二、引入數(shù)據(jù)表示的基本原則

1.提高系統(tǒng)效率原則

能否提高系統(tǒng)的效率是引入高級數(shù)據(jù)表示的一個標(biāo)準(zhǔn)。效率能

否提高取決于是否減少了實現(xiàn)時間和存儲空間。實現(xiàn)時間是否減少

主要取決于主存和處理機之間傳送的信息量是否減少,傳送的信息

量越少,實現(xiàn)時間就越少。存儲空間的減少,則反映在編譯程序的

縮短(編譯工作減輕)以及目標(biāo)程序指令條數(shù)的減少等方面。

2.通用性強與利用率高的原則

能否提高系統(tǒng)的通用性和利用率是引入高級數(shù)據(jù)表示的又一個

標(biāo)準(zhǔn)。

三、自定義數(shù)據(jù)的表示

為解決指令系統(tǒng)識別數(shù)據(jù)類型,簡化指令系統(tǒng),減輕編譯的負(fù)

擔(dān),在20世紀(jì)60年代初,美國Burroughs公司在B5000大型計算機上

引入自定義數(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)志符來表示數(shù)據(jù)類型。標(biāo)志符應(yīng)由編譯程序建立,對高級語言

程序透明,以減輕應(yīng)用程序員的負(fù)擔(dān)。

標(biāo)志域數(shù)城域

類型1其它數(shù)值

1

1

主要優(yōu)點

①、簡化了指令系統(tǒng)和程序設(shè)計

②減輕了編譯軟件的負(fù)擔(dān)

③便于硬件實現(xiàn)數(shù)據(jù)的一致性校驗和自動完成數(shù)據(jù)類型的轉(zhuǎn)換

④支持?jǐn)?shù)據(jù)庫系統(tǒng)實現(xiàn)與數(shù)據(jù)類型無關(guān)的要求

⑤支持軟件調(diào)試和應(yīng)用軟件開發(fā)

主要缺點

①增加了程序所占的主存空間。數(shù)據(jù)字因增設(shè)標(biāo)志符而加長,

從而增加了程序所占的主存空間

②降低了指令的執(zhí)行速度

③增加了硬件的復(fù)雜度

綜上所述,標(biāo)志符數(shù)據(jù)表示有明顯的優(yōu)點,加上硬件和存儲器價格

持續(xù)下降,使這種能縮小高級語言和機器語言語義差距的標(biāo)

志符數(shù)據(jù)表示得到廣泛的使用。

2.描述符數(shù)據(jù)表示

描述符和標(biāo)志符的主要差別是標(biāo)志符只作用于一個數(shù)據(jù),與數(shù)

據(jù)合存于同一存儲單元,描述單個數(shù)據(jù)的類型特性;而描述符是與

數(shù)據(jù)分開存放的,獨立占據(jù)一個存儲單元,用于描述所要訪問的一

組數(shù)據(jù)的屬性(含該組數(shù)據(jù)的訪問地址、長度及其特征或信息等。

描述符數(shù)據(jù)表示的優(yōu)缺點與標(biāo)志符數(shù)據(jù)表示基本一樣,描述符

數(shù)據(jù)表示的機器比標(biāo)志符數(shù)據(jù)表示可能要復(fù)雜。

101各種標(biāo)志位K度地址000數(shù)據(jù)

(a)描述符(b)數(shù)據(jù)

圖4.4B6700機中的描述符數(shù)據(jù)表示格式

描述符數(shù)據(jù)表示的訪問方法特別地可將描述符按樹形

連接起來描述多維數(shù)組

四、向量與堆棧數(shù)據(jù)表示

1.向量數(shù)組數(shù)據(jù)表示

在引入向量數(shù)組數(shù)據(jù)表示的基礎(chǔ)上,一般會設(shè)置相應(yīng)的硬件以

支持向量、數(shù)組等數(shù)據(jù)結(jié)構(gòu)的快速運算,從而組成向量處理機。

在具有向量、數(shù)組數(shù)據(jù)表示的向量處理機上,硬件上設(shè)置有豐

富的的向量或陣列運算指令,配置有以流水或陣列方式處理的高速

運算器,只需用一條向量加法指令:

C(l:lOOO)=A(1:1000)+B(1:1000)

優(yōu)點:

@便于實現(xiàn)將向量元素成塊預(yù)取到中央處理器

②利用硬件判斷下標(biāo)是否越界,并讓越界判斷和元素運算并行

③可設(shè)有對陣列中的每一個元素又是一個子陣列的列的相關(guān)型交叉

陣列進(jìn)行操作的處理硬件,還可設(shè)有對大量元素是零的稀疏向量

、數(shù)組進(jìn)行壓縮存儲、還原、運算等指令和硬件,從而不但可節(jié)

省大量的存儲空間,也由于不必處理零元素而節(jié)省了很多時間。

2.堆棧數(shù)據(jù)表示

具有堆棧數(shù)據(jù)表示的機器稱為堆棧型機器,它在堆棧操作方面比通用

寄存器型機器有明顯優(yōu)勢。

在硬件上,堆棧型機器對堆棧數(shù)據(jù)表示的支持體現(xiàn)在具有高速寄存器組

成的硬件堆棧,并附加控制電路讓它與主存中的堆棧區(qū)在邏輯上組成一個整

體,使堆棧的訪問速度是寄存器的速度,而堆棧的容量是主存的容量。通用

寄存型機器的堆棧置于內(nèi)存中,訪問速度低。

在軟件上,堆棧型機器有很豐富的堆棧操作類指令且功能很強,直接可

對堆棧中的數(shù)據(jù)進(jìn)行各種運算和處理。相對來說,通用寄存器型用于堆棧操

作的指令很少,且功能單一。

堆棧型機器對編譯和子程序調(diào)用遠(yuǎn)優(yōu)于通用寄存器型機器。

堆棧型機器是面向堆棧尋址的,采用所謂的零地址尋址。通用寄存型機

器面向寄存器尋址而不用訪存,速度比面向堆??斓枚啵瑢ο蛄?、矩陣運算

有明顯優(yōu)勢。而堆棧型機器一般是對棧頂運算,難以直接訪問到不在棧頂?shù)?/p>

向量或矩陣的任一元素,遠(yuǎn)不如面向寄存器尋址。

五、浮點數(shù)的尾數(shù)基值

1.浮點數(shù)數(shù)據(jù)表示的格式

浮點數(shù)據(jù)表示的格式包括兩個部分:階碼和尾數(shù),其一般形式

為:

e

N=mXrm

m:尾數(shù)的數(shù)值,一般采用定點小數(shù)的原碼或補碼表示;

e:階碼的數(shù)值,一般采用定點整數(shù)的補碼或移碼表示;

rm:尾數(shù)的基值,一般為二、八、十或十六;

re:階碼的基值,一般為二進(jìn)制數(shù);

P:尾數(shù)的長度(不含符號位);

q:階碼的長度(不含符號位)。

可表示的零,

;可表示負(fù)實數(shù),可表示正實數(shù),

負(fù)下溢區(qū)正下溢區(qū),

負(fù)上溢區(qū),區(qū)中的離散值,需展牌-葉溢區(qū).

---------------,KKX。興?實數(shù)軸?

01?

圖4.7浮點數(shù)可表示實數(shù)域中的值?

由圖4.7可見,浮點數(shù)階碼的位數(shù)q主要影響兩個可表示區(qū)的大

小,即可表示數(shù)的范圍;而尾數(shù)的位數(shù)p主要影響在可表示區(qū)中能

表示值的精度。

當(dāng)階值位數(shù)q一定時,尾數(shù)采用什么進(jìn)制也會影響浮點數(shù)的可

表示范圍、精度及數(shù)在數(shù)軸上分布的離散程度。機器中階碼都采用

二進(jìn)制,以避免運算中因?qū)﹄A造成的精度和有效數(shù)值的過多損失。

那么,尾數(shù)應(yīng)采用什么進(jìn)制呢?

2.浮點數(shù)尾數(shù)基值對浮點數(shù)特性的影響

在機器中,一個%進(jìn)制的數(shù)需用riog2rmJ個機器位來表示。

尾數(shù)的機器位數(shù)是p時,相當(dāng)于%進(jìn)制的尾數(shù)有個數(shù)位p'個數(shù)位,其

位權(quán)由小數(shù)點向右依次為%"、……、rm-P1,且其中:

p'=p/r10g2rmJ

分析尾數(shù)基數(shù)%取不同值的影響,顯然應(yīng)是在機器位數(shù)、階值

位數(shù)q、尾數(shù)位數(shù)p相同的情況下,認(rèn)識不同的%對數(shù)據(jù)表示的特性

參數(shù)的影響,如表4-1所示。為簡化分析,一是只比較非負(fù)階、正

尾數(shù),且都是規(guī)格化的數(shù),對于負(fù)階和負(fù)尾數(shù)也是一定適用的;二

是以%是2的整數(shù)幕來討論,對%不是2的整數(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ù)個數(shù)rj'X(7-l)/r”815

特例:2Px(yD/r.

可表示階的個數(shù)2q44

可表示數(shù)的個數(shù)2'XrE(r“-l)/r?,3260

特例:2/2"(4-1)/%

具體分析如下:

(1)可表示數(shù)的范圍。由表4-1知,隨%增大,可表示的最小值小」將減

小??杀硎咀畲笾禐閺S廠T>x(「2-。),其中(12P)部分為常數(shù),隨%增大,因增

大而使得可表示的最大值增大。因此,隨小的增大,可表示數(shù)的范圍增大。

(2)可表示數(shù)的個數(shù)。由表4-1可知,可表示數(shù)的個數(shù)為2q+p(i-%」),其

中2q+p為常數(shù),所以隨小的增大,將因(1-%」)增大而使可表示數(shù)的個數(shù)增多

°(3)數(shù)在數(shù)軸上的分布。%越大,在與7=2的浮點數(shù)相重疊的范圍內(nèi),

數(shù)的密度分布越稀。

(4)可表示數(shù)的精度。%越大,數(shù)在數(shù)軸上的分布變稀,數(shù)的表示精度

自然下降。

(5)運算中的精度損失。%越大,尾數(shù)右移的機會越小,精度的損失就

越小。

(6)運算速度。入大時,由于對階或尾數(shù)溢出需右移和規(guī)格化需左移的

次數(shù)減少,運算速度可以提高。

3.浮點數(shù)格式的設(shè)計

浮點數(shù)格式的設(shè)計是要在浮點數(shù)表數(shù)范圍和表數(shù)精度給定的情況下,確

定浮點數(shù)表數(shù)的位數(shù)和尾數(shù)字長p二階碼字長

根據(jù)大多數(shù)計算機的實際情況,假定浮點數(shù)的尾數(shù)用原碼、小數(shù)表示,

階碼用移碼、整數(shù)表示,尾數(shù)基值3=2,階碼基值又=2,BPp=p^;根據(jù)實際

應(yīng)用要求給出表數(shù)范圍不小于4(N為能表示的最大的正數(shù)),表數(shù)精度不

低于3,并且要求尾數(shù)和階碼都正、負(fù)對稱。

由表數(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ù)字長:

(4-5)

由(4-4)和(4-5)兩個不等式計算出浮點數(shù)的尾數(shù)字長p和階

碼字長q,再加上一個尾數(shù)符號位和一個階碼符號位就構(gòu)成了一種

浮點數(shù)格式。

六、原子類型操作數(shù)的大小

原子類型操作數(shù)的大小(size)是指操作數(shù)的位數(shù)或字節(jié)數(shù)。一

般來說,原子類型操作數(shù)的大小主要有:字節(jié)(8位)、半字(16

位)、字(32位)、雙字(64位)。

表4-2不同操作數(shù)大小的訪問頻度

操作數(shù)大小訪問頻度

整型平均浮點平均

字節(jié)7%()

半字19%0

單字74%31%

雙字069%

例4.1IBM370系統(tǒng)計算機的短浮點數(shù)使用的階碼基值%=2,階

值位數(shù)6位,尾數(shù)基值r「16,尾數(shù)位數(shù)p—6,即按照使用的二進(jìn)

制位數(shù)來說,等價于p=24。計算在非負(fù)階、正尾數(shù)、規(guī)格化情況

下的最小尾數(shù)值、最大尾數(shù)值、最大階值、可表示的最小值和最

大值、可表示數(shù)的個數(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ù)的個數(shù):2^^(rm-l)"m=26X166(16-1)/16=2

(1-2-4)

可表示數(shù)的精度:/xr-=16-(6/)/2=2-21

例4.2設(shè)計一種浮點數(shù)格式,其表數(shù)范圍要求在1。37至1Q37之間,正負(fù)

數(shù)對稱,表數(shù)精度不低于10",且浮點數(shù)的尾數(shù)用原碼、小數(shù)表示,階碼用

移碼、整數(shù)表示,尾數(shù)基值?和階碼基值一都為2。

解依題意,取表數(shù)范圍N=1037,表數(shù)精度3=10-16。

由式(4-4)得:.>1°超。=6.95,上取

整,得到階碼字長q=7。1082

由式(4-5)得:,>一:::;"=53.2,上取整,得

到尾數(shù)字長p=54。

從而加上一個尾數(shù)符號位和一個階碼符號位,浮點數(shù)的

總字長為:p+q+2=54+7+2=63。

實際浮點數(shù)總字長應(yīng)為8的倍數(shù),故取浮點數(shù)總字長為

64位。讓p增加一位,即p=55。如圖4-8所示是設(shè)計出來的

浮點數(shù)格式。

位序63628760

尾符S階符F~

長度1p=551q=7

第二節(jié)尋址技術(shù)與存儲保護(hù)

一、編址方式

二、尋址方式

三、程序裝入與定位

一、編制方式

1.編址單位

目前常用的編址單位有字編址、字節(jié)編址和位編址等三種,其

中寄存器、堆棧和輸入輸出設(shè)備的編址單位對機器的影響與編址單

位對應(yīng)性強,容易作出選擇。主存儲器對于不同的編址單位對機

器的影響則會產(chǎn)生極端現(xiàn)象,因此主要討論主存儲器編址單位。

字編址方式每個編址單位與功能部件的訪問單位相一致;其主

要缺點是對非數(shù)值數(shù)據(jù)沒有支持。

字節(jié)編址適合于非數(shù)值數(shù)據(jù)的處理,其編址單位也與部分功能

部件(如外部設(shè)備)的信息單位相一致。

當(dāng)字節(jié)編址時,一個多字節(jié)的數(shù)據(jù)字有2種存儲方式。

一是小端存儲(LittleEndian)

字地址NB3BB()

字地址N+3N+2N+lN+0

二是大端存儲(BigEndian)

字地址NB

B32B.Bo

字地址N+0N+lN+2N+3

2.線性編址方式

存儲數(shù)據(jù)信息的功能部件有寄存器、主存儲器、堆棧和輸入輸

出設(shè)備,其中堆棧不需要編址。線性編址方式是依據(jù)零地址空間的

個數(shù)來分,對寄存器、主存儲器和輸入輸出設(shè)備等三種存儲部件來

說,則零地址空間的個數(shù)有零個、一個、二個和三個:

(1)三個零地址空間即是對寄存器、主存儲器和輸入輸出設(shè)備等三種存

儲部件分別進(jìn)行地址定位。

(2)二個零地址空間即是寄存器單獨地址定位,主存儲器和輸入輸出

設(shè)備則統(tǒng)一進(jìn)行地址定位,一般在高端地址中給出一部分作為輸入輸出設(shè)備

的地址。

(3)一個零地址空間即是寄存器、主存儲器和輸入輸出設(shè)備等三種存

儲部件統(tǒng)一進(jìn)行地址定位,一般在高端地址中給出一部分作為輸入輸出設(shè)備

的地址,在低端地址中給出一部分作為寄存器的地址。

(4)零個零地址空間即是隱含地址定位,它進(jìn)一步把一個零地址空間的

優(yōu)缺點推到極端。

3.I/O設(shè)備的非線性編址

計算機系統(tǒng)中的I/O設(shè)備多種多樣,接口上需要編址的寄存器數(shù)

目相差很大,因此I/O設(shè)備的編址必須根據(jù)對具體設(shè)備操作的要求

來決定,一般有三種編址方法:

(1)一臺設(shè)備一個地址

(2)一臺設(shè)備兩個地址

(3)一臺設(shè)備多個I/O地址

二、尋址方式

尋址包括指令尋址和操作數(shù)尋址。操作數(shù)尋址過程復(fù)雜、形式

多樣。根據(jù)操作數(shù)存放的位置可有下列幾種類型。

1.立即數(shù)尋址

指直接在指令的地址碼部分給出操作數(shù)。該尋址方式的優(yōu)點是

不需要存儲單元,指令執(zhí)行速度快。但只能用于源操作數(shù)尋址,數(shù)

據(jù)長度不能太長,程序的通用性差。

2.通用寄存器尋址

通用寄存器尋址是指操作數(shù)置放在通用寄存器中。

優(yōu)點:1)指令字長短;2)指令執(zhí)行速度快;3)支持向量數(shù)組

運算。

缺點:1)不利于優(yōu)化編譯;2)現(xiàn)場切換困難;3)硬件復(fù)雜。

3.主存儲器尋址

主存儲器的尋址方式包括直接尋址、間接尋址和變址尋址等

三種類型。

1)直接尋址是指在指令中直接給出操作數(shù)在主存中的有效地

址;

2)間接尋址是指指令中給出的是操作數(shù)在主存中地址的地

址;

3)變址尋址是指用一稱為變址寄存器的內(nèi)容與一個地址偏

移量做算術(shù)加來得到有效地址。

4.堆棧尋址

堆棧尋址方式的地址是隱含的,在指令中不必給出操作數(shù)的地

址,所需要的操作數(shù)在堆棧棧頂彈出。

特點:1)算術(shù)表達(dá)式可很容易轉(zhuǎn)化為逆波蘭式,直接形成由堆

棧指令組成的程序,從而支持高級語言,簡化了編譯程序。2)含

有堆棧尋址的指令中地址碼很短,相應(yīng)的程序存儲容量小。3)堆

5.I/O設(shè)備尋址

相對主存儲器來說,I/O設(shè)備端口尋址種類單一,一般是直接尋

址和間接尋址,速度也較慢。在主存儲器和I/O設(shè)備端口統(tǒng)一編址

的情況下,其尋址似乎與主存儲器尋址一樣,但執(zhí)行過程比較復(fù)雜

,速度可能更慢。因此,在需要批量、高速傳送I/O數(shù)據(jù)時,必須

采用中斷、DMA或通道等方式。

三、程序裝入與定位

程序員編寫程序時使用的地址成為邏輯地址(LA),程序的邏

輯地址相對本程序一般從0開始。程序在主存儲器中的實際地址稱

為物理地址(PA),它是從0開始的一維線性空間。在計算機中的

往往要運行多道程序,如何把程序和相關(guān)數(shù)據(jù)從外存裝入主存儲器

,就涉及需要進(jìn)行程序的邏輯地址空間到存儲程序的物理地址空間

的映像和變換,這個過程稱為程序的定位。程序需要定位的主要原

因有以下幾個方面。

(1)程序的獨立性要求;

(2)程序的模塊化設(shè)計;

(3)有些程序本身很大,難以一次性加載,需要在程序運行中

分段替換裝入,這同樣要求動態(tài)決定程序和數(shù)據(jù)的主存儲器物理地

程序定位的方式

根據(jù)程序中指令和數(shù)據(jù)的主存儲器物理地址的確定時間,有三

種定位方式:

1)直接定位:直接定位方式是程序員編程時就已經(jīng)確定好程

序的地址空間,即利用物理地址編程。一般適用于單任務(wù)方式,因

為一個程序運行時,計算機的全部資源即被它獨占。

2)靜態(tài)定位:目的程序裝入主存儲器時,通過調(diào)配運行系統(tǒng)

配備的裝入程序,把目的程序的邏輯地址用軟的方法逐一修改成物

理地址。在程序執(zhí)行時,物理地址不能再改變。這種定位技術(shù)稱為

靜態(tài)定位方式。

優(yōu)點:一是可由軟件完成;二是可對多個程序段組成的程序進(jìn)

行靜態(tài)鏈接,實現(xiàn)起來簡單。

缺點:一是在程序執(zhí)行期間不能動態(tài)調(diào)整,不利于程序再裝;

二是多個用戶或進(jìn)程不能分享主存儲器中的某個公共代碼,如果幾

個用戶要使用同一個程序,必須在各自的主存儲器空間中存放一個

程序副本,這不利于多道程序的運行環(huán)境;三是若程序所需存儲容

量超過了分配給它的主存儲器空間,則程序員必須采用覆蓋結(jié)構(gòu);

四是不利于重疊、流水線技術(shù)的應(yīng)用。

(a)第一次靜態(tài)定位(b)第二次靜態(tài)定位

3)動態(tài)定位:動態(tài)定位方式采用基址尋址方法,即設(shè)置基址寄

存器和地址加法器,將主存儲器的起始地址存入該程序的基址寄存

器中,指令的地址字段不做修改,程序在執(zhí)行過程中不斷將邏輯地

址加上基址寄存器中的基址來形成物理地址。

優(yōu)點:一是提高了主存空間的利用利率;二是多個程序可以共

享主存中的同一個程序段;三是支持虛擬存儲器。

缺點:1)需要由硬件支持;2)實現(xiàn)存儲管理的軟件算法比較

復(fù)雜。

第三節(jié)指令格式的優(yōu)化設(shè)計

一、指令系統(tǒng)設(shè)計的基礎(chǔ)

二、指令系統(tǒng)的結(jié)構(gòu)分類

三、指令字的編碼格式

四、指令格式中的地址碼

五、指令格式中的操作碼編碼

六、指令系統(tǒng)中的控制指令

一、指令系統(tǒng)設(shè)計的基礎(chǔ)

指令系統(tǒng)是軟、硬件之間的主要界面,在很大程度上,指令系

統(tǒng)決定了計算機系統(tǒng)具有的基本功能。指令系統(tǒng)的設(shè)計包括指令的

功能設(shè)計和指令格式設(shè)計。為指令系統(tǒng)設(shè)計一套有效的指令格式,

不僅能夠讓機器語言程序設(shè)計者使用起來很方便,硬件實現(xiàn)起來比

較容易,而且能夠節(jié)省大量的程序存儲空間。而指令格式有很多類

型,就需要進(jìn)行折中和優(yōu)化組合。

1.指令系統(tǒng)設(shè)計的基本要求

(1)完備性。完備性指用匯編語言編寫各種程序時,指令系統(tǒng)

直接提供的指令足夠使用,而不必用軟件來實現(xiàn)。

(2)高效性。高效性是指利用該指令系統(tǒng)所編寫的程序能夠高

效率的運行,其主要表現(xiàn)在程序占據(jù)存儲空間小、執(zhí)行速度快、指

令的使用頻度高。

(3)規(guī)整性。規(guī)整性包括指令系統(tǒng)的對稱性、勻齊性、指令格

式和數(shù)據(jù)格式的一致性。對稱性是指所有與指令系統(tǒng)有關(guān)的存儲單

元的使用、操作碼的設(shè)置等都是對稱的,可同等對待,所有的指令

都可使用各種尋址方式。勻齊性是指一種操作性質(zhì)的指令可以支持

各種不同的數(shù)據(jù)類型、操作數(shù)大小和存儲單元。指令格式和數(shù)據(jù)格

式的一致性是指指令長度和數(shù)據(jù)長度有一定的關(guān)系,以方便處理和

存取。

(4)兼容性。系列機各機種之間具有相同的基本結(jié)構(gòu)和共同的

基本指令系統(tǒng),因而指令系統(tǒng)是兼容的,即各機種上基本軟件可以

通用。但由于不同機種推出的時間不同,在結(jié)構(gòu)和性能上有差異,

做到所有軟件都完全兼容是不可能的,只能做到“向上兼容”,即

在低檔機上開發(fā)運行的軟件可以在高檔機上運行,也就是指令系統(tǒng)

的指令可以增加,但不能刪除或更改指令功能和格式。

(5)正交性。正交性是指指令中各個不同含義的字段,如操作

類型、數(shù)據(jù)類型、尋址方式等,在編碼時應(yīng)互不相關(guān)、相互獨立。

2.指令格式優(yōu)化設(shè)計的目的

指令是由操作碼和地址碼兩部分組成。操作碼指示指令的功能

(即操作性質(zhì)或操作類型)和所用操作數(shù)的數(shù)據(jù)類型(對于操作數(shù)

不帶類型標(biāo)志的操作數(shù)而言)。地址碼指示操作數(shù)存放的位置,體

現(xiàn)操作數(shù)的來源和表示,包括操作數(shù)地址、尋址方式及地址的附加

信息,如偏移量、塊長度、跳距等。

指令格式的設(shè)計就是要確定操作碼字段和地址碼字段(含尋址

方式)的大小、組合形式、編碼方法和表示方式。而指令格式設(shè)計

的主要目的有兩個,一是使指令字的平均長度短,用較少的位數(shù)來

表示指令的操作信息和地址信息,以便節(jié)省程序的存儲空間,二是

使指令格式盡量規(guī)整,以減少硬件譯碼的復(fù)雜程度,提高指令的執(zhí)

行速度。

指令格式優(yōu)化設(shè)計的基本思想為:指令格式的優(yōu)化設(shè)計可以從

操作碼、地址碼、尋址方式、地址結(jié)構(gòu)等幾個方面著手,盡量接近

指令格式優(yōu)化設(shè)計的兩個主要目標(biāo)。具體說來是:

(1)采用合適的操作碼編碼方法;

(2)采用0、1、2、3等多種地址結(jié)構(gòu),增強單條指令的功能

,縮短整個程序的長度,并加快程序的執(zhí)行速度;

(3)在同種地址結(jié)構(gòu)時再采用多種地址形式;

(4)米用多種尋址方式。

二、指令系統(tǒng)的結(jié)構(gòu)分類

I.按操作數(shù)在CPU中的存儲方法分類

計算機指令系統(tǒng)的結(jié)構(gòu)分類主要由5個因素來決定,即:

①操作數(shù)在CPU中的存儲方法;

②操作數(shù)在指令中顯式表示的個數(shù);

③操作數(shù)的尋址方式;

④指令系統(tǒng)提供的操作類型;

⑤操作數(shù)的類型和大小。

其中操作數(shù)在CPU中的存儲方法,即用來存儲操作數(shù)的存儲單

元的類型,是各種指令系統(tǒng)的結(jié)構(gòu)之間最主要的區(qū)別。

在CPU中用來存儲操作數(shù)的存儲單元主要有堆棧、累加器和一

組寄存器等,從而也就有堆棧型、累加器型和寄存器型等三種類型

的指令。

表4-5三種類型指令對操作數(shù)的存取方式及其優(yōu)缺點

運算指令顯

目的存操作數(shù)的訪問

類型式的操作數(shù)優(yōu)點缺點

儲單元方法

個數(shù)

一種表示計算的

不能隨機訪問堆棧,

堆棧型0堆棧PUSH/POP簡單模型,指令

短小難以生成有效代碼

LOAD/STORE累減少機器內(nèi)部狀累加器是惟一的,

型1累加器

加器態(tài),指令短小通信開銷大

寄存器操作數(shù)均要命名且

寄存器LOAD/STORE寄代碼生成的最一

2/3或存儲顯式表示,指令較

型存器或存儲器般模型

器長

2.通用寄存器指令系統(tǒng)的結(jié)構(gòu)分類

通用寄存器型指令系統(tǒng)結(jié)構(gòu)的主要優(yōu)點:

1)能夠使編譯器有效地使用寄存器。在表達(dá)式求值方面,

寄存器型指令系統(tǒng)結(jié)構(gòu)比堆棧型指令集結(jié)構(gòu)和累加器型指令系統(tǒng)結(jié)

構(gòu)具有更大的靈活性;

2)寄存器可以用來存放變量。

通用寄存器指令系統(tǒng)結(jié)構(gòu)是現(xiàn)代指令集結(jié)構(gòu)類型的主流,而且

可能延續(xù)使用相當(dāng)長的時間。

CPU到底需要設(shè)置多少個寄存器呢?

通用寄存器型指令系統(tǒng)結(jié)構(gòu)細(xì)分:

1)寄存器-寄存器型(R?R:Register?Register)

2)寄存器-存儲器型(R?M:Register—Memory)

3)存儲器--存儲器型(M~M:Memory?Memory)。

三、指令字的編碼格式

指令字的長度主要取決于操作碼的長度、操作數(shù)地址的長度和

操作數(shù)地址的個數(shù),由于不同的指令,操作碼的長度、操作數(shù)地址

的長度和操作數(shù)地址的個數(shù)都有可能不一樣,所以指令字的長度一

般不是固定的,通常是字節(jié)的整數(shù)倍。

舞祚海地址曬::操作根■速痂:由地址F法::地址口驊:

空白;::毓城照空白蚯址何2::地址段3;:

操作碼空白;三地卅滴空白空白;區(qū)址檄:

圖4-15指令字長度固定時等長地址碼的編碼格式圖4-15指令字長度固定時等長操作碼的編碼格式

1.操作碼長度固定的編碼格式

在操作碼長度固定的情況下,即使操作數(shù)地址的個數(shù)不變,通

過設(shè)置不同的地址字段,可以形成不同特點三的種指令系統(tǒng)的編碼

格式,如圖4-17所示:

變長編碼格式操作地址描述符地址碼字段1......地址描述符地址碼字段

碼1nn

操作地址碼1地址碼2地址碼

定長編碼格式碼3

混合編碼格式操作地址描述符地址描述符2地址碼字段

碼1

操作地址描述地址碼字操作地址描述符地址碼字段1地址碼字段2

碼符段碼

第一種是變長編碼格式

當(dāng)指令系統(tǒng)包含多種尋址方式和操作類型時,該編碼方式

可有效減少指令系統(tǒng)指令字的平均長度,降低目標(biāo)代碼的長度,但

會使各條指令字的長度和執(zhí)行時間大不一樣。多數(shù)CISC計算機的

指令系統(tǒng)采用這種編碼格式。

第二種是定長編碼格式

定長編碼格式是將操作類型和尋址方式組合編碼在操作碼

中,一般可使所有指令的長度是固定統(tǒng)一的。當(dāng)尋址方式和操作類

型非常少時,可以有效降低譯碼的復(fù)雜度,提高譯碼的性能。一般

RISC計算機的指令集結(jié)構(gòu)均采用這種的編碼格式。

第三種是混合編碼格式

混合編碼格式的目的是通過提供一定類型的指令字長,期

望能夠兼顧降低目標(biāo)代碼長度和降低譯碼復(fù)雜度兩個目標(biāo),也是指

令系統(tǒng)通常采用的一種編碼格式。

2.操作碼的擴展

在指令字長度固定的情況下,為縮短指令字的平均長度,操作

碼和地址碼長度都不固定。通常在指令中用一個固定長度的字段來

表示基本操作碼,而對于一部分不需要某個地址碼的指令,則把操

作碼的長度擴充到該地址字段。以指令字長度為16位為例,將這16

位分成4段,1個4位的基本操作碼字段和3個4位的地址字段,其一

般格式如圖4-18所示。

操作碼地址碼A地址碼B地址碼C

1512118743

0

假設(shè)某機器指令系統(tǒng)中有15條三地址指令、15條二地址指令、

15條一地址指令和16條零地址指令,共61條。若指令字、操作碼和

地址碼長度固定,則操作碼要6位,指令字長度為18位。若采用操

作碼的擴展技術(shù),指令字長度為16位,減少了2位。該機器指令系

統(tǒng)的指令可進(jìn)行如下編碼:

①15條三地址的操作碼用4位基本操作碼字段(12?15位)編碼,即

0000?1110表示指令,剩下的一個編碼“1111”用于把地址碼A擴展為操作

碼。

。②15條二地址的操作碼用高4位的“1111”擴展編碼和4位地址碼A(8?

11位)編碼,即11110000?11111110表示指令,剩下的一個編碼“11111111”

用于把地址碼B擴展為操作碼。

③15條一地址的操作碼用高8位的“11111111”歹展編碼和4位地址碼B

(4?7位)編碼,即11111110000?11111111110表示指令,剩卜的一個編碼

“111111111111”用于把地址碼C擴展為操作碼。

④16條一地址的操作碼用高12位的“111111111111”擴展編碼和4位地址

碼C(0?3位)編碼,即1111111111110000?1111111111111111表示指令。

四、指令格式中的地址碼

1.地址碼的個數(shù)

地址碼在指令中所占的長度最長,而地址碼編碼的長度主要與

指令中地址碼的個數(shù)、操作數(shù)存放的存儲設(shè)備(通用寄存器、主存

儲器和堆棧等)、存儲設(shè)備的尋址空間大小、編址方式和尋址方式

等有關(guān),其中地址碼的個數(shù)是關(guān)鍵。

指令中的地址碼的個數(shù)通常有3個、2個、1個和沒有地址碼4種,

因此按地址碼的個數(shù)來分,指令格式的類型就有三地址指令、二地

址指令、一地址指令和零地址指令4種。

二地址的指令

指令中有一個源操作數(shù)地址和一個目標(biāo)地址,運算所需的兩個

基本操作數(shù)分別來自源地址和目標(biāo)地址,運算結(jié)果覆蓋目標(biāo)地址指

定的源操作數(shù)。適用于通用寄存器的使用和只需一個源操作數(shù)的

指令。

一地址的指令

指令中只有一個源地址,運算所需的兩個操作數(shù),一個隱含在

累加器(通用寄存器)中,另一個由源地址指定,運算結(jié)果隱含存

入累加器。采用一地址指令的計算機系統(tǒng)必須有且只有一個累加器,

其硬件結(jié)構(gòu)簡單,特別適合連續(xù)運算,如求累加和、算術(shù)表達(dá)式計

算等。

三地址的指令

指令中有兩個源操作數(shù)地址和一個目標(biāo)地址,運算結(jié)果按目標(biāo)

地址存入。該指令在運算后,不會破壞源操作數(shù),其硬件結(jié)構(gòu)復(fù)雜,

適合于向量和矩陣運算的指令。

零地址指令即堆棧型指令

運算所需操作數(shù)隱含從堆棧頂部彈出,運算結(jié)果隱含壓入堆棧

頂部,因此不需要地址碼。訪問堆棧的信息量很大,從而造成程序

執(zhí)行速度降低。為了克服這一缺點,可以把堆棧頂部改為一個高速

寄存器堆,以提高棧頂壓入和彈出的速度。

地址個數(shù)操作碼長度程序存儲量程序執(zhí)行速度適用場合

三地址短很大一般向量和矩陣運算

二地址一般較大較慢一般不用

二地址R型一般很小很快多累加器、數(shù)據(jù)傳輸多

-地址較長較小較快連續(xù)運算、硬件結(jié)構(gòu)簡單

零地址很長很小很慢嵌套、遞歸、變量多

2.尋址方式表示的編碼方法

CPU在執(zhí)行指令的時候,首先對指令進(jìn)行譯碼,然后根據(jù)譯碼

結(jié)果確定指令所表示的操作和指令所指定的尋址方式,定位指令執(zhí)

行所需要的操作數(shù)。

而尋址方式的表示通常兩種編碼方法。一種是將尋址方式編碼

于操作碼中,由操作碼在描述指令操作的同時,也描述了相應(yīng)操作

數(shù)的尋址方式,如圖4-19(b)所示;另一種是為每個操作數(shù)設(shè)置

?個地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式,如

圖4-19(a)所示。

操作碼地址描述符地址碼字段......操作碼地址碼字段.....

(a)(b)

3.地址碼長度的縮短

在一般計算機系統(tǒng)中,邏輯地址空間的大小是確定的。縮短地

址碼長度就是要用一個比較短的地址碼表示一個比較大的邏輯地

址空間,同時要求有比較靈活有效的尋址方式。而縮短地址長度

的方法很多,現(xiàn)僅就通過尋址方式來縮短地址碼長度的方法進(jìn)行

分析。

1)間址尋址方式在主存的低地址端專門安排一個區(qū)域用于間址尋址。

由于表示主存低地址端存儲單元的地址碼長度可以很短,使得采用間址尋

址方式的指令地址碼很短。

2)變址尋址方式:由于程序的局部性,在變址尋址方式中使用的地址

偏移量可以比較短,通常可以把比較長的基地址(如32位)放在變址寄存

器中,在指令的地址碼中只需給出比較短的地址偏移量。因此,采用變址

尋址方式的地址碼長度通常有10多位或20位左右就可以。

3)寄存器間接尋址方式:用寄存器間接尋址比用主存單元間址尋址不

僅因減少訪存次數(shù)而節(jié)省尋址空間,而且指令中地址碼長度還可以更短。

因為寄存器的數(shù)量比較少,表示一個寄存器的地址只需要很少幾位。

五、指令格式中的操作碼編碼

1.操作碼編碼的基本思想

操作碼編碼的主要目標(biāo)是:采用優(yōu)化的編碼方法縮短指令式中

操作碼的長度以減少程序總位數(shù),并能增加指令字所能表示的操作

信息和地址信息。

Huffman編碼壓縮方法

基本思想是:對使用頻度最高的對象,用最短位數(shù)的編碼表示;對使用

頻度較低的對象,允許用較長位的編碼表示。操作碼編碼的優(yōu)化程度可用信

息源尷和信息冗余量來衡量。根據(jù)Huffman編碼壓縮的方法原理,所有操作

碼的平均長度最短(即信息源嫡)為:

n

〃=,P,xlog22

Z=1

其中:Pi為操作碼i在程序中出現(xiàn)的概率,n為操作碼的個數(shù)。

信息冗余量為:

n

7?=(L-/7)/Z=l-(^p,.xlog2p,.)/Z

/=1

其中:L為操作碼編碼的平均長度。

例如,假設(shè)一臺模型計算機有II?17共7條指令,它們在程序中使

用的概率如表4-8所示。該模型計算機指令的信息源燧為:

指令使用概率指令使用概率

T10.45150.03

120.30160.01

130.15170.01

140.05

n

xl

H二一2A°g2A=1959

Z=1

實際上,操作碼的平均長度不可能達(dá)到最短的平均長度(信息源?。驗?/p>

每個操作碼的位數(shù)必須是正整數(shù)。因此,操作碼編碼的方法通常有三種,即

固定長度編碼法、Huffman編碼法和擴展編碼法。

2.固定長度編碼法

固定長度編碼法是指令操作碼長度采用固定長度的編碼方式,

如果需要編碼的操作碼有n個,那么定長操作碼的位數(shù)至少需要

riog2nj位。該編碼方式非常規(guī)整,使硬件譯碼很簡單,但信息

冗余量比較大。

例如,用一個字節(jié)表示定長操作碼,可表示28=256個操作碼,

如果指令系統(tǒng)只設(shè)計了150條指令,那么8位定長操作碼表示的冗余

編碼為106個。

3.Huffman編碼法

Huffman編碼法(又稱為最小概率合并法)是利用Huffinan算法,

通過構(gòu)造Huffman樹對操作碼進(jìn)行編碼,該編碼稱為Huffinan編碼。

Huffinan編碼法的具體步驟為:

(1)將要編碼的指令按概率值大小從左向右排列(概率相等的指令可任

意排列),每條指令的操作碼是一個結(jié)點。

(2)選取兩個概率最小的結(jié)點合并成一個概率值是兩者概率之和的

新結(jié)點,并把這個新結(jié)點插入到其他尚未合并的結(jié)點中重新排列。

(3)繼續(xù)過程2,直到全部結(jié)點合并完畢得到一個根結(jié)點(根結(jié)點的

概率值為1),構(gòu)成了一棵Huffman樹。

(4)若某個概率值結(jié)點是由兩個概率值結(jié)點相加而成,則在三個結(jié)

點連接的路徑上給定代碼0和1。

(5)繼續(xù)過程4,直到全部結(jié)點連接的路徑上均給定代碼0和1。

(6)從根結(jié)點開始,沿箭頭所指方向到指令結(jié)點所經(jīng)過的路徑代碼

序列,則是該指令的Huffinan編碼。

4.擴展編碼法

采用Huffinan編碼方法能夠使操作碼的平均長度短、信息冗余量

小,但形成的編碼很不規(guī)整。例如表4-10中7條指令就形成6種不同

長度的操作碼,既不利于硬件的譯碼,也不利于軟件的編譯。另外,

長度各異的操作碼也很難與地址碼配合以形成有規(guī)則長度的指令編

碼。

。在許多處理機中,操作碼編碼采用固定長度編碼法與Huffman

編碼法相結(jié)合的一種折中的編碼方法,稱為擴展編碼法。

擴展編碼法包含有等長擴展編碼法和不等及擴展編碼法兩種。

等長擴展編碼法是指出現(xiàn)概率較低的操作碼用較長的編碼表示

時,每次擴展的編碼位數(shù)相等。

不等長擴展編碼法是指每次擴展的編碼位數(shù)不相等,例如1-2-3-

5擴展法的前2次擴展都加長1位,第3次擴展加長2位。

對表4-8模型計算機指令的操作碼采用1-2-3-5擴展編碼法和2-4擴展編碼

法,可得出如表4-11所示的兩種編碼結(jié)果。

指令出現(xiàn)概率Huffman編操作碼現(xiàn)1-2-3-5擴操作碼擴展操作

令2-4

碼長度黑展編碼長度編碼碼長

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

無論采用哪一種擴展編碼方法,衡量的標(biāo)準(zhǔn)是操作碼平均長度

是否最短,或信息冗余量是否最小。由于操作碼平均長度取決于各

指令的出現(xiàn)概率,因此可根據(jù)指令出現(xiàn)的概率分布來選擇采用何種

擴展編碼法。

另外,需要考慮操作碼編碼的最長位數(shù)和需要編碼的操作碼

個數(shù)。

從信息冗余量最小來看,Huffinan編碼方法是最好的;從編

碼規(guī)整性來看,固定長度編碼方法是最好的。等長擴展編碼的信息

冗余量較小,規(guī)整性也較好,便于實現(xiàn)硬件譯碼,便于與地址碼配

合形成規(guī)則的指令格式。

六、指令系統(tǒng)中的控制指令

1.條件分支指令中條件表示的方法

指令系統(tǒng)中能夠改變控制流的控制指令有3種:條件分支、無條

件跳轉(zhuǎn)和過程調(diào)用/返回,它們的使用頻度如表4-12所示,其中百

分比是指它們占控制指令總數(shù)的比例。

指令類型使用頻度

整型平均浮點平均

調(diào)用/返回19%8%

無條件跳轉(zhuǎn)6%10%

條件分支75%82%

1.條件分支指令中條件表示的方法

分支條件的表示是影響該指令執(zhí)行速度的主要因素。目前分支

條件的表示方法有3種,各種表示方法的優(yōu)缺點如表4-13所示。

名稱條件表示的方法優(yōu)點缺點

條件碼(CC)檢測由ALU操作設(shè)置?些可自由設(shè)置分條件碼是增設(shè)的狀態(tài),會限制指

特殊的位(CC)支條件令執(zhí)行順序。

條件寄存器比較結(jié)果放入任何一個寄簡單占用一個寄存器

存器,檢測該寄存器

比較與分支比較操作是分支指令的一用一條指令實比較受到一定限制,流水方式時

部分現(xiàn)因操作多而無法在一拍內(nèi)完成

2.控制指令中目標(biāo)地址的表示方法

在控制指令中,需要給出轉(zhuǎn)移目標(biāo)地址,且一般情況下,除過

程返回指令外,轉(zhuǎn)移目標(biāo)地址都會顯式給出的(在編譯時;過程返

回指令的轉(zhuǎn)移目標(biāo)地址還不知道)。指定轉(zhuǎn)移目標(biāo)地址最常用的方

法是PC相對尋址,即在指令中提供一個偏移量,該偏移量與程序

計數(shù)器(PC)值相加而得出轉(zhuǎn)移目標(biāo)地址。PC相對尋址有許多優(yōu)

點,一是轉(zhuǎn)移目標(biāo)地址通常是離當(dāng)前很近,用相對于當(dāng)前PC值的

偏移量來確定目標(biāo)地址,可以減少表示該目標(biāo)地址所需要的位數(shù);

二是使代碼被裝入到主存儲器任意位置執(zhí)行,即“位置無關(guān)”,可

減少程序鏈接的工作量,即使是動態(tài)鏈接的程序也是有效的。

采用PC相對尋址方式來確定轉(zhuǎn)移目標(biāo)地址時,需要知道偏移量

大小的分布情況,以便確定偏移量字段的長度。有模擬結(jié)果表明,

采用4?8位偏移量字段就能表示大多數(shù)控制指令的轉(zhuǎn)移目標(biāo)地址。

例4.3設(shè)某計算機為定長指令字結(jié)構(gòu),指令字長為12位,每個

地址碼占3位,提出一種該計算機指令系統(tǒng)的設(shè)計方案,使其包含:

4條三地址指令、8條二地址指令和180條一地址指令。

解由題意可知,當(dāng)指令系統(tǒng)的基本操作碼的位數(shù)為:12-3X3

=3位,即三地址指令的操作碼位數(shù)為3位。3位操作碼共有23=8種

編碼?,F(xiàn)使“000?011”為四條三地址數(shù)指令的編碼,“100?111”

四個編碼把一個地址碼(三位)擴展為操作碼。

用4個擴展編碼中的“100”把一個地址碼(三位)擴展為

操作碼,共有23=8種編碼“100000?100111”為八條二地址數(shù)指

令的編碼,其余3個擴展編碼把一個地址碼(三位)擴展為操作碼,

共有3X23=24種編碼。

用24種編碼把一個地址碼(三位)擴展為操作碼,共有

24X23=182種編碼,用其中的180個編碼為180條一地址數(shù)指令的

編碼。

例4.4對表4-8給出的模型機的指令操作碼分別進(jìn)行等長擴展編

碼和不等長擴展編碼,并分別計算編碼的信息冗余量。

解模型機有7個操作碼需要編碼。

(1)采用2-4等長擴展編碼

對出現(xiàn)概率較高的II?13分別用00、01和10表示,保留一個碼點標(biāo)

志11用于擴展編碼,擴展2位得至!J4位長的4個編碼1100、1101、1110和1111,

正好表示14?17的4個操作碼。這和設(shè)-4等長擴展編碼如表4-14第4列所示。采

用2-4等長擴展編碼可以保留用于擴展編碼的不同的碼點標(biāo)志和不同的碼點

標(biāo)志個數(shù)而形成不相同的2-4等長擴展編碼。例如,可以用00和01表示II和12

的操作碼,保留兩個碼點標(biāo)志10和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論