2009-10-26 27 views
47

我剛剛聽說iPhone不能做雙本機,從而使它們慢得多,正常浮動。雙vs浮在iPhone上

這是真的嗎?證據?

我對這個問題很感興趣,因爲我的程序需要高精度的計算,而且我將不得不在速度上妥協。

回答

71

iPhone可以在硬件中進行單精度和雙精度算術運算。在1176(原始iPhone和iPhone3G)上,它們的運行速度大致相同,不過您可以在緩存中容納更多的單精度數據。在Cortex-A8(iPhone3GS,iPhone4和iPad)上,單精度算法是在NEON單元上完成的,而不是VFP,而且速度更快。

如果您正在進行密集的浮點計算,請確保在armv6的編譯設置中關閉拇指模式。

+0

我很想知道你從哪裏得到的信息。 – 2009-10-26 02:26:40

+1

@Ben:也許他只是知道它,但如果你檢查我的文章,鏈接提供了完全的信息,谷歌返回關於這個問題更多的點擊。 – Abel 2009-10-26 02:34:22

+24

體系結構參考手冊(在這種情況下從ARM免費提供),反彙編程序(otool)和仔細編寫的時序循環足以獲得有關幾乎所有架構的信息。 – 2009-10-26 02:54:01

10

ARM1176JZF-S手冊說它支持雙精度浮點數。你應該狀態良好。這裏是PDF文檔的link。後來的iPhone都是Cortex芯片,當然不應該不那麼強大。

12

This slide show給出洞察爲什麼沒有良好的浮點以及爲什麼存在(矢量浮點單位)。顯然,檢查影響浮點支持是否開啓的「拇指模式」很重要。這並不總是一個改進。它顯示瞭如何在彙編代碼中找到正確的指令。

這也取決於你想要運行你的代碼的what version of the phone。最近一次做浮點數學似乎「更有能力」。

編輯:這是有關VGP和NEON SSE的ARM上floating point optimizations的有趣閱讀。