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.

[参考译文] AM5728:MPU 频率

Guru**** 2609925 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581848/am5728-mpu-frequencies

器件型号:AM5728

您好!


我正在使用 AM572X EVM。 根据以下命令、可用频率似乎只有3个。 那么、AM572x 系列处理器是否无法在较低频率下运行? 还是矩阵 UI 内核的限制? 如果我要更改内核或闪存、像 debian 这样的不同发行版是否可以在用户空间中使用其他频率模式?

root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1000000 1176000 1500000

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

    这三个频率分别是 OPP_NOM、OPP_OD 和 OPP_HIGH 运行性能点允许的最大频率。 使用中的 DVFS 调节器将根据需要增加/降低频率。 更多 信息、请参阅 processors.wiki.ti.com/.../Linux_Core_Power_Management_User's_Guide_(v4.1)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    啊,我想,发出这个命令"
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 应列出所有可用频率。 您会说、这些是分别在 OPP_NOM、OPP_OD 和 OPP_HIGH 运行性能点中的"最大"允许频率。 如何(哪个命令)查看每个 OPP 的所有可用频率? 如何在实验期间固定特定的 OPP、以便它在软件执行期间不会发生变化? 很抱歉、如果我不正确理解它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    调速器。 我发布的链接中也对此进行了说明。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,更换调速器似乎没有改变。 它显示了所有调频器的完全相同的可用缩放频率。

    root@am57xx-EVM:// uname -a
    Linux am57xx-EVM 4.4.3.32-gadde2ca9f8 #1 SMP 挤占 Wed 12月14日19:14:12 EST 2016 armv7l GNU/Linux
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
    保守的用户空间节能按需性能
    root@am57xx-EVM:~# echo 保守党>/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    保守
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    1000000 1176000 1500000
    root@am57xx-EVM:~# echo userspace >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    用户空间
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    1000000 1176000 1500000
    root@am57xx-EVM:~# echo powersave >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    省电
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    1000000 1176000 1500000
    root@am57xx-EVM:~# echo onDemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    OnDemand
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    1000000 1176000 1500000
    root@am57xx-EVM:~# echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    性能
    root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    1000000 1176000 1500000

    我正在使用矩阵 Linux。 是因为这个吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kameswar、

    [引用 USER="KameswarRao Vaddina]root@am57xx-EVM:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    1000000 1176000 1500000[/报价]

    默认情况下、我们只有这3个频率可用于 AM57x Cortex-A15 MPU。 您是否希望看到所有可用频率都具有1Hz 偏移? 请告诉我您确切需要设置哪个 OPP 和哪个频率。

    [引用 USER="KameswarRao Vaddina">我正在使用矩阵 Linux。 是因为这个原因吗?[/引述]

    否 矩阵 GUI 与 DVFS 可用频率没有什么共同之处。

    此致、
    帕维尔

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

    >>默认情况下,AM57x Cortex-A15 MPU 只有这3个可用频率。 您是否希望看到所有可用频率都具有1Hz 偏移? 请告诉我您确切需要设置哪个 OPP 和哪个频率。

    我希望它在100MHz 偏移下达到200MHz、一直达到1.5G 的最大值。 我的意思是、我需要200MHz 到1.5GHz 的所有可用频率、具有100MHz 偏移。 同时、我还想改变运行点。 我在改变频率和 OPP 的同时监控功耗。

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

    [引用 USER="KameswarRao Vaddina">我希望它能以100MHz 的偏移达到200MHz、最高可达1.5G。 我的意思是、我需要200MHz 到1.5GHz 的所有可用频率、具有100MHz 偏移。 同时、我还想改变运行点。 我在改变频率和 OPP 的同时监控功耗。 [/报价]

    在这种情况下、您应使用所需的所有频率更新 opp 表、因为此处只有3个默认频率。

    processors.wiki.ti.com/.../Linux_Core_Power_Management_User's_Guide_(v4.4)

    linux-4.4.4.3.32/arch/arm/boot/dts/dra7.dtsi

    对于 OPP 开关、应根据频率开关自动执行此操作。 您可以对监控每个频率的电压进行仔细检查:

    查看电流电压:

    Target# cat /sys/class/regulator/regulator.3/microvolts

    有关 AM57x 功耗的信息、我们在以下 wiki 页面中提供:

    此致、
    帕维尔

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

    非常感谢 Pavel 的详细答复。

    >>在这种情况下,您应使用所需的所有频率更新 opp 表,因为此处只有3个默认频率。

    1) 1)那么、我必须更新 opp 表并使用"create-sdcard.sh"脚本重新刷写 sdcard? 对吧?

    2) 2)关于更新 OPP 表:我应该使用哪些相应的电压值? 我是指"op-microvolT"场。 如果电压也未根据频率进行调节、则功率值将完全不准确/相关。


    您能给我一个 OPP 表示例吗? 以下内容是否正确? 不过、我使用的电压值相同。 此外、不确定"opp-supported"十六进制字段和 opp-suspend。


                   opp_200@200000000{
                           opp-Hz =/bits/64 <200000000>;
                           op-microvolt =<1060000 850000 1150000>;
                           opp-supported-HW =<0xFF 0x01>;
                           opp-suspend;
                   };


                   opp_300@300000000{
                           opp-Hz =/bits/64 <300000000>;
                           op-microvolt =<1060000 850000 1150000>;
                           opp-supported-HW =<0xFF 0x01>;
                           opp-suspend;
                   };

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

    1)因此,我必须更新 opp 表,并使用"create-sdcard.sh"脚本重新刷写 sdcard? 对吗?[/报价]

    您必须更新 DTS 文件中的 opp 表并重新刷新 SD 卡中的结果 DTB 文件。 您可以手动执行此操作、也可以使用 create-sdcard.sh 脚本执行此操作

    2)关于更新 OPP 表:我应该使用哪些相应的电压值?

    从200MHz 到1000MHz、您应该使用对应于 OPP_NOM 的电压

    在1100MHz 至1176MHz 范围内、您应该使用与 OPP_OD 相对应的电压

    从1200MHz 到1500MHz、您应该使用对应于 OPP_HIGH 的电压

    [报价用户="kames">您能否向我提供 OPP 表的示例? 以下内容是否正确?

    [引用 user="kames"]

     opp_200@200000000{
                           opp-Hz =/bits/64 <200000000>;
                           op-microvolt =<1060000 850000 1150000>;
                           opp-supported-HW =<0xFF 0x01>;
                           opp-suspend;
                   };


                   opp_300@300000000{
                           opp-Hz =/bits/64 <300000000>;
                           op-microvolt =<1060000 850000 1150000>;
                           opp-supported-HW =<0xFF 0x01>;
                           opp-suspend;
                   };

    [/报价]

    我认为这些应该是:

    opp_nom@200000000{
                           opp-Hz =/bits/64 <200000000>;
                           op-microvolt =<1060000 850000 1150000>;
                           opp-supported-HW =<0xFF 0x01>;
                           opp-suspend;
                   };


                   opp_nom@300000000{
                           opp-Hz =/bits/64 <300000000>;
                           op-microvolt =<1060000 850000 1150000>;
                           opp-supported-HW =<0xFF 0x01>;
                           opp-suspend;
                   };

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

    您好、Pavel、

    非常感谢您的回复。 我更新了 DTS 文件并将生成的 DTB 文件刷写到 sdcard 中。 我现在可以访问较低的频率。 DTS 文件和我绘制的曲线(基准=位反转)位于以下链接中。 我使用 NI DAQ 测量 CPU 功耗、方法是测量电阻器 R34 (VDD_MPU、0.01欧姆)上的压降。


    drive.google.com/open

    我的问题:

    1) 1)功耗似乎在从1176MHz 到1200MHz 之间发生了重大跳变。 我了解电压已增加。 但对于现代 SoC 平台、您是否看到这种巨大的突然跳跃是否可行或正常? 这样做的动机是什么?

    2) 2)仅为了进行实验、平台是否允许我在整个频率范围(100MHz 至1500MHz)内保持相同的电压(标称值或高电平)? 这意味着、我可以在100MHz 至1500MHz 范围内保持"op-microvolt =<1210000 950000 1250000>"相同吗?

    3) 3)我是否正确地假设对于"op-microvolt =<1210000 950000 1250000>"、这些数字表示目标频率、最小频率和最大频率?

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

    卡姆斯、

    [引用 user="kames">我更新了 DTS 文件并将生成的 DTB 文件刷写到 sdcard 中。 我现在可以访问较低的频率。[/quot]

    您能否为您使用的每个频率(100MHz、200MHz、300MHz 等)提供以下寄存器值:

    CM_CLKSEL_DPLL_MPU/0x4A00516C

    CM_DIV_M2_DPLL_MPU/0x4A005170

    如何验证您使用的每个频率的电压值是否正确? 您是否监控/sys/class/regulator/regulator.3/microvolts?

    [引用 USER="Kames]1)功耗似乎在1176MHz 到1200MHz 之间有一个重大的飞跃。 我了解电压已增加。 但对于现代 SoC 平台、您是否看到这种巨大的突然跳跃是否可行或正常? 这样做的动机是什么?[/引述]

    我会检查这个、并在我有东西时返回给您。

    [报价 USER="Kames]2)仅为了实验、平台是否允许我在整个频率范围(从100MHz 到1500MHz)内保持相同的电压(标称值或高电平)? 这意味着、我能否在100MHz 至1500MHz 范围内保持"op-microvolt =<1210000 950000 1250000>"相同?

    是的。 您可以对 opp_od 和 opp_nom 频率使用 opp_high 电压电平。

    [引用 USER="Kames]3)我是否正确地假设对于"opp-microvolt =<1210000 950000 1250000>"、这些数字表示目标频率、最小频率和最大频率?

    是的。 如需更多信息、请参阅 AM572x DM、表5-7和表注(5)

    此致、
    帕维尔

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

    [引用 USER="Kames]1)功耗似乎在1176MHz 到1200MHz 之间有一个重大的飞跃。 我了解电压已增加。 但对于现代 SoC 平台、您是否看到这种巨大的突然跳跃是否可行或正常? 这样做的动机是什么?[/引述]

    功耗也取决于用例。 例如、在 OS 空闲用例中、MPU OPP_OD 的功耗为2433.7mW、MPU OPP_HIGH 的功耗为2679.1mW。 在 Dhrystone 单核使用案例中、在 MPU OPP_OD 时、我们具有3514.6mW;在 MPU OPP_HIGH 时、我们具有4194.7mW。

    请参阅以下 wiki 页面:

    processors.wiki.ti.com/.../AM57xx_Power_Consumption_Summary

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

    >>您能否为您使用的每个频率(100MHz、200MHz、300MHz 等)提供以下寄存器值:
    >> CM_CLKSEL_DPLL_MPU/0x4A00516C
    >> CM_DIV_M2_DPLL_MPU/0x4A005170

    很抱歉、如何从命令行(或 shell 脚本中)检查这些寄存器的值?

    >>如何验证您使用的每个频率的电压值是否正确? 您是否监控/sys/class/regulator/regulator.3/microvolts?

    我没有验证它。 我刚才验证了频率的变化、并且运行基准所花费的时间也与频率相符。 但是、就在我运行脚本时执行"watch -n 0.1 cat /sys/class/regulator/regulator.3/microvolts "时、它会显示一个常数3300000。 您能否确认我们必须监控的稳压器是否为稳压器3?

    我还应该补充的是、在将基准与任务集固定在一起之后、我只在一个内核(CPU0)上运行基准测试。 第二个 CPU 暂时不执行任何操作。

    此外、当我监控"cat /sys/class/regulator/regulator.5/microvolts 时、我会得到以下内容。

    100M - 1G:980000

    1G - 1.176G:1090000

    1.2G - 1.5G:1230000

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

    [报价用户="Kames">>>您能否为您使用的每个频率(100MHz、200MHz、300MHz 等)提供以下寄存器值:
    >> CM_CLKSEL_DPLL_MPU/0x4A00516C
    >> CM_DIV_M2_DPLL_MPU/0x4A005170

    很抱歉、如何从命令行(或 shell 脚本中)检查这些寄存器的值? [/报价]

    您可以使用 devmem2用户空间工具。

    [引用 user="kames">但现在、当我运行脚本时执行"watch -n 0.1 cat /sys/class/regulator/regulator.3/microvolts "时、它会显示一个常数3300000。 您能否确认我们必须监控的稳压器是否为稳压器3?

    我会检查并返回给您。

    [引用 user="kames">我还应添加一个内容、即在将基准与任务集固定在一起后、我仅在一个内核(CPU0)上运行基准测试。 第二个 CPU 暂时不执行任何操作。

    检查"Dhrystone - Single Core"(Dhrystone -单核)-在此测量中、Dhrystone 基准测试应用正在单个 Coretex-A15内核上运行。 在 Dhrystone 单核使用案例中、在 MPU OPP_OD 时、我们具有3514.6mW;在 MPU OPP_HIGH 时、我们具有4194.7mW

    此致、
    帕维尔

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

    [引用 user="kames"]

    此外、当我监控"cat /sys/class/regulator/regulator.5/microvolts 时、我会得到以下内容。

    100M - 1G:980000

    1G - 1.176G:1090000

    1.2G - 1.5G:1230000

    [/报价]

    是的、看起来应该使用调节器5。 在我的 AM572x TI EVM 上、我有:

    1000MHz:1010000 (1.01V)

    1176MHz:1030000 (1.03V)

    1500Mhz:1190000 (1.19V)

    此致、
    帕维尔

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

    非常感谢 Pavel 的确认。 我今天做了一个实验、将整个频率范围的电压固定为 OPP_HIGH。 功率曲线没有像我之前发送的曲线那样具有巨大的跳变(从1176MHz 到1200MHz)。

    可以在能量图中看到一个有趣的现象。 我正在调查 CPU 的最小能量点的存在(之前的文献也存在;请参阅下面的链接)。 也就是说、存在一个频率点、其中程序运行的 CPU 能耗最小。 这意味着、如果性能不是问题、那么我们可以在最小的点运行 CPU 以节省能源。 如您在我在下面的链接中绘制的曲线中所见(能耗图的 U 形部分)

    drive.google.com/.../0BzoIenLKgsD5RjFRTzYyQjRoYTA

    我将较低频率下的能耗增加归因于漏电功率的增加。 你同意吗? 除了泄漏功率之外、还有其他因素吗?

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

    此 SoC 的最大功耗取决于终端系统的特定使用条件。

    有关泄漏和其他因素的更多信息、请参阅 AM572x TRM 的第3章"电源、复位和时钟管理"

    此致、
    帕维尔