苏泽
“弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家
目录
1. DMA基本概念
2. DMA传送过程
易错点
DMA控制器操作流程
3. DMA传送方式
这是单总线的结果 (CPU说了算 所以不会产生于CPU的冲突)
这是三总线的结构 (也就是主存下面另外接了一条线到DMA所以 有可能于CPU发生冲突)
5. DMA的组成
6. DMA与其他方式的比较
7. DMA的优缺点
8. DMA的应用场景
9. DMA的中断处理
10. DMA的实现方式
1. DMA基本概念
- DMA(直接内存访问)是一种硬件实现的数据传输方式,允许外围设备直接与主存交换数据,而不需要CPU的干预。
- DMA方式的基本单位是数据块,数据在I/O设备和内存之间直接传输。
2. DMA传送过程
- 预处理:CPU完成一些必要的工作,如测试状态、启动设备等,然后继续执行其他任务。
- 数据传送:DMA设备准备好后,会主动向DMA控制器(DMAC)发出DMA请求,DMAC向CPU发出总线请求。
- 数据传送后处理:数据传送满一个块后,DMAC向CPU发出中断请求,CPU执行中断程序,进行数据校验、测试传送过程等。
易错点
DMA控制器操作流程
-
CPU响应DMA请求(传送前)
- 当DMA控制器发出总线请求后,CPU响应此请求,并发出总线响应信号。
-
接管总线控制权(传送前)
- CPU接管系统总线控制权,准备进入DMA操作周期。
-
DMA操作周期
- CPU进入DMA操作周期,此时DMA控制器可以独立进行数据传输。
-
数据传送方向与控制信号
- DMA控制器规定数据在主存和外设之间的传送方向。
- 发出读写等控制信号,以执行数据传送操作。
-
数据传送完成
- 数据传送完成后,DMA控制器将向CPU报告操作的结束。
-
操作结束报告 (传送后)
- DMA操作结束后,DMA控制器会通知CPU,以便CPU可以继续执行其他任务。
3. DMA传送方式
这是单总线的结果 (CPU说了算 所以不会产生于CPU的冲突)
这是三总线的结构 (也就是主存下面另外接了一条线到DMA所以 有可能于CPU发生冲突)
-
停止CPU访问主存
- 目的:在DMA传输期间,完全控制主存,避免与CPU的访问冲突。
- 操作:在DMA传输期间,暂停CPU对主存的访问。
- 优点:
- 控制简单,易于实现。
- DMA可以完全控制主存,提高数据传输效率。
- 缺点:
- CPU在传输期间不执行程序,导致CPU资源未被充分利用。
-
DMA与CPU交替访存
- 目的:允许CPU和DMA控制器交替访问主存,提高资源利用率。
- 操作:
- 将CPU周期分为两个部分,C1周期专供CPU访存,C2周期专供DMA访存。
- DMA控制器和CPU交替进行访存操作,无需申请总线使用权。
- 优点:
- 有效利用CPU和DMA资源,提高系统效率。
- 缺点:
- 硬件逻辑更为复杂,需要精确控制访问时间。
-
周期挪用(周期窃取)
- 目的:在CPU未使用总线时,允许DMA控制器访问主存。
- 操作:
- DMA控制器检测CPU的访存周期,当CPU不访存时,DMA控制器利用这个周期进行数据传输。
- 如果CPU和DMA同时请求访存,根据优先级决定谁先访问主存。
- 优点:
- 最大限度减少对CPU性能的影响,提高主存的利用率。
- 缺点:
- 实现较为复杂,需要高级的硬件支持来检测和响应访问请求。
- DMA请求:表示要向主存传送一个字的数据。
- DMA中断请求:表示一整块的数据已经传送完成。
5. DMA的组成
- 主存地址计数器:存放要交换的主存地址。
- 传送长度计数器:记录传送数据的长度。
- 数据缓存寄存器:暂存每次传送的数据。
- DMA请求触发器:I/O设备准备好数据后使触发器置位。
- 控制/状态逻辑:完成中断机构,数据块传送完毕后触发中断。
6. DMA与其他方式的比较
- 中断驱动方式:I/O设备主动打断CPU运行请求服务,但每个数据传输需经过CPU。
- 通道控制方式:专门负责输入/输出的处理机,进一步减少CPU干预,实现并行操作。
7. DMA的优缺点
- 优点:减少了CPU的干预,提高了数据传输效率。
- 缺点:在数据块传送的开始和结束时需要CPU干预。
8. DMA的应用场景
- DMA适用于大量数据的快速传输,如磁盘读写操作。
9. DMA的中断处理
- 中断服务程序中,CPU需要处理数据校验、传送过程测试等任务,并决定是否继续使用DMA传送。
10. DMA的实现方式
- DMA的实现依赖于硬件电路,不需要程序干预,是一种纯硬件实现的数据传输方式。
另外,利用了工作之余的一点点时间,整理了一套考研408的知识图谱,
我根据这一套知识图谱打造了这样一个408知识图谱问答系统
里面的每一个回答都是根据考研408的考点回复的
目前暂时只接入了微信,如果大家对这个问答系统感兴趣的话可以在我的主页里找到我的微信号
找我拉进测试群免费体验哦