Brevet FR2848327A1 — publié le 20040611

PROCEDE DE GESTION DE L'ECRITURE DANS UNE MEMOIRE L'invention se rapporte à un procédé de gestion de l'écriture dans une mémoire fonctionnant-sur le principe d'une table tournante. Ce principe consiste à disposer de plusieurs lignes ordonnées dans la mémoire et d'écrire sur une ligne dans laquelle l'écriture est la plus ancienne. Cette ligne 5 est dite: ligne la plus ancienne. Le principe de la table tournante est, par exemple, utilisé lorsqu'on souhaite mémoriser l'historique d'événements enregistrés et que l'on dispose d'une mémoire à capacité limitée. L'invention trouve une utilité particulière pour la mémorisation d'événement en cas de panne d'un équipement embarqué par exemple en 10 aéronautique. Plus précisément, dans un équipement particulier comme un instrument combiné de secours regroupant les fonctions d'altimètre, de tachymètre et horizon artificiel, il est nécessaire, en cas de panne de l'instrument, de mémoriser au moment de la panne, l'ensemble des paramètres qu'il affiche. Il est également nécessaire de mémoriser 15 l'historique des pannes, par exemple les 30 dernières pannes. Pour ce faire, on peut prévoir une mémoire comportant au moins 30 lignes, chacune affectée à la mémorisation des paramètres de l'instrument pour une panne. Les lignes de la mémoire sont ordonnées de telle sorte que les paramètres relatifs à la première panne se mémorisent sur la première ligne et ainsi de 20 suite jusqu'aux paramètres relatifs à la trentième panne qui se mémorisent sur la trentième ligne. Ensuite, et afin de conserver l'historique des trente dernières pannes, les paramètres relatifs à la trente et unième panne se mémorisent sur la première ligne en remplacement des paramètres déjà inscrits sur la première ligne. Pour chaque panne suivante, on mémorise ces 25 paramètres en remplacement de ceux relatifs à la plus ancienne panne mémorisée dans la table. Pour gérer ce type de table tournante, on utilise généralement un compteur utilisant plusieurs bits, par exemple un mot de 32 bits de chaque ligne. On inscrit dans ce compteur le numéro d'ordre de la panne, ou plus 30 généralement de l'événement, à enregistrer. Lorsque la panne suivante se produit, on recherche dans le compteur la valeur la plus grande et on enregistre sur la ligne suivante le numéro d'ordre et les paramètres relatifs à cette nouvelle panne. Ce procédé impose un espace important de la mémoire réservé au compteur et, par conséquent, une quantité importante d'informations non utiles à écrire pour chaque panne. L'invention propose de pallier ces difficultés en proposant un procédé n'utilisant qu'un seul bit pour assurer le repérage de l'événement le 5 plus ancien. A cet effet, l'invention a pour objet un procédé de gestion de l'écriture dans une mémoire disposant de plusieurs lignes ordonnées, l'écriture se faisant sur la ligne la plus ancienne, caractérisé en ce que chaque ligne comporte un curseur ne comprenant qu'un seul bit, en ce que l'état du curseur est inversé à chaque écriture sur la ligne correspondante, en 10 ce que le repérage de la ligne la plus ancienne se fait en lisant dans l'ordre des lignes, le curseur de chaque ligne, la ligne la plus ancienne comportant le premier curseur dont l'état diffère de celui de la première ligne. Le procédé de l'invention permet de réduire la taille d'une mémoire utilisée comme table tournante et, par conséquent, son prix. 1 5 L'invention trouve une utilité particulière mais non exclusive pour un type de mémoire couramment utilisée pour réaliser une table tournante en cas de panne d'un équipement aéronautique. Il s'agit de mémoire en lecture seule programmable et effaçable électriquement mieux connue sous le nom de EEPROM, nom issu de l'abréviation anglo-saxonne de: " Electrical 20 Erasable Programmable Read Only Memory ". Ce type de mémoire a un prix qui est fortement proportionnel à sa taille et a une durée de vie limitée en nombre d'écriture. Pour ce type de mémoire, on comprend l'intérêt de limiter à la fois la taille et aussi le nombre d'écritures. L'invention sera mieux comprise et d'autres avantages apparaîtront à la lecture de la description détaillée d'un mode de réalisation, description illustrée par le dessin joint dans lequel: - la figure 1 représente le principe de l'invention appliqué à une table de huit lignes; - la figure 2 représente une amélioration du principe exposé à l'aide de la figure 1, amélioration pour laquelle on élimine les lignes invalides. La figure 1 représente une mémoire partitionnée en huit lignes Ll à L8. Il est bien entendu que l'invention n'est pas limitée à huit lignes et 35 qu'elle peut être mise en oeuvre quel que soit le nombre de lignes. Chaque ligne comporte un emplacement d'un bit réservé à un curseur. Sur la figure 1, seul l'état 0 ou 1 du curseur a été représenté sur chaque ligne LI à L8. Les autres bits de chaque ligne peuvent recevoir des informations utiles relatives à des événements à mémoriser. L'écriture dans la mémoire des informations 5 utiles se fait par ligne et l'état du curseur de la ligne dans laquelle l'écriture se fait est inversé au moment de l'écriture des informations utiles. Dans un fonctionnement en table tournante, l'écriture se fait sur la ligne la plus ancienne et avant l'écriture, le repérage de cette ligne se fait en lisant dans l'ordre des lignes, le curseur de chaque ligne. La ligne la plus ancienne est 10 celle qui comporte le premier curseur, dans l'ordre des lignes, dont l'état diffère de celui de la première ligne. Sur la figure 1, l'état du curseur a été représenté à quatre instants différents Tl à T4 donnés à titre d'exemple. Au premier instant Tl, tous les curseurs sont à l'état 0. L'instant 1 5 Tl peut représenter un instant initial o aucune écriture n'a été faite dans la mémoire. L'instant Tl peut également suivre une écriture dans la dernière ligne L8 de la mémoire. Lorsque l'état de tous les curseurs est identique, lors de la phase de repérage de la ligne la plus ancienne, l'écriture se fait sur la première ligne LI. A l'instant T2, les curseurs des lignes LI à L3 sont à l'état 0 et les curseurs des lignes L4 à L8 sont à l'état 1. La ligne la plus ancienne est la ligne L4 car l'état de son curseur diffère de celui de la ligne précédente L3. A l'instant T3, les curseurs des lignes LI à L5 ont à l'état 1 et les curseurs des lignes L6 à L8 sont à l'état 0. La ligne la plus ancienne est la 25 ligne L6 car l'état de son curseur diffère de celui de la ligne précédente L5. A partir des deux instants T2 et T3, on peut exprimer l'invention de la façon suivante: l'écriture se fait sur la ligne pour laquelle on a détecté un front, dans l'état du curseur. On définit un front comme étant un changement d'état soit de 0 à 1, soit de 1 à 0. A l'instant T4, tous les curseurs sont à l'état 1 et le repérage de la ligne la plus ancienne se fait de la même façon que pour l'instant T1. La ligne la plus ancienne est la ligne Li. La figure 2 représente la même mémoire que celle représentée sur la figure 1, c'est-à-dire une mémoire comportant huit lignes Li à L8. La 35 figure 2 permet de comprendre une variante avantageuse du procédé décrit à l'aide de la figure 1. Dans cette variante, on détermine la validité de chaque ligne et on ne lit le curseur que pour des lignes valides. Plus précisément pour déterminer la validité d'une ligne, lors de l'écriture sur la ligne considérée, on calcule une première somme de tous les bits à écrire sur la 5 ligne et on écrit cette première somme dans un emplacement de la ligne réservé à cet effet. Plus tard, lorsqu'on cherche à déterminer la validité d'une ligne, on calcule une seconde somme de tous les bits écrits de la ligne, on compare la seconde somme à celle écrite dans l'emplacement réservé, on déclare valide une ligne pour laquelle le résultat de la comparaison est exact 10 et on déclare invalide une ligne pour laquelle le résultat de la comparaison est faux. Ainsi, si l'écriture sur la ligne ne s'est pas fait correctement, par exemple pour un bit restant bloqué à un état inverse de l'état souhaité, la somme calculée lors de la détermination de la validité sera différente de celle écrite dans l'emplacement réservé et la ligne sera déclarée invalide et on ne 15 tiendra pas compte du curseur de cette ligne pour la détermination de la ligne la plus ancienne. D'autres procédés de détermination de la validité sont utilisables comme par exemple un procédé utilisant un code de redondance cyclique. Sur la figure 2, les lignes LI, L4 et L5 sont déclarées invalides. Le repérage de la ligne la plus ancienne ne se fait que sur les lignes déclarées 20 valides, c'est-à- dire les lignes L2, L3, L6, L7, L8 dont on analyse dans l'ordre l'état du curseur. Par exemple, à l'instant T5, seul le curseur de la ligne L4 est à l'état 1. Le repérage de la ligne la plus ancienne commence par l'analyse du curseur de la ligne L2 puisque la ligne Li est déclarée invalide. Le repérage 25 se poursuit, dans l'ordre, par les curseurs des lignes L3, L6, L7 et L8. Ne trouvant aucun curseur dont l'état est différent de celui de la première ligne déclarée valide, c'est-à-dire la ligne L2, on écrit sur la ligne L2. Autre exemple, à l'instant T6, les curseurs des lignes L2 et L3 sont à l'état 0 et les curseurs des lignes L6 à L8 sont à l'état 1. L'état des curseurs 30 des autres lignes, LI, L4 et L5 est indifférent dans la recherche de la ligne la plus ancienne. La détection d'un front dans l'état du curseur se fait sur la ligne L6 qui est la ligne la plus ancienne. A l'instant T7, les curseurs des lignes L2 et L3 sont à l'état 1 et les curseurs des lignes L6 à L8 sont à l'état 0. L'état des curseurs des autres 35 lignes, Li, L4 et L5 est indifférent dans la recherche de la ligne la plus ancienne. La détection d'un front dans l'état du curseur se fait sur la ligne L6 qui est la ligne la plus ancienne. Enfin, à l'instant T8, tous les curseurs des lignes déclarées valides sont à l'état 1 et comme pour l'instant T5, on écrit sur la ligne L2. REVENDICATIONS 1. Procédé de gestion de l'écriture dans une mémoire disposant de plusieurs lignes ordonnées (L1 à L8), l'écriture se faisant sur la ligne la plus ancienne, caractérisé en ce que chaque ligne comporte un curseur ne comprenant qu'un seul bit, en ce que l'état du curseur est inversé à chaque 5 écriture sur la ligne correspondante, en ce que le repérage de la ligne la plus ancienne se fait en lisant dans l'ordre des lignes, le curseur de chaque ligne, la ligne la plus ancienne comportant le premier curseur dont l'état diffère de celui de la première ligne (L1; L2). 2. Procédé selon la revendication 1, caractérisé en ce que si l'état de tous les curseurs est identique, lors de la phase de repérage de la ligne la plus ancienne, l'écriture se fait sur la première ligne (Ll; L2). 3. Procédé selon l'une des revendications précédentes, 15 caractérisé en ce qu'on détermine la validité de chaque ligne (L1 à L8) et on ne lit le curseur que pour des lignes valides (L2, L3, L6, L7, L8). 4. Procédé selon la revendication 3, caractérisé en ce que, lors de l'écriture sur une ligne, on calcule une première somme de tous les bits à 20 écrire sur la ligne, on écrit la première somme dans un emplacement réservé de la ligne, et en ce que, pour déterminer la validité de chaque ligne (L1 à L8), on calcule une seconde somme de tous les bits écrits de la ligne, on compare la seconde somme à celle écrite dans l'emplacement réservé, on déclare valide une ligne pour laquelle le résultat de la comparaison est exact 25 et on déclare invalide une ligne pour laquelle le résultat de la comparaison est faux. 5. Procédé selon l'une des revendications précédentes, caractérisé en ce que la mémoire est de type E.E.P.R.O.M. 30