제 4 장 . 단일 - 버스 다중프로세서 시스템

73
제 4 제 . 제제 - 제제 제제제제제제 제제제 4.1 제제제 제제 4.2 제제제 제제 제제 4.3 제제 제제 4.4 제제 제제제 제제 제제

Upload: agatha

Post on 23-Jan-2016

95 views

Category:

Documents


2 download

DESCRIPTION

제 4 장 . 단일 - 버스 다중프로세서 시스템. 4.1 버스의 조직 4.2 버스의 기본 동작 4.3 버스 중재 4.4 캐쉬 일관성 유지 방법. 4.1 버스의 조직. 데이터 버스 (data bus) 시스템 요소들 사이에 데이터가 전송될 때 사용되는 선들의 집합 양방향 전송 선의 수 = 한번에 전송되는 데이터 비트의 수 주소 버스 (address bus) 프로세서가 기억장치와 읽기 / 쓰기 동작을 할 때 , 해당 기억장치를 지정하기 위한 주소를 전송하는 선들의 집합 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 제 4 장 .  단일 - 버스 다중프로세서 시스템

제 4 장 . 단일 - 버스 다중프로세서 시스템

4.1 버스의 조직

4.2 버스의 기본 동작

4.3 버스 중재

4.4 캐쉬 일관성 유지 방법

Page 2: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-2

4.1 버스의 조직

데이터 버스 (data bus)

시스템 요소들 사이에 데이터가 전송될 때 사용되는 선들의 집합

양방향 전송

선의 수 = 한번에 전송되는 데이터 비트의 수

주소 버스 (address bus)

프로세서가 기억장치와 읽기 / 쓰기 동작을 할 때 , 해당 기억장치를

지정하기 위한 주소를 전송하는 선들의 집합

단방향 전송 ( 프로세서 기억장치 )

선의 수 = 주소 지정할 수 있는 기억장치의 최대 용량

제어 버스 (control bus)

기억장치 , 입출력장치 , 버스 등을 제어하기 위한 선들의 집합

Page 3: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-3

버스를 이용한 다중프로세서시스템

Page 4: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-4

제어 버스

기억장치 및 입출력장치와의 데이터 교환

기억장치 쓰기 (memory write), 기억장치 읽기 (memory read)

입출력 쓰기 (I/O write), 입출력 읽기 (I/O read)

전송 확인 (transfer acknowledge)

버스 중재 (bus arbitration)

버스 요구 (bus request), 버스 승인 (bus grant), 버스 사용중 (bus busy)

인터럽트 메커니즘

인터럽트 요구 (interrupt request)

인터럽트 인식 (interrupt acknowledge)

그 외 : 버스 클럭 (bus clock), 리셋 (reset)

Page 5: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-5

버스의 속도 ( 대역폭 )

bus speed, bus bandwidth

버스의 클럭의 주기와 데이터 버스의 폭에 의하여 결정

PCI 버스 (33 MHz, 32 bit)

버스 클럭의 주기 = 1 / (33 * 106) = 30 ns

버스의 대역폭 = 4 byte / (30 * 10-9) = 133 Mbytes/sec

FSB(front Side Bus)

보통 CPU 의 내부 클럭 속도 , 즉 기억장치와의 데이터 교환 속도를

의미

QDR(Quad Data Rate) : 100 MHz 400 MHz

AGP 는 66 MHz, PCI 는 33 MHz

Page 6: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-6

4.2 버스의 기본 동작

쓰기 동작 (write operation)

① 버스 마스터가 버스 사용권을 획득한 후 ,

② 버스를 통하여 주소와 데이터를 전송

읽기 동작 (write operation)

① 버스 마스터가 버스 사용권을 획득한 후 ,

② 버스를 통하여 주소와 제어 신호를 전송하고 , 데이터가

전송되어 올 때까지 대기

동기식 버스 (synchronous bus) : 버스 동작들이 버스 클럭에

