• 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以一定的周期按照次序去查询每一个外设,看它是否有数据输入或输出   。

               

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

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

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

        ②中断方式: 局部并行

               

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

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

         ③ dma方式:完全并行

              

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

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

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

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

    其效率比较图如下:

       

  • 相关阅读:
    json 拼二维json数组
    lnmp 环境搭建
    lnmp git ruby sass 安装
    制定clone的用户名
    git branch 重命名
    sql命令创建数据库
    layerui
    弹出确认框,打开新窗口
    Ajax请求小结
    .net core注入服务
  • 原文地址:https://www.cnblogs.com/jinhengyu/p/8093773.html
Copyright © 2020-2023  润新知