# 互连与输入输出组织

# I/O 设备

# I/O 系统功能及性能

# 性能评价指标 - Throughput:I/O bandwidth 吞吐率,I/O 带宽

单位时间从系统输入输出多少数据,实现了多少次输入输出操作

# 性能评价指标 - Response Time:Latency 响应时间,等待延迟

在多长时间完成请求的任务

要求吞吐量高的场合

  • 如:多媒体应用(音 / 视频的播放要流畅!)

要求响应时间短的场合

  • 如:事务处理系统(存 / 取款的速度要快!)

要求吞吐率高且响应时间短的场合

  • 文件服务器、Web 服务器等

# 外设及分类

输入设备:

  • 键盘、触摸屏
  • 图形输入设备 (鼠标、图形板、跟踪球、操纵杆、光笔)
  • 图像输入设备 (摄像机、扫描仪、传真机)
  • 条形码阅读机、光学字符识别设备 (OCR)
  • 音、视频输入设备

输出设备:

  • 显示器 (字符、汉字、图形、图像)
  • 打印设备 (点阵、激光、喷墨)
  • 绘图仪 (平板式、滚筒式)
  • 声音输出设备

其它:

  • 终端设备 (键盘 + 显示器)
  • 外存储器 (磁盘、磁带、光盘)

# 总线分类

  • 芯片内总线
    • 在芯片内部各元件之间提供连接,例如,CPU 芯片内部,各寄存器、ALU、指令部件等之间有总线相连
  • 系统总线
    • 在系统主要功能部件(CPU 、MM 和各种 I/O 控制器)间提供连接
  • 通信总线
    • 通常是电缆式总线,如 SCSI、RS-232、USB、PS-2 等

# 系统总线的组成

包括了数据线、地址线、控制线

# I/O 总线

I/O 总线用于为系统中的各种 I/O 设备提供输入输出通道

# I/O 接口

I/O 设备控制器及其插座(如网卡、显卡、键盘适配器、磁盘控制器)包括:插头 / 插座的形式、通讯规程和电器特性等

I/O 接口功能

  • 数据缓冲
    提供数据缓冲寄存器,以达到主机和外设工作速度的匹配。
  • 错误或状态检测
    提供状态寄存器,以保存各种错误或状态信息供 CPU 查用。
  • 控制和定时
    提供控制和定时逻辑,以接受从系统总线来的控制定时信号。
  • 数据格式转换
    提供数据格式转换部件使通过外部接口得到的数据转换为内部接口需要的格式,或在相反的方向进行数据格式转换。
  • 与主机和设备通信
    上述功能通过 I/O 接口与主机之间、I/O 接口与设备之间的通信来完成。

将 I/O 控制器中 CPU 能够访问的各类寄存器称为 I/O 端口
对外设的访问通过向 I/O 端口发命令、读状态、读 / 写数据来进行

# I/O 设备寻址方式

# 统一编址方式 (内存映射方式)

与主存空间统一编址,将主存空间分出一部分地址给 I/O 端口进行编号

无需设置专门 I/O 指令,只要用一般访存指令就可存取 I/O 端口

# 独立编址方式 (特殊 I/O 指令方式)

不和主存单元一起编号,而是单独编号,使成为一个独立的 I/O 地址空间

# I/O 传输方式

# 程序直接控制方式 (最简单的 I/O 方式)

# 无条件传送:定时(同步)进行数据传送

同步传送方式,在规定时间用相应的 I/O 指令对接口中的寄存器进行信息的输入或输出

# 条件传送:OS 主动查询,也称为程序查询方式

image-20240114193311728

特点:

  1. 简单、易控制、外围接口控制逻辑少
  2. CPU 与外设串行工作,效率低、速度慢,适合于慢速设备
  3. 查询开销极大 (CPU 完全在等待 “外设完成”)

# I/O Interrupt: 几乎所有系统都支持

  • 若一个 I/O 设备需要 CPU 干预,它就通过中断请求通知 CPU
  • CPU 中止当前程序的执行,调出 OS(中断处理程序)来执行
  • 处理结束后,再返回到被中止的程序继续执行
  • OS 是被动调出的,也称为中断驱动 I/O 方式

# 基本思想

  • 当外设准备好时,便向 CPU 发中断请求。
  • CPU 响应后,中止现行程序的执行。
  • 转入一个 “中断服务程序” 进行输入 / 出操作,实现主机和外设接口之间的数据传送。
  • 启动外设工作。
  • “中断服务程序” 执行完后,返回原被中止的程序断点处继续执行。此时,外设和 CPU 并行工作。

image-20240114193537137

# 处理器异常 (中断) 处理机制

异常 (中断) 发生时,处理器必须做以下基本处理(执行中断隐指令以响应中断):

  1. 关中断:将中断允许标志清 0,防止中断处理过程中产生新的中断影响程序状态。
  2. 保护断点和程序状态:将返回原程序执行的断点和程序状态保存到堆栈或特殊寄存器中
  3. 识别异常事件,并转到具体的异常处理程序执行
    • 软件识别 (MIPS 采用):设置一个异常状态寄存器(MIPS 中为 Cause 寄存器),用于记录异常原因
    • 硬件识别 (80x86 采用):用专门的硬件查询电路按优先级顺序识别异常,得到一个 “中断类型号”,根据此号,到中断向量表中读取对应的中断服务程序的入口地址。

