7. I/O (Input/Output)
I/O Module
실제 I/O Device들은 I/O Module에 연결되어 있는 구조이다. I/O Module이 I/O device와 다른 컴퓨터 내부 장치들과의 상호작용에 기여한다.
I/O Module을 사용하는 이유
- I/O 장치들의 속도가 다양함
- 데이터의 형태가 모두 다름.
I/O Device의 발전
|
Programmed I/O |
Interrupt-driven I/O |
DMA (I/O Processor) |
Check status |
CPU |
I/O |
I/O |
Transfer data |
CPU |
CPU |
I/O |
▶ Programmed I/O 와 Interrupt-driven I/O는 전송 속도가 제한되고 CPU가 I/O장치를 지속적으로 관리해야 되기 때문에 좋지 않다.
* Direct Cache Access : I/O가 Cache에 직접 접근한다.
* DMA Breakpoint: DMA 과정에서 버스를 이용해야 되는데 Instruction cycle 또한 버스를 이용한다. 따라서 각 명령어 사이에 DMA Breakpoint를 두어 DMA를 한다.
I/O Mapping
① Memory mapped I/O : I/O가 Main memory의 주소의 일정 부분을 사용. I/O가 memory의 read/write와 사실상 같고 특별한 I/O 명령어가 필요하지 않다.
② Isolated I/O : 주소 공간이 분리되어 있다. 따라서 I/O를 위한 별도의 명령어가 필요하다. Control bus가 해당 주소가 I/O의 주소인지 memory의 주소인지 구별할 수 있어야 함.
Vector Interrupt(Daisy chain)
I/O Device에서 CPU로 interrupt를 요청하는데 각 device 별로 처리 순서를 정하기 위해 각 장치를 식별하는 방법.
인터럽트를 발생시키는 장치들을 우선순위에 맞게 직렬로 둔다. Vector table에서 Vector value 값에 해당하는 ISR(Interrupt Service Routine)의 메모리 주소를 획득해 해당 메모리 주소로 접근하여 ISR 작업을 수행하게 된다.