组成原理-IO系统IO控制方式
Posted Mount256
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组成原理-IO系统IO控制方式相关的知识,希望对你有一定的参考价值。
文章目录
1 程序查询方式
程序查询方式的过程:
- CPU 执行初始化程序,并预置传送参数,设置计数器、设置数据首地址。
- 向 I/O 接口发送命令字,启动 I/O 设备。
- CPU 从接口读取设备状态信息,不断查询 I/O 设备状态,直到外设准备就绪。
- CPU 一旦启动 I/O,必须停止现行程序的运行,并在现行程序中插入一段程序(CPU 与 I/O 串行工作)。
- 判断传送是否结束,如果没有,继续从接口读取设备状态信息。
相关例题
【例】在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要 100 个时钟周期,CPU 的时钟频率为 50MHz。现有鼠标和硬盘两个设备,而且 CPU 必须每秒对鼠标进行 30 次查询,硬盘以 32 位字长为单位传输数据,即每 32 位被 CPU 查询一次,传输率为 2*220B/s。求 CPU 对这两个设备查询所花费的时间比率。
【解】(1)鼠标
1s 时间内,每一个查询操作需要 100 个时钟周期,且对鼠标进行 30 次查询,则一共花费 3000 个时钟周期。
1s 时间内,CPU 的时钟周期数为 50M,所以时间比率 = 3000/50M = 0.006%。
(2)键盘
1s 时间内,硬盘传输 2*220B 数据,硬盘以 32 位字长为单位传输数据,则需要查询 2*220B/4B = 219 次。
1s 时间内,每一个查询操作需要 100 个时钟周期,且对硬盘进行 219 次查询,则一共花费 219*100 个时钟周期。
1s 时间内,CPU 的时钟周期数为 50M,所以时间比率 = (219*100)/50M = 105%。
因此,对硬盘使用查询操作是不合理的。
【注】传输率的单位一般以 10 为底,而不是像这道题目中以 2 为底。
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 相关例题
【例 1】假设磁盘传输数据以 32 位的字为单位,采用 DMA 方式与主机交换信息,其传输速率为 2MB/s,而且 DMA 的预处理需 1000 个时钟周期,DMA 完成传送后处理中断需 500 个时钟周期。如果平均传输的数据长度为 4KB,试问在硬盘工作时,50MHz 的处理器需用多少时间比率进行 DMA 辅助操作(预处理和后处理)?
【解】1s 时间内,磁盘传输 2MB 数据,DMA 可以每次传输 4KB,则 DMA 传输次数 = 2MB/4KB = 500 次。
DMA 每次传输前的预处理和传输完成后向 CPU 发起的中断处理,需要的时间周期数为 500+1000 = 1500,则 500 次 DMA 传送总共需要花费 1500*500 个时钟周期。
1s 时间内,处理器一共有 50M 个时钟周期,因此比率为 (1500*500)/50M = 1.5%。
【注】“磁盘传输数据以 32 位的字为单位”为干扰条件。因为采用 DMA 传输后,磁盘的传输工作就交给了 DMA,从 CPU 视角看相当于是 CPU 和 DMA 打交道,磁盘好像被“透明化”了。
【例 2】一个 DMA 接口可采用周期窃取方式把数据传送到存储器,它支持的最大批量为 400 个字节,总线宽度为 8 位。若存取周期为 0.2us,每处理一次中断需 5us,现有的设备的传输率为 9600bit/s。假设数据之间的传输是无间隙的,试问 DMA 方式每秒因数据传输占用处理器多少时间?如果完全采用中断方式,又需占处理器多少时间?(忽略预处理所需时间)
【解】(1)DMA 方式
1s 时间内,设备传输 9600bit = 1200B 数据,DMA 可以每次传输 400B,则 DMA 传输次数 = 1200B/400B = 3 次。
1200B 数据需要存取 1200 次,存取周期为 0.2us,则总共花费 1200*0.2 = 240us。
DMA 每次传输前的预处理和传输完成后向 CPU 发起的中断处理,所以中断时间一共为 3*5us = 15us。
占用处理器时间 = 15us+240us = 255us。
(2)中断方式
1s 时间内,设备传输 9600bit = 1200B 数据,所以中断时间 = 5*1200 = 6000us。
4 通道控制方式
(略)
5 综合例题
例 1
【例 1】假定计算机的主频为 500MHz,CPI 为 4。现有设备 A 和 B,其数据传输率分别为 2MB/s 和 40MB/s,对应 I/O 接口中各有一个 32 位数据缓冲寄存器。请回答下列问题,要求给出计算过程。
(1)若设备 A 采用定时查询 I/O 方式,每次输入/输出都至少执行 10 条指令。设备 A 最多间隔多长时间查询一次才能不丢失数据?CPU 用于设备 A 输入/输出的时间占 CPU 总时间的百分比至少是多少?
(2)在中断 I/O 方式下,若每次中断响应和中断处理的总时钟周期数至少为 400,则设备 B 能否采用中断 I/O 方式?为什么?
(3)若设备 B 采用 DMA 方式,每次 DMA 传送的数据块大小 1000B,CPU 用于 DMA 预处理和后处理的总时钟周期数为 500,则 CPU 用于设备 B 输入/输出的时间占 CPU 总时间的百分比最多是多少?
【解】(1)1s 时间内,设备 A 传输 2MB 数据,I/O 接口中有一个 32 位数据缓冲寄存器,则需要传输 2MB/4B = 0.5M 次。设备 A 最多间隔多长时间查询一次才能不丢失数据:1s/0.5M = 2us。
每次输入/输出都至少执行 10 条指令,CPI 为 4,则每次花费的时间周期数为 10*4 = 40,则总共需要花费的时间周期数 = 0.5M*40。
1s 时间内,处理器一共有 500M 个时钟周期,因此百分比 = (0.5M*40)/500M = 4%。
(2)1s 时间内,设备 B 传输 40MB 数据,I/O 接口中有一个 32 位数据缓冲寄存器,则需要传输 40MB/4B = 10M 次。
每次中断响应和中断处理的总时钟周期数至少为 400,则总共需要花费的时间周期数 = 10M*400 = 4000M。
然而 1s 时间内处理器一共只有 500M 个时钟周期,显然不能采用中断 I/O 方式。
(3)1s 时间内,设备 B 传输 40MB 数据,每次 DMA 传送的数据块大小 1000B,则需要传输 40MB/1KB = 0.04M 次。
每次用于 DMA 预处理和后处理的总时钟周期数为 500,则总共需要花费的时间周期数 = 0.04M*500。
1s 时间内,处理器一共有 500M 个时钟周期,因此百分比 = (0.04M*500)/500M = 4%。
【注】本题不计算具体时间,而是通过计算时钟周期数算出百分比,减小了运算量,是一种值得借鉴的方法。
例 2
【例 2】某计算机 CPU 主频为 500MHz,CPI为 5。假定某外设的数据传输率为 0.5MB/s,采用中断方式与主机进行数据传送,传输单位为 32 位,对应的中断服务程序包含 18 条指令,中断响应等其他开销相当于两条指令的执行时间。回答下列问题,要求给出计算过程。
(1)在中断方式下,CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?
(2)当该外设的数据传输率达到 5MB/s时,改用 DMA 方式传送数据。假定每次 DMA 传送的块大小为 5000B,DMA 预处理和后处理的总开销为 500 个时钟周期,则 CPU 用于外设 I/O 的时间占整个 CPU 时间的百分比是多少?(假设 DMA 与 CPU 之间没有访存冲突)
【解】(1)1s 时间内,外设传输 0.5MB 数据,传输单位为 32 位,则传输次数 = 0.5MB/4B = 0.125M。
一次中断花费的时钟周期数 = (18+2)*5 = 100,则 1s 时间内,中断花费的总时钟周期数 = 100*0.125M = 12.5M。
1s 时间内,处理器一共有 500M 个时钟周期,因此百分比 = 12.5M/500M = 2.5%。
(2)1s 时间内,外设传输 5MB 数据,每次 DMA 传送的数据块大小 5000B,则需要传输 5MB/5KB = 1K 次。
每次用于 DMA 预处理和后处理的总时钟周期数为 500,则总共需要花费的时间周期数 = 1K*500 = 500K = 0.5M。
1s 时间内,处理器一共有 500M 个时钟周期,因此百分比 = 5M/500M = 0.1%。
例 3
【例 3】假定 CPU 主频为 50MHz,CPI 为 4。设备 D 采用异步串行通信方式向主机传送 7 位 ASCII 字符,通信规程中有 1 位奇校验位和 1 位停止位,从 D 接收启动命令到字符送入 I/O 端口需要 0.5ms。请回答下列问题,要求说明理由。
(1)每传送一个字符,在异步串行通信线上共需传输多少位?在设备 D 持续工作过程中,每秒钟最多可向 I/O 端口送入多少个字符?
(2)设备 D 采用中断方式进行输入/输出,I/O 端口每收到一个字符申请一次中断,中断响应需 10 个时钟周期,中断服务程序共有 20 条指令,其中第 15 条指令启动 D 工作。若 CPU 需从 D 读取 1000 个字符,则完成这一任务所需时间大约是多少个时钟周期?CPU 用于完成这一任务的时间大约是多少个时钟周期?
【解】(1)传送一个 ASCII 字符,数据位 7 位,1 位起始位,1 位奇校验位和 1 位停止位,一共需要传输 10 位。
从 D 接收启动命令到字符送入 I/O 端口需要 0.5ms,所以每秒钟最多可向 I/O 端口送入 1s/0.5ms = 2000 个字符。
(2-1)完成这一任务所需时间大约是多少个时钟周期?注意这里的问题不包含“CPU”字眼,应当理解为“读取 1000 个字符所需时间大约是多少个时钟周期”。本人认为题目描述具有一定的歧义。
送入 I/O 端口后申请一次中断,中断响应需 10 个时钟周期,中断服务程序共有 20 条指令,其中第 15 条指令启动 D 工作,因此需要 10+15*4 = 70 个时钟周期。
启动 D 工作后,从 D 接收启动命令到字符送入 I/O 端口需要 0.5ms,所以还需要的时钟周期数 = 0.5ms*50MHz = 25K。
因此传送一个字符总共需要 25K+70 个时钟周期,传送 1000 个字符总共需要 1000*(25K+70) = 25,070,000 个时钟周期。
(2-2)CPU 用于完成这一任务的时间大约是多少个时钟周期?
送入 I/O 端口后申请一次中断,中断响应需 10 个时钟周期,中断服务程序共有 20 条指令,因此需要 10+20*4 = 90 个时钟周期。
因此传送 1000 个字符总共需要 1000*90 = 90000 个时钟周期。
【注】这题的思维量并不大,但是需要理解题意才能做对。
例 4
【例 4】假定某计算机的 CPU 主频为 80MHz,CPI 为 4,并且平均每条指令访存 1.5 次,主存与 Cache 之间交换的块大小为 16B,Cache 的命中率为 99%,存储器总线宽度为 32 位。请回答下列问题。
(1)该计算机的 MIPS 数是多少?平均每秒 Cache 缺失的次数是多少?在不考虑 DMA 传送的情况下,主存带宽至少达到多少才能满足 CPU 的访存要求?
(2)假定在 Cache 缺失的情况下访问主存时,存在 0.0005% 的缺页率,则 CPU 平均每秒产生多少次缺页异常?若页面大小为 4KB,每次缺页都需要访问磁盘,访问磁盘时 DMA 传送采用周期挪用方式,磁盘 I/O 接口的数据缓冲寄存器为 32 位,则磁盘 I/O 接口平均每秒发出的 DMA 请求次数至少是多少?
(3)CPU 和 DMA 控制器同时要求使用存储器总线时,哪个优先级更高?为什么?
(4)为了提高性能,主存采用 4 体交叉存储模式,工作时每 1/4 个存储周期启动一个体。若每个体的存储周期为 50ns,则该主存能提供的最大带宽是多少?
【解】(1)MIPS 指的是每秒能执行多少条指令,CPI = 4 即每条指令占用 4 个时钟周期,CPU 主频为 80MHz 即每秒一共有 80M 个时钟周期,因此每秒能执行 20M 条指令,MIPS = 20。(这里需要深刻理解 IPS、CPI 和主频的意义,而不是套公式,这样才能做得快!)
平均每条指令访存 1.5 次,而每秒能执行 20M 条指令,所以每秒访存 20M*1.5 = 30M 次。又因为 Cache 未命中率为 1%,所以缺失次数为 1%*30M = 0.3M 次。
主存与 Cache 之间交换的块大小为 16B,Cache 缺失次数为 0.3M,则 1s 时间内至少需要传送 16B*0.3M = 4.8MB,所以主存带宽至少达到 4.8MB/s。
(2)在 Cache 缺失的情况下访问主存时(缺失次数为 0.3M = 300000 次),存在 0.0005% 的缺页率,则 CPU 平均每秒产生缺页异常 300000*0.0005% = 1.5 次。
因此在 1s 时间内,发生缺页 1.5 次,页面大小为 4KB,需要访问磁盘的数据大小为 1.5*4KB = 6KB,又由于磁盘 I/O 接口的数据缓冲寄存器为 32 位,所以磁盘 I/O 接口平均每秒发出的 DMA 请求次数至少是 6KB/4B = 1.5K 次。(注意这里的 K 以 2 为底,因为题目已给出“页面大小为 4KB”)
(3)DMA 优先权更高。因为 DMA 请求得不到响应,数据就有可能丢失。
(4)4 体交叉存储模式下的存储周期为 50ns/4 = 12.5ns。因为存储器总线宽度为 32 位,所以带宽是 4B/12.5ns = 320MB/s。(注意 1ns = 109s)
以上是关于组成原理-IO系统IO控制方式的主要内容,如果未能解决你的问题,请参考以下文章
(计算机组成原理)第七章输入和输出系统-第四节3:I/O方式之DMA方式
系统架构设计师计算机组成与体系结构 ① ( 计算机组成 | CPU | 存储器 | 总线 | IO 外设 | CPU 组成 | 运算器 | 控制器 )