System Bus

System Bus는 컴퓨터 아키텍처에서 주요 구성 요소들을 연결하는 중요한 통신 경로로, 컴퓨터의 혈관과 같은 역할을 한다. CPU, 메모리, 입출력 장치 등 컴퓨터의 주요 구성 요소들 사이에서 데이터와 신호를 전달한다.

System Bus (Internal and Intra)
Source: https://witscad.com/course/computer-architecture/chapter/io-communication-io-controller

시스템 버스의 주요 구성 요소

시스템 버스는 세 가지 주요 버스로 구성된다:

  1. 데이터 버스 (Data Bus):

    • 양방향 버스로, 시스템 구성 요소들 사이에서 실제 데이터를 전송한다.
    • 예를 들어, CPU가 메모리에서 데이터를 읽거나 쓸 때 사용된다.
    • 버스의 폭(width)은 한 번에 전송할 수 있는 데이터의 양을 결정한다.
    1
    2
    
    // 예시: 32비트 데이터 버스의 데이터 전송
    DataBus.transfer(0x1234ABCD);  // 32비트 데이터를 한 번에 전송
    
  2. 주소 버스 (Address Bus):

    • 단방향 버스로, 메모리나 I/O 장치의 주소를 지정한다.
    • CPU가 접근하고자 하는 메모리 위치를 지정할 때 사용된다.
    • 버스의 폭은 시스템이 접근할 수 있는 메모리의 최대 크기를 결정한다.
    1
    2
    
    // 예시: 메모리 주소 지정
    AddressBus.select(0x1000);  // 메모리 주소 0x1000 선택
    
  3. 제어 버스 (Control Bus):

    • 양방향 버스로, 시스템의 동작을 제어하는 신호를 전달한다.
    • 읽기/쓰기 신호, 인터럽트 신호, 클록 신호 등을 전달한다.
    • 데이터 전송의 타이밍과 방향을 조정한다.
    1
    2
    3
    
    // 예시: 제어 신호 전송
    ControlBus.sendSignal(READ);    // 읽기 신호 전송
    ControlBus.sendSignal(WRITE);   // 쓰기 신호 전송
    

시스템 버스의 동작 방식

시스템 버스의 기본적인 동작 과정은 다음과 같다:

  1. 메모리 읽기 연산:
    1. CPU가 주소 버스에 메모리 주소 전송
    2. 제어 버스를 통해 읽기 신호 전송
    3. 메모리가 데이터 버스를 통해 데이터 전송
  2. 메모리 쓰기 연산:
    1. CPU가 주소 버스에 메모리 주소 전송
    2. 데이터 버스에 쓸 데이터 전송
    3. 제어 버스를 통해 쓰기 신호 전송

기능

시스템 버스의 특성

  1. 동기화 (Synchronization):

    • 버스 클록이 모든 데이터 전송을 동기화한다.
    • 클록 속도는 버스의 성능을 결정하는 주요 요소이다.
  2. 중재 (Arbitration):

    • 여러 장치가 동시에 버스를 사용하려 할 때의 충돌을 방지한다.
    • 우선순위에 따라 버스 사용 권한을 할당한다.
    1
    2
    3
    4
    5
    6
    7
    
    class BusArbiter:
        def request_bus_access(self, device):
            if self.is_bus_available():
                return self.grant_access(device)
            else:
                self.add_to_queue(device)
                return False
    
  3. 멀티플렉싱 (Multiplexing):

    • 한정된 버스 라인을 효율적으로 사용하기 위해 시분할 방식을 사용한다.
    • 주소와 데이터를 같은 라인으로 전송할 수 있다.

시스템 버스의 성능 향상 기법

  1. 버스 폭 확장:

    • 더 넓은 데이터 버스를 사용하여 한 번에 더 많은 데이터를 전송한다.
    • 32비트에서 64비트, 128비트로 확장하는 방식이다.
  2. 계층적 버스 구조:

    • 여러 종류의 버스를 계층적으로 구성하여 성능을 최적화한다.
    • 예: CPU 버스, 메모리 버스, I/O 버스 등의 분리
  3. 버스 파이프라이닝:

    • 여러 버스 작업을 중첩하여 처리함으로써 성능을 향상시킨다.
    • 한 작업이 완료되기 전에 다음 작업을 시작할 수 있다.

성능 영향


참고 및 출처