Search

DMA(Direct Memory Access)

입출력 작업 수행 방법 중 하나

장치 컨트롤러 & 장치 드라이버

다양한 외부 장치가 어떻게 컴퓨터 내부와 연결되고 소통하는지를 알기 위해 알아야하는 내용

장치 컨트롤러

CPU와 입출력장치 사이의 통신을 중개하는 중개자 역할의 하드웨어
같은 입출력장치라 하더라도 제조사마다 규격 및 작동 방식이 상이 → CPU 입장에서 모든 입출력 장치의 작동 방식을 알기는 어려움 → 입출력장치는 CPU와 직접 연결되어 정보를 주고받지 않고 장치 컨트롤러라는 하드웨어를 통해 연결
모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 연결되어 정보를 주고받음
참고

장치 드라이버

CPU가 실행하는 것은 결국 프로그램이며, CPU가 장치 컨트롤러와 상호작용하며 입출력장치를 작동
이 말은, CPU가 장치 컨트롤러와 상호작용해 입출력장치를 작동시키는 것 또한 CPU가 실행하는 프로그램을 통해 이뤄진다는 말과 동일
일반적으로 장치 컨트롤러마다 이를 작동시키는 장치 드라이버라는 프로그램 존재
장치 드라이버 : 장치 컨트롤러의 동작을 알고, 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있도록 하는 프로그램
컴퓨터가 장치 드라이버를 인식하지 못하면, 장치 컨트롤러와 정보를 주고받을 방법을 알 수 없음 → 입출력장치 실행 불가능
참고

DMA 입출력

직접 메모리에 접근할 수 있는 입출력 기능

DMA 입출력 방법을 사용하지 않는다면?

CPU가 입출력장치와 메모리 간의 데이터 이동을 주도해야 하며, 이동하는 데이터들도 반드시 CPU를 거침
입출력장치의 데이터를 메모리에 저장하는 경우
메모리 속 데이터를 입출력장치에 보내는 경우

DMA 입출력 등장

입출력장치와 메모리 사이에 전송되는 모든 데이터가 반드시 CPU를 거친다? → CPU 부담 증가 → 따라서, CPU를 거치지 않고도 입출력장치와 메모리가 상호작용하는 입출력 방식(= DMA) 사용
DMA 입출력을 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요
DMA 컨트롤러는 시스템 버스에 연결
입출력장치들의 장치 컨트롤러들은 입출력 버스라는 입출력장치 컨트롤러 전용 버스와 연결

DMA 입출력 과정

1.
CPU가 DMA 컨트롤러에게 입출력장치의 주소, 수행할 연산, 연산할 메모리 주소 등의 정보와 함께 입출력 작업을 명령
2.
DMA 컨트롤러가 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행. 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씀. 입출력장치와 메모리 사이에 주고받을 데이터가 CPU를 거치지 않음
3.
DMA 컨트롤러는 입출력 작업이 끝나면 CPU에게 인터럽트를 걸어 작업이 끝났음을 알림
참고