为什么我们的所有核心CPU都具有相同的速度,而不是不同速度的组合?


79

通常,如果您要购买一台新计算机,则可以根据预期的工作量确定要购买的处理器。游戏中的性能往往取决于单核速度,而诸如视频编辑之类的应用程序则取决于核数。

就市场上可用的产品而言,所有CPU似乎都具有大致相同的速度,主要区别在于更多的线程或更多的内核。

例如:

  • Intel Core 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),一个CPU的两个内核在4.0 GHz下运行,而四个内核在2 GHz(即2x4.0 GHz)下运行呢? + 4x2.0 GHz〜16 GHz(最大值)。第二种选择在单线程工作负载上是否会同样出色,而在多线程工作负载上可能会更好?

我问这个问题是一个一般性的问题,而不是专门针对我上面列出的那些CPU或任何特定的一个特定工作负载。我只是好奇为什么这种模式是这样。


15
有许多具有快速和慢速内核的移动设备,并且在几乎所有现代多核服务器上,CPU内核的时钟速度取决于负载,甚至在不使用内核时也会关闭内核。在您没有设计用于节能的通用计算机上,但是只有两种类型的内核(CPU和GPU)只会使平台更加灵活。
eckes

5
在线程调度程序可以明智地选择使用哪个内核之前,必须先确定一个进程是否可以利用多个内核。可靠地执行此操作将存在很大问题,并且容易出错。特别是在可以根据应用程序的需要动态更改时。在许多情况下,当使用最佳内核时,调度程序将不得不做出次优选择。相同的内核使事情变得更简单,提供最大的灵活性并通常具有最佳性能。
LMiller7

33
时钟速度不能合理地说成您所描述的方式相加。具有四个以4 Ghz运行的内核并不意味着您拥有16 GHz的“总”容量,也不意味着可以将这16 GHz划分为8个以2 Ghz运行的处理器或16个以1 GHz运行的处理器。
Bob Jarvis

16
问题的前提是完全错误的。现代CPU完全能够以不同的速度运行内核
phuclv

Answers:


85

这被称为异构多处理HMP),并被移动设备广泛采用。在实现big.LITTLE的基于ARM的设备中,处理器包含具有不同性能和功耗配置文件的内核,例如,某些内核运行速度快,但消耗大量功率(更快的体系结构和/或更高的时钟),而其他内核节能高效,但速度较慢(较慢的架构和/或较低的时钟)。这很有用,因为一旦超过特定点,功耗就会随着性能的增加而成比例地增加。这里的想法是在需要时获得性能,而在不需要时获得电池寿命。

在台式机平台上,功耗几乎不是问题,因此这不是真正必要的。大多数应用程序期望每个内核具有相似的性能特征,并且HMP系统的调度过程比传统SMP系统的调度要复杂得多。(Windows 10从技术上说支持HMP,但它主要用于使用ARM big.LITTLE的移动设备。)

此外,当今大多数台式机和笔记本电脑处理器的散热或电气性能均不受限于某些内核甚至在短脉冲时间内需要比其他内核运行得更快的程度。从根本上讲我们可以快速完成单个内核,因此用较慢的内核替换某些内核将不会使其余内核运行得更快。

尽管有一些台式机处理器具有一个或两个内核,它们的运行速度比其他内核要快,但是此功能当前仅限于某些非常高端的Intel处理器(如Turbo Boost Max Technology 3.0),并且仅在性能上有所提升对于那些可以运行得更快的内核。


虽然可以设计既具有大型,快速内核又具有较小,较慢的内核的传统x86处理器,以针对线程密集的工作负载进行优化,但这将为处理器设计增加相当大的复杂性,并且应用程序不太可能正确地支持它。

假设有一个具有两个快速Kaby Lake(第七代Core)内核和八个慢速Goldmont(Atom)内核的处理器。您总共有10个内核,并且针对此类处理器进行了优化的高线程工作负载可能会比普通的四核Kaby Lake处理器获得更高的性能和效率。但是,不同类型的内核具有完全不同的性能级别,慢速内核甚至不支持快速内核支持的某些指令,例如AVX。(ARM通过要求big和LITTLE内核都支持相同的指令来避免此问题。)

