chap2-計算機指令集結(jié)構(gòu)_第1頁
chap2-計算機指令集結(jié)構(gòu)_第2頁
chap2-計算機指令集結(jié)構(gòu)_第3頁
chap2-計算機指令集結(jié)構(gòu)_第4頁
chap2-計算機指令集結(jié)構(gòu)_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1812812.1 指令集結(jié)構(gòu)的分類2.2 尋址技術(shù)2.3 指令集結(jié)構(gòu)的功能設(shè)計2.4 操作數(shù)的類型、表示和大小2.5 指令集格式的設(shè)計2.6 DLX指令集結(jié)構(gòu)第二章 計算機指令集結(jié)構(gòu)設(shè)計3812.1 指令集結(jié)構(gòu)的分類2.1.1 指令集結(jié)構(gòu)分類根據(jù)根據(jù)五個因素五個因素對計算機指令集結(jié)構(gòu)進行分類:對計算機指令集結(jié)構(gòu)進行分類: (1)(1) 在在CPUCPU中操作數(shù)的存儲方法中操作數(shù)的存儲方法(2) (2) 指令中顯式表示的操作數(shù)個數(shù)指令中顯式表示的操作數(shù)個數(shù) (3) (3) 操作數(shù)的尋址方式操作數(shù)的尋址方式 (4) (4) 指令集所提供的操作類型指令集所提供的操作類型 (5) (5) 操作數(shù)的類

2、型和大小操作數(shù)的類型和大小 第二章 計算機指令集結(jié)構(gòu)設(shè)計4811. CPU中用來存儲操作數(shù)的存儲單元主要有:2. 指令中的操作數(shù)可以顯式給出,也可以隱式地給出。3. CPU對操作數(shù)的不同存取方式 l 堆棧堆棧l 累加器累加器l 一組寄存器一組寄存器 CPUCPU中操作數(shù)的存儲方法,中操作數(shù)的存儲方法,是各種指令集結(jié)構(gòu)是各種指令集結(jié)構(gòu)之間最主要的區(qū)別所在。之間最主要的區(qū)別所在。2.1 指令集結(jié)構(gòu)的分類581 CPU對操作數(shù)的不同存取方式 CPU提供的暫存器每條ALU指令顯式表示的操作數(shù)個數(shù)運算結(jié)果的目的地訪問顯式操作數(shù)的過程堆棧堆棧0 0堆棧堆棧Push/PopPush/Pop累加器累加器1 1

3、累加器累加器Load/StoreLoad/Store累加器累加器一組寄存器一組寄存器2/32/3寄存器或存寄存器或存儲器儲器Load/StoreLoad/Store寄存寄存器或存儲器器或存儲器681 4. 根據(jù)CPU內(nèi)部存儲單元類型進行分類,可以分為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表達式在這三種類型指令集結(jié)構(gòu)上的表達式在這三種類型指令集結(jié)構(gòu)上的實現(xiàn)方法。假設(shè)實現(xiàn)方法。假設(shè)A A、B B、C C均是保存在存儲器單元中,均是保存在存儲器單元中,且且A A和和B B的值在運算過程中

4、一直被保持。的值在運算過程中一直被保持。2.1 指令集結(jié)構(gòu)的分類781C=A+B表達式在這三種類型指令集結(jié)構(gòu)上的實現(xiàn)方法 堆棧累加器寄存器 (寄存器存儲器)寄存器(寄存器寄存器)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)缺點 指令集結(jié)構(gòu)類型優(yōu) 點缺 點堆棧型堆棧型 是一種表示計算的是一種表示計算的簡單模型;指令短小。簡單模型;指令短小。 堆棧不能被隨機訪問,從而很難生堆棧不能被隨機訪問,從而很難生成

5、有效代碼。同時,由于堆棧是瓶頸,成有效代碼。同時,由于堆棧是瓶頸,所以很難被高效地實現(xiàn)。所以很難被高效地實現(xiàn)。累加器型累加器型 減小了機器的內(nèi)部減小了機器的內(nèi)部狀態(tài);指令短小。狀態(tài);指令短小。 由于累加器是唯一的暫存器,這種由于累加器是唯一的暫存器,這種機器的存儲器通信開銷最大。機器的存儲器通信開銷最大。寄存器型寄存器型 是代碼生成最一般是代碼生成最一般的模型。的模型。 所有操作數(shù)均需命名,且顯式表示,所有操作數(shù)均需命名,且顯式表示,因而指令比較長。因而指令比較長。9812.1.2 通用寄存器型指令集結(jié)構(gòu)的分類 1. 通用寄存器型指令集結(jié)構(gòu)的主要優(yōu)點 使編譯器有效地使用寄存器。使編譯器有效地使

6、用寄存器。 (1) (1) 在表達式求值方面,比其它類型指令集結(jié)構(gòu)在表達式求值方面,比其它類型指令集結(jié)構(gòu) 具有更大的靈活性具有更大的靈活性; ; (2) (2) 寄存器可以用來存放變量。寄存器可以用來存放變量。 減少存儲器的通信量,加快程序的執(zhí)行速度。減少存儲器的通信量,加快程序的執(zhí)行速度。 (因為寄存器比存儲器快)(因為寄存器比存儲器快) 可以用更少的地址位來尋址寄存器,從而可可以用更少的地址位來尋址寄存器,從而可 以有效改進程序的目標代碼大小。以有效改進程序的目標代碼大小。 2.1 指令集結(jié)構(gòu)的分類10813. 兩種主要的指令特性能夠?qū)⑼ㄓ眉拇嫫髦噶罴Y(jié)構(gòu) (GPR)進一步細分 (1) A

