高速缓存行大小会影响内存访问延迟吗?

问题描述 投票:1回答:1

英特尔架构长期以来一直使用64字节缓存。我很好奇,如果处理器具有32字节或16字节的高速缓存行而不是64字节高速缓存行,这会改善RAM到寄存器的数据传输延迟吗?如果是这样,多少钱?如果没有,为什么?

谢谢。

memory computer-science hardware cpu-architecture
1个回答
2
投票

传输大量数据当然会增加通信时间。但由于内存的组织方式,这种增长非常小,并且它不会影响内存以注册延迟。

内存访问操作分三步完成:

  1. 位线预充电:发送行地址,内存总线预充电(持续时间tRP)
  2. 行访问:读取内存行并将其写入内部锁存器。在此期间,发送列地址(持续时间tRCD)
  3. 列访问:在行锁存器中读取所选列并开始发送到处理器(持续时间tCL)

行访问是一项长期操作。存储器是单元元素的矩阵。为了增加内存容量,必须尽可能小地呈现单元格。当读取一排单元时,必须驱动沿着存储器列的非常容性和大的总线。电压摆幅非常低,并且有读出放大器放大器来检测小的电压变化。

完成此操作后,将在锁存器中存储完整的行,并且可以快速读取它们,并且通常以突发模式发送。

考虑到典型的DDR4内存,IO周期时间为1GHz,我们通常有tRP / tRCD / tCL = 12-15cy / 12-15cy / 10-12cy,完整时间约为40个内存周期(如果处理器频率为4GHz,这个大约是160个处理器周期)。然后,每个周期以突发模式发送两次数据,每个周期发送2x64位。因此,数据传输为64字节增加了4个周期,而32个字节只增加了2个周期。

因此将缓存行从64B减少到32B会使传输时间减少~2 / 40 = 5%

如果行地址没有改变,则不需要预充电和读取存储器行,访问时间约为15个存储器周期。在这种情况下,转移64B与32B的时间相对增加较大但仍然有限:~2 / 15~15%。

两个评估都没有考虑在内存层次中处理未命中所需的额外时间,并且实际百分比将更小。

数据可以由存储器发送“关键字优先”。如果处理器需要给定的字,则该字的地址被发送到存储器。读取行后,内存首先发送该字,然后发送缓存行中的其他字。因此,一旦接收到第一个字,高速缓存就可以为处理器请求提供服务,无论高速缓存行是什么,减少行宽对缓存延迟没有影响。因此,如果使用此功能,则内存到寄存器的时间不会改变。

在最近的处理器中,不同高速缓存级别之间的交换基于高速缓存行宽度并且首先发送关键字不会带来任何收益。

除此之外,由于空间局部性,大线路尺寸减少了强制性丢失,并且减小线路尺寸将对高速缓存未命中率产生负面影响。

最后,使用更大的缓存行增加了缓存和内存之间的数据传输速率。

大缓存行的唯一消极方面(除了小的传输时间增加)是缓存中的行数减少并且冲突未命中可能增加。但是由于现代缓存具有很大的相关性,这种影响是有限的。

© www.soinside.com 2019 - 2024. All rights reserved.