x86에서 로드 및 저장의 원자성
x86 아키텍처는 최대 데이터 경로 크기까지 정렬된 로드 및 저장에 대한 원자성을 보장합니다. 코어, 메모리, I/O 버스 사이. 즉, 단일 작업은 개별적으로 발생하며 이를 관찰하는 다른 작업에서는 해당 작업이 완전히 발생했거나 전혀 발생하지 않은 것으로 간주됩니다.
내부적으로 CPU는 정렬된 작업에 대해 "무료" 원자성을 구현할 수 있습니다. 데이터 전송은 충분히 넓은 데이터 버스나 단일 메시지를 통해 발생합니다. 더 넓은 액세스 또는 정렬되지 않은 작업의 경우 작업을 더 작은 청크로 분할하고 더 복잡한 작업을 수행해야 할 수도 있습니다.
원자적 작업 및 캐시
원자적 작업은 전적으로 발생할 수 있습니다. 작업이 캐시 라인 경계를 넘지 않는 한 캐시에 저장됩니다. 이는 캐시 수정만으로 원자성을 보장할 수 있음을 의미합니다.
원자적 읽기-수정-쓰기
원자적 읽기-수정-쓰기(RMW) 작업은 더 어렵습니다. 구현합니다. CPU는 캐시 라인을 수정된 상태로 유지하고 작업이 진행되는 동안 캐시 일관성 메시지를 무시하여 다른 코어에 원자적으로 표시되도록 할 수 있습니다.
정렬되지 않은 잠긴 작업
정렬되지 않은 잠긴 작업에는 작업 중 다른 액세스를 방지하기 위해 버스 잠금을 사용하는 등 더 복잡한 하드웨어 개입이 필요할 수 있습니다.
위 내용은 x86 로드 및 저장은 얼마나 원자적이며 어떤 요소가 원자성에 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!