Zephyrnet Logo

O computador dos anos 1970: uma fatia da computação

Data:

O que o HP-1000 e o DEC VAX 11/730 têm em comum com os videogames Tempest e Battlezone? Mais do que você possa imaginar. Todas essas máquinas, junto com muitas outras daquela época, usavam CPUs bit slice da família AM2900.

A CPU bit slice foi um produto de muito sucesso que só poderia ter existido na década de 1970. Hoje, se você precisar de um sistema de computador, há muitas CPUs e até sistemas inteiros em um chip para você escolher. Você também pode obter muitos sistemas pequenos em nível de placa que provavelmente fariam tudo o que você desejasse. Na década de 1960, você não tinha escolha alguma. Você construiu placas de circuito com portas usando transistores, tubos, relés ou - talvez - portas IC de pequena escala. Então você conectou as placas.

Não era preciso ser um gênio para perceber que seria ótimo oferecer às pessoas um chip de CPU como o que você tem hoje. O problema é que a tecnologia de semicondutores da época não permitiria isso – pelo menos não com uma quantidade significativa de recursos. Por exemplo, o Motorola MC14500B de 1977 era um microprocessador de um bit e, embora tivesse sua utilidade, não era para todos nem para tudo.

The Answer

A resposta foi produzir o máximo possível de CPU em um chip e tomar providências para usar vários chips juntos para construir a CPU. Foi exatamente isso que a AMD fez com a família AM2900. Se você pensar bem, o que é uma CPU? Claro, existem variações, mas no fundo há um lugar para armazenar instruções, um lugar para armazenar dados, uma maneira de escolher instruções e uma maneira de operar com dados (como uma ALU – unidade lógica aritmética). As instruções movem dados de um lugar para outro e definem o estado de coisas como dispositivos de E/S, operações de ALU e assim por diante.

<img decoding="async" data-attachment-id="665623" data-permalink="https://hackaday.com/2024/03/06/the-1970s-computer-a-slice-of-computing/bcpu/" data-orig-file="https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-2.png" data-orig-size="785,551" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="bcpu" data-image-description data-image-caption="

CPU bitlice básica do data book da AMD

”data-medium-file=”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-2.png?w=400″ dados- arquivo grande =”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-2.png?w=785″ class=”tamanho- miniatura wp-image-665623″ src=”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing.png” alt width=”250″ altura=”175″ srcset=”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-2.png 785w, https://zephyrnet .com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-2.png?resize=250,175 250w, https://zephyrnet.com/wp-content/uploads/ 2024/03/the-1970s-computer-a-slice-of-computing-2.png?resize=400,281 400w” tamanhos=”(largura máxima: 250px) 100vw, 250px”>

CPU bitlice básica do data book da AMD

Claro, isso é uma simplificação exagerada, mas pode ser ampliado para descrever a maioria das CPUs tradicionais. Os chips AMD forneciam um caminho de dados de 4 bits que podia ser encadeado. Outros chips da família poderiam gerenciar a memória (incluindo, opcionalmente, DMA) e cuidar da contabilidade entre as fatias. Você poderia construir uma máquina de 8 bits com duas fatias, uma máquina de 24 bits com três e assim por diante.

Isso não apenas permitiu menos ICs do que os chips convencionais, mas também permitiu uma lógica bipolar que - especialmente na época - era mais rápida, mas não tão densa quanto NMOS ou CMOS. Chips como a família AM2900 permitem criar CPUs flexíveis. Eles se adaptam ao seu aplicativo e são executados rapidamente em comparação com o que você poderia fazer usando outros métodos.

Microcodificação

O microcódigo é comum em muitas CPUs, e as CPUs bitlice não foram exceção. Por exemplo, você pode ter uma instrução de microcódigo muito longa em que cada registro possui uma linha separada de leitura e gravação. Se você tivesse oito registros, seriam 16 bits apenas nesses controles. Então você também pode ter um código de função (4 bits) e um bit indicando se os códigos de condição devem ser atualizados. Agora, cada “instrução” tem 21 bits. Isso é mais longo do que você deseja, digamos, para uma máquina de 8 bits, então você define instruções que executam o microcódigo.

<img decoding="async" data-attachment-id="665630" data-permalink="https://hackaday.com/2024/03/06/the-1970s-computer-a-slice-of-computing/pin2901/" data-orig-file="https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-4.png" data-orig-size="317,460" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="pin2901" data-image-description data-image-caption="

Pinagem de AM2901

” data-medium-file=”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-4.png?w=276″ data-large-file=”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-4.png?w=317″ class=”size-thumbnail wp-image-665630″ src=”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-1.png” alt width=”172″ height=”250″ srcset=”https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-4.png 317w, https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-4.png?resize=172,250 172w, https://zephyrnet.com/wp-content/uploads/2024/03/the-1970s-computer-a-slice-of-computing-4.png?resize=276,400 276w” sizes=”(max-width: 172px) 100vw, 172px”>

Pinagem de AM2901

Por exemplo, uma instrução para adicionar o registrador A ao registrador B e deixar o resultado em B pode ter três etapas de microcódigo. O primeiro colocaria os registradores A e B no barramento de dados e afirmaria o código que faz a adição da ALU. Então, a segunda instrução colocaria o resultado no barramento de dados e comandaria o registrador B para ler o barramento de dados. A instrução final do microcódigo saltaria para a parte principal do microcódigo que lê a próxima instrução e continua o programa.

É assim que você normalmente projetaria uma CPU bitlice. Um AM2909, AM2910 ou AM2911 (sequenciadores de microprogramas) endereçaria uma ROM de armazenamento de microprogramas, que alimentaria comandos para uma matriz de chips AM2901. O AM40 de 2901 pinos veio em diversas variações (por exemplo, AM2901B), cada uma com melhorias tecnológicas para torná-las menores e mais rápidas.

