Anatomie du Kirin 950 de HiSilicon
A l’instar de MediaTek ou de Marvell, le constructeur HiSilicon – une filiale du géant chinois Huawei, troisième fabricant mondial de smartphones – a acquis par le passé une licence ARM lui permettant de fabriquer ses propres SoC basés sur des cores ARM. C’est une approche différente de constructeurs tels qu’Apple ou Qualcomm qui ont eux acheté une licence leur permettant de concevoir eux-mêmes leurs propres cœurs, et donc leurs propres SoC, compatibles avec l’architecture ARM. Dans le premier cas, les constructeurs bénéficient d’une solution « clé en main », rapide à implémenter et à fabriquer, alors que la seconde possibilité permet de concevoir des cores ARM optimisés, avec bien souvent de meilleures performances et/ou une meilleure efficacité énergétique.
Rentrant dans la première catégorie, c’est-à-dire les SoC fabriqués directement sous licence, le nouveau Kirin 950 de HiSilicon est d’ores et déjà présent sur le marché puisque c’est ce SoC que l’on trouve à l’intérieur de l’Huawei Mate 8. Bénéficiant d’une architecture big.LITTLE, ce SoC est un modèle regroupant quatre cores ARM Cortex-A72 cadencés à une fréquence maximale de 2,3 GHz, et quatre core Cortex A-53 pouvant fonctionner jusqu’à 1,8 GHz. On notera au passage que cela fait de HiSilicon le second constructeur, derrière MediaTek, à proposer une puce équipée de cores A72.
La partie graphique est confiée à un Mali-T880, toujours sous licence ARM. Sur le papier, ce GPU affiche de meilleures performances et une efficacité énergétique améliorée de 40% par rapport à un Mali-T760. Pour son Kirin 950, HiSilicon a choisi une approche légèrement différente de celle des modèles concurrents, préférant peu de cores GPU (MP4) mais avec une fréquence maximale élevée (900 MHz). A titre de comparaison, l’Exynos 7420 de Samsung embarque un Mali-T760 avec huit cores tournant à une fréquence maximale de 772 MHz. Il est donc intéressant de savoir si les choix de HiSilicon, associé aux améliorations architecturales propres à la gamme Mali T800, compenseront son déficit en cores.
En interne, le Kirin 950 utilise un bus CCI-400 (Cache Coherent Interconnect) pour relier entre eux les cores et la mémoire cache, ce qui peut d’ailleurs paraitre un peu surprenant puisque ARM a annoncé le nouveau bus CCI-500 en même temps que son Cortex-A72. En pratique, cela pourrait avoir un impact négatif sur la bande passante. Notons par ailleurs que le Kirin 950 embarque un contrôleur mémoire hybride compatible LPDDR3 et LPDDR4. Ce SoC est enfin gravé par TSMC en 16nm FinFET+.
Performances CPU
Maintenant que vous connaissez un peu mieux les entrailles du Kirin 950, découvrons ses performances, tant au niveau CPU que GPU, via une série de tests (synthétiques et avec des applications réelles).
Si le Kirin 950 affiche un bon score global sous Basemark OS II v2.0, la partie GPU est en revanche en difficulté, avec un score largement en dessous de celui de l’Apple A9 ou des Snapdragon 820/810/808. En OpenGL ES 2.0, le score du Mali-T760MP8 intégré à l’Exynos 7420 (que l’on trouve par exemple dans le Galaxy S6) dépasse même de 54% celui du Mali-T880MP4 présent dans le Kirin 950…
Côté CPU, le Kirin 950 reprend fort heureusement du poil de la bête et ne se laisse distancer que par l’Apple A9 et son CPU Twister, ce dernier bénéficiant d’un nombre d’IPC (instructions par cycle d’horloge) plus élevé. Avec ses huit cores, le Kirin 950 fait 7% de mieux que le Snapdragon 820, alors que le CPU Kryo de celui-ci ne possède que quatre cores, cadencés à une fréquence maximale inférieure qui plus est.
Le Kirin 950 affiche le meilleur score que nous ayons jusqu’à présent vu sous AndEBench, devant l’Exynos 7420, le Snapdragon 820 ou le Snapdragon 808 (+30%). Son avance vient principalement du test CPU CoreMark-HPC où il affiche un score supérieur de 29% à celui de l’Exynos 7420 et de 34% à celui du Snapdragon 820. Le Snapdragon 810 arrive derrière le Snapdragon 808, pourtant équipé de deux cores Cortex-A57 en moins : gravé en 20 nm, le Snapdragon 810 n’est pas capable de faire fonctionner ses quatre cores A57 de manière durable et doit donc basculer sur les cores A53, moins gourmands mais également moins performants. Grâce à sa gravure en 16nm FinFET+ et sa gestion optimisée de l’énergie, le Kirin 950 n’a pas ce problème.
La suite de tests synthétiques Geekbench permet de mettre clairement en relief les différences de nombre d’IPC entre les différents cores A72, A57 ou Kryo. De manière globale, un core A72 est 16% plus rapide qu’un core A57 en calculs entiers (un chiffre que l’on peut ramener à +6% à fréquence égale). L’avance atteint 25% (+15% à fréquence identique) en calculs flottants. Les améliorations du core Cortex-A72 ne sont toutefois pas suffisantes pour rattraper le core Kryo du Snapdragon 820 qui est 12% plus rapide (et même 20% si l’on compare à fréquence équivalente) en calculs entiers, et 32% (+41% à fréquence identique) en calculs flottants.
Geekbench 3 Pro – Calculs entiers*
Test | Kirin 950 | Exynos 7420 | Snapdragon 820 | ||
---|---|---|---|---|---|
AES (single-core) | 848 | 694 | (22.2%) | 796 | (6.5%) |
AES (multi-core) | 3328 | 3568 | (-6.7%) | 2281 | (45.9%) |
Twofish (single-core) | 1944 | 1741 | (11.7%) | 2128 | (-8.6%) |
Twofish (multi-core) | 8559 | 8026 | (6.6%) | 6144 | (39.3%) |
SHA1 (single-core) | 7957 | 6433 | (23.7%) | 9063 | (-12.2%) |
SHA1 (multi-core) | 28666 | 26286 | (9.1%) | 27406 | (4.6%) |
SHA2 (single-core) | 2350 | 2118 | (11.0%) | 3111 | (-24.5%) |
SHA2 (multi-core) | 12190 | 10113 | (20.5%) | 8845 | (37.8%) |
BZip2 Compress (single-core) | 1671 | 1397 | (19.6%) | 1808 | (-7.6%) |
BZip2 Compress (multi-core) | 6424 | 5693 | (12.8%) | 5099 | (26.0%) |
BZip2 Decompress (single-core) | 1671 | 1579 | (5.8%) | 1805 | (-7.4%) |
BZip2 Decompress (multi-core) | 8092 | 6697 | (20.8%) | 4474 | (80.9%) |
JPEG Compress (single-core) | 1584 | 1441 | (9.9%) | 1813 | (-12.6%) |
JPEG Compress (multi-core) | 7557 | 7314 | (3.3%) | 5332 | (41.7%) |
JPEG Decompress (single-core) | 2077 | 1932 | (7.5%) | 2504 | (-17.1%) |
JPEG Decompress (multi-core) | 8668 | 7552 | (14.8%) | 6917 | (25.3%) |
Sobel (single-core) | 1699 | 1539 | (10.4%) | 2404 | (-29.3%) |
Sobel (multi-core) | 7438 | 7313 | (1.7%) | 6680 | (11.3%) |
Lua (single-core) | 1978 | 1408 | (40.5%) | 1789 | (10.6%) |
Lua (multi-core) | 7947 | 6672 | (19.1%) | 5139 | (54.6%) |
Dijkstra (single-core) | 1288 | 1073 | (20.0%) | 1565 | (-17.7%) |
Dijkstra (multi-core) | 4799 | 4768 | (0.7%) | 3923 | (22.3%) |
*Les pourcentages entre parenthèses sont normalisés à fréquence équivalente
En regardant plus en détail les résultats des tests « calculs entiers » dans Geekbench, on s’aperçoit que certains d’entre eux (BZip2 Decompress, Sobel ou encore les tests JPEG) ne montrent aucune amélioration de performances entre le Cortex-A72 et le Cortex A-57 (toujours à fréquence identique, bien entendu). Ce n’est pas une véritable surprise étant donné que les unités d’exécution « entiers » sont similaires entre ces deux cores, mis à part une nouvelle unité de division d’entiers Radix-16 et une unité CRC 1-cycle. Les améliorations apportées aux prédictions de branchement ne sont elles aussi presque d’aucune utilité sous Geekbench, les opérations mathématiques se résumant à de courtes boucles.
D’autres tests (Lua, Dijkstra, AES et SHA1) semblent en revanche tirer parti des améliorations apportées au core A72, en particulier sa plus grande bande passante mémoire. Le core Kryo de Qualcomm est quant à lui devant l’A72 dans les calculs entiers : il possède lui aussi une seule unité multiplication/division d’entiers, mais bénéficie d’une latence de 3 cycles seulement, contre 4 cycles pour les cores d’ARM.
Si le nombre d’IPC est toujours le meilleur indicateur de performances pour comparer des cores entre eux, les performances multi-cores deviennent de plus en plus importantes sous Android. Et à ce petit jeu, l’Exynos 7420 s’en sort mieux que le Kirin 950. Ceci est probablement la faute de l’interconnexion CCI-400 qui limite les performances des cores Cortex-A72. Il sera donc intéressant de tester un SoC équipé de cores A72 et d’une interconnexion CCI-500, recommandée par ARM.
Geekbench 3 Pro – Calculs flottants*
Test | Kirin 950 | Exynos 7420 | Snapdragon 820 | ||
---|---|---|---|---|---|
BlackScholes (single-core) | 1893 | 1240 | (52.7%) | 2345 | (-19.3%) |
BlackScholes (multi-core) | 8354 | 5663 | (47.5%) | 6944 | (20.3%) |
Mandelbrot (single-core) | 2026 | 1178 | (72.0%) | 1947 | (4.1%) |
Mandelbrot (multi-core) | 8973 | 6027 | (48.9%) | 6051 | (48.3%) |
Sharpen Filter (single-core) | 1894 | 1599 | (18.4%) | 2828 | (-33.0%) |
Sharpen Filter (multi-core) | 9061 | 6755 | (34.1%) | 8537 | (6.1%) |
Blur Filter (single-core) | 1681 | 1440 | (16.7%) | 3297 | (-49.0%) |
Blur Filter (multi-core) | 8025 | 6430 | (24.8%) | 9207 | (-12.8%) |
SGEMM (single-core) | 1087 | 953 | (14.1%) | 1440 | (-24.5%) |
SGEMM (multi-core) | 3688 | 2847 | (29.5%) | 3136 | (17.6%) |
DGEMM (single-core) | 818 | 875 | (-6.5%) | 1350 | (-39.4%) |
DGEMM (multi-core) | 3274 | 2383 | (37.4%) | 3101 | (5.6%) |
SFFT (single-core) | 1402 | 1365 | (2.7%) | 1901 | (-26.2%) |
SFFT (multi-core) | 6526 | 4815 | (35.5%) | 5306 | (23.0%) |
DFFT (single-core) | 1416 | 1236 | (14.6%) | 1870 | (-24.3%) |
DFFT (multi-core) | 5019 | 3827 | (31.1%) | 5212 | (-3.7%) |
N-Body (single-core) | 2080 | 1406 | (47.9%) | 2255 | (-7.8%) |
N-Body (multi-core) | 7791 | 4956 | (57.2%) | 6128 | (27.1%) |
Ray Trace (single-core) | 2302 | 1660 | (38.7%) | 2429 | (-5.2%) |
Ray Trace (multi-core) | 9366 | 6056 | (54.7%) | 7059 | (32.7%) |
*Les pourcentages entre parenthèses sont normalisés à fréquence équivalente
Les nouvelles unités de calculs flottants et SIMD du core Cortex-A72, bénéficient d’un pipeline plus court permettant de réduire les latences jusqu’à 40%. Ce core intègre également un nouveau diviseur Radix-16 FP plus efficace, doublant la bande passante. Ces améliorations permettent au core A72 d’afficher des performances en hausse par rapport à celles du core Cortex A-57. Mis à part dans les tests DGEMM et SFFT, l’A72 fait entre 4% et 57% mieux que l’A57, à fréquence identique.
Pour le Kryo, Qualcomm a fait des performances en calcul à virgule flottante une priorité. L’architecture de ce SoC ressemble en ce sens au core Typhoon d’Apple. Du coup, l’A72 est derrière lui de près de 41%, une fois que l’on a réajusté les résultats à fréquence identique.
Contrairement à Geekbench, les tests PCMark mesurent plutôt les performances de l’appareil ou de la plateforme dans son ensemble (CPU, mémoire et système de stockage). Le Mate 8 et son SoC Kirin 950 arrive en tête, dépassant de 12% le Moto X Pure Edition (Snapdragon 808) et de 24% le Galaxy S6 (Exynos 7420).
Le Mate 8 affiche également de très bons résultats dans nos tests JavaScript (Browsermark, JSBench, Google Octane), dépassant de 27% en moyenne le Galaxy S6 et étant au coude à coude avec le Snapdragon 820.
Performances GPU, Conclusion
Passons maintenant aux performances GPU grâce à plusieurs benchmarks synthétiques et pratiques.
SoC | Kirin 950 | Exynos 7420 | Apple A8 | Apple A9 |
---|---|---|---|---|
GPU | ARM Mali-T880MP4 | ARM Mali-T760MP8 | PowerVR GX6450 | PowerVR GT7600 |
Nombre de “cores” | 4 | 8 | 4 | 6 |
ALUs FP32 par “core” | 2 | 3 | 32 | 32 |
ALUs FP16 par “core” | ✗ | ✗ | 64 | 64 |
Total FP32 FLOPS/cycle | 120 | 160 | 256 | 384 |
Total FP16 FLOPS/cycle | 216 | 288 | 512 | 768 |
Pixels/cycle | 4 | 8 | 8 | 12 |
Texels/cycle | 4 | 8 | 8 | 12 |
Le Kirin 950 utilise un GPU ARM Mali-T880MP4, un modèle doté de trois unités ALU par core là où le Mali-T760 n’en possède que deux. L’architecture Midgard des Mali diffère des autres architectures sur plusieurs points. Ses unités vectorielles SIMD reposent ainsi exclusivement sur un parallélisme au niveau des instructions (ILP) pour garder les différentes ALU actives, alors que les architectures concurrentes utilisent une combinaison ILP et TLP (Thread Level Parallelism). Chaque méthode a ses avantages et ses inconvénients. Le nombre d’IPC est également très variable selon les architectures. Ainsi, les Mali effectuent moins d’opérations par cycle que les PowerVR Rogue et Qualcomm Adreno, mais leur fréquence maximale est plus élevée.
Les différences d’architecture (et de nomenclature) entre les GPU d’ARM et d’Imagination Technologies rendent donc difficile la simple comparaison « sur le papier », d’autant plus que Qualcomm ne publie tout simplement pas les détails de l’architecture de ses propres GPU Adreno. En résumé : rien de mieux que quelques tests pratiques pour départager tous ces prétendants.
Si le GPU du Kirin 950 s’en sort relativement bien dans le premier test de 3D Mark: Ice Storm Unlimited, il souffre beaucoup plus dans le second test, plus lourd. Au final, le Kirin 950 ne parvient à se hisser qu’au-dessus du MT6795 de Mediatek. Le score Physics, qui pourtant est censé tester le CPU et les performances mémoires, est étrangement faible : l’Exynos 7420 du Galaxy S6 fait 31% de mieux que le Kirin 950.
Basemark X utilise le moteur Unity 4.2.2 et tourne sous OpenGL ES 2.0. Ici encore, l’Exynos 7420 et son Mali-T760MP8 sont en moyenne 39% plus rapide que le Kirin 950 et son Mali-T880MP4. Dans le test Dunes qui demande d’afficher de nombreux triangles, le SoC de Samsung est même 73% plus rapide.
En haute qualité, l’écart se creuse encore entre le Mali-T760MP8 et le Mali-T880MP4. Avec huit cores GPU contre quatre, la solution de Samsung est jusqu’à 70% plus rapide (en offscreen).
Le test GFXBench Manhattan faut appel à un moteur de jeu compatible OpenGL ES 3.0 et utilise le Defered Rendering pour les effets de lumière. Le PowerVR GT7600 et l’Adreno 530 montrent les muscles de leur unité ALU, mais même l’Exynos 7420 surpasse le Kirin 950 (de 35%). Le SoC de HiSilicon reste tout de même devant le Snapdragon 808.
Bien qu’utilisant un moteur de rendu un peu plus ancien, en OpenGL ES 2.0, le test T-Rex donne des résultats similaires.
Le nombre limité de ROPs du Kirin 950 le pénalise dans les tests Alpha Blending, permettant même au Snapdragon 808 de passer devant. Notons au passage qu’un problème de pilotes explique le score erratique de l’Exynos 7420 (le score « offscreen » est plus faible que le score « onscreen »).
Conclusion
Le Cortex-A72 est clairement une évolution du Cortex-A57 : à première vue, les deux processeurs sont similaires, mais ARM a apporté un certain nombre d’optimisations et d’améliorations à chaque étage du pipeline. La majorité des calculs entiers ne bénéficient pas d’un gain vraiment important, sauf dans certains cas (encodage par exemple). La diminution de la latence des unités de calcul en virgule flottante permet en revanche un gain immédiat, comme le montre le test Geekbench.
Malgré ces améliorations, l’architecture du Cortex-A72 d’ARM est toujours plus limitée que celle d’Apple (Twister) ou celle de Qualcomm (Kryo). À fréquence égale, le Kryo est 20% plus rapide en calculs entiers sous Geekbench, et 41% en calculs flottants. Les fréquences plus élevées atteignables par le core A72 permettent toutefois, au moins en partie, de limiter les conséquences de son nombre d’IPC plus faible.
HiSilicon est le premier à proposer du Cortex-A72 gravé en 16nm FinFET+, et le premier à utiliser le nouveau GPU Mali-T880 d’ARM. Cette combinaison affiche une meilleure efficacité énergétique et de meilleures performances que le Snapdragon 810. Le Kirin 950 apparaît même compétitif face au Snapdragon 820, au moins tant qu’on ne fait pas trop appel au GPU.
À première vue, le choix d’utiliser le Mali-T880 dans une configuration quad-core seulement peut paraître étrange, mais un second coup d’œil plus attentif permet de comprendre la logique de HiSilicon : le Kirin 950 est capable de tenir dans les jeux un framerate acceptable, proche de son maximum, sur une longue période. En pratique, associé à un écran 1080p comme celui du Mate 8, ce SoC est plus performant que l’Exynos 7420 du Galaxy S6 qui doit lui rapidement diminuer sa fréquence GPU à cause de la chaleur. Autrement dit, le Kirin 950 ne devrait pas rencontrer de problèmes – de performances ou de surchauffe – en conditions réelles.
En associant un CPU performant et un GPU aux caractéristiques raisonnables offrant tout de même des performances qu’il peut conserver dans le temps sans surchauffer, HiSilicon a donc fait un choix judicieux : celui de l’efficacité énergétique.