2010-05-20 68 views
3

我必須接近PowerPC和x86彙編代碼的執行時間。我明白,我無法準確計算它取決於許多問題(當前處理器狀態 - x86處理器在微指令中竄改內部指令,內存訪問時間從緩存中獲取代碼等等。)。如何指定x86和PowerPC指令的執行時間?

我在英特爾優化參考(附錄C)中找到了一些信息,但它沒有提供有關所有通用指令的信息。有沒有關於它的完整參考?

PowerPC處理器怎麼樣?我在哪裏可以找到這樣的信息?

回答

1

這必須是非常困難的一個現代化的,通用的,沒有操作系統或者控制執行環境極​​其緊密,或作出假設不會是真的,至少在某些時候做。例如:如果某個硬件資源由於一個非常飢餓的競爭進程或多個競爭進程而過載,那麼執行給定代碼所用的時間將取決於操作系統能夠在多大程度上共享過載資源競爭過程。即使操作系統可以完全公平地共享資源,你必須要能夠限制競爭的過程,以確定一個有限的時間限制數量。

2

PowerPC有很好的文檔記錄,但它取決於你在談論哪個處理器。 IBM爲970(G5)做了一個相當不錯的手冊。當談到微架構的細節時,英特爾就不那麼容易了。

儘管如此,你想要做的事情非常棘手。 x86和PowerPC都是超標量的 - 它們有多個執行單元和流水線,所以它不像以前那樣每個時鐘週期可以執行一條指令。例如,PowerPC 970在任何時候都可以有215條「飛行中」指令。理想情況下,如果要測量小部分代碼的精確循環計數,則需要模擬器。

1

現代處理器花費大部分時間等待內存,或者在等待當前線程的內存時查找內容。

我想你應該儘量優化你的內存使用。

1

你必須做一個非常嚴格的分析。考慮到所有的緩存,對齊,流水線,時間片等等,等等。x86甚至每個指令都有硬時鐘週期嗎?根據CPU手冊的建議,最好只編寫優化的代碼速度。