or1200處理器的異常處理類指令介紹

2021-09-07 12:11:59 字數 2043 閱讀 3535

下面內容摘自《步步驚芯——軟核處理器內部設計分析》一書

我們在計算機體系結構的學習中知道:中斷實質上包含由外部事件引起的硬中斷(又稱外中斷)和由內部預先安排的特定指令或內部異常引起的軟中斷(又稱內中斷或異常)兩大類。在or1200處理器中將中斷稱之為異常(exception),硬中斷是當中的一種異常,當然這僅僅是說法的不同而已。當異常發生時,有關處理器的狀態資訊被儲存到某些暫存器。or1200處理器轉移到事先定義好的乙個位址。在那個位址中往往有異常處理例程。在當中進行異常處理,這個位址稱為異常處理例程入口位址。

or1200中有32個異常處理例程入口位址。當中明白定義使用了前14個。後18個作為將來擴充套件使用。異常型別下表所看到的。

參照計算機體系結構中關於中斷的定義,也能夠將or1200中的異常區分為:硬中斷、內部異常、特定指令引發的異常。例如以下:

本章將僅僅對特定指令引發的異常進行分析,其餘型別異常在處理器中的處理過程與此類似。將在本書後面對詳細模組分析的時候再作討論,比方:在分析immu模組的時候就會討論指令tlb失靶異常以及指令頁失效異常的處理過程。

當異常發生時,or1200會進行例如以下操作:

(2)設定eear:假設發生的異常是匯流排錯誤、指令頁失效、資料頁失效、指令tlb失靶、資料tlb失靶等異常,那麼會把例外發生時正在訪問的指令或資料的有效位址ea(effective address)儲存到eear暫存器。

(3)儲存sr到esr暫存器。

(4)設定新的sr值:使得immu、dmmu都禁用,計時器中斷、外部中斷也禁止,而且進入特權模式。即設定sr[dme]=0、sr[ime]=0、sr[tee]=0、sr[iee]=0、sr[sm]=1。

(5)轉移到對應的異常處理例程繼續執行。

當異常處理結束後,須要使用指令l.rfe從異常返回,l.rfe指令會將esr的值恢復到sr。同一時候將epcr的值恢復到pc,處理器回到異常發生前的狀態繼續執行。

此處對異常發生時儲存到epcr、eear的值進行說明,如表7.1所看到的。

針對不同的異常型別儲存到epcr的值不同。而且該值與異常發生時處於執行階段的指令是否位於延遲槽中也有關係。

讀者朋友可能會有乙個疑問:為什麼當異常發生,且處於執行階段的指令是延遲槽中的指令時儲存在epcr中的返回位址是上一條轉移指令的位址呢?這是由於在引入延遲槽之前,處理器執行轉移指令的順序是:

轉移指令->轉移目標位址的指令

引入延遲槽之後,處理器執行轉移指令的順序是:

轉移指令->延遲槽指令->轉移目標位址的指令

在中間插入了延遲槽指令,當異常發生,且處於執行階段的指令是延遲槽中的指令時,假設在epcr中儲存延遲槽指令位址,那麼當從異常處理例程返回時。將回到延遲槽指令位址。又一次執行的指令順序是:

延遲槽指令->延遲槽指令的下一條指令

可見沒有發生轉移,這樣就全然不是被打斷之前的指令順序,所以為了恢復原來的指令順序,在這裡將延遲槽之前的轉移指令位址儲存到epcr中。

表7.1中另一列顯示異常的優先順序,數字越小表示優先順序越高。表中的優先順序與or1200手冊給的不一樣,筆者是從**中總結出這些優先順序的。or1200手冊對各個異常的優先順序表述與實現不符。

or1200中異常處理類指令共同擁有3條,表7.2給出了全部的異常處理類指令及其說明。

關於異常處理類指令有例如以下幾點補充說明:

(1)l.sys指令中的馬上數k,在orbis32說明中指出這個k是乙個引數,作業系統能夠利用該值確定怎樣處理這個系統呼叫請求,但在or1200的實現中並沒有儲存這個引數。也沒有使用這個引數。

(2)l.trap指令中的馬上數k,在orbis32說明中指出僅僅有在sr[k]為1時,才會進入自陷異常的處理例程。但從本章對l.trap的分析中能夠發現or1200處理器並沒有實現這一推斷過程,馬上數k沒有作用。

8086 8088 處理器結構

8088共有8個通用暫存器,1個標誌暫存器 4個段暫存器和1個指令指標暫存器。一 通用暫存器 資料暫存器 共ax bx cx dx四個,每個暫存器即可作為16位暫存器,又可拆分為兩個8位暫存器,此時記為ah al bh bl等。ax ah al 累加器accumulator bx bh bl 基址暫...

4 處理器排程

4.1 cpu排程的相關概念 cpu排程 按照一定的排程演算法從就緒佇列中選擇乙個程序,把cpu的使用權交給被選中的程序,其任務就是控制 協調程序對cpu的競爭。如果沒有就緒程序,系統會安排乙個系統空閒程序或idle程序。cpu排程所面臨的場景 系統中有n個程序,等待上cpu執行,而有m個cpu,m...

64位處理器與32位處理器的區別

第二,要求配置不同。64位作業系統只能安裝在64位電腦上 cpu必須是64位的 同時需要安裝64位常用軟體以發揮64位 x64 的最佳效能。32位作業系統則可以安裝在32位 32位cpu 或64位 64位cpu 電腦上。當然,32位作業系統安裝在64位電腦上,其硬體恰似 大馬拉小車 64位效能就會大...