Un groupe de chercheurs a réussi à stocker une grande quantité d’informations dans des brins d’ADN, en atteignant une densité théorique record de 215 pétaoctets par gramme. Une technique qui ouvre de vraies pistes sur le stockage pérenne d’informations, avec de sérieuses limitations toutefois sur le coût et le temps.

L’idée d’utiliser de l’ADN pour stocker des données initialement électroniques n’est pas nouvelle. Des travaux sont menés en ce sens depuis des années, puisque l’acide désoxyribonucléique – de son vrai nom – est une molécule conçue justement pour transporter de l’information. Le concept est-il applicable à l’informatique ? Techniquement, oui. De manière pérenne ? Aussi. Est-ce facilement exploitable ? Pas encore.

Une idée qui n'est pas neuve...

Dans la revue Science, les chercheurs Yaniv Erlich et Dina Zielinksi et leur équipe ont mis au point une nouvelle technique. Les résultats obtenus sont très prometteurs, puisque non seulement le stockage s’est passé sans problème, mais les lectures ont permis de restaurer plusieurs fois les données sans aucune erreur. Les chiffres obtenus donnent le tournis : une densité estimée de 215 pétaoctets par gramme d’ADN, et un nombre de lectures avant dégradation estimé à 10^15. Autant dire virtuellement illimité.

Pour comprendre la technique utilisée, il faut rappeler quelques bases. L’ADN est une molécule utilisée par le monde du vivant pour stocker, transporter et transmettre l’information, en l’occurrence le patrimoine génétique (génome). Cette information est stockée grâce à des paires de nucléotides : adénine (A), cytosine (C), guanine (G) et thymine (T). L’ensemble de l’information est donc représenté par une séquence de ces quatre lettres.

... les problèmes non plus

Le principal problème dans le stockage d’une information dans de l’ADN est la fiabilité de la retranscription. Qu’il s’agisse de stockage ou de lecture, il peut survenir des erreurs. Il en survient d’autant plus que les scientifiques, pour obtenir assez d’ADN en vue d’y enregistrer des informations, recourent à la technique PCR (réaction de polymérisation en chaine), qui réplique le double brin.

En outre, et comme l’expliquent les chercheurs, certaines séquences peuvent entrainer des erreurs plus nombreuses de lecture. Par exemple, la trop grande fréquence des bases C et G, ou les longues répétitions d’une même base, comme AAAAAA, ou TTTTTT. Quelle que soit la technique utilisée, il fallait donc qu’elle soit accompagnée d’une véritable tolérance aux erreurs.

Ajouter des données de redondance

C’est précisément ce qu’ont fait les chercheurs. Leur technique se nomme Fountain DNA car ils sont allés chercher du côté des « fountain codes ». Ces derniers permettent de générer des données supplémentaires pour les informations transmises par paquets. Plus on ajoute de données, plus la tolérance d’erreur devient grande, l’information réelle pouvant être reconstituée. Une technique qui n'est pas sans rappeler les fichiers PAR(2) notamment utilisés sur les newsgroups. Ils ont été créés justement pour transmettre des données sur des liaisons de très mauvaise qualité, qui entrainaient des erreurs multiples. Il faut bien entendu trouver le bon ratio pour ne pas surcharger les brins d’ADN.

Le processus commence donc avec un encodage tenant compte des fountain codes. Les chercheurs obtiennent alors une grande quantité de petits paquets. Ces derniers sont ensuite codés en séquences ADN, en s’appuyant sur les nucléotides. L’astuce est alors d’analyser le code obtenu, et de retirer toutes les séquences qui pourraient poser des problèmes à la lecture. Puisque les données supplémentaires sont là en solution de secours, cette suppression n’a pas d’impact sur l’information.

Une densité record

Dans une archive compressée (tarball) de 2,1 Mo seulement, les chercheurs ont pu stocker un système d’exploitation minimal et son interface, un film et quelques autres fichiers. Cette archive a ensuite été divisée en 67 088 segments de 32 octets. Chaque segment s’est vu ajouter 6 octets de fountain code, puis a été ensuite inscrit dans une séquence de 128 nucléotides (ou bases azotées). Une quantité suffisante pour coder de manière fiable des fichiers pesant jusqu’à 500 Mo. 38 octets représentant 304 bits, cette quantité était encodée dans un brin de 152 paires de base. La redondance obtenue était de 7 %, suffisante pour assurer une très bonne résilience des données face aux erreurs.

Tous les tests effectués ensuite par les chercheurs ont montré que le système fonctionnait très bien. Ils ont eux-mêmes inséré des erreurs ou encore supprimé aléatoirement des séquences d’ADN, mais l’information a quand même pu être restaurée à chaque fois. Ils ont également dilué l’ADN pour chercher le point de rupture (information illisible) et ont ainsi obtenu l’estimation théorique d’une densité de 215 pétaoctets par gramme de molécule.

À titre de comparaison, Samsung parvient actuellement à stocker 512 Go dans une puce de 1 gramme seulement (avec un débit de 1,5 Go/s), mais nul doute que cette capacité augmentera au fil des années avec l'arrivée de NAND QLC avec toujours plus de couches empilées.

Pourquoi ne pas tout basculer dans l'ADN ?

Un stockage pérenne, dont l’entretien ne coûterait qu’une fraction de ce que suppose un centre de données aujourd’hui, très résistant aux erreurs et qui assure un nombre virtuellement illimité de lectures. Pourquoi ne pas dès lors construire demain des banques de stockage et passer au tout-ADN ? Parce qu’il y a bien sûr des limites, principalement deux : le coût et le temps.

Une fois que l’information est stockée, les brins d’ADN peuvent être gardés dans un endroit isolé, avec peu de moyens. Mais la création de ces brins d’informations coûte actuellement une petite fortune : les chercheurs estiment la facture – très salée – à environ 3 500 dollars par Mo. Il faut cependant tenir compte de la commande initiale d’ADN par les chercheurs, qui avaient réclamé des brins sans erreurs. La qualité pourrait être revue à la baisse en laissant les fountain codes faire le travail.

L’autre grand problème est le temps nécessaire. Sans même parler de toucher à l’ADN, l’encodage de chacun des 67 088 segments prenait 2min30 en laissant faire « le CPU d’un ordinateur portable classique ». On pourrait évidemment aller beaucoup plus vite, mais il resterait le problème de la transcription dans l’ADN, et surtout de sa lecture : pour rappeler l’archive de 2,1 Mo utilisée pour les tests, il faudrait presque une journée entière.

Rappelons cependant qu’il s’agit de travaux de recherche. La technique peut donc être largement affinée, surtout si elle devait être un jour industrialisée. Si le stockage dans l’ADN doit devenir une technique porteuse, les coûts baisseraient immanquablement. Les soucis de performances seraient nettement plus complexes à dépasser, mais tous les types de stockages ne se valent pas sur ce terrain.

Ce n’est pas en effet par ce que l’ADN est considéré comme moyen de stockage que l’on doit envisager son arrivée dans les ordinateurs ou les appareils mobiles. On pourrait imaginer des banques de stockage spécialisées dans la préservation à très long terme, un domaine dans lequel la molécule pourrait avoir son mot à dire.