2009年3月27日 星期五
CPU多核是一個發展方向
一個常常被問到的非常簡單問題:多核心處理器將是曇花一現,還是一個長期發展方向。我們是否需要重視多核心處理器,它未來是否有發展空間?答案是肯定的,多核心處理器將是一個長期發展方向。因此,我會簡單談談原因,並討論一下多心核處理器的未來發展趨勢,以及我們程式設計師需要注意的問題。首先:為什麼要發展多核心處理器?你常常聽到的一個原因是功率。功率是我們遇到的問題之一,也是我們不再像過去那樣快速提高微處理器時鐘頻率的原因之一。除此之外,還有另外兩項考慮:指令級並行處理問題和記憶存儲問題。這些都是使我們轉而發展多核心處理器的原因,因此,讓我們逐一進行簡短的討論。在這幾項原因中,對功率問題的報導是最多的。我首先談談其他兩種原因。第一個問題是指令級平行處理。指令級平行處理是指微處理器同時執行多條指令,以便提高工作速度的方法。當我們提高處理器的時鐘頻率時,處理器每次能找到並執行更多指令。 問題在於,要從現有程式中找到越來越多可以並行運行的指令是非常困難的,而且隨著時鐘頻率的不斷提高,指令級並行處理的效果會越來越不明顯。因此,隨著時鐘頻率的不斷提高,性能的提升不再像過去那樣明顯,而我們越是提高時鐘頻率,這種趨勢就會越發嚴重。因此,指令級並行處理只是我們遇到的問題之一。另一個問題是記憶存儲壁壘。有段時間,處理器時鐘頻率的提升速度遠遠超過記憶體時鐘頻率,而且這一趨勢還會延續。上面說過,當我們提高已經達到千兆赫的微處理器頻率時,性能的提升已經不再像過去那樣明顯,從而使得我們不斷添加越來越大的快取記憶體及其它技術,以便緩解這方面的一部分問題——但並非所有記憶存儲方面的問題。而多核心技術可以放慢提高處理器時鐘頻率的腳步,讓情況不再繼續惡化,因此,多核心技術能真正解決這一問題。此外還有功率的問題。我讀到的關於這一問題的報導是最多的——一定要阻止微處理器功率繼續增加。我們不妨做一次有趣的觀察,取一個微處理器,然後從一個基線開始:例如,每消耗一個單位的電能,處理器產生一個單位的性能。很多時候,人們喜歡對處理器進行超頻,超頻的處理器性能也許能提升 13%,但你也許會問,這樣會消耗多少電能?一般來說,性能提升 13%,功率消耗會增加 73%。其前提條件是,使用同一個微處理器,且除了提高時鐘頻率外不做其他改變。當然,過去我們總是對微處理器進行其他方面的改變,但就某一時間點而言,如果只是提高處理器的時鐘頻率來超頻,功率就會大幅增加。如此看來並不划算。現在有些人為了提升僅僅 13% 的性能而寧願多消耗 73% 的電能,但大多數人不認為這樣做是個好方法。我感興趣的是,降頻是一個切實可行的方法。如果你不在乎把處理器的性能降到 87%,這時消耗的功率是多少呢?答案是大約原來的一半。由此很容易想到一個方法:我們何不把兩個處理器放在一起,其功率與原來大致相當,而性能卻能提升 73%。降低處理器的時鐘頻率,同時獲得超過期望的性能提升,這是一種很巧妙的方法。把兩個處理器放在一起,其耗電量與原來大致相當,性能卻幾乎是原來的兩倍,這是因為你有了兩個處理器。這就是我們開發雙核、四核等多核心處理器的最大動機。現在,這只是眾多妙法的一種。隨著處理器尺寸的縮小,每隔幾年,相同面積上可容納的處理器數量就會翻一倍,這是降頻之外的另一個妙法。因此,我們並非要永無休止的不斷降頻,而是要不斷在相同空間內容納更多處理器,因為我們能夠保持耗電量不變。我們已經瞭解,這三個問題促使我們去研究多核心技術,現在我想告訴你們的是,迄今為止我們見過的所有多核心處理器只是用兩個現有性能的處理器合併而成的:雙核心處理器,我們已經見到了四核心處理器晶片,其內核的功率消耗與今天的處理器功率消耗大致相當。曾經有人問,如果採用性能低得多的內核——例如 10 年前那種佔用面積小得多的內核,這是否有利於在一塊範本上集成大量很小的內核呢?事實證明,這樣做有其不利的一面:執行今天的程式時性能不佳。因此,人們更喜歡今天的亂序執行內核。但是,如果把它們混合起來——把一些小內核和一些大內核放在一起,又會怎樣呢?這很可能是多核心處理器未來的發展方向但近期內還不會如此。我們在市場上已經有了四核處理器,我估計我們還會有八核、十六核處理器,隨著這一趨勢,把數百個內核集成在一起會成為大勢所趨。我認為不會出現太多全由小內核構成的處理器,但大小內核搭配組合的想法會很有吸引力;這稱為異質計算。我認為這是一個值得關注的重要趨勢,未來的多核技術也許會朝著這個方向發展,到時候我們需要為它編寫程式,因此,今後談到程式設計時我們還會深入討論這個問題。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言