하이퍼 스레딩은 경계가 정렬 된 경우에도 32 비트 int (32 비트 프로세서에서)가 아닌 원자를 읽고 쓸 수 있다고 읽었습니다. 하이퍼 쓰레딩이 어떻게 영향을 미치는지 설명 할 수 있습니까?하이퍼 스레딩은 32 비트 프로세서에서 32 비트 int 읽기/쓰기의 원 자성에 영향을 줍니까?
답변
사실이라면 특정 모델이나 스테핑에만 해당되는 끔찍한 CPU 버그 일 것입니다. 32 비트 읽기 및 쓰기는 원자 적이며 x86 플랫폼의 속성에 기본적이며 Windows, Linux 및 많은 응용 프로그램 소프트웨어에 의존합니다.
하이퍼 스레딩이없는 단일 코어 CPU에서 하이퍼 스레딩이있는 단일 물리적 코어 CPU로 전환하는 경우를 생각해 볼 수 있습니다. 하이퍼 스레딩 기능이없는 단일 코어 x86 CPU에서 정렬 된 32 비트 변수에 대한 읽기 - 수정 - 쓰기 작업을 수행하는 단일 명령 (예 : 증분)은 잠금 접두사가 없어도 원자 적입니다. 하이퍼 스레딩을 사용하는 CPU는 두 개의 물리적 코어가있는 CPU와 비슷하게 작동하므로 읽기 - 수정 - 쓰기 작업 (그 외 교환은 제외)이 잠금 접두사.
소프트웨어의 대다수의 CPU에서 발생할 수있는 핵심 사항은 여러 가지 핵심이 있으므로 관련성이 없습니다. 따라서 정렬 된 32 비트 값에 대한 단일 명령어 읽기 - 수정 - 쓰기 연산조차도 고정되어 있지 않으면 원자 적이되지 않습니다. (접두사 없이도 잠겨 있기 때문에 Exchange가 예외입니다.)
멀티 CPU 시스템에서도 정렬 된 읽기 또는 쓰기는 항상 원자 적입니다. 원자가 아닌 것은 (아마도 이것은 들었을 것입니다 - 또는 적어도 들었어야만합니다) 증가와 같은 읽기 - 수정 - 쓰기 명령어 또는 메모리 타겟을 추가합니다. 그것들은 심지어 HT 시스템에서도 원 자성이 아니지만 잠긴 상태가 아닐지라도 단일 논리 CPU가있는 시스템에서는 원자 적입니다 (우연히 보장되는 것이 아니라 우연히).
더 자세히 설명하는 참고 자료가 있으십니까? – DuckMaestro
- 1. KEY_WOW64_64KEY는 32 비트 Windows에 영향을 줍니까?
- 2. 32 비트/64 비트 OS?
- 3. 32 비트 메모리 및 32 비트 프로세서에서 CPU가 단일 바이트 메모리에 액세스하는 방법
- 4. 16 비트 이미지에서 32 비트
- 5. 32 비트 64 비트 호환
- 6. 64 비트 컴퓨터에서 32 비트 DLL 사용
- 7. 32 비트 머신에서 long long int
- 8. Java에서 부호없는 int 32 비트 사용?
- 9. C#의 32 비트 * 32 비트 데이터 문제
- 10. 32 비트 서버 및 32/64 비트 클라이언트가있는 서브 버전
- 11. JavaFX는 32 비트 Windows에서 작동합니까? (또는 32 비트 JVM)?
- 12. 32 비트 컴퓨터
- 13. 32 비트 ApiKey/AppId?
- 14. 샤드 크기 (32 비트)?
- 15. Windows에서 32 비트 오디오?
- 16. mfc100u.dll의 32 비트 버전?
- 17. 32 비트 모드에서 열기
- 18. microsoft.rtc.collaboration 32 비트
- 19. 32 비트 CPU에서 Int64 구현
- 20. MFC 비트 시프트가 32 비트 이상
- 21. 64 비트 Linux 및 64 비트 프로세서에서 32 비트 어셈블리 코드 실행하기 : 이상 현상을 설명하십시오.
- 22. 포트란 : 32 비트/64 비트 성능 이식성
- 23. 64 비트 OS에서 32 비트 JVM이있는 JNA
- 24. MySQL 32 비트 또는 64 비트 - Apache 32 비트 Windows 64 비트?
- 25. 32 비트 그레이 스케일 BufferedImage?
- 26. 32 비트 윈도우 아래의 64 비트 레지스터
- 27. 32 비트 데이터베이스의 64 비트 버전 만들기
- 28. 32 비트 및 64 비트 ASP.NET 배포
- 29. 64 비트 우분투에서 32 비트 어셈블러 컴파일
- 30. Office의 32 비트 DLL 64 비트
정확하게 이해하고 있는지 잘 모르겠습니다. 나는 읽기가 원자 적이라고 믿는다. (단어 단위로 정렬 된 4 바이트는 한 번에 읽는다.) 그러나 실제로 읽혀지는 것에 대해 메모리 모델은 놀라움을 줄 수있다. –
링크 또는 그렇지 않습니다. 우리는 "어딘가에서 읽은"모든 미친 소문에 대해 논박 할 수 없습니다. (아마도 잘못 읽었을 것입니다.) – cHao
단순한 산술 연산이 한마디로 원자 단위로 수행 될 수 없다면, 나는 다소 흥미로운 영향을 미칠 것입니다. – Corbin