題 為什麼我們的CPU具有相同速度的所有內核而不是不同速度的組合?


一般情況下,如果您購買新計算機,您將根據預期的工作量確定要購買的處理器。遊戲中的性能往往取決於單核速度,而視頻編輯等應用程序則取決於核心數量。

就市場上可用的產品而言 - 所有CPU似乎都具有大致相同的速度,主要區別在於更多線程或更多內核。

例如:

  • 英特爾酷睿i5-7600K,基頻3.80 GHz,4核,4線程
  • Intel Core i7-7700K,基頻4.20 GHz,4核,8線程
  • AMD Ryzen 5 1600X,基頻3.60 GHz,6核,12線程
  • AMD Ryzen 7 1800X,基頻3.60 GHz,8核,16線程

那麼為什麼我們看到這種增加內核的模式,所有內核具有相同的時鐘速度?

為什麼我們沒有不同時鐘速度的變體?例如,兩個“大”核心和許多小核心。

例如,代替四個4.0 GHz的內核(即4x4 GHz~16 GHz最大值),那麼兩個內核運行速度為4.0 GHz的CPU,以及兩個運行頻率為2 GHz的內核(即2x4.0 GHz)最大+ 4x2.0 GHz~16 GHz)。第二種選擇不會同樣適用於單線程工作負載,但在多線程工作負載方面可能更好嗎?

我問這個問題是一個普遍的觀點 - 不是特別關於我上面列出的那些CPU,或者是關於任何特定的特定工作負載。我只是好奇為什麼模式是這樣的。


79
2018-06-24 13:25


起源


有許多具有快速和慢速內核的移動設備,並且在幾乎所有現代多核服務器上,CPU內核根據負載加速時鐘獨立,有些甚至在不使用時關閉內核。在沒有設計節能的通用計算機上,只有兩種類型的內核(CPU和GPU)才能使平台更加靈活。 - eckes
在線程調度程序可以明智地選擇使用哪個核心之前,必須確定進程是否可以利用多個核心。可靠地做到這一點會很成問題並且容易出錯。特別是當它可以根據應用程序的需要動態改變時。在許多情況下,當使用最佳核心時,調度程序必須做出次優選擇。相同的內核使事情變得更簡單,提供了最大的靈活性,並且通常具有最佳性能。 - LMiller7
時鐘速度不能合理地說是以你描述的方式添加的。四個核心以4 Ghz運行並不意味著您擁有16 GHz的“總”,也不意味著這個16 Ghz可以劃分為8個運行速度為2 Ghz的處理器或16個運行頻率為1 GHz的處理器。 - Bob Jarvis
問題的前提是完全錯誤的。現代CPU完全能夠以不同的速度運行內核 - phuclv
多核CPU:我可以說我有一個3x2.1GHz = 6.3GHz的CPU嗎?, 如何計算多核處理器的時鐘速度?, - phuclv


答案:


