使用硬件性能计数器是个好主意吗

Posted

技术标签:

【中文标题】使用硬件性能计数器是个好主意吗【英文标题】:Is using hardware performance counters a good idea 【发布时间】:2011-09-05 20:47:14 【问题描述】:

假设我想实现一个软件,该软件使用硬件性能计数器,例如用于计算退休商店的那些。请注意,没有性能计数器的替代解决方案是可能的,但效率可能相对较低。但是,为了便携性和电源效率,我可以牺牲一些性能。另请注意,性能计数器将始终保持打开状态。

硬件性能计数器在功耗方面的表现如何。其次,是否有没有性能计数器的流行平台或处理器,单核或多核。如果是这样,你能说出他们的名字吗?

【问题讨论】:

您通常不会打开硬件性能计数器。它们就在那里,您可以选择阅读(或不阅读)。读取它们的成本与读取专用寄存器的成本相同(最多几个周期)。 i486 和以前的 IA32 处理器在性能计数器方面并没有多少;我不知道这算不算“流行”。 您对 x86 感兴趣吗?在 ARM 中?在 MIPS 中? 【参考方案1】:

PAPI 是一个通用的分析器程序,它允许您编译成代码并访问硬件计数器。根据我自己的经验,它对性能没有明显影响。

虽然我不确定,但我认为它不会增加功耗,因为硬件计数器总是在硬件中启用。这只是阅读它们的问题。

据我所知,我不知道有任何现代非嵌入式处理器没有性能计数器。我可能错了。有人愿意纠正我吗?

【讨论】:

嵌入式的呢?有什么想法吗? 我对嵌入式处理器知之甚少。但考虑到它们的本质(小、低功耗),它们并不总是为了性能,因此并不总是有性能计数器。【参考方案2】:

自从我使用性能计数器以来已经有一段时间了,但也许PAPI 可以帮助您解决一些问题。

【讨论】:

以上是关于使用硬件性能计数器是个好主意吗的主要内容,如果未能解决你的问题,请参考以下文章

计数器表的简单使用

在 django 生产中记录所有 sql 查询是个好主意吗?

Jetpack compose - 将所有物品放入 LazyColumn 是个好主意吗?

将规范化表与非规范化索引视图一起使用是个好主意吗?

将数据库中的所有数据存储到redux存储中是个好主意

使用私有继承隐藏实现是个好主意吗?