FR2663136A1 - Device for controlling a buffer memory and method of managing digital data - Google Patents

Device for controlling a buffer memory and method of managing digital data Download PDF

Info

Publication number
FR2663136A1
FR2663136A1 FR9007275A FR9007275A FR2663136A1 FR 2663136 A1 FR2663136 A1 FR 2663136A1 FR 9007275 A FR9007275 A FR 9007275A FR 9007275 A FR9007275 A FR 9007275A FR 2663136 A1 FR2663136 A1 FR 2663136A1
Authority
FR
France
Prior art keywords
memory
inv
index
channel
class
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
Application number
FR9007275A
Other languages
French (fr)
Other versions
FR2663136B1 (en
Inventor
Deville Yannick Societe Civile
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Laboratoires dElectronique Philips SAS
Original Assignee
Laboratoires dElectronique Philips SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Laboratoires dElectronique Philips SAS filed Critical Laboratoires dElectronique Philips SAS
Priority to FR9007275A priority Critical patent/FR2663136B1/en
Publication of FR2663136A1 publication Critical patent/FR2663136A1/en
Application granted granted Critical
Publication of FR2663136B1 publication Critical patent/FR2663136B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Control device for a buffer memory which implements a method of replacing data which are present when the data sought are not found in the buffer memory. The latter is organised into a class of E memory elements shared over E paths and each furnished with a key. The replacing of the data is effected in one of the memory elements selected by a path index C contained in a pointer. When a success is detected, a validation unit (20) compares the path index INV relating to the memory element achieving the success with the said path index C and then loads into the said pointer (40) the value following the path index INV in an ordered sequence of path indices when the path index INV is one of the successors of the path index C in the said sequence, and preserves the path index C in the contrary case. The invention also relates to a method of managing data. The invention applies to computer systems containing a hierarchised memory and/or a virtual memory.

Description

DESCRIPTION "DISPOSITIF DE CONTROLE D'UNE MEMOIRE TAMPON ET METHODE DE
GESTION DE DONNEES NUMERIQUES".
DESCRIPTION "DEVICE FOR CONTROLLING A BUFFER MEMORY AND METHOD OF
DIGITAL DATA MANAGEMENT ".

L'invention concerne un dispositif de contrôle pour une mémoire tampon qui met en oeuvre une méthode de remplacement des données présentes lorsque les données cherchées ne sont pas trouvées dans la mémoire tampon. The invention relates to a control device for a buffer memory that implements a method of replacing the present data when the searched data is not found in the buffer memory.

L'invention concerne également une méthode de gestion de données numériques mise en oeuvre dans une mémoire tampon. The invention also relates to a digital data management method implemented in a buffer memory.

Les méthodes de remplacement s'appliquent plus particulièrement à des systèmes comportant une mémoire hiérarchisée et/ou une mémoire virtuelle. Elles concernent donc en particulier la plupart des ordinateurs. Elles permettent de gérer la mémoire paginée (mémoire centrale), les caches (mémoire cache) et les traducteurs d'adresses (Translation
Lookaside Buffers TLB) de la plupart des ordinateurs.
The replacement methods apply more particularly to systems comprising a hierarchical memory and / or a virtual memory. In particular, they concern most computers. They allow to manage the paged memory (central memory), the caches (cache memory) and the translators of addresses (Translation
Lookaside Buffers TLB) from most computers.

Un système à mémoire hiérarchisée comporte un processeur et un organe de stockage d'informations ayant une grande capacité de stockage appelé mémoire de masse (disques durs, bandes...). Un tel organe de stockage est bien plus lent que le processeur, et il n'est pas possible de concevoir un système basé uniquement sur ces deux éléments. On intercale donc entre le processeur et cet organe de stockage un certain nombre de niveaux de mémoire, ce nombre dépendant de la complexité du système considéré. Plus le niveau de mémoire considéré est proche du processeur plus ce niveau a une vitesse de fonctionnement élevée, mais plus il a une capacité de stockage faible. De ce fait chaque niveau de mémoire ne contient qu'une partie des informations que contient le niveau qui le suit immédiatement du côté de la mémoire de masse.La capacité d'un niveau étant limitée, il s'ensuit que lorsque le processeur délivre une adresse qui est absente de ce niveau, le système de gestion de la mémoire doit chercher l'information dans un niveau amont et la charger dans ledit niveau. Si ledit niveau est plein, le système de gestion de la mémoire doit supprimer l'information qui était présente dans un des éléments-mémoire constitutifs de la mémoire tampon afin d'allouer sa place à la nouvelle information. Il est donc nécessaire de définir une méthode de remplacement qui permette de conserver dans les niveaux proches du processeur les informations les plus utiles. A hierarchical memory system comprises a processor and an information storage member having a large storage capacity called mass storage (hard disks, strips, etc.). Such a storage device is much slower than the processor, and it is not possible to design a system based solely on these two elements. There is therefore inserted between the processor and this storage device a certain number of memory levels, this number depending on the complexity of the system considered. The closer the memory level is to the processor, the higher the operating speed, but the lower the storage capacity. As a result, each level of memory contains only part of the information contained in the immediately following level on the mass memory side. The capacity of a level being limited, it follows that when the processor delivers a address that is absent from this level, the memory management system must seek the information in an upstream level and load it in said level. If said level is full, the memory management system must delete the information that was present in one of the constituent elements of the buffer memory in order to allocate its place to the new information. It is therefore necessary to define a replacement method that keeps the most useful information in the levels close to the processor.

Lorsqu'il est nécessaire d'aller la chercher très en amont dans le système hiérarchisé, il y a une perte considérable de temps.When it is necessary to look for it very early in the hierarchical system, there is a considerable loss of time.

Un problème de remplacement similaire se pose dans les systèmes à mémoire virtuelle. Pour éviter de traduire à chaque accès le numéro de page virtuelle en numéro de page physique, on conserve dans un petit registre tampon appelé traducteur d'adresses (Translation Lookaside Buffers TLB) quelques couples "page virtuelle, page physique" qui ont été utilisés. Quand une nouvelle page est adressée il faut choisir le couple à supprimer du traducteur d'adresses. A similar replacement problem arises in virtual memory systems. To avoid translating the virtual page number to the physical page number at each access, a few "virtual page, physical page" pairs that have been used are kept in a small buffer register called Translation Lookaside Buffers TLB. When a new page is addressed you have to choose the couple to delete from the address translator.

Différents algorithmes de remplacement ont été proposés notamment ceux décrits dans "Cache memories,
A.J. SMITH, Computing Surveys, vol.14, n"3, 1982".
Various alternative algorithms have been proposed including those described in "Cache memories,
AJ Smith, Computing Surveys, vol. 14, No. 3, 1982 ".

Les trois algorithmes les plus classiques sont
LRU (Least Recently Used en langue anglaise) cet algorithme consiste à remplacer l'élément qui est resté inutilisé le plus longtemps.
The three most classic algorithms are
LRU (Least Recently Used in English) this algorithm is to replace the item that has been unused for the longest time.

FIFO (First In First Out) :cet algorithme consiste à remplacer l'élément qui est présent depuis le plus longtemps. FIFO (First In First Out): this algorithm is to replace the element that is present since the longest.

Random : cet algorithme remplace un élément au hasard. Random: This algorithm replaces a random element.

Il est possible de comparer les algorithmes entre eux en déterminant un taux d'échec c'est-à-dire le taux d'adresses appelées par le processeur qui ne sont pas trouvées dans la mémoire considérée et qu'il faut donc aller chercher dans une mémoire placée en amont. It is possible to compare the algorithms between them by determining a failure rate that is to say the rate of addresses called by the processor that are not found in the memory considered and that must therefore be sought in a memory placed upstream.

Dans la plupart des cas l'algorithme LRU donne les meilleures performances. En effet la plupart des programmes tendent à ne pas réutiliser des adresses (donc des éléments-mémoire) qui n'ont pas été utilisés depuis longtemps. In most cases the LRU algorithm gives the best performance. Indeed most programs tend not to reuse addresses (so memory-elements) that have not been used for a long time.

L'algorithme LRU se caractérise par
- de bonnes performances qui sont obtenues en mémorisant avec précision l'ordre dans lequel les éléments de la mémoire tampon sont utilisés. Cette mémorisation est faite à l'aide de bits de remplacement;
- une mise en oeuvre complexe et coûteuse : il faut E bits de remplacement par élément, soit E2 bits de remplacement par classe, une classe étant formée par E éléments-mémoire répartis sur E voies. A ceci s'ajoute de la circuiterie logique.
The LRU algorithm is characterized by
- good performance that is obtained by accurately storing the order in which the elements of the buffer are used. This storage is done using replacement bits;
a complex and costly implementation: E replacement bits per element are required, ie E2 replacement bits per class, a class being formed by E memory elements distributed over E channels. Added to this is logical circuitry.

L'algorithme FIFO se caractérise par
- de moins bonnes performances que LRU. Ceci est dû en partie au fait que FIFO choisit l'élément à remplacer sans tenir compte de l'ordre dans lequel les éléments de sa classe sont réutilisés après chargement d'une nouvelle clé;
- une mise en oeuvre assez simple, basée essentiellement sur l'utilisation d'un compteur par classe. Chaque compteur peut prendre les valeurs O à (E-l) et possède donc log#E bits.
The FIFO algorithm is characterized by
- poorer performance than LRU. This is due in part to the fact that FIFO selects the element to be replaced regardless of the order in which elements of its class are reused after loading a new key;
- a fairly simple implementation, based essentially on the use of a meter per class. Each counter can take the values O to (E1) and therefore has log # E bits.

L'algorithme Random a des performances voisines de celles de l'algorithme FIFO. The Random algorithm has performances close to those of the FIFO algorithm.

Les situations où des difficultés d'exploitation de ces méthodes classiques apparaissent sont multiples
- soit qu'il n'est pas aisé de concevoir des circuits compacts les mettant en oeuvre,
- soit que l'exploitation de la totalité de la mémoire soit mal réalisée,
- soit que la mémoire possède un nombre élevé d'éléments E par classe.
Situations where difficulties of exploitation of these classical methods appear are multiple
or that it is not easy to design compact circuits implementing them,
either the exploitation of the entire memory is poorly performed,
or that the memory has a high number of elements E per class.

Généralement plusieurs de ces difficultés apparaissent simultanément. Generally many of these difficulties occur simultaneously.

Le remplacement des données dans une mémoire-tampon est généralement réalisé soit par l'algorithme LRU qui est performant mais assez complexe à mettre en oeuvre et nécessite un matériel important, soit par l'algorithttte FIFO qui ne nécessite qu'un matériel réduit mais au prix de performances assez restreintes
Le problème posé consiste à déterminer une méthode de remplacement et un dispositif de contrôle la mettant en oeuvre qui permettent d'atteindre de bonnes performances avec un matériel raisonnablement limité donc d'un coût réduit. Il s'agit en quelque sorte de déterminer une situation de compromis entre les deux algorithmes LRU et FIFO.
The replacement of the data in a buffer memory is generally performed either by the LRU algorithm which is efficient but rather complex to implement and requires a large amount of hardware, or by the FIFO algorithm which requires only a reduced hardware but rather low performance prices
The problem is to determine a replacement method and a control device implementing it that allow to achieve good performance with a reasonably limited equipment and therefore a reduced cost. It is a question of determining a compromise situation between the two LRU and FIFO algorithms.

La solution à ce problème posé consiste en un dispositif de contrôle pour une mémoire tampon qui est organisée selon au moins une classe de E éléments-mémoire répartis sur E voies et munis chacun d'une clé, le dispositif de contrôle comprenant des moyens pour comparer, pour une classe courante adressée, une clé d'adresse courante avec des clés stockées et pour détecter ainsi des situations de succès/ échec, et lorsqu'une clé d'adresse courante n'est pas trouvée (échec) dans la mémoire tampon, le dispositif met en oeuvre un remplacement des données contenues dans un des éléments-mémoire de la classe courante adressée qui est sélectionné par un indice de voie C contenu dans un pointeur qui est mis à jour à la fin du remplacement caractérisé en ce que lorsque lesdits moyens détectent un succès, le dispositif de contrôle détermine l'indice de voie INV relatif à l'élément-mémoire adressé, un organe de validation comparant l'indice de voie INV avec ledit indice de voie C puis chargeant dans ledit pointeur la valeur consécutive à l'indice de voie INV dans une suite ordonnée d'indices de voies lorsque l'indice de voie INV est un des successeurs de l'indice de voie C dans ladite suite, et conservant l'indice de voie C dans le cas inverse. The solution to this problem consists in a control device for a buffer memory which is organized according to at least one class of E memory elements distributed on E channels and each provided with a key, the control device comprising means for comparing for a current addressed class, a current address key with stored keys and thus to detect success / failure situations, and when a current address key is not found (failed) in the buffer, the device implements a replacement of the data contained in one of the memory elements of the current class addressed which is selected by a channel index C contained in a pointer which is updated at the end of the replacement characterized in that when said means detect a success, the control device determines the INV channel index relating to the addressed memory element, a validation member comparing the INV channel index with said track index C then loading in said pointer the value consecutive to the track index INV in an ordered sequence of track indices when the track index INV is one of the successors of the track index C in said sequence , and keeping the track index C in the opposite case.

Il peut s'agir également d'une méthode de gestion de données dans une mémoire tampon organisée selon au moins une classe de E éléments-mémoire répartis sur E voies et munis chacun d'une clé, la méthode opérant une comparaison, pour une classe courante adressée, d'une clé d'adresse courante avec des clés stockées et détectant des situations de succès/échec, et lorsqu'une clé d'adresse courante n'est pas trouvée (échec) dans la mémoire tampon, la méthode met en oeuvre un remplacement des données contenues dans un des éléments-mémoire de la classe courante adressée qui est sélectionné par un indice de voie C contenu dans un pointeur qui est mis à jour à l'issue du remplacement caractérisée en ce que lorsqu'un succès est détecté, la méthode comprend les étapes suivantes
- détermination de l'indice de voie INV relatif à l'élé- ment-mémoire adressé,
- comparaison de l'indice de voie INV avec ledit indice de voie C contenu dans le pointeur,
- chargement dans le pointeur de la valeur consécutive à l'indice de voie INV dans une suite ordonnée d'indices de voies lorsque l'indice de voie INV est un des successeurs de l'indice de voie C dans ladite suite et conservation de l'indice de voie C dans le cas inverse.
It can also be a method of managing data in a buffer memory organized according to at least one class of E memory elements distributed on E channels and each provided with a key, the method operating a comparison, for a class current address key with stored keys and detecting success / failure situations, and when a current address key is not found (failed) in the buffer, the method implements performs a replacement of the data contained in one of the memory elements of the current class addressed which is selected by a channel index C contained in a pointer which is updated at the end of the replacement characterized in that when a success is detected, the method includes the following steps
determination of the INV channel index relating to the addressed memory element,
comparing the INV channel index with said channel index C contained in the pointer,
- loading in the pointer of the value following the INV channel index in an ordered sequence of channel indices when the channel index INV is one of the successors of the track index C in said sequence and conservation of the C track index in the opposite case.

Ainsi avantageusement on obtient selon l'inven- tion des performances assez voisines de celles obtenues par l'algorithme LRU tout en ayant une complexité de mise en oeuvre qui soit assez proche de l'algorithme FIFO. Comme pour LRU et FIFO l'invention permet de garantir que tous les élémentsmémoire d'une même classe ont déjà été remplis avant de commencer le remplacement. Thus advantageously, according to the invention, performances are obtained that are fairly close to those obtained by the LRU algorithm while having an implementation complexity that is quite close to the FIFO algorithm. As for LRU and FIFO the invention makes it possible to guarantee that all the memory elements of the same class have already been filled before starting the replacement.

En effet l'ordre dans lequel les éléments-mémoire ont été utilisés est pris en compte mais d'une manière telle que le matériel nécessaire est réduit. En effet le nombre de bits de remplacement nécessaires pour définir une classe de E éléments-mémoire est égal à E2 bits pour LRU (E bits par élément) et à log#E pour FIFO et pour la méthode selon l'invention. Cette situation est particulièrement avantageuse lorsque le nombre d'éléments-mémoire est moyennement élevé par exemple 4 ou 8. Néanmoins lorsque le nombre d'éléments-mémoire croît la complexité du dispositif selon l'invention reste raisonnable, comparée à celle relative à l'algorithme LRU qui nécessite de prendre en compte E2 bits ce qui devient rapidement inacceptable quand E croît. Indeed the order in which the memory elements have been used is taken into account but in such a way that the necessary hardware is reduced. Indeed, the number of replacement bits necessary to define a class of E memory elements is equal to E2 bits for LRU (E bits per element) and log # E for FIFO and for the method according to the invention. This situation is particularly advantageous when the number of memory elements is moderately high, for example 4 or 8. Nevertheless, when the number of memory elements increases the complexity of the device according to the invention remains reasonable, compared to that relating to the LRU algorithm that requires taking into account E2 bits which quickly becomes unacceptable when E grows.

L'invention sera mieux comprise à l'aide des figures suivantes données à titre d'exemples non limitatifs qui représentent
- figure 1 : un schéma général simplifié d'une mémoire tampon limitée à deux voies Vo, V1 et à quatre classes Ko à K3.
The invention will be better understood with the aid of the following figures given as non-limiting examples which represent
- Figure 1: a simplified general scheme of a buffer limited to two channels Vo, V1 and four classes KB to K3.

- figure 2 : un dispositif de contrôle selon l'invention coopérant avec des éléments-mémoire d'une mémoire tampon. FIG. 2: a control device according to the invention cooperating with memory elements of a buffer memory.

- figure 3 : un organigramme de la méthode de gestion selon l'invention. FIG. 3: a flowchart of the management method according to the invention.

La figure I représente un exemple simplifié, mais non limitatif, d'une mémoire tampon selon l'invention. Elle comprend deux voies Vo, Vr renfermant chacune 4 classes Ko,
K1, K2, K3 d'éléments-mémoire. Une classe contient un élémentmémoire par voie c'est-à-dire 2 selon l'exemple présenté. La voie Vo contient les éléments-mémoire 500, 510r 520, 530. La voie V1 contient les éléments-mémoire SOi, 511, 521, 531. La classe Ko contient les éléments-mémoire 500, 501.
FIG. 1 represents a simplified, but nonlimiting, example of a buffer memory according to the invention. It comprises two Vo, Vr channels each containing 4 KB classes,
K1, K2, K3 of memory elements. A class contains a memory element by way, that is to say 2 according to the example presented. The Vo channel contains the memory elements 500, 510r 520, 530. The channel V1 contains the memory elements SOi, 511, 521, 531. The class KB contains the memory elements 500, 501.

Chaque élément-mémoire par exemple 500 comprend plusieurs positions de stockage pour
- un bit de présence P,
- une clé stockée CS,
- un bloc de données BL, qui contient les informations de l'élément, c'est-à-dire des mots ayant des adresses consécutives.
Each memory element, for example 500, comprises several storage positions for
a presence bit P,
a stored key CS,
a block of data BL, which contains the information of the element, that is to say words having consecutive addresses.

Les données sont délivrées par un bus de données 5D qui délivre les champs de données BL. The data is delivered by a data bus 5D which delivers the data fields BL.

Les adresses sont délivrées par un bus d'adresses
SA qui délivre trois champs
- un champ de clés d'adresses d'entrée CE,
- un champ de classes d'adresses d'entrée K,
- un champ d'indice de mot IM qui permet de distinguer les mots contenus dans un champ de données BL.
The addresses are delivered by an address bus
SA which delivers three fields
an EC input address key field,
an input address class field K,
an IM index field which makes it possible to distinguish the words contained in a data field BL.

Le champ IM et le bit de présence P peuvent ne pas exister. Lorsque le bit de présence P n'existe pas, une autre solution consiste à avoir un drapeau associé à chaque classe. The IM field and the presence bit P may not exist. When the presence bit P does not exist, another solution is to have a flag associated with each class.

Le processeur (non représenté) qui coopère avec la mémoire tampon fournit une adresse sur le bus 5A. Selon l'opération en cours ce processeur peut soit délivrer soit recevoir un mot de données sur le bus 5D. A partir de l'adresse, le décodeur 55 extrait l'indice de classe de l'adresse d'entrée et sélectionne la classe correspondante. Les éléments-mémoire de cette classe sont alors activés. Lorsque par exemple la classe Ko est sélectionnée, les éléments-mémoire 500 et 501 sont activés. Ils transmettent alors leur bit de présence P (s'il existe) et leur clé stockée CS au dispositif de contrôle 10 qui reçoit par ailleurs la clé d'entrée CE de l'adresse d'entrée. Sur le schéma de la figure 1 on a représenté un seul dispositif de contrôle 10 pour l'ensemble de la mémoire tampon, Ceci a l'avantage de minimiser la complexité des moyens matériels.Il est également possible d'utiliser un dispositif de contrôle pour une ou plusieurs classes ce qui présente l'avantage d'une rapidité d'exécution accrue. The processor (not shown) that cooperates with the buffer provides an address on the bus 5A. Depending on the operation in progress, this processor can either deliver or receive a data word on the 5D bus. From the address, the decoder 55 extracts the class index of the input address and selects the corresponding class. The memory elements of this class are then activated. When for example the class KB is selected, the memory elements 500 and 501 are activated. They then transmit their presence bit P (if it exists) and their stored key CS to the control device 10 which also receives the input key CE from the input address. In the diagram of Figure 1 there is shown a single control device 10 for the entire buffer, This has the advantage of minimizing the complexity of the material means. It is also possible to use a control device for one or more classes which has the advantage of an increased speed of execution.

