计算机组成与体系结构:输入输出系统

第十一章 输入输出系统

基本概念: 输入输出(I/O)系统是计算机与外部世界进行信息交换的桥梁。外部世界包括用户、其他计算机、各种传感器和执行机构等。

I/O系统的特点

多样性: I/O设备种类繁多,包括: - 字符设备:键盘、鼠标、打印机 - 块设备:磁盘、SSD、U盘 - 网络设备:网卡、调制解调器 - 多媒体设备:声卡、显卡、摄像头 - 人机交互设备:显示器、触摸屏

复杂性: 不同设备的工作原理、数据格式、传输速率差异很大,需要复杂的控制机制。

异步性: I/O设备通常独立于CPU运行,需要处理异步事件和中断。

低速性: 相对于CPU和内存,I/O设备通常较慢,需要速度匹配机制。

主要功能

设备控制: 向设备发送控制命令,控制设备的启动、停止、读写等操作。

数据传输: 在CPU/内存与I/O设备之间传输数据,包括输入(设备→内存)和输出(内存→设备)。

数据缓冲: 使用缓冲区解决速度不匹配问题,提高系统效率。

数据格式转换: 进行串行/并行转换、编码转换、电平转换等。

错误检测: 检测传输错误和设备故障,进行错误恢复。

设备管理: 管理多个设备,进行设备分配、调度和共享。

硬件组成

I/O设备: 完成具体的输入输出功能,如键盘输入字符、显示器输出图像。

设备控制器: 控制I/O设备工作的硬件电路,包括: - 控制寄存器:接收CPU命令 - 状态寄存器:反映设备状态 - 数据寄存器:暂存传输数据 - 控制逻辑:产生设备控制信号

I/O接口: 连接设备控制器与总线的电路,完成信号转换和协议转换。

软件组成

I/O指令: CPU直接执行的I/O操作指令,如IN/OUT指令。

通道程序: 在通道处理器上执行的专用I/O程序。

设备驱动程序: 操作系统内核中的软件模块,负责具体设备的控制。

设备管理软件: 操作系统中的通用I/O管理软件,包括设备分配、缓冲管理、虚拟设备等。

基本功能

寻址功能: 识别I/O端口地址,选择特定的设备进行通信。

数据缓冲: 使用缓冲寄存器暂存数据,解决速度差异。

数据格式转换: - 串行/并行转换 - 数字/模拟转换 - 电平转换 - 码制转换

控制功能: 接收CPU控制命令,产生设备控制信号。

状态监测: 检测设备状态,向CPU报告设备是否就绪、是否出错等。

中断管理: 管理中断请求,包括中断产生、屏蔽和优先级处理。

独立编址方式

特点: I/O端口地址与内存地址分开编址,使用独立的地址空间。

优点: - I/O指令简短,执行速度快 - I/O程序清晰,易于区分I/O操作和内存操作 - 不影响内存地址空间

缺点: - 需要专门的I/O指令(如IN/OUT) - 指令系统复杂

典型应用: Intel x86架构采用独立编址,I/O地址空间为64KB(0-65535)。

统一编址方式(存储器映射I/O)

特点: I/O端口与内存单元统一编址,占用内存地址空间。

优点: - 不需要专门的I/O指令,使用访存指令即可 - 指令系统简单 - 可使用丰富的访存指令 - 可直接对I/O设备进行算术逻辑运算

缺点: - 占用内存地址空间 - I/O操作速度可能较慢 - 程序可读性稍差

典型应用: Motorola 68000系列、ARM架构采用统一编址。

比较

特性 独立编址 统一编址
—–——————
指令系统 需要专门I/O指令 使用访存指令
地址空间 独立 占用内存空间
程序清晰度 较低
指令灵活性
典型应用 x86 ARM、MIPS

地址译码方法

线选法: 使用地址线直接选择设备,简单但地址空间利用率低。

全译码法: 使用全部地址线译码,地址空间利用率高,不会产生地址重叠。

部分译码法: 使用部分地址线译码,介于两者之间。

例题: 某系统使用独立I/O编址,地址总线A15-A0,现要设计一个译码电路,为8个I/O设备分配地址空间,每个设备256个端口。

