《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》 課件 第二章 指令系統(tǒng)_第1頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》 課件 第二章 指令系統(tǒng)_第2頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》 課件 第二章 指令系統(tǒng)_第3頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》 課件 第二章 指令系統(tǒng)_第4頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》 課件 第二章 指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二章指令系統(tǒng)主講教師:?jiǎn)尾槺菊聦⒔榻B數(shù)據(jù)表示 尋址方式指令系統(tǒng)討論在計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)中如何給程序設(shè)計(jì)者提供合理的機(jī)器級(jí)界面,以及指令系統(tǒng)的改進(jìn)對(duì)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)產(chǎn)生的影響及其發(fā)展趨勢(shì)數(shù)據(jù)表示數(shù)據(jù)表示:指的是能由機(jī)器硬件直接識(shí)別和引用的數(shù)據(jù)類(lèi)型。數(shù)據(jù)表示直接與計(jì)算機(jī)的數(shù)據(jù)處理部件相對(duì)應(yīng),當(dāng)機(jī)器定義了某種數(shù)據(jù)類(lèi)型的運(yùn)算指令并設(shè)置了相應(yīng)的處理硬件,能夠直接對(duì)這種類(lèi)型的數(shù)據(jù)進(jìn)行處理時(shí),機(jī)器就具有了該類(lèi)型的數(shù)據(jù)表示。和數(shù)據(jù)結(jié)構(gòu)的關(guān)系數(shù)據(jù)結(jié)構(gòu)研究的是實(shí)際應(yīng)用中所要用到的各種數(shù)據(jù)元素或信息單元之間的結(jié)構(gòu)關(guān)系。常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)有標(biāo)量、向量、串、隊(duì)、棧、陣列、鏈表、樹(shù)、圖等。數(shù)據(jù)結(jié)構(gòu)不一定能被機(jī)器直接識(shí)別和處理,但可通過(guò)軟件映像,將其變換成機(jī)器中所具有的各種數(shù)據(jù)表示來(lái)實(shí)現(xiàn)。因此,數(shù)據(jù)表示是數(shù)據(jù)結(jié)構(gòu)的子集,機(jī)器具有不同的數(shù)據(jù)表示就可以為數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)提供不同程度的支持,故數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)表示是機(jī)器軟、硬件的交界面。在機(jī)器中如何進(jìn)行軟、硬功能的分配,合理設(shè)置數(shù)據(jù)表示,以得到對(duì)應(yīng)用中遇到的數(shù)據(jù)結(jié)構(gòu)有較高的實(shí)現(xiàn)效率等問(wèn)題,是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)研究的內(nèi)容。數(shù)據(jù)表示例子早期的機(jī)器只有定點(diǎn)教據(jù)表示。隨著計(jì)算機(jī)技術(shù)的發(fā)展和機(jī)器功能的不斷提高,現(xiàn)在邏輯(布爾)數(shù)、定點(diǎn)數(shù)(整數(shù))、浮點(diǎn)數(shù)(實(shí)數(shù))、十進(jìn)制數(shù)、字符串等,都已成為計(jì)算機(jī)的基本數(shù)據(jù)表示。一般計(jì)算機(jī)的數(shù)據(jù)字長(zhǎng)有8位、16位、32位等。計(jì)算機(jī)的指令系統(tǒng)可支持對(duì)字節(jié)(8位)、半字(16位)、單字(32位)和雙字(64位)的運(yùn)算。變址操作的設(shè)置為向量、陣列數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)提供了直接支持,可以不必修改程序,僅用循環(huán)的辦法就能實(shí)現(xiàn)對(duì)整個(gè)向量、陣列的各個(gè)元素進(jìn)行運(yùn)算處理。然而,目前計(jì)算機(jī)系統(tǒng)中存儲(chǔ)器一維順序存儲(chǔ)的線性結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu)中經(jīng)常要求的多維離散結(jié)構(gòu)仍存在很大差距,不利于數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)。而且數(shù)據(jù)結(jié)構(gòu)的發(fā)展總是領(lǐng)先于機(jī)器的數(shù)據(jù)表示,根據(jù)實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的需要來(lái)設(shè)計(jì)和改進(jìn)系統(tǒng)結(jié)構(gòu)成為我們的重要任務(wù)。在計(jì)算機(jī)中確定數(shù)據(jù)表示,應(yīng)從其能否提高運(yùn)算速度、能否減少CPU與主存間的通信量和系統(tǒng)開(kāi)銷(xiāo),以及它的通用性和利用率等各種因素加以綜合考慮。下面討論一下計(jì)算機(jī)中的幾種高級(jí)數(shù)據(jù)表示。高級(jí)數(shù)據(jù)表示自定義數(shù)據(jù)表示向量、數(shù)組數(shù)據(jù)表示1.自定義數(shù)據(jù)類(lèi)型對(duì)于處理運(yùn)算符和數(shù)據(jù)類(lèi)型的關(guān)系,高級(jí)語(yǔ)言和機(jī)器語(yǔ)言的差別很大。高級(jí)語(yǔ)言用類(lèi)型說(shuō)明語(yǔ)句指明數(shù)據(jù)的類(lèi)型,讓數(shù)據(jù)類(lèi)型直接與數(shù)據(jù)本身聯(lián)系在一起,運(yùn)算符對(duì)不同類(lèi)型的數(shù)據(jù)是通用的。傳統(tǒng)的機(jī)器語(yǔ)言中對(duì)數(shù)據(jù)沒(méi)有類(lèi)型說(shuō)明,而使用不同的指令操作碼區(qū)分對(duì)不同類(lèi)型數(shù)據(jù)的操作。編譯時(shí)要把高級(jí)語(yǔ)言程序中的數(shù)據(jù)類(lèi)型說(shuō)明語(yǔ)句和運(yùn)算符變換成機(jī)器語(yǔ)言中不同類(lèi)型指令的操作碼,并驗(yàn)證操作數(shù)類(lèi)型的合法性,這會(huì)增加編譯的負(fù)擔(dān)。為了在數(shù)據(jù)表示上縮短高級(jí)語(yǔ)言與機(jī)器語(yǔ)言的語(yǔ)義差距,可采用自定義數(shù)據(jù)表示。帶標(biāo)志符的數(shù)據(jù)表示定義每個(gè)數(shù)據(jù)由類(lèi)型標(biāo)志位和數(shù)據(jù)值兩部分組成,用類(lèi)型標(biāo)志位指明數(shù)據(jù)值部分究竟是二進(jìn)制整數(shù)、十進(jìn)制整數(shù)、浮點(diǎn)數(shù)、字符串,還是地址字,將數(shù)據(jù)類(lèi)型與數(shù)據(jù)本身直接聯(lián)系在一起。這樣,機(jī)器語(yǔ)言中的操作碼可以同高級(jí)語(yǔ)言中的運(yùn)算符一樣,對(duì)各種數(shù)據(jù)類(lèi)型的操作可以通用。我們稱(chēng)這種數(shù)據(jù)表示為帶標(biāo)志符的數(shù)據(jù)表示。標(biāo)志符由編譯程序建立,對(duì)高級(jí)語(yǔ)言程序來(lái)說(shuō)是透明的,以減輕應(yīng)用程序員的負(fù)擔(dān)。優(yōu)點(diǎn)采用標(biāo)志符數(shù)據(jù)表示的機(jī)器,具有簡(jiǎn)化指令系統(tǒng)和裎序設(shè)計(jì)、簡(jiǎn)化編譯程序及編譯過(guò)程、方便實(shí)現(xiàn)一致性校驗(yàn)、能夠用硬件自動(dòng)完成數(shù)據(jù)類(lèi)型轉(zhuǎn)換以及支持?jǐn)?shù)據(jù)庫(kù)系統(tǒng)的實(shí)現(xiàn)與數(shù)據(jù)類(lèi)型無(wú)關(guān)的要求等優(yōu)點(diǎn)。數(shù)據(jù)描述符對(duì)于向量、數(shù)組、記錄這類(lèi)每個(gè)元素都具有相同屬性的數(shù)據(jù),可定義一個(gè)數(shù)據(jù)描述符來(lái)說(shuō)明其共同的類(lèi)型信息。數(shù)據(jù)描述符和標(biāo)志符的差別在于:標(biāo)志符與每個(gè)數(shù)據(jù)相連,共同存在一個(gè)存儲(chǔ)單元中,描述單個(gè)數(shù)據(jù)的類(lèi)型特征;描述符則與數(shù)據(jù)分開(kāi)存放,用來(lái)描述所要訪問(wèn)的數(shù)據(jù)是整塊數(shù)據(jù)還是單個(gè)數(shù)據(jù)、訪問(wèn)該數(shù)據(jù)塊或數(shù)據(jù)元素所需要的地址以及其他特征信息等。標(biāo)志符與數(shù)據(jù)一同出現(xiàn)在程序中并同時(shí)被訪問(wèn),而采用數(shù)據(jù)描述符時(shí)程序中只出現(xiàn)描述符,只有當(dāng)描述符被訪問(wèn)時(shí)才根據(jù)其中的信息形成操作數(shù)地址,然后再訪問(wèn)數(shù)據(jù)。2.向量、數(shù)組數(shù)據(jù)表示向量、數(shù)組數(shù)據(jù)表示是為支持向量、數(shù)組數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)和快速運(yùn)算而設(shè)置的。在具有向量、數(shù)組數(shù)據(jù)表示的向量處理機(jī)中,硬件上設(shè)置有以流水或陣列方式處理的高速運(yùn)算器,而其指令系統(tǒng)中則包含功能豐富的向量或陣列運(yùn)算指令。只需一條如下的向量運(yùn)算指令就可以方便地實(shí)現(xiàn)諸如 ci=ai+5+bi

