我正在嘗試查找各種操作需要大約多少個CPU週期的參考。用於各種操作的CPU週期大概
我不需要確切的數字(因爲這在CPU之間會有所不同),但我想要一些相對可信的東西,這些東西給出了我可以在與朋友討論時引用的球形數字。作爲一個例子,我們都知道浮點除法需要更多的CPU週期而不是做一個bitshift。
我猜測不同的是,這個分區大約是100個週期,其中一個移位是1,但我正在尋找一些引用來支持它的東西。
任何人都可以推薦這樣的資源嗎?
我正在嘗試查找各種操作需要大約多少個CPU週期的參考。用於各種操作的CPU週期大概
我不需要確切的數字(因爲這在CPU之間會有所不同),但我想要一些相對可信的東西,這些東西給出了我可以在與朋友討論時引用的球形數字。作爲一個例子,我們都知道浮點除法需要更多的CPU週期而不是做一個bitshift。
我猜測不同的是,這個分區大約是100個週期,其中一個移位是1,但我正在尋找一些引用來支持它的東西。
任何人都可以推薦這樣的資源嗎?
這將取決於硬件。最好的辦法是在你想測試的特定硬件上運行一些基準測試。
基準測試會去大致是這樣的:
對於x86處理器,見Intel® 64 and IA-32 Architectures Optimization Reference Manual,大概附錄C.
然而,這是不以任何方式容易找出多少個週期的指令需要在現代x86處理器上執行,因爲它太依賴於例如訪問緩存中的數據,對齊訪問,分支預測是否失敗,指令管道中是否存在停頓以及其他許多事情。
我做了一個小應用程序來測試這個。使用synthmaker免費版非常近似的應用... e
爲空,數字非常約週期
divide|e:115|10
mult|e: 48|10
add|e: 48|10
subs|e: 50|10
compare>|e: 50|10
sin|e:135:10
在循環分析器大相徑庭從50到100,通常是單或雙預期量的讀數,這些數字代表平均值,循環分析器是一個非常粗糙的工具,但它給出了公平的結果,一個解決方法的用戶在ASM中進行了指數編碼,計算出音頻速率下的exp和base,例如大約800個循環,所以我說上面的數字接近至少50%。我認爲這個鴻溝是更多的!這似乎是約兩倍。如果你想讓我用SM免費版運行的文件郵寄給我,我將保存一個exe,這就是爲什麼我這樣做,但你不能保存在免費版本愚蠢的我!我不打算從版本1.17中的方形代碼:/ ant.stewart在yahoo dotty com的地方。
哪個處理器? – nos 2010-04-23 23:10:01