gpt4 book ai didi

c - 使用普通 PC 确定 µController 的执行时间

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:15 24 4
gpt4 key购买 nike

我的 PC 上运行着一个 C 程序(我运行 Fedora 并使用 Eclipse)。现在我需要知道/猜测这段代码在 µController 上的执行速度。

我做了什么:
我的第一次尝试是使用 clock() 函数。但是这样我也计算了很多时间,我的操作系统正在做一些事情,比如加载一个库,分配内存。使用此方法测量的时间比所需的执行时间大几个数量级。

为了更准确,我告诉自己有关分析的信息。我安装并使用了 Perf。现在这告诉我,我的程序运行大约 20.000 个周期/样本。这可能意味着执行时间不到一毫秒,而不是使用上述方法测量的秒数。

我问自己:我的 PC 和 µController 在一个周期内可以处理多少条指令。作为第一个猜测,我看了一下 STM32F407IG 以及 µController 可以做什么。它有一个单精度浮点单元。因此我确保只使用 float (4 字节)而不使用 double ,因为它们会被软件模拟,这非常慢。我程序中的主要操作是 FFT。这应该由 µController 很好地处理,因为我有 DSP 指令(它们被用来允许有效地做像 FFT 这样的事情)。它还以 1.25 DMIPS/MHz 为基准。 (Dhrystone 2.1) 这表示,它可以很好地处理整数运算,并且在大多数情况下需要少于一个周期。

问题
µController 应该在大约或少于 20.000 个周期内处理我的程序是否正确?
我可以假设执行时间是周期除以频率吗?或者针对我的情况:20.000 周期/168 MHZ?
我只需要知道,这个粗略的猜测是否正确。我不会得到非常准确的时间,没关系。

提前致谢!

最佳答案

这不是一项简单的任务。

首先:您的 µC 可能与您的 PC 具有不同的架构和指令集。您的 PC 可以在 1 个周期内完成某些操作,而您的 µC 不能,而对于其他操作,您的 µC 可能表现得更好。您的 PC 处理器有不同数量的寄存器,您有 SSE 单元、 float 、硬件中的 CRC32 等。您的 µC 可能有不同的 DSP 单元等。

其次:您可能针对这两种不同的架构使用两种不同的编译器,它们也实现了特殊的优化。

第三:内存行为:与 µC 相比,您的 PC 拥有巨大的缓存。

要回答您的问题:要获得更可靠的估计,您需要在 PC 上安装指令集模拟器。在模拟器中,执行时间要慢得多,但您可以很好地了解您的程序需要执行多少指令。结合 µC 时钟速度和对程序的并行性和缓存命中率的估计,您可以估计它实际花费的时间。

长话短说,根据目标进行剖析。

关于c - 使用普通 PC 确定 µController 的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com