혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다.
현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다.
장치 컨트롤러
입출력장치는 CPU, 메모리보다 다루기 어렵다. 종류가 너무 많고 데이터 전송률이 낮기 때문이다.
따라서 컴퓨터에 직접 연결되지 않고, 장치 컨트롤러라는 하드웨어에 연결된다.
장치 컨트롤러의 역할
- CPU와 입출력장치간의 통신 중개
- 오류 검출
- 데이터 버퍼링
※ 버퍼링이란 전송률이 높은 장치와 낮은 장치간 데이터를 버퍼라는 임시 공간에 저장해 전송률을 맞추는 방법
장치 컨트롤러는 세 가지 구성 요소를 가진다.
- 데이터 레지스터 : 위의 버퍼 역할을 한다.
- 상태 레지스터 : 입출력장치의 상태를 저장한다.
- 제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어 정보를 저장한다.
장치 드라이버
장치 컨트롤러의 동작을 감지하고 제어하는 프로그램이다.
다양한 입출력 방법
장치 컨트롤러와 CPU의 정보 교류 방법에는 크게 세 가지가 있다.
프로그램 입출력
프로그램 속 명령어로 입출력 장치를 제어하는 방법이다.
CPU가 프로그램 속 명령어를 실행하는 과정에서 입출력 명령어를 만나면 CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하며 입출력 작업을 수행한다.
CPU가 컨트롤러 속 레지스터를 인식하는 방법에는 크게 두 가지가 있다.
- 메모리맵 입출력 : 메모리에 접근하기 위한 주소 공간과 입출력 장치에 접근하기 위한 주소 공간을 하나의 공간으로 간주한다.
- 고립형 입출력 : 메모리와 장치의 주소 공간을 분리한다. 입출력 전용 명령어를 사용한다.
인터럽트 기반 입출력
하드웨어 인터럽트 신호를 보내고 제어한다.
※ 인터럽트와 대조적인 개념으로 폴링(polling)이 있다. 이는 주기적으로 상태 레지스터를 확인하여 상태를 확인하는 방법이다.
입출력장치가 많을 경우 다중 인터럽트 발생이 가능한데, 이를 처리할때 많은 컴퓨터에서 프로그래머블 인터럽트 컨트롤러(PIC)를 활용한다. 이는 인터럽트 요청들의 우선순위를 판별하는 기능을 한다.
DMA 입출력
프로그램 기반 입출력과 인터럽트 기반 입출력 모두 CPU를 거치는데, 이는 속도 저하의 원인이 된다.
이를 보완하기 위해 직접 메모리에 접근하는 기능인 DMA가 등장했다.
DMA 입출력을 하기 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.
DMA 컨트롤러는 CPU 대신 상호작용 후에 CPU에 인터럽트 요청을 보낸다.
다만 DMA가 시스템 버스를 사용할때 CPU는 사용할 수 없기에 문제가 된다.
이를 해결하기 위해 DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스라는 별도의 버스에 연결해 해결할 수 있다.
현대의 대부분 컴퓨터에는 입출력 버스가 있으며, PCI 버스, PICe 버스 등 여러 종류가 있다.
'~ 2024.03 > 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[컴퓨터 구조] 프로세스와 스레드 (2) | 2024.01.04 |
---|---|
[컴퓨터 구조] 운영체제 시작하기 (1) | 2024.01.04 |
[컴퓨터 구조] 보조 기억 장치 (1) | 2024.01.04 |
[컴퓨터 구조] 메모리와 캐시 메모리 (1) | 2024.01.04 |
[컴퓨터 구조] CPU 성능 향상 기법 (2) | 2024.01.03 |