解答: - 每个设备256个端口,需要低8位地址线(A7-A0) - 8个设备需要3位地址线译码(A10-A8) - 地址范围:

  1. 设备0:0000H-00FFH(A10-A8 = 000)
  2. 设备1:0100H-01FFH(A10-A8 = 001)
  3. 设备7:0700H-07FFH(A10-A8 = 111)

工作原理: CPU主动查询设备状态,当设备就绪时进行数据传输。

基本流程: ``` 1. CPU向设备发送命令 2. CPU循环读取设备状态 3. 如果设备未就绪,继续查询 4. 如果设备就绪,进行数据传输 5. 传输完成后,进行下一步处理 ```

程序实现: ``` ; 输出一个字符到打印机 OUTPUT_CHAR:

  IN   AL, STATUS_PORT   ; 读状态端口
  TEST AL, READY_BIT     ; 测试就绪位
  JZ   OUTPUT_CHAR       ; 未就绪,继续查询
  MOV  AL, CHAR          ; 准备数据
  OUT  DATA_PORT, AL     ; 输出到数据端口
  RET

```

优点: - 硬件简单,成本低 - 软件控制灵活 - 实现简单

缺点: - CPU效率极低,需要不断轮询 - 实时性差,可能丢失数据 - 不适合高速设备

适用场合: CPU负担不重、数据传输速率低、实时性要求不高的场合。

工作原理: CPU启动设备后,继续执行原程序。当设备就绪时,主动向CPU发出中断请求,CPU响应后暂停当前程序,转去执行中断服务程序,完成数据传输后再返回原程序。

工作流程: ``` 1. CPU启动设备,设置中断允许 2. CPU继续执行主程序 3. 设备就绪,发出中断请求 4. CPU响应中断,保存现场 5. 执行中断服务程序,完成I/O 6. 恢复现场,返回主程序 ```

中断处理过程

中断请求: 设备通过中断请求线(INTR)向CPU发出请求信号。

中断判优: 当多个设备同时请求中断时,需要确定优先级。可以通过软件查询或硬件排队电路实现。

中断响应: CPU在满足以下条件时响应中断: - 有中断请求 - 中断允许标志为1(开中断) - 当前指令执行完毕 - 优先级高于当前程序

中断服务: CPU响应中断后,执行以下操作: 1. 关中断(防止嵌套混乱) 2. 保存现场(PC、寄存器等) 3. 转入中断服务程序 4. 执行I/O操作 5. 恢复现场 6. 开中断 7. 返回主程序

中断向量: 存放中断服务程序入口地址的存储单元。CPU根据中断源获取对应的中断向量,快速定位服务程序。

优点: - CPU效率高,不需要轮询 - 实时性好,能及时处理设备请求 - 适合中低速设备

缺点: - 中断处理有开销(保存/恢复现场) - 每传输一个数据都要中断一次,不适合高速设备 - 硬件复杂度增加

适用场合: 键盘、鼠标、打印机、串口等中低速设备。

工作原理: DMA(Direct Memory Access,直接存储器访问)方式下,I/O设备与内存之间直接传输数据,不需要CPU干预,仅在开始和结束时需要CPU参与。

DMA工作流程: ``` 1. CPU设置DMA控制器参数(内存地址、传输长度等) 2. CPU启动DMA传输 3. DMA控制器接管总线 4. 设备与内存直接传输数据 5. 传输完成,DMA发出中断通知CPU ```

DMA控制器结构

地址寄存器: 存放内存地址,自动递增或递减。

字计数器: 存放传输数据字数,每传输一个数据减1,为0时结束传输。

数据缓冲寄存器: 暂存传输的数据。

控制/状态寄存器: 存放控制命令和设备状态。

DMA请求触发器: 接收设备的DMA请求信号。

控制逻辑: 产生控制信号,管理DMA操作。

DMA传送方式

CPU停止法(成组传送): DMA传输期间,CPU完全放弃总线控制权,直到传输完成。适合高速设备大批量传输。

周期挪用(周期窃取): DMA在CPU不使用总线的周期(如CPU内部操作期间)窃取总线周期进行传输。适合中速设备。

交替分时访问: 将CPU周期分为两部分,一部分给CPU,一部分给DMA。不需要总线仲裁,但需要硬件支持。

