sponsored links

Intel奔騰4當年為何會失敗?

流水線技術是提升效能的銀彈嗎?它透過把一條指令的操作切分成更細的多步,可避免CPU“浪費”。
每個細分的流水線步驟都很簡單,單個時鐘週期時間就可設得更短,變相地讓CPU主頻提升很快。

這一系列優點,引出現代桌面CPU最後大戰:Intel Pentium 4 V.S AMD Athlon。
技術上,Intel輸得徹底,Pentium 4系列及後續Pentium D系列所使用的NetBurst架構被完全拋棄。但商業層面,Intel卻透過遠超過AMD的財力、原本就更大的市場份額、無所不用的競爭手段,以及最終壯士斷腕般放棄整個NetBurst架構,最終依靠新的酷睿品牌戰勝了AMD。

此後,整個CPU領域競爭焦點,不再是Intel和AMD的桌面CPU。
ARM架構透過智慧手機普及,後來居上,超越Intel,移動時代CPU變成高通、華為麒麟和三星之間的“三國演義”。

“主頻戰爭”帶來的超長流水線

其實並不能簡單透過CPU主頻,就衡量CPU乃至計算機整機效能。
不同CPU實際體系架構和實現都不同。同樣CPU主頻,實際效能可能差別很大。
更好的衡量方式是用SPEC這樣跑分程式,從多個不同實際應用場景衡量效能。
但跑分對消費者還是太複雜。Pentium 4的CPU面世前,絕大部分消費者並不根據跑分判斷CPU效能,通常只看CPU主頻。而CPU的廠商們也不停提升主頻,當成技術競賽核心指標。

Intel一向在“主頻戰爭”中保持領先,但1999年,AMD釋出基於K7架構的Athlon處理器,綜合性能超越當年的Pentium III。
2000年,大部分CPU還在500~850MHz,AMD推出第一代Athlon 1000處理器,成為第一款1GHz消費級CPU。
2000年前後,AMD的CPU不但效能和主頻比Intel的要強,價格還往往只有2/3。

壓力下,Intel在2001年推出新一代NetBurst架構CPU,即Pentium 4和Pentium D。Pentium 4CPU最大特點高主頻。
2000年的Athlon 1000的主頻在當時是最高的,1GHz,Pentium 4設計最高主頻10GHz。

Intel奔騰4當年為何會失敗?

為達到10GHz,Intel工程師做了一個重大錯誤決策,就是在NetBurst架構上,使用超長流水線,有多長呢?
Pentium 4之前的Pentium III CPU,流水線深度11級:一條指令最多拆成11個更小步驟操作,而CPU同時也最多會執行11條指令的不同Stage。
今天日常手機ARM的CPU或者Intel i7伺服器的CPU,流水線深度14級。

20年,技術進步,現代CPU還是增加了一些流水線深度。
2000年的Pentium 4的流水線深度20級,比Pentium III多了一倍,而到了代號為Prescott的90奈米工藝處理器Pentium 4,Intel更是把流水線深度增加到31級。
增加流水線深度,在同主頻下,其實是降低CPU的效能。因一個Pipeline Stage,就需一個時鐘週期。
把任務拆成31個階段,就要31個時鐘週期才能完成一個任務;
而把任務拆分成11個階段,就只要11個時鐘週期完成任務。
這種情況下,31個Stage的3GHz主頻的CPU,其實和11個Stage的1GHz主頻的CPU,效能差不多。因為每個Stage都要有對應Pipeline暫存器的開銷,這時,更深的流水線效能可能還會更差。

流水線技術並不能縮短單條指令的響應時間,但可增加在執行很多條指令時候的吞吐率。
因為不同指令,實際執行需要時間不同。如順序執行這樣三條指令:

  • 一條整數的加法,200ps
  • 一條整數的乘法,300ps
  • 一條浮點數的乘法,600ps

若在單指令週期CPU執行,最複雜指令浮點數乘法,那就要600ps。
那這三條指令,都要600ps。三條指令的執行時間,就要1800ps。
若採用6級流水線CPU,每個Pipeline的Stage都只需100ps。則這三個指令的執行過程中:

  • 指令1的第一個100ps的Stage結後,第二條指令就開始執行了
  • 第二條指令的第一個100ps的Stage結束後,第三條指令就開始執行了

這種情況下,這三條指令順序執行所需要的總時間,就是800ps。在1800ps內,使用流水線的CPU比單指令週期的CPU就可以多執行一倍以上的指令數。

雖然每條指令從開始到結束拿到結果的時間並沒有變化,即響應時間沒變。但同樣時間內,完成指令數增多,即吞吐率上升。

Intel奔騰4當年為何會失敗?

冒險和分支預測