기준을 두고 발생 중대형시스템에서 사용

비동기식 버스 (asynchronous bus) : 버스 클럭 없이 , 관련된 버스

동작들의 발생 여부에 따라 동작 소형시스템에서 사용

Page 7: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-7

버스의 기본 동작 ( 계속 )

기억장치 읽기 동작의 시간 흐름도

Page 8: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-8

4.3 버스 중재

버스 경합 (bus contention) : 한 개의 버스를 공유하는 다중프로세서 시스템에서 여러 개의 버스 마스터들이 동시에 버스 사용을 요구하는 경우에 발생

버스 중재 (bus arbitration) : 버스 경합이 발생한 경우에 어떤 기준에 따라 버스 마스터들 중에서 한 개씩만 선택하여 순서대로 버스를 사용할 수 있게 해주는 동작

버스 중재기 (bus arbiter) : 버스 중재를 수행하는 하드웨어 모듈

기근 (starvation) : 특정 버스 마스터가 오랫동안 버스를 사용하지 못하는 현상

Page 9: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-9

제어 신호들의 연결구조에 따른 버스중재 방식

병렬 중재 방식 (parallel arbitration scheme)

버스 마스터와 같은 수의 버스 요구선 및 승인 신호선들이 필요

각 버스 마스터가 독립적인 버스 요구 신호선을 가지며 , 중재 회로로 입력

버스 승인 신호가 각 버스 마스터에 대하여 별도로 발생

직렬 중재 방식 (serial arbitration scheme)

버스 요구선 및 승인 신호선이 각각 한 개씩만 필요

각 신호선이 버스 마스터들 간에 직렬로 접속

접속되는 순서는 마스터들의 우선순위 (priority) 에 따라 결정

데이지 체인 방식 (daisy chain scheme)

Page 10: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-10

버스 중재기의 위치에 따른 버스중재 방식

중앙집중식 중재 방식 (centralized arbitration scheme) : 시스템 내에 한 개의 버스 중재기만 존재

분산 중재 방식 (decentralized arbitration scheme) : 시스템 내에 여러 개의 버스 중재기가 존재

장점

o 동작 속도가 빠름 중재 회로가 간단

o 신뢰도가 높음 어떤 중재기가 고장이 나더라도 해당 마스터에만 영향

단점

o 고장을 일으킨 중재기를 찾아내는 방법이 복잡

o 한 중재기의 고장이 전테 시스템의 동작에 영향을 줄 수도 있음

Page 11: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-11

조합된 실제 버스 중재 방식

병렬 중재 방식 (parallel arbitration scheme)

centralized fixed priority scheme)

decentralized fixed priority scheme)

dynamic priority scheme)

직렬 중재 방식 (serial arbitration scheme)

centralized serial arbitration scheme)

decentralized serial arbitration scheme)

폴링 방식 (polling scheme)

하드웨어 폴링 방식

소프트웨어 폴링 방식

Page 12: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-12

4.3.1 병렬 중재 방식

(1) 중앙집중식 고정 우선순위 방식 : 중재기에 가까이 위치한 순서대로 우선순위가 정해진 방식

Page 13: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-13

중앙집중식 고정 우선순위 방식 ( 계속 )

마스터 1 이 버스 사용중일 때 , 마스터 3 이 버스 사용을

요구한 경우

1. 마스터 3 이 버스 요구 신호 (BREQ3) 를 보내면 ,

2. 버스 중재기가 마스터 3 에게 버스 승인 신호 (BGNT3) 를 보낸다

3. 마스터 1 이 버스 사용을 끝내고 버스 사용중 신호 (BBUSY) 를

비활성화하면 ,

4. 마스터 3 이 BBUSY 신호를 다시 활성화하고 버스 사용을 시작

Page 14: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-14

중앙집중식 고정 우선순위 방식 ( 계속 )

버스 중재에 대한 부울식과 중재기의 내부 회로

