Лисп-машина - Lisp machine

Машины на Лиспе - это компьютеры общего назначения, предназначенные для эффективного запуска Лиспа в качестве основного программного обеспечения и языка программирования , обычно через аппаратную поддержку. Они являются примером компьютерной архитектуры на языке высокого уровня и в некотором смысле были первыми коммерческими однопользовательскими рабочими станциями . Несмотря на скромное количество (всего около 7000 единиц по состоянию на 1988 год), Lisp-машины стали пионерами в коммерческой реализации многих ныне обычных технологий, включая эффективный сбор мусора , лазерную печать , оконные системы , компьютерные мыши , растровую графику с высоким разрешением , компьютерную графику. рендеринг и сетевые инновации, такие как Chaosnet . В 1980-х годах несколько фирм построили и продали Lisp-машины: Symbolics (3600, 3640, XL1200, MacIvory и другие модели), Lisp Machines Incorporated (LMI Lambda), Texas Instruments ( Explorer и MicroExplorer ) и Xerox ( рабочие станции Interlisp -D). . Операционные системы были написаны на Lisp Machine Lisp , Interlisp (Xerox), а позже частично на Common Lisp .

Символика 3640 Лисп-машина

История

Исторический контекст

Компьютерные программы с искусственным интеллектом (ИИ) 1960-х и 1970-х годов по сути требовали того, что тогда считалось огромным количеством компьютерной мощности, измеряемой временем процессора и объемом памяти. Требования к мощности исследований в области искусственного интеллекта были усугублены символьным языком программирования Lisp, когда коммерческое оборудование было разработано и оптимизировано для ассемблера и языков программирования, подобных Фортрану. Сначала стоимость такого компьютерного оборудования означала, что его приходилось делить между многими пользователями. Поскольку технология интегральных схем уменьшила размер и стоимость компьютеров в 1960-х и начале 1970-х годов, а потребности программ ИИ в памяти стали превышать адресное пространство наиболее распространенного исследовательского компьютера, DEC PDP-10 , исследователи рассмотрели новый подход: компьютер, разработанный специально для разработки и запуска больших программ искусственного интеллекта и адаптированный к семантике языка Лисп . Чтобы операционная система была (относительно) простой, эти машины не будут совместно использоваться, а будут выделены отдельным пользователям.

Начальная разработка

В 1973 году Ричард Гринблатт и Томас Найт , программисты из Лаборатории искусственного интеллекта (AI Lab) Массачусетского технологического института (MIT) , начали то, что впоследствии стало проектом MIT Lisp Machine Project, когда они впервые начали создавать компьютер, запрограммированный для выполнения определенных основных операций Lisp. вместо того, чтобы запускать их в программном обеспечении, в архитектуре с 24-битными тегами . Машина также выполняла инкрементную (или Arena ) сборку мусора . В частности, поскольку переменные Lisp вводятся во время выполнения, а не во время компиляции, простое добавление двух переменных может занять в пять раз больше времени на обычном оборудовании из-за инструкций тестирования и перехода. Машины на Лиспе запускали тесты параллельно с более традиционным добавлением одиночных инструкций. Если одновременные тесты терпели неудачу, результат отбрасывался и пересчитывался; во многих случаях это означало увеличение скорости в несколько раз. Этот подход с одновременной проверкой также использовался при проверке границ массивов при обращении к ним и других задач управления памятью (а не просто сборки мусора или массивов).

Проверка типов была дополнительно улучшена и автоматизирована, когда обычное 32-битное байтовое слово было увеличено до 36 бит для Lisp-машин модели Symbolics 3600 и, в конечном итоге, до 40 или более бит (обычно лишние биты, не учитываемые следующим образом, были используется для кодов с исправлением ошибок ). Первая группа дополнительных битов использовалась для хранения данных типа, что сделало машину тегированной архитектурой , а оставшиеся биты использовались для реализации кодирования CDR (при этом обычные элементы связанного списка сжимаются, чтобы занимать примерно половину места), помогая сборке мусора. как сообщается, на порядок. Дальнейшим улучшением были две инструкции микрокода, которые специально поддерживали функции Лиспа , снижая стоимость вызова функции до 20 тактов в некоторых реализациях Symbolics.

