數(shù)據(jù)表示與指令系統(tǒng)_第1頁
已閱讀1頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 2 章 數(shù)據(jù)表示與指令系統(tǒng),2.1 數(shù)據(jù)表示2.2 尋址方式 2.3 指令系統(tǒng)的設(shè)計和改進(jìn)2.4 指令系統(tǒng)的發(fā)展和改進(jìn),2.1 數(shù) 據(jù) 表 示,一、 數(shù)據(jù)表示與數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)表示是構(gòu)成數(shù)據(jù)結(jié)構(gòu)的元素,數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)表示是軟硬件的交界面。數(shù)據(jù)表示指的是能由機器硬件直接識別和引用的數(shù)據(jù)類型。 當(dāng)機器設(shè)置有定點加、減、乘、除、移位、比較等一系列定點運算指令和相應(yīng)的運算硬件,可直接對定點數(shù)進(jìn)行

2、各種處理時,機器就有了定點數(shù)據(jù)表示。 當(dāng)機器設(shè)置有邏輯加、 邏輯乘、按位相加、邏輯移位等一系列邏輯運算指令和相應(yīng)邏輯運算硬件,可直接對邏輯數(shù)進(jìn)行各種處理,機器就有了邏輯數(shù)據(jù)表示。 若機器設(shè)置有浮點運算指令(如浮點加、減、乘、除、 比較、存、取等)和相應(yīng)的運算硬件,可以直接對浮點數(shù)進(jìn)行處理,機器就有浮點數(shù)據(jù)表示。,軟件系統(tǒng)所要處理的各種數(shù)據(jù)結(jié)構(gòu)。有:串、隊、棧、向量、陣列、鏈表、樹、圖等,它們反映了面向應(yīng)

3、用的各種數(shù)據(jù)元素或信息單元之間的結(jié)構(gòu)關(guān)系。 數(shù)據(jù)結(jié)構(gòu)是通過軟件映象,將信息變換成機器中所具有的各種數(shù)據(jù)表示來實現(xiàn)的,數(shù)據(jù)表示是構(gòu)成數(shù)據(jù)結(jié)構(gòu)的元素。不同的數(shù)據(jù)表示可以為數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)提供不同的支持,表現(xiàn)在實現(xiàn)的效率和方便性上不同。數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)表示是軟、硬件的交界面。設(shè)計系統(tǒng)時需要分配軟、硬件的功能,確定在機器中設(shè)置哪些數(shù)據(jù)表示,以便對應(yīng)用中所遇到的數(shù)據(jù)結(jié)構(gòu)能有高的實現(xiàn)效率。數(shù)據(jù)表示的確定實質(zhì)上是軟、硬件的取舍問題。,圖 2.1

4、 變址操作對向量、 陣列數(shù)據(jù)結(jié)構(gòu)的支持,二、高級數(shù)據(jù)表示,1.自定義數(shù)據(jù)表示 自定義(Self-defining)數(shù)據(jù)表示包括帶標(biāo)志符的數(shù)據(jù)表示和數(shù)據(jù)描述符兩類?!  ?在傳統(tǒng)的計算機體系結(jié)構(gòu)中,用指令本身來說明操作數(shù)據(jù)的類型?! ∪纾憾c加法表示操作數(shù)是純小數(shù)或純整數(shù);    浮點加法表示操作數(shù)是浮點數(shù);    十進(jìn)制加法表示操作數(shù)是BCD數(shù)。由于操作數(shù)據(jù)類型不同,要設(shè)三種不同的指令(操作碼)來加以區(qū)分?!  ?/p>

5、 自定義數(shù)據(jù)表示則用數(shù)據(jù)本身來說明數(shù)據(jù)類型。表示形式有兩種,即標(biāo)志符數(shù)據(jù)表示和描述符數(shù)據(jù)表示。標(biāo)志符數(shù)據(jù)表示要求對每一個數(shù)據(jù)都附加標(biāo)志符,其格式如下 :,(1) 帶標(biāo)志符的數(shù)據(jù)表示 高級語言用類型說明語句指明數(shù)據(jù)類型,讓數(shù)據(jù)類型直接與數(shù)據(jù)本身聯(lián)在一起,運算符不反映數(shù)據(jù)類型。如FORTRAN程序中,實數(shù)I和J的相加是采用如下的語句組指明的: REAL I, J

6、 I=I+J 在說明I、J的數(shù)據(jù)為實型后,用通用的“+”運算符就可實現(xiàn)實數(shù)加法。傳統(tǒng)的機器語言程序要用操作碼指明操作數(shù)的類型。如浮點加法指令中,由于操作碼是浮加,那么無論I和J是否是浮點數(shù), 總是按浮點數(shù)對待,進(jìn)行浮點數(shù)加法?! 【幾g時需要把高級語言程序中的數(shù)據(jù)類型說明語句和運算符變換成機器語言中不同類型指令的操作碼,并驗證操作數(shù)的類型是否與運算符所要求的一致,若不一致,還需用軟件進(jìn)行轉(zhuǎn)換,這些都增加了編譯的

7、負(fù)擔(dān)。,其中標(biāo)志符指明后面的數(shù)據(jù)所具有的類型,如整數(shù)、浮點數(shù)、BCD數(shù)、字符串等?! ?biāo)志符數(shù)據(jù)表示的優(yōu)點是能簡化指令系統(tǒng),便于程序調(diào)試和查錯,缺點是數(shù)據(jù)區(qū)域占用的存儲空間增加,并使指令執(zhí)行的速度減慢。為了縮短高級語言與機器語言的這種語義差距,可讓機器中的每個數(shù)據(jù)如下所示,都帶有類型標(biāo)志位:,,,,,數(shù)據(jù)(字),標(biāo)志符數(shù)據(jù)表示的主要優(yōu)點 :(1)簡化指令系統(tǒng)和程序設(shè)計; (2) 簡化編譯程序; (3) 便于實現(xiàn)一致性校驗;

