# 总线概述

总线简图

一根总线由多根信号线组成,所有硬件部件都可以通过这根总线传递数据,可并行发送多个 bit 数据。同一时刻只能有一个部件发送数据,但是可有多个部件接受数据

总线的定义

总线是一组能为多个部件分时共享的公共信息传送线路

为什么要用总线:

  • 早期计算机外部设备少时大多采用分散连接方式,不易实现随时增减外部设备
  • 为了更好地解决 I/O 设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接

共享:共享是指总线上可以挂接多个部件,各个部件之间互相交换的信息可以通过这组线路分时共享

分时:分时是指同一时刻只允许一个部件向总线发送信息,如果系统中有多个部件,则它们只能分时地向总线发送信息

总线的特性

  • 机械特性:尺寸、形状、管脚数、排列顺序
  • 电气特性:传输方向和有效的电平范围
  • 功能特性:每根传输线的功能 (地址、数据、控制)
  • 时间特性:信号的时序关系

总线的分类

  • 按数据传输方式:

    • 串行总线:数据传输中,每次只能传一位数据 (例如:USB)
      • 优点:只需要一条传输线,成本低廉,广泛应用于长距离传输;应用与计算机内部时,可以节省布线空间
      • 缺点:在数据发送和接收的时候要进行拆卸和装配,要考虑串行 - 并行转换的问题
    • 并行总线:数据传输中,每次可以传多位数据 (例如:数据总线)
      • 优点:总线的逻辑时序比较简单,电路实现比较容易
      • 缺点:信号线数量多,占用更多布线空间;远距离传输成本高昂;由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作效率
  • 按总线功能 (连接的部件)

    • 片内总线

      • 片内总线是芯片内部的总线。
      • 它是 CPU 芯片内部寄存器与寄存器之间、寄存器与 ALU 之间的公共连接线
    • 系统总线

      • 系统总线是计算机系统内各功能部件 (CPU、主存、I/O 接口) 之间相互连接的总线
      • 按照系统总线传输信息内容的不同,又可分为:数据总线 (DB)、地址总线 (AB) 和控制总线 (CB)
        • 数据总线:传输各功能部件之间的数据信息,包括指令和操作数;位数 (根数) 与机器字长、存储字长有关;双向
        • 地址总线:传输地址信息,包括主存单元或 I/O 端口的地址;位数 (根数) 与主存地址空间大小及设备数量有关;单向
        • 控制总线:一根控制线传输一个信号;有出:CPU 送出的控制命令;有入:主存 (或外设) 返回 CPU 的反馈信号
      • 数据通路表示的是数据流经的路径、数据总线是承载的媒介
    • 通信总线

      • 通信总线是用于计算系统之间或计算机系统与其他系统 (如远程通信设备、测试设备) 之间信息传送的总线,通信总线也称为外部总线
  • 按时序控制方式

    • 同步总线
    • 异步总线

系统总线的结构

单总线结构

  • 结构:CPU、主存、I/O 设备 (通过 I/O 接口) 都连接在一组总线上,允许 I/O 设备之间,I/O 设备和 CPU 之间或 I/O 设备与主存之间直接交换信息
  • 优点:结构简单。成本低,易于接入新的设备
  • 缺点:带宽低、负载重,多个部件只能争用唯一的总线,且不支持并发传送的操作

双总线结构

  • 结构:双总线结构有两条总线,一条是主存总线,用于 CPU、主存和通道之间进行数据传送;另一条是 I/O 总线,用于多个外部设备与通道之间进行数据传送
  • 通道式具有特殊功能的处理器,能对 I/O 设备进行统一管理。通道程序放在主存中
  • 支持突发 (猝发) 传送:送出一个地址,收到多个地址连续的数据
  • 优点:将较低速的 I/O 设备从单总线上分离出来,实现存储器总线和 I/O 总线分离
  • 缺点:需要增加通道等硬件设备

三总线结构

  • 结构:三总线结构是计算机系统各个部件之间采用 3 条各自独立的总线来构成信息通路这 3 条总线分别为主存总线、I/O 总线和直接内存访问 DMA 总线
  • 优点:提高了 I/O 设备的性能、使其更快地响应命令,提高系统吞吐量
  • 缺点:系统工作效率较低

四总线结构

四总线结构

桥接器:用于连接不同的总线,具有数据缓冲、转换和控制功能

靠近 CPU 的总线速度较快

每级总线的设计遵循总线标准

# 总线的性能指标

  • 总线的传输周期 (总线周期)

    • 一次总线操作所需的时间 (包括申请阶段、寻址阶段、传输阶段和结束阶段),通常由若干个总线时钟周期构成
  • 总线时钟周期

    • 即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制

大多数情况下,一个总线周期包含多个总线时钟周期

