La carte SD a fait son apparition pour la première fois en 1999, avec des cartes offrant des capacités de stockage allant jusqu'à 64 Mo sur les tablettes des magasins au premier trimestre de 2000. Au fil des ans, les tailles ont lentement augmenté alors que notre soif de stockage continuait de croître. Avance rapide jusqu'à aujourd'hui, et les plus grosses cartes microSD emballent jusqu'à 1 To dans un paquet plus petit que le timbre-poste moyen.

Cependant, arriver à ce point a nécessité de nombreux changements subtils au fil des ans. Cela peut causer des ravages aux utilisateurs qui essaient d'utiliser les dernières cartes sur des appareils plus anciens. Pour savoir pourquoi, nous devons examiner sous le capot comment les cartes SD gèrent la capacité de stockage.

Problèmes initiaux

Une carte rare de 4 Go produit piror à la ratification de SDHC. La compatibilité de ces cartes est limitée, car elles fonctionnent en dehors de la norme antérieure ou ultérieure. Crédit d'image: Wirepath

Les premiers problèmes ont commencé à apparaître avec la norme SD lorsque les cartes franchissaient la barrière des 1 Go. Le stockage sur une carte SD est déterminé par le nombre de clusters, le nombre de blocs par cluster et le nombre d'octets par bloc. Ces données sont lues à partir des données spécifiques à la carte, ou registre CSD, par l'hôte. Le CSD contient deux champs, C_SIZE et C_SIZE_MULT, qui désignent respectivement le nombre de clusters et le nombre de blocs par cluster.

La norme 1.00 autorisait un maximum de 4096 clusters et jusqu'à 512 blocs par cluster, tout en supposant que la taille de bloc était de 512 octets par bloc. 4096 clusters multipliés par 512 blocs par cluster, multipliés par 512 octets par bloc, donnent une carte avec 1 Go de stockage. À ce niveau, il n'y avait pas de problèmes de compatibilité majeurs.

La formule utilisée pour calculer la capacité de la carte SD dans la version 1.01 de la norme.

La norme 1.01 a apporté un changement apparemment mineur – permettant à la taille de bloc d'être de 512, 1024 ou même 2048 octets par bloc. Un champ supplémentaire a été ajouté pour désigner la longueur maximale de bloc dans le CSD. La longueur maximale, telle que conçue par READ_BL_LEN et WRITE_BL_LEN dans la norme officielle, pourrait être définie sur 9, 10 ou 11. Cela désigne la taille de bloc maximale comme 512 octets (par défaut), 1024 octets ou 2048 octets, permettant des tailles de carte maximales de 1 Go, 2 Go ou 4 Go respectivement. Malgré la norme mentionnant occasionnellement des tailles de bloc maximales de 2048 octets, officiellement, la norme SD d'origine atteint 2 Go. Cela peut être dû en grande partie au fait que la carte SD était principalement destinée à être utilisée avec le système de fichiers FAT16, qui lui-même dépassait la limite de 2 Go en utilisation conventionnelle.

Soudain, des problèmes de compatibilité ont surgi. Les hôtes antérieurs qui ne connaissaient pas les longueurs de bloc variables ne reconnaîtraient pas le stockage supérieur disponible sur les cartes les plus récentes. Cela était particulièrement problématique avec certains boîtiers périphériques qui tentaient de faire fonctionner des cartes de 4 Go. Souvent, les très premiers lecteurs qui ignoraient le champ READ_BL_LEN signalaient 2 Go et les cartes rares de 4 Go comme 1 Go, notant le nombre correct de clusters et de blocs mais incapables de reconnaître les longueurs de bloc étendues.

Heureusement, c'était encore au tout début de l'ère des cartes SD, et les cartes plus grandes n'étaient pas encore utilisées par le grand public. Cependant, avec la norme atteignant une barrière de taille solide à 4 Go en raison du schéma d'adressage 32 bits, d'autres changements étaient imminents.

Obstacles ultérieurs

2006 a apporté la version 2.00 de la spécification SD. Annonçant la norme SDHC, il promettait des tailles de carte allant jusqu'à 32 Go. Techniquement, SDHC a été traité comme une nouvelle norme, ce qui signifie que toutes les cartes de plus de 2 Go doivent être SDHC, tandis que les cartes de 2 Go et moins doivent rester implémentées conformément à la norme SD existante.

La formule de calcul de la capacité des cartes SDHC et SDXC.

Pour atteindre ces plus grandes tailles, le registre CSD a été entièrement retravaillé pour les cartes SDHC. Le champ principal C_SIZE a été étendu à 22 bits, indiquant le nombre de clusters, tandis que C_SIZE_MULT a été supprimé, la norme supposant une taille de 1024 blocs par cluster. Le champ indiquant la longueur de bloc – READ_BL_LEN – est conservé, mais verrouillé à une valeur de 9, exigeant une taille fixe de 512 octets par bloc. Deux bits autrefois réservés sont utilisés pour indiquer le type de carte à l'hôte, avec des cartes SD standard utilisant une valeur de 0, avec un 1 indiquant le format SDHC (ou plus tard, SDXC). Les lecteurs Sharp remarqueront que cela pourrait permettre des capacités allant jusqu'à 2 To. Cependant, la norme SDHC s'arrête officiellement à 32 Go. SDHC impose également l'utilisation de FAT32 par défaut, ce qui donne aux cartes une limite de taille fixe de 4 Go par fichier. En pratique, cela se remarque facilement lors de l'enregistrement de longues vidéos en haute qualité sur une carte SDHC. Les caméras créeront plusieurs fichiers ou arrêteront complètement l'enregistrement lorsqu'elles atteindront la limite de 4 Go de fichiers.

