티스토리 뷰

입출력 I/O 제어 (왜 I/O 장치는 시스템 버스에 직접 접속되지 않을까?)

컴퓨터 시스템에서는 다양한 입출력(I/O) 장치들이 사용되며, 이들 장치는 시스템 버스에 직접 접속되지 않는 경우가 많습니다. 이에는 다양한 이유들이 있습니다. 이 글에서는 I/O 장치가 시스템 버스에 직접 접속되지 못하는 이유와 그 대안인 I/O 제어기(I/O controller)에 대해 알아보겠습니다.



제어 회로의 다양성


각각의 I/O 장치는 제어 방법이 서로 다르며, 이러한 제어 회로를 CPU 내부에 모두 포함시키는 것은 현실적으로 불가능합니다. CPU는 다양한 장치들을 동시에 제어하기 위해 일반적인 제어 회로를 갖추고 있으며, 모든 I/O 장치의 제어를 수행하기에는 한계가 있습니다.

데이터 전송 속도


I/O 장치들의 데이터 전송 속도는 CPU의 데이터 처리 속도에 비해 훨씬 느립니다. 따라서 고속의 시스템 버스와 I/O 장치들 사이에 직접 데이터를 교환하는 것은 불가능합니다. 데이터 전송 속도의 차이로 인해 시스템의 성능 저하가 발생할 수 있습니다.

데이터 형식의 차이


다양한 I/O 장치들과 CPU는 사용하는 데이터 형식의 길이가 서로 다를 수 있습니다. 이는 데이터의 호환성을 유지하기 어렵게 만들고, 직접 접속하는 것을 어렵게 합니다.

따라서 위와 같은 이유로 I/O 장치는 시스템 버스에 직접 접속되지 않고, I/O 제어기를 통해 제어되고 데이터가 교환됩니다. I/O 제어기는 다음과 같은 주요 기능을 수행합니다.

I/O 장치의 제어와 타이밍 조정
CPU와의 통신 담당
I/O 장치와의 통신 담당
데이터 버퍼링 기능 수행
오류 검출


I/O 장치가 시스템 버스에 직접 접속되지 못하는 이유는 제어 회로의 다양성, 데이터 전송 속도, 데이터 형식의 차이 등이 있습니다. 이를 대체하기 위해 I/O 제어기가 제어와 데이터 교환을 담당하여 I/O 장치와 CPU 간의 효율적인 통신을 도와줍니다. I/O 제어기는 복잡한 제어 회로를 포함하고 있으며, CPU의 명령을 받아 I/O 장치를 제어하고 데이터를 주고받습니다.

I/O 제어 방식에는 기억장치-사상 I/O(memory-mapped I/O)와 분리형 I/O(isolated I/O) 두 가지가 있습니다. 기억장치-사상 I/O 방식은 기억장치 주소 영역의 일부분을 I/O 제어기의 레지스터 주소로 할당하는 방식입니다. 이를 통해 기억장치 관련 명령어를 I/O 장치 제어에도 사용할 수 있습니다. 분리형 I/O 방식은 별도의 I/O 명령어를 사용하여 I/O 장치를 제어합니다. 기억장치와는 별도의 주소 공간을 할당하고, I/O 읽기/쓰기 신호를 사용합니다.

각 방식은 각자의 장단점을 가지고 있습니다. 기억장치-사상 I/O 방식은 프로그래밍이 용이하지만 기억장치 주소 공간이 감소하는 단점이 있습니다. 반면, 분리형 I/O 방식은 별도의 I/O 명령어를 사용하여 프로그래밍이 불편하지만, 기억장치 주소 공간이 줄어들지 않는 장점이 있습니다.




댓글