如何计算多核处理器的时钟速度?


23

例如,一个具有四个运行于3GHz的内核的处理器实际上是运行于12GHz的处理器,这是否正确?

我曾经遇到一个“ Mac vs. PC”的论点(顺便说一句,这不是本主题的重点……那是在中学时代),他的熟人坚持认为Mac仅被宣传为1Ghz机器,因为它们是双处理器G4,每个以500MHz运行。

当时我知道这很麻烦,原因是我认为这对大多数人来说都是显而易见的,但是我在该网站上仅看到有关“ 6核x 0.2GHz = 1.2Ghz”的评论,这让我再次考虑有一个真正的答案。

因此,这是关于时钟速度计算语义的一个或多或少的哲学/深层技术问题。我看到两种可能性:

  1. 实际上每个内核每秒执行x次计算,因此计算总数为x(内核)。
  2. 时钟速度实际上是对处理器在一秒钟内经历的周期数的计数,因此,只要所有内核都以相同的速度运行,则无论存在多少个内核,每个时钟周期的速度都保持不变。换句话说,Hz =(core1Hz + core2Hz + ...)/核心。

这里的许多答案都很好地解释了为什么例如四核2 GHz处理器不一定等于单核8 GHz处理器。但是,在确定系统对列出其要求的特定速度和核数的应用程序的适用性时,我很难确定如何考虑多核处理器的速度?(例如:《无主之地2》需要2.4 GHz双核处理器。我们是否应该期望低速四核或高速单核也能做到这一点?)是否(或可以)在此回答,还是应该单独提出一个问题?
Iszi 2012年

@Iszi这应该是另一个问题,但是如果Borderlands在其要求中包括“双核”,则可能针对多个线程进行了优化。在那种情况下,不建议使用单核处理器,但是尚不清楚它是否可以利用> 2核。
NReilingh

重要的是要记住,时钟速度和内核数并不仅决定处理器的“速度”。例如,高速缓存的大小和速度将影响处理器花费在等待指令和数据上的时间。此外,每个周期的指令(以某种方式“效率”,尽管与功率效率不同并与之相关)也将影响计算速度。不同的处理器将花费不同的时间来执行相同的指令。
鲍勃

Answers:


35

四核3GHz处理器从来没有像12GHz单核那样快的主要原因是与该处理器上运行的任务的工作方式有关,即单线程或多线程。 在考虑正在运行的任务类型时,阿姆达尔定律很重要。

如果您的任务本质上是线性的,并且必须逐步完成,例如(一个非常简单的程序)

10: a = a + 1
20: goto 10

然后,该任务在很大程度上取决于前一遍的结果,并且无法运行其自身的多个副本而不会破坏其值,'a'因为每个副本将'a'在不同的时间获取其值并以不同的方式写回。这将任务限制为单个线程,因此该任务只能在任何给定时间在单个内核上运行,如果要在多个内核上运行,则将发生同步损坏。这将其限制为双核系统的cpu功率的1/2,或四核系统的1/4。

现在执行以下任务:

10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10

所有这些线都是独立的,可以像第一个程序一样分成4个单独的程序,并同时运行,每个程序都可以有效利用其中一个内核的全部功能而不会出现任何同步问题,这就是阿姆达尔定律的所在进入它。

因此,如果您有一个单线程应用程序进行蛮力计算,那么单个12GHz处理器将胜任一切,如果您能够以某种方式将任务拆分为单独的部分并使用多线程,那么4个内核可能会接近但不能完全实现,表现与阿姆达尔定律相同。

多CPU系统为您提供的主要功能是响应能力。在努力工作的单核计算机上,系统似乎很呆滞,因为大部分时间可能被一个任务占用,而其他任务仅在较大任务之间短暂运行,从而导致系统显得呆滞或摇摇欲坠。在多核系统上,繁重的任务获得一个核心,而其他所有任务则在另一个核心上发挥作用,从而快速高效地完成工作。

“ 6核x 0.2GHz = 1.2Ghz”的论点在每种情况下都是垃圾,除非任务是完全并行和独立的。有很多任务是高度并行的,但是它们仍然需要某种形式的同步。 Handbrake是一种视频转码器,非常善于使用所有可用的CPU,但它确实需要一个核心进程来保持其他线程充满数据并收集处理完的数据。

  1. 实际上每个内核每秒执行x次计算,因此计算总数为x(内核)。

假设工作负载适合并行运行,则每个内核每秒可以执行x个计算,在线性程序上,您只有1个内核。

  1. 时钟速度实际上是对处理器在一秒钟内经历的周期数的计数,因此,只要所有内核都以相同的速度运行,则无论存在多少个内核,每个时钟周期的速度都保持不变。换句话说,Hz =(core1Hz + core2Hz + ...)/核心。

