2009-02-11 32 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來匹配。

相關問題