13

在多 CPU 的机器中,不同的 CPU 是竞争相同的内存带宽,还是独立访问 DRAM?

换句话说,如果程序的内存带宽受到限制,例如,1-CPU 8 核系统,那么迁移到 4-CPU 4*8 核机器有机会加快它(假设 CPU 和 DRAM有可比性)?

4

4 回答 4

5

您的主要问题的答案是:取决于。它取决于什么?这取决于您的设置所在的阵营,从技术上讲,有两个。

在称为共享内存多核的第一个阵营中,您的问题的答案是“是”。使用此模型,如果您愿意,具有多个内核的多个处理器通过公共总线共享内存(这是您遇到瓶颈的地方),除此之外,没有任何东西将 CPU 连接在一起。这是典型的消费级计算机所属的类别/阵营/模型。

在称为分布式内存多核的第二个阵营中,您的问题的答案是“否”。这种硬件设置方案意味着每个处理器都有自己的私有内存,但有一条总线将处理器直接连接在一起。使这种情况成为可能的协议是消息传递接口。这也意味着 CPU 组在物理上不必与它们访问的 RAM 在同一个盒子或房间中。你可能不会在家里找到这种设置。想想研究设施、实验室、大学、大中型企业等。

回答你的第二个问题。答案也取决于。这取决于,因为人们需要知道程序是否被编写为利用系统的并行执行可能性的并行性。尽管您的消费级计算机有一个或两个处理器共享一个内存总线,但如果在编写程序时考虑到并行性,那么您会注意到性能有所提高。否则,来自程序的串行指令将仅在一个内核上串行执行。

如果您深入了解多核处理的本质,以及如何通过程序访问内存,那么扩展您的头盖骨的一个很好的“网关资源”是Flynn's Taxonomy)。如果您有兴趣,只需谷歌搜索它就会带您进入兔子洞。

编辑:为了给予应得的荣誉,我强烈推荐 Gaston C. Hillar 的 Professional Parallel Programming in C#。在我短暂的职业生涯中,这本令人愉快的书对我来说是关于并行性主题的最有启发性的。它有助于澄清并行编程和多核编程以及我刚刚提到的多核处理类型之间的区别,并附有图表!

于 2013-05-06T22:53:06.063 回答
2

是的,所有 CPU 都在竞争相同的带宽。从 CPU 芯片到 RAM 只有一个硬件连接,因此所有访问都必须通过它。

可以共享或不共享不同级别的 CPU 缓存以缓解此问题。只有缓存未命中需要转到 RAM 本身。请参阅http://en.wikipedia.org/wiki/CPU_cache#Multi-core_chips

于 2013-05-06T22:04:57.910 回答
2

多个 CPU 是否竞争相同的内存带宽?

不必要。非统一内存访问多通道内存架构可导致总内存带宽高于单个 CPU 所能达到的带宽。

于 2013-05-06T23:32:29.133 回答
0

如果您使用相对较新的硬件并且您的软件的内存限制部分来自 CPU 到 CPU 的通信,那么您很有可能可以合理扩展。较旧的 x86 SMP 架构使用一个前端总线 (FSB),每个 CPU 只能使用该单个前端总线与另一个 CPU 共享数据。借助 Opteron 服务器处理器系列,CPU 内核还通过专用的 Hyper-Transport 线路单独连接到其他 CPU 内核。这导致 Opteron 服务器的扩展性比当时的 Intel 服务器好得多。但自从多年前英特尔聘请了那些为 AMD 开发 Hyper-Transport 的工程师(历史上这些工程师利用他们从 Alpha EV6 总线获得的经验)还为英特尔开发了一种可扩展的 CPU 到 CPU SMP 链接架构,称为 QPI。所以今天' ■ 英特尔服务器产品也比旧的 FSB PC 更具可扩展性。如果您在非 x86 服务器上,您可能还拥有一些可通过这种方式扩展的架构。在这种情况下,如果你有这样的软件需要内核之间的交互,那可以显着加快这些速度。

于 2013-05-07T00:31:19.343 回答