핵심 키워드: 장치 컨트롤러
, 장치 드라이버
입출력장치는 앞서의 CPU, 메모리보다 다루기가 더 까다롭습니다. 그 이유는?
이를 해결하기 위해 입출력장치는 컴퓨터에 직접 연결되지 않고, 장치 컨트롤러라는 하드웨어를 통해 연결됩니다.
장치 컨트롤러의 대표적인 역할은?
개략적인 장치 컨트롤러의 구성은?
장치 드라이버란 장치 컨트롤러의 동작을 감지하고 제어함으로서 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램입니다.
핵심 키워드: 프로그램 입출력
, 메모리 맵 입출력
, 고립형 입출력
, 인터럽트 기반 입출력
, DMA 입출력
, 입출력 버스
제어 레지스터
에게 쓰기 명령을 보냅니다.상태 레지스터
에 준비되었다고 표시합니다.데이터 레지스터
에 씁니다.과정은 이렇게 된다는 것은 알았는데, CPU는 장치 컨트롤러의 레지스터와 주소값을 어떻게 알 수 있을까요?
메모리 맵 입출력 (memory-mapped I/O)
메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법입니다.
고립형 입출력 (isolated I/O)
메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법으로 제어 버스에 ‘입출력장치 읽기/쓰기’ 선이 따로 있습니다. 이를 위해서는 입출력 전용 명령어를 사용해야 합니다.
입출력 장치 그 자체가 아닌 장치 컨트롤러가 하드웨어 인터럽트를 발생 시킵니다.
CPU는 장치 컨트롤러에 입출력 작업을 명령하고, 장치 컨트롤러가 입출력을 수행하는 동안 CPU는 다른 작업을 할 수 있습니다.
장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴을 실행합니다.
플래그 레지스터 속 인터럽트 비트가 활성화되어 있는 경우, 혹은 인터럽트 비트를 비활성화해도 무시할 수 없는 인터럽트인 NMI (non-maskable interrupt)가 발생한 경우, PIC (programmable interrupt controller)를 이용하여 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야 할 하드웨어 인터럽트는 무엇인지 알려줍니다.
더 자세히 알아 보면 (앞선 04-3
에서 나온 내용이 많습니다!)
입출력장치와 메모리가 CPU를 거치지 않고 상호작용할 수 있는 입출력 방식입니다.
DMA (direct memory access)는 직접 메모리에 접근할 수 있으며, 시스템 버스에 연결되어 있는 DMA 컨트롤러라는 하드웨어가 필요합니다.
DMA 입출력 과정
CPU는 오로지 입출력의 시작과 끝에만 관여하면 됩니다. 하지만, 시스템 버스를 공유하는 문제가 있어… 다음에 계속
입출력 버스
DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스라는 별도의 버스에 연결하여 해결할 수 있습니다.
현대 대부분의 컴퓨터에는 입출력 버스가 있어서 시스템 버스가 아닌 입출력 버스와 연결됩니다. 그 종류에는 PCI (peripheral component interconnect) 버스, PCI Express (PCIe) 버스가 있습니다.