同样,大多数基于Windows的多线程应用程序都假定每个内核都具有相同或几乎相同的性能水平,并且可以执行相同的指令,因此这种不对称可能导致性能不理想,甚至在崩溃时崩溃。它使用慢速内核不支持的指令。尽管英特尔可以修改慢速内核以添加高级指令支持,以便所有内核都可以执行所有指令,但这不能解决异构处理器的软件支持问题。

与您在问题中所考虑的更接近的另一种应用程序设计方法将使用GPU来加速应用程序的高度并行部分。可以使用OpenCLCUDA之类的API来完成。对于单芯片解决方案,AMD在其APU中促进了对GPU加速的硬件支持,该APU将传统CPU和高性能集成GPU与异构系统体系结构结合在同一芯片上,尽管这并没有引起业界的广泛关注。一些专门的应用程序。


1
Windows已经有了“应用程序”,“后台进程”和“ Windows进程”的概念。因此,这不会扩展到硬件级别吗?
杰米(Jamie)2015年

2
@Jamie“后台”进程的时间片更短,并且更有可能被中断。Windows 10确实在某种程度上说明了HMP系统,尽管目前尚无太多信息。
鲍勃·

因此,我认为编辑后@bwDraco几乎已经为我解答了。如果有一个“混合”处理器,则可以很容易地支持相同的指令集(如果以这种方式构建),因此我们将需要某种调度程序来选择正确的内核。我在想,实际上,受益于许多小核而受益的应用程序可能会受益于大量许多小核而受益。这样我们就有了GPU加速。
杰米

3
请注意,GPU案例不是将2个大核交换为10个小核和慢核,而是(非常粗糙)将2个大核交换为1024个小核和慢核。大规模并行,而不仅仅是更多并行。
Yakk

4
英特尔可能会获得一个Goldmont内核来运行AVX2指令,而无需太多额外的芯片(慢慢地,通过解码成对的128b ops)。Knight's Landing(Xeon Phi)具有基于Silvermont的AVX512内核,因此并非不可能修改Silvermont。但是KNL为向量指令添加了乱序执行,而普通的Silver / Goldmont仅对整数执行OOO,因此他们可能希望将其设计为比KNL更接近Goldmont。无论如何,insn集不是一个真正的问题。操作系统支持和小收益是在低功耗内核上花费死区的真正障碍。
彼得·科德斯

68

您要问的是为什么当前系统使用对称多处理 而不 是非 对称多处理

过去,一台计算机非常庞大并且容纳了多个单元,因此使用不对称多处理。

现代CPU被作为一个单元集成在一个模具中,在这里不混合使用不同类型的CPU要简单得多,因为它们都共享相同的总线和RAM。

时钟的约束也决定着CPU周期和RAM访问。当混合使用不同速度的CPU时,这将变得不可能。无时钟的实验计算机的确存在并且速度甚至很快,但是现代硬件的复杂性使体系结构更加简单。

例如,Sandy Bridge和Ivy Bridge内核不能同时以不同的速度运行,因为L3缓存总线以与内核相同的时钟速度运行,因此为防止同步问题,它们都必须以该速度运行或者停放/停下(链接:英特尔的Sandy Bridge体系结构公开)。(也已在下面针对Skylake的评论中进行了验证。)

[编辑]有些人误解了我的回答,意思是说不可能混合使用CPU。为了他们的利益,我声明:混合使用不同的CPU并非超出当今的技术范围,但尚未完成-问题是“为什么不这样做”。如上面所回答的,这在技术上将是复杂的,因此成本较高并且经济收益太少或没有,因此制造商不感兴趣。

以下是一些评论的答案:

Turbo Boost更改了CPU速度,因此可以对其进行更改

Turbo Boost通过加快时钟速度并更改一些乘法器来实现,这在超频时正是人们所做的,除了硬件是为我们做的之外。时钟在同一CPU的内核之间共享,因此可以均匀地加速整个CPU及其所有内核。

