O que o PDP-11 nos ensinou?


CG Bell, WD Strecker, “O que aprendemos com o computador do PDP-11”, 3º Simpósio anual sobre procedimentos de conferências de arquitetura de computadores, pp. 14, 1976.

Este artigo que selecionei hoje é uma retrospectiva do design de computadores. Este é um dos vários artigos de Gordon Bell com vários co-autores que descrevem o desenvolvimento, crescimento e substituição repentina da linha de produtos cult da empresa, minicomputadores PDP-11.

  • CG Bell, R. Cady, H. McFarland, B. Delagi, J. O'Laughlin, R. Noonan e W. Wulf, “Uma Nova Arquitetura para Mini-Computadores - O DEC PDP-11”, Anais da Sprint Joint Conferência por Computador, pp. 657-675, AFIPS Press, 1970.
  • CG Bell, WD Strecker, “O que aprendemos com o computador do PDP-11”, 3º Simpósio anual sobre procedimentos de conferências de arquitetura de computadores, pp. 14, 1976.
  • WD Strecker, “VAX-11/780: uma extensão de endereço virtual para a família DEC PDP-11”, Anais da National Computer Conference, pp. 967-980, AFIPS Press, 1978.
  • CG Bell, WD Strecker, “Retrospectiva: o que aprendemos com o PDP-11 - o que aprendemos com VAX e Alpha”, Anais do 25º Simpósio Internacional de Arquitetura de Computadores, pp. 6-10, 1998.

Este ano comemoramos o 60º aniversário da fundação da empresa que fabricou o PDP-11. Passaram-se 40 anos desde o momento em que este artigo foi escrito, e pensei que seria interessante rever os artigos de Bell do nosso ponto de vista moderno.



O que era a Digital Equipment Corporation?


Para imaginar a hora em que o artigo foi escrito, primeiro precisamos falar um pouco sobre a empresa que lançou o PDP-11, Digital Equipment Corporation de Maynard, Massachusetts. Mais conhecido como DEC.



A DEC foi fundada em 1957 por Ken Olsen e Harlan Anderson. Olsen e Anderson trabalharam juntos no Laboratório Lincoln no Instituto de Tecnologia de Massachusetts, onde notaram que os alunos ficaram na fila por horas para usar o TX-0 , um computador interativo experimental desenvolvido por Wes Clark

1
Clark continuou a desenvolver o TX-0 no TX-2 e mais tarde ingressou na DEC como chefe da LINC



Este é o TX-0.



Vamos comparar com algo como o IBM 704, um computador da época que os alunos geralmente ignoravam.

2
Após a apresentação, alguém sugeriu que a antipatia dos alunos em relação à IBM pudesse se basear na falta de orçamento para o tempo de computação desse sistema.

O que Olsen e Anderson descobriram foi que o desejo de usar um computador interativo era tão forte que havia um mercado para computadores “pequenos” projetados para esse papel.



A DEC introduziu inicialmente o PDP-1, uma versão comercial eficiente do TX-0.

Alteração : Michael Cheponis, chefe do projeto de recuperação do PDP-1, gentilmente me escreveu o seguinte:

Whirlwind e PDP-1 têm um código de operação de 5 bits, o TX-0 começou com um código de operação de 2 ou 3 bits, mas esse valor aumentou com um aumento no tamanho da memória do TX-2. Uma comparação da ordem dos códigos PDP-1 e Whirlwind revela que o PDP-1 é uma versão mais barata e um pouco melhorada da arquitetura Whirlwind.

  • Aprimoramento: endereço indireto adicionado.
  • Redução de custo: o “registro ativo” é removido e a instrução de chamada de sub-rotina é adicionada, e o contador de turnos é removido devido ao fato de que as instruções de multiplicação e divisão de números inteiros são substituídas pelas instruções da etapa de multiplicação e divisão, que fazem uma mudança de um dígito. A maior queda no preço do PDP-1 em comparação com o Whirlwind foi devido a uma alteração no design da lógica e no design.

O contraste entre o PDP-1 e o IBM 704 foi grande, mas vários anos antes os computadores interativos pequenos e lentos, como o Librascope LGP-30 e o Bendix G-15, já haviam aparecido e eram vendidos em quantidades semelhantes.

