第02章 指令系統(tǒng)_第1頁
第02章 指令系統(tǒng)_第2頁
第02章 指令系統(tǒng)_第3頁
第02章 指令系統(tǒng)_第4頁
第02章 指令系統(tǒng)_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

張晨曦第三版華中科技大學(xué)計算機學(xué)院2013年3月作業(yè):P51頁2.1(RISCCISC通用寄存器型機器)2.32.1指令集結(jié)構(gòu)的分類2.2尋址技術(shù)2.3指令集結(jié)構(gòu)的功能設(shè)計2.4操作數(shù)的類型、表示和大小2.5指令集格式的設(shè)計2.6MIPS指令集結(jié)構(gòu)第二章

計算機指令系統(tǒng)的設(shè)計2.1指令集結(jié)構(gòu)的分類2.1.1指令集結(jié)構(gòu)分類根據(jù)五個因素對計算機指令集結(jié)構(gòu)進行分類:

(1)

在CPU中操作數(shù)的存儲方法(2)指令中顯式表示的操作數(shù)個數(shù)(3)操作數(shù)的尋址方式(4)指令集所提供的操作類型(5)操作數(shù)的類型和大小第二章

計算機指令系統(tǒng)的設(shè)計1.CPU中用來存儲操作數(shù)的存儲單元主要有:2.指令中的操作數(shù)可以顯式給出,也可以隱式地給出。3.CPU對操作數(shù)的不同存取方式。進而分成3種指令集

堆棧隱式

累加器隱式一組寄存器

顯式CPU中操作數(shù)的存儲方法,是各種指令集結(jié)構(gòu)之間最主要的區(qū)別所在。2.1指令集結(jié)構(gòu)的分類

CPU對操作數(shù)的不同存取方式

CPU提供的暫存器每條ALU指令顯式表示的操作數(shù)個數(shù)運算結(jié)果的目的地訪問顯式操作數(shù)的過程堆棧0堆棧Push/Pop累加器1累加器Load/Store累加器一組寄存器2/3寄存器或存儲器Load/Store寄存器或存儲器

4.根據(jù)CPU內(nèi)部存儲單元類型進行分類,可以分為

堆棧型指令集結(jié)構(gòu)累加器型指令集結(jié)構(gòu)通用寄存器型指令集結(jié)構(gòu)

例C=A+B表達式在這三種類型指令集結(jié)構(gòu)上的實現(xiàn)方法。假設(shè)A、B、C均是保存在存儲器單元中,且A和B的值在運算過程中一直被保持。2.1指令集結(jié)構(gòu)的分類堆棧累加器寄存器(寄存器-存儲器)寄存器(寄存器-寄存器)PUSHALOADALOADR1,ALOADR1,APUSHBADDBADDR1,BLOADR2,BADDStoreCStoreC,R1AddR3,R1,R2POPCStoreC,R313次訪存6次訪存6次訪存7次訪存C=A+B表達式在這三種類型指令集結(jié)構(gòu)上的實現(xiàn)方法

三種類型指令集結(jié)構(gòu)的優(yōu)缺點

指令集結(jié)構(gòu)類型優(yōu)點缺點堆棧型

是一種表示計算的簡單模型;指令短小。

堆棧不能被隨機訪問,從而很難生成有效代碼。同時,由于堆棧是瓶頸,所以很難被高效地實現(xiàn)。累加器型

減小了機器的內(nèi)部狀態(tài);指令短小。

由于累加器是唯一的暫存器,這種機器的存儲器通信開銷最大。寄存器型

是代碼生成最一般的模型。

所有操作數(shù)均需命名,且顯式表示,因而指令比較長。2.1.2通用寄存器型指令集結(jié)構(gòu)的分類

1.通用寄存器型指令集結(jié)構(gòu)的主要優(yōu)點使編譯器有效地使用寄存器。(1)在表達式求值方面,比其它類型指令集結(jié)構(gòu)

具有更大的靈活性;(2)寄存器可以用來存放變量。◆

減少存儲器的通信量,加快程序的執(zhí)行速度。(因為寄存器比存儲器快)◆可以用更少的地址位來尋址寄存器,從而可以有效改進程序的目標代碼大小。2.1指令集結(jié)構(gòu)的分類3.兩種主要的指令特性能夠?qū)⑼ㄓ眉拇嫫髦噶罴Y(jié)構(gòu)(GPR)進一步細分