Первая машина была названа машиной CONS (названной в честь оператора построения списка consв Лиспе). Часто ее с любовью называли « машиной Найта» , возможно, с тех пор, как Найт написал на эту тему свою магистерскую диссертацию; он был очень хорошо принят. Впоследствии она была улучшена до версии под названием CADR (каламбур; в Лиспе cadrфункция, возвращающая второй элемент списка, произносится /ˈkeɪ.dəɹ/ или /ˈkɑ.dəɹ/ , поскольку некоторые произносят слово "cadre" ), который был основан, по сути, на той же архитектуре. Около 25 из того, что по сути было прототипом CADR, были проданы в Массачусетском технологическом институте и за его пределами за ~ 50 000 долларов; он быстро стал излюбленной машиной для взлома - многие из наиболее популярных программных инструментов были быстро перенесены на него (например, Emacs был перенесен с ITS в 1975 году). Он был так хорошо принят на конференции по искусственному интеллекту, проведенной в Массачусетском технологическом институте в 1978 году, что Агентство перспективных оборонных исследовательских проектов (DARPA) начало финансировать его разработку.

Коммерциализация машинной технологии MIT Lisp

В 1979 году Рассел Нофтскер , будучи убежденным в том, что у машин на Лиспе блестящее коммерческое будущее благодаря силе языка Лисп и возможному фактору аппаратного ускорения, предложил Гринблатту коммерциализировать эту технологию. Гринблатт согласился, что противоречит интуиции для хакера лаборатории искусственного интеллекта, надеясь, что он сможет воссоздать неформальную и продуктивную атмосферу лаборатории в реальном бизнесе. Эти идеи и цели значительно отличались от идей Нофтскера. Эти двое долго вели переговоры, но ни один из них не пошел на компромисс. Поскольку предлагаемая фирма могла добиться успеха только при полной и безраздельной поддержке хакеров AI Lab как группы, Нофтскер и Гринблатт решили, что судьба предприятия зависит от них, и поэтому выбор должен быть предоставлен хакерам.

Последовавшие за этим обсуждения выбора разделили лабораторию на две фракции. В феврале 1979 года ситуация достигла апогея. Хакеры встали на сторону Нофтскера, полагая, что у коммерческой фирмы, поддерживаемой венчурным фондом, больше шансов выжить и коммерциализировать машины Lisp, чем у предложенного Гринблаттом самоподдерживающегося стартапа. Гринблатт проиграл битву.

Именно в этот момент , что Symbolics , предприятие Noftsker, в медленно сходились. Пока Нофтскер выплачивал своим сотрудникам зарплату, у него не было ни здания, ни оборудования, над которым могли бы работать хакеры. Он договорился с Патриком Уинстоном о том, что в обмен на разрешение сотрудникам Symbolics продолжать работать в MIT, Symbolics позволит MIT внутренне и свободно использовать все программное обеспечение, разработанное Symbolics. Консультант из CDC , который пытался создать компьютерное приложение на естественном языке с группой программистов с Западного побережья, пришел в Гринблатт в поисках машины на Лиспе для своей группы примерно через восемь месяцев после катастрофической конференции с Нофтскером. Гринблатт решил основать свою конкурирующую фирму по производству машин Лиспа, но ничего не сделал. Консультант Александр Якобсон решил, что единственный способ, которым Гринблатт собирается основать фирму и построить машины на Лиспе, в которых отчаянно нуждался Якобсон, - это если Якобсон подтолкнет Гринблатта к созданию фирмы или иным образом поможет ей создать фирму. Якобсон собрал бизнес-планы, правление, партнера Гринблатта (некто Ф. Стивен Уайл). Новообретенная фирма получила название LISP Machine, Inc. (LMI) и финансировалась за счет заказов CDC через Якобсона.

