直接存储器访问(Direct Memory Access, DMA)是一种在计算机系统中高效传输大量数据的技术,它允许外部设备(如硬盘、网络适配器等)直接与主内存交换数据,而不需中央处理器(CPU)的介入。这极大地提高了数据传输速度,因为CPU可以在此期间执行其他计算任务,从而提高了系统的整体效率。
8.4.1 DMA 方式的一般概念:
DMA方式的目的是为了解决CPU和I/O设备之间高速、大批量数据交换的问题。它通过专门的硬件——DMA控制器来实现。在这个过程中,DMA控制器负责管理数据传输,包括计算内存地址和数据传输的数量。传输前,会在内存中预先分配一个连续的缓冲区来存储或接收数据。传输完成后,CPU会通过中断或程序来处理缓冲区和DMA控制器的后续工作。
8.4.2 DMA 传送方式:
有两种主要的DMA传送方式:
1. **停止CPU访问内存**:
当DMA请求被CPU响应后,CPU将暂时释放存储总线,由DMA控制器接管。在此期间,数据直接在DMA控制器和内存之间传输,而CPU则执行其他任务。这种方式下,CPU暂停了对内存的访问,可能导致内存资源利用率下降,但简化了控制流程。通常适用于高数据传输速率的设备进行批量数据传输。
2. **周期挪用方式**:
在这种模式下,当DMA需要传输数据时,它会在一个内存周期内占用总线,CPU在这一个周期内暂停访问内存,然后继续执行其他指令。这种方式使得CPU能够在大部分时间内保持工作,提高了内存利用率,但增加了数据传输的复杂性。
8.4.3 DMA 传送一个数据的过程:
数据传输通常包含以下步骤:
- 外部设备发出DMA请求。
- CPU响应请求,切换到DMA模式,将总线控制权交给DMA控制器。
- DMA控制器根据预设的地址和数据计数器来决定数据的传输位置和数量。
- 数据在DMA控制器和内存之间直接传输。
- 传输完成后,DMA控制器通过中断通知CPU,CPU恢复原来的执行状态。
在DMA进行数据传输时,如果CPU也需要访问内存,就需要解决两者之间的总线冲突问题。通常,这可以通过优先级控制或者时间分隔来解决,确保两者可以有效地共享总线资源。
总结来说,DMA方式是计算机系统中提高数据传输效率的重要手段,它减少了CPU对数据传输的直接参与,使CPU能更专注于执行计算密集型任务,提升了系统的并发处理能力。不同的DMA传送方式适应不同的应用场景,选择哪种方式取决于数据传输速率、设备特性以及系统资源的平衡。