[혼공학습단 9기] 혼공컴운 3주차 챕터8 : 입출력장치 + 미션

낙원·2023년 1월 20일
0
post-thumbnail

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

🔑장치 컨트롤러

  • CPU, 메모리보다 다루기 까다롭다.
  1. 종류가 너무나 많다.
    • 장치마다 속도, 데이터 전송 형식 등도 다양하다.
    • 정보를 주고받는 방식을 규격화하기 어렵다.
  2. CPU, 메모리는 데이터 전송률이 높지만, 입출력장치는 낮다.
    • 전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표
    • 전송률의 차이는 CPU와 메모리, 입출력장치 간의 통신을 어렵게 함
  • 위와 같은 이유로 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결된다.

장치 컨트롤러의 역할

  1. CPU와 입출력장치 간의 통신 중개
    일종의 번역가 역할

  2. 오류 검출

  3. 데이터 버퍼링

    • 버퍼링이란?
      전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법

장치 컨트롤러의 구조

  • 데이터 레지스터
    CPU와 입출력장치 사이에 주고받을 데이터 담기는 레지스터 (버퍼)
    RAM을 사용하기도 한다.
  • 상태 레지스터
    상태 정보 저장
    입출력 작업 할 준비가 되었는지,
    입출력 작업이 완료되었는지,
    입출력 장치에 오류는 없는지 등의 정보
  • 제어 레지스터
    입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장
  • 레지스터에 담긴 값들은 버스를 타고 CPU나 다른 입출력장치로 전달되기도 하고, 장치 컨트롤러에 연결된 입출력장치로 전달된다.

🎨장치 드라이버

  • 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
  • 장치 컨트롤러 : 하드웨어적인 통로
  • 장치 드라이버 : 소프트웨어적인 통로

📡다양한 입출력 방법

📺프로그램 입출력

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

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

  1. 하드 디스크에 새로운 정보를 쓰는 것과 같다.
    CPU는 제어 레지스터에 쓰기 명령을 보낸다.

  2. 하드 디스크 컨트롤러는 하드 디스크 상태 확인
    → 준비된 상태라면 상태 레지스터에 표시한다.

3 - 1. CPU는 상태 레지스터 주기적으로 읽으며 하드 디스크 준비 여부 확인
3 - 2. 준비되었다면 백업할 메모리의 정보를 데이터 레지스터에 쓰기

백업이 끝나지 않았으면 1번부터 반복, 끝났다면 작업 종료한다.

  • 위처럼 CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이뤄진다.
  • 그런데 다양한 명령어들은 어떻게 명령어로 표현되고 메모리에 어떻게 저장되어 있을까??
    여기에는 크게 두 가지 방식이 있다.

메모리 맵 입출력

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

고립형 입출력

  • 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 분리하는 방법
  • 입출력 전용 명령어를 사용해야 한다.

💥인터럽트 기반 입출력

  • 하드웨어 인터럽트는 장치 컨트롤러에 의해 발생한다.

여러 입출력장치에서 인터럽트 동시에 발생할 때 처리

  1. 인터럽트 발생 순서대로 처리
    인터럽트 비트를 비활성화한 채 인터럽트 처리
    하지만 인터럽트 중에서도 우선순위를 고려해야 한다.

  2. 우선순위를 반영한 인터럽트 처리
    플래그 레지스터 속 인터럽트 비트가 활성화 된 경우,
    인터럽트 비트 비활성화해도 무시할 수 없는 NMI가 발생한 경우 사용

  • PIC
    • 여러 장치 컨트롤러에 연결
    • 장치 컨트롤러의 하드웨어 인터럽트의 우선순위 판별
    • CPU에게 먼저 처리할 인터럽트가 무엇인지 알려주는 하드웨어
    • NMI 우선순위까지 판별하지는 않는다.

프로그램 입출력, 인터럽트 기반 입출력 공통점

  1. 입출력 장치와 메모리 간의 데이터 이동은 CPU가 주도
  2. 이동하는 데이터도 반드시 CPU를 거친다.

    과정 1 : 입출력장치 데이터를 하나씩 읽어 레지스터에 적재
    과정 2 : 적재한 데이터를 메모리에 저장

🔎DMA 입출력

  • 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 방식
  • 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.

DMA 입출력 과정

  1. CPU는 DMA 컨트롤러에 입출력 작업 명령
  2. DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행. 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 쓴다.
  3. CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.

DMA의 시스템 버스 이용 방법

  • 시스템 버스는 동시 사용이 불가능하다.
  1. CPU가 사용하지 않을 때 조금씩 이용
  2. CPU에게 허락을 구하고 이용

입출력 버스

  • 불필요하게 DMA가 시스템 버스를 사용하는 경우가 있다.
    이를 방지하기 위해 입출력 버스라는 별도의 버스에 연결한다.

    이를 통해 시스템 버스의 이용 빈도를 낮출 수 있다.

미션

p. 185의 확인 문제 3번

1 : SRAM
2 : DRAM
3 : DRAM
4 : SRAM

p. 205의 확인 문제 1번

1 : 레지스터
2 : 캐시 메모리
3 : 메모리
4 : 보조기억장치

Ch.07(07-1) RAID의 정의와 종류 정리

RAID 정리

0개의 댓글