FR3065303B1 - Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant - Google Patents

Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant Download PDF

Info

Publication number
FR3065303B1
FR3065303B1 FR1753213A FR1753213A FR3065303B1 FR 3065303 B1 FR3065303 B1 FR 3065303B1 FR 1753213 A FR1753213 A FR 1753213A FR 1753213 A FR1753213 A FR 1753213A FR 3065303 B1 FR3065303 B1 FR 3065303B1
Authority
FR
France
Prior art keywords
new
byte
bytes
memory
memory word
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
FR1753213A
Other languages
English (en)
Other versions
FR3065303A1 (fr
Inventor
Francois Tailliet
Marc Battista
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
Original Assignee
STMicroelectronics Rousset SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1753213A priority Critical patent/FR3065303B1/fr
Priority to US15/900,481 priority patent/US10732894B2/en
Priority to CN201810230965.8A priority patent/CN108694982A/zh
Publication of FR3065303A1 publication Critical patent/FR3065303A1/fr
Application granted granted Critical
Publication of FR3065303B1 publication Critical patent/FR3065303B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/20Initialising; Data preset; Chip identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/344Arrangements for verifying correct erasure or for detecting overerased cells
    • G11C16/3445Circuits or methods to verify correct erasure of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Le procédé d'écriture dans une mémoire du type EEPROM comprend, en présence d'une suite de nouveaux octets (SND) à écrire dans le plan-mémoire (PM) dans au moins un mot-mémoire de destination (Wd) contenant déjà des anciens octets (OD), une vérification (411, 423) pour chaque mot-mémoire de destination (Wd) si les anciens octets (OD) de ce mot-mémoire de destination (Wd) doivent tous ou non être remplacés par de nouveaux octets (ND), le procédé comprenant une lecture des anciens octets (OD) de ce mot-mémoire de destination (Wd) seulement si les anciens octets (OD) ne doivent pas tous être remplacés par de nouveaux octets (ND).

Description

Procédé d’écriture dans un dispositif de mémoire non volatile et dispositif de mémoire non volatile correspondant
Des modes de réalisation et de mise en œuvre concernent les circuits intégrés, en particulier les mémoires non-volatiles utilisant un code correcteur d’erreur.
Les mémoires non-volatiles utilisant un code correcteur d’erreur ECC (pour « error correction code » en anglais) peuvent être par exemple des mémoires flash-NOR, flash-NAND, ou EEPROM (électriquement effaçable et programmable).
Une mémoire non-volatile comporte habituellement un plan-mémoire, arrangé matriciellement en rangées et en colonnes. Des cellules-mémoires (ou emplacements-mémoire) sont regroupées en mots-mémoires et sont capables de stocker de façon non-volatile une donnée numérique (autrement appelée un bit) par rétention de charges dans la grille flottante d’un transistor à grille flottante.
Des injections et des extractions de charges dans les grilles flottantes par effet Fowler-Nordheim permettent d’effacer et de programmer électriquement les cellules-mémoire.
Dans les mémoires EEPROM, les mots-mémoire comportent fréquemment un octet. Dans des approches utilisant des codes correcteurs d'erreur, par exemple pour des mémoires EEPROM de haute densité, les mots-mémoire peuvent comporter plusieurs octets, typiquement quatre, et une série de bits de parité. Des codes correcteurs d’erreur tels qu’un code de Hamming permettent de calculer les bits de parité et de corriger une éventuelle erreur parmi les octets ou les bits de parité d’un mot-mémoire. L’écriture d’une donnée numérique dans une telle cellule-mémoire comporte généralement une étape d’effacement suivie d’une étape de programmation de toutes les cellules-mémoire d’un même mot-mémoire, ou parfois uniquement une étape d’effacement ou de programmation, en fonction des données à écrire.
Les mémoires de type EEPROM ont par conséquent une granularité interne de la taille d’un mot-mémoire, mais acceptent généralement des commandes dont la granularité est d’un seul octet, afin de satisfaire à des besoins d’utilisation. Le terme de granularité désigne la plus petite unité matériellement accessible de données numériques sauvegardées.
Par conséquent, lors d’une commande d’écriture d’une taille inférieure à la granularité interne de la mémoire, il est nécessaire de recomposer les données à écrire avec les anciennes données stockées dans le plan-mémoire pour correspondre à la granularité interne avant de mettre en œuvre un cycle d’écriture d’au moins un mot-mémoire entier. Cette recomposition comprend une prise en compte des nouvelles données à écrire et des anciennes données du mot-mémoire correspondant stockées dans le plan-mémoire, et nécessite une opération de lecture.
De manière générale, une mémoire de type EEPROM peut, en un seul cycle d’écriture, écrire au maximum une page entière comportant un nombre d’octets dépendant de la taille de la mémoire. Par exemple, dans une mémoire 16Kbits, une page fait 16 octets et il est possible d’écrire de 1 à 16 octets en un cycle, et, dans une mémoire 4Mbits, une page fait 512 octets et il est possible d’écrire de 1 à 512 octets en un cycle.
La figure 1 représente des étapes mises en œuvre lors d’une écriture habituelle d’une mémoire de type EEPROM.
Une étape préliminaire 99 correspond à des initialisations de variables internes (i :=0, Rdmem :=0) et à une réinitialisation de tous les verrous de grille de commande CGL. L’étape 101 correspond à un début de réception d’une commande d’écriture et comporte une réception d’un premier octet NDi (i = 0) à écrire.
Pendant la réception de l’octet NDi (c’est-à-dire pendant une durée de huit coups d’horloge), une étape de recomposition de données 200 est mise en œuvre systématiquement. Cette étape 200 correspond à une lecture des anciennes données stockées dans le plan-mémoire, leur correction éventuelle, et leur chargement dans un registre intermédiaire ECCRG.
Plus précisément, et comme représenté par la figure 2, l’étape de recomposition des données 200 comporte une lecture 201 du mot-mémoire dans lequel les nouvelles données NDi sont destinées à être écrites. Cette lecture 201 se fait à partir du plan mémoire si le verrou de grille de commande CGL correspondant est réinitialisé, sinon à partir de verrous de ligne de bits BLL si le verrou de grille de commande CGL correspondant est initialisé (voir étape 105). (Les « réinitialisation » et « initialisation » sont habituellement désignées par les termes anglais respectifs « reset » et « set », correspondant ici à des codes logiques, par exemples respectivement « 0 » et « 1 »). Les données lues sont chargées dans le registre ECCRG.
Une correction 202 d’une éventuelle erreur est mise en œuvre grâce à un mécanisme du type code de Hamming. Les données OD ainsi lues et éventuellement corrigées sont ensuite chargées 203 dans le registre intermédiaire ECCRG.
Ce registre intermédiaire ECCRG sert d'étage de stockage de sortie pour la logique de correction d'erreur, et d'entrée pour les verrous de ligne de bits. L’architecture du registre intermédiaire ECCRG est analogue à une architecture de mot-mémoire, c’est-à-dire qu’elle comporte par exemple 4 octets destinés à recevoir des données et une série de bits de parité.
Après la réception complète de l’octet NDi (c’est-à-dire après les huit coups d’horloge), à l’étape suivante 102, le nouvel octet NDi est chargé dans le registre intermédiaire ECCRG, en écrasant un des quatre octets OD du registre ECCRG.
Un calcul des nouveaux bits de parité NP correspondant à la combinaison des anciennes données OD et du nouvel octet NDi est alors mis en œuvre à une étape 103. L’étape suivante 104, consiste à charger les verrous de lignes de bits BLL avec les données chargées dans le registre intermédiaire ECCRG. L’étape 104 est suivie d’une étape 105 d’initialisation de verrou de grille de commande CGL, représentatif d’un état chargé ou non des verrous de ligne de bits BLL du mot-mémoire correspondant. Lorsque que le verrou de grille de commande d’un mot-mémoire est initialisé, la prochaine lecture de ce mot-mémoire est faite dans les verrous de ligne de bits et non dans le plan-mémoire.
Ces étapes 104, 105 font partie d’une phase préliminaire d’un cycle d’écriture 110 au cours duquel des impulsions haute tension sont appliquées dans les cellules-mémoire afin de les effacer et/ou de les programmer suivant les données contenues dans les verrous de lignes de bits.
Un test de fin de réception 106 est réalisé et tant que le dernier octet n’a pas été reçu et chargé dans les verrous de lignes de bits correspondants, les étapes 101 à 106 et 200 sont répétées avec les octets consécutifs suivants (107, 108).
Lorsque tous les octets à écrire ont été reçus, traités et chargés dans les verrous de ligne de bits, alors le cycle d’écriture dans le plan mémoire 110 est mis en œuvre lors d’une phase commune pour toutes les données chargées dans les verrous de lignes de bits.
Ce type de mise en œuvre classique présente l’inconvénient majeur d’être très coûteux en ressources énergétiques.
En effet, ce type de mise en œuvre comporte une opération de lecture inconditionnelle pour chaque octet à écrire. Cela introduit une consommation d’énergie non-négligeable.
En effet, une majorité de la consommation énergétique provient des opérations de lecture, écoulant chacune un courant de l’ordre de 1,5 mA pendant une durée typique de 2 cycles d'horloge (soit 5ps à 400kHz).
Par conséquent, pour une écriture de 256 octets, 256 opérations de lecture, 256 corrections d'erreur et 256 calculs de bits de parité sont mis en œuvre. Ceci correspond à une consommation d’un courant de l’ordre de 1.5mA pendant une durée cumulée de 1.3ms.
Cette dépense énergétique est du même ordre de grandeur que l'énergie dépensée pendant le cycle d’écriture dans le plan-mémoire.
Il est par conséquent souhaitable de limiter cette consommation de courant. A cet égard, il est proposé un procédé d’écriture selon une première granularité dans un plan-mémoire d’une mémoire non-volatile, le plan-mémoire étant arrangé en mots-mémoire destinés à stocker chacun plus d’un octet de données et la mémoire étant configurée pour accéder au plan-mémoire selon une deuxième granularité supérieure à la première granularité, le procédé d’écriture comprenant, en présence d’une suite de nouveaux octets à écrire dans le plan-mémoire dans au moins un mot-mémoire de destination contenant déjà des anciens octets, - une vérification pour chaque mot-mémoire de destination si les anciens octets de ce mot-mémoire de destination doivent tous ou non être remplacés par de nouveaux octets, et - si au moins un ancien octet ne doit pas être remplacé par un nouvel octet, une opération de lecture de chaque ancien octet ne devant pas être remplacé et un chargement, dans un registre intermédiaire, des nouveaux octets et dudit au moins un ancien octet, formant un nouveau contenu dudit mot-mémoire de destination, tandis que - si les anciens octets de ce mot-mémoire de destination doivent tous être remplacés par de nouveaux octets, un chargement dans un registre intermédiaire desdits nouveaux octets, formant le nouveau contenu dudit mot-mémoire de destination, sans opération de lecture préalable des anciens octets de ce mot-mémoire de destination, et - un cycle d’écriture dans le plan-mémoire du nouveau contenu de chaque mot-mémoire de destination.
Le terme de « première granularité » correspond ici à la plus petite unité de donnée qu’un utilisateur peut envoyer en écriture à la mémoire, autrement appelée « granularité utilisateur » ou « granularité client ». Le terme de « deuxième granularité » correspond ici à la plus petite unité de donnée que la mémoire non-volatile est capable, de par sa conception, d’écrire dans le plan-mémoire, autrement appelée « granularité physique » ou « granularité interne ».
Par exemple, la première granularité peut être d’un octet et la deuxième granularité peut être d’un mot-mémoire. Un mot-mémoire comporte par exemple quatre octets.
Ainsi, lors d’une opération d’écriture, il est possible que la mémoire ait à lire les anciennes donnée d’un mot-mémoire, afin de les réécrire, dans le cas où la suite de nouveaux octets à écrire ne correspond pas à au moins un mot-mémoire complet (autrement dit à la granularité physique de la mémoire).
Dans les opérations classiques, cette lecture des anciennes données est réalisée systématiquement, tandis que dans le procédé selon cet aspect, une opération de lecture des anciens octets n’est mise en œuvre lors d’une écriture de nouveaux octets seulement lorsqu’elle est nécessaire (à la réécriture de ces même anciens octets ou à un calcul de nouveaux bits de parité), c’est-à-dire lorsque les anciens octets du mot-mémoire de destination ne doivent pas tous être remplacés par de nouveaux octets.
La vérification peut avantageusement comporter une identification des emplacements respectifs du premier nouvel octet à écrire dans le mot-mémoire de destination correspondant et du dernier nouvel octet à écrire dans le mot-mémoire de destination correspondant, des emplacements respectivement identiques à celui affecté au premier octet du mot-mémoire de destination correspondant et à celui affecté au dernier octet du mot-mémoire de destination correspondant traduisant que les anciens octets de ce mot-mémoire de destination doivent tous être remplacés par de nouveaux octets.
Ce mode de mise en œuvre permet en effet de vérifier de façon simple et efficace si les anciens octets du ou des mot(s)-mémoire de destination doivent tous être remplacés par de nouveaux octets ou non.
Avantageusement, l’identification de l’emplacement du premier nouvel octet comprend un test logique entre les valeurs des deux derniers bits de poids faible de l’adresse de l’emplacement du premier nouvel octet et les valeurs 0-0, une égalité entre ces valeurs signifiant que l’emplacement de ce premier nouvel octet correspond à celui affecté au premier octet du mot-mémoire de destination correspondant, et l’identification de l’emplacement du dernier nouvel octet comprend un test logique entre les valeurs des deux derniers bits de poids faible de l’adresse de l’emplacement du dernier nouvel octet et les valeurs 1- 1, une égalité entre ces valeurs signifiant que l’emplacement de ce dernier nouvel octet correspond à celui affecté au dernier octet du mot-mémoire de destination correspondant.
Ce mode de mise en œuvre est adapté à une architecture de mots-mémoire comportant quatre octets de données, les valeurs des deux derniers bits de poids faible des adresses du premier et du dernier octet d’un mot-mémoire quelconque du plan mémoire étant toujours respectivement 0-0 et 1-1.
Selon un mode de mise en œuvre dans lequel une série de bits de parité est associée à chaque mot-mémoire du plan-mémoire, lesdits chargements dans le registre intermédiaire du nouveau contenu dudit mot-mémoire de destination comportent chacun un calcul respectif de nouveaux bits de parité associés à et à partir de ce nouveau contenu de chaque mot-mémoire de destination.
Avantageusement, les calculs de nouveaux bits de parités sont mis en œuvre à partir desdits nouveaux octets et, le cas échéant, desdits anciens octets, préalablement chargés dans le registre intermédiaire.
Avantageusement, l’opération de lecture dudit au moins un ancien octet comporte une correction d’une éventuelle erreur présente dans ledit au moins un ancien octet.
En effet, le procédé selon cet aspect permet d’économiser de l’énergie de lecture lorsque la granularité interne de la mémoire est supérieure à la granularité utilisateur, et en particulier en présence de mécanisme de code correcteur d’erreur.
Selon un mode de mise en œuvre, le cycle d’écriture comporte un chargement des octets chargés dans ledit registre intermédiaire, et le cas échéant, desdits nouveaux bits de parité, dans des verrous de ligne de bits correspondant, et une écriture dans le plan-mémoire des données chargées dans lesdits verrous de ligne de bits.
Selon un autre aspect, il est proposé un dispositif de mémoire non-volatile comportant une entrée pour recevoir des données à écrire selon une première granularité, un plan-mémoire arrangé en mots-mémoire destinés à stocker chacun plus d’un octet de données dans des emplacements-mémoire, le dispositif comportant un moyen de lecture et un moyen d’écriture configurés pour réaliser, selon une deuxième granularité supérieure à la première granularité, respectivement des opérations de lecture et des cycles d’écriture dans le plan-mémoire, et un moyen de commande configuré pour, en présence d’une suite de nouveaux octets à écrire dans le plan-mémoire dans au moins un mot-mémoire de destination contenant déjà des anciens octets, - vérifier pour chaque mot-mémoire de destination si les anciens octets de ce mot-mémoire de destination doivent tous ou non être remplacés par de nouveaux octets, et - si au moins un ancien octet ne doit pas être remplacé par un nouvel octet, commander le moyen de lecture pour réaliser une opération de lecture de chaque ancien octet ne devant pas être remplacé et commander un chargement dans un registre intermédiaire de chaque nouvel octet et dudit au moins un ancien octet, formant un nouveau contenu dudit mot-mémoire de destination, tandis que - si les anciens octets de ce mot-mémoire de destination doivent tous être remplacés par de nouveaux octets, commander un chargement dans un registre intermédiaire de chaque nouvel octet, formant le nouveau contenu dudit mot-mémoire de destination sans commander d’opération de lecture préalable des anciens octets de ce mot-mémoire de destination, et - commander le moyen d’écriture pour réaliser un cycle d’écriture du nouveau contenu de chaque mot-mémoire de destination.
Par exemple, la première granularité peut être d’un octet et la deuxième granularité peut être d’un mot-mémoire. Un mot-mémoire comporte par exemple quatre octets.
Selon un mode de réalisation, le moyen de commande est configuré pour, lors de ladite vérification, identifier les emplacements respectifs du premier nouvel octet à écrire dans le mot-mémoire de destination correspondant et du dernier nouvel octet à écrire dans le mot-mémoire de destination correspondant, des emplacements respectivement identiques à celui affecté au premier octet du mot-mémoire de destination correspondant et à celui affecté au dernier octet du mot-mémoire de destination correspondant traduisant que les anciens octets de ce mot-mémoire de destination doivent tous être remplacés par de nouveaux octets.
Avantageusement, le moyen de commande est configuré pour réaliser un test logique entre les valeurs des deux derniers bits de poids faible de l’adresse de l’emplacement du premier nouvel octet et les valeurs 0-0, une égalité entre ces valeurs signifiant que l’emplacement de ce premier nouvel octet correspond à celui affecté au premier octet du mot-mémoire de destination correspondant, et un test logique entre les valeurs des deux derniers bits de poids faible de l’adresse de l’emplacement du dernier nouvel octet et les valeurs 1-1, une égalité entre ces valeurs signifiant que l’emplacement de ce dernier nouvel octet correspond à celui affecté au dernier octet du mot-mémoire de destination correspondant.
Selon un mode de réalisation, dans lequel le plan-mémoire comporte des emplacements-mémoires destinés à stocker une série de bits de parité associée à chaque mot-mémoire, le dispositif comporte un moyen de correction d’erreur configuré pour calculer des nouveaux bits de parité associés à et à partir de ce nouveau contenu de chaque mot-mémoire de destination.
Selon un mode de réalisation, le moyen de lecture est configuré pour réaliser des opérations de lecture comportant une lecture dans le plan-mémoire et le moyen de correction d’erreur pour corriger une éventuelle erreur présente dans lesdits mots-mémoire lus.
Selon un mode de réalisation, le moyen de commande est configuré pour encore commander le moyen de lecture, le moyen d’écriture et, le cas échéant, le moyen de correction d’erreur, après réception du dernier octet de ladite suite de nouveaux octets à écrire.
Selon un mode de réalisation, le moyen d’écriture est configuré pour, lors d’un cycle d’écriture, charger ledit nouveau contenu de chaque mot-mémoire de destination chargé dans ledit registre intermédiaire et, le cas échéant, lesdits nouveaux bits de parités dans des verrous de ligne de bits, et écrire les données chargées dans lesdits verrous de ligne de bits dans le plan-mémoire.
Le dispositif est avantageusement réalisé de façon intégrée, par exemple au sein d’un système sur puce.
Il est en outre proposé un appareil électronique, tel qu’une prothèse auditive ou un téléphone portable, comportant un dispositif ou un système sur puce tel que défini ci-avant. D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de modes de réalisation et de mise en œuvre, nullement limitatifs, et des dessins annexés sur lesquels : - les figures 1 et 2 représentent un mode de mise en œuvre d’un procédé d’écriture habituel. - les figures 3 à 6 représentent des exemples de modes de réalisation et de mise en œuvre de l’invention.
La figure 3 représente schématiquement une portion de plan-mémoire PM arrangé matriciellement selon des rangées R0-R3 et des colonnes COLAd 0-255.
Des emplacements-mémoire EMPM sont organisés au sein d’une rangée en mots-mémoires W0-W63 comportant chacun 4 octets de données OCT et une série de 6 bits de parités P. A partir des bits de parités, un code correcteur du type code de Hamming est apte à corriger une erreur sur les 38 bits du mot-mémoire Wi correspondant.
La granularité interne de la mémoire est donc de 38 bits tandis que la granularité externe est de 1 octet (8 bits).
La taille d’une page physique dans cet exemple est de 256 octets, par conséquent de 1 à 256 octets peuvent être écrits en un seul cycle d'écriture. L’adresse du premier octet à écrire est envoyée à la mémoire et les octets à écrire sont ensuite envoyés séquentiellement. Un registre d'adresses est automatiquement incrémenté à l’issue du traitement de chaque octet.
Les bits de poids fort de l’adresse transmise permettent d’identifier la rangée de l’emplacement-mémoire EMPM correspondant, et les bits de poids faible de cette adresse permettent d’identifier la colonne de l’emplacement-mémoire EMPM du premier octet à écrire.
La dernière adresse correspond à l’adresse présente dans le compteur d’adresse lorsque tous les octets à écrire ont été envoyés, et avant que la puce ne soit désélectionnée par une condition STOP du protocole utilisé.
Une suite de nouveaux octets à écrire ne concorde pas systématiquement avec un nombre donné de groupes de 4 octets. Cela dépend de l'adresse du premier octet à écrire et du nombre d’octets dans la suite à écrire.
Chaque nouvel octet est destiné à être écrit dans un mot-mémoire, dit mot-mémoire de destination.
Les trois rangées RI, R2, R3 représentées par la figure 3 correspondent chacune à un exemple indépendant d’une suite de nouveaux octets SND à écrire.
Les rangées RI, R2, R3 représentent le contenu final obtenu pour les différents exemples, avec NDi les nouveaux octets d’un-mot-mémoire de destination Wd, i désignant la position de cet octet dans la suite SND, avec NDO le premier octet de la suite SND. De façon similaire OD désigne les anciens octets d’un mot-mémoire de destination et ID des octets du plan-mémoire n’étant pas affectés par l’écriture. Les nouveaux bits de parités associés à chaque mots-mémoire de destination sont désignés pas la référence NP.
Dans le premier exemple représenté dans la rangée RI, la suite de nouveaux octets à écrire SND comporte 4 octets de la colonne 4 à la colonne 7. Le premier nouvel octet NDO correspond au premier octet du mot-mémoire de destination Wd, les nouveaux octets suivants sont transmis séquentiellement et ont les adresses consécutives suivantes, jusqu’au dernier nouvel octet reçu ND3. Le dernier nouvel octet ND3 correspond au dernier octet du mot-mémoire de destination Wd.
Dans ce premier cas, le calcul des nouveaux bits de parité NP associés à ce mot-mémoire de destination Wd doit prendre en compte seulement les nouveaux octets NDO, NDI, ND2, ND3, par conséquent il n’est pas nécessaire de réaliser des opérations de lecture des anciens octets de ce mot-mémoire de destination Wd.
Dans le deuxième exemple représenté dans la rangée R2, la suite de nouveaux octets à écrire SND comporte 3 octets de la colonne 5 à la colonne 7. Le premier nouvel octet NDO ne correspond pas au premier octet du mot-mémoire de destination Wd, les octets suivants sont transmis séquentiellement et ont des adresses consécutives, jusqu’au dernier nouvel octet reçu ND2 correspondant au dernier octet du mot-mémoire de destination Wd.
Dans ce deuxième cas, le calcul des nouveaux bits de parité NP associés à ce mot-mémoire de destination Wd doit prendre en compte l’ancien octet ODO et les nouveaux octets NDO, NDI, ND2. Par conséquent une opération de lecture de l’ancien octet ODO de ce mot-mémoire de destination Wd est nécessaire.
Dans le troisième exemple représenté par la rangée R3, la suite de nouveaux octets à écrire SND comporte 241 nouveaux octets, de la colonne 10 à la colonne 250. La suite de nouveaux octets couvre dans ce troisième exemple 61 mots-mémoires de destination Wd, référencés Wd2 à Wd62. Le premier nouvel octet NDO ne correspond pas au premier octet du mot-mémoire de destination correspondant Wd2, les octets suivants sont transmis séquentiellement et ont des adresses consécutives, jusqu’au dernier nouvel octet reçu ND240. Le dernier nouvel octet ND240 ne correspond pas au dernier octet du mot-mémoire de destination correspondant Wd62.
Dans ce troisième cas, le calcul des nouveaux bits de parité NP associés au premier mot-mémoire de destination Wd2 doit prendre en compte les anciens octets ODO, OD1 du premier mot-mémoire de destination Wd2 et les nouveaux octets NDO, NDI. Le calcul des nouveaux bits de parité NP associés au dernier mot-mémoire de destination Wd62 doit prendre en compte l’ancien octet OD3 de ce mot-mémoire de destination Wd62 et les nouveaux octets ND238, ND239, ND240. Chacun des autres mots-mémoires de destination Wd3-Wd61 correspond au cas du premier exemple, et le calcul des bits de parité associés à ces autres mots-mémoire de destination doit prendre en compte seulement les nouveaux octets.
Par conséquent il est nécessaire de réaliser une opération de lecture des anciens octets ODO, OD1 du premier mot-mémoire de destination Wd2 et de l’ancien octet OD3 du dernier mot-mémoire de destination Wd62.
Le procédé d’écriture dont un exemple de mise en œuvre est donné ci-après en relation avec la figure 4 permet de ne réaliser que les opérations de lecture nécessaires aux calculs des nouveaux bits de parité.
Plus précisément, si au moins un ancien octet OD ne doit pas être remplacé par un nouvel octet ND, le procédé d’écriture comprend une opération de lecture 200 de chaque ancien octet OD ne devant pas être remplacé et un calcul 413, 425 de nouveaux bits de parité NP associés à ce mot-mémoire de destination Wd à partir de chaque nouvel octet correspondant ND et de chaque ancien octet OD ne devant pas être remplacé ; tandis que si les anciens octets OD de ce mot-mémoire de destination Wd doivent tous être remplacés par de nouveaux octets ND, le procédé d’écriture comprend un calcul de nouveaux bits de parité NP associés à ce mot-mémoire de destination Wd à partir des nouveaux octets correspondants ND sans opération de lecture préalable 200 des anciens octets OD de ce mot-mémoire de destination Wd.
Cela permet de mettre en œuvre au maximum deux opérations de lectures pour réaliser l’écriture d’une suite de nouveaux octets, quel que soit le nombre d’octets dans cette suite. Dans certains cas, une seule voire aucune opération de lecture n’est nécessaire dans ce procédé.
La figure 4 est un diagramme représentant une suite d’étapes d’un tel procédé, selon un mode de mise en œuvre avantageux.
Ce mode de mise en œuvre est notamment adapté à une communication série, par exemple selon le protocole inter-circuit-intégré I2C ou selon le protocole d’interface périphérique série SPI.
Une étape préliminaire 99 correspond à des initialisations de variables internes (i :=0, Rdmem :=0) et à une réinitialisation de tous les verrous de grille de commande CGL. A une étape de départ 401, par exemple sous le protocole I2C, la mémoire reçoit une commande de départ, une identification, l’adresse du premier octet à écrire dans le plan-mémoire et le premier octet à écrire NDi (i = 0).
Un test logique 402 sur une égalité des deux derniers bits de poids faible de l’adresse du premier octet à écrire avec les valeurs logiques 0-0 est réalisé. Un résultat vrai de ce test logique (c’est-à-dire dans le cas où les deux derniers bits de poids faible de l’adresse du premier octet à écrire ont chacun une valeur égale à 0) est représentatif d’un emplacement du premier nouvel octet à écrire dans le mot-mémoire de destination Wd identique à l’emplacement du premier octet du mot-mémoire correspondant Wd.
Dans le cas d’un résultat faux de ce test logique, il sera nécessaire de réaliser une opération de lecture dans le plan-mémoire afin de calculer les nouveaux bits de parités du mot-mémoire de destination correspondant, en tenant compte au moins du premier ancien octet de ce mot-mémoire de destination.
Ainsi, en cas de résultat faux de ce test logique, une variable d’état interne Rdmem est initialisée (403) à une valeur logique donnée (la valeur 1 dans cet exemple).
Une condition initiale de départ 401 est de réinitialiser la variable d’état Rdmem à la valeur logique contraire (la valeur 0 dans cet exemple).
La variable d’état Rdmem permet de vérifier (41 1, 423) pour chaque mot-mémoire de destination Wd si les anciens octets OD de ce mot-mémoire de destination Wd doivent tous ou non être remplacés par de nouveaux octets ND.
Après vérification (402), le nouvel octet NDi est chargé dans un registre intermédiaire de nouvelle donnée NDRG, lors d’une étape de préchargement 404. Ce registre intermédiaire de nouvelle donnée NDRG a par exemple une architecture analogue à celle d’un mot- mémoire, excepté les emplacements-mémoire de la série de bits de parité, et les nouveaux octets y sont chargés à des emplacements correspondant à ceux qu’ils auront dans le mot-mémoire de destination.
Le contenu du registre intermédiaire de nouvelle donnée NDRG écrasera, si nécessaire, au cours d’une étape prochaine (412, 424) jusqu’à trois des quatre octets d’un autre registre intermédiaire ECCRG.
Cet autre registre intermédiaire ECCRG sert d'étage de stockage d’entrée-sortie pour la logique de correction d'erreur, et d'entrée pour les verrous de ligne de bits lors de la mise en œuvre d’un cycle d’écriture dans le plan-mémoire. Par exemple, le registre intermédiaire ECCRG a une architecture analogue à celle d’un mot-mémoire et les nouveaux octets y sont chargés à des emplacements correspondant à ceux qu’ils auront dans le mot-mémoire de destination.
Ensuite, un test 405 de fin de réception est réalisé. Dans l’exemple du protocole I2C, un signal stop est communiqué à la mémoire lorsque la réception est terminée, après la communication du dernier nouvel octet à écrire. Tant que le signal stop n’est pas communiqué, un autre nouvel octet à écrire va être communiqué à la mémoire.
Si le signal stop n’est pas communiqué à la mémoire, alors un test 411 sur la valeur logique de la variable d’état Rdmem est réalisé afin de savoir si les anciens octets du mot-mémoire de destination doivent être remplacés ou non par de nouveaux octets.
Si la variable d’état Rdmem est à 0, les nouveaux octets NDi chargés dans le registre intermédiaire de nouvelle donnée NDRG sont directement chargés (412) dans le registre intermédiaire ECCRG.
Ensuite, le calcul 413 des nouveaux bits de parités NP est réalisé à partir des nouveaux octets chargés dans le registre intermédiaire ECCRG.
Si la variable d’état Rdmem est à 1, alors le calcul 413 des nouveaux bits de parités NP doit être réalisé à partir des nouveaux octets NDi et des anciens octets OD du mot-mémoire de destination Wd.
Une recomposition des données 200 similaire à celle décrite précédemment en relation avec la figure 2 est alors mise en œuvre. Cette recomposition 200 permet de charger dans le registre intermédiaire ECCRG les anciens octets utiles au calcul 413 des nouveaux bits de parités du mot-mémoire de destination.
On rappelle que la recomposition des données 200 comporte une lecture 201 du mot-mémoire de destination (dans le plan-mémoire ou dans les verrous de lignes de bits BLL, en fonction de l’état du verrou de grille de commande CGL correspondant) et une correction 202 d’une éventuelle erreur mise en œuvre grâce à un mécanisme de code correcteur d’erreur. Les anciens octets OD ainsi lus et éventuellement corrigés sont ensuite chargés 203 dans le registre intermédiaire ECCRG.
Puis les nouveaux octets NDi du registre intermédiaire de nouvelle donnée NDRG sont chargés 412 dans le registre intermédiaire ECCRG et écrasent les anciens octets OD correspondants.
Les nouveaux bits de parité NP sont calculés réalisés à partir d’une combinaison des nouveaux octets NDi et des anciens octets OD et sont chargés dans le registre intermédiaire ECCRG.
Ensuite, des phases préliminaires 414, 415 du cycle d’écriture 430 sont mises en œuvre.
Lesdites phases préliminaires comportent un chargement 414 de verrous de lignes de bits BLL et une initialisation 415 d’un verrou de grille de commande CGL associé au mot-mémoire de destinations Wd correspondant.
Les verrous de lignes de bits permettent de stocker les données à écrire physiquement dans le plan-mémoire PM, et les verrous de grille de commande CGL permettent d’indiquer, lorsqu’ils sont initialisés, que les verrous de lignes de bits correspondants au mot-mémoire associé sont déjà chargés. Cela permet de diriger une lecture vers les verrous de ligne de bits BLL si le verrou de grille de commande CGL est initialisé et ainsi d’éviter une lecture dans le plan-mémoire.
Cela est utile en cas de « rollover », c’est-à-dire lorsqu’il est envoyé plus de données à écrire que la taille physique d’une page. Dans ce cas, les données dépassant la taille de page écrasent les données initialement envoyées, c'est à dire que pour une page de 256 octets, seuls les 256 derniers octets reçus sont pris en compte, le 257ème reçu écrasant le premier reçu, etc.
Alors, pour les données écrasées, la recomposition éventuelle doit se faire à partir du contenu des verrous de ligne de bits BLL, et non plus à partir du plan-mémoire. C'est l'état du verrou de grille de commande CGL qui permet de savoir si un mot Wd a précédemment déjà été chargé.
Les étapes suivantes correspondent à la réception du nouvel octet suivant. Plus précisément, ces étapes comprennent une incrémentation 416 de l’adresse contenue dans un registre d’adresse AREG, la réception de l’octet suivant, et la réinitialisation de la variable d’état Rdmem à la valeur indiquant que les octets du mot-mémoire de destination vont être remplacés par de nouveaux octets. Ensuite, les étapes 404 à 418 sont reproduites tant que le dernier octet n’a pas été transmis à la mémoire.
Lorsque le dernier nouvel octet a été communiqué lors d’une étape 417, un signal stop est communiqué à la mémoire et des étapes 421-430 de conclusion d’écriture sont mises en œuvre.
Un test logique 421 sur une égalité des deux derniers bits de poids faible de l’adresse du dernier octet à écrire avec les valeurs logiques 1-1 est réalisé. L’adresse du dernier nouvel octet à écrire est contenue dans le registre d’adresse AREG, ayant été incrémenté au fur et à mesure des réceptions successives des nouveaux octets, à partir de l’adresse du premier nouvel octet.
Un résultat vrai de ce test logique (c’est-à-dire dans le cas où les deux derniers bits de poids faible de l’adresse du premier octet à écrire ont chacun une valeur égale à 1) est représentatif d’un emplacement du dernier nouvel octet à écrire dans le mot-mémoire de destination correspondant Wd identique à l’emplacement du dernier octet de ce mot-mémoire Wd.
Si ce n’est pas le cas, alors une lecture dans le plan-mémoire de ce dernier mot-mémoire de destination est nécessaire pour calculer les bits de parité associés à ce mot-mémoire de destination et la variable d’état Rdmem est initialisée.
Si la variable d’état Rdmem est à 0, un calcul 425 des nouveaux bits de parité NP est réalisé à partir des nouveaux octets chargés dans le registre intermédiaire ECCRG.
Si la variable d’état Rdmem est à 1, alors le calcul 425 des nouveaux bits de parités NP doit être réalisé à partir des nouveaux octets et des anciens octets du mot-mémoire de destination, et une recomposition des données 200 est mise en œuvre. S’ensuivent des phases préliminaires de chargement 426, 427 homologues aux étapes 414 et 415.
Tous les verrous de ligne de bits BLL ayant été chargés avec les nouveaux octets à écrire, le cas échéant, avec les anciens octets à conserver, et avec les nouveaux bits de parité des mots-mémoires de destination, le cycle d’écriture 430 peut alors s’achever par une écriture physique 428 dans le plan-mémoire. L’écriture 428 dans le plan-mémoire comporte de façon habituelle l’application d’impulsions haute-tension d’effacement et de programmation.
Une mémoire configurée pour mettre en œuvre ce type de procédé d’écriture avantageux est conçue de façon à pouvoir réaliser lesdites étapes de conclusion 421-430 après le signal stop de fin de réception.
Par exemple une horloge interne peut permettre à un moyen de commande de mettre en œuvre lesdites étapes de conclusion, de façon adaptée au protocole I2C. Dans un autre exemple, un automate peut être dédié à la mise en œuvre desdites étapes de conclusion, de façon adaptée au protocole SPI.
La figure 5 représente un système sur puce SOC comportant un dispositif de mémoire DIS apte à vérifier si les anciens octets d’un mot-mémoire de destination doivent tous ou non être remplacés par de nouveaux octets, et réaliser une opération de lecture seulement si nécessaire dans le cadre d’une opération d’écriture d’une recomposition d’anciennes et de nouvelles données, et, dans cet exemple, dans le cadre d’un calcul de nouveaux bits de parité d’une telle recomposition.
Par ailleurs le système sur puce SOC comporte différents modules destinés à mettre en œuvre la fonction de ce système sur puce, tels qu’un module de calcul et de commande CPU, un module d’interface de communication COM, ou encore un module d’alimentation ALM.
Le dispositif de mémoire comporte un plan mémoire PM, de structure classique et connue en soi, comportant des cellules-mémoire de type EEPROM arrangées matriciellement en rangées R de mots-mémoire W et en colonnes.
Une entrée EWR est destinée à recevoir des nouvelles données à écrire, par exemple transmises par un utilisateur sur une interface de bus I2C.
On rappelle ici qu’une cellule-mémoire du type EEPROM comporte un transistor possédant de façon classique une grille de commande, une grille flottante, une région de drain et une région de source. Une telle cellule est effaçable et programmable par effet Fowler-Nordheim.
Un décodeur colonne XDEC et un décodeur ligne YDEC permettent d’adresser le plan mémoire PM et sont eux-mêmes adressés par un registre d’adresses AREG. Le registre d’adresses est configuré pour être incrémenté au fur et à mesure des réceptions successives des nouveaux octets à écrire, à partir de l’adresse du premier nouvel octet.
Le dispositif de mémoire DIS comporte également des moyens de lecture MRD connectés au plan mémoire par le décodeur colonne XDEC.
Les moyens d’écriture MWR sont reliés à des verrous de ligne de bits BLL et à des verrous de grille de commande CGL, et sont aptes à mettre en œuvre des cycles d’écriture en appliquant des impulsions d’effacement et de programmation dans les cellules-mémoire via le décodeur de lignes YDEC.
Les adresses et données peuvent être entrées par respectivement les registres d’adresses AREG et le moyen d’écriture MWR et les données peuvent être extraites par le moyen de lecture MRD. L’ensemble de ces moyens est commandé par une logique de commande, ou machine d’état, CMD par l’intermédiaire d’un registre d’entrée-sortie I/OREG.
Un mécanisme de code correcteur d’erreur MECC et un registre intermédiaire ECCRG utile au calcul des bits de parité sont inclus au moyen de commande, dans cet exemple.
Le moyen de commande CMD est en outre configuré pour pouvoir encore commander les différents moyens du dispositif après la fin de la réception, notamment afin de mettre en œuvre les étapes de conclusion 421-430 décrites en relation avec la figure 4.
La figure 6 représente un exemple d’appareil électronique APP, une prothèse auditive dans cette représentation, comportant un tel dispositif de mémoire DIS par exemple réalisé sous forme de circuit intégré ou inclus à un système sur puce SOC par exemple.
De façon générale, l’appareil APP est un appareil électronique ayant peu de ressources énergétiques, tels que les appareils alimentés par piles ou batteries, bien que limiter la consommation de courant puisse être souhaitable dans toute autre application.
Par ailleurs l’invention n’est pas limitée à ces modes de mise en œuvre et de réalisation mais en embrasse toutes les variantes, par exemple des étapes supplémentaires et non détaillées ici peuvent être incorporées aux étapes décrites en relation avec la figure 4, de même que le dispositif de mémoire et le système sur puce peuvent intégrer d’autres fonctions que celles qui ont été présentées en relation avec les figures 5 et 6.
En outre, l’invention a été décrite selon une application à une mémoire équipée d’un mécanisme de code correcteur d’erreur, mais s’adapte à une mémoire n’en ayant pas, par exemple en retirant les étapes 202, 413 et 425 du procédé décrit en relation avec la figure 4. De même, l’invention s’adapte à d’autres valeurs de granularités, par exemple une première granularité d’un bit, et une deuxième granularité d’un octet, en transposant octet avec bit et mot-mémoire avec octet dans la présente description.

Claims (19)

  1. REVENDICATIONS
    1. Procédé d’écriture selon une première granularité dans un plan-mémoire (PM) d’une mémoire non-volatile (DIS), le plan-mémoire (PM) étant arrangé en mots-mémoire (Wi) destinés à stocker chacun plus d’un octet de données (OCT) et la mémoire (DIS) étant configurée pour accéder au plan-mémoire (PM) selon une deuxième granularité supérieure à la première granularité, le procédé d’écriture comprenant, en présence d’une suite de nouveaux octets (SND) à écrire dans le plan-mémoire (PM) dans au moins un mot-mémoire de destination (Wd) contenant déjà des anciens octets (OD), -une vérification (411, 423) pour chaque mot-mémoire de destination (Wd) si les anciens octets (OD) de ce mot-mémoire de destination (Wd) doivent tous ou non être remplacés par de nouveaux octets (ND), et - si au moins un ancien octet (OD) ne doit pas être remplacé par un nouvel octet (ND), une opération de lecture (200) de chaque ancien octet (OD) ne devant pas être remplacé et un chargement, dans un registre intermédiaire (ECCRG), des nouveaux octets (ND) et dudit au moins un ancien octet (OD), formant un nouveau contenu dudit mot-mémoire de destination (Wd), tandis que - si les anciens octets (OD) de ce mot-mémoire de destination (Wd) doivent tous être remplacés par de nouveaux octets (ND), un chargement dans un registre intermédiaire (ECCRG) desdits nouveaux octets (ND), formant le nouveau contenu dudit mot-mémoire de destination (Wd), sans opération de lecture préalable (200) des anciens octets (OD) de ce mot-mémoire de destination (Wd), et - un cycle d’écriture (430) dans le plan-mémoire (PM) du nouveau contenu de chaque mot-mémoire de destination (Wd).
  2. 2. Procédé selon la revendication 1, dans lequel ladite vérification (411, 423) comporte une identification des emplacements respectifs du premier nouvel octet (ND0) à écrire dans le mot-mémoire de destination correspondant (Wd) et du dernier nouvel octet (ND2, ND3, ND240) à écrire dans le mot-mémoire de destination correspondant (Wd), des emplacements respectivement identiques à celui affecté au premier octet du mot-mémoire de destination correspondant (Wd) et à celui affecté au dernier octet du mot-mémoire de destination correspondant (Wd) traduisant que les anciens octets (OD) de ce mot-mémoire de destination (Wd) doivent tous être remplacés par de nouveaux octets (ND).
  3. 3. Procédé selon la revendication 2, dans lequel l’identification de l’emplacement du premier nouvel octet (NDO) comprend un test logique (402) entre les valeurs des deux derniers bits de poids faible de l’adresse (COLAdLse) de l’emplacement du premier nouvel octet (NDO) et les valeurs 0-0, une égalité entre ces valeurs signifiant que l’emplacement de ce premier nouvel octet (NDO) correspond à celui affecté au premier octet du mot-mémoire de destination correspondant (Wd), et l’identification de l’emplacement du dernier nouvel octet (ND2, ND3, ND240) comprend un test logique (421) entre les valeurs des deux derniers bits de poids faible de l’adresse (COLAdLse) de l’emplacement du dernier nouvel octet (ND2, ND3, ND240) et les valeurs 1-1, une égalité entre ces valeurs signifiant que l’emplacement de ce dernier nouvel octet (ND2, ND3, ND240) correspond à celui affecté au dernier octet du mot-mémoire de destination correspondant (Wd).
  4. 4. Procédé selon l’une quelconque des revendications précédentes, dans lequel une série de bits de parité (P) est associée à chaque mot-mémoire (Wi) du plan-mémoire (PM), et dans lequel lesdits chargements dans le registre intermédiaire (ECCRG) du nouveau contenu dudit mot-mémoire de destination (Wd) comportent chacun un calcul respectif (413, 425) de nouveaux bits de parité (NP) associés à et à partir de ce nouveau contenu de chaque mot-mémoire de destination (Wd).
  5. 5. Procédé selon la revendication 4, dans lequel lesdits calculs (413, 425) de nouveaux bits de parité (NP) sont mis en œuvre à partir desdits nouveaux octets (ND) et, le cas échéant, desdits anciens octets (OD), préalablement chargés dans le registre intermédiaire (ECCRG).
  6. 6. Procédé selon Tune quelconque des revendications 4 ou 5, dans lequel l’opération de lecture (200) dudit au moins un ancien octet comporte une correction d’une éventuelle erreur (202) présente dans ledit au moins un ancien octet (201).
  7. 7. Procédé selon Tune quelconque des revendications précédentes, dans lequel le cycle d’écriture (430) comporte un chargement (414, 426) des octets chargés dans ledit registre intermédiaire (ECCRG), et, le cas échéant desdits nouveaux bits de parité (NP), dans des verrous de ligne de bits (BLL) correspondant, et une écriture (428) dans le plan-mémoire (PM) des données chargées dans lesdits verrous de ligne de bits (BLL).
  8. 8. Procédé selon l’une quelconque des revendications précédentes, dans lequel la première granularité est d’un octet, et la deuxième granularité est d’un mot-mémoire.
  9. 9. Dispositif de mémoire non-volatile (DIS) comportant une entrée (EWR) pour recevoir des données à écrire selon une première granularité, un plan-mémoire (PM) arrangé en mots-mémoire (Wi) destinés à stocker chacun plus d’un octet de données (OCT) dans des emplacements-mémoire (EMPM), le dispositif (DIS) comportant un moyen de lecture (MRD) et un moyen d’écriture (MWR) configurés pour réaliser, selon une deuxième granularité supérieure à la première granularité, respectivement des opérations de lecture (200) et des cycles d’écriture (430) dans le plan-mémoire (PM), et un moyen de commande (CMD) configuré pour, en présence d’une suite de nouveaux octets (SND) à écrire dans le plan-mémoire (PM) dans au moins un mot-mémoire de destination (Wd) contenant déjà des anciens octets (OD) - vérifier (402, 421) pour chaque mot-mémoire de destination (Wd) si les anciens octets (OD) de ce mot-mémoire de destination (Wd) doivent tous ou non être remplacés par de nouveaux octets (ND), et - si au moins un ancien octet (OD) ne doit pas être remplacé par un nouvel octet (ND), commander le moyen de lecture (MRD) pour réaliser une opération de lecture (200) de chaque ancien octet (OD) ne devant pas être remplacé et commander un chargement dans un registre intermédiaire (ECCRG) de chaque nouvel octet (ND) et dudit au moins un ancien octet (OD), formant un nouveau contenu dudit mot-mémoire de destination (Wd), tandis que - si les anciens octets (OD) de ce mot-mémoire de destination (Wd) doivent tous être remplacés par de nouveaux octets (ND), commander un chargement dans un registre intermédiaire (ECCRG) de chaque nouvel octet (ND), formant le nouveau contenu dudit mot-mémoire de destination (Wd) sans commander d’opération de lecture (200) préalable des anciens octets de ce mot-mémoire de destination (Wd), et - commander le moyen d’écriture (MWR) pour réaliser un cycle d’écriture (430) du nouveau contenu de chaque mot-mémoire de destination (Wd).
  10. 10. Dispositif selon la revendication 9, dans lequel le moyen de commande (CMD) est configuré pour, lors de ladite vérification (402, 421), identifier les emplacements respectifs du premier nouvel octet (ND0) à écrire dans le mot-mémoire de destination correspondant (Wd) et du dernier nouvel octet (ND2, ND3, ND240) à écrire dans le mot-mémoire de destination correspondant (Wd), des emplacements respectivement identiques à celui affecté au premier octet du mot-mémoire de destination correspondant (Wd) et à celui affecté au dernier octet du mot-mémoire de destination correspondant (Wd) traduisant que les anciens octets (OD) de ce mot-mémoire de destination (Wd) doivent tous être remplacés par de nouveaux octets (ND).
  11. 11. Dispositif selon la revendication 10, dans lequel le moyen de commande (CMD) est configuré pour réaliser un test logique (402) entre les valeurs des deux derniers bits de poids faible de l’adresse (COLAdLSB) de l’emplacement du premier nouvel octet (ND0) et les valeurs 0-0, une égalité entre ces valeurs signifiant que l’emplacement de ce premier nouvel octet (ND0) correspond à celui affecté au premier octet du mot-mémoire de destination correspondant (Wd), et un test logique (421) entre les valeurs des deux derniers bits de poids faible de l’adresse (COLAdLse) de l’emplacement du dernier nouvel octet (ND2, ND3, ND240) et les valeurs 1-1, une égalité entre ces valeurs signifiant que l’emplacement de ce dernier nouvel octet (ND2, ND3, ND240) correspond à celui affecté au dernier octet du mot-mémoire de destination correspondant (Wd).
  12. 12. Dispositif selon l’une quelconque des revendications 9 à 11, dans lequel le plan-mémoire comporte des emplacements-mémoire (EMPM) destinés à stocker une série de bits de parité (P) associée à chaque mot-mémoire (Wi), le dispositif comportant un moyen de correction d’erreur (MECC) configuré pour calculer (413, 425) des nouveaux bits de parité (NP) associés à et à partir de ce nouveau contenu de chaque mot-mémoire de destination (Wd).
  13. 13. Dispositif selon la revendication 12, dans lequel le moyen de lecture (MRD) est configuré pour réaliser des opérations de lecture (200) comportant une lecture (201) des anciens octets (OD) dans le plan-mémoire (PM) et le moyen de correction d’erreur (MECC) pour corriger une éventuelle erreur (202) présente dans lesdits mots-mémoires lus.
  14. 14. Dispositif selon l’une quelconque des revendications 9 à 13, dans lequel le moyen de commande (CMD) est configuré pour encore commander le moyen de lecture (MRD), le moyen d’écriture (MWR) et, le cas échéant, le moyen de correction d’erreur (MECC), après réception du dernier octet de ladite suite de nouveaux octets (SND) à écrire.
  15. 15. Dispositif selon l’une quelconque des revendications 9 à 14, dans lequel le moyen d’écriture (MWR) est configuré pour, lors d’un cycle d’écriture (430), charger (414, 426) ledit nouveau contenu de chaque mot-mémoire de destination chargé dans ledit registre intermédiaire (ECCRG) et, le cas échéant, lesdits nouveaux bits de parité (NP) dans des verrous de ligne de bits (BLL), et écrire (428) dans le plan-mémoire (PM) les données chargées dans lesdits verrous de ligne de bits (BLL).
  16. 16. Dispositif selon l’une quelconque des revendications 9 à 15, dans lequel la première granularité est d’un octet et la deuxième granularité est d’un mot-mémoire.
  17. 17. Dispositif de mémoire (DIS) selon l’une quelconque des revendications 9 à 16, réalisé de façon intégrée.
  18. 18. Système sur puce (SOC) comportant un dispositif de mémoire selon la revendication 17.
  19. 19. Appareil électronique (APP), tel qu’une prothèse auditive ou un téléphone portable, comportant un dispositif (DIS) selon l’une quelconque des revendications 9 à 17 ou un système sur puce (SOC) selon la revendication 18.
FR1753213A 2017-04-12 2017-04-12 Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant Expired - Fee Related FR3065303B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1753213A FR3065303B1 (fr) 2017-04-12 2017-04-12 Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
US15/900,481 US10732894B2 (en) 2017-04-12 2018-02-20 Method of writing in a non-volatile memory device and corresponding non-volatile memory device
CN201810230965.8A CN108694982A (zh) 2017-04-12 2018-03-20 在非易失性存储器器件中写入的方法以及对应存储器器件

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1753213A FR3065303B1 (fr) 2017-04-12 2017-04-12 Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
FR1753213 2017-04-12

Publications (2)

Publication Number Publication Date
FR3065303A1 FR3065303A1 (fr) 2018-10-19
FR3065303B1 true FR3065303B1 (fr) 2019-06-07

Family

ID=59253697

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1753213A Expired - Fee Related FR3065303B1 (fr) 2017-04-12 2017-04-12 Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant

Country Status (3)

Country Link
US (1) US10732894B2 (fr)
CN (1) CN108694982A (fr)
FR (1) FR3065303B1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906332B (zh) * 2021-03-25 2022-08-23 山东高云半导体科技有限公司 Fpga设计的综合实现方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817095A (en) * 1987-05-15 1989-03-28 Digital Equipment Corporation Byte write error code method and apparatus
JP4141581B2 (ja) * 1999-04-05 2008-08-27 株式会社ルネサステクノロジ フラッシュメモリを搭載する記憶装置
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3587842B2 (ja) * 2002-12-17 2004-11-10 沖電気工業株式会社 データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
US8239732B2 (en) * 2007-10-30 2012-08-07 Spansion Llc Error correction coding in flash memory devices
CN101930402B (zh) * 2009-06-23 2012-10-24 北京兆易创新科技有限公司 具有检错/纠错电路的非挥发存储器及其读写方法
CN101930799B (zh) * 2009-06-23 2013-05-29 北京兆易创新科技股份有限公司 具有检错/纠错电路的非挥发存储器及其读写数据的方法
JP5066209B2 (ja) * 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US9342446B2 (en) * 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8832539B1 (en) * 2012-01-17 2014-09-09 Sk Hynix Memory Solutions Inc. Write processing for unchanged data with new metadata
FR2997208B1 (fr) * 2012-10-19 2016-01-15 Continental Automotive France Procede de gestion d'une memoire flash
KR102249810B1 (ko) * 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR102254102B1 (ko) * 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9864774B2 (en) * 2015-06-23 2018-01-09 International Business Machines Corporation Granular buffering of metadata changes for journaling file systems

Also Published As

Publication number Publication date
US20180300085A1 (en) 2018-10-18
US10732894B2 (en) 2020-08-04
CN108694982A (zh) 2018-10-23
FR3065303A1 (fr) 2018-10-19

Similar Documents

Publication Publication Date Title
US8255643B2 (en) Memory system and data processing method thereof
US9280420B2 (en) Memory systems and block copy methods thereof
US7616508B1 (en) Flash-based FPGA with secure reprogramming
FR2627315A1 (fr) Procede de preconditionnement, effacement et/ou programmation d'un composant de memoire eeprom
US20150127887A1 (en) Data storage system and operating method thereof
US8331155B2 (en) Method for programming nonvolatile memory device
EP2940690B1 (fr) Compteur bidirectionnel en mémoire flash
FR2858101A1 (fr) Systeme de memoire flash
FR2633749A1 (fr) Systeme microprocesseur avec une memoire morte programmable effacable electriquement ayant une fonction de prevention des erreurs d'ecriture et circuit de memoire
US9030878B2 (en) Semiconductor memory device including a plurality of cell strings, memory system including the same, and control method thereof
US9098401B2 (en) Fast secure erasure schemes for non-volatile memory
US9899094B2 (en) Nonvolatile memory device for supporting fast checking function and operating method of data storage device including the same
KR20170115644A (ko) 랜덤화 연산을 수행하는 불휘발성 메모리 장치
FR2982406A1 (fr) Memoire securisee qui evite la degradation de donnees
US9507710B2 (en) Command execution using existing address information
US9007843B2 (en) Internal data compare for memory verification
FR3065303B1 (fr) Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
WO2012175827A1 (fr) Procédé de gestion de l'endurance de mémoires non volatiles
FR3039922A1 (fr) Procede d'ecriture dans une memoire du type eeprom et dispositif de memoire correspondant
EP1006532B1 (fr) Mémoire EEPROM sécurisée comportant des moyens de détection d'effacement par UV
US20110238889A1 (en) Semiconductor memory device from which data can be read at low power
EP2870605B1 (fr) Procédé d'effacement ou de programmation d'une mémoire factice protégé contre la détection
US11699485B2 (en) Nonvolatile memory device and method of programing with capability of detecting sudden power off
FR2627316A1 (fr) Memoire eeprom " flash " a processeur de controle du port d'ordres
US9922687B2 (en) Memory system, semiconductor device and methods of operating the same

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20181019

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

ST Notification of lapse

Effective date: 20211205