你真的懂CPU的流水線麽?

來源: 2004-11-09 20:20:56 [舊帖] [給我悄悄話] 本文已被閱讀:

你真的懂CPU的流水線麽??? ZT

1.主頻

  主頻也叫時鍾頻率,單位是MHz,用來表示CPU的運算速度。CPU的主頻=外頻×倍頻係數。很多人認為主頻就決定著CPU的運行速度,這不僅是個片麵的,而且對於服務器來講,這個認識也出現了偏差。至今,沒有一條確定的公式能夠實現主頻和實際的運算速度兩者之間的數值關係,即使是兩大處理器廠家Intel和AMD,在這點上也存在著很大的爭議,我們從Intel的產品的發展趨勢,可以看出Intel很注重加強自身主頻的發展。像其他的處理器廠家,有人曾經拿過一快1G的全美達來做比較,它的運行效率相當於2G的Intel處理器。
所以,CPU的主頻與CPU實際的運算能力是沒有直接關係的,主頻表示在CPU內數字脈衝信號震蕩的速度。在Intel的處理器產品中,我們也可以看到這樣的例子:1 GHz Itanium芯片能夠表現得差不多跟2.66 GHz Xeon/Opteron一樣快,或是1.5 GHz Itanium 2大約跟4 GHz Xeon/Opteron一樣快。CPU的運算速度還要看CPU的流水線的各方麵的性能指標。

  當然,主頻和實際的運算速度是有關的,隻能說主頻僅僅是CPU性能表現的一個方麵,而不代表CPU的整體性能。

3.前端總線(FSB)頻率

  前端總線(FSB)頻率(即總線頻率)是直接影響CPU與內存直接數據交換速度。有一條公式可以計算,即數據帶寬=(總線頻率×數據帶寬)/8,數據傳輸最大帶寬取決於所有同時傳輸的數據的寬度和傳輸頻率。比方,現在的支持64位的至強Nocona,前端總線是800MHz,按照公式,它的數據傳輸最大帶寬是6.4GB/秒。

6.緩存

  緩存大小也是CPU的重要指標之一,而且緩存的結構和大小對CPU速度的影響非常大,CPU內緩存的運行頻率極高,一般是和處理器同頻運作,工作效率遠遠大於係統內存和硬盤。實際工作時,CPU往往需要重複讀取同樣的數據塊,而緩存容量的增大,可以大幅度提升CPU內部讀取數據的命中率,而不用再到內存或者硬盤上尋找,以此提高係統性能。但是由於CPU芯片麵積和成本的因素來考慮,緩存都很小。

11.超流水線與超標量

  在解釋超流水線與超標量前,先了解流水線(pipeline)。流水線是Intel首次在486芯片中開始使用的。流水線的工作方式就象工業生產上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然後將一條X86指令分成5—6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鍾周期完成一條指令,因此提高CPU的運算速度。經典奔騰每條整數流水線都分為四級流水,即指令預取、譯碼、執行、寫回結果,浮點流水又分為八級流水。

超標量是通過內置多條流水線來同時執行多個處理器,其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。例如Pentium 4的流水線就長達20級。將流水線設計的步(級)越長,其完成一條指令的速度越快,因此才能適應工作主頻更高的CPU。但是流水線過長也帶來了一定副作用,很可能會出現主頻較高的CPU實際運算速度較低的現象,Intel的奔騰4就出現了這種情況,雖然它的主頻可以高達1.4G以上,但其運算性能卻遠遠比不上AMD 1.2G的速龍甚至奔騰III。

12.封裝形式

  CPU封裝是采用特定的材料將CPU芯片或CPU模塊固化在其中以防損壞的保護措施,一般必須在封裝後CPU才能交付用戶使用。CPU的封裝方式取決於CPU安裝形式和器件集成設計,從大的分類來看通常采用Socket插座進行安裝的CPU使用PGA(柵格陣列)方式封裝,而采用Slot x槽安裝的CPU則全部采用SEC(單邊接插盒)的形式封裝。現在還有PLGA(Plastic Land Grid Array)、OLGA(Organic Land Grid Array)等封裝技術。由於市場競爭日益激烈,目前CPU封裝技術的發展方向以節約成本為主。



好了,上麵貼的一些都是和CPU的運行效率直接相關的參數,剩下的參數,有的太簡單,有的我們不常接觸到.沒有貼,
好,看一下流水線的來由,大家都知道,兩個CPU會比一個CPU快,但是為什麽呢,也不會出現,一個CPU,運行WORD,一個CPU,運行CS呀, 那是因為,把指令細分成線程後,他們可以分別運行,cyrix的MII,當時不是有個技術麽,亂序運行!!就是提高運行效率的一個手段,流水線,也是這種目的,P4,的時候,就20級流水線了,就是說,CPU運行一次的時候,等於,20個CPU(沒有流水線),同時運行一樣,這本來是什麽呢,運行速度一下子,提高了20倍

但是,事實上並不是這樣,為什麽呢,這20個東東運行完了,得把他們再拚一起呀,還有一件事,如果拚錯了,(下麵的工人裝不上,就認為是原料有問題)他就認為,這次的運行結果是錯的,說,"重來"吧. 那麽,有一個CPU,隻有10級流水線,但是由於他們的管理很好,每次運行都不返工,所以,他們的生產效率反而更高!!!

