有没有办法知道存储在缓存中的数据是地址(即指针)还是实际值?
似乎一种可能的方法是通过软件和编译器提供提示。但我不知道如何实现这一点的细节,也不知道它的可行性。有没有人能给我一些建议,或者给我一些参考资料?
否则,是否可以通过二进制位模式来区分地址/值?这是一种值得信赖的方法吗?
非常感谢!
发布于 2014-05-15 18:26:07
CPU的缓存只缓存数据。指针是数据(该数据恰好被代码解释为地址)。任何汇编语言程序员都可能会告诉您(至少对大多数CPU而言),CPU也乐于将整数或浮点数据视为地址(类型和类型检查大多只是编译器制造的一种假象)。
现在考虑一条包含2个浮点值和2个指针数据的缓存线。CPU不可能只高速缓存包含浮点数据的高速缓存线的部分,而不高速缓存包含指针数据的高速缓存线的部分;即使CPU知道什么类型的数据在高速缓存线内的什么位置。
https://stackoverflow.com/questions/23669517
复制相似问题