處理器結(jié)構(gòu)與操作系統(tǒng)相關(guān)(MIPS為例).ppt_第1頁
處理器結(jié)構(gòu)與操作系統(tǒng)相關(guān)(MIPS為例).ppt_第2頁
處理器結(jié)構(gòu)與操作系統(tǒng)相關(guān)(MIPS為例).ppt_第3頁
處理器結(jié)構(gòu)與操作系統(tǒng)相關(guān)(MIPS為例).ppt_第4頁
處理器結(jié)構(gòu)與操作系統(tǒng)相關(guān)(MIPS為例).ppt_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、See MIPS Run 周劍 2010 7,Contents,MIPS概述,1,協(xié)處理器0,2,異常處理,4,函數(shù)調(diào)用,5,MIPS概述,五級(jí)流水(四個(gè)時(shí)鐘周期) IF取指 RD讀寄存器 ALU算術(shù)運(yùn)算 MEM訪問內(nèi)存 WB寫回寄存器,要求: 1. 指令等長(32位) 2. 內(nèi)存操作限制(load 2. 異常處理次序與指令次序一致; 3. 后續(xù)指令無效化:后續(xù)指令不影響寄存器的值和CPU;,異常處理,異常處理步驟,Mips CPU 設(shè)置EPC返回地址; 設(shè)置SR(EXL)位,進(jìn)入內(nèi)核態(tài)禁止中斷; 設(shè)置Cause寄存器(地址異常設(shè)置BadVAddr寄存器); 進(jìn)入異常入口,軟件處理; 軟件處理

2、: 用k0和 k1索引一塊內(nèi)存,保存寄存器; 查詢Cause寄存器確定異常種類; 構(gòu)建異常處理環(huán)境:提供內(nèi)存棧保存信息;(高級(jí)語言子程序) 處理異常; 從異常調(diào)用子程序返回到底層的異常處理程序;(內(nèi)核態(tài),關(guān)中斷); 異常返回(eret);,異常處理,1. 全局中斷使能位:SR(IE) 2. SR(EXL)(異常級(jí))和SR(ERL)(錯(cuò)誤級(jí)) 置位,則中斷禁止 3. 中斷屏蔽位SR(IM) 4. Cause寄存器中有8個(gè)中斷位,一般5-6個(gè)為輸入引腳驅(qū)動(dòng),剩下2個(gè)用于軟件中斷;查看Cause(IP),判斷活躍的中斷。,中斷資源,異常處理,中斷處理過程,Cause(IP)&SR(IM),確定活躍且

3、使能的中斷 ; 通過一個(gè)優(yōu)先級(jí)選擇一個(gè)中斷來處理; 保存SR(IM)老屏蔽位,可能在主異常處理保存了SR; 寫SR(IM),禁止優(yōu)先級(jí)小于等于該中斷的中斷; 必要時(shí)保存中斷上下文; SR(IE)置1,并且將SR(KSU)置于核心態(tài)以便清除SR(EXL)離開異常模式; 調(diào)用中斷處理程序; 返回時(shí)禁止中斷,以便恢復(fù)被中斷任務(wù)的執(zhí)行。,異常處理,軟件中實(shí)現(xiàn)中斷優(yōu)先級(jí),1. 軟件中每個(gè)中斷源都屬于某個(gè)優(yōu)先等級(jí)(IPL); 2. CPU運(yùn)行在最低優(yōu)先級(jí),任何中斷允許; 3. CPU運(yùn)行在最高優(yōu)先級(jí),任何中斷禁止; 4. 任意IPL上,分配到該級(jí)和更低優(yōu)先級(jí)的中斷被禁止,而 更高優(yōu)先級(jí)的使能,同一級(jí)的不同

4、中斷先來先服務(wù); 5. IPL和被運(yùn)行代碼相關(guān):任意一段代碼以固定IPL執(zhí)行; 6. 如果不在最低優(yōu)先級(jí)并且沒有更高優(yōu)先級(jí)中斷活躍時(shí),中斷返回被中斷的代碼,如果在最低優(yōu)先級(jí)可能會(huì)進(jìn)行任務(wù)調(diào)度來實(shí)現(xiàn)CPU共享。,異常處理,原子性實(shí)現(xiàn),原子操作可以通過禁止所有中斷來實(shí)現(xiàn),但禁止中斷本身(對(duì)SR的R-M-W)不保證是原子的。 有三個(gè)方法修正: 中斷處理例程返回前必須恢復(fù)被中斷代碼的SR; 用一個(gè)系統(tǒng)調(diào)用來禁止中斷; MiPS 指令集中用load-linked和store-conditional指令來設(shè)置關(guān)鍵區(qū) (MIPS中的信號(hào)量機(jī)制) ;,異常處理,啟動(dòng)注意點(diǎn),1. CPU從非緩存區(qū)Kseg1的0

5、 xBFC00000取值; 2. SR保證三個(gè)態(tài):CPU在內(nèi)核態(tài)、中斷禁止、SR(BEV)=1; 3. 高速緩存處于隨機(jī)無意義狀態(tài); 4. TLB處于隨機(jī)狀態(tài),初始化前不可訪問;,異常處理,啟動(dòng)順序,1. 跳到ROM空間:異常入口在0 xBFC00000;跳轉(zhuǎn)是簡單測(cè)試 2. 配置&CPU初始化:SR設(shè)置成有效狀態(tài),可從非緩存空間取值; 3. 內(nèi)存初始化:在初始化部分RAM并對(duì)其進(jìn)行完整性檢查前,只能使用寄存器,可以將初始化縮小到一塊能放下ROM中的程序的內(nèi)存大?。?4. 狀態(tài)跟蹤:利用控制臺(tái)端口(診斷寄存器)報(bào)告初始化過程的一些問題; 5. 現(xiàn)在可以分配棧,設(shè)置足夠多的寄存器,以便調(diào)用C過程; 6. 初始化Cache,運(yùn)行其他初始化代碼;,函數(shù)調(diào)用,堆棧參數(shù)結(jié)構(gòu),1. 所有函數(shù)調(diào)用參數(shù)在堆棧里分配空間,但參數(shù)結(jié)構(gòu)的前四個(gè)字通過寄存器傳遞(a0-a3); 1. SP指向棧底; 2. 至少分配16個(gè)字節(jié)的參數(shù)空間; 3. 任何半字類型參數(shù)擴(kuò)展成32位的對(duì)象傳遞,除了結(jié)構(gòu)體中的參數(shù)(字節(jié)和半字緊縮成一個(gè)字存儲(chǔ));,函數(shù)調(diào)用,寄存器傳遞參數(shù),1. 任何位于參數(shù)結(jié)構(gòu)開頭16個(gè)字節(jié)的參數(shù)傳遞到a0a3中; 2. 除非第一個(gè)參數(shù)是浮點(diǎn),否則不能在FP中傳遞浮點(diǎn)參數(shù); 3. 整型或者指針型返回值放于v0($2)中,浮點(diǎn)返回到$f0中; 4. 返回?cái)?shù)據(jù)結(jié)構(gòu)太大,調(diào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論