7、LU(1) ALU指令到底有兩個或是三個操作數(shù)?指令到底有兩個或是三個操作數(shù)? 有三個操作數(shù)的指令:兩個源操作數(shù)有三個操作數(shù)的指令:兩個源操作數(shù) 一個結(jié)果操作數(shù)一個結(jié)果操作數(shù)2. CPU需要設(shè)置多少個寄存器呢? 主要由編譯器使用寄存器的情況來決定。主要由編譯器使用寄存器的情況來決定。l 為表達式求值保留一些寄存器為表達式求值保留一些寄存器l 為傳遞參數(shù)保留一些寄存器為傳遞參數(shù)保留一些寄存器l 用剩下的寄存器來保存變量用剩下的寄存器來保存變量2.1 指令集結(jié)構(gòu)的分類1181 有兩個操作數(shù)的指令:一個操作數(shù)既作為源操有兩個操作數(shù)的指令:一個操作數(shù)既作為源操 作數(shù),也作為目的操作數(shù)。作數(shù),也作為目的

8、操作數(shù)。(2) (2) 在在ALUALU指令中,有多少個操作數(shù)可以用存儲器來尋指令中,有多少個操作數(shù)可以用存儲器來尋 址,也即有多少個存儲器操作數(shù)?址,也即有多少個存儲器操作數(shù)? 一般來說,一般來說,ALUALU指令有指令有0 03 3個存儲器操作數(shù)。個存儲器操作數(shù)。2.1 指令集結(jié)構(gòu)的分類1281 ALU指令中,存儲器操作數(shù)個數(shù)和操作數(shù)個數(shù)的 所有可能組合,以及相應的機器實例 ALU指令中存儲器操作數(shù)個數(shù)ALU指令中操作數(shù)的最大個數(shù)機器實例02IBM RT-PC3SPARC,MIPS12PDP-10,IBM 360,Motorola 680003IBM360的部分指令的部分指令22PDP11

9、,部分部分IBM360 指令指令3 33VAX1381(3) (3) 通用寄存器指令集結(jié)構(gòu)進一步細分為三種類型:通用寄存器指令集結(jié)構(gòu)進一步細分為三種類型:(4) (4) 常見的三種通用寄存器型指令集結(jié)構(gòu)的常見的三種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點優(yōu)缺點 注:表中注:表中(m,n)(m,n)的含義是,的含義是, 指令的指令的n n個操作個操作 數(shù)中有數(shù)中有m m個存儲器操作數(shù)。個存儲器操作數(shù)。 l 寄存器寄存器 - - 寄存器型寄存器型(R-R:register-register)R-R:register-register)l 寄存器寄存器 - - 存儲器型存儲器型(R-M:register-me

10、moryR-M:register-memory)l 存儲器存儲器 - - 存儲器型存儲器型(M-M:memory-memoryM-M:memory-memory)2.1 指令集結(jié)構(gòu)的分類指令集結(jié)構(gòu)類型優(yōu)優(yōu) 點點缺 點 寄存器寄寄存器寄存器型存器型(0,3) 簡單,指令字長固簡單,指令字長固定,是一種簡單的代定,是一種簡單的代碼生成模型,各種指碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)令的執(zhí)行時鐘周期數(shù)相近。相近。 和指令中含有對存儲器操作數(shù)訪問和指令中含有對存儲器操作數(shù)訪問的結(jié)構(gòu)相比,指令條數(shù)多,因而其的結(jié)構(gòu)相比,指令條數(shù)多,因而其目標代碼較大。目標代碼較大。 寄存器存寄存器存儲器型儲器型(1,2)

11、 可以直接對存儲器操可以直接對存儲器操作數(shù)進行訪問,容易作數(shù)進行訪問,容易對指令進行編碼,且對指令進行編碼,且其目標代碼較小。其目標代碼較小。 指令中的操作數(shù)類型不同。在一指令中的操作數(shù)類型不同。在一條指令中同時對一個寄存器操作數(shù)條指令中同時對一個寄存器操作數(shù)和存儲器操作數(shù)進行編碼,將限制和存儲器操作數(shù)進行編碼,將限制指令所能夠表示的寄存器個數(shù)。由指令所能夠表示的寄存器個數(shù)。由于指令的操作數(shù)可以存儲在不同類于指令的操作數(shù)可以存儲在不同類型的存儲器單元,所以每條指令的型的存儲器單元,所以每條指令的執(zhí)行時鐘周期數(shù)也不盡相同。執(zhí)行時鐘周期數(shù)也不盡相同。存儲器存存儲器存儲器型儲器型(3,3) 是一種最

