HeadlinesBriefing HeadlinesBriefing.com

AArch64 スピンロックの実際のハードウェアにおける実装の課題

Hacker News •
×

著者は QEMU と Raspberry Pi ボードを対象とした AArch64 オペレーティングシステム カーネル floss を開発しています。実際のハードウェアでのテストにより、QEMU エミュレーションでは検出されなかった問題が明らかになりました。この投稿では、CPU コア間の相互排他のためにロード エクスクルーシブ (ldaxr) とストア エクスクルーシブ (stxr) 命令を使用したスピンロックの実装について詳しく説明します。ロックは 32 ビット ワードを使用し、0 がアンロック、1 がロックを意味します。ldaxr 命令には取得セマンティクスが含まれており、メモリの再順序付けを防止します。一方、アンロック時の stlr (ストア-リリース) はリリース セマンティクスを確保します。この実装は、コアの出力インターリーブを防ぎ、一度に 1 つのコアしか出力しないようにします。ただし、実際のハードウェアでは、ロード エクスクルーシブ操作中に QEMU がエミュレートしない例外が発生することがあります。著者はテストを通じて正しさを検証しており、基本的なスピンロックは公平性に欠け、ビジーウェイティングによるパフォーマンスが悪いことを指摘し、将来的には wfe/sev を使用した省電力待機のための作業を提案しています。

出典: Hacker News · 要約:HeadlinesBriefing