3C6000/Sおよび3A6000シリーズで使用されているLoongson LA664 CPUコアに関する技術調査により、アトミック命令の失敗を伴うハードウェアの誤り(erratum)が明らかになりました。この問題は「更新の消失」として現れ、アトミック操作(加算など)が共有変数への変更を正しく登録できない状態を指します。これは、Debian向けの`normaliz`数学ソフトウェアのパッケージング中に初めて観察されました。並列処理ループにおいて、すべてのデータポイントが処理されたにもかかわらず、カウンタ変数が期待される値に到達せず、無限ループに陥ったことが原因です。

この画像は、Loongson LA664 CPUコアで特定された、アトミック更新の消失に関する特定のハードウェア誤りを示しています。
根本的な原因は、CPUのアトミック命令とベクトル化メモリ操作の間の特定の相互作用として特定されました。具体的には、`amadd`(アトミック加算)命令は、データバリアなしで異なる物理コア間で実行される際、少なくとも1つのスレッドがアトミック操作の間に特定の種類のメモリ読み取りを介在させると、更新が消失する可能性があります。LASX 256ビットベクトルメモリ読み取り(`xvld`)が主なトリガーとして特定されましたが、さらなるテストにより、アトミック変数のメモリアドレスと読み取り操作が特定の位置関係を共有している場合、標準的なスカラー読み取りであってもこの問題を引き起こす可能性があることが示されました。この複雑さが、初期のテスト中にこのバグが隠れた理由を説明しています。
Loongsonはこの誤りに対し、内部構成レジスタ(MCSR24)を修正するファームウェアによる修正で対応しました。この修正により、大幅なパフォーマンスの低下を伴うことなくアトミック命令が正しく動作するようになり、シングルコアのパフォーマンスは影響を受けず、マルチコアのパフォーマンスはわずかな低下にとどまります。この修正は、2026年10月1日以前のファームウェアアップデートでリリースされる予定です。今回の調査は、`glibc`におけるベクトル化メモリコピーのような現代的なハードウェアの最適化が、厳格なマルチアーキテクチャテストなしでは予測困難な方法で低レベルのアトミックプリミティブと相互作用する可能性があることを浮き彫りにしました。