指令

2009-02-26 37 views
2

我有一個問題(就像我)的當量數...指令

但是......如果我用C或C++或任何代碼,你想要一個選定的算法...一個固定編譯器我可以確定指令的數量,但是這些指令是互不相同的:x ADD,y MUL,z MOV,f FADD,t FMUL(F代表FLOATING)...是否有一種方法或方程或其他許可在「等價指令」的編號中寫入指令的數量來比較不同的算法?有沒有人使用這種類型的指標?這是垃圾嗎?

感謝

馬爾科

第2部分: 我知道這dipends上起來的建築一般。我的問題是:確定在不同的軟核架構上實現的不同算法的執行時間。在y軸上,我必須寫出時間,在x軸上指令的數量和圖形的點由架構的類型參數化(請原諒我的英語)。但在x-axix上,我認爲最好使用類似「等效指令」數量的東西...

這是垃圾想法嗎?

回答

4

你不太明白這個問題。執行速度不僅取決於指令,還取決於指令間的依賴關係。微處理器可以同時執行幾條指令,因爲這些指令不依賴於彼此。一次執行多條指令的能力因處理器系列而異。這就是爲什麼這個任務真的是硬件特定的,它不能一勞永逸地解決。

所有你能做的就是繪製指令和處理器週期的執行時間線。處理器週期可以是y軸,指令可以是x軸。預測緩存命中和未命中以及許多指令的執行時間將因緩存命中/未命中而有很大差異。準備花費大量時間處理器手冊。

2

它將不得不考慮流水線和其他各種錯綜複雜的情況,其中許多因處理器而異。換句話說,即使可行,我也看不出它特別有用。

也有算法不能告訴你的東西,比如有多少緩存未命中等等 - 這些可能是比原始指令計數更重要。

+0

謝謝喬恩, 有沒有辦法來確定的固定算法的努力措施?但沒有像O(nlog(n))這是學術...感謝 – 2009-02-26 10:32:12

+0

不是我所知道的。我通常會發現「運行它並記錄時間」是最簡單的方法,並且工作得很好。 – 2009-02-26 10:34:34

+0

喬恩,有時可以預測緩存未命中。例如,如果你乘兩個大矩陣,你肯定知道檢索第二個矩陣的每一列會導致大量的緩存未命中,甚至可以評估這個成本。 – sharptooth 2009-02-26 11:25:09

0

這不是垃圾,它只是含糊不清。從算法到SOURCE代碼到對象COde到核心......要弄清許多細節,每個細節都可能有重大的性能影響。

看一看軒尼詩&帕特森的「計算機體系結構,一種定量方法」