This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP-EXP432P401R:在 FPU 的广泛使用期间通过 Energytrace 进行功耗测量

Guru**** 2551110 points
Other Parts Discussed in Thread: ENERGYTRACE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/590137/ccs-msp-exp432p401r-power-measurements-via-energy-trace-during-extensive-use-of-fpu

器件型号:MSP-EXP432P401R

工具/软件:Code Composer Studio

您好!

我目前正在使用 MSP432P401R LaunchPad 开发一个项目。 在本项目中、我评估一种分类算法、该算法涉及由于滤波 和特征提取(FFT 分析)而广泛使用 FPU。
我按如下方式配置 MSP432:

  • 有源模式、DCDC 和 VCORE0
  • 使用 DCO 将 MCLK 设置为大约16MHz
  • 未使用的端口被初始化

此算法的实现分为不同的处理阶段:

  • 信号采集:5秒内读取 通过 DMA 读取的数据(在我的情况下、原始数据存储在闪存中、 对于每个窗口、我在5秒内读取 数据)
  • 预处理:包含5秒的窗口。 使用 IIR 滤波器进行滤波
  • 特征提取:将 FFT 应用于筛选的数据、并从此计算中应用各种特征
  • 分级:使用功能作为分级算法的输入
由于该算法使用了大量浮点运算、我 确保 了 FPU 实际被使用。 我通过 查看生成的汇编代码(请参阅随附的文件/图像)来检查此项:

我对 FFT 执行了相同的验证、FFT 主要存在于复杂计算、例如乘法(请参阅随附的文件/图像)。



此外、我不使用 DSPLIB、因为我也想在其他平台上评估此算法、因此我需要一个通用的比较基础。

在我实现所有不同的处理阶段后、我开始使用 CCS 的 EnergyTrace 插件(版本:7.1.0.00016) 和 板载调试器(XDS-110ET 仿真器)分析算法。
以下是我处理一个数据窗口时得到的结果:

电源:

能源:

这些图中有一件事让我感到惊讶、即 FFT 分析期间功率的增加。
通过查看能量图、我假设功率几乎持续在6.14mW 和6.29mW 左右、因为它用于信号采集、滤波和分类级。

据我所知、调试器会测量电能并从这些测量中获取电能、因此我希望电源线在某种程度上是恒定的。
此外、MSP432的电源状态始终设置为初始设置(工作模式、DCDC、VCORE0)。 是否有可能在 FFT 分析期间更改这些设置?
但是 、当通过 Energy Trace++查看状态时、我没有看到任何状态变化。

因此、基本上、我要查找有关 FFT 期间功率增加的说明。  我 是否遗漏了任何内容?

此致、并提前感谢您的支持、

Sebastian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    塞巴斯蒂安
    我没有解释,但会继续调查。 您对 CMSIS DSPLIB 的引用吗?

    谢谢、此致、
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chris、
    感谢您的回答。 是的、我指的是 CMSIS 的 DSPLIB、据我所知、它将提供滤波和 FFT 等常见信号处理功能、但仅适用于 Cortex M4F。 但我也想在其他平台上分析我的算法、这就是我决定不使用它的原因。

    期待收到您的回复。

    此致、
    Sebastian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sebastian

    信号的 FFT 分析包含多个组件、包括 FFT 初始化和运行 FFT。 每种方法都使用不同的方法、而不仅仅是筛选、这是一种乘法累加操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Amit、您好!

    感谢您的回复。
    我完全了解这样一个事实、即信号的 FFT 分析包含的组件多于滤波。 但是、我仍然不太理解这会影响我的功率测量的原因、因为在 FFT 期间、几乎会调用与在滤波期间相同的 CPU 指令、即 FPU 指令和常规加载/存储指令(请参阅我的初始文章以了解汇编代码)。 从较高的角度来看、FFT 和滤波并不是很相似、但在查看为 CPU 生成的汇编代码时、它会向下转到相同的基本指令(生成的指令只是不同的顺序、其数量也不同)。
    但这是否意味着 FFT 和滤波期间的功率测量值应该相同、因此、由于执行时间不同、仅消耗的能量会有所不同?

    非常感谢您的帮助!

    此致、
    Sebastian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sebastian、

    在原始帖子中显示的快照中、您如何区分筛选和 FFT 窗口? 此外、在 DMA 正在采集数据的采集状态期间、CPU 的状态是什么、它是在 while 语句中循环还是处于 LPM0状态?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amit、您好!

    我首先在20个不同窗口中使用 EnergyTrace 获取功耗图、这大约需要10秒、从而区分不同的处理阶段。 在另一个步骤中、我使用断点获取不同处理阶段的时钟周期、并将其配置为计数事件。  之后、我将这些时钟周期转换为执行时间(MCLK=15997437Hz)。

    从第一个窗口开始、了解每个阶段的执行时间、我现在能够区分不同阶段。

    此过程是否有问题?

    以下是我针对不同阶段获得的执行时间:

    - get_new_window:1.9msec (这是发生 DMA 的地方)

    - FILTER_SIGNAL:352.6毫秒

    - FFT+特征提取:164.6毫秒

    -classification:0.4mesc

    这是另一张图片、您可以看到两个窗口的处理过程、同样是 FFT 期间功率增加时:

    关于 DMA 的问题、它在 while 语句中循环、在此循环期间我不会切换到任何低功耗状态。 为了让您知道、 功率优化现在不是该项目的主要目标、因为这更像是一个可发性研究。

    您可能感兴趣的是、在 FFT 期间、我还会在完成后动态分配和释放存储空间。 在滤波期间、我使用预定义的数组。 这是否是功率增加的原因?

    再次感谢您的帮助!

    此致、
    Sebastian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sebastian、

    与存储器的分配和释放相比、FFT 的时间帧太大。 这不会导致功率分布发生如此剧烈的变化、因为缓冲区分配和释放只是从内存池中移动缓冲区指针。

    从代码执行中、FFT 和滤波都应使用与使用 CPU 的闪存和 SRAM 访问相同的功率。 很难说出为什么一个阶跃会使功率增量递增。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请注意、与 FFT 相比、反汇编滤波具有更少的(浮点)乘法指令百分比。 就是这样。 在执行简单指令时、CPU 执行指令取指令所花费的时间要比使用 ALU 或 FPU 的实际工作(因此是电流消耗)多得多。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ilmars、

    感谢您参加本次讨论。

    请允许我重新表述您的答案、看看我是否正确。
    因此、您建议在滤波阶段、CPU 花费更多的时间(按百分比)来执行指令提取等与 RAM 访问相对应的简单指令、而不是实际使用 FPU。
    在 FFT 阶段、与过滤阶段相比、CPU 实际使用 FPU (即 vmul.f32、vnmls.f32、vmla.f32)花费的时间(以百分比表示)要比过滤阶段多、这会导致此阶段的电流消耗更高。

    如果我误解了任何内容、请更正。 非常感谢您的帮助!

    此致、
    Sebastian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Sebastian Paul"]在 FFT 阶段,CPU 实际使用 FPU 花费的时间(按百分比)超过[/引用]

    是的、您对我的理解正确。 与 FIR ~6.5mW 相比、IIR ~6.1mW 功耗之间的差异(实际上并不大)似乎与此假设相匹配。

    要进行确认、您可以尝试 使用 CMSIS DSP 库 IIR 滤波器、该滤波器应该比您的代码更优化。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复、我将您的第一个帖子标记为答案。

    恐怕我无法使用 CMSIS DSP 库、因为我希望能够将代码移植到不同的平台并在那里进行相同的评估。