포스트

임베디드 스터디 - 시스템 버스

임베디드 스터디 - 시스템 버스

이번 글 참고자료:
정익사, 컴퓨터 구조의 이해

시스템 버스

  • CPU와 주 기억 장치가 통신하기 위해 사용하는 데이터 버스
  • 시스템 버스의 선들의 수는 한 번에 전송하는 데이터 비트 수, 기억 장치 주소 비트 수, 제어 신호에 따라 결정된다.
  • 시스템 버스는 세 가지로 구성된다.
    • 주소 버스(Address bus) : CPU에서 장치들로 주소를 전송하는 버스, 단방향 버스.
    • 데이터 버스(Data bus) : CPU에서 장치들 간의 데이터를 주고받는 버스. 양방향 버스.
    • 제어 버스(Control bus) : 장치들을 제어하기 위한 신호 버스. 양방향 버스.

주소 버스

  • 데이터 읽기/쓰기 동작 시 기억 장치의 주소를 지정하기 위해 사용.
    • CPU가 주소를 지정하고, 반대로 CPU는 주소를 읽을 필요가 없기에 때문에 단방향 버스임.
  • 주소 버스의 수는 CPU가 지정할 수 있는 전체 기억 장치 용량을 결정한다.
    • 16비트 주소 버스면 $2^{16}$개의 기억 장치 주소를 접근할 수 있다.

데이터 버스

  • 데이터를 전송하기 위해 사용. CPU, 저장 장치 모두 데이터를 확인하기 때문에 양방향 버스임.
    • 바이트(1Byte = 8bit)가 버스의 기본 단위
    • 32비트 CPU는 한 번에 4바이트의 데이터를 읽고 쓸 수 있으며, 이를 위해 32개의 데이터 버스 선이 필요함.

제어 버스

  • 각 버스 선이 고유의 기능이 있기 때문에 시스템의 구성과 동작에 따라 제어 버스의 구성이 달라진다.
  • 시스템 버스의 사용 주체가 되는 장치가 버스 마스터(Bus master)이다.
    • 한 순간에 하나의 버스 마스터만 시스템 버스를 사용할 수 있다.
    • 두 버스 마스터는 버스 중재(Bus arbitration)을 통해 순차적으로 버스를 사용한다.
    • 이 때, 사용하지 않는 슬레이브의 주소 버스와 데이터 버스는 High-Impedance 상태가 된다.
      • 어떤 마스터가 버스 사용을 요청했는지, 현재 어떤 마스터가 버스를 사용하고 있는지 알 수 있는 신호가 필요하다.

시스템 버스의 동작

  • 버스의 동작은 크게 읽기, 쓰기로 나뉨.
    • 읽기 :
      1. 버스 마스터가 버스 사용권 얻음
      2. 주소와 읽기 신호 송신
      3. 데이터 읽기
    • 쓰기 :
      1. 버스 마스터가 버스 사용권 얻음
      2. 주소, 데이터와 쓰기 신호 송신
  • 데이터 전송 방법은 동기식, 비동기식으로 나뉨
    • 동기식 : 모든 버스 동작이 공통의 버스 클록으로 결정됨.
    • 비동기식 : 버스 동작이 다른 버스의 영향으로 결정됨.

동기식 버스

  • 동기식 버스의 읽기 동작 순서는 클럭에 따라 다음과 같이 수행된다.
    1. CPU가 주소와 읽기 제어 신호를 기억 장치로 송신
    2. 기억 장치에서 데이터 인출 동작이 발생
    3. 기억 장치가 데이터 버스를 통해 CPU로 데이터 전송
  • 장점 : 인터페이스 회로가 간단함
  • 단점 : 클럭 주기보다 동작이 빨리 끝나는 경우 대기 시간이 길어짐

비동기식 버스

  • 비동기식 버스의 읽기 동작은 클럭과 상관없이 다음 순서대로 동작이 수행된다.
    1. CPU가 주소와 읽기 신호 송신 후, 신호가 안정될 때까지 기다린 다음 MSYN(Master Synch Signal)를 송신한다.
    2. 기억장치가 주소를 받아서 데이터를 인출하고 SSYN(Slave Synch Signal)을 송신한다.
    3. CPU가 SSYN을 받으면 데이터를 수신하고, MYSN, 주소, 읽기 버스를 초기화한다.
  • 장점 : 각 장치의 속도에 맞춰 동작하므로 불필요한 대기 시간이 없다.
  • 단점 : 연속적인 동작을 처리하기 위해 인터페이스 회로가 복잡해진다.

시스템 버스의 중재

  • 여러 마스터가 버스를 사용하기 위해 경쟁하는 상황을 버스 경합(Bus Contention)이라 한다.
    • 해결하지 못하면 성능 저하, 더 나아가 동작 오류가 발생한다.
  • 버스 경합 문제를 해결하기 위해 버스 중재기(Bus arbiter)로 버스 중재를 수행한다.
    • 기능상 중요도가 높은 버스 마스터가 버스를 우선적으로 사용해야함
    • 특정 버스 마스터가 오랫동안 버스를 사용 못하는 기근(Starvation) 상황을 피해야 함
  • 모든 마스터는 버스 중재기의 신호에 따라 버스 사용권을 획득함
    • BR(Bus Request) : 버스마스터가 중재기에 버스 사용권 요청
    • BG(Bus Grant) : 중재기가 버스마스터에 버스 사용 허용
    • BB(Bus Busy) : 버스 사용 중임을 장치가 알림

중앙 집중식 병렬 중재 (Centralized Parallel Arbitration)

  • 모든 버스 마스터가 하나의 버스 중재기에서 각각의 중재 신호를 수신함.
  • 중재기 내에서 장치들의 우선 순위를 구분해야하며, Starvation 상태를 만들어서는 안된다.
  • 우선 순위 설정은 다음과 같은 방식이 있음
    • 고정 우선순위 : 각 장치의 우선순위 고정. Starvation 위험 있음
    • 라운드 로빈(Round Robin) : 순서대로 돌아가면서 우선순위 지정
    • FIFO(First In First Out) : 선입 선출 방식

직렬 중재 / 데이지 체인 중재 (Daisy Chain Arbitration)

  • 중재기, 버스 마스터를 직렬로 연결하여 직렬로 버스 허용 신호를 수신함.
    • 임의의 장치가 BR을 보내면 중재기에서 가장 가까운 버스 마스터부터 BG 신호를 수신함
    • 버스 사용 우선 순위가 데이지 체인 구성에 의해 결정된다.
  • 하드웨어 구성이 간단하여 경제적임.
  • 하드웨어 구조에 의해 Starvation이 발생하기 쉽고, 체인이 끊기면 전체 시스템이 동작하지 못함.
  • 버스 조작의 감시와 장애 진단이 어려움

폴링 중재 (Polling Arbitration)

  • 하나의 폴링 회선이 중재기에서 각 장치에 공통적으로 연결됨
  • 중재 동작은 다음 순서를 거친다.
    1. 임의의 장치가 BR 신호를 송신
    2. 중재기가 폴링선에 각 장치 고유 번호를 송신함
    3. 각 장치는 폴링선의 장치 번호를 디코딩함. 자기가 BR 신호를 보냈다면 BB 신호 송신
  • 중재기에 프로세서를 탑재해 소프트웨어로 폴링을 조정할 수도 있음
  • 시스템 구성에 유연하게 대응 가능
  • 하드웨어 중재기에 비해 속도가 느림
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.