O armazenamento de microprogramas orquestraria então a busca de instruções e sua execução. Presumivelmente, o microprograma era relativamente pequeno comparado ao software real, então sua ROM com o microcódigo poderia ser menor que a ROM que contém seu aplicativo real.

Cooperação

Claro, você não pode fazer tudo apenas adicionando outro chip. Eles têm que cooperar. Por exemplo, há uma saída F em cada chip que é de coletor aberto. Você conecta todas as saídas F com um resistor pull-up. Se qualquer fatia da CPU tiver um resultado diferente de zero, ela reduzirá a saída F. Portanto, se a saída F for alta, então o resultado inteiro (por mais bits que sejam) deverá ser zero.

O manuseio do transporte também é um problema. Se a sua primeira fatia adicionar 1111+0001, a resposta não será realmente 0000. É 0000 + um carry. Você pode simplesmente conectar cada saída Cn+4 à entrada Cn do próximo chip para obter ondulação, mas isso criará uma penalidade de velocidade que piorará à medida que você adicionar fatias. Você também pode usar um AM2902 para “olhar para frente” e obter melhor desempenho. Cada 2902 poderia lidar com quatro fatias ou 16 bits. Se você quiser ir além disso, poderá usar um AM2902 para prever até outros quatro AM2902s, cada um dos quais lidando com quatro fatias de CPU. Presumivelmente, seria possível estender ainda mais esse esquema se você quisesse ir além de 64 bits, embora em 1975 esse talvez não fosse o seu maior problema ao construir uma máquina tão grande.

A mudança e a multiplicação também exigiam cooperação. Era comum usar um multiplexador em cada extremidade da cadeia para determinar a origem de novos bits durante a mudança. Dependia apenas do que você precisava.

Personalização

Essa é uma coisa interessante sobre o uso de bit slice. Você poderia projetar exatamente o que precisava. Por que construir uma máquina de 32 bits se você precisava de 24 bits para a tarefa em questão? Por que usar multiplexadores para habilitar uma instrução de rotação que você nunca usará?

Hoje em dia, pegamos um alicerce e o adaptamos ao nosso problema. Com o bitslice, você criou uma CPU que se ajusta exatamente ao que você precisa. Havia muitas informações sobre como realizar diferentes operações, como buscar instruções, multiplicar ou trocar bytes no Livro de dados AM2900.

Esse data book também mostra os chips que você precisa, como AM2902s ou o AM48 “Superslice” de 2903 pinos com registros extensíveis, multiplicadores, divisão e outros circuitos especiais integrados.

Evolução

A família AM2900 teve muito sucesso. O AM2901 original começou com uma matriz muito grande usando Schottky de baixa potência e podia operar a 80 nanossegundos. Em 1978 – três anos depois, a matriz AM2901B tinha menos da metade do tamanho e podia suportar 50 nanossegundos. Em 1981, o AM2901C usava ECL internamente e podia fazer 37 nanossegundos na mesma matriz. Em 1979, você poderia até obter um coprocessador de ponto flutuante (o AMD9511).

Esses eram dispositivos simples porque eram necessários vários chips para suportá-los e vários AM2901s para fazer qualquer coisa maior que quatro bits. O AM2901 original, por exemplo, tinha apenas 540 portões a bordo. Mesmo assim, eles encontraram seu caminho em tudo, desde estações de trabalho e sintetizadores musicais até videogames. Devido à sua popularidade, havia muitos fornecedores secundários para o dispositivo e ainda é possível encontrar novos estoques antigos. Foram produzidas até cópias soviéticas.

Mais Bitslice

Muitas das CPUs fabricadas com o AM2900 eram proprietárias ou militares. Mas se você quiser ver um que tenha uma boa documentação, aqui está uma tese de mestrado de 1980 sobre a implementação de uma CPU compatível com Nova 1200 usando a tecnologia – bem, pelo menos parte de uma.

O AM2900 não era o único jogo da cidade. Em 1974, o IMP da National Semiconductor e a série 3000 da Intel estavam disponíveis. Além disso, Motorola, Texas Instruments, Fairchild, Raytheon e outros fabricaram dispositivos semelhantes. Mas, por vários motivos, o AM2900 é o que a maioria das pessoas pensa quando se lembra de CPUs bitlice. Na verdade, a dissertação de mestrado sobre o CPU Nova também traz uma tabela de outras tecnologias de bitslice e o motivo pelo qual não utilizaram nenhuma das outras. Por exemplo, alguns dos dispositivos usavam PMOS, que era lento. Outros usaram ECL, uma tecnologia rápida com uma merecida reputação de ser difícil de usar. Outro tese de 1976 tem lógica semelhante para selecionar o AM2900.

Quero mais?

[Ken Shirriff] desmontou uma variante ECL do AM2901. Há também um livro de 1980 você pode ler. Há também uma tonelada de documentos em um servidor Gopher (não estou brincando). Se o seu navegador não suporta Gopher - e isso não nos surpreenderá - experimente um dos muitos Proxies Gopher. O exemplo de design de computador de 16 bits vale especialmente a pena dar uma olhada. Quer um exemplo mais complexo? Aqui está uma CPU 8080 extremamente rápida construída com bitslice. Mais adiante hackaday.io, [zpekic] construiu recentemente este 8080 e executou o minúsculo Basic nele (veja o vídeo se você não acredita).

[Conteúdo incorporado]

A Xerox Star 8010 usou o AM2900 em 1981. Custa menos de US$ 17,000! Felizmente, você pode emule um se quiser. Por falar nisso, você pode meio que emular o AM2900 usando Java, embora possa não funcionar para todos os designs possíveis (dica: baixe dos releases).

local_img

Inteligência mais recente

local_img