什么是PVTM?为什么你的瑞芯微RK3588 CPU可能达不到2.4GHz

原文链接:What is PVTM? Or why your Rockchip RK3588 CPU may not reach 2.4 GHz 由Jean-Luc Aufranc撰写。
本文共计 1672 字,预计阅读 4 分钟

虽然瑞芯微 RK3588 处理器宣称频率可以达到 2.4 GHz,但其实并非所有的 RK3588 芯片都可以达到这个频率。关键在于其 PVTM,即Process-Voltage-Temperature Monitor。本文我会解释为什么 PVTM (温度监视器)会有影响?为什么某些 RK3588 处理器的时钟频率只有 2.3 GHz 左右、有些处理器则在 2.4 GHz 下也可以正常运行?

其实这一切都源于 Rock 5B SBC 调试交流会,在上面我就注意到我们的开发板没有达到相同的频率。Willy Tarreau 指出,是因为我们开发板之间的“PVTM”值不同:

  • Willy 的开发板:(Cortex-A76 集群 1 @ 2,304 MHz,集群 2 @ 2,352 MHz)

  • CNXSoft 板(Cortex-A76 集群 1 @ 2,304 MHz,集群 2 @ 2,304 MHz):

  • Thomas Kaiser (tkaiser) 板:(Cortex-A76 集群 1 @ 2,400 MHz,集群 2 @ 2,400 MHz)


作为参考,CPU 0 到 3 是 Cortex-A55 内核,CPU 4-5 是两个 Cortex-A76 内核(集群 1),CPU 6-7 是两个 Cortex-A76 内核(集群 2)。上面报告的频率是内核报告的操作性能点(OPP)。不过,在 SBC-Bench.sh 脚本中实际测量的频率可能会有所不同:

  • CNXSoft板:

  • Thomas板


真正奇怪的是我们有不同的 OPP 频率。Thomas 的 Cortex-A76 内核频率被设置为 2,400 MHz,但实际测量值只达到了 2,348 MHz。不过,它仍然比在我的系统上测得的 2304 和 2,298 MHz 要好。

现在我们看看能否在瑞芯微 RK3588 TRM 和 SDK 中找到有关 PVTM 的更多详细信息。在 TRM 第 2 部分标题为“过程-电压-PVTM”的第 17 章中我的确找到了。

具有 apb_slv 的 PVTM 框图、具有 32 位总线宽度的 APB 接口和 PVTM 引擎
具有 apb_slv 的 PVTM 框图、具有 32 位总线宽度的 APB 接口和 PVTM 引擎

其技术参考手册中具体描述如下所示:

Process-Voltage-Temperature Monitor (PVTM) 可以用于监控由芯片工艺、电压和温度引起的芯片性能差异。
PVTM 支持如下所示的功能:

  • 集成了时钟振荡环,用于产生类时钟信号,该时钟的频率由时钟振荡环电路的单元延迟值决定
  • 计算逻辑用于测量时钟振荡环的频率
  • 支持跟随 PVTM 块:
    • BIGCORE0_PVTM,在 A76_0/1 附近使用
    • BIGCORE1_PVTM,在 A76_2/3 附近使用
    • LITCORE_PVTM,在 DSU 和 A55_0/1/2/3 附近使用
    • NPU_PVTM,在 NPU 附近使用
    • GPU_PVTM,在 GPU 附近使用
    • PMU_PVTM,在 PMU 附近使用

由上述看来,这就意味着不仅三个 CPU 集群(1x Cortex-A55 和 2x Cortex-A76)频率会受到 PVTM 的影响,GPU 和 NPU 频率也会受到影响。对于 PMU,它似乎主要用于低功耗模式下,作为 32KHz 时钟源的替代。该文档还进一步解释了有两种计算方法,即手动和自动:

时钟由振荡环产生,频率固定的时钟 clk_pvtm 用于计算时钟周期。假设时间周期 1s,则振荡环时钟的时钟周期 T= 1/clock_counter(s),单元延迟值 T/2。对于手动模式,用户只进行计算后只能得到一个频率结果
对于自动模式,用户可以设置计算次数,而且在计算过程中可以获得最大、最小和平均频率。它可以设置最小或平均频率低于阈值时产生中断。可以配置阈值。

每个芯片在制造过程中都会略有不同,有些可能可以达到 2.4 GHz,而有些则不能。对了,室温可能对性能也会有影响。我生活的位置在泰国北部,我的室温通常在 28°C 左右,所以我的板子在冬天早上处于的环境温度大约是 20°C,所以达到 2.4 GHz 并非不可能,但在一年的大部分时间里还是只能在 2.3 GHz 左右。

PVTM 可能需要与 PVTPLL (第 18 章提到)结合使用,“可以用于监控芯片工艺、电压和温度引起的芯片性能变化,并生成一组可用于调整芯片电压的参考信号。”

我也想在 Gitlab 上查看 RK3588 Linux SDK,但我才刚向瑞芯微获取查看权限,所以还需要一些时间等待批准。不过话虽如此,PVTM 其实并不是什么新鲜事物了,我在 2018 年撰写的一个针对 RK3288 处理器提交给主线 Linux 的补丁中也发现了它,但我现在才注意到。瑞芯微的 Linux CPUFreq 驱动程序文档中还提到了 PVTM,以及它如何分配 OPP 值:

瑞芯微的 CPUFreq 驱动程序尝试从 eFuse 读取泄漏值并从 pvtm 获取频率计数,然后向 OPP 框架提供prop信息该信息用在 OPP 框架解析时确定 OPPS 的 opp-microvolt-<name>属性这是基于操作点-v2,但驱动程序也可以创建cpufreq-dt平台设备从而与操作点兼容。

很多企业有时都会为具有相同功能但频率不同的芯片创建不同的零件编号,例如瑞芯微 RK3399K @ 2.0 GHz、RK3399 @ 1.8 GHz 和RK3399-T @ 1.5 GHz 就做到了这一点,但我们也可以看到不同瑞芯微 RK3588 处理器之间的细微频率差可能不足以让该公司对其重新命名,或许未来他们会因为出现太多频率不同的产品去编写不同的型号。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论