為什麼Intel處理器主頻這麼高,而AMD處理器主頻都很低?是不是AMD處理器性能不如Intel?我們一般的回答都是,因為Intel
處理器與AMD處理器內部構架不同,所以導致了這種情況,還有一種具體一點的回答就是因為Intel處理器流水線長,那到底流
水線與CPU主頻具體有什麼關係呢?今天給大家帶來一篇我以前刊登在《電腦報》硬件板塊技術大講堂版面的一篇原創文章。

關於CPU流水線的知識,很多報紙雜誌都介紹過了,但以往的很多文章對某些問題的解釋不夠清楚,比如報紙雜誌上曾多次提
及增加流水線級數有利於提高CPU主頻,但對其原因的解釋卻少有觸及,又比如對於流水線的級數與其周期的關係是什
麼? CPU流水線與工廠流水線的區別和聯繫等問題的解釋也不夠清楚,本文將帶領您找到以上問題的答案。關於流水線的基本
原理本文就不再說明了,對於增加流水線級數有利於提升CPU主頻這一觀點筆者將通過理論論證和事實舉例兩方面對其進行解
釋說明。

我們先對流水線的級數與其周期的關係給出一個公式,一個k級流水線,處理n個任務總共需要花費“k+(n-1)”個週期,這是因為
先是處理第一個任務就需要k個時鐘週期,k個週期後流水線被裝滿,剩餘n-1個任務只需n-1個週期就能完成。如果同樣數量的
n個任務不採用流水線處理,那麼就需要n*k個週期,我們把兩者做比,得到另一個概念,叫做流水線加速比C,所以C=n*k /
[k+(n-1)],當n遠遠大於k時,C的值趨進於k,也就是說,理論上k級流水線幾乎可以提高k倍速度,但這僅限於理論。看到這也
許有的讀者可能會感到一頭霧水,不用急,下面就將舉例對其進一步說明。

舉例前先對流水線週期選取的問題進行一下解析,我們假設一輛成品車的生產過程分為車輪生產,車門生產,最後組裝三個步
驟,每輛車的車輪生產需要8s,車門需要12s,而最後的組裝需要10s,在本例中生產廠商針對此情況設計了1條3級流水線,分別
是車輪生產流水線,車門生產流水線以及組裝流水線,整條流水線的周期選取為12s,注意,在此為什麼設置整條流水線的周期
為三個步驟中最長的12s呢?其實在現實生產中由於工藝水平,原料特性以及製造難度的不同,每級流水線完成任務的時間都可
能是不同的,這裡如果選擇8s或10s為整條流水線的周期將會導致車門生產線的任務不能在單位週期內完成,也就無法及時向下
一級提交任務,所以在k級流水線中只能選擇完成任務所需時間最常的那級流水線的時間作為整條流水線的周期。此例雖然選取
12s為整條流水線的周期,但這樣又帶來了另一個問題,在每個週期內車輪流水線與組裝流水線為了等待車門流水線而造成了一
定時間上的閒置,具體到CPU內部的流水線也同樣存在這個問題,當然我們可以通過合理分配流水線和增加緩存來緩解此問
題,但緩存的增加必然導致信號的延遲和高功耗高發熱量!

好,我們回到上例,廠商打算在此3級流水線上生產6輛汽車,流水線週期為12s(流水線的周期選取可參看上文),模擬流程
如圖1,從圖上可以看到,6輛汽車一共花費了9-1=8個週期,此結果也印證了上文n個任務總共需花費“k+(n-1)”個週期的公
式,此3級流水線生產6輛汽車一共花費的時間是12*8=96s。

一段時間後,廠商決定進行技術改革,又把車輪生產線車門生產線以及組裝生產線進一步細分,把流水線的級數由3條增至6
條,改革後的6級流水線週期也從12s縮短至6s,(由於細分了各級流水線,所以在此假設每級流水線週期也由原來的
8s,12s,10s減半,所以新流水線的周期選取為12s/2s=6s),新流水線生產6輛汽車所花費的周期為12-1=11,所花費的
整體時間為11*6=66s,相對於上例的96s提升了30s,至此,我們已從理論上和實際上找到了增加流水線級數確實可以提高工
作效率的依據,相信大家已經對流水線的知識有了更進一步的了解,這裡還要對一些問題進一步說明。

1流水線級數與頻率的關係

