Brevet FR3011957A1 — publié le 20150417

Domaine de l'invention La présente invention se rapporte à un procédé de lecture d'un bloc de données dans une mémoire non volatile d'un appareil de commande. Etat de la technique Une mémoire EEPROM (mémoire à lecture seule programmable effaçable électriquement) et une mémoire flash sont des mémoires non volatiles utilisées dans les microcontrôleurs d'appareils de commande des ordinateurs et autres appareils électroniques. Les données enregistrées dans de telles mémoires non volatiles restent con- servées même en cas de coupure d'alimentation électrique de la mémoire. Les mémoires EEPROM ont certains avantages par rapport aux mémoires flash. Dans une mémoire EEPROM on peut inscrire et effacer individuellement et de manière souple, les différents octets. En re- vanche, dans les mémoires flash on ne peut effacer les données que sous la forme de blocs de données de plusieurs kilooctets. Mais les mémoires EEPROM sont plus coûteuses et plus encombrantes que les mémoires flash. C'est pourquoi on utilise la possibilité d'émuler une mémoire EEPROM dans une mémoire flash. Une telle mémoire EEPROM émulée peut être divisée en plusieurs secteurs et un secteur représente chaque fois la plus petite unité effaçable. Chaque secteur est lui-même subdivisé en plusieurs pages et chaque page constitue l'unité la plus petite inscriptible. Les blocs de données mémorisés peuvent ainsi occuper une ou plusieurs pages. Un secteur est inscrit de manière successive entre son début jusqu'à sa fin d'une page à l'autre avec des blocs de données jusqu'à ce que le secteur soit complet. Lorsque le secteur est complet on inscrit dans le secteur suivant en procédant de manière analogue. Habituellement on enregistre plusieurs blocs de données différents. Une version actuelle d'un bloc de données est inscrite ainsi dans la page libre suivante du secteur actuel. Les blocs de données différents peuvent correspondre à des versions différentes. Dans un secteur on peut enregistrer plusieurs versions d'un même bloc de données et ces différentes versions du bloc de données auront été établies à des instants différents. La position d'une certaine version d'un certain bloc de données dans un secteur représente ainsi l'actualité de cette version du bloc de données. Si l'on recherche la version actuelle enregistrée en dernier lieu d'un certain bloc de données, on peut tout d'abord rechercher dans un secteur non complètement inscrit en passant du début du secteur jusqu'à sa fin. Comme la position d'une version du bloc de données déterminé dans le secteur, indique l'actualité, il faut rechercher le secteur en partant toujours du début jusqu'à la fin. Si l'on ne trouve pas la version recherchée dans le secteur actuel, on recherche logiquement le sec- teur précédent en procédant de cette manière. Cette opération peut se poursuivre jusqu'à ce que l'on ait trouvé la version actuelle du bloc de données. Le cas échéant cela peut prendre beaucoup de temps jusqu'à avoir trouvé la version actuelle car il faut rechercher de nombreux secteurs. Une autre difficulté est qu'il faut répéter ce mode de re- cherche d'une opération de lecture et d'inscription d'un bloc de données. Pour enregistrer un certain bloc de données il faut tout d'abord rechercher sa version actuelle. Pour inscrire un bloc de données, pour protéger les mémoires flash, on recherche également tout d'abord la version actuelle du bloc de données car les opérations d'inscription ne peuvent se faire que par une modification du bloc de données. Les opérations de lecture et d'inscription d'une mémoire EEPROM, émulée demandent ainsi beaucoup de temps. Cela nécessite notamment des temps longs de montée et de descente en régime qui, en particulier, pour les appareils de commande d'un véhicule automobile doivent être évités car ces commandes assurent souvent des fonctions concernant la sécurité. But de l'invention La présente invention a pour but de développer des moyens permettant de lire rapidement et sans nécessiter des moyens importants, des blocs de données dans une mémoire EEPROM émulée dans une mémoire flash. Exposé et avantages de l'invention A cet effet, l'invention a pour objet un procédé de lecture d'un bloc de données d'une mémoire non volatile d'une unité de calcul notamment d'une mémoire EEPROM, selon lequel : on subdivise la mémoire non volatile en des secteurs, on inscrit les différentes versions de blocs de données différents dans les secteurs, successivement en partant d'un début de secteur jusqu'à la fin du secteur, on inscrit la version actuelle d'un bloc de données à une position actuelle dans un secteur actuel, pour chaque bloc de données une mémoire cache comporte un enregistrement caractérisant le bloc de données respectif, si on recherche la version actuelle d'un certain bloc de données, on enregistre l'entrée de la mémoire cache qui caractérise ce bloc de données, si l'enregistrement de la mémoire cache et qui caractérise ce bloc de don- nées déterminé ne contient aucune adresse de la version actuelle du bloc de données déterminé, alors en mode de recherche : on recherche les secteurs en partant du secteur actuel à partir du début du secteur respectif jusqu'à la fin de ce secteur, jusqu'à ce que l'on ait trouvé dans un secteur, la version actuelle du bloc de données, déterminé et si pen- dant ce mode de recherche on trouve la version actuelle d'un des blocs de données résiduel, on enregistre l'adresse de cette version actuelle du bloc de données respectives comme une entrée caractérisant le bloc de données respectives dans la mémoire cache. Le procédé selon l'invention convient notamment pour des mémoires flash ou des émulations de mémoires EEPROM, notamment des émulations de mémoires EEPROM dans une mémoire flash. Le procédé selon l'invention convient notamment pour tous les types d'unité de calcul en particulier les appareils de commande, notamment destinés à des applications d'automobiles. Une application de l'invention est envisagée pour tous les appareils électroniques ayant une mémoire EEPROM. Selon l'invention on utilise une mémoire cache. Une mé- moire cache est une collection d'adresses de mémoire, notamment dans une mémoire RAM (par exemple un microcontrôleur) de l'unité de cal- cul. Dans la mémoire cache, pour chaque bloc de données on a une entrée caractérisant le bloc de données. Une entrée caractérisant de façon correspondante un bloc de données contient ainsi notamment une adresse de la version actuelle du bloc de données respectif. L'adresse est ici l'adresse dans la mémoire qui indique la position de mémoire précise dans le secteur respectif contenant la version actuelle. S'il faut la version actuelle d'un certain bloc de données, on inscrit l'adresse de cette version actuelle à partir de l'entrée de la mémoire cache caractérisant de façon correspondante ce bloc de don- nées. Ainsi il n'est pas nécessaire à chaque fois qu'il faut la version actuelle d'un certain bloc de données, de rechercher les différents secteurs jusqu'à ce que l'on trouve la version correspondante. On accélère ainsi considérablement les opérations de lecture et d'inscription, notamment pendant l'initialisation de l'unité de calcul. Cela permet d'accélérer con- sidérablement la montée en régime et la descente de régime de l'unité de calcul. Pour que les adresses respectives soient disponibles comme entrée dans la mémoire cache, il faut tout d'abord construire la mémoire cache. Selon l'invention, la construction de la mémoire cache ne se fait pas sous la forme d'une procédure particulière, mais automatiquement à côté du fonctionnement normal de l'unité de calcul. S'il faut la version actuelle d'un certain bloc de données et si l'entrée caractérisant ce bloc de données ne contient pas l'adresse de la version ac- tuelle demandée (par exemple si ce poste est vide ou comporte une valeur d'initialisation) on recherche les secteurs au cours d'un mode de recherche pour trouver la version actuelle de ce bloc de données jusqu'à ce que l'on trouve cette version actuelle. Comme décrit ci-dessus, au cours du mode de recherche on parcourt ainsi toujours complètement chaque secteur, c'est-à-dire en partant du début du secteur jusqu'à la fin du secteur. Cela se fait jusqu'à ce que l'on ait trouvé la version actuelle recherchée dans un secteur. L'invention utilise le fait qu'au cours de ce mode de re- cherche ou de cette recherche toutes les pages du secteur respectif sont parcourues complètement du début du secteur jusqu'à la fin du sec- teur, car la position d'une version d'un bloc de données dans le secteur indique l'actualité de cette version. Si au cours de ce mode de recherche on trouve une version actuelle d'un autre bloc de données on enregistre l'adresse correspondante de cette version du bloc de données comme entrée caractérisant ce bloc de données correspondant dans la mémoire cache. Ainsi, on vérifie notamment tout d'abord s'il y a une adresse comme entrée de ce bloc de données. Si cela est le cas et si l'adresse qui existe déjà concerne une version plus ancienne, moins ac- tuelle de ce bloc de données, on remplace d'adresse existante par l'adresse nouvellement trouvée. Si l'adresse qui existe déjà se rapporte à une version plus actuelle que la version trouvée, on conserve l'adresse existante comme entrée. Cela garantit que l'entrée caractérisant ce bloc de données correspond toujours à l'adresse de la version actuelle du bloc de données. Au cours d'un mode de recherche usuel, on cherche ex- clusivement la version actuelle du bloc de donnée déterminé et on ignore tous les autres blocs de données. Contrairement à cela, le procé- dé de l'invention tient compte également de toutes les versions actuelles trouvées par hasard au cours du mode de recherche et correspondant à tous les autres blocs de données. Ainsi, la mémoire cache se construit avec les versions actuelles trouvées par hasard pour tous les blocs de données. S'il faut l'une des versions actuelles d'un autre bloc de don- nées à un instant ultérieur, il n'est pas nécessaire de la rechercher. Par l'accès direct à l'adresse respective enregistrée dans la mémoire cache on peut ainsi enregistrer immédiatement la version actuelle recherchée. L'adresse de ces versions actuelles existe ainsi déjà à priori comme entrée dans la mémoire cache avant que cette version actuelle n'est néces- saire. La construction de la mémoire cache se fait ainsi de manière ciblée et en économisant le temps et les ressources. Le cas échéant toute la mémoire cache pourra se construire au cours du procédé selon l'invention, déjà après un mode de recherche complet. De façon avantageuse, si l'on trouve la version actuelle du bloc de données déterminé au cours du mode de recherche, on enregistre l'adresse de la version actuelle de ce bloc de données déterminé comme entrée dans la mémoire cache qui caractérise ce bloc de données déterminé. De façon analogue aux explications données ci-dessus, on vérifie ainsi notamment tout d'abord s'il y a déjà une adresse comme entrée de ce bloc de données déterminé. Si une adresse existant déjà se rapporte à une version ancienne moins actuelle de ce bloc de données on remplace cette adresse existante par l'adresse nouvellement trouvée. Si l'adresse existante se rapporte à une version plus actuelle que la ver- sion trouvée, on conserve l'adresse existante comme enregistrement. De façon préférentielle, en initialisant l'unité de calcul on enregistre un enregistrement d'initialisation comme entrée caractérisant le bloc de données déterminé dans la mémoire cache. Cela indique pour une opération de recherche ultérieure qu'aucune adresse n'a été enre- gistrée et qu'il faut alors passer par une opération de recherche. Selon un développement avantageux de l'invention, on enregistre dans la mémoire cache des entrées caractérisant les différents secteurs, en plus des entrées caractérisant les divers blocs de données. Une entrée caractérisant un secteur respectif contient ainsi l'information indiquant si le secteur respectif a déjà été examiné com- plètement du début du secteur jusqu'à la fin du secteur au cours d'un mode de recherche, notamment depuis la dernière mise en service de l'unité de calcul. Cette entrée caractérisant le secteur respectif dans la mémoire cache est appelée ci-après état respectif du secteur. Cet état du secteur permet de raccourcir encore plus et de simplifier le mode de recherche. Si l'on recherche la version actuelle d'un certain bloc de données et si l'entrée de la mémoire cache caractérisant ce bloc de données ne comporte pas d'adresse, l'état du secteur évite d'avoir à parcou- rir complètement le mode de recherche et à commencer à partir du début dans le secteur actuel. En conséquence, de façon avantageuse, on enregistre tout d'abord l'état du secteur. Comme cet état du secteur indique les secteurs qui ont été complètement examinés, on ne recherche plus ces secteurs au cours du mode de recherche actuel. On ne recherche que les secteurs qui n'ont pas encore d'état correspondant et qui n'ont pas encore été examinés. Cela garantit que tout secteur sera examiné au maximum une fois. De façon préférentielle, si la version actuelle du bloc de données déterminé est enregistrée dans un secteur actuel on actualise l'entrée caractérisant ce bloc de données. Pour ne pas perdre de don- nées, on suscrit tout d'abord l'entrée correspondante existant déjà dans la mémoire cache avec un motif temporaire ou entrée temporaire (appelé ci-après motif temporaire). Si les données du bloc de données correspondant sont vérifiées, c'est-à-dire si la version actuelle du bloc de don- nées déterminé dans le secteur actuel a été vérifiée, on remplace l'entrée caractérisant le bloc de données déterminé dans la mémoire cache par l'adresse de cette version actuelle vérifiée du bloc de données déterminé. Cela garantit qu'aucune donnée n'a été perdue ou remplacée en cas de coupure pendant l'opération d'inscription et d'une initialisation ulté- rieure, au moins partielle. De façon préférentielle, on vérifie tout d'abord l'entrée caractérisant un bloc de données dans la mémoire cache si l'on veut enregistrer cette entrée. Si cette entrée comporte une adresse, on vérifie tout d'abord si cette adresse est l'adresse valable de la version actuelle de ce bloc de données. Si cela est le cas, on enregistre la version correspon- dante. Si l'adresse se rapporte par exemple à un bloc de données non valables, on effectue notamment un mode de recherche de la page correspondant à cette adresse. Si par exemple l'adresse ne se rapporte par exemple pas à un début de la version du bloc de données déterminé, on effectue notamment le mode de recherche à partir du début dans le sec- teur actuel. Si l'enregistrement caractéristique de la mémoire cache contient le motif temporaire, on effectue de nouveau, de façon complète notamment le mode de recherche. On ignore alors notamment un éventuel état de secteur et le mode de recherche commence notamment du début du secteur actuel. On refera l'entrée caractérisant ce bloc de données dans la mémoire cache. L'unité de calcul selon l'invention est par exemple l'appareil de commande d'un véhicule automobile qui permet d'appliquer le procédé de l'invention en technique de programmation. L'implémentation du procédé sous la forme d'un pro- gramme est avantageuse car cela se traduit par un coût particulièrement faible, notamment si l'on utilise l'unité de calcul existant pour d'autres fonctions. Les supports de données appropriés pour le programme d'ordinateur sont notamment des disquettes, des disques durs, des mémoires flash, des mémoires EEPROM, des CD-Rom, DVD ou autres. On peut également télécharger un programme par un réseau d'ordinateurs, notamment internet et intranet. Dessins La présente invention sera décrite ci-après de manière plus détaillée à l'aide d'un exemple de procédé de lecture d'un bloc de données dans une mémoire non volatile, selon un exemple de l'invention représentée dans les dessins annexés dans lesquels : la figure 1 est un schéma d'un mémoire non volatile à plusieurs secteurs et mémoires caches d'une unité de calcul pour la mise en oeuvre d'un mode de réalisation du procédé de l'invention, la figure 2 montre schématiquement un ordinogramme d'un pro- cédé selon l'invention. Description de modes de réalisation La figure 1 montre une mémoire non volatile EEPROM d'une unité de calcul sous une présentation schématique portant la ré- férence 100. Dans cet exemple particulier, la mémoire non volatile est présentée comme une émulation d'une mémoire EEPROM dans une mémoire flash. La mémoire EEPROM émulée 100 comporte plusieurs secteurs 110. A la figure 1, à titre d'exemple, on a présenté trois sec- teurs 111, 112, 113. Chacun des secteurs 110 est subdivisé en pages 101. Les pages 101 constituent la plus petite unité des secteurs 110 susceptible de recevoir une inscription. Les secteurs 110 sont eux-mêmes en revanche les plus petites unités effaçables de la mémoire EEPROM émulée 100. Les secteurs 110 reçoivent des inscriptions avec des ver- sions différentes 210 de différents blocs de données 200 successivement à partir d'un début respectif de secteur 102 jusqu'à la fin 103 du secteur respectif. Lorsqu'un secteur est complet, le secteur logiquement suivant est rempli à partir de son début de secteur 102 jusqu'à son ex- trémité de secteur 103. A la figure 1, les secteurs 113 et 112 sont rem- plis. Le secteur 113 a été rempli d'abord puis le secteur 112. Le secteur 111 est actuellement non complètement rempli. La référence 115 désigne la position d'inscription actuelle, c'est-à-dire la page actuelle suivante qui sera inscrite. A la figure 1, à titre d'exemple, on a représenté différents blocs de données 201, 202, 203, 204, 205. Les différentes versions 210 de chacun des blocs de données 201, 202, 203, 204, 205 portent à titre d'exemple les références a et b. Les versions portant la lettre a consti- tuent les versions actuelles des différents blocs de données. A titre d'exemple, la version 201a est la version actuelle du bloc de données 201. La version 201b est la seconde version la plus actuelle du bloc de données 201. Des considérations analogues s'appliquent au bloc de données 202, 203, 204. Pour le bloc de données 205, de l'exemple re- présenté on n'a qu'une version 205a. Il est à remarquer que, pour des raisons de clarté de la figure 1, chaque version 210 d'un bloc de données 200 correspond précisément à une page complète 101. Des versions différentes 210 d'un bloc de données 200 peuvent toutefois comporter plusieurs pages remplies ou une page seulement partiellement remplie. Si au cours d'un mode de recherche 300 on cherche la version actuelle 210 d'un certain bloc de données 200, on applique tout d'abord la recherche au secteur actuel 111 entre le début respectif 102 du secteur jusqu'à sa fin correspondante 103, ce qui est schématisé par la référence 301. Si l'on ne trouve pas la version actuelle dans le secteur actuel 111, on recherche le secteur logiquement suivant 112. Si on ne trouve pas la version actuelle dans ce secteur 112 on recherche dans le secteur 113 qui se trouve logiquement devant le secteur 112 et on poursuit ainsi comme cela est indiqué par la flèche 302. A la figure 1, à côté de la mémoire EEPROM émulée 100 on a représenté une mémoire cache 400 de l'unité de calcul. La mémoire cache 400 peut se trouver par exemple dans une mémoire RAM de l'unité de calcul. Dans cette mémoire cache 400 on a deux tableaux 410 et 420. Le tableau 410 comporte dans sa colonne de gauche 411 les dénominations « identifiables » 201-205 pour les différents blocs de données 200. Dans la colonne de droite 412, le tableau 410 comporte les enregistrements 401-405 d'un enregistrement 450 caractérisant chaque bloc respectif de données. Le tableau 510 contient, dans une colonne gauche 511, les dénominations ("identificateur") 111, 112, 113 pour les différents secteurs 110. Dans la colonne de droite 512, le tableau 420 comporte les enregistrements 501-503 d'un enregistrement 550 caractérisant chaque secteur. La figure 2 montre un mode de réalisation d'un procédé selon l'invention, de manière schématique, sous la forme d'un schéma par blocs. Pour décrire le mode de réalisation du procédé de l'invention on partira ci-après de l'unité de calcul avec la mémoire EEPROM émulée 100 et la mémoire cache 400 de la figure 1. Au cours d'un premier passage 601, on cherche la ver- sion actuelle 204a du bloc de données 204. Dans l'étape 602 on vérifie tout d'abord si l'enregistrement 404 du tableau 410 de la mémoire 400 qui caractérise le bloc de données 204 contient une adresse de la version 204a. Cela n'est pas le cas dans cet exemple. C'est pourquoi dans l'étape 603 on applique un mode de recherche 300. Ainsi, on enregistre d'abord les entrées 550 caractérisant les différents secteurs 110. Dans cet exemple, on n'a pas encore recherché aucun des secteurs 110 ce qui est indiqué dans les différents enregistrements 550. C'est pourquoi le mode de recherche 300 commence par le secteur actuel 111 avec le début correspondant 102 du secteur jusqu'à la page actuelle 115. Dans cet exemple particulier, le secteur 111 comporte uniquement un bloc de données à savoir la version actuelle cherchée 204a. L'adresse correspondante de la version actuelle 204a est enregistrée comme enregistrement 404 du tableau 410 caractérisant le bloc de données 204. Dans l'étape 604 on enregistre l'entrée 501 du tableau 510 caractérisant le secteur 111 indiquant que le secteur 111 a été examiné complètement. Dans l'étape 605 on enregistre finalement la version actuelle 204a. Au cours d'un second passage 611 on cherche la version actuelle 202a du bloc de données 202. Dans l'étape 612 on vérifie si l'enregistrement 402 caractérisant le bloc de données 202 dans le ta- bleau 410 de la mémoire 400 contient une adresse de la version 202a. Cela n'est pas le cas dans cet exemple, c'est pourquoi dans l'étape 613 on passe en mode de recherche 300. Pour cela, on enregistre d'abord les entrées 550. L'enregistrement 501 qui caractérise le secteur 111 indique que ce sec- teur 111 a déjà été complètement recherché. C'est pourquoi le mode de recherche commence par le secteur 112 logiquement en amont en commençant par le début de secteur 102 correspondant jusqu'à la fin 103 de ce secteur. On trouve ainsi tout d'abord la version 202b du bloc de données 202. L'adresse de cette version 202b est mémorisée comme enregistrement 402 caractérisant le bloc de données 202. Ensuite, on trouve la version 204b du bloc de données 204. On vérifie si l'enregistrement correspondant 404 contient déjà une adresse d'une version actuelle du bloc de données 204. Comme décrit en référence au passage 601, l'enregistrement 404 contient l'adresse de la version actuelle 204a. On conserve ainsi l'enregistrement 404 et on ne le modifie pas. Ensuite, on trouve d'abord la version 201b puis la ver- sion 203b. Les adresses de ces versions 20 lb, 203b, sont mémorisées comme enregistrement 401 ou 403 caractérisant les blocs de données 201, 203. Ensuite, on trouve la version 202a du bloc de données 202. On vérifie si l'enregistrement correspondant 402 contient déjà une adresse d'une version actuelle du bloc de données 201. Comme l'adresse de l'enregistrement 402 se rapporte à la version 202b trouvée précédemment et qui est moins actuelle, on remplace l'inscription 402 avec l'adresse de la version plus actuelle 202a qui vient d'être trouvée. De façon analogue, on trouve ensuite les versions 201a, 203a et on remplace dans les enregistrements 401, 403 les adresses par celles des versions actuelles. Le mode de recherche 300 arrive à la fin 103 du secteur 112 et se termine car la version actuelle 202a du bloc de données 202 a été trouvée. Dans l'étape 614 on enregistre l'enregistrement 502 du tableau 510 caractérisant le secteur 112 indiquant que le secteur 112 a été complètement recherché. Dans l'étape 615 on enregistre finalement la version actuelle 204a. Le tableau 410 de la mémoire cache de cet exemple particulier est construite pratiquement complètement après seulement deux passages et il contient les adresses des versions actuelles de tous les blocs de données à l'exception du bloc de données 205. Dans un troisième passage 621 on cherche la version actuelle 203a du bloc de données 203. Dans l'étape 622 on vérifie si l'enregistrement 403 caractérisant le bloc de données 203 du tableau 410 contient une adresse de la version 203a. Cela n'est que le cas si cette adresse a été trouvée au cours du passage 611. Dans l'étape 622b on vérifie l'adresse de l'enregistrement 403. On vérifie notamment si l'adresse concerne effectivement la version actuelle recherchée 203a. Si cela n'est pas le cas, dans l'étape 625 on enregistre la version actuelle 203a. Si l'adresse ne peut être vérifiée dans l'étape 622b alors on effec- tue de nouveau un mode de recherche dans l'étape 623. Ce mode de recherche commence alors à partir du début et ignore les enregistrements 550 du tableau 510 caractérisant les secteurs 110. L'enregistrement 403 est ainsi rétabli. Les étapes 623 et 624 se déroulent de façon analogue aux étapes 613 et 614 du passage 611. Dans le passage 631 on cherche la version actuelle 205a du bloc de données 205. Dans l'étape 632 on vérifie si l'enregistrement 405 caractérisant le bloc de données 205 contient une adresse de la version 205a. Comme cela n'est pas le cas, on passe en mode de recherche 300 dans l'étape 633. Pour cela on enregistre tout d'abord les enregistrements 550. Comme les enregistrements 551, 552 indiquent que les secteurs 111 et 112 ont déjà été effectués, on ne recherche que le secteur 113 en partant du début de secteur 102 jusqu'à la fin de secteur 103. On a tout d'abord trouvé d'autres versions des blocs de données 201 et 203 car celles-ci ne sont toutefois pas les versions actuelles et on ne les remplace pas par des enregistrements 401 et 403. La ver- sion actuelle 205a est finalement trouvée et son adresse est enregistrée comme enregistrement 405 dans le tableau 410. Après avoir recherché dans le secteur 113 jusqu'à la fin du secteur 103 dans l'étape 634 on enregistre comme caractérisant le secteur 113, on enregistre l'entrée 503 du tableau 510, indiquant que le secteur a été recherché complè- tement. Dans l'étape 635 on enregistre finalement la version la plus actuelle 205a. Au cours d'un autre passage 641 on recherche la version actuelle d'un bloc de données 206. Dans l'étape 642 on vérifie si l'enregistrement 406 caractérisant le bloc de données 206 contient une adresse de la version correspondante. Comme cela n'est pas le cas et comme les enregistrements 550 sont défaillants, et que pratiquement tous les secteurs ont déjà été examinés complètement, on arrive à la conclusion qu'aucune version du bloc de données 206 ne se trouve dans la mémoire non fugitive 100. Dans l'étape 643 on n'engage ainsi aucun mode de re- cherche.10 REVENDICATIONS1°) Procédé de lecture d'un bloc de données (200) d'une mémoire non volatile (100) d'une unité de calcul notamment d'une mémoire EEPROM, selon lequel : on subdivise la mémoire non volatile (100) en secteurs (110), on inscrit différentes versions (210) de blocs de données différents (200) dans les secteurs (110) successivement en partant d'un début de secteur (102) jusqu'à la fin du secteur (103), on inscrit la version actuelle (210) d'un bloc de données (200) à une position actuelle (115) dans un secteur actuel (111), pour chaque bloc de données (200), une mémoire cache (400) comporte un enregistrement (450) caractérisant le bloc de données respectif (200), si on recherche la version actuelle (210) d'un certain bloc de don- nées (200), on enregistre l'entrée (450) de la mémoire cache (400) qui caractérise ce bloc de données (200), si l'enregistrement (450) de la mémoire cache (400) et qui caractérise ce bloc de données déterminé (200) ne contient aucune adresse de la version actuelle (210) du bloc de données déterminé (200), alors en mode de recherche (300) : o on recherche les secteurs (110) en partant du secteur actuel (111) à partir du début (102) du secteur respectif jusqu'à la fin (103) de ce secteur, jusqu'à ce que l'on ait trouvé dans un secteur, la version actuelle (210) du bloc de données (200), déterminé, et o si pendant ce mode de recherche (300) on trouve la version actuelle (210) d'un des blocs de données résiduels (200), on enregistre l'adresse de cette version actuelle (210) du bloc de données respectif (200) comme une entrée (450) caractéri- sant le bloc de données respectif (200) dans la mémoire cache (400). 2°) Procédé selon la revendication 1, caractérisé en ce quesi au cours du mode de recherche (300) on trouve la version actuelle (210) du bloc de données déterminée (200), on enregistre l'adresse de la version actuelle (210) du bloc de données déterminé (200) comme enregistrement (450) dans la mémoire cache (400) caractérisant ce bloc de données (200). 3°) Procédé selon la revendication 1 ou 2, caractérisé en ce qu' en initialisant l'unité de recherche on enregistre l'initialisation comme enregistrement (450) caractérisant ce bloc de données déterminé (200) dans la mémoire cache (400). 4°) Procédé selon la revendication 1, caractérisé en ce qu' on mémorise un enregistrement (550) dans la mémoire cache (400) qui caractérise les différents secteurs (110) indiquant si les différents secteurs (110) ont été recherchés entre leurs débuts de secteur (102) respectifs jusqu'à leur extrémité de secteur (103). 5°) Procédé selon la revendication 4, caractérisé en ce que dans le mode de recherche (300) : - on enregistre les entrées (550) caractérisant les différents secteurs (110) dans la mémoire cache (400), et - on ne recherche du début d'un secteur respectif (102) jusqu'à sa fin (103) que les secteurs (110) qui n'ont pas été recherchés à partir de leurs débuts respectifs (102) jusqu'à leur fin de secteur (103) selon les enregistrements (550) caractérisant les différents secteurs (110). 6°) Procédé selon la revendication 1, caractérisé en ce que lorsqu'une version actuelle (210) du bloc de données déterminées (200) est enregistrée dans un secteur actuel (111),on applique, l'enregistrement (450) caractérisant le bloc de données déterminé (200) dans la mémoire cache (400) sur un modèle temporaire, on vérifie la version actuelle (210) du bloc de données déterminé (200) dans le secteur actuel (111), on remplace l'enregistrement (450) caractérisant le bloc de données déterminé (200) dans la mémoire cache (400), par l'adresse de la version actuelle (210) du bloc de données déterminé (200). 7°) Procédé selon la revendication 1, caractérisé en ce que l'on vérifie l'enregistrement (450) de la mémoire cache (400) caractérisant le bloc de données (200) pour enregistrer cette entrée. 8°) Unité de calcul appliquant le procédé selon l'une quelconque des re- vendications 1 à 7. 9°) Programme d'ordinateur pour une unité de calcul pour mettre en oeuvre un procédé selon l'une des revendications 1 à 7, lorsque ce procédé est appliqué à une unité de calcul selon la revendi- cation 8. 10°) Support de mémoire lisible par une machine comportant l'enregistrement d'un programme d'ordinateur selon la revendication 9.25