12、緊密的編是一種最緊密的編碼方式,無需碼方式,無需“浪費浪費”寄存器保存變量。寄存器保存變量。 指令字長多種多樣。每條指令的指令字長多種多樣。每條指令的執(zhí)行時鐘周期數(shù)也大不一樣,對存執(zhí)行時鐘周期數(shù)也大不一樣,對存儲器的頻繁訪問將導致存儲器訪問儲器的頻繁訪問將導致存儲器訪問瓶頸問題。瓶頸問題。15812.2 尋址技術(shù) 在通用寄存器指令集結(jié)構(gòu)中,一般是利用尋址方 式指明指令中的操作數(shù)是一個常數(shù)、一個寄存器 操作數(shù),抑或是一個存儲器操作數(shù)。 2. 當前指令集結(jié)構(gòu)中所使用的一些操作數(shù)尋址方式。 第二章 計算機指令集結(jié)構(gòu)設(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存儲器間接尋址存儲器間接尋址Add R1 , (R3)RegsR1RegsR1MemMemRegsR3自增尋

14、址自增尋址Add R1 , (R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自減尋址自減尋址Add R1, -(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2縮放尋址縮放尋址AddR1 , 100(R2)R3RegsR1RegsR1Mem100RegsR2RegsR3*d17813. 尋址方式使用情況統(tǒng)計結(jié)果 (VAXVAX指令集結(jié)構(gòu)的機器:指令集結(jié)構(gòu)的機器:gccgcc、SpiceSpice和和Tex Tex 基準程序)基準程序)1%0%24%43%32%6%16%3%17%55%1%6%11%39%40%0%10%20%30%40

15、%50%60%70%存儲器間接尋址縮放尋址寄存器間接尋址立即尋址偏移尋址TexSpicegcc立即值尋址方式立即值尋址方式和和偏移尋址方式偏移尋址方式的使用頻率十分高。的使用頻率十分高。18814. 各種偏移量字段大小的使用情況 寄存器寄存器型指令集結(jié)構(gòu)的機器上寄存器寄存器型指令集結(jié)構(gòu)的機器上(MIPSMIPS) 運行運行SPECint92SPECint92基準程序集基準程序集 (compresscompress、espressoespresso、eqntotteqntott、gccgcc、lili) 運行運行SPECfp92SPECfp92基準程序集基準程序集 (dudocdudoc、ear

16、ear、hydro2dhydro2d、mdljdp2mdljdp2、su2corsu2cor) 2.2 尋址技術(shù)1981 x x軸的標記是對偏移量大小進行軸的標記是對偏移量大小進行l(wèi)oglog2 2()運)運算算所得,也就是偏移量字段的位數(shù)。所得,也就是偏移量字段的位數(shù)。 0%5%10%15%20%25%30%0123456789101112131415SPECint92測量統(tǒng)計結(jié)果SPECfp92測量統(tǒng)計結(jié)果占偏移尋址方式的百分比2.2 尋址技術(shù)2081 程序所使用的偏移量大小分布十分廣泛;程序所使用的偏移量大小分布十分廣泛; 較小的偏移量和較大的偏移量均占有相當大的比例;較小的偏移量和較大

17、的偏移量均占有相當大的比例; 將偏移量字段的大小設(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 指令比較指令ALU指令所有指令整型平均浮點

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è)計 第二章 計算機指令集結(jié)構(gòu)設(shè)計操作類型實 例算 術(shù) 和 邏算 術(shù) 和 邏輯運算輯運算整數(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)用、虛擬存儲器管理等。操作系統(tǒng)調(diào)用、虛擬存儲器管理等。浮點浮點浮點操作:加、乘等。浮點操作:加、乘等。十進制十進制十進制加、十進制乘、十進制到字符的轉(zhuǎn)換。十進制加、十進制乘、十進制到字符的轉(zhuǎn)換。字符串字符串字符串移動、字符串比較、字符串搜索等。字符串移動、字符串比較、字符串搜索等。圖形圖形象素操作、壓縮象素操作、壓縮/解壓操作等。解壓操作等。1. 指令集中操作的分類 25812. 一種指令集結(jié)構(gòu)中的指令到底要支持哪些類型的 操作? ( (指令集結(jié)構(gòu)功能設(shè)計問題指令集結(jié)構(gòu)功能設(shè)計問題) ) 兩種截然不同的方向:兩種截然不同的方向:

20、 復雜指令集計算機(復雜指令集計算機(CISCCISC) 強化指令功能,實現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。強化指令功能,實現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。 精簡指令集計算機(精簡指令集計算機(RISCRISC) 盡可能地降低指令集結(jié)構(gòu)的復雜性,以達到盡可能地降低指令集結(jié)構(gòu)的復雜性,以達到 簡化實現(xiàn),提高性能的目的。簡化實現(xiàn),提高性能的目的。 當今指令集結(jié)構(gòu)功能設(shè)計的一個主要趨勢。當今指令集結(jié)構(gòu)功能設(shè)計的一個主要趨勢。2.3 指令集結(jié)構(gòu)的功能設(shè)計26812.3.1 CISC指令集結(jié)構(gòu)的功能設(shè)計CISCCISC結(jié)構(gòu)追求的目標:結(jié)構(gòu)追求的目標: 強化指令功能,減少程序的指令條數(shù),以達到強化指令功能,減少程序的指

21、令條數(shù),以達到提高性能的目的。提高性能的目的。增強指令功能主要是從如下幾個方面著手:增強指令功能主要是從如下幾個方面著手:1. 面向目標程序增強指令功能l 提高運算型指令功能提高運算型指令功能l 提高傳送指令功能提高傳送指令功能l 增加程序控制指令功能增加程序控制指令功能2.3 指令集結(jié)構(gòu)的功能設(shè)計27812.2.面向高級語言和編譯程序改進指令系統(tǒng)面向高級語言和編譯程序改進指令系統(tǒng) ( (1) 1) 增加對高級語言和編譯系統(tǒng)支持的指令功能增加對高級語言和編譯系統(tǒng)支持的指令功能 對源程序中各種高級語言語句進行使用頻對源程序中各種高級語言語句進行使用頻 度的統(tǒng)計與分析,對于使用頻度高的語句,度的統(tǒng)

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

23、儲器單元或寄存器單元之間進行。(2) (2) 高級語言計算機指令系統(tǒng)高級語言計算機指令系統(tǒng) 面向高級語言面向高級語言(HL)(HL)的機器的機器 縮小機器語言和高級語言的語義差距??s小機器語言和高級語言的語義差距。 間接執(zhí)行型高級語言機器間接執(zhí)行型高級語言機器 高級語言和機器語言是一一對應的,用匯高級語言和機器語言是一一對應的,用匯 編的方法編的方法( (可以用軟件實現(xiàn),也可以用硬件實可以用軟件實現(xiàn),也可以用硬件實 現(xiàn)現(xiàn)) )把高級語言源程序翻譯成機器語言程序。把高級語言源程序翻譯成機器語言程序。2.3 指令集結(jié)構(gòu)的功能設(shè)計2981 直接執(zhí)行型高級語言機器直接執(zhí)行型高級語言機器 高級語言就作為

24、機器語言,直接由硬件或高級語言就作為機器語言,直接由硬件或 固件對高級語言源程序的語句逐條進行解釋以固件對高級語言源程序的語句逐條進行解釋以 執(zhí)行它。執(zhí)行它。3. 面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進指令系統(tǒng) 操作系統(tǒng)的實現(xiàn)在很大程度上取決于體系結(jié)操作系統(tǒng)的實現(xiàn)在很大程度上取決于體系結(jié) 構(gòu)的支持。構(gòu)的支持。 (1) (1) 主要表現(xiàn)在對以下方面的支持主要表現(xiàn)在對以下方面的支持2.3 指令集結(jié)構(gòu)的功能設(shè)計3081l 中斷處理中斷處理l 進程管理進程管理l 存儲管理和保護存儲管理和保護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 支持進程轉(zhuǎn)移的指令支持進程轉(zhuǎn)移的指令l 支持進程同步和互斥的指令支持進程同步和互斥的指令2.3 指令集結(jié)構(gòu)的功能設(shè)計31812.3.2 RISC指令集功能的設(shè)計1. CISC結(jié)構(gòu)存在的缺點(1) (1) 在在CISCCISC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻 率相差懸殊。率相差懸殊。(2) CISC(2) CISC結(jié)構(gòu)指令系統(tǒng)的復雜性帶來了計算機體系結(jié)構(gòu)指令系統(tǒng)的復雜性帶來了計算機體系 結(jié)構(gòu)的復雜性,這不僅增加了研制時間和成結(jié)構(gòu)的復雜性,這不僅增加了研制時間和成 本,而且還容易造成設(shè)計錯誤。本,而且還容易造成設(shè)計錯誤。

26、(3) CISC(3) CISC結(jié)構(gòu)指令系統(tǒng)的復雜性給結(jié)構(gòu)指令系統(tǒng)的復雜性給VLSIVLSI設(shè)計增加了設(shè)計增加了 很大負擔,不利于單片集成。很大負擔,不利于單片集成。2.3 指令集結(jié)構(gòu)的功能設(shè)計3281(4) CISC(4) CISC結(jié)構(gòu)的指令系統(tǒng)中,許多復雜指令需要很結(jié)構(gòu)的指令系統(tǒng)中,許多復雜指令需要很 復雜的操作,因而運行速度慢。復雜的操作,因而運行速度慢。(5) (5) 在在CISCCISC結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功 能不均衡性,不利于采用先進的計算機體系結(jié)能不均衡性,不利于采用先進的計算機體系結(jié) 構(gòu)技術(shù)(如流水技術(shù))來提高系統(tǒng)的性能。構(gòu)技術(shù)(如

27、流水技術(shù))來提高系統(tǒng)的性能。 2. RISC計算機 (1) (1) 指令系統(tǒng)只包含那些使用頻率很高的指令指令系統(tǒng)只包含那些使用頻率很高的指令 和一些必要指令。和一些必要指令。 Intel 80X86Intel 80X86最常用的十條指令最常用的十條指令2.3 指令集結(jié)構(gòu)的功能設(shè)計執(zhí)行頻率排序80X86指令指令執(zhí)行頻率(執(zhí)行指令總數(shù))1Load222條件分支條件分支203比較比較164Store125加加86與與67減減58寄存器寄存器間寄存器寄存器間數(shù)據(jù)移動數(shù)據(jù)移動49調(diào)用調(diào)用110返回返回1合合 計計96Intel 80X86最常用的十條指令 3481(2) (2) 目的目的 使得計算機體系

28、結(jié)構(gòu)更加簡單、更加合理和使得計算機體系結(jié)構(gòu)更加簡單、更加合理和 更加有效,克服更加有效,克服CISCCISC結(jié)構(gòu)的缺點,使機器速度更結(jié)構(gòu)的缺點,使機器速度更 快,程序運行時間縮短,從而提高計算機系統(tǒng)的快,程序運行時間縮短,從而提高計算機系統(tǒng)的 性能。性能。(3) (3) 設(shè)計原則設(shè)計原則l 選取使用頻率最高的指令,并補充一些最有選取使用頻率最高的指令,并補充一些最有 用的指令;用的指令;l 每條指令的功能應盡可能簡單,并在一個機每條指令的功能應盡可能簡單,并在一個機 器周期內(nèi)完成;器周期內(nèi)完成;l 所有指令長度均相同;所有指令長度均相同;2.3 指令集結(jié)構(gòu)的功能設(shè)計3581l 只有只有Load

29、Load和和StoreStore操作指令才訪問存儲器操作指令才訪問存儲器; ;l 其它指令操作均在寄存器之間進行;其它指令操作均在寄存器之間進行;l 以簡單有效的方式支持高級語言。以簡單有效的方式支持高級語言。2.3.3 控制指令 (1) (1) 跳轉(zhuǎn)跳轉(zhuǎn): : 當控制指令為無條件改變控制流時,當控制指令為無條件改變控制流時, 稱之為稱之為“跳轉(zhuǎn)跳轉(zhuǎn)”。 (2) (2) 分支:分支:當控制指令是有條件改變控制流時,當控制指令是有條件改變控制流時, 稱之為稱之為“分支分支”。2.3 指令集結(jié)構(gòu)的功能設(shè)計3681l 條件分支條件分支l 跳轉(zhuǎn)跳轉(zhuǎn)l 過程調(diào)用過程調(diào)用l 過程返回過程返回 (3) (3

30、) 控制流程的各種改變情況控制流程的各種改變情況2.3 指令集結(jié)構(gòu)的功能設(shè)計1. 控制指令的使用頻率 (一臺(一臺Load/StoreLoad/Store型指令集結(jié)構(gòu)的機器:型指令集結(jié)構(gòu)的機器: SPECint92SPECint92、Specfp92Specfp92基準程序)基準程序)13%6%81%11%4%87%0%20%40%60%80%100%調(diào)用/ 返回跳轉(zhuǎn)條件分支整型平均浮點平均改變控制流的大部分指令是改變控制流的大部分指令是條件分支指令。條件分支指令。表示分支條件的技術(shù)測試分支條件的方法優(yōu) 點缺 點條件碼條件碼(CC) 在程序的控制下,由在程序的控制下,由ALU操操作設(shè)置特殊的位

31、。作設(shè)置特殊的位。 可以自由設(shè)置可以自由設(shè)置分支條件。分支條件。CC是額外狀態(tài),條件碼限是額外狀態(tài),條件碼限制了指令順序,因為必須從制了指令順序,因為必須從一條指令將分支條件信息傳一條指令將分支條件信息傳送到分支指令。送到分支指令。條件寄條件寄存器存器 根據(jù)比較結(jié)果測試條件寄存根據(jù)比較結(jié)果測試條件寄存器。器。 簡單簡單 占用了一個寄存器。占用了一個寄存器。 比較且比較且分支分支比較操作是分支指令的一部比較操作是分支指令的一部分,通常這種比較是受一定分,通常這種比較是受一定限制的。限制的。一條指令完成一條指令完成了兩條指令的了兩條指令的功能。功能。 分支指令的操作增多。分支指令的操作增多。2.

32、常用的三種表示分支條件的技術(shù)及其優(yōu)缺點 39813. 分支目標地址的表示 PCPC相對尋址:相對尋址:在指令中提供一個和程序計數(shù)在指令中提供一個和程序計數(shù) 器(器(PCPC)的值相加的偏移量。)的值相加的偏移量。 (1) (1) 有效地縮短指令中表示目標地址的字段的有效地縮短指令中表示目標地址的字段的 長度;長度; (2) (2) 使得代碼在執(zhí)行時與它被載入的位置無關(guān)。使得代碼在執(zhí)行時與它被載入的位置無關(guān)。 關(guān)鍵問題是:關(guān)鍵問題是: 轉(zhuǎn)移目標離當前控制指令的偏移量有多大?轉(zhuǎn)移目標離當前控制指令的偏移量有多大? 2.3 指令集結(jié)構(gòu)的功能設(shè)計40814. 過程調(diào)用和返回的狀態(tài)保存 兩種方法來保存寄

33、存器的內(nèi)容:兩種方法來保存寄存器的內(nèi)容: (1) (1) “調(diào)用者保存調(diào)用者保存”方法方法 在一個調(diào)用者調(diào)用別的過程時,必須保存調(diào)用在一個調(diào)用者調(diào)用別的過程時,必須保存調(diào)用 者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠 再次訪問調(diào)用者。再次訪問調(diào)用者。 (2) “被調(diào)用者保存被調(diào)用者保存”方法方法 被調(diào)用的過程必須保存它要用的寄存器,保證被調(diào)用的過程必須保存它要用的寄存器,保證 不會破壞過程調(diào)用者的程序執(zhí)行環(huán)境,并在過程調(diào)不會破壞過程調(diào)用者的程序執(zhí)行環(huán)境,并在過程調(diào) 用結(jié)束返回時,恢復這些寄存器的內(nèi)容。用結(jié)束返回時,恢復這些寄存器的內(nèi)容。 2.3 指

34、令集結(jié)構(gòu)的功能設(shè)計4181 過程P1 調(diào)用 返回 R1 R1 保存狀態(tài) 過程P2 恢復狀態(tài) 調(diào)用 返回 R1 R1 保存狀態(tài) 過程P3 恢復狀態(tài) 執(zhí)行 R1 R1 保存狀態(tài) 過程P1 執(zhí)行 過程P2 恢復狀態(tài) 調(diào)用 返回 (a) 調(diào)用者保存 (b) 被調(diào)用者保存 圖2.6 過程調(diào)用中寄存器內(nèi)容的兩種保存策略 2.3 指令集結(jié)構(gòu)的功能設(shè)計42812.4 操作數(shù)的類型、表示和大小操作數(shù)類型和操作數(shù)表示是軟硬件主要界面之一 。操作數(shù)類型:操作數(shù)類型:面向應用、面向軟件系統(tǒng)所處理的各面向應用、面向軟件系統(tǒng)所處理的各 種數(shù)據(jù)結(jié)構(gòu)種數(shù)據(jù)結(jié)構(gòu). .操作數(shù)表示:操作數(shù)表示:硬件結(jié)構(gòu)能夠識別、指令系統(tǒng)可以直硬件

35、結(jié)構(gòu)能夠識別、指令系統(tǒng)可以直 接調(diào)用的那些結(jié)構(gòu)。接調(diào)用的那些結(jié)構(gòu)。確定操作數(shù)表示是軟硬件取舍折衷的問題。第二章 計算機指令集結(jié)構(gòu)設(shè)計4381 1. 操作數(shù)的類型l 整數(shù)(定點)整數(shù)(定點)l 浮點浮點l 十進制十進制l 字符字符2. 操作數(shù)類型的兩種表示方法 (1) 操作數(shù)的類型由操作碼的編碼指定。操作數(shù)的類型由操作碼的編碼指定。 (最常見的一種方法最常見的一種方法) (2) 數(shù)據(jù)可以附上由硬件解釋的標記,由這些標記數(shù)據(jù)可以附上由硬件解釋的標記,由這些標記 指定操作數(shù)的類型,從而選擇適當?shù)倪\算。指定操作數(shù)的類型,從而選擇適當?shù)倪\算。l 字符串字符串l 向量向量l 堆棧堆棧2.4 操作數(shù)的類型、

36、表示和大小44813. 操作數(shù)大小 l 字節(jié)字節(jié)l 半字(半字(1616位)位)l 單字(單字(3232位)位)l 雙字(雙字(6464位)位)(1) (1) 字符字符: : 用用ASCIIASCII碼表示,為一個字節(jié)大小。碼表示,為一個字節(jié)大小。(2) (2) 整數(shù)整數(shù): : 用二進制補碼表示,其大小可以是字節(jié)、用二進制補碼表示,其大小可以是字節(jié)、 半字或單字。半字或單字。(3) (3) 浮點操作數(shù)浮點操作數(shù): : 單精度浮點(單字大?。┖碗p精單精度浮點(單字大?。┖碗p精 度浮點(雙字大小)度浮點(雙字大?。? . (4) (4) 字符串字符串: : 將字符串中的每個字符當作一個字節(jié)將字符串

37、中的每個字符當作一個字節(jié) 來看待。來看待。 2.4 操作數(shù)的類型、表示和大小4581(5) (5) 十進制操作數(shù)十進制操作數(shù) 壓縮十進制壓縮十進制 用用4 4位二進制數(shù)編碼數(shù)字位二進制數(shù)編碼數(shù)字0 09 9,然后將,然后將 兩個十進制數(shù)字壓縮在一個字節(jié)中存儲。兩個十進制數(shù)字壓縮在一個字節(jié)中存儲。 二進制編碼十進制二進制編碼十進制 將十進制數(shù)字直接用字符串來表示將十進制數(shù)字直接用字符串來表示 。4. 訪問不同操作數(shù)大小的頻率 測試統(tǒng)計測試統(tǒng)計SPECint92SPECint92基準程序和基準程序和SPECfp92SPECfp92基準基準 程序?qū)ψ止?jié)、半字、單字和雙字四種大小的操作數(shù)程序?qū)ψ止?jié)、半

