# 输入输出系统和 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 位可以表示2n2^n 中不同的亮度或颜色

VRAM 容量 = 分辨率 * 灰度级位数

VRAM 带宽 = 分辨率 * 灰度级位数 * 帧频

注:现代计算机中,显存除了作为当前显示帧的缓存,还会用于保存即将渲染的图像数据

集成显卡计算机中,通常分配一片内存作为显存

显示器分类:阴极射线管显示器、液晶显示器 (LCD)、LED 显示器 (LED)

与 LCD 相比,LED 显示器在亮度、功耗、可视角度和刷新速率等方面都更具有优势

按显示信息内容不同可分为:字符显示器(重点:显示字符的原理)、图形显示器、图像显示器

打印机

打印机是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上

按印字原理不同可分为:击打式打印机、非击打式打印机

按工作方式分为:针式打印机、喷墨式打印机、激光打印机

# I/O 接口

I/O 接口:又称 I/O 控制器、设备控制器,负责协调主机与外部设备之间的数据传输

I/O 接口的作用

  • 数据缓冲:通过数据缓冲寄存器 (DBR) 达到主机和外设工作速度的匹配
  • 错误或状态监测:通过状态寄存器反馈设备的各种错误、状态信息,供 CPU 查用
  • 控制和定时:接收从控制总线发来的控制信号、时钟信号
  • 数据格式转换:串 - 并、并 - 串等格式转换
  • 与主机和设备通信:实现主机 - I/O 接口 - 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 接口

按功能选择的灵活性可分为:

  • 可编程接口

  • 不可编程接口