Des pointeurs 40, 41, 42, 43 relatifs à chaque classe contiennent chacun un indice de voie qui permet à l'aide d'un décodeur 56 de sélectionner l'élément-mémoire dans lequel doit s'opérer l'opération de remplacement si la recherche de l'adresse donne lieu à un échec. Le remplacement consiste à écrire le champ de données BL avec sa clé CS et son bit de présence P (s'il existe). Si la recherche de l'adresse donne lieu à un succès, l'opération consiste alors à opérer une lecture ou écriture des données BL dans l'élément-mémoire réalisant le succès et à mettre à jour le pointeur de la classe sélectionnée. La figure 2 représente un dispositif de contrôle 10 qui est affecté à une seule classe Ko relative aux éléments-mémoire 500 501, 502, 503 qui reçoivent leur champ d'adresses du bus SA. Pour simplifier le dessin le décodeur 56 n'est pas représenté. Chaque élément-mémoire transmet sa clé stockée CS à l'un des comparateurs 12o, 121, 122, 123 qui re çoivent tous la clé CE de l'adresse d'entrée et qui opèrent la comparaison sous le contrôle des bits de présence respectifs
Po à P3.
Pointers 40, 41, 42, 43 relating to each class each contain a channel index which allows using a decoder 56 to select the memory element in which the replacement operation must take place if the search for the address gives rise to a failure. The replacement consists in writing the data field BL with its key CS and its presence bit P (if it exists). If the search for the address gives rise to a success, the operation is then to read or write the BL data in the element-memory achieving success and update the pointer of the selected class. FIG. 2 shows a control device 10 which is assigned to a single class KB relating to the memory elements 500 501, 502, 503 which receive their address field of the bus SA. To simplify the drawing the decoder 56 is not shown. Each memory element transmits its stored key CS to one of the comparators 12o, 121, 122, 123 which all receive the key CE of the input address and which perform the comparison under the control of the respective presence bits
Po to P3.

En cas d'échec, tous les comparateurs ont leur sortie à l'état inactif (SVo à SV3). Dans ce cas une validation formée par exemple des portes logiques NON-OU16 et ET17 permet de charger dans le pointeur un indice de voie C qui peut par exemple être lu dans une table 152, par exemple une mémoire. Cet indice de voie C ainsi chargé est destiné lors du premier remplacement ultérieur à déterminer la voie dans laquelle doit s'effectuer le remplacement suivant. In case of failure, all the comparators have their output in the idle state (SVo to SV3). In this case, a validation formed, for example, of the logic gates NON-OR16 and ET17 makes it possible to load in the pointer a channel index C which can for example be read in a table 152, for example a memory. This track index C thus loaded is intended for the first subsequent replacement to determine the route in which the next replacement must take place.

L'indice de voie C peut également être obtenu par incrémentation ou décrémentation de l'indice de voie précédent.The track index C can also be obtained by incrementing or decrementing the previous track index.

En cas de succès, un des comparateurs a sa sortie à l'état actif. Un sélecteur 13 détermine l'indice de voie INV de l'élément réalisant le succès. Le sélecteur agit sur un organe de validation 20 qui met à jour le pointeur 40. If successful, one of the comparators has its output in the active state. A selector 13 determines the channel index INV of the success element. The selector acts on a validation member 20 which updates the pointer 40.

L'organe de validation 20 comprend un comparateur 14 qui compare cet indice de voie INV avec l'indice de voie C contenu dans le pointeur
- lorsque l'indice de voie INV est un des successeurs de l'indice de voie C dans une suite ordonnée d'indices, alors la valeur consécutive à l'indice de voie INV est substituée à l'indice de voie C dans le pointeur (porte logique ET18).
The validation member 20 comprises a comparator 14 which compares this track index INV with the track index C contained in the pointer
when the channel index INV is one of the successors of the channel index C in an ordered sequence of indices, then the value subsequent to the channel index INV is substituted for the channel index C in the pointer (logical gate ET18).

Cette valeur consécutive est par exemple lue dans une table par exemple stockée dans une mémoire 151.This consecutive value is for example read in a table for example stored in a memory 151.

- lorsque l'indice de voie INV est un prédécesseur de l'indice de voie C dans ladite suite ordonnée d'indices, l'indice de voie C est conservé dans le pointeur. when the channel index INV is a predecessor of the channel index C in the said sequence of indices, the channel index C is kept in the pointer.

Ceci permet de tenir compte de l'ordre dans lequel les éléments-mémoire de la classe ont été utilisés en se déplaçant selon un sens unique dans la suite ordonnée d'indices. Ceci permet de ne pas sélectionner systématiquement l'élément-mémoire suivant comme dans FIFO où cela s'avère peu performant. This makes it possible to take into account the order in which the memory elements of the class have been used by moving in a single direction in the ordered sequence of indices. This makes it possible not to systematically select the next memory element as in FIFO where it proves to be inefficient.

De même ceci permet de ne pas mettre en oeuvre une procédure et une architecture lourdes pour déterminer l'élément-mémoire utilisé le moins récemment comme dans LRU. Similarly, this makes it possible not to implement a heavy procedure and architecture to determine the least recently used memory element as in LRU.

Les performances atteintes par l'invention se situent pratiquement au niveau de celles atteintes par LRU tout en gardant une complexité d'architecture réduite proche de FIFO.The performances achieved by the invention are practically at the level of those achieved by LRU while keeping a reduced complexity of architecture close to FIFO.

Ainsi avantageusement selon l'invention il n'y a qu'un pointeur (40-43) par classe (figure 1) qui peut contenir des valeurs allant de O à (E-1) soit log2E bits. Chaque pointeur opère modulo E. Thus advantageously according to the invention there is only one pointer (40-43) per class (FIG. 1) which can contain values ranging from 0 to (E-1) or log2E bits. Each pointer operates modulo E.

Les suites formant les tables 151, 152 peuvent être stockées dans une ou plusieurs mémoires. Lorsque les suites ordonnées sont distinctes elles doivent être coordonnées. The sequences forming the tables 151, 152 can be stored in one or more memories. When ordered sequences are distinct they must be coordinated.

Ainsi l'une peut être une suite de chiffres pairs et l'autre une suite-de chiffres impairs. Toute autre manière de coordonner les deux suites est possible. Préférentiellement il peut s'agir d'une suite unique par exemple celle formée d'une suite d'entiers qui peuvent se suivre par incrémentation ou décrémentation opérées par au moins respectivement un incrémenteur ou un décrémenteur qui se substituent alors aux tables 151, 152. Ceci conduit à une plus grande rapidité d'exécution et à une plus grande simplicité de mise en oeuvre.Thus one can be a sequence of even numbers and the other a series of odd numbers. Any other way of coordinating the two suites is possible. Preferably, it may be a single sequence, for example that consisting of a sequence of integers that can be incremented or decremented by at least one incrementer or a decrementor respectively, which then replace the tables 151, 152. This leads to greater speed of execution and greater simplicity of implementation.

L'invention concerne également une méthode de gestion de données dans une mémoire tampon pour opérer le remplacement desdites données. L'organigramme de cette méthode est représenté sur la figure 3. The invention also relates to a method of managing data in a buffer memory to perform the replacement of said data. The flow diagram of this method is shown in Figure 3.

Dans une étape d'initialisation 71, pour chaque classe, le pointeur C et les E bits de présence P (un par élément) sont remis à 0. In an initialization step 71, for each class, the pointer C and the E presence bits P (one per element) are reset to 0.

Etape 72 : introduction de l'adresse d'entrée
Etape 73 : sélection de la classe et détermination de la clé de l'adresse d'entrée
Etape 74 : recherche d'un succès pour cette adresse : existet-il un élément de la classe qui
1) a sa clé stockée CS égale à la clé d'entrée CE et
2) a son bit de présence P à 1 (s'il existe).
Step 72: Entering the entry address
Step 73: Select the class and determine the key of the input address
Step 74: Search for success for this address: Is there any element of the class that
1) has its stored key CS equal to the EC entry key and
2) has its presence bit P to 1 (if it exists).

