캐시 일관성
멀티프로세서 설계 시 엔지니어는 캐시 일관성을 보장하는 데 상당한 주의를 기울입니다. 캐시 일관성은 보장되지만 캐시 일관성은 성능을 감소시킵니다.
해결하려는 문제점을 이해해야 합니다.
각 프로세서에 메모리 여러 부분의 상태를 반영하는 캐시가 있는 경우 두 개 이상의 캐시에 동일한 행의 사본이 있을 수 있습니다. 주어진 행에 두 개 이상의 잠금 가능한 데이터 항목이 있을 수도 있습니다. 두 개의 스레드가 해당 데이터 항목에 대해 적절히 직렬화된 변경을 수행하면 두 개의 캐시에 서로 다른 올바르지 않은 버전의 메모리 행이 포함될 수 있습니다. 다시 말해서 메모리 특정 영역에 있는 내용이 서로 다른 두 가지 버전으로 시스템에 포함되어 있으므로 시스템의 상태가 더는 일관되지 않습니다.
캐시 일관성 문제점의 해결 방법에는 일반적으로 행을 수정할 때 중복 행 중 하나를 제외한 모든 행을 무효화하는 방법이 포함됩니다. 하드웨어에서는 소프트웨어 개입 없이 탐색 논리를 사용해 무효화하지만 캐시 행이 무효화된 프로세서에서는 이에 따른 지연으로 인해 다음에 해당 행을 처리할 때 캐시가 누락됩니다.
탐색은 캐시 일관성 문제점을 해결하는 데 사용되는 논리입니다. 프로세서의 탐색 논리는 해당 캐시에 있는 단어가 수정될 때마다 버스를 통해 메시지를 브로드캐스트합니다. 또한 탐색 논리는 버스를 탐색해 기타 프로세서에서 생성된 이와 같은 메시지가 있는지 찾습니다.
프로세서가 자신의 캐시에 있는 주소의 값을 다른 프로세서에서 변경했음을 발견하는 경우 탐색 논리가 캐시에서 해당 항목을 무효화합니다. 이를 교차 무효화라고 합니다. 교차 무효화는 프로세서에 캐시의 값이 유효하지 않으므로 다른 위치(메모리 또는 기타 캐시)에서 올바른 값을 찾도록 알립니다. 교차 무효화가 수행되면 캐시 누락이 증가하고 탐색 프로토콜로 인해 버스 트래픽이 늘어나므로 캐시 일관성 문제점을 해결하려고 하면 모든 SMP의 성능과 확장성이 감소합니다.