Brevet FR2799046A1 — publié le 20010330

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 à 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 'I'. Le passage de l'état 'l' à l'état '0' 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 '0' à l'état 'l' sans effacer tout le bloc. Lors de l'opération d'effacement dudit bloc, tous les bits qui le composent passent à 'I'. Actuellement, les blocs d'une mémoire effaçable par bloc ont une taille de 8 kilo octets, soit 65536 bits, à 128 kilo octets, soit 1048576 bits. Il est fréquent que la quantité de données à sauvegarder par le système de traitement de données soit inférieure à 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 à celle que peut contenir un secteur, soit généralement 512 octets. La taille dudit secteur étant très inférieure à 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 à celle d'un bloc d'effacement dans une mémoire effaçable par bloc à déjà é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 à 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. A chaque écriture d'un secteur, ou d'un ensemble de secteurs, ladite table doit être mise à jour. Puisque, comme exposé plus haut, ladite mémoire effaçable par bloc ne permet pas une modification directe de son contenu, cette mise à 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. Il faut en outre, selon ledit procédé, disposer d'une mémoire à 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 à 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 à associer aux blocs d'effacement, un numéro logique, à 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, à réserver des blocs d'effacements, appelés blocs de remplacement, destinés à recevoir le contenu modifié des secteurs, à réserver des blocs d'effacement pour la copie des blocs, à é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 y écrire le contenu modifié, à 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, à 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, à 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 à l'utilisation d'une mémoire effaçable par bloc, mais il peut s'appliquer à tout dispositif de stockage de données organisé en blocs d'effacement dont la taille est supérieure à 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 1 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 1 et 2 est donnée une description d'un système permettant l'écriture aléatoire d'un secteur d'un taille inférieure à 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 à un système comprenant au moins une unité de traitement 1, une mémoire à accès aléatoires 2, un contrôleur de mémoire effaçable par bloc 3, une mémoire effaçable par bloc 4 et un contrôleur d'interface ordinateur 5 optionnel. Dans le système mettant en #uvre le procédé décrit, l'unité de traitement 1 peut être une carte processeur conforme à un standard de l'industrie, par exemple l'INDUSTRY STANDARD ARCHITECTURE, équipée d'un processeur du type i486SX qui fait partie de la famille des processeurs 32 bits d'INTEL. Ladite unité de traitement 1 accède à une mémoire à 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 3, qui peut être réalisé avec un circuit programmable, par exemple l'EPM7128 d'ALTERA, permet la connexion de l'unité de traitement 1 à 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 5, 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 à accès aléatoires 2 et exécutés par ladite unité de traitement 1, mais contenus dans la mémoire à 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 N blocs d'effacement 6 de même taille, par exemple 128 kilo octets avec des boîtiers de type 28F64OJ5 ou 8 kilo octets avec des boîtiers de type TC58V64. Chaque octet d'un bloc d'effacement 6 peut être lu ou écrit par l'unité de traitement 1 à travers le contrôleur de mémoire effaçable par bloc 3, à partir d'un numéro de bloc d'effacement et d'un déplacement dans ledit bloc d'effacement 6. Chacun desdits blocs d'effacement 6 est à 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 6 dont l'état est 'direct' sera dénommé bloc direct, un bloc d'effacement 6 dont l'état est 'de remplacement' sera dénommé bloc de remplacement, un bloc d'effacement 6 dont l'état est 'disponible' sera dénommé bloc disponible, et un bloc d'effacement 6 dont l'état est 'défectueux' sera dénommé bloc défectueux. Si D est le nombre de blocs directs, R le nombre de blocs de remplacement, S le nombre de blocs disponibles, B le nombre de blocs défectueux et T le nombre de blocs d'effacement 6 dans un état intermédiaire, alors N=D+R+S+B+T. Les nombres D et R ont une valeur fixe. Le nombre B peut être nul. Le nombre S décroît au fur et à mesure que le nombre B croît. Le nombre T n'est non nul que temporairement au détriment du nombre S. Un numéro logique de bloc 14 peut comporter, par exemple, 16 bits. Chaque bloc direct est identifié par un numéro logique de bloc 14 unique compris entre 0 et D-1. Chaque bloc de remplacement est identifié par un numéro logique de bloc 14 unique compris entre D et D+R-1. Chaque bloc disponible possède un numéro logique de bloc 14 dont tous les bits sont à 'I'. Les blocs défectueux ont un numéro logique de bloc 14 quelconque. Chaque bloc d'effacement 6 contient, à un déplacement convenu, une structure de données de bloc 7 pouvant définir l'état du bloc 13, le numéro logique de bloc 14 et, éventuellement, d'autres informations optionnelles, comme, par exemple, une signature de bloc 11, un compteur d'effacements 12, le nombre total de blocs 15, le nombre de blocs directs 16, le nombre de blocs de remplacement 17, la taille d'un bloc 18. L'état du bloc 13 d'un bloc d'effacement 6 peut être défini par un masque de, par exemple, 8 bits. A chaque changement d'état, un bit du masque est passé de 'l' à V. L'état progresse donc toujours dans le même sens. Le retour à l'état initial ne peut se faire que par effacement dudit bloc d'effacement 6. Les différents états d'un bloc d'effacement 6 peuvent être, par exemple : (1) 'en cours de préparation' : c'est l'état initial après effacement. La structure de données de bloc 7 et la signature d'emplacement 22 des structures de données de secteurs 9 sont en cours d'écriture. C'est un état intennédiaire. (2) 'disponible' : ledit bloc d'effacement 6 est prêt pour devenir un bloc direct ou un bloc de remplacement. (3) 'en cours de copie' : ledit bloc d'effacement 6 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 10, les numéros de secteur 19 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' : les contenus de secteur 10 dudit bloc d'effacement reçoivent le premier contenu des secteurs. (5) 'de remplacement' : les contenus de secteur 10 dudit bloc d'effacement 6 reçoivent le contenu modifié des secteurs. (6) 'remplacé' : ledit bloc d'effacement 6 était précédemment 'direct' et vient d'être copié. C'est un état intermédiaire. (7) 'défectueux' : ledit bloc d'effacement 6 n'est plus utilisé. (8) 'en cours d'effacement' : une opération d'effacement est en cours pour ledit bloc d'effacement 6. A la fin de ladite opération, l'état dudit bloc d'effacement 6 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 6 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 512 octets, sont identifiés par un numéro de secteur 19 unique, qui peut comporter par exemple 24 bits. Ledit numéro de secteur 19 identifie un emplacement de secteur 8 dans un bloc direct. Un bloc d'effacement 6 peut contenir au plus un nombre d'emplacements de secteur 8 égale au quotient de la division de la taille du bloc d'effacement 6 moins la taille de la structure de données de bloc 7 par la taille du secteur plus la taille de la structure de données de secteur 9. Une structure de données de secteur 9 est associée à chaque emplacement de secteur 8. Elle peut définir l'état de l'emplacement 20, le numéro de secteur 19 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 8 peut être défini par un masque de, par exemple, 8 bits. A chaque changement d'état, un bit du masque est passé de 'l' à V. L'état progresse donc toujours dans le même sens. Le retour à l'état initial ne peut se faire que par effacement du bloc d'effacement 6 qui contient ledit emplacement de secteur 8. Les différents états d'un emplacement de secteur 8 peuvent être, par exemple : (1) 'vide' : le contenu courant du secteur correspondant audit emplacement de secteur 8 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 8. (2) 'en erreur lecture' : le contenu courant du secteur correspondant audit emplacement de secteur 8 n'a pu être défini lors d'une copie car le contenu courant dudit secteur était indéterminé suite à une erreur. (3) 'en cours d'écriture' : le contenu du secteur correspondant audit emplacement de secteur 8 est en cours d'écriture dans le contenu de secteur 10 dudit emplacement de secteur 8. (4) 'courant' : le contenu de secteur 10 dudit emplacement de secteur 8 est le contenu courant du secteur correspondant audit emplacement de secteur 8. (5) 'remplacé' : le contenu du secteur correspondant audit emplacement de secteur 8 à été remplacé. Le numéro d'emplacement de remplacement 21 identifie l'emplacement de secteur 8 dans un bloc de remplacement qui contient le contenu modifié dudit secteur. (6) 'libéré' : le contenu de secteur dudit emplacement de secteur 8 à été le contenu modifié d'un secteur, mais le bloc direct qui contenait le premier contenu dudit secteur à été recopié. (7) 'défectueux' : le contenu courant du secteur correspondant audit emplacement de secteur 8 est indéterminé suite à une erreur survenue lors de l'écriture dudit contenu dans le contenu de secteur 10 correspondant audit emplacement de secteur 8. Dans la suite, un emplacement de secteur 8 dans un bloc direct sera nommée emplacement direct, et un emplacement de secteur 8 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 19 est le quotient de la division dudit numéro de secteur 19 par le nombre d'emplacements de secteur 8 par bloc d'effacement 6. Le rang dudit emplacement direct dans ledit bloc direct est le reste de ladite division. Le déplacement dans ledit bloc d'effacement 6 de la structure de données de secteurs 9 associée audit emplacement direct peut être, par exemple, le produit dudit rang par la taille d'une structure de données de secteur 9 plus la taille d'un secteur. Le déplacement dans ledit bloc du contenu de secteur 10 dudit emplacement direct peut être, par exemple, le déplacement de ladite structure de données de secteur 9 plus la taille d'une structure de données de secteur 9. Le numéro d'emplacement de remplacement 21 peut comporter 16 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 8 par bloc d'effacement 6 ajouté au nombre de blocs directs 16. 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 6 de la structure de données de secteurs 9 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 9 plus la taille d'un secteur. Le déplacement dans ledit bloc du contenu de secteur 10 dudit emplacement de remplacement peut être, par exemple, le déplacement de ladite structure de données de secteur 9 plus la taille d'une structure de données de secteur 9. Tous les bits du numéro de secteur 19 de la structure de données de secteur 9 d'un emplacement de remplacement ne correspondant par encore à un secteur sont à 'I', sinon il est égale au numéro de secteur 19 du secteur correspondant. En référence aux figures 1 et 2, en relation avec les programmes en langage d'assemblage contenus sous forme binaire dans la mémoire à accès aléatoires 2 et exécutés par l'unité de traitement 1, est donnée une description du procédé suivant l'invention permettant l'écriture aléatoire de secteurs d'une taille inférieure à celle d'un bloc d'effacement 6 dans une mémoire effaçable par bloc 4 à travers un contrôleur de mémoire effaçable par bloc 3. Lorsque, par un moyen approprié, l'écriture de données dans un secteur est requise, l'emplacement direct est identifié à partir du numéro de secteur 19 dans un bloc direct selon la méthode décrite précédemment. L'état de l'emplacement 20 dudit emplacement direct est lu à partir de la structure de données de secteur 9 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 10 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 19 dans la structure de données de secteur 9 associée audit emplacement de remplacement est écrit avec le numéro de secteur 19 dudit secteur, le numéro d'emplacement de remplacement dans la structure de données de secteur 9 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 10 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é à 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 à partir de la structure de données de secteur 9 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 19 dans la structure de données de secteur 9 associée audit nouvel emplacement de remplacement est écrit avec le numéro de secteur 19 dudit secteur, le numéro d'emplacement de remplacement 21 dans la structure de données de secteur 9 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 10 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 9, 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 19 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 10 de l'emplacement de secteur 8 retenu, l'état de l'emplacement 20 dans la structure de données de secteur 9 associée audit emplacement de secteur 8 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é à partir du numéro de secteur 19 dans un bloc direct selon la méthode décrite précédemment. L'état de l'emplacement 20 dudit emplacement direct est lu à partir de la structure de données de secteur 9 associée. Si l'état de l'emplacement 20 dudit emplacement direct est 'vide', une quantité de données égale à la taille d'un secteur, ayant une valeur convenue, par exemple tout à 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 10 dudit emplacement de secteur 8 sont retournées. Sinon, si l'état de l'emplacement 20 dudit emplacement direct est & remplacé', l'emplacement de remplacement est identifié à 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 à partir de la structure de données de secteur 9 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 10 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 9, 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 de l'emplacement 20 est 'vide' est inférieur à 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 9 de chaque emplacement de secteur 8 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 19 dudit bloc de données secteur est lu et le bloc direct contenant l'emplacement direct identifiée par ledit numéro de secteur 19 est copié. L'état du bloc 13 dudit bloc de remplacement est modifié en 'en cours d'effacement' et une opération d'effacement du bloc d'effacement 6 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 13 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 7 du bloc destination est écrit avec le numéro logique de bloc 14 dudit bloc source, le numéro de secteur 19 de la structure de données de secteur 9 de chaque emplacement de secteur 10 dudit bloc source est écrit avec le numéro de secteur 19 de la structure de données de secteur 9 ayant le même déplacement dans le bloc source. Pour chaque emplacement de secteur 8 dudit bloc destination, ledit numéro de secteur 19 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 9 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 9 de même déplacement dans ledit bloc destination est modifié en 'courant' et ledit contenu est copié dans le contenu de secteur 10 de l'emplacement de secteur 8 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 9 de même déplacement dans le dit bloc de destination est modifié en 'en erreur lecture'. A la fin de la détermination du contenu courant des secteurs correspondant à l'ensemble des emplacements de secteur 8 dudit bloc destination, l'état du bloc 13 dudit bloc destination est modifié en 'direct' et l'état du bloc 13 dudit bloc source est modifié en 'remplacé'. Pour chaque emplacement de secteur 8 dudit bloc source, si l'état de l'emplacement 20 de la structure de données de secteur 9 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 9 correspondant à 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 à 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é'. A 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 19 des emplacements de secteur 8 dudit bloc source, l'état du bloc 13 dudit bloc source est modifié en 'en cours d'effacement' et une opération d'effacement du bloc d'effacement 6 correspondant est lancée. A la fin de l'effacement d'un bloc d'effacement 6, la structure de données de bloc 7 est écrite avec l'état du bloc 13 positionné en 'en cours de préparation' et un numéro logique de bloc 14 dont tous les bits sont à T. Les structures de données de secteurs 9 sont écrites avec l'état de l'emplacement 20 positionné en 'vide', et un numéro de secteur 19 et un numéro d'emplacement de remplacement 21 dont tous les bits sont à' 1'. 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 7 de chacun des blocs d'effacement 6 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 6 dont la structure de données de bloc 7 n'est pas valide, ou l'état du bloc 13 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. REVENDICATIONS 1. Un 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 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: - d'organisation desdits blocs en emplacements de secteur, lesdits emplacements comprenant un indicateur, un numéro de remplacement et une zone de données, - d'écriture d'un secteur dans ladite mémoire par: (a) la détermination de l'emplacement direct à partir du numéro du secteur, (b) s'il est libre: (1) 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é: (1) la recherche d'un emplacement de remplacement libre, (2) l'écriture du contenu du secteur dans la zone de données dudit emplacement, (3) l'indication de l'occupation dudit emplacement, (4) le chaînage de l'emplacement précédent par mise à jour de son numéro de remplacement, (5) l'indication du remplacement de l'emplacement précédent, (d) 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) à (c)(5), - de lecture d'un secteur dans ladite mémoire par: (a) la détermination de l'emplacement direct à partir du numéro du secteur, (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 1 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: - de libération d'un bloc de remplacement par recopie des blocs directs dont au moins, à 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. - de recopie d'un bloc direct en mettant à jour la zone de données de chaque emplacement avec le dernier contenu du secteur correspondant. 3. Un système de traitement de données comprenant une unité de traitement, une mémoire à 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 3 étant caractérisé en ce que: - pour l'écriture d'un secteur dans ladite mémoire effaçable par bloc: (a) l'emplacement direct est déterminé à partir du numéro du secteur, (b) s'il est libre: (1) 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é: (1) un emplacement de remplacement libre est recherché, (2) le contenu du secteur est écrit dans la zone de données dudit emplacement, (3) l'occupation dudit emplacement est indiquée, (4) l'emplacement précédent est chamé par mise à jour de son numéro de remplacement, (5) le remplacement de l'emplacement précédent est indiqué, (d) 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) à (c)(5) sont mises en #uvre, - pour la lecture d'un secteur dans ladite mémoire effaçable par bloc: (a) l'emplacement direct est déterminé à partir du numéro du secteur, (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é. 5. Le système suivant la revendication 4 étant caractérisé en outre en ce que: - chaque bloc direct ne contient que des emplacements directs et chaque bloc remplacement ne contient que des emplacements de remplacement, - un bloc de remplacement est libéré par recopie des blocs directs dont au moins, à 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. - un bloc direct est recopié en mettant à jour la zone de données de chaque emplacement avec le dernier contenu du secteur correspondant. 6. Le système suivant la revendication 3, 4 ou 5 comprenant en outre un contrôleur d'interface ordinateur permettant de répondre aux demandes de lecture et d'écriture de secteur.