오래된 x64 프로세서에는 cmpxchg16b 명령이 얼마나 널리 보급되어 있습니까? 교환을 수행하기위한 cmpxchg16b 명령은 이전 버전의 x64

원자 128 비트 메모리 교환을 수행하기위한 cmpxchg16b 명령은 이전 버전의 x64 프로세서에서는 지원되지 않지만 현재 몇 년 동안 최신 버전의 프로세서에서 지원 된 것으로 보입니다. 이 명령이없는 구형 프로세서가 장착 된 64 비트 시스템이 발생할 가능성은 얼마나됩니까?



답변

Rev F (DDR2 메모리로 옮길 때) 이전의 초기 AMD 64 비트 프로세서를보고 있습니다. 그것을 지원하지 않은 초기 단계의 D Intel Noconas도 있지만, 이것들은 드물다고 생각합니다.


답변

특정 유형의 CPU 유병률에 관한 데이터가 없으므로 귀하의 질문에 직접 대답 할 수 없습니다. 그러나 CPU 지원 여부를 확인할 수 있습니다 CMPXCHG16B여부를 확인하여 CPUID.01h.ECX.bit13입니다 1(사용 가능) 또는 0(사용할 수 없습니다).

또한 인텔 설명서에서는이 명령어를 원자 적으로 수행하려면이 설명서를 LOCK접두사 와 결합해야 합니다.


답변

일부 Core 2 사용자 , 특히 Intel DP35DP 마더 보드가있는 Windows 8.1 출시시 알게 된 CPU 지원은 실제로 충분하지 않을 수 있습니다 . 마더 보드에서 CMPXCHG16B가 작동하지 못하게 할 수있는 것이 무엇인지 아직 확실하지 않습니다. 아마도 기능 감지 비트는 BIOS에 의해 비활성화 될 수 있습니다. Yuhong Bao의 블로그에 나와있는 내용을 요약하면 초기 코어 2 칩 (45nm 코어 2의 E0 / R0 스테핑)에 프로세서 오류가 발생하여 CPUID를 통해 기능이 잘못보고되었습니다. 내가 알 수있는 한 BIOS / 마이크로 코드 업데이트를 통해이 문제를 해결할 수있었습니다.


답변