AMD,和INTEL,現在正是這種情況,一個抓管理,管理上去了,下麵的工人出錯的才少,(返工次數少)
一個抓技術,工人熟練了,生產的東西,質量才高!!(每次出來的東西多)
當然,又抓管理,又抓技術,兩手都要抓,兩手都要硬,這是中國人的想法,都抓的人,顯然什麽都沒抓好,都破產了,現在隻有這兩家還存活著,......現在我想給流水線一個公正一點的說法, 如果你的CPU組裝的水平很差,那當然,流水線越多,你越亂,就像,你的水平不行, 管理了,10000多個程序員高手, 項目亂的一團糟, 但是,如果你是一個管理經驗豐富的人, 下麵的人一下也不會做活, 那麽,項目也是一個失敗, 幸好,事實上,並不是這樣絕對,管理員也是差不多的水平, 程序員也是差不多的水平, 那麽你建一個項目, 你選好的程序員,還是好的管理員!!!

我說,不一定,我得看是什麽項目, 如果項目是一般的項目, 一般的管理員就可以了,那麽,我當然選好的程序員, 項目完成的又快又好, 一個程序,本身就可以亂序運行, 那麽,INTEL的CPU當然就是最好了, 反正,大家都不會返工!!!!! 但是一個項目是很複雜的, 而代碼量並不多, 那麽,當然是選好的管理員, 如果一個程序,就是針對測試而測試的, 導致,CPU運算不斷的返工, 那當然就是AMD的CPU好, 比如,大浮點數的運行,AMD,比INTEL的高50%現在看不到這種比較了, 但是,你可以查一查,以前的資料, 有PIII1G,與AMD速龍1G的比較, 這個差異到現在也沒有改變, 這就是為什麽AMD的CPU,顯卡得分,會比INTEL的高, 3Dmark2001的得分,一般都比INTEL的高, 而,business stone,INTEL 一般都比AMD要高, SYSMARK,也是,INTEL 比AMD要高, 因為這些程序不複雜,(線程複雜,和我們想的程序本身複雜是兩回事)

買CPU也是一樣, AMD,和INTEL誰好,????? 我也不知道,我喜歡AMD,但我目前確實使用的是INTEL, 家裏的兩台機子全是INTEL. 沒有AMD,INTEL不會這麽便宜, 沒有AMD,中國的D版軟件..... 中國的組裝機.............但是,我要為流水線正一正名, 並不是流水線長了,運行效率就低了, 流水線長了,運行效率絕對是高了, 但是,運行出錯的代價是大了,流水線,這本身是一個提高效率的技術, 怎麽現在的人,都當成是,因為提高頻率,所必須采用的手段呢????? 當時沒有流水線的時候, 流水線一出來的時候, 大家都認為這是提高效率的秘密武器呀!!!


越是實際的程序,越容易發生流水線返工,因此P4效能越差。
倒是純粹的理論測試,比如sandra,pcmark還有3dmark之類P4表現不錯(老實說P4在3dmark裏麵的表現相對於在bussiness winstone裏麵算好的了),而到了實際測試,特別是bussiness winstone(直接調用office源代碼)或者sciencemark(直接編譯的標準量子化學代碼)裏麵,p4的表現那叫一個菜。。。。連P4c都不是同PR的AthlonXP的對手。
至於sysmark裏麵Intel的分高,那是一個著名的bug,因為sysmark認為AthlonXP不支持SSE,結果是AthlonXP用x87浮點對抗專門為SSE優化的多媒體代碼,自然性能不成(即使這樣Intel也沒有多少優勢)
在bussiness winstone 2002的測試結果,看看就會發現,P4 3.2c的性能剛剛可以匹敵公認為虛標最嚴重的AthlonXp 3200+。 當然,多媒體性能上P4 3.2c還是毫無疑問的戰勝AXP 3200+,畢竟,AXP不支持SSE2。

即使沒有流水線返工,長流水線的性能也就和短流水線相同,因為每條流水線每周期就隻能執行一條指令(p4有個怪異的設計就是如果跑配對的兩個簡單微指令,那麽兩個可以並成一個執行,所以如果你反複執行完全相同的指令比如a=a+1一百億次,那麽P4比AthlonXP要快一倍),所以長流水在任何角度也不可能提升效率。
長流水的唯一好處就是,電路比較簡單,設計起來比較容易.解釋的詳細一點就是,並不是說20級流水線每次執行的動作比10級流水線多一倍,相反,他們能執行的實際功能是一樣的,隻是每級執行的操作簡單了一些。
比如,一個工廠造螺絲,可以分成兩級流水,一個人造螺絲,一個人車螺紋。也可以分成100個步驟,第一個人負責拿鐵塊,第二個人負責遞,第三個人負責往上畫線。。。。第99個人車單數螺紋,第100個人負責擦掉粉塵。
如果每個步驟耗費的時間都一樣,那麽兩種做法速度完全一樣,唯一的區別是,前麵的辦法工人素質必須很高,因為他每個人幹了對方50個人的活。。。。

給流水線一個正確的看法吧!