¿Alguien ha construido su propia CPU antes? ¿Cuánto tiempo tardó y qué recursos usó?

Parallax Propeller es un ejemplo interesante de que esencialmente una persona realiza el ciclo de diseño completo de una CPU de principio a fin. Tomó 10 años en total, 2 años de los cuales fueron diseño. Esto es casi tan personalizado como se pone.

En el otro extremo del espectro, una CPU “yo también” basada en una arquitectura existente se puede lanzar al mercado en menos de un año. Todos los diseños de componentes tienen licencia de los proveedores y se combinan con pequeñas cantidades de “lógica de pegamento”. El diseño (donde los transistores y los cables van en el chip) se realiza automáticamente mediante herramientas de software.

Un estudiante con su experiencia podría terminar la arquitectura de una CPU muy simple desde cero en 40 horas, y las pruebas tomarían aproximadamente el doble. Pasar de la arquitectura a la lógica se puede hacer automáticamente en segundos, o manualmente en otras 80 horas. El diseño de la lógica se puede hacer automáticamente en minutos o a mano durante unas pocas semanas. Obtener una fundición de chips para producir su diseño se trata principalmente de esperar. Esto no sería un chip comercializable, pero sería funcional.

Decidir en qué parte del espectro de lo personalizado a lo automático puede ser polémico. Si supone que un humano es dos veces mejor en diseño que una computadora, la ley de Moore implica que el diseño personalizado está hasta 18 meses por delante del diseño automático. El margen probablemente esté más cerca del 10%, por lo que 10 años podrían no haber sido la mejor estrategia …

No sé si estás hablando de construir CPU en tales plataformas de simulación (como Logisim) o construirlo físicamente, pero hablaré sobre la simulación. Como era de esperar, debe tener conocimiento sobre los circuitos digitales, la organización de computadoras, la arquitectura de computadoras y los sistemas de microprocesadores. Personalmente, construí CPU para nuestra clase de Organización de Computadoras el año pasado. Tomé un semestre, pero si resumí la parte de desarrollo de la CPU, sería solo una semana. (Si supiera lo básico antes, tomaría una semana) El libro de Mono para Diseño Digital y Organización de Computadoras son buenos recursos para comprender los conceptos básicos. de CPU. Después de estudiarlos, un poco de conocimiento sobre la mecánica de interrupción de la CPU será suficiente para construir su CPU. Si desea profundizar, revisar la arquitectura de las CPU primitivas (como Motorola 6800 y 68K, Intel 8008) y tomarlas como influencia para su propio diseño y necesidades será suficiente, creo. Si desea construir una CPU más compleja, estudiar con colegas y asignar algunas responsabilidades a otro lo ayudará mucho.

¿Un procesador simple a la par de lo que era el estado del arte en la década de 1980? Usted apuesta. Es tedioso pero no difícil.

Aquí hay un ejemplo, construido a partir de 40,000 transistores discretos:

Megaprocesador

¿Una CPU moderna? Diablos no.

Un procesador Intel Core-class moderno contiene más de cuatro mil millones de transistores y casi 500 millas de interconexión, utilizando “cables” cuyo ancho se puede medir en átomos.

Ningún ser humano comprende completamente el procesador en su escritorio; Están diseñados por grandes equipos que utilizan software automatizado muy sofisticado. Nadie jamás construirá a mano uno de estos.

Básicamente hay dos trabajos por hacer:

  1. Diseña una CPU.
  2. Construirlo físicamente.

Es posible diseñar una CPU en casa, y creo que todos deberían intentarlo al menos una vez.

Puede usar Verilog o VHDL, o crear una emulación con precisión de ciclo usando algún lenguaje de programación “regular” como C. Aunque la última idea puede parecer extraña a primera vista, en realidad es bastante buena debido a las excelentes opciones de depuración y la velocidad de Compilacion. La velocidad de la emulación de la CPU también será excelente.

Sin embargo, la implementación física será una tarea más difícil …

La construcción de un ASIC requiere herramientas de software muy costosas y que consumen muchos recursos, y las empresas de fabricación de chips requieren millones de dólares para su trabajo.

