I/O与主机交换信息有哪几种控制方式?各有何特点?


主机与I/O交换信息的控制方式有三种

  1. 程序查询方式
        这种方式的特点是主机与I/O串行工作。当CPU启动I/O后,时刻查询I/O是否准备好,若设备准备就绪,CPU便转入处理I//O与主机间传送信息的程序;若设备未做好准备,则CPU反复查询,“踏步”等待直到I/O准备就绪为止。这种方式CPU效率很低。

  2. 程序中断方式
        这种方式的特点是主机与I/O并行工作。当CPU启动I/O后,不必时刻查询I/O是否准备好,而是继续执行程序。当I/O准备就绪时,向CPU发中断请求信号,CPU在适当的时候响应I/O的中断请求,暂停现行程序为I/O服务。这种方式消除了“踏步”现象,提高了CPU的效率。

  3. DMA方式
        这种方式的特点是主机与I/O并行工作,主存和I/O之间有一条直接数据通路。CPU启动I/O后,不必查询I/O是否准备好,当I/O准备就绪后,发出DMA请求,此时CPU不直接参与I/O和主存间的信息交换,只是把外部总线 (地址线、数据线及有关控制线) 的使用权暂时交赋予DMA,仍然可以完成自身内部的操作 (如加法、移位等),故不必中断现行程序,只需暂停一个存取周期访存 (即周期挪用),CPU的效率更高。


程序中断方式中的周期挪用解释

     所谓周期挪用即在DMA传送方式中,当I/O设备没有DMA请求时,CPU按程序的要求访问主存;一旦I/O设备有DMA请求并与CPU访存发生冲突时,CPU要暂时一个存取周期访存,把总线控制权让给DMA。就好像I/O设备挪用了CPU的访存周期,故称为周期挪用或周期窃取。

设备提出DMA请求可能会遇到三种情况:
    1. I/O设备有DMA请求时,CPU正在进行自身的操作 (如乘法等),并不需要访存,即I/O访存和CPU访存没有冲突,故不存在周期挪用。
    2. I/O设备要求访存时,CPU也要求访存,此时发生冲突。在这种情况下,I/O设备的DMA请求优先 (因为I/O访存有时间要求,前一个I/O数据必须在下一个访存请求到来前存取完毕),即出现了周期挪用,CPU需延缓一个存取周期访存。
    3. I/O设备有DMA请求时,存储器本身正处于“忙”状态 (正在读或写),此时必须等待存取周期结束后才能进行I/O访存。


程序查询方式和程序中断方式都要由程序实现外围设备的输入输出,它们有什么不同?

    程序查询方式是用户在程序中安排一段输入输出程序,它由I/O指令、测试指令和转移指令组成。CPU一旦启动I/O后,就进入这段程序,时刻查询I/O准备的情况,若未准备就绪就踏步等待;若准备就绪就实现传送。在输入输出的全部过程中,CPU停止自身的操作

    程序中断方式虽也要用程序实现外部设备的输入、输出,但它只是以中断服务程序的形式插入到用户现行程序中。即CPU启动I/O后,继续自身的工作,不必查询I/O的状态。而I/O被启动后,便进入自身的准备阶段,当其准备就绪时,向CPU提出中断请求,此时若满足条件,CPU暂停现行程序,转入该设备的中断服务程序,在服务程序中实现数据的传送。


在DMA方式中有没有中断请求?为什么?

    在DMA方式中有中断请求。虽然DMA方式不靠中断请求传送信息,在主存和I/O接口之间有直接数据通路,但在一组数据传送完毕时,仍需向CPU提出中断请求,报告传送结束。此时CPU将中断现行程序,去做一些DMA结束处理工作,如测试传送过程是否出错,这种工作DMA接口是无法完成的,只有靠中断服务程序来处理。


程序查询、程序中断和DMA三种方式的综合性能

程序查询 程序中断 DMA
数据传送 依赖软件 依赖软件 依赖硬件
传送数据的基本单位
并行性 CPU与I/O串行 CPU与I/O并行
传输与主程序串行
CPU与I/O并行
传输与主程序并行
主动性 CPU 设备 设备
传输速度
经济性 费用低 介于查询和DMA之间 费用高
应用对象 低速 较低 高速成批传输


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM