NOR vs NAND : So You Think You Know the Music?

Ceux d’entre vous qui ont passé le moindre temps à fouiller pour trouver des idées sur les technologies de stockage embarquées le savent : le sous-espace d’Internet consacré à ce sujet particulier est inondé de courts articles comparant les technologies flash NOR et NAND. Certains sont très bien écrits et véritablement instructifs. Mais trop souvent, la simple accumulation de contenu fade, sec et sans contexte vous laisse sur votre faim. À moins, peut-être, qu’il n’y ait rien de plus ? À moins que ces quelques bribes de matériel répétées à profusion soient tout ce qu’il y a à savoir ? Nous ne le pensons pas.

Ce troisième article de notre série d’introduction (Voir partie 1 et partie 2) sur le stockage flash est notre propre version du classique « NOR versus NAND ». Une version qui, nous l’espérons, élèvera votre compréhension de ces technologies de stockage très répandues et vous aidera à prendre de meilleures décisions de conception. Cela dit, cet article n’est pas un texte d’introduction didactique et autonome. Il s’agit plutôt d’un complément à l’introduction habituelle, couvrant des aspects des technologies flash NOR et NAND qui, à notre avis, sont trop souvent ignorés. Si vous êtes totalement novice en matière de technologies flash NOR et NAND, vous voudrez peut-être d’abord passer par du matériel plus neutre comme les articles de Wikipedia sur le même sujet. En revanche, si vous avez déjà une connaissance approfondie de ces technologies, vous pouvez toujours trouver des bribes d’informations utiles (voire, peut-être, surprenantes) dans cet article.

Au delà des chiffres

Le tableau 1 est une comparaison côte à côte des technologies flash NOR et NAND sur la base de diverses mesures de performance. Bien que ces chiffres puissent varier considérablement selon les dispositifs réels, ils sont plausibles et peuvent servir de référence précieuse.

.

.

NOR NAND
Write Throughput 1 MB/s 10 Mo/s
Débit de lecture 40 Mo/s 30 Mo/s
Débit d’effacement 0.1 Mo/s 300 Mo/s
Erasement-Débit d’écriture 100 Ko/s 10 Mo/s
Granularité de lecture Octet Page (4KiB typique)
Granularité d’écriture Octet (typique) Page (4 KiB typique)
Granularité d’effacement Bloc (64 KiB typique) Bloc (256 KiB typique)
Consommation d’énergie pour l’écriture 1uJ/octet 10nJ/octet
Consommation d’énergie en lecture 1nJ/octet 1nJ/octet
Consommation d’énergie en effacement 600nJ/octet 0.2nJ/octet

Tableau 1. Caractéristiques plausibles des flashes NOR et NAND

Mais aussi utiles qu’ils soient, les chiffres sans une interprétation correcte sont dénués de sens, voire carrément trompeurs. Les chiffres de performance brute font du bon marketing parce qu’ils sont faciles à énoncer et à comprendre (au moins superficiellement), mais ils n’apportent pas beaucoup d’informations pertinentes du point de vue de la conception d’une application.

Illustrons ce que nous voulons dire par un exemple concret : les performances d’écriture. Le tableau 1 suggère que l’écriture est beaucoup plus rapide sur NAND que sur NOR. En fait, il s’agit d’une affirmation spécieuse qui refait trop souvent surface. Bien sûr, elle comporte une part de vérité. Mais elle est aussi tout à fait réductrice et ouvre la voie à de mauvaises décisions de conception. Regardons de plus près.

La flash NOR permet des accès en écriture au niveau de l’octet. La NAND, en revanche, a une granularité d’écriture beaucoup plus grossière. Sur les flashes NAND, les données ne peuvent être écrites que par pages, typiquement 4 KiB à la fois pour les NAND SLC (8 KiB ou plus pour les NAND MLC). Dans le cas d’un petit accès en écriture (disons 512 octets), une page entière doit être chargée en RAM, modifiée et réécrite. Au final, il y a plus de données écrites que de données réellement modifiées. Ce phénomène est communément appelé amplification d’écriture. Dans notre exemple (très plausible), l’amplification en écriture est de 8 (page de 4 KiB/accès de 512 octets). Dans une charge de travail dominée par des accès aussi petits, le débit d’écriture effectif serait divisé par 8. C’est beaucoup. Mais il y a plus.

