본문 바로가기

Study_Communication

DMA란

728x90
반응형

DMA(Direct Memory Access)란

  • 주변장치가 CPU의 개입 없이 메인 메모리에 접근하는 기능
  • CPU가 입출력 모듈에 메모리로의 Read/Write 권한을 부여하는 것

등장 배경

  • 기존 PIO 방식의 경우, CPU가 각 주변장치의 Local Buffer 내의 데이터를 Memory로 복사함
    • 이러한 데이터 전송 과정에서 Interrupt가 발생하며, CPU는 다른 동작을 할 수 없음
    • PIO (Programmed Input/Output) : 장치 간에 전송되는 모든 데이터가 CPU를 거치는 방식
  • 고속 입출력 장치가 각 byte마다 인터럽트를 생성할 경우, OS는 이 인터럽트 처리에 대부분의 시간을 보내게 됨 
  • 이러한 비효율성을 해결하고자 DMA 등장

DMA 동작 방식

  • 각 주변장치의 Local Buffer가 일정 Block 단위까지 찼을 경우, DMAC(DMA Controller)가 이를 Memory에 직접 복사함
    • 복사가 끝난 후 DMAC가 CPU에 Interrupt 전달
    • 이를 통해 Interrupt 발생 횟수를 낮출 수 있음
  • 즉 DMA 사용 시, CPU는 전송의 시작과 끝에만 관여하므로 데이터 전송 간 다른 작업 수행 가능
    • CPU 효율성 향상
    • DMAC는 메모리와 주변장치 간의 데이터 교환을 제어
  • CPU가 데이터 전송속도를 따라가지 못하거나 비교적 느린 입출력 데이터 전송을 기다리는 동안 작업 수행시 유용

DMA 동작 과정

  • CPU가 DMAC에 I/O 정보 전달
  • DMAC가 CPU에 Bus Request
  • CPU가 DMAC의 Bus Grant
  • 주변장치와 DMAC간의 Data Transfer 수행
  • DMAC가 CPU에 데이터 전달 완료 Interrupt 전달

GPDMA (General Purpose DMA)

  • MCU 내에서 CPU의 개입 없이 주변 장치와 메모리 간의 데이터를 효율적으로 전송하는 데 사용되는 시스템 주변 장치
  • Linked List를 통한 다중 Block 전송 가능
    • 여러 전송 작업을 큐(Queue)처럼 연결하여 처리 가능

 

 


 

https://www.tutorialspoint.com/operating_system/os_io_hardware.htm

 

I/O Hardware in Operating Systems

Learn about I/O hardware components in operating systems, including their functions, types, and how they interact with system software.

www.tutorialspoint.com

 

https://ko.wikipedia.org/wiki/%EC%A7%81%EC%A0%91_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%A0%91%EA%B7%BC

 

직접 메모리 접근 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. AMD의 DirectGMA는 DMA의 일종이다. PCIe 버스와 AMD 파이어프로 브랜드 제품 상에서 낮은 레이턴시로 장치 간 P2P 데이터 전송을 가능케 한다. DirectGMA를 지원하는 직렬

ko.wikipedia.org

 

https://kkhipp.tistory.com/168

 

DMA(Direct Memory Access)란? (+PIO, 채널제어방식)

입출력 제어 방식은 크게 4가지가 있습니다. 1. 프로그램에 의한 I/O (CPU 개입 O) 2. 인터럽트에 의한 I/O (CPU 개입 O) 3. DMA에 의한 I/O (CPU 개입 X) 4. 채널에 의한 I/O (CPU 개입 X) 이제 DMA에 대해서 알아

kkhipp.tistory.com

 

https://ksk-developer.tistory.com/40

 

https://coder-in-war.tistory.com/entry/Embedded-26-DMA%EB%AA%A8%EB%93%9C%EB%9E%80

 

[ Embedded ] 08. DMA모드란?

DMA 모드 Direct Memory Access I/O로 인한 성능 감소 방지를 위해 CPU 개입 없이 I/O 장치와 기억장치 간 직접 데이터 전송 방식 처리기를 거치지 않고 DMA컨트롤러에 의해 주변기기로부터 데이터가 메모

coder-in-war.tistory.com

 

728x90
반응형

'Study_Communication' 카테고리의 다른 글

CAN 통신이란  (4) 2024.08.19
OSI 7 Layer란  (0) 2024.05.24
Windows에서 Putty, VNC 사용법  (2) 2023.09.04