입출력 인터페이스
IT 위키
더 많은 작업
- Input/Output Interface; I/O Interface
- CPU·주기억장치와 입출력 장치 사이에 놓여, 둘의 속도·데이터 형식·신호 방식 차이를 맞춰 데이터를 주고받게 하는 장치와 규약
입출력 장치는 CPU·주기억장치와 성질이 달라서 시스템 버스에 바로 붙일 수 없다. 그 차이를 메워 주는 것이 입출력 인터페이스다.
| 차이 | 내용 |
|---|---|
| 동작 속도 | 입출력 장치는 CPU보다 훨씬 느리다. 속도 차이를 버퍼로 흡수해야 CPU가 기다리며 낭비하지 않는다 |
| 데이터 형식 | 장치마다 쓰는 데이터 단위와 코드가 CPU의 워드 형식과 다르다. 직렬 장치는 비트 단위로, CPU는 워드 단위로 다룬다 |
| 신호 방식 | 전자기계식·광학식 장치는 신호의 종류와 전압 수준이 CPU·메모리의 전자 신호와 다르다 |
| 동작 방식 | 장치의 동작 모드와 타이밍이 제각각이라, 한 장치의 동작이 다른 장치를 방해하지 않도록 제어가 필요하다 |
| 구성 | 역할 |
|---|---|
| 데이터 레지스터 | 주고받을 데이터를 임시로 담는다 |
| 상태 레지스터 | 준비 완료·사용 중·오류 같은 장치 상태를 담는다 |
| 제어 레지스터 | CPU가 내린 명령과 동작 모드를 담는다 |
| 주소 해독기 | 입출력 주소를 해독해 해당 레지스터를 고른다 |
| 제어 회로 | 버스 신호와 장치 신호의 타이밍을 맞춘다 |
소프트웨어 쪽에서는 운영체제의 장치 드라이버가 이 레지스터들을 다뤄 장치를 제어한다.
- 고립형 입출력(Isolated I/O) — 입출력 장치가 메모리와 별도의 주소 공간을 쓰고, 전용 입출력 명령으로 접근한다
- 메모리 사상 입출력(Memory-mapped I/O) — 메모리 주소 공간 일부를 입출력 장치에 할당해, 메모리 접근 명령으로 장치를 다룬다
- 직렬 / 병렬 — 한 번에 1비트씩 보내는지(직렬 통신), 여러 비트를 동시에 보내는지
- 동기 / 비동기 — 공통 클록에 맞춰 보내는지, 시작·정지 신호나 핸드셰이킹으로 맞추는지