DE102020104701B4 - Cache data localization system - Google Patents
Cache data localization system Download PDFInfo
- Publication number
- DE102020104701B4 DE102020104701B4 DE102020104701.0A DE102020104701A DE102020104701B4 DE 102020104701 B4 DE102020104701 B4 DE 102020104701B4 DE 102020104701 A DE102020104701 A DE 102020104701A DE 102020104701 B4 DE102020104701 B4 DE 102020104701B4
- Authority
- DE
- Germany
- Prior art keywords
- physical location
- target data
- data
- cache
- address
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Verfahren (100), das Folgendes umfasst:Speichern (104) einer direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540) in einem flüchtigen Speicher (32; 232), die zum direkten Übersetzen einer logischen Blockadresse für Zieldaten an einen physischen Kandidatenort auf einem Cache-Gerät (28; 228) verwendet werden kann;Speichern (108) eines mehrstufigen Übersetzungsindex (44; 244) im flüchtigen Speicher (32; 232) zum Übersetzen der logischen Blockadresse für die Zieldaten in einen erwarteten physischen Speicherort der Zieldaten auf dem Cache-Gerät (28; 228),wobei der mehrstufige Übersetzungsindex (44; 244) Folgendes umfasst:eine erste Indextabelle zum Übersetzen der logischen Blockadresse in eine erste interne Kennung; undeine zweite Indextabelle zum Übersetzen der ersten internen Kennung in den physischen Speicherort auf dem Cache-Gerät (28; 228),Bestimmen (112), ob sich die Zieldaten an dem physischen Kandidatenort befinden, der über die direkte Cache-Adressübersetzungsdatenstruktur (40; 240; 540) bestimmt wurde;als Reaktion auf die Zieldaten, die sich an dem physischen Kandidatenort befinden, Zugreifen auf die Zieldaten am physischen Kandidatenort; undals Reaktion auf die Zieldaten, die sich nicht an dem physischen Kandidatenort befinden, Zugreifen (116) auf die Zieldaten an dem erwarteten physischen Speicherort, der über den mehrstufigen Übersetzungsindex (44; 244) bestimmt wurde; undZuordnen der ersten internen Kennung zu einem anderen physischen Speicherort als Reaktion darauf, dass Daten an dem erwarteten physischen Speicherort an den anderen physischen Speicherort verschoben werden.A method (100) comprising:storing (104) a direct cache address translation data structure (40; 240; 540) in a volatile memory (32; 232) that can be used to directly translate a logical block address for target data to a candidate physical location on a cache device (28; 228);storing (108) a multi-level translation index (44; 244) in the volatile memory (32; 232) for translating the logical block address for the target data to an expected physical location of the target data on the cache device (28; 228),the multi-level translation index (44; 244) comprising:a first index table for translating the logical block address into a first internal identifier; anda second index table for translating the first internal identifier to the physical storage location on the cache device (28; 228),determining (112) whether the target data is located at the candidate physical location determined via the direct cache address translation data structure (40; 240; 540);in response to the target data being located at the candidate physical location, accessing the target data at the candidate physical location; andin response to the target data not being located at the candidate physical location, accessing (116) the target data at the expected physical storage location determined via the multi-level translation index (44; 244); andmapping the first internal identifier to a different physical storage location in response to data at the expected physical storage location being moved to the different physical storage location.
Description
HINTERGRUNDBACKGROUND
Viele Computerspeichersysteme können einen Cache enthalten, der Kopien von Daten enthält, die auf langsamer persistenten Medien gespeichert sind. Der Cache bietet einen schnelleren Zugriff auf Daten, die häufiger abgerufen werden. Das Auffinden des physischen Speicherorts oder der physischen Adresse der Daten im Cache kann interne Metadatensuchen umfassen.Many computer storage systems may include a cache that contains copies of data stored on slower persistent media. The cache provides faster access to data that is accessed more frequently. Finding the physical location or address of the data in the cache may involve internal metadata lookups.
KURZBESCHREIBUNGSHORT DESCRIPTION
Es wird ein Verfahren gemäß Ansprüchen 1 bis 5, ein System gemäß Ansprüchen 6 bis 17 und ein nichtflüchtiges Speichermedium gemäß Ansprüchen 18 bis 20 offenbart.A method according to
KURZBESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS
-
1 ist ein Blockdiagramm, das schematisch Teile eines beispielhaften Cache-Datenortungssystems darstellt.1 is a block diagram schematically illustrating portions of an example cache data location system. -
2 ist ein Blockdiagramm, das schematisch Teile eines beispielhaften nicht vorübergehenden computerlesbaren Mediums darstellt, das beispielhafte Anweisungen zum Auffinden von Cache-Daten speichert.2 is a block diagram schematically illustrating portions of an example non-transitory computer-readable medium storing example instructions for locating cache data. -
3 ist ein Flussdiagramm einer beispielhaften Cache-Datenortungsmethode.3 is a flowchart of an example cache data location method. -
4 ist ein Blockdiagramm, das schematisch Teile eines beispielhaften Cache-Datenortungssystems darstellt.4 is a block diagram schematically illustrating portions of an example cache data location system. -
5 ist ein Flussdiagramm einer beispielhaften Cache-Datenortungsmethode.5 is a flowchart of an example cache data location method. -
6 ist ein Flussdiagramm einer beispielhaften Cache-Datenortungsmethode.6 is a flowchart of an example cache data location method. -
7 ist ein Diagramm, das Teile einer beispielhaften direkten Cache-Adressübersetzungsdatenstruktur in Form einer beispielhaften Hash-Tabelle darstellt.7 is a diagram illustrating portions of an example direct cache address translation data structure in the form of an example hash table.
In allen Zeichnungen bezeichnen identische Referenznummern ähnliche, aber nicht unbedingt identische Elemente. Die Figuren sind nicht unbedingt maßstabsgetreu, und die Größe einiger Teile kann übertrieben sein, um das gezeigte Beispiel deutlicher zu veranschaulichen. Darüber hinaus enthalten die Zeichnungen Beispiele und / oder Implementierungen, die mit der Beschreibung übereinstimmen; Die Beschreibung ist jedoch nicht auf die in den Zeichnungen angegebenen Beispiele und / oder Implementierungen beschränkt.Throughout the drawings, identical reference numbers indicate similar, but not necessarily identical, elements. The figures are not un ding is to scale, and the size of some parts may be exaggerated to more clearly illustrate the example shown. In addition, the drawings contain examples and/or implementations that are consistent with the description; however, the description is not limited to the examples and/or implementations shown in the drawings.
DETAILLIERTE BESCHREIBUNG DER BEISPIELEDETAILED DESCRIPTION OF THE EXAMPLES
Hierin werden beispielhafte Systeme, Verfahren und computerlesbare Anweisungen offenbart, die time den Zeitaufwand für den Zugriff auf in einem Cache gespeicherte Daten reduzieren. Die offenbarten Systeme, Verfahren und Anweisungen reduzieren den Zeitaufwand für den Zugriff auf im Cache gespeicherte Daten, indem sie die Zeit zum Identifizieren des physischen Speicherorts von Daten im Cache reduzieren, der hier als „physischer Speicherort des Caches“ bezeichnet werden kann. Mit dem Aufkommen eines schnelleren Cache-Speichers wird die Zeit zum Auffinden von Daten im Cache häufig zum Engpass. Die offenbarten Speichersysteme, -verfahren und -anweisungen beheben diesen Engpass, indem sie eine weniger aktuelle, aber direkte und schnellere Adressübersetzungsdatenstruktur in Kombination mit einem aktuelleren, aber langsameren mehrstufigen Adressübersetzungsindex (der hier als „mehrstufige Übersetzungsindex“ bezeichnet werden kann) unter Umständen, in denen die direkte Adressumsetzung aufgrund von Datenverschiebung oder Datenentfernung nicht mehr aktuell ist.Disclosed herein are example systems, methods, and computer-readable instructions that reduce the time required to access data stored in a cache. The disclosed systems, methods, and instructions reduce the time required to access data stored in a cache by reducing the time required to identify the physical location of data in the cache, which may be referred to herein as a "physical location of the cache." With the advent of faster cache memory, the time required to find data in the cache often becomes a bottleneck. The disclosed storage systems, methods, and instructions address this bottleneck by using a less current, but direct and faster address translation data structure in combination with a more current, but slower multi-level address translation index (which may be referred to herein as a "multi-level translation index") in circumstances where direct address translation is no longer current due to data movement or data removal.
In einigen Implementierungen werden Kopien von Daten, die auf langsamer persistenten Medien wie einem Festplattenlaufwerk gespeichert sind, auch auf einem Cache-Gerät mit geringer Latenz, wie einem SCM-Gerät (Storage Class Memory), verwaltet. In einer solchen Implementierung kann auf die auf dem Cache-Gerät mit niedriger Latenz gespeicherten Daten zugegriffen werden, indem einer oder beide von zwei verschiedenen Adressübersetzungsmechanismen verwendet werden, die in einem flüchtigen Speicher (z. B. DRAM oder dergleichen) gespeichert sind. Der flüchtige Speicher speichert eine direkte Cache-Adressdatenstruktur, die unter Verwendung einer Hash-Tabelle implementiert werden kann. Der flüchtige Speicher speichert auch einen mehrstufigen Übersetzungsindex, der logische Blockadressen in entsprechende physische Cache-Adressen übersetzt. Für jede von mehreren logischen Blockadressen (die als „Hostadressen“ oder „Benutzereingabeadressen“ bezeichnet werden können) kann die schnellere direkte Cache-Adressübersetzungsdatenstruktur eine logische Blockadresse direkt in eine physikalische Kandidatenadresse von übersetzen ein physischer Speicherort eines Kandidaten im Cache, der eine aktuelle oder frühere Version der angeforderten oder gezielten Daten enthalten kann. Unter Umständen, in denen die Zieldaten nicht mehr an dem durch die direkte Cache-Adressübersetzungsdatenstruktur identifizierten physischen Standort des Kandidaten vorhanden sind, z. B. wenn die Zieldaten innerhalb des Cache verschoben wurden, wird der mehrstufige Übersetzungsindex verwendet, um eine tatsächliche physische Adresse von zu identifizieren Ein erwarteter physischer Speicherort im Cache, der die Zieldaten enthält.In some implementations, copies of data stored on slower persistent media, such as a hard disk drive, are also maintained on a low-latency cache device, such as a storage class memory (SCM) device. In such an implementation, the data stored on the low-latency cache device may be accessed using one or both of two different address translation mechanisms stored in volatile memory (e.g., DRAM or the like). The volatile memory stores a direct cache address data structure, which may be implemented using a hash table. The volatile memory also stores a multi-level translation index that translates logical block addresses into corresponding physical cache addresses. For each of multiple logical block addresses (which may be referred to as "host addresses" or "user input addresses"), the faster direct cache address translation data structure may translate a logical block address directly into a candidate physical address of a candidate physical location in the cache, which may contain a current or previous version of the requested or targeted data. In circumstances where the target data no longer exists at the candidate physical location identified by the direct cache address translation data structure, for example, when the target data has moved within the cache, the multi-level translation index is used to identify an actual physical address of an expected physical location in the cache containing the target data.
Wie oben offenbart, wird zuerst die direkte Cache-Adressübersetzungsdatenstruktur verwendet, um zu versuchen, die durch die logische Blockadresse identifizierten Zieldaten zu lokalisieren. In vielen Fällen befinden sich die Zieldaten jedoch möglicherweise nicht mehr an dem physischen Standort des Kandidaten, der durch die physische Adresse des Kandidaten identifiziert wird, die aus der direkten Cache-Adressübersetzungsdatenstruktur basierend auf der logischen Blockadresse erhalten wird. Dies kann darauf zurückzuführen sein, dass die Zieldaten an einen anderen Speicherort im Cache verschoben wurden. Beispielsweise können ältere Daten, die an einem ersten physischen Ort des Caches vorhanden sind, durch neuere Daten überschrieben werden, die an einen zweiten physischen Ort des Caches geschrieben werden, was dazu führt, dass die älteren Daten nicht mehr aktuell sind. Während eines manchmal als „Garbage Collection“ bezeichneten Prozesses werden alle aktuellen Daten gesammelt und mit anderen aktuellen Daten an anderen physischen Stellen im Cache konzentriert. Beispielsweise kann ein solcher Speicherbereinigungsprozess die neueren Daten am zweiten physischen Speicherort an einen dritten physischen Speicherort des Caches kopieren und sowohl die alten Daten am ersten physischen Speicherort (der keine aktuellen Daten mehr sind) als auch den neueren löschen Daten am zweiten physischen Standort (der ursprünglich verwendet wurde, um die älteren Daten am ersten physischen Standort zu überschreiben). Ein solcher Speicherbereinigungsprozess führt zu einer Änderung des physischen Speicherorts der neueren Daten, bei denen es sich in diesem Beispiel möglicherweise um die Zieldaten handelt. Wenn diese Änderung auftritt, wird der mehrstufige Übersetzungsindex aktualisiert, um den neuen physischen Speicherort der neueren Daten einzuschließen (z. B. Angabe der neueren Daten, die im obigen Beispiel am dritten physischen Speicherort gespeichert sind). In solchen Beispielen kann der mehrstufige Übersetzungsindex für alle derartigen aktuellen Daten aktualisiert werden, die verschoben wurden. Die direkte Cache-Adressübersetzungsdatenstruktur (hier manchmal als direkte logische Blockadresse zur physischen Adressübersetzungsdatenstruktur bezeichnet) kann jedoch zum Zeitpunkt jedes Speicherbereinigungsprozesses nicht aktualisiert werden. Dies kann dazu führen, dass eine physikalische Adresse, die aus der direkten Cache-Adressübersetzungsdatenstruktur abgerufen oder ausgegeben wird (auf die Bezug genommen werden kann, hat hier eine „physikalische Kandidatenadresse“), insofern ungültig ist, als sie keinem physischen Ort im Cache entspricht, der tatsächlich vorhanden ist enthält die Zieldaten. In den hier beschriebenen Beispielen kann der durch eine physikalische Kandidatenadresse angegebene physikalische Ort als „physikalischer Kandidatenort“ bezeichnet werden.As disclosed above, the direct cache address translation data structure is first used to attempt to locate the target data identified by the logical block address. However, in many cases, the target data may no longer be located at the candidate physical location identified by the candidate physical address obtained from the direct cache address translation data structure based on the logical block address. This may be due to the target data having moved to a different location in the cache. For example, older data present in a first physical location of the cache may be overwritten by newer data written to a second physical location of the cache, causing the older data to become out of date. During a process sometimes referred to as "garbage collection," all current data is collected and concentrated with other current data in other physical locations in the cache. For example, such a garbage collection process may copy the newer data at the second physical location to a third physical location of the cache, deleting both the old data at the first physical location (which is no longer current data) and the newer data at the second physical location (which was originally used to overwrite the older data at the first physical location). Such a garbage collection process results in a change in the physical location of the newer data, which may be the target data in this example. When this change occurs, the multi-level translation index is updated to include the new physical location of the newer data (e.g., indicating the newer data stored at the third physical location in the above example). In such examples, the multi-level translation index may be updated for all such current data that has been moved. However, the direct cache address translation data structure (sometimes referred to herein as the direct logical block address to physical address translation data structure) may not be updated at the time of each garbage collection process. This may result in that a physical address retrieved or output from the direct cache address translation data structure (which may be referred to herein as a "candidate physical address") is invalid in that it does not correspond to a physical location in the cache that actually contains the target data. In the examples described here, the physical location indicated by a candidate physical address may be referred to as a "candidate physical location."
Sobald die physische Adresse des Kandidaten für einen physischen Standort des Kandidaten (der die Zieldaten enthalten kann) aus der direkten Cache-Adressübersetzungsdatenstruktur erhalten wurde, überprüfen die offenbarten Systeme, Verfahren und computerlesbaren Anweisungen, ob sich die Zieldaten tatsächlich beim Kandidaten befinden physischer Standort . In einer Implementierung kann jeder physische Speicherort im Cache eine erste Kennung speichern, die direkt mit den zugewiesenen Daten verknüpft ist und sich mit diesen bewegt (z. B. wenn die Daten wie beim Speicherbereinigungsprozess an einen anderen Speicherort kopiert werden). Der Eintrag in der direkten Cache-Adressübersetzungsdatenstruktur, die die logische Blockadresse mit der physischen Kandidatenadresse verknüpft, enthält eine zweite Kennung, die den Daten zugeordnet ist, von denen erwartet wird, dass sie sich am physischen Standort des Kandidaten befinden. Wenn die direkte Cache-Adressübersetzungsdatenstruktur zum ersten Mal mit der zweiten Kennung gefüllt wird, ist die zweite Kennung dieselbe wie die erste Kennung, die mit den Daten am physischen Standort des Kandidaten gespeichert ist. Sobald die Daten jedoch an einen neuen Speicherort verschoben wurden, beispielsweise aufgrund des oben beschriebenen Speicherbereinigungsprozesses, kann der physische Speicherort des Kandidaten frei von Daten sein oder andere Daten mit einer Kennung speichern, die sich von der zugeordneten Kennung unterscheidet mit der logischen Blockadresse und zuvor in der direkten Cache-Adressübersetzungsdatenstruktur gespeichert.Once the candidate physical address for a candidate physical location (which may include the target data) is obtained from the direct cache address translation data structure, the disclosed systems, methods, and computer-readable instructions verify that the target data is actually located at the candidate physical location. In one implementation, each physical location in the cache may store a first identifier that is directly associated with and moves with the allocated data (e.g., when the data is copied to another location, as in the garbage collection process). The entry in the direct cache address translation data structure that links the logical block address to the candidate physical address contains a second identifier associated with the data expected to be located at the candidate physical location. The first time the direct cache address translation data structure is populated with the second identifier, the second identifier is the same as the first identifier stored with the data at the candidate physical location. However, once the data has been moved to a new location, for example due to the garbage collection process described above, the candidate physical location may be free of data or may store other data with an identifier that is different from the identifier associated with the logical block address and previously stored in the direct cache address translation data structure.
Die offenbarten Systeme, Verfahren und computerlesbaren Anweisungen überprüfen durch Vergleichen der beiden Kennungen, ob sich die Zieldaten tatsächlich am physischen Standort des Kandidaten befinden. Wenn die beiden Kennungen übereinstimmen, sind die Daten am physischen Standort des Kandidaten die Zieldaten, die durch die logische Blockadresse identifiziert werden. Wenn die beiden Kennungen nicht übereinstimmen, sind die Daten am physischen Standort des Kandidaten nicht die Zieldaten, die durch die logische Blockadresse identifiziert werden. Infolgedessen verschieben sich die Systeme, Verfahren und computerlesbaren Anweisungen dann auf die Verwendung des mehrstufigen Übersetzungsindex, um die Zieldaten über eine erste Zuordnung der logischen Blockadresse für die Zieldaten zu einer logischen Cache-Adresse und eine zweite Zuordnung von zu lokalisieren Diese logische Cache-Adresse entspricht der erwarteten (z. B. aktuellen) physischen Adresse der Zieldaten im Cache. Obwohl die Verwendung des mehrstufigen Übersetzungsindex im Vergleich zur direkten Cache-Adressübersetzungsdatenstruktur aufgrund der mehreren Ebenen oder mehreren Übersetzungen die Latenzen erhöht hat, wird der mehrstufige Übersetzungsindex häufiger mit den aktuellen Speicherorten für Daten als Teil aktualisiert des Garbage Collection-Prozesses kann einen aktuelleren und genaueren Ort für die Zieldaten bereitstellen.The disclosed systems, methods, and computer-readable instructions verify that the target data is actually located at the candidate physical location by comparing the two identifiers. If the two identifiers match, the data at the candidate physical location is the target data identified by the logical block address. If the two identifiers do not match, the data at the candidate physical location is not the target data identified by the logical block address. As a result, the systems, methods, and computer-readable instructions then shift to using the multi-level translation index to locate the target data via a first mapping of the logical block address for the target data to a logical cache address and a second mapping of that logical cache address to the expected (e.g., current) physical address of the target data in the cache. Although the use of the multi-level translation index has increased latencies compared to the direct cache address translation data structure due to the multiple levels or multiple translations, the multi-level translation index is updated more frequently with the current locations for data as part of the garbage collection process can provide a more current and accurate location for the target data.
Sobald die aktuellere Adresse für den „erwarteten“ physischen Speicherort im Cache, der die Zieldaten enthält, im mehrstufigen Übersetzungsindex gefunden oder aus diesem abgerufen wurde, verwenden die Systeme, Methoden und computerlesbaren Anweisungen den erwarteten physischen Speicherort damit die Zieldaten die Datenstruktur der direkten Cache-Adressübersetzung aktualisieren oder korrigieren. Insbesondere wird der alte Eintrag in der direkten Cache-Adressübersetzungsdatenstruktur, der die falsche oder ungültige Kandidatenadresse für die Zieldaten enthält, aus der Datenstruktur entfernt und ein neuer Eintrag ordnet die logische Blockadresse der physischen Adresse für den erwarteten physischen Ort von zu Die aus dem mehrstufigen Übersetzungsindex abgerufenen Zieldaten werden hinzugefügt. Mit anderen Worten, die physische Adresse für den erwarteten physischen Standort der Zieldaten, die vom mehrstufigen Übersetzungsindex ausgegeben wird, wird in der direkten Datenstruktur für die Bargeldadressübersetzung zwischengespeichert. Der „erwartete“ physische Standort kann der Ort sein, an dem sich die Zieldaten aufgrund der häufigeren Aktualisierung des mehrstufigen Übersetzungsindex mit größerer Wahrscheinlichkeit befinden als jeder physische Standort, der durch die direkte Datenstruktur für die Bargeldadressübersetzung bereitgestellt wird. Obwohl möglicherweise eine größere Zuverlässigkeit hinsichtlich des tatsächlichen physischen Standorts für die Zieldaten geboten wird, kann die Ausgabe der physischen Adresse für den erwarteten physischen Standort manchmal aufgrund einer Vielzahl anderer möglicher Ursachen fehlerhaft sein. Infolgedessen wird der Begriff „erwartet“ in der vorliegenden Offenbarung verwendet, wenn die physikalische Adresse für die vom mehrstufigen Übersetzungsindex ausgegebenen Zieldaten beschrieben wird.Once the more current address for the "expected" physical location in the cache containing the target data is found in or retrieved from the multi-level translation index, the systems, methods, and computer-readable instructions use the expected physical location for the target data to update or correct the direct cache address translation data structure. Specifically, the old entry in the direct cache address translation data structure containing the incorrect or invalid candidate address for the target data is removed from the data structure, and a new entry mapping the logical block address to the physical address for the expected physical location of the target data retrieved from the multi-level translation index is added. In other words, the physical address for the expected physical location of the target data output by the multi-level translation index is cached in the direct cache address translation data structure. The "expected" physical location may be the location where the target data is more likely to be located due to the more frequent updating of the multi-level translation index than any physical location provided by the direct cash address translation data structure. Although greater reliability regarding the actual physical location for the target data may be provided, the output of the physical address for the expected physical location may sometimes be erroneous due to a variety of other possible causes. As a result, the term "expected" is used in the present disclosure when describing the physical address for the target data output by the multi-level translation index.
Bei der Initiierung eines Systems kann die direkte Cache-Adressübersetzungsdatenstruktur Einträge für eine gegebene logische Blockadresse enthalten, die leer sind, oder sie kann jeden Eintrag weglassen, der der logischen Blockadresse entspricht. In Reaktion auf das Identifizieren eines leeren Eintrags oder das Fehlen eines zugeordneten Eintrags für eine logische Blockadresse kann der mehrstufige Übersetzungsindex automatisch herangezogen werden, um die tatsächliche physikalische Adresse des erwarteten physikalischen Ortes zu identifizieren, der die Daten enthält, auf die die logische Blockadresse abzielt. Sobald die tatsächliche physikalische Adresse für den erwarteten physischen Ort der Daten, auf die die logische Blockadresse abzielt, unter Verwendung des mehrstufigen Übersetzungsindex identifiziert worden ist, kann ein leerer Eintrag für die logische Blockadresse in der Datenstruktur mit der tatsächlichen physikalischen Adresse für gefüllt werden Der erwartete physische Standort oder die Datenstruktur können mit einem neuen Eintrag für die logische Blockadresse gefüllt werden, der die tatsächliche physische Adresse für den erwarteten physischen Standort enthält.When a system is initiated, the direct cache address translation data structure may contain entries for a given logical block address that are empty, or it may omit any entry corresponding to the logical block address. In response to identifying an empty entry or the absence of a mapped entry for a logical block address, the multi-level translation index may be automatically consulted to identify the actual physical address of the expected physical location containing the data targeted by the logical block address. Once the actual physical address for the expected physical location of the data targeted by the logical block address has been identified using the multi-level translation index, an empty logical block address entry in the data structure may be filled with the actual physical address for the expected physical location, or the data structure may be filled with a new logical block address entry containing the actual physical address for the expected physical location.
Ein Beispiel für einen solchen mehrstufigen Übersetzungsindex ist ein Index, der eine erste Ebene enthält, die einen Blockindex umfasst, der einen Baum umfasst, der für jede von mehreren logischen Blockadressen eine logische Blockadresse (z. B. eine Volumen-ID und einen Offset) abbildet und die als „logische Blockadresse“ oder „Hostadresse“ bezeichnet werden können) an eine jeweilige logische Cache-Adresse (z. B. einen Benutzerblock (BU), und die als Datenkennung bezeichnet werden kann). Der Index umfasst ferner eine zweite Ebene, die einen Cache-Index umfasst, der einen Baum umfasst, der für jede von mehreren logischen Cache-Adressen eine logische Cache-Adresse (z. B. den Benutzerblock) einer jeweiligen tatsächlichen physischen Adresse (z. B. Segment-ID und Offset) zuordnet) für einen physischen Cache-Speicherort, an dem die Daten, die der logischen Blockadresse entsprechen (oder von dieser als Ziel ausgewählt werden), im Cache gespeichert werden. Der Cache-Index wird aktualisiert, wenn sich die physischen Adressen der Daten im Cache ändern. Beispielsweise kann die tatsächliche physikalische Adresse (z. B. die Segment-ID und der Versatz) von Daten, die einer logischen Cache-Adresse (z. B. Benutzerblock) entsprechen, aktualisiert werden, wenn sich der physikalische Ort der Daten, die den logischen Cache-Adressen zugeordnet sind, ändert (z. als Ergebnis eines Speicherbereinigungsprozesses, wie oben beschrieben).An example of such a multi-level translation index is an index that includes a first level that includes a block index that includes a tree that maps, for each of a plurality of logical block addresses, a logical block address (e.g., a volume ID and an offset), which may be referred to as a "logical block address" or "host address") to a respective logical cache address (e.g., a user block (BU), and which may be referred to as a data identifier). The index further includes a second level that includes a cache index that includes a tree that maps, for each of a plurality of logical cache addresses, a logical cache address (e.g., the user block) to a respective actual physical address (e.g., segment ID and offset) for a physical cache location where the data corresponding to (or targeted by) the logical block address is stored in the cache. The cache index is updated when the physical addresses of the data in the cache change. For example, the actual physical address (e.g., the segment ID and offset) of data corresponding to a logical cache address (e.g., user block) may be updated when the physical location of the data associated with the logical cache addresses changes (e.g., as a result of a garbage collection process, as described above).
In einer Implementierung umfasst die direkte Cache-Adressübersetzungsdatenstruktur eine Hash-Tabelle. In einer Implementierung ordnet die Hash-Tabelle für jede von mehreren logischen Blockadressen die logische Blockadresse (z. B. Datenträger-ID und Offset, Benutzereingabeadresse oder Hostadresse) direkt einer jeweiligen physischen Adresse (z. B. Segment) zu ID und Offset) für einen physischen Speicherort in einem Cache, wobei die beiden Baumspaziergänge des mehrstufigen Übersetzungsindex durch eine einzelne Hash-Tabellensuche ersetzt werden. Die Hash-Tabelle, die als Beschleunigungsindex dient, kann als „Metadaten-Bypass-Cache“ betrachtet werden, der im Cache-Datenortungssystem verwendet wird, um die Adressierung des Speichersystems in der SCM-Cache-Schicht zu erleichtern, ohne die CPU-Kosten für interne Metadaten-Lookups zu verursachen (z. B. durch Umgehen) eine Suche nach einer logischen Cache-Adresse in Metadaten).In one implementation, the direct cache address translation data structure comprises a hash table. In one implementation, for each of multiple logical block addresses, the hash table maps the logical block address (e.g., volume ID and offset, user input address, or host address) directly to a respective physical address (e.g., segment ID and offset) for a physical storage location in a cache, replacing the two tree walks of the multi-level translation index with a single hash table lookup. The hash table, which serves as an acceleration index, can be thought of as a "metadata bypass cache" used in the cache data location system to facilitate storage system addressing in the SCM cache layer without incurring the CPU cost of internal metadata lookups (e.g., by bypassing a lookup for a logical cache address in metadata).
In einer Implementierung kann ein Schlüssel für eine Suche in der Hash-Tabelle auf der logischen Blockadresse für Zieldaten basieren. Beispielsweise kann eine Hash-Funktion auf die logische Blockadresse angewendet werden, um einen „Hash“ der logischen Blockadresse zu erzeugen oder zu erhalten. Der Hash oder Teile des Hash können als Schlüssel zum Ausführen einer Suche in der Hash-Tabelle dienen. Beispielsweise kann ein Teil des Hashs der logischen Blockadresse (z. B. der Hash ohne die letzten 4 Bits des Hashs) als erster Schlüssel in der Hash-Tabelle verwendet werden, um eine Seite zu identifizieren, die einen Eintrag enthält, der den physischen Kandidaten enthält Adresse für einen Kandidaten für einen physischen Standort (z. B. der die Zieldaten enthalten kann). Der vollständige Hash kann als zweiter Schlüssel in der Hash-Tabelle verwendet werden, um einen bestimmten Ort auf der identifizierten Seite für den Eintrag zu identifizieren, der die physikalische Adresse des Kandidaten enthält.In one implementation, a key for a lookup in the hash table may be based on the logical block address for target data. For example, a hash function may be applied to the logical block address to generate or obtain a "hash" of the logical block address. The hash, or portions of the hash, may serve as a key to perform a lookup in the hash table. For example, a portion of the hash of the logical block address (e.g., the hash without the last 4 bits of the hash) may be used as the first key in the hash table to identify a page that contains an entry containing the candidate physical address for a candidate physical location (e.g., which may contain the target data). The full hash may be used as the second key in the hash table to identify a specific location on the identified page for the entry containing the candidate physical address.
In einer Implementierung umfasst die Hash-Tabelle eine zweistufige Tabelle, die ein Array von Zeigern auf Seiten mit Einträgen für den Schlüssel / Kandidaten-Standort (K / CPL) auf jeder Seite umfasst. In einer Implementierung darf jede Seite eine Größe von nicht mehr als 10 MB haben und wobei die Seiten mindestens 200.000 Seiten umfassen. In einer Implementierung ist jede Seite 1 MB groß, wobei die Hash-Tabelle 500.000 Seiten umfasst. In einer Implementierung umfasst jede Seite nicht mehr als 50.000 K / CPL-Einträge. Jeder K / CPL-Eintrag kann eine logische Blockadresse (z. B. über einen Hash der logischen Blockadresse) einer physischen Kandidatenadresse in dem Eintrag zuordnen. In einer Implementierung umfasst jede Seite 32.000 K / CPL-Einträge.In one implementation, the hash table comprises a two-level table comprising an array of pointers to pages with key/candidate location (K/CPL) entries on each page. In one implementation, each page must be no more than 10 MB in size, and where the pages comprise at least 200,000 pages. In one implementation, each page is 1 MB in size, with the hash table comprising 500,000 pages. In one implementation, each page comprises no more than 50,000 K/CPL entries. Each K/CPL entry can map a logical block address (e.g., via a hash of the logical block address) to a candidate physical address in the entry. In one implementation, each page comprises 32,000 K/CPL entries.
In solchen Implementierungen kann die Größe der Seiten (nicht größer als 10 MB und bei einigen Implementierungen 1 MB) von einem Speicherzuweiser effizient verwaltet werden. Wenn ein einheitlicher Allokator beispielsweise Speicher zurückfordern soll, werden Seiten möglicherweise verworfen, während nur ein kleiner Teil der Hash-Tabelle verloren geht. Außerdem kann für jede Seite eine separate Sperre (z. B. eine Drehsperre) implementiert werden. In solchen Implementierungen treten die meisten Zugriffe bei einer Sperre nicht in Konflikt, da eine Anzahl von Seiten groß ist. In solchen Beispielen kann jede Seite mit einer Sperre geschützt sein, z. B. einer Drehsperre, aber die Wahrscheinlichkeit eines Sperrkonflikts für gleichzeitige Threads kann vernachlässigbar sein. Gleichzeitig ist number die Anzahl der Einträge auf einer Seite hoch, so dass der Speicherplatzaufwand für eine solche Sperre minimal ist. Eine solche Dimensionierung kann die Einbeziehung aller Einträge für eine große Eingabe / Ausgabe (IO) unter nur einer Sperre erreichen. Beispielsweise kann eine einzelne Sperre jeden Eintrag einer Seite schützen (z. B. 32.000 Einträge). Infolgedessen können solche Implementierungen eine granulare Seitensperrung bereitstellen, die effizient ist und eine hohe Parallelität ermöglicht.In such implementations, the size of the pages (no larger than 10 MB, and in some
In einer Implementierung wird ein Hash der logischen Blockadressen mit den ausgeblendeten niedrigen vier Bits als Schlüssel zum Auswählen einer Seite verwendet, sodass benachbarte logische Blockadressen (LBAs) auf derselben Seite landen. Innerhalb jeder Seite wird ein Array von Schlüssel- / CPL-Werten durch den (vollständigen) Hash der logischen Blockadressen als Schlüssel indiziert. In einem Beispiel ist die Hash-Tabelle assoziativ in vier Richtungen gesetzt, was bedeutet, dass für jeden Schlüssel vier mögliche Slots vorhanden sind. Diese Anordnung kann einen hohen Lastfaktor mit niedrigen und deterministischen Prüfkosten bereitstellen. Die Leistung kann verbessert werden, da alle möglichen Speicherorte für ein Element im Speicher zusammenhängend sind und in zwei CPU-Cache-Zeilen passen können.In one implementation, a hash of the logical block addresses with the low four bits hidden is used as a key to select a page, so that adjacent logical block addresses (LBAs) end up on the same page. Within each page, an array of key/CPL values is indexed by the (full) hash of the logical block addresses as a key. In one example, the hash table is set to be four-way associative, meaning that there are four possible slots for each key. This arrangement can provide a high load factor with low and deterministic check costs. Performance can be improved because all possible locations for an item in memory are contiguous and can fit in two CPU cache lines.
In einer Implementierung dient der Ort des Eintritts in den Satz als Proxy für seine Temperatur. In einer solchen Implementierung werden die Einträge in der Menge in einer Reihenfolge der zuletzt verwendeten (LRU) verwaltet, indem neue und aufgerufene Einträge an das obere oder zuletzt verwendete (MRU) Ende der Gruppe heraufgestuft und der Eintrag am unteren Rand entfernt werden oder LRU-Ende des Satzes (der zuletzt verwendete Eintrag im Satz), wenn ein neuer Eintrag in einen vollständigen Satz eingefügt wird. Infolgedessen wird die Position im Set als Indikator für die Temperatur des Eintrags verwendet. Somit kann die LRU-Cache-Richtlinie mit geringem oder keinem Speicherplatzaufwand angenähert werden.In one implementation, the location of entry into the set serves as a proxy for its temperature. In such an implementation, the entries in the set are managed in a least recently used (LRU) order by promoting new and accessed entries to the top or least recently used (MRU) end of the set and removing the entry at the bottom or LRU end of the set (the most recently used entry in the set) when a new entry is inserted into a complete set. As a result, the position in the set is used as an indicator of the entry's temperature. Thus, the LRU cache policy can be approximated with little or no storage overhead.
Obwohl die Verwendung einer Hash-Tabelle zum Implementieren der direkten Adressübersetzungsdatenstruktur in einigen Beispielen zu Kollisionen und Räumungen führen kann, die bei einem hohen Auslastungsfaktor nicht behoben werden können, behebt die zusätzliche Einbeziehung des mehrstufigen Übersetzungsindex solche Bedenken. Da die direkte Adressübersetzungsdatenstruktur selbst ein Cache ist, sind Fehlschläge akzeptabel, da sie durch einen Datenübersetzungspfad durch den mehrstufigen Adressübersetzungsindex behoben werden, wenn auch mit einer etwas höheren Latenz.Although using a hash table to implement the direct address translation data structure can, in some examples, result in collisions and evictions that cannot be resolved under a high load factor, the additional inclusion of the multi-level translation index addresses such concerns. Since the direct address translation data structure is itself a cache, misses are acceptable as they are resolved by a data translation path through the multi-level address translation index, albeit at a slightly higher latency.
Offenbart ist ein Beispielsystem , das persistent persistente Speichergeräte, Cache-Geräte mit geringer Latenz, flüchtigen Speicher und mindestens einen Prozessor enthalten kann. Der Prozessor soll Anweisungen ausführen, um eine direkte Adressübersetzungsdatenstruktur in dem flüchtigen Speicher zu speichern, die verwendet werden kann, um eine logische Blockadresse für Zieldaten direkt in eine physische Kandidatenadresse eines physischen Kandidatenorts auf dem Cache-Gerät zu übersetzen, und eine mehrstufige Übersetzung zu speichern Index im flüchtigen Speicher zum Übersetzen der logischen Blockadresse für die Zieldaten in eine tatsächliche physikalische Adresse für einen erwarteten physischen Ort, der die Zieldaten auf dem Cache-Gerät enthält, und Bestimmen, ob sich die Zieldaten an dem dem Kandidaten entsprechenden physischen Ort des Kandidaten befinden physikalische Adresse, die aus der Datenstruktur der direkten Cache-Adressübersetzung abgerufen wird. Disclosed is an example system that may include persistent storage devices, low latency cache devices, volatile memory, and at least one processor. The processor is to execute instructions to store a direct address translation data structure in the volatile memory that can be used to directly translate a logical block address for target data to a candidate physical address of a candidate physical location on the cache device, and store a multi-level translation index in the volatile memory for translating the logical block address for the target data to an actual physical address for an expected physical location containing the target data on the cache device, and determine whether the target data is located at the candidate physical location corresponding to the candidate physical address retrieved from the direct cache address translation data structure.
In Reaktion auf die Zieldaten, die sich am physischen Standort des Kandidaten befinden, kann der Prozessor Anweisungen ausführen, um auf die Zieldaten am physischen Standort des Kandidaten zuzugreifen. In Reaktion auf die Zieldaten, die sich nicht an der physischen Adresse des Kandidaten befinden, kann der Prozessor Anweisungen ausführen, um auf die Zieldaten an dem erwarteten physischen Ort zuzugreifen, der aus dem mehrstufigen Übersetzungsindex abgerufen wird.In response to the target data being located at the candidate's physical location, the processor may execute instructions to access the target data at the candidate's physical location. In response to the target data not being located at the candidate's physical address, the processor may execute instructions to access the target data at the expected physical location retrieved from the multi-level translation index.
Beschrieben wird ein Beispiel Verfahren das umfasst eine Datenstruktur in einem flüchtigen Speicher zu speichern , die direkt für die gezielte Daten an eine Kandidaten physikalische Adresse eines Kandidaten physikalischen Position auf einer Cache - Einheit einen Block logische Adresse übersetzt, ein mehrstufiges Übersetzungs Speichern Index in dem flüchtigen Speicher, der verwendet werden kann, um die logische Blockadresse für die Zieldaten in eine tatsächliche physikalische Adresse für den erwarteten physischen Ort auf dem Cache-Gerät zu übersetzen; und Bestimmen, ob sich die Zieldaten an dem physischen Kandidatenort befinden, der der physischen Kandidatenadresse entspricht, die aus der direkten Cache-Adressübersetzungsdatenstruktur abgerufen wurde. In Reaktion auf die Zieldaten, die sich nicht an der physischen Adresse des Kandidaten befinden, wird auf die Zieldaten an dem erwarteten physischen Ort zugegriffen, der einer tatsächlichen physischen Adresse entspricht, die aus dem mehrstufigen Übersetzungsindex abgerufen wurde. Darüber hinaus Übersetzung Struktur die erwartete physikalische Position aus dem Multi - Level - Übersetzung Index abgerufen wird in der direkten Cache Adreßumsetzungsstruktur zwischengespeichert, was zu einer automatischen Aktualisierung des direkter Cache - Adresse.Described is an example method that includes storing a data structure in a volatile memory that directly translates a block logical address for the targeted data to a candidate physical address of a candidate physical location on a cache device, storing a multilevel translation index in the volatile memory that can be used to translate the logical block address for the target data into an actual physical address for the expected physical location on the cache device; and determining whether the target data is located at the candidate physical location corresponding to the candidate physical address retrieved from the direct cache address translation data structure. In response to the target data not being located at the candidate physical address, accessing the target data at the expected physical location corresponding to an actual physical address retrieved from the multilevel translation index. In addition, the translation structure retrieves the expected physical location from the multilevel translation index in the direct cache Address translation structure, resulting in automatic updating of the direct cache address.
Offenbart ist ein Beispiel für ein nicht vorübergehendes computerlesbares Medium, das Anweisungen für einen Prozessor enthält. Die Anweisungen können vom Prozessor ausgeführt werden, um einen Prozessor anzuweisen, eine logische Blockadresse für Zieldaten zu empfangen, die empfangene logische Blockadresse unter Verwendung einer direkten Cache-Adressübersetzungsdatenstruktur direkt in eine physikalische Kandidatenadresse zu übersetzen und zu bestimmen, ob sich die Zieldaten bei a befinden physischer Speicherort des Kandidaten in einem Cache, der der physischen Adresse des Kandidaten entspricht. In Reaktion auf die Zieldaten, die sich am physischen Standort des Kandidaten befinden, können die Anweisungen vom Prozessor ausgeführt werden, um auf die Zieldaten am physischen Standort des Kandidaten zuzugreifen. In Reaktion auf die Zieldaten, die sich nicht am physischen Standort des Kandidaten befinden, sollen die Anweisungen den Prozessor anweisen, einen mehrstufigen Übersetzungsindex zu verwenden, um die logische Blockadresse in eine logische Cache-Adresse zu übersetzen, die logische Cache-Adresse in eine tatsächliche physische Adresse zu übersetzen und Zugriff auf die Zieldaten an der tatsächlichen physischen Adresse (z. B. einem erwarteten physischen Speicherort im Cache, der der tatsächlichen physischen Adresse entspricht). In einigen Implementierungen verwenden die Anweisungen ferner die Ergebnisse aus dem mehrstufigen Übersetzungsindex, um die Datenstruktur der direkten Cache-Adressübersetzung automatisch zu aktualisieren.Disclosed is an example of a non-transitory computer-readable medium containing instructions for a processor. The instructions are operable by the processor to instruct a processor to receive a logical block address for target data, translate the received logical block address directly to a candidate physical address using a direct cache address translation data structure, and determine whether the target data is located at a candidate physical location in a cache that corresponds to the candidate physical address. In response to the target data being located at the candidate physical location, the instructions are operable by the processor to access the target data at the candidate physical location. In response to the target data not being located at the candidate physical location, the instructions are to instruct the processor to use a multi-level translation index to translate the logical block address to a logical cache address, translate the logical cache address to an actual physical address, and access the target data at the actual physical address (e.g., an expected physical location in the cache that corresponds to the actual physical address). In some implementations, the instructions further use the results from the multi-level translation index to automatically update the direct cache address translation data structure.
Persistente Speichervorrichtungen 24 umfassen eine oder mehrere nichtflüchtige Speichervorrichtungen zum Speichern von Daten, auf die zugegriffen, abgerufen oder daraus gelesen werden soll. Persistente Speichervorrichtungen 24 umfassen ferner einen Bereich, in den Daten kopiert oder geschrieben werden können. In den hier beschriebenen Beispielen können persistente Speichervorrichtungen (wie persistente Speichervorrichtungen 24) durch Festplattenlaufwerke (HDD (s)), Solid-State-Laufwerke (s) (SSDs) implementiert werden.) (z. B. Flash-Speichervorrichtung (en)) oder dergleichen oder eine Kombination davon.
Die Cache-Vorrichtung 28 mit niedriger Latenz umfasst eine Speichervorrichtung, die Kopien von mindestens einigen der Daten (schematisch in gestrichelten Linien dargestellt) speichert, die auch auf persistenten Speichervorrichtungen 24 gespeichert sind. Die Cache-Vorrichtung 28 mit niedriger Latenz hat eine Latenz oder Antwortzeit, die geringer ist als die der persistenten Speichervorrichtung (en) 24. Infolgedessen erleichtert die Cache-Vorrichtung 28 mit niedriger Latenz den zeitnahen Zugriff auf Kopien von Daten. In einer Implementierung umfasst die Cache-Vorrichtung 28 mit niedriger Latenz eine persistente Speichervorrichtung (en) mit geringer Latenz oder nichtflüchtige Speichervorrichtung (en). In einer Implementierung umfasst das Cache-Gerät 28 mit niedriger Latenz ein oder mehrere Speicherklassenspeichergeräte (SCM-Geräte). In den hier beschriebenen Beispielen kann SCM eine Art nichtflüchtiger Speicher (NVM) sein. In einigen Beispielen kann SCM unter Verwendung eines Protokolls kommunizieren, das mit NVM Express ™ (NVMe ™) konsistent ist. In den hier beschriebenen Beispielen kann eine SCM-Vorrichtung in einer von mehreren verschiedenen Formen implementiert sein, wie beispielsweise einem 3D-XPoint-Chip (oder einer 3D-XPoint-DIMM-Vorrichtung, einer PCM-Vorrichtung (Phase Change Memory) (z als Phase-Change-Direktzugriffsspeicher (RAM), Magnetic RAM (MRAM) (wie Spin-Torque-Transfer (STT) RAM), Resistive RAM (RRAM), Memristor oder wie oder eine Kombination davon. In einigen Beispielen kann der SCM einen blockbasierten Zugriff implementieren. In anderen Beispielen kann SCM eine speicherbasierte Semantik für den Datenzugriff implementieren. In einer Implementierung umfassen persistente Speichervorrichtungen 24 eine Festplatte oder ein Solid-State-Laufwerk mit einer Antwortzeit für eine gegebene Datenmenge von etwa 10.000 us. Im Vergleich dazu hat die Cache-Vorrichtung 28 mit niedriger Latenz in Form eines SCM eine Antwortzeit für die gleichen Daten von ungefähr 10 us. In einigen Beispielen kann ein Cache-Gerät mit niedriger Latenz ein byteadressierbares nichtflüchtiges Speichergerät sein. In einigen Beispielen kann eine persistente Speichervorrichtung eine blockadressierbare nichtflüchtige Speichervorrichtung sein.Low
Der flüchtige Speicher 32 ist insofern flüchtig, als der nichtflüchtige Datenspeicher 32 verloren geht, wenn dem Speicher 32 längere Zeit keine Energie zugeführt wird. In einer Implementierung umfasst der flüchtige Speicher 32 einen Direktzugriffsspeicher, wie beispielsweise einen dynamischen Direktzugriffsspeicher (DRAM). Der flüchtige Speicher 32 kann eine Antwortzeit haben, die geringer ist als die der Cache-Vorrichtung 28 mit niedriger Latenz. In einer Implementierung hat die Cache-Vorrichtung 28 mit niedriger Latenz in Form eines SCM eine Antwortzeit von 10 us für die gegebene Datenmenge, während der flüchtige Speicher in Form eines DRAM eine Antwortzeit für die gleiche gegebene Datenmenge von hat ungefähr 0,1 us.The
Der Prozessor 36 verwaltet den Zugriff auf Daten auf dem Cache-Gerät 28 mit geringer Latenz. Der Prozessor 36 kann in Form einer anwendungsspezifischen integrierten Schaltung oder einer anderen Verarbeitungseinheit (z. B. physikalische Hardware) vorliegen, die Anweisungen, Code, Programmierung oder Schaltungslogik ausführt, um den Zugriff auf Daten der Cache-Vorrichtung 28 mit niedriger Latenz zu verwalten. Die Anweisungen oder Schaltungslogik , dass Antriebsprozessor 36 Ursache Prozessor 36 40 eine direkte cache Adreßübersetzung Datenstruktur zum Speichern von in dem flüchtigen Speicher 32. In einer Implementierung ordnet die direkte Adressübersetzungsdatenstruktur 40 logische Blockadressen (z. B. jeweils eine Volumen-ID und einen Versatz) direkt einer jeweiligen physischen Kandidatenadresse (z. B. Segment-ID und Versatz) für Daten zu, auf die abgezielt werden soll.
Da die Adressumsetzung direkt ist (anstatt mehrere Tabellen oder Bäume zu durchlaufen), kann die Datenstruktur 40 ein viel schnelleres und reaktionsschnelleres Auffinden einer physischen Adresse ermöglichen, auf die vom Benutzer angeforderte Daten zugreifen können. In Implementierungen, in denen die Daten, auf die zugegriffen wird, auf der Cache-Vorrichtung mit niedriger Latenz gespeichert sind, wie beispielsweise einer SCM-Speichervorrichtung, reduziert die Verwendung der direkten Adressübersetzungstabelle 40 die Zeit oder die Kosten, die mit dem Auffinden der physischen Adresse der Daten verbunden sind, den Engpass in die Gesamtzeit für den Zugriff auf die Daten. In einer Implementierung kann die direkte Cache-Adressübersetzungsdatenstruktur 40 eine Hash-Tabelle umfassen. Beispielsweise kann eine Hash-Funktion auf die logische Blockadresse angewendet werden, wobei der resultierende Hash als Schlüssel für eine Suche oder Lookups in der Hash-Tabelle dient. In anderen Implementierungen kann die direkte Adressübersetzungsdatenstruktur 40 andere Datenstrukturen wie einen Suchbaum umfassen.Because the address translation is direct (rather than traversing multiple tables or trees), the
Die Anweisungen oder die Schaltungslogik, die den Prozessor 36 ansteuern, bewirken auch, dass der Prozessor 36 einen mehrstufigen Adressübersetzungsindex 44 in einem flüchtigen Speicher 32 speichert. Der mehrstufige Adressübersetzungsindex 44 kann als autorisierende (dh aktuelle) Sicherung dienen, wenn die Verwendung der weniger autorisierenden direkten Adressübersetzungsdatenstruktur 40 nicht erfolgreich ist, beispielsweise wenn die physikalische Adresse der vom Benutzer im Cache angeforderten Daten Die Vorrichtung 28 hat sich geändert und die direkte Cache-Adressübersetzungsdatenstruktur 40 wurde noch nicht aktualisiert, um die Änderung widerzuspiegeln. Der mehrstufige Übersetzungsindex 44 ist im Vergleich zu der direkten Adressübersetzungsdatenstruktur 40 „autoritativer“, da der mehrstufige Übersetzungsindex 44 in Bezug auf den physischen Ort der Zieldaten im Cache aufgrund dessen aktueller oder aktueller sein kann zu einer häufigeren Aktualisierung des mehrstufigen Übersetzungsindex 44 mit den erwarteten physischen Speicherorten von Daten im Cache 28 (da diese Daten an verschiedene Speicherorte im Cache 28 verschoben werden) im Vergleich zu der direkten Cache-Adressübersetzungsdatenstruktur 40. Ein Beispiel eines solchen mehrstufigen Übersetzungsindex 44 ist ein Index, der eine erste Ebene enthält, die einen Blockindex umfasst, der einen Baum umfasst, der logische Blockadressen (z. B. jeweils eine Volumen-ID und einen Offset) (die logische Blockadresse) der jeweiligen logischen Cache zuordnet Adresse (z. B. eine entsprechende Benutzerblockkennung). Der Index umfasst ferner eine zweite Ebene, die einen Cache-Index umfasst, der einen Baum umfasst, der die logischen Cache-Adressen den jeweiligen tatsächlichen physischen Adressen im Cache (z. B. jeweils eine Segment-ID und einen Versatz) zuordnet, die zum physischen Lokalisieren der Daten im Cache verwendet werden können. Der Cache-Index wird aktualisiert, wenn sich die jeweiligen physischen Adressen der Daten im Cache ändern.The instructions or circuit logic driving the
Wie in
Mehrstufige Übersetzungsindexbefehle 68 umfassen Programmier-, Code- oder Schaltungslogik, die an den Direktprozessor 36 ausführbar ist, um den in 3 gezeigten Block 108 des Verfahrens 100 auszuführen. Anweisungen 68 direkter Prozessor 36 zum Erstellen, Speichern und Verwalten eines mehrstufigen Übersetzungsindex, wie beispielsweise des Index 44, in einem flüchtigen Speicher 32 zum Übersetzen von logischen Blockadressen in jeweilige tatsächliche physikalische Adressen für jeweilige erwartete physikalische Orte auf Cache-Geräten 28, wie beschrieben über. Wie oben beschrieben wurde, bei einigen Implementierungen, die Mehrebenen - Übersetzung Index 44 erstellt und kann einer ersten Ebene umfassen gespeichert, der einen Blockindex weist einen Baum umfasst, dass die Karten sperren logischen Adressen (zB, die jeweils eine ID Volumen und Offset) zu einem jeweiligen logische Cache-Adresse (z. B. ein entsprechender Benutzerblock). Der Index 44 umfasst ferner eine zweite Ebene mit einem Cache-Index, der einen Baum umfasst, der die logischen Cache-Adressen den jeweiligen tatsächlichen physischen Adressen (z. B. jeweils einer Segment-ID und einem Offset) zuordnet, die zum physischen Lokalisieren von Daten im Cache verwendet werden können. Der Cache-Index wird aktualisiert, wenn sich die physische Adresse bestimmter Daten im Cache ändert.Multi-level
Adressenzugriffsanweisungen 72 umfassen Programmierung, Code oder Logik - Schaltung ausführbar direkten Prozessor 36-112 Blöcke durchzuführen, 114 und 116 des Verfahrens 100 in 3. Wie durch Block 112 angegeben, leiten als Antwort auf den Prozessor 36, der eine logische Blockadresse 50 empfängt (in
Sobald die physikalische Standortadresse des Kandidaten abgerufen wurde, wird bestimmt, ob sich die Zieldaten am physischen Standort des Kandidaten befinden. In einer Implementierung erfolgt die Bestimmung durch Vergleichen von zwei Kennungen. In einer Implementierung hat jeder physische Ort im Cache eine erste Kennung gespeichert, die direkt mit den zugewiesenen Daten verknüpft ist und sich mit diesen bewegt. Der Eintrag in der Datenstruktur für die direkte Cache-Adressübersetzung, die die logische Blockadresse mit dem physischen Standort des Kandidaten verknüpft, enthält eine zweite Kennung, die den Daten zugeordnet ist, von denen angenommen wird, dass sie sich am physischen Standort des Kandidaten befinden. Wenn die direkte Cache-Adressübersetzungsdatenstruktur zum ersten Mal mit der zweiten Kennung gefüllt wird, ist die zweite Kennung dieselbe wie die erste Kennung, die am physischen Standort des Kandidaten gespeichert ist. Sobald die Daten jedoch an einen neuen Speicherort verschoben wurden, beispielsweise aufgrund des oben beschriebenen Speicherbereinigungsprozesses, kann der physische Speicherort des Kandidaten frei von Daten und einer Kennung sein oder tatsächlich andere Daten mit einer anderen Kennung als speichern die Kennung, die der logischen Blockadresse zugeordnet und zuvor in der Datenstruktur für die direkte Cache-Adressübersetzung gespeichert wurde. Ein Vergleich der beiden Bezeichner zeigt an, ob sich die der logischen Blockadresse zugeordneten Daten tatsächlich an der Kandidatenadresse befinden. Wenn die beiden Kennungen übereinstimmen, sind die Daten am physischen Standort des Kandidaten die Zieldaten, die durch die logische Blockadresse identifiziert werden, und auf die Zieldaten kann zugegriffen werden. Wenn die beiden Kennungen nicht übereinstimmen, sind die Daten am physischen Standort des Kandidaten nicht die Zieldaten, die durch die logische Blockadresse identifiziert werden.Once the candidate physical location address is retrieved, a determination is made as to whether the target data is located at the candidate's physical location. In one implementation, the determination is made by comparing two identifiers. In one implementation, each physical location in the cache has a first identifier stored that is directly associated with and moves with the allocated data. The entry in the direct cache address translation data structure that links the logical block address to the candidate's physical location contains a second identifier associated with the data believed to be located at the candidate's physical location. When the direct cache address translation data structure is first populated with the second identifier, the second identifier is the same as the first identifier stored at the candidate's physical location. However, once the data has been moved to a new location, for example due to the garbage collection process described above, the candidate's physical location may be devoid of data and an identifier, or may actually store different data with a different identifier than the identifier associated with the logical block address and previously stored in the direct cache address translation data structure. A comparison of the two identifiers indicates whether the data associated with the logical block address is actually located at the candidate address. If the two identifiers match, the Data at the candidate's physical location is the target data identified by the logical block address, and the target data can be accessed. If the two identifiers do not match, the data at the candidate's physical location is not the target data identified by the logical block address.
Wie durch Block 116 in Verfahren 100 angegeben, Adressantwortzugriff auf die Zieldaten, die sich nicht am physischen Standort des Kandidaten befinden, wie z. B. den physischen Standort des Kandidaten, der keine Daten enthält oder andere Daten enthält als die Zieldaten, die der logischen Blockadresse entsprechen Die Anweisungen 72 weisen den Prozessor 36 an, auf den physischen Ort oder die Adresse zuzugreifen, die der logischen Blockadresse entsprechen, die aus dem mehrstufigen Übersetzungsindex 44 abgerufen wird. Insbesondere führt der Prozessor 36 eine erste Baumsuche in einem Blockindex durch, der die logische Blockadresse (eine Volumen-ID und einen Versatz) einem Benutzerblock (der die erste Kennung sein kann) zuordnet. Die Anweisungen 72 weisen dann den Prozessor 36 an, eine zweite Baumsuche in einem Cache-Index durchzuführen, der den Benutzerblock einer Segment-ID und einem Offset (der erwarteten physischen Adresse oder Position in Cache 28) zuordnet, die zum physischen Lokalisieren der Zieldaten verwendet werden können im Cache 28.As indicated by
Wie durch Block 304 angegeben, empfängt das Cache-Datenortungssystem 220 eine Anforderung von einem Benutzer, auf eine Kopie der im Speicher 228 gespeicherten Daten zuzugreifen. Das System 220 empfängt eine logische Blockadresse oder eine Hostadresse. In einer Implementierung umfasst die logische Blockadresse eine Volumen-ID und einen Offset oder entspricht dieser.As indicated by
Wie durch Block 308 angegeben, bestimmt oder identifiziert der Prozessor 36 gemäß den Anweisungen, wie den Anweisungen, die in dem oben beschriebenen Speicher 60 enthalten sind, eine Kandidatenadresse für die Daten, auf die die logische Blockadresse abzielt, unter Verwendung der Hash-Tabelle der direkten Cache-Adressübersetzungsdatenstruktur. Mit anderen Worten versucht der Prozessor 36, die physikalische Adresse im Cache 228, die der logischen Blockadresse entspricht, unter Verwendung der direkten Adressübersetzungs-Hash-Tabelle 240 zu identifizieren. Die Hash-Tabelle 240 für die direkte Adressumsetzung stellt eine direkte Übersetzung von der logischen Blockadresse zur physischen Adresse im Cache 228 bereit. Insbesondere wird eine Hash-Funktion auf die logische Blockadresse angewendet, wobei der resultierende Hash als Schlüssel dient, um eine Suche in der Hash-Tabelle nach dem physischen Standort des Kandidaten für die Zieldaten durchzuführen. In einer Implementierung wird die direkte Adress-Hash-Tabelle verwendet, um die Volumen-ID und den Versatz (logische Blockadresse oder logische Blockadresse) in eine Segment-ID und einen Versatz (den physischen Kandidatenort) des Cache 228 ohne mehrere Baumindex-Suchvorgänge zu übersetzen.As indicated by
Wie durch Block 310 angegeben, bestimmt der Prozessor 36 gemäß den Anweisungen, die den Speicher 60 enthalten, ob die in Block 308 verwendete direkte Cache-Adressübersetzungsdatenstruktur eine physikalische Kandidatenadresse identifiziert hat, die der logischen Blockadresse entspricht (z. B. wo sich das angeforderte Datenelement befindet gespeichert) wurde gefunden. Beispielsweise können unter Umständen, in denen die physikalische Adresse des bestimmten Zieldatenstücks oder der Kopie der Daten im Cache 228 verschoben wurde, die Zieldaten möglicherweise nicht tatsächlich an dem physischen Kandidatenort liegen, der aus der direkten Cache-Adressübersetzungsdatenstruktur erhalten wird.As indicated by
In einer Implementierung erfolgt die Bestimmung durch Vergleichen von zwei Kennungen. In einer Implementierung hat jeder physische Ort im Cache eine erste Kennung gespeichert, die direkt mit den zugewiesenen Daten verknüpft ist und sich mit diesen bewegt. Der Eintrag in der Datenstruktur für die direkte Cache-Adressübersetzung, die die logische Blockadresse mit dem physischen Standort des Kandidaten verknüpft, enthält eine zweite Kennung, die den Daten zugeordnet ist, von denen angenommen wird, dass sie sich am physischen Standort des Kandidaten befinden. Wenn die direkte Cache-Adressübersetzungsdatenstruktur zum ersten Mal mit der zweiten Kennung gefüllt wird, ist die zweite Kennung dieselbe wie die erste Kennung, die am physischen Standort des Kandidaten gespeichert ist. Sobald die Daten jedoch an einen neuen Speicherort verschoben wurden, beispielsweise aufgrund des oben beschriebenen Speicherbereinigungsprozesses, kann der physische Speicherort des Kandidaten frei von Daten und einer Kennung sein oder tatsächlich andere Daten mit einer anderen Kennung als speichern die Kennung, die der logischen Blockadresse zugeordnet und zuvor in der Datenstruktur für die direkte Cache-Adressübersetzung gespeichert wurde. Ein Vergleich der beiden Bezeichner zeigt an, ob sich die der logischen Blockadresse zugeordneten Daten tatsächlich an der Kandidatenadresse befinden. Wenn die beiden Kennungen übereinstimmen, sind die Daten am physischen Standort des Kandidaten die Zieldaten, die durch die logische Blockadresse identifiziert werden. Wenn die beiden Kennungen nicht übereinstimmen, sind die Daten am physischen Standort des Kandidaten nicht die Zieldaten, die durch die logische Blockadresse identifiziert werden.In one implementation, the determination is made by comparing two identifiers. In one implementation, each physical location in the cache has a first identifier stored that is directly associated with and moves with the allocated data. The entry in the direct cache address translation data structure that links the logical block address to the candidate physical location contains a second identifier associated with the data believed to be located at the candidate physical location. When the direct cache address translation data structure is first populated with the second identifier, the second identifier is the same as the first identifier stored at the candidate physical location. However, once the data has moved to a new location, for example due to the garbage collection process described above, the candidate physical location may be free of data and an identifier, or may actually store different data with a different identifier than the identifier associated with the logical block address and previously stored in the direct cache address translation data structure. A comparison of the two identifiers indicates whether the data associated with the logical block address is actually located at the candidate address. If the two identifiers match, the data at the candidate's physical location is the target data identified by the logical block address. If the two identifiers do not match, the data at the candidate's physical location is not the target data identified by the logical block address.
Wie durch Block 314 angezeigt, greift der Prozessor 36 auf die physikalische Adresse auf der Cache-Vorrichtung 228 zu, wenn die korrekte physikalische Adresse der angeforderten Daten (basierend auf der logischen Blockadresse) gefunden wurde. Ein solcher Zugriff kann das Lesen von Daten von der bestimmten physischen Adresse oder das Schreiben von Daten an die bestimmte physische Adresse umfassen.As indicated by
Alternativ führt, wie durch Block 316 angegeben, der Prozessor 36 in Reaktion auf das in Block 308 ausgeführte Cache-Datenlokalisierungsverfahren, das die korrekte physikalische Adresse für die angeforderten Daten nicht identifiziert, gemäß der im Speicher 60 enthaltenen Anweisung eine mehrstufige Übersetzungsindexsuche 320 durch . Wie durch Block 322 angegeben, führt der Prozessor 36 eine erste Baumsuche in einem Blockindex durch, der die Benutzereingabe (eine Volumen-ID und einen Versatz) einem Benutzerblock zuordnet. Wie durch Block 324 angegeben, führt der Prozessor 36 eine zweite Baumsuche in einem Cache-Index durch, der den Benutzerblock einer Segment-ID und einem Offset (der physischen Adresse in Cache 28) zuordnet, die verwendet werden können, um einen erwarteten physischen Ort für die Zieldaten zu identifizieren auf dem Cache 28 pro Block 314.Alternatively, as indicated by block 316, in response to the cache data location process performed in
Wie durch Block 322 angegeben, wird der erwartete physikalische Ort, der aus der mehrstufigen Übersetzungsindexsuche 320 abgerufen wird, in der Hash-Tabelle zwischengespeichert. Infolgedessen wird die Datenstruktur der direkten Cache-Adressübersetzung automatisch mit Adressinformationen aus dem häufiger aktualisierten mehrstufigen Übersetzungsindex aktualisiert, wenn Fehler in Block 308 gefunden werden.As indicated by
Wie durch den Block 404 angedeutet, Cachedatenlokalisierungssystem 220 empfängt eine Anforderung von einem Benutzer für den Zugriff gezielt in Speicher 228 gespeicherten Daten. Das System 220 empfängt eine logische Blockadresse, die manchmal auch als Hostadresse oder logische Blockadresse (BLA) bezeichnet wird. Die logische Blockadresse unterscheidet sich von der Adresse des physischen Speicherorts im Cache, in dem die Zieladresse gespeichert ist. Das Verfahren 400 erleichtert die Identifizierung der tatsächlichen physischen Adresse im Cache, wobei die vom Benutzer identifizierten Daten mit der bereitgestellten logischen Blockadresse gespeichert werden. In einer Implementierung umfasst die logische Blockadresse eine Volumen-ID und einen Offset oder entspricht dieser.As indicated by
Die Blöcke 406 und 408 veranschaulichen ein Beispiel für die direkte Übersetzung der logischen Blockadresse in einen physischen Ort, eine physikalische Cache-Adresse, die ein Kandidat zum Speichern der Daten ist, nach denen die logische Blockadresse sucht, die Zieldaten. Die Blöcke 406 und 408 können vom Prozessor 36 gemäß den Anweisungen ausgeführt werden, die in einem Medium 60 enthalten sind, wie beispielsweise dem Befehl 68. In Block 406 wird eine Hash-Funktion auf die empfangene logische Blockadresse angewendet. In dem dargestellten Beispiel wird die Hash-Funktion auf die logische Blockadresse angewendet, die ein Volumen plus Offset umfasst, um einen Hash-Wert zu erzeugen.
In Block 408 Anweisungen auf dem nicht-vorübergehenden computerlesbaren Medium-Direktprozessor 36, mindestens einen Schlüssel aus dem Hash-Wert abzuleiten, wobei eine Suche in einer Hash-Tabelle unter Verwendung des mindestens einen Schlüssels durchgeführt wird, um einen Eintrag zu identifizieren, der eine Adresse enthält für einen Kandidaten für einen physischen Standort im Cache-Gerät mit niedriger Latenz für die Zieldaten. Der physische Speicherort des Kandidaten ist ein physischer Speicherort im Cache (das Cache-Gerät mit geringer Latenz, wie z. B. das in
In einer Implementierung verwendet der Prozessor 36 gemäß den in dem Medium enthaltenen Anweisungen einen ersten Teil des resultierenden Hash als ersten Schlüssel für die Hash-Tabelle, um eine bestimmte Seite aus einer Vielzahl von Seiten für den Eintrag zu identifizieren. Gemäß den Anweisungen, die in dem Medium enthalten sind, verwendet der Prozessor 36 den vollständigen resultierenden Hash als zweiten Schlüssel für die Hash-Tabelle, um zu identifizieren, wo sich auf der bestimmten Seite der Eintrag befindet. In anderen Implementierungen kann ein einzelner Schlüssel, der aus dem resultierenden Hash abgeleitet ist, oder mehr als zwei Schlüssel, die aus dem resultierenden Hash abgeleitet sind, verwendet werden, um den Eintrag in der Hash-Tabelle zu lokalisieren, der die physische Kandidatenadresse oder die Cache-Adresse für die Zieldaten enthält.In one implementation, according to instructions included in the medium,
Wie nachstehend in Bezug auf 7 beschrieben wird, wird in einigen Implementierungen eine begrenzte Anzahl von Einträgen für eine begrenzte Anzahl von entsprechenden potentiellen Blocklogikadressen beibehalten. In solchen Implementierungen werden Einträge, die logische Blockadressen (oder Schlüssel, die aus Hashes des logischen Blockadressors abgeleitet sind) mit physischen Kandidatenpositionen verknüpfen, nur für die aktivsten logischen Blockadressen oder logischen Blockadressen verwaltet. In dem Entscheidungsblock 410 weisen die Anweisungen den Prozessor 36 an, zu bestimmen, ob ein Eintrag vorhanden ist, der der logischen Blockadresse oder dem logischen Schlüssel entspricht. Mit anderen Worten wird bestimmt, ob ein Eintrag in der direkten Cache-Adressübersetzungsdatenstruktur vorhanden ist, die dem vom Hash oder Hash-Wert abgeleiteten Schlüssel zugeordnet ist. In dem oben beschriebenen Beispiel, in dem die Einträge auf verschiedenen Seiten gespeichert sind, kann eine Schlussfolgerung gezogen werden, dass ein Eintrag für die logische Blockadresse oder den logischen Schlüssel nicht vorhanden ist, wenn die Schlüssel aus dem Hash abgeleitet werden, was sich aus der Anwendung des Hash ergibt Funktion zur logischen Blockadresse, entsprechen keinen Seiten in der direkten Cache-Datenlokalisierungsdatenstruktur.As described below with respect to FIG. 7, in some implementations, a limited number of entries are maintained for a limited number of corresponding potential block logical addresses. In such implementations, entries linking logical block addresses (or keys derived from hashes of the logical block addressor) to candidate physical locations are maintained only for the most active logical block addresses or logical block addresses. In
Unter Umständen, in denen die direkte Cache-Adressübersetzungsdatenstruktur einen Eintrag enthält, der dem aus dem Hash abgeleiteten Schlüssel entspricht, weisen die Anweisungen den Prozessor 36 an, dann die Gültigkeit des Eintrags zu überprüfen, um zu überprüfen, ob die Adresse für den physischen Standort des Kandidaten für das Ziel bestimmt ist Die im Eintrag gefundenen Daten enthalten tatsächlich die Zieldaten. Zusätzlich zu der Adresse für den physischen Standort des Kandidaten für die Zieldaten enthält der in Block 408 gefundene Eintrag eine zweite Datenkennung (DI-2). Die zweite Datenkennung identifiziert die Daten, die der logischen Blockadresse entsprechen, die Zieldaten. In dem dargestellten Beispiel kann der Eintrag, der die Adresse für den physischen Standort des Kandidaten enthält, auch andere Informationen enthalten, wie beispielsweise die Länge der Daten, die am physischen Standort des Kandidaten gespeichert sind. Jeder Eintrag, der einer anderen logischen Blockadresse zugeordnet ist, kann eine entsprechende erste Datenkennung haben.In circumstances where the direct cache address translation data structure contains an entry corresponding to the key derived from the hash, the instructions instruct
Wenn Daten in den Cache geschrieben werden, wird den Daten eine erste Datenkennung D1-1 zugewiesen. Die zweite Datenkennung, die manchmal als Blockeinheit (BU) bezeichnet wird, wird den Daten selbst zugewiesen, unabhängig von dem physischen Ort, an dem die Daten gegenwärtig gespeichert sind. Die erste Datenkennung D1-1 und die zweite Datenkennung D1-2 erleichtern die Bestimmung, ob der physische Standort des Kandidaten, dessen Adresse im Eintrag gefunden wird, tatsächlich die Zieldaten enthält.When data is written to the cache, the data is assigned a first data identifier D1-1. The second data identifier, sometimes called a block unit (BU), is assigned to the data itself, regardless of the physical location where the data is currently stored. The first data identifier D1-1 and the second data identifier D1-2 facilitate the determination of whether the physical location of the candidate whose address is found in the entry actually contains the target data.
Wie durch die Blöcke 412 und 414 angezeigt, weisen die Anweisungen den Prozessor 36 an, die erste Datenkennung zu lesen, die an dem physischen Kandidatenort gespeichert ist, entsprechend den tatsächlichen Daten, die an dem physischen Kandidatenort gespeichert sind, und die erste Datenkennung mit der zweiten Datenkennung zu vergleichen (DI-2) im Eintrag. Wie durch Block 416 angegeben, kommt der Prozess 36 zu dem Schluss, dass die an dem identifizierten physischen Kandidatenort gespeicherten Daten schließen, wenn die erste vom physischen Standort des Kandidaten gelesene Datenkennung gleich der zweiten im Eintrag gespeicherten Datenkennung ist (Teil der Datenstruktur des direkten Cache-Standorts) Durch die Adresse in dem Eintrag, die der logischen Blockadresse entspricht, werden die gleichen Daten von der logischen Blockadresse erfasst. Infolgedessen weisen die Anweisungen den Prozessor 36 an, auf die Zieldaten am physischen Standort des Kandidaten zuzugreifen. Wie oben beschrieben, kann ein solcher Zugriff das Ändern der vorhandenen Daten am physischen Standort des Kandidaten oder das Lesen der Daten am physischen Standort des Kandidaten beinhalten, wenn ein solches Lesen die Daten nicht ändert.As indicated by
Wie durch Block 418 angegeben, kommt der Prozessor 36 als Antwort darauf, dass die erste vom physischen Standort des Kandidaten gelesene Datenkennung nicht mit der zweiten Datenkennung übereinstimmt, die in dem Eintrag gespeichert ist, der die Adresse des physischen Standortes des Kandidaten enthält, zu dem Schluss, dass die Zieldaten-Nr länger am physischen Standort des Kandidaten wohnt; Die Daten am physischen Standort des Kandidaten sind nicht die Zieldaten, die der logischen Blockadresse entsprechen. Infolgedessen weisen die Anweisungen den Prozessor 36 an, die physikalische Kandidatenadresse in dem Eintrag von der logischen Blockadresse (logische Blockadresse) für die Zieldaten zu trennen. In dem dargestellten Beispiel beinhaltet eine solche Trennung das vollständige Entfernen des Eintrags, der der logischen Blockadresse oder dem logischen Schlüssel entspricht.As indicated by
Wie durch die Blöcke 420 und 422 angegeben, als Reaktion auf das Fehlen eines Eintrags in der direkten Cache-Datenlokalisierungsstruktur (im Beispiel die Hash-Tabelle), der der logischen Blockadresse oder dem Schlüssel entspricht, oder als Antwort auf den vorhandenen Eintrag, der jedoch eine enthält Adresse 400 für einen physischen Standort eines Kandidaten, der die Zieldaten nicht enthält (D1-1 ist nicht gleich D1-2). Das Verfahren 400 verwendet automatisch den mehrstufigen Übersetzungsindex, um zu versuchen, den physischen Standort im Cache für die Zieldaten zu lokalisieren . Die Blöcke 420 und 422 veranschaulichen ein Beispiel für die Übersetzung der logischen Blockadresse in einen erwarteten physischen Ort oder eine Cache-Adresse für die Zieldaten unter Verwendung eines mehrstufigen Übersetzungsindex. Wie durch Block 420 angegeben, weisen die Anweisungen den Prozessor 36 an, die logische Blockadresse in eine logische Cache-Adresse zu übersetzen. Wie durch Block 422 angegeben, weisen die Anweisungen nach dem Abrufen oder Identifizieren der logischen Cache-Adresse den Prozessor 36 an, die logische Cache-Adresse in einen erwarteten physischen Ort (physischen Cache-Ort oder Adresse) für die Zieldaten zu übersetzen.As indicated by
Der „erwartete“ physische Standort ist eine Adresse, die vom mehrstufigen Übersetzungsindex für den physischen Standort bereitgestellt wird, von dem erwartet wird, dass er die Zieldaten enthält. Obwohl nicht notwendigerweise garantiert werden kann, dass sich die Zieldaten am erwarteten physischen Ort oder an der Adresse des erwarteten physischen Ortes befinden, der durch die mehrstufige Übersetzung der Blöcke 420 und 422 bereitgestellt wird, kann der erwartete physische Ort maßgeblicher sein als der bereitgestellte physische Ort des Kandidaten durch die direkte Cache-Standortdatenstruktur und Ausgabe in den Blöcken 406 und 408. Wie oben beschrieben, ist der erwartete physische Standort maßgeblicher als der mögliche physische Standort des Kandidaten, da der erwartete physische Standort derzeit wahrscheinlich die Zieldaten enthält, da der zur Ausführung der Blöcke 420 und 422 verwendete mehrstufige Übersetzungsindex im Anschluss häufiger aktualisiert wird Verschieben von Daten innerhalb des Cache, beispielsweise als Ergebnis der oben beschriebenen Speicherbereinigungsprozesse. Im Gegensatz dazu kann in einer Implementierung die direkte Cache-Standortdatenstruktur nur als Reaktion auf einen Kandidaten für einen physischen Standortfehler (pro Block 414) oder bei Initiierung des Systems aktualisiert werden, wenn Einträge möglicherweise noch nicht vorhanden sind (pro Block 410).The "expected" physical location is an address provided by the multi-level translation index for the physical location expected to contain the target data. Although the target data cannot necessarily be guaranteed to be located at the expected physical location or at the address of the expected physical location provided by the multi-level translation of
Wie durch Block 424 angegeben, kann dann der erwartete physikalische Ort für die Zieldaten, die der logischen Blockadresse entsprechen, verwendet werden, um auf die Zieldaten zuzugreifen. Dies kann direkt erfolgen oder das Zurückkehren zu Block 408 beinhalten, wobei die direkte Cache-Standortdatenstruktur wie nachstehend beschrieben aktualisiert wurde.As indicated by
Wie in Block 426 angegeben, wird nach der Identifizierung des erwarteten physischen Standorts für die Zieldaten in Block 422 der abgerufene erwartete physische Standort verwendet, um die Übersetzungsstruktur der direkten Cache-Adresse zu aktualisieren. Bei einer Implementierung wird die physikalische Adresse für den erwarteten physischen Standort der Zieldaten aus dem Multi - Level - Übersetzung Index abgerufen zwischengespeichert im direkten Übersetzung Datenstruktur Cache - Adresse. In dem dargestellten Beispiel, in dem ungültige Einträge für eine logische Blockadresse oder einen logischen Schlüssel (Einträge, bei denen der identifizierte D1-1 nicht gleich D1-2 ist) vollständig aus der direkten Cache-Datenlokalisierungsdatenstruktur entfernt werden (Hash-Tabelle im Beispiel), wird die Die Datenstruktur für die direkte Cache-Adressübersetzung wird aktualisiert, indem der Datenstruktur für die direkte Cache-Adressübersetzung ein brandneuer vollständiger Eintrag hinzugefügt wird, wobei der neue Eintrag die logische Blockadresse oder den logischen Schlüssel mit der Adresse des erwarteten physischen Speicherorts der Zieldaten und deren erstem verknüpft Datenkennung D1-1.As indicated in
In anderen Implementierungen kann die Aktualisierung der direkten Cache-Adressübersetzungsstruktur auf andere Weise erfolgen. Beispielsweise können nicht aufgefüllte Einträge für Schlüssel beibehalten werden, wobei der Eintrag mit der Adresse des erwarteten physischen Speicherorts für die Zieldaten gefüllt ist, die aus dem mehrstufigen Übersetzungsindex abgerufen wurden. Anstatt den gesamten ausgefüllten Eintrag für den Schlüssel in Block 418 vollständig zu entfernen, kann der ungültige Teil des Eintrags, die Adresse für den physischen Speicherort des Kandidaten im Cache, von dem fälschlicherweise angenommen wird, dass er die Zieldaten enthält, überschrieben, entfernt und ersetzt oder auf andere Weise geändert werden alternativ die Adresse für den erwarteten physischen Ort einzuschließen, wie sie in den Blöcken 420 und 422 aus dem mehrstufigen Übersetzungsindex abgerufen wurde.In other implementations, updating the direct cache address translation structure may be accomplished in other ways. For example, unpopulated entries for keys may be retained, with the entry populated with the address of the expected physical location for the target data retrieved from the multi-level translation index. Rather than completely removing the entire populated entry for the key in
In dem dargestellten Beispiel spart das Verfahren 400 Speicherplatz, indem nicht notwendigerweise ein Eintrag für jede logische Blockadresse in der direkten Cache-Adressübersetzungsdatenstruktur gespeichert wird. In dem dargestellten Beispiel umfasst die direkte Cache-Adressübersetzungsdatenstruktur N-Wege-Eintragssätze, was bedeutet, dass für jede logische Blockadresse oder jeden logischen Blockschlüssel n mögliche Eintragsschlitzbereiche des verfügbaren Speicherplatzes vorhanden sind. Mit anderen Worten, einem entsprechenden Satz können mehr als N logische Blockadressen oder -schlüssel vorab zugewiesen werden, für die dem Satz zugewiesenen logischen Blockadressen oder -schlüssel sind jedoch nur N Einträge verfügbar. Wenn der Satz voll ist, sind alle vier Steckplätze mit einem Eintrag für einen entsprechenden Schlüssel belegt. Das Hinzufügen eines neuen Eintrags für einen neuen Schlüssel kann dazu führen, dass ein aktueller Eintrag für einen anderen Schlüssel aus dem Satz entfernt wird. Die Verwendung der N-Wege-Eintragssätze in der direkten Cache-Adressübersetzungsdatenstruktur bietet einen hohen Lastfaktor bei niedrigen und deterministischen Prüfkosten. In einer Implementierung verwendet die direkte Cache-Adressübersetzungsdatenstruktur 4-Wege-Eintragssätze. In anderen Implementierungen kann die direkte Cache-Adressübersetzungsdatenstruktur N-Wege-Sätze anderer Größe verwenden.In the illustrated example, the method 400 saves storage space by not necessarily storing an entry for each logical block address in the direct cache address translation data structure. In the illustrated example, the direct cache address translation data structure comprises N-way entry sets, meaning that for each logical block address or logical block key, there are n possible entry slot ranges of available storage space. In other words, more than N logical block addresses or keys may be pre-allocated to a corresponding set, but only N entries are available for the logical block addresses or keys assigned to the set. When the set is full, all four slots are occupied by an entry for a corresponding key. Adding a new entry for a new key may cause a current entry for a different key to be removed from the set. Using the N-way entry sets in the direct cache address translation data structure provides a high load factor with a low and deterministic check cost. In one implementation, the direct cache address translation data structure uses 4-way entry sets. In other implementations, the direct cache address translation data structure may use N-way sets of other sizes.
In dem dargestellten Beispiel verwaltet das Verfahren 400 die Einträge in jedem Satz in einer Reihenfolge der zuletzt verwendeten (LRU), indem neue und aufgerufene Einträge nach oben (zuletzt verwendetes Ende (MRU)) befördert und der untere Eintrag (LRU) entfernt werden, wenn a Ein neuer Eintrag wird in einen vollständigen Satz eingefügt. Infolgedessen verwendet das Verfahren 400 eine Position in der Menge als Indikator für eine „Temperatur“ des Eintrags, dh wie aktiv der Eintrag ist. Infolgedessen kann die Größe der Datenstruktur für die direkte Cache-Adressübersetzung mit geringem Speicherplatzaufwand reguliert werden. Wie in Block 426 angegeben, wird ein neuer Eintrag, der die Adresse für den erwarteten physischen Standort enthält, am oberen Ende (MRU-Ende) seines vorgegebenen Satzes platziert. In ähnlicher Weise befindet sich, wie durch Block 428 angegeben, der Eintrag, der die Adresse für den physischen Standort des Kandidaten enthält, oben, wenn ein vorhandener Eintrag validiert wurde und auf die Zieldaten an dem physischen Kandidatenort zugegriffen wurde, der durch die Adresse in dem Eintrag identifiziert wurde (MRU-Ende) des vorgesehenen Satzes. Unter Umständen, in denen sich der Eintrag bereits am oberen Rand des festgelegten Satzes befindet, wird keine Aktion ausgeführt. In Fällen, in denen sich der Eintrag nicht oben befindet, wird der Eintrag an den oberen Rand des festgelegten Satzes von Einträgen verschoben oder verschoben. In anderen Implementierungen können andere Schemata verwendet werden, um vorhandene Einträge in den N-Wege-Sätzen der direkten Cache-Adressübersetzungsdatenstruktur zu entfernen, wenn ein neuer Eintrag zu einem vollständigen Satz hinzugefügt werden soll.In the example illustrated, method 400 manages the entries in each set in a least recently used (LRU) order by promoting new and accessed entries to the top (most recently used (MRU) end) and removing the bottom (LRU) entry when a new entry is inserted into a complete set. As a result, method 400 uses a position in the set as an indicator of a "temperature" of the entry, i.e., how active the entry is. As a result, the size of the direct cache address translation data structure can be regulated with little storage overhead. As indicated in
In solchen Implementierungen kann die Größe der einzelnen Seiten 574 (nicht größer als 10 MB und in einigen Implementierungen 1 MB) von einem Speicherzuweiser effizient verwaltet werden. Wenn ein einheitlicher Allokator beispielsweise Speicher zurückfordern soll, werden Seiten möglicherweise verworfen, während nur ein kleiner Teil der Hash-Tabelle verloren geht. In solchen Implementierungen treten die meisten Zugriffe bei einer Sperre nicht in Konflikt, da eine Anzahl von Seiten 574 groß ist. Mit anderen Worten kann jede Seite 574 mit einer Sperre geschützt werden, wie beispielsweise einer Drehsperre 578, wobei jedoch die Wahrscheinlichkeit eines Sperrkonflikts für gleichzeitige Threads vernachlässigbar sein kann. Gleichzeitig ist die Anzahl der Einträge 576 auf einer Seite hoch, so dass der Speicherplatzaufwand für eine solche Sperre minimal ist. Eine solche Dimensionierung kann die Einbeziehung aller Einträge für eine große Eingabe / Ausgabe (IO) unter nur einer Sperre erreichen. Beispielsweise kann eine einzelne Sperre jede der logischen Blockadressen vor physischen Adresseinträgen der direkten Cache-Datenlokalisierungsstruktur 540 schützen, wie beispielsweise jeder der 32.000 Einträge (entsprechend 32.000 möglichen logischen Blockadressen oder den „Schlüsseln“ (resultierend aus) die Anwendung einer Hash-Funktion auf die logischen Blockadressen) in dem einen Beispiel. Infolgedessen bieten solche Implementierungen eine granulare Seitensperrung, die effizient ist und eine hohe Parallelität ermöglicht.In such implementations, the size of each page 574 (no larger than 10 MB, and in some
In einer Implementierung wird zum Auswählen einer geeigneten Seite 574 für einen gegebenen Schlüssel eine Hash-Funktion auf die logische Blockadresse angewendet und bestimmte Bits (z. B. die niedrigen vier Bits) des resultierenden Hash werden maskiert, und die verbleibenden Bits des Mit Hash wird die entsprechende Seite 574 für den angegebenen Schlüssel ausgewählt. Wenn Sie diese Technik verwenden, um Seitenzuordnungen für nahegelegene logische Blockadressen (z. B. logische Blockadressen (LBAs)) auszuwählen, landen diese wahrscheinlich auf derselben Seite. Innerhalb jeder Seite 574 wird ein Array von K / CPL-Paaren durch die jeweiligen Schlüssel indiziert. In einem Beispiel ist die Hash-Tabelle assoziativ in vier Richtungen gesetzt, was bedeutet, dass für jeden Schlüssel vier mögliche Slots vorhanden sind. Diese Anordnung bietet einen hohen Lastfaktor bei niedrigen und deterministischen Prüfkosten. Die Leistung wird verbessert, da alle möglichen Speicherorte für ein Element im Speicher zusammenhängend sind und in zwei CPU-Cache-Zeilen passen.In one implementation, to select an
In einer Implementierung werden für jeden der Sätze 580-1, 580-2... 580-n (zusammen als Sätze 480 bezeichnet) einer Tabelle 570 K / CPL-Einträge in einem Satz gespeichert, basierend darauf, wie kürzlich jeder Eintrag war Zugriff (relativ zu den anderen Einträgen im Set). Als solches kann die relative Position eines K / CPL-Eintrags innerhalb eines Satzes 580 als Proxy für seine „Temperatur“ dienen (dh wie kürzlich auf den Eintrag zugegriffen wurde). In einer solchen Implementierung werden die K / CPL-Einträge in den Sätzen 580 in einer LRU-Reihenfolge verwaltet, indem neue und zugegriffene Einträge an das obere oder MRU-Ende des Satzes befördert werden und der untere oder LRU-Eintrag in dem Satz entfernt wird, wenn ein neuer Eintrag eingefügt wird in einen vollständigen Satz. Infolgedessen wird die Position im Set als Indikator für die Temperatur des Eintrags verwendet. Somit kann die LRU-Cache-Richtlinie mit geringem oder keinem Speicherplatzaufwand angenähert werden.In one implementation, for each of the sets 580-1, 580-2...580-n (collectively referred to as sets 480) of a table 570, K/CPL entries are stored in a set based on how recently each entry was accessed (relative to the other entries in the set). As such, the relative position of a K/CPL entry within a
In einer Implementierung beträgt eine typische Blockgröße 4 kB. Der AK / CPL-Eintrag kann ungefähr 32 Bytes betragen. Infolgedessen beträgt das Verhältnis Al / Datenstruktur 540 zu Datengröße 32/4096, 0,7%. Beispielsweise kann ein 1 ,5-TB-Cache-Gerät nur 12 GB Hauptspeicher verwenden. Ohne Verwendung der Datenstruktur 540 kann ein Entwurf alternativ dieselben 12 GB verwenden, um einen Bruchteil der Daten im Cache zu speichern. Die Datenstruktur 540 erleichtert den schnellen Zugriff auf das gesamte Cache-Gerät.In one implementation, a typical block size is 4 kB. The AK/CPL entry may be approximately 32 bytes. As a result, the Al/
Obwohl die Verwendung der direkten Adressübersetzungsdatenstruktur 540, wie beispielsweise einer Hash-Tabelle 570, zu Kollisionen und Räumungen führen kann, die bei einem hohen Lastfaktor nicht behandelt werden können, behebt die zusätzliche Einbeziehung des mehrstufigen Übersetzungsindex solche Bedenken. Da die direkte Adressübersetzungsdatenstruktur selbst ein Cache ist, sind Fehlschläge akzeptabel, da sie durch einen Datenübersetzungspfad durch den mehrstufigen Adressübersetzungsindex behoben werden, wenn auch mit einer etwas höheren Latenz.Although the use of the direct address
Obwohl die vorliegende Offenbarung unter Bezugnahme auf beispielhafte Implementierungen beschrieben wurde, werden Fachleute erkennen, dass Änderungen in Form und Detail vorgenommen werden können, ohne vom Geist und Umfang des beanspruchten Gegenstands abzuweichen. Obwohl verschiedene Beispielimplementierungen so beschrieben wurden, dass sie Merkmale enthalten, die einen oder mehrere Vorteile bieten, wird beispielsweise in Betracht gezogen, dass die beschriebenen Merkmale in den beschriebenen Beispielimplementierungen oder in anderen alternativen Implementierungen miteinander ausgetauscht oder alternativ miteinander kombiniert werden können . Da die Technologie der vorliegenden Offenbarung relativ komplex ist, sind nicht alle Änderungen in der Technologie vorhersehbar. Die vorliegende Offenbarung, die unter Bezugnahme auf die beispielhaften Implementierungen beschrieben und in den folgenden Ansprüchen dargelegt ist, soll offensichtlich so weit wie möglich sein. Beispielsweise umfassen die Ansprüche, in denen ein einzelnes bestimmtes Element aufgeführt ist,, sofern nicht ausdrücklich anders angegeben, auch mehrere solcher bestimmten Elemente. Die Begriffe „erste“, „zweite“, „dritte“ usw. in den Ansprüchen unterscheiden lediglich verschiedene Elemente und sind, sofern nicht anders angegeben, nicht spezifisch mit einer bestimmten Reihenfolge oder bestimmten Nummerierung von Elementen in der Offenbarung verbunden.For example, although the present disclosure has been described with reference to example implementations, those skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the claimed subject matter. Although various example implementations have been described as including features that provide one or more advantages, it is contemplated that the described features may be interchanged with one another, or alternatively combined with one another, in the described example implementations or in other alternative implementations. Because the technology of the present disclosure is relatively complex, not all changes in the technology are foreseeable. The present disclosure, described with reference to the example implementations and set forth in the following claims, is intended to be as broad as possible. For example, claims reciting a single specific element also include multiple such specific elements unless expressly stated otherwise. The terms "first,""second,""third," etc. in the claims merely distinguish various elements and are not specifically associated with any particular order or numbering of elements in the disclosure unless stated otherwise.
Claims (20)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/396,555 | 2019-04-26 | ||
| US16/396,555 US11226904B2 (en) | 2019-04-26 | 2019-04-26 | Cache data location system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE102020104701A1 DE102020104701A1 (en) | 2020-10-29 |
| DE102020104701B4 true DE102020104701B4 (en) | 2024-05-29 |
Family
ID=72839942
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE102020104701.0A Active DE102020104701B4 (en) | 2019-04-26 | 2020-02-21 | Cache data localization system |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US11226904B2 (en) |
| CN (1) | CN111858404B (en) |
| DE (1) | DE102020104701B4 (en) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10977189B2 (en) * | 2019-09-06 | 2021-04-13 | Seagate Technology Llc | Reducing forward mapping table size using hashing |
| US11556513B2 (en) | 2020-06-30 | 2023-01-17 | Hewlett Packard Enterprise Development Lp | Generating snapshots of a key-value index |
| US11461299B2 (en) | 2020-06-30 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Key-value index with node buffers |
| US11461240B2 (en) | 2020-10-01 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Metadata cache for storing manifest portion |
| US11593328B2 (en) | 2020-10-07 | 2023-02-28 | Hewlett Packard Enterprise Development Lp | Update of deduplication fingerprint index in a cache memory |
| US11379367B2 (en) * | 2020-11-19 | 2022-07-05 | Micron Technology, Inc. | Enhancement for activation and deactivation of memory address regions |
| CN115639949A (en) * | 2021-07-20 | 2023-01-24 | 伊姆西Ip控股有限责任公司 | Method, device and computer program product for managing a storage system |
| CN113849455B (en) * | 2021-09-28 | 2023-09-29 | 致真存储(北京)科技有限公司 | MCU based on hybrid memory and data caching method |
| CN117235122B (en) * | 2022-06-06 | 2025-10-17 | 腾讯科技(深圳)有限公司 | Data processing method, apparatus, device, readable storage medium, and program product |
| CN117591006A (en) * | 2022-08-18 | 2024-02-23 | 三星电子株式会社 | Systems and methods for performing caching in hash stores |
| WO2024250263A1 (en) * | 2023-06-09 | 2024-12-12 | Yangtze Memory Technologies Co., Ltd. | Memory controller and memory system performing data search |
| US20250106161A1 (en) * | 2023-09-22 | 2025-03-27 | Hewlett Packard Enterprise Development Lp | Decoupling congestion management state and connection management state in high performance computing |
| CN120448287A (en) * | 2024-02-07 | 2025-08-08 | 华为技术有限公司 | A data processing method and related device |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE69518676T2 (en) | 1994-02-14 | 2001-01-04 | Hewlett-Packard Co., Palo Alto | Cache memory arrangement for a memory |
| US7685399B2 (en) | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
| US20110023027A1 (en) | 2009-07-24 | 2011-01-27 | Kegel Andrew G | I/o memory management unit including multilevel address translation for i/o and computation offload |
Family Cites Families (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
| GB2471715A (en) | 2009-07-10 | 2011-01-12 | Hewlett Packard Development Co | Determining the data chunks to be used as seed data to restore a database, from manifests of chunks stored in a de-duplicated data chunk store. |
| US8453257B2 (en) | 2009-08-14 | 2013-05-28 | International Business Machines Corporation | Approach for securing distributed deduplication software |
| US8572353B1 (en) * | 2009-09-21 | 2013-10-29 | Tilera Corporation | Condensed router headers with low latency output port calculation |
| WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
| US8832154B1 (en) * | 2009-12-08 | 2014-09-09 | Netapp, Inc. | Object location service for network-based content repository |
| US8285918B2 (en) | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
| US20110283048A1 (en) * | 2010-05-11 | 2011-11-17 | Seagate Technology Llc | Structured mapping system for a memory device |
| WO2013027231A1 (en) | 2011-08-19 | 2013-02-28 | Hitachi, Ltd. | Backup deduplication storage apparatus and additional data writing method |
| US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
| AU2013277351A1 (en) | 2012-06-18 | 2015-01-22 | Actifio, Inc. | Enhanced data management virtualization system |
| US9268682B2 (en) * | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
| US9514054B2 (en) | 2014-07-08 | 2016-12-06 | Netapp, Inc. | Method to persistent invalidation to ensure cache durability |
| US9852076B1 (en) | 2014-12-18 | 2017-12-26 | Violin Systems Llc | Caching of metadata for deduplicated LUNs |
| US9916241B2 (en) | 2015-08-14 | 2018-03-13 | Netapp, Inc. | Storage controller caching using symmetric storage class memory devices |
| CN105404596B (en) | 2015-10-30 | 2018-07-20 | 华为技术有限公司 | A kind of data transmission method, apparatus and system |
| US10402394B2 (en) | 2016-11-03 | 2019-09-03 | Veritas Technologies Llc | Systems and methods for flushing data in a virtual computing environment |
| US9990281B1 (en) * | 2016-11-29 | 2018-06-05 | Sap Se | Multi-level memory mapping |
| CN107193758A (en) | 2017-05-19 | 2017-09-22 | 记忆科技(深圳)有限公司 | The mapping table management method and solid state hard disc of a kind of solid state hard disc |
| US10372687B1 (en) | 2017-08-03 | 2019-08-06 | EMC IP Holding Company LLC | Speeding de-duplication using a temporal digest cache |
| US10402094B2 (en) * | 2017-10-17 | 2019-09-03 | Seagate Technology Llc | Mapping system for data storage devices |
| US11093454B2 (en) | 2017-10-31 | 2021-08-17 | EMC IP Holding Company LLC | Speeding deduplication using a most wanted digest cache |
| US10319445B1 (en) * | 2017-11-30 | 2019-06-11 | Western Digital Technologies, Inc. | Programming unprogrammed upper page during lower page programming of multi-level storage cells |
| JP6995723B2 (en) * | 2018-09-19 | 2022-01-17 | キオクシア株式会社 | Memory system, storage system, and control method |
| US10776276B2 (en) | 2018-11-30 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Bypass storage class memory read cache based on a queue depth threshold |
| US10732881B1 (en) | 2019-01-30 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Region cloning for deduplication |
| US11030107B2 (en) | 2019-04-19 | 2021-06-08 | Hewlett Packard Enterprise Development Lp | Storage class memory queue depth threshold adjustment |
| US12032534B2 (en) | 2019-08-02 | 2024-07-09 | EMC IP Holding Company LLC | Inline deduplication using stream detection |
-
2019
- 2019-04-26 US US16/396,555 patent/US11226904B2/en active Active
-
2020
- 2020-02-21 DE DE102020104701.0A patent/DE102020104701B4/en active Active
- 2020-04-16 CN CN202010299742.4A patent/CN111858404B/en active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE69518676T2 (en) | 1994-02-14 | 2001-01-04 | Hewlett-Packard Co., Palo Alto | Cache memory arrangement for a memory |
| US7685399B2 (en) | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
| US20110023027A1 (en) | 2009-07-24 | 2011-01-27 | Kegel Andrew G | I/o memory management unit including multilevel address translation for i/o and computation offload |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111858404B (en) | 2022-12-27 |
| US20200341909A1 (en) | 2020-10-29 |
| DE102020104701A1 (en) | 2020-10-29 |
| CN111858404A (en) | 2020-10-30 |
| US11226904B2 (en) | 2022-01-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE102020104701B4 (en) | Cache data localization system | |
| DE112011102487B4 (en) | Mapping logical to physical addresses in storage systems having semiconductor storage devices | |
| DE102017128952B4 (en) | A data storage device configured to perform a non-blocking control update operation | |
| DE112017002941B4 (en) | Workload-optimized data deduplication using phantom fingerprinting | |
| DE102015007709B4 (en) | Invalidation data area for a cache | |
| DE69514165T2 (en) | Multi-level cache memory arrangement | |
| DE112017001027B4 (en) | page error fix | |
| US10990533B2 (en) | Data caching using local and remote memory | |
| DE60035151T2 (en) | Hardware arrangement for managing cache structures in a data storage system | |
| DE102019132371A1 (en) | Map management logically to physically using non-volatile memory | |
| DE102014014076A1 (en) | Reduced address translation with multiple page sizes | |
| DE102018123669A1 (en) | Host computer arrangement, remote server arrangement, storage system and method thereof | |
| DE112013002938B4 (en) | Translating the base table of memories | |
| DE102019105879A1 (en) | Management of coherent links and multi-level memory | |
| DE102017113439A1 (en) | Mapping tables for storage devices | |
| DE112021000665T5 (en) | Primary storage with deduplication | |
| DE102020122182A1 (en) | VIRTUAL MACHINE REPLICATION AND MIGRATION | |
| DE102016001591A1 (en) | System and method for copy-on-write on an SSD | |
| DE112018003032B4 (en) | CACHE STRUCTURE USING A LOGICAL DIRECTORY | |
| US10049041B2 (en) | Memory centric database architecture | |
| DE112021004990T5 (en) | CACHING TECHNIQUES | |
| DE112020000183T5 (en) | STORAGE CLASS STORAGE ACCESS | |
| US20170039142A1 (en) | Persistent Memory Manager | |
| DE112018002028T5 (en) | IMPLEMENTATION SUPPORT FOR A VIRTUAL CACHE | |
| DE112018002032T5 (en) | SHARING VIRTUAL AND REAL TRANSLATIONS IN A VIRTUAL CACHE |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| R082 | Change of representative |
Representative=s name: PROCK, THOMAS, DR., GB |
|
| R012 | Request for examination validly filed | ||
| R081 | Change of applicant/patentee |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US |
|
| R016 | Response to examination communication | ||
| R018 | Grant decision by examination section/examining division | ||
| R020 | Patent grant now final |