모에시 프로토콜

MOESI protocol

(자세한 설명은 캐시 일관성 프로토콜(예)참조하십시오.)

컴퓨팅에서 MOESHI는 다른 프로토콜에서 일반적으로 사용되는 모든 가능한 상태를 포함하는 전체 캐시 일관성 프로토콜입니다.4개의 일반적인 MESI 프로토콜 상태 외에 수정 및 공유되는 데이터를 나타내는 다섯 번째 "소유" 상태가 있습니다.이렇게 하면 변경된 데이터를 공유하기 전에 메인 메모리에 다시 쓸 필요가 없습니다.데이터는 최종적으로 다시 쓰여야 하지만, 쓰기는 연기될 수 있습니다.

이를 가능하게 하기 위해서는 데이터를 캐시에서 캐시로 직접 전송할 수 있어야 하며, 따라서 변경된 상태의 데이터를 가진 캐시는 데이터를 메모리에 전송하지 않고 다른 판독기에 공급할 수 있어야 한다.

AMD64 Architecture Programmer's Manual Vol.2 '시스템 프로그래밍'[1]에서 설명한 바와 같이 각 캐시 라인은 다음 5가지 상태 중 하나입니다.

수정된
이 캐시에는 캐시 라인의 유효한 복사본만 있으며 해당 복사본은 변경되었습니다.
소유.
이 캐시는 캐시 라인의 유효한 복사본을 가진 여러 캐시 중 하나이지만 변경할 배타적 권한이 있습니다. 다른 캐시는 캐시 라인을 읽지만 쓸 수 없습니다.이 캐시는 캐시 라인의 데이터를 변경할 때 해당 변경을 회선을 공유하는 다른 모든 캐시로 브로드캐스트해야 합니다.Owned 상태의 도입으로 데이터를 더티하게 공유할 수 있습니다.즉, 변경된 캐시 블록을 메인 메모리를 업데이트하지 않고 다양한 캐시로 이동할 수 있습니다.캐시 행은 모든 공유 복사본을 비활성화한 후 수정됨 상태로 변경하거나 수정 내용을 메인 메모리에 다시 기록하여 공유됨 상태로 변경할 수 있습니다.소유한 캐시 라인은 스눕 요청에 데이터로 응답해야 합니다.
독점적인
이 캐시에는 회선의 카피만 있습니다만, 회선은 클린(변경 없음)되어 있습니다.
공유했습니다.
이 행은 시스템의 여러 복사본 중 하나입니다.이 캐시에는 복사본을 수정할 권한이 없습니다(다른 캐시가 "소유" 상태일 수 있음).시스템의 다른 프로세서도 Shared 상태의 데이터 복사본을 유지할 수 있습니다.MESI 프로토콜과 달리 공유 캐시 라인은 메모리에 대해 더러울 수 있습니다.그렇다면 일부 캐시는 소유됨 상태의 복사본을 가지고 있으며 이 캐시는 결국 메인 메모리를 업데이트합니다.회선을 소유 상태로 유지하는 캐시가 없는 경우 메모리 복사는 최신 상태입니다.캐시 행은 쓸 수 없지만 모든 공유 복사본을 비활성화한 후 Exclusive 또는 Modified 상태로 변경될 수 있습니다.(캐시 라인이 이전에 Owned였던 경우 비활성화 응답은 이를 나타내며 상태는 Modified가 되기 때문에 최종적으로 데이터를 메모리에 다시 쓸 의무는 없어지지 않습니다).또한 언제든지 폐기(Invalid 상태로 변경)할 수 있습니다.공유 캐시 라인은 스눕 요구에 데이터를 사용하여 응답하지 않을 수 있습니다.
무효한
이 블록은 유효하지 않습니다.모든 액세스를 충족시키려면 이 블록을 가져와야 합니다.

특정 캐시 쌍에 대해 특정 캐시 라인에서 허용되는 상태는 다음과 같습니다.

M O E S I
M Red XN Red XN Red XN Red XN Green tickY
O Red XN Red XN Red XN Green tickY Green tickY
E Red XN Red XN Red XN Red XN Green tickY
S Red XN Green tickY Red XN Green tickY Green tickY
I Green tickY Green tickY Green tickY Green tickY Green tickY

(보통 주(州)가 나열되는 순서는 "MOESHI"라는 머리글자를 발음할 수 있도록 하기 위해서만 사용됩니다.)

보다 단순한 MESI 프로토콜의 보다 정교한 버전인 이 프로토콜은 (확장 MESI는 아니지만 캐시 일관성을 참조) 다른 프로세서가 캐시 라인을 읽으려고 할 때 메인 메모리에 더티 캐시 라인을 다시 쓸 필요가 없습니다.대신에, 「소유」상태에서는, 프로세서가 다른 프로세서에 직접 변경된 데이터를 제공할 수 있습니다.이것은, 2개의 CPU간의 통신 지연과 대역폭이 메인 메모리보다 큰폭으로 좋은 경우에 도움이 됩니다.예를 들어 코어당 L2 캐시가 있는 멀티코어 CPU가 있습니다.

MOESHI는 캐시에서 더러운 캐시 라인을 빠르게 공유할 수 있지만 캐시에서 깨끗한 라인을 빠르게 공유할 수는 없습니다.캐시 라인이 메모리와 공유 스테이트에 관해 깨끗한 경우 해당 캐시 라인에 대한 스눕 요구는 캐시가 아닌 메모리에서 채워집니다.

프로세서가 소유 캐시 라인에 쓰기를 원할 경우 해당 캐시 라인을 공유하는 다른 프로세서에 통지해야 합니다.구현에 따라서는 단순히 복사본을 무효화하도록 지시하거나(자체 복사본을 수정됨 상태로 이동), 또는 새 콘텐츠로 복사본을 업데이트하도록 지시할 수 있습니다(자체 복사본을 소유됨 상태로 유지).

「 」를 참조해 주세요.

레퍼런스

  1. ^ "AMD64 Architecture Programmer's Manual Vol 2 'System Programming'" (PDF). Archived from the original (PDF) on June 19, 2017. Retrieved August 28, 2015.