Je pensais que j'avais fait un post à ce sujet à un certain moment, mais après Googling autour, je suppose que je n'ai jamais fait. Il y avait un couple de discussions Twitter sur le sujet dans les derniers jours, alors j'ai pensé qu'il était utile de mentionner. Vous pouvez obtenir plus approfondie de détails sur ce sujet en regardant les deux vidéos OpenGL ES de la 2009 Vidéos Parlez Tech World Tour (Lien iTunes, nécessite la connexion avec le SDK iPhone en compte).
L'architecture ARM a quelque chose qui s'appelle Mode pouce (Ou juste le pouce). Maintenant, je ne suis pas un ingénieur hardware pour les personnes suivantes peuvent ne pas être à 100% techniquement exact, mais je crois comprendre que le mode pouce essentiellement utilise un sous-ensemble des opérations disponibles du processeur et passe deux opérations 16 bits dans l'espace d'une seule 32 opération de bits, permettant commandes envoyées à la CPU deux fois plus vite. Pour la plupart des applications, ce qui est excellent, et conduit à une amélioration de la performance globale.
Cependant, avec les jetons ARMv6 basée dans l'iPhone original, l'iPhone 3G, et la touche de première génération iPod ^ 1, mode pouce n'a pas eu accès aux processeurs vectoriels, d'opérations en virgule flottante de sorte contraint le processeur de convertir les deux 16 bits opérations du dos en deux opérations 32 bits, effectuer les calculs en virgule flottante, puis reconvertir le fonctionnement du pouce, ce qui signifie non seulement vous ne voyez pas une augmentation des performances, vous avez souvent vu une diminution spectaculaire de la performance avec le pouce sur le moment où écrit lourds code en virgule flottante, comme vous le feriez pour une application OpenGL ES.
La version de pouce dans ARMv7 qui est utilisé par la puce dans l'iPhone 3GS et qui est également utilisé par la puce A4 d'Apple et donc disponible sur l'iPad et l'iPhone 4, dispose d'un accès complet aux processeurs vectoriels, de sorte que vous pouvez obtenir l'avantage du pouce tout en faisant de grandes quantités d'opérations en virgule flottante, si vous voulez le pouce sur ces processeurs.
Par conséquent, si vous écrivez une application OpenGL ES, ou toute autre chose qui fait beaucoup d'opérations en virgule flottante, vous souhaitez utiliser conditionnelle paramètres de construction dans Xcode pour transformer "Compiler pour le pouce" ON et OFF pour ARMv7 pour ARMv6.
Vous pouvez ajouter conditionnelle construire des paramètres en sélectionnant le réglage de construire dans Xcode et en utilisant le bouton vitesse peu dans le coin inférieur gauche de la fenêtre Paramètres de construction. Si vous cliquez dessus, il ouvrira un menu, et l'une des options sera «Construire Ajouter conditionnelle Réglage", qui va ajouter une nouvelle subrow à ce paramètre. Sélectionnez "ARMv6" sur la colonne de gauche et utilisez la colonne de droite pour l'éteindre. Une fois que vous faites cela, votre demande sera construit comme un binaire graisse avec une version ARMv6 qui n'utilise pas le pouce, et une version ARMv7 du binaire qui le fait. Généralement, l'augmentation de la taille de l'application est relativement mineure par rapport à l'image de l'application et les ressources de son, et les gains de performance peuvent être considérables.
L'architecture ARM a quelque chose qui s'appelle Mode pouce (Ou juste le pouce). Maintenant, je ne suis pas un ingénieur hardware pour les personnes suivantes peuvent ne pas être à 100% techniquement exact, mais je crois comprendre que le mode pouce essentiellement utilise un sous-ensemble des opérations disponibles du processeur et passe deux opérations 16 bits dans l'espace d'une seule 32 opération de bits, permettant commandes envoyées à la CPU deux fois plus vite. Pour la plupart des applications, ce qui est excellent, et conduit à une amélioration de la performance globale.
Cependant, avec les jetons ARMv6 basée dans l'iPhone original, l'iPhone 3G, et la touche de première génération iPod ^ 1, mode pouce n'a pas eu accès aux processeurs vectoriels, d'opérations en virgule flottante de sorte contraint le processeur de convertir les deux 16 bits opérations du dos en deux opérations 32 bits, effectuer les calculs en virgule flottante, puis reconvertir le fonctionnement du pouce, ce qui signifie non seulement vous ne voyez pas une augmentation des performances, vous avez souvent vu une diminution spectaculaire de la performance avec le pouce sur le moment où écrit lourds code en virgule flottante, comme vous le feriez pour une application OpenGL ES.
La version de pouce dans ARMv7 qui est utilisé par la puce dans l'iPhone 3GS et qui est également utilisé par la puce A4 d'Apple et donc disponible sur l'iPad et l'iPhone 4, dispose d'un accès complet aux processeurs vectoriels, de sorte que vous pouvez obtenir l'avantage du pouce tout en faisant de grandes quantités d'opérations en virgule flottante, si vous voulez le pouce sur ces processeurs.
Par conséquent, si vous écrivez une application OpenGL ES, ou toute autre chose qui fait beaucoup d'opérations en virgule flottante, vous souhaitez utiliser conditionnelle paramètres de construction dans Xcode pour transformer "Compiler pour le pouce" ON et OFF pour ARMv7 pour ARMv6.
Vous pouvez ajouter conditionnelle construire des paramètres en sélectionnant le réglage de construire dans Xcode et en utilisant le bouton vitesse peu dans le coin inférieur gauche de la fenêtre Paramètres de construction. Si vous cliquez dessus, il ouvrira un menu, et l'une des options sera «Construire Ajouter conditionnelle Réglage", qui va ajouter une nouvelle subrow à ce paramètre. Sélectionnez "ARMv6" sur la colonne de gauche et utilisez la colonne de droite pour l'éteindre. Une fois que vous faites cela, votre demande sera construit comme un binaire graisse avec une version ARMv6 qui n'utilise pas le pouce, et une version ARMv7 du binaire qui le fait. Généralement, l'augmentation de la taille de l'application est relativement mineure par rapport à l'image de l'application et les ressources de son, et les gains de performance peuvent être considérables.
Aucun commentaire:
Enregistrer un commentaire