处理器是否将数据从“L1代码”切换到“L1数据”缓存?

时间:2011-10-31 00:20:03

标签: assembly operating-system x86-64 self-modifying

我想知道,微处理器(假设在长模式下SandyBridge架构上)如何将数据从“L1代码”切换到“L1数据”缓存,反之亦然? 可以说一个页面用于数据存储,因此它被缓存在L1缓存中。然后,在OS的执行期间,指令指针跳转(发出JMP指令)到当前在L1数据高速缓存中高速缓存的存储器位置。处理器是否将数据从L1数据迁移到L1代码缓存?对存储在L1代码缓存中的地址发出数据管理指令时的相同问题(即意味着地址变得对数据存储有利,而不是代码执行) 处理器如何处理这些问题?

我问这是因为我正在研究自修改代码,如果您有任何其他信息我可以阅读有关代码缓存的详细信息,请发布链接/参考。

1 个答案:

答案 0 :(得分:3)

请参阅最新的intel programmer's manual,第3卷,系统编程,特别是以下部分:

  • 8.1.3处理自我和交叉修改代码
  • 11.6自我修改代码

我认为你不想知道并且依赖于特定CPU模型的行为,因为它会使你的代码在不同或更新的CPU上不稳定。只需遵循有关如何设计和执行自我和交叉修改代码的官方指南。

并且您不希望在运行时进行大量代码修改,因为缓存失效会导致相关的性能损失。