【计算机组成原理】第七章:输入/输出系统
本篇笔记课程来源:王道计算机考研 计算机组成原理
【计算机组成原理】第七章:输入/输出系统
- 一、I/O系统基本概念
- 1. 输入输出系统
- 2. IO 控制方式
- 3. 中断与 DMA 对比
- 二、IO 接口
- 1. IO 接口的作用
- 2. 结构和工作原理
- 3. IO 端口
- 4. 分类
- 四、程序查询方式
- 五、程序中断方式
- 1. 中断的作用和原理
- Ⅰ. 中断基本概念
- Ⅱ. 中断请求标记
- Ⅲ. 中断判优
- Ⅳ. 中断处理过程
- 2. 单重中断和多重中断
- 3. 程序中断方式工作流程
- 六、DMA 方式
- 1. DMAC 组成
- 2. DMA 传送过程
- 3. DMA 传送方式
- 4. DMA 方式的特点
一、I/O系统基本概念
1. 输入输出系统
- IO 系统由 IO 软件 和 IO 硬件 两部分构成。
- IO 硬件:包括外部设备、IO 接口、IO 总线等。
- IO 软件:
- 包括驱动程序、用户程序、管理程序、升级补丁等。
- 通常采用 IO 指令和通道指令实现主机和 IO 设备的信息交换。
- IO 指令
- CPU 指令的一部分,但与普通指令格式略有不同。
- 由【操作码、命令码、设备码】组成
- 操作码:识别 IO 指令,指明 CPU 要对 IO 接口做什么
- 命令码:做什么工作,指明 IO 接口要对设备做什么
- 设备码:对哪个设备进行操作
- 通道指令
- 通道能识别的指令。
- 通道程序提前编制好放在主存中
- 在含有通道的计算机中,CPU 执行的 IO 指令对通道发出命令,由通道执行一系列通道指令,代替 CPU 对 IO 设备进行管理。
- I/O 接口:又称 I/O 控制器(I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输。
- IO 控制器多种多样,也会制定相应的标准,如:用于控制 USB 设备的 IO 接口、用于控制 SATA 3.0 硬盘的 IO 接口等。
- 现在的 IO 接口(芯片)也会被集成在南桥芯片内部。
2. IO 控制方式
- 程序查询方式:CPU 不断轮询检查 IO 控制器中的 “状态寄存器”,检测到状态为 “已完成” 之后,再从数据寄存器取出输入数据。
- 程序中断方式:等待键盘 IO 时 CPU 可以先去执行其他程序,键盘 IO 完成后 IO 控制器向 CPU 发出中断请求,CPU 响应中断请求,并取走输入数据。
数据流:键盘 → IO 接口的数据寄存器 → 数据总线 → CPU 某寄存器 → 主存
- DMA 控制方式
- 直接内存访问(Direct Memory Access,DMA)接口,即 DMA 控制器,也是一种特殊的 IO 控制器。
- 主存与高速 IO 设备之间有一条直接数据通路(DMA 总线)。CPU 向 DMA 接口发出 “读 / 写” 命令,并指明主存地址、磁盘地址、读写数据量等参数。
- DMA 控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写(如 1KB 为一整块),才向 CPU 发出一次中断请求。
- 直接内存访问(Direct Memory Access,DMA)接口,即 DMA 控制器,也是一种特殊的 IO 控制器。
- 通道控制方式
- 通道是具有特殊功能的处理器,能对 IO 设备进行统一管理。
- 通道可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一。
- 通道是具有特殊功能的处理器,能对 IO 设备进行统一管理。
3. 中断与 DMA 对比
- 先做对比,了解其区别,下面会进行详细描述
中断 | DMA | |
---|---|---|
数据传送 | 程序控制 程序的切换 → 保护和恢复现场 | 硬件控制 CPU 只需进行预处理和后处理 |
中断请求 | 传送数据 | 后处理 |
响应 | 指令执行周期结束后响应中断 | 每个机器周期结束均可,总线空闲时即可响应 DMA 请求 |
场景 | CPU 控制,低速设备 | DMAC 控制,高速设备(块设备,如磁盘) |
优先级 | 优先级低于 DMA | 优先级高于中断 |
异常处理 | 能处理异常事件 | 仅传送数据 |
二、IO 接口
1. IO 接口的作用
- 数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配
- 错误或状态检测:通过状态寄存器反馈设备的各种错误、状态信息,供 CPU 查用
- 控制和定时:接收从控制总线发来的控制信号、时钟信号
- 数据格式转换:串-并、并-串 等格式转换
- 与主机和设备通信:实现 主机—IO接口—IO设备之间的通信
2. 结构和工作原理
- 内部接口:内部接口与系统总线相连,实质上是与内存、CPU 相连。数据的传输方式
只能是并行传输。(技术已经进步了) - 外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此 IO 接口需具有串-并转换功能。
- 控制寄存器、状态寄存器在使用时间上是错开的,因此有的 IO 接口中可将二者合二为一。
- 系统总线
- 数据总线:读写数据、状态字、控制字、中断类型号(完成、故障等类型)
- 地址总线:指明 IO 端口
- 控制总线:读写 IO 端口的信号、中断请求信号
- 如果连接了多个设备,则每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备。
命令字 和 控制字 是一个意思。
- 工作原理
- 发命令:CPU 发送命令字到 IO 控制寄存器,向设备发出命令(需要驱动程序的协助)
- 读状态:从状态寄存器读取状态字,获得设备或 IO 控制器的状态信息
- 读写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换
3. IO 端口
- IO 控制器中的各种寄存器称为 IO 端口,这些寄存器可以被 CPU 直接访问。
- 统一编址:
- 又称存储器映射方式,RISC 机器常用。
- 把 IO 端口当作存储器的单元进行地址分配,用统一的访存指令就可以访问 IO 端口。
- 靠不同的地址码区分内存和 IO 设备,IO 地址要求相对固定在地址的某部分。
- 优点:不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高;端口有较大的编址空间;读写控制逻辑电路简单。
- 缺点:端口占用了主存地址空间,使主存地址空间变小;外设寻址时间长(地址位数多,地址译码速度慢)。
- 独立编址:
- 又称 IO 映射方式,Intel 处理器常用,IN、OUT 就是 IO 指令。
- IO 端口地址与存储器地址无关,独立编址 CPU 需要设置专门的输入/输出指令访问端口。IO 端口地址独立于内存地址。
- 靠不同的指令区分内存和 IO 设备
- 优点:使用专用 IO 指令,程序编址清晰;IO 端口地址位数少,地址译码速度快;IO 端口的地址不占用主存地址空间。
- 缺点:IO 指令类型少,一般只能对端口进行传送操作,程序设计灵活性差;需要 CPU 提供存储器读写、IO设备读写两组控制信号,增加了控制逻辑电路的复杂性。
4. 分类
- 按数据传送方式可分为:
- 并行接口:一个字节或一个字 所有位 同时传送。
- 串行接口:一位一位传送。
- 按主机访问 IO 设备的控制方式可分为【程序查询接口、中断接口、DMA 接口】
- 按功能选择的灵活性可分为【可编程接口、不可变成接口】
四、程序查询方式
- CPU 一旦启动 IO,必须停止现行程序的运行,并在现行程序中插入一段程序。
- 查询方案:
- 独占查询:CPU 100% 的时间都在查询 IO 状态,完全串行
- 定时查询:在保证数据不丢失的情况下,每隔一段时间 CPU 就查询一次 IO 状态。查询的时间间隔内 CPU 可以执行其他程序。
- 步骤:
- 预置传送参数:CPU 执行初始化程序,并预置传送参数(设置计数器、设置数据首地址)
- 启动外设:向 IO 接口发送命令字,启动 IO 设备
- 取外设状态:CPU 从读口读取设备状态信息
- 检查外设是否准备就绪:CPU 不断查询 IO 设备状态,直到外设准备就绪
- 是:跳转到第 4 步传送数据
- 否:跳转到第 3 步取外设状态
- 传送一次数据:一般为一个字
- 修改传送参数:修改地址和计数器参数
- 检查是否传送完:判断传送是否结束
- 是:结束
- 否:跳转到第 3 步取外设状态
- 主要特点:CPU 有 “踏步” 等待现象,CPU 与 IO 串行工作。
- 优点:接口设计简单、设备最少。
- 缺点:CPU 在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低。
五、程序中断方式
1. 中断的作用和原理
Ⅰ. 中断基本概念
- 程序中断:是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU 暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后 CPU 又自动返回到现行程序的断点处,继续执行原程序。
- 工作流程:
- 中断请求:中断源(外设)向 CPU 发送中断请求信号。
- 中断响应:响应中断的条件。
- 中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。
- 中断处理:通过中断隐指令把 CPU 的指令执行流转移到正确的中断服务程序。
- PSW 中存有中断标志位 IF(Interrupt Flag)
IF=1
:开中断,此时允许中断;IF=0
:关中断,此时不允许中断。
其他有关中断的概念可跳转 【操作系统】第一章:操作系统概述 —— 中断和异常
Ⅱ. 中断请求标记
- 每个中断源向 CPU 发出中断请求的时间是随机的。
- 为了记录中断事件并区分不同的中断源,中断系统需对中断源设置中断请求标记触发器 INTR,当其状态为 “1” 时,表示中断源有请求。
- 这些触发器可组成中断请求标记寄存器,该寄存器可集中在 CPU 中,也可分散在各个中断源中。
- 对于外中断,CPU 是在统一的时刻 (每条指令执行阶段结束前) 向接口发出 中断查询信号,以获取 IO 的中断请求。即,CPU 响应中断的时间是在每条指令执行阶段的结束时刻。
- CPU 响应中断必须满足以下 3 个条件:
- 中断源有中断请求
- CPU 允许中断(开中断)
- 一条指令执行完毕,且没有更紧迫的任务
Ⅲ. 中断判优
- 实现:
- 中断判优既可以用硬件实现,也可用软件实现。
- 硬件实现:通过硬件排队器实现,它既可以设置在 CPU 中,也可以分散在各个中断源中
- 软件实现:通过查询程序实现。
- 优先级设置
- 硬件故障中断属于最高级(如掉电),其次是软件中断(如系统调用)
- 非屏蔽中断优于可屏蔽中断
- DMA 请求优于 IO 设备传送的中断请求
- 高速设备优于低速设备
- 输入设备优于输出设备
- 实时设备优于普通设备
Ⅳ. 中断处理过程
- 中断隐指令:是一系列任务,而不是某一条特定的指令。用于保存原程序的 PC 值,并让 PC 指向中断服务程序的第一条指令。
- 关中断:在中断服务程序中,为了保护中断中断现场(CPU 主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
- 保存断点:为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断电(程序计数器 PC 的内容)保存起来。可以存入堆栈,也可以存入指定单元。
- 引出中断服务程序:实质是取出中断服务程序的入口地址并传送给程序计数器 PC。
- 硬件向量法:由硬件(排队器)输出产生向量地址(中断类型号,比如是哪个中断源发来的),再由向量地址找到入口地址(中断向量)。
- 软件查询法
- 硬件向量法:由硬件(排队器)输出产生向量地址(中断类型号,比如是哪个中断源发来的),再由向量地址找到入口地址(中断向量)。
- 中断服务程序主要任务:
- 保护现场:保存通用寄存器和状态寄存器的内容(如 ACC 寄存器的值),以便返回原程序后可以恢复 CPU 环境。可使用堆栈,也可以使用特定存储单元。
- 中断服务(设备服务):主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中(中断服务的过程中有可能修改 ACC 寄存器的值)
- 恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器中(把原程序算到一般的 ACC 值恢复原样)
- 中断返回:开中断,然后通过中断返回指令回到原程序断点处。
2. 单重中断和多重中断
- 单重中断:也就是上面所述的中断,执行中断服务程序时不响应新的中断请求。
- 多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
- 中断屏蔽技术:主要用于多重中断,CPU 要具备多重中断的功能,须满足下列条件。
- 在中断服务程序中提前设置开中断指令。
- 优先级别高的中断源有权中断优先级别低的中断源。
- 屏蔽触发器
- 每个中断源都有一个屏蔽触发器,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字
- 1 表示屏蔽该中断源的请求,0 表示可以正常申请。
- 屏蔽字中 1 越多,优先级越高。每个屏蔽字中至少有一个 1(至少要能屏蔽自身中断)
- 硬件排队器:收到多个中断请求时,只响应其中一个固定优先级。
- 中断屏蔽功能:调整多重中断的优先级。
步骤 | 单重中断 | 多重中断 | |
---|---|---|---|
图示 | ![]() | ![]() | |
中断隐指令 | 第1步 | 关中断 | 关中断 |
第2步 | 保存断点(PC) | 保存断点(PC) | |
第3步 | 送中断向量 | 送中断向量 | |
第4步 | 保护现场 | 保护现场和屏蔽字 | |
中断服务程序 | 第1步 | - | 开中断 |
第2步 | 执行中断服务程序 | 执行中断服务程序 | |
第3步 | - | 关中断 | |
第4步 | 恢复现场 | 恢复现场和屏蔽字 | |
第5步 | 开中断 | 开中断 | |
第6步 | 中断返回 | 中断返回 |
3. 程序中断方式工作流程
- 以单重中断为例,过程在上面都有提到,下面贴一张工作流程图
六、DMA 方式
1. DMAC 组成
- 控制/状态逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对 DMA 请求信号和 CPU 响应信号进行协调和同步。
- DMA 请求触发器:每当 IO 设备准备好数据后给出一个控制信号,使 DMA 请求触发器置位。
- 主存地址计数器:简称 AR,存放要交换数据的主存地址。
- 传送长度计数器:简称 WC,用来记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号。
- 数据缓冲寄存器:用于暂存每次传送的数据。
- 中断机构:当一个数据块传送完毕后触发中断机构,向 CPU 提出中断请求。
2. DMA 传送过程
- CPU 向 DMA 控制器指明要输入还是输出;要传送多少个数据;数据在主存、外设中的地址。
- 预处理:
- 接受外设发出的 DMA 请求(外设传送一个字的请求),并向 CPU 发出总线请求
- CPU 响应此总线请求,发出总线响应信号,接管总线控制权,进入 DMA 操作周期
- 传送时:
- 确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数
- 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
- 后处理:向 CPU 报告 DMA 操作的结束。
- DMA 是否能够访问主存由 CPU 说了算。
- 在 DMA 传送过程中,DMA 控制器将接管 CPU 的地址总线、数据总线和控制总线,CPU 的主存控制信号被禁止使用。而当 DMA 传送结束后,将恢复 CPU 的一切权力并开始执行其操作。
3. DMA 传送方式
- 为了简化对 DMA 的描述,上面提及的都是单总线结构。描述 DMA 传送方式则需要使用三总线结构,下图为三总线结构。
- 在三总线结构中,主存和 DMA 控制器之间有一条数据通路,因此主存和 IO 设备之间交换信息时,不通过 CPU。但当 IO 设备和 CPU 同时访问主存时,可能发生冲突,为了有效地使用主存,DMA 控制器与 CPU 通常采用 3 种方式使用主存:
- 停止 CPU 访问主存
- 优点:控制简单
- 缺点:为充分发挥 CPU 对主存的利用率
- DMA 与 CPU 交替访存
- 一个 CPU 周期分为 C1 和 C2 两个周期,可让 C2 专供 CPU 访存
- 优点:不需要总线使用权的申请、建立和归还过程
- 缺点:硬件逻辑更为复杂
- 周期挪用(周期窃取)
- 周期指主存的存取周期
- DMA 访问主存有 3 种可能:CPU 此时不访存(不冲突)、CPU 正在访存(存取周期结束让出总线)、CPU 与 DMA 同时请求访存(DMA 访存优先)
- 停止 CPU 访问主存
4. DMA 方式的特点
- 由于 DMA 方式传送数据不需要经过 CPU,因此不必中断现行程序,IO 与主机并行工作,程序和传送并行工作
- DMA 方式具有下列特点:
- 它使主存与 CPU 的固定联系脱钩,主存即可被 CPU 访问,又可被外设访问
- 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现
- 主存中要开辟专用缓冲区,及时供给和接收外设的数据
- DMA 传送速度快,CPU 和外设并行工作,提高了系统效率
- DMA 在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理