为什么没有与缓存行大小一样宽的数据总线?

Mik*_*e76 8 memory caching cpu-architecture cpu-cache micro-architecture

当发生高速缓存未命中时,CPU从主存储器中取出整个高速缓存行到高速缓存层次结构中.(通常在x86_64上为64个字节)

这是通过数据总线完成的,在现代64位系统上只有8字节宽.(因为字长是8字节)

编辑: "数据总线"表示在此上下文中CPU芯片和DRAM模块之间的总线.该数据总线宽度不一定与字大小相关.

根据策略,首先获取实际请求的地址,然后按顺序获取高速缓存行的其余部分.

如果有一个64字节宽的总线,它会更快,这将允许一次获取整个高速缓存行.(这将是字长的八倍)

也许可能有两种不同的数据总线宽度,一种用于标准高速缓存线提取,另一种用于外部硬件(DMA),仅适用于字大小存储器访问.

限制数据总线大小的限制是什么?

Pet*_*des 7

我认为DRAM总线宽度在AMD64之前已扩展到当前的64位。它与单词大小匹配是一个巧合。它允许在一次传输中发送地址可能不是巧合。

参见下文:高带宽内存的确使用了更宽的总线,因为对时钟的时钟频率有一定的限制,并且在某些时候使其大规模并行化确实是有利的。

如果总线宽度为64字节,这似乎会快得多,这将允许一次提取整个缓存行。

突发传输大小不必与总线宽度相关。进/出DRAM的传输确实发生在高速缓存行大小的突发中。CPU不必为每个64位发送单独的命令,只需设置整个高速缓存行的突发传输(读或写)即可。如果希望减少,它实际上必须发送abort-burst命令;没有“单字节”或“单字”传输命令。(是的,SDRAM Wiki文章仍然适用于DDR3 / DDR4。)

您是否在考虑增加总线以减少命令开销?他们不是。


高速并行总线很难设计。主板上CPU插槽和每个DRAM插槽之间的所有走线必须在小于1个时钟周期内具有相同的传播延迟。这意味着它们具有几乎相同的长度,并控制对其他走线的电感和电容,因为在足够高的频率下,传输线效应至关重要。

极宽的总线会阻止您将时钟保持在高电平,因为您无法达到相同的容差。SATA和PCIe都用高速串行总线代替了并行总线(IDE和PCI)。(PCIe使用并行的多个通道,但是每个通道是其自己的独立链接,不仅仅是并行总线的一部分)。

使用从CPU插槽到DRAM插槽的每个通道的512条数据线是完全不切实际的。典型的台式机/笔记本电脑CPU使用双通道内存控制器(因此,两个DIMM可以同时执行不同的操作),因此这将是主板上的1024条迹线以及CPU插槽上的引脚。(这是在固定数量的控制行(如RAS,CAS等)的顶部。)

非常高的时钟速度运行外部总线确实会出现问题,因此在宽度和时钟速度之间需要权衡。


有关DRAM的更多信息,请参见Ulrich Drepper的《每个程序员应该了解的内存》。关于DRAM模块,地址线和多路复用器/多路分配器的硬件设计,它的技术令人惊讶。

请注意,RDRAM(RAMBUS)使用高速16位总线,并且具有比PC-133 SDRAM更高的带宽(1600MB / s与1066MB / s)。(它的延迟时间更长,而且运行更热,并且由于某些技术和一些非技术原因在市场上失败了)。


我想这将有助于使用更宽的总线,直到单个周期即可从物理DRAM芯片读取的宽度,因此您不需要太多的缓冲(较低的延迟)。

Ulrich Drepper的论文(在上面链接)证实了这一点:

然后,基于地址线a2a3,将一列的内容提供给DRAM芯片的数据引脚。这在许多DRAM芯片上并行发生多次,以产生与数据总线宽度相对应的总位数


在CPU内部,总线更宽。Core2到IvyBridge的使用是在不同级别的缓存之间以及从执行单元到L1的128位数据路径。 Haswell将其扩展到256b(32B),在L1和L2之间具有64B路径


高带宽存储器被设计为与控制它的对象更紧密地耦合,并为每个通道使用128位总线,具有8个通道。(总带宽为128GB / s)。HBM2的速度是相同宽度的两倍。

拥有8条128b通道而不是一条1024b总线,是在拥有一条很难保持同步的极宽总线与将每个位放在单独的通道(如PCIe)上所产生的过多开销之间的权衡。如果需要鲁棒的信号和连接器,则在单独的通道上的每个位都很好,但是,当您可以更好地控制事物时(例如,当未插入内存时),您可以使用宽的快速总线。


也许会有两种不同的数据总线宽度,一种用于标准高速缓存行提取,另一种用于仅与字长存储器访问配合使用的外部硬件(DMA)。

已经是这样了。DRAM控制器集成到CPU中,因此来自SATA控制器和网卡等系统设备的通信必须通过一条总线(PCIe)从它们到CPU,再到RAM(DDR3 / DDR4)。

从CPU内部存储器体系结构到系统其余部分的桥梁称为系统代理(在没有集成存储器控制器的系统中,它基本上替代了以前主板上单独的北桥芯片)。南桥芯片组通过其提供的某些PCIe通道与之通信。

从IDF通过ARStechnica获得的Skylake系统代理图

在多套接字系统上,套接字之间也必须发生缓存一致性流量和非本地内存访问。AMD可能仍会使用超传输(64位总线)。英特尔硬件在环形总线上有一个额外的挡块,用于连接Xeon内部的内核,这种额外的连接是其他套接字的数据进出的地方。IDK物理总线的宽度。