[go: up one dir, main page]

DE102020104701B4 - Cache data localization system - Google Patents

Cache data localization system Download PDF

Info

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
Application number
DE102020104701.0A
Other languages
German (de)
Other versions
DE102020104701A1 (en
Inventor
Matti A. Vanninen
Sudhanshu Goswami
Christopher J. Corsi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102020104701A1 publication Critical patent/DE102020104701A1/en
Application granted granted Critical
Publication of DE102020104701B4 publication Critical patent/DE102020104701B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual 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.

US 7 685 399 B2 beschreibt ein Verfahren zum Bewegen von Daten zwischen den Speicheradressen in einem Computersystem, in dem Daten, auf die durch Speicheradressen verwiesen wird, in einem physikalischen Speicher gespeichert werden. Das Verfahren umfasst das Bereitstellen eines Übersetzungsmechanismus zum Abbilden jeweiliger Seiten zusammenhängender Speicheradressen auf entsprechende Stellen im physikalischen Speicher gemäß einer spezifizierten Zuordnung, wodurch eine erste Seite von Speicheradressen auf eine erste Stelle im physikalischen Speicher abgebildet wird und eine zweite Seite von Speicheradressen auf eine zweite Stelle im physikalischen Speicher abgebildet wird; und Ändern der spezifizierten Abbildung des Übersetzungsmechanismus in eine neue Abbildung, in der die zweite Seite von Speicheradressen auf die erste Stelle im physikalischen Speicher abgebildet wird, wodurch die an der ersten Stelle gespeicherten Daten effektiv von der ersten Seite von Speicheradressen zur zweiten Seite von Speicheradressen verschoben wurden, ohne die Daten zwischen Orten im physikalischen Speicher zu verschieben. US 7 685 399 B2 describes a method for moving data between memory addresses in a computer system in which data referenced by memory addresses is stored in physical memory. The method includes providing a translation mechanism for mapping respective pages of contiguous memory addresses to corresponding locations in physical memory according to a specified mapping, whereby a first page of memory addresses is mapped to a first location in physical memory and a second page of memory addresses is mapped to a second location in physical memory; and changing the specified mapping of the translation mechanism to a new mapping in which the second page of memory addresses is mapped to the first location in physical memory, whereby the data stored in the first location has effectively been moved from the first page of memory addresses to the second page of memory addresses without moving the data between locations in physical memory.

DE 695 18 676 T2 beschreibt ein Cache-System, das Daten puffert, die in einem Hauptspeicher gespeichert sind und von einem Prozessor verwendet werden. Das Cache-System enthält einen ersten Cache, einen zweiten Cache, eine erste Übertragungseinrichtung, eine zweite Übertragungseinrichtung, eine dritte Übertragungseinrichtung und eine Zugriffseinrichtung. Der erste Cache ist vollständig assoziativ. Der zweite Cache wird direkt abgebildet. Die erste Übertragungseinrichtung überträgt Datenzeilen von dem Hauptspeicher zu dem ersten Cache. Die zweite Übertragungseinrichtung überträgt Datenzeilen von dem ersten Cache zu dem zweiten Cache. Die dritte Übertragungseinrichtung überträgt Datenzeilen von dem zweiten Cache zu dem Hauptspeicher. Zugriffe auf Datenzeilen aus dem ersten Cache und dem zweiten Cache werden parallel durchgeführt. DE 695 18 676 T2 describes a cache system that buffers data stored in a main memory and used by a processor. The cache system includes a first cache, a second cache, a first transfer device, a second transfer device, a third transfer device, and an access device. The first cache is fully associative. The second cache is directly mapped. The first transfer device transfers data lines from the main memory to the first cache. The second transfer device transfers data lines from the first cache to the second cache. The third transfer device transfers data lines from the second cache to the main memory. Accesses to data lines from the first cache and the second cache are performed in parallel.

US 2011 / 0 023 027 A1 beschreibt eine Eingabe-/Ausgabe-Speicherverwaltungseinheit (IOMMU), die zum Steuern von Anforderungen von einem E/A-Gerät an einen Systemspeicher konfiguriert ist, umfassend einer Steuerlogik, die eine zweistufige Gastübersetzung durchführen kann, um eine Adresse zu übersetzen, die einer von einem E/A-Gerät generierten Anforderung zugeordnet ist, unter der Verwendung von Übersetzungsdaten, die im Systemspeicher gespeichert sind. Die Übersetzungsdaten umfassen eine Gerätetabelle mit einer Anzahl von Einträgen. Die Steuerlogik kann den Gerätetabelleneintrag für eine gegebene Anforderung auswählen, indem sie eine Gerätekennung verwendet, die dem E/A-Gerät entspricht, das die Anforderung erzeugt. Die Übersetzungsdaten können auch einen ersten Satz von E/A-Seitentabellen enthalten, der einen Satz von Gastseitentabellen und einen Satz von verschachtelten Seitentabellen enthält. Der ausgewählte Gerätetabelleneintrag für die gegebene Anforderung kann einen Zeiger auf den Satz von Gastübersetzungstabellen enthalten, und eine letzte Gastübersetzungstabelle enthält einen Zeiger auf den Satz von verschachtelten Seitentabellen. US 2011 / 0 023 027 A1 describes an input/output memory management unit (IOMMU) configured to control requests from an I/O device to system memory, comprising control logic that can perform a two-stage guest translation to translate an address associated with a request generated by an I/O device using translation data stored in system memory. The translation data includes a device table having a number of entries. The control logic can select the device table entry for a given request using a device identifier corresponding to the I/O device generating the request. The translation data can also include a first set of I/O page tables including a set of guest page tables and a set of nested page tables. The selected device table entry for the given request can include a pointer to the set of guest translation tables, and a final guest translation table includes a pointer to the set of nested page tables.

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 claims 1 to 5, a system according to claims 6 to 17 and a non-volatile storage medium according to claims 18 to 20 are disclosed.

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 implementations 1 MB) can be efficiently managed by a memory allocator. For example, if a uniform allocator is to reclaim memory, pages may be discarded while only a small part of the hash table is lost. In addition, a separate lock (such as a spin lock) can be implemented for each page. In such implementations, gen, most accesses do not conflict with a lock because number of pages is large. In such examples, each page may be protected with a lock, such as a spin lock, but the probability of lock contention for concurrent threads may be negligible. At the same time, number of entries in a page is high, so the space overhead of such a lock is minimal. Such sizing can achieve the inclusion of all entries for a large input/output (IO) under only one lock. For example, a single lock can protect every entry of a page (e.g., 32,000 entries). As a result, such implementations can provide granular page locking that is efficient and enables high concurrency.

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.