SDXC permet des cartes d'une taille allant jusqu'à 2 To, avec des cartes maximisant cela presque sur le marché. En 2018, la norme SDUC a été annoncée, ce qui permettra des tailles allant jusqu'à 128 To.

Pour aller au-delà de ce niveau, la norme SDXC prend en compte les cartes de plus de 32 Go, jusqu'à 2 To de taille. Le registre CSD était déjà capable de traiter des capacités jusqu'à ce niveau, donc aucune modification n'a été nécessaire. Au lieu de cela, le principal changement a été l'utilisation du système de fichiers exFAT. Créé par Microsoft spécialement pour les périphériques de mémoire flash, il évite la limite de taille de fichier restrictive de 4 Go de FAT32 et évite les frais généraux plus élevés des systèmes de fichiers comme NTFS.

Les cartes actuelles sont disponibles jusqu'à 1 To, presque au maximum de la spécification SDXC. Lorsque la spécification a été annoncée il y a 11 ans, Wired a signalé que 2 cartes TB «arriveraient bientôt», ce qui, avec le recul, a peut-être un peu fait sauter l'arme. Quoi qu'il en soit, la prochaine norme, SDUC, prendra en charge les cartes jusqu'à 128 To. Il est fort probable qu'une autre rupture de compatibilité sera nécessaire, car les registres de capacité actuels de la spécification SDXC sont déjà au maximum. Nous ne le saurons peut-être pas avant que la spécification ne soit mise à la disposition du grand public dans les années à venir.

Où se trouvent les problèmes

Les problèmes de compatibilité les plus évidents résident au niveau des principales barrières entre les générations de cartes SD. La barrière de 1 Go entre 1,00 et 1,01, la barrière de 2 Go entre SD et SDHC et la barrière de 32 Go entre SDHC et SDXC. Dans la plupart des matériels embarqués, ce sont des barrières dures qui nécessitent simplement la bonne taille de carte, sinon elles ne fonctionneront pas du tout. Cependant, dans le cas des ordinateurs de bureau, il y a parfois plus de marge de manœuvre. À titre d'exemple, SanDisk affirme que les lecteurs de cartes PC conçus pour gérer SDHC devraient également pouvoir lire les cartes SDXC, à condition que le système d'exploitation d'hébergement prenne également en charge exFAT. Cela n'est pas surprenant, étant donné la nature similaire des normes au bas niveau.

Un guide pratique pour savoir quelles cartes sont compatibles avec quels lecteurs. En pratique, les hôtes individuels peuvent avoir leurs propres limites déroutantes.

Heureusement, les nouveaux lecteurs sont rétrocompatibles avec les anciennes cartes, mais l'inverse est rarement vrai. Cependant, il existe des solutions de contournement qui peuvent permettre aux utilisateurs expérimentés de rendre les combinaisons étranges agréables. Par exemple, le formatage des cartes SDXC avec FAT32 permet généralement de les utiliser à la place des cartes SDHC. De plus, le formatage des cartes SDHC avec FAT16 peut leur permettre d'être utilisées à la place des cartes SD standard, mais sans accès à leur pleine capacité de stockage.

Ces solutions de contournement sont cependant loin d'être sûres. Il existe de nombreux appareils qui ont leurs propres limites intégrées, dues aux bizarreries de leur propre matériel et logiciel. Un exemple particulièrement pertinent est le Raspberry Pi. Tous les modèles, à l'exception des 3A +, 3B + et Compute Module 3+, sont limités aux cartes SD de moins de 256 Go, en raison d'un bogue dans le système sur puce des modèles précédents. Fondamentalement, pour certains matériels, la meilleure approche peut être de rechercher ce qui fonctionne et ce qui ne fonctionne pas, et d’être guidée par les connaissances de la communauté. À défaut, achetez un tas de cartes, notez ce qui fonctionne et ce qui ne fonctionne pas, et partagez les résultats pour que les autres puissent les voir.

Malheureusement, le problème ne disparaîtra pas de sitôt. En fait, à mesure que la taille des cartes continue d'augmenter, le matériel plus ancien peut être laissé de côté car il devient difficile, voire impossible, de se procurer des cartes compatibles avec des capacités plus petites qui ne sont plus économiques à fabriquer pour les entreprises. Déjà, il est difficile voire impossible de se procurer de nouvelles cartes de 2 Go et moins. Attendez-vous à ce que des solutions émulées complexes émergent pour le matériel de bord important, de la même manière que nous utilisons les cartes SD pour émuler les disques SCSI obsolètes aujourd'hui.

LAISSER UN COMMENTAIRE

Rédigez votre commentaire !
Entrez votre nom ici