# 输入输出系统和 I/O 控制方式
I/O 设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备
鼠标、键盘 —— 输入设备
显示器、打印机 —— 输出设备
硬盘、光盘 —— 可输入、可输出设备
统称为外部设备
I/O 接口:又称 I/O 控制器 (I/O Controller)、设备控制器,负责协调主机与外部设备之间的数据传输
# I/O 控制方式简介
- 程序检查方式
- CPU 不断轮询检查 I/O 控制器中的 "状态寄存器",检测到状态为 "已完成" 之后,再从数据寄存器取出输入数据
- 程序中断方式
- 等待键盘 I/O 时 CPU 可以先去执行其他程序,键盘 I/O 完成后 I/O 控制器向 CPU 发出中断请求,CPU 响应中断请求,并取走输入数据
数据流:键盘 ->I/O 接口的数据寄存器 -> 数据总线 ->CPU 某寄存器 -> 主存 (变量 i 的对应位置)
对于快速 I/O 设备,如 "磁盘",每准备好一个字就给 CPU 发送一次中断请求,会导致 CPU 需要花大量时间来处理中断服务程序,CPU 利用率严重下降
- DMA 控制方式
- 主存与高速 I/O 设备之间有一条直接数据通路 (DMA 总线)。CPU 向 DMA 接口发出 "读 / 写" 命令,并指明主存地址、磁盘地址、读写数据量等参数
- DMA 控制器自动控制磁盘与主存的数据读写,没完成一整块数据读写 (如 1KB 为一整块),才向 CPU 发出一次中断请求
- 通道控制方式
- 通道:可以理解为 "弱化版 CPU"。通道可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一
- CPU 向通道发出 I/O 指令。指明通道程序在内存中的位置,并指明要操作的是哪个 I/O 设备。CPU 就可以去做其他事情
- 通道执行内存中的通道程序,控制 I/O 设备完成一系列任务
- 通道执行完规定的任务后,向 CPU 发出中断请求,之后 CPU 对中断进行处理
# I/O 系统基本组成
I/O 硬件:包括外部设备、I/O 接口、I/O 总线等
I/O 软件:包括驱动程序、用户程序、管理程序、升级补丁等
- 通常采用 I/O 指令和通道指令实现 CPU 和 I/O 设备的信息交换
- I/O 指令:CPU 指令的一部分
- 操作码 + 命令码 + 设备码
- 通道指令:通道能识别的指令
- 通道程序提前编制好放主存中
- 在含有通道的计算机当中,CPU 执行 I/O 指令对通道发出命令,由通道执行一系列通道指令,代替 CPU 对 I/O 设备进行管理
注:I/O 指令与普通指令格式略有不同,操作码指明了 CPU 要对 IO 接口做什么,命令码指明了 IO 接口要对设备做什么
# 外部设备
# 输入设备
键盘:键盘是最常用的输入设备,通过它可发出命令或输入数据。每个键相当于一个开关,当按下键时,电信号连通;当松开键时,弹簧把键弹起,电信号断开。
键盘输入信息可分为三个步骤:
- 查出按下的是哪个键
- 将该键翻译成能被主机接收的编码,如 ASCII 编码
- 将编码传送给主机
鼠标:鼠标是常用的定位输入设备,它把用户的操作与计算机屏幕上的位置信息相联系。常用的鼠标由机械式和光电式两种。
工作原理:
当鼠标在平面上移动时,其底部传感器把运动的方向和距离检测出来,从而控制光标做出相应运动
# 输出设备
显示器
显示存储器 (VRAM):也称刷新存储器,为了不断提高刷新图像的信号,必须把一帧图像信息存储在刷新存储器中。其存储容量由图像分辨率和灰度级决定,分辨率越高,灰度级越多,刷新存储器容量越大。
分辨率:所能表示的像素个数,屏幕上的每一个光电就是一个像素,以宽、高的像素的乘积表示
灰度级:灰度级是指黑白显示器中所显示的像素点的亮暗差别,在彩色显示器中则表现为颜色的不同,灰度级越多,图像的层次越清楚逼真,典型的有 8 位、16 位等。n 位可以表示 中不同的亮度或颜色
VRAM 容量 = 分辨率 * 灰度级位数
VRAM 带宽 = 分辨率 * 灰度级位数 * 帧频
注:现代计算机中,显存除了作为当前显示帧的缓存,还会用于保存即将渲染的图像数据
集成显卡计算机中,通常分配一片内存作为显存
显示器分类:阴极射线管显示器、液晶显示器 (LCD)、LED 显示器 (LED)
与 LCD 相比,LED 显示器在亮度、功耗、可视角度和刷新速率等方面都更具有优势
按显示信息内容不同可分为:字符显示器(重点:显示字符的原理)、图形显示器、图像显示器
打印机
打印机是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上
按印字原理不同可分为:击打式打印机、非击打式打印机
按工作方式分为:针式打印机、喷墨式打印机、激光打印机
# I/O 接口
I/O 接口:又称 I/O 控制器、设备控制器,负责协调主机与外部设备之间的数据传输
I/O 接口的作用
- 数据缓冲:通过数据缓冲寄存器 (DBR) 达到主机和外设工作速度的匹配
- 错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供 CPU 查用
- 控制和定时:接收从控制总线发来的控制信号、时钟信号
- 数据格式转换:串 - 并、并 - 串等格式转换
- 与主机和设备通信:实现主机 - I/O 接口 - I/O 设备之间的通信
内部接口:内部接口与系统总线相连,实质上是与内存、CPU 相连。注意:数据传输的方式不只有并行传输
外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此 I/O 接口需具有串 / 并转换功能
I/O 接口控制原理
- 发命令:发送命令字到 I/O 控制寄存器,向设备发送命令 (需要驱动程序的协助)
- 读状态:从状态寄存器读取状态字,获得设备或 I/O 控制器的状态信息
- 读 / 写数据:从数据缓冲寄存器发送或读取数据,完成主机与外设的数据交换
控制寄存器、状态寄存器在使用时间上是错开的,因此有的 I/O 接口可将二者合二为一
IO 控制器中的各种寄存器称为 I/O 端口
数据线:读写数据、状态字、控制字、中断类型号
地址线:指明 I/O 端口
控制线:读 / 写 IO 端口的信号、中断请求信号
如何确定要操作的设备?
- 每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备
接口与端口
接口 Interface:
端口 Port
- 数据端口
- 控制端口
- 状态端口
控制逻辑
I/O 端口是指接口电路中可以被 CPU 直接访问的寄存器
如何访问 I/O 端口?
# I/O 端口及其编址
统一编址
把 I/O 端口当做存储器的单元进行地址分配,用统一的访存指令就可以访问 I/O 端口,又称为存储器映射方式
靠不同的地址码区分内存和 I/O 设备,I/O 地址要求相对固定在地址的某部分
如系统总线中地址线共 10 根,则可以访问的存储单元个数为 1024 个,假设要给 10 个 I/O 端口编址
1.0~9 表示 I/O 地址,10~1023 为主存单元地址
2.0~1013 表示主存单元地址,1014~1023 为 I/O 地址
3. 在 1024 中间选择 10 个表示 I/O 地址,其他为主存地址
优点:
- 不需要专门的输入 / 输出指令,所有访存指令都可以直接访问端口,程序设计灵活性高
- 端口有较大的编址空间
- 读写控制逻辑电路简单
缺点:
- 端口占用了主要地址空间,使主存地址空间变小
- 外设寻址时间长 (地址位数很多,地址译码速度慢)
独立编制
I/O 端口地址与存储器地址无关,独立编制 CPU 需要设置专门的输入 / 输出指令访问端口,又称 I/O 映射方式
靠不同的指令区分内存和 I/O 设备
优点:
- 使用专用 I/O 指令,程序编址清晰
- I/O 端口地址位数少,地址译码速度快
- I/O 端口的地址不占用主存地址空间
缺点:
- I/O 指令类型少,一般只能对端口进行传送操作,程序设计灵活性差
- 需要 CPU 提供存储器读 / 写、I/O 设备读 / 写两组控制信号,增加了控制逻辑电路的复杂性
# I/O 接口类型
按数据传送方式可分为:
并行接口:一个字节或一个字所有位同时传送
串行接口:一位一位地传送
注:这里所有的数据传送指的是外设和接口一侧的传送方式,而在主机和接口一侧,接口要完成数据格式转换
按主机访问 I/O 设备的控制方式可分为:
程序查询接口
中断接口
DMA 接口
按功能选择的灵活性可分为:
可编程接口
不可编程接口