8、(4) 能由硬件自動完成數(shù)據(jù)類型的變換; (5) 支持?jǐn)?shù)據(jù)庫系統(tǒng)的實現(xiàn)與數(shù)據(jù)類型無關(guān)的要求; (6) 為軟件調(diào)試和應(yīng)用軟件開發(fā)提供了支持。 采用標(biāo)志符數(shù)據(jù)表示帶來的問題可能有兩個: (1) 每個數(shù)據(jù)字因增設(shè)標(biāo)志符, 會使程序所占用的主存空間增加。 (2) 采用標(biāo)志符會降低指令的執(zhí)行速度。,2) 數(shù)據(jù)描述符  自定義數(shù)據(jù)表示則用數(shù)據(jù)本身來說明數(shù)據(jù)類型。表示形式有兩種,即標(biāo)志符數(shù)據(jù)表示和

9、描述符數(shù)據(jù)表示?! 檫M(jìn)一步減少標(biāo)志符所占的存貯空間,對于向量、數(shù)組、記錄等數(shù)據(jù),由于每個元素具有相同的屬性,產(chǎn)生數(shù)據(jù)描述符。 數(shù)據(jù)描述符和標(biāo)志符的差別在于標(biāo)志符是和每個數(shù)據(jù)相連,合存在一個存貯單元中,描述單個數(shù)據(jù)的類型特征;描述符是與數(shù)據(jù)分開存放的,專門用來描述所要訪問的數(shù)據(jù)是整塊數(shù)據(jù)還是單個數(shù)據(jù),訪問該數(shù)據(jù)塊或數(shù)據(jù)元素所需要的地址以及其他特征信息等。,以 B6700的描述符為例, 其數(shù)據(jù)描述符和數(shù)據(jù)的形式分別如下:,

10、描述符,數(shù) 據(jù),描述符數(shù)據(jù)表示主要用來描述多維結(jié)構(gòu)的數(shù)據(jù)類型,如向量、矩陣、記錄等。其格式為:,圖 2.4 用描述符描述二維陣列,2. 向量數(shù)組數(shù)據(jù)表示 例如,要計算 ci=ai+5 +bi ; i=10,11,…,1000用FORTRAN語言寫成的有關(guān)DO循環(huán)部分為 DO 40 I=10, 1000 40 C(I) = A(I +5) +B(I),在向量處理機上,

11、具有向量、數(shù)組數(shù)據(jù)表示。 表現(xiàn)出在硬件上設(shè)置有豐富的向量或陣列運算指令,配置有以流水或陣列方式處理的高速運算器,只需用一條如下的向量加法指令:,圖 2.5 向量編址所用的參數(shù),3. 堆棧數(shù)據(jù)表示,(1) 有若干高速寄存器組成的硬件堆棧,并附加控制電路讓它與主存中的堆棧區(qū)在邏輯上組成一個整體,訪問的堆棧速度是寄存器的,堆棧的容量是主存的。 (2) 有很豐富的堆棧操作類指令且功能很強, 直接可對堆棧中的數(shù)據(jù)

12、進(jìn)行各種運算和處理。 (3) 有力地支持高級語言程序的編譯。假定有算術(shù)賦值語句 F=A*B+C/(D-E) 可以很容易通過用逆波蘭表達(dá)式:AB*CDE-/+ (4) 有力地支持子程序的嵌套和遞歸調(diào)用。,圖 2.6 用堆棧實現(xiàn)子程序的嵌套和遞歸調(diào)用,三、引入數(shù)據(jù)表示的原則,數(shù)據(jù)表示是能由硬件直接識別和引用的數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu)反映各種數(shù)據(jù)元素或信息單元之間的結(jié)構(gòu)關(guān)系。引入數(shù)據(jù)

13、表示的原則一: 是提高系統(tǒng)的效率,即減少實現(xiàn)時間和所需的存貯空間。 衡量實現(xiàn)時間是否減少,主要是看在主存和處理機之間傳送的信息量有否減少。 傳送的信息量越少, 其實現(xiàn)時間就會越少。以A、 B兩個 200×200 的定點數(shù)二維數(shù)組相加為例,用PL/1語言編寫很簡單, 就是 A=A+B,引入數(shù)據(jù)表示的原則二: 引入某種高級數(shù)據(jù)表示后,是否提高其通用

14、性和利用率?!?如果只對某種數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)效率很高, 而對其他數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)效率很低,或者引入這種數(shù)據(jù)表示在應(yīng)用中很少用到,為此所花的硬件過多卻并未在性能上得到好處,必然導(dǎo)致性能價格比的下降, 特別是對一些復(fù)雜的數(shù)據(jù)表示。,四、浮點數(shù)尾數(shù)基值大小和下溢處理方法的選擇,浮點數(shù)尾數(shù)基值的選擇  圖 2.8 浮點數(shù)可表示實數(shù)域中的值,表 2.1 采用尾基為rm的浮點數(shù)表示的特性及其舉例,(1) 可表示數(shù)的范圍。由表 2.1

15、 知,可表示的最小值為 , rm增大, 將減少;而可表示的最大值為 , 其中 1-2-m部分為常數(shù)。,(2) 可表示數(shù)的個數(shù)。由表 2.1 知,可表示數(shù)的個數(shù)為 , 其中2p+m為常數(shù),所以rm的增大將因 增大, 而使可表示數(shù)的個數(shù)增多。很容易得出,rm用 16 與用 2 的可表示數(shù)的個數(shù)之比為 :,(3) 數(shù)在實