Avant que les données puissent être écrites, un système de fichiers (ou une base de données) doit d’abord les trouver. Le processus de recherche peut être plus ou moins efficace selon le système de fichiers et la quantité de cache disponible, entre autres facteurs. Quoi qu’il en soit, chaque accès en écriture s’accompagne généralement de son lot d’accès en lecture correspondants. Sur une mémoire flash NOR, les accès en lecture sont très rapides. Ils se caractérisent par une latence proche de zéro et un débit très élevé. Plus important encore, les accès en lecture sont effectués au niveau de l’octet. Cela est particulièrement bénéfique pour le processus de recherche de données, car les structures internes des systèmes de fichiers ont tendance à être constituées de petits morceaux de données épars.

En revanche, les accès en lecture aléatoire sur les flashes NAND sont nettement plus lents. Et tout comme les accès en écriture, ils sont effectués au niveau de la page. Pour les petits accès, cela entraîne un certain gaspillage car une page entière doit de toute façon être chargée. Ce surcoût supplémentaire, appelé amplification de lecture, limite les performances d’écriture sur NAND, ce qui n’est pas immédiatement évident lorsqu’on regarde le tableau 1.

En mettant tout cela ensemble, nous voyons que les performances d’écriture nettes respectives (c’est-à-dire en tenant compte de l’amplification de lecture/écriture et du surcoût de consultation) des technologies NOR et NAND ne sont pas aussi différentes que les chiffres de performance brute semblent d’abord l’indiquer. Plus important encore, cela montre clairement qu’une évaluation approfondie des performances ne peut pas être faite sans tenir compte des modèles d’accès des applications, y compris la taille et la distribution des accès sur l’ensemble des données.

L’herbe est verte, le ciel est bleu, NOR est pour le code, NAND est pour les données

Il y a une idée fausse tenace que nous entendons de temps en temps à l’effet que la flash NOR est pour le code tandis que la flash NAND est pour les données. Il est vrai que la flash NOR est plus couramment utilisée que la flash NAND pour le stockage de code. Il y a deux raisons principales à cela. Premièrement, la granularité d’accès au niveau de l’octet permet l’exécution du code sur place, ce qui est un atout indiscutable pour les petits systèmes embarqués. Deuxièmement, pour les firmwares de taille petite à moyenne (disons inférieurs à 64Mbits), NOR est tout simplement plus judicieux sur le plan économique, car les plus petits dispositifs NAND disponibles sont nettement plus chers.

Cela dit, beaucoup de nos clients utilisent la flash NOR pour le stockage des données. Et ce, pour de bonnes raisons. Dans le cas d’applications à lecture intensive, la NOR offre un débit nettement supérieur à celui de la NAND. Même pour les applications à forte charge de travail en écriture, NOR peut être un choix raisonnable. Avec un accès au niveau de l’octet et un débit de lecture élevé, NOR est particulièrement bien adapté aux charges de travail dominées par de petits accès en écriture aléatoires. Jusqu’à un point où les performances d’écriture nettes peuvent approcher (parfois même dépasser) celles obtenues sur les flashes NAND. Ceci est particulièrement pertinent pour les petits ensembles de données, où l’argument économique s’additionne pour faire définitivement pencher la balance en faveur de la flash NOR.

Vous en voulez plus?

Ce que nous avons abordé dans cet article est à peine la partie émergée de l’iceberg. Nous espérons toutefois avoir montré comment les technologies flash NOR et NAND diffèrent du point de vue de la conception d’une application et comment les chiffres de performance bruts peuvent être interprétés pour prendre de meilleures décisions de conception.

Si vous souhaitez en savoir plus sur les technologies flash NOR et NAND, l’évaluation des performances et d’autres sujets avancés liés au stockage, le manuel de l’utilisateur de TREEspan contient une mine d’informations, à la fois générales et spécifiques au système de fichiers TREEspan (TSFS).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.