>백엔드 개발 >C++ >최신 x86 CPU는 실제로 단일 바이트를 메모리에 원자적으로 저장할 수 없습니까?

최신 x86 CPU는 실제로 단일 바이트를 메모리에 원자적으로 저장할 수 없습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-29 08:49:10628검색

Can Modern x86 CPUs Really Not Atomically Store a Single Byte to Memory?

현대 x86 하드웨어는 단일 바이트를 메모리에 저장할 수 없습니까?

Stroustrup의 저서에서 언급한 내용은 가상 하드웨어의 잠재적인 동작을 언급합니다. 잘 정의된 메모리 모델 그는 이러한 하드웨어가 비원자 업데이트로 바이트 저장소를 구현하여 잠재적으로 이웃 바이트에 영향을 미칠 수 있다고 제안합니다.

실제 최신 하드웨어 동작

그러나 x86을 포함한 최신 하드웨어는 Stroustrup이 설명하는 방식으로 작동하지 않습니다.

  • x86의 단일 바이트 저장 하드웨어는 원자적이며 주변 바이트를 방해하지 않습니다.
  • 고성능 CPU에서는 원자 RMW 주기(읽기-수정-쓰기)로 바이트 저장소를 구현하는 것이 불필요하고 비효율적입니다.
  • 일부 비 x86 CPU는 내부적으로 원자 RMW 주기를 사용하여 바이트 저장소를 구현할 수 있지만 이는 외부에 표시되지 않습니다. 소프트웨어.

역사적 맥락

Stroustrup의 진술은 초기에 바이트 로드/저장 명령을 지원하지 않았던 초기 Alpha AXP 프로세서의 동작을 기반으로 했을 수 있습니다. . 그러나 이후 버전의 Alpha와 모든 최신 CPU는 안전하고 효율적인 바이트 저장소를 지원합니다.

하드웨어 구현

최신 CPU는 일반적으로 메모리 세그먼트를 저장하는 캐시를 사용합니다. 캐시된 시스템에서:

  • 캐시 라인 내의 모든 바이트 저장소는 원자적입니다.
  • CPU는 전체 캐시 라인을 가져와서 바이트를 수정하고 해당 라인을 메모리에 다시 씁니다.
  • 바이트 업데이트가 수행되는 동안 캐시 컨트롤러가 라인을 제어하여 다른 사람에 의한 의도하지 않은 변경을 방지합니다.

예외

최신 CPU는 원자 바이트 저장소를 제공하지만 특정 상황에서는 예외가 있을 수 있습니다.

  • 캐시할 수 없음 메모리 영역에는 동일한 보호 장치가 없을 수 있으므로 잠재적으로 비원자 바이트가 허용될 수 있습니다. 씁니다.
  • 장치에 대한 I/O 작업은 바이트 수준에서 원자적이지 않을 수 있습니다.

결론

실제로 최신 하드웨어는 원자 바이트 저장소를 지원하므로 잠재적인 하드웨어 동작에 대한 Stroustrup의 설명이 실제 시스템과 덜 관련됩니다. C 컴파일러가 제공하는 메모리 모델 보장은 스레드 안전성을 보장하기 위해 최신 하드웨어의 안정적인 동작에 의존합니다.

위 내용은 최신 x86 CPU는 실제로 단일 바이트를 메모리에 원자적으로 저장할 수 없습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.