計(jì)算機(jī)體系結(jié)構(gòu)第二章_第1頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)第二章_第2頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)第二章_第3頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)第二章_第4頁(yè)
計(jì)算機(jī)體系結(jié)構(gòu)第二章_第5頁(yè)
已閱讀5頁(yè),還剩128頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章 計(jì)算機(jī)指令集結(jié)構(gòu)設(shè)計(jì)1、指令集結(jié)構(gòu)分類2、尋址技術(shù)3、指令集結(jié)構(gòu)的功能設(shè)計(jì)4、操作數(shù)的類型、表示和大小5、指令集格式的設(shè)計(jì)6、編譯技術(shù)與計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)7、MIPS指令集結(jié)構(gòu)8、DLX指令集結(jié)構(gòu)指令集在計(jì)算機(jī)體系結(jié)構(gòu)中的地位 instruction setsoftwarehardwareInterface DesignA good interface:Lasts through many implementations (portability, compatability)Is used in many differeny ways (generality)Provides con

2、venient functionality to higher levelsPermits an efficient implementation at lower levelsInterfaceimp 1imp 2imp 3useuseusetimeEvolution of Instruction SetsSingle Accumulator (EDSAC 1950)Accumulator + Index Registers(Manchester Mark I, IBM 700 series 1953)Separation of Programming Model from Implemen

3、tationHigh-level Language BasedConcept of a Family(B5000 1963)(IBM 360 1964)General Purpose Register MachinesComplex Instruction SetsLoad/Store ArchitectureRISC(Vax, Intel 432 1977-80)(CDC 6600, Cray 1 1963-76)(Mips,Sparc,HP-PA,IBM RS6000,PowerPC 1987)Mixed CISC & RISC?(IA-64. . .1999)CISC(Intel x86

4、 1980-199x)指令集結(jié)構(gòu)的分類一般按以下5個(gè)因素考慮分類 在CPU中操作數(shù)的存儲(chǔ)方法 指令中顯示表示的操作數(shù)個(gè)數(shù) 操作數(shù)的尋址方式 指令集所提供的操作類型 操作數(shù)的類型和大小 其中CPU中操作數(shù)的存取方法,是各種指令集結(jié)構(gòu)之間最主要的區(qū)別所在指令集結(jié)構(gòu)的分類CPU中用來(lái)存儲(chǔ)操作數(shù)的存儲(chǔ)單元主要有:堆棧累加器一組寄存器2. 指令中的操作數(shù)可以顯式給出,也可以隱式地給出。3. CPU對(duì)操作數(shù)的不同存取方式 分類概述 在CPU中操作數(shù)的存儲(chǔ)方法是各種指令集之間的重要區(qū)別所在。CPU中用來(lái)存儲(chǔ)操作數(shù)的存儲(chǔ)單元主要有:堆棧、累加器或一組寄存器。因此如果根據(jù)CPU內(nèi)部存儲(chǔ)單元類型對(duì)指令集結(jié)構(gòu)進(jìn)行分

5、類,可分為:堆棧型指令集結(jié)構(gòu)、累加器型指令集結(jié)構(gòu)和通用寄存器型指令集結(jié)構(gòu)CPU提供的暫存器堆棧累加器一組寄存器CPU對(duì)操作數(shù)的不同存取方式每條ALU指令顯式表示的操作數(shù)個(gè)數(shù)012/3運(yùn)算結(jié)果的目的地堆棧累加器寄存器或存儲(chǔ)器訪問(wèn)顯式操作數(shù)的方法PUSH/POPLOAD/STORE累加器LOAD/STORE寄存器或存儲(chǔ)器累加器型堆棧型通用寄存器型 通用寄存器型指令集結(jié)構(gòu)的一個(gè)主要優(yōu)點(diǎn)就是能夠使編譯器有效地使用寄存器。這不僅體現(xiàn)在表達(dá)式求值方面,更重要的是體現(xiàn)在利用寄存器存放變量所帶來(lái)的優(yōu)越性。(A*B)-(C*D)-(E*F) 將變量分配給寄存器,不但能夠減少存儲(chǔ)器的通信量,加快程序的執(zhí)行速度,而

6、且和存儲(chǔ)器相比,還可以用更少的地址位來(lái)尋址寄存器,從而能夠有效改進(jìn)程序的目標(biāo)代碼大小。通用寄存器型通用寄存器型指令集結(jié)構(gòu)的主要優(yōu)點(diǎn) 使編譯器有效地使用寄存器。 (1) 在表達(dá)式求值方面,比其它類型指令集結(jié)構(gòu) 具有更大的靈活性; (2) 寄存器可以用來(lái)存放變量。 減少存儲(chǔ)器的通信量,加快程序的執(zhí)行速度。 (因?yàn)榧拇嫫鞅却鎯?chǔ)器快) 可以用更少的地址位來(lái)尋址寄存器,從而可 以有效改進(jìn)程序的目標(biāo)代碼大小。 CPU需要設(shè)置多少個(gè)寄存器呢? 主要由編譯器使用寄存器的情況來(lái)決定。 為表達(dá)式求值保留一些寄存器 為傳遞參數(shù)保留一些寄存器 用剩下的寄存器來(lái)保存變量指令集結(jié)構(gòu)類型優(yōu) 點(diǎn)缺 點(diǎn)寄存器寄存器型(0,3)

7、 簡(jiǎn)單,指令字長(zhǎng)固定,是一種簡(jiǎn)單的代碼生成模型,各種指令的執(zhí)行時(shí)鐘周期數(shù)相近。 和指令中含有對(duì)存儲(chǔ)器操作數(shù)訪問(wèn)的結(jié)構(gòu)相比,指令條數(shù)多,因而其目標(biāo)代碼較大。寄存器存儲(chǔ)器型(1,2) 可以直接對(duì)存儲(chǔ)器操作數(shù)進(jìn)行訪問(wèn),容易對(duì)指令進(jìn)行編碼,且其目標(biāo)代碼較小。 指令中的操作數(shù)類型不同。在一條指令中同時(shí)對(duì)一個(gè)寄存器操作數(shù)和存儲(chǔ)器操作數(shù)進(jìn)行編碼,將限制指令所能夠表示的寄存器個(gè)數(shù)。由于指令的操作數(shù)可以存儲(chǔ)在不同類型的存儲(chǔ)器單元,所以每條指令的執(zhí)行時(shí)鐘周期數(shù)也不盡相同。存儲(chǔ)器存儲(chǔ)器型(3,3) 是一種最緊密的編碼方式,無(wú)需“浪費(fèi)”寄存器保存變量。 指令字長(zhǎng)多種多樣。每條指令的執(zhí)行時(shí)鐘周期數(shù)也大不一樣,對(duì)存儲(chǔ)器的