這樣不是很好麼?Intel CPU支援2000多條指令。有些指令簡單,執行很快,如無條件跳轉指令,不需透過ALU,只要更新PC暫存器內容。
有些指令很複雜,比如浮點數運算,需進行指數位比較、對齊,然後對有效位進行移位,然後再計算。兩者執行時間相差二三十倍也很正常。

既然這樣,Pentium 4的超長流水線看起來很合理呀,為什麼Pentium 4最終成為Intel在技術架構層面的大失敗:

功耗問題

提升流水線深度,必須要和提升CPU主頻同時進行。因為單個Pipeline Stage能夠執行的功能變簡單了,也意味單個時鐘週期內能夠完成的事情少了。
所以,只有提升時鐘週期,CPU在指令的響應時間這個指標上才能保持和原來相同的效能。

由於流水線深度增加,需要電路數量變多,即電晶體多了。

主頻的提升和電晶體數量的增加都使得CPU功耗變大。導致Pentium 4在整個生命週期裡,嚴重耗電和散熱。
Pentium 4是在2000~2004年作為Intel的主打CPU出現在市場上的。這個時間段,正是膝上型電腦市場快速發展的時間。在膝上型電腦上,功耗和散熱比起桌上型電腦是更嚴重問題。

流水線技術帶來的效能提升,是理想情況

實際程式執行中,並不一定能夠做得到。

剛才舉的三條指令。若這三條指令,是下面程式碼,會發生什麼情況呢?

int a = 10 + 5; // 指令1
int b = a * 2; // 指令2
float c = b * 1.0f; // 指令3

發現,指令2不能在指令1的第一個Stage執行完成後進行。
因為指令2依賴指令1的計算結果。
同樣指令3也要依賴指令2計算結果。
這樣,即使採用流水線技術,這三條指令執行完成的時間,也是 200 + 300 + 600 = 1100 ps,而不是 800ps。
若指令1和2都是浮點數運算,需要600ps。那這個依賴關係會導致我們需要的時間變成1800ps,和單指令週期CPU時間一樣。

這就是冒險(Hazard)問題。這列舉在資料層面的依賴,即資料冒險,還有結構冒險、控制冒險等其他依賴問題。

對這些冒險問題,也有在亂序執行、分支預測等相應解決方案。
但流水線越長,冒險問題越難解決。因為同一時間同時在執行的指令太多。若只有3級流水線,可把後面沒有依賴關係的指令放到前面執行。這個就是我們亂序執行技術:

int a = 10 + 5; // 指令1
int b = a * 2; // 指令2
float c = b * 1.0f; // 指令3
int x = 10 + 5; // 指令4
int y = a * 2; // 指令5
float z = b * 1.0f; // 指令6
int o = 10 + 5; // 指令7
int p = a * 2; // 指令8
float q = b * 1.0f; // 指令9

可不先執行1、2、3指令,而是在流水線裡,先執行1、4、7,這三條指令無依賴關係。
再執行2、5、8及3、6、9。
這又能夠充分利用CPU計算能力。

但若有20級流水線,要確保這20條指令之間無依賴關係。挑戰變大很多。畢竟我們平時撰寫程式,通常前後的程式碼都有一定依賴關係,幾十條沒有依賴關係的指令可不好找。
所以超長流水線執行效率發而會降低。

總結

流水線技術和其他技術一樣,都講究一個“折衷”(Trade-Off)。一個合理的流水線深度,會提升我們CPU執行計算機指令的吞吐率。我們一般用IPC(Instruction Per Cycle)來衡量CPU執行指令的效率。

IPC呢,其實就是我們之前在第3講講的CPI(Cycle Per Instruction)的倒數。也就是說, IPC = 3對應著CPI = 0.33。Pentium 4和Pentium D的IPC都遠低於自己上一代的Pentium III以及競爭對手AMD的Athlon CPU。

過深流水線,不僅不能提升計算機指令的吞吐率,還會加大計算的功耗和散熱問題。

而流水線帶來吞吐率提升,只是個理想情況下的理論值。在實踐的應用過程中,還需要解決指令之間的依賴問題。這個使得我們的流水線,特別是超長的流水線的執行效率變得很低。要想解決好冒險的依賴關係問題,我們需要引入亂序執行、分支預測等技術,這也是我在後面幾講裡面要詳細講解的內容。

參考

Modern Microprocessors, A 90-Minute Guide

分類: 美食
時間: 2021-11-26

相關文章

建議:若愛吃零食,這3種“營養好吃”的零食,可以在家裡備一點

建議:若愛吃零食,這3種“營養好吃”的零食,可以在家裡備一點
在我們的生活中,零食可是非常好的調味劑,在我們開心的時候,不開心的時候,朋友們聚會的時候,宅家追劇的時候,總是想吃點零食,既能帶給我們愉悅的心情,又能讓我們的嘴巴不寂寞. 如果你也和我一樣,愛吃零食, ...