1 ist ein Blockdiagramm, das schematisch Teile eines beispielhaften Cache- Datenlokalisierungssystems 20 darstellt. 20 System kann die Zeit reduzieren , verbraucht zu lokalisieren und Zugriff auf Daten auf einem Cache gespeichert. Das System 20 kann die Zeit reduzieren, die für den Zugriff auf im Cache gespeicherte Daten benötigt wird, indem die Zeit zum Identifizieren des physischen Speicherorts von Daten im Cache verringert wird. System 20 umfasst persistente Speichervorrichtung (en) 24 mit niedriger Latenz Cache - Einheit (en) 28, einen flüchtigen Speicher 32, und mindestens einen Prozessor 36 1 is a block diagram schematically illustrating portions of an exemplary cache data location system 20. System 20 may reduce the time consumed to locate and access data stored on a cache. System 20 may reduce the time required to access cached data by reducing the time required to identify the physical location of data in the cache. System 20 includes persistent storage device(s) 24, low latency cache unit(s) 28, volatile memory 32, and at least one processor 36

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.Persistent storage devices 24 include one or more non-volatile memory devices for storing data to be accessed, retrieved, or read from. Persistent storage devices 24 further include an area to which data may be copied or written. In the examples described herein, persistent storage devices (such as persistent storage devices 24) may be implemented by hard disk drives (HDD(s)), solid state drives (SSDs) (e.g., flash memory device(s)), or the like, or a combination thereof.

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 latency cache device 28 includes a storage device that stores copies of at least some of the data (schematically shown in dashed lines) that is also stored on persistent storage devices 24. Low latency cache device 28 has a latency or response time that is less than that of persistent storage device(s) 24. As a result, low latency cache device 28 facilitates timely access to copies of data. In one implementation, low latency cache device 28 includes low latency persistent storage device(s) or non-volatile memory device(s). In one implementation, low latency cache device 28 includes one or more storage class memory (SCM) devices. In the examples described herein, SCM may be a type of non-volatile memory (NVM). In some examples, SCM may communicate using a protocol consistent with NVM Express™ (NVMe™). In the examples described herein, an SCM device may be implemented in one of several different forms, such as a 3D XPoint chip (or 3D XPoint DIMM device, a phase change memory (PCM) device (e.g., a phase change random access memory (RAM), Magnetic RAM (MRAM) (such as Spin-Torque Transfer (STT) RAM), Resistive RAM (RRAM), Memristor, or such as, or a combination thereof. In some examples, the SCM may implement block-based access. In other examples, SCM may implement memory-based semantics for data access. In one implementation, persistent storage devices 24 include a hard disk or solid state drive with a response time for a given amount of data of about 10,000 us. In comparison, the low latency cache device 28 in the form of an SCM has a response time for the same data of about 10 us. In some examples, a low latency cache device may be a byte-addressable non-volatile storage device. In some examples, a persistent storage device may be a block-addressable non-volatile storage device.

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 volatile memory 32 is volatile in that the non-volatile data storage 32 is lost if power is not supplied to the memory 32 for an extended period of time. In one implementation, the volatile memory 32 comprises a random access memory, such as a dynamic random access memory (DRAM). The volatile memory 32 may have a response time that is less than that of the low latency cache device 28. In one implementation, the low latency cache device 28 in the form of an SCM has a response time of 10 us for the given amount of data, while the volatile memory in the form of a DRAM has a response time for the same given amount of data of approximately 0.1 us.

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.Processor 36 manages low latency access to data on cache device 28. Processor 36 may be in the form of an application specific integrated circuit or other processing unit (e.g., physical hardware) that executes instructions, code, programming, or circuit logic to manage low latency access to data of cache device 28. The instructions or circuit logic that drive processor 36 cause processor 36 40 to use a direct cache address translation data structure to store data in volatile memory 32. In one implementation, direct address translation data structure 40 directly maps logical block addresses (e.g., each a volume ID and offset) to a respective candidate physical address (e.g., segment ID and offset) for data to be targeted.

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 data structure 40 can enable much faster and more responsive locating a physical address to access user-requested data. In implementations where the data being accessed is stored on the low-latency cache device, such as an SCM storage device, use of the direct address translation table 40 reduces the time or cost associated with locating the physical address of the data, the bottleneck in the overall time to access the data. In one implementation, the direct cache address translation data structure 40 can include a hash table. For example, a hash function can be applied to the logical block address, with the resulting hash serving as the key for a search or lookups in the hash table. In other implementations, the direct address translation data structure 40 can include other data structures, such as a search tree.

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 processor 36 also cause the processor 36 to store a multi-level address translation index 44 in a volatile memory 32. The multi-level address translation index 44 may serve as an authoritative (i.e., current) backup when use of the less authoritative direct address translation data structure 40 is unsuccessful, for example, when the physical address of the data requested by the user in the cache device 28 has changed and the direct cache address translation data structure 40 has not yet been updated to reflect the change. The multi-level translation index 44 is more “authoritative” compared to the direct address translation data structure 40 because the multi-level translation index 44 may be more current or up-to-date with respect to the physical location of the target data in the cache due to more frequent updating of the multi-level translation index 44 with the expected physical locations of data in the cache 28 (as this data is moved to different locations in the cache 28) compared to the direct cache address translation data structure 40. An example of such a multi-level translation index 44 is an index that includes a first level that includes a block index that includes a tree that maps logical block addresses (e.g., each with a volume ID and offset) (the logical block address) to the respective cache logical address (e.g., a corresponding user block identifier). The index further includes a second level that includes a cache index that includes a tree that maps the logical cache addresses to the respective actual physical addresses in the cache (e.g., each a segment ID and an offset) that can be used to physically locate the data in the cache. The cache index is updated when the respective physical addresses of the data in the cache change.

2 ist ein Blockdiagramm, das Teile eines beispielhaften nichtflüchtigen computerlesbaren Mediums 60 darstellt, das Anweisungen enthält, die von einem Prozessor wie dem Prozessor 36 ausgeführt werden können, um den Zugriff auf Daten zu verwalten, die in einem Cache mit geringer Latenz gespeichert sind (z. B. von einer Cache-Vorrichtung implementiert) (s), wie z. B. Gerät (e) 28). In einer Implementierung folgt der Prozessor 36 den Anweisungen, die in dem Speicher 60 enthalten sind. 3 ist ein Flussdiagramm eines beispielhaften Verfahrens 100, das vom System 20 mit dem Prozessor 36 gemäß den Anweisungen im Speicher (oder einem anderen maschinenlesbaren Speichermedium) 60 ausgeführt werden kann. Es versteht sich, dass der Speicher 60 mit Cache-Datenlokalisierungssystemen 20 verwendet werden kann. Ebenso kann das Verfahren 100 mit einem der folgenden beschriebenen Cache-Datenlokalisierungssysteme oder einem ähnlichen Speichersystem ausgeführt werden. 2 is a block diagram illustrating portions of an example non-transitory computer-readable medium 60 containing instructions executable by a processor, such as processor 36, to manage access to data stored in a low latency cache (e.g., implemented by a caching device(s), such as device(s) 28). In one implementation, processor 36 follows instructions contained in memory 60. 3 is a flowchart of an example method 100 that may be performed by system 20 having processor 36 according to instructions in memory (or other machine-readable storage medium) 60. It is understood that memory 60 may be used with cache data location systems 20. Likewise, method 100 may be performed with any of the cache data location systems described below or a similar storage system.

Wie in 2 gezeigt, umfasst der Speicher 60 direkte Übersetzungsdatenstrukturbefehle 64, mehrstufige Übersetzungsindexbefehle 68 und Adresszugriffsbefehle 72. Anweisungen 64 umfassen Programmierung, Code oder Logik - Schaltung , dass die direkte Prozessor 36 auszuführen Block 104 des Verfahrens 100 in 3 gezeigt ist. Insbesondere weisen die Anweisungen 64 den Prozessor 36 an, eine Datenstruktur wie die Datenstruktur 40 in einem flüchtigen Speicher wie dem flüchtigen Speicher 32 zu speichern, der logische Blockadressen direkt in jeweilige physikalische Kandidatenadressen für jeweilige physikalische Kandidatenorte in einem Cache übersetzt Gerät, wie Cache-Gerät (e) 28, wie oben beschrieben. In einer Implementierung sind Anweisungen 64 ausführbar, um eine direkte Übersetzungsdatenstruktur 40 in Form einer Hash-Tabelle (wie oben beschrieben) in einem flüchtigen Speicher 32 einzurichten, zu erstellen und zu speichern.As in 2 As shown, the memory 60 includes direct translation data structure instructions 64, multi-level translation index instructions 68; and address access instructions 72. Instructions 64 include programming, code, or logic circuitry that direct processor 36 to execute block 104 of method 100 shown in FIG. 3. In particular, instructions 64 instruct processor 36 to store a data structure, such as data structure 40, in volatile memory, such as volatile memory 32, that directly translates logical block addresses into respective candidate physical addresses for respective candidate physical locations in a cache device, such as cache device(s) 28, as described above. In one implementation, instructions 64 are executable to set up, create, and store a direct translation data structure 40 in the form of a hash table (as described above) in volatile memory 32.

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 translation index instructions 68 include programming, code, or circuit logic executable to direct processor 36 to perform block 108 of method 100 shown in FIG. 3. Instructions 68 instruct direct processor 36 to create, store, and maintain a multi-level translation index, such as index 44, in volatile memory 32 for translating logical block addresses into respective actual physical addresses for respective expected physical locations on cache devices 28, as described above. As described above, in some implementations, the multi-level translation index 44 is created and stored may include a first level that includes a block index comprising a tree that maps lock logical addresses (e.g., each having an ID volume and offset) to a respective logical cache address (e.g., a corresponding user block). The index 44 further includes a second level cache index comprising a tree that maps the logical cache addresses to the respective actual physical addresses (e.g., each a segment ID and an offset) that can be used to physically locate data in the cache. The cache index is updated when the physical address of particular data in the cache changes.

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 1 gezeigt), die Adresszugriffsanweisungen 72 den direkten Prozessor 36, um zuerst zu bestimmen, ob die Daten, auf die die logische Blockadresse 50 abzielt, bei dem physischen Kandidaten liegen Adresse, die aus der direkten Cache-Adressübersetzungsdatenstruktur abgerufen wurde. Um eine solche Bestimmung vorzunehmen, weist der direkte Prozessor 36 die Anweisung 70 an, die physikalische Kandidatenadresse für die Zieldaten aus der direkten Cache-Adressübersetzungsdatenstruktur 40 abzurufen. In einer Implementierung, in der die direkte Cache-Adressübersetzungsdatenstruktur 40 eine Hash-Tabelle umfasst, kann ein Hash der logischen Blockadresse (oder Teile davon) als Schlüssel für die Hash-Tabelle (wie oben beschrieben) dienen, um eine physikalische Kandidatenadresse für zu erhalten das Datenelement im Cache 28. Beispielsweise ordnet die Hash-Tabelle in einer Implementierung einen Hash der logischen Blockadresse (die Volume-ID und den Offset) direkt der Segment-ID und dem Offset (dem physischen Standort oder der Adresse des Kandidaten) zu, wobei die beiden Baumspaziergänge des ersetzt werden Mehrebenen-Übersetzungsindex mit einer einzelnen Hash-Tabellensuche. Die Hash-Tabelle, die als Beschleunigungsindex dient, ist ein Metadaten-Bypass-Cache, der im Speichersystem 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.Address access instructions 72 include programming, code, or logic circuitry executable direct processor 36 to perform blocks 114 and 116 of the method 100 in FIG. 3. As indicated by block 112, in response to the processor 36 receiving a logical block address 50 (in 1 shown), the address access instructions 72 direct the direct processor 36 to first determine whether the data targeted by the logical block address 50 is located at the candidate physical address retrieved from the direct cache address translation data structure. To make such a determination, the direct processor 36 directs the instruction 70 to retrieve the candidate physical address for the target data from the direct cache address translation data structure 40. In an implementation where the direct cache address translation data structure 40 includes a hash table, a hash of the logical block address (or portions thereof) may serve as a key to the hash table (as described above) to obtain a candidate physical address for the data item in the cache 28. For example, in one implementation, the hash table maps a hash of the logical block address (the volume ID and offset) directly to the segment ID and offset (the candidate physical location or address), 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, is a metadata bypass cache used in the storage system to facilitate addressing of the storage system in the SCM cache layer without incurring the CPU cost of internal metadata lookups.

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 block 116 in method 100, address response access to the target data that is not located at the candidate's physical location, such as the candidate's physical location that does not contain data or contains data other than the target data corresponding to the logical block address. Instructions 72 instruct processor 36 to access the physical location or address corresponding to the logical block address retrieved from multi-level translation index 44. Specifically, processor 36 performs a first tree lookup in a block index that maps the logical block address (a volume ID and offset) to a user block (which may be the first identifier). Instructions 72 then instruct processor 36 to perform a second tree lookup in a cache index that maps the user block to a segment ID and offset (the expected physical address or position in cache 28) that can be used to physically locate the target data in cache 28.

