1.输入/输出系统基本概念

1.1.概述

现代计算机结构大体由主机和 I/O 设备(外设)。I/O 的意思就是 Input/Output,意为输入和输出。I/O 设备就是指可以将数据输入到计算机,或者可以接受计算机输出数据的外部设备

image-20230417080703038

常见的 I/O 设备如下

image-20230417080719167

主机是通过 I/O 接口(又称为 I/O 控制器或设备控制器)来协调它和外部设备之间的数据传输的

image-20230417080738398
  • I/O 控制器多种多样,也会制定相应的标准,比如下面用于控制 USB 设备的 I/O 接口。
image-20230417080809367

I/O 控制器本质就是一块芯片,会被集成在主板上

image-20230417080833164

1.2.I/O 系统的基本组成

1.2.1.I/O 硬件和 I/O 软件

  • I/O 硬件:包括外部设备,I/O 接口,I/O 总线。

  • I/O 软件:包括驱动程序、用户程序、管理程序、升级补丁等等,通常采用 I/O 指令和通道指令实现主机和 I/O 设备的信息交换。

image-20230417080938149

1.2.2.I/O 指令和通道指令

  • I/O 指令:是 CPU 指令的一部分。其格式与普通指令格式稍有区别,操作码指明了 CPU 要对 I/O 接口做什么,命令码指明了 I/O 接口要对设备做什么

    image-20230417081928042
  • 通道指令:是指通道能识别的指令通道程序提前编制好放在主存中,在含有通道的计算机中,CPU 执行 I/O 指令对通道发出命令,由通道执行一系列通道指令,代替 CPU 对 I/O 设备进行管理

注:I/O 指令与普通指令格式略有不同,操作码指明了CPU要对I/O 接口做什么,命令码指明了I/O 接口要对设备做什么。

1.3.I/O 控制方式概述

下面是一段简单的 C 语言代码,在其运行过程中会涉及 CPU 和 I/O 设备之间的交互。

#include <stdio.h>
int main()
{
	char i;
	scanf("%c",&i);//等待输入
	printf("i=%c\n",i);
	return 0;
}

当程序执行到scanf("%c",&i)时,屏幕会不断闪烁,此时 CPU 正在等待键盘输入数据。它们会通过 I/O 接口进行数据交互,所依靠的是如下三个重要的寄存器。

  • 数据寄存器:存放主机要输出到外设或外设要输入到主机的数据。
  • 控制寄存器:反映了某个外设所要执行的动作。
  • 状态寄存器:反映了当前外设的状态(比如打印机是否就绪,是否忙碌等等)。
image-20230417081042591

当输入完数据之后,CPU 是如何确定此时可以被取走数据了呢?共有三种 I/O 控制方式

  • 程序查询方式:CPU 不断轮询检查 I/O 控制器中的 “状态寄存器”,检测到状态为“已完成” 之后,再从数据寄存器中取出输入数据。
  • 程序中断方式:等待键盘 I/O 时 CPU 可以先去执行其他程序,键盘 I/O 完成之后 I/O 控制器向 CPU 发出中断请求,CPU 响应中断请求,并取走数据。
  • DMA控制方式:主存与高速/O设备之间有一条直接数据通路(DMA总线)。CPU向DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写(如1KB为一整块),才向CPU发出一次中断请求。DMA控制器与主存每次传送1个字当传送完一整块数据后才向CPU发出中断请求。

这三种方式具体的控制过程是本章的核心,所以这里就不多解释了,否则非但解释不清,而且大家还会感觉很乱

image-20230417081254404

思考:对于快速/O设备,如“磁盘”,每准备好一个字就给CPU发送一次中断请求,会导致什么问题? 答:CPU需要花大量的时间来处理中断服务程序,CPU利用率严重下降。

1.4.通道控制方式了解

  • 我们的个人电脑的 I/O 设备是有限的,所以 CPU 管理起来绰绰有余,但是像大型商业机或服务器的 I/O 设备数目是相当多的,如果还用 CPU 来管理,那显然不合理。
  • 通道是具有特殊功能的处理器能对/o设备进行统一管理。

通道控制方式:除了上述三种控制方式外,在通道控制方式中,通道是一种具有特殊功能的处理器,可以对 I/O 设备进行统一管理。

image-20230417081546329

通道可以理解为 “弱鸡版” 的 CPU,通道可以识别并执行一系列的通道指令

image-20230417081712075

2.外部设备之输入和输出设备

外部设备又称为外围设备,是除了主机以外的,能直接或间接与计算机交换信息的装置,分为

  • 输入设备:用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。
  • 输出设备:用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。
  • 外存设备:是指除计算机内存及 CPU 缓存以外的存储器。硬磁盘、光盘等是最基本的外存设备。

2.1.输入设备

2.1.1.键盘

