본문 바로가기

Computer Science/컴퓨터 구조

컴퓨터 구조 - 장치 컨트롤러와 장치 드라이버

장치 컨트롤러(device controller)

: 입출력장치가 종류가 많아져 정보 규격화가 어려운 문제를 해결하기 위해 일종의 번역가 역할을 해주는 장치입니다.

  • CPU와 입출력장치 간의 통신 중개 : 입출력장치의 종류는 매우 다양합니다. 종류 뿐만 아니라 장치마다 속도, 데이터 전송 형식 등도 다양합니다.
  • 오류 검출 : 장치 컨트롤러에 연결된 장치에 문제가 발생했는지 확인합니다.
  • 데이터 버퍼링 : 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력 장치의 데이터 전송률은 낮습니다. 여기서 전송률(transfer rate)이란 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표입니다. 이와 같이 데이터 전송률이 차이가 나는 장치 사이에서 주고받는 데이터를 버퍼(buffer)라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 것을 버퍼링(buffering)이라고 합니다. 쉽게 말해 '버퍼에 데이터를 모았다가 헌 번에 내보내거나, 데이터를 한 번에 많이 받아 조금씩 내보내는 방법'이라고 볼 수 있습니다.

 

  • 데이터 레지스터(data register) : CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터입니다. 앞서 언급한 버퍼의 역할을 담당합니다. 주고받는 데이터가 많은 입출력장치에서는 레지스터 대신 RAM을 사용하기도 합니다.
  • 상태 레지스터(status register) : 입출력장치가 입출력 작업을 할 준비가 되었는지, 입출력 작업이 완료가 되었는지, 입출력 장치에 오류는 없는지 등의 상태 정보가 저장됩니다.
  • 제어 레지스터(control register) : 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장합니다.

 

장치 드라이버(device driver)

: 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램입니다. 프로그램이기 때문에 실행되면 프로세스로서 메모리에 적재됩니다. 장치 컨트롤러가 입출력장치를 연결하기 위한 하드웨어적인 통로라면, 장치 드라이버는 소프트웨어적인 통로입니다.

  • 장치 드라이버는 운영체제가 기본으로 제공하는 것도 있지만, 장치 제작자가 따로 제공하기도 합니다. 따로 제공하는 경우 설치되어있지 않으면 해당 입출력장치는 사용할 수 없습니다.