¿Puedes hacer una CPU con puertas lógicas?

3

Si sollojo suficientes sumadores binarios, los restadores binarios pueden funcionar como una CPU moderna (muy lenta) (como la que se encuentra en una calculadora gráfica).

    
pregunta J.Clarke

4 respuestas

6

¡Sí! Uno puede construir un procesador tan lento real con una lógica discreta en conjunto. O implementarlo en un FPGA.

(¡Suponiendo que esto no tenga una aplicación inmediata y solo para pensar! Disculpas si es demasiado largo. ¡Solo ideación!) Aquí hay algunos pasos básicos que uno puede considerar-

  1. Desarrolle primero un conjunto de instrucciones. Listar cada instrucción y número requerido de operandos. Asigna a cada instrucción un número binario único. Su decodificador de instrucciones reconocerá estas instrucciones únicas por el número que asigne.

Si es para una aplicación de calculadora, enfócate en operaciones matemáticas. La aritmética básica es fácil. La computación científica necesita un conjunto de instrucciones y una arquitectura más sofisticadas.

  1. Sus instrucciones y arquitectura, definen implícitamente el ancho del bus (Instrucciones, Datos - 8,16,32,64 o incluso ¡128 bits!)

  2. Construye el decodificador de instrucciones. Será un circuito lógico combinacional. Y también es compatible con la lógica secuencial para la temporización, la secuenciación y la sincronización. En un nivel muy alto puede pensar en el decodificador de instrucciones como un decodificador / demultiplexor. Las señales de este bloque se van a habilitar / deshabilitar y configurar las operaciones posteriores.

  3. Construya todos los registros necesarios, registros de funciones especiales SFR, buffers de E / S, pines, señales de habilitar / deshabilitar.

  4. Construye los temporizadores, contadores, sincroniza circuitos

  5. Construya circuitos de hardware de conducción periféricos especiales. Con el ejemplo de la calculadora, podría ser la pantalla, el teclado, el monitoreo de la batería y el altavoz / zumbador, etc.

  6. Construya la ALU (unidad lógica aritmética). ¡En realidad construye una ALU avanzada!

  7. Construye un buen hardware matemático. También implementar hardware aritmético de punto flotante! (Las funciones especiales, los registros, las funciones trigonométricas se implementan como series de Taylor u otras series personalizadas de matemáticas en algún hardware)

  8. En realidad, vivimos en la era de la ciencia de datos y la inteligencia artificial. Así que implementar unidades de procesamiento de matriz / vector. ¡Construye un procesador de vectores!

  9. Implemente scratchpad, caché y otras áreas internas de memoria de contabilidad.

  10. ¡Construya periféricos de bus como I2C, SPI y las interfaces de memoria y cualquier otro periférico útil puede pensar!

  11. Cree el contador del programa, busque circuitos antes de enviar las instrucciones al decodificador. O cree un canal de instrucciones y un paralelismo de instrucciones

  12. Mira en la especificación del lenguaje de programación C. Intente ajustar sus propias instrucciones de CPU para compilarlas desde ese idioma. ¡Puede desarrollar sus propios detalles de implementación y desarrollar su propio compilador!

  13. ¡Lo más importante es tener un RESET implementado dentro del circuito y también hacerlo disponible en un pin externo!

respondido por el seshu
3

Además de la lógica combinacional (que puede formar sumadores y restadores), necesitará lógica secuencial (que permite que la computadora tenga memoria).

Sí, con suficientes componentes podría construir una CPU.

Tenga en cuenta que las CPU de la calculadora gráfica pueden funcionar a más de 15 MHz. Es poco probable que pueda construir una CPU útil tan rápida a partir de elementos discretos.

    
respondido por el jp314
3

TL; DR: ¡Los procesadores están hechos de puertas lógicas y tienen que ser!

Si está hablando de chips reales instalados en una placa de circuito, siga leyendo. El procesador PDP-11 en realidad está hecho principalmente de la lógica TTL de la serie 7400. Aquí estoy hablando de construir tu propia CPU de 64 bot a partir de esos chips lógicos discretos.

Planificación del suelo

Para que un procesador funcione correctamente, necesitará algunos módulos funcionales:

  • ALU,
  • sistema de bus,
  • Archivo de registro (GPRs y número de ellos),
  • contador del programa,
  • Registro de instrucciones,
  • Unidad de decodificación de instrucciones,
  • Unidad de control.

No estoy incluyendo periféricos de memoria o E / S, ya que generalmente son externos al procesador si se producen en forma de chip. Los que van al bus del sistema y obedecen al controlador también.

También hay algunos elementos para decidir antes de comenzar a planificar su procesador:

  • Conjunto de instrucciones (determina el aspecto del registro de instrucciones, la unidad del decodificador de instrucciones y el controlador)
  • Endianness (si está usando palabras de máquina de varios bytes como lo estamos haciendo ahora, usando palabras de 64 bits)
  • ancho del bus

ALU

