组成原理-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 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 相关例题

(略)

4 通道控制方式

(略)

以上是关于组成原理-IO系统IO控制方式的主要内容,如果未能解决你的问题,请参考以下文章

IO系统

第 14 篇 IO系统 概述

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

总结-1

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

计算机组成原理和结构图式(第一章 概论)