본문으로 건너뛰기

시스템버스, 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) 순서:
    1. 버스 마스터가 버스 사용권 획득.
    2. 버스를 통해 주소, 데이터, 쓰기 신호 전송.
  • 읽기 동작 (Read Operation) 순서:
    1. 버스 마스터가 버스 사용권 획득.
    2. 주소와 읽기 신호를 보내고, 데이터가 전송되어 올 때까지 대기.

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: 버스 사용 승인을 받은 마스터는 최하위 우선순위를 갖고, 바로 다음 마스터가 최상위가 됩니다.
  • 동등 우선순위 방식:
    • 모든 마스터가 동등한 우선순위를 가지며, 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, 주기억장치, 입출력 장치 간의 원활한 정보 교환에 달려 있으며, 이를 가능하게 하는 핵심 통로가 시스템 버스입니다. 특히, 여러 장치가 동시에 버스를 사용하고자 할 때 발생하는 경합을 해결하기 위한 다양한 버스 중재 방식은 시스템의 안정성과 성능을 보장하는 데 필수적입니다. 중앙집중식/분산식, 고정/가변 우선순위, 병렬/직렬 방식, 폴링 방식 등 여러 중재 방식들은 각각의 장단점을 가지며 시스템 설계 목표에 따라 적절히 선택되어 적용됩니다. 이러한 메커니즘을 이해하는 것은 컴퓨터 시스템의 구조와 동작 원리를 파악하는 데 매우 중요합니다.