Em um feito impressionante, o kernel do Linux foi iniciado com sucesso no Intel 4004, o primeiro microprocessador comercial lançado em 1971. Este chip de 4 bits, com apenas 2300 transistores, suporta 46 instruções e realiza cerca de 60 mil operações por segundo. O processador é um marco na história da computação, mas possui limitações significativas, como a capacidade de endereçar apenas 4 KB de memória ROM. Confira o teste e as informações técnicas completa neste link.
Para superar essas restrições e rodar o Linux, foi utilizada a ideia de criar um emulador do processador MIPS R3000, que é capaz de executar o Linux em um ambiente adequado. Como não existem compiladores C para o Intel 4004, todo o emulador foi programado em assembly, uma tarefa desafiadora, mas crucial para o sucesso da experiência. Assim, o emulador rodava diretamente no chip Intel 4004, executando o Linux em uma camada simulada.
O MIPS R3000 foi escolhido como a arquitetura ideal para emulação devido à sua simplicidade e ao fato de ser compatível com os limites do Intel 4004 e da memória disponível. Outras arquiteturas, como ARM, RISC-V, x86 e PPC, foram descartadas por serem inviáveis em termos de consumo de memória ou complexidade de emulação.
Para realizar o experimento, foi construída uma placa básica, contendo o Intel 4004, um gerador de clock Intel 4201, memória Intel 4002-1 de 20 bytes e um microcontrolador ATMEGA48 para simular a ROM. Com o tempo, a placa foi aprimorada com memória adicional para suportar o ambiente Linux, além de uma SD card para simular a ROM.
Apesar do sucesso, a baixa potência do Intel 4004 resultou em uma execução extremamente lenta. Por exemplo, a simulação de um segundo virtual no ambiente emulado exigia cerca de 4 horas de processamento no Intel 4004. O teste de renderização de um conjunto de Mandelbrot, utilizando cálculos de ponto flutuante, demorou 30 dias, enquanto com aritmética de inteiros, o tempo foi reduzido para 9 horas.
Após várias otimizações, a inicialização do Linux no sistema levou mais de 8 dias. Para documentar o processo, um vídeo completo da inicialização foi gravado, acelerado 120 vezes, de modo que 1 segundo de vídeo representa 2 minutos de processamento real no Intel 4004. Especificações, esquemas da placa, o código do emulador, e o sistema Linux utilizado foram disponibilizados para quem desejar repetir o experimento.
Este experimento não apenas mostrou as capacidades do Intel 4004, mas também demonstrou o quão longe a tecnologia moderna avançou desde os primeiros microprocessadores.