Sur mon poste de travail, j'ai un processeur Intel i7-4790T que j'ai toujours pensé être un processeur assez rapide. Mais selon Geekbench 4, le processeur Apple A12X du nouvel iPad Pro le bat confortablement. Lorsque je lance Geekbench 4, la vitesse de base est d’environ 4 000 mais sur le nouvel iPad Pro , le processeur A12X renvoie environ 5 000 , soit 25% plus rapide. En fait, même les A12 et A11 ont un score supérieur à celui de mon i7-4790T . Lors du test multicœur, mon processeur dépasse légèrement les 11 000 tandis que le A12X en compte 18 000, soit 60% plus rapide.
Une question préliminaire est de savoir si Geekbench est un indicateur fiable de la vitesse dans le monde réel. Par exemple, la seule chose que je fais qui insiste beaucoup sur mon processeur est le ré-échantillonnage vidéo avec Handbrake . Handbrake n’est pas disponible pour IOS, mais s’il était porté, Handbrake traiterait réellement les vidéos 60% plus rapidement sur l’A12X, ou le score de Geekbench n’est-il pas représentatif des performances réelles?
Mais ma question principale est la suivante: en laissant de côté la comparaison exacte entre l’A12X et mon processeur, comment Apple a-t-il réussi à obtenir une puce RISC à base de ARM aussi rapide? Quels aspects de son architecture sont responsables de la grande vitesse?
D'après ce que je comprends des architectures RISC, elles fonctionnent moins par cycle d'horloge, mais leur conception simple leur permet de fonctionner à des vitesses d'horloge plus élevées. Mais le A12X fonctionne à 2,5 GHz alors que mon i7 a une vitesse de base de 2,7 GHz et passera à 3,9 GHz avec des charges à cœur unique. Donc, étant donné que mon i7 fonctionnera à une vitesse d'horloge 50% plus rapide que l'A12X, comment la puce Apple parvient-elle à la battre?
D'après ce que je peux trouver sur Internet, l'A12X a beaucoup plus de cache L2, 8 Mo contre 256 Ko (par cœur) pour mon i7, c'est donc une grosse différence. Mais ce cache L2 supplémentaire fait-il vraiment une si grande différence en termes de performances?
Le test de l’unité centrale Geekbench met uniquement l’accent sur les vitesses de la CPU et de la mémoire CPU. Les détails de exactement comment Geekbench fait cela sont décrits dans ce PDF (136KB) . Les tests semblent correspondre exactement au type de tâches que nous réalisons qui utilisent beaucoup de ressources processeur, et il semble bien qu’ils seraient effectivement représentatifs des performances du frein à main que j’ai proposées à titre d’exemple.
La ventilation détaillée des résultats de Geekbench pour mon i7-4790T et le A12X est la suivante:
Test i7-4790T A12X
Crypto 3870 3727
Integer 4412 5346
Floating Point 4140 4581
Memory Score 3279 5320
L'A12X est un énorme processeur basé sur la dernière technologie, laissant derrière lui l'ancien i7-4790T de 2014.
La première différence est le processus de fabrication: le A12X est une puce à 7 nm, tandis que le i7-4790T Haswell-DT est construit sur un ancien 22 nm. Des transistors plus petits signifient moins d'espace, moins de puissance de fonctionnement et des signaux plus rapides sur des chemins de puce plus courts.
L'A12X a 10 milliards de transistors, alors que l'i7-4790T n'en a que 1,4 milliard.
Cela permet à l’A12X d’avoir six pipelines d’exécution entiers, parmi lesquels deux unités complexes, deux unités de chargement et de stockage, deux ports de branche et trois pipelines de type PF/vectoriel, soit un total estimé de 13 ports d’exécution, bien plus que les huit. ports d'exécution de l'architecture Haswell-DT.
Pour la taille de la mémoire cache, nous avons sur l’A12: par cœur: chaque grand cœur a un cache L1 de 128 Ko et un cache L2 de 8 Mo. Chaque petit noyau a 32 Ko de L1 et 2 Mo de L2. Il existe également 8 Mo supplémentaires de $ sur l’ensemble du système de calcul (également utilisés pour d’autres tâches).
L’architecture Haswell dispose d’un cache L1 de 64 Ko par cœur, d’un cache L2 de 256 Ko par cœur et d’un cache L3 de 2 à 40 Mo (partagé).
On peut voir que l'A12X bat l'i7-4790T sur tous les points et de loin.
En ce qui concerne l’architecture RISC vs CISC, il s’agit maintenant d’un point discutable pour les processeurs modernes. Les deux architectures ont évolué à un point tel qu’elles imitent désormais les caractéristiques de l’autre pour atténuer les faiblesses.
Je cite ici le tableau des comparaisons des processeurs Xeon 8192, i7 6700k et AMD EPYC 7601, compilé par Reddit (lien ci-dessous), où l'A12 se compare bien, même avec les processeurs de bureau:
Sources :
Vous comparez des architectures très différentes entre le A12X et Haswell (Intel i7-4790T), et les chiffres de référence ne sont pas directement comparables, même si les deux processeurs ne sont pas directement comparables.
Comprendre ce qu’est un test particulier est utile pour comprendre la signification des chiffres. En passant par votre test de geek, commençons par la dernière ligne.
Selon vos tests GeekBench, la bande passante mémoire entre l’A12X et la puce haswell est fortement asymétrique. L'A12X a environ deux fois plus de performances mémoire. Alors que les tests de mémoire combinent généralement deux éléments sans rapport, la latence et la bande passante, le A12X est clairement le gagnant.
L'élément suivant est la performance en virgule flottante. Ce test tente de comparer le code optimisé manuellement entre différentes architectures. Bien que les chiffres puissent être faussés par la qualité des optimisations, ceci devrait être un bon indicateur approximatif de la performance globale de la FPU et est directement comparable. Ici, les deux processeurs ont des résultats similaires.
Le test le moins utile est le test intitulé Performances entières. Il ne s'agit pas d'une performance entière au sens arithmétique, mais plutôt d'un ensemble de charges de travail génériques non FPU. Ces tests sont significatifs en ce qu'ils montrent les performances des applications sur une plate-forme, mais ils ne permettent pas de dire que le processeur A est meilleur que le processeur B car ils sont quelque peu sensibles aux performances de la mémoire.
Dernier est la charge de travail Crypto. Cela a du sens dans l’abrégé, même si le test en question n’est probablement pas aussi utile. La cryptographie haute performance devrait utiliser AES-GCM et non AES-CTR, ce dernier ne se prêtant pas non plus à l'accélération matérielle. C'est également un point de référence spécifique à un domaine.
Si je devais essayer de dire quelque chose d'intelligent à propos de ces chiffres, essayons ceci;
Tirer des conclusions plus larges sur la base de ces chiffres, ou formuler des revendications architecturales sur la base de ces chiffres, est probablement peu judicieux.
En ce qui concerne la comparaison d’architecture générique, RISC et CISC n’ont plus de sens, car les deux jeux d’instructions sont décodés en micro-opérations qui déterminent la répartition de la charge de travail. Comparer uniquement sur des ports d'exécution n'a probablement pas de sens, car il s'agit de blocs de construction de haut niveau qui ne sont pas directement comparables.
Le cache est une quantité importante qui contribue directement aux performances du processeur, mais il est également très compliqué. La manière dont le cache est partagé entre l'architecture intel et l'A12X est complètement différente. En général, il est préférable d’avoir plus de cache, mais la cohérence du cache est tout aussi importante, ce qui a une incidence sur la capacité des applications à threads de partager des données entre les cœurs.
Enfin, le processeur doit fonctionner pour votre charge de travail. Bien que l'A12X puisse prendre en charge une charge de travail de bureau à l'avenir, l'i7 v4 le prend maintenant en charge, ce qui en fait un choix supérieur pour un processeur de bureau, même s'il a quatre à cinq ans de plus que l'A12X.