16、數(shù)軸上的分布。對比表 2.2 和表 2.3,可以看出rm用 16 的比用 2 的可表示數(shù)在實數(shù)軸上的分布要稀。例如在 1/2 和 2 之間,rm為 2 的有 15 個值,而rm為 16 的只有 8 個值。 為了進(jìn)一步分析數(shù)值分布和rm的關(guān)系,引入表示比。表示比e指的是在相同p、m位數(shù)時,在rm=2 的可表示最大值以內(nèi),采用rm>2 的可表示浮點數(shù)個數(shù)與rm=2 的可表示浮點數(shù)個數(shù)之比。,(4) 可表示數(shù)的精度。由于rm愈大,數(shù)在數(shù)

17、軸上的分布變稀,已可得出數(shù)的表示精度下降的結(jié)論。從另一個角度分析,由于機器尾數(shù)位數(shù)m相同情況下,規(guī)格化十六進(jìn)制尾數(shù)最高數(shù)位中可能出現(xiàn) 4 位機器位中的左面 3 位均為 0, 即rm=2 的可能比rm=16 的有多 3 位機器位的精度。若rm=2k,則最壞情況下,尾數(shù)中只用到m-k+1 位機器位來表示,所以,可表示數(shù)的精度隨rm增大而單調(diào)下降。,(5) 運算中的精度損失。運算中的精度損失是指由于運算過程中尾數(shù)右移出機器字長使得有效數(shù)字丟失

18、后所造成的精度損失,因此它與可表示數(shù)的精度是兩個不同的概念。由于尾數(shù)基值rm取大后,對階移位的機會和次數(shù)要少,且由于數(shù)的表示范圍擴大,也使出現(xiàn)尾數(shù)溢出需右規(guī)的機會減少,這從表 2.4 對大量指令執(zhí)行后統(tǒng)計得出的浮點加法移位距離和所占百分比情況可以看出。因此rm愈大,尾數(shù)右移的可能性愈小,精度的損失就越小。 (6) 運算速度。由于rm大時發(fā)生因?qū)﹄A或尾數(shù)溢出需右移及規(guī)格化需左移的次數(shù)顯著減少,因此運算速度可以提高。,表 2.4 浮點加

19、法的移位距離及百分比,2. 浮點數(shù)尾數(shù)的下溢處理方法,(1) 截斷法(2)舍入法(3) 恒置“1”法(4)查表舍入法,圖 2.9 rm=2, m=2 時,各種下溢處理方法的誤差曲線,圖 2.10 k位ROM查表舍入,2.2 尋址技術(shù),1、在通用寄存器指令集結(jié)構(gòu)中,一般是利用尋址方式指明指令中的操作數(shù)是一個常數(shù)、一個寄存器操作數(shù),或是一個存儲器操作數(shù)。 2、當(dāng)前指令集結(jié)構(gòu)中所使用的一些操作數(shù)尋址方式。,一、 尋址方式分析,

20、大多數(shù)計算機采用主存、通用寄存器、堆棧分類編址,因此有面向寄存器、堆棧和主存的分類尋址方式。 面向寄存器的尋址方式: 操作數(shù)可以取自寄存器或主存,結(jié)果大多保存在寄存器中,少量的送入主存。面向堆棧的尋址方式: 主要訪問堆棧,少量訪問主存或寄存器。 面向主存的尋址方式: 主要訪問主存,少量訪問寄存器。,3. 尋址方式使用情況統(tǒng)計結(jié)果立即值尋址方式和偏移尋址方式的使用頻率十分高。,圖 2

21、.12 基址尋址,各種信息在存貯器中存放的地址必須是:(1)字節(jié)信息地址為 ×…××××(2)半字信息地址為 ×…××× 0 (3)單字信息地址為 ×…×× 0 0 (4)雙字信息地址為 ×…× 0 0 0 ◆ 程序所使用的偏移量大小分布十分廣泛; ◆ 較小的偏移量和較大的偏移量均

22、占有相當(dāng)大的比例;◆ 將偏移量字段的大小設(shè)置為12~16位。這種長度可以支持上述75%~99%基于偏移尋址方式的數(shù)據(jù)訪問中偏移量大小的表示。,2.3 指令系統(tǒng)的設(shè)計和改進(jìn) (Instruction System Architecture),根據(jù)五個因素對計算機指令集結(jié)構(gòu)進(jìn)行分類:(1) 在CPU中操作數(shù)的存儲方法;(2) 指令中顯式表示操作數(shù)的個數(shù); (3) 操作數(shù)的尋址方式 ;(4) 指令集所提供的操作類型; (5)

23、操作數(shù)的類型和大小;,指令一般由兩部分組成:一部分是操作碼,另一部分是操作地址碼。當(dāng)操作數(shù)地址為隱式時(如堆棧的操作,默認(rèn)為棧頂),后一部分則不是必須的。根據(jù)指令地址碼部分中顯式指明的地址個數(shù),則可形成零地址、單地址、二地址、三地址及四地址指令。 確定指令格式 就是選擇指令字中的操作碼長度和地址數(shù)。指令字的長度有定長和變長兩種。,一種指令集中的指令到底要支持哪些類型的操作? (指令集結(jié)構(gòu)功能設(shè)計問題) 兩種截然不同的

24、方向: ◆ 復(fù)雜指令集計算機(CISC) 強化指令功能,實現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。 ◆ 精簡指令集計算機(RISC) 盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到簡化實現(xiàn),提高性能的目的。 當(dāng)今指令集結(jié)構(gòu)功能設(shè)計的一個主要趨勢。,一、 指令格式的優(yōu)化 操作碼的優(yōu)化表示表 2.5 某模型機指令使用頻度舉例,例:現(xiàn)設(shè)一臺模型機,共有 7 種不同的指令,使用頻度如上表 所示。若操

25、作碼用定長碼表示需要 3 位。,按信息論觀點,當(dāng)各種指令的出現(xiàn)是相互獨立的(實際情況并不都是如此)時候,操作碼的信息源熵(信息源所包含的平均信息量)H為-∑pi log2 pi ,由于操作碼信息是用二進(jìn)制位表示的, 則 H=-∑pi log2 pi 按上表 數(shù)據(jù), 得:H=0.40×1.32+0.30×1.74+0.15×2.74+0.05×4.32 +0.04×4.

