snooping protocol

23
Snooping Protocol 윤윤윤

Upload: mardi

Post on 22-Feb-2016

184 views

Category:

Documents


0 download

DESCRIPTION

Snooping Protocol. 윤진훈. Snooping Protocol ?. □ 캐시 일관성 프로토콜 (cache coherence protocol) - 데이터 블록의 공유 상태를 추적 - 스누프 제어기를 이용해서 탐지 □ 쓰기 무효화 프로토콜 (write invalidation protocol) - 쓰기 수행 시 다른 복사본들을 무효로 만듬 □ 버스 감시 메커니즘 (bus watch mechanism) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Snooping Protocol

Snooping Protocol

윤진훈

Page 2: Snooping Protocol

Snooping Protocol ?□ 캐시 일관성 프로토콜 (cache coherence protocol) - 데이터 블록의 공유 상태를 추적 - 스누프 제어기를 이용해서 탐지

□ 쓰기 무효화 프로토콜 (write invalidation protocol) - 쓰기 수행 시 다른 복사본들을 무효로 만듬

□ 버스 감시 메커니즘 (bus watch mechanism) - coherence 를 유지하기 위해 버스를 감시하는 하드웨어 모듈 추가

□ 스누프 제어기 (snoop controller, bus watcher) - 다른 프로세서에 의한 memory access 를 검사하여 , 그 결과에 따라

자신의 캐시 블록의 상태를 조절 - 각 캐쉬 블록들은 상태 비트를 가지며 , 쓰기 방식과 프로토콜에 따라 틀림 .

Page 3: Snooping Protocol

Write-Through coherence proto-col

□ 프로세서가 캐시의 데이터를 수정하는 즉시 , 메인 메모리에도 갱신

□ 스누프 제어기의 동작 - main memory 에 write 를 시도하는 adress 가 자신의 캐시에 있는 지

검사하고 , 존재한다면 , 그 블록을 무효화 (invalidate) 시킨다 . - 프로세서가 무효화된 블록을 액세스하는 경우에는 cache miss 처리

□ 캐시 데이터의 상태 - 유효 (V : Valid) 상태 : 캐시의 내용 = 메모리의 내용 - 무효 (I : Invalid) 상태 : 캐시의 내용 ≠ 메모리의 내용

Page 4: Snooping Protocol

Write-Through (1)

P1

V Hi

P2

V Hi

Hi

프로세서 1 프로세서 2

메인 메모리

(1) 두 캐시가 모두 유효한 상태

Page 5: Snooping Protocol

Write-Through (2)

P1

V Bye

P2

I Hi

Bye

프로세서 1 프로세서 2

메인 메모리

(2) P1 이 Hi → Bye 로 변경 . 그에 따라 메인 메모리도 갱신되며 , P2 의

캐시

에 있는 Hi 는 무효 상태가 된다 .

V

Hi탐지

상태

변경

Hi

Page 6: Snooping Protocol

Write-Through (3)

P1

V Bye

P2

V Bye

Bye

프로세서 1 프로세서 2

메인 메모리

(3) P2 가 Hi 를 액세스하면 , cache miss 가 발생하여 , 메인

메모리로부터

Bye 가 읽혀져 오고 , 상태는 V 로 바뀐다 .

I Hi

Page 7: Snooping Protocol

Write-Back coherence protocol□ 프로세서가 캐시의 데이터를 변경해도 메인 메모리의 내용은 갱신되지 않음 . □ 스누피 제어기의 동작 - 다른 스누피 제어기들이 시스템 버스를 감시해도 변경 사실을 알 수 없음 - 변경된 캐시의 스누피 제어기가 변경 사실을 다른 스누피 제어기들에게 통보

□ 신호 - 무효화 신호 (invalidate signal) : 데이터의 변경 사실을 알려주기 위한

신호

□ MESI Protocol - 수정 (M : Modified) 상태 : 데이터가 수정 ( 변경 ) 된 상태 - 배타 (E : Exclusive) 상태 : 유일한 복사본이고 , 메인 메모리의 내용과 동일한

상태 - 공유 (S : Shared) 상태 : 데이터가 2 개 이상의 프로세서 캐시에 적재되어 있는

상태 - 무효 (I : Invalid) 상태 : 데이터가 다른 프로세서에 의해 수정되어 무효가 된

상태

Page 8: Snooping Protocol

MESI Protocol state transition diagram

: 프로세스 동작에 의한 전이 : 다른 캐시의 변화에 의한 전이

I E

SM

(1) Read miss

(2) Write

hit

(3), (4) Read miss(5) Invalidate signal