38、字、單字和雙字四種大小的操作數(shù) 訪問情況。訪問情況。2.4 操作數(shù)的類型、表示和大小74%19%7%69%31%0%0%0%0%20%40%60%80%雙字單字半字字節(jié)整型平均浮點平均基準程序?qū)鶞食绦驅(qū)巫趾碗p字單字和雙字的數(shù)據(jù)訪問具有較高的頻率。的數(shù)據(jù)訪問具有較高的頻率。 選擇操作數(shù)字段的長度為選擇操作數(shù)字段的長度為3232位,可以有效支持位,可以有效支持8 8、1616、 3232位整型操作數(shù),以及位整型操作數(shù),以及3232位浮點操作數(shù)的表示。位浮點操作數(shù)的表示。 選擇操作數(shù)字段長度為選擇操作數(shù)字段長度為6464位,則更具有一般性。位,則更具有一般性。47812.5 指令集格式的設(shè)計 指

39、令由指令由操作碼操作碼和和地址碼地址碼組成。組成。 指令集格式的設(shè)計指令集格式的設(shè)計 確定操作碼字段和地址碼字段的大小及其組合確定操作碼字段和地址碼字段的大小及其組合 形式,以及各種尋址方式的編碼方法。形式,以及各種尋址方式的編碼方法。 設(shè)計原則設(shè)計原則l 盡可能地增加寄存器數(shù)目和尋址方式類型;盡可能地增加寄存器數(shù)目和尋址方式類型;l 充分考慮寄存器字段和尋址方式字段對指令平均充分考慮寄存器字段和尋址方式字段對指令平均 字長的影響,以及它們對目標代碼大小的影響;字長的影響,以及它們對目標代碼大小的影響;l 設(shè)計出的指令集格式能夠在具體實現(xiàn)中容易處理。設(shè)計出的指令集格式能夠在具體實現(xiàn)中容易處理。

