4.4 분산 공유 메모리와 디렉터리 기반 일관성


스누핑 프로토콜은 공유 데이터에 대한 쓰기나 캐시 미스가 발생할 때마다 모든 캐시들 사이에 통신을 필요로 한다.


장점: 캐시 상태를 추적하는 중앙 데이터 구조가 없는 것이 장점이다.

단점: 하지만 확장성 면에서 문제가 있다.


매번 브로드캐스를 해야한다면, 메모리 대여폭 면에서 문제가 발생하게 된다. 


이것에 대한 해결방법이 디렉터리 기반의 프로토콜이다.


디렉터리는 캐시되는 모든 블록의 상태를 기록한다.


디렉터리에는 다음의 내용들이 저장되어 진다.

즉, 어떤 캐시들이 이 브록의 복사본을 가지고 있고, 이 브록이 변경되었는지 등을 기록한다.


가장 간단한 디렉터리 구현은 각 메모리 블록마다 하나의 디렉터리 엔트리를 갖게 하는 것이다. 


간단한 프로토콜은 다음과 같은 상태들을 관리한다.


1) 공유(shared): 하나 이상의 프로세서가 이 블록을 캐시한다. 모든 캐시와 메모리는 최신 값을 가지고 있다.

2) 캐시 안됨: 어떤 프로세서도 이 캐시 블록의 복사본을 갖고 있지 않다.

3) 변경: 단 하나의 프로세서만 이 캐시 블럭의 복사본을 갖고 있으며 이 프로세서가 블록에 쓰기를 수행하였다. 따라서 메모리에 있는 사본은 오래된 값을 갖고 있다 




'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

Amdahl's law  (0) 2015.03.18
Purpose of memory alignment  (0) 2014.11.25
성능평가 방법  (0) 2012.11.21

+ Recent posts