哪个更有效?更多内核或更多CPU

时间:2009-07-04 02:35:16

标签: multithreading performance multicore

我意识到这更像是一个硬件问题,但这也与软件非常相关,特别是在为多线程多核/ cpu环境进行编程时。

哪个更好,为什么?无论是效率,速度,生产力,可用性等。

1。)具有4个四核CPU的计算机/服务器?

2。)具有16个单核CPU的计算机/服务器?

请假设所有其他因素(速度,缓存,总线速度,带宽等)相等。

修改

我对性能方面感兴趣。至于它是否在某个方面特别好,而在另一个方面特别好(或不可取),那么我也想知道这一点。

如果我必须选择,我最感兴趣的是在I / O绑定应用程序和计算绑定应用程序方面更好。

4 个答案:

答案 0 :(得分:12)

这不是一个容易回答的问题。毫无疑问,计算机体系结构相当复杂。以下是一些指导原则,但即使这些也是简化。很多这将归结为您的应用程序以及您正在进行的约束(业务和技术)。

CPU有几个(一般2-3个)levels of caching on the CPU。一些现代CPU在芯片上也有一个内存控制器。这可以大大提高核心之间交换内存的速度。 CPU之间的内存I / O必须使用外部总线,这往往会更慢。

AMD / ATI芯片使用HyperTransport,这是一种点对点协议。

然而,所有这些复杂化的是总线架构。英特尔的Core 2 Duo / Quad系统使用shared bus。可以想象这就像以太网或有线互联网一样,只有这么多的带宽可以绕过,而每个新参与者只需要从整体上获得另一份分享。 Core i7和更新的Xeon使用QuickPath,这与HyperTransport非常相似。

更多核心将占用更少的空间,占用更少的空间,更少的功耗和更低的成本(除非您使用的是真正低功耗的CPU),无论是核心术语还是其他硬件(例如主板)的成本。

一般来说,一个CPU将是最便宜的(在硬件和软件方面)。可以使用商品硬件。一旦你进入第二个插座,你往往不得不使用不同的芯片组,更昂贵的主板和更昂贵的RAM(例如ECC全缓冲RAM),因此你需要从一个CPU到两个CPU的巨大成本。这是很多大型网站(包括Flickr,谷歌和其他网站)使用数千个商品服务器的原因之一(尽管谷歌的服务器有些定制,包括像9V电池这样的东西,但原理是相同的)。 / p>

您的修改并没有太大改变。 “表演”是一个非常主观的概念。表现在什么?但请记住,如果您的应用程序没有足够的多线程(或多进程)来利用额外的内核,那么实际上可以通过添加更多内核来降低性能。

I / O绑定应用程序可能不会优先于其他应用程序。毕竟,它们受I / O限制而不是CPU。

对于基于计算的应用程序,它取决于计算的性质。如果你做了很多浮点运算,你可以通过使用GPU来卸载计算(例如使用Nvidia CUDA),从而获益更多。您可以从中获得巨大的性能优势。请查看GPU client for Folding@Home以获取此示例。

简而言之,您的问题并不适用于具体的答案,因为主题很复杂且信息不足。技术架构必须针对特定应用进行设计。

答案 1 :(得分:3)

嗯,重点是所有其他因素实际上并不相同。

当两个CPU插槽必须相互通信时,多CPU的主要问题是延迟和带宽。而这必须不断发生,以确保他们的本地缓存不会同步。这会导致延迟,有时可能成为代码的瓶颈。 (当然不总是这样。)

答案 2 :(得分:2)

在SPWorley写入时,更少CPU上的内核肯定更快。他的回答现在接近三年了,但趋势已经存在,我相信他的回答需要一些澄清。首先是一些历史。

在80年代早期,80286成为第一个虚拟内存可行的微处理器。并非之前没有尝试过,但是intel将虚拟内存管理集成到芯片上(片上),而不是使用片外解决方案。这导致他们的内存管理解决方案比竞争对手的内存管理解决方案快得多,因为所有内存管理(特别是虚拟到物理地址的转换)都被设计为通用处理的一部分。

记住那些笨重的P2&来自intel和早期Athlon& amp;的P3处理器来自AMD的durons,它们放在一边并装在一个大塑料包装中?其原因是能够在处理器芯片旁边安装缓存芯片,因为时间的制造过程使得将缓存装配到处理器芯片本身上是不可行的。 Voilà是一种片外处理器解决方案。由于时序限制,这些高速缓存芯片将以CPU时钟频率的一小部分(50%左右)运行。一旦制造过程陷入困境,缓存就会在芯片上移动并开始以内部时钟频率运行。

几年前,AMD将RAM内存控制器从北桥(片外)移到处理器(片上)。为什么?因为它通过消除外部寻址接线减少一半来消除通过北桥(CPU布线 - 北桥 - 布线 - RAM成为CPU布线RAM),从而使存储器操作更高效(更快)。这一变化还使得几个独立的内存控制器可以在同一个芯片上同时运行各自的RAM,从而增加了处理器的内存带宽。

为了回到澄清,我们看到了从主板和处理器芯片上移动性能关键功能的长期趋势。除了上面提到的那些,我们已经看到多个内核集成到同一个芯片上,片外L2 /片上L1高速缓存已经成为片外L3 /片上L1和L2高速缓存,现在是片上L1, L2和L3缓存。缓存变得越来越大,以至于它们占用的空间比内核本身更多。

所以,总结一下:任何时候你需要离开的东西都会急剧减速。答案是:确保尽可能地保持模具并简化任何需要去死的设计。

答案 3 :(得分:1)

在某种程度上取决于架构;但是四核CPU与4个物理上独立的CPU几乎相同(或更好),这是因为通信减少(即不必离开模具并且不会走得很远,这是一个因素)和共享资源。