Máquina Lisp - Lisp machine

Uma máquina Knight preservada no Museu do MIT

As máquinas Lisp são computadores de uso geral projetados para executar Lisp com eficiência como seu software e linguagem de programação principal , geralmente por meio de suporte de hardware. Eles são um exemplo de arquitetura de computador de linguagem de alto nível e, de certo modo, foram as primeiras estações de trabalho comerciais de usuário único . Apesar de ser modesto em número (talvez 7.000 unidades no total em 1988), as máquinas Lisp foram pioneiras comercialmente em muitas tecnologias agora comuns, incluindo coleta de lixo eficaz , impressão a laser , sistemas de janelas , mouses de computador , gráficos raster de bitmap de alta resolução , gráficos de computador renderização e inovações de rede, como Chaosnet . Várias empresas construíram e venderam máquinas Lisp na década de 1980: Symbolics (3600, 3640, XL1200, MacIvory e outros modelos), Lisp Machines Incorporated (LMI Lambda), Texas Instruments ( Explorer e MicroExplorer ) e Xerox ( estações de trabalho Interlisp- D) . Os sistemas operacionais foram escritos em Lisp Machine Lisp , Interlisp (Xerox) e, posteriormente, parcialmente em Common Lisp .

Máquina Symbolics 3640 Lisp

História

Contexto histórico

Os programas de computador de inteligência artificial (IA) das décadas de 1960 e 1970 exigiam intrinsecamente o que era então considerado uma enorme quantidade de poder do computador, medida em tempo de processador e espaço de memória. Os requisitos de energia da pesquisa de IA foram exacerbados pela linguagem de programação simbólica Lisp, quando o hardware comercial foi projetado e otimizado para assembly - e linguagens de programação do tipo Fortran . No início, o custo desse hardware de computador significava que ele precisava ser compartilhado entre muitos usuários. Como a tecnologia de circuito integrado encolheu o tamanho e o custo dos computadores na década de 1960 e início de 1970, e as necessidades de memória dos programas de IA começaram a exceder o espaço de endereço do computador de pesquisa mais comum, o DEC PDP-10 , os pesquisadores consideraram uma nova abordagem: um computador projetado especificamente para desenvolver e executar grandes programas de inteligência artificial e adaptado à semântica da linguagem Lisp . Para manter o sistema operacional (relativamente) simples, essas máquinas não seriam compartilhadas, mas seriam dedicadas a usuários individuais.

Desenvolvimento inicial

Em 1973, Richard Greenblatt e Thomas Knight , programadores do Laboratório de Inteligência Artificial (AI Lab) do Massachusetts Institute of Technology (MIT), deram início ao que se tornaria o Projeto de Máquina Lisp do MIT quando começaram a construir um computador conectado para executar certas operações Lisp básicas, em vez de executá-los em software, em uma arquitetura marcada de 24 bits . A máquina também fazia coleta de lixo incremental (ou Arena ) . Mais especificamente, uma vez que as variáveis ​​Lisp são digitadas em tempo de execução em vez de em tempo de compilação, uma simples adição de duas variáveis ​​pode levar cinco vezes mais tempo no hardware convencional, devido às instruções de teste e desvio. As máquinas Lisp executaram os testes em paralelo com as adições de instrução única mais convencionais. Se os testes simultâneos falharam, o resultado foi descartado e recalculado; isso significou, em muitos casos, um aumento de velocidade devido a vários fatores. Essa abordagem de verificação simultânea também foi usada para testar os limites dos arrays quando referenciados e outras necessidades de gerenciamento de memória (não apenas coleta de lixo ou arrays).

A verificação de tipo foi ainda melhorada e automatizada quando a palavra de byte convencional de 32 bits foi ampliada para 36 bits para máquinas Lisp do modelo Symbolics 3600 e, eventualmente, para 40 bits ou mais (geralmente, os bits em excesso não contabilizados pelo seguinte foram usado para códigos de correção de erros ). O primeiro grupo de bits extras foi usado para armazenar dados de tipo, tornando a máquina uma arquitetura etiquetada , e os bits restantes foram usados ​​para implementar a codificação de CDR (em que os elementos usuais da lista vinculada são compactados para ocupar cerca de metade do espaço), auxiliando na coleta de lixo por supostamente uma ordem de magnitude. Uma outra melhoria foram duas instruções de microcódigo que suportavam especificamente funções Lisp , reduzindo o custo de chamar uma função para tão pouco quanto 20 ciclos de clock, em algumas implementações de Symbolics.

