歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > PPT文檔下載  

《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》電子教案(課2).ppt

  • 資源ID:17792335       資源大?。?span id="gak2kee" class="font-tahoma">406.06KB        全文頁(yè)數(shù):45頁(yè)
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》電子教案(課2).ppt

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.2 RISC技術(shù)簡(jiǎn)介( P44) 名詞: RISCReduced Instruction Set Computing, 精簡(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)主存只有 load和 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.2 RISC技術(shù)的發(fā)展 20世紀(jì) 70年代初, IBM研究中心的 John Cocke證明,計(jì)算機(jī)中約 20%的 指令承擔(dān)了 80%的工作, 1974年,他提出 RISC的概念。 在 RISC的早期研究中,加州大學(xué)伯克利分校( UC Berkeley)和斯坦福 大學(xué)( Stanford) 提出了許多有創(chuàng)見(jiàn)的新思想。伯克利率先在 1982年完成 了 RISC I型 32位芯片的設(shè)計(jì),斯坦福大學(xué)則在 John Hennessy( 現(xiàn)任校長(zhǎng)) 帶領(lǐng)下于 1983年完成了第一個(gè)采用 RISC理念的商用 MIPS微處理器 。 1984年 Hennessy等人創(chuàng)建了 MIPS計(jì)算機(jī)公司, 1998年改名為 MIPS技術(shù) 公司(美普思科技公司, MIPS Technologies Inc), 目前是美國(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年以前全球銷(xiāo)量第一,目前也僅次于 ARM。 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 4 MIPS處理器 MIPS的意思是 “ 無(wú)內(nèi)部互鎖流水級(jí)的微處理器 ” ( Microprocessor without interlocked piped stages), 其機(jī)制是盡量利用軟件辦法避免流 水線中的數(shù)據(jù)相關(guān)問(wèn)題。 MIPS具有強(qiáng)大的應(yīng)用基礎(chǔ),能在 MIPS上運(yùn)行的操作系統(tǒng),包括 Linux、 WindRiver、 WinCE、 GNU、 和 Monta Vista等;支持 14種編譯器,包括 MIPS、 SDE、 Green Hills、 GNU和 WindRiver等;支持 15種調(diào)試器,包括 GNU、 Green Hills、 WindRiver、 ASHLING和 FS2等;支持 18種仿真工具,包括 Mentor Graphics、 Synopsys、 CoWare和 Candence等。 中國(guó)科學(xué)院計(jì)算所的龍芯 1和 2都采用 64位 MIPS指令架構(gòu)。中國(guó)龍芯已與 MIPS公司合作,購(gòu)買(mǎi)其指令系統(tǒng)授權(quán),以便批量生產(chǎn)與出口。 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 5 2.6.1 MIPS的寄存器( P47) 32個(gè) 64位通用寄存器( GPRs), 也稱(chēng)為整數(shù)寄存器 名稱(chēng)是 R0, R1, , R31( 也可寫(xiě)為 $0, $1, , $31) R0的值永遠(yuǎn)是 0,可用作源寄存器,也可作為無(wú)用結(jié)果的目的寄存器; R31用于存放跳轉(zhuǎn)并鏈接類(lèi)指令的返回地址。 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( program counter, 程序計(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編譯器支持一些專(zhuān)業(yè)程序員對(duì) 32個(gè) 通用寄存器 GPR( GENERAL PURPOSE REGISTER) 約定的習(xí)慣性用法(非強(qiáng)制的): REGISTER NAME USAGE $0 $zero 常量 0(constant value 0) $2-$3 $v0-$v1 函數(shù)調(diào)用返回值 (values for results and expression evaluation) $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 全局指針 (Global Pointer) $29 $sp 堆棧指針 (Stack Pointer) $30 $fp 幀指針 (Frame Pointer) (BNN: fp is stale acutally, and can be simply used as $t8) $31 $ra 返回地址 (return address) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 7 2.6.2 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)算。 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 8 2.6.3 MIPS的數(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)記為 bit 0、 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.4 MIPS指令格式( P48) MIPS32和 MIPS64體系結(jié)構(gòu)定義了兼容的 32位和 64位處理機(jī)指令 使用條件編譯或宏匯編指令能寫(xiě)出可同時(shí)在 MIPS32和 MIPS64上運(yùn)行的程序 尋址方式編碼到操作碼中 所有的指令都是 32位的 操作碼占 6位 3種指令格式( 3種格式中,同名字段的位置固定不變) 6 5 5 1 6 oc 操作碼 rs 源操作數(shù)寄存器 rt 源 / 目的操作數(shù)寄存器 i m m e d i a t e 立即數(shù) 0 5 6 1 0 1 1 1 5 1 6 3 1 6 5 5 5 5 6 oc 操作碼 rs 源操作數(shù)寄存器 rt 源 / 目的操作數(shù)寄存器 rd 目的操作數(shù)寄存器 s h a m t 移位位數(shù) f u n c t 功能碼 0 5 6 1 0 1 1 1 5 1 6 2 0 2 1 2 5 2 6 3 1 6 2 6 oc 操作碼 o f f s e t 跳轉(zhuǎn)的目的地址 0 5 6 3 1 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 10 2.6.4 MIPS指令格式 I類(lèi)指令 包括所有的 load和 store指令,立即數(shù)指令,分支指令,寄存器跳轉(zhuǎn)指令, 寄存器鏈接跳轉(zhuǎn)指令。 立即數(shù)字段為 16位,用于提供立即數(shù)或偏移量。 load指令 訪存有效地址: Regsrs immediate 從存儲(chǔ)器取來(lái)的數(shù)據(jù)放入寄存器 rt store指令 訪存有效地址: Regsrs immediate 要存入存儲(chǔ)器的數(shù)據(jù)放在寄存器 rt中 立即數(shù)指令 Regsrt Regsrs op immediate 分支指令 轉(zhuǎn)移目標(biāo)地址: Regsrs immediate, rt無(wú)用 寄存器跳轉(zhuǎn)、寄存器跳轉(zhuǎn)并鏈接 轉(zhuǎn)移目標(biāo)地址為 Regsrs 6 5 5 1 6 oc 操作碼 rs 源操作數(shù)寄存器 rt 源 / 目的操作數(shù)寄存器 i m m e d i a t e 立即數(shù) 0 5 6 1 0 1 1 1 5 1 6 3 1 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 11 2.6.4 MIPS指令格式 R類(lèi)指令 包括 ALU指令,專(zhuān)用寄存器讀 /寫(xiě)指令, move指令等。 ALU指令 Regsrd Regsrs funct Regsrt funct為具體的運(yùn)算操作編碼 6 5 5 5 5 6 oc 操作碼 rs 源操作數(shù)寄存器 rt 源 / 目的操作數(shù)寄存器 rd 目的操作數(shù)寄存器 s h a m t 移位位數(shù) f u n c t 功能碼 0 5 6 1 0 1 1 1 5 1 6 2 0 2 1 2 5 2 6 3 1 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 12 2.6.4 MIPS指令格式 J類(lèi)指令 包括跳轉(zhuǎn)指令,跳轉(zhuǎn)并鏈接指令,自陷指令,異常返回指令。 在這類(lèi)指令中,指令字的低 26位是偏移量,它與 PC值相加形成跳轉(zhuǎn)的地址。 6 2 6 oc 操作碼 o f f s e t 跳轉(zhuǎn)的目的地址 0 5 6 3 1 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 13 2.6.5 MIPS的操作( P49) MIPS指令可以分為四大類(lèi) load和 store ALU操作 分支與跳轉(zhuǎn) 浮點(diǎn)操作 符號(hào)的意義 x ny: 從 y傳送 n位到 x x, yz : 把 z傳送到 x和 y 下標(biāo):表示字段中具體的位; 對(duì)于指令和數(shù)據(jù),按從最高位到最低位(即從左到右)的順序依 次進(jìn)行編號(hào),最高位為第 0位,次高位為第 1位,依此類(lèi)推。 下標(biāo)可以是一個(gè)數(shù)字,也可以是一個(gè)范圍。 例如: RegsR40: 寄存器 R4的符號(hào)位 RegsR456-63: R4的最低字節(jié) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 14 2.6.5 MIPS的操作(續(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位的寄存器,下式 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-31) 不變。 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 15 load和 store指令 指令舉例 指令名稱(chēng) 含 義 LD R2, 20(R3) 裝入雙字 RegsR2 64 Mem20+RegsR3 LW R2, 40(R3) 裝入字 RegsR2 64 (Mem40+RegsR30)32 # Mem40+RegsR3 LB R2, 30(R3) 裝入字節(jié) RegsR2 64 (Mem30+RegsR30)56 # Mem30+RegsR3 LBU R2, 40(R3) 裝入無(wú)符號(hào)字節(jié) RegsR2 64 056 # Mem40+RegsR3 LH R2, 30(R3) 裝入半字 RegsR2 64 (Mem30+RegsR30)48 # Mem30+RegsR3# Mem31+RegsR3 L.S F2, 60(R4) 裝入單精度浮點(diǎn)數(shù) RegsF2 64 Mem60+RegsR4 # 032 L.D F2, 40(R3) 裝入雙精度浮點(diǎn)數(shù) RegsF2 64 Mem40+RegsR3 SD R4, 300(R5) 保存雙字 Mem300+RegsR5 64 RegsR4 SW R4, 300(R5) 保存字 Mem300+RegsR5 32 RegsR4 S.S F2, 40(R2) 保存單精度浮點(diǎn)數(shù) Mem40+RegsR2 32 RegsF2 031 SH R5, 502(R4) 保存半字 Mem502+RegsR4 16 RegsR5 48.63 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 16 ALU指令 寄存器寄存器型( RR型)指令或立即數(shù)型 算術(shù)和邏輯操作:加、減、與、或、異或和移位等 R0的值永遠(yuǎn)是 0,它可以用來(lái)合成一些常用的操作。 例如: DADDIU R1, R0, #100 給寄存器 R1裝入常數(shù) 100 DADD R1, R0, R2 把寄存器 R2中的數(shù)據(jù)傳送到寄存器 R1 指令舉例 指令名稱(chēng) 含義 DADDU R1, R2, R3 無(wú)符號(hào)加 RegsR1 RegsR2+ RegsR3 DADDIU R4, R5, #6 加無(wú)符號(hào)立即數(shù) RegsR4 RegsR5+6 LUI R1, #4 把立即數(shù)裝入到一個(gè)字 的高 16位 RegsR1 0 32 # 4 # 016 DSLL R1, R2, #5 邏輯左移 RegsR1 RegsR2<<5 DSLT R1, R2, R3 置小于 If(RegsR2< RegsR3) RegsR1 1 else RegsR10 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 17 2.6.6 MIPS的控制指令( P50) 由一組跳轉(zhuǎn)和一組分支指令來(lái)實(shí)現(xiàn)控制流的改變 典型的 MIPS控制指令 指令舉例 指令名稱(chēng) 含義 J name 跳轉(zhuǎn) PC 3663 name<<2 JAL name 跳轉(zhuǎn)并鏈接 RegsR31PC+4 ; PC 3663name <<2; (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 ; (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 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)的兩種類(lèi)型 簡(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.7 MIPS的浮點(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偽指令 序號(hào) 偽指令 功能 1 .data start of data segment 2 .text start of code segment 3 .code start of code segment (same as .text) 4 .or g start address 5 .sp ace leave n empty bytes 6 .asciiz enters zero terminated ascii string 7 .as cii enter a scii string 8 .al ign align to n - byte boundary 9 .by te , . enter bytes 10 .word16 ,. enters 16 bit number(s) 11 .word32 ,. enters 32 bit number(s) 12 .wo rd , . enters word(s) of data (64 - bits) 13 .double ,. enters floating - point number(s) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 22 MIPS64指令集 1 序號(hào) 指令 功能 訪存 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 - bit word 6 lwu reg,imm(reg) load 32 - bit word unsigne d 7 ld reg,imm(reg) load 64 - bit double - word 8 l.s freg,imm(reg) load 32 - bit floati ng - point(single FP ) 9 l.d freg,imm(reg) load 64 - bit floati ng - 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 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 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 23 MIPS64指令集 2 序號(hào) 指令 功能 傳送 16 movz reg,reg,reg move if register equals zero 17 movn reg,reg,reg move if register 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 f rom intege r regist er t o FP register 21 mfc1 reg,freg move data f rom FP regi ster to int eger register 22 lui reg,im m load upper half of register immediate 算術(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 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 24 MIPS64指令集 3 序號(hào) 指令 功能 26 daddui reg,reg,imm add imm edi a te uns ign ed ( Win MIP S64 格式 ) 27 daddiu reg,reg,imm add immediate unsigned ( MIPSsim 格式 ) 28 add .s fre g,f reg ,fr eg add floating - point(single FP ) 29 add .d fre g,f reg ,fr eg add floating - point(double FP ) 30 dsub reg,r eg,reg subtract integers 31 dsubu reg,reg,reg subtract integers unsigned 32 sub .s fre g,f reg ,fr eg subtract floating - point(single FP ) 33 sub .d fre g,f reg ,fr eg subtract floating - point(double FP ) 34 dmul reg,reg,reg signed integer multiplication 35 dmulu reg,reg,reg unsigned integer multiplication 36 mul .d fre g,f reg ,fr eg multiply floating - point 37 ddiv reg,reg,reg signed integer division 38 ddivu reg,reg,reg unsigned integer division 39 div .d fre g,f reg ,fr eg divide floating - point 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 25 MIPS64指令集 4 序號(hào) 指令 功能 邏輯 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,r eg,imm shift left logical 47 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 shi ft rig ht log ica l by var iab le a mou nt 51 dsrav reg,reg,reg sh ift rig ht ari thm eti c by var iab le a mou nt 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 26 MIPS64指令集 5 序號(hào) 指令 功能 轉(zhuǎn)換 52 cvt.d.l freg,freg convert 64 - bit int ege r to a dou bl e F P format 53 cvt.l.d freg,freg convert double FP to a 64 - bit int ege r format 標(biāo)志 54 slt reg,reg,reg set if less than 55 dslt reg,reg,reg set if les s t han ( 教材寫(xiě)錯(cuò),上條為正確格式 ) 56 s ltu reg,reg,reg set if less than unsigned 57 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 fr eg,freg set FP flag if less than or equal to 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 27 MIPS64指令集 6 序號(hào) 指令 功能 跳轉(zhuǎn) 62 j imm jump to address 63 jr reg jump to address in register 64 jal imm jump and lin k 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 r egister is not equal t o zero 68 beq reg,reg,imm branch if 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 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 28 MIPS64模擬器介紹 1 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 29 MIPS64模擬器介紹 2 P ipe li ne w indow This w indow show s a schem at ic represent at ion of t he five pipe li ne stage s of t he M IP S 64 proce ss or a nd the unit s for floa ti ng point opera ti ons (addi ti on / subtract ion, m ult ipl ic at ion and divi sion). It show s which instruct ion is i n ea ch sta ge of t he pipe li ne. Code w indow This w indow show s a thre e col u m n representatio n of the code m em ory , show ing from le ft to righ t 1) a b y t e addre ss , 2) a hex num ber g iv ing th e 32 - bit m ac h ine cod e r epre sen ta ti on of the i nstructi on, and 3) the ass em bl y la ngu a g e st at em ent . D ouble - le f t - cl ic ki ng on an instru c ti on s et s or c le ars bre ak - point s. D at a w indow This w indow sh ow s the cont en t s of da ta m em ory , b y t e add ress a ble , but displa y ed in 64 - bit chunks, as a ppropriat e for a 64 - bit proc ess or . T o ed it an in te ger va lue d ouble - le f t - cl ic k . T o d ispla y and edi t as a floa ti n g - point num ber , double - right - cl ic k. Registe r window This w indow show s the val ues stored in the re gisters. If th e re gister is displa y ed in gre y , the n it is in the proc ess of bei ng w rit te n to b y a n instruct ion . If d i spla y ed using a col our , th e col o ur indi ca t es the stage in the pip el in e fro m w hic h thi s v al ue is av ai l abl e for forwar ding . Th is w indow al lows y ou to int era ct iv el y ch ange the cont ent s of those 64 - bi t int ege r and f loa ti ng - point r egi st ers tha t are no t in the pro ce ss o f bei ng w ritt en to, or bei ng forw ard e d. T o do th is, double - le f t - cl ic k on the regi ster y ou w a nt to cha ng e an d a pop - up w indow w il l ask y ou for ne w cont ent . P ress O K to confi rm the cha nge. 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 30 MIPS64模擬器介紹 3 Cloc k Cy cl e dia gra m T his windo w g i ve s a re pr ese ntati on of th e ti m i ng be ha v iou r o f the pip el in e. It r ecords the h istory of instr u ct ion s as th ey en te r an d emer ge fro m t he p ipe l ine . A n instr u ct ion th at ca uses a stall is hig hli ght ed in b lue : instr uc t ion s he ld up as a r esul t of a stal l ar e gra y ed . Stat isti cs T his windo w prov ide s stat ist ic s on the number o f sim ula ti on cy cles, instr uc ti ons, th e av er ag e C y cl es Per Instr uction (CPI), th e t y p es of stal ls, an d numbers of co nd i ti ona l bra n ch es an d L oa d/S tor e - instr uc ti ons. T er m ina l T his windo w m i m ic s a dumb t er m ina l I/ O d ev i ce wit h som e li m it ed gra phi cs ca pa bil it y . Stat us L ine T he status li n e at th e bot tom normal l y displ ays Rea d y , bu t wil l duri ng prog ra m sim ula ti on prov i de usefu l inf orm at ion on th e cu rr en t stat us of the sim ula ti on. 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 31 MIPS64模擬器的存儲(chǔ)器映射 I/O地址與命令 CONTROL: .word32 0 x10000 ;控制寄存器 ( 映射地址 ) DATA: .word32 0 x10008 ;數(shù)據(jù)寄存器 ( 映射地址 ) Set CONTROL = 1, 將 DATA作為無(wú)符號(hào)整型數(shù)輸出 Set CONTROL = 2, 將 DATA作為有符號(hào)整型數(shù)輸出 Set CONTROL = 3, 將 DATA作為浮點(diǎn)數(shù)輸出 Set CONTROL = 4, 將 DATA作為輸出字串的首地址 Set CONTROL = 5, 將 DATA+5 作為 x坐標(biāo) , DATA+4作為 y坐標(biāo) , DATA作為 RGB彩色值輸出 Set CONTROL = 6, 清除終端屏幕 Set CONTROL = 7, 清除圖形屏幕 Set CONTROL = 8, 從鍵盤(pán)讀 DATA( 整型數(shù)或浮點(diǎn)數(shù) ) Set CONTROL = 9, 從 DATA讀 1字節(jié) , 無(wú)字符回顯 數(shù)據(jù)地址 0 x00000 程序存儲(chǔ)器 程序起點(diǎn) lwu r24,DATA(r0) lwu r25,CONTROL(r0) 指令地址 0 x00000 數(shù)據(jù)存儲(chǔ)器 常規(guī)數(shù)據(jù)區(qū) 0 x10000 0 x10008 sd r9,0(r24) sd r2,0(r25) 控制寄存器 數(shù)據(jù)寄存器 仿真非智能終端 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 32 MIPS64模擬器演示實(shí)驗(yàn) 1 整數(shù)加法 文件名: sum.s .data A: .word 10 B: .word 8 C: .word 0 .text main: ld r4,A(r0) ;r4(A) ld r5,B(r0) ;r5(B) dadd r3,r4,r5 ;r3r4+r5 sd r3,C(r0) ;Cr3 halt 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 33 MIPS64模擬器演示實(shí)驗(yàn) 2 階乘 1 文件名: factorial.s ; ; 階乘示例 ; 返回值放 r10 ; .data number: .word 10 ;此數(shù)未用,可能想作為輸入值的上限 title: .asciiz “factorial program n= “ ;提示字符串 CONTROL: .word32 0 x10000 DATA: .word32 0 x10008 .text lwu r21,CONTROL(r0) ;r21指向 CONTROL單元(端口) lwu r22,DATA(r0) ;r22指向 DATA單元(端口) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 34 MIPS64模擬器演示實(shí)驗(yàn) 2 階乘 2 daddi r24,r0,4 ;輸出 ascii字串(提示信息) daddi r1,r0,title sd r1,(r22) sd r24,(r21) daddi r24,r0,8 ;從鍵盤(pán)讀輸入值到 r1( 整型量) sd r24,(r21) ld r1,(r22) start: daddi r29,r0,0 x80 ;r29指向堆棧區(qū)起點(diǎn)(十進(jìn)制值 =128) jal factorial ;調(diào)階乘子程序,返回值在 r10( 整型量) daddi r24,r0,1 ;輸出 r10的結(jié)果 sd r10,(r22) sd r24,(r21) halt ;停機(jī) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 35 MIPS64模擬器演示實(shí)驗(yàn) 2 階乘 3 ; ;階乘子程序,入口參數(shù)在 r1, 返回值在 r10 ; factorial: slti r10,r1,2 ;如果 r1<2( 即 r1=1) 則 r101 , 否則 r100 bnez r10,out ;如果 r10=1則子程序返回 sd r31,(r29) ;子程序返回地址壓進(jìn)堆棧 daddi r29,r29,8 ;堆棧指針 +8 sd r1,(r29) ;r1當(dāng)前值壓進(jìn)堆棧 daddi r29,r29,8 ;堆棧指針 +8 daddi r1,r1,-1 ;r1r1 1 jal factorial ;遞歸調(diào)用,將乘數(shù)序列依次入棧( n, 3 , 2) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 36 MIPS64模擬器演示實(shí)驗(yàn) 2 階乘 4 dadd r4,r0,r10 ;遞歸出口(首次 r10=1), r4r10 daddi r29,r29,-8 ;堆棧指針 8 ld r3,(r29) ;出棧: r3 棧頂單元 dmulu r3,r3,r4 ;r3r3 r4 dadd r10,r0,r3 ;r10 乘積 r3 daddi r29,r29,-8 ;堆棧指針 8 ld r31,0(r29) ;r31 返回地址 out: jr r31 ;子程序返回到 r31所指的地址 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 37 MIPS64模擬器演示實(shí)驗(yàn) 3 存儲(chǔ)器映射輸出 文件名: output.s .data A: .word 10 B: .word 8 C: .word 0 CR: .word32 0 x10000 DR: .word32 0 x10008 .text main: ld r4,A(r0) ;r4(A) ld r5,B(r0) ;r5(B) dadd r3,r4,r5 ;r3r4+r5 sd r3,C(r0) ;Cr3 lwu r1,CR(r0) ;r1指向 Control寄存器 lwu r2,DR(r0) ;r2指向 Data寄存器 daddi r10,r0,1 ;準(zhǔn)備命令 1(將 DATA作為無(wú)符號(hào)整型數(shù)輸出) sd r3,(r2) ;Data寄存器 r3 sd r10,(r1) ;Control寄存器 1 halt 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 38 MIPS64模擬器演示實(shí)驗(yàn) 4存儲(chǔ)器映射輸入 /輸出 數(shù)據(jù)地址 0 x00000 程序存儲(chǔ)器 程序起點(diǎn) lwu r24,DATA(r0) lwu r25,CONTROL(r0) 指令地址 0 x00000 數(shù)據(jù)存儲(chǔ)器 常規(guī)數(shù)據(jù)區(qū) 0 x10000 0 x10008 sd r9,0(r24) sd r2,0(r25) 控制寄存器 數(shù)據(jù)寄存器 仿真非智能終端 文件名: testio.s 向虛擬終端輸出字符串(命令 4)、畫(huà)線、畫(huà)彩色點(diǎn)(命令 5)。 CONTROL: .word32 0 x10000 DATA: .word32 0 x10008 .text lwu $t8,DATA($zero) ; $t8 = address of DATA register lwu $t9,CONTROL($zero) ; $t9 = address of CONTROL register daddi $v0,$zero,1 ; set for unsigned integer output ld $t1,int($zero) sd $t1,0($t8) ; write integer to DATA register sd $v0,0($t9) ; write to CONTROL register and make it happen daddi $v0,$zero,2 ; set for signed integer output ld $t1,int($zero) sd $t1,0($t8) ; write integer to DATA register sd $v0,0($t9) ; write to CONTROL register and make it happen 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é)果(不得借助模擬軟件)。 .data n: .word 3 x: .double 0.5 .text LD R1, n(R0) L.D F0, x(R0) DADDI R2, R0, 1 ; R2 1 MTC1 R2, F11 ; F11 1 CVT.D.L F2, F11 ; F2 1 loop: MUL.D F2, F2, F0 ; F2 F2*F0 DADDI R1, R1, -1 ; decrement R1 by 1 BNEZ R1, loop ; if R10 continue HALT ; 此條不填表 提示: MIPS浮點(diǎn)數(shù)的格式是 IEEE754 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 40 習(xí)題 2.14(補(bǔ)充)續(xù) 序號(hào) 結(jié)果寄存器名稱(chēng) 結(jié)果值( 16 進(jìn)制) 序號(hào) 結(jié)果寄存器名稱(chēng) 結(jié)果值( 16 進(jìn)制) 1 8 無(wú) 無(wú) 2 9 3 10 4 11 無(wú) 無(wú) 5 12 6 13 7 14 無(wú) 無(wú) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 41 實(shí)驗(yàn) 1: WinMIPS64模擬器練習(xí) 實(shí)驗(yàn)要求:用 MIPS64指令編寫(xiě)一個(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可以不寫(xiě)) (3) 程序效率 指令總條數(shù)(不算 H A L T ) 運(yùn)行總時(shí)間(節(jié)拍數(shù)) 循環(huán)輪數(shù) 1 2 3 4 R9 的值( B CD 整數(shù)) 2014.2.17 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) 42 IEEE 754浮點(diǎn)數(shù)標(biāo)準(zhǔn)(補(bǔ)充) 目前國(guó)際上流行的浮點(diǎn)數(shù)標(biāo)

注意事項(xiàng)

本文(《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》電子教案(課2).ppt)為本站會(huì)員(w****2)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!