键盘:键盘是最常用的输入设备,通过它可以发出命令或输入数据。每个键相当于一个开关,当按下键时,电信号连通;当松开键时,弹簧把键弹起,电信号断开。键盘输入信息可以分为如下三个步骤

  • 查出按下的是哪个键。
  • 将该键翻译成能被主机接受的编码,比如 ASCII 码。
  • 将编码传送给主机。
image-20230417082331851

2.1.2.鼠标

鼠标:鼠标是常用的定位输入设备,它把用户的操作与计算机屏幕上的位置信息相联系,常用的有机械式和光电式两种

  • 光电式:光电式鼠标使用一个小型的光学传感器来检测桌面上的纹理和移动。当鼠标移动时,传感器通过检测纹理的变化来传输信号给计算机。光电式鼠标通常使用发光二极管和光敏二极管来检测鼠标的移动。

  • 机械式:采用机械开关来检测鼠标的移动。在每个开关下方有一个小电机,当鼠标移动时,电机会转动,触发开关,传输信号给计算机。机械式鼠标通常使用滚轮和光学传感器来跟踪鼠标的移动。

    image-20230417082350539

2.2.输出设备

2.2.1.显示器

2.2.1.1.分类

按显示设备所用的显示器件分类

  • 阴极射线管(CRT)显示器:CRT显示器主要由电子枪、偏转线圈、荫罩、高压石墨电极和荧光粉涂层及玻璃外壳5部分组成。具有可视角度大、无坏点、色彩还原度高、色度均匀、可调节的多分辨率模式、响应时间极短等目前前LCD难以超过的优点

  • 液晶显示器(LCD)

    • 原理:利用液晶的电光效应,由图像信号电压直接控制薄膜晶体管,再间接控制液晶分子的光学特性来实现图像的显示。

    • 特点:体积小、重量轻、省电、无辐射、绿色环保、画面柔、不伤眼等。

  • LED(发光二极管) 显示器

    • 原理:通过控制半导体发光二极管进行显示,用来显示文字、图形、图像等各种信息。
  • .......

注:LCD与LED是两种不同的显示技术,LCD是由液态晶体组成的显示屏,而LED则是由发光二极管组成的显示屏。与LCD相比,LED显示器在亮度、功耗、可视角度和刷新速率等方面都更具优势。

按所显示的信息分类

  • 字符显示器:显示字符的方法以点阵为基础。点阵是指由m×n个点组成的阵列。点阵的多少取决于显示字符的质量和字符窗口的大小。字符窗口是指每个字符在屏幕上所占的点数,它包括字符显示点阵和字符间隔将点阵存入由ROM构成的字符发生器中,在CRT进行光栅扫描的过程中,从字符发生器中依次读出某个字符的点阵,按照点阵中0和1代码不同控制扫描电子束的开或关,从而在屏幕上显示出字符。对应于每个字符窗口,所需显示字符的ASCII代码被存放在视频存储器VRAM中,以备刷新。
image-20230417084123043
image-20230417084314904
  • 图形显示器:将所显示图形的一组坐标点和绘图命令组成显示文件存放在缓冲存储器中,缓存中的显示文件传送给矢量(线段)产生器,产生相应的模拟电压,直接控制电子束在屏幕上的移动。为了在屏幕上保留持久稳定的图像,需要按定的频率对屏幕进行反复刷新。这种显示器的优点是分辨率高且显示的曲线平滑。目前高质量的图形显示器采用这种随机扫描方式。缺点是当显示复杂图形时,会有闪烁感。
    • 按扫描方式不同可分为:
      • 光栅扫描显示器
      • 随机扫描显示器
  • 图像显示器

2.2.1.2.参数信息

①:屏幕大小

  • 对角线长度表示,常用的有 12~29 英寸。

②:分辨率

  • 所能表示的像素个数,屏幕上的每个光点就是一个像素,以宽、高的像素乘积表示。例如:800×600、1024×768 和 1280×1024 等等。

③:灰度级

  • 是指黑白显示器中所显示的像素点的亮暗差别,在彩色显示器中则表现为颜色的不同。灰度级越多,图像层次就越清晰逼真。典型的有 8 位(256 级)、16 位等。n位可以表示2n种不同的亮度或颜色

④:刷新率

  • 光点只能保持极短的时间便会消失,为此必须在光点消失之前再重新扫描显示一遍,这个过程称之为刷新。刷新率是指单位时间内扫描整个屏幕内容的次数,按照人的视觉生理,刷新频率大于 30Hz 时才不会感到闪烁,通常显示器刷新频率在 60Hz~120Hz。

