Lisp-машина

редактировать

Машина Knight, хранящаяся в Музее MIT

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

Symbolics 3640 Lisp machine

Содержание

  • 1 История
    • 1.1 Исторический контекст
    • 1.2 Первоначальная разработка
    • 1.3 Коммерциализация машинной технологии MIT Lisp
    • 1.4 Interlisp, BBN и Xerox
    • 1.5 Интегрированные машины логического вывода
    • 1.6 Разработки машин Lisp за пределами США
    • 1.7 Конец машин на Лиспе
    • 1.8 Наследие
    • 1.9 Приложения
  • 2 Технический обзор
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки

История

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

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

Первоначальная разработка

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

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

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

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

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

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

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

Примерно в это время начала свою деятельность Symbolics (фирма Нофтскера). Этому препятствовали обещание Нофтскера предоставить Гринблатту фору на год, а также серьезные задержки с привлечением венчурного капитала. У 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, VLSI реализацию архитектуры 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 также продавались на некоторых рынках, не связанных с ИИ, таких как компьютерная графика, моделирование и анимация.

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

Interlisp, BBN и Xerox

Bolt, Beranek and Newman (BBN) разработали собственную машину на Лиспе, названную Jericho, на которой была запущена версия Interlisp. Он никогда не продавался. Разочарованная, вся группа ИИ ушла в отставку и была нанята в основном Xerox. Итак, Xerox Исследовательский центр Пало-Альто одновременно с собственными разработками Гринблатта в Массачусетском технологическом институте разработал свои собственные Lisp-машины, предназначенные для работы с 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-х годов Интегрированные машины логического вывода (IIM) построили прототипы машин на Лиспе под названием Inferstar.

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

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

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

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

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

Конец машин на Лиспе

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

Legacy

Было предпринято несколько попыток написать эмуляторы с открытым исходным кодом для различных машин 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-х годов: Knowledge Engineering Environment (KEE) Intellicorp, Knowledge Craft от The Carnegie Group Inc. и ART () от Inference Corporation.

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

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

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

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

(defun example-count (список предикатов) (let ((count 0)) (dolist (i list count) (when (funcall predicate i) (incf count)))))

Дизассемблированный машинный код для указанной выше функции (для микропроцессора Ivory от Symbolics):

Команда: (disassemble (compile # 'example-count)) 0 ENTRY: 2 REQUIRED, 0 OPTIONAL; Создание PREDICATE и LIST 2 PUSH 0; Создание COUNT 3 PUSH FP | 3; LIST 4 PUSH NIL; Создание 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.

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

См. Также

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

Ссылки

Общие

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

Последняя правка сделана 2021-05-27 11:16:40
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте