본문 바로가기
컴퓨터공학

18. 다양한 입출력방법

by 이면지91 2024. 10. 17.

 

세 가지 입출력 방식 : 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력

 

 

1. 프로그램 입출력

프로그램 속 명령어로 입출력장치를 제어하는 방법 입출력 명령어로써 장치 컨트롤러와 상호작용

 

메모리에 저장된 정보를 하드 디스크에 백업

( = 하드 디스크에 새로운 정보 쓰기 )

  1. CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령 내보내기
  2. 하드 디스크 컨트롤러는 하드 디스크 상태 확인 > 상태 레지스터에 준비 완료 표시
  3. CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부를 확인
  4. 하드 디스크가 준비되었다면 백업할 메모리의 정보를 데이터 레지스터에 쓰기

프로그램 입출력 방식은 CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다.

  • 프린트 컨트롤러의 상태 레지스터를 읽어라
  • 프린터 컨트롤러의 데이터 레지스터에 100을 써라
  • 키보드 컨트롤러의 상태 레지스터를 읽어라
  • 하드 디스크 컨트롤러의 데이터 레지스터에 'a'를 써라

- 메모리 맵 입출력

메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법

 

- 고립형 입출력

메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리하는 방법

 

메모리 맵 입출력 고립형 입출력
메모리와 입출력장치는 같은 주소 공간 사용 메모리와 입출력장치는 분리된 주소 공간 사용
메모리 주소 공간이 축소됨 메모리 주고 송간이 축소되지 않음
메모리와 입출력장치에 같은 명령어 사용 가능 입출력 전용 명령어 사용

 

2. 인터럽트 기반 입출력

 

동시다발적인 인터럽트 : 우선순위를 반영한 인터럽트

 

  1. 여러 장치 컨트롤러에 연결
  2. 장치 컨트롤러의 하드웨어 인터럽트의 우선순위 판단
  3. CPU에 지금 처리해야 하는 인터럽트가 무엇인지 판단

 

3. DMA 입출력

 

Direct Memory Access : CPU를 거치지 않고 입출력장치가 메모리에 직접적으로 접근하는 기능

 

  1. CPU는 DMA 컨트롤러에 입출력 작업을 명령
  2. DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행
  3. 입출력 작업이 끝나면 DMA 컨트롤러는 인터럽트를 통해 CPU에 작업이 끝났음을 알림
    CPU는 입출력 작업의 시작과 끝만 관여

그런데, 시스템 버스는 공용 자원이기에 동시 사용이 불가능 그래서 DMA 컨트롤 버스는 CPU가 시스템 버스를 이용하지 않을 때 CPU의 허락을 구하고 시스템 버스를 이용

 

 

입출력 버스

장치 컨트롤러가 시스템 버스에 연결되어 있으면 CPU가 시스템 버스를 사용하는데 방해가 되기 때문에 입출력 버스를 DMA 컨트롤러에 연결하여 사용한다.

대표적으로 PCI 버스, PCI express가 있다.