某些手机​​具有多个不同速度的CPU

这样的电话通常具有与每个CPU相关联的自定义固件和软件堆栈,更像两个单独的CPU(或类似CPU和GPU),并且它们缺少系统内存的单一视图。这种复杂性很难编程,因此非对称多处理留在了移动领域,因为它需要底层的,接近于硬件的软件开发,而通用桌面OS却回避了这种开发。这就是为什么在PC中找不到此类配置的原因(如果我们对定义进行了足够的扩展,则除了CPU / GPU之外)。

我的服务器具有2个Xeon E5-2670 v3(带有HT的12个内核),目前具有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长时间不驻留内核,而是单独驻留/取消驻留所有内核的速度远比Resource Monitor的刷新率快,但是我不知道这种现象的原因可能是背后的原因以上说明。

英特尔Haswell处理器具有集成的稳压器,可为每个内核启用单独的电压和频率

各个稳压器与时钟速度不同。并非所有内核都是相同的-有些更快。速度更快的内核获得的功率稍少,从而留出了一定的净空来增强能力较弱的内核。内核稳压器将设置为尽可能低的值,以保持当前时钟速度。CPU上的电源控制单元调节电压,并且对于质量不同的内核,必要时将覆盖OS请求。简介:单独的调节器用于使所有内核以相同的时钟速度经济地运行,而不是用于设置单独的内核速度


3
啊。更短,更准确。+1
Hennes

6
@harrymc有一些同步器块可以很好地管理它;DRAM的运行速度比内核速度慢,并且您可以使Intel内核在同一芯片上以不同的速度动态运行。
pjc50

10
英特尔酷睿系列处理器始终在同一芯片上以不同的速度运行。
尼克T

9
big.LITTLE架构和独立于核心的时钟增强功能的唯一存在证明您做错了。异构多处理是主流。它可以完成,它在手机完成,但对于某些原因没有桌面。
Agent_L

9
@Agent_L:原因是复杂性。台式机CPU已经足够昂贵。所以我重复:一切皆有可能,但实际的问题是为什么不做,而不是是否可以做。不要仿佛我声称这是不可能的那样来攻击我-我要说的是,它太复杂,太昂贵了,对制造商来说太少了。
harrymc

46

为什么我们没有具有不同时钟速度的变体?即。2个“大”核心和许多小核心。

放在口袋里的手机可能正好按照这种安排运动-ARM big.LITTLE的功能完全符合您的描述。甚至不只是时钟速度的差异,它们可以是完全不同的核心类型-通常,时钟频率较低的核心类型甚至是“笨拙的”(没有乱序执行和其他CPU优化)。

从本质上讲,这是一个节省电池的好主意,但也有其缺点。在不同CPU之间移动内容的簿记更加复杂,与其他外围设备的通信也更加复杂,最重要的是,要有效地使用此类内核,任务调度程序必须非常聪明(并且常常“猜对了”) 。

理想的安排是在​​“小”内核上运行非时间紧迫的后台任务或相对较小的交互式任务,而仅在进行大而长的计算时唤醒“大”任务(最终花在小内核上的额外时间最终结束了) (多吃一些电池)或用于中等大小的互动任务,用户在小核心上会感到呆滞。

但是,调度程序关于每个任务可能正在运行的工作类型的信息有限,并且必须求助于某些启发式(或外部信息,例如在给定任务上强加一些亲和力掩码)来决定在何处调度它们。如果弄错了,您可能会浪费大量时间/精力在慢速内核上运行任务,给用户带来糟糕的体验,或者将“大型”内核用于低优先级任务,从而浪费功率/从需要它们的任务中窃取它们。

此外,在非对称多处理系统上,将任务迁移到其他内核上通常比在SMP系统上花费更大,因此调度程序通常必须做出一个很好的初始猜测,而不是尝试在随机的自由内核上运行并移动稍后再说。


