캐시 일관성(Cache Coherency)은 다중 처리 장치 시스템에서 각각의 코어 또는 프로세서의 캐시가 동일한 메모리 위치에 대해 일관된 데이터를 볼 수 있도록 보장하는 메커니즘입니다. 이것은 다수의 코어가 동일한 메모리를 동시에 액세스할 때 데이터의 일관성을 유지하는 데 중요합니다.

정의: 캐시 일관성은 다중 처리 시스템에서 각각의 캐시가 공유 데이터에 대한 일관성을 유지하는 메커니즘입니다. 이는 캐시의 데이터가 항상 메모리의 실제 데이터와 동일하다는 것을 보장합니다.
목적:
- 데이터 일관성을 유지함으로써 시스템의 안정성과 신뢰성을 보장합니다.
- 캐시 일관성은 다중 코어 또는 프로세서 간의 데이터 공유를 가능하게 하며, 이를 통해 성능을 향상시킬 수 있습니다.
주요 인자 및 역할:
- 캐시 일관성 프로토콜: 캐시 일관성 프로토콜은 각 캐시가 데이터의 일관성을 유지하기 위한 규칙과 프로토콜을 정의합니다. 대표적인 프로토콜로는 MESI가 있습니다.
- 캐시 일관성 비트: 캐시 라인의 일관성 상태를 나타내는 비트로, 각각의 캐시 라인에 부가된 비트가 캐시 일관성을 유지하는 데 중요한 역할을 합니다.
평가 기준:
- 캐시 일관성의 주요 평가 기준은 데이터의 정확성과 일관성을 유지하는 데 있습니다.
- 또한 캐시 일관성 프로토콜의 병목 현상을 최소화하고 성능을 최적화하는 데도 중요합니다.
구현 방법:
- 캐시 일관성은 하드웨어 및 소프트웨어 수준에서 구현될 수 있습니다. 하드웨어 구현은 성능을 향상시킬 수 있으며, 소프트웨어 구현은 유연성을 제공할 수 있습니다.
종류:
- 캐시 일관성의 종류에는 다양한 프로토콜 및 메커니즘이 있습니다. 대표적인 예로는 MESI(Modified, Exclusive, Shared, Invalid), MOESI(Modified, Owned, Exclusive, Shared, Invalid) 등이 있습니다.
MESI와 MOESI는 캐시 일관성 프로토콜 중 가장 널리 사용되는 것으로, 다중 처리 시스템에서 캐시의 일관성을 유지하기 위해 사용됩니다. 아래에서는 각각의 프로토콜을 자세히 설명하겠습니다.
MESI (Modified, Exclusive, Shared, Invalid):
- Modified (변경된): 해당 캐시 라인은 현재 캐시에만 존재하며, 수정된 데이터를 포함하고 있습니다. 이 데이터는 다른 코어의 캐시에는 없으며, 메인 메모리의 데이터와 다를 수 있습니다.
- Exclusive (배타적): 해당 캐시 라인은 현재 캐시에만 존재하며, 메인 메모리의 데이터와 일치합니다. 다른 코어의 캐시에는 해당 데이터가 없습니다.
- Shared (공유): 해당 캐시 라인은 여러 코어의 캐시에 존재하며, 메인 메모리의 데이터와 일치합니다. 다른 코어가 동일한 데이터에 액세스할 때 캐시에 존재하는 것을 공유합니다.
- Invalid (무효): 해당 캐시 라인은 현재 유효한 데이터를 포함하고 있지 않습니다. 즉, 해당 데이터는 캐시에 존재하지 않거나 더 이상 유효하지 않습니다.

MOESI (Modified, Owned, Exclusive, Shared, Invalid):
- Modified (변경된): MESI와 동일합니다. 해당 캐시 라인은 현재 캐시에만 존재하며, 수정된 데이터를 포함하고 있습니다.
- Owned (소유): 해당 캐시 라인은 여러 코어의 캐시에 존재할 수 있지만, 수정된 데이터를 포함하고 있는 캐시는 하나뿐입니다. 이것은 해당 데이터가 수정되었음에도 불구하고, 이 캐시가 수정된 데이터를 "소유"하고 있음을 나타냅니다.
- Exclusive (배타적): MESI와 동일합니다. 해당 캐시 라인은 현재 캐시에만 존재하며, 메인 메모리의 데이터와 일치합니다.
- Shared (공유): MESI와 동일합니다. 해당 캐시 라인은 여러 코어의 캐시에 존재하며, 메인 메모리의 데이터와 일치합니다.
- Invalid (무효): MESI와 동일합니다. 해당 캐시 라인은 현재 유효한 데이터를 포함하고 있지 않습니다.

MESI와 MOESI는 다중 처리 시스템에서 캐시의 일관성을 유지하는 데 사용되는 두 가지 주요한 프로토콜입니다. 각각의 상태는 캐시 라인의 상태를 나타내며, 다른 코어가 해당 데이터에 대한 액세스를 할 때 이러한 상태가 변경됩니다. 이러한 프로토콜은 시스템의 성능과 안정성을 보장하기 위해 중요한 역할을 합니다.
캐시 일관성은 다중 처리 시스템에서 중요한 개념으로, 데이터의 일관성을 유지함으로써 시스템의 안정성과 성능을 보장합니다. 이를 위해 캐시 일관성 프로토콜과 캐시 일관성 비트 등의 메커니즘이 사용되며, 이러한 메커니즘을 통해 시스템의 동시성과 효율성을 최적화할 수 있습니다.