(1)ALU(算術(shù)邏輯)指令到底有兩個或是三個操作數(shù)?

有三個操作數(shù)的指令:兩個源操作數(shù)一個結(jié)果操作數(shù)2.CPU需要設(shè)置多少個寄存器呢?

主要由編譯器使用寄存器的情況來決定。

為表達式求值保留一些寄存器為傳遞參數(shù)保留一些寄存器用剩下的寄存器來保存變量2.1指令集結(jié)構(gòu)的分類

有兩個操作數(shù)的指令:一個操作數(shù)既作為源操作數(shù),也作為目的操作數(shù)。(2)在ALU指令中,有多少個操作數(shù)可以用存儲器來尋址,也即有多少個存儲器操作數(shù)?一般來說,ALU指令有0~3個存儲器操作數(shù)。2.1指令集結(jié)構(gòu)的分類ALU指令中,存儲器操作數(shù)個數(shù)和操作數(shù)個數(shù)的

所有可能組合,以及相應(yīng)的機器實例ALU指令中存儲器操作數(shù)個數(shù)ALU指令中操作數(shù)的最大個數(shù)機器實例02IBMRT-PC3SPARC,MIPS12PDP-10,IBM360,Motorola680003IBM360的部分指令22PDP-11,部分IBM360指令3

33VAX(3)通用寄存器指令集結(jié)構(gòu)進一步細分為三種類型:(4)常見的三種通用寄存器型指令集結(jié)構(gòu)的優(yōu)缺點

注:表中(m,n)的含義是,指令的n個操作數(shù)中有m個存儲器操作數(shù)。

寄存器---寄存器型(R-R:register-register)

寄存器---存儲器型(R-M:register-memory)

存儲器---存儲器型(M-M:memory-memory)2.1指令集結(jié)構(gòu)的分類指令集結(jié)構(gòu)類型優(yōu)點缺點

寄存器-寄存器型(0,3)簡單,指令字長固定,是一種簡單的代碼生成模型,各種指令的執(zhí)行時鐘周期數(shù)相近。

和指令中含有對存儲器操作數(shù)訪問的結(jié)構(gòu)相比,指令條數(shù)多,因而其目標代碼較大。

寄存器-存儲器型(1,2)

可以直接對存儲器操作數(shù)進行訪問,容易對指令進行編碼,且其目標代碼較小。ADDR1,B指令中的操作數(shù)類型不同。在一條指令中同時對一個寄存器操作數(shù)和存儲器操作數(shù)進行編碼,將限制指令所能夠表示的寄存器個數(shù)。由于指令的操作數(shù)可以存儲在不同類型的存儲器單元,所以每條指令的執(zhí)行時鐘周期數(shù)也不盡相同。存儲器-存儲器型(3,3)是一種最緊密的編碼方式,無需“浪費”寄存器保存變量。指令字長多種多樣。每條指令的執(zhí)行時鐘周期數(shù)也大不一樣,對存儲器的頻繁訪問將導(dǎo)致存儲器訪問瓶頸問題。2.1指令集結(jié)構(gòu)的分類本節(jié)思考指令格式越簡單,編譯器的工作越簡單還是越復(fù)雜?P32指令格式越多樣,目標代碼越大還是越小?有了寄存器,編譯才有挑戰(zhàn)!2.2尋址方式

在通用寄存器指令集結(jié)構(gòu)中,一般是利用尋址方式指明指令中的操作數(shù)是一個常數(shù)、一個寄存器操作數(shù),抑或是一個存儲器操作數(shù)。

2.

當前指令集結(jié)構(gòu)中所使用的一些操作數(shù)尋址方式。第二章

