計算機(jī)系統(tǒng)結(jié)構(gòu)_第1頁
計算機(jī)系統(tǒng)結(jié)構(gòu)_第2頁
計算機(jī)系統(tǒng)結(jié)構(gòu)_第3頁
計算機(jī)系統(tǒng)結(jié)構(gòu)_第4頁
計算機(jī)系統(tǒng)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章指令系統(tǒng)的設(shè)計1.2.1 指令系統(tǒng)結(jié)構(gòu)的分類2.2 尋址方式2.3 指令系統(tǒng)的設(shè)計與優(yōu)化2.4指令系統(tǒng)的開展和改進(jìn)2.5 操作數(shù)的類型和大小2.6 MIPS指令系統(tǒng)結(jié)構(gòu)2.區(qū)別不同指令系統(tǒng)結(jié)構(gòu)的主要因素CPU中用來存儲操作數(shù)的存儲單元的類型CPU中用來存儲操作數(shù)的存儲單元堆棧累加器通用存放器組將指令系統(tǒng)的結(jié)構(gòu)分為三種類型2.1指令系統(tǒng)結(jié)構(gòu)的分類3.2.1指令系統(tǒng)結(jié)構(gòu)的分類堆棧結(jié)構(gòu)累加器結(jié)構(gòu)通用存放器結(jié)構(gòu)根據(jù)操作數(shù)的來源不同,又可進(jìn)一步分為:存放器-存儲器結(jié)構(gòu)〔RM結(jié)構(gòu)〕(操作數(shù)可以來自存儲器)存放器-存放器結(jié)構(gòu)〔RR結(jié)構(gòu)〕(所有操作數(shù)都是來自通用存放器組)也稱為load-store結(jié)構(gòu),這個名稱強(qiáng)調(diào):只有l(wèi)oad指令和store指令能夠訪問存儲器。

4.2.1指令系統(tǒng)結(jié)構(gòu)的分類對于不同類型的結(jié)構(gòu),操作數(shù)的位置、個數(shù)以及操作數(shù)的給出方式〔顯式或隱式〕也會不同。顯式給出:用指令字中的操作數(shù)字段給出隱式給出:使用事先約定好的單元5.2.1指令系統(tǒng)結(jié)構(gòu)的分類

例:表達(dá)式Z=X+Y在4種類型指令系統(tǒng)結(jié)構(gòu)上的代碼。假設(shè):X、Y、Z均保存在存儲器單元中,并且不能破壞X和Y的值。堆棧累加器寄存器(RM型)寄存器(RR型)pushXloadXloadR1,XloadR1,XpushYaddYaddR1,YloadR2,YaddstoreZstoreR1,ZaddR3,R1,R2popZstoreR3,Z6.2.1指令系統(tǒng)結(jié)構(gòu)的分類通用存放器型結(jié)構(gòu)現(xiàn)代指令系統(tǒng)結(jié)構(gòu)的主流在靈活性和提高性能方面有明顯的優(yōu)勢跟其它的CPU內(nèi)部存儲單元一樣,存放器的訪問速度比存儲器快。對編譯器而言,能更加容易、有效地分配和使用存放器。存放器可以用來存放變量?!?〕減少對存儲器的訪問,加快程序的執(zhí)行速度;〔因為存放器比存儲器快〕

