分析,如何避免VS pro 2008或2012RC中的FPU(硬件)并使用模拟FPU代码

时间:2012-06-26 10:36:04

标签: pc cortex-m3

我需要针对没有FP单元的 Cortex-M3 处理器优化一些代码。我对于优化领域是全新的。不过,我使用 VS 2012 Release Candidate 在我的电脑上进行本地编译代码( Intel Core i5 windows 7 as os)然后将它们移植到Cortex_M3.I尝试编写我的代码,使用尽可能少的浮点算术。但我仍然有一些。所以我知道当我将它嵌入Cortex_M3时,它将利用模拟的FPU代码(软件FPU )。由于我无法为cortex_m3进行分析,我在我的PC上使用VS2012(仪器方法)来验证哪些功能需要更多时间并且必须进行更优化。 我认为如果我不使用我的PC的FP单元,我的PC上的分析结果可以与COrtex_M3的结果成比例。 Visual Studio(2008 pro。或2012 RC)中是否有关键字或方法可以跳过(硬件)FP单元?

非常感谢您的见解

1 个答案:

答案 0 :(得分:1)

您的PC与Cortex M3的不同之处在于,在那里执行的优化不太可能具有任何相关性。一些差异:

  • PC可以在每个周期发出多条指令
  • PC每秒有几十亿次这样的周期而不是几千万次
  • PC可能比M3具有更多缓存
  • 正如您所见 - 浮点单位

M3是一个嵌入式处理器 - 如果您无法以传统方式进行分析,或者获得更好的工具集,以便可以,或者通过使用硬件定时器手动完成用于计时功能的设备。或者切换一些端口引脚并将示波器挂起 - 这是正确嵌入的:)

编辑:


可以在没有操作系统的情况下配置文件 - 更高端的嵌入式工具链可以检测代码,运行它并将结果拉回来进行后处理


还有其他硬件定时器,而不是看门狗。在最简单的级别,在执行某些任务之前编写一些函数来读取值,然后读取值,减去结果并将其打印出来。还可以完成更复杂的方案,记录许多迭代并跟踪统计信息等。


如果您有几个端口引脚,只需在要分析的功能之前设置一个,请在完成后将其清除。

使用4通道示波器,您可以一次看到4个代码段的执行时间(以及它们相对于彼此发生的时间,如果中断另一个,这可能很有用)。如果您有更多,请使用逻辑分析仪,您可以加载它们!

您还可以看到执行时间的抖动或变化,这可能是有益的。在角度变化的情况下尝试使用libc trig函数,你会发现在某些角度,sin / cos函数(例如)比其他角度更长时间运行。这可能是实时系统中的一个重要问题。