gpt4 book ai didi

concurrency - 关于 DMA 和 CPU 并发

转载 作者:行者123 更新时间:2023-12-05 02:19:38 27 4
gpt4 key购买 nike

我想知道当设备的 DMA Controller 正在进行内存操作时,CPU 可以处理/执行什么样的操作,以提高并发级别?如果 CPU 缓存/寄存器为空,如何在不交错进行中的 DMA 的情况下获取另一条指令

谢谢

最佳答案

一般来说,在 big1 硬件上,当 DMA 进行时,CPU 或多或少可以做任何事情。通常,它只是在操作系统的控制下继续正常执行正在运行的进程或内核任务。

关于您的问题:

... if the CPU cache/registers is empty, how another instruction can be fetched without interleaving DMA in progress[?]

据我了解,你问的是如果 CPU 需要访问内存会发生什么。一般来说,CPU通常是频繁访问内存的,不仅仅是在“寄存器或缓存为空”的时候。当 DMA 正在进行时,此事件或多或少可以正常进行2。内存总线通常已被多个设备共享,包括多个支持 DMA 的设备、PCI 卡、多核或多 CPU。 memory controller负责接受和完成所有这些请求,包括在这之间进行仲裁。

所以您是正确的,当 DMA 和 CPU 访问内存时可能存在某种类型的“交错”,就像当两个内核(甚至在同一内核上运行的两个逻辑线程)访问内存时可能会发生这种情况一样。它在实践中的工作方式取决于 DRAM 的组织方式、内存 Controller 的工作方式(以及存在的数量)以及许多其他细节,但通常您期望现代内存系统是高度并行的——能够维持多个数据流访问并经常接近 RAM 施加的带宽限制。


1如今,这几乎意味着任何比嵌入式微 Controller 更大的东西。例如,即使是移动 CPU 也符合条件。

2通常 我的意思是使用正常机制,您可以期望内存访问工作,但性能不会被影响。 CPU 的内存访问将与 DMA 访问(可能还有其他 CPU、PCI 设备(如视频卡等)的其他访问)竞争,并且可能会更慢 - 但在合理的硬件上,它肯定不必等到DMA 完成!

关于concurrency - 关于 DMA 和 CPU 并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913855/

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