這被稱為 異構多處理 (HMP並且被移動設備廣泛採用。在基於ARM的設備中實現 的big.LITTLE,處理器包含具有不同性能和功率分佈的核,例如,一些內核運行速度快但耗電量大(更快的架構和/或更高的時鐘),而其他內核則節能但速度慢(架構速度較慢和/或時鐘較慢)。這很有用,因為一旦超過某一點,當您提高性能時,功耗會不成比例地增加。這裡的想法是在需要時獲得性能,在不需要時獲得電池壽命。

在桌面平台上,功耗不是問題,因此這不是真正必要的。大多數應用程序期望每個核心具有相似的性能特徵,並且HMP系統的調度過程比傳統SMP系統的調度複雜得多。 (Windows 10在技術上支持HMP,但它主要用於使用ARM big.LITTLE的移動設備。)

此外,今天的大多數台式機和筆記本電腦處  熱或電限製到某些核心需要比其他核心運行得更快的點,即使是短暫的爆發。 我們基本上已經打破了我們製造單個核心的速度因此,用較慢的內核替換某些內核將不允許其餘內核運行得更快。

雖然有一些台式機處理器有一個或兩個內核能夠比其他內核運行得更快,但這種功能目前僅限於某些非常高端的英特爾處理器(如Turbo Boost Max Technology 3.0),而且性能略有提升對於那些可以運行得更快的核心。


雖然設計一個傳統的x86處理器當然可以同時使用大型,快速內核和更小,更慢的內核來優化大量線程工作負載,但這會給處理器設計帶來相當大的複雜性,並且應用程序不太可能正確支持它。

拿兩個快速的假想處理器 卡比湖 (第7代核心)核心和八個慢 Goldmont (Atom)核心。您將擁有總共10個內核,針對此類處理器優化的大量線程工作負載可能會比普通的四核處理器在性能和效率方面獲得更高的性能 卡比湖 處理器。但是,不同類型的內核具有截然不同的性能級別,而慢內核甚至不支持快速內核支持的一些指令,例如 AVX。 (ARM通過要求big和LITTLE核心都支持相同的指令來避免此問題。)

同樣,大多數基於Windows的多線程應用程序都假設每個內核具有相同或幾乎相同的性能水平,並且可以執行相同的指令,因此這種不對稱性可能會導致性能不佳,甚至可能崩潰,如果它使用慢速核心不支持的指令。雖然英特爾可以修改慢速內核以添加高級指令支持,以便所有內核都可以執行所有指令,但這不能解決異構處理器的軟件支持問題。

應用程序設計的一種不同方法,更接近您在問題中可能考慮的方法,將使用GPU來加速高度並行的應用程序部分。這可以使用API​​來完成 OpenCL的 和 CUDA。至於單芯片解決方案,AMD在其APU中提升了GPU加速的硬件支持,APU將傳統CPU和高性能集成GPU整合到同一芯片上,如同 異構系統架構雖然在一些專業應用之外沒有看到太多的行業吸收。


81
2018-06-25 03:11



Windows已經有了“應用程序”,“後台進程”和“Windows進程”的概念。那麼這不會擴展到硬件級別嗎? - Jamie
@Jamie“背景”進程獲得較小的時間片並且更有可能被中斷。 Windows 10在某種程度上確實考慮了HMP系統,儘管沒有太多關於如何使用的信息。 - Bob
所以我認為在編輯之後@bwDraco已經為我做了很多回答。如果有一個'混合'處理器,它可以很容易地支持相同的指令集,如果它是以這種方式構建的,那麼我們需要某種調度器來選擇正確的核心。我認為,從許多小型內核中獲益的應用程序實際上可能會因為進入大量非常小的內核而受益更多。因此我們有GPU加速。 - Jamie
請注意,GPU案例不會為10個小型和慢速核心交換2個大核心,而是(非常粗略)相當於為1024個小型和慢速核心交易2個大核心。大規模並行,而不僅僅是更平行。 - Yakk
英特爾可能會得到一個Goldmont核心來運行AVX2指令而沒有多少額外的矽(慢慢地,通過解碼到128b操作對)。 Knight's Landing(Xeon Phi)擁有基於Silvermont的AVX512內核,因此不可能修改Silvermont。但KNL增加了矢量指令的無序執行,而普通的Silver / Goldmont只有整數的OOO,因此他們可能希望將其設計為更接近Goldmont而不是KNL。無論如何,insn集不是一個真正的問題。它的操作系統支持和小優勢是在低功耗核心上消耗芯片面積的真正障礙。 - Peter Cordes


您要問的是當前系統使用的原因 對稱多處理 而不是 不對稱多處理

過去使用非對稱多處理,當時是計算機 巨大的,安置在幾個單位。

現代CPU在一個芯片中作為一個單元進行投射,而不是更簡單 混合不同類型的CPU,因為它們共享相同的總線和RAM。

還有時鐘的約束來控制CPU週期和 RAM訪問。當混合不同的CPU時,這將變得不可能 速度。無時鐘的實驗計算機確實存在,甚至很漂亮 速度快,但現代硬件的複雜性更加簡單 建築。

例如,Sandy Bridge和Ivy Bridge內核不能同時以不同的速度運行,因為L3緩存總線以與內核相同的時鐘速度運行,因此為了防止同步問題,它們都必須以該速度運行或停車/停車(鏈接: 英特爾的Sandy Bridge架構曝光)。 (也在以下評論中對Skylake進行了驗證。)

[編輯]有些人錯誤地將我的回答誤認為是這樣的 混合CPU是不可能的。為了他們的利益,我說:混合使用不同的CPU 並不是今天的技術,但沒有完成 - “為什麼不”是問題。 如上所述,這在技術上會很複雜,因此更昂貴 對於太少或沒有經濟收益,製造商不感興趣。

以下是一些評論的答案:

Turbo boost會改變CPU的速度 能夠 改變

通過加速時鐘和改變一些乘法器來完成渦輪增壓, 這正是人們在超頻時所做的事情,除了硬件 為我們做了。時鐘在同一CPU的內核之間共享, 這樣可以統一加速整個CPU及其所有核心。

有些手機有不同速度的CPU

這種電話通常具有與之相關的定制固件和軟件棧 每個CPU,更像是兩個獨立的CPU(或者像CPU和GPU),而且它們缺少一個 系統內存的單一視圖。這種複雜性很難編程等等 非對稱多處理留在移動領域, 因為它需要低級接近硬件的軟件開發, 這是由通用桌面操作系統避開的。 這就是在PC中找不到這種配置的原因 (如果我們足夠地擴展定義,則除了CPU / GPU)。

我的服務器配備2x Xeon E5-2670 v3(12核HT)目前擁有1.3 GHz,1.5 GHz,1.6 GHz,2.2 GHz,2.5 GHz,2.7 GHz,2.8 GHz,2.9 GHz以及許多其他速度的內核。

核心處於活動狀態或空閒狀態。同時處於活動狀態的所有核心以相同的頻率運行。你所看到的只是時間或平均的人為因素。 我自己也注意到Windows長時間不停放核心, 而是單獨停放/取消停放所有內核遠遠快於刷新率 資源監視器,但我不知道這種行為的原因 可能是上述評論的背後。

英特爾Haswell處理器集成了電壓調節器,可為每個內核提供單獨的電壓和頻率

各個穩壓器與時鐘速度不同。並非所有核心都相同 - 有些核心速度更快。較快的內核功耗稍低,從而為增加較弱內核的功率提供了擴展空間。核心電壓調節器將設置得盡可能低,以保持當前的時鐘速度。 CPU上的電源控制單元可調節電壓,並在必要時覆蓋質量不同的內核的OS請求。總結:各個調節器用於使所有內核以相同的時鐘速度經濟地運行,而不是設置單獨的內核速度


66
2018-06-24 13:57



啊。更為重要而且重點突出。 +1 - Hennes
@harrymc有同步塊可以很好地管理它; DRAM運行速度比核心速度慢,您可以在同一芯片上動態地以不同的速度運行Intel內核。 - pjc50
英特爾酷睿系列處理器始終在同一個裸片上以不同的速度運行。 - Nick T
big.LITTLE架構和核心獨立時鐘提升的唯一存在證明你錯了。異構多處理是主流。它 能夠 它完成了 是 在手機上完成,但是 某些原因 不在桌面上。 - Agent_L
@Agent_L:原因是複雜性。台式機CPU已經足夠昂貴了。所以我再說一遍:一切皆有可能,但實際的問題是它為什麼沒有完成,而不是它是否可以完成。不要攻擊我,好像我聲稱這是不可能的 - 我所說的只是它太複雜和昂貴,而且製造商不感興趣。 - harrymc


為什麼我們沒有不同時鐘速度的變體?即。 2個“大”核心和許多小核心。

你口袋裡的手機可能正好適合這種安排 - ARM big.LITTLE 完全按照你的描述工作。它甚至不僅僅是時鐘速度差異,它們可以是完全不同的核心類型 - 通常,較慢的時鐘甚至是“笨”(沒有無序執行和其他CPU優化)。

基本上節省電池是一個好主意,但也有其自身的缺點;用於在不同CPU之間移動內容的簿記更複雜,與其餘外圍設備的通信更複雜,最重要的是,有效地使用這些內核,任務調度程序必須非常智能(並且經常“猜對了”) 。

理想的安排是在​​“小”核心上運行非時間關鍵的後台任務或相對較小的交互式任務,並且只為大而長的計算喚醒“大”的任務(在小核心上花費的額外時間結束)吃更多的電池)或中等規模的互動任務,用戶感覺小核心上的遲鈍。

