장치 컨트롤러와 장치 드라이버

Sundae·2023년 8월 9일

컴퓨터 구조

목록 보기
2/4
post-thumbnail

장치 컨트롤러


입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러(device controller)라는 하드웨어를 통해 연결된다.

컴퓨터에 직접 연결되지 않는 이유는 두 가지로 나눌 수 있다.

  • 입출력장치의 종류가 너무 많다.
    키보드 , 마우스, 모니터 , USB 메모리 등등 매우 많다.
    이렇게 많으면 당연히도 장치마다 데이터 전송 방법이나 속도가 다를 것이다.

  • 입출력장치의 데이터 전송률은 CPU와 메모리에 비해서 낮다.
    전송률(transfer rate)이란 데이터를 얼마나 빨리 교환할 수 있는지를 나타낸다. 일반적으로 CPU와 메모리는 많은 데이터를 빠르게 주고받을 수 있지만, 키보드나 마우스는 상대적으로 전송률이 낮아 같은 시간 동안 데이터를 조금씩만 주고받을 수 있다.

이러한 이유로 장치 컨트롤러에 연결되는 것이다.

장치 컨트롤러는 입출력 제어기(I/O controller) , 입출력 모듈(I/O module)로 불리기도 한다.

장치 컨트롤러의 역할


위와 같운 문제점들 때문에 장치컨트롤러를 사용해야한다. 그렇다면 장치 컨트롤러는 정확히 어떤 역할들을 할까? 장치 컨트롤러는 아래와 같은 역할을 한다.

  • CPU와 입출력장치 간의 통신 중개
    입출력장치의 종류가 많으면 데이터 전송 방법이 다르다고 했다. 다른 말로 정보 규격화가 어려웠기 때문에 장치 컨트롤러가 일종의 번역기 역할을 하는데 그 과정에서 오류를 검출하기도 한다.

  • 데이터 버퍼링
    전송률이 높은 장치는 데이터를 빠르게 주고받을 수 있고, 전송률이 낮은 장치는 같은 시간 동안 데이터를 비교적 느리게 주고받을 수 있다고 했다.
    이 전송률을 맞추기 위해 데이터 버퍼링을 사용한다. 버퍼링(buffering)은 장치 간에 주고받는 데이터를 버퍼(buffer)라는 임시 공간에 저장하여 전송률을 비슷하게 맞추는 방법이다.

장치 컨트롤러의 내부 구조


장치 컨트롤러의 내부에는 주요한 세 가지 레지스터가 있다. 다음과 같다.

  • 데이터 레지스터(data register)
    CPU와 입출력장치 간에 교환할 데이터가 담기는 레지스터이다. 위에서 설명한 버퍼의 역할을 한다.
    주고받는 데이터가 많은 입출력장치에서는 레지스터 대신 RAM을 사용하기도 한다.

  • 상태 레지스터(status register)
    입출력장치의 오류여부 , 작업에 문제가 없는지 등의 상태 정보가 저장된다.

  • 제어 레지스터(control register)
    입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장한다.

장치 드라이버


장치 드라이버(device driver)란 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램이다. 장치 컨트롤러가 하드웨어적인 통로라면, 장치 드라이버는 소프트웨어적인 통로이다.

(장치 드라이버를 인식하고 실행하는 주체는 윈도우 같은 운영체제이다. 운영체제가 장치 드라이버를 인식하고 실행할 수 있다면 그 장치는 컴퓨터 내부와 정보를 교환할 수 있다. 만약 장치 제작자가 장치 드라이버를 따로 제공하는 경우 입출력장치는 해당 드라이버를 직접 설치해야 사용 가능하다.)

profile
성장 기록 / 글에 오류가 있다면 댓글 부탁드립니다.

0개의 댓글