⑤:VRAM(显存)

  • 也称为刷新存储器,为了不断提高刷新图像的信号,必须把每一帧的图像信息存储在刷新存储器中。其存储内容由图像分辨率和灰度级决定,分辨率越高,灰度级越多,刷新存储器容量就越大。

  • VRAM 容量 = 分辨率 × 灰度级位数

  • VRAM 带宽 = 分辨率 × 灰度级位数 × 帧频

    image-20230417082500517

    \(1440**900*3B≈3.7MB\)(一帧的大小即为显存的理论最小值)

    如果显示器刷新率=60Hz,则显存带宽至少要\(3.7*60=222MB/S\)

注:现代计算机中,显存除了作为当前显示帧的缓存,还会用于保存即将渲染的图像数据。集成显卡计算机中,通常分配一片内存作为显存。

2.2.2.打印机

2.2.2.1.按印字原理不同分类

  • 击打式打印机:利用机械动作使印字机与色带或纸相撞而打印字符。如:机打发票银行回执单(防伪性好)。

    • 优点:设备成本低印字质量好。

    • 缺点:噪声大速度慢。

image-20230417084743014
  • 非击打式打印机:采用电、磁、光、喷墨等物理或化学方法印刷字符。

    • 优点:速度快噪声小。
    • 缺点:成本高。
image-20230417084805581

2.2.2.2.按打印机工作方式不同分类

  • 串行打印机: 逐字打印,速度慢。

  • 行式打印机: 逐行打印,速度快。

2.2.2.3.按工作方式不同分类

针式打印机

  • 原理:在联机状态下,主机发出打印命令,经接口、检测和控制电路,间歇驱动纵向送纸和打印头横向移动,同时驱动打印机间歇冲击色带,在纸上打印出所需内容。
  • 特点:针式打印机擅长 “多层复写打印”,实现各种票据或蜡纸等的打印。它工作原理简单,造价低廉,耗材(色带) 便宜,但打印分辨率和打印速度不够高。

喷墨打印机

  • 原理:带电的喷墨雾点经过电极偏转后,直接在纸上形成所需字形。彩色喷墨打印机基于三基色原理,即分别喷射 3 种颜色墨滴,按一定的比例混合出所要求的颜色。
  • 特点:打印噪声小,可实现高质量彩色打印,通常打印速度比针式打印机快; 但防水性差,高质量打印需要专用打印纸。

激光打印机

  • 原理:计算机输出的二进制信息,经过调制后的激光束扫描,在感光鼓上形成潜像,再经过显影、车印和定影,便在纸上得到所需的字符或图像。

  • 特点:打印质量高、速度快、噪声小、处理能力强; 但耗材多、价格较贵、不能复写打印多份,且对纸张的要求高。激光打印机是将激光技术和电子显像技术相结合的产物。感光鼓 (也称为硒鼓) 是激光打印机的核心部件。

3.I/O接口

image-20230417091913236

3.1.I/O 接口(I/O 控制器)

I/O 接口(I/O 控制器):是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。主机和外设具有各自的工作特点,它们在信息形式和工作速度上有很大的差异,接口正是为了解决这些差异而设置的

image-20230417085504048

3.2.I/O 接口的功能

I/O 接口的主要功能:

  • 实现主机和外设的通信联络控制:解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间的信息交换,以保证整个计算机系统能统一,协调地工作
  • 进行地址译码和设备选择:CPU 送来外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息。
  • 实现数据缓冲:CPU 与外设之间的速度往往不匹配,为了消除速度差异,接口必须设置数据缓冲寄存器,用于数据的暂存,以避免速度不一致而丢失数据。
  • 信号格式的转换:外设与主机两者的电平,数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换,并 / 串或串 / 并转换,模 / 数或数 / 模转换等等。
  • 传送控制命令和状态信息:CPU 要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时,则将 “准备好” 状态信息送回接口中的状态寄存器,并反馈给 CPU。外设向 CPU 提出中断请求,CPU 也有相应的响应信号反馈给外设。
image-20230417085539566

3.3.I/O 接口基本结构

I/O 接口基本结构:

  • 内部接口:与系统总线相连,实质上是与内存、CPU 相连。数据的传输只能是并行传输 (注意这句话要辩证的看待,早期计算机的确是靠并行,但现在趋势是从并行转向串行)。
  • 外部接口:通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此 I/O 接口需要具有串 / 并转换功能。
image-20230417085618338

实际图:

image-20230417085634957

3.4.I/O 接口的工作原理

I/O 接口的工作原理:

  • 发命令:CPU 发送命令字(控制字)到 I/O 控制寄存器中,向设备发送命令(此过程需要驱动程序的协助),然后在 I/O 控制逻辑的控制下对设备发出相应命令。
  • 读状态:CPU 从状态寄存器中读取状态字,获得设备或 I/O 控制器的状态信息。
  • 读写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换。
image-20230417085756756

