版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 2 章 數(shù)據(jù)表示與指令系統(tǒng),2.1 數(shù)據(jù)表示2.2 尋址方式 2.3 指令系統(tǒng)的設(shè)計(jì)和改進(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ù)表示指的是能由機(jī)器硬件直接識(shí)別和引用的數(shù)據(jù)類(lèi)型。 當(dāng)機(jī)器設(shè)置有定點(diǎn)加、減、乘、除、移位、比較等一系列定點(diǎn)運(yùn)算指令和相應(yīng)的運(yùn)算硬件,可直接對(duì)定點(diǎn)數(shù)進(jìn)行
2、各種處理時(shí),機(jī)器就有了定點(diǎn)數(shù)據(jù)表示。 當(dāng)機(jī)器設(shè)置有邏輯加、 邏輯乘、按位相加、邏輯移位等一系列邏輯運(yùn)算指令和相應(yīng)邏輯運(yùn)算硬件,可直接對(duì)邏輯數(shù)進(jìn)行各種處理,機(jī)器就有了邏輯數(shù)據(jù)表示。 若機(jī)器設(shè)置有浮點(diǎn)運(yùn)算指令(如浮點(diǎn)加、減、乘、除、 比較、存、取等)和相應(yīng)的運(yùn)算硬件,可以直接對(duì)浮點(diǎn)數(shù)進(jìn)行處理,機(jī)器就有浮點(diǎn)數(shù)據(jù)表示。,軟件系統(tǒng)所要處理的各種數(shù)據(jù)結(jié)構(gòu)。有:串、隊(duì)、棧、向量、陣列、鏈表、樹(shù)、圖等,它們反映了面向應(yīng)
3、用的各種數(shù)據(jù)元素或信息單元之間的結(jié)構(gòu)關(guān)系。 數(shù)據(jù)結(jié)構(gòu)是通過(guò)軟件映象,將信息變換成機(jī)器中所具有的各種數(shù)據(jù)表示來(lái)實(shí)現(xiàn)的,數(shù)據(jù)表示是構(gòu)成數(shù)據(jù)結(jié)構(gòu)的元素。不同的數(shù)據(jù)表示可以為數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)提供不同的支持,表現(xiàn)在實(shí)現(xiàn)的效率和方便性上不同。數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)表示是軟、硬件的交界面。設(shè)計(jì)系統(tǒng)時(shí)需要分配軟、硬件的功能,確定在機(jī)器中設(shè)置哪些數(shù)據(jù)表示,以便對(duì)應(yīng)用中所遇到的數(shù)據(jù)結(jié)構(gòu)能有高的實(shí)現(xiàn)效率。數(shù)據(jù)表示的確定實(shí)質(zhì)上是軟、硬件的取舍問(wèn)題。,圖 2.1
4、 變址操作對(duì)向量、 陣列數(shù)據(jù)結(jié)構(gòu)的支持,二、高級(jí)數(shù)據(jù)表示,1.自定義數(shù)據(jù)表示 自定義(Self-defining)數(shù)據(jù)表示包括帶標(biāo)志符的數(shù)據(jù)表示和數(shù)據(jù)描述符兩類(lèi)?! ?在傳統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)中,用指令本身來(lái)說(shuō)明操作數(shù)據(jù)的類(lèi)型?! ∪纾憾c(diǎn)加法表示操作數(shù)是純小數(shù)或純整數(shù); 浮點(diǎn)加法表示操作數(shù)是浮點(diǎn)數(shù); 十進(jìn)制加法表示操作數(shù)是BCD數(shù)。由于操作數(shù)據(jù)類(lèi)型不同,要設(shè)三種不同的指令(操作碼)來(lái)加以區(qū)分?! ?/p>
5、 自定義數(shù)據(jù)表示則用數(shù)據(jù)本身來(lái)說(shuō)明數(shù)據(jù)類(lèi)型。表示形式有兩種,即標(biāo)志符數(shù)據(jù)表示和描述符數(shù)據(jù)表示。標(biāo)志符數(shù)據(jù)表示要求對(duì)每一個(gè)數(shù)據(jù)都附加標(biāo)志符,其格式如下 :,(1) 帶標(biāo)志符的數(shù)據(jù)表示 高級(jí)語(yǔ)言用類(lèi)型說(shuō)明語(yǔ)句指明數(shù)據(jù)類(lèi)型,讓數(shù)據(jù)類(lèi)型直接與數(shù)據(jù)本身聯(lián)在一起,運(yùn)算符不反映數(shù)據(jù)類(lèi)型。如FORTRAN程序中,實(shí)數(shù)I和J的相加是采用如下的語(yǔ)句組指明的: REAL I, J
6、 I=I+J 在說(shuō)明I、J的數(shù)據(jù)為實(shí)型后,用通用的“+”運(yùn)算符就可實(shí)現(xiàn)實(shí)數(shù)加法。傳統(tǒng)的機(jī)器語(yǔ)言程序要用操作碼指明操作數(shù)的類(lèi)型。如浮點(diǎn)加法指令中,由于操作碼是浮加,那么無(wú)論I和J是否是浮點(diǎn)數(shù), 總是按浮點(diǎn)數(shù)對(duì)待,進(jìn)行浮點(diǎn)數(shù)加法。 編譯時(shí)需要把高級(jí)語(yǔ)言程序中的數(shù)據(jù)類(lèi)型說(shuō)明語(yǔ)句和運(yùn)算符變換成機(jī)器語(yǔ)言中不同類(lèi)型指令的操作碼,并驗(yàn)證操作數(shù)的類(lèi)型是否與運(yùn)算符所要求的一致,若不一致,還需用軟件進(jìn)行轉(zhuǎn)換,這些都增加了編譯的
7、負(fù)擔(dān)。,其中標(biāo)志符指明后面的數(shù)據(jù)所具有的類(lèi)型,如整數(shù)、浮點(diǎn)數(shù)、BCD數(shù)、字符串等?! ?biāo)志符數(shù)據(jù)表示的優(yōu)點(diǎn)是能簡(jiǎn)化指令系統(tǒng),便于程序調(diào)試和查錯(cuò),缺點(diǎn)是數(shù)據(jù)區(qū)域占用的存儲(chǔ)空間增加,并使指令執(zhí)行的速度減慢。為了縮短高級(jí)語(yǔ)言與機(jī)器語(yǔ)言的這種語(yǔ)義差距,可讓機(jī)器中的每個(gè)數(shù)據(jù)如下所示,都帶有類(lèi)型標(biāo)志位:,,,,,數(shù)據(jù)(字),標(biāo)志符數(shù)據(jù)表示的主要優(yōu)點(diǎn) :(1)簡(jiǎn)化指令系統(tǒng)和程序設(shè)計(jì); (2) 簡(jiǎn)化編譯程序; (3) 便于實(shí)現(xiàn)一致性校驗(yàn);
8、(4) 能由硬件自動(dòng)完成數(shù)據(jù)類(lèi)型的變換; (5) 支持?jǐn)?shù)據(jù)庫(kù)系統(tǒng)的實(shí)現(xiàn)與數(shù)據(jù)類(lèi)型無(wú)關(guān)的要求; (6) 為軟件調(diào)試和應(yīng)用軟件開(kāi)發(fā)提供了支持。 采用標(biāo)志符數(shù)據(jù)表示帶來(lái)的問(wèn)題可能有兩個(gè): (1) 每個(gè)數(shù)據(jù)字因增設(shè)標(biāo)志符, 會(huì)使程序所占用的主存空間增加。 (2) 采用標(biāo)志符會(huì)降低指令的執(zhí)行速度。,2) 數(shù)據(jù)描述符 自定義數(shù)據(jù)表示則用數(shù)據(jù)本身來(lái)說(shuō)明數(shù)據(jù)類(lèi)型。表示形式有兩種,即標(biāo)志符數(shù)據(jù)表示和
9、描述符數(shù)據(jù)表示。 為進(jìn)一步減少標(biāo)志符所占的存貯空間,對(duì)于向量、數(shù)組、記錄等數(shù)據(jù),由于每個(gè)元素具有相同的屬性,產(chǎn)生數(shù)據(jù)描述符。 數(shù)據(jù)描述符和標(biāo)志符的差別在于標(biāo)志符是和每個(gè)數(shù)據(jù)相連,合存在一個(gè)存貯單元中,描述單個(gè)數(shù)據(jù)的類(lèi)型特征;描述符是與數(shù)據(jù)分開(kāi)存放的,專門(mén)用來(lái)描述所要訪問(wèn)的數(shù)據(jù)是整塊數(shù)據(jù)還是單個(gè)數(shù)據(jù),訪問(wèn)該數(shù)據(jù)塊或數(shù)據(jù)元素所需要的地址以及其他特征信息等。,以 B6700的描述符為例, 其數(shù)據(jù)描述符和數(shù)據(jù)的形式分別如下:,
10、描述符,數(shù) 據(jù),描述符數(shù)據(jù)表示主要用來(lái)描述多維結(jié)構(gòu)的數(shù)據(jù)類(lèi)型,如向量、矩陣、記錄等。其格式為:,圖 2.4 用描述符描述二維陣列,2. 向量數(shù)組數(shù)據(jù)表示 例如,要計(jì)算 ci=ai+5 +bi ; i=10,11,…,1000用FORTRAN語(yǔ)言寫(xiě)成的有關(guān)DO循環(huán)部分為 DO 40 I=10, 1000 40 C(I) = A(I +5) +B(I),在向量處理機(jī)上,
11、具有向量、數(shù)組數(shù)據(jù)表示。 表現(xiàn)出在硬件上設(shè)置有豐富的向量或陣列運(yùn)算指令,配置有以流水或陣列方式處理的高速運(yùn)算器,只需用一條如下的向量加法指令:,圖 2.5 向量編址所用的參數(shù),3. 堆棧數(shù)據(jù)表示,(1) 有若干高速寄存器組成的硬件堆棧,并附加控制電路讓它與主存中的堆棧區(qū)在邏輯上組成一個(gè)整體,訪問(wèn)的堆棧速度是寄存器的,堆棧的容量是主存的。 (2) 有很豐富的堆棧操作類(lèi)指令且功能很強(qiáng), 直接可對(duì)堆棧中的數(shù)據(jù)
12、進(jìn)行各種運(yùn)算和處理。 (3) 有力地支持高級(jí)語(yǔ)言程序的編譯。假定有算術(shù)賦值語(yǔ)句 F=A*B+C/(D-E) 可以很容易通過(guò)用逆波蘭表達(dá)式:AB*CDE-/+ (4) 有力地支持子程序的嵌套和遞歸調(diào)用。,圖 2.6 用堆棧實(shí)現(xiàn)子程序的嵌套和遞歸調(diào)用,三、引入數(shù)據(jù)表示的原則,數(shù)據(jù)表示是能由硬件直接識(shí)別和引用的數(shù)據(jù)類(lèi)型。數(shù)據(jù)結(jié)構(gòu)反映各種數(shù)據(jù)元素或信息單元之間的結(jié)構(gòu)關(guān)系。引入數(shù)據(jù)
13、表示的原則一: 是提高系統(tǒng)的效率,即減少實(shí)現(xiàn)時(shí)間和所需的存貯空間。 衡量實(shí)現(xiàn)時(shí)間是否減少,主要是看在主存和處理機(jī)之間傳送的信息量有否減少。 傳送的信息量越少, 其實(shí)現(xiàn)時(shí)間就會(huì)越少。以A、 B兩個(gè) 200×200 的定點(diǎn)數(shù)二維數(shù)組相加為例,用PL/1語(yǔ)言編寫(xiě)很簡(jiǎn)單, 就是 A=A+B,引入數(shù)據(jù)表示的原則二: 引入某種高級(jí)數(shù)據(jù)表示后,是否提高其通用
14、性和利用率。 如果只對(duì)某種數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)效率很高, 而對(duì)其他數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)效率很低,或者引入這種數(shù)據(jù)表示在應(yīng)用中很少用到,為此所花的硬件過(guò)多卻并未在性能上得到好處,必然導(dǎo)致性能價(jià)格比的下降, 特別是對(duì)一些復(fù)雜的數(shù)據(jù)表示。,四、浮點(diǎn)數(shù)尾數(shù)基值大小和下溢處理方法的選擇,浮點(diǎn)數(shù)尾數(shù)基值的選擇 圖 2.8 浮點(diǎn)數(shù)可表示實(shí)數(shù)域中的值,表 2.1 采用尾基為rm的浮點(diǎn)數(shù)表示的特性及其舉例,(1) 可表示數(shù)的范圍。由表 2.1
15、 知,可表示的最小值為 , rm增大, 將減少;而可表示的最大值為 , 其中 1-2-m部分為常數(shù)。,(2) 可表示數(shù)的個(gè)數(shù)。由表 2.1 知,可表示數(shù)的個(gè)數(shù)為 , 其中2p+m為常數(shù),所以rm的增大將因 增大, 而使可表示數(shù)的個(gè)數(shù)增多。很容易得出,rm用 16 與用 2 的可表示數(shù)的個(gè)數(shù)之比為 :,(3) 數(shù)在實(shí)
16、數(shù)軸上的分布。對(duì)比表 2.2 和表 2.3,可以看出rm用 16 的比用 2 的可表示數(shù)在實(shí)數(shù)軸上的分布要稀。例如在 1/2 和 2 之間,rm為 2 的有 15 個(gè)值,而rm為 16 的只有 8 個(gè)值。 為了進(jìn)一步分析數(shù)值分布和rm的關(guān)系,引入表示比。表示比e指的是在相同p、m位數(shù)時(shí),在rm=2 的可表示最大值以內(nèi),采用rm>2 的可表示浮點(diǎn)數(shù)個(gè)數(shù)與rm=2 的可表示浮點(diǎn)數(shù)個(gè)數(shù)之比。,(4) 可表示數(shù)的精度。由于rm愈大,數(shù)在數(shù)
17、軸上的分布變稀,已可得出數(shù)的表示精度下降的結(jié)論。從另一個(gè)角度分析,由于機(jī)器尾數(shù)位數(shù)m相同情況下,規(guī)格化十六進(jìn)制尾數(shù)最高數(shù)位中可能出現(xiàn) 4 位機(jī)器位中的左面 3 位均為 0, 即rm=2 的可能比rm=16 的有多 3 位機(jī)器位的精度。若rm=2k,則最壞情況下,尾數(shù)中只用到m-k+1 位機(jī)器位來(lái)表示,所以,可表示數(shù)的精度隨rm增大而單調(diào)下降。,(5) 運(yùn)算中的精度損失。運(yùn)算中的精度損失是指由于運(yùn)算過(guò)程中尾數(shù)右移出機(jī)器字長(zhǎng)使得有效數(shù)字丟失
18、后所造成的精度損失,因此它與可表示數(shù)的精度是兩個(gè)不同的概念。由于尾數(shù)基值rm取大后,對(duì)階移位的機(jī)會(huì)和次數(shù)要少,且由于數(shù)的表示范圍擴(kuò)大,也使出現(xiàn)尾數(shù)溢出需右規(guī)的機(jī)會(huì)減少,這從表 2.4 對(duì)大量指令執(zhí)行后統(tǒng)計(jì)得出的浮點(diǎn)加法移位距離和所占百分比情況可以看出。因此rm愈大,尾數(shù)右移的可能性愈小,精度的損失就越小。 (6) 運(yùn)算速度。由于rm大時(shí)發(fā)生因?qū)﹄A或尾數(shù)溢出需右移及規(guī)格化需左移的次數(shù)顯著減少,因此運(yùn)算速度可以提高。,表 2.4 浮點(diǎn)加
19、法的移位距離及百分比,2. 浮點(diǎn)數(shù)尾數(shù)的下溢處理方法,(1) 截?cái)喾?2)舍入法(3) 恒置“1”法(4)查表舍入法,圖 2.9 rm=2, m=2 時(shí),各種下溢處理方法的誤差曲線,圖 2.10 k位ROM查表舍入,2.2 尋址技術(shù),1、在通用寄存器指令集結(jié)構(gòu)中,一般是利用尋址方式指明指令中的操作數(shù)是一個(gè)常數(shù)、一個(gè)寄存器操作數(shù),或是一個(gè)存儲(chǔ)器操作數(shù)。 2、當(dāng)前指令集結(jié)構(gòu)中所使用的一些操作數(shù)尋址方式。,一、 尋址方式分析,
20、大多數(shù)計(jì)算機(jī)采用主存、通用寄存器、堆棧分類(lèi)編址,因此有面向寄存器、堆棧和主存的分類(lèi)尋址方式。 面向寄存器的尋址方式: 操作數(shù)可以取自寄存器或主存,結(jié)果大多保存在寄存器中,少量的送入主存。面向堆棧的尋址方式: 主要訪問(wèn)堆棧,少量訪問(wèn)主存或寄存器。 面向主存的尋址方式: 主要訪問(wèn)主存,少量訪問(wèn)寄存器。,3. 尋址方式使用情況統(tǒng)計(jì)結(jié)果立即值尋址方式和偏移尋址方式的使用頻率十分高。,圖 2
21、.12 基址尋址,各種信息在存貯器中存放的地址必須是:(1)字節(jié)信息地址為 ×…××××(2)半字信息地址為 ×…××× 0 (3)單字信息地址為 ×…×× 0 0 (4)雙字信息地址為 ×…× 0 0 0 ◆ 程序所使用的偏移量大小分布十分廣泛; ◆ 較小的偏移量和較大的偏移量均
22、占有相當(dāng)大的比例;◆ 將偏移量字段的大小設(shè)置為12~16位。這種長(zhǎng)度可以支持上述75%~99%基于偏移尋址方式的數(shù)據(jù)訪問(wèn)中偏移量大小的表示。,2.3 指令系統(tǒng)的設(shè)計(jì)和改進(jìn) (Instruction System Architecture),根據(jù)五個(gè)因素對(duì)計(jì)算機(jī)指令集結(jié)構(gòu)進(jìn)行分類(lèi):(1) 在CPU中操作數(shù)的存儲(chǔ)方法;(2) 指令中顯式表示操作數(shù)的個(gè)數(shù); (3) 操作數(shù)的尋址方式 ;(4) 指令集所提供的操作類(lèi)型; (5)
23、操作數(shù)的類(lèi)型和大小;,指令一般由兩部分組成:一部分是操作碼,另一部分是操作地址碼。當(dāng)操作數(shù)地址為隱式時(shí)(如堆棧的操作,默認(rèn)為棧頂),后一部分則不是必須的。根據(jù)指令地址碼部分中顯式指明的地址個(gè)數(shù),則可形成零地址、單地址、二地址、三地址及四地址指令。 確定指令格式 就是選擇指令字中的操作碼長(zhǎng)度和地址數(shù)。指令字的長(zhǎng)度有定長(zhǎng)和變長(zhǎng)兩種。,一種指令集中的指令到底要支持哪些類(lèi)型的操作? (指令集結(jié)構(gòu)功能設(shè)計(jì)問(wèn)題) 兩種截然不同的
24、方向: ◆ 復(fù)雜指令集計(jì)算機(jī)(CISC) 強(qiáng)化指令功能,實(shí)現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。 ◆ 精簡(jiǎn)指令集計(jì)算機(jī)(RISC) 盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到簡(jiǎn)化實(shí)現(xiàn),提高性能的目的。 當(dāng)今指令集結(jié)構(gòu)功能設(shè)計(jì)的一個(gè)主要趨勢(shì)。,一、 指令格式的優(yōu)化 操作碼的優(yōu)化表示表 2.5 某模型機(jī)指令使用頻度舉例,例:現(xiàn)設(shè)一臺(tái)模型機(jī),共有 7 種不同的指令,使用頻度如上表 所示。若操
25、作碼用定長(zhǎng)碼表示需要 3 位。,按信息論觀點(diǎn),當(dāng)各種指令的出現(xiàn)是相互獨(dú)立的(實(shí)際情況并不都是如此)時(shí)候,操作碼的信息源熵(信息源所包含的平均信息量)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,說(shuō)明表示這 7 種指令,操作碼平均只需 2.17 位就夠了。 采用 3 位定長(zhǎng)操作碼表示的信息冗余量 。,相當(dāng)大。 為減少信息冗余, 可改用哈夫曼編碼。,熵首先是物理學(xué)里的名詞。在傳播中是指信息的不確定性,一則高信息度的信息熵是很低的,低信息度的熵則高。 具體說(shuō)來(lái),凡是導(dǎo)致隨機(jī)事件集合的肯定性,組織性,法則性或有序性等增加或減少的活動(dòng)過(guò)程,
27、都可以用信息熵的改變量這個(gè)統(tǒng)一的標(biāo)尺來(lái)度量。 1948年,(Claude E. Shannon)香農(nóng)提出了“信息熵”(shāng) 的概念,解決了對(duì)信息的量化度量問(wèn)題?! ?把信息(熵)定義為離散隨機(jī)事件的出現(xiàn)概率,信息是事物的不確定性。所謂信息熵,是一個(gè)數(shù)學(xué)上頗為抽象的概念,在這里不妨把信息熵理解成某種特定信息的出現(xiàn)概率。而信息熵和熱力學(xué)熵是緊密相關(guān)的。,香農(nóng)信息定義信息熵= -(p1*log p1 + p2 * log
28、 p2 +?。。玴32 *log p32) 其中,p1,p2 ,?。?,p32 分別是這 32 個(gè)球隊(duì)奪冠的概率。香農(nóng)把它稱為“信息熵” (Entropy),一般用符號(hào) H 表示,單位是比特?! ∽兞康牟淮_定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。 信息熵是信息論中用于度量信息量的一個(gè)概念。一個(gè)系統(tǒng)越是有序,信息熵就越低; 反之,一個(gè)系統(tǒng)越是混亂,信息熵就越高。所以,信息熵也可以說(shuō)是系統(tǒng)有序化
29、程度的一個(gè)度量。,編址方式,對(duì)各種存儲(chǔ)設(shè)備進(jìn)行編碼的方法主要內(nèi)容:編址單位、零地址空間個(gè)數(shù)、并行存儲(chǔ)器的編址、輸入輸出設(shè)備的編址1. 編址單位?常用的編址單位:字編址、字節(jié)編址、位編址、塊編址等。?編址單位與訪問(wèn)字長(zhǎng)一般:字節(jié)編址,字訪問(wèn)部分機(jī)器:位編址,字訪問(wèn)輔助存儲(chǔ)器:塊編址,位訪問(wèn)。,字節(jié)編址字訪問(wèn)的優(yōu)點(diǎn):,有利于符號(hào)處理?字節(jié)編址字訪問(wèn)的問(wèn)題:地址信息浪費(fèi)對(duì)于32位機(jī)器,浪費(fèi)2位地址(最低2位地址)對(duì)于64位機(jī)器,浪
30、費(fèi)3位地址 存儲(chǔ)器空間浪費(fèi) 讀寫(xiě)邏輯復(fù)雜 大端(Big Endin)與小端(Little Endian)問(wèn) 題(大端存儲(chǔ)格式,字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,小端存儲(chǔ)格式,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。 ),,表 2.6 操作碼的哈夫曼編碼及擴(kuò)展操作碼編碼,圖 2.14 哈夫曼樹(shù)舉例,只要采用全哈夫曼編碼,操作碼的平均碼長(zhǎng)肯定是唯一的。如此例,操作碼的平均碼長(zhǎng),非
31、常接近于可能的最短位數(shù)(H)2.17位。這種編碼的信息冗余為,擴(kuò)展操作碼問(wèn)題,現(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 若只用兩種碼長(zhǎng)的擴(kuò)展碼編碼,其平均碼長(zhǎng)至少為多少位?,采用只有兩種碼長(zhǎng)的擴(kuò)展操作碼,根據(jù)14條指令所給出的使用頻度值分成兩群,讓使用頻度較高的6條指令用3位操作碼編碼表示。 如,用000~101分別表示使用頻度為0.15、0.15、0.14、0.13、0.12、0
33、.11的指令的操作碼。 余下110和111兩個(gè)3位碼作為長(zhǎng)碼的擴(kuò)展標(biāo)志,相當(dāng)于一個(gè)二進(jìn)制位,再擴(kuò)展2位二進(jìn)制碼,既相當(dāng)與共有3位。從而用5位碼就可以表示8條使用頻度較低的指令。 因此,求得操作碼的平均碼長(zhǎng)為: 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 在定長(zhǎng)指令字內(nèi)實(shí)現(xiàn)多種地址制,如果讓最常用的操作碼最短,其地址碼字段個(gè)數(shù)越多,就越能使指令的功能增強(qiáng),越可以從宏觀上減少所需的指令條數(shù)。 例如,為實(shí)現(xiàn)A+B→C,采用單地址指令需經(jīng)取A、加B、 送C 3 條指令完成, 而采用 3 地址指令,則只需一條指令即可完成。,不僅縮短程序的占用空間,也減少了訪存取指令次數(shù),加快程序執(zhí)行的速度。雖然IBM
35、 370 大部分都采用 8 位定長(zhǎng)操作碼, 但對(duì)某些指令(尤其是原 360 指令系統(tǒng)中沒(méi)有的), 如啟動(dòng)I/O、 測(cè)試I/O、 暫停I/O、 頁(yè)面清除、 訪問(wèn)方式位的復(fù)位、絕對(duì)時(shí)鐘設(shè)置等特殊指令, 其操作碼由 8 位擴(kuò)展到 16 位。,指令字格式優(yōu)化措施:(1)縮短操作碼的平均碼長(zhǎng);(2)縮短 碼的長(zhǎng)度;(3)采用地址限制,加快程序執(zhí)行速度;(4)采用長(zhǎng)操作碼與短地址碼配合,具有靈活的地址形式;(5)按整數(shù)邊界法則,采用靈活的
36、指令字長(zhǎng)度;目的:減少信息冗余,利于指令系統(tǒng)擴(kuò)充,指令格式的優(yōu)化問(wèn)題,就是以較少的格式,盡可能短的碼長(zhǎng)來(lái)實(shí)現(xiàn)各種指令編碼。 指令字包括操作碼和地址碼,所以對(duì)這兩部分都采取優(yōu)化措施。1、操作碼的優(yōu)化。這要用到霍夫曼壓縮的概念?;舴蚵鼔嚎s法是一種頻率相關(guān)的編碼方法,即出現(xiàn)頻率高的字符編碼短,頻率低的字符編碼長(zhǎng),縮短平均碼長(zhǎng)。 用霍夫曼樹(shù)實(shí)現(xiàn)霍夫曼編碼。根據(jù)所給的各種指令使用頻率,把它們從小到大依次排好作為葉結(jié)點(diǎn)(
37、相同的頻率可任取一個(gè)排在前),然后把最小的兩個(gè)結(jié)點(diǎn)值(頻率)相加,形成一個(gè)新結(jié)點(diǎn),以這個(gè)結(jié)點(diǎn)的值與其他的葉結(jié)點(diǎn)值比較大小,仍舊取最小的兩個(gè)結(jié)點(diǎn)值合并產(chǎn)生新結(jié)點(diǎn),直到最終合并為一個(gè)根(通常這個(gè)值是1或100)。簡(jiǎn)單地記為: 從小到大排序,最小兩個(gè)合并,重復(fù)上述過(guò)程,只剩一個(gè)結(jié)束。,2、地址碼的優(yōu)化。指令碼與地址碼 合理安排才能使指令格式得到優(yōu)化。 由于操作碼優(yōu)化后是變長(zhǎng)的編碼,如果整條指令是定長(zhǎng)的,那么
38、使地址碼的寬度應(yīng)隨不同指令變化,以配合操作碼形成定長(zhǎng)指令;也可以通過(guò)改變指令字中的地址數(shù)和地址碼的長(zhǎng)度,以使單地址及多址都可以在一條指令中使用;如果操作碼和地址碼之外還有空余的碼位,則設(shè)法用來(lái)存放立即操作數(shù)或常數(shù)。 當(dāng)今的RISC機(jī)指令系統(tǒng)中,全都是用定字長(zhǎng)指令格式。,2.4指令系統(tǒng)的發(fā)展和改進(jìn),CISC指令集結(jié)構(gòu)的功能設(shè)計(jì)CISC結(jié)構(gòu)追求的目標(biāo): 強(qiáng)化指令功能,減少程序的指令條數(shù),以達(dá)到提高性能的目的。增
39、強(qiáng)指令功能主要是從如下幾個(gè)方面著手:1. 提高運(yùn)算型指令功能 提高傳送指令功能 增加程序控制指令功能 面向目標(biāo)程序增強(qiáng)指令功能,2. 面向高級(jí)語(yǔ)言的優(yōu)化實(shí)現(xiàn)來(lái)改進(jìn) 面向高級(jí)語(yǔ)言的優(yōu)化就是盡可能縮小高級(jí)語(yǔ)言與機(jī)器語(yǔ)言之間的語(yǔ)義差距,以利于支持高級(jí)語(yǔ)言編譯系統(tǒng),縮短編譯程序的長(zhǎng)度和編譯所需的時(shí)間。p59,面向高級(jí)語(yǔ)言和編譯程序改進(jìn)指令系統(tǒng) (1) 增加對(duì)高級(jí)語(yǔ)言和編譯系統(tǒng)支持的指令功能 ◆ 對(duì)源程序中各
40、種高級(jí)語(yǔ)言語(yǔ)句進(jìn)行使用頻度的統(tǒng)計(jì)與分析,對(duì)使用頻度高的語(yǔ)句,可以設(shè)置專門(mén)的指令或采取措施增加相應(yīng)指令的功能,以提高其編譯速度和執(zhí)行速度。 ◆ 從面向編譯程序,尤其是從優(yōu)化代碼生成的角度進(jìn)行考慮,增加指令集結(jié)構(gòu)的規(guī)整性來(lái)改進(jìn)指令系統(tǒng)。規(guī)整性:沒(méi)有或盡可能減少例外的情況和特殊的應(yīng)用,以及所有運(yùn)算都能對(duì)稱、均勻地在存儲(chǔ)器單元或寄存器單元之間進(jìn)行。,(2) 高級(jí)語(yǔ)言計(jì)算機(jī)指令系統(tǒng) ◆ 面向高級(jí)語(yǔ)言(HL)的機(jī)器
41、 縮小機(jī)器語(yǔ)言和高級(jí)語(yǔ)言的語(yǔ)義差距。 ◆ 間接執(zhí)行型高級(jí)語(yǔ)言機(jī)器 高級(jí)語(yǔ)言和機(jī)器語(yǔ)言是一一對(duì)應(yīng)的,用匯 編的方法(可以用軟件實(shí)現(xiàn),也可以用硬件實(shí) 現(xiàn))把高級(jí)語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序?!?直接執(zhí)行型高級(jí)語(yǔ)言機(jī)器 高級(jí)語(yǔ)言就作為機(jī)器語(yǔ)言,直接由硬件或 固件對(duì)高級(jí)語(yǔ)言源程序的語(yǔ)句逐條進(jìn)行解釋以
42、 執(zhí)行它。,面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令系統(tǒng) 操作系統(tǒng)的實(shí)現(xiàn)在很大程度上取決于體系結(jié) 構(gòu)的支持。 (1) 主要表現(xiàn)在對(duì)以下方面的支持 中斷處理 進(jìn)程管理 存儲(chǔ)管理和保護(hù) 系統(tǒng)工作狀態(tài)的建立與切換(2) 設(shè)置指令 支持系統(tǒng)工作狀態(tài)和訪問(wèn)方式轉(zhuǎn)移的指令 支持進(jìn)程轉(zhuǎn)移的指令 支持進(jìn)程同步和互斥的指令 只有Load和Store操作指令才訪問(wèn)存儲(chǔ)器,其它指令操作均在寄存器
43、之間進(jìn)行; 以簡(jiǎn)單有效的方式支持高級(jí)語(yǔ)言。,(1) 跳轉(zhuǎn): 當(dāng)控制指令為無(wú)條件改變控制流時(shí),稱之為“跳轉(zhuǎn)”。(2) 分支:當(dāng)控制指令是有條件改變控制流時(shí),稱之為“分支”。(3) 控制流程的各種改變情況 條件分支 跳轉(zhuǎn) 過(guò)程調(diào)用 過(guò)程返回,《周易》又稱《易經(jīng)》,是秦漢后直至今日無(wú)人真正通曉的上古典籍?!吨芤住贩譃榻?jīng)部和傳部,經(jīng)部之原名就為《周易》,是對(duì)四百五十卦易卦典型象義的揭示和相應(yīng)吉兇的判斷,而傳部含《文言》、《彖
44、傳》上下、《象傳》上下、《系辭傳》上下、《說(shuō)卦傳》、《序卦傳》、《雜卦傳》,共七種十篇,稱之為“十翼”,是孔門(mén)弟子對(duì)《周易》經(jīng)文的注解和對(duì)筮占原理、功用等方面的論述。 周易是個(gè)系統(tǒng)工程,歷史上歷代名人志士不斷地研究之、并充實(shí)其內(nèi)容,使其更具有旺盛的生命力。 孔子經(jīng)過(guò)多年磨難,從53歲開(kāi)始學(xué)習(xí)"周易",他非常刻苦認(rèn)真,致使串連竹簡(jiǎn)的牛皮繩磨斷三次。孔子對(duì)卦辭和爻辭作了進(jìn)
45、一步的詮釋和發(fā)揮,撰寫(xiě)了解讀文字,形成了"周易?易傳",儒教從此誕生。"易傳"使"周易"的內(nèi)容更邏輯化、系統(tǒng)化,他提出的“一陰一陽(yáng)之謂道”,首次把宇宙萬(wàn)物分為既對(duì)立又統(tǒng)一的兩大類(lèi),是最早的辯證法思想的形象表述。由此,"周易"用最簡(jiǎn)潔的語(yǔ)言,概括了極其博大乃至無(wú)窮的內(nèi)容。其獨(dú)特的理論思維模式,為人們提供了一個(gè)從時(shí)間、地點(diǎn)、條件全方位分析問(wèn)題、認(rèn)識(shí)事物的思想方法
46、。,易卦系統(tǒng)最基本的要素為陰陽(yáng)概念,而陰陽(yáng)概念包括陰陽(yáng)的性質(zhì)和狀態(tài)兩層意義。如果不理會(huì)陰陽(yáng)的狀態(tài),只論及其性質(zhì),則可以用陽(yáng)爻(-)和陰爻(--)表示陰陽(yáng)。將上述陰陽(yáng)爻按照由下往上重疊三次,就形成了八卦,即“乾,坤,震,巽,坎,離,艮,兌”八個(gè)基本卦,稱為八經(jīng)卦。再將八經(jīng)卦兩兩重疊,就可以得到六個(gè)位次的易卦,共有六十四卦。 六十四卦稱為六十四別卦,每一卦都有特定的名稱。如果再考慮陰陽(yáng)的狀態(tài),則陰陽(yáng)概念又進(jìn)一步劃分為
47、“老陰,老陽(yáng),少陰,少陽(yáng)”四種情形,可以用“X,O,--,-,”四種符號(hào)分別代表之。六十四別卦每一卦的每個(gè)位次上都可能有四種陰陽(yáng)狀態(tài),于是全部易卦系統(tǒng)就共有4096種不同的卦。如果將陰陽(yáng)性質(zhì)構(gòu)成相同的各個(gè)卦放在一起,就形成了主卦卦名相同的六十四種分系統(tǒng),可以稱為某某卦系。 《周易》經(jīng)部文字說(shuō)明的內(nèi)容就是對(duì)六十四卦系中部分易卦的象征意義的解釋以及相應(yīng)的人事吉兇判定(稱為占斷)。其中每一卦系的第一條內(nèi)容是相應(yīng)的全靜卦的占
48、斷,其后的六條(乾坤卦系有七條)內(nèi)容是順次排列的對(duì)相應(yīng)卦系一爻動(dòng)的卦的占斷。秦漢以后的易學(xué)對(duì)此都存在錯(cuò)誤或者說(shuō)模糊的認(rèn)識(shí)。,圖 2.24 各種機(jī)器的語(yǔ)義差距,面向操作系統(tǒng)的優(yōu)化改進(jìn),面向操作系統(tǒng)的優(yōu)化就是進(jìn)一步縮小操作系統(tǒng)與體系結(jié)構(gòu)之間的語(yǔ)義差距,以利于減少操作系統(tǒng)運(yùn)行所需的輔助時(shí)間,節(jié)省操作系統(tǒng)軟件所占用的存儲(chǔ)空間。 操作系統(tǒng)的實(shí)現(xiàn)依賴于體系結(jié)構(gòu)對(duì)它的支持。許多傳統(tǒng)機(jī)器指令例如算術(shù)邏輯指令、字符編輯指令、移位指
49、令、控制轉(zhuǎn)移指令等,都可用于操作系統(tǒng)的實(shí)現(xiàn)。此外,還有相當(dāng)一部分指令是專門(mén)為實(shí)現(xiàn)操作系統(tǒng)的各種功能而設(shè)計(jì)的。,IBM 360 最初并沒(méi)有支持公用區(qū)管理設(shè)置專門(mén)的指令,因此在A進(jìn)程中,為使用公用區(qū), 就需要安排如下的指令串:A1: 取L ; L為一個(gè)字節(jié), 存放公用區(qū)可否使用的標(biāo)志 判(L)0 ; (L)0為 0,置條件碼為 00; (L)0為 1,置條件碼為 01 送全“
50、1”到L;置“1”(L)0 條件轉(zhuǎn)移A1;條件碼為 01 時(shí)轉(zhuǎn)移 調(diào)用公用區(qū)K1 ; K1為K公用區(qū)子程序入口 …K公用區(qū)子程序?yàn)椋邯1: 取C; 將公用單元C的值取到寄存器 增值; 在寄存器中完成增值 存C; 將增值結(jié)果存回公用單元C 清除L; 置“0”(L)0 返回; 返回調(diào)用程序,
51、采用“比較與交換”指令后,上述A進(jìn)程給公用單元C的增值程序就相應(yīng)改成(B進(jìn)程也類(lèi)似):,“比較與交換”指令的其他用法。 使(R1)=全 0, (R3)=全 1,C中存標(biāo)志位, 就可以替代“測(cè)試與置定”指令。 “比較與交換”指令要比“測(cè)試與置定”指令靈活。 這兩條指令不只是用在單處理機(jī)上,也可以用在多處理機(jī)上支持操作系統(tǒng)實(shí)現(xiàn)進(jìn)程間通訊的同步和互斥,它們的功能是一般的機(jī)器指令無(wú)法實(shí)現(xiàn)的。盡管增加了“
52、比較與交換”指令,但為保證軟件的向后兼容,“測(cè)試與置定”指令仍被保留。,為了縮短系統(tǒng)結(jié)構(gòu)與操作系統(tǒng)的語(yǔ)義差距還可以考慮的第三個(gè)重要思路是,把操作系統(tǒng)由軟件子程序?qū)崿F(xiàn)的某些功能進(jìn)行硬化或固化,改用硬件和固件實(shí)現(xiàn)。例如,VAX—11/780,專門(mén)為進(jìn)程切換設(shè)置有關(guān)“保存進(jìn)程關(guān)聯(lián)信息”和“恢復(fù)進(jìn)程關(guān)聯(lián)信息”的指令;將原先由子程序?qū)崿F(xiàn)的功能進(jìn)行硬化。 堆棧型機(jī)器HP—3000設(shè)置了功能性很強(qiáng)的PCAL(PROCEDURE CALL,
53、程序調(diào)用)和EXIT(出口返回)兩條專用指令來(lái)支持程序嵌套和遞歸調(diào)用,簡(jiǎn)化子程序工作區(qū)的分配管理,這兩條指令的語(yǔ)義非常接近于高級(jí)語(yǔ)言CALL和RETURN語(yǔ)句的語(yǔ)義,它將原由軟件實(shí)現(xiàn)的調(diào)用、返回功能改為用微程序固件解釋實(shí)現(xiàn), 這實(shí)際上也是對(duì)操作系統(tǒng)存貯管理的有力支持。,按簡(jiǎn)化指令功能的方向發(fā)展與改進(jìn)指令系統(tǒng) 1. 精簡(jiǎn)指令系統(tǒng)思想的提出 針對(duì)CISC結(jié)構(gòu)存在的這些問(wèn)題, Patterson等人提出了精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)
54、的設(shè)想。通過(guò)精減指令來(lái)使計(jì)算機(jī)結(jié)構(gòu)變得簡(jiǎn)單、合理、有效,并克服CISC結(jié)構(gòu)的上述缺點(diǎn)。他們提出了設(shè)計(jì)RISC機(jī)器應(yīng)當(dāng)遵循的一般原則。 這些原則包括: (1) 確定指令系統(tǒng)時(shí),只選擇使用頻度很高的那些指令,在此基礎(chǔ)上增加少量能有效支持操作系統(tǒng)和高級(jí)語(yǔ)言實(shí)現(xiàn)及其他功能的最有用的指令,讓指令的條數(shù)大大減少,一般不超過(guò) 100 條。,(2) 減少指令系統(tǒng)可采用的尋址方式,一般不超過(guò)兩種。簡(jiǎn)化指令的格式,使之也限制在兩種之內(nèi),并
55、讓全部指令都具有相同的長(zhǎng)度。 (3) 讓所有指令在一個(gè)機(jī)器周期內(nèi)完成。 (4) 擴(kuò)大通用寄存器的個(gè)數(shù),(一般不少于 32 個(gè)寄存器,) 盡可能減少訪存操作,指令中只有存(STORE)、取(LOAD)指令才可訪存,其他指令的操作一律都在寄存器間進(jìn)行。 (5) 大多數(shù)指令都采用硬聯(lián)控制實(shí)現(xiàn), 少數(shù)指令采用微程序?qū)崿F(xiàn)。(6) 通過(guò)精簡(jiǎn)指令和優(yōu)化設(shè)計(jì)編譯程序,以簡(jiǎn)單有效的方式來(lái)支持高級(jí)語(yǔ)言的實(shí)現(xiàn)。,CISC結(jié)構(gòu)存在的缺點(diǎn),(
56、1) 在CISC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻率相差懸殊。(2) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來(lái)了計(jì)算機(jī)體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時(shí)間和成本,而且還容易造成設(shè)計(jì)錯(cuò)誤。(3) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性給VLSI設(shè)計(jì)增加了很大負(fù)擔(dān),不利于單片集成.(4) CISC結(jié)構(gòu)的指令系統(tǒng)中,許多復(fù)雜指令需要很復(fù)雜的操作,因而運(yùn)行速度慢。(5) 在CISC結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功能不均衡性,不利于采用先進(jìn)的計(jì)算機(jī)體系
57、結(jié)構(gòu)技術(shù)(如流水技術(shù))來(lái)提高系統(tǒng)的性能。,Intel 80X86最常用的十條指令,RISC目的 使得計(jì)算機(jī)體系結(jié)構(gòu)更加簡(jiǎn)單、更加合理和更加有效,克服CISC結(jié)構(gòu)的缺點(diǎn),使機(jī)器速度更快,程序運(yùn)行時(shí)間縮短,從而提高計(jì)算機(jī)系統(tǒng)的性能。RISC 設(shè)計(jì)原則 選取使用頻率最高的指令,并補(bǔ)充一些最有用的指令; 每條指令的功能應(yīng)盡可能簡(jiǎn)單,并在一個(gè)機(jī)器周期內(nèi)完成; 所有指令長(zhǎng)度均相同; 只有Load和Store操作指令才訪問(wèn)存儲(chǔ)
58、器, 其它指令操作均在寄存器之間進(jìn)行; 以簡(jiǎn)單有效的方式支持高級(jí)語(yǔ)言。,RISC結(jié)構(gòu)采用的基本技術(shù), (1) 遵循按RISC機(jī)器一般原則設(shè)計(jì)的技術(shù); (2) 在邏輯上采用硬聯(lián)實(shí)現(xiàn)和微程序固件實(shí)現(xiàn)相結(jié)合的技術(shù); (3) 在CPU中設(shè)置數(shù)量較大的寄存器組, 并采用重疊寄存器窗口的技,(4) 指令的執(zhí)行采用流水和延遲轉(zhuǎn)移技術(shù)設(shè)X、Y為主存單元,Rd, R0, Rb, Rc為寄存器單元,且R0中放值
59、 0。有一個(gè)未采用延遲轉(zhuǎn)移的程序:,當(dāng)執(zhí)行到地址為 212 的條件轉(zhuǎn)移指令時(shí),如果轉(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)移, 都不會(huì)影響到其他運(yùn)算的中間結(jié)果或最后結(jié)果,但這樣, 不管條件轉(zhuǎn)移是否發(fā)生總要多花一個(gè)
60、周期。,,(5) 采用認(rèn)真設(shè)計(jì)和優(yōu)化編譯系統(tǒng)設(shè)計(jì)的技術(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+,實(shí)現(xiàn)的是將A和A+1 兩個(gè)主存單元的內(nèi)容轉(zhuǎn)存到B和B+1 兩個(gè)主存單元。由于取和存兩條指令交替進(jìn)行,又使用同一個(gè)寄存器Ra, 出現(xiàn)寄存器Ra必須先取得A的內(nèi)容
61、,然后才能由Ra存入B,即上條指令未結(jié)束之前,下條指令無(wú)法開(kāi)始。后面的指令也是如此。 因此, 指令之間實(shí)際上不能流水,每條指令均需兩個(gè)機(jī)器周期。如果通過(guò)編譯調(diào)整其指令的順序?yàn)?取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)后可以帶來(lái)如下明顯的優(yōu)點(diǎn):簡(jiǎn)化指令系統(tǒng)設(shè)計(jì), 適合超大規(guī)模集成電路實(shí)現(xiàn); (2) 提高機(jī)器的執(zhí)行速度和效率; (3) 降低設(shè)計(jì)成本, 提高了系統(tǒng)的可靠性; (4) 可以提供直接支持高級(jí)語(yǔ)言的能力, 簡(jiǎn)化編譯程序的設(shè)計(jì)。,典型的RISC型機(jī)器基本特征,RISC結(jié)構(gòu)還存在某些 問(wèn)題 : (1) 由于指令少,使原在CISC上由單一指令完成的某些復(fù)雜功能現(xiàn)在需要用多條RISC指令才能完成,這實(shí)際上加重了匯編語(yǔ)言程序員
63、的負(fù)擔(dān), 增加了機(jī)器語(yǔ)言程序的長(zhǎng)度,從而占用了較大的存貯空間,加大了指令的信息流量。 (2) 對(duì)浮點(diǎn)運(yùn)算和虛擬存貯器的支持雖有很大加強(qiáng),但仍不夠理想。 (3) RISC機(jī)器上的編譯程序要比CISC機(jī)器上的難寫(xiě)。,圖 2.27 CLIPPER機(jī)的概念性結(jié)構(gòu),代表性的RISC處理機(jī)的特征,代表性的RISC處理機(jī)的特征(續(xù)),在機(jī)器上直接運(yùn)行的程序是由指令組成,指令系統(tǒng)是軟件與硬件之間的一個(gè)主要分界面,也是他們之間互相溝通的一
64、座橋梁。?硬件設(shè)計(jì)人員采用各種手段實(shí)現(xiàn)指令系統(tǒng),而軟件設(shè)計(jì)人員則使用這些指令系統(tǒng)編制系統(tǒng)軟件和應(yīng)用軟件,用這些軟件來(lái)填補(bǔ)指令系統(tǒng)與人們習(xí)慣的使用方式之間的語(yǔ)義差距。?指令系統(tǒng)設(shè)計(jì)必須由軟件設(shè)計(jì)人員和硬件設(shè)計(jì)人員共同來(lái)完成。?指令系統(tǒng)發(fā)展相當(dāng)緩慢,需要用軟件來(lái)填補(bǔ)的東西也就越來(lái)越多。,按簡(jiǎn)化指令功能的方向發(fā)展與改進(jìn)指令系統(tǒng),1. 精簡(jiǎn)指令系統(tǒng)思想的提出,針對(duì)CISC結(jié)構(gòu)存在的這些問(wèn)題, Patterson等人提出了精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)
65、的設(shè)想。通過(guò)精減指令來(lái)使計(jì)算機(jī)結(jié)構(gòu)變得簡(jiǎn)單、合理、有效,并克服CISC結(jié)構(gòu)的上述缺點(diǎn)。他們提出了設(shè)計(jì)RISC機(jī)器應(yīng)當(dāng)遵循的一般原則。 這些原則包括: (1) 確定指令系統(tǒng)時(shí),只選擇使用頻度很高的那些指令,在此基礎(chǔ)上增加少量能有效支持操作系統(tǒng)和高級(jí)語(yǔ)言實(shí)現(xiàn)及其他功能的最有用的指令,讓指令的條數(shù)大大減少,一般不超過(guò) 100 條。,(2) 大大減少指令系統(tǒng)可采用的尋址方式的種類(lèi),一般不超過(guò)兩種。簡(jiǎn)化指令的格式,使之也限制在兩
66、種之內(nèi),并讓全部指令都具有相同的長(zhǎng)度。 (3) 讓所有指令都在一個(gè)機(jī)器周期內(nèi)完成。 (4) 擴(kuò)大通用寄存器的個(gè)數(shù),一般不少于 32 個(gè)寄存器, 以盡可能減少訪存操作,所有指令中只有存(STORE)、取(LOAD)指令才可訪存,其他指令的操作一律都在寄存器間進(jìn)行。 (5) 為提高指令執(zhí)行速度,大多數(shù)指令都采用硬聯(lián)控制實(shí)現(xiàn), 少數(shù)指令采用微程序?qū)崿F(xiàn)。 (6) 通過(guò)精簡(jiǎn)指令和優(yōu)化設(shè)計(jì)編
67、譯程序,以簡(jiǎn)單有效的方式來(lái)支持高級(jí)語(yǔ)言的實(shí)現(xiàn)。,,2. RISC結(jié)構(gòu)采用的基本技術(shù) (1) 遵循按RISC機(jī)器一般原則設(shè)計(jì)的技術(shù)。 (2) 在邏輯上采用硬聯(lián)實(shí)現(xiàn)和微程序固件實(shí)現(xiàn)相結(jié)合的技術(shù)。 (3) 在CPU中設(shè)置數(shù)量較大的寄存器組, 并采用重疊寄存器窗口的技術(shù)。,重疊寄存器窗口技術(shù) 原因:RISC中,子程序比CISC中多因傳送參數(shù)而訪問(wèn)存儲(chǔ)器的信息量很大?! ?shí)現(xiàn)方法:設(shè)置一個(gè)數(shù)量比較大
68、的寄存器堆,并把它劃分成很多個(gè)窗口。在每個(gè)過(guò)程使用的幾個(gè)窗口中有一個(gè)窗口是與前一個(gè)過(guò)程共用,還有個(gè)窗口是與下一個(gè)過(guò)程共用。 RISC機(jī)控制線路少,芯片上有大量通用寄存器,在執(zhí)行程序時(shí)可以存放更多的操作數(shù)或公用參數(shù),采用寄存器窗口技術(shù)還可以更好地支持過(guò)程的調(diào)用和返回,提高機(jī)器工作效率?! ?寄存器窗口技術(shù)就是把整個(gè)寄存器組分成很多小組,每個(gè)過(guò)程分配一個(gè)寄存器小組,當(dāng)發(fā)生過(guò)程調(diào)用時(shí), 自動(dòng)地把CPU轉(zhuǎn)換到不同的寄存器小組使用,
69、不再需要作保存和恢復(fù)的操作,這個(gè)寄存器小組就叫做寄存器窗口,相鄰的寄存器窗口間有部分是重疊的,便于調(diào)用參數(shù)傳送。給每個(gè)過(guò)程提供有限數(shù)量的寄存器窗口,讓各個(gè)過(guò)程的部分寄存器窗口是重疊的。,圖 2.26 RISCⅡ的重疊寄存器窗口,設(shè)X、Y為主存單元,Rd, R0, Rb, Rc為寄存器單元,且R0中放值 0。有一個(gè)未采用延遲轉(zhuǎn)移的程序:,(4) 指令的執(zhí)行采用流水和延遲轉(zhuǎn)移技術(shù)。,當(dāng)執(zhí)行到地址為 212 的條件轉(zhuǎn)移指令時(shí),如果轉(zhuǎn)移成功,則
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 指令系統(tǒng)
- 考點(diǎn)指令系統(tǒng)
- 指令系統(tǒng)74755
- 3指令系統(tǒng)
- 2情景-指令系統(tǒng)1
- 第5章 指令系統(tǒng)
- 第3章指令系統(tǒng)
- 第3章 指令系統(tǒng)
- 單片機(jī)指令系統(tǒng)
- 第5章 指令系統(tǒng)
- 第3章 指令系統(tǒng)
- 高考指令系統(tǒng)語(yǔ)音說(shuō)明
- 第3章-指令系統(tǒng)
- c51的指令系統(tǒng)
- 單片機(jī)指令系統(tǒng)75018
- 11 尋址方式和指令系統(tǒng)
- 第3章 指令系統(tǒng).PDF
- 單片機(jī)指令系統(tǒng)3
- 第3章 指令系統(tǒng).PDF
- 微控制器尋址方式與指令系統(tǒng)
評(píng)論
0/150
提交評(píng)論