Page 15: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-15

(2) 분산식 고정 우선순위 방식

모든 버스 마스터들이 별도의 중재기를 가지는 방식

Page 16: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-16

(3) 가변 우선순위 방식

회전 우선순위 (Rotating priority)

매 중재 동작이 끝난 후에는 모든 마스터들의 우선순위가 한

단계씩 낮아지고 가장 우선순위가 낮았던 마스터가 최상위

우선순위를 가지도록 하는 방법 , 일단 버스 사용 승인을 받은

마스터는 최하위 우선순위를 가지며 바로 다음에 위치한

마스터가 최상위 우선순위를 가지도록 하는 방법 (acceptance-de

pendent 식 회전 우선순위 방식 )

임의 우선순위 (Random priority)

동등 우선순위 (Equal priority): 비동기식 버스 시스템에서만

사용하며 , 경합이 발생할 경우 보통 FIFO 사용

최소 최근 사용 (Least recently used)

Page 17: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-17

Acceptance-dependent 식 회전 우선순위 방식

Page 18: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-18

4.3.2 직렬 중재 방식

(1) 중앙집중식 직렬중재 방식 데이지 - 체인 (Daisy-chain) 방식 : BGNT 신호가 데이지 체인된

중앙집중식 직렬 중재 방식 , 버스 중재기에 가까운 마스터가 높은 우선 순위

Page 19: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-19

(2) 분산식 직렬 중재 방식

데이지 체인된 버스 승인 신호가 버스 중재기들을 순환형으로 접속

가변 우선순위 : 이전 버스 승인을 받은 마스터의 우측이 최상위

분산식이지만 단일 결함 (single failure) 이 전체 시스템에 영향

Page 20: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-20

4.3.3 폴링 방식

버스 중재기가 각 마스터들이 버스 사용을 원하는 지를 주기적으로

검사하여 버스 승인 여부를 결정

(1) 하드웨어 폴링 방식

버스 중재기 내의 고정된 하드웨어에 의하여 모든 폴링 동작가 중재

기능이 수행되는 메카니즘

버스 중재기와 각 버스 마스터 간에 폴링 동작을 위한 폴링 선이 존재

2 진 코드화된 폴링 주소 사용 2n 개의 마스터를 가진

시스템에서는 n 개의 폴링 선들이 필요

중재기가 마스터를 검사하는 순서에 의하여 우선순위 결정

Page 21: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-21

하드웨어 폴링 방식의 구성도

Page 22: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-22

(2) 소프트웨어 폴링 방식

구성은 하드웨어 폴링 방식과 동일

버스 중재기에 프로그램을 실행할 수 있는 프로세서가 포함 지능

폴링할 마스터의 주소를 기억 가능

폴링 순서 변경 가능

속도는 느리지만 , 융통성 (flexibility) 이 높음

결함 마스터를 폴링 순서에서 제외시킴으로써 시스템 결함

허용도를 높임

중재에 소요되는 시간이 길기 때문에 분산 시스템의 공유 버스 또는

메시지 전송 시스템 (message passing system) 의 중재 방식으로

적절

Page 23: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-23

4.4 캐쉬 일관성 유지 방법

캐쉬 일관성 유지 (cache consistency)

다중프로세서시스템에서 공유 데이터가 여러 프로세서들의 캐쉬에 복사본으로 존재하는 상황에서 여러 캐쉬들과 주기억장치 저장된 데이터들 간에 일관성을 유지하도록 해주는 기술

데이터 불일치 (data inconsistency) 의 원인 변경 가능한 데이터의 공유 (sharing of writable data)

입출력 동작 (I/O activity)

프로세스 이주 (process migration)

Page 24: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-24

공유 데이터의 불일치

Page 25: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-25

공유 데이터의 불일치 ( 계속 )

Page 26: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-26

공유 데이터의 불일치 ( 계속 )

Page 27: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-27

