計算機系統(tǒng)結(jié)構(gòu)電子教案(課2)
《計算機系統(tǒng)結(jié)構(gòu)電子教案(課2)》由會員分享,可在線閱讀,更多相關(guān)《計算機系統(tǒng)結(jié)構(gòu)電子教案(課2)(45頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、2014.2.17計算機系統(tǒng)結(jié)構(gòu)1第第2 2章章 指令系統(tǒng)的設(shè)計指令系統(tǒng)的設(shè)計本章主要內(nèi)容本章主要內(nèi)容(1) (1) 指令操作碼的優(yōu)化(不講)指令操作碼的優(yōu)化(不講)(2) (2) RISCRISC技術(shù)簡介技術(shù)簡介(3) (3) MIPSMIPS指令集指令集(4) (4) MIPSMIPS模擬器(補充)模擬器(補充)2014.2.17計算機系統(tǒng)結(jié)構(gòu)22.4.2 2.4.2 RISCRISC技術(shù)簡介(技術(shù)簡介(P44P44)名詞:名詞:RISCRISCReduced Instruction Set ComputingReduced Instruction Set Computing,精簡指令集計
2、算機精簡指令集計算機(1)(1)RISCRISC產(chǎn)生的背景:產(chǎn)生的背景:20%20%與與80%80%規(guī)律規(guī)律(2)(2)RISCRISC設(shè)計的基本原則:設(shè)計的基本原則: 只設(shè)置最常用的簡單指令,凡遇復(fù)雜操作均用多條簡單指令實現(xiàn);只設(shè)置最常用的簡單指令,凡遇復(fù)雜操作均用多條簡單指令實現(xiàn); 指令長度固定,操作碼與操作數(shù)長度都盡量統(tǒng)一;指令長度固定,操作碼與操作數(shù)長度都盡量統(tǒng)一; 基本指令的啟動時間間隔降低到基本指令的啟動時間間隔降低到1 1個時鐘周期;個時鐘周期; 訪問主存只有訪問主存只有l(wèi)oadload和和storestore指令,用變址尋址;指令,用變址尋址; 盡量采用硬連邏輯對指令譯碼;盡量
3、采用硬連邏輯對指令譯碼; 為了加快執(zhí)行速度,在編譯過程中對目標(biāo)代碼結(jié)構(gòu)進(jìn)行優(yōu)化;為了加快執(zhí)行速度,在編譯過程中對目標(biāo)代碼結(jié)構(gòu)進(jìn)行優(yōu)化;(3)(3)RISCRISC性能優(yōu)勢的原因性能優(yōu)勢的原因采用采用RISCRISC技術(shù)的主要動機是使各條指令的執(zhí)行時序盡可能一致,技術(shù)的主要動機是使各條指令的執(zhí)行時序盡可能一致,CPUCPU在在執(zhí)行時間上可以把它們安排得更緊湊,就像許多大小相近的箱子容易被堆執(zhí)行時間上可以把它們安排得更緊湊,就像許多大小相近的箱子容易被堆放得更密集一樣。這樣機器內(nèi)的各種資源可以充分利用,單位時間內(nèi)能執(zhí)放得更密集一樣。這樣機器內(nèi)的各種資源可以充分利用,單位時間內(nèi)能執(zhí)行更多的指令,速度
4、更快。行更多的指令,速度更快。這方面的具體內(nèi)容,在第這方面的具體內(nèi)容,在第3 3章講流水線時會詳細(xì)介紹。章講流水線時會詳細(xì)介紹。2014.2.17計算機系統(tǒng)結(jié)構(gòu)32.4.2 2.4.2 RISCRISC技術(shù)的發(fā)展技術(shù)的發(fā)展2020世紀(jì)世紀(jì)7070年代初,年代初,IBMIBM研究中心的研究中心的John John CockeCocke證明,計算機中約證明,計算機中約20%20%的的指令承擔(dān)了指令承擔(dān)了80%80%的工作,的工作,19741974年,他提出年,他提出RISCRISC的概念。的概念。在在RISCRISC的早期研究中,加州大學(xué)伯克利分校(的早期研究中,加州大學(xué)伯克利分校(UC Berk
5、eleyUC Berkeley)和斯坦福)和斯坦福大學(xué)(大學(xué)(StanfordStanford)提出了許多有創(chuàng)見的新思想。伯克利率先在提出了許多有創(chuàng)見的新思想。伯克利率先在19821982年完成年完成了了RISC IRISC I型型3232位芯片的設(shè)計,斯坦福大學(xué)則在位芯片的設(shè)計,斯坦福大學(xué)則在John HennessyJohn Hennessy(現(xiàn)任校長)現(xiàn)任校長)帶領(lǐng)下于帶領(lǐng)下于19831983年完成了第一個采用年完成了第一個采用RISCRISC理念的商用理念的商用MIPSMIPS微處理器。微處理器。19841984年年HennessyHennessy等人創(chuàng)建了等人創(chuàng)建了MIPSMIPS計
6、算機公司,計算機公司,19981998年改名為年改名為MIPSMIPS技術(shù)技術(shù)公司(美普思科技公司,公司(美普思科技公司,MIPS Technologies IncMIPS Technologies Inc),),目前是美國最著名的目前是美國最著名的芯片設(shè)計公司之一。芯片設(shè)計公司之一。MIPSMIPS技術(shù)公司本身不生產(chǎn)微處理器,它只設(shè)計高性能技術(shù)公司本身不生產(chǎn)微處理器,它只設(shè)計高性能工業(yè)級的工業(yè)級的3232位和位和6464位位CPUCPU的結(jié)構(gòu)體系,并且向其它半導(dǎo)體公司提供使用其內(nèi)的結(jié)構(gòu)體系,并且向其它半導(dǎo)體公司提供使用其內(nèi)核(核(IPIP)的授權(quán),用于生產(chǎn)基于的授權(quán),用于生產(chǎn)基于MIPSMI
7、PS而又各具特色的微處理器。而又各具特色的微處理器。19991999年年MIPSMIPS技術(shù)公司發(fā)布了技術(shù)公司發(fā)布了MIPS32MIPS32和和MIPS64MIPS64架構(gòu)標(biāo)準(zhǔn)。架構(gòu)標(biāo)準(zhǔn)。MIPSMIPS的通用微處理器主要用于構(gòu)建高性能工作站、服務(wù)器和超級計算的通用微處理器主要用于構(gòu)建高性能工作站、服務(wù)器和超級計算機系統(tǒng),其嵌入式產(chǎn)品在機系統(tǒng),其嵌入式產(chǎn)品在19991999年以前全球銷量第一,目前也僅次于年以前全球銷量第一,目前也僅次于ARMARM。2014.2.17計算機系統(tǒng)結(jié)構(gòu)4 MIPS處理器處理器MIPSMIPS的意思是的意思是“無內(nèi)部互鎖流水級的微處理器無內(nèi)部互鎖流水級的微處理器”(
8、Microprocessor Microprocessor without interlocked piped stageswithout interlocked piped stages),),其機制是盡量利用軟件辦法避免流其機制是盡量利用軟件辦法避免流水線中的數(shù)據(jù)相關(guān)問題。水線中的數(shù)據(jù)相關(guān)問題。MIPSMIPS具有強大的應(yīng)用基礎(chǔ),能在具有強大的應(yīng)用基礎(chǔ),能在MIPSMIPS上運行的操作系統(tǒng),包括上運行的操作系統(tǒng),包括LinuxLinux、WindRiverWindRiver、WinCEWinCE、GNUGNU、和和MontaMonta Vista Vista等;支持等;支持1414種編譯器
9、,包括種編譯器,包括MIPSMIPS、SDESDE、Green HillsGreen Hills、GNUGNU和和WindRiverWindRiver等;支持等;支持1515種調(diào)試器,包括種調(diào)試器,包括GNUGNU、Green Green HillsHills、WindRiverWindRiver、ASHLINGASHLING和和FS2FS2等;支持等;支持1818種仿真工具,包括種仿真工具,包括Mentor Mentor GraphicsGraphics、SynopsysSynopsys、CoWareCoWare和和CandenceCandence等。等。中國科學(xué)院計算所的龍芯中國科學(xué)院計算
10、所的龍芯1 1和和2 2都采用都采用6464位位MIPSMIPS指令架構(gòu)。中國龍芯已與指令架構(gòu)。中國龍芯已與MIPSMIPS公司合作,購買其指令系統(tǒng)授權(quán),以便批量生產(chǎn)與出口。公司合作,購買其指令系統(tǒng)授權(quán),以便批量生產(chǎn)與出口。2014.2.17計算機系統(tǒng)結(jié)構(gòu)52.6.1 MIPS的寄存器(的寄存器(P47) 32 32個個6464位通用寄存器(位通用寄存器(GPRsGPRs),),也稱為整數(shù)寄存器也稱為整數(shù)寄存器名稱是名稱是R0R0,R1R1,R31R31(也可寫為也可寫為$0$0,$ $1 1,$ $3131)R0R0的值永遠(yuǎn)是的值永遠(yuǎn)是0 0,可用作源寄存器,也可作為無用結(jié)果的目的寄存器;,
11、可用作源寄存器,也可作為無用結(jié)果的目的寄存器;R31R31用于存放跳轉(zhuǎn)并鏈接類指令的返回地址。用于存放跳轉(zhuǎn)并鏈接類指令的返回地址。 32 32個個6464位浮點數(shù)寄存器(位浮點數(shù)寄存器(FPRsFPRs)F0F0,F(xiàn)1F1,F(xiàn)31F31用來存放用來存放3232個單精度浮點數(shù)(個單精度浮點數(shù)(3232位),也可以用來存放位),也可以用來存放3232個雙精度浮個雙精度浮點數(shù)(點數(shù)(6464位)。位)。存儲單精度浮點數(shù)(存儲單精度浮點數(shù)(3232位)時,只用到位)時,只用到FPRFPR的一半,其另一半沒用。的一半,其另一半沒用。 特殊功能寄存器特殊功能寄存器PCPC(program counterp
12、rogram counter,程序計數(shù)寄存器)程序計數(shù)寄存器)HIHI(整數(shù)乘除結(jié)果高位寄存器,除法余數(shù))整數(shù)乘除結(jié)果高位寄存器,除法余數(shù))LOLO(整數(shù)乘除結(jié)果低位寄存器,除法的商整數(shù)乘除結(jié)果低位寄存器,除法的商)它們可以與通用寄存器交換數(shù)據(jù)。它們可以與通用寄存器交換數(shù)據(jù)。浮點狀態(tài)寄存器:用來保存有關(guān)浮點操作結(jié)果的信息。浮點狀態(tài)寄存器:用來保存有關(guān)浮點操作結(jié)果的信息。2014.2.17計算機系統(tǒng)結(jié)構(gòu)6MIPS的寄存器別名(程序員習(xí)慣用法)的寄存器別名(程序員習(xí)慣用法)MIPSMIPS編譯器支持一些專業(yè)程序員對編譯器支持一些專業(yè)程序員對3232個個通用寄存器通用寄存器GPRGPR(GENERA
13、L GENERAL PURPOSE REGISTERPURPOSE REGISTER)約定的習(xí)慣性用法(非強制的):約定的習(xí)慣性用法(非強制的):REGISTER NAMEREGISTER NAMEUSAGE USAGE $0 $zero$0 $zero常量常量0(0(constant value 0) constant value 0) $2-$3 $v0-$v1$2-$3 $v0-$v1函數(shù)調(diào)用返回值函數(shù)調(diào)用返回值( (values for results and values for results and expression evaluation) expression evalua
14、tion) $4-$7 $a0-$a3$4-$7 $a0-$a3函數(shù)調(diào)用參數(shù)函數(shù)調(diào)用參數(shù)( (arguments) arguments) $8-$15 $t0-$t7$8-$15 $t0-$t7暫時的暫時的( (或隨便用的或隨便用的) ) $16-$23 $16-$23 $s0-$s7s0-$s7保存的保存的( (或如果用,需要或如果用,需要SAVE/RESTORESAVE/RESTORE的的)()(saved) saved) $24-$25 $t8-$t9$24-$25 $t8-$t9暫時的暫時的( (或隨便用的或隨便用的) ) $26-$27 $k0-$k1$26-$27 $k0-$k1由
15、操作系統(tǒng)的異?;蛑袛嗵幚沓绦蚴褂糜刹僮飨到y(tǒng)的異常或中斷處理程序使用 $28 $28 $gpgp全局指針全局指針( (Global Pointer) Global Pointer) $29 $sp$29 $sp堆棧指針堆棧指針( (Stack Pointer) Stack Pointer) $30 $30 $fpfp幀指針幀指針( (Frame Pointer) Frame Pointer) (BNN(BNN:fpfp is stale is stale acutallyacutally, and can be simply used as $t8) , and can be simply us
16、ed as $t8) $31 $31 $rara返回地址返回地址( (return address) return address) 2014.2.17計算機系統(tǒng)結(jié)構(gòu)72.6.2 MIPS的數(shù)據(jù)表示的數(shù)據(jù)表示整數(shù)整數(shù)字節(jié)(字節(jié)(8 8位)位) 半字(半字(1616位)位)字(字(3232位)位) 雙字(雙字(6464位)位)浮點數(shù)浮點數(shù)單精度浮點數(shù)(單精度浮點數(shù)(3232位)位) 雙精度浮點數(shù)(雙精度浮點數(shù)(6464位)位) 字節(jié)、半字或者字在裝入字節(jié)、半字或者字在裝入6464位寄存器時,用零擴展或者用符號位擴展來填位寄存器時,用零擴展或者用符號位擴展來填充該寄存器的剩余部分。裝入以后,對它們
17、將按照充該寄存器的剩余部分。裝入以后,對它們將按照6464位整數(shù)的方式進(jìn)行運算。位整數(shù)的方式進(jìn)行運算。2014.2.17計算機系統(tǒng)結(jié)構(gòu)82.6.3 MIPS的數(shù)據(jù)尋址方式(的數(shù)據(jù)尋址方式(P47) 立即數(shù)尋址與偏移量尋址;立即數(shù)尋址與偏移量尋址;立即數(shù)字段和偏移量字段都是立即數(shù)字段和偏移量字段都是1616位的。位的。 寄存器間接尋址是通過把寄存器間接尋址是通過把0 0作為偏移量來實現(xiàn)的;作為偏移量來實現(xiàn)的; 16 16位絕對尋址是通過把位絕對尋址是通過把R0R0(其值永遠(yuǎn)為其值永遠(yuǎn)為0 0)作為基址寄存器來完成的;)作為基址寄存器來完成的; MIPS MIPS的存儲器按字節(jié)尋址,地址為的存儲器
18、按字節(jié)尋址,地址為6464位;位; 所有存儲器訪問必須是邊界對齊的,即訪問地址必須是該數(shù)據(jù)長度(字節(jié)所有存儲器訪問必須是邊界對齊的,即訪問地址必須是該數(shù)據(jù)長度(字節(jié)數(shù))的整倍數(shù),又叫整數(shù)邊界原則;數(shù))的整倍數(shù),又叫整數(shù)邊界原則; MIPS MIPS的存儲器按字節(jié)編制;的存儲器按字節(jié)編制; 所有數(shù)據(jù)字、指令字從最高有效位開始依次標(biāo)記為所有數(shù)據(jù)字、指令字從最高有效位開始依次標(biāo)記為bit 0bit 0、1 1、2 2 ; MIPSMIPS處理器的存儲順序,可以設(shè)置為處理器的存儲順序,可以設(shè)置為“小端字節(jié)表示順序小端字節(jié)表示順序”( LittileLittile- -EndianEndian,低位字節(jié)
19、放在低地址低位字節(jié)放在低地址)或者或者“大端字節(jié)表示順序大端字節(jié)表示順序”(Big-Big-EndianEndian,高位字節(jié)放在低地址,以便適合網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)順序高位字節(jié)放在低地址,以便適合網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)順序)。)。在下文使用的在下文使用的MIPS64MIPS64模擬器中采用模擬器中采用“小端字節(jié)表示順序小端字節(jié)表示順序”。2014.2.17計算機系統(tǒng)結(jié)構(gòu)92.6.4 MIPS指令格式(指令格式(P48) MIPS32 MIPS32和和MIPS64MIPS64體系結(jié)構(gòu)定義了兼容的體系結(jié)構(gòu)定義了兼容的3232位和位和6464位處理機指令位處理機指令 使用條件編譯或宏匯編指令能寫出可同時在使用條件編
20、譯或宏匯編指令能寫出可同時在MIPS32MIPS32和和MIPS64MIPS64上運行的程序上運行的程序 尋址方式編碼到操作碼中尋址方式編碼到操作碼中 所有的指令都是所有的指令都是3232位的位的 操作碼占操作碼占6 6位位 3 3種指令格式(種指令格式(3種格式中,同名字段的位置固定不變)種格式中,同名字段的位置固定不變) 6 5 5 16 oc 操操作作碼碼 rs 源源操操作作數(shù)數(shù)寄寄存存器器 rt 源源/目目的的操操作作數(shù)數(shù)寄寄存存器器 immediate 立立即即數(shù)數(shù) 0 5 6 10 11 15 16 31 6 5 5 5 5 6 oc 操操作作碼碼 rs 源源操操作作數(shù)數(shù)寄寄存存器
21、器 rt 源源/目目的的操操作作數(shù)數(shù)寄寄存存器器 rd 目目的的操操作作數(shù)數(shù)寄寄存存器器 shamt 移移位位位位數(shù)數(shù) funct 功功能能碼碼 0 5 6 10 11 15 16 20 21 25 26 31 6 26 oc 操操作作碼碼 offset 跳跳轉(zhuǎn)轉(zhuǎn)的的目目的的地地址址 0 5 6 31 2014.2.17計算機系統(tǒng)結(jié)構(gòu)102.6.4 MIPS指令格式指令格式I I類指令類指令 包括所有的包括所有的loadload和和storestore指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令,指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令,寄存器鏈接跳轉(zhuǎn)指令。寄存器鏈接跳轉(zhuǎn)指令。 立即數(shù)字段為立
22、即數(shù)字段為1616位,用于提供立即數(shù)或偏移量。位,用于提供立即數(shù)或偏移量。 load load指令指令 訪存有效地址:訪存有效地址:RegsRegs rsrs immediateimmediate 從存儲器取來的數(shù)據(jù)放入寄存器從存儲器取來的數(shù)據(jù)放入寄存器rtrt storestore指令指令 訪存有效地址:訪存有效地址:RegsRegs rsrs immediateimmediate 要存入存儲器的數(shù)據(jù)放在寄存器要存入存儲器的數(shù)據(jù)放在寄存器rtrt中中 立即數(shù)指令立即數(shù)指令 RegsRegs rtrt RegsRegs rsrs op immediate op immediate 分支指令分支
23、指令 轉(zhuǎn)移目標(biāo)地址:轉(zhuǎn)移目標(biāo)地址:RegsRegs rsrs immediateimmediate,rtrt無用無用 寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接 轉(zhuǎn)移目標(biāo)地址為轉(zhuǎn)移目標(biāo)地址為RegsRegs rsrs 6 5 5 16 oc 操操作作碼碼 rs 源源操操作作數(shù)數(shù)寄寄存存器器 rt 源源/目目的的操操作作數(shù)數(shù)寄寄存存器器 immediate 立立即即數(shù)數(shù) 0 5 6 10 11 15 16 31 2014.2.17計算機系統(tǒng)結(jié)構(gòu)112.6.4 MIPS指令格式指令格式R R類指令類指令 包括包括ALUALU指令,專用寄存器讀指令,專用寄存器讀/ /寫指令,寫指令,m
24、ovemove指令等。指令等。 ALU ALU指令指令 RegsRegsrd rd RegsRegs rsrs funct Regsfunct Regs rtrt functfunct為具體的運算操作編碼為具體的運算操作編碼 6 5 5 5 5 6 oc 操操作作碼碼 rs 源源操操作作數(shù)數(shù)寄寄存存器器 rt 源源/目目的的操操作作數(shù)數(shù)寄寄存存器器 rd 目目的的操操作作數(shù)數(shù)寄寄存存器器 shamt 移移位位位位數(shù)數(shù) funct 功功能能碼碼 0 5 6 10 11 15 16 20 21 25 26 31 2014.2.17計算機系統(tǒng)結(jié)構(gòu)122.6.4 MIPS指令格式指令格式J J類指令類
25、指令 包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回指令。包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回指令。 在這類指令中,指令字的低在這類指令中,指令字的低2626位是偏移量,它與位是偏移量,它與PCPC值相加形成跳轉(zhuǎn)的地址。值相加形成跳轉(zhuǎn)的地址。 6 26 oc 操操作作碼碼 offset 跳跳轉(zhuǎn)轉(zhuǎn)的的目目的的地地址址 0 5 6 31 2014.2.17計算機系統(tǒng)結(jié)構(gòu)132.6.5 MIPS的操作(的操作(P49) MIPS MIPS指令可以分為四大類指令可以分為四大類 load load和和storestore ALU ALU操作操作 分支與跳轉(zhuǎn)分支與跳轉(zhuǎn) 浮點操作浮點操作 符號
26、的意義符號的意義 xxn ny y:從從y y傳送傳送n n位到位到x xx x,yzyz:把把z z傳送到傳送到x x和和y y下標(biāo):表示字段中具體的位;下標(biāo):表示字段中具體的位; 對于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依對于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依次進(jìn)行編號,最高位為第次進(jìn)行編號,最高位為第0 0位,次高位為第位,次高位為第1 1位,依此類推。位,依此類推。 下標(biāo)可以是一個數(shù)字,也可以是一個范圍。下標(biāo)可以是一個數(shù)字,也可以是一個范圍。例如:例如:RegsRegsR4R40 0:寄存器寄存器R4R4的符號位的符號位 RegsRegsR4R456-6
27、356-63:R4R4的最低字節(jié)的最低字節(jié) 2014.2.17計算機系統(tǒng)結(jié)構(gòu)142.6.5 MIPS的操作(續(xù)的操作(續(xù))MemMem:表示主存;表示主存; 按字節(jié)尋址,可以傳輸任意個字節(jié)。按字節(jié)尋址,可以傳輸任意個字節(jié)。上標(biāo):用于表示對字段進(jìn)行復(fù)制的次數(shù)。上標(biāo):用于表示對字段進(jìn)行復(fù)制的次數(shù)。例如:例如:0 03232表示一個表示一個3232位長的全位長的全0 0字段字段符號符號#:用于兩個字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。:用于兩個字段的拼接,并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊。舉例舉例:R8R8、R6R6是是6464位的寄存器,下式位的寄存器,下式RegsRegsR8R832-6
28、332-63 3232(MemMem RegsRegsR6R60 0)2424 # # MemMem RegsRegsR6R6表示的意義是:以表示的意義是:以R6R6的內(nèi)容作為地址訪問內(nèi)存,得到的字節(jié)按符號位擴展為的內(nèi)容作為地址訪問內(nèi)存,得到的字節(jié)按符號位擴展為3232位后存入位后存入R8R8的低的低3232位,位,R8R8的高的高3232位(即位(即RegsRegsR80-31R80-31)不變。不變。2014.2.17計算機系統(tǒng)結(jié)構(gòu)15 load和和store指令指令指令舉例指令舉例 指令名稱指令名稱 含含 義義 LD R2LD R2,20(R3) 20(R3) 裝入雙字裝入雙字 Regs
29、R2RegsR264 64 Mem20+RegsR3 Mem20+RegsR3 LW R2LW R2,40(R3) 40(R3) 裝入字裝入字 RegsR2RegsR264 64 (Mem40+RegsR3(Mem40+RegsR30 0) )32 32 # # Mem40+RegsR3 Mem40+RegsR3 LB R2LB R2,30(R3) 30(R3) 裝入字節(jié)裝入字節(jié) RegsR2RegsR264 64 (Mem30+RegsR3(Mem30+RegsR30 0) )5656 # # Mem30+RegsR3 Mem30+RegsR3 LBU R2LBU R2,40(R3) 40(
30、R3) 裝入無符號字節(jié)裝入無符號字節(jié) RegsR2RegsR264 64 0 05656 # Mem40+RegsR3 # Mem40+RegsR3 LH R2LH R2,30(R3) 30(R3) 裝入半字裝入半字 RegsR2RegsR264 64 (Mem30+RegsR3(Mem30+RegsR30 0) )4848 # #Mem30+RegsR3# Mem31+RegsR3 Mem30+RegsR3# Mem31+RegsR3 L.S F2L.S F2,60(R4) 60(R4) 裝入單精度浮點數(shù)裝入單精度浮點數(shù)RegsF2RegsF264 64 Mem60+RegsR4 # 0Me
31、m60+RegsR4 # 032 32 L.D F2L.D F2,40(R3) 40(R3) 裝入雙精度浮點數(shù)裝入雙精度浮點數(shù) RegsF2RegsF26464 Mem40+RegsR3 Mem40+RegsR3 SD R4SD R4,300(R5) 300(R5) 保存雙字保存雙字 Mem300+RegsR5Mem300+RegsR564 64 RegsR4 RegsR4 SW R4SW R4,300(R5) 300(R5) 保存字保存字 Mem300+RegsR5Mem300+RegsR53232 RegsR4 RegsR4 S.S F2S.S F2,40(R2) 40(R2) 保存單精度
32、浮點數(shù)保存單精度浮點數(shù)Mem40+RegsR2Mem40+RegsR232 32 RegsF2 RegsF2 0 03131 SH R5SH R5,502(R4)502(R4)保存半字保存半字Mem502+RegsR4Mem502+RegsR41616 RegsR5 RegsR5 4848.63.63 2014.2.17計算機系統(tǒng)結(jié)構(gòu)16 ALU指令指令 寄存器寄存器型(寄存器寄存器型(RRRR型)指令或立即數(shù)型型)指令或立即數(shù)型 算術(shù)和邏輯操作:加、減、與、或、異或和移位等算術(shù)和邏輯操作:加、減、與、或、異或和移位等 R0 R0的值永遠(yuǎn)是的值永遠(yuǎn)是0 0,它可以用來合成一些常用的操作。,它可
33、以用來合成一些常用的操作。例如:例如:DADDIU R1DADDIU R1,R0R0,#100 #100 給寄存器給寄存器R1R1裝入常數(shù)裝入常數(shù)100100 DADD R1 DADD R1,R0R0,R2 R2 把寄存器把寄存器R2R2中的數(shù)據(jù)傳送到寄存器中的數(shù)據(jù)傳送到寄存器R1R1指令舉例指令舉例 指令名稱指令名稱 含義含義 DADDUDADDUR1R1,R2R2,R3 R3 無符號加無符號加 RegsR1 RegsR2+ RegsR3 RegsR1 RegsR2+ RegsR3 DADDIU DADDIU R4R4,R5R5,#6 #6 加無符號立即數(shù)加無符號立即數(shù) RegsR4 Reg
34、sR5+6 RegsR4 RegsR5+6 LUILUIR1R1,#4 #4 把立即數(shù)裝入到一個字把立即數(shù)裝入到一個字的高的高1616位位 RegsR1 0RegsR1 03232 # 4 # 0 # 4 # 01616DSLLDSLLR1R1,R2R2,#5 #5 邏輯左移邏輯左移 RegsR1 RegsR25 RegsR1 RegsR25 DSLT R1DSLT R1,R2R2,R3 R3 置小于置小于 If(RegsR2 RegsR3)If(RegsR2 RegsR3)RegsR1 1 else RegsR10 RegsR1 1 else RegsR10 2014.2.17計算機系統(tǒng)結(jié)構(gòu)
35、172.6.6 MIPS的控制指令(的控制指令(P50) 由一組跳轉(zhuǎn)和一組分支指令來實現(xiàn)控制流的改變由一組跳轉(zhuǎn)和一組分支指令來實現(xiàn)控制流的改變 典型的典型的MIPSMIPS控制指令控制指令指令舉例指令舉例 指令名稱指令名稱 含義含義 J name J name 跳轉(zhuǎn)跳轉(zhuǎn) PC PC 36366363 name2 name2JAL name JAL name 跳轉(zhuǎn)并鏈接跳轉(zhuǎn)并鏈接 RegsR31PC+4RegsR31PC+4;PC PC 36366363namename22;(PC+4)(PC+4)2 22727)name)name(PC+4)+2(PC+4)+22727) ) JALR R3
36、JALR R3 寄存器跳轉(zhuǎn)并鏈接寄存器跳轉(zhuǎn)并鏈接 RegsR31PC+4RegsR31PC+4;PC RegsR3 PC RegsR3 JR R5 JR R5 寄存器跳轉(zhuǎn)寄存器跳轉(zhuǎn) PC PC RegsRegsR5 R5 BEQZ R4BEQZ R4,name name 等于零時分支等于零時分支 if(if(RegsRegsR4= 0) PCname R4= 0) PCname ;(PC+4)(PC+4)2 21717)name)name(PC+4)+2(PC+4)+21717) ) BNE R3BNE R3,R4R4,name name 不相等時分支不相等時分支 if(if(RegsRegs
37、R3!= R3!= RegsRegsR4) PCnameR4) PCname(PC+4)(PC+4)2 21717)name)name(PC+4)+2(PC+4)+21717) ) MOVZ R1MOVZ R1,R2R2,R3 R3 等于零時移動等于零時移動 if(RegsR3=0) RegsR1if(RegsR3=0) RegsR1 RegsR2 RegsR2 2014.2.17計算機系統(tǒng)結(jié)構(gòu)18 跳轉(zhuǎn)指令跳轉(zhuǎn)指令根據(jù)跳轉(zhuǎn)指令確定目標(biāo)地址的方式不同以及跳轉(zhuǎn)時是否鏈接,可以把跳根據(jù)跳轉(zhuǎn)指令確定目標(biāo)地址的方式不同以及跳轉(zhuǎn)時是否鏈接,可以把跳轉(zhuǎn)指令分成轉(zhuǎn)指令分成4 4種。種。確定目標(biāo)地址的方式確定
38、目標(biāo)地址的方式 把指令中的把指令中的2626位偏移量左移位偏移量左移2 2位(因為指令字長都是位(因為指令字長都是4 4個字節(jié))后,個字節(jié))后,替換程序計數(shù)器的低替換程序計數(shù)器的低2828位;位; 間接跳轉(zhuǎn):由指令中指定的一個寄存器來給出轉(zhuǎn)移目標(biāo)地址。間接跳轉(zhuǎn):由指令中指定的一個寄存器來給出轉(zhuǎn)移目標(biāo)地址。跳轉(zhuǎn)的兩種類型跳轉(zhuǎn)的兩種類型 簡單跳轉(zhuǎn):把目標(biāo)地址送入程序計數(shù)器。簡單跳轉(zhuǎn):把目標(biāo)地址送入程序計數(shù)器。 跳轉(zhuǎn)并鏈接:把目標(biāo)地址送入程序計數(shù)器,把返回地址(即順序下跳轉(zhuǎn)并鏈接:把目標(biāo)地址送入程序計數(shù)器,把返回地址(即順序下一條指令的地址)放入寄存器一條指令的地址)放入寄存器R31R31。2014
39、.2.17計算機系統(tǒng)結(jié)構(gòu)19 分支指令(條件轉(zhuǎn)移)分支指令(條件轉(zhuǎn)移)分支條件由指令確定分支條件由指令確定例如:測試某個寄存器的值是否為零例如:測試某個寄存器的值是否為零提供一組比較指令,用于比較兩個寄存器的值。提供一組比較指令,用于比較兩個寄存器的值。例如:例如:“置小于置小于”指令指令有的分支指令可以直接判斷寄存器內(nèi)容是否為負(fù),或者比較兩個寄存器有的分支指令可以直接判斷寄存器內(nèi)容是否為負(fù),或者比較兩個寄存器是否相等。是否相等。分支的目標(biāo)地址分支的目標(biāo)地址由由1616位帶符號偏移量左移兩位后和位帶符號偏移量左移兩位后和PCPC相加的結(jié)果來決定相加的結(jié)果來決定一條浮點條件分支指令:通過測試浮點
40、狀態(tài)寄存器來決定是否進(jìn)行分支。一條浮點條件分支指令:通過測試浮點狀態(tài)寄存器來決定是否進(jìn)行分支。2014.2.17計算機系統(tǒng)結(jié)構(gòu)202.6.7 MIPS的浮點操作(的浮點操作(P51) 由操作碼指出操作數(shù)是單精度(由操作碼指出操作數(shù)是單精度(SPSP)或雙精度(或雙精度(DPDP)后綴后綴S S:表示操作數(shù)是單精度浮點數(shù)表示操作數(shù)是單精度浮點數(shù)后綴后綴D D:表示是雙精度浮點數(shù)表示是雙精度浮點數(shù) 浮點操作浮點操作包括加、減、乘、除,分別有單精度和雙精度指令。包括加、減、乘、除,分別有單精度和雙精度指令。 浮點數(shù)比較指令浮點數(shù)比較指令根據(jù)比較結(jié)果設(shè)置浮點狀態(tài)寄存器中的某一位,以便于后面的分支指根據(jù)
41、比較結(jié)果設(shè)置浮點狀態(tài)寄存器中的某一位,以便于后面的分支指令令BC1TBC1T(若真則分支)或若真則分支)或BC1FBC1F(若假則分支)測試該位,以決定是否進(jìn)若假則分支)測試該位,以決定是否進(jìn)行分支。行分支。2014.2.17計算機系統(tǒng)結(jié)構(gòu)21注意浮點數(shù)的存儲格式只有注意浮點數(shù)的存儲格式只有64位雙精度這一種,沒有位雙精度這一種,沒有32位單精度數(shù)。位單精度數(shù)。MIPS64偽指令偽指令序序號號 偽偽指指令令 功功能能 1 .data start of data segment 2 .text start of code segment 3 .code start of code segment
42、 (same as .text) 4 .org start address 5 .space leave n empty bytes 6 .asciiz enters zero terminated ascii string 7 .ascii enter ascii string 8 .align align to n-byte boundary 9 .byte ,. enter bytes 10 .word16 ,. enters 16 bit number(s) 11 .word32 ,. enters 32 bit number(s) 12 .word ,. enters word(s)
43、 of data (64-bits) 13 .double ,. enters floating-point number(s) 2014.2.17計算機系統(tǒng)結(jié)構(gòu)22MIPS64指令集指令集1序號序號 指令指令 功能功能 訪存訪存 1 lb reg,imm(reg) load byte 2 lbu reg,imm(reg) load byte unsigned 3 lh reg,imm(reg) load 16-bit half-word 4 lhu reg,imm(reg) load 16-bit half word unsigned 5 lw reg,imm(reg) load 32-bi
44、t word 6 lwu reg,imm(reg) load 32-bit word unsigned 7 ld reg,imm(reg) load 64-bit double-word 8 l.s freg,imm(reg) load 32-bit floating-point(single FP ) 9 l.d freg,imm(reg) load 64-bit floating-point(double FP ) 10 sb reg,imm(reg) store byte 11 sh reg,imm(reg) store 16-bit half-word 12 sw reg,imm(re
45、g) store 32-bit word 13 sd reg,imm(reg) store 64-bit double-word 14 s.s freg,imm(reg) store 32-bit floating-point 15 s.d freg,imm(reg) store 64-bit floating-point 2014.2.17計算機系統(tǒng)結(jié)構(gòu)23MIPS64指令集指令集2序號序號 指令指令 功能功能 傳送傳送 16 movz reg,reg,reg move if register equals zero 17 movn reg,reg,reg move if register
46、not equal to zero 18 mov.s freg,freg move floating-point(single FP ) 19 mov.d freg,freg move floating-point(double FP ) 20 mtc1 reg,freg move data from integer register to FP register 21 mfc1 reg,freg move data from FP register to integer register 22 lui reg,imm load upper half of register immediate
47、 算術(shù)算術(shù) 23 dadd reg,reg,reg add integers 24 daddu reg,reg,reg add integers unsigned 25 daddi reg,reg,imm add immediate 2014.2.17計算機系統(tǒng)結(jié)構(gòu)24MIPS64指令集指令集3序號序號 指令指令 功能功能 26 daddui reg,reg,imm add immediate unsigned( WinMIPS64 格式格式 ) 27 daddiu reg,reg,imm add immediate unsigned( MIPSsim 格式格式 ) 28 add.s freg
48、,freg,freg add floating-point(single FP ) 29 add.d freg,freg,freg add floating-point(double FP ) 30 dsub reg,reg,reg subtract integers 31 dsubu reg,reg,reg subtract integers unsigned 32 sub.s freg,freg,freg subtract floating-point(single FP ) 33 sub.d freg,freg,freg subtract floating-point(double FP
49、 ) 34 dmul reg,reg,reg signed integer multiplication 35 dmulu reg,reg,reg unsigned integer multiplication 36 mul.d freg,freg,freg multiply floating-point 37 ddiv reg,reg,reg signed integer division 38 ddivu reg,reg,reg unsigned integer division 39 div.d freg,freg,freg divide floating-point 2014.2.17
50、計算機系統(tǒng)結(jié)構(gòu)25MIPS64指令集指令集4序號序號 指令指令 功能功能 邏輯邏輯 40 and reg,reg,reg logical and 41 andi reg,reg,imm logical and immediate 42 or reg,reg,reg logical or 43 ori reg,reg,imm logical or immediate 44 xor reg,reg,reg logical xor 45 xori reg,reg,imm exclusive or immediate 46 dsll reg,reg,imm shift left logical 47
51、dsllv reg,reg,reg shift left logical by variable amount 48 dsrl reg,reg,imm shift right logical 49 dsra reg,reg,imm shift right arithmetic 50 dsrlv reg,reg,reg shift right logical by variable amount 51 dsrav reg,reg,reg shift right arithmetic by variable amount 2014.2.17計算機系統(tǒng)結(jié)構(gòu)26MIPS64指令集指令集5序號序號 指令
52、指令 功能功能 轉(zhuǎn)換轉(zhuǎn)換 52 cvt.d.l freg,freg convert 64-bit integer to a double FP format 53 cvt.l.d freg,freg convert double FP to a 64-bit integer format 標(biāo)志標(biāo)志 54 slt reg,reg,reg set if less than 55 dslt reg,reg,reg set if less than( 教材寫錯,上條為正確格式教材寫錯,上條為正確格式 ) 56 sltu reg,reg,reg set if less than unsigned 57
53、slti reg,reg,imm set if less than immediate 58 sltiu reg,reg,imm set if less than immediate unsigned 59 c.lt.d freg,freg set FP flag if less than 60 c.eq.d freg,freg set FP flag if equal to 61 c.le.d freg,freg set FP flag if less than or equal to 2014.2.17計算機系統(tǒng)結(jié)構(gòu)27MIPS64指令集指令集6序號序號 指令指令 功能功能 跳轉(zhuǎn)跳轉(zhuǎn) 62
54、 j imm jump to address 63 jr reg jump to address in register 64 jal imm jump and link to address (call subroutine) 65 jalr reg jump and link to address in register 66 beqz reg,imm branch if register is equal to zero 67 bnez reg,imm branch if register is not equal to zero 68 beq reg,reg,imm branch if
55、 pair of registers are equal 69 bne reg,reg,imm branch if pair of registers are not equal 70 bc1t imm branch to address if FP flag is TRUE 71 bc1f imm branch to address if FP flag is FALSE 控制控制 72 nop no operation 73 halt stops the program 2014.2.17計算機系統(tǒng)結(jié)構(gòu)28MIPS64模擬器介紹模擬器介紹12014.2.17計算機系統(tǒng)結(jié)構(gòu)29MIPS64模
56、擬器介紹模擬器介紹2Pipeline window This window shows a schematic representation of the five pipeline stages of the MIPS64 processor and the units for floating point operations (addition / subtraction, multiplication and division). It shows which instruction is in each stage of the pipeline. Code window This
57、window shows a three column representation of the code memory, showing from left to right 1) a byte address, 2) a hex number giving the 32-bit machine code representation of the instruction, and 3) the assembly language statement. Double-left-clicking on an instruction sets or clears break-points. D
58、ata window This window shows the contents of data memory, byte addressable, but displayed in 64-bit chunks, as appropriate for a 64-bit processor. To edit an integer value double-left-click. To display and edit as a floating-point number, double-right-click. Register window This window shows the val
59、ues stored in the registers. If the register is displayed in grey, then it is in the process of being written to by an instruction. If displayed using a colour, the colour indicates the stage in the pipeline from which this value is available for forwarding. This window allows you to interactively c
60、hange the contents of those 64-bit integer and floating-point registers that are not in the process of being written to, or being forwarded. To do this, double-left-click on the register you want to change and a pop-up window will ask you for new content. Press OK to confirm the change. 2014.2.17計算機
61、系統(tǒng)結(jié)構(gòu)30MIPS64模擬器介紹模擬器介紹3Clock Cycle diagram This window gives a representation of the timing behaviour of the pipeline. It records the history of instructions as they enter and emerge from the pipeline. An instruction that causes a stall is highlighted in blue: instructions held up as a result of a s
62、tall are grayed. Statistics This window provides statistics on the number of simulation cycles, instructions, the average Cycles Per Instruction (CPI), the types of stalls, and numbers of conditional branches and Load/Store-instructions. Terminal This window mimics a dumb terminal I/O device with so
63、me limited graphics capability. Status Line The status line at the bottom normally displays Ready, but will during program simulation provide useful information on the current status of the simulation. 2014.2.17計算機系統(tǒng)結(jié)構(gòu)31MIPS64模擬器的存儲器映射模擬器的存儲器映射I/O地址與命令地址與命令CONTROL: .word32 0 x10000CONTROL: .word32 0
64、 x10000; ;控制寄存器(映射地址)控制寄存器(映射地址)DATA: .word32 0 x10008DATA: .word32 0 x10008; ;數(shù)據(jù)寄存器(映射地址)數(shù)據(jù)寄存器(映射地址)Set CONTROL = 1, Set CONTROL = 1, 將將DATADATA作為無符號整型數(shù)輸出作為無符號整型數(shù)輸出Set CONTROL = 2, Set CONTROL = 2, 將將DATADATA作為有符號整型數(shù)輸出作為有符號整型數(shù)輸出Set CONTROL = 3, Set CONTROL = 3, 將將DATADATA作為浮點數(shù)輸出作為浮點數(shù)輸出Set CONTROL =
65、 4, Set CONTROL = 4, 將將DATADATA作為輸出字串的首地址作為輸出字串的首地址Set CONTROL = 5, Set CONTROL = 5, 將將DATA+5 DATA+5 作為作為x x坐標(biāo),坐標(biāo),DATA+4DATA+4作為作為y y坐標(biāo),坐標(biāo),DATADATA作為作為RGBRGB彩色值輸出彩色值輸出Set CONTROL = 6, Set CONTROL = 6, 清除終端屏幕清除終端屏幕Set CONTROL = 7, Set CONTROL = 7, 清除圖形屏幕清除圖形屏幕Set CONTROL = 8, Set CONTROL = 8, 從鍵盤讀從鍵盤
66、讀DATADATA(整型數(shù)或浮點數(shù))整型數(shù)或浮點數(shù))Set CONTROL = 9, Set CONTROL = 9, 從從DATADATA讀讀1 1字節(jié),無字符回顯字節(jié),無字符回顯數(shù)據(jù)地址數(shù)據(jù)地址0 0 x00000 x00000程序存儲器程序存儲器程序起點程序起點lwulwu r24,DATA(r0) r24,DATA(r0)lwulwu r25,CONTROL(r0) r25,CONTROL(r0)指令地址指令地址0 0 x00000 x00000數(shù)據(jù)存儲器數(shù)據(jù)存儲器常規(guī)數(shù)據(jù)區(qū)常規(guī)數(shù)據(jù)區(qū)0 0 x10000 x100000 0 x10008x10008sdsd r9,0(r24) r9,0(r24)sdsd r2,0(r25) r2,0(r25)控制寄存器控制寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器仿真非智能終端仿真非智能終端2014.2.17計算機系統(tǒng)結(jié)構(gòu)32MIPS64模擬器演示實驗?zāi)M器演示實驗1 整數(shù)加法整數(shù)加法文件名:文件名:sum.s .dataA: .word 10B: .word 8C: .word 0 .textmain: ld r4,A(r0);r4(A) ld r5,B(
- 溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案