2013-03-02 31 views
4

雖然我知道(所以我被告知)浮點協處理器的工作速度比任何浮點算法的軟件實現都快,但我完全沒有感覺到這種差異有多大。數量級。FPU與軟件仿真的性能比較

答案可能取決於微處理器和超級計算機之間的應用程序和工作地點。我對計算機模擬特別感興趣。

你能指出這個問題的文章或論文嗎?

+0

通常在1到3個數量級之間,取決於操作。 – 2013-03-02 12:03:09

+0

基於目標處理器的整數功能和性能,浮點仿真的性能差別很大。快速整數乘法對於劃分,平方根等的良好性能至關重要。最近的一個例子是FLIP庫,http://flip.gforge.inria.fr/針對VLIW CPU。表現數據和相關論文的鏈接從上述URL鏈接。 – njuffa 2013-03-03 21:58:30

+1

一篇稍微陳舊的論文:Cristina Iordache和Ping Tak Peter Tang,英特爾XScale架構上的浮點支持和數學庫概述,Proceedings IEEE Symposium on Computer Arithmetic,第122-128頁,2003年。對於您可以自己定製的示例仿真代碼,請查看我在回覆此問題時發佈的單精度相互代碼:http://stackoverflow.com/questions/9011161/how-to-implement-floating-point-division -in-二進制與-NO-師硬件和/ 9049376#9049376 – njuffa 2013-03-03 22:50:20

回答

4

一般的答案顯然非常模糊,因爲性能取決於如此多的因素。然而,根據我的理解,在沒有在硬件中實現浮點(FP)操作的處理器中,軟件實現通常會慢012到10倍到100倍(或者更糟糕的是,如果實現不好)而不是整數操作,這些操作始終以CPU上的硬件實現。

確切的性能取決於許多因素,如整數硬件的功能 - 某些CPU缺少FPU,但其整數算法中的功能有助於實現FP計算的快速軟件仿真。

njuffa,Cristina Iordache and Ping Tak Peter Tang, An Overview of Floating-Point Support and Math Library on the Intel XScale Architecture提到的論文支持這一點。對於Intel處理器XScale列表爲延遲(節選):

integer addition or subtraction: 1 cycle 
integer multiplication:   2-6 cycles 
fp addition (emulated):   34 cycles 
fp multiplication (emulated):  35 cycles 

因此,這將導致整數和FP算術約10-30的一個因素。該文件還提到,GNU實現(GNU編譯器默認使用的實現)大約慢了10倍,這是100-300的總因子。

最後,請注意,以上是編譯器編譯到程序中的FP仿真爲的情況。一些操作系統(例如Linux和WindowsCE)在OS內核中也具有FP仿真。其優點是即使沒有FP仿真(即使用FPU指令)編譯的代碼也可以在沒有FPU的情況下運行 - 內核將透明地仿真軟件中不支持的FPU指令。然而,由於額外的開銷,這種仿真甚至比編入程序的軟件仿真更慢(大約是另一個因子10)。顯然,這種情況只與一些處理器具有FPU的處理器體系結構有關,有些則不具有(例如x86和ARM)。

注意:該答案比較(模擬)FP操作與同一處理器上的整數操作的性能。你的問題也可能被認爲是關於(模擬)FP操作與硬件FP操作相比的性能 (不確定你的意思)。然而,結果大致相同,因爲如果FP在硬件中實現,它通常(幾乎)與整數操作一樣快。