但是,調度程序關於每個任務可能正在運行的工作類型的信息有限,並且必須求助於某些啟發式(或外部信息,例如在給定任務上強制某些關聯掩碼)來決定在何處調度它們。如果它出錯了,你最終可能會浪費大量時間/精力在慢速核心上運行任務,並提供糟糕的用戶體驗,或者使用“大”核心來執行低優先級任務,從而浪費能力/將他們從需要他們的任務中偷走。

此外,在非對稱多處理系統上,將任務遷移到不同於SMP系統的核心通常成本更高,因此調度程序通常必須進行良好的初始猜測,而不是嘗試在隨機自由核心上運行並移動它在後面。


相反,英特爾的選擇是擁有相同數量的相同智能和快速內核,但具有非常積極的頻率調整。當CPU忙碌時,它會快速上升到最大時鐘速度,工作速度最快,然後將其縮小以恢復到最低功耗模式。這不會給調度程序帶來特別的負擔,並且避免了上述不良情況。當然,即使在低時鐘模式下,這些內核也是“智能”內核,因此它們可能比低時鐘“愚蠢”的big.LITTLE內核消耗更多。


47
2018-06-24 19:12



啟發式應該非常簡單。任何非自願任務切換(使用完整時間片)都表明慢速CPU不適合該任務。非常低的利用率和所有自願任務切換錶明任務可以移動到慢速CPU。 - R..
另一個問題是,4個愚蠢的2GHz內核可能比2個智能4GHz內核佔用更多的芯片尺寸,或者它們可能比4 GHz內核更小,功耗更低,但運行速度也慢得多 - phuclv
@R:原則上我同意你的觀點,但即使為此啟用了一些基本的調度程序支持,我在我使用的ARM板上看到了荒謬的核心爭用,所以必須有其他的東西。此外,大多數“常規”多線程軟件都是在考慮SMP的情況下編寫的,因此看到線程池與核心總數一樣大並不是不典型的,因為作業拖慢了慢速核心。 - Matteo Italia
@Ramhound:一個120W的10核部件,每個核心的功率預算為12W(單核渦輪增壓模式除外)。這就是為什麼在四核部件中發現最高的單核時鐘的原因,例如英特爾公司 i7-6700k 對於4個內核,功耗預算為91W:每個內核為22.75W,所有內核都處於活動狀態(即使使用像Prime95這樣的AVX2 + FMA工作負載,也只有4.0GHz)。這也是為什麼單核Turbo空間僅為0.2GHz,而22核Broadwell E5-2699v4則為2.2GHz基礎@ 145W,3.6GHz turbo。 - Peter Cordes
@Ramhound:補充道 一個答案 擴大了這一點。一個多核Xeon似乎是 究竟 OP正在尋找的是:運行盡可能多的低功耗內核,或者盡可能快地運行單線程(turbo)。 - Peter Cordes


