IO接口基本结构与内容
第一章:I/O系统基本概念
1.1 为什么需要I/O系统?
速度不匹配:CPU速度极快,而I/O设备(如键盘、硬盘、打印机)速度极慢。
时序不匹配:各I/O设备有自己独立的时序控制电路,与CPU时钟不同步。
数据格式不匹配:CPU处理的是并行数据(如32位、64位),而设备可能是串行数据(如鼠标、网络)或不同字长。
1.2 I/O系统的组成
一个完整的I/O系统通常包括:
I/O设备本身:如显示器、硬盘等。
设备控制器:也叫适配器,是插在主板插槽上或集成在设备上的电路板。它负责控制具体的设备,是CPU与设备之间的“翻译官”。
I/O接口:位于CPU(或系统总线)与设备控制器之间的一组电路。它负责协调CPU与设备控制器之间的通信。(本章核心)
I/O软件:包括驱动程序、用户软件等。
注意:在很多教材和考试中,“设备控制器”和“I/O接口”的概念有时会混用或合并讨论,但严格来说,接口更偏向于总线的标准化,而控制器更偏向于设备的特异性控制。
第二章:I/O接口的功能与结构
2.1 I/O接口的核心功能
地址译码与设备选择:识别CPU发送来的地址,判断是否是给自己的命令。
数据缓冲与锁存:
缓冲:解决速度不匹配,如设置数据缓冲寄存器。
锁存:在异步通信中,保持数据的稳定,以便CPU或设备读取。
数据格式转换:如串行-并行转换。
电平转换:将CPU的信号电平与设备所需的电平进行匹配。
控制与状态逻辑:
接收CPU的命令(如读、写)。
向CPU报告设备的状态(如忙、就绪、错误)。
时序控制:提供所需的定时与控制信号,以满足CPU和设备双方的时序要求。
中断管理:对于中断方式的I/O,接口需要具备发送中断请求和接收中断响应的能力。
错误检测:如奇偶校验。
2.2 I/O接口的基本结构
一个典型的I/O接口内部包含以下寄存器,这些寄存器也被称为 “I/O端口”:
数据寄存器:存放要在CPU与设备间传输的数据。
状态寄存器:存放设备当前的状态信息(如
READY,BUSY)。控制寄存器:存放CPU发来的控制命令(如启动、停止)。
地址译码逻辑:用于选择接口内的各个寄存器。
CPU通过不同的端口地址来访问这些寄存器。
第三章:I/O端口及其编址方式
CPU如何找到并访问这些I/O端口?有两种主流方式:
3.1 存储器映射式I/O
思想:将I/O端口地址和主存单元地址统一编址。将一部分内存地址空间分配给I/O设备。
特点:
优点:
无需专门的I/O指令,所有访问内存的指令(如
LOAD,STORE)都可用来访问I/O端口。无需单独的I/O地址译码和控制电路。
I/O程序设计灵活。
缺点:
占用了部分内存地址空间。
通过地址来区分是访问内存还是I/O,对编程人员可能不够直观。
3.2 独立编址式I/O
思想:为I/O端口建立独立的地址空间,与内存地址空间完全分开。
特点:
优点:
I/O端口地址不占用内存空间。
有专门的I/O指令(如x86架构的
IN,OUT),程序清晰,易于区分。地址译码简单(因为地址空间小)。
缺点:
需要专门的I/O指令和控制信号(如
IOR#,IOW#)。控制电路相对复杂。
408考点:必须清楚区分这两种方式,并能分析其优缺点。
第四章:I/O控制方式(核心与难点)
这是I/O部分最重要的内容,描述了数据在内存和I/O设备之间传输的具体管理方式。
4.1 程序查询方式
过程:
CPU向I/O接口发出命令,启动设备。
CPU反复轮询检查接口状态寄存器的“就绪”位。
当设备就绪,CPU执行一次数据传输(一个字节或字)。
重复2-3步,直到所有数据传输完成。
特点:
优点:接口简单,硬件成本低。
缺点:CPU绝大部分时间都在等待和查询,CPU利用率极低。
流程图:
CPU启动I/O ↓ [读取状态寄存器] ↓ {检查是否就绪?} --否--> [等待] --> [读取状态寄存器] | 是 ↓ [传输一个数据] ↓ {传输完成?} --否--> [读取状态寄存器] | 是 ↓ 结束
4.2 程序中断方式
过程:
CPU启动设备后,不再等待,继续执行原有程序。
当I/O设备准备就绪时,主动向CPU发出中断请求信号。
CPU在当前指令执行结束后,检查中断请求。
若允许响应,CPU则暂停当前程序,转去执行一个特定的中断服务程序。
在中断服务程序中,完成数据的传输。
执行完毕后,CPU返回原程序断点处继续执行。
特点:
优点:解决了程序查询方式的“忙等”问题,提高了CPU利用率。
缺点:
传输每个数据都要进行中断响应、保护现场、恢复现场等操作,这些额外开销很大。
对于高速设备,频繁的中断会导致CPU效率依然低下。
相关概念:
中断源:引起中断的事件。
中断向量:中断服务程序的入口地址。
中断屏蔽:允许或禁止某些中断源发出请求。
中断优先级:多个中断同时发生时,CPU响应的顺序。
单级中断与多级中断:是否允许中断嵌套。
4.3 DMA方式
思想:在外设与内存之间开辟一条直接数据通路,数据传输不再经过CPU,而由一个专门的硬件控制器——DMA控制器来管理。
过程:
CPU对DMA控制器进行初始化(告诉它数据在内存的起始地址、要传送的字节数、方向等)。
CPU启动设备,然后去执行其他任务。
设备准备就绪后,向DMA控制器发出DMA请求。
DMA控制器向CPU申请总线使用权。
CPU完成当前总线周期后,释放总线控制权,并响应DMA请求。
DMA控制器接管总线,直接在设备和内存之间完成一个或多个数据的传输。
传输完成后,DMA控制器释放总线,并向CPU发出中断信号,通知它传输已完成。
DMA控制器的组成:
内存地址寄存器(MAR)
外设地址寄存器(DAR)
字计数器(WC)
控制/状态寄存器
数据缓冲寄存器
DMA的传送方式:
停止CPU访问内存:最简单,但CPU基本处于不工作状态,效率低。
周期挪用:DMA窃取CPU不使用总线的周期来传送数据。这是最常用的方式。
DMA与CPU交替访存:将CPU周期分成两部分,一部分专供DMA使用。这种方式不需要总线申请、建立和释放过程,但硬件逻辑复杂。
特点:
优点:数据传输速率高,CPU开销最小(仅在初始化和结束时参与)。
缺点:硬件复杂,成本高。
三种方式对比总结表
| 控制方式 | CPU介入程度 | 数据单位 | 中断时机 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|---|---|
| 程序查询 | 全程参与 | 字节/字 | 无 | 低速、简单设备 | 接口简单 | CPU效率极低 |
| 程序中断 | 每次传输 | 字节/字 | 每次传输后 | 中低速设备 | 提高CPU利用率 | 频繁中断开销大 |
| DMA | 初始化和结束 | 数据块 | 整个数据块传输后 | 高速设备(如磁盘) | 高速、低CPU开销 | 硬件复杂 |
第五章:常见标准接口(了解即可)
这部分在408中通常不作为大题考点,但选择题可能涉及概念。
串行接口:数据一位一位顺序传送。
RS-232C:老式标准,用于Modem、鼠标等。
并行接口:数据多位同时传送。
Centronics:用于老式打印机。
USB:通用串行总线。特点:支持热插拔、即插即用、高带宽、可连接多个设备。
SATA:串行ATA,用于连接硬盘、光驱。
PCI/PCI-E:用于连接高速外设的扩展总线。
知识脉络与408考点梳理
核心逻辑:理解I/O系统存在的根本原因是速度鸿沟,所有技术演进(查询->中断->DMA)都是为了减少CPU在I/O过程中的等待和开销,从而提高系统整体效率。
必考重点:
三种I/O控制方式的原理、过程、优缺点比较。这是大题和选择题的高频考点,必须能画出流程图并详细阐述。
存储器映射I/O vs. 独立编址I/O 的对比。
中断机制(中断响应过程、中断向量、屏蔽字等)。
DMA机制(DMA控制器的工作过程、三种传送方式)。
计算题可能:
给定CPU时钟、I/O设备速率,计算程序查询方式下CPU时间的利用率。
计算中断方式下,处理一次中断所需的CPU周期数。
计算DMA方式下,传输一个数据块所需的总时间,以及CPU时间的占用比例。
综合题:I/O部分常与指令系统(I/O指令)、总线(DMA占用总线)、中断系统等结合出题。