26、64+0.03×5.06+0.03×5.06 =2.17,說明表示這 7 種指令,操作碼平均只需 2.17 位就夠了。 采用 3 位定長操作碼表示的信息冗余量 。,相當(dāng)大。 為減少信息冗余, 可改用哈夫曼編碼。,熵首先是物理學(xué)里的名詞。在傳播中是指信息的不確定性,一則高信息度的信息熵是很低的,低信息度的熵則高。 具體說來,凡是導(dǎo)致隨機事件集合的肯定性,組織性,法則性或有序性等增加或減少的活動過程,

27、都可以用信息熵的改變量這個統(tǒng)一的標(biāo)尺來度量。 1948年,(Claude E. Shannon)香農(nóng)提出了“信息熵”(shāng) 的概念,解決了對信息的量化度量問題?! ?把信息(熵)定義為離散隨機事件的出現(xiàn)概率,信息是事物的不確定性。所謂信息熵,是一個數(shù)學(xué)上頗為抽象的概念,在這里不妨把信息熵理解成某種特定信息的出現(xiàn)概率。而信息熵和熱力學(xué)熵是緊密相關(guān)的。,香農(nóng)信息定義信息熵= -(p1*log p1 + p2 * log

28、 p2 +?。。玴32 *log p32) 其中,p1,p2 ,?。?,p32 分別是這 32 個球隊奪冠的概率。香農(nóng)把它稱為“信息熵” (Entropy),一般用符號 H 表示,單位是比特。  變量的不確定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。   信息熵是信息論中用于度量信息量的一個概念。一個系統(tǒng)越是有序,信息熵就越低;  反之,一個系統(tǒng)越是混亂,信息熵就越高。所以,信息熵也可以說是系統(tǒng)有序化

29、程度的一個度量。,編址方式,對各種存儲設(shè)備進(jìn)行編碼的方法主要內(nèi)容:編址單位、零地址空間個數(shù)、并行存儲器的編址、輸入輸出設(shè)備的編址1. 編址單位?常用的編址單位:字編址、字節(jié)編址、位編址、塊編址等。?編址單位與訪問字長一般:字節(jié)編址,字訪問部分機器:位編址,字訪問輔助存儲器:塊編址,位訪問。,字節(jié)編址字訪問的優(yōu)點:,有利于符號處理?字節(jié)編址字訪問的問題:地址信息浪費對于32位機器,浪費2位地址(最低2位地址)對于64位機器,浪

30、費3位地址 存儲器空間浪費 讀寫邏輯復(fù)雜 大端(Big Endin)與小端(Little Endian)問 題(大端存儲格式,字?jǐn)?shù)據(jù)的高字節(jié)存儲在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,小端存儲格式,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。 ),,表 2.6 操作碼的哈夫曼編碼及擴展操作碼編碼,圖 2.14 哈夫曼樹舉例,只要采用全哈夫曼編碼,操作碼的平均碼長肯定是唯一的。如此例,操作碼的平均碼長,非

31、常接近于可能的最短位數(shù)(H)2.17位。這種編碼的信息冗余為,擴展操作碼問題,現(xiàn)有14條指令,其使用頻率如下:,I1 0.15 I2 0.15 I3 0.14 I4 0.13 I5 0.12 I6 0.11 I7 0.04 I8 0.04 I9 0.03I10

32、 0.03 I11 0.02 I12 0.02I13 0.01 I14 0.01 若只用兩種碼長的擴展碼編碼,其平均碼長至少為多少位?,采用只有兩種碼長的擴展操作碼,根據(jù)14條指令所給出的使用頻度值分成兩群,讓使用頻度較高的6條指令用3位操作碼編碼表示。 如,用000~101分別表示使用頻度為0.15、0.15、0.14、0.13、0.12、0

