NRe*_*ngh 26 multi-processor clockspeed multi-core
例如,有四个内核每个运行在 3GHz 的处理器实际上是一个运行在 12GHz 的处理器,这样说是否正确?
我曾经和一个熟人争论“Mac vs. PC”(顺便说一下,这不是本主题的重点……那是在中学时代),他坚持认为 Mac 只被宣传为 1Ghz 机器,因为它们是双处理器 G4,每个都运行在 500MHz。
当时我知道这是胡说八道的原因,我认为对大多数人来说都是显而易见的,但我刚刚在这个网站上看到一条评论,大意是“6 核 x 0.2GHz = 1.2Ghz”,这让我再次思考是否对此有一个真正的答案。
因此,这是一个关于时钟速度计算语义的或多或少的哲学/深层技术问题。我看到两种可能性:
Mok*_*bai 37
四核 3GHz 处理器永远不如 12GHz 单核快的主要原因与在该处理器上运行的任务的工作方式有关,即单线程或多线程。 在考虑您正在运行的任务类型时,阿姆达尔定律很重要。
如果您的任务本质上是线性的并且必须精确地逐步完成,例如(非常简单的程序)
10: a = a + 1
20: goto 10
Run Code Online (Sandbox Code Playgroud)
然后任务高度依赖于前一次传递的结果,并且不能在不破坏 的值的情况下运行自身的多个副本,'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
Run Code Online (Sandbox Code Playgroud)
所有这些线路都是独立的,可以像第一个一样分成 4 个独立的程序并同时运行,每个程序都能够有效地利用其中一个内核的全部功能而不会出现任何同步问题,这就是阿姆达尔定律进入它。
因此,如果您有一个单线程应用程序进行蛮力计算,那么单个 12GHz 处理器将胜出,如果您能以某种方式将任务拆分为单独的部分并进行多线程处理,那么 4 个内核可能会接近,但不能完全达到,根据阿姆达尔定律,性能相同。
多 CPU 系统为您提供的主要功能是响应能力。在努力工作的单核机器上,系统可能看起来很缓慢,因为大部分时间可能被一个任务使用,而其他任务仅在较大的任务之间短时间运行,导致系统看起来缓慢或不稳定. 在多核系统上,繁重的任务获得一个核心,所有其他任务都在其他核心上运行,从而快速有效地完成工作。
“6 核 x 0.2GHz = 1.2Ghz”的论点在任何情况下都是垃圾,除非任务完全并行和独立。有很多高度并行的任务,但它们仍然需要某种形式的同步。 Handbrake是一个视频转码器,非常擅长使用所有可用的 CPU,但它确实需要一个核心进程来保持其他线程充满数据并收集它们完成的数据。
- 每个核心实际上每秒进行 x 次计算,因此计算总数为 x(cores)。
每个核心每秒能够进行 x 次计算,假设工作负载适合并行,在线性程序中,您只有 1 个核心。
- 时钟速度是处理器在一秒钟内经历的周期数的计数,所以只要所有内核都以相同的速度运行,无论存在多少个内核,每个时钟周期的速度都保持不变. 换句话说,Hz = (core1Hz+core2Hz+...)/cores。
我认为认为 4 x 3GHz = 12GHz 是一种谬论,当然数学是有效的,但是您将苹果与橙子进行比较,并且总和不正确,GHz 不能简单地在每种情况下加在一起。我会将其更改为 4 x 3GHz = 4 x 3GHz。
其他人从技术角度进行了很好的论证。相反,我会做几个简单的类比,希望能解释为什么 4*3GHz 不等于 1*12GHz。
例如,一名妇女可以在九个月内生产一个婴儿。九个女人一个月能生一个孩子吗?不,因为妊娠不能并行化(好吧,至少在这个技术水平上)。
这是另一个:在我最近访问的水力发电厂中,其中一台发电机正在升级。他们不得不用船运输发电机的定子。六分之一的定子可以用卡车运输,但他们需要运输整个定子;所以他们不得不使用一艘船,而不是六辆卡车。
另一种情况可能是事件的精确时间安排。有时计算机处理器被用作精确计时器(尽管不再推荐这种做法,因为大多数处理器上的时钟可变。应改用高精度事件计时器)。如果我们假设我们有一个具有相对稳定的 12GHz 时钟的处理器,我们可以使用它以比具有 3GHz 时钟的处理器更高的分辨率测量时间。无论我们有多少个 3GHz 内核,我们都无法达到 12GHz 内核的分辨率。这就像有 4 个带有 7 段显示器的时钟,其中每个时钟都以小时为单位显示正确的时间。无论它们如何正确地显示小时数,您都无法使用它们来测量一秒范围内的时间间隔。