. il y a succès (branche 100) il y a sélection (étape 75) de l'élément-mémoire qui vérifie les conditions de succès indiquées ci-dessus, puis lecture ou écriture (étape 76) de la donnée, selon l'opération à effectuer; . s il y a échec sur tous les éléments de la classe, il faut opérer une procédure de remplacement (branche 101). L'élément sélectionné est celui qui a pour indice de voie la valeur contenue dans le pointeur C (étape 80).  . there is success (branch 100) there is selection (step 75) of the memory element which verifies the success conditions indicated above, then reading or writing (step 76) of the data, depending on the operation to carry out; . if there is a failure on all the elements of the class, it is necessary to operate a procedure of replacement (branch 101). The selected element is the one whose path index is the value contained in the pointer C (step 80).

Il y a écriture de la clé et des données relatives à l'adresse d'entrée dans cet élément sélectionné (étape 81). Enfin, le bit de présence de cet élément est mis à 1 (étape 82). There is writing of the key and data relating to the input address in this selected element (step 81). Finally, the presence bit of this element is set to 1 (step 82).

Les indices de voies INV peuvent prendre des valeurs de O à E-i. En cas de succès la méthode prend en compte l'indice de voie INV de l'élément-mémoire qui a été sélectionné. Ainsi après l'étape 76 la valeur de l'indice INV est comparée à l'indice de voie C du pointeur (étape 77). The INV channel indices may take values from 0 to E-i. If successful, the method takes into account the channel index INV of the memory element that has been selected. Thus after step 76 the value of the index INV is compared with the track index C of the pointer (step 77).

