gpt4 book ai didi

memory - 判断内存位置是否在 CPU 缓存中

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

操作系统可以确定内存页是在 DRAM 中还是在交换中;例如,只需尝试访问它,如果发生页面错误,则不会。

但是,CPU 缓存是否可以实现相同的功能?

是否有任何有效的方法来判断给定的内存位置是否已加载到缓存行中,或者知道它何时加载?

最佳答案

总的来说,我认为这是不可能的。它适用于 DRAM 和页面文件,因为这是操作系统管理的资源,缓存由 CPU 本身管理。

操作系统可以对内存读取进行严格的计时循环,并尝试查看它是否以足够快的速度完成以进入缓存,或者它是否必须输出到主内存 - 这很容易出错。

在多核/多进程系统上,有 cache coherency protocols在处理器之间用于确定何时需要使彼此的缓存失效,我想您可以拥有一个自定义设备来监听操作系统将查询的此协议(protocol)。

你想做什么?如果你想强制某些东西进入内存,当前的 x86 处理器支持以非阻塞方式将内存预取到缓存中,例如在 Visual C++ 中你可以使用 _mm_prefetch获取一行到缓存中。

编辑:我自己没有这样做,所以使用风险自负。要确定用于分析的缓存未命中,您可以使用一些特定于体系结构的寄存器。 http://download.intel.com/design/processor/manuals/253669.pdf ,附录 A 给出了“性能调整事件”。这不能用于确定单个地址是否在缓存中或何时加载到缓存中,但可用于总体统计信息。我相信这就是 vTune(这个级别的出色分析器)使用的。

关于memory - 判断内存位置是否在 CPU 缓存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683023/

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