繁体   English   中英

DMA如何影响CPU?

[英]How does DMA affect CPU?

(我是学习操作系统的新手。这可能是一个愚蠢的问题)

我了解到 DMA 允许像磁盘这样的 I/O 设备直接独立于 CPU 与主 memory 通信。 在数据传输期间,它使 memory 总线保持忙碌状态。 但它如何影响 CPU? 如果这段时间CPU要使用memory怎么办? 即使数据传输需要很长时间,它也必须等待吗?

谢谢你。

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

然而,由于大多数 CPU 在主 memory 总线和内核之间有缓存,因此通常可以避免这种情况。 如果访问命中缓存,则没有访问可能 go 出到总线上。 或者,缓存可能允许将对 main memory 的写入延迟到总线处于非活动状态,或者写入可能永远不会 go 到 main memory。 一些缓存硬件“侦听”memory 总线,有效侦听 memory 访问,该访问会命中缓存中的缓存行,然后自动更新缓存。 这使 CPU 无需主控一个单独的事务来将 DMA 数据从 RAM 获取到缓存中。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM