《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》電子教案(課2).ppt
《《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》電子教案(課2).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》電子教案(課2).ppt(45頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 1 第2章指令系統(tǒng)的設(shè)計(jì) 本章主要內(nèi)容 1 指令操作碼的優(yōu)化 不講 2 RISC技術(shù)簡(jiǎn)介 3 MIPS指令集 4 MIPS模擬器 補(bǔ)充 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 2 2 4 2RISC技術(shù)簡(jiǎn)介 P44 名詞 RISC ReducedInstructionSetComputing 精簡(jiǎn)指令集計(jì)算機(jī) 1 RISC產(chǎn)生的背景 20 與80 規(guī)律 2 RISC設(shè)計(jì)的基本原則 只設(shè)置最常用的簡(jiǎn)單指令 凡遇復(fù)雜操作均用多條簡(jiǎn)單指令實(shí)現(xiàn) 指令長(zhǎng)度固定 操作碼與操作數(shù)長(zhǎng)度都盡量統(tǒng)一 基本指令的啟動(dòng)時(shí)間間隔降低到1個(gè)時(shí)鐘周期 訪問(wèn)主存只有l(wèi)oad和store指令 用變址尋址 盡量采用硬連邏輯對(duì)指令譯碼 為了加快執(zhí)行速度 在編譯過(guò)程中對(duì)目標(biāo)代碼結(jié)構(gòu)進(jìn)行優(yōu)化 3 RISC性能優(yōu)勢(shì)的原因采用RISC技術(shù)的主要?jiǎng)訖C(jī)是使各條指令的執(zhí)行時(shí)序盡可能一致 CPU在執(zhí)行時(shí)間上可以把它們安排得更緊湊 就像許多大小相近的箱子容易被堆放得更密集一樣 這樣機(jī)器內(nèi)的各種資源可以充分利用 單位時(shí)間內(nèi)能執(zhí)行更多的指令 速度更快 這方面的具體內(nèi)容 在第3章講流水線時(shí)會(huì)詳細(xì)介紹 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 3 2 4 2RISC技術(shù)的發(fā)展 20世紀(jì)70年代初 IBM研究中心的JohnCocke證明 計(jì)算機(jī)中約20 的指令承擔(dān)了80 的工作 1974年 他提出RISC的概念 在RISC的早期研究中 加州大學(xué)伯克利分校 UCBerkeley 和斯坦福大學(xué) Stanford 提出了許多有創(chuàng)見(jiàn)的新思想 伯克利率先在1982年完成了RISCI型32位芯片的設(shè)計(jì) 斯坦福大學(xué)則在JohnHennessy 現(xiàn)任校長(zhǎng) 帶領(lǐng)下于1983年完成了第一個(gè)采用RISC理念的商用MIPS微處理器 1984年Hennessy等人創(chuàng)建了MIPS計(jì)算機(jī)公司 1998年改名為MIPS技術(shù)公司 美普思科技公司 MIPSTechnologiesInc 目前是美國(guó)最著名的芯片設(shè)計(jì)公司之一 MIPS技術(shù)公司本身不生產(chǎn)微處理器 它只設(shè)計(jì)高性能工業(yè)級(jí)的32位和64位CPU的結(jié)構(gòu)體系 并且向其它半導(dǎo)體公司提供使用其內(nèi)核 IP 的授權(quán) 用于生產(chǎn)基于MIPS而又各具特色的微處理器 1999年MIPS技術(shù)公司發(fā)布了MIPS32和MIPS64架構(gòu)標(biāo)準(zhǔn) MIPS的通用微處理器主要用于構(gòu)建高性能工作站 服務(wù)器和超級(jí)計(jì)算機(jī)系統(tǒng) 其嵌入式產(chǎn)品在1999年以前全球銷量第一 目前也僅次于ARM 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 4 MIPS處理器 MIPS的意思是 無(wú)內(nèi)部互鎖流水級(jí)的微處理器 Microprocessorwithoutinterlockedpipedstages 其機(jī)制是盡量利用軟件辦法避免流水線中的數(shù)據(jù)相關(guān)問(wèn)題 MIPS具有強(qiáng)大的應(yīng)用基礎(chǔ) 能在MIPS上運(yùn)行的操作系統(tǒng) 包括Linux WindRiver WinCE GNU 和MontaVista等 支持14種編譯器 包括MIPS SDE GreenHills GNU和WindRiver等 支持15種調(diào)試器 包括GNU GreenHills WindRiver ASHLING和FS2等 支持18種仿真工具 包括MentorGraphics Synopsys CoWare和Candence等 中國(guó)科學(xué)院計(jì)算所的龍芯1和2都采用64位MIPS指令架構(gòu) 中國(guó)龍芯已與MIPS公司合作 購(gòu)買其指令系統(tǒng)授權(quán) 以便批量生產(chǎn)與出口 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 5 2 6 1MIPS的寄存器 P47 32個(gè)64位通用寄存器 GPRs 也稱為整數(shù)寄存器名稱是R0 R1 R31 也可寫為 0 1 31 R0的值永遠(yuǎn)是0 可用作源寄存器 也可作為無(wú)用結(jié)果的目的寄存器 R31用于存放跳轉(zhuǎn)并鏈接類指令的返回地址 32個(gè)64位浮點(diǎn)數(shù)寄存器 FPRs F0 F1 F31用來(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)用 特殊功能寄存器PC programcounter 程序計(jì)數(shù)寄存器 HI 整數(shù)乘除結(jié)果高位寄存器 除法余數(shù) LO 整數(shù)乘除結(jié)果低位寄存器 除法的商 它們可以與通用寄存器交換數(shù)據(jù) 浮點(diǎn)狀態(tài)寄存器 用來(lái)保存有關(guān)浮點(diǎn)操作結(jié)果的信息 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 6 MIPS的寄存器別名 程序員習(xí)慣用法 MIPS編譯器支持一些專業(yè)程序員對(duì)32個(gè)通用寄存器GPR GENERALPURPOSEREGISTER 約定的習(xí)慣性用法 非強(qiáng)制的 REGISTERNAMEUSAGE 0 zero常量0 constantvalue0 2 3 v0 v1函數(shù)調(diào)用返回值 valuesforresultsandexpressionevaluation 4 7 a0 a3函數(shù)調(diào)用參數(shù) arguments 8 15 t0 t7暫時(shí)的 或隨便用的 16 23 s0 s7保存的 或如果用 需要SAVE RESTORE的 saved 24 25 t8 t9暫時(shí)的 或隨便用的 26 27 k0 k1由操作系統(tǒng)的異?;蛑袛嗵幚沓绦蚴褂?28 gp全局指針 GlobalPointer 29 sp堆棧指針 StackPointer 30 fp幀指針 FramePointer BNN fpisstaleacutally andcanbesimplyusedas t8 31 ra返回地址 returnaddress 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 7 2 6 2MIPS的數(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)算 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 8 2 6 3MIPS的數(shù)據(jù)尋址方式 P47 立即數(shù)尋址與偏移量尋址 立即數(shù)字段和偏移量字段都是16位的 寄存器間接尋址是通過(guò)把0作為偏移量來(lái)實(shí)現(xiàn)的 16位絕對(duì)尋址是通過(guò)把R0 其值永遠(yuǎn)為0 作為基址寄存器來(lái)完成的 MIPS的存儲(chǔ)器按字節(jié)尋址 地址為64位 所有存儲(chǔ)器訪問(wèn)必須是邊界對(duì)齊的 即訪問(wèn)地址必須是該數(shù)據(jù)長(zhǎng)度 字節(jié)數(shù) 的整倍數(shù) 又叫整數(shù)邊界原則 MIPS的存儲(chǔ)器按字節(jié)編制 所有數(shù)據(jù)字 指令字從最高有效位開(kāi)始依次標(biāo)記為bit0 1 2 MIPS處理器的存儲(chǔ)順序 可以設(shè)置為 小端字節(jié)表示順序 Littile Endian 低位字節(jié)放在低地址 或者 大端字節(jié)表示順序 Big Endian 高位字節(jié)放在低地址 以便適合網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)順序 在下文使用的MIPS64模擬器中采用 小端字節(jié)表示順序 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 9 2 6 4MIPS指令格式 P48 MIPS32和MIPS64體系結(jié)構(gòu)定義了兼容的32位和64位處理機(jī)指令使用條件編譯或宏匯編指令能寫出可同時(shí)在MIPS32和MIPS64上運(yùn)行的程序?qū)ぶ贩绞骄幋a到操作碼中所有的指令都是32位的操作碼占6位3種指令格式 3種格式中 同名字段的位置固定不變 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 10 2 6 4MIPS指令格式 I類指令 包括所有的load和store指令 立即數(shù)指令 分支指令 寄存器跳轉(zhuǎn)指令 寄存器鏈接跳轉(zhuǎn)指令 立即數(shù)字段為16位 用于提供立即數(shù)或偏移量 load指令訪存有效地址 Regs rs immediate從存儲(chǔ)器取來(lái)的數(shù)據(jù)放入寄存器rtstore指令訪存有效地址 Regs rs immediate要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器rt中立即數(shù)指令Regs rt Regs rs opimmediate分支指令轉(zhuǎn)移目標(biāo)地址 Regs rs immediate rt無(wú)用寄存器跳轉(zhuǎn) 寄存器跳轉(zhuǎn)并鏈接轉(zhuǎn)移目標(biāo)地址為Regs rs 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 11 2 6 4MIPS指令格式 R類指令 包括ALU指令 專用寄存器讀 寫指令 move指令等 ALU指令Regs rd Regs rs functRegs rt funct為具體的運(yùn)算操作編碼 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 12 2 6 4MIPS指令格式 J類指令 包括跳轉(zhuǎn)指令 跳轉(zhuǎn)并鏈接指令 自陷指令 異常返回指令 在這類指令中 指令字的低26位是偏移量 它與PC值相加形成跳轉(zhuǎn)的地址 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 13 2 6 5MIPS的操作 P49 MIPS指令可以分為四大類load和storeALU操作分支與跳轉(zhuǎn)浮點(diǎn)操作符號(hào)的意義x ny 從y傳送n位到xx y z 把z傳送到x和y下標(biāo) 表示字段中具體的位 對(duì)于指令和數(shù)據(jù) 按從最高位到最低位 即從左到右 的順序依次進(jìn)行編號(hào) 最高位為第0位 次高位為第1位 依此類推 下標(biāo)可以是一個(gè)數(shù)字 也可以是一個(gè)范圍 例如 Regs R4 0 寄存器R4的符號(hào)位Regs R4 56 63 R4的最低字節(jié) 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 14 2 6 5MIPS的操作 續(xù) Mem 表示主存 按字節(jié)尋址 可以傳輸任意個(gè)字節(jié) 上標(biāo) 用于表示對(duì)字段進(jìn)行復(fù)制的次數(shù) 例如 032表示一個(gè)32位長(zhǎng)的全0字段符號(hào) 用于兩個(gè)字段的拼接 并且可以出現(xiàn)在數(shù)據(jù)傳送的任何一邊 舉例 R8 R6是64位的寄存器 下式Regs R8 32 63 32 Mem Regs R6 0 24 Mem Regs R6 表示的意義是 以R6的內(nèi)容作為地址訪問(wèn)內(nèi)存 得到的字節(jié)按符號(hào)位擴(kuò)展為32位后存入R8的低32位 R8的高32位 即Regs R8 0 31 不變 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 15 load和store指令 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 16 ALU指令 寄存器 寄存器型 RR型 指令或立即數(shù)型算術(shù)和邏輯操作 加 減 與 或 異或和移位等R0的值永遠(yuǎn)是0 它可以用來(lái)合成一些常用的操作 例如 DADDIUR1 R0 100給寄存器R1裝入常數(shù)100DADDR1 R0 R2把寄存器R2中的數(shù)據(jù)傳送到寄存器R1 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 17 2 6 6MIPS的控制指令 P50 由一組跳轉(zhuǎn)和一組分支指令來(lái)實(shí)現(xiàn)控制流的改變典型的MIPS控制指令 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 18 跳轉(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)并鏈接 把目標(biāo)地址送入程序計(jì)數(shù)器 把返回地址 即順序下一條指令的地址 放入寄存器R31 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 19 分支指令 條件轉(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)行分支 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 20 2 6 7MIPS的浮點(diǎn)操作 P51 由操作碼指出操作數(shù)是單精度 SP 或雙精度 DP 后綴S 表示操作數(shù)是單精度浮點(diǎn)數(shù)后綴D 表示是雙精度浮點(diǎn)數(shù)浮點(diǎn)操作包括加 減 乘 除 分別有單精度和雙精度指令 浮點(diǎn)數(shù)比較指令根據(jù)比較結(jié)果設(shè)置浮點(diǎn)狀態(tài)寄存器中的某一位 以便于后面的分支指令BC1T 若真則分支 或BC1F 若假則分支 測(cè)試該位 以決定是否進(jìn)行分支 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 21 注意浮點(diǎn)數(shù)的存儲(chǔ)格式只有64位雙精度這一種 沒(méi)有32位單精度數(shù) MIPS64偽指令 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 22 MIPS64指令集1 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 23 MIPS64指令集2 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 24 MIPS64指令集3 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 25 MIPS64指令集4 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 26 MIPS64指令集5 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 27 MIPS64指令集6 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 28 MIPS64模擬器介紹1 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 29 MIPS64模擬器介紹2 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 30 MIPS64模擬器介紹3 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 31 MIPS64模擬器的存儲(chǔ)器映射I O地址與命令 CONTROL word320 x10000 控制寄存器 映射地址 DATA word320 x10008 數(shù)據(jù)寄存器 映射地址 SetCONTROL 1 將DATA作為無(wú)符號(hào)整型數(shù)輸出SetCONTROL 2 將DATA作為有符號(hào)整型數(shù)輸出SetCONTROL 3 將DATA作為浮點(diǎn)數(shù)輸出SetCONTROL 4 將DATA作為輸出字串的首地址SetCONTROL 5 將DATA 5作為x坐標(biāo) DATA 4作為y坐標(biāo) DATA作為RGB彩色值輸出SetCONTROL 6 清除終端屏幕SetCONTROL 7 清除圖形屏幕SetCONTROL 8 從鍵盤讀DATA 整型數(shù)或浮點(diǎn)數(shù) SetCONTROL 9 從DATA讀1字節(jié) 無(wú)字符回顯 數(shù)據(jù)地址 0 x00000 程序存儲(chǔ)器 程序起點(diǎn) lwur24 DATA r0 lwur25 CONTROL r0 指令地址 0 x00000 數(shù)據(jù)存儲(chǔ)器 常規(guī)數(shù)據(jù)區(qū) 0 x10000 0 x10008 sdr9 0 r24 sdr2 0 r25 控制寄存器 數(shù)據(jù)寄存器 仿真非智能終端 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 32 MIPS64模擬器演示實(shí)驗(yàn)1 整數(shù)加法 文件名 sum s dataA word10B word8C word0 textmain ldr4 A r0 r4 A ldr5 B r0 r5 B daddr3 r4 r5 r3 r4 r5sdr3 C r0 C r3halt 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 33 MIPS64模擬器演示實(shí)驗(yàn)2 階乘1 文件名 factorial s 階乘示例 返回值放r10 datanumber word10 此數(shù)未用 可能想作為輸入值的上限title asciiz factorialprogramn 提示字符串CONTROL word320 x10000DATA word320 x10008 textlwur21 CONTROL r0 r21指向CONTROL單元 端口 lwur22 DATA r0 r22指向DATA單元 端口 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 34 MIPS64模擬器演示實(shí)驗(yàn)2 階乘2 daddir24 r0 4 輸出ascii字串 提示信息 daddir1 r0 titlesdr1 r22 sdr24 r21 daddir24 r0 8 從鍵盤讀輸入值到r1 整型量 sdr24 r21 ldr1 r22 start daddir29 r0 0 x80 r29指向堆棧區(qū)起點(diǎn) 十進(jìn)制值 128 jalfactorial 調(diào)階乘子程序 返回值在r10 整型量 daddir24 r0 1 輸出r10的結(jié)果sdr10 r22 sdr24 r21 halt 停機(jī) 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 35 MIPS64模擬器演示實(shí)驗(yàn)2 階乘3 階乘子程序 入口參數(shù)在r1 返回值在r10 factorial sltir10 r1 2 如果r1 2 即r1 1 則r10 1 否則r10 0bnezr10 out 如果r10 1則子程序返回sdr31 r29 子程序返回地址壓進(jìn)堆棧daddir29 r29 8 堆棧指針 8sdr1 r29 r1當(dāng)前值壓進(jìn)堆棧daddir29 r29 8 堆棧指針 8daddir1 r1 1 r1 r1 1jalfactorial 遞歸調(diào)用 將乘數(shù)序列依次入棧 n 3 2 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 36 MIPS64模擬器演示實(shí)驗(yàn)2 階乘4 daddr4 r0 r10 遞歸出口 首次r10 1 r4 r10daddir29 r29 8 堆棧指針 8ldr3 r29 出棧 r3 棧頂單元dmulur3 r3 r4 r3 r3 r4daddr10 r0 r3 r10 乘積r3daddir29 r29 8 堆棧指針 8ldr31 0 r29 r31 返回地址out jrr31 子程序返回到r31所指的地址 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 37 MIPS64模擬器演示實(shí)驗(yàn)3 存儲(chǔ)器映射輸出 文件名 output s dataA word10B word8C word0CR word320 x10000DR word320 x10008 textmain ldr4 A r0 r4 A ldr5 B r0 r5 B daddr3 r4 r5 r3 r4 r5sdr3 C r0 C r3lwur1 CR r0 r1指向Control寄存器lwur2 DR r0 r2指向Data寄存器daddir10 r0 1 準(zhǔn)備命令1 將DATA作為無(wú)符號(hào)整型數(shù)輸出 sdr3 r2 Data寄存器 r3sdr10 r1 Control寄存器 1halt 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 38 MIPS64模擬器演示實(shí)驗(yàn)4 存儲(chǔ)器映射輸入 輸出 數(shù)據(jù)地址 0 x00000 程序存儲(chǔ)器 程序起點(diǎn) lwur24 DATA r0 lwur25 CONTROL r0 指令地址 0 x00000 數(shù)據(jù)存儲(chǔ)器 常規(guī)數(shù)據(jù)區(qū) 0 x10000 0 x10008 sdr9 0 r24 sdr2 0 r25 控制寄存器 數(shù)據(jù)寄存器 仿真非智能終端 文件名 testio s向虛擬終端輸出字符串 命令4 畫線 畫彩色點(diǎn) 命令5 CONTROL word320 x10000DATA word320 x10008 textlwu t8 DATA zero t8 addressofDATAregisterlwu t9 CONTROL zero t9 addressofCONTROLregisterdaddi v0 zero 1 setforunsignedintegeroutputld t1 int zero sd t1 0 t8 writeintegertoDATAregistersd v0 0 t9 writetoCONTROLregisterandmakeithappendaddi v0 zero 2 setforsignedintegeroutputld t1 int zero sd t1 0 t8 writeintegertoDATAregistersd v0 0 t9 writetoCONTROLregisterandmakeithappen 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 39 習(xí)題2 14 補(bǔ)充 MIPS64指令系統(tǒng)練習(xí) 人工模擬以下MIPS程序的單條指令運(yùn)行方式 在表中用16進(jìn)制編碼記錄每一步產(chǎn)生的結(jié)果 不得借助模擬軟件 datan word3x double0 5 textLDR1 n R0 L DF0 x R0 DADDIR2 R0 1 R2 1MTC1R2 F11 F11 1CVT D LF2 F11 F2 1loop MUL DF2 F2 F0 F2 F2 F0DADDIR1 R1 1 decrementR1by1BNEZR1 loop ifR1 0continueHALT 此條不填表提示 MIPS浮點(diǎn)數(shù)的格式是IEEE754 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 40 習(xí)題2 14 補(bǔ)充 續(xù) 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 41 實(shí)驗(yàn)1 WinMIPS64模擬器練習(xí) 實(shí)驗(yàn)要求 用MIPS64指令編寫一個(gè)盡可能短小的程序 將事先存放在數(shù)據(jù)區(qū)的4字節(jié)字符串 例如 3901 轉(zhuǎn)換為一個(gè)4位BCD整數(shù) 賦給R9 在WinMIPS64模擬器調(diào)試通過(guò) 實(shí)驗(yàn)報(bào)告 1 程序清單 2 運(yùn)行結(jié)果 每輪循環(huán)末尾R9的數(shù)值 高位的0可以不寫 3 程序效率 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 42 IEEE754浮點(diǎn)數(shù)標(biāo)準(zhǔn) 補(bǔ)充 目前國(guó)際上流行的浮點(diǎn)數(shù)標(biāo)準(zhǔn)是IEEE754 其基本組成是32bit單精度 64bit雙精度兩種類型 IEEE754標(biāo)準(zhǔn)的主要起草者是加州大學(xué)伯克利分校數(shù)學(xué)系教授WilliamKahan 他幫助Intel公司設(shè)計(jì)了8087浮點(diǎn)處理器 FPU 并以此為基礎(chǔ)形成了IEEE754標(biāo)準(zhǔn) Kahan教授也因此獲得了1987年的圖靈獎(jiǎng) 目前幾乎所有包含浮點(diǎn)運(yùn)算的處理機(jī)都宣稱支持IEEE754標(biāo)準(zhǔn) 包括Intel公司的Pentium 中國(guó)的 龍芯 IEEE754的標(biāo)準(zhǔn)文件是ANSI IEEEStd754 1985 IEEEStandardforBinaryFloating PointArithmetic 通過(guò)Google可搜到pdf文件下載 Kahan教授的主頁(yè) http www cs berkeley edu wkahan 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 43 在IEEE754浮點(diǎn)數(shù)國(guó)際標(biāo)準(zhǔn)中 32位單精度浮點(diǎn)數(shù)和64位雙精度浮點(diǎn)數(shù)的格式分別如下 對(duì)于單精度浮點(diǎn)數(shù) 階碼用移 127碼表示 即階碼的0 255分別表示階碼的真值為 127 128 尾數(shù) 原碼 用1位符號(hào)位 23位小數(shù)和1位隱藏的整數(shù)共25位表示 尾數(shù)的基值和階碼的基值都是2 當(dāng)0 e 255時(shí) 表示一個(gè)非零的規(guī)格化浮點(diǎn)數(shù) 數(shù)值為 N 1 s 2e 127 1 m IEEE754浮點(diǎn)數(shù)標(biāo)準(zhǔn) 續(xù)1 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 44 IEEE754浮點(diǎn)數(shù)標(biāo)準(zhǔn) 續(xù)2 當(dāng)e 255 且m 0時(shí) 表示一個(gè)非數(shù)NaN Not a Number NaN可能是在許多非確定的情況下 如零除以零 求負(fù)數(shù)的平方根等產(chǎn)生的結(jié)果 當(dāng)e 255 且m 0時(shí) 表示一個(gè)無(wú)窮數(shù) N 1 s 注意 和 的表示是不同的 當(dāng)e 0 且m 0時(shí) 表示規(guī)格化浮點(diǎn)數(shù) N 1 s 2 126 0 m 當(dāng)e 0 且m 0時(shí) 表示浮點(diǎn)數(shù)零 N 1 s 0 注意 0與 0的表示是不同的 對(duì)于64位雙精度浮點(diǎn)數(shù) 階碼用移 1023碼表示 其他規(guī)定與單精度浮點(diǎn)數(shù)類似 2014 2 17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 45 各次作業(yè)應(yīng)交的內(nèi)容 作業(yè)2 第2次課 2 14 補(bǔ)充 實(shí)驗(yàn)1- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 計(jì)算機(jī)系統(tǒng) 結(jié)構(gòu) 電子 教案
鏈接地址:http://m.kudomayuko.com/p-7432303.html