System Bus란?

Zoonmy·2024년 7월 13일

학습 계기

CPU에 대해 학습하면서, 어셈블리어의 LOAD & STORE 명령어에 대해 학습하고 있었다.

그러던 도중 문득 궁금한 점이 생겼는데

LOAD, STORE 는 결국에 CPU와 MEMORY가 통신 을 하는 개념이라고 생각!

그렇다면, 우리가 웹에서 통신을 할 떄에는 Web Socket 과 같은 통신 수단으로 통신을 하는데, CPU-MEMORY 사이에서는 어떠한 수단으로 데이터들을 주고받는 것인지 궁금하게 되었다.

System Bus


출처 : 위키피디아

Bus란?

In computer architecture, a bus[1] (historically also called data highway[2] or databus) is a communication system that transfers data between components inside a computer, or between computers.

위 설명에서 볼 수 있듯이, 컴퓨터 구조에서 bus란 일종의 Communication System이라고 볼 수 있다.

그 목적은, between components inside a computer 즉 컴퓨터안에 있는 2개의 다른 요소들끼리 혹은 between computers 컴퓨터 끼리 데이터를 전달해준다는 것이다.

이러한 설명을 통해 CPU 라는 component와 Memory라는 component가 Bus를 통해 data를 주고받을 수 있다! 는 것을 알 수 있었다.

이제 Bus에 대한 개념을 알았으니, Bus 라는 용어 보다는 CPU, 메모리, 입출력 장치 간의 데이터 전송을 위한 주요 통신 경로를 지칭하는 포괄적인 용어인 System Bus를 사용하도록 하자.

System Bus의 종류

A system bus is a single computer bus that connects the major components of a computer system, combining the functions of a data bus to carry information, an address bus to determine where it should be sent or read from, and a control bus to determine its operation.

위 설명을 보면 알 수 있듯이, 크게 3가지로 나뉠 수 있다.

1) data bus : 데이터가 들어있는 버스
2) address bus : 어디로 보낼 지, 어디서부터 읽을 지
3) control bus : 어떤 제어 신호를 전달할 지

이제 각 Bus들이 어떻게 동작하고, 어떤 역할들을 하는 지 알았으니 실제 CPU - MEMORY - I/O Unit 에서 어떻게 동작하는 지 살펴보자

컴퓨터 구성 요소간 통신

CPU ↔️ 메모리

LOAD , STORE 명령에 의해 수행된다.

1) LOAD

  • 주소 버스 : 메모리에서 불러올 데이터가 저장된 주소값이 전달(CPU ➡️ Memory)

  • 신호 버스 : Memory Read 신호 전달(CPU ➡️ Memory)

  • 데이터 버스 : 지정한 메모리에 저장된 값 전달(Memory ➡️ CPU)

(2) STORE

  • 주소 버스 : 메모리에서 해당 데이터를 저장할 주소값 전달(CPU ➡️ Memory)

  • 신호 버스 : Memory Write 신호 전달(CPU ➡️ Memory)

  • 데이터 버스 : 저장할 데이터 전달(CPU ➡️ Memory)

2) CPU ↔️ I/O Unit

입력(Input)과 출력(Output)명령에 의해 수행

1) 입력(Input)

  • 주소 버스 : 해당 입출력 장치의 포트 번호 전달(CPU ➡️ I/O Unit)

  • 신호 버스 : I/O Read(input) 신호 전달(CPU ➡️ I/O Unit)

  • 데이터 버스 : 해당 입출력 장치는 데이터 전달(I/O Unit ➡️ CPU)

2) 출력(Output)

  • 주소 버스 : 해당 입출력 장치의 포트 번호 전달(CPU ➡️ I/O Unit)

  • 신호 버스 : I/O Write(output) 신호 전달(CPU ➡️ I/O Unit)

  • 데이터 버스 : 입출력 장치에 데이터 전달(CPU ➡️ I/O Unit)

3) 인터럽트(Inputerrupt)

입출력장치는 제어신호를 통해 인터럽트 요청을 보내 CPU에 입출력작업을 요청할 수 있다!

  • 인터럽트 요청 : 입출력 준비를 마친 I/O Unit이 CPU에 입출력작업의 시작 요청

  • 인터럽트 확인 : CPU가 입추력 동작을 수행할 것을 입출력장치에 통보

3) 메모리 ↔️ I/O Unit

입출력장치와 메모리의 통신은 CPU를 이용하지 않는다.
직접 기억장치 액세스 방식(DMA, Direct Memory Access)으로 통신!

  • DMA 제어기 ➡️ 주소 버스와 제어버스
    - DMA 제어기는 통신 시작 전 CPU에 버스 사용해 대한 허가를 받아야한다.

profile
열시미 해야쥐

0개의 댓글