CPU와 I/O 장치의 접속
컴퓨터를 이루는 다양한 부품 중, CPU와 I/O(입출력) 장치의 연결 구조는 시스템의 효율성과 확장성을 좌우하는 핵심 요소입니다.
키보드, 마우스, 프린터, 하드디스크, SSD 등 모든 주변장치는 CPU와 직접 연결되지 않고,
각 장치별 제어기(컨트롤러)를 통해 접속됩니다.
이번에는 CPU와 I/O 장치, 그리고 보조저장장치가 어떻게 연결되어 데이터를 주고받는지, 실제 예시를 곁들여 쉽게 설명해봅니다.

1. 키보드 입력: 데이터의 첫걸음
키보드에서 키를 누르면 그 신호는 바로 CPU로 가지 않습니다.
먼저, 키보드 내부의 제어기(컨트롤러)가 눌린 키에 해당하는 8비트 데이터(예: 'A' 키는 01000001)를 데이터 레지스터에 저장합니다.
동시에, 상태 레지스터의 특정 비트(여기서는 In_RDY 비트)가 1로 세트됩니다.
이 비트가 1이 된다는 것은 "입력 데이터가 준비되었다"는 신호입니다.
CPU의 역할은?
CPU는 키보드로부터 데이터를 읽고 싶을 때, 먼저 상태 레지스터의 In_RDY 비트를 읽어봅니다.
- 만약 In_RDY가 1이면, CPU는 즉시 데이터 레지스터의 값을 읽어와 처리합니다.
- 만약 In_RDY가 0이면, CPU는 계속해서 상태 레지스터를 읽고 검사하는 과정을 반복합니다(이 과정을 폴링이라고 부릅니다).
예시
- 사용자가 'A' 키를 누름 → 키보드 제어기 데이터 레지스터에 01000001 저장, In_RDY=1
- CPU가 In_RDY=1을 확인 → 데이터 레지스터에서 01000001을 읽어옴
- CPU가 데이터를 읽으면 In_RDY는 다시 0으로 리셋됨
2. 프린터 출력: 준비된 만큼만 보낸다
프린터의 경우도 비슷합니다.
CPU는 프린터로 데이터를 보내기 전에, 먼저 프린터 제어기의 상태 레지스터에서 Out_RDY 비트를 확인합니다.
이 비트가 1이면 프린터가 새로운 데이터를 받을 준비가 된 상태입니다.
- Out_RDY가 1이면, CPU는 프린터 제어기의 데이터 레지스터에 출력할 데이터를 씁니다.
- 그 후, 프린터 제어기가 프린터 하드웨어를 작동시켜 인쇄를 시작합니다.
- 만약 Out_RDY가 0이라면, CPU는 다시 준비될 때까지 상태 레지스터를 반복적으로 검사합니다.
예시
- 프린터가 "Hello"를 출력할 때, 한 글자씩 Out_RDY 비트가 1인지 확인하고, 1일 때만 데이터를 보냅니다.
- 만약 프린터가 인쇄 중이거나 종이가 걸렸다면 Out_RDY=0, CPU는 대기