相反,英特尔在这里的选择是拥有更少的相同智能和快速内核,但具有非常积极的频率缩放比例。当CPU繁忙时,它会迅速提高到最大时钟速度,以最快的速度完成工作,然后将其缩小以返回最低功耗模式。这不会给调度程序带来特别的负担,并且避免了上述不良情况。当然,即使在低时钟模式下,这些内核也是“智能”内核,因此它们可能比低时钟“愚蠢” big.LITTLE内核消耗更多的电量。


1
启发式方法应该非常简单。任何非自愿的任务切换(使用完整的时间片)都表明缓慢的CPU不适合该任务。利用率非常低,并且所有自愿任务切换都表明该任务可以移至速度较慢的CPU。
R.,

3
另一个问题是4个愚蠢的2GHz内核可能比2个智能4GHz内核占用更多的裸片大小,或者它们可能比4 GHz内核更小且占用的功率更少,但运行速度也慢得多
phuclv

2
@R .:原则上我同意您的看法,但是即使为此启用了一些基本的调度程序支持,我仍然在我使用的ARM板上看到了荒谬的内核争用,因此必须有其他东西。此外,大多数“常规”多线程软件都是在考虑SMP的情况下编写的,因此,看到线程池与内核总数一样大,而作业拖到慢速内核上,这并不是不平常的。
Matteo Italia

1
@Ramhound:一个120W的10核部件的每核功率预算为12W(单核Turbo模式除外)。这就是为什么在四核部件中找到最高的单核时钟的原因,例如,英特尔的i7-6700k具有4核91W的功率预算:在所有核处于活动状态时,每核可持续22.75W(在4.0 GHz时, AVX2 + FMA工作负载,例如Prime95)。这也是为什么单核Turbo余量仅增加0.2GHz的原因,而22核Broadwell E5-2699v4具有2.2GHz base @ 145W,3.6GHz Turbo的原因。
彼得·科德斯

@Ramhound:添加对此的扩展答案。多核Xeon似乎正是 OP所需要的:运行尽可能多的低功耗内核,或者在可能的情况下(涡轮增压)花费大量功率快速运行单线程。
彼得·科德斯

14

游戏中的性能往往取决于单核速度,

过去(DOS时代的游戏):正确。
这些天,这不再是事实。许多现代游戏都是线程化的,并受益于多个核心。有些游戏已经对4核非常满意,而且这个数字似乎随着时间的推移而增加。

而像视频编辑这样的应用程序则由内核数量决定。

确实是这样。

核心数*核心速度*效率。
如果将单个相同的核心与一组相同的核心进行比较,那么您基本上是正确的。

就市场上可用的产品而言,所有CPU似乎都具有大致相同的速度,主要区别在于更多的线程或更多的内核。例如:

Intel Core i5 7600k,Base Freq 3.80 GHz,4核心Intel Core i7 7700k,Base Freq 4.20 GHz,4 Cores,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.0 GHz的P4速度与1.7 GHz的P-mob差不多)。

从那时起,我们大部分时间都放弃了提高时钟速度,而是建立了更智能的解决方案。其中一部分是在原始时钟速度上使用多个内核。

例如,单个4GHz内核可能会消耗与三个2GHz内核一样多的功率并产生更多的热量。如果您的软件可以使用多个内核,它将更快。

并非所有软件都能做到这一点,但是现代软件通常可以做到。

这部分地回答了为什么我们拥有具有多个内核的芯片,以及为什么我们出售具有不同内核数量的芯片的问题。

关于时钟速度,我认为我可以确定三点:

  • 在很多情况下,不需要原始速度的情况下,低功耗CPU才有意义。例如,域控制器,NAS设置……对于这些,我们确实有较低频率的CPU。有时甚至具有更多内核(例如,对于Web服务器来说8x低速CPU也很有意义)。
  • 对于其余部分,我们通常接近最大频率,而我们当前的设计不会变得太热。(例如,当前设计为3至4GHz)。
  • 最重要的是,我们进行装箱。并非所有CPU均生成。一些CPU的部分芯片得分不佳或得分不佳,这些部件被禁用并作为其他产品出售。

典型的例子是4核AMD芯片。如果一个核心损坏,则将其禁用并作为3核心芯片出售。当对这3个内核的需求很高时,即使3个内核版本也出售了大约4个内核,并且通过适当的软件破解,您可以重新启用第4个内核。

