簡單回答

簡單回答

2014 年,我聽到許多程式語言都因其並發特性而受到吹捧。據說並發對於性能提升至關重要。

在做出這項聲明時,許多人都引用了 2005 年的一篇文章,名為免費午餐已經結束:軟體並發的根本轉變。基本的論點是,提高處理器的時脈速度變得越來越困難,但我們仍然可以在晶片上放置更多的內核,並且為了獲得性能提升,需要編寫軟體來利用多個內核。

一些關鍵引用:

我們習慣看到 500MHz CPU 讓位給 1GHz CPU,讓位給 2GHz CPU,等等。今天,我們的主流電腦都處於 3GHz 範圍內。

關鍵問題是:什麼時候結束?畢竟,摩爾定律預測指數成長,而且在我們達到嚴格的物理極限之前,顯然指數成長不可能永遠持續下去;光並沒有變得更快。成長最終必須放緩甚至結束。

……利用更高的時脈速度變得越來越困難,這不僅僅是一個問題,而是幾個物理問題,特別是熱量(熱量太多且難以消散)、功耗(太高)和電流洩漏問題。

……隨著晶片公司積極追求相同的新多核心方向,英特爾和大多數處理器供應商的未來都在別處。

……多核心是指在一個晶片上運行兩個或更多實際的 CPU。

這篇文章的預測似乎成立了,但我不明白為什麼。我對硬體的工作原理只有非常模糊的想法。

我過於簡單化的觀點是「將更多處理能力裝入同一空間變得越來越困難」(因為熱量、功耗等問題)。我預計結論是“因此,我們必須擁有更大的計算機或在多台計算機上運行我們的程式。” (事實上,我們越來越多地聽到分散式雲端運算。)

但解決方案的一部分似乎是多核心架構。除非電腦尺寸變大(事實並非如此),否則這似乎是「將更多處理能力裝入同一空間」的另一種說法。

為什麼「增加更多核心」不會面臨與「讓 CPU 更快」相同的物理限制?

請用最簡單的語言解釋一下。 :)

答案1

概括

  • 經濟學。設計具有更多核心的 CPU 比設計更高時脈速度的 CPU 更便宜、更容易,因為:

  • 用電量顯著增加。當您提高時脈速度時,CPU 功耗會迅速增加 - 您可以將在熱空間中以較低速度運行的核心數量增加一倍,從而將時脈速度提高 25%。 50% 的四倍。

  • 還有其他方法可以提高順序處理速度,CPU 製造商充分利用了這些方法。


我將大量借鏡以下網站的優秀答案這個問題在我們的姐妹 SE 網站之一上。那就為他們點讚吧!


時脈速度限制

時脈速度有一些已知的物理限制:

  • 傳輸時間

    電訊號穿過電路所需的時間受到光速的限制。這是一個硬性限制,並且沒有已知的解決方法1。在千兆赫時鐘下,我們正在接近這個極限。

    然而,我們還沒有做到這一點。 1 GHz 表示每個時脈週期一納秒。那時,光可以傳播30公分。在 10 GHz 時,光可以傳播 3 公分。單一 CPU 核心的寬度約為 5 毫米,因此我們將在超過 10 GHz 的某個地方遇到這些問題。2

  • 切換延遲

    僅僅考慮訊號從一端傳輸到另一端所需的時間是不夠的。我們還需要考慮 CPU 內的邏輯閘從一種狀態切換到另一種狀態所需的時間!隨著我們提高時脈速度,這可能會成為一個問題。

    不幸的是,我不確定具體細節,也無法提供任何數字。

    顯然,向其註入更多功率可以加快開關速度,但這會導致功耗和散熱問題。此外,更大的功率意味著您需要更笨重的導管,能夠在不損壞的情況下處理它。

  • 散熱/功耗

    這是最重要的。引用自fuzzyhair2 的回答:

    最新的處理器是使用 CMOS 技術製造的。每有一個時脈週期,就會消耗電力。因此,更高的處理器速度意味著更多的散熱。

    有一些可愛的測量值這個 AnandTech 論壇主題,他們甚至導出了功耗的公式(與產生的熱量密切相關):

    公式
    歸功於不在乎

    我們可以在下圖中形象化這一點:

    圖形
    歸功於不在乎

    正如您所看到的,當時脈速度增加到超過某個點時,耗電量(和產生的熱量)會急劇增加。這使得無限制地提高時脈速度變得不切實際。

    功耗快速增加的原因可能與開關延遲有關——簡單地增加與時脈速率成比例的功耗是不夠的;還必須提高電壓以保持更高時脈下的穩定性。這可能不完全正確;請隨意在評論中指出更正,或對此答案進行編輯。


更多核心?

那為什麼要更多核心呢?嗯,我無法明確回答這個問題。你得問問英特爾和 AMD 的人。但您可以從上面看到,對於現代 CPU,在某些時候提高時脈速度變得不切實際。