(6) Write hit

(7) Read miss

(8) Write miss

(8) Write miss

(5) Invalidate signal

(3) Read miss

(4) Cache miss

(7) Read miss

Page 9: Snooping Protocol

(1) 데이터를 처음 읽는 경우

P1

E cat

P2

cat

프로세서 1 프로세서 2

메인 메모리

(1) 읽기 실패 (read miss) : P1 이 메인 메모리로부터 cat 을 읽음 . 메인 메모리로부터 cat 을 읽어온 후 , 상태를 배타 (E) 로 변경

I E

SM

Page 10: Snooping Protocol

(2) 캐시에 있는 데이터 변경

P1

M milk

P2

cat

프로세서 1 프로세서 2

메인 메모리

(2) 쓰기 적중 (write hit) : P1 이 cat 을 milk 로 변경 . milk 로 수정한 후 , 상태를 수정 (M) 으로 변경 .

E cat

I E

SM

Page 11: Snooping Protocol

(3) 데이터가 공유되는 경우 1

P1

S cat

P2

S cat

cat

프로세서 1 프로세서 2

메인 메모리

(3) P1 이 cat 을 가진 상태에서 , P2 도 cat 을 읽는 경우 읽기 실패 (read miss) : 메인 메모리에서 읽음 . P1 의 스누프 제어기가 그 버스 동작을 확인하고 , cat 의 상태를 공유 (S) 로 변경 하고 , P2 로 공유 사실을 알리면 P2 가 cat 의 상태를 공유 (S) 로 설정

E

I E

SM

탐지

1. 공유 신호 전달

2. 공

유 읽

Page 12: Snooping Protocol

(4) 데이터가 공유되는 경우 2

P1

S milk

P2

S milk

milk

프로세서 1 프로세서 2

메인 메모리

(4) (2) 의 결과 상태에서 , P2 가 cat 에 접근하는 경우 캐시 실패 (cache miss) : 메인 메모리에서 읽음 . P1 의 스누프 제어기가 그 동작을 중단시키고 , 자신의 데이터 milk 를 P2 로 캐시 간 전송 (cache-to-cache transfer) 하며 , milk 를 메인 메모리에도 갱신 . 캐시 상태를 공유(S) 로 변경

M

cat I E

SM

탐지

1. 메모리 읽기

취소

2. 캐시간 전송

3. 메모

리 갱

Page 13: Snooping Protocol

(4) 데이터가 공유되는 경우 2

P1

S milk

P2

S milk

milk

프로세서 1 프로세서 2

메인 메모리

(4) (2) 의 결과 상태에서 , P2 가 cat 에 접근하는 경우 ( 캐시간 전송 미지원 ) 캐시 실패 (cache miss) : 메인 메모리에서 읽음 . P1 의 스누프 제어기가 그 동작을 중단시키고 , P2 로 재시도 (retry) 요구 P1 이 메인 메모리에 milk 를 갱신하면 , P2 는 milk 를 읽고 캐시 상태를 공유 (S) 로 변경

M

cat I E

SM

탐지

1. 메모리 읽기

취소

2. 재시도

3. 메모

리 갱

4. 읽

Page 14: Snooping Protocol

(5) S 상태의 데이터를 변경하는 경우

P1

I cat

P2

M milk

cat

프로세서 1 프로세서 2

메인 메모리

(5) (3) 의 결과 상태에서 , P2 가 cat 을 새로운 값으로 갱신하는 경우 무효화 신호 (invalidate signal) : P2 가 버스를 통해 신호 발송 ( 브로드캐스트 ) cat 을 가진 캐시들은 cat 의 상태를 무효 (I) 로 변경하고 , 확인 신호 전송 P2 가 배타적 소유권 획득 , P2 가 cat 을 새로운 값 milk 로 갱신하고 상태를 수정 (M) 으로 변경

S S

1. Invalidate 신호

I E

SM

cat

2. 확인 신호3. 배타적 소유권 획득

Page 15: Snooping Protocol

(6) M 상태의 데이터를 변경하는 경우

P1

I cat

P2

M mouse

cat

프로세서 1 프로세서 2

메인 메모리

(6) (5) 의 결과 상태에서 , P2 가 milk 를 mouse 로 변경하는 경우 쓰기 적중 (write hit) : 데이터만 변경되고 , 상태는 불변

I E

SM

milk

Page 16: Snooping Protocol

(7) I 상태의 데이터를 변경하는 경우

P1

M vector

P2

I mouse

cat

프로세서 1 프로세서 2

메인 메모리