而且,这不仅取决于内核数量,而且还会影响速度。一些芯片比其他芯片运行温度更高。太热了,以低速CPU出售(较低的频率也意味着产生的热量更少)。

然后是生产和市场营销,这使情况更加混乱。

为什么我们没有具有不同时钟速度的变体?即。2个“大”核心和许多小核心。

我们的确是。在有意义的地方(例如移动电话),我们通常会拥有一个具有较慢核心CPU(低功耗)和一些较快核心的SoC。但是,在典型的台式PC中,无法完成此操作。这将使设置变得更复杂,更昂贵,并且无需消耗电池。


1
正如我指出的那样-“我一般性地问这个问题-并不是我上面列出的那些cpus”,这是有原因的,我从每个体系结构中举了两个例子。如果我们将这两种情况分别视为1.所有大核心,以及2.两个大与两个小-那么我认为您提到的所有观点都适用于这两种情况-即。理论上的最大单核速度,不使用芯片时的分频,降频。
杰米

当没有选择单个最大速度核心时,它并不是那么有趣。调度程序将需要更新,以实际上更喜欢高速内核。
Hennes

10

为什么我们没有具有不同时钟速度的变体?例如,两个“大”核心和许多小核心。

除非我们非常关注功耗,否则没有理由接受与附加内核相关的所有成本,并且不能从该内核中获得尽可能多的性能。最大时钟速度在很大程度上取决于制造工艺,而整个芯片则由相同的工艺制造。那么,使某些内核比所支持的制造过程更慢的优势是什么?

我们已经有可以降低速度以节省功耗的内核。限制其最佳性能的意义何在?


2
这就是我的想法。为什么当他们都是精英时,故意使用一些劣等成分?+1。
MPW

1
@MPW的选择不是在创建一个大内核然后将其绝育之间,而是在所有大内核与几个大内核和许多小内核之间进行选择。因为您有两个相互竞争的方案-单线程性能和多线程性能-为什么不最大化两者?我们是否知道您无法制造具有几个大内核和很多小内核的芯片?
杰米

@Jamie您可以制造具有几个大,很多小核的芯片。但是较小的内核不会以较低的时钟速度运行。
David Schwartz

他们会以这种方式进行设计...问题是为什么他们不从头开始以这种方式进行设计,而不采用现有的制造工艺并将其绝育。
杰米(Jamie)

@杰米我不明白你在说什么。整个CPU必须使用相同的制造过程制造,并且最大时钟速度在很大程度上是制造过程的特征。在相同制造水平上要求较低时钟速度的内核通常会复杂并占用更多空间,否则为什么它们需要较低时钟速度?
David Schwartz

9

为什么我们没有具有不同时钟速度的变体?例如,两个“大”核心和许多小核心。

如今,名义上的时钟速度对于大多数大型处理器而言并没有太大意义,因为它们都具有自行向上和向下计时的能力。您在问他们是否可以独立地为不同的内核提供时钟。

我对其他许多答案感到惊讶。现代处理器可以做到这一点。您可以通过例如在智能手机上打开CPU-Z来进行测试-我的Google Pixel完全能够以不同的速度运行不同的内核:

名义上为2.15 Ghz,但是两个核心为1.593 Ghz,两个为1.132 Ghz。

实际上,自2009年以来,主流的Intel CPU就具有逻辑,可以在不降低其他内核频率的情况下提高单个内核的性能,从而在不超出TDP预算的情况下提供更好的单核性能:http : //www.anandtech.com/show/2832/4

较新的具有“ Favored Core”(英特尔营销术语)的Intel处理器在出厂时已具有每个内核的特征,最快的内核能够将性能提高到更高:http : //www.anandtech.com/show/11550/the-intel -skylakex-review-core-i9-7900x-i7-7820x-and-i7-7800x已测试/ 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 -在1800x-1700x-and-1700 / 11上


您正在回答另一个问题。问题是关于许多大核心与几个大核心和许多小核心之间的区别-这是两种情况的优点。在这两种情况下,您都可以根据需求上下时钟,或者提升内核。
杰米