4 ist ein Blockdiagramm, das schematisch Teile eines beispielhaften Cache- Datenortungssystems 220 darstellt. Das System 220 ist dem oben beschriebenen System 20 ähnlich, mit der Ausnahme, dass das System 220 speziell persistente Speichervorrichtungen 224 in Form von mindestens einer SSD, mindestens einer Festplatte oder einer Kombination davon, einer Cache-Vorrichtung 228 mit niedriger Latenz in der Form, umfasst des Speicherklassenspeichercaches, eines flüchtigen Speichers 232 in Form eines DRAM, einer direkten Adressübersetzungsdatenstruktur 240 in Form einer Hash-Tabelle und eines mehrstufigen Adressübersetzungsindex 244 in Form eines Index mit einem Blockindex 252 und ein Cache-Index 254. Die übrigen Komponenten des Systems 220, die den Komponenten des Systems 20 entsprechen, sind ähnlich nummeriert. In einigen Implementierungen kann die persistente Speichervorrichtung 224 ein Festplattenlaufwerk oder eine Kombination aus einem Solid-State-Laufwerk und einem Festplattenlaufwerk umfassen. Wie oben beschrieben, umfasst der Blockindex 252 einen Baum, der eine Volumen-ID abbildet und einem Benutzerblock versetzt. Der Cache-Index umfasst einen Baum, der den Benutzerblock einer Segment-ID und einem Offset zuordnet, die zum physischen Lokalisieren der Daten im Cache verwendet werden können. Der Cache-Index 254 wird aktualisiert, wenn sich die physikalische Adresse bestimmter Daten im Cache ändert. 4 is a block diagram schematically illustrating portions of an example cache data location system 220. The system 220 is similar to the system 20 described above, except that the system 220 specifically includes persistent storage devices 224 in the form of at least one SSD, at least one hard disk, or a combination thereof, a low latency cache device 228 in the form of storage class memory cache, a volatile memory 232 in the form of DRAM, a direct address translation data structure 240 in the form of a hash table, and a multi-level address translation index 244 in the form of an index having a block index 252 and a cache index 254. The remaining components of the system 220 that correspond to the components of the system 20 are similarly numbered. In some implementations, the persistent storage device 224 may comprise a hard disk drive or a combination of a solid state drive and a hard disk drive. As described above, the block index 252 includes a tree that maps a volume ID and offset to a user block. The cache index includes a tree that maps the user block to a segment ID and offset that can be used to physically locate the data in the cache. The cache index 254 is updated when the physical address of particular data in the cache changes.

