Flash NAND vs NOR : différences et usages
Ce sont toutes deux des mémoires flash non volatiles, mais leur câblage diffère. La flash NOR connecte ses cellules en parallèle : elle offre des lectures aléatoires rapides et permet d'exécuter le code sur place, mais son coût par bit est élevé. La flash NAND connecte ses cellules en série : elle loge beaucoup plus de bits sur la même surface et est bon marché, mais elle lit et écrit par pages et nécessite une correction d'erreurs. C'est pourquoi la NAND stocke vos données et la NOR le firmware.
| Critère | Flash NAND | Flash NOR |
|---|---|---|
| Connexion des cellules | Les cellules sont connectées en série en chaînes, avec des transistors de sélection aux deux extrémités | Les cellules sont connectées en parallèle à la ligne de bit, si bien que chaque cellule est accessible directement |
| Accès en lecture | Lecture par pages (plusieurs KB à la fois). Le premier accès prend plusieurs dizaines de microsecondes, les lectures aléatoires sont donc lentes | Accès aléatoire rapide au niveau de l'octet ou du mot, de l'ordre de quelques dizaines de nanosecondes |
| Écriture (programmation) | Programmation page par page ; débit élevé pour les écritures séquentielles | Programmation par petites unités ; plus lente pour de grandes quantités de données |
| Unité d'effacement | Bloc (quelques MB ou plus) | Secteur (typiquement 64 à 128 KB) |
| Mécanisme de programmation | Effet tunnel Fowler-Nordheim pour la programmation comme pour l'effacement | Injection d'électrons chauds dans le canal pour programmer, effet tunnel pour effacer |
| Densité et coût par bit | Densité élevée et faible coût ; la 3D NAND empile des centaines de couches, et les TLC/QLC stockent 3 à 4 bits par cellule | Densité plus faible (généralement jusqu'à quelques gigabits par puce) et coût par bit plus élevé |
| Exécution sur place (XIP) | Non. Le code doit d'abord être copié en RAM | Oui. Un processeur peut exécuter le code directement depuis la puce |
| Fiabilité | Les blocs défectueux et les erreurs de bits sont normaux : une ECC robuste, la gestion des blocs défectueux et le wear leveling sont indispensables | Peu d'erreurs de bits, une correction d'erreurs légère suffit donc |
| Endurance | D'environ 100 000 cycles de programmation/effacement (SLC) jusqu'à environ 1 000 ou moins (QLC) | Typiquement environ 100 000 cycles de programmation/effacement |
| Usages typiques | SSD, clés USB, cartes mémoire, stockage des smartphones (eMMC, UFS) | Code de démarrage et firmware : puces BIOS/UEFI, code des microcontrôleurs, équipements automobiles et industriels |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.