컴퓨터 버스
- 버스: CPU와 주기억장치, 외부의 입출력장치 간에 정보를 전송하기 위해 공용으로 사용하는 전기적 통로
데이터 버스
- 실질적인 정보 데이터를 전달하는 버스
- 양방향성 버스
- 데이터 버스폭(선들의 수) = CPU와 기억장치 사이 한 번에 전송되는 비트 수
주소 버스
- 각 장치의 주소나 기억장치 위치를 나타내는 정보들이 지나가는 버스
- 단방향성 버스 (CPU → 기억장치 및 I/O 제어기)
- 주소 버스의 비트수에 의해 접근 가능한 전체 기억장치 용량이 결정됨
제어 버스
- 수행될 다양한 데이터 전송 동작을 구별하기 위한 신호들이 지나가는 버스
- 양방향성 버스
버스의 형태
- 연결되는 장치에 따라서 3가지 형태가 존재함
내부 버스 | 컴퓨터 시스템 내의 칩들 사이에 신호를 전달하는 전형적인 내부 버스 |
외부 버스 | 주변장치들 사이에서 신호를 전달하기 위한 범용 인터페이스 버스 |
대부분 표준화(GPIB, ISA 버스, EISA 버스, PCI 버스 등)되어 있으며 기능버스라고도 함 | |
시스템 카드들을 연결하는 버스 |
기억장치의 주소 버스, 공유된 데이터 버스, 제어신호 버스 등과 관련이 있으며, 표준화가 이루어지지 않은 문제점이 있음 |
버스의 분류
분류 기준 | 버스 종류 | |
버스 위치 | 내부 버스 | |
외부 버스 | ||
데이터 처리량 | ISA 버스 | EISA 버스 |
VESA 버스 | PCI 버스 |
버스 위치에 따른 분류
- 내부 버스
- 컴퓨터 시스템에서 시스템 내 또는 장치 내에 밀폐되어 있는 버스
- 기억, 연산, 제어 기능을 구현하기 위한 CPU와 주기억장치, 입출력장치, 외부 기억장치, 주변장치, 통신처리장치 등의 제어부 사이를 연결하는 버스
- 외부장치에 해당되는 입출력장치, 외부기억장치, 주변장치, 통신처리장치 등은 내부 버스를 경유해서 외부 버스와 연결됨
- 외부 버스
- 내부 버스를 경유하여 CPU와 외부 장치를 연결하는 버스
- 내부 버스와는 달리 공개되어 있는 경우가 많은데, 다중 판매자 환경에서 컴퓨터 시스템을 구축하는 경우가 많기 때문
- 외부 버스의 공개화 또는 표준화는 장치 설계상 필수 조건으로, 표준화되었거나 업계 표준이 되어 있는 버스로는 ISA 버스, EISA 버스, PCI 버스, PCI Express 버스 등
데이터 처리량에 따른 분류
- ISA 버스
- 1981년 개발, 호환성 좋지만 속도가 느림
- CPU와 각종 주변장치를 연결하여 정보를 전달하는 버스 설계 규격
- IBM PC와 호환 기종의 표준 확장 슬롯에 플러그인 카드 또는 보드를 삽입하는데 사용, PC/AT 버스 또는 AT 버스라고도 함
- IBM PC/AT의 16비트 버스 구조는 업계 표준 구조라고 함
- 속도는 이론상 4MB/s, 실속도 2MB/s 정도로 느린 편이지만, 호환성과 저렴한 가격 등으로 인해 널리 사용되었다가 PCI 버스로 대체됨
- EISA 버스
- ISA의 기능 향상 버스 (1988)
- 32bit, 8MHz → 32MB/s
- 16비트의 ISA 버스를 32비트로 확장하고 개선한 PC/AT 호환기의 버스 규격으로 '확장 ISA' 또는 '확장 업계 표준 구조'라 불렸음
- EISA 버스는 IBM사에서 개발된 MCA(Micro Channel Architecture) 버스에 대항하여 컴팩과 인텔사 중심으로 개발한 것임
- EISA 버스는 MCA 버스와는 달리 ISA와 호환성이 있음
- EISA 버스는 ISA 버스보다 훨씬 높은 주파수로 동작할 수 있고 데이터 전송 속도도 훨씬 고속임
- 결과적으로 하위 기종의 호환성 단절이라는 위험을 극복하면서 버스를 고속화 함
- 가격이 비교적 비싸기 때문에 크게 보급되지 않았으며, PCI 버스의 등장으로 현재는 널리 사용되지 않았음
- VESA 로컬 버스
- 인텔 80486 컴퓨터에서 사용 시작, 데이터 전송속도 개선
- 비디오 일렉트로닉스 표준 협회 VESA에서 표준화한 로컬 버스 규격으로 간략하게 VLB 또는 VL 버스라고도 함 (1992년 표준화)
- 로컬 버스는 버스 제어기를 통하지 않고 직접 CPU와 데이터를 송수신하는 방식을 채택하여 전송 속도를 높였음
- VESA 로컬 버스는 CPU와 주변장치를 직접 연결하여 고속으로 데이터를 전달하는 데이터 통로를 제공하므로 기존의 ISA 버스나 EISA 버스에 비해 데이터 전송속도가 매우 빠른 것이 특징임
- 32bit, 33MHz = 133MB/s
- VESA 로컬 버스 확장 슬롯에 대용량의 데이터 고속 전송이 요구되는 비디오 카드나 소형 컴퓨터 시스템 인터페이스 (SCSI - Small Computer System Interface) 확장 보드를 삽입 가능했음
- VESA 로컬 버스는 32비트 또는 64비트 버스(펜티엄 CPU의 경우)
- PCI 버스
- 데이터 전송속도 빠름, 플러그 앤 플레이 지원
- CPU와 주변장치를 연결하는 ISA나 EISA, VESA의 후속으로 개발된 로컬 버스 규격으로 PCI 버스 또는 PCI 로컬 버스로 불림
- 주소를 전달하는 신호와 데이터를 전달하는 신호를 시분할 다중화하여 하나의 선을 가지고 전송하기 때문에 신호선의 수가 적음
- 32비트 또는 64비트 버스로 사용 가능하며, CPU와 버스 사이에 브리지 회로를 두어 CPU의 종류가 달라도 그에 대응하는 브리지 회로를 갖추기만 하면 어떤 CPU와도 연결 가능
- 버스 마스터링을 지원하여 CPU와는 독자적으로 작업을 처리할 수 있음
- 버스 마스터링: CPU를 통하지 않고 직접적으로 버스 상의 다른 주변 기기들과 통신할 수 있게 하는 버스 구조
- 따라서 전송 속도가 서로 다른 여러 주변장치를 접속해도 동영상 등의 멀티미디어 데이터를 우선적으로 처리할 수 있음
- 1992년 인텔에서 펜티엄 기반 시스템을 위해 개발
- 32,bit, 33MHz = 133MB/s
- PCI 이후의 I/O 버스들은 대부분 PnP 기능을 지원
- Window95 이후 OS에서 지원하기 시작
- PnP 기능을 지원하려면 I/O 카드, 주변장치, 시스템 보드, 운영체제에서 PnP 기능을 지원해야 함
- PCI Express
- 기존의 PCI 병렬 버스의 성능을 향상시키고 소프트웨어 관련 호환성을 유지하는 방식
- 스위치 패브릭(switched fabric) 구조와 점대점(point to point) 패킷 연결망 방식을 채택하여 성능과 확장성을 향상시켰으며, 개인용 컴퓨터의 고속 버스 규격 (AGP를 대체)
- 2004년부터 본격적으로 쓰이기 시작했으며, 8GB/s 정도의 데이터 전송 가능했음 (PCIe 1.0 규격)
- PCIe 2.0(max 16GB/s)과 PCIe 3.0(max 26GB/s) 규격으로 발전
- 지금은 거의 PCI-E 버스만 남아 비디오 카드에 사용되고 있음
- PCI와 PCI-E는 호환이 전혀 안됨
버스의 폭
- 버스 선의 수는 버스가 데이터를 전송할 수 있는 능력으로 버스 폭이라고도 함
- 버스의 폭은 한 번에 전송할 수 있는 데이터 비트의 수를 나타냄
- 버스 선의 수는 기억장치 주소의 비트 수와 제어 신호의 수에 따라 결정됨
- 소형 컴퓨터: 50~100개의 버스 선을 사용하므로, 20~100 비트의 데이터 전송 가능
- 중대형급 시스템: 100개 이상의 버스 선을 사용하므로 100 비트 이상의 데이터 전송 가능
버스의 대역폭
- 버스의 속도를 나타내는 척도
- 단위 시간당 전송할 수 있는 데이터 양을 나타내며, 버스 클록 주기에 의해 결정됨
컴퓨터의 기본 모듈
- 컴퓨터 시스템을 구성하는 기본적인 장치인 CPU, 주기억장치, 외부기억장치, 입출력장치들을 컴퓨터의 기본 모듈이라고 함
- 컴퓨터의 기본 모듈들은 필요에 의해서 상호 간의 데이터를 전달하고 전달받는 통신 작업을 수행
컴퓨터 기본 모듈들이 서로 전달하는 데이터의 전송 유형의 분류
- 프로세서 ↔ 메모리
- CPU가 주기억장치에서 명령어와 데이터를 읽고, CPU가 기억장치에서 데이터를 저장하는 유형
- 프로세서 ↔ I/O
- CPU가 입출력 모듈을 통하여 입출력장치에서 데이터를 읽어오고 내보내는 전송 유형
- I/O ↔ 메모리
- DMA 제어기의 동작으로 입출력 모듈이 주기억장치에 직접 접근하여 주기억장치와 데이터를 교환하는 유형
시스템 버스
- CPU를 중심으로 주기억장치, 외부기억장치, 입출력장치가 데이터를 교환하는 통로
- 만약 어떤 모듈이 다른 모듈에게 데이터를 보내거나 받으려면 먼저 버스의 사용권을 얻고, 그 후에 데이터를 보내거나 데이터 전송 요구 신호를 보냄
시스템 버스의 기본 동작
쓰기 동작 과정
- 버스 마스터가 버스 사용권을 획득한 다음, 주소 버스를 통하여 기억장치 주소를 전달
- 이와 동시에 데이터 버스로 데이터를 전송하여 제어 버스로 쓰기 신호를 전송
읽기 동작 과정
- 우선 버스 마스터가 버스 사용권을 획득하고 주소 버스로 해당 장치의 주소를 전달
- 이와 동시에 제어 버스를 통해서 읽기 신호를 전달
- 데이터 버스를 통해서 목적한 데이터가 수신될 때까지 대기
유형별 분류
전용 버스
- Dedicated Bus
- 지정된 신호만을 전송할 수 있는 버스
데이터 버스 | 주소 버스 | 제어 버스 |
데이터를 전달하는 전용 버스 | 주소만을 전달하는 전용 버스 | 제어 신호를 전달하는 전용 버스 |
다중화 버스
- Multiplexed Bus
- 제어 신호에 의해 여러 용도의 신호를 전달하는 버스
- 주소 및 데이터 버스는 주소 유효 신호를 이용해서, 주소 데이터를 전달하거나 일반 데이터를 전달할 수 있음
- 다중화 버스의 장점은 버스로 사용되는 선의 수가 적기 때문에 공간과 비용을 절약 가능함
- 제어 회로가 복잡하고, 시분할 다중화(time multiplexing) 방식으로 인한 성능 저하됨
기능별 분류
데이터 버스
- Data Bus
- 컴퓨터 시스템을 구성하는 장치들 사이에 데이터를 전송하는데 사용되는 선들의 집합
- 연결된 장치들 간에 서로 양방향 전송이 가능함
- 데이터 버스의 폭(선들의 수)은 CPU와 주기억장치 사이에 한 번에 전송되는 비트 수(워드)가 됨
- 데이터 버스의 비트 수 = MBR의 비트 수 = IR의 비트 수
주소 버스
- Address Bus
- CPU가 주기억장치로 데이터를 쓰기 동작을 하거나 읽기 동작을 할 때, 해당하는 주기억장치 장소를 지정하는 주소를 전송하기 위한 선들의 집합
- 주소 버스는 CPU에서 주기억장치 및 입출력 모듈로 주소를 전송할 수 있지만, 반대로는 주소를 전송할 수 없음 (주소 버스는 단방향 전송)
- 주소 버스의 비트 수는 CPU가 접근할 수 있는 기억장치의 주소 수를 결정 (기억장소의 수를 결정)
- 주소 버스의 비트 수 = PC의 비트 수 = MAR의 비트 수
제어 버스
- Control Bus
- CPU와 주기억장치 및 입출력장치 사이에 제어 신호들을 전송하는 선들의 집합
- 컴퓨터에서 사용되는 주요 제어 신호
- 기억장치 읽기/쓰기
- 입출력 읽기/쓰기
- 전송 확인
- 버스 요구
- 버스 승인
- 인터럽트 요구
- 인터럽트 확인
- 클록
- 리셋
버스의 동작 타이밍에 따른 분류
- 시간적 관계에 따라서 버스의 동작은 동기식 버스와 비동기식 버스로 구분
동기식 버스
- 시스템 버스에서 모든 버스 동작이 공통 버스 클록을 기준으로 발생
- 버스 동작이 클록에 의해 결정
- 인터페이스 회로가 간단하다는 장점이 있지만, 버스 클록의 주기가 가장 오래 걸리는 버스 동작의 소요시간을 기준으로 동작시간이 결정된다는 단점이 있음
- 클록 주기보다 더 짧은 시간이 걸리는 버스 동작의 경우에는 동작이 완료된 후에도 다음 주기가 시작될 때까지 대기해야 함
비동기식 버스
- 버스 동작들의 발생 시간이 관련된 다른 버스 동작의 발생 여부에 따라 결정
- 버스 상의 사건 발생이 이전 사건의 발생에 의해 결정
- 각 버스 동작이 완료 즉시 연관된 다음 동작이 발생하기 때문에 동기식 버스와는 달리 낭비되는 시간이 없음
- 연속 동작을 처리하기 위한 인터페이스 회로가 복잡 → 전체적으로 시스템 복잡도가 적은 소규모 컴퓨터 시스템에서 비동기식 버스 사용
- 시스템의 복잡도가 큰 중형급 이상의 시스템에서는 인터페이스 회로가 간단한 동기식 버스를 사용하는 것이 더 유
관련 장치에 따른 제어 신호 분류
CPU, 주기억장치와 관련된 제어 신호
- 기억장치 쓰기 신호: 버스에 적재된 데이터를 주소가 지정하는 기억장치의 장소에 저장되도록 하는 제어 신호
- 기억장치 읽기 신호: 주소가 지정하는 기억장치 장소의 내용을 읽어서 버스에 적재하는 제어 신호
CPU, 입출력장치와 관련된 제어 신호
- 입출력 쓰기 신호: 버스에 적재된 데이터를 지정된 입출력장치로 출력되게 하는 제어 신호
- 입출력 읽기 신호: 지정된 입출력 장치에서 데이터를 읽어서 데이터 버스에 적재하게 하는 제어 신호
- 전송 확인 신호: 데이터 전송 동작이 완료되었음을 알려주는 신호
버스 중재에서 사용되는 제어 신호
- 버스 중재(Bus Arbitration): 버스에 연결된 여러 장치가 동시에 버스를 사용하려면 각 장치들이 순서대로 버스를 사용하도록 제어해주는 기능
- 버스 마스터(Bus Master): 시스템 버스에 접속되는 장치들 중에서 버스 사용의 주체가 되는 CPU, 입출력 모듈 등의 요소들
- 버스 중재는 시스템 버스에 접속된 버스 마스터들이 동시에 버스를 사용하고자 할 때 순서대로 마스터 한 개씩 버스를 사용할 수 있게 해 줌
- 버스 중재를 위한 제어 신호 선들의 집합을 중재 버스라 함
버스 요구 신호 | 버스 마스터가 버스 사용을 요청했음을 알리는 제어 신호 |
버스 승인 신호 | 버스 사용을 요청한 버스 마스터에게 버스의 사용을 허가하는 제어 신호 |
버스 사용 중 신호 | 현재 다른 버스 마스터가 버스를 사용하고 있는 상태임을 나타내는 제어 신호 |
인터럽트 버스에서 사용되는 제어 신호
- 인터럽트 버스는 인터럽트 동작을 위한 제어 신호 선들의 집합
- 인터럽트 요구 신호: 입출력장치가 인터럽트를 CPU로 요구했음을 알리는 신호
- 인터럽트 확인 신호: CPU 인터럽트 요구를 인식했음을 알리는 신호
- 버스 클록: 동기식 버스에서 버스 동작들의 시작 시간을 일치(동기화)시키기 위하여 제공회는 공통 신호
- 같은 주기를 가진 1과 0이 규칙적으로 반복되는 신호
- 리셋 신호: 컴퓨터 시스템의 모든 요소의 동작을 초기화시키는 신호
다중 버스 계층 구조
- Multiple-Bus Hierarchy
- 다중 버스 계층은 시스템 버스에 연결된 각 장치들의 속도를 고려하여 효율적인 연결이 되도록 버스 구조를 설계해야 하며, 이를 위해 제안된 것
- 단일 버스 구조: 하나의 시스템 버스에 컴퓨터 구성 장치들이 연결되는 가장 간단한 구조
- 단일 버스에서는 장치가 버스에 많이 연결될수록 각 장치가 버스의 사용을 조정하거나 또는 중재하는 시간이 길어져서, 전파 지연(Propagation Delya)이 증가할 수 있음
- CPU가 다른 장치로 데이터를 요청하는 것이 주된 버스의 동작이므로 버스의 병목 현상이 발생함
- 데이터의 전송 요구량의 증가로 처리 가능한 버스 용량을 초과하여 병목 현상이 나타나는 것
- 데이터 전송률을 증가시키거나 버스 폭을 확대해 부분적으로 해결 가능하지만, 단일 버스 구조의 한계(전파 지연, 병목 현상)에 대한 근본적인 해결 방법은 아님
- 다중 버스 계층: 전파 지연과 병목 현상이 발생하는 단일 버스의 문제점을 해결하기 위해 설계된 버스로 여러 버스를 사용하는 계층적 구조가 도입됨
- 2계층 다중 버스 구조: 시스템 버스, 확장 버스
- 3계층 다중 버스 구조: 시스템 버스, 확장 버스, 고속 버스
2계층 다중 버스 구조
- 시스템 버스가 중심이 되고 이것에 주기억장치와 캐시 기억장치, 확장 버스 인터페이스가 연결된 구조
- 접근이 가장 많이 일어나는 주기억장치만이 시스템 버스에 단독으로 연결되고 CPU는 내부의 지역 버스를 이용해서 지역 입출력 제어기, 캐시기억장치와 연결됨
- 캐시기억장치는 시스템 버스를 통해 주기억장치와 연결됨
- 주변장치들이 연결되는 하위 계층에서는 확장 버스에 입출력 장치가 연결되고, 확장 버스 인터페이스를 통해서 시스템 버스와 연결됨
- 접근 빈도가 적고, 처리 속도가 저속인 장치들은 시스템 버스에 직접 연결되지 않고 확장 버스를 거쳐서 연결됨
- 단일 버스 구조에서 발생하던 주기억장치에 대한 전파 지연과 병목 현상을 피할 수 있음
- CPU와 주기억장치 간에 데이터를 송신하는 경우와 주변장치와 주기억장치가 직접적으로 데이터를 송신하는 경우에만 시스템 버스를 이용하는 구조이기 때문
3계층 다중 버스 구조
- 외부 연결 장치들에게 요구되는 데이터 전송속도에 따라서 고속 버스와 확장 버스로 분류됨
- CPU의 지역 버스, 시스템 버스, 고속 버스가 브리지에 연결되어 있음
- 고속 버스와 확장 버스에 연결되는 주변장치들의 구분은 데이터 처리 속도에 따라 결정됨
- 고속 버스에는 고속의 처리를 필요하는 그래픽 장치, 비디오 장치, 고속의 통신 장치가 연결됨
- 최하위 계층의 확장 버스에는 고속의 데이터 처리를 요구하지 않은 외부 장치들이 연결됨 (팩스, 모뎀 등)
- 이 구조에서 확장 버스, 고속 버스, 시스템 버스는 CPU 간의 데이터 전달과 수신에 전혀 관여하지 않음
- 3계층 다중 버스 구조는 단일 버스의 전파 지연과 병목 현상을 피하는 구조
- 2계층 다중 버스 구조와 비교할 때 전파 지연의 개선 효과와 병목 현상의 제거 정도가 더 높음
버스 중재
- Bus Arbitration
- 버스 경합이 발생했을 때, 각 버스 마스터가 미리 정해진 기준에 따라 순서대로 버스를 사용할 수 있게 해주는 동작
- 버스 중재를 수행하는 하드웨어 모듈을 버스 중재기(Bus Arbiter)라고 함
- 버스 마스터: 시스템 버스에 연결된 컴퓨터의 기본 장치들
- 버스 경합: 여러 개의 버스 마스터들이 동시에 시스템 버스의 사용을 요구하는 경우, 버스 경합이 발생
버스 중재기의 역할
- 보통 버스 중재기의 역할은 버스 컨트롤러가 담당함
- 버스 마스터 간에 버스의 사용권에 대한 경합이 발생하면 이에 대한 조정을 해서 어느 버스 마스터가 먼저 버스를 사용할 지를 결정해주는 장치
- 임의의 버스 마스터로부터 버스 요청 신호가 들어오면 버스 중재기는 버스 사용 중 신호를 검사한 후, 다른 장치가 버스를 사용 중이 아닐 때만 버스 승인 신호를 보내줌
버스 중재 방식의 분류
버스 중재기의 위치에 따른 분류
- 중앙집중식 중재 방식 - Centralized Arbitration Scheme
- 컴퓨터 시스템 내에 버스 중재기가 한 개만 존재하는 방식으로, 여러 버스 마스터들이 생성하는 버스 요구 신호들은 버스 중재기가 단독으로 수신
- 그 다음 버스 중재기는 미리 정해진 중재 원칙에 따라 선택된 버스 마스터에게 버스를 사용할 수 있는 승인 신호를 전달
- 분산식 중재 방식 - Decentralized Arbitration Scheme
- 여러 개의 버스 중재기가 존재하는 방식으로 버스 마스터들이 각각 별도의 버스 중재기를 가지고 있음
- 버스 중재 동작이 각 버스 마스터의 버스 중재기에 의하여 이루어지는 방식
- 장점: 각 버스 마스터가 소유하고 있는 버스 중재 회로가 간단하여 동작 속도가 빠르며, 한 버스 중재기에 고장이 발생하여도 해당 버스 마스터에만 영향을 미치므로 신뢰도가 높음
- 단점: 고장난 버스 중재기를 찾는 방법이 복잡하고 하나의 버스 중재기 고장이 전체 시스템에 영향을 줄 수 있는 가능성이 존재
버스 중재 제어 신호들의 연결 구조에 따른 분류
- 병렬 중재 방식 - Parallel Arbitration Scheme
- 버스에 연결된 버스 마스터들은 독립적으로 버스 사용 요구 신호와 버스 사용 승인 신호를 사용하므로 버스 마스터와 같은 수의 버스 요구선과 승인 신호선들이 필요한 방식
- 각 버스 마스터가 독립적인 버스 요구 신호선을 통해서 각각의 버스 요구 신호를 버스 중재 회로로 입력함
- 버스 중재기는 버스 승인 신호를 각 버스 마스터에 대응하여 별도로 발생시킴
- 직렬 중재 방식 - Serial Arbitration Scheme
- 버스 요구선과 승인 신호선이 각각 한 개 씩만 존재하며, 각 신호선이 버스 마스터들에 직렬로 접속하는 방식
- 접속되는 버스 마스터들의 순서에 의해서 우선순위가 결정되기도 함
우선순위 결정 방식에 따른 분류
- 버스 경합이 발생하면 우선순위가 높은 버스 마스터가 버스를 먼저 사용
- 고정 우선순위 방식 - Fixed Prioriy Scheme
- 각 버스 마스터에 우선순위가 지정되면 고정되어 변경할 수 없는 방식
- 즉, 정해진 우선순위 방식이 하드웨어적으로 고정되어서 변경이 불가능
- 가변 우선순위 방식 - Dynamic Prioriy Scheme
- 각 버스 마스터의 우선순위를 버스 마스터의 상태에 따라서 수시로 변경할 수 있는 방식
병렬 중재 방식과 우선순위 방식이 조합된 버스 중재
중앙집중식 고정 우선순위 방식
- 버스의 사용을 요구하는 모든 버스 마스터는 버스 중재기에 연결되는데, 버스 중재기와 가장 가까이 위치한 버스 마스터가 우선순위가 가장 높으며 버스 중재기에 멀어질수록 우선순위가 낮아짐
- 우선순위는 하드웨어적으로 설계되어 있어서 변경이 불가능
- 고정적인 우선순위를 제공하며, 우선순위를 변경하기 위해서는 회로의 설계를 변경하여야 함
분산식 고정 우선순위 방식
- 버스에 연결된 모든 버스 마스터가 독립적으로 버스 중재기를 보유하는 구조
- 버스 경합 상태에서 버스 사용 요청이 발생하면 정해진 우선순위에 따라 버스를 사용함
- 중앙집중식 고정 우선순위 중재 방식에 비하여 독립된 중재 회로가 간단하므로 버스 사용 여부에 대한 동작 속도가 빠르다는 장점
- 어느 한 버스 중재기에서 고장이 발생하면, 중재기들에서 고장을 찾아내는 방법이 복잡하며, 한 중재기의 고장이 전체 시스템의 동작에 영향을 미칠 수가 있음
가변 우선순위 방식
- 고정 우선순위 방식은 버스 마스터 상태의 우선순위를 변경하기 위해서 하드웨어 변경이 필수적이어서 불편함
- 시스템의 상태 또는 조건에 따라서 각 버스 마스터들의 우선순위를 계속 변화시킬 수 있는 방식
- 장점: 모든 버스 마스터가 공정하게 버스를 사용할 수 있음
- 단점: 우선순위의 계속적인 변화는 중재 회로가 복잡해짐
가변 우선순위 방식의 종류
- 회전 우선순위 방식: 돌아가면서 차례로 사용
- 버스 중재기에서 버스 사용 승인을 받은 버스 마스터는 최하위 우선순위가 되어 다음 버스 사용 승인을 기다림
- 바로 다음에 위치한 버스 마스터가 사용할 수 있는 최상위 우선순위를 가지게 됨
- 임의 우선순위 방식: 비효율적
- 버스 사용 승인을 얻을 버스 마스터가 정해진 원칙 없이 임의로 결정되는 방식
- 버스 마스터들이 동일한 경우 사용할 수 있으나 여러 특징의 버스 마스터가 존재할 경우 비효율적
- 동등 우선순위 방식: FIFO 알고리즘, 회로 간단
- 버스 마스터들이 동등한 우선순위를 가지며, 가장 먼저 버스 사용 요구를 한 버스 마스터가 버스 사용 승인을 먼저 받게 되는 방식
- 선입력 선출력(FIFO) 알고리즘을 사용하며, 우선순위를 결정하는 회로의 설계가 간단
- 비동기식 버스 시스템에서만 사용함
- 최소 최근 사용 방식: 회로 매우 복잡
- 최근까지 가장 오랫동안 버스 요구 신호를 보내지 않은, 결과적으로 가장 최소로 버스를 사용한 버스 마스터에게 최상위 우선순위를 할당하는 방식
- 버스 마스터가 어느 시기에 버스를 사용하였는지에 대한 정보가 필요하므로, 회로가 매우 복잡하다는 단점이 있음
직렬 중재 방식
- 버스 요구 신호선과 버스 승인 신호선들에 버스 마스터와 버스 중재기가 일렬로 연결되는 방식
- 중재기가 하나만 존재하느냐 아니면 여러 개 존재하느냐에 따라 중앙집중식 직렬 중재 방식과 분산식 직렬 중재 방식으로 분류
중앙 집중식 직렬 중재 방식
- 버스 중재기에서 출력되는 버스 사용 승인 BGNT의 신호 선이 하나로, 이 신호 선에 데이지-체인(daisy-chain) 형태로 모든 버스 마스터들을 직렬로 연결한 구조
- 우선순위는 버스 중재기에서 버스 승인 신호선에 연결된 버스 마스터의 순서대로 결정됨
분산식 직렬 중재 방식
- 버스 마스터들은 각각의 독립적인 버스 중재기를 소유하고 있으며, 이 버스 중재기들은 순환형 구조를 형성함
- 버스 중재기들이 데이지-체인 버스 승인 신호(DBGNT, Daisy-chained Bus Grant Signal)가 순환하면서 버스 사용 승인을 허가하는 방식
- 아래의 과정을 버스 사용을 요구한 버스 마스터에 도달할 때까지 반복
- 우선 버스 사용권을 받은 버스 마스터는 버스 사용을 시작하는 동시에 버스 마스터의 중재기는 DBGNT 신호를 우측에 연결된 다른 버스 마스터의 중재기로 전달
- 만약 DBGNT 신호를 수신한 버스 마스터가 버스 사용 신청을 한 상태이면, 중재기는 DBGNT 신호를 받아들이고 BGNT 신호를 버스 사용 신청을 한 버스 마스터에게 전송
- 만약 DBGNT 신호를 받은 버스 마스터가 버스 사용을 요구하지 않은 상태이면, 그 신호를 우측의 다음 중재기로 전달
- DBGNT 신호의 전달이 루프를 통해 전달되므로 버스 사용 승인을 받으면 다음 중재 동작에서는 버스 사용의 최하위 순위가 됨
- 데이터를 전송 중인 버스 마스터의 우측에 이웃한 버스 마스터는 최상위 우선순위를 가지게 됨
- 장점: 결과적으로 각 버스 마스터가 버스를 균일하게 사용할 수 있게 됨
- 단점: 순환형 구조이므로 어느 한 중재기에서 결함이 발생하면 전체 시스템의 동작이 중단됨
폴링 방식
- 버스 마스터가 버스의 사용을 원하고 있는지를 버스 중재기가 주기적으로 검사하여 버스 사용 승인 여부를 결정하는 방식
- 버스 요구 신호선 이외에 별도의 폴링을 위한 폴링 선이 필요하며 하드웨어 폴링 방식과 소프트웨어 폴링 방식으로 분류됨
하드웨어 폴링 방식
- 버스 중재기가 각 버스 마스터들에게 버스 사용을 원하고 있는지 여부를 주기적으로 질의하기 위해, 폴링 선이라는 별도의 선을 버스 중개기와 각 버스 마스터 사이에 두는 구조
- 폴링 선의 수는 버스 마스터의 수에 의해서 결정됨
- 만약 버스 마스터가 2ⁿ개 존재하면, 폴링 선의 수는 n개가 됨
- 폴링 선을 통해서 버스 중재기는 버스의 사용 여부만 질의함
- 하드웨어 폴링 방식의 동작 과정
- 먼저 버스 중재기가 검사할 버스 마스터를 지정하고 그 마스터가 버스 사용을 원하는지를 확인함
- 만약 지정한 마스터가 버스 사용을 원하면, 버스 중재기는 현재 검사 중인 버스 마스터에게 버스 사용권을 허가함 (만약 버스 마스터가 버스 사용을 우너하지 않으면 다음 마스터에 대한 검사를 순서대로 진행)
- 하드웨어 폴링 방식에서 우선순위의 결정
- 버스 중재기가 버스 마스터를 검사하는 순서에 의하여 우선순위가 정해짐
- 검사하게 될 버스 마스터의 번호는 2진 카운터(binary counter)를 이용하여 구함
소프트웨어 폴링 방식
- 하드웨어 폴링 방식과 동일한 구성을 가지나 폴링의 순서와 과정을 소프트웨어로 수행하는 방식
- 프로그램을 수행하려면 버스 중재기는 프로세서를 포함하여야 함
- 이 프로세서는 폴링할 버스 마스터의 주소를 기억하고 순서에 맞게 과정을 진행하도록 하고 경우에 따라서 폴링의 순서를 변경하기도 함
- 우선순위 또는 폴링 순서의 변경이 용이함
- 프로그램을 실행해야 하므로 하드웨어 방식에 비하여 속도가 느리다는 단점이 있음