Téléchargez l'application
Tom's Hardware sur l'App Store
Toute l'actu informatique de référence sur votre iPhone
Oui Non

Linux sur ARM : accélérer de 300 % avec la FPU

par - source: Blogarm.net

Une société spécialisée dans les smartbooks, Genesi, vient d'annoncer qu'il était possible d'augmenter les performances de certains appareils en modifiant la distribution Linux utilisée. Le gain, dans certains cas, pourrait atteindre 300 %. Et c'est « simple » : il suffit d'utiliser la FPU. Expliquons.

Bien utiliser la FPU

Dans un processeur, on trouve une unité qui travaille sur les nombres entiers, mais aussi une unité qui travaille sur les nombres à virgules flottantes et qui permet de faire des calculs géométriques (par exemple). Si la FPU (le nom de l'unité en virgules flottantes) est généralisée sur les x86 depuis le milieu des années 90, les ARM, surtout en entrée de gamme, n'ont pas nécessairement ce composant. Actuellement, la majorité des distributions sont compilées dans un mode que l'on appelle « softfloat ». Ce mode permet d'utiliser les unités en virgule flottante des SoC ARM (la fameuse FPU) mais en passant par les unités entières. En simplifiant, l'OS va détecter les appels à la FPU et ensuite éventuellement exécuter le code sur l'unité dédiée. Ce mode est pratique parce qu'il permet d'exécuter le code sans connaître le type exact de FPU — il en existe plusieurs en architecture ARM — et aussi d'exécuter logiciellement les instructions qui ne sont pas disponibles. Le problème du « softfloat » est qu'il est coûteux en temps CPU : l'analyse du code avant son passage sur la FPU ralentit nettement certains programmes.

Passer en hardfloat

La solution la plus simple est de passer en « hardfloat » : les instructions sont passées directement à la FPU, ce qui permet un gain substantiel. Mais c'est évidemment compliqué dans la pratique. Premier écueil, il est nécessaire de recompiler le système et les applications. Si du code en « softfloat » fonctionne sur des SoC qui n'ont pas de FPU, le « hardfloat » nécessite une FPU, et pas n'importe laquelle. Et tous les logiciels doivent aussi être adaptés, là aussi en recompilant. Deuxième écueil, la diversité des SoC ARM : il existe plusieurs FPU, elle n'est pas obligatoire, etc. Globalement, le choix va être simple : un Linux « hardfloat » sera compatible avec les CPU ARMv7 (Cortex A8, Cortex A9, Scorpion), en VFPv3, le nom de la FPU proposée par ARM. le SIMD ne sera a priori pas de la partie, car un des grands fabricants de SoC — NVIDIA — n'a pas intégré cette fonction dans sa puce (Tegra 2). Pour les machines encore en ARMv6 (processeur de type ARM11, comme le Nokia N8), point de salut. Et même si les Cortex A8 et Cortex A9 partagent le même jeu d'instructions, l'absence de pipeline au niveau de la FPU sur le premier grève les performances...

Dans les faits, Genesi devrait proposer d'ici quelques semaines une distribution Debian compilée en « hardfloat » pour remplacer la distribution Ubuntu en « softfloat », avec évidemment tous les programmes classiques adaptés. Espérons que cette initiative sera suivie : beaucoup de systèmes d'exploitations pour les smartphones sont encore en softfloat alors que les appareils actuels sont généralement tous capables de fonctionner en hardfloat.

Partager:
2
Commentaires
Lire plus
X
Valider

Commentaires
Ajouter un commentaire
tranche 27/06/2011 18:21
Masquer
-0+

Sinon le port debian armhf devrait arriver avec la prochaine version stable, en tout cas ils y travaillent.

aurel32 27/06/2011 20:56
Masquer
-1+

300 % c'est vraiment dans le meilleur des cas sur un programme bien choisi. En moyenne c'est plutôt 20 à 40% d'après les benchmarks du développeur principal du projet chez Genesi: http://www.powerdeveloper.org/foru [...] hp?p=13609

Publicité

Les offres du moment

Newsletters


OK