注意

  • 控制寄存器、状态寄存器在使用时间上是错开的,因此可以将其合二为一,使用一个寄存器完成两项功能。
  • 上图中的各种寄存器称为 I/O 端口(数据端口,状态端口,控制端口)。
  • CPU 通过地址线指明它要读写数据的端口。
  • CPU 通过控制线发出读写 I/O 端口的信号、中断请求信号等。
  • CPU 通过数据线读写数据,读取状态和中断类型号等等。
  • 每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备。

3.5.I/O 端口及其编址

I/O 端口是指接口电路中可被 CPU 直接访问的寄存器,主要有数据端口,状态端口和控制端口,若干端口加上相应的控制逻辑电路组成接口。通常,CPU 能对数据端口进行读写操作,但对状态端口只能进行读操作,对控制端口只能进行写操作

image-20230417085906494

I/O 端口及其编址:I/O 端口要想能够被 CPU 访问,就必须要对各个端口进行编号,每个端口对应一个端口地址,编址方式有统一编址和独立编址两种

3.5.1.统一编址

统一编址:又称存储器映射方式,是把 I/O 端口当作存储器的单元进行地址分配,这种方式 CPU 不需要设置专门的 I/O 指令,用统一的访存指令就可以访问 I/O 端口。靠不同的地址码区分内存和I/O设备。访存类的指令都可以访问I/O端口 (RISC机器常用)。

  • 优点:不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高;端口有较大的编址空间读写控制逻辑电路简单。
  • 缺点:端口占用了主存地址空间,使主存地址空间变小外设寻址时间长(地址位数多,地址译码速度慢)。
image-20230417085942810

例如:系统总线中地址线共10根,则可以访问的存储单元个数为210=1024个,假设要给10个I/O端口编址:

  1. 0~9表示I/O地址,10~1023为主存单元地址。
  2. 0~1013表示主存单元地址,1014~1023为10地址。
  3. 10~19表示I/O地址,0~9、20~1023为主存单元地址。

3.5.2.独立编址

独立编址:又称 I/O 映射方式,I/O 端口的地址空间与主存地址空间是两个独立的地址空间,因而无法从地址码的形式上区分,需要设置专门的 I/O 指令来访问 I/O 端口。

不同的指令区分内存和I/O设备。只能用专门的I/O指令访问I/O端口(Intel处理器常用,IN、OUT就是IO指令)。

  • 优点:使用专用I/O指令,程序编制清晰;I/O端口地址位数少,地址译码速度快;I/O端口的地址不占用主存地址空间。
  • 缺点:I/O指令少,一般只能对端口进行传送操作,程序设计灵活性差;尤其需要 CPU 提供存储器读写、I/O设备读/写两组控制信号,增加了控制逻辑电路的复杂性。
image-20230417090130856

3.6.I/O 接口的类型

按数据传送方式分类:

  • 并行接口:一个字节或一个字所有位同时传送。

  • 串行接口:一位一位的传送。

注:这里所说的数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行传送的。接口要完成数据格式转换。

按主机访问 I/O 设备的控制方式分类:

  • 程序查询接口
  • 中断接口
  • DMA 接口

按功能选择的灵活性分类:

  • 可编程接口
  • 不可编程接口

3.7.I/O接口的连接电路

唐版教材示意图:

  • 数据线=数据总线

  • 设备选择线=地址总线

  • 状态线、命令线=控制总线

I/O接口的功能(具体操作)

  • 设备选址
  • 传送命令
  • 传送数据
  • 反映I/O设备的工作状态
image-20230417092857613

3.8.I/O接口的基本结构

image-20230417093245453
image-20230417093333441

4.I/O方式之程序查询方式

image-20230417103139282

4.1.I/O 控制方式

I/O 控制方式:I/O 系统实现主机与 I/O 设备之间的数据传送,可以采用不同的控制方式,各种方式在代价、性能、解决问题的着重点等方面各不相同,常用的 I/O 方式有程序查询,程序中断,DMA 和通道等等,其中前两种方式更依赖于 CPU 中程序指令的执行

image-20230417093715340

4.2.程序查询方式

程序查询方式:信息交换的控制完全由主机程序实现,程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)。主机进行 I/O 操作时,先发出询问信号,读取设备的状态并根据设备状态决定下一步操作究竟是进行数据传送还是等待。

  • 特点: CPU 一旦启动 I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。因此有 “踏步” 等待现象,CPU 与 I/O 串行工作。

  • 优点 :接口设计简单,设备量少。

  • 缺点:CPU 在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间年内只能和一台外设交换信息,效率大大降低。

大致流程如下

  1. CPU 执行初始化程序,并预置传送参数。
  2. 向 I/O 接口发出命令字,启动 I/O 设备。
  3. 从外设接口读取状态信息。
  4. CPU 不断查询 I/O 设备状态,直到外设准备就绪。
  5. 传送一次数据。
  6. 修改地址和计数器参数。
  7. 判断传送是否结束,若未结束转至第 3 步,直到计数器为 0。