5 ist ein Flussdiagramm eines beispielhaften Cache-Datenlokalisierungsverfahrens 300. Das Verfahren 300 wird im Zusammenhang mit der Ausführung durch das System 220 beschrieben. Es versteht sich, dass das Verfahren 300 durch eines der hier beschriebenen Systeme oder durch andere ähnliche Speichersysteme beschrieben werden kann. 5 is a flow diagram of an exemplary cache data location method 300. The method 300 is described in the context of execution by the system 220. It is understood that the method 300 may be described by any of the systems described herein or by other similar storage systems.

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 block 304, the cache data location system 220 receives a request from a user to access a copy of the data stored in the memory 228. The system 220 receives a logical block address or a host address. In one implementation, the logical block address includes or corresponds to a volume ID and an offset.

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 block 308, according to instructions, such as instructions included in memory 60 described above, processor 36 determines or identifies a candidate address for the data targeted by the logical block address using the hash table of the direct cache address translation data structure. In other words, processor 36 attempts to identify the physical address in cache 228 that corresponds to the logical block address using direct address translation hash table 240. Direct address translation hash table 240 provides a direct translation from the logical block address to the physical address in cache 228. Specifically, a hash function is applied to the logical block address, with the resulting hash serving as a key to perform a hash table lookup for the physical location of the candidate for the target data. In one implementation, the direct address hash table is used to translate the volume ID and offset (logical block address or logical block address) into a segment ID and offset (the candidate physical location) of the cache 228 without multiple tree index lookups.

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 block 310, the processor 36 determines, in accordance with instructions including the memory 60, whether the direct cache address translation data structure used in block 308 has identified a candidate physical address corresponding to the logical block address (e.g., where the requested data item is stored) that was found. For example, in circumstances where the physical address of the particular target data piece or copy of the data in the cache 228 has been moved, the target data may not actually be delivered to the candidate physical location obtained from the direct cache address translation data structure.

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 block 314, when the correct physical address of the requested data (based on the logical block address) is found, the processor 36 accesses the physical address on the cache device 228. Such access may include reading data from the particular physical address or writing data to the particular physical address.

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 block 308 not identifying the correct physical address for the requested data, the processor 36 performs a multi-level translation index lookup 320 according to the instruction contained in the memory 60. As indicated by block 322, the processor 36 performs a first tree lookup in a block index that associates the user input (a volume ID and an offset) with a user block. As indicated by block 324, the processor 36 performs a second tree lookup in a cache index that associates the user block with a segment ID and an offset (the physical address in cache 28) that can be used to identify an expected physical location for the target data on the cache 28 per block 314.

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 block 322, the expected physical location retrieved from the multi-level translation index lookup 320 is cached in the hash table. As a result, the direct cache address translation data structure is automatically updated with address information from the more frequently updated multi-level translation index when errors are found in block 308.

