2014-07-17 5 views
1

MESI 프로토콜에 대한 질문이 있습니다.캐시 일치의 MESI 프로토콜

I1 : 부하 $의 S1 [A] I2 : 부하 $ s2와, [B]

(1) MESI 캐시 일관성 프로토콜을 구현하는 단일 프로세서 시스템에서 실행되는 다음 코드를 고려 I3 : 추가 $ S1, $ S2, $ S3 I4 : 저장소 $의 S3에서, [C] I5 : 서브 $의 S3에서, 1 $의 S4 I6 : 저장소 $의 S3, [A]

가정 쓰기 스루 캐시 정책. 단일 프로세서에서 두 개의 다른 캐시 블록 (처음에는 비어 있음)에 메모리 블록 A, B 및 C가로드 된 경우 (필요에 따라) 다음 표를 완료하여 A, B, C가 들어있는 블록의 캐시 상태를 식별하십시오 명령이 실행됩니다. 그것

내 대답은 :

다음 RTL

I1: R1 <-[6] 
I2: R2 <-[4] 
I3: R3 <- R1 + R2 
I4: [6]<- R3 
I5: R4 <- R4 - 1 
I6: [4]<- R4 

에서

Step/State    A     B    C 
I1      E     I    I 
I2      E     E    I 
I3      E     E    I 
I4      I     I    E 
I5      I     I    E 
I6      E     I    I 

(2) 쓰기를 통해 캐시 정책을 가정합니다. 메모리 블록 4, 6은 하나의 프로세서에 두 개의 서로 다른 캐시 블록 (처음에 비어)에로드하는 경우

내 대답은

Step/state   Block 4    Block 6 
Initial     I      I 
I1      I      E 
I2      E      E 
I3      E      E 
I4      I      E(write miss, AOW) 
I5      I      E 
I6      E(write miss, AOW)  I 

내 대답은 수정하십시오이다? 대단히 감사드립니다.

+0

왜 블록 A와 B를 무효화합니까? – Leeor

답변

0

첫 번째 질문에 대한 대답은 쓰기 정책과 계층에 둘 이상의 캐시 수준이 있는지 여부에 따라 다릅니다. write-allocate 또는 No-write-allocate를 사용하고 있습니까? 그리고 당신은 write-back 인 L2를 가지고 있다고 가정하는 것이 합리적입니까?

NO-write-allocate라고 가정하는 경우 저장소 (I4)는 캐시를 작성하고 행을 요청하지 않으므로 Invalid로 유지됩니다.

쓰기 할당 정책을 사용한다고 가정하면 캐시 라인 C는 M 상태 (적어도 캐시 레벨 중 하나 이상, LLC에 있음)에서 요청됩니다. 따라서 여기에 대한 대답은 쓰기 정책뿐만 아니라 캐시의 수에 따라 달라집니다.

그러나 I4는 A 또는 B를 무효로해서는 안되므로 둘 다 독점 모드로 유지됩니다. 그들이 무효화되는 유일한 방법은 다른 프로세서가 그들에게 편지를 쓰거나 갈등이있는 경우입니다. 메모리 위치 A, B 및 C가 캐시 라인에 어떻게 매핑되는지는 분명하지 않습니다. 1 대 1이고 캐시에 충돌이없는 경우 A와 B는 Exclusive Mode로 유지됩니다. 충돌이 발생하면 대체 정책에 따라 결정해야합니다.

두 번째 질문에 대한 대답은 캐시의 수와 LLC가 후기 쓰기인지 여부에 달려 있습니다. I4가 블록 6에 기록 중일 때 이미 캐시에 있습니다. 즉,이 캐시와 하위 레벨 캐시가 모두 M으로 표시됩니다 (하위 레벨 캐시가 후기 입이라고 가정). 동시에 블록 4는 무효화되지 않습니다.

I6이 블록 4에 쓸 때 똑같은 일이 발생합니다. 블록은이 캐시와 하위 레벨 캐시에 기록됩니다. 하위 수준 캐시는 M으로 표시됩니다 (낮은 수준의 캐시가 write-back이라고 가정 할 때).

이러한 모든 가정을 명확히하면 정확한 다이어그램으로 그릴 수 있습니다.

희망이 도움이됩니다.