注目★★★★★Lobsters
x86エミュレーションの重荷、ARMのTSO対応で性能差
30秒で把握
- 1FEXがARM上のx86-TSOエミュレーション性能問題を分析
- 2ARMv8.3のFEAT_LRCPCで通常ロードに近い性能を実現
- 3Apple M1はTSOモードで非アラインドアクセス低下を約5%に抑制
要約
FEXは、ARM上でx86-TSOメモリモデルをエミュレーションする際の性能問題を分析した。ARMv8.0ではx86のload/storeをload-acquire/store-releaseへ変換するため、CPUによって性能が大きく低下する。ARMv8.3必須のFEAT_LRCPCはx86エミュレーション向けのRCpcロードを追加し、多くの環境で通常のロードに近い性能を実現する。Apple SiliconはハードウェアにTSOモードを実装し、Apple M1ではアラインメント違反アクセスの性能低下を約5%のストア低下に抑えた。FEXは対応CPUでLRCPCやTSOモードを検出して切り替える。
あなたへの影響
ARM向けにx86アプリを運用する日本の開発チームは、CPUごとのFEAT_LRCPCやTSO対応を確認し、代表的な非アラインドアクセスを含むベンチマークを次スプリントで実施すべき。
推奨:x86-TSOはメモリアクセスの順序と可視性を定めるx86固有の強いメモリモデルで、ARMの弱い順序付けとは実装条件が異なる。