6 ist ein Flussdiagramm eines beispielhaften Cache-Datenlokalisierungsverfahrens 400 zum Lokalisieren von Daten in einem Cache. Obwohl das Verfahren 400 im Zusammenhang mit der Ausführung durch das System 220 (oben in Bezug auf 4 gezeigt und beschrieben) beschrieben ist, kann das Verfahren 400 ebenfalls durch das System 20 oder andere ähnliche Cache-Datenlokalisierungssysteme oder ähnliche Speichersysteme ausgeführt werden. Die Blöcke des Verfahrens 400 können vom Prozessor 36 gemäß den Anweisungen ausgeführt werden, die auf einem nicht vorübergehenden computerlesbaren Medium gespeichert sind. In einer Implementierung kann das Verfahren 400 von einem Prozessor ausgeführt werden, der dem Befehl folgt, der in einem nicht vorübergehenden computerlesbaren Medium oder Speicher enthalten ist, wie beispielsweise dem Speicher 60, wobei der Befehl 64, 68 und 72 den Prozessor 36 zum Ausführen des Verfahrens 400 auffordert. 6 is a flowchart of an exemplary cache data locating method 400 for locating data in a cache. Although method 400 is described in the context of execution by system 220 (shown and described above with respect to FIG. 4), method 400 may also be performed by system 20 or other similar cache data locating systems or similar storage systems. The blocks of method 400 may be executed by processor 36 according to instructions stored on a non-transitory computer-readable medium. In one implementation, method 400 may be executed by a processor following the instruction contained in a non-transitory computer-readable medium or memory, such as memory 60, where instruction 64, 68, and 72 direct processor 36 to execute method 400.

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 block 404, cache data location system 220 receives a request from a user to access targeted data stored in memory 228. System 220 receives a logical block address, sometimes referred to as a host address or logical block address (BLA). The logical block address is different from the address of the physical location in the cache where the target address is stored. Method 400 facilitates identifying the actual physical address in the cache where the user-identified data is stored with the provided logical block address. In one implementation, the logical block address includes or corresponds to a volume ID and an offset.

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.Blocks 406 and 408 illustrate an example of directly translating the logical block address into a physical location, a physical cache address that is a candidate for storing the data that the logical block address is looking for, the target data. Blocks 406 and 408 may be executed by processor 36 according to instructions contained in medium 60, such as instruction 68. In block 406, a hash function is applied to the received logical block address. In the example illustrated, the hash function is applied to the logical block address comprising a volume plus offset to produce a hash value.

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 gezeigte Gerät 28), an dem sich die Zieldaten zum Zeitpunkt der letzten Suche bekanntermaßen befanden.In block 408, instructions on the non-transitory computer-readable medium direct processor 36 to derive at least one key from the hash value, wherein a lookup of a hash table is performed using the at least one key to identify an entry containing an address for a candidate physical location in the low latency cache device for the target data. The candidate physical location is a physical location in the cache (the low latency cache device, such as the one in device 28 shown), where the target data was known to be located at the time of the last search.

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, processor 36 uses a first portion of the resulting hash as a first key for the hash table to identify a particular page from a plurality of pages for the entry. According to instructions included in the medium, processor 36 uses the entire resulting hash as a second key for the hash table to identify where on the particular page the entry is located. In other implementations, a single key derived from the resulting hash or more than two keys derived from the resulting hash may be used to locate the entry in the hash table that contains the candidate physical address or cache address for the target data.

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 decision block 410, the instructions instruct processor 36 to determine whether an entry corresponding to the logical block address or logical key exists. In other words, it is determined whether an entry exists in the direct cache address translation data structure associated with the key derived from the hash or hash value. In the example described above, where the entries are stored on different pages, a conclusion can be drawn that an entry for the logical block address or logical key does not exist if the keys derived from the hash, which results from applying the hash function to the logical block address, do not correspond to any pages in the direct cache data location data structure.

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 processor 36 to then check the validity of the entry to verify that the candidate physical location address for the target data found in the entry actually contains the target data. In addition to the candidate physical location address for the target data, the entry found in block 408 contains a second data identifier (DI-2). The second data identifier identifies the data corresponding to the logical block address as the target data. In the example illustrated, the entry containing the candidate physical location address may also contain other information, such as the length of data stored at the candidate physical location. Each entry associated with a different logical block address may have a corresponding first data identifier.

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 blocks 412 and 414, the instructions instruct the processor 36 to read the first data identifier stored at the candidate physical location corresponding to the actual data stored at the candidate physical location and the first data identifier with the second data identifier (DI-2) in the entry. As indicated by block 416, if the first data identifier read from the candidate physical location is equal to the second data identifier stored in the entry (part of the direct cache location data structure), the process 36 concludes that the data stored at the identified candidate physical location is close to the address in the entry that corresponds to the logical block address, and the same data is acquired from the logical block address. As a result, the instructions instruct the processor 36 to access the target data at the candidate physical location. As described above, such access may include modifying the existing data at the candidate physical location or reading the data at the candidate physical location if such reading does not modify the data.

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 block 418, in response to the first data identifier read from the candidate's physical location not matching the second data identifier stored in the entry containing the candidate's physical location address, processor 36 concludes that the target data no longer resides at the candidate's physical location; the data at the candidate's physical location is not the target data corresponding to the logical block address. As a result, the instructions instruct processor 36 to dissociate the candidate physical address in the entry from the logical block address (logical block address) for the target data. In the example illustrated, such dissociation involves completely removing the entry corresponding to the logical block address or logical key.

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 blocks 420 and 422, in response to the absence of an entry in the direct cache data location structure (in the example, the hash table) corresponding to the logical block address or key, or in response to the existing entry but containing a candidate physical location address 400 that does not contain the target data (D1-1 is not equal to D1-2), the method 400 automatically uses the multi-level translation index to attempt to locate the physical location in the cache for the target data. Blocks 420 and 422 illustrate an example of translating the logical block address to an expected physical location or cache address for the target data using a multi-level translation index. As indicated by block 420, the instructions instruct the processor 36 to translate the logical block address to a logical cache address. As indicated by block 422, after retrieving or identifying the logical cache address, the instructions instruct processor 36 to translate the logical cache address into an expected physical location (physical cache location or address) for the target data.

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 blocks 420 and 422, the expected physical location may be more authoritative than the candidate physical location provided by the direct cache location data structure and output in blocks 406 and 408. As described above, the expected physical location is more authoritative than the candidate possible physical location because the expected physical location is currently likely to contain the target data because the multi-level translation index used to perform blocks 420 and 422 is updated more frequently following movement of data within the cache, for example, as a result of the garbage collection processes described above. In contrast, in one implementation, the direct cache location data structure may only be updated in response to a candidate physical location failure (per block 414) or upon system initiation when entries may not yet exist (per block 410).

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 block 424, the expected physical location for the target data corresponding to the logical block address may then be used to access the target data. This may be done directly or may involve returning to block 408 with the direct cache location data structure updated as described below.

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 block 426, after identifying the expected physical location for the target data in block 422, the retrieved expected physical location is used to update the direct cache address translation structure. In one implementation, the physical address for the expected physical location of the target data is retrieved from the multi-level translation index cached in the direct cache address translation data structure. In the example shown, where invalid entries for a logical block address or logical key (entries where the identified D1-1 does not equal D1-2) are completely removed from the direct cache data location data ten structure is removed (hash table in the example), the Direct Cache Address Translation data structure is updated by adding a brand new complete entry to the Direct Cache Address Translation data structure, where the new entry associates the logical block address or logical key with the address of the expected physical location of the target data and its first data identifier D1-1.

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 block 418, the invalid portion of the entry, the address for the candidate physical location in the cache incorrectly believed to contain the target data, may be overwritten, removed, and replaced, or otherwise modified to alternatively include the address for the expected physical location as retrieved from the multi-level translation index in blocks 420 and 422.

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 block 426, a new entry containing the address for the expected physical location is placed at the top (MRU end) of its predetermined set. Similarly, as indicated by block 428, if an existing entry has been validated and the target data has been accessed at the candidate physical location identified by the address in the entry (MRU end) of the designated set, the entry containing the address for the candidate physical location is at the top of the designated set. In circumstances where the entry is already at the top of the designated set, no action is taken. In cases where the entry is not at the top, the entry is moved or relocated to the top of the designated set of entries. In other implementations, other schemes may be used to remove existing entries in the N-way sets of the direct cache address translation data structure when a new entry is to be added to a complete set.

