2010-04-23 32 views
9

我正在嘗試查找各種​​操作需要大約多少個CPU週期的參考。用於各種操作的CPU週期大概

我不需要確切的數字(因爲這在CPU之間會有所不同),但我想要一些相對可信的東西,這些東西給出了我可以在與朋友討論時引用的球形數字。作爲一個例子,我們都知道浮點除法需要更多的CPU週期而不是做一個bitshift。

我猜測不同的是,這個分區大約是100個週期,其中一個移位是1,但我正在尋找一些引用來支持它的東西。

任何人都可以推薦這樣的資源嗎?

+2

哪個處理器? – nos 2010-04-23 23:10:01

回答

1

這將取決於硬件。最好的辦法是在你想測試的特定硬件上運行一些基準測試。

基準測試會去大致是這樣的:

  • 運行一個基本操作一百萬次(比如說,增加了兩個整數)
  • 記錄需要運行的時間(比方說,以秒爲單位)
  • 乘以您的機器每秒執行的週期數 - 這會給您花費的總週期數。
  • 將1000000除以前一步的數字 - 這會給你每個循環的指令數量。請記住,與流水線,這可能是小於1
3

對於x86處理器,見Intel® 64 and IA-32 Architectures Optimization Reference Manual,大概附錄C.

然而,這是不以任何方式容易找出多少個週期的指令需要在現代x86處理器上執行,因爲它太依賴於例如訪問緩存中的數據,對齊訪問,分支預測是否失敗,指令管道中是否存在停頓以及其他許多事情。

4

我做了一個小應用程序來測試這個。使用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的地方。