오래된 x64 프로세서에는 cmpxchg16b 명령이 얼마나 널리 보급되어 있습니까?


8

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


12
가장 중요한 고객은 중요한 작업 서버 중 하나에 중요한 작업 서버 중 하나를 가지고있어 크리스마스 이브에서만 실행되지만 테스트 환경에서는 절대 그렇지 않습니다.

7
나는 이것이 수퍼 유저에게 이전되어야한다고 생각하지 않는다. 그것은 답을 아는 사람들이이 질문을 보게 될 것입니다.
Christopher Barber

답변:


6

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


4

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

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


예, CPU 결과를 확인하는 방법을 알고 있습니다. 문제는 지원되지 않는 경우 수행 할 작업입니다. 실제로 그 사건을 결코 보지 않는다면 누락 된 지시 사항을 해결하는 데 시간을 낭비하지 않을 것입니다.
Christopher Barber

@Christopher Barber-486 개 프로세서 이후로 CPUID가 지원되었습니다. 또한 모든 64 비트 가능 x86 프로세서가 CPUID를 지원할 것입니다.

2
@PhiS : Christopher가 cmpxchg16b에 대한 지원 부족에 대해 이야기하고 있다고 확신합니다. 경우 수행 할 누락
Bahbar

3

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.