計算機指令集結(jié)構(gòu)設(shè)計尋址方式指令實例含義寄存器尋址AddR4,R3Regs[R4]←Regs[R4]+Regs[R3]立即值尋址AddR4,#3Regs[R4]←Regs[R4]+3偏移尋址AddR4,100(R1)Regs[R4]←Regs[R4]+Mem[100+Regs[R1]]寄存器間接尋址AddR4,(R1)Regs[R4]←Regs[R4]+Mem[Regs[R1]]索引尋址AddR3,(R1+R2)Regs[R3]←Regs[R3]+Mem[Regs[R1]+Regs[R2]]直接尋址或絕對尋址AddR1,(1001)Regs[R1]←Regs[R1]+Mem[1001]存儲器間接尋址AddR1,@(R3)Regs[R1]←Regs[R1]+Mem[Mem[Regs[R3]]]自增尋址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,100(R2)[R3]Regs[R1]←Regs[R1]+Mem[100+Regs[R2]+Regs[R3]*d]3.尋址方式使用情況統(tǒng)計結(jié)果(大概率事件優(yōu)先)(VAX指令集結(jié)構(gòu)的機器:gcc、Spice和Tex基準程序)立即值尋址方式和偏移尋址方式的使用頻率十分高。4.各種偏移量字段大小的使用情況寄存器-寄存器型指令集結(jié)構(gòu)的機器上(MIPS)

運行SPECint92基準程序集(compress、espresso、eqntott、gcc、li)

運行SPECfp92基準程序集(dudoc、ear、hydro2d、mdljdp2、su2cor)2.2尋址方式

x軸的標記是對偏移量大小進行l(wèi)og2(·)運算所得,也就是偏移量字段的位數(shù)。2.2尋址技術(shù)◆

程序所使用的偏移量大小分布十分廣泛;◆

較小的偏移量和較大的偏移量均占有相當大的比例;◆

將偏移量字段的大小設(shè)置為12~16位。這種長度可以支持上述75%~99%基于偏移尋址方式的數(shù)據(jù)訪問中偏移量大小的表示。

2.2尋址方式5.在一種Load/Store型指令集結(jié)構(gòu)上,一些指令使用

立即值尋址方式的頻率。

比較指令和ALU指令使用立即值尋址方式十分頻繁。

6.不同立即值大小的使用分布情況

將立即值的大小設(shè)置為8~16位,可以覆蓋所有使用立即值尋址方式指令的50%~80%。

2.2尋址方式目標相同:都是為了解決操作數(shù)地址的修改問題,都能做到不改變程序而修改操作數(shù)地址。一臺計算機中,原則上,僅需設(shè)置間址尋址方式與變址尋址方式中的任何一種即可。主要差別:間接尋址地址在主存儲器中,沒有偏移量;變址尋址地址在寄存器中,帶偏移量。優(yōu)缺點:間接實現(xiàn)容易,只需要一條主存到數(shù)據(jù)寄存器的通路。速度慢,讀一個操作數(shù)需要訪存兩次以上。變址需要一個硬件加法器,不需要訪存,速度快;變址更適合于數(shù)組運算;變址可以向前也可以向后偏移;無論采用哪種方式,對于數(shù)組運算,都需要對地址進行增量的指令。但變址尋址可以帶有偏移量,更有效。間接尋址與變(偏)址尋址START:MOVEASI,ASR保存源數(shù)組基地址,為了程序的再入性MOVEADI,ADR保存目標(Destination)數(shù)組基地址MOVECNT,NUM保存數(shù)據(jù)個數(shù)LOOP:MOVE@ADI,@ASI傳送數(shù)據(jù)設(shè)AD、AS地址為100、101INCASI,源數(shù)組地址加1AD、AS中數(shù)據(jù)為10、50INCADI,目標數(shù)組地址加1地址50的數(shù)據(jù)放至地址10DECCNT,個數(shù)減1AD、AS中數(shù)據(jù)為11、51BGTLOOP,判斷仍然去地址100、101HALT停機100和500中的值為11、51ASR:AS源基地址地址51的數(shù)據(jù)放至地址11ADR:AD目標基址即10、50為源、目標初址NUM:N需傳送數(shù)據(jù)數(shù)目ASI:0當前征傳送源數(shù)組地址ADI:0當前征傳送目標數(shù)組地址CNT:0乘余數(shù)據(jù)個數(shù)START:MOVER,AS送源數(shù)組基址到寄存器R=10MOVECNT,NUM保存數(shù)據(jù)個數(shù)AD-AS=40LOOP:MOVEAD-AS(R),(R)AD-AS為地址偏移量,確定值INCR,變址寄存器中的值加1DECCNT,個數(shù)減1把10中的值放入40+10中BGTLOOP,判斷R=11HALT停機把11中的值放入40+11中NUM:N需傳送數(shù)據(jù)數(shù)目CNT:0乘余數(shù)據(jù)個數(shù)以AD=50,AS=10舉例MOVEAD-AS(R),(R),只需要訪存3次,哪3次?AD-AS匯編時計算