考虑到数学原理,我认为认为4 x 3GHz = 12GHz是一个谬论,但是您正在将苹果与橘子进行比较,而总和是不正确的,不能简单地将GHz每种情况相加。我将其更改为4 x 3GHz = 4 x 3GHz。


好帖子..不能投票超过1+ :-(
Gopalakrishnan Subramani

但是阿姆达尔定律是由锁定引起的编程问题,而不是硬件问题。如果您不需要同步,则每个内核都可以尽可能快地执行指令。可以设计一个并行程序(一个简单的程序),该程序可以在内核之间完美地分割。硬件制造商不会宣传这一原始价值吗?
贾斯汀·迈纳斯

为了澄清,我理解为什么这回答了为什么3 GHz时的4个内核在实践中不如12 GHz时那么快的问题,但不是计算多核时钟速度的部分。
贾斯汀·迈纳斯

@JustinMeiners每个内核的时钟速度就是内核运行的时钟速度。没有神奇的计算可以将单核等同于多核。多核只是意味着您可以同时运行更多单独的任务。Amdahls法因软件而适用,因此所需的同步和锁定将防止任务像软件一样在硬件中“完美”地完成。共享的缓存和内存会引起争用和锁定。
Mokubai

@Mokubai只是为了澄清,当制造商列出时钟速度时,每个单独的内核都以该速度运行,对吗?
贾斯汀·迈纳斯

6

其他人从技术角度提出了很好的论据。我将做几个简单的类比,希望它们能解释为什么4 * 3GHz不等于1 * 12GHz。

例如,一名妇女可以在9个月内生产出一个婴儿。九名妇女能否在一个月内生产一个婴儿?不可以,因为妊娠无法并行化(至少在此技术水平上如此)。

这是另一个:在我最近访问的一家水力发电厂中,其中一台发电机正在升级中。他们不得不乘船运输发电机的定子。定子的六分之一可以用卡车运输,但它们需要运输整个定子。因此他们只能使用一艘船,而不是六辆卡车。

另一种情况是事件的准确计时。有时将计算机处理器用作精确计时器(尽管由于大多数处理器上的时钟可变,因此不再建议使用这种做法,而应使用高精度事件计时器)。如果假设我们有一个具有相对稳定的12GHz时钟的处理器,则可以使用它以比具有3GHz时钟的处理器更高的分辨率来测量时间。无论我们拥有多少个3GHz内核,我们都将无法达到12GHz内核的分辨率。这就像有4个带有7段显示器的时钟,其中每个时钟仅显示以小时为单位的正确时间。无论它们显示小时数的正确性如何,您都无法使用它们来测量一秒范围内的时间间隔。


对于技术欠佳的人有用的答案。另外,我喜欢类比:)
AFF

3

我不是该主题的专家,但是我拥有计算机工程学位。从理论上讲(这是一个高度概念性的答案),例如,如果单个最终结果需要四组计算,则每个处理器四核3GHz 可以等同于一个12GHz处理器。这就是所谓的并行处理。

为了简化逻辑,假设我们正在谈论双核处理器。如果进行一组计算,请说:

a = b + 1;

c = d + 1;

然后,可以在单独的内核上执行这两个计算,并且xGHz处理器将等效于单核2 * xGHz处理器。这是因为这两个计算虽然以x速度完成,但将同时处理。而单核处理器可以以2 * x的速度运行它们,但是却又一个接一个地运行。如果两个CPU同时执行此代码,则它们将同时完成。但是,如果代码是:

a = b + 1;

c = a + 1;

那么,双核处理器将花费单核处理器两倍的时间,因为在第二条指令中,a的值取决于第一条指令,因此无法并行执行。这就是某些软件可以利用多线程处理器的方式。

因此,从理论上讲,12GHz单核处理器始终可以比3GHz四核处理器更快(或更快)运行,反之则不然。


请注意,这些计算只有在使用了多线程的情况下才会更快,即使那样也会有一些开销。但是,是的,尽管有可能制造出一个可以进行多次计算的单核处理器,但由于热量和物质的原因,这根本就不可行。
Phoshi

这个答案有两个方面的误导。首先,现代核心一次要做的事情不只一件事。其次,答案假定核心速度与完成工作的速度相同。如果单核处理器需要更多的时钟周期来完成相同的工作,那么它的运行速度将不会比3GHz的四核处理器快。(这将因为12GHz处理器将需要更长的管线。)
David Schwartz 2013年

2

这是一个要回答的复杂问题,但简短的答案是:否

