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

下載本文檔

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

文檔簡介

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

,

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

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

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

有正有負,最大誤差小于截斷法,平均誤差無法調(diào)節(jié)。統(tǒng)計平均誤差接近于0,稍偏正。該

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

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

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

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

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

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

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

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

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

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

(li表示第i種操作碼的碼長),其值接近H者編碼質(zhì)量高。[例2.1]設(shè)有一臺模型機,共有七種不同功能的指令,各指令的使用頻度如表2.1所示,計算該指令集的信息源熵。解:計算指令的信息源熵為 =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é)果說明這七種指令的最少平均編碼位數(shù)只需1.95位。操作碼的表示方法有等長操作碼編碼、Huffman編碼和擴展操作碼編碼。我們通過前面的實例來介紹以上三種編碼方法并比較各自的特點。(1)等長操作碼編碼所有操作碼編碼長度相同,且對N種操作碼采用等長操作碼編碼時,其編碼長度至少需要

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論