MOVE@ADI,@ASI,至少要訪存5次,哪5次?××00字節(jié)半字雙××08字單字半××10字單字字節(jié)單××18字××20××00字節(jié)浪費××08半字浪費××10單字浪費××18雙字××2010001001101010111100110111101111字節(jié)編址2.2尋址方式2.3指令集結(jié)構(gòu)的功能設(shè)計

第二章

計算機指令集結(jié)構(gòu)設(shè)計完整性:足夠用規(guī)整性:

對稱性——操作碼和存儲單元設(shè)置要對稱均勻性——數(shù)據(jù)表示、存儲單元、字長設(shè)置要均勻高效率:兼容性:能增加,但不能刪除和更改指令功能操作類型實例算術(shù)和邏輯運算整數(shù)的算術(shù)和邏輯操作:加、減、與、或等。數(shù)據(jù)傳輸Load/Store控制分支、跳轉(zhuǎn)、過程調(diào)用和返回、自陷(trap)等。系統(tǒng)操作系統(tǒng)調(diào)用、虛擬存儲器管理等。浮點浮點操作:加、乘等。十進制十進制加、十進制乘、十進制到字符的轉(zhuǎn)換。字符串字符串移動、字符串比較、字符串搜索等。圖形象素操作、壓縮/解壓操作等。1.指令集中操作的分類

2.一種指令集結(jié)構(gòu)中的指令到底要支持哪些類型的操作?

(指令集結(jié)構(gòu)功能設(shè)計問題)

兩種截然不同的方向:◆

復(fù)雜指令集計算機(CISC)強化指令功能,實現(xiàn)軟件功能向硬件功能轉(zhuǎn)移?!?/p>

精簡指令集計算機(RISC)盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達到 簡化實現(xiàn),提高性能的目的。

當今指令集結(jié)構(gòu)功能設(shè)計的一個主要趨勢。2.3指令集結(jié)構(gòu)的功能設(shè)計2.3.1CISC指令集結(jié)構(gòu)的功能設(shè)計CISC結(jié)構(gòu)追求的目標:

強化指令功能,減少程序的指令條數(shù),以達到提高性能的目的。增強指令功能主要是從如下幾個方面著手:1.

面向目標程序增強指令功能

提高運算型指令功能expect

提高傳送指令功能vector

增加程序控制指令功能ceil2.3指令集結(jié)構(gòu)的功能設(shè)計2.面向高級語言和編譯程序改進指令系統(tǒng)

(1)增加對高級語言和編譯系統(tǒng)支持的指令功能

對源程序中各種高級語言語句進行使用頻 度的統(tǒng)計與分析,對于使用頻度高的語句, 可以設(shè)置專門的指令或采取措施增加相應(yīng) 令的功能,以提高其編譯速度和執(zhí)行速度。

從面向編譯程序,尤其是從優(yōu)化代碼生成 的角度進行考慮,增加指令集結(jié)構(gòu)的規(guī)整 性來改進指令系統(tǒng)。2.3指令集結(jié)構(gòu)的功能設(shè)計規(guī)整性:沒有或盡可能減少例外的情況和特殊的應(yīng)用,以及所有運算都能對稱、均勻地

在存儲器單元或寄存器單元之間進行。(2)高級語言計算機指令系統(tǒng)

◆面向高級語言(HL)的機器縮小機器語言和高級語言的語義差距。

◆間接執(zhí)行型高級語言機器高級語言和機器語言是一一對應(yīng)的,用匯編的方法(可以用軟件實現(xiàn),也可以用硬件實現(xiàn))把高級語言源程序翻譯成機器語言程序。2.3指令集結(jié)構(gòu)的功能設(shè)計◆直接執(zhí)行型高級語言機器高級語言就作為機器語言,直接由硬件或固件對高級語言源程序的語句逐條進行解釋以執(zhí)行它。3.面向操作系統(tǒng)的優(yōu)化實現(xiàn)改進指令系統(tǒng)

操作系統(tǒng)的實現(xiàn)在很大程度上取決于體系結(jié)構(gòu)的支持。

(1)主要表現(xiàn)在對以下方面的支持2.3指令集結(jié)構(gòu)的功能設(shè)計

中斷處理

進程管理

存儲管理和保護系統(tǒng)工作狀態(tài)的建立與切換

