780 likes | 1.27k Views
제 4 장 . 단일 - 버스 다중프로세서 시스템. 4.1 버스의 조직 4.2 버스의 기본 동작 4.3 버스 중재 4.4 캐쉬 일관성 유지 방법. 4.1 버스의 조직. 데이터 버스 (data bus) 시스템 요소들 사이에 데이터가 전송될 때 사용되는 선들의 집합 양방향 전송 선의 수 = 한번에 전송되는 데이터 비트의 수 주소 버스 (address bus) 프로세서가 기억장치와 읽기 / 쓰기 동작을 할 때 , 해당 기억장치를 지정하기 위한 주소를 전송하는 선들의 집합
E N D
제4장. 단일-버스 다중프로세서 시스템 4.1 버스의 조직 4.2 버스의 기본 동작 4.3 버스 중재 4.4 캐쉬 일관성 유지 방법
4.1 버스의 조직 • 데이터 버스 (data bus) • 시스템 요소들 사이에 데이터가 전송될 때 사용되는 선들의 집합 • 양방향 전송 • 선의 수 = 한번에 전송되는 데이터 비트의 수 • 주소 버스 (address bus) • 프로세서가 기억장치와 읽기/쓰기 동작을 할 때, 해당 기억장치를 지정하기 위한 주소를 전송하는 선들의 집합 • 단방향 전송 (프로세서 기억장치) • 선의 수 = 주소 지정할 수 있는 기억장치의 최대 용량 • 제어 버스 (control bus) • 기억장치, 입출력장치, 버스 등을 제어하기 위한 선들의 집합 Parallel Computer Architecture
버스를 이용한 다중프로세서시스템 Parallel Computer Architecture
제어 버스 • 기억장치 및 입출력장치와의 데이터 교환 • 기억장치 쓰기(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) Parallel Computer Architecture
버스의 속도 (대역폭) • 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 Parallel Computer Architecture
4.2 버스의 기본 동작 • 쓰기 동작(write operation) • 버스 마스터가 버스 사용권을 획득한 후, • 버스를 통하여 주소와 데이터를 전송 • 읽기 동작(write operation) • 버스 마스터가 버스 사용권을 획득한 후, • 버스를 통하여 주소와 제어 신호를 전송하고, 데이터가 전송되어 올 때까지 대기 • 동기식 버스(synchronous bus) : 버스 동작들이 버스 클럭에 기준을 두고 발생 중대형시스템에서 사용 • 비동기식 버스(asynchronous bus) : 버스 클럭 없이, 관련된 버스 동작들의 발생 여부에 따라 동작 소형시스템에서 사용 Parallel Computer Architecture
버스의 기본 동작 (계속) • 기억장치 읽기 동작의 시간 흐름도 Parallel Computer Architecture
4.3 버스 중재 • 버스 경합 (bus contention) : 한 개의 버스를 공유하는 다중프로세서 시스템에서 여러 개의 버스 마스터들이 동시에 버스 사용을 요구하는 경우에 발생 • 버스 중재 (bus arbitration) : 버스 경합이 발생한 경우에 어떤 기준에 따라 버스 마스터들 중에서 한 개씩만 선택하여 순서대로 버스를 사용할 수 있게 해주는 동작 • 버스 중재기 (bus arbiter) : 버스 중재를 수행하는 하드웨어 모듈 • 기근 (starvation) : 특정 버스 마스터가 오랫동안 버스를 사용하지 못하는 현상 Parallel Computer Architecture
제어 신호들의 연결구조에 따른 버스중재 방식 • 병렬 중재 방식 (parallel arbitration scheme) • 버스 마스터와 같은 수의 버스 요구선 및 승인 신호선들이 필요 • 각 버스 마스터가 독립적인 버스 요구 신호선을 가지며, 중재 회로로 입력 • 버스 승인 신호가 각 버스 마스터에 대하여 별도로 발생 • 직렬 중재 방식 (serial arbitration scheme) • 버스 요구선 및 승인 신호선이 각각 한 개씩만 필요 • 각 신호선이 버스 마스터들 간에 직렬로 접속 • 접속되는 순서는 마스터들의 우선순위(priority)에 따라 결정 • 데이지 체인 방식 (daisy chain scheme) Parallel Computer Architecture
버스 중재기의 위치에 따른 버스중재 방식 • 중앙집중식 중재 방식 (centralized arbitration scheme) : 시스템 내에 한 개의 버스 중재기만 존재 • 분산 중재 방식 (decentralized arbitration scheme) : 시스템 내에 여러 개의 버스 중재기가 존재 • 장점 • 동작 속도가 빠름 중재 회로가 간단 • 신뢰도가 높음 어떤 중재기가 고장이 나더라도 해당 마스터에만 영향 • 단점 • 고장을 일으킨 중재기를 찾아내는 방법이 복잡 • 한 중재기의 고장이 전테 시스템의 동작에 영향을 줄 수도 있음 Parallel Computer Architecture
조합된 실제 버스 중재 방식 • 병렬 중재 방식 (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) • 하드웨어 폴링 방식 • 소프트웨어 폴링 방식 Parallel Computer Architecture
4.3.1 병렬 중재 방식 (1) 중앙집중식 고정 우선순위 방식: 중재기에 가까이 위치한 순서대로 우선순위가 정해진 방식 Parallel Computer Architecture
중앙집중식 고정 우선순위 방식 (계속) • 마스터 1이 버스 사용중일 때, 마스터 3이 버스 사용을 요구한 경우 • 마스터 3이 버스 요구 신호(BREQ3)를 보내면, • 버스 중재기가 마스터 3에게 버스 승인 신호(BGNT3)를 보낸다 • 마스터 1이 버스 사용을 끝내고 버스 사용중 신호(BBUSY)를 비활성화하면, • 마스터 3이 BBUSY 신호를 다시 활성화하고 버스 사용을 시작 Parallel Computer Architecture
중앙집중식 고정 우선순위 방식 (계속) • 버스 중재에 대한 부울식과 중재기의 내부 회로 Parallel Computer Architecture
(2) 분산식 고정 우선순위 방식 • 모든 버스 마스터들이 별도의 중재기를 가지는 방식 Parallel Computer Architecture
(3) 가변 우선순위 방식 • 회전 우선순위 (Rotating priority) • 매 중재 동작이 끝난 후에는 모든 마스터들의 우선순위가 한 단계씩 낮아지고 가장 우선순위가 낮았던 마스터가 최상위 우선순위를 가지도록 하는 방법, 일단 버스 사용 승인을 받은 마스터는 최하위 우선순위를 가지며 바로 다음에 위치한 마스터가 최상위 우선순위를 가지도록 하는 방법 (acceptance-dependent식 회전 우선순위 방식) • 임의 우선순위 (Random priority) • 동등 우선순위 (Equal priority): 비동기식 버스 시스템에서만 사용하며, 경합이 발생할 경우 보통 FIFO 사용 • 최소 최근 사용 (Least recently used) Parallel Computer Architecture
Acceptance-dependent식 회전 우선순위 방식 Parallel Computer Architecture
4.3.2 직렬 중재 방식 • 중앙집중식 직렬중재 방식 • 데이지-체인(Daisy-chain) 방식 : BGNT 신호가 데이지 체인된 중앙집중식 직렬 중재 방식, 버스 중재기에 가까운 마스터가 높은 우선 순위 Parallel Computer Architecture
(2) 분산식 직렬 중재 방식 • 데이지 체인된 버스 승인 신호가 버스 중재기들을 순환형으로 접속 • 가변 우선순위 : 이전 버스 승인을 받은 마스터의 우측이 최상위 • 분산식이지만 단일 결함(single failure)이 전체 시스템에 영향 Parallel Computer Architecture
4.3.3 폴링 방식 • 버스 중재기가 각 마스터들이 버스 사용을 원하는 지를 주기적으로 검사하여 버스 승인 여부를 결정 (1) 하드웨어 폴링 방식 • 버스 중재기 내의 고정된 하드웨어에 의하여 모든 폴링 동작가 중재 기능이 수행되는 메카니즘 • 버스 중재기와 각 버스 마스터 간에 폴링 동작을 위한 폴링 선이 존재 • 2진 코드화된 폴링 주소 사용 2n개의 마스터를 가진 시스템에서는 n개의 폴링 선들이 필요 • 중재기가 마스터를 검사하는 순서에 의하여 우선순위 결정 Parallel Computer Architecture
하드웨어 폴링 방식의 구성도 Parallel Computer Architecture
(2) 소프트웨어 폴링 방식 • 구성은 하드웨어 폴링 방식과 동일 • 버스 중재기에 프로그램을 실행할 수 있는 프로세서가 포함 지능 • 폴링할 마스터의 주소를 기억 가능 • 폴링 순서 변경 가능 • 속도는 느리지만, 융통성(flexibility)이 높음 • 결함 마스터를 폴링 순서에서 제외시킴으로써 시스템 결함 허용도를 높임 • 중재에 소요되는 시간이 길기 때문에 분산 시스템의 공유 버스 또는 메시지 전송 시스템(message passing system)의 중재 방식으로 적절 Parallel Computer Architecture
4.4 캐쉬 일관성 유지 방법 • 캐쉬 일관성 유지(cache consistency) • 다중프로세서시스템에서 공유 데이터가 여러 프로세서들의 캐쉬에 복사본으로 존재하는 상황에서 여러 캐쉬들과 주기억장치 저장된 데이터들 간에 일관성을 유지하도록 해주는 기술 • 데이터 불일치(data inconsistency)의 원인 • 변경 가능한 데이터의 공유(sharing of writable data) • 입출력 동작(I/O activity) • 프로세스 이주(process migration) Parallel Computer Architecture
공유 데이터의 불일치 Parallel Computer Architecture
공유 데이터의 불일치 (계속) Parallel Computer Architecture
공유 데이터의 불일치 (계속) Parallel Computer Architecture
I/O 동작에 의한 데이터 불일치 Parallel Computer Architecture
프로세스 이주에 의한 데이터 불일치 • 프로세스 이주(process migration) : 대칭적 다중프로세서시스템에서 프로세스를 처리하던 프로세서가 변경되는 현상 • 프로세스 이주에 의한 데이터 불일치[예] - 프로세스 A가 P1에 의해 처리되던 동안 데이터 X를 수정하였으며 (P1의 캐쉬에만 수정된 데이터가 적재된 상태), 처리가 중단.- 후에, 프로세스 A가 다른 프로세서(P2)로 할당 P2는 X를 주기억장치로부터 인출 (데이터 불일치 발생) Parallel Computer Architecture
캐쉬 일관성 유지 방법 • 공유 캐쉬를 사용하는 방법 • 공유 변수는 캐쉬에 저장하지 않는 방법 • 잠금 변수들은 캐쉬에 저장하지 않는 방법 • 버스 감시 메커니즘을 이용하는 방법 • Write-through 일관성 유지 프로토콜 • Write-back 일관성 유지 프로토콜 • 디렉토리를 이용한 캐쉬 프로토콜 Parallel Computer Architecture
4.4.1 공유 캐쉬를 이용하는 방법 • 공유 캐쉬(shared cache) • 모든 프로세서들이 하나의 캐쉬를 공유하도록 하는 방법 • 동시 액세스가 가능하도록 여러 개의 모듈들로 구성 • 프로세서들과 공유 캐쉬 모듈들은 버스 또는 상호연결망에 의하여 연결 • 장점 : 항상 캐쉬 일관성이 유지됨 • 단점 • 프로세서들 간의 캐쉬 액세스 충돌이 빈번 성능 저하 • 캐쉬가 프로세서에 근접하게 위치해야 하는 원칙에 위배 • 모든 I/O 명령들의 공유 캐쉬 경유 필요 [예] Alliant사의 FX 시스템 : 2~4 개 프로세서들이 하나의 캐쉬 공유 Parallel Computer Architecture
4.4.2 공유 변수는 캐쉬에 저장하지 않는 방법 • 변경 가능한 공유 데이터는 주기억장치에만 저장 • 캐쉬저장 불가능 데이터 (noncacheable data) • lock 변수, 프로세스 큐(process queue)와 같은 공유 데이터 구조 • 임계영역에 의해 보호되는 데이터들 • 단점 • 사용자와 컴파일러에게 투명하지 않다(non-transparence) 컴파일러가 각 데이터에 tag를 붙여야 하고, 검색할 수 있는 H/W 필요 • 캐쉬 저장 불가능 데이터와 같은 블록에 포함된 일반 데이터의 캐쉬 저장도 불가능 캐쉬 적중률 저하 • 모든 I/O 데이터들도 캐쉬 저장 불가능 캐쉬 적중률 저하 Parallel Computer Architecture
4.4.3 잠금 변수들은 캐쉬에 저장하지 않는 방법 • 임계영역을 보호하는 lock 변수들만 ‘캐쉬저장 불가능’으로 지정 • 캐쉬 플러쉬(cache flush) 필요 • 임계영역에서 변경한 공유 데이터는 주기억장치도 갱신하고, 다른 캐쉬에 있는 모든 복사본을 무효화 • write-back 경우에는 H/W가 복잡 • 단점 • 전체 캐쉬의 플러쉬 필요 • 임계영역 내에서 액세스 된 데이터의 변경 여부를 표시하는 태그 필요 • I/O 동작의 수행 전에 캐쉬 플러쉬 필요 적은 용량의 캐쉬 시스템에서 적합 Parallel Computer Architecture
4.4.4 버스 감시 메커니즘을 이용하는 방법 • 데이터 일관성 유지를 위하여 버스 감시 기능을 가진 H/W 모듈 추가 • 스누프 제어기(snoop controller; 버스 감시기(bus watcher)) • 다른 프로세서에 의한 버스상의 기억장치 액세스의 주소를 검사하고,그 결과에 따라 자신의 캐쉬 블록의 상태(status)를 조정하는 H/W 모듈 • 각 캐쉬 블록들은 상태 비트들(status bits)을 가지며, 상태의 수(비트 수)와 종류는 쓰기 방식 및 일관성 유지 프로토콜에 따라 달라짐 • Write-through coherence protocol • Write-back coherence protocol (예: MESI protocol) Parallel Computer Architecture
버스 감시 메커니즘이 포함된 프로세서 모듈 Parallel Computer Architecture
가. Write-through 일관성 유지 프로토콜 • 프로세서가 캐쉬의 데이터를 수정하는 즉시, 주기억장치에도 갱신 • 스누프 제어기의 동작 • 주기억장치에 대한 쓰기 동작의 주소가 자신의 캐쉬에 있는 지 검사하고, • 존재한다면, 그 블록을 무효화(invalidate)시킨다 프로세서가 무효화된 블록을 액세스하는 경우에는 캐쉬 미스로 처리 • 캐쉬 데이터의 상태 • 유효(V : Valid) 상태: 캐쉬의 내용 = 주기억장치의 내용 • 무효(I : Invalid)상태: 캐쉬의 내용 ≠ 주기억장치의 내용 Parallel Computer Architecture
Write-through 일관성 유지 프로토콜 (계속) Parallel Computer Architecture
Write-through 일관성 유지 프로토콜 (계속) Parallel Computer Architecture
Write-through 일관성 유지 프로토콜 (계속) Parallel Computer Architecture
나. Write-back 일관성 유지와 MESI 프로토콜 • 프로세서가 캐쉬의 데이터를 변경해도 주기억장치의 내용은 갱신되지 않음 다른 스누피 제어기들이 시스템 버스를 감시해도 변경 사실을 알 수 없음. 변경된 캐쉬의 스누피 제어기가 변경 사실을 다른 스누피 제어기들에게 통보 • 무효화 신호(invalidate signal) : 데이터의 변경 사실을 알려주기 위한 신호 • 무효화 사이클(invalidate cycle) : 무효화 신호가 전송되는 버스 사이클 Parallel Computer Architecture
MESI 프로토콜에서 캐쉬 데이터의 상태 • 수정(M : Modified) 상태: 데이터가 수정(변경)된 상태 • 배타(E : Exclusive) 상태: 유일한 복사본이고, 주기억장치의 내용과 동일한 상태 • 공유(S : Shared) 상태: 데이터가 두 개 이상의 프로세서 캐쉬에 적재되어 있는 상태 • 무효(I : Invalid) 상태: 데이터가 다른 프로세서에 의해 수정되어 무효가 된 상태 Parallel Computer Architecture
MESI 프로토콜 • MESI protocol의 상태 전이도 (실선) 프로세서의 동작에 의한 상태전이 (점선) 다른 캐쉬에서의 변화에 의한 상태전이 Parallel Computer Architecture
(1) 데이터를 처음 읽는 경우 • P1이 주기억장치로부터 X를 처음 인출 :읽기 미스 (read miss) 주기억장치로부터 X를 읽어온 후, 상태를 ‘배타(E)’로 세트 Parallel Computer Architecture
(2) 캐쉬에 적재된 데이터의 변경 • P1이 X를 새로운 값(X’)으로 변경 :쓰기 적중 (write hit) X’로 수정한 후, 상태를 ‘수정(M)’으로 세트 Parallel Computer Architecture
(3) 데이터가 공유되는 경우 [I] • P1이 X를 가진 상태에서, P2도 X를 읽는 경우 읽기 실패 (read miss) 주기억장치로부터 읽음 P1의 스누프 제어기가 그 버스 동작을 확인하고, X의 상태를‘S’로 변경하며, P2로 공유 사실을 알림 P2가 X의 상태를‘공유(S)’로 세트 Parallel Computer Architecture
(4) 데이터가 공유되는 경우 [II] • 앞의 결과와 같이 두 프로세서들이 X를 가진 상태에서 다른 프로세서(P3)가 X를 읽는다면, 같은 동작이 발생하며 데이터 상태는 ‘공유(S)’로 세트. (5) 데이터가 공유되는 경우 [III] • (2)의 결과 상태에서, 만약 P2가 X를 액세스한다면, • 캐쉬 미스 발생 주기억장치 읽기 동작 • P1의 스누프 제어기가 그 동작을 중단시키고, 자신의 데이터(X’)를 P2로 전송(캐쉬간 전송(cache-to-cache transfer))하며, X’를 주기억장치에도 갱신. • 캐쉬 상태는 모두 ‘공유(S)’로 세트 Parallel Computer Architecture
데이터가 공유되는 경우 [III] (계속) Parallel Computer Architecture
데이터가 공유되는 경우 [III] (계속) • 캐쉬간 전송이 지원되지 않는 시스템의 경우 : • P1의 스누프 제어기가 P2의 읽기 동작을 중단시키고, P2에게 ‘재시도(retry)’를 요구한 후, • P1이 X’를 주기억장치에 갱신하면, • P2가 읽기를 재시도하여 X’를 읽어간다. Parallel Computer Architecture
(6) 공유 상태의 데이터가 변경될 때 • (3)의 결과 상태에서, P2가 X를 새로운 값으로 갱신하는 경우 : • P2가 버스를 통하여 무효화 신호(invalidate signal)를 방송 • X를 가진 캐쉬들은 X의 상태를 ‘무효(I)’로 변경하고, 확인 신호 전송 P2가 배타적 소유권 획득 • P2가 X를 새로운 값(X’)으로 갱신하고, 상태를 ‘수정(M)’ • 으로 변경 Parallel Computer Architecture
(7) ‘M’상태의 데이터를 다시 변경하는 경우 • (6)의 결과 상태에서, P2가 X’을 다시 X’’로 변경하면,쓰기 적중(write hit) 데이터만 변경되고, 상태는 불변 Parallel Computer Architecture
(8) I 상태의 데이터를 변경하는 경우 • (7)의 결과 상태에서, P1이 X를 수정하기 위하여 읽으려 한다면, 읽기 미스(read miss)발생 • 주기억장치 읽기 동작 시작 (수정을 위한 읽기(read with intend to modify: RWITM)) • P2가 X’’를 P1으로 보내주고, 데이터의 상태를 ‘무효(I)’로 변경 • P1은 X’’를 X’’’로 수정하고, 상태를 ‘수정(M)’으로 세트 • 캐쉬간 전송이 지원되지 않는 시스템의 경우: ‘retry’ 요구. Parallel Computer Architecture