2009-02-11 80 views
0

我有一个很大的问题。我的老板对我说,他想要两个“魔术黑盒子”: 1-接收像输入,返回等微处理器的东西,比如输出,MIPS和/或MFLOPS。 2-接受像输入和返回之类的c代码的东西,就像输出一样,它可以表现代码的性能(类似于uP必须在一段时间内执行代码所必需的MIPS)。当源代码不可用时,什么是良好的性能分析工具?

因此,我认为第一个“黑匣子”可能成为EEMBC或SPEC的基准......不同的uP,相同的基准,返回每个uP的MIPS/MFLOPS。第一个问题是(我希望)

但第二个......第二个黑匣子是我的噩梦......我发现的唯一的东西是使用分析工具,但我要求一个特定的分析工具。 有没有人知道一个剖析工具,它可以像输入一样,具有简单的c代码,并且给出了我的c代码的性能特征(或某些汇编指令被调用的时间)(如输出)?

真正的问题是,我们必须选择正确的uP代码...但是我们想要为我们的c代码量身定制uP ...所以如果我们知道MIPS(以及uP的体系结构,内存结构...),哪些需要

感谢大家我们的代码

回答

0

我不得不同意亚当,尽管我会对它更亲切。编译器优化只适用于热点代码,即a)不调用函数的紧密循环,以及b)占用大部分时间。

从积极的方面,这里是我建议:

  • 的处理器上运行的C代码,任何处理器。在那个处理器上,找出花费最多的时间。

您可以使用一个探查器。我更喜欢的简单方法是在调试器下运行它,并手动停止它,一些次数(如10),每次写下调用堆栈。我想代码中有一些东西占用了很多时间,比如50%。如果是这样,你会看到它在大致样本百分比上做这件事情,所以你不必猜测它是什么。

  • 如果该活动是某些特殊处理器可以提供的帮助,请尝试使用该处理器。

重要的是不要猜想。如果你说“我认为这需要一个DSP芯片”,或者“我认为它需要一个多核芯片”,这是一个猜测。猜测可能是对的,但可能不是。可能是这种情况,最耗时的是你永远不会猜到的东西,比如内存管理或者I/O格式。性能问题非常擅长躲避你。

0

号如果有人做了一个工具,可以分析(非平凡)的源代码,并告诉你它的性能特点,这将是共同的地方。即每个人都会使用它。

在为特定目标架构编译源代码之前,您将无法确定其整体性能。例如,一个针对n个处理器的并行编译器可能会将O(n^2)算法更改为O(n)之一。

+0

亲爱的米奇小麦, 感谢这么多, 但我会做一个新的问题... 当我看了分析工具我见过SIMICS ...你呢?我认为这个工具可以很好地获得有关不同uP性能的信息......你认为samwe与否? 在此先感谢 Marco – 2009-02-11 14:45:33

0

你不会找到一个工具来做你想做的。

您唯一的选择是交叉编译代码并在模拟器上对您正在运行的体系结构进行配置。分析高级代码的问题是编译器会产生一堆不重要的优化,您需要知道特定编译器是如何做到这一点的。

这听起来很愚蠢,但为什么你想让你的代码适合你的代码的uP和uP?如果你正在写信号处理购买一个DSP。如果您正在构建一个SCADA箱,那么请考虑Atmel或ARM的东西。您正在用用户界面构建一个通用设备吗?看看PPC或X86兼容的东西。

简而言之,选择一个适合的血腥架构,并提供您所需的功能。选择处理器之前的优化被推迟(非常粗略地解释Knuth)。

将体系结构固定在一个大致合适的东西上,粗略地计算出处理需求(您可以通过手工抓取估计值,这在查看C代码时总是会过高)并购买uP来匹配。

相关问题