Brevet FR2874103A1 — publié le 20060210

UTILISATION DE LA MMU POUR LA DETECTION DE BORNE DE MEMOIRE TAMPON La présente invention se rapporte au domaine de la 5 gestion de la mémoire dans le monde informatique. La présente invention se rapporte plus particulièrement à la détection des bornes d'une mémoire tampon. L'invention a pour but d'optimiser la détection de ces bornes en diminuant le nombre d'opérations de vérifications par l'exploitation des messages émis par l'unité de gestion de mémoire MMU. L'art antérieur connaît déjà des procédés de gestion des mémoires permettant la détection des bornes de la mémoire tampon. En l'occurrence, à chaque écriture ou lecture d'un octet, de données dans ladite mémoire, un certain nombre d'instructions de vérification est effectué par un logiciel pour déterminer si la mémoire est pleine dans le cas d'une mémoire tampon d'envoi ou vide dans le cas d'une mémoire tampon de réception. On dénombre près d'une dizaine d'instructions à chaque accès à la mémoire, qui, la plupart du temps, sont inutiles au regard de la taille de la mémoire tampon. En effet, l'atteinte d'une des bornes de ladite mémoire est rare au regard du nombre d'accès écriture/lecture dans la mémoire. Cette solution réalise une gestion de mémoire en mettant en jeu des mécanismes de détection de borne de mémoire fastidieux avec une dizaine d'instructions effectuées à chaque accès mémoire. L'art antérieur connaît également la famille de systèmes d'exploitation UNIX qui met en oeuvre des procédés de gestion de débordement de pile automatique. Une pile est associée à chaque processus du système, et est composée d'une page de mémoire valide avec la mémoire physique correspondante suivie de pages non valides sans allocation de mémoire physique. La pile se remplit et se vide par écriture/lecture successives de données. Lorsque le processus accède à une page non valide mitoyenne à une page valide de la pile, cela signifie que la pile est pleine, son dimensionnement étant alors trop petit et ne peut exécuter une commande d'écriture. Le système d'exploitation convertit ladite page invalide en page valide en lui allouant la mémoire physique correspondante et ré-exécute la commande d'écriture de données ayant engendré l'accès à une page non valide. Ce mécanisme peut être reproduit plusieurs fois jusqu'à obtention d'une mémoire pile de capacité suffisamment grande. Par ce mécanisme, la pile subit une extension de mémoire d'un seul côté. Cette solution réalise une adaptation de taille de mémoire en étendant la mémoire initiale. La présente invention entend remédier aux inconvénients de l'art antérieur en proposant un procédé de détection d'une ou des deux bornes d'une mémoire tampon sans qu'aucune instruction de vérification de taille de mémoire ne soit réalisée lors des nombreux accès à la mémoire. En outre, la présente invention met en oeuvre un procédé ne réalisant pas d'adaptation de taille de mémoire, c'est-à-dire qu'à la détection d'une borne de la mémoire, la capacité de cette dernière n'est pas accrue. Le procédé de la présente invention modifie alors l'index de lecture ou d'écriture de la mémoire vers une autre zone de mémoire. A cet effet, l'invention concerne dans son acception la plus générale un procédé de gestion d'une mémoire tampon utilisée par un programme informatique mettant en uvre une unité de gestion de mémoires MMU, caractérisé en ce qu'il comporte une étape de détection d'un accès dépassant de la mémoire tampon réalisée par l'exploitation du signal d'exception généré par la MMU lors du franchissement d'au moins une borne de ladite mémoire tampon, ce signal commandant au moins l'une des actions de gestion AG constituées par l'exécution d'une routine de gestion des moyens d'accès et par l'exploitation de la mémoire tampon. De préférence, ladite détection du signal d'exception est réalisée par le système d'exploitation. Avantageusement, l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page absente. Selon une variante, l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page invalide. Selon un mode de réalisation, la mémoire tampon est utilisée pour émettre un message. Selon un mode de mise en oeuvre, l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page interdite en écriture. Selon un autre mode de réalisation, la mémoire tampon est utilisée pour recevoir un message. Selon un mode de mise en oeuvre, l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page interdite en lecture. Selon un mode de mise en oeuvre particulier, la 5 mémoire tampon est utilisée selon un mode FIFO. Avantageusement, lesdites actions AG sont exécutées par le système d'exploitation. Selon une variante, l'exécution desdites actions AG 10 est déléguée par le système d'exploitation au programme informatique ayant généré le signal d'exception. Selon un autre mode de mise en oeuvre particulier, la mémoire tampon est exploitée en mode circulaire. On comprendra mieux l'invention à l'aide de la description, faite ciaprès à titre purement explicatif, d'un mode de réalisation de l'invention, en référence aux figures annexées. - la figure 1 représente des agencements possibles de zones mémoires aux propriétés différentes; - la figure 2 représente un ordinogramme illustrant le mode opératoire d'accès à la mémoire. La présente invention met en oeuvre un procédé de détection de borne d'une mémoire tampon en utilisant l'unité de gestion de mémoire MMU du système. Dans un mode de réalisation particulier, un système met en oeuvre des mécanismes d'envoi ou de réception de messages. Ces mécanismes nécessitent la mise en place d'au moins une mémoire tampon permettant la mémorisation temporaire d'au mois une partie d'un message échangé. En référence à la figure 1, chacune des mémoires tampon est composée d'un ensemble de pages valides (10) associées à un espace de mémoire physique, et d'au moins une page non valide (21) d'une part et/ou de l'autre de ladite mémoire tampon. Concrètement, on place une page non valide avant la mémoire tampon et/ou une page non valide après la mémoire tampon. Dans une variante, il est possible de substituer ladite ou lesdites pages non valides par une ou des pages absentes (20), c'est-à-dire des pages non référencées dans les tables de l'unité de gestion de mémoire MMU. Les mécanismes décrits après s'appliquent de la même façon. Cette variante présente un grand avantage qui réside dans l'absence de création d'entrées de translation TLB relatives à cette ou ces pages et ne consomme ainsi pas d'entrées de translation TLB. Un programme utilisant une mémoire tampon, écrit des données dans ladite mémoire pour constituer le message à envoyer ou lit les données contenues dans ladite mémoire pour reconstituer le message reçu. Un programme écrit un message qu'il désire envoyer. Pour cela, il accède à la mémoire tampon et écrit les données dans ladite mémoire de façon automatique, c'est-à-dire sans qu'aucune vérification de capacité d'espace mémoire libre restant ne soit effectuée. Au fur et à mesure de l'ajout de données dans la mémoire tampon, le pointeur (31) d'écriture se rapproche de la borne (42) de la zone mémoire: la capacité libre disponible dans ladite mémoire diminue, jusqu'à devenir inférieure à la taille des données à écrire. Le programme tente d'écrire ces données, mais le pointeur déborde sur la partie adjacente (21) à la mémoire, en l'occurrence une page non valide. Dans une variante, un programme reçoit un message, mis dans une mémoire tampon. Il lit progressivement les données contenues dans ladite mémoire sans aucune procédure de vérification de l'existence de données non lues dans la mémoire. Lorsque aucune donnée non lue ne perdure dans ladite mémoire, le programme tente d'accéder à une zone de mémoire adjacente de ladite mémoire tampon, en l'occurrence une page non valide. Dans les deux variantes ci-dessus, l'accès à une zone non valide entraîne automatiquement une exception accès invalide de la part de l'unité de gestion de mémoire MMU. L'accès à la mémoire en écriture ou lecture de la mémoire est alors annulée. Dans un autre mode de réalisation, à la mémoire tampon constituée de pages valides, est associée au moins une page absente d'une part et/ou de l'autre de ladite mémoire tampon. Lors de l'accès à cette zone absente, la MMU émet une exception translation absente , connue également sous les appellations TLB miss ou TLB refill . Selon un troisième mode de réalisation, le processeur du dispositif mettant en oeuvre le procédé de la présente invention, propose un mécanisme indiquant les propriétés, telles que la lecture ou l'écriture, des pages mémoire. Ce mécanisme peut, par exemple, consister en la présence d'un ou de bits caractérisant la propriété d'accès en écriture de la mémoire, la propriété d'accès en lecture de la mémoire... Par exemple, un processeur du type PowerPC propose cette spécificité. La (ou les) zone (s) adjacente (s) à la mémoire tampon sont des pages mémoires valides dont les propriétés en écriture ou en lecture sont incompatibles avec celle de l'utilisation faite de la mémoire tampon. C'est-à-dire, toujours en référence à la figure 1, pour une mémoire tampon de réception (lecture) (12), la propriété de lecture de la ou les pages adjacentes (11) a été désactivée. Ainsi l'accès en mode lecture de cette zone, va générer une exception accès invalide . De même, pour une mémoire tampon d'envoi de message (écriture) (11), la propriété d'écriture de la ou les pages adjacentes (12) a été désactivée. Une exception accès invalide est ainsi générée lors de l'accès en mode écriture de cette zone. L'exception produite, quel que soit le mode de réalisation précédent choisi, est remontée au système d'exploitation. Habituellement les systèmes utilisent plusieurs mémoires tampon. En effet, lorsqu'une desdites mémoire tampon est pleine, le système d'exploitation bascule sur une autre mémoire tampon de sorte que les données de ladite mémoire tampon pleine puissent être envoyées avant qu'elle ne soit réutilisée Dans une variante, il est possible de n'avoir qu'une seule mémoire tampon, mais cela induit en général des performances moindres dues au temps de traitement de ladite mémoire avant de pouvoir la réutiliser. Dans une variante, l'exception est automatiquement gérée par le processus de l'application fautive, c'est-à- dire par celui qui a engendré ladite exception, le système d'exploitation ayant délégué ses pouvoirs à l'applicatif. En référence à la figure 2, l'accès à la mémoire ne réalise pas d'exception: la lecture et/ou l'écriture dans la mémoire sont réalisées. A l'exception, le contenu de la mémoire est exploité : soit le contenu de la mémoire tampon est envoyé, dans le cas d'une mémoire tampon d'émission, soit la mémoire est vide et prête à recevoir de nouvelles données, pour une mémoire tampon de réception. De plus, ledit système d'exploitation, par l'une des actions de gestion dont il dispose, exécute une routine de gestion des accès qui s'applique à la mémoire tampon exploitée. Pour cela, elle modifie l'index actif d'écriture ou de lecture dans la zone mémoire, de façon générale un pointeur, pour le transférer vers une autre mémoire tampon correspondant à la suite du message, une mémoire vide dans le cas d'un message à envoyer, une mémoire remplie dans celui d'un message reçu. Dans ce dessein, le système d'exploitation maintient une base de données, indiquant l'état de chaque tampon. L'invention est décrite dans ce qui précède à titre d'exemple. Il est entendu que l'homme du métier est à même de réaliser différentes variantes de l'invention sans pour autant sortir du cadre du brevet. REVENDICATIONS 1. Procédé de gestion d'une mémoire tampon utilisée par un programme informatique mettant en oeuvre une unité de gestion de mémoires MMU, caractérisé en ce qu'il comporte une étape de détection d'un accès dépassant de la mémoire tampon réalisée par l'exploitation du signal d'exception généré par la MMU lors du franchissement d'au moins une borne de ladite mémoire tampon, ce signal commandant au moins l'une des actions de gestion AG constituées par l'exécution d'une routine de gestion des moyens d'accès et par l'exploitation de la mémoire tampon. 2. Procédé de gestion d'une mémoire tampon selon la revendication 1, caractérisé en ce que ladite détection du signal d'exception est réalisée par le système d'exploitation. 3. Procédé de gestion d'une mémoire tampon selon la 20 revendication 1 ou 2, caractérisé en ce que la mémoire tampon est utilisée pour émettre un message. 4. Procédé de gestion d'une mémoire tampon selon la revendication 3, caractérisé en ce que l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page interdite en écriture. 5. Procédé de gestion d'une mémoire tampon selon la 30 revendication 1 ou 2, caractérisé en ce que la mémoire tampon est utilisée pour recevoir un message. 6. Procédé de gestion d'une mémoire tampon selon la revendication 5, caractérisé en ce que l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page interdite en lecture. 7. Procédé de gestion d'une mémoire tampon selon la revendication 1, 2, 3 ou 5, caractérisé en ce que l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page absente. 8. Procédé de gestion d'une mémoire tampon selon la revendication 1, 2, 3 ou 5, caractérisé en ce que l'étape de franchissement d'une borne de la mémoire tampon est réalisée par la détection du signal d'exception généré lors de l'accès à une page invalide. 9. Procédé de gestion d'une mémoire tampon selon l'une quelconque des revendications précédentes, caractérisé en ce que la mémoire tampon est utilisée selon un mode FIFO. 10. Procédé de gestion d'une mémoire tampon selon l'une quelconque des revendications précédentes, caractérisé en ce que lesdites actions AG sont exécutées par le système d'exploitation. 11. Procédé de gestion d'une mémoire tampon selon l'une quelconque des revendications précédentes, caractérisé en ce que l'exécution desdites actions AG est déléguée par le système d'exploitation au programme informatique ayant généré le signal d'exception. 12. Procédé de gestion d'une mémoire tampon selon l'une quelconque des revendications précédentes, caractérisé en ce que la mémoire tampon est exploitée en mode circulaire. 13. Système pour la mise en oeuvre du procédé selon 5 l'une quelconque des revendications précédentes comprenant une unité de gestion de la mémoire (MMU).