Robert Cravotta
基准测试能在您分析和比较各个系统时为您节省时间。但是,基准测试的真正价值常常意味着对每个评分的意义“进行逆向工程”并且将那些见解应用到您的实际环境中。
要点
● 基准试图将复杂系统进行抽象和简化以便您能更好地进行苹果对苹果比较。
● 基准必须附带完整的测试详情才有意义。
● 您有责任分析基准测试详情以判断一个给定评分是否与实际情况相关。
● 基准应该只作为整个决策过程的一个数据点,诸如供应商开发支持和平台灵活性等其他定性因素可能比基准测试高评分更重要。
基准是一个您能用以对两个或更多相似选择对象的价值和质量进行一致的测量、量化和比较的参考点,这些选择对象包括商业过程、工具和嵌入式处理器等。对于嵌入式处理器来说,基准通常是一组在候选处理器上运行的一致性软件代码,因此您可以将候选处理器的性能与其他可供选用的处理器进行比较。处理器基准并不局限于测量处理器体系结构效率;它们还能表明编译器相对于人工优化编码的效率。
理想的基准对一个系统的重要性能度量进行提取和合并,形成一个在特定上下文中,能对不同系统选择进行有意义的“苹果对苹果”比较的简化表示 或评分。但是,使用理想的基准如果不能比不太精确的比较工作更多地节省时间、降低成本或者减小风险,那是不切实际的。
对于具有某一清晰目标的系统或任务来说,您常常会找到一个性能度量,用以精确获取系统行为,并在您将该系统与其他选择对象比较时具有良好的相关性。比较两个处理器的时钟速率就是获得相对性能的一个流行的基准度量,但是它的适用环境很窄,只有当这两个处理器除了时钟速率之外大致相同时,这种比较才有用。尽管比较基准测试评分的简单性如何吸引人,但正确解释这些相互关联的评分则需要您了解基准测量的基本细节及其与您应用系统的相关性。对于嵌入式设计来说,您比较的处理器体系结构可能大不相同,因此使用时钟速率作为基准度量也许是不适宜的。
通常,嵌入式设计必须同时平衡并满足许多目标,例如提供正确的功能既要快速、经济实惠,又要具有低功耗、高质量和灵活性。就这几类情况而言,性能是多方面的,因此将系统性能精确地描述为一个简化的评分,用以与其他选择对象进行有意义的比较,可能是困难而又代价高昂的。对多个系统进行比较存在一个难题,就是既要使获得和导出基准测试评分简易而又花钱少,又要使不同系统的相同评分的排名有意义。
谎言和更多谎言
许多处理器供应商都使用基准测试评分作为一种营销工具。但是,有些经常发布的基准测试评分,如MIPS(每秒百万条指令)和DMIPS(Dhrystone MIPIS),在没有特定背景的情况下是毫无意义和不恰当的(参阅附文《基准测试游戏》)。这两类性能评分的继续广泛使用使得处理器基准测试获得了对处理器性能度量不精确的名声。一次网上搜索就会发现对下面关于标准基准测试的陈述的多次引用:“计算机行业有三种谎言:谎言、该死的谎言和基准测试。”
综合基准测试通常试图通过使用人工指令序列或者通过尽量模拟真实环境应用系统中的普通指令混合,来度量某个系统、处理器或编译程序的一个或多个新性能。相反,真实环境应用系统基准测试在考虑处理器特性方面前进了一步,它试图对处理器体系结构和开发工具如何处理特定类型应用系统的预期工作量进行预测和量化。应用系统基准测试可能使用一组或多组真实应用程序代码块来为一个应用系统实现代表性的功能。
公开传播诸如MIPS和DMIPS等标准综合基准测试这种做法凸显出人们需要开发和使用简单而又有意义的度量。这几类基准测试相对比较便宜,也最容易实现,因而没有容易而又低成本实现的无版权替代方案。行业标准基准测试是对竞争性产品进行比较的基础,但是,供应商通常要承担一笔可观的费用以便获得基准测试证据。BDTI(Berkeley设计科技有限公司)、EEMBC(EDN嵌入式微处理器基准联盟)和SPEC(标准性能评估公司)等基准组织通过提供能对目标性能测量进行分类的基准测试套件,致力于各种不同方面的计算。各种基准测试套件构成一致性测试的基础,并支持一个性能评分的粒度范围,使得您能够在一个特定环境中更好地评估处理器特性和系统性能。
行业标准基准测试可以作为决策过程的一个有价值的“输入”,但还不足以成为您设计决策的唯一依据。首先,为您应该考虑的每个处理器平台找到相关而又可比的基准测试结果可能是很难或者是不可能的事。另一个问题是,当您确定找到相关而又可比的基准测试时,基准测试数据可能本来是为您当前正在考虑的一代代处于完全不同时间点的不同处理器导出的,而且它本可以采用的存储器结构与您将要使用的迥然不同。特定的或自定义基准测试是分析过程的一部分,有助于填补行业标准基准测试与您应用需求之间的空白。
有几类基准测试用户退出了。显而易见的基准测试用户是嵌入式系统设计师或者是成为销售组织营销对象的终端用户。但是,据几个基准组织说,终端用户并不是行业标准基准测试结果的主要用户群体。基准测试作为主要决策依据还不充分,因为它们不能精确地反映每个嵌入式系统设计师的应用需求。例如,许多基准测试是内核级的,不考虑与设计师在最终应用中要使用的操作系统的交互作用。
当终端用户使用基准测试结果时,他们同各个处理器厂商的合作常常比同基准组织的合作更为密切,以便获得性能数据和复制测试结果方面的帮助,并了解基准测试配置如何适用于他们的设计要求。终端用户可能使用基准测试作为缩减候选处理器名单的一个“输入”,但是其他项目如一组集成特性、支持的I/O接口、开发工具、培训、文档、第三方开发支持基础设施以及规划风险,都将在排除候选处理器时起重要作用。通常,终端用户基准测试是一个仅适合于立即进行的设计项目的特殊过程。
许多处理批量大而对价格敏感的设计的OEM(原始设备制造商),都根据自己的自定义基准测试来选择处理器。自定义基准测试可以由既有应用代码构成,但也可能包括来自行业标准基准测试的代码。有些OEM成为基准组织的成员,以便获得基准测试源代码,因此,他们能将该源代码的一部分合并到他们的自定义基准测试套件中。这些基准测试套件只能满足范围狭小的目标需求,所以更详细、更全面。行业标准基准努力在相关性、复杂度和成本之间取得平衡,能满足范围较广的应用需求。通常,OEM基准测试工作对竞争很敏感,只供内部使用。
基准测试可以帮助您进行可行性研究并找到一款适合您应用系统的处理器,但它们也能在设计周期内或设计周期后,帮助您验证系统性能、确认改进措施、确定处理器在您实现方法中的提升空间。基准测试能帮助您鉴别性能缺陷,并帮助您将注意力集中在改进性能上。特定的基准测试并不局限于近似典型应用系统的工作负载;它们可能包括吸取教训,即强调系统必须验证性能,这对于安全性很重要的应用系统来说特别有价值。
处理器供应商和提供开发工具支持的厂商是基准的主要用户。他们使用内部基准测试结果或者行业标准基准测试结果来进行体系结构定型和反馈优化。对于体系结构设计师来说,基准测试结果能表明处理器体系结构上的修改是否能使该处理器更加适合于或更加不适合于某种应用系统。基准测试还能证明体系结构上的修改对于满足目标应用系统需求没有什么影响。对于工具设计师来说,基准测试结果能表明编译程序是否充分利用了一款处理器特有的功能特性。当基准测试套件充分获取这几类必要的应用程序功能并运用适当的处理器特性时,这类闭环优化能导致处理器体系结构和开发工具的积极演进。
销售组织使用基准测试结果的方式与前面提到的群体使用方式颇为不同。销售组织把基准测试看作是表明其处理器优于经过相同和相似的基准测试并且生产公司也发布了测试结果的处理器的机会,(参阅附文“公开披露还是秘密披露?”)。依赖于吹嘘某个优秀基准测试得分超过与之竞争的处理器的销售材料可能是危险的。销售材料常常将基准测试得分在图表中作为一个合成数据显示出来,您有责任研究这些被比较的系统的测试配置情况。
现代基准仍然不包含能突出某款处理器在多项内容上与另一处理器对比的综合评分,这些对比内容包括人为的基准测试专用功能单元、器件成本差别、功耗或者可编程性和灵活性等。某些获得最高基准测试分的处理器只是某项功能很好,而其他功能并不令人满意。
使用基准
为了最有效地使用任何基准测试,您首先需要了解您的应用系统的特性,以便能评价基准测试与实际情况的相关性。当使用基准测试来选择平台、供应商和处理器体系结构时,您应该先将重要功能和性能阈值列出并排出其先后次序。要鉴别您的应用系统的工作环境以及它必定能完成的任务和算法。您是使用手工优化的汇编程序还是所有您经过编译的软件?您是否会使用操作系统?您的功率预算有多大?您的程序代码和数据需要多大的存储器?您能否假定所有存储器访问均来自快速存储器?您需要哪些外设和I/O接口?您需要多高性能和I/O冗余能力?
除了考虑性能和功能要求之外,您还应该鉴别同一份列表中的项目和商业需求并排出其先后次序。为避免学习一种新工具或操作系统或者支持既有代码而使用开发工具套件到底有多重要?您需要从处理器供应商的开发支持基础设施中获得多少应用软件专业知识?您是否需要应用软件说明、代码示例或参考设计?您的成本目标是多少?您是否需要在特定测试环境内工作?接受培训有多重要?供应商规划图风险容限有多大?
最有用的基准测试能精确地预测或描述处理器和供应商能在多大程度上支持您的应用系统和项目需求,而所花的成本、时间和工作量最少。如果一个行业标准基准测试与您的应用系统紧密相关,那就使用它,但是务必作出适当的努力,对每项基准测试的细节进行验证。测试装置是否旨在演示计算性能、证明持续的I/O效率或表示低功耗?测试装置的偏差是否与实际情况相关?数据路径和存储器结构对您的应用系统来说现实吗?基准测试能描述处理器性能,但是它们现在还不能获取项目和商业要求。因此,基准测试只应该用作处理器选择分析的一个输入。
务必了解您使用的基准是否恰如其分地反映处理器功能和编译程序效率。编译程序效率与严重依赖于手工汇编语言例程(例如那些高性能信号处理算法内部循环中的例程)的应用系统是不相关的。同样,如果您使用C代码,而且您使用的编译程序没有利用您希望使用的处理器功能,则与处理器功能性能也是不相关的。
当标准基准测试不能足够精确地接近您的应用系统需求时,您仍然可以在处理器供应商或基准测试服务提供商的帮助下,应用特殊的和自定义的基准测试,并从基准测试中获得好处。当您正在使用基准测试数据进行分析时,务必向处理器供应商询问最新的基准测试评分以及产生这些评分的详情。这些数据可能不会公布,但是产生评分的详情对于您了解评分的意义、评分的复制方法以及它们与实际情况的相关性十分重要。您可以决定设法在厂商提供的开发工具(例如在一个评估板)上重复这些结果,或者在某些情况下,您可以将您自己的基准测试代码提供给处理器供应商进行测试并向您汇报。无论如何,供应商应能详述所有测试结果并提供与您的实际情况相关的具体意见。
分析和了解基准测试需要花费时间和资源。但是,设法重复厂商的基准测试能揭示一些有价值的见解。处理器供应商只是在他们认为能够从销售中收回投资时,才可能进行基准测试工作并共享那些测试结果。处理器供应商对您的应用系统了解得越多,他们能提供的基准测试支持就越大。一家供应商的基准测试能突出并让您洞察标准基准测试无法获得的工具和处理器特性,在供应商的帮助下,您可以发现编译程序优化方法和处理器体系结构的细节,而无论是好是坏,这些细节将对您的实现假设构成挑战。厂商应该有能力帮助您将您的代码映射到目标设备上,并提供如何利用特殊性能的例子。有些厂商允许客户的基准测试、复制努力集中在客户不完全理解的关键性特性上,而改进的见解对于客户的分析十分重要。与实施完成之后相比,在选择期间将更有利于做这些发现。
关于节省时间
基准测试的主要目的是为您节省时间和资金,降低总的风险。如果您不在乎时间和金钱,那您可以在多个系统上开发应用系统,然后比较最后结果再做出最终决定。在有些情况下,这种方法可能是适宜的,但是对大多数情况,这是一种不可能的奢侈。基准测试应用得当,应能帮助您预测各个候选系统是否成功,而不会花费实现整个设计的全部费用,但只是在基准测试与您的应用系统工作负载相关时才是这样。
基准组织正在修改他们的基准测试套件,以便更好地反映市场变化并且使厂商博弈稳定基准测试套件的风险降至最小。未来基准测试计划是致力于如何更好地反映今天和未来应用系统的不断变化的工作负载,其中包括如何将功耗因素纳入评分之中。功耗取决于使设计师难以用标准而又有意义的方式获取类似于基准测试的评分的许多系统问题。另一个挑战性领域是由多个系统融合成一个产品或设备这种趋势产生的;它迫使未来的基准测试必须考虑如何获取跨越应用系统界限的工作负载。
如果能抽出时间,您应该投入必要的时间分析关于系统配置的全部情况,并对供应商基准测试评分“进行逆向工程”。您在这个过程中获得的见解可能证明是非常宝贵的。您应能与供应商讨论所有基准测试的细节。测试环境的人为细节可能使评分失去实用性,但可以突出您在其他情况下得不到的某种有用功能。
总之,基准测试能帮助您根据性能选择一种处理器。但是仅仅依靠基准测试是不足以帮助您在两个可比的处理器系统之间作出选择的。与供应商共同进行的基准测试能使您定性地认识到供应商及其开发支持基础设施能在多大程度上满足您的需求。一旦您拥有合适的候选处理器,诸如供应商技术响应、代码移植简易性、需要进行的软件移植总量、文档和培训质量以及处理器发展蓝图符合您未来需求的可能性等因素都将在您的最终抉择中被优先考虑。
摘自《END技术》
|