본문 바로가기
CONCEPT/Computer Architecture

[컴퓨터구조] 다양한 입출력 방법

by 1005 2025. 2. 21.

세 가지 입출력 방식

1) 프로그램 입출력
: 프로그램 속 명령어로 입출력장치를 제어하는 방법 = 입출력 명령어로써 장치 컨트롤러와 상호작용함.
 
메모리에 저장된 정보를 하드 디스크에 백업 = 하드디스크에 새로운 정보 쓰기
즉, CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다.

 

 
Q) CPU가 많은 장치 컨트롤러들 중 원하는 장치 컨트롤러를 하나 찾고 또 그 안에 레지스터들 중에서 주소 정보를 가진 레지스터를 어떻게 알 수 있는걸까?

 
인식하는 방법(프로그램 입출력 방식): 메모리 맵 입출력 / 고립형 입출력
- 메모리 맵 입출력

- 고립형 입출력


2) 인터럽트 기반 입출력
 

  • 인터럽트: 이벤트가 발생할 때만 CPU가 작업을 처리하도록 하는 방식 (효율적, 실시간 응답성)
  • 폴링: CPU가 주기적으로 장치나 조건을 확인하여 이벤트 발생 여부를 판단하는 방식 (단순, 비효율적일 수 있음)

 

현실적으로 모든 인터럽트를 순차적으로 처리할 수 없다. 인터럽트 중에서도 더 빨리 처리해야하는 인터럽트가 있다.
NMI는 발생하면 CPU에 다이렉트로 처리해달라는 요청을 함. 즉, 우선순위 판단 대상에 속하지 않음.
PIC는 여러개를 사용하는 경우가 많음. 윈도우의 특정메뉴에 들어가면 우선순위에 의한 인터럽트 처리를 직접적으로 확인가능함.

3) DMA 입출력
 
Q) 프로그램 입출력, 인터럽트 기반 입출력의 공통점?
입출력장치와 메모리 간의 데이터 이동은 CPU가 주도하고, 이동하는 데이터도 반드시 CPU를 거친다.
즉, CPU는 넘 바쁨...

이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근함. 이때 CPU는 다른 작업을 할 수 있음.
CPU는 입출력 작업의 시작과 끝만 관여함. 따라서 훨씬 효율적으로 CPU 자원을 활용함.
사이클 스틸링은 DMA 에서 사용되는 기법으로, CPU가 작업을 수행하는 동안 DMA가 간헐적으로 시스템 버스를 빌려 데이터를 전송하는 방식입니다. 이 기법은 CPU가 메모리와 장치 간의 데이터 전송을 직접 처리하지 않으므로 CPU의 부하를 줄여주고 , 효율적인 데이터 전송을 가능하게 합니다. 그러나 한 번에 전송하는 데이터 양이 적어 대량의 데이터 전송에는 적합하지 않습니다.

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

댓글