33、.11的指令的操作碼。 余下110和111兩個3位碼作為長碼的擴展標(biāo)志,相當(dāng)于一個二進(jìn)制位,再擴展2位二進(jìn)制碼,既相當(dāng)與共有3位。從而用5位碼就可以表示8條使用頻度較低的指令。 因此,求得操作碼的平均碼長為: 3*(0.15+0.15+0.14+0.13+0.12+0.11+5*(0.04+0.04+0.03+0.03+0.02+0.02+0.01+0.01)=3.4,IBM 370 指令中訪存地址有如下

34、形式:,IBM 370 的指令中為訪存, 采用基址尋址, 地址碼可有如下形式:,,圖 2.18 在定長指令字內(nèi)實現(xiàn)多種地址制,如果讓最常用的操作碼最短,其地址碼字段個數(shù)越多,就越能使指令的功能增強,越可以從宏觀上減少所需的指令條數(shù)。 例如,為實現(xiàn)A+B→C,采用單地址指令需經(jīng)取A、加B、 送C 3 條指令完成, 而采用 3 地址指令,則只需一條指令即可完成。,不僅縮短程序的占用空間,也減少了訪存取指令次數(shù),加快程序執(zhí)行的速度。雖然IBM

35、 370 大部分都采用 8 位定長操作碼, 但對某些指令(尤其是原 360 指令系統(tǒng)中沒有的), 如啟動I/O、 測試I/O、 暫停I/O、 頁面清除、 訪問方式位的復(fù)位、絕對時鐘設(shè)置等特殊指令, 其操作碼由 8 位擴展到 16 位。,指令字格式優(yōu)化措施:(1)縮短操作碼的平均碼長;(2)縮短 碼的長度;(3)采用地址限制,加快程序執(zhí)行速度;(4)采用長操作碼與短地址碼配合,具有靈活的地址形式;(5)按整數(shù)邊界法則,采用靈活的

36、指令字長度;目的:減少信息冗余,利于指令系統(tǒng)擴充,指令格式的優(yōu)化問題,就是以較少的格式,盡可能短的碼長來實現(xiàn)各種指令編碼。 指令字包括操作碼和地址碼,所以對這兩部分都采取優(yōu)化措施。1、操作碼的優(yōu)化。這要用到霍夫曼壓縮的概念?;舴蚵鼔嚎s法是一種頻率相關(guān)的編碼方法,即出現(xiàn)頻率高的字符編碼短,頻率低的字符編碼長,縮短平均碼長。 用霍夫曼樹實現(xiàn)霍夫曼編碼。根據(jù)所給的各種指令使用頻率,把它們從小到大依次排好作為葉結(jié)點(

37、相同的頻率可任取一個排在前),然后把最小的兩個結(jié)點值(頻率)相加,形成一個新結(jié)點,以這個結(jié)點的值與其他的葉結(jié)點值比較大小,仍舊取最小的兩個結(jié)點值合并產(chǎn)生新結(jié)點,直到最終合并為一個根(通常這個值是1或100)。簡單地記為: 從小到大排序,最小兩個合并,重復(fù)上述過程,只剩一個結(jié)束。,2、地址碼的優(yōu)化。指令碼與地址碼 合理安排才能使指令格式得到優(yōu)化。 由于操作碼優(yōu)化后是變長的編碼,如果整條指令是定長的,那么

38、使地址碼的寬度應(yīng)隨不同指令變化,以配合操作碼形成定長指令;也可以通過改變指令字中的地址數(shù)和地址碼的長度,以使單地址及多址都可以在一條指令中使用;如果操作碼和地址碼之外還有空余的碼位,則設(shè)法用來存放立即操作數(shù)或常數(shù)。 當(dāng)今的RISC機指令系統(tǒng)中,全都是用定字長指令格式。,2.4指令系統(tǒng)的發(fā)展和改進(jìn),CISC指令集結(jié)構(gòu)的功能設(shè)計CISC結(jié)構(gòu)追求的目標(biāo): 強化指令功能,減少程序的指令條數(shù),以達(dá)到提高性能的目的。增

39、強指令功能主要是從如下幾個方面著手:1. 提高運算型指令功能 提高傳送指令功能 增加程序控制指令功能 面向目標(biāo)程序增強指令功能,2. 面向高級語言的優(yōu)化實現(xiàn)來改進(jìn) 面向高級語言的優(yōu)化就是盡可能縮小高級語言與機器語言之間的語義差距,以利于支持高級語言編譯系統(tǒng),縮短編譯程序的長度和編譯所需的時間。p59,面向高級語言和編譯程序改進(jìn)指令系統(tǒng) (1) 增加對高級語言和編譯系統(tǒng)支持的指令功能 ◆ 對源程序中各

40、種高級語言語句進(jìn)行使用頻度的統(tǒng)計與分析,對使用頻度高的語句,可以設(shè)置專門的指令或采取措施增加相應(yīng)指令的功能,以提高其編譯速度和執(zhí)行速度。 ◆ 從面向編譯程序,尤其是從優(yōu)化代碼生成的角度進(jìn)行考慮,增加指令集結(jié)構(gòu)的規(guī)整性來改進(jìn)指令系統(tǒng)。規(guī)整性:沒有或盡可能減少例外的情況和特殊的應(yīng)用,以及所有運算都能對稱、均勻地在存儲器單元或寄存器單元之間進(jìn)行。,(2) 高級語言計算機指令系統(tǒng) ◆ 面向高級語言(HL)的機器

41、 縮小機器語言和高級語言的語義差距。 ◆ 間接執(zhí)行型高級語言機器 高級語言和機器語言是一一對應(yīng)的,用匯 編的方法(可以用軟件實現(xiàn),也可以用硬件實 現(xiàn))把高級語言源程序翻譯成機器語言程序?!?直接執(zhí)行型高級語言機器 高級語言就作為機器語言,直接由硬件或 固件對高級語言源程序的語句逐條進(jìn)行解釋以

42、 執(zhí)行它。,面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進(jìn)指令系統(tǒng)  操作系統(tǒng)的實現(xiàn)在很大程度上取決于體系結(jié) 構(gòu)的支持。 (1) 主要表現(xiàn)在對以下方面的支持 中斷處理 進(jìn)程管理 存儲管理和保護(hù) 系統(tǒng)工作狀態(tài)的建立與切換(2) 設(shè)置指令 支持系統(tǒng)工作狀態(tài)和訪問方式轉(zhuǎn)移的指令 支持進(jìn)程轉(zhuǎn)移的指令 支持進(jìn)程同步和互斥的指令 只有Load和Store操作指令才訪問存儲器,其它指令操作均在寄存器

43、之間進(jìn)行; 以簡單有效的方式支持高級語言。,(1) 跳轉(zhuǎn): 當(dāng)控制指令為無條件改變控制流時,稱之為“跳轉(zhuǎn)”。(2) 分支:當(dāng)控制指令是有條件改變控制流時,稱之為“分支”。(3) 控制流程的各種改變情況 條件分支 跳轉(zhuǎn) 過程調(diào)用 過程返回,《周易》又稱《易經(jīng)》,是秦漢后直至今日無人真正通曉的上古典籍。《周易》分為經(jīng)部和傳部,經(jīng)部之原名就為《周易》,是對四百五十卦易卦典型象義的揭示和相應(yīng)吉兇的判斷,而傳部含《文言》、《彖

44、傳》上下、《象傳》上下、《系辭傳》上下、《說卦傳》、《序卦傳》、《雜卦傳》,共七種十篇,稱之為“十翼”,是孔門弟子對《周易》經(jīng)文的注解和對筮占原理、功用等方面的論述。 周易是個系統(tǒng)工程,歷史上歷代名人志士不斷地研究之、并充實其內(nèi)容,使其更具有旺盛的生命力。 孔子經(jīng)過多年磨難,從53歲開始學(xué)習(xí)"周易",他非常刻苦認(rèn)真,致使串連竹簡的牛皮繩磨斷三次??鬃訉ω赞o和爻辭作了進(jìn)

45、一步的詮釋和發(fā)揮,撰寫了解讀文字,形成了"周易?易傳",儒教從此誕生。"易傳"使"周易"的內(nèi)容更邏輯化、系統(tǒng)化,他提出的“一陰一陽之謂道”,首次把宇宙萬物分為既對立又統(tǒng)一的兩大類,是最早的辯證法思想的形象表述。由此,"周易"用最簡潔的語言,概括了極其博大乃至無窮的內(nèi)容。其獨特的理論思維模式,為人們提供了一個從時間、地點、條件全方位分析問題、認(rèn)識事物的思想方法

46、。,易卦系統(tǒng)最基本的要素為陰陽概念,而陰陽概念包括陰陽的性質(zhì)和狀態(tài)兩層意義。如果不理會陰陽的狀態(tài),只論及其性質(zhì),則可以用陽爻(-)和陰爻(--)表示陰陽。將上述陰陽爻按照由下往上重疊三次,就形成了八卦,即“乾,坤,震,巽,坎,離,艮,兌”八個基本卦,稱為八經(jīng)卦。再將八經(jīng)卦兩兩重疊,就可以得到六個位次的易卦,共有六十四卦。 六十四卦稱為六十四別卦,每一卦都有特定的名稱。如果再考慮陰陽的狀態(tài),則陰陽概念又進(jìn)一步劃分為

47、“老陰,老陽,少陰,少陽”四種情形,可以用“X,O,--,-,”四種符號分別代表之。六十四別卦每一卦的每個位次上都可能有四種陰陽狀態(tài),于是全部易卦系統(tǒng)就共有4096種不同的卦。如果將陰陽性質(zhì)構(gòu)成相同的各個卦放在一起,就形成了主卦卦名相同的六十四種分系統(tǒng),可以稱為某某卦系。 《周易》經(jīng)部文字說明的內(nèi)容就是對六十四卦系中部分易卦的象征意義的解釋以及相應(yīng)的人事吉兇判定(稱為占斷)。其中每一卦系的第一條內(nèi)容是相應(yīng)的全靜卦的占

48、斷,其后的六條(乾坤卦系有七條)內(nèi)容是順次排列的對相應(yīng)卦系一爻動的卦的占斷。秦漢以后的易學(xué)對此都存在錯誤或者說模糊的認(rèn)識。,圖 2.24 各種機器的語義差距,面向操作系統(tǒng)的優(yōu)化改進(jìn),面向操作系統(tǒng)的優(yōu)化就是進(jìn)一步縮小操作系統(tǒng)與體系結(jié)構(gòu)之間的語義差距,以利于減少操作系統(tǒng)運行所需的輔助時間,節(jié)省操作系統(tǒng)軟件所占用的存儲空間。 操作系統(tǒng)的實現(xiàn)依賴于體系結(jié)構(gòu)對它的支持。許多傳統(tǒng)機器指令例如算術(shù)邏輯指令、字符編輯指令、移位指

49、令、控制轉(zhuǎn)移指令等,都可用于操作系統(tǒng)的實現(xiàn)。此外,還有相當(dāng)一部分指令是專門為實現(xiàn)操作系統(tǒng)的各種功能而設(shè)計的。,IBM 360 最初并沒有支持公用區(qū)管理設(shè)置專門的指令,因此在A進(jìn)程中,為使用公用區(qū), 就需要安排如下的指令串:A1: 取L ; L為一個字節(jié), 存放公用區(qū)可否使用的標(biāo)志 判(L)0 ; (L)0為 0,置條件碼為 00; (L)0為 1,置條件碼為 01 送全“

50、1”到L;置“1”(L)0 條件轉(zhuǎn)移A1;條件碼為 01 時轉(zhuǎn)移 調(diào)用公用區(qū)K1 ; K1為K公用區(qū)子程序入口 …K公用區(qū)子程序為:K1: 取C; 將公用單元C的值取到寄存器 增值; 在寄存器中完成增值 存C; 將增值結(jié)果存回公用單元C 清除L; 置“0”(L)0 返回; 返回調(diào)用程序,

51、采用“比較與交換”指令后,上述A進(jìn)程給公用單元C的增值程序就相應(yīng)改成(B進(jìn)程也類似):,“比較與交換”指令的其他用法。 使(R1)=全 0, (R3)=全 1,C中存標(biāo)志位, 就可以替代“測試與置定”指令。 “比較與交換”指令要比“測試與置定”指令靈活。 這兩條指令不只是用在單處理機上,也可以用在多處理機上支持操作系統(tǒng)實現(xiàn)進(jìn)程間通訊的同步和互斥,它們的功能是一般的機器指令無法實現(xiàn)的。盡管增加了“

52、比較與交換”指令,但為保證軟件的向后兼容,“測試與置定”指令仍被保留。,為了縮短系統(tǒng)結(jié)構(gòu)與操作系統(tǒng)的語義差距還可以考慮的第三個重要思路是,把操作系統(tǒng)由軟件子程序?qū)崿F(xiàn)的某些功能進(jìn)行硬化或固化,改用硬件和固件實現(xiàn)。例如,VAX—11/780,專門為進(jìn)程切換設(shè)置有關(guān)“保存進(jìn)程關(guān)聯(lián)信息”和“恢復(fù)進(jìn)程關(guān)聯(lián)信息”的指令;將原先由子程序?qū)崿F(xiàn)的功能進(jìn)行硬化。 堆棧型機器HP—3000設(shè)置了功能性很強的PCAL(PROCEDURE CALL,

53、程序調(diào)用)和EXIT(出口返回)兩條專用指令來支持程序嵌套和遞歸調(diào)用,簡化子程序工作區(qū)的分配管理,這兩條指令的語義非常接近于高級語言CALL和RETURN語句的語義,它將原由軟件實現(xiàn)的調(diào)用、返回功能改為用微程序固件解釋實現(xiàn), 這實際上也是對操作系統(tǒng)存貯管理的有力支持。,按簡化指令功能的方向發(fā)展與改進(jìn)指令系統(tǒng) 1. 精簡指令系統(tǒng)思想的提出 針對CISC結(jié)構(gòu)存在的這些問題, Patterson等人提出了精簡指令系統(tǒng)計算機