Aún puede comprar los chips principales de ALU, 74HC181 y 74HC182 , ahora, aunque ahora se construyen utilizando CMOS en lugar de tecnología TTL y consume mucha menos energía que los TTL originales. Al usar 16 74HC181 s y 5 74HC182 s, puede obtener una ALU básica combinatoria de 64 bits. No funcionará tan rápido como su Core i7 de varios gigahercios, pero a unos pocos kilohercios todavía puede hacer su trabajo. También es un núcleo estático, por lo que puede reducir la velocidad a 0 Hz si la potencia se está agotando.

Es posible que desee agregar una palanca de cambios de barril usando, bueno, registros de desplazamiento. Una palanca de cambios de barril acelerará mucho las cosas como la multiplicación. 74HC194 parece un buen candidato. Une 16 de ellos juntos y obtienes una palanca de cambios de barril de 64 bits.

Bus del sistema

Un bus es un conjunto de cables de señal que tienen varias entradas y salidas conectadas. Necesitará tri-indicar las salidas de un bloque funcional al bus o dos dispositivos que emiten una señal opuesta quemarán su tarjeta. También es posible que desee bloquear las entradas del bus a los módulos funcionales mediante un registro, de modo que pueda permitir que el bus transfiera otra información mientras el módulo funcional la está procesando.

Una cadena de 16 74HC173 s parece ser un buen candidato para un solo registro. Presentan salidas de tres estados, lo que facilita mucho la administración del bus. Coloque un juego de estos en lugares donde necesite una entrada enclavada.

Los buffers tri-state no enclavados pueden construirse usando una cadena de 8 74HC241 s.

Registrar archivo & puntero de instrucción

Necesita un archivo de registro para el espacio de memoria virtual. La mayoría de los registros no estarán comprometidos con ningún propósito específico, pero al menos uno debe tener un propósito especial: indicador de instrucción.

El puntero de instrucción siempre se incrementa en una longitud de instrucción después de que se carga cada instrucción, siempre apuntando a la próxima instrucción que viene.

Es posible que también desee tener un puntero de pila que permita que algunas instrucciones de acceso a la memoria puedan leer y / o escribir en la memoria y modificar este registro en una instrucción atómica.

Tener un registro de palabra de estado de máquina es bueno. Aunque no hay nada que le impida utilizar instrucciones especiales para transferir datos hacia y desde la palabra de estado oculta de la máquina y un registro de propósito general, eso haría que el código del ensamblador sea un poco incómodo.

Puede ser bueno tener el registro "cero", pero en realidad es en gran medida sin sentido, ya que funciona tan bien como mov r0, r1 como xor r1, r1 , con la única excepción de que este último puede establecer el indicador cero en el palabra de estado de la máquina.

El archivo de registro de propósito general se puede construir utilizando chips SRAM (como prácticamente lo son) como una cadena de 6116 s. El contador del programa y los punteros de pila se pueden construir mejor con contadores hacia arriba / abajo como 74HC193 (si tiene una longitud de instrucción fija y / o una longitud de empuje) o una ALU secundaria. La palabra de estado de la máquina es más complicada de implementar, ya que se vincula entre la ALU y la unidad de control, y generalmente se construyen a partir de flip-flops D individuales como 74HC171 .

registro de instrucciones, decodificador y unidad de control

Este no es un registro accesible desde el programa. En cambio, es el lugar donde trabajan las instrucciones del decodificador y la unidad de control. El control puede ser una gran máquina de estado programada con transferencias de estado en la forma si algún ROM (microcódigo, utilizado principalmente en arquitecturas CISC) o un montón de cables que se ramifican de demultiplexores sobre demultiplexores (controlador de cableado, usado principalmente en arquitecturas RISC).

    
respondido por el Maxthon Chan
0

La respuesta es sí. Este es un ejemplo de cómo se hizo en los primeros días de la computadora.

enlace

  

La computadora de vuelo Apollo fue la primera computadora en utilizar integrada   circuitos (circuitos integrados). Mientras que la versión Block I usaba 4,100 ICs, cada una   que contiene una sola puerta NOR de tres entradas, la versión posterior del Bloque II   (utilizado en los vuelos con tripulación) utilizó 2.800 IC, cada uno con doble   Puertas NOR de tres entradas. [1]: 34 Los circuitos integrados, de Fairchild Semiconductor,   se implementaron utilizando la lógica de resistencia-transistor (RTL) en un paquete plano.   Se conectaron a través de una envoltura de alambre, y el cableado se incrustó en   plástico epoxi fundido.

Esto no incluyó la memoria:

  

La computadora tenía 2048 palabras de memoria de núcleo magnético borrable y 36   kilovatios de memoria de cuerda de solo lectura.

La memoria también se puede implementar utilizando puertas lógicas, pero se necesitan muchas de ellas.

Es posible que esté interesado en leer los primeros sistemas informáticos en los archivos de historial. Hubo una generación (o quizás dos) que se hicieron utilizando puertas simples.

    
respondido por el ghellquist

Lea otras preguntas en las etiquetas