Insolite : il fait tourner Linux sur un processeur 8 bits…

Dmitry Grinberg a réussi à faire fonctionner Ubuntu sur une puce 8 bits cadencée à 24 MHz, en émulant un ARM à 6,5 kHz. Un projet hautement geek.

Le moins que l’on puisse dire est que Dmitry Grinberg a de la suite dans les idées. Cet employé du Lab126 (la société qui crée les Kindle pour le compte d’Amazon) s’est attelé à un projet un peu fou : faire fonctionner Linux sur un microcontrôleur 8 bits.

Pour ce faire, il s’appuie sur une puce Atmel ATmega1284P, laquelle est cadencée à 20 MHz, comprend 16 Ko de SRAM et 128 Ko de mémoire Flash. Le strict minimum donc.

Premier constat, cette offre ne dispose pas d’assez de mémoire vive. Notre geek lui adjoint donc une barrette SIMM de 16 Mo. L’ATmega1284P ne pouvant gérer de la mémoire externe, il assure de façon logicielle le rafraichissement et l’accès à cette mémoire dynamique. Coût de l’opération : 3 % du temps CPU pour un débit de 300 Ko/s. Pour le stockage, un lecteur de carte SD a été choisi. Une option assez facile à implémenter. Une carte de 1 Go a ainsi été greffée à l’appareil, avec un taux de transfert de 200 Ko/s.

Du 32 bits sur un 8 bits

Côté spécifications, tout semble OK, à un détail près : Linux requiert un processeur 32 bits avec une unité de gestion de la mémoire. Dmitry Grinber n’hésite pas : il crée un émulateur ARM pour son microcontrôleur. Émulateur d’autant plus lent que les instructions ARM sont stockées dans la barrette de RAM, et donc accédées à un rythme asthmatique (un cache en mémoire principale est toutefois présent). Notez que l’émulateur a été conçu pour être adaptable à d’autres architectures 8 bits, et qu’il implémente les instructions Thumb.

La machine est connectée à un PC via un port série, afin de disposer d’un terminal, et est boostée à 24 MHz. Concernant la distribution Linux, le choix s’est porté sur Ubuntu. Le kernel 2.6.34 démarre en deux heures. Comptez-en quatre de plus pour accéder au shell du système. L’OS est ensuite tout à fait utilisable. « Je pense qu’il s’agit probablement du PC Linux le moins cher, le plus lent, le plus simple à assembler et comptant le moins de composants. »

Dmitry Grinber a filmé le démarrage de sa machine, mais signale qu’il a accéléré la vidéo et qu’il a coupé certains éléments superflus. Une vidéo de trois heures et demie est également accessible, mais comprend quelques coupures… le temps de changer la batterie du caméscope.

Bientôt 50 % de puissance en plus

Un émulateur ARM sur une puce 8 bits, de la SRAM à 200 Ko/s ; sans surprise, les performances restent faibles. Ainsi, la vitesse du processeur émulé est estimée à 6,5 kHz. Dmitry Grinber vient toutefois de mettre au point des optimisations qui permettront de booster l’ARM émulé à 10 kHz. Geek jusqu’au bout des ongles, il envisage même de simuler un ARM multicœur.

In fine, l’exploit est de taille, aussi bien pour l’auteur de ce hack que pour Linux, qui accepte sans broncher de fonctionner à une vitesse qui ferait probablement fuir MS-DOS.

Crédit photo : © NinaMalyna – Fotolia.com