(2)設(shè)置指令來優(yōu)化操作系統(tǒng)

支持系統(tǒng)工作狀態(tài)和訪問方式轉(zhuǎn)移的指令支持進程轉(zhuǎn)移的指令支持進程同步和互斥的指令2.3指令集結(jié)構(gòu)的功能設(shè)計2.3.2RISC指令集功能的設(shè)計1.CISC結(jié)構(gòu)存在的缺點(寫出來的程序小,內(nèi)存貴)(1)在CISC結(jié)構(gòu)的指令系統(tǒng)中,各種指令的使用頻率相差懸殊。(2)CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性帶來了計算機體系結(jié)構(gòu)的復(fù)雜性,這不僅增加了研制時間和成本,而且還容易造成設(shè)計錯誤。(3)CISC結(jié)構(gòu)指令系統(tǒng)的復(fù)雜性給VLSI設(shè)計增加了很大負擔,不利于單片集成。2.3指令集結(jié)構(gòu)的功能設(shè)計(4)CISC結(jié)構(gòu)的指令系統(tǒng)中,許多復(fù)雜指令需要很復(fù)雜的操作,因而運行速度慢。(5)在CISC結(jié)構(gòu)的指令系統(tǒng)中,由于各條指令的功能不均衡性,不利于采用先進的計算機體系結(jié)構(gòu)技術(shù)(如流水技術(shù))來提高系統(tǒng)的性能。2.RISC計算機(1)指令系統(tǒng)只包含那些使用頻率很高的指令和一些必要指令。

Intel80X86最常用的十條指令2.3指令集結(jié)構(gòu)的功能設(shè)計執(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%合計96%Intel80X86最常用的十條指令

(2)目的使得計算機體系結(jié)構(gòu)更加簡單、更加合理和更加有效,克服CISC結(jié)構(gòu)的缺點,使機器速度更快,程序運行時間縮短,從而提高計算機系統(tǒng)的性能。(3)設(shè)計原則

選取使用頻率最高的指令,并補充一些最有用的指令;每條指令的功能應(yīng)盡可能簡單,并在一個機器周期內(nèi)完成;所有指令長度均相同;2.3指令集結(jié)構(gòu)的功能設(shè)計

只有Load和Store操作指令才訪問存儲器;

其它指令操作均在寄存器之間進行;以簡單有效的方式支持高級語言。2.3.3控制指令

(1)跳轉(zhuǎn):當控制指令為無條件改變控制流時,稱之為“跳轉(zhuǎn)”。(2)分支:當控制指令是有條件改變控制流時,稱之為“分支”。2.3指令集結(jié)構(gòu)的功能設(shè)計

條件分支跳轉(zhuǎn)過程調(diào)用過程返回(3)控制流程的各種改變情況2.3指令集結(jié)構(gòu)的功能設(shè)計1.控制指令的使用頻率

(一臺Load/Store型指令集結(jié)構(gòu)的機器:SPECint92、Specfp92基準程序)改變控制流的大部分指令是條件分支指令。表示分支條件的技術(shù)測試分支條件的方法優(yōu)點缺點條件碼(CC)

在程序的控制下,由ALU操作設(shè)置特殊的位。

可以自由設(shè)置分支條件。CC是額外狀態(tài),條件碼限制了指令順序,因為必須從一條指令將分支條件信息傳送到分支指令。條件寄存器

根據(jù)比較結(jié)果測試條件寄存器。

簡單

占用了一個寄存器。

比較且分支比較操作是分支指令的一部分,通常這種比較是受一定限制的。一條指令完成了兩條指令的功能。

分支指令的操作增多。2.常用的三種表示分支條件的技術(shù)及其優(yōu)缺點3.分支目標地址的表示

PC-相對尋址:在指令中提供一個和程序計數(shù)器(PC)的值相加的偏移量。(1)有效地縮短指令中表示目標地址的字段的長度;(2)使得代碼在執(zhí)行時與它被載入的位置無關(guān)。關(guān)鍵問題是:轉(zhuǎn)移目標離當前控制指令的偏移量有多大?

2.3指令集結(jié)構(gòu)的功能設(shè)計4.過程調(diào)用和返回的狀態(tài)保存

兩種方法來保存寄存器的內(nèi)容:

(1)“由調(diào)用者保存”方法

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

2.3指令集結(jié)構(gòu)的功能設(shè)計2.3指令集結(jié)構(gòu)的功能設(shè)計全局變量X保留在P2知道的地方。P2不會改變它,但P3也許會改變它。宜采用調(diào)用者保留。2.4操作數(shù)的類型、表示和大小操作數(shù)類型和操作數(shù)表示是軟硬件主要界面之一。操作數(shù)類型:面向應(yīng)用、面向軟件系統(tǒng)所處理的各

種數(shù)據(jù)結(jié)構(gòu).操作數(shù)表示:硬件結(jié)構(gòu)能夠識別、指令系統(tǒng)可以直

接調(diào)用的那些結(jié)構(gòu)。確定操作數(shù)表示是軟硬件取舍折衷的問題。第二章

計算機指令集結(jié)構(gòu)設(shè)計

1.操作數(shù)的類型

整數(shù)(定點)浮點十進制字符2.操作數(shù)類型的兩種表示方法

(1)操作數(shù)的類型由操作碼的編碼指定。(最常見的一種方法)(2)數(shù)據(jù)可以附上由硬件解釋的標記,由這些標記指定操作數(shù)的類型,從而選擇適當?shù)倪\算。很少見

