gpt4 book ai didi

memory - 缓存行如何工作?

转载 作者:IT王子 更新时间:2023-10-28 23:28:16 26 4
gpt4 key购买 nike

我知道处理器通过缓存线将数据带入缓存,例如,在我的 Atom 处理器上,无论读取的实际数据大小如何,它每次都会带入大约 64 个字节。

我的问题是:

假设您需要从内存中读取一个字节,这 64 个字节将被带入缓存?

我可以看到的两种可能性是,要么 64 字节从感兴趣的字节下方最近的 64 字节边界开始,要么 64 字节以某种预定方式分布在字节周围(例如,一半下,一半以上,或以上全部)。

这是什么?

最佳答案

如果包含您正在加载的字节或字的缓存行尚未出现在缓存中,您的 CPU 将请求从缓存行边界开始的 64 个字节(您需要的最大地址是多个64)。

现代 PC 内存模块一次传输 64 位(8 字节),in a burst of eight transfers ,因此一个命令会触发从内存中读取或写入完整的高速缓存行。 (DDR1/2/3/4 SDRAM 突发传输大小最高可配置为 64B;CPU 将选择突发传输大小以匹配其缓存线大小,但 64B 很常见)

根据经验,如果处理器无法预测内存访问(并预取),则检索过程可能需要约 90 纳秒或约 250 个时钟周期(从 CPU 知道地址到 CPU 接收数据)。

相比之下,在现代 x86 CPU 上,L1 缓存中的命中具有 3 或 4 个周期的加载使用延迟,而存储重新加载具有 4 或 5 个周期的存储转发延迟。其他架构的情况类似。

进一步阅读:Ulrich Drepper 的 What Every Programmer Should Know About Memory .软件预取建议有点过时:现代硬件预取器更智能,超线程比 P4 时代要好得多(因此预取线程通常是一种浪费)。此外,标签 wiki 有很多关于该架构的性能链接。

关于memory - 缓存行如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com