
프로그램 입출력
- 프로그램 속 명령어로 입출력장치를 제어하는 방법
- 입출력장치와 연결된 장치 컨트롤러를 프로그램으로 제어
ex) 메모리에 저장된 정보를 하드 디스크에 백업 (백업: 하드 디스크에 새로운 정보 쓰기)




CPU가 장치 컨트롤러의 레지스터들(입출력장치의 주소)을 어떻게 알까? 명령어들은 어떻게 표현되고 저장될까?
- 프로그램 입출력 방식에는 메모리 맵 입출력, 고립형 입출력 2가지가 있다.

어떤 컴퓨터에 1024개의 주소가 있다면 그 주소들은 전부 메모리를 위해 사용되지 않는다. 사진과 같이 메모리를 위한 주소 공간, 입출력장치를 위한 주소 공간으로 나누어 사용하는 방법을 ‘메모리 맵 입출력’이라고 한다.




인터럽트 기반 입출력




- 플래그 레지스터 속 인터럽트비트를 비활성화한다면 다른 인터럽트를 받아들이지 않겠다는 것과 같다. 이러한 경우 위의 사진대로 인터럽트가 발생한 순서대로 처리할 수 있다.
- 하지만 현실적으로 모든 인터럽트를 순차적으로 처리할 수 없고 어떤 경우에는 인터럽트 중에서도 더 빨리 처리해야 하는, 우선순위가 높은 인터럽트가 있다.




DMA 입출력


예를 들어 하드디스크의 데이터를 메모리에 저장한다면, 하드디스크의 데이터 레지스터에 저장된 값을 입출력장치를 읽어들임으로써 CPU의 레지스터로 읽어들인다. CPU 레지스터의 메모리 쓰기 명령으로 메모리에 데이터를 쓰게 된다. 입력된 데이터가 반드시 CPU를 거친다.

모든 데이터가 CPU를 거쳐야 한다면? 하드 디스크 백업 같이 대용량 데이터가 이동한다면? CPU가 모든 걸 하기 버겁고 부담이 커진다. 이를 위해 DMA 기능이 등장했다.

DMA 컨트롤러를 이용해 DMA를 할 수 있다.




CPU는 입출력 작업의 시작과 끝만 관여하면 된다.


- 장치 컨트롤러가 시스템 버스에 직접 연결되어도 괜찮을까?

DMA 컨트롤러가 시스템 버스를 두 번씩 이용한다. 메모리에 있는 정보를 하드 디스크에 백업한다면, 메모리를 읽기 위해 1번, 쓰기 위해서 1번 이렇게 2번 시스템 버스를 이용하게 된다. 장시간 시스템 버스를 이용하는 것은 좋지 않기 때문에 입출력 버스를 이용한다.


'컴퓨터 공학 기초 > 컴퓨터 구조' 카테고리의 다른 글
| 장치 컨트롤러와 장치 드라이버 (0) | 2025.08.27 |
|---|---|
| RAID의 정의와 종류 (0) | 2025.08.27 |
| 다양한 보조기억장치 (3) | 2025.08.27 |
| 캐시 메모리 (0) | 2025.08.26 |
| 메모리의 주소 공간-물리 주소와 논리 주소 (0) | 2025.08.26 |