Aarch64 原子操作真的这么敏感吗?(答:不是)

Aarch64 原子操作真的这么敏感吗?(答:不是)

💡 原文英文,约200词,阅读约需1分钟。
📝

内容提要

Guile 3.0.9的aarch64原子处理存在问题,作者尝试了两种解决方案,其中一种奇怪的解决方案竟然有效。问题与C语言的atomic_exchange等价物有关。第一个补丁需要ARM v8.1设备,第二个补丁只改变了cbnz的目标,问题消失了。作者感到困惑。

🎯

关键要点

  • Guile 3.0.9的aarch64原子处理存在问题。

  • 作者发现了两种解决方案,但其中一种解决方案很奇怪。

  • 问题与C语言的atomic_exchange等价物有关。

  • 生成的代码在某些情况下会丢失写入。

  • 第一个补丁需要ARM v8.1设备。

  • 第二个补丁仅改变了cbnz的目标,问题消失了。

  • 作者对此感到困惑。

延伸问答

Guile 3.0.9的aarch64原子处理存在哪些问题?

Guile 3.0.9的aarch64原子处理存在偶尔丢失写入的问题。

作者提出了哪些解决方案?

作者提出了两种解决方案,其中一种是用swpal替换原有代码,另一种是改变cbnz的目标。

第一个补丁需要什么设备?

第一个补丁需要ARM v8.1设备。

第二个补丁是如何解决问题的?

第二个补丁通过改变cbnz的目标,生成的新代码使问题消失。

作者对解决方案的反应是什么?

作者对此感到困惑,因为第二个补丁的效果出乎意料。

问题与C语言的哪个功能有关?

问题与C语言的atomic_exchange等价物有关。

🏷️

标签

➡️

继续阅读