image-20230417093850598

4.3.相关例题

在程序查询方式的输入 / 输出系统中,假设不考虑处理时间,每一个查询操作需要 100 个时钟周期,CPU 的时钟频率为 50MHz。现有鼠标和硬盘两个设备,而且 CPU 必须每秒对鼠标进行 30 次查询,硬盘以 32 位字长为单位传输数据,即每 32 位被 CPU 查询一次,传输率为 \(2 X 2 ^{20} B/s\)。求 CPU 对这两个设备查询所花费的时间比率,由此可得出什么结论?

从时间的角度理解:

一个时钟周期为: $ = 20ns$。

一个查询操作耗时:\(100×20 ns=2000ns\)

①对于鼠标

每秒查询鼠标耗时:$30×2000ns=60000 ns $

查询鼠标所花费的时间比率:$=0.006 % $

②对于硬盘

每 32 位需要查询一次,每秒传送 $2× 2^{20}B $

每秒需要查询 $ =2^{19} $ 次 。

查询硬盘耗时: $2^{19} ×2000ns=512×1024×2000 n × 10^{9} ns $

查询硬盘所花费的时间比率: $ = 105 % $

可见,即使 CPU 将全部时间都用于对硬盘的查询,也不能满足磁盘传输的要求,因此CPU 一般不采用程序查询方式与磁盘交换信息。

image-20230417094802946

5.I/O方式之程序中断方式

image-20230417100951303

5.1.中断的基本概念

image-20230417095413455

中断:中断是指在计算机执行现行程序的过程中,出现某些急需要处理的异常情况或特殊请求,CPU 暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕之后 CPU 又自动返回现行程序的断点处,继续执行原程序。

image-20230417095131882

CPU 在程序中安排好于某个时刻启动某台外设,然后 CPU 继续执行原来的程序,不需要像查询方式那样一直等待设备就绪。在可以响应中断的条件下,CPU 暂时中止现在执行的程序,转去执行中断服务程序为外设服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成之后,CPU 返回原来的程序。

image-20230417095443930

中断时 CPU 会离开原来的程序而跑去执行其他程序,那么原来的程序是如何保证执行完成的确定性?也就是说不能出现 CPU 回来时还有 “这些程序究竟有没有执行过?” 这样的疑问,这一点和操作系统中锁的含义类似。因此为了实现操作的原子性,我们也需要这样一把锁,保证 CPU 在执行一段程序时不会受到中断的干扰,或者说在这个确定的周期内 CPU 必须保证确确实实执行完了原来的程序,然后才能响应中断,我们把这样的锁称之为 CPU 的关中断和开中断。

  • 关中断:不会响应中断信号

  • 开中断:响应中断信号

    image-20230417095214801

如何实现呢?还记得 PSW标志位吗?其中的 IF(Interrupt Flag) 如果为 1 表示开中断(允许中断),如果为 0 表示关中断(不允许中断)。

  • 注意:IF=0 屏蔽的是普通中断,但是像掉电,关机这种中断是无法被屏蔽的,也是必须被响应的。
image-20230417095257001

5.2.中断执行流程

中断执行流程

  • 中断请求: 中断源向 CPU 发送中断请求信号。
  • 中断响应:响应中断的条件。
  • 中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。
  • 中断处理:中断隐指令和中断服务程序。

5.2.1.中断请求

中断请求:每个中断源向 CPU 发出中断请求的时间是随机的,因此为了记录中断时间并区分不同的中断源,中断系统需要对每个中断源设置中断请求触发器INTR,当其状态为 “1” 时,表示中断源有请求,这些触发器可组成中断请求标记寄存器,该寄存器可以集成在 CPU 中,也可以分散在各个中断源中。

image-20230417095518380

5.2.1.1.内中断和外中断

  • 外中断:是指来自处理器和内存以外的部件引起的中断,包括 I/O 设备发出的 I/O 中断、外部信号中断 (如用户按 Esc 键),以及各种定时器引起的时钟中断等。外中断在狭义上一般称为中断 (后文若未说明,一般是指外中断)。

  • 内中断:是指在处理器和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、存取访问控制错、算术操作溢出、数据格式非法、除数为零、非法指令、用户程序执行特权指令、分时系统中的时间片中断及用户态到核心态的切换等。

5.2.1.2.硬件中断和软件中断

  • 硬件中断:通过外部的硬件产生的中断。属于外中断。

  • 软件中断:通过某条指令产生的中断,这种中断是可以通过编程实现的。属于内中断。

5.2.1.3.非屏蔽中断和可屏蔽中断

  • 非屏蔽中断:是一种硬件中断,此种中断通过不可屏蔽中断请求NMI控制,不受中断标志位IF的影响,即使在关中断 (IF=0) 的情况下也会被响应。

  • 可屏蔽中断:也是一种硬件中断,此种中断通过中断请求标记触发器INTR控制,且受中断标志位IF的影响,在关中断情况下不接受中断请求。

