我想知道,微处理器(比如说在长模式下的 SandyBridge 架构上)如何将数据从“L1 代码”切换到“L1 数据”缓存,反之亦然?假设一个页面用于数据存储,因此它被缓存在 L1 缓存中。然后,在 OS 执行过程中,指令指针跳转(发出 JMP 指令)到当前缓存在 L1 数据缓存中的内存位置。处理器是否将数据从 L1 数据迁移到 L1 代码缓存?当数据管理指令在存储在 L1 代码缓存中的地址上发出时,同样的问题(即意味着该地址变得适合数据存储,而不是代码执行) 处理器如何处理这些问题?
我问这个是因为我正在研究自我修改代码,如果您有任何其他信息可以阅读有关代码缓存的详细信息,请发布链接/参考。