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.

[参考译文] 矩阵乘法的 LEA 能耗

Guru**** 2964790 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/892226/lea-energy-consumption-for-matrix-multiply

器件型号:MSP430FR5994
主题中讨论的其他器件:ENERGYTRACE

您好!

在 http://www.ti.com/lit/an/slaa698b/slaa698b.pdf 中 、LEA 矩阵乘法运算的延迟(MSP_matrial_mpy_Q15)声明为(16+3)*(N/2)。 在这里、N =块大小、但在这个操作中"块大小"是什么意思?


此外、我尝试分析 MSP_matrial_Q15 LEA 运行的能耗、但能源成本似乎相对于 MAC 数量甚至相对于矩阵大小不是线性的。


有人能不能说明这是为什么?

我正在使用 EnergyTrace 测量能源成本。


LEA 矩阵乘法的能耗成本与什么有关?


谢谢

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

    您好、Rosh、

    让我看看我能否与我们的 LEA 专家联系、以便就您的问题获得一些帮助。

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

     -谢谢

    此外、看起来像 MSP_matrix mpy_Q15命令、迭代计算[A (每行) x B (整个矩阵)]、其中 A 和 B 是输入矩阵。 它不是完整的硬件矩阵-矩阵乘法、而是看起来像一个迭代矢量-矩阵乘法。 或者,是否有完全在 LEA 中完成的矩阵多操作?

    谢谢

    罗什

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

    您好、Rosh、

    感谢您的耐心。  我们的 LEA 专家不再与我们合作、因此我必须与一些能够帮助解决您的问题的人合作。

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

    -谢谢您,感谢您的任何建议。

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

    您好、Rosh、

    感谢您的耐心等待、我必须仔细检查 DSPLIB 的实现并运行一些测试。

    从我可以看到 的结果来看、slaa698 是不正确的。 它说矩阵 MPY 应该取16个以上(3 x N/2);然而、这是与矢量乘法相同的周期数、如上所述、库使用循环逐行乘法。 这对于启动器来说毫无意义。

    根据我找到的一些信息、在运行一些测试后、每行的实际周期数似乎是:

    27 +(colSize/2) x (15 + 5 x (rowSize/2)),其中 colSize 是 ColB,rowSize 是 RowB = Cola。

    其中、矩阵的大小定义为:

    [ROWA x COLA] x [RowB x COLB]=[ROWA x COLB]、而 COL= RowB

    除此之外、每个循环将添加更多周期、但使用 CPU。 循环的数量由 ROWA 定义、很难定义它们、因为它们将取决于编译器及其优化。

    我假设功耗会因矩阵的尺寸而异。

    增加 cola=RowB 和 ColB 应该增加 LEA 执行的每行乘法的持续时间。 在这种情况下、CPU 处于 LPM0模式、LEA 正在运行。

    当器件处于工作模式时、增加 ROWA 会增加环路的数量。

    遗憾的是、我找不到执行完整矩阵实现的任何 LEA 函数。

    此致、

    Luis R

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

    您好、  

    感谢您花时间运行这些测试。

    我尝试使用 EnergyTrace 针对不同的[Cola、ColB、ROWA]进行一些测量。 我观察到的是:

    -当 ColB = ROWA = 1时、随着可口可乐公司的规模增加、能源呈线性增长、比如固定的增长率(M)-我想这与矢量-矢量乘法类似

    然而,随着 ColdB 的增加,M 的增加率也在上升。 (即 M 不是相同的 ColB>1)

    同样,随着 ROWA 的增加,能源的增长速度也会有所不同,因此,估计(Cola x ColB)的能源并乘以 ROWA 并不简单。

    LEA 是否每个周期不消耗固定量的能量? (假设 CPU 处于睡眠状态)。 然后、我们可以使用您提供的公式轻松获得矩阵乘法的总能源成本。

    最后一个问题:

    -您能不能说明在使用 DSPLIB 执行 LEA 时将 CPU 置入 LPM0中的一些代码? 据我了解,DSPLIB (MSP_matrial_q15或任何其他 func)不支持中断?

    谢谢你

    罗什

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

    抱歉-仔细观察后、DSPLib LEA 函数实际上会将 CPU 置于 LPM0中、ISR 在"MSP_LEA_ISR"中指定、当 LEA 完成时、ISR 将唤醒 CPU。

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

    您好、Rosh、

    有几个因素可能会解释这种行为:

    • 根据上面的函数、每行的周期数取决于矩阵的尺寸、行(RowB = Cola)和列(colB)的增加速率不同
      • 如果 col=row=2、则会得到47个周期
      • 保持列=2、但行=4增加到52个周期;然而、增加到50将产生167个周期。 或2.5个周期的速率。
        • 计算 f (row)- f (row-1)的速率会得到(5*col/4)的速率。 (即、如果 col=2、5x2/4 =每行增加2.5个周期)
      • 保持 rows=2、但 cols=4会增加到67个周期;而增加到50会产生527个周期、速率为10个周期。
        • 计算 f (col)- f (col 2)的速率将得到我(15/2 +(5 *行)/4)。 (即、如果 row=2、15/2 + 5x2/4 =每增加一个 col 10个周期)。
    • 关于您对电流与 ROWA 数量成比例的评论、您是否在 LEA 开始运行时看到不同的平均电流? 函数的一部分将是"静态"的-初始化、参数检查等-还有另一部分应该是可变的并且与周期数成比例。 理论上、一旦环路开始运行、电流平均应保持相对稳定、但下一条注释除外。
    • LEA 的电流取决于所执行指令的类型、甚至是数据。 这就是数据表不仅包含功耗规格的原因、还显示了不同的用例( SLASE54C 的表5-14)。表5.10还显示了数据为零时 FFT 的典型电流是66uA/MHz、而数据为非零时为86uA/MHz 的原因。

    总的来说、LEA 被设计用来提高性能并进一步降低 MSP430的功耗。 创建 SLAA698 是为了展示一些用例、但节省的费用将取决于使用情况。

    此致、

    Luis R

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

    您好、Luis、

    是的、我认为我现在理解了增长率。

    至于与 ROWA 的比例、是的、有一个与初始化开销相关的固定能量部分。 但我没有检查过这个。

    w.r.t 到矩阵乘法-如果数据为零(例如,ROWA 全为零),那么电流是否会更低? (即 LEA 不会执行相应的乘法累加运算,而只是得到零结果)? 如果是这种情况、我将假定电流减少将远小于非零情况、并且将仅包括固定参数初始化开销。

    谢谢

    罗什

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

    您好、Rosh、

    Luis 是否回答了您的所有问题?

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

    您好、Rosh、

    只需跟进您的问题:

    [引用 user="Rosh Mendies">w.r.t 至矩阵乘法-如果数据为零(例如,ROWA 全为零),则电流是否会更低? (即 LEA 不会执行相应的乘法累加运算,而只是得到零结果)? 如果是这种情况、我将假定电流减少将远远小于非零情况、并且只包括固定参数初始化开销。[/quot]

    实现并不是真的这么做、但它会执行乘法、并且会花费相同的时间。 功耗将因 SLAA698中所述的实际数据本身而异 :

    此致、

    Luis R

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

    好的、我认为我理解、不同的输入应该消耗不同的能量、但是变化不应超过20uA/MHz。 由于栅极电平行为、零输入情况应消耗最低电流。 谢谢你