A primeira máquina foi chamada de máquina CONS (em homenagem ao operador de construção de lista consno Lisp). Freqüentemente, era carinhosamente chamada de máquina Knight , talvez desde que Knight escreveu sua tese de mestrado sobre o assunto; foi extremamente bem recebido. Posteriormente, foi aprimorado para uma versão chamada CADR (um trocadilho; em Lisp, a cadrfunção, que retorna o segundo item de uma lista, é pronunciada /ˈkeɪ.dəɹ/ ou /ˈkɑ.dəɹ/ , já que alguns pronunciam a palavra "cadre" ) que se baseava essencialmente na mesma arquitetura. Cerca de 25 do que eram essencialmente CADRs de protótipo foram vendidos dentro e sem o MIT por ~ $ 50.000; rapidamente se tornou a máquina favorita para hackear - muitas das ferramentas de software mais favorecidas foram rapidamente portadas para ela (por exemplo, o Emacs foi portado do ITS em 1975). Foi tão bem recebido em uma conferência de IA realizada no MIT em 1978 que a Defense Advanced Research Projects Agency (DARPA) começou a financiar seu desenvolvimento.

Comercializando tecnologia de máquina MIT Lisp

Em 1979, Russell Noftsker , convencido de que as máquinas Lisp tinham um futuro comercial brilhante devido à força da linguagem Lisp e ao fator facilitador da aceleração do hardware, propôs à Greenblatt que comercializasse a tecnologia. Em um movimento contra-intuitivo para um hacker do AI Lab, Greenblatt concordou, esperando talvez que pudesse recriar a atmosfera informal e produtiva do Lab em um negócio real. Essas ideias e objetivos eram consideravelmente diferentes dos da Noftsker. Os dois negociaram longamente, mas nenhum se comprometeu. Como a empresa proposta só poderia ter sucesso com a assistência total e integral dos hackers do AI Lab como um grupo, Noftsker e Greenblatt decidiram que o destino da empresa dependia deles e, portanto, a escolha deveria ser deixada para os hackers.

As discussões subsequentes sobre a escolha dividiram o laboratório em duas facções. Em fevereiro de 1979, as coisas chegaram ao auge. Os hackers ficaram do lado de Noftsker, acreditando que uma empresa financiada por fundos de risco comercial tinha uma chance melhor de sobreviver e comercializar máquinas Lisp do que a proposta de start-up autossustentável de Greenblatt. Greenblatt perdeu a batalha.

Foi nessa conjuntura que o Symbolics , a empresa de Noftsker, lentamente se formou. Enquanto Noftsker pagava um salário à sua equipe, ele não tinha prédio ou qualquer equipamento para os hackers trabalharem. Ele negociou com Patrick Winston que, em troca de permitir que a equipe da Symbolics continuasse trabalhando fora do MIT, a Symbolics permitiria que o MIT usasse interna e livremente todo o software desenvolvido pela Symbolics. Um consultor do CDC , que estava tentando montar um aplicativo de linguagem natural com um grupo de programadores da costa oeste, veio a Greenblatt, em busca de uma máquina Lisp para seu grupo trabalhar, cerca de oito meses após a desastrosa conferência com Noftsker. Greenblatt decidiu abrir sua própria empresa rival de máquinas Lisp, mas não fez nada. O consultor, Alexander Jacobson, decidiu que a única maneira de Greenblatt abrir a empresa e construir as máquinas Lisp de que Jacobson precisava desesperadamente seria se Jacobson pressionasse e ajudasse a Greenblatt a lançar a empresa. Jacobson reuniu planos de negócios, um conselho, um parceiro para Greenblatt (um certo F. Stephen Wyle). A nova firma foi batizada de LISP Machine, Inc. (LMI) e foi financiada por pedidos do CDC, via Jacobson.