Deve-se notar também que o nome PDP é um acrônimo para “Processador de dados programado”, já que computadores na época significavam máquinas grandes, complexas e caras, e os capitalistas de risco talvez não suportassem o DEC se produzissem “computadores”.

3
Um dos primeiros jogos de computador, " Spacewar ", de Steve Russell, foi escrito para o PDP-1

Após o sucesso do PDP-1, o DEC ofereceu várias famílias de computadores, muitos dos quais foram projetados, pelo menos em parte, por Gordon Bell.

1. Introdução


Um computador não é completamente determinado pela arquitetura; reflete os aspectos tecnológicos, econômicos e humanitários da época e do local em que foi projetado e construído. Um computador acabado é um produto de sua época.

Desde o início, Bell nos informa que, para o sucesso de qualquer projeto de computador, você não precisa criar um melhor computador abstrato do mundo, mas sim o computador certo, levando em consideração o contexto.

Neste capítulo, veremos o PDP-11: os objetivos da criação, arquitetura, várias implementações e as pessoas que o criaram. Estudaremos seu design, começando pelas especificações da arquitetura, e consideraremos como eles foram influenciados pela tecnologia, organização do desenvolvimento, vendas, aplicativos, organização da produção e a natureza dos usuários finais.

Nessa época, em 1976, Bell era o chefe do desenvolvimento do DEC por quase quatro anos. É claro que ele vê o sucesso do PDP-11 em um contexto de mercado mais amplo, cujas necessidades deveriam satisfazer e que posteriormente influenciaram a evolução de toda a família do PDP-11.

Envelhecida no espírito das palavras de Bell, esta apresentação foca em dois aspectos do artigo, tecnologia e pessoas.

Fundamentos: os pensamentos por trás do design


Bell começa com essa observação: por sua natureza, a engenharia da computação é orientada para o objetivo de criar o produto final. Portanto, é difícil criar planos de longo prazo.

Estes são princípios ágeis. Naquele tempo. 25 anos antes de Snowbird e escrevendo o manifesto ágil. Quando foi escrito, o DEC não era mais uma startup que lutava por sua existência, era uma empresa madura com várias linhas de produtos de sucesso no mercado, e Bell disse que a necessidade de lançar um produto mínimo exigido (produto mínimo viável) é mais importante do que todos os outros produtos de longo prazo. planos.

Como o IBM / 360, o PDP-11 não foi desenvolvido como um único modelo de computador, mas como uma série de modelos, enquanto o software criado para o pequeno PDP-11 será compatível com o grande.

"O termo" arquitetura "é usado aqui para descrever os atributos do sistema, como o programador o vê, ou seja, "uma estrutura conceitual e comportamento funcional, e não para descrever a organização dos fluxos e gerenciamento de dados, design lógico e implementação física". - GM Amdahl GA Blaauw e FP Brooks Jr. Arquitetura do IBM System / 360, 1964

Devido à natureza aberta do PDP-11, qualquer coisa que interprete as instruções de acordo com as especificações do processador é PDP-11, e DEC, assim que o mercado do PDP-11 aqueceu, começou a criar implementações dessa arquitetura, eles tinham vários grupos, um deles dos quais eles construíram computadores rápidos e caros, enquanto outros projetaram computadores mais lentos por um preço mais baixo.

Apesar de seu estilo de planejamento evolutivo, o PDP-11 foi bem-sucedido no mercado: mais de 20.000 unidades foram vendidas nos seis anos em que estavam no mercado (1970-1975). Nesse caso, o design não é tão importante: uma organização de marketing grande e agressiva, armada com software para corrigir falhas e omissões na arquitetura, pode salvar praticamente qualquer design.

Aqui, Bell em seu artigo faz a pergunta: o PDP-11 teve um bom design ou apenas obteve uma vantagem através do marketing hiperativo? Para responder à sua própria pergunta, Bell considera o produto em termos dos critérios de design que ele e seus co-autores identificaram seis anos antes.

Espaço de endereço


A primeira fraqueza dos microcomputadores foi o espaço de endereço limitado. O erro maior e mais comum foi projetar um computador que não possui espaço de endereço suficiente para endereçar e gerenciar memória.

Os minicomputadores daquela época tinham um espaço de endereço de 12 bits, que permitia que apenas 4096 endereços fossem endereçados, cada um deles armazenando uma palavra de 12 bits.

