입출력장치에 대해 Araboza!!

hongxeob·2022년 12월 28일
0

컴퓨터 구조

목록 보기
14/14
post-thumbnail

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

들어가기 앞서,
입출력장치는 CPU,메모리보다 다루기가 더 까다롭다!!

  • 첫째, 입출력장치에는 종류가 너무 많다
  • 둘째, 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다

위의 이유로 장치 컨트롤러를 통해 컴퓨터와 연결 된다

장치 컨트롤러의 역할

  • CPU와 입출력장치 간의 통신중개 (일종의 번역가 역할 수행)
  • 오류 검출
  • 데이터 버퍼링
    - 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에서 주고받는 데이터
    - 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법

장치 컨트롤러의 역할

  • 버스에 연결 되어서 데이터 레지스터,상태 레지스터,제어 레지스터로 구성되어 있다
  • 데이터 레지스터
    - CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터(버퍼)
    - RAM을 사용하기도 한다
  • 상태 레지스터
    - 상태 정보를 저장
    - 입출력 장치가 입출력 작업을 할 준비가 되었는지
    - 입출력 작업이 완료되었는지
    - 입출력장치에 오류는 없는지 등의 상태 정보
  • 제어 레지스터
    - 입출력장치가 수행할 내용에 대한 제어 정보

장치 드라이버

  • 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램

    장치 컨트롤러가 입출력장치를 연결하기 위한 하드웨어적인 통로라면,
    장치 드라이버는 입출력장치를 연결하기 위한 소프트웨어적인 통로


그렇다면 다양한 입출력 방법은?!

1.프로그램 입출력

  • 프로그램 속 명령어로 입출력장치를 제어하는 방법
  • 입출력 명령어로써 장치 컨트롤러와 상호작용
  • CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다
    - 근데 CPU가 이 레지스터들(입출력장치의 주소)을 어떻게 알까?
  • 메모리 맵 입출력
    - 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
  • 고립형 입출력
    - 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
    - 입출력 전용 명령어 사용

2.인트럽트 기반 입출력

  • 하드웨어 인터럽트의 개념
    - 하드웨어 인터럽트는 장치 컨트롤러에 의해서 발생
  • 플래그 레지스터 속 인터럽트 비트
    - 동시다발적인 인터럽트1 : 플래그 레지스터 속 인터럽트 비트를 비활성화한 채 인터럽트를 처리하는 경우,
    인터럽트 발생 순서대로 처리 할 수 있다
    - 동시다발적인 인터럽트2 : NMI(Non-maskable interrupt)가 발생한 경우,
    플래그 레지스터 속 인터럽트 비트가 활성화 되어 있는 경우에는 우선순위가 높은 인터럽트 부터 처리한다
  • 인터럽트 요청 신호
  • 인터럽트 서비스 루틴

여기서 잠깐,

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

3.DMA입출력 (Direct Memory Access)

  • DMA : CPU를 거치지 않고 입출력장치가 메모리에 직접적으로 접근하는 기능 (쉽게 말해 대행해 준다)
  • 과정
    - CPU는 DMA에 입출력 장치를 명령
    - DMA 컨트롤러는 CPU대신 장치 컨트롤러와 상호작용을 하며 입출력 작업을 수행
    - 입출력 작업이 끝나면 DMA컨트롤러는 인터럽트를 통해 CPU에 작업이 끝났음을 알린다

-> DMA과정에서 시스템 버스를 이용

  • 시스템 버스는 공용 자원이기에 동시 사용이 불가능
  • 즉 CPU가 시스템 버스를 사용할 때 DMA컨트롤러는 시스템 버스를 사용할 수 없고, 그 반대의 경우도 마찬가지

✓ 그래서

  • CPU가 시스템 버스를 이용하지 않을 때마다 조금씩 시스템 버스 이용
  • CPU가 일시적으로 시스템 버스를 이용하지 않도록 허락을 구하고(request 요청) 시스템 버스 이용
profile
걍 하자 저스트 뚜잇

0개의 댓글