1.ARM cpu性能测试总结
2.Coremark及几款RISC-V处理器的源码比较
3.MM32F5270开发板试用CoreMark程序移植
4.在Visionfive v1(昉·星光)上的性能测试
5.处理器性能测试基准平台与测试指标
ARM cpu性能测试总结
ARM CPU性能测试总结:
ARM处理器性能的评估通常通过两个关键工具:DMIPS(Dhrystone Million Instructions Per Second)和CoreMark。DMIPS是源码通过Dhrystone基准测试衡量系统每秒钟执行的Dhrystone指令数量,转化为DMIPS后便于比较。源码然而,源码DMIPS只是源码理论上的性能指标,实际应用性能还需考虑架构、源码赚钱趋势指标源码缓存等因素。源码在Linux上,源码可通过下载Dhrystone源码并调整Makefile(如使用O3优化,源码设置HZ值)进行测试,源码最终结果以DMIPS/MHz表示。源码
CoreMark则是源码针对嵌入式应用的性能测试,它关注处理器在执行典型工作负载(如算术、源码内存操作等)时的源码迭代次数。CoreMark结果越高,源码表明处理器性能越好,同时还能提供功耗数据。在GitHub上获取源代码后,通过修改makefile编译并执行,结果以Iterations/Sec(每秒迭代次数)/MHz表示。
另外,Stream测试用于测量内存带宽,对CPU计算能力需求较小,但对内存带宽压力大。Stream测试包含四个基本功能,如Copy、Scale等,通过修改makefile进行多线程测试,结果反映了内存带宽的性能。
Coremark及几款RISC-V处理器的小鸟红中麻将源码比较
CoreMark基准测试是由EEMBC提出,用于评估单核处理器性能的简化工具。其测试包括浮点数、整数、缓存、内存等任务,以CoreMark/MHz表示测试性能,数值越高表示性能越强。CoreMark包含四个主要工作负载:列表处理、矩阵操作、状态机、CRC计算。与复杂基准测试相比,CoreMark更轻量级且易于实现,适合嵌入式处理器性能评估。
要运行Coremark,可从GitHub下载项目源码,网址为github.com/eembc/coremark。移植项目时,使用git下载源代码至本地,然后编译运行。若需交叉编译,需修改Makefile配置环境并编译。
接下来,我们将对比几款RISC-V处理器在CoreMark测试中的表现。不同处理器的CoreMark得分受到CPU性能、存储器访问速度、编译器选择等多种因素影响。
StarFive VisionFive 1
StarFive VisionFive 1基于SiFive U内核,包含两个KB(D)和KB(I)L1缓存的提交申请网站源码内核,以及2MB L2缓存。SiFive U支持RVGC,但不支持RISC-V矢量扩展。
实际CoreMark测试结果如下:
单核:X CoreMark/MHz
多核:Y CoreMark/MHz
Sipeed Licheepi 4A
Licheepi 4A采用TH主控核心,包含4xC@1.G内核,支持RVGCV、4TOPS@int8 NPU和GFLOP GPU。板载GB bit LPDDR4X,GB eMMC,支持双4K显示输出和4K摄像头接入。
实际CoreMark测试结果如下:
单核:X CoreMark/MHz
多核:Y CoreMark/MHz
算能SG
SG基于高性能RISC-V内核C,主频2GHz,单SOC处理器有核,配备MB系统缓存,展现出强大的多核性能。
实际CoreMark测试结果如下:
单核:X CoreMark/MHz
单cpu多核:Y CoreMark/MHz
Banana Pi BPI-F3
BPI-F3是一款工业级8核RISC-V开源硬件开发板,采用进迭时空(SpacemiT)K1 8核RISC-V芯片,集成2.0 TOPs AI计算能力。它具备4G DDR和G eMMC,支持2个GbE以太网接口、4个USB 3.0和PCIe M.2接口,支持HDMI和双MIPI-CSI摄像头。
实际CoreMark测试结果如下:
单核:X CoreMark/MHz
多核:Y CoreMark/MHz
横向对比
通过上述测试结果,我们可以对比不同RISC-V处理器在CoreMark测试中的表现。不同处理器在单核和多核性能上有显著差异,这受到处理器架构、缓存、核心数量、存储器访问速度等因素的cci指标源码附图影响。选择合适的RISC-V处理器时,需综合考虑其性能、功耗、成本和生态系统等因素,以满足特定应用需求。
MMF开发板试用CoreMark程序移植
本文来自极术社区与灵动组织的MMF开发板试用活动,更多详情请访问极术社区。作者:心梦CoreMark移植到MMF开发板的步骤
CoreMark是一个衡量处理器性能的标准测试,C语言编写的代码包含多项操作。得分越高,性能越优。访问CoreMark官网获取代码并测试自家处理器性能。移植至MMF的步骤如下:确保开发板具备UART打印和1ms中断定时器功能(如systick)。
从官网下载CoreMark源代码,包含core_list_join.c, core_main.c, core_matrix.c, core_state.c, core_util.c, 和coremark.h等文件。
将core_portme.c和core_portme.h文件移到app文件夹,对它们进行必要的修改,添加到工程中。配置工程时,添加文件夹路径。
移除原有main函数,将硬件初始化代码放入core_main.c的portable_init函数中,确保s的运行时间。
编译后,连接MMF开发板,通过串口调试助手查看运行结果。我得到的是每秒次迭代,略高于官方提供的.次。
官方运行结果如下:
Profile generation run parameters for coremark...Iterations: ,易语言新年源码 Compiler: GCC .3.1, Memory location: STACK...在Visionfive v1(昉·星光)上的性能测试
昉·星光是第一代价格实惠的RISC-V计算机,支持Linux操作系统。搭载了RISC-V SiFive U双核位RVGC ISA的芯片平台,以及8 GB LPDDR4 RAM,配备丰富外设I/O接口,包括USB 3.0、-Pin GPIO Header、千兆以太网连接器、Micro SD卡插槽等。集成神经网络引擎和NVDLA引擎,提供AI功能;同时具备板载音频和视频处理功能,以及用于视频硬件的MIPI-CSI和MIPI-DSI接口。支持Wi-Fi和蓝牙无线功能,兼容大量软件,提供对Fedora的支持。
在安装系统时,考虑到昉·星光官方提供对Fedora的支持,可参照官方文档进行安装。
硬件准备包括下载操作系统,使用BalenaEtcher等软件在Windows上进行SD卡的烧录,或使用dd命令在Linux系统上操作。插入SD卡上电后,通过默认用户名和密码进入系统,连接网络并尝试SSH访问,方便操作。
Benchmark测试包括Dhrystone、Coremark、LINPACK、FPMark、Whetstone等。Dhrystone V2.1测试时,需打补丁并编译,Coremark V1.0测试命令已给出,Whetstone和FPMark测试需先下载源码并编译,最后运行并记录结果。LINPACK测试同样需下载源码并编译,最后记录运行结果。
结果对比汇总了昉·星光与其他开发板的性能数据,昉·星光的双核性能与四核的Unmatched相比略显不足,单核性能接近但仍有差距。Dhrystone与CoreMark的测试结果与官方标注有一定差距。通过实际测试,可发现昉·星光在性能上仍有提升空间。
处理器性能测试基准平台与测试指标
SPEC,全称为标准性能评估公司(Standard Performance Evaluation Corporation),是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的非营利性组织。该组织旨在建立和维护一套用于评估计算机系统的标准。
SPEC CPU是SPEC组织推出的CPU子系统基准测试程序,测试程序以源码形式发布,包含多种改进后的实际应用程序,可以在多种体系结构上运行。在SPEC CPU测试中,测试系统的处理器、内存子系统和使用到的编译器都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU 的影响非常小。目前,SPEC CPU的最新版本是SPEC CPU ,最早的是SPEC CPU 。
SPEC CPU测试类型包括两种:整型运算和浮点运算。
SPEC CPU性能测试包括两个部分:速度测试和吞吐量测试。它们分别被称为speed模式和rate模式。其中speed是针对单任务的计算速度测试,rate针对系统运行多任务的吞吐量进行测试。默认使用SPEED模式进行测试,如需使用RATE模式进行测试,需要在runspec的参数中加上--rate。
每种模式都有基值(Base)和峰值(Peak)两个性能衡量指标,base测试对编译有严格的规定,比如仅允许使用一种编译器、编译优化选项不能超过4个等等;而peak测试中可以针对不同的测试项目使用不同的编译器和不同的优化选项,从而让各项测试的测试结果达到最优。
1.1 SEPC CPU
SPEC CPU 中包含两套测试套件:CINT和CFP。其中CINT共有个测试项目,用于评估CPU整型运算的性能;CFP共有个测试项目,用于评估CPU浮点运算的性能。这个测试项目使用了C、C++、Fortran共三种语言。
1.1.1 测试内容
SPECCPU默认使用base进行测试,用户可以在runspec的参数中,加上—tune=base或者—tune=peak手动指定测试模式,如果两种模式都需要测试,则可以指定—tune=all。
整型测试项
浮点型测试项
1.1.2 测试数据
报告地址:spec.org/cpu/result...
参数解释:
Seconds:对于speed测试,表示基准测试运行的时间,单位s;
对于rate测试,表示吞吐量运行时第一个副本开始到最后一个副本结束之间的时间量。
Ratio:基准运行时间与参考平台运行时间的比率,即被测计算机的执行时间除一个参考处理器的执行时间,目的是将被测计算机的执行时间标准化,Ratio值越大,表示性能越强。
Copies:吞吐量测试时,同时运行的基准测试副本的数量。
Base与peak的计算:测试三次,选择每组测试的中位数,再计算每项测试Ratio的几何平均值。
1.2 SEPC CPU
1.2.1 测试内容
整型测试项
浮点测试项
1.2.2 测试数据
报告地址:spec.org/cpu/result...
参数含义同1.1.2。
1.3 优化内容
以性能为主,不考虑功耗的问题,以结果发布为目的。
2. Geekbench
Geekbench是一款跨平台的处理基准测试程序,评分系统可分为单核与多核性能,以及模拟真实使用场景的工作负载能力。有geekbench2、geekbench3、geekbench4以及最新geekbench5,geekbench4以i7-U的结果分为基准,geekbench5以i3-U的结果分为基准,分数越高,性能越好。
2.1 测试内容
Geekbench5通过执行任务和应用程序的测试来评估硬件性能,分数越高性能越好,分数加倍表示性能加倍。
2.2.1 CPU Workloads
Geekbench5将CPU workload分为两个部分:单核workload和多核workload。
Crypto:加密工作负载通过执行大量使用加密指令的任务衡量计算机的加密指令性能。
Integer:整型工作负载通过执行大量使用整型指令的处理器密集型任务来衡量计算机的整型指令性能。所有的软件都使用了大量的整数指令,因此整型分数越高表示整体性能越好。
Floating Point:浮点型工作负载通过执行大量使用浮点运算的各种处理器密集型任务来评估浮点计算性能。浮点计算性能在视频游戏、数字内容创建和高性能计算应用程序中尤为重要。
CPU benchmark分数用于评估和优化CPU和内存性能,使用的workload包括数据压缩、图像处理、机器学习和物理模拟。对于各种应用程序(包括web浏览器、图像编辑器和开发人员工具)来说,这些workload的性能或者很重要。
Geekbench5提供两个综合分数:单核与多核。这些分数是通过分段分数的加权平均数计算的。分段分数是使用该分段中包含的workload分数的几何平均值计算的。
2.2.2 CPU Compute Workloads
计算Benchmark分数用于使用包括图像处理、计算摄影、计算机视觉和机器学习在内的workload来评估和优化 GPU 计算性能。 这些workload中的性能对于包括相机、图像编辑器和实时渲染器在内的各种应用程序都很重要。
Geekbench 5按照测试内容运行workload,默认情况下,每个workload运行次。Geekbench 5的总分有各个Compute workload的得分求几何平均值得到。
每个Compute workload对每个受支持的Compute API都可以实现,API之间的分数也可以比较,但是有由于Compute API的性质,性能差异可能不仅受底层硬件的影响,GPU驱动程序也可能对性能产生巨大影响。
3. CoreMark
CoreMark是一个综合基准,用于测量嵌入式系统中使用的中央处理器(CPU)的性能。它是在年由eembc的shay gal-on开发的,旨在成为一个行业标准,取代过时的dehrystone基准。代码用C编写,包含以下算法:列表处理(增删改查和排序)、矩阵操作(公共矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC。
CoreMark的测试方法是,在某个配置参数组合下单位时间内跑了多少次CoreMark程序,其指标单位为CoreMark/MHz。CoreMark数值越大,性能越强。
3.1 测试内容
3.1.1 链接列表
函数
描述
此Benchmark所做的项目:
3.1.2 矩阵操作基准
函数
描述
Matrix manipulation benchmark构成了许多更复杂算法的基础。紧密的内部循环是许多优化(编译器以及基于硬件)的重点。
此Benchmark所做的项目:
3.1.3 状态机基准
函数
CoreMark中使用状态机的主要目的是为了测试switch/if的运转情况