Skip to content

I/O接口

考情分析

I/O 接口的结构和端口编址方式是 408 选择题的稳定考点。统一编址与独立编址的区别几乎每隔一两年就出现一次,需要牢固掌握两者在指令使用和地址空间上的差异。

I/O 接口的作用

外部设备不能直接连接到系统总线上,原因有三:

  1. 速度不匹配:CPU 运行速度远高于多数外设
  2. 信号格式不同:外设可能使用串行、模拟信号等非标准格式
  3. 控制逻辑各异:不同外设的操作协议不同

I/O 接口(又称设备控制器、I/O 控制器)充当CPU 与外设之间的桥梁,负责速度匹配、信号转换和协议适配。

I/O 接口的功能

功能说明
数据缓冲在接口内部设置缓冲寄存器,解决 CPU 与外设的速度差异
信号转换电平转换、串/并转换、D/A 或 A/D 转换等
设备选择通过地址译码确定 CPU 访问的是哪个端口
命令传递接收 CPU 的控制命令(启动、停止等),并传递给设备
状态反馈向 CPU 报告设备当前状态(忙/空闲/错误)

I/O 接口的组成

            CPU 侧(系统总线)                    设备侧
          ┌─────────────────┐
  数据线 ──→│  数据缓冲寄存器  │──→  外设数据线
          │                 │
  地址线 ──→│  地址译码逻辑    │
          │                 │
  控制线 ──→│  命令寄存器      │──→  外设控制信号
          │                 │
          │  状态寄存器      │←──  外设状态信号
          └─────────────────┘

I/O 接口中的寄存器统称为 I/O 端口(Port):

端口类型功能方向
数据端口暂存输入/输出数据可读可写
状态端口存放设备状态信息(就绪、忙、错误)CPU 只读
命令端口存放 CPU 发出的控制命令CPU 只写

I/O 端口编址方式

CPU 如何访问 I/O 端口?有两种方案。

统一编址(内存映射 I/O)

将 I/O 端口地址映射到内存地址空间中,I/O 端口与内存共享同一套地址。

内存地址空间=真正的内存+I/O 端口
  • 访问 I/O 端口与访问内存使用相同的指令(如 MOV、LOAD、STORE)
  • 不需要专门的 I/O 指令
  • 内存地址空间被占用一部分,可用内存减少
优点缺点
指令丰富,所有内存操作指令都可用于 I/O占用内存地址空间
不需要区分内存指令和 I/O 指令地址译码复杂(需区分是真内存还是 I/O)
便于用高级语言直接操作 I/O程序中不易分辨哪些地址是 I/O

独立编址(I/O 映射 I/O)

I/O 端口有自己独立的地址空间,与内存地址空间分开。

内存地址空间I/O 地址空间
  • 访问 I/O 端口需要使用专门的 I/O 指令(如 IN、OUT)
  • 内存地址空间不受影响
  • 通过控制线上的 M/IO 信号区分访问的是内存还是 I/O
优点缺点
不占用内存地址空间只能使用专用 I/O 指令,指令种类少
程序中 I/O 操作清晰可辨不能用内存操作指令的各种寻址方式
地址译码简单

两种编址方式对比

特性统一编址独立编址
地址空间共享独立
使用指令内存指令(MOV 等)专用 I/O 指令(IN/OUT)
是否占用内存空间
区分方式地址范围控制信号
典型架构ARM、MIPSx86(部分设备)

实际系统中,x86 既有独立编址的 I/O 端口(通过 IN/OUT 访问),也有内存映射的 I/O(如显卡显存)。

I/O 接口的类型

分类维度类型说明
按数据传送方式并行接口一次传送一个字/字节的所有位
串行接口逐位传送
按主机访问方式程序查询接口状态端口轮询
中断接口支持中断请求
DMA 接口支持 DMA 传输

例题

例 1:某系统采用统一编址方式,地址总线 20 位,其中高 4 KB 地址留给 I/O 端口。实际可用内存空间是多少?

:地址空间总计 220=1 MB,I/O 端口占 4 KB,可用内存 =1 MB4 KB=1020 KB

例 2:在独立编址方式中,执行 MOV AX, [2000H] 访问的是内存还是 I/O 端口?

:MOV 是内存操作指令,在独立编址中只能访问内存。访问 I/O 端口必须使用 IN/OUT 指令。所以 MOV AX, [2000H] 访问的是内存地址 2000H。

例 3:统一编址方式的最大优势是什么?

:可以使用所有内存操作指令(以及丰富的寻址方式)来访问 I/O 端口,程序设计灵活度更高。而独立编址只有 IN/OUT 两条指令,功能有限。

考点清单

  • I/O 接口包含数据端口、状态端口、命令端口三种寄存器
  • 统一编址用内存指令访问 I/O,占用内存地址空间
  • 独立编址用专用 I/O 指令(IN/OUT),不占用内存空间
  • 统一编址下程序中不易区分内存访问和 I/O 访问
  • 独立编址通过控制线上的 M/IO 信号区分内存和 I/O

真题练习

相关真题(8题)

2021Q20选择题2分

I/O接口与I/O设备的区分

2021Q43综合题15分

指令格式设计、存储器扩展与I/O接口综合题

2017Q21选择题2分

I/O指令数据传送的路径

2016Q44综合题9分

中断I/O方式下串行通信与CPU时间占比综合题

2015Q21选择题2分

中断I/O方式下CPU与I/O端口交换的信息类型

2014Q21选择题2分

I/O接口编址方式与端口访问

2013Q19选择题2分

设备与设备控制器的接口标准

2012Q21选择题2分

I/O总线数据线上传输的信息类型