- Lorsque INV est l'un des successeurs de C, le pointeur est chargé par la valeur SUC (INV) qui est la valeur consécutive à INV dans la suite ordonnée d'indices (étape 78);
- Sinon on ne change pas le contenu du pointeur et on passe à l'adresse d'entrée suivante.
When INV is one of the successors of C, the pointer is loaded by the value SUC (INV) which is the value consecutive to INV in the ordered sequence of indices (step 78);
- Otherwise we do not change the contents of the pointer and we go to the next input address.

En cas d'échec lorsque l'opération de remplacement a été opérée avec l'indice de voie C contenu dans le pointeur, cet indice de voie C est remplacé par SUC(C) qui est la valeur consécutive à C dans la suite ordonnée d'indices (étape 83). L'étape 84 constitue un test pour déterminer si le dernier indice de voie de la suite a à être dépassé auquel cas la méthode reboucle sur le premier indice de voie de la suite (étape 85). In the event of failure when the replacement operation has been performed with the channel index C contained in the pointer, this channel index C is replaced by SUC (C) which is the value consecutive to C in the ordered sequence d indices (step 83). Step 84 is a test to determine if the last path index of the sequence has to be exceeded in which case the method loops back to the first path index of the sequence (step 85).

La méthode selon l'invention présente un nombre réduit d'étapes et se prête bien pour être réalisée par logiciel. L'invention peut alors concerner un calculateur qui est agencé pour mettre en oeuvre la méthode de gestion de données. The method according to the invention has a reduced number of steps and is well suited to be carried out by software. The invention may then relate to a computer that is arranged to implement the data management method.

