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
'Study_Communication' 카테고리의 다른 글
| CAN 통신이란 (4) | 2024.08.19 |
|---|---|
| OSI 7 Layer란 (0) | 2024.05.24 |
| Windows에서 Putty, VNC 사용법 (2) | 2023.09.04 |