4. Summarizing Performance, Amdahl’s law and Benchmarks

性能总结、阿姆达尔定律和基准
AP SHANTHI博士

 

本模块的目标是讨论报告和总结绩效的方式方法,查看阿姆达尔定律并讨论绩效评估的各种基准。

 

我们已经在前面的模块中查看了性能方程式。您知道 CPU 执行时间是最一致的性能衡量标准,每个程序的 CPU 执行时间定义为每个程序的指令数乘以每条指令的平均时钟周期数乘以时钟周期时间。通过改善这些因素中的任何一个,通过关注影响这些因素的参数,您都可以提高性能。假设您只有一个处理器,您只需找出该处理器、特定程序的执行时间,甚至可以与另一个执行相同程序的处理器进行比较。但,当这些处理器执行多个程序时会发生什么?你如何总结演出并比较演出?在比较两个处理器 A 和 B 时,您必须小心判断处理器 A 是否比处理器 A 快 10 倍,或者相反。在这里您必须非常小心,因为错误的摘要可能会令人困惑。该模块阐明了与此类查询相关的问题。

 

我们知道总执行时间是性能的一致衡量标准,相同工作负载的相对执行时间也可以提供信息。这里举一个例子来说明总结的重要性,假设你有三个不同的计算机系统,它们运行两个不同的程序,P1 和 P2。假设计算机 A 执行 P1 需要 1 秒,执行 P2 需要 1000 秒。类似地,B 分别需要 10 秒和 100 秒,c 需要 20 秒来执行 P1 和 P2。

 


 

看个人表演,

 

• 对于程序 P1,A 比 B 快 10 倍

• 对于程序 P1,A 比 C 快 20 倍

• 对于程序 P2,B 比 A 快 10 倍

• 对于程序 P1,B 比 C 快 2 倍

• 对于程序 P2,C 比 A 快 50 倍

• 对于程序 P2,C 比 B 快 5 倍

 

你如何总结和说哪台电脑更好?您可以将总执行时间计算为 1001 秒、110 秒和 40 秒,根据这些值,您可以得出以下结论:

 

• 使用总执行时间:

– B 比 A 快 9.1 倍

– C 比 A 快 25 倍

– C 比 B 快 2.75 倍

 

如果你想用一个数字来总结性能,你可以取执行时间的平均值,然后尝试得出一个可以总结性能的值。平均执行时间是所有时间的总和除以程序总数。对于给定的例子,我们有

 

平均(A)= 500.5

平均 (B) = 55

平均(C)= 20

 

同样,如果您试图基于此做出判断,您就会遇到问题,因为您知道 P1 和 P2 的运行次数不同。所以这可能会误导你的总结。因此,您可以为每个程序分配权重。加权算术平均值在跟踪执行时间的同时总结性能。权重可以针对不同的运行时间进行调整,平衡每个程序的贡献。

 

在我们更深入地总结绩效之前必须提到的另一个问题是选择用于评估的程序类型的问题。每个人都可以选择自己的程序并报告表现。而这显然是不正确的。因此,我们通常会查看一组程序,一个评估性能的基准套件。在本模块的后面,我们将详细讨论基准测试。最受欢迎的基准之一是 SPEC(标准性能评估公司)基准。因此,处理器的评估是针对此完成的。

 

即使使用基准套件,并考虑加权算术平均值,问题仍然是如何选择权重;由于 SPEC 是一个由竞争公司组成的联盟,每个公司可能有自己喜欢的一组权重,这将很难达成共识。一种方法是使用权重使所有 程序在某个参考计算机上执行相同的时间,但这会使结果偏向于参考计算机的性能特征。

 

我们可以通过将参考计算机上的时间除以被评定的计算机上的时间来将执行时间标准化为参考计算机,而不是选择权重,从而产生与性能成正比的比率。SPEC 使用这种方法,将该比率称为 SPECRatio。例如,假设计算机 A 在基准测试中的 SPECRatio 比计算机 B 高 1.25 倍;那么你就会知道,

 


还可以观察到参考计算机上的执行时间会丢失,当比较作为比率进行时,参考计算机的选择是无关紧要的。因为 SPECRatio 是一个比率而不是绝对执行时间,所以必须使用几何平均值来计算平均值。(因为 SPECRatios 没有单位,所以在算术上比较 SPECRatios 是没有意义的。)公式是

 


 

使用几何平均值可确保两个重要属性:

1. 比率的几何平均数与几何平均数的比率相同。

 

2. 几何平均值的比率等于性能比率的几何平均值,这意味着参考计算机的选择无关紧要。

 

因此,使用几何平均数的动机是巨大的,尤其是当我们使用性能比进行比较时。

 

既然我们已经了解了如何定义、测量和总结性能,我们将探索一些在计算机设计和分析中有用的指导方针和原则。本节介绍有关设计的重要观察结果,以及评估备选方案的重要方程式。最重要的观察是:

 

