文章目录
- DMA的工作原理
- DMA的优势
- DMA的类型
- DMA的应用
DMA(Direct Memory Access)直接内存访问是一种允许某些硬件子系统在不通过中央处理单元(CPU)的情况下,直接从内存读取或向内存写入数据的技术。这种方式可以显著提高数据传输的效率,减轻CPU的负担,使CPU能够同时处理其他计算任务。
在没有 DMA 技术前,全程数据拷贝都需要CPU来做,严重消耗CPU。
在引入了DMA后:
DMA的工作原理
- 当外部设备有DMA使用需求时,会向DMAC(DMA控制器)发出DMA请求信号(DREQ)
- DMAC控制器接收到外部设备的请求信号后,会向CPU发出一个总线请求信号(HOLD)
- CPU在接收到DMAC控制器发送过来的总线请求信号后,如果允许DMA传输,则会在总线空闲后,发出DMA响应信号(HLDA)。然后CPU会将控制总线、数据总线和地址总线置高阻态,即放弃对总线的控制权;另一方面,CPU会将有效的DMA响应信号发送给DMAC控制器,通知DMAC控制器CPU已经放弃了对总线的控制权
- DMAC控制器收到总线发来的DMA响应信号(HLDA)后,会获得总线的控制权,并向外部设备发送应答信号DACK,通知外设可以进行DMA传输了
- DMAC还会向存储器发送地址信号,向存储器和外设发出读/写控制信号,控制数据按设定的方向传输,实现外设与内存的数据传输
- 数据全部传输结束后,DMAC向CPU发送HOLD信号,要求撤销DMAC控制器对总线的控制权,CPU收到该信号后,会使HLDA(DMA请求)信号无效,收回总线控制权。
概括而言有两组信号:
- DRQ:外设向DMA控制器(DMAC,DMA Controller)提出的要进行DMA操作的申请信号。
- DACK:DMA控制器向发出DRQ信号的外设的回应,表示收到请求和正在进行处理。
- HRQ:DMA控制器向CPU发出的要求接管总线的请求信号。
- HLDA:CPU向DMA控制器发出的允许接管总线的应答信号。
DMA的优势
- 高效性:通过减少CPU参与数据传输的次数,DMA可以显著提高数据传输速度,尤其是在处理大量数据时。
- 减轻CPU负担:DMA允许CPU在数据传输期间执行其他任务,从而提高了整个系统的效率和响应速度。
DMA的类型
- 单块传输模式:在这种模式下,每次传输一块数据。每次传输完成后,DMA控制器都会发送中断信号给CPU。
- 突发传输模式:允许DMA控制器一次性传输一整组数据块,直到数据传输完成,只在最后发送一个中断信号给CPU。这种模式进一步提高了数据传输效率。
DMA的应用
DMA广泛应用于需要高速数据传输的场景,如硬盘驱动器、固态驱动器、网络卡、声卡等外围设备与内存之间的数据传输。
总之,DMA是一种有效提高数据传输效率、减轻CPU负担的关键技术,对于现代计算机系统的高性能运行至关重要。