7.2.1指令系統(tǒng)結(jié)構(gòu)的分類〔2〕用更少的地址位〔相對于存儲器地址來說〕來對寄存器進(jìn)行尋址,從而有效地減少程序的目標(biāo)代碼的大小。根據(jù)ALU指令的操作數(shù)的兩個特征對通用存放器型結(jié)構(gòu)進(jìn)一步細(xì)分ALU指令的操作數(shù)個數(shù)3個操作數(shù)的指令兩個源操作數(shù)、一個目的操作數(shù)2個操作數(shù)的指令其中一個操作數(shù)既作為源操作數(shù),又作為目的操作數(shù)。8.2.1指令系統(tǒng)結(jié)構(gòu)的分類ALU指令中存儲器操作數(shù)的個數(shù)可以是0~3中的某一個,為0表示沒有存儲器操作數(shù)。9.ALU指令中存儲器操作數(shù)的個數(shù)ALU指令中操作數(shù)的最多個數(shù)結(jié)構(gòu)類型機(jī)器實例03RRMIPS,SPARC,Alpha,PowerPC,ARM12RMIBM360/370,Intel80x86,Motorola680003RMIBM360/37022MMVAX33MMVAXALU指令中操作數(shù)個數(shù)和存儲器操作數(shù)個數(shù)的典型組合10.2.1指令系統(tǒng)結(jié)構(gòu)的分類通用存放器型結(jié)構(gòu)進(jìn)一步細(xì)分為3種類型存放器-存放器型〔RR型〕存放器-存儲器型〔RM型〕存儲器-存儲器型〔MM型〕3種通用存放器型結(jié)構(gòu)的優(yōu)缺點表中(m,n)表示指令的n個操作數(shù)中有m個存儲器操作數(shù)。11.指令系統(tǒng)結(jié)構(gòu)類型優(yōu)點缺點寄存器-寄存器型(0,3)指令字長固定,指令結(jié)構(gòu)簡潔,是一種簡單的代碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)相近。與指令中含存儲器操作數(shù)的指令系統(tǒng)結(jié)構(gòu)相比,指令條數(shù)多,目標(biāo)代碼不夠緊湊,因而程序占用的空間比較大。寄存器-存儲器型(1,2)可以在ALU指令中直接對存儲器操作數(shù)進(jìn)行引用,而不必先用load指令進(jìn)行加載。容易對指令進(jìn)行編碼,目標(biāo)代碼比較緊湊。指令中的兩個操作數(shù)不對稱。在一條指令中同時對寄存器操作數(shù)和存儲器操作數(shù)進(jìn)行編碼,有可能限制指令所能夠表示的寄存器個數(shù)。指令的執(zhí)行時鐘周期數(shù)因操作數(shù)的來源(寄存器或存儲器)不同而差別比較大。存儲器-存儲器型(2,2)或(3,3)目標(biāo)代碼最緊湊,不需要設(shè)置寄存器來保存變量。指令字長變化很大,特別是3操作數(shù)指令。而且每條指令完成的工作也差別很大。對存儲器的頻繁訪問會使存儲器成為瓶頸。這種類型的指令系統(tǒng)結(jié)構(gòu)現(xiàn)在已不用了。12.尋址方式:指令系統(tǒng)中如何形成所要訪問的數(shù)據(jù)的地址。尋址方式可以指明指令中的操作數(shù)是一個常數(shù)、一個存放器操作數(shù)或者是一個存儲器操作數(shù)。對于存儲器操作數(shù)來說,由尋址方式確定的存儲器地址稱為有效地址。2.2尋址方式13.2.2尋址方式一些操作數(shù)尋址方式:賦值操作Mem:存儲器Regs:存放器組方括號:表示內(nèi)容Mem[]:存儲器的內(nèi)容Regs[]:存放器的內(nèi)容Mem[Regs[R1]]:以存放器R1中的內(nèi)容作為地址的存儲器單元中的內(nèi)容14.尋址方式指令實例含義寄存器尋址ADDR1,R2Regs[R1]←Regs[R1]+Regs[R2]立即值尋址ADDR3,#6Regs[R3]←Regs[R3]+6偏移尋址ADDR3,120(R2)Regs[R3]←Regs[R3]+Mem[120+Regs[R2]]寄存器間接尋址ADDR4,(R2)Regs[R4]←Regs[R4]+Mem[Regs[R2]]索引尋址ADDR4,(R2+R3)Regs[R4]←Regs[R4]+Mem[Regs[R2]+Regs[R3]]直接尋址或絕對尋址ADDR4,(1010)Regs[R4]←Regs[R4]+Mem[1010]存儲器間接尋址ADDR2,@(R4)Regs[R2]←Regs[R2]+Mem[Mem[Regs[R4]]]自增尋址ADDR1,(R2)+Regs[R1]←Regs[R1]+Mem[Regs[R2]]Regs[R2]←Regs[R2]+d自減尋址ADDR1,-(R2)Regs[R2]←Regs[R2]-dRegs[R1]←Regs[R1]+Mem[Regs[R2]]縮放尋址ADDR1,80(R2)[R3]Regs[R1]←Regs[R1]+Mem[80+Regs[R2]+Regs[R3]*d]15.2.2尋址方式

采用多種尋址方式可以顯著地減少程序的指令條數(shù),但可能增加計算機(jī)的實現(xiàn)復(fù)雜度以及指令的CPI。16.2.2尋址方式立即數(shù)尋址方式和偏移尋址方式的使用頻度最高。

各種尋址方式的使用情況統(tǒng)計結(jié)果在VAX機(jī)器上運(yùn)行g(shù)cc、Spice和Tex基準(zhǔn)程序17.2.2尋址方式立即數(shù)尋址方式立即數(shù)尋址方式的使用頻度指令類型使用頻度整型平均

浮點平均

load指令23%22%ALU指令25%19%所有指令21%16%大約1/4的load指令和ALU指令采用了立即數(shù)尋址。