54、的設(shè)想。通過精減指令來使計算機結(jié)構(gòu)變得簡單、合理、有效,并克服CISC結(jié)構(gòu)的上述缺點。他們提出了設(shè)計RISC機器應(yīng)當(dāng)遵循的一般原則。 這些原則包括: (1) 確定指令系統(tǒng)時,只選擇使用頻度很高的那些指令,在此基礎(chǔ)上增加少量能有效支持操作系統(tǒng)和高級語言實現(xiàn)及其他功能的最有用的指令,讓指令的條數(shù)大大減少,一般不超過 100 條。,(2) 減少指令系統(tǒng)可采用的尋址方式,一般不超過兩種。簡化指令的格式,使之也限制在兩種之內(nèi),并

55、讓全部指令都具有相同的長度。 (3) 讓所有指令在一個機器周期內(nèi)完成。 (4) 擴大通用寄存器的個數(shù),(一般不少于 32 個寄存器,) 盡可能減少訪存操作,指令中只有存(STORE)、取(LOAD)指令才可訪存,其他指令的操作一律都在寄存器間進(jìn)行。 (5) 大多數(shù)指令都采用硬聯(lián)控制實現(xiàn), 少數(shù)指令采用微程序?qū)崿F(xiàn)。(6) 通過精簡指令和優(yōu)化設(shè)計編譯程序,以簡單有效的方式來支持高級語言的實現(xiàn)。,CISC結(jié)構(gòu)存在的缺點,(

56、1) 在CISC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻率相差懸殊。(2) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來了計算機體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時間和成本,而且還容易造成設(shè)計錯誤。(3) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性給VLSI設(shè)計增加了很大負(fù)擔(dān),不利于單片集成.(4) CISC結(jié)構(gòu)的指令系統(tǒng)中,許多復(fù)雜指令需要很復(fù)雜的操作,因而運行速度慢。(5) 在CISC結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功能不均衡性,不利于采用先進(jìn)的計算機體系

