面向DSSoC的Benchmark的需求

简介: 本文从Benchmark的定义出发,依次介绍了常用的Benchmark的情况,包括Dhrystone、Coremark,以及个人PC,个人终端等等Benchmark,然后,进一步分析DSSoC系统对于Benchmark的需求,提出了“面向DSSoC的Benchmark的需求”,最后,对未来的Benchmark做了一些展望。

Benchmark的定义

Benchmark(computing)的维基百科简介如下所示。

In computing, a benchmark is the act of running a computer program, a set of programs, or other operations, in order to assess the relative performance of an object, normally by running a number of standard tests and trials against it. The term benchmark is also commonly utilized for the purposes of elaborately designed benchmarking programs themselves.
在计算机技术中,基准测试(Benchmark)是运行一个计算机程序,或一组程序,以及其他操作的行为,目的是评估一个对象的相对性能,通常通过对该对象运行一系列标准测试和试验。术语基准也通常用于精心设计的基准程序本身。

Benchmark在商业词典(BusinessDictionary)的解释如下所示。

Standard, or a set of standards, used as a point of reference for evaluating performance or level of quality. Benchmarks may be drawn from a firm's own experience, from the experience of other firms in the industry, or from legal requirements such as environmental regulations.

标准,或一组标准,作为评价性能或质量水平的参考点。基准可以从公司自身的经验、行业内其他公司的经验或环境法规等法律要求中确定。

这里提到的一点,可以参考一下,即“基准可以从公司自身的经验、行业内其他公司的经验或环境法规等法律要求中确认”。

如果仅仅将Benchmark作为基准测试,不足以体现Benchmark的重要性,如果转换一下思路,将Benchmark作为工作目标的一部分,则会让我们的工作目标更清晰,例如不同版本的设计,第二版是否比第一版有进步?有多少进步?就可以有一个相对量化的标准。Benchmark的作用,可以类别“摩尔定律”在半导体产业中的指导性作用。

目前常用的Benchmark 简介

通用处理器CPU的Benchmark

Dhrystone

Dhrystone 的目标和性能单位

Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于测量处理器整型运算的性能。

Dhrystone可能比MIPS(每秒百万指令)更有意义,因为不同指令集之间的指令计数比较(例如RISC和CISC)会混淆简单的比较。例如,相同的高级任务可能需要RISC机器上更多的指令,但是执行速度可能比一条CISC指令更快。因此,Dhrystone的得分只计算每秒程序迭代完成的次数,允许机器以其特定的方式运行。

另一种基于Dhrystone Benchmark的性能单位是DMIPS(Dhrystone MIPS)。为定义该性能单位,业界选择VAX 11/780作为一台基准机型,在该机型上,一秒钟可以执行1757次Dhrystone程序,而该机型上的1757次Dhrystone程序约为一百万条指令。DMIPS即基于Dhrystone程序,1秒钟内,能执行多少“一百万条指令(1757次Dhrystone)”。因此,DMIPS的计算公式如下所示。

DMIPS = 每秒钟Dhrystone迭代完成的次数/1757

Dhrystone 的缺陷

Dhrystone缺陷包括以下几点:

1.它的代码与具有代表性的实际程序代码并不相同;
2.Dhrystone容易受到编译器优化的影响,厂商可以对Dhrystone做针对性的优化,影响其可信度;
3.Dhrystone代码量过小,在现代CPU中,它能够被放进指令缓存中,所以它并不能严格的测量取指性能。

由于以上缺点,Dhrystone饱受争议。但是,由于Dhrystone在Coremark出现前,一直是唯一公开、一致地提供所有CPU性能的标准,所以依然在被广泛的应用。

获取Dhrystone 的版本

Github上,可以下载Dhrystone各个版本的源码,链接如下所示。

https://github.com/Keith-S-Thompson/dhrystone

image.png

Coremark

EEMBC

EEMBC(Embedded Microprocessor Benchmark Consortium,嵌入式微处理器基准评测协会) 是一个致力于帮助设计人员快速有效地选择处理器的非盈利组织,由会员和授权费资助。EEMBC为自动驾驶、移动成像、物联网、移动设备和许多其他应用程序中使用的硬件和软件开发性能基准。EEMBC社区包括世界各地高校的成员公司、商业许可机构和学术许可机构。

EEMBC基准套件由其成员组成的工作组开发,目前的基准套件的主要分类如下:

  1. Ultra-Low Power and Internet of Things,超低功耗和IoT
  2. Heterogeneous Compute,异构计算
  3. Single-core Processor Performance,单核处理器性能
  4. Multi-core Processor Performance,多核处理器性能
  5. Phone and Tablet,移动电话和平板电脑

