2013-04-11 36 views
-1

簡單的問題,增加與表現直接相關的核心?增加與性能直接相關的CPU核心?

我的理解(善意糾正我,如果我錯了)是在多核系統中,通信開銷和內存延遲是性能的一個限制因素與單核相比。也許一個擁有大量L1和L2高速緩存的核心繫統可以在Core 2 Duos上表現更好?但是爲什麼幾乎每個新架構的內核數量都在增加。我一定有理由知道。

感謝您的幫助!

回答

1

當擴展系統中的內核數量時,內存延遲和帶寬通常都是一個問題。注意:可能存在專門的異常,但大多數現代系統在6個以上硬件內核訪問內存之前不會開始運行內存瓶頸。

但是,通信開銷可能非常昂貴。其技術原因非常複雜,超出了我的答案範圍 - 某些方面與硬件有關,但其他方面僅與一個核心阻塞另一個核心以完成其計算的成本有關。兩者都不好。正因爲如此,使用多核的程序/應用程序通常必須儘可能在儘可能少的內核之間進行通信。這限制了可以卸載到獨立內核上的任務類型。

由於技術上的可行性,新系統增加了更多內核。例如,增加單核性能既不具有技術上的經濟可行性。幾乎所有我知道的應用程序員絕對會選擇單個超高速內核,而不必考慮如何有效利用12個內核。但是即使你給了他們數千萬美元的芯片製造商也不能生產這樣的核心。

只要光速是一個固定的常數,並行處理將在這裏停留。就像今天一樣,CPU中大部分的速度提升都是由於個別指令的並行處理。儘可能多的Core 2 Duo(例如)將並行運行多達四條指令。這是有效的,因爲在許多程序中,指令序列通常不會立即相互依賴:

  1. a = g_Var1 + 1;
  2. b = g_Var2 + 3;
  3. c = b * a;
  4. d = g_Var3 + 5;

現代CPU將實際上並行地執行第1,2和4行,然後雙擊回來並完成第3行 - 通常與第5,6行中的任何行同時執行。 (假設其中任何一個都不需要'c'變量結果)。這是必要的,因爲我們加快或縮短執行任何單個指令的管道的能力非常有限。因此,工程師們一直關注「走向全面」 - 更多並行指令,更多並行內核,更多並行計算機(最後類似於雲計算,BOINC或@home項目)。

+0

非常感謝它清除了幾件事情! – Saqlain 2013-04-11 16:28:22

+0

我希望我能給你更多的投票:) – Saqlain 2013-04-12 06:13:08

1

這取決於您的軟件。如果您的CPU密集型計算任務不使用太多的外部通信並且需要並行處理 - 多核是垂直擴展的方式。由於它可以並行執行計算任務(這又取決於利用並行執行的特定任務),它將比單核CPU更好地執行。例如,DB服務器通常利用並行處理,並在多核CPU上大幅擴展。

一旦縱向限制耗盡,可以通過在集羣中引入多個節點來水平縮放,並且您需要協調任務執行。

所以你的問題:

不過,爲什麼幾乎在核心的每一個新的架構數量 正在增加。

其中一個原因是軟件不斷髮展以利用並行處理和硬件來滿足這種飢餓。

1

你在假設核心可以變得有用地更復雜。在這一點上,這不是一個安全的假設。

您可以一次執行更多指令(「更寬」)或更高頻率的管道(更深)。

這兩種方法的回報都是遞減的。更寬的芯片依賴於指令級別的並行性,在最好的情況下它大體上不超過約3寬度,通常約爲1。更深的芯片存在功耗和散熱問題(功耗通常會隨着電壓的增加而隨頻率變化成正方形,同時隨着內核數量線性縮放),並且會影響分支誤預測恢復時間。

我們做多核心芯片並不是因爲我們想要,而是因爲我們沒有更好的選擇。