인터럽트까지 공부하고 나면 자연스럽게 이런 생각이 들게 된다. “CPU가 모든 데이터를 직접 처리하면 되는 거 아닌가?” 나도 처음에는 컴퓨터에서 일어나는 거의 모든 작업을 CPU가 직접 하는 줄 알았다. 그런데 실제로는 SSD, 네트워크 카드, 그래픽카드 같은 장치들이 엄청 많은 데이터를 계속 주고받고 있었고, 그걸 CPU가 하나하나 직접 옮기게 하면 생각보다 엄청난 낭비가 발생한다는 걸 알게 됐다. 이 문제를 해결하기 위해 등장한 기술이 바로 DMA(Direct Memory Access)다.

CPU가 직접 데이터를 옮기면 너무 비효율적이다
컴퓨터에서는 데이터를 읽고 쓰는 작업이 끊임없이 발생한다. 예를 들어 SSD에서 파일을 읽어오거나, 인터넷 데이터를 받거나, 영상을 재생하는 과정에서도 계속 메모리 이동이 일어난다.
처음에는 이런 작업을 CPU가 전부 직접 처리하는 줄 알았다. 실제로 과거에는 CPU가 장치에서 데이터를 하나씩 읽어서 메모리에 복사하는 방식이 많이 사용됐다.
문제는 CPU가 원래 해야 할 일이 굉장히 많다는 점이다. 계산도 해야 하고, 프로그램 실행도 해야 하고, 운영체제 작업도 처리해야 한다. 그런데 데이터 복사까지 계속 직접 하면 CPU 자원이 낭비된다.
나도 예전에 큰 파일을 복사하면서 동시에 게임이나 다른 프로그램을 실행했을 때 전체가 버벅이는 경험을 한 적이 있었다. 그때는 단순히 저장장치 속도 문제인 줄 알았는데, 실제로는 CPU와 입출력 처리 부담도 꽤 큰 영향을 주고 있었다.
그래서 컴퓨터는 “데이터 이동 정도는 CPU 말고 다른 장치가 대신하자”라는 방향으로 발전하게 된다.
DMA는 장치가 메모리에 직접 접근해서 데이터를 옮기는 방식이다
DMA(Direct Memory Access)는 말 그대로 장치가 메모리에 직접 접근해서 데이터를 전송하는 기술이다. 쉽게 말하면 CPU를 거치지 않고 SSD나 네트워크 카드 같은 장치가 메모리와 직접 데이터를 주고받는 구조다.
예를 들어 SSD에서 큰 파일을 읽는다고 생각해보자.
CPU 방식:
- SSD → CPU → 메모리
DMA 방식:
- SSD → 메모리 직접 전송
이렇게 동작한다.
CPU는 처음에 “어디서 어디까지 전송해”라고 명령만 내리고, 실제 데이터 이동은 DMA 컨트롤러가 처리한다. 작업이 끝나면 인터럽트를 통해 CPU에게 완료를 알린다.
이 구조를 처음 이해했을 때 꽤 인상 깊었다. CPU가 모든 걸 직접 처리하는 게 아니라, 반복적인 작업은 다른 장치에게 맡기고 있다는 느낌이 들었기 때문이다.
특히 영상 재생이나 네트워크 다운로드처럼 데이터 양이 큰 작업에서는 DMA가 없으면 CPU 부담이 훨씬 커질 수 있다는 걸 알고 나니까, 이 기술이 왜 중요한지도 자연스럽게 이해됐다.
DMA 덕분에 CPU는 더 중요한 작업에 집중할 수 있다
DMA의 가장 큰 장점은 CPU 사용량을 줄여준다는 점이다. CPU가 데이터 복사 작업에 계속 매달리지 않아도 되기 때문에, 다른 계산이나 프로그램 실행에 더 집중할 수 있다.
특히 현대 컴퓨터에서는 SSD 속도나 네트워크 속도가 굉장히 빨라졌기 때문에, CPU가 모든 전송을 직접 처리하는 구조로는 효율이 크게 떨어질 수 있다.
나도 예전에 외장 SSD로 대용량 파일을 복사하면서 동시에 영상도 보고 다른 작업도 했는데, 생각보다 컴퓨터가 꽤 안정적으로 동작하는 걸 보고 신기했던 기억이 있다. 예전 HDD 시대보다 훨씬 자연스럽게 여러 작업이 동시에 돌아가는 느낌이었다.
물론 여기에는 CPU 성능 향상도 있겠지만, 내부적으로 DMA 같은 기술들이 계속 발전하면서 입출력 처리 효율이 좋아진 영향도 크다는 걸 나중에 알게 됐다.
결국 DMA는 단순히 데이터를 빨리 옮기는 기술이 아니라, 컴퓨터 전체 자원을 더 효율적으로 사용하기 위한 핵심 구조 중 하나라는 생각이 들었다.
한 줄로 정리하면 DMA는 CPU 대신 장치가 메모리에 직접 데이터를 전송하도록 만들어 CPU 부담을 줄이고 전체 시스템 효율을 높이는 기술이다.