# Lecture17 - 输入输出
# 外围设备(外设) peripheral device
# 为什么不能把外设连接到系统总线上
外设的传送速度过快和过慢都会造成问题
# IO 模块
中间商 IO 模块连接外设和系统总线
IO 模块属于计算机内部系统
外设不属于计算机内部系统
# 外围设备的接口
控制逻辑 —— 是外围设备的大脑,控制外围设备的操作
缓冲器 —— 用于缓存
转换器 —— 将 01 数据转换成如音频等数据
# IO 模块的功能
# 处理器、设备通信
中间商 IO 模块需要和处理器进行通信
也需要和设备进行通信
# 数据缓冲
处理器的速度和外设的速度不是完全匹配的
所以需要在两者之间做一个缓冲
# 控制和定时
# 检错
# IO 模块的结构
下面的图做了 90 度的旋转
CPU 对外部设备的命令:数据线 —— 状态 / 控制寄存器
外设获得的状态和数据也通过数据线的状态控制寄存器返回
CPU 对 IO 模块的控制:控制线
# 外部接口
哪种用的更多?现在主要用的是串行接口
当使用并行的时候,需要保持信息同步,比较困难。如何防止?一、不要走太远,线的长度不太长;二、两个操作之间的时间间隔长一点,频率不要太高
# IO 操作技术
- 编程式 IO:通过程序处理
- 中断驱动式 IO:根据 IO 发起的中断
- 直接存储器读取:不需要处理器
编程式 IO 不需要中断,其他需要
DMA 不需要处理器干涉,其他需要
# 编程式 IO
CPU 始终参与 IO,不能分身干别的事情。参与率为 100%。不断读取状态信息,不断读进字,并且写入存储器。
# IO 命令
命令:IO 控制外设
# IO 指令
指令:IO 自己的指令?
编址方式:
- 存储器映射式:缺点是会占用一些存储单元
- 分离式
# 中断驱动式 IO
和编程式 IO 的区别在于:可以去处理其他工作
IO 模块等到消息之后,再告诉 CPU 去处理
为什么会有中断允许和中断禁止?能够一下子保存完现场吗?不能,搬家的时候不能被打断,此时禁止中断,搬回来恢复现场的时候,也需要禁止中断。
响应优先级 —— 更快地抢到位置,小伙子
处理优先级 —— 最后能够获得这个位置,老太太
响应和处理优先级都很高,说明是个腿脚麻利的老太太
中断只会识别比自己处理优先级更高的中断,小伙子要给老太太让座
有好多中断,先筛选出处理优先级比自己高的,优先响应响应优先级最高的,最后拿到的是处理优先级最高的
掩码字表示谁可以屏蔽谁,表格中,行能否屏蔽列的(根据处理优先级)
# 直接存储器存取 DMA
CPU 和 DMA 都需要访问内存,DMA 比 CPU 优先,DMA 一般连接的是高速外设,如果不写入存储,会被冲突掉。
# CPU 停止法
高速 IO 设备一般不会持续传入数据,DMA 占用期间,内存没有被有效利用
# 周期窃取
# 交替分时访问
周期的固定时间给 CPU,周期的后半段给 DMA
# DMA 配置机制:单总线分离 DMA
# DMA 配置机制:单总线集合的 DMA-IO
# DMA 配置机制:IO 总线
# DMA 示例:硬盘存取
CPU 仍然有比较高的参与度