Brevet FR2874104A1 — publié le 20060210

PROCÉDÉ D'IDENTIFICATION D'ESPACE LOGIQUE MULTIDIMENSIONNEL La présente invention se rapporte au domaine de la gestion de la mémoire dans les systèmes informatiques. 5 La présente invention se rapporte plus particulièrement à la gestion et l'organisation de la mémoire pour la virtualisation de systèmes d'exploitation, en étendant les adresses logiques de sorte à éviter les invalidations de TLB (Translation Lookaside Buffer) et de cache logique. On connaît dans l'état de la technique des mécanismes permettant d'éviter les invalidations de TLB et de cache logique. Ces mécanismes utilisent un registre d'identification d'espace d'adresse, le registre ASID (Address Space IDentifier) courant, associé au processeur, et un identifiant ASID unique de chaque processus du système pour identifier les zones de mémoire réservées auxdits processus. Lorsque le système d'exploitation bascule d'un processus à un autre, ledit registre ASID courant prend la valeur de l'identifiant ASID du nouveau processus actif . La valeur du registre d'ASID courant est utilisée pour étendre les adresses logiques générées par le programme. Ces adresses étendues sont utilisées par les entrées de translation d'adresse TLB et par les caches logiques, en lieu et place des adresses logiques initiales. Pour ce faire, chaque entrée de TLB, ainsi que chaque entrée de cache logique, possède en plus de ses champs habituels, un champs de bits, nommé ASID local ainsi qu'un mécanisme, contrôlé par la configuration d'un (ou plusieurs) bit(s) de configuration local (locaux) à l'entrée considérée, qui permet d'activer ou de désactiver la comparaison de l'ASID local avec l'ASID courant lors de l'accès à la mémoire par un processus. De cela, résultent des pages mémoires visibles et communes à tous les processus, pages pour lesquelles aucune vérification n'est effectuée sur l'identifiant ASID, et des pages mémoires spécifiques à un seul processus. Cette solution réalise une gestion de la mémoire qui permet d'éviter des invalidations d'entrée de TLB et de cache logique pour un système dans lequel un seul système d'exploitation gère au moins un processus applicatif, mais cette solution n'est pas adaptée au contexte de la virtualisation de systèmes d'exploitation, dans lequel un hyperviseur gère plusieurs OS hôtes, chacun gérant plusieurs processus applicatifs. La présente invention entend remédier aux limitations de l'art antérieur en proposant un procédé mettant en uvre une décomposition des champs d'ASID locaux en des champs d'ASID locaux multidimensionnels, afin de passer d'une relation entre un système d'exploitation et des processus à une relation entre un hyperviseur, des systèmes d'exploitation et des processus associés à un système d'exploitation. A cet effet, l'invention concerne dans son acception la plus générale un procédé d'exécution d'une pluralité de programmes informatiques comportant un hyperviseur, au moins un système d'exploitation hôte et au moins un programme applicatif comportant des moyens pour éviter les invalidations de TLB sur les processeurs à cache physique et les invalidations de TLB et de caches sur les processeurs à cache logique, ces moyens consistant à affecter à chaque processus un identifiant ASID, ledit identifiant ASID étant chargé dans le registre d'ASID courant quand le processus est exécuté, afin d'étendre les adresses logiques desdits processus en vue de constituer une adresse logique étendue utilisée pour la comparaison d'adresses logiques par les TLB et par les caches logiques, chaque entrée desdits TLB et cache logique possédant un champ d'ASID local, et la comparaison desdits ASID locaux avec l'ASID courant pouvant être neutralisée, caractérisé en ce que lesdits ASID locaux ont plusieurs dimensions, chaque dimension correspondant à un champ d'informations binaires, l'une des dimensions étant destinée à la désignation des systèmes d'exploitation, une autre desdites dimensions étant destinée à la désignation des programmes applicatifs exécuté par l'un desdits systèmes d'exploitation, le procédé étant en outre caractérisé en ce qu'il comporte des moyens de neutralisation permettant d'indiquer, pour chaque ASID local multidimensionnel, quelles sont les dimensions qui doivent être ignorées lors de la comparaison entre l'ASID local et l'ASID courant. Selon un mode de mise en oeuvre particulier, lesdits mécanismes de neutralisation sont constitués par une donnée additionnelle de l'ASID local correspondant à un filtre associé. De préférence, ledit filtre associé à l'ASID local est un champ de données binaires. De préférence, au moins un bit du filtre est associé à au moins un bit de l'ASID local, l'activation/désactivation dudit bit du filtre active/désactive la comparaison dudit ou desdits bits associé(s) de l'ASID local avec le ou les bits correspondant de l'ASID courant. Selon un autre mode de mise en oeuvre particulier, une autre desdites dimensions peut être utilisée pour l'implémentation de mode d'exécution virtuelle. 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 une structure de masque de 10 taille identique à l'ASID local; la figure 2 représente une configuration où le masque est de taille inférieure à l'ASID local. La présente invention met en oeuvre un procédé 15 d'exécution d'une pluralité de programmes, présentant une gestion originale de la mémoire. Le système mettant en oeuvre ce procédé est composé d'un hyperviseur, d'au moins un programme informatique, par exemple un système d'exploitation, et d'au moins un programme applicatif tournant sous ledit système d'exploitation. Dans un mode de réalisation, le processeur du système 25 mis en oeuvre dans la présente invention est à cache logique. La présente invention détourne l'utilisation coutumière des ASID locaux tel que décrit dans l'état de la technique de la présente invention. En effet, à chaque champ d'ASID local d'une entrée de translation TLB et d'une entrée de cache logique du processeur est associé et ajouté un champ binaire appelé filtre ou masque d'ASID local. Les adresses logiques ainsi étendues sont composées d'une séquence formée par le masque d'ASID local (2), le champ d'ASID local (1) et l'adresse virtuelle (3), comme illustré par la figure 1. Lorsqu'un processus est exécuté, la valeur de l'identifiant ASID du processus est placée dans le registre d'ASID courant du processeur. Et lorsque ce processus fait un accès mémoire, pour chaque entrée de TLB et de cache logique, et en fonction de la valeur du masque d'ASID local, soit: É la comparaison entre l'ASID local et l'ASID courant est entièrement activée, É la comparaison entre l'ASID local et l'ASID courant est entièrement désactivée, É la comparaison entre l'ASID local et l'ASID 15 courant est partiellement activée. En choisissant judicieusement les champs de bits activés lors des comparaisons partielles d'ASID, il est possible de transformer l'ASID local en un ASID multidimensionnel, le nombre de dimensions, ainsi que la largeur en bit de chacune d'elle, étant fonction des champs de comparaison activés. Par exemple, s'il y a un bit de masque d'ASID local pour chaque bit d'ASID local, et que ce bit de masque active ou désactive la comparaison du bit d'ASID local correspondant, alors toutes les combinaisons de dimension et de largeur desdites dimensions sont possibles tant que la somme des largeurs desdites dimensions n'excède pas la largeur initiale de l'ASID local. En référence à la figure 1, le masque local M (2) a la même dimension que l'ASID local (1) et en associant chaque bit mi du masque local au bit bi de l'ASID local, on peut constituer un identifiant tridimensionnel où la première dimension D1 est régie par les bits bo à b3 et les bits mo à m3 correspondants, le deuxième dimension D2 par les bits b4-b5 et m4-m5 et la troisième dimension D3 par les autres bits d'indices de 6 à 9. Cette réalisation peut cependant être compliquée en mélangeant les bits, par exemple le bit m3 active ou désactive la comparaison du bit b8, ou encore la première dimension est décrite par les bits b1, b5 et b9. Les possibilités sont donc nombreuses. Toutefois, il n'est pas toujours nécessaire d'utiliser des masques d'ASID local aussi précis, un bit de masque d'ASID local pouvant activer ou désactiver plusieurs bits d'ASID local. En référence à la figure 2, voici donné à titre d'exemple, une organisation où la largeur d'ASID local est de 10 bits et où le masque d'ASID local, MASID ne fait que 4 bits de large: ^ le bit mo du masque MASID est associé aux bits bo à b5 de l'ASID. L'activation du bit du 20 masque (mo=1) active la comparaison entre les six bits bo à b5 de l'ASID courant avec les six bits correspondants de l'ASID local. Lorsque le bit est désactivé (mo=0), la comparaison n'a pas lieu. ^ Le bit ml est associé, de la même façon, au 25 bit b6, ^ Le bit m2 est associé, de la même façon, aux bits b7 et b8, et, ^ Le bit m3 est associé, de la même façon, au bit b9. Cette organisation permet de considérer l'ASID comme ayant soit: ^ 1 dimension sur 10 bits, É 2 dimensions, une sur 4 bits et la seconde bits b6 à b9 (et les bits mi ensemble de sorte à constituer une seule dimension sur 4 bits, É 2 dimensions sur É 2 dimensions sur É 2 dimensions sur É 3 dimensions sur É 3 dimensions sur É 3 dimensions sur É 3 dimensions sur É 4 dimensions sur sur 6 bits lorsque les associés) sont utilisés bits 3 bits et 7 bits 2 bits et 8 bits 1 bit et 9 bits 1 bit, 3 bits et 6 bits 1 bit, 2 bits et 7 bits 1 bit, 1 bit et 8 bits 2 bits, 2 bits et 6 bits 1 bit, 2 bits, 1 bit et 6 Chacune des dimensions pouvant être activée ou désactivée indépendamment les unes des autres au moyen des masques correspondants, et sachant qu'une dimension de n bits peut être représentée par une suite continue ou discontinue de n bits d'ASID local. De façon générale, un masque MASID composé de M bits mi est associé à un ASID local composé de N bits bj, de telle sorte qu'un bit mi active ou désactive un ensemble de bits bj, un bit bj ne pouvant être activé/désactivé que par un unique bit mi. Il est cependant possible mais assez inutile de n'associer aucun bit bj à un bit mi. Le masque MASID active toute ou partie de l'ASID local, c'est-à-dire que la somme des nombres de bits bj associés aux mi ne peut excéder la largeur de l'ASID local. Chaque dimension de l'ASID local est constituée par un ensemble ou par le groupement d'ensembles de bits bj activés/désactivés par des bits mi. Ces k bits constituant la dimension donne alors 2k identifiants distincts attribuables à l'intérieur de la dimension. L'intérêt de la présente invention est de pouvoir configurer, aisément et à sa guise, le nombre de dimensions désirées, par la largeur du masque MASID, et la taille de ces dimensions, par l'association judicieuse des bits bj aux bits mi. Si un processeur dispose de plus de deux modes d'exécution, un hyperviseur pourra par exemple choisir 2 dimensions (3 bits et 7 bits), ce qui lui permet d'exécuter jusqu'à 8 OS invités (8=23), désignés par la première dimension, chacun étant à même d'exécuter 128 processus (128=27), désignés par la seconde dimension. Si un processeur dispose uniquement de deux modes d'exécution, un hyperviseur pourra par exemple choisir 3 dimensions (1 bit, 3 bits et 6 bits). La première dimension servant à créer virtuellement un mode d'exploitation supplémentaire, nécessaire pour permettre la virtualisation (c'est-à-dire désignant l'hyperviseur), la seconde dimension désignant l'OS invité en cours d'exécution (8 OS possibles), et la troisième dimension, désignant le processus exécuté par l'OS invité (64 processus possibles par OS). Cet encodage n'est donné qu'à titre d'exemple, de nombreuses façons de réaliser l'encodage des dimensions et des masques étant envisageable, tout en restant dans le cadre du brevet. Dans un autre mode de réalisation, le processeur du système mis en oeuvre par la présente invention est à cache physique. Les mécanismes évoqués précédemment s'appliquent alors uniquement sur les entrées TLB puisque le processeur ne dispose pas de cache logique. Ainsi selon les besoins, l'hyperviseur configure le masque d'ASID local de façon adéquate à ce que la page mémoire qui lui est associée au travers de l'adresse logique, soit visible et commune à tous les processus de tous les systèmes d'exploitation ou alors à tous les processus d'un même système d'exploitation ou encore à ce qu'elle soit spécifique à un seul processus. 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é d'exécution d'une pluralité de programmes informatiques dans un système informatique comportant un hyperviseur, au moins un système d'exploitation hôte et au moins un programme applicatif, ledit procédé comportant: - une étape d'affectation à chaque processus d'un identifiant ASID, cet identifiant ASID étant chargé dans un registre d'ASID courant lorsque le processus correspondant est exécuté, pour éviter les invalidations de TLB sur les processeurs à cache physique et les invalidations de TLB et de caches sur les processeurs à cache logique, une étape d'extension des adresses logiques desdits processus avec les ASID affectés aux processus, en vue de constituer des adresses logiques étendues utilisées pour la comparaison d'adresses logiques par les TLB et par les caches logiques, chaque entrées de TLB et de cache logique possédant un champ d'ASID local, la comparaison des ASID locaux et de l'ASID courant pouvant être individuellement neutralisée, caractérisé en ce que: - lesdits ASID locaux affectés lors de ladite étape d'affectation ont plusieurs dimensions, chaque dimension correspondant à un champ d'informations binaires, l'une des dimensions étant destinée à la désignation des systèmes d'exploitation, une autre desdites dimensions étant destinée à la désignation des programmes applicatifs exécuté par l'un desdits systèmes d'exploitation, - le procédé étant en outre caractérisé en ce qu'il comporte une étape de neutralisation des dimensions des identifiants ASID permettant d'indiquer, pour chaque ASID local multidimensionnel, quelles sont les dimensions qui doivent être ignorées lors de la comparaison entre l'ASID local et l'ASID courant. 2874104 11 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape de neutralisation consiste en l'application d'une donnée additionnelle de l'ASID local sur cet ASID. 3. Procédé selon la revendication 2, caractérisé en ce que, lors de l'étape de neutralisation, ladite donnée additionnelle associée à l'ASID local est un filtre comportant un champ de données binaires d'une longueur d'au moins 2 bits. 4. Procédé selon la revendication 3, caractérisé en ce qu'au moins un bit du filtre est associé à au moins un bit de l'ASID local, l'activation/désactivation dudit bit du filtre active/désactive la comparaison dudit ou desdits bits associé(s) de l'ASID local avec le ou les bits correspondant de l'ASID courant. 5. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'une autre desdites dimensions peut être utilisée pour l'implémentation de mode d'exécution virtuelle. 6. Système pour l'exécution d'une pluralité de programmes informatiques comportant un hyperviseur, au moins un système d'exploitation hôte, au moins un programme applicatif, des moyens pour éviter les invalidations de TLB sur les processeurs à cache physique et les invalidations de TLB et de caches sur les processeurs à cache logique, ces moyens permettant d'affecter à chaque processus un identifiant ASID, cet identifiant ASID étant chargé dans le registre d'ASID courant lorsque le processus correspondant est exécuté, afin d'étendre les adresses logiques desdits processus en vue de constituer une adresse logique étendue utilisée pour la comparaison d'adresses logiques par les 2874104 12 TLB et par les caches logiques, chaque entrées de TLB et de cache logique possédant un champ d'ASID local, la comparaison des ASID locaux et de l'ASID courant pouvant être individuellement neutralisée, caractérisé en ce que: lesdits ASID locaux ont plusieurs dimensions, chaque dimension correspondant à un champ d'informations binaires, l'une des dimensions étant destinée à la désignation des systèmes d'exploitation, une autre desdites dimensions étant destinée à la désignation des programmes applicatifs exécuté par l'un desdits systèmes d'exploitation, - il comporte, en outre, des moyens de neutralisation permettant d'indiquer, pour chaque ASID local multidimensionnel, quelles sont les dimensions qui doivent être ignorées lors de la comparaison entre l'ASID local et l'ASID courant. 7. Système selon la revendication précédente caractérisé en ce que lesdits moyens de neutralisation sont constitués par une donnée additionnelle de l'ASID local correspondant à un filtre associé. 8. Système selon la revendication 7 caractérisé en ce que ledit filtre associé à l'ASID local est un champ de 25 données binaires de longueur d'au moins 2 bits.