Un FPGA es más barato, tiene un “volumen” limitado para contener toda su lógica, más lento que un ASIC real, pero aún razonablemente rápido, por así decirlo, para tener la idea …

Construir una CPU a partir de puertas lógicas discretas … De esta manera, es prácticamente imposible construir algo más allá del nivel del proyecto escolar. Dicho esto, recuerdo que una vez que las CPU reales se construyeron de esta manera, pero … es como la generación de la Biblia, cuando había profetas reales, que solían hablar con Dios … – podría no funcionar en estos días.

Si bien la construcción de la CPU física es muy difícil (por decir lo menos), en el dominio del diseño, usted es prácticamente ilimitado y puede diseñar una CPU lo mejor posible.

Hicimos esto como parte de los laboratorios en mi curso básico de informática en Uni. Obtuvimos componentes discretos como ALU, registros, memoria, unidades de salida en forma de LED, entradas en forma de interruptores, etc. y tuvimos que conectarlo todo, escribir el microcódigo para las instrucciones y luego algunos programas básicos en ensamblador para Demuestre que la CPU estaba funcionando. Construir todo, desde puertas básicas, habría llevado mucho tiempo y espacio, y no era factible para un laboratorio de computación.

Hoy es mucho más fácil crear su propia CPU o modificar una para satisfacer sus propias necesidades. Hay compañías que hacen los llamados softcores que se implementan en VHDL y se pueden colocar en su diseño FPGA para tareas computacionales más generalizadas que no son adecuadas para la implementación en lógica cerrada. (Aunque los FPGA más caros vienen con núcleos ARM o PowerPC implementados en silicio para un mayor rendimiento). La extensión de esto se encuentra en algunos diseños de supercomputadoras que incluso implementan FPGA para tareas informáticas específicas que se pueden acelerar creando básicamente instrucciones personalizadas para tareas especializadas. .

Para aquellos que quieran experimentar con sus propios diseños de CPU, hay placas de prototipos disponibles de Xilinx e Intel (anteriormente Altera) que a menudo contienen un FPGA de tamaño mediano y algunos circuitos de soporte, como fuentes de alimentación, relojes, programadores, etc. que les permiten probar su código VHDL y juegue con softcores.

En una clase de ciencias de la escuela secundaria, como experiencia de aprendizaje y por diversión, construimos una CPU de 4 bits de uso general a partir de cajas de relés. Un conjunto de cajas de este tipo, configurado como un multivibrador (reloj maestro), se desaceleró lo suficiente como para que los relés aguas abajo tuvieran tiempo de actuar de forma sincronizada. Creamos un lector de tarjetas perforadas de 8 bits con fotodiodos con bits de datos y operandos. Las instrucciones y los datos se introdujeron con un perforador circular de papel.

El resto de las cajas se configuraron como registros, bloques lógicos y sumadores. Tomó varios días configurarlo y hacerlo funcionar, ocupando mesas en una buena parte del aula. Una vez configurados, podríamos ingresar tarjetas una a la vez, presionar un botón para enganchar las instrucciones y los datos, y cada uno haría cosas como: Almacenar estos datos en el registro A. Almacenar esos datos en el registro B. Agregar A + B y enganche el resultado en el registro C.

¡Fue un alboroto! Relés de bloqueo, luces intermitentes. Cargar, agregar, almacenar el tiempo medido en segundos …

Más tarde, como ingeniero, construí máquinas de estado crudo que hicieron subconjuntos de instrucciones generales de CPU a partir de puertas TTL, EPLD y FPGA posteriores. Y he trabajado con varias de las primeras CPU y microcontroladores de 8 bits.

Creo que disfrutarías trabajando en este curso:

Los elementos de los sistemas informáticos

o el libro asociado, The Elements of Computer Systems de Nisan y Schocken. También conocido como “Nand2Tetris”.

Al final del curso, estás jugando un clon de Tetris que escribiste tú mismo, usando un compilador que escribiste tú mismo, en un sistema operativo que escribiste tú mismo, para un procesador que construiste tú mismo, comenzando solo con compuertas NAND.

