본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Input/Output Interface; I/O Interface
CPU·주기억장치와 입출력 장치 사이에 놓여, 둘의 속도·데이터 형식·신호 방식 차이를 맞춰 데이터를 주고받게 하는 장치와 규약

입출력 장치는 CPU·주기억장치와 성질이 달라서 시스템 버스에 바로 붙일 수 없다. 그 차이를 메워 주는 것이 입출력 인터페이스다.

차이 내용
동작 속도 입출력 장치는 CPU보다 훨씬 느리다. 속도 차이를 버퍼로 흡수해야 CPU가 기다리며 낭비하지 않는다
데이터 형식 장치마다 쓰는 데이터 단위와 코드가 CPU의 워드 형식과 다르다. 직렬 장치는 비트 단위로, CPU는 워드 단위로 다룬다
신호 방식 전자기계식·광학식 장치는 신호의 종류와 전압 수준이 CPU·메모리의 전자 신호와 다르다
동작 방식 장치의 동작 모드와 타이밍이 제각각이라, 한 장치의 동작이 다른 장치를 방해하지 않도록 제어가 필요하다
  • 주소 해독 — 버스에 실린 주소가 자기 장치를 가리키는지 판단한다
  • 데이터 버퍼링 — 속도 차이를 흡수하도록 데이터를 잠시 담아 둔다(버퍼링)
  • 형식 변환 — 직렬↔병렬, 코드 변환, 아날로그↔디지털 변환
  • 타이밍 제어 — 핸드셰이킹이나 스트로브 신호로 송수신 시점을 맞춘다
  • 상태 보고와 제어 — 장치가 준비됐는지, 오류가 났는지 CPU에 알리고 CPU의 명령을 장치에 전한다
  • 오류 검출 — 전송 중 생긴 오류를 패리티 등으로 확인한다
  • 인터럽트 발생 — 작업이 끝나거나 데이터가 도착하면 CPU에 인터럽트를 건다
구성 역할
데이터 레지스터 주고받을 데이터를 임시로 담는다
상태 레지스터 준비 완료·사용 중·오류 같은 장치 상태를 담는다
제어 레지스터 CPU가 내린 명령과 동작 모드를 담는다
주소 해독기 입출력 주소를 해독해 해당 레지스터를 고른다
제어 회로 버스 신호와 장치 신호의 타이밍을 맞춘다

소프트웨어 쪽에서는 운영체제의 장치 드라이버가 이 레지스터들을 다뤄 장치를 제어한다.

입출력 주소 지정

편집 원본 편집
  • 고립형 입출력(Isolated I/O) — 입출력 장치가 메모리와 별도의 주소 공간을 쓰고, 전용 입출력 명령으로 접근한다
  • 메모리 사상 입출력(Memory-mapped I/O) — 메모리 주소 공간 일부를 입출력 장치에 할당해, 메모리 접근 명령으로 장치를 다룬다

입출력 제어 방식

편집 원본 편집
방식 설명
프로그램 제어 입출력 CPU가 장치 상태를 계속 확인하며(폴링) 데이터를 옮긴다. CPU가 기다리는 시간이 길다
인터럽트 입출력 장치가 준비되면 인터럽트로 알리고, 그때 CPU가 처리한다
DMA DMA 제어기가 CPU를 거치지 않고 장치와 주기억장치 사이에서 블록 단위로 직접 데이터를 옮긴다
채널 입출력 전용 처리기가 입출력 명령을 스스로 실행한다. CPU와 동시에 동작한다
  • 직렬 / 병렬 — 한 번에 1비트씩 보내는지(직렬 통신), 여러 비트를 동시에 보내는지
  • 동기 / 비동기 — 공통 클록에 맞춰 보내는지, 시작·정지 신호나 핸드셰이킹으로 맞추는지

대표 인터페이스

편집 원본 편집