DMA与中断的比较

特性 中断方式 DMA方式
—–——————
数据通路 设备→CPU→内存 设备↔内存(直接)
CPU参与 每次传输都参与 仅开始和结束参与
响应时间 指令执行结束 每个总线周期结束
适用设备 低速设备 高速设备
额外开销 保存/恢复现场 总线控制切换
数据单位 字节/字 数据块

工作原理: 通道是具有特殊功能的处理器,专门负责I/O操作。CPU只需发送I/O命令给通道,通道独立执行通道程序,完成整个I/O操作,然后向CPU报告。

通道类型

字节多路通道: 连接多个低速字符设备,以字节为单位交叉传输。 ``` 设备A:A1 A2 A3 … 设备B: B1 B2 B3 … 设备C: C1 C2 C3 … 时间轴:A1 B1 C1 A2 B2 C2 A3 B3 C3 … ```

选择通道: 连接高速设备,一次只服务一个设备,以成组方式传输。 ``` 设备A:A1 A2 A3 … An(传输完成)→ 设备B:B1 B2 … ```

数组多路通道: 结合前两者优点,连接多个高速设备,以数据块为单位交叉传输。

通道程序: 通道执行的专用程序,由一系列通道指令(通道控制字CCW)组成。

通道指令格式: ``` ┌─────────┬─────────┬─────────┬─────────┐ │ 操作码 │ 内存地址 │ 传输计数 │ 标志位 │ └─────────┴─────────┴─────────┴─────────┘ ```

通道工作流程: ``` 1. CPU组织通道程序并存入内存 2. CPU发送“启动I/O”命令给通道 3. 通道从内存取通道指令执行 4. 通道控制设备进行I/O操作 5. 传输完成,通道发出中断 6. CPU响应中断,处理完成 ```

四级I/O系统: ``` CPU ─── 通道 ─── 设备控制器 ─── I/O设备

      (可多个) (可多个)   (可多个)

```

中断的定义: 中断是指CPU在执行程序过程中,遇到急需处理的事件时,暂停当前程序,转去执行处理程序,处理完毕后返回原程序继续执行的过程。

中断源分类

外部中断: 来自CPU外部的中断请求。 - 可屏蔽中断:可以通过软件屏蔽 - 非屏蔽中断:必须立即响应,如电源故障

内部中断(异常): 来自CPU内部的中断。 - 故障(Fault):可纠正的错误,如缺页 - 陷阱(Trap):有意为之,如系统调用 - 中止(Abort):严重错误,无法恢复

中断的作用: 1. 实现I/O控制 2. 实现多道程序设计 3. 实现实时处理 4. 实现故障处理 5. 实现人机交互

中断优先级: 当多个中断源同时请求时,按照优先级高低决定响应顺序。

优先级划分原则: - 高速设备优先于低速设备 - 输入设备优先于输出设备 - 实时设备优先于非实时设备 - 故障中断优先级最高

优先级实现方法

软件查询法: CPU响应中断后,用软件查询中断源。优先级由查询顺序决定。

硬件排队法: 使用硬件电路(如菊花链、优先级编码器)确定优先级。

中断嵌套: 高优先级中断可以打断低优先级中断的处理,形成中断嵌套。

嵌套规则: - 高优先级可以打断低优先级 - 同优先级一般不嵌套(或根据策略) - 低优先级不能打断高优先级

嵌套处理: ``` 主程序 ──→ 中断A(低优先级)

            ↓
         保存现场A
            ↓
         执行服务A ──→ 中断B(高优先级)
                         ↓
                      保存现场B
                         ↓
                      执行服务B
                         ↓
                      恢复现场B
                         ↓
                      返回 ←───────┘
            ↓
         恢复现场A
            ↓
         返回 ←──────────────────┘

```

中断向量: 中断服务程序的入口地址和状态字(PSW)。

中断向量表: 存储所有中断向量的表格,通常位于内存起始位置(如00000H-003FFH)。

向量中断: CPU根据中断源自动获取对应的中断向量,转入相应服务程序。

获取方式: - 中断源提供向量号 - 中断控制器(如8259A)提供向量号 - CPU内部产生向量号

