gpt4 book ai didi

hardware - 直接内存访问 DMA - 它是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 04:09:39 30 4
gpt4 key购买 nike

我读到,如果 DMA 可用,那么处理器可以将磁盘 block 的长读取或写入请求路由到 DMA 并专注于其他工作。但是,在此传输期间,DMA 到内存数据/控制 channel 正忙。在此期间处理器还能做什么?

最佳答案

首先,DMA(本身)几乎完全过时了。正如最初定义的那样,DMA Controller 依赖于总线具有单独的线路来断言内存读/写和 I/O 读/写的事实。 DMA Controller 利用了这一点,同时声明内存读取和 I/O 写入(反之亦然)。然后,DMA Controller 在总线上生成连续的地址,并在每个总线周期从内存中读取数据并将其写入输出端口(反之亦然)。

但是,PCI 总线没有有单独的线路用于内存读/写和 I/O 读/写。相反,它为任何给定事务编码一个(且仅一个)命令。 PCI 通常不使用 DMA,而是进行总线主控传输。这意味着 I/O 设备本身直接将数据传输到内存或从内存传输数据,而不是在 I/O 设备和内存之间传输内存的 DMA Controller 。

至于当时CPU还能做什么,那就要看情况了。当 DMA 很常见时,答案通常是“不多”——例如,在早期版本的 Windows 下,读取或写入软盘(确实使用了 DMA Controller )在这段时间内几乎会锁定系统。

然而,现在内存的带宽通常比 I/O 总线大得多,因此即使外设正在读取或写入内存,通常也会留下相当多的带宽供 CPU 使用。此外,现代 CPU 通常具有相当大的缓存,因此它通常可以在不使用主内存的情况下执行某些指令。

关于hardware - 直接内存访问 DMA - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5150719/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com