アトミック128ビットメモリ交換を行うためのcmpxchg16b命令は、古いバージョンのx64プロセッサではサポートされていませんが、これは数年前から新しいバージョンのプロセッサでサポートされているようです。この命令のない古いプロセッサを搭載した64ビットマシンに遭遇する可能性はどのくらいありますか?
アトミック128ビットメモリ交換を行うためのcmpxchg16b命令は、古いバージョンのx64プロセッサではサポートされていませんが、これは数年前から新しいバージョンのプロセッサでサポートされているようです。この命令のない古いプロセッサを搭載した64ビットマシンに遭遇する可能性はどのくらいありますか?
回答:
特定の種類のCPUの普及率に関するデータがないので、直接お答えすることはできません。ただし、が(利用可能)か(利用不可)CMPXCHG16B
かを確認することで、CPUがサポートしているかどうかを確認できます。CPUID.01h.ECX.bit13
1
0
また、Intelのマニュアルでは、この命令をアトミックに実行するには、それをLOCK
プレフィックスと組み合わせる必要があることを示唆しています。
一部のCore 2ユーザー、特にIntel DP35DPマザーボードを搭載しているユーザーがWindows 8.1の発売を知ったため、CPUでのサポートは実際には十分ではない可能性があります。マザーボードの何がCMPXCHG16Bの動作を妨げるのかはまだわかりません。機能検出ビットは、BIOSによって無効にされている可能性があります。Yuhong Baoのブログがこれについて述べていることを要約すると、初期のCore 2チップ(45nm Core 2のE0 / R0ステッピング)にプロセッサエラッタがあり、CPUIDを介して機能が誤って報告されていました。私が知る限り、BIOS /マイクロコードの更新を介してこれを回避することが可能でした。