Maszyna sepleniąca - Lisp machine

Maszyna rycerska zachowana w Muzeum MIT

Maszyny Lisp to komputery ogólnego przeznaczenia zaprojektowane do wydajnego uruchamiania Lispu jako głównego oprogramowania i języka programowania , zwykle poprzez wsparcie sprzętowe. Stanowią przykład architektury komputerowej języka wysokiego poziomu iw pewnym sensie były pierwszymi komercyjnymi stacjami roboczymi dla jednego użytkownika . Pomimo skromnej liczby (być może łącznie 7000 sztuk w 1988 r.), maszyny Lisp były pionierami komercyjnymi w wielu obecnie powszechnych technologiach, w tym w skutecznym zbieraniu śmieci , drukowaniu laserowym , systemach okiennych , myszach komputerowych , wysokiej rozdzielczości bitmapowej grafice rastrowej, renderowanie grafiki komputerowej i innowacje sieciowe, takie jak Chaosnet . Kilka firm zbudowało i sprzedało maszyny Lisp w latach 80.: Symbolics (3600, 3640, XL1200, MacIvory i inne modele), Lisp Machines Incorporated (LMI Lambda), Texas Instruments ( Explorer i MicroExplorer ) oraz Xerox ( stacje robocze Interlisp- D) . Systemy operacyjne zostały napisane w Lisp Machine Lisp , Interlisp (Xerox), a później częściowo w Common Lisp .

Symbolics 3640 Lisp maszyna

Historia

Kontekst historyczny

Programy komputerowe wykorzystujące sztuczną inteligencję (AI) z lat 60. i 70. z natury rzeczy wymagały ogromnej ilości mocy komputera, mierzonej czasem procesora i przestrzenią pamięci. Wymagania dotyczące zasilania badań nad sztuczną inteligencją zostały zaostrzone przez symboliczny język programowania Lisp, kiedy komercyjny sprzęt został zaprojektowany i zoptymalizowany pod kątem języków programowania asemblera i Fortran . Początkowo koszt takiego sprzętu komputerowego powodował, że musiał być on dzielony między wielu użytkowników. Ponieważ w latach 60. i na początku lat 70. technologia układów scalonych zmniejszyła rozmiary i koszty komputerów, a zapotrzebowanie na pamięć programów AI zaczęło przekraczać przestrzeń adresową najpopularniejszego komputera badawczego, DEC PDP-10 , naukowcy rozważyli nowe podejście: komputer zaprojektowany specjalnie do tworzenia i uruchamiania dużych programów sztucznej inteligencji i dostosowany do semantyki języka Lisp . Aby system operacyjny był (stosunkowo) prosty, maszyny te nie byłyby współdzielone, ale przeznaczone dla pojedynczych użytkowników.

Początkowy rozwój

W 1973 r. Richard Greenblatt i Thomas Knight , programiści z Laboratorium Sztucznej Inteligencji w Massachusetts Institute of Technology (MIT) (AI Lab), rozpoczęli coś, co stało się projektem MIT Lisp Machine Project, kiedy po raz pierwszy zaczęli budować komputer przewodowy do wykonywania pewnych podstawowych operacji Lisp. zamiast uruchamiać je w oprogramowaniu, w 24-bitowej architekturze ze znacznikami . Maszyna wykonała również przyrostowe (lub Arena ) zbieranie śmieci . Mówiąc dokładniej, ponieważ zmienne Lisp są wpisywane w czasie wykonywania, a nie w czasie kompilacji, proste dodanie dwóch zmiennych może zająć pięć razy dłużej na konwencjonalnym sprzęcie, ze względu na instrukcje testowania i rozgałęzienia. Lisp Machines przeprowadził testy równolegle z bardziej konwencjonalnymi dodawaniem pojedynczych instrukcji. Jeśli jednoczesne testy zakończyły się niepowodzeniem, wynik był odrzucany i ponownie obliczany; oznaczało to w wielu przypadkach wzrost prędkości o kilka czynników. To podejście do jednoczesnego sprawdzania zostało również wykorzystane do testowania granic tablic w przypadku odwoływania się do nich oraz innych potrzeb związanych z zarządzaniem pamięcią (nie tylko wyrzucania elementów bezużytecznych lub tablic).

