만쥬의 개발일기
article thumbnail

컴퓨터 구조에서 버스(Bus)란 CPU, 메모리, I/O 장치 사이의 정보 전송을 위한 통로입니다.
이 통로를 통해 컴퓨터의 하드웨어 장치들은 데이터를 주고받고, 버스를 통한 데이터 전송 속도가 시스템 성능을 좌우합니다.

버스는 신호의 종류에 따라 다음과 같이 분류됩니다.

  • 데이터 버스(Data Bus):
    • 메인 메모리와 CPU 사이, 입출력 장치와 메인 메모리 사이, CPU 내부의 모듈들 간의 데이터가 이동하는 경로
    • 각 구성요소는 양방향으로 데이터 전달 가능
  • 주소 버스(Address Bus):
    • CPU가 사용하고자 하는 데이터가 위치한 주소가 이동하는 경로
    • CPU와 메모리는 단방향으로 데이터 전달이 가능한 버스를 이용해 주소 전달은 CPU ➡️ 메모리로만 가능
  • 컨트롤 버스(Control Bus):
    • CPU에서 발생하는 제어 명령이나 상태 신호들이 이동하는 경로
    • Read와 Write 신호 전달

또한 버스의 위치에 따라서 내부 버스(CPU 내부), 외부 버스(CPU 외부)로 구성됩니다.

  • 내부 버스: CPU 내부에 위치한 버스
  • 외부 버스: CPU와 메인 메모리, 입출력 장치를 연결하는 버스

각 장치에서의 데이터가 흐르는 방향은 다음과 같습니다.

버스 동작

CPU가 주기억 장치에 데이터를 읽고 쓰기를 진행할 때, 버스는 다음의 역할을 수행합니다.

  1. CPU가 버스에 데이터를 싣는다
    • 주소 버스: 데이터를 쓰거나 읽고자 하는 주기억 장치의 주소값
    • 데이터 버스: 쓰는 경우에는 쓰고자 하는 데이터 값
    • 제어 버스: 기억장치 읽기 신호 또는 기억장치 쓰기 신호
  2. 주기억 장치는 제어 버스에 실린 제어 신호를 확인한다.
    • 읽기 신호인 경우: 주소 버스에 실린 주소 값의 데이터 값을 주기억 장치에서 읽어서 데이터 버스에 실는다.
    • 쓰기 신호인 경우: 주소 버스의 해당하는 주소에 데이터 값을 쓴다.
  3. 읽기 작업 인 경우, 일정 시간 후 CPU가 데이터 버스에 실린 값을 CPU로 가져온다.

각 구성 요소간 통신

CPU ↔️ Memory

  • Load
    • 주소 버스 : 메모리에서 불러올 데이터가 저장된 주소값 전달(CPU -> Memory)
    • 컨트롤 버스 : Memory Read 신호 전달(CPU -> Memory)
    • 데이터 버스 : 메모리의 해당 주소에 저장된 값 전달(Memory -> CPU)
  • Store
    • 주소 버스 : 메모리에서 해당 데이터를 저장할 주소값 전달(CPU -> Memory)
    • 컨트롤 버스 : Memory Write 신호 전달(CPU -> Memory)
    • 데이터 버스 : 저장할 데이터 전달(CPU -> Memory)

CPU ↔️ I/O Unit

  • Input

    • 주소 버스 : 해당 입출력 장치의 포트 번호 전달(CPU -> I/O Unit)
    • 컨트롤 버스 : I/O Read(input) 신호 전달(CPU -> I/O Unit)
    • 데이터 버스 : 해당 입출력 장치에서 데이터 전달(I/O Unit -> CPU)
  • Output

    • 주소 버스 : 해당 입출력 장치의 포트 번호 전달(CPU -> I/O Unit)
    • 컨트롤 버스 : I/O Write(output) 신호 전달(CPU -> I/O Unit)
    • 데이터 버스 : 해당 입출력 장치에 데이터 전달(CPU -> I/O Unit)
  • Inputerrupt

    • 입출력장치는 컨트롤 신호를 통해 인터럽트 요청을 보내 CPU에 입출력작업을 요청할 수 있다.
    • 인터럽트 요청 : 입출력 준비를 마친 I/O Unit이 CPU에 입출력작업의 시작 요청
    • 인터럽트 확인 : CPU가 입추력 동작을 수행할 것을 입출력장치에 통보

Memory ↔️ I/O Unit

  • 입출력장치와 메모리의 통신은 CPU를 이용하지 않고 직접 기억장치 액세스 방식(DMA, Direct Memory Access)으로 통신
  • DMA 제어기는 CPU를 대신해 주소 버스와 컨트롤 버스에 신호를 전달
  • DMA 제어기는 통신 시작 전 CPU로부터 버스 사용해 대한 허가를 받아야함

reference

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!