是的,多核心也會增加所需的功率和散熱。但它巧妙地避免了傳輸時間和切換延遲問題。而且,從圖中可以看出,您可以輕鬆地將現代 CPU 中的核心數量增加一倍,而熱開銷與時脈速度增加 25% 相同。

有些人已經做到了——目前超頻世界紀錄略低於 9 GHz。但這是一項重大的工程挑戰,同時將功耗保持在可接受的範圍內。設計人員在某個時候決定添加更多核心來執行更多工作在平行下在大多數情況下,可以更有效地提高效能。

這就是經濟學的用武之地——採用多核路線可能更便宜(設計時間更少,製造更簡單)。而且很容易上市——誰不喜歡全新的八核晶片? (當然,我們知道當軟體不使用多核心時,多核心是毫無用處的...)

那裡多核心的缺點是:您需要更多的實體空間來放置額外的核心。然而,CPU 流程尺寸不斷縮小,因此有足夠的空間來放置先前設計的兩個副本 - 真正的權衡是無法創建更大、更複雜的單核心。話又說回來,增加核心複雜度是一個壞事從設計的角度來看 - 更複雜=更多的錯誤/錯誤和製造錯誤。我們似乎找到了一個令人滿意的媒介,其高效的核心足夠簡單,不會佔用太多空間。

在目前的製程尺寸下,我們已經達到了單一晶片上可以安裝的內核數量的極限。我們可能很快就會達到縮小規模的極限。下一個是什麼?我們還需要更多嗎?不幸的是,這很難回答。這裡有人有千里眼嗎?


其他提高性能的方法

因此,我們無法提高時脈速度。更多的核心還有一個額外的缺點 - 即,只有當其上運行的軟體可以使用它們時,它們才會有幫助。

那麼,我們還能做什麼呢?在相同的時脈速度下,現代 CPU 為何比舊 CPU 快這麼多?

時脈速度其實只是 CPU 內部運作原理的一個非常粗略的近似值。並非 CPU 的所有組件都以該速度工作 - 有些組件可能每兩個時脈週期運行一次,等等。

更重要的是數量指示您可以按單位時間執行。這是衡量單一 CPU 核心可以完成多少任務的更好方法。一些說明;有些需要一個時脈週期,有些需要三個時脈週期。例如,除法比加法慢得多。

因此,我們可以透過增加 CPU 每秒執行的指令數來提高 CPU 的效能。如何?好吧,你可以讓指令更有效率 - 也許除法現在只需要兩個週期。然後還有指令管線。透過將每條指令分為多個階段,可以「並行」執行指令 - 但每條指令仍然具有與其之前和之後的指令相關的明確定義的連續順序,因此不需要像多核心那樣的軟體支援做。

其他方式:更專業的說明。我們已經見過像 SSE 這樣的東西,它提供了一次性處理大量資料的指令。不斷推出具有相似目標的新指令集。這些同樣需要軟體支援並增加硬體的複雜性,但它們提供了很好的效能提升。最近出現了 AES-NI,它提供硬體加速的 AES 加密和解密,速度遠遠快於一堆軟體實現的算術。


1無論如何,如果沒有深入研究理論量子物理學的話。

2實際上可能會更低,因為電場傳播的速度不如真空中的光速。此外,這僅適用於直線距離 - 可能至少有一條路徑比直線長得多。

答案2

物理就是物理。我們不能永遠將更多的電晶體裝入更小的空間。在某些時候,它會變得非常小,以至於你會遇到奇怪的量子垃圾。在某些時候我們無法打包兩次一年內的電晶體數量與過去一樣多(這就是摩爾定律的意義)。

原始時脈速度沒有任何意義。我的舊 Pentium M 的時脈速度大約是當代桌上型電腦 CPU 的一半(但在許多方面快點) – 現代系統是僅僅接近 10 年前系統的速度(並且明顯更快)。基本上,在許多情況下,「僅僅」提高時脈速度並不能帶來真正的效能提升。它可能有助於一些單線程操作,但您最好將設計預算花在提高其他方面的效率。

