-
1 # 超能網
-
2 # 高大福
CPU流水線變長本身並不能加速一條指令的完成速度,但是流水線變長之後可以幫助提高CPU的頻率,這才是指令完成速度提高的根本原因。
CPU流水線就好比生產線,假設生產線上只有一個工人的話,那麼這個工人就需要處理生產線上的各種任務,相對效率較低。而提升CPU流水線的級數就相當於在生產線上加入大量的工人,以當年代號為Prescott的Intel Pentium 4處理器為例,這條流水線上有31位工人,相同的複雜任務被拆解以後每個人只需要負責其中的一小部分,例如第一個人開啟蓋子,第二個人擰上螺絲,第三個人......流水線越長,運算處理就越簡單。
這樣的好處是,由於每個工人負責的任務相對簡單,所以就更容易變成熟練工。這樣就可以透過加快“工作節奏”(也就是CPU的頻率)的辦法來加速任務(指令)的完成。
當然,這樣的設計也有它明顯的缺陷:
1. 首先,我們通常需要CPU處理的指令大多都是簡單指令,換句話說太多的工人去處理一個簡單的任務時反而造成了資源的浪費。因為工人和工人之間也需要進行“溝通”和工序“交接”,在處理簡單指令時,超長流水線的設計會存在很大的延遲,反而效率不高。
2. 其次,因為流水線太長,如果在後面工序的發生錯誤時,前面的事情就白做了。雖然這種錯誤的機率很小很小,但是卻不可避免,並且因為“工作節奏”(CPU頻率)很快,這樣的現象會被放大許多倍,帶來的影響就是“工作效率”並沒有隨著“工作節奏”的提高而提高。
這就是為什麼當年Intel的CPU被詬病“高頻低效”的原因,本質上就是因為CPU流水線設計的過長,經典的例子就是31級流水線的Prescott核心Pentium 4的效率還比不上它的前代產品20級流水線的Northwood核心Pentium 4。
而過分追求提高CPU頻率以增加超長流水線的效率,也使得Intel的出現了工藝和生產上的問題,不得不被迫取消釋出4GHz CPU的計劃,並引發了當年Intel CEO下跪道歉的新聞。
當然,吃了虧以後的Intel後來改良了它的設計,目前主流的CPU的流水線長度都在20級以內。
回覆列表
單條指令的執行速度實際上沒有增加,但是採用流水線技術後,多條指令在不同管道上同時執行,因此總體上看是加速了指令執行,縮短了整體執行時間。
準確的說,CPU的流水線可以提高吞吐量。擁有更多的流水線階段會增加每次執行的指令數量。也就意味著整體可以執行得更快,從而提高晶片的時鐘速度也就是我們常說的頻率。
但是,由於添加了流水線暫存器,單個指令的延遲將會增加。此外,流水線暫存器的面積和功耗也有所增加。隨著流水線階段的增加,一個大問題就是你的管道必須執行指令,這個管線才能發揮作用,但是,像依賴關係對於深度流水線處理器來說可能是一個挑戰,除非可以透過旁路來處理依賴關係,否則可能引起失速,這會降低CPU的吞吐量。
此外,分支錯誤預測的代價可能會變得非常昂貴,因為更深層次的管道也就意味著更多的無效計算浪費在分支錯誤預測上,同樣,錯誤預測也會降低CPU的吞吐量。
所以,流水線級數越長,它的負作用越明顯,當初的Pentium 4就因過長流水線而失敗,像31級流水線的Prescott核心P4還打不過20級流水線的Northwood核心P4,高頻低能Prescott成為負面典型,現在主流的CPU流水線為15級左右。