whetstone CPU 性能基准测试指南

[ English | 简体中文 ]

本文档为 openvela 系统的开发者和性能工程师提供 whetstone 基准测试工具的详细使用指南。whetstone 是一个经典的综合性基准测试程序,旨在通过执行一系列标准化的计算任务,精确评估系统的浮点与整数运算性能。

一、概述

whetstone 是一个用于评估处理器算术性能的命令行工具。它通过执行一组包含浮点运算、整数运算、函数调用和数组访问等在内的混合计算任务,得出一个标准化的性能评分。

测试结果可以帮助开发者:

  • 量化评估处理器的浮点运算单元 (Floating-Point Unit, FPU) 性能。
  • 分析不同编译器优化等级 (-O2, -O3 等) 对代码执行效率的影响。
  • 在不同硬件平台或系统配置之间进行算术性能对比。

二、系统配置

在运行测试前,您必须在 defconfig 文件中启用以下 Kconfig 选项,以确保 whetstone 测试套件及其依赖项被正确编译。

# 编译 Whetstone 基准测试工具
CONFIG_BENCHMARK_WHETSTONE=y

# Whetstone 测试的核心是浮点运算,必须启用 C 库的浮点支持
CONFIG_LIBC_FLOATINGPOINT=y

三、使用方法

whetstone 工具通过简单的命令行接口启动,并支持参数来控制测试的负载。

1、命令语法

whetstone [-c <iterations>] [<loops>]

2、参数说明

参数 说明 是否必需 默认值
[<loops>] 模块循环次数。一个位置参数,用于设定每个内部测试模块的执行循环次数。增大此值会显著增加单个测试模块的计算量和执行时间。 1000
-c <iterations> 总测试轮数。一个可选参数,用于设定整个 whetstone 测试套件的重复执行次数。 1

3、执行示例

  1. 执行一次标准测试:使用默认参数,每个模块循环 1,000 次,整个测试执行 1 轮。

    whetstone
    
  2. 增加每个模块的计算负载:每个模块循环 100,000 次,整个测试执行 1 轮。这适用于需要更长运行时间以获取稳定平均值的场景。

    whetstone 100000
    
  3. 重复执行多次测试:每个模块循环 100,000 次,并且整个测试套件重复执行 10 轮。

    whetstone 100000 -c 10
    

四、结果解读

测试完成后,whetstone 会输出测试配置、总耗时以及最终的性能评分。

1、示例输出

ap> whetstone 100000
Loops: 100000, Iterations: 1, Duration: 5 sec.
C Converted Double Precision Whetstones: 2.00 MWIPS
  • Loops: 100000: 每个模块执行了 100,000 次循环。
  • Iterations: 1: 整个测试套件执行了 1 轮。
  • Duration: 5 sec: 总耗时为 5 秒。
  • C Converted Double Precision Whetstones: 2.00 MWIPS: 最终性能评分为 2.00 MWIPS。

2、关键指标说明

  • MWIPS / KWIPS

    • 含义: whetstone 的性能单位,分别是 MWIPS (Mega Whetstone Instructions Per Second) 和 KWIPS (Kilo Whetstone Instructions Per Second)。
    • 计算: KIPS = (100.0 * loop * 1) / (执行时间(秒) * 1000),该值根据固定的基准任务量、测试循环次数 (loops-c 参数) 以及总执行时间计算得出。它是一个标准化的分数,分值越高,代表处理器的算术性能越强。
    • 单位换算: 当评分低于 1 MWIPS (即 1000 KWIPS) 时,结果会以 KWIPS 显示。

五、测试模块详解

whetstone 基准测试由 11 个精心设计的计算模块组成,全面覆盖了不同的运算类型:

  • 模块 1-4:基础浮点运算/数组操作/条件判断
  • 模块 5:被省略的整数运算模块
  • 模块 6:复杂整数运算
  • 模块 7:三角函数计算(含反三角函数)
  • 模块 8:过程调用测试
  • 模块 9:数组索引测试
  • 模块 10:简单整数运算
  • 模块 11:数学函数链式调用

六、openvela 移植说明

此版本的 whetstone 针对嵌入式实时系统进行了关键优化。

  • 优化的计时器精度: 原版 whetstone 只有测试时间达到秒级才能得到结果。移植到 openvela 的版本达到毫秒级别就有精度输出。这使得在高性能的嵌入式 CPU 上,即使运行较少的循环次数,也能快速获得稳定且准确的性能数据。