57、結(jié)構(gòu)技術(shù)(如流水技術(shù))來提高系統(tǒng)的性能。,Intel 80X86最常用的十條指令,RISC目的 使得計算機體系結(jié)構(gòu)更加簡單、更加合理和更加有效,克服CISC結(jié)構(gòu)的缺點,使機器速度更快,程序運行時間縮短,從而提高計算機系統(tǒng)的性能。RISC 設(shè)計原則 選取使用頻率最高的指令,并補充一些最有用的指令; 每條指令的功能應(yīng)盡可能簡單,并在一個機器周期內(nèi)完成; 所有指令長度均相同; 只有Load和Store操作指令才訪問存儲

58、器, 其它指令操作均在寄存器之間進(jìn)行; 以簡單有效的方式支持高級語言。,RISC結(jié)構(gòu)采用的基本技術(shù), (1) 遵循按RISC機器一般原則設(shè)計的技術(shù); (2) 在邏輯上采用硬聯(lián)實現(xiàn)和微程序固件實現(xiàn)相結(jié)合的技術(shù); (3) 在CPU中設(shè)置數(shù)量較大的寄存器組, 并采用重疊寄存器窗口的技,(4) 指令的執(zhí)行采用流水和延遲轉(zhuǎn)移技術(shù)設(shè)X、Y為主存單元,Rd, R0, Rb, Rc為寄存器單元,且R0中放值

59、 0。有一個未采用延遲轉(zhuǎn)移的程序:,當(dāng)執(zhí)行到地址為 212 的條件轉(zhuǎn)移指令時,如果轉(zhuǎn)移成功,則預(yù)取的 213 指令就應(yīng)作廢,即不應(yīng)將Rd的內(nèi)容轉(zhuǎn)送到Rb。為了保證程序的正確性,就應(yīng)在 212 后面插入一條“加R0, R0, R0 ”指令,相當(dāng)于插入一條空操作指令(該指令執(zhí)行結(jié)果仍然存的是 0),如下列左邊的程序所示。 因此,不管 212 是否成功轉(zhuǎn)移, 都不會影響到其他運算的中間結(jié)果或最后結(jié)果,但這樣, 不管條件轉(zhuǎn)移是否發(fā)生總要多花一個

60、周期。,,(5) 采用認(rèn)真設(shè)計和優(yōu)化編譯系統(tǒng)設(shè)計的技術(shù)。,設(shè)A、 A+1, B, B+1 為主存單元,則程序取A, Ra ; (A)→Ra存Ra, B ; (Ra)→B取A+1, Ra ; (A+1)→Ra存Ra, B+1 ; (Ra)→B+,實現(xiàn)的是將A和A+1 兩個主存單元的內(nèi)容轉(zhuǎn)存到B和B+1 兩個主存單元。由于取和存兩條指令交替進(jìn)行,又使用同一個寄存器Ra, 出現(xiàn)寄存器Ra必須先取得A的內(nèi)容

61、,然后才能由Ra存入B,即上條指令未結(jié)束之前,下條指令無法開始。后面的指令也是如此。 因此, 指令之間實際上不能流水,每條指令均需兩個機器周期。如果通過編譯調(diào)整其指令的順序為 取A, Ra ; (A)→Ra 取A+1, Rb ; (A+1)→Rb 存Ra, B ; (Ra)→B 存Rb, B+1 ; (Rb)→B+1,3. RISC技術(shù)的發(fā)展,采用RISC

