원자 128 비트 메모리 교환을 수행하기위한 cmpxchg16b 명령은 이전 버전의 x64 프로세서에서는 지원되지 않지만 현재 몇 년 동안 최신 버전의 프로세서에서 지원 된 것으로 보입니다. 이 명령이없는 구형 프로세서가 장착 된 64 비트 시스템이 발생할 가능성은 얼마나됩니까?
원자 128 비트 메모리 교환을 수행하기위한 cmpxchg16b 명령은 이전 버전의 x64 프로세서에서는 지원되지 않지만 현재 몇 년 동안 최신 버전의 프로세서에서 지원 된 것으로 보입니다. 이 명령이없는 구형 프로세서가 장착 된 64 비트 시스템이 발생할 가능성은 얼마나됩니까?
답변:
특정 유형의 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 / 마이크로 코드 업데이트를 통해이 문제를 해결할 수있었습니다.