40、第二章 計算機指令集結(jié)構(gòu)設(shè)計2.5.1 尋址方式的表示方法 1. 兩種表示尋址方式的方法 (1) (1) 將尋址方式編碼于操作碼中,由操作碼在描述指將尋址方式編碼于操作碼中,由操作碼在描述指 令操作的同時,也描述了相應操作的尋址方式;令操作的同時,也描述了相應操作的尋址方式; (2) (2) 為每個操作數(shù)設(shè)置一個為每個操作數(shù)設(shè)置一個地址描述符地址描述符,由該地址描,由該地址描 述符表示相應操作數(shù)的尋址方式。述符表示相應操作數(shù)的尋址方式。 操作碼 地址描述符 1 地址碼字段 1 地址描述符 n 地址碼字段 n 利用地址描述符表示尋址方式的方法 49812.5.1 尋址方式的表示方法 1. 兩種表

41、示尋址方式的方法 (1) (1) 將尋址方式編碼于操作碼中,由操作碼在描述指將尋址方式編碼于操作碼中,由操作碼在描述指 令操作的同時,也描述了相應操作的尋址方式;令操作的同時,也描述了相應操作的尋址方式; (2) (2) 為每個操作數(shù)設(shè)置一個為每個操作數(shù)設(shè)置一個地址描述符地址描述符,由該地址描,由該地址描 述符表示相應操作數(shù)的尋址方式。述符表示相應操作數(shù)的尋址方式。 操作碼 地址描述符 1 地址碼字段 1 地址描述符 n 地址碼字段 n 利用地址描述符表示尋址方式的方法 2.5 指令集格式的設(shè)計50812. 選擇哪種表示尋址方式的方法? 由兩個因數(shù)決定:由兩個因數(shù)決定: (1) (1) 指令集