Примерно в это же время начала работу Symbolics (фирма Нофтскера). Это было затруднено обещанием Noftsker, чтобы дать Гринблэтте годовой фору , и серьезными задержки в приобретении венчурного капитала. У Symbolics по-прежнему было главное преимущество: в то время как 3 или 4 хакера AI Lab работали на Greenblatt, 14 других хакеров подписались на Symbolics. Двое сотрудников AI Lab тоже не были наняты: Ричард Столмен и Марвин Мински . Столмен, однако, обвинил Symbolics в упадке хакерского сообщества, сосредоточившегося вокруг лаборатории искусственного интеллекта. В течение двух лет, с 1982 года до конца 1983 года, Столлман сам работал над клонированием продукции программистов Symbolics с целью помешать им получить монополию на компьютеры лаборатории.

Тем не менее, после серии внутренних сражений, Symbolics действительно сдвинулась с мертвой точки в 1980/1981, продав CADR как LM-2, в то время как Lisp Machines , Inc. продавала его как LMI-CADR. Symbolics не намеревалась производить много LM-2, так как семейство машин Lisp 3600 должно было быть отправлено быстро, но 3600-е неоднократно задерживались, и Symbolics в итоге произвела около 100 LM-2, каждая из которых была продана за 70 000 долларов. Обе фирмы разработали продукты второго поколения на основе CADR: Symbolics 3600 и LMI-LAMBDA (из которых LMI удалось продать ~ 200). Модель 3600, выпущенная с опозданием на год, расширила CADR, расширив машинное слово до 36 бит, расширив адресное пространство до 28 бит и добавив оборудование для ускорения некоторых общих функций, которые были реализованы в микрокоде CADR. LMI-LAMBDA, выпущенный через год после 3600, в 1983 году, был совместим с CADR (он мог запускать микрокод CADR), но различия в аппаратном обеспечении существовали. Texas Instruments (TI) присоединилась к драке, когда она лицензировала дизайн LMI-LAMBDA и выпустила свой собственный вариант, TI Explorer . Некоторые из LMI-LAMBDA и TI Explorer были двойными системами с процессором Lisp и Unix . TI также разработала 32-битную микропроцессорную версию своего процессора Lisp для TI Explorer. Этот чип Lisp также использовался для MicroExplorer - платы NuBus для Apple Macintosh II (NuBus изначально был разработан в Массачусетском технологическом институте для использования в машинах Lisp).

Symbolics продолжила разработку семейства 3600 и его операционной системы Genera и выпустила Ivory - реализацию архитектуры Symbolics на СБИС . Начиная с 1987 года было разработано несколько машин на базе процессора Ivory: платы для Sun и Mac, автономные рабочие станции и даже встроенные системы (I-Machine Custom LSI, 32-битный адрес, Symbolics XL-400, UX-400, MacIvory II ; в 1989 году доступными платформами были Symbolics XL-1200, MacIvory III, UX-1200, Zora, NXP1000 «коробка для пиццы»). Компания Texas Instruments превратила Explorer в кристалл MicroExplorer, который предлагался в качестве карты для Apple Mac II . LMI отказалась от архитектуры CADR и разработала свою собственную K-Machine, но LMI обанкротилась до того, как машина могла быть выпущена на рынок. Перед своей кончиной LMI работала над распределенной системой для LAMBDA с использованием пространства Moby.

Эти машины имели аппаратную поддержку для различных примитивных операций Lisp (тестирование типов данных, кодирование CDR ), а также аппаратную поддержку для инкрементной сборки мусора . Они очень эффективно запускали большие программы на Лиспе. Машина Symbolics была конкурентоспособна против многих коммерческих супер миникомпьютеров , но никогда не была адаптирована для обычных целей. Машины Symbolics Lisp также продавались на некоторых рынках, не связанных с ИИ, таких как компьютерная графика , моделирование и анимация.