8、頻繁訪問(wèn)將導(dǎo)致存儲(chǔ)器訪問(wèn)瓶頸問(wèn)題。Comparison of ISA ClassesCode Sequence for C = A+BMemory efficiency? Instruction access? Data access?三種類型指令集結(jié)構(gòu)的優(yōu)缺點(diǎn)指令集結(jié)構(gòu)類型堆棧型累加器型寄存器型優(yōu)點(diǎn)是一種表示計(jì)算的簡(jiǎn)單模型;指令短小減少了機(jī)器的內(nèi)部狀態(tài);指令短小是代碼生成的最一般的模型缺點(diǎn)不能隨機(jī)訪問(wèn)堆棧,從而很難生成有效代碼。同時(shí),由于堆棧是瓶頸,所以很難被高效地實(shí)現(xiàn)由于累加器是唯一的暫存器,這種機(jī)器的存儲(chǔ)器通信開(kāi)銷最大所有操作數(shù)均需命名,且要顯式表示,因而指令較長(zhǎng)Examples of

9、Register UsageTypical ALU InstructionsMIPS : add Rd, Rs, Rt (0,3)80 x86 : ADD AL, SI (1,2)VAX: CMPB (R0), (R0) (2,2)Pros and Cons Register-Register: (0,3)+Simple, fixed length instruction encoding.+Simple code-generation model.+Similar number of clocks to execute.-Higher instruction count.-Bit encod

10、ing may be wasteful.Memory-memory: (3,3)+Most compact.-Different Instruction size.-Memory access bottleneck.Register-Memory: (1,2)+Data access without loading first.+Easy to encode and yield good density.-One operand is destroyed.-Limited number of registers.Byte OrderingIdeaBytes in long word numbe

11、red 0 to 3Which is most (least) significant?Can cause problems when exchanging binary data between machinesBig Endian: Byte 0 is most, 3 is leastIBM 360/370, Motorola 68K, Sparc.Little Endian: Byte 0 is least, 3 is mostIntel x86, VAXAlphaChip can be configured to operate either wayDEC workstation ar

12、e little endianCray T3E Alphas are big endian尋址方式Addressing Modes在通用寄存器指令集結(jié)構(gòu)中,一般是利用尋址方式指明指令中的操作數(shù)是一個(gè)常數(shù)、一個(gè)寄存器操作數(shù),抑或是一個(gè)存儲(chǔ)器操作數(shù)。 當(dāng)前指令集結(jié)構(gòu)中使用的一些操作數(shù)尋址方式。尋址方式Addressing ModesImmediate立即尋址Add R4, #3RegsR4 RegsR4+3Operand:3Register寄存器尋址Add R4, R3RegsR4 RegsR4+RegsR3R3OperandRegistersRegister Indirect寄存器間接尋址Add

13、 R4, (R1)RegsR4 RegsR4+MemRegsR1R1OperandRegistersMemoryDirect直接尋址Add R4, (1001)RegsR4 RegsR4+Mem10011001OperandMemoryMemory Indirect存儲(chǔ)器間接尋址Add R4, (R3)RegsR4 RegsR4+MemMemRegsR3R3OperandRegistersMemoryDisplacement偏移尋址Add R4, 100(R1)RegsR4 RegsR4+Mem100+R1RegistersR1100MemoryOperandScaled縮放尋址Add R1,

14、 100(R2) R3RegsR1 RegsR1+Mem100+ RegsR2+RegsR3*dRegistersR2100MemoryOperandR3*d尋址方式指令實(shí)例含 義寄存器尋址Add R4 , R3RegsR4RegsR4RegsR3立即值尋址Add R4 , #3RegsR4RegsR43偏移尋址Add R4 , 100(R1)RegsR4RegsR4Mem100+RegsR1寄存器間接尋址Add R4 , (R1)RegsR4RegsR4MemRegsR1索引尋址Add R3 , (R1 + R2)RegsR3RegsR3MemRegsR1+RegsR2直接尋址或絕對(duì)尋址Ad

15、d R1 , (1001)RegsR1RegsR1Mem1001存儲(chǔ)器間接尋址Add R1 , (R3)RegsR1RegsR1MemMemRegsR3自增尋址Add R1 , (R2)+RegsR1RegsR1MemRegsR2RegsR2RegsR2d自減尋址Add R1, -(R2)RegsR2RegsR2dRegsR1RegsR1+MemRegsR2縮放尋址AddR1 , 100(R2)R3RegsR1RegsR1Mem100RegsR2RegsR3*dAddressing Mode Usage3 Programs from SPEC89 on VAXOthers : 0.1%10%2

16、4%43%32%6%16%3%17%55%1%6%11%39%40%0%20%40%60%Memory IndirectRegister IndirectDisplacementFrequency of addressing modegccspiceTex0%30%50%ImmediateScaled立即值尋址方式和偏移尋址方式的使用頻率十分高。偏移尋址的大小寄存器寄存器型指令集結(jié)構(gòu)的機(jī)器上(MIPS)運(yùn)行SPECint92基準(zhǔn)程序集 (compress、espresso、eqntott、gcc、li) 運(yùn)行SPECfp92基準(zhǔn)程序集 (dudoc、ear、hydro2d、mdljdp2、su

17、2cor)Average of 5 programs from SPECint92 and SPECfp92.X-axis is log2 of displacement.1% of addresses 16 bits.Integer AverageFP AverageDisplacement Address Size程序所使用的偏移量大小分布十分廣泛; 較小的偏移量和較大的偏移量均占有相當(dāng)大的比例;將偏移量字段的大小設(shè)置為1216位。這種長(zhǎng)度可 以支持上述7599基于偏移尋址方式的數(shù)據(jù)訪 問(wèn)中偏移量大小的表示。 偏移大小的總結(jié)Load/Store:10 Programs from SPECI

