DMA方式具备以下特色:
一、 外部设备的输入输出请求直接发给主储存器。
主存储器既能够被CPU访问,也能够被外围设备访问。所以,在主存储器中一般要有一个存储管理部件来为各类访问主存储器的申请排队,通常计算机系统把外围设备的访问申请安排在最高优先级。
二、 不须要作保存现场和恢复现场等工做,从而使DMA方式的工做速度大大加快。
因为在外围设备与主存储器之间传送数据不须要执行程序,所以,也不动用CPU中的数据寄存器和指令计数器等。
三、在DMA控制器中,除了须要设置数据缓冲寄存器、设备状态寄存器或控制寄存器以外,还要设置主存储器地址寄存器,设备地址寄存器和数据交换个数计数器。
外围设备与主存储器之间的整个数据交换过程所有要在硬件控制下完成。另外,因为外围设备通常是以字节为单位传送的,而主存储器是以字为单位访问的,所以,在DMA控制器中还要有从字节装配成字和从字拆卸成字节的硬件。
四、在DMA方式开始以前要对DMA控制器进行初始化,包括向DMA控制器传送主存缓冲区首地址、设备地址、交换的数据块的长度等,并启动设备开始工 做。在DMA方式结束以后,要向CPU申请中断,在中断服务程序中对主存储器中数据缓冲区进行后处理。若是须要继续传送数据的话,要再次对DMA控制器进 行初始化。
五、在DMA方式中,CPU不只可以与外围设备并行工做,并且整个数据的传送过程不须要CPU的干预。若是主存储器的频带宽度足够的话,外围设备的工做能够丝绝不影响CPU运行它自身的程序。
DMA方式的工做流程以下:
对于输入设备:
从输入介质上读一个字节或字到DMA控制器中的数据缓冲寄存器BD中,若是输入设备是面向字符的,则要把读入的字符装配成字。
若一个字尚未装配满,则返回到上面;若校验出错,则发中断申请;若一个字已经装配满,则将BD中的数据送入主存数据寄存器。
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,而且将BA中的地址增值至下一个字地址。
把DMA控制器内的数据交换个数计数器BC中的内容减"1"。
若BC中的内容为"0",则整个DMA数据传送过程所有结束,不然返回到最上面继续进行。
对于输出设备:
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,并启动主存储器,同时将BA中的地址增值至下一个字地址。
将主存储器数据寄存器中的数据送入DMA控制器的数据缓冲寄存器BD中。若是输出设备是面向字符的,则要把BD中的数据拆卸字符。
把BD中数据逐个字符(对于面向字符的设备)或整个字写到输出介质上。
把DMA控制器内的数据交换个数计数器BC中的内容减"1"。
若BC中的内容为"0",则整个DMA数据传送过程所有结束,不然返回到最上面继续进行。
目前使用的DMA方式实际上有以下三种:测试
一、周期窃取方式
在每一条指令执行结束时,CPU测试有没有DMA服务申请,若是有,则CPU进入一个DMA周期。在DMA周期中借用CPU完成上面所列出的DMA工做流程。包括数据和主存地址的传送,交换个数计数器中的内容减"1",主存地址的增值及一些测试判断等。
采用周期窃取方式时,主存储器能够不与外围设备直接相链接,而只与CPU链接,即仍然能够采用如图4.4那样的链接方式,由于外围设备与主存储器的数据交换与程序控制输入输出方式和中断输入输出方式同样都是要通过CPU的。
周期窃取方式与程序控制输入输出方式和中断输入输出方式的不一样处主要在:它不须要使用程序来完成数据的输入或输出,只是借用了一个CPU的周期来完成DMA流程。所以,其工做速度是很快的。
周期窃取方式的优势是硬件结构很简单,比较容易实现。缺点是在数据输入或输出过程种实际上占用了CPU的时间。spa
二、直接存取方式
这是一种真正的DMA方式。DMA控制器的数据传送申请不是发向CPU,而是直接发往主存储器。在获得主存储器的响应以后,整个DMA工做流程所有在DMA控制器中用硬件完成。
直接存取方式的优势与缺点正好与周期窃取方式相反。
目前的多数计算机系统均采用直接存取方式工做。工作流
三、数据块传送方式
在设备控制器中设置一个比较大的数据缓冲存储器,通常要可以存放下一个数据块,如在软磁盘存储器中一般设置512个字节的数据缓冲存储器。与设备介质之间的数据交换在数据缓冲存储器中进行。设备控制器与主存储器之间的数据交换以数据块为单位,并采用程序中断方式进行。
数据块传送方式实际上并非DMA方式,只是它在每次中断输入输出过程当中是以数据块为单位得到或发送数据的,这一点与上面两种DMA方式相同,所以,一般也把这种输入输出方式纳入DMA方式。
采用数据块传送方式的外围设备还有行式打印机,激光打印机,卡片阅读机,部分绘图仪等。class