I/O 동작에 의한 데이터 불일치

Page 28: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-28

프로세스 이주에 의한 데이터 불일치

프로세스 이주 (process migration) : 대칭적 다중프로세서시스템에서 프로세스를 처리하던 프로세서가 변경되는 현상

프로세스 이주에 의한 데이터 불일치[ 예 ]

- 프로세스 A 가 P1 에 의해 처리되던 동안 데이터 X 를 수정하였으며 (P1 의 캐쉬에만 수정된 데이터가 적재된 상태 ), 처리가 중단 .

- 후에 , 프로세스 A 가 다른 프로세서 (P2) 로 할당 P2 는 X 를

주기억장치로부터 인출 ( 데이터 불일치 발생 )

Page 29: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-29

캐쉬 일관성 유지 방법

공유 캐쉬를 사용하는 방법

공유 변수는 캐쉬에 저장하지 않는 방법

잠금 변수들은 캐쉬에 저장하지 않는 방법

버스 감시 메커니즘을 이용하는 방법

Write-through 일관성 유지 프로토콜

Write-back 일관성 유지 프로토콜

디렉토리를 이용한 캐쉬 프로토콜

Page 30: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-30

4.4.1 공유 캐쉬를 이용하는 방법 공유 캐쉬 (shared cache)

모든 프로세서들이 하나의 캐쉬를 공유하도록 하는 방법

동시 액세스가 가능하도록 여러 개의 모듈들로 구성

프로세서들과 공유 캐쉬 모듈들은 버스 또는 상호연결망에

의하여 연결

장점 : 항상 캐쉬 일관성이 유지됨

단점

프로세서들 간의 캐쉬 액세스 충돌이 빈번 성능 저하

캐쉬가 프로세서에 근접하게 위치해야 하는 원칙에 위배

모든 I/O 명령들의 공유 캐쉬 경유 필요

[ 예 ] Alliant 사의 FX 시스템 : 2~4 개 프로세서들이 하나의 캐쉬 공유

Page 31: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-31

4.4.2 공유 변수는 캐쉬에 저장하지 않는 방법

변경 가능한 공유 데이터는 주기억장치에만 저장

캐쉬저장 불가능 데이터 (noncacheable data)

lock 변수 , 프로세스 큐 (process queue) 와 같은 공유 데이터 구조

임계영역에 의해 보호되는 데이터들

단점

사용자와 컴파일러에게 투명하지 않다 (non-transparence)

컴파일러가 각 데이터에 tag 를 붙여야 하고 , 검색할 수 있는

H/W 필요

캐쉬 저장 불가능 데이터와 같은 블록에 포함된 일반 데이터의

캐쉬 저장도 불가능 캐쉬 적중률 저하

모든 I/O 데이터들도 캐쉬 저장 불가능 캐쉬 적중률 저하

Page 32: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-32

4.4.3 잠금 변수들은 캐쉬에 저장하지 않는 방법 임계영역을 보호하는 lock 변수들만 ‘캐쉬저장 불가능’으로 지정

캐쉬 플러쉬 (cache flush) 필요

임계영역에서 변경한 공유 데이터는 주기억장치도 갱신하고 ,

다른 캐쉬에 있는 모든 복사본을 무효화

write-back 경우에는 H/W가 복잡

단점

전체 캐쉬의 플러쉬 필요

임계영역 내에서 액세스 된 데이터의 변경 여부를 표시하는 태그

필요

I/O 동작의 수행 전에 캐쉬 플러쉬 필요

적은 용량의 캐쉬 시스템에서 적합

Page 33: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-33

4.4.4 버스 감시 메커니즘을 이용하는 방법

데이터 일관성 유지를 위하여 버스 감시 기능을 가진 H/W 모듈 추가

스누프 제어기 (snoop controller; 버스 감시기 (bus watcher))

다른 프로세서에 의한 버스상의 기억장치 액세스의 주소를

검사하고 ,