3. 데이터 레지스터와 버퍼: 임시 저장소의 힘
데이터 레지스터는 CPU와 I/O 장치 사이에서 데이터를 잠깐 저장하는 임시 저장소(버퍼) 역할을 합니다.
- 키보드나 프린터처럼 데이터가 적은 장치는 1바이트~몇 바이트의 버퍼만 있어도 충분합니다.
- 하지만 프린터에서 한 번에 수십 MB의 데이터를 인쇄할 때, 버퍼(프린터 메모리)를 크게 하면 CPU가 자주 개입하지 않아도 되어 전체 시스템 효율이 높아집니다.
4. 보조저장장치(하드디스크, SSD): 블록 단위 전송
하드디스크나 SSD 같은 보조저장장치는 키보드와 달리 블록 단위(예: 512, 1024, 4096바이트)로 데이터를 전송합니다.
이 때문에 제어기 내부에는 한 블록 이상을 저장할 수 있는 데이터 버퍼가 필요합니다.
- 어떤 디스크 제어기는 한 트랙 전체(수십 KB~수백 KB)를 저장할 수 있는 트랙 버퍼나, 그보다 더 큰 디스크 버퍼를 갖추고 있습니다.
- 이렇게 하면 디스크에서 데이터를 읽어올 때 한 번에 많은 데이터를 버퍼에 담아두고, CPU는 필요한 만큼만 가져다 쓸 수 있습니다.
5. CPU와 I/O 제어기 간의 통신: 주소로 구분한다
CPU는 직접 I/O 장치를 제어하지 않고, **각 장치의 제어기(컨트롤러)**에 명령을 보냅니다.
이를 위해 제어기 내부의 상태 레지스터와 데이터 레지스터를 메모리처럼 한 단어(4바이트 등) 크기의 저장소로 간주하고, 각각에 고유한 주소를 부여합니다.
- 예를 들어, 키보드 제어기의 데이터 레지스터는 0xFFD20000, 상태 레지스터는 0xFFD20004와 같이 주소가 할당될 수 있습니다.
- CPU는 이 주소로 데이터를 읽거나 쓸 수 있습니다. (이 방식을 메모리 매핑 I/O라고 합니다)
- CPU의 주소버스와 제어신호가 I/O 제어기로 연결되는 이유가 바로 여기에 있습니다.
6. 정리
- CPU와 I/O 장치는 직접 연결되지 않고, 각 장치별 제어기를 통해 접속된다.
- 상태 레지스터와 데이터 레지스터를 통해 데이터 준비 여부와 실제 데이터를 주고받는다.
- 버퍼(데이터 레지스터)는 임시 저장소 역할을 하며, 크기가 클수록 CPU 개입이 줄어든다.
- 보조저장장치는 블록 단위로 데이터를 전송하며, 큰 버퍼를 사용한다.
- 각 제어기 레지스터에 주소를 할당하여 CPU가 메모리처럼 쉽게 접근할 수 있다.
이처럼 CPU와 I/O 장치, 그리고 보조저장장치 사이의 접속 구조는 컴퓨터가 다양한 장치와 효율적으로 소통할 수 있게 해주는 핵심 원리입니다.
요약
- I/O 장치와 보조저장장치 모두 CPU와 직접 연결되지 않고, 각 장치별 컨트롤러(제어기)를 통해 접속된다.
- 키보드 입력 과정: 키가 눌리면 8비트 데이터가 키보드 제어기의 데이터 레지스터에 저장되고, 상태 레지스터의 In_RDY 비트가 세트된다. CPU는 In_RDY 비트를 반복적으로 검사(폴링)하여 데이터가 준비되면 읽어들인다.
- 프린터 출력 과정: CPU가 프린터 제어기의 Out_RDY 비트를 검사해 출력 준비가 되었는지 확인하고, 준비되면 데이터를 데이터 레지스터에 써서 프린터로 전송한다. Out_RDY가 세트되지 않았으면 반복 검사한다.
- 데이터 레지스터는 CPU와 I/O 장치 사이의 임시 저장소(버퍼) 역할을 한다. 버퍼 크기를 늘리면 CPU 개입을 줄일 수 있다.
- 보조저장장치는 블록 단위로 데이터가 전송되며, 제어기 내에 블록 또는 트랙 단위의 데이터 버퍼가 존재한다.
- CPU는 각 I/O 제어기의 레지스터에 주소를 할당해, 메모리처럼 읽고 쓸 수 있다. 주소버스와 제어신호가 I/O 제어기와 연결된다.
단어 정리
- 데이터 레지스터 : CPU와 I/O 장치간의 임시 데이터 기억장치
- 상태 레지스터 : I/O 장치의 상태를 나타내는 비트들을 저장하는 레지스터
- 데이터 버퍼 : CPU와 I/O 장치간의 데이터 임시 기억장치인 데이터 레지스터의 다른 명칭
'CS > 컴퓨터구조' 카테고리의 다른 글
| [컴퓨터구조] CPU와 기억장치의 접속 (0) | 2025.04.24 |
|---|---|
| [컴퓨터구조] 정보의 표현과 저장 (0) | 2025.04.24 |
| [컴퓨터구조] 컴퓨터 시스템 개요 및 구조 (0) | 2025.04.22 |