• 【计组】I/O系统


    信息交换的控制方式

    ※程序查询方式

    别名:程序控制I/O方式

    这是一种最简单、最经济的I/O 方式,只需要很少的硬件。

    通常在微处理器或微型机中使用。

    在该方式下,数据在CPU和外围设备之间的传送完全靠计算机程序控制【是在CPU主动控制下进行的】
    当执行I/O时,CPU暂停执行主程序,转去执行I/O的服务程序,根据服务程序中的I/O指令进行数据传送。

    设备编址

    根据其结构特点,外围设备有两种不同的编址方法:

    • 统一编址法
    • 单独编址法

    I/O统一编址

    一个I/O端口等同于一个存储器单元
    是将I/O设备中的控制寄存器、数据寄存器、状态寄存器等也和内存单元一样看待,将它们和内存单元一起编排地址。
    优点:

    • 微机的读写控制逻辑较为简单
    • 外设数目或I/O寄存器数目几乎不受限制
    • 指令系统中不设置专用的I/O指令,用功能很强的访存指令来访问I/O端口,通过地址来区分访问的是存储器还是I/O端口

    缺点:

    • I/O端口占用部分主存空间,可用主存空间减小(主存空间变小
    • 访存指令较长,执行速度较慢(执行指令速度慢
    • I/O端口地址译码电路复杂,译码时间较长(译码时间长

    I/O独立编址

    I/O端口地址空间与存储器地址空间相互独立
    指令系统中设置了专用的I/O指令,用I/O指令来访问I/O端口,用访存指令来访问存储器。
    因此,虽然I/O端口地址与存储器地址有部分重叠,但通过指令可以区分。

    优点:

    • I/O端口地址不占用存储器地址空间(不占存储器地址)
    • I/O端口数量不多,占用地址线少,地址译码简单,速度较快(译码速度快)
    • 使用专用I/O命令(IN/OUT),指令短执行速度快,可读性强。(执行速度快)
      缺点:
    • 专用I/O指令增加指令系统复杂性,且I/O指令类型少,程序设计灵活性较差
    • 要求处理器提供两组控制信号,增加了控制逻辑的复杂性

    程序查询I/O方式

    基本思想:
    CPU要执行一段I/O程序,则用其中一条指令查询设备状态,如果设备的数据传送没有准备好,就重复执行询问指令,一直等到设备准备好为止。

    程序查询方式是利用程序控制来实现CPU和I/O设备之间的数据传送的方法。
    程序执行的动作如下:

    1. 先向I/O设备中发送状态字请求进行数据传送
    2. 从I/O接口中读入状态字
    3. 检查状态字中的标志,看看数据交换是否能进行
    4. 假如这个设备没有准备就绪,则重复进行第2第3步,一直到这个设备准备好交换数据,发出准备就绪信号“Ready”为止
    5. CPU从I/O接口的数据缓冲寄存器输入数据,或者将数据从CPU输出至接口的数据缓冲寄存器中。与此同时,CPU将接口中的状态标志复位
      在这里插入图片描述
      这种方式的缺点:
      当程序进入循环时,CPU只能踏步等待,不能处理其他任务。

    为此作出改进:
    CPU在执行主程序的过程中可周期性调用各I/O设备查询子程序依次测试各I/O设备的状态触发器“Ready”
    如果某设备的Ready为“0”,则依次测试下一个设备。
    程序查询流程图

    设备服务子程序的主要功能:

    1. 实现数据传送【输入时,由I/O指令将设备的数据送到CPU的某寄存器中,再由访内指令把寄存器中的数据存入内存某单元;输出时,其过程正好相反。
    2. 修改内存地址,为下一次数据传送做准备
    3. 修改传送字节数,以便修改传送长度
    4. 进行状态分析或其他控制功能

    执行完某设备的服务子程序后,接着查询下一个设备。
    被查询的设备的先后次序由询问程序决定。
    也可以用改变程序的办法来改变询问次序。

    程序查询方式的优点:简单、经济,CPU 和I/O设备接口只需配备少量的硬设备。
    缺点:系统效率低,为了询问I/O设备是否有数据传送,CPU要周期性地停止主程序运行而转向查询子程序。如果有很多设备,查询程序所花费的时间是相当长的。

    程序查询方式的接口

    程序查询方式的接口电路包括:
    设备选择电路、数据缓冲寄存器、设备状态位和有关逻辑部件等。
    有的计算机采用统一编址,访问接口中的数据缓冲寄存器和设备状态字寄存器就像访问主存的存储单元一样。
    有的计算机不采用统一编址,也没有设备状态字寄存器,设备状态用分散的触发器表示。

    1.设备选择电路

    对于接到总线上的每个设备,已预先给定了设备地址码。
    CPU执行I/O指令时,需要把指令中的设备地址送到地址总线上,用以指示CPU要选择的设备。
    每个设备接口电路都有一个设备选择电路,用它判别地址总线上呼叫的设备是不是本设备。
    如果是,则本设备就进入工作状态,否则不予理睬。
    设备选择电路实际上是设备地址的译码器。

    2.数据缓冲寄存器

    当进行输入操作时,用数据缓冲寄存器来存放从I/O设备读出的数据,然后送往CPU;
    当进行输出操作时,用数据缓冲寄存器来存放CPU送来的数据,以便需要时经过I/O设备输出。

    3.设备状态位

    设备状态位是接口中的标志触发器,如“忙”、“准备就绪”、“错误”等,用来标志设备的工作状态,以便接口对外设进行监视。
    一旦CPU用程序询问I/O设备时,就可将状态位信息取至CPU进行分析。

    ※程序中断方式

    中断的基本概念

    它不仅在I/O过程中,而且在多道程序、分时操作、实时处理、人机联系、事故处理、程序的监视和跟踪、目态程序和操作系统的联系以及多处理机系统中各机的联系等方面都起着重要作用。

    所谓中断是指计算机中任何非寻常的或非预期的急需处理的事件引起CPU暂时中断现行程序的执行,而转向运行另一服务程序,去处理这些事件,等处理完后又返回原程序,这一整个执行过程。

    1.CPU与I/O设备并行工作

    引入中断系统后,可实现CPU与I/O设备的并行运行,大大提高了计算机的效率。

    程序中断方式工作原理:
    在外设准备数据时, CPU执行与传送数据无关的工作,外设在准备好数据后,主动向CPU发送一个中断请求,当CPU执行完当前指令,停止当前程序的执行,自动转向中断服务程序,在中断服务程序中,完成一个数据的传送,之后中断返回至原来的断点处,继续执行。

    **特点:**在外设准备数据时,CPU与外设并行工作,CPU效率有所提高,并且CPU可以同时被多个外设占用。
    要求:接口中需要中断控制逻辑支持。
    应用:适用于中低速设备。

    2.提高了机器的可靠性

    在计算机工作时,当运行的程序发生错误,或者硬设备出现某些故障时,机器中断系统可以自动进行处理,避免某些偶然故障引起的计算错误或停机,提高了机器的可靠性。

    3.便于实现人机联系

    在计算机工作过程中,人要随机地干预机器,如抽查计算的中间结果、了解机器的工作状态、给机器下达临时性的命令等。
    在没有中断系统的机器里,这些工作几乎是无法完成的。
    利用中断系统实现人机通信是很方便、很有效的。

    4.实现多道程序

    计算机实现多道程序运行是提高机器效率的有效手段。多道程序的切换运行需借助于中断系统。
    在一道程序的运行中,可以由I/O中断系统切换到另外一道程序运行,也可以通过分配给每道程序一个固定时间片,利用时钟定时发送中断进行程序切换。

    5.实现实时处理

    所谓实时处理,是指在某个事件或现象出现时及时地进行处理,而不是集中起来再进行批处理。

    6.实现目态程序和操作系统的联系

    在现代计算机中,用户程序往往可以安排一条“访问管理程序”指令来调用操作系统的管理程序,这种调用是通过中断来实现的。
    通常称机器在执行用户程序时为目态,称机器执行管理程序时为管态。
    通过中断可以实现目态和管态之间的变换。

    7.多处理机系统各处理机间的联系

    在多处理机系统中,处理机和处理机间的信息交流和任务切换都是通过中断来实现的。

    CPU响应中断的条件

    CPU要响应中断必须满足如下3个条件:

    1. 中断源有中断请求
    2. CPU允许接受中断请求
    3. 一般情况下,都要等到一条指令执行完毕后才能响应中断,除非遇到特殊的长指令才允许中途打断它们。

    中断源:引起中断的事件,或者发出中断请求的来源
    中断响应:CPU停止执行现行程序,转去处理中断请求
    开中断:CPU进入可中断方式,即允许接受中断请求
    关中断(不可中断):CPU处于不可中断状态

    中断请求、中断允许、禁止和中断的响应都是由硬件实现的。

    1.中断源的种类

    ① 由外围设备引起的中断,要求CPU介入I/O操作。例如,慢速设备的缓冲寄存器准备好接收或发送数据;信息块传送的前、后处理;设备的启动或非数据控制动作(如磁带、磁盘定位)的完成;I/O的任一环节出错等。
    ② 由运算器产生的中断。
    ③ 由存储器产生的中断。
    ④ 控制器产生的中断。
    ⑤ 过程控制产生的中断。
    ⑥ 时钟定时中断。
    ⑦ 电源故障中断。

    根据中断源的类别,可以把中断分为内中断和外中断
    内中断:发生在主机内部的中断
    内中断有强迫中断和自愿中断两种。
    强迫中断产生的原因有硬件故障和软件出错等。
    强迫中断是在CPU没有事先预料的情况下发生的,此时CPU不得不停下现行的工作。
    自愿中断是出于计算机系统管理的需要,自愿地进入中断。
    在这里插入图片描述

    2.中断源的建立

    为了记录中断事件是否发生,利用了具有存储功能的触发器,一般称为中断触发器
    当一个中断源有中断请求时,其相应的中断触发器置成“1”状态。此时,该中断源向CPU发出中断请求信号。
    多位中断触发器构成一个中断寄存器,其中每一位对应一种中断请求源。这每一位称为一个中断位,中断寄存器的内容称为中断字中断码
    CPU在进行中断处理时,根据中断字中断位确定中断源,以便用相应的服务程序来处理。

    3.中断的分级与中断优先权

    在设计中断系统时,要把全部中断源按中断性质处理的轻重缓急进行排队并给予优先权。
    所谓优先权是指有多个中断同时发生时,对中断响应的优先次序。

    4.禁止中断和中断屏蔽

    (1) 禁止中断

    禁止中断:产生中断源后,由于某种条件的存在,CPU不能中止现行程序的执行
    一般在CPU内部设有一个“中断允许”触发器。
    只有该触发器置“1”状态,才允许中断源等待CPU响应;如果该触发器被清除,则不允许所有中断源申请中断。
    前者称为允许中断,后者称为禁止中断。
    “中断允许”触发器通过“开中断”、“关中断”指令来置位或复位。

    (2) 中断屏蔽

    当产生中断请求后,用程序方式有选择地封锁部分中断,而允许其余的中断仍得到响应,称为中断屏蔽。
    实现方法是:
    为每一个中断源设置一个中断屏蔽触发器来屏蔽该设备的中断请求。
    具体来说,用程序方法将该触发器置“1”,则对应的设备中断被封锁,若将其置“0”,则允许该设备的中断请求得到响应。

    中断处理

    一旦CPU响应中断的条件得到满足,CPU便开始响应中断,转入中断服务程序,进行中断处理。
    按照中断处理方式可以把中断分为两种:
    程序中断
    简单中断

    程序中断

    程序中断(中断):主机在响应中断请求后,通过执行一段服务程序来处理有关事项
    这种方式要求CPU响应中断后,暂停原程序的执行,并将断点(主程序返回地址)和现场情况(如程序状态字以及有关寄存器内容)保存起来,然后转入中断服务程序的执行。
    程序中断主要用于中、慢速I/O设备的数据传送以及要求进行复杂处理的场合。

    简单中断(DMA)

    在DMA方式的 I/O过程中,主机响应中断后不要执行服务程序,而是让出一个或几个存取周期供I/O设备与主存直接交换数据
    此时,CPU可以暂停运行,也可以执行非访问内存储器操作。
    这种中断只是暂停一个或几个存取周期,不破坏被中断的程序现场,因此,不需要进行现场保护工作。这种中断称为简单中断,一般称为DMA。

    中断处理步骤

    在这里插入图片描述
    关中断。
    进入不可再次响应中断的状态。因为接下去要保存断点,保存现场。
    在保存现场过程中,即使有更高级的中断源申请中断,CPU也不应该响应,否则,如果把现场保存不完整,在中断服务程序结束之后,也就不能正确地恢复现场并继续执行现行程序了。

    保存断点和现场。
    为了在中断处理结束后能正确地返回到中断点,在响应中断时,必须把当前的程序计数器PC中的内容(即断点)保存起来。
    对现场信息的处理有两种方式:
    一种是由硬件对现场信息进行保存和恢复;
    另一种是由软件即中断服务程序对现场信息保存和恢复。

    对于由硬件保存现场信息的方式,各种不同的机器有不同的方案。
    有的机器把断点保存在主存固定的单元,中断屏蔽码也保存在固定单元中;
    有的机器则不然,它在每次响应中断后把CPU中程序状态字和指令计数器内容相继压入堆栈,再从指定的两个主存单元分别取出新的指令计数器内容和CPU中程序状态字来代替,称为交换新、旧状态字方式。

    判别中断条件,转向中断服务程序。
    在多个中断条件同时请求中断的情况下,本次实际响应的只能是优先权最高的那个中断源,所以,需进一步判别中断条件,并转入相应的中断服务程序入口。

    开中断。
    因为接下去就要执行中断服务程序,因此开中断允许更高级中断请求得到响应,实现中断嵌套。

    执行中断服务程序。

    退出中断。
    在退出时,又应进入不可中断状态,即关中断,恢复现场,恢复断点,然后开中断,返回原程序执行

    判别中断条件

    如何判别中断条件,确定中断源,并转入被响应的中断服务程序入口,是中断处理首先要解决的问题。
    大致有3种不同的方法。
    查询法
    串行排队链法和向量中断
    独立请求法

    (1) 查询法

    这是最简单的实现方法。每一个中断源都附带一个标志,该标志置位代表相应中断源请求中断。
    因此,判别中断条件只需用测试指令按一定优先次序检查这些标志,先遇到的第一个“1”标志即优先得到服务,在此之前,遇到“0”标志均跳过而继续检查下一个。
    这种软件查询方法适用于低速和中速设备。
    它的优点:是中断条件标志的优先级可用程序任意改变,灵活性好。
    缺点:是设备多时速度太慢。

    (2)串行排队链法与向量中断

    串行排队链法是由硬件实现的具有公共请求线的判优选择方式

    (3) 独立请求法

    独立请求方式优先排队线路如图所示。
    其中每个中断请求信号保存在“中断请求”触发器中,经“中断屏蔽”触发器控制后,产生来自中断请求触发器的请求信号IR1’、IR2’、IR3’、IR4’。而IR1、IR2、IR3、IR4是经过优先排队后送给CPU的中断请求信号。
    IR1′的优先权最高,IR2’、IR3’、IR4’的优先权依次降低。
    具有较高优先权的中断请求自动封锁比它优先权低的所有中断请求。
    编码电路根据排队的中断源输出信号IRi产生一个预定的地址码,转向中断服务程序入口地址。
    这种方法的优点是速度快,但是连线多,逻辑线路复杂。
    在这里插入图片描述

    ※单级中断和多级中断

    当CPU正在处理低优先级设备时,出现了高优先级设备的中断请求,这时如何处理?(2种)

    1.单级中断

    单级中断系统是中断结构中最基本的形式。
    在单级中断系统中,所有的中断源都属于同一级,所有中断源触发器排成一行,其优先次序是离CPU近的优先权高。
    当CPU响应某一中断请求时,执行该中断源的中断服务程序不允许其他中断源打断中断服务程序,即使优先权比它高的中断源也不允许。只有该中断服务程序执行完毕后,才能响应其他中断。
    在这里插入图片描述

    2.多级中断

    多级中断系统是指计算机系统中有相当多的中断源,根据各中断事件的轻重缓急程度不同而分成若干级别,每一中断级分配给一个优先权。
    一般说来,优先权高的中断级可以打断优先权低的中断服务程序,以程序嵌套方式进行工作。

    如图所示,三级中断的优先权高于二级的,而二级中断的优先权又高于一级的。
    在这里插入图片描述
    例题:
    下图所示的是一个二维的中断系统,请问:
    ① 在中断情况下,CPU和设备的优先级如何考虑?请按降序排列各设备的中断优先级。
    ② 若CPU现正执行设备B的中断服务程序,则IM2、IM1、IM0的状态是什么?如果CPU正执行设备D的中断服务程序,则IM2、IM1、IM0的状态又是什么?
    ③ 每一级的IM能否对某个优先级的个别设备单独进行屏蔽?如果不能,则采取什么办法才能达到目的?
    ④ 假如要求设备C一提出中断请求,CPU就立即进行响应,如何调整才能满足此要求?
    在这里插入图片描述
    解:
    ① 在中断情况下,CPU的优先级最低,各设备的优先次序是:A—B—C—D—E—F—G—H—I—CPU。
    ② 执行设备B的中断服务程序时,IM2 、IM1 、IM0=111;执行设备D的中断服务程序时,IM2 、IM1、IM0=011。
    ③ 每一级的IM标志不能对某个优先级的个别设备进行单独屏蔽,可将接口中的EI(中断允许)标志清“0”,它禁止设备发出中断请求。
    ④ 要使设备C的中断请求及时得到响应,可将设备C从第2级取出来,单独放在第3级上,使第3级的优先级最高,即令IM3=0。

    程序中断方式的基本接口

    程序中断由外设接口的状态CPU两方面来控制。
    在接口方面,有决定是否向CPU发出中断请求的机构,主要是接口中的“准备就绪”标志(RD)和“允许中断”标志(EI)两个触发器。
    在CPU方面,有决定是否受理中断请求的机构,主要是“中断请求”标志(IR)和“中断屏蔽”标志(IM)两个触发器。
    上述4个标志触发器的具体功能如下:
    准备就绪的标志(RD)
    一旦设备做好一次数据的接收或发送工作,便发出一个设备动作完毕信号,使RD标志为“1”,它就是程序查询方式中的Ready (就绪)标志。
    在中断方式中,该标志用作为中断源触发器,简称中断触发器。
    允许中断触发器(EI)
    可以用程序指令来置位。EI 为“1”时,某设备可以向CPU发出中断请求;EI为“0”时,不能向CPU发出中断请求,这意味着某中断的中断请求被禁止。
    设置EI标志的目的就是通过程序来控制是否允许某设备发出中断请求。
    中断请求触发器(IR)
    它暂存中断请求线上由设备发出的中断请求信号。
    当IR标志为“1”时,表示设备发出了中断请求。
    中断屏蔽触发器(IM)
    CPU是否受理中断的标志。
    IM标志为“0”时,CPU可以受理外界的中断请求,反之,IM标志为“1”时,CPU不受理外界的中断请求。

    在这里插入图片描述

    上图中,标号①~⑩表示由某一外设输入数据的控制过程。
    ① 表示由程序启动外设,将该外设接口的“忙”标志BS置“1”,“准备就绪”标志RD清“0”;
    ② 表示接口向外设发出启动信号;
    ③ 表示数据由外设传送到接口的缓冲寄存器;
    ④ 表示当设备动作结束或缓冲寄存器数据填满时,设备向接口送出一控制信号,将数据“准备就绪”标志RD置“1”;
    ⑤ 表示允许中断标志EI为“1”时,接口向CPU发出中断请求信号;
    ⑥ 表示在一条指令执行末尾CPU检查中断请求线,将中断请求线的请求信号送到中断请求触发器IR;
    ⑦ 表示如果中断屏蔽触发器IM为“0”,则CPU在一条指令结束后受理外设的中断请求,向外设发出响应中断信号并关闭中断;
    ⑧ 表示转向该设备的中断服务程序入口;
    ⑨ 表示中断服务程序用输入指令把接口中数据缓冲寄存器的数据读至CPU中的累加器或寄存器中;
    ⑩ 表示CPU发出控制信号C将接口中的BS和RD标志复位,一次中断处理结束

    ※DMA方式

    DMA方式的基本概念与传送方式

    1. DMA方式的基本概念

    在这种方式中,DMA控制器从CPU中接管了对总线的控制,数据传送不经过CPU,而直接在内存和I/O设备之间进行
    DMA方式一般用于高速传送成组数据的场合。DMA控制器种类很多,但各种DMA控制器至少能执行以下一些基本操作:
    ① 从外围设备接收DMA请求并传送到CPU;
    ② CPU响应DMA请求,DMA控制器从CPU接管总线的控制权;
    ③ DMA控制器对内存寻址、计数数据传送个数,并执行数据传送操作;
    ④ DMA向CPU报告DMA操作的结束,CPU以中断方式响应DMA结束请求,由CPU在中断程序中进行结束后的处理工作。如数据缓冲区的处理、数据的校验等简单操作。

    DMA传送与中断传送相比有如下不同之处:
    ① 中断传送需要保存CPU现场并执行中断服务程序,时间开销较大。而DMA由硬件实现,不需要保存CPU的现场,时间开销较小;
    ② 中断传送只能在一个指令周期结束后进行,而DMA传送则可以在两个机器周期之间进行。

    2. DMA传送方式

    根据DMA控制器与CPU分时访问主存的方式不同,DMA传送方式有以下三种。
    (1) 停止CPU访问内存
    (2) 周期挪用方式
    (3) CPU与DMA交替访问方式

    (1) 停止CPU访问内存

    当外围设备要求传送一批数据时,由DMA控制器发一DMA请求信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权。CPU收到DMA请求后,无条件放弃总线控制权。DMA控制器获得总线控制权以后,开始进行数据传送。在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把总线控制权交还给CPU。
    在这里插入图片描述
    这种方式控制比较简单,用于高速I/O的成批数据传送是比较合适的。
    缺点:CPU的工作会受到明显的延误,当I/O数据传送时间大于主存周期时,主存的利用不够充分。

    (2)周期挪用方式

    在这种方式中,当I/O设备无DMA传送请求时,CPU正常访问主存;当I/O设备产生DMA请求时,则CPU给出1个或几个存储周期,由I/O设备与主存占用总线传送数据。此时CPU可能有两种状况:一种是此时CPU正巧不需要访问主存,那么就不存在访问主存的冲突,I/O设备占用总线对CPU处理程序不产生影响;另一种则是I/O设备与CPU同时都要访问主存而出现访问主存的冲突,此时I/O访问的优先权高于CPU访问的优先权,所以暂时封锁CPU的访问,等待I/O的周期挪用结束。
    在这里插入图片描述
    周期挪用方式能够充分发挥CPU与I/O设备的利用率,是当前普遍采用的方式。
    其缺点是:每传送一个数据,DMA都要产生访问请求,待到CPU响应后才能传送,操作频繁,花费时间较多,该方法适合于I/O设备读/写周期大于主存存储周期的情况。

    (3)CPU与DMA交替访问内存

    这种方式是当CPU周期大于两个以上的主存周期时,才能合理传送,如主存周期为Δt,而CPU周期为2Δt,那么在2Δt内,一个Δt供CPU访问,另一个Δt供DMA访问

    在这里插入图片描述
    这种方式比较好地解决了设备冲突及设备利用不充分的问题,而且不需要请求总线使用权的过程,总线的使用是通过分时控制的,此时DMA的传送对CPU没有影响。

    DMA控制器的基本组成

    DMA控制器是采用DMA方式的外围设备与系统总线之间的接口电路,它是在中断接口的基础上再加上DMA机构组成的。
    在这里插入图片描述
    它由以下6个逻辑部分组成:
    ① 内存地址计数器。
    由CPU在初始化时预置其内容,保存内存数据缓冲区的首地址,每传送一个字节或字后,该地址计数器就进行加1操作,使其总是指向要访问的内存地址。
    ② 字计数器。
    由CPU在初始化时将数据长度预置在其中,每完成一个字或一个字节的传送后,该计数器减“1”。计数器为全“0”时,传送结束,发一个信号到中断机构。
    ③ 中断机构。
    当字计数器溢出(全0)时,意味着一组数据传送完毕,由溢出信号触发中断机构,再由中断机构向CPU提出中断请求,以作为数据传送后的结束处理信号。
    ④ 控制/状态逻辑。
    由控制和时序电路以及状态标志等组成。用于修改内存地址计数器和字计数器,指定传送方向,并对DMA请求信号和CPU响应信号进行同步和协调处理。
    ⑤ 数据缓冲寄存器。
    用于暂存每次输入或输出传送的数据。
    ⑥ DMA请求标志。
    每当设备准备好一个数据字后便给出一个传送信号,使DMA请求置“1”。DMA请求标志再向控制/状态逻辑发出DMA请求,该逻辑再向CPU发出总线使用权请求(HOLD),CPU响应此请求后发回响应信号(HLDA),经控制/状态逻辑后形成DMA响应,置DMA请求标志为“0”,为传送下一个字作好准备。

    DMA数据传送过程可分为3个阶段:
    1.初始化DMA控制器;
    2.正式传送;
    3.传送后的处理。

    ① 在初始化阶段,CPU执行几条I/O指令,向DMA控制器中的地址寄存器送入设备号,向内存地址计数器中送入起始地址,向字计数器中送入传送的数据字个数并启动外设,CPU继续执行原来的主程序。

    ② 经CPU启动的外部设备准备好数据(输入)或接收数据(输出)时,它向DMA控制器发出DMA请求,使DMA控制器进入数据传送阶段。
    该阶段的DMA控制器传送数据的工作流程如图7.18所示(设DMA控制器以停止CPU访问内存方式工作):
    当外设发出DMA请求时,CPU在本机器周期结束后响应该请求,并使CPU放弃系统总线的控制权,而DMA控制器接管系统总线并向内存提供地址,使内存与外设进行数据传送,每传送一个字,地址计数器和字计数器就加“1”。
    当计数到“0”时,DMA控制器向CPU发出中断请求,DMA操作结束。

    ③ DMA数据传送后的处理工作是:
    CPU接到DMA中断请求后,转去执行中断服务程序,而执行中断服务程序的工作包括:数据校验及数据缓冲区的处理等工作。
    在这里插入图片描述

    选择型和多路型DMA控制器

    ※通道控制方式

    基本概念

    通道控制方式是大、中型计算机中常用的一种I/O形式,这种方式中,通道执行由操作系统“编制”的通道程序来实现外部设备与内存的数据传送。
    因此,通道是一种特殊的处理机,它有自己的指令和程序,但通道程序不是由用户编写的,而是由操作系统按照用户的请求及计算机系统的状态“编制”而成的,它放入内存中。
    当通道需要工作时,将通道程序从内存取回到通道并执行,从而完成用户的I/O操作。
    在这里插入图片描述

    通道与CPU在内存管理部件的控制下分时使用内存,系统中的总线分为两级:
    一级是存储总线(系统总线)承担通道内存CPU内存之间的数据传送任务;
    另一级是通道总线(I/O总线),它承担外围设备通道之间的数据传送任务。
    这两级总线可以分别使用各自的时序****同时工作。

    一条通道总线可接若干个设备控制器,一个设备控制器可以接一个或多个设备,因此,从逻辑上看,I/O系统一般具有4级连接:CPU与内存—通道—设备控制器—外围设备。
    对同一系列的机器,通道与设备控制器之间都有统一的标准接口,设备控制器与设备之间则根据设备的不同要求而采用专用接口。

    通道的类型

    通道按其工作方式可分为3种:
    选择通道:一般接高速外设(磁盘等)。
    数组多路通道:一般分时为多台快速设备服务。
    字节多路通道:一般接多台低速设备(键盘、打印机等)。
    一个系统中可兼有3种类型的通道,也可只有一种或两种。

    当通道与CPU同时访问内存时,通道优先级高于CPU
    在多个通道有访问存储器请求时,选择通道和数组多路通道优先权高于字节多路通道。

    1. 选择通道

    在选择通道中,每一通道在物理上可以连接多个设备,但这些设备不能同时工作,在某一段时间内只能选择一个设备进行工作,即执行这台设备的通道程序,只有当这个设备的通道程序全部执行完后,才能执行其他设备的通道程序(选择其他通道)。

    2. 数组多路通道

    数组多路通道是对选择通道的一种改进,它的基本思想是,当某设备进行数据传送时,通道只为该设备服务;当设备执行寻址等控制性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序,去为其他设备服务,即执行其他设备的通道程序,所以数组多路通道很像一个多道程序的处理器。
    数组多路通道可分时地为多台高速外设服务,如为磁盘等块设备服务,它的传输率与选择通道一样,取决于最快的那台设备。一般为12MB/s。

    3. 字节多路通道

    字节多路通道用于连接多台慢速外设,如键盘、打印机等字符设备。这些设备的数据传输率很低,而通道从设备接收或发送一个字节相对较快,因此,通道在传送某台设备的两个字节之间有许多空闲时间,字节多路通道正是利用这空闲时间为其他设备服务的。
    字节多路通道传输率与各设备的传输率及所带设备数目有关

    字节多路通道和数组多路通道的共同之处是它们都是多路通道,在一段时间内能交替执行多个设备的通道程序,使这些设备同时工作。
    不同之处是两种通道的数据传送的基本单位不同,字节多路通道是每次为一台设备传送一个字节,而数组多路通道每次为一台设备传送一个数据块
    有些系统中使用“子通道”的概念,子通道是指每个通道程序所管理的硬设备或该通道逻辑上连接的设备(或者说同时执行的通道程序)。
    字节多路通道、数组多路通道在物理上可以连接多个设备,但在一段时间内只能执行一个设备的通道程序,即:逻辑上只能连接一台设备,所以只包含一个子通道

  • 相关阅读:
    【SQLServer】并行的保留线程和已使用线程
    hadoop Configuration 源码解读
    MAUI Blazor 显示本地图片的新思路
    系统认识数据分析
    【干货】RPA+AI入门必须知道的39个名词
    ArcGIS模型构建器ModelBuilder的使用方法
    jvm实现的锁优化
    Java 序列化
    定压补水装置 隔膜式定压补水装置
    JSP SSH 产品质量追溯管理统myeclipse开发mysql数据库MVC模式java编程网页设计
  • 原文地址:https://blog.csdn.net/misakisaigao/article/details/125505905