Por volta dessa época, a Symbolics (empresa de Noftsker) começou a operar. Ela foi prejudicada pela promessa de Noftsker de dar à Greenblatt um ano de vantagem e por graves atrasos na obtenção de capital de risco. O Symbolics ainda tinha a grande vantagem de que, enquanto 3 ou 4 dos hackers do AI Lab haviam trabalhado para o Greenblatt, 14 outros hackers haviam se inscrito no Symbolics. Dois funcionários do AI Lab não foram contratados por nenhum dos dois: Richard Stallman e Marvin Minsky . Stallman, no entanto, culpou o Symbolics pelo declínio da comunidade de hackers que se concentrava no laboratório de IA. Durante dois anos, de 1982 ao final de 1983, Stallman trabalhou por conta própria para clonar a produção dos programadores do Symbolics, com o objetivo de evitar que ganhassem o monopólio dos computadores do laboratório.

Apesar de tudo, após uma série de batalhas internas, a Symbolics decolou em 1980/1981, vendendo o CADR como LM-2, enquanto a Lisp Machines , Inc. o vendeu como LMI-CADR. A Symbolics não pretendia produzir muitos LM-2s, já que a família de 3600 máquinas Lisp deveria ser enviada rapidamente, mas as 3600s foram adiadas repetidamente, e a Symbolics acabou produzindo ~ 100 LM-2s, cada um dos quais vendido por $ 70.000. Ambas as empresas desenvolveram produtos de segunda geração baseados no CADR: o Symbolics 3600 e o LMI-LAMBDA (dos quais a LMI conseguiu vender ~ 200). O 3600, que foi enviado com um ano de atraso, expandiu o CADR ampliando a palavra da máquina para 36 bits, expandindo o espaço de endereço para 28 bits e adicionando hardware para acelerar certas funções comuns que foram implementadas em microcódigo no CADR. O LMI-LAMBDA, que saiu um ano depois do 3600, em 1983, era compatível com o CADR (podia rodar o microcódigo CADR), mas existiam diferenças de hardware. A Texas Instruments (TI) entrou na briga quando licenciou o design do LMI-LAMBDA e produziu sua própria variante, o TI Explorer . Alguns dos LMI-LAMBDAs e o TI Explorer eram sistemas duais com um processador Lisp e um processador Unix . A TI também desenvolveu uma versão de microprocessador de 32 bits de sua CPU Lisp para o TI Explorer. Este chip Lisp também foi usado para o MicroExplorer - uma placa NuBus para o Apple Macintosh II (o NuBus foi inicialmente desenvolvido no MIT para uso em máquinas Lisp).

A Symbolics continuou a desenvolver a família 3600 e seu sistema operacional, Genera , e produziu o Ivory, uma implementação VLSI da arquitetura Symbolics. A partir de 1987, várias máquinas baseadas no processador Ivory foram desenvolvidas: placas para Suns e Macs, estações de trabalho autônomas e até sistemas embarcados (I-Machine Custom LSI, endereço de 32 bits, Symbolics XL-400, UX-400, MacIvory II ; em 1989, as plataformas disponíveis eram Symbolics XL-1200, MacIvory III, UX-1200, Zora, NXP1000 "caixa de pizza"). Texas Instruments encolheu o Explorer em silício como o MicroExplorer que foi oferecido como um cartão para o Apple Mac II . A LMI abandonou a arquitetura CADR e desenvolveu sua própria K-Machine, mas a LMI faliu antes que a máquina pudesse ser lançada no mercado. Antes de seu fim, o LMI estava trabalhando em um sistema distribuído para o LAMBDA usando o espaço Moby.

Essas máquinas tinham suporte de hardware para várias operações primitivas do Lisp (teste de tipo de dados, codificação de CDR ) e também suporte de hardware para coleta de lixo incremental . Eles executaram grandes programas Lisp de forma muito eficiente. A máquina Symbolics era competitivo contra muitos super comerciais minicomputadores , mas nunca foi adaptado para fins convencionais. As máquinas Symbolics Lisp também foram vendidas para alguns mercados que não são de IA, como computação gráfica , modelagem e animação.

