不同套接字上的CPU如何通信?

Jac*_*kWM 7 networking multicore motherboard cpu-architecture

我正在调整我的并行Java程序的性能.我对建筑效果感到好奇.

给定一台带有两个CPU插槽的机器,每个都带有一个四核Intel Xeon CPU,然后:

  • 两个CPU如何通信,它们通信的速度有多快?
  • 同一芯片上的两个内核通信的速度有多快?
  • 在通信或内存访问方面,同一芯片上的四个内核是否相同?

amd*_*mdn 8

如何将线程调度到核心以获得接近最佳的内存性能取决于对内存的访问模式,并且通常不值得麻烦.如果您的程序是Java程序,那么您可能无法获得接近最佳性能所需的控制级别.

现代CPU集成了内存控制器,现代多插槽系统具有分布式内存.这就是所谓的

非统一内存访问(NUMA)

在现代多插槽英特尔处理器中,套接字之间的通信是通过QPI完成的

QuickPath互连(QPI)

QPI是英特尔架构,用于指定其工作原理.AMD相当于HyperTransport.您可以在此处了解有关各种体系结构的更多信息:

系统架构

对级别1数据高速缓存中未命中的内存的访问可能由二级数据高速缓存(在同一个套接字中)提供服务,或者可能由英特尔称之为"最后一级高速缓存(LLC)"的服务提供服务.具有该内存地址的内存控制器的socket.在另一个插槽中使用LLC可能需要几十个处理器周期,但仍然比访问DRAM(超过一百个处理器周期)快得多.


osg*_*sgx 5

1)两个CPU如何通信,它们的通信速度有多快?

大多数时候,它们通过内存或最近的共享内存层次结构进行通信。(SMP 和 NUMA 上的系统内存都被视为共享级别;即使在 NUMA 中,它也是通过另一个芯片的内存控制器访问的。这只是非统一 = 访问速度较慢)

2)同一芯片上的两个内核的通信速度有多快?

同一芯片上的核心通常共享 L2 或 L3 缓存。不同芯片上的内核通过内存或使用缓存一致性协议进行缓存间交互进行通信。

因此,在情况 1(不同芯片)的情况下,CPU 之间传递的内存速度(带宽)将接近普通内存读/写。而在情况 2(同一芯片)中,这个速度可以更大,达到缓存读/写速度。

在情况 1 中,通信延迟将是数百个 CPU 时钟周期,而在情况 2 中,通信延迟将是几十个。

3)同一芯片上的四个内核在通信或内存访问方面是否等效?

同一芯片的所有四个核心通常与 RAM 的距离相等。这取决于芯片架构和实现;对于一些较旧的英特尔,例如,多核芯片实际上是封装在单个封装中的两个芯片。