18、nt92 and SPECfp9210%87%58%35%45%77%78%10%0%50%100%LoadsComparesALUALlInst.Percentage of operations using immediateFpIntegerImmediate Addressing ModeImmediate Addressing Mode50% to 60% fit within 8 bits75% to 80% fit within 16 bitsgccspiceTex 將立即值的大小設(shè)置為816位,可以覆蓋所有使用立即值尋址方式指令的5080。 Addressing Mode Sum

19、maryImportant data addressing modesDisplacementImmediateRegister IndirectDisplacement size should be 12 to 16 bits.Immediate size should be 8 to 16 bits.指令集結(jié)構(gòu)的功能設(shè)計(jì)確定軟、硬件功能分配,即確定哪些基本功能應(yīng)該由硬件實(shí)現(xiàn),哪些功能由軟件實(shí)現(xiàn)比較合適。在確定哪些基本功能用硬件來(lái)實(shí)現(xiàn)時(shí),主要考慮3個(gè)因素:速度、成本、靈活性硬件實(shí)現(xiàn)的特點(diǎn) 速度快、成本高、靈活性差軟件實(shí)現(xiàn)的特點(diǎn) 速度慢、價(jià)格便宜、靈活性好對(duì)指令集的基本要求 完整性、規(guī)整性、高

20、效率、兼容性 完整性:在一個(gè)有限可用的存儲(chǔ)空間內(nèi),對(duì)于任何可解的問(wèn)題,編制計(jì)算程序時(shí),指令集所提供的指令足夠用。要求指令集功能齊全、使用方便基本指令擴(kuò)展指令I(lǐng)nstruction OperationsArithmetic and Logical:add, subtract, and , or, etc.Data transfer:Load, Store, etc.Control:Jump, branch, call, return, trap, etc.Synchronization:Test & Set.String:string move, compare, search.操作類型實(shí) 例算

21、術(shù)和邏輯運(yùn)算整數(shù)的算術(shù)和邏輯操作:加、減、與、或等。數(shù)據(jù)傳輸Load/Store控制分支、跳轉(zhuǎn)、過(guò)程調(diào)用和返回、自陷等。系統(tǒng)操作系統(tǒng)調(diào)用、虛擬存儲(chǔ)器管理等。浮點(diǎn)浮點(diǎn)操作:加、乘等。十進(jìn)制十進(jìn)制加、十進(jìn)制乘、十進(jìn)制到字符的轉(zhuǎn)換。字符串字符串移動(dòng)、字符串比較、字符串搜索等。圖形象素操作、壓縮/解壓操作等。一般的指令集中操作的分類基本擴(kuò)展規(guī)整性:主要包括對(duì)稱性和均勻性。對(duì)稱性:所有與指令集有關(guān)的存儲(chǔ)單元的使用、操作碼的設(shè)置等都是對(duì)稱的。例如:在存儲(chǔ)單元的使用上,所有通用寄存器都要同等對(duì)待。在操作碼的設(shè)置上,如果設(shè)置了A-B的指令,就應(yīng)該也設(shè)置B-A的指令。 均勻性:指對(duì)于各種不同的操作數(shù)類型、字長(zhǎng)、

22、操作種類和數(shù)據(jù)存儲(chǔ)單元,指令的設(shè)置都要同等對(duì)待。例如:如果某機(jī)器有5種數(shù)據(jù)表示,4種字長(zhǎng),兩種存儲(chǔ)單元,則要設(shè)置542=40種同一操作的指令。高效率:指指令的執(zhí)行速度快、使用頻度高。計(jì)算機(jī)指令系統(tǒng)優(yōu)化設(shè)計(jì)的兩種方向指令系統(tǒng)優(yōu)化設(shè)計(jì)有兩個(gè)截然相反的方向:CISC:增強(qiáng)指令功能,設(shè)置一些復(fù)雜指令,把一些原來(lái)由軟件實(shí)現(xiàn)的、常用的功能改用硬件的指令系統(tǒng)來(lái)實(shí)現(xiàn)。 強(qiáng)化指令功能,實(shí)現(xiàn)軟件功能向硬件功能轉(zhuǎn)移。 (減少I(mǎi)C)RISC:盡量簡(jiǎn)化指令功能,只保留那些功能簡(jiǎn)單,能在一個(gè)節(jié)拍內(nèi)執(zhí)行完成指令,復(fù)雜的功能用一段子程序來(lái)實(shí)現(xiàn)。 盡可能地降低指令集結(jié)構(gòu)的復(fù)雜性,以達(dá)到簡(jiǎn)化 實(shí)現(xiàn),提高性能的目的。(減少CPI)

23、CISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)CISC設(shè)計(jì)風(fēng)格的主要特點(diǎn)是:(1)指令系統(tǒng)復(fù)雜;復(fù)雜(2)絕大多數(shù)指令需要多個(gè)機(jī)器周期方可執(zhí)行完畢;費(fèi)時(shí)(3)各種指令都可訪問(wèn)存儲(chǔ)器;自由主義(4)采用微程序控制;地方主義(5)有專用寄存器;小金庫(kù)(6)難以用優(yōu)化編譯器生成高效的目標(biāo)代碼程序。低效率CISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)面向目標(biāo)程序增強(qiáng)指令功能目標(biāo)程序是由機(jī)器指令直接組成的,是要在處理機(jī)上直接執(zhí)行的,因此,面向目標(biāo)程序優(yōu)化指令系統(tǒng)性能是提高計(jì)算機(jī)系統(tǒng)性能的最直接的辦法。優(yōu)化目標(biāo)程序的指標(biāo)主要有兩個(gè):縮短程序長(zhǎng)度;縮短程序執(zhí)行時(shí)間。優(yōu)化目標(biāo)程序的方法:對(duì)大量的目標(biāo)程序及其執(zhí)行情況進(jìn)行統(tǒng)計(jì)分析,找出

