组成原理-IO系统IO控制方式
Posted Mount256
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组成原理-IO系统IO控制方式相关的知识,希望对你有一定的参考价值。
文章目录
1 程序查询方式
程序查询方式的过程:
- CPU 执行初始化程序,并预置传送参数,设置计数器、设置数据首地址。
- 向 I/O 接口发送命令字,启动 I/O 设备。
- CPU 从接口读取设备状态信息,不断查询 I/O 设备状态,直到外设准备就绪。
- CPU 一旦启动 I/O,必须停止现行程序的运行,并在现行程序中插入一段程序(CPU 与 I/O 串行工作)。
- 判断传送是否结束,如果没有,继续从接口读取设备状态信息。
2 程序中断方式
2.1 中断和异常
在复习中断方式之前,先来回顾中断和异常这两个概念。CPU 内部引发的中断称作内中断,外部引发的中断称为外中断。
2.1.1 异常(内中断)
异常种类 | 例子 |
---|---|
故障(软件中断) | 非法操作码、访存缺段、访存缺页、地址越界、除数为 0、浮点运算上溢 |
自陷(软件中断) | 通过执行陷入指令来进行系统调用,此时 CPU 从用户态陷入到内核态;调试、断点事件;访管指令或陷入指令 |
终止(硬件中断) | 控制器出错、存储器校验错 |
【注意】
- 异常不可被屏蔽。
- Cache 缺失不会引起异常,因为 Cache 缺失和虚拟存储器缺页缺段不是一个原理。
- 软件中断又称为程序性异常。
补充几个概念
- 用户态(目态):用户程序运行在用户态。用户态不可以执行特权指令。
- 内核态(管态、核心态):操作系统内核程序运行在核心态。内核态可以执行除访管指令外的非特权和特权指令。
- 访管指令(陷入指令、trap 指令):用户程序执行访管指令发起系统调用,CPU 状态会从用户态进入内核态。系统调用完成后,CPU 状态会从内核态回到用户态。
- 系统调用:是一个程序接口,用户通过系统调用(即广义指令的调用)请求操作系统为其提供服务。
- 系统调用命令(广义指令):系统调用命令(广义指令)位于系统调用函数中,所以一定在内核态执行,而广义指令的调用一般发生在用户态。
2.1.2 中断(外中断)
中断种类 | 例子 |
---|---|
可屏蔽中断 INTR(硬件中断) | 由外设引发的中断大多数是可屏蔽中断,如键盘输入、I/O 中断、定时器中断、控制台中断 |
不可屏蔽中断 NMI(硬件中断) | 一些硬件故障,如电源故障(掉电)、内存故障 |
2.2 中断过程
一个完整的中断过程包括中断响应过程和中断处理过程。
2.2.1 中断响应过程
此过程由硬件自动完成,又称为中断隐指令,它并不是一条具体的指令,其过程如下:
- 关中断:保护断点和转移到中断服务程序的操作必须一气呵成,不能被再次中断。
- 保存断点:将原程序的断点存入堆栈或主存指定单元。
- 引出中断服务程序:识别中断源,取出中断服务程序的入口地址并传送给程序计数器(PC)。
注意几个要点
(1)断点、现场:
- 断点信息:指令无法读取的寄存器内容,如 PC、PSW 的内容。发生中断时,它们由硬件自动完成保护。
- 现场信息:指令可以读取的寄存器内容,如通用寄存器等。发生中断时,它们由软件(即程序员)完成保护,通常由中断服务程序中的指令把它们存入堆栈或主存指定单元。
(2)引出中断服务程序(硬件向量法之中断向量法)的过程:
识别中断源–>中断类型号–(中断向量地址形成部件)–>中断向量地址–>中断向量–>中断服务程序入口
(3)中断向量地址、中断向量、中断向量法、向量中断:
- 中断向量地址:中断向量表的各个表项的地址,即中断服务程序的指针的指针。
- 中断向量:中断向量表的各个表项的内容,指向中断服务程序的入口,即中断服务程序的指针。
- 中断向量法:这种中断方法被称为中断向量法。
- 向量中断:采用中断向量法的中断被称为向量中断。
下面是一张中断向量表:
中断向量地址(中断向量的存储地址) | 中断向量(指向中断服务程序的入口) |
---|---|
0000 0000H | 1234 5678H |
0000 0004H | 6666 8888H |
0000 0008H | 4567 8901H |
… | … |
2.2.2 中断处理过程
此过程由中断服务程序(软件)完成,其过程如下:
- 保护现场和屏蔽字:保存通用寄存器和状态寄存器的内容。
- 开中断:允许更高优先级中断请求得到响应,实现中断嵌套。
- 执行中断服务程序:中断主体部分。
- 关中断:恢复现场的操作必须一气呵成,不能被再次中断。
- 恢复现场:恢复原来通用寄存器和状态寄存器的内容。
- 开中断、中断返回:通过中断返回指令回到原程序断点处,执行该指令时,硬件自动恢复断点信息。
2.2.3 相关例题
【例 1】某设备中断请求的响应和处理时间为 100ns,每 400ns 发出一次中断请求,中断响应所允许的最长延迟是 50ns,CPU 用于该设备的 I/O 时间占整个 CPU 时间的百分比至少是?
【解】“CPU 用于该设备的 I/O 时间”即指 CPU 处理中断的时间。400ns 的 CPU 时间内可以处理一个中断,且处理时间是 100ns,其他 300ns 可以干别的。因此 100 / 400 = 25% 即可,以下几道题目都是类似的。注意,中断响应时间不算入处理中断的时间。
【例 2】某计算机主频是 50MHz,采用定时查询的方式控制设备 A 的 I/O,查询程序运行一次所用的时钟周期至少是 500。在设备 A 工作期间,为保证数据不丢失,每秒需要对其查询至少 200 次,则 CPU 用于设备 A 的 I/O 的时间占据整个 CPU 时间的百分比至少是?
【解】每秒钟的时钟周期数为 50M,每秒钟花费在查询上的时钟周期总数为 200*500,因此用于设备 A 的 I/O 的时间占据整个 CPU 时间的百分比至少是 (200*500)/50M = 0.20%。
【例 3】某设备以中断方式与 CPU 进行数据交换,CPU 主频为 1GHz,设备接口中的数据缓冲寄存器为 32 位,设备的数据传输率为 50kB/s。若每次中断开销(包括中断响应和中断处理)为 1000 个时钟周期,则 CPU 用于该设备输入/输出的时间占整个 CPU 时间的百分比最多是?
【解】数据缓冲寄存器存满需要的时间为 4B / (50kB/s) = 4B / (50*103B/s) = 80us,每次中断开销需要的时间为 1000*(1/1G) = 1us,则该设备输入/输出的时间占整个 CPU 时间的百分比最多是 1us/80us = 1.25%。
2.3 中断优先级
中断优先级分为中断响应优先级和中断处理优先级。
2.3.1 中断响应优先级(单重中断)
中断响应优先级是指 CPU 响应中断请求的先后顺序,优先级顺序由硬件决定,不可动态改变。
中断响应优先级顺序的一般原则:
- 不可屏蔽中断 > 内部异常 > 可屏蔽中断
- 内部异常:硬件故障 > 软件中断
- DMA 请求 > I/O 设备传送的中断请求
- 高速设备 > 低速设备
- 输入设备 > 输出设备
- 实时设备 > 普通设备
2.3.2 中断处理优先级(多重中断、中断屏蔽技术)
中断处理优先级是指多重中断的实际优先级处理次序,可以利用中断屏蔽技术灵活调整中断服务程序的优先级。中断屏蔽技术可以改变多个中断服务程序执行完的次序,换句话说,中断源的中断处理优先级越高,它就越早执行完中断服务程序。
中断屏蔽字的规则:
- 用“1”表示屏蔽,“0”表示可以正常中断请求。
- 每个中断源对应一个屏蔽字。每个屏蔽字中至少有一个“1”(因为至少要能屏蔽自身的中断)。
- 屏蔽字中“1”越多,优先级越高。
2.3.3 相关例题
【例】设某机器有四个中断源 A、B、C、D,其硬件排队优先次序为 A>B>C>D,现要求将中断处理次序改为 D>A>C>B,写出这四个中断源的屏蔽字。(注意题目还会考察程序运行轨迹)
【解】(1)A 的屏蔽字:因为 D>A,所以 D=0;因为需要屏蔽自身,所以 A=1。因此屏蔽字为 1110。
A | B | C | D |
---|---|---|---|
1 | 1 | 1 | 0 |
(2)B 的屏蔽字:因为 D,A,C>B,所以 D=0,A=0,C=0;因为需要屏蔽自身,所以 A=1。因此屏蔽字为 0100。
A | B | C | D |
---|---|---|---|
0 | 1 | 0 | 0 |
(3)C 的屏蔽字:因为 D,A>C,所以 D=0,A=0;因为需要屏蔽自身,所以 C=1。因此屏蔽字为 0110。
A | B | C | D |
---|---|---|---|
0 | 1 | 1 | 0 |
(4)D 的屏蔽字:因为 D 是最高级别的,所以其余全为 0;因为需要屏蔽自身,所以 D=1。因此屏蔽字为 0001。
A | B | C | D |
---|---|---|---|
0 | 0 | 0 | 1 |
3 DMA 方式
3.1 DMA 传送过程
(1)预处理:
- DMA 控制器(DMAC)接受外设发出的 DMA 请求(外设传送一个字的请求),并向 CPU 发出总线请求。
- CPU 响应此总线请求,发出总线响应信号,DMA 控制器将接管 CPU 的地址总线、数据总线和控制总线,CPU 的主存控制信号被禁止使用。
(2)数据传送:
- CPU 向 DMA 控制器指明传送数据的主存单元地址及长度,以及数据在主存和外设间的传送方向。
- DMA 控制器发出读写等控制信号,执行数据传送操作。每传送一个数据,自动修改主存地址计数和传送长度计数。
(3)后处理:
- DMA 控制器向 CPU 报告 DMA 操作的结束,执行中断服务程序。恢复 CPU 的一切权利。
3.2 DMA 传送方式
主存和 DMA 控制器之间有一条数据通路,不通过 CPU。但当 I/O 设备和 CPU
同时访问主存时,可能发生冲突,为了有效地使用主存,DMA 控制器与 CPU 通常采用以下 3 种方法使用主存:
- 停止 CPU 访问主存:CPU 处于不工作状态,未充分发挥 CPU 对主存的利用率。
- DMA 与 CPU 交替访存:一个 CPU 周期,分为 C1 和 C2 两个周期,C1 专供 DMA 访存,C2 专供 CPU 访存。
- 周期挪用(周期窃取):DMA 访存时有三种可能:CPU 此时不访存(不冲突);CPU 正在访存(存取周期结束让出总线);CPU 与 DMA 同时请求访存(I/O 访存优先)。
【注意】这里的周期指的是存取周期!
3.3 DMA 方式与中断方式的比较
项目 | 中断方式 | DMA 方式 |
---|---|---|
数据传送 | 程序控制(程序的切换–>保存和恢复现场) | 硬件控制(CPU只需进行预处理和后处理) |
中断请求 | 传送数据 | 后处理 |
响应 | 指令执行周期结束后响应中断 | 每个机器周期结束均可,总线空闲时即可响应 DMA 请求 |
场景 | CPU控制,低速设备 | DMA控制器控制,高速设备 |
优先级 | 优先级低于DMA | 优先级高于中断 |
异常处理 | 能处理异常事件 | 仅传送数据 |
3.4 相关例题
(略)
4 通道控制方式
(略)
以上是关于组成原理-IO系统IO控制方式的主要内容,如果未能解决你的问题,请参考以下文章
(计算机组成原理)第七章输入和输出系统-第四节3:I/O方式之DMA方式
系统架构设计师计算机组成与体系结构 ① ( 计算机组成 | CPU | 存储器 | 总线 | IO 外设 | CPU 组成 | 运算器 | 控制器 )