단일-버스 다중프로세서 시스템(1) - 버스 중재 방식과 캐시 일관성 유지 방법
글 작성자: _rian
버스의 조직

- 데이터 버스(data bus)
- 시스템 요소들 사이에 데이터가 전송될 때 사용되는 선들의 집합
- 양방향 전송
- 선의 수 = 한 번에 전송되는 데이터 비트의 수
- 주소 버스 (address bus)
- 프로세서가 기억장치와 읽기/쓰기 동작을 할 때, 해당 기억장치를 지정하기 위한 주소를 전송하는 선들의 집합
- 단방향 전송 (프로세서 -> 기억장치)
- 선의 수 = 주소 지정할 수 있는 기억장치의 최대 용량
- 제어 버스 (control bus)
- 기억 장치, 입출력 장치, 버스 등을 제어하기 위한 선들의 집합
제어 버스의 주요 기능
- 기억장치 및 입출력 장치와의 데이터 교환
- 기억장치 쓰기 (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) 신호 전송
버스의 속도 (대역폭)
- Bus speed = Bus bandwidth
- 버스의 클럭의 주기와 데이터 버스의 폭에 의하여 결정
버스의 기본 동작
- 쓰기 동작 (write operation)
- 버스 마스터가 버스 사용권을 획득한 후,
- 버스를 통하여 주소와 데이터를 전송
- 읽기 동작 (read operation)
- 버스 마스터가 버스 사용권을 획득한 후,
- 버스를 통하여 주소와 제어 신호를 전송하고 데이터가 전송되어 올 때까지 대기
- 동기식 버스 (synchronous bus) : 버스 동작들이 버스 클럭에 기준을 두고 발생 -> 중대형 시스템에서 사용
- 비동기식 버스 (asynchronous bus) : 버스 클럭 없이, 관련된 버스 동작들의 발생 여부에 따라 동작 -> 소형 시스템에서 사용

버스 중재
- 버스 경합 (bus contention) : 한 개의 버스를 공유하는 다중 프로세서 시스템에서 여러 개의 버스 마스터들이 동시에 버스 사용을 요구하는 경우에 발생
- 버스 중재 (bus arbitration) : 버스 경합이 발생한 경우에 어떤 기준에 따라 버스 마스터들 중에서 한 개 씩만 선택하여 순서대로 버스를 사용할 수 있게 해주는 동작
- 버스 중재기 (bus arbiter) : 버스 중재를 수행하는 하드웨어 모듈
- 기근 (starvation) : 특정 버스 마스터가 오랫동안 버스를 사용하지 못하는 현상
제어 신호들의 연걸 구조에 따른 버스 중재 방식
1. 병렬 중재 방식 (parallel arbitration scheme)
- 버스 마스터와 같은 수의 버스 요구선 및 승인 신호선들이 필요
- 각 버스 마스터가 독립적인 버스 요구 신호선을 가지며, 중재 회로로 입력
- 버스 승인 신호가 각 버스 마스터에 대하여 별도로 발생
2. 직렬 중재 방식 (serial arbitration scheme)
- 버스 요구선 및 승인 신호선이 각각 한 개씩만 필요
- 각 신호선이 버스 마스터들 간에 직렬로 접속
- 접속되는 순서는 마스터들의 우선순위 (priority)에 따라 결정
- 데이지 체인 방식 (daisy chain scheme)
버스 중재기의 위치에 따른 버스 중재 방식
1. 중앙 집중식 중재 방식 (centralized arbitration scheme)
시스템 내에 한 개의 버스 중재기만 존재
2. 분산 중재 방식 (decentralized arbitration scheme)
시스템 내에 여러 개의 버스 중재기가 존재
장점
- 중재 회로가 간단 -> 동작 속도가 빠름
- 어떤 중재기가 고장이 나더라도 해당 마스터에만 영향 -> 신뢰도가 높음
단점
- 고장을 일으킨 중재기를 찾아내는 방법이 복잡
- 한 중재기의 고장이 전체 시스템의 동작에 영향을 줄 수도 있음
조합된 실제 버스 중재 방식 - 아래와 이어짐
1. 병렬 중재 방식 (parallel arbitration scheme)
- 중앙 집중식 고정 우선순위 방식 (centralized fixed priority scheme)
- 분산식 고정 우선순위 방식 (decentralized fixed priority scheme)
- 가변 우선순위 방식 (dynamic priority scheme)
2. 직렬 중재 방식 (serial arbitration scheme)
- 중앙 집중식 직렬 중재 방식 (centralized serial arbitration scheme)
- 분산식 직렬 중재 방식 (decentralized serial arbitration scheme)
3. 폴링 방식 (polling scheme)
- 하드웨어 폴링 방식
- 소프트웨어 폴링 방식
병렬 중재 방식
1. 중앙 집중식 고정 우선순위 방식
중재기에 가까이 위치한 순서대로 우선순위가 정해진 방식

