Como a maioria das ALUs são construídas e é possível 'construir a sua'?


11

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).


1
Você pode estar interessado nisso .
Dean

6
Falando de dentro de uma equipe de chips de CPU, se você estiver interessado em arquitetura de computadores e CPUs, os livros canônicos são "Organização e Design de Computadores: A Interface Hardware / Software", seguidos por "Arquitetura de Computadores: Uma Abordagem Quantitativa". Estes são referidos como "Patterson e Hennessy" e "Hennessy e Patterson", respectivamente.
Ross Rogers

@ Dean - Sim, os fios codificados por cores são para maricas! :-)
stevenvh

Nosso projeto de semestre no EE360M na UT Austin em 1994 foi uma ALU de 4 bits baseada em pilha implementada em uma placa de demonstração Xilinx com uma placa XC3000, usada como uma pilha de 16 níveis que levou seu valor máximo a um display LED de 7 segmentos e um XC4000 - algo que era a ALU real. Defina sua entrada e operação nos interruptores DIP, pressione um botão e pronto. O XC4k tinha um oscilador interno com várias frequências de 63 kHz a 8 MHz, e nossa nota foi parcialmente baseada na rapidez com que nosso projeto poderia ir e ainda funcionar.
Mike DeSimone

1
@Shubham: Uma vez eu vi que eu sabia que precisava ficar longe de Minecraft ... eu ia ficar nada feito ... O_o
Mike DeSimone

Respostas:


15

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.


5

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.


Desculpe por parecer ignorante, mas como exatamente os chips TTL são diferentes dos portais lógicos? e o TTL foi usado antes ou depois dos portões lógicos? ou eles são feitos de portas lógicas: confused:

@Sauron - acrescentei uma nota sobre famílias lógicas para a minha resposta
stevenvh

5

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.


1
Absolutamente. Simule primeiro. Então, se você precisar de hardware, um FPGA é mais prático. A conexão do 74xx TTL para algo desse complexo seria um projeto enorme que não deveria ser resolvido até que um projeto seja realmente pensado.
31911 Chris Stratton

5

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 ...


4

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.


4

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" .



2

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).


1
Quando os resistores eram baratos em relação aos resistores, havia uma série de truques que poderiam permitir a construção de ALUs com contagens muito baixas de transistores (por exemplo, um somador completo usando dois transistores por estágio). Tais circuitos consumiam muita energia e não eram terrivelmente rápidos, mas quando os transistores eram caros, podiam economizar custos consideráveis.
Supercat
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.