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

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論