시스템버스, I/O 및 인터럽트
1. 시스템 버스 (System Bus)
시스템 버스는 CPU, 기억장치, I/O 장치 등 컴퓨터 시스템의 구성 요소들을 상호 연결해주는 중심 통로입니다.
1.1. 시스템 버스의 조직
시스템 버스는 정보를 전송하는 여러 개의 선(line)들로 구성되며, 이 선들의 수는 전송하는 데이터 비트 수, 기억장치 주소 비트 수, 제어 신호 수에 따라 결정됩니다. 소형 컴퓨터는 50~100개, 중대형 시스템은 100개 이상의 신호선을 사용합니다.
기능에 따른 버스의 종류
- 데이터 버스 (Data Bus):
- 시스템 요소들 사이에 데이터를 전송하는 데 사용되는 선들의 집합입니다.
- **양방향 전송(bidirectional transfer)**이 가능합니다.
- 버스 폭(선들의 수)은 CPU와 기억장치 사이에 한 번에 전송되는 비트 수를 의미합니다.
- 주소 버스 (Address Bus):
- CPU가 기억장치로(부터) 데이터를 쓰거나 읽을 때, 해당 기억장소를 지정하는 주소를 전송하기 위한 선들의 집합입니다.
- **단방향 전송(unidirectional transfer)**으로 CPU에서 기억장치 및 I/O 제어기로 전송됩니다.
- 주소 버스의 비트 수에 따라 시스템에 접속될 수 있는 전체 기억장치 용량이 결정됩니다.
- 예시:
- 16비트 주소 버스 = 2^16 = 64K개 주소 지정 가능 (바이트 단위 시 64Kbyte, 32비트 단어 단위 시 256Kbyte).
- 24비트 주소 버스 = 2^24 = 16M개 주소 지정 가능 (바이트 단위 시 16Mbyte, 32비트 단어 단위 시 64Mbyte).
- 제어 버스 (Control Bus):
- CPU와 기억장치 및 I/O 장치 사이에 제어 신호들을 전송하는 선들의 집합입니다.
- 주요 제어 신호들은 다음과 같습니다:
- 기억장치 쓰기 (memory write) 신호: 버스에 실린 데이터를 지정 기억장소에 저장.
- 기억장치 읽기 (memory read) 신호: 지정 기억장소의 내용을 읽어 버스에 실음.
- I/O 쓰기 (I/O write) 신호: 버스에 실린 데이터를 지정 I/O 장치로 출력.
- I/O 읽기 (I/O read) 신호: 지정 I/O 장치로부터 데이터를 읽어 데이터 버스에 실음.
- 중재 버스 (Arbitration Bus):
- 버스 중재를 위한 제어 신호들의 집합입니다.
- 버스 요구 (bus request) 신호: 버스 마스터가 버스 사용을 요구.
- 버스 승인 (bus grant) 신호: 버스 사용을 요구한 마스터에게 사용 허가.
- 버스 사용중 (bus busy) 신호: 현재 버스가 사용되고 있음을 나타냄.
- 인터럽트 버스 (Interrupt Bus):
- 인터럽트 메커니즘을 위한 제어 신호들의 집합입니다.
- 인터럽트 요구 (interrupt request) 신호: I/O 장치가 인터럽트를 요구.
- 인터럽트 확인 (interrupt acknowledge) 신호: CPU가 인터럽트 요구를 인식.
- 그 외 제어 신호:
- 버스 클록 (bus clock) 신호: 동기식 버스에서 버스 동작 시작 시간을 일치시키는 공통 클록.
- 리셋 (reset) 신호: 모든 시스템 요소들의 동작을 초기화.
1.1. 버스 대역폭 (Bus Bandwidth)
버스 대역폭은 버스의 속도를 나타내는 척도로, 단위 시간당 전송할 수 있는 데이터 양을 의미하며, 버스 클록 주기에 의해 결정됩니다.
- 예시: 버스 클록 주기 50ns (클록 주파수 20MHz), 데이터 버스 폭 64비트(8바이트)
- 버스 대역폭 = 8byte / (50 × 10^-9 sec) = 160 Mbytes/sec
- 이는 초당 1억 6천만 바이트의 데이터 전송이 가능함을 의미합니다.
1.3. 시스템 버스의 기본 동작
- 쓰기 동작 (Write Operation) 순서:
- 버스 마스터가 버스 사용권 획득.
- 버스를 통해 주소, 데이터, 쓰기 신호 전송.
- 읽기 동작 (Read Operation) 순서:
- 버스 마스터가 버스 사용권 획득.
- 주소와 읽기 신호를 보내고, 데이터가 전송되어 올 때까지 대기.
1.4. 버스 동작의 타이밍에 따른 버스 분류
- 동기식 버스 (Synchronous Bus):
- "시스템 버스에서 모든 버스 동작들이 공통의 버스 클록을 기준으로 발생함."
- 장점: 인터페이스 회로가 간단합니다.
- 단점: 버스 클록 주기가 가장 오래 걸리는 동작 시간을 기준으로 결정되므로, 더 짧은 동작의 경우 낭비되는 시간이 발생합니다. 일반적인 컴퓨터 시스템에서 사용됩니다.
- 비동기식 버스 (Asynchronous Bus):
- "버스 동작들의 발생 시간이 관련된 다른 버스 동작의 발생 여부에 따라 결정됨."
- 장점: 각 버스 동작 완료 즉시 다음 동작이 발생하여 시간 낭비가 없습니다.
- 단점: 연속적 동작을 처리하기 위한 인터페이스 회로가 복잡합니다. 소규모 컴퓨터에 사용됩니다.
2. 버스 중재 (Bus Arbitration)
- 버스 경합 (Bus Contention):
- "한 개의 시스템 버스에 접속된 여러 개의 버스 마스터들이 동시에 버스 사용을 요구하는 현상."
- 버스 중재 (Bus Arbitration):
- "버스 경합이 발생하는 경우, 어떤 기준에 따라 버스 마스터들 중에서 한 개씩만 선택하여 순서대로 버스를 사용할 수 있게 해주는 동작."
- 버스 중재기 (Bus Arbiter):
- 버스를 중재하는 하드웨어 모듈입니다.
2.1. 제어 신호들의 연결 구조에 따른 중재 방식 분류
- 병렬 중재 방식 (Parallel Arbitration Scheme):
- 각 버스 마스터가 독립적인 버스 요구 신호와 별도의 버스 승인 신호를 받습니다.
- 버스 마스터 수와 같은 개수의 버스 요구 선 및 승인 신호선이 필요합니다.
- 직렬 중재 방식 (Serial Arbitration Scheme):
- 버스 요구 및 승인 신호 선이 각각 한 개씩만 존재 하며, 각 신호 선을 버스 마스터들 간에 직렬로 접속하는 방식입니다.
2.2. 버스 중재기의 위치에 따른 분류
- 중앙집중식 중재 방식 (Centralized Arbitration Scheme):
- 시스템 내에 버스 중재기가 한 개만 존재합니다.
- 버스 마스터들의 요구 신호를 받아 중재기가 원칙에 따라 선택된 마스터에게 승인 신호를 발생시킵니다.
- 분산식 중재 방식 (Decentralized Arbitration Scheme):
- 여러 개의 버스 중재기들이 존재하며(일반적으로 각 버스 마스터가 중재기를 가짐), 각 마스터의 중재기에 의해 버스 중재가 이루어집니다.
2.3. 우선순위 결정 방식에 따른 분류
- 고정-우선순위 방식 (Fixed-Priority Scheme):
- 각 버스 마스터에 지정된 우선순위가 고정되어 있습니다.
- 중앙집중식 고정-우선순위 중재 방식: 모든 버스 마스터가 하나의 버스 중재기에 접속합니다.
- 중재기와 가까운 마스터가 높은 우선순위를 가집니다.
- 동작 예시: 마스터 3이 요구하고 마스터 1이 사용 중일 때, 마스터 1이 사용을 끝내면 마스터 3에게 승인됩니다.
- 분산식 고정-우선순위 방식: 모든 버스 마스터가 중재기를 한 개씩 보유합니다.
- 각 중재기는 자신보다 높은 우선순위 마스터들의 요구를 검사하여 요구가 없을 때만 자신의 마스터에게 승인 신호를 발생시킵니다.
- 장점: 중앙집중식보다 중재 회로가 간단하고 동작 속도가 빠릅니다.
- 단점: 고장난 중재기를 찾기 복잡하고, 한 중재기의 고장이 전체 시스템에 영향을 미칠 수 있습니다.
- 가변-우선순위 방식 (Dynamic-Priority Scheme):
- 우선순위를 시스템 상태에 따라 계속 변화시키는 방식입니다.
- 장점: 모든 마스터들이 공정하게 버스를 사용할 수 있습니다.
- 단점: 중재 회로가 복잡합니다.
- 종류:
- 회전 우선순위 (rotating priority) 방식:
- 방법 1: 중재 동작 후 모든 마스터의 우선순위가 한 단계씩 낮아지고, 가장 낮았던 마스터가 최상위가 됩니다.
- 방법 2: 버스 사용 승인을 받은 마스터는 최하위 우선순위를 갖고, 바로 다음 마스터가 최상위가 됩니다.
- 회전 우선순위 (rotating priority) 방식:
- 동등 우선순위 방식:
- 모든 마스터가 동등한 우선순위를 가지며, FIFO(First-In First-Out) 알고리즘을 사용합니다.
- 임의 우선순위 방식:
- 각 중재 동작이 끝날 때마다 우선순위를 임의로 결정합니다.
- 최소-최근 사용 방식 (LRU, Least-Recently Used):
- 최근 가장 오랫동안 버스를 사용하지 않은 버스 마스터에게 최상위 우선순위를 할당합니다. (회로가 매우 복잡)
2.4. 직렬 중재 방식 (Serial Arbitration Scheme)
- 중앙집중식 직렬 중재 방식:
- 하나의 버스 사용 승인 신호선(BGNT)이 데이지-체인(daisy-chain) 형태로 모든 버스 마스터들을 직렬로 연결합니다.
- 우선순위는 승인 신호선이 연결된 순서대로 결정됩니다 (중재기에 가까울수록 높음).
- 동작 원리: 마스터가 요구하면 공통 BREQ가 세트되고, 중재기가 첫 마스터로 BGNT를 전송합니다. 요구한 마스터는 BGNT를 받아 사용권을 가지며, 요구하지 않은 마스터는 다음 마스터로 신호를 통과시킵니다.
- 분산식 직렬 중재 방식:
- 데이지-체인 버스 승인 신호(DBGNT) 선으로 버스 중재기들을 순환형(circular)으로 접속시킵니다.
- 특징: 각 마스터의 우선순위가 계속 변화합니다. 버스 사용 승인을 받으면 다음 중재 동작에서 최하위 우선순위를 가집니다.
- 단점: 어느 한 지점에 결함이 발생해도 전체 시스템 동작이 중단될 수 있습니다.
2.5. 폴링 방식 (Polling Scheme)
- 원리: 버스 중재기가 버스 사용을 원하는 마스터가 있는지를 주기적으로 검사하여 사용 승인 여부를 결정합니다.
- 종류:
- 하드웨어 폴링 방식:
- 버스 중재기와 각 버스 마스터 간에 별도의 폴링 선이 존재합니다 (2진 코드화된 폴링 주소 사용 시 log2N개로 감소).
- 공통 BREQ 선과 BBUSY 선이 각각 한 개씩 존재합니다.
- 중재기가 폴링 주소를 발생하여 마스터를 지정하고 요구 여부를 물으며, 요구 시 버스 사용을 허가합니다.
- 우선순위는 중재기가 마스터를 검사하는 순서(2진 카운터 이용)에 의해 결정됩니다.
- 소프트웨어 폴링 방식:
- 폴링의 순서와 과정을 버스 중재기 내의 프로세서가 관장하는 방식입니다.
- 장점: 우선순위(폴링 순서) 변경이 용이합니다.
- 단점: 프로그램을 실행해야 하므로 하드웨어 방식에 비해 속도가 느립니다.
- 하드웨어 폴링 방식:
3. 결론
컴퓨터 시스템의 효율적인 동작은 CPU, 주기억장치, 입출력 장치 간의 원활한 정보 교환에 달려 있으며, 이를 가능하게 하는 핵심 통로가 시스템 버스입니다. 특히, 여러 장치가 동시에 버스를 사용하고자 할 때 발생하는 경합을 해결하기 위한 다양한 버스 중재 방식은 시스템의 안정성과 성능을 보장하는 데 필수적입니다. 중앙집중식/분산식, 고정/가변 우선순위, 병렬/직렬 방식, 폴링 방식 등 여러 중재 방식들은 각각의 장단점을 가지며 시스템 설계 목표에 따라 적절히 선택되어 적용됩니다. 이러한 메커니즘을 이해하는 것은 컴퓨터 시스템의 구조와 동작 원리를 파악하는 데 매우 중요합니다.