Cache Coherence Protocol Flow (MSI, MESI)

MSI, MESI State Machine 그림에 대한 Flow 설명을 어떻게하면 쉽게 할수 있을까 2 시간이나 고민하면서 ppt 그림을 그리고 있었는데, 우연히 정말 잘 만들어진 Flow 설명 문서를 찾았습니다.
Slideshare 에 올려두었습니다.

아래 slide 자료를 보기 전에 먼저 기본적으로 알아야할 사항들을 정리해봅니다.

MSI 나 MESI, MOESI 같은 캐쉬일관성을 위한 프로토콜들을 분석하면서 항상 다음의 사항들을 염두해두어야 합니다.
이러한 고민들을 하면서 프로토콜도 발전했을 것이니까요.

  • 어떻게 하면 하위 Layer 메모리에 대한 접근횟수를 줄일 수 있을까 ?
  • 절대 틀린 값을 읽으면 안되는데…
  • 캐쉬 간 통신에서 Bus 의 Bandwidth 를 최대한 줄이는 것이 좋겠지.

또한, State Transition 을 통한 흐름을 파악하기 전에 기본적으로 알아두어야할 사항은 다음과 같습니다.

  • Data 를 주고 받거나 통신하는 단위는 Cache Line 이다.
    너 이 데이터 있니 ? 너한테 있는 그 데이터 못쓴다…와 같이 통신할 때 그 데이터라는 것이 곧 Cache Line 이라는 것입니다.
    이는 메모리에서 캐쉬로 읽어들이는 단위가 Cache Line 단위이니 어쩌면 당연한 것이겠네요.
    따라서, 모든 Cache Line 에 존재하는 Tag Bit 를 통해서 각종 비교들을 수행하게 됩니다.
  • MSI 라는 이름은 Modified, Shared, Invalid 라는 상태(State)가 합쳐져서 만들어진 이름인데, 이러한 State 들은 Cache Line 마다 State Bit 를 통해서 표현됩니다.
    즉, 모든 Cache Line 마다 이러한 State Transition 상태 값들을 유지하게 됩니다.
    하나의 L1 Cache 내에 다수의 Cache Line 이 있을 것인데, 이러한 각 Cache Line 들은 제각기 다른 상태일 수 있는겁니다.
    상태의 종류가 M, S, I, E, O, .. 와 같이 늘어날수록 필요한 State Bit 의 수도 당연히 늘겠군요.
  • Cache Coherence 를 위해서는 메시지 통신(Bus Signal)을 수행하는데, 이는 모두 공통의 Bus Interconnect 를 사용합니다.
    즉, 한놈이 무언가 요청을 Broadcast 하면 다른놈들이 Bus 를 모니터링(snoop)하다가 이러한 Signal 을 낚아채서 처리한 후 응답하는 형태로 동작합니다.
    이러한 동작들이 Atomic 하게 이루어질 뿐이지, 일반적인 네트워크 통신과 개념상 다를 것이 없습니다.

그럼 Slide 를 보시죠.

캐쉬 일관성 Msi, mesi 프로토콜 흐름 from Dongpyo Lee

You may also like...