5.2.2.中断判优

中断判优:由于许多中断源提出中断请求的时间都是随机的,因此当多个中断源同时提出请求时,需要通过中断判优逻辑确定响应哪一个中断源的请求,中断系统在任一瞬间只能响应一个中断源的请求。

用硬件实现中断判优依靠硬件排队器

  • 中断会按照优先级排布,当较高优先级发出中断时通过逻辑与非结果会使较低优先级的中断请求信号输出为 0,以此完成判优。
  • 计算机大多采用硬件判优。
image-20230417095532647

用软件实现中断判优依靠查询程序

image-20230417095545595

不同中断有不同的优先级,这些优先级是规定好的

  • 硬件中断属于最高级,其次是软件中断。
  • 非屏蔽中断优于可屏蔽中断。
  • DMA 请求优于 I/O 设备传送的中断请求。
  • 高速设备优于低速设备。
  • 输入设备优于输出设备。
  • 实时设备优于普通设备。

5.2.3.中断响应

中断响应:CPU 响应中断满足的三个条件

  • 中断源有中断请求
  • CPU 允许中断及开中断。
  • 一条指令执行完毕,且没有更紧迫的任务。

5.2.4.中断隐指令

5.2.4.1.中断隐指令概念

中断隐指令:CPU 响应中断后,经过某些操作,就会转去执行中断服务程序,这些操作是由硬件直接实现的,称其为中断隐指令。

image-20230417095620686

中断隐指令并不是指令系统中的一条真正的指令,而是cPU在检测到中断请求时自动完成的一系列动作,它没有操作码,所以中断隐指令是一种不允许也不可能为用户使用的特殊指令,其完成的操作如下

  • 关中断:在中断服务程序中,为了保护中断现场 (即 CPU 主要寄存器中的内容) 不被新的中断所打断,必须关中断,以此保证被中断的程序在中断服务程序执行完毕后能继续正确地执行
  • 保存断点:为保证在中断服务程序执行完毕后能正确地返回原来的程序,必须将原来程序的断点(即 PC 的内容)保存起来。这一点在 (计算机组成原理) 第五章中央处理器 - 指令执行过程(取指周期、间址周期、执行周期和中断周期)中有过详细介绍。
  • 引出中断服务程序:其实质是取出中断服务程序的入口地址并传送给程序计数器 PC。

5.2.4.2.确定中断服务程序的入口地址的方法

其中,确定中断服务程序的入口地址共有如下两种方法

  • 软件查询法
  • 硬件向量法

软件查询法:CPU 必须找到中断服务程序的入口地址,称之为中断向量。系统中的全部中断向量会集中存放到存储器的某个区域内,这个存放中断向量的存储器称之为中断向量表,也即服务程序入口地址表。

  • 中断向量可以理解为函数的指针。

  • 中断向量地址就是指向函数指针的指针 。

    image-20230417095815193

硬件向量法:依靠排队器,每一个中断服务被响应后会有其对应的输入,由中断向量地址形成部件映射后便会形成独特的向量,最终会由向量地址找到对应的入口地址 。

image-20230417100132593

5.2.5.中断处理

中断服务程序的主要任务如下【此部分可结合 (计算机组成原理) 第五章中央处理器 - 第二节:指令执行过程(取指周期、间址周期、执行周期和中断周期)理解】。

  • 保护现场: 保存通用寄存器和状态寄存器的内容(即保存 ACC 寄存器的值),以便返回原程序后可以恢复 CPU 环境,可以使用堆栈,也可以使用特定存储单元。

  • 中断服务: 主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲寄存器 (中断服务的过程中有可能会修改 ACC 寄存器的值)。

  • 恢复现场: 通过出栈指令或取数指令把之前保存的信息送回寄存器中。

  • 中断返回: 通过中断返回指令回到原程序断点处。

5.3.多重中断和中断屏蔽技术

5.3.1.单重中断和多重中断

  • 单重中断:CPU 在执行中断服务程序的过程中,又出现了新的更高优先级的中断请求,而 CPU 对新的中断请求不予响应。

  • 多重中断:CPU 在执行中断服务程序的过程中,又出现了新的更高优先级的中断请求,若 CPU 暂停现行的中断服务程序,转去执行新的中断请求。

image-20230417100419711

实现多重中断需要格外注意关中断和开中断的时机,以及屏蔽字(中断屏蔽技术)。

image-20230417100436704

5.3.2.中断屏蔽技术

中断屏蔽技术:多重中断虽然支持暂停一个中断服务程序然后再响应另一个中断,但不是所有中断都会响应,像键盘这些低速设备优先级并不高,所以就需要一个屏蔽字,指明接下来哪些中断信号应该被忽视

