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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/20—Initialising; Data preset; Chip identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/344—Arrangements for verifying correct erasure or for detecting overerased cells
- G11C16/3445—Circuits or methods to verify correct erasure of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection 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)
- REVENDICATIONS1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Dispositif de mémoire (DIS) selon l’une quelconque des revendications 9 à 16, réalisé de façon intégrée.
- 18. Système sur puce (SOC) comportant un dispositif de mémoire selon la revendication 17.
- 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.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112906332B (zh) * | 2021-03-25 | 2022-08-23 | 山东高云半导体科技有限公司 | Fpga设计的综合实现方法和装置 |
Family Cites Families (15)
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 |
-
2017
- 2017-04-12 FR FR1753213A patent/FR3065303B1/fr not_active Expired - Fee Related
-
2018
- 2018-02-20 US US15/900,481 patent/US10732894B2/en active Active
- 2018-03-20 CN CN201810230965.8A patent/CN108694982A/zh active Pending
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 |