FR3020885A1 - - Google Patents

Download PDF

Info

Publication number
FR3020885A1
FR3020885A1 FR1554092A FR1554092A FR3020885A1 FR 3020885 A1 FR3020885 A1 FR 3020885A1 FR 1554092 A FR1554092 A FR 1554092A FR 1554092 A FR1554092 A FR 1554092A FR 3020885 A1 FR3020885 A1 FR 3020885A1
Authority
FR
France
Prior art keywords
data
request
solid state
buffer
host device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1554092A
Other languages
English (en)
Other versions
FR3020885B1 (fr
Inventor
Lee Anton Sendelbach
Jeffrey S Werning
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
HGST Netherlands BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of FR3020885A1 publication Critical patent/FR3020885A1/fr
Application granted granted Critical
Publication of FR3020885B1 publication Critical patent/FR3020885B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)

Abstract

La présente invention concerne des techniques de mise en mémoire cache des résultats d'une requête de lecture à un dispositif à état solide. Dans certains modes de réalisation, les techniques peuvent être réalisées comme 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.

Description

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 -

Claims (4)

  1. 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. 2. Procédé selon la revendication 1, dans lequel le segment de données est indiqué par une adresse de bloc logique.
  3. 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. 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-
FR1554092A 2014-05-12 2015-05-07 Systeme et procede de mise en memoire cache des resultats de requete de lecture de dispositif a etat solide Active FR3020885B1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/275,468 US9990298B2 (en) 2014-05-12 2014-05-12 System and method for caching solid state device read request results
US14275468 2014-05-12

Publications (2)

Publication Number Publication Date
FR3020885A1 true FR3020885A1 (fr) 2015-11-13
FR3020885B1 FR3020885B1 (fr) 2019-05-31

Family

ID=53489071

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1554092A Active FR3020885B1 (fr) 2014-05-12 2015-05-07 Systeme et procede de mise en memoire cache des resultats de requete de lecture de dispositif a etat solide

Country Status (4)

