Mike Ash dédié sur son blog les implications pratiques du passage à l'architecture 64 bits dans l'iPhone 5S. Cet article s’appuie sur ses conclusions.
La raison de ce texte est principalement due à la grande quantité de fausses informations diffusées sur ce que le nouvel iPhone 5s doté d'un processeur ARM 64 bits signifie réellement pour les utilisateurs et le marché. Nous essaierons ici d'apporter des informations objectives sur les performances, les capacités et les implications de cette transition pour les développeurs.
"64 bits"
Il y a deux parties d'un processeur auxquelles l'étiquette "X-bit" peut faire référence : la largeur des registres entiers et la largeur des pointeurs. Heureusement, sur la plupart des processeurs modernes, ces largeurs sont les mêmes, donc dans le cas de l'A7, cela signifie des registres entiers de 64 bits et des pointeurs de 64 bits.
Cependant, il est tout aussi important de souligner ce que « 64 bits » ne signifie PAS : Taille de l'adresse physique de la RAM. Le nombre de bits à communiquer avec la RAM (donc la quantité de RAM qu'un périphérique peut prendre en charge) n'est pas lié au nombre de bits du processeur. Les processeurs ARM ont des adresses comprises entre 26 et 40 bits et peuvent être modifiés indépendamment du reste du système.
- Taille du bus de données. La quantité de données reçues de la RAM ou de la mémoire tampon est également indépendante de ce facteur. Les instructions de processeur individuelles peuvent demander différentes quantités de données, mais elles sont soit envoyées par morceaux, soit reçues plus que nécessaire de la mémoire. Cela dépend de la taille du quantum de données. L'iPhone 5 reçoit déjà les données de la mémoire en quanta de 64 bits (et dispose d'un processeur de 32 bits), et nous pouvons rencontrer des tailles allant jusqu'à 192 bits.
- Tout ce qui concerne la virgule flottante. La taille de ces registres (FPU) est là encore indépendante du fonctionnement interne du processeur. ARM utilisait un FPU 64 bits avant ARM64 (processeur ARM 64 bits).
Avantages et inconvénients généraux
Si nous comparons des architectures 32 bits et 64 bits par ailleurs identiques, elles ne sont généralement pas si différentes. C'est l'une des raisons de la confusion générale du public qui cherche une raison pour laquelle Apple passe également au 64 bits sur les appareils mobiles. Cependant, tout vient des paramètres spécifiques du processeur A7 (ARM64) et de la manière dont Apple l'utilise, et pas seulement du fait que le processeur a une architecture 64 bits.
Cependant, si l’on regarde encore les différences entre ces deux architectures, on trouvera plusieurs différences. La plus évidente est que les registres d’entiers de 64 bits peuvent gérer les entiers de 64 bits plus efficacement. Même avant, il était possible de travailler avec eux sur des processeurs 32 bits, mais cela impliquait généralement de les diviser en morceaux de 32 bits, ce qui entraînait des calculs plus lents. Ainsi, un processeur 64 bits peut généralement calculer avec des types 64 bits aussi rapidement qu'avec des types 32 bits. Cela signifie que les applications qui utilisent généralement des types 64 bits peuvent s'exécuter beaucoup plus rapidement sur un processeur 64 bits.
Bien que 64 bits n'affecte pas la quantité totale de RAM que le processeur peut utiliser, cela peut faciliter le travail avec de grandes quantités de RAM dans un seul programme. Tout programme exécuté sur un processeur 32 bits ne dispose que d'environ 4 Go d'espace d'adressage. En tenant compte du fait que le système d'exploitation et les bibliothèques standard occupent quelque chose, cela laisse au programme entre 1 et 3 Go pour l'utilisation des applications. Cependant, si un système 32 bits dispose de plus de 4 Go de RAM, l’utilisation de cette mémoire est un peu plus compliquée. Nous devons forcer le système d'exploitation à mapper ces plus gros morceaux de mémoire pour notre programme (virtualisation de la mémoire), ou nous pouvons diviser le programme en plusieurs processus (où chaque processus dispose à nouveau théoriquement de 4 Go de mémoire disponible pour l'adressage direct).
Cependant, ces « hacks » sont si difficiles et lents qu’un minimum d’applications les utilisent. En pratique, sur un processeur 32 bits, chaque programme n'utilisera que ses 1 à 3 Go de mémoire, et plus de RAM disponible pourra être utilisée pour exécuter plusieurs programmes en même temps ou utiliser cette mémoire comme tampon (mise en cache). Ces utilisations sont pratiques, mais nous aimerions que n'importe quel programme puisse utiliser facilement des morceaux de mémoire supérieurs à 4 Go.
Venons-en maintenant à l’affirmation fréquente (en réalité incorrecte) selon laquelle sans plus de 4 Go de mémoire, une architecture 64 bits est inutile. Un espace d'adressage plus grand est utile même sur un système avec moins de mémoire. Les fichiers mappés en mémoire sont un outil pratique dans lequel une partie du contenu du fichier est logiquement liée à la mémoire du processus sans que l'intégralité du fichier doive être chargée en mémoire. Ainsi, le système peut, par exemple, traiter progressivement des fichiers volumineux plusieurs fois supérieurs à la capacité de la RAM. Sur un système 32 bits, des fichiers aussi volumineux ne peuvent pas être mappés en mémoire de manière fiable, alors que sur un système 64 bits, c'est un jeu d'enfant, grâce à l'espace d'adressage beaucoup plus grand.
Cependant, la taille plus grande des pointeurs présente également un inconvénient majeur : sinon, des programmes identiques nécessitent plus de mémoire sur un processeur 64 bits (ces pointeurs plus grands doivent être stockés quelque part). Étant donné que les pointeurs font fréquemment partie des programmes, cette différence peut surcharger le cache, ce qui à son tour ralentit l'exécution de l'ensemble du système. Donc, en perspective, nous pouvons voir que si nous changeions simplement l’architecture du processeur en 64 bits, cela ralentirait en fait l’ensemble du système. Ce facteur doit donc être contrebalancé par davantage d’optimisations à d’autres endroits.
ARM64
L'A7, le processeur 64 bits qui équipe le nouvel iPhone 5s, n'est pas seulement un processeur ARM classique avec des registres plus larges. ARM64 contient des améliorations majeures par rapport à l'ancienne version 32 bits.
Registre
ARM64 contient deux fois plus de registres entiers qu'ARM 32 bits (attention à ne pas confondre le nombre et la largeur des registres - nous avons parlé de largeur dans la section "64 bits". Ainsi, ARM64 a à la fois deux fois plus de registres larges et deux fois plus de registres. registres). L'ARM 32 bits possède 16 registres entiers : un compteur de programme (PC - contient le numéro de l'instruction en cours), un pointeur de pile (un pointeur vers une fonction en cours), un registre de liaison (un pointeur vers le retour après la fin de la fonction), et les 13 restants sont destinés à une utilisation applicative. Cependant, l'ARM64 dispose de 32 registres entiers, dont un registre zéro, un registre de liaison, un pointeur de trame (similaire à un pointeur de pile) et un réservé pour le futur. Cela nous laisse avec 28 registres pour l'utilisation des applications, soit plus du double de l'ARM 32 bits. Dans le même temps, l'ARM64 a doublé le nombre de registres à virgule flottante (FPU), passant de 16 à 32 registres de 128 bits.
Mais pourquoi le nombre de registres est-il si important ? La mémoire est généralement plus lente que les calculs du processeur et la lecture/écriture peut prendre beaucoup de temps. Cela obligerait le processeur rapide à continuer d'attendre de la mémoire et nous atteindrions la limite de vitesse naturelle du système. Les processeurs tentent de masquer ce handicap avec des couches de tampons, mais même la plus rapide (L1) reste plus lente que le calcul du processeur. Cependant, les registres sont des cellules mémoire directement dans le processeur et leur lecture/écriture est suffisamment rapide pour ne pas ralentir le processeur. Le nombre de registres signifie pratiquement la quantité de mémoire la plus rapide pour les calculs du processeur, ce qui affecte grandement la vitesse de l'ensemble du système.
En même temps, cette vitesse nécessite un bon support d'optimisation de la part du compilateur, afin que le langage puisse utiliser ces registres et n'ait pas à tout stocker dans la mémoire générale de l'application (la lente).
Jeu d'instructions
ARM64 apporte également des changements majeurs au jeu d'instructions. Un jeu d'instructions est un ensemble d'opérations atomiques qu'un processeur peut effectuer (par exemple, « ADD registre1 registre2 » ajoute les nombres dans deux registres). Les fonctions disponibles dans chaque langue sont composées de ces instructions. Les fonctions plus complexes doivent exécuter plus d’instructions, elles peuvent donc être plus lentes.
Les nouveautés d'ARM64 sont les instructions pour le cryptage AES et les fonctions de hachage SHA-1 et SHA-256. Ainsi, au lieu d'une implémentation complexe, seul le langage appellera cette instruction - ce qui accélérera considérablement le calcul de ces fonctions et, espérons-le, renforcera la sécurité des applications. Par exemple. le nouveau Touch ID utilise également ces instructions dans le cryptage, permettant une réelle vitesse et sécurité (en théorie, un attaquant devrait modifier le processeur lui-même pour accéder aux données - ce qui est pour le moins peu pratique compte tenu de sa taille miniature).
Compatibilité avec 32 bits
Il est important de mentionner que l'A7 peut fonctionner entièrement en mode 32 bits sans avoir besoin d'émulation. Cela signifie que le nouvel iPhone 5s peut exécuter des applications compilées sur ARM 32 bits sans aucun ralentissement. Cependant, il ne peut pas utiliser les nouvelles fonctions ARM64, il est donc toujours intéressant de créer une version spéciale uniquement pour l'A7, qui devrait fonctionner beaucoup plus rapidement.
Modifications de l'exécution
Le runtime est le code qui ajoute des fonctions au langage de programmation, qu'il peut utiliser pendant l'exécution de l'application, jusqu'après la traduction. Étant donné qu'Apple n'a pas besoin de maintenir la compatibilité des applications (un binaire 64 bits fonctionne sur 32 bits), ils pourraient se permettre d'apporter quelques améliorations supplémentaires au langage Objective-C.
L'un d'eux est ce qu'on appelle pointeur étiqueté (indicateur marqué). Normalement, les objets et les pointeurs vers ces objets sont stockés dans des parties distinctes de la mémoire. Cependant, de nouveaux types de pointeurs permettent aux classes contenant peu de données de stocker des objets directement dans le pointeur. Cette étape élimine le besoin d'allouer de la mémoire directement à l'objet, il suffit de créer un pointeur et l'objet qu'il contient. Les pointeurs balisés ne sont pris en charge que dans l'architecture 64 bits, également en raison du fait qu'il n'y a plus assez d'espace dans un pointeur 32 bits pour stocker suffisamment de données utiles. Par conséquent, iOS, contrairement à OS X, ne prenait pas encore en charge cette fonctionnalité. Cependant, avec l'arrivée d'ARM64, la situation est en train de changer et iOS a également rattrapé OS X à cet égard.
Bien que les pointeurs aient une longueur de 64 bits, sur l'ARM64, seuls 33 bits sont utilisés pour la propre adresse du pointeur. Et si nous parvenons à démasquer de manière fiable le reste des bits du pointeur, nous pouvons utiliser cet espace pour stocker des données supplémentaires – comme dans le cas des pointeurs étiquetés mentionnés. Conceptuellement, il s'agit de l'un des changements les plus importants de l'histoire d'Objective-C, même s'il ne s'agit pas d'une fonctionnalité commercialisable. La plupart des utilisateurs ne sauront donc pas comment Apple fait avancer Objective-C.
Quant aux données utiles qui peuvent être stockées dans l'espace restant d'un tel pointeur balisé, Objective-C, par exemple, l'utilise désormais pour stocker ce qu'on appelle nombre de références (nombre de références). Auparavant, le décompte de références était stocké à un endroit différent de la mémoire, dans une table de hachage préparée à cet effet, mais cela pouvait ralentir l'ensemble du système dans le cas d'un grand nombre d'appels alloc/dealloc/retain/release. La table devait être verrouillée en raison de la sécurité des threads, de sorte que le nombre de références de deux objets dans deux threads ne pouvait pas être modifié en même temps. Cependant, cette valeur est nouvellement insérée dans le reste de ce que l'on appelle isa indicateurs. Il s’agit d’un autre avantage et d’une accélération discrets mais énormes pour l’avenir. Cependant, cela ne pourrait jamais être réalisé dans une architecture 32 bits.
Les informations sur les objets associés, si l'objet est faiblement référencé, s'il est nécessaire de générer un destructeur pour l'objet, etc., sont également nouvellement insérées à la place restante des pointeurs vers les objets. Grâce à ces informations, l'Objective-C Le runtime est capable d'accélérer fondamentalement le temps d'exécution, ce qui se reflète dans la vitesse de chaque application. D'après les tests, cela signifie une accélération d'environ 40 à 50 % de tous les appels de gestion de la mémoire. Simplement en passant aux pointeurs 64 bits et en utilisant ce nouvel espace.
Conclusion
Même si les concurrents tenteront de propager l’idée selon laquelle passer à une architecture 64 bits n’est pas nécessaire, vous savez déjà qu’il ne s’agit là que d’une opinion très mal informée. Il est vrai que passer simplement au 64 bits sans y adapter le langage ou les applications ne veut rien dire, cela ralentit même tout le système. Mais le nouvel A7 utilise un ARM64 moderne avec un nouveau jeu d'instructions, et Apple a pris la peine de moderniser l'ensemble du langage Objective-C et de profiter des nouvelles capacités - d'où l'accélération promise.
Nous avons mentionné ici un grand nombre de raisons pour lesquelles une architecture 64 bits constitue un bon pas en avant. C'est une autre révolution "sous le capot", grâce à laquelle Apple tentera de rester à l'avant-garde non seulement avec le design, l'interface utilisateur et l'écosystème riche, mais surtout avec les technologies les plus modernes du marché.
De nombreuses personnes Android/Samsung non informées devraient lire cet article et se cacher dans un coin.
Eh bien, nous devons nous sentir désolés pour eux. Pendant des années, ils ont excusé l'UX et l'UI tragiques d'Android en disant qu'ils disposaient du système d'exploitation le plus avancé technologiquement avec des fonctionnalités et maintenant ils ont découvert qu'ils avaient encore des années de retard :)
Si une personne n'est pas un mouton et écoute des publicités (et elle est douée pour cela), alors après une expérience personnelle, elle peut se faire sa propre opinion :-).
J'essaie presque tous les concurrents et je me fais ma propre opinion.
Pour moi, j'ai besoin d'un nouveau téléphone portable ultra performant, car je n'y dépense pas beaucoup. C'est J'ai besoin de moins de performances pour moins de prix ;-). Peut-être que je préférerais un modèle plus lent avec une batterie plus grosse.
Par contre, le nouveau procak serait utile pour l'iPad où il y a beaucoup de jeux :-).
Je suis Android/HTC :) parce que l'informatique est assez amusante pour moi et que rooter et convertir du matériel de haute qualité en un combattant rapide est mon passe-temps. Et iOS ne me laisse pas faire ça. (Ce n'est même pas nécessaire. Plus ou moins, iOS est conçu pour que tout fonctionne comme il se doit et que vous n'ayez rien à faire là-bas. Quand j'arrêterai de jouer, j'achèterai une pomme et j'en profiterai). Mais je ne sais pas pourquoi vous continuez à vous attaquer comme des enfants. Apple est complètement comme Android. C'est comme comparer la démocratie avec la dictature et autres... J'ai regardé la conférence lors de la présentation de l'iPhone 5S et malgré le fait que je ne possède rien d'Apple, j'ai aimé le 64 bits et les autres améliorations apportées. Mais pas parce que je suis un honnête homme complexe qui s'assoit derrière un PC et court après Android ou Apple, mais parce que je vois des PROGRÈS qui ne me feront pas attendre longtemps. Les gens devraient commencer à travailler très dur pour ne pas avoir le temps de s'occuper de conneries, pour le dire poliment.
contribution constructive de l'autre côté :) kiez cela ouvrirait les yeux des 99% androïdes restants positifs
peut-être que 99 % des fanatiques de la pomme devraient être discutés en premier, puis nous pourrons avoir une conversation constructive
des choses très complexes expliquées simplement... merci
Excellent article! Oui, je conviens que les utilisateurs d’Android/WP devraient absolument lire cet article. Au lieu de troller et de parler intelligemment de "à quel point le 64b est inutile sur les mobiles"…
vous n'avez probablement jamais eu de wp en main, sinon vous n'auriez pas ça
Depuis ses premiers succès sur le marché mobile, Samsung n'a fait que salir la concurrence, mais au fond, il a suivi ses traces pendant tout ce temps. Apple a toujours été un modèle pour les entreprises technologiques, et si elles se concentrent uniquement sur la moquerie et la désinformation constante des clients, elles trébucheront bientôt. Apple a toujours suivi sa propre voie et cela a toujours été une question de très bon timing, ce qui manque à de nombreuses entreprises concurrentes du secteur.
On pourrait dire que Samsung surfe sur la vague et profite de ses possibilités. Il a parié sur Android, il a un excellent matériel, il fait beaucoup de choses lui-même, il a un support décent. Et comme toute entreprise asiatique prédatrice, elle utilise toutes les possibilités de la publicité. Et bien sûr, il vole et copie. Ce pour quoi les « yeux bridés » sont doués, c'est la copie. Ils ont très bien calculé que cela coûte beaucoup moins cher que de suivre leur propre chemin, étape par étape. Et en tant qu’entreprise solide, elle peut tout simplement se le permettre. Encore…
Je ne comprends tout simplement pas pourquoi la vitesse du téléphone augmente constamment, donnez-moi quelques exemples de l'utilisation que vous en faites, cela n'a lentement aucun sens pour moi d'augmenter les performances du téléphone mobile, mais je supprimerai le mot marketing .
Jeux, jeux mal optimisés. De plus, Transport Tycoon sur iPad 3 ne fonctionne pas aussi bien et dans la même résolution que sur le bureau. Exemple.
Je ne comprends tout simplement pas pourquoi la vitesse du téléphone continue d'augmenter, donnez-moi quelques exemples de l'utilisation que vous en faites, cela n'a lentement aucun sens pour moi d'augmenter les performances du téléphone mobile, si j'en retire le mot marketing .
Pour le traitement vidéo, audio et image. Et place aux jeux.
Quiconque utilise un iPhone uniquement pour appeler, envoyer des SMS et occasionnellement lire ou envoyer des e-mails et surfer occasionnellement sur Internet aura besoin d'un iPhone 4. Je pense qu'il existe de nombreux utilisateurs de ce type. Tout le monde n'a pas besoin du meilleur téléphone du monde :-)
mouton
Le compromis physique entre matériel et logiciel ne vous dit rien ? Cela me rappelle un peu la fin du 19ème siècle, quand les physiciens de l'époque disaient que tout en physique avait déjà été découvert et qu'il n'était pas nécessaire de continuer (une décennie avant la théorie de la relativité et trois avant la théorie quantique). .
La quête du meilleur ne s’arrête jamais. Parfois le logiciel mène et parfois le matériel. Mais si l’un reste coincé, il ne lâchera pas l’autre. Nous ne serons pas si égoïstes envers nos descendants :) Donc, pour votre commentaire, un téléphone plus rapide permettra des applications plus puissantes, qui seront capables de faire bien plus que des lecteurs. Et une fois, des choses pour lesquelles même les ordinateurs d'aujourd'hui ne suffisent pas. L’avenir est passionnant.
Exactement :)
Bel article, mais je ne comprends pas pourquoi Apple n'a pas mis 7 Go de RAM dans l'A2. Oui, le multitâche iOS n'est pas tel qu'il faut nécessairement 2 Go, mais étant donné la longueur du pointeur mémoire deux fois plus longue, ce serait bien plus adapté.
Mais sinon, je suis d'accord qu'un processeur 64 bits est "inutile" pour un téléphone mobile, tout comme un écran Retina ou une souris optique au lieu d'une boule étaient inutiles - toutes ces inventions ont été qualifiées d'"inutiles", mais à mon avis, Le mot correct est "intemporel", car une fois doit arriver et Apple n'a pas peur de proposer quelque chose de nouveau.
Je suis d'accord. Malheureusement, même « inutile » n’est pas une expression exacte. Inutile signifie quelque chose dont une personne ne connaît pas la priorité. Ce n'est certainement pas vrai. La vitesse n'a peut-être pas besoin d'une telle vitesse, mais elle la reconnaîtra certainement. Et lorsque le logiciel rattrapera le matériel, il y aura encore place à l’amélioration.
Bien sûr, je suis favorable, je veux dire que l'iP5 est vraiment un smartphone assez rapide, donc le 5S n'aurait pas du tout besoin d'être en 64 bits. Mais un jour, quelqu'un a dû s'en occuper à nouveau et c'était Apple et c'était maintenant. D'aussi loin que je me souvienne, les experts ont également expliqué que les processeurs 64 bits seraient inutiles, même dans les ordinateurs.
Pour moi, en tant que profane en informatique qui a failli échouer au baccalauréat, la conclusion est importante. L'ensemble de l'article (étayé par les commentaires) me semble assez perspicace, et même si je ne pourrai pas l'expliquer, l'A7 avec une architecture 64 bits est un pas en avant. Merci pour l'information.
Je modifierais le titre de l'article, car il s'agit d'une démarche marketing. Chaque innovation est essentiellement une démarche marketing. :-)
Je ne pense pas. Par exemple, Samsung utilise des stratégies marketing. Ils apparaissent avec de la RAM, dont l'iPhone n'a pas du tout besoin. Ils s'en sortent avec des fonctionnalités qui ne sont pas du tout utilisables. Leur augmentation volontaire des performances du processeur pour les tests. Etc. C'est du marketing, même si oui, c'est trompeur, avec lequel ils ne devraient pas s'en tirer ;)