秋天,孩子早餐不能將就,6款營養早餐,好吃好做,秋天吃特養人

秋天,孩子早餐不能將就,6款營養早餐,好吃好做,秋天吃特養人
秋天,孩子早餐不能將就,6款營養早餐,好吃好做,秋天吃特養人.又是一年的開學季,最近家長們都在為了孩子返校各種忙裡忙外的,孩子上學了家長們也並不省心,又要每天按時早起給孩子準備營養早餐了,入秋後,天氣 ...

你知道嗎?這3款“小眾泡麵”,雖沒有康師傅名氣大,卻巨好吃

你知道嗎?這3款“小眾泡麵”,雖沒有康師傅名氣大,卻巨好吃
泡麵作為快餐速食,很多人都吃過吧,記得小時候能吃上一包華豐伊麵都覺得很幸福,用手把泡麵捏碎,撒上一點調味料搖一搖,然後小心翼翼地捏上一點送入嘴裡,酥脆酥脆的,感覺比現在的薯片還好吃. 後來喜歡吃小浣熊 ...

37款乾鍋菜品,做法精簡,味道一絕,款款好吃,可以參考收藏了

37款乾鍋菜品,做法精簡,味道一絕,款款好吃,可以參考收藏了
乾鍋白菜 材料:五花肉.白菜.幹辣椒.乾花椒.蔥薑蒜.鹽.豆瓣醬.香辣醬(也可以乾鍋醬或少許火鍋料代替).生抽醬油.一品鮮醬油.白糖少許.味精少許.蔥油.色拉油. 1.五花肉處理乾淨,切薄片:白菜改刀 ...

20款營養輔食粥做法合集,適合7月+的寶寶,兩週不重樣

20款營養輔食粥做法合集,適合7月+的寶寶,兩週不重樣
寶寶7月齡以後可以開始喝粥啦 今天小優精心整理了20款寶寶營養輔食粥做法分享給大家,每一款都標了建議食用的月齡,可以參考一下,一共20款,至少兩週都不重樣呀~~ 下面和小優一起看看具體的食譜 文末有1 ...

分享4款減脂涼拌麵,配上秘製調料,巨好吃懶人也可以輕鬆做

分享4款減脂涼拌麵,配上秘製調料,巨好吃懶人也可以輕鬆做
普通的蕎麥麵也可以成為高大上的減脂餐,好吃不胖,酸辣過癮,還有酸甜口味的等你來試,喜歡的朋友點個贊呀! 小貼士:減脂期蕎麥麵建議60克就可以了,搭配上優質蛋白蔬菜,就是特別棒的減脂餐 一.椒麻雞絲涼麵 ...

入秋後,推薦6道好吃的家常菜,有葷有素,好吃解饞,關鍵還簡單

入秋後,推薦6道好吃的家常菜,有葷有素,好吃解饞,關鍵還簡單
"夜山秋雨滴空廊,燈照堂前樹葉光",幾場秋雨過後,氣溫變得涼爽了許多,人們的胃口逐漸好了起來.通常在秋季我們要多吃一些潤燥營養的食物,既是補充夏日的消耗,也是為進入秋冬季節做好準備 ...

國慶節家宴,推薦6道好吃的涼拌菜,做法易學,下酒開胃又解饞

國慶節家宴,推薦6道好吃的涼拌菜,做法易學,下酒開胃又解饞
國慶節7天長假,有些人選擇了外出旅遊,有些人則在家裡,閒來無事時,會約上幾位好友,一起喝個小酒,暢聊一番.要說喝酒,那可少不了幾道美味的下酒菜餚,今天就給大家分享幾道簡單好吃的下酒菜,好吃解饞,隨便都 ...

南瓜這樣做太好吃了,簡單一烙,香酥柔軟又解饞,做一盤不夠吃

南瓜這樣做太好吃了,簡單一烙,香酥柔軟又解饞,做一盤不夠吃
今天和大家分享一道"南瓜烙"的家常做法,製作過程非常簡單,用的食材也很常見,只需簡單幾步美味即成,金黃香酥,有喜歡的趕緊學一下. 食材:南瓜 輔料:雞蛋.酵母.小麥麵粉.黑芝麻 調 ...

7款環保又安全的防水塗料,讓家裡滴水不漏

7款環保又安全的防水塗料,讓家裡滴水不漏
牆體地面滲漏輕則影響美觀,重則影響房屋承載力,所以防水裝修很重要.家裡的廚房.衛生間.牆角等都是易滲水的地方,防水塗料的選擇可不能馬虎. 接下來給大家推薦7款環保型防水塗料,抗滲性和永續性優異,且安全 ...

這5款“國產餅乾”都是“小時候的味道”,遇見別錯過,好吃便宜