18.2.2尋址方式兩種表示尋址方式的方法將尋址方式編碼于操作碼中,由操作碼描述相應(yīng)操作的尋址方式。適合:處理機(jī)采用load-store結(jié)構(gòu),尋址方式只有很少幾種。在指令字中設(shè)置專門的尋址字段,用以直接指出尋址方式。靈活,操作碼短,但需要設(shè)置專門的尋址方式字段,而且操作碼和尋址方式字段合起來所需要的總位數(shù)可能會比隱含方法的總位數(shù)多。適合:處理機(jī)具有多種尋址方式,且指令有多個操作數(shù)。19.2.2尋址方式一個需要注意的問題:物理地址空間的信息如何存放?如何在存儲器中存放不同寬度的信息?以IBM370為例子進(jìn)行討論。信息有字節(jié)、半字〔雙字節(jié)〕、單字〔4字節(jié)〕和雙字〔8字節(jié)〕等寬度。主存寬度為8個字節(jié)。采用按字節(jié)編址,各類信息都是用該信息的首字節(jié)地址來尋址。允許它們?nèi)我獯鎯芸赡軙霈F(xiàn)一個信息跨存儲字邊界而存儲于兩個存儲單元中20.2.2尋址方式信息寬度不超過主存寬度的信息必須存放在一個存儲字內(nèi),不能跨邊界。必須做到:信息在主存中存放的起始地址必須是該信息寬度〔字節(jié)數(shù)〕的整數(shù)倍信息存儲的整數(shù)邊界概念滿足以下條件字節(jié)信息的起始地址為:×…××××半字信息的起始地址為:×…×××0單字信息的起始地址為:×…××00雙字信息的起始地址為:×…×000存在存儲空間的浪費(fèi),但保證訪問速度。21.2.2尋址方式22.指令系統(tǒng)的設(shè)計首先考慮所應(yīng)實現(xiàn)的根本功能,確定哪些根本功能應(yīng)該由硬件實現(xiàn),哪些功能由軟件實現(xiàn)比較適宜。包括指令的功能設(shè)計指令格式的設(shè)計在確定哪些根本功能用硬件來實現(xiàn)時,主要考慮3個因素:速度、本錢、靈活性。2.3指令系統(tǒng)的設(shè)計與優(yōu)化23.2.3指令系統(tǒng)的設(shè)計與優(yōu)化硬件實現(xiàn)的特點速度快、本錢高、靈活性差軟件實現(xiàn)的特點速度慢、價格廉價、靈活性好對指令系統(tǒng)的根本要求完整性、規(guī)整性、正交性、高效率、兼容性完整性:在一個有限可用的存儲空間內(nèi),對于任何可解的問題,編制計算程序時,指令系統(tǒng)所提供的指令足夠使用。24.2.3指令系統(tǒng)的設(shè)計與優(yōu)化要求指令系統(tǒng)功能齊全、使用方便下表為許多指令系統(tǒng)結(jié)構(gòu)都包含的一些指令類型前4類屬于通用計算機(jī)系統(tǒng)的根本指令對于最后4種類型的操作,不同指令系統(tǒng)結(jié)構(gòu)的支持大不相同。25.2.3指令系統(tǒng)的設(shè)計與優(yōu)化操作類型實例算術(shù)和邏輯運(yùn)算算術(shù)運(yùn)算和邏輯操作:加,減,乘,除,與,或等數(shù)據(jù)傳輸load,store控制分支,跳轉(zhuǎn),過程調(diào)用和返回,自陷等系統(tǒng)操作系統(tǒng)調(diào)用,虛擬存儲器管理等浮點浮點操作:加,減,乘,除,比較等十進(jìn)制十進(jìn)制加,十進(jìn)制乘,十進(jìn)制到字符的轉(zhuǎn)換等字符串字符串移動,字符串比較,字符串搜索等圖形像素操作,壓縮/解壓操作等26.2.3指令系統(tǒng)的設(shè)計與優(yōu)化規(guī)整性:主要包括對稱性和均勻性。對稱性:所有與指令系統(tǒng)有關(guān)的存儲單元的使用、操作碼的設(shè)置等都是對稱的。例如:在存儲單元的使用上,所有通用存放器都要同等對待。在操作碼的設(shè)置上,如果設(shè)置了A-B的指令,就應(yīng)該也設(shè)置B-A的指令。均勻性:指對于各種不同的操作數(shù)類型、字長、操作種類和數(shù)據(jù)存儲單元,指令的設(shè)置都要同等對待。例如:如果某機(jī)器有5種數(shù)據(jù)表示,4種字長,兩種存儲單元,那么要設(shè)置5×4×2=40種同一操作的指令。27.2.3指令系統(tǒng)的設(shè)計與優(yōu)化正交性:在指令中各個不同含義的字段,如操作類型、數(shù)據(jù)類型、尋址方式字段等,在編碼時應(yīng)互不相關(guān)、相互獨立。高效率:指指令的執(zhí)行速度快、使用頻度高。兼容性:主要是要實現(xiàn)向后兼容,指令系統(tǒng)可以增加新指令,但不能刪除指令或更改指令的功能。28.2.3指令系統(tǒng)的設(shè)計與優(yōu)化在設(shè)計指令系統(tǒng)時,有兩種截然不同的設(shè)計策略。〔產(chǎn)生了兩類不同的計算機(jī)系統(tǒng)〕CISC〔復(fù)雜指令系統(tǒng)計算機(jī)〕增強(qiáng)指令功能,把越來越多的功能交由硬件來實現(xiàn),并且指令的數(shù)量也是越來越多。RISC〔精簡指令系統(tǒng)計算機(jī)〕盡可能地把指令系統(tǒng)簡化,不僅指令的條數(shù)少,而且指令的功能也比較簡單。29.2.3指令系統(tǒng)的設(shè)計與優(yōu)化控制指令是用來改變控制流的。跳轉(zhuǎn):當(dāng)指令是無條件改變控制流時,稱之為跳轉(zhuǎn)指令。分支:當(dāng)控制指令是有條件改變控制流時,那么稱之為分支指令。能夠改變控制流的指令分支跳轉(zhuǎn)過程調(diào)用過程返回2.3.2控制指令30.2.3指令系統(tǒng)的設(shè)計與優(yōu)化控制指令的使用頻度〔load-store型指令系統(tǒng)結(jié)構(gòu)的機(jī)器,基準(zhǔn)程序為SPECCPU2000〕指令類型使用頻度整型平均浮點平均

調(diào)用/返回19%8%跳轉(zhuǎn)6%10%分支75%82%改變控制流的大局部指令是分支指令〔條件轉(zhuǎn)移〕。31.分支條件的方法及其優(yōu)缺點