A titre d'exemple le tableau I donne une comparaison des performances obtenues par l'invention et par les algorithmes LRU et FIFO. Dans cet exemple le nombre d'éléments-mémoire par classe est égal à 4 (E=4) et la taille T de la mémoire tampon est variable. Les valeurs du tableau I concernent les pourcentages de recherche d'adresses qui conduisent à un échec. On observe que quelle que soit la taille T de la mémoire tampon, la méthode selon l'invention délivre des résultats meilleurs qu'avec FIFO. Dans certaines situations la comparaison avec l'algorithme LRU est à l'avantage de la méthode selon l'invention.

Figure img00110001
By way of example, Table I gives a comparison of the performances obtained by the invention and by the LRU and FIFO algorithms. In this example, the number of memory elements per class is equal to 4 (E = 4) and the size T of the buffer memory is variable. The values in Table I relate to address search percentages that lead to failure. It is observed that whatever the size T of the buffer memory, the method according to the invention delivers better results than with FIFO. In some situations the comparison with the LRU algorithm is to the advantage of the method according to the invention.
Figure img00110001

<tb><Tb>

T <SEP> (octets) <SEP> 256 <SEP> 512 <SEP> 1024 <SEP> 2048 <SEP> 4096 <SEP> 8192 <SEP> 16384
<tb> LRU <SEP> 24,33 <SEP> 19,80 <SEP> 13,03 <SEP> 6,14 <SEP> 1,85 <SEP> 1,18 <SEP> 0,88
<tb> FIFO <SEP> 26,01 <SEP> 20,87 <SEP> 14,06 <SEP> 7,15 <SEP> 2,57 <SEP> 1,44 <SEP> 0,96
<tb> Invention <SEP> 25,27 <SEP> 19,81 <SEP> 12,76 <SEP> 5,97 <SEP> 2,22 <SEP> 1,30 <SEP> 0,96
<tb>
TABLEAU I
Un dispositif de contrôle conforme à l'invention peut présenter l'avantage d'opérer également selon l'algorithme FIFO lors de certaines séquences d'adresses qui ne seraient pas favorables à la méthode présentée conduisant ainsi à un taux d'échec plus élevé. Dans ces situations, il est possible de neutraliser la mise à jour des pointeurs en cas de succès et d'opérer selon l'autre mode. Cette double possibilité, qui ne nécessite aucun moyen matériel supplémentaire, donne audit dispositif de contrôle une grande souplesse d'utilisation.
T <SEP> (bytes) <SEP> 256 <SEP> 512 <SEP> 1024 <SEP> 2048 <SEP> 4096 <SEP> 8192 <SEQ> 16384
<tb> LRU <SEP> 24.33 <SEP> 19.80 <SEP> 13.03 <SEP> 6.14 <SEP> 1.85 <SEP> 1.18 <SEP> 0.88
<tb> FIFO <SEP> 26.01 <SEP> 20.87 <SEP> 14.06 <SEP> 7.15 <SEP> 2.57 <SEP> 1.44 <SEP> 0.96
<tb> Invention <SEP> 25.27 <SEP> 19.81 <SEP> 12.76 <SEP> 5.97 <SEP> 2.22 <SE> 1.30 <SEP> 0.96
<Tb>
TABLE I
A control device according to the invention may have the advantage of operating also according to the FIFO algorithm during certain address sequences that would not be favorable to the method presented thus leading to a higher failure rate. In these situations, it is possible to disable the updating of the pointers on success and to operate in the other mode. This dual possibility, which does not require any additional hardware, gives the control device a great flexibility of use.

