MSI 프로토콜
MSI protocol컴퓨팅에서 MSI 프로토콜(기본 캐시 일관성 프로토콜)은 멀티프로세서 시스템에서 작동합니다.다른 캐시 일관성 프로토콜과 마찬가지로 프로토콜 이름의 문자는 캐시 라인이 있을 수 있는 가능한 상태를 식별합니다.
개요
MSI 에서는, 캐시에 포함되는 각 블록은, 다음의 3개의 상태 중 하나를 가질 수 있습니다.
- 수정 완료:캐시에서 블록이 수정되었습니다.캐시 내의 데이터는 백업 저장소(예: 메모리)와 일치하지 않습니다.블록이 "M" 상태인 캐시는 블록이 제거될 때 블록을 백업 저장소에 쓸 책임이 있습니다.
- 공유: 이 블록은 수정되지 않았으며 하나 이상의 캐시에 읽기 전용 상태로 존재합니다.캐시는 데이터를 백업 저장소에 쓰지 않고 제거할 수 있습니다.
- 무효:이 블록은 현재 캐시에 없거나 버스 요청에 의해 비활성화되었으며, 이 캐시에 블록을 저장하려면 [1]메모리 또는 다른 캐시에서 가져와야 합니다.
이러한 일관성 상태는 캐시와 백업스토어 간의 통신을 통해 유지됩니다.블록이 읽히거나 쓰이거나 블록에 대해 읽기 또는 쓰기를 실행하는 다른 캐시를 학습할 때 캐시는 서로 다른 책임을 집니다.
읽기 요청이 "M" 또는 "S" 상태의 블록에 대한 캐시에 도착하면 캐시가 데이터를 제공합니다.블록이 캐시에 없는 경우('I' 상태), 다른 캐시에서 블록이 'M' 상태에 있지 않은지 확인해야 합니다.캐싱 아키텍처에 따라 처리 방법이 다릅니다.예를 들어 버스 아키텍처는 읽기 요구가 모든 캐시에 브로드캐스트되는 스누핑을 실행하는 경우가 많습니다.다른 아키텍처에는 특정 캐시 블록의 복사본을 마지막으로 가진 캐시를 아는 에이전트(디렉토리)가 있는 캐시 디렉토리가 포함됩니다.다른 캐시의 블록이 "M" 상태인 경우 데이터를 백업 저장소에 다시 쓰고 "S" 또는 "I" 상태로 전환해야 합니다."M" 행이 다시 기록되면 캐시는 백업 저장소 또는 데이터가 "S" 상태인 다른 캐시에서 블록을 가져옵니다.그런 다음 캐시는 요청자에게 데이터를 제공할 수 있습니다.데이터를 제공한 후 캐시 블록은 "S" 상태가 됩니다.
쓰기 요청이 "M" 상태의 블록에 대한 캐시에 도착하면 캐시는 데이터를 로컬로 수정합니다.블록이 "S" 상태인 경우 캐시는 블록을 포함할 수 있는 다른 모든 캐시에 블록을 제거해야 함을 통지해야 합니다.이 통지는 위에서 설명한 바와 같이 버스 스누핑 또는 디렉토리를 통해 이루어집니다.그런 다음 데이터를 로컬로 수정할 수 있습니다.블록이 "I" 상태일 경우 캐시는 "S" 또는 "M" 상태의 블록을 포함할 수 있는 다른 모든 캐시에 블록을 제거해야 함을 통지해야 합니다.블록이 "M" 상태의 다른 캐시에 있는 경우 해당 캐시는 데이터를 백업 저장소에 쓰거나 요청 캐시에 제공해야 합니다.이 시점에서 캐시에 아직 로컬로 블록이 없는 경우, 블록은 캐시에서 변경되기 전에 백업스토어에서 읽혀집니다.데이터가 수정된 후 캐시 블록은 "M" 상태가 됩니다.
특정 캐시 쌍에 대해 특정 캐시 라인에서 허용되는 상태는 다음과 같습니다.
M | S | I | |
---|---|---|---|
M | ![]() | ![]() | ![]() |
S | ![]() | ![]() | ![]() |
I | ![]() | ![]() | ![]() |
스테이트 머신
캐시에 대한 프로세서 요구는 다음과 같습니다.
- PrRd: 캐시 블록을 읽기 위한 프로세서 요청입니다.
- PrWr: 캐시 블록을 쓰기 위한 프로세서 요청입니다.
또, 버스측의 요구도 있습니다.여기에는 다음이 포함됩니다.
- BusRd: 프로세서의 캐시에서 읽기 오류가 발생하면 BusRd 요청을 버스로 전송하고 캐시 블록을 수신할 것으로 예상합니다.
- BusRdX: 프로세서의 캐시에서 쓰기 오류가 발생하면 BusRdX 요청을 버스로 전송합니다. BusRdX 요청은 캐시 블록을 반환하고 다른 프로세서의 캐시에서 블록을 비활성화합니다.
- 버스업:프로세서의 캐시에 기입 히트가 발생하면 버스 상에서 BusUpgr 요청을 전송하여 다른 프로세서의 캐시에 있는 블록을 비활성화합니다.
- 플래시: 캐시 블록 전체가 메모리에 다시 [2]쓰이고 있음을 나타내는 요청입니다.
상태 전환:
- 무효:
- PrRd에서는 BusRd가 발행되고 상태가 Shared로 변경됩니다.
- PrWr에서는 BusRdX가 발행되고 상태가 Modified로 변경됩니다.
- BusRd, BusRdX 또는 BusUpgr에서는 비활성 블록이 무효인 채로 있습니다.
- 공유:
- PrRd에서는 블록은 Shared 상태로 유지됩니다.
- PrWr에서는 BusUpgr이 발행되고 상태가 Modified로 변경됩니다.
- BusRd의 경우 블록은 Shared 상태로 유지됩니다.
- BusRdX 또는 BusUpgr에서는 블록이 Invalid로 전환됩니다.
- 수정 완료:
- PrRd 또는 PrWr의 경우 블록은 Modified 상태로 유지됩니다.
- BusRd에서는 캐시 블록이 버스에 플러시되고 상태가 Shared로 변경됩니다.
- BusRdX에서는 캐시 블록이 버스에 플러시되고 상태가 [2]Invalid로 변경됩니다.
- BusUpgr을 사용할 수 없습니다.특정 프로세서에서 Modified 상태가 되면 캐시 블록은 Invalid 상태가 됩니다.이는 Modified 상태가 none 또는 1개의 프로세서에서만 허용되기 때문입니다.이것에 의해, 버스상에서 BusUpgr 가 발생할 가능성이 실질적으로 없어집니다.이 때문에, 상기와 같이, PrWr 를 발행하는 프로세서의 어느 쪽인가로, 이 블록이 Shared 상태가 될 필요가 있습니다.
사용.
이 프로토콜은 SGI 4D [3]기계에 사용되는 프로토콜과 유사합니다.
변종
최신 시스템에서는 MSI 프로토콜의 변형을 사용하여 일관성 인터커넥트의 트래픽 양을 줄입니다.MESI 프로토콜은 "Exclusive" 상태를 추가하여 하나의 캐시에만 존재하는 블록의 쓰기로 인해 발생하는 트래픽을 줄입니다.MOSI 프로토콜은 "소유됨" 상태를 추가하여 다른 캐시에 의해 읽혀지는 블록의 라이트백으로 인해 발생하는 트래픽을 줄입니다.MOESHI 프로토콜은 이 두 가지를 모두 수행합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Fuchsen, R. (2010-10-01). "How to address certification for multi-core based IMA platforms: Current status and potential solutions". Digital Avionics Systems Conference (DASC), 2010 IEEE/AIAA 29th: 5.E.3–1-5.E.3-11. doi:10.1109/DASC.2010.5655461. ISBN 978-1-4244-6616-0.
- ^ a b Solihin, Yan (2016). Fundamentals of Parallel Multicore Architecture. Chapman & Hall/CRC Computational Science Series.
- ^ Suh, Taeweon (December 2006). "INTEGRATION AND EVALUATION OF CACHE COHERENCE PROTOCOLS FOR MULTIPROCESSOR SOCS" (PDF).