3
那不是我读的问题。尽管使用了“ big”和“ small”一词,但该问题并未提及架构上不同的内核。它专门关注时钟速度。
Grant Wu

8

在现代系统上,您经常以不同的速度运行所有内核。对不经常使用的内核进行时钟降低会降低功耗和热量输出,这很好,并且“ turbo boost”之类的功能使一个或两个内核只要其他内核处于空闲状态就可以以更快的速度运行,从而降低了功耗并且整个包装的热量输出不会太高。对于具有这种功能的芯片,您在清单中看到的速度是一次使用所有内核可获得的最高速度。为何所有内核都具有相同的最大速度?嗯,它们都是相同的设计,在相同的物理芯片上,并且采用相同的半导体工艺,所以为什么它们应该有所不同?

所有内核都相同的原因是,这使得在一个点上运行在一个内核上的线程最容易在另一点上开始在另一个内核上运行。如其他地方所提到的,有一些遵循相同内核原理的常用芯片,即ARM“ big.LITTLE” CPU。尽管在我看来,“大”内核与“小”内核之间最重要的区别不是时钟速度(“大”内核往往是更奇特,更宽,更具推测性的内核,每个时钟可以获得更多指令,但代价是更高功耗,而“小”内核则更接近ARM的单发,有序,低功耗根源,因为它们

进入异构计算领域,将“ CPU”和“ GPU”内核集成到同一芯片上也变得很普遍。它们的设计完全不同,运行的指令集不同,寻址方式也不同,通常它们的时钟也不同。


7

Intel Xeon E5-2699v4这样的CPU可以提供快速的单线程性能和非常高的多线程吞吐量

这是22核Broadwell。所有内核均处于活动状态(例如,视频编码)时,持续时钟速度为2.2GHz,但是单核最大Turbo为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奔腾4每个时钟周期的工作量要比3GHz Skylake少得多。)

更重要的是,效率为1.0非常罕见。一些令人尴尬的并行任务的确几乎线性扩展(例如,编译多个源文件)。但是视频编码并非如此。 对于x264,扩展到几个内核是非常好的,但是随着内核的增加,性能会变差。例如,从1核到2核将几乎使速度提高一倍,但是从32核到64核将对典型的1080p编码的帮助要小得多。速度平稳点取决于设置。(-preset veryslow在每个帧上进行更多分析,并且可以使更多的内核繁忙-preset fast)。

由于内核速度很慢,x264的单线程部分将成为瓶颈。(例如,最终的CABAC比特流编码。它等于g.zip的h.264,并且不并行化。)如果操作系统知道如何为其调度(或者x264将适当的线程固定在其中),则具有几个快速内核可以解决该问题。快速核心)。

与x264相比,x265可以利用更多的内核,因为它需要做更多的分析,并且h.265的WPP设计允许更多的编码和解码并行性。但是,即使对于1080p,在某些时候您仍然没有并行性可以利用。


如果您要编码多个视频,那么除了竞争共享资源(例如L3缓存容量和带宽以及内存带宽)外,并行处理多个视频的效果很好。更少数量的更快内核可以从相同数量的L3缓存中获得更多收益,因为它们无需立即处理问题的许多不同部分。


4

尽管可以设计具有以不同的独立速度运行的不同部分的计算机,但是资源仲裁通常需要能够快速确定首先服务哪个请求,而这反过来又需要知道是否可能有其他任何请求很快到达以赢得优先权。 。在大多数情况下,决定此类事情非常简单。像“测验蜂鸣器”电路之类的东西可以用少至两个晶体管来实现。问题在于做出可靠的快速决策明确是很难的。在许多情况下,这样做的唯一实用方法是使用一个称为“同步器”的决策,该决策可以避免歧义,但会引入两个周期的延迟。一个人可以设计一个缓存控制器,如果一个人愿意在每次操作中忍受两个周期的延迟来确定谁赢得了仲裁,它将在两个具有独立时钟的系统之间可靠地仲裁。但是,如果希望缓存在没有争用的情况下立即对请求进行响应,则这种方法将没有什么用处,因为即使没有竞争的请求仍然会有两个周期的延迟。

