FR 3020885 A1 20151113 FR 1554092 A 20150507 SYSTÈME ET PROCÉDÉ DE MISE EN MEMOIRE CACHE DES RÉSULTATS DE REQUÊTE DE LECTURE DE DISPOSITIF À ÉTAT SOLIDE Contexte [0001] Dans un adaptateur de dispositif à état solide (SSD) avec compression de données, plusieurs blocs d'adresse logique (LBAs) peuvent être regroupés ensemble pour former une unité bien plus grande (par exemple un segment de données). Cette unité peut ensuite être exploitée par le biais d'un moteur de compression prévu sur l'adaptateur et permettant que les blocs LBA prennent bien moins de place que s'ils étaient mémorisés dans leur taille naturelle. Ce segment de données compressé est ensuite mémorisé sur le SSD (par exemple sur une mémoire flash de type NAND). La réduction de taille peut être de 50 % ou davantage. Cela signifie que plusieurs blocs LBA peuvent être mémorisés comme une unité unique dans la mémoire flash. Lorsque l'on accède à ces blocs LBA pour lecture, le segment de données compressé doit être récupéré dans la mémoire flash puis décompressé. Parmi tous les blocs LBA décompressés, seul un unique bloc LBA est potentiellement nécessaire pour répondre à la requête de lecture. [0002] L'interconnexion de composant périphérique expresse (PCIe) est fréquemment utilisée pour relier les SSDs à un système hébergeur. L'architecture du système PCI-Express est limitée par des contraintes de performance. Tout d'abord, les structures PCI-Express typiques avec une importante distribution en éventail du dispositif (telle qu'une face arrière de stockage de mémoire d'entreprise) ont une plus faible bande passante montante totale (à partir d'un commutateur de PCI-Express en amont de l'hébergeur) que la bande passante descendante (provenant du même commutateur de PCI-Express placé en aval de tous les systèmes de commande de mise en mémoire reliés). Celui-ci peut présenter un goulot d'étranglement au niveau d'un commutateur PCIe si la bande passante des ressources descendantes est supérieure à la bande passante montante. Un tel goulot d'étranglement peut retarder la récupération des résultats de lecture d'un SSD à un dispositif hébergeur. - 1 - Résumé de l'invention [0003] Les techniques de mise en mémoire cache des résultats d'une requête de lecture vers un dispositif à état solide sont exposées ici. Dans certains modes de réalisation, les techniques peuvent être réalisées sous la forme d'un procédé de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide comprenant la réception, au niveau d'un dispositif à état solide, d'une requête de données provenant d'un dispositif hébergeur couplé en communication au dispositif à état solide et la récupération, à l'aide d'un dispositif de commande du dispositif à état solide, d'un segment de données compressé provenant du dispositif à état solide en réponse à la requête de données. Les techniques peuvent en outre comprendre la décompression du segment de données compressé, le renvoi, au dispositif hébergeur, d'un bloc de segment de données en réponse à la requête de données et la mise en mémoire cache d'un ou de plusieurs blocs supplémentaires de segment de données dans un tampon de données pour les requêtes de lecture ultérieures. [0004] Selon des aspects supplémentaires de cet exemple de réalisation, le segment de données peut être indiqué par une adresse de bloc logique. [0005] Selon des aspects supplémentaires de cet exemple de réalisation, le tampon de données peut être prévu dans la mémoire du dispositif à état solide. [0006] Selon des aspects supplémentaires de cet exemple de réalisation, le tampon de données peut être prévu dans la mémoire associée à l'interconnexion de composant périphérique expresse (PCIe) du dispositif hébergeur. [0007] Selon des aspects supplémentaires de cet exemple de réalisation, les techniques peuvent comprendre la réception d'une seconde requête de données en provenance du dispositif hébergeur, la détermination du fait que les données envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données et le traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des données contenues dans le tampon de données. [0008] Selon des aspects supplémentaires de cet exemple de réalisation, le traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des données contenues dans le tampon de données peut comprendre la mise à disposition du dispositif hébergeur d'une - 2 - entrée de liste d'éclatement - regroupement pointant vers la mémoire dans le tampon de données contenant les données fournies en réponse. [0009] Selon des aspects supplémentaires de cet exemple de réalisation, la détermination du fait que les données envoyées en réponse à la seconde requête de données sont contenues dans le 5 tampon de données peut être effectuée par un lecteur prévu sur le dispositif hébergeur. [0010] Selon des aspects supplémentaires de cet exemple de réalisation, la détermination du fait que les données envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données peut être effectuée par le dispositif à état solide. [0011] Selon des aspects supplémentaires de cet exemple de réalisation, la liste d'éclatement - 10 regroupement peut être prévue à partir d'un lecteur prévu sur le dispositif hébergeur. [0012] Selon des aspects supplémentaires de cet exemple de réalisation, les techniques peuvent en outre comprendre la consignation dans un journal d'une ou plusieurs écritures des données sur le dispositif à état solide et la détermination, sur la base de la ou des requêtes d'écriture consignées dans un journal, de si oui ou non les données contenues dans le tampon de données sont valides. 15 [0013] Selon des aspects supplémentaires de cet exemple de réalisation, les techniques peuvent en outre comprendre la réception d'une seconde requête de données en provenance du dispositif hébergeur, la détermination du fait que les données envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données et la détermination, sur la base d'une ou de plusieurs requêtes d'écriture consignées dans un journal, que les données contenues dans le tampon 20 de données ne sont pas valides. Sur la base de la détermination que ces données valides fournies en réponse ne se trouvent pas dans le tampon, les techniques peuvent comprendre la récupération, à l'aide du dispositif de commande du dispositif à état solide, d'un second segment de données compressé provenant du dispositif à état solide ; la décompression du second segment de données compressé, et le renvoi, au dispositif hébergeur, d'un bloc du second segment de données envoyé 25 en réponse à la seconde requête de données. 10014] Selon des aspects supplémentaires de cet exemple de réalisation, les techniques peuvent comprendre l'utilisation d'un algorithme pour maintenir le tampon de données. - 3 - [0015] Selon des aspects supplémentaires de cet exemple de réalisation, l'algorithme peut comprendre au moins un élément parmi un algorithme utilisé moins récemment pour classer chronologiquement les données sortant du tampon de données, un algorithme utilisé moins fréquemment pour classer chronologiquement les données sortant du tampon de données et un algorithme de mise en mémoire cache de remplacement adaptatif pour classer chronologiquement les données sortant du tampon de données. [0016] Selon des aspects supplémentaires de cet exemple de réalisation, le dispositif hébergeur peut comprendre au moins un élément parmi : un serveur d'entreprise, un serveur de base de données, une station de travail et un ordinateur. [0017] Selon des aspects supplémentaires de cet exemple de réalisation, le dispositif à état solide peut comprendre un dispositif d'interconnexion de composant périphérique expresse (PCIe). Bien que le dispositif décrit prenne la forme d'un dispositif à état solide, les modes de réalisation peuvent comprendre des dispositifs pouvant ne pas être des dispositifs à état solide (par exemple des lecteurs de disque dur PCIe). [0018] Dans certains modes de réalisation, les techniques de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide peuvent être réalisées sous la forme d'un produit de programme informatique composé d'une série d'instructions exécutables sur un ordinateur, le produit de programme informatique effectuant un processus de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide. Le programme informatique peut réaliser les étapes de réception, au niveau d'un dispositif à état solide, d'une requête de données provenant d'un dispositif hébergeur couplé en communication au dispositif à état solide, la récupération, à l'aide d'un dispositif de commande du dispositif à état solide, d'un segment de données compressé provenant du dispositif à état solide en réponse à la requête de données, la décompression du segment de données compressé, le renvoi, au dispositif hébergeur, d'un bloc de segment de données en réponse à la requête de données et la mise en mémoire cache d'un ou de plusieurs blocs supplémentaires de segment de données dans un tampon de données pour les requêtes de lecture ultérieures. - 4 - [0019] Dans certains modes de réalisation, les techniques de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide peuvent être réalisées sous la forme d'un système de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide. Le système peut comprendre un dispositif hébergeur et un premier dispositif d'interconnexion de composant périphérique expresse (PCIe). Le premier dispositif d'interconnexion de composant périphérique expresse (PCIe) peut comprendre des instructions mises en mémoire. Les instructions peuvent comprendre une instruction d'envoi d'un ou de plusieurs blocs d'un segment de données décompressé en réponse à une première requête de données à un tampon de données. Le système peut également comprendre un commutateur d'interconnexion de composant périphérique expresse (PCIe) couplant en communication le premier dispositif de PCIe et le dispositif hébergeur, dans lequel le dispositif hébergeur comprend les instructions mises en mémoire. Les instructions mémorisées dans la mémoire de dispositif hébergeur peuvent comprendre une instruction pour déterminer si oui ou non les données envoyées en réponse à une seconde requête de données sont contenues dans le tampon de données et une instruction de traitement de la seconde requête de données à partir des données contenues dans le tampon de données sur la base d'une détermination que les données envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données. [0020] Selon des aspects supplémentaires de cet exemple de réalisation, le tampon de données peut être prévu dans la mémoire du dispositif à état solide. [0021] Selon des aspects supplémentaires de cet exemple de réalisation, le tampon de données peut être prévu dans la mémoire associée à l'interconnexion de composant périphérique expresse (PCIe) du dispositif hébergeur. [0022] Selon des aspects supplémentaires de cet exemple de réalisation, les techniques peuvent en outre comprendre une instruction pour déterminer, au niveau d'un lecteur prévu sur le dispositif hébergeur, que les données envoyées en réponse à une seconde requête de données sont contenues dans le tampon de données et qu'une instruction de traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des données contenues dans le tampon de données, dans lequel le traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des données contenues dans le tampon de données comprend la mise à disposition du - 5 - dispositif hébergeur d'une entrée de liste d'éclatement - regroupement pointant vers la mémoire dans le tampon de données contenant les données fournies en réponse. [0023] La présente invention va maintenant être décrite plus en détail en référence aux exemples de réalisation correspondants tels qu'illustrés dans les dessins joints. Même si la présente invention est décrite ci-dessous en référence aux exemples de réalisation, il convient de comprendre qu'elle ne s'y limite pas. L'homme du métier ayant accès aux enseignements de la présence invention saura reconnaître les réalisations, modifications et modes de réalisation supplémentaires ainsi que les champs d'utilisation compris dans la portée de la présente invention telle que décrite ici et par rapport auxquels la présente invention peut être d'une utilité significative. Brève description des dessins [0024] Pour faciliter une meilleure compréhension de la présente invention, il va maintenant être fait référence aux dessins joints dans lesquels des éléments similaires sont référencés avec des nombres identiques. Ces dessins ne doivent pas être considérés comme limitant la présente 15 invention mais sont fournis à titre d'exemple uniquement. [0025] La figure 1 illustre un schéma d'exemple de bloc illustrant une pluralité de dispositifs à état solide en communication avec un dispositif hébergeur, selon un mode de réalisation de la présente invention. [0026] La figure 2 illustre un exemple de module de mise en mémoire cache des résultats de 20 requête de lecture de dispositif à état solide, selon un mode de réalisation de la présente invention. [0027] La figure 3 illustre un organigramme illustrant la mise en mémoire cache des résultats de requête de lecture de dispositif à état solide, selon un mode de réalisation de la présente invention. [0028] La figure 4 illustre un organigramme illustrant la mise en mémoire cache des résultats 25 de requête de lecture de dispositif à état solide, selon un mode de réalisation de la présente invention. - 6 - Description 100291 La présente invention concerne la mise en mémoire cache des résultats de requête de lecture de dispositif à état solide. Les modes de réalisation de la présente invention fournissent des systèmes et des procédés au moyen desquels les blocs récupérés en réponse à une requête de lecture, mais ne correspondant pas nécessairement à une requête de lecture, peuvent être mis en mémoire cache. Dans un adaptateur de dispositif à état solide (SSD) avec compression de données, plusieurs blocs d'adresse logique (LBAs) peuvent être regroupés ensemble pour former une unité bien plus grande. Cette unité peut ensuite être exploitée par le biais d'un moteur de compression prévu sur l'adaptateur et permettant que les blocs LBA prennent bien moins de place que s'ils étaient mémorisés dans leur taille naturelle. Ce segment de données compressé est ensuite mémorisé sur le SSD (par exemple sur une mémoire flash de type NAND). La réduction de taille peut être de 50 % ou davantage. Cela signifie que plusieurs blocs LBA peuvent être mémorisés comme une unité unique dans la mémoire flash. Lorsque l'on accède à ces blocs LBA pour lecture, le segment de données compressé doit être récupéré dans la mémoire flash puis décompressé. Parmi tous les blocs LBA décompressés, seul un unique bloc LBA est potentiellement nécessaire pour répondre à la requête de lecture. Les systèmes écartent traditionnellement les blocs décompressés non nécessaires à la réponse d'une requête de lecture. Les modes de réalisation de la présente invention fournissent des systèmes et des procédés de mise en mémoire cache de tels blocs supplémentaires. Dans certains modes de réalisation, une telle mise en mémoire cache peut être effectuée sur un dispositif SSD. Dans un ou plusieurs modes de réalisation, une telle mise en mémoire cache peut être effectuée sur un dispositif hébergeur (par exemple dans des modes de réalisation basés sur une spécification de mémoire non volatile expresse (NVMe)). La mise en mémoire cache, que ce soit sur un hébergeur ou un SSD, permet d'améliorer la performance de lecture séquentielle. La mise en mémoire cache utilisant la mémoire d'un hébergeur peut libérer de l'espace dans un adaptateur de PCIe pour mémoriser des blocs pour un futur accès. La mise en mémoire cache dans la mémoire associée à un hébergeur peut également utiliser la grande mémoire prévue dans l'hébergeur pour mémoriser de façon spéculative des lectures. Ceci permet d'accéder plus rapidement à un hébergeur pour des lectures spéculatives et peut améliorer la performance d'un adaptateur de SSD basé sur PCIe. - 7 - [0030] Si l'on revient maintenant aux dessins, la figure 1 est un schéma d'exemple de bloc illustrant un dispositif à état solide en communication avec un dispositif hébergeur, selon un mode de réalisation de la présente invention. La figure 1 comprend un certain nombre de technologies de calcul tel qu'un système hébergeur 102, un CPU d'hébergeur 104, et un complexe racine de PCI-Express 106 contenant le lecteur 150. Le commutateur de PCI-Express 108 peut coupler en communication une pluralité de cibles (par exemple des dispositifs à état solide tels que des cibles à base de NVMe) telles que les cibles 110, 116 et 122 au système hébergeur 102 via le complexe racine de PCI-Express 106. [0031] La cible 110 peut contenir le dispositif de commande de NVMe 112 et la mémoire non volatile 114. La cible 116 peut contenir le dispositif de commande de NVMe 118 et la mémoire non volatile 120. La cible 122 peut contenir le dispositif de commande de NVMe 124 et la mémoire non volatile 126. [0032] La mémoire de système 128 peut contenir les ressources basées sur la mémoire accessibles au système hébergeur 102 via une interface de mémoire (par exemple une mémoire à double débit de données de type trois à accès aléatoire dynamique synchrone (DDR3 SDRAM)). La mémoire de système 128 peut prendre n'importe quelle forme adaptée, telle que, sans s'y limiter, une mémoire à état solide (par exemple une mémoire flash ou un dispositif à état solide (SSD)), une mémoire optique et une mémoire magnétique. Même si la mémoire de système 128 est de préférence non volatile, une mémoire volatile peut également être utilisée. Telle qu'illustrée sur la figure 1, la mémoire de système 128 peut contenir une ou plusieurs structures de données telles que, par exemple, des tampons de données 138. [0033] La connexion 142 entre le complexe racine de PCI-Express 106 et le commutateur de PCI-Express 108 peut être, par exemple, une interface basée sur PCI-Express. Les connexions 144, 146, et 148 peuvent également être des interfaces basées sur PCI-Express. Même si seules les connexions 144, 146, et 148 sont illustrées, on se rendra compte que le nombre de cibles reliées au commutateur de PCI-Express 108 peut être moins important ou significativement plus élevé (par exemple 96 dispositifs). Étant donné que le nombre de cibles reliées au commutateur de PCIExpress 108 augmente, la bande passante au niveau de la connexion 142 peut devenir un point de passage obligé. [0034] Selon certains modes de réalisation, il est possible d'utiliser des normes d'interfaces autres que les PCIe pour une ou plusieurs parties comprenant, sans s'y limiter, la technologie de transfert de données avancée série (SATA), la technologie de transfert de données avancée (ATA), une petite interface de système informatique (SCSI), une interconnexion PCI étendue (PCI-X), un canal de fibre, une interface SCSI attachée série (SAS), un système numérique sécurisé (SD), une carte mémoire multimédia encastrée (EMMC) et une mémoire flash universelle (UFS). [0035] Le système hébergeur 102 peut prendre n'importe quelle forme adaptée, telle que, sans s'y limiter, un serveur d'entreprise, un hébergeur de base de données, une station de travail, un ordinateur personnel, un téléphone portable, un dispositif de jeu, un assistant numérique 10 personnel (PDA), un dispositif de messagerie email/SMS, une caméra numérique, une console de jeu numérique (par exemple MP3), un dispositif de navigation GPS et un système de télévision. [0036] Le système hébergeur 102 et le dispositif cible peuvent comprendre des composants supplémentaires non illustrés sur la figure 1 pour simplifier le dessin. De plus, l'intégralité des composants n'est pas illustrée dans certains modes de réalisation. Les divers dispositifs de 15 commande, blocs et interfaces peuvent en outre être mis en oeuvre de n'importe quelle façon adaptée. Par exemple, un dispositif de commande peut prendre la forme d'un ou de plusieurs éléments parmi un microprocesseur ou un processeur et un support lisible par ordinateur stockant le code de programmation lisible par ordinateur (par exemple logiciel ou micrologiciel) pouvant être exécuté par le (micro)processeur, des portes logiques, des commutateurs, un circuit intégré à 20 application spécifique (ASIC), un dispositif de commande à logique programmable et un microcontrôleur encastré, par exemple. [0037] Dans un adaptateur SSD avec compression de données, plusieurs blocs LBA sont regroupés ensemble pour former une unité bien plus grande. Cette unité peut ensuite fonctionner par le biais d'un moteur de compression sur un adaptateur SSD permettant aux blocs LBA de 25 prendre moins d'espace que s'ils étaient stockés dans leur taille naturelle. Ce segment de données peut ensuite être mémorisé sur le SSD. La réduction de taille peut être de 50 % ou davantage. Cela signifie que plusieurs blocs LBA peuvent être mémorisés comme une unité unique sur un SSD. Lorsque l'on accède à ces blocs LBA pour lecture, le segment de données doit être récupéré dans le SSD puis décompressé. Cela signifie que tous les blocs LBA ont été - 9 - décompressés mais que seul un unique bloc LBA est potentiellement nécessaire pour répondre à la requête de lecture. Les autres blocs LBA peuvent être amenés dans le SSD dans la RAM répondre à de futures requêtes. [0038] Les modes de réalisation de la présente invention peuvent améliorer la performance de lecture de SSD à l'aide d'autres blocs LBA récupérés pendant le traitement normal d'une requête de lecture sur un SSD à base de compression mais ne sont pas nécessaires pour répondre à la requête de lecture. Ces blocs LBA peuvent être mémorisés (par exemple en mémoire tampon) sur un adaptateur de SSD, sur une mémoire d'hébergeur ou dans tout autre emplacement accessible. [0039] Dans les modes de réalisation de PCIe, un bus de PCIe à bande passante élevée et la disponibilité d'une mémoire d'hébergeur peut faciliter la mise en mémoire de ces blocs LBA sur une mémoire basée sur hébergeur. Cette mise en mémoire spéculative de blocs LBA lus sur un système hébergeur peut être utilisée pour accroître la performance dans des scénarios de lecture séquentielle ou aléatoire. Lorsque l'hébergeur demande des blocs LBA mis en mémoire cache, l'adaptateur peut répondre avec une entrée SGL (liste d'éclatement - regroupement) pointant vers la mémoire prévue sur la machine d'hébergeur. [0040] Par exemple, un lecteur prévu sur un adaptateur peut contenir des instructions recommandant de prendre en compte les requêtes de lecture provenant d'un hébergeur. Si une requête de lecture est reçue, un lecteur peut déterminer la présence ou l'absence d'un ou de plusieurs blocs nécessaires pour répondre à la requête de lecture dans un tampon. S'il est déterminé qu'un ou plusieurs blocs nécessaires pour répondre à une requête de lecture sont dans un tampon, un lecteur peut fournir un élément de liste d'éclatement/regroupement (SGL) pointant vers l'emplacement de mémoire du bloc LBA mis en mémoire tampon approprié. L'hébergeur peut récupérer le bloc LBA comme si le SSD avait un accès direct (DMA'd) à la mémoire. Cela peut entraîner une lecture à très faible latence pouvant fortement accroître la performance. [0041] Selon certains modes de réalisation, le logiciel peut résider à l'extérieur d'un lecteur pouvant mettre en mémoire tampon et surveiller les requêtes de lecture. Dans un ou plusieurs -10- modes de réalisation, une commande personnalisée peut être prévue (par exemple une commande de lecture personnalisée) permettant de vérifier la disponibilité de données dans un tampon avant lecture d'un SSD. Les procédés utilisés pour les requêtes de lecture utilisant un tampon peuvent être intégrés dans une ou plusieurs normes (par exemple normes NVMe.) 10042] Selon certains modes de réalisation, les tarnpoin 'peuvent être maintenus par consignation dans un journal. Par exemple, la consignation dans un journal dans un adaptateur peut être utilisée pour s'assurer que les données de l'hébergeur sont valides avant de rediriger l'hébergeur vers ces données. Un lecteur peut surveiller et consigner dans un journal une ou plusieurs requêtes d'écriture. La consignation dans un journal permet de suivre si oui ou non une requête d'écriture a rendu invalides des données précédemment envoyées à un tampon. Un lecteur peut contenir une structure de données pouvant indiquer des blocs (par exemple LBAs dans un tampon). Si une requête d'écriture détectée par le lecteur correspond à un de ces blocs, le bloc contenu dans le tampon peut être invalidé et/ou écarté. Pour les requêtes de lecture ultérieures correspondant à un tel bloc, l'adaptateur et/ou le lecteur peut avoir à ré-accéder au segment de données et à reprendre le bloc LBA. [0043] Dans certains modes de réalisation, un ou plusieurs algorithmes peuvent être utilisés pour maintenir un tampon de données. Par exemple, un lecteur peut utiliser un algorithme utilisé moins récemment pour classer chronologiquement les données sortant du tampon de données, un algorithme utilisé moins fréquemment pour classer chronologiquement les données sortant du tampon de données, et/ou un algorithme de mise en mémoire cache de remplacement adaptatif pour classer chronologiquement les données sortant du tampon de données. [0044] La figure 2 décrit un exemple de module de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide, selon un mode de réalisation de la présente invention. Tel qu'illustré sur la figure 3, le module de mise en mémoire tampon de lecture de SSD 210 peut contenir le module de mise en mémoire tampon de bloc 212, le module de consignation dans un journal 214 et le module de gestion de tampon 216. Dans un ou plusieurs modes de réalisation, le module de mise en mémoire tampon de lecture de SSD 210 peut être implémenté dans un lecteur de dispositif (par exemple le lecteur 150 de la figure 1) ou sur un système d'exploitation OS d'hébergeur (par exemple le CPU d'hébergeur 104 de la figure 1). Selon certains modes de - 11 - réalisation, le module de mise en mémoire tampon de lecture de SSD 210 peut être implémenté dans un adaptateur d'un SSD (par exemple la cible 110, la cible 116 ou la cible 122 de la figure 1). [0045] Le module de mise en mémoire tampon de bloc 212 peut mettre en mémoire cache un ou plusieurs blocs récupérés et décompressés comme faisant partie d'une requête de lecture. Les blocs LBA compressés peuvent stocker 50 % ou plus de blocs que si ces blocs étaient décompressés. Cela signifie que plusieurs blocs LBA peuvent être mémorisés comme une unité unique dans la mémoire flash. Lorsque l'on accède à ces blocs LBA pour lecture, le segment de données compressé doit être récupéré dans la mémoire flash puis décompressé. Parmi tous les blocs LBA décompressés, seul un unique bloc LBA est potentiellement nécessaire pour répondre à la requête de lecture. Le module de mise en mémoire cache de bloc 212 peut mettre en mémoire tampon de tels blocs supplémentaires. Dans certains modes de réalisation, une telle mise en mémoire tampon peut être effectuée sur un dispositif SSD. Dans un ou plusieurs modes de réalisation, une telle mise en mémoire tampon peut être effectuée sur un dispositif hébergeur (par exemple dans des modes de réalisation basés sur une spécification de mémoire non volatile expresse (NVMe)). Le module de mise en mémoire tampon de bloc 212 peut surveiller les requêtes de lecture provenant d'un hébergeur. Si une requête de lecture est reçue, le module de mise en mémoire tampon de bloc 212 peut déterminer si oui ou non un ou plusieurs blocs nécessaires pour répondre à la requête de lecture sont présents dans un tampon. S'il est déterminé qu'un ou plusieurs blocs nécessaires pour répondre à une requête de lecture sont dans un tampon, le module de mise en mémoire tampon de bloc 212 peut fournir un élément de liste d'éclatement/regroupement (SGL) pointant vers l'emplacement de mémoire du bloc LBA mis en mémoire tampon approprié. L'hébergeur peut récupérer le bloc LBA comme si le SSD avait un accès direct (DMA'd) à sa mémoire. [0046] La mise en mémoire tampon par le module de mise en mémoire cache de bloc 212, soit sur un hébergeur soit sur un SSD, permet d'améliorer la performance de lecture séquentielle. La mise en mémoire tampon utilisant la mémoire d'un hébergeur peut libérer de l'espace dans un adaptateur de PCIe pour mémoriser les blocs pour un accès futur. La mise en mémoire tampon dans la mémoire associée à un hébergeur peut également utiliser la grande de l'hébergeur pour -12- mémoriser de façon spéculative des lectures. Ceci permet d'accéder plus rapidement à un hébergeur pour des lectures spéculatives et peut améliorer la performance d'un adaptateur de SSD basé sur PCIe. [0047] Le module de consignation dans un journal 214 peut vérifier si les données contenues dans l'hébergeur sont valides avant de rediriger l'hébergeur vers ces données. Le module de consignation dans un journal 214 peut surveiller et consigner dans un journal une ou plusieurs requêtes d'écriture. Le module de consignation dans un journal 214 peut suivre si oui ou non une requête d'écriture a rendu invalides les données précédemment envoyées à un tampon. Le module de consignation dans un journal 214 peut contenir une structure de données pouvant indiquer les blocs (par exemple les LBAs dans un tampon). Si une requête d'écriture correspondant à un de ces blocs est détectée par le module de consignation dans un journal 214, le bloc contenu dans le tampon peut être invalidé et/ou écarté. Pour les requêtes de lecture ultérieures correspondant à un tel bloc, le module de consignation dans un journal 214 peut indiquer qu'un lecteur peut avoir à ré-accéder au segment de données approprié et à reprendre le bloc LBA requis. [0048] Le module de gestion de tampon 216 peut utiliser un ou plusieurs algorithmes pour maintenir un tampon de données. Par exemple, le module de gestion de tampon 216 peut utiliser, par exemple, un algorithme utilisé moins récemment pour classer chronologiquement les données sortant du tampon de données, un algorithme utilisé moins fréquemment pour classer chronologiquement les données sortant du tampon de données et/ou un algorithme de mise en mémoire cache de remplacement adaptatif pour classer chronologiquement les données sortant du tampon de données. Le module de gestion de tampon 216 peut accepter un ou plusieurs paramètres indiquant une taille de tampon, un algorithme de classement chronologique préféré, un ou plusieurs emplacements de mémoire à utiliser pour créer un tampon ou tout autre paramètre de tampon configurable. [0049] La figure 3 illustre un organigramme illustrant la mise en mémoire cache des résultats de requête de lecture de dispositif à état solide, selon un mode de réalisation de la présente invention. Le processus 300 n'est toutefois qu'un exemple. Le processus 300 peut être modifié, - 13 - par exemple par ajout, changement, retrait ou réarrangement des étapes. À l'étape 302, le processus peut débuter. [0050] À l'étape 304, une requête de données peut être reçue en provenance d'un hébergeur. Par exemple, une requête de lecture peut être reçue par un dispositif de commande d'un SSD 5 pour un ou plusieurs blocs LBA. [0051] À l'étape 306, un segment de données compressé contenant une pluralité de blocs LBA peut être récupéré. À l'étape 308, le segment de données peut être décompressé. La décompression peut fournir un ou plusieurs blocs LBA répondant à la requête de lecture de l'hébergeur. La décompression peut également fournir un ou plusieurs blocs LBA 10 « supplémentaires » non requis par la requête de lecture de l'hébergeur. [0052] À l'étape 310, un ou plusieurs blocs de données LBA fournis en réponse à la requête de lecture de l'hébergeur peuvent être renvoyés à l'hébergeur (par exemple via une liste d'éclatement - regroupement). [0053] À l'étape 312, il peut être déterminé si oui ou non des blocs LBA supplémentaires 15 sont disponibles. Si des blocs LBA supplémentaires sont disponibles, le procédé 300 peut envoyer les blocs LBA supplémentaires à un tampon de données (par exemple dans la mémoire d'hébergeur) à l'étape 314. Si tous les blocs décompressés envoyés en réponse à une requête de lecture ont été envoyés à l'hébergeur (c'est-à-dire s'ils ont tous été envoyés en réponse à la requête), le procédé 300 peut prendre fin à l'étape 316. 20 [0054] La figure 4 illustre un organigramme illustrant la mise en mémoire cache des résultats de requête de lecture de dispositif à état solide, selon un mode de réalisation de la présente invention. Le processus 400 n'est toutefois qu'un exemple. Le processus 400 peut être modifié, par exemple par ajout, changement, retrait ou réarrangement des étapes. À l'étape 402, le processus 400 peut débuter. 25 [0055] À l'étape 404, une ou plusieurs requêtes d'écriture peuvent être consignées dans un journal. Dans certains modes de réalisation, seules les requêtes d'écriture correspondant aux blocs mis dans la mémoire tampon peuvent être consignées dans un journal. - 14 - [0056] Dans certains modes de réalisation, si les données sont détectées comme effacées à l'étape 406, elles peuvent être retirées d'un tampon à l'étape 408. Dans certains modes de réalisation, elles peuvent être marquées comme invalides. Dans un ou plusieurs modes de réalisation, un lecteur interceptant une requête de lecture peut déterminer que ces données mises en tampon sont invalides lors de la lecture d'un journal et peut ne pas accéder à ces données mises en tampon. Les données mises en tampon auxquelles on n'a pas accédé peuvent être marquées comme périmées par rapport au tampon. [0057] À l'étape 410, le tampon ou le cache peuvent être maintenus à l'aide d'un ou de plusieurs algorithmes (par exemple un algorithme utilisé moins récemment pour classer chronologiquement les données sortant du tampon de données, un algorithme utilisé moins fréquemment pour classer chronologiquement les données sortant du tampon de données et/ou un algorithme de mise en mémoire cache de remplacement adaptatif pour classer chronologiquement les données sortant du tampon de données). À l'étape 412 si on détermine que les données sont périmées par rapport au tampon, elles peuvent être retirées du tampon (par exemple lorsque des données supplémentaires sont mises dans la mémoire tampon et que l'on a besoin d'espace supplémentaire). [0058] À l'étape 416, une requête de données peut être reçue d'un hébergeur. Par exemple, un lecteur de SSD placé sur un hébergeur peut surveiller les requêtes de lecture et peut recevoir une requête de lecture de SSD provenant de l'hébergeur. [0059] À l'étape 418, le lecteur peut déterminer si oui ou non les données requises sont dans un tampon. Si les données requises sont dans un tampon, le procédé 400 peut continuer à l'étape 426. À l'étape 426, le lecteur peut envoyer une liste d'éclatement - regroupement (SQL) contenant un ou plusieurs éléments pointant vers les emplacements de mémoire des blocs LBA mis en mémoire appropriés. Si les données ne sont pas mises en mémoire (ou sont invalides), le procédé 400 peut se poursuivre à l'étape 420. [0060] À l'étape 420, le dispositif de commande de SSD peut récupérer le segment de données de SSD approprié pour répondre à la requête de lecture de l'hébergeur. À l'étape 422, le - 15 - segment de données peut être décompressé. À l'étape 424, le SSD peut envoyer le bloc de données LBA envoyé en réponse à la requête de lecture de l'hébergeur. [006t] À l'étape 428, le processus 400 peut prendre fin. [0062] D'autres modes de réalisation sont dans la portée et l'esprit de l'invention. Par exemple, le fonctionnement décrit ci-dessus peut être mis en oeuvre par le biais d'un logiciel, d'un matériel, d'un micrologiciel, d'un câblage ou de combinaisons de ceux-ci. Un ou plusieurs processeurs d'ordinateur fonctionnant conformément aux instructions peuvent réaliser les fonctions associées à la mise en mémoire cache des résultats de requête de lecture de dispositif à état solide selon la présente invention décrite ci-dessus. Si tel est le cas, il est dans la portée de la présente invention que de telles instructions puissent être mémorisées sur un ou plusieurs supports de mémoire lisibles par un processeur non transitoire (par exemple un disque magnétique ou tout autre support de mémoire). De plus, les fonctions d'implémentation de modules peuvent également être physiquement positionnées en divers endroits, y compris être réparties de telle sorte que des parties de ces fonctions soient implémentées à différents emplacements physiques. [0063] La présente invention ne se limite pas dans sa portée aux modes de réalisation spécifiques décrits ici. En fait, divers autres modes de réalisation et diverses modifications de la présente invention, outre ceux décrits ici, apparaîtront à l'homme du métier à partir de la description précédente et des dessins joints. De tels autres modes de réalisation et de telles autres modifications visent donc à être englobés dans la portée de la présente invention. De plus, bien que la présente invention a été décrite ici dans le contexte d'une mise en oeuvre particulière dans un environnement particulier pour une finalité particulière, l'homme du métier reconnaîtra que son utilité n'est pas limitée à ceci et que la présente invention peut être mise en oeuvre de façon bénéfique dans n'importe quelle quantité d'environnements pour n'importe quelle quantité de finalités. Par conséquent, les revendications exposées ci-dessus doivent être considérées comme englobant toute la portée et l'esprit de la présente invention décrite ici. - 16 - REVENDICATIONS: 1. Procédé de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide comprenant : la réception, au niveau d'un dispositif à état solide, d'une requête de données provenant d'un dispositif hébergeur couplé en communication au dispositif à état solide ; la récupération, à l'aide d'un dispositif de commande du dispositif à état solide, d'un segment de données compressé provenant du dispositif à état solide en réponse à la requête de données ; la décompression du segment de données compressé ; le renvoi, au dispositif hébergeur, d'un bloc du segment de données en réponse à la requête de données ; et la mise en mémoire cache d'un ou de plusieurs blocs supplémentaires du segment de données dans un tampon de données pour les requêtes de lecture ultérieures. 2. Procédé selon la revendication 1, dans lequel le segment de données est indiqué par une adresse de bloc logique. 3. Procédé selon la revendication 1, dans lequel le tampon de données est prévu dans la mémoire du dispositif à état solide. 4. Procédé selon la revendication 1, dans lequel le tampon de données est prévu dans la mémoire associée à l'interconnexion de composant périphérique expresse (PCIe) du dispositif hébergeur. -17-. Procédé selon la revendication 1, comprenant en outre : la réception d'une seconde requête de données en provenance du dispositif hébergeur ; la détermination du fait que les données envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données ; et le traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des données contenues dans le tampon de données. 6. Procédé selon la revendication 5, dans lequel le traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des données contenues dans le tampon de données comprend la mise à disposition du dispositif hébergeur d'une entrée de liste d'éclatement - regroupement pointant vers la mémoire dans le tampon de données contenant les données envoyées en réponse. 7. Procédé selon la revendication 5, dans lequel la détermination du fait que les données 15 envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données est effectuée par un lecteur prévu sur le dispositif hébergeur. 8. Procédé selon la revendication 5, dans lequel la détermination du fait que les données envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données 20 est effectuée par le dispositif à état solide. 9. Procédé selon la revendication 6, dans lequel la liste d'éclatement - regroupement provient d'un lecteur prévu sur le dispositif hébergeur. - 18 -. Procédé selon la revendication 1, comprenant en outre : la consignation dans un journal d'une ou de plusieurs écritures des données sur le dispositif à état solide ; et la détermination, sur la base de la ou des requêtes d'écriture consignées dans un journal, 5 de si oui ou non les données contenues dans le tampon de données sont valides. 11. Procédé selon la revendication 10, comprenant en outre : la réception d'une seconde requête de données en provenance du dispositif hébergeur ; la détermination du fait que les données envoyées en réponse à la seconde requête de 10 données sont contenues dans le tampon de données ; la détermination, sur la base d'une ou de plusieurs requêtes d'écriture consignées dans un journal, que les données contenues dans le tampon de données ne sont pas valides ; la récupération, à l'aide du dispositif de commande du dispositif à état solide, d'un second segment de données compressé provenant du dispositif à état solide ; 15 la décompression du second segment de données compressé ; et le renvoi, au dispositif hébergeur, d'un bloc du second segment de données envoyé en réponse à la seconde requête de données. 12. Procédé selon la revendication 1, comprenant en outre l'utilisation d'un algorithme pour 20 maintenir le tampon de données. 13. Procédé selon la revendication 12, dans lequel l'algorithme comprend au moins un élément parmi un algorithme utilisé le moins récemment pour classer chronologiquement les - 19 -données sortant du tampon de données, un algorithme utilisé le moins fréquemment pour classer chronologiquement les données sortant du tampon de données et un algorithme de mise en mémoire cache de remplacement adaptatif pour classer chronologiquement les données sortant du tampon de données. 14. Procédé selon la revendication 1, dans lequel le dispositif hébergeur comprend au moins un élément parmi : un serveur d'entreprise, un serveur de base de données, une station de travail et un ordinateur. 15. Procédé selon la revendication 1, dans lequel le dispositif à état solide comprend un dispositif d'interconnexion de composant périphérique expresse (PCIe). 16. Produit de programme informatique composé d'une série d'instructions exécutables sur un ordinateur, le produit de programme informatique réalisant un processus de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide ; le programme informatique mettant en oeuvre les étapes de : réception, au niveau d'un dispositif à état solide, d'une requête de données provenant d'un dispositif hébergeur couplé en communication au dispositif à état solide ; récupération, à l'aide d'un dispositif de commande du dispositif à état solide, d'un 20 segment de données compressé provenant du dispositif à état solide en réponse à la requête de données ; décompression du segment de données compressé ; renvoi, au dispositif hébergeur, d'un bloc du segment de données envoyé en réponse à la -20-requête de données ; et mise en mémoire cache d'un ou de plusieurs blocs supplémentaires du segment de données dans un tampon de données pour les requêtes de lecture ultérieures. 17. Système de mise en mémoire cache des résultats de requête de lecture de dispositif à état solide, le système comprenant : un dispositif hébergeur ; un premier dispositif d'interconnexion de composant périphérique expresse (PCIe), dans lequel le premier dispositif d'interconnexion de composant périphérique expresse 10 (PCIe) comprend des instructions mises en mémoire, les instructions comprenant : une instruction pour envoyer un ou plusieurs blocs d'un segment de données décompressé en réponse à une première requête de données à un tampon de données ; et un commutateur d'interconnexion de composant périphérique expresse (PCIe) 15 couplant en communication le premier dispositif de PCIe et le dispositif hébergeur ; dans lequel le dispositif hébergeur comprend des instructions mises en mémoire, les instructions comprenant : une instruction pour déterminer si oui ou non les données envoyées en réponse à une seconde requête de données sont contenues dans le tampon de données ; et 20 une instruction de traitement de la seconde requête de données à partir des données contenues dans le tampon de données sur la base d'une détermination que les données envoyées en réponse à la seconde requête de données sont contenues dans le tampon de données. -21-. Système selon la revendication 17, dans lequel le tampon de données est prévu dans la mémoire du dispositif à état solide. 19. Système selon la revendication 17, dans lequel le tampon de données est prévu dans la 5 mémoire associée à l'interconnexion de composant périphérique expresse (PCIe) du dispositif hébergeur. 20. Système selon la revendication 17, comprenant en outre : une instruction pour déterminer, au niveau d'un lecteur prévu sur le dispositif hébergeur, 10 que les données envoyées en réponse à une seconde requête de données sont contenues dans le tampon de données ; et une instruction de traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des données contenues dans le tampon de données, dans lequel le traitement de la seconde requête de données en provenance du dispositif hébergeur à l'aide des 15 données contenues dans le tampon de données comprend la mise à disposition du dispositif hébergeur d'une entrée de liste d'éclatement - regroupement pointant vers la mémoire dans le tampon de données contenant les données envoyées en réponse. -22-