(7) (6) 의 결과 상태에서 , P1 이 cat 을 수정하려는 경우 읽기 미스 (read miss) : 수정을 위한 읽기 (read with intend to modify: RWITM) P2 가 mouse 를 P1 으로 보내주고 , 데이터의 상태를 무효 (I) 로 변경 P1 은 mouse 를 vector 로 수정하고 , 상태를 수정 (M) 으로 변경

I Mcat

1. RWITM 신호

I E

SM

2. mouse 전송

Page 17: Snooping Protocol

(7) I 상태의 데이터를 변경하는 경우

P1

M vector

P2

I mouse

mouse

프로세서 1 프로세서 2

메인 메모리

(7) (6) 의 결과 상태에서 , P1 이 cat 을 수정하려는 경우 ( 캐시간 전송 미지원 ) 읽기 미스 (read miss) : 수정을 위한 읽기 (read with intend to modify: RWITM) P2 가 P1 에게 retry 요구 , 메인 메모리의 데이터 갱신 , 데이터의 상태를 무효 (I)로 변경 P1 은 메인 메모리에서 읽은 mouse 를 vector 로 수정하고 , 상태를 수정 (M)으로 변경

I Mmouse

I E

SM3.

메모

리 갱

신4. 읽기

1. RWITM 신호

2. 재시도 요구

Page 18: Snooping Protocol

(8) 데이터가 없는 프로세서가 수정하는 경우

P1

I cat

P2

M tiger

cat

프로세서 1 프로세서 2

메인 메모리

(8) (1) 의 결과에서 P2 가 cat 을 수정하는 경우 쓰기 실패 (write miss) : P2 가 RWITM 시작 P1 이 cat 을 P2 로 보내주고 , 상태를 무효 (I) 로 변경 P2 는 cat 을 tiger 로 수정하고 , 상태를 수정 (M) 으로 변경

E

1. RWITM신호

I E

SM

2. 데이터 전송

Page 19: Snooping Protocol

MESI Protocol state transition diagram

: 프로세스 동작에 의한 전이 : 다른 캐시의 변화에 의한 전이

I E

SM

(1) 처음 읽기

(2) 처음 읽은 데이터를 변경

(3) 다른 프로세서의 읽기 (같음 )(4) 다른 프로세서의 읽기 (변경 )

(5) 무효화 신호 브로드캐스트 후에 , 내용 변경

(6) 내용 변경

(7) 수정을 위한 읽기 후에 , 내용 변경

(8) 다른 프로세서의 읽기 ( 없음 )

(8) 기존 프로세서 무효화

(5) 기존 프로세서 무효화

(3) 공유 상태로 변경

(4) 캐시간 전송 , 재시도

(7) 기존 프로세서 무효화

Page 20: Snooping Protocol

MEI Protocol

□ PowerPC 755 계열에서 사용 .□ 공유 상태가 없기 때문에 2 개 이상의 프로세서에서 데이터를 읽을 경우 cost 가 크다 .

I E

SM

MESI proto-col

I E

M

MEI protocol

무효화 신호 발송

Page 21: Snooping Protocol

MSI Protocol

□ 처음 read 되어도 공유상태가 된다 . 새로운 프로세서의 write 에 대해 무효화 신호

를 날려야 한다 .

I E

SM

MESI proto-col

I

M

MSI protocol

S

무효화 신호

무효 상태로 변경

Page 22: Snooping Protocol

MOESI Protocol

I E

SM

I E

SM

MESI proto-col

MOESI proto-col

O

캐시간 전송 , 재시도메모리 갱신 안함

새로운 프로세서의 Re-quest

기존 프로세서의 Response

□ AMD Opteron, UltraSPARC□ O(owned) 상태 : 변경 상태의 캐시 블록을 다른 프로세서에서 읽을 경우 O

상 태로 변경되며 캐시간 전송 , 재시도처럼 메모리를 갱신하지 않는다 .□ 다른 프로세서의 read 요청 때마다 메모리에 쓰는 latency 를 줄임 .

Page 23: Snooping Protocol

MESIF Protocol

S S

S

새로운 프로세서의 Re-quest

기존 프로세서의 Response

F S

S

MESI proto-col

MESIF proto-col

□ Intel Nehalem□ F(forwarding) 상태 : 여러 프로세서에 공유된 캐시 블록에 접근하는

새로운 프로세서에게 대표로 전달해주는 프로세서 . 전달 후에는 F 상태를 넘겨준다 . - temporal locality : 새로 요청한 프로세서가 캐시 블록을 오래 가지고 있을 확률이

높음 - forwarding 상태를 바꿔줌으로써 Request 몰림 현상을 막는다 .