FR 3027128 A1 20160415 FR 1559545 A 20151007 APPAREIL, SYSTÈMES ET PROCEDES POUR FOURNIR UNE MÉMOIRE CACHE À GESTION EFFICACE DE LA MÉMOIRE CONTEXTE Domaine de l'invention [0001] La présente invention concerne un appareil, des systèmes et des procédés pour fournir une mémoire cache à gestion efficace de la mémoire. Invention associée [0002] Un système informatique peut comprendre un système de stockage pouvant maintenir des données. Un système de stockage peut comprendre un ou plusieurs types de dispositifs de stockage tels que, par exemple, les lecteurs de disque dur (HDDs) et les lecteurs optiques. Ces types de dispositifs de stockage sont peu coûteux et peuvent contenir une grande quantité de données. Cependant, ils sont lents par rapport à d'autres éléments utilisés dans un système informatique. Par exemple, un lecteur de disque dur de consommateur peut stocker des téraoctets de données sur puce mais a une vitesse de transfert théorique maximale de 300 mégaoctets (MB) par seconde. [0003] D'autres types de dispositifs de stockage sont plus rapides que les HDDs et les lecteurs optiques. Par exemple, une mémoire à accès aléatoire (RAM) a une vitesse de transfert théorique maximale de, par exemple, 12,8 gigaoctets (GO) par seconde. Même un lecteur à état solide (SSD) est plus rapide que les HDDs et les lecteurs optiques. Cependant, ces dispositifs tendent à être plus coûteux. [0004] Certains dispositifs de mémoire intégrés peuvent même être plus rapides que les RAMs ou les SSDs. Par exemple, une mémoire sur puce spécialisée contenue dans une unité de traitement centrale (CPU) peut exposer une performance encore meilleure, avec une vitesse de transfert de 16 GO par seconde plus de cinquante fois plus rapide que les dispositifs de stockage hors puce. Cependant, une mémoire sur puce est souvent extrêmement coûteuse. [0005] Parce que les dispositifs de mémoire doivent effectuer ce compromis entre prix et performance, une technique connue comme mise en mémoire cache peut être utilisée pour augmenter ou accélérer la performance d'ensemble d'un système de stockage. La mise en - 1 - 3027128 mémoire cache se base sur une observation que des données identiques peuvent être réutilisées à maintes reprises sur une courte période de temps par un dispositif hôte, tel qu'une application logicielle et/ou un système d'exploitation tournant sur le dispositif hôte, ou par un autre composant matériel. C'est pourquoi un système de stockage peut utiliser une petite quantité de 5 mémoire à accès rapide (appelée mémoire cache) pour mémoriser les données auxquelles on accède régulièrement de sorte que les données auxquelles on accède régulièrement peuvent facilement être amenées aux systèmes informatiques. RÉSUMÉ [0006] Les modes de réalisation de la présente invention concernent un appareil, des 10 systèmes et des procédés pour fournir une mémoire cache à gestion efficace de la mémoire à l'aide d'un lecteur à état solide. [0007] Certains modes de réalisation comprennent un procédé. Le procédé peut comprendre la réception, au niveau d'un contrôleur de mémoire prévu dans un système de stockage couplé à un dispositif hôte via une interface, d'une demande d'accès à la mémoire, où la demande d'accès 15 à la mémoire comprend un identifiant de bloc de mémoire qui identifie un bloc de mémoire. Le procédé peut également comprendre la détermination, au niveau du contrôleur de mémoire, du fait que les données associées à la demande d'accès à la mémoire doivent être mémorisées dans un des blocs de mémoire prévu dans la mémoire cache et que chacun des blocs de mémoire contenus dans la mémoire cache est déjà occupé avec des données valides. Le procédé peut 20 également comprendre la sélection, par le contrôleur de mémoire, d'un des blocs de mémoire et la détermination d'un premier décompte de transactions associé au bloc de mémoire sélectionné, le premier décompte de transactions indiquant les informations d'heure/de date auxquelles on a accédé au bloc de mémoire sélectionné. Lorsque le premier décompte de transactions répond à un critère prédéterminé, le procédé peut comprendre le fait d'amener, par le contrôleur de 25 mémoire, le bloc de mémoire sélectionné à mémoriser les données. Lorsque le premier décompte de transactions ne répond pas au critère prédéterminé, le procédé peut comprendre la sélection, par le contrôleur de mémoire, d'un autre des blocs de mémoire jusqu'à ce que le contrôleur de mémoire sélectionne un bloc de mémoire dont le décompte de transactions répond au critère prédéterminé. - 2 - 3027128 [0008] Dans certains modes de réalisation, la sélection d'un des blocs de mémoire peut comprendre la sélection d'un identifiant de bloc de mémoire à l'aide d'un générateur de nombre aléatoire. [0009] Dans certains modes de réalisation, le procédé peut également comprendre le 5 maintien d'un seuil de décompte de transactions et le premier décompte de transactions répondant au critère prédéterminé lorsque le premier décompte de transactions répond à une condition prédéterminée par rapport au seuil de décompte de transactions. [0010] Dans certains modes de réalisation, le premier décompte de transactions répond à la condition prédéterminée par rapport au seuil de décompte de transactions lorsque le premier 10 décompte de transactions est inférieur au seuil de décompte de transactions. [0011] Dans certains modes de réalisation, lorsqu'un nombre moyen d'itérations utilisé pour identifier le bloc de mémoire sélectionné est petit, le procédé peut comprendre le fait de susciter une modification du seuil de décompte de transactions pour réduire un nombre de blocs de mémoire répondant au critère prédéterminé, 15 [0012] Dans certains modes de réalisation, le procédé peut comprendre le maintien d'une liste de décompte de transactions ayant au moins une entrée, l'au moins une entrée indiquant un nombre de blocs de mémoire ayant un décompte de transactions compris dans une plage préconfigurée ; et la détermination du seuil de décompte de transactions sur la base du nombre de blocs de mémoire ayant un décompte de transactions compris dans la plage préconfigurée. 20 [0013] Dans certains modes de réalisation, le procédé peut comprendre la réception d'un paramètre indiquant un nombre de blocs de mémoire répondant au critère prédéterminé ; et la détermination de la plage préconfigurée sur la base du paramètre. [0014] Dans certains modes de réalisation, le procédé peut comprendre la réception, au niveau du contrôleur de mémoire, d'une première demande d'accès à la mémoire, la première 25 demande d'accès à la mémoire comprenant un premier identifiant de bloc de mémoire identifiant un premier bloc de mémoire ; la détermination, au niveau du contrôleur de mémoire, du fait que les données associées à la première demande d'accès à la mémoire sont déjà mémorisées dans un des blocs de mémoire contenus dans la mémoire cache ; et la mise à jour d'un décompte de transactions d'un des blocs de mémoire contenus dans la mémoire cache pour refléter la première 30 demande d'accès à la mémoire. - 3 - 3027128 [0015] Dans certains modes de réalisation, le procédé peut comprendre l'identification d'une entrée de la liste de décompte de transactions associée au premier bloc de mémoire et la mise à jour du nombre de blocs de mémoire dans l'entrée pour refléter la première demande d'accès à la mémoire. 5 [0016] Certains modes de réalisation comprennent un système de stockage. Le système de stockage peut comprendre une mémoire cache comprenant une pluralité de blocs de mémoire pour maintenir des données et un contrôleur de mémoire configuré pour traiter une demande d'accès à la mémoire reçue d'un dispositif hôte, la demande d'accès à la mémoire comprenant un identifiant de bloc de mémoire qui identifie un bloc de mémoire. Le contrôleur de mémoire 10 pouvant être configuré pour déterminer que les données associées à la demande d'accès à la mémoire doivent être mémorisées dans un des blocs de mémoire contenus dans la mémoire cache et que chacun des blocs de mémoire contenus dans la mémoire cache est déjà occupé avec des données valides, sélectionner un des blocs de mémoire contenus dans la mémoire cache et déterminer un premier décompte de transactions associé au bloc de mémoire sélectionné, le 15 premier décompte de transactions indiquant les informations d'heure/de date auxquelles on a accédé au bloc de mémoire sélectionné. Lorsque le premier décompte de transactions répond à un critère prédéterminé, le contrôleur de mémoire peut être configuré pour amener le bloc de mémoire sélectionné à mémoriser les données. Lorsque le premier décompte de transactions ne répond pas au critère prédéterminé, le contrôleur de mémoire peut être configuré pour 20 sélectionner un autre des blocs de mémoire jusqu'à ce que le contrôleur de mémoire sélectionne un bloc de mémoire dont le décompte de transactions répond au critère prédéterminé. [0017] Dans certains modes de réalisation, le contrôleur de mémoire est configuré pour sélectionner un identifiant de bloc de mémoire à l'aide d'un générateur de nombre aléatoire. [0018] Dans- certains modes de réalisation, le contrôleur de mémoire est configuré pour 25 maintenir un seuil de décompte de transactions et le premier décompte de transactions répondant au critère prédéterminé lorsque le premier décompte de transactions répond à une condition prédéterminée par rapport au seuil de décompte de transactions. [0019] Dans certains modes de réalisation, lorsqu'un nombre moyen d'itérations utilisé pour identifier le bloc de mémoire sélectionné est petit, le contrôleur de mémoire est configuré pour 30 susciter une modification du seuil de décompte de transactions pour réduire un nombre de blocs de mémoire répondant au critère prédéterminé. - 4 - 3027128 [0020] Dans certains modes de réalisation, le contrôleur de mémoire est configuré pour : maintenir une liste de décompte de transactions ayant au moins une entrée, l'au moins une entrée indiquant un nombre de blocs de mémoire ayant un décompte de transactions compris dans une plage préconfigurée ; et déterminer le seuil de décompte de transactions sur la base du nombre de 5 blocs de mémoire ayant un décompte de transactions compris dans la plage préconfigurée. [0021] Dans certains modes de réalisation, le contrôleur de mémoire est configuré pour recevoir un paramètre indiquant un nombre de blocs de mémoire répondant au critère prédéterminé ; et déterminer la plage préconfigurée sur la base du paramètre. [0022] Dans certains modes de réalisation, le contrôleur de mémoire est configuré pour 10 recevoir une première demande d'accès à la mémoire, la première demande d'accès à la mémoire comprenant un premier identifiant de bloc de mémoire qui identifie un premier bloc de mémoire, déterminer que les données associées à la première demande d'accès à la mémoire sont déjà mémorisées dans un des blocs de mémoire contenus dans la mémoire cache et mettre à jour un décompte de transactions d'un des blocs de mémoire contenus dans la mémoire cache pour 15 refléter la première demande d'accès à la mémoire. [0023] Certains modes de réalisation comprennent un support lisible par ordinateur non transitoire ayant des instructions exécutables. Les instructions exécutables peuvent être activées pour amener un contrôleur de mémoire à recevoir une demande d'accès à la mémoire provenant d'un dispositif hôte sur une interface, la demande d'accès à la mémoire comprenant un 20 identifiant de bloc de mémoire qui identifie un bloc de mémoire, déterminer que les données associées à la demande d'accès à la mémoire doivent être mémorisées dans un des blocs de mémoire contenus dans la mémoire cache et que chacun des blocs de mémoire contenus dans la mémoire cache est déjà occupé avec des données valides et sélectionner un des blocs de mémoire contenus dans la mémoire cache. Les instructions exécutables peuvent également être activées 25 pour amener le contrôleur de mémoire à déterminer un premier décompte de transactions associé au bloc de mémoire sélectionné, le premier décompte de transactions indiquant les informations d'heure/de date auxquelles on a accédé au bloc de mémoire sélectionné. Lorsque le premier décompte de transactions répond à un critère prédéterminé, les instructions exécutables peuvent également être activées pour amener le contrôleur de mémoire à amener le bloc de mémoire sélectionné à mémoriser les données. Lorsque le premier décompte de transactions ne répond pas au critère prédéterminé, les instructions exécutables peuvent également être activées pour amener - 5 - 3027128 le contrôleur de mémoire à sélectionner un autre des blocs de mémoire jusqu'à ce que le contrôleur de mémoire sélectionne un bloc de mémoire dont le décompte de transactions répond au critère prédéterminé. [0024] Dans certains modes de réalisation, le support lisible par ordinateur non transitoire 5 peut également comprendre des instructions exécutables pouvant être activées pour amener le contrôleur de mémoire à maintenir un seuil de décompte de transactions et le premier décompte de transactions répondant au critère prédéterminé lorsque le premier décompte de transactions répond à une condition prédéterminée par rapport au seuil de décompte de transactions. [0025] Dans certains modes de réalisation, le support lisible par ordinateur non transitoire 10 peut également comprendre des instructions exécutables pouvant être activées pour amener le contrôleur de mémoire à maintenir une liste de décompte de transactions ayant au moins une entrée, l'au moins une entrée indiquant un nombre de blocs de mémoire ayant un décompte de transactions compris dans une plage préconfigurée, et déterminer le seuil de décompte de transactions sur la base du nombre de blocs de mémoire ayant un décompte de transactions 15 compris dans la plage préconfigurée. [0026] Dans certains modes de réalisation, le support lisible par ordinateur non transitoire peut également comprendre des instructions exécutables pouvant être activées pour amener le contrôleur de mémoire à recevoir une première demande d'accès à la mémoire, la première demande d'accès à la mémoire comprenant un premier identifiant de bloc de mémoire qui 20 identifie un premier bloc de mémoire, déterminer que les données associées à la première demande d'accès à la mémoire sont déjà mémorisées dans un des blocs de mémoire contenus dans la mémoire cache et mettre à jour un décompte de transactions d'un des blocs de mémoire contenus dans la mémoire cache pour refléter la première demande d'accès à la mémoire. BRÈVE DESCRIPTION DES FIGURES 25 [0027] Divers objets, caractéristiques et avantages de la présente invention peuvent être compris de façon plus exhaustive en référence à la description détaillée suivante considérée en association avec les dessins suivants, des numéros de référence identiques identifiant des éléments identiques. Les dessins suivants ont des fins d'illustration uniquement et ne visent pas à limiter l'invention dont la portée est exposée dans les revendications suivantes. - 6 - 3027128 [0028] La figure 1 illustre un exemple de système informatique 100 ayant un système de stockage selon certains modes de réalisation de la présente invention. [0029] La figure 2 illustre une probabilité de trouver un des blocs de mémoire utilisés moins récemment à travers des requêtes aléatoires en fonction du nombre de requêtes aléatoires. 5 [0030] Les figures 3A-3B illustrent un procédé dans lequel un contrôleur de mémoire traite une demande d'accès à la mémoire selon certains modes de réalisation de la présente invention. [0031] La figure 4 illustre un procédé pour sélectionner un des blocs de mémoire utilisés moins récemment selon certains modes de réalisation de la présente invention. DESCRIPTION DÉTAILLÉE 10 [0032] Une mémoire cache peut être utilisée pour améliorer le temps d'accès moyen aux données dans un système de stockage. Cependant, une mémoire cache peut provoquer une très grande consommation de mémoire du fait qu'une mémoire cache nécessite non seulement des blocs de mémoire pour stocker des données mais aussi un contrôleur de mémoire coordonnant les opérations d'accès à la mémoire pour les blocs de mémoire contenus dans la mémoire cache. 15 [0033] Un contrôleur de mémoire est souvent configuré pour garantir que les données stockées dans les blocs de mémoire sont utilisées aussi souvent que possible. À cette fin, un contrôleur de mémoire peut être configuré pour déterminer lequel des blocs de mémoire a été utilisé le moins récemment (par exemple le bloc de mémoire auquel on n'a pas accédé pendant le temps le plus long) et provoquer l'écrasement des données du bloc de mémoire le moins 20 récemment utilisé par de données qui seront probablement utilisées plus souvent. Cette caractéristique est appelée mécanisme de suppression des données les moins récemment utilisées (LRU). [0034] Souvent, un contrôleur de mémoire met en oeuvre le mécanisme de suppression des données LRU à l'aide d'une liste à chaînon double. Par exemple, un contrôleur de mémoire peut 25 maintenir une liste à chaînon double qui comprend des noeuds représentant des blocs de mémoire dans une mémoire cache. Les noeuds contenus dans la liste à chaînon double sont ordonnés en fonction de la date/heure auxquelles les blocs de mémoire associés ont été lus ou écrits. C'est pourquoi le contrôleur de mémoire peut accéder au dernier noeud dans la liste à chaînon double pour identifier rapidement le bloc de mémoire auquel on a accédé le moins récemment. - 7 - 3027128 [0035] Ce mécanisme, cependant, peut nécessiter une quantité significative de mémoire étant donné que le contrôleur de mémoire doit maintenir une liste à chaînon double ayant le même nombre de noeuds que le nombre de blocs de mémoire, qui peut être de l'ordre du milliard (par exemple 2 milliards de blocs de mémoire pour une mémoire cache de 8 TB ayant une taille de 5 bloc de mémoire de 4KB.) Étant donné que chaque noeud dans la liste à chaînon double peut consommer 16 octets, le nombre total d'octets nécessaires au maintien de la liste à chaînon double peut être de dizaines de milliards, ce qui est significatif. Si l'on considère que la liste à chaînon double est mise en oeuvre à l'aide d'une mémoire à accès rapide, telle qu'une mémoire à accès aléatoire statique (SRAM), le coût associé au mécanisme de suppression des données LRU 10 peut être élevé. [0036] La présente invention expose un mécanisme de suppression des données LRU modifié (également appelé « mécanisme LRU modifié ») pouvant atteindre un mode de fonctionnement similaire au mécanisme de suppression des données LRU traditionnel (également appelé « mécanisme LRU traditionnel »), avec une mémoire requise sensiblement 15 moindre. Plus particulièrement, la présente invention illustre un contrôleur de mémoire configuré pour supprimer les données provenant d'un bloc de mémoire moins récemment utilisé, contrairement au bloc de mémoire utilisé le moins récemment. Par exemple, supposons qu'une mémoire cache a 10 blocs de mémoire, dont 8 auxquels on a accédé il y a moins de 100 cycles d'horloge, un auquel on a accédé il y a 150 cycles d'horloge et un auquel on a accédé il y a 160 20 cycles. Le mécanisme LRU traditionnel sélectionnera le bloc de mémoire auquel on a accédé il y a 160 cycles tandis que le mécanisme LRU modifié peut être conçu pour sélectionner un des blocs de mémoire utilisés moins récemment. C'est pourquoi, le contrôleur de mémoire, utilisant le mécanisme LRU modifié, peut sélectionner soit le bloc de mémoire auquel on a accédé il y a 150 cycles d'horloge soit celui auquel on a accédé il y a 160 cycles. Lorsqu'un nombre de blocs 25 de mémoire utilisés moins récemment (également appelé « blocs de mémoire cibles ») est petit par rapport au nombre de blocs de mémoire 112 dans la mémoire cache 106, le mode de fonctionnement du mécanisme LRU modifié peut être sensiblement similaire au mode de fonctionnement du mécanisme LRU traditionnel. [0037] Dans certains modes de réalisation, le contrôleur de mémoire est configuré pour 30 maintenir un poinçon d'entrée/sortie (« IOStamp ») pour chaque bloc de mémoire dans la mémoire cache. Le poinçon IOStamp peut indiquer un ordre dans lequel on a accédé aux blocs - 8 - 3027128 de mémoire. Par exemple, on a pu accéder à un bloc de mémoire associé à un poinçon IOStamp inférieur moins récemment qu'à un bloc de mémoire associé à un poinçon IOStamp supérieur. [0038] Le contrôleur de mémoire peut également maintenir un seuil de poinçon IOStampThreshold. Le seuil de poinçon IOStampThreshold peut être utilisé pour identifier les 5 blocs de mémoire cibles (par exemple les blocs de mémoire dont les données peuvent être supprimées pour faire place à de nouvelles données) à partir du groupe commun de blocs de mémoire contenus dans la mémoire cache. Par exemple, lorsqu'un bloc de mémoire est associé à un poinçon IOStamp inférieur au seuil de poinçon IOStampThreshold, le contrôleur de mémoire peut déterminer que le bloc de mémoire est un bloc de mémoire cible et peut supprimer les 10 données dans ce bloc de mémoire pour faire de l'espace pour de nouvelles données. [0039] Le contrôleur de mémoire peut utiliser le poinçon IOStamp et le seuil de poinçon IOStampThreshold pour identifier les blocs de mémoire cibles provenant de la mémoire cache. Lorsque le contrôleur de mémoire décide d'écrire de nouvelles données dans la mémoire cache et que tous les blocs de mémoire contenus dans la mémoire cache sont occupés, alors le contrôleur 15 de mémoire peut sélectionner un des blocs de mémoire cibles contenus dans la mémoire cache, supprimer les données provenant du bloc de mémoire cible sélectionné et écrire les nouvelles données dans le bloc de mémoire cible sélectionné. [0040] Pour sélectionner un des blocs de mémoire cibles contenus dans la mémoire cache, le contrôleur de mémoire peut sélectionner aléatoirement un bloc de mémoire et déterminer un 20 poinçon IOStamp du bloc de mémoire sélectionné aléatoirement. Si le poinçon IOStamp déterminé est inférieur au seuil de poinçon IOStampThreshold, le contrôleur de mémoire peut indiquer que le bloc de mémoire sélectionné peut être utilisé pour de nouvelles données. En revanche, si le poinçon IOStamp déterminé est supérieur au seuil de poinçon IOStampThreshold, alors le contrôleur de mémoire peut ignorer ce bloc de mémoire, sélectionner aléatoirement un 25 nouveau bloc de mémoire et répéter ce procédé jusqu'à ce que le bloc de mémoire aléatoirement sélectionné ait un poinçon IOStamp inférieur au seuil de poinçon IOStampThreshold. [0041] Dans certains modes de réalisation, le contrôleur de mémoire peut maintenir une liste de poinçons IOStamp. La liste de poinçons IOStamp peut comprendre une liste chaînée. La liste chaînée peut comprendre une pluralité de noeuds, chaque noeud indiquant un nombre de blocs de 30 mémoire associé à un poinçon IOStamp à l'intérieur d'une plage préconfigurée. Par exemple, - 9 - 3027128 supposons que Lo, L1, ..., L,i, Li, soient des nombres réels. Le premier noeud dans une liste de poinçons IOStamp peut indiquer un nombre de blocs de mémoire ayant le poinçon IOStamp à l'intérieur de la plage de 0 5 IOStamp REVENDICATIONS1. Procédé comprenant : la réception, au niveau d'un contrôleur de mémoire dans un système de stockage 5 couplé à un dispositif hôte via une interface, d'une demande d'accès à la mémoire, la demande d'accès à la mémoire comprenant un identifiant de bloc de mémoire qui identifie un bloc de mémoire ; la détermination, au niveau du contrôleur de mémoire, du fait que les données associées à la demande d'accès à la mémoire doivent être mémorisées dans un des blocs de 10 mémoire contenus dans la mémoire cache et que chacun des blocs de mémoire contenus dans la mémoire cache est déjà occupé avec des données valides ; la sélection, par le contrôleur de mémoire, d'un des blocs de mémoire ; la détermination d'un premier décompte de transactions associé au bloc de mémoire sélectionné, le premier décompte de transactions indiquant les informations d'heure/de date 15 auxquelles on a accédé au bloc de mémoire sélectionné, et lorsque le premier décompte de transactions répond à un critère prédéterminé, le fait d'amener, par le contrôleur de mémoire, le bloc de mémoire sélectionné à mémoriser les données ; et lorsque le premier décompte de transactions ne répond pas au critère prédéterminé, la 20 sélection, par le contrôleur de mémoire, d'un autre des blocs de mémoire jusqu'à ce que le contrôleur de mémoire sélectionne un bloc de mémoire dont le décompte de transactions répond au critère prédéterminé. 2. Procédé selon la revendication 1, dans lequel la sélection d'un des blocs de mémoire 25 comprend la sélection d'un identifiant de bloc de mémoire à l'aide d'un générateur de nombre aléatoire. 3. Procédé selon la revendication 1, comprenant en outre le maintien d'un seuil de décompte de transactions et le premier décompte de transactions répondant au critère -27- 3027128 prédéterminé lorsque le premier décompte de transactions répond à une condition prédéterminée par rapport au seuil de décompte de transactions. 4. Procédé selon la revendication 3, le premier décompte de transactions répondant à la condition prédéterminée par rapport au seuil de décompte de transactions lorsque le premier décompte de transactions est inférieur au seuil de décompte de transactions. 5. Procédé selon la revendication 3, dans lequel, lorsqu'un nombre moyen d'itérations utilisé pour identifier le bloc de mémoire sélectionné est petit, une modification du seuil de 10 décompte de transactions est suscitée pour réduire un nombre de blocs de mémoire répondant au critère prédéterminé. 6. Procédé selon la revendication 1, comprenant en outre : le maintien d'une liste de décompte de transactions ayant au moins une entrée, l'au 15 moins une entrée indiquant un nombre de blocs de mémoire ayant un décompte de transactions compris dans une plage préconfigurée ; et la détermination du seuil de décompte de transactions sur la base du nombre de blocs de mémoire ayant un décompte de transactions compris dans la plage préconfigurée. 20 7. Procédé selon la revendication 6, comprenant en outre : la réception d'un paramètre indiquant un nombre de blocs de mémoire répondant au critère prédéterminé ; et la détermination de la plage préconfigurée sur la base du paramètre. 25 8. Procédé selon la revendication 6, comprenant en outre : la réception, au niveau du contrôleur de mémoire, d'une première demande d'accès à la mémoire, la première demande d'accès à la mémoire comprenant un premier identifiant de bloc de mémoire qui identifie un premier bloc de mémoire ; - 28 - 3027128 la détermination, au niveau du contrôleur de mémoire, du fait que les données associées à la première demande d'accès à la mémoire sont déjà mémorisées dans un des blocs de mémoire contenus dans la mémoire cache ; et la mise à jour d'un décompte de transactions d'un des blocs de mémoire contenus 5 dans la mémoire cache pour refléter la première demande d'accès à la mémoire. 9. Procédé selon la revendication 6, comprenant en outre l'identification d'une entrée de la liste de décompte de transactions associée au premier bloc de mémoire et la mise à jour du nombre de blocs de mémoire dans l'entrée pour refléter la première demande d'accès à la 10 mémoire. 10. Système de stockage comprenant : une mémoire cache comprenant une pluralité de blocs de mémoire pour maintenir des données ; et 15 un contrôleur de mémoire configuré pour traiter une demande d'accès à la mémoire reçue d'un dispositif hôte, la demande d'accès à la mémoire comprenant un identifiant de bloc de mémoire qui identifie un bloc de mémoire, le contrôleur de mémoire étant en outre configuré pour : déterminer que les données associées à la demande d'accès à la mémoire doivent être 20 mémorisées dans un des blocs de mémoire contenus dans la mémoire cache et que chacun des blocs de mémoire contenus dans la mémoire cache est déjà occupé avec des données valides ; sélectionner un des blocs de mémoire contenus dans la mémoire cache ; déterminer un premier décompte de transactions associé au bloc de mémoire 25 sélectionné, le premier décompte de transactions indiquant les informations d'heure/de date auxquelles on a accédé au bloc de mémoire sélectionné ; et lorsque le premier décompte de transactions répond à un critère prédéterminé, amener le bloc de mémoire sélectionné à mémoriser les données, et -29- 3027128 lorsque le premier décompte de transactions ne répond pas au critère prédéterminé, sélectionner un autre des blocs de mémoire jusqu'à ce que le contrôleur de mémoire sélectionne un bloc de mémoire dont le décompte de transactions répond au critère prédéterminé. 5 11. Système de stockage selon la revendication 10, dans lequel le contrôleur de mémoire est configuré pour sélectionner un identifiant de bloc de mémoire à l'aide d'un générateur de nombre aléatoire. 12. Système de stockage selon la revendication 10, dans lequel le contrôleur de mémoire est configuré pour maintenir un seuil de décompte de transactions, et dans lequel le premier décompte de transactions répond au critère prédéterminé lorsque le premier décompte de transactions répond à une condition prédéterminée par rapport au seuil de décompte de transactions. 13. Système de stockage selon la revendication 12, dans lequel lorsqu'un nombre moyen d'itérations utilisé pour identifier le bloc de mémoire sélectionné est petit, le contrôleur de mémoire est configuré pour susciter une modification du seuil de décompte de transactions pour réduire un nombre de blocs de mémoire répondant au critère prédéterminé. 14. Système de stockage selon la revendication 10, dans lequel le contrôleur de mémoire est configuré pour : maintenir une liste de décompte de transactions ayant au moins une entrée, l'au moins une entrée indiquant un nombre de blocs de mémoire ayant un décompte de transactions compris 25 dans une plage préconfigurée ; et déterminer le seuil de décompte de transactions sur la base du nombre de blocs de mémoire ayant un décompte de transactions compris dans la plage préconfigurée. -30- 3027128 15. Système de stockage selon la revendication 14, dans lequel le contrôleur de mémoire est configuré pour : recevoir un paramètre indiquant un nombre de blocs de mémoire répondant au critère prédéterminé ; et 5 déterminer la plage préconfigurée sur la base du paramètre. 16. Système de stockage selon la revendication 14, dans lequel le contrôleur de mémoire est configuré pour : recevoir une première demande d'accès à la mémoire, la première demande d'accès à 10 la mémoire comprenant un premier identifiant de bloc de mémoire qui identifie un premier bloc de mémoire ; déterminer que les données associées à la première demande, d'accès à la mémoire sont déjà mémorisées dans un des blocs de mémoire contenus dans la mémoire cache ; et mettre à jour un décompte de transactions d'un des blocs de mémoire contenus dans 15 la mémoire cache pour refléter la première demande d'accès à la mémoire. 17. Support lisible par ordinateur non transitoire ayant des instructions exécutables pouvant être activées pour amener un contrôleur de mémoire à : recevoir une demande d'accès à la mémoire provenant d'un dispositif hôte sur une 20 interface, la demande d'accès à la mémoire comprenant un identifiant de bloc de mémoire qui identifie un bloc de mémoire ; déterminer que les données associées à la demande d'accès à la mémoire doivent être mémorisées dans un des blocs de mémoire contenus dans la mémoire cache et que chacun des blocs de mémoire contenus dans la mémoire cache est déjà occupé avec des données valides ; sélectionner un des blocs de mémoire contenus dans la mémoire cache ; déterminer un premier décompte de transactions associé au bloc de mémoire sélectionné, le premier décompte de transactions indiquant les informations d'heure/de date auxquelles on a accédé au bloc de mémoire sélectionné ; et -31- 3027128 lorsque le premier décompte de transactions répond à un critère prédéterminé, amener le bloc de mémoire sélectionné à mémoriser les données, et lorsque le premier décompte de transactions ne répond pas au critère prédéterminé, sélectionner un autre des blocs de mémoire jusqu'à ce que le contrôleur de mémoire sélectionne 5 un bloc de mémoire dont le décompte de transactions répond au critère prédéterminé. 18. Support lisible par ordinateur selon la revendication 17, comprenant en outre des instructions exécutables pouvant être activées pour amener le contrôleur de mémoire à maintenir un seuil de décompte de transactions et le premier décompte de transactions répondant au critère 10 prédéterminé lorsque le premier décompte de transactions répond à une condition prédéterminée par rapport au seuil de décompte de transactions. 19. Support lisible par ordinateur selon la revendication 17, comprenant en outre des instructions exécutables pouvant être activées pour amener le contrôleur de mémoire à : 15 maintenir une liste de décompte de transactions ayant au moins une entrée, l'au moins une entrée indiquant un nombre de blocs de mémoire ayant un décompte de transactions compris dans une plage préconfigurée ; et déterminer le seuil de décompte de transactions sur la base du nombre de blocs de mémoire ayant un décompte de transactions compris dans la plage préconfigurée. 20 20. Support lisible par ordinateur selon la revendication 17, comprenant en outre des instructions exécutables pouvant être activées pour amener le contrôleur de mémoire à : recevoir une première demande d'accès à la mémoire, la première demande d'accès à la mémoire comprenant un premier identifiant de bloc de mémoire qui identifie un premier bloc 25 de mémoire ; déterminer que les données associées à la première demande d'accès à la mémoire sont déjà mémorisées dans un des blocs de mémoire contenus dans la mémoire cache ; mettre à jour un décompte de transactions d'un des blocs de mémoire contenus dans la mémoire cache pour refléter la première demande d'accès à la mémoire. -32-