He hecho varias CPU antes de usar el lenguaje de descripción de hardware Verilog / VHSIC en matrices de puertas programables de campo (FPGA). Por favor verifíquelo a continuación:

  • Un microcontrolador completo de 8 bits en VHDL
  • Implementación Verilog de un microcontrolador (similar a MICROCHIP PIC12) (Parte 3- Código Verilog)
  • Verilog IMPLEMENTACIÓN DE UN MICROCONTROLADOR (SIMILAR A MICROCHIP PIC12) (Parte-2- Diseño de arquitectura)
  • Implementación Verilog HDL de un microcontrolador (similar a MICROCHIP PIC12) (Parte 1 – Especificación de la MCU)

Mi amigo y yo construimos esta CPU como proyecto de curso para arquitectura de computadora 2.
Es un procesador de 16 bits. pero solo tiene dos instrucciones: AND e Invertir

El esquema se construye usando un programa llamado EAGLE, fue necesario para hacer las líneas de esta manera, de lo contrario, podemos agruparlas fácilmente en una línea usando eagle.
Aprendimos a diseñar el procesador usando este libro:

Creo que es el mejor libro de arquitectura de computadoras para explicar cómo funciona el procesador.

Realmente depende de cuál sea su objetivo final aquí.

Si desea diseñar, probar y ejecutar su CPU, definitivamente puede hacerlo. Todo lo que necesitas es una placa FPGA. Si no le gusta comenzar desde cero, puede descargar archivos HDL para un diseño de arquitectura abierta, colocarlo en el FPGA, realizar sus cambios y listo. Casi podrás ejecutar tu propio código. Si tiene una placa FPGA basada en PCI, y una vez que haya terminado con la fase de diseño y prueba, puede usarla como coprocesador para sus aplicaciones personalizadas. Esto es algo opuesto a algunas respuestas populares aquí.

Si tiene la intención de escribir el código HDL desde cero, le llevará mucho tiempo y energía, pero se puede y se puede hacer. Dependiendo del conjunto de características que intente admitir en su “procesador”, tendrá que dedicarle tiempo de diseño y prueba para asegurarse de que todo funcione. Para cuando termine, su procesador no será el diseño más moderno, pero puede estar cerca. Para diseños de múltiples núcleos, su complejidad crece casi linealmente, ya que hacer que cada núcleo se comporte bien con los demás es difícil de diseñar. Hacer todo esto es costoso pero tampoco imposiblemente caro. Para todos los efectos, su FPGA y el código HDL cargado pueden y se comportarán como un procesador normal.

Pero si tiene la intención de hacer un chip real, sería increíblemente costoso y un desafío que no podrá enfrentar solo. Supongo que está intentando hacer una producción limitada para el diseño de su chip. El problema es que los ASIC son mucho más complejos que un FPGA. Una especie de FPGA, un poco abstrae el comportamiento eléctrico de su nodo tecnológico, y todo en lo que tiene que concentrarse es en el diseño del Nivel de Transferencia de Registro (RTL). En un ASIC, deberá dedicar una cantidad excesiva de tiempo al diseño eléctrico e incluso físico de sus componentes. Dado que tiene la intención de diseñar todo esto usted mismo, no tendrá acceso a una biblioteca de componentes desde la cual podría extraer componentes y usarlos. Por lo tanto, tendrá que hacer trabajo de campo adicional. Para esto, necesitaría un equipo que sepa lo que está haciendo.

Ahora, si hace la pregunta (absurda) de hacer un chip en su garaje, la respuesta es NO, ¡no puede! Y como estudiante, ni siquiera debes intentarlo, porque es peligroso, tanto para ti como para los que te rodean.

Sé de uno divertido / impresionante:

El diseño de una Unidad Central de Procesamiento es un curso de requisito de graduación para estudiantes universitarios en el programa de Ciencias de la Computación de la Facultad de Letras y Ciencias de la Universidad de Berkeley de UC:

  • Página de inicio para UCB CS152, otoño de 2016

IIRC, cuando estaba en UCB a principios de la década de 1980, los estudiantes asumieron ese problema de diseño en equipos de tres o cuatro. También fue un curso que consumió tanto tiempo / esfuerzo que se recomendó tomar cursos fáciles junto en el mismo trimestre académico.

