Bus Performance
性能指标
总线性能指标描述的是:一条总线按什么节奏工作、一次能传多少数据、单位时间最多能传多少数据。
常见指标包括:
| 指标 | 含义 | 关注点 |
|---|---|---|
| 总线周期 | 一次总线操作所需时间 | 包括申请、寻址、传输、结束等阶段 |
| 总线时钟周期 | 总线时钟的一个周期 | 记为 $T_{clk}$ |
| 总线时钟频率 | 总线时钟周期的倒数 | 记为 $f_{clk}=1/T_{clk}$ |
| 总线工作频率 | 总线实际完成操作或数据传送的频率 | 常由总线周期或传输节奏决定 |
| 总线宽度 | 总线上一次可传送的数据位数 | 通常指数据总线根数 |
| 总线带宽 | 单位时间内总线可传送的最大数据量 | 理论最高传输率 |
| 总线复用 | 同一组线在不同时刻传不同信息 | 减少线数,增加时序控制要求 |
| 信号线数 | 地址线、数据线、控制线数量的总和 | 复用会影响物理信号线数 |
总线性能计算中的“总线频率”“总线时钟频率”指的是总线自己的时钟频率。不要把 CPU 主频直接代入总线带宽公式,除非题目明确说明 CPU 时钟和总线时钟相同。
总线周期也叫总线传输周期,是一次总线操作所需的时间。
总线时钟周期是总线时钟的一个周期。
- 大多数情况下,一个总线周期包含多个总线时钟周期。
- 有些情况下,一个总线周期正好等于一个总线时钟周期。
- 某些高性能传输方式下,一个总线时钟周期内也可能完成多次数据传送。
$$
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 数据块等场景。
总线复用
总线复用是指同一组物理信号线在不同时间传输不同信息。它可以用较少的线传输更多类型的信息,从而节省空间、引脚和成本。
最常见的是地址/数据复用:
- 先用同一组地址/数据线传送地址。
- 接收方把地址锁存下来。
- 同一组线切换用途,再传送数据。
这样原本可能需要地址线和数据线两组线路,现在可以用一组复用线完成。但代价是:地址和数据不能同时出现在这组线上,传输过程必须分阶段进行,时序控制更复杂。
信号线数
信号线数通常指地址总线、数据总线和控制总线的线数总和。
如果地址线和数据线完全分开,则物理信号线数较多;如果使用地址/数据复用,则物理信号线数可以减少。
即使从功能上仍然说“地址信息”和“数据信息”,它们也可能在物理上使用同一组复用线。逻辑功能是否分开,和物理线路是否分开,是两个不同问题。
总线带宽和两个因素直接相关:
$$
\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}
$$
总线性能计算的核心顺序是:
- 先确认题目给的是总线时钟频率还是总线工作频率。
- 再确认一次数据传送的位数,也就是总线宽度。
- 如果每个总线时钟周期可传多次数据,要把次数乘进去。
- 如果计算实际耗时,要把地址阶段、数据阶段和等待开销分开算。