gpt4 book ai didi

c++ - LUT 等的 L1/L2 缓存行为是什么?

转载 作者:太空狗 更新时间:2023-10-29 21:07:51 28 4
gpt4 key购买 nike

假设 LUT 为 512KB 的 64 位 double 类型。一般来说,CPU如何缓存L1或L2中的结构体?

例如:我访问中间元素,它会尝试缓存整个 LUT 还是其中的一部分 - 比如说中间元素然后是 n 个后续元素?

CPU 使用什么样的算法来确定它在二级缓存中保存的内容?是否遵循一定的前瞻策略

注意:我假设是 x86,但我有兴趣了解其他架构如何工作,POWER、SPARC 等。

最佳答案

这取决于您用于 LUT(查找表?)的数据结构

缓存的最佳状态是内存中连续放置的东西(例如数组或 std::vectors),而不是分散放置。

简单来说,当您访问一个内存位置时,一 block RAM(一个“缓存行”在 x86 上相当于 64 字节)被加载到缓存中,可能会驱逐一些以前缓存的数据。

缓存一般有几级,形成一个层次结构。随着每个级别的增加,访问时间会增加,但容量也会增加。

是的,有前瞻性,它受到相当简单的算法和无法跨越页面边界的限制(在 x86 上,内存页面的大小通常为 4KB。)

我建议你阅读What Every Programmer Should Know About Memory .它有很多关于这个主题的重要信息。

关于c++ - LUT 等的 L1/L2 缓存行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340514/

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