Chapter.08 - 입출력장치
모든 이미지의 저작권은 [혼자 공부하는 컴퓨터 구조 + 운영체제] 도서의 저자 강민철님에게 있습니다.
장치 컨트롤러
CPU와 입출력장치 간의 통신 중개 , 오류 검출 , 데이터 버퍼링 등의 역할을 수행하는 입출력장치의 하드웨어
일반적으로 입출력장치는 데이터 전송률이 낮다. ( = CPU & RAM 에 비해 주고받을 수 있는 데이터가 적다.) 그래서 데이터 버퍼링을 통해 전송률의 차이를 보완한다.
장치 컨트롤러 핵심 구조
- 데이터 레지스터
- 서로 주고 받을 데이터가 담기는 레지스터.
버퍼의 역할을 함 - 상태 레지스터
- 입출력장치의 상태를 저장
- 제어 레지스터
- 입출력장치가 수행할 내용에 대한 제어와 명령을 저장
장치 드라이버
장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램 (소프트웨어)
프로그램이기에 메모리를 사용한다.
입출력 방법
* 프로그램 입출력
프로그램 속에 입출력장치와 상호작용하는 명령어로 입출력장치를 제어하는 방법
* 인터럽트 기반 입출력
- 원리
- CPU로부터 명령을 받은 장치 컨트롤러가 입출력장치에 일을 시킨다.
- 입출력장치의 작업이 완료되면 장치 컨트롤러가 CPU에 인터럽트를 보낸다.
- CPU 는 하던 일을 멈추고 인터럽트 서비스 루틴을 실행한다.
여러 입출력장치에서 동시에 인터럽트가 발생한 경우
프로그래머블 인터럽트 컨트롤러 (PIC)
라는 하드웨어가 모든 인터럽트 신호를 받고 우선순위를 판별하여 CPU에 신호를 보내준다.
인터럽트 비트를 무시하는 인터럽트 :
NMI (Non-Maskable Interrupt)
* DMA 입출력
입출력장치가 직접 메모리에 접근할 수 있도록 하는 DMA (Direct Memory Access)
기능을 이용한 입출력
DMA 컨트롤러
라는 하드웨어가 필요하다.
CPU 가 입출력 작업을 DMA 컨트롤러에게 명령하면 DMA 컨트롤러는 메모리에 직접 접근해서 입출력 작업을 수행하고 작업이 완료되면 CPU 에 인터럽트 신호를 보낸다.
입출력 버스
입출력장치 , DMA 컨트롤러와 연결된 버스
시스템 버스의 사용 빈도를 줄여 CPU 가 더 많이 사용할 수 있도록 함
PCI 버스 , PCIe 버스 등 여러 종류가 있다.
PCIe 슬롯을 통해 입출력장치 와 입출력 버스를 연결한다.