Si desea diseñar su propia arquitectura de procesador con su propia arquitectura de conjunto de instrucciones, estoy de acuerdo con la sugerencia en la respuesta de Van-Loi Le de usar matrices de puertas programables de campo (FPGA) para probar su diseño.

Bueno hombre, construí varias CPU pequeñas en torno al 11º grado. Lo que hice fue formar parte de una comunidad en Minecraft para Redstone. Mi primera CPU ejecutó fibbonacci. A partir de ahí, lo intensifiqué con una CPU en logística y ahora estoy trabajando en un 8008 en VHDL. Echa un vistazo a greatgamer34 para pruebas y tutoriales.

Mucha gente

Es un ejercicio bastante estándar en los cursos de maestría, por ejemplo.

Una CPU simple es un posible proyecto para un estudiante de último año. El problema es que una cosa “simple” no te enseñará demasiado.

Solíamos dar un curso que enseña a estudiantes de pregrado para construir una CPU no canalizada. El curso dura dos semanas y los estudiantes vienen sin conocimiento previo.

La máquina en cuestión es casi literariamente la del libro System Architecture – An Ordinary Engineering Discipline, que en la primera sección presenta una receta de estilo de libro de cocina para construir un procesador simple.

También hicimos que los estudiantes implementaran nuestros procesadores más complejos, es decir, procesadores paralelos canalizados con un sistema de caché compartido secuencialmente consistente, del libro A Pipelined Multi-core MIPS Machine. Una vez más, receta de estilo de libro de cocina para construir el procesador, hasta el nivel de la puerta.

La mayoría de las ecuaciones de estos libros se pueden escribir casi 1: 1 en verilog, que usamos para escribir los procesadores. Luego los colocamos en placas FPGA. Uno de nuestros estudiantes implementó la máquina MIPS paralela en aproximadamente medio año como su tesis de maestría sin conocimiento previo de hardware de nivel de puerta o verilog.

Los libros también tienen pruebas de corrección matemática, similares a las pruebas de corrección dadas por los ingenieros de construcción y que son la única razón por la cual los edificios ya no colapsan todo el tiempo. Por supuesto, los procesadores y MCU comunes colapsan todo el tiempo, por lo que tenemos listas de erratas de 200 páginas para casi todos los chips que puede comprar. Los libros apuntan a llevarnos del estado de los procesadores de hoy, que es como el estado de la construcción hace 300 años, al estado de la construcción de hoy, donde nos sorprendería tener una errata como “no abra la puerta principal y la puerta en el primer piso al mismo tiempo, o el edificio se derrumba “. Por supuesto, todavía no estamos completamente allí, y nuestras pruebas y construcciones verificadas por humanos tienen algunos errores tipográficos menores, y también es posible agregar errores tipográficos al copiar la construcción del papel al verilog. Esperamos que las pruebas verificadas por máquina pronto cierren esa brecha.

Bueno, estoy bastante seguro de que construí una ALU como parte de un curso de laboratorio, alrededor de 1974, y escribí parte del microcódigo para un procesador de aviónica alrededor de 1983. Ese procesador consistía en quizás 200 chips MSI de paquete plano ECL, soldados por onda en un Placa de circuito de 16 capas: el diseño de la placa probablemente fue más difícil que el diseño del circuito, y el problema más difícil fue diseñar en las rutas de conducción de calor, para llevar el calor a los bordes para transferirlo al sistema de enfriamiento. Ese procesador probablemente era comparable a un 8080, que operaba a 4.5Mips (sí M), que era cegador rápidamente para esos días. Hoy, mi reloj tiene más potencia.

Por un lado, es bastante sencillo construir una CPU realmente simple a partir de chips MSI: es tedioso y no servirá de mucho, pero es factible.

Las CPU serias son un esfuerzo de equipo, y es bastante complicado, incluso este:

Esa es la TX-0, la primera computadora de transistores, alrededor de 1956 (y antes de eso, había máquinas basadas en tubos y relés).