7 ist ein Diagramm, das eine beispielhafte direkte Cache-Adressübersetzungsstruktur 540 darstellt, die als Beschleunigungsindex oder Metadaten-Bypass-Cache dient und eine Hash-Tabelle 570 verwendet. Die direkte Cache-Adressübersetzungsdatenstruktur 540 kann als Teil des Verfahrens 400 verwendet werden. In dem dargestellten Beispiel umfasst die Hash-Tabelle 570 eine zweistufige Tabelle, die ein Array von Zeigern (Vektoren 572) auf Seiten 574 (von denen einer gezeigt ist) mit einer Vielzahl von Einträgen 576 für den Schlüssel zum physischen Standort des Kandidaten (K / CPL) umfasst jede Seite. Jeder K / CPL-Eintrag kann eine Zuordnung eines Schlüssels (das Produkt einer Hash-Funktion, die auf die logische Blockadresse oder Hostadresse angewendet wird) zu einer physischen Kandidatenadresse in einem Cache umfassen, die der logischen Blockadresse oder Hostadresse entspricht. In einer Implementierung kann jede Seite 574 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 Tabelle 570 500.000 Seiten umfasst. In einer Implementierung umfasst jede Seite 574 nicht mehr als 50.000 K / CPL-Einträge 576 (Block logische Adresse zu physischen Adresseinträgen). In einer Implementierung umfasst jede Seite 32.000 K / CPL-Einträge. 7 is a diagram illustrating an example direct cache address translation structure 540 that serves as an acceleration index or metadata bypass cache and utilizes a hash table 570. The direct cache address translation data structure 540 may be used as part of the method 400. In the example illustrated, the hash table 570 includes a two-level table that includes an array of pointers (vectors 572) to pages 574 (one of which is shown) with a plurality of candidate physical location key (K/CPL) entries 576 on each page. Each K/CPL entry may include a mapping of a key (the product of a hash function applied to the logical block address or host address) to a candidate physical address in a cache that corresponds to the logical block address or host address. In one implementation, each page 574 may 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 table 570 containing 500,000 pages. In one implementation Each page 574 comprises no more than 50,000 K/CPL entries 576 (block logical address to physical address entries). In one implementation, each page comprises 32,000 K/CPL entries.

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 implementations 1 MB) can be efficiently managed by a memory allocator. For example, if a uniform allocator is to reclaim memory, pages may be discarded while only a small part of the hash table is lost. In such implementations, most accesses do not conflict under a lock because a number of pages 574 is large. In other words, each page 574 can be protected with a lock, such as a spin lock 578, but the probability of lock contention for concurrent threads may be negligible. At the same time, the number of entries 576 in a page is high, so the space overhead for such a lock is minimal. Such sizing can achieve the inclusion of all entries for a large input/output (IO) under only one lock. For example, a single lock may protect each of the logical block addresses from physical address entries of the direct cache data location structure 540, such as each of the 32,000 entries (corresponding to 32,000 possible logical block addresses or the "keys" (resulting from applying a hash function to the logical block addresses) in one example. As a result, such implementations provide granular page locking that is efficient and enables high parallelism.

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 appropriate page 574 for a given key, a hash function is applied to the logical block address and certain bits (e.g., the low four bits) of the resulting hash are masked, and the remaining bits of the hash are used to select the appropriate page 574 for the given key. If you use this technique to select page mappings for nearby logical block addresses (e.g., logical block addresses (LBAs)), they are likely to end up on the same page. Within each page 574, an array of K/CPL pairs is indexed by the respective keys. In one example, the hash table is seeded in four directions associatively, meaning that there are four possible slots for each key. This arrangement provides a high load factor with a low and deterministic check cost. Performance is improved because all possible locations for an item in memory are contiguous and fit into two CPU cache lines.

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 set 580 can serve as a proxy for its “temperature” (i.e., how recently the entry was accessed). In such an implementation, the K/CPL entries in the sets 580 are maintained in an LRU order by promoting new and accessed entries to the top or MRU end of the set and removing the bottom or LRU 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 temperature of the entry. Thus, the LRU cache policy can be approximated with little or no storage overhead.

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/data structure 540 to data size ratio is 32/4096, 0.7%. For example, a 1.5 TB cache device may use only 12 GB of main memory. Alternatively, without using data structure 540, a design may use the same 12 GB to store a fraction of the data in the cache. Data structure 540 facilitates fast access to the entire cache device.

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 translation data structure 540, such as a hash table 570, may result in collisions and evictions that cannot be handled 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.

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)

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; und eine 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; und als 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; und Zuordnen 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), wherein the multi-level translation index (44; 244) comprises: a first index table for translating the logical block address into a first internal identifier; and a 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; and in 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); and mapping 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. Verfahren (100) nach Anspruch 1, wobei die direkte Cache-Adressübersetzungsdatenstruktur (40; 240; 540) eine erste Kennung für die Zieldaten speichert; wobei eine zweite Kennung an dem physischen Kandidatenort gespeichert ist; und wobei das Verfahren (100) ferner das Vergleichen der ersten Kennung mit der zweiten Kennung umfasst, um zu bestimmen, ob die Daten an dem physischen Kandidatenort die Zieldaten sind.Procedure (100) according to Claim 1 wherein the direct cache address translation data structure (40; 240; 540) stores a first identifier for the target data; wherein a second identifier is stored at the candidate physical location; and wherein the method (100) further comprises comparing the first identifier to the second identifier to determine whether the data at the candidate physical location is the target data. Verfahren (100) nach Anspruch 1, wobei als Reaktion darauf, dass die logische Blockadresse für die Zieldaten keinem physischen Kandidatenort in der direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540) zugeordnet ist: Bestimmen des erwarteten physischen Speicherorts für die Zieldaten unter Verwendung des mehrstufigen Übersetzungsindex (44; 244); und Ändern der direkten Cache-Adressübersetzungsdatenstruktur, um den bestimmten erwarteten physischen Speicherort mit der logischen Blockadresse für die Zieldaten zu verknüpfen.Procedure (100) according to Claim 1 wherein, in response to the logical block address for the target data not being associated with a candidate physical location in the direct cache address translation data structure (40; 240; 540): determining the expected physical location for the target data using the multi-level translation index (44; 244); and modifying the direct cache address translation data structure to associate the determined expected physical location with the logical block address for the target data. Verfahren (100) nach Anspruch 1, wobei die direkte Cache-Adressübersetzungsdatenstruktur (40; 240; 540) eine Hash-Tabelle umfasst (570), wobei das Verfahren ferner Folgendes umfasst: Anwenden einer Hash-Funktion auf die logische Blockadresse, um einen Hash-Wert zu erzeugen; und Abrufen des physischen Kandidatenorts aus der Hash-Tabelle (570) basierend auf dem Hash-Wert.Procedure (100) according to Claim 1 wherein the direct cache address translation data structure (40; 240; 540) comprises a hash table (570), the method further comprising: applying a hash function to the logical block address to generate a hash value; and retrieving the candidate physical location from the hash table (570) based on the hash value. Verfahren (100) nach Anspruch 1, wobei als Reaktion darauf, dass die Zieldaten sich nicht an dem physischen Kandidatenort befinden: Caching des bestimmten erwarteten physischen Speicherorts in der direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540), einschließlich des Abänderns der direkten Cache-Adressübersetzungsdatenstruktur (40; 240) durch: Trennen des physischen Kandidatenorts von der logischen Blockadresse für die Zieldaten; und Verknüpfen des bestimmten erwarteten physischen Speicherorts mit der logischen Blockadresse für die Zieldaten.Procedure (100) according to Claim 1 wherein in response to the target data not being located at the candidate physical location: caching the determined expected physical location in the direct cache address translation data structure (40; 240; 540), including modifying the direct cache address translation data structure (40; 240) by: separating the candidate physical location from the logical block address for the target data; and associating the determined expected physical location with the logical block address for the target data. System (20; 220), das Folgendes umfasst: ein persistente Speichervorrichtung (24; 224); ein Cache-Gerät (28; 228) mit geringer Latenz; ein flüchtiger Speicher (32; 232); und einen Prozessor (36) zum Ausführen von Anweisungen, die auf einem maschinenlesbaren Speichermedium gespeichert sind, zum: Speichern einer direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540) in dem flüchtigen Speicher (32; 232), die zum direkten Übersetzen einer logischen Blockadresse für Zieldaten an einen physischen Kandidatenort auf dem Cache-Gerät (28; 228) verwendet werden kann; Speichern eines mehrstufigen Übersetzungsindex (44; 244) in dem 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; und eine zweite Indextabelle zum Übersetzen der ersten interne Kennung in den physischen Speicherort auf dem Cache-Gerät (28; 228), Bestimmen, 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; und als Reaktion auf die Zieldaten, die sich nicht am physischen Kandidatenort befinden, Zugreifen auf die Zieldaten an dem erwarteten physischen Speicherort, der über den mehrstufigen Übersetzungsindex (44; 244) bestimmt wurde; und Zuordnen der ersten internen Kennung zu einem anderen physischen Speicherort als Reaktion darauf, dass Daten an dem erwarteten physischen Speicherort an den anderen physischen Speicherort vorschoben werden.A system (20; 220) comprising: a persistent storage device (24; 224); a low latency cache device (28; 228); a volatile memory (32; 232); and a processor (36) for executing instructions stored on a machine-readable storage medium to: store a direct cache address translation data structure (40; 240; 540) in the volatile memory (32; 232) that can be used to directly translate a logical block address for target data to a candidate physical location on the cache device (28; 228); store 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 to a first internal identifier; and a second index table for translating the first internal identifier to the physical location on the cache device (28; 228), Determining 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; and in response to the target data not being located at the candidate physical location, accessing the target data at the expected physical location determined via the multi-level translation index (44; 244); and associating the first internal identifier with a different physical location in response to data at the expected physical location being advanced to the different physical location. System (20; 220) nach Anspruch 6, wobei das Cache-Gerät (28; 228) mit geringer Latenz eine zweite persistente Speichervorrichtung umfasst.System (20; 220) according to Claim 6 wherein the low latency cache device (28; 228) comprises a second persistent storage device. System (20; 220) nach Anspruch 7, wobei die zweite persistente Speichervorrichtung einen Speicherklassenspeicher (SCM) umfasst.System (20; 220) according to Claim 7 , wherein the second persistent storage device comprises a storage class memory (SCM). System (20; 220) nach Anspruch 6, wobei die direkte Cache-Adressübersetzungsdatenstruktur (40; 240; 540) eine erste Kennung für die Zieldaten speichert; wobei eine zweite Kennung an dem physischen Kandidatenort gespeichert ist; und wobei die Anweisungen ausführbar sind, um die erste Kennung mit der zweiten Kennung zu vergleichen, um zu bestimmen, ob die Daten an dem physischen Kandidatenort die Zieldaten sind.System (20; 220) according to Claim 6 wherein the direct cache address translation data structure (40; 240; 540) stores a first identifier for the target data; wherein a second identifier is stored at the candidate physical location; and wherein the instructions are executable to compare the first identifier to the second identifier to determine whether the data at the candidate physical location is the target data. System (20; 220) nach Anspruch 9, wobei die Anweisungen ausführbar sind um, als Reaktion darauf, dass die erste Kennung von der zweiten Kennung verschieden ist: den physischen Kandidatenort von der logischen Blockadresse für die Zieldaten in der direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540) zu trennen; den erwarteten physischen Speicherort für die Zieldaten unter Verwendung des mehrstufigen Übersetzungsindex (44; 244) zu bestimmen; und den bestimmten erwarteten physischen Speicherort mit der logischen Blockadresse für die Zieldaten zu verknüpfen.System (20; 220) according to Claim 9 wherein the instructions are executable to, in response to the first identifier being different from the second identifier: separate the candidate physical location from the logical block address for the target data in the direct cache address translation data structure (40; 240; 540); determine the expected physical location for the target data using the multi-level translation index (44; 244); and associate the determined expected physical location with the logical block address for the target data. System (20; 220) nach Anspruch 6, wobei die Anweisungen ausführbar sind um, als Reaktion darauf, dass die logische Blockadresse für die Zieldaten keinem physischen Kandidatenort zugeordnet ist: den erwarteten physischen Speicherort für die Zieldaten unter Verwendung des mehrstufigen Übersetzungsindex (44; 244) zu bestimmen; und die direkte Cache-Adressübersetzungsdatenstruktur (40; 240; 540) zu ändern, um den bestimmten erwarteten physischen Speicherort mit der logischen Blockadresse für die Zieldaten zu verknüpfen.System (20; 220) according to Claim 6 wherein the instructions are executable to, in response to the logical block address for the target data not being associated with a candidate physical location: determine the expected physical location for the target data using the multi-level translation index (44; 244); and modify the direct cache address translation data structure (40; 240; 540) to associate the determined expected physical location with the logical block address for the target data. System (20; 220) nach Anspruch 6, wobei: die direkte Cache-Adressübersetzungsdatenstruktur (40; 240; 540) eine Hash-Tabelle (570) umfasst; wobei die Anweisungen weiterhin ausführbar sind zum: Anwenden einer Hash-Funktion auf die logische Blockadresse um einen Hash-Wert zu erzeugen; und Abrufen des physischen Kandidatenorts aus der Hash-Tabelle (570) basierend auf dem Hash-Wert.System (20; 220) according to Claim 6 wherein: the direct cache address translation data structure (40; 240; 540) comprises a hash table (570); the instructions further executable for: applying a hash function to the logical block address to generate a hash value; and retrieving the candidate physical location from the hash table (570) based on the hash value. System (20; 220) nach Anspruch 12, wobei die Anweisungen zum Abrufen des physischen Kandidatenorts aus der Hash-Tabelle (570) basierend auf dem Hash-Wert Anweisungen umfassen zum: Verwenden eines ersten Teils des Hash-Werts als einen ersten Schlüssel für die Hash-Tabelle (570), um eine bestimmte Seite einer Vielzahl von Seiten (574) zu identifizieren; und Verwenden des Hash-Werts als zweiten Schlüssel für die Hash-Tabelle (570), um einen Speicherort des physischen Kandidatenorts auf der bestimmten Seite zu identifizieren.System (20; 220) according to Claim 12 wherein the instructions for retrieving the candidate physical location from the hash table (570) based on the hash value comprise instructions for: using a first portion of the hash value as a first key for the hash table (570) to identify a particular page of a plurality of pages (574); and using the hash value as a second key for the hash table (570) to identify a storage location of the candidate physical location on the particular page. System (20; 220) nach Anspruch 13, wobei jede der Vielzahl von Seiten durch eine Drehsperre (578) geschützt ist.System (20; 220) according to Claim 13 wherein each of the plurality of sides is protected by a rotation lock (578). System (20; 220) nach Anspruch 12, wobei die Hash-Tabelle (570) assoziativ gesetzt ist, wobei jeder Satz in zwei Prozessor-Cache-Zeilen passt.System (20; 220) according to Claim 12 , wherein the hash table (570) is associatively set, with each set fitting into two processor cache lines. System (20; 220) nach Anspruch 12, wobei die Hash-Tabelle (570) assoziativ gesetzt ist und wobei jeder Schlüssel einen Ort innerhalb seines entsprechenden Satzes basierend auf einer Räumungstemperatur für den Schlüssel aufweist.System (20; 220) according to Claim 12 wherein the hash table (570) is associatively set and wherein each key has a location within its corresponding set based on an eviction temperature for the key. System (20; 220) nach Anspruch 6, wobei die Anweisungen ausführbar sind um: als Reaktion darauf, dass die Zieldaten sich nicht am physischen Kandidatenort befinden: Caching des bestimmten erwarteten physischen Speicherorts in der direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540), einschließlich des Abänderns der direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540)durch: Trennen des physischen Kandidatenorts von der logischen Blockadresse für die Zieldaten; und Verknüpfen des bestimmten erwarteten physischen Speicherorts mit der logischen Blockadresse für die Zieldaten.System (20; 220) according to Claim 6 , where the instructions are executable to: in response to the target data not being located at the candidate physical location: caching the particular expected physical location in the direct cache address translation data structure (40; 240; 540), including modifying the direct cache address translation data structure (40; 240; 540) by: separating the candidate physical location from the logical block address for the target data; and associating the determined expected physical location with the logical block address for the target data. Nichtflüchtiges Speichermedium umfassend Anweisungen die von einem Prozessor (36) ausführbar sind zum: Speichern 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 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; und eine zweite Indextabelle zum Übersetzen der ersten interne Kennung in den physischen Speicherort auf dem Cache-Gerät (28; 228), Bestimmen, 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; und als Reaktion auf die Zieldaten, die sich nicht am physischen Kandidatenort befinden, Zugreifen auf die Zieldaten an dem erwarteten physischen Speicherort, der über den mehrstufigen Übersetzungsindex (44; 244) bestimmt wurde; und Zuordnen 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 non-volatile storage medium comprising instructions executable by a processor (36) for: storing 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 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), wherein the multi-level translation index (44; 244) comprises: a first index table for translating the logical block address into a first internal identifier; and a second index table for translating the first internal identifier to the physical storage location on the cache device (28; 228), determining 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; and in response to the target data not being located at the candidate physical location, accessing the target data at the expected physical storage location determined via the multi-level translation index (44; 244); and mapping 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 location. Nichtflüchtiges Speichermedium nach Anspruch 18, wobei die direkte Cache-Adressübersetzungsdatenstruktur (40; 240; 540) eine Hash-Tabelle (570) umfasst, wobei die Anweisungen weiterhin ausführbar sind zum: Anwenden einer Hash-Funktion auf die logische Blockadresse um einen Hash-Wert zu erzeugen; und Abrufen des physischen Kandidatenorts aus der Hash-Tabelle (570) basierend auf dem Hash-Wert.Non-volatile storage medium according to Claim 18 wherein the direct cache address translation data structure (40; 240; 540) comprises a hash table (570), the instructions further executable for: applying a hash function to the logical block address to generate a hash value; and retrieving the candidate physical location from the hash table (570) based on the hash value. Nichtflüchtiges Speichermedium nach Anspruch 18, wobei die Anweisungen ausführbar sind zum: als Reaktion darauf, dass die Zieldaten sich nicht am physischen Kandidatenort befinden: Caching des abgerufenen erwarteten physischen Speicherorts in der direkten Cache-Adressübersetzungsdatenstruktur, einschließlich des Abänderns der direkten Cache-Adressübersetzungsdatenstruktur (40; 240; 540) durch: Trennen des physischen Kandidatenorts von der logischen Blockadresse für die Zieldaten; und Verknüpfen des bestimmten erwarteten physischen Speicherorts mit der logischen Blockadresse für die Zieldaten.Non-volatile storage medium according to Claim 18 wherein the instructions are executable to: in response to the target data not being at the candidate physical location: caching the retrieved expected physical location in the direct cache address translation data structure, including modifying the direct cache address translation data structure (40; 240; 540) by: separating the candidate physical location from the logical block address for the target data; and associating the determined expected physical location with the logical block address for the target data.
DE102020104701.0A 2019-04-26 2020-02-21 Cache data localization system Active DE102020104701B4 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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