x86 32/64 비트 아키텍처
정렬 된 주소 아래에 데이터 조각이 있고 두 개의 개별 CPU에서 동시에 읽기와 쓰기를 수행하지만 그 순서는 신경 쓰지 않습니다. 자물쇠와 울타리없이하는 것이 안전합니까?
특히 EAX에서 111 ... 000과 같은 경우가 아니라 다음 지침을 동시에 수행합니까?
MOV DWORD PTR [addr], 0xffffffff
MOV DWORD PTR [addr], 0
MOV EAX, DWORD PTR [addr]
어디서 addr == 4n
.
그렇지 않다면 정렬되지 않은 것은 addr
어떻습니까?
또한 64 비트로 전환하는 것은 어떻습니까?
Intel 매뉴얼, Volume 3, 8.1.1 ( "보장 된 원자 연산") :
Intel486 프로세서 (및 이후 최신 프로세서)는 다음 기본 메모리 작업이 항상 원자 적으로 수행되도록 보장합니다.
- 바이트 읽기 또는 쓰기
- 16 비트 경계에 정렬 된 단어 읽기 또는 쓰기
- 32 비트 경계에 정렬 된 더블 워드 읽기 또는 쓰기
펜티엄 프로세서 (및 이후 최신 프로세서)는 다음과 같은 추가 메모리 작업이 항상 원자 적으로 수행되도록 보장합니다.
- 64 비트 경계에 정렬 된 쿼드 워드 읽기 또는 쓰기
- 32 비트 데이터 버스에 맞는 캐시되지 않은 메모리 위치에 대한 16 비트 액세스
P6 제품군 프로세서 (및 이후 최신 프로세서)는 다음과 같은 추가 메모리 작업이 항상 원자 적으로 수행되도록 보장합니다.
- 캐시 라인에 맞는 캐시 된 메모리에 대한 정렬되지 않은 16 비트, 32 비트 및 64 비트 액세스
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다