마스터 1이 버스 사용 중일 때, 마스터 3이 버스 사용을 요구한 경우
- 마스터 3이 버스 요구 신호(BREQ3 - bus request 3)를 보내면
- 버스 중재기가 마스터 3에게 버스 승인 신호(BGNT3 - bus grant 3)를 보낸다.
- 마스터 1이 버스 사용을 끝내고 버스 사용중 신호(BBUSY)를 비활성화하면,
- 마스터 3이 BBUSY 신호를 다시 활성화하고 버스 사용을 시작.


2. 분산식 고정 우선순위 방식
모든 버스 마스터들이 별도의 중재기를 가지는 방식

3. 가변 우선순위 방식
회전 우선순위 (Rotating priority)
- 매 중재 동작이 끝난 후에는 모든 마스터들의 우선순위가 한 단계씩 낮아지고 가장 우선순위가 낮았던 마스터가 최상위 우선순위를 가지도록 하는 방법
- 일단 버스 사용 승인을 받은 마스터는 최하위 우선순위를 가지며 바로 다음에 위치한 마스터가 최상위 우선순위를 가지도록 하는 방법. (acceptance - dependent 식 회전 우선순위 방식)

임의 우선순위 (Random priority)
동등 우선순위 (Equal Priority)
비동기식 버스 시스템에서만 사용하며, 경합이 발생할 경우 보통 FIFO 사용
최소 최근 사용 (Least recently used)
직렬 중재 방식
1. 중앙 집중식 직렬 중재 방식
데이지 체인 방식 (daisy-chain)

BGNT 신호가 데이지 체인된 중앙집중식 직렬 중재 방식. 버스 중재기에 가까운 마스터가 높은 우선순위를 가짐.
2. 분산식 직렬 중재 방식
- 데이지 체인된 버스 승인 신호가 버스 중재기들을 순환형으로 접속
- 가변 우선순위 : 이전 버스 승인을 받은 마스터의 우측이 최상위
- 분산식이지만 단일 결함 (single failure)이 전체 시스템에 영향

폴링 방식
버스 중재기가 각 마스터들이 버스 사용을 원하는 지를 주기적으로 검사하여 버스 승인 여부를 결정
1. 하드웨어 폴링 방식
- 버스 중재기 내의 고정된 하드웨어에 의하여 모든 폴링 동작과 중재 기능이 수행되는 메커니즘
- 버스 중재기와 각 버스 마스터 간에 폴링 동작을 위한 폴링 선이 존재함
- 이진 코드화된 폴링 주소를 사용함. -> 2^n개의 마스터를 가진 시스템에서는 n개의 폴링 선들이 필요
- 중재기가 마스터를 검사하는 순서에 의하여 우선순위 결정

