CSAPP(3):處理器如何執行指令

來源:互聯網
上載者:User

標籤:語言   ref   串連   intel   app   使用   訪問   ret   執行   

前一章敘述了c語言如何轉化為組譯工具,如何使用組譯工具。但是,組譯工具具體是如何執行的呢?例如(add %eax %edx)這條指令,我們知道它的功能,處理器是何如執行指令來獲得想要的結果?——這是本章的主題。

 

(一)Y86指令集體繫結構

為了簡化問題,我們不使用Intel和ATT的指令集體繫結構,抽象簡化一個Y86。Y86的定義了各種狀態元素、指令集及其編碼、編程規範、例外狀況事件處理。

(二)儲存空間和時鐘

存放裝置都是由同一個時鐘控制的。時鐘是一個周期性的訊號,決定什麼時候把新值載入到裝置中。

存放裝置分兩種:

1)時鐘寄存器(硬體寄存器),儲存單個位或字,時鐘訊號控制寄存器載入輸入值;

2)隨機訪問儲存空間(儲存空間)儲存多個字,用地址來選擇該讀寫哪個字,包括:處理器的虛擬儲存系統、程式寄存器等。

(硬體和機器級編程,“寄存器”這一概念是有細微差距的。硬體中,寄存器是直接連接到電路中的;而機器級編程中,寄存器是寄存器檔案中可定址的字,地址為寄存器ID。為避免歧義,兩類寄存器分別稱為:硬體寄存器和程式寄存器。)

(圖為時鐘寄存器工作方式,Y86中用時鐘寄存器儲存程式計數器(PC)、條件代碼(CC)和程式狀態(Stat))

 

(三)指令執行6大階段

下面是Y86各個指令對應於6各階段的分解,可以對照上面的說明仔細對照

 

(四)SEQ處理器

我們直接實現上述的6大階段對應的硬體結構,稱為SEQ處理器

上面展示了每條指令所對應的分階段執行情況,現在我們把這些指令匯總,給出每個階段的指令情況:

(相應的need_regids, need_valC;  srcB, dstM; aluB; mem_data, mem_write指令情況見課本)

 

(五)流水線

SEQ實現的問題是:一個刻度內,必須完成6大階段。故而刻度必須非常慢。所以我們使用流水線模型。

流水線的兩個重要概念:

throughput(輸送量):單位時間內服務的顧客總數;

延遲(latency):服務一個使用者所需要的時間。

流水線模型需要在各個階段之間都放上流水線寄存器

下面是流水線的圖例說明:

可以看到流水線的巨大優點,然而流水線就沒有一點問題嗎?

1. 將系統計算劃分為一組具有相同延遲的階段是很嚴峻的挑戰;

2. 流水線過深的話,收益反而下降。(現在處理器採用很深的(15+階段)流水線,Y86採用5階段流水線)

3. 帶反饋的流水線。1)data dependency(資料相關):相鄰指令之間可能是相關的。流水線模式下,可能下一條指令需要的資料,上一條指令還沒產生。2)control dependency(控制相關):下一條指令是否執行依賴的條件,上一條指令還沒有計算出來。

當我們實現流水線結構時,我們要解決第三個問題。

 

(六)Y86的流水線實現——PIPE-

首先對於SEQ,我們將PC的計算挪到取指階段(在時鐘開始是計算,而不是結束時計算),然後再在各個階段之間加上流水線寄存器:

在PIPE-結構的基礎上,根據我們之前的學習,只要再解決幾個大問題即可:

1.如何解決資料相關?

2.如何解決控制相關?重點是ret指令和條件跳轉指令

3.如何處理異常指令?

解決資料相關

需要仔細的體會這一過程,尤其是時鐘控制下,狀態更新如何進行。

 

解決控制相關

這一問題分解來看,需要分三個部分:1.如何預測下一個PC值?2.如何處理ret指令?3.如何處理預測錯誤分支?

 

處理異常指令

 

對於控制相關問題,還需要多做一些說明,如何多個控制問題組合在了一起,我們應該如何處理?這一問題留到最後作為補充、

 

(七)PIPE處理器實現

根據上面的討論,我們只要在PIPE-中加入上述問題的解決方案之後,就得到了我們想要的PIPE處理器。

1.實現轉寄。只需要添加幾個電路即可實現。

具體的PIPE的HCL描述,見課本。

2.實現暫停和取消指令

在此新型流水線寄存器的基礎上,很容易實現暫停某指令或者取消某指令,由此,我們就可以實現之前問題的解決方案。

 

(八)控制相關情況的組合

CSAPP(3):處理器如何執行指令

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.