/volatileMetadata
(揮発性メモリ アクセスのメタデータを生成する)
ARM64 で x64 コードを実行するときにパフォーマンスを向上させるために、揮発性メモリ アクセスのメタデータを生成します。
構文
/volatileMetadata[-]
引数
-
/volatileMetadata
をオフにします。 これにより、コードが ARM64 のエミュレーション モードで実行されると、パフォーマンスが低下する可能性があります。エミュレーターは、すべての読み込み/ストアにバリアが必要であるとペシミスティックに想定しているためです。
解説
Visual Studio 2019 16.10 以降では、x64 コードを生成するときに /volatileMetadata
が既定でオンになっています。 揮発性メモリ アドレスを識別するメタデータを生成することで、ARM64 の x64 コードのエミュレーション パフォーマンスが向上します。 エミュレーターは、このメタデータを使用して、揮発性ではないことがわかっているアクセスに対して取得/解放セマンティクスを使用しないことでパフォーマンスを向上させることができます。 このメタデータがない場合、エミュレーターは、すべてのアドレスが揮発性であり、取得セマンティクスとリリース セマンティクスを使用することを前提としています。
/volatileMetadata
の副作用の 1 つは、生成されたコードで使用npad
マクロが表示される場合です。 このマクロは、メモリ バリアに関連付けるアドレスを作成する指定された数の NOP
命令に拡張されます。 その後、そのアドレスはメタデータに記録され、取得/解放セマンティクスを使用してアクセスする必要があることを示します。
/volatileMetadata
は、x86 を対象とする場合は無視されます。
/volatileMetadata
を無効にするには、/volatileMetadata-
を使用します。
要件
Visual Studio 2019 バージョン 16.10 以降。