> 백엔드 개발 > C++ > x86은 명시적인 펜스 없이 릴리스-획득 의미 체계를 어떻게 달성합니까?

x86은 명시적인 펜스 없이 릴리스-획득 의미 체계를 어떻게 달성합니까?

Linda Hamilton
풀어 주다: 2024-12-07 14:39:13
원래의
565명이 탐색했습니다.

How Does x86 Achieve Release-Acquire Semantics Without Explicit Fences?

x86 메모리 모델 및 릴리스-획득 의미 체계

MOV를 사용한 memory_order_release 원자 저장소 구현에 관한 이전 문의에 대한 후속 조치 x86 명령과 관련하여 펜스와 같은 추가 동기화 메커니즘 없이 x86에서 릴리스 및 획득이 어떻게 달성되는지에 대한 질문이 제기되었습니다. 잠금.

단일 프로세서 메모리 순서

인텔의 시스템 개발 매뉴얼 3A권 8장에는 단일 프로세서 시스템에서 로드 및 쓰기에 특정 순서가 있다고 명시되어 있습니다. 보장:

  • 읽기가 다른 항목으로 재정렬되지 않습니다. 읽기.
  • 쓰기는 이전 읽기로 다시 정렬되지 않습니다.
  • 메모리에 쓰기는 특정 상황을 제외하고 다른 쓰기로 다시 정렬되지 않습니다.

다중 -프로세서 메모리 주문

단, 멀티프로세서 부분은 문서에는 로드가 어떻게 적용되는지 명시적으로 언급되어 있지 않습니다. 초점은 다음과 같습니다.

  • 코어 내에서 개별 프로세서 순서 규칙을 유지합니다.
  • 모든 프로세서에서 동일한 순서로 쓰기를 준수합니다.
  • 다른 프로세서.
  • 인과관계에 따른 메모리 순서(예: 전이적 가시성 존중).
  • 매장을 수행하는 프로세서가 아닌 다른 프로세서의 매장 주문 가시성의 일관성.

MOV를 사용한 획득 및 릴리스

단일 프로세서 메모리 순서 원칙을 이해하는 것이 중요합니다. 매뉴얼에 따르면 캐시 일관성 공유 메모리에 액세스할 때 다중 프로세서 시스템에도 동일한 원칙이 적용됩니다. 즉, 재정렬은 각 CPU 코어 내에서 로컬로만 발생합니다.

저장소가 전체적으로 표시되면 모든 코어에 동시에 표시되므로 모든 코어가 일관된 순서로 쓰기를 관찰할 수 있습니다. 이것이 순차적 일관성을 설정하기 위해 x86의 mfence와 같은 로컬 장벽만 필요한 이유입니다.

메모리의 일관된 공유 뷰

x86 아키텍처는 일관된 공유 뷰를 유지합니다. 일관된 캐시를 통한 메모리 보기. 다중 처리 메커니즘에 대한 Intel의 정의는 모든 프로세서가 동일한 데이터에 액세스할 수 있도록 하기 위해 메모리 일관성과 캐시 일관성의 중요성을 강조합니다.

추가 자료

  • https://preshing.com/20120913/acquire-and-release-semantics/
  • https://preshing.com/20 120930/weak-vs-strong-memory-models/
  • https://www.cl.cam.ac.uk/~pes20/papers/x86-tso-memory-model.pdf

위 내용은 x86은 명시적인 펜스 없이 릴리스-획득 의미 체계를 어떻게 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