- CPU와 입출력장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링 (버퍼에 데이터를 조금씩 모았다가 한꺼번에 재보내거나 데이터를 한 번에 많이 받아 조금씩 내보내는 방법)
장치 컨트롤러의 내부에는 데이터 레지스터
, 상태 레지스터
, 제어 레지스터
등이 있다.
** 장치 컨드롤러가 필요한 이유
입출력장치는 종류가 매우 많아서 정보를 주고받는 방식을 규격화하기 어려움
일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률(얼마나 빨리 교환할 수 있는가)은 낮음
장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
프로그램 속 명령어로 입출력장치를 제어하는 방법
장치 컨트롤러에 의해 발생하는 하드웨어 인터럽트를 기반으로 하는 입출력
장치 컨트롤러가 입출력 작업을 끝내고 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 백업하고 인터럽트 서비스 루틴을 실행함
CPU는 인터럽트 간 우선순위를 고려하여 우선순위가 높은 인터럽트 순으로 여러 인터럽트를 처리할 수 있음
NMI(Non-Maskable Interrupt) - 인터럽트 비트를 활성화해도 무시할 수 없는 인터럽트. 발생시, CPU는 우선순위가 높은 인터럽트부터 처리
프로그래머블 인터럽트 컨트롤러(PIC) - 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청의 우선순위를 판별한 후, CPU에 처리해야할 하드웨어 인터럽트를 알려주는 장치
입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식. 직접 메모리에 접근할 수 있는 입출력 기능. 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.