개발 라이브러리 & 툴

[MPP] 메모리 일치 모델(Memory Consistency Models)

하늘흐늘 2009. 11. 19. 13:37
반응형

 이틀에 걸쳐 읽은 글은

Memory Consistency Models

라는 글입니다. 멀티프로세서 관련 프로그래밍을 요새 주의 깊게 보고 있는데 정말로 배경으로 요구하는 지식이 64bit 프로그래밍과는 수준을 달리하는 것 같습니다. 이 글은 배경지식이 되는 글로 메모리의 동기화 모델에 대하여 나와 있습니다. 멀티CPU에서의 동기화는 싱글CPU와는 다른 캐쉬간의 동기화 문제가 발생하는 관계로 이런 글은 참고로 읽어둘 필요가 있습니다. 참고로 이 글은 분산처리에서의 공유메모리에 대해서도 언급하고 있습니다. 간단히 요약하면 아래와 같으며 흥미를 느끼신다면 원문을 찾아 읽으시길 바랍니다. 원문에는 

Shared Memory Consistency Models: A Tutorial

을 읽어볼 것을 추천하고 있습니다.

Strict Consistency
캐쉬를 사용하지 않은 공유 모델인 관계로 멀티CPU의 Read와 Write 순서대로 메모리에 읽고 쓰여집니다.
 
Sequential Consistency

Strict Consistency와 비슷하나 프로그램에서 지정한 순서대로 Read와 Write 순서대로 메모리에 읽고 쓰여집니다.
 
Cache Coherence
캐쉬의 내용을 읽는 모델로 어떤 동기화도 일어나지 않는 관계로 Read와 Write의 읽고 쓰는 결과는 알 수 없습니다.
 
Do We Really Need Such a Strong Model?
동기화가 필요한 이유는 멀티CPU간 Read와 Write순서에 따라 변수 값이 변하기 때문입니다.
 
Optimizations and Consistency
싱글CPU에서의 최적화로 바뀌어진 메모리 억세스가 멀티CPU에서는 문제를 일으킬 수 있습니다.

Processor Consistency
Pipe & Filter 방식으로 CPU cycle별로 CPU의 Read와 Write가 일어납니다.
 
Synchronization Access vs Ordinary Accesses
동기화 상황에 대하여 분류되어 있습니다.
 
Weak Consistency
동기화 객체를 이용하여 Read와 Write의 일치 여부를 조절합니다.
  
Release Consistency
동기화가 풀리는 시점에서 전체 캐쉬와 메모리를 업데이트 시켜서 동기화를 구현합니다.


ps. 조금 뜬 구름 잡는 이야기 같죠? 솔직히 OS에서 배우는 동기화 관련 코드와는 또다른 이야기였기에 저두 그러 합니다. 저두 완벽하게 이해한 것으로 보이지는 않습니다. 그렇지만 몰랐던 새로운 배경지식을 얻는다는게 즐겁고 MPP를 하는데 굉장히 유용한 지식이 될 듯합나다.

참고로

Share Memory Consistency

라는 F/OSS 블로그의 포스팅도 읽을만 합니다.

반응형