名稱檢測分支條件的方法優(yōu)點缺點條件碼(CC)檢測由ALU操作設(shè)置的一些特殊的位(即CC)可以自由設(shè)置分支條件條件碼是增設(shè)的狀態(tài)。而且它限制了指令的執(zhí)行順序,因為要保證條件碼能順利地傳送給分支指令。條件寄存器比較指令把比較結(jié)果放入任何一個寄存器,檢測時就檢測該寄存器。簡單占用了一個寄存器比較與分支比較操作是分支指令的一部分,通常這種比較是受到一定限制的。用一條指令(而不是兩條)就能實現(xiàn)分支當(dāng)采用流水方式時,該指令的操作可能太多,在一拍內(nèi)做不完。32.2.3指令系統(tǒng)的設(shè)計與優(yōu)化轉(zhuǎn)移目標(biāo)地址的表示最常用的方法在指令中提供一個偏移量,由該偏移量和程序計數(shù)器〔PC〕的值相加而得出目標(biāo)地址?!睵C相對尋址〕優(yōu)點有效地減少表示該目標(biāo)地址所需要的位數(shù)位置無關(guān)〔代碼可被裝載到主存的任意位置執(zhí)行〕關(guān)鍵:確定偏移量字段的長度模擬結(jié)果說明:采用4~8位的偏移量字段〔以指令字為單位〕就能表示大多數(shù)控制指令的轉(zhuǎn)移目標(biāo)地址了。33.2.3指令系統(tǒng)的設(shè)計與優(yōu)化過程調(diào)用和返回除了要改變控制流之外,可能還要保存機(jī)器狀態(tài)。至少也得保存返回地址〔放在專用的鏈接存放器或堆棧中〕。過去有些指令系統(tǒng)結(jié)構(gòu)提供了專門的保存機(jī)制來保存許多存放器的內(nèi)容。現(xiàn)在較新的指令系統(tǒng)結(jié)構(gòu)那么要求由編譯器生成load和store指令來保存或恢復(fù)存放器的內(nèi)容。34.2.3指令系統(tǒng)的設(shè)計與優(yōu)化2.3.3指令操作碼的優(yōu)化指令由兩局部組成:操作碼、地址碼指令格式的設(shè)計確定指令字的編碼方式,包括操作碼字段和地址碼字段的編碼和表示方式。指令格式的優(yōu)化:如何用最短的位數(shù)來表示指令的操作信息和地址信息。35.2.3指令系統(tǒng)的設(shè)計與優(yōu)化哈夫曼編碼根本思想:當(dāng)各種事件發(fā)生的概率不均等時,可以對發(fā)生概率最高的事件用最短的位數(shù)〔時間〕來表示〔處理〕,而對于出現(xiàn)概率較低的事件,那么可以用較長的位數(shù)〔時間〕來表示〔處理〕,從而使總的平均位數(shù)〔時間〕縮短。構(gòu)造哈夫曼樹的方法將各事件按其使用頻度從小到大依次排列;每次從中選擇兩個頻度值最小的結(jié)點,將其合并成一個新的結(jié)點,并把新結(jié)點畫在所選結(jié)點的上面,36.2.3指令系統(tǒng)的設(shè)計與優(yōu)化然后用兩條邊把新結(jié)點分別與那兩個結(jié)點相連。新結(jié)點的頻度值是所選兩個結(jié)點的頻度值的和。把新結(jié)點與其他剩余未結(jié)合的結(jié)點一起,再以上面的步驟進(jìn)行處理,反復(fù)進(jìn)行,直到全部結(jié)點都結(jié)合完畢、形成根結(jié)點為止。37.2.3指令系統(tǒng)的設(shè)計與優(yōu)化操作碼優(yōu)化的程度可以用信息熵來衡量。表示用二進(jìn)制編碼表示n個碼點時,理論上的最短平均編碼長度。例2.1假設(shè)某模型機(jī)有7條指令,這些指令的使用頻度如表左邊所示。

(1)計算這7條指令的操作碼編碼的最短平均碼長;

(2)畫出哈夫曼樹,寫出這7條指令的哈夫曼編碼,并計算該編碼的平均碼長和信息冗余量。38.2.3指令系統(tǒng)的設(shè)計與優(yōu)化指令頻度pi

操作碼使用哈夫曼編碼操作碼長度li

利用哈夫曼概念的擴(kuò)展操作碼操作碼長度li

I1

0.4001002I2

0.30102012I3

0.151103102I4

0.0511100511004I5

0.0411101511014I6

0.0311110511104I70.031111151111439.2.3指令系統(tǒng)的設(shè)計與優(yōu)化解〔1〕〔2〕其哈夫曼樹如下圖,該樹的每個葉結(jié)點分別對應(yīng)于一條指令。在該樹中,對每個結(jié)點向下的兩個分支,分別用二進(jìn)制“1〞和“0〞來表示。從該哈夫曼樹可以很容易地寫出哈夫曼編碼。具體方法:對于任意一條指令I(lǐng)i〔i=1,2,…,7〕,從哈夫曼樹根結(jié)點出發(fā)、沿一條路徑連接到葉結(jié)點Ii,把途中所經(jīng)過的各分支的“0〞和“1〞按從左到右的順序記錄下來,便是該指令的哈夫曼編碼。上表中列出了所有指令的哈夫曼編碼。40.2.3指令系統(tǒng)的設(shè)計與優(yōu)化哈夫曼樹舉例41.2.3指令系統(tǒng)的設(shè)計與優(yōu)化該哈夫曼編碼的平均碼長是:其信息冗余量為42.2.3指令系統(tǒng)的設(shè)計與優(yōu)化優(yōu)缺點:可以減少操作碼的平均位數(shù),但所獲得的編碼是變長度的,不規(guī)整,不利于硬件處理。擴(kuò)展操作碼