24、那些使用頻度高、執(zhí)行時(shí)間長(zhǎng)的指令或指令串,用硬件實(shí)現(xiàn)。CISC結(jié)構(gòu)追求的目標(biāo): 強(qiáng)化指令功能,減少程序的指令條數(shù),以達(dá)到提高性能的目的。增強(qiáng)指令功能主要是從如下幾個(gè)方面著手:CISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)優(yōu)化目標(biāo)程序的途徑:提高運(yùn)算型指令功能sin(x)、cos(x)、tg(x)、ln(x)、lg(x)多項(xiàng)式、快速傅立葉變換等提高傳送指令功能Intel 8088處理機(jī)主要數(shù)據(jù)傳送指令的使用情況指令種類使用頻度%執(zhí)行時(shí)間%MOV 24.85 17.44PUSH 10.36 11.11POP 4.14 2.61合計(jì) 39.35 31.16增加程序控制指令功能在一般高級(jí)語(yǔ)言中,循環(huán)體中只有一條語(yǔ)

25、句的40%;一至三條語(yǔ)句的70%。三條指令:加法、比較、條件轉(zhuǎn)移。合成一條指令CISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)面向高級(jí)語(yǔ)言和編譯程序改進(jìn)指令系統(tǒng)(1)增加對(duì)高級(jí)語(yǔ)言和編譯系統(tǒng)支持的指令功能對(duì)源程序中各種高級(jí)語(yǔ)言語(yǔ)句進(jìn)行使用頻度的統(tǒng)計(jì)與分析,對(duì)于使用頻度高的語(yǔ)句,可以設(shè)置專門(mén)的指令或采取措施增加相應(yīng)令的功能,以提高其編譯速度和執(zhí)行速度。 從面向編譯程序,尤其是從優(yōu)化代碼生成的角度進(jìn)行考慮,增加指令集結(jié)構(gòu)的規(guī)整性來(lái)改進(jìn)指令系統(tǒng)。 規(guī)整性:沒(méi)有或盡可能減少例外的情況和特殊的應(yīng)用,以及所有運(yùn)算都能對(duì)稱、均勻地在存儲(chǔ)器單元或寄存器單元之間進(jìn)行。CISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)(2)高級(jí)語(yǔ)言計(jì)算機(jī)指令

26、系統(tǒng)面向高級(jí)語(yǔ)言(HL)的機(jī)器縮小機(jī)器語(yǔ)言和高級(jí)語(yǔ)言的語(yǔ)義差距。間接執(zhí)行型高級(jí)語(yǔ)言機(jī)器高級(jí)語(yǔ)言和機(jī)器語(yǔ)言是一一對(duì)應(yīng)的,用匯編的方法(可以用軟件實(shí)現(xiàn),也可以用硬件實(shí)現(xiàn))把高級(jí)語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序。直接執(zhí)行型高級(jí)語(yǔ)言機(jī)器高級(jí)語(yǔ)言就作為機(jī)器語(yǔ)言,直接由硬件或固件對(duì)高級(jí)語(yǔ)言源程序的語(yǔ)句逐條進(jìn)行解釋以執(zhí)行它。高級(jí)語(yǔ)言不需要編譯,直接由機(jī)器的硬件來(lái)執(zhí)行,如LISP計(jì)算機(jī)、PROLOG計(jì)算機(jī)等。CISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)面向操作系統(tǒng)的優(yōu)化實(shí)現(xiàn)改進(jìn)指令系統(tǒng)操作系統(tǒng)的實(shí)現(xiàn)在很大程度上取決于體系結(jié)構(gòu)的支持。 (1) 主要表現(xiàn)在對(duì)以下方面的支持 中斷處理 進(jìn)程管理 存儲(chǔ)管理和保護(hù) 系統(tǒng)工作狀態(tài)的建立

27、與切換CISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì) (2) 設(shè)置指令 支持系統(tǒng)工作狀態(tài)和訪問(wèn)方式轉(zhuǎn)移的指令 支持進(jìn)程轉(zhuǎn)移的指令 支持進(jìn)程同步和互斥的指令CISC結(jié)構(gòu)的缺點(diǎn)各種指令使用頻率相差懸殊設(shè)計(jì)復(fù)雜,增加了成本,測(cè)試?yán)щy復(fù)雜性不利于VLSI設(shè)計(jì)指令執(zhí)行慢不利于流水線技術(shù)的使用Top-9 x86 Instructions94%20%與80%定律RISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)RISC的定義與特點(diǎn):大多數(shù)指令在單周期內(nèi)完成;采用LOAD/STORE結(jié)構(gòu);硬布線控制邏輯;減少指令和尋址方式的種類;固定的指令格式;注重譯碼的優(yōu)化。RISC計(jì)算機(jī)指令集結(jié)構(gòu)的功能設(shè)計(jì)遵循如下原則:選取使用頻率最高的指令,并補(bǔ)

28、充一些最有用的指令;每條指令的功能盡可能簡(jiǎn)單,并在一個(gè)中期內(nèi)完成;所有指令長(zhǎng)度均相同;LOAD/STROE結(jié)構(gòu);以簡(jiǎn)單有效的方式支持高級(jí)語(yǔ)言。RISC思想的精華減少指令平均執(zhí)行周期數(shù)P=I*CPI*TCISC與RISC的比較類型指令條數(shù)(I)指令平均周期數(shù)(CPI)周期時(shí)間(T)CISC 1215 33ns5nsRISC 1.31.4 1.11.4 10ns2nsRISC的關(guān)鍵技術(shù)延時(shí)轉(zhuǎn)移技術(shù);指令取消技術(shù);重疊寄存器窗口技術(shù);指令流調(diào)整技術(shù);硬件為主固件為輔;CISC和RISC兩種設(shè)計(jì)風(fēng)格的比較,其實(shí)就是說(shuō)RISC優(yōu)點(diǎn),簡(jiǎn)單地說(shuō)就是快、省、可靠、易實(shí)現(xiàn)、好優(yōu)化。CISC與RISC的比較快就是

