5.5 DMA方式及接口
1、定义
DMA,即直接存储器访问(Direct Memory Access),它指这样一种传送控制方式:依靠硬件直接在主存与外围设备(I/O)之间进行简单、批量、快速的数据传送,在传送过程中不需要CPU的干预。传送结束以后,通过中断的方式通知CPU。
1) 传送发生在I/O与主存之间;
2) 由DMA控制器来控制传送,DMA控制器接管总线权,传送完毕再将总线权交还CPU
3) 只要CPU不访存, DMA操作与CPU可并行操作
4) 传送前和传送后需要CPU程序干预。
2、实质与特点
1)实质
程序暂停: 1.时间:一条指令完整结束时暂停,保证程序的完整性。
2.方法:主程序暂停(不需保护断点、现场)
2)特点:随机性
(1)响应随机请求
(2)一般不影响CPU程序的执行,仅占用总线、无程序切换
(3)大批量数据的简单传送
【典型的应用场合】
(1)主存与高速I/O设备之间的简单数据传送。
(2)大批量数据采集系统
(3)动态存储器(DRAM)的自动刷新
eg:
如:DRAM的刷新操作、磁盘读写。 DMA传送是直接依靠硬件实现的,可用于快速的数据直传,传送过程无需CPU参与。也正是由于这点,DMA方式不能处理复杂事态。因此,在某些复杂场合常将DMA与程序中断方式相结合,二者互为补充。典型的例子是磁盘调用,磁盘读写采用DMA方式进行数据传送,而对寻道正确性的判别、批量传送结束后的处理,则采用中断方式。
3、DMA的数据传送操作方式
①单字传送
DMA请求获得批准后,CPU让出一个总线周期用于字或字节的传送,再回收并重新判断下一个周期的总线控制权,也称为周期挪用或窃取。
②成组连续传送方式
DMA被批准后,连续占用若干个总线周期,成组连续批量地传送,结束后将总线的控制权交回给CPU。
4、DMA硬件系统的组织
DMA方式控制I/O设备与主存数据直传,应明确:
(1)传送方向、(2)设备寻址信息、(3)主存缓冲区首地址、(4)传送的数据量,等等。
早期:由CPU和DMA接口协同控制;
现代:设置专用的DMA控制器
5、DMA初始化工作的步骤
1.向接口送出I/O设备的寻址信息;
2.向DMA控制器送出控制字,如传送方向;
3.向DMA控制器送出主存缓冲区首址;
4.向DMA控制器送出传送的数据量;
6、硬件设置
7.DMA流程
DMA三个阶段:
1.程序准备:主程序实现初始化
2.DMA传送:硬件实现 M<-->I/O
3.结束处理:中断处理程序判断传送的正误。
应用场合:用于高速、简单、批量数据传送。
DMA与中断的相同点:
能响应随机请求; 可并行操作(CPU与外设)。
DMA与中断的不同点:
中 断:
① 用程序实现中、低速I/O传送; 能处理复杂事件;
② 一条指令结束时响应请求。
③ 程序切换
DMA:
① 用硬件实现高速、简单I/O传送; 一个总线周期结束时响应请求。
② 总线权切换
③ CPU不参与数据传送
8.DMA控制器与接口的连接
设计DMA控制器与设备接口的连接方案,需考虑以下几个方面:
① DMA控制器与设备接口是否分离?
② 数据传送经过DMA控制器,还是接口直接经数据总线与主存交互?
③ 如DMA控制器连接多台设备,采取什么连接方式?
④ 有多个DMA控制器,采用怎样的DMA请求方式?
由此可以采用后述几种设计方案:
① 单通道DMA控制器; ② 选择型DMA控制器; ③ 多路型DMA控制器;
(1)DMA控制器功能
①接收初始化信息(传送方向、主存首址、交换量)---初始化
②接收外设DMA请求,判优,向CPU申请总线----传送前
③接管总线权,发地址、读/写命令。---传送期间
(2)接口功能
①接收初始化信息(外设寻址信息)----初始化
②向DMA控制器发请求。-------传送前,外设准备好
③传送数据。-----传送期间
9.DMA模式的磁盘接口(磁盘适配器)
1、系统连接方式
两级DMA控制器:
主机板上DMA控制器:全机共用的DMA
适配器内DMA控制器:适配器<------>驱动器
2、硬盘适配器粗框
1)处理机接口(面向系统总线一侧)
EPROM控制逻辑:放有硬盘驱动程序(系统自检时被引入系统管理之下)。
I/O端口控制逻辑:接收CPU送来的端口地址、读/写命令,访问处理机接口中的相应寄存器。
2)智能主控器(控制核心)
微处理器:执行硬盘控制程序。
RAM:扇区缓存(存放二个扇区数据)。
ROM:存放硬盘控制程序。
DMA控制器:控制适配器与驱动器之间的数传。
3)驱动器接口(面向设备一侧)
驱动器控制逻辑:向驱动器送出控制命令(驱动器选择、寻道方向选择、读、写……)。
驱动器状态逻辑:接收驱动器状态信息 (选中、就绪、寻道完成……)
3、硬盘调用过程(DMA方式)
1) CPU向适配器送出寻址信息(如驱动器号、圆柱面号、磁头号、起始扇区号等; 向DMA控制器送出传送方向、主存首址、交换量等信息。
2) 适配器启动寻道, 并用中断方式判寻道是否正确。
3) 适配器准备好
4) CPU响应, 由DMA控制器控制总线, 实现传送。
5) 批量传送完毕, 适配器申请中断。
6) CPU响应, 作善后处理。(即: 一次DMA传送以中断方式结束, 如在服务程序中进行出错判断, 如果出错, 进行相应处理等)
注: 两级DMA控制器所起的作用:
1.直接连接在系统总线上的DMA控制器,控制适配器缓冲区与内存之间的数据交换
2.适配器中的DMA控制器,控制适配器缓冲驱与驱动器之间的数据交换
理论篇完结撒花 !!!!!