Sprawdzanie typu zostało dodatkowo ulepszone i zautomatyzowane, gdy konwencjonalne 32-bitowe słowo bajtowe zostało wydłużone do 36-bitów dla maszyn Lisp modelu Symbolics 3600, a ostatecznie do 40-bitów lub więcej (zwykle nadmiarowe bity nieuwzględnione przez następujące używany do kodów korekcji błędów ). Pierwsza grupa dodatkowych bitów została wykorzystana do przechowywania danych typu, czyniąc maszynę otagowaną architekturą , a pozostałe bity zostały użyte do zaimplementowania kodowania CDR (w którym zwykłe połączone elementy listy są skompresowane tak, aby zajmowały mniej więcej połowę miejsca), pomagając w zbieraniu śmieci podobno o rząd wielkości. Kolejnym ulepszeniem były dwie instrukcje mikrokodu, które w szczególności wspierały funkcje Lisp , redukując koszt wywołania funkcji do zaledwie 20 cykli zegarowych w niektórych implementacjach Symbolics.

Pierwsza maszyna została nazwana maszyną CONS (od nazwiska operatora budowy listy consw Lisp). Często nazywano ją pieszczotliwie maszyną Knighta , być może dlatego, że Knight napisał na ten temat pracę magisterską; został bardzo dobrze przyjęty. Została następnie ulepszona do wersji zwanej CADR (gra słów; w Lispie cadrfunkcja, która zwraca drugą pozycję listy, wymawia się /ˈkeɪ.dəɹ/ lub /ˈkɑ.dəɹ/ , jak niektórzy wymawiają słowo „kadra” ), który opierał się zasadniczo na tej samej architekturze. Około 25 zasadniczo prototypowych CADRów zostało sprzedanych w ramach MIT i bez niego za około 50 000 USD; szybko stała się ulubioną maszyną do hakowania - wiele z najbardziej ulubionych narzędzi programowych zostało szybko do niej przeniesionych (np. Emacs został przeniesiony z ITS w 1975 roku). Został tak dobrze przyjęty na konferencji AI, która odbyła się w MIT w 1978 roku, że Agencja Zaawansowanych Projektów Badawczych Obrony (DARPA) zaczęła finansować jego rozwój.

Komercjalizacja technologii maszynowej MIT Lisp

W 1979 roku Russell Noftsker , przekonany, że maszyny Lisp mają przed sobą świetlaną komercyjną przyszłość ze względu na siłę języka Lisp i czynnik umożliwiający przyspieszenie sprzętowe, zaproponował Greenblattowi komercjalizację tej technologii. Wbrew intuicji hakera z laboratorium AI, Greenblatt zgodził się, mając nadzieję, że być może uda mu się odtworzyć nieformalną i produktywną atmosferę laboratorium w prawdziwym biznesie. Te pomysły i cele znacznie różniły się od pomysłów Noftskera. Obaj długo negocjowali, ale żaden z nich nie poszedł na kompromis. Ponieważ proponowana firma mogła odnieść sukces tylko przy pełnej i niepodzielnej pomocy hakerów AI Lab jako grupy, Noftsker i Greenblatt zdecydowali, że los przedsiębiorstwa zależy od nich, a zatem wybór należy pozostawić hakerom.

Późniejsze dyskusje na temat wyboru podzieliły laboratorium na dwie frakcje. W lutym 1979 r. sprawy przybrały punkt kulminacyjny. Hakerzy stanęli po stronie Noftskera, wierząc, że komercyjna firma wspierana przez fundusze venture capital ma większe szanse na przetrwanie i skomercjalizowanie maszyn Lisp niż proponowany przez Greenblatta samowystarczalny start-up. Greenblatt przegrał bitwę.

To właśnie w tym momencie, Symbolics , przedsiębiorstwo Noftskera, powoli się połączyło. Podczas gdy Noftsker wypłacał swojemu personelowi pensję, nie miał budynku ani sprzętu, nad którym mogliby pracować hakerzy. Umówił się z Patrickiem Winstonem, że w zamian za umożliwienie personelowi Symbolics pracy poza MIT, Symbolics pozwoli MIT swobodnie i wewnętrznie korzystać z całego oprogramowania opracowanego przez Symbolics. Około osiem miesięcy po katastrofalnej konferencji z Noftskerem do Greenblatt przyjechał konsultant z CDC , który wraz z grupą programistów z zachodniego wybrzeża próbował stworzyć aplikację komputerową w języku naturalnym, szukając maszyny Lisp do pracy dla jego grupy. Greenblatt postanowił założyć własną konkurencyjną firmę produkującą maszyny Lisp, ale nic nie zrobił. Konsultant, Alexander Jacobson, zdecydował, że jedynym sposobem, w jaki Greenblatt założy firmę i zbuduje maszyny Lisp, których Jacobson desperacko potrzebował, będzie popchnięcie i pomoc Greenblattowi w uruchomieniu firmy. Jacobson zebrał biznesplany, zarząd, wspólnik Greenblatta (niektórym F. Stephen Wyle). Nowo założona firma została nazwana LISP Machine, Inc. (LMI) i była finansowana z zamówień CDC za pośrednictwem Jacobsona.