字符串向量堆棧2.4操作數(shù)的類型、表示和大小1013101410141014000000000000用數(shù)據(jù)描述符描述一個3×4二維陣列三元素向量四元素向量塊內(nèi)的元素個數(shù)四元素向量000000000000000000000000四元素向量3.操作數(shù)大小

字節(jié)半字(16位)單字(32位)雙字(64位)(1)字符:用ASCII碼表示,為一個字節(jié)大小。(2)整數(shù):用二進制補碼表示,其大小可以是字節(jié)、半字或單字。(3)浮點操作數(shù):單精度浮點(單字大?。┖碗p精度浮點(雙字大小).IEEE754(4)字符串:將字符串中的每個字符當作一個字節(jié)來看待。2.4操作數(shù)的類型、表示和大小(5)十進制操作數(shù)

壓縮十進制 用4位二進制數(shù)編碼數(shù)字0~9,然后將 兩個十進制數(shù)字壓縮在一個字節(jié)中存儲。

二進制編碼十進制(非壓縮十進制) 將十進制數(shù)字直接用字符串來表示。4.訪問不同操作數(shù)大小的頻率

測試統(tǒng)計SPECint92基準程序和SPECfp92基準程序?qū)ψ止?jié)、半字、單字和雙字四種大小的操作數(shù)訪問情況。2.4操作數(shù)的類型、表示和大小基準程序?qū)巫趾碗p字的數(shù)據(jù)訪問具有較高的頻率。

選擇操作數(shù)字段的長度為32位,可以有效支持8、16、32位整型操作數(shù),以及32位浮點操作數(shù)的表示。

選擇操作數(shù)字段長度為64位,則更具有一般性。2.5指令集格式的設(shè)計

◆指令由操作碼和地址碼組成。◆

指令集格式的設(shè)計確定操作碼字段和地址碼字段的大小及其組合形式,以及各種尋址方式的編碼方法?!?/p>

設(shè)計原則盡可能地增加寄存器數(shù)目和尋址方式類型;充分考慮寄存器字段和尋址方式字段對指令平均字長的影響,以及它們對目標代碼大小的影響;設(shè)計出的指令集格式能夠在具體實現(xiàn)中容易處理。第二章

計算機指令集結(jié)構(gòu)設(shè)計2.5.1尋址方式的表示方法

1.兩種表示尋址方式的方法

(1)將尋址方式編碼于操作碼中,由操作碼在描述指令操作的同時,也描述了相應(yīng)操作的尋址方式;(2)為每個操作數(shù)設(shè)置一個地址描述符,由該地址描述符表示相應(yīng)操作數(shù)的尋址方式。

2.5指令集格式的設(shè)計2.選擇哪種表示尋址方式的方法?

由兩個因數(shù)決定(P47):(1)指令集結(jié)構(gòu)所采用的尋址方式種類及其適用范圍(2)操作碼與尋址方式之間的獨立程度2.5.2指令集格式的選擇

三種指令集編碼格式:

變長編碼格式固定長度編碼格式混合型編碼格式2.5指令集格式的設(shè)計

1.

變長編碼格式◆

有效減少指令集結(jié)構(gòu)的平均指令長度,降低目標代碼的長度?!?/p>

