关于我

输入输出系统

第七章_输入输出系统

*7.1 输入输出系统和 IO 控制方式

本小节思维导图如下图所示: 思维导图

*7.1.1 I / O 系统的基本概念

首先我们需要知道,主机是通过 I / O 接口和 I / O 设备进行交互的,如下图所示: 现在的 I / O 接口(芯片)通常集成在南桥芯片的内部。 交互 I / O 硬件和软件 的概念如下图所示: I / O 硬件和软件

*7.1.2 I / O 控制方式

对于 I / O 控制方式简介 如下图所示: I/O 控制方式简介 由于快速 I/O 设备使用程序中断方式会导致 CPU 利用率严重下降。因此产生了 DMA 的控制方式DMA 有的大型机,中型机可能会接上超多的 I/O 设备,如果都让 CPU 来管理,那么 CPU 就太累了,因此采用 通道(弱化版 CPU) 来进行 I / O 接口的统一管理: 通道

*7.2 外部设备

常见输入设备如下图所示: 现在鼠标都是光电式。 常见输入设备 常见的输出设备如下图所示: 显示器的常见性质: 注:现代计算机中显存除了当前显示帧的缓存,还会用于保存即将渲染的图像数据。集成显卡计算机通常分出一篇内存作为显存。 显示器的常见性质 显示器的分类: 显示器的分类 打印机: 打印机

7.3 I / O 接口

本小节思维导图如下: 思维导图

7.3.1 I / O 设备的功能和基本结构

I/O 接口的主要功能如下:

  1. 地址译码与设备选择: 当 CPU 发出 I/O 操作请求时,会同时提供目标外设的地址码。接口对地址进行译码,产生设备选择信号,确保主机仅与指定外设通信。
  2. 通信联络与时序协调: 主机与外设的工作速度通常不匹配。接口通过握手信号或状态轮询机制,动态协调双方操作节奏,确保数据传输可靠有序。
  3. 数据缓冲: 接口设有数据缓冲寄存器,用于暂存传输数据,避免因速度不匹配导致的数据丢失。
  4. 信号格式转换: 主机与外设在电平标准、数据格式或信号类型上可能存在差异。接口需完成电平转换、并 / 串或串 / 并转换、模 / 数或数 / 模转换等,以实现物理兼容。
  5. 控制命令与状态信息传递: CPU 通过向接口的控制寄存器写入命令(如 “启动”)控制外设;外设通过状态寄存器反馈状态(如 “就绪”)。当外设需要主动通知 CPU(如数据到达)时,接口可向 CPU 发出中断请求,由 CPU 适时响应处理。

I / O 设备的基本结构如下图所示: I / O 设备的基本结构

7.3.2 I / O 设备的工作原理

关于 I / O 设备的工作原理如下图所示: I / O 设备的工作原理

7.3.3 I / O 端口及其编址

I / O 端口指的是能直接被 CPU 访问的 I / O 接口中的寄存器,不是 I / O 接口连接的那些 I / O 设备!(别总想着计算机网络中的端口)

独立编址: 关于独立编址的来源是这样的:早期架构如 X86 架构中 I / O 设备中的寄存器很少,于是直接采用物理编址的方式,如 60H 表示数据寄存器,这种 60H 其实并不是什么空间的地址,而是一个编号!这个编号体系长的像空间编址体系。

你可以这么看:I / O 设备的编址体系看成一个地址空间比如 0-65535,其中不同地址对应不同寄存器编号–这就是 I / O 空间。所有 I / O 设备都共享同一个 I / O 地址空间,所以不同 I / O 接口的端口不能重名。I / O 空间并不是真的物理空间,而是一套体系!

站在 CPU 视角上看,其实有两种地址空间,内存空间和 I / O 空间,如 X86 架构的汇编语言:MOV AL,[60H] 表示访问的是主存空间;IN AL,60H 表示访问的是 I / O 设备中的寄存器。

统一编址: 在现代通常采用统一编址(MMIO),将 IO 设备中的寄存器映射到物理地址空间中(但是寄存器还是物理存在),CPU 使用普通访存指令即可访问这些寄存器,而不再需要专门的 IO 指令和独立 IO 空间。

