Memory DMA如何影响CPU?

Memory DMA如何影响CPU?,memory,operating-system,cpu,dma,Memory,Operating System,Cpu,Dma,(我对学习操作系统还不熟悉。这可能是个愚蠢的问题) 我了解到DMA允许像磁盘这样的I/O设备与主内存直接进行通信,而不依赖于CPU。在数据传输期间,它使内存总线保持繁忙状态。 但是它如何影响CPU呢? 如果CPU想在这段时间内使用内存呢?即使数据传输需要很长时间,它也必须等待吗 谢谢。这取决于总线和(处理器)缓存的具体实现方式。在一个简单的情况下,CPU会在加载/存储指令或指令提取时暂停,等待总线变为非活动状态 然而,由于大多数CPU在主存总线和内核之间都有一个高速缓存,这通常是可以避免的。如果

(我对学习操作系统还不熟悉。这可能是个愚蠢的问题)

我了解到DMA允许像磁盘这样的I/O设备与主内存直接进行通信,而不依赖于CPU。在数据传输期间,它使内存总线保持繁忙状态。 但是它如何影响CPU呢? 如果CPU想在这段时间内使用内存呢?即使数据传输需要很长时间,它也必须等待吗


谢谢。

这取决于总线和(处理器)缓存的具体实现方式。在一个简单的情况下,CPU会在加载/存储指令或指令提取时暂停,等待总线变为非活动状态

然而,由于大多数CPU在主存总线和内核之间都有一个高速缓存,这通常是可以避免的。如果访问命中缓存,则总线上可能没有访问。或者,高速缓存可能允许将对主存的写入延迟到总线处于非活动状态,或者可能永远不会对主存进行写入。一些缓存硬件“窥探”内存总线,有效地侦听可能会命中缓存中缓存线的内存访问,然后自动更新缓存。这样就避免了CPU使用单独的事务将DMA数据从RAM中获取到缓存中

此外,一些总线支持硬件的优先级系统,如果更高优先级的硬件需要使用总线(如CPU),则允许暂停DMA。

“我了解到DMA允许磁盘之类的I/O设备……”——为了利用DMA,必须将外围设备连接到系统总线。磁盘驱动器是一个外部设备,通常通过SATA或USB等接口连接。因此,(主机)SATA或USB控制器是带有内存的DMA源/目标。