组成原理-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 0000H1234 5678H
0000 0004H6666 8888H
0000 0008H4567 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。

ABCD
1110

(2)B 的屏蔽字:因为 D,A,C>B,所以 D=0,A=0,C=0;因为需要屏蔽自身,所以 A=1。因此屏蔽字为 0100。

ABCD
0100

(3)C 的屏蔽字:因为 D,A>C,所以 D=0,A=0;因为需要屏蔽自身,所以 C=1。因此屏蔽字为 0110。

ABCD
0110

(4)D 的屏蔽字:因为 D 是最高级别的,所以其余全为 0;因为需要屏蔽自身,所以 D=1。因此屏蔽字为 0001。

ABCD
0001

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控制方式的主要内容,如果未能解决你的问题,请参考以下文章

IO系统

计算机组成原理——指令系统考研题

第 14 篇 IO系统 概述

(计算机组成原理)第七章输入和输出系统-第四节3:I/O方式之DMA方式

总结-1

系统架构设计师计算机组成与体系结构 ① ( 计算机组成 | CPU | 存储器 | 总线 | IO 外设 | CPU 组成 | 运算器 | 控制器 )