遊戲中的表現往往取決於單核速度,

過去(DOS時代遊戲):正確。
這些天來,它已不再適用。許多現代遊戲都是線程化的,並受益於多個核心。有些遊戲已經對4核很滿意,這個數字似乎隨著時間的推移而上升。

而視頻編輯等應用程序則由核心數決定。

真實的。

核心數*核心速度*效率。
如果將一個相同的核心與一組相同的核心進行比較,那麼您大多是正確的。

就市場上可用的東西而言 - 所有的CPU似乎都有   大致相同的速度,主要差異是更多線程或   更多核心。例如:

英特爾酷睿i5 7600k,基本頻率3.80 GHz,4核心      英特爾酷睿i7 7700k,基本頻率4.20 GHz,4核,8線程      AMD Ryzen 1600x,Base Freq 3.60 GHz,6核,12線程      AMD Ryzen 1800x,Base Freq 3.60 GHz,8核,16線程

比較不同的架構是危險的,但好吧......

那麼為什麼我們會看到這種增加內核的核心模式   相同的時鐘速度?

部分是因為我們遇到了障礙。提高時鐘速度意味著需要更多功率和更多熱量。更多的熱量意味著需要更多的動力。我們嘗試過這種方式,結果是可怕的奔騰4.熱和電力飢渴。難以冷卻。並不比智能設計的Pentium-M更快(3.0GHz的P4和1.7GHz的P-mob一樣快)。