42、結(jié)構(gòu)所采用的尋址方式種類及其適用范圍指令集結(jié)構(gòu)所采用的尋址方式種類及其適用范圍 (2) (2) 操作碼與尋址方式之間的獨立程度操作碼與尋址方式之間的獨立程度 2.5.2 指令集格式的選擇 三種指令集編碼格式三種指令集編碼格式 : :l 變長編碼格式變長編碼格式l 固定長度編碼格式固定長度編碼格式l 混合型編碼格式混合型編碼格式 2.5 指令集格式的設(shè)計 操作碼 地址描述符 1 地址碼 1 地址描述符 n 地址碼 n 1. 變長編碼格式 有效減少指令集結(jié)構(gòu)的平均指令長度,降低目標代碼有效減少指令集結(jié)構(gòu)的平均指令長度,降低目標代碼 的長度。的長度。 使得各條指令的字長和執(zhí)行時間大不一樣。使得各條指

43、令的字長和執(zhí)行時間大不一樣。多數(shù)多數(shù)CISCCISC計算機的指令集結(jié)構(gòu)均是采用這種編碼格式。計算機的指令集結(jié)構(gòu)均是采用這種編碼格式。2. 固定長度編碼格式 將操作類型和尋址方式組合編碼在操作碼中,所有指將操作類型和尋址方式組合編碼在操作碼中,所有指 令的長度是固定唯一的。令的長度是固定唯一的。 操作碼 地址碼 1 地址碼 2 地址碼 3 5281 操作碼 地址描述符 地址碼 操作碼 地址描述符 1 地址描述符 2 地址碼 操作碼 地址描述符 地址碼 1 地址碼 2 混合型編碼格式 3. 混合型編碼格式 通過提供一定類型的指令字長,期望能夠兼通過提供一定類型的指令字長,期望能夠兼 顧降低目標代碼

