总线

总线分为CPU内的总线(片内总线)与CPU和其他功能部件之间的总线(系统总线),I/O总线与通信总线。

多总线硬件系统的系统总线通常可分为

  • 数据总线
  • 地址总线
  • 控制总线

I/O 总线是CPU与内部I/O设备的总线结构,如显卡、网卡等,通常使用标准化的内部总线协议

通信总线是CPU与外部I/O设备或者其他计算机通信的总线结构,常见协议有USB、RS-232、RS-485等

总线结构

总线结构发展历程经历三种结构

  • 早期共享总线结构 -- 通过单一系统总线串联所有设备,传输冲突严重
  • 三总线结构 -- 将总线在物理结构上增加到为三条总线,系统总线、IO总线与DMA总线。传统总线仍然需要承载所有设备通信,具有共享式、广播式的特点,仍然限制了并发和拓展能力
  • 南北桥结构 -- 通过南桥/北桥芯片分离内部和外部的控制功能,北桥负责高速内部通信,如显卡、内存通信;南桥负责外部通信,如USB设备、磁盘与其他外设。南北桥之间通过桥间总线进行通信,北桥与CPU之间通过 前端总线(FSB) 进行通信。南北桥结构仍然因为FSB的吞吐影响了系统的并发能力。
  • 现代集成通信结构 -- 传统北桥被集成在CPU内作为片上集成,CPU与其他外部设备进行点对点互联。多核CPU核间、多CPU结构的CPU之间使用QPI高速串行链路通信。高速IO设备直接通过PCIe与CPU相联,低速设备采用集成度更高的南桥芯片PCH管理

总线的性能指标

  • 总线传输周期 -- 完成一次完整总线事务的总时间,简称总线周期
  • 总线时钟频率 -- 总线周期的倒数表示总线事务信号的频率。现代总线事务的时钟独立于CPU时钟
  • 总线工作频率 -- 总线有效数据传输的频率
  • 总线宽度 -- 总线中数据线条数,标志总线并行数量
  • 总线带宽 -- 总线总传递速度,总线带宽 = 总线宽度 ×\times 总线频率
  • 总线复用 -- 地址总线/数据总线复用以减小引脚总数
  • 总线寻址能力 -- nn位地址线能寻址2n2^n个存储单元

总线事务

总线事务是主设备到从设备到一次信息交换的过程。分为三个基本段

  • 地址传送阶段 -- 目标地址与操作类型,主设备 -> 从设备
  • 从设备响应阶段(数据准备阶段) -- 从设备准备数据
  • 数据传输阶段 -- 数据在总线上的传输

总线的连续传输模式可分为:

  • 非突发传输模式 -- 单次传输一个总线宽度的数据单元,每一次传输都完整执行三个传输基本段
  • 突发传输模式 -- 连续地址传输,地址线仅传输首地址,后续地址由硬件执行地址自增生成,省去了地址传输的时间开销

总线的物理传输方式可分为串行通信与并行通信。其中并行通信能通过多条数据线同步传输数据,但是会出现信号串扰和时序偏移等问题,实际传输效率低于串行通信。

串行通信可分为

  • 同步串行 -- 发送方时钟控制接收方时钟,二者时钟严格一致,只在数据块首位进行标记。硬件实现复杂,成本较高
  • 异步串行 -- 收发方使用独立的时钟,单数据块以起始位0开启,以终止位1结束,存在奇偶校验。

总线定时

总线定时方式可分为

  • 同步定时方式 -- 主从设备使用同一个时钟,每个操作都在固定的周期内进行
  • 异步定时方式 -- 通过主从设备间的握手信号实现定时控制,分为不互锁(主-从)、半互锁(主-从-主)、全互锁(主-从-主-从). 异步定时方式能改变总线周期长度,并可靠连接工作速度差异较大的设备
  • 半同步定时方式 -- 通过Wait 信号线控制。主设备在信号上升沿检测Wait, 当Wait 置高电平时表示数据未准备就绪,同步无效,直到Wait置低电平时才能读取数据
  • 分离式定时方式 -- 将总线事务拆为请求阶段与应答阶段,请求阶段主设备申请总线使用权,发送地址与命令后释放;应答阶段由从设备申请总线使用权并应答。分离式定时方案能处理多主设备竞争的场景,但是总线仲裁的逻辑较为复杂,协议管理开销较大。