29、提高處理器運(yùn)算速度省就是降低設(shè)計(jì)成本可靠就是提高處理器的可靠性和可測(cè)試性易實(shí)現(xiàn)就是使控制器簡(jiǎn)單,從而使集電路的設(shè)計(jì)和驗(yàn)證更容易好優(yōu)化就是能與編譯技術(shù)較好匹配,有效支持高級(jí)語(yǔ)言實(shí)現(xiàn), 易于實(shí)現(xiàn)優(yōu)化編譯。早期RISC微處理器1981年 ,Berkeley分校的Patterson 等人的32位微處理器RISC I:31條指令,指令字長(zhǎng)都是32位,78個(gè)通用寄存器,時(shí)鐘頻率為8 MHz; 控制部分所占的芯片面積只有約6%。商品化微處理器MC68000和Z8000分別為50%和53%;性能比MC68000和Z8000快34倍1983年的RISC :指令條數(shù)為39,通用寄存器個(gè)數(shù)為138,時(shí)鐘頻率為12

30、MHz ; 后來(lái)發(fā)展成了Sun公司的SPARC系列微處理器1981年,Stanford大學(xué)Hennessy等人的MIPS :后來(lái)發(fā)展成了MIPS Rxxx系列微處理器;IBM的801 :共同特點(diǎn):采用load-store結(jié)構(gòu)指令字長(zhǎng)為32位采用高效的流水技術(shù)控制指令的種類跳轉(zhuǎn)(jump):當(dāng)控制指令為無(wú)條件改變控制流時(shí),稱之為 “跳轉(zhuǎn)”。分支(conditional branch):當(dāng)控制指令是有條件改變控制流 時(shí),稱之為“分支”。調(diào)用(call)返回(return)控制指令控制指令的使用頻度Load/Store型指令集結(jié)構(gòu)的機(jī)器,SPECint92、Specfp92基準(zhǔn)程序改變控制流的大部分

31、指令是條件分支指令。Methods of Testing ConditionCondition code: Status bits are set by ALU operations.Add r1, r2, r3 and bz labelExtra status bitsCondition register:cmp r1, r2, r3 and bgt r1, labelSimple, but use up a registerCompare and branchbgt r1, r2, labelOne instructionToo much work per instruction條件測(cè)試方

32、法表示分支條件的技術(shù)測(cè)試分支條件的方法優(yōu) 點(diǎn)缺 點(diǎn)條件碼(CC) 在程序的控制下,由ALU操作設(shè)置特殊的位。 可以自由設(shè)置分支條件。CC是額外狀態(tài),條件碼限制了指令順序,因?yàn)楸仨殢囊粭l指令將分支條件信息傳送到分支指令。條件寄存器 根據(jù)比較結(jié)果測(cè)試條件寄存器。 簡(jiǎn)單 占用了一個(gè)寄存器。 比較且分支比較操作是分支指令的一部分,通常這種比較是受一定限制的。一條指令完成了兩條指令的功能。 分支指令的操作增多。常用的三種表示分支條件的技術(shù)及其優(yōu)缺點(diǎn) Conditional Branch DistanceShort displacement fields often sufficient for bran

33、chInteger AverageFP AverageConditional Branch AddressingPC-relative, since most branches from current PC addressAt least 8 bits.Compare Equal/Not Equal most important for integer programs.分支目標(biāo)地址的表示 PC相對(duì)尋址:在指令中提供一個(gè)和程序計(jì)數(shù) 器(PC)的值相加的偏移量。 (1) 有效地縮短指令中表示目標(biāo)地址的字段的 長(zhǎng)度; (2) 使得代碼在執(zhí)行時(shí)與它被載入的位置無(wú)關(guān)。 關(guān)鍵問(wèn)題是: 轉(zhuǎn)移目標(biāo)離當(dāng)前控

34、制指令的偏移量有多大? 過(guò)程調(diào)用和返回的狀態(tài)保存 兩種方法來(lái)保存寄存器的內(nèi)容: (1) “調(diào)用者保存”方法 在一個(gè)調(diào)用者調(diào)用別的過(guò)程時(shí),必須保存調(diào)用 者所要保存的寄存器,以備調(diào)用結(jié)束返回后,能夠 再次訪問(wèn)調(diào)用者。 (2) “被調(diào)用者保存”方法 被調(diào)用的過(guò)程必須保存它要用的寄存器,保證 不會(huì)破壞過(guò)程調(diào)用者的程序執(zhí)行環(huán)境,并在過(guò)程調(diào) 用結(jié)束返回時(shí),恢復(fù)這些寄存器的內(nèi)容。數(shù)據(jù)類型與數(shù)據(jù)表示數(shù)據(jù)的主要類型: 整數(shù)、浮點(diǎn)、字符、字符串、向量、堆棧等。數(shù)據(jù)類型的表示方法: 由操作碼的編碼指定 硬件標(biāo)記操作數(shù)的類型、表示和大小確定操作數(shù)表示是軟硬件取舍折衷的問(wèn)題。Data Types and UsageBy

35、te, half word (16 bits), word (32 bits), double word (64 bits).Arithmetic: Decimal: 4bit per digit.Integers: 2s complementFloating-point: IEEE standard- single, double, extended precision. Data數(shù)據(jù)類型總結(jié)基準(zhǔn)程序?qū)巫趾碗p字的數(shù)據(jù)訪問(wèn)具有較高的頻率。 選擇操作數(shù)字段的長(zhǎng)度為32位,可以有效支持8、16、 32位整型操作數(shù),以及32位浮點(diǎn)操作數(shù)的表示。 選擇操作數(shù)字段長(zhǎng)度為64位,則更具有一般性。浮點(diǎn)數(shù)的

36、數(shù)據(jù)格式和采用的碼制sef313023220符號(hào)階碼尾數(shù)單精度實(shí)數(shù)sef636252510符號(hào)階碼尾數(shù)雙精度實(shí)數(shù)e:偏碼表示;f:原碼表示單精度偏移量:127;雙精度偏移量1023。(-1)S1.f2e-127 (-1)S1.f2e-1023 指令格式設(shè)計(jì) 指令由操作碼和地址碼組成。 指令集格式的設(shè)計(jì) 確定操作碼字段和地址碼字段的大小及其組合 形式,以及各種尋址方式的編碼方法。 設(shè)計(jì)原則 盡可能地增加寄存器數(shù)目和尋址方式類型; 充分考慮寄存器字段和尋址方式字段對(duì)指令平均 字長(zhǎng)的影響,以及它們對(duì)目標(biāo)代碼大小的影響; 設(shè)計(jì)出的指令集格式能夠在具體實(shí)現(xiàn)中容易處理。尋址方式表示方法兩種表示尋址方式的方

