¿Cómo se construyen la mayoría de las ALU, y es posible 'construir el suyo propio'?

11

Realmente he estado tratando de aprender sobre el muy bajo nivel de las computadoras. He estado mirando muchas páginas de homebrew y es bastante para asimilar. Tomé clases de ingeniería electrónica en la universidad, pero realmente no profundizamos mucho en el tema (era la informática, así que la mayoría de hecho era algoritmos y tal).

De todos modos, ¿cómo se construyeron / fueron la mayoría de las ALU ? Me doy cuenta de que esa no es la única parte de una computadora, pero aún así es una parte importante.

¿Y podría construir su propia ALU solo con puertas lógicas (con fines de aprendizaje)? Entiendo que esto probablemente les parezca estúpido a quienes tienen más conocimiento, pero solo estoy tratando de entender. (Diablos, incluso un simple sumador sería un buen proyecto). Si es así, ¿cómo se haría? ¿Hay algún ejemplo de hardware? (He buscado en Google, pero no puedo encontrar nada que tenga una guía paso a paso que explique las cosas).

Brian Carlton
fuente
1
Quizás te interese esto .
Dean
66
Hablando desde el interior de un equipo de chips de CPU, si está interesado en la arquitectura de la computadora y la CPU, los libros canónicos son "Organización y diseño de la computadora: la interfaz de hardware / software" seguido de "Arquitectura de la computadora: un enfoque cuantitativo". Estos se conocen como "Patterson y Hennessy" y "Hennessy y Patterson", respectivamente.
Ross Rogers
@Dean - Sí, ¡los cables codificados por colores son para mariquitas! :-)
stevenvh 01 de
Nuestro proyecto semestral en EE360M en UT Austin en 1994 fue un ALU de 4 bits basado en pila implementado en una placa de demostración Xilinx con un XC3000-algo, utilizado como una pila de 16 niveles que llevó su valor máximo a una pantalla LED de 7 segmentos , y un XC4000, algo que era la ALU real. Establezca su entrada y operación en los interruptores DIP, presione un botón y listo. El XC4k tenía un oscilador interno con varias frecuencias de 63 kHz a 8 MHz, y nuestra calificación se basó en parte en la rapidez con la que nuestro diseño podría funcionar y seguir funcionando.
Mike DeSimone
1
@Shubham: Una vez que vi que sabía que necesitaba alejarme de Minecraft ... no haría nada más ... O_o
Mike DeSimone

Respuestas:

15

Puede construirlos completamente desde puertas lógicas básicas , y el resultado será una buena obra de arte :-).

La serie lógica 74xx también contiene un 74LS181 , una ALU de corte de 4 bits , que simplifica las cosas drásticamente. Las ALU de segmento de bits se utilizaron para construir ALU más complejas (léase: longitudes de palabra más largas), pero las nuevas tecnologías han hecho que este tipo de circuitos integrados sean obsoletos.
nota: TTL (74xx) es solo una tecnología utilizada para puertas lógicas. Raramente se usa más. Fue seguido por Schottky de baja potencia: 74LSxx, estrictamente hablando también una forma de TTL. Hoy en día hay docenas de familias lógicas, todas basadas en CMOS de alta velocidad (74HCxx, 74HCTxx, 74ACxx, ...)

En estos días, la forma correcta de crear una ALU sería hacerlo en un CPLD o un FPGA . Esto le brinda muchas puertas, y el HDL (Lenguaje de descripción de hardware) que usa para diseñar la ALU es mucho más fácil y menos propenso a errores que tratar de descubrir cómo hacer las conexiones usted mismo con las puertas lógicas. VHDL y Verilog son los HDL del día.

Sin embargo, un método alternativo para crear una ALU (sin usar puertas lógicas) sería una EEPROM / Flash paralela única . Utiliza las entradas A y B y la operación como entrada (dirección) y obtiene el resultado de la operación como salida (datos). Todo lo que tiene que hacer es compilar el contenido de la ROM, lo que significa que debe escribir en cada dirección cuál será el resultado de la operación para las entradas correspondientes A, B y operación. El tamaño de palabra estará limitado por el tamaño de ROM más grande que pueda encontrar.

stevenvh
fuente
5

Puede construir su propia ALU, pero incluso las computadoras antiguas con chips TTL discretos utilizaron alguna integración para eso. Por ejemplo, mira el chip 74x181. Esa es una porción de 4 bits de una ALU, y se usó en algunas computadoras TTL para implementar la ALU completa mediante el uso de uno de estos chips por cada 4 bits.

Olin Lathrop
fuente
Lamento sonar ignorante, pero ¿en qué se diferencian exactamente los chips TTL de las puertas lógicas? y se usó TTL antes o después de las puertas lógicas? o están hechos de puertas lógicas: confundido:
@Sauron - Agregué una nota sobre familias lógicas a mi respuesta
stevenvh
5

Empezaría en el mundo HDL primero. Escriba un verilog, use verilator o icarus verilog para simularlo. Escriba el código de manera tal que se parezca a discreto y, o, y no a compuertas, luego, si está inclinado, encuentre algunas piezas de la serie 74xx (¿recicladas?) Y algo de tablero. O bien, hay una cantidad de $ 50 más o menos tarjetas CPLD y FPGA que se pueden tener y puede poner el alu en una de las que viene con algún tipo de interfaz en el exterior para ver que está funcionando. Yo diría que la educación HDL es la misma que aprende los conceptos básicos del sumador, etc. y que elimina las entradas, salidas y operación. Pero puede hacerlo en un entorno fácil de usar y ver antes de llevarlo al hardware. Muy parecido a cómo la gente lo hace hoy, diseña y simula y luego implementa.