i=10,11,…,1000的向量運(yùn)算功能。指令中源向量A、B及結(jié)果向量C的向量參數(shù)包括其基地址、位移量、向量長(zhǎng)度和向量元素步距等參數(shù)。優(yōu)點(diǎn)用一條向量、數(shù)組指令同時(shí)實(shí)現(xiàn)對(duì)整個(gè)向量、數(shù)組的高速處理,同時(shí)編譯程序也得到簡(jiǎn)化。3.堆棧數(shù)據(jù)表示為了能高效實(shí)現(xiàn)編譯和子程序調(diào)用中的堆棧數(shù)據(jù)結(jié)構(gòu),很多機(jī)器都設(shè)置有堆棧數(shù)據(jù)表

示。具有堆棧數(shù)據(jù)表示的機(jī)器稱(chēng)為堆棧機(jī)器。堆棧機(jī)器對(duì)堆棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的支持體現(xiàn)在以下幾個(gè)方面:(1)有功能豐富的堆棧操作類(lèi)指令,可對(duì)堆棧中的數(shù)據(jù)直接進(jìn)行各種運(yùn)算和處理。(2)由若干高速寄存器組成的硬件堆棧,并控制它與主存中的堆棧區(qū)在邏輯上組成一

個(gè)整體,使堆棧具有寄存器的訪問(wèn)速度和圭存的容量。(3)有力地支持子程序的嵌套和遞歸調(diào)用。(4)有力地支持高級(jí)語(yǔ)言程序的編譯。例如在機(jī)器HP-3000中除一般的訪存指令外還有一組堆棧指令,格式為主操作碼為0000時(shí)表示為堆棧指令。其功能為按照先A操作后B操作的順序?qū)m敽痛螚m數(shù)膬蓚€(gè)操作數(shù)進(jìn)行運(yùn)算,結(jié)果存于原操作數(shù)所在位置如有高級(jí)語(yǔ)言算術(shù)表達(dá)式A/B+C*(D+E)其逆波蘭表達(dá)式為AB/CDE+*+作為編譯時(shí)的中間語(yǔ)言,直接生成堆棧機(jī)器指令程序?yàn)長(zhǎng)OAD A ;sp←sp+1,M(sp)←M(A)LOAD B ;sp←sp+1,M(sp)←M(B)DIV DEL ;除法,sp←sp-1LOAD CLOADDADDM E ;M(sp)←M(sp)+M(A)MUL ADD ;乘法,加法在堆棧機(jī)器中的實(shí)現(xiàn)過(guò)程如圖在堆棧機(jī)器中實(shí)現(xiàn)算術(shù)表達(dá)式,可以簡(jiǎn)化編譯,在較大程度上縮小高級(jí)語(yǔ)言和機(jī)器語(yǔ)言之間的語(yǔ)義差距。浮點(diǎn)數(shù)尾數(shù)的下溢處理如浮點(diǎn)數(shù)運(yùn)算過(guò)程中因相乘或各種右移,會(huì)使尾數(shù)超出運(yùn)算器和存儲(chǔ)器的字長(zhǎng)范圍。超長(zhǎng)尾數(shù)部分丟棄會(huì)造成精度損失,如果用兩倍字長(zhǎng)存儲(chǔ)和運(yùn)算來(lái)保證精度,則會(huì)增加存儲(chǔ)空間和運(yùn)算時(shí)間。對(duì)于一般的應(yīng)用,應(yīng)考慮在尾數(shù)的下溢處理中如何采取措施以盡量減少運(yùn)算中的精度損失。1.截?cái)喾ǚ椒ㄊ呛?jiǎn)單地將下溢部分截去。其最大誤差在整數(shù)二進(jìn)制運(yùn)算中接近于1,在分?jǐn)?shù)二進(jìn)制運(yùn)算中接近于2-m(m為尾數(shù)的二進(jìn)制位數(shù))。對(duì)正數(shù)誤差恒為負(fù),統(tǒng)計(jì)平均誤差為負(fù)且無(wú)法調(diào)節(jié)。該方法誤差較大,但實(shí)現(xiàn)簡(jiǎn)單,無(wú)須增加硬件及處理時(shí)間。2.舍入法方法是將尾數(shù)多保留一位(溢出部分的最高位),處理時(shí)該保留位加1后舍去。其誤差

