Skip to content

학습 기록 | w4 지현

Jihyun Lim edited this page Feb 26, 2025 · 1 revision

8. 입출력장치

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

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

💡 입출력 장치를 다루기 어려운 이유

  1. 종류가 너무 많음
    • 정보를 주고받는 방식을 규격화하기가 어렵다
  2. CPU와 메모리의 데이터 전송률은 높지만 입출력 장치의 데이터 전송률은 낮다.

→ 입출력 장치는 컴퓨터와 직접 연결 X

장치 컨트롤러를 통해 연결

장치 컨트롤러

device controller

= 입출력 제어기 I/O controller

= 입출력 모듈 I/O module

  • 입출력 장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받는다.

장치 컨트롤러의 역할

  • CPU와 입출력 장치 간의 통신 중개 (번역가 역할)
  • 오류 검출
  • 데이터 버퍼링
    • CPU와 입출력장치와의 전송률 차이를 버퍼링으로 완화

버퍼링

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

장치 컨트롤러의 구조

  • 데이터 레지스터 data register
    • 주고받을 데이터가 담기는 레지스터(버퍼)
    • RAM을 사용하기도 함
  • 상태 레지스터 status register
    • 상태 정보 저장
      • 입출력 작업을 할 준비 완료, 입출력 작업 완료, 오류
  • 제어 레지스터 control register
    • 수행할 내용에 대한 제어 정보와 명령 저장

장치 드라이브

device driver

  • 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램
  • 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 함
  • 실행 과정에서 메모리에 저장
  • 운영체제가 장치 드라이버를 인식하고 실행
장치 컨트롤러 →  하드웨어적 통로

장치 드라이브 →  소프트웨어적 통로

08-2. 다양한 입출력 방법

#프로그램 입출력 #메모리 앱 입출력 #고립형 입출력 #인터럽트 기반 입출력 #DMA 입출력 #입출력 버스

프로그램 입출력

programmed I/O

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

프로그램 입출력 방식

  • CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐
메모리 맵 입출력 memory-mapped I/O 고립형 입출력 isolated I/O
메모리와 입출력장치는 같은 주소 공간 사용 메모리와 입출력장치는 분리된 주소 공간 사용
1024 = 메모리 512 + 입출력장치 512 1024 = 메모리 1024 = 입출력장치 1024
메모리 주소 공간이 축소됨 메모리 주소 공간이 축소되지 않음
메모리와 입출력장치에 같은 명령어 사용 가능 입출력 전용 명령어 사용

인터럽트 기반 입출력

interrupt-Driven I/O

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

    • 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴을 실행
  • 우선순위를 반영하여 다중인터럽트를 처리

    프로그래머블 인터럽트 컨트롤러(PIC; Programmable Interrupt Controller)

    • 여러 장치 컨트롤러에 연결되어 하드웨어 인터럽트 요청들의 우선순위 판별 후 CPU에게 알려줌
    • 무시할 수 없는 인터럽트인 NMI까지 우선순위를 판별하지 않음(가장 높아서 판별 불필요)

💡 폴링 polling

  • CPU가 주기적으로 장치 컨트롤러의 상태 레지스터를 확인하여 입출력장치의 상태를 확인
  • 입출력 장치의 상태는 어떤지, 처리할 데이터가 있는지를 주기적으로 확인하는 방식

DMA 입출력

Direct Memory Access

  • 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용
  • 직접 메모리에 접근할 수 있는 입출력 기능
  • 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요
  • CPU는 입출력 작업의 시작과 끝만 관여

⁉️ 시스템 버스는 공용자원이므로 CPU가 이용하지 않을 때만 DMA 컨트롤러가 이용 가능

입출력 버스

input/output bus

  • 장치 컨트롤러들이 시스템 버스가 아닌 입출력 버스로 DMA 컨트롤러에 연결
  • 시스템 버스의 사용 빈도 줄임

ex) PCI(Peripheral Component Interconnect) 버스, PCI Express(PCIe) 버스


캐시 메모리 매핑 방법

  • CPU가 사용하는 가상 메모리 주소를 메모리 관리 장치(MMU)가 물리 주소로 변환
  • 캐시에 해당 주소에 대한 데이터가 있는지 확인할 때 캐시에 데이터를 저장하는 방식에 따라 물리 주소를 다르게 해석할 수 있음
  1. 직접 매핑 Direct Mapping

    • 메모리의 특정 블록을 특정 캐시에만 매핑
    • 캐시 메모리가 대용량인 경우에만 사용

    메모리 주소가 1~100일 경우 모듈러 나머지 연산을 사용하여

    1 ~ 10 주소 →  1
    11 ~ 20 주소 →  2
    …
    91 ~ 100 → 10
    
    • 장점 : 구현이 단순하고 접근속도 빠름
    • 단점
      • 교체가 자주 일어나 적중률 저조
      • 동일한 캐시 블록에 매핑되는 다른 메모리 블록을 번갈아 참조할 때 블록 충돌 발생 (A, B, A, B …)
  2. 연관 매핑 Assosiative Mapping

    • 순서를 일치시키지 않고 관련있는 캐시와 메모리 매핑

    • 메모리의 컨텐츠가 캐시의 어느 위치에나 올라갈 수 있음

    • 장점 : 적중률이 높음

    • 단점 : 접근 속도 느림, 고가의 메모리 필요

  3. 직접 연관 매핑 Set Assosiative Mapping

    • 직접 매핑 + 연관 매핑

    • 순서를 일치시키고 저장하지만 일정 그룹을 두어 그룹 내에서 연관 매핑

      1 ~ 50 → 1 ~ 5
      
      51 ~ 100 → 6 ~ 10
      
    • 장점 : 블록화로 효율적인 검색 가능

      • 저장위치에 제약이 있지 않아 적중률이 크게 떨어지지 않음

직접 매핑 연관 매핑 직접 연관 매핑
접근속도 빠름 느림 보통
적중률 낮음 높음 보통

궁금해요

DMA 컨트롤러도 PIC 동시에 사용가능?


4주차 퀴즈

  1. 장치 컨트롤러의 역할로 옳지 않은 것을 고르시오.

    1. CPU와 입출력장치 간의 통신을 중개한다.
    2. 연결된 입출력장치에 문제가 없는지 오류를 검출한다.
    3. 데이터 레지스터와 상태 레지스터, 제어 레지스터로 구성된다.
    4. 버퍼링으로 전송률이 낮은 CPU와의 차이를 완화한다.
  2. 장치 컨트롤러가 ( A ) 적 통로라면, 장치 드라이브는 ( B ) 적 통로라고 할 수 있다.

  3. DMA 컨트롤러는 CPU의 부담을 줄이기 위해 등장했습니다. 이 방식의 한계와 해결하기 위한 방법을 설명하시오.

정답

1. 4
2. 하드웨어적, 소프트웨어적
3. CPU, 메모리, DMA 컨트롤러, 장치 컨트롤러가 같은 버스를 공유할 경우 DMA를 위해 시스템 버스를 두번 사용하게 되는 부작용이 있다.
→ 때문에 입출력 버스 라는 별도의 버스에 연결하여 시스템 버스이ㅡ 사용 빈도를 줄일 수 있다.

Clone this wiki locally