多核心讓你可以做到 或同時處理更多事情,因此您無需等待一件事完成才能處理下一件事情。從短期來看,您可以簡單地將兩個現有核心放入同一個套件中(例如使用奔騰D以及他們的 MCM(這是一種過渡設計),您的系統速度是原來的兩倍。當然,大多數現代實作確實共享記憶體控制器之類的東西。

您也可以透過不同的方式建立更聰明的產品。 ARM 兼具 Big-Little — 有 4 個「弱」低功耗核心與 4 個更強大的核心一起工作,因此您可以兩全其美。英特爾可讓您降低油門(以獲得更好的電源效率)或超頻具體的核心(以獲得更好的單線程性能)。我記得 AMD 對模組做了一些事情。

您還可以移動記憶體控制器(因此延遲較低)和 IO 相關功能(現代 CPU 沒有北橋)以及視訊(這對於筆記型電腦和 AIW 設計更為重要)等內容。做這些事情比「僅僅」不斷提高時脈速度更有意義。

在某些時候,「更多」核心可能無法運作——儘管 GPU 已經數百核心數。

多核心本身可以讓電腦正常運作更聰明在所有這些方面。

答案3

簡單回答

最簡單的問題答案

為什麼「增加更多核心」不會面臨與「讓 CPU 更快」相同的物理限制?

實際上在您問題的另一部分中找到:

我預計結論是“因此,我們必須擁有更大的計算機或在多台計算機上運行我們的程式。”

本質上,多核心就像在同一裝置上擁有多台「電腦」。

複雜的答案

「核心」是計算機中實際處理指令(加法、乘法、「與」等)的部分。一個核心一次只能執行一條指令。如果您希望您的電腦“更強大”,您可以做兩件基本的事情:

  1. 提高吞吐量(提高時脈速率、減少物理尺寸等)
  2. 在同一台電腦上使用更多內核

#1 的物理限制主要是需要排出電路中的處理和電子速度所造成的熱量。一旦將其中一些晶體管分離到一個單獨的核心,就可以在很大程度上緩解熱量問題。

#2 有一個重要的限制:你必須能夠將你的問題分成多個獨立的問題,然後結合答案。在現代個人電腦上,這並不是真正的問題,因為無論如何都有大量獨立的問題都在與核心爭奪計算時間。但是,在處理密集型計算問題時,只有當問題適合併發時,多核心才真正有幫助。

答案4

長話短說:加速單核已達到極限,因此我們不斷縮小它們並添加更多核,直到達到極限或我們可以更換更好的材料(或實現推翻現有技術的根本性突破,例如家庭大小,實際工作,量子計算)。

我認為這個問題是多維的,需要一些文字才能描繪出更完整的圖像:

  1. 物理限制(由實際物理施加):例如光速、量子力學等等。
  2. 製造問題:我們如何以所需的精度製造出較小的結構?原料相關問題、用於建構電路的材料、耐用性。
  3. 架構問題:熱、推理、功耗等。
  4. 經濟問題:為用戶提供更多效能的最便宜的方法是什麼?
  5. 用例和使用者對效能的感知。

可能還有更多。多用途 CPU 正在試圖找到一種解決方案,將所有這些因素(以及更多因素)整合到一個可大規模生產的晶片中,以適應市場上 93% 的主題。正如你所看到的,最後一點也是最關鍵的一點,客戶感知,它直接源自於客戶使用CPU的方式。

問問自己,你平常的應用是什麼?也許:25 個 Firefox 選項卡,每個選項卡在後台播放一些廣告,而您正在聽音樂,同時等待大約 2 小時前開始的構建工作完成。需要完成大量工作,但您仍然希望獲得流暢的體驗。但你的 CPU 一次只能處理一項任務!就單一的事情而言。所以你要做的就是,你把東西分開,排很長的隊,每個人都拿到自己的一份,大家都很高興。除了你之外,因為所有的事情都變得遲緩而且一點也不順利。

因此,您需要加快 CPU 的速度,以便在相同的時間內執行更多的操作。但正如你所說:熱量和耗電量。這就是我們談到原材料部分的地方。當矽變得越來越熱時,它的導電性就會變得更強,這意味著當你加熱它時,會有更多的電流流過材料。電晶體開關速度越快,耗電量就越高。此外,高頻會使短線之間的串擾變得更嚴重。所以你看,加快速度的方法將導致「崩潰」。只要我們沒有比矽更好的原料或更好的晶體管,我們就會陷入單核心速度的困境。

這讓我們回到了起點。並行地完成工作。讓我們加入另一個核心。現在我們實際上可以同時做兩件事。因此,讓我們冷靜下來,編寫可以將其工作分為兩個功能較弱但功能更強大的核心的軟體。這種方法有兩個主要問題(此外,軟體世界需要時間來適應它): 1. 使晶片更大,或使單一核心更小。 2. 有些任務根本無法分成同時運作的兩個部分。只要可以縮小內核,就不斷添加內核,或使晶片更大並解決散熱問題。哦,我們不要忘記顧客。如果我們改變用例,產業就必須適應。查看所有在行動產業推出的閃亮「新」事物。這就是為什麼行動領域被認為如此重要,每個人都想涉足這一領域。

是的,這個策略將會達到其限制!英特爾知道這一點,這就是為什麼他們說未來在其他地方。但只要廉價、有效且可行,他們就會繼續這樣做。

最後但並非最不重要的一點:物理學。量子力學將限制晶片的縮小。光速還不是極限,因為電子在矽中不能以光速傳播,實際上它比光速慢得多。此外,脈衝速度對材料提供的速度設定了硬性上限。就像聲音在水中的傳播速度比在空氣中快一樣,電脈衝在石墨烯等材料中的傳播速度也比在矽中快。這又回到了原料。就其電氣性能而言,石墨烯非常出色。它是一種更好的製造 CPU 的材料,但不幸的是它很難大量生產。

相關內容