第5章 · 播客 第1集
系统性能评价 · 性能指标与计算公式
🎙️ 本集播客:第1集:从主频、高速缓存讲到 MIPS 与 MFLOPS 的分工、MIPS 与理论浮点峰值两个公式、米勒的 0.1 秒/1 秒/10 秒三条响应时间建议、RASIS 五个字母逐一拆解,再把阿姆达尔定律的两个因素和吉普森法的五组百分比背下来,中间夹一道 14.7 纳秒的平均访存时间演算。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
雅
小雅
先给你一个场景:老板拍桌子,说这次采购要买最快的服务器。你拿什么证明哪台最快,比主频?第 5 章开篇第一句就把这个想法否掉了——系统性能是一个系统提供给用户的众多性能指标的混合体,它既包括硬件性能,也包括软件性能。这一集我们把这些指标和公式一个个钉死,因为本章 12 道练习题里有 7 道就出自这一块。
明
阿明
七道?那这一集我不能走神。
雅
小雅
而且全是背下来就能拿分的题。先看第一个指标:时钟频率,也就是主频。主频是计算机的主要性能指标之一,在很大程度上决定了计算机的运算速度。原理是这样的:CPU 的工作节拍是由主时钟来控制的,主时钟不断产生固定频率的时钟脉冲,这个主时钟的频率即是 CPU 的主频。主频越高,意味着 CPU 的工作节拍就越快,运算速度也就越快。
明
阿明
那为什么现在大家不太单提主频了?
雅
小雅
教材自己给了解释:从 2000 年 IBM 发布第一款双核处理器开始,多核心已经成为 CPU 发展的一个重要方向,原来单以时钟频率来计算性能指标的方式已经不合适了,还得看单个 CPU 中的内核数。这句「还得看内核数」就是标准答案,题目问「为什么主频不能单独衡量性能」,就答它。
雅
小雅
第二个指标是高速缓存。高速缓存可以提高 CPU 的运行效率,目前一般采用两级高速缓存技术,有些使用三层。它由静态 RAM 组成,结构较复杂,在 CPU 管芯面积不能太大的情况下,L1 级高速缓存的容量不可能做得太大;L2 及 L3 高速缓存容量也会影响 CPU 的性能,原则是越大越好。
明
阿明
回写和写通那两个词我总记混。
雅
小雅
记一句原文就够:采用回写结构的高速缓存,它对读和写操作均有可提供缓存;而采用写通结构的高速缓存,仅对读操作有效。所以回写是读写都缓存,写通只对读有效。选项里要是写成「写通对读写都有效」,直接排掉。
明
阿明
说到 Cache,本章练习题里有一道平均访存时间的计算题,就是 14.7 纳秒那道。
雅
小雅
来,条件我念一遍:某计算机主存的读写时间为 100ns,Cache 的读写时间为 10ns,取指令的命中率为 98%,取数的命中率为 95%,执行程序时约有五分之一的指令需要存取一个操作数,问设置 Cache 后每条指令的平均访存时间。
雅
小雅
分两部分算。第一部分是取指令,每条指令都要取指,所以这一项不打折:未命中的 2% 走主存,2% 乘 100ns 等于 2ns;命中的 98% 走 Cache,98% 乘 10ns 等于 9.8ns;这一部分合计 11.8ns。
雅
小雅
第二部分是取操作数,只有五分之一的指令需要,所以整个括号要乘 0.2。括号里同理:未命中 5% 乘 100ns 等于 5ns,命中 95% 乘 10ns 等于 9.5ns,合计 14.5ns;再乘 0.2 等于 2.9ns。最后两部分相加,11.8 加 2.9 等于 14.7ns。答案就是 14.7 纳秒。
明
阿明
坑就在那个五分之一?
雅
小雅
两个坑。一是只给取操作数那一项乘五分之一,取指令那项是每条指令都要的、绝不能乘;二是别把命中率和未命中率乘错对象——主存的 100ns 配的是未命中率,Cache 的 10ns 配的是命中率。乘反了会算出九十多纳秒,一眼就该知道自己错了。
明
阿明
记住了。下一个指标是什么?
雅
小雅
运算速度,本章第一大考点。原文说:运算速度是计算机工作能力和生产效率的主要表征,它取决于给定时间内 CPU 所能处理的数据量和 CPU 的主频。单位一般用 MIPS,百万条指令每秒;和 MFLOPS,百万次浮点运算每秒。关键的一句来了——MIPS 用于描述计算机的定点运算能力,MFLOPS 则用来表示计算机的浮点运算能力。
明
阿明
那我先自己答一遍:MIPS 描述的是定点运算能力。
雅
小雅
对,但这道题的干扰项设计得很阴。选项通常是四个:定点运算能力、浮点运算能力、逻辑运算能力、整数运算能力。浮点是 MFLOPS 的活儿,先排掉;逻辑运算能力原文根本没和 MIPS 挂钩过,也排掉。最后剩下「定点」和「整数」——这两个看起来是一回事,很多人在这儿翻车。
明
阿明
定点数不就是整数吗?为什么不能选整数运算能力?
雅
小雅
因为考试考的是教材原文用的那个词。原文写的是「MIPS 用于描述计算机的定点运算能力」,没写「整数运算能力」,所以标准答案就是定点运算能力。这类题的判卷逻辑是文本比对,不是概念辨析。你记「MIPS 配定点、MFLOPS 配浮点」这个对子,看到「整数」这个词就当它是障眼法。
明
阿明
行,选原文的词。那 MIPS 到底怎么算?
雅
小雅
公式里有三个符号,先把定义交代清楚:Fz 为处理机的工作主频;CPI 是 Cycles Per Instruction,为每条指令所需的平均时钟周期数;IPC 为每个时钟周期平均执行的指令条数。所以 MIPS 等于 IPC 乘以 Fz——每个周期能执行几条指令,再乘上每秒有多少个周期,就是每秒执行多少条指令。
明
阿明
那 CPI 和 IPC 是什么关系?
雅
小雅
互为倒数。IPC 等于 1 除以 CPI。所以同一台机器给你哪个参数都能算:给 IPC 就直接乘主频,给 CPI 就用主频除以 CPI。原文的例子正好把两种写法都摆出来了——要计算 Pentium 4 / 2.4E 处理机的运算速度,该处理机的 IPC 等于 2,或者说 CPI 等于 0.5,Fz 等于 2400MHz。
明
阿明
那就是 2 乘 2400。
雅
小雅
等于 4800,所以这台机器是 4800 MIPS。用 CPI 那条路算也一样:2400 除以 0.5 等于 4800。选择题给的四个式子一般是:Fz 乘 CPI、Fz 除以 CPI、IPC 乘 Fz、Fz 乘 CPI 再乘 IPC。正确答案是 IPC 乘 Fz。
明
阿明
可「Fz 除以 CPI」按你刚才的推导不也对吗?两个都能算出 4800。
雅
小雅
问得好,这是这道题唯一需要动脑子的地方。数学上「Fz 除以 CPI」确实等价,但考试给的标准式子是 IPC 乘 Fz,因为原文写的就是这个形式。所以四个选项里同时出现这两个时,选 IPC 乘 Fz;而「Fz 乘 CPI」是纯粹的错项——主频乘上每条指令要几个周期,量纲都不对,得出来的是周期数不是指令数。
明
阿明
量纲这个说法好使。那浮点那边的峰值公式呢?
雅
小雅
先分清两个概念。衡量计算机性能的一个重要指标就是计算峰值或者浮点计算峰值,它是指计算机每秒钟能完成的浮点计算最大次数,包括理论浮点峰值和实测浮点峰值。理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由 CPU 的主频决定。
雅
小雅
公式是三项相乘,念成话就是:理论浮点峰值,等于 CPU 主频,乘以 CPU 每个时钟周期执行浮点运算的次数,再乘以系统中 CPU 数。三个因子一个都不能少,尤其最后那个「系统中 CPU 数」——选项里最爱干的事就是把它砍掉,只留「主频乘以每周期浮点运算次数」。
明
阿明
那「每个时钟周期执行浮点运算的次数」这个数是怎么定的?总不能凭空给。
雅
小雅
教材专门有个专家提示:CPU 每个时钟周期执行浮点运算的次数,是由处理器中浮点运算单元的个数,及每个浮点运算单元在每个时钟周期能处理几条浮点运算来决定的。所以它本身也是个乘积——几个浮点单元,每个单元每周期几条。这句话被单独出成过题,问「每周期浮点运算次数由什么决定」,答浮点运算单元的个数和每个单元每周期能处理的条数。
明
阿明
MIPS 和浮点峰值都拿下了。还有个我一直没搞懂的公式,PDR。
雅
小雅
数据处理速率,PDR,公式是 PDR 等于 L 除以 R。分子 L 等于 0.85 乘 G,加 0.15 乘 H,加 0.4 乘 J,加 0.15 乘 K;分母 R 等于 0.85 乘 M,加 0.09 乘 N,加 0.06 乘 P。字母含义:G 是每条定点指令的位数,H 是每条浮点指令的位数,J 是定点操作数的位数,K 是浮点操作数的位数;M 是平均定点加法时间,N 是平均浮点加法时间,P 是平均浮点乘法时间。
明
阿明
这一堆系数真要背?
雅
小雅
考的不是系数,考的是这句结论:PDR 主要用来度量 CPU 和主存储器的速度,它没有涉及高速缓存和多功能等,因此 PDR 不能度量机器的整体速度。你记住「PDR 只管 CPU 和主存、不含 Cache、所以不能度量整体速度」就够了。顺带记住它的附加规定:G 大于 20 位,H 大于 30 位。
雅
小雅
接着往下,响应时间。定义是:某一事件从发生到结束的这段时间,其含义将根据应用的不同而变化;响应时间既可以是原子的,也可以是由几个响应时间复合而成的。然后是本章的高频考点——早在 1968 年,米勒先生就已给出 3 个经典的有关响应时间的建议。