從那時起,我們大多放棄推動時鐘速度,而是建立更智能的解決方案。部分原因是在原始時鐘速度上使用多個內核。

例如。單個4GHz內核可以消耗盡可能多的功率並產生與三個2GHz內核一樣多的熱量。如果您的軟件可以使用多個內核,那麼速度會快得多。

並非所有軟件都能做到這一點,但現代軟件通常可以。

這部分解釋了為什麼我們有多核芯片,以及為什麼我們銷售具有不同核心數量的芯片。

至於時鐘速度,我想我可以確定三點:

  • 對於很多不需要原始速度的情況,低功耗CPU很有意義。例如。域控制器,NAS設置,......對於這些,我們確實有較低頻率的CPU。有時即使有更多內核(例如8x低速CPU對Web服務器也有意義)。
  • 對於其餘部分,我們通常接近我們可以做的最大頻率,而我們當前的設計不會太熱。 (比如當前設計的3到4GHz)。
  • 最重要的是,我們進行分組。並非所有CPU都是平等生成的。一些CPU在部分芯片中得分嚴重或得分嚴重,這些部件被禁用並作為不同的產品出售。

典型的例子是4核AMD芯片。如果一個核心被破壞,它將被禁用並作為3核心芯片出售。當對這3個內核的需求很高時,即使有4個內核作為3核心版本出售,並且使用正確的軟件黑客,您可以重新啟用第4個內核。

這不僅僅是核心數量,還會影響速度。有些芯片比其他芯片更熱。過熱並將其作為低速CPU出售(其中較低的頻率也意味著產生的熱量較少)。

然後是生產和營銷,甚至進一步混亂。

為什麼我們沒有不同時鐘速度的變體?即。 2個'大'核心   和許多小核心。

我們的確是。在有意義的地方(例如移動電話),我們經常使用具有慢速核心CPU(低功耗)的SoC,以及一些更快的核心。但是,在典型的台式PC中,沒有這樣做。這將使設置更複雜,更昂貴,並且沒有電池耗盡。


14
2018-06-24 13:59



正如我所指出的那樣 - “我問這個問題是一個普遍的觀點 - 不是特別關於我在上面列出的那些cpus”,而且我有理由從每個架構中給出兩個例子。如果我們將這兩個場景視為1.所有大核心,以及2.兩個大和兩個小 - 然後 我認為 你提到的所有要點都適用於這兩種情況 - 即。理論上最大單核速度,芯片分級,不使用時降頻。 - Jamie
單個最大速度核心在沒有被選擇時並不是那麼有趣。調度程序需要更新,實際上更喜歡高速核心。 - Hennes


為什麼我們沒有不同時鐘速度的變體?例如,兩個“大”核心和許多小核心。

