• Aucun résultat trouvé

Problématique : le mur des temps de latence

Malgré des caractéristiques techniques et des performances décrites par les constructeurs comme quasiment équivalentes, la Flash NAND et la Flash NOR montrent des résultats bien diérents lorsqu'elles sont accédées dans des conditions réelles. Nous allons voir ici que l'écart est surtout important lorsqu'il s'agit d'utiliser la NAND pour des lectures aléatoires comme dans le cas qui nous occupe.

Il est communément acquis que l'exécution de code implique beaucoup plus de lectures aléatoires au sein du chier binaire exécutable que d'accès séquentiels comme lorsqu'il s'agit de lire un chier de données : texte, image, son ou vidéo. La NOR est réputée très ecace pour la lecture aléatoire de données, de part son interface orientée octet. La NAND est de son côté réputée ecace pour les lectures séquentielles car son mode d'accès par page se prête extrêmement bien aux lectures groupées. L'écart qui existe entre ces deux mémoires se mesure de la manière suivante :

• À une fréquence de 20 MHz, une Flash NOR lit une donnée par cycles de 50 ns. Elle aura donc une bande passante maximale théorique de 19,07 Mo/s (ou débit crête). Ce débit est identique pour des lectures aléatoires et pour des lectures séquentielles (tableau 3.1, page 28).

• À la même fréquence (tableau 3.2, page 28), une Flash NAND charge d'abord une page de 2048 octets et 64 octets de données de contrôle dans son registre de transfert en 25µs. Suite à cela, un octet est lisible séquentiellement toutes les 50 ns, ce qui donne un total de 130.9µs pour lire une page complète. La bande passante maximale théorique de la NAND est donc de 0,0073 Mo/s pour des lectures aléatoires et 14,92 Mo/s pour des lectures séquentielles.

En réalité les chires bruts des étapes de chargement et de récupération ne sont pas les seuls à prendre en compte. Ils excluent en eet le temps d'exécution du contrôleur de la NAND qui est responsable, d'abord de traiter les commandes matérielles qu'il reçoit du pilote et enn de calculer et vérier les codes de contrôle d'erreurs. Le tout est imbriqué enn dans le temps d'exécution du pilote, logiciel, qui lui est aussi un temps incompressible. Dans ce cadre étendu, le temps de chargement d'une page que nous avons constaté sur du matériel existant repousse le temps total, hors pilote, à 145,6µs dans le meilleur des cas - abstraction faite des dérives d'horloge constatées - et 198.4µs dans le pire des cas. Les bandes passantes respectives sont reportées dans le tableau 3.3 ( page 28), lignes une et deux.

Récupération Lectures aléatoires Lectures Séquentielles

50 ns 19,07 Mo/s 19,07 Mo/s

Tableau 3.1: Débit d'une NOR, cadencée à 20 MHz, sur la base de données constructeurs Taille Charge- Récupéra- Page Lectures Lectures

de page ment tion complète Aléatoires Séquentielles 2048 + 64 25 µs 50 ns 130,9 µs 0,0073 Mo/s 14,92 Mo/s Tableau 3.2: Latence et débit crète d'une NAND typique, cadencée à 20 MHz, sur la base

de données constructeurs

Charge- Récupé- Page Lectures Lectures ment ration complète Aléatoires Séquentielles Meilleur 25 µs 50 ns 145,6 µs 0,0065 Mo/s 13,41 Mo/s Plus mauvais 25 µs 75 ns 198,4 µs 0,0048 Mo/s 10,04 Mo/s Tableau 3.3: Latence et débit crète d'une NAND cadencée à 20 MHz, à partir de mesures

obtenues dans des conditions réelles, et incluant le contrôleur. Lectures Lectures

aléatoires séquentielles

Meilleur 2933 1,46

Plus mauvais 3972 1,89

Tableau 3.4: NAND cadencée à 20 MHz : facteur de ralentissement par rapport à la NOR Pour aller encore plus loin dans l'observation de l'écart réel qui existe entre une mémoire adressable et une mémoire non-adressable, le tableau 3.4 donne le facteur de ralentissement calculé à partir des bandes passantes présentées dans les tableaux précédents. Le constat est sans appel car dans le meilleur des cas en environnement réel, une mémoire non-adressable comme la ash NAND est 2933 fois plus lente qu'une mémoire adressable, dans l'exercice des lectures aléatoires.

3.2.2 Insusance de l'approche par tampon

L'exécution en place, dans sa stricte dénition, n'est pas vraiment adaptée à une mémoire paginée comme la Flash NAND. Par contre, cette NAND étant accédée à travers une FTL comme cela a été présenté dans notre état de l'art, la lecture d'instructions peut se faire en

1 2 3 4 0

0.2 0.4

Nombre de tampons de 2048 octets

Mo/s

Figure 3.1: Exécution en place sur une puce à 20 MHz, avec des tampons de 2048 octets. utilisant le tampon de cette FTL ou un tampon dédié.

Indépendamment de savoir comment et quel tampon utiliser, la gure 3.1 présente quelques résultats sur un petit programme de test de quelques centaines de milliers d'instruc- tions seulement. Celui-ci est stocké en Flash NAND.

Dans ce test, ce programme est exécuté en place en utilisant de 1 à 4 tampons, de tailles égales à une page de Flash NAND et stockés en mémoire vive. On remarque d'emblée que bien qu'en sacriant déjà 8Ko de mémoire vive, le débit arrive péniblement à 0,42 Mo/s. Soit encore plus de 47 fois plus lent que la NOR. Sans compter le coût de gestion : des données, de leur mode de stockage ou de leur accès eectif et répété à l'intérieur de cet espace temporaire.

Dans ces conditions, comment faire alors pour lutter contre ces temps de latence et faire en sorte que le coût de récupération d'une instruction stockée dans une mémoire non- adressable et paginée ne soit plus prohibitif par rapport à son exécution pure ?