




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1812812.1 指令集結(jié)構(gòu)的分類2.2 尋址技術(shù)2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)2.4 操作數(shù)的類型、表示和大小2.5 指令集格式的設(shè)計(jì)2.6 DLX指令集結(jié)構(gòu)第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)3812.1 指令集結(jié)構(gòu)的分類2.1.1 指令集結(jié)構(gòu)分類根據(jù)根據(jù)五個(gè)因素五個(gè)因素對(duì)計(jì)算機(jī)指令集結(jié)構(gòu)進(jìn)行分類:對(duì)計(jì)算機(jī)指令集結(jié)構(gòu)進(jìn)行分類: (1)(1) 在在CPUCPU中操作數(shù)的存儲(chǔ)方法中操作數(shù)的存儲(chǔ)方法(2) (2) 指令中顯式表示的操作數(shù)個(gè)數(shù)指令中顯式表示的操作數(shù)個(gè)數(shù) (3) (3) 操作數(shù)的尋址方式操作數(shù)的尋址方式 (4) (4) 指令集所提供的操作類型指令集所提供的操作類型 (5) (5) 操作數(shù)的類
2、型和大小操作數(shù)的類型和大小 第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)4811. CPU中用來(lái)存儲(chǔ)操作數(shù)的存儲(chǔ)單元主要有:2. 指令中的操作數(shù)可以顯式給出,也可以隱式地給出。3. CPU對(duì)操作數(shù)的不同存取方式 l 堆棧堆棧l 累加器累加器l 一組寄存器一組寄存器 CPUCPU中操作數(shù)的存儲(chǔ)方法,中操作數(shù)的存儲(chǔ)方法,是各種指令集結(jié)構(gòu)是各種指令集結(jié)構(gòu)之間最主要的區(qū)別所在。之間最主要的區(qū)別所在。2.1 指令集結(jié)構(gòu)的分類581 CPU對(duì)操作數(shù)的不同存取方式 CPU提供的暫存器每條ALU指令顯式表示的操作數(shù)個(gè)數(shù)運(yùn)算結(jié)果的目的地訪問(wèn)顯式操作數(shù)的過(guò)程堆棧堆棧0 0堆棧堆棧Push/PopPush/Pop累加器累加器1 1
3、累加器累加器Load/StoreLoad/Store累加器累加器一組寄存器一組寄存器2/32/3寄存器或存寄存器或存儲(chǔ)器儲(chǔ)器Load/StoreLoad/Store寄存寄存器或存儲(chǔ)器器或存儲(chǔ)器681 4. 根據(jù)CPU內(nèi)部存儲(chǔ)單元類型進(jìn)行分類,可以分為l 堆棧型指令集結(jié)構(gòu)堆棧型指令集結(jié)構(gòu)l 累加器型指令集結(jié)構(gòu)累加器型指令集結(jié)構(gòu)l 通用寄存器型指令集結(jié)構(gòu)通用寄存器型指令集結(jié)構(gòu) 例例 C=A+BC=A+B表達(dá)式在這三種類型指令集結(jié)構(gòu)上的表達(dá)式在這三種類型指令集結(jié)構(gòu)上的實(shí)現(xiàn)方法。假設(shè)實(shí)現(xiàn)方法。假設(shè)A A、B B、C C均是保存在存儲(chǔ)器單元中,均是保存在存儲(chǔ)器單元中,且且A A和和B B的值在運(yùn)算過(guò)程中
4、一直被保持。的值在運(yùn)算過(guò)程中一直被保持。2.1 指令集結(jié)構(gòu)的分類781C=A+B表達(dá)式在這三種類型指令集結(jié)構(gòu)上的實(shí)現(xiàn)方法 堆棧累加器寄存器 (寄存器存儲(chǔ)器)寄存器(寄存器寄存器)PUSH ALOAD ALOAD R1,ALOAD R1,APUSH BADD BADD R1,BLOAD R2,BADDStore CStore C,R1Add R3,R1,R2POP C Store C,R3881三種類型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn) 指令集結(jié)構(gòu)類型優(yōu) 點(diǎn)缺 點(diǎn)堆棧型堆棧型 是一種表示計(jì)算的是一種表示計(jì)算的簡(jiǎn)單模型;指令短小。簡(jiǎn)單模型;指令短小。 堆棧不能被隨機(jī)訪問(wèn),從而很難生堆棧不能被隨機(jī)訪問(wèn),從而很難生成
5、有效代碼。同時(shí),由于堆棧是瓶頸,成有效代碼。同時(shí),由于堆棧是瓶頸,所以很難被高效地實(shí)現(xiàn)。所以很難被高效地實(shí)現(xiàn)。累加器型累加器型 減小了機(jī)器的內(nèi)部減小了機(jī)器的內(nèi)部狀態(tài);指令短小。狀態(tài);指令短小。 由于累加器是唯一的暫存器,這種由于累加器是唯一的暫存器,這種機(jī)器的存儲(chǔ)器通信開(kāi)銷最大。機(jī)器的存儲(chǔ)器通信開(kāi)銷最大。寄存器型寄存器型 是代碼生成最一般是代碼生成最一般的模型。的模型。 所有操作數(shù)均需命名,且顯式表示,所有操作數(shù)均需命名,且顯式表示,因而指令比較長(zhǎng)。因而指令比較長(zhǎng)。9812.1.2 通用寄存器型指令集結(jié)構(gòu)的分類 1. 通用寄存器型指令集結(jié)構(gòu)的主要優(yōu)點(diǎn) 使編譯器有效地使用寄存器。使編譯器有效地使
6、用寄存器。 (1) (1) 在表達(dá)式求值方面,比其它類型指令集結(jié)構(gòu)在表達(dá)式求值方面,比其它類型指令集結(jié)構(gòu) 具有更大的靈活性具有更大的靈活性; ; (2) (2) 寄存器可以用來(lái)存放變量。寄存器可以用來(lái)存放變量。 減少存儲(chǔ)器的通信量,加快程序的執(zhí)行速度。減少存儲(chǔ)器的通信量,加快程序的執(zhí)行速度。 (因?yàn)榧拇嫫鞅却鎯?chǔ)器快)(因?yàn)榧拇嫫鞅却鎯?chǔ)器快) 可以用更少的地址位來(lái)尋址寄存器,從而可可以用更少的地址位來(lái)尋址寄存器,從而可 以有效改進(jìn)程序的目標(biāo)代碼大小。以有效改進(jìn)程序的目標(biāo)代碼大小。 2.1 指令集結(jié)構(gòu)的分類10813. 兩種主要的指令特性能夠?qū)⑼ㄓ眉拇嫫髦噶罴Y(jié)構(gòu) (GPR)進(jìn)一步細(xì)分 (1) A
7、LU(1) ALU指令到底有兩個(gè)或是三個(gè)操作數(shù)?指令到底有兩個(gè)或是三個(gè)操作數(shù)? 有三個(gè)操作數(shù)的指令:兩個(gè)源操作數(shù)有三個(gè)操作數(shù)的指令:兩個(gè)源操作數(shù) 一個(gè)結(jié)果操作數(shù)一個(gè)結(jié)果操作數(shù)2. CPU需要設(shè)置多少個(gè)寄存器呢? 主要由編譯器使用寄存器的情況來(lái)決定。主要由編譯器使用寄存器的情況來(lái)決定。l 為表達(dá)式求值保留一些寄存器為表達(dá)式求值保留一些寄存器l 為傳遞參數(shù)保留一些寄存器為傳遞參數(shù)保留一些寄存器l 用剩下的寄存器來(lái)保存變量用剩下的寄存器來(lái)保存變量2.1 指令集結(jié)構(gòu)的分類1181 有兩個(gè)操作數(shù)的指令:一個(gè)操作數(shù)既作為源操有兩個(gè)操作數(shù)的指令:一個(gè)操作數(shù)既作為源操 作數(shù),也作為目的操作數(shù)。作數(shù),也作為目的
8、操作數(shù)。(2) (2) 在在ALUALU指令中,有多少個(gè)操作數(shù)可以用存儲(chǔ)器來(lái)尋指令中,有多少個(gè)操作數(shù)可以用存儲(chǔ)器來(lái)尋 址,也即有多少個(gè)存儲(chǔ)器操作數(shù)?址,也即有多少個(gè)存儲(chǔ)器操作數(shù)? 一般來(lái)說(shuō),一般來(lái)說(shuō),ALUALU指令有指令有0 03 3個(gè)存儲(chǔ)器操作數(shù)。個(gè)存儲(chǔ)器操作數(shù)。2.1 指令集結(jié)構(gòu)的分類1281 ALU指令中,存儲(chǔ)器操作數(shù)個(gè)數(shù)和操作數(shù)個(gè)數(shù)的 所有可能組合,以及相應(yīng)的機(jī)器實(shí)例 ALU指令中存儲(chǔ)器操作數(shù)個(gè)數(shù)ALU指令中操作數(shù)的最大個(gè)數(shù)機(jī)器實(shí)例02IBM RT-PC3SPARC,MIPS12PDP-10,IBM 360,Motorola 680003IBM360的部分指令的部分指令22PDP11
9、,部分部分IBM360 指令指令3 33VAX1381(3) (3) 通用寄存器指令集結(jié)構(gòu)進(jìn)一步細(xì)分為三種類型:通用寄存器指令集結(jié)構(gòu)進(jìn)一步細(xì)分為三種類型:(4) (4) 常見(jiàn)的三種通用寄存器型指令集結(jié)構(gòu)的常見(jiàn)的三種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn)優(yōu)缺點(diǎn) 注:表中注:表中(m,n)(m,n)的含義是,的含義是, 指令的指令的n n個(gè)操作個(gè)操作 數(shù)中有數(shù)中有m m個(gè)存儲(chǔ)器操作數(shù)。個(gè)存儲(chǔ)器操作數(shù)。 l 寄存器寄存器 - - 寄存器型寄存器型(R-R:register-register)R-R:register-register)l 寄存器寄存器 - - 存儲(chǔ)器型存儲(chǔ)器型(R-M:register-me
10、moryR-M:register-memory)l 存儲(chǔ)器存儲(chǔ)器 - - 存儲(chǔ)器型存儲(chǔ)器型(M-M:memory-memoryM-M:memory-memory)2.1 指令集結(jié)構(gòu)的分類指令集結(jié)構(gòu)類型優(yōu)優(yōu) 點(diǎn)點(diǎn)缺 點(diǎn) 寄存器寄寄存器寄存器型存器型(0,3) 簡(jiǎn)單,指令字長(zhǎng)固簡(jiǎn)單,指令字長(zhǎng)固定,是一種簡(jiǎn)單的代定,是一種簡(jiǎn)單的代碼生成模型,各種指碼生成模型,各種指令的執(zhí)行時(shí)鐘周期數(shù)令的執(zhí)行時(shí)鐘周期數(shù)相近。相近。 和指令中含有對(duì)存儲(chǔ)器操作數(shù)訪問(wèn)和指令中含有對(duì)存儲(chǔ)器操作數(shù)訪問(wèn)的結(jié)構(gòu)相比,指令條數(shù)多,因而其的結(jié)構(gòu)相比,指令條數(shù)多,因而其目標(biāo)代碼較大。目標(biāo)代碼較大。 寄存器存寄存器存儲(chǔ)器型儲(chǔ)器型(1,2)
11、 可以直接對(duì)存儲(chǔ)器操可以直接對(duì)存儲(chǔ)器操作數(shù)進(jìn)行訪問(wèn),容易作數(shù)進(jìn)行訪問(wèn),容易對(duì)指令進(jìn)行編碼,且對(duì)指令進(jìn)行編碼,且其目標(biāo)代碼較小。其目標(biāo)代碼較小。 指令中的操作數(shù)類型不同。在一指令中的操作數(shù)類型不同。在一條指令中同時(shí)對(duì)一個(gè)寄存器操作數(shù)條指令中同時(shí)對(duì)一個(gè)寄存器操作數(shù)和存儲(chǔ)器操作數(shù)進(jìn)行編碼,將限制和存儲(chǔ)器操作數(shù)進(jìn)行編碼,將限制指令所能夠表示的寄存器個(gè)數(shù)。由指令所能夠表示的寄存器個(gè)數(shù)。由于指令的操作數(shù)可以存儲(chǔ)在不同類于指令的操作數(shù)可以存儲(chǔ)在不同類型的存儲(chǔ)器單元,所以每條指令的型的存儲(chǔ)器單元,所以每條指令的執(zhí)行時(shí)鐘周期數(shù)也不盡相同。執(zhí)行時(shí)鐘周期數(shù)也不盡相同。存儲(chǔ)器存存儲(chǔ)器存儲(chǔ)器型儲(chǔ)器型(3,3) 是一種最
12、緊密的編是一種最緊密的編碼方式,無(wú)需碼方式,無(wú)需“浪費(fèi)浪費(fèi)”寄存器保存變量。寄存器保存變量。 指令字長(zhǎng)多種多樣。每條指令的指令字長(zhǎng)多種多樣。每條指令的執(zhí)行時(shí)鐘周期數(shù)也大不一樣,對(duì)存執(zhí)行時(shí)鐘周期數(shù)也大不一樣,對(duì)存儲(chǔ)器的頻繁訪問(wèn)將導(dǎo)致存儲(chǔ)器訪問(wèn)儲(chǔ)器的頻繁訪問(wèn)將導(dǎo)致存儲(chǔ)器訪問(wèn)瓶頸問(wèn)題。瓶頸問(wèn)題。15812.2 尋址技術(shù) 在通用寄存器指令集結(jié)構(gòu)中,一般是利用尋址方 式指明指令中的操作數(shù)是一個(gè)常數(shù)、一個(gè)寄存器 操作數(shù),抑或是一個(gè)存儲(chǔ)器操作數(shù)。 2. 當(dāng)前指令集結(jié)構(gòu)中所使用的一些操作數(shù)尋址方式。 第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)尋址方式指令實(shí)例含 義寄存器尋址寄存器尋址Add R4 , R3RegsR4Reg
13、sR4RegsR3立即值尋址立即值尋址Add R4 , #3RegsR4RegsR43偏移尋址偏移尋址Add R4 , 100(R1)RegsR4RegsR4Mem100+RegsR1寄存器間接尋址寄存器間接尋址Add R4 , (R1)RegsR4RegsR4MemRegsR1索引尋址索引尋址Add R3 , (R1 + R2)RegsR3RegsR3MemRegsR1+RegsR2直接尋址或絕對(duì)尋直接尋址或絕對(duì)尋址址Add R1 , (1001)RegsR1RegsR1Mem1001存儲(chǔ)器間接尋址存儲(chǔ)器間接尋址Add R1 , (R3)RegsR1RegsR1MemMemRegsR3自增尋
14、址自增尋址Add R1 , (R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自減尋址自減尋址Add R1, -(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2縮放尋址縮放尋址AddR1 , 100(R2)R3RegsR1RegsR1Mem100RegsR2RegsR3*d17813. 尋址方式使用情況統(tǒng)計(jì)結(jié)果 (VAXVAX指令集結(jié)構(gòu)的機(jī)器:指令集結(jié)構(gòu)的機(jī)器:gccgcc、SpiceSpice和和Tex Tex 基準(zhǔn)程序)基準(zhǔn)程序)1%0%24%43%32%6%16%3%17%55%1%6%11%39%40%0%10%20%30%40
15、%50%60%70%存儲(chǔ)器間接尋址縮放尋址寄存器間接尋址立即尋址偏移尋址TexSpicegcc立即值尋址方式立即值尋址方式和和偏移尋址方式偏移尋址方式的使用頻率十分高。的使用頻率十分高。18814. 各種偏移量字段大小的使用情況 寄存器寄存器型指令集結(jié)構(gòu)的機(jī)器上寄存器寄存器型指令集結(jié)構(gòu)的機(jī)器上(MIPSMIPS) 運(yùn)行運(yùn)行SPECint92SPECint92基準(zhǔn)程序集基準(zhǔn)程序集 (compresscompress、espressoespresso、eqntotteqntott、gccgcc、lili) 運(yùn)行運(yùn)行SPECfp92SPECfp92基準(zhǔn)程序集基準(zhǔn)程序集 (dudocdudoc、ear
16、ear、hydro2dhydro2d、mdljdp2mdljdp2、su2corsu2cor) 2.2 尋址技術(shù)1981 x x軸的標(biāo)記是對(duì)偏移量大小進(jìn)行軸的標(biāo)記是對(duì)偏移量大小進(jìn)行l(wèi)oglog2 2()運(yùn))運(yùn)算算所得,也就是偏移量字段的位數(shù)。所得,也就是偏移量字段的位數(shù)。 0%5%10%15%20%25%30%0123456789101112131415SPECint92測(cè)量統(tǒng)計(jì)結(jié)果SPECfp92測(cè)量統(tǒng)計(jì)結(jié)果占偏移尋址方式的百分比2.2 尋址技術(shù)2081 程序所使用的偏移量大小分布十分廣泛;程序所使用的偏移量大小分布十分廣泛; 較小的偏移量和較大的偏移量均占有相當(dāng)大的比例;較小的偏移量和較大
17、的偏移量均占有相當(dāng)大的比例; 將偏移量字段的大小設(shè)置為將偏移量字段的大小設(shè)置為12121616位位。這種長(zhǎng)度可。這種長(zhǎng)度可 以支持上述以支持上述75759999基于偏移尋址方式的數(shù)據(jù)訪基于偏移尋址方式的數(shù)據(jù)訪 問(wèn)中偏移量大小的表示。問(wèn)中偏移量大小的表示。 2.2 尋址技術(shù)21815. 在一種Load/Store型指令集結(jié)構(gòu)上,一些指令使用 立即值尋址方式的頻率。 比較指令比較指令和和ALUALU指令指令使用立即值尋址方式十分頻繁。使用立即值尋址方式十分頻繁。 10%87%58%35%45%77%78%10%0%20%40%60%80%100%Load 指令比較指令A(yù)LU指令所有指令整型平均浮點(diǎn)
18、平均22816. 不同立即值大小的使用分布情況 將立即值的大小設(shè)置為將立即值的大小設(shè)置為8 81616位位,可以覆蓋所有,可以覆蓋所有使用立即值尋址方式指令的使用立即值尋址方式指令的50508080。 0%10%20%30%40%50%60%048121620242832表示立即值的位數(shù)百分比gccTexspice2.2 尋址技術(shù)23812.3 指令集結(jié)構(gòu)的功能設(shè)計(jì) 第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)操作類型實(shí) 例算 術(shù) 和 邏算 術(shù) 和 邏輯運(yùn)算輯運(yùn)算整數(shù)的算術(shù)和邏輯操作:加、減、與、或等。整數(shù)的算術(shù)和邏輯操作:加、減、與、或等。數(shù)據(jù)傳輸數(shù)據(jù)傳輸Load/Store控制控制分支、跳轉(zhuǎn)、過(guò)程調(diào)用和返
19、回、自陷等。分支、跳轉(zhuǎn)、過(guò)程調(diào)用和返回、自陷等。系統(tǒng)系統(tǒng)操作系統(tǒng)調(diào)用、虛擬存儲(chǔ)器管理等。操作系統(tǒng)調(diào)用、虛擬存儲(chǔ)器管理等。浮點(diǎn)浮點(diǎn)浮點(diǎn)操作:加、乘等。浮點(diǎn)操作:加、乘等。十進(jìn)制十進(jìn)制十進(jìn)制加、十進(jìn)制乘、十進(jìn)制到字符的轉(zhuǎn)換。十進(jìn)制加、十進(jìn)制乘、十進(jìn)制到字符的轉(zhuǎn)換。字符串字符串字符串移動(dòng)、字符串比較、字符串搜索等。字符串移動(dòng)、字符串比較、字符串搜索等。圖形圖形象素操作、壓縮象素操作、壓縮/解壓操作等。解壓操作等。1. 指令集中操作的分類 25812. 一種指令集結(jié)構(gòu)中的指令到底要支持哪些類型的 操作? ( (指令集結(jié)構(gòu)功能設(shè)計(jì)問(wèn)題指令集結(jié)構(gòu)功能設(shè)計(jì)問(wèn)題) ) 兩種截然不同的方向:兩種截然不同的方向:
20、 復(fù)雜指令集計(jì)算機(jī)(復(fù)雜指令集計(jì)算機(jī)(CISCCISC) 強(qiáng)化指令功能,實(shí)現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。強(qiáng)化指令功能,實(shí)現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。 精簡(jiǎn)指令集計(jì)算機(jī)(精簡(jiǎn)指令集計(jì)算機(jī)(RISCRISC) 盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到 簡(jiǎn)化實(shí)現(xiàn),提高性能的目的。簡(jiǎn)化實(shí)現(xiàn),提高性能的目的。 當(dāng)今指令集結(jié)構(gòu)功能設(shè)計(jì)的一個(gè)主要趨勢(shì)。當(dāng)今指令集結(jié)構(gòu)功能設(shè)計(jì)的一個(gè)主要趨勢(shì)。2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)26812.3.1 CISC指令集結(jié)構(gòu)的功能設(shè)計(jì)CISCCISC結(jié)構(gòu)追求的目標(biāo):結(jié)構(gòu)追求的目標(biāo): 強(qiáng)化指令功能,減少程序的指令條數(shù),以達(dá)到強(qiáng)化指令功能,減少程序的指
21、令條數(shù),以達(dá)到提高性能的目的。提高性能的目的。增強(qiáng)指令功能主要是從如下幾個(gè)方面著手:增強(qiáng)指令功能主要是從如下幾個(gè)方面著手:1. 面向目標(biāo)程序增強(qiáng)指令功能l 提高運(yùn)算型指令功能提高運(yùn)算型指令功能l 提高傳送指令功能提高傳送指令功能l 增加程序控制指令功能增加程序控制指令功能2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)27812.2.面向高級(jí)語(yǔ)言和編譯程序改進(jìn)指令系統(tǒng)面向高級(jí)語(yǔ)言和編譯程序改進(jìn)指令系統(tǒng) ( (1) 1) 增加對(duì)高級(jí)語(yǔ)言和編譯系統(tǒng)支持的指令功能增加對(duì)高級(jí)語(yǔ)言和編譯系統(tǒng)支持的指令功能 對(duì)源程序中各種高級(jí)語(yǔ)言語(yǔ)句進(jìn)行使用頻對(duì)源程序中各種高級(jí)語(yǔ)言語(yǔ)句進(jìn)行使用頻 度的統(tǒng)計(jì)與分析,對(duì)于使用頻度高的語(yǔ)句,度的統(tǒng)
22、計(jì)與分析,對(duì)于使用頻度高的語(yǔ)句, 可以設(shè)置專門的指令或采取措施增加相應(yīng)可以設(shè)置專門的指令或采取措施增加相應(yīng) 令的功能,以提高其編譯速度和執(zhí)行速度。令的功能,以提高其編譯速度和執(zhí)行速度。 從面向編譯程序,尤其是從優(yōu)化代碼生成從面向編譯程序,尤其是從優(yōu)化代碼生成 的角度進(jìn)行考慮,增加指令集結(jié)構(gòu)的規(guī)整的角度進(jìn)行考慮,增加指令集結(jié)構(gòu)的規(guī)整 性來(lái)改進(jìn)指令系統(tǒng)。性來(lái)改進(jìn)指令系統(tǒng)。2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)2881規(guī)整性:規(guī)整性:沒(méi)有或盡可能減少例外的情況和特殊的沒(méi)有或盡可能減少例外的情況和特殊的 應(yīng)用,以及所有運(yùn)算都能對(duì)稱、均勻地應(yīng)用,以及所有運(yùn)算都能對(duì)稱、均勻地 在存儲(chǔ)器單元或寄存器單元之間進(jìn)行。在存
23、儲(chǔ)器單元或寄存器單元之間進(jìn)行。(2) (2) 高級(jí)語(yǔ)言計(jì)算機(jī)指令系統(tǒng)高級(jí)語(yǔ)言計(jì)算機(jī)指令系統(tǒng) 面向高級(jí)語(yǔ)言面向高級(jí)語(yǔ)言(HL)(HL)的機(jī)器的機(jī)器 縮小機(jī)器語(yǔ)言和高級(jí)語(yǔ)言的語(yǔ)義差距??s小機(jī)器語(yǔ)言和高級(jí)語(yǔ)言的語(yǔ)義差距。 間接執(zhí)行型高級(jí)語(yǔ)言機(jī)器間接執(zhí)行型高級(jí)語(yǔ)言機(jī)器 高級(jí)語(yǔ)言和機(jī)器語(yǔ)言是一一對(duì)應(yīng)的,用匯高級(jí)語(yǔ)言和機(jī)器語(yǔ)言是一一對(duì)應(yīng)的,用匯 編的方法編的方法( (可以用軟件實(shí)現(xiàn),也可以用硬件實(shí)可以用軟件實(shí)現(xiàn),也可以用硬件實(shí) 現(xiàn)現(xiàn)) )把高級(jí)語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序。把高級(jí)語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序。2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)2981 直接執(zhí)行型高級(jí)語(yǔ)言機(jī)器直接執(zhí)行型高級(jí)語(yǔ)言機(jī)器 高級(jí)語(yǔ)言就作為
24、機(jī)器語(yǔ)言,直接由硬件或高級(jí)語(yǔ)言就作為機(jī)器語(yǔ)言,直接由硬件或 固件對(duì)高級(jí)語(yǔ)言源程序的語(yǔ)句逐條進(jìn)行解釋以固件對(duì)高級(jí)語(yǔ)言源程序的語(yǔ)句逐條進(jìn)行解釋以 執(zhí)行它。執(zhí)行它。3. 面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令系統(tǒng) 操作系統(tǒng)的實(shí)現(xiàn)在很大程度上取決于體系結(jié)操作系統(tǒng)的實(shí)現(xiàn)在很大程度上取決于體系結(jié) 構(gòu)的支持。構(gòu)的支持。 (1) (1) 主要表現(xiàn)在對(duì)以下方面的支持主要表現(xiàn)在對(duì)以下方面的支持2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)3081l 中斷處理中斷處理l 進(jìn)程管理進(jìn)程管理l 存儲(chǔ)管理和保護(hù)存儲(chǔ)管理和保護(hù)l 系統(tǒng)工作狀態(tài)的建立與切換系統(tǒng)工作狀態(tài)的建立與切換 (2) (2) 設(shè)置指令設(shè)置指令l 支持系統(tǒng)工作狀態(tài)和訪問(wèn)方式轉(zhuǎn)移的指
25、令支持系統(tǒng)工作狀態(tài)和訪問(wèn)方式轉(zhuǎn)移的指令l 支持進(jìn)程轉(zhuǎn)移的指令支持進(jìn)程轉(zhuǎn)移的指令l 支持進(jìn)程同步和互斥的指令支持進(jìn)程同步和互斥的指令2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)31812.3.2 RISC指令集功能的設(shè)計(jì)1. CISC結(jié)構(gòu)存在的缺點(diǎn)(1) (1) 在在CISCCISC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻 率相差懸殊。率相差懸殊。(2) CISC(2) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來(lái)了計(jì)算機(jī)體系結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來(lái)了計(jì)算機(jī)體系 結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時(shí)間和成結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時(shí)間和成 本,而且還容易造成設(shè)計(jì)錯(cuò)誤。本,而且還容易造成設(shè)計(jì)錯(cuò)誤。
26、(3) CISC(3) CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性給結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性給VLSIVLSI設(shè)計(jì)增加了設(shè)計(jì)增加了 很大負(fù)擔(dān),不利于單片集成。很大負(fù)擔(dān),不利于單片集成。2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)3281(4) CISC(4) CISC結(jié)構(gòu)的指令系統(tǒng)中,許多復(fù)雜指令需要很結(jié)構(gòu)的指令系統(tǒng)中,許多復(fù)雜指令需要很 復(fù)雜的操作,因而運(yùn)行速度慢。復(fù)雜的操作,因而運(yùn)行速度慢。(5) (5) 在在CISCCISC結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功 能不均衡性,不利于采用先進(jìn)的計(jì)算機(jī)體系結(jié)能不均衡性,不利于采用先進(jìn)的計(jì)算機(jī)體系結(jié) 構(gòu)技術(shù)(如流水技術(shù))來(lái)提高系統(tǒng)的性能。構(gòu)技術(shù)(如
27、流水技術(shù))來(lái)提高系統(tǒng)的性能。 2. RISC計(jì)算機(jī) (1) (1) 指令系統(tǒng)只包含那些使用頻率很高的指令指令系統(tǒng)只包含那些使用頻率很高的指令 和一些必要指令。和一些必要指令。 Intel 80X86Intel 80X86最常用的十條指令最常用的十條指令2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)執(zhí)行頻率排序80X86指令指令執(zhí)行頻率(執(zhí)行指令總數(shù))1Load222條件分支條件分支203比較比較164Store125加加86與與67減減58寄存器寄存器間寄存器寄存器間數(shù)據(jù)移動(dòng)數(shù)據(jù)移動(dòng)49調(diào)用調(diào)用110返回返回1合合 計(jì)計(jì)96Intel 80X86最常用的十條指令 3481(2) (2) 目的目的 使得計(jì)算機(jī)體系
28、結(jié)構(gòu)更加簡(jiǎn)單、更加合理和使得計(jì)算機(jī)體系結(jié)構(gòu)更加簡(jiǎn)單、更加合理和 更加有效,克服更加有效,克服CISCCISC結(jié)構(gòu)的缺點(diǎn),使機(jī)器速度更結(jié)構(gòu)的缺點(diǎn),使機(jī)器速度更 快,程序運(yùn)行時(shí)間縮短,從而提高計(jì)算機(jī)系統(tǒng)的快,程序運(yùn)行時(shí)間縮短,從而提高計(jì)算機(jī)系統(tǒng)的 性能。性能。(3) (3) 設(shè)計(jì)原則設(shè)計(jì)原則l 選取使用頻率最高的指令,并補(bǔ)充一些最有選取使用頻率最高的指令,并補(bǔ)充一些最有 用的指令;用的指令;l 每條指令的功能應(yīng)盡可能簡(jiǎn)單,并在一個(gè)機(jī)每條指令的功能應(yīng)盡可能簡(jiǎn)單,并在一個(gè)機(jī) 器周期內(nèi)完成;器周期內(nèi)完成;l 所有指令長(zhǎng)度均相同;所有指令長(zhǎng)度均相同;2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)3581l 只有只有Load
29、Load和和StoreStore操作指令才訪問(wèn)存儲(chǔ)器操作指令才訪問(wèn)存儲(chǔ)器; ;l 其它指令操作均在寄存器之間進(jìn)行;其它指令操作均在寄存器之間進(jìn)行;l 以簡(jiǎn)單有效的方式支持高級(jí)語(yǔ)言。以簡(jiǎn)單有效的方式支持高級(jí)語(yǔ)言。2.3.3 控制指令 (1) (1) 跳轉(zhuǎn)跳轉(zhuǎn): : 當(dāng)控制指令為無(wú)條件改變控制流時(shí),當(dāng)控制指令為無(wú)條件改變控制流時(shí), 稱之為稱之為“跳轉(zhuǎn)跳轉(zhuǎn)”。 (2) (2) 分支:分支:當(dāng)控制指令是有條件改變控制流時(shí),當(dāng)控制指令是有條件改變控制流時(shí), 稱之為稱之為“分支分支”。2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)3681l 條件分支條件分支l 跳轉(zhuǎn)跳轉(zhuǎn)l 過(guò)程調(diào)用過(guò)程調(diào)用l 過(guò)程返回過(guò)程返回 (3) (3
30、) 控制流程的各種改變情況控制流程的各種改變情況2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)1. 控制指令的使用頻率 (一臺(tái)(一臺(tái)Load/StoreLoad/Store型指令集結(jié)構(gòu)的機(jī)器:型指令集結(jié)構(gòu)的機(jī)器: SPECint92SPECint92、Specfp92Specfp92基準(zhǔn)程序)基準(zhǔn)程序)13%6%81%11%4%87%0%20%40%60%80%100%調(diào)用/ 返回跳轉(zhuǎn)條件分支整型平均浮點(diǎn)平均改變控制流的大部分指令是改變控制流的大部分指令是條件分支指令。條件分支指令。表示分支條件的技術(shù)測(cè)試分支條件的方法優(yōu) 點(diǎn)缺 點(diǎn)條件碼條件碼(CC) 在程序的控制下,由在程序的控制下,由ALU操操作設(shè)置特殊的位
31、。作設(shè)置特殊的位。 可以自由設(shè)置可以自由設(shè)置分支條件。分支條件。CC是額外狀態(tài),條件碼限是額外狀態(tài),條件碼限制了指令順序,因?yàn)楸仨殢闹屏酥噶铐樞颍驗(yàn)楸仨殢囊粭l指令將分支條件信息傳一條指令將分支條件信息傳送到分支指令。送到分支指令。條件寄條件寄存器存器 根據(jù)比較結(jié)果測(cè)試條件寄存根據(jù)比較結(jié)果測(cè)試條件寄存器。器。 簡(jiǎn)單簡(jiǎn)單 占用了一個(gè)寄存器。占用了一個(gè)寄存器。 比較且比較且分支分支比較操作是分支指令的一部比較操作是分支指令的一部分,通常這種比較是受一定分,通常這種比較是受一定限制的。限制的。一條指令完成一條指令完成了兩條指令的了兩條指令的功能。功能。 分支指令的操作增多。分支指令的操作增多。2.
32、常用的三種表示分支條件的技術(shù)及其優(yōu)缺點(diǎn) 39813. 分支目標(biāo)地址的表示 PCPC相對(duì)尋址:相對(duì)尋址:在指令中提供一個(gè)和程序計(jì)數(shù)在指令中提供一個(gè)和程序計(jì)數(shù) 器(器(PCPC)的值相加的偏移量。)的值相加的偏移量。 (1) (1) 有效地縮短指令中表示目標(biāo)地址的字段的有效地縮短指令中表示目標(biāo)地址的字段的 長(zhǎng)度;長(zhǎng)度; (2) (2) 使得代碼在執(zhí)行時(shí)與它被載入的位置無(wú)關(guān)。使得代碼在執(zhí)行時(shí)與它被載入的位置無(wú)關(guān)。 關(guān)鍵問(wèn)題是:關(guān)鍵問(wèn)題是: 轉(zhuǎn)移目標(biāo)離當(dāng)前控制指令的偏移量有多大?轉(zhuǎn)移目標(biāo)離當(dāng)前控制指令的偏移量有多大? 2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)40814. 過(guò)程調(diào)用和返回的狀態(tài)保存 兩種方法來(lái)保存寄
33、存器的內(nèi)容:兩種方法來(lái)保存寄存器的內(nèi)容: (1) (1) “調(diào)用者保存調(diào)用者保存”方法方法 在一個(gè)調(diào)用者調(diào)用別的過(guò)程時(shí),必須保存調(diào)用在一個(gè)調(diào)用者調(diào)用別的過(guò)程時(shí),必須保存調(diào)用 者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠 再次訪問(wèn)調(diào)用者。再次訪問(wèn)調(diào)用者。 (2) “被調(diào)用者保存被調(diào)用者保存”方法方法 被調(diào)用的過(guò)程必須保存它要用的寄存器,保證被調(diào)用的過(guò)程必須保存它要用的寄存器,保證 不會(huì)破壞過(guò)程調(diào)用者的程序執(zhí)行環(huán)境,并在過(guò)程調(diào)不會(huì)破壞過(guò)程調(diào)用者的程序執(zhí)行環(huán)境,并在過(guò)程調(diào) 用結(jié)束返回時(shí),恢復(fù)這些寄存器的內(nèi)容。用結(jié)束返回時(shí),恢復(fù)這些寄存器的內(nèi)容。 2.3 指
34、令集結(jié)構(gòu)的功能設(shè)計(jì)4181 過(guò)程P1 調(diào)用 返回 R1 R1 保存狀態(tài) 過(guò)程P2 恢復(fù)狀態(tài) 調(diào)用 返回 R1 R1 保存狀態(tài) 過(guò)程P3 恢復(fù)狀態(tài) 執(zhí)行 R1 R1 保存狀態(tài) 過(guò)程P1 執(zhí)行 過(guò)程P2 恢復(fù)狀態(tài) 調(diào)用 返回 (a) 調(diào)用者保存 (b) 被調(diào)用者保存 圖2.6 過(guò)程調(diào)用中寄存器內(nèi)容的兩種保存策略 2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)42812.4 操作數(shù)的類型、表示和大小操作數(shù)類型和操作數(shù)表示是軟硬件主要界面之一 。操作數(shù)類型:操作數(shù)類型:面向應(yīng)用、面向軟件系統(tǒng)所處理的各面向應(yīng)用、面向軟件系統(tǒng)所處理的各 種數(shù)據(jù)結(jié)構(gòu)種數(shù)據(jù)結(jié)構(gòu). .操作數(shù)表示:操作數(shù)表示:硬件結(jié)構(gòu)能夠識(shí)別、指令系統(tǒng)可以直硬件
35、結(jié)構(gòu)能夠識(shí)別、指令系統(tǒng)可以直 接調(diào)用的那些結(jié)構(gòu)。接調(diào)用的那些結(jié)構(gòu)。確定操作數(shù)表示是軟硬件取舍折衷的問(wèn)題。第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)4381 1. 操作數(shù)的類型l 整數(shù)(定點(diǎn))整數(shù)(定點(diǎn))l 浮點(diǎn)浮點(diǎn)l 十進(jìn)制十進(jìn)制l 字符字符2. 操作數(shù)類型的兩種表示方法 (1) 操作數(shù)的類型由操作碼的編碼指定。操作數(shù)的類型由操作碼的編碼指定。 (最常見(jiàn)的一種方法最常見(jiàn)的一種方法) (2) 數(shù)據(jù)可以附上由硬件解釋的標(biāo)記,由這些標(biāo)記數(shù)據(jù)可以附上由硬件解釋的標(biāo)記,由這些標(biāo)記 指定操作數(shù)的類型,從而選擇適當(dāng)?shù)倪\(yùn)算。指定操作數(shù)的類型,從而選擇適當(dāng)?shù)倪\(yùn)算。l 字符串字符串l 向量向量l 堆棧堆棧2.4 操作數(shù)的類型、
36、表示和大小44813. 操作數(shù)大小 l 字節(jié)字節(jié)l 半字(半字(1616位)位)l 單字(單字(3232位)位)l 雙字(雙字(6464位)位)(1) (1) 字符字符: : 用用ASCIIASCII碼表示,為一個(gè)字節(jié)大小。碼表示,為一個(gè)字節(jié)大小。(2) (2) 整數(shù)整數(shù): : 用二進(jìn)制補(bǔ)碼表示,其大小可以是字節(jié)、用二進(jìn)制補(bǔ)碼表示,其大小可以是字節(jié)、 半字或單字。半字或單字。(3) (3) 浮點(diǎn)操作數(shù)浮點(diǎn)操作數(shù): : 單精度浮點(diǎn)(單字大?。┖碗p精單精度浮點(diǎn)(單字大?。┖碗p精 度浮點(diǎn)(雙字大?。┒雀↑c(diǎn)(雙字大?。? . (4) (4) 字符串字符串: : 將字符串中的每個(gè)字符當(dāng)作一個(gè)字節(jié)將字符串
37、中的每個(gè)字符當(dāng)作一個(gè)字節(jié) 來(lái)看待。來(lái)看待。 2.4 操作數(shù)的類型、表示和大小4581(5) (5) 十進(jìn)制操作數(shù)十進(jìn)制操作數(shù) 壓縮十進(jìn)制壓縮十進(jìn)制 用用4 4位二進(jìn)制數(shù)編碼數(shù)字位二進(jìn)制數(shù)編碼數(shù)字0 09 9,然后將,然后將 兩個(gè)十進(jìn)制數(shù)字壓縮在一個(gè)字節(jié)中存儲(chǔ)。兩個(gè)十進(jìn)制數(shù)字壓縮在一個(gè)字節(jié)中存儲(chǔ)。 二進(jìn)制編碼十進(jìn)制二進(jìn)制編碼十進(jìn)制 將十進(jìn)制數(shù)字直接用字符串來(lái)表示將十進(jìn)制數(shù)字直接用字符串來(lái)表示 。4. 訪問(wèn)不同操作數(shù)大小的頻率 測(cè)試統(tǒng)計(jì)測(cè)試統(tǒng)計(jì)SPECint92SPECint92基準(zhǔn)程序和基準(zhǔn)程序和SPECfp92SPECfp92基準(zhǔn)基準(zhǔn) 程序?qū)ψ止?jié)、半字、單字和雙字四種大小的操作數(shù)程序?qū)ψ止?jié)、半
38、字、單字和雙字四種大小的操作數(shù) 訪問(wèn)情況。訪問(wèn)情況。2.4 操作數(shù)的類型、表示和大小74%19%7%69%31%0%0%0%0%20%40%60%80%雙字單字半字字節(jié)整型平均浮點(diǎn)平均基準(zhǔn)程序?qū)鶞?zhǔn)程序?qū)巫趾碗p字單字和雙字的數(shù)據(jù)訪問(wèn)具有較高的頻率。的數(shù)據(jù)訪問(wèn)具有較高的頻率。 選擇操作數(shù)字段的長(zhǎng)度為選擇操作數(shù)字段的長(zhǎng)度為3232位,可以有效支持位,可以有效支持8 8、1616、 3232位整型操作數(shù),以及位整型操作數(shù),以及3232位浮點(diǎn)操作數(shù)的表示。位浮點(diǎn)操作數(shù)的表示。 選擇操作數(shù)字段長(zhǎng)度為選擇操作數(shù)字段長(zhǎng)度為6464位,則更具有一般性。位,則更具有一般性。47812.5 指令集格式的設(shè)計(jì) 指
39、令由指令由操作碼操作碼和和地址碼地址碼組成。組成。 指令集格式的設(shè)計(jì)指令集格式的設(shè)計(jì) 確定操作碼字段和地址碼字段的大小及其組合確定操作碼字段和地址碼字段的大小及其組合 形式,以及各種尋址方式的編碼方法。形式,以及各種尋址方式的編碼方法。 設(shè)計(jì)原則設(shè)計(jì)原則l 盡可能地增加寄存器數(shù)目和尋址方式類型;盡可能地增加寄存器數(shù)目和尋址方式類型;l 充分考慮寄存器字段和尋址方式字段對(duì)指令平均充分考慮寄存器字段和尋址方式字段對(duì)指令平均 字長(zhǎng)的影響,以及它們對(duì)目標(biāo)代碼大小的影響;字長(zhǎng)的影響,以及它們對(duì)目標(biāo)代碼大小的影響;l 設(shè)計(jì)出的指令集格式能夠在具體實(shí)現(xiàn)中容易處理。設(shè)計(jì)出的指令集格式能夠在具體實(shí)現(xiàn)中容易處理。
40、第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)2.5.1 尋址方式的表示方法 1. 兩種表示尋址方式的方法 (1) (1) 將尋址方式編碼于操作碼中,由操作碼在描述指將尋址方式編碼于操作碼中,由操作碼在描述指 令操作的同時(shí),也描述了相應(yīng)操作的尋址方式;令操作的同時(shí),也描述了相應(yīng)操作的尋址方式; (2) (2) 為每個(gè)操作數(shù)設(shè)置一個(gè)為每個(gè)操作數(shù)設(shè)置一個(gè)地址描述符地址描述符,由該地址描,由該地址描 述符表示相應(yīng)操作數(shù)的尋址方式。述符表示相應(yīng)操作數(shù)的尋址方式。 操作碼 地址描述符 1 地址碼字段 1 地址描述符 n 地址碼字段 n 利用地址描述符表示尋址方式的方法 49812.5.1 尋址方式的表示方法 1. 兩種表
41、示尋址方式的方法 (1) (1) 將尋址方式編碼于操作碼中,由操作碼在描述指將尋址方式編碼于操作碼中,由操作碼在描述指 令操作的同時(shí),也描述了相應(yīng)操作的尋址方式;令操作的同時(shí),也描述了相應(yīng)操作的尋址方式; (2) (2) 為每個(gè)操作數(shù)設(shè)置一個(gè)為每個(gè)操作數(shù)設(shè)置一個(gè)地址描述符地址描述符,由該地址描,由該地址描 述符表示相應(yīng)操作數(shù)的尋址方式。述符表示相應(yīng)操作數(shù)的尋址方式。 操作碼 地址描述符 1 地址碼字段 1 地址描述符 n 地址碼字段 n 利用地址描述符表示尋址方式的方法 2.5 指令集格式的設(shè)計(jì)50812. 選擇哪種表示尋址方式的方法? 由兩個(gè)因數(shù)決定:由兩個(gè)因數(shù)決定: (1) (1) 指令集
42、結(jié)構(gòu)所采用的尋址方式種類及其適用范圍指令集結(jié)構(gòu)所采用的尋址方式種類及其適用范圍 (2) (2) 操作碼與尋址方式之間的獨(dú)立程度操作碼與尋址方式之間的獨(dú)立程度 2.5.2 指令集格式的選擇 三種指令集編碼格式三種指令集編碼格式 : :l 變長(zhǎng)編碼格式變長(zhǎng)編碼格式l 固定長(zhǎng)度編碼格式固定長(zhǎng)度編碼格式l 混合型編碼格式混合型編碼格式 2.5 指令集格式的設(shè)計(jì) 操作碼 地址描述符 1 地址碼 1 地址描述符 n 地址碼 n 1. 變長(zhǎng)編碼格式 有效減少指令集結(jié)構(gòu)的平均指令長(zhǎng)度,降低目標(biāo)代碼有效減少指令集結(jié)構(gòu)的平均指令長(zhǎng)度,降低目標(biāo)代碼 的長(zhǎng)度。的長(zhǎng)度。 使得各條指令的字長(zhǎng)和執(zhí)行時(shí)間大不一樣。使得各條指
43、令的字長(zhǎng)和執(zhí)行時(shí)間大不一樣。多數(shù)多數(shù)CISCCISC計(jì)算機(jī)的指令集結(jié)構(gòu)均是采用這種編碼格式。計(jì)算機(jī)的指令集結(jié)構(gòu)均是采用這種編碼格式。2. 固定長(zhǎng)度編碼格式 將操作類型和尋址方式組合編碼在操作碼中,所有指將操作類型和尋址方式組合編碼在操作碼中,所有指 令的長(zhǎng)度是固定唯一的。令的長(zhǎng)度是固定唯一的。 操作碼 地址碼 1 地址碼 2 地址碼 3 5281 操作碼 地址描述符 地址碼 操作碼 地址描述符 1 地址描述符 2 地址碼 操作碼 地址描述符 地址碼 1 地址碼 2 混合型編碼格式 3. 混合型編碼格式 通過(guò)提供一定類型的指令字長(zhǎng),期望能夠兼通過(guò)提供一定類型的指令字長(zhǎng),期望能夠兼 顧降低目標(biāo)代碼
44、長(zhǎng)度和降低譯碼復(fù)雜度兩個(gè)目標(biāo)。顧降低目標(biāo)代碼長(zhǎng)度和降低譯碼復(fù)雜度兩個(gè)目標(biāo)。 2.5 指令集格式的設(shè)計(jì)5381 2.6 DLX指令集結(jié)構(gòu)DLXDLX是一種多元未飽和型指令集結(jié)構(gòu)。是一種多元未飽和型指令集結(jié)構(gòu)。DLXDLX指令集結(jié)構(gòu)的指令集結(jié)構(gòu)的設(shè)計(jì)思想:設(shè)計(jì)思想:l 具有一個(gè)簡(jiǎn)單的具有一個(gè)簡(jiǎn)單的Load/StoreLoad/Store指令集;指令集;l 注重指令流水效率;注重指令流水效率;l 簡(jiǎn)化指令的譯碼;簡(jiǎn)化指令的譯碼;l 高效支持編譯器。高效支持編譯器。 第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)54812.6.1 DLX指令集結(jié)構(gòu)1. DLX中的寄存器 (1) 32(1) 32個(gè)通用寄存器個(gè)通用寄存器
45、 命名:命名:R0R0、R1R1、R31R31 長(zhǎng)度:長(zhǎng)度:3232位位 寄存器寄存器R0R0的值總是為的值總是為0 0。 (2) 32(2) 32個(gè)浮點(diǎn)寄存器個(gè)浮點(diǎn)寄存器 命名:命名:F0F0、F1F1、F31F31 長(zhǎng)度:長(zhǎng)度:3232位位 ( (用來(lái)保存用來(lái)保存3232位的單精度浮點(diǎn)數(shù)位的單精度浮點(diǎn)數(shù) )2.6 DLX指令集結(jié)構(gòu)5581 6464位雙精度浮點(diǎn)數(shù)位雙精度浮點(diǎn)數(shù) 相鄰兩個(gè)浮點(diǎn)寄存器奇偶對(duì)相鄰兩個(gè)浮點(diǎn)寄存器奇偶對(duì)F Fi iF Fi+1i+1 (i = 0,2,4,i = 0,2,4,30,30) 命名命名: : F0 F0、F2F2、F28F28、F30F30 (3) (3)
46、 一些特殊的寄存器一些特殊的寄存器 (比如用來(lái)保存浮點(diǎn)操作結(jié)果信息的浮點(diǎn)狀態(tài)寄存器)(比如用來(lái)保存浮點(diǎn)操作結(jié)果信息的浮點(diǎn)狀態(tài)寄存器) 可以和通用寄存器相互進(jìn)行數(shù)據(jù)傳送??梢院屯ㄓ眉拇嫫飨嗷ミM(jìn)行數(shù)據(jù)傳送。2.6 DLX指令集結(jié)構(gòu)56812. DLX的數(shù)據(jù)類型 DLXDLX提供了多種長(zhǎng)度的整型數(shù)據(jù)和浮點(diǎn)數(shù)據(jù)。提供了多種長(zhǎng)度的整型數(shù)據(jù)和浮點(diǎn)數(shù)據(jù)。 (1)(1) 整型數(shù)據(jù)整型數(shù)據(jù) 有有8 8位、位、1616位和位和3232位多種長(zhǎng)度。位多種長(zhǎng)度。 ( (當(dāng)當(dāng)8 8位和位和1616位整型數(shù)據(jù)載入到寄存器中時(shí),位整型數(shù)據(jù)載入到寄存器中時(shí), 用用0 0或數(shù)據(jù)的符號(hào)位來(lái)填充或數(shù)據(jù)的符號(hào)位來(lái)填充3232位通用寄
47、存器位通用寄存器 中的剩余位。中的剩余位。) ) (2) (2) 浮點(diǎn)數(shù)據(jù)浮點(diǎn)數(shù)據(jù) 有有3232位單精度浮點(diǎn)數(shù)和位單精度浮點(diǎn)數(shù)和6464位雙精度浮點(diǎn)數(shù)。位雙精度浮點(diǎn)數(shù)。 浮點(diǎn)數(shù)據(jù)表示采用的是浮點(diǎn)數(shù)據(jù)表示采用的是IEEE 754IEEE 754標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。2.6 DLX指令集結(jié)構(gòu)57813 3. DLX的尋址方式和數(shù)據(jù)傳送 (1)(1) 尋址方式尋址方式l 寄存器尋址寄存器尋址l 立即值尋址立即值尋址l 偏移尋址偏移尋址l 寄存器間接尋址寄存器間接尋址 (2) (2) 寄存器尋址字段的大小為寄存器尋址字段的大小為5 5位位,用來(lái)表示,用來(lái)表示3232個(gè)個(gè) 通用寄存器或浮點(diǎn)寄存器。通用寄存器或浮點(diǎn)
48、寄存器。 (3) (3) 存儲(chǔ)器地址采用的是高端字節(jié)表示順序,存存儲(chǔ)器地址采用的是高端字節(jié)表示順序,存 儲(chǔ)器按字節(jié)尋址,其地址寬度為儲(chǔ)器按字節(jié)尋址,其地址寬度為3232位位。2.6 DLX指令集結(jié)構(gòu)58814. DLX的指令格式 尋址方式編碼在操作碼中。尋址方式編碼在操作碼中。 指令的字長(zhǎng)指令的字長(zhǎng)3232位位,其中用,其中用6 6位位表示操作碼。表示操作碼。(4) (4) 通過(guò)寄存器(通用寄存器和浮點(diǎn)寄存器)和存通過(guò)寄存器(通用寄存器和浮點(diǎn)寄存器)和存 儲(chǔ)器之間的數(shù)據(jù)傳送操作完成對(duì)存儲(chǔ)器的訪問(wèn)。儲(chǔ)器之間的數(shù)據(jù)傳送操作完成對(duì)存儲(chǔ)器的訪問(wèn)。2.6 DLX指令集結(jié)構(gòu)各種類型指令的格式 I 類型指令
49、 6 5 5 16 操作碼 rs1 rd 立即值 字節(jié)、半字、字的載入和儲(chǔ)存; rdrs1 op 立即值。 R 類型指令 6 5 5 5 11 操作碼 rs1 rs2 rd Func 寄存器寄存器 ALU 操作:rdrs1 func rs2; 函數(shù)對(duì)數(shù)據(jù)的操作進(jìn)行編碼:加、減、; 對(duì)特殊寄存器的讀/寫和移動(dòng)。 J 類型指令 6 26 操作碼 與 PC 相加的偏移量 跳轉(zhuǎn),跳轉(zhuǎn)并鏈接,從異常(exception)處自陷和返回。 圖 2.13 DLX 的指令格式布局 60815.DLX中的操作 (1) (1) 四種類型的操作四種類型的操作l LoadLoad和和StoreStore操作操作l AL
50、UALU操作操作l 分支和跳轉(zhuǎn)操作分支和跳轉(zhuǎn)操作l 浮點(diǎn)操作浮點(diǎn)操作 (2) (2) 約定約定 (1) (1) 符號(hào)符號(hào)“”:”: 數(shù)據(jù)傳送操作數(shù)據(jù)傳送操作 其后附帶一個(gè)下標(biāo)其后附帶一個(gè)下標(biāo)n n,也即,也即“n n” ” 表示傳表示傳送送 一個(gè)一個(gè)n n位數(shù)據(jù)。位數(shù)據(jù)。 (2) (2) 符號(hào)符號(hào)“#”:#”: 兩個(gè)域的串聯(lián)操作兩個(gè)域的串聯(lián)操作2.6 DLX指令集結(jié)構(gòu)6181(3) (3) 域的下標(biāo):域的下標(biāo):表明從該域中選擇某一位。表明從該域中選擇某一位。l 域中位的標(biāo)記是從最高位開(kāi)始標(biāo)記,并且域中位的標(biāo)記是從最高位開(kāi)始標(biāo)記,并且 起始標(biāo)記為起始標(biāo)記為0 0。l 下標(biāo)可以是一個(gè)單獨(dú)的數(shù)字。下
51、標(biāo)可以是一個(gè)單獨(dú)的數(shù)字。l 如如 RegsR4RegsR40 0 : :選擇寄存器選擇寄存器R4R4中內(nèi)容的符號(hào)位。中內(nèi)容的符號(hào)位。l 下標(biāo)也可以是一個(gè)范圍。下標(biāo)也可以是一個(gè)范圍。l 如如 RegsR3RegsR324.3124.31 : :選擇寄存器選擇寄存器R3R3中內(nèi)容中內(nèi)容 的最低一個(gè)字節(jié)。的最低一個(gè)字節(jié)。(4) (4) 上標(biāo):上標(biāo):表示復(fù)制一個(gè)域。表示復(fù)制一個(gè)域。 如如 0 02424可以得到一個(gè)可以得到一個(gè)2424位全為位全為0 0的一個(gè)域。的一個(gè)域。2.6 DLX指令集結(jié)構(gòu)6281(5) (5) 變量變量MemMem:表示存儲(chǔ)器中的一個(gè)數(shù)組,:表示存儲(chǔ)器中的一個(gè)數(shù)組, 存儲(chǔ)器按照
52、字節(jié)尋址。存儲(chǔ)器按照字節(jié)尋址。舉例舉例R8R8和和R10R10:3232位寄存器位寄存器RegsR10RegsR1016.31 16.31 1616(MemRegsR8(MemRegsR80 0) )8 8 # MemRegsR8 MemRegsR8的含義。的含義。3. DLX中的四種操作類型 (1) (1) LoadLoad和和StoreStore操作操作 2.6 DLX指令集結(jié)構(gòu)指令實(shí)例指令名稱含 義LW R1, 30 (R2)載入整型字RegsR1 32 Mem30+RegsR2LW R1, 1000 (R0)載入整型字RegsR1 32 Mem1000+0LB R1, 40 (R3)載
53、入字節(jié)RegsR1 32 (Mem40+RegsR30)24 # Mem40+RegsR3LBU R1, 40 (R3)載入無(wú)符號(hào)字節(jié)RegsR1 32 024 # Mem40+RegsR3LH R1, 40 (R3)載入整型半字RegsR1 32 (Mem40+RegsR30)16 # Mem40+RegsR3 # Mem41+RegsR3LF F0, 50 (R3)載入單精度浮點(diǎn)RegsF0 32 Mem50+RegsR3LD F0, 50 (R2)載入雙精度浮點(diǎn)RegsF0 # RegsF1 64 Mem50+RegsR2SW 500 (R4), R3儲(chǔ)存整型字Mem500+RegsR4
54、 32 RegsR3SF 40 (R3), F0儲(chǔ)存單精度浮點(diǎn)Mem40+RegsR3 32 RegsF0SD 40 (R3), F0儲(chǔ)存雙精度浮點(diǎn)Mem40+RegsR3 32 RegsF0Mem44+RegsR3 32 RegsF1SH 502 (R2), R31儲(chǔ)存整型半字Mem502+RegsR2 16 RegsR3116.31SB 41 (R3), R2儲(chǔ)存整型字節(jié)Mem41+RegsR3 8 RegsR224.31DLX中Load和Store指令實(shí)例 6481(2) (2) ALUALU操作操作l 簡(jiǎn)單的算術(shù)和邏輯運(yùn)算簡(jiǎn)單的算術(shù)和邏輯運(yùn)算l 寄存器比較指令(寄存器比較指令( , ,
55、 , , , )指令實(shí)例指令名稱 含 義Add R1, R2, R3加RegsR1 RegsR2 + RegsR3ADDI R1, R2, #3和立即值相加RegsR1 RegsR2 + 3LHI R1, #42載入高位立即值RegsR1 42 # 016SLLI R1, R2, #5邏輯左移的立即值形式RegsR1 RegsR2 5SLT R1, R2, R3設(shè)置小于if (RegsR2 RegsR3) RegsR1 1 else RegsR1 0ALU指令實(shí)例 2.6 DLX指令集結(jié)構(gòu)6581(3) (3) 分支和跳轉(zhuǎn)操作分支和跳轉(zhuǎn)操作 根據(jù)描述目標(biāo)地址的方法和是否鏈接可以將根據(jù)描述目標(biāo)地
56、址的方法和是否鏈接可以將 跳轉(zhuǎn)操作指令分為四種類型。跳轉(zhuǎn)操作指令分為四種類型。 其中:其中:l 兩種類型的跳轉(zhuǎn)指令用帶符號(hào)位的兩種類型的跳轉(zhuǎn)指令用帶符號(hào)位的2626位位 偏移量加上程序計(jì)數(shù)器的值來(lái)確定跳轉(zhuǎn)偏移量加上程序計(jì)數(shù)器的值來(lái)確定跳轉(zhuǎn) 的目標(biāo)地址;的目標(biāo)地址;l 另外兩種類型的跳轉(zhuǎn)指令則指定一個(gè)寄另外兩種類型的跳轉(zhuǎn)指令則指定一個(gè)寄 存器,由寄存器中的內(nèi)容決定跳轉(zhuǎn)的目存器,由寄存器中的內(nèi)容決定跳轉(zhuǎn)的目 標(biāo)地址。標(biāo)地址。2.6 DLX指令集結(jié)構(gòu)6681 跳轉(zhuǎn)有兩種類型跳轉(zhuǎn)有兩種類型l 簡(jiǎn)單跳轉(zhuǎn)簡(jiǎn)單跳轉(zhuǎn)l 跳轉(zhuǎn)并鏈接跳轉(zhuǎn)并鏈接(用于過(guò)程調(diào)用)(用于過(guò)程調(diào)用) 返回一個(gè)地址,也即將下一條順序指令返
57、回一個(gè)地址,也即將下一條順序指令 地址(返回地址)保存在寄存器地址(返回地址)保存在寄存器R31R31中。中。 所有分支指令均是條件分支指令。所有分支指令均是條件分支指令。 分支目標(biāo)地址由一個(gè)帶符號(hào)的分支目標(biāo)地址由一個(gè)帶符號(hào)的2626位偏移量加位偏移量加 上程序計(jì)數(shù)器的值來(lái)確定。上程序計(jì)數(shù)器的值來(lái)確定。2.6 DLX指令集結(jié)構(gòu)6781指令實(shí)例指令名稱含 義J name跳轉(zhuǎn)PC name; (PC+4)-225) name (PC+4)+225)JAL name跳轉(zhuǎn)并鏈接RegsR31 PC+4; PC name;(PC+4)-225) name (PC+4)+225)JALR R2寄存器型跳轉(zhuǎn)
58、并鏈接RegsR31 PC+4; PC RegsR2;JR R3寄存器型跳轉(zhuǎn)PC RegsR3;BEQZ R4 ,name“等于0”分支if (RegsR4=0) PC name;(PC+4)-215) name (PC+4)+215)BNEZ R4 , name“不等于0”分支if (RegsR4!=0) PC name;(PC+4)-215) name (PC+4)+215)典型的分支和跳轉(zhuǎn)指令 2.6 DLX指令集結(jié)構(gòu)6881(4) (4) 浮點(diǎn)操作浮點(diǎn)操作 浮點(diǎn)操作:浮點(diǎn)操作:加、減、乘、除。加、減、乘、除。 (后綴(后綴D D:雙精度浮點(diǎn)操作:雙精度浮點(diǎn)操作 后綴后綴F F:?jiǎn)尉雀?/p>
59、點(diǎn)操作):?jiǎn)尉雀↑c(diǎn)操作) 下表列出了下表列出了DLXDLX所有指令及其含義。所有指令及其含義。 各種指令使用頻率測(cè)試統(tǒng)計(jì)結(jié)果。各種指令使用頻率測(cè)試統(tǒng)計(jì)結(jié)果。 (SPECint92SPECint92和和SPECfp92SPECfp92基準(zhǔn)程序)基準(zhǔn)程序)2.6 DLX指令集結(jié)構(gòu)6981DLX中的所有指令及其含義指令類型操作碼含 義 數(shù)據(jù)傳送LB,LBU,SB載入字節(jié),載入無(wú)符號(hào)字節(jié),儲(chǔ)存字節(jié)LH,LHU,SH載入半字,載入無(wú)符號(hào)半字,儲(chǔ)存半字LW,SW載入字,儲(chǔ)存字LF,LD,SF,SD載入單精度浮點(diǎn),載入雙精度浮點(diǎn),儲(chǔ)存單精度浮點(diǎn),儲(chǔ)存雙精度浮點(diǎn)MOVI2S,MOVS2I將通用寄存器中的內(nèi)容
60、移入特殊寄存器,將特殊寄存器中的內(nèi)容移入通用寄存器MOVF,MOVD將一個(gè)單精度/雙精度浮點(diǎn)寄存器的內(nèi)容拷貝到另一個(gè)單精度/雙精度浮點(diǎn)寄存器MOVFP2I,MOVI2FP將32位浮點(diǎn)寄存器中的內(nèi)容移入整型寄存器,將32位整型寄存器中的內(nèi)容移入浮點(diǎn)寄存器2.6 DLX指令集結(jié)構(gòu)7081指令類型操作碼含 義 算術(shù)/邏輯ADD,ADDI,ADDU,ADDUI帶符號(hào)加,帶符號(hào)立即值加,無(wú)符號(hào)加,無(wú)符號(hào)立即值加SUB,SUBI,SUBU,SUBUI帶符號(hào)減,帶符號(hào)立即值減,無(wú)符號(hào)減,無(wú)符號(hào)立即值減MULT,MULTU,DIV,DIVU帶符號(hào)乘,無(wú)符號(hào)乘,帶符號(hào)除,無(wú)符號(hào)除AND,ANDI與,和立即值與O
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 需求測(cè)試的重要性分析試題及答案
- 商場(chǎng)商鋪轉(zhuǎn)讓合同協(xié)議書
- 轉(zhuǎn)讓車合同協(xié)議書怎么寫
- 計(jì)算機(jī)二級(jí)MySQL探索之旅及試題及答案
- 2025年C語(yǔ)言必要知識(shí)點(diǎn)詳解試題及答案
- 買賣屋地合同協(xié)議書模板
- 掌握Access函數(shù)的試題及答案
- 嵌入式系統(tǒng)開(kāi)發(fā)熱點(diǎn)試題及答案
- 用戶故事的編寫與管理的試題及答案
- 充電樁使用合同協(xié)議書
- 2025年合肥交通投資控股集團(tuán)有限公司第一批次招聘38人筆試參考題庫(kù)附帶答案詳解
- 浙江開(kāi)放大學(xué)2025年《社會(huì)保障學(xué)》形考任務(wù)4答案
- JJF1033-2023計(jì)量標(biāo)準(zhǔn)考核規(guī)范
- 頸椎病課件完整版
- 2023高中學(xué)業(yè)水平合格性考試歷史重點(diǎn)知識(shí)點(diǎn)歸納總結(jié)(復(fù)習(xí)必背)
- (word完整版)污水處理廠安全評(píng)價(jià)報(bào)告
- DB50∕T 867.6-2019 安全生產(chǎn)技術(shù)規(guī)范 第6部分:黑色金屬冶煉企業(yè)
- 新產(chǎn)品開(kāi)發(fā)流程課件
- 高中語(yǔ)文部編版選擇性必修下冊(cè)第四單元 單元學(xué)習(xí)導(dǎo)航 課件 (8張PPT)
- 化妝品原料-PPT課件
- 國(guó)防教育基地建設(shè)項(xiàng)目商業(yè)計(jì)劃書寫作模板招商-融資
評(píng)論
0/150
提交評(píng)論