基于中断的UART IO允许在没有CPU干预的情况下进行数据传输。现在的问题是,如果不是CPU谁控制这个?是DMA控制器还是某些外部主控制器从CPU获得对存储器总线的控制。没有得到正确答案here。如果它是DMA控制器那么什么使DMA和基于中断的传输不同
答案 0 :(得分:2)
没有得到正确答案here 如果它是DMA控制器那么什么使DMA和基于中断的传输不同
这个问题没有得到任何好的答案IMO,因为这个问题有错误的措辞
事实上,我不理解他对“中断驱动”的描述,因为它毫无意义,并不是因为我缺乏这方面的知识/经验。
“ DMA ”不能替代“中断”
相反,它们是正交概念, 这两个概念通常一起使用
DMA的替代方案是编程I / O,即PIO
中断的替代方法是轮询。
DMA传输几乎总是使用completion interrupt
(来自DMA控制器)来通知CPU缓冲区传输已完成。
PIO经常使用中断(来自器件)来启动每个字节/字数据传输。这有助于减轻PIO的CPU密集型特性。轮询的PIO传输否则将完全消耗CPU资源
但是将“带有中断的PIO”简称为“中断”是不准确和误导的。
基于中断的UART IO允许在没有CPU干预的情况下进行数据传输。现在问题是,如果没有CPU控制这个?
您尚未指定中断源;因此你的问题含糊不清。
如果“基于中断的”应该引用“来自UART的中断的PIO”,那么这个问题根本没有意义,因为它是控制传输的CPU。
如果“基于中断的”应该是指带有来自DMA控制器的中断的DMA传输,那么您在以前未在您或链接的问题中使用的上下文中使用这些术语。
对于UART读取:
在DMA传输中,每个字节都从UART读取(当UART发出数据可用信号时),并由DMA控制器写入存储器。必须设置DMA控制器才能执行此任务。当DMA控制器监视此传输时,CPU将执行其他(可能是不相关的)指令(例如,用于另一个进程)。
在PIO传输中,CPU始终处于控制状态,执行从设备读取和写入存储器的指令。
是DMA控制器还是某些外部主控制器从CPU获取对内存总线的控制权。
内存总线由内存控制器维护。没有其他设备可以控制内存总线。
要实际读取或写入内存,DMA控制器在DMA传输期间请求访问内存 请注意,还有一些特权设备,例如总线主控器或协处理器/ GPU,也可以请求访问存储器 但通常会为CPU分配内存访问的最高优先级。