位于定長二進(jìn)制編碼和哈夫曼編碼之間的一種編碼方案。采用有限幾種固定長度的碼長,仍然采用高概率的用短碼、低概率用長碼的哈夫曼壓縮思想,使操作碼平均長度縮短。上表中的指令,采用2-4的擴(kuò)展操作碼,可以得到如表右邊所示的編碼方案。43.2.3指令系統(tǒng)的設(shè)計與優(yōu)化用兩位的00、01、10分別用于表示使用頻度高的I1、I2、I3,然后用11作為高位擴(kuò)展出4個4位的二進(jìn)制編碼,用于表示剩下的4條指令。平均長度

比哈夫曼編碼的2.2大,但很接近于2.2,而且比定長的3位編碼小很多。44.2.3指令系統(tǒng)的設(shè)計與優(yōu)化等長擴(kuò)展碼為了便于分級譯碼,一般都采用等長擴(kuò)展碼。〔在早期的計算機(jī)上〕例如:15/15/15法和8/64/512法選用哪種編碼法取決于指令使用頻度pi的分布。假設(shè)在頭15種指令中pi的值都比較大,但在后30種指令后急劇減少,那么應(yīng)選擇15/15/15法;假設(shè)pi的值在頭8種指令中較大,之后的64種指令的pi值也不太低,那么應(yīng)選擇8/64/512法。衡量標(biāo)準(zhǔn):看哪種編碼法能使平均碼長最短。45.2.3指令系統(tǒng)的設(shè)計與優(yōu)化46.2.3指令系統(tǒng)的設(shè)計與優(yōu)化定長操作碼固定長度的操作碼:所有指令的操作碼都是同一的長度〔如8位〕。許多計算機(jī)都采用〔特別是RISC結(jié)構(gòu)的計算機(jī)〕保證操作碼的譯碼速度、減少譯碼的復(fù)雜度。以程序的存儲空間為代價來換取硬件實現(xiàn)上的好處。47.2.3指令系統(tǒng)的設(shè)計與優(yōu)化如果指令字的寬度固定,地址碼的長度和個數(shù)固定,那么操作碼的縮短并不能帶來好處,只是使指令字中出現(xiàn)空白浪費(fèi)。2.3.4指令字格式的優(yōu)化48.2.3指令系統(tǒng)的設(shè)計與優(yōu)化采用地址個數(shù)可變和/或地址碼長度可變的方案利用操作碼縮短所帶來的好處最常用的操作碼最短,其地址字段個數(shù)最多。能夠使指令的功能增強(qiáng),從總體上減少所需的指令條數(shù)。49.2.3指令系統(tǒng)的設(shè)計與優(yōu)化考慮因素計算機(jī)中存放器的個數(shù)和尋址方式的數(shù)目對機(jī)器的指令字長有很大的影響;指令字的平均長度增加了,程序的平均長度也就增加了;在指令系統(tǒng)的設(shè)計中,要在指令字長與存放器的個數(shù)以及尋址方式的個數(shù)之間進(jìn)行折中。指令系統(tǒng)的3種編碼格式可變長度編碼格式、固定長度編碼格式、混合型編碼格式50.2.3指令系統(tǒng)的設(shè)計與優(yōu)化可變長度編碼格式當(dāng)指令系統(tǒng)的尋址方式和操作種類很多時,這種編碼格式是最好的。用最少的二進(jìn)制位來表示目標(biāo)代碼??赡軙垢鳁l指令的字長和執(zhí)行時間相差很大。51.2.3指令系統(tǒng)的設(shè)計與優(yōu)化固定長度編碼格式將操作類型和尋址方式一起編碼到操作碼中。當(dāng)尋址方式和操作類型非常少時,這種編碼格式非常好。可以有效地降低譯碼的復(fù)雜度,提高譯碼的速度。大局部RISC的指令系統(tǒng)均采用這種編碼格式。52.2.3指令系統(tǒng)的設(shè)計與優(yōu)化混合型編碼格式提供假設(shè)干種固定的指令字長。以期到達(dá)既能夠減少目標(biāo)代碼長度又能降低譯碼復(fù)雜度的目標(biāo)。53.2.4指令系統(tǒng)的開展和改進(jìn)2.4.1沿CISC方向開展和改進(jìn)指令系統(tǒng)CISC指令系統(tǒng)的一大特點指令數(shù)量多、功能多樣增強(qiáng)指令功能主要是從以下3個方面著手:面向目標(biāo)程序增強(qiáng)指令功能面向高級語言的優(yōu)化實現(xiàn)來改進(jìn)指令系統(tǒng)面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進(jìn)指令系統(tǒng)54.2.4指令系統(tǒng)的開展和改進(jìn)面向目標(biāo)程序增強(qiáng)指令功能對大量的目標(biāo)程序及其執(zhí)行情況進(jìn)行統(tǒng)計分析,找出那些使用頻度高、執(zhí)行時間長的指令或指令串。對于使用頻度高的指令,用硬件加快其執(zhí)行;對于使用頻度高的指令串,用一條新的指令來替代。既能減少目標(biāo)程序的執(zhí)行時間,也能有效地縮短程序的長度。可以從以下幾個方面來改進(jìn):增強(qiáng)運(yùn)算型指令的功能增強(qiáng)數(shù)據(jù)傳送指令的功能增強(qiáng)程序控制指令的功能55.2.4指令系統(tǒng)的開展和改進(jìn)例如:循環(huán)在程序中占有相當(dāng)大的比例,所以在指令上提供專門的支持。循環(huán)控制局部通常用3條指令完成:一條加法指令一條比較指令一條分支指令設(shè)置循環(huán)控制指令,用一條指令完成上述3條指令的功能。一般循環(huán)程序的結(jié)構(gòu)56.2.4指令系統(tǒng)的開展和改進(jìn)面向高級語言的優(yōu)化實現(xiàn)來改進(jìn)指令系統(tǒng)〔縮小高級語言與機(jī)器語言的語義差距〕高級語言與一般的機(jī)器語言的語義差距非常大,為高級語言程序的編譯帶來了一些問題。〔1〕編譯器本身比較復(fù)雜;〔2〕編譯生成的目標(biāo)代碼比較難以到達(dá)很好的優(yōu)化。57.2.4指令系統(tǒng)的開展和改進(jìn)增強(qiáng)對高級語言和編譯器的支持對高級語言中使用頻度高、執(zhí)行時間長的語句,增強(qiáng)有關(guān)指令的功能,加快這些指令的執(zhí)行速度,或者增加專門的指令,可以到達(dá)減少目標(biāo)程序的執(zhí)行時間和減少目標(biāo)程序長度的目的。增強(qiáng)系統(tǒng)結(jié)構(gòu)的規(guī)整性,減少系統(tǒng)結(jié)構(gòu)中的各種例外情況?!裁嫦蚋呒壵Z言的計算機(jī)〕58.2.4指令系統(tǒng)的開展和改進(jìn)高級語言計算機(jī)①間接執(zhí)行高級語言機(jī)器高級語言作為機(jī)器的匯編語言。②直接執(zhí)行高級語言的機(jī)器直接把高級語言作為機(jī)器語言。〔一種比較激進(jìn)的方法〕采用“比較簡單的系統(tǒng)結(jié)構(gòu)+軟件〞的做法能夠在較低本錢和復(fù)雜度的前提下,提供更高的性能和靈活性。59.2.4指令系統(tǒng)的開展和改進(jìn)面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進(jìn)指令系統(tǒng)操作系統(tǒng)和計算機(jī)系統(tǒng)結(jié)構(gòu)是緊密聯(lián)系的,操作系統(tǒng)的實現(xiàn)在很大程度上取決于系統(tǒng)結(jié)構(gòu)的支持。指令系統(tǒng)對操作系統(tǒng)的支持主要有:處理機(jī)工作狀態(tài)和訪問方式的切換;進(jìn)程的管理和切換;存儲管理和信息保護(hù);進(jìn)程的同步與互斥,信號燈的管理等。支持操作系統(tǒng)的有些指令屬于特權(quán)指令,一般用戶程序是不能使用的。60.2.4指令系統(tǒng)的開展和改進(jìn)CISC指令系統(tǒng)結(jié)構(gòu)存在的問題