Vale a pena notar que a palavra "minicomputador", que mais tarde se tornou o tamanho físico, foi originalmente formada a partir da frase "computador mínimo". O exemplo canônico foi o PDP-8, o modelo DEC anterior, que possuía apenas oito instruções.



O motivo do pequeno espaço de endereço foi o preço. A memória era extremamente cara nos anos 60 e início dos anos 70, quando cada bit consistia em um minúsculo núcleo magnético, que era entrelaçado na grade dos fios de controle.

Os núcleos foram dispostos em um painel, neste caso 4096 bits cada, que foram empilhados para obter uma palavra; portanto, 4096 palavras de memória consistiam em 16 milhões de anéis ( aqui, obviamente, um erro no texto original, 4096 palavras * 16 bits * 16 bits = 65536 anéis). aproximadamente tradução ), cada um dos quais foi, pelo menos em parte, montado à mão. Agora está claro por que a memória era tão cara.



Bell e outros projetistas do PDP-11 sabiam que os preços dos núcleos continuariam caindo e que a memória dos semicondutores, embora não fosse tão rentável na época, continuaria a ficar mais barata com base em um byte armazenado. Assim, a quantidade de memória que o comprador pode comprar aumentará com o tempo, pois os usuários tendem a comprar "sistemas pelo mesmo preço em dólares". Mas ainda

O PDP-11 seguiu essa má tradição de economizar em bits de endereço, mas foi salvo pelo princípio de que um bom design pode sobreviver a pelo menos uma grande mudança.

Mesmo levando em conta as previsões dos desenvolvedores, Bell observou que menos de dois anos se passaram desde a introdução da arquitetura PDP-11, exigindo a inclusão de um módulo de gerenciamento de memória na arquitetura para fornecer acesso a um espaço de endereço maior de 18 bits, com o custo de aumentar a complexidade do software . Alguns anos depois, outros 4 bits foram adicionados.

Para ser justo, embora Bell tenha se censurado por ser apressado, a tradição de criar espaço de endereço inadequado continua até hoje. Lembra da limitação de 640K no DOS? Lembre-se das batalhas com himem.sys? Diante de uma situação em que um programa de 32 bits requer mais de 2 GB para dados?

Então ninguém é perfeito.

Registros insuficientes


A segunda fraqueza dos minicomputadores foi a tendência a um número insuficiente de registros. Isso foi corrigido no PDP-11, que tinha oito registros de 16 bits. Posteriormente, seis registradores de 32 bits foram adicionados para aritmética de ponto flutuante. Mais registros podem aumentar o tempo de alternância do contexto da tarefa.

Não era incomum, mesmo para os mainframes da época, fornecer apenas um registro - a bateria. Se registros adicionais fossem fornecidos, eles eram usados ​​apenas como registros de índice, não como registros de uso geral.

Também é interessante observar a observação de Bell de que registros extras podem ser inconvenientes para o usuário. No início dos anos 70, o mais comum era programar máquinas diretamente na montadora.

Existe uma forte correlação entre o número de registros na arquitetura, o número de bits de endereço e o tamanho da instrução. Todos esses fatores estão causando memória insuficiente e fazia sentido pensar cuidadosamente no sistema de comando.

Nas máquinas Von Neumann (que eram praticamente todos os computadores dos anos 60), o programa e os dados compartilham o mesmo espaço de endereço limitado e um programa ineficaz desperdiça não apenas o tempo do computador, mas também a memória. Um programa lento pode ser tolerado, mas se o programa não couber na memória, foi fatal, ou seja, o método de codificação das instruções deve ser o mais eficiente possível.

Vejamos um caso muito comum de mudança de um local de memória para outro. Quantos bits são necessários para descrever esta operação? Aqui está uma implementação possível:

MOV addr addr 

Você precisa de 16 bits para o endereço de origem, outros 16 para o endereço de destino e um certo número de bits para codificar a própria instrução MOV. Se houver um total de 40 bits, esse não é um múltiplo de 16, o que significa uma codificação complexa de instruções de 2,5 bits. No entanto, e se carregarmos o endereço no registro?

 MOV (R0), (R1) 

