67 votes

Quels sont les avantages de armv7 sur armv6 lors de la compilation d'applications de l'iPhone?

S'il y a des avantages à tous les... ne pouvais pas trouver quelque chose de concluant dans les docs.

Apparemment armv7 est pour une version plus récente d'iOS... est-ce plus rapide? les plus petits? Mieux à X?

77voto

Brad Larson Points 122629

Les anciens appareils iOS (iPhone, iPhone 3G, de la première et de la deuxième génération de l'iPod touch) avait Processeurs pris en charge uniquement le armv6 jeu d'instructions. L'iPhone 3G S (et de l'iPad et de la troisième génération de l'iPod touch) a un nouveau processeur qui prend également en charge le jeu d'instructions armv7. En général, armv7 est plus rapide sur ces nouveaux processeurs et il est recommandé de l'inclure au moins un armv7 construire dans vos applications à l'avenir (dans un iPad application, vous pouvez probablement juste de construire pour armv7).

Comme Jasarien points de, la zone de plus grande différence entre les jeux d'instructions est dans les opérations à virgule flottante. Sur armv6, les applications ont tendance à être construit à l'aide de la réduction de la Manette de jeu d'instructions pour produire de plus petits fichiers binaires, mais de Pouce de performance en virgule flottante a été terrible. Par conséquent, vous avez besoin de désactiver le Pouce est tu voulais plus rapide des calculs en virgule flottante. Sur armv7, le Pouce-2 du jeu d'instructions de cette limitation n'existe plus, Apple vous recommande de le compiler avec presque tout le temps.

Vous pouvez faire le Pouce paramètre de construction conditionnelle de sorte qu'il est hors tension pour les appareils plus anciens, et pour les plus récents. Pour ce faire, accédez à votre Xcode construire des paramètres et sélectionnez le Compiler pour le Pouce en option. Allez dans le menu en bas à gauche de l'écran et choisissez l'Ajouter Build État de Réglage de l'option. Dans la nouvelle état de réglage, choisissez ARMv6 de l'architecture, de l'éteindre pour le Pouce, ajouter une autre condition, choisissez ARMv7 pour son architecture, et de l'activer pour le Pouce.

Selon Stephen la réponse de Canon ici, à la fois simple et double-precision floating-point operations sont pris en charge dans le matériel en armv6. J'ai trouvé que la simple précision arithmétique des performances légèrement mieux sur cette plate-forme, peut-être en raison de plusieurs opérations de montage dans le cache. Sur armv7, le SIMD NEON virgule flottante l'unité ne fonctionne que sur une seule précision des opérations, donc il peut y avoir une grande différence de performance entre simple et double précision des opérations.

D'autres questions qui pourraient être d'intérêt sur ce sujet sont les suivantes:

53voto

Jasarien Points 35353

L'une des plus grandes différences est que l'architecture armv6 a un support matériel pour la virgule flottante double précision arithmétique, tandis que armv7 ne fournit legacy support logiciel pour en virgule flottante double précision arithmétique.

Pour compenser, l'architecture armv7 a un "NÉON" unité qui fournit absolument rapide support matériel pour la simple précision arithmétique à virgule flottante.

C'est quelque chose que vous aurez besoin de prendre en compte si vous êtes en train de faire tout ce qui implique d'arithmétique à virgule flottante, si vous le faites en simple ou double précision. Si vous le faites en double précision, mais il ne faut pas nécessairement que le montant de précision, vous pouvez probablement obtenir un gain de performances significatif sur armv7 périphériques à l'aide de simple précision à la place.

Apple couvert un grand nombre de différences entre armv6 et armv7 et une introduction à l'Accélérer cadre dans l'une de leurs sessions de la WWDC de cette année. Les vidéos doivent toujours être disponible sur iTunes ( à compter de juillet '10).

4voto

Pierre Lebeaupin Points 729

Pour moi, les principaux avantages de ARMv7 sont:

  • pouce-2
  • NÉON

NÉON doit être explicitement codé pour que vous ne prenez pas avantage de celui-ci par simple recompilation, mais si vous pouvez investir le temps qu'il peut accélérer multimédia/jeux opérations par un facteur de 8. Cependant pouce-2 est à peu près libre de réduction de la taille du code, avec presque pas d'inconvénient (à l'inverse de pouce sur ARMv6, ce qui rend à virgule flottante code beaucoup plus lent par rapport aux BRAS de mode). Bien sûr, l'ajout d'une nouvelle version de votre exécutable dans ARMv7 ne permettra pas de réduire votre taille de l'exécutable, mais il permettra de réduire votre code dans la mémoire, caches, etc.

3voto

Alex Wayne Points 58113

Vous devez compiler pour les deux si vous voulez que votre application de fonctionner sur l'iPad et tous les iPhone/iPod toch modèles. Les appareils iOS âgées utiliser arm6 et de nouveaux utiliser arm7.

La seule raison de ne pas compiler pour l'un ou l'autre serait réduit la taille de l'application, car il ne nécessite qu'une seule version compilée du code. Mais à moins d'avoir une très grande base de code, cette taille de fichier différence sera assez marginal.

3voto

Alex Argo Points 2146

arm7 est plus optimisé pour l'iPod Touch (3e génération) et iPhone 3GS ou plus récent. Vous devez utiliser l'option "Standard/arm6+arm7' lors de la construction pour les appareils plus anciens. Dans la pratique, je n'ai pas vu beaucoup de différence de performances dans mes applications.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X