I/O的控制方式——查询,中断,dma

早期,I/O串行,查询方式。
发展,I/O并行,两种方式其一是中断方式,其二是dma方式,使得外部设备能直接与主存储器信息交换,减轻了cpu的工作量。
技术继续发展,出现通道结构,实质上为高性能的dma控制器(微处理器,dma方式的进化),目的在于让I/O自己完成输入输出。
技术再发展,出现I/O处理机,实质上为更高性能的处理器(dma再进化),成为小型的cpu系统,具有自己的寄存器,内存,指令集。


注意区别,I/O指令,是属于中央处理器的指令集,比如8086的in,out指令。
                通道指令,通道自身微处理器的指令。编写控制通道的输入输出程序,是由操作系统的开发者完成的。现代的I/O系统, 遇到中央处理器的I/O指令,不象早期那样直接去控制输出与输入,而是去调用通道程序。
换句话说,现代计算机系统中,cpu的I/O指令仅仅发了一个命令信号,而实际工作是由通道(微处理器)自己的程序来完成的。
      
端口概念:接口当中的寄存器。


i/o与主机的联系:
1.  i/o设备编址方式

      ①统一编址: 在主存地址中划出一部分作为端口地址,这叫I/O映射(由硬件完成)。

                           优点可以简化指令集,用一个指令既可以与主存通信,也可以与i/o端口通信。

                           这种方式是通过划分地址的不同,来区分访问主存与I/O。


      ②不统一编址: x86架构,有专用的I/O指令,比如与主存通信是move,I/O通信是in,out。




2. i/o设备控制方式
    ①查询方式: 又分为传统查询(串行),cpu踏步等待。

                       轮询方式(局部并行),cpu以一定的周期按照次序去查询每一个外设,看它是否有数据输入或输出   。

           I/O的控制方式——查询,中断,dma_第1张图片

          就好像我们在网上进行了购物,传统查询方式工作机制是:从付款开始后,我们就站在小区门口等待,一直到快递公司把货物送到手上,这个期间什么事情都不做。

          显然,传统查询太蠢,于是改进为轮询方式,工作机制是:从付款开始后,我们每隔一段时间(比如4小时),去小区门口查看一下,如果货物到了就拿取,没到的话继续回来做其他事情。

          比起传统查询,轮询方式的效率提高多了。

    ②中断方式: 局部并行

           I/O的控制方式——查询,中断,dma_第2张图片

          中断方式比起轮询来说,又改进了一步,工作机制是:从付款开始后,我们正常做其他事情,快递公司会主动给我们打电话(中断信号),报告货物已到,接到电话后我们暂停当前的工作,去小区门口领取货物,然后回来接着做剩余的工作。

          显然,日常生活中,大部分人使用的就是中断方式。

     ③ dma方式:完全并行

          I/O的控制方式——查询,中断,dma_第3张图片

          dma是中断方式的更好改进,工作机制是:我们命令秘书去网上购买商品,同时让秘书负责商品的收取,整个过程基本上不需要自己参与,可以完全专注于当前工作。

——————————————————————————————————————

无论是传统查询,轮询,以及中断,都需要cpu自己完成额外工作。
而dma彻底解放了cpu与I/O通信的额外负担。
dma方式下cpu让出了总线(地址总线,数据总线,控制总线),暂时由dma控制器来接管总线,控制器就能直接完成i/o设备与主存的数据交换。

如果恰好cpu此时需要访问主存,那它不得不暂停一个存储周期(不是指令周期),如果只需要访问寄存器或者cache,那cpu就不会有任何停顿。

其效率比较图如下:

   I/O的控制方式——查询,中断,dma_第4张图片


你可能感兴趣的:(计算机系统概论)