37、法 (1) 將尋址方式編碼于操作碼中,由操作碼在描述指 令操作的同時(shí),也描述了相應(yīng)操作的尋址方式; (2) 為每個(gè)操作數(shù)設(shè)置一個(gè)地址描述符,由該地址描 述符表示相應(yīng)操作數(shù)的尋址方式。 如何選擇尋址方式表示方法 由兩個(gè)因數(shù)決定: (1) 指令集結(jié)構(gòu)所采用的尋址方式種類及其適用范圍 (2) 操作碼與尋址方式之間的獨(dú)立程度 指令格式的選擇 三種指令集編碼格式 : 變長(zhǎng)編碼格式 固定長(zhǎng)度編碼格式 混合型編碼格式 1. 變長(zhǎng)編碼格式 有效減少指令集結(jié)構(gòu)的平均指令長(zhǎng)度,降低目標(biāo)代碼 的長(zhǎng)度。 使得各條指令的字長(zhǎng)和執(zhí)行時(shí)間大不一樣。多數(shù)CISC計(jì)算機(jī)的指令集結(jié)構(gòu)均是采用這種編碼格式。2. 固定長(zhǎng)度編碼格式

38、將操作類型和尋址方式組合編碼在操作碼中,所有指 令的長(zhǎng)度是固定唯一的。3. 混合型編碼格式 通過(guò)提供一定類型的指令字長(zhǎng),期望能夠兼 顧降低目標(biāo)代碼長(zhǎng)度和降低譯碼復(fù)雜度兩個(gè)目標(biāo)。 Instruction FormatFixedOperation, address specifier 1, address specifier 2, address specifier 3.MIPS, SPARC, Power PC.VariableOperation & # of operands, address specifier1, , specifier n.VAXHybridIntel x86operat

39、ion, address specifier, address field.Operation, address specifier 1, address specifier 2, address field.Operation, address field, address specifier 1, address specifier 2. Summary:If code size is most important, use variable format.If performance is most important, use fixed format.Summary: ISAUse

40、general purpose registers with a load-store architecture. Support these addressing modes: displacement, immediate, register indirect.Support these simple instructions: load, store, add, subtract, move register, shift, compare equal, compare not equal, branch, jump, call, return.Support these data si

41、ze: 8-,16-,32-bit integer, IEEE FP standard.Provide at least 16 general purpose registers plus separate FP registers and aim for a minimal instruction set.現(xiàn)代編譯技術(shù)對(duì)計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)的影響如何分配和尋址變量?用多少個(gè)寄存器分配變量比較合適??jī)?yōu)化技術(shù)對(duì)指令使用頻度有何影響?程序中有那些控制指令?其使用頻度如何?分配數(shù)據(jù)的三種不同區(qū)域堆棧:用來(lái)分配局部變量(分配寄存器)全局?jǐn)?shù)據(jù)區(qū):分配靜態(tài)說(shuō)明的對(duì)象(分配寄存器)堆:動(dòng)態(tài)分配一些不適合在堆棧

42、中的對(duì)象計(jì)算機(jī)體系結(jié)構(gòu)對(duì)當(dāng)前編譯技術(shù)的影響“規(guī)整性”:要求指令集中的主要元素(操作、數(shù)據(jù)類型和尋址方式)必須正交。即:任何兩個(gè)元素彼此獨(dú)立?!疤峁┗局噶睿墙鉀Q方案”“簡(jiǎn)化方案的折衷取舍標(biāo)準(zhǔn)”“對(duì)于編譯時(shí)就已經(jīng)知道的量,提供能夠?qū)⑵渥優(yōu)槌?shù)的指令”32個(gè)64位通用寄存器(GPRs)R0,R1,R31也被稱為整數(shù)寄存器R0的值永遠(yuǎn)是032個(gè)64位浮點(diǎn)數(shù)寄存器(FPRs)F0,F(xiàn)1,F(xiàn)31用來(lái)存放32個(gè)單精度浮點(diǎn)數(shù)(32位),也可以用來(lái)存放32個(gè)雙精度浮點(diǎn)數(shù)(64位)存儲(chǔ)單精度浮點(diǎn)數(shù)(32位)時(shí),只用到FPR的一半,其另一半沒(méi)用。一些特殊寄存器它們可以與通用寄存器交換數(shù)據(jù)。例如,浮點(diǎn)狀態(tài)寄存器

43、用來(lái)保存有關(guān)浮點(diǎn)操作結(jié)果的信息。MIPS指令集結(jié)構(gòu)介紹MIPS64的一個(gè)子集,簡(jiǎn)稱為MIPS。1、MIPS的寄存器MIPS的數(shù)據(jù)表示整數(shù)字節(jié)(8位) 半字(16位)字(32位) 雙字(64位)浮點(diǎn)數(shù)單精度浮點(diǎn)數(shù)(32位) 雙精度浮點(diǎn)數(shù)(64位)字節(jié)、半字或者字在裝入64位寄存器時(shí),用零擴(kuò)展或者用符號(hào)位擴(kuò)展來(lái)填充該寄存器的剩余部分。裝入以后,對(duì)它們將按照64位整數(shù)的方式進(jìn)行運(yùn)算。2、MIPS的數(shù)據(jù)表示立即數(shù)尋址與偏移量尋址立即數(shù)字段和偏移量字段都是16位的。寄存器間接尋址是通過(guò)把0作為偏移量來(lái)實(shí)現(xiàn)的16位絕對(duì)尋址是通過(guò)把R0(其值永遠(yuǎn)為0)作為基址 寄存器來(lái)完成的MIPS的存儲(chǔ)器是按字節(jié)尋址的,

44、地址為64位所有存儲(chǔ)器訪問(wèn)都必須是邊界對(duì)齊的3、MIPS的數(shù)據(jù)尋址方式尋址方式編碼到操作碼中所有的指令都是32位的操作碼占6位3種指令格式4、MIPS的指令格式I類指令包括所有的load和store指令、立即數(shù)指令、,分支指令、寄存器跳轉(zhuǎn)指令、寄存器鏈接跳轉(zhuǎn)指令。立即數(shù)字段為16位,用于提供立即數(shù)或偏移量。load指令訪存有效地址:Regsrsimmediate從存儲(chǔ)器取來(lái)的數(shù)據(jù)放入寄存器rtstore指令訪存有效地址:Regsrsimmediate要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器rt中立即數(shù)指令Regsrt Regsrs op immediate分支指令轉(zhuǎn)移目標(biāo)地址:Regsrsimmediat