그 결과에 따라 자신의 캐쉬 블록의 상태 (status) 를 조정하는 H/

W 모듈

각 캐쉬 블록들은 상태 비트들 (status bits) 을 가지며 , 상태의 수

( 비트 수 ) 와 종류는 쓰기 방식 및 일관성 유지 프로토콜에 따라

달라짐

o Write-through coherence protocol

o Write-back coherence protocol (예 : MESI protocol)

Page 34: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-34

버스 감시 메커니즘이 포함된 프로세서 모듈

Page 35: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-35

가 . Write-through 일관성 유지 프로토콜

프로세서가 캐쉬의 데이터를 수정하는 즉시 , 주기억장치에도 갱신

스누프 제어기의 동작

주기억장치에 대한 쓰기 동작의 주소가 자신의 캐쉬에 있는 지

검사하고 ,

존재한다면 , 그 블록을 무효화 (invalidate) 시킨다

프로세서가 무효화된 블록을 액세스하는 경우에는 캐쉬

미스로 처리

캐쉬 데이터의 상태

유효 (V : Valid) 상태 : 캐쉬의 내용 = 주기억장치의 내용

무효 (I : Invalid) 상태 : 캐쉬의 내용 ≠ 주기억장치의 내용

Page 36: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-36

Write-through 일관성 유지 프로토콜 ( 계속 )

Page 37: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-37

Write-through 일관성 유지 프로토콜 ( 계속 )

Page 38: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-38

Write-through 일관성 유지 프로토콜 ( 계속 )

Page 39: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-39

나 . Write-back 일관성 유지와 MESI 프로토콜

프로세서가 캐쉬의 데이터를 변경해도 주기억장치의 내용은

갱신되지 않음

다른 스누피 제어기들이 시스템 버스를 감시해도 변경 사실을 알

수 없음 . 변경된 캐쉬의 스누피 제어기가 변경 사실을 다른 스누피

제어기들에게 통보

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

신호

무효화 사이클 (invalidate cycle) : 무효화 신호가 전송되는 버스 사이클

Page 40: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-40

MESI 프로토콜에서 캐쉬 데이터의 상태

수정 (M : Modified) 상태 : 데이터가 수정 ( 변경 ) 된 상태

배타 (E : Exclusive) 상태 : 유일한 복사본이고 , 주기억장치의

내용과 동일한 상태

공유 (S : Shared) 상태 : 데이터가 두 개 이상의 프로세서 캐쉬에

적재되어 있는 상태

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

무효가 된 상태

Page 41: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-41

MESI 프로토콜

MESI protocol 의 상태 전이도

( 실선 )

프로세서의 동작에 의한 상태전이

( 점선 )

다른 캐쉬에서의 변화에 의한 상태전이

Page 42: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-42

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

P1 이 주기억장치로부터 X 를 처음 인출 : 읽기 미스 (read miss)

주기억장치로부터 X 를 읽어온 후 , 상태를 ‘배타 (E)’ 로 세트

Page 43: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-43

(2) 캐쉬에 적재된 데이터의 변경

P1 이 X를 새로운 값 (X’) 으로 변경 : 쓰기 적중 (write hit)

X’로 수정한 후 , 상태를 ‘수정 (M)’으로 세트

Page 44: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-44

(3) 데이터가 공유되는 경우 [I]

P1 이 X를 가진 상태에서 , P2 도 X를 읽는 경우

읽기 실패 (read miss) 주기억장치로부터 읽음

P1 의 스누프 제어기가 그 버스 동작을 확인하고 , X의 상태를 ‘ S’

로 변경하며 , P2 로 공유 사실을 알림 P2 가 X의 상태를 ‘공유 (S)’

로 세트

Page 45: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-45

(4) 데이터가 공유되는 경우 [II]

앞의 결과와 같이 두 프로세서들이 X를 가진 상태에서 다른