Claims (9)

REVENDICATIONS 1. Dispositif de contrôle pour une mémoire tampon qui est organisée selon au moins une classe de E éléments-mémoire l500 à 503) répartis sur E voies et munis chacun d'une clé, le dispositif de contrôle comprenant des moyens (120 à 123) pour comparer, pour une classe courante adressée, une clé d'adresse courante avec des clés stockées et pour détecter ainsi des situations de succès/échec, et lorsqu'une clé d'adresse courante n'est pas trouvée (échec) dans la mémoire tampon, le dispositif (10) met en oeuvre un remplacement des données contenues dans un des éléments-mémoire de la classe courante adressée qui est sélectionné par un indice de voie C contenu dans un pointeur qui est mis à jour à la fin du remplacement caractérisé en ce que lorsque lesdits moyens (120 à 123) détectent un succès, le dispositif de contrôle (10) détermine l'indice de voie INV relatif à l'élément-mémoire réalisant le succès, un organe de validation (20) comparant l'indice de voie INV avec ledit indice de voie C puis chargeant dans ledit pointeur (40) la valeur consécutive à l'indice de voie INV dans une suite ordonnée d'indices de voies lorsque l'indice de voie INV est un des successeurs de l'indice de voie C dans ladite suite, et conservant l'indice de voie C dans le cas inverse.1. Control device for a buffer memory which is organized according to at least one class of E memory elements l500 to 503) distributed over E channels and each provided with a key, the control device comprising means (120 to 123) to compare, for a current addressed class, a current address key with stored keys and thus to detect success / failure situations, and when a current address key is not found (failed) in the memory buffer, the device (10) implements a replacement of the data contained in one of the memory elements of the current class addressed which is selected by a channel index C contained in a pointer which is updated at the end of the replacement characterized in that when said means (120 to 123) detect a success, the control device (10) determines the track index INV relative to the memory element achieving success, a validation member (20) comparing the indi it of the INV channel with said channel index C and then loading in said pointer (40) the value consecutive to the channel index INV in an ordered sequence of channel indices when the channel index INV is one of the successors of the channel. channel index C in said sequence, and retaining the channel index C in the opposite case. 2. Dispositif selon la revendication 1 caractérisé en ce que, un organe de validation (20) est attribué à chaque classe d'éléments-mémoire.2. Device according to claim 1 characterized in that a validation member (20) is assigned to each class of memory elements. 3. Dispositif selon la revendication 1 caractérisé en ce que, un organe de validation (20) unique est attribué à tous les éléments-mémoire.3. Device according to claim 1 characterized in that a unique validation member (20) is assigned to all the memory elements. 4. Dispositif selon une des revendications 1 à 3 caractérisé en ce que, à la fin d'un remplacement, l'indice de voie C mis à jour dans le pointeur est pris dans une autre suite ordonnée d'indices coordonnée avec ladite suite.4. Device according to one of claims 1 to 3 characterized in that, at the end of a replacement, the track index C updated in the pointer is taken in another ordered sequence of indices coordinated with said sequence. 5. Dispositif selon une des revendications I à 4 caractérisé en ce qu'au moins une desdites suites d'indices est stockée dans une mémoire. 5. Device according to one of claims I to 4 characterized in that at least one of said series of indices is stored in a memory. 6. Dispositif selon une des revendications 1 à 4 caractérisé en ce que les suites ordonnées d'indices se succèdent par incrémentation ou décrémentation opérées par au moins respectivement un incrémenteur ou un décrémenteur.6. Device according to one of claims 1 to 4 characterized in that the ordered sequences of indexes follow each other by incrementation or decrementation operated by at least one incrementer or a decrementor respectively. 7. Méthode de gestion de données dans une mémoire tampon organisée selon au moins une classe de E éléments-mémoire (SOn à 503) répartis sur E voies et munis chacun d'une clé, la méthode opérant une comparaison (120 à 123), pour une classe courante adressée, d'une clé d'adresse courante avec des clés stockées et détectant des situations de succès/échec, et lorsqu'une clé d'adresse courante n'est pas trouvée (échec) dans la mémoire tampon, la méthode met en oeuvre un remplacement des données contenues dans un des éléments-mémoire de la classe courante adressée qui est sélectionné par un indice de voie C contenu dans un pointeur (40) qui est mis à jour à l'issue du remplacement caractérisée en ce que lorsqu'un succès est détecté, la méthode comprend les étapes suivantes7. Method of managing data in an organized buffer memory according to at least one class of E memory elements (SOn to 503) distributed over E channels and each provided with a key, the method making a comparison (120 to 123), for a current addressed class, a current address key with stored keys and detecting success / failure situations, and when a current address key is not found (failed) in the buffer, the method implements a replacement of the data contained in one of the memory elements of the current class addressed which is selected by a channel index C contained in a pointer (40) which is updated at the end of the replacement characterized in that that when a success is detected, the method includes the following steps - détermination (13) de l'indice de voie INV relatif à l'élément-mémoire adressé, determination (13) of the INV channel index relating to the addressed memory element, - comparaison (14) de l'indice de voie INV avec ledit indice de voie C contenu dans le pointeur, comparing (14) the INV channel index with said channel index C contained in the pointer, - chargement (151,18) dans le pointeur (40) de la valeur consécutive à l'indice de voie INV dans une suite ordonnée d'indices de voies lorsque l'indice de voie INV est un des successeurs de l'indice de voie C dans ladite suite et conservation de l'indice de voie C dans le cas inverse. - loading (151,18) in the pointer (40) of the value subsequent to the channel index INV in an ordered sequence of channel indices when the channel index INV is one of the successors of the channel index C in said sequence and conservation of the track index C in the opposite case. 8. Méthode selon la revendication 7 caractérisée en ce que, la détermination des indices de voie dans ladite suite s'opère par au moins une incrémentation ou une décrémentation. 8. Method according to claim 7 characterized in that the determination of the channel indices in said sequence is effected by at least one incrementation or decrementation. 9. Calculateur caractérisé en ce qu'il est agencé pour mettre en oeuvre la méthode de gestion de données dans une mémoire-tampon selon une des revendications 7 ou 8. 9. Computer characterized in that it is arranged to implement the method of data management in a buffer memory according to one of claims 7 or 8.
FR9007275A 1990-06-12 1990-06-12 DEVICE FOR CONTROLLING A BUFFER MEMORY AND METHOD FOR MANAGING DIGITAL DATA. Expired - Lifetime FR2663136B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9007275A FR2663136B1 (en) 1990-06-12 1990-06-12 DEVICE FOR CONTROLLING A BUFFER MEMORY AND METHOD FOR MANAGING DIGITAL DATA.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9007275A FR2663136B1 (en) 1990-06-12 1990-06-12 DEVICE FOR CONTROLLING A BUFFER MEMORY AND METHOD FOR MANAGING DIGITAL DATA.