EEMBC的愿景是,如果参与者能够通过协商一致的过程就绩效评估的标准标准达成一致,那么每个人都会受益。自1997年EEMBC成立以来的20多年里,EEMBC积累了一个基准测试分数数据库,EEMBC社区的每个人都可以使用该数据库进行产品开发、研发,或者将其作为与自己的基准测试结果进行比较的基准。发布的分数,如果可用,可以从这里列出的每个主要基准页面访问。这个公共基线通过提高透明度和使原始设备制造商更容易地与处理器供应商进行沟通来为每个人服务,反之亦然。 EEMBC的官网链接如下所示。

https://www.eembc.org/

EEMBC由各种各样的贡献者组成。董事会成员、小组委员会成员和工具供应商构成了组织的主体。此外,EEMBC还拥有来自学术界、企业界和研究公司的顾问,他们通过提供来自其特定专业领域的反馈或技术建议做出贡献。平头哥半导体旗下中天微系统有限公司就是EEMBC的董事会成员(Board Member)之一。

image.png

Coremark 的简介

EEMBC的CoreMark®是用于测量嵌入式系统中使用的微控制器(mcu)和中央处理器(cpu)性能的Benchmark。Coremark取代了过时的Dhrystone基准测试,包含以下算法的实现:列表处理(查找和排序)、矩阵操作(常见矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC(循环冗余检查)。它被设计在从8位微控制器到64位微处理器的设备上运行。

CRC算法具有对偶功能;它提供了嵌入式应用程序中常见的工作负载,并确保CoreMark基准的正确操作,本质上提供了一种自我检查机制。具体来说,为了验证正确的操作,对链表元素中包含的数据执行16位CRC。

为了确保编译器不能在编译时预先计算结果,基准测试中的每个操作都派生一个在编译时不可用的值。此外,在基准测试的定时部分中使用的所有代码都是基准测试本身的一部分(没有库调用)。

Coremark 改进了哪些Dhrystone的缺陷

与 Dhrystone类似,CoreMark小巧、便携、易于理解、免费,并显示一个数字基准分数。与Dhrystone不同的是,CoreMark有特定的运行和报告规则,旨在避免Dhrystone的问题方面。例如,Dhrystone的主要部分实际上暴露了编译器优化工作负载的能力,而不是MCU或CPU的能力。因此,Dhrystone作为编译器基准测试比作为硬件基准测试更能说明问题。同样,库调用是在Dhrystone的定时部分内进行的。通常,这些库调用消耗基准测试所消耗的大部分时间。由于库代码不是基准测试的一部分,所以如果使用不同的库,就很难比较结果。最后,关于如何运行Dhrystone的指导原则是存在的,但是由于结果没有经过认证或验证,所以没有强制执行。使用各种格式(DMIPS、Dhrystones每秒、DMIPS/MHz)报告Dhrystone结果的方式没有标准化。

获取Coremark 的版本

Coremark包括两个版本,一个是面向单核处理器性能的Benchmark,即CoreMark;另一个是面向多核处理器性能的Benchmark,即CoreMark-Pro。两个Benchmark都可以在EEMBC的官网下载,而且这两个Benchmark除了分别遵循COREMARK® ACCEPTABLE USE AGREEMENT、COREMARK®-PRO ACCEPTABLE USE AGREEMENT外,还都遵循Apache License(Version 2.0,2004年1月),一个对商业应用友好的许可。

https://github.com/eembc/coremark

https://github.com/eembc/coremark-pro

个人PC的Benchmark

个人PC的Benchmark已经比较成熟,例如国内常见的360、鲁大师等等,都有比较完整的Benchmark。

PC的Benchmark,一般包括CPU的Benchmark,GPU的Benchmark,以及存储系统(如内存、硬盘等)的Benchmark。

其中, GPU的Benchmark较为独特。因为关注GPU性能的主要是游戏玩家,因此GPU的Benchmark会在不同的游戏场景(如《绝地求生》、《杀出重围:人类分裂》等)下测试系统的一些指标,例如GPU内核占用、温度、频率,VRAM(视频存储)占用,CPU占用、温度、频率,RAM占用,每秒的帧数等信息。

其中,每秒帧数是最为贴近游戏体验的一个指标。

image.png

个人移动终端的Benchmark

个人移动终端的Benchmark,以国内比较熟悉的安兔兔(ANTUTU)为例,也是做了比较全面的Benchmark,包括GPU、GPU、MEM、UX几个方面。除了传统的几个内容外,这里的UX比较特别。UX部分主要考验的就是硬件对于使用场景的优化,具体见图中列表。

image.png

面向DSSoC的Benchmark的需求

目标应用和目标客户

在一份讲解《计算机量化体现结构》的课件中,提到了这样一句话。

Computers are always designed with some target applications and target customers in mind 计算机的设计一直会考虑到一些目标应用程序和目标客户

这里的“目标应用”和“目标客户”是我们需要关注的两个维度。

测量基准的维度

从安兔兔的例子就可以看出,测量基准的维度已经变得多元化。

其中,既包括常用的基于嵌入式体系结构的维度,会测试CPU、GPU、MEM的性能,这些测试使用相对公认的Benchmark,检测这些仅仅从体系结构维度来定义的指标。

但是,安兔兔还会根据不同业务场景做专门的测试,例如之前提到的UX测试。除此之外,安兔兔还做了面向AI的图像分类、公路场景下的模式识别的手机测试。

image.png
image.png
image.png

DSSoC的定义

(DSSoC,Domain-Specific System on Chip 特定领域的片上系统)在DARPA(Defense Advanced Research Projects Agency,美国国防部高级研究计划局)网站上的介绍如下所示。

在过去的50年里,通用计算机一直是主流的计算架构,这在很大程度上是由摩尔定律(Moore’s Law)的无情步伐推动的。然而,随着这一趋势显示出放缓的迹象,从通用硬件获得性能收益变得越来越具有挑战性,这为专业架构的复兴奠定了基础。目前,专用集成电路(ASIC)——为特定应用程序定制的硬件——仅能提供有限的灵活性,并且设计、制造和编程的成本很高。

领域特定的片上系统(DSSoC)程序试图证明,在asic中发现的效率和通用处理器的标志灵活性之间,不需要持续的权衡。DSSoC的目标是开发一个由多个核心组成的异构片上系统(SoC),这些核心混合了通用处理器、专用处理器、硬件加速器、内存和输入/输出(I/O)设备,以显著提高某个领域内应用程序的性能。一个领域比任何一个应用程序都要大,其中一个处理器可以比通用处理器更有效地解决问题,但不需要挑战、时间和成本来构建像ASIC这样的专用系统。DSSoC正在探索通过特殊处理提高计算效率的体系结构,同时保持可编程性。

为了更好地支持国防部(DoD)维持其技术优势所需要的大范围和不断增长的应用,DSSoC计划将寻求为嵌入式处理需求提供更高计算效率的概念,同时使这些系统更具可编程性。为此,DSSoC将解决当今开发周期中的关键问题,这些问题迫使底层工程将应用程序移植到底层处理器的具体细节上。具体来说,DSSoC计划将寻求开发软件栈,通过提供从硬件到开发环境的垂直集成工具,从而实现更好的软硬件协同设计。DSSoC的第二个关键影响将是在异构处理器上开发应用程序和数据的智能调度,以便更好地利用这些系统的异构性和并行性,而如今,为复杂系统编写应用程序是一项耗时的手工调优工作。

面向DSSoC的Benchmark的离散化倾向

由于DSSoC面向许多特定领域,基于上节的分析,想让通用的系统架构满足所有特定领域的需求是不现实的。系统架构设计有时候是权衡的过程,包括但不限于:性能和功耗的权衡,性能和成本的权衡,功能的丰富性和硬件资源(如IP的种类、存储空间大小等)之间的权衡等等。在某个领域表现优秀的系统架构,可能完全不满足另一个领域的要求,所谓“汝之蜜糖,彼之砒霜”。

为了判断系统的架构是否满足某个特定领域,基于特定领域的Benchmark不断迭代优化是一种解决问题的方法。

通用Benchmark的七个关键属性

在维基百科中,提出了Benchmark有七个重要特征。这些关键属性是: 1.相关性:Benchmark应该度量相对重要的特性(基于二八定律); 2.代表性:Benchmark选出性能指标应该被业界和学术界广泛接受; 3.公平性:所有系统都应该进行公平比较; 4.重复性: Benchmark结果是可以被重复验证的; 5.成本效益:Benchmark是经济的(投入可接受); 6.可伸缩性:Benchmark范围应该具有伸缩性(例如从单个核到多个异构核); 7.透明度:Benchmark应该易于理解(可读性)。

面向DSSoC的Benchmark面临的挑战

基准测试并不容易,通常需要几个迭代周期才能得出可预测的、有用的结论。基准数据的解释也异常困难。以下是一些常见的挑战:

  1. Benchmark获得的结果与实际工作场景的可能不一致,针对Benchmark的“调优”可能无法在实际工作场景获得类似的收益;
  2. 某些Benchmark的设计仅仅针对系统的某个维度,例如性能,但是却忽略了很多其它重要特性,包括但不限于:功耗、安全性、可靠性等等;
  3. 供应商基准测试往往忽略对开发、测试和灾难恢复能力的需求。供应商只喜欢报告生产能力的狭义需求,以便使他们的初始收购价格尽可能低;
  4. 目前较成熟的Benchmark一般为单机形式,面向网络拓扑结构的Benchmark,尤其涉及到分布式计算的结构时,还不是很成熟;
  5. 标杆机构往往忽视或不遵循基本的科学方法。这包括但不限于:样本量小,缺乏变量控制,结果重复性有限等等。

面向DSSoC的Benchmark的需求

综合“通用Benchmark的七个关键属性”、“面向DSSoC的Benchmark面临的挑战”两节,考虑DSSoC系统的独特性,可以提出面向DSSoC的Benchmark需求:

1.独特性:DSSoC相关领域的Benchmark应是专门针对该领域的Benchmark; 2.有效性:Benchmark能够体现实际工作环境的情况,对Benchmark的“调优”可以在实际工作环境获得类似的收益; 3.一致性:Benchmark得到的结果可以体现在实际场景下的结果,因此Benchmark需要考虑到类似实际工作时的多个核或网络节点共同工作,在总线或其它资源出现抢占,导致仲裁的压力场景; 4.公平性: 相同领域的不同DSSoC系统,基于相同的Benchmark获得的结果应能够作为多个系统比较的基准; 5.丰富性:Benchmark要考虑影响该DSSoC系统的多个维度,包括但不限于功耗、安全性、可靠性、可扩展性等等(容灾恢复可理解为可靠性的一部分); 6.接受度:相关专业领域的业界和学术界能够基本认可该Benchmark的度量方法; 7.经济性:投入Benchmark的工作量是可接受的; 8.重复性:每次Benchmark的执行,结果是可重复验证的; 9.伸缩性:Benchmark可以支持类似单核~异构多核的场景,单网络节点~多网络节点的场景。

面向未来的Benchmark

供应商自定义的Benchmark

供应商如果具备自定义Benchmark的能力,可以满足以下的需求: 1. 供应商面对的特定领域,进入的组织可能很少,没有现成的Benchmark可以使用; 2. 业界对一个新兴领域的理解在一段时间内很难达到共识,但是业务发展需要一个度量基准; 3. 从供应商角度来看,某些特定领域需要抢占先机,从商业保密的角度来看,相关Benchmark无法提前对外发布。

自学习的Benchmark

面对新兴的领域,如果采用传统的构建Benchmark的方法,可能很难找到合适的Benchmark度量信息;但是,将不同场景获取的大量数据交给机器学习,让机器从大量数据中自动总结出可能对系统产生关键影响的一些指标,可能会收到一些意想不到的效果。

参考说明

https://en.wikipedia.org/wiki/Benchmark_(computing)

原文作者:蓝空
点击查看原文

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
23天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
119 7
性能工具之emqtt-bench BenchMark 测试示例
|
9月前
|
缓存 NoSQL 测试技术
【Redis】benchmark 测试工具
【Redis】benchmark 测试工具
|
消息中间件 SQL 分布式计算
Nexmark Benchmark
Nexmark Benchmark test
315 0
|
消息中间件 Kafka Apache
|
数据可视化 Java 编译器
如果你想写自己的Benchmark框架
如果你想写自己的Benchmark框架
|
测试技术 Go
Go 编程 | 连载 34 - Benchmark 基准测试
Go 编程 | 连载 34 - Benchmark 基准测试
Go 编程 | 连载 34 - Benchmark 基准测试
|
JSON 前端开发 测试技术
benny 介绍 - 一个简单的 benchmark 框架
benny 是一个简单的 benchmark 框架,当你需要测试自己的库或是方法性能时,可使用它来进行对其进行基准测试。
|
存储 分布式计算 数据库
|
测试技术 Apache
性能测试工具Apache benchmark
性能测试工具Apache benchmark
377 0
|
测试技术 Apache
使用Apache Benchmark进行压力测试
使用Apache Benchmark进行压力测试
362 0