본문 바로가기
컴퓨터공학기초 개념/컴퓨터구조

26. 입출력 구조 - 입출력 제어

by devraphy 2021. 8. 26.

0. 시작하기 전에

- 이전 포스팅에서 입출력 구조를 이해하기 위한 시스템 BUS에 대해서 알아보았다. 

- 시스템 BUS는 단방향 통신으로 주기억장치와 CPU내부의 레지스터들과의 소통을 위한 회로다.

- 이번 포스팅에서는 시스템 BUS와 입출력 장치간의 어떤 과정이 이루어지는지 알아보자. 


1. 입출력 장치와 소통하는 방식

- 컴퓨터의 마더보드에는 주소버스, 데이터버스, 제어버스가 존재한다. 

- 그러나 입출력을 제어하기 위한 또는 입출력 데이터를 전달하기 위한 입출력 버스는 존재하지 않는다. 

- 왜 그럴까? 함께 알아보자. 

 

a) 마더보드에 입출력 BUS가 없는 이유

- 마더보드에 존재하는 다양한 BUS는 고정되어 있는 회로다. 

- 회로를 추가하거나 삭제하거나 할 수 없기에 고정적이고 불변적이다. 

- 그러나 입출력 장치에는 다양한 종류가 있다. 

- 마우스, 모니터, 스피커, 프린터, 키보드 등 입출력 장치에 따른 전달되는 데이터의 크기가 각양각색이다. 

- 이처럼 가변적인 데이터 전달을 필요로 하기 때문에 불변적이고 고정된 BUS를 사용할 수 없다. 

- 이와 같은 이유로 마더보드에는 입출력 BUS가 없다. 

 

b) 입출력 BUS는 어디에 있는가? 

- 입출력 장치는 USB 포트나 다른 포트를 이용하여 외부입력장치로서 컴퓨터와 연결된다.

- 컴퓨터의 포트를 통해 외부 장치와 연결하는 것이 입출력 BUS를 형성하는 것이다.   


2. 입출력 제어 방식의 종류

- 입출력 또는 입출력 장치를 제어하는 방식은 다음과 같이 분류된다. 

 

▶ CPU에 의한 방식

 DMA(Direct Memory Access) 방식

채널(Channel) 제어기에 의한 방식

 

a) CPU에 의한 방식

- 초기의 컴퓨터가 입출력 장치를 제어한 방식이다. 

- 입출력 장치가 컴퓨터에 연결되면 고유의 레지스터를 할당 받고, 여기에는 작동여부를 표시하는 상태 레지스터가 존재한다. 

- CPU가 어떤 입출력 장치를 사용할 때, 해당 장치의 상태 레지스터에게 인터럽트를 걸어 사용 여부를 표시하는 방식이다. 

- 이때, CPU가 연결되어 있는 입출력 장치의 상태 레지스터를 모두 검사하면서 상태여부를 판단하는 과정을 Polling이라고 한다. 

- CPU에 의한 입출력 장치를 제어하는 방식은 CPU 자원을 사용하게 된다.

- 그러므로 CPU 자원의 낭비가 발생하게 된다. 현재 진행해야하는 작업이 있음에도,

- 입출력 장치를 사용하기에 CPU 자원이 입출력 장치를 제어하는 것에 할당되기 때문이다.  

 

b) DMA(Direct Memory Access) 방식

- 본래 입출력 과정은 입력장치를 통해 데이터가 들어오고, 이는 주기억장치에 적재된다.

- 그리고 주기억장치에 적재된 데이터를 CPU가 받아서 처리하는 방식으로 작동한다.

 

- 이러한 방식을 CPU와 관계없이 처리할 수 있다면, 더욱 효율적이지 않을까?

- 이를 구현한 방식이 DMA라는 중간 기기를 이용한 방식이다.

- 즉, CPU의 개입없이 입출력이 처리되는 것이다. 

 

- 그러나 DMA 방식은 치명적인 단점이 있다. 

- CPU의 개입에서 독립적이기 때문에 제어(통제)가 안된다는 것이다. 

- 다시 설명하자면, CPU가 어떤 작업을 하고 있는 와중에 DMA에 의해서 인터럽트가 발생하여 

- 입출력 작업이 우선권을 갖게 되는 것을 말한다. 이를 사이클 스틸(cycle steal)이라고 부른다.  

- 이와 같은 이유로 입출력만을 담당하는 전용 CPU를 만들게 되는데, 이것이 채널(Channel)이다. 

 

c) 채널(Channel) 제어기에 의한 방식

- 채널을 이용한 입출력 방식은 I/O 채널이라는, 입출력만을 담당하는 CPU를 이용하는 것이다. 

- 모든 입출력 작업은 I/O 채널을 거치게 된다. 

- 채널 방식은 다음 두가지로 분류된다. 

 

▶ 분리형 입출력 방식

   - I/O 채널이 입출력 신호를 입력받으면, 메모리에 있는 데이터를 입출력 전용 메모리로 이동시킨다. 

   - 여기서 말하는 입출력 전용 메모리는 입출력 Buffer라고 부른다. 

   - 입력의 경우, 입출력 Buffer에 데이터가 쌓이고 이를 I/O채널이 주기억장치에 적재한다.

   - 출력의 경우, I/O채널이 메모리에 있는 출력 데이터를 입출력 Buffer로 이동시킨 후 출력한다.

  

▶ 메모리 맵 입출력 방식

   - 분리형 입출력 방식과는 다르게, 별도의 입출력 Buffer를 할당하지 않고 메모리 자체를 사용한다. 

   - 입출력이 필요할 때마다, I/O채널은 주기억장치를 이용하여 입출력을 수행한다.

 

댓글