Publications (2)

Publication Number Publication Date
FR2663136A1 true FR2663136A1 (en) 1991-12-13
FR2663136B1 FR2663136B1 (en) 1992-09-11

Family

ID=9397500

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9007275A Expired - Lifetime FR2663136B1 (en) 1990-06-12 1990-06-12 DEVICE FOR CONTROLLING A BUFFER MEMORY AND METHOD FOR MANAGING DIGITAL DATA.

Country Status (1)

Country Link
FR (1) FR2663136B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3840862A (en) * 1973-09-27 1974-10-08 Honeywell Inf Systems Status indicator apparatus for tag directory in associative stores
GB2214669A (en) * 1988-01-30 1989-09-06 Int Computers Ltd Cache memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3840862A (en) * 1973-09-27 1974-10-08 Honeywell Inf Systems Status indicator apparatus for tag directory in associative stores
GB2214669A (en) * 1988-01-30 1989-09-06 Int Computers Ltd Cache memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RESEARCH DISCLOSURE, no. 289, mai 1988, page 350, article no. 289116; "Low cost cache replacement" *

Also Published As

Publication number Publication date
FR2663136B1 (en) 1992-09-11

Similar Documents

Publication Publication Date Title
EP0020983B1 (en) Memory system comprising a serial storage device
BE1001068A4 (en) Method file quick opening disc identified by the name of roads.
FR2881540A1 (en) Input output cache memory usage method for computer system, involves assuring that prefetch locking indicator of cache memory line of cache memory associated to memory request is in locked condition, if memory request is not speculative
FR2664719A1 (en) CONTROL DEVICE FOR A RECONFIGURABLE PARTITIONING BUFFER MEMORY.
FR2489578A1 (en) ORGANIZATION STRUCTURE FOR BUFFER MEMORY
FR2913785A1 (en) CIRCULAR BUFFER MEMORY MANAGEMENT
FR2681707A1 (en) FILE SYSTEM FOR SELECTIVELY REDISTRIBUTING FILES AND METHOD FOR AFFECTING MEMORY SPACE IN A COMPUTER SYSTEM COMPRISING MULTIPLE DATA STORAGE DEVICES.
EP1909169A1 (en) Mass-storage system and method
FR2809841A1 (en) METHOD AND APPARATUS FOR REDUCING POWER IN HIDDEN MEMORIES AND DATA PROCESSING SYSTEM COMPRISING HOT MEMORIES
WO2018046850A1 (en) Methods and devices for bypassing the internal cache of an advanced dram memory controller
FR2645986A1 (en) METHOD FOR ACCELERATING MEMORY ACCESS TO A COMPUTER SYSTEM AND SYSTEM FOR IMPLEMENTING THE METHOD
EP3293637A1 (en) Index management in a flash memory
EP3080812B1 (en) Memory data writing circuit
FR2682783A1 (en) MAINTAINING HIDDEN CONSISTENCY.
FR2683061A1 (en) MEMORY SEGMENTATION SYSTEM.
EP0251861B1 (en) Memory management unit
EP1175122A1 (en) Memory management apparatus allowing the writing of data blocks by subsititution
FR2645987A1 (en) DEVICE FOR ACCELERATING MEMORY ACCESS IN A COMPUTER SYSTEM
FR2663136A1 (en) Device for controlling a buffer memory and method of managing digital data
FR2778254A1 (en) Memory cache cleaning method to reduce clock cycles in computer system with cache memories
FR3051574A1 (en) MANAGING STORAGE IN A FLASH MEMORY
EP0304348B1 (en) Access locking means for memory access management unit and access conflict management using such locking means
EP0908828B1 (en) Distributed access control system for memory and method
FR2821449A1 (en) METHOD FOR MANAGING INSTRUCTIONS WITHIN A PROCESSOR WITH DECOUPLED ARCHITECTURE, IN PARTICULAR A PROCESSOR FOR DIGITAL SIGNAL PROCESSING, AND CORRESPONDING PROCESSOR
EP1821197A2 (en) Device for postfix notation processing, and electronic integrated circuit comprising such a processing device

Legal Events

Date Code Title Description
CD Change of name or company name
CJ Change in legal form
ST Notification of lapse