〔1979年開始,Patterson等人的研究〕各種指令的使用頻度相差懸殊,許多指令很少用。據(jù)統(tǒng)計:只有20%的指令使用頻度比較高,占運(yùn)行時間的80%。而其余80%的指令只在20%的運(yùn)行時間內(nèi)才會用到。使用頻度高的指令也是最簡單的指令。2.4.2沿RISC方向開展和改進(jìn)指令系統(tǒng)61.執(zhí)行頻度排序80x86指令指令執(zhí)行頻度(占執(zhí)行指令總數(shù)的百分比)1load22%2條件分支20%3比較16%4store12%5加8%6與6%7減5%8寄存器-寄存器間數(shù)據(jù)移動4%9調(diào)用子程序1%10返回1%合計95%Intel80x86最常用的10條指令62.2.4指令系統(tǒng)的開展和改進(jìn)指令系統(tǒng)龐大,指令條數(shù)很多,許多指令的功能又很復(fù)雜,使得控制器硬件非常復(fù)雜。導(dǎo)致的問題:占用了大量的芯片面積〔如占用CPU芯片總面積的一半以上〕,給VLSI設(shè)計造成很大的困難;增加了研制時間和本錢,容易造成設(shè)計錯誤。許多指令由于操作繁雜,其CPI值比較大,執(zhí)行速度慢。采用這些復(fù)雜指令有可能使整個程序的執(zhí)行時間反而增加。由于指令功能復(fù)雜,規(guī)整性不好,不利于采用流水技術(shù)來提高性能。63.2.4指令系統(tǒng)的開展和改進(jìn)設(shè)計RISC機(jī)器遵循的原那么指令條數(shù)少、指令功能簡單。只選取使用頻度很高的指令,在此根底上補(bǔ)充一些最有用的指令;采用簡單而又統(tǒng)一的指令格式,并減少尋址方式;指令字長都為32位或64位;指令的執(zhí)行在單個機(jī)器周期內(nèi)完成;(采用流水線機(jī)制)只有l(wèi)oad和store指令才能訪問存儲器,其它指令的操作都是在存放器之間進(jìn)行;〔即采用load-store結(jié)構(gòu)〕大多數(shù)指令都采用硬連邏輯來實現(xiàn);64.2.4指令系統(tǒng)的開展和改進(jìn)強(qiáng)調(diào)優(yōu)化編譯器的作用,為高級語言程序生成優(yōu)化的代碼;充分利用流水技術(shù)來提高性能。早期的RISC微處理器1981年,Berkeley分校的Patterson等人的32位微處理器RISCI:31條指令,指令字長都是32位,78個通用存放器,時鐘頻率為8MHz;控制局部所占的芯片面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z8000快3~4倍。65.2.4指令系統(tǒng)的開展和改進(jìn)1983年的RISCⅡ:指令條數(shù)為39,通用存放器個數(shù)為138,時鐘頻率為12MHz。后來開展成了Sun公司的SPARC系列微處理器。1981年,Stanford大學(xué)Hennessy等人的MIPS后來開展成了MIPSRxxx系列微處理器。IBM的801共同特點:采用load-store結(jié)構(gòu)指令字長為32位采用高效的流水技術(shù)66.數(shù)據(jù)表示:計算機(jī)硬件能夠直接識別、指令系統(tǒng)可以直接調(diào)用的數(shù)據(jù)類型。所有數(shù)據(jù)類型中最常用、相比照較簡單、用硬件實現(xiàn)比較容易的幾種。數(shù)據(jù)結(jié)構(gòu):由軟件進(jìn)行處理和實現(xiàn)的各種數(shù)據(jù)類型。研究:這些數(shù)據(jù)類型的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間的關(guān)系,并給出相應(yīng)的算法。系統(tǒng)結(jié)構(gòu)設(shè)計者要解決的問題:如何確定數(shù)據(jù)表示?〔軟硬件取舍折中的問題〕2.5操作數(shù)的類型和大小67.2.5操作數(shù)的類型和大小表示操作數(shù)類型的方法有兩種由指令中的操作碼指定操作數(shù)的類型。給數(shù)據(jù)加上標(biāo)識,由數(shù)據(jù)本身給出操作數(shù)類型。優(yōu)點:簡化指令系統(tǒng),可由硬件自動實現(xiàn)一致性檢查和類型轉(zhuǎn)換,縮小了機(jī)器語言與高級語言的語義差距,簡化編譯器等。缺點:由于需要在執(zhí)行過程中動態(tài)檢測標(biāo)志符,動態(tài)開銷比較大,所以采用這種方案的機(jī)器很少見。操作數(shù)的大小:操作數(shù)的位數(shù)或字節(jié)數(shù)。主要的大小:字節(jié)〔8位〕、半字〔16位〕字〔32位〕、和雙字〔64位〕68.2.5操作數(shù)的類型和大小字符:用ASCII碼表示,為一個字節(jié)大小。整數(shù):用二進(jìn)制補(bǔ)碼表示,其大小可以是字節(jié)、半字或單字。浮點操作數(shù):單精度浮點數(shù)〔1個字〕、雙精度浮點數(shù)〔雙字〕。一般都采用IEEE754浮點標(biāo)準(zhǔn)十進(jìn)制操作數(shù)類型壓縮十進(jìn)制或二進(jìn)制編碼十進(jìn)制〔BCD碼〕:用4位二進(jìn)制編碼表示數(shù)字0~9,并將兩個十進(jìn)制數(shù)字合并到一個字節(jié)中存儲。非壓縮十進(jìn)制:將十進(jìn)制數(shù)直接用字符串來表示。69.訪問不同操作數(shù)大小的頻率〔SPEC基準(zhǔn)程序〕操作數(shù)大小訪問頻度整型平均浮點平均字節(jié)7%0%半字19%0%單字74%31%雙字0%69%