這5款“國產餅乾”都是“小時候的味道”,遇見別錯過,好吃便宜
好吃的零食不僅孩子喜歡吃,就連大人也很難抗拒它的好滋味,很多時候都想吃它. 偶爾早上起晚了,沒有來得及做早餐,小零食來救急,搭配牛奶就是元氣早餐,分分鐘就搞定,頂餓管飽,元氣滿滿去上班. 很多時候學習 ...

這幾款零食孕婦也能吃,酸甜香辣全都有,解饞營養高,囤些不吃虧

這幾款零食孕婦也能吃,酸甜香辣全都有,解饞營養高,囤些不吃虧
這幾款零食孕婦也能吃,酸甜香辣全都有,解饞營養高,囤些不吃虧 十月份已經過了三分之一了,自從假期結束後,大家的生活過得怎麼樣呢?不知道你們,小編最近是有了好訊息,那就是我要當小姨了,姐姐結婚一年了,在 ...

7款簡單的早餐做法,5分鐘學會,健康衛生又營養,上班族必備

7款簡單的早餐做法,5分鐘學會,健康衛生又營養,上班族必備
我家早餐從不省略,每天一家人吃早餐便是元氣滿滿的一天的開始,每天為家人準備早餐,我也非常的幸福,特別是每次都光碟的時候,特別的滿足,今天蓉兒為大家分享7款早餐,正好湊一週,每天都不重樣,蒸煎煮樣樣有, ...

早餐別再買著吃了,推薦7款好吃做法,外酥裡軟,比外面賣的好吃

早餐別再買著吃了,推薦7款好吃做法,外酥裡軟,比外面賣的好吃
對於早餐,我是尤其的熱愛,不光喜歡吃,也喜歡自己動手做.於是在家就研究出了各種外面賣的一些食物,發現在家做也是輕輕鬆鬆完成,口感比外面賣的竟然還要好吃. 下面我們就一起來看看一週的早餐吧,每一款都是我 ...

曬曬母女倆的家常午飯,清淡可口營養健康,炸雞排不放油,好吃

曬曬母女倆的家常午飯,清淡可口營養健康,炸雞排不放油,好吃
大女兒多多今天上午考完試了,中午接回家,至此這一學期算是告一段落了,餘下的一週就是在家等成績,下週返校領成績單才能正式放假了.也就是說從今天中午開始到開學,她都會陪伴在我身邊! 孩子在家,吃飯也就不能 ...

公認“良心”的3種美食,經常被擺在超市角落,好吃還不貴

公認“良心”的3種美食,經常被擺在超市角落,好吃還不貴
公認"良心"的3種美食 ,經常被擺在超市角落,量大好吃還不貴 俗話說得好"民以食為天",中華傳統美食多種多樣,而且飲食文化歷史濃厚.如今隨著社會發展,美食的種類 ...

早餐別吃包子麵條了,6道營養早餐,全程手不沾面,做法簡單易學

早餐別吃包子麵條了,6道營養早餐,全程手不沾面,做法簡單易學
一天之中早餐最為重要,可是要早起做個早餐,時間實在太緊張了,要想吃得營養,也要符合上班族的時間,於是蓉兒嘗試了各種簡單快手早餐吃法,總結了6款營養早餐,全程手不粘面,做法零難度,趕緊收藏學習起來吧! ...

伏天,我家最愛的土豆吃法,炒一大鍋,蔬菜主食都有,好吃又省事

伏天,我家最愛的土豆吃法,炒一大鍋,蔬菜主食都有,好吃又省事
很多人說到土豆,就會想到土豆絲或者是土豆塊之類的簡單菜品.要知道在我老家土豆就是一款主食,各種土豆的特色美食品種多,口感也很多元.所以今天我們就土豆來做一款,老家經常做的美食,它的名字叫土豆丸子. 簡 ...

夏天,這蒸糕常做給家人吃,一拌一蒸,爽滑筋道香甜,營養不上火

夏天,這蒸糕常做給家人吃,一拌一蒸,爽滑筋道香甜,營養不上火
夏天,嘴饞就愛做它吃,簡單一拌一蒸,爽滑筋道香甜,營養不上火.平時嘴饞的時候就想要一些解饞的糕點,比起各種高熱量油炸和烘烤的點心糕點,我夏天更愛吃蒸糕,蒸出來的點心糕點更清淡好吃,還不上火,很適合夏天 ...

這才是土豆最美味的做法,營養還解饞,比吃雞柳還香,做法超簡單

這才是土豆最美味的做法,營養還解饞,比吃雞柳還香,做法超簡單
大家好,今天用土豆和洋蔥給大家分享一道解饞小零食.說到土豆做的小零食不知道大家是不是會第一時間想到薯條呢,這款風靡全球的快餐零食深受許多人的喜愛,但是,咱們今天不做薯條,咱們今天不僅要用土豆,咱們還要 ...