본문 바로가기

컴퓨터구조

1.3 시스템의 구성

시스템은 크게 중앙처리장치와 기억장치 그리고 주변과 상호가능한 입출력장치로 이루어져있다. 

컴퓨터 시스템의 주요 구성요소 가운데의 주 기억장치와 중앙처리장치가 존재하고 나머지는 입출력장치이다. (출처 : 코네니컷 주립대(https://chortle.ccsu.edu/java5/notes/chap01/ch01_4.html))

1. 시스템버스

CPU가 다른 장치와 통신하기 위해서는 이어지는 통로가 필요한데 그것이 바로 시스템 버스(System Bus)이다. 시스템 버스(System Bus)는 대체적으로 세개로 구성되어 있는데

 

  1. 주소 버스
    주소 버스는 CPU와 외부장치와 통신할때 필요한 주소정보를 전송할때 사용한다. 따라서 단방향이고 각 주소선은 주소비트를 나타내며 주소선은 CPU와 통신할수 있는 최대 기억장치 용량을 나타낸다. N개의 비트를 사용할때 나타낼수 있는 주소의 수는 2**n(2의 n승)개가 된다. 또한 여기서 사용되는 N은 주소버스의 폭(width)로 나타낼수도 있다.
    ex) 8개의 비트로 나타낼수 있는 최대 주소수 2**8 ==> 256개의 주소
    ex) CPU에서 발생하는 4byte의 주소 버스의 폭으로 나타낼수 있는 최대 주소수 2**32 ==> 4,294,967,296개의 주소
  2. 데이터 버스
    데이터 버스는 CPU가 기억장치나 입출력장치와 데이터를 주고 받을 때 사용한다. 따라서 양방향으로 데이터를 주고 받을 수 있고 데이터 버스의 폭은 한번에 전송가능한 데이터의 폭을 나타낸다. 
  3. 제어 버스
    CPU가 시스템 내의 각종 요소(마우스, 키보드 etc...)들의 동작을 제어하려면 제어 버스가 필요하다. 제어 버스는 시스템의 구성에 따라 제어 신호의 수가 달라질수 있으며, 기억장치의 읽기, 쓰기 신호와 같은 기본적인 동작부터 프린터를 제어하는 신호까지 굉장히 다양해 질수 있다. 

이렇게 설명한것을 그림으로 그리면 이렇다. 

CPU와 시스템 버스간의 관계를 그린 도표. CPU와 시스템 버스간의 방향성을 주시하자.

 

시스템 버스에 대해 알아 보았으니 CPU와 주기억장치(RAM)과 통신하는 과정을 살펴보자!

CPU와 주기억장치는 앞서 배운것 처럼 주소버스, 데이터버스, 제어버스로 이루어져있다.

위 그림을 보면 이해가 완벽하게 되지 않을 것이다. "뭐 어쩌라고!!!"

 

일단 CPU가 기억장치에서 데이터를 읽어 오는걸 생각해보자

데이터는 기억장치의 어느부분(주소)에 있을 것이다. 주소버스를 이용해 원하는 부분의 데이터를 정하고
제어버스의 한부분인 읽기신호(RD)에 읽기 신호를 보내준다면 데이터버스를 통해서 원하는 데이터가 도착할것이다. CPU는 이를 활용해 데이터를 읽게 된다.

 

반대로 CPU가 기억장치에 데이터를 작성하는 방법은 더 간단하다.

원하는 주소는 주소버스에, 원하는 데이터는 데이터버스에 보내면서 쓰기신호도 함께 보낸다면 기억장치에 데이터를 쓸수 있게된다!

하지만 데이터가 움직이는데에는 시간이 소요되므로 보내기 시작하는 순간부터 끝이 날때까지 신호를 주고 있어야 하며
시작부터 끝까지 걸리는 시간이 기억장치의 쓰기 시간이 된다. 

반대로 읽기 시간도 존재한다. 

 

2. I/O장치와 CPU

입출력장치는 여러가지가 있다. 마우스, 키보드, 우리가 보고 있는 디스플레이까지 많은 종류가 있지만 CPU는 이 모든것과 직접적으로 통신할수가 없다. 예를 들면 우리가 키보드를 컴퓨터에 연결할때 사용하는 포트인 USB는 보통 125hz에서 1000hz사이에서 작동한다. 이는 한번의 통신에 걸리는 시간이 길면 8ms 짧으면 1ms이다. 하지만 요즘 표준적으로 CPU가 작동하는 속도인 2Ghz를 예시로 한다면 한번의 통신에 걸리는 시간이 0.5ns ms로 환산하면 0.00000005ms이다. 만약 CPU가 키보드와 직접적으로 통신을 해서 데이터를 읽는다면 한번의 읽기시간동안 잃는 연산횟수는 엄청날것이다. 따라서 컴퓨터 시스템 내부에는 주변장치 제어기가 존재하는데 원리는 간단하다.

대충 그린 CPU와 주변장치간의 도표

위 그림을 보면 키보드는 시스템버스에 직결되어있지 않고 중간의 제어기(Controller)에 연결되어있다. 제어기는 키보드의 상태와 데이터를 담고 있는 레지스터를 가지고 있고 CPU는 상태레지스터가 알려주는 준비 상태에 따라서 데이터를 읽거나 쓰게 된다. 데이터 레지스터는 중간의 데이터를 보관해서 프린트를 할때 문서를 한번에 담아서 CPU의 개입이 적게 할수가 있고 데이터를 효율적으로 이동시킬수 있는 중간 저장소인 버퍼로도 이용이 가능하다.

 

위에서는 키보드만 설명했지만 보조기억장치와 프린터, 모니터 모두 이런 기본적인 구조를 따라서 CPU와 통신하게된다.

 

정리하면 간단하다.

중앙처리장치와 주기억장치는 입출력장치에 비하여 속도가 빠르기 때문에 직결되지만 

입출력장치는 중간의 제어기가 존재하여 데이터를 보관후 CPU가 요청시 데이터를 입출력할 수 있게 도와준다.

 

여기서 큰 그림을 보았고 다음 페이지에서는 CPU의 구조에 대해서 알아본다.

반응형