44、長度和降低譯碼復雜度兩個目標。顧降低目標代碼長度和降低譯碼復雜度兩個目標。 2.5 指令集格式的設(shè)計5381 2.6 DLX指令集結(jié)構(gòu)DLXDLX是一種多元未飽和型指令集結(jié)構(gòu)。是一種多元未飽和型指令集結(jié)構(gòu)。DLXDLX指令集結(jié)構(gòu)的指令集結(jié)構(gòu)的設(shè)計思想:設(shè)計思想:l 具有一個簡單的具有一個簡單的Load/StoreLoad/Store指令集;指令集;l 注重指令流水效率;注重指令流水效率;l 簡化指令的譯碼;簡化指令的譯碼;l 高效支持編譯器。高效支持編譯器。 第二章 計算機指令集結(jié)構(gòu)設(shè)計54812.6.1 DLX指令集結(jié)構(gòu)1. DLX中的寄存器 (1) 32(1) 32個通用寄存器個通用寄存器

45、 命名:命名:R0R0、R1R1、R31R31 長度:長度:3232位位 寄存器寄存器R0R0的值總是為的值總是為0 0。 (2) 32(2) 32個浮點寄存器個浮點寄存器 命名:命名:F0F0、F1F1、F31F31 長度:長度:3232位位 ( (用來保存用來保存3232位的單精度浮點數(shù)位的單精度浮點數(shù) )2.6 DLX指令集結(jié)構(gòu)5581 6464位雙精度浮點數(shù)位雙精度浮點數(shù) 相鄰兩個浮點寄存器奇偶對相鄰兩個浮點寄存器奇偶對F Fi iF Fi+1i+1 (i = 0,2,4,i = 0,2,4,30,30) 命名命名: : F0 F0、F2F2、F28F28、F30F30 (3) (3)

46、 一些特殊的寄存器一些特殊的寄存器 (比如用來保存浮點操作結(jié)果信息的浮點狀態(tài)寄存器)(比如用來保存浮點操作結(jié)果信息的浮點狀態(tài)寄存器) 可以和通用寄存器相互進行數(shù)據(jù)傳送??梢院屯ㄓ眉拇嫫飨嗷ミM行數(shù)據(jù)傳送。2.6 DLX指令集結(jié)構(gòu)56812. DLX的數(shù)據(jù)類型 DLXDLX提供了多種長度的整型數(shù)據(jù)和浮點數(shù)據(jù)。提供了多種長度的整型數(shù)據(jù)和浮點數(shù)據(jù)。 (1)(1) 整型數(shù)據(jù)整型數(shù)據(jù) 有有8 8位、位、1616位和位和3232位多種長度。位多種長度。 ( (當當8 8位和位和1616位整型數(shù)據(jù)載入到寄存器中時,位整型數(shù)據(jù)載入到寄存器中時, 用用0 0或數(shù)據(jù)的符號位來填充或數(shù)據(jù)的符號位來填充3232位通用寄

47、存器位通用寄存器 中的剩余位。中的剩余位。) ) (2) (2) 浮點數(shù)據(jù)浮點數(shù)據(jù) 有有3232位單精度浮點數(shù)和位單精度浮點數(shù)和6464位雙精度浮點數(shù)。位雙精度浮點數(shù)。 浮點數(shù)據(jù)表示采用的是浮點數(shù)據(jù)表示采用的是IEEE 754IEEE 754標準。標準。2.6 DLX指令集結(jié)構(gòu)57813 3. DLX的尋址方式和數(shù)據(jù)傳送 (1)(1) 尋址方式尋址方式l 寄存器尋址寄存器尋址l 立即值尋址立即值尋址l 偏移尋址偏移尋址l 寄存器間接尋址寄存器間接尋址 (2) (2) 寄存器尋址字段的大小為寄存器尋址字段的大小為5 5位位,用來表示,用來表示3232個個 通用寄存器或浮點寄存器。通用寄存器或浮點

48、寄存器。 (3) (3) 存儲器地址采用的是高端字節(jié)表示順序,存存儲器地址采用的是高端字節(jié)表示順序,存 儲器按字節(jié)尋址,其地址寬度為儲器按字節(jié)尋址,其地址寬度為3232位位。2.6 DLX指令集結(jié)構(gòu)58814. DLX的指令格式 尋址方式編碼在操作碼中。尋址方式編碼在操作碼中。 指令的字長指令的字長3232位位,其中用,其中用6 6位位表示操作碼。表示操作碼。(4) (4) 通過寄存器(通用寄存器和浮點寄存器)和存通過寄存器(通用寄存器和浮點寄存器)和存 儲器之間的數(shù)據(jù)傳送操作完成對存儲器的訪問。儲器之間的數(shù)據(jù)傳送操作完成對存儲器的訪問。2.6 DLX指令集結(jié)構(gòu)各種類型指令的格式 I 類型指令

49、 6 5 5 16 操作碼 rs1 rd 立即值 字節(jié)、半字、字的載入和儲存; rdrs1 op 立即值。 R 類型指令 6 5 5 5 11 操作碼 rs1 rs2 rd Func 寄存器寄存器 ALU 操作:rdrs1 func rs2; 函數(shù)對數(shù)據(jù)的操作進行編碼:加、減、; 對特殊寄存器的讀/寫和移動。 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 浮點操作浮點操作 (2) (2) 約定約定 (1) (1) 符號符號“”:”: 數(shù)據(jù)傳送操作數(shù)據(jù)傳送操作 其后附帶一個下標其后附帶一個下標n n,也即,也即“n n” ” 表示傳表示傳送送 一個一個n n位數(shù)據(jù)。位數(shù)據(jù)。 (2) (2) 符號符號“#”:#”: 兩個域的串聯(lián)操作兩個域的串聯(lián)操作2.6 DLX指令集結(jié)構(gòu)6181(3) (3) 域的下標:域的下標:表明從該域中選擇某一位。表明從該域中選擇某一位。l 域中位的標記是從最高位開始標記,并且域中位的標記是從最高位開始標記,并且 起始標記為起始標記為0 0。l 下標可以是一個單獨的數(shù)字。下

51、標可以是一個單獨的數(shù)字。l 如如 RegsR4RegsR40 0 : :選擇寄存器選擇寄存器R4R4中內(nèi)容的符號位。中內(nèi)容的符號位。l 下標也可以是一個范圍。下標也可以是一個范圍。l 如如 RegsR3RegsR324.3124.31 : :選擇寄存器選擇寄存器R3R3中內(nèi)容中內(nèi)容 的最低一個字節(jié)。的最低一個字節(jié)。(4) (4) 上標:上標:表示復制一個域。表示復制一個域。 如如 0 02424可以得到一個可以得到一個2424位全為位全為0 0的一個域。的一個域。2.6 DLX指令集結(jié)構(gòu)6281(5) (5) 變量變量MemMem:表示存儲器中的一個數(shù)組,:表示存儲器中的一個數(shù)組, 存儲器按照

52、字節(jié)尋址。存儲器按照字節(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)指令實例指令名稱含 義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)載入單精度浮點RegsF0 32 Mem50+RegsR3LD F0, 50 (R2)載入雙精度浮點RegsF0 # RegsF1 64 Mem50+RegsR2SW 500 (R4), R3儲存整型字Mem500+RegsR4