프로세서 (P3) 가 X를 읽는다면 , 같은 동작이 발생하며 데이터

상태는 ‘공유 (S)’로 세트 .

(5) 데이터가 공유되는 경우 [III]

(2) 의 결과 상태에서 , 만약 P2 가 X를 액세스한다면 ,

캐쉬 미스 발생 주기억장치 읽기 동작

P1 의 스누프 제어기가 그 동작을 중단시키고 , 자신의 데이터

(X’) 를 P2 로 전송 (캐쉬간 전송 (cache-to-cache transfer)) 하며 ,

X’를 주기억장치에도 갱신 .

캐쉬 상태는 모두 ‘공유 (S)’로 세트

Page 46: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-46

데이터가 공유되는 경우 [III] ( 계속 )

Page 47: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-47

데이터가 공유되는 경우 [III] ( 계속 )

캐쉬간 전송이 지원되지 않는 시스템의 경우 :

P1 의 스누프 제어기가 P2 의 읽기 동작을 중단시키고 , P2

에게 ‘재시도 (retry)’를 요구한 후 ,

P1 이 X’를 주기억장치에 갱신하면 ,

P2 가 읽기를 재시도하여 X’를 읽어간다 .

Page 48: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-48

(6) 공유 상태의 데이터가 변경될 때

(3) 의 결과 상태에서 , P2 가 X를 새로운 값으로 갱신하는 경우 :

P2 가 버스를 통하여 무효화 신호 (invalidate signal) 를 방송

X를 가진 캐쉬들은 X의 상태를 ‘무효 (I)’로 변경하고 , 확인 신호 전송

P2 가 배타적 소유권 획득

P2 가 X를 새로운 값 (X’) 으로

갱신하고 , 상태를 ‘수정 (M)’

으로 변경

Page 49: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-49

(7) ‘M’ 상태의 데이터를 다시 변경하는 경우

(6) 의 결과 상태에서 , P2 가 X’ 을 다시 X’’ 로 변경하면 ,

쓰기 적중 (write hit) 데이터만 변경되고 ,

상태는 불변

Page 50: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-50

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

(7) 의 결과 상태에서 , P1 이 X를 수정하기 위하여

읽으려 한다면 , 읽기 미스 (read miss) 발생

주기억장치 읽기 동작 시작 ( 수정을 위한 읽기 (read with

intend to modify: RWITM))

P2 가 X’’를 P1 으로 보내주고 , 데이터의 상태를 ‘무효 (I)’

로 변경

P1 은 X’’를 X’’’로 수정하고 , 상태를 ‘수정 (M)’으로 세트

캐쉬간 전송이 지원되지 않는 시스템의 경우 : ‘retry’

요구 .

Page 51: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-51

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

Page 52: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-52

(9) X 를 가지지 않은 프로세서가 수정하려는 경우

P1 만 X를 가지고 있는 상태 ((1) 의 결과 ) 에서 P2 가 X를 수정

하는 경우 :

쓰기 미스 (write miss) 발생

P2 가 RWITM 시작

P1 이 X를 P2 로 보내주고 ,

상태를 ‘무효 (I)’로 변경

P2 는 X를 X’로 수정하고 ,

상태를 ‘수정 (M)’으로 세트

Page 53: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-53

4.4.5 디렉토리 - 기반 캐쉬 프로토콜

수백개 이상의 프로세서들로 구성되는 대규모 ( 공유 - 기억장치 )

병렬컴퓨터 구성을 위한 캐쉬 프로토콜

데이터 일관성 유지를 위한 신호의 방송 (broadcasting)

상호연결망의 통신량 증가

방송을 하지 않는 캐쉬 일관성 유지를 위하여 디렉토리 도입

디렉토리 (directory) : 공유 데이터의 복사본 (copy) 들에 관한 정보를

관리하는 리스트 (list)

각 데이터 블록에 대한 엔트리 (entry) : 데이터의 상태 (status)

