Visual Studio 2022 version 17.14、Arm64アトミック操作効率化の新スイッチ/forceInterlockedFunctions導入
スポンサーリンク
記事の要約
- Visual Studio 2022 version 17.14で/forceInterlockedFunctionsスイッチが導入された
- Arm64アーキテクチャにおけるアトミック操作の効率化を実現する
- Armv8.0ではデフォルトで有効、Armv8.1+では無効
スポンサーリンク
Visual Studio 2022 version 17.14の新機能/forceInterlockedFunctionsスイッチ
Microsoftは2025年5月13日、Visual Studio 2022 version 17.14において、Arm64アーキテクチャ向けの新しいコンパイラスイッチ/forceInterlockedFunctionsを導入した。このスイッチは、CPUのサポートに基づいてArmv8.1+ Large System Extension (LSE)アトミック命令を選択するアウトオブラインアトミックの生成とリンクを行うのだ。
Armv8.0では、このスイッチはデフォルトで有効になっている。これは、Armv8.0のインターロック型組み込み関数が、フォワードプログレスを保証しない排他的命令(LoadExcl/StoreExcl)を使用するため、パフォーマンスの問題を引き起こす可能性があるためだ。Armv8.1+では、このスイッチはデフォルトで無効になっている。
このスイッチを使用することで、_InterlockedAdd64などのインターロック型組み込み関数の性能が向上し、livelockの問題を回避できるようになる。具体的には、ldaxrとstlxr命令がbl _InterlockedAdd64命令に置き換えられるのだ。
Arm64ECバージョンでは、このオプションはデフォルトで有効になっている。Arm64とx64のメモリモデルの違いに対処するために、アウトライン化が役立つため、Arm64ECではこのオプションを無効にすることは推奨されない。
/forceInterlockedFunctionsスイッチの影響を受けるインターロック型組み込み関数
操作 | 8 | 16 | 32 | 64 | 128 | ポインタ |
---|---|---|---|---|---|---|
Add | None | None | Full | Full | None | None |
And | Full | Full | Full | Full | None | None |
CompareExchange | Full | Full | Full | Full | Full | Full |
Decrement | None | Full | Full | Full | None | None |
Exchange | Full | Full | Full | Full | None | Full |
ExchangeAdd | Full | Full | Full | Full | None | None |
Increment | None | Full | Full | Full | None | None |
Or | Full | Full | Full | Full | None | None |
Xor | Full | Full | Full | Full | None | None |
bittestandset | None | None | Full | Full | None | None |
bittestandreset | None | None | Full | Full | None | None |
スポンサーリンク
Arm64アトミック命令とLSE
このスイッチは、Arm64アーキテクチャにおけるアトミック操作の効率化に焦点を当てている。特に、Armv8.1+ Large System Extension (LSE)アトミック命令の利用が重要だ。
- LSE命令は、従来の命令よりも高速で効率的なアトミック操作を実現する
- LSE命令を使用することで、パフォーマンスの向上とlivelockの発生率の低減が期待できる
- Armv8.0とArmv8.1+ではアトミック命令の実装が異なるため、このスイッチによる挙動の違いが生じる
LSEの利用は、マルチスレッドプログラミングにおいて重要な役割を果たす。より高速で信頼性の高いアトミック操作は、並列処理の効率向上に大きく貢献するのだ。
Visual Studio 2022 version 17.14 /forceInterlockedFunctionsスイッチに関する考察
Visual Studio 2022 version 17.14で導入された/forceInterlockedFunctionsスイッチは、Arm64アーキテクチャにおけるアトミック操作のパフォーマンス向上に大きく貢献するだろう。特に、Armv8.0におけるlivelock問題の軽減は大きなメリットだ。しかし、LSE命令への依存性が高まるため、LSEをサポートしない古いCPUではパフォーマンスが低下する可能性もある。
今後、LSEのサポート状況や、このスイッチによるパフォーマンスへの影響を継続的に監視する必要がある。また、このスイッチの挙動に関するドキュメントの充実も重要となるだろう。開発者にとって、明確で分かりやすい情報提供は、スムーズな開発プロセスに不可欠だ。
将来的には、より高度なアトミック操作や、異なるアーキテクチャへの対応も期待される。クロスプラットフォーム開発における互換性とパフォーマンスの両立は、常に課題であり続けるだろう。Microsoftには、開発者にとって使いやすい環境を提供し続けてほしい。
参考サイト
- ^ Microsoft Dev Blogs. 「Introducing the /forceInterlockedFunctions switch for ARM64 - C++ Team Blog」. https://devblogs.microsoft.com/cppblog/introducing-the-forceinterlockedfunctions-switch-for-arm64/, (参照 25-05-15). 3715
- Microsoft. https://www.microsoft.com/ja-jp
※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。
- MozillaがFirefoxとThunderbirdのメモリ安全性の脆弱性CVE-2025-4092を修正
- Netgear EX6200の深刻な脆弱性CVE-2025-4148が公開、リモート攻撃への対策が必要
- OpenHarmony v5.0.3以前の脆弱性CVE-2025-27132公開、ローカル攻撃者による任意コード実行の可能性
- OpenHarmony v4.1.0~v5.0.3のNULLポインタデリファレンス脆弱性CVE-2025-27248に関する情報公開
- Qualcomm、Snapdragon製品の境界外書き込み脆弱性CVE-2025-21462を公開、複数製品に影響
- Nozomi NetworksがRT-Labs P-Netの脆弱性CVE-2025-32401を公開、ヒープベースのバッファオーバーフローに対処せよ
- RT-Labs P-Net 1.0.1以前の脆弱性CVE-2025-32404がNozomi Networksにより公開、メモリ破損の危険性
- RT-Labs P-Net 1.0.1以前の脆弱性CVE-2025-32397が公開、ヒープベースのバッファオーバーフローによるクラッシュリスク
- Tenda DAP-1520の深刻な脆弱性CVE-2025-4355が公開、リモート攻撃の可能性
- TOTOLINK N150RTの深刻な脆弱性CVE-2025-3993が公開、バッファオーバーフローによるリモート攻撃が可能に
スポンサーリンク