캐시 일관성


각각 CPU의 캐시 데이터와 메인 공유 메모리의 데이터가 모두 일치하도록 하는 것

 

 

캐시 일관성 문제


위의 캐시 일관성이 지켜지지 않는 상황이다. CPU 캐시 데이터와 메인 메모리의 데이터 사이의 괴리 또는 멀티 프로세서에서 각각 CPU 캐시 데이터 사이의 괴리 모두 이에 포함된다.

 

 

 

 

해결 방식


소프트웨어적 해결방식과 하드웨어적 해결방식으로 나뉜다.

소프트웨어적으로는 컴파일 시(Compile time) 문제를 검출하며

하드웨어적으로는 실행 시(Run time) 문제를 검출한다.

 

 

 

소프트웨어적 해결


운영체제(OS)와 컴파일러를 사용하여 해결하는 방식이다. 코드 분석을 통해 안전하게 공유 변수를 사용할 수 있도록 주기를 설정하거나, 아예 공유 데이터 변수를 캐시에 저장하지 않도록 설정하는 방법 등이 있다. Compile Time에 문제를 검출하므로, 캐시 이용률 측면에서 다소 비효율적이라는 단점이 있다.

 

 

 

하드웨어적 해결


1. 스누피 프로토콜(snoopy protocol)

각각 CPU의 캐시들은 공유되는 캐시 데이터를 파악하고 있으며, 공유되는 캐시 데이터가 갱신 되었을 경우 이를 기반으로 갱신되지 않은 나머지 데이터를 무효화한다. 공유되는 버스 구조가 Broadcasting 및 Snooping에 유리하므로 버스 기반 다중 프로세서 시스템에 적합한 방식이다.

 

2. 디렉토리 프로토콜(directory protocol)

주기억장치의 중앙 제어기가 캐시 일관성을 관리하는 형태이다. 주기억장치의 중앙 제어기는 각각 CPU의 캐시 데이터들을 가지고 있으며, 모든 지역 캐시 제어기의 동작을 제어하고 보고받으며 캐시 일관성을 관리한다.

+ Recent posts