问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

DMA传输时CPU能正常往下执行程序吗

发布网友 发布时间:2022-04-30 12:02

我来回答

3个回答

热心网友 时间:2022-06-22 03:25

DMA传输时CPU能正常往下执行程序。
DMA 传输将数据从一个地址空间复制到另外一个地址空间。当CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA 传输对于高效能 嵌入式系统算法和网络是很重要的。
DMA
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。

DMA请求
CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。

DMA响应
DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。

DMA传输
DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要*处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。

DMA结束
当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。
由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。

DMA传送方式
编辑
DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序.那么DMA控制器与CPU怎样分时使用内存呢?通常采用以下三种方法:(1)停止CPU访内存;(2)周期挪用;(3)DMA与CPU交替访问内存.

停止CPU访问内存
当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权.DMA控制器获得总线控制权以后,开始进行数据传送.在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU.图(a)是这种传送方式的时间图.很显然,在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态.

优点: 控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点: 在DMA控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也是如此。例如,软盘读出一个8位二进制数大约需要32us,而半导体内存的存储周期小于0.5us,因此许多空闲的存储周期不能被CPU利用.

周期挪用
当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。
这种传送方式的时间图如下图(b):

I/O设备要求DMA传送时可能遇到两种情况:
(1)此时CPU不需要访内,如CPU正在执行乘法指令。由于乘法指令执行时间较长,此时I/O访内与CPU访内没有冲突,即I/O设备挪用一二个内存周期对CPU执行程序没有任何影响。
(2)I/O设备要求访内时CPU也要求访内,这就产生了访内冲突,在这种情况下I/O设备访内优先,因为I/O访内有时间要求,前一个I/O数据必须在下一个访问请求到来之前存取完毕。显然,在这种情况下I/O 设备挪用一二个内存周期,意味着CPU延缓了对指令的执行,或者更明确地说,在CPU执行访内指令的过程中插入DMA请求,挪用了一二个内存周期。 与停止CPU访内的DMA方法比较,周期挪用的方法既实现了I/O传送,又较好地发挥了内存和CPU的效率,是一种广泛采用的方法。但是I/O设备每一次周期挪用都有申请总线控制权、建立线控制权和归还总线控制权的过程,所以传送一个字对内存来说要占用一个周期,但对DMA控制器来说一般要2—5个内存周期(视逻辑线路的延迟而定)。因此,周期挪用的方法适用于I/O设备读写周期大于内存存储周期的情况。

DMA与CPU交替访问内存
如果CPU的工作周期比内存存取周期长很多,此时采用交替访内的方法可以使DMA传送和CPU同时发挥最高的效率。
这种传送方式的时间图如下:

此图是DMA与CPU交替访内的详细时间图.假设CPU工作周期为1.2us,内存存取周期小于0.6us,那么一个CPU周期可分为C1和C2两个分周期,其中C1专供DMA控制器访内,C2专供CPU访内。
这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分时制的。CPU和DMA控制器各自有自己的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。在C1周期中,如果DMA控制器有访内请求,可将地址、数据等信号送到总线上。在C2周期中,如CPU有访内请求,同样传送地址、数据等信号。事实上,对于总线,这是用C1,C2控制的一个多路转换器,这种总线控制权的转移几乎不需要什么时间,所以对DMA传送来讲效率是很高的。
这种传送方式又称为“透明的DMA”方式,其来由是这种DMA传送对CPU来说,如同透明的玻璃一般,没有任何感觉或影响。在透明的DMA方式下工作,CPU既不停止主程序的运行,也不进入等待状态,是一种高效率的工作方式。当然,相应的硬件逻辑也就更加复杂。

热心网友 时间:2022-06-22 03:25

可以正常往下执行程序,不用担心。
多核CPU超强的并行处理性能,使得多进程运算变得容易。DMA传输占用CPU资源不多,CPU的多个核心拿出一个核心的部分计算资源就能应付DMA传输的工作,其余的计算资源可以照常做其他的事情。
除非接下来的工作必须依赖尚未结束的DMA传输过来的数据。

热心网友 时间:2022-06-22 03:26

你的意思是在拷贝文件的时候还能同时打开别的程序?答案是当然可以,只是如果都在同一个磁盘读写操作,相互速度影响会比较大,反之则会小一些。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 主频: 2.4GHz前端总线频率: 1066MHz有什么关系 上古卷轴5有些mod下script文件夹下的文件放哪里? 上古卷轴5mod下载下来一般都有个data文件夹,游戏文件里面也有个data文件,说要把文件放在data下。 总线信号通常是各自独立发挥作用吗 这是上古卷轴5mod管理器的文件夹,请问下载的mod应该放哪里? 以内存数据的读出与写入为例详细描述数据总线.控制总线和地址总线的协调工作过程 上古卷轴5 mod存放目录 简述系统总线演化过程 你好上古卷轴5自带mod管理器在哪个位置啊 我是正版的 地址总线的操作过程 上古卷轴5mod放在那里? 总线制报警安装流程 上古卷轴5不一样的人生mod放在那个文件? 上古卷轴5自带的mod怎么用?把下载的美化mod放哪? 上古卷轴5有下列如图界面.请问自己装mod应放到哪个文件夹. 上古卷轴5下载的MOD要放到哪个文件夹里 上古卷轴5mod放哪 上古卷轴5mod压缩包要放在哪 上古卷轴5到底要怎么把mod放入文件夹? 上古卷轴5mod要放在游戏目录的 那里 单片机中的程序存储器和数据存储器可以有相同的地址,而单片机在对这两个区访问时却不会出?E windows启动过程中,识别总线并初始化PCI设备的流程和实现代码,谢谢! 关于CPU、芯片组、内存、硬盘它们之间的工作流程及工作频率配合和瓶颈问题 描述控制方式中采用集中式中式串行链接时,总线的分配过程是什么? IIC总线的C51程序中的个别指令的问题? 基于IIC总线的驱动程序流程图 为什么测试出CAN波形是一个脉冲,但通讯正常 每个月养老保险交1000,退休之后会开多少钱? 养老保险每个月交1000退休能领多少一个月 从30岁开始每月交1000元交30年的养老金到60岁能领多少钱? 一个月交1000的养老保险以后能领多少 养老保险每月交1000能领多少 农村养老保险交1000元30年领多少 现在每月交1000块钱社保退休以后每月能领多少钱 公司交的社保每月1000多,退休能拿多少钱 winrar 和winzip哪个好? 城镇居民社会养老保险每年交1000元,交31年,60周岁后每月能开多少钱 压缩软件WinRAR和WinZIP哪个更好? 手机上显示大写的星期几几月几号天气预报连在一起的现在怎么没有了呢怎么找回 天气是怎么看的!