El Intel 4004, un microprocesador de 1971, logra arrancar Linux tardando 4,76 días… ¡tras optimizarlo al máximo!
Los ordenadores han cambiado mucho con el paso de los años, tanto a nivel de hardware como de software. Si hablamos de hardware como procesadores y tarjetas gráficas, estos son muchísimo más rápidos de lo que eran años atrás y mejor ni hablamos de décadas atrás. Las diferencias son tan grandes que si a día de hoy podemos ejecutar un sistema operativo como Linux en cuestión de días, usando el Intel 4004 de la década de los 70 hace que tardemos cerca de 5 días.
Si llevas poco tiempo en el mundo de la informática, probablemente hayas empezado viendo procesadores con múltiples núcleos, frecuencias que exceden los 4 GHz y un rendimiento sensacional en juegos o programas. Eso es ahora, pues en la antigüedad ni siquiera teníamos CPU de varios núcleos y lo de los GHz seguía siendo una velocidad demasiado elevada para ese entonces. Los procesadores de un solo núcleo y cientos de MHz eran habituales, pero en esta ocasión hablamos de algo aún más antiguo que esos.
El Intel 4004 puede ejecutar Linux utilizando un emulador y siendo muy paciente
El Intel 4004 se considera el primer microprocesador que se vendió a nivel comercial en el mundo. Está creado con 2.300 transistores y una velocidad de reloj de 730 kHz, por lo que no tiene nada que ver con los procesadores modernos. Esta CPU de 4 bits se lanzó en 1971 y a pesar de que ha cumplido más de 50 años, es capaz de ejecutar un sistema operativo moderno como Linux. Eso sí, para conseguir hacerlo se ha necesitado no solo emplear este Intel 4004, sino también diseñar un emulador que simula un procesador MIPS R3000.
Este se empleó en la DECstation 2100, la máquina a la que Linux fue portado originalmente. Pero como imaginarás, este Intel 4004 va a sufrir en el intento y esto ocurre aunque Debian Linux se haya reducido a un simple arranque mediante un símbolo del sistema. Este procesador tiene una cantidad de memoria ROM y RAM casi inexistentes y ni siquiera puede ejecutar operaciones lógicas como "and" y "or". Es por ello, que el trabajo se invirtió en la creación de este emulador que emplea tablas de búsqueda y otras técnicas para poder aprovechar la limitada capacidad de esta CPU.
Los tiempos de espera van desde los 8,9 días a los 4,76 días tras realizar optimizaciones
Para poder ayudar un poco a este proceso, se realizó overclock del Intel 4044 a 790 kHz y tras conectarle una pantalla VFD, tenemos un PC que consume unos 6W durante este largo proceso. Ahora es cuando empiezan las pruebas sobre que puede realizar para optimizar la velocidad, podemos ver todos los detalles en los en el blog de Dmitrygr, el cual ha puesto una sección dedicada a esto. En un principio observó que tardaría 8,9 días en ejecutar Linux a 740 kHz, pero recordemos que ha realizado un pequeño overclock y además se han usado tablas de búsqueda, lo que ha permitido bajar a 8,4 días.
Con una optimización en la lectura de la memoria logró pasar a 7,25 días, lo mismo con la copia de la memoria pasó a 6,63 días. Dado que estaba limitado por RAM, intentó añadir hasta 16 MB mediante código, pero el tiempo subió a 7,19 días. Separando el almacenamiento de la memoria de las instrucciones en registros pudo bajar a 6,5 días y tras varios pasos más, al final se quedó con 4,76 días.