x86中断向量表: 256个中断向量,每个4字节(IP:CS)。 - 0-31:CPU保留(异常) - 32-255:用户定义(外部中断)

基本概念: 设备驱动程序是操作系统内核中的软件模块,负责控制和管理特定I/O设备。

主要功能: 1. 接收上层软件的I/O请求 2. 将抽象请求转换为具体设备操作 3. 初始化设备控制器 4. 控制数据传输 5. 处理设备中断 6. 进行错误处理

驱动程序层次: ``` 用户程序

系统调用接口

设备无关软件(缓冲管理、设备分配)

设备驱动程序(具体设备控制)

中断处理程序

设备控制器 → I/O设备 ```

设备控制表(DCT): 每个设备一个,记录设备信息: - 设备标识 - 设备状态 - 控制表指针 - 请求队列指针

设备开关表: 系统维护的驱动程序入口表,用于调用不同设备的驱动程序。

驱动程序接口: 统一的驱动程序接口,包括: - open():打开设备 - close():关闭设备 - read():读数据 - write():写数据 - ioctl():控制操作

例题1: 某系统有5个中断源,优先级从高到低为A、B、C、D、E。若当前正在处理C中断,各中断源的屏蔽字如下:

中断源 A B C D E
——-
A 1 1 1 1 1
B 0 1 1 1 1
C 0 0 1 1 1
D 0 0 0 1 1
E 0 0 0 0 1

(1) 什么是屏蔽字? (2) 处理C中断时,哪些中断源可以打断它?

解答: (1) 屏蔽字表示该中断处理时对其他中断的屏蔽情况。1表示屏蔽(不允许中断),0表示不屏蔽(允许中断)。

(2) 处理C中断时,查看C的屏蔽字:A=0, B=0, C=1, D=0, E=0。 屏蔽字为0表示该中断源可以打断当前中断处理。因此A、B、D、E都可以打断C的处理。

例题2: 比较程序查询、中断、DMA三种I/O方式的特点,并说明各自的适用场合。

解答

特性 程序查询 中断 DMA
—–——————–
CPU效率 低(轮询等待) 中(每次传输中断) 高(批量传输)
响应速度 较快
硬件复杂度 简单 中等 较复杂
数据传输单位 字节/字 字节/字 数据块
适用设备 简单低速 中低速 高速块设备
典型应用 LED控制 键盘、串口 磁盘、显卡

例题3: 某磁盘转速为7200 RPM,平均寻道时间为8ms,每个磁道有64个扇区,每个扇区512字节。计算: (1) 平均旋转延迟 (2) 传输一个扇区的时间 (3) 读取一个扇区的总时间

解答: (1) 旋转延迟 = (60秒/7200转) / 2 = 4.17ms(平均为半圈) (2) 传输时间 = (60秒/7200) / 64 = 0.13ms (3) 总时间 = 寻道时间 + 旋转延迟 + 传输时间

        = 8ms + 4.17ms + 0.13ms = 12.3ms

重点内容

1. I/O系统组成

  1. 硬件:I/O设备、设备控制器、I/O接口
  2. 软件:设备驱动程序、I/O管理软件

2. I/O端口编址

  1. 独立编址:x86架构,需要专门I/O指令
  2. 统一编址:ARM架构,使用访存指令

3. I/O控制方式

  1. 程序查询:CPU轮询,效率最低
  2. 程序中断:设备就绪中断CPU,适合中低速设备
  3. DMA:设备直接访问内存,适合高速设备
  4. 通道:专用处理器管理I/O,适合大型系统

4. 中断系统

  1. 中断类型:外部中断、内部中断(异常)
  2. 中断优先级:优先级高的先响应
  3. 中断嵌套:高优先级可打断低优先级
  4. 向量中断:自动获取服务程序入口

5. DMA技术

  1. DMA控制器接管总线
  2. 传送方式:CPU停止法、周期挪用、交替访问
  3. 适合磁盘等高速块设备

常见考点: - 四种I/O方式的比较 - 中断处理过程 - DMA工作原理 - 通道类型与特点 - 端口编址方式比较 - 中断屏蔽与优先级

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • 计算机组成与体系结构/输入输出系统.txt
  • 最后更改: 2026/03/01 16:24
  • 张叶安