次の方法で共有


/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 以降。

関連項目

MSVC コンパイラ オプション
MSVC コンパイラ コマンド ラインの構文