统一编址和独立编址如下图所示: 统一编址和独立编址

7.4 中断系统

7.4.1 中断的基本概念

中断的基本概念如图所示: 中断的基本概念 需要了解一个特殊的标记 – 关中断,如图所示: 中断请求的分类

7.4.2 中断的工作流程

7.4.2.1 中断请求与中断响应

中断源是指能够向 CPU 发出中断请求的设备或事件。一台计算机允许多个中断源同时存在,且各中断源发出请求的时间具有随机性。为记录并区分不同的中断请求,中断系统为每个中断源设置一个中断请求标记触发器:当其状态为 “1” 时,表示该中断源有中断请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中置于 CPU 内部,也可分散在各个中断源中。 中断请求标记如图所示: 注意:通过 INTR 信号线发出的都是 可屏蔽中断,通过 NMI 信号线发出的是 不可屏蔽中断中断请求标记 对于不同的中断请求有优先级判断,即 中断响应判优,具体优先级如下:

  1. 硬件故障中断属于最高级,其次是软件中断;
  2. 非屏蔽中断优于可屏蔽中断;
  3. DMA请求优于I/O设备传送的中断请求
  4. 高速设备优于低速设备;
  5. 输入设备优于输出设备;
  6. 实时设备优于普通设备。

中断响应判优电路如下图所示(不考,便于理解): 注意:中断请求寄存器 + 判优逻辑电路 才是 排队器,别混了。 中断响应判优电路

7.4.2.2 中断处理过程

中断处理过程大致如图所示: 中断处理过程大致 第一就是知道 中断隐指令 是怎么处理的,如图所示: 中断隐指令 第二就是知道 中断服务程序 会做下面这些操作: 中断服务程序

7.4.3 单重中断

单重中断的整体流程如图所示: 注意单重中断中关中断和开中断的位置,意味着单重中断:执行中断服务程序时不响应新的中断请求。 单重中断的整体流程

7.4.4 多重中断

多重中断具体概念如图所示: 多重中断具体概念 通过一个题来具体看多重中断会怎么考察: 多重中断

7.5 I / O 方式

7.5.1 程序查询方式

程序查询方式的工作流程如下: 程序查询方式 根据查询策略的不同,程序查询方式能够分为两类:

  1. 独占查询: CPU 100% 的时间都在查询 I / O 状态,完全串行。(所以在上面小节看见的那张图其实是独占查询方式)
  2. 定时查询: 在保证数据不丢失的情况下,每个一段时间 CPU 就查询一次 I / O 状态,查询的间隔内 CPU 可以执行其他程序。

用一个例题来了解程序查询方式: 例题

7.5.2 程序中断方式

程序中断方式的具体流程图前面已经提过了,这里通过一个题目来熟悉这部分内容的考察方式: 程序中断方式

7.5.3 DMA 方式

本节思维导图如下图所示: 思维导图 时序图前面有、

7.5.3.1 DMA 控制器

DMA 的主要功能 如下图所示: DMA 的主要功能 DMA 的结构 如下图所示: DMA 的结构

7.5.3.2 DMA 传送过程

在了解完 DMA 的功能和物理结构之后,通过动态的过程来了解 DMA 传送过程,如下图所示: DMA 传送过程

7.5.3.3 DMA 控制方式

若是 三总线结构,主存分别与 DMA 和 系统总线有连接,就会出现同时访存造成数据冲突的情况,那么具体怎么决定访问顺序,如下图所示: DMA 控制方式 而在 单总线结构 中,DMA 与 CPU 共享同一总线,DMA 访存必须通过总线请求与仲裁机制获得控制权。不会出现同时访存的情况,也就不会出现上述三种控制方式。

7.5.3.4 DMA 的特点

如下图所示,看看就好: DMA 的特点

7.5.4 程序中断 VS DMA

最后做一个程序中断方式和 DMA 方式的对比,如下图所示: 程序中断 VS DMA

总是在探索未知