第3章 硬件極其行爲

3.1 Overview

3.1.1 CPU流水線

在20世紀80年代,典型的微處理器完整處理一條指令要經過,獲取指令,解碼指令,最後執行指令,需要花費至少三個時鐘週期完成一條指令。到二十世紀90年代時,通過引入深度流水線技術控制CPU內部的指令流,CPU可以同時執行多條指令。流水線技術可以極大的提升CPU性能。
爲了獲取CPU的高性能,流水線技術需要具有強大的控制流的預測能力。例如,矩陣和向量計算這種計算就可以用循環實現,CPU就可以正確的預測出每次迭代循環計算中所需要的帶寬,這樣就可以保證流水線和CPU能夠無停頓的全速運行。
然而帶寬預測並不是那麼容易。例如,如果有多個循環結構,每個循環都隨機執行較少的次數;在比如在面向對象編程中,一個基類對象可以引用不同的其他子類對象,這些子類對象實現不同的成員函數。在這些例子中,CPU很難或者基本不可能預測出下一步計算所需要的帶寬。所以處理器要麼拖延執行等待足夠長的時間,要麼進行推測執行。雖然對於可預測的控制流來說,推測執行非常有效,但是對於而非查找這種不可預測分支問題,推測執行經常無法正確工作。錯誤的推測執行託慢CPU執行速度,因爲CPU必須丟棄下面分支所對應的推測執行的指令,這種現象叫做流水線沖刷。如果流水線沖刷經常發生,其將會影響CPU的執行效率。流水線沖刷並不是現代CPU唯一的危險障礙,下面介紹的內存引用也是一種危險障礙。

3.1.2 內存引用

3.1.3 原子操作

3.1.4 內存屏障

3.1.5 緩存丟失

3.1.6 IO操作

3.2 Overheads

3.3 Hardware Free Lunch?

發佈了137 篇原創文章 · 獲贊 91 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章