54、 32 RegsR3SF 40 (R3), F0儲存單精度浮點Mem40+RegsR3 32 RegsF0SD 40 (R3), F0儲存雙精度浮點Mem40+RegsR3 32 RegsF0Mem44+RegsR3 32 RegsF1SH 502 (R2), R31儲存整型半字Mem502+RegsR2 16 RegsR3116.31SB 41 (R3), R2儲存整型字節(jié)Mem41+RegsR3 8 RegsR224.31DLX中Load和Store指令實例 6481(2) (2) ALUALU操作操作l 簡單的算術(shù)和邏輯運算簡單的算術(shù)和邏輯運算l 寄存器比較指令(寄存器比較指令( , ,

55、 , , , )指令實例指令名稱 含 義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指令實例 2.6 DLX指令集結(jié)構(gòu)6581(3) (3) 分支和跳轉(zhuǎn)操作分支和跳轉(zhuǎn)操作 根據(jù)描述目標地址的方法和是否鏈接可以將根據(jù)描述目標地

56、址的方法和是否鏈接可以將 跳轉(zhuǎn)操作指令分為四種類型。跳轉(zhuǎn)操作指令分為四種類型。 其中:其中:l 兩種類型的跳轉(zhuǎn)指令用帶符號位的兩種類型的跳轉(zhuǎn)指令用帶符號位的2626位位 偏移量加上程序計數(shù)器的值來確定跳轉(zhuǎn)偏移量加上程序計數(shù)器的值來確定跳轉(zhuǎn) 的目標地址;的目標地址;l 另外兩種類型的跳轉(zhuǎn)指令則指定一個寄另外兩種類型的跳轉(zhuǎn)指令則指定一個寄 存器,由寄存器中的內(nèi)容決定跳轉(zhuǎn)的目存器,由寄存器中的內(nèi)容決定跳轉(zhuǎn)的目 標地址。標地址。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)用) 返回一個地址,也即將下一條順序指令返

57、回一個地址,也即將下一條順序指令 地址(返回地址)保存在寄存器地址(返回地址)保存在寄存器R31R31中。中。 所有分支指令均是條件分支指令。所有分支指令均是條件分支指令。 分支目標地址由一個帶符號的分支目標地址由一個帶符號的2626位偏移量加位偏移量加 上程序計數(shù)器的值來確定。上程序計數(shù)器的值來確定。2.6 DLX指令集結(jié)構(gòu)6781指令實例指令名稱含 義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) 浮點操作浮點操作 浮點操作:浮點操作:加、減、乘、除。加、減、乘、除。 (后綴(后綴D D:雙精度浮點操作:雙精度浮點操作 后綴后綴F F:單精度浮

59、點操作):單精度浮點操作) 下表列出了下表列出了DLXDLX所有指令及其含義。所有指令及其含義。 各種指令使用頻率測試統(tǒng)計結(jié)果。各種指令使用頻率測試統(tǒng)計結(jié)果。 (SPECint92SPECint92和和SPECfp92SPECfp92基準程序)基準程序)2.6 DLX指令集結(jié)構(gòu)6981DLX中的所有指令及其含義指令類型操作碼含 義 數(shù)據(jù)傳送LB,LBU,SB載入字節(jié),載入無符號字節(jié),儲存字節(jié)LH,LHU,SH載入半字,載入無符號半字,儲存半字LW,SW載入字,儲存字LF,LD,SF,SD載入單精度浮點,載入雙精度浮點,儲存單精度浮點,儲存雙精度浮點MOVI2S,MOVS2I將通用寄存器中的內(nèi)容

60、移入特殊寄存器,將特殊寄存器中的內(nèi)容移入通用寄存器MOVF,MOVD將一個單精度/雙精度浮點寄存器的內(nèi)容拷貝到另一個單精度/雙精度浮點寄存器MOVFP2I,MOVI2FP將32位浮點寄存器中的內(nèi)容移入整型寄存器,將32位整型寄存器中的內(nèi)容移入浮點寄存器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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論