Nesse caso, precisamos descrever apenas os registros, o PDP-11 possui 8 registros e apenas 3 bits são suficientes para descrever o registro, além de alguns bits para descrever o operador. Esse comando pode caber facilmente em uma palavra de 16 bits e não requer codificação complexa de instruções com comprimento variável.



Na realidade, o PDP-11 usa 6 bits por registrador e 4 bits por operação se a instrução tiver dois operandos.

Pilha de hardware


A terceira fraqueza dos minicomputadores foi a falta de suporte de hardware para a pilha. O PDP-11 implementou um mecanismo de incremento automático e decremento automático para o endereço. Esta solução é exclusiva do PDP-11 e provou ser extremamente útil. (E essa solução foi copiada por desenvolvedores de outros sistemas.)

Atualmente, é difícil imaginar hardware que não tenha uma pilha, mas, na verdade, a pilha não é muito importante se você não estiver usando recursão.

O design do PDP-11 remonta a 1969 e, se observarmos as linguagens de programação da época, FORTRAN e COBOL, elas não suportavam uma chamada de função recursiva. A sequência da chamada de função incluía o armazenamento do endereço de retorno em uma palavra vazia no início do procedimento, o que tornava a recursão impossível.



O PDP-11 define o ponteiro da pilha como o entendemos hoje, como um registro controlado pelas operações PUSH e POP, mas o PDP-11 foi além e permitiu que qualquer registro funcionasse como um ponteiro da pilha, adicionando um modificador de incremento / decremento automático aos registros do operando.

Por exemplo, uma instrução:

 MOV R4, -(R6) 

diminuirá o valor em R6 em dois e, em seguida, armazene o valor de R4 no endereço armazenado em R6. Assim, no montador PDP-11, colocamos o valor na pilha. Se algum de vocês programou para o ARM, isso deve ser familiar para você.

Isso significa que não há necessidade de instruções PUSH ou POP dedicadas, economiza espaço para instruções, permite usar qualquer registro como ponteiro de pilha, embora tradicionalmente o ponteiro de pilha seja R6 e seja usado pelo equipamento ao fazer uma chamada de subprograma.

Atraso de interrupção


A quarta fraqueza dos minicomputadores da época era o suporte limitado a interrupções e troca lenta de contexto, e esse problema foi resolvido usando o controlador de interrupção de vetor UNIBUS com conexão direta de interrupções de dispositivo.

Nesse momento da vida da DEC, quase todos os seus produtos tinham a arquitetura PDP-10, o mainframe da DEC projetado para aplicativos interativos, laboratórios e controle de processos. A resposta a interrupções, o atraso entre a ativação do sinal de interrupção e o início do processamento de interrupções, é essencial para obter alto desempenho em tempo real.

No PDP-11, o dispositivo que acionou a interrupção fornece o endereço do manipulador de interrupções. Bell escreve honestamente sobre isso:

O mecanismo principal é muito rápido, requer apenas quatro ciclos de acesso à memória desde o momento em que a interrupção foi solicitada até a primeira instrução do manipulador de interrupções ser executada.

Suporte de Personagem


A quinta fraqueza da maioria dos minicomputadores era o suporte inadequado a cadeias, que foi resolvido no PDP-11 pela capacidade de endereçar bytes diretamente.

A importância de apoiar cordas e personagens começou a crescer durante os anos 1960, quando surgiram soluções para a ciência e os negócios. O método de codificação dominante na época era o conjunto de caracteres de 6 bits, que fornecia espaço suficiente para letras maiúsculas, números de 0 a 9, um espaço e vários sinais de pontuação, suficientes para imprimir demonstrações financeiras.



Como a memória era muito cara, colocar um caractere em uma palavra de 12 ou 18 bits era simplesmente inaceitável, e os caracteres eram agrupados em palavras.

Isso melhora a eficiência do armazenamento, mas é difícil para operações como mover, comparar e combinar, que devem levar em conta que o caractere pode estar na parte inferior ou superior da palavra, o que aumenta a quantidade de memória cara ocupada pelo programa.

O problema foi resolvido no PDP-11, a máquina poderia operar com palavras de 16 bits e bytes de 8 bits, ganhando popularidade. Estender o comprimento dos caracteres em duas operações simplificadas de cadeia de caracteres e facilitou a adaptação ao padrão ASCII de 7 bits, cada vez mais popular, que era suportado pelo DEC na época. Bell termina este parágrafo assim:

