앞선 글에서는 하드웨어에 대한 구성을 살펴보았다. CPU를 시작으로 계층 간의 기억장치를 보았고 캐시와 지역성의 원리에 대해 다루어보았다. 

 

해당 글은 여기에 설명되어 있다.

 

이번에는 버스에 대해서 알아보려고 한다. 버스 또한 컴퓨터 구조에서 심도있게 다루는 부분이지만 여전히 운영체제를 배우는 과목에서도 다루기 때문에 필요하다고 생각하며, 저번에 실무면접을 보는 도중 면접관이 나에게 CPU 내부 구조를 화이트 보드에 그려보라는 경험을 겪었다. 어렴풋이 형상만 기억났기에 CPU 내부 구조를 그리진 못하고 대신 프로세스 메모리 구조라도 그리겠다고 해서 그렸던 기억이 난다...

 

- 버스 ( bus )

버스는 프로세서와 메모리 및 여러 입출력 장치 간 또는 주변 장치들을 서로 연결하여 데이터, 주소, 제어명령을 주고 받을 수 있게 하는 통로이다. 따라서 컴퓨터 내부 각 하드웨어 자원들 간의 다양한 신호들은 해당하는 종류에 따라서 버스를 통해 전달된다. 

 

- 내부 버스

내부 버스는 컴퓨터 프로세스 내부 에서 레지스터, 연산 장치, 메모리와의 인터페이스 등의 연결을 담당한다. 내부 버스는 시스템 버스 인터페이스 회로를 통해 외부 버스와 연결된다. 

 

- 외부 버스 (= 시스템 버스)

외부 버스는 프로세서와 메모리, 프로세서와 입출력 장치, 입출력 장치와 입출력 장치의 연결을 담당한다. 외부 버스는 각각의 외부 버스에 버스 제어기라 불리는 제어 회로를 가진다. 

 

 

- 시스템 버스 ( System bus )

CPU와 시스템 내의 다른 요소들 사이의 정보를 교환하는 통로이다. 기능에 따라 주소 버스, 데이터 버스, 제어 버스로 구분된다.

 

- 주소 버스(address bus)

주소가 CPU로부터 기억장치 혹은 I/O 장치들로 전송되는 정보이기 때문에 주소 버스는 단방향 버스이다. 주소 버스는 CPU가 외부로 발생하는 주소 정보를 전송하는 주소(신호) 선들의 집합으로 하나의 시스템 장치에서 다른 장치로 주소 정보를 전송하기 위해 사용한다. 

 

- 데이터 버스(data bus)

CPU가 기억 장치 혹은 I/O 장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합으로 데이터, 명령어 등의 정보를 교환하는 전송로 역할을 담당한다. 프로세서에서 메모리나 입출력 장치로 데이터 출력(읽기) 또는 데이터 입력(쓰기)을 받았을 때 사용하는 양방향 버스이다.

 

만약 데이터 버스의 폭이 32비트이면, 프로세서(CPU) 와 메모리 사이의 데이터 전송은 한번에 32비트씩 가능하다.

 

- 제어 버스(control bus)

CPU가 시스템 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합으로 프로세서가 저장 장치와 입출력 장치에 데이터를 전송할 때, 현재 수행 중인 작업 종류나 다른 장치에 알릴 때 이용하는 방향 버스이다. 제어버스의 가장 기본적인 제어 신호로 Memory Read/Write 신호와 IO Read/Write 신호 등을 들 수 있다.

 

 

CPU가 데이터를 기억장치의 특정 장소에 저장하거나 혹은 이미 저장되어 있는 내용을 읽는 동작을 액세스(Access)라고 한다. 이 과정에서 CPU가 특정 기억 장소로부터 데이터를 읽고자 할 때 기억장치에 보내주어야 하는 정보는 주소와 읽기 신호이다. 그리고 데이터를 저장하려는 경우에는 해당 기억 장소의 주소와 데이터 및 쓰기 신호를 보내주어야 한다.  (액세스와 관련된 내용은 이전 게시글에 설명되어 있다.)

 

따라서 CPU와 기억장치 사이에는 위와 같은 정보들의 전송 통로인 주소버스, 데이터 버스, 제어버스들이 연결되어 있어야 한다. 이것을 그림으로 표현하면 아래와 같다.

 

[ The System Bus ]

Posted by doubler
,