As máquinas Lisp derivadas do MIT executavam um dialeto Lisp denominado Lisp Machine Lisp , descendente do Maclisp do MIT . Os sistemas operacionais foram escritos do zero em Lisp, geralmente usando extensões orientadas a objetos. Posteriormente, essas máquinas Lisp também suportaram várias versões do Common Lisp (com Flavors , New Flavors e Common Lisp Object System (CLOS)).

Interlisp, BBN e Xerox

Bolt, Beranek e Newman (BBN) desenvolveram sua própria máquina Lisp, chamada Jericho, que rodava uma versão do Interlisp . Nunca foi comercializado. Frustrado, todo o grupo AI renunciou e foi contratado principalmente pela Xerox. Assim, o Xerox Palo Alto Research Center desenvolveu , simultaneamente com o desenvolvimento do próprio Greenblatt no MIT, suas próprias máquinas Lisp que foram projetadas para rodar InterLisp (e mais tarde Common Lisp ). O mesmo hardware foi usado com software diferente, também como máquinas Smalltalk e como o sistema de escritório Xerox Star . Entre eles estão a Xerox 1100, Dolphin (1979); a Xerox 1132, Dorado ; the Xerox 1108, Dandelion (1981); a Xerox 1109, Dandetiger ; e a Xerox 1186/6085 , Daybreak . O sistema operacional das máquinas Xerox Lisp também foi portado para uma máquina virtual e está disponível para várias plataformas como um produto denominado Medley . A máquina Xerox era bem conhecida por seu ambiente de desenvolvimento avançado (InterLisp-D), o gerenciador de janelas ROOMS, por sua interface gráfica de usuário inicial e por novos aplicativos como NoteCards (um dos primeiros aplicativos de hipertexto ).

A Xerox também trabalhou em uma máquina Lisp baseada em RISC (Reduced Instruction Set Computing ), usando o 'Processador Xerox Common Lisp' e planejou trazê-lo ao mercado em 1987, o que não ocorreu.

Máquinas Integradas de Inferência

Em meados da década de 1980, Integrated Inference Machines (IIM) construíram protótipos de máquinas Lisp chamadas Inferstar.

Desenvolvimentos de máquinas Lisp fora dos Estados Unidos

Em 1984-85, uma empresa do Reino Unido, Racal-Norsk, uma subsidiária conjunta da Racal e Norsk Data , tentou redirecionar o supermini ND-500 da Norsk Data como uma máquina Lisp microcodificada, executando o software CADR: o Knowledge Processing System (KPS).

Houve várias tentativas de fabricantes japoneses de entrar no mercado de máquinas Lisp: o coprocessador de mainframe Fujitsu Facom-alpha , o Elis da NTT, o processador AI da Toshiba (AIP) e o LIME da NEC. Vários esforços de pesquisa da universidade produziram protótipos funcionais, entre eles o TAKITAC-7 da Universidade de Kobe, FLATS de RIKEN e EVLIS da Universidade de Osaka.

Na França, surgiram dois projetos de Máquina Lisp: M3L na Universidade de Toulouse Paul Sabatier e mais tarde MAIA.

Na Alemanha, a Siemens projetou o coprocessador Lisp baseado em RISC, COLIBRI.

Fim das máquinas Lisp

Com o início do inverno AI e o início da revolução do microcomputador , que varreria os fabricantes de minicomputadores e estações de trabalho, PCs desktop mais baratos logo poderiam rodar programas Lisp ainda mais rápido do que máquinas Lisp, sem o uso de hardware para fins especiais. Com a eliminação do negócio de hardware de alta margem de lucro, a maioria dos fabricantes de máquinas Lisp faliram no início dos anos 90, deixando apenas empresas baseadas em software como a Lucid Inc. ou fabricantes de hardware que mudaram para software e serviços para evitar o travamento. Em janeiro de 2015, além da Xerox e TI, a Symbolics é a única empresa de máquinas Lisp ainda em operação, vendendo o ambiente de software de máquina Open Genera Lisp e o sistema de álgebra computacional Macsyma .