基準(zhǔn)程序?qū)巫趾碗p字的數(shù)據(jù)訪問具有較高的頻度。一臺32位的機(jī)器應(yīng)該支持8、16、32位整型操作數(shù)以及32位和64位的IEEE754標(biāo)準(zhǔn)的浮點操作數(shù)。70.32個64位通用存放器〔GPRs〕R0,R1,…,R31也稱為整數(shù)存放器R0的值永遠(yuǎn)是032個64位浮點數(shù)存放器〔FPRs〕F0,F(xiàn)1,…,F(xiàn)312.6MIPS指令系統(tǒng)結(jié)構(gòu)介紹MIPS64的一個子集,簡稱為MIPS。2.6.1MIPS的存放器71.2.6MIPS指令系統(tǒng)結(jié)構(gòu)用來存放32個單精度浮點數(shù)〔32位〕,也可以用來存放32個雙精度浮點數(shù)〔64位〕。存儲單精度浮點數(shù)〔32位〕時,只用到FPR的一半,其另一半沒用。一些特殊存放器它們可以與通用存放器交換數(shù)據(jù)。例如浮點狀態(tài)存放器:用來保存有關(guān)浮點操作結(jié)果的信息。72.2.6MIPS指令系統(tǒng)結(jié)構(gòu)MIPS的數(shù)據(jù)表示整數(shù)字節(jié)〔8位〕半字〔16位〕字〔32位〕雙字〔64位〕浮點數(shù)單精度浮點數(shù)〔32位〕雙精度浮點數(shù)〔64位〕字節(jié)、半字或者字在裝入64位存放器時,用零擴(kuò)展或者用符號位擴(kuò)展來填充該存放器的剩余局部。裝入以后,對它們將按照64位整數(shù)的方式進(jìn)行運(yùn)算。2.6.2MIPS的數(shù)據(jù)表示73.2.6MIPS指令系統(tǒng)結(jié)構(gòu)立即數(shù)尋址與偏移量尋址;立即數(shù)字段和偏移量字段都是16位的。存放器間接尋址是通過把0作為偏移量來實現(xiàn)的;16位絕對尋址是通過把R0〔其值永遠(yuǎn)為0〕作為基址存放器來完成的;MIPS的存儲器是按字節(jié)尋址的,地址為64位;所有存儲器訪問都必須是邊界對齊的。2.6.3MIPS的數(shù)據(jù)尋址方式74.2.6MIPS指令系統(tǒng)結(jié)構(gòu)尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式