비트와 복사본의 위치 (location) 를 가리키는 포인터 (pointer)

저장

Page 54: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-54

가 . 디렉토리 방식의 기본 원리

중앙 디렉토리 방식 : 1976년 Tang [TAN76]에 의해 제안

모든 데이터 블록에 대한 정보를 하나의 중앙 디렉토리에 저장

용량이 커지고 , 검색 시간이 길어짐

분산 디렉토리 방식 : Censier and Featier [CEN78]가 제안

각 기억장치가 별도의 디렉토리 유지

디렉토리는 데이터 블록들에 대한 상태와 위치 정보들을 저장

o 상태 (state): 해당 블록이 ’유효’ 상태인지 , 혹은 수정되어 ’

무효’ 상태인지 가리킴

Page 55: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-55

분산 디렉토리의 동작 원리

[ 예 ] 캐쉬를 가진 다수의 프로세서들이 상호연결망 (예 : MIN) 을 통하여 여러

개의 공유 기억장치 모듈들과 접속된 시스템에서 ,

M1 에 저장되어 있는 데이터 X의 복사본이 C1 에 적재된 후에 P1 에 의해

수정되었다면 , M1 의 디렉토리 D1 에는 X가 C1 에 적재되었으며 ‘수정 (M)’

상태임을 표시 .

이때 P2 가 데이터 X를 액세스 캐쉬 미스 발생 , &

① 기억장치 액세스 요구가 M1 으로 전송

② M1 의 기억장치 제어기는 D1 을 검사하고 , C1 에게 수정된 X의 갱신을

요구

③ C1 이 X를 주기억장치에 갱신

④ M1 의 제어기가 X를 P2(C2) 로 전송

Page 56: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-56

Page 57: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-57

분산 디렉토리의 동작 원리 ( 계속 )

P1 이 X를 다시 다른 값으로 수정한다면 ,

① C1 에서 쓰기 적중 발생 C1 은 M 으로 ‘수정’ 통보

② M1 의 제어기는 디렉토리를 검사하여 , X의 복사본을

가진 모든 캐쉬들로 ‘무효화’ 신호를 전송

③ 무효화 신호를 받은 C2 는 X를 ‘무효 (I)’로 표시하고 ,

‘확인 (ACK)’ 신호를 전송

④ M1 의 제어기가 ‘확인’ 신호를 C1 으로 보내주면 (bypa

ss), C1 이 X를 새로운 값으로 갱신

Page 58: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-58

분산 디렉토리의 분류

풀 -맵 디렉토리 (full-map directory) 방식

유한 디렉토리 (limited directory) 방식

체인 디렉토리 (chained directory) 방식

Page 59: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-59

(1) 풀맵 디렉토리 방식

공유 기억장치 내의 각 블록에 대한 디렉토리 엔트리가

한 개씩 생성됨

각 엔트리는 프로세서 수만큼의 포인터 비트 (pointer bit

= 존재 비트 (presence bit)) 들과 상태 비트 (state bit) 로

구성

포인터 비트 : 각 프로세서 당 한 비트씩 배정 -- 해당

프로세서의 캐쉬에 그 데이터가 적재되어 있는지를

가리키는데 사용

Page 60: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-60

풀맵 디렉토리 방식의 예

Page 61: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-61

풀맵 디렉토리 방식의 장단점

장점 : 성능 우수

단점 포인터 비트들이 프로세서 수에 비례

디렉토리 저장 공간 증가 : 기억장치 오버헤드 = O(N2)

Page 62: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-62

유한 디렉토리 방식

디렉토리 저장 공간의 절약을 위한 방식

데이터 블록을 동시에 적재할 수 있는 캐쉬 수를 제한

디렉토리의 포인터 수 (log2N) < 전체 프로세서 수 (N)

엔트리 포인트 = p 개인 경우 , 포인터 비트 수 = p x l

og2N 개

