在实际的开发过程中,我们经常需要统计模块(算法)的算力开销,方便后续项目的开发(模块是否能引入系统,是否会对系统的性能产生影响,一般系统总算力需要维持20%的盈余保证系统的正常运行)维护(bug修复,新特性功能开发是否会恶化性能开销)等工作。
MCPS、MIPS和DMIPS是描述算力的三个不同指标,它们各自有着特定的定义和应用场景。以下是对这三个指标的详细解释及其差别:
1. MCPS(Million Cycles Per Second)
定义:
MCPS表示每秒百万时钟周期数,是衡量算法或程序执行时每秒所耗费的时钟周期数。时钟周期是CPU主频的倒数,表示CPU完成一个基本操作所需的时间。
应用场景:
MCPS主要用于评估算法或程序在特定硬件平台上的执行效率,特别是在需要精确控制时间开销的场合。
2. MIPS(Million Instructions Per Second)
定义:
MIPS即每秒百万指令数,是衡量CPU速度的一个指标,表示CPU每秒能够执行的百万级机器语言指令数。MIPS用于计算系统的秒级处理能力,反映了CPU的架构、内存的访问速度等硬件特性。
应用场景:
MIPS广泛应用于评估CPU的性能,特别是在不同处理器架构之间的比较中。然而,由于MIPS无法直接比较不同架构下的性能(因为不同架构的指令集和复杂度不同),因此在实际应用中需要结合其他指标进行综合考虑。
3. DMIPS(Dhrystone MIPS)
定义:
DMIPS是基于Dhrystone基准测试程序的MIPS值,用于评估CPU的整数运算能力。Dhrystone是一个简单的整数运算和逻辑运算的基准测试程序,通过测量CPU每秒能执行多少Dhrystone循环来反映CPU的整数运算性能。
应用场景:
DMIPS特别适用于评估通用计算任务的处理能力,提供了一个统一的标准来比较不同处理器之间的整数运算性能。在自动驾驶、物联网等领域中,DMIPS可用于评估处理器处理通用控制任务和算法的能力。
下表是对上面各种指标的简要对比:
CPU总算力计算公式:
DMIPS = 核心数 × 主频(MHz)× DMIPS/MHz
最后一个值表示在每个时钟内每个CPU核心能执行多少次Dhrystone测试,常见的核心数据如下:
A53:2.3 DMIPS/MHz
A72:6.3~6.7 DMIPS/MHz
由此可见A72的运算能力约为A53的三倍。
DMIPS值主要反映了处理器的整数计算能力,而不包括浮点计算能力。如果需要评估处理器的整体计算能力,还需要考虑其他指标,如FLOPS(每秒浮点运算次数)等。
dolby的DCX for auto 算力消耗数据 220~250MCPS on CA53 (Raspberry Pi3)(数据来自杜比实验室)
这个数据表明要能按照预期解码杜比CPU需要每秒支持250M个周期。而A53每个周期可以执行2.3个Dhrystone指令。
也就是说dolby的DCX for auto 算力消耗数据用DMIPS表示的话是:
250mcps * 2.3DMIPS/MHz = 575DMIPS (A53)
下面我们基于A53的数据推理A72的性能开销:
由于A72比A53性能强3倍,所以A72的MCPS应该是250MCPS/3.
A72的DMIPS/MHz 是A53的DMIPS/MHz 三倍。带入计算公式可以得到dolby的DCX for auto 算力消耗数据用DMIPS表示的话是575DMIPS。(A72)。由此可以看出使用DMIPS描述算力消耗的优势,可以忽略不同核的影响。
Linux CPU核心以及主频查看方式:lscpu。