Machine à lisper - Lisp machine

Une machine Knight conservée au MIT Museum

Les machines Lisp sont des ordinateurs à usage général conçus pour exécuter efficacement Lisp comme leur principal logiciel et langage de programmation , généralement via un support matériel. Ils sont un exemple d' architecture informatique de haut niveau et, dans un sens, ils ont été les premiers postes de travail commerciaux à utilisateur unique . Bien qu'elles soient en nombre modeste (peut-être 7 000 unités au total en 1988), les machines Lisp ont été les premières à commercialiser de nombreuses technologies désormais courantes, notamment la collecte efficace des déchets , l' impression laser , les systèmes de fenêtrage , les souris d'ordinateur , les graphiques raster bitmap haute résolution , l'infographie le rendu et les innovations de mise en réseau telles que Chaosnet . Plusieurs entreprises ont construit et vendu des machines Lisp dans les années 1980 : Symbolics (3600, 3640, XL1200, MacIvory et autres modèles), Lisp Machines Incorporated (LMI Lambda), Texas Instruments ( Explorer et MicroExplorer ) et Xerox ( postes de travail Interlisp- D) . Les systèmes d'exploitation ont été écrits en Lisp Machine Lisp , Interlisp (Xerox), et plus tard en partie en Common Lisp .

Machine à Lisp Symbolics 3640

Histoire

Contexte historique

Les programmes informatiques d' intelligence artificielle (IA) des années 1960 et 1970 nécessitaient intrinsèquement ce qui était alors considéré comme une énorme puissance informatique, mesurée en temps processeur et en espace mémoire. Les besoins en puissance de la recherche en IA ont été exacerbés par le langage de programmation symbolique Lisp, lorsque le matériel commercial a été conçu et optimisé pour l' assemblage - et les langages de programmation de type Fortran . Au début, le coût d'un tel matériel informatique signifiait qu'il devait être partagé entre de nombreux utilisateurs. Alors que la technologie des circuits intégrés diminuait la taille et le coût des ordinateurs dans les années 1960 et au début des années 1970, et que les besoins en mémoire des programmes d'IA ont commencé à dépasser l' espace d'adressage de l'ordinateur de recherche le plus courant, le DEC PDP-10 , les chercheurs ont envisagé une nouvelle approche : un ordinateur conçu spécifiquement pour développer et exécuter de grands programmes d' intelligence artificielle , et adapté à la sémantique du langage Lisp . Pour garder le système d'exploitation (relativement) simple, ces machines ne seraient pas partagées, mais seraient dédiées à des utilisateurs uniques.

Développement initial

En 1973, Richard Greenblatt et Thomas Knight , programmeurs au Massachusetts Institute of Technology (MIT) Artificial Intelligence Laboratory (AI Lab), ont commencé ce qui allait devenir le MIT Lisp Machine Project lorsqu'ils ont commencé à construire un ordinateur câblé pour exécuter certaines opérations Lisp de base, plutôt que de les exécuter dans un logiciel, dans une architecture étiquetée 24 bits . La machine a également effectué une collecte de déchets incrémentielle (ou Arena ) . Plus précisément, étant donné que les variables Lisp sont saisies au moment de l'exécution plutôt qu'au moment de la compilation, un simple ajout de deux variables peut prendre cinq fois plus de temps sur du matériel conventionnel, en raison des instructions de test et de branchement. Lisp Machines a exécuté les tests en parallèle avec les ajouts d'instructions uniques plus conventionnels. Si les tests simultanés échouaient, le résultat était rejeté et recalculé ; cela signifiait dans de nombreux cas une augmentation de la vitesse par plusieurs facteurs. Cette approche de vérification simultanée a également été utilisée pour tester les limites des tableaux lorsqu'ils sont référencés, et d'autres nécessités de gestion de la mémoire (pas simplement le ramasse-miettes ou les tableaux).

