性能指标

总线性能指标描述的是:一条总线按什么节奏工作一次能传多少数据单位时间最多能传多少数据

常见指标包括:

指标 含义 关注点
总线周期 一次总线操作所需时间 包括申请、寻址、传输、结束等阶段
总线时钟周期 总线时钟的一个周期 记为 $T_{clk}$
总线时钟频率 总线时钟周期的倒数 记为 $f_{clk}=1/T_{clk}$
总线工作频率 总线实际完成操作或数据传送的频率 常由总线周期或传输节奏决定
总线宽度 总线上一次可传送的数据位数 通常指数据总线根数
总线带宽 单位时间内总线可传送的最大数据量 理论最高传输率
总线复用 同一组线在不同时刻传不同信息 减少线数,增加时序控制要求
信号线数 地址线、数据线、控制线数量的总和 复用会影响物理信号线数
频率看的是总线,不是 CPU

总线性能计算中的“总线频率”“总线时钟频率”指的是总线自己的时钟频率。不要把 CPU 主频直接代入总线带宽公式,除非题目明确说明 CPU 时钟和总线时钟相同。

# 总线周期与总线时钟周期

总线周期也叫总线传输周期,是一次总线操作所需的时间。

总线时钟周期是总线时钟的一个周期。

总线周期和总线时钟周期不是固定等同关系
  • 大多数情况下,一个总线周期包含多个总线时钟周期。
  • 有些情况下,一个总线周期正好等于一个总线时钟周期。
  • 某些高性能传输方式下,一个总线时钟周期内也可能完成多次数据传送。
如果一次总线操作需要 $N$ 个总线时钟周期,则:

$$
T_{bus}=N \times T_{clk}
$$

$$
f_{work}=\frac{1}{T_{bus}}=\frac{f_{clk}}{N}
$$

这里的 $f_{work}$ 是总线工作频率,表示一秒内能完成多少次这样的总线操作。

总线宽度

总线宽度也叫总线位宽,通常指数据总线的根数,即总线上同时能够传输的数据位数

例如:

  • 32 根数据线称为 32 位总线。
  • 64 根数据线称为 64 位总线。

如果总线宽度为 $W$ bit,则一次数据传送的数据量为:

$$
\frac{W}{8}\ \text{B}
$$

总线带宽

总线带宽可以理解为总线的数据传输率,即单位时间内总线上最多能传送的数据量。

基本形式是:

$$
\text{总线带宽} = \text{每秒数据传送次数} \times \text{每次传送数据量}
$$

若总线工作频率为 $f_{work}$,总线宽度为 $W$ bit,则:

$$
\text{总线带宽} = f_{work} \times W\ \text{bit/s}
$$

换成字节每秒:

$$
\text{总线带宽} = f_{work} \times \frac{W}{8}\ \text{B/s}
$$

理论带宽和有效传输率

总线带宽通常指总线本身能达到的理论最高传输率。计算实际有效数据传输率时,要用传输的有效数据量除以总耗时;地址阶段、等待周期、控制开销都会降低有效传输率。

## 每个时钟周期传多次数据

有些总线在一个总线时钟周期内可以传送多次数据。例如上升沿传一次、下降沿再传一次。

若总线时钟频率为 $f_{clk}$,每个总线时钟周期传送 $m$ 次数据,总线宽度为 $W$ bit,则理论带宽为:

$$
\text{总线带宽}=f_{clk}\times m\times \frac{W}{8}\ \text{B/s}
$$

这里仍然使用的是总线时钟频率

突发传输

突发传输也叫猝发传输。它的特点是:主设备只给出一个首地址,从设备就能从该地址开始连续读出或写入多个数据。

普通连续传输可能每个数据都要单独给地址:

$$
A_0,D_0;\quad A_1,D_1;\quad A_2,D_2;\quad A_3,D_3
$$

突发传输则可以:

$$
A,\quad D_0,D_1,D_2,D_3
$$

突发传输减少了连续地址访问时重复给地址的开销,适合主存连续单元、Cache 块、I/O 数据块等场景。

总线复用

总线复用是指同一组物理信号线在不同时间传输不同信息。它可以用较少的线传输更多类型的信息,从而节省空间、引脚和成本。

最常见的是地址/数据复用

  1. 先用同一组地址/数据线传送地址。
  2. 接收方把地址锁存下来。
  3. 同一组线切换用途,再传送数据。

这样原本可能需要地址线和数据线两组线路,现在可以用一组复用线完成。但代价是:地址和数据不能同时出现在这组线上,传输过程必须分阶段进行,时序控制更复杂。

信号线数

信号线数通常指地址总线、数据总线和控制总线的线数总和。

如果地址线和数据线完全分开,则物理信号线数较多;如果使用地址/数据复用,则物理信号线数可以减少。

逻辑分类和物理线数不同

即使从功能上仍然说“地址信息”和“数据信息”,它们也可能在物理上使用同一组复用线。逻辑功能是否分开,和物理线路是否分开,是两个不同问题。

# 串行和并行的速度判断

总线带宽和两个因素直接相关:

$$
\text{总线带宽}=\text{每秒数据传送次数}\times\text{每次传送数据量}
$$

在工作频率相同的情况下,并行总线一次传多位,通常比串行总线快。

但并行总线的信号线多,工作频率提高后线间干扰、线长匹配、布线空间都会成为问题,频率难以持续提高。串行总线一次传送位数少,但更容易提高工作频率,也更适合长距离传输。因此并行不一定比串行快,要结合频率、位宽、传输距离和实际实现判断。

计算例子

某同步总线采用地址/数据复用方式,其中地址/数据线有 32 根;总线时钟频率为 66 MHz;每个总线时钟周期传送两次数据,上升沿和下降沿各传送一次。

理论最大数据传输率

每个总线时钟周期传送两次数据,因此每秒数据传送次数为:

$$
66\text{ MHz}\times 2=132\text{ M 次/s}
$$

总线宽度为:

$$
32\text{ bit}=4\text{ B}
$$

所以理论带宽为:

$$
132\times 4\text{ MB/s}=528\text{ MB/s}
$$

突发传输 128 bit 数据的最少时间

若该总线支持突发传输,传输一个地址占用 1 个总线时钟周期。现在要传输 128 bit 数据:

$$
128\text{ bit}=16\text{ B}
$$

每次数据传送 32 bit,即 4 B,所以需要 4 次数据传送。又因为每个总线时钟周期传 2 次数据,所以数据阶段需要:

$$
4 \div 2 = 2\text{ 个总线时钟周期}
$$

总共需要:

$$
1 + 2 = 3\text{ 个总线时钟周期}
$$

66 MHz 的总线时钟周期约为:

$$
\frac{1}{66\text{ MHz}}\approx 15.15\text{ ns}
$$

因此最少时间约为:

$$
3\times 15.15\text{ ns}\approx 45.45\text{ ns}
$$

小结

总线性能计算的核心顺序是:

  1. 先确认题目给的是总线时钟频率还是总线工作频率。
  2. 再确认一次数据传送的位数,也就是总线宽度。
  3. 如果每个总线时钟周期可传多次数据,要把次数乘进去。
  4. 如果计算实际耗时,要把地址阶段、数据阶段和等待开销分开算。