首页/计算机组成原理/I/O系统/IO接口 🔗 在 Obsidian 中打开
计算机组成原理 · I/O系统

IO接口

难度 ★★★重要度 ★★★★★ 考查频率 低题型 选择 / 简答 IO端口编址方式接口功能数据缓冲
速查
I/O 接口是 CPU 与外设间的桥梁:数据缓冲、电平/格式转换、设备寻址、时序控制、中断控制、命令译码。含数据/状态/控制三类寄存器;端口编址分独立编址(x86)与统一编址(MIPS/ARM)。

概述

I/O 接口是 CPU 与外部设备之间的桥梁,负责数据格式转换、速度匹配、信号转换等功能。接口设计直接影响 I/O 系统的性能与可靠性。

CPU I/O 接口 外部设备 地址线 / 数据线 / 控制线 数据线 / 状态线 / 控制线
图:I/O 接口位于 CPU 总线与外设之间,承上启下。

I/O 接口的功能

  • 数据缓冲:用数据缓冲寄存器解决 CPU 与外设速度不匹配
  • 信号格式转换:串/并转换、电平转换(TTL/RS-232)、数/模转换
  • 设备寻址:接口含设备选择逻辑,CPU 通过地址选特定设备
  • 时序控制:提供握手协调(Ready/Busy)、超时控制
  • 中断控制:向 CPU 发中断请求、提供类型号、支持优先级
  • 命令译码:译码 CPU 控制命令,产生设备控制信号

I/O 接口的组成

接口中的寄存器

数据寄存器:存放输入/输出数据,可读可写,宽度通常等于数据总线宽度。

状态寄存器(典型位):D0=Ready、D1=Busy、D2=Error、D3=IRQ Enable、D4=Done。CPU 读取了解设备状态(通常只读)。

控制寄存器:CPU 写入控制命令(D0=Start、D1=Stop、D2=IRQ Enable、D3=Direction 等)。

易混数据寄存器可读写;状态寄存器通常只读(由外设设置);控制寄存器由 CPU 写入。

I/O 端口编址方式

独立编址(I/O 映射)

I/O 端口有独立地址空间,与内存分离
内存 0x0000~0xFFFF;I/O 0x00~0xFF(256 端口)
专用指令:IN AL, port   ; OUT port, AL
应用:x86

统一编址(内存映射)

I/O 端口映射到内存地址空间,用访存指令访问
例:0x0000-0x7FFF 内存;0x8000-0x8FFF I/O
MOV R1, [0x8000]  ; 读 I/O 端口
应用:MIPS、ARM、RISC-V
特性独立编址统一编址
地址空间独立(小)共享内存(大)
访问指令专用 I/O 指令访存指令
硬件区分I/O / MEM 信号地址范围
灵活性
典型架构x86MIPS / ARM
区分信号独立编址靠 IO/M 信号区分;统一编址靠地址范围(硬件译码)区分。

I/O 接口的类型

按数据传输方式

  • 并行接口:多位同时传输,速度快、线多距离受限(如打印机并口 LPT)
  • 串行接口:逐位传输,线少距离远(如 RS-232、USB)

按功能复杂度

  • 简单接口:固定功能(如 74LS373 锁存器)
  • 可编程接口:功能可程序设定(如 8255、8250)
  • 智能接口:带处理器(如 SCSI、RAID 控制器)

可编程接口芯片

芯片类型要点
8255A并行接口3 个 8 位端口 PA/PB/PC;方式 0/1/2;写控制字设定
8251A串行接口同步/异步,可编程波特率,全双工
8259A中断控制器8 级(可级联 64 级),优先级与屏蔽,提供类型号

易错点

必记
  1. 数据寄存器可读写,状态寄存器通常只读
  2. 独立编址需专用 I/O 指令(IN/OUT),统一编址用访存指令。
  3. 统一编址占用内存地址空间,但灵活性更高。
  4. 状态寄存器的 Ready 位由外设设置,CPU 读取。
  5. 控制寄存器由 CPU 写入,用于控制外设。
  6. 地址译码决定哪个端口被选中;工作方式由写控制字设定。

记忆卡片

接口为什么需要?
速度匹配、格式/电平转换、设备寻址、时序与中断控制
三类端口寄存器?
数据端口(读写)、状态端口(只读)、控制端口(CPU写)
x86 用哪种编址?
独立编址(IN/OUT 指令)
统一编址优点?
无需专用指令、地址空间大、编程灵活;代价是占内存地址

交互动画 · 接口三寄存器协作完成一次 I/O

手动模式
CPU地址线/数据线/控制线 I/O 接口(三类端口寄存器) 控制寄存器 · CPU 写入命令 状态寄存器 · 外设置位 / CPU 只读 数据寄存器 · 输入/输出缓冲 外部设备键盘 / 打印机数据源 / 数据宿 设备选择 · 地址译码 Ready 就绪信号 → CPU
一次输入:地址选设备 → 写控制字 → 外设就绪 → 数据送入缓冲 → CPU 读取
点击「播放」或「下一步」,逐步观察控制/状态/数据三类端口如何配合完成一次输入
数据寄存器可读写,状态寄存器只读(Ready 由外设置位),控制寄存器由 CPU 写入
变量配色:控制路径 · 状态路径 · 数据路径

相关知识点

program-interrupt-mode dma-mode programmed-io

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。