很多年前,我曾写过一篇关于自修改代码同步缓存的必要性,以及如何使用 __clear_cache 这样的函数来实现同步缓存的文章。最近,我又介绍了实际的实现方法。然而,这些文章忽略了一个重要的考虑因素:如果您生成的代码将(或可能)由不同的 CPU 内核执行,会发生什么情况?
脱离单线程执行环境会增加复杂性,而且有许多可能的应用,其约束条件和目标也各不相同。
在一个极端,执行完全同步是可以接受的。这是最容易证明正确性的方法,Arm ARM 列出了合适的代码序列[1],但它要求执行线程明确配合同步过程,而这并不总是可取的。
作者:Jacob Bramley
文章来源:https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/caches-self-modifying-code-working-with-threads
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区 Arm 技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。