Un ingeniero de software simula una CPU en código: El proyecto «Simple-Computer» de Daniel Harper

En el corazón de Nottingham, Reino Unido, un ingeniero de software, Daniel Harper, se enfrentó a una revelación que muchos en el mundo de la tecnología podrían compartir: a pesar de su experiencia en el sector, no comprendía realmente cómo funcionaban los ordenadores «bajo el capó». Esta curiosidad lo llevó a un viaje de aprendizaje y experimentación que culminó en un proyecto único: la simulación de una CPU completa en código, conocido como «simple-computer».

El Origen de la Curiosidad

Harper, un entusiasta de la tecnología, se topó con el libro «But How Do It Know?» de J. Clark Scott, una obra que desglosa el funcionamiento de un ordenador de 8 bits desde sus componentes más básicos, como las compuertas lógicas NAND, hasta la memoria RAM y la unidad aritmético-lógica (ALU). Aunque inicialmente no estaba interesado en los aspectos físicos de los circuitos, la descripción del flujo de bits en el sistema despertó su interés. Inspirado por el libro, decidió implementar un ordenador simple enteramente en código, creando lo que se conoce como una ‘máquina virtual’.

La Construcción de «Simple-Computer»

Para este desafío, Harper optó por el lenguaje de programación Go, una elección que le permitió simular un circuito sin recurrir a herramientas especializadas en diseño de circuitos. El resultado fue «simple-computer», un ordenador simulado capaz de realizar cálculos básicos y manejar entradas de teclado, mostrando los resultados en una pantalla con un conjunto de glifos diseñados a mano.

El Proceso de Simulación

La simulación de la CPU se logró mediante una red de puertas lógicas, un proceso que Harper describió como inicialmente caótico. Sin embargo, tras un proceso de depuración y prueba, el sistema funcionó correctamente. Aunque la simulación logró realizar operaciones básicas, Harper admitió con humor que el resultado de «2 + 2 = 5» reflejaba los desafíos y errores encontrados en el camino.

La Experiencia del Ensamblador

Uno de los aspectos más reveladores del proyecto fue la escritura de un lenguaje ensamblador rudimentario. Este ensamblador, aunque imperfecto, le permitió experimentar con la codificación a bajo nivel, enfrentando las limitaciones de una arquitectura simple. La experiencia le enseñó la complejidad de escribir programas en ensamblador con un conjunto limitado de instrucciones, lo que le hizo valorar las características modernas de los sistemas operativos y las CPU.

Reflexiones y Futuro

Harper descubrió lo complicado que puede ser escribir programas en ensamblador, especialmente contando con un conjunto limitado de instrucciones y sin ciertas características modernas. Este proyecto le proporcionó una comprensión más profunda de los conceptos básicos de los ordenadores, motivándolo a seguir aprendiendo sobre arquitecturas más avanzadas como RISC y RISC-V. Su objetivo es profundizar en la evolución de las CPUs modernas y comprender características avanzadas como las cachés y la ejecución en paralelo.

Impacto en el Mundo Tecnológico

Aunque Harper reconoce que este conocimiento no es estrictamente necesario en su trabajo diario, el proyecto «simple-computer» ha sido un viaje de aprendizaje y disfrute. Este tipo de iniciativas no solo reflejan la curiosidad innata de los ingenieros de software por entender cómo funcionan las tecnologías que utilizan, sino que también pueden inspirar a otros a explorar y experimentar con la tecnología de una manera más profunda.

En resumen, el proyecto de Daniel Harper es un ejemplo perfecto de cómo la curiosidad y la pasión por la tecnología pueden llevar a la creación de algo innovador y educativo. «Simple-computer» no solo es un testimonio de su dedicación, sino también una ventana hacia el mundo interno de las computadoras, demostrando que incluso los sistemas más complejos pueden ser entendidos y replicados a través de la programación pura. En un mundo donde la tecnología avanza a pasos agigantados, proyectos como este nos recuerdan la importancia de entender los fundamentos de lo que usamos todos los días.

Fuente: djhworld y código Single Computer en Github

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio