Brevet FR2688612A1 — publié le 19930917

Dispositif d'antémémoire L'invention se rapporte au domaine technique de l'antémémoire, ou mémoire-cache. Elle trouve une application générale dans les systèmes informatiques. Le progrès technologique, notamment dans le domaine de la vitesse des horloges et de l'intégration des processeurs, tend à réduire de plus en plus les temps de cycle desdits processeurs et à permettre le séquencement et l'exécution de plusieurs instructions par cycle. Il en résulte que la demande en débit en informations sur la mémoire principale d'un système informatique devient de plus en plus grande. Cependant, le progrès technologique n'a pas permis de diminuer le temps d'accès aux informations en mémoire principale à la même vitesse que le temps de cycle des processeurs. En effet, actuellement, le temps d'accès en mémoire principale est souvent de l'ordre de plusieurs dizaines de cycles processeurs, voire des centaines de cycles processeurs. Une solution connue pour masquer la latence de l'accès aux informations en mémoire principale consiste à utiliser des antémémoires. D'une manière générale, une antémémoire est une mémoire d'accès rapide et de taille généralement réduite dans laquelle est stockée une partie de l'ensemble des informations stockées dans la mémoire principale. En pratique, quand un processeur effectue une requête comprenant une adresse principale en mémoire principale, et éventuellement des données, l'antémémoire répond à ladite requête soit en reliant l'adresse principale que contient cette requête et une ligne de données de l'antêmémoire quand la donnée désirée est présente et valide dans l'antémémoire, soit en signalant son absence dans le cas contraire. Dans ce dernier cas, le processeur adresse la mémoire principale pour accéder à la donnée désirée. La ligne de données en mémoire principale contenant la donnée désirée peut ensuite être chargée dans l'antémémoire. On connaît plusieurs organisations d'antémémoire, notamment l'organisation de mise en carte directe appelée encore "direct mapped", l'organisation multi-bancs totalement associative et l'organisation multi-bancs associative par ensemble. Ces organisations seront décrites plus en détail ci-après. Il est clair que l'utilisation des antémémoires accélère le temps d'accès aux données en mémoire principale grâce au fait notamment que les antémémoires sont plus rapides que les mémoires principales. Néanmoins, les performances effectives des systèmes informatiques utilisant des antémémoires dépendent du taux moyen de succès lors de l'accès aux données dans lesdites antémémoires. Or, ce taux moyen de succès n'est pas totalement satisfaisant dans les organisations des antémémoires mentionnées ci-avant. L'invention a justement pour but d'améliorer le taux moyen de succès lors de l'accès aux données dans les antémémoires. L'invention porte sur un dispositif d'antémémoire utilisant une organisation multi-bancs. De façon connue, le dispositif d'antémémoire comprend - au moins une entrée/sortie pour recevoir une requête comprenant une adresse principale, et éventuellement des données - au moins une entrée/sortie vers une mémoire principale adressable ou vers une autre antémémoire adressable - une pluralité de bancs de mémoire ayant chacun un nombre L de lignes aptes à contenir des données, ces lignes étant individuellement désignables par une adresse locale, dans chaque banc - des moyens propres à répondre à une requête en reliant par une loi prédéterminée, pour chacun des bancs, l'adresse principale que contient cette requête et une adresse locale dans le banc, la ligne ainsi désignée dans le banc étant la seule ligne dudit banc susceptible de contenir la donnée référencée par l'adresse principale - des moyens pour charger l'antémémoire en fonction des requêtes reçues. Selon une définition générale de l'invention, au moins deux lois prédéterminées sont sensiblement distinctes suivant les bancs considérés et les deux bancs condidérés sont adressés séparément, ce qui améliore le taux moyen de succès lors de l'accès aux données dans l'antémémoire. D'autres caractéristiques et avantages de l'invention apparaîtront à la lumière de la description détaillée ci-après et des dessins dans lesquels - la figure 1 est une vue schématique d'un système informatique connu - la figure 2 est une vue schématique d'une antémémoire agencée selon une organisation connue appelée "totalement associative" - la figure 3 est une vue schématique d'une antémémoire agencée selon une organisation connue appelée "direct mapped" - la figure 4 est une vue schématique d'une antémémoire multi-bancs agencée selon une organisation connue appelée "associative par ensemble" - la figure 5 est une vue schématique d'une antémémoire multi-bancs agencée selon une organisation associative par ensemble modifiée selon l'invention ; et - la figure 6 est une vue schématique d'une loi permettant de relier l'adresse principale que contient une requête à une adresse locale dans un banc selon l'invention. Sur la figure 1, la référence SI désigne un système informatique utilisant une antémémoire AM. L'antémémoire AM comprend L lignes individualisées en LO à LL contenant chacune M mots de B bits. Par exemple, l'antémémoire AM comprend 64 lignes de 8 mots de 16 bits. Le produit L x B x M définit la taille en bits de l'antémémoire. Des données D ainsi qu'éventuellement des indicateurs T (tag) sont stockés dans les lignes de l'antémémoire. Les indicateurs T servent par exemple à déterminer l'adresse principale AP en mémoire principale des données stockées dans la ligne de l'antémémoire, et à indiquer la validité desdites données. Il est à remarquer que c'est l'adresse principale qui est stockée dans l'indicateur et qui permet de faire la liaison entre la donnée dans l'antémémoire et son adresse en mémoire principale. Lorsqu'un processeur PRO souhaite accéder à une donnée stockée en mémoire principale MP, il effectue tout d'abord une requête REQ comprenant l'adresse principale AP desdites données désirées en mémoire principale MP, et éventuellement des données. La requête REQ est alors reçue par des moyens formant entrée/sortie ESRQ reliés à des moyens CAL propres à répondre à la requête en reliant par des lois prédéterminées pour l'antémémoire, l'adresse principale AP que contient cette requête et des adresses locales AL de l'antémémoire AM. Des moyens de chargement CHA chargent l'antémémoire en fonction des requêtes reçue. Lorsque la donnée désirée est présente dans la ligne de données L de l'antémémoire référencée par l'adresse locale AL, le processeur accède à ladite donnée désirée. Dans le cas contraire, le processeur adresse la mémoire principale via les moyens formant entrée/sortie ESMP pour accéder à la donnée désirée en mémoire principale. La ligne de donnée en mémoire principale contenant la donnée désirée peut alors être chargée dans l'antémémoire en fonction des lois prédéterminées. De façon connue, l'organisation de l'antémémoire diffère selon son degré d'associativité. Sur la figure 2, on a représenté une antémémoire agencée selon une organisation dite totalement associative. Dans une telle organisation, les moyens de chargement CHA chargent les lignes de données de la mémoire principale dans n'importe quelle ligne de l'antémémoire et cela quelle que soit l'adresse principale de la ligne de données en mémoire principale. Une telle organisation nécessite des mécanimes d'accès à l'antémémoire de taille très importante et un temps d'accès prohibitif quand le nombre de lignes de l'antémémoire est grand car il est nécessaire de lire l'indicateur de présence de données T de toutes les lignes de l'antémémoire et de comparer l'adresse principale AP avec l'adresse locale AL de la ligne de données de l'antémémoire, cette adresse principale ainsi que l'information de validité de la ligne étant stockées dans un indicateur associé à la ligne de données. Sur la figure 3, on a représenté une antémémoire agencée selon l'organisation appelée direct mapped. Dans une telle organisation, les moyens de chargement CHA chargent ou "mappent" les lignes de données en mémoire principale dans des lignes de l'antémémoire dont l'adresse locale AL respective est directement déduite de l'adresse principale AP, le plus souvent en prenant les bits significatifs de plus faible poids. L'organisation dite "direct mapped" est relativement simple. En effet, à partir d'une ligne de données en antémémoire, un seul mot et son indicateur de présence T associé sont tout d'abord lus. Ensuite, l'adresse locale AL de l'indicateur de ligne ainsi lue est comparée à l'adresse principale AP à charger. En cas de comparaison affirmative, la ligne de données en mémoire principale est chargée dans la ligne de l'antémémoire ainsi référencée. Mais, lors du déroulement d'un programme, plusieurs lignes de données en mémoire principale peuvent vouloir être mappées à la même ligne de l'antémémoire et entrer par conséquent en conflit, ce qui génère des échecs lors des accès à l'antémémoire. Il en résulte qu'une telle organisation a l'inconvénient de présenter un plus mauvais taux de succès lors de l'accès aux données dans l'antémémoire que la précédente organisation. Sur la figure 4, on a représenté une représentation possible d'une antémémoire agencée selon l'organisation multi-bancs appelée associative par ensemble. Dans une telle organisation, l'antémémoire AM est subdivisée en X bancs BCi avec i inférieur à X et supérieur à 0 ayant chacun un nombre Li de lignes aptes à contenir des données D. Ici, le nombre de lignes Li est le même dans tous les bancs. En variante, il pourrait être distinct selon les bancs considérés. Les bancs BCi sont d'accès ultre rapide. Ils sont réalisés par exemple en technologie RAM statique avec un temps d'accès de l'ordre de 6 à 12 10-9 secondes. Ces lignes LI sont individuellement désignables par une adresse locale ALI. Par exemple, l'antémémoire est subdivisée en deux bancs individualisés en BC1 et BC2 ayant chacun 8 lignes individualisées en L10 à L17 pour BC1 et L20 à L27 pour BC2. En pratique, les moyens CL répondent à une requête REQ contenant une adresse principale et éventuellement des données en reliant, par une loi prédéterminée f, l'adresse principale AP que contient cette requête et une même adresse locale AL dans chacun des bancs BCi, la ligne ainsi désignée dans le banc BCi étant la seule ligne dudit banc BCi susceptible de contenir la donnée référencée par l'adresse principale AP. En d'autres termes, une ligne de données en mémoire principale peut être mise en carte dans n'importe laquelle des lignes de l'ensemble constitué par les lignes d'adresse locale AL dans les bancs BCi. L'adresse locale AL est déterminée par l'adresse principale AP, le plus souvent, l'adresse locale est directement déduite des bits de plus faible poids de l'adresse principale AP. Toutefois une telle organisation n'est pas totalement satisfaisante dans la mesure où l'adressage des bancs s'effectue conjointement selon la même loi prédéterminée f. En d'autres termes, les lignes de données en mémoire principale sont chargées dans l'un ou l'autre des bancs et cela à la même adresse locale dans chaque banc. Il en résulte qu'avec une telle organisation, c'est-à-dire un adressage conjoint des bancs, le taux de succès moyen lors de l'accès aux données dans l'antémémoire peut parfois être relativement faible. Par exemple, lorsque (x+1) lignes de données en mémoire principale relatives à la même application doivent être mises en carte dans l'ensemble constitué des lignes de même adresse locale AL, les (x+1) lignes de données ne peuvent être présentes ensemble dans l'antémémoire, ce qui introduit des conflits. Le Demandeur s'est posé le problème d'apporter une solution à ce problème. La solution apportée à ce problème conformément à l'invention consiste à introduire dans une organisation multi-bancs de l'antémémoire l'utilisation de fonctions d'adressage local distinctes pour les bancs de mémoire et par conséquent un adressage séparé des bancs. On fait maintenant référence à la figure 5 qui représente schématiquement une antémémoire agencée selon une organisation associative brouillée selon l'invention. On retrouve l'antémémoire AM subdivisée en deux bancs BC1 et BC2 ayant respectivement L1 et L2 lignes, les lignes contiennent des données D et sont individuellement désignables par une adresse locale AL. Pour le banc BC1, le moyen de calcul CAL1 répond à une requête en reliant par une loi prédéterminée F1, l'adresse principale AP que contient la requête à une adresse locale AL1 dans le banc BC1, la ligne ainsi désignée dans le banc BC1 étant la seule ligne dudit banc BC1 susceptible de contenir la donnée référencée par l'adresse principale AP. De même, pour le banc BC2, le moyen de calcul CAL2 répond à une requête en reliant par une loi prédéterminée F2, l'adresse principale AP que contient cette requête à une adresse locale AL2 dans le banc BC2, la ligne ainsi désignée dans le banc BC2 étant la seule ligne dudit banc BC2 susceptible de contenir la donnée référencée par l'adresse principale AP. De façon surprenante, le Demandeur a constaté qu'en remplaçant l'adressage conjoint des bancs décrit en référence à la figure 4 par un adressage séparé et en rendant distinctes les deux lois suivant les deux bancs considérés, le taux de succès lors de l'accès aux données dans l'antémémoire est amélioré. En effet, avec un adressage séparé des bancs, les lignes de données en mémoire principale sont maintenant chargées dans l'un ou l'autre des bancs et cela à des adresses locales pouvant être différentes d'un banc à l'autre. Ainsi, lorsque (x+1) lignes de données en mémoire principale rentrent en conflit pour être mise en carte sur une même ligne de l'antémémoire sur le banc BC1, il est possible qu'elles ne rentrent pas en conflit sur les autres bancs BCj de l'antémémoire et peuvent ainsi être présentes en même temps dans l'antémémoire, ce qui permet d'éviter certains échecs lors de l'accès à l'antémémoire. Pour permettre un adressage séparé des bancs, il convient de rendre distinctes les lois qui relient l'adresse principale que contient une requête et une adresse locale dans un banc considéré. Afin d'obtenir un meilleur taux de succès lors de l'accès à l'antémémoire, il convient de choisir soigneusement les lois fi. Le Demandeur a constaté tout d'abord que les lois fi doivent être équitables. Une loi fi reliant l'adresse principale d'une ligne de données à l'adresse locale dans le banc BCi est dite équitable, si pour chaque ligne du banc BCi, le nombre de lignes de données D pouvant être mises en carte dans ladite ligne est unique et égal à celui de toutes les lignes du banc BCi. Ensuite, le Demandeur a constaté que les lois fi doivent être dispersives les unes par rapport aux autres. Une loi Fi est dite loi de dispersion par rapport à la loi Fj, si la loi Fj, restreinte à l'ensemble des lignes pouvant être mises en carte dans une ligne prédéterminée du banc BCi, est équitable. Enfin, le Demandeur a constaté que les lois fi ne doivent pas présenter une localité spatiale. En effet, de nombreuses applications présentent une localité spatiale, c'est-à-dire que dans ces applications les données utilisées dans un laps de temps court ont des adresses principales relativement proches les unes des autres. Or, afin d'éviter de générer des conflits, il est souhaitable de choisir des lois fi qui permettent d'éviter que deux lignes dont les adresses principales seraient proches l'une de l'autre (c'est-à-dire presque consécutives) soient mises en carte dans une même ligne du banc BCi. Nous allons maintenant décrire un exemple de famille de lois fi appliqué à une antémémoire constituée de quatre bancs de 2n lignes de 2c octets chacun. Nous supposons que la mémoire principale est de 2q octets où q > 2xn+c. Considérons la représentation binaire d'une adresse principale AP en quatre chaînes ou bits AP = (A3,A2,A1,A0) où A0 est une chaîne de c bits, représentant le déplacement dans la ligne, où Al et A2 sont deux chaînes de n bits et où A3 est la chaîne des q - (2xn+c) bits les plus significatifs. Soit (yin, Y-n-1 .., Y1), la représentation binaire de Y = si=l,n Yi 2i-1, considérons la fonction H définie par la formule I en annexe, et les quatre lois fi définies par les formules II à V en annexe. L'homme de l'art comprendra que les lois fl à f4 sont équitables. Par ailleurs, pour toute paire (i, j) dans {1,2,3,4}, la loi fi est équitable par rapport à fj pour les valeurs n = 3,4,6,7,9,10,12,13,15 et 16. Enfin la dispersion locale des données dans un seul banc est quasi-optimale :quelque soit la ligne de l'antémémoire considérée, dans un ensemble Kx2n lignes de données d'adresses consécutives, il y a au plus K+1 lignes pouvant être mises en carte dans ladite ligne. Il est à remarquer que l'implantation des lois ci-dessus décrites est simple. En effet, chaque bit de fi (AP) est obtenue par le OU EXCLUSIF d'au plus 4 bits de la décomposition binaire de l'adresse principale AP. De plus, le matériel nécessaire pour implanter les lois fi est le même quelque soit la loi : il s'agit de calculer H(x) e H1(y) e z où x, y, z sont des chaînes de n bits. Un mécanisme pour implanter cette loi conforme à l'invention est représenté sur la figure 6. Pour calculer H(x) s H1(y) s z où x, y, z sont des chaînes de 6 bits individualisés en x6 à xl ; y6 à yl et z6 à zl, 6 portes XOR individualisées en P1 à P6 sont utilisées. Chaque porte P est à 3 ou 4 entrées recevant chacune l'un des bits des chaînes x, y ou z et une sortie délivrant un bit t. Comme représenté sur la figure 6, une entrée de la porte P1 et une entrée de la porte P2 reçoivent par exemple le bit x6. L'implantation des entrées des portes XOR représentée sur la figure 6 est un exemple de réalisation de l'invention. Bien entendu, d'autres implantations conformes à l'invention permettent de vérifier les propriétés des lois mentionnées ci-avant. Le Demandeur a constaté que pour des tailles d'antémémoire égales, le comportement d'une antémémoire à deux bancs agencée selon 1' invention présente un taux de succès nettement supérieur à celui d'une antémémoire associative par ensemble à deux bancs, et à peu près comparable à celui d'une antémémoire associative par ensemble à quatre bancs. Le comportement d'une antémémoire à quatre bancs agencée suivant l'invention présente un taux de succès supérieur à celui d'une antémémoire associativbe par ensemble à quatre bancs, et à peu près comparable à celui d'une antémémoire associative par ensemble à huit bancs. ANNEXE formule I H : {0,...,2n-1} # {0,...,2n-1} {yn,yn-1,...,y1} # yn # {y1,yn,yn-1,...,y3,y2} où s est l'opération OU EXCLUSIF (XOR). Formule II fl : S * {0,...,2n-1} (A3,A2,A1,A0) # H(A1) # H-1(A2) # A2 Formule III f2 : S # {0,...,2n-1} (A3,A2,A1,A0) * H(A1) e H1(A2) e A1 Formule IV f3 : S # {01,...,2n-1} (A3,A2,A1,A0) # H-1(A1) # H(A2) # A2 Formule V f4 : S # {0,...,2n-1} (A3,A2,A1,A0) # H-1(A1) # H(A2) # A1. Revendications 1. Dispositif d'antémémoire, comprenant - au moins une entrée/sortie (ESRQ) pour recevoir une requête (REQ) comprenant une adresse principale (AP) et éventuellement des données (D) - au moins une entrée/sortie (ESMP) vers une mémoire principale adressable (MP) ou vers une autre antémémoire adressable - une pluralité de X bancs de mémoires (BCi) avec i inférieur à X et supérieur à 0, ayant chacun un nombre Li lignes aptes à contenir des données, ces lignes étant individuellement désignables par une adresse locale (AL), dans chaque banc - des moyens propres à répondre à une requête (REQ) en reliant par une loi prédéterminée (fi) pour chacun des bancs (BCi), l'adresse principale (AP) que contient cette requête et une adresse locale (AL) dans le banc (BCi), la ligne ainsi désignée dans le banc (BCi) étant la seule ligne dudit banc susceptible de contenir la donnée référencée par l'adresse principale ; et - des moyens (CHA) pour charger l'antémémoire en fonction des requêtes reçues caractérisé en ce qu'au moins deux des lois prédéterminées (fi) sont sensiblement distinctes suivant les bancs considérés et en ce que les deux bancs considérés sont adressés séparément, ce qui améliore le taux moyen de succès lors de l'accès aux données dans 1' antémémoire. 2. Dispositif selon la revendication 1, caractérisé en ce que les lois prédéterminées suivant les bancs considérés sont toutes distinctes, au moins en partie. 3. Dispositif selon la revendication 1 ou la revendication 2, caractérisé en ce que les bancs de mémoire sont d'accès ultra rapide. 4. Dispositif selon la revendication 3, caractérisé en ce que les bancs de mémoire sont réalisés en technologie RAM statique. 5. Dispositif selon l'une quelconque des revendications précédentes, caractérisé en ce que les lois prédéterminées sont des lois équitables. 6. Dispositif selon l'une quelconque des revendications 1 à 5, caractérisé en ce que les lois prédéterminées sont des lois dispersives. 7. Dispositif selon l'une quelconque des précédentes revendications, caractérisé en ce que les lois prédéterminées sont des lois qui ne présentent pas de localité spatiale.