62、結(jié)構(gòu)后可以帶來如下明顯的優(yōu)點:簡化指令系統(tǒng)設(shè)計, 適合超大規(guī)模集成電路實現(xiàn); (2) 提高機器的執(zhí)行速度和效率; (3) 降低設(shè)計成本, 提高了系統(tǒng)的可靠性; (4) 可以提供直接支持高級語言的能力, 簡化編譯程序的設(shè)計。,典型的RISC型機器基本特征,RISC結(jié)構(gòu)還存在某些 問題 : (1) 由于指令少,使原在CISC上由單一指令完成的某些復(fù)雜功能現(xiàn)在需要用多條RISC指令才能完成,這實際上加重了匯編語言程序員

63、的負(fù)擔(dān), 增加了機器語言程序的長度,從而占用了較大的存貯空間,加大了指令的信息流量。 (2) 對浮點運算和虛擬存貯器的支持雖有很大加強,但仍不夠理想。 (3) RISC機器上的編譯程序要比CISC機器上的難寫。,圖 2.27 CLIPPER機的概念性結(jié)構(gòu),代表性的RISC處理機的特征,代表性的RISC處理機的特征(續(xù)),在機器上直接運行的程序是由指令組成,指令系統(tǒng)是軟件與硬件之間的一個主要分界面,也是他們之間互相溝通的一

64、座橋梁。?硬件設(shè)計人員采用各種手段實現(xiàn)指令系統(tǒng),而軟件設(shè)計人員則使用這些指令系統(tǒng)編制系統(tǒng)軟件和應(yīng)用軟件,用這些軟件來填補指令系統(tǒng)與人們習(xí)慣的使用方式之間的語義差距。?指令系統(tǒng)設(shè)計必須由軟件設(shè)計人員和硬件設(shè)計人員共同來完成。?指令系統(tǒng)發(fā)展相當(dāng)緩慢,需要用軟件來填補的東西也就越來越多。,按簡化指令功能的方向發(fā)展與改進(jìn)指令系統(tǒng),1. 精簡指令系統(tǒng)思想的提出,針對CISC結(jié)構(gòu)存在的這些問題, Patterson等人提出了精簡指令系統(tǒng)計算機

65、的設(shè)想。通過精減指令來使計算機結(jié)構(gòu)變得簡單、合理、有效,并克服CISC結(jié)構(gòu)的上述缺點。他們提出了設(shè)計RISC機器應(yīng)當(dāng)遵循的一般原則。 這些原則包括: (1) 確定指令系統(tǒng)時,只選擇使用頻度很高的那些指令,在此基礎(chǔ)上增加少量能有效支持操作系統(tǒng)和高級語言實現(xiàn)及其他功能的最有用的指令,讓指令的條數(shù)大大減少,一般不超過 100 條。,(2) 大大減少指令系統(tǒng)可采用的尋址方式的種類,一般不超過兩種。簡化指令的格式,使之也限制在兩

66、種之內(nèi),并讓全部指令都具有相同的長度。 (3) 讓所有指令都在一個機器周期內(nèi)完成。 (4) 擴大通用寄存器的個數(shù),一般不少于 32 個寄存器, 以盡可能減少訪存操作,所有指令中只有存(STORE)、取(LOAD)指令才可訪存,其他指令的操作一律都在寄存器間進(jìn)行。 (5) 為提高指令執(zhí)行速度,大多數(shù)指令都采用硬聯(lián)控制實現(xiàn), 少數(shù)指令采用微程序?qū)崿F(xiàn)。 (6) 通過精簡指令和優(yōu)化設(shè)計編

67、譯程序,以簡單有效的方式來支持高級語言的實現(xiàn)。,,2. RISC結(jié)構(gòu)采用的基本技術(shù) (1) 遵循按RISC機器一般原則設(shè)計的技術(shù)。 (2) 在邏輯上采用硬聯(lián)實現(xiàn)和微程序固件實現(xiàn)相結(jié)合的技術(shù)。 (3) 在CPU中設(shè)置數(shù)量較大的寄存器組, 并采用重疊寄存器窗口的技術(shù)。,重疊寄存器窗口技術(shù)  原因:RISC中,子程序比CISC中多因傳送參數(shù)而訪問存儲器的信息量很大。  實現(xiàn)方法:設(shè)置一個數(shù)量比較大

68、的寄存器堆,并把它劃分成很多個窗口。在每個過程使用的幾個窗口中有一個窗口是與前一個過程共用,還有個窗口是與下一個過程共用。   RISC機控制線路少,芯片上有大量通用寄存器,在執(zhí)行程序時可以存放更多的操作數(shù)或公用參數(shù),采用寄存器窗口技術(shù)還可以更好地支持過程的調(diào)用和返回,提高機器工作效率?! ?寄存器窗口技術(shù)就是把整個寄存器組分成很多小組,每個過程分配一個寄存器小組,當(dāng)發(fā)生過程調(diào)用時, 自動地把CPU轉(zhuǎn)換到不同的寄存器小組使用,

69、不再需要作保存和恢復(fù)的操作,這個寄存器小組就叫做寄存器窗口,相鄰的寄存器窗口間有部分是重疊的,便于調(diào)用參數(shù)傳送。給每個過程提供有限數(shù)量的寄存器窗口,讓各個過程的部分寄存器窗口是重疊的。,圖 2.26 RISCⅡ的重疊寄存器窗口,設(shè)X、Y為主存單元,Rd, R0, Rb, Rc為寄存器單元,且R0中放值 0。有一個未采用延遲轉(zhuǎn)移的程序:,(4) 指令的執(zhí)行采用流水和延遲轉(zhuǎn)移技術(shù)。,當(dāng)執(zhí)行到地址為 212 的條件轉(zhuǎn)移指令時,如果轉(zhuǎn)移成功,則

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論