2009-04-26 137 views

回答

3

MMXSIMD指令集的x86。 iPhone使用ARM處理器,因此您不能使用MMX。

+1

英特爾的ARM處理器支持MMX。更確切地說,他們支持一種名爲MMX的技術:英特爾向其ARM處理器添加了SIMD指令,並稱其爲「MMX」,儘管它們與x86 MMX無關並且完全不兼容。 (就像他們在安騰的Pentium4和CMT中實現了SMT一樣,並稱它們都是超線程技術,儘管SMT和CMT是完全不同的兩件事)。 – 2009-04-26 21:43:46

+4

英特爾不製造ARM處理器。他們製造了StrongARM處理器。 – 2009-05-02 05:58:33

0

ARM有點可配置,所以有可能iPhone的ARM沒有 這個。如果NDA允許,那麼實際註冊該計劃的人可能會回答, 。

如果你有什麼必須工作,你可以,我猜,建立bochs。我的猜測是,你想使用mmx指令來提高速度,顯然,這對整個系統都沒有幫助。如果你有一些運算速度可能會慢一些的算法,但是,你不能將它逆向工程到 沒有mmx指令運行bochs可能會解決這個問題。

6

簡短的回答是否定的 - MMX是一種英特爾技術。較長的答案是ARM支持Neon SIMD instruction set。它與MMX指令相似(即它計算vecors),但它明顯不一樣。 ARM船庫以幫助您生成SIMD代碼(使用OpenMAX和GCC編譯器內在函數)。

iPhone包括一個ARMv6KZ,它不支持NEON,後來的型號包括基於ARM Cortex-A8內核的Samsung S5PC100,並支持Neon。同樣,爲iPad供電的Apple A4是基於Cortex-A8的SoC。

3

正如其他人在此發佈的一樣,MMX是x86架構的英特爾SIMD技術。所以不,iPhone不支持MMX本身。

iPhone採用ARM Coretex A8 CPU,具體來說是Samsung SoC S5PC100,它提供了一個名爲NEON(相當於MMX的ARM)的SIMD擴展。

儘管這還沒有被Apple明確記錄,但工具鏈似乎支持它。在gcc中有NEON的instrinsics,所以你應該可以使用NEON編寫SIMD代碼。

注意,此功能是特定於3GS,所以不向後兼容。您需要確保您的應用已被標記以表明它需要3GS(我認爲您不能訪問用於運行時檢測的狀態寄存器)。