
Mon cher confrère Charbax s’est rendu récemment au Freescale Technology Forum qui réunissait les différents partenaires du fondeur ARM. Parmi les exposants, l’on pouvait trouver Genesi, une société américaine qui produit des solutions ARM et qui propose depuis 2 ans un smarttop et un smartbook, tous les deux à base du chipset i.MX51 (800Mhz) de Freescale. Lors d’une interview, l’un des ingénieurs de Genesi, Konstantinos Margaritis, a annoncé pourvoir augmenter les performances des programmes Linux de 300%, et ce, grâce à une petite optimisation logicielle. L’optimisation consiste à céder le traitement des flottants aux unités spécialisées dans cette tâche qui se trouvent dans le chipset. On parle d’un passage de “softfloat” au “hardfloat”.

Voyez-vous les flottants sont des nombres à virgules. Pour faire simple, les CPU ARM (contrairement aux CPU x86) ne sont pas capables d’effectuer directement des opérations sur les flottants. Cette faiblesse peut être corrigée de façon logicielle. C’est ce que appelle le mode “soft-float”. Mais le traitement logiciel utilise de nombreux cycles CPU (une soixantaine d’après Konstantinos). Afin de combler cette lacune, les fondeurs dotent leurs chipsets de blocs spécialisés appelés FPU (Floating Point Unit) dont le travail est le traitement des flottants, économisant ainsi au CPU de nombreux cycles d’horloges.
Effectivement, la plupart des chipsets ARM utilisés actuellement sont dotés de FPU. Cependant, les distributions Linux actuelles n’optimisent pas leurs programmes pour tirer partie du FPU. Ainsi, lorsqu’un programme utilise des flottants, il consomme beaucoup plus de cycles CPU qu’il ne devrait. Si tous les programmes d’une distribution font pareil, alors l’ensemble du système est grandement ralenti.

Afin d’augmenter les performances de ses solutions ARM, Genesi a prévu de troquer sa distribution actuelle (Ubuntu), dont tous les programmes sont compilés en soft-float, contre une distribution maison basée sur Debian et compilée en hardfloat (je vois déjà tous les pro-Debian lever les bras au ciel avec un grand
sur leur visage). D’après Konstantinos, 90% des paquets seraient déjà recompilés.
La question que l’on est en droit de se poser, c’est pourquoi le mode hardfloat n’est-il pas activé par défaut sur Ubuntu et sur les autres distributions ? La réponse est simple, il faut savoir que prendre en compte le hardfloat peut devenir très compliqué lorsque l’on considère la diversité des chipsets se trouvant actuellement sur le marché. C’est d’ailleurs pour cette raison qu’Android préfère s’en passer. Linaro, le consortium travaillant à l’amélioration de Linux sur les différentes plateformes ARM, s’était mis d’accord sur le fait que le hardfloat devrait être laissé de coté pour quelques années, et cela à cause du chantier que cela représente. Cependant, Génési aurait réussi à les convaincre de changer leurs avis sur la question. En effet, le gain de performances apporté par le hardfloat pourrait jouer un rôle capital dans la montée en puissance des solutions Linux/ARM. Lorsque l’on regarde les conséquences sur un chipset 800Mhz, on ne peut que baver sur les répercussions d’une telle optimisation avec un chipset Dual-Core Cortex A9 1Ghz, voir 1.5Ghz. On aurait réellement un système capable de lutter avec les plateformes Windows/Intel se trouvant dans nos ordinateurs portables, mais qui présenterait une consommation 10 fois moindre.
En ce qui concerne Genesi, la nouvelle distribution basée sur Debian et compilée en hardfloat sera disponible aux utilisateurs dans les prochaines semaines. Cependant, l’abandon d’Ubuntu en tant qu’OS par défaut se fera surement bien après la mise à jour des plateformes vers les chipsets i.MX53.

