ivyblog

Ma petite entreprise

Design logiciel et design d'interfaces

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.

Processeur Cell

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 :

aucun commentaire :: aucun trackback

vendredi 4 novembre 2005

Structure and Interpretation of Computer Programs

Par Sébastien Pierre, vendredi 4 novembre 2005 à 17:46 :: Langages

"Structure and interpretation of computer programs" est pour beaucoup un livre majeur de l'informatique, un peu un de ceux que tout le monde devrait lire, tant ce qui y est abordé est fondamental. Cela fait plusieurs années que je me penche sur les problèmes d'expressivité des langages, et que je touche donc aux problématiques liées au langages informatiques, de manière générale. Bien que fondé sur le langage Scheme, SICP arrive tout de même à nous faire un aperçu très complet des différents éléments qui constituent la structure et la dynamique d'un programme, et surtout en nous donnant toute une terminologie qui nous permet de nommer et donc de bien comprendre la composition des programmes.

Tout ça peut paraître bien abstrait, voire totalement inutile pour un développeur qui programme habituellement dans un/des langages dérivés du C (Java, C++, C#), mais je pense qu'au contraire, ça permet de considérer les choses sous un angle radicalement différent. Finalement, lire SICP permet de sortir des petites géguerres sur la syntaxe ("ah, moi je mais toujours les accolades en fin de ligne... et bien pas moi !") et de se concentrer sur la sémantique des langages. On peut alors avoir un regard plus profond lorsque l'on évalue différents langages.

Pour ceux qui trouvent la lecture difficile, j'en profite pour me faire le relais de cette nouvelle, mais il y des vidéos des cours disponibles pour iPod et aussi au format DivX. La qualité est pas forcément super, mais ça suffit largement !

3 commentaires :: aucun trackback