SPEC 性能基准测试于 1988 年由标准性能评估机构SPEC 提出,目前已发展成为包含 CPU 性能、服务器能效、文件系统性能、高性能计算、Web 应用性能等在内的基准测试簇。其中 SPEC CPU系列基准是公认的、具有事实性影响力的CPU性能基准测试标准,通过测试程序在被测系统和基准系统中执行时间的比值来考察系统CPU运算性能。
多年来,SPEC CPU性能基准测试与CPU的发展相互促进,基准测试程序不断演进升级,CPU技术和产业应用也加速创新发展。
SPEC CPU 92 通过调整测试基准来应对行业需求,迅速取代MIPS 度量,成为产业界公认的事实标准,也驱动各界在提升整型运算和浮点型运算的同时,积极寻求新的 CPU 技术突破方向. 随着技术的创新迭代,CPU时钟频率加速攀升,高速缓存容量持续增大、性能不断提高,也使得SPEC CPU 92 的性能测试受到较大的影响。为进一步提升测试准确性,业界推出了 SPEC CPU 95,在应对新的容量、性能测试需求时,提供了更全面的场景来丰富 CPU 性能测试能力,引导技术创新由局限于关注裸性能向注重实际场景应用效果转变。SPEC CPU 2000延续了 SPEC CPU 95 由两套基准测试程序分别测试 CPU整型运算性能和浮点运算性能模式。 同时,为更好地应对不断普及的多核处理器计算系统测试需求,保证测试结果的科学性和合理性。
为了满足更多场景的测试要求,SPEC 再次对测试基准进行完善,推出了 SPEC CPU 2006. SPEC CPU 2006 新增的测试套件涵盖到 CPU、存储系统、编译器等。
经过10年的沉淀,在SPEC CPU 2006的基础上推出的 SPEC CPU 2017,进一步丰富应用场景,具体包含 43 个基准,分为两类四个套件 . 其中,SPEC speed Integer 和 SPEC speed Floating Point 套件用于比较计算机完成单个任务的时间,SPEC rate Integer 和 SPEC rateFloating Point 套件则可以测量每单位时间内的吞吐量或工作量。这也是第一次对速率(rate)和速度(speed)进行区分,以有效满足复杂场景下对性能基准测试的稳定性提出更高要求,进而指导CPU发展。
不同于 SPEC 从最初关注裸性能不断拓展到系统性能,TPC性能基准测试在设计之初就将系统级应用的综合性能测评作为关注的重点。
用于度量系统对该类事务处理性能的主要测试基准包括TP1(Transaction Process 1)和 DebitCredit。该类测试基准由于缺少对测试执行过程和综合测评结果的有效监督,易出现测试过程不规范,甚至给出误导性测试结果的情况。20 世纪 80 年代末,第一个TPC基准TPC-A发布,对事务处理时限、测试系统终端数量等提出明确要求,澄清了当时混乱的市场,为推动CPU的系统级性能测试提供了重要依据。
经过持续迭代升级,TPC已发展成为能够满足多种应用场景性能测试需求的基准测试簇,根据测试场景和测试事务的不同,可将 TPC性能基准测试分为三类:
联机在线事务处理系统(OLTP)测试,包括TPC-C,TPCE;决策支持和大数据(DS)测试,包括 TPC-H,TPC-DS;服务器虚拟化(VMS)测试,包括TPC-VMS. 其中,TPC-C性能基准测试通过模拟较复杂且具有代表意义的OLTP应用环境,来衡量联机事务处理系统性能与可伸缩性。TPC-E 则在 TPC-C 的基础上,对传统的 C/S 架构模拟环境进行了完善,从而实现对当时日益盛行的B/S架构系统的高效评价,为引导产业提升大规模并发处理能力提供了重要依据。
TPC-H提供了一套决策支持系统的性能基准测试依据,强调服务器在数据挖掘、分析处理方面的能力。TPC-DS 则补充了单用户响应时间、多用户吞吐量等测试,对测试基准的数据模型、业务模型和执行模式进行了完善。TPC-VMS的目标是模拟服务器虚拟化环境,并实现对 TPC-C,TPC-E,TPC-H,TPC-DS的综合测试,从而推动CPU围绕应用日益广泛的云计算模式不断提升性能。
在 CPU 性能基准测试的不同发展时期,学术界和产业界也提出了一系列有关的性能基准测试方法,针对跨平台、内存共享、多线程等多种场景进行测试。
Geekbench 是近年来受关注较多的一种跨平台CPU 性能基准测试,其主要方式是通过构建多维评分系统,将单核、多核性能与模拟真实场景的工作负载分隔开。该性能基准测试适用于 Windows、Linux、macOS等多种操作系统下的测试。
Kozhirbayev 等人在利用Geekbench对单核和多核下的整形计算性能、浮点计算性能和存储性能的基准测试中,获得了很好的对比参考效果。Polvinen等人在实验过程中,采用Geek⁃bench快速、准确地度量了处理器在向量点乘、矩阵 LU分解等场景中的性能.
此外,Splash,PARSEC Benchmark,LINPACK Bench-mark,MiBench,NAS Parallel Benchmark,CPU-Z 等也常用于计算实验或实际应用中的性能基准测试,来展示和对比CPU的各项性能。
为直观地展示本文所述通用测试基准的测试重点,各类性能基准测试及相关工具的支持语言、编译程序、适配系统、支持的CPU架构及测试侧重点信息。
表1中各类工具支持语言、编译程序、适配系统、支持的 CPU 架构均具有一定的差异性。特别是基于不同的测试目标,各类工具的重点测试内容各异,不仅涉及运算能力、内存性能、内存带宽等重要指标,而且与联机业务处理、数据挖掘、并行计算等各类综合应用场景相关。
随着CPU性能测试维度的增加,CPU裸性能以及单一场景下的基准测试,难以全面反映 CPU 的综合性能,因此,多种基准测试工具的配合测试,已成为通用CPU性能基准测试行业共识。
在稳定性方面,选取常用的性能基准测试工具——SPEC CPU和UnixBench,通过对实际应用情况的分析和梳理,为通用CPU性能基准的深入研究提供参考。
测试工具 SPEC CPU 的重要参数包含缓存缺失率(cache-misses)、分支指令预测错误率(branch-misses)和地址块表缓存缺失率(dTLB-load-misses)等,相关指标越大,表明 CPU 的测试强度越高。SPEC CPU 测试工具的三个版本分别发布于 2000年、2006年和 2017年。从2000年至2017年的17年间,商业通用CPU的性能至少增长了 10 倍 . SPEC CPU2000 /2006/2017 三个版本演进过程中,工具开发人员希望通过加大数据集等手段,提高对通用 CPU 的测试压力,获取更准确的性能评测结果。
本文首先对当前国际主流的CPU基准测试现状进行了综述,并对各类测试基准和工具的功能、算法、应用场景等方面的迭代升级和最新成果进行了分析;然后对当前通用CPU性能指标和基准测试需求进行了梳理,并分析了通用CPU性能基准测试所面临的挑战。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!