Memory 缓存线大小是否影响内存访问延迟?
英特尔体系结构已经有64字节缓存很长一段时间了。我很好奇,如果一个处理器没有64字节的缓存线,而是有32字节或16字节的缓存线,这会改善RAM来注册数据传输延迟吗?如果是,多少钱?若否,原因为何Memory 缓存线大小是否影响内存访问延迟?,memory,computer-science,hardware,cpu-architecture,Memory,Computer Science,Hardware,Cpu Architecture,英特尔体系结构已经有64字节缓存很长一段时间了。我很好奇,如果一个处理器没有64字节的缓存线,而是有32字节或16字节的缓存线,这会改善RAM来注册数据传输延迟吗?如果是,多少钱?若否,原因为何 谢谢。传输大量数据当然会增加通信时间。但是,由于内存的组织方式,增加的幅度非常小,而且确实如此。注册延迟不会影响内存 内存访问操作分为三个步骤: 位线预充电:发送行地址并对内存的内部总线预充电(持续时间tRP) 行访问:内存的内部行被读写到内部锁存器。在此期间,发送列地址(持续时间tRCD) 列访问:所
谢谢。传输大量数据当然会增加通信时间。但是,由于内存的组织方式,增加的幅度非常小,而且确实如此。注册延迟不会影响内存 内存访问操作分为三个步骤:
大型缓存线的唯一负面影响(除了传输时间的小幅度增加)是缓存中的缓存线数量减少,冲突未命中率可能增加。但是,由于现代缓存具有很大的关联性,这种效果是有限的。将传输时间减少5%,但这并不是总的缓存未命中延迟:您将为CPU留出时间来确定这是三级缓存未命中,将请求从内存层次结构向下发送到内存控制器并再次备份。Re:early restart=在关键字到达时恢复执行,关键字优先:这在内部总线比缓存线窄得多的CPU中非常有用。但可能在现代Intel CPU上(Haswell和后来的L2 L1d缓存的总线为64字节宽),可能没有必要先使用关键字。整条生产线以相同的周期到达。BeeOnRope和我不久前讨论过这个问题,但我在谷歌上找不到/我们的结论是,即使除了一个完整的线路总线,硬件预取等可能意味着在一个现代高端无序执行CPU中通常没有办法首先执行CW。您也可以在同一行上有多个未完成的未命中,而“关键”未命中的可能是地址已准备就绪的未命中。因此,对于许多高端CPU来说,可能不值得这么复杂,因为一旦从DRAM最终到达内存控制器,整条线路只需要几个内部周期就可以通过内部总线发送。(对于整个内存子系统来说,延迟*带宽乘积很高。)所有给定的时间显然都是近似值。关于缓存未命中的额外时间,您是对的,实际延迟可能会增加40个处理器周期(即10个内存周期),但几乎不可能获得关于这些计时的精确信息。这并没有改变总体思路,对大缓存线的影响很小。关于关键字问题,所有内部传输都是线宽的,很可能不再使用。即使在Skylake(客户端)上,也显示核心之间的环总线只有32字节宽,因此L3L2传输需要2个周期才能发送一条线。是的,缓存未命中的负载使用延迟主要由DRAM延迟决定,但是~42个核心时钟并非完全不重要。在许多核心Xeon上更糟糕,在到达内存控制器之前,环总线上的跳数更多。(可测量的延迟更差,单线程带宽也更差。)不过编辑得不错。