除非我們非常關注功耗,否則接受與額外內核相關的所有成本並沒有盡可能多地獲得該內核的性能是沒有意義的。最大時鐘速度主要由製造工藝決定,整個芯片由同一工藝製成。那麼,使一些內核比支持的製造工藝更慢的優勢是什麼呢?

我們已經擁有可以減速以節省電力的核心。限制他們的最佳表現會有什麼意義?


10
2018-06-26 04:31



這就是我的想法。當他們都是精英時,為什麼故意使用一些劣質組件? +1。 - MPW
@MPW選擇不是在創建一個大核心然後絕育它之間,而是在所有大核心與幾個大核心之間。因為您有兩個競爭場景 - 單線程性能和多線程性能 - 為什麼不最大化兩者?我們是否知道您無法製造出具有大量小芯片的芯片? - Jamie
@Jamie你可以用一些大而小的核心來製造一個芯片。但較小的內核不會以較低的時鐘速度運行。 - David Schwartz
他們會這樣設計......問題是他們為什麼不從頭開始設計,不採用現有的製造工藝並對其進行絕育。 - Jamie
@Jamie我不明白你在說什麼。整個CPU必須採用相同的製造工藝製造,最大時鐘速度很大程度上是製造工藝的特徵。通常需要在相同製造水平下需要較低時鐘速度的核心 更多 複雜並佔用更多空間,否則為什麼它們需要更低的時鐘速度? - David Schwartz


為什麼我們沒有不同時鐘速度的變體?例如,兩個“大”核心和許多小核心。

對於現在大多數大型處理器而言,標稱時鐘速度並不是真正意義上的太大,因為它們都具有自上而下的能力。你問他們是否可以獨立地上下調節不同的內核。

我對許多其他答案感到驚訝。現代處理器可以並且確實這樣做。您可以通過在智能手機上打開CPU-Z來測試這一點 - 我的Google Pixel完全能夠以不同的速度運行不同的內核:

標稱值為2.15 Ghz,但兩個核心為1.593 Ghz,兩個核心為1.132 Ghz。

事實上,自2009年以來,主流的英特爾CPU已經具備了在降低其他內核的同時提升單個內核的邏輯,在保持TDP預算的同時實現更好的單核性能: http://www.anandtech.com/show/2832/4

採用“Favored Core”(英特爾營銷術語)的較新英特爾處理器的每個核心都在工廠中具有特徵,最快的核心能夠提升額外的高: http://www.anandtech.com/show/11550/the-intel-skylakex-review-core-i9-7900x-i7-7820x-and-i7-7800x-tested/7

AMD的Bulldozer芯片有一個原始版本: http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/4

AMD的新Ryzen芯片 大概 也有這個,雖然這裡沒有明確說明: http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive-on-1800x-1700x-and-1700/11


9
2018-06-25 02:42



你正在回答一個不同的問題。問題是關於許多大核心與幾個大核心和大量小核心 - 這兩種方案的優點。在這兩種情況下,您都可以根據需求上下移動,或者增加核心。 - Jamie
這不是我讀這個問題的方式。儘管使用了“大”和“小”這兩個詞,但問題並沒有提到架構上不同的核心。它專注於時鐘速度。 - Grant Wu


在經常的現代系統上  使所有核心以不同的速度運行。降低未大量使用的內核可降低功耗和熱輸出,這很好,而且“turbo boost”等功能可讓一個或兩個內核運行得更快,只要其他內核空閒,因此功耗和整個熱量輸出  不要太高。對於具有此類功能的芯片,您在列表中看到的速度是您可以同時獲得所有內核的最高速度。為什麼所有核心都具有相同的最大速度?嗯,它們都是相同的設計,在相同的物理芯片上,用相同的半導體工藝製定,那麼為什麼它們會有所不同呢?