Apesar do fato de as instruções para processamento de strings estarem ausentes no equipamento, as operações comuns de strings (movimentação, comparação, concatenação) poderiam ser programadas como um ciclo muito curto.

E isso é realmente verdade. Você pode escrever um procedimento de cópia em apenas duas instruções, assumindo que os endereços de origem e destino estejam nos registros.

 loop: MOVB (src)+, (dst)+ BNE loop 

Esse código aproveita o fato de que o comando MOV define os sinalizadores. O ciclo continuará até que o valor no endereço de origem se torne zero e, nesse ponto, o controle prossiga para a próxima instrução. É por isso que as linhas C terminam com zero.

ROM


O sexto ponto fraco dos minicomputadores foi a incapacidade de usar ROMs, e o PDP-11 não teve essa desvantagem. A maior parte do código escrito para o PDP-11 era "limpa" e permitia a reentrada sem esforços especiais do programador, o que permitia o uso direto da ROM.

Em aplicativos de controle de processo, nos quais os programas são relativamente fixos, eles devem fazer o download do programa toda vez de fita magnética ou fita perfurada, o que é caro. Você deve comprar e manter dispositivos de E / S raramente usados. É mais conveniente quando o programa está sempre presente no computador. No entanto, devido às fortes limitações na quantidade de memória e à falta de suporte de hardware para a pilha, o código auto-modificável costumava ser inevitável, o que limitava severamente o uso da ROM. Bell diz com orgulho que o PDP-11 mudou a situação.

E / S primitiva


A sétima fraqueza dos minicomputadores eram os recursos de E / S primitivos.

No final dos anos 60, quando o PDP-11 foi desenvolvido, os dispositivos de E / S eram muito caros. Os mainframes da época usavam o chamado canal I / O, no qual o processador central enviava um pequeno programa ao controlador de canal, que executava o programa e relatava o resultado. Um programa pode, por exemplo, carregar dados de uma fita magnética ou perfurar um cartão perfurado.

A E / S do canal era importante, pois permitia descarregar o processador das operações de E / S e executar ações de E / S ao mesmo tempo, o que aumenta a utilização do processador. A desvantagem foi que a E / S do canal exigia uma CPU separada em cada controlador de canal, o que aumentou significativamente o custo de todo o sistema.



No mundo dos minicomputadores, a E / S geralmente era feita diretamente na CPU, geralmente usando instruções especializadas codificadas para cada dispositivo específico, como uma unidade de fita ou impressora de console.

O PDP-11 introduziu algo incomum de E / S mapeada. Não era uma E / S mapeada na memória que você pode usar com a chamada de sistema mmap (2), mas apenas um acordo de que alguns endereços na memória não são apenas células de memória e seu conteúdo é exibido em placas inseridas no backplane, que no DEC foi chamado UNIBUS.



Por exemplo, o valor registrado em 777566
4
Os endereços são fornecidos em octal, como era habitual nas máquinas DEC de 12, 18 e 36 bits anteriores
será gravado em um dispositivo conectado ao console, geralmente um terminal de impressão.



Se você leu o valor do endereço 777570, recebeu o valor digitado pelos comutadores no painel frontal. Isso costumava ser usado para configurar o carregador de inicialização.



Da mesma forma, a unidade RK05 foi acessada escrevendo o número do setor no qual você deseja acessar o endereço 777412, o endereço em que deseja gravar os dados em 777410 e o número de palavras em 777406. Em seguida, defina o bit zero em 777404 como 1 ( bit GO) e a unidade transferirá o número desejado de palavras diretamente para a memória.



Meu dispositivo favorito era o KW11-L. Escrever o bit 6 no endereço 777546 aciona uma interrupção a cada 20 ms. Por que são 20 ms? Porque é um período de frequência CA

5
Se você encomendou um carro para uma região com uma frequência de rede de 60 Hz, ele tinha um número diferente (número da peça)

Sim, como um relógio doméstico, o PDP-11 contava o tempo por períodos de tensão na rede.

Alto custo de programação


A nona fraqueza dos minicomputadores foi o alto custo da programação. Muitos usuários programados em linguagem assembly sem editores e IDEs convenientes, sistemas de arquivos e depuradores disponíveis em sistemas grandes. O PDP-11 não conseguiu superar essa desvantagem, embora o PDP-11 tenha construído sistemas mais complexos que os modelos anteriores, PDP-8 e PDP-15.