結合上文對周期設置的解釋和兩個例子的對比大家可以發現,只要進一步細分流水線增加其級數,就可以使整條流水線採用更
短的周期工作,我們又知道頻率等於週期的倒數,由此我們得出結論,增加流水線級數有利於提高各級流水線之間交換任務的
頻率,也就是有利於提高CPU的主頻。

2增加流水線級數為什麼能提升工作效率

我們對車輛1進行跟踪測試,其在3級流水線上的生產時間為8s+12s+10s=30s,同樣是車輛1在6級流水線上的生產時間為
4s+4s+6s+6s+5s+5s=30s,由此我們發現無論對於幾級流水線,單個產品的生產時間並沒有因流水線級數而改變,既然這樣那
流水線是通過什麼方式提升工作效率的?右圖模擬的是不採用流水線時一輛汽車的生產流程,由3個工人分別負責完成3個任
務,從圖上可以明確看到在每段時間內只有一個工人在工作,其餘兩個處於閒置狀態,對比上例的兩個圖示我們發現流水線正
是充分利用了這段閒置的時間,所以才在單位時間內提升了效率。而且隨著流水線級數的增多,對閒置時間的利用也就越充
分。

3CPU內部的流水線與工廠流水線的區別和聯繫

CPU流水線屬於工廠流水線的一種,具有流水線的一些共性,但與工廠流水線也具有一些區別,在本文中我們已得到增加流水
線級數有助於提升CPU主頻的結論,那為什麼intel的貝瑞特大叔還要放棄衝擊4GHz的計劃呢?我們知道任何一種產品的生產都
存在良品率這個問題,就如本文所舉的例子,如果在汽車的生產過程中輪胎流水線上的一級輪胎報廢了,這時我們可以在輪胎
流水線的末端增加一個任務,然後用本屬於第2輛車的輪胎組裝給第1輛車,依次類推,這樣對整條流水線效率的影響很小,而
且對於同一型號的汽車只要使用的是相應型號的輪胎就行,不用計較具體使用的是哪個輪胎。但具體到CPU流水線,問題就不
這麼簡單了,CPU的工作基理可以大致分為指令尋址,指令分析,指令執行,以及指令上報,假設一旦指令流水線中的某個指
令的地址出錯,是無法像換輪胎一樣用另一個地址來頂替的,因為每條指令只唯一的對應一個地址,而且一些指令的執行是具
有前後次序的,所以並不能簡單的對出錯的指令進行摒棄作罷,必須整條流水線退回重來,對於intel擁有冗長的31級流水線的
處理器來說,這種情況的發生將大大拖累CPU的工作效率,雖然intel不斷通過改進分支預測技術以及增大緩存來改善此問題,
但收效甚微,反而由於緩存的增加和漏電流控制不利,鑄造了具有火熱胸膛的Prescort。
由此可見,主頻能代表:高發熱和高功耗! 但性能與執行效率並不高
目前,P4處理器採用31級流水線工位,而A64則是12級流水線工位。 。 。

有些朋友會問:Intel的二級緩存能直接比AMD處理器的緩存麼?

INTEL的L1 是數據代碼指令追存緩存AMD L1是實數據讀寫緩存
I L1的概念是I L1裡存著數據在L2裡的地址L1 不存實際數據所以大家看到P4等I CPU的L1 都比較小。
A L1的概念是A L1 裡存著實際數據當L1 滿了時再存L2 所以大家看到A CPU 的L1比較的大為128K
因為L1比L2的延遲小速度快所以在緩存上A CPU 比I CPU的效率更高
而說起L2 的大小我強調INTEL CPU 超大L2 其實在一般使用中並沒起到什麼作用反而成了來浪費消費者錢的用途。
CPU處理數據概率
CPU使用0-128K緩存的概率是80%
CPU使用128-256K緩存的概率是10%
CPU使用256-512K緩存的概率是5%
CPU使用512-1M緩存的概率是3%
CPU使用更大緩存的概率是2%

P4的架構,只要L2一次沒有命中,就要浪費大約230個週期到內存中去讀取數據
也就是說,即使命中率是99%,每一百個週期有一次沒命中,就要再空閒230個週期,即330個週期裡只有99個週期是在工作,
性能損失2/3以上,這就是P4執行效率低的原因了,當然亂續執行可以讓空閒時執行下一條指令,不過程序的指令並不是時時刻
刻都能並行執行的,而且CPU判定亂續執行時預先要花掉好幾個週期,所以不能光看表面的命中概率,只要有1%的命中失敗,
性能的損失也是非常嚴重的…

Source: http://www.360doc.com/content/09/0117/09/48648_2350695.shtml