컴퓨터 구조

[02] 입출력 장치

BGK97 2024. 3. 20. 15:35

1. 장치컨트롤러와 장치 드라이버

장치컨트롤러

입출력장치가 다루기 까다로운이유

  • 입출력장치에 종류가 너무 많음
    • 수가 많은 만큼, 다양한 속도, 데이터 전송 형식이 있음
    • 이러한 방식을 규격화하는게 어려움
  • CPU와 메모리 데이터의 전송률은 높으나, 입출력 장치의 전송률은 낮음
    • 전송률
      • 데이터를 얼마나 빠르게 교환할 수 있는지 나타내는 지표

장치 컨트롤러

  • 입출력 제어기, 입출력 모듈 등 다양하게 불림
  • 장치 컨트롤러의 역할
    • CPU와 입출력장치간의 통신중계
    • 오류 검출
    • 데이터 버퍼링
  • 일종의 번역가 역할

데이터 버퍼링

  • 전송률이 높은 장치와 낮은 장치간 데이터 교환을 버퍼라는 임시 장소에 저장 후 전송률을 비슷하게 맞추는 방법
  • 전송률 차이를 버퍼링으로 완화

장치 컨트롤러의 내부

  • 데이터 레지스터
  • 상태 레지스터
  • 제어 레지스터

데이터 레지스터

  • CPU와 입출력 장치 사이에 주고받을 데이터가 담기는 곳
  • 버퍼 역할
  • 최근에는 레지스터 대신 RAM을 사용하기도 함

상태 레지스터

  • 입출력장치의 상태를 저장하는 레지스터
  • 작업 완료, 작업 준비가 됐는지... 등등

제어 레지스터

  • 입출력장치가 수행할 내용에 대한 제어 정보, 명령을 저장

장치 드라이브

  • 새로운 장치를 컴퓨터에 연결할 때 사용
  • 장치 컨트롤러의 동작을 감시하고, 제어
  • 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게끔 함

  • 장치 컨트롤러가 입출력 연결을 위한 하드웨어적 통로라면
  • 장치 드라이버는 소프트웨어적 통로
  • 장치 드라이버를 인식하고 실행하는 주체는 운영체제임 (드라이브 설치 필요한 것도 있음)

2. 다양한 입출력 방법

장치컨트롤러가 CPU와 정보를 주고받는 방법

  1. 프로그램 입출력
  2. 인터럽트 기반 입출력
  3. DMA 입출력

1. 프로그램 입출력

  • 프로그램 속 명령어로 입출력장치 제어메모리에 저장된 정보를 하드디스크에 백업하는 과정
  • CPU가 하드디스크 컨트롤러의 제어 레지스터에 쓰기 명령 전송

  • 하드디스크 상태 확인 후, 준비된 상태라면 상태 레지스터에 준비 완료 표시

  • CPU가 상태레지스터를 읽었다면, 백업할 메모리 정보를 데이터 레지스터에 작성

  • CPU가 장치 컨트롤러의 레지스터를 인식하는 방법에는 크게 두가지가 있음
    • 메모리 맵 입출력
    • 고립형 입출력메모리 맵 입출력
  • 메모리에 접근하기위한 주소공간과, 입출력장치 접근을 위한 주소공간을 하나의 주소공간으로 간주
  • CPU가 명령어를 실행하면, 저장된 정보나 레지스터의 상태 둘중 하나가 들어옴

고립형 입출력

  • 메모리에 접근하기위한 주소공간과 입출력장치 접근을 위한 주소공간을 분리
메모리 맵 입출력 고립형 입출력
메모리와 입출력장치가 같은 주소공간 메모리와 입출력장치가 다른 주소공간
메모리 주소 공간이 축소 메모리 주소공간 유지
메모리와 입출력장치에 같은 명령어 사용 입출력장치 전용 명령어 사용

2. 인터럽트 기반 입출력

  • 입출력장치가 아닌, 장치 컨트롤러에 의해 발생
  • 장치 컨트롤러가 입출력 작업이 끝나면 CPU에게 인터럽트 요청 신호를 보냄
  • CPU는 인터럽트 서비스 루틴 실행
  • 폴링
    • 입출력장치 상태나 처리할 데이터 여부를 주기적으로 확인하는 것
    • CPU의 부담이 커짐
  • 입출력장치에서 인터럽트가 여러개 발생한 경우
    • 순차적으로 처리
      • 이는 우선순위를 고려하지 않아 작업에 지장이 생길 수 있음
    • 우선순위대로 처리
      • NMI(Non_Maskable Interrupt)가 발생한 경우에 우선순위가 높은 인터럽트 부터 처리
  • 프로그래머블 인터럽트 컨트롤러(PIC)
    • 다중 인터럽트를 처리하는 방법중 하나
    • 하드웨어 인터럽트들의 우선순위를 판별하여 CPU에 처리해야할 우선적인 인터럽트가 무엇인지 알려줌

  • 일반적으로 PIC를 두 개이상 계층으로 구성하여, 많은 하드웨어 인터럽트 관리가 가능

3. DMA 입출력

  • CPU가 관여하는 것이 아닌 입출력장치와 메모리가 상호작용하는 방식
  • 입출력장치가 직접 메모리에 접근이 가능
  • DMA 컨트롤러가 필요

  • 그러나 시스템 버스는 공용자원이기 때문에 CPU가 사용하지 않을 때를 이용하여 시스템 버스 이용

입출력버스

  • 시스템버스를 DMA 컨트롤러가 이용하게 되면, CPU의 시스템 버스 이용가능 횟수가 줄어듬
  • 이를 방지하기위해, DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스에 연결함
  • 데이터 전송시, 시스템 버스가 아닌 입출력 버스를 이용
  • 입출력 버스의 종류
    • PCI (Peripheral Component Interconnect) 버스
    • PCI Express 버스
  • 입출력 장치와 메모리가 데이터를 주고받는다고 해도, 처리와 해석, 실행은 CPU 몫이였음
  • 요즘은 입출력 전용 CPU가 만들어져 입출력 장치와 메모리 사이에서도 명령어 해석, 실행이 가능