FR 3045183 A1 20170616 FR 1562435 A 20151215 1 PROCEDE DE PREDICTION D'UNE DONNEE A PRECHARGER DANS UNE MEMOIRE CACHE [1] L'invention concerne un procédé de prédiction d'une donnée à précharger dans une mémoire cache, ainsi qu'un procédé d'exécution d'un programme mettant en oeuvre ce procédé de prédiction. L'invention concerne également un support d'enregistrement d'informations et un module électronique pour la mise en oeuvre de ce procédé de prédiction. [2] Il est très important de prédire le plus correctement possible la donnée à précharger dans une mémoire cache car cela limite les « défauts de cache » ou « miss » en anglais. Cela limite donc le nombre de fois où le microprocesseur doit aller chercher la donnée à laquelle il souhaite accéder dans une autre mémoire moins rapide que la mémoire cache. En effet, si la prédiction est correcte, la donnée à laquelle le microprocesseur souhaite accéder a alors été préchargée dans la mémoire cache avant même que le microprocesseur exécute l'instruction de lecture de cette donnée. Dès lors, lorsqu'il exécute cette instruction de lecture, il peut très rapidement obtenir la donnée à laquelle il souhaite accéder. A l'inverse, en cas de défaut de cache, le temps passé par le microprocesseur pour lire la donnée dans une autre mémoire est plus long. A cause de cela, ce temps passé à lire dans une autre mémoire que la mémoire cache est appelé « pénalité ». Ainsi, le fait de limiter le nombre de défauts de cache permet d'améliorer les performances et donc d'accélérer l'exécution d'un programme par le microprocesseur. [3] De nombreux procédés de prédiction de la donnée à précharger dans la mémoire cache ont déjà été proposés. Par exemple, de tels procédés ont été décrits 25 dans les documents suivants : - US5305389 A1, et - Joseph D., Grunwald D., « Prefetching using Markov predictors », Computers, IEEE transactions, vol. 48, n° 2, pp.121-133, février 1999. [004] En particulier, certains procédés connus comportent : 30 a) pour chaque instant t où un microprocesseur exécute une instruction de lecture d'une donnée nécessaire à l'exécution d'un programme, le calcul d'un écart, appelé delta, entre l'adresse de la donnée à lire contenue dans cette instruction de lecture exécutée à l'instant t et l'adresse de la donnée à lire contenue dans cette même instruction de lecture lors de sa précédente exécution à un instant t-1, deux 35 instructions de lecture étant les mêmes si elles correspondent toutes les deux à la même valeur du compteur ordinal du microprocesseur, et b) la mémorisation d'une séquence d'accès observée contenant uniquement les N deltas calculés successivement pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t1 ; to], où les instants to et t1 sont égaux aux instants t, 3045183 2 respectivement le plus récent et le plus ancien, pour lesquels a été calculé un delta de la séquence d'accès observée et le nombre N est un nombre entier prédéterminé supérieur ou égal à deux. [005] Dans les procédés connus, le prochain delta de la séquence d'accès 5 observée est prédit en comparant la séquence d'accès observée à une séquence d'accès modèle. Dans ce contexte, la séquence d'accès modèle est souvent appelée « Motif » ou « Pattern » en anglais. Il s'agit d'une succession temporelle prédéterminée de deltas qui se répète plusieurs fois lors de l'exécution du programme. 10 [006] Par exemple, si la séquence d'accès modèle est la suite temporelle de deltas suivants : 1, 2, 3, 4, 3, 2 et si la séquence d'accès observée est la suite suivante : 1, 2, 3, 4, 3, alors les procédés connus prédisent que le prochain delta aura très probablement la valeur 2. Pour cela, les procédés connus identifient la valeur du delta à ajouter à la séquence d'accès observée qui maximise la corrélation temporelle avec 15 la séquence d'accès modèle. Ensuite, la donnée à précharger dans la mémoire cache est la donnée enregistrée à l'adresse déduite à partir de ce delta prédit et de l'adresse lue lors de la dernière exécution de l'instruction de lecture. [7] A l'inverse, si la séquence d'accès observée est la séquence 4, 3, 1, 2, 3, les procédés connus remarquent que la suite 4, 3, 1, 2, 3 n'est pas corrélée 20 temporellement avec la séquence d'accès modèle 1, 2, 3, 4, 3, 2. Par conséquent, dans ce cas, les procédés connus ne sont pas capables de fournir une donnée à précharger dans la mémoire cache. [8] L'objectif de la présente invention est de proposer un procédé amélioré de prédiction de la donnée à précharger dans la mémoire cache. Elle a donc pour objet 25 un tel procédé comportant en plus les étapes suivantes: c) l'acquisition d'une distribution statistique, dite " modèle ", des deltas d'une séquence d'accès modèle, cette distribution statistique modèle comportant : - des classes de valeurs possibles pour les deltas, et associé à chacune de ces classes, 30 - un nombre fonction du nombre d'occurrence de cette classe dans la séquence d'accès modèle, d) la construction d'une distribution statistique, dite "observée", des deltas de la séquence d'accès observée, e) l'identification dans la distribution statistique observée, en la comparant avec la 35 distribution statistique modèle, de la classe la plus déficitaire, c'est-à-dire de la classe pour laquelle la différence NoDSM - NoDSO est maximale, où NoDSM et NoDSO sont les nombres d'occurrence de cette classe déduits, respectivement, de la distribution statistique modèle et de la distribution statistique observée, 3045183 3 f) la fourniture en tant que prédiction de la donnée à précharger dans la mémoire cache avant la prochaine exécution de la même instruction de lecture, d'au moins une adresse prédite où est contenue la donnée à précharger, cette adresse prédite étant construite à partir de la classe la plus déficitaire identifiée lors de l'étape e). 5 [009] Dans le procédé revendiqué, une distribution statistique modèle est utilisée pour identifier le delta prédit qui a le plus de chance d'être calculé pour l'instant t suivant. Plus précisément, dans le procédé revendiqué, on considère que le delta prédit qui a le plus de chance de se produire est celui qui permet de minimiser les écarts entre la distribution statistique modèle et la distribution statistique observée. 10 Grâce à cette approche, il n'est pas nécessaire qu'il existe une corrélation temporelle parfaite entre une séquence d'accès modèle et la séquence d'accès observée pour être capable de prédire la prochaine donnée à précharger. Par exemple, si l'on reprend l'exemple ci-dessus où la séquence d'accès modèle est 1, 2, 3, 4, 3, 2, la distribution statistique modèle associée à cette séquence associe aux valeurs 1, 2, 3 15 et 4 les nombres d'occurrence, respectivement, 1, 2, 2, 1. En d'autres termes, la distribution statistique modèle indique que dans la séquence d'accès modèle, la valeur 1 apparaît une seule fois, la valeur 2 apparaît deux fois, la valeur 3 apparaît deux fois et la valeur 4 apparaît une fois. [0010] Si la séquence d'accès observée est 4, 3, 1, 2, 3, la distribution statistique 20 observée construite pour cette séquence d'accès observée associe les valeurs 1, 2, 3, 4 respectivement en nombre d'occurrences 1, 1, 2, 1. On voit donc que le prochain delta de la séquence d'accès qui permettrait de rapprocher la distribution statistique observée le plus près possible de la distribution statistique modèle est un delta prédit dont la valeur est égale à 2. Ainsi, dans ces conditions, le procédé revendiqué est capable de prédire une donnée à précharger en mémoire cache même si l'ordre temporel des deltas de la séquence d'accès observée n'est pas le même que celui de la séquence d'accès modèle. Ainsi, le procédé revendiqué est robuste vis-à-vis d'un changement dans l'ordre temporel des deltas de la séquence d'accès observée par rapport à l'ordre temporel des deltas dans la séquence d'accès modèle. [0011] Le procédé revendiqué a été mis en oeuvre lors de l'exécution d'un programme où l'ordre temporel des deltas d'un motif peut changer par rapport à l'ordre de ces mêmes deltas dans une séquence d'accès modèle. Les résultats obtenus montrent que le procédé revendiqué estime plus souvent plus correctement la donnée à précharger dans la mémoire cache. La mise en oeuvre du procédé revendiqué a donc rendu l'exécution de ce programme plus rapide. [0012] Les modes de réalisation de ce procédé de prédiction peuvent comporter une ou plusieurs des caractéristiques suivantes : ^ lors de l'étape c), l'acquisition de la distribution statistique modèle comporte : - la mémorisation d'une séquence d'accès modèle contenant uniquement les M 40 derniers deltas successivement calculés pour chaque instant t compris à l'intérieur 3045183 4 d'une fenêtre glissante [t3 ; t2] antérieure à la fenêtre glissante [t1 ; to], où les instants t2 et t3 sont égaux aux instants t, respectivement le plus récent et le plus ancien, pour lesquels a été calculé un delta de la séquence d'accès modèle, et le nombre de deltas calculés pour des instants t compris entre les instants t2 et t1 est une constante 5 prédéterminée, et le nombre M est un nombre entier prédéterminé supérieur ou égal à deux, et - à chaque fois qu'une nouvelle séquence d'accès modèle est mémorisée, la construction de la distribution statistique modèle à partir des deltas de cette séquence d'accès modèle mémorisée ; 10 ^ systématiquement, il n'existe aucun instant t compris entre les instants t2 et t1 pour lequel un delta est calculé de sorte que la séquence d'accès modèle précède immédiatement en permanence la séquence d'accès observée ; ^ le procédé comporte : - le calcul d'une métrique de similarité dont la valeur varie de façon monotone en 15 fonction de l'importance des différences entre les distributions statistiques modèle et observée et/ou le calcul d'une erreur de prédiction dont la valeur varie de façon monotone en fonction du nombre de fois où l'adresse prédite à partir de la séquence d'accès observée pendant la fenêtre glissante [t1 ; to] est différente de l'adresse de la donnée à lire réellement contenue dans l'instruction de lecture exécutée à l'instant 20 suivant to+1, et - en réponse au franchissement d'un seuil prédéterminé par la métrique de similarité calculée et/ou par l'erreur de prédiction calculée, la modification du nombre N de deltas contenus dans la séquence d'accès observée ou du nombre M de deltas contenus dans la séquence d'accès modèle ; 25 ^ le procédé comporte : - le calcul d'une première métrique de similarité dont la valeur varie de façon monotone en fonction de l'importance des différences entre les distributions statistiques modèle et observée et/ou le calcul d'une première erreur de prédiction dont la valeur varie de façon monotone en fonction du nombre de fois où l'adresse 30 prédite à partir de la distribution statistique modèle et de la séquence d'accès observée pendant la fenêtre glissante [t1 ; to] est différente de l'adresse de la donnée à lire réellement contenue dans l'instruction de lecture exécutée à l'instant suivant to+1, et - la mémorisation d'une séquence d'accès, dite " de prédiction ", contenant 35 uniquement P deltas successivement calculés pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t5 ; t4] antérieure à la fenêtre glissante [t1 ; to], où les instants t4 et t5 sont égaux aux instants t, respectivement le plus récent et le plus 3045183 5 ancien, pour lesquels a été calculé un delta de la séquence d'accès de prédiction et le nombre P est nombre entier prédéterminé différent du nombre M, - la construction d'une distribution statistique dite " de prédiction ", à partir des deltas de la séquence d'accès de prédiction, 5 - le calcul d'une seconde métrique de similarité et/ou d'une seconde erreur de prédiction en utilisant la distribution statistique de prédiction à la place de la distribution statistique modèle, puis - si la seconde métrique de similarité calculée ou la seconde erreur de prédiction calculée est meilleure que, respectivement, la première métrique de similarité 10 calculée ou la première erreur de prédiction calculée, alors le nombre M est pris égale au nombre P pour l'itération suivante du procédé, sinon le nombre M reste inchangé ; ^ la séquence d'accès observée contient systématiquement le delta calculé à partir de l'adresse de la donnée à lire contenue dans l'instruction de lecture exécutée le plus récemment ; 15 ^ à chaque itération de l'étape e), une seule adresse prédite est fournie. [0013] Ces modes de réalisation du procédé de prédiction présentent en outre les avantages suivants : - La construction de la distribution statistique modèle à partir d'une séquence d'accès modèle relevée pendant une fenêtre glissante antérieure permet d'adapter 20 dynamiquement la distribution statistique modèle au fur et à mesure de l'exécution du programme tout en limitant la quantité de ressource mémoire utilisée. - Le fait que la séquence d'accès modèle précède immédiatement la séquence d'accès observée permet d'adapter très rapidement la distribution statistique modèle à une modification du motif qui se répète lors de l'exécution du programme. 25 - Le calcul d'une métrique de similarité entre les distributions statistiques modèle et observée ou le calcul d'une erreur de prédiction permet de détecter automatiquement que la taille de la séquence d'accès modèle ou de la séquence d'accès observée n'est plus adaptée au motif qui se répète lors de l'exécution du programme et donc de déclencher automatiquement une modification de cette taille au cours de l'exécution 30 du programme. - L'utilisation d'une distribution statistique de prédiction en plus de la distribution statistique modèle permet de tester les conséquences d'une modification de la taille de la séquence d'accès modèle pour essayer de trouver une taille qui permette d'obtenir de meilleurs résultats que la taille actuelle de la séquence d'accès modèle et 35 cela sans dégrader la qualité actuelle des prédictions fournies. - Le fait que la séquence d'accès observée contienne systématiquement le delta qui s'est produit à l'instant t le plus récent, permet de réagir plus rapidement à une 3045183 6 modification du motif qui se répète lors de l'exécution du programme et donc d'adapter plus rapidement le procédé de prédiction à cette modification. - Le fait de ne prédire qu'une seule donnée à précharger permet de limiter la taille des ressources mémoires nécessaires pour enregistrer les données prédites. Cela permet 5 également de limiter la pollution de la mémoire cache par des remplacements inutiles de lignes de cette mémoire cache. [0014] L'invention a également pour objet un procédé d'exécution d'un programme, enregistré dans une mémoire principale, par un microprocesseur associé à une mémoire cache, ce procédé comportant : io - l'exécution par le microprocesseur d'une instruction de lecture d'une donnée nécessaire à l'exécution du programme, cette instruction contenant l'adresse où est enregistrée cette donnée dans la mémoire principale, - si la donnée correspondant à l'adresse contenue dans l'instruction de lecture à exécuter se trouve dans la mémoire cache, la lecture de cette donnée dans la 15 mémoire cache, et sinon la lecture de cette donnée dans la mémoire principale ou dans une autre mémoire différente de la mémoire cache, - avant que le microprocesseur exécute une nouvelle fois la même instruction de lecture, la prédiction de la donnée à précharger dans la mémoire cache et le préchargement de la donnée prédite dans la mémoire cache ou dans une mémoire 20 tampon, dans lequel la prédiction est réalisée conformément au procédé revendiqué. [0015] L'invention a également pour objet un support d'enregistrement d'informations comportant des instructions pour l'exécution du procédé revendiqué, lorsque ces instructions sont exécutées par un calculateur électronique. 25 [0016] L'invention a également pour objet un module électronique de prédiction d'une donnée à précharger dans une mémoire cache, ce module étant agencé pour: a) pour chaque instant t où un microprocesseur exécute une instruction de lecture d'une donnée nécessaire à l'exécution d'un programme, calculer un écart, appelé delta, entre l'adresse de la donnée à lire contenue dans cette instruction de lecture 30 exécutée à l'instant t et l'adresse de la donnée à lire contenue dans cette même instruction de lecture lors de sa précédente exécution à un instant t-1, deux instructions de lecture étant les mêmes si elles correspondent toutes les deux à la même valeur du compteur ordinal du microprocesseur, b) mémoriser une séquence d'accès observée contenant uniquement les N deltas 35 calculés successivement pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t1 ; to], où les instants to et t1 sont égaux aux instants t, respectivement le plus récent et le plus ancien, pour lesquels a été calculé un delta de la séquence 3045183 7 d'accès observée et le nombre N est un nombre entier prédéterminé supérieur ou égal à deux, c) acquérir une distribution statistique, dite " modèle ", des deltas d'une séquence d'accès modèle, cette distribution statistique modèle comportant : 5 - des classes de valeurs possibles pour les deltas, et associé à chacune de ces classes, - un nombre fonction du nombre d'occurrence de cette classe dans la séquence d'accès modèle, d) construire une distribution statistique, dite "observée", des deltas de la séquence 10 d'accès observée, e) identifier dans la distribution statistique observée, en la comparant avec la distribution statistique modèle, la classe la plus déficitaire, c'est-à-dire la classe pour laquelle la différence NoDSM - NoDSO est maximale, où NoDSM et NoDSO sont les nombres d'occurrence de cette classe déduits, respectivement, de la distribution 15 statistique modèle et de la distribution statistique observée, f) fournir en tant que prédiction de la donnée à précharger dans la mémoire cache avant la prochaine exécution de la même instruction de lecture, au moins une adresse prédite où est contenue la donnée à précharger, cette adresse prédite étant construite à partir de la classe la plus déficitaire identifiée lors de l'étape e). 20 [0017] L'invention sera mieux comprise avec la lecture de la description qui va suivre, donnée uniquement à titre d'exemple non limitatif, et faite en se référant aux dessins sur lesquels : - la figure 1 est une illustration schématique d'une unité électronique de traitement, - la figure 2 est une illustration schématique du code d'un programme d'ordinateur 25 exécuté par l'unité de traitement de la figure 1 ; - la figure 3 est un organigramme générique d'un procédé de fonctionnement de l'unité de traitement de la figure 1 ; - la figure 4 est un organigramme d'un procédé de prédiction d'une donnée à précharger dans une mémoire cache, mis en oeuvre dans le procédé de la figure 3 ; 30 - la figure 5 est un chronogramme illustrant différentes séquences d'accès utilisées lors de la mise en oeuvre du procédé de la figure 4 ; - la figure 6 est un histogramme utilisé pour représenter des distributions statistiques utilisées lors de la mise en oeuvre du procédé de la figure 4 ; - la figure 7 est un chronogramme illustrant l'évolution des prédictions fournies par le 35 procédé de la figure 4 au cours du temps ; - la figure 8 est un organigramme d'un autre mode de réalisation d'un procédé de prédiction d'une donnée à précharger dans une mémoire cache, susceptible d'être mis en oeuvre à la place du procédé de la figure 4 ; 3045183 8 - la figure 9 est une illustration schématique de deux fonctions de répartition utilisées dans le procédé de la figure 8 ; - la figure 10 est un organigramme d'un procédé d'adaptation automatique de la taille d'une séquence d'accès modèle, utilisable en combinaison avec le procédé de la 5 figure 4 ou 8 ; - la figure 11 est un chronogramme illustrant l'évolution au cours du temps de deux grandeurs Po et Eo calculées par le procédé de la figure 10 ; - la figure 12 est un chronogramme illustrant l'évolution au cours du temps des tailles M et N de deux séquences d'accès calculées par le procédé de la figure 10 ; 10 - la figure 13 est un organigramme d'un procédé d'adaptation automatique de la taille des séquences d'accès utilisable en combinaison avec le procédé de la figure 4 ou 8. [0018] Dans ces figures les mêmes références sont utilisées pour désigner les mêmes éléments. Dans la suite de cette description, les caractéristiques et fonctions bien connues de l'homme du métier ne sont pas décrites en détail. 15 [0019] La figure 1 représente une unité électronique 2 de calcul. Par exemple, l'unité 2 est un ordinateur. La structure matérielle d'un tel ordinateur est bien connue et seuls les éléments nécessaires à la compréhension de l'invention sont représentés et décrits plus en détail. L'unité 2 comporte : - un calculateur électronique programmable 4, 20 - une mémoire principale 6, - une mémoire non volatile 8, et - un bus 10 de transfert de données entre les mémoires 8, 10 et le calculateur 4. [0020] La mémoire 6 est typiquement une mémoire rapide à laquelle le calculateur 4 accède plus rapidement qu'à la mémoire 8. Ici, la mémoire 6 est une mémoire vive. Il 25 peut s'agir d'une mémoire volatile telle qu'une DRAM (« Dynamic Random Access Memory »). La mémoire 6 peut aussi être une mémoire vive non volatile telle qu'une mémoire FLASH. [0021] La mémoire 8 est par exemple un disque dur ou tout autre type de mémoire non volatile. La mémoire 8 comporte un programme d'ordinateur 12 à exécuter par le 30 calculateur 4, ainsi que des données 14 à traiter par ce programme 12 lorsque celui-ci est exécuté. Lors de l'exécution du programme 12 par le calculateur 4, les instructions du programme 12 ainsi que les données 14 sont transférées dans un premier temps dans la mémoire 6 pour y accéder plus rapidement. Dans la mémoire 6, les instructions du programme 12 et les données 14 traitées par ce 35 programme portent, respectivement, les références numériques 16 et 18. [0022] Typiquement, les données 14 contiennent des données structurées sous forme de matrices ou sous forme de listes chaînées. Dans une matrice, chaque donnée est identifiée par des coordonnées telles que des numéros ligne et de colonne. Dans une liste chaînée, chaque donnée comporte un pointeur vers la 3045183 9 donnée précédente et/ou suivante de cette liste. Un exemple de données structurées est une image numérique. [0023] Le traitement de telles données structurées par le programme 12 implique généralement l'exécution de boucles qui sont réitérées un grand nombre de fois. 5 [0024] Le calculateur 4 comporte : - un microprocesseur 20 également connu sous l'acronyme CPU (« Central Processing Unit »), - une mémoire cache 22, - un module 24 de préchargement également connu sous le terme anglais de lo « prefetcher », - une mémoire tampon 26, et - un bus 28 de transfert de données entre le microprocesseur 20, la mémoire 22, la mémoire 24, la mémoire tampon 26 et le bus 10. [0025] Le microprocesseur 20 est apte à exécuter un programme. A cet effet, il 15 comporte en outre un registre PC appelé Compteur Ordinal (« Program Counter » en anglais) ou pointeur d'instructions (« Instruction Pointer » en anglais) qui contient l'adresse de l'instruction actuellement exécutée ou de l'instruction suivante à exécuter par le microprocesseur 20. [0026] La mémoire cache 22 est ici une mémoire cache de niveau L1. Elle permet 20 de stocker des données auxquelles le microprocesseur 20 peut accéder plus rapidement que si elles avaient été seulement stockées dans la mémoire 6. Par exemple ces données sont des instructions du programme 16 ou des données à traiter issues des données 18. La mémoire 22 comporte à cet effet une mémoire 30 et un micro-calculateur 32. La mémoire 30 contient les données auxquelles le 25 microprocesseur 20 peut accéder plus rapidement sans avoir à les lire dans la mémoire 6. Le micro-calculateur 32 gère l'enregistrement et l'effacement de données dans la mémoire 30. En particulier, quand une nouvelle donnée doit être enregistrée dans la mémoire 30, le micro-calculateur 32 détermine selon un algorithme qui lui est propre la ou les données à effacer dans la mémoire 30 pour libérer la place 30 nécessaire à l'enregistrement de cette nouvelle donnée dans la mémoire cache 22. [0027] Le module 24 a pour fonction de prédire, avant que le microprocesseur 20 n'en ait besoin, là où les données à précharger dans la mémoire cache 22 puis de déclencher le préchargement de ces données. Ici, le module 24 est apte à exécuter les procédés des figures 4, 8, 10 et 13. A cet effet, le module 24 peut comporter un 35 micro-calculateur dédié à cette fonction. Dans ce cas, il comporte sa propre mémoire contenant les instructions nécessaires pour exécuter les procédés des figures 4, 8, 10 et 13 et son propre microprocesseur qui exécute ces instructions. Il peut aussi s'agir d'un circuit intégré dédié. Dans ce cas, les instructions des procédés des figures 4, 8, 10 et 13 sont câblées en dur dans ce circuit intégré. 3045183 10 [0028] La mémoire 26 est ici une mémoire tampon utilisée par le module 24 pour y enregistrer temporairement la ou les données à précharger avant qu'elles soient transférées, si nécessaire, dans la mémoire cache 22. [0029] Les différents composants du calculateur 4 sont ici fabriqués sur un même 5 substrat telle qu'une puce en silicium. [0030] La figure 2 représente schématiquement une portion du code exécutable du programme 12. Dans cette figure, les lignes ondulées verticales indiquent que toutes les instructions du programme 12 n'ont pas été représentées. Plus précisément, seules deux instructions de lecture « Ld ©A1 » et « Ld ©A2 » ont été représentées. 10 Par la suite, ces deux instructions sont respectivement appelées instructions 11 et 12. Les instructions 11 et 12 provoquent le chargement dans des registres du microprocesseur 20, lorsqu'elles sont exécutées par ce microprocesseur 20, d'une donnée enregistrée, respectivement, aux adresses ©A1 et ©A2 de la mémoire 6. [0031] Une flèche qui part d'une instruction située après l'instruction 11 et qui 15 remonte jusqu'à une instruction située avant l'instruction 12 indique que les instructions 11 et 12 sont situées à l'intérieur d'une boucle susceptible d'être exécutée un grand nombre de fois. Les instructions 11 et 12 se situent respectivement aux adresses PC1 et PC2 du compteur ordinal PC. Ainsi, lorsque la valeur du compteur ordinal PC est égale à PC1, cela signifie que l'instruction 11 est en train d'être 20 exécutée ou va être exécutée. Lorsque la valeur du compteur ordinal PC est égale à PC2, cela signifie que l'instruction 12 est en train d'être exécutée ou va être exécutée. Ainsi, même si les adresses ©A1 et ©A2 des données à lire sont égales, la valeur du compteur ordinal PC permet d'identifier sans ambiguïté l'instruction de lecture en cours d'exécution ou qui va être exécutée. 25 [0032] Typiquement, les adresses ©A1 et ©A2 sont des adresses calculées par les instructions qui précèdent, respectivement, les instructions 11 et 12. Ainsi, d'une itération à la suivante de la boucle, la valeur des adresses ©A1 et ©A2 peut changer alors que les valeurs du compteur ordinal PC identifiant les instructions 11 et 12 ne changent pas lors de ces réitérations successives de la boucle. La donnée lue à 30 l'adresse ©A1 ou ©A2 peut être une instruction exécutable par le microprocesseur 20 ou une donnée à traiter par ce microprocesseur 20. [0033] Dès lors, comme décrit par la suite, la valeur du compteur ordinal PC est utilisée pour identifier de façon fiable une instruction de lecture donnée parmi l'ensemble des instructions de lecture que contient le programme 12. 35 [0034] Le fonctionnement générique de l'unité 2 de calcul va maintenant être décrit en référence au procédé de la figure 3. [0035] Au démarrage de l'exécution du programme 12, lors d'une étape 50, ce programme 12 et les données 14 sont chargés dans la mémoire 6 et portent dès lors les références numériques 16 et 18. 3045183 11 [0036] Lors d'une étape 51, le module 24 détermine s'il faut ou non mettre en oeuvre le préchargement de données dans la mémoire tampon 26. Pour cela, le module 24 vérifie si certaines conditions sont satisfaites. Si l'une de ces conditions n'est pas vérifiée, il procède seulement à une phase 52 d'exécution du programme 16 sans 5 préchargement de données dans la mémoire tampon 26. Dans le cas contraire, il procède à une phase 60 de préchargement de données dans la mémoire tampon 26. Par exemple, lors de l'étape 51, le module 24 vérifie si la séquence SA contient au moins M+N delta et, de préférence, Tmax delta. [0037] Lors de la phase 52, le microprocesseur 20 exécute les instructions du lo programme 16 pour traiter les données 18. Comme illustré sur la figure 2, lors de cette exécution, le microprocesseur 20 est amené à exécuter les instructions 11 et 12. Ces instructions 11 et 12 peuvent être exécutées un grand nombre de fois lorsqu'elles sont situées à l'intérieur d'une boucle comme c'est le cas ici. Ainsi, pour chacune de ces instructions de lecture, à partir des adresses successivement accédées lors de 15 chaque exécution de cette instruction, il est possible de construire une séquence ordonnée temporellement de deltas. La construction d'une telle séquence de delta est décrite plus en détail en référence au procédé de la figure 4. Typiquement, cette séquence de delta peut présenter un motif qui se répète. C'est en exploitant le fait qu'un motif se répète qu'il est possible de prédire le prochain delta calculé et donc 20 l'adresse qui sera accédée lors de la prochaine exécution de cette instruction de lecture. [0038] À partir de maintenant, le fonctionnement de l'unité 2 est décrit dans le cas particulier de l'instruction 11. Tout ce qui est décrit dans ce cas particulier est également exécuté en parallèle pour l'instruction 12 et pour toutes les instructions de 25 lecture situées à l'intérieur d'une boucle. [0039] Lors d'une étape 54, en réponse à l'exécution de l'instruction 11, le microcalculateur 32 détermine si la donnée correspondant à l'adresse ©A1 est déjà contenue dans la mémoire 30 ou non. [0040] Dans l'affirmative, lors d'une étape 56, la mémoire cache 22 retourne 30 immédiatement la donnée demandée par le microprocesseur 20 par l'intermédiaire du bus 28. Dans ce cas, typiquement, le microprocesseur 20 attend entre 2 et 15 cycles d'horloge avant d'obtenir la donnée requise et de poursuivre l'exécution du programme 16. [0041] Si la donnée correspondant à l'adresse ©A1 ne se trouve pas déjà dans la 35 mémoire 30, alors on est en présence d'un défaut de cache. Dans ce cas, lors d'une étape 58, la donnée est lue dans la mémoire 6 et transférée dans la mémoire cache 22. Ensuite, elle est transférée de la mémoire cache 22 vers le microprocesseur 20 par l'intermédiaire des bus 10 et 28. En cas de défaut de cache, il faut souvent que le microprocesseur 20 attende 10 ou 100 ou 1000 fois plus longtemps que lors de l'étape 56 avant d'obtenir la donnée requise et de pouvoir poursuivre l'exécution du 3045183 12 programme 16. Ainsi, un défaut de cache ralentit considérablement l'exécution du programme 16. [0042] La phase 60 est similaire à la phase 52 sauf que le module 24 met en plus en oeuvre le préchargement de données dans la mémoire cache 22. 5 [0043] Lors d'une étape 62, avant l'exécution de l'instruction de lecture 11, le module 24 prédit la donnée à précharger dans la mémoire cache 22. La prédiction doit être aussi fiable que possible pour maximiser la probabilité que la donnée requise lors de la prochaine exécution de l'instruction 11 par le microprocesseur 20 se trouve déjà dans la mémoire cache 22 ou dans la mémoire tampon 26. Un procédé de prédiction 10 mis en oeuvre par le module 24 est décrit plus en détail en référence aux figures 4 et 8. [0044] A l'issue de l'étape 62, lors d'une étape 64, si la donnée à précharger ne se trouve pas déjà dans la mémoire cache 22 ou dans la mémoire tampon 26, le module 24 la charge depuis la mémoire 6 et l'enregistre dans un premier temps dans la 15 mémoire tampon 26. Typiquement, la mémoire tampon 26 est capable de contenir au maximum une ligne ou un mot complet de la mémoire 6. La taille de la mémoire tampon 26 est donc inférieure à la taille de la mémoire cache 22. On notera à ce stade que transférer un mot complet ou une ligne complète de la mémoire 6 dans la mémoire tampon 26 ne prend généralement pas plus de temps que transférer 20 seulement la portion du mot ou de la ligne de la mémoire 6 qui contient la donnée à précharger. De plus, transférer un mot complet ou une ligne complète permet aussi de limiter l'apparition des défauts de cache. [0045] Ensuite, le microprocesseur 20 exécute l'instruction de lecture 11. [0046] Dès lors, lors d'une étape 66, le micro-calculateur 32 vérifie si l'adresse ©A1 25 contenue dans l'instruction 11 en cours d'exécution correspond à une donnée déjà enregistrée dans la mémoire cache 22 ou dans la mémoire tampon 26. [0047] Dans l'affirmative, lors d'une étape 68, si la donnée est déjà enregistrée dans la mémoire cache 22, alors le micro-calculateur 32 la transfère depuis la mémoire 30 vers le microprocesseur 20 comme décrit pour l'étape 56. Si la donnée n'est pas 30 contenue dans la mémoire cache 22 mais dans la mémoire tampon 26, le microcalculateur 32 transfère cette donnée depuis la mémoire tampon 26 vers la mémoire 30 puis la transfère depuis la mémoire 30 vers le microprocesseur 20 comme décrit pour l'étape 56. Typiquement, le micro-calculateur 32 recherche d'abord la donnée dans la mémoire 30 et seulement ensuite dans la mémoire tampon 26. Étant donnée 35 que la taille de la mémoire tampon 26 est très petite, même lorsque la donnée est transférée depuis la mémoire tampon 26 via la mémoire 30, le microprocesseur 20 obtient la donnée souhaitée presque aussi rapidement que si elle était contenue dans la mémoire 30. En pratique, c'est tout le contenu de la mémoire tampon qui est transféré dans la mémoire 30. 3045183 13 [0048] Si la donnée correspondant à l'adresse ©A1 n'est pas contenue dans la mémoire 30 et la mémoire tampon 26, lors d'une étape 70, cette donnée est lue dans la mémoire 6 puis transférée dans la mémoire cache 22 avant d'être finalement transférée vers le microprocesseur 20. Pour cela, on procède comme décrit pour 5 l'étape 58. De plus, le module 24 déclenche, seulement dans ce cas, le transfert du contenu de la mémoire tampon 26 vers la mémoire cache 22. Le micro-calculateur 32 gère alors l'enregistrement de la donnée à précharger dans la mémoire cache 22. Ainsi, dans ce mode de réalisation, la donnée à précharger est enregistrée dans la mémoire cache 22 uniquement si elle n'est pas tout de suite utilisée par le lo microprocesseur 20. On limite ainsi le nombre de fois où la donnée à précharger doit réellement être transférée dans la mémoire cache 22. [0049] Un procédé de prédiction de la donnée à précharger mis en oeuvre par le module 24 lors de l'exécution de l'étape 62 va maintenant être décrit en référence à la figure 4. 15 [0050] Lors d'une étape 100, à chaque instant où le microprocesseur 20 exécute une instruction de lecture, le module 24 relève l'identifiant de cette instruction et le compare à une liste d'identifiants d'instructions de lecture déjà exécutées. L'identifiant de l'instruction de lecture est ici l'adresse de cette instruction contenue dans le compteur ordinal PC du microprocesseur 20. 20 [0051] Si l'identifiant relevé n'est pas déjà contenu dans cette liste, lors d'une étape 102, le module 24 ajoute cet identifiant à cette liste et y associe l'adresse ©A de la donnée à lire contenue dans cette instruction de lecture. [0052] Si l'identifiant relevé est déjà contenu dans la liste, alors lors d'une étape 104, le module 24 calcule l'écart, appelé delta, entre l'adresse à lire contenue dans cette 25 instruction de lecture et l'adresse à lire contenue dans la même instruction de lecture lors de sa précédente exécution. Ensuite, le delta calculé et l'adresse à lire contenue dans l'instruction en cours d'exécution sont enregistrés dans la liste associée à l'identifiant de cette instruction. [0053] Dans cette liste, les deltas calculés successivement pour une même 30 instruction de lecture sont classés par ordre d'instant de calcul. Cela forme une séquence ordonnée temporellement de deltas calculés pour une même instruction de lecture. Cette séquence est appelée une séquence d'accès à la mémoire 6. Pour chaque instruction de lecture exécutée, le module 24 mémorise une séquence d'accès. En particulier, pour l'instruction 11, le module 24 mémorise une séquence 35 d'accès SA (Figure 5). Ici, pour limiter l'espace mémoire nécessaire pour stocker les différentes séquences d'accès, la taille de chaque séquence d'accès est limitée. Ici, la taille est limité à un nombre maximal Tmax de deltas calculés contenus dans une même séquence d'accès. Le nombre Tmax est strictement supérieur à quatre ou six ou dix. Lorsqu'une séquence d'accès contient déjà Tmax deltas calculés et qu'un nouveau 40 delta plus récent vient d'être calculé par le module 24, le delta le plus ancien de cette 3045183 14 séquence d'accès est effacé et le nouveau delta calculé est ajouté à cette séquence d'accès. Ainsi, chaque séquence d'accès contient seulement les Tmax deltas calculés les plus récents. [0054] À partir de maintenant, le fonctionnement du module 24 est décrit dans le cas 5 particulier de l'instruction 11. Le fonctionnement du module 24 pour l'une quelconque des autres instructions de lecture exécutées par le microprocesseur 20 est le même que celui qui va être décrit dans ce cas particulier. [0055] Pour les applications numériques données par la suite, on suppose que la séquence d'accès mémorisée pour l'instruction 11 est la séquence SA représentée sur 10 la figure 5. Dans la figure 5, l'axe des temps est orienté d'un instant to le plus récent vers les instants les plus anciens. Dans ce mode de réalisation, la séquence SA contient : - une séquence d'accès SO qui contient uniquement les N deltas successifs les plus récents, et 15 - une séquence d'accès SM qui contient uniquement les M deltas successifs plus anciens que les deltas de la séquence SO. [0056] Les tailles N et M sont des nombres entiers prédéterminés supérieurs ou égaux à 2 ou 4 ou 6. Le cumul des tailles N et M est toujours inférieur ou égal à la taille Tmax. Dans l'exemple de la figure 5, la taille M est égale à 9 et la taille N est 20 égale à 8. [0057] La séquence d'accès SO est appelée séquence d'accès observée. Elle contient tous les deltas calculés pour chaque instant t d'une fenêtre glissante d'observation [t1; to] allant de l'instant to à l'instant t1. L'instant t est un instant où l'instruction 11 est exécutée par le microprocesseur 20 et donc pour lequel le module 25 24 calcule un delta puis le mémorise dans la séquence SA. L'instant to est l'instant t le plus récent. L'instant t1 est l'instant t le plus ancien pour lequel un delta de la séquence SO a été calculé. [0058] La séquence SM contient tous les deltas calculés pour chaque instant t d'une fenêtre glissante [t3; t2] allant de l'instant t2 à l'instant t3. Les instants t2 et t3 sont les 30 instants t, respectivement le plus récent et le plus ancien, pour lesquels des deltas de la séquence SM ont été calculés. Dans ce mode de réalisation, la fenêtre glissante [t3; t2] se déplace en même temps que la fenêtre [t1; to] de manière à ce que la séquence SO contienne toujours les N deltas calculés les plus récents et que la séquence SM contiennent toujours les M deltas calculés qui précèdent immédiatement ceux de la 35 séquence SO. [0059] Ici, les séquences SO et SM sont distinctes et séparées l'une de l'autre par aucun delta calculé. Ainsi, l'intervalle de temps ]t1; t2[ ne contient aucun instant t d'exécution de l'instruction 11. [0060] Dans ce mode de réalisation, les tailles des séquences SO et SM sont en 40 permanence liées par la relation suivante : N = M-1. 3045183 15 [0061] À chaque fois qu'un nouveau delta est ajouté à la séquence SA, lors d'une étape 108, le delta le plus ancien de cette séquence SA est effacé. De plus, le module 24 met à jour et mémorise les séquences SO et SM suite à cette modification de la séquence SA. Ici, le nouveau delta calculé est ajouté à la séquence SO et 5 devient le delta le plus récent de cette séquence. Les autres deltas sont décalés d'une unité vers la gauche sur le graphique de la figure 5. Le précédent delta le plus ancien de la séquence SO est effacé de la séquence SO et devient le delta le plus récent de la séquence SM. [0062] Lors d'une étape 110, le module 24 acquiert une distribution statistique 10 modèle DSM. Une distribution statistique est un tableau qui associe, à chaque classe de valeur possible pour les deltas calculés d'une séquence d'accès, un nombre qui permet d'obtenir le nombre d'occurrence des valeurs de cette classe dans cette séquence d'accès. Pour maximiser l'efficacité de la prédiction, la séquence d'accès prise comme modèle doit correspondre à un motif qui se répète plusieurs fois dans la 15 séquence d'accès lors de l'exécution du programme 12. Dans ce mode de réalisation, la séquence d'accès prise comme modèle est la séquence SM et la distribution DSM est construite à chaque fois que la séquence SM est modifiée. [0063] Ici, chaque classe de la distribution DSM correspond à une seule valeur possible pour les deltas calculés. Le nombre associé à chaque classe est obtenu en 20 dénombrant le nombre d'occurrence de cette classe dans la séquence SM puis en divisant ce dénombrement par la taille M de la séquence SM. Ainsi, dans ce mode de réalisation, ce nombre correspond donc une fréquence d'apparition. La distribution DSM, ainsi construite pour la séquence SM de la figure 5, est représentée par des barres M dans l'histogramme de la figure 6. 25 [0064] Ensuite, lors d'une étape 112, une distribution statistique observée DSO est construite. La distribution DSO est la distribution statistique de la séquence SO. Cette distribution DSO est construite comme décrit en référence à l'étape 110, sauf que ce sont les deltas contenus dans la séquence SO qui sont pris en compte et non pas les deltas contenus dans la séquence SM. La distribution DSO, construite pour la 30 séquence SO de la figure 5, est représentée par des barres O dans l'histogramme de la figure 6. [0065] Lors d'une étape 114, le module 24 identifie dans la distribution DSO construite la classe la plus déficitaire. La classe la plus déficitaire est la classe pour laquelle la différence NoDSM - NoDSO est maximale. NoDSM et NoDSO sont les 35 nombres associés par, respectivement les distributions DSM et DSO, à la même classe. Pour cela, le module 24 compare la distribution DSO, construite lors de l'étape 112, à la distribution DSM construite lors de l'étape 110. Dans le cas représenté sur la figure 6, la classe la plus déficitaire est la classe associée à la valeur « 10 ». Cela signifie que si la séquence SO reproduit un motif proche de celui 40 qui s'est produit pendant la séquence SM, alors il est fortement probable que la 3045183 16 valeur du prochain delta calculé soit égale à 10. Pour cette raison, la valeur de la classe la plus déficitaire identifiée lors de l'étape 114 est appelée delta prédit par la suite. [0066] On notera que contrairement au procédé de prédiction connu, le procédé 5 décrit ici est robuste vis-à-vis de permutations dans l'ordre temporel dans lequel apparaissent les deltas d'un motif qui se répètent plusieurs fois lors de l'exécution du programme 12. [0067] Ce procédé est aussi robuste vis-à-vis de certains écarts entre le motif observé et le modèle de ce motif. Par exemple, ici, la séquence SO de la figure 5 10 comporte la valeur « 3 » qui n'existe pas dans la séquence SM. Or, cette différence, ne perturbe en rien l'identification du delta prédit. [0068] Lors d'une étape 116, le module 24 fournit en tant que prédiction de la donnée à précharger, l'adresse, dite « prédite », de cette donnée dans la mémoire 6. Pour cela, le module 24 calcule cette adresse prédite à partir du delta prédit lors de 15 l'étape 114. Par exemple, le module 24 ajoute à la dernière adresse accédée par l'instruction 11, la valeur du delta prédit. La dernière adresse accédée par l'instruction 11 est contenue dans la liste mémorisée lors des étapes 102 et 104. [0069] Le procédé de la figure 4 a été implémenté et testé avec un programme qui réalise une rotation d'une image numérique. Le résultat obtenu est illustré par le 20 graphe de la figure 7. L'axe des abscisses de ce graphe indique les instants t où l'instruction 11 a été exécutée. Pour chacun de ces instants t, le graphe comporte un cercle si le delta prédit et le delta réellement observé sont identiques et un point noir si le delta observé ne se superpose pas avec le delta prédit. Ce graphe montre que très souvent, le delta prédit est correct et donc que le microprocesseur 20 accède très 25 rapidement à la donnée à lire. Par exemple, dans les simulations réalisées, le delta prédit est différent du delta réellement calculé seulement dans 16 % des cas. [0070] Le procédé de la figure 8 est identique à celui de la figure 4 sauf que les étapes 110, 112 et 114 sont remplacées par des étapes 150, 152 et 154. [0071] L'étape 150 est identique à l'étape 110 sauf que la distribution DSM 30 construite est mémorisée sous la forme d'une fonction SM(x) de répartition connue sous le terme anglais de « cumulative distribution function ». La fonction de répartition SM(x) indique et retourne la probabilité que la valeur d'un delta calculé de la séquence SM ait une valeur inférieure au seuil x. La fonction SM(x), obtenue à partir de la séquence SM de la figure 5, est représentée sur le graphe de la figure 9. Sur ce 35 graphe, l'axe des abscisses contient les différentes valeurs possibles pour le seuil x. [0072] La probabilité retournée par la fonction SM(x) est comprise entre 0 et 1, où « 0 » correspond à une probabilité nulle et « 1 » correspond à une probabilité de 100 %. Pour chaque valeur possible du seuil x, la valeur de la fonction SM(x) est obtenue en dénombrant dans la séquence SM le nombre de deltas calculés dont la 3045183 17 valeur est inférieure à ce seuil x. Ensuite, ce dénombrement est divisé par la taille M de la séquence SM. [0073] De même, lors de l'étape 152, la distribution DSO construite est mémorisée sous la forme d'une fonction SO(x) de répartition. La fonction SO(x) est construite 5 comme décrite pour la fonction SM(x) sauf qu'on utilise la séquence SO pour la construire à la place de la séquence SM. [0074] L'identification de la classe la plus déficitaire, lors de l'étape 154, est alors obtenue en calculant pour chaque valeur de x égale à une valeur possible d'un delta calculé, la différence suivante : SM(x) - SM(x-1) - [SO(x) - SO(x-1)]. La classe la 10 plus déficitaire est égale à la valeur de x pour laquelle cette différence est maximale. On notera que pour la classe la plus déficitaire on a les deux égalités suivantes : NoDSM = SM(x) - SM(x-1) et NoDSO = SO(x) - SO(x-1). L'étape 154 identifie donc comme classe la plus déficitaire la même classe que celle identifiée en mettant en oeuvre le procédé de la figure 4. 15 [0075] De préférence, en plus du procédé de la figure 4 ou 8, le module 24 exécute un procédé d'ajustement dynamique de la taille des séquences SM et SO. Un exemple d'un tel procédé d'ajustement dynamique va maintenant être décrit en référence à la figure 10. Comme pour les procédés précédents, le procédé de la figure 10 est décrit dans le cas particulier de l'instruction 11. 20 [0076] A intervalles prédéterminés, par exemple à chaque fois que la distribution DSM ou la distribution DSO est modifiée, lors d'une étape 160, le module 24 calcule une métrique po de similarité entre les distributions DSM et DSO. Par exemple, ici, le module 24 implémente le test d'hypothèse non paramétrique de Cramer-Von Mises pour deux échantillons. Ce test est utilisé pour comparer les fonctions de la répartition 25 SM(x) et SO(x) entre elles. Pour cela, au préalable, ces fonctions SM(x) et SO(x) sont construites, par exemple, comme décrit en référence aux étapes 150 et 152. Ce test d'hypothèse est bien connu et seules ses principales caractéristiques sont rappelées ici. La distance w entre les deux distributions statistiques est définie par la relation suivante : x)-SO ciSO ( x 30 [0077] La statistique T de similarité du test dans le cas où les deux échantillons correspondent, respectivement, aux séquences SM et SO, est donnée par la relation suivante : 3045183 18 - où N et M sont les tailles, respectivement, des séquences SO et SM, et - U est défini par la relation suivante : où r, et s, sont respectivement, le rang des deltas, respectivement des séquences SM et SO, dans la séquence SA. 5 [0078] Dans ce mode de réalisation, la métrique po de similarité est obtenue à partir de la statistique T ainsi calculée. Ici, la métrique po est égale à la valeur-p plus connue sous le terme anglais de « p-value ». Par exemple, le module 24 calcule la métrique po à l'aide de la relation suivante : où : io - p est la valeur-p po, - ET est défini par la relation suivante : eT 1 6 f(:11 i _"\-1 ) - Var(T) est défini par la relation suivante : + N +1 41.1A ( I .N [0079] Si la métrique po dépasse un seuil Spo prédéterminé, les distributions DSM et DSO sont considérées comme similaires. Dans le cas contraire, elles sont 15 considérées comme étant différentes. [0080] En parallèle, lors d'une étape 164, et pour le même instant t que celui pour lequel la métrique po est calculé, le module 24 calcule une erreur Eo de prédiction Ir( ) 3045183 19 dont la valeur est d'autant plus importante que le nombre de prédictions erronées est important. Par exemple, ici, l'erreur Eo est un taux d'erreur égal au rapport NPC/NPT, où - NPC est le nombre de fois où le delta prédit identifié pour l'instant t est égal au delta 5 réellement calculé ultérieurement pour cet instant t, et - NPT est le nombre total d'instants t pour lesquels un delta prédit a été identifié. [0081] Typiquement le rapport NPC/NPT est calculé en prenant en compte seulement les C derniers instants t, où C est un nombre prédéterminé supérieur à deux ou cinq. Ici, C est égal à cinq. io [0082] Ensuite, lors d'une étape 166, le module 24 détermine automatiquement s'il doit modifier la taille des séquences SM et SO. Par exemple, à cet effet, le module 24 vérifie si les deux conditions suivantes sont simultanément remplies : - condition 1) : po Spo, et - condition 2) : Eo SE0. 15 [0083] Lorsque la condition 1) est vérifiée, cela signifie que la distribution DSM est substantiellement différente de la distribution DSO. Lorsque la condition 2) est vérifiée, cela signifie que le taux d'erreur de prédiction est important. [0084] Les seuils Spo et SEo sont des seuils prédéterminés et réglés expérimentalement pour que le procédé d'ajustement dynamique de la taille des 20 séquences SM et SO fonctionne correctement quel que soit le programme exécuté. Le seuil Spo est typiquement compris entre 0 et 1. Ici, sa valeur est choisie supérieure ou égale à 0,9 et, de préférence, supérieure ou égale à 0,95 ou 0,99. [0085] Si les deux conditions 1) et 2) sont simultanément vérifiées, le module 24 procède immédiatement à une étape 168, lors de laquelle les tailles des séquences 25 SM et SO sont modifiées. Par exemple, il incrémente de 1 les tailles M et N. Si la taille M atteint une taille maximale TMm' prédéfinie, la taille M est réinitialisée à une valeur minimale supérieure ou égale à 2 ou 4. La taille M peut aussi être réinitialisée à la valeur zéro. Dans ce cas, le pré-chargement de données dans la mémoire tampon 26 est désactivé au moins pour le M+N instants t suivants. 30 [0086] Si l'une des deux conditions 1) et 2) n'est pas vérifiée, les tailles des séquences SM et SO ne sont pas modifiées. [0087] Les procédés des figures 8 et 10 ont été conjointement mis en oeuvre lors de l'exécution du programme 12 qui exécute une rotation d'une image numérique. Le graphe de la figure 11 représente l'évolution de la métrique po et de l'erreur Eo au 35 cours du temps. Le graphe de la figure 12 représente l'évolution au cours du temps des tailles M et N des séquences SM et SO lors de l'exécution de ce même programme 12. On constate que rapidement la taille des séquences SM et SO se verrouille sur une bonne valeur. [0088] Toutefois, le procédé de la figure 10 ne permet pas toujours de trouver la 40 taille M optimale. Par exemple, si la séquence d'accès comporte une alternance 3045183 20 répétée d'un premier motif et d'un second motif, le procédé de la figure 10 risque de verrouiller la taille M à une valeur égale à la taille du premier motif ou du second motif. Par exemple, la taille du premier motif est égale à quatre deltas successifs et la taille du second motif est égale à 3 deltas successifs. Dans ce type de situation, 5 l'erreur Eo peut parfois encore être minimisée en prenant la taille M égale à la taille d'une fenêtre qui englobe systématiquement une occurrence du premier motif et une occurrence du second motif. Par exemple, un choix intéressant de la taille M si les premier et second motifs sont contigus est de prendre, dans cet exemple, M = 7 (4 + 3). Or, le procédé de la figure 10 arrête d'incrémenter la taille M dès qu'il a trouvé 10 une taille qui vérifie simultanément les conditions 1) et 2). Ainsi, si les conditions 1) et 2) sont simultanément satisfaites avec M = 3 ou M = 4, le module 24 ne va pas explorer les tailles plus grandes et donc la taille M = 7. De plus, il se peut très bien que l'erreur Eo soit plus mauvaise pour M = 5 et M = 6 que pour M = 3 ou 4. Dès lors, continuer à augmenter la taille M alors que les conditions 1) et 2) sont déjà satisfaites 15 risque d'accroître l'erreur de prédiction. Pour remédier à cet inconvénient, il est proposé d'exécuter en plus du procédé de la figure 10 ou à la place de ce procédé, un procédé d'exploration de différentes tailles possibles pour la séquence SM. Un mode de réalisation d'un tel procédé va maintenant être décrit en référence au procédé de la figure 13. 20 [0089] A intervalles prédéterminés, par exemple, dès que la taille M de la séquence SM est verrouillée sur une valeur donnée, lors d'une étape 180, le module 24 mémorise une séquence d'accès modèle SMP dite « de prédiction » et une séquence d'accès observée SOP. Un exemple de séquences SMP et SOP est représenté sur la figure 5. La séquence SMP contient uniquement les MP deltas calculés 25 successivement pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t5; t4]. Les instants t4 et t5 sont les instants, respectivement le plus récent et le plus ancien, pour lesquels un delta de la séquence SMP a été calculé. Ici, la taille MP est strictement supérieure à la taille M. Ainsi, l'instant t5 est antérieur à l'instant t3. La séquence SOP contient quant à elle uniquement les NP deltas calculés 30 successivement pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t4; to]. Dans ce mode de réalisation, les tailles MP et NP sont reliées l'une à l'autre par la même relation que celle qui relie les tailles M et N. Ainsi, la taille NP est égale à MP1. Pour la mise en oeuvre du procédé de la figure 13, la séquence SA mémorisée pour l'instruction 11 lors des étapes 100, 102 et 104 est la même. En effet, 35 typiquement, la taille Tm' est supérieure ou égale à M + N + 1 et, de préférence, supérieure ou égale à M + N + 4 ou M + N + 6. Comme pour les séquences SM et SO, chaque mise à jour de la séquence SA provoque une mise à jour correspondante des séquences SMP et SOP. [0090] Lors d'une étape 182, le module 24 construit des distributions statistiques 40 DSMP et DSOP dites "de prédiction" à partir, respectivement, des séquences SMP et 3045183 21 SOP. Pour faire cela, il procède comme décrit en référence aux étapes 150 et 152 sauf que ce sont les séquences SMP et SOP qui sont utilisées à la place, respectivement, des séquences SM et SO. [0091] Lors d'une étape 184, le module 24 calcule une métrique pp de similarité 5 entre la distribution DSMP et la distribution DSOP. Par exemple, pour cela, il procède comme décrit en référence à l'étape 160. [0092] Lors de cette étape 184, le module 24 calcule également une erreur Ep de prédiction. Pour cela, il identifie un delta prédit en comparant la distribution DSMP à la distribution DSOP. A cet effet, il procède comme décrit en référence aux étapes 114 lo ou 154 sauf que les distributions DSMP et DSOP sont utilisées à la place, respectivement, des distribution DSM et DSO. Ensuite, il calcule l'erreur Ep de la même manière que ce qui a été décrit pour l'erreur Eo. [0093] Si la métrique pp et l'erreur Ep sont meilleures que, respectivement, la métrique po et l'erreur Eo calculées au même moment en utilisant la séquence SM, 15 alors il procède à une étape 186 où la taille M est modifiée pour qu'elle soit égale à la taille MP de la séquence SMP. [0094] Dans le cas contraire, lors d'une étape 188, la taille MP de la séquence SMP est modifiée pour explorer d'autres tailles possibles de la séquence SM. Par exemple, la taille MP est incrémentée de 1. Si la taille MP atteint la taille maximale TMmax, le 20 procédé est arrêté ou réinitialisé avec une taille MP plus petite. Lors de l'étape 188, la taille de la séquence SM n'est pas modifiée. [0095] Ainsi, grâce au procédé de la figure 13, le module 24 peut trouver une taille M optimale pour la séquence SM. [0096] De nombreux autres modes de réalisation sont possibles. Par exemple, ce 25 qui a été décrit dans le cas particulier d'instructions de lecture peut également être mise en oeuvre lors de l'écriture d'une donnée dans la mémoire 6. En effet, l'écriture d'une donnée dans la mémoire 6 peut être accélérée en pré-chargeant dans la mémoire cache 22 la donnée pré-existante située à l'adresse où la donnée doit être écrite. Ensuite, lorsqu'une instruction d'écriture est exécutée, c'est la donnée pré- 30 existante enregistrée dans la mémoire cache 22 qui est remplacée par une nouvelle donnée. L'écriture de la nouvelle donnée dans la mémoire cache 22 est plus rapide qu'une écriture directement dans la mémoire 6. La nouvelle donnée est alors déplacée ultérieurement de la mémoire cache 22 vers la mémoire 6 et remplace alors la donnée pré-existante qui s'y trouvait encore. Cette dernière étape de transfert 35 d'une donnée entre la mémoire cache 22 et la mémoire 6 peut se faire sans interrompre l'exécution du programme par le microprocesseur 20. Dans ce cas, l'écriture d'une donnée dans la mémoire 6 implique donc l'exécution d'une instruction de lecture de la donnée pré-existante. Ce qui a été décrit précédemment peut donc être appliqué à cette instruction de lecture pour accélérer son exécution et donc 3045183 22 l'exécution de l'écriture dans la mémoire 6. Dans ce dernier cas, l'adresse à prédir correspond à l'adresse qui contient la donnée pré-existante. [0097] L'unité de calcul peut comporter plusieurs niveaux de mémoire cache hiérarchisés par vitesse d'accès. Ces différents niveaux de mémoire cache sont 5 disposés entre le microprocesseur 20 et la mémoire principale 6. Par exemple, l'unité de calcul peut comprendre trois niveaux de mémoire cache communément appelés niveau L1, L2 et L3. L'accès à la mémoire cache de niveau L1 est plus rapide que l'accès à la mémoire cache de niveau L2. L'accès à la mémoire cache de niveau L2 est plus rapide que l'accès à la mémoire cache de niveau L3. Enfin, l'accès à la 10 mémoire cache de niveau L3 est plus rapide que l'accès à la mémoire 6. Généralement, les tailles de ces mémoires caches varient en décroissant au fur et à mesure que l'on se rapproche de la mémoire à laquelle le microprocesseur accède le plus rapidement. En général, une donnée est d'abord enregistrée dans la mémoire 6. Ensuite, si utile, elle est transférée dans la mémoire cache de niveau L3. Si 15 nécessaire, elle est ensuite transférée de la mémoire cache de niveau L3 vers la mémoire cache de niveau L2. Enfin, toujours si nécessaire, elle est transférée de la mémoire cache de niveau L2 vers la mémoire cache de niveau L1. Par exemple, il n'est pas possible de transférer une donnée de la mémoire 6 directement dans une mémoire cache de niveau L1 ou L2. 20 [0098] La mémoire cache de niveau L2 peut être réalisée sur le même substrat que celui utilisé pour réaliser le microprocesseur 20. Actuellement, la mémoire cache de niveau L3 est le plus souvent une mémoire réalisée sur une puce distincte de celle où est réalisé le microprocesseur. [0099] Le procédé de prédiction d'une donnée à précharger décrit dans le cas 25 particulier de la mémoire cache de niveau L1 peut aussi être mis en oeuvre pour prédire la donnée à précharger dans n'importe lequel de ces niveaux de mémoire cache. En particulier, le procédé décrit peut simultanément être mis en oeuvre pour chacun de ces niveaux de mémoire cache. [00100] La mémoire tampon 26 peut être omise. Dans ce cas, la donnée prédite par 30 le procédé de la figure 4 est directement enregistrée dans la mémoire cache 22 au lieu d'être d'abord enregistrée dans la mémoire tampon 26. [00101] Le préchargement de données dans la mémoire tampon 26 n'est pas toujours systématiquement activé. Par exemple, le préchargement des données dans la mémoire tampon 26 est activé uniquement si les instructions de lecture sont situées 35 dans la boucle de niveau le plus inférieur, c'est-à-dire qu'il n'existe pas d'autre boucle située à l'intérieur de cette boucle et contenant les mêmes instructions de lecture. L'activation du préchargement de données dans la mémoire tampon 26 est par exemple déclenchée par une instruction spécifique contenue dans le code du programme exécuté. 3045183 23 [00102] Les étapes 110 et 112 de constructions des distributions statistiques DSM et DSO peuvent être réalisées en parallèle ou dans l'ordre inverse de la figure 4. [00103] En variante, à un instant donné, il est possible de prédire non pas une seule donnée à précharger mais plusieurs. Par exemple, la taille de la séquence SO est 5 prise égale à M-a, où a est un nombre entier strictement supérieur à 1 et strictement inférieur à M-2 ou M/2. Lors de l'étape 114 ou 154, a deltas correspondant aux a classes les plus déficitaires de la distribution DSO sont identifiés. Ensuite, a adresses prédites sont construites, chacune à partir d'un de ces deltas prédits. Par exemple, a peut être égal à 2, 3 ou 4. io [00104] Dans un autre mode de réalisation, une classe des distributions DSM et DSO ne correspondant pas à une seule valeur possible pour des deltas calculés mais à une plage continue de valeurs possibles pour ces deltas calculés. Par exemple, la première classe contient les valeurs comprises entre 0 et 3, la deuxième classe les valeurs comprises entre 4 et 6 et ainsi de suite. Ainsi, chaque classe contient 15 plusieurs valeurs possibles pour les deltas. Toutefois, comme précédemment, les classes sont de préférence disjointes les unes des autres et ne se chevauchent pas entre elles. Dès lors, lors de l'étape 114 ou 154, l'identification de la classe la plus déficitaire revient à identifier plusieurs deltas prédits. Ensuite, plusieurs adresses prédites sont construites à partir chacune d'un delta prédit respectif. Ainsi, dans cette 20 variante, le procédé fournit plusieurs adresses prédites en tant que prédiction de plusieurs données à précharger dans la mémoire cache 22. De préférence, dans ce mode de réalisation, la taille d'une classe est choisie égale à la taille d'une ligne de la mémoire cache 22 ou d'un bloc de la mémoire cache 22. [00105] En variante, la séquence SM est séparée de la séquence SO par un ou 25 plusieurs deltas calculés. Ainsi, dans cette variante, les séquences SM et SO sont disjointes. [00106] La séquence SM n'est pas nécessairement une séquence d'accès construite à partir des deltas calculés pendant une fenêtre glissante antérieure [t3 ; t2]. Par exemple, en variante, la séquence SM contient les deltas successivement calculés 30 entre des instants t3 et t2 fixes qui n'évoluent plus ensuite au fur et à mesure que de nouveaux deltas sont calculés. A titre d'illustration, dans ce cas, la mémorisation de la séquence SM est déclenchée par des instructions incorporées dans le programme 12. [00107] La séquence SM peut aussi être une séquence pré-enregistrée et chargée en 35 mémoire au début de l'exécution du programme 12 comme décrit dans la demande de brevet US5305389 Al. [00108] En variante, la séquence SO ne contient pas le delta calculé pour l'instant t le plus récent. [00109] La relation qui relie la taille de la séquence SO à la taille de la séquence SM 40 peut être différente. Par exemple, cette relation est définie par l'équation suivante: 3045183 24 N = m-p, où f3 est un nombre entier, de préférence, supérieur ou égal à deux et inférieur ou égal à M-2. Dans une autre variante, la taille N de la séquence SO peut être choisie supérieure à la taille M de la séquence SM. Dans ce cas, f3 est un entier inférieur ou égal à -1 et, par exemple, supérieur ou égal à -5 ou -3. 5 [00110] La distribution DSM n'est pas nécessairement construite à partir d'une séquence d'accès relevée par le module 24. En variante, la distribution DSM est une distribution statistique pré-enregistrée dans la mémoire 8 et chargée par le programme 12 au début de son exécution ou au cours de son exécution. Dans ce cas, il n'est pas nécessaire de mémoriser la séquence SM pour construire la lo distribution DSM. [00111] La distribution DSM ou DSO peut être mémorisée sous d'autres formes qu'un histogramme ou qu'une fonction de répartition. Par exemple, chaque distribution statistique est construite et mémorisée comme une densité de probabilité. [00112] D'autres méthodes sont possibles pour calculer la métrique de similarité entre 15 les distributions DSM et DSO. Par exemple, un calcul de la corrélation entre les distributions DSM et DSO fournit aussi une mesure de la similarité entre ces deux distributions statistiques. Un autre test d'hypothèse tel que le test d'hypothèse non paramétrique de Smirnov peut aussi être utilisé à la place du test de Cramer-Von Mises. Dans le cas du test d'hypothèse de Smirnov, la métrique po de similarité peut 20 aussi être une valeur-p. Elle se calcule, par exemple, à l'aide de la relation suivante : où : - p(y) est la valeur de la métrique de similarité po, - K est un entier positif prédéterminé, typiquement supérieur à 3 ou 50 ou 100, - y est défini par la relation suivante : y 25 - An est la statistique du test de Smirnov. Elle est l'équivalent de la statistique T du test de Cramer von misses. Elle est comprise entre 0 et 1. Elle correspond aussi à l'écart maximal entre les deux distributions statistiques. - n est défini par la relation suivante : n= N N [00113] A un instant donné, des métriques de similarité entre plusieurs distributions 30 DSM différentes et la distribution DSO peuvent être calculées. Ensuite, la distribution 3045183 25 DSM la plus similaire à la distribution DSO est utilisée pour identifier le delta prédit. Par exemple, les différentes distributions DSM sont chacune construites à partir d'une séquence SM ayant une taille M différente des autres séquences SM utilisées pour construire les autres distributions DSM. Dès lors, cela permet pour un instant t donné 5 de tester simultanément différentes tailles possibles de la séquence SM pour sélectionner, parmi ces différentes tailles testées, la taille la plus appropriée pour identifier le delta prédit. Ensuite, c'est cette taille la plus appropriée qui est utilisée pour la séquence SM lors des itérations suivantes du procédé. [00114] Plutôt que d'utiliser une valeur-p en tant que métrique de similarité, il est 10 aussi possible d'utiliser, par exemple, directement la statistique T ou An et de la comparer à un seuil prédéterminé. Dans ce cas, la valeur du seuil prédéterminé est typiquement obtenue à partir d'une table qui donne la valeur de ce seuil en fonction du degré de confiance souhaité. [00115] D'autres méthodes de calcul de l'erreur Eo de prédiction sont possibles. Par 15 exemple, le nombre C est choisi beaucoup plus grand, voire même égal à l'infini. Il est aussi possible de calculer une erreur de prédiction qui est en plus fonction de l'écart, en valeur absolue, entre le delta prédit pour l'instant t suivant identifié à l'étape 114 ou 154 et le delta réellement calculé pour cet instant t. [00116] Pour déclencher la modification de la taille des séquences SM et SO, d'autres 20 critères sont possibles. Par exemple, en variante, une seule des conditions choisies parmi les conditions 1) et 2) est utilisée. [00117] D'autres modes de réalisation de l'étape 168 sont possibles. Par exemple, la taille M est incrémentée de 2 en 2 et non pas de 1 en 1. [00118] En variante, le procédé de la figure 13 est mis en oeuvre sans mettre en 25 oeuvre le procédé de la figure 10. Par exemple, le procédé de la figure 13 est combiné avec la mise en oeuvre du procédé de la figure 4. Dans ce cas, une modification de la taille des séquences SM et SO est uniquement provoquée par l'exécution du procédé de la figure 13. Dans une autre variante, le procédé de la figure 13 est utilisé pour explorer des tailles MP possibles pour la séquence SMP plus 30 petite que la taille M de la séquence SM actuellement utilisée. [00119] Pour un même instant t donné, le procédé de la figure 13 peut être exécuté pour plusieurs tailles MP différentes. Cela permet d'explorer à un instant donné plusieurs tailles possibles pour la séquence SM. [00120] Dans un autre mode de réalisation, une bibliothèque de plusieurs distributions 35 DSM différentes est enregistrée dans la mémoire 6. Ensuite, à intervalles prédéterminés, le module 24 sélectionne dans cette bibliothèque la distribution DSM à utiliser. Par exemple, pour sélectionner la distribution DSM, il calcule pour chaque distribution DSM enregistrée dans cette bibliothèque la métrique de similarité et/ou l'erreur de prédiction comme décrit en référence à l'étape 184. Ensuite, il sélectionne 40 la distribution DSM qui maximise la métrique de similarité et/ou qui minimise l'erreur 3045183 26 de prédiction. Dans cette variante, il n'est pas nécessaire de mémoriser et d'utiliser la séquence SM. [00121] Le module 24 de préchargement peut aussi être intégré à l'intérieur du microprocesseur 20. Il peut aussi être réalisé sous forme logiciel. Dans ce cas, c'est 5 le microprocesseur 20 qui exécute les instructions enregistrées dans la mémoire du module 24. Dans ce dernier cas, le module 24 est un support d'enregistrement d'informations contenant les instructions nécessaires à l'exécution des procédés des figures 4, 8, 10 et 13. Le module 24 peut aussi être intégré à la mémoire cache 22. Dans ce cas, c'est le micro-calculateur 32 qui est adapté pour réaliser l'ensemble des lo fonctions du module 24. REVENDICATIONS1. Procédé de prédiction d'une donnée à précharger dans une mémoire cache, ce procédé comportant : a) pour chaque instant t où un microprocesseur exécute une instruction de lecture d'une donnée nécessaire à l'exécution d'un programme, le calcul (104) d'un écart, appelé delta, entre l'adresse de la donnée à lire contenue dans cette instruction de lecture exécutée à l'instant t et l'adresse de la donnée à lire contenue dans cette même instruction de lecture lors de sa précédente exécution à un instant t-1, deux instructions de lecture étant les mêmes si elles correspondent toutes les deux à la même valeur du compteur ordinal du microprocesseur, b) la mémorisation (108) d'une séquence d'accès observée contenant uniquement les N deltas calculés successivement pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t1 ; to], où les instants to et t1 sont égaux aux instants t, respectivement le plus récent et le plus ancien, pour lesquels a été calculé un delta de la séquence d'accès observée et le nombre N est un nombre entier prédéterminé supérieur ou égal à deux, caractérisé en ce que le procédé comporte aussi : c) l'acquisition (110 ; 150) d'une distribution statistique, dite " modèle ", des deltas 20 d'une séquence d'accès modèle, cette distribution statistique modèle comportant : - des classes de valeurs possibles pour les deltas, et associé à chacune de ces classes, - un nombre fonction du nombre d'occurrence de cette classe dans la séquence d'accès modèle, 25 d) la construction (112 ; 152) d'une distribution statistique, dite "observée", des deltas de la séquence d'accès observée, e) l'identification (114, 154) dans la distribution statistique observée, en la comparant avec la distribution statistique modèle, de la classe la plus déficitaire, c'est-à-dire de la classe pour laquelle la différence NoDSM - NoDSO est maximale, où NoDSM et 30 NoDSO sont les nombres d'occurrence de cette classe déduits, respectivement, de la distribution statistique modèle et de la distribution statistique observée, f) la fourniture (116) en tant que prédiction de la donnée à précharger dans la mémoire cache avant la prochaine exécution de la même instruction de lecture, d'au moins une adresse prédite où est contenue la donnée à précharger, cette adresse 35 prédite étant construite à partir de la classe la plus déficitaire identifiée lors de l'étape e). 2. Procédé selon la revendication 1, dans lequel, lors de l'étape c), l'acquisition de la 3045183 28 distribution statistique modèle comporte : - la mémorisation (108) d'une séquence d'accès modèle contenant uniquement les M derniers deltas successivement calculés pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t3 ; t2] antérieure à la fenêtre glissante [t1 ; to], où les instants t2 5 et t3 sont égaux aux instants t, respectivement le plus récent et le plus ancien, pour lesquels a été calculé un delta de la séquence d'accès modèle, et le nombre de deltas calculés pour des instants t compris entre les instants t2 et t1 est une constante prédéterminée, et le nombre M est un nombre entier prédéterminé supérieur ou égal à deux, et 10 - à chaque fois qu'une nouvelle séquence d'accès modèle est mémorisée, la construction (110 ; 150) de la distribution statistique modèle à partir des deltas de cette séquence d'accès modèle mémorisée. 3. Procédé selon la revendication 2, dans lequel, systématiquement, il n'existe 15 aucun instant t compris entre les instants t2 et t1 pour lequel un delta est calculé de sorte que la séquence d'accès modèle précède immédiatement en permanence la séquence d'accès observée. 4. Procédé selon l'une quelconque des revendications précédentes, dans lequel le 20 procédé comporte : - le calcul (160) d'une métrique de similarité dont la valeur varie de façon monotone en fonction de l'importance des différences entre les distributions statistiques modèle et observée et/ou le calcul (164) d'une erreur de prédiction dont la valeur varie de façon monotone en fonction du nombre de fois où l'adresse prédite à partir de la 25 séquence d'accès observée pendant la fenêtre glissante [t1 ; to] est différente de l'adresse de la donnée à lire réellement contenue dans l'instruction de lecture exécutée à l'instant suivant to+1, et - en réponse au franchissement d'un seuil prédéterminé par la métrique de similarité calculée et/ou par l'erreur de prédiction calculée, la modification (168) du nombre N 30 de deltas contenus dans la séquence d'accès observée ou du nombre M de deltas contenus dans la séquence d'accès modèle. 5. Procédé selon l'une quelconque des revendications précédentes, dans lequel le procédé comporte : 35 - le calcul (160) d'une première métrique de similarité dont la valeur varie de façon monotone en fonction de l'importance des différences entre les distributions statistiques modèle et observée et/ou le calcul (164) d'une première erreur de prédiction dont la valeur varie de façon monotone en fonction du nombre de fois où 3045183 29 l'adresse prédite à partir de la distribution statistique modèle et de la séquence d'accès observée pendant la fenêtre glissante [t1 ; to] est différente de l'adresse de la donnée à lire réellement contenue dans l'instruction de lecture exécutée à l'instant suivant to+1, et 5 - la mémorisation (180) d'une séquence d'accès, dite " de prédiction ", contenant uniquement P deltas successivement calculés pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t5; t4] antérieure à la fenêtre glissante [t1 ; to], où les instants t4 et t5 sont égaux aux instants t, respectivement le plus récent et le plus ancien, pour lesquels a été calculé un delta de la séquence d'accès de prédiction et 10 le nombre P est nombre entier prédéterminé différent du nombre M, - la construction (182) d'une distribution statistique dite " de prédiction ", à partir des deltas de la séquence d'accès de prédiction, - le calcul (184) d'une seconde métrique de similarité et/ou d'une seconde erreur de prédiction en utilisant la distribution statistique de prospection à la place de la 15 distribution statistique modèle, puis - si la seconde métrique de similarité calculée ou la seconde erreur de prédiction calculée est meilleure que, respectivement, la première métrique de similarité calculée ou la première erreur de prédiction calculée, alors le nombre M est pris égale (186) au nombre P pour l'itération suivante du procédé, sinon le nombre M reste inchangé. 6. Procédé selon l'une quelconque des revendications précédentes, dans lequel la séquence d'accès observée contient systématiquement le delta calculé à partir de l'adresse de la donnée à lire contenue dans l'instruction de lecture exécutée le plus 25 récemment. 7. Procédé selon l'une quelconque des revendications précédentes, dans lequel, à chaque itération de l'étape e), une seule adresse prédite est fournie. 30 8. Procédé d'exécution d'un programme, enregistré dans une mémoire principale, par un microprocesseur associé à une mémoire cache, ce procédé comportant : - l'exécution par le microprocesseur d'une instruction de lecture d'une donnée nécessaire à l'exécution du programme, cette instruction contenant l'adresse où est enregistrée cette donnée dans la mémoire principale, 35 - si la donnée correspondant à l'adresse contenue dans l'instruction de lecture à exécuter se trouve dans la mémoire cache, la lecture (56) de cette donnée dans la 3045183 30 mémoire cache, et sinon la lecture (58) de cette donnée dans la mémoire principale ou dans une autre mémoire différente de la mémoire cache, - avant que le microprocesseur exécute une nouvelle fois la même instruction de lecture, la prédiction (62) de la donnée à précharger dans la mémoire cache et le 5 préchargement de la donnée prédite dans la mémoire cache ou dans une mémoire tampon, caractérisé en ce que la prédiction (62) est réalisée conformément à l'une quelconque des revendications précédentes. lo 9. Support d'enregistrement d'informations, caractérisé en ce qu'il comporte des instructions pour l'exécution d'un procédé conforme à l'une quelconque des revendications précédentes, lorsque ces instructions sont exécutées par un microprocesseur. 15 10. Module électronique (24) de prédiction d'une donnée à précharger dans une mémoire cache, ce module étant agencé pour: a) pour chaque instant t où un microprocesseur exécute une instruction de lecture d'une donnée nécessaire à l'exécution d'un programme, calculer un écart, appelé delta, entre l'adresse de la donnée à lire contenue dans cette instruction de lecture 20 exécutée à l'instant t et l'adresse de la donnée à lire contenue dans cette même instruction de lecture lors de sa précédente exécution à un instant t-1, deux instructions de lecture étant les mêmes si elles correspondent toutes les deux à la même valeur du compteur ordinal du microprocesseur, b) mémoriser une séquence d'accès observée contenant uniquement les N deltas calculés successivement pour chaque instant t compris à l'intérieur d'une fenêtre glissante [t1 ; to], où les instants to et t1 sont égaux aux instants t, respectivement le plus récent et le plus ancien, pour lesquels a été calculé un delta de la séquence d'accès observée et le nombre N est un nombre entier prédéterminé supérieur ou égal à deux, caractérisé en ce que le module électronique est aussi agencé pour : c) acquérir une distribution statistique, dite " modèle ", des deltas d'une séquence d'accès modèle, cette distribution statistique modèle comportant : - des classes de valeurs possibles pour les deltas, et associé à chacune de ces classes, - un nombre fonction du nombre d'occurrence de cette classe dans la séquence d'accès modèle, 3045183 31 d) construire une distribution statistique, dite "observée", des deltas de la séquence d'accès observée, e) identifier dans la distribution statistique observée, en la comparant avec la distribution statistique modèle, la classe la plus déficitaire, c'est-à-dire la classe pour 5 laquelle la différence NoDSM - NoDSO est maximale, où NoDSM et NoDSO sont les nombres d'occurrence de cette classe déduits, respectivement, de la distribution statistique modèle et de la distribution statistique observée, f) fournir en tant que prédiction de la donnée à précharger dans la mémoire cache avant la prochaine exécution de la même instruction de lecture, au moins une lo adresse prédite où est contenue la donnée à précharger, cette adresse prédite étant construite à partir de la classe la plus déficitaire identifiée lors de l'étape e).