2012-02-22 73 views
17

我想了解更多Android手機上使用的CPU。原因是我們正在構建具有特定CPU /數學處理器體系結構標誌的C庫,我們可以設置它們。Android的ARMv6/v7和VFP/NEON

  1. 到目前爲止,我們已經發現,所有的Android設備的CPU是ARM設計的,可以是的ARMv6(舊設備,低端,華爲,中興,小SE)或的ARMv7(蜂窩片和所有更昂貴的設備,幾乎所有的分辨率WVGA和更高)我檢查了~20個設備,都有這種類型的處理器。那是對的嗎?還有其他人嗎?

  2. 現在,當涉及到多媒體和數學運算,我認爲兩個單位都重要 - VFP的浮點運算和SIMD - NEON。在測試了上述設備組之後,我發現VFP支持幾乎在所有設備中,而NEON則不支持。對此有何評論?

  3. 我不知道ARMv6和ARMv7的區別究竟是什麼(除了一般的速度)。現在我們正在建造一個多媒體C庫,其中有幾個建築用的標誌。我的問題是如何針對一方面最大數量的設備以及如何讓更好設備的用戶使用他們的硬件。我的建議是準備3個不同的版本:ARMv6/VFP,ARMv7/VFP和ARMv7/VFP/NEON。其他建議?

  4. 的ARMv6/VFP我認爲應該對所有配置下運行,除了設備,其缺少VFP(例如舊的HTC野火) - 但這些仍然不支持的。

這是一個很好的方法嗎?任何意見都歡迎。

問候, 斯登

回答

12
  1. 這是正確的。目前有兩種類型 - ARMv6和ARMv7。最有可能在不久的將來還會有x86目標。最新的NDK已經支持它的構建。

  2. VFP在ARMv7上是強制性的,但在ARMv6上是不可用的。 NEON是可選的,並不是所有的設備都支持它。最明顯的例子是Nvidia Tegra 2.它被部署在大多數高端平板電腦和手機上,但它不支持NEON。 Nvidia Tegra 3支持NEON。

  3. 我認爲你應該堅持使用浮點模擬,ARMv7 + VFP,ARMv7 + NEON的ARMv6。

  4. 準確地說 - 所有ARMv6設備都不支持VFP。所以不要在那裏使用它。默認情況下,NDK構建用於ARMv6設備的armeabi目標,並且不使用VFP。 armeabi-v7a爲ARMv7構建並使用VFP。

4

這是真的,大部分的Android設備落入這三類:

1)的ARMv6

2)的ARMv7

3)的ARMv7 + NEON

的NDK完全不支持這一點。沒有ARMv6的ABI構建目標,只有兩個由NDK支持ARM構建目標:

1)的ARMv5(這將在所有的Android ARM設備上運行)

2)的ARMv7(用VFP的可選使用和NEON)

由此產生的限制是,如果要使用ARMv6指令(來自C或ASM代碼),則需要將NDK中的ARMv7 ABI作爲目標。

7

我專注於v7。

幾乎沒有任何新產品隨附於v6,並且在您的圖書館準備好生產時,v6將不會成爲問題。

這裏有一些信息: - 霓虹燈總是包含VFP - 的Coretex A8可以擁有兩種霓虹燈或無 - VFP的A8上的霓虹燈實際上是VFP-精簡版這是一個相當慢了很多。比V6的VFP慢得多。 - Coretex A9及以上版本可具有霓虹燈,VFP或無。 - V7有許多增強的指令,非常適合除了雙重問題能力之外的數學運算。芯片供應商可以省略Neon甚至VFP,但他們無論如何都要向ARM支付相同的許可費。他們只會在製造成本方面節省很少。霓虹燈在能力上非常強大,但不能做到雙精度。 - 除了無線Tegra的那些,沒有基於v7的Android手機對我來說是未知的霓虹燈。 (原因如上) - Tegra3的確有霓虹燈