使得各條指令的字長和執(zhí)行時間大不一樣。多數(shù)CISC計算機的指令集結(jié)構(gòu)均是采用這種編碼格式。2.

固定長度編碼格式

將操作類型和尋址方式組合編碼在操作碼中,所有指令的長度是固定唯一的。操作碼地址碼1地址碼2地址碼3操作碼地址描述符1地址碼1…地址描述符n地址碼n3.混合型編碼格式

通過提供一定類型的指令字長,期望能夠兼顧降低目標代碼長度和降低譯碼復(fù)雜度兩個目標。2.5指令集格式的設(shè)計操作碼地址描述符地址碼操作碼地址描述符1地址描述符2地址碼操作碼地址描述符地址碼1地址碼2思考題:某處理機的指令字長為16位,有雙地址、單地址和零地址三類,并假設(shè)每個地址段的長度為6位。(P522.12)(1)如果雙地址指令有15條,單地址和零地址指令的條數(shù)基本相同,問單地址和零地址各有多少條?并且為這三類指令分配操作碼。(2)如果要求三類指令的比例大致為1:9:9,問雙地址、單地址和零地址指令各有多少條?并且為這三類指令分配操作碼。2.5指令集格式的設(shè)計156364雙地址0000-1110單地址1111,0000,00-1111,1111,10零地址1111,1111,1100,0000-1111,1111,1111,111114126128雙地址0000-1101單地址1110,0000,00-1111,1111,01零地址1111,1111,1000,0000-1111,1111,1111,11112.6MIPS指令集結(jié)構(gòu)MIPS是一種多元未飽和型指令集結(jié)構(gòu)。MIPS指令集結(jié)構(gòu)的設(shè)計思想:

Microprocessorwithoutinterlockedpipedstages具有一個簡單的Load/Store指令集;注重指令流水效率;簡化指令的譯碼;高效支持編譯器。

第二章

計算機指令集結(jié)構(gòu)設(shè)計2.6.1MIPS指令集結(jié)構(gòu)1.MIPS中的寄存器

(1)32個通用寄存器

命名:R0、R1、、R31

長度:32位寄存器R0的值總是為0。(2)32個浮點寄存器

命名:F0、F1、、F31

長度:32位(用來保存32位的單精度浮點數(shù))2.6MIPS指令集結(jié)構(gòu)◆

64位雙精度浮點數(shù)相鄰兩個浮點寄存器奇偶對FiFi+1

(i=0,2,4,,30)

命名:F0、F2、、F28、F30

(3)一些特殊的寄存器(比如用來保存浮點操作結(jié)果信息的浮點狀態(tài)寄存器)可以和通用寄存器相互進行數(shù)據(jù)傳送。2.6MIPS指令集結(jié)構(gòu)2.MIPS的數(shù)據(jù)類型

MIPS提供了多種長度的整型數(shù)據(jù)和浮點數(shù)據(jù)。(1)

整型數(shù)據(jù)有8位、16位和32位多種長度。(當8位和16位整型數(shù)據(jù)載入到寄存器中時,

用0或數(shù)據(jù)的符號位來填充32位通用寄存器

中的剩余位。)(2)

浮點數(shù)據(jù)有32位單精度浮點數(shù)和64位雙精度浮點數(shù)。浮點數(shù)據(jù)表示采用的是IEEE754標準。2.6MIPS指令集結(jié)構(gòu)IEEE754浮點數(shù)據(jù)表示標準1823S符號位EM指數(shù)尾數(shù)32位單精度形式11152S符號位EM指數(shù)尾數(shù)64位雙精度形式3.MIPS的尋址方式和數(shù)據(jù)傳送

(1)

尋址方式寄存器尋址立即值尋址偏移尋址寄存器間接尋址

(2)寄存器尋址字段的大小為5位,用來表示32個

通用寄存器或浮點寄存器。

(3)存儲器地址采用的是高端字節(jié)表示順序,存儲器按字節(jié)尋址,其地址寬度為32位。(能否直接尋址)2.6MIPS指令集結(jié)構(gòu)4.MIPS的指令格式

尋址方式編碼在操作碼中。

指令的字長32位,其中用6位表示操作碼。(4)通過寄存器(通用寄存器和浮點寄存器)和存

儲器之間的數(shù)據(jù)傳送操作完成對存儲器的訪問。2.6MIPS指令集結(jié)構(gòu)各種類型指令的格式5.MIPS中的操作

