A história da computação pode ser dividida em três eras: a história dos computadores mainframe, microcomputadores e microcomputadores. Os microcomputadores forneceram uma ponte importante entre os primeiros computadores mainframe e os microcomputadores onipresentes de hoje. Esta é a história do PDP-11, o microcomputador mais influente e bem-sucedido de todos os tempos.
Atualmente, os microcomputadores têm sido usados em uma variedade de aplicações. Eles serviram como controladores de comunicação, controladores de instrumentos, grandes processadores de sistema, calculadoras de mesa e processadores de aquisição de dados em tempo real. Mas eles também lançaram as bases para grandes avanços na engenharia de hardware e contribuíram significativamente para sistemas operacionais modernos, linguagens de programação e computação interativa como os conhecemos hoje.
No mundo da computação de hoje, onde cada computador executa alguma variante do Windows, Mac ou Linux, é difícil dizer quais CPUs estão sob o sistema operacional. Mas houve um tempo em que as diferenças na arquitetura da CPU eram um grande problema. O PDP-11 ajuda a explicar por que isso acontece.
O PDP-11 foi introduzido em 1970, época em que a maior parte da computação era feita em computadores caros da GE, CDC e IBM, aos quais poucas pessoas tinham acesso. Não havia laptops, desktops ou computadores pessoais. A programação foi feita por poucas empresas, principalmente em assembly, COBOL e Fortran. A entrada era feita em cartões perfurados e os programas eram executados em grupos não interativos.
Embora o primeiro PDP-11 fosse modesto, ele lançou as bases para a conquista dos microcomputadores que tornariam uma nova geração de computadores mais prontamente disponíveis, revolucionando essencialmente a computação. PDP-11 ajudou a dar à luz Sistema operacional UNIX E a linguagem de programação C. Também afetará muito a próxima geração de arquiteturas de computador. Durante a vida útil de 22 anos do PDP-11 – um período inédito para os padrões atuais – mais de 600.000 PDP-11s foram vendidos.
Os primeiros protótipos do PDP-11 não eram muito impressionantes. O primeiro PDP-11 11/20 custa US$ 20.000, mas vem com apenas 4 KB de RAM. Usei fita de papel para armazenamento e tinha um controlador de impressora de teletipo ASR-33 que imprime 10 caracteres por segundo. Mas também tinha uma impressionante arquitetura ortogonal de 16 bits, oito registros, 65 KB de espaço de endereçamento, um tempo de ciclo de 1,25 MHz e um barramento de hardware UNIBUS flexível que suportava futuros periféricos. Esta foi uma combinação de sucesso para seu criador, a Digital Equipment Corporation.
A implementação inicial do PDP-11 incluiu controle de instrumentação em tempo real, automação da planta e processamento de dados. Como o PDP-11 ganhou uma reputação de flexibilidade, programação e acessibilidade, ele viu seu uso em sistemas de controle de semáforos, sistema de defesa antimísseis da Nike, controle de tráfego aéreo, usinas nucleares e sistemas de treinamento e comunicação de pilotos navais. Ele também foi pioneiro no processamento de texto e processamento de dados que hoje consideramos garantidos.
O efeito do PDP-11 se manifesta de forma impressionante na programação da montagem do dispositivo.
Noções básicas de programação do montador
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 memória RAM e armazenamento – perfeito para um ambiente nos primórdios da computação.
A linguagem assembly é um formato intermediário de baixo nível que é convertido em uma linguagem de máquina que pode ser executada diretamente por um computador. É discreto porque você está manipulando diretamente aspectos da arquitetura do computador. Simplificando, a programação em assembly move seus dados byte a byte através de registradores de hardware e memória. O que diferenciava a programação do PDP-11 era que o design do microcomputador era elegante. Toda instrução tem seu lugar, e toda instrução faz sentido.
O espaço de endereçamento de 16 bits significa que cada registrador pode lidar com até 64K de RAM, com os 4K mais altos reservados para entrada e saída mapeada na memória. Os PDP-11s podem lidar com um total de 128 KB de RAM usando clipes de registro (mais sobre isso daqui a pouco). Assim, embora os sistemas PDP-11 venham com apenas 4 KB de RAM, eles ainda são produtivos por meio do uso inteligente das primeiras técnicas de programação.
programa em linguagem assembly
É mais fácil entender esse conceito com um exemplo de um programa simples em linguagem assembly PDP-11, que discutiremos a seguir. Palavras-chave que começam com “.” São indicações para a assembléia. .globl
Exporte um rótulo como um ícone para o link para uso pelo sistema operacional. .text
Especifica o início do segmento de código. .data
Especifica o início de um segmento de dados separado. Palavras-chave terminadas em “:” são taxonomias. A programação em assembly usa rótulos para manipular a memória simbolicamente. (Nota: com a terminologia PDP-11 e codificação, sem texto após/comentário.)
Palavras-chave | Tradução |
.globl _main | Exporte o rótulo _main como um ponto de entrada para o sistema operacional usar |
.texto | Início do bloco de instruções onde está localizado o código somente leitura |
_principal: MOV VAL1, R0 | Copie o valor da palavra no local de memória VAL1 no registrador 0 |
Adicionar $ 10, R0 | Adicione 10 ao valor no registro 0 |
MOV R0, VAL1 | Copie o valor no registrador 0 para o local de memória VAL1 |
_.dados | Início do segmento de dados em que os dados são lidos/gravados |
VAL1: .word $ 100 | Mantenha 2 bytes de armazenamento para armazenar Val1, configurado para 100 |
Embora valores numéricos possam ser usados para endereços de memória, usar etiquetas em vez de endereços codificados facilita a programação e torna o código reposicionável na memória. Isso dá flexibilidade ao sistema operacional ao executar o código, garantindo que cada programa seja rápido e eficiente.
A diretiva do coletor de dados coloca os dados em um segmento de memória que pode ser lido e gravado. A parte de memória do código é somente leitura para evitar que erros de programação danifiquem o programa e causem travamentos. Essa separação de instruções e dados no PDP-11 é chamada de “divisão de instruções e dados”. Além de adicionar estabilidade, esse recurso também dobra o espaço de endereço, permitindo 64K para código e 64K para dados – isso foi considerado uma grande inovação na época. Assim, os microcomputadores X86 da Intel fizeram uso extensivo de setores.
“Entrepreneur. Professional music nerd. Beer evangelist. Avid tv aficionado. Social mediaholic.”