Машины Лиспа , производные от MIT, работали на диалекте Лиспа под названием Lisp Machine Lisp , происходящем от Maclisp из Массачусетского технологического института . Операционные системы были написаны с нуля на Лиспе, часто с использованием объектно-ориентированных расширений. Позже эти машины Шепелявости также поддерживаются различные версии Common LispАроматы , Новые Ароматы и Common Lisp Object System (CLOS)).

Интерлисп, BBN и Xerox

Болт, Беранек и Ньюман (BBN) разработали собственную машину Lisp, названную Jericho, которая запускала версию Interlisp . Он никогда не продавался. Разочарованная, вся группа AI ушла в отставку и была нанята в основном Xerox. Итак, исследовательский центр Xerox в Пало-Альто , одновременно с разработкой Гринблатта в Массачусетском технологическом институте, разработал свои собственные машины на Лиспе, которые были разработаны для работы с InterLisp (а затем и с Common Lisp ). Одно и то же оборудование использовалось с различным программным обеспечением, а также в качестве компьютеров Smalltalk и в качестве офисной системы Xerox Star . К ним относятся Xerox 1100, Dolphin (1979); Xerox 1132, Дорадо ; Xerox 1108, Одуванчик (1981); Xerox 1109, Dandetiger ; и Xerox 1186/6085 , Daybreak . Операционная система машин Xerox Lisp также была перенесена на виртуальную машину и доступна для нескольких платформ в виде продукта под названием Medley . Машина Xerox была хорошо известна своей продвинутой средой разработки (InterLisp-D), оконным менеджером ROOMS, своим ранним графическим пользовательским интерфейсом и новыми приложениями, такими как NoteCards (одно из первых гипертекстовых приложений).

Xerox также работала над машиной Lisp, основанной на вычислениях с сокращенным набором инструкций (RISC), с использованием «Xerox Common Lisp Processor» и планировала вывести ее на рынок к 1987 году, чего не произошло.

Интегрированные машины логического вывода

В середине 1980-х годов Integrated Inference Machines (IIM) построили прототипы Lisp-машин под названием Inferstar.

Разработки машин Lisp за пределами США

В 1984–85 годах британская фирма Racal-Norsk, совместная дочерняя компания Racal и Norsk Data , попыталась перепрофилировать супермини Norsk Data ND-500 в микрокодированную машину Lisp, работающую под управлением программного обеспечения CADR: системы обработки знаний (KPS).

Японские производители предприняли несколько попыток выйти на рынок машин Lisp: сопроцессор для мэйнфреймов Fujitsu Facom-alpha , Elis от NTT, процессор искусственного интеллекта Toshiba (AIP) и LIME от NEC. В результате нескольких университетских исследований были созданы рабочие прототипы, среди которых TAKITAC-7 Университета Кобе, FLATS RIKEN и EVLIS Университета Осаки.

Во Франции возникли два проекта Lisp Machine: M3L в Тулузском университете Поля Сабатье, а затем MAIA.

В Германии компания Siemens разработала сопроцессор COLIBRI на основе языка RISC.

Конец машин Lisp

С наступлением зимы искусственного интеллекта и ранним началом революции микрокомпьютеров , которая сместит производителей мини-компьютеров и рабочих станций, более дешевые настольные ПК вскоре смогут запускать программы на Лиспе даже быстрее, чем машины на Лиспе, без использования специального оборудования. Их высокоприбыльный аппаратный бизнес был ликвидирован, большинство производителей машин Lisp прекратили свою деятельность к началу 90-х, оставив только фирмы, основанные на программном обеспечении, такие как Lucid Inc., или производители оборудования, которые переключились на программное обеспечение и услуги, чтобы избежать краха. По состоянию на январь 2015 года, помимо Xerox и TI, Symbolics - единственная компания, занимающаяся машинами Lisp, которая все еще работает, и продает программную среду Open Genera Lisp и систему компьютерной алгебры Macsyma .