(1)四種類型的操作

Load和Store操作

ALU操作分支和跳轉(zhuǎn)操作浮點操作

(2)約定(1)符號“”:數(shù)據(jù)傳送操作其后附帶一個下標n,也即“n”表示傳送

一個n位數(shù)據(jù)。(2)符號“##”:兩個域的串聯(lián)操作2.6MIPS指令集結(jié)構(gòu)(3)域的下標:表明從該域中選擇某一位。域中位的標記是從最高位開始標記,并且

起始標記為0。下標可以是一個單獨的數(shù)字。如Regs[R4]0

:選擇寄存器R4中內(nèi)容的符號位。下標也可以是一個范圍。如Regs[R3]24..31

:選擇寄存器R3中內(nèi)容

的最低一個字節(jié)。(4)上標:表示復(fù)制一個域。如024可以得到一個24位全為0的一個域。2.6MIPS指令集結(jié)構(gòu)(5)變量Mem:表示存儲器中的一個數(shù)組,

存儲器按照字節(jié)尋址。舉例R8和R10:32位寄存器Regs[R10]16..3116(Mem[Regs[R8]]0)8##Mem[Regs[R8]]的含義。3.MIPS中的四種操作類型

(1)Load和Store操作2.6MIPS指令集結(jié)構(gòu)存儲器的地址是32位的,但里面存的卻是一個8位的字節(jié)指令實例指令名稱含義LWR1,30(R2)載入整型字Regs[R1]←32Mem[30+Regs[R2]]LWR1,1000(R0)載入整型字Regs[R1]←32Mem[1000+0]LBR1,40(R3)載入字節(jié)Regs[R1]←32(Mem[40+Regs[R3]]0)24##Mem[40+Regs[R3]]LBUR1,40(R3)載入無符號字節(jié)Regs[R1]←32024##Mem[40+Regs[R3]]LHR1,40(R3)載入整型半字Regs[R1]←32(Mem[40+Regs[R3]]0)16##Mem[40+Regs[R3]]##Mem[41+Regs[R3]]LFF0,50(R3)載入單精度浮點Regs[F0]←32Mem[50+Regs[R3]]LDF0,50(R2)載入雙精度浮點Regs[F0]##Regs[F1]←64Mem[50+Regs[R2]]SW500(R4),R3儲存整型字Mem[500+Regs[R4]]←32Regs[R3]SF40(R3),F0儲存單精度浮點Mem[40+Regs[R3]]←32Regs[F0]SD40(R3),F0儲存雙精度浮點Mem[40+Regs[R3]]←32Regs[F0]Mem[44+Regs[R3]]←32Regs[F1]SH502(R2),R31儲存整型半字Mem[502+Regs[R2]]←16Regs[R31]16..31SB41(R3),R2儲存整型字節(jié)Mem[41+Regs[R3]]←8Regs[R2]24..31MIPS中Load和Store指令實例(2)ALU操作

簡單的算術(shù)和邏輯運算寄存器比較指令(,,,,,)指令實例指令名稱

含義DAddUR1,R2,R3無符號加Regs[R1]←Regs[R2]+Regs[R3]DADDIUR1,R2,#3和無符號立即值相加Regs[R1]←Regs[R2]+3LUIR1,#42立即值載入高16位Regs[R1]←42##016DSLLR1,R2,#5邏輯左移的立即值形式Regs[R1]←Regs[R2]<<5DSLTR1,R2,R3設(shè)置小于if(Regs[R2]<Regs[R3])Regs[R1]←1elseRegs[R1]←0ALU指令實例

2.6MIPS指令集結(jié)構(gòu)(3)分支和跳轉(zhuǎn)操作

◆根據(jù)描述目標地址的方法和是否鏈接可以將

跳轉(zhuǎn)操作指令分為四種類型。 其中:兩種類型的跳轉(zhuǎn)指令用帶符號位的26位偏移量加上程序計數(shù)器的值來確定跳轉(zhuǎn)的目標地址;另外兩種類型的跳轉(zhuǎn)指令則指定一個寄

存器,由寄存器中的內(nèi)容決定跳轉(zhuǎn)的目

標地址。2.6MIPS指令集結(jié)構(gòu)◆

跳轉(zhuǎn)有兩種類型

溫馨提示

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

評論

0/150

提交評論