Country Link
US (1) US9990298B2 (fr)
DE (1) DE102015005817B4 (fr)
FR (1) FR3020885B1 (fr)
GB (1) GB2528534B (fr)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102540765B1 (ko) * 2016-09-07 2023-06-08 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US10503443B2 (en) * 2016-09-13 2019-12-10 Netapp, Inc. Systems and methods for allocating data compression activities in a storage system
US10719462B2 (en) * 2018-09-25 2020-07-21 Intel Corporation Technologies for computational storage via offload kernel extensions
US11537440B2 (en) * 2019-12-19 2022-12-27 Hewlett Packard Enterprise Development Lp Infrastructure adaptive consistency level mechanism
JP7197541B2 (ja) * 2020-04-01 2022-12-27 株式会社日立製作所 ストレージ装置
US11360669B2 (en) * 2020-04-01 2022-06-14 Hitachi, Ltd. Storage device accelerator providing aggregation of divided plaintext data
CN111651396B (zh) * 2020-04-26 2021-08-10 尧云科技(西安)有限公司 一种优化的pcie完成包乱序管理电路实现方法

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481701A (en) 1991-09-13 1996-01-02 Salient Software, Inc. Method and apparatus for performing direct read of compressed data file
US5778411A (en) * 1995-05-16 1998-07-07 Symbios, Inc. Method for virtual to physical mapping in a mapped compressed virtual storage subsystem
US5946276A (en) * 1996-11-15 1999-08-31 Rimage Corporation Data flow management system for recordable media
US6105080A (en) * 1997-12-30 2000-08-15 Lsi Logic Corporation Host adapter DMA controller with automated host reply capability
US6243767B1 (en) * 1998-06-02 2001-06-05 Adaptec, Inc. System for register partitioning in multi-tasking host adapters by assigning a register set and a unique identifier in each of a plurality of hardware modules
US6889256B1 (en) * 1999-06-11 2005-05-03 Microsoft Corporation System and method for converting and reconverting between file system requests and access requests of a remote transfer protocol
US20010047473A1 (en) * 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US6952797B1 (en) * 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
SE0004839D0 (sv) * 2000-12-22 2000-12-22 Ericsson Telefon Ab L M Method and communication apparatus in a communication system
US6754735B2 (en) * 2001-12-21 2004-06-22 Agere Systems Inc. Single descriptor scatter gather data transfer to or from a host processor
US6877059B2 (en) * 2002-03-29 2005-04-05 Emc Corporation Communications architecture for a high throughput storage processor
US6795897B2 (en) * 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
JP4186602B2 (ja) * 2002-12-04 2008-11-26 株式会社日立製作所 ジャーナルログを利用した更新データ書込方法
US7493450B2 (en) * 2003-04-14 2009-02-17 Hewlett-Packard Development Company, L.P. Method of triggering read cache pre-fetch to increase host read throughput
US20070011398A1 (en) * 2003-05-26 2007-01-11 Koninklijke Philips Electronics N.V. Method and device for transferring data between a main memory and a storage device
US6954450B2 (en) * 2003-11-26 2005-10-11 Cisco Technology, Inc. Method and apparatus to provide data streaming over a network connection in a wireless MAC processor
US7522623B2 (en) * 2004-09-01 2009-04-21 Qlogic, Corporation Method and system for efficiently using buffer space
US7392340B1 (en) * 2005-03-21 2008-06-24 Western Digital Technologies, Inc. Disk drive employing stream detection engine to enhance cache management policy
US8407428B2 (en) * 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
US8387073B1 (en) * 2007-03-23 2013-02-26 Qlogic, Corporation Method and system for processing network packets
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US8615496B2 (en) * 2007-10-19 2013-12-24 Apple Inc. File system reliability using journaling on a storage medium
TWI375953B (en) * 2008-02-21 2012-11-01 Phison Electronics Corp Data reading method for flash memory, controller and system therof
US7966455B2 (en) * 2008-03-04 2011-06-21 International Business Machines Corporation Memory compression implementation in a multi-node server system with directly attached processor memory
US8429351B1 (en) * 2008-03-28 2013-04-23 Emc Corporation Techniques for determining an amount of data to prefetch
US8954654B2 (en) 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US8307044B2 (en) * 2008-08-28 2012-11-06 Netapp, Inc. Circuits, systems, and methods to integrate storage virtualization in a storage controller
US8645337B2 (en) * 2009-04-30 2014-02-04 Oracle International Corporation Storing compression units in relational tables
US8321648B2 (en) * 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US9189385B2 (en) * 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US20120089781A1 (en) * 2010-10-11 2012-04-12 Sandeep Ranade Mechanism for retrieving compressed data from a storage cloud
WO2012082792A2 (fr) 2010-12-13 2012-06-21 Fusion-Io, Inc. Appareil, système et procédé destinés à une mémoire à validation automatique
US9497466B2 (en) * 2011-01-17 2016-11-15 Mediatek Inc. Buffering apparatus for buffering multi-partition video/image bitstream and related method thereof
WO2012116369A2 (fr) * 2011-02-25 2012-08-30 Fusion-Io, Inc. Appareil, système et procédé de gestion du contenu d'une antémémoire
KR101720101B1 (ko) 2011-03-18 2017-03-28 삼성전자주식회사 메모리 시스템에 데이터를 쓰는 쓰기 방법 및 메모리 시스템의 데이터 쓰기 방법
US8966059B2 (en) * 2011-04-06 2015-02-24 Microsoft Technology Licensing, Llc Cached data detection
KR101833416B1 (ko) * 2011-04-27 2018-04-13 시게이트 테크놀로지 엘엘씨 데이터 리드 방법 및 이를 적용한 저장 장치
WO2013022915A1 (fr) 2011-08-09 2013-02-14 Lsi Corporation Interfonctionnement d'un dispositif e/s et d'un hôte informatique
KR101522848B1 (ko) 2011-10-05 2015-05-26 엘에스아이 코포레이션 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US20130117744A1 (en) 2011-11-03 2013-05-09 Ocz Technology Group, Inc. Methods and apparatus for providing hypervisor-level acceleration and virtualization services
US8725939B1 (en) * 2011-11-30 2014-05-13 Emc Corporation System and method for improving cache performance
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US8687902B2 (en) * 2012-03-29 2014-04-01 Intel Corporation System, method, and computer program product for decompression of block compressed images
US9235346B2 (en) * 2012-05-04 2016-01-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Dynamic map pre-fetching for improved sequential reads of a solid-state media
US20130332652A1 (en) 2012-06-11 2013-12-12 Hitachi, Ltd. Computer system and method for controlling computer system
US20150193342A1 (en) 2012-09-25 2015-07-09 Hitachi, Ltd. Storage apparatus and method of controlling the same
US9400744B2 (en) * 2012-10-30 2016-07-26 Mangstor, Inc. Magnetic random access memory journal for multi-level cell flash memory
US9274951B2 (en) * 2013-05-31 2016-03-01 Altera Corporation Cache memory controller for accelerated data transfer
US20150074355A1 (en) * 2013-09-12 2015-03-12 Lsi Corporation Efficient caching of file system journals
US9110786B2 (en) * 2013-11-07 2015-08-18 Sandisk Technologies Inc. Read operation prior to retrieval of scatter gather list
WO2015121912A1 (fr) * 2014-02-12 2015-08-20 株式会社日立製作所 Dispositif de mémoire de données
US9612833B2 (en) * 2014-02-28 2017-04-04 Intel Corporation Handling compressed data over distributed cache fabric