W tym czasie rozpoczęła działalność Symbolics (firma Noftskera). Przeszkodziła w tym obietnica Noftskera, która zapewni Greenblattowi roczny start na starcie , oraz poważne opóźnienia w pozyskiwaniu kapitału wysokiego ryzyka. Symbolics nadal miał tę główną przewagę, że podczas gdy 3 lub 4 hakerów AI Lab pracowało dla Greenblatt, 14 innych hakerów podpisało umowę na Symbolics. Dwóch pracowników AI Lab nie zostało zatrudnionych również przez: Richarda Stallmana i Marvina Minsky'ego . Stallman jednak obwiniał Symbolics za upadek społeczności hakerów, która skupiała się wokół laboratorium AI. Przez dwa lata, od 1982 do końca 1983, Stallman pracował samodzielnie nad klonowaniem dorobku programistów Symbolics, aby uniemożliwić im zdobycie monopolu na komputery laboratorium.

Niezależnie od tego, po serii wewnętrznych bitew, Symbolics wystartowało w latach 1980/1981, sprzedając CADR jako LM-2, podczas gdy Lisp Machines , Inc. sprzedało go jako LMI-CADR. Symbolics nie zamierzało produkować wielu maszyn LM-2, ponieważ rodzina maszyn Lisp 3600 miała być dostarczana szybko, ale maszyny 3600 były wielokrotnie opóźniane i ostatecznie Symbolics wyprodukował około 100 maszyn LM-2, z których każda została sprzedana za 70 000 dolarów. Obie firmy opracowały produkty drugiej generacji oparte na CADR: Symbolics 3600 i LMI-LAMBDA (z których LMI udało się sprzedać około 200). Model 3600, który został dostarczony z rocznym opóźnieniem, rozszerzył CADR, rozszerzając słowo maszynowe do 36-bitów, rozszerzając przestrzeń adresową do 28-bitów i dodając sprzęt w celu przyspieszenia niektórych typowych funkcji, które zostały zaimplementowane w mikrokodzie w CADR. LMI-LAMBDA, który pojawił się rok po 3600, w 1983 roku, był kompatybilny z CADR (może uruchamiać mikrokod CADR), ale istniały różnice sprzętowe. Firma Texas Instruments (TI) dołączyła do walki, gdy uzyskała licencję na projekt LMI-LAMBDA i wyprodukowała swój własny wariant, TI Explorer . Niektóre z LMI-LAMBDA i TI Explorer były podwójnymi systemami z procesorami Lisp i Unix . TI opracowała również 32-bitowy mikroprocesor wersję procesora Lisp dla TI Explorer. Ten chip Lisp był również używany w MicroExplorer – płytce NuBus dla Apple Macintosh II (NuBus został początkowo opracowany w MIT do użytku w maszynach Lisp).

Symbolics kontynuował rozwój rodziny 3600 i jej systemu operacyjnego Genera oraz wyprodukował Ivory, implementację VLSI architektury Symbolics. Począwszy od 1987 roku opracowano kilka maszyn opartych na procesorze Ivory: płyty dla Suns i Mac, samodzielne stacje robocze, a nawet systemy wbudowane (I-Machine Custom LSI, 32-bitowy adres, Symbolics XL-400, UX-400, MacIvory II w 1989 roku dostępnymi platformami były Symbolics XL-1200, MacIvory III, UX-1200, Zora, NXP1000 "pizzeria"). Texas Instruments zamieniło Explorera w krzem jako MicroExplorer, który był oferowany jako karta dla Apple Mac II . LMI porzuciło architekturę CADR i opracowało własną K-Machine, ale LMI zbankrutowało, zanim maszyna mogła zostać wprowadzona na rynek. Przed swoim upadkiem LMI pracowało nad systemem rozproszonym dla LAMBDA wykorzystującym przestrzeń Moby.

Maszyny te posiadały sprzętową obsługę różnych prymitywnych operacji Lisp (testowanie typu danych, kodowanie CDR ), a także sprzętową obsługę przyrostowego zbierania śmieci . Bardzo sprawnie prowadzili duże programy Lisp. Maszyna Symbolics była konkurencyjna wobec wielu komercyjnych superminikomputerów , ale nigdy nie została przystosowana do konwencjonalnych celów. Symbolics Lisp Machines były również sprzedawane na niektóre rynki niezwiązane ze sztuczną inteligencją, takie jak grafika komputerowa , modelowanie i animacja.