所有內核都相同的原因是因為這使得在一個核心上運行的線程在一個點上開始在另一個點上的另一個核心上運行變得最容易。如其他地方所述,有常用的芯片  遵循相同核心的這個原則,即ARM“big.LITTLE”CPU。雖然在我看來,“大”和“小”核心之間最重要的區別不是時鐘速度(“大”核心往往是更高,更寬,更投機的核心,每個時鐘以更高的代價獲得更多的指令電源使用,而“小”核心更接近ARM的單一問題,有序,低功耗根源,因為它們在同一芯片上的設計不同,它們通常也會有不同的最大時鐘速度。

並且進一步進入異構計算領域,將“CPU”和“GPU”核心集成到同一芯片上也很常見。它們具有完全不同的設計,運行不同的指令集,以不同的方式處理,並且通常也將以不同的方式進行計時。


8
2018-06-26 04:14





快速的單線程性能和非常高的多線程吞吐量​​正是您使用CPU所獲得的 英特爾的Xeon E5-2699v4

這是一個22核的Broadwell。持續時鐘速度為2.2GHz,所有核心都處於活動狀態(例如視頻編碼),但是 單核最大渦輪增壓器 是3.6GHz。

因此,在運行並行任務時,它使用145W功率預算作為22個6.6W內核。但是在運行只有幾個線程的任務時,相同的功耗預算可以讓幾個內核增加到3.6GHz。 (該 在大型Xeon中降低單核內存和L3緩存帶寬 意味著它可能無法像3.6GHz的桌面四核那樣快速運行。桌面Intel CPU中的單核可以使用更多的總內存帶寬。)

由於熱限制,2.2GHz額定時鐘速度很低。 CPU擁有的核心越多,它們全部活動時就越慢。這個效果在你提到的4和8核心CPU中並不是很大,因為8並不是那麼多核心,而且它們有很高的功率預算。 即使是發燒友桌面CPU顯然也會顯示出這種效果: 英特爾的Skylake-X i9-7900X是10c20t,基本3.3GHz,最大渦輪增壓4.5GHz  這比i7-6700k(4.0GHz持續/ 4.2GHz turbo沒有超頻)更加單核渦輪增壓空間。

頻率/電壓調節(DVFS)允許相同的內核在廣泛的性能/效率曲線上運行。  也可以看看 這篇關於Skylake電源管理的IDF2015演講,有很多有趣的細節,關於CPU可以有效地做什麼,並在設計時和使用DVFS動態地平衡性能與效率之間的關係。

另一方面,Intel Core-M CPU的持續頻率非常低, 像4.5GHz時的1.2GHz,但可以渦輪增壓到2.9GHz。多核處於活動狀態時,它們將以更高效的時鐘速度運行核心,就像巨型Xeons一樣。

您不需要異構的big.LITTLE樣式架構來獲得大部分好處。 ARM big.LITTLE中的小內核是非常糟糕的有序內核,不利於計算工作。關鍵是要以非常低的功耗運行UI。對於視頻編碼或其他嚴重的數字運算來說,很多它們都不會很好。 (@LưuVĩnhPhúc發現了一些關於為什麼x86沒有big.LITTLE的討論。基本上,在非常低功耗的超慢速核心上花費額外的芯片對於典型的台式機/筆記本電腦使用來說是不值得的。)


而視頻編輯等應用程序則由核心數決定。 [2x 4.0 GHz + 4x 2.0 GHz在多線程工作負載上的效果不會超過4x 4GHz嗎?]

這是你的主要誤解。您似乎認為如果分佈在更多內核上,每秒總時鐘週期數相同則更有用。情況永遠不會如此。它更像是

cores * perf_per_core * (scaling efficiency)^cores

perf_per_core 與時鐘速度不同,因為3GHz Pentium4每個時鐘週期的工作量比3GHz Skylake少得多。)

更重要的是,效率為1.0的情況非常罕見。一些 令人尷尬的平行 任務確實幾乎線性擴展(例如編譯多個源文件)。但 視頻編碼是  像那樣。  對於x264,擴展到幾個內核非常好,但隨著內核的增多而變得更糟。例如從1核心到2核心將幾乎加倍速度,但從32核心到64核心對於典型的1080p編碼將幫助少得多。速度高峰取決於設置的點。 (-preset veryslow 對每個幀進行更多分析,並且可以保持更多核心繁忙 -preset fast)。