퇴거 (eviction) : 포인터 수의 제한에 따라 , 새로운 캐쉬

적재 시 기존 포인터를 교체하는 동작

Page 63: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-63

유한 디렉토리 방식의 예

Page 64: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-64

유한 디렉토리 방식의 장단점

장점 : 디렉토리 저장 공간의 감소

단점 : 캐쉬에 적재될 복사본 수의 한계 .

퇴거 동작을 위한 오버헤드 .

Page 65: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-65

체인 디렉토리 방식

공유 데이터의 복사본 개수를 제한하지 않으면서도 ,

유한 디렉토리의 이점도 가질 수 있는 방식

연결 리스트 (linked list) 를 이용하여 , 어떤 데이터의

복사본을 적재하고 있는 포인터들 간에 체인 (chain) 을

구성

Page 66: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-66

체인 디렉토리 방식의 예

Page 67: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-67

체인 디렉토리 방식의 장단점

장점

디렉토리 저장 공간 감소 (증가율 )

o 증가율 : log2N 에 비례

o 캐쉬 및 기억장치 내에는 한 개씩의 포인터만 저장

복사본이 저장될 캐쉬의 수에 제한이 없음

단점

캐쉬 슬롯이 교체될 때 복잡한 메커니즘 필요

[ 예 ] 직접 사상 캐쉬일 때 , 그림 4-27(b) 의 상황에서

P2 가 데이터 Y 를 읽는 경우 , 체인 연결 상태 변경 필요 .

Page 68: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-68

나 . 디렉토리 프로토콜의 확장

최근 분산 공유 - 기억장치 다중프로세서시스템 (distributed

shared-memory multiprocessor system) 에서 널리 사용

:: 시스템 규모 확장을 위하여 다수의 다중프로세서시스템을 서로 접속하는 경우 , 시스템 전체적으로 데이터 일관성을 유지하기 위한 목적

Page 69: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-69

분산 공유 - 기억장치시스템의 구성 방법

스누핑 - 스누핑 방식 : 스누핑 어뎁터 (snooping adapter) 가 버스

내부 동작들을 다른 클러스터들로 방송하고 모니터링 하는 방식

시간적 오버헤드가 크고 , 시스템 확장성 한계

그림 4-28(a)

스누핑 -디렉토리 방식 : 클러스터들 간에 디렉토리 방식에 의해

데이터 일관성 유지 --- 각 클러스터 내부는 버스 스누핑 방식 , 다른

클러스터들과는 디렉토리 프로토콜에 의해 일관성 유지

네트워크 어뎁터 (network adapter: NA) : 네트워크 인터페이스 및

디렉토리 제어기 (directory controller) 로서 동작

그림 4-28(b)

Page 70: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-70

분산 공유 - 기억장치시스템의 구성 방법 ( 계속 )

Page 71: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-71

스누핑 -디렉토리 방식의 예

DASH 다중프로세서시스템 : 스탠포드 대학에서 연구용으로 개발

읽기 미스 (read miss) 발생시의 시스템 동작

[ 예 ] 클러스터 1 이 클러스터 2(홈 클러스터 ) 에 저장된 데이터를

읽는 경우

Page 72: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-72

스누핑 -디렉토리 방식의 예 ( 계속 )

[ 예 ] 클러스터 1 이 데이터를 읽기 전에 , 클러스터 3( 소유자 클러스터 ) 가

그 데이터를 읽어가서 수정한 경우의 시스템 동작

Page 73: 제 4 장 .  단일 - 버스 다중프로세서 시스템

Parallel Computer Architecture 4-73

스누핑 -디렉토리 방식의 예 ( 계속 ) 공유되고 있는 데이터를 다른 클러스터가 수정하는 경우

[ 예 ] 홈 클러스터가 클러스터 2 인 데이터를 클러스터 3 과 4 가 공유하고 있는 상태에서 , 클러스터 1 이 그 데이터를 읽어서 수정하려는 경우 :