Devido à sua natureza minimalista, os minicomputadores não fornecem um ambiente conveniente para o desenvolvimento de programas. Freqüentemente usava a comutação tediosa de comutadores ou, talvez, editando e montando programas em outro computador grande e transferindo-os para uma fita de papel.

Era semelhante à forma como os microcontroladores são programados hoje, editamos o programa em uma grande estação de trabalho, compilamos o arquivo binário de destino e o transferimos para a memória flash do microcontrolador.



No entanto, parece que Bell não conhecia o trabalho de Thompson e Richie, que estavam ocupados construindo seu próprio ambiente de software no PDP-11 em Nova Jersey.

Pessoas que criaram o design


Vamos para a segunda seção: pessoas

Esta seção é mais interessante para mim, como fã de história, porque estudar a história dos computadores, como qualquer outro assunto histórico, é basicamente estudar a história das pessoas e o contexto em que elas tomaram decisões.

Bell observa que, embora os computadores sejam baseados em tecnologia, eles são fabricados pelo homem e, portanto, ele dedicou esta seção a descrever a dinâmica do grupo DEC durante o desenvolvimento do PDP-11.

Os problemas enfrentados pelos desenvolvedores de computadores podem ser divididos em duas partes: problemas devido à inexperiência e problemas de natureza sistêmica.

Aqui, Bell lembra as palavras de Fred Brooks de seu último livro da época, Mythical Man-Month .

Brooks, chefe do projeto OS / 360, luta há anos para criar um sistema operacional único e de uso geral que possa ser executado em todos os modelos IBM / 360, que era o objetivo do projeto. As palavras de Brooks estavam frescas na memória de Bell quando ele escreveu este parágrafo.

Linha do tempo do design


Esta seção é uma janela para o trabalho da DEC Corporation no final dos anos 1960.

A organização interna das equipes de design da DEC ao longo dos anos flutuou entre orientação de mercado e orientação de produto. Quando a empresa cresceu 30 ou 40% ao ano, houve uma necessidade de reorganização contínua. A qualquer momento, cerca de um terço dos funcionários trabalha na empresa há menos de um ano.

Levante as mãos se isso lhe for familiar.

Durante o desenvolvimento do PDP-11, a empresa foi estruturada em torno de linhas de produtos. Os desenvolvedores da empresa foram organizados em pequenos grupos: grupo PDP-10, grupo PDP-15 (máquina de 18 bits), grupo PDP-8, subgrupo PDP-8 / S, grupo LINC-8. Cada grupo incluía profissionais de marketing e engenheiros responsáveis ​​pelo desenvolvimento de produtos, software e hardware. Como resultado dessa organização, a experiência em arquitetura foi dividida em grupos.

Bell dedica algum tempo para revisar cada grupo, listando seus pontos fortes e fracos e sua contribuição para o PDP-11. Não vou listar tudo isso aqui, com uma exceção.

O grupo PDP-10 foi o mais forte da empresa. eles construíram máquinas grandes, poderosas e de compartilhamento de tempo. Era de várias maneiras uma divisão separada da empresa, com um mínimo de interações com outros grupos. Embora o grupo PDP-10 como um todo tivesse o melhor entendimento de como a arquitetura do sistema funciona, eles não tinham idéia da variedade de sistemas, estavam interessados ​​em construir apenas computadores de alta velocidade.

Recentemente, trabalhei em uma empresa de software na qual um ou dois dos produtos mais antigos geravam quase todos os lucros da empresa e entendo muito bem a posição de Bell. O PDP-10 era uma versão DEC do mainframe, muito rápida e disponível por apenas um preço fixo.

O primeiro trabalho de criação de um computador de 16 bits começou sob a supervisão de um gerente do PDP-15, um profissional de marketing com experiência em engenharia. O primeiro projeto foi chamado PDP-X e incluiu especificações para várias máquinas. Essa era a arquitetura da família de máquinas e foi melhor projetada do que o PDP-11 posterior, mas não era particularmente inovadora. Infelizmente, o gerente do grupo culpou a gerência de que seu projeto era potencialmente tão complexo quanto o PDP-10 (não era) e que ele tinha certeza da falha do projeto, e, portanto, ninguém mais queria fabricar outros computadores grandes além de um único computador grande empresa.