# 8086 中断向量表

中断向量表,也称中断入口地址表(或异常表),位于 0000H~03FFH。共 256 组,每组占四个字节 CS:IP 。向量地址 = 中断类型号 x4

# 中断驱动 I/O 方式

中断过程

  1. 中断检测
  2. 中断响应
  3. 中断处理

中断响应的条件:

  1. CPU 处于开中断状态
  2. 在一条指令执行完
  3. 至少有一个未被屏蔽的中断请求

通常在一条指令执行结束后开始查询有无中断请求,有的话立即响应,所以,一般在指令执行完时响应中断;而“异常”发生在指令执行过程中,所以,不能等到指令执行完才进行异常处理。

内部异常和外部中断都有优先级,通常所有内部异常的优先级都比外部中断高

  1. 系统可控性: 内部异常通常是由指令执行或程序错误引起的,而程序是系统内部的一部分。通过给予内部异常较高的优先级,系统可以更好地控制和管理异常的处理。这有助于防止异常对系统的不可预测性影响。
  2. 安全性: 内部异常可能涉及到程序执行的错误,如除零、越界访问等。这些异常可能导致严重的系统问题,为了确保系统的安全性,将这些异常的处理设定为高优先级可以更迅速地进行响应和处理,减少潜在的危险。
  3. 系统稳定性: 外部中断通常是由外部设备触发的,而外部设备的性能和响应时间相对不可控。为了确保系统的稳定性,内部异常往往被赋予更高的优先级,以便尽早处理可能对系统造成影响的问题。
  4. 保护关键任务: 内部异常可能直接关联到系统关键任务的执行,因此需要更快速和可靠的响应。将其优先级设置得较高有助于保护系统关键任务的执行不受外界干扰。

# 多重中断

** 在一个中断处理(即执行中断服务程序)过程中,若又有新的中断请求发生,而新中断优先级高于正在执行的中断,则应立即中止正在执行的中断服务程序,转去处理新的中断。这种情况为多重中断,也称中断嵌套 **

  • 中断响应优先级 ---- 由查询程序或硬联排队线路决定的优先权,反映多个中断同时请求时选择哪个响应。
  • 中断处理优先级 ---- 由各自的中断屏蔽字来动态设定,反映本中断与其它中断间的关系。

# Direct Memory Access (DMA): 磁盘等高速外设特有的 I/O 方式

  • 磁盘等高速外设成批地直接和主存进行数据交换
  • 需要专门的 DMA 控制器控制总线,完成数据传送
  • 当外设准备好数据后,向 DMA 控制器发 DMA 请求信号,DMA 控制器再向 CPU 发总线请求,CPU 让出总线后,由 DMA 控制器控制总线进行传输,无需 CPU 干涉
  • 与中断控制方式结合使用
    • DMA 传送前,“寻道”“旋转” 等操作结束时,通过 “中断” 告知 CPU
    • 在 DMA 控制器控制总线进行数据传送时,CPU 执行其他程序
    • DMA 传送结束时,要通过 “DMA 结束中断” 告知 CPU

# DMA 数据传送方式

  1. CPU 停止法
    • DMA 传输时,CPU 脱离总线,停止访问主存,直到 DMA 传送一块数据结束。
  2. 周期挪用法
    • DMA 传输时,CPU 让出一个总线事务周期,由 DMA 控制总线来访问主存,传送完一个数据后立即释放总线
  3. 交替分时访问法
    • 每个存储周期分成两个时间片,一个给 CPU,一个给 DMA,这样在每个存储周期内,CPU 和 DMA 都可访问存储器

# DMA 控制器功能

  • 请求。能接收外设发来的 “DMA 请求” 信号,并能向 CPU 发 “总线请求” 信号。
  • 响应。当 CPU 发出 “总线响应” 信号响应请求后,能接管对总线的控制。
  • 修改主存地址。能在地址线上给出主存地址,并自动修改主存地址。
  • 识别传送方向。能识别传送方向以在控制线上给出正确的读写控制信息。
  • 确定传送数据个数。
  • 能发出 DMA 结束信号。引起一次 DMA 中断,进行数据校验等一些后处理。

# DMA 传输过程

  1. DMA 控制器初始化
  2. 发送请求响应数据传输
  3. 结束处理

# DMA 和中断方式的区别

  1. DMA 方式下数据传送由硬件 (DMA 控制器) 完成;中断方式下,数据传送由软件(CPU 执行中断服务程序)完成。
  2. DMA 请求的是对存储器访问,也即对总线控制权的请求,没有中止现行程序的必要;而中断请求要处理器转去执行中断服务程序,此要中止现行程序,保存断点、现场等。
  3. 中断除了能完成外设和主机的数据交换,还能处理异常事件;而 DMA 方式下不能处理异常事件。
  4. 中断响应在一个指令周期结束后;而 DMA 响应是在一个总线周期后。
  5. DMA 方式用于高速设备;而中断方式用于低、慢速设备。
  6. DMA 方式下,外设与 CPU 并行度高;而中断方式下,外设与 CPU 并行度低。