nod*_*nja 3 memory memory-management dma
我在一本书上读到这个:
如果系统中的 DMA 控制器以 5 MHz 的最大速率运行,而我们仍然使用 100 ns 内存,则最大传输速率为 5 MHz,因为 DMA 控制器比内存慢。在许多情况下,DMA 控制器会在发生 DMA 传输时降低系统速度。
我认为 DMA 控制器的全部原因是加快速度,而不是减慢速度。那么,如果它减慢了速度,它有什么帮助呢?为什么不让 DMA 控制器和内存一样快?
DMA 控制器的整体理念是它与处理器并行工作。因此处理器可以将一个长 IO 操作排队到 DMA 控制器并愉快地继续运行代码。即使 DMA 控制器较慢,它也只会影响 IO 操作,而不会影响整体性能。这在与慢速设备接口时非常重要 - 如果处理器必须直接与它们一起工作,它将永远不会完成任何其他处理。使用 DMA,它将慢速 IO 排队到 DMA 上,并且 IO 并行完成。