【第五章】计算机组成原理章节重点第五章续 I/O控制

第五章 续 I/O控制

一、概述

  • I/O控制器亦称I/O接口电路(Interface)
    1、各个发展阶段
    (1)人工控制
  • 最早的计算机系统中是此种形式
  • 打孔纸带输入输出数据,相应的控制开关控制操作(没有现在意义的输入输出设备)
    (2)程序查询方式
  • CPU通过外设的状态标志对其进行监控和处理
  • 处理流程如下:
    在这里插入图片描述
  • CPU和I/O外设之间的关系图如下:
    在这里插入图片描述
  • CPU存在踏步查询现象(效率低)、实现相对简单
    (3)程序中断方式
  • 中断方式属于软件方式,但需要相应的硬件(中断系统)支持
  • 处理流程如下:
    中断请求在时间上是随机的
    在这里插入图片描述
  • CPU和I/O外设之间的关系图如下:
    在这里插入图片描述
    特点:数据传递依旧由CPU完成
    CPU和I/O外设在某段时间上是并行处理(效率更高)
    (4)存储器直接访问方式(Direct Memory Access,DMA)
    假设计算机模型如下,描述一次I/O输入数据的过程
    在这里插入图片描述
  • 注意区别
    传统的I/O输入模式需要ab两步,即先把数送至CPU内,再由CPU把数送至主存
    DMA模式仅需c一步,即不需要CPU的干预,I/O一次把数送至主存内
  • CPU和I/O(包括外设和接口两部分)之间的关系图如下:
    在这里插入图片描述特点:传数是由I/O接口电路控制完成的,CPU只移交总线
    在传数过程中CPU不干预,所以之前CPU不需要保护现场
    是一种硬件控制的传数过程,速度快,异常处理能力差(一旦启动,无法停)
    传数过程开始之前需CPU预处理一次,传数过程结束之后需CPU后处理一次
    (5)通道方式(Channel)
  • 通道即特殊功能的协处理器
  • 通道可以执行用通道指令编写的I/O程序(非纯的硬件方式)
  • CPU仅需干预一次(启动通道)
    2、其它概念
    (1)I/O编址方式
    • 统一编址
      主存地址和I/O地址编在一个地址空间(所以主存空间相对要小)
      无相应的I/O指令(所以指令系统相对简单)
    • 独立编址
      用单独的I/O指令访问外部设备(指令系统复杂)
      主存地址和I/O地址是两个独立的地址空间(主存空间相对要大)
      (2)I/O的互连方式
    • 直接互连
      两个部件之间用一组专用线路互连
    • 总线互连
      多个部件共用一组传输线(各部件只能分时使用)
      (3)联络方式
    • 立即响应
      使用时,不用查对方状态(默认对方时刻就绪),直接操作
    • 异步方式(即应答模式)
      设置一组联络信号(一应一答),先发请求,只有对方回应后方可操作,否则等待
    • 同步方式
      双方以同步时钟为基准进行相应的操作

二、I/O接口电路

  • 主要作用:数据或信息的缓冲(还有其它作用,这里略)
  • 基本逻辑组成
    在这里插入图片描述
  • 端口:可按地址访问的寄存器或相应部件