Wywodzące się z MIT maszyny Lisp działały w dialekcie Lisp o nazwie Lisp Machine Lisp , wywodzącym się od Maclisp MIT . Systemy operacyjne zostały napisane od podstaw w Lispie, często przy użyciu rozszerzeń zorientowanych obiektowo. Później te maszyny Lisp obsługiwały również różne wersje Common Lisp (z Flavors , New Flavors i Common Lisp Object System (CLOS)).

Interlisp, BBN i Xerox

Bolt, Beranek i Newman (BBN) opracowali własną maszynę Lisp o nazwie Jericho, która obsługiwała wersję Interlisp . Nigdy nie był sprzedawany. Sfrustrowana cała grupa AI zrezygnowała i została zatrudniona głównie przez Xerox. Tak więc Xerox Palo Alto Research Center , jednocześnie z własnym rozwojem Greenblatt w MIT, opracowało własne maszyny Lisp, które zostały zaprojektowane do obsługi InterLisp (a później Common Lisp ). Ten sam sprzęt był używany z innym oprogramowaniem, także jako maszyny Smalltalk i jako system biurowy Xerox Star . Należą do nich Xerox 1100, Dolphin (1979); Xerox 1132, Dorado ; Xerox 1108, Dandelion (1981); Xerox 1109, Dandetiger ; oraz Xerox 1186/6085 , Świt . System operacyjny maszyn Xerox Lisp również został przeniesiony na maszynę wirtualną i jest dostępny dla kilku platform jako produkt o nazwie Medley . Maszyna Xerox była dobrze znana z zaawansowanego środowiska programistycznego (InterLisp-D), menedżera okien ROOMS, z wczesnego graficznego interfejsu użytkownika i nowatorskich aplikacji, takich jak NoteCards (jedna z pierwszych aplikacji hipertekstowych ).

Xerox pracował również nad maszyną Lisp opartą na przetwarzaniu zredukowanego zestawu instrukcji (RISC), używając procesora Xerox Common Lisp i planował wprowadzić go na rynek do 1987 r., co nie nastąpiło.

Zintegrowane maszyny wnioskowania

W połowie lat 80. firma Integrated Inference Machines (IIM) zbudowała prototypy maszyn Lisp o nazwie Inferstar.

Rozwój maszyn Lisp poza Stanami Zjednoczonymi

W latach 1984-85 brytyjska firma Racal-Norsk, wspólna spółka zależna Racal i Norsk Data , próbowała zmienić przeznaczenie supermini ND-500 Norsk Data na mikrokodowaną maszynę Lisp, korzystając z oprogramowania CADR: Knowledge Processing System (KPS).

Japońscy producenci podjęli kilka prób wejścia na rynek maszyn Lisp: koprocesor Fujitsu Facom-alpha mainframe, Elis firmy NTT, procesor AI (AIP) firmy Toshiba i LIME firmy NEC. W ramach kilku uniwersyteckich prac badawczych powstały działające prototypy, między innymi TAKITAC-7 z Uniwersytetu w Kobe, FLATS z RIKEN i EVLIS z Uniwersytetu w Osace.

We Francji powstały dwa projekty Lisp Machine: M3L na Uniwersytecie Paula Sabatier w Tuluzie, a później MAIA.

W Niemczech Siemens zaprojektował oparty na RISC koprocesor Lisp COLIBRI.

Koniec maszyn Lisp

Wraz z nadejściem zimy AI i wczesnymi początkami rewolucji mikrokomputerowej , która zmiotła producentów minikomputerów i stacji roboczych, tańsze komputery stacjonarne wkrótce będą mogły uruchamiać programy Lisp nawet szybciej niż maszyny Lisp, bez użycia sprzętu specjalnego przeznaczenia. Ich biznes sprzętowy o wysokiej marży został wyeliminowany, większość producentów maszyn Lisp zniknęła z rynku na początku lat 90., pozostawiając tylko firmy oparte na oprogramowaniu, takie jak Lucid Inc. lub producentów sprzętu, którzy przeszli na oprogramowanie i usługi, aby uniknąć awarii. Od stycznia 2015 r., oprócz Xeroxa i TI, Symbolics jest jedyną nadal działającą firmą obsługującą maszyny Lisp, sprzedającą środowisko oprogramowania maszynowego Open Genera Lisp oraz system algebry komputerowej Macsyma .

Spuścizna