2. 소프트웨어 폴링 방식
- 구성은 하드웨어 폴링 방식과 동일
- 버스 중재기에 프로그램을 실행할 수 있는 프로세서가 포함 -> 지능 부여
- 폴링 할 마스터의 주소를 기억 가능
- 폴링 순서 변경 가능 - 속도는 느리지만 융통성(flexibility)이 높음. 결함 마스터를 폴링 순서에서 제외시킴으로써 시스템 결함 허용도를 높임
- 중재에 소요되는 시간이 길기 때문에 분산 시스템의 공유 버스 또는 메시지 전송 시스템(message-passing system)의 중재 방식으로 적절함.
캐시 일관성 유지 방법
캐쉬 일관성 유지 (cache consistency)
다중 프로세서 시스템에서 공유 데이터가 여러 프로세서들의 캐시에 복사본으로 존재하는 상황에서 캐쉬들과 주기억장치에 저장된 데이터들 간에 일관성을 유지하도록 해주는 기술.
데이터 불일치 (data inconsistency)의 주요 원인들
- 변경 가능한 데이터의 공유 (sharing of writable data)
- 입출력 동작 (I/O activity)
- 프로세스 이주 (process migration)
프로세스 이주 (process migration) : 대칭적 다중 프로세서 시스템에서 프로세스를 처리하던 프로세서가 변경되는 현상.
1. 공유 캐시를 사용하지 않는 방법
공유 캐쉬 (shared cache)
- 모든 프로세서들이 하나의 캐시를 공유하도록 하는 방법
- 동시 액세스가 가능하도록 여러 개의 모듈들로 구성
- 프로세서들과 공유 캐시 모듈들은 버스 또는 상호연결망에 의해 연결
장점 | 항상 캐쉬 일관성이 유지됨 |
단점 |
|
[예] Alliant 사의 FX 시스템 : 2~4개의 프로세서들이 하나의 캐쉬 공유
2. 공유 변수는 캐시에 저장하지 않는 방법
변경 가능한 공유 데이터는 주 기억장치에만 저장함.
캐쉬 저장 불가능 데이터 (non-cacheable data)
- Lock 변수, 프로세스 큐(process queue)와 같은 공유 데이터 구조
- 임계 영역에 의해 보호되는 데이터들
단점
- 사용자와 컴파일러에게 투명하지 않다. (non-transparent)
-> 컴파일러가 각 데이터에 tag를 붙여야 하며, run-time 동안 그것을 검색할 수 있는 H/W 필요 - Non-cacheable data와 같은 블록에 포함된 일반 데이터의 캐쉬 저장도 불가능 -> 캐쉬 적중률 저하
- 모든 I/O 데이터들도 캐쉬 저장 불가능 -> 캐쉬 적중률 저하
3. 잠금 변수들은 캐쉬에 저장하지 않는 방법
임계 영역을 보호하는 lock 변수들만 'non-cacheable'로 지정
캐쉬 플러쉬(cache flush) 필요
- 임계 영역에서 변경한 공유 데이터를 주기억장치에 갱신했을 때, 다른 캐시들에 있는 모든 복사본들을 무효화시키는 동작
- write-back 경우에는 H/W가 복잡
단점
- 전채 캐시에 플러쉬 필요
- 임계 영역 내에서 액세스 된 데이터의 변경 여부를 표시하는 태그 필요
- I/O 동작의 수행 전에 캐시 플러쉬 필요
-> 적은 용량의 캐쉬 시스템에서 적합
그래서. .주로 버스 감시 매커니즘을 사용하는데 내용이 넘 많아서 다음 포스팅에도 덧붙이겠다!
'Computer Engineering > 병렬 처리(Parallel Processing)' 카테고리의 다른 글
[병렬 처리] 고성능 입출력 시스템 구조 (0) | 2019.06.20 |
---|---|
[병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류 (0) | 2019.06.20 |
그래픽 처리 유니트 (GPU) - GPU의 개념과 CUDA 프로그래밍 (0) | 2019.06.20 |
단일-버스 다중프로세서 시스템(2) - 캐쉬 일관성 유지를 위한 버스 감시 매커니즘 (MESI protocol), 디렉토리 기반 캐쉬 프로토콜 (0) | 2019.06.18 |
다중-버스 다중 프로세서 시스템 - 크로스바 네트워크, 다중-버스, 계층 버스 구조 (0) | 2019.06.17 |
댓글
이 글 공유하기
다른 글
-
[병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류
[병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류
2019.06.20상호연결망(Interconnection Network)의 분류 1. 정적 상호 연결망 (Static interconnection network) 시스템 요소들 간에 직접 연결된 경로를 가지며, 연결 구조가 고정된 연결망 [예] ring, tree, mesh, torus 등 2. 동적 상호 연결망 (Dynamic interconnection network) 시스템 요소들 간의 연결 경로가 실행 시간 (run-time) 동안에 다양하게 변경될 수 있으며, 프로그램 실행중의 통신 패턴과 상황에 따라 필요한 경로를 설정하여 사용할 수 있는 연결망 [예] Omega network, Delta network 등 네트워크 성능 파라미터들 대역폭 (Bandwidth) : 네트워크를 통하여 전송될 수 있는 최대 데이터 … -
그래픽 처리 유니트 (GPU) - GPU의 개념과 CUDA 프로그래밍
그래픽 처리 유니트 (GPU) - GPU의 개념과 CUDA 프로그래밍
2019.06.20원래 GPU는 실시간 그래픽 처리용으로 개발되었으나, 계산 능력이 강화되어 일반적인 산술 연산 처리에도 쉽게 이용할 수 있도록 개선되면서 다양한 데이터 병렬 응용(data parallel application)들을 위한 가장 이상적인 보조 프로세서로서의 입지를 굳혀가고 있다. 초기 GPU는 몇 가지 치명적인 결점들을 가지고 있었는데 다양한 데이터 병렬 응용을 위한 범용 GPU로 발전하게 된 계기가 있는데, 이는 아래와 같다. 통합된 그래픽 및 계산 구조 (unified graphic and compute architecture) : 그래픽 응용뿐 아니라 일반적인 계산에도 적합한 하드웨어 구조 CUDA (Compute Unified Device Arcitecture) 프로그래밍 모델 : 일반적인 프로그래밍… -
단일-버스 다중프로세서 시스템(2) - 캐쉬 일관성 유지를 위한 버스 감시 매커니즘 (MESI protocol), 디렉토리 기반 캐쉬 프로토콜
단일-버스 다중프로세서 시스템(2) - 캐쉬 일관성 유지를 위한 버스 감시 매커니즘 (MESI protocol), 디렉토리 기반 캐쉬 프로토콜
2019.06.18캐시 일관성 유지 방법 중 가장 많이 사용하는 버스 감시 메커니즘에 대한 소개이다. 버스 감시 매커니즘을 이용하는 방법 데이터 일관성 유지를 위하여 버스 감시 기능을 가진 H/W 모듈인 스누프 제어기(snoop controller : 버스 감시기 (bus watcher))를 추가하는 방법 스누프 제어기(Snoop controller) 다른 프로세서에 의한 버스 상의 주기억장치 액세스의 주소를 감시하여, 그 결과에 따라 자신의 캐시 블록 상태를 조정하는 HW 모듈 각 캐쉬 블록들은 상태 비트들을 가지며, 상태의 수와 종류는 쓰기 방식 및 일관성 유지 프로토콜에 따라 달라짐. - Write-through coherence protocol - Write-back coherence protocol 1. Writ… -
다중-버스 다중 프로세서 시스템 - 크로스바 네트워크, 다중-버스, 계층 버스 구조
다중-버스 다중 프로세서 시스템 - 크로스바 네트워크, 다중-버스, 계층 버스 구조
2019.06.17다중-버스 다중 프로세서 시스템 단일 공유-버스 시스템의 버스 경합에 의한 지연을 줄이기 위하여 연결 통로를 제공하기 위한 시스템 구조이다. 종류는 아래와 같다. 크로스바 네트워크 (crossbar network) : 프로세서와 기억장치 모듈들 간에 완전 연결 (full connection)을 제공 다중-버스 구조(multiple-bus structure) : 공유 버스의 수가 두 개 혹은 그 이상이지만, 프로세서 수보다는 더 적은 구조 계층 버스 (hierarchical bus) 구조 : 버스의 역할(용도)이 서로 다른 계층적 구조의 다중-버스 구조 1. 크로스바 네트워크 Carnegi-Mellon(멜론…!) 대학에서 연구용으로 개발한 C.mmp 시스템에서 처음 사용되었다. 시스템 요소들(프로세서, …
댓글을 사용할 수 없습니다.