Los chips MSI y LSI facilitaron un poco la construcción de máquinas que no ocupaban toda una habitación, pero los avances reales llegaron con chips de alta densidad. Y simplemente no diseña y quema un chip de unión de 100,000, millones o billones por sí mismo.

Básicamente, cualquier cosa que no sea un juguete no es un proyecto a considerar. Por otro lado, diseñar y construir una placa base, alrededor de un chipset moderno, podría ser un buen proyecto educativo.

Megaprocesador

Actualmente alojado en el Centro de Historia de la Computación, en Cambridge, Reino Unido. Es una CPU totalmente funcional con gran capacidad de escritura; Ocupa la mayoría de las dos paredes del atrio. Es genial ver todas las luces parpadeantes, e incluso puedes jugar un juego muy básico de Tetris en él.

Me dijeron que tomó un total de 5 años, y £ 40,000 para construir, y ciertamente no podrá caber en ninguna computadora moderna.

Si planea construir uno usted mismo, dudo que pueda hacerlo mucho mejor sin encontrar un fabuloso que le permita hacer una carrera muy limitada, e incluso entonces probablemente le costará del orden de decenas, si no cientos de miles (la moneda no importa en las cifras de estadios como este).

Sin embargo, si por compilación, quiere decir crear un diseño funcional, que podría fabricarse, entonces sospecho que su mejor opción sería comenzar mirando los diseños existentes y trabajando desde allí.

En realidad, no es demasiado difícil, pero la mejor manera de hacerlo es usar las matrices de puertas programables de campo (FPGA) y construir la CPU utilizando un lenguaje de descripción de hardware como Verilog o el lenguaje de descripción de hardware VHSIC. Vea el siguiente enlace de Opencores:

En realidad, puede hacer una CPU adaptada con precisión a su aplicación.

Esta CPU se mostró en un Maker Faire. Conoce Magic-1, la CPU casera

Impresionante CPU envuelta en cable que diseñó desde cero.

Hace muchos años, en la década de 1970, trabajé para un contratista militar y para un proyecto especial, diseñamos un 8080 con chips de corte AMD Am2900. El Intel 8080 del día funcionó a 2MHz; la nuestra registró 32MHz, una mejora de 16 veces. La dificultad no era diseñar la CPU, sino encontrar chips de memoria y lógica lo suficientemente rápidos como para mantenerse al día. Incluso las puertas 74S schottky TTL de la época superaron los 25MHz.

Como está etiquetando “Verilog” y “FPGA”: sí, se realiza de forma rutinaria. Vaya a OpenCores y explore los proyectos del procesador. De hecho, probablemente harás esto como un proyecto en una de tus clases de división superior.

More Interesting

¿Es la ingeniería informática equivalente a la informática para trabajos gubernamentales en la India?

Estoy haciendo ingeniería informática en una universidad de grado C en India. ¿Estoy jodido?

Quiero construir un microprocesador. ¿Como empiezo?

¿Qué es la fotónica de silicio?

Amo programar y he aprendido programación solo. Creo que puedo aprender a programar solo. ¿Es un desperdicio si hago un título en ingeniería informática en lugar de un título en ingeniería electrónica?

¿Qué computadora portátil Lenovo es la mejor para estudiantes de ingeniería informática?

¿Es el diseño instructivo una opción viable para una licenciatura en ingeniería informática en la India?

¿Cuáles son algunos consejos útiles y saludables para los ingenieros informáticos?

¿Cómo comienza un principiante en diseño RTL con OpenCores?

¿Qué sería mejor, IIT Delhi o una universidad estadounidense promedio para un doctorado?

¿Hay algún dispositivo que se pueda insertar entre una computadora (CPU) y un monitor que digitalice la alimentación de video (por ejemplo, VGA) y almacene esas imágenes?

¿Qué curso tiene más oportunidades de empleo, ciencias de la computación o ingeniería informática?

Soy un estudiante de segundo año de ingeniería informática, ¿qué debo hacer para mejorar mis habilidades de proyecto?

¿Cómo va una especialización en Ciencias de la Computación y Matemáticas sobre la autoaprendizaje de Ingeniería Eléctrica e Informática?

¿Por qué se interpretan los microprogramas en lugar de compilarse?