Dog foot print

[C-Architecture] 컴퓨터의 시스템 본문

컴퓨터 구조

[C-Architecture] 컴퓨터의 시스템

개 발자국 2019. 9. 11. 23:19

오늘은 CPU와 기억장치, I/O device들은 어떻게 정보를 교환하는지에 대해서 알아보도록 하겠다.

 

시스템 버스 

 

시스템 버스란 CPU와 시스템 내 다른 요소들 사이에 정보를 교환하려는 통로이다. 

 

예를 들어 int result = 10 + 10; 라는 수식을 작성하게 되면 cpu에서는 해당 식을 계산하여 result 변수가 있는 메모리에 20이라는 수를 저장하게 되고 printf("%d", result)를 하면 모니터에 출력되게 된다. 이 처럼 cpu와 다른 부품들로 데이터와 주소를 전달하는 통로를 시스템 버스라고 한다. 

 

이 시스템 버스는 전달하는 내용에 따라 주소버스, 데이터버스, 제어버스로 나뉜다. 

 

주소버스 (address bus)

 

주소버스는 일정한 메모리 번지를 찾는데 사용되는 신호를 운반하는 버스이다. 

 

주소버스의 선(대역)의 수에 따라 시스템이 할당할 수 있는 메모리의 양을 결정한다. 예를 들어 주소버스의 크기가 2의 4승 이라면 16개의 메모리에 위치(주소)를 할당할 수 있다. 

 

또한 주소버스는 cpu가 메모리를 할당하는 과정에서 주소를 정해주기만 하고 다시 받지 않아도 되니 단방향 버스이다. 

 

데이터 버스(data bus)

 

데이터 버스는 cpu가 I/O device나 Memory에 데이터를 전송하기 위한 버스이다. 

 

데이터 버스는 대역(선)의 크기에 따라 cpu와 다른 부품들간의 전송할 수 있는 데이터크기가 결정된다. 

 

데이터버스는 cpu에서 보낼 수도 메모리에서 cpu로 다시 보낼 수도 있는 양방향 버스이다. 

 

제어버스(control bus)

 

제어 버스는 cpu가 시스템 내의 각종 요소들의 동작을 제어하기 신호를 전달하는 버스이다. 

 

주된 역할로 Memory 읽기/쓰기, I/O 읽기/쓰기, 버스 제어 신호전달이 있다. 

 

제어버스 또한 cpu가 시스템 내 요소들에게 동작을 제어할 수 있고 다른 장치들 또한 cpu의 연산을 멈출 수 있으니 양방향버스이다.

 

 

버스의 흐름

 

CPU와 기억장치간의 연결

기억장치 쓰기

 

cpu가 기억장치로 쓰는 동작을 할때는 주소버스로 메모리의 주소,데이터 버스로 데이터, 제어 버스로 쓰기 신호를 기억장치에 동시에 보내 메모리에서 쓰는 동작을 지시한다. 

 

 

기억장치 읽기 

 

쓰기 동작과는 조금 다르다. 먼저 주소버스에 메모리 주소를 넣고, 제어버스에 읽기 신호를 기억장치에 보내면 기억장치에서는 cpu로 데이터버스에 데이터를 넣어 전달 한다.

 

CPU와 I/O 장치의 접속

I/O장치는 메모리보다 훠어어어얼씬 느리다는 단점이 있다. 그렇기에 cpu가 I/O device의 입출력의 처음 부터 끝까지 관여하게 된다면 엄청빠른 cpu는 작업이 하나하나 끝날때마다 device에서 작업완료응답이 올때까지 놀게된다. 이런 속도차이때문에 I/O DEVICE에는 I/O 장치 제어기라는 것을 두어 cpu가 요청만 해놓고 장치제어기가 I/O device를 제어하고, 데이터를 이동시킨다.

 

또한 상태 레지스터, 데이터 레지스터라는 임시공간을 두어 현재의 상태와 데이터를 이곳에 저장하여 cpu가 빠르게 처리 할 수 있게 한다. 

 

상태 레지스터

I/O 장치의 현재 상태를 나타내는 비트를 저장한 레지스터이다.  

(레지스터는 데이터를 임시적으로 저장하는 공간)

 

데이터 레지스터

CPU와 I/O device간의 이동되는 데이터를 저장하는 공간이다. 

 

 

반응형
Comments