Brevet FR3136100A1 — publié le 20231201

Emulation de mémoire de données dans une mémoire Flash La présente description concerne un procédé d'écriture dans une mémoire Flash, le procédé comprenant la mise en œuvre, par un contrôleur de la mémoire Flash : - d'une ou de plusieurs premières étapes d'écriture pour écrire un premier paquet de données (EE PACKET 1) dans une première partie (D0, D1, D2) d'une première ligne (300) de la mémoire Flash ; et - d'une ou de plusieurs deuxièmes étapes d'écriture, après les une ou plusieurs premières étapes d'écriture, pour écrire un deuxième paquet de données (EE PACKET 2) dans une deuxième partie (D3, D4, D5) de la première ligne (300) de la mémoire Flash de sorte que la première ligne contienne les premier et deuxième paquets de données. Figure pour l'abrégé : Fig. 3 Emulation de mémoire de données dans une mémoire Flash La présente description concerne de façon générale le domaine des mémoires Flash. Une mémoire non volatile programmable, telle qu'une mémoire morte programmable effaçable électriquement (EEPROM), permet de stocker certaines données, telles que des paramètres de configuration, dans des dispositifs électroniques même lorsque les dispositifs électroniques ne sont pas alimentés. Toutefois, en raison de la technologie utilisée pour mettre en œuvre une EEPROM, elle ne peut généralement pas être intégrée sur une puce. Des mises en œuvre externes (hors de la puce) d'une EEPROM conduisent à une surface utile, une consommation et un coût accrus. Une mémoire Flash peut être mise en œuvre sur une puce. Toutefois, une mémoire Flash a des contraintes d'accès particulières. Par exemple, au contraire d'une EEEPROM, il n'est pas possible de remplacer des valeurs de données individuelles dans une mémoire Flash. Par conséquent, il y a des problèmes techniques à utiliser une mémoire Flash sur puce pour mettre en œuvre un stockage mémoire similaire à celui offert par une EEPROM ou d'autres types de mémoires de données. Il existe un besoin dans l'état de la technique pour un procédé et un dispositif destinés à émuler une EEPROM à l'aide d'une mémoire Flash qui pallie tout ou partie des problèmes connus. Selon un aspect, on prévoit un procédé d'écriture dans une mémoire Flash, le procédé comprenant la mise en œuvre, par un contrôleur de la mémoire Flash : d'une ou de plusieurs premières étapes d'écriture pour écrire un premier paquet de données dans une première partie d'une première ligne de la mémoire Flash ; et d'une ou de plusieurs deuxièmes étapes d'écriture, après les une ou plusieurs premières étapes d'écriture, pour écrire un deuxième paquet de données dans une deuxième partie de la première ligne de la mémoire Flash de sorte que la première ligne contienne les premier et deuxième paquets de données. Selon un autre aspect, on prévoit une mémoire Flash comprenant un contrôleur configuré pour mettre en œuvre : une ou plusieurs premières étapes d'écriture pour écrire un premier paquet de données dans une première partie d'une première ligne de la mémoire Flash ; et une ou plusieurs deuxièmes étapes d'écriture, après les une ou plusieurs premières étapes d'écriture, comprenant l'écriture d'un deuxième paquet de données dans une deuxième partie de la première ligne de la mémoire Flash de sorte que la première ligne contienne les premier et deuxième paquets de données. Selon un mode de réalisation, les une ou plusieurs premières étapes d'écriture comprennent en outre l'écriture d'un premier code de correction d'erreur, associé au premier paquet de données, dans une troisième partie de la première ligne ; et les une ou plusieurs deuxièmes étapes d'écriture comprennent en outre l'écriture d'un deuxième code de correction d'erreur, associé au deuxième paquet de données, dans une quatrième partie de la première ligne. Selon un mode de réalisation, le premier paquet de données comprend une première valeur de données et une première adresse virtuelle associée à la première valeur de données, et le deuxième paquet de données comprend une deuxième valeur de données et une deuxième adresse virtuelle associée à la deuxième valeur de données, la deuxième adresse virtuelle étant différente de, ou identique à, la première adresse virtuelle. Selon un mode de réalisation, les première et deuxième adresses virtuelles sont la même adresse. Selon un mode de réalisation, le premier paquet de données comprend en outre un premier code de vérification d'intégrité du paquet et le deuxième paquet de données comprend en outre un deuxième code de vérification d'intégrité du paquet. Selon un mode de réalisation, le procédé comprend en outre une ou plusieurs troisièmes étapes d'écriture, avant ou après les une ou plusieurs premières étapes d'écriture, comprenant l'écriture d'une valeur de code dans une première partie d'une deuxième ligne de la mémoire Flash et l'écriture d'un troisième code de correction d'erreur dans une deuxième partie de la deuxième ligne, une longueur de bit de la valeur de code étant égale ou supérieure à une longueur de bit combinée des premier et deuxième paquets de données. Selon un mode de réalisation, le contrôleur est en outre configuré pour mettre en œuvre une ou plusieurs troisièmes étapes d'écriture, avant ou après les une ou plusieurs premières étapes d'écriture, comprenant l'écriture d'une valeur de code dans une première partie d'une deuxième ligne de la mémoire Flash et d'écriture d'un troisième code de correction d'erreur dans une deuxième partie de la deuxième ligne, dans lequel une longueur de bit de la valeur de code est égale ou supérieure à une longueur de bit combinée des premier et deuxième valeurs de données. Selon un mode de réalisation, la première ligne fait partie d'une zone de stockage de données de la mémoire Flash, et la deuxième ligne fait partie d'une zone de stockage de code de la mémoire Flash, la mémoire Flash comprenant en outre au moins un registre non volatil stockant une indication des lignes de la mémoire Flash faisant partie de la zone de stockage de données et des lignes de la mémoire Flash faisant partie de la zone de stockage de code. Selon un mode de réalisation, la première ligne est associée à la fois à une première adresse de stockage de données et à une première adresse de stockage de code différente de la première adresse de stockage de données ; et les une ou plusieurs premières et deuxièmes étapes d'écriture comprennent la réception, par le contrôleur, de la première adresse de stockage de données et la mise en correspondance, par le contrôleur, de la première adresse de stockage de données avec une adresse physique de la première ligne de la mémoire Flash. Selon un mode de réalisation, le procédé comprend en outre, avant la première étape d'écriture : la réception, par le contrôleur de la mémoire Flash, d'une ou de plusieurs premières commandes d'écriture associées aux une ou plusieurs premières étapes d'écriture, les une ou plusieurs premières commandes d'écriture comprenant le premier paquet de données et la première adresse de stockage ; et la vérification, sur la base d'un ou de plusieurs paramètres stockés par l'au moins un registre non volatil, que la première ligne de la mémoire Flash est configurée pour faire partie de la zone de stockage de données. Selon encore un autre aspect, on prévoit un procédé comprenant : l'écriture de premiers et deuxièmes paquets de données dans une mémoire Flash selon le procédé précédent ; et la lecture d'une valeur de données courante associée à la première valeur virtuelle à partir de la mémoire Flash en : identifiant dans la mémoire Flash un paquet de données stocké le plus récemment comprenant la première adresse virtuelle ; transférant à un tampon de lecture une valeur de données du paquet de données identifié ; et fournissant en sortie la valeur de données du paquet de données identifié en tant que valeur de données courante. Selon un mode de réalisation, le contrôleur est en outre configuré pour : identifier dans la mémoire Flash un paquet de données stocké le plus récemment comprenant la première adresse virtuelle ; transférer à un tampon de lecture une valeur de données du paquet de données identifié ; et fournir en sortie la valeur de données du paquet de données identifié en tant que valeur de données courante. Selon un mode de réalisation, la fourniture en sortie de la valeur de données du paquet de données identifié en tant que valeur de données courante est effectuée après une vérification d'un code de correction d'erreur associé à la valeur de données du paquet de données identifié. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente schématiquement un dispositif électronique comprenant une mémoire Flash configurée pour être utilisée pour émuler une mémoire de données selon un exemple de mode de réalisation de la présente description ; la représente une ligne d'une mémoire Flash stockant un paquet EEPROM selon une approche non optimale ; la représente une ligne d'une mémoire Flash stockant des paquets EEPROM selon un exemple de mode de réalisation de la présente description ; la représente schématiquement la mémoire Flash de la plus en détail selon un exemple de mode de réalisation de la présente description ; la représente schématiquement des registres et un stockage de mémoire Flash de la plus en détail selon un exemple de mode de réalisation de la présente description ; la est un organigramme représentant des étapes d'un procédé d'écriture dans une mémoire Flash selon un exemple de mode de réalisation de la présente description ; et la est un organigramme représentant des étapes d'un procédé de lecture à partir d'une mémoire Flash selon un exemple de mode de réalisation de la présente description. Procédé d'écriture dans une mémoire Flash, le procédé comprenant la mise en œuvre, par un contrôleur (406) de la mémoire Flash : - d'une ou de plusieurs premières étapes d'écriture pour écrire un premier paquet de données (EE PACKET 1) dans une première partie (D0, D1, D2) d'une première ligne (300) de la mémoire Flash ; et - d'une ou de plusieurs deuxièmes étapes d'écriture, après les une ou plusieurs premières étapes d'écriture, pour écrire un deuxième paquet de données (EE PACKET 2) dans une deuxième partie (D3, D4, D5) de la première ligne (300) de la mémoire Flash de sorte que la première ligne contienne les premier et deuxième paquets de données. Mémoire Flash comprenant un contrôleur (406) configuré pour mettre en œuvre : - une ou plusieurs premières étapes d'écriture pour écrire un premier paquet de données (EE PACKET 1) dans une première partie (D0, D1, D2) d'une première ligne (300) de la mémoire Flash ; et - une ou plusieurs deuxièmes étapes d'écriture, après les une ou plusieurs premières étapes d'écriture, comprenant l'écriture d'un deuxième paquet de données (EE PACKET 2) dans une deuxième partie (D3, D4, D5) de la première ligne (300) de la mémoire Flash de sorte que la première ligne contienne les premier et deuxième paquets de données. Procédé selon la revendication 1, dans lequel les une ou plusieurs premières étapes d'écriture comprennent en outre l'écriture d'un premier code de correction d'erreur, associé au premier paquet de données (EE PACKET 1), dans une troisième partie (ECC0, ECC1, ECC2) de la première ligne ; et dans lequel les une ou plusieurs deuxièmes étapes d'écriture comprennent en outre l'écriture d'un deuxième code de correction d'erreur, associé au deuxième paquet de données (EE PACKET 2), dans une quatrième partie (ECC3, ECC4, ECC5) de la première ligne. Procédé selon la revendication 1 ou 3, dans lequel le premier paquet de données (EE PACKET 1) comprend une première valeur de données et une première adresse virtuelle associée à la première valeur de données, et le deuxième paquet de données (EE PACKET 2) comprend une deuxième valeur de données et une deuxième adresse virtuelle associée à la deuxième valeur de données, la deuxième adresse virtuelle étant différente de, ou identique à, la première adresse virtuelle. Procédé selon la revendication 4, dans lequel les première et deuxième adresses virtuelles sont la même adresse. Procédé selon la revendication 4 ou 5, dans lequel le premier paquet de données (EE PACKET 1) comprend en outre un premier code de vérification d'intégrité du paquet et le deuxième paquet (EE PACKET 2) comprend en outre un deuxième code de vérification d'intégrité du paquet. Procédé selon la revendication 1 ou 3 à 6, comprenant en outre une ou plusieurs troisièmes étapes d'écriture, avant ou après les une ou plusieurs premières étapes d'écriture, comprenant l'écriture d'une valeur de code dans une première partie d'une deuxième ligne de la mémoire Flash et l'écriture d'un troisième code de correction d'erreur dans une deuxième partie de la deuxième ligne, dans lequel une longueur de bit de la valeur de code est égale ou supérieure à une longueur de bit combinée des premier et deuxième paquets de données. Mémoire Flash selon la revendication 2, dans lequel le contrôleur (406) est en outre configuré pour mettre en œuvre une ou plusieurs troisièmes étapes d'écriture, avant ou après les une ou plusieurs premières étapes d'écriture, comprenant l'écriture d'une valeur de code dans une première partie d'une deuxième ligne de la mémoire Flash et l'écriture d'un troisième code de correction d'erreur dans une deuxième partie de la deuxième ligne, dans lequel une longueur de bit de la valeur de code est égale ou supérieure à une longueur de bit combinée des premier et deuxième paquets de données. Procédé selon la revendication 1 ou 3 à 7, dans lequel la première ligne fait partie d'une zone de stockage de données (404) de la mémoire Flash, et la deuxième ligne fait partie d'une zone de stockage de code (402) de la mémoire Flash, la mémoire Flash comprenant en outre au moins un registre non volatil (412) stockant une indication des lignes de la mémoire Flash faisant partie de la zone de stockage de données (404) et des lignes de la mémoire Flash faisant partie de la zone de stockage de code (402). Procédé selon la revendication 9, dans lequel : - la première ligne est associée à la fois à une première adresse de stockage de données et à une première adresse de stockage de code différente de la première adresse de stockage de données ; et - les une ou plusieurs premières et deuxièmes étapes d'écriture comprennent la réception, par le contrôleur (406), de la première adresse de stockage de données et la mise en correspondance, par le contrôleur, de la première adresse de stockage de données avec une adresse physique de la première ligne de la mémoire Flash. Procédé selon la revendication 10, comprenant en outre, avant la première étape d'écriture : - la réception, par le contrôleur (406) de la mémoire Flash, d'une ou de plusieurs premières commandes d'écriture associées aux une ou plusieurs premières étapes d'écriture, les une ou plusieurs premières commandes d'écriture comprenant le premier paquet de données et la première adresse de stockage ; et - la vérification, sur la base d'un ou de plusieurs paramètres stockés par l'au moins un registre non volatil (412), que la première ligne de la mémoire Flash est configurée pour faire partie de la zone de stockage de données. Procédé comprenant : l'écriture de premiers et deuxièmes paquets de données dans une mémoire Flash selon le procédé selon l'une quelconque des revendication 4 à 6 ; et la lecture d'une valeur de données courante associée à la première valeur virtuelle à partir de la mémoire Flash en : - identifiant dans la mémoire Flash un paquet de données stocké le plus récemment comprenant la première adresse virtuelle ; - transférant à un tampon de lecture (410) une valeur de données du paquet de données identifié ; et - fournissant en sortie la valeur de données du paquet de données identifié en tant que valeur de données courante. Mémoire Flash selon la revendication 2, dans lequel le premier paquet de données (EE PACKET 1) comprend une première valeur de données et une première adresse virtuelle associée à la première valeur de données, et le deuxième paquet de données (EE PACKET 2) comprend une deuxième valeur de données et une deuxième adresse virtuelle associée à la deuxième valeur de données, la deuxième adresse virtuelle étant différente de, ou identique à, la première adresse virtuelle, et dans lequel le contrôleur (406) est en outre configuré pour : - identifier dans la mémoire Flash un paquet de données stocké le plus récemment comprenant la première adresse virtuelle ; - transférer à un tampon de lecture (410) une valeur de données du paquet de données identifié ; et - fournir en sortie la valeur de données du paquet de données identifié en tant que valeur de données courante. Procédé selon la revendication 12, dans lequel la fourniture en sortie de la valeur de données du paquet de données identifié en tant que valeur de données courante est effectuée après une vérification d'un code de correction d'erreur associé à la valeur de données du paquet de données identifié.