有没有办法找出我请求的内存是否被缓存?如果是这样,知道该内存块存储在哪个级别的缓存中将会很有帮助。
我曾经想过当指针被缓存时其地址可能会改变,但似乎行不通。
编辑:这是为大学项目而做的,我可以访问多台具有不同操作系统的机器,因此几乎任何解决方案都会有所帮助。
有没有办法找出我请求的内存是否被缓存?如果是这样,知道该内存块存储在哪个级别的缓存中将会很有帮助。
我曾经想过当指针被缓存时其地址可能会改变,但似乎行不通。
编辑:这是为大学项目而做的,我可以访问多台具有不同操作系统的机器,因此几乎任何解决方案都会有所帮助。
如果您已经请求了任何内存块,那么肯定已经被缓存了。
当请求任何内存地址时,首先会在第一级缓存中进行检查,如果失败,则会在第二级缓存中进行检查,以此类推。
一旦找到该地址所属的块,整个块将被放置在缓存的第一级中,根据局部性原理,以避免对相同块的额外搜索(例如,如果您访问相同的地址或连续的地址),这在几乎每个程序中都很常见(例如,用于循环、索引等)。