在实际应用中,由于效率低下,四个3Ghz处理器将不如单个12Ghz处理器快。它们可能非常接近,但是就处理能力而言,它们不等于单个处理器。

原因在于处理可在多个处理器上运行的程序时效率低下。假设所讨论的程序可以并行运行,我们仍然会遇到不同内核相互竞争其他资源(例如RAM甚至是缓存和线程同步问题)的问题。此外,程序的某些部分始终无法并行化,需要自己在单个内核上运行。

看一下这篇文章:http : //en.wikipedia.org/wiki/Amdahl%27s_law


你是对是错。在“现实世界”应用中,四个3 GHz处理器比单个12 GHz处理器更可能更快。如今,越来越多的程序正在使用多线程,您提供的链接是指理论上的单线程应用程序。一个12 GHz的处理器只有一个线程,因此“现实世界”程序必须提供的多线程优势将丢失。业界并没有朝着更慢的内核而不是更少的更快的内核迈进,原因仅仅是,多核技术的好处远远超过了快速单核技术的好处。
ubiquibacon

3
@typoknig:并非如此。6GHz单核处理器将以与3GHz双核处理器大致相同的速度运行多线程应用程序,前提是该应用程序充分利用了每个线程的优势(如果“真正”世界应用程序”,但这是一个单独的论点)。我们看不到12GHz处理器,因为目前的技术很难做到这一点,而不是因为它的速度较慢。
Sasha Chedygov

4
@typoknig:我已经编写了一些多线程程序,并且相信我,如果我只有一个12Ghz处理器,请改用ID。单线程编程比多线程编程容易10倍,并且效率要高得多。业界之所以要移动第二个muticore处理器,其真正原因并不是因为它们更快,而是因为我们不能使单个CPU的运行速度更快!在p4天内,英特尔的netburst技术对此进行了概述。他们估计至少有10Ghz处理器,直到量子物理学把他们打在脸上然后说“不行!”。
Faken

2
@typokning:F22使用了一系列PowerPC处理器来实现每秒100亿条指令,这与10Ghz完全不同!就像说您的Radion HD5970以4600Ghz运行。它能够支持4.6 TFLOPS,但这仅是因为它是高度并行的。
Faken

1
@typoknig:您显然不了解CPU频率和IPS(每秒指令)之间的区别,它们不是同一个人。请阅读:en.wikipedia.org/wiki/Instructions_per_second
Faken

2

看来我们不能说4 GHz @ 3 GHz的内核可以说是12 GHz。

共享内存,缓存争用和其他资源等各种约束对于所有内核也是通用的,因此在这些内核上并行运行一段代码将不如在12 Ghz处理器上运行该代码有效(尽管很难构建这样的处理器) )。

我还在某处读到,如果我们将嵌入芯片(CMP)的晶体管加倍,我们将获得的速度仅为40%。这也为该主题提供了重要的提示。


1

就执行的时钟周期而言,是的,多核处理器x * cores每秒完成一次工作周期。常规上,时钟速度是按核心列出的,以便于比较(否则,您如何轻松比较以2GHz /核运行的4GHz双核芯片与以1GHz /核运行的4GHz四核芯片?)。

不幸的是,当您尝试在实际应用中比较不同的处理器时,问题变得很复杂。

首先,大多数多核处理器在内核之间共享一些资源(例如,CPU缓存)。他们必须共享对该缓存的访问权限,因此您不能让两个内核都全速存储或读取数据。在多核CPU中,通常可以通过具有多个共享的缓存来缓解这种情况(例如,大多数四核芯片具有2个缓存,每个缓存由一对内核共享),以便更好地划分共享资源瓶颈的机会。

其次,也许在非技术人员世界中鲜为人知的是,比较时钟速度有时可能就像比较苹果和橘子。不同的CPU在单个时钟周期内完成不同的工作量,因此说1GHz和1.2GHz听起来不错,但是1GHz芯片实际上可能在给定的时间间隔内完成了更多工作。奔腾4将这一点带回家,导致了兆赫兹神话(在撰写本文之前,我不知道这个名字的名字)。


时钟速度未按“每核”列出。速度从来都不是“每”东西。如果汽车每小时行驶50英里,则速度为每小时50英里。如果两辆汽车每小时行驶50英里,则速度仍然是每小时50英里。“每辆车的速度”的想法是毫无意义和不连贯的。
David Schwartz 2013年

1

每小时行驶50英里的两辆汽车的“总和”不会达到每小时100英里。真的就是这么简单。处理器的时钟速度不能衡量工作的完成速度,而可以衡量时钟滴答的速度。

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.