CS - System Bus


1. 시스템 버스란 무엇인가?

  • 쉽게 말해, CPU가 연산한 걸 메모리로 가져가거나, 메모리에 있는걸 연산하기 위해 CPU로 가져오거나 등 이렇게 데이터를 옮겨주는 통로의 이름을 시스템 버스(System Bus)라고 한다.
  • 기본 동작으로는 버스 사용권을 획독한 후 주소와 데이터 및 쓰기 신호를 전송하는 것을 하는 쓰기 동작이 있고, 버스 사용권을 획득한 후 주소와 읽기 신호를 보내고 데이터가 전송되어 오기를 기다리는 읽기 동작이 있다.
  • 아무튼 쓰거나 읽기 위해서, 버스 사용권은 획득해야 하고 주소는 꼭 보내야한다.


  • 버스에 실리는 신호 종류에 따라 데이터 버스, 어드레스(주소) 버스, 컨트롤(제어) 버스로 나뉘며,
  • CPU를 기점으로 버스의 위치에 따라서는 내부 버스와 외부 버스로 나뉜다. 즉, CPU 내부에 있는 통로는 내부버스 CPU 외부에 있는 통로는 외부버스라고 한다. 그리고 시간당 전송하는 데이터의 크기를 버스의 대역폭이라 하는데 내부 버스는 대역폭이 크고, 외부 버스는 비교적 대역폭이 낮다.


1.1. 데이터 버스

  • 데이터 버스는 메인 메모리와 CPU 사이, I/O와 메인 메모리 사이, CPU 내부의 모듈들 간의 데이터가 이동하는 경로이며, 데이터 버스의 크기는 CPU가 한 번에 전송 가능한 데이터의 크기와 같다. 데이터를 주고 받을 수 있는 양방향 버스이다.


1.2. 주소 버스

  • CPU가 메모리나 I/O 장치로 기억장치 주소를 전달하는 통로를 말한다. 우리가 데이터를 정확하기 전달하기 위해서는 주소를 정해줘야 한다. 주소 버스는 주소를 전달만 하면 되기 때문에 단방향 버스이다.
  • 예를 들어 우리가 데이터를 받고자 할 때도, 어디로부터 데이터를 받을 지 주소를 보내야하고, 데이터를 보낼 때에도 어디로 데이터를 보낼 지 주소는 전송을 해야한다.


1.3. 제어 버스

  • CPU에서 발생하는 제어 명령이나 상태 신호들이 이동하는 경로이며, 데이터 버스와 주소 버스를 제어하기 위해 제어 신호들을 전송하는 통로를 말한다. 양방향 버스이다.



2. 버스 역할 수행 ( 읽기, 쓰기 경우 )

  • CPU가 RAM에서 데이터를 읽고 쓰기를 진행할 때 버스는 다음과 같은 역할을 수행한다.
    • CPU가 버스에 데이터를 싣는다.
      • 주소 버스는 데이터를 쓰거나 읽고자 하는 주기억 장치의 주소값을 적고, 데이터 버스에는 쓰고자 하는경우에만 쓰고자 하는 데이터 값을 적는다. 제어 버스에는 기억장치 읽기 신호인지 쓰기 신호인지에 맞춰서 싣는다.
    • 주기억장치에서는 제어 버스에 실린 제어 신호를 확인한다.
      • 읽기의 경우에는 주소 버스에 실린 주소 값의 데이터 값을 읽어서 데이터 버스에 싣는다. 만약 쓰기 신호의 경우에는 주소 버스의 해당하는 주소값에 데이터 버스에 담겨온 값을 쓴다.
    • 쓰기일 경우 여기서 끝나지만, 읽기인 경우 일정 시간 후 데이터 버스에 실린 값을 CPU가 받는다.



3. 버스 중재 방식

  • 버스 중재란, 버스에 접속 된 두 개 이상의 모듈들이 동시에 버스를 이용하고자 할 때 순서대로 한 개씩 버스를 사용할 수 있게 해주는 제어를 의미한다.
  • 버스의 종류나 구조는 다향하고, 다양한 모듈들이 버스를 공유하기에 버스 중재 방식도 다양하다.
    • 버스 요구 신호(Bus Request): 특정 장치가 버스 사용을 요구했음을 알리는 신호
    • 버스 승인 신호(Bus Grant): 버스 사용을 요구하는 장치에게 사용을 허가하는 신호
    • 버스 사용 중 신호(Bus Busy): 현재 버스가 사용되고 있는 중임을 나타내는 신호






results matching ""

    No results matching ""