La mémoire flash de type NAND tient son nom de la porte logique utilisée pour son fonctionnement : une porte NAND.
Au niveau de la structure interne, elle fonctionne à partir de transistor à grille flottante. Chaque grille flottante est une "cellule" (cell en anglais).
Le transistor utilise 2 grilles : une grille de contrôle qui est lue, et une grille flottant placée dans un oxyde.
Cette oxyde est placé entre la grille de contrôle et un substrat.
Le nombre d'électrons présent sur la grille flottante modifient la résistance de la grille de contrôle. En faisant passer un courant électrique, en fonction de la réponse en sortie, on peut obtenir les 1 et les 0 nécessaires à une lecture binaire.
La technique utilisée pour l'écriture des cellules se base sur l'effet tunnel (plus précisément l'effet Fowler-Nordheim).
En simplifiant, en faisant passer un courant électrique de tensions élevées dans la grille de contrôle, on peut déplacer les électrons pour les piéger dan la grille flottante.
Pour effacer la cellule, on fait passer le courant électrique dans le substrat, ce qui déplace les électrons de la grille de contrôle vers ce dernier.
Un transistor à grille flottante (source Wikipedia) :
Transistor
L'interface d'accès aux données utilise une structure basé sur des portes NAND (d'où le nom). L'accès est séquentiel et les bus d'adresses, de commandes et de données sont multiplexés, ce qui permet de garder la même interface avec la majorité des puces et simplifier l'interface externe.
La NAND n'offre pas un accès direct au données, elle est organisée en secteur et en bloc, comme un disque dur.
Dans un système classique (une mémoire de 2Go par exemple) on va travailler avec des blocs de 128Ko. Le bloc est divisé en 64 pages de 2Ko.
En réalité, une "page" fait plus que 2Ko : on a 2048 octets accessibles, et 64 octets qui servent de contrôle (gestion ECC, WearLeveling, etc.).
Pour ce qui est de l'accès, on travaille en "shadowing" : le système accède en fait à une mémoire RAM qui contient les données demandées. On n'accède jamais directement aux données. Le contrôleur s'occupe de gérer la copie de la page dans la mémoire en question et la gestion réelle des blocs.
La lecture s'effectue donc par page, alors que l'effacement se fait au niveau du bloc.
Parlons un peu performances : du fait de son mode de fonctionnement (séquentiel), l'accès aux données n'est pas instantané. Il faut compter environ 25µs pour un accès à une page (temps de copie dans la RAM interne). L'accès aux autres pages du bloc est plus rapide (environ 0,03µs).
L'effacement d'un bloc prend environ 2ms.
En comparaison, sur des mémoires de type NOR, la lecture aléatoire d'une donnée est de 12µs (quelle que soit l'emplacement de celle-ci) et l'effacement d'un bloc est très lent : 750ms.
Il existe deux type de mémoire : la NAND SLC (Single Level Cell) qui stocke 1 bit par cellule et la mémoire NAND MLC qui stocke 2 bits (ou plus) par cellule.
La mémoire SLC est plus rapide et plus endurantes, mais coûte plus cher. Les SSD utilisent en général des mémoires de type SLC.