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

Sev*_*Sev 8 performance multithreading multicore

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

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

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

要么

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

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

编辑:

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

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

cle*_*tus 12

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

CPU在CPU上有几个(通常2-3个)级别的缓存.一些现代CPU在芯片上也有一个内存控制器.这可以大大提高核心之间交换内存的速度.CPU之间的内存I/O必须使用外部总线,后者往往速度较慢.

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

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

更多内核占用更少的空间,占用更少的空间,更少的功耗和更低的成本(除非您使用真正低功耗的CPU),无论是在每个核心方面还是其他硬件(例如主板)的成本.

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

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

I/O绑定应用程序可能不会优先于其他应用程序.毕竟,它们受I/O而不是CPU的约束.

对于基于计算的应用程序,它取决于计算的性质.如果您正在进行大量浮点运算,那么使用GPU卸载计算(例如使用Nvidia CUDA)可能会带来更多好处.您可以从中获得巨大的性能优势.看看Folding @ HomeGPU客户端就是一个例子.

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

  • Sev,我想你可能不明白你的问题简单的答案是"它取决于",因为有很多因素要考虑,而且cletus在初步尝试时做得很好. (3认同)