DMA란
CPU의 개입 없이 주변 장치들이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능입니다.
DMA 사용 이유
주변장치의 데이터를 사용하기 위해서는 그 데이터가 반드시 RAM에 저장되어야 합니다. 그리고 이때 반드시 CPU의 개입이 필요한데, 그 이유는 RAM에 접근하기 위한 주소를 CPU가 생성하기 때문입니다.
그림1은 DMA를 사용하지 않는 기존의 PIO(Programmed Input/Output)방식으로 주변장치에서 데이터를 읽고 쓰기 위해서 CPU가 RAM과의 데이터 전송을 지속합니다. 따라서 이 방식에서 CPU는 데이터 처리가 끝날 때까지 다른 일을 할 수 없습니다.
반면에 그림2는 아래와 같은 프로세스를 거칩니다.
1) RAM에 I/O 장치의 데이터가 필요할 때 CPU는 전송 크기, 대상 주소 및 기타 중요한 정보와 함께 DMA 요청을 DMA 컨트롤러에 신호로 보냅니다.
2) CPU로부터 받은 정보를 바탕으로 DMA 컨트롤러가 데이터를 RAM으로 직접 전송합니다.
3) 데이터 전송이 모두 끝나면, DMA 컨트롤러가 CPU에 "작업이 완료됐다"고 알려줍니다(인터럽트 생성). CPU는 이 신호를 받고 전송 작업이 끝났음을 인지하게 됩니다.
결론적으로 DMA는 CPU가 해야 할 주변장치와의 데이터 전송을 대신함으로써, CPU는 다른 일을 자유롭게 할 수 있습니다.
<참고 자료>
https://ksk-developer.tistory.com/40
https://kkhipp.tistory.com/168
'개념 정리' 카테고리의 다른 글
UART 직렬 통신의 기본 개념과 데이터 전송 구조 (0) | 2024.10.29 |
---|---|
UART 데이터 전송 과정 (0) | 2024.10.29 |
인코딩(Encoding) (0) | 2024.03.15 |