总线的性能指标

这一节的公式只有一条:

是数据线位数, 是每秒传送次数。看起来毫无难度——而这一节的错题几乎全部集中在一件事上:把题干给的那个频率认成了 ,但它其实是总线时钟频率 。

所以这一节真正要练的不是套公式,是认频率。

机制

三个频率必须分开

符号名字含义
总线时钟频率总线的基本节拍,
总线工作频率(传输频率)每秒能完成多少次数据传送
CPU 主频与前两者通常都不相等

三者的关系不是固定的,取决于协议:

一次传送占个总线时钟 一个时钟内传次,如双沿

和 是两个方向相反的修正,题目只会用到其中一个。 判断用哪个,看协议是”多个时钟才凑一次传送”还是”一个时钟传多次”。

认频率对照表

这张表是本节的核心。 拿到题先在这里对号入座,再套公式:

题干的说法给的是代入前要做什么
「总线时钟频率 ,每 个时钟周期传送一次」
「总线时钟频率 ,每个时钟周期传送一次」
「总线工作频率 / 传输频率 」直接用
「 MT/s」「每秒传送 次」直接用,不要再乘
「DDR,时钟频率 」(双沿)
「总线周期为 」周期
「CPU 主频 」与总线无关单独换算,见下

最后一行是最常见的送分陷阱:题目同时给 CPU 主频 800 MHz 和总线频率 200 MHz,求总线带宽时只用后者;CPU 主频只在需要把总线时间折成 CPU 周期数时才用。

总线宽度

指数据线的位数,与地址线根数、CPU 字长都无关。

一次传送的字节数

32 位 → 4 B,64 位 → 8 B。多通道 / 多 lane 相当于把 (或传送次数)乘以通道数——双通道内存把 翻倍,PCIe ×4 把带宽乘 4。

峰值带宽与有效带宽

峰值带宽假设数据线一刻不停地满载传数据。真实事务里还有地址阶段、等待周期、仲裁、转向、校验,这些时间不传有效数据。

是这次事务真正交付的有效字节数, 是从事务开始到结束的全部时间。

这两个量的关系与 5.6.4 里”理想加速比 与实际加速比”的关系完全同构:分子是理论上限,分母因为开销而变大,比值就是效率。总线利用率就是总线版的流水线效率。

计算模板

  1. 认频率——用上面那张表,把题干给的频率化成 。
  2. 算每拍字节数——。
  3. 算峰值带宽——。
  4. 数拍数——传输总量 ÷ 每拍字节数(不整除时向上取整)。
  5. 画时间轴——把地址、等待、数据、释放各阶段的周期数列出来,相加得 。
  6. 算有效带宽——有效字节 ÷ 。

第 5 步必须画,不能凭印象加。 不同题目对”地址阶段是否与前一事务重叠""首字准备与地址阶段是否重叠”的规定不同,只能按题图。

例一:峰值带宽

某总线数据线 32 位,总线时钟频率 200 MHz,每个时钟周期传送一次数据。

若改为「每 2 个时钟周期传送一次」:,。

若改为「DDR,时钟频率 200 MHz」:,。

同一个”200 MHz”,三种协议下答案相差 4 倍。 这就是认频率的意义。

例二:有效带宽

同一条总线(32 位、200 MHz,)做一次突发传送,传 32 B。地址与命令占 1 个总线时钟,存储器准备首字数据需 40 ns,随后每个 32 位数据拍占 1 个总线时钟。

  • 数据拍数: 拍
  • 总时间:
  • 有效带宽:
  • 利用率:

一半的时间没在传数据——开销全在地址阶段和首字准备上。这正是突发传送存在的理由:把这 45 ns 的固定开销摊到更多数据拍上(见 6.2.1)。

关联对照:为什么"每拍 1 个时钟"而首字要等 40 ns

首字的 40 ns 是存储器的存取时间;后续每拍只要 5 ns,靠的是 3.2.4 的多体交叉编址。

若是 8 体低位交叉、每体存取周期 40 ns,则同一个体两次被轮到的间隔恰好是 ns——刚好等于存取周期,所以首字之后每个总线时钟都能输出一拍。

不能把每体的 40 ns 对 8 拍逐项相加,那是把交叉编址算成了顺序访问。

边界

带宽的分母是时间,不是周期数。 先把周期数乘以周期长度化成时间,再做除法;混着算必错。

MB 的口径。 总线题通常用十进制( B),存储容量题通常用二进制( B)。题目说 MB/s 就按 ,说 MiB/s 才除 。

峰值带宽不能直接当 Cache 块填充速度。 后者要扣掉地址阶段和首字延迟,用有效带宽。

总线宽度与地址空间无关。 地址空间由地址线根数和编址单位决定(3.3.2)。

“提高总线频率”不总能提高带宽。 共享并行总线上挂的设备越多、线越长,可用频率反而下降(6.1.2 的 skew 与串扰)——这是 PCI 走向 PCIe 的原因。

负载能力是独立的一项指标。 它指总线上能挂多少个设备而信号仍可靠,与带宽无关,但它限制了系统能接多少设备。

对照速查

量公式
总线时钟周期
传输频率( 个时钟一次传送)
传输频率(一个时钟 次,DDR )
峰值带宽
有效带宽
总线利用率
总线周期折合 CPU 周期数
数据拍数 传输量 / 每拍字节

考点

  • 认频率:这一节几乎所有失分点。给 CPU 主频与总线频率两个数,只用后者;给 MT/s 不要再乘 2;给”每 个时钟一次”要除以 。
  • 峰值带宽:位宽 ÷ 8 × 传输频率,一步到位。
  • 有效带宽与利用率:必须画时间轴,把地址、等待、数据阶段分开数。
  • 突发传送的收益:同样的固定开销,数据拍越多利用率越高——常考”传 个字时利用率是多少”。
  • 单位换算:ns 与 MHz 互为倒数关系(),先统一到秒最不容易错。

链接