No sabía cómo funcionan por dentro las CPU, así que este programador simuló una usando sólo código

"Mi modelo mental de informática está estancado en los libros de texto de informática para principiantes", reconoce

Cpu
2 comentarios Facebook Twitter Flipboard E-mail

Daniel Harper es un ingeniero de software de Nottingham (Reino Unido) que un día se dio cuenta de que, realmente, pese a su experiencia en el sector tecnológico, seguía sin saber cómo funcionan los ordenadores "bajo el capó". A nivel de hardware, vaya.

Eso le llevó a leer el libro 'But How Do It Know?' de J. Clark Scott, que explica el funcionamiento de un ordenador simple de 8 bits desde un nivel fundamental, es decir, desde las compuertas lógicas NAND hasta la memoria RAM, la unidad aritmético-lógica (ALU) y otros componentes básicos de una CPU.

A pesar de reconocer no estar interesado en los aspectos físicos de los circuitos, quedó intrigado por la descripción del flujo de bits en el sistema. Así que, inspirado por el citado libro, se animó a implementar un ordenador simple enteramente en código, a modo de 'máquina virtual'.

Para esta tarea, optó por usar el lenguaje de programación Go en lugar de herramientas especializadas en el diseño de circuitos como VHDL o Verilog.

La creación de "Simple-Computer"

El resultado de esta aventura fue "simple-computer", un ordenador simulado que, aunque rudimentario, es capaz de realizar cálculos y manejar entradas de teclado, mostrando los resultados en una pantalla mediante un conjunto de glifos diseñados artesanalmente.

Aunque la entrada y salida de datos se gestionaron mediante canales de comunicación de Go con GLFW (una biblioteca para manejar ventanas y entradas), el resto del proyecto se basó en la simulación de un circuito real.

A pesar de ser un proyecto simple, le proporcionó una comprensión más profunda de los conceptos básicos de los ordenadores

La simulación de la CPU se logró a través de una compleja red de puertas lógicas que, aunque inicialmente caótica, fue depurada y probada hasta funcionar correctamente.

La implementación de esta CPU permitió al desarrollador realizar operaciones básicas como sumar, aunque admitió con humor que el resultado fue "2 + 2 = 5", un reflejo de los desafíos y errores encontrados en el camino.

Uno de los aspectos más reveladores del proyecto fue la escritura de un lenguaje ensamblador rudimentario. El ensamblador, aunque imperfecto, permitió al autor experimentar con la codificación a bajo nivel, enfrentando las limitaciones de una arquitectura simple.

Harper descubrió lo complicado que puede ser escribir programas en ensamblador contando únicamente con un conjunto limitado de instrucciones, así como la dificultad de trabajar sin ciertas características modernas (recuerda, es una simulación de un ordenador de 8 bits, no de 64 como el que estarás usando en este momento).

Ahora, nuestro protagonista está motivado para seguir aprendiendo sobre arquitecturas más avanzadas como RISC y RISC-V, con la intención de profundizar en la evolución de las CPUs modernas y comprender características avanzadas como las cachés y la ejecución en paralelo.

¿Necesito saber algo de esto en mi trabajo diario? Probablemente ayude, pero no realmente, pero lo estoy disfrutando.

Vía | DJHarper.dev

Imagen | Marcos Merino mediante IA

En Genbeta | Los 10 mejores videojuegos sobre programación que podemos encontrar en oferta en Steam

Inicio