中断屏蔽技术主要用于多重中断,CPU 要具备多重中断的功能,需要满足下列条件

  • 在中断服务程序中提前设置开中断指令。
  • 优先级别高的中断源有权中断优先级低的中断源。
  • 每个中断源都有一个屏蔽触发器,1 表示屏蔽该中断源的请求,0 表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。

具体来说

  • 一般用 1表示屏蔽 0 表示正常申请。
  • 每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
  • 屏蔽字中1越多,优先级越高。每个屏蔽字中至少有一个1至少要能够屏蔽自身的中断)。
image-20230417100528747

设某机有 4 个中断源 A、B、C、D,其硬件排队优先次序为 A>B>C>D, 现要求将中断处理次序改为 D>A>C>B。

  1. 写出每个中断源对应的屏蔽字。
  2. 按下图所示的时间轴给出的 4 个中断源的请求时刻,画出 CPU 执行程序的轨迹。设每个中断源的中断服务程序时间均为 20us。
image-20230417100749101

5.4.程序中断方式

  • 讲完了前面那么多关于中断的预备知识后,现在回归主题——引入中断系统后如何控制 I/O 系统的数据读写工作

程序中断方式:在正常情况下,CPU 正在运行某段程序,该程序有可能使用到外部设备。比如从该外部设备输入一个字符

  • 首先会向该 I/O 设备发出 I/O 指令,启动该设备,接着外部设备就会去工作,准备 CPU 想要的数据和信息。
  • 在外部工作的过程中,CPU 可以继续运行。
  • 当 I/O 设备完成工作后,会给 CPU 发送一个中断请求信号
  • 如下图,CPU 在 K 处检测到了信号,于是对其进行处理,处理完成之后返回 K+1 位置,继续运行。
image-20230417101523445

假定 CPU 主频为 50MHz,CPI 为 4。设备 D 采用异步串行通信方式向主机传送 7 位 ASCII 字符,通信规程中有 1 位奇校验位和 1 位停止位,从 D 接收启动命令到字符送入 I/0 端口需要 0.5ms。

1)每传送一个字符,在异步串行通信线上共需传输多少位?在设备D持续工作过程中,每秒钟最多可向I/O端口送入多少个字符?

2)设备 D 采用中断方式进行输入 / 输出,示意图如下:

image-20230417101536740

I/O 端口每收到一个字符申请一次中断,中断响应需 10 个时钟周期,中断服务程序共有 20 条指令,其中第 15 条指令启动D工作。若 CPU 需从 D 读取 1000 个字符,则完成这一任务所需时间大约是多少个时钟周期? CPU 用于完成这一任务的时间大约是多少个时钟周期? 在中断响应阶段 CPU 进行了哪些操作?

5.5.拓展

无标题

6.I/O方式之DMA方式

image-20230417103011520

6.1.什么是 DMA 方式

DMA 方式:DMA 方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU 与外设并行工作。DMA 方式在外设与内存之间开辟一条 “直接数据通道”,信息传送不再经过 CPU,降低了 CPU 在传送数据时的开销,因此称为直接存储器存取方式。由于数据传送不需要经过 CPU,也就不需要保护,恢复 CPU 现场等繁琐操作。此种方式适用于磁盘机、磁带机等高速设备大批量数据的传送,它的硬件开销较大。

如下图,CPU 向 DMA 控制器指明要输入还是输出、要传送多少个数据、以及数据在主存、外设中的地址

  • 传送前:接受外设发出的 DMA 请求(外设传送一个字的请求),并向 CPU 发出总线请求。
  • 传送前:CPU 响应总线请求,发出总线响应信号,接管总线控制权,进入 DMA 操作周期。
  • 传送时:确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
  • 传送时:规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
  • 传送后:向 CPU 报告 DMA 操作的结束。
image-20230417102151241

6.2.DMA 控制器组成

DMA 控制器组成:

  • 主存地址寄存器:简称 AR,存放要交换数据的主存地址。
  • 传送长度计数器:简称 WC,记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号。
  • 数据缓冲寄存器:暂存每次传送的数据。
  • DMA 请求触发器:每当 I/O 设备准备好数据,给出一个控制信号,使 DMA 请求触发器置位。
  • 控制 / 状态逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对 DMA 请求信号和 CPU 相应信号进行协调和同步。
  • 中断机构:当一个数据块传送完毕之后触发中断机构,向 CPU 提出中断请求。
image-20230417102322168

注意:在 DMA 传送过程中,DMA 控制器将接管 CPU 的地址总线、数据总线和控制总线,CPU 的主存控制信号被禁止使用,而当 DMA 传送结束之后,将恢复 CPU 的一切权利并开始执行其操作,由此可见,DMA 控制器必须具有控制系统总线的能力。

