input/output devices
입출력 장치
Apr 03, 2024
장치 컨트롤러
- 속도 조절: 장치와 컴퓨터 사이의 속도 차이를 조절하고 데이터를 적절하게 버퍼링하여 데이터의 정확한 전송을 보장
- 오류 감지 및 복구: 전송 중에 발생할 수 있는 오류를 감지하고 이를 복구
- 프로토콜 호환성: 다른 장치와의 통신에서 발생할 수 있는 호환성 문제를 해결하고 전송률을 유지
데이터 레지스터(data register)
- CPU와 입출력장치 사이에 주고 받을 데이터가 담김
상태 레지스터(status register)
- 입출력장치의 준비, 완료, 오류 등의 상태를 저장
제어 레지스터(control register)
- 입출력장치가 수행할 내용에 대한 제어 정보와 명령
장치 드라이버
- 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게하는 프로그램
- 새로운 장치를 컴퓨터에 연결하려면 장치 드라이버를 설치해야하고 프로그램이기 때문에 메모리에 저장된다
- 장치 컨트롤러 -> 하드웨어적인 통로 / 장치드라이버 -> 소프트웨어적인 통로
입출력 방법
프로그램 입출력(programmed I/O)
- 프로그램 속 명령어로 입출력 장치 제어
메모리 맵 입출력(memory-mapped I/O) | 고립형 입출력(isolated I/O) |
---|---|
메모리와 입출력 장치는 같은 주소 공간 사용 | 메모리와 입출력장치는 분리된 주소 공간 사용 |
메모리 주소 공간이 축소됨 | 메모리 주소 공간이 축소되지 않음 |
메모리와 입출력장치에 같은 명령어 사용 가능 | 입출력 전용 명령어 사용 |
인터럽트 기반 입출력
-
입출력 장치에 의한 인터럽트는 장치 컨트롤러에 의해 발생
-
장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴 실행 이전글 참고: CPU 작동원리 | 비동기 인터럽트
폴링(Polling): CPU가 주기적으로 장치 컨트롤러의 상태 레지스터를 확인하여 입출력장치의 상태는 어떤지, 처리할 데이터가 있는지 주기적으로 확인하는 방식
프로그래머블 인터럽트 컨트롤러(PIC: Programmable Interupt Controller)
- PIC에 연결된 장치 컨트롤러들이 동시에 하드웨어 인터럽트 요청을 보내면 PIC는 이들의 우선순위를 판단하여 CPU에 가장 먼저 처리할 인터럽트를 알려줌
DMA(Direct Memory Access) 입출력
- 프로그램 기반 입출력, 인터럽트 기반 입출력 방식은 모두 입출력장치와 메모리 사이에 전송되는 모든 데이터가 CPU를 거침
- DMA 방식은 직접 메모리에 접근하여 CPU의 부담을 줄임
- DMA 컨트롤러라는 하드웨어 필요
- 사이클 스틸링(cycle stealing): DMA 컨트롤러는 시스템 버스를 사용하는데, 시스템 버스는 동시에 사용이 불가능하기 때문에 CPU와 DMA 컨트롤러는 시스템 버스를 교차로 사용함
입출력 버스
- DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스라는 별도의 버스에 연결
- DMA 컨트롤러와 장치 컨트롤러가 서로 데이터를 전송할 때 시스템 버스가 아닌 입출력버스를 사용하게 함으로써 시스템 버스의 사용빈도를 줄임
- PCI(Peripheral Component Interconnect) 버스, PCI Express(PCIe) 버스 등
Go toor?