[15] 장치 컨트롤러와 장치 드라이버

hyunsooo·2023년 4월 14일
2

이번 시간은 마지막 입출력 장치에 대해서 학습하는 시간입니다. 다양한 입출력 장치들이 컴퓨터와 소통할때 필요한 장치 컨트롤러와 장치 드라이버에 대해서 알아보겠습니다.

입출력장치는 모니터, 키보드, 스피커, 프린터 등 컴퓨터와 소통하는 외부 장치들을 의미합니다. 입출력장치에는 보조 기억장치도 입출력장치의 한 종류로 볼 수 있습니다.

입출력장치는 앞서 학습한 CPU, 메모리보다 다루기가 더 까다롭습니다. 그 이유는 입출력장치에는 많은 종류가 장치들이 포함되어 있기 때문에 각 장치마다 갖춰야 될 데이터 형식, 속도 등이 다양하여 규격화하기 어렵다는 점이 있습니다. 두 번째로, 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 일반적으로 입출력장치의 데이터 전송률은 낮기 때문입니다. 예를 들어, CPU와 입출력장치가 소통한다면 데이터 전송률의 차이로 소통이 힘들어질 수 있습니다.

이러한 이유로 입출력장치는 장치 컨트롤러(I/O controller, I/O Module)를 통해 컴퓨터와 연결됩니다.

장치 컨트롤러의 역할

  • CPU와 입출력장치 간의 통신중개

    • 각 장치마다 규격화를 해주는 역할
  • 오류 검출

  • 데이터 버퍼링

    • 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법

    • 예를 들어, CPU는 전송률이 높기 때문에 버퍼에 저장하고 입출력장치로 조금씩 내보내거나 입출력장치의 데이터를 버퍼에 저장하여 한번에 CPU로 전송함으로 데이터 전송률을 맞추는 역할

장치 컨트롤러의 구조

장치 컨트롤러는 결국 버스(입출력)에 연결됩니다. 주고 받는 정보에는 크게 데이터, 상태, 제어 3가지가 존재합니다. 상태와 제어 레지스터는 하나의 레지스터로 사용되기도 합니다.

데이터 레지스터는 CPU와 입출력장치 사이에 주고 받을 데이터를 저장하는 레지스터로 버퍼의 역할을 합니다. 최근에는 입출력장치와 CPU간의 주고 받는 데이터가 증가하여 RAM을 사용하기도 합니다.

상태 레지스터는 입출력장치가 입출력 작업할 준비가 되었는지, 작업 완료가 되었는지, 오류가 없는지 등의 상태 정보를 저장하는 레지스터 입니다.

제어 레지스터는 입출력장치가 수행할 내용에 대한 제어 정보가 담기는 레지스터입니다.

장치 드라이버

장치 드라이버는 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램입니다. 장치 컨트롤러가 입출력장치를 연결하는 하드웨어적 통로라면, 장치 드라이버는 소프트웨어적인 통로입니다.

우리가 새로운 프린터를 구입해서 컴퓨터에 연결하고 사용하려고 할때, 알맞은 장치 드라이버를 설치하는 것처럼, 컴퓨터가 연결된 입출력 장치의 드라이버를 인식하고 실행할 수 있다면 컴퓨터 내부와 정보를 주고받을 수 있습니다.

결국 장치 드라이버는 CPU가 장치 컨트롤러에 연결된 장치를 어떻게 제어하고 동작시킬지 알려주는 프로그램입니다. 조금 더 정확하게 표현하자면 장치 드라이버를 인식하고 실행시켜주는 주체는 컴퓨터라기 보다 운영체제가 담당합니다.

profile
지식 공유

0개의 댓글