STM32L476 FPU 执行效率之比较浅析

来源:本站
导读:目前正在解读《STM32L476 FPU 执行效率之比较浅析》的相关信息,《STM32L476 FPU 执行效率之比较浅析》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM32L476 FPU 执行效率之比较浅析》的详细说明。
简介:本应用笔记基于STM32L476平台,通过实际测量来评定使能FPU时浮点运算效率的情况。

1.前言

本应用笔记基于STM32L476平台,通过实际测量来评定使能FPU时浮点运算效率的情况。

2.测试工具

STM32L476 Nucleo,示波器

3.测试方法

MCU 运行频率设置为16MHz,根据下面公式1 做N 次浮点运算,分使能FPU和禁止FPU两种情况,测试完成相同运算所需要的时间。在例程中通过翻转IO PB13 来标定完成运算所需要的时间。

STM32L476 FPU 执行效率之比较浅析

3.1 测试代码

根据公式1,分别定义A、B、C 三个常量,如下:

/* Private constants---------------------------------------------------------*/

#define A_CONSTANT(0.285f)

#define B_CONSTANT(0.443f)

#define C_CONSTANT(0.698f)

根据公式做对应的运算并通过GPIOC Pin0 输出,测定对应消耗时间:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13, GPIO_PIN_SET);

temp = A_CONSTANT*x*x +B_CONSTANT*x + C_CONSTANT;

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_13, GPIO_PIN_RESET);

3.2 代码分析

根据测试用的一元二次方程,经过IAR 编译后,汇编结果如下:

3.2.1 FPU 使能

从汇编代码可以看出,使能FPU 的情况下,完成一元二次方程的运算只需要7 条单周期指令,总共耗时为7 个Clock 周期。通过IAR 的方针模式运行,需要的CPU cycles 为7.

STM32L476 FPU 执行效率之比较浅析

3.2.2 FPU 禁止

从汇编代码可以看出,未使能FPU 的情况下,完成该一元二次方程的运算需要执行14 条指令,其中包括3 条两周期指令,6 条单周期指令,5 条程序跳转指令。通过IAR 的方针模式运行,需要的CPU cycles 为207.

STM32L476 FPU 执行效率之比较浅析

4.测试数据及结论

IO完成两次翻转耗时6.48 uS;

使能FPU 时,除去IO 翻转耗时,完成一次运算时间为6.52 uS(13 uS -6.48 uS),

如下图示:

STM32L476 FPU 执行效率之比较浅析

禁止FPU 时,除去IO 翻转耗时,完成一次运算时间为87.4 uS(93.88 uS -6.48 uS),如下图示:

STM32L476 FPU 执行效率之比较浅析

小结下,根据上面相关测试数据大致可得出如下结论:

• 完成同样的一元二次方程运算,禁止FPU时所消耗的时间约为使能FPU时消耗时间的13.4 倍左右。

提醒:《STM32L476 FPU 执行效率之比较浅析》最后刷新时间 2024-03-14 00:51:01,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM32L476 FPU 执行效率之比较浅析》该内容的真实性请自行鉴别。