在通用时钟上运行所有内容避免了同步的需要,从而避免了每次需要在时钟域之间传递信息或控制信号时的两周期通信延迟。


4

台式计算机已经做到了这一点。

它们具有一个(多个)CPU(一次具有1-72个线程)和一个(多个)GPU(各具有16-7168个计算单元)。

图形是一项任务的示例,我们发现大量并行工作非常有效。GPU经过优化,可以执行我们想要进行图形处理的操作(但不仅限于此)。

这是一台具有几个大核心和很多小核心的计算机。

总的来说,以X FLOPS的价格购买一个内核,而以X / 2 FLOPS的价格购买三个内核,是不值得的。但是以X FLOPS交换一个内核到X / 5 FLOPS交换一百个内核非常值得。

对此进行编程时,您为CPU和GPU生成的代码完全不同。完成许多工作来划分工作负载,以便GPU获得在GPU上完成的最佳任务,而CPU获得在CPU上完成的最佳任务。

可以说为CPU编写代码要容易得多,因为大规模并行代码很难正确处理。因此,只有当收益是是值得交易的多核情况下的单核性能。如果使用得当,GPU会带来巨大收益。

现在,移动设备执行此操作的原因有所不同。它们具有低功耗的内核,速度明显慢一些,但每单位计算单元的功耗也大大降低。这使他们在不执行CPU密集型任务时可以延长电池寿命。在这里,我们有另一种“大收益”。不是性能,而是电源效率。要使此功能正常运行,OS和应用程序编写器仍需要大量工作。只有丰厚的回报才值得。


-1

常见系统具有相同速度内核的原因是一个简单的数学问题。输入和输出时序(带有优化)基于一组常数(可伸缩=可乘以多个单位)。

这里有人说移动设备具有不同速度的多CPU。那不是真的。如果不是中央处理单元,则它不是中央处理单元;无论制造商说的是与否,在这种情况下,[不是cpu]只是一个“支持包”。


-10

我认为OP不了解基本的电子设备。所有计算机都需要一件事情才能运行-时钟。内部时钟产生的时钟周期是所有数据移动的节拍器。为了实现同步,所有操作必须绑定到一个公共时钟。对于隔离计算机上的内部数据执行以及整个网络来说都是如此。

如果您想通过以不同的频率运行来隔离CPU上的内核,则可以肯定地设计这样的平台。虽然,这将需要设计一种主板解决方案,以将每个单独的内核与其各自独立的主板功能子集联系起来。您将剩下4台单独的计算机,而不是四核计算机。

另外,正如另一个人指出的那样,您可以向内核添加代码,以分别调整内核频率。但是,这会导致性能下降。您可以拥有速度或功率效率-但不能同时拥有两者。


1
我没有,所以我的问题。将Intel i5 7600与i5 7600k进行比较,我们发现两者的基本时钟均为100MHz,不同之处在于核心比率。因此,您可能有两个内核具有相同的100MHz的基本时钟,但内核比率不同-这种情况是否违反了同步性要求?
杰米

4
是的,这过于简化了;并非所有操作都必须绑定到相同的时钟,而是存在很多时钟域,并且完全有可能以相同的速度运行不同的内核并不是真的。总线时钟与内部时钟等不同
。– pjc50

11
现代芯片已经具有多个时钟域(即使便宜的微控制器的RTC通常也运行在单独的32.7kHz域上)。您只需要在时钟域之间进行同步即可。即使使用通用时钟,您也可以将其除以2、4、8等。
迈克尔·迈克尔(Michael

1
都没错 但是它仍然降低了操作效率。而这始终是性能方面的目标。那是我的意思。当然可以。但是您会在性能上受到打击。
RyRoUK

“降低性能”-相比之下呢?您假设一个基本状态,其中n个处理器以相同的时钟运行。事实并非如此。处理器X +处理器Y是比单独使用处理器X更强大/灵活的解决方案,无论处理器Y到底是什么。
hmijail
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.