Also Published As

Publication number Publication date
GB2528534A (en) 2016-01-27
GB201507569D0 (en) 2015-06-17
DE102015005817B4 (de) 2020-10-29
US9990298B2 (en) 2018-06-05
FR3020885B1 (fr) 2019-05-31
GB2528534B (en) 2017-02-15
US20150324134A1 (en) 2015-11-12
DE102015005817A1 (de) 2015-11-12

Similar Documents

Publication Publication Date Title
FR3020885A1 (fr)
US11561730B1 (en) Selecting paths between a host and a storage system
US11500772B2 (en) Method and apparatus for cache write overlap handling
FR3027128A1 (fr)
FR3033061A1 (fr)
FR3023030A1 (fr)
US9317367B2 (en) Re-distributing high usage data in a raid solid state drive array
US9710283B2 (en) System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting
US9218257B2 (en) Methods for managing failure of a solid state device in a caching storage
US11360682B1 (en) Identifying duplicative write data in a storage system
CN106133707A (zh) 高速缓存管理
US20140115245A1 (en) Apparatus system and method for providing raw data in a level-two cache
US10198194B2 (en) Placing data within a storage device of a flash array
CN112256599A (zh) 一种数据预取方法、装置及存储设备
US20150193311A1 (en) Managing production data
US20170220464A1 (en) Efficiently managing encrypted data on a remote backup server
US10949359B2 (en) Optimizing cache performance with probabilistic model
CN103885859B (zh) 一种基于全局统计的去碎片方法及系统
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法
US10474588B1 (en) Method and system for memory-based data caching
US20230128077A1 (en) System and Method for Aggregation of Write Commits To Control Written Block Size
US11176034B2 (en) System and method for inline tiering of write data
FR3074939A1 (fr) Procede de gestion du systeme de fichiers d'un terminal informatique
US20150356011A1 (en) Electronic device and data writing method
KR20160127448A (ko) 초고속 반도체 저장장치를 활용한 빅 데이터 분석 관계형 데이터 베이스 관리 시스템

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLFP Fee payment

Year of fee payment: 3

PLSC Publication of the preliminary search report

Effective date: 20180330

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

TP Transmission of property

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., US

Effective date: 20200319

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10