8-1. 장치 컨트롤러와 장치 드라이버
- 장치컨트롤러(device controller, 입출력제어기(I/O controller), 입출력 모듈(I/O Module))를 사용하는 이유
- 입출력 장치의 종류가 너무나 다양하다.
- 일반적으로, CPU와 입출력장치의 데이터 전송률이 낮다.
- 장치컨트롤러의 역할
- CPU와 입출력장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링
- 장치 컨트롤러의 구성
- 데이터 레지스터 CPU와 입출력 장치 사이에 주고받은 데이터가 저장.
- 상태 레지스터 입출력장치의 상태 정보가 저장 (오류여부, 작업여부 등)
- 제어 레지스터 입출력 장치가 수행할 내용에 대한 제어 정보와 명령을 저장.
- 장치 드라이버(device driver)
장치 컨트롤러의 동작을 감지하고 제어하여 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램.
8-2. 다양한 입출력 방법
- 프로그램 입출력 (programmed I/O)
- 프로그램 속 명령어로 입출력 장치를 제어하는 방법.
- 메모리 맵 입출력 (memory-mapped I/O) CPU가 메모리, 입출력장치의 주소 공간을 따로 구분하지 않고 할당하는 방법. (ex : 컴퓨터가 1024개의 주소를 저장할 수 있다면, 512개에는 메모리 주소 공간을, 나머지 512개에는 입출력 주소 공간을 할당)
- 고립형 입출력 (isolated I/O)
- 입출력장치 전용 버스가 따로 존재하며, 활성화되는 같은 주소라도 버스 종류에 따라 해당되는 메모리/입출력장치가 달라짐.
- 입출력 전용 명령어 사용.
- 메모리 주소 공간이 축소되지 않음.
- 인터럽트 기반 입출력
- 장치 컨트롤러가 입출력 작업이 완료시, CPU에게 인터럽트 요청 신호를 보내 작업을 진행하는 방식.
- 여러 인터럽트 요청의 우선순위를 정하여 다중 인터럽트를 처리해야함. PIC(Programmable Interrupt Controller) 사용.
- PIC가 장치 컨트롤러에서 인터럽트 요청 신호를 받아들임.
- PIC는 인터럽트 우선순위를 판단, CPU에서 처리해야 할 인터럽트 요청 신호 전송.
- CPU는 PIC에 인터럽트 확인 신호 전송.
- PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터 전송.
- CPU는 인터럽트 벡터로 인터럽트 요청의 주체 확인, 해당 장치의 인터럽트 서비스 루틴 실행.
- 장치 컨트롤러가 입출력 작업이 완료시, CPU에게 인터럽트 요청 신호를 보내 작업을 진행하는 방식.
- DMA 입출력 (Direct Memory Access)
- CPU의 과부하를 방지하기 위해, 입출력 장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식.
- 별도의 DMA 컨트롤러 필요.
- DMA 입출력 과정
- CPU는 DMA 컨트롤러에 입출력 장치의 주소, 수행할 연산, 메모리의 주소 등과 같은 정보로 입출력 작업 명령.
- DMA 컨트롤러는 CPU 대신 컨트롤러와 상호작용하며 입출력 작업을 수행, 필요한 경우 메모리에 직접 접근.
- 입출력 작업 종료시, DMA컨트롤러는 CPU에 인터럽트를 걸어 작업종료를 알림.
- DMA컨트롤러는 시스템 버스를 이용하지만, CPU와 동시에 쓸 수 없기에 CPU가 이용하지 않는 경우에 조금씩 사용하거나, CPU의 허락을 받고 집중적으로 사용.
- But DMA 컨트롤러가 장치 컨트롤러와 연결할 입출력 버스를 별도로 이용하기도 함. 현대 대부분 컴퓨터에는 입출력 버스 존재.
- PCI(Peripheral Component Interconnect) 버스, PCI Express 버스 등 다양한 종류가 존재.
참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)
'CS지식 > 컴퓨터구조' 카테고리의 다른 글
| 컴퓨터구조 Ch.7 보조 기억 장치 (0) | 2023.01.17 |
|---|---|
| 컴퓨터 구조 Ch.6 메모리와 캐시 메모리 (0) | 2023.01.14 |
| 컴퓨터 구조 Ch.5 CPU 성능 향상 기법 (0) | 2023.01.13 |
| 컴퓨터 구조 Ch.4 CPU의 작동원리 (0) | 2023.01.13 |
| 컴퓨터구조 Ch.3 명령어 (1) | 2023.01.09 |