Le multicoeur au service des applications monothreads

En séparant la gestion de la mémoire des calculs classiques, des chercheurs accélèrent de 20% les performances des applications monothread. Au détriment du rapport performances/watt.

Les chercheurs de la NCSU (North Carolina State University) viennent de publier le résultat de leurs travaux, lesquels permettront aux développeurs de mieux exploiter la puissance des architectures processeur comprenant de multiples cœurs.

Si certaines tâches peuvent aisément être parallélisées, et ainsi tirer pleinement parti des machines multicœurs, de nombreux logiciels ne peuvent que difficilement être adaptés pour de telles architectures. La solution proposée par les chercheurs de la NCSU consiste à séparer les calculs classiques des opérations de gestion de la mémoire. Ces deux tâches fonctionnant de façon indépendante, le logiciel exploite deux cœurs, et ce, même s’il n’est pas optimisé dans ce sens.

Certes, la puissance des deux cœurs n’est pas pleinement exploitée, mais le code peut fonctionner jusqu’à 20 % plus rapidement. Plus les applications manipulent de larges ensembles d’informations et plus le gain sera important.

Grâce à ce procédé, certaines opérations lourdes (libération ou mise à zéro de larges blocs…) s’effectuent donc sur un cœur séparé. De plus, ces travaux ne bloquent plus les traitements en cours. Autre point intéressant, les opérations de vérification prennent moins de temps processeur.

« En exécutant les fonctions de gestion de la mémoire sur unthreadséparé, ces programmes difficiles à paralléliser peuvent fonctionner environ 20 % plus rapidement », souligne le Dr. Yan Solihin, directeur du projet de recherche et coauteur de cette publication. « Cela ouvre également la porte au développement de nouvelles fonctions de gestion de la mémoire qui permettront d’identifier des anomalies dans le comportement du programme ou d’effectuer des contrôles de sécurité supplémentaires. Auparavant, ces fonctions auraient ralenti la vitesse de l’ensemble du programme. »

Avec ce gestionnaire mémoire prenant la forme d’un service, les chercheurs emploient une méthode moderne, mais déjà connue et utilisée au sein d’offres concurrentes. Ils ont su toutefois optimiser leur solution, laquelle se montre particulièrement aboutie.

Reste que ce type de technique a un impact en terme de performances, ce mode client-serveur étant plus lourd à gérer qu’une méthode basique. Certains contributeurs du site Slashdot remarquent d’ailleurs avec raison qu’un cœur de plus sera utilisé, pour des performances en hausse de seulement 20 %. Si la vitesse de traitement grimpe, cela se fera donc souvent au détriment du rapport performance par watt de la puce.

Le bon point reste toutefois que les applications qui n’ont jamais été optimisées pour le multicœur (traitements de texte, navigateurs web, etc.) pourront maintenant fonctionner un peu plus vite. Une excellente nouvelle pour les éditeurs, et les utilisateurs, puisque le code de ce type d’application n’est que rarement optimisé dans ce sens.