Aru*_* Kp 4 x86 intel cpu-architecture
据我了解,在 64 位系统中,内存总线是 64 位的。所以内存控制器 (MC) 和 DRAM 之间的传输是 64 位的。由于缓存块大小为 64 字节,是否有一次从 MC 到缓存的缓存块大小的数据传输?(即数据路径宽度是缓存块大小)或它是否进行了 8 次传输(每个 64 位,考虑 64 位数据路径宽度,与内存总线相同?)
通常介于两者之间。例如,主流英特尔 CPU(在 Skylake Xeon 之前)中的非核心环形总线在每个方向上都是 32字节宽,因此高速缓存线从一个互连站点到下一个互连站点的突发传输需要 2 个周期。英特尔本可以用单向 64 字节环代替双向 32 字节数据环(面积可能会小一些),但这会显着增加所有非核心事务的最坏情况延迟,尤其是 L3 命中。随着最坏情况延迟变得更高,这种 64 字节设计也无法随着内核数量进行扩展。(为什么没有与缓存线大小一样宽的数据总线?)。Intel Knights Ferry 使用每个方向 64 字节宽的环。与同代(甚至更新)处理器相比,这种大规模互连是通过拥有更小的内核、没有专用的 L3 缓存和更大的芯片来实现的。较新的 Intel 处理器中的互连宽度在每个方向上可能是 32 字节或 64 字节。(参见:SKX中网格的数据宽度是多少?)
L2-L3 总线(即,将私有 L2 缓存与其关联的 L3 切片连接的路径)的带宽低于互连的带宽,因此 L2-L3 总线可以具有更小的宽度(16 字节是合理的)。Skylake 中L2 -> L1 数据缓存的路径为64 字节宽。一些非英特尔来源对这些路径的宽度提出了更有力的主张,但它们可能准确,也可能不准确。
顺便说一句,在 x86-64 出现之前,自 SDRAM / DDR1 以来,内存总线一直是 64 位。内存总线本身在 64 字节的突发传输中工作。
与内存总线宽度无关,x86 因为 32 位 P5 Pentium 保证 8 字节(64 位)对齐访问是原子的(只能在该 uarch 上使用 x87 或 MMX)。这个事实来自加载/存储执行端口宽度和缓存->缓存传输协议。
归档时间: |
|
查看次数: |
641 次 |
最近记录: |