컴퓨터구조론#16

LeeMir, 07 June 2021

제7장 시스템버스, I/O 및 인터럽트(이어서)


DMA를 이용한 I/O
  • Direct Memory Access(DMA)
    • CPU의 개입 없이 I/O 장치와 기억장치 사이에 데이터를 전송하는 방식
    • CPU가 메모리를 액세스하지 않는 시간(CPU가 내부적으로 명령어르 해독하거나 ALU 연산을 수행하는 시간) 동안에 시스템 버스를 사용하여 주기억장치와 I/O 장치 간에 메모리 전송
      • 사이클 스틸링(cycle stealing)이라고도 부름
    • DMA 방식을 사용하기 위해서는 시스템 버스에 DMA 제어기가 추가되어야 함
  • DMA 방식
    • CPU가 DMA 제어기로 아래 정보를 포함한 명령을 전송
      • I/O 장치의 주소
      • 연산(쓰기 혹은 읽기) 지정자
      • 데이터가 쓰여지거나 읽혀질 주기억장치 영역의 시작 주소
      • 전송될 데이터 단어들의 수
    • DMA 제어기는 CPU로 버스 요구 신호를 전송
    • CPU가 DMA 제어기로 버스 승인 신호를 전송
    • DMA 제어기가 주기억장치로부터 데이터를 읽어서, 디스크 제어기(I/O 제어기)로 전송
      • 이 때 시스템 버스를 두 번 사용하는 문제 발생
    • 모든 데이터들의 저장이 완료되면 CPU로 INTR 신호를 전송
  • DMA의 문제점
    • 각 데이터 전송 떄마다 시스템 버스를 두 번씩 사용
      • 버스 사용량 증가로 인한 시스템 성능 저하
    • 해결책
      • I/O 장치들을 DMA 제어기에 접속 => DMA 제어기가 주기억장치를 액세스할 때만 시스템 버스 사용
  • 현대에는 DMA 제어기에서 발전된 I/O 프로세서를 사용해 CPU가 메인 메모리에 접속할 수 있는 기회를 더 많이 제공