장치 컨트롤러
입출력 장치를 다루기 까다로운 이유
- 입출력장치에 종류가 많다.(비규격화)
- 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다.(전송률의 차이)
결론 : 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러를 통해 연결된다.
장치 컨트롤러의 역할
- CPU와 입출력장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링
버퍼링
- 전송률이 높은 장치와 낮은 장치 사이에 주고 받는 데이터를 버퍼에 임시저장하여 전송률을 비슷하게 맞추는 방법
내부 구조
데이터 레지스터
- CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
- 버퍼링할 때 임시 저장하는 곳
- 최근 주고 받는 데이터가 많은 입출력장치에서는 RAM을 사용하기도 한다.
상태 레지스터
- 입출력장치의 입출력 작업 준비, 완료, 오류 등 상태 정보 저장
제어 레지스터
- 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장
장치 드라이버
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
- 실행과정에서 메모리에 저장
- 장치 컨트롤러는 하드웨어적 통로라면, 장치 드라이버는 소프트웨어적인 통로이다.
- 장치 드라이버를 인식하고 실행하는 주체는 운영체제이다.
장치 컨트롤러가 CPU와 정보 주고받는 방법
프로그램 입출력
프로그램 속 명령어로 입출력장치를 제어하는 방법
CPU가 장치 컨트롤러의 레지스터 값을 읽고 쓴다.
메모리에 장치 컨트롤러 저장하는 방법
메모리 맵 입출력
- 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 메모리 주소 공간이 축소된다.
- 메모리와 입출력장치에 같은 명령어 사용이 가능하다.
고립형 입출력
- 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
- 메모리 주소 공간이 축소되지 않는다.
- 입출력 전용 명령어를 사용한다.
인터럽트 기반 입출력
- 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청을 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴을 실행한다.
- 폴링 : 입출력장치의 상태는 어떤지, 처리할 데이터가 있는지 주기적으로 확인하는 방식
- 인터럽트 방식보다 CPU의 부담이 크다.
프로그래머블 인터럽트 컨트롤러(PIC)
- 우선순위를 반영하여 다중 인터럽트를 처리하는 방법
PIC 다중 인터럽트 처리 과정
- PIC가 장치 컨트롤러에서 인터럽트 요청 신호(들)를 받아들인다.
- PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야 할 인터럽트 요청신호를 보낸다.
- CPU는 PIC에 인터럽트 확인 신호를 보낸다
- PIC는 데이터 버스를 통해 CPU에 인터럽트 백터를 보낸다
- CPU는 인터럽트 벡터를 통해 인터럽트 요청의 주체를 알게 되고, 해당 장치의 인터럽트 서비스 루틴을 실행한다.
DMA 입출력
- 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
- 메모리에 직접 접근할 수 있는 입출력 기능이다.
- DMA 입출력을 위해서 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.
DMA 입출력 과정
- CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산, 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령한다.
- DMA 컨트롤러라는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행한다. 이때 DMA 컨트롤러는 필요할 경우 메모리에 직접 접근하여 정보를 읽거나 쓴다.
- 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.
문제와 해결
- 시스템 버스로 메모리에 직접 접근이 가능하지만, 시스템 버스는 동시 사용이 불가능하다. 공용자원이기 때문에 CPU가 시스템 버스를 사용하지 않을 때 조금씩 이용한다.
사이클 스틸링
- CPU에게 일시적으로 사용 요청을 하고 집중적으로 이용하는 방법
입출력 버스
- DMA의 입출력 과정에서 시스템 버스에 2번 접근하는 문제(메모리 -> DMA 컨트롤러, DMA 컨트롤러 -> 장치 컨트롤러)가 있었고 이는 CPU의 처리 속도를 느리게 한다.
- DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스라는 별도의 버스에 연결하여 해결
- 종류로는 PIC 버스, PIC Express 버스 등이 있다.
참고) 혼자 공부하는 컴퓨터 구조+운영체제
'공부 > 컴퓨터구조, 운영체제' 카테고리의 다른 글
10장 프로세스와 스레드 (0) | 2023.03.30 |
---|---|
9장 운영체제 시작하기 (0) | 2023.03.30 |
7장 보조기억장치 (0) | 2023.03.27 |
6장 메모리와 캐시 메모리 (0) | 2023.03.23 |
5장 CPU 성능 향상 기법 (0) | 2023.03.23 |