Skip to content

I/O

1. I/O Control Methods

I/O 接口编址方式:

  • 统一编址:和主存空间一起编址
  • 独立编址: I/O 端口独立编址,地址空间不共享

程序直接控制:占用 CPU 资源

  • 如: CPU 读取串口状态,向映射好的寄存器发送数据

程序中断方式:提高效率;同时管理多个外设;对 CPU 干扰较大

  • 适用情况:传输速度不高,传输量不大
  • CPU 和外设同时工作
  • 外设发起请求
  • CPU 暂停正在执行的程序,响应中断
  • 处理完成,继续执行原来的程序

Direct Memory Access: 对 CPU 打扰适中;无法管理大量高速设备

  • I/O 设备和主存储器之间成组传送数据
  • 传输过程由 DMA 自行控制
  • DMA 采用实地址
  • 过程:CPU 预处理,DMA 传送, CPU 后处理
  • 工作方式:
    • 独占(内存)总线:停止 CPU 访问主存,等 DMA 传输之后交还总线控制权
    • 周期窃取:一旦 I/O 设备有 DMA 请求,则由它挪用一个存取周期,此时 CPU 停止访问主存,可以完整其它操作;效率高
    • 交替访内:一个CPU周期可分为2个周 期,一个专供DMA控制器访内,另一个专供CPU访 内。不需要总线使用权的申请、建立和归还过程。

四级 I/O 系统: CPU & 内存 ↔ 通道 ↔ 设备控制器 ↔ 外围设备

通道控制方式:

  • I/O 通道:代替 CPU 管理外设的独立部件;特殊的处理器:有自己的指令和程序
  • 一对多;适应各种外设,并行工作
  • 根据 CPU 要求选一外设与系统相连
  • 通道类型:
    • 字节多路通道:简单共享,分时处理;低、中速
    • 选择通道:选一外设独占通道,成组传送;快速
    • 数组多路通道:字节多路与选择的结合

外围处理机:独立于主机工作,有自己的指令系统

  • 通道型处理机
  • 外围处理机:通过通道方式与主机进行交互

2. Bus

2.1 Three types

单总线:主板总线

  • 只有一条总线,在 CPU 和 MEM 之间
  • 所有 IO 设备直接挂到唯一的总线上
  • 简单;速度慢

Screen Shot 2021-12-10 at 10.22.45 AM

双总线:

  • 两种总线:一个 CPU-MEM 总线;其它的为 IO 总线
  • IO 总线通过总线适配器与 CPU-MEM 总线相连

Screen Shot 2021-12-10 at 10.21.25 AM

三总线:进一步拆分

  • 三种总线:
    • CPU-MEM Bus
    • Backplane Bus (e.g. PCI)
    • I/O Bus
  • I/O 总线挂到主板总线,主板总线挂到 CPU-MEM 总线

Screen Shot 2021-12-10 at 10.24.48 AM

Peripheral Hub

PCI

  • 并行总线
  • PCI 空间与处理器空间隔离
  • 拓展性强

PCIe

  • 串行点到点;差分传输抗干扰
  • 全双工

2.2 Bus Control

控制、数据、地址(可以和数据复用)

总线标准:通信协议

总线事务:

  • 主设备:发起命令(地址)
  • 从设备:被动相应 Read Request ,发数据;收数据

Bus Arbitration 仲裁:谁来用 Bus

  • 最简单:CPU 作为唯一主设备,控制所有总线请求

仲裁流程:

  1. 主设备 request
  2. Bus Arbiter (仲裁器) grants permission
  3. 使用完毕,主设备 release

仲裁方式:

  • 集中仲裁(计算机内的主要方式)
    • 菊链仲裁
    • 集中平行仲裁
  • 分布仲裁
  • 优先级或轮询仲裁

仲裁的要素:优先级和公平性(efficiency and equality!)

菊链仲裁:

Screen Shot 2021-12-10 at 10.49.20 AM

集中平行仲裁:

Screen Shot 2021-12-10 at 10.54.08 AM

同步总线:

  • 一根时钟信号线,所有设备必须按此时钟频率工作
  • 传输协议(e.g. 何时读数据)根据时钟信号制定
  • 逻辑简单,高速

异步总线

  • 不使用统一的时钟
  • 使用握手协议,而不是固定的时钟信号;e.g. ACK / dataready signals
  • 适应不同速度的设备

2.3 Bandwidth

提高带宽的方式:

  • 增加宽度

  • 分离数据、地址总线

  • 成组传送:一个总线事务传多个数据

    • 开头一个 address ,后面跟着多个 data

总线上有多主设备,如何提高事务数量:

  • 仲裁重叠
  • 总线占用
  • 地址、数据传送重叠

总线带宽 = 总线宽度 × 总线频率

3. 接口

总线:数据传输

接口:连接总线和外部设备:主机 总线 接口 外设

  • 总线是由多个设备共享的,设备之间存在差异
  • 需要接口去连接二者

基本功能:将外部设备抽象成比较统一的样子

  • 让主机能识别、找到设备:为每个设备规定地址码/编号,如 Memory-map 方式
  • 在设备和主机之间建立控制、通信:为主设备提供外设状态;将主机的命令交给外设
  • 主机和设备之间的数据缓冲
  • 其它屏蔽外设差异的需求

实现:通用可编程接口电路

3.1 串行通信

同步:

  • 同步信号:内同步(同步字符)/外同步(硬件同步信号)

异步:

  • 起始位、停止位
  • n 倍波特率: n 倍时钟周期传送一个数据; n 越大速率越低

Compared with 并行通信:

Serial ATA: Serial Advanced Technology Attachment

Parallel ATA

先发低位

3.2 USB

Universal Serial Bus

串行结构;四根线:两个电源,两个数据(D+, D-, 差分传输)

作用:用户不必打开机箱安装外设,不必设置开关跳线等;热插拔

结构:一个 root Hub ,层次结构;级联

设备检测:

  • 根 HUB 定时查询接口状态
  • 若检测到,给设备赋 7 位地址(每台计算机最多接 127 个外设)
  • 只有 1 个主设备,无需仲裁; root hub 轮询 devices , CPU 和 root hub 之间用中断
  • 除了 root hub 都是从设备,不能主动发请求;产生中断帧后等待 root hub 轮询

Screen Shot 2021-12-14 at 8.57.28 AM


Last update: December 26, 2021
Authors: Co1lin