手臂裸金属系统CPU使用率测量

CPU usage measurment on arm bare metal system

本文关键字:CPU 使用率 测量 系统 金属      更新时间:2023-10-16

我在ARM cortex M4评估板上工作,它是一个bare metal应用程序,上面没有运行任何操作系统。

现在我想测量给定过程/算法的CPU使用情况,最好的方法是什么?

我是否应该实现一个操作系统来衡量具有满足这种需求的功能的CPU使用情况?

这个问题几乎可以自己回答。当裸金属应用程序不在该过程/算法中时,它在做什么?测量其中一个或另一个或两者。如果你有一个裸机应用程序,在这个算法中没有完全消耗cpu,那么你已经有了一个操作系统,可以管理这个应用程序/函数的时间。您可以使用循环中相对于计时器的简单计数器中的许多方法来查看当算法获得时间片与否时,每个循环有多少计数。你可以简单地对算法本身计时,等等。

我认为当你说CPU时,你指的是整个系统,因为你的性能在很大程度上取决于你的代码和它所说的内容(当算法不是烧录时钟时,很容易对算法的处理器性能产生错误的看法)。缓存会屏蔽/操纵性能,如果您不小心并意识到它们在做什么,则很容易对性能产生很大影响。作为一个C++问题,编译器在性能和代码中都扮演着重要角色。当然,只需对命令行或代码进行最小的更改,就可以很容易地使代码运行速度提高或降低几倍。

如果算法是isr的一部分,那么处理器就会进入睡眠状态,否则,你可以使用gpio引脚和范围技术来了解运行与睡眠的比例。

实现一个操作系统来测量CPU的空闲时间对我来说似乎有点过头了。据我所知,Cortex-M4包括一个调试单元(DWT),允许您快照周期计数器。但最简单的方法是将一个引脚挂在示波器上,并在算法的输入和输出时切换。

首先,实现一个操作系统是不切实际的,甚至不可能仅仅为了衡量性能。因此,一种可能的方法是保留一个计数变量,该变量将记录在该持续时间之前发生的滴答次数。并在定时器的中断中增加该变量。