三、中断系统
1、中断的概念
(1)中断的描述
某程序处理过程中,遇到异常或相应事件,暂停现行程序,转去执行相应的处理程序,处理程序结束后返回原现行程序的过程,称为一次中断。

  • 中断(Interrupt)

  • 异常(Exception):控制流中的突然改变 //不同的称谓
    (2)中断的分类

  • 强迫中断:有请求一般必须相应,请求具有随机性,特殊时可屏蔽
    自愿中断:由自陷(Trap)指令完成,请求不具有随机性(请求时间即自陷指令执行的时间)

  • 内中断:由内部事件引起的中断(例如溢出、奇偶校验错、地址失效)
    外中断:由外部事件引起的中断(例如外部I/O请求、键中断)
    2、中断系统需考虑的问题
    (1)如何请求
    用触发器进行状态标识,设置请求触发器(1表示有请求、0表示无请求)

  • 逻辑关系如下:
    在这里插入图片描述

  • 由三个D触发器和一个与门组成,其中MASK为屏蔽位,外部向请求标识置位

  • 查询脉冲在指令周期末时刻发出,则逻辑器件只在末时刻触发发出请求
    (2)优先级排队

  • 多个中断源发出请求,只能相应一个,靠排队来决定优先级

  • 软件查询(早期采用)
    靠查询次序来决定优先级,在流程前面的先查询,后面的后查询,一旦判断哪级中断有请求,直接跳转(后面的各级中断不再查询)
    在这里插入图片描述
    特点:实现简单,易于实现,因为是纯软件方式,速度相对要慢

  • 硬件排队器
    四级排队器的逻辑图如下:
    在这里插入图片描述
    通常左边优先级最高,依次向右递减,最右边最低。内部是屏蔽原理,即当左边的请求有效,自动把右边的全部屏蔽掉,所以输出只有左边的一个有效。例如,四级请求状态为“1111”,即四个中断源同时请求,则输出为“1000”,最左边的1有效屏蔽掉其右边的所有1有效。
    此种方式现在普遍采用,即硬件原理不复杂,速度较快。
    (3)CPU的响应条件

    • 时间条件:指令周期末时刻(方便断点保护)
    • CPU状态:必须CPU允许响应(设置允许触发器标识CPU状态)
      允许触发器为1,称为开中断,即此时CPU可以响应中断请求
      允许触发器为0,称为关中断,即此时CPU不可以响应中断请求
      (4)现场保护
    • CPU现场
      程序执行过程中,一些计算的中间结果均存在CPU的一些寄存器中,这些寄存器里的暂存值称为CPU现场。
    • 隐指令
      程序的断点(当前PC值,返回时需要)由隐指令自动压栈保护(系统自动完成)
    • 现场保护
      中断服务程序把CPU所有涉及到的寄存器压栈保护,中断程序返回前再出栈恢复
      (5)形成服务程序入口地址
    • 中断向量
      为了方便查找,系统中所有的中断不是按名查找,而是按编号查找。即系统中为所有的中断统一编号(统一的系统中,号码是固定的),该编号称中断向量号。
    • 中断向量表
      所有中断的入口地址索引表,示意如下:
      在这里插入图片描述
      注意:所谓的中断向量号实质上就是向量表的偏移地址,经过一次间址操作取出的就是中断的入口地址。
      (6)现场恢复和中断返回
    • 中断返回
      中断服务处理完成后,返回原断点处,通常由IRET指令完成
      注意:相应时断点保护是由系统隐指令完成,程序中不涉及,但返回时必须由IRET指令完成。IRET指令的本质即为出栈操作指令。
    • 现场恢复
      现场保护的反向操作
      (7)多重中断
    • 多重中断即中断的嵌套(中断处理时再次被新的中断打断)
    • 实现条件
      新来中断的级别要比正在执行中断的级别高
      通常级别可分为相应级别和处理级别两种,相应级别有硬件排队器来决定,处理级别即处理的先后次序,这里指处理级别,通常由屏蔽技术实现
    • 屏蔽技术
      设置屏蔽触发器来标识状态,为1表示屏蔽该级中断,为0表示开放
      例如:1#2#3#4#四级中断的屏蔽触发器的值依次为“1011”,则表示当前状态,2#中断被屏蔽,1#中断、3#中断和4#中断可以打断当前的处理程序。
      3、中断系统的逻辑组成
      为了描述简单,这里只设置了四级中断,依次为1#中断、2#中断、3#中断和4#中断,则请求触发器设置4个(和中断源个数对应),允许触发器1个(和CPU个数对应),屏蔽触发器4个(和中断源个数对应),一个四级排队器以及其它若干门电路,逻辑组成图如下:
      在这里插入图片描述
      上图中INTR为请求触发器,INTM为屏蔽触发器,EINT为允许触发器(仅1位),当外部事件有中断请求时只触发相应标识,时间上无任何限制,INT为中断系统向CPU发出的请求信号。
  • INT和允许位EINT的逻辑如下:
    在这里插入图片描述