viejo contador de tiempo
fuente
1
Absolutamente. Simular primero. Entonces, si tiene que tener hardware, un FPGA es más práctico. Cablear 74xx TTL para algo de este complejo sería un gran proyecto que no debería abordarse hasta que un diseño esté realmente pensado.
Chris Stratton
5

Para los libros, definitivamente secundo a los libros "Patterson y Hennessy" (IIRC hay 3, disfrazados de 3 ediciones, pero en realidad libros totalmente diferentes. Si es en serio: consíguelos todos).

Si desea experimentar en el diseño básico de ALU o incluso de CPU: comience a experimentar con un simulador lógico. Usamos DigitalWorks para nuestras clases, pero no lo recomendaría. Logisim ( http://sourceforge.net/projects/circuit/ ) parece prometedor. Lo que necesita dominar es la estratificación: construya bloques básicos como un sumador completo, un selector y un flip flop activado por el borde desde las puertas, luego construya registros, ALU, lógica de secuencia desde esos bloques de construcción, hasta una CPU con memoria Realmente no es tan difícil de construir, digamos el equivalente de una CPU PIC (núcleo de 14 bits), conecte un montón de LED y programe para mostrar una pantalla Kitt.

Después de eso, será divertido hacer un núcleo de 32 bits, portarle GCC, realizarlo en un FPGA y ejecutar Linux en él. Pero no serás el primero ...

Wouter van Ooijen
fuente
4

No es una pregunta estúpida en absoluto. La página de Wikipedia muestra un circuito de nivel de compuerta para una ALU de 2 bits. Los circuitos integrados de ALU solían estar disponibles comúnmente en 'sectores', generalmente de 4 bits, que se pueden conectar en cascada para obtener anchos de bus más grandes (ver división de bits ).

La hoja de datos para el ALU de 4 bits de Texas 74181 también tiene un esquema de nivel de puerta.

MikeJ-UK
fuente
4

La historia de las CPU es una de la creciente cantidad de cosas por paquete.

Las primeras CPU siempre usaban ALU seriales construidas a partir de unos pocos relés o tubos de vacío. El primero en romper esta tradición fue el Torbellino de 1947.

Las primeras CPU transistorizadas construyeron todo desde transistores individuales.

El Apollo Guidance Computer (AGM), quizás la primera computadora construida a partir de circuitos integrados, utilizaba solo un tipo de IC fuera de la memoria: puertas NOR de 3 entradas. La ALU y cualquier otra parte de la CPU se construyeron completamente a partir de una gran cantidad de circuitos integrados de compuerta NOR. El (mucho más rápido) Cray 1 también usó solo un tipo de IC fuera de la memoria: otro tipo de puerta NOR.

A medida que la gente descubría cómo meter más transistores en un chip, las CPU posteriores usaron (relativamente) menos chips para implementar una ALU.

Se puede construir una ALU completamente a partir de multiplexores ( "Multiplexores: el Nuke táctico del diseño lógico" ), utilizando muchos menos chips que la implementación NOR.

Dieter Mueller publicó un diseño ALU de 8 bits que tiene más funcionalidad que dos chips 74181 (el 74181 no puede cambiar a la derecha), construido a partir de aún menos chips: 14 chips TTL complejos: dos sumadores 74283 de 4 bits, algunos 4: 1 mux, y algunos 2: 1 mux.

Como muchas computadoras comerciales históricamente importantes, muchas CPU caseras utilizan alguna versión del 74181, la primera ALU "completa" en un solo chip.

Muchas de esas CPU construyeron una ALU de 8 bits o una de 16 bits (o ambas) de unos 74181 chips y unos 74182 chips; cada 74181 solo maneja operaciones de 4 bits de ancho. Las máquinas de elaboración casera generalmente usan la cosa más simple posible que funcionará: la realización de un 74181 que se introduce en el transporte del siguiente, formando una víbora de transporte ondulado. Las máquinas comerciales que usan chips 74181 generalmente usan un generador de transporte 74182 para hacer que la suma y la resta sean significativamente más rápidas.

Hoy en día, la mayoría de las ALU están ocultas dentro de algún chip: una pequeña parte de una CPU, algún otro tipo de ASIC o un CPLD o FPGA.

Incluso después de que las "computadoras de un solo chip" estuvieran disponibles, de vez en cuando alguien construirá una ALU compatible con 74181 a partir de una GAL , o una ALU utilizando solo puertas lógicas más simples, o incluso transistores o relés individuales, con fines de aprendizaje.

La gente lo ha hecho, por lo tanto, debe ser posible.

Una guía paso a paso que explica el diseño y la implementación de ALU parece una muy buena idea. Ayúdenos a escribir uno en el wikibook Diseño de microprocesos, tal vez en las secciones "ALU" o "Wire Wrap" .

davidcary
fuente
2

Históricamente, algunos trabajos de ALU se realizaron con discretos (sí, transistores y demás), y algunos con compuertas, y mucho con chips de 'corte' de 4 bits (SN74181 de TI era uno temprano, y Fairchild 29F01 tuvo su día).
Pero HOY, se trata de construir las ecuaciones lógicas en un lenguaje de descripción lógica PLA o matriz de compuerta. Hay módulos precompilados disponibles comercialmente que incluirán cualquier pequeña unidad lógica elegida en su diseño, todo lo que se necesita es dinero para obtener la licencia de la 'IP' (propiedad intelectual).

Whit3rd
fuente
1
Cuando las resistencias eran baratas en relación con las resistencias, había una serie de trucos que podían permitir la construcción de ALU con recuentos de transistores muy bajos (por ejemplo, un sumador completo que usa dos transistores por etapa). Tales circuitos consumían mucha energía y no eran terriblemente rápidos, pero cuando los transistores eran caros, podían ahorrar un costo considerable.
supercat