6.3.DMA 传送过程

6.3.1.预处理

DMA 控制器组成:由 CPU 完成一些必要的准备工作。首先, CPU 执行几条 I/O 指令,用以测试 I/O 设备状态,再向 DMA 控制器的有关寄存器置初值、设置传送方向,启动该设备等等。然后 CPU 继续执行原来的程序,直到 I/O 设备准备好发送的数据(输入情况)或接受的数据(输出情况)时,I/O 设备向 DMA 控制器发送 DMA 请求,再由 DMA 控制器向 CPU 发送总线请求,用以传输数据。

  • 主存起始地址 ->AR
  • I/O 设备地址 ->DAR
  • 传送数据个数 ->WC
  • 启动 I/O 设备
image-20230417102412120

6.3.2.数据传送

数据传送:DMA 的数据传输可以单字节(或字)为基本单位,也可以数据块为基本单位。对于以数据块为单位的传送(如硬盘),DMA 占用总线后的数据输入和输出操作都是通过循环来实现的。需要指出的是,这一循环也是由 DMA 控制器而非通过 CPU 执行程序实现的,即数据传送阶段完全由 DMA(硬件)控制。

  • 设备将输入写入 DR,发出 DMA 请求。
  • 控制逻辑检测到一个数据后,向 CPU 发出总线请求,CPU 给予反馈信号。
  • DMA 控制器接管总线,进行数据传送。
  • 主存地址计数器 + 1,长度计数器 + 1。
  • 传输完多个字后,长度计数器溢出,溢出信号传送给中断机构,向 CPU 发出中断请求。
image-20230417102425860

6.3.3.后处理

后处理:DMA 控制器向 CPU 发出中断请求:CPU 执行中断服务程序做 DMA 结束处理,包括校验送入主存的数据是否正确,测试传送过程中是否出错(如果出错则转入诊断程序)以及决定是否继续使用 DMA 传送其他数据块等等。

image-20230417102527875

接着,CPU 继续执行主程序

6.4.DMA 方式的特点

主存和 DMA 接口之间有一条 “直接数据通路”,由于 DMA 方式传送数据不需要经过 CPU,因此不必中断线性程序,I/O 主机并行工作,程序和传送并行工作。

DMA 方式特点:

  • 它使主存与 CPU 的固定联系脱钩,主存既可以被 CPU 访问,又可以被外设访问。
  • 在数据块传送时,主存地址的确定、传送数据的计数都有硬件电路直接实现。
  • 主存开辟专门的数据缓冲区,及时供给和接受外设的数据。
  • DMA 传送速度快,CPU 和外设并行工作,提高了系统效率。
  • DMA 在传送开始前要通过程序进行预处理,结束之后要通过中断方式进行后处理。

6.5.DMA 传送方式

DMA 传送方式:主存和 DMA 控制器之间有一条数据通路,因此主存和 I/O 设备之间交换信息时,不通过 CPU。但是当 I/O 设备和 CPU 同时访问主存时,可能发生冲突,为了有效地使用主存,DMA 控制器和 CPU 通常采用以下三种方法使用主存

6.5.1.停止 CPU 访问主存

停止 CPU 访问主存:这种方式是当外设需要传送成组数据时,由 DMA 接口向 CPU 发送一个信号,要求 CPU 放弃地址线、数据线和有关控制线的使用权,DMA 接口获得总线控制权后,开始进行数据传送。数据传送结束后,DMA 接口通知 CPU 可以使用主存, 并把总线控制权交还给 CPU。在这种传送过程中,CPU 基本处于不工作状态或保持原始状态。

6.5.2.DMA 和 CPU 交替访问主存

DMA 和 CPU 交替访问主存:DMA 与 CPU 交替访存,这种方式适用于 CPU 的工作周期比主存存取周期长的情况。例如,若 CPU 的工作周期是 1.2μs,主存的存取周期小于 0.6μs,则可将一个 CPU 周期分为 C1 和 C2 两个周期, 其中 C1 专供 DMA 访存,C2 专供 CPU 访存。这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过 C1 和 C2 分时控制的。

image-20230417102741513

6.5.3.周期挪用(周期窃取)

周期挪用(周期窃取):这种方式是前面两种的折中操作。当 I/O 设备没有 DMA 请求时,CPU 按程序的要求访问主存,一旦 I/O 设备有了 DMA 请求,就会有以下三种情况

  • ****CPU 不再访存**:因此 I/O 的访存请求与 CPU 未发生冲突。
  • CPU 正在访存 **:此时必须等待存取周期结束后,CPU 再将总线占有权让出。
  • I/O 和 CPU 同时请求访存,出现访存冲突:此时 CPU 要暂时让出总线占有权,由 I/O 设备挪用一个或多个存取周期。
image-20230417102829847

6.6.DMA 和中断对比

image-20230417102858560