上图中EINT为允许位(为1时表示开中断),只要排队器中有请求(或关系),并且开中断则INT有效,即向CPU发中断请求,同时INT触发允许位EINT复位(即清0),表示响应中断后立即关中断。
注:多个触发器构成的逻辑单元可以称为寄存器,上图中虚线部分的内容即可称为相应的寄存器,例如四个INTR构成的逻辑单元可称为中断请求寄存器,其余类似。在PC机中用一片8259管理中断,逻辑关系类似。

  • 中断指令级处理流程
    大致可分为:中断请求、中断响应、中断处理(或称为中断服务)和中断返回,流程描述见下图:
    在这里插入图片描述
    在上图中看不到中断请求,即外部事件在请求中断时间上是任意的,不以指令周期为基准。
    (1)中断请求
  • I/O设备如有请求设置相应的标识位有效(任意时刻)
  • 系统在每条指令周期末时刻查询(查询脉冲只在指令周期末时刻发出)
    (2)中断响应
    • 相应是由指令集中的隐指令完成,不需用户干预
    • 相应的条件:CPU开中断、指令周期末时刻
    • 具体操作包括:系统自动关中断、请求位清0、断点入栈、置相应的屏蔽字、形成向量地址
      (3)中断处理
    • 由中断服务程序来完成
    • 服务程序完成的功能包括:现场保护、重新开中断、相应的程序执行
      (4)中断返回
    • 服务程序最后的IRET指令来完成(有的程序根据需要IRET也可不放最后)
    • 程序返回前现场恢复和关中断,然后断点出栈,返回原断点处

例:假设有四级中断,依次为1#中断、2#中断、3#中断和4#中断,它们的响应优先级为1#>2#>3#>4#,若想把处理次序改为1#3#4#2#,则相应的屏蔽字为何值,当四级中断同时请求,且之前无任何中断,描述其处理过程。

屏蔽字如下表:
屏蔽字 1# 2# 3# 4#
1# 1 1 1 1
2# 0 1 0 0
3# 0 1 1 1
4# 0 1 0 1
主程序 0 0 0 0
处理过程描述如下:
在这里插入图片描述
注意:中断的特点,哪里断的回到哪里

四、DMA技术

  • 直接存储器访问(Direct Memory Access)
    1、DMA控制器(Direct Memory Access Controller,DMAC)的组成
    整个DMA传输过程是由DMA控制器来控制完成的,有时也把DMA控制器称为DMA接口,其逻辑组成如下:
    在这里插入图片描述
    (1)内部各寄存器的作用
  • AR(主存地址寄存器):操作时所对应的主存地址,采用加1计数
  • WC(字计数器):记录传输的个数,通常采用加1计数
  • DAR(设备地址寄存器):操作时指明相应的外部设备
  • BR(数据缓冲寄存器):拆装字缓冲区
    (2)DMA控制逻辑
  • 两组应答信号
    DREQ(DMA传送请求)和DACK(DMA传送允许)
    HRQ(总线请求)和HLDA(总线允许)
  • 两组应答信号的操作次序
    由外部设备先发DREQ,表示有DMA操作请求,然后控制逻辑向CPU发HRQ请求总线,即要建立DMA传送通路,CPU接到请求后会立即回应HLDA(一般外部请求优先级较高),让出总线,控制逻辑接到回应后,即表示接收总线使用权(通路已经建好),然后发DACK给外部设备,外设接到信号后就可以进行DMA传送。
    (3)中断机构
    当所有数据均传送完成后(计数为0时触发),移交总线使用权,然后CPU启动DMA后处理中断程序,对系统进行检测操作。
    2、DMAC的功能
  • 向CPU申请DMA请求(申请总线,建立DMA通路)
  • 总线控制权移交
  • 管理总线(发出相应的地址及控制命令)
  • 传数控制(整个传数过程CPU不干预,全部由DMAC控制完成)
  • 发DMA结束信号(此步骤由中断系统完成)
    3、DMA传送方式
    (1)CPU暂停方式
    响应DMA后,CPU暂停操作。此种方式控制简单,但效率低。
    (2)周期挪用(或周期窃取)
    一种面向字符的操作,即一次操作仅传送一个字符,间隔时间较长。操作的设备通常为中速或慢速设备。
    发DMA请求后,CPU的三种可能:
  • CPU未访存——此时CPU未使用总线,直接建立通路,开始DMA传送
  • CPU要访存——此时CPU要使用总线,比较CPU和I/O设备的访存优先级,一般I/O设备的优先级高,所以CPU等待,让出总线建立通路,开始DMA传送
  • CPU正访存——此时CPU正在使用总线,等待此次访存周期结束,然后CPU让出总线,建立通路,开始DMA传送 //最长等待一个存储周期