Наследие

Было сделано несколько попыток написать эмуляторы с открытым исходным кодом для различных машин Lisp: эмуляция CADR, симуляция L Lisp Machine Emulation, проект E3 (эмуляция TI Explorer II), Meroko (TI Explorer I) и Nevermore (TI Explorer I). 3 октября 2005 года Массачусетский технологический институт выпустил исходный код CADR Lisp Machine в виде открытого исходного кода.

В сентябре 2014 года Александр Бургер, разработчик PicoLisp , анонсировал PilMCU, аппаратную реализацию PicoLisp.

В архиве PDF-документов Bitsavers есть PDF-версии обширной документации для машин Symbolics Lisp, машин TI Explorer и MicroExplorer Lisp и машин Xerox Interlisp-D Lisp.

Приложения

Области, использующие машины Lisp, были в основном в широкой области приложений искусственного интеллекта, но также и в компьютерной графике, медицинской обработке изображений и многих других.

Были доступны основные коммерческие экспертные системы 80-х годов: среда разработки знаний Intellicorp (KEE), Knowledge Craft от The Carnegie Group Inc. и ART ( Automated Reasoning Tool ) от Inference Corporation.

Технический обзор

Изначально машины на Лиспе проектировались как персональные рабочие станции для разработки программного обеспечения на Лиспе. Они использовались одним человеком и не предлагали многопользовательский режим. Машины имели большой черно-белый растровый дисплей, клавиатуру и мышь, сетевой адаптер, локальные жесткие диски, оперативную память объемом более 1 МБ, последовательные интерфейсы и локальную шину для карт расширения. Цветные видеокарты, ленточные накопители и лазерные принтеры были необязательными.

Процессор не запускал Лисп напрямую, а представлял собой стековую машину с инструкциями, оптимизированными для скомпилированного Лиспа. Первые машины на Лиспе использовали микрокод для обеспечения набора команд. Для некоторых операций проверка типов и диспетчеризация выполнялись аппаратно во время выполнения. Например, только одна операция сложения может использоваться с различными числовыми типами (целые, числа с плавающей запятой, рациональные и комплексные числа). В результате получилось очень компактное скомпилированное представление кода Lisp.

В следующем примере используется функция, которая подсчитывает количество элементов списка, для которых возвращается предикат true.

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

Дизассемблированный машинный код для вышеуказанной функции (для микропроцессора Ivory от 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

Операционная система использовала виртуальную память для предоставления большого адресного пространства. Управление памятью осуществлялось с помощью сборки мусора. Весь код разделял единое адресное пространство . Все объекты данных хранились с тегом в памяти, так что тип можно было определить во время выполнения. Поддерживались множественные потоки выполнения, которые назывались процессами . Все процессы выполнялись в одном адресном пространстве.

Все программное обеспечение операционной системы было написано на Лиспе. Компания Xerox использовала Interlisp. Symbolics, LMI и TI использовали Lisp Machine Lisp (потомок MacLisp). С появлением Common Lisp Common Lisp поддерживался на Lisp-машинах, а некоторое системное программное обеспечение было перенесено на Common Lisp или позже написано на Common Lisp.

Некоторые более поздние Lisp-машины (такие как TI MicroExplorer, Symbolics MacIvory или Symbolics UX400 / 1200) больше не были полноценными рабочими станциями, а были платами, предназначенными для встраивания в главные компьютеры: Apple Macintosh II и SUN 3 или 4.

Некоторые машины на Лиспе, такие как Symbolics XL1200, обладали обширными графическими возможностями с использованием специальных графических плат. Эти машины использовались в таких областях, как обработка медицинских изображений, 3D-анимация и САПР.

Смотрите также

  • ICAD - пример программного обеспечения, основанного на знаниях, первоначально разработанного на Lisp-машине, которое было достаточно полезным для последующего портирования через Common Lisp в Unix.
  • Осиротевшие технологии

использованная литература

Общий

внешние ссылки