天天看點

《高性能科學與工程計算》——1.4 多核處理器

本節書摘來自華章計算機《高性能科學與工程計算》一書中的第1章,第1.4節,作者:(德)georg hager gerhard wellein 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

近年來并且至少在接下來的十年,雖然摩爾定律依然成立,但标準的微處理器開始遇到散熱問題:數百萬個半導體晶片的開關和漏電功耗如此之大,使散熱成為一個工程和商業主要關注的問題。另一方面,由于硬體架構方面的改進和cache尺寸的增加,促進了時鐘頻率不斷提高,但已不足以獲得符合摩爾定律1比1的性能提升。處理器廠商們正在尋找一種突破這種能耗性能瓶頸的新方法——多核設計。

對于半導體處理技術,cpu的功耗和時鐘頻率fc的三次方成比例(實際上是fc和電源電壓vcc的二次方的乘積,但是fc與vcc成比例),是以降低頻率和電壓就可以明顯地降低功耗,這是多核技術背後的動機。假設有一個單核時鐘頻率是fc,性能是p,功耗是w,時鐘頻率的微小變化(εf = ?fc/fc)會引起性能方面的變化(εp=?p/p),在所有其他條件一樣的條件下,|εf|是|εp|的上限,這也要考慮具體的應用。功率消耗為:

《高性能科學與工程計算》——1.4 多核處理器

https://yqfile.alicdn.com/91d6f2e5b62ab1455065311bedb34e8d54311622.png

" >

從式(1-7)中可看出,在保證功耗不變的前提下,降低時鐘頻率創造了将多個cpu核放在同一個晶片(更一般地為同一個元件)上的可能性。而對于m個“慢”核,這個條件表示為:

《高性能科學與工程計算》——1.4 多核處理器

這些核和速度更快的核有相同的半導體數量,但是根據摩爾定律,增加晶管的數量并不增加成本。圖1-14顯示了頻率與處理器核的數量關系。所有多核晶片的總性能表示為:

《高性能科學與工程計算》——1.4 多核處理器

而多核晶片的總性能必須大于單核的性能:

《高性能科學與工程計算》——1.4 多核處理器

當然,由于現在的制造技術,增加cpu晶片是不難的。是以,實作多核最簡單的方法就是将各個cpu晶片放在一個共同的元件内。比如更小的結構長度等制造技術方面的改進,将能夠在一個晶片上安置更多的核。但是相比前一代産品,多核晶片上的單核性能可能會有所下降,否則晶片上半導體的數量和時鐘頻率都會下降。有些公司甚至不惜以可能會帶來新的程式設計模型為代價,而采用更為激進的方法,即設計更簡單的核。

1.9節中過于樂觀的假設是m個核會表現m個單核性能總和的假設僅在極少數情況下才成立。然而到目前為止,多核結構已經被所有主要的處理器制造商采用。我們将同時使用核,cpu和處理器的概念,避免産生誤解。插槽(socket)指的是封裝了多個核(有時可能是多個晶片)的實體單元,通常配備引腳來使其成為可更換的部件。傳統的台式電腦,隻有一個插槽,但是标準的伺服器有兩個或者四個,它們共享相同記憶體。4.2節将詳細介紹共享存儲的并行計算機體系結構。

片上和插槽上的核組織結構有顯著的差别:

一個晶片上的核有各自的cache或者共享特定層次的cache(圖1-16~圖1-18)。在後面提到時,我們稱共享了特定cache層次的一組核為cache組(cache group)。例如,圖1-17中的六核cpu分成了6個l1組,3個雙核l2組和一個包含整個插槽的l3組。

《高性能科學與工程計算》——1.4 多核處理器

共享cache使得核與核間的通信不通過主存,可以非常明顯地降低延遲并以指數級增加帶寬;而其負面影響可能是帶寬瓶頸。共享或獨立cache對性能的影響高度依賴于代碼和系統。接下來的章節會更多地讨論這個問題。

最新的多核設計內建了一個記憶體控制器,記憶體控制器可以直接連接配接記憶體子產品,而不使用獨立的邏輯電路(晶片)。這減少了記憶體延遲,也使像超傳輸(hypertransport,ht)和快速通道(quickpath,qpi)等網際網路絡快速增加。

在cache之間可以存在快速資料通路,使得高效cache一緻性通信成為可能。

多核的出現得到的一個最重要結論就是在并行程式設計時需要盡可能大地利用這些并行資源,而不是隻依靠單核的性能。因為單核性能提高的空間不大了,僅根據摩爾定律改進cpu來提高處理速度可能不太現實。第5章将描述并行程式設計的限制和規則。在4.2節中将呈現更多關于雙核和多核的設計細節,如共享記憶體體系結構等。第6章和第9章給出了目前工程和科研領域使用的主流并行程式設計範例。

多核結構帶來的另一個挑戰是每個單核可用的主存帶寬和cache容量在減少。雖然生産廠商通過使用更大容量的cache來彌補,但是一些算法性能總是受到主存帶寬限制,由于存在總線競争,使共享記憶體總線的多個核性能下降。在程式設計中,減少訪存次數和有效使用帶寬成為了使用摩爾定律進行有效編碼主要考慮的問題。第3章介紹了在這種情況下一些有效的技術。

最後,在多核晶片上,共享存儲與非共享存儲有着不同的複雜結構(見圖1-17、圖1-18),使得不同核之間的通信也非常不同:如果存在一個共享的cache,它們可以通過cache中的一個變量來進行同步,而不必通過記憶體總線來交換資訊(參見7.2節與10.5節中的實際交換),這樣兩個核可以更快地交換資訊。在寫這本書時,幾乎還沒有多核的程式設計技術能夠利用這種特征來提高并行代碼性能。

是以,根據運作應用程式的通信特征和帶寬要求,多線程或程序在多核中(也可能是多插槽)的運作環境非常重要。對于怎樣在硬體和程式(線程、程序)中建立緊密聯系,附錄a中會較長的描述。本書經常提到性能與并行程式之間緊密關系的重要性,例如6.2節、第7章、第8章和10.5節。