X86 英特尔处理器中内存控制器和缓存之间的数据路径宽度是多少?

X86 英特尔处理器中内存控制器和缓存之间的数据路径宽度是多少?,x86,intel,cpu-architecture,X86,Intel,Cpu Architecture,据我了解,在64位系统中,内存总线是64位的。因此,内存控制器(MC)和DRAM之间的传输是64位的。由于缓存块大小为64字节,是否有一次将缓存块大小的数据从MC传输到缓存?(即数据路径宽度是缓存块大小)还是进行8次传输(每个64位,考虑到64位的数据路径宽度,与内存总线相同?通常介于两者之间。e、 g.主流Intel CPU(Skylake Xeon之前)中的非核心环总线在每个方向上都有32字节宽,因此缓存线从一个互连站到下一个互连站的突发传输需要2个周期。英特尔本可以用一个单向64字节环取代

据我了解,在64位系统中,内存总线是64位的。因此,内存控制器(MC)和DRAM之间的传输是64位的。由于缓存块大小为64字节,是否有一次将缓存块大小的数据从MC传输到缓存?(即数据路径宽度是缓存块大小)还是进行8次传输(每个64位,考虑到64位的数据路径宽度,与内存总线相同?

通常介于两者之间。e、 g.主流Intel CPU(Skylake Xeon之前)中的非核心环总线在每个方向上都有32字节宽,因此缓存线从一个互连站到下一个互连站的突发传输需要2个周期。英特尔本可以用一个单向64字节环取代双向32字节数据环(面积可能稍小),但这将显著增加所有非核心事务的最坏情况延迟,尤其是L3命中。由于最坏情况下的延迟越来越高,这种64字节的设计也无法随内核数量进行扩展。(). Intel Knights Ferry在每个方向使用一个64字节宽的环。与同一代(甚至更高版本)的处理器相比,这种大规模互连是通过更小的内核、没有专用的三级缓存和更大的芯片实现的。在较新的英特尔处理器中,每个方向的互连宽度可能为32字节或64字节。(见:)

L2-L3总线(即,连接专用二级缓存及其相关三级片的路径)的带宽比互连的带宽低,因此二级-L3总线的宽度可能更小(16字节是合理的)。Skylake中L2->L1数据缓存的路径宽64字节。一些非英特尔来源对这些路径的宽度提出了更有力的要求,但它们可能准确,也可能不准确

顺便说一句,自SDRAM/DDR1以来,内存总线一直是64位的,而在x86-64出现之前。内存总线本身在64字节的突发传输中工作


与内存总线宽度无关的是,x86,因为32位P5奔腾保证8字节(64位)对齐的访问是原子的(只有在uarch上使用x87或MMX才可能)。这一事实来自加载/存储执行端口宽度和缓存->缓存传输协议。

DDR宽度实际上是64位的,可以通过突发事务进行64字节的传输。缓存和MC(也在CPU内部)之间的链接更宽(32/64B)。我们是否确定Skylake Xeon(和/或Xeon Phi)中的网格支持每个周期64字节?有英特尔的消息来源吗?表示L2-L3总线的宽度为64B。我不确定这些信息是从哪里来的。这也不一定意味着网格的数据网络是64B宽的。根据幻灯片11,KNF有一个128字节的双向环形总线,每个方向64字节。@HadiBrais:我不打算对SKX或KNL/KNM中网格的宽度发表任何声明。我把它们从我的第一段中排除,是因为它们没有环形巴士,而不是因为我对宽度一无所知。感谢您挖掘未确认信息的链接。