版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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è)因素對計(jì)算機(jī)指令集結(jié)構(gòu)進(jìn)行分類:對計(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中用來存儲(chǔ)操作數(shù)的存儲(chǔ)單元主要有:2. 指令中的操作數(shù)可以顯式給出,也可以隱式地給出。3. CPU對操作數(shù)的不同存取方式 l 堆棧堆棧l 累加器累加器l 一組寄存器一組寄存器 CPUCPU中操作數(shù)的存儲(chǔ)方法,中操作數(shù)的存儲(chǔ)方法,是各種指令集結(jié)構(gòu)是各種指令集結(jié)構(gòu)之間最主要的區(qū)別所在。之間最主要的區(qū)別所在。2.1 指令集結(jié)構(gòu)的分類581 CPU對操作數(shù)的不同存取方式 CPU提供的暫存器每條ALU指令顯式表示的操作數(shù)個(gè)數(shù)運(yùn)算結(jié)果的目的地訪問顯式操作數(shù)的過程堆棧堆棧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)算過程中
4、一直被保持。的值在運(yùn)算過程中一直被保持。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ì)算的簡單模型;指令短小。簡單模型;指令短小。 堆棧不能被隨機(jī)訪問,從而很難生堆棧不能被隨機(jī)訪問,從而很難生成
5、有效代碼。同時(shí),由于堆棧是瓶頸,成有效代碼。同時(shí),由于堆棧是瓶頸,所以很難被高效地實(shí)現(xiàn)。所以很難被高效地實(shí)現(xiàn)。累加器型累加器型 減小了機(jī)器的內(nèi)部減小了機(jī)器的內(nèi)部狀態(tài);指令短小。狀態(tài);指令短小。 由于累加器是唯一的暫存器,這種由于累加器是唯一的暫存器,這種機(jī)器的存儲(chǔ)器通信開銷最大。機(jī)器的存儲(chǔ)器通信開銷最大。寄存器型寄存器型 是代碼生成最一般是代碼生成最一般的模型。的模型。 所有操作數(shù)均需命名,且顯式表示,所有操作數(shù)均需命名,且顯式表示,因而指令比較長。因而指令比較長。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) 寄存器可以用來存放變量。寄存器可以用來存放變量。 減少存儲(chǔ)器的通信量,加快程序的執(zhí)行速度。減少存儲(chǔ)器的通信量,加快程序的執(zhí)行速度。 (因?yàn)榧拇嫫鞅却鎯?chǔ)器快)(因?yàn)榧拇嫫鞅却鎯?chǔ)器快) 可以用更少的地址位來尋址寄存器,從而可可以用更少的地址位來尋址寄存器,從而可 以有效改進(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 為表達(dá)式求值保留一些寄存器為表達(dá)式求值保留一些寄存器l 為傳遞參數(shù)保留一些寄存器為傳遞參數(shù)保留一些寄存器l 用剩下的寄存器來保存變量用剩下的寄存器來保存變量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ǔ)器來尋指令中,有多少個(gè)操作數(shù)可以用存儲(chǔ)器來尋 址,也即有多少個(gè)存儲(chǔ)器操作數(shù)?址,也即有多少個(gè)存儲(chǔ)器操作數(shù)? 一般來說,一般來說,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é)構(gòu)的常見的三種通用寄存器型指令集結(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) 簡單,指令字長固簡單,指令字長固定,是一種簡單的代定,是一種簡單的代碼生成模型,各種指碼生成模型,各種指令的執(zhí)行時(shí)鐘周期數(shù)令的執(zhí)行時(shí)鐘周期數(shù)相近。相近。 和指令中含有對存儲(chǔ)器操作數(shù)訪問和指令中含有對存儲(chǔ)器操作數(shù)訪問的結(jié)構(gòu)相比,指令條數(shù)多,因而其的結(jié)構(gòu)相比,指令條數(shù)多,因而其目標(biāo)代碼較大。目標(biāo)代碼較大。 寄存器存寄存器存儲(chǔ)器型儲(chǔ)器型(1,2)
11、 可以直接對存儲(chǔ)器操可以直接對存儲(chǔ)器操作數(shù)進(jìn)行訪問,容易作數(shù)進(jìn)行訪問,容易對指令進(jìn)行編碼,且對指令進(jìn)行編碼,且其目標(biāo)代碼較小。其目標(biāo)代碼較小。 指令中的操作數(shù)類型不同。在一指令中的操作數(shù)類型不同。在一條指令中同時(shí)對一個(gè)寄存器操作數(shù)條指令中同時(shí)對一個(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、緊密的編是一種最緊密的編碼方式,無需碼方式,無需“浪費(fèi)浪費(fèi)”寄存器保存變量。寄存器保存變量。 指令字長多種多樣。每條指令的指令字長多種多樣。每條指令的執(zhí)行時(shí)鐘周期數(shù)也大不一樣,對存執(zhí)行時(shí)鐘周期數(shù)也大不一樣,對存儲(chǔ)器的頻繁訪問將導(dǎo)致存儲(chǔ)器訪問儲(chǔ)器的頻繁訪問將導(dǎo)致存儲(chǔ)器訪問瓶頸問題。瓶頸問題。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直接尋址或絕對尋直接尋址或絕對尋址址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)記是對偏移量大小進(jìn)行軸的標(biāo)記是對偏移量大小進(jìn)行l(wèi)oglog2 2()運(yùn))運(yùn)算算所得,也就是偏移量字段的位數(shù)。所得,也就是偏移量字段的位數(shù)。 0%5%10%15%20%25%30%0123456789101112131415SPECint92測量統(tǒng)計(jì)結(jié)果SPECfp92測量統(tǒng)計(jì)結(jié)果占偏移尋址方式的百分比2.2 尋址技術(shù)2081 程序所使用的偏移量大小分布十分廣泛;程序所使用的偏移量大小分布十分廣泛; 較小的偏移量和較大的偏移量均占有相當(dāng)大的比例;較小的偏移量和較大
17、的偏移量均占有相當(dāng)大的比例; 將偏移量字段的大小設(shè)置為將偏移量字段的大小設(shè)置為12121616位位。這種長度可。這種長度可 以支持上述以支持上述75759999基于偏移尋址方式的數(shù)據(jù)訪基于偏移尋址方式的數(shù)據(jù)訪 問中偏移量大小的表示。問中偏移量大小的表示。 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)、過程調(diào)用和返
19、回、自陷等。分支、跳轉(zhuǎn)、過程調(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ì)問題指令集結(jié)構(gòu)功能設(shè)計(jì)問題) ) 兩種截然不同的方向:兩種截然不同的方向:
20、 復(fù)雜指令集計(jì)算機(jī)(復(fù)雜指令集計(jì)算機(jī)(CISCCISC) 強(qiáng)化指令功能,實(shí)現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。強(qiáng)化指令功能,實(shí)現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。 精簡指令集計(jì)算機(jī)(精簡指令集計(jì)算機(jī)(RISCRISC) 盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到 簡化實(shí)現(xiàn),提高性能的目的。簡化實(shí)現(xiàn),提高性能的目的。 當(dāng)今指令集結(jié)構(gòu)功能設(shè)計(jì)的一個(gè)主要趨勢。當(dāng)今指令集結(jié)構(gòu)功能設(shè)計(jì)的一個(gè)主要趨勢。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ìn)指令系統(tǒng)面向高級語言和編譯程序改進(jìn)指令系統(tǒng) ( (1) 1) 增加對高級語言和編譯系統(tǒng)支持的指令功能增加對高級語言和編譯系統(tǒng)支持的指令功能 對源程序中各種高級語言語句進(jìn)行使用頻對源程序中各種高級語言語句進(jìn)行使用頻 度的統(tǒng)計(jì)與分析,對于使用頻度高的語句,度的統(tǒng)
22、計(jì)與分析,對于使用頻度高的語句, 可以設(shè)置專門的指令或采取措施增加相應(yīng)可以設(shè)置專門的指令或采取措施增加相應(yīng) 令的功能,以提高其編譯速度和執(zhí)行速度。令的功能,以提高其編譯速度和執(zhí)行速度。 從面向編譯程序,尤其是從優(yōu)化代碼生成從面向編譯程序,尤其是從優(yōu)化代碼生成 的角度進(jìn)行考慮,增加指令集結(jié)構(gòu)的規(guī)整的角度進(jìn)行考慮,增加指令集結(jié)構(gòu)的規(guī)整 性來改進(jìn)指令系統(tǒng)。性來改進(jìn)指令系統(tǒng)。2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)2881規(guī)整性:規(guī)整性:沒有或盡可能減少例外的情況和特殊的沒有或盡可能減少例外的情況和特殊的 應(yīng)用,以及所有運(yùn)算都能對稱、均勻地應(yīng)用,以及所有運(yùn)算都能對稱、均勻地 在存儲(chǔ)器單元或寄存器單元之間進(jìn)行。在存
23、儲(chǔ)器單元或寄存器單元之間進(jìn)行。(2) (2) 高級語言計(jì)算機(jī)指令系統(tǒng)高級語言計(jì)算機(jī)指令系統(tǒng) 面向高級語言面向高級語言(HL)(HL)的機(jī)器的機(jī)器 縮小機(jī)器語言和高級語言的語義差距??s小機(jī)器語言和高級語言的語義差距。 間接執(zhí)行型高級語言機(jī)器間接執(zhí)行型高級語言機(jī)器 高級語言和機(jī)器語言是一一對應(yīng)的,用匯高級語言和機(jī)器語言是一一對應(yīng)的,用匯 編的方法編的方法( (可以用軟件實(shí)現(xiàn),也可以用硬件實(shí)可以用軟件實(shí)現(xiàn),也可以用硬件實(shí) 現(xiàn)現(xiàn)) )把高級語言源程序翻譯成機(jī)器語言程序。把高級語言源程序翻譯成機(jī)器語言程序。2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)2981 直接執(zhí)行型高級語言機(jī)器直接執(zhí)行型高級語言機(jī)器 高級語言就作為
24、機(jī)器語言,直接由硬件或高級語言就作為機(jī)器語言,直接由硬件或 固件對高級語言源程序的語句逐條進(jìn)行解釋以固件對高級語言源程序的語句逐條進(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)在對以下方面的支持主要表現(xiàn)在對以下方面的支持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)和訪問方式轉(zhuǎn)移的指
25、令支持系統(tǒng)工作狀態(tài)和訪問方式轉(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ù)雜性帶來了計(jì)算機(jī)體系結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來了計(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ù))來提高系統(tǒng)的性能。構(gòu)技術(shù)(如
27、流水技術(shù))來提高系統(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)更加簡單、更加合理和使得計(jì)算機(jī)體系結(jié)構(gòu)更加簡單、更加合理和 更加有效,克服更加有效,克服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)盡可能簡單,并在一個(gè)機(jī)每條指令的功能應(yīng)盡可能簡單,并在一個(gè)機(jī) 器周期內(nèi)完成;器周期內(nèi)完成;l 所有指令長度均相同;所有指令長度均相同;2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)3581l 只有只有Load
29、Load和和StoreStore操作指令才訪問存儲(chǔ)器操作指令才訪問存儲(chǔ)器; ;l 其它指令操作均在寄存器之間進(jìn)行;其它指令操作均在寄存器之間進(jìn)行;l 以簡單有效的方式支持高級語言。以簡單有效的方式支持高級語言。2.3.3 控制指令 (1) (1) 跳轉(zhuǎn)跳轉(zhuǎn): : 當(dāng)控制指令為無條件改變控制流時(shí),當(dāng)控制指令為無條件改變控制流時(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 過程調(diào)用過程調(diào)用l 過程返回過程返回 (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ù)測試分支條件的方法優(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é)果測試條件寄存根據(jù)比較結(jié)果測試條件寄存器。器。 簡單簡單 占用了一個(gè)寄存器。占用了一個(gè)寄存器。 比較且比較且分支分支比較操作是分支指令的一部比較操作是分支指令的一部分,通常這種比較是受一定分,通常這種比較是受一定限制的。限制的。一條指令完成一條指令完成了兩條指令的了兩條指令的功能。功能。 分支指令的操作增多。分支指令的操作增多。2.
32、常用的三種表示分支條件的技術(shù)及其優(yōu)缺點(diǎn) 39813. 分支目標(biāo)地址的表示 PCPC相對尋址:相對尋址:在指令中提供一個(gè)和程序計(jì)數(shù)在指令中提供一個(gè)和程序計(jì)數(shù) 器(器(PCPC)的值相加的偏移量。)的值相加的偏移量。 (1) (1) 有效地縮短指令中表示目標(biāo)地址的字段的有效地縮短指令中表示目標(biāo)地址的字段的 長度;長度; (2) (2) 使得代碼在執(zhí)行時(shí)與它被載入的位置無關(guān)。使得代碼在執(zhí)行時(shí)與它被載入的位置無關(guān)。 關(guān)鍵問題是:關(guān)鍵問題是: 轉(zhuǎn)移目標(biāo)離當(dāng)前控制指令的偏移量有多大?轉(zhuǎn)移目標(biāo)離當(dāng)前控制指令的偏移量有多大? 2.3 指令集結(jié)構(gòu)的功能設(shè)計(jì)40814. 過程調(diào)用和返回的狀態(tài)保存 兩種方法來保存寄
33、存器的內(nèi)容:兩種方法來保存寄存器的內(nèi)容: (1) (1) “調(diào)用者保存調(diào)用者保存”方法方法 在一個(gè)調(diào)用者調(diào)用別的過程時(shí),必須保存調(diào)用在一個(gè)調(diào)用者調(diào)用別的過程時(shí),必須保存調(diào)用 者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠 再次訪問調(diào)用者。再次訪問調(diào)用者。 (2) “被調(diào)用者保存被調(diào)用者保存”方法方法 被調(diào)用的過程必須保存它要用的寄存器,保證被調(diào)用的過程必須保存它要用的寄存器,保證 不會(huì)破壞過程調(diào)用者的程序執(zhí)行環(huán)境,并在過程調(diào)不會(huì)破壞過程調(diào)用者的程序執(zhí)行環(huán)境,并在過程調(diào) 用結(jié)束返回時(shí),恢復(fù)這些寄存器的內(nèi)容。用結(jié)束返回時(shí),恢復(fù)這些寄存器的內(nèi)容。 2.3 指
34、令集結(jié)構(gòu)的功能設(shè)計(jì)4181 過程P1 調(diào)用 返回 R1 R1 保存狀態(tài) 過程P2 恢復(fù)狀態(tài) 調(diào)用 返回 R1 R1 保存狀態(tài) 過程P3 恢復(fù)狀態(tài) 執(zhí)行 R1 R1 保存狀態(tài) 過程P1 執(zhí)行 過程P2 恢復(fù)狀態(tài) 調(diào)用 返回 (a) 調(diào)用者保存 (b) 被調(diào)用者保存 圖2.6 過程調(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ù)表示是軟硬件取舍折衷的問題。第二章 計(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ù)的類型由操作碼的編碼指定。 (最常見的一種方法最常見的一種方法) (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é) 來看待。來看待。 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ù)字直接用字符串來表示將十進(jìn)制數(shù)字直接用字符串來表示 。4. 訪問不同操作數(shù)大小的頻率 測試統(tǒng)計(jì)測試統(tǒng)計(jì)SPECint92SPECint92基準(zhǔn)程序和基準(zhǔn)程序和SPECfp92SPECfp92基準(zhǔn)基準(zhǔn) 程序?qū)ψ止?jié)、半字、單字和雙字四種大小的操作數(shù)程序?qū)ψ止?jié)、半
38、字、單字和雙字四種大小的操作數(shù) 訪問情況。訪問情況。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ù)訪問具有較高的頻率。的數(shù)據(jù)訪問具有較高的頻率。 選擇操作數(shù)字段的長度為選擇操作數(shù)字段的長度為3232位,可以有效支持位,可以有效支持8 8、1616、 3232位整型操作數(shù),以及位整型操作數(shù),以及3232位浮點(diǎn)操作數(shù)的表示。位浮點(diǎn)操作數(shù)的表示。 選擇操作數(shù)字段長度為選擇操作數(shù)字段長度為6464位,則更具有一般性。位,則更具有一般性。47812.5 指令集格式的設(shè)計(jì) 指
39、令由指令由操作碼操作碼和和地址碼地址碼組成。組成。 指令集格式的設(shè)計(jì)指令集格式的設(shè)計(jì) 確定操作碼字段和地址碼字段的大小及其組合確定操作碼字段和地址碼字段的大小及其組合 形式,以及各種尋址方式的編碼方法。形式,以及各種尋址方式的編碼方法。 設(shè)計(jì)原則設(shè)計(jì)原則l 盡可能地增加寄存器數(shù)目和尋址方式類型;盡可能地增加寄存器數(shù)目和尋址方式類型;l 充分考慮寄存器字段和尋址方式字段對指令平均充分考慮寄存器字段和尋址方式字段對指令平均 字長的影響,以及它們對目標(biāo)代碼大小的影響;字長的影響,以及它們對目標(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 變長編碼格式變長編碼格式l 固定長度編碼格式固定長度編碼格式l 混合型編碼格式混合型編碼格式 2.5 指令集格式的設(shè)計(jì) 操作碼 地址描述符 1 地址碼 1 地址描述符 n 地址碼 n 1. 變長編碼格式 有效減少指令集結(jié)構(gòu)的平均指令長度,降低目標(biāo)代碼有效減少指令集結(jié)構(gòu)的平均指令長度,降低目標(biāo)代碼 的長度。的長度。 使得各條指令的字長和執(zhí)行時(shí)間大不一樣。使得各條指
43、令的字長和執(zhí)行時(shí)間大不一樣。多數(shù)多數(shù)CISCCISC計(jì)算機(jī)的指令集結(jié)構(gòu)均是采用這種編碼格式。計(jì)算機(jī)的指令集結(jié)構(gòu)均是采用這種編碼格式。2. 固定長度編碼格式 將操作類型和尋址方式組合編碼在操作碼中,所有指將操作類型和尋址方式組合編碼在操作碼中,所有指 令的長度是固定唯一的。令的長度是固定唯一的。 操作碼 地址碼 1 地址碼 2 地址碼 3 5281 操作碼 地址描述符 地址碼 操作碼 地址描述符 1 地址描述符 2 地址碼 操作碼 地址描述符 地址碼 1 地址碼 2 混合型編碼格式 3. 混合型編碼格式 通過提供一定類型的指令字長,期望能夠兼通過提供一定類型的指令字長,期望能夠兼 顧降低目標(biāo)代碼
44、長度和降低譯碼復(fù)雜度兩個(gè)目標(biāo)。顧降低目標(biāo)代碼長度和降低譯碼復(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è)簡單的具有一個(gè)簡單的Load/StoreLoad/Store指令集;指令集;l 注重指令流水效率;注重指令流水效率;l 簡化指令的譯碼;簡化指令的譯碼;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 長度:長度:3232位位 寄存器寄存器R0R0的值總是為的值總是為0 0。 (2) 32(2) 32個(gè)浮點(diǎn)寄存器個(gè)浮點(diǎn)寄存器 命名:命名:F0F0、F1F1、F31F31 長度:長度:3232位位 ( (用來保存用來保存3232位的單精度浮點(diǎn)數(shù)位的單精度浮點(diǎn)數(shù) )2.6 DLX指令集結(jié)構(gòu)5581 6464位雙精度浮點(diǎn)數(shù)位雙精度浮點(diǎn)數(shù) 相鄰兩個(gè)浮點(diǎn)寄存器奇偶對相鄰兩個(gè)浮點(diǎn)寄存器奇偶對F Fi iF Fi+1i+1 (i = 0,2,4,i = 0,2,4,30,30) 命名命名: : F0 F0、F2F2、F28F28、F30F30 (3) (3)
46、 一些特殊的寄存器一些特殊的寄存器 (比如用來保存浮點(diǎn)操作結(jié)果信息的浮點(diǎn)狀態(tà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提供了多種長度的整型數(shù)據(jù)和浮點(diǎn)數(shù)據(jù)。提供了多種長度的整型數(shù)據(jù)和浮點(diǎn)數(shù)據(jù)。 (1)(1) 整型數(shù)據(jù)整型數(shù)據(jù) 有有8 8位、位、1616位和位和3232位多種長度。位多種長度。 ( (當(dāng)當(dāng)8 8位和位和1616位整型數(shù)據(jù)載入到寄存器中時(shí),位整型數(shù)據(jù)載入到寄存器中時(shí), 用用0 0或數(shù)據(jù)的符號位來填充或數(shù)據(jù)的符號位來填充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位位,用來表示,用來表示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的指令格式 尋址方式編碼在操作碼中。尋址方式編碼在操作碼中。 指令的字長指令的字長3232位位,其中用,其中用6 6位位表示操作碼。表示操作碼。(4) (4) 通過寄存器(通用寄存器和浮點(diǎn)寄存器)和存通過寄存器(通用寄存器和浮點(diǎn)寄存器)和存 儲(chǔ)器之間的數(shù)據(jù)傳送操作完成對存儲(chǔ)器的訪問。儲(chǔ)器之間的數(shù)據(jù)傳送操作完成對存儲(chǔ)器的訪問。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ù)對數(shù)據(jù)的操作進(jìn)行編碼:加、減、; 對特殊寄存器的讀/寫和移動(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) 符號符號“”:”: 數(shù)據(jù)傳送操作數(shù)據(jù)傳送操作 其后附帶一個(gè)下標(biāo)其后附帶一個(gè)下標(biāo)n n,也即,也即“n n” ” 表示傳表示傳送送 一個(gè)一個(gè)n n位數(shù)據(jù)。位數(shù)據(jù)。 (2) (2) 符號符號“#”:#”: 兩個(gè)域的串聯(lián)操作兩個(gè)域的串聯(lián)操作2.6 DLX指令集結(jié)構(gòu)6181(3) (3) 域的下標(biāo):域的下標(biāo):表明從該域中選擇某一位。表明從該域中選擇某一位。l 域中位的標(biāo)記是從最高位開始標(biāo)記,并且域中位的標(biāo)記是從最高位開始標(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)容的符號位。中內(nèi)容的符號位。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)載入無符號字節(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 簡單的算術(shù)和邏輯運(yù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)指令用帶符號位的兩種類型的跳轉(zhuǎn)指令用帶符號位的2626位位 偏移量加上程序計(jì)數(shù)器的值來確定跳轉(zhuǎn)偏移量加上程序計(jì)數(shù)器的值來確定跳轉(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 簡單跳轉(zhuǎn)簡單跳轉(zhuǎn)l 跳轉(zhuǎn)并鏈接跳轉(zhuǎn)并鏈接(用于過程調(diào)用)(用于過程調(diào)用) 返回一個(gè)地址,也即將下一條順序指令返
57、回一個(gè)地址,也即將下一條順序指令 地址(返回地址)保存在寄存器地址(返回地址)保存在寄存器R31R31中。中。 所有分支指令均是條件分支指令。所有分支指令均是條件分支指令。 分支目標(biāo)地址由一個(gè)帶符號的分支目標(biāo)地址由一個(gè)帶符號的2626位偏移量加位偏移量加 上程序計(jì)數(shù)器的值來確定。上程序計(jì)數(shù)器的值來確定。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:單精度浮
59、點(diǎn)操作):單精度浮點(diǎn)操作) 下表列出了下表列出了DLXDLX所有指令及其含義。所有指令及其含義。 各種指令使用頻率測試統(tǒng)計(jì)結(jié)果。各種指令使用頻率測試統(tǒng)計(jì)結(jié)果。 (SPECint92SPECint92和和SPECfp92SPECfp92基準(zhǔn)程序)基準(zhǔn)程序)2.6 DLX指令集結(jié)構(gòu)6981DLX中的所有指令及其含義指令類型操作碼含 義 數(shù)據(jù)傳送LB,LBU,SB載入字節(jié),載入無符號字節(jié),儲(chǔ)存字節(jié)LH,LHU,SH載入半字,載入無符號半字,儲(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帶符號加,帶符號立即值加,無符號加,無符號立即值加SUB,SUBI,SUBU,SUBUI帶符號減,帶符號立即值減,無符號減,無符號立即值減MULT,MULTU,DIV,DIVU帶符號乘,無符號乘,帶符號除,無符號除AND,ANDI與,和立即值與O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年金融機(jī)構(gòu)電腦系統(tǒng)采購合同
- 2024收養(yǎng)協(xié)議書范本:收養(yǎng)兒童法律援助服務(wù)3篇
- 2024年度打樁機(jī)租賃與節(jié)能環(huán)保服務(wù)合同3篇
- 2024版充電樁安裝協(xié)議書
- 2024版冠梁承包合同
- 提升保險(xiǎn)資金利用效率的策略
- 2024年簡明短期汽車租賃合同范例版B版
- 2024年物業(yè)租賃合同(商業(yè)用途)
- 2024年視頻廣告行業(yè)市場發(fā)展現(xiàn)狀及投資方向研究報(bào)告
- 2025版電機(jī)維修及售后服務(wù)保障合同2篇
- 第二章 粉體制備
- 預(yù)應(yīng)力空心板計(jì)算
- 2023年開封糧食產(chǎn)業(yè)集團(tuán)有限公司招聘筆試真題
- 2024年全國“紀(jì)檢監(jiān)察”業(yè)務(wù)相關(guān)知識(shí)考試題庫(附含答案)
- 2025年社區(qū)工作者考試試題庫及答案
- 期末檢測卷(三)2024-2025學(xué)年人教PEP版英語四年級上冊(含答案無聽力原文無聽力音頻)
- 2024-2030年中國兒童內(nèi)衣行業(yè)運(yùn)營狀況及投資前景預(yù)測報(bào)告
- 吉首大學(xué)《高等數(shù)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 打印和復(fù)印服務(wù)協(xié)議
- 針灸習(xí)題庫(附參考答案)
- 前置胎盤手術(shù)配合
評論
0/150
提交評論