¿Cómo se construyen la mayoría de las ALU? ¿Es posible 'construir su propio'?

11

REALMENTE he estado realmente tratando de aprender sobre el nivel muy bajo de las computadoras. He estado viendo muchas páginas de homebrew y es bastante fácil de asimilar. Tomé clases de ingeniería electrónica en la universidad, pero realmente no profundizamos mucho en el tema (era informática, por lo que la mayoría de eso fue en realidad algoritmos y tal).

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

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

    
pregunta Brian Carlton

8 respuestas

15

Puede compilarlos completamente desde puertas lógicas básicas , y el resultado será un buena pieza de arte :-).

La serie de lógica 74xx también contiene un 74LS181 , un 4 -un trozo de ALU , lo que simplifica las cosas drásticamente. Las ALU de trozos de bits se utilizaron para crear ALU más complejas (lea: longitudes de palabra más largas), pero las tecnologías más recientes han hecho que este tipo de circuitos integrados sean obsoletos. nota: TTL (74xx) es simplemente Una tecnología utilizada para puertas lógicas. Rara vez se utiliza más. Fue seguido por Low-Power Schottky: 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 en un FPGA . Esto le da 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 intentar descifrar cómo hacer las conexiones con las puertas lógicas. VHDL y Verilog son los HDL del día.

Un método alternativo para crear una ALU (aunque no use puertas lógicas) sería un único EEPROM / Flash paralelo . 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 A, B y la operación correspondientes. El tamaño de la palabra estará limitado por el tamaño de ROM más grande que pueda encontrar.

    
respondido por el stevenvh
5

Puedes crear tu propia ALU, pero incluso las computadoras antiguas con chips TTL discretos usaron cierta integración para eso. Por ejemplo, mira el chip 74x181. Eso es un segmento de 4 bits de una ALU, y se usó en algunas computadoras TTL para implementar la ALU completa usando uno de estos chips por cada 4 bits.

    
respondido por el Olin Lathrop
5

Empezaría en el mundo HDL primero. Escriba un verilog, use verilator o icarus verilog para simularlo. Escriba el código de manera que se parezca discreto y, o, y no las puertas, y si así lo desea, encuentre algunas partes de la serie 74xx (¿recicladas?) Y algo en el tablero. O bien, hay una cantidad de tarjetas de CPLD y FPGA de más o menos de $ 50 que se pueden obtener y se puede colocar el aluminio en una de las opciones con algún tipo de interfaz en el exterior para ver si está funcionando. Yo diría que la educación HDL es la misma que se aprende los conceptos básicos del sumador, etc. y se combinan las entradas, la salida y la operación. Pero puede hacerlo en un entorno fácil de usar y ver antes de llevarlo al hardware. Al igual que la gente lo hace hoy, diseñan y simulan y luego implementan.

    
respondido por el old_timer
5

En cuanto a los libros, definitivamente los segundo libros "Patterson y Hennessy" (IIRC hay 3, disfrazados como 3 ediciones, pero en realidad son libros totalmente diferentes. Si lo dices en serio, consíguelos todos).

Si desea experimentar su camino en ALU básico o incluso en el diseño de la CPU: comience a experimentar con un simulador lógico. Usamos DigitalWorks para nuestras clases, pero no lo recomendaría. Logisim ( enlace ) parece prometedor. Lo que necesita dominar es la creación de capas: cree bloques básicos como un sumador completo, un selector y un flip-flop desencadenado desde las puertas, luego genere registros, ALU, lógica de secuenciación desde esos bloques de construcción, hasta el CPU. con la 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 que muestre una pantalla Kitt.

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

    
respondido por el Wouter van Ooijen
4

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

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

    
respondido por el MikeJ-UK
4

La historia de las CPU es una cantidad cada vez mayor de cosas por paquete.

Las primeras CPU siempre utilizaron ALU en serie construidas a partir de unos pocos relés o tubos de vacío. El primero que se opuso a esta tradición fue el Torbellino de 1947.

Las primeras CPU transistorizadas construyeron todo desde transistores individuales.

La computadora de guía Apollo (AGM), quizás la primera computadora construida a partir de circuitos integrados, usó solo un tipo de IC fuera de la memoria: puertas NOR de 3 entradas. La ALU y todas las demás partes de la CPU se crearon en su totalidad a partir de un gran número de circuitos integrados de puerta 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 utilizaron (relativamente) menos chips para implementar una ALU.

Una ALU puede construirse enteramente a partir de multiplexores ( "Multiplexores: el nicho táctico del diseño lógico" ), utilizando muchos menos chips que la implementación NOR.

Dieter Mueller publicó un diseño de 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 incluso menos chips: 14 chips TTL complejos: dos 74283 sumadores de 4 bits, unos 4: 1 mux, y algunos 2: 1 mux.

Al igual que muchas computadoras comerciales de importancia histórica, muchas CPU de uso doméstico utilizan alguna versión del 74181, la primera ALU "completa" en un solo chip.

Muchas de esas CPUs construyeron una ALU de 8 bits o una de 16 bits (o ambas) de unos pocos chips 74181 y unos pocos chips 18182; cada uno de ellos 74181 solo maneja operaciones de 4 bits de ancho. Las máquinas de fabricación casera suelen utilizar la cosa más simple posible que funcionará: el arrastre de un 74181 que se alimenta del otro, formando un sumador de ondulación. Las máquinas comerciales que usan chips 74181 generalmente usan un generador de acarreo anticipado 74182 para hacer la suma y la resta significativamente más rápido.

Hoy en día, la mayoría de las ALU están ocultas dentro de un 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 creará una ALU compatible con 74181 a partir de una GAL o una ALU utilizando una compuerta lógica más simple, o una ALA con incluso transistores individuales o relés, 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 suena como una muy buena idea. Por favor ayúdenos a escribir uno en el wikibook de Microprocess Design, quizás el "ALU" o " Wire Wrap ".

    
respondido por el davidcary
3

Debería consultar The Elements of Computing Systems de Nisan & Schocken.

    
respondido por el matsukaze
2

Históricamente, algunos trabajos de ALU se realizaron con discretos (sí, transistores y demás), y algunos con puertas, y mucho con chips de 'rebanada' de 4 bits (el SN74181 de TI fue uno temprano, y Fairchild 29F01 tuvo su día). Pero HOY, es una cuestión de construir las ecuaciones lógicas en un gate-array o lenguaje de descripción de lógica PLA. Existen Módulos preconstruidos disponibles comercialmente que se desplomarán en cualquier elección. unidad lógica pequeña en su diseño, todo lo que necesita es dinero para licencia la 'IP' (propiedad intelectual).

    
respondido por el Whit3rd

Lea otras preguntas en las etiquetas

Comentarios Recientes

Ejecutaremos pruebas en cualquier estructura alámbrica, pero tratamos específicamente de 'tenerlo todo' en lugar de compilar una biblioteca 'libre y de código abierto'. Infraestructura de código de usuario ¿Qué sucede si adquiere un Asset Storage? Objeto (ASS) dentro de 1 aplicación cliente (aquí estamos implementando ADS) entre aplicaciones web similares. Esto no es perfectamente imposible, pero hace que su total sea mucho menor, ya que tiene dos paquetes para compartir. Cuando una aplicación cliente está... Lees verder