Podjęto kilka prób napisania emulatorów open-source dla różnych maszyn Lisp: emulacja CADR, emulacja maszyny Symbolics L Lisp, projekt E3 (emulacja TI Explorer II), Meroko (TI Explorer I) i Nevermore (TI Explorer I). 3 października 2005 r. MIT wydał kod źródłowy CADR Lisp Machine jako open source.

We wrześniu 2014 r. Alexander Burger, twórca PicoLisp , ogłosił PilMCU, implementację PicoLisp w sprzęcie.

Archiwum dokumentów PDF Bitsavers zawiera wersje PDF obszernej dokumentacji dla maszyn Lisp Symbolics, maszyn TI Explorer i MicroExplorer Lisp oraz maszyn Xerox Interlisp-D Lisp.

Aplikacje

Domeny wykorzystujące maszyny Lisp dotyczyły głównie szerokiego zakresu zastosowań sztucznej inteligencji, ale także grafiki komputerowej, przetwarzania obrazu medycznego i wielu innych.

Dostępne były główne komercyjne systemy eksperckie lat 80.: Knowledge Engineering Environment (KEE) Intellicorp, Knowledge Craft firmy The Carnegie Group Inc. oraz ART ( Automated Reasoning Tool ) firmy Inference Corporation.

Przegląd techniczny

Początkowo maszyny Lisp zostały zaprojektowane jako osobiste stacje robocze do tworzenia oprogramowania w Lisp. Były używane przez jedną osobę i nie oferowały trybu wielu użytkowników. Maszyny wyposażono w duży, czarno-biały wyświetlacz bitmapowy, klawiaturę i mysz, kartę sieciową, lokalne dyski twarde, ponad 1 MB pamięci RAM, interfejsy szeregowe i lokalną magistralę dla kart rozszerzeń. Kolorowe karty graficzne, napędy taśmowe i drukarki laserowe były opcjonalne.

Procesor nie uruchamiał bezpośrednio Lispu, ale był maszyną stosu z instrukcjami zoptymalizowanymi dla skompilowanego Lispu. Wczesne maszyny Lisp używały mikrokodu do dostarczenia zestawu instrukcji. W przypadku kilku operacji sprawdzanie i wysyłanie typów odbywało się sprzętowo w czasie wykonywania. Na przykład tylko jedna operacja dodawania może być używana z różnymi typami liczbowymi (liczby całkowite, zmiennoprzecinkowe, wymierne i zespolone). Rezultatem była bardzo kompaktowa skompilowana reprezentacja kodu Lisp.

W poniższym przykładzie użyto funkcji zliczającej liczbę elementów listy, dla których zwracany jest predykat true.

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

Zdeasemblowany kod maszynowy dla powyższej funkcji (dla mikroprocesora Ivory firmy 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

System operacyjny wykorzystywał pamięć wirtualną, aby zapewnić dużą przestrzeń adresową. Zarządzanie pamięcią odbywało się za pomocą zbierania śmieci. Cały kod dzielił jedną przestrzeń adresową . Wszystkie obiekty danych były przechowywane z tagiem w pamięci, aby można było określić typ w czasie wykonywania. Obsługiwanych było wiele wątków wykonawczych, które określano jako procesy . Wszystkie procesy działały w jednej przestrzeni adresowej.

Całe oprogramowanie systemu operacyjnego zostało napisane w języku Lisp. Firma Xerox użyła Interlisp. Symbolics, LMI i TI używały Lisp Machine Lisp (potomek MacLisp). Wraz z pojawieniem się Common Lisp, Common Lisp był obsługiwany na maszynach Lisp, a niektóre oprogramowanie systemowe zostało przeniesione do Common Lisp lub później napisane w Common Lisp.

Niektóre późniejsze maszyny Lisp (takie jak TI MicroExplorer, Symbolics MacIvory lub Symbolics UX400/1200) nie były już kompletnymi stacjami roboczymi, ale płytami zaprojektowanymi do osadzania w komputerach-hostach: Apple Macintosh II i SUN 3 lub 4.

Niektóre maszyny Lisp, takie jak Symbolics XL1200, miały szerokie możliwości graficzne przy użyciu specjalnych kart graficznych. Maszyny te były używane w dziedzinach takich jak przetwarzanie obrazów medycznych, animacja 3D i CAD.

Zobacz też

  • ICAD – przykład oprogramowania inżynierskiego opartego na wiedzy pierwotnie opracowanego na maszynie Lisp, które było na tyle przydatne, że można je było następnie przenieść za pośrednictwem Common Lisp do Uniksa
  • Technologia osierocona

Bibliografia

Ogólny

Zewnętrzne linki