45、e,rt無(wú)用寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接轉(zhuǎn)移目標(biāo)地址為RegsrsR類指令包括ALU指令、專用寄存器讀/寫(xiě)指令、move指令等。ALU指令 Regsrd Regsrs funct Regsrt func為具體的運(yùn)算操作編碼J類指令包括跳轉(zhuǎn)指令、跳轉(zhuǎn)并鏈接指令、自陷指令、異常返回指令。在這類指令中,指令字的低26位是偏移量,它與PC值相加形成跳轉(zhuǎn)的地址。MIPS指令可以分為四大類load和storeALU操作分支與跳轉(zhuǎn)浮點(diǎn)操作符號(hào)的意義xny:從y傳送n位到xx,yz:把z傳送到x和y 下標(biāo):表示字段中具體的位;對(duì)于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依次進(jìn)行編號(hào),最高位為第0位,

46、次高位為第1位,依此類推。下標(biāo)可以是一個(gè)數(shù)字,也可以是一個(gè)范圍。例如:RegsR40:寄存器R4的符號(hào)位 RegsR456.63:R4的最低字節(jié)5、MIPS的操作Mem:表示主存;按字節(jié)尋址,可以傳輸任意個(gè)字節(jié)。上標(biāo):用于表示對(duì)字段進(jìn)行復(fù)制的次數(shù)。例如:0 32:一個(gè)32位長(zhǎng)的全0字段符號(hào)#:用于兩個(gè)字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例:R8、R10:64位的寄存器,則RegsR832.63 32 (Mem RegsR60)24# Mem RegsR6表示的意義是: 以R6的內(nèi)容作為地址訪問(wèn)內(nèi)存,得到的字節(jié)按符號(hào)位擴(kuò)展為32位后存入R8的低32位,R8的高32位(即RegsR80

47、.31)不變。 load和store指令指令舉例 指令名稱 含 義 LD R2,20(R3) 裝入雙字 RegsR264 Mem20+RegsR3 LW R2,40(R3) 裝入字 RegsR264 (Mem40+RegsR30)32 # Mem40+RegsR3 LB R2,30(R3) 裝入字節(jié) RegsR264 (Mem30+RegsR30)56 # Mem30+RegsR3 LBU R2,40(R3) 裝入無(wú)符號(hào)字節(jié) RegsR264 056 # Mem40+RegsR3 LH R2,30(R3) 裝入半字 RegsR264 (Mem30+RegsR30)48 #Mem30+RegsR

48、3# Mem31+RegsR3 L.S F2,60(R4) 裝入半字 RegsF264 Mem60+RegsR4 # 032 L.D F2,40(R3) 裝入雙精度浮點(diǎn)數(shù) RegsF264 Mem40+RegsR3 SD R4,300(R5) 保存雙字 Mem300+RegsR564 RegsR4 SW R4,300(R5) 保存字 Mem300+RegsR532 RegsR4 S.S F2,40(R2) 保存單精度浮點(diǎn)數(shù)Mem40+RegsR232 RegsF2 031 SH R5,502(R4)保存半字Mem502+RegsR416 RegsR5 48.63 ALU指令寄存器-寄存器型(R

49、R型)指令或立即數(shù)型算術(shù)和邏輯操作:加、減、與、或、異或和移位等指令舉例 指令名稱 含義 DADDUR1,R2,R3 無(wú)符號(hào)加 RegsR1 RegsR2+ RegsR3 DADDIU R4,R5,#6 加無(wú)符號(hào)立即數(shù) RegsR4 RegsR5+6 LUIR1,#4 把立即數(shù)裝入到一個(gè)字的高16位 RegsR1 032 # 4 # 016DSLLR1,R2,#5 邏輯左移 RegsR1 RegsR25 DSLT R1,R2,R3 置小于 If(RegsR2 RegsR3)RegsR1 1 else RegsR10 R0的值永遠(yuǎn)是0,它可以用來(lái)合成一些常用的操作。例如:DADDIU R1,R0

50、,#100 /給寄存器R1裝入常數(shù)100DADD R1,R0,R2 /把寄存器R2中的數(shù)據(jù)傳送到寄存器R1由一組跳轉(zhuǎn)和一組分支指令來(lái)實(shí)現(xiàn)控制流的改變典型的MIPS控制指令6、MIPS的控制指令指令舉例 指令名稱 含義 J name 跳轉(zhuǎn) PC 3663 name2JAL name 跳轉(zhuǎn)并鏈接 RegsR31PC+4;PC 3663name2;(PC+4)227)name(PC+4)+227) JALR R3 寄存器跳轉(zhuǎn)并鏈接 RegsR31PC+4;PC RegsR3 JR R5 寄存器跳轉(zhuǎn) PC RegsR5 BEQZ R4,name 等于零時(shí)分支 if(RegsR4= 0) PCname

51、;(PC+4)217)name(PC+4)+217) BNE R3,R4,name 不相等時(shí)分支 if(RegsR3!= RegsR4) PCname(PC+4)217)name(PC+4)+217) MOVZ R1,R2,R3 等于零時(shí)移動(dòng) if(RegsR3=0) RegsR1 RegsR2 ?跳轉(zhuǎn)指令根據(jù)跳轉(zhuǎn)指令確定目標(biāo)地址的方式不同以及跳轉(zhuǎn)時(shí)是否鏈接,可以把跳轉(zhuǎn)指令分成4種。確定目標(biāo)地址的方式把指令中的26位偏移量左移2位(因?yàn)橹噶钭珠L(zhǎng)都是4個(gè)字節(jié))后,替換程序計(jì)數(shù)器的低28位。間接跳轉(zhuǎn):由指令中指定的一個(gè)寄存器來(lái)給出轉(zhuǎn)移目標(biāo)地址。跳轉(zhuǎn)的兩種類型簡(jiǎn)單跳轉(zhuǎn):把目標(biāo)地址送入程序計(jì)數(shù)器。跳轉(zhuǎn)

