728x90
실제 컴퓨터는 CPU와 메모리만 존재하지 않고 스피커, 모니커, 키보드, 마우스 등과 같은 입출력장치와 외장 하드 디스크나 USB 등 보조기억장치가 주렁주렁 달려있음
장치 컨트롤러 Device Controller
- 입출력장치는 CPU와 메모리보다 다루기가 더 까다로움
- 1. 입출력장치의 종류가 많기 때문
- 키보드, 모니터, USB, CD-ROM, SSD, 마우스, 프린터, 스피커, 마이크 등 장치가 너무 다양하기에 장치마다 속도, 데이터 전송 형식 등이 다양함
- 따라서 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기가 어려움
- 2. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮음
- 전송률 transfer rate: 데이터를 얼마나 빨리 교환할 수 있는지는 나타내는 지표
- CPU와 메모리처럼 전송률이 높은 장치는 1초에도 수많은 데이터를 주고 받을 수 있지만 키보드나 마우스와 같이 상대적으로 전송률이 낮은 장치는 같은 시간 동안 데이터를 조금씩만 주고 받을 수 있음
- -> 전송률이 비슷하지 않기 때문에 어려움이 있음
- 1. 입출력장치의 종류가 많기 때문
- 위와 같은 이유로 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러 라는 하드웨어를 통해 연결됨
- 입출기 제어기 I/O Controller, 입출력 모듈 I/O Module 등으로 다양하게 불림
모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받고, 장치 컨트롤러는 하나 이상의 입출력장치와 연결되어 있음
장치 컨트롤러는 대표적으로 다음과 같은 역할을 통해 앞의 문제를 해결함
- CPU와 입출력장치 간의 통신 중계
- 오류 검출
- 데이터 버퍼링
장치 컨트롤러가 일종의 번역가 역할을 함으로써 입출력장치의 종류가 많이 정보 규격화가 어려웠던 문제를 해결함
위의 과정에서 오류 검출도 같이함
데이터 버퍼링: 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼 Buffer라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
-> 버퍼에 데이터를 조금씩 모았다가 함꺼번에 내보내거나, 데이터를 한 번에 많이 받아 조금씩 내보내는 방법(전송률 차이 완화)
장치 컨트롤러 간략화 내부
(상태 레지스터와 제어 레지스터는 하나의 레지스터로 사용되지만, 분리하여 설명하겠음)
- 데이터 레지스터: CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터이다. 버퍼 역할을 하고 최근 주고 받는 데이터가 많은 입출력장치의 경우 레지스터 대신 RAM을 사용하기도 함
- 상태 레지스터: 입출력장치가 입출력 작업을 할 준비가 되었는지, 입출력 작업이 완료되었는지, 입출력장치에 오류가 없는지 등의 상태 정보가 저장됨
- 제어 레지스터: 입출력 장치가 수행할 내용에 대한 제어 정보와 명령을 저장함
위의 레지스터에 담긴 값들은 버스를 타고 CPU나 다른 입출력장치에 전달되기도 하고, 장치 컨트롤러에 연결된 입출력 장치로 전달됨
장치 드라이버 Device Driver
새로운 장치를 컴퓨터에 연결하려면 장치 드라이버를 설치해야함
- 장치 드라이버: 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정부를 주고받을 수 있게 하는 프로그램
- 프로그램이기 때문에 실행 과정에서 메모리에 저장됨
- 장치 드라이버가 하드웨어적 통로라면 장치 드라이버는 소프트웨어적 통로이다.
728x90
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 보조기억장치 RAID의 정의와 종류 (0) | 2022.11.26 |
---|---|
[컴퓨터구조] 보조기억장치 (0) | 2022.11.24 |
[컴퓨터구조] 캐시 메모리 (0) | 2022.11.23 |
[컴퓨터구조] 메모리의 주소 공간 (0) | 2022.11.23 |
[컴퓨터구조] 메모리 RAM의 특징과 종류 (0) | 2022.11.23 |