有的时候,一个总线周期就是一个总线时钟周期

有的时候,一个总线时钟周期可能包含多个总线周期

现在计算机中,总线的时钟周期也有可能是由桥接器提供

  • 总线的工作频率
    • 总线上各个操作的频率,为总线周期的倒数
    • 若总线周期 = N 个时钟周期,则总线的工作频率 = 时钟频率 / N
    • 实际上指一秒内传送几次数据
  • 总线的时钟频率
    • 即机器的时钟频率,为时钟周期的倒数
    • 若时钟周期为 T,则时钟频率为 1/T
    • 实际上指一秒内有多个时钟周期
  • 总线宽度
    • 又称总线位宽,它是总线上同时能传输的数据位数,通常是指数据总线的根数,如 32 根称为 32 位总线
  • 总线带宽
    • 可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节 / 秒表示

总线带宽 = 总线工作频率 * 总线宽度 (bit/s)= 总线工作频率 *(总线宽度 / 8)(B/s)= 总线宽度 / 总线周期

注:总线带宽是指总线本身所能达到的最高传输速率,在计算机实际的有效数据传输率时,要用实际传输的数据量除以耗时。

工作频率相同时,串行总线传输速度比并行总线慢

并行总线的工作频率无法持续提高,而串行总线可以通过不断提高工作频率来提高传输速度,最终超过并行总线

  • 总线复用
    • 总线复用是指一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息。从而节省了空间和成本
  • 信号线数
    • 地址总线、数据总线和控制总线 3 种总线的总和称为信号线数

# 总线仲裁 (简单了解,不考)

将总线上所连接的各类设备按其对总线有无控制功能分为:

  • 主设备:获得总线控制权的设备
  • 从设备:被主设备访问的设备,只能响应从主设备发来的各种总线命令

为什么要仲裁

  • 总线作为一种共享设备,不可避免地会出现同一时刻有多个主设备竞争总线控制权的问题

总线仲裁的定义:

  • 多个主设备同时竞争主线控制权时,以某种方式选择一个主设备优先获得总线控制权称为总线仲裁

总线仲裁分类:

  • 集中仲裁方式:链式查询方式、计数器定时查询方式、独立请求方式
  • 分布仲裁方式:

集中仲裁方式

工作流程:

  • 主设备发出请求信号
  • 若多个主设备同时要使用总线,则由总线控制器的判优、仲裁逻辑按一定的优先等级确定哪个主设备能使用总线
  • 获得总线使用权的主设备开始传送数据

链式查询

有三根线,总线忙 BS,总线允许 BG,总线请求 BR

优先级:离总线控制越近的部件,其优先级越高;离总线控制器远的部件,其优先级越低

优点:链式查询方式优先级固定。只需很少几根控制线就能按一定优先级次序实现总线控制,结构简单,扩充容易

缺点:对硬件电路的故障敏感,并且优先级不能改变。当优先级高的部件频繁使用总线时,会使优先级低的部件长时间不能使用总线

计数器查询方式

结构特点:用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应线 BG;它仍公用一根总线请求线

当总线控制器收到总线请求信号,判断总线空闲时,计数器开始计数,计数值通过设备地址线发向各个部件

当地址线上的计数器值与请求使用总线设备的地址一致时,该设备获得总线控制权。同时,中止计数器的计数及查询

优点:

  • 计数初始值可以改变优先次序
    • 计数每次从 "0" 开始,设备的优先级就按顺序排列,固定不变
    • 计数从上一次的终点开始,此时设备使用总线的优先级相等
    • 计数器的初值还可以由程序设置
  • 对电路的故障没有链式敏感

缺点:

  • 增加了控制线数
    • 若设备有 n 个,则需 ceil (log2n)+2 条控制线
    • 控制相对比链式查询相对复杂

独立请求方式

结构特点:每一个设备均有一对总线请求线 BRi 和总线允许线 BGi

当总线上的部件需要使用总线时,经各自的总线请求线发送总线请求线发送总线请求信号,在总线控制器中排队

当总线控制器按一定的优先次序决定批准某个部件的请求时,则给该部件发送总线响应信号

优点:

  • 响应速度快,总线允许信号 BG 直接从控制器发出到有关设备,不必在设备间传递或者查询
  • 对优先次序的控制相当灵活

缺点:

  • 控制线数量多
    • 若设备为 n 个,则需要 2n+1 条控制线,其中 + 1 为 BS 线,用于设备向总线控制部件反馈已经是否正在使用总线
  • 总线的控制逻辑更加复杂

分布式仲裁方式

特点:不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线

当设备有总线请求时,它们就把各自唯一的仲裁号发到共享的仲裁总线上;

每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较

如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号

最后,获胜者的仲裁号保留在仲裁总线上