52、并鏈接:把目標(biāo)地址送入程序計(jì)數(shù)器,把返回地址(即順序下一條指令的地址)放入寄存器R31。分支指令(條件轉(zhuǎn)移)分支條件由指令確定。例如:測(cè)試某個(gè)寄存器的值是否為零提供一組比較指令,用于比較兩個(gè)寄存器的值。例如:“置小于”指令有的分支指令可以直接判斷寄存器內(nèi)容是否為負(fù),或者比較兩個(gè)寄存器是否相等。分支的目標(biāo)地址。由16位帶符號(hào)偏移量左移兩位后和PC相加的結(jié)果來(lái)決定一條浮點(diǎn)條件分支指令:通過(guò)測(cè)試浮點(diǎn)狀態(tài)寄存器來(lái)決定是否進(jìn)行分支。由操作碼指出操作數(shù)是單精度(SP)或雙精度(DP)后綴S:表示操作數(shù)是單精度浮點(diǎn)數(shù)后綴D:表示是雙精度浮點(diǎn)數(shù)浮點(diǎn)操作包括加、減、乘、除,分別有單精度和雙精度指令。浮點(diǎn)數(shù)比較指

53、令根據(jù)比較結(jié)果設(shè)置浮點(diǎn)狀態(tài)寄存器中的某一位,以便于后面的分支指令BC1T(若真則分支)或BC1F(若假則分支)測(cè)試該位,以決定是否進(jìn)行分支。7、MIPS的浮點(diǎn)操作DLX指令集結(jié)構(gòu)DLX (pronounced DELUX) is an instruction set introduced by Hennessy and Patterson.DLX is very RISC oriented.DLX will be used for many examples throughout the course.DLX是一種多元未飽和型指令集結(jié)構(gòu)。DLX指令集結(jié)構(gòu)的設(shè)計(jì)思想: 具有一個(gè)簡(jiǎn)單的Load/S

54、tore指令集; 注重指令流水效率; 簡(jiǎn)化指令的譯碼; 高效支持編譯器。 DLX指令集結(jié)構(gòu)RISC strongly related to MIPS 32bit byte addresses aligned Load/storeStandard datatypes 3 fixed length formats 32 32bit GPRs (r0 = 0) 16 64bit (32 32bit) FPRs FP status register No Condition Codes DLX中的寄存器32個(gè)GPRs:R0、R1、R31。R0=032個(gè)FPRs:F0、F1、F31。單精度F0、F2、F

55、30。雙精度采用奇偶對(duì)狀態(tài)寄存器GPRsFPRsSTRsDLX的數(shù)據(jù)類型整數(shù):8位、16位和32位,按照32位對(duì)齊。浮點(diǎn):32位(單精度)、64位(雙精度)GPRsDLX的尋址方式和數(shù)據(jù)傳送 (1)尋址方式 寄存器尋址 立即值尋址 偏移尋址 寄存器間接尋址 (2) 寄存器尋址字段的大小為5位,用來(lái)表示32個(gè) 通用寄存器或浮點(diǎn)寄存器。 (3) 存儲(chǔ)器地址采用的是高端字節(jié)表示順序,存 儲(chǔ)器按字節(jié)尋址,其地址寬度為32位。(4) 通過(guò)寄存器(通用寄存器和浮點(diǎn)寄存器)和存 儲(chǔ)器之間的數(shù)據(jù)傳送操作完成對(duì)存儲(chǔ)器的訪問(wèn)。DLX的指令格式Op312601516202125Rs1RdimmediateOp312

56、6025Op312601516202125Rs1Rs2targetRdOpxRegister-Register561011Register-ImmediateOp312601516202125Rs1Rs2/OpximmediateBranchJump / CallI類指令R類指令J類指令 尋址方式編碼在操作碼中。 指令的字長(zhǎng)32位,其中用6位表示操作碼。DLX中的操作 (1) 四種類型的操作 Load和Store操作 ALU操作 分支和跳轉(zhuǎn)操作 浮點(diǎn)操作 (2) 約定 (1) 符號(hào)“”: 數(shù)據(jù)傳送操作 其后附帶一個(gè)下標(biāo)n,也即“n” 表示傳送 一個(gè)n位數(shù)據(jù)。 (2) 符號(hào)“#”: 兩個(gè)域的串聯(lián)

57、操作(3) 域的下標(biāo):表明從該域中選擇某一位。 域中位的標(biāo)記是從最高位開(kāi)始標(biāo)記,并且 起始標(biāo)記為0。 下標(biāo)可以是一個(gè)單獨(dú)的數(shù)字。 如 RegsR40 :選擇寄存器R4中內(nèi)容的符號(hào)位。 下標(biāo)也可以是一個(gè)范圍。 如 RegsR324.31 :選擇寄存器R3中內(nèi)容 的最低一個(gè)字節(jié)。(4) 上標(biāo):表示復(fù)制一個(gè)域。 如 024可以得到一個(gè)24位全為0的一個(gè)域。(5) 變量Mem:表示存儲(chǔ)器中的一個(gè)數(shù)組, 存儲(chǔ)器按照字節(jié)尋址。舉例:R8和R10:32位寄存器RegsR1016.31 16(MemRegsR80)8 # MemRegsR8的含義。指令實(shí)例指令名稱含 義LW R1, 30 (R2)載入整型字R

58、egsR1 32 Mem30+RegsR2LW R1, 1000 (R0)載入整型字RegsR1 32 Mem1000+0LB R1, 40 (R3)載入字節(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

59、 (R2)載入雙精度浮點(diǎn)RegsF0 # RegsF1 64 Mem50+RegsR2SW 500 (R4), R3儲(chǔ)存整型字Mem500+RegsR4 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和

60、Store指令實(shí)例 ALU操作 簡(jiǎn)單的算術(shù)和邏輯運(yùn)算 寄存器比較指令(,)指令實(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í)例 (3) 分支和跳轉(zhuǎn)操作 根據(jù)描述目標(biāo)地址的方法和是否鏈接可以將 跳轉(zhuǎn)操作

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論