有正有負(fù),最大誤差小于截?cái)喾ǎ骄`差無(wú)法調(diào)節(jié)。統(tǒng)計(jì)平均誤差接近于0,稍偏正。該

方法實(shí)現(xiàn)簡(jiǎn)單,增加硬件少,但處理速度慢。處理時(shí)間最長(zhǎng)的情況是從尾數(shù)最低位向最高位

進(jìn)位,并發(fā)生上溢而需要右移規(guī)格化。3.恒置1法方法是將尾數(shù)規(guī)定字長(zhǎng)的最低位恒置1。其誤差有正有負(fù),最大誤差為1。統(tǒng)計(jì)平均誤

差接近于0,稍偏正。平均誤差無(wú)法調(diào)節(jié)。該方法實(shí)現(xiàn)簡(jiǎn)單,無(wú)須增加硬件,處理速度快。4.查表舍入法其方法基于存儲(chǔ)邏輯的思想,用ROM或PLA存放下溢處理表,如圖2.2所示。表的k

位地址來(lái)自尾數(shù)最低的k-l位和準(zhǔn)備舍掉部分的最高位,表的內(nèi)容則是2k個(gè)k-l位下溢處理結(jié)果。一般情況下,下溢處理結(jié)果按舍人法編碼;當(dāng)尾數(shù)的最低k-l位為全1時(shí),則采用截?cái)喾ㄐ纬上乱缣幚斫Y(jié)果,即仍保持k-l位為全1。下溢處理表中的內(nèi)容由設(shè)計(jì)者填入,處理時(shí)僅需從表中讀出處理結(jié)果,處理速度比舍入法快。該方法可根據(jù)具體情況設(shè)置處理結(jié)果,平均誤差可調(diào)節(jié)至趨于0,但需增加硬件。2.2指令系統(tǒng)的優(yōu)化設(shè)計(jì)指令系統(tǒng)是程序設(shè)計(jì)者看到的機(jī)器主要屬性和軟、硬件的主要界面,它對(duì)計(jì)算機(jī)功能的確定至關(guān)重要。指令系統(tǒng)的設(shè)計(jì)主要包括指令功能設(shè)計(jì)和指令格式設(shè)計(jì)兩方面,其內(nèi)容與前述數(shù)據(jù)表示以及尋址方式密切相關(guān)。本節(jié)從尋址方式及相關(guān)問(wèn)題人手,著重討論指令格式的優(yōu)化及指令系統(tǒng)的改進(jìn)和發(fā)展的途徑。尋址方式分析指令尋找所需操作數(shù)或信息的方式稱(chēng)為尋址方式。計(jì)算機(jī)用到的數(shù)據(jù)、指令等信息通常保存在通用寄存器、主存、堆棧以及設(shè)備寄存器或某砦專(zhuān)門(mén)寄存器等部件中。為了訪問(wèn)這些部件,首先要對(duì)它們進(jìn)行編址。1.編址方式部件的編址方式一般有以下幾種:各種部件分類(lèi)獨(dú)立編址,構(gòu)成多個(gè)一維的線性地址空間。用不同的指令訪問(wèn)不同的部件。各種部件統(tǒng)一編址.構(gòu)成一個(gè)一維線性地址空間。在指令中通過(guò)不同的地址訪問(wèn)不同的部件。隱式編址。對(duì)像堆棧或某些專(zhuān)用寄存器等部件,采用事先約定好的方式隱式尋址,以加快對(duì)其尋址和訪問(wèn)的速度。目前,大多數(shù)計(jì)算機(jī)都采用將主存、通用寄存器、堆棧分類(lèi)編址,并分別形成面向寄存器、堆棧和主存的尋址方式。由指令格式中的地址碼形成操作數(shù)的物理地址的方式和過(guò)程,在計(jì)箅機(jī)組成原理課中已有過(guò)詳細(xì)的介紹,如立即尋址、直接尋址、間接尋址、相對(duì)尋址、變址尋址等,在此不再討論。2.程序定位技術(shù)程序員編寫(xiě)程序時(shí)使用的地址稱(chēng)為邏輯地址,而主存物理地址指的是程序在主存中的實(shí)際地址,計(jì)算機(jī)只能根據(jù)物理地址尋址和訪問(wèn)信息。所謂程序定位就是把指令和數(shù)據(jù)的邏輯地址轉(zhuǎn)換成主存物理地址的過(guò)程。程序定位技術(shù)可分為三種:直接定位、靜態(tài)再定位和動(dòng)態(tài)再定位。(1)直接定位程序員在編寫(xiě)程序時(shí)直接指明程序和數(shù)據(jù)在實(shí)際主存中存放的位置。此時(shí)主存物理地址和邏輯地址是一致的,從而由邏輯地址構(gòu)成的程序空間和由主存物理地址構(gòu)成的主存空間(也稱(chēng)實(shí)存空間)也是一致的。這種定位方式只在初期的計(jì)算機(jī)中應(yīng)用過(guò)。后來(lái)出現(xiàn)的操作系統(tǒng)可以管理主存中同時(shí)存放的多道程序,而程序員編程時(shí)并不知道該程序?qū)⒋娣旁谥鞔嬷惺裁次恢?,所以各道程序的邏輯地址都是?開(kāi)始編址。當(dāng)程序裝入主存時(shí)需要進(jìn)行邏輯地址空間到物理地址空間的變換,即進(jìn)行程序的定位。(2)靜態(tài)再定位這是在目的程序裝入主存時(shí)通過(guò)調(diào)用裝入程序,用軟件方法把目的程序的邏輯地址變換成物理地址,而在程序執(zhí)行過(guò)程中,物理地址不再改變的程序定位技術(shù)。由于這種技術(shù)基于VonNeumann型機(jī)器指令可修改的特點(diǎn),不符合程序可再人性的要求,所以逐漸也被淘汰(3)動(dòng)態(tài)再定位程序不做任何變換直接裝入主存,同時(shí)將裝入主存的起始地址存入對(duì)應(yīng)該道程序使用的基址寄存器。在程序執(zhí)行時(shí),通過(guò)地址加法器將邏輯地址加上基址寄存器的程序起始地址(簡(jiǎn)稱(chēng)基址)形成物理地址后訪問(wèn)主存。這是借鑒數(shù)據(jù)變址尋址的思想而拓展的程序基址尋址定位方法,其過(guò)程如圖2.3所示。我們將這種在執(zhí)行每條指令時(shí)才形成訪存物理地址的方法稱(chēng)為動(dòng)態(tài)再定位。按整數(shù)邊界存儲(chǔ)的概念通常一臺(tái)機(jī)器中存放的信息有多種不同的寬度,這些信息在存儲(chǔ)器中如何存放關(guān)系到物理地址空間的信息分布問(wèn)題。按字節(jié)編址的機(jī)器可尋址到字節(jié),但機(jī)器的信息寬度有多種,如IBM370的信息有字節(jié)(8位)、半字(雙字節(jié))、單字(4字節(jié))和雙字(8字節(jié))等不同寬度。主存寬度64位,即一個(gè)存儲(chǔ)周期可訪問(wèn)8個(gè)字芾。各種寬度的信息均按其首字節(jié)的字節(jié)地址進(jìn)行訪問(wèn)。信息在存儲(chǔ)器中的分布方式有兩種。一種是任意存儲(chǔ),如圖2.4(a)所示。這樣可能會(huì)出現(xiàn)一個(gè)信息跨主存字邊界存儲(chǔ)的情況,這時(shí)對(duì)寬度小于或等于主存寬度信息也要用兩個(gè)存儲(chǔ)周期才能訪問(wèn)到,使訪問(wèn)速度顯著降低。另一種是按整數(shù)邊界存儲(chǔ)。為了避免發(fā)生信息跨主存邊界存儲(chǔ)的情況,以保證任何時(shí)候都只用一個(gè)存儲(chǔ)周期訪問(wèn)到所需信息,要求信息在主存中存放的地址必須是該信息寬度(字節(jié)數(shù))的整數(shù)倍,如圖2.4(b)所示。

(a)(b)這時(shí)各種寬度的信息在存儲(chǔ)器中存放的地址必須滿(mǎn)足:字節(jié)信息地址為

×…××××半字信息地址為

×…×××0單字信息地址為

×…××00雙字信息地址為

×…×000這就是信息在存儲(chǔ)器中按整數(shù)邊界存儲(chǔ)的概念。信息在存儲(chǔ)器中按整數(shù)邊界存儲(chǔ),雖然可以保證訪問(wèn)速度,但會(huì)造成存儲(chǔ)空間的浪費(fèi)。隨著主存器件價(jià)格的不斷下降,主存容量顯著擴(kuò)大,目前在權(quán)衡速度和價(jià)格時(shí)為了保證訪問(wèn)速度,一般都要求在主存中必須按整數(shù)邊界存儲(chǔ)信息。指令格式的優(yōu)化指令系統(tǒng)優(yōu)化設(shè)計(jì)的實(shí)質(zhì)是指令格式的優(yōu)化,其目標(biāo)是用最短的位數(shù)來(lái)表示指令內(nèi)容,使程序中指令的平均字長(zhǎng)最短,以節(jié)省程序的存儲(chǔ)空間。同時(shí),要盡量降低硬件實(shí)現(xiàn)的復(fù)雜程度。指令由操作碼和地址碼兩部分組成,所以指令格式的優(yōu)化也要從這兩方面人手,并考慮其綜合效果。1.操作碼的優(yōu)化操作碼優(yōu)化編碼的目的是為了縮短指令字的長(zhǎng)度,減少程序的總位數(shù)及增加指令字所能表示的操作信息和地址信息。二進(jìn)制操作碼的信息源熵為,其中pi表示第i種操作碼在程序中出現(xiàn)的概率然后計(jì)算采用實(shí)際編碼方案的信息冗余量

,此冗余量越小編碼質(zhì)量越高或者計(jì)算實(shí)際編碼的平均碼長(zhǎng)

(li表示第i種操作碼的碼長(zhǎng)),其值接近H者編碼質(zhì)量高。[例2.1]設(shè)有一臺(tái)模型機(jī),共有七種不同功能的指令,各指令的使用頻度如表2.1所示,計(jì)算該指令集的信息源熵。解:計(jì)算指令的信息源熵為 =0.45×1.152+0.30×1.737+0.15×2.737+0.05×4.322+0.03×5.059+0.01×6.644+0.01×6.644=1.95位

結(jié)果說(shuō)明這七種指令的最少平均編碼位數(shù)只需1.95位。操作碼的表示方法有等長(zhǎng)操作碼編碼、Huffman編碼和擴(kuò)展操作碼編碼。我們通過(guò)前面的實(shí)例來(lái)介紹以上三種編碼方法并比較各自的特點(diǎn)。(1)等長(zhǎng)操作碼編碼所有操作碼編碼長(zhǎng)度相同,且對(duì)N種操作碼采用等長(zhǎng)操作碼編碼時(shí),其編碼長(zhǎng)度至少需要

位。如對(duì)表2.1給出指令集,若采用等長(zhǎng)操作碼編碼則平均碼長(zhǎng)為3位,相對(duì)于指令信息源熵的信息冗余量為

。等長(zhǎng)操作碼的特點(diǎn)是編碼簡(jiǎn)單,規(guī)整性好,實(shí)現(xiàn)容易,但信息冗余量大,會(huì)造成存儲(chǔ)空間的浪費(fèi)。(2)Huffman編碼Huffman編碼是將Huffman壓縮概念運(yùn)用于指令操作碼而得到的一種編碼,目的是縮短操作碼的平均碼長(zhǎng)。操作碼的Huffman壓縮思想是:當(dāng)各種指令出現(xiàn)的頻度不均等時(shí),對(duì)出現(xiàn)頻度最高的指令用最短的位數(shù)來(lái)表示,而對(duì)出現(xiàn)頻度較低的指令用較長(zhǎng)的位數(shù)來(lái)表示,會(huì)使表示的平均位數(shù)縮短。Huffman編碼的一般過(guò)程為:利用最小概率合并法,構(gòu)造Huffman樹(shù)。對(duì)Huffman樹(shù)的所有分支進(jìn)行代碼分配,兩個(gè)分支按左1右0或者相反均可。從根結(jié)點(diǎn)開(kāi)始,沿分支到達(dá)各頻度指令所經(jīng)過(guò)的代碼序列即為該頻度指令的Huffman編碼。應(yīng)當(dāng)指出,用上述方法構(gòu)造的Huffman樹(shù)以及各指令的Huffman編碼均不是唯一的,但采用Huffman編碼所得操作碼的平均長(zhǎng)度是唯一的。[例2.2]對(duì)表2.1給出指令集進(jìn)行Huffman編碼,并計(jì)算編碼的平均碼長(zhǎng)和信息冗余量。解:采用最小概率合并法構(gòu)造的Huffman樹(shù)如圖2.5所示。計(jì)算Huffman編碼的平均碼長(zhǎng)為=0.45×1+0.30×2+0.15×3+0.05×4+0.03×5+0.01×6+0.01×6=1.97Huffman編碼的信息冗余量為與采用3位等長(zhǎng)操作碼的信息冗余量35%相比要小得多。Huffman編碼方法形成的操作碼很不規(guī)整,列2.2中的七條指令就形成六種不同長(zhǎng)度的操作碼。這樣既不利于硬件的譯碼,也不利于軟件的編譯,同時(shí)也很難與地址碼配合實(shí)現(xiàn)指令格式的整體優(yōu)化。Huffman編碼的特點(diǎn)是平均碼長(zhǎng)短,信息冗余量小,但編碼規(guī)整性差,實(shí)現(xiàn)困難。(3)擴(kuò)展操作碼編碼擴(kuò)展操作碼編碼實(shí)際是一種結(jié)合Huffman壓縮思想的不等長(zhǎng)二進(jìn)制編碼方式。它的操作碼長(zhǎng)度只限于幾種碼長(zhǎng),以便于實(shí)現(xiàn)和分級(jí)譯碼。編碼仍保持用短碼表示概率高的操作碼,用長(zhǎng)碼表示概率低的操作碼的Huffman壓縮思想,以降低信息冗余量。擴(kuò)展編碼法有等長(zhǎng)擴(kuò)展編碼法和不等長(zhǎng)擴(kuò)展編碼法兩種方法,區(qū)別在于不同碼長(zhǎng)操作碼的擴(kuò)展位數(shù)是否相同。[例2.3]對(duì)表2.1給出的指令集分別采用等長(zhǎng)擴(kuò)展和不等長(zhǎng)擴(kuò)展方式進(jìn)行編碼,并計(jì)算編碼的平均碼長(zhǎng)和信息冗余量。解:對(duì)給定指令集采用2-4等長(zhǎng)擴(kuò)展編碼和1—2-3-5不等長(zhǎng)擴(kuò)展編碼。2-4等長(zhǎng)擴(kuò)展編碼:用三個(gè)2位編碼表示三種使用頻度高的指令,留一個(gè)2位編碼11作為將操作碼擴(kuò)展為4位的標(biāo)志,4位編碼中低2位的四個(gè)編碼可以分別表示其余四種使用頻度較低的指令。具體編碼如表2.3所示。1-2-3-7不等長(zhǎng)擴(kuò)展編碼方案可以構(gòu)成7個(gè)編碼,具體編碼如表2.4所示。擴(kuò)展操作碼編碼的特點(diǎn)是平均碼長(zhǎng)較短,信息冗余量較小,編碼規(guī)整性好,實(shí)現(xiàn)較容易。這是一種很實(shí)用的優(yōu)化編碼方法。操作碼的擴(kuò)展編碼會(huì)因選擇擴(kuò)展標(biāo)志不同而形成多種不同的擴(kuò)展編碼方案。例如,對(duì)4-8-12等長(zhǎng)擴(kuò)展編碼,就可以有15/15/15和8/64/512等多種擴(kuò)展編碼方法。具體略去。地址碼的優(yōu)化地址碼是指令字中的另一部分重要信息,其編碼長(zhǎng)度主要與指令中地址碼的個(gè)數(shù)、操作數(shù)存放的位置(通用寄存器、主存儲(chǔ)器、堆棧等)、存儲(chǔ)設(shè)備的尋址空間大小、編址方式、尋址方式等有關(guān)。操作碼優(yōu)化編碼使其具有多種長(zhǎng)度,在不同的主存存儲(chǔ)方式中,會(huì)產(chǎn)生不同的結(jié)果。如果主存是按位編址,指令連續(xù)存儲(chǔ)(如圖2.7所示),則操作碼的優(yōu)化表示會(huì)直接使程序總存儲(chǔ)位數(shù)減少。然而,有些指令卻因出現(xiàn)跨邊界存儲(chǔ)而需兩個(gè)主存周期才能讀出,這會(huì)使機(jī)器速度明顯下降。為了保持訪存取指令的速度,指令字遵循按整數(shù)邊界存儲(chǔ)的原則。如果地址碼的長(zhǎng)度固定,則操作碼優(yōu)化所帶來(lái)的位數(shù)的減少,可能只會(huì)使指令字內(nèi)出現(xiàn)空白浪費(fèi)(冗余),卻并不能減少程序的總位數(shù),如圖2.8所示。因此,要使操作碼長(zhǎng)度因優(yōu)化縮短而出現(xiàn)的空位被充分利用,只有地址碼也是可變長(zhǎng)的,可以占用這些位,這就必須對(duì)地址碼部分進(jìn)行優(yōu)化。一個(gè)操作數(shù)的地址碼長(zhǎng)度可以有很寬的變化范圍,1.由于指令中操作數(shù)個(gè)數(shù)的不同可采用多種地址制,如零地址指令、一地址指令、二地址指令、三地址指令等,如圖2.9所示。2.同一種地址制還可采用多種地址形式和長(zhǎng)度,也可以考慮利用空白位直接存放操作數(shù)或常數(shù)等,如圖2.10所示。3.在指令中采用多種尋址方式,可以在地址碼長(zhǎng)縮短的情況下滿(mǎn)足較大尋址范圍的要求。如操作數(shù)的尋址可采用基址尋址、基址加變址尋址、段尋址、寄存器尋址、相對(duì)尋址、寄存器間接尋址等多種尋址方式并可分別具有不同的碼長(zhǎng)。變長(zhǎng)的地址碼和優(yōu)化的可變長(zhǎng)操作碼相配合,才能最終減少程序的總位數(shù)。3.指令格式優(yōu)化通過(guò)前面對(duì)操作碼和地址碼的優(yōu)化問(wèn)題的討論,應(yīng)得到指令格式的優(yōu)化設(shè)計(jì)可由以下方法實(shí)現(xiàn)。運(yùn)用Huffman壓縮思想實(shí)現(xiàn)操作碼的可變長(zhǎng)優(yōu)化表示。多種不同的尋址方式、地址制、地址形式和地址碼長(zhǎng)度與可變長(zhǎng)操作碼相結(jié)合。讓最常用的指令操作碼最短,同時(shí)令其具有最多的地址碼字段信息使其指令的功能增

強(qiáng)。可減少指令條數(shù),提高運(yùn)行速度,減步程序存儲(chǔ)空間。使用頻度低的指令操作碼字段較長(zhǎng),但采用較少的地址碼字段信息,使指令長(zhǎng)度不增加,不增大程序存儲(chǔ)空間。還可以進(jìn)一步考慮采用多種指令字長(zhǎng)度的指令格式,如單字長(zhǎng)指令、雙字氏指令、三字長(zhǎng)指令等。這比只有一種長(zhǎng)度的定長(zhǎng)指令字方式更能減少信息的冗余量,縮短程

序的長(zhǎng)度。[例2.4]某模型機(jī)共有七條指令,各指令的使用頻度分別為35%、25%、20%、10%、5%、3%、2%。該模型機(jī)有8位和16位兩種指令字長(zhǎng),采用2-4擴(kuò)展操作碼。8位字長(zhǎng)指令為寄存器一寄存器(R-R)二地址類(lèi)型,16位字長(zhǎng)指令為寄存器一存儲(chǔ)器(R-S)二地址變址尋址(-128≤變址范圍≤127)類(lèi)型。(1)設(shè)計(jì)該機(jī)的兩種指令格式,標(biāo)出各字段位數(shù)并給出操作碼編碼。(2)該機(jī)允許使用多少個(gè)可編址的通用寄存器?多少個(gè)變址寄存器?(3)計(jì)算操作碼的平均碼長(zhǎng)。解:(1)七條指令的2-4擴(kuò)展操作碼編碼如表2.5所示。為了加快高使用頻度指令的執(zhí)行速度并減少程序存儲(chǔ)開(kāi)銷(xiāo),設(shè)計(jì)有2位操作碼長(zhǎng)度的三條指令采用短指令格式且操作在通用寄存器之間進(jìn)行,而其他的指令則采用長(zhǎng)指令格式,操作在寄存器和存儲(chǔ)器之間進(jìn)行。由于R-R型指令長(zhǎng)度為8位,操作碼占2位,所以源、目的寄存器編碼部分各占3位,其格式如下:由變址尋址的位移量范圍(-128~+127)可知,R-S型指令格式中偏移地址占8位,由于操作碼占4位,源寄存器編碼占3位,R-S型指令長(zhǎng)度為16位,所以變址寄存器的編碼只占1位,R-S型指令格式如下:(2)由(1)中設(shè)計(jì)的指令格式中通周寄存器編碼占3位,變址寄存器編碼占1位可知:該機(jī)允許使用八個(gè)可編址的通用寄存器和兩個(gè)變址寄存器。(3)根據(jù)表2.5計(jì)算操作碼的平均碼長(zhǎng)為2.3計(jì)算機(jī)指令系統(tǒng)的發(fā)展方向一個(gè)方向:增強(qiáng)指令功能,軟件功能向硬件功能轉(zhuǎn)移,CISC另

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論