计组 第八章
输入输出系统
主机与外设的传输原理
输入:外设送到主机
输出:主机送到外设
外围设备的定时方式和信息交换方式
外围设备的速度分级
外设种类繁多,存在以下几种情况:
不同种类的外设数据传输速率差别很大
同一种设备在不同时刻传输速率也可能不同
高速的 CPU 与速度参差不齐的外设怎样在时间上同步呢?
- 解决办法时在 CPU 和外设之间数据传送时加以定时。
外设的分级
速度极慢或简单的外设
- 机械开关、显示二极管
- CPU 只需要接受或者发送数据即可
慢速或者中速的设备
- 可以采用异步定时的方式
高速外设
- 采用同步定时方式,成组数据传输
信息交换方式
程序查询方式
CPU 保持对外设的监听状态
程序中断方式
外设传送数据时向 CPU 汇报
DMA 方式(直接内存访问)
外设传送成组的数据,不需要向 CPU 汇报;传输完成后再汇报,将总线控制权还给 CPU
通道方式
使用专门的 I/O 处理器来协助 CPU 工作
程序查询方式
又叫程序控制 I/O 方式
步骤
先向 I/O 设备发出命令字,请求进行数据传送
从 I/O 接口读入状态字
检查状态字中的标志,看看数据交换是否可以进行
(等)假如这个设备没有准备就绪,则第 (2)、第 (3) 步重复进行,一直到这个设备准备好交换数据,发出准备就绪信号 “Ready” 为止
CPU 从 I/O 接口的数据缓冲寄存器输入数据,或者将数据从 CPU 输出至接口的数据缓冲寄存器。与此同时, CPU 将接口中的状态标志复位
轮询
设备编址
统一编址
I/O 设备与内存单元联合在一起编排地址
不需要专门的 I/O 指令组
单独编址
I/O 设备地址与内存地址单独分开
I/O 设备要有专门的指令组
程序查询接口
设备选择电路
根据设备地址码选择外设
数据缓冲寄存器
缓冲数据
设备状态标志
标志设备的工作状态
程序中断方式
中断的基本概念
中断(Interrupt)是指 CPU 暂时中止现行程序,转去处理随机发生的紧急事件,处理完后自动返回原程序的功能和技术。
中断系统是计机实现中断功能的软硬件总称。
一般在 CPU 中设置中断机构,在外设接口中设置中断控制器,在软件上设置相应的中断服务程序
中断处理过程注意几个问题:
响应中断时机:外界中断请求是随机的,但 CPU 只有在当前指令执行完毕后,才转至公操作
断点保护问题(PC,寄存器内容和状态的保存)
原子操作:开中断和关中断问题。
- 将中断屏蔽触发器置为 1,即关闭中断,不接收中断请求
中断是由软硬件结合起来实现的
中断分为内中断(异常)和外中断
程序中断方式的基本I/O接口
① 表示由程序启动外设,将该外设接口的**“忙”标志 BS** 置 “1”,“准备就绪”标志 RD 清 “0”;
② 表示接口向外设发出启动信号;
③ 表示数据由外设传送到接口的缓冲寄存器;
④ 表示当设备动作结束或缓冲寄存器数据填满时,设备向接口送出一控制信号,将数据“准备就绪”标志 RD 置 “1”;
⑤ 表示允许中断标志 EI 为 “1” 时,接口向 CPU 发出中断请求信号;
⑥ 表示在一条指令执行末尾 CPU 检查中断请求线,将中断请求线的请求信号接收到**“中断请求”标志 IR**;
⑦ 表示如果**“中断屏蔽”标志 IM** 为 “0” 时,CPU 在一条指令执行结束后受理外设的中断请求,向外设发出响应中断信号并关闭中断;
⑧ 表示转向该设备的中断服务程序入口;
⑨ 表示在中断服务程序通过输入指令把接口中数据缓冲寄存器的数据读至 CPU 中的寄存器;
⑩ 表示 CPU 发出控制信号 C 将接口中的 BS 和 RD 标志复位
单级中断
有优先级,但不能嵌套
概念
- 所有中断源属于同一级,离 CPU 越近,优先级越高。
中断源的识别:串行排队链法
- IR1,IR2,IR3 为中断请求信号
- IS1,IS2,IS3 为中断选中信号
- INTI 为中断排队输入
- INTO 为中断排队输出
- INTA?
中断向量的产生
- 当 CPU 响应中断时,由硬件直接产生一个固定的地址 (即向量地址)
- 由向量地址指出每个中断源设备的中断服务程序入口,便于跳转,这种方法通常称为向量中断。
(好图,看 👆)
多级中断(重要)
概念
每级有一个中断优先权
一维多级中断和二维多级中断
说明:
- 一个系统有 n 级中断,则 CPU 中有 n 个 IR,n 个 IM
- 某级中断被响应后,则关闭本级和低于本级的 IM,开放更高级的 IM。
- 多级中断可以嵌套,但同一级的中断不允许嵌套
- 中断响应时,确定哪一级中断和中断源采用硬件实现。采用了独立请求方式和链式查询方式相结合的方式。
- 使用多级堆栈保存现场(包括 IM)
- 中断屏蔽触发器合在一起,组成了中断屏蔽寄存器
- 一个系统有 n 级中断,则 CPU 中有 n 个 IR,n 个 IM
多级中断源的识别
中断优先排队电路
中断向量产生电路
例
==分析==
- 中断处理次序 / 优先级:在软件(中段处理程序)中设置
- 中断响应优先级:在硬件中设置
中断控制器(了解)
定义
8259 中断控制器是一个集成电路芯片,它将中断接口与优先级判断等功能汇集于一身,常用于微型机系统
8 位中断请求寄存器 (IR) 接受 8 个外部设备送来的中断请求,每一位对应一个设备。
中断请求寄存器的各位送入优先权判断器,根据中断屏蔽寄存器 (IM) 各位的状态来决定最高优先级的中断请求,并将各位的状态送入中断状态寄存器 IS。IS 保存着判优结果。由控制逻辑向 CPU 发出中断请求信号 INT,并接受 CPU 的中断响应信号 INTA。
数据缓冲器用于保存 CPU 内部总线与系统数据总线之间进行传送的数据。
读/写逻辑决定数据传送的方向,其中 IOR 为读控制,IOW 为写控制,CS 为设备选择,A0 为 I/O 端口识别。
优先级选择方式
完全嵌套方式
是一种固定优先级方式,连至 IR0 的设备优先级最高,IR7 的优先级最低。这种固定优先级方式对级别低的中断不利,在有些情况下最低级别的中断请求可能一直不能被处理。
轮换优先级方式 A
每个级别的中断保证有机会被处理,将给定的中断级别处理完后,立即把它放到最低级别的位置上去。
轮换优先级方式 B
要求 CPU 可在任何时间规定最优优先级,然后顺序地规定其他 IR 线上的优先级。
查询方式
由 CPU 访问 8259 的中断状态寄存器,一个状态字能表示出正在请求中断的最高优先级 IR 线,并能表示出中断请求是否有效。
DMA 方式
高速外设,同步定时,以数据块为单位进行批量传输
基本概念
**直接存储器访问(Direct Memory Address)**是为了在主存储器与 I/O 设备间高速交换批量数据而设置的。
基本思想
通过硬件控制实现主存与 I/O 设备间的直接数据传送,在传送过程中无需 CPU 的干预。数据传送是在 DMA 控制器控制下进行的
优点
速度快,有利于发挥 CPU 的效率。
DMA 传送方式
停止 CPU 访问内存
(在 DMA 访内过程中,CPU 不能同时访内)
主机响应 DMA 请求后,让出存储总线,直到一组数据传送完毕后,DMA 控制器才把总线控制权交还给 CPU
采用这种工作方式的 I/O 设备,在其接口中一般设置有小容量存储器
I/O 设备先与小容量存储器交换数据,然后由小容量存储器与主机交换数据
这样可减少 DMA 传送占用存储总线的时间,也即减少了 CPU 暂停工作的时间
优点
控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点
在 DMA 控制器访内阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速 I/O 设备也是如此(故许多空闲的存储周期不能被 CPU 利用)
周期挪用方式
也叫周期窃取方式,CPU 没有完全放弃对主存的访问
DMA 控制器与主存储器之间传送一个数据,占用(窃取)一个 CPU 周期,即 CPU 暂停工作一个周期,然后继续执行程序
一次 DMA 传输(挪用)没办法将整个数据块传输完
DMA 与 CPU 交替访内
又称透明的 DMA 传输方式
如果 CPU 的工作周期比内存存取周期长很多,可以采用该种方法
总线控制权的转移速度快,DMA 效率高。
基本的 DMA 原理
DMA 基本构成
内存地址计数器
用于存放内存中要交换的数据的地址
在 DMA 传送前,须通过程序将数据在内存中的起始位置(首地址)送到内存地址计数器。
而当 DMA 传送时,每交换一次数据,将地址计数器加“1”,从而以增量方式给出内存中要交换的一批数据的地址。
字计数器
用于记录传送数据块的长度(多少字数)。其内容也是在数据传送之前由程序预置,交换的字数通常以补码形式表示。
在 DMA 传送时,每传送一个字,字计数器就加“1” ,
当计数器溢出即最高位产生进位时,表示这批数据传送完毕,于是引起 DMA 控制器向 CPU 发中断信号
数据缓冲寄存器
用于暂存每次传送的数据(一个字)。
当输入时,由设备(如磁盘)送往数据缓冲寄存器,再由缓冲寄存器通过数据总线送到内存。
反之,输出时,由内存通过数据总线送到数据缓冲寄存器,然后再送到设备。
“DMA 请求” 标志
每当设备准备好一个数据字后给出一个控制信号,使 “DMA 请求” 标志置 “1”。
该标志置位后向“控制/状态”逻辑发出 DMA 请求,后者又向 CPU 发出总线使用权的请求(HOLD),CPU 响应此请求后发回响应信号 HLDA,“控制/状态”逻辑接收此信号后发出 DMA 响应信号,使“DMA 请求”标志复位,为交换下一个字做好准备。
“控制/状态” 逻辑
由控制和时序电路以及状态标志等组成,用于修改内存地址计数器和字计数器,指定传送类型(输入或输出),并对 “DMA 请求” 信号和 CPU 响应信号进行协调和同步。
中断机构
当字计数器溢出时 (全 0),意味着一组数据交换完毕,由溢出信号触发中断机构,向 CPU 提出中断报告
这里的中断与上一节介绍的 I/O 中断所采用的技术相同,但中断的目的不同,前面是为了数据的输入或输出,而这里是为了报告一组数据传送结束。因此它们是 I/O 系统中不同的中断事件
DMA 数据传送过程
当外设有 DMA 请求时,通常 CPU 在本机器周期结束后,响应 DMA 请求
选择型和多路型 DMA 控制器
选择型
一段时间内只能为一个设备服务
多路型
例 下图中假设有磁盘、磁带、打印机三个设备同时工作。磁盘以 30μs 的间隔向控制器发 DMA 请求,磁带以 45μs 的间隔发 DMA 请求,打印机以 150μs 间隔发 DMA 请求。根据传输速率,磁盘优先权最高,磁带次之,打印机最低,图中假设 DMA 控制器每完成一次 DMA 传送所需的时间是 5μs。若采用多路型 DMA 控制器,请画出 DMA 控制器服务三个设备的工作时间图。