Eu realmente tenho realmente tentado aprender sobre o nível muito baixo de computadores. Estive pesquisando muitas páginas de homebrew e é bastante interessante. Tomei aulas de engenharia eletrônica na faculdade, mas não nos aprofundamos muito sobre o assunto (era ciência da computação, então a maioria de fato, eram algoritmos e tal).
De qualquer forma, como são / foram criadas as ALUs ? Sei que essa não é a única parte de um computador, mas ainda é uma parte importante.
E você poderia criar sua própria ALU usando apenas portas lógicas (para fins de aprendizado)? Entendo que isso provavelmente pareça estúpido para os mais entendidos, mas só estou tentando entender. (Caramba, mesmo um somador simples seria um projeto interessante.) Se sim, como isso seria feito? Existem exemplos de hardware? (Procurei no Google, mas não consigo encontrar nada desse tipo que tenha um guia passo a passo para explicar as coisas).
Respostas:
Você pode construí-los completamente a partir de portas lógicas básicas , e o resultado será uma bela obra de arte :-).
A série lógica 74xx também contém um 74LS181 , uma ALU de fatia de 4 bits , que simplifica drasticamente as coisas. As ALUs de fatia de bits foram usadas para criar ALUs mais complexas (leia-se: comprimentos de palavras mais longos), mas as tecnologias mais recentes tornaram obsoleto esse tipo de IC.
nota: TTL (74xx) é apenas uma tecnologia usada para portas lógicas. Raramente usado mais. Foi seguido por Schottky de baixa potência: 74LSxx, estritamente falando, também uma forma de TTL. Atualmente, existem dezenas de famílias lógicas, todas baseadas em CMOS de alta velocidade (74HCxx, 74HCTxx, 74ACxx, ...)
Atualmente, a maneira correta de criar uma ALU seria fazê-lo em um CPLD ou FPGA . Isso oferece muitas portas, e o HDL (Linguagem de Descrição de Hardware) que você usa para projetar a ALU é muito mais fácil e menos propenso a erros do que tentar descobrir como fazer as conexões com os portões lógicos. VHDL e Verilog são os HDL do dia.
Um método alternativo para criar uma ALU (embora não use portas lógicas) seria uma única EEPROM / Flash paralela . Você utiliza as entradas A e B e a operação como entrada (endereço) e obtém o resultado da operação como saída (dados). Tudo o que você precisa fazer é compilar o conteúdo da ROM, o que significa que você deve escrever em todos os endereços qual será o resultado da operação para as entradas correspondentes A, B e operação. O tamanho da palavra será limitado pelo maior tamanho de ROM possível.
fonte
Você pode criar sua própria ALU, mas mesmo computadores antigos com chips TTL discretos usaram alguma integração para isso. Por exemplo, veja o chip 74x181. Essa é uma fatia de uma ALU de 4 bits e foi usada em alguns computadores TTL para implementar a ALU completa usando um desses chips para cada 4 bits.
fonte
Eu começaria primeiro no mundo HDL. Escreva algum verilog, use o verilator ou icarus verilog para simular. Escreva o código de forma que ele se pareça com portões discretos e, ou, e não com portões, se for o caso, encontre algumas peças da série 74xx (recicladas?) E alguma coisa na tábua de pão. OU, existem várias placas de CPLD e FPGA de US $ 50 a mais ou menos e você pode colocar o alu em uma daquelas que vêm com algum tipo de interface externa para ver se está funcionando. Eu diria que a educação em HDL é a mesma que você aprende o básico do somador, etc. Mas você pode fazer isso em um ambiente fácil de usar e ver antes de levá-lo ao hardware. Muito parecido com o modo como as pessoas fazem hoje, projetam e simulam e depois implantam.
fonte
Para os livros, eu definitivamente sou o segundo dos livros "Patterson e Hennessy" (IIRC, existem 3, disfarçados de 3 edições, mas, na realidade, livros totalmente diferentes. Se você é sério: pegue todos.)
Se você quiser experimentar o ALU básico ou até o design da CPU: comece a experimentar com um simulador de lógica. Usamos o DigitalWorks para nossas aulas, mas eu não o recomendaria. O Logisim ( http://sourceforge.net/projects/circuit/ ) parece promissor. O que você precisa dominar é criar camadas: criar blocos básicos como um somador total, um seletor e um flip-flop acionado por borda dos portões e depois criar registros, ALU, lógica de seqüenciamento desses blocos de construção, até a CPU com memória. Realmente não é tão difícil de construir, digamos o equivalente a uma CPU PIC (núcleo de 14 bits), conecte um monte de LEDs e programe-o para mostrar uma tela Kitt.
Depois disso, será divertido criar um núcleo de 32 bits, portar o GCC, realizá-lo em um FPGA e executar o Linux nele. Mas você não será o primeiro ...
fonte
Não é uma pergunta estúpida. A página da Wikipedia mostra um circuito no nível de porta para uma ALU de 2 bits. Os ICs da ALU costumavam estar disponíveis em 'fatias' - normalmente de 4 bits, que você pode colocar em cascata para obter larguras de barramento maiores (consulte fatiamento de bits ).
A folha de dados para a ALU Texas 74181 de 4 bits também possui um esquema de nível de porta.
fonte
A história das CPUs é uma quantidade cada vez maior de coisas por pacote.
As CPUs mais antigas sempre usavam ALUs seriais construídas a partir de alguns relés ou tubos de vácuo. O primeiro a reverter essa tradição foi o Whirlwind de 1947.
As primeiras CPUs transistorizadas construíram tudo, desde transistores individuais.
O Apollo Guidance Computer (AGM), talvez o primeiro computador construído a partir de circuitos integrados, usava apenas um tipo de IC fora da memória: portas NOR de 3 entradas. A ALU e todas as outras partes da CPU foram criadas inteiramente a partir de um grande número de ICs de porta NOR. O Cray 1 (muito mais rápido) também usava apenas um tipo de IC fora da memória: outro tipo de porta NOR.
À medida que as pessoas descobriam como compactar mais transistores em um chip, as CPUs posteriores usavam (relativamente) menos chips para implementar uma ALU.
Uma ALU pode ser construída inteiramente a partir de multiplexadores ( "Multiplexers: o tático Nuke of Logic Design" ), usando muito menos chips do que a implementação da NOR.
Dieter Mueller publicou um design de ALU de 8 bits que tem mais funcionalidade do que dois chips 74181 - o 74181 não pode mudar à direita - construído com ainda menos chips: 14 chips TTL complexos: dois chips TTL complexos: dois adicionadores de 4 bits 74283, alguns 4: 1 mux e alguns 2: 1 mux.
Como muitos computadores comerciais historicamente importantes, muitas CPUs caseiras usam alguma versão do 74181, a primeira ALU "completa" em um único chip.
Muitas dessas CPUs construíram uma ALU de 8 bits ou 16 bits (ou ambos) de alguns chips 74181 e alguns 74182 - cada 74181 lida apenas com operações de 4 bits. As máquinas de homebrew normalmente usam a coisa mais simples possível que funcionará - a execução de um 74181 alimentando o de carregamento seguinte, formando um somador de transporte de ondulação. Máquinas comerciais que usam chips 74181 geralmente usam um gerador de transporte 74182 à frente para tornar a adição e a subtração significativamente mais rápidas.
Hoje, a maioria das ALUs está escondida dentro de algum chip - uma pequena parte de uma CPU, algum outro tipo de ASIC ou CPLD ou FPGA.
Mesmo após a disponibilidade de "computadores com chip único", ocasionalmente alguém cria uma ALU compatível com 74181 a partir de uma GAL , ou uma ALU usando apenas portas lógicas mais simples, ou mesmo transistores ou relés individuais, para fins de aprendizado.
As pessoas fizeram isso, portanto deve ser possível.
Um guia passo a passo explicando o design e a implementação da ALU parece uma boa ideia. Por favor, ajude-nos a escrever uma no wikibook do Microprocess Design, talvez nas seções "ALU" ou "Wire Wrap" .
fonte
Você deve consultar os Elementos dos sistemas de computação da Nisan & Schocken.
fonte
Historicamente, alguns trabalhos da ALU eram feitos com discretos (sim, transistores e outros), e outros com portões, e muito com chips 'fatia' de 4 bits (o SN74181 da TI era antigo e Fairchild 29F01 tinha seu dia).
HOJE, hoje, é uma questão de construir as equações lógicas em uma linguagem de descrição lógica do PLA ou de matriz de portas. Existem módulos pré-fabricados disponíveis comercialmente que irão inserir qualquer pequena unidade lógica escolhida em seu projeto, basta dinheiro para licenciar o 'IP' (propriedade intelectual).
fonte