컴퓨터 구조
[02] 입출력 장치
BGK97
2024. 3. 20. 15:35
1. 장치컨트롤러와 장치 드라이버
장치컨트롤러
입출력장치가 다루기 까다로운이유
- 입출력장치에 종류가 너무 많음
- 수가 많은 만큼, 다양한 속도, 데이터 전송 형식이 있음
- 이러한 방식을 규격화하는게 어려움
- CPU와 메모리 데이터의 전송률은 높으나, 입출력 장치의 전송률은 낮음
- 전송률
- 데이터를 얼마나 빠르게 교환할 수 있는지 나타내는 지표
- 전송률
장치 컨트롤러
- 입출력 제어기, 입출력 모듈 등 다양하게 불림
- 장치 컨트롤러의 역할
- CPU와 입출력장치간의 통신중계
- 오류 검출
- 데이터 버퍼링
- 일종의 번역가 역할
데이터 버퍼링
- 전송률이 높은 장치와 낮은 장치간 데이터 교환을 버퍼라는 임시 장소에 저장 후 전송률을 비슷하게 맞추는 방법
- 전송률 차이를 버퍼링으로 완화
장치 컨트롤러의 내부
- 데이터 레지스터
- 상태 레지스터
- 제어 레지스터
데이터 레지스터
- CPU와 입출력 장치 사이에 주고받을 데이터가 담기는 곳
- 버퍼 역할
- 최근에는 레지스터 대신 RAM을 사용하기도 함
상태 레지스터
- 입출력장치의 상태를 저장하는 레지스터
- 작업 완료, 작업 준비가 됐는지... 등등
제어 레지스터
- 입출력장치가 수행할 내용에 대한 제어 정보, 명령을 저장
장치 드라이브
- 새로운 장치를 컴퓨터에 연결할 때 사용
- 장치 컨트롤러의 동작을 감시하고, 제어
- 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게끔 함
- 장치 컨트롤러가 입출력 연결을 위한 하드웨어적 통로라면
- 장치 드라이버는 소프트웨어적 통로
- 장치 드라이버를 인식하고 실행하는 주체는 운영체제임 (드라이브 설치 필요한 것도 있음)
2. 다양한 입출력 방법
장치컨트롤러가 CPU와 정보를 주고받는 방법
- 프로그램 입출력
- 인터럽트 기반 입출력
- DMA 입출력
1. 프로그램 입출력
- 프로그램 속 명령어로 입출력장치 제어메모리에 저장된 정보를 하드디스크에 백업하는 과정
- CPU가 하드디스크 컨트롤러의 제어 레지스터에 쓰기 명령 전송
- 하드디스크 상태 확인 후, 준비된 상태라면 상태 레지스터에 준비 완료 표시
- CPU가 상태레지스터를 읽었다면, 백업할 메모리 정보를 데이터 레지스터에 작성
- CPU가 장치 컨트롤러의 레지스터를 인식하는 방법에는 크게 두가지가 있음
- 메모리 맵 입출력
- 고립형 입출력메모리 맵 입출력
- 메모리에 접근하기위한 주소공간과, 입출력장치 접근을 위한 주소공간을 하나의 주소공간으로 간주
- CPU가 명령어를 실행하면, 저장된 정보나 레지스터의 상태 둘중 하나가 들어옴
고립형 입출력
- 메모리에 접근하기위한 주소공간과 입출력장치 접근을 위한 주소공간을 분리
메모리 맵 입출력 | 고립형 입출력 |
---|---|
메모리와 입출력장치가 같은 주소공간 | 메모리와 입출력장치가 다른 주소공간 |
메모리 주소 공간이 축소 | 메모리 주소공간 유지 |
메모리와 입출력장치에 같은 명령어 사용 | 입출력장치 전용 명령어 사용 |
2. 인터럽트 기반 입출력
- 입출력장치가 아닌, 장치 컨트롤러에 의해 발생
- 장치 컨트롤러가 입출력 작업이 끝나면 CPU에게 인터럽트 요청 신호를 보냄
- CPU는 인터럽트 서비스 루틴 실행
- 폴링
- 입출력장치 상태나 처리할 데이터 여부를 주기적으로 확인하는 것
- CPU의 부담이 커짐
- 입출력장치에서 인터럽트가 여러개 발생한 경우
- 순차적으로 처리
- 이는 우선순위를 고려하지 않아 작업에 지장이 생길 수 있음
- 우선순위대로 처리
- NMI(Non_Maskable Interrupt)가 발생한 경우에 우선순위가 높은 인터럽트 부터 처리
- 순차적으로 처리
- 프로그래머블 인터럽트 컨트롤러(PIC)
- 다중 인터럽트를 처리하는 방법중 하나
- 하드웨어 인터럽트들의 우선순위를 판별하여 CPU에 처리해야할 우선적인 인터럽트가 무엇인지 알려줌
- 일반적으로 PIC를 두 개이상 계층으로 구성하여, 많은 하드웨어 인터럽트 관리가 가능
3. DMA 입출력
- CPU가 관여하는 것이 아닌 입출력장치와 메모리가 상호작용하는 방식
- 입출력장치가 직접 메모리에 접근이 가능
- DMA 컨트롤러가 필요
- 그러나 시스템 버스는 공용자원이기 때문에 CPU가 사용하지 않을 때를 이용하여 시스템 버스 이용
입출력버스
- 시스템버스를 DMA 컨트롤러가 이용하게 되면, CPU의 시스템 버스 이용가능 횟수가 줄어듬
- 이를 방지하기위해, DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스에 연결함
- 데이터 전송시, 시스템 버스가 아닌 입출력 버스를 이용
- 입출력 버스의 종류
- PCI (Peripheral Component Interconnect) 버스
- PCI Express 버스
- 입출력 장치와 메모리가 데이터를 주고받는다고 해도, 처리와 해석, 실행은 CPU 몫이였음
- 요즘은 입출력 전용 CPU가 만들어져 입출력 장치와 메모리 사이에서도 명령어 해석, 실행이 가능