E aqui Bell nos dá uma boa lição: se suas competências estão na mesma cadeia que os projetos de outros gerentes, eles têm uma ferramenta eficaz para matar seu projeto antes que ele entre no mercado.

Em retrospecto, as pessoas envolvidas no desenvolvimento do PDP-X parecem ter trabalhado no desenvolvimento do Data General ao mesmo tempo.

Isso pode não ter sido percebido pelo leitor comum, mas é uma referência aos "traiçoeiros oito" de Shockley, uma década antes

6
Esse grupo incluía Robert Noyce e Gordon Moore, que dez anos depois deixaram a Fairchild e fundaram sua própria empresa Intel.

Edson de Castro, gerente de produto PDP-8 e gerente de projeto PDP-X deixou a DEC, com várias pessoas de sua equipe, para formar o Data General. Não está claro nos registros se De Castro foi embora porque o PDP-X foi descontinuado ou se sua partida foi a última gota para matar o projeto. De qualquer forma, o resultado foi óbvio, como escreve Bell.

Quando o projeto PDP-X foi fechado, o projeto DCM (Desk Calculator Machine, nome de código escolhido para a privacidade) começou. O design e o planejamento foram irregulares porque a Data General competia com seu pequeno computador de 16 bits.

A Data General não competiu com a DEC com seu computador Nova de 16 bits no mercado para o qual o PDP-8 foi desenvolvido e que De Castro conhecia como as costas da mão: equipamento de laboratório montado em rack



PDP-8 de 12 bits vs Nova de 16 bits da Data General



PDP-11: notas


Na última parte do artigo, o PDP-11 é comparado com seus antecessores e, em seguida, Bell avalia a própria arquitetura do PDP-11. O maior avanço foi o UNIBUS.

Em geral, o ônibus UNIBUS superou todas as expectativas. Centenas de tipos de dispositivos de armazenamento e periféricos poderiam ser conectados a ele; tornou-se um componente arquitetural padrão dos sistemas na faixa de preços de US $ 3 mil a US $ 100 mil (1975).

O que é o UNIBUS?




Os primeiros computadores comerciais foram projetados como um conjunto de módulos conectados a um backplane com conexões com fio. Nos dias de lâmpadas, isso era necessário porque as lâmpadas não eram confiáveis ​​e os módulos precisavam ser substituídos rapidamente.



Posteriormente, o desejo de construir um computador a partir de módulos padrão levou à construção de blocos lógicos generalizados conectados usando um backplane complexo.

Aqui está um exemplo dos primeiros módulos DEC.



Você pode montá-los em um backplane complexo com conexões com fio e construir um computador a partir deles, neste caso o PDP-8.

O UNIBUS é um desenvolvimento de desenvolvimentos anteriores do DEC e é uma abstração de um barramento de controle idealizado. A disponibilidade de componentes de integração médios elimina a necessidade de um backplane complexo e move a complexidade principal para os módulos instalados no backplane. Isso torna possível a construção de módulos padrão que se conectam a um computador.

O barramento UNIBUS, como padrão, era um componente da arquitetura que permite construir sistemas facilmente configuráveis. Qualquer empresa, não apenas a DEC, pode facilmente criar componentes que interagem com o barramento. Bons pneus criam um bom ambiente de engenharia no qual as pessoas podem se concentrar em um projeto estruturado. O UNIBUS criou uma indústria secundária que oferecia fontes alternativas de suprimento para memória e periféricos. Além do barramento IBM 360, o UNIBUS era o padrão de barramento mais comum na indústria de computadores.

Antes do advento do UNIBUS, quais dispositivos de entrada / saída o minicomputador podia suportar era determinado apenas por seus desenvolvedores. Como interagir com os dispositivos foi codificado por circuitos lógicos de computador. Com o advento do UNIBUS, um amplo campo foi aberto para personalizar o computador pelo usuário final e um campo para experimentos.

O que o PDP-11 nos ensinou?




A retrospectiva de Bell termina no momento em que o artigo foi escrito, ou seja, em 1976-77, mas, do nosso ponto de vista, quarenta anos depois, a influência do PDP-11 foi enorme.

RISC


