Uma breve olhada no PDP-11, o minicomputador mais influente de todos os tempos

Uma breve olhada no PDP-11, o minicomputador mais influente de todos os tempos

A história da tecnologia de computação pode ser dividida em três eras: a era dos mainframes, dos minicomputadores e dos microcomputadores. Os minicomputadores se tornaram um elo importante entre os primeiros mainframes e os onipresentes microcomputadores de hoje. Esta é a história do PDP-11, o minicomputador mais influente e bem-sucedido.

Ao mesmo tempo, os minicomputadores foram usados ​​em uma variedade de aplicações. Eles serviram como controladores de comunicações, controladores de instrumentos, grandes pré-processadores de sistemas, calculadoras de mesa e processadores de aquisição de dados em tempo real. Mas eles também estabeleceram as bases para avanços significativos na arquitetura de hardware e fizeram grandes contribuições para sistemas operacionais modernos, linguagens de programação e computação interativa como os conhecemos hoje.

No mundo atual da computação, em que cada computador executa alguma versão do Windows, Mac ou Linux, é difícil distinguir as CPUs subjacentes ao sistema operacional. Mas houve um tempo em que as diferenças na arquitetura da CPU importavam muito. O PDP-11 ajuda a explicar por que isso acontece.

O PDP-11 foi introduzido em 1970, quando a maior parte da computação era feita em mainframes caros da GE, CDC e IBM aos quais poucos tinham acesso. Não havia laptops, desktops ou computadores pessoais. Apenas algumas empresas estavam envolvidas em programação, principalmente em linguagem assembly, COBOL e FORTRAN. A entrada era feita com cartões perfurados e os programas eram iniciados por execuções em lote não interativas.

Embora o primeiro PDP-11 fosse modesto, ele preparou o terreno para a invasão dos minicomputadores que tornou os computadores da próxima geração mais acessíveis, revolucionando essencialmente a computação. O PDP-11 ajudou a criar o sistema operacional UNIX e a linguagem de programação C. Também influenciaria muito a próxima geração de arquiteturas de computador. Nos 22 anos de vida do PDP-11 – uma quantidade de tempo sem precedentes para os padrões atuais – mais de 600.000 PDP-11s foram vendidos.

Os primeiros PDP-11 não eram tão impressionantes. O primeiro 11/20 PDP-11 custou $ 20.000, mas veio com apenas 4 KB de RAM. Ele usava fita de papel como armazenamento e tinha um console de teletipo ASR-33 que imprimia 10 caracteres por segundo. Mas também tinha uma incrível arquitetura ortogonal de 16 bits, oito registradores, 65 KB de espaço de endereço, um tempo de ciclo de 1,25 MHz e um barramento de hardware UNIBUS flexível que suportava futuros periféricos de hardware. Foi uma combinação vencedora para seu criador, a Digital Equipment Corporation.

A aplicação inicial do PDP-11 incluía controle de hardware em tempo real, automação de fábrica e processamento de dados. Como o PDP-11 ganhou reputação de flexibilidade, programabilidade e acessibilidade, encontrou uso em sistemas de controle de semáforos, sistema de defesa antimísseis da Nike, controle de tráfego aéreo, usinas nucleares, sistemas de treinamento de pilotos da Marinha e telecomunicações. Ele também foi pioneiro no processamento de texto e processamento de dados que hoje consideramos um dado adquirido.

E a influência do PDP-11 fica mais evidente na programação da montagem do aparelho.

Noções básicas de programação de montagem

Antes da invenção de linguagens de alto nível como Python, Java e Fortran, a programação era feita em linguagem assembly. A programação em linguagem assembly pode ser feita com muito pouca RAM e espaço em disco, ideal para os primeiros dias da computação.

A linguagem assembly é um formato intermediário de baixo nível que é convertido em linguagem de máquina, que pode então ser executado diretamente pelo computador. É de baixo nível porque você controla diretamente aspectos da arquitetura do computador. Simplificando, a programação em linguagem assembly move seus dados byte por byte através de registros de hardware e memória. O que diferenciava a programação do PDP-11 era o design elegante do minicomputador. Cada instrução tinha seu lugar e cada instrução tinha um significado.

O espaço de endereço de 16 bits significava que cada registro poderia endereçar diretamente até 64 KB de RAM, com os 4 KB principais reservados para entrada e saída mapeadas em memória. Os PDP-11s podiam endereçar um total de 128 KB de RAM usando segmentos de registro (falaremos mais sobre isso em breve). Portanto, embora os sistemas PDP-11 fossem fornecidos com apenas 4 KB de RAM, eles ainda eram produtivos devido ao uso inteligente de técnicas de programação anteriores.

programa de montagem

A maneira mais fácil de entender esse conceito é com um programa simples em linguagem assembly PDP-11, que veremos a seguir. Palavras-chave que começam com “.”são diretivas para o montador. .globlexporta o rótulo como um símbolo para o vinculador para uso pelo sistema operacional. .textdefine o início de um segmento de código. .datadefine o início de um único segmento de dados. Palavras-chave terminadas em “:” são tags. A programação em linguagem assembly usa rótulos para endereçar simbolicamente a memória. (Observação: com o advento do jargão e da codificação PDP-11, qualquer texto após / é um comentário.)

Palavras-chave Tradução
.globl_main Exporte o rótulo _main como um ponto de entrada para uso pelo sistema operacional.
.texto Início do segmento de instrução contendo código somente leitura
_principal: VALOR DO MOTOR1, R0 Copie o valor da palavra do local de memória VAL1 para o registro 0.
ADICIONE $ 10, R0 Adicione 10 ao valor no registrador 0
MOTOR R0 VALOR1 Copie o valor do registrador 0 para a localização de memória VAL1.
_.dados O início de um segmento de dados contendo dados de leitura/gravação.
VAL1:. palavra $ 100 Reserve 2 bytes de memória para manter Val1 inicializado em 100.

Embora você possa usar valores numéricos para endereços de memória, usar rótulos em vez de endereços codificados simplifica a programação e permite que você mova o código na memória. Isso dá ao sistema operacional a flexibilidade para executar o código, tornando cada programa rápido e eficiente.

diretiva do montador. data coloca dados em um segmento de memória que é legível e gravável. O segmento de memória de código é somente leitura para evitar que erros de programação corrompam o programa e causem travamentos. Essa separação de instruções de dados no PDP-11 é chamada de “separação de instruções e dados”. Além de melhorar a estabilidade, esse recurso também dobra o espaço de endereçamento, fornecendo 64 KB para código e 64 KB para dados, o que foi considerado uma inovação na época. Conseqüentemente, os microcomputadores Intel X86 posteriormente fizeram uso extensivo de segmentos.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *