我想知道,微处理器(假设在长模式下SandyBridge架构上)如何将数据从“L1代码”切换到“L1数据”缓存,反之亦然? 可以说一个页面用于数据存储,因此它被缓存在L1缓存中。然后,在OS的执行期间,指令指针跳转(发出JMP指令)到当前在L1数据高速缓存中高速缓存的存储器位置。处理器是否将数据从L1数据迁移到L1代码缓存?对存储在L1代码缓存中的地址发出数据管理指令时的相同问题(即意味着地址变得对数据存储有利,而不是代码执行) 处理器如何处理这些问题?
我问这是因为我正在研究自修改代码,如果您有任何其他信息我可以阅读有关代码缓存的详细信息,请发布链接/参考。
答案 0 :(得分:3)
请参阅最新的intel programmer's manual,第3卷,系统编程,特别是以下部分:
我认为你不想知道并且依赖于特定CPU模型的行为,因为它会使你的代码在不同或更新的CPU上不稳定。只需遵循有关如何设计和执行自我和交叉修改代码的官方指南。
并且您不希望在运行时进行大量代码修改,因为缓存失效会导致相关的性能损失。