cpu缓存和cpu之间的总线宽度

Jak*_*ały 3 cpu x86 cpu-architecture cpu-cache amd-processor

在此输入图像描述 我无法计算出现代 PC 中 cpu 和 cpu 缓存之间的总线宽度。我在互联网上没有找到任何可靠的东西。我所拥有的只是Zen (AMD) 微架构的框图,其中表示 L1 和 L2 缓存每个周期可以传输 32B(256b)。我猜测总线宽度是 256 条线(假设单数据速率)。但是,存在双倍数据速率传输,例如内存控制器和 DDR 内存之间。

总结:

  1. cpu和cpu缓存之间的总线宽度是256线吗?
  2. 如果是,这是否意味着从 L1 读取整个缓存行需要两个 cpu 周期?

Had*_*ais 5

此类信息可以在 Intel 和 AMD 的优化手册中找到,但通常是端口带宽,而不是宽度,因为这是大多数人关心的。

Zen微架构中的L1D缓存有16个bank和3个128位端口,其中两个可以处理加载类型请求,一个可以处理存储类型请求。因此,最大 core-L1D 带宽为每周期 128*3 位。在 Zen 2 中,端口扩展到每个 256 位/c,并且组数量减少了一半。因此,Zen 2 中的最大 core-L1D 带宽为每周期 256*3 位,但实现最大带宽的机会较低。

以 Intel 处理器的 Ice Lake 为例。L1D 缓存有 4 个端口、两个 512 位加载和两个 256 位存储。存储端口可以每两个周期处理一个 512 位存储请求,也可以每个周期处理两个 256 位存储请求,但前提是这两个存储完全包含在同一高速缓存行中并且具有相同的内存类型。在我看来,这两个存储端口实际上是作为具有双存储合并功能的单个 256 位宽存储端口来实现的。所以从核心端来看,真正的端口总数似乎是3个。