3種格式中,同名字段的位置固定不變。2.6.4MIPS的指令格式75.2.6MIPS指令系統(tǒng)結(jié)構(gòu)I類指令包括所有的load和store指令,立即數(shù)指令,分支指令,存放器跳轉(zhuǎn)指令,存放器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。76.2.6MIPS指令系統(tǒng)結(jié)構(gòu)load指令訪存有效地址:Regs[rs]+immediate從存儲器取來的數(shù)據(jù)放入存放器rtstore指令訪存有效地址:Regs[rs]+immediate要存入存儲器的數(shù)據(jù)放在存放器rt中立即數(shù)指令Regs[rt]←Regs[rs]opimmediate分支指令轉(zhuǎn)移目標(biāo)地址:Regs[rs]+immediate,rt無用存放器跳轉(zhuǎn)、存放器跳轉(zhuǎn)并鏈接轉(zhuǎn)移目標(biāo)地址為Regs[rs]77.2.6MIPS指令系統(tǒng)結(jié)構(gòu)R類指令包括ALU指令,專用存放器讀/寫指令,move指令等。ALU指令Regs[rd]←Regs[rs]functRegs[rt]funct為具體的運(yùn)算操作編碼78.2.6MIPS指令系統(tǒng)結(jié)構(gòu)J類指令包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回指令。在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。79.2.6MIPS指令系統(tǒng)結(jié)構(gòu)MIPS指令可以分為四大類load和storeALU操作分支與跳轉(zhuǎn)浮點操作符號的意義x←ny:從y傳送n位到xx,y←z:把z傳送到x和y2.6.5MIPS的操作80.2.6MIPS指令系統(tǒng)結(jié)構(gòu)下標(biāo):表示字段中具體的位;對于指令和數(shù)據(jù),按從最高位到最低位〔即從左到右〕的順序依次進(jìn)行編號,最高位為第0位,次高位為第1位,依此類推。下標(biāo)可以是一個數(shù)字,也可以是一個范圍。例如:Regs[R4]0:存放器R4的符號位Regs[R4]56-63:R4的最低字節(jié)Mem:表示主存;按字節(jié)尋址,可以傳輸任意個字節(jié)。上標(biāo):用于表示對字段進(jìn)行復(fù)制的次數(shù)。例如:032:一個32位長的全0字段81.2.6MIPS指令系統(tǒng)結(jié)構(gòu)符號##:用于兩個字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例:R8、R10:64位的存放器,那么Regs[R8]32-63←32〔Mem[Regs[R6]]0〕24##Mem[Regs[R6]]表示的意義是:以R6的內(nèi)容作為地址訪問內(nèi)存,得到的字節(jié)按符號位擴(kuò)展為32位后存入R8的低32位,R8的高32位〔即Regs[R8]0-31〕不變。82.load和store指令指令舉例指令名稱含義LDR2,20(R3)裝入雙字Regs[R2]←64Mem[20+Regs[R3]]LWR2,40(R3)裝入字Regs[R2]←64(Mem[40+Regs[R3]]0)32##Mem[40+Regs[R3]]LBR2,30(R3)裝入字節(jié)Regs[R2]←64(Mem[30+Regs[R3]]0)56##Mem[30+Regs[R3]]LBUR2,40(R3)裝入無符號字節(jié)Regs[R2]←64056##Mem[40+Regs[R3]]LHR2,30(R3)裝入半字Regs[R2]←64(Mem[30+Regs[R3]]0)48##Mem[30+Regs[R3]]##Mem[31+Regs[R3]]L.SF2,60(R4)裝入半字Regs[F2]←64Mem[60+Regs[R4]]##032L.DF2,40(R3)裝入雙精度浮點數(shù)Regs[F2]←64Mem[40+Regs[R3]]SDR4,300(R5)保存雙字Mem[300+Regs[R5]]←64Regs[R4]SWR4,300(R5)保存字Mem[300+Regs[R5]]←32Regs[R4]S.SF2,40(R2)保存單精度浮點數(shù)Mem[40+Regs[R2]]←32Regs[F2]0··31

SHR5,502(R4)保存半字

Mem[502+Regs[R4]]←16Regs[R5]48··.63

83.ALU指令存放器-存放器型〔RR型〕指令或立即數(shù)型算術(shù)和邏輯操作:加、減、與、或、異或和移位等

溫馨提示

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

最新文檔

評論

0/150

提交評論