2009-04-26 9 views

Répondre

3

MMX est une instruction SIMD fixée pour x86. L'iPhone utilise un processeur ARM de sorte que vous ne pouvez pas utiliser MMX.

+1

Les processeurs ARM d'Intel prennent en charge MMX. Plus précisément: ils supportent une technologie nommée MMX: Intel a ajouté des instructions SIMD à leurs processeurs ARM et les a appelés "MMX" même s'ils n'ont rien à voir avec x86 MMX et ne sont en aucun cas compatibles. (Tout comme ils ont implémenté SMT dans le Pentium4 et CMT dans le Itanium et les ont appelés HyperThreading, même si SMT et CMT sont deux choses totalement différentes.) –

+4

Intel ne fabrique pas de processeurs ARM. Ils ont fait des processeurs StrongARM. –

0

Les ARM sont un peu configurables, donc, il est possible que l'ARM de l'iPhone n'ait pas . Quelqu'un qui est effectivement inscrit au programme pourrait être en mesure de répondre, si la NDA le permet.

Si vous avez quelque chose qui DOIT fonctionner, vous pourriez, je suppose, construire des bochs. Je suppose que vous voulez utiliser les instructions mmx pour la vitesse, et, évidemment, cela n'aidera pas beaucoup. Si vous avez un algorithme qui pourrait fonctionner lentement, mais vous ne pouvez pas l'inverser pour exécuter sans instructions mmx, les bochs pourraient résoudre le problème.

6

La réponse courte est non - MMX est une technologie Intel. La réponse la plus longue est que ARM prend en charge le Neon SIMD instruction set. C'est une architecture similaire à l'instruction MMX (c'est-à-dire qu'elle calcule vecors) mais elle n'est pas nécessairement la même. Librairies d'armement ARM pour vous aider à générer du code SIMD (en utilisant OpenMAX et les intrinsèques du compilateur GCC).

L'iPhone comprend un ARMv6KZ qui ne prend pas en charge les modèles NEON ultérieurs comprennent un Samsung S5PC100 qui est basé sur le noyau ARM Cortex-A8 et supporte Neon. De même, l'Apple A4 alimentant l'iPad est un SoC basé sur Cortex-A8.

+1

Et bien sûr, le temps passe, et maintenant les iPhone 3G et les iPod Touch de troisième génération non-8GB ont Neon (et probablement l'iPad aussi). –

+0

merci. Mise à jour du commentaire principal pour refléter cela. –

+1

le lien est cassé. –

3

Comme d'autres ont posté ici, MMX est la technologie Intel SIMD pour l'architecture x86. Donc non, l'iPhone ne supporte pas le MMX lui-même.

L'iPhone dispose d'un processeur ARM Coretex A8, en particulier le Samsung SoC S5PC100 qui fournit une extension SIMD connue sous le nom NEON (l'ARM équivalent à MMX).

Bien que cela ne soit pas explicitement documenté par Apple, la chaîne d'outils semble le supporter. Il y a des instructions pour NEON dans gcc, donc vous devriez être capable d'écrire du code SIMD en utilisant NEON.

Notez que cette fonctionnalité est spécifique au 3GS, donc n'est pas rétrocompatible. Vous devez vous assurer que votre application a été signalée pour indiquer qu'elle nécessite le 3GS (je ne pense pas que vous puissiez accéder aux registres d'état pour la détection de l'exécution).