[couverture de Linux Magazine 82]

Perles de Mongueurs (22)

Article publié dans Linux Magazine 82, avril 2006.

[+ del.icio.us] [+ Developers Zone] [+ Bookmarks.fr] [Digg this] [+ My Yahoo!]
[logo d'avril]

La perle de ce mois d'avril a été rédigée par Stéphane Payrard (stef@mongueurs.net), de Paris.pm.

Les nouvelles de la communauté Perl d'avril - Mehari :  un miniPerl6 sur une puce

Nous apprenons que Sun Microsystems échantillonne Mehari, un processeur SPARC supportant MiniPerl6 un sous ensemble de Perl6. Mehari est un processeur qui tourne le dos à l'architecture RISC pure : certains de ses opcodes sont de haut niveau. Comme les architectures SPARC traditionnelles, Mehari propose un environnement programmable avec un shell interactif avant de booter le système d'explotation. Mais cet environnement est MiniPerl6 au lieu de Forth. MiniPerl6, c'est aussi un bytecode de haut niveau, il y aura donc des compilateurs pour les langages modernes de script autres que Perl6.

Extension du Risc par MiniPerl6

Des analyses ont montré que dans un système Unix, les mêmes structures de données sont réimplantées dans beaucoup de librairies et souvent de manière peu efficiente.

Le processeur Mehari factorise certaines de ces opérations en les implantant dans le hardware. Il gère « en  dur » les chaînes Unicode, le moteur de règles Perl6, les tables associatives (connues sous le nom de hash en Perl), et les tableaux creux. Les tableaux creux permettent l'accès par index rapide comme les tableaux normaux et l'insertion rapide comme une liste, proposant ainsi le meilleur des deux mondes.

Mehari peut utiliser les librairies compilées pour du code SPARC traditionnel. Mais pour un programme utilisant ces librairies, l'éditeur de lien remplace certains points d'entrée par l'appel correspondant en microcode miniperl6 résidant en ROM sur la puce.

Microprogrammation MiniPerl6

Les algorithmes décrits ci-dessus sont bien connus et peuvent donc résider en firmware. Mais Perl6 proposera des opérations de haut niveau encore mal spécifiées. Il s'agit du moteur de règles et du système de ventilation des multiméthodes. Ces systèmes sont aussi microprogrammables mais ce microcode là réside en RAM.

Le système de règles est un descendant du système d'expressions régulières de Perl5. Il sera plus propre et plus puissant et supportera la définition de grammaires. Le moteur qui l'implante est une synthèse des moteurs pour grammaire d'opérateurs, d'automates à la Yacc et de moteurs d'analyseur récursif descendant.

De même Perl6 propose un système de ventilation de multiméthodes. En programmation objet classique, la méthode appelée est celle de la classe de l'objet contenu dans le premier paramètre. Les multiméthodes étendent ce système de ventilation à plusieurs paramètres.

En Perl6, l'inférence de type est encore à définir. Elle est trop complexe pour être implantée en hard. Ce sera un système de greffons qui ne modifiera pas la sémantique du langage. Donc MiniPerl6 et Mehari ne sont pas concernés.

Un peu d'histoire

Mettre dans le hardware des opérations de haut niveau grâce à la microprogrammation n'est pas nouveau mais contraste avec l'approche qui a conduit aux premiers succès de Sun. Les premières stations Sun à base d'un processeur standard, le 68000 de Motorola avaient balayé les stations Symbolics qui utilisaient du matériel propriétaire.

De plus, Symbolics avait transformé en système propriétaire des logiciels développés au MIT. Cela avait d'ailleurs provoqué l'ire de Richard Stallman.

Quelques années plus tard, Sun, alors leader dans le monde Unix, a provoqué la colère de ses premiers clients, en particulier les universités, en décidant de vendre séparément ses compilateurs. Cela a certainemnt contribué à la popularité de GCC. Notons que c'est Michael Tiemann, maintenant directeur technique de RedHat qui a porté le dorsal de GCC pour supporter l'architecture SPARC.

Stratégie, DRM et Open Source

Ces réflexions historiques et l'actualité récente (et plus spécifiquement la mise à disposition d'un bonne partie des sources de Solaris) amènent à penser que Sun va mettre Mehari en Open Source.

Steve Jobs a failli choisir Mehari mais a renoncé quand Sun a refusé l'inclusion d'un système de gestion des droits (DRM) au sein du processeur, condition indispensable à sa stratégie multimédia.

Quelques détails sur les processeurs Mehari

Le processeur sera multicore mais avec une seule unité de traitement de règles. Sun prépare une autre version avec un processeur asynchrone, car propager le signal d'horloge consomme beaucoup d'énergie sur un processeur de cette complexité. Son nom de code est Ichtyus.

Liens

Quelques pistes pour comprendre les techonologies évoquées :

À vous !

Envoyez vos perles à perles@mongueurs.net, elles seront peut-être publiées dans un prochain numéro de Linux Magazine.

[IE7, par Dean Edwards] [Validation du HTML] [Validation du CSS]