En résumé, Genesi prévoit une montée en puissance de sa gamme tout en restant sur des chipsets modestes par rapport à la concurrence. 300% de performances en plus sur 800Mhz de Cortex A8 peuvent donner un résultat tout à fait satisfaisant pour la plupart des utilisations d’un netbook. Cependant, il ne faut pas oublier qu’il manque une chose essentielle aux smartbooks pour pouvoir réellement se comparer aux netbooks x86 : un disque dur rapide. 300% de performances ne serviront à rien si le disque dur ne suit pas. D’ailleurs, sur ces systèmes, la vitesse du support de stockage (souvent une carte SD) est plus limitante que la vitesse du CPU. Certains crieront “au blasphème”, mais je pense sincèrement qu’inclure un disque dur mécanique dans un smartbook ne serait pas une si mauvaise idée. Le système ne serait plus limité par les accès disques et pourrait laisser libre au cours à la puissance du chipset et à ses optimisations.
Source : ARMDevices.net
25 June 2011 à 21:06
Tactilofan
La différence entre soft-float et hard-float n’est pas du tout que c’est fait en software ou en hardware, sinon le passage en hardfloat aurait été fait il y a dix siecles (à peu pres :p).
La différence est que le softfloat fait une indirection vers une bibliothèque à chaque calcul flottant, et c’est le bibliothèque en question qui va derrière appeler le FPU, alors qu’en hardfloat, c’est le programme lui même qui appelle le FPU.
Ubuntu est déjà compilé pour utiliser les FPUs, vu qu’ils ne gèrent que les ARM très récents (il ne gère que les Cortex-A8 et supérieurs). La non utilisation du hardfloat vient du fait que ça casse énormément de choses, et de nombreux logiciels ne marchent plus. Néanmoins ils devraient migrer d’ici une ou deux release.
En ce qui concerne le gain de +300%, il ne concerne que quelques très rares cas…
Par Phh, le 2011-06-25 le 9.26 pmC’est prometteur.
Par ZikZak, le 2011-06-25 le 9.30 pmSi de plus leur prochain hardware est au même prix (ils annoncent moins cher mais je n’y crois pas trop) que l’actuel alors je vais me laisser tenter.
Cette optimisation, couplée à une nouvelle génération 1 GHz, voire 1.5 GHz, ce serait l’envol des performances des smartbooks et tablettes rootées. Mais si c’est dur à optimiser sur chaque architecture, tant pis, on en profitera que sur du i.MX51 (pour l’instant
).
La puce à 800 MHz des eCafé et autre Genesi me bloquait un peu jusque là. Mais Debian, en 300% plus performant… Reste à changer le stockage, et c’est top.
Par Jojonintendo, le 2011-06-26 le 9.41 amMais le code utilisant les calculs en virgule flottante ça représente quoi sur un système complet, à peine 5% ?
Par Omar kumba, le 2011-06-27 le 2.47 amJe veux bien que ça peut libérer des cycles CPU pour le reste, mais il y aura un gain réellement sensible uniquement pour le code qui fait massivement appel aux calculs en virgule flottante ce qui est loin d’être la majorité.
De mémoire, sur le Sharp Netwalker (Cortex A8), l’utilisation du hardfloat apportait un gain de performance de l’ordre de 10-15%, très loin de 300%. Comme dit précédamment, les calculs en virgule flottant ne sont pas si nombreux que ça…
Par Jiba, le 2011-06-27 le 3.12 pmIl serait sans doute plus intelligent de remplacer les cartes SD par des SSD plutôt que des disques durs. Aujourd’hui on en trouve des pas mal à moins 100€ les 64Go, on ne serait pas très loin du tarif SD card (si on en trouvait de cette taille), puisque une 32Go tourne autour de 50€. Non seulement ça irait beaucoup plus vite qu’avec les HDD, mais ça serait plus léger, plus fiable et moins consommateur.
Si utiliser le flottant materiel fait gagner du temps plutôt que 50 appels à différentes couches de bibliothèques, alors la consommation s’en trouvera également réduite et l’autonomie allongée. Mais à mon avis, cela se limitera a quelques tâches, comme le rendu en image de synthèse, le calcul scientifique très approximatif (les flottants matériel ne sont pas de grande taille, 32 ou 64 bits dans le meilleur des cas sur les ARM). Les muladd très cher au RISC (multiplication + addition de résultats, indispensable en calcul vectoriel/matriciel) depuis longtemps ne sont pas innocents dans ces accélérations. L’utilisation du DSP des Soc pour tous les calculs serait sans doute encore plus optimal ? (à voir, les cycles nécessaires au transfert CPUDSP).
Par Totototoro, le 2011-06-27 le 4.04 pmLe plus rigolo c’est que dans 1 an on aura un article du même genre qui vante les capacités de calcul en flottants simple précision par vecteur entier grâce à NEON (qui sera sous exploité hors iOS pendant un bon moment à cause du Tegra2 qui ne l’inclus pas).
Par Mathias Richter, le 2011-06-27 le 5.47 pmPour ajouter de l’eau au moulin, l’étude de Debian à ce sujet:
http://wiki.debian.org/ArmHardFloatPort/
Il y a de bien meilleurs compilateurs pour ARM que GCC 4.5, non ?
Par Mathias Richter, le 2011-06-27 le 6.15 pmJe crois que c’est plutot tout l’inverse.
Par David Feugey, le 2011-06-27 le 7.39 pmhttp://www.arm.linux.org.uk/mailinglists/faq.php#f3
(la FAQ semble ancienne, mais elle était encore mise à jour en 2009). Le soft-float est logiciel et ne permet à priori pas d’appeler le hard (cela a pu changer depuis, mais j’en doute fort). Le mode hard-float, lui, permet tout à fait de rebondir sur du soft en cas d’absence de FPU. Il y a juste que la partie soft doit alors simuler une FPU complète, chose qui a un impact énorme sur les performances d’une puce déjà pas bien rapide en flottants. Le gain mesuré par Genesi est celui obtenu par l’utilisation de la FPU contre sa non utilisation (c’est ce qu’ils disent dans la vidéo, tout du moins). Les FPU des ARM n’étant pas hyper rapides (comme le souligne Totototoro) le gain est logiquement peu impressionnant. Mais il sera par contre assez uniforme, les développeurs UNIX/Linux ayant souvent cette manie de taper dans les flottants même pour les calculs simples (héritage issu du x86). Pour le reste, je serai curieux de savoir ce que l’utilisation du hard-float casse, vu que cela a été pendant longtemps le mode utilisé par défaut (il a fallu se battre à l’époque pour l’abandonner).
Notez quand même que cette histoire de recompilation n’est sans doute pas seule responsable de l’amélioration des perfs.
Par Eviltwin, le 2011-06-28 le 1.22 pmOn passe de DDR2 à DDR3, un processeur plus véloce, un nouveau bus pour augmenter le debit des IO mémoire et disque …
Il n’est pas exclu que le stockage change également par rapport à la précédente version du smartbook, puisque le nouveau chipset supporte nativement beaucoup plus de formats que l’iMX515.
Ce qui est “cassé” par le mode hardfloat, ce sont les pilotes non libre.
Par BdA, le 2011-06-30 le 1.23 pmLa seule chose qui manque à ma Pandaboard sous Gentoo en hardfloat, c’est le pilote PowerVR SGX.
La différence entre les deux modes est très perceptible, mais loin des 300% annoncés. Mais 30% c’est déjà bien agréable.
Sympa mais pas essentiel surtout avec la diversité des FPU.
Par Gourmet, le 2011-06-30 le 3.07 pmQu’on dispose déjà de nombreuses plateformes ARM exploitables (et pas seulement la Pandaboard ou le toujours-trop-cher Trim-slice) l’optimisation se fera naturellement ensuite.
db