電腦作業系統(二)--- 處理器體繫結構(三)(轉)

來源:互聯網
上載者:User

標籤:分享   ima   計算   blog   inf   文章   過程   detail   call   

           文章部分圖片文字來自參考文章,參考文章總結地很好。

指令處理階段

          為了降低實現的複雜性,採用統一的架構,這樣可以共用一些組件.我們將Y86的指令處理組織成如下幾個階段:

  • 取指(Fetch):從指令寄存器讀取指令.
  • 解碼(Decode):讀取程式寄存器.
  • 執行(Execute): ALU計算結果(分為兩種一種是計算值(用於更新程式寄存器),一種是計算儲存空間引用的有效地址).
  • 訪存(Memory):讀寫儲存空間.
  • 寫回(Write Back):寫回寄存器檔案.
  • 更新PC(PC update):將PC設定成下一條指令的地址.

         先大家只需要瞭解一下一條指令執行的要經曆的階段,後面會分析Y86的具體指令的執行過程.

需要注意的兩點:

1.在統一架構下,每條指令都會經曆以上所有階段.

2.在SEQ/SEQ+裡,各個階段是順序進行的,但一個階段內的內容基本上(有例外,稍後再說)是並存執行的.

  Y86 指令的執行

         下面是各種指令處理的各個階段,大家可以一掃而過,看我的分析結果,再對照著圖就很容易理解.








        看到上面的指令處理的各個階段是不是天花亂墜啊.其實一點不複雜,因為使用的是統一的架構.總結起來就如下幾點:

(1).首先要看指令到底要幹啥,它的運算元是啥,明確資料流的方向.

       比如opl, rrmovl, irmovl, cmovXX都不涉及到儲存空間,都是將Execute階段中的執行結果valE給某個程式寄存器.(資料流方向: valE->程式寄存器).

       比如mrmovl, popl的資料流方向是:儲存空間->程式寄存器.以為這肯定要從儲存空間中取出valM,再給這個程式寄存器.

       比如rmmovl的資料流方向是:程式寄存器->儲存空間,肯定會寫入儲存空間.

(2).寫入程式寄存器的資料有兩種來源,一種是valE(opl,rrmovl, irmovl, pushl,  popl, call, ret,cmovXX),一種是valM(mrmovl, popl).

(3). pushl, popl, call, ret都涉及了"棧"(儲存空間),都會更新%esp(%esp+/-4:在執行階段計算出來valE).將valE寫回%esp.

(4). opl在執行階段會設定CC, cmovXX, jXX在執行階段會有一個判斷邏輯.

(5).只有rmmovl, pushl和call需要寫回儲存空間.

(6).統一處理的原則:在excute階段,valA盡量不參與運算,使用valB參與運算;在memory階段,都是valA參與運算(為了使得pushl和rmmovl統一處理).

(7).

 

疑點

————

1. rrmovl的execute階段本不需要運算,為什麼要執行"valE = 0+valA"?

答:使用的是統一的架構,每條指令都必須通過每個階段.這樣做還有一個好處,減少訊號傳遞的數量.寫回都是通過valE和valM的,而不需要valA.

2.為什麼是mrmovl D(rB), rA而不是 mrmovl D(rA), rB?

答:統一處理 mrmvol和rmmovl.這樣保證了"execute階段, valA盡量不參與運算,使用valB參與運算".

3. popl rA的Write back階段需要寫兩個寄存器.這兩個寫應該是有次序的啊?

答:是的.為了保證"popl%esp"的語義同IA32一致,"R[%esp]<-valE"必須在"R[rA]<-valM"之前,這意味著按照只能在上升沿update的規則,就需要2個cycles來執行(違反了原則)。

4. pushl rA怎麼沒有問題?

答:由於在SEQ CPU中.因為讀取的值在某根訊號線(指的是valA訊號)上存在著.即便是"pushl %esp", %esp的值已經在valA訊號線上了,只需要將valA的值寫回儲存空間即可.

 

 

 

參考文章:

1.8280141

電腦作業系統(二)--- 處理器體繫結構(三)(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.