FR2799046A1 - Procede pour l'ecriture aleatoire de secteurs d'une taille inferieure a celle d'un bloc d'effacement dans une memoire effacable par bloc pour laquelle toute ecriture d'une donnee necessite l'effacement du bloc qui contient ladite donnee - Google Patents
Procede pour l'ecriture aleatoire de secteurs d'une taille inferieure a celle d'un bloc d'effacement dans une memoire effacable par bloc pour laquelle toute ecriture d'une donnee necessite l'effacement du bloc qui contient ladite donnee Download PDFInfo
- Publication number
- FR2799046A1 FR2799046A1 FR9911931A FR9911931A FR2799046A1 FR 2799046 A1 FR2799046 A1 FR 2799046A1 FR 9911931 A FR9911931 A FR 9911931A FR 9911931 A FR9911931 A FR 9911931A FR 2799046 A1 FR2799046 A1 FR 2799046A1
- Authority
- FR
- France
- Prior art keywords
- location
- sector
- block
- replacement
- direct
- 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.)
- Granted
Links
Classifications
-
- 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/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
- G11C16/105—Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
-
- 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
- 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/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Procédé pour l'écriture aléatoire de secteurs d'une taille inférieure à celle d'un bloc d'effacement dans une mémoire effaçable par bloc pour laquelle toute écriture d'une donnée nécessite l'effacement du bloc qui contient ladite donnée. L'invention concerne un procédé permettant de réaliser l'écriture aléatoire de secteurs d'une taille inférieure à celle d'un bloc d'effacement dans une mémoire effaçable par bloc pour laquelle toute écriture d'une donnée nécessite l'effacement du bloc qui contient ladite donnée. A chaque bloc d'effacement 6 est associé un numéro logique de bloc 14, un emplacement de secteur 8 direct est défini pour chaque secteur dans un bloc d'effacement 6 appelé bloc direct, où est écrit le premier contenu dudit secteur, des blocs d'effacements 6 appelés blocs de remplacement sont destinés à recevoir le contenu modifié des secteurs dans des emplacements de secteur 8 de remplacement, des blocs d'effacement 6 appelés blocs disponibles sont réservés pour la copie des blocs. L'écriture d'un secteur consiste à rechercher son emplacement de secteur 8 direct et à écrire son premier contenu dans ledit emplacement de secteur 8, si celui-ci n'est pas encore défini, ou a rechercher un emplacement de secteur 8 libre dans un bloc de remplacement pour y écrire le contenu modifié, à libérer les blocs de remplacement et à copier les blocs directs en prenant, comme premier contenu de chaque secteur qu'il contient le contenu courant dudit secteur. Le système selon l'invention est particulièrement destiné à la sauvegarde des données d'un ordinateur.
Description
La présente invention concerne les systèmes de traitement de données équipés de mémoire effaçable par bloc pour laquelle toute réécriture d'une donnée nécessite l'effacement du bloc qui contient ladite donnée, et, plus particulièrement, un procédé pour l'écriture et la lecture des données sauvegardées dans ladite mémoire effaçable par bloc.
La mémoire effaçable par bloc, usuellement nommée mémoire flash, est une mémoire dite<B>à</B> lecture seule, inscriptible et effaçable électriquement. Elle est caractérisée en ce que son espace, adressable au niveau de chaque octet, est divisé en blocs pouvant être effacés individuellement. Les techniques de lecture, d'écriture et d'effacement de la mémoire effaçable par bloc sont bien connues, et de nombreux composants électroniques intégrants une mémoire effaçable par bloc sont aujourd'hui disponibles en grande quantité comme le 28F64OJ5 d'INTEL ou le TC58V64 de TOSHIBA. Lorsqu'un bloc de ladite mémoire est effacé, l'ensemble des bits de tous les octets qui composent ledit bloc sont dans le même état binaire, généralement l'état<B>'I'.</B> Le passage de l'état<B>'l' à</B> l'état<B>'0'</B> d'un ou plusieurs bits dudit bloc est effectué par un opération de programmation. Par contre, il n'est pas possible de faire passer un ou plusieurs bits de l'état<B>'0' à</B> l'état<B>'l'</B> sans effacer tout le bloc. Lors de l'opération d'effacement dudit bloc, tous les bits qui le composent passent<B>à 'I'.</B> Actuellement, les blocs d'une mémoire effaçable par bloc ont une taille de<B>8</B> kilo octets, soit<B>65536</B> bits,<B>à 128</B> kilo octets, soit<B>1048576</B> bits. Il est fréquent que la quantité de données<B>à</B> sauvegarder par le système de traitement de données soit inférieure<B>à</B> la taille d'un bloc.
Usuellement, les systèmes de traitement de données utilisent des disques magnétiques pour la sauvegarde des données. Le système de gestion de fichiers est le programme qu'un système de traitement de données exécute pour écrire et lire les données sauvegardées sur un disque magnétique. Puisque la plus petite quantité de données qui peut être écrite sur un disque magnétique est le secteur, ledit système de gestion de fichiers est construit pour fonctionner avec des secteurs. Afin de pouvoir utiliser ledit programme pour écrire et lire les données sur la mémoire effaçable par bloc, il faut que ladite mémoire permette l'écriture d'une quantité de données égale<B>à</B> celle que peut contenir un secteur, soit généralement<B>512</B> octets. La taille dudit secteur étant très inférieure<B>à</B> la taille d'un bloc de ladite mémoire effaçable par bloc, un procédé doit être mis en #uvre.
Un procédé permettant d'écrire aléatoirement des secteurs d'une taille inférieure<B>à</B> celle d'un bloc d'effacement dans une mémoire effaçable par bloc<B>à déjà</B> été breveté par la société M-SYSTEMS et est actuellement très largement utilisé. Ce procédé est basé sur l'établissement d'une adresse virtuelle pour chaque adresse physique de la mémoire effaçable par bloc. La correspondance entre lesdites adresses virtuelles et lesdites adresses physiques est définie par une table appelée table de correspondance virtuelle. Cependant, pour éviter de perdre des données<B>à</B> la suite d'une coupure de courant, ladite table de correspondance virtuelle doit être elle-même écrite dans ladite mémoire effaçable par bloc. <B>A</B> chaque écriture d'un secteur, ou d'un ensemble de secteurs, ladite table doit être mise<B>à</B> jour. Puisque, comme exposé plus haut, ladite mémoire effaçable par bloc ne permet pas une modification directe de son contenu, cette mise<B>à</B> jour nécessite la recopie d'une partie de ladite table, appelée page, dans un bloc qui a été préalablement effacé. La complexité de cette opération entraîne une limitation des performances.<B>Il</B> faut en outre, selon ledit procédé, disposer d'une mémoire<B>à</B> accès aléatoire permettant de localiser rapidement, dans ladite mémoire effaçable par bloc, les pages qui composent ladite table de correspondance virtuelle.
Le perfectionnement apporté par cette invention consiste en un procédé permettant l'écriture aléatoire de secteurs d'une taille inférieure<B>à</B> celle d'un bloc d'effacement dans une mémoire effaçable par bloc sans l'utilisation d'une table de correspondance virtuelle afin d'obtenir de meilleures performances.
D'après cette invention, le procédé consiste<B>à</B> associer aux blocs d'effacement, un numéro logique,<B>à</B> définir un emplacement direct pour chaque secteur dans un bloc d'effacement ayant un numéro logique déterminé, appelé bloc direct, où est écrit le premier contenu dudit secteur ainsi qu'une structure de données permettant de déterminer le contenu courant dudit secteur,<B>à</B> réserver des blocs d'effacements, appelés blocs de remplacement, destinés<B>à</B> recevoir le contenu modifié des secteurs,<B>à</B> réserver des blocs d'effacement pour la copie des blocs,<B>à</B> écrire un secteur en recherchant son emplacement direct dans un bloc direct, en écrivant son premier contenu dans ledit emplacement direct si celui-ci n'est pas encore défini ou, dans le cas contraire, en recherchant un emplacement libre dans un bloc de remplacement pour<B>y</B> écrire le contenu modifié,<B>à</B> libérer, dès que nécessaire ou de façon anticipée, les blocs de remplacement en copiant tous les blocs directs dont au moins,<B>à</B> un des secteurs dont l'emplacement direct se trouve dans ledit bloc direct, correspond un contenu modifié dans ledit bloc de remplacement, lesdits blocs directs étant copiés en prenant, comme premier contenu de chaque secteur qu'il contient, si il est défini, le contenu courant dudit secteur,<B>à</B> répéter lesdites opérations d'écriture de secteur, de libération des blocs de remplacement et de copie des blocs directs pour satisfaire les demandes du système de traitement des données.
Ce procédé est décrit en faisant référence<B>à</B> l'utilisation d'une mémoire effaçable par bloc, mais il peut s'appliquer<B>à</B> tout dispositif de stockage de données organisé en blocs d'effacement dont la taille est supérieure<B>à</B> la taille d'un secteur pour lequel toute réécriture d'une donnée nécessite l'effacement du bloc qui contient ladite donnée.
La description de l'invention qui suit fait référence aux dessins annexés La figure<B>1</B> est un schéma logique du système de traitement de données mettant en oeuvre l'invention. La figure 2 est un schéma logique qui détaille le contenu d'un bloc d'effacement, la structure de données qui décrit un bloc d'effacement, et la structure de données qui décrit un emplacement de secteur.
En référence aux figures<B>1</B> et 2 est donnée une description d'un système permettant l'écriture aléatoire d'un secteur d'un taille inférieure<B>à</B> celle d'un bloc d'effacement dans un mémoire effaçable par bloc pour laquelle toute réécriture d'une donnée nécessite l'effacement du bloc qui contient ladite donnée.
L'invention est particulièrement adaptée<B>à</B> un système comprenant au moins une unité de traitement<B>1,</B> une mémoire<B>à</B> accès aléatoires 2, un contrôleur de mémoire effaçable par bloc<B>3,</B> une mémoire effaçable par bloc 4 et un contrôleur d'interface ordinateur<B>5</B> optionnel.
Dans le système mettant en #uvre le procédé décrit, l'unité de traitement<B>1</B> peut être une carte processeur conforme<B>à</B> un standard de l'industrie, par exemple l'INDUSTRY <B>STANDARD</B> ARCHITECTURE, équipée d'un processeur du type i486SX qui fait partie de la famille des processeurs<B>32</B> bits d'INTEL. Ladite unité de traitement<B>1</B> accède<B>à</B> une mémoire<B>à</B> accès aléatoires 2 qui peut être composée de barrettes mémoire SIM et dont la capacité peut être de un ou plusieurs méga octets pouvant contenir les programmes et les données nécessaires au fonctionnement du système ainsi que, éventuellement, les programmes des applications écrivant et lisant des données sauvegardées dans la mémoire effaçable par bloc 4. Le contrôleur de mémoire effaçable par bloc<B>3,</B> qui peut être réalisé avec un circuit programmable, par exemple l'EPM7128 d'ALTERA, permet la connexion de l'unité de traitement<B>1 à</B> la mémoire effaçable par bloc 4. La mémoire effaçable par bloc 4 peut être, par exemple, composée de boîtiers de type 28F64OJ5 d'INTEL ou TC58V64 de TOSHIBA.
Le contrôleur d'interface ordinateur<B>5,</B> qui peut être conforme au standard ATA (ANSI X3TIO/2008), est seulement nécessaire lorsque les programmes des applications écrivant et lisant les données sauvegardées dans ladite mémoire effaçable par bloc 4 ne sont pas contenus dans ladite mémoire<B>à</B> accès aléatoires 2 et exécutés par ladite unité de traitement<B>1,</B> mais contenus dans la mémoire<B>à</B> accès aléatoires et exécutés par l'unité de traitement d'un ordinateur connecté audit système.
La mémoire effaçable par bloc est composée de<B>N</B> blocs d'effacement<B>6</B> de même taille, par exemple<B>128</B> kilo octets avec des boîtiers de type 28F64OJ5 ou<B>8</B> kilo octets avec des boîtiers de type TC58V64. Chaque octet d'un bloc d'effacement<B>6</B> peut être lu ou écrit par l'unité de traitement<B>1 à</B> travers le contrôleur de mémoire effaçable par bloc<B>3, à</B> partir d'un numéro de bloc d'effacement et d'un déplacement dans ledit bloc d'effacement<B>6.</B> Chacun desdits blocs d'effacement<B>6</B> est<B>à</B> chaque instant dans l'état 'direct', 'de remplacement', 'disponible', 'défectueux', ou temporairement dans un état intermédiaire. Dans la suite, un bloc d'effacement<B>6</B> dont l'état est 'direct' sera dénommé bloc direct, un bloc d'effacement<B>6</B> dont l'état est 'de remplacement' sera dénommé bloc de remplacement, un bloc d'effacement<B>6</B> dont l'état est 'disponible' sera dénommé bloc disponible, et un bloc d'effacement<B>6</B> dont l'état est 'défectueux' sera dénommé bloc défectueux.
Si<B>D</B> est le nombre de blocs directs, R le nombre de blocs de remplacement,<B>S</B> le nombre de blocs disponibles, B le nombre de blocs défectueux et T le nombre de blocs d'effacement<B>6</B> dans un état intermédiaire, alors N=D+R+S+B+T. Les nombres<B>D</B> et R ont une valeur fixe. Le nombre B peut être nul. Le nombre<B>S</B> décroît au fur et<B>à</B> mesure que le nombre B croît. Le nombre T n'est non nul que temporairement au détriment du nombre<B>S.</B>
Un numéro logique de bloc 14 peut comporter, par exemple,<B>16</B> bits. Chaque bloc direct est identifié par un numéro logique de bloc 14 unique compris entre<B>0</B> et<B>D-1.</B> Chaque bloc de remplacement est identifié par un numéro logique de bloc 14 unique compris entre<B>D</B> et D+R-1. Chaque bloc disponible possède un numéro logique de bloc 14 dont tous les bits sont<B>à 'I'.</B> Les blocs défectueux ont un numéro logique de bloc 14 quelconque.
Chaque bloc d'effacement<B>6</B> contient,<B>à</B> un déplacement convenu, une structure de données de bloc<B>7</B> pouvant définir l'état du bloc<B>13,</B> le numéro logique de bloc 14 et, éventuellement, d'autres informations optionnelles, comme, par exemple, une signature de bloc<B>11,</B> un compteur d'effacements 12, le nombre total de blocs<B>15,</B> le nombre de blocs directs<B>16,</B> le nombre de blocs de remplacement<B>17,</B> la taille d'un bloc<B>18.</B> L'état du bloc<B>13</B> d'un bloc d'effacement<B>6</B> peut être défini par un masque de, par exemple,<B>8</B> bits.<B>A</B> chaque changement d'état, un bit du masque est passé de<B>'l' à V.</B> L'état progresse donc toujours dans le même sens. Le retour<B>à</B> l'état initial ne peut se faire que par effacement dudit bloc d'effacement<B>6.</B> Les différents états d'un bloc d'effacement<B>6</B> peuvent être, par exemple<B>:</B> <B>(1)</B> 'en cours de préparation'<B>:</B> c'est l'état initial après effacement. La structure de données de bloc<B>7</B> et la signature d'emplacement 22 des structures de données de secteurs<B>9</B> sont en cours d'écriture. C'est un état intennédiaire.
(2) 'disponible'<B>:</B> ledit bloc d'effacement<B>6</B> est prêt pour devenir un bloc direct ou un bloc de remplacement.
<B>(3)</B> 'en cours de copie'<B>:</B> ledit bloc d'effacement<B>6</B> est en cours de copie pour devenir un bloc direct ou un bloc de remplacement. S'il devient un bloc direct, les contenus de secteur<B>10,</B> les numéros de secteur<B>19</B> et le numéro logique de bloc 14 sont en cours d'écriture. S'il devient un bloc de remplacement, seul le numéro logique de bloc 14 est en cours d'écriture. C'est un état intermédiaire.
(4) 'direct'<B>:</B> les contenus de secteur<B>10</B> dudit bloc d'effacement reçoivent le premier contenu des secteurs.
<B><I>(5)</I></B> 'de remplacement'<B>:</B> les contenus de secteur<B>10</B> dudit bloc d'effacement<B>6</B> reçoivent le contenu modifié des secteurs.
<B>(6)</B> 'remplacé'<B>:</B> ledit bloc d'effacement<B>6</B> était précédemment 'direct' et vient d'être copié. C'est un état intermédiaire.
<B>(7)</B> 'défectueux'<B>:</B> ledit bloc d'effacement<B>6</B> n'est plus utilisé. <B>(8)</B> 'en cours d'effacement'<B>:</B> une opération d'effacement est en cours pour ledit bloc d'effacement<B>6. A</B> la fin de ladite opération, l'état dudit bloc d'effacement<B>6</B> sera automatiquement 'en cours de préparation'. C'est un état intermédiaire.
Les états intermédiaires sont identifiés afin de permettre de déterminer l'état précis de chaque bloc d'effacement<B>6</B> après une coupure de courant ou un blocage imprévu du système de traitement de données.
Les secteurs de taille fixe, par exemple<B>512</B> octets, sont identifiés par un numéro de secteur<B>19</B> unique, qui peut comporter par exemple 24 bits. Ledit numéro de secteur<B>19</B> identifie un emplacement de secteur<B>8</B> dans un bloc direct. Un bloc d'effacement<B>6</B> peut contenir au plus un nombre d'emplacements de secteur<B>8</B> égale au quotient de la division de la taille du bloc d'effacement<B>6</B> moins la taille de la structure de données de bloc<B>7</B> par la taille du secteur plus la taille de la structure de données de secteur<B>9.</B>
Une structure de données de secteur<B>9</B> est associée<B>à</B> chaque emplacement de secteur <B>8.</B> Elle peut définir l'état de l'emplacement 20, le numéro de secteur<B>19</B> du secteur correspondant, le numéro d'emplacement de remplacement 21 et, éventuellement, une signature d'emplacement 22. L'état de l'emplacement 20 d'un emplacement de secteur<B>8</B> peut être défini par un masque de, par exemple,<B>8</B> bits.<B>A</B> chaque changement d'état, un bit du masque est passé de<B>'l' à V.</B> L'état progresse donc toujours dans le même sens. Le retour<B>à</B> l'état initial ne peut se faire que par effacement du bloc d'effacement<B>6</B> qui contient ledit emplacement de secteur<B>8.</B> Les différents états d'un emplacement de secteur<B>8</B> peuvent être, par exemple<B>:</B> <B>(1)</B> 'vide'<B>:</B> le contenu courant du secteur correspondant audit emplacement de secteur<B>8</B> n'est pas défini car aucune donnée n'a été écrite dans ledit secteur, ou aucun secteur ne correspond audit emplacement de secteur<B>8.</B>
(2) 'en erreur lecture'<B>:</B> le contenu courant du secteur correspondant audit emplacement de secteur<B>8</B> n'a pu être défini lors d'une copie car le contenu courant dudit secteur était indéterminé suite<B>à</B> une erreur.
<B>(3)</B> 'en cours d'écriture'<B>:</B> le contenu du secteur correspondant audit emplacement de secteur<B>8</B> est en cours d'écriture dans le contenu de secteur<B>10</B> dudit emplacement de secteur<B>8.</B>
(4) 'courant'<B>:</B> le contenu de secteur<B>10</B> dudit emplacement de secteur<B>8</B> est le contenu courant du secteur correspondant audit emplacement de secteur<B>8.</B>
<B>(5)</B> 'remplacé'<B>:</B> le contenu du secteur correspondant audit emplacement de secteur<B>8</B> <B>à</B> été remplacé. Le numéro d'emplacement de remplacement 21 identifie l'emplacement de secteur<B>8</B> dans un bloc de remplacement qui contient le contenu modifié dudit secteur.
<B>(6)</B> 'libéré'<B>:</B> le contenu de secteur dudit emplacement de secteur<B>8 à</B> été le contenu modifié d'un secteur, mais le bloc direct qui contenait le premier contenu dudit secteur<B>à</B> été recopié. <B>(7)</B> 'défectueux'<B>:</B> le contenu courant du secteur correspondant audit emplacement de secteur<B>8</B> est indéterminé suite<B>à</B> une erreur survenue lors de l'écriture dudit contenu dans le contenu de secteur<B>10</B> correspondant audit emplacement de secteur<B>8.</B>
Dans la suite, un emplacement de secteur<B>8</B> dans un bloc direct sera nommée emplacement direct, et un emplacement de secteur<B>8</B> dans un bloc de remplacement sera nommée emplacement de remplacement.
Le numéro logique de bloc 14 du bloc direct contenant l'emplacement direct identifié par un numéro de secteur<B>19</B> est le quotient de la division dudit numéro de secteur<B>19</B> par le nombre d'emplacements de secteur<B>8</B> par bloc d'effacement<B>6.</B> Le rang dudit emplacement direct dans ledit bloc direct est le reste de ladite division. Le déplacement dans ledit bloc d'effacement<B>6</B> de la structure de données de secteurs<B>9</B> associée audit emplacement direct peut être, par exemple, le produit dudit rang par la taille d'une structure de données de secteur<B>9</B> plus la taille d'un secteur. Le déplacement dans ledit bloc du contenu de secteur <B>10</B> dudit emplacement direct peut être, par exemple, le déplacement de ladite structure de données de secteur<B>9</B> plus la taille d'une structure de données de secteur<B>9.</B>
Le numéro d'emplacement de remplacement 21 peut comporter<B>16</B> bits. Tous les bits dudit numéro d'emplacement de remplacement 21 sont à'l' lorsque celui-ci n'est pas défini, sinon il identifie un emplacement de remplacement dans un bloc de remplacement. Le numéro logique de bloc 14 du bloc de remplacement contenant l'emplacement de remplacement identifié par un numéro d'emplacement de remplacement 21 est le quotient de la division dudit numéro d'emplacement de remplacement 21 par le nombre d'emplacements de secteur<B>8</B> par bloc d'effacement<B>6</B> ajouté au nombre de blocs directs<B>16.</B> Le rang dudit emplacement de remplacement dans ledit bloc de remplacement est le reste de ladite division. Le déplacement dans ledit bloc d'effacement<B>6</B> de la structure de données de secteurs<B>9</B> associée audit emplacement de remplacement peut être, par exemple, le produit dudit rang par la taille d'une structure de données de secteur<B>9</B> plus la taille d'un secteur. Le déplacement dans ledit bloc du contenu de secteur<B>10</B> dudit emplacement de remplacement peut être, par exemple, le déplacement de ladite structure de données de secteur<B>9</B> plus la taille d'une structure de données de secteur<B>9.</B> Tous les bits du numéro de secteur<B>19</B> de la structure de données de secteur<B>9</B> d'un emplacement de remplacement ne correspondant par encore<B>à</B> un secteur sont<B>à 'I',</B> sinon il est égale au numéro de secteur<B>19</B> du secteur correspondant.
En référence aux figures<B>1</B> et 2, en relation avec les programmes en langage d'assemblage contenus sous forme binaire dans la mémoire<B>à</B> accès aléatoires 2 et exécutés par l'unité de traitement<B>1,</B> est donnée une description du procédé suivant l'invention permettant l'écriture aléatoire de secteurs d'une taille inférieure<B>à</B> celle d'un bloc d'effacement<B>6</B> dans une mémoire effaçable par bloc 4<B>à</B> travers un contrôleur de mémoire effaçable par bloc<B>3.</B> Lorsque, par un moyen approprié, l'écriture de données dans un secteur est requise, l'emplacement direct est identifié<B>à</B> partir du numéro de secteur<B>19</B> dans un bloc direct selon la méthode décrite précédemment. L'état de l'emplacement 20 dudit emplacement direct est lu<B>à</B> partir de la structure de données de secteur<B>9</B> associée. Si l'état de l'emplacement 20 dudit emplacement direct est 'vide' ou 'en erreur lecture', ledit état de l'emplacement 20 est modifié en 'en cours d'écriture', lesdites données sont écrites dans le contenu de secteur<B>10</B> dudit emplacement direct au déplacement correspondant, et ledit état de l'emplacement 20 est modifié en 'courant'. Sinon, si l'état de l'emplacement 20 dudit emplacement direct est 'courant', un emplacement de remplacement dont l'état de l'emplacement 20 est 'vide' est recherché dans un bloc de remplacement, ledit état de l'emplacement 20 est modifié en 'en cours d'écriture', le numéro de secteur<B>19</B> dans la structure de données de secteur<B>9</B> associée audit emplacement de remplacement est écrit avec le numéro de secteur<B>19</B> dudit secteur, le numéro d'emplacement de remplacement dans la structure de données de secteur<B>9</B> associée audit emplacement direct est écrit avec le numéro d'emplacement de remplacement 21 dudit emplacement de remplacement, l'état de l'emplacement 20 dudit emplacement direct est modifié en 'remplacé', les données sont écrites dans le contenu de secteur<B>10</B> dudit emplacement de remplacement au déplacement correspondant, et l'état de l'emplacement 20 dudit emplacement de remplacement est modifié en 'courant'. Sinon, si l'état de l'emplacement 20 dudit emplacement direct est & remplacé', l'emplacement de remplacement est identifié<B>à</B> partir du numéro d'emplacement de remplacement 21 dans un bloc de remplacement selon la méthode décrite précédemment. L'état de l'emplacement 20 dudit emplacement de remplacement est lu<B>à</B> partir de la structure de données de secteur<B>9</B> associée. Si ledit état de l'emplacement 20 est 'remplacé' l'opération précédente est réitérée, sinon, si ledit état de l'emplacement 20 est 'courant' ledit emplacement de remplacement devient l'ancien emplacement de remplacement. Un emplacement de remplacement dont l'état de l'emplacement 20 est 'vide' est recherché dans un bloc de remplacement, ledit emplacement de remplacement devient le nouvel emplacement de remplacement. L'état de l'emplacement 20 dudit nouvel emplacement de remplacement est modifié en 'en cours d'écriture', le numéro de secteur <B>19</B> dans la structure de données de secteur<B>9</B> associée audit nouvel emplacement de remplacement est écrit avec le numéro de secteur<B>19</B> dudit secteur, le numéro d'emplacement de remplacement 21 dans la structure de données de secteur<B>9</B> associée audit ancien emplacement de remplacement est écrit avec le numéro d'emplacement de remplacement 21 dudit nouvel emplacement de remplacement, l'état de l'emplacement 20 dudit ancien emplacement de remplacement est modifié en 'remplacé', les données sont écrites dans le contenu de secteur<B>10</B> dudit nouvel emplacement de remplacement au déplacement correspondant, et l'état de l'emplacement 20 dudit nouvel emplacement de remplacement est modifié en 'courant'. Si, lors de cette opération d'écriture de données dans un secteur, un état de l'emplacement 20 lu dans une structure de données de secteur<B>9,</B> n'a pas une des valeurs citées, une opération de copie du bloc direct contenant l'emplacement direct identifiée par le numéro de secteur<B>19</B> dudit secteur est exécutée, puis l'opération d'écriture de données dans un secteur est reprise au début. Si, lors de cette opération d'écriture de données dans un secteur, aucun emplacement de remplacement dont l'état de l'emplacement 20 est 'vide' n'est trouvé lors d'une recherche, un opération de libération d'un bloc de remplacement est exécutée, puis une nouvelle recherche d'un emplacement de remplacement dont l'état de l'emplacement 20 est 'vide' est effectuée. Si, lors de cette opération d'écriture de données dans un secteur, les données ne peuvent être écrites sans erreur dans le contenu de secteur<B>10</B> de l'emplacement de secteur<B>8</B> retenu, l'état de l'emplacement 20 dans la structure de données de secteur<B>9</B> associée audit emplacement de secteur<B>8</B> est modifié en 'défectueux' et ladite opération se termine en erreur.
Lorsque, par un moyen approprié, la lecture de données depuis un secteur est requise, l'emplacement direct est identifié<B>à</B> partir du numéro de secteur<B>19</B> dans un bloc direct selon la méthode décrite précédemment. L'état de l'emplacement 20 dudit emplacement direct est lu<B>à</B> partir de la structure de données de secteur<B>9</B> associée. Si l'état de l'emplacement 20 dudit emplacement direct est 'vide', une quantité de données égale<B>à</B> la taille d'un secteur, ayant une valeur convenue, par exemple tout<B>à</B> zéro, est retournée. Sinon, si l'état dudit emplacement direct est 'en erreur lecture' l'opération de lecture se termine en erreur. Sinon, si ledit état de l'emplacement 20 dudit emplacement direct est Ccourant', les données contenues dans le contenu de secteur<B>10</B> dudit emplacement de secteur<B>8</B> sont retournées. Sinon, si l'état de l'emplacement 20 dudit emplacement direct est & remplacé', l'emplacement de remplacement est identifié<B>à</B> partir du numéro d'emplacement de remplacement 21 dans un bloc de remplacement selon la méthode décrite précédemment. L'état de l'emplacement 20 dudit emplacement de remplacement est lu<B>à</B> partir de la structure de données de secteur<B>9</B> associée. Si ledit état de l'emplacement 20 est 'remplacé' on réitère l'opération précédente, sinon, si ledit état de l'emplacement 20 est & courant', les données contenues dans le contenu de secteur<B>10</B> dudit emplacement de remplacement sont retournées. Si, lors de cette opération de lecture de données depuis un secteur, un état de l'emplacement 20 lu dans une structure de données de secteur<B>9,</B> n'a pas une des valeurs citées, ladite opération se termine en erreur.
Lorsque le nombre d'emplacements de remplacement dont l'état<B>de</B> l'emplacement 20 est 'vide' est inférieur<B>à</B> une valeur convenue, ou si, comme précisé précédemment, il n'y a plus d'emplacement de remplacement dont l'état est 'vide' et un opération d'écriture requiert un emplacement de remplacement dont l'état est 'vide', un opération de libération d'un bloc de remplacement est requise. Un bloc de remplacement, qui ne contient pas d'emplacement de remplacement dont l'état de l'emplacement 20 est 'vide', est alors sélectionné. L'état de l'emplacement 20 de la structure de données de secteur<B>9</B> de chaque emplacement de secteur<B>8</B> dudit bloc de remplacement est examinée. Si ledit état de l'emplacement 20 est 'en erreur lecture', 'en cours d'écriture', 'courant', 'remplacé' ou 'défectueux', le numéro de secteur<B>19</B> dudit bloc de données secteur est lu et le bloc direct contenant l'emplacement direct identifiée par ledit numéro de secteur<B>19</B> est copié. L'état du bloc<B>13</B> dudit bloc de remplacement est modifié en 'en cours d'effacement' et une opération d'effacement du bloc d'effacement<B>6</B> correspondant est lancée.
Lorsque, comme précisé précédemment, la copie d'un bloc direct, que l'on nommera bloc source dans ce paragraphe, est requise, un bloc disponible est sélectionné et sera nommé bloc destination. L'état du bloc<B>13</B> dudit bloc destination est modifié en 'en cours de copie', le numéro logique de bloc 14 de la structure de données de bloc<B>7</B> du bloc destination est écrit avec le numéro logique de bloc 14 dudit bloc source, le numéro de secteur<B>19</B> de la structure de données de secteur<B>9</B> de chaque emplacement de secteur<B>10</B> dudit bloc source est écrit avec le numéro de secteur<B>19</B> de la structure de données de secteur<B>9</B> ayant le même déplacement dans le bloc source. Pour chaque emplacement de secteur<B>8</B> dudit bloc destination, ledit numéro de secteur<B>19</B> est utilisé pour déterminer le contenu courant du secteur qu'il identifie selon la méthode décrite pour la lecture de données depuis un secteur. Si l'état de l'emplacement 20 de l'emplacement direct dudit secteur est 'vide', l'état de l'emplacement 20 de la structure de données de secteur<B>9</B> de même déplacement dans ledit bloc destination est modifié en 'vide'. Sinon, si le contenu dudit secteur est lu sans erreur, l'état de l'emplacement 20 de la structure de données de secteur<B>9</B> de même déplacement dans ledit bloc destination est modifié en 'courant' et ledit contenu est copié dans le contenu de secteur<B>10</B> de l'emplacement de secteur<B>8</B> correspondant. Sinon, si le contenu dudit secte-Ur est lu en erreur, l'état de l'emplacement 20 de la structure de données de secteur<B>9</B> de même déplacement dans le dit bloc de destination est modifié en 'en erreur lecture'.<B>A</B> la fin de la détermination du contenu courant des secteurs correspondant<B>à</B> l'ensemble des emplacements de secteur<B>8</B> dudit bloc destination, l'état du bloc<B>13</B> dudit bloc destination est modifié en 'direct' et l'état du bloc <B>13</B> dudit bloc source est modifié en 'remplacé'. Pour chaque emplacement de secteur<B>8</B> dudit bloc source, si l'état de l'emplacement 20 de la structure de données de secteur<B>9</B> est 4remplacé', le numéro d'emplacement de remplacement 21 est lu pour modifier l'état de l'emplacement 20 de la structure de données de secteur<B>9</B> correspondant<B>à</B> l'emplacement de remplacement ainsi identifiée en 'libéré'. Si l'état de l'emplacement 20 dudit emplacement de remplacement est 'remplacé', le numéro d'emplacement de remplacement 21 dudit emplacement de remplacement est<B>à</B> son tour lu pour modifier l'état de l'emplacement 20 de l'emplacement de remplacement correspondant en 'libéré', et ainsi de suite jusqu'à ce que l'état de l'emplacement de remplacement identifié ne soit pas 'remplacé'.<B>A</B> la fin de la modification de l'état de l'emplacement 20 de tous les emplacements de remplacement référencés par le numéro de secteur<B>19</B> des emplacements de secteur<B>8</B> dudit bloc source, l'état du bloc<B>13</B> dudit bloc source est modifié en 'en cours d'effacement' et une opération d'effacement du bloc d'effacement<B>6</B> correspondant est lancée.
<B>A</B> la fin de l'effacement d'un bloc d'effacement<B>6,</B> la structure de données de bloc<B>7</B> est écrite avec l'état du bloc<B>13</B> positionné en 'en cours de préparation' et un numéro logique de bloc 14 dont tous les bits sont<B>à T.</B> Les structures de données de secteurs<B>9</B> sont écrites avec l'état de l'emplacement 20 positionné en 'vide', et un numéro de secteur<B>19</B> et un numéro d'emplacement de remplacement 21 dont tous les bits sont<B>à' 1'.</B>
Lors du démarrage du système de traitement de données après une coup-are de courant ou un blocage dudit système, la structure de données de bloc<B>7</B> de chacun des blocs d'effacement<B>6</B> est analysée afin de localiser les blocs directs, les blocs de remplacement, les blocs disponibles et les blocs défectueux. Pour tous les blocs d'effacement<B>6</B> dont la structure de données de bloc<B>7</B> n'est pas valide, ou l'état du bloc<B>13</B> est ni 'disponible', ni 'direct', ni 'de remplacement', ni 'défectueux', une opération d'effacement est lancée. Si deux blocs d'effacement 'directs' ont le même numéro logique de bloc 14, l'un desdits blocs directs est retenu, une opération d'effacement est lancé sur l'autre.
Claims (1)
- <B>REVENDICATIONS</B> <B>1.</B> Un procédé pour l'écriture aléatoire de secteurs d'une taille inférieure<B>à</B> celle d'un bloc d'effacement dans une mémoire effaçable par bloc pour laquelle toute réécriture d'une donnée nécessite l'effacement du bloc qui contient ladite donnée, ledit procédé étant caractérisé en ce qu'il comprend les opérations: <B>-</B> d'organisation desdits blocs en emplacements de secteur, lesdits emplacements comprenant un indicateur, un numéro de remplacement et une zone de données, <B>-</B> d'écriture d'un secteur dans ladite mémoire par: (a) la détermination de l'emplacement direct<B>à</B> partir du numéro du secteur, <B>(b)</B> s'il est libre: <B>(1)</B> l'écriture du contenu du secteur dans la zone de données dudit emplacement, (2) l'indication de l'occupation dudit emplacement, (c) s'il est occupé: <B>(1)</B> la recherche d'un emplacement de remplacement libre, (2) l'écriture du contenu du secteur dans la zone de données dudit emplacement, <B>(3)</B> l'indication de l'occupation dudit emplacement, (4) le chaînage de l'emplacement précédent par mise<B>à</B> jour de son numéro de remplacement, <B>(5)</B> l'indication du remplacement de l'emplacement précédent, <B>(d)</B> s'il est remplacé, la recherche de l'emplacement occupé dans la chaîne des emplacements de remplacement en utilisant les numéros de remplacement, puis la mise en #uvre des opérations (c)(1)<B>à</B> (c)(5), <B>-</B> de lecture d'un secteur dans ladite mémoire par: (a) la détermination de l'emplacement direct<B>à</B> partir du numéro du secteur, <B>(b)</B> la recherche de l'emplacement occupé dans la chaîne des emplacements de remplacement en utilisant les numéros de remplacement, (c) le retour du contenu de la zone de donnée de l'emplacement occupé. 2. Le procédé selon la revendication<B>1</B> avec des blocs directs ne contenant que des emplacements directs et des blocs de remplacement ne contenant que des emplacements de remplacement, comprenant en outre les opérations: <B>-</B> de libération d'un bloc de remplacement par recopie des blocs directs dont au moins,<B>à</B> un des secteurs dont l'emplacement direct se trouvant dans l'un desdits blocs directs, correspond un emplacement de remplacement dans ledit bloc de remplacement. <B>-</B> de recopie d'un bloc direct en mettant<B>à</B> jour la zone de données de chaque emplacement avec le dernier contenu du secteur correspondant. <B>3.</B> Un système de traitement de données comprenant une unité de traitement, une mémoire<B>à</B> accès aléatoires et une mémoire effaçable par bloc pour laquelle toute réécriture d'une donnée nécessite l'effacement du bloc qui contient ladite donnée, chaque bloc étant organisé en emplacements de secteur, lesdits emplacements comprenant un indicateur, un numéro de remplacement et une zone de données. 4. Le système suivant la revendication<B>3</B> étant caractérisé en ce que: <B>-</B> pour l'écriture d'un secteur dans ladite mémoire effaçable par bloc: (a) l'emplacement direct est déterminé<B>à</B> partir du numéro du secteur, <B>(b)</B> s'il est libre: <B>(1)</B> le contenu du secteur est écrit dans la zone de données dudit emplacement, (2) l'occupation dudit emplacement est indiquée, (c) s'il est occupé: <B>(1)</B> un emplacement de remplacement libre est recherché, (2) le contenu du secteur est écrit dans la zone de données dudit emplacement, <B>(3)</B> l'occupation dudit emplacement est indiquée, (4) l'emplacement précédent est chamé par mise<B>à</B> jour de son numéro de remplacement, <B>(5)</B> le remplacement de l'emplacement précédent est indiqué, <B>(d)</B> s'il est remplacé, l'emplacement occupé est recherché dans la chaffie emplacements de remplacement en utilisant les numéros de remplacement, puis les opérations (c)(1)<B>à</B> (c)(5) sont mises en #uvre, <B>-</B> pour la lecture d'un secteur dans ladite mémoire effaçable par bloc: (a) l'emplacement direct est déterminé<B>à</B> partir du numéro du secteur, <B>(b)</B> l'emplacement occupé est recherché dans la chaffie des emplacements remplacement en utilisant les numéros de remplacement, (c) le contenu de la zone de donnée de l'emplacement occupé est retourné. <B>5.</B> Le système suivant la revendication 4 étant caractérisé en outre en ce que: <B>-</B> chaque bloc direct ne contient que des emplacements directs et chaque bloc remplacement ne contient que des emplacements de remplacement, <B>-</B> un bloc de remplacement est libéré par recopie des blocs directs dont au moins,<B>à</B> un des secteurs dont l'emplacement direct se trouvant dans l'un desdits blocs directs correspond un emplacement de remplacement dans ledit bloc de remplacement. <B>-</B> un bloc direct est recopié en mettant<B>à</B> jour la zone de données de chaque emplacement avec le dernier contenu du secteur correspondant. <B>6.</B> Le système suivant la revendication<B>3,</B> 4 ou<B>5</B> comprenant en outre un contrôleur d'interface ordinateur permettant de répondre aux demandes de lecture et d'écriture de secteur.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9911931A FR2799046B1 (fr) | 1999-09-24 | 1999-09-24 | Procede pour l'ecriture aleatoire de secteurs d'une taille inferieure a celle d'un bloc d'effacement dans une memoire effacable par bloc pour laquelle toute ecriture d'une donnee necessite l'effacement du bloc qui contient ladite donnee |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9911931A FR2799046B1 (fr) | 1999-09-24 | 1999-09-24 | Procede pour l'ecriture aleatoire de secteurs d'une taille inferieure a celle d'un bloc d'effacement dans une memoire effacable par bloc pour laquelle toute ecriture d'une donnee necessite l'effacement du bloc qui contient ladite donnee |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2799046A1 true FR2799046A1 (fr) | 2001-03-30 |
FR2799046B1 FR2799046B1 (fr) | 2004-02-27 |
Family
ID=9550197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9911931A Expired - Fee Related FR2799046B1 (fr) | 1999-09-24 | 1999-09-24 | Procede pour l'ecriture aleatoire de secteurs d'une taille inferieure a celle d'un bloc d'effacement dans une memoire effacable par bloc pour laquelle toute ecriture d'une donnee necessite l'effacement du bloc qui contient ladite donnee |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2799046B1 (fr) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1276116A1 (fr) * | 2001-07-12 | 2003-01-15 | Siemens Aktiengesellschaft | Méthode pour le stockage de données associées |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2687811A1 (fr) * | 1992-02-20 | 1993-08-27 | Fujitsu Ltd | Procede et appareil de commande de memoire flash. |
US5369616A (en) * | 1992-10-30 | 1994-11-29 | Intel Corporation | Method for assuring that an erase process for a memory array has been properly completed |
GB2291990A (en) * | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Flash-memory management system |
US5627783A (en) * | 1995-01-31 | 1997-05-06 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor disk device |
-
1999
- 1999-09-24 FR FR9911931A patent/FR2799046B1/fr not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2687811A1 (fr) * | 1992-02-20 | 1993-08-27 | Fujitsu Ltd | Procede et appareil de commande de memoire flash. |
US5369616A (en) * | 1992-10-30 | 1994-11-29 | Intel Corporation | Method for assuring that an erase process for a memory array has been properly completed |
US5627783A (en) * | 1995-01-31 | 1997-05-06 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor disk device |
GB2291990A (en) * | 1995-09-27 | 1996-02-07 | Memory Corp Plc | Flash-memory management system |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1276116A1 (fr) * | 2001-07-12 | 2003-01-15 | Siemens Aktiengesellschaft | Méthode pour le stockage de données associées |
Also Published As
Publication number | Publication date |
---|---|
FR2799046B1 (fr) | 2004-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7533230B2 (en) | Transparent migration of files among various types of storage volumes based on file access properties | |
US7039786B2 (en) | Memory device and recording and/or reproducing apparatus employing this memory device | |
US8782368B2 (en) | Storing chunks in containers | |
US7146455B2 (en) | System and method for optimized access to memory devices requiring block writing | |
US8812816B2 (en) | Garbage collection schemes for index block | |
US8271456B2 (en) | Efficient backup data retrieval | |
FR2613505A1 (fr) | Methode d'ouverture rapide de fichiers a disques identifies par la denomination de chemins | |
FR2671223A1 (fr) | Memoire semiconductrice remanente pour ordinateur personnel. | |
CN101983376B (zh) | 访问装置、信息记录装置、信息记录***、文件管理方法和程序 | |
FR3026512A1 (fr) | ||
CN111209253B (zh) | 分布式存储设备性能提升方法、装置及分布式存储设备 | |
FR3033061A1 (fr) | ||
US9262339B2 (en) | Managing write operations in a computerized memory | |
US8904128B2 (en) | Processing a request to restore deduplicated data | |
FR2687812A1 (fr) | Systeme de traitement de l'information. | |
EP3293637A1 (fr) | Gestion d'index dans une mémoire flash | |
CN100580669C (zh) | 在Flash存储介质上的关于文件分配表的缓存实现方法 | |
KR20100121389A (ko) | 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 | |
FR3051574A1 (fr) | Gestion du stockage dans une memoire flash | |
FR2799046A1 (fr) | Procede pour l'ecriture aleatoire de secteurs d'une taille inferieure a celle d'un bloc d'effacement dans une memoire effacable par bloc pour laquelle toute ecriture d'une donnee necessite l'effacement du bloc qui contient ladite donnee | |
US20120072657A1 (en) | System and method to write data using phase-change ram | |
US20200272424A1 (en) | Methods and apparatuses for cacheline conscious extendible hashing | |
US11615109B1 (en) | Efficient deserialization from standardized data files | |
JP4086600B2 (ja) | ロールバック可能fatファイルシステム及びプログラム | |
JP7435470B2 (ja) | 情報処理装置、情報処理方法および情報処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 17 |
|
PLFP | Fee payment |
Year of fee payment: 18 |
|
ST | Notification of lapse |
Effective date: 20180531 |