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).
Respuestas:
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.
fuente
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.
fuente
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.
fuente
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 ...
fuente
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.
fuente
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" .
fuente
Debería examinar Los elementos de los sistemas informáticos de Nisan & Schocken.
fuente
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).
fuente