多核處理器及系統(tǒng)設(shè)計面臨著一些新的挑戰(zhàn)
為什么要采用多核呢?如果設(shè)計一款兩倍于原來大小的處理器,性能并會不增加到原來的兩倍,性能大概只會作平方根的增長,所以尺寸加倍并不會帶來同等數(shù)量級的性能增長,只會帶來大概1.4倍于原來的性能,即增長40%。這個被稱為Pollack定律(由英特爾工程師Fred Pollack定義),在單核系統(tǒng)中已經(jīng)得到了證明。而芯片制造商力圖采用多個核心來提高性能和速度提升的系數(shù)。
但設(shè)計一個多核系統(tǒng)面臨一些新的挑戰(zhàn)。
通信的鴻溝
核心之間的通信也許是最關(guān)鍵的問題,因為在一些系統(tǒng)中會起到至關(guān)重要的作用。無需特別的測量,一般通信量的增加與核心的數(shù)量n是一個二次方程 (n+1)*n/2的關(guān)系,因此一個四核系統(tǒng)在通信數(shù)據(jù)量上相比單核系統(tǒng)會有成十倍的增加,一個16核系統(tǒng)會增加到原來的136倍,一個256核系統(tǒng)會增加超過32,000倍!因此一個核心之間的靈活的通信系統(tǒng)對于多核系統(tǒng)的工作是最基本的。
有幾個解決方案是采用中心存儲器來緩沖,不過當所有的處理器核都與存儲器進行內(nèi)部通信時就會出現(xiàn)問題。一般會采用信息包開關(guān)網(wǎng)絡(luò)或其他架構(gòu)。
我們可以做一個有趣的類比,假設(shè)這是一個人類組織,如果人數(shù)增多,交流就會變得困難,甚至?xí)砥款i。如果是一個2個人或4個人的小團體,交流起來就簡單得多,如果人數(shù)超過20個或更多,就需要一個更有效的交流架構(gòu),比如每周例會、技術(shù)小組等等。
實踐表明一個6到8個人的小組是最為有效的。更大的小組需要合理的架構(gòu)和其他形式的咨詢和協(xié)作。在多核系統(tǒng)中也是一樣的道理。
人為設(shè)計因素
人為設(shè)計因素同樣會影響多核系統(tǒng)的架構(gòu)。在1990年我曾經(jīng)在荷蘭埃因霍溫作個一個技術(shù)講演,我將設(shè)計分解為一個一個的模塊和模塊之間的互聯(lián)。同樣,連接的數(shù)目也同模塊數(shù)是一個二次方程的關(guān)系。
解決復(fù)雜問題的方法是應(yīng)用和歸納概念的能力。這里,一些元件被看成是宏元件。
自下而上的設(shè)計,簡單的分解和構(gòu)造各個元件直到達到最基本的構(gòu)成 -- 邏輯門或是運算單元,例如,采用分級的方法,復(fù)雜的二次方程問題可以簡化為線性問題。
在設(shè)計一個多核系統(tǒng)中完成通信和設(shè)計復(fù)雜性的管理,選擇合適的架構(gòu)、設(shè)計思想、工具的應(yīng)用等等都非常重要。
功耗的平衡
降低多核系統(tǒng)的功耗和散熱處理是工程師面臨的另一個主要的問題。降低功耗可以通過限制每個核心的運算來實現(xiàn),稱為"voltage scaling" -- 每個核心的頻率和供電電壓可以根據(jù)每個處理核的任務(wù)運算兩來進行功耗優(yōu)化。
另一個要考慮的因素是可以由進程推斷的并行處理的數(shù)量,如果并行運算很少,采用多核來處理也就沒有什么優(yōu)勢。
多線程是處理并行運算的一個方法。在通信處理器里面寫軟件是另一個方法。這些技術(shù)由特殊的運算支持,以維持系統(tǒng)的精確度和一致性。