1. 利用并行性:我们已经讨论了应用程序中存在的不同类型的并行性以及架构设计师应该如何利用它们。举几个例子——有多个处理器,有多个执行线程,有多个执行单元来利用数据级并行性,通过流水线利用 ILP。

 

2.局部性原则:这来自于程序的特性。一个广泛持有的经验法则是,程序 90% 的执行时间只花在 10% 的代码上。这意味着我们可以根据程序最近的访问,以合理的准确度预测程序在不久的将来将使用哪些指令和数据。已经观察到两种不同类型的位置。时间 局部性表明最近访问的项目很可能在不久的将来被访问。空间局部性表示地址相近的项目往往在时间上被接近地引用。

 

3. 关注常见案例:这是计算机体系结构最重要的原则之一。在各种备选方案中进行设计选择时,始终选择最常见的情况。关注常见案例既适用于电源,也适用于资源分配和性能。例如,在执行两个数字的加法时,可能会出现溢出,但显然不会那么频繁。优化加法运算不溢出。发生溢出时,可能会减慢处理器的速度,但这种情况很少发生,您可以负担得起。

 

在应用关注常见情况的简单原则时,我们必须确定什么是常见情况以及通过加快该情况可以提高多少性能。一个叫做Amdahl 定律的基本定律可以用来量化这个原则。 IBM 第一个大型机系列的首席架构师、Amdahl Corporation 和其他公司的创始人 Gene Amdahl 发现,对于一个可以加速到什么程度,有一些相当严格的限制。获得给定的增强。这些观察结果包含在阿姆达尔定律中. 它基本上表明,给定改进可能带来的性能增强受到改进特征的使用量的限制。例如,您有一个浮点单元并且您尝试多次加速该浮点单元,例如 10 倍加速,但是所有这些只有在浮点单元将被非常频繁地使用时才有意义。如果你的程序根本没有浮点指令,那么提高浮点单元的速度就没有意义了。

 

通过改进计算机的某些部分所获得的性能增益是通过以下方式计算的:

 


 

阿姆达尔定律为我们提供了一种从某些增强中快速找到加速比的方法,这取决于两个因素:

 

1. 原始计算机中可转换为利用增强的计算时间的分数——例如,如果总共需要 60 秒的程序执行时间中的 30 秒可以使用增强,则该分数为30/60。这个值,我们称之为 Fractionenhanced,总是小于或等于 1。

 

2  、增强执行模式的改进;也就是说,如果整个程序使用增强模式,任务运行的速度会快多少——这个值是原始模式相对于增强模式时间的时间。如果增强模式需要 3 秒来处理程序的一部分,而在原始模式中是 6 秒,则改进为 6/3。我们称这个值总是大于 1,加速。

 


 

也就是说,假设您定义了一个增强,将执行时间的一小部分 F 加速了一个因子 S,而其余时间不受影响,那么您可以说,增强的执行时间等于 1 减去 F,其中 F 是增强处于活动状态的执行时间的一部分,加上 F 乘以 S,再乘以没有增强的执行时间。加速将是没有增强的执行时间除以有增强的执行时间。这是如上所示。

 

Amdahl 定律可以作为指导,说明增强能在多大程度上提高性能以及如何分配资源以提高成本 - 性能。显然,目标是花费与所花费的时间成正比的资源。阿姆达尔定律对于比较两个备选方案的整体系统性能特别有用,但它也可用于比较两个处理器设计备选方案。

 

考虑以下示例来说明阿姆达尔定律。

对于具有以下指令组合的 RISC 机器:

 


消费价格指数 = 2.2

 

如果 CPU 设计增强将加载指令的 CPI 从 5 提高到 2,那么这种增强带来的性能改进是什么?

 

分数增强 = F = 45% 或 .45

 

未受影响的分数 = 1- F = 100% – 45% = 55% 或 .55

 

增强因子 = S = 5/2 = 2.5

 

使用阿姆达尔定律:

 


您也可以使用 CPU 性能方程式进行计算。

 

旧 CPI = 2.2

新 CPI = .5 x 1 + .2 x 2 + .1 x 3 + .2 x 2 = 1.6

加速 = 2.2 / 1.6 = 1.37

 

这与从阿姆达尔定律获得的加速相同。

 

即使有多个增强功能,也可以扩展相同的概念。假设提出了三个 CPU 性能增强,其加速和代码执行时间的百分比受到影响:

 


虽然新设计中的所有三个增强功能都已就位,但每个增强功能都会影响代码的不同部分,并且一次只能使用一个增强功能。由此产生的整体加速是多少?

 


请注意:

 

• 任何系统的性能都受到最慢点的速度或容量的限制。

提高程序性能的努力的影响主要受程序在程序中未针对该工作的部分所花费的时间量的限制
 

