박사라이팅
Cache State-Transition Diagram (MESI, MOESI) 본문
성균관대학교 조형민 교수님 "컴퓨터구조설계특론" 수업을 바탕으로 만들었습니다.
저번에 MSI에 이어서 MESI protocol에 대해 알아보도록 하겠습니다.
MESI
MESI protocol이란, MSI에 더해 E state가 추가된 protocol을 의미합니다. E는 exclusive but unmodified인데요. 처음 혼자 가지고 있는 state를 말합니다.

즉, Read miss가 나서 처음 혼자 가지고 있는 상태일 때, E state를 가집니다. 이 때는 다른 processor에 write할 intent없이 혼자 modified로 갈 수 있습니다. MSI의 큰 단점은, 나만 쓰는 data를 사용할 때, 항상 write intent를 bus transaction을 통해 다른 cache에 알려주고 invalidate를 해야한다는 점이었습니다. E를 추가하면, 자기 혼자만 가지고 있는 data는 다른 cache에 write intent를 할 필요 없이 write할 수 있게 됩니다. 즉, 훨씬 더 빠르다는 것이지요.

각 state별로 특징을 정리하자면 아래와 같습니다.
M (Modified)
- memory로 부터 다른 value가 cache에 있으며, 그 value를 오직 나 자신만 갖고 다른 processor cache에서는 가지지 않을 때.
E (Exclusive)
- memory와 같은 value이고, 그 value를 오직 나 자신만 갖고 다른 processor cache에서는 가지지 않을 때.
S (Shared)
- memory와 같은 value이고, 같은 value를 다른 processor cache에서도 가질 때
I (Invalid)
- value를 가지지 않을 때
MOESI
그럼 MESI에 이어서 MOESI에 대해서 알아보겠습니다. 딱 봐도 MESI에 O state를 추가한 것 같죠? 그럼 왜 추가한 것일까요?
MSI와 MESI의 단점 중 하나는, memory update해서 modified된 value를 가져와야 한다는 점입니다. 단순히 수정된 value를 memory에 update없이 cache에서 바로 가져오면 훨씬 빠를 텐데 말이죠. 즉, cache 간에 data를 교환하게 하기 위해 O state를 추가한 것입니다. 여기서 O는 Owned의 약자입니다.

각 state에 대해 특징을 설명하자면, M, E, S, I state는 MESI와 같고 O만 추가되었습니다. S도 약간 MESI와 다르긴 합니다.
S (Shared)
- [Owned state인 memory나 cache]와 같은 value이고, 다른 cache들이 같은 value를 가질 때
O (Owned)
- memory와 다르며, memory에 update를 반드시 해야할 때.
이와 같이 O state를 추가하여, S state인 cache들은 memory update할 필요없이 꼭 필요한 memory update만 할 수 있게 되죠.
이외에 MESIF protocol도 있습니다. Forwarding state를 추가한 것인데요. memory와 value가 같고, 요청이 들어왔을 때 provide를 해야할 때 사용됩니다. MOESIF protocol도 있으니 참고 바랍니다.
오늘 MESI와 MOESI에 대해서 알아봤습니다. cache coherence는 컴퓨터구조, SoC에서 중요하게 다루는 부분이라 잘 알면 좋을 것 같네요!
'공부 > 컴퓨터구조' 카테고리의 다른 글
| Cache State-Transition Diagram (MSI) (3) | 2024.04.03 |
|---|---|
| Cache Coherence (8) | 2024.04.03 |
| Multi-Thread (3) | 2023.12.14 |
| Out-of-Order Issue, Out-of-Order Completion (2) | 2023.12.14 |
| In-order Issue, Out-of-Order Completion (2) | 2023.12.13 |