La vérification du type a été encore améliorée et automatisée lorsque le mot d'octet conventionnel de 32 bits a été allongé à 36 bits pour les machines Lisp du modèle Symbolics 3600 et finalement à 40 bits ou plus (généralement, les bits en excès non pris en compte par les éléments suivants ont été utilisé pour les codes correcteurs d'erreurs ). Le premier groupe de bits supplémentaires a été utilisé pour contenir les données de type, faisant de la machine une architecture étiquetée , et les bits restants ont été utilisés pour implémenter le codage CDR (dans lequel les éléments de liste chaînés habituels sont compressés pour occuper environ la moitié de l'espace), facilitant le ramasse-miettes d'un ordre de grandeur, semble-t-il. Une autre amélioration était deux instructions de microcode qui supportaient spécifiquement les fonctions Lisp , réduisant le coût d'appel d'une fonction à seulement 20 cycles d'horloge, dans certaines implémentations Symbolics.

La première machine s'appelait la machine CONS (du nom de l'opérateur de construction de listes consen Lisp). Souvent, on l'appelait affectueusement la machine Knight , peut-être depuis que Knight a écrit sa thèse de maîtrise sur le sujet ; il a été extrêmement bien reçu. Il a ensuite été amélioré dans une version appelée CADR (un jeu de mots ; en Lisp, la cadrfonction, qui renvoie le deuxième élément d'une liste, se prononce /ˈkeɪ.dəɹ/ ou /ˈkɑ.dəɹ/ , comme certains prononcent le mot "cadre" ) qui reposait essentiellement sur la même architecture. Environ 25 de ce qui étaient essentiellement des prototypes de CADR ont été vendus à l'intérieur et à l'extérieur du MIT pour environ 50 000 $ ; il est rapidement devenu la machine préférée pour le piratage - de nombreux outils logiciels parmi les plus appréciés ont été rapidement portés sur celui-ci (par exemple, Emacs a été porté depuis ITS en 1975). Il a été si bien accueilli lors d'une conférence sur l'IA tenue au MIT en 1978 que la Defense Advanced Research Projects Agency (DARPA) a commencé à financer son développement.

Commercialisation de la technologie des machines MIT Lisp

En 1979, Russell Noftsker , convaincu que les machines Lisp avaient un brillant avenir commercial en raison de la force du langage Lisp et du facteur permettant l'accélération matérielle, proposa à Greenblatt de commercialiser la technologie. Dans un geste contre-intuitif pour un hacker du AI Lab, Greenblatt a acquiescé, espérant peut-être qu'il pourrait recréer l'atmosphère informelle et productive du Lab dans une vraie entreprise. Ces idées et objectifs étaient considérablement différents de ceux de Noftsker. Les deux ont longuement négocié, mais aucun n'a fait de compromis. Comme l'entreprise proposée ne pouvait réussir qu'avec l'aide entière et indivise des hackers d'AI Lab en tant que groupe, Noftsker et Greenblatt ont décidé que le sort de l'entreprise leur appartenait et que le choix devait donc être laissé aux hackers.

Les discussions qui ont suivi sur le choix ont divisé le laboratoire en deux factions. En février 1979, les choses s'enveniment. Les pirates se sont rangés du côté de Noftsker, estimant qu'une entreprise commerciale financée par des fonds d'investissement avait de meilleures chances de survivre et de commercialiser des machines Lisp que la start-up autonome proposée par Greenblatt. Greenblatt a perdu la bataille.

C'est à ce moment que Symbolics , l'entreprise de Noftsker, s'est lentement constituée. Alors que Noftsker payait un salaire à son personnel, il n'avait ni bâtiment ni équipement sur lequel les pirates pouvaient travailler. Il a négocié avec Patrick Winston qu'en échange de permettre au personnel de Symbolics de continuer à travailler hors du MIT, Symbolics laisserait le MIT utiliser en interne et librement tous les logiciels développés par Symbolics. Un consultant du CDC , qui essayait de mettre en place une application informatique en langage naturel avec un groupe de programmeurs de la côte ouest, est venu à Greenblatt, à la recherche d'une machine Lisp pour son groupe, environ huit mois après la conférence désastreuse avec Noftsker. Greenblatt avait décidé de créer sa propre entreprise rivale de machines Lisp, mais il n'avait rien fait. Le consultant, Alexander Jacobson, a décidé que la seule façon pour Greenblatt de démarrer l'entreprise et de construire les machines Lisp dont Jacobson avait désespérément besoin était si Jacobson poussait et aidait autrement Greenblatt à lancer l'entreprise. Jacobson a rassemblé des plans d'affaires, un conseil d'administration, un partenaire pour Greenblatt (un certain F. Stephen Wyle). La nouvelle entreprise a été nommée LISP Machine, Inc. (LMI) et a été financée par les commandes du CDC, via Jacobson.

