메모리 오더링

메모리 오더링(memory ordering) 또는 메모리 순서는 CPU가 컴퓨터 메모리에 액세스하는 순서를 나타낸다. 이 용어는 컴파일 타임 동안 컴파일러에 의해 생성된 메모리 순서 또는 런타임 중에 CPU에 의해 생성된 메모리 순서를 나타낼 수 있다.

최신 마이크로프로세서에서 메모리 오더링은 메모리 작업 순서를 변경하는 CPU의 기능을 특징으로 한다. 이는 일종의 비순차적 실행이다. 메모리 재정렬을 사용하면 캐시 및 메모리 뱅크와 같은 다양한 유형의 메모리의 버스 대역폭을 완전히 활용할 수 있다.

대부분의 최신 단일 프로세서에서 메모리 작업은 프로그램 코드에 지정된 순서대로 실행되지 않는다. 단일 스레드 프로그램에서는 모든 작업이 지정된 순서대로 실행된 것처럼 보이며 모든 잘못된 실행은 프로그래머에게 숨겨진다. 그러나 다중 스레드 환경에서는(또는 메모리 버스를 통해 다른 하드웨어와 인터페이스할 때) 이로 인해 문제를 방지하기 위해 메모리 배리어를 사용할 수 있다.

 관련 문헌 
 Computer Architecture — A quantitative approach. 4th edition. J Hennessy, D Patterson, 2007. Chapter 4.6
 Sarita V. Adve, Kourosh Gharachorloo, Shared Memory Consistency Models: A Tutorial
 Intel 64 Architecture Memory Ordering White Paper
 Memory ordering in Modern Microprocessors part 1
 Memory ordering in Modern Microprocessors part 2
  - Google Tech Talk

분류:컴퓨터 구조
분류:컴퓨터 메모리
분류:일관성 모델
분류:컴파일러 구성
분류:프로그래밍 언어 설계
분류:런타임 시스템
분류:병행성