Inicialmente, quando o PDP-11 ainda não estava desenvolvido e, além disso, não era considerado uma máquina RISC, esse termo não existia antes de ser introduzido por John Coke em 1976 em relação ao IBM 801. No entanto, para todos que tinham experiência em programação Processadores ARM, modernos processadores RISC, sua semelhança é óbvia. Assim como o design de linguagens de programação é um processo de desenvolvimento evolutivo e de empréstimo, o mesmo acontece com o design de um sistema de comando.

O PDP-11 também colocou uma estaca no coração das instruções de E / S selecionadas, aprovando o modelo de E / S mapeado para a memória, que é o mecanismo mais comum atualmente. Os únicos processadores que possuem instruções de E / S separadas são o Intel 8080 e seu primo Z80.

Unix


O PDP-11 teve um grande impacto no software e nos sistemas operacionais. O PDP-11 foi a máquina que Ken Thompson e Dennis Ritchie desenvolveram UNIX no Bell Labs.

7
O UNIX foi criado originalmente no PDP-7 . Em 1970, o desenvolvimento passou para o PDP-11/20 e, posteriormente, para o PDP-11/45.

Antes do PDP-11, o UNIX não existia. Antes do PDP-11, C não existia; era o computador para o qual C foi projetado. Se você quer saber por que no C clássico tem 16 bits, isso ocorre por causa do PDP-11.

O UNIX nos trouxe a idéia de pipes, “tudo é um arquivo” e computação interativa.

VAX-11/780


Na computação interativa, o uso da memória é ilimitado e, embora o PDP tenha sido bom para o controle de processos, as demandas da computação interativa foram o motivo da criação de um substituto para o PDP-11.

No ano em que Bell saiu, em 1977, foi lançado o seguidor do PDP-11, VAX-11, que significava "extensão de endereço virtual".

BSD


O UNIX chegou a Berkeley em 1974, Ken Thompson trouxe a fita, que foi o início do desenvolvimento na costa oeste da BSD - Berkley Systems Distribution.

O Berkeley UNIX foi portado para o VAX no início dos anos 80 e floresceu como uma alternativa contracultural ao sistema operacional VMS da DEC. O Berkeley UNIX gerou uma nova geração de hackers que mais tarde fundaram empresas como a Sun Microsystems e linguagens como Self, o que levou diretamente ao advento do Java.

O UNIX foi portado para um grande número de sistemas de computadores durante os anos 80 e, como resultado da “guerra do UNIX”, foram criados vários sistemas BSD que existem até hoje.

Seguinte


O 4BSD, um derivado da distribuição original de Berkeley, tornou-se a base do sistema operacional da família de computadores NeXT de Steve Jobs. Quando a Apple comprou a NeXT em 1997, o NextSTEP e seu derivado BSD se tornaram a base de Darwin, OSX e iOS.

Windows NT


Como dissemos anteriormente, falando de Edison de Castro, havia traidores no DEC.

Dave Cutler, arquiteto do sistema operacional VAX VMS, após uma tentativa fracassada de iniciar um novo projeto combinado de sistema operacional e hardware projetado para substituir o VAX, deixou a Microsoft em 1988, trazendo toda sua equipe e liderou o desenvolvimento do Windows NT. Quem conhece o interior do Windows e o sistema operacional VMS pode perceber recursos comuns.

Xerox alto


Para concluir a conversa sobre a história de Castro, a série Data General Nova inspirou Charles Tucker e Butler Lampson, desenvolvedores da Xerox Alto, que por sua vez inspiraram os desenvolvedores da Apple Macintosh.

Data general nova


A rivalidade entre Data General e DEC continuou na era de 32 bits, como Tracy Kidder, que ganhou o Prêmio Pulitzer em 1981, em seu livro The Soul of a New Machine .

O que aprendemos do PDP-11?


Embora seu desenvolvimento tenha sido às vezes caótico, e não sem falhas, o PDP-11 é o cruzamento de muitos segmentos da história.

Hardware, software, linguagens de programação, sistemas operacionais, PDP-11 influenciaram tudo isso.

Vale a pena comemorar

Publicações relacionadas


What did devops mean ?
Introducing gb, a project based build tool for the Go programming language
avr11: how to add 256 kilobytes of ram to an Arduino
Padding is hard

Source: https://habr.com/ru/post/pt435292/


All Articles