À cette époque, Symbolics (la société Noftsker) a commencé à fonctionner. Il avait été entravé par la promesse de Noftsker de donner à Greenblatt un an d' avance et par de graves retards dans l'obtention de capital-risque. Symbolics avait toujours l'avantage majeur que si 3 ou 4 des hackers du AI Lab étaient allés travailler pour Greenblatt, 14 autres hackers avaient signé sur Symbolics. Ni l'un ni l'autre n'ont embauché deux personnes d'AI Lab : Richard Stallman et Marvin Minsky . Stallman, cependant, a blâmé Symbolics pour le déclin de la communauté des hackers qui s'était centrée autour du laboratoire d'IA. Pendant deux ans, de 1982 à fin 1983, Stallman a travaillé seul à cloner la sortie des programmeurs de Symbolics, dans le but de les empêcher d'obtenir le monopole des ordinateurs du laboratoire.

Quoi qu'il en soit, après une série de batailles internes, Symbolics a décollé en 1980/1981, vendant le CADR sous le nom de LM-2, tandis que Lisp Machines , Inc. le vendait sous le nom de LMI-CADR. Symbolics n'avait pas l'intention de produire de nombreux LM-2, car la famille 3600 de machines Lisp était censée être expédiée rapidement, mais les 3600 ont été retardés à plusieurs reprises et Symbolics a fini par produire environ 100 LM-2, chacun vendu pour 70 000 $. Les deux firmes ont développé des produits de deuxième génération basés sur le CADR : le Symbolics 3600 et le LMI-LAMBDA (dont LMI a réussi à vendre ~200). Le 3600, qui a été livré avec un an de retard, a étendu le CADR en élargissant le mot machine à 36 bits, en étendant l'espace d'adressage à 28 bits et en ajoutant du matériel pour accélérer certaines fonctions courantes implémentées en microcode sur le CADR. Le LMI-LAMBDA, sorti un an après le 3600, en 1983, était compatible avec le CADR (il pouvait exécuter le microcode CADR), mais des différences matérielles existaient. Texas Instruments (TI) s'est joint à la mêlée lorsqu'il a autorisé la conception LMI-LAMBDA et produit sa propre variante, le TI Explorer . Certains des LMI-LAMBDA et le TI Explorer étaient des systèmes doubles avec à la fois un processeur Lisp et un processeur Unix . TI a également développé une version à microprocesseur 32 bits de son processeur Lisp pour TI Explorer. Cette puce Lisp a également été utilisée pour le MicroExplorer - une carte NuBus pour Apple Macintosh II (NuBus a été initialement développé au MIT pour être utilisé dans les machines Lisp).

Symbolics a continué à développer la famille 3600 et son système d'exploitation, Genera , et a produit l'Ivory, une implémentation VLSI de l'architecture Symbolics. A partir de 1987, plusieurs machines basées sur le processeur Ivory sont développées : des cartes pour Suns et Mac, des stations de travail autonomes et même des systèmes embarqués (I-Machine Custom LSI, adresse 32 bits, Symbolics XL-400, UX-400, MacIvory II ; en 1989, les plates-formes disponibles étaient Symbolics XL-1200, MacIvory III, UX-1200, Zora, NXP1000 "pizza box"). Texas Instruments a réduit l'Explorer en silicium sous le nom de MicroExplorer qui a été proposé comme carte pour l'Apple Mac II . LMI a abandonné l'architecture CADR et a développé sa propre K-Machine, mais LMI a fait faillite avant que la machine ne puisse être commercialisée. Avant sa disparition, LMI travaillait sur un système distribué pour la LAMBDA utilisant l'espace Moby.

Ces machines avaient un support matériel pour diverses opérations Lisp primitives (test de type de données, codage CDR ) et également un support matériel pour la récupération de place incrémentielle . Ils ont exécuté de grands programmes Lisp de manière très efficace. La machine Symbolics était compétitive contre de nombreux super mini - ordinateurs commerciaux , mais n'a jamais été adaptée à des fins conventionnelles. Les Symbolics Lisp Machines ont également été vendues à certains marchés non IA comme l'infographie , la modélisation et l'animation.

Les machines Lisp dérivées du MIT exécutaient un dialecte Lisp nommé Lisp Machine Lisp , descendant du Maclisp du MIT . Les systèmes d'exploitation ont été écrits à partir de zéro en Lisp, en utilisant souvent des extensions orientées objet. Plus tard, ces machines Lisp ont également pris en charge diverses versions de Common Lisp (avec Flavors , New Flavors et Common Lisp Object System (CLOS)).

Interlisp, BBN et Xerox

