mercredi 9 novembre 2005
Quel langages pour le Cell ?
Par Sébastien Pierre, mercredi 9 novembre 2005 à 20:31 :: Langages
A l'occasion de la sortie du Kit de développement pour le processeur Cell, j'en profite pour aborder les questions/idées/remarques que j'ai pu me faire vis-à-vis de cette technologie, que je trouve très séduisante.

En premier lieu, il y a l'idée de concurrence réelle, intrinsèque à l'architecture du Cell : un processeur "ordonnanceur", qui distribue des tâche à 6 (ou plus) petites unités (SPU, pour Synergistic Processing Units), tout à fait comparables à des DSP. La seule machine grand-public (donc pas les NeXT), à ma connaissance, qui se rapproche de ça est le Falcon 030 d'Atari, qui embarquait un DSP (Motorola 56001) en plus du 68030. A l'époque, on faisait tout en assembleur, et il n'a pas fallu longtemps pour que les demomakers tirent avantage du DSP : il suffisait d'écrire de petits programmes (mois de 64k, si je me souviens bien), qui étaient chargés dans le DSP (qui disposait d'une mémoire de travail indépendante), et qui pouvait donc faire ses traitements quasi-indépendamment du processeur principal.
Déjà à l'époque il y avait des difficultés à implémenter un programme tirant partie des deux, et ça passait en général par une impléméntation peu réutilisable. Est-ce que le Cell pourra être exploité convenablement sans offrir un environnement adapté ? Quand je parle d'environnement, je pense tout particulièrement à des langages de programmation. Le fait que le Cell soit fait pour exécuter plusieurs tâche en simultanée rend possible beaucoup de choses, mais met (à mon avis), le doigt sur un problème fondamental : des langages tel que le C ne sont pas vraiment adaptés à ce type de contexte (je ne vais pas rentrer dans les détails).
Alors ma question est quels sont les traits (comprenez les features) qu'un langage devrait avoir pour pleinement exploiter le processeur Cell ? Est-ce au niveau du langage, ou bien au niveau d'une plateforme logicielle, d'un modèle de programmation ?
Je ne suis pas sûr que IBM où Sony, ou même Toshiba ne se soient lancés dans cette réflexion. Il est très intéressant de lire l'interview de Arnd Bergmann de juillet 2005 au sujet du Cell : en tant que hacker qui participe au portage de Linux sur le Cell, il donne une description (avec une pointe de discours officiel) sur ce qui fait les différences et les ressemblances entre le Cell et les processeurs que l'on connaît aujourd'hui (notamment le PowerPC, catégorie dont le Cell fait plus ou moins partie). On pourra retenir qu'ils avouent bien que la programmation des SPU nécéssite une expertise toute particulière (et sans doute une approche particulière), et qu'il s'agit plutôt d'utiliser ces SPUs pour des tâches particulières orientées multi-média (CODECs vidéo, 3D, traitement de signal, etc), plutôt que d'en faire des processeurs indépendants versatiles.
Moi je pense qu'il faut voir au délà, et que l'idée de base du Cell est d'avoir un processeur haute multi-tâche avec des noyaux indépendants, orchestrés par un processeur central. Pour moi, le Cell c'est un peu un système multi-agent version hardware, une occasion d'avoir une plateforme centrée sur le principe de parallélisme (ou de concurrence, bien que le terme soit moins approprié ici), qui offre un cadre matériel et conceptuel pour repenser nos outils et nos modes d'expression, à la lumière d'une architecture avant-gardiste, qui semble tirer les conclusions de 30 ans de progrès minimes dans le domaine des micro-processeurs.
A voir :