由於很多非常慢的內核,x264的單線程部分將成為瓶頸。 (例如,最終的CABAC比特流編碼。它是h.264相當於gzip,並沒有並行化。)如果操作系統知道如何安排它(或者如果x264將相應的線程固定到快速核心)。

x265可以利用比x264更多的內核,因為它有更多的分析要做,而h.265的WPP設計允許更多的編碼和解碼並行性。但即使對於1080p,你也會在某些方面耗盡並行性。


如果您要編碼多個視頻,那麼並行執行多個視頻的比例很高,除了競爭共享資源(如L3緩存容量和帶寬)和內存帶寬。更少的內核可以從相同數量的L3緩存中獲得更多好處,因為它們不需要同時處理問題的這麼多不同部分。


7
2018-06-28 20:03





雖然可以設計具有以不同獨立速度運行的不同部分的計算機,但資源仲裁通常需要能夠快速決定首先服務哪個請求,這反過來又需要知道是否有任何其他請求可能很快進入以獲得優先級。決定這樣的事情, 大多數時候,很簡單。像“測驗蜂鳴器”電路這樣的東西可以用兩個晶體管來實現。問題在於做出快速決策 可靠 毫不含糊很難。在許多情況下,唯一可行的方法是使用稱為“同步器”的決策,這可以避免歧義,但會引入雙週期延遲。人們可以設計一個緩存控制器,如果一個人願意容忍每個操作的兩個週期延遲來確定誰贏得仲裁,那麼它將在具有單獨時鐘的兩個系統之間可靠地進行仲裁。然而,如果人們希望緩存在沒有爭用的情況下立即響應請求,那麼這種方法將不太有用,因為即使是無爭議的請求仍然會有兩個週期的延遲。

從公共時鐘運行所有內容避免了同步的需要,這反過來在每次需要在時鐘域之間傳遞信息或控制信號時避免了兩個週期的通信延遲。


4
2018-06-24 23:57





台式計算機已經這樣做了。

它們具有(一組)CPU,一次激活1-72個線程,以及一組(一組)GPU,具有16-7168個計算單元。

圖形是我們發現大量並行工作高效的任務的一個例子。 GPU經過優化,可以執行我們想要進行圖形處理的操作(但不僅限於此)。

這是一台擁有幾個大核心的計算機 地段 小核心。

一般來說,在X FLOPS上以X / 2 FLOPS為三個核心交易一個核心是不值得的;但在X FLOPS上交換一個核心,在X / 5 FLOPS上交換100個核心是非常值得的。

為此編程時,會為CPU和GPU生成非常不同的代碼。為了劃分工作量,我們做了大量的工作,以便GPU完成最好在GPU上完成的任務,並且CPU可以獲得最好在CPU上完成的任務。

為CPU編寫代碼可以說要容易得多,因為大規模並行代碼更難以實現。所以只有當收益是  是否值得為多核情況交易單核性能。如果使用得當,GPU可以帶來很大的回報。

現在,移動設備出於不同的原因這樣做。它們的低功耗內核速度明顯較慢,但每單位計算的功耗也大大降低。這樣可以在不執行CPU密集型任務時延長電池壽命。在這裡,我們有一種不同的“大收益”;不是性能,而是功率效率。操作系統和可能的應用程序編寫者仍需要做很多工作才能使其正常工作;只有大筆的回報才值得。


4
2018-06-27 15:45





常見系統具有相同速度的核心的原因是簡單的數學問題。輸入和輸出定時(帶優化)基於一組常量(可伸縮=可乘以多個單位)。

有人在這裡說移動設備有多個不同速度的cpu。那不是真的。如果它不是中央處理單位,它不是一個中央處理單位;無論製造商說什麼或不是。在那種情況下[不是cpu]它只是一個“支持包”。


-1
2017-07-01 05:05