Bolt, Beranek et Newman (BBN) ont développé leur propre machine Lisp, nommée Jericho, qui exécutait une version d' Interlisp . Il n'a jamais été commercialisé. Frustré, tout le groupe AI a démissionné et a été embauché principalement par Xerox. Ainsi, le centre de recherche Xerox Palo Alto avait, simultanément au développement de Greenblatt au MIT, développé ses propres machines Lisp conçues pour exécuter InterLisp (et plus tard Common Lisp ). Le même matériel a été utilisé avec différents logiciels également en tant que machines Smalltalk et en tant que système de bureau Xerox Star . Ceux-ci comprenaient le Xerox 1100, Dolphin (1979); le Xerox 1132, Dorado ; le Xerox 1108, Pissenlit (1981); le Xerox 1109, Dandetiger ; et le Xerox 1186/6085 , Daybreak . Le système d'exploitation des machines Xerox Lisp a également été porté sur une machine virtuelle et est disponible pour plusieurs plates-formes sous la forme d'un produit nommé Medley . La machine Xerox était bien connue pour son environnement de développement avancé (InterLisp-D), le gestionnaire de fenêtres ROOMS, pour sa première interface utilisateur graphique et pour de nouvelles applications telles que NoteCards (l'une des premières applications hypertexte ).

Xerox a également travaillé sur une machine Lisp basée sur un jeu d'instructions réduit (RISC), utilisant le « processeur Xerox Common Lisp » et prévoyait de la commercialiser d'ici 1987, ce qui ne s'est pas produit.

Machines d'inférence intégrées

Au milieu des années 1980, Integrated Inference Machines (IIM) a construit des prototypes de machines Lisp nommés Inferstar.

Développements de machines Lisp en dehors des États-Unis

En 1984-1985, une entreprise britannique, Racal-Norsk, une filiale commune de Racal et Norsk Data , a tenté de réutiliser le supermini ND-500 de Norsk Data en tant que machine Lisp microcodée, exécutant le logiciel CADR : le Knowledge Processing System (KPS).

Il y a eu plusieurs tentatives de fabricants japonais pour entrer sur le marché des machines Lisp : le coprocesseur mainframe Fujitsu Facom-alpha , Elis de NTT, le processeur AI de Toshiba (AIP) et LIME de NEC. Plusieurs efforts de recherche universitaire ont produit des prototypes fonctionnels, parmi lesquels le TAKITAC-7 de l'Université de Kobe, le FLATS de RIKEN et l'EVLIS de l'Université d'Osaka.

En France, deux projets Lisp Machine voient le jour : M3L à l'Université Toulouse Paul Sabatier et plus tard MAIA.

En Allemagne, Siemens a conçu le coprocesseur Lisp COLIBRI basé sur RISC.

Fin des machines Lisp

Avec le début de l' hiver de l' IA et les débuts de la révolution des micro - ordinateurs , qui balayeraient les fabricants de mini-ordinateurs et de stations de travail, les ordinateurs de bureau moins chers pourraient bientôt exécuter les programmes Lisp encore plus rapidement que les machines Lisp, sans utiliser de matériel spécial. Leur activité de matériel à marge bénéficiaire élevée éliminée, la plupart des fabricants de machines Lisp avaient cessé leurs activités au début des années 90, ne laissant que des sociétés basées sur des logiciels comme Lucid Inc. ou des fabricants de matériel qui étaient passés à des logiciels et des services pour éviter le crash. En janvier 2015, outre Xerox et TI, Symbolics est la seule entreprise de machines Lisp encore en activité, vendant l' environnement logiciel de la machine Open Genera Lisp et le système de calcul formel Macsyma .

Héritage

Plusieurs tentatives d'écriture d'émulateurs open source pour diverses machines Lisp ont été faites : émulation CADR, Symbolics L Lisp Machine Emulation, le projet E3 (TI Explorer II Emulation), Meroko (TI Explorer I) et Nevermore (TI Explorer I). Le 3 octobre 2005, le MIT a publié le code source CADR Lisp Machine en open source.

En septembre 2014, Alexander Burger, développeur de PicoLisp , a annoncé PilMCU, une implémentation de PicoLisp dans le matériel.

Les archives de documents PDF de Bitsavers contiennent des versions PDF de la documentation complète des machines Symbolics Lisp, des machines TI Explorer et MicroExplorer Lisp et des machines Xerox Interlisp-D Lisp.

Applications

Les domaines utilisant les machines Lisp étaient principalement dans le vaste domaine des applications d'intelligence artificielle, mais aussi dans l'infographie, le traitement d'images médicales et bien d'autres.

Les principaux systèmes experts commerciaux des années 80 étaient disponibles : Knowledge Engineering Environment (KEE) d'Intellicorp, Knowledge Craft, de The Carnegie Group Inc., et ART ( Automated Reasoning Tool ) d'Inference Corporation.

Aperçu technique

Initialement, les machines Lisp étaient conçues comme des postes de travail personnels pour le développement de logiciels en Lisp. Ils étaient utilisés par une seule personne et n'offraient aucun mode multi-utilisateurs. Les machines fournissaient un grand écran bitmap noir et blanc, un clavier et une souris, une carte réseau, des disques durs locaux, plus de 1 Mo de RAM, des interfaces série et un bus local pour les cartes d'extension. Les cartes graphiques couleur, les lecteurs de bande et les imprimantes laser étaient en option.

Le processeur n'exécutait pas Lisp directement, mais était une machine à pile avec des instructions optimisées pour Lisp compilé. Les premières machines Lisp utilisaient un microcode pour fournir le jeu d'instructions. Pour plusieurs opérations, la vérification de type et la répartition ont été effectuées dans le matériel au moment de l'exécution. Par exemple, une seule opération d'addition peut être utilisée avec différents types numériques (nombres entiers, flottants, rationnels et complexes). Le résultat était une représentation compilée très compacte du code Lisp.

L'exemple suivant utilise une fonction qui compte le nombre d'éléments d'une liste pour lesquels un prédicat renvoie true.

(defun example-count (predicate list)
  (let ((count 0))
    (dolist (i list count)
      (when (funcall predicate i)
        (incf count)))))

Le code machine désassemblé pour la fonction ci-dessus (pour le microprocesseur Ivory de Symbolics):

Command: (disassemble (compile #'example-count))

  0  ENTRY: 2 REQUIRED, 0 OPTIONAL      ;Creating PREDICATE and LIST
  2  PUSH 0                             ;Creating COUNT
  3  PUSH FP|3                          ;LIST
  4  PUSH NIL                           ;Creating I
  5  BRANCH 15
  6  SET-TO-CDR-PUSH-CAR FP|5
  7  SET-SP-TO-ADDRESS-SAVE-TOS SP|-1
 10  START-CALL FP|2                    ;PREDICATE
 11  PUSH FP|6                          ;I
 12  FINISH-CALL-1-VALUE
 13  BRANCH-FALSE 15
 14  INCREMENT FP|4                     ;COUNT
 15  ENDP FP|5
 16  BRANCH-FALSE 6
 17  SET-SP-TO-ADDRESS SP|-2
 20  RETURN-SINGLE-STACK

Le système d'exploitation utilisait la mémoire virtuelle pour fournir un grand espace d'adressage. La gestion de la mémoire a été effectuée avec le ramasse-miettes. Tout le code partageait un seul espace d'adressage . Tous les objets de données ont été stockés avec une balise en mémoire, afin que le type puisse être déterminé au moment de l'exécution. Plusieurs threads d'exécution étaient pris en charge et appelés processus . Tous les processus ont été exécutés dans le même espace d'adressage.

Tous les logiciels du système d'exploitation ont été écrits en Lisp. Xerox a utilisé Interlisp. Symbolics, LMI et TI ont utilisé Lisp Machine Lisp (descendant de MacLisp). Avec l'apparition de Common Lisp, Common Lisp a été pris en charge sur les machines Lisp et certains logiciels système ont été portés sur Common Lisp ou écrits plus tard en Common Lisp.

Certaines machines Lisp postérieures (comme le TI MicroExplorer, le Symbolics MacIvory ou le Symbolics UX400/1200) n'étaient plus des stations de travail complètes, mais des cartes conçues pour être embarquées dans des ordinateurs hôtes : Apple Macintosh II et SUN 3 ou 4.

Certaines machines Lisp, telles que la Symbolics XL1200, avaient des capacités graphiques étendues en utilisant des cartes graphiques spéciales. Ces machines ont été utilisées dans des domaines tels que le traitement d'images médicales, l'animation 3D et la CAO.

Voir également

  • ICAD - exemple de logiciel d' ingénierie basé sur les connaissances développé à l'origine sur une machine Lisp qui était suffisamment utile pour être ensuite porté via Common Lisp vers Unix
  • Technologie orpheline

Les références

Général

Liens externes