我们在本模块中讨论的最后一个概念是关于基准的。为了评估计算机系统的性能,我们需要一套标准的程序。个人不能使用他们自己的程序来支持他们的设计改进和报告改进。因此,基准测试是一组程序,它们构成了专门用来衡量性能的“工作负载”。创建标准化基准测试应用程序套件的最成功尝试之一是 SPEC(标准性能评估公司),它起源于 1980 年代后期为工作站提供更好基准的努力。SPEC 是一家非营利性公司,旨在建立、维护和认可一套可应用于最新一代高性能计算机的标准化相关基准。SPEC 开发基准测试套件,并审查和发布成员组织和其他基准测试许可证持有者提交的结果。正如计算机行业随着时间的推移而发展一样,需要不同的基准测试套件,现在有 SPEC 基准测试来涵盖不同的应用程序类别。所有 SPEC 基准测试套件及其报告的结果都可以在www.spec.org 。SPEC CPU 套件对于台式机系统和单处理器服务器的处理器基准测试非常有用。SPEC 创建了从 SPEC89 开始的标准基准测试集。最新的是 SPEC CPU2006,它由 12 个整数基准测试 (CINT2006) 和 17 个浮点基准测试 (CFP2006) 组成。

 

报告性能测量的指导原则应该是可重复性——列出其他实验者复制结果所需的一切。SPEC 基准报告需要对计算机和编译器标志的详细描述,以及基线和优化结果的发布。除了硬件、软件和基线调整参数说明之外,SPEC 报告还包含实际性能时间,以表格形式和图表形式显示。

 

还有针对电源工作负载(SPECpower_ssj2008)、邮件工作负载(SPECmail2008)、多媒体工作负载(mediabench)、虚拟化等的基准集合。 以下程序或基准用于评估性能:

 

– 实际目标工作负载:在目标机器上运行的完整应用程序。

– 真正完整的基于程序的基准测试:

 

• 选择具有典型目标应用程序或工作负载的特定组合或程序套件(例如,SPEC95、SPEC CPU2000)。

– 小型“内核”基准:

• 从真实程序中提取的关键计算密集型部分。

– 示例:矩阵分解、FFT、树搜索等。

• 最适合用于测试机器的特定方面。

– 微基准:

    • 专门编写的小型程序,用于隔离性能特征的特定方面:处理:整数、浮点、本地内存、输入/输出等。

 

这些中的每一个都有其优点和缺点。因此,总是选择一套程序,以便一个程序的缺点被另一个程序的优点所抵消。

 

我们是否有其他评估性能的方法,而不是执行时间?我们可以将 MIPS(每秒百万条指令)视为性能指标吗?

 

对于在特定 CPU 上运行的特定程序,MIPS 等级是衡量每秒执行多少百万条指令的指标:

 

MIPS 评级 = 指令数 /(执行时间 x 106)

= 指令计数 /(CPU 时钟 x 周期时间 x 106)

=(指令数 x 时钟频率)/(指令数 x CPI x 106)

= 时钟频率 / (CPI x 106)

 

然而,MIPS 存在三个问题:

 

– MIPS 不考虑指令能力

– MIPS 可能因同一台计算机上的程序而异

– MIPS 可能与性能成反比

 

那么,在什么情况下可以使用MIPS等级来比较不同CPU的性能呢?

 

• MIPS 评级仅适用于比较不同 CPU 的性能,前提是满足以下条件:

 

1.使用相同的程序

(实际上这适用于所有性能指标)

2.使用相同的ISA

3. 使用相同的编译器

(因此用于在 CPU 上运行并获得 MIPS 评级的结果程序在机器代码级别是相同的,包括相同的指令数)

 

因此,MIPS 不是性能的一致衡量标准,而 CPU 执行时间是唯一一致的性能衡量标准。

 

最后,我们也应该明白,只为性能而设计而不考虑成本和功耗是不现实的

 

– 对于超级计算性能是首要和主导的目标

 

– 低端个人和嵌入式计算机对成本和功耗非常敏感

 

计算机设计的艺术不在于在性能方程式中插入数字,而在于准确确定设计备选方案将如何影响性能以及成本和功率要求。

 

总而言之,我们已经研究了总结性能的方法和方法,指出了设计计算机系统时要考虑的各种因素,研究了阿姆达尔定律,量化性能的例子,需要和不同类型的基准,最后用于绩效评估的所有其他指标。

 

网页链接/支持材料

 

计算机体系结构 – 定量方法,John L. Hennessy 和 David A.Patterson,第 5 版,Morgan Kaufmann,Elsevier,2011。
计算机组织与设计——硬件/软件接口,David A. Patterson 和 John L. Hennessy,第 4 版,Morgan Kaufmann,Elsevier,2009 年。
http://en.wikipedia.org/wiki/