四核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,但它确实需要一个核心进程来保持其他线程充满数据并收集处理完的数据。
- 实际上每个内核每秒执行x次计算,因此计算总数为x(内核)。
假设工作负载适合并行运行,则每个内核每秒可以执行x个计算,在线性程序上,您只有1个内核。
- 时钟速度实际上是对处理器在一秒钟内经历的周期数的计数,因此,只要所有内核都以相同的速度运行,则无论存在多少个内核,每个时钟周期的速度都保持不变。换句话说,Hz =(core1Hz + core2Hz + ...)/核心。
考虑到数学原理,我认为认为4 x 3GHz = 12GHz是一个谬论,但是您正在将苹果与橘子进行比较,而总和是不正确的,不能简单地将GHz每种情况相加。我将其更改为4 x 3GHz = 4 x 3GHz。