Legado

Várias tentativas de escrever emuladores de código aberto para várias máquinas Lisp foram feitas: Emulação CADR, Emulação de máquina Symbolics L Lisp, o Projeto E3 (emulação TI Explorer II), Meroko (TI Explorer I) e Nevermore (TI Explorer I). Em 3 de outubro de 2005, o MIT lançou o código-fonte CADR Lisp Machine como código-fonte aberto.

Em setembro de 2014, Alexander Burger, desenvolvedor do PicoLisp , anunciou o PilMCU, uma implementação do PicoLisp em hardware.

O arquivo de documentos em PDF do Bitsavers contém versões em PDF da extensa documentação das máquinas Symbolics Lisp, das máquinas TI Explorer e MicroExplorer Lisp e das máquinas Xerox Interlisp-D Lisp.

Formulários

Os domínios que usavam as máquinas Lisp estavam principalmente no amplo campo de aplicativos de inteligência artificial, mas também em computação gráfica, processamento de imagens médicas e muitos outros.

Os principais sistemas especializados comerciais da década de 80 estavam disponíveis: Knowledge Engineering Environment (KEE) da Intellicorp, Knowledge Craft, do Carnegie Group Inc., e ART ( Automated Reasoning Tool ), da Inference Corporation.

Visão geral técnica

Inicialmente as máquinas Lisp foram projetadas como estações de trabalho pessoais para desenvolvimento de software em Lisp. Eles eram usados ​​por uma pessoa e não ofereciam o modo multiusuário. As máquinas forneciam uma tela grande, em preto e branco, de bitmap, teclado e mouse, adaptador de rede, discos rígidos locais, mais de 1 MB de RAM, interfaces seriais e um barramento local para placas de extensão. Placas gráficas coloridas, unidades de fita e impressoras a laser eram opcionais.

O processador não executou Lisp diretamente, mas era uma máquina de pilha com instruções otimizadas para Lisp compilado. As primeiras máquinas Lisp usavam microcódigo para fornecer o conjunto de instruções. Para várias operações, a verificação de tipo e o despacho eram feitos no hardware em tempo de execução. Por exemplo, apenas uma operação de adição pode ser usada com vários tipos numéricos (inteiro, flutuante, racional e números complexos). O resultado foi uma representação compilada muito compacta do código Lisp.

O exemplo a seguir usa uma função que conta o número de elementos de uma lista para a qual um predicado retorna true.

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

O código de máquina desmontado para a função acima (para o microprocessador Ivory da 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

O sistema operacional usava memória virtual para fornecer um grande espaço de endereço. O gerenciamento de memória foi feito com coleta de lixo. Todos os códigos compartilhavam um único espaço de endereço . Todos os objetos de dados foram armazenados com um tag na memória, para que o tipo pudesse ser determinado em tempo de execução. Múltiplos threads de execução eram suportados e denominados processos . Todos os processos foram executados em um espaço de endereço.

Todo o software do sistema operacional foi escrito em Lisp. Xerox usou Interlisp. Symbolics, LMI e TI usaram Lisp Machine Lisp (descendente de MacLisp). Com o aparecimento do Common Lisp, Common Lisp foi suportado nas máquinas Lisp e alguns softwares de sistema foram portados para Common Lisp ou posteriormente escritos em Common Lisp.

Algumas máquinas Lisp posteriores (como o TI MicroExplorer, o Symbolics MacIvory ou o Symbolics UX400 / 1200) não eram mais estações de trabalho completas, mas placas projetadas para serem embutidas em computadores host: Apple Macintosh II e SUN 3 ou 4.

Algumas máquinas Lisp, como a Symbolics XL1200, tinham habilidades gráficas extensas usando placas gráficas especiais. Essas máquinas foram usadas em domínios como processamento de imagens médicas, animação 3D e CAD.

Veja também

  • ICAD - exemplo de software de engenharia baseado em conhecimento originalmente desenvolvido em uma máquina Lisp que foi útil o suficiente para ser portado via Common Lisp para Unix
  • Tecnologia órfã

Referências

Em geral

links externos