图5.22 DMA传送过程
传送前的预处理是由CPU完成的。例如,CPU执行到读写磁盘的系统调用遇句时,就要启动DMA传送过程,向DMA卡送入设备识别信号,启动设备,测试设备运行状态,送入内存地址初值,传送数据的数据个数,DMA的功能控制信号等,这之后,CPU继续执行原来的程序,数据传送将在DMA卡控制下,在磁盘和主存储器之间自动(不用CPU干预,也不必通过CPU转手传递)完成。
数据传送是在DMA卡控制下自动完成的。以读磁盘为例,当磁盘准备好一个数据,它就向DMA卡发出请求信号,DMA卡向CPU发出请求总线使用权的信号,若总线空闲,总线控制器将送响应回答信号给DMA卡,DMA卡就取得了总线使用权,"0"
DMA请求触发器以撤消请求总线的信号,并启动数据传送过程,把内存地址计数器的内容送到地址总线,送一个回答信号给设备,设备就可以把准备好一个数据送到数据总线,DMA向内存发写命令,从而完成一次数据传送。在这个过程中,DMA还要完成对内存地址计数器和数据数量计数器的计数操作,并通过检查数据数量计数器是否为0,决定要启动下一次传送,还是结束本次全部数据的传送过程。
传送结束处理,是由数据数量计数器的值为0引发出来的。数据数量计数器的值为0时,DMA将向CPU发出中断请求信号,CPU响应这一请求后,转入中断服务程序,检查是结束数据传送(例如相应一个磁盘读的系统调用语句全部完成),或向DMA发去新的操作命令,以便继续执行该系统调用语句中尚未完成的部分的传送操作。
|
|