注意:响应DMA请求的时间节点是存储周期
(3)成块DMA操作
一种面向字块的操作,一旦建立通路,需要传完一组数据之后才释放总线,此时CPU可完成除访存外的其它操作(即无法使用总线和主存),如CPU需访存,则只能等待。
4、工作过程
(1)预处理
CPU执行一个例行程序,设置DMA传输方向、DMAC内的相关参数、启动外设并返回原程序
(2)数据传送——以周期挪用为例

  • 输入数据(I/O设备主存)步骤如下:
    a、I/O设备组装字BR
    b、I/O设备发DREQDMA控制逻辑
    c、DMA控制逻辑发HRQCPU
    d、CPU回应HLDADMA控制逻辑
    e、DMA控制逻辑把AR值送至总线(即发出主存地址)
    DMA控制逻辑发DACK I/O设备(准备下一个字)
    f、DMA控制逻辑把BR值送至总线(即要传输的数据),并发出写命令(数据写入主存)
    g、DMA控制逻辑把WC计数值加1
    h、判断WC=0?是否成立,如不成立返回a步骤,否则中断请求结束
  • 输出数据(主存 I/O设备)步骤如下:
    a、BR拆装字I/O设备
    b、I/O设备发DREQDMA控制逻辑 //数已取走,申请下一个
    c、DMA控制逻辑发HRQCPU
    d、CPU回应HLDADMA控制逻辑
    e、DMA控制逻辑把AR值送至总线(即发出主存地址),并发出读命令(从主存读出数放置总线上)
    f、DMA控制逻辑从总线上把数送至BR内(即要传输的数据),DMA控制逻辑发DACK I/O设备(准备接收下一个数)
    g、DMA控制逻辑把WC计数值加1
    h、判断WC=0?是否成立,如不成立返回a步骤,否则中断请求结束
    (3)后处理
    中断触发一个服务程序,完成主存校验、数据校验(测试数据传输过程中是否有错,DMAC只控制传数,不进行校验)、判断是否继续(如继续,重启预处理开始下一个DMA过程)

注意:预处理和后处理均为CPU完成,即一次DMA过程需CPU干预两次,只是传数过程CPU不干预。
5、DMA与中断的比较
(1)在传数控制上,中断模式是软件方式(由处理程序完成,速度较慢),DMA模式是硬件方式(由DMAC控制完成,速度较快)
(2)系统在响应请求的时间上,中断是在指令周期末时刻,DMA是在存储周期末时刻
(3)在处理过程中,中断具有处理异常的能力(即再次中断转至异常处理程序),DMA不具有处理异常能力(整个DMA传数过程没法打断,CPU只能等待)
(4)在处理之前,中断需要现场保护,DMA仅需要移交总线使用权,不需现场保护(因为CPU不参与)
(5)在优先级上,DMA的优先级比中断要高(如DMA和一个中断同时请求,通常只能响应DMA)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下方方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值