DE102017001999A1 - RÜCKWÄRTSABBILDUNG MIT EFFIZIENTER UND DYNAMISCHER GRÖßE ZUR HANDHABUNG VON DATEN MIT VARIABLER GRÖßE - Google Patents

RÜCKWÄRTSABBILDUNG MIT EFFIZIENTER UND DYNAMISCHER GRÖßE ZUR HANDHABUNG VON DATEN MIT VARIABLER GRÖßE Download PDF

Info

Publication number
DE102017001999A1
DE102017001999A1 DE102017001999.1A DE102017001999A DE102017001999A1 DE 102017001999 A1 DE102017001999 A1 DE 102017001999A1 DE 102017001999 A DE102017001999 A DE 102017001999A DE 102017001999 A1 DE102017001999 A1 DE 102017001999A1
Authority
DE
Germany
Prior art keywords
size
dynamic
physical block
map
data blocks
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.)
Pending
Application number
DE102017001999.1A
Other languages
English (en)
Inventor
Saurabh Manchanda
Sandeep Sharma
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017001999A1 publication Critical patent/DE102017001999A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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; CALCULATING OR 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; CALCULATING OR 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

”Ein System umfasst einen Prozessor und einen Speicher, der Anweisungen speichert, die bewirken, wenn sie ausgeführt werden, dass das System einen Datenstrom empfängt, der einen oder mehrere Datenblöcke enthält; eine Größe des einen oder der mehreren Datenblöcke ermittelt; eine Anzahl an Abbildungen ermittelt, die für einen physischen Block benötigt wird, auf Basis der Größe eines Datenblocks und einer Größe des physischen Blocks, wobei die Anzahl der Abbildungen für verschiedene physische Blöcke abhängig von der Größe des einen oder der mehreren Datenblöcke, die im physischen Block gespeichert werden, variabel ist; eine Rückwärtsabbildung mit dynamischer Größe abruft, wobei die Rückwärtsabbildung mit dynamischer Größe eine dynamische Baumstruktur ist; eine Startposition in der Rückwärtsabbildung mit dynamischer Größe für Abbildungen des einen oder der mehreren Datenblöcke ermittelt; und einen Eintrag für den physischen Block in der Rückwärtsabbildung mit dynamischer Größe erstellt.

Description

  • STAND DER TECHNIK
  • Die vorliegende Offenbarung betrifft eine Verwaltung von Sätzen von Datenblöcken in einer Speichereinrichtung. Insbesondere beschreibt die vorliegende Offenbarung eine Rückwärtsabbildung mit variabler Größe für eine Speicheranwendung. Noch genauer betrifft die vorliegende Offenbarung eine Rückwärtsabbildung mit effizienter und dynamischer Größe, um Daten mit variabler Größe abzufertigen.
  • Viele Speichereinrichtungssysteme verwenden eine dynamische Übersetzungstabelle, die die neuesten Abbildungen von logischen auf physische Medien nachverfolgt. Während und wenn logische Blöcke überschrieben werden, wird die Übersetzungstabelle aktualisiert, um auf eine neue Position im physischen Medium zu zeigen, und die alte physische Medienposition wird vom automatischen Speicherbereinigungsprozess zurückgefordert. Der automatische Speicherbereinigungsprozess bearbeitet die zusammenhängenden Positionsbereiche in den physischen Medien, deshalb erfordert dieser Prozess die Rückwärtsabbildung von Positionen von physischen Medien auf logische Blockadressen.
  • Wenn die Speichereinrichtungen eine Datenreduktion unterstützen, kann ein physischer Block mehrere logische Blöcke in reduzierter Form speichern. Deshalb gibt es keine eineindeutige Beziehung zwischen der physischen Blockgröße und der Anzahl der logischen Blöcke, die in den Speichereinrichtungen gespeichert werden können. Die Größe der Rückwärtsabbildung in solchen Systemen muss dynamisch sein und hängt vorzugsweise von der Arbeitslast ab. Wenn beispielsweise die physische Blockgröße 4096 Bytes beträgt, wird die Größe der kleinsten adressierbaren Einheit 512 Bytes bei einer 8-fachen Komprimierung und ein einfaches Erweitern der Rückwärtsabbildung, um 512 Bytes an Blöcken zu adressieren, wird einen 8-mal größeren Speicherverbrauch aufweisen. Die Rückwärtsübersetzungstabelle ist als eine paginierte Übersetzungstabelle implementiert, um den Speicherverbrauch einzuschränken, damit eine größere Rückwärtsabbildung mehr Platz in den physischen Medien verbraucht. Der Speicherbedarf der Systemsoftware und die Gesamteffizienz des automatischen Speicherbereinigungsprozesses hängen stark von der Implementierung der Rückwärtsabbildung ab.
  • KURZFASSUNG DER ERFINDUNG
  • Die vorliegende Offenbarung betrifft Systeme und Verfahren zur hardwareeffizienten Datenverwaltung. Nach einem innovativen Aspekt des Gegenstands in dieser Offenbarung enthält ein System eine Rückwärtsabbildung mit dynamischer Größe, die eine variable Größe aufweist, die aufgrund einer von einer Speichereinrichtung durchgeführten Komprimierung einer variablen Anzahl an Abbildungen für verschiedene physische Blöcke entspricht; und einen Prozessor, der an die Rückwärtsabbildung mit dynamischer Größe gekoppelt ist, wobei der Prozessor konfiguriert ist: einen Datenstrom zu empfangen, der einen oder mehrere Datenblöcke enthält; eine Größe des einen oder der mehreren Datenblöcke zu ermitteln; eine Anzahl an Abbildungen zu ermitteln, die für einen physischen Block benötigt wird, auf Basis der Größe eines Datenblocks und einer Größe des physischen Blocks, wobei die Anzahl der Abbildungen für verschiedene physische Blöcke abhängig von der Größe des einen oder der mehreren Datenblöcke, die im physischen Block gespeichert werden, variabel ist; eine Startposition in der Rückwärtsabbildung mit dynamischer Größe für Abbildungen des einen oder der mehreren Datenblöcke zu ermitteln; und einen Eintrag für den physischen Block in der Rückwärtsabbildung mit dynamischer Größe zu erstellen, wobei der Eintrag die Anzahl der Abbildungen des physischen Blocks und die Startposition für den einen oder die mehreren Datenblöcke enthält und wobei der Eintrag ein Index der variablen Anzahlen von Abbildungen für den physischen Block ist.
  • Im Allgemeinen kann ein weiterer innovativer Aspekt des in dieser Offenbarung beschriebenen Gegenstands in Verfahren implementiert werden, die Folgendes enthalten: Empfangen eines Datenstroms, der einen oder mehrere Datenblöcke enthält; Ermitteln einer Größe des einen oder der mehreren Datenblöcke; Ermitteln einer Anzahl an Abbildungen auf Basis der Größe des einen oder der mehreren Datenblöcke und einer Größe eines physischen Blocks, wobei die Anzahl der Abbildungen für verschiedene physische Blöcke abhängig von der Größe des einen oder der mehreren Datenblöcke, die im physischen Block gespeichert werden, variabel ist; Abrufen einer Rückwärtsabbildung mit dynamischer Größe, wobei eine Größe der Rückwärtsabbildung mit dynamischer Größe der variablen Anzahl von Abbildungen für verschiedene physische Blöcke entspricht; Ermitteln einer Startposition in der Rückwärtsabbildung mit dynamischer Größe für Abbildungen des einen oder der mehreren Datenblöcke; und Erstellen eines Eintrags für den physischen Block in der Rückwärtsabbildung mit dynamischer Größe, wobei der Eintrag die Anzahl der Abbildungen des physischen Blocks und die Startposition für den einen oder die mehreren Datenblöcke enthält und wobei der Eintrag ein Index der Anzahlen von Abbildungen für den physischen Block ist.
  • Andere Implementierungen eines oder mehrerer dieser Aspekte enthalten entsprechende Systeme, Vorrichtungen und Computerprogramme, die konfiguriert sind, die Handlungen der Verfahren durchzuführen, die auf Computerspeichereinrichtungen kodiert sind.
  • Diese und andere Implementierungen können optional jeweils eine oder mehrere der folgenden Eigenschaften beinhalten. Zum Beispiel enthalten Eigenschaften, wenn die Rückwärtsabbildung mit dynamischer Größe eine dynamische Baumstruktur enthält, die einen erweiterbaren Knoten für eine Vielzahl von Puffereinträgen aufweist, einen Puffereintrag für jeden des einen oder der mehreren Datenblöcke; die Vorgänge enthalten ein Erstellen eines Puffereintrags für jeden des einen oder der mehreren Datenblöcke, wobei der Puffereintrag eine logische Blocknummer, eine physische Blocknummer, einen Startsektor im physischen Block und eine Anzahl an Sektoren enthält, die im physischen Block besetzt werden; der Puffereintrag ist in der Speichereinrichtung persistent; die Anzahl der Sektoren, die im physischen Block besetzt werden, wird auf Basis der Größe jedes des einen oder der mehreren Datenblöcke und einer Größe des Sektors ermittelt; die Anzahl der Abbildungen des physischen Blocks repräsentiert die Anzahl von Puffereinträgen, die ein physischer Block verbraucht; und das Abbildungssegment speichert die Rückwärtsabbildung mit dynamischer Größe mit dem Vorwärtszeiger und der Anzahl der Verweise.
  • Die Vorgänge enthalten zum Beispiel ferner Folgendes: Empfangen einer Anforderung, eine Vielzahl von Datenblöcken aus einem ersten Bereich logischer Adressen in einen zweiten Bereich logischer Adressen zu kopieren; Ermitteln einer Größe der Vielzahl der Datenblöcke; Ermitteln einer Anzahl an Verweisen, die die Vielzahl der Datenblöcke besetzt, auf Basis der Größe der Vielzahl der Datenblöcke; Ermitteln eines Vorwärtszeigers auf Basis der Rückwärtsabbildung mit dynamischer Größe für die Vielzahl der Datenblöcke; und Aktualisieren der Rückwärtsabbildung mit dynamischer Größe mit einem zusätzlichen Eintrag mit dem Vorwärtszeiger und der Anzahl der Verweise.
  • Die Vorgänge enthalten zum Beispiel ferner Folgendes: Abrufen von Informationen eines Abbildungssegments aus einem Segment-Header; Ermitteln einer Verwendungsanzahl von Schreibblöcken des Abbildungssegments; Ermitteln auf Basis der Verwendungsanzahl des Abbildungssegments, ob das Abbildungssegment Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt; Durchführen einer Aktualisierung der Rückwärtsabbildung mit dynamischer Größe am Abbildungssegment als Reaktion darauf, dass das Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt; und Aktualisieren der Informationen des Abbildungssegments im Segment-Header.
  • Diese Implementierungen sind in einer Vielzahl von Aspekten besonders vorteilhaft. Die hierin beschriebene Technologie stellt beispielsweise eine Rückwärtsabbildung mit dynamischer Größe für eine effiziente Datenspeicherung in Systemen bereit, die eine Datenreduktion unterstützen. Ferner ist die Rückwärtsabbildung mit dynamischer Größe skalierbar und unterstützt Blockkopiervorgänge.
  • Es sollte verstanden werden, dass die in der vorliegenden Offenbarung verwendete Sprache hauptsächlich zur Lesbarkeit und zu Lehrzwecken ausgewählt wurde und nicht, um den Umfang des hierin offenbarten Gegenstands zu beschränken.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Offenbarung wird in den Figuren der beiliegenden Zeichnungen beispielhaft, jedoch nicht einschränkend illustriert, in denen gleiche Bezugsziffern verwendet werden, um auf ähnliche Elemente zu verweisen.
  • 1 ist ein Blockdiagramm auf hoher Ebene, das ein Beispielsystem zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe in einem Speichersystem nach den hier beschriebenen Techniken implementiert.
  • 2 ist ein Blockdiagramm, das ein Beispiel einer Speicherlogik nach den hier beschriebenen Techniken implementiert.
  • 3 ist eine beispielhafte grafische Repräsentation, die ein Layout einer Rückwärtsabbildung mit dynamischer Größe, das von der Speicherlogik verwendet wird, nach den hierin beschriebenen Techniken illustriert.
  • 4 ist eine beispielhafte grafische Repräsentation, die ein Layout der Blockkopie, die die Rückwärtsabbildung mit dynamischer Größe unterstützt, nach den hierin beschriebenen Techniken illustriert.
  • 5A und 5B sind Ablaufdiagramme eines beispielhaften Verfahrens zum Generieren einer Rückwärtsabbildung mit dynamischer Größe für einen Schreibprozess in eine Speichereinrichtung nach den hierin beschriebenen Techniken.
  • 6 ist ein Ablaufdiagramm eines beispielhaften Verfahrens zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe, um Puffereinträge für Datenblöcke in einer Speichereinrichtung nach den hierin beschriebenen Techniken aufzunehmen.
  • 7 ist ein Ablaufdiagramm eines beispielhaften Verfahrens zum Implementieren eines automatischen Speicherbereinigungsvorgangs für eine Rückwärtsabbildung mit dynamischer Größe in einer Speichereinrichtung nach den hierin beschriebenen Techniken.
  • 8 ist ein Ablaufdiagramm eines beispielhaften Verfahrens zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe für einen Blockkopierprozess in einer Speichereinrichtung nach den hierin beschriebenen Techniken.
  • DETAILLIERTE BESCHREIBUNG
  • Unten werden Systeme und Verfahren zum Implementieren einer Rückwärtsabbildungsarchitektur mit dynamischer Größe beschrieben. Insbesondere werden in der vorliegenden Offenbarung unten Systeme und Verfahren zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe in Speichereinrichtungen und insbesondere in Flash-Speichereinrichtungen mit Komprimierung beschrieben. Obwohl die Systeme und Verfahren der vorliegenden Offenbarung im Kontext einer bestimmten Systemarchitektur beschrieben werden, die Flash-Speicher verwendet, sollte klar sein, dass die Systeme und Verfahren auf andere Architekturen und Organisationen von Hardware und anderen Speichereinrichtungen mit ähnlichen Eigenschaften angewandt werden können.
  • Die vorliegende Offenbarung betrifft ein Implementieren einer Rückwärtsabbildung mit dynamischer Größe in Speichereinrichtungen für einen Schreibprozess, einen automatischen Speicherbereinigungsprozess und einen Blockkopierprozess. In einigen Ausführungsformen beschreibt die vorliegende Offenbarung das Layout der Rückwärtsabbildung mit dynamischer Größe für Speicheranwendungen. Die vorliegende Offenbarung unterscheidet sich von früheren Implementierungen durch Lösen der verschiedenen Probleme. Wenn sich beispielsweise die Speicherkapazität von Speichereinrichtungen stetig erhöht, wachsen die Größen der dynamischen Übersetzungstabelle und der Rückwärtsabbildung entsprechend. Gleichzeitig werden Datenreduktionstechniken im Speicherverwaltungsfeld angewandt, um mehr Daten in den gleichen Speichereinrichtungen zu speichern, was zu noch größeren Übersetzungstabellen in den Speichereinrichtungen führt. Ferner wird aufgrund von variablen Datenkomprimierungsverhältnissen, die in den Datenreduktionstechniken verwendet werden, eine Übersetzungstabelle mit variabler Größe benötigt. Deshalb ist die unten beschriebene arbeitslastbasierte Rückwärtsabbildung in der Speicherbranche sehr erwünscht. Außerdem ist die automatische Speicherbereinigung (GC) eine typische Technik, die bei der Speicherverwaltung eingesetzt wird. Die automatische Speicherbereinigung fordert Speicher zurück, der von Objekten besetzt wurde, die nicht mehr verwendet werden. Der Mechanismus der automatischen Speicherbereinigung wirkt auf zusammenhängende Bereiche von Positionen in Speichermedien ein. Deshalb ist eine Rückwärtsabbildung (Rückwärtsübersetzungstabelle) von physischen Medien auf logische Blockadressen erforderlich. Deshalb löst die vorliegende Offenbarung die mit effizienter Datenspeicherung verbundenen Probleme, indem sie eine stark arbeitslastbasierte Rückwärtsabbildung zum Implementieren von Speicheranwendungen in der Speichereinrichtung bereitstellt.
  • System
  • 1 ist ein Blockdiagramm auf hoher Ebene, das ein Beispielsystem 100 zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe in einer Speichereinrichtung nach den hier beschriebenen Techniken implementiert. In der dargestellten Ausführungsform kann das System 100 eine Speicherlogik 104 und eine oder mehrere Speichereinrichtungen oder Speichermedien 110a, 110b bis einschließlich 110n enthalten. Es sollte angemerkt werden, dass die Begriffe „Speichermedien” und die „Speichereinrichtung” in der gesamten vorliegenden Offenbarung austauschbar verwendet werden, um die physischen Medien zu bezeichnen, auf denen die Daten gespeichert sind. In der illustrierten Ausführungsform sind die Speicherlogik 104 und die eine oder mehreren Speichereinrichtungen 110a, 110b bis einschließlich 110n kommunikativ über Signalleitungen 126a, 126b bis einschließlich 126n gekoppelt. Die vorliegende Offenbarung ist jedoch nicht auf diese Konfiguration beschränkt und eine Vielfalt von verschiedenen Systemumgebungen und Konfigurationen können eingesetzt werden und liegen im Umfang der vorliegenden Offenbarung. Andere Ausführungsformen können zusätzliche oder weniger Komponenten enthalten. Es sollte erkannt werden, dass 1 sowie die anderen Figuren, die verwendet werden, um eine Ausführungsform zu illustrieren, und eine Angabe eines Buchstabens nach einer Bezugszahl oder Bezugsziffer, zum Beispiel „110a”, ein bestimmter Verweis auf das Element oder die Komponente ist, die durch diese Bezugsziffer bezeichnet wird. Im Fall, dass eine Bezugsziffer im Text ohne einen nachfolgenden Buchstaben erscheint, zum Beispiel „110”, sollte erkannt werden, dass eine solche ein allgemeiner Verweis auf verschiedene Ausführungsformen des Elements oder der Komponente ist, das bzw. die diese allgemeine Bezugsziffer trägt.
  • In einigen Ausführungsformen implementiert die Speicherlogik 104 eine Rückwärtsabbildung mit dynamischer Größe sowie speicherungsbezogene Vorgänge in Speichereinrichtungen. Die Speicherlogik 104 kann Rechenfunktionen, Dienste und/oder Ressourcen bereitstellen, um Daten von anderen Entitäten des Systems 100 zu senden, zu empfangen, zu lesen, zu schreiben und zu transformieren. In einigen Ausführungsformen kann die Speicherlogik 104 eine Recheneinrichtung sein, die konfiguriert ist, einen Teil oder den gesamten Speicherplatz auf den Speichereinrichtungen 110 verfügbar zu machen. Die Speicherlogik 104 ist über eine Signalleitung 216 zur Kommunikation und Kooperation mit den Speichereinrichtungen 110a110n des Systems 110 an die Speichereinrichtungen 110 gekoppelt. In anderen Ausführungsformen überträgt die Speicherlogik 104 über die Signalleitungen 126a126n Daten zwischen den Speichereinrichtungen 110a110n. Es sollte erkannt werden, dass mehrere Speicherlogikeinheiten 104 eingesetzt werden können, entweder in einer verteilten Architektur oder anderweitig. Zum Zweck dieser Anmeldung werden die Systemkonfiguration und Vorgänge, die vom System 100 durchgeführt werden, im Kontext einer einzelnen Speicherlogik 104 beschrieben.
  • Die Speichereinrichtungen 110a, 110b bis einschließlich 110n können ein nichttransitorisches, von Computer verwendbares (z. B. lesbares, schreibbares usw.) Medium enthalten, das eine beliebige nichttransitorische Vorrichtung oder Einrichtung sein kann, die Anweisungen, Daten, Computerprogramme, Software, Code-Routinen usw. zum Verarbeiten durch einen oder in Verbindung mit einem Prozessor beinhalten, speichern, kommunizieren, weiterleiten oder transportieren kann. In einigen Ausführungsformen kommunizieren und kooperieren die Speichereinrichtungen 110a, 110b bis einschließlich 110n mit der Speicherlogik 104 über die Signalleitungen 126a, 126b bis einschließlich 126n. Obwohl die vorliegende Offenbarung die Speichereinrichtungen 110 als Flashspeicher bezeichnet, sollte verstanden werden, dass die Speichereinrichtungen 110 in einigen Ausführungsformen andere nichtflüchtige Speichereinrichtungen mit ähnlichen Merkmalen enthalten können.
  • 2 ist ein Blockdiagramm, das ein Beispiel einer Speicherlogik 104 nach den hier beschriebenen Techniken implementiert. Die Speicherlogik 104 ist kombinatorische Logik, Firmware, Software, Code oder Routinen oder eine Kombination davon zum Implementieren der Rückwärtsabbildung mit dynamischer Größe für die Speichereinrichtungen 110. Wie in 2 gezeigt, kann die Speicherlogik 104 ein Datenempfangsmodul 202, eine Speichersteuereinrichtung 204, einen Speicher 212 und ein automatisches Speicherbereinigungsmodul 210 enthalten, die elektronisch kommunikativ durch einen Kommunikationsbus (nicht gezeigt) zur Kooperation und Kommunikation miteinander gekoppelt sein können. Der Speicher 212 kann ferner eine dynamische Übersetzungstabelle 206 und eine Rückwärtsabbildung mit dynamischer Größe 208 enthalten. Dort sind die Komponenten 202, 204, 206, 208, 210 und 212 auch über die Signalleitungen 126 zur Kommunikation mit anderen Entitäten (z. B. den Speichereinrichtungen 110) des Systems 100 gekoppelt. Die vorliegende Offenbarung ist jedoch nicht auf diese Konfiguration beschränkt und eine Vielfalt von verschiedenen Systemumgebungen und Konfigurationen können eingesetzt werden und liegen im Umfang der vorliegenden Offenbarung. Andere Ausführungsformen können zusätzliche oder weniger Komponenten enthalten.
  • In einer Ausführungsform sind das Datenempfangsmodul 202, die Speichersteuereinrichtung 204, der Speicher 212 und das automatische Speicherbereinigungsmodul 210 Hardware zum Durchführen der unten beschriebenen Vorgänge. In einigen Ausführungsformen sind das Datenempfangsmodul 202, die Speichersteuereinrichtung 204, der Speicher 212 und das automatische Speicherbereinigungsmodul 210 Sätze von Anweisungen, die von einem Prozessor ausführbar sind, oder in einem oder mehreren maßgeschneiderten Prozessoren enthaltene Logik, um die jeweiligen Funktionen bereitzustellen. In einigen Ausführungsformen sind das Datenempfangsmodul 202, die Speichersteuereinrichtung 204, der Speicher 212 und das automatische Speicherbereinigungsmodul 210 in einer Speichervorrichtung gespeichert und ein Prozessor kann auf sie zugreifen und sie ausführen, um die jeweiligen Funktionen bereitzustellen. In weiteren Ausführungsformen sind das Datenempfangsmodul 202, die Speichersteuereinrichtung 204, der Speicher 212 und das automatische Speicherbereinigungsmodul 210 zur Kooperation und Kommunikation mit einem Prozessor und anderen Komponenten des Systems 100 adaptiert. Die besondere Benennung und Aufteilung der Einheiten, Module, Routinen, Merkmale, Attribute, Methoden und anderen Aspekte sind nicht zwingend oder signifikant und die Mechanismen, die die vorliegende Offenbarung oder ihre Merkmale implementieren, können unterschiedliche Namen, Aufteilungen und/oder Formate aufweisen.
  • Das Datenempfangsmodul 202 ist ein Puffer und Software, Code oder Routinen zum Empfangen von Daten und/oder Befehlen von einer oder mehreren Einrichtungen und/oder Abrufen von Daten. In einer Ausführungsform empfängt das Datenempfangsmodul 202 einen Datenstrom (Datenpakete) von einer oder mehreren Einrichtungen und bereitet sie zur Speicherung in einer nichtflüchtigen Speichereinrichtung (z. B. den Speichereinrichtungen 110) vor. In einigen Ausführungsformen empfängt das Datenempfangsmodul 202 eingehende Datenpakete und speichert die Datenpakete zeitlich in einem Speicherpuffer (der Teil des Speichers 212 sein kann oder auch nicht).
  • Das Datenempfangsmodul 202 empfängt eingehende Daten und/oder ruft Daten aus einem oder mehreren Datenspeichern wie dem Speicher 212 und Speichereinrichtungen 110 des Systems 100 ab, ist aber nicht auf diese beschränkt. Eingehende Daten können einen Datenstrom und/oder einen Befehl enthalten, sind aber nicht darauf beschränkt. Der Datenstrom kann einen Satz von Datenblöcken (z. B. aktuelle Datenblöcke eines neuen Datenstroms, bestehende Datenblöcke aus dem Speicher usw.) enthalten. Die Sätze von Datenblöcken (z. B. des Datenstroms) können mit Dokumenten, Dateien, E-Mails, Nachrichten, Blogs und/oder beliebigen Anwendungen, die von einem maßgeschneiderten Prozessor ausgeführt und gerendert werden und/oder im Speicher gespeichert sind, assoziiert sein, sind aber nicht darauf beschränkt. Der Befehl kann eine Schreibvorgangsanforderung enthalten, die mit aktuellen Datenblöcken eines neuen Datenstroms assoziiert ist, zum Beispiel einen Schreibbefehl, ist aber nicht darauf beschränkt. In einigen Ausführungsformen kann das Datenempfangsmodul 202 den Befehl zur Ausführung an die Speichersteuereinrichtung 204 übertragen.
  • Die Speichersteuereinrichtung 204 ist Software, Code, Logik oder Routinen zum Bereitstellen einer effizienten Datenverwaltung. Die Speichersteuereinrichtung 204 kann elektronisch kommunikativ über einen Kommunikationsbus (nicht gezeigt) zur Kooperation und Kommunikation an andere Komponenten der Speicherlogik 104 gekoppelt sein. In einigen Ausführungsformen ist die Speichersteuereinrichtung 204 ein Prozessor. Die Speichersteuereinrichtung 204 kann Datenblöcke vom Datenempfangsmodul 202 und andere Daten von der abgerufenen dynamischen Übersetzungstabelle 206 und/oder der Rückwärtsabbildung mit dynamischer Größe 208 aus dem Speicher 212 empfangen. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 eine effiziente Datenverwaltung in der Speicherlogik 104 durchführen, wie Implementieren einer Rückwärtsabbildung mit dynamischer Größe 208 für einen Schreibprozess, einen automatischen Speicherbereinigungsprozess und einen Blockkopierprozess usw. Die Prozesse der effizienten Datenverwaltung, die von der Speichersteuereinrichtung 204 durchgeführt werden, werden unten ausführlich in Bezug auf die 58 beschrieben.
  • Der Speicher 212 kann auch Anweisungen und/oder Daten speichern, die von einem maßgeschneiderten Prozessor (z. B. der Speichersteuereinrichtung 204) ausgeführt werden. In der illustrierten Ausführungsform kann der Speicher 212 eine dynamische Übersetzungstabelle 206 und eine Rückwärtsabbildung mit dynamischer Größe 208 enthalten. Der Speicher 212 ist zur Kommunikation mit den anderen Komponenten der Speicherlogik 104 an einen Bus (nicht gezeigt) gekoppelt. Die Anweisungen und/oder Daten, die im Speicher 212 gespeichert sind, können Code zur Durchführung der hier beschriebenen Techniken enthalten. Der Speicher 212 kann beispielsweise ein nichttransitorischer Speicher wie eine dynamische Speichereinrichtung mit wahlfreiem Zugriff (DRAM-Einrichtung), eine statische Speichereinrichtung mit wahlfreiem Zugriff (SRAM-Einrichtung) oder andere flüchtige Speichereinrichtungen sein.
  • Die dynamische Übersetzungstabelle 206 ist eine Tabelle mit einer Übersetzungsstruktur, die eine logische Adresse auf eine physische Adresse abbildet. In einigen Ausführungsformen kann die dynamische Übersetzungstabelle 206 im Speicher 212 gespeichert werden und von der Speichersteuereinrichtung 204 abgerufen werden, wenn sie benötigt wird. Es sollte erkannt werden, dass die dynamische Übersetzungstabelle 206 auch in anderen Speichereinrichtungen, wie den Speichereinrichtungen 110, gespeichert werden kann. In einigen Ausführungsformen kann die dynamische Übersetzungstabelle 206 gleichzeitig mit den Datenspeichervorgängen aktualisiert werden, um die neueste Übersetzung von logischer Adresse auf physische Adresse nachzuverfolgen. In den illustrierten Ausführungsformen wird die dynamische Übersetzungstabelle 206 von der Speichersteuereinrichtung 204 zum Schreiben von Datenblöcken in die Speichereinrichtungen 110, Löschen von Datenblöcken aus den Speichereinrichtungen 110 usw. verwendet. Die dynamische Übersetzungstabelle 206 kann auch von der Speichersteuereinrichtung 204 aktualisiert werden, wenn der Schreibprozess abgeschlossen ist, und im automatischen Speicherbereinigungsprozess wie unten beschrieben verwendet werden.
  • Die Rückwärtsabbildung mit dynamischer Größe 208 ist eine Abbildung mit einer Übersetzungsstruktur, die eine physische Adresse auf eine logische Adresse abbildet. In einigen Ausführungsformen kann die Rückwärtsabbildung mit dynamischer Größe 208 im Speicher 212 gespeichert werden und von der Speichersteuereinrichtung 204 abgerufen werden, wenn sie benötigt wird. Es sollte erkannt werden, dass die Rückwärtsabbildung mit dynamischer Größe 208 auch in anderen Speichereinrichtungen, wie den Speichereinrichtungen 110, gespeichert werden kann. In einigen Ausführungsformen wird die Rückwärtsabbildung mit dynamischer Größe 208 gleichzeitig mit den Datenspeichervorgängen aktualisiert, um die neueste Übersetzung von physischer Adresse auf logische Adresse nachzuverfolgen. In den illustrierten Ausführungsformen wird die Rückwärtsabbildung mit dynamischer Größe 208 von der Speichersteuereinrichtung 204 beim Schreiben von Datenblöcken in die Speichereinrichtungen 110 und bei der automatischen Speicherbereinigung verwendet, wie unten beschrieben. Die Rückwärtsabbildung mit dynamischer Größe 208 kann auch von der Speichersteuereinrichtung 204 aktualisiert werden, wenn der Schreibprozess abgeschlossen ist. Das Layout der Rückwärtsabbildung mit dynamischer Größe 208 wird unten ausführlich in Bezug auf 3 beschrieben.
  • Das automatische Speicherbereinigungsmodul 210 ist Software, Code, Logik oder Routinen zum Durchführen einer automatischen Speicherbereinigung an den Speichereinrichtungen 110. Das automatische Speicherbereinigungsmodul 210 kann elektronisch kommunikativ über einen Kommunikationsbus (nicht gezeigt) zur Kooperation und Kommunikation an andere Komponenten der Speicherlogik 104 gekoppelt sein. Das automatische Speicherbereinigungsmodul 210 führt periodisch eine automatische Datenspeicherbereinigung an den Speichereinrichtungen 110 des Systems 100 durch. Das automatische Speicherbereinigungsmodul 210 kann sich beim Entscheiden, ob ein Datenblock gültig ist und eine Verlagerung erfordert, auf die Rückwärtsabbildung mit dynamischer Größe 208 beziehen. Der Mechanismus vergleicht zwei Einträge in der dynamischen Übersetzungstabelle 206 und der Rückwärtsabbildung mit dynamischer Größe 208 für diesen Datenblock; wenn gefunden wird, dass der physische Block in beiden Abbildungen der gleiche ist, dann wird ermittelt, dass der Datenblock gültig ist und eine Verlagerung im automatischen Speicherbereinigungsprozess erfordert.
  • Das automatische Speicherbereinigungsmodul 210 kann eine Aktualisierung der Rückwärtsabbildung mit dynamischer Größe für ein Abbildungssegment (z. B. automatische Speicherbereinigung an der Rückwärtsabbildung mit dynamischer Größe 208) durchführen. Die Zeitgebung zur Ermittlung, ob eine Aktualisierung der Rückwärtsabbildung mit dynamischer Größe durchgeführt werden soll, kann variieren und je nach Bedarf definiert werden. In einigen Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 periodisch ermitteln, ob eine automatische Speicherbereinigung am Rückwärtsabbildungssegment mit dynamischer Größe durchgeführt werden soll. In anderen Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 als Reaktion auf den Abschluss der automatischen Speicherbereinigung ermitteln, ob eine automatische Speicherbereinigung am Rückwärtsabbildungssegment mit dynamischer Größe durchgeführt werden soll. In der illustrativen Ausführungsform kann das automatische Speicherbereinigungsmodul 210 Informationen eines Abbildungssegments aus einem Segment-Header abrufen.
  • Nur zum illustrierten Zweck sollte verstanden werden, dass ein Segment ein fester Bereich von zusammenhängenden physischen Blöcken auf den Speichermedien 110 ist, die sequenziell gefüllt und gemeinsam gelöscht werden. Ein Abbildungssegment kann ein spezielles Segment bzw. spezielle Segmente sein, das bzw. die eine dynamische Übersetzungstabelle 206 und eine Rückwärtsabbildung mit dynamischer Größe 208 speichert bzw. speichern. In der Baumstruktur der Rückwärtsabbildung mit dynamischer Größe 208 kann der Segment-Header (z. B. ein L1-Knoten 304 in der Rückwärtsabbildung mit dynamischer Größe 208, wie in 3 illustriert) eine höhere Knotenebene als der erweiterte Knoten (z. B. ein L0-Knoten 306 in der Rückwärtsabbildung mit dynamischer Größe 208, wie in 3 illustriert) sein, der die Metainformationen eines oder mehrerer erweiterter Knoten speichert. Die Informationen können eine Verwendungsanzahl der Schreibblöcke des Abbildungssegments enthalten, sind jedoch nicht darauf beschränkt. Ein Schreibblock kann ein Datenkorn oder ein Sektor sein, was die kleinste Einheit ist, auf die ein logischer Block reduziert werden kann. Als Beispiel, wenn die physische Blockgröße 4096 Bytes beträgt, kann er acht (8) reduzierte logische 512-Byte-Blöcke halten. In einigen Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 die Verwendungsanzahl der Schreibblöcke des Abbildungssegments auf Basis der aus dem Segment-Header abgerufenen Informationen ermitteln. In weiteren Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 auf Basis der Verwendungsanzahl des Abbildungssegments ermitteln, ob das Abbildungssegment Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt. Zum Beispiel angenommen, dass ein Abbildungssegment 8 Schreibblöcke enthält, wenn es eine vordefinierte Anzahl (z. B. 6) von ungültigen Schreibblöcken gibt, ermittelt es, dass das Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt. Es sollte erkannt werden, dass die obigen Ziffern nur zu Illustrationszwecken gegeben werden und verschiedene Zahlen und verschiedene vordefinierte Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe verwendet werden können.
  • Wenn das automatische Speicherbereinigungsmodul 210 ermittelt, dass das Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt, kann das automatische Speicherbereinigungsmodul 210 den Aktualisierungsprozess für Rückwärtsabbildungen mit dynamischer Größe durchführen, z. B. eine automatische Speicherbereinigung für das Abbildungssegment. In weiteren Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 Informationen des Abbildungssegments im Segment-Header aktualisieren, wenn der Aktualisierungsprozess für Rückwärtsabbildungen mit dynamischer Größe abgeschlossen ist.
  • 3 ist eine beispielhafte grafische Repräsentation, die ein Layout einer Rückwärtsabbildung mit dynamischer Größe 208, wie es von der Speicherlogik 104 gesehen wird, nach den hierin beschriebenen Techniken illustriert. Wie in 3 gezeigt, kann die Rückwärtsabbildung mit dynamischer Größe 208 eine Baumstruktur sein und die Knoten des Baums können in Form eines Radixbaums implementiert sein. In den illustrierten Ausführungsformen kann die Rückwärtsabbildung mit dynamischer Größe 208 einen L2-Knoten 302, einen L1-Knoten 304, einen L0-Knoten 306, einen L0e-Abbildungsknoten 308 und einen L0-Knotenpuffer 310 enthalten. Es sollte erkannt werden, dass 3 sowie die anderen Figuren, die verwendet werden, um eine Ausführungsform zu illustrieren, und eine Angabe einer Bezugszahl oder Bezugsziffer, zum Beispiel „304”, ein bestimmter Verweis auf das Element oder die Komponente ist, die durch diese Bezugsziffer bezeichnet wird. Im Fall, dass eine Bezugsziffer im Text nach mehrfacher Terminologie erscheint, zum Beispiel „L1-Knoten 304”, sollte erkannt werden, dass eine solche ein allgemeiner Verweis auf verschiedene Ausführungsformen des Elements oder der Komponente ist, das bzw. die diese allgemeine Bezugsziffer trägt.
  • Der in 3 gezeigte L2-Knoten 302 ist ein Wurzelknoten oder ein übergeordneter Knoten der Baumstruktur der Rückwärtsabbildung mit dynamischer Größe. In einigen Ausführungsformen können höhere Ebenen von Knoten als L2-Knoten 302 in der Baumstruktur der Rückwärtsabbildung mit dynamischer Größe verwendet werden. Es sollte erkannt werden, dass mehrere L2-Knoten 302 verwendet werden können. Zum Zweck dieser Anmeldung werden die Funktionen und Vorgänge, die in Verbindung mit der Rückwärtsabbildung mit dynamischer Größe 208 durchgeführt werden, im Kontext eines einzigen L2-Knotens beschrieben.
  • Der in 3 gezeigte L1-Knoten 304 ist ein untergeordneter Knoten des L2-Knotens 302. In einigen Ausführungsformen kann der L1-Knoten 304 die Informationen eines Abbildungssegments speichern, d. h., der L1-Knoten wird als ein Segment-Header verwendet. Ein Abbildungssegment kann ein spezielles Segment bzw. spezielle Segmente sein, das bzw. die eine dynamische Übersetzungstabelle 206 und eine Rückwärtsabbildung mit dynamischer Größe 208 speichert bzw. speichern. In der Baumstruktur der Rückwärtsabbildung mit dynamischer Größe kann der Segment-Header (z. B. der L1-Knoten 304 in der Rückwärtsabbildung mit dynamischer Größe 208, wie in 3 illustriert) eine höhere Knotenebene als der erweiterte Knoten (z. B. der L0-Knoten 306 in der Rückwärtsabbildung mit dynamischer Größe 208, wie in 3 illustriert) sein, der die Informationen des Knotens L0 306 der Rückwärtsabbildung mit dynamischer Größe 208 speichert. Die Informationen können eine Verwendungsanzahl der Schreibblöcke des Abbildungssegments enthalten, sind jedoch nicht darauf beschränkt. Ein Schreibblock kann ein Datenkorn oder ein Sektor sein, was die kleinste Einheit ist, auf die ein logischer Block reduziert werden kann. Als Beispiel, wenn die physische Blockgröße 4096 Bytes beträgt, kann er acht (8) reduzierte logische 512-Byte-Blöcke halten.
  • In der illustrierten Ausführungsform, wie in 3 gezeigt, wird der Blattknoten der Baumstruktur der Rückwärtsabbildung mit dynamischer Größe 208 als der L0-Knoten 306 bezeichnet. In einigen Ausführungsformen enthält ein L0-Knoten 306 Abbildungen für die physischen Blöcke eines Segments. Hier kann ein Segment ein fester Bereich von zusammenhängenden physischen Blöcken auf den Speichereinrichtungen 110 sein, die sequenziell gefüllt und gemeinsam gelöscht werden. Es sollte erkannt werden, dass ein Segment eine feste Anzahl an physischen Blöcken enthalten kann, da seine Größe fixiert ist. Zum Beispiel angenommen, dass ein Segment 32 K Bytes und die physische Blockgröße 4096 Bytes ist, dann enthält das Segment acht (8) physische Blöcke. In diesem Fall enthält ein L0-Knoten 306 die Abbildungen für diese acht (8) physischen Blöcke in diesem Segment.
  • Um die dynamische Größenbemessung der L0-Knoten 306 (und deshalb die dynamische Größenbemessung der gesamten Rückwärtsabbildung) zu unterstützen, wird die Baumstruktur der Rückwärtsabbildung mit dynamischer Größe 208 auf eine weitere Ebene erweitert, die als der L0e-Abbildungsknoten 308 in 3 gezeigt wird. Der L0e-Abbildungsknoten 308 wird auch als L0-Abbildungseingangsknoten bezeichnet und beide Bezeichnungen können in der vorliegenden Offenbarung austauschbar verwendet werden. Während eines Speichernachschlagevorgangs nimmt die Radixbaumsuche nach einem physischen Block die Suche zum Eintrag im L0e-Abbildungsknoten 308. Wie in 3 gezeigt, enthält der L0e-Abbildungsknoten 308 eine Vielzahl von Einträgen: Eintrag 3080, Eintrag 3081, Eintrag 3082 und Eintrag 3083. Es sollte erkannt werden, dass andere Anzahlen von Einträgen eingesetzt werden können und im Umfang der vorliegenden Offenbarung liegen, obwohl nur 4 Einträge in 3 gezeigt werden. In den illustrierten Ausführungsformen ist der Eintrag 3083 leer und wird sequenziell gefüllt. In einigen Ausführungsformen entspricht jeder dieser Einträge einem physischen Block. Deshalb sind die L0e-Abbildungsknoten 308 Knoten mit fester Größe und die Anzahl von Einträgen ist gleich der Anzahl der physischen Blöcke in einem Segment. Unter Verwendung des gleichen Beispiels, das oben beschrieben wurde, wird angenommen, dass ein Segment in der illustrierten Ausführungsform acht (8) physische Blöcke enthält. Jeder Eintrag der L0-Abbildungsknoten 308 weist die Abbildungsdaten für einen der acht (8) physischen Blöcke auf. Deshalb können die L0e-Abbildungknoten 308 8 Einträge aufweisen. Wie in 3 gezeigt, werden diese Einträge sequenziell gefüllt, wenn die physischen Blöcke, die sie repräsentieren, sequenziell gefüllt werden. Diese Funktion verbessert die Örtlichkeit für die Rückwärtsabbildung mit dynamischer Größe 208 und ist für die Gesamtleistung vorteilhaft, insbesondere den automatischen Speicherbereinigungsvorgang an der Speichereinrichtung. Fachleute werden erkennen, dass die Segmentgröße und die physische Blockgröße, die oben beschrieben wurden, nur zur Illustration als Beispiele verwendet wurden. Verschiedene andere Größen für das Segment und die physischen Blöcke werden als im Umfang der vorliegenden Offenbarung angesehen.
  • Nehmen wir nur zu Zwecken der Beschreibung an, dass die physische Blockgröße wie in 3 illustriert 4096 Bytes beträgt; und es sollte erkannt werden, dass verschiedene Größen der physischen Blöcke verwendet werden können. Die physische Blocknummer kann als PBN abgekürzt werden und die logische Blocknummer kann als LBN in 3 sowie in anderen Figuren abgekürzt werden.
  • Wie in 3 illustriert, beträgt die Größe jedes der Einträge der L0e-Abbildungsknoten 308 32 Bit mit einem Format von <N:E>, wobei „N” die Anzahl der für diesen physischen Block benötigten Abbildungen ist und „E” der Eintragsindex der ersten Abbildungen dieses physischen Blocks im L0-Knoten 306 ist. Genauer stellt „N” die Anzahl der Abbildungen dar, die für einen bestimmten physischen Block benötigt werden, der durch diesen Eintrag repräsentiert ist. Die Anzahl der Abbildungen, die für einen bestimmten physischen Block benötigt werden, kann auf Basis der Größe der Datenblöcke und der Größe des physischen Blocks berechnet werden. Wenn beispielsweise ein Eingangsdatenstrom einen oder mehrere Datenblöcke enthält, von denen jeder nach einer Komprimierung die Größe von 1024 Bytes aufweist, und vorbereitet, den einen oder die mehreren Datenblöcke in einem physischen Block 0 (PBN = 0) zu speichern; und wenn die Größe des physischen Blocks 4096 Bytes beträgt, dann benötigt die Baumstruktur der Rückwärtsabbildung mit dynamischer Größe 208 vier (4) Abbildungen für diesen physischen Block 0, wenn sie diesen Datenstrom speichert. Fachleute werden erkennen, dass die physische Blockgröße und die Datenblockgröße, die oben beschrieben wurden, nur zur Illustration als Beispiele verwendet wurden. Verschiedene andere Größen für die physischen Blöcke und die Datenblöcke (aufgrund verschiedener Komprimierungsgrade) werden als im Umfang der vorliegenden Offenbarung angesehen. Wie in 3 gezeigt, repräsentiert der Eintrag 3080 den physischen Block 0 und „N” dieses Eintrags 3080 ist auf Basis des illustrierten Beispiels vier (4). Es sollte erkannt werden, dass die Anzahl der Abbildungen, die für einen physischen Block benötigt werden, auf Basis der Größe der Datenblöcke aufgrund verschiedener Komprimierungsausmaße variieren kann, die im physischen Block gespeichert werden müssen. Wenn die Größe des Datenblocks, der im physischen Datenblock 1 gespeichert werden muss, beispielsweise 2048 Bytes beträgt, dann ist die für diesen physischen Block 1 benötigte Anzahl der Abbildungen zwei (2). Wie in 3 gezeigt, repräsentiert der Eintrag 3081 den physischen Block 1 und „N” dieses Eintrags 3081 ist auf Basis des obigen Beispiels zwei (2). Es sollte auch erkannt werden, dass die Datenblöcke auf Basis des Komprimierungsverhältnisses verschiedene Größen aufweisen können und dass die im gleichen physischen Block gespeicherten Datenblöcke verschiedene Größen aufweisen können. Wenn der verfügbare Platz in einem physischen Block nicht für den nächsten eingehenden Datenblock ausreicht, kann das System 100 in einigen Ausführungsformen den eingehenden Datenblock über die Grenze des physischen Blocks hinaus speichern.
  • Wie oben besprochen ist „E” im <N:E> für einen Eintrag der Eintragsindex der ersten Abbildungen im L0-Knoten 306. Genauer stellt „E” die relative Startposition von Abbildungen für einen physischen Block im L0-Knoten 306 dar. Wie in der Flashspeicherbranche bekannt, werden die physischen Blöcke der Speichereinrichtungen sequenziell gefüllt. Es ist verständlich, dass der erste Eintrag des L0e-Abbildungsknotens 308, d. h. der Eintrag 3080, die physische Blocknummer 0 des Segments repräsentiert und die Startposition der Abbildungen für den physischen Block 0 0 ist. Deshalb ist der Eintragsindex „E” des Eintrags 3080 „0”. Wie oben besprochen beträgt die Anzahl der für den physischen Block 0 benötigten , das bedeutet, dass der physische Block 0 4 Abbildungen aufnimmt. Diese 4 Abbildungen beginnen bei 0 und sind 0, 1, 2 und 3. Da die physischen Blöcke der Speichereinrichtungen sequenziell gefüllt werden, beginnen die Abbildungen für den nächsten physischen Block 1 bei Nummer 4. In der illustrierten Ausführungsform repräsentiert der Eintrag 3081 den physischen Block 1 in einem Segment. Deshalb ist „E” des Eintrags 3081 „4”. Wie oben besprochen ist „N” des Eintrags 3081 2, deshalb beginnen diese 2 Abbildungen bei 4 und sind 4 und 5. Sequenziell ist „E” des nächsten Eintrags 3082, der auf den Eintrag 3081 folgt, 6. Und wie in 3 gezeigt, kann der Eintrag 3802 2 Abbildungen verbrauchen, die 6 und 7 sein sollten. Der nächste Eintrag 3803 ist leer und wird als Nächstes gefüllt. Nach der vorangehenden Analyse wird „E” des Eintrags 3803 8 sein. Das bedeutet, dass die erste Abbildung für den physischen Block 3 eine Startpositionsadresse von 8 aufweisen wird.
  • Es wird wieder auf den L0-Knoten 306 in 3 Bezug genommen, der die Abbildungen für physische Blöcke eines Segments enthält. Wie in 3 gezeigt, besteht der L0-Knoten 306 aus einer ganzzahligen Anzahl an Stücken fester Größe, die L0-Knotenpuffer 310 genannt werden. In einigen Ausführungsformen werden diese Stücke auf Anforderung aus einem vorab reservierten Bestand reserviert. Dadurch wird die dynamische Größenbemessung des L0-Knotens 306 und deshalb die dynamische Größenbemessung der gesamten Rückwärtsabbildung erreicht. Diese Stücke sind von der Größe eines Schreibblocks, was die minimal programmierbare Einheit der Speichermedien ist.
  • Der L0-Knotenpuffer 310 enthält eine Vielzahl von Puffereinträgen: Puffereintrag 3100, Puffereintrag 3101, Puffereintrag 3102, Puffereintrag 3103, Puffereintrag 3104, Puffereintrag 3105, Puffereintrag 3106, Puffereintrag 3107 und Puffereintrag 3108, wie in der 3 gezeigt. Es sollte erkannt werden, dass andere Anzahlen von Einträgen eingesetzt werden können und im Umfang der vorliegenden Offenbarung liegen, obwohl nur 9 Puffereinträge in 3 gezeigt werden. In den illustrierten Ausführungsformen ist der Puffereintrag 3108 leer und wird sequenziell gefüllt. In einigen Ausführungsformen ist jeder dieser Einträge mit einer Abbildung für einen Datenblock assoziiert. Deshalb sollte erkannt werden, dass die Anzahl an Abbildungen für einen physischen Block gleich der Anzahl der Puffereinträge ist, durch die dieser physische Block repräsentiert wird. Wie zum Beispiel in 3 gezeigt, ist der Eintrag 3080, der die physische Blocknummer 0 repräsentiert, <4:0>, was bedeutet, dass er 4 Abbildungen benötigt, um die physische Blocknummer 0 zu repräsentieren; deshalb sind vier (4) Puffereinträge für die physische Blocknummer 0 reserviert, welche die Puffereinträge 3100, 3101, 3102 und 3103 sind.
  • Wie in 3 illustriert, weist der Puffereintrag ein Format von <L:P:S:N> auf, wobei „L” die logische Blocknummer (LBN) ist, „P” die physische Blocknummer (PBN) ist, „S” den Startsektor im physischen Block repräsentiert und „N” die Anzahl der Sektoren im physischen Block repräsentiert.
  • Das „L” der Puffereinträge repräsentiert die logische Blocknummer, in der der Datenblock gespeichert ist. In einigen Ausführungsformen wird die logische Blocknummer auf Basis der im Schreibbefehl enthaltenen Informationen ermittelt.
  • Das „P” der Puffereinträge repräsentiert die physische Blocknummer, in der der Datenblock gespeichert ist. Es sollte erkannt werden, dass für einen bestimmten physischen Block das „P” über die Puffereinträge, die er besetzt, gleich ist. Der physische Block 0 weist zum Beispiel 4 Abbildungen auf, die die Puffereinträge 3100, 3101, 3102 und 3103 sind. Jedes „P” in diesen Puffereinträgen sollte die gleiche PBN sein, d. h. null (0). Gleichermaßen sollte das „P” in den Puffereinträgen 3104 und 3105 die gleiche PBN sein, d. h. eins (1).
  • Das „S” der Puffereinträge repräsentiert den Startsektor in einem physischen Block. Wie oben besprochen, repräsentiert jeder der Puffereinträge eine Abbildung. Die erste Abbildung eines physischen Blocks besetzt zum Beispiel die ersten ganzzahligen Zahlen von Sektoren des physischen Blocks und „S” sollte für diese null (0) sein. Die zweite Abbildung des gleichen physischen Blocks beginnt dort, wo die erste Abbildung endet, und das „S” für diese kann auf Basis des „S” und „N” der ersten Abbildung des physischen Blocks ermittelt werden.
  • Das „N” der Puffereinträge repräsentiert die Anzahl der Sektoren, die diese Abbildung im physischen Block verbraucht. Es sollte erkannt werden, dass „N” für eine Abbildung auf Basis der Größe des komprimierten Datenblocks und der Größe der Sektoren in diesem physischen Block berechnet werden kann. Zum Beispiel angenommen, dass ein komprimierter Datenblock eine Größe von 1024 Bytes aufweist (der vor der Speicherung mit einen Komprimierungsverhältnis von 4 komprimiert werden kann, beispielsweise von 4096 Bytes auf 1024 Bytes) und die Größe eines Sektors 512 Bytes beträgt, dann kann dieser komprimierte Datenblock zwei (2) Sektoren zur Speicherung verbrauchen. Das bedeutet, dass „N” in der Abbildung (Puffereintrag) für diesen Datenblock 2 ist. Wenn in anderen Ausführungsformen die Größe des eingehenden komprimierten Datenblocks (der vor der Speicherung mit einem Komprimierungsverhältnis von 2 komprimiert werden kann, beispielsweise von 4096 Bytes auf 2048 Bytes) und die Größe eines Sektors 512 Bytes beträgt, dann kann dieser komprimierte Datenblock vier (4) Sektoren zur Speicherung verbrauchen. Es sollte erkannt werden, dass die Größe von komprimierten Datenblöcken, die im gleichen physischen Block gespeichert werden, verschieden sein kann. Wenn der verfügbare Platz in einem physischen Block nicht für den nächsten eingehenden Datenblock ausreicht, kann das System 100 in einigen Ausführungsformen den eingehenden Datenblock über die Grenze des physischen Blocks hinaus speichern. Für eine physische Blocknummer 0 enthält zum Beispiel der eingehende Datenstrom mehrere komprimierte Datenblöcke (einen ersten, zweiten und dritten), die jeweils Größen von 2048 Bytes, 1024 Bytes und 2048 Bytes aufweisen. Der erste Datenblock von 2048 Bytes kann vier (4) Sektoren verbrauchen und die Abbildung für diesen kann <L:P:0:4> sein, wobei L die logische Blocknummer repräsentiert und P die physische Blocknummer repräsentiert und diese nach der obigen Beschreibung ermittelt werden können.
  • Hier ist „S” für diese ersten 2048 Bytes des Datenblocks null (0) und „N” dafür ist vier (4), wie oben besprochen. Der zweite Datenblock von 1024 Bytes kann zwei (2) Sektoren verbrauchen und die Abbildung für diesen kann <L P:4:2> sein, wobei „S” dafür vier (4) ist, was bedeutet, dass der Startsektor dafür 4 ist. Das ist verständlich, da der erste Datenblock bereits 4 Sektoren einnahm, die 0, 1, 2 und 3 sind. „N” für diesen zweiten Datenblock ist zwei (2), was bedeutet, dass er 2 Sektoren zur Speicherung verbraucht. Wie oben besprochen, erlaubt die vorliegende Offenbarung, dass verschiedene Datenblöcke im gleichen physischen Block einen physischen Platz unterschiedlicher Größe aufweisen. Als Nächstes auf das gleiche Beispiel Bezug nehmend, ist der dritte Datenblock im eingehenden Datenstrom 2048 Bytes und er nimmt zur Speicherung 4 Sektoren ein, wie oben besprochen. Wie jedoch oben besprochen, wird die Größe eines physischen Blocks als 4096 Bytes angenommen und die ersten zwei Datenblöcke verbrauchen bereits 3072 Bytes. Dadurch bleiben 1024 Bytes in diesem physischen Block verfügbar, was für diesen gesamten dritten Datenblock nicht ausreicht. In einigen Ausführungsformen können die Datenblöcke über die Grenze des physischen Blocks hinweg gespeichert werden. Deshalb kann die Abbildung für den dritten Datenblock <L P:6:4> sein, wobei „S” 6 ist und „N” 4 ist. Wie oben besprochen, reicht der verfügbare Platz in diesem physischen Block nicht für den dritten Datenblock aus; deshalb nimmt er 2 Sektoren von diesem physischen Block und 2 Sektoren vom nächsten zu speichernden physischen Block. Es sollte erkannt werden, dass die erste Abbildung im zweiten physischen Block widerspiegeln soll, dass die ersten 1024 Bytes (2 Sektoren) des zweiten physischen Blocks belegt sind; deshalb sollte die Abbildung <L P:2:N> sein. Das bedeutet, dass die erste Abbildung im zweiten physischen Block vom Sektor 2 beginnt, was widerspiegelt, dass die ersten 2 Sektoren dieses physischen Blocks bereits belegt wurden. Es sollte erkannt werden, dass das obige Beispiel nur ein Beispiel ist und nicht in 3 gezeigt wird.
  • Die hier beschriebenen Techniken sind nützlich, da sie eine arbeitslastbasierte Rückwärtsabbildung mit dynamischer Größe 208 einführen. Wie oben besprochen kann ein physischer Block mehrere logische Blöcke in reduzierter Form mit Speichereinrichtungen 110 speichern, die eine Datenreduktion unterstützen. Deshalb kann auf Basis des unterschiedlichen Komprimierungsverhältnisses jeder physische Block eine unterschiedliche Anzahl an Abbildungen benötigen. Deshalb können sich bei den L0-Knoten 306, obwohl jeder davon die gleiche Anzahl an physischen Blöcken repräsentiert, die Größen der L0-Knoten 306 voneinander unterscheiden, da sie je nach Bedarf unterschiedliche Anzahlen an L0-Knoten-Puffereinträgen enthalten können. Deshalb kann die Gesamtgröße der Rückwärtsabbildung mit dynamischer Größe 208 auf Basis der Arbeitslast variabel sein.
  • 4 ist eine beispielhafte grafische Repräsentation, die ein Layout der Blockkopie, die die Rückwärtsabbildung mit dynamischer Größe 208 unterstützt, nach den hierin beschriebenen Techniken illustriert. Die Blockkopie ist ein Mechanismus, um einen Bereich logischer Blöcke an einen anderen Bereich logischer Blöcke zu kopieren. Um die Blockkopie in dieser hier beschriebenen Implementierung der Rückwärtsabbildung mit dynamischer Größe 208 zu unterstützen, kann das variable Größenmerkmal des L0-Knotens 306 nützlich sein. Wie in Bezug auf 3 beschrieben, kann der L0-Knoten über die maximale Anzahl an Abbildungen erweitert werden, die ein Segment aufweisen kann. Diese neuen Abbildungen können nach der Blockkopie für den neuen Bereich logischer Blöcke verwendet werden, auf die der physische Block zeigt.
  • Wie in 4 gezeigt, kann der L0-Pufferknoten 310 eine ganzzahlige Anzahl von Puffereinträgen enthalten. Wenn das System 100 eine Anforderung empfängt, eine Vielzahl von Datenblöcken von einem ersten Bereich logischer Adressen in einen zweiten Bereich logischer Adressen zu kopieren, kann das System 100 die Rückwärtsabbildung mit dynamischer Größe 208 aktualisieren, um den Blockkopiervorgang anzuzeigen. Zum Beispiel angenommen, dass die Blockkopieranforderung vorhat, Daten von einer logischen Blocknummer 5 in eine logische Blocknummer 8 zu kopieren, dann kann die Rückwärtsabbildung mit dynamischer Größe 208 aktualisiert werden, um die neue Abbildung von den physischen Blöcken der Daten zur logischen Blocknummer 8 anzuzeigen. Wie in 4 gezeigt, kann der Puffereintrag 3105 aktualisiert werden, um die zusätzlichen Informationen in einem Format von <FP:NR> zu enthalten, wobei „FP” den Vorwärtszeiger repräsentiert und „NR” die Anzahl von Verweisen repräsentiert. Der Blockkopierprozess wird unten ausführlich in Bezug auf 8 beschrieben.
  • 5A und 5B sind Ablaufdiagramme eines beispielhaften Verfahrens 500 zum Generieren einer Rückwärtsabbildung mit dynamischer Größe 208 für einen Schreibprozess in eine Speichereinrichtung 110 nach den hierin beschriebenen Techniken. Das Verfahren 500 kann mit einem Empfangen 502 eines Datenstroms beginnen, der einen oder mehrere Datenblöcke enthält. In einer Ausführungsform empfängt das Datenempfangsmodul 202 einen Datenstrom (Datenpakete) von einer oder mehreren Einrichtungen (nicht gezeigt) und bereitet sie zur Speicherung in den Speichereinrichtungen 110 vor. Die eingehenden Daten können einen Datenstrom und/oder einen Befehl enthalten, sind aber nicht darauf beschränkt. Der Datenstrom kann einen Satz von Datenblöcken (z. B. aktuelle Datenblöcke eines neuen Datenstroms) enthalten. In einigen Ausführungsformen ist der vom Datenempfangsmodul 202 empfangene Datenstrom in komprimierter Form. In anderen Ausführungsformen wird der vom Datenempfangsmodul 202 empfangene Datenstrom zur Komprimierung vor dem Speicherprozess an die Speichersteuereinrichtung 204 übertragen. In einigen Ausführungsformen kann der in Schritt 502 durchgeführte Vorgang vom Datenempfangsmodul 202 in Kooperation mit einer oder mehreren anderen Komponenten des Systems 100 durchgeführt werden.
  • Als Nächstes fährt das Verfahren 500 als Reaktion auf ein Empfangen eines Datenstroms in Schritt 502 mit einem Abrufen 504 der dynamischen Übersetzungstabelle 206 fort. In einer Ausführungsform ruft die Speichersteuereinrichtung 204 die dynamische Übersetzungstabelle 206 aus dem Speicher 212 ab. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 den eingehenden Datenstrom bei Bedarf vor dem Speicherprozess komprimieren.
  • Als Nächstes kann das Verfahren 500 mit einem Identifizieren 506 der physischen Adresse und der logischen Adresse auf Basis der dynamischen Übersetzungstabelle 206 fortfahren, um den einen oder die mehreren Datenblöcke des empfangenen Datenstroms zu speichern. Es sollte erkannt werden, dass der eine oder die mehreren Datenblöcke des empfangenen Datenstroms vor dem Speicherprozess komprimiert werden können. In einer Ausführungsform identifiziert die Speichersteuereinrichtung 204 die physische Adresse und die logische Adresse, um den einen oder die mehreren Datenblöcke zu speichern.
  • Das Verfahren 500 kann dann die Datenblöcke in den Speichereinrichtungen 110 speichern 508 und die dynamische Übersetzungstabelle 206 aktualisieren, um die physische Adresse und die logische Adresse für die Datenblöcke aufzunehmen. In einer Ausführungsform speichert die Speichersteuereinrichtung 204 die Datenblöcke in den Speichereinrichtungen 110 und aktualisiert die dynamische Übersetzungstabelle 206, um die Abbildungen für die Datenblöcke von den logischen Adressen auf die physischen Adressen aufzunehmen. In einigen Ausführungsformen speichert die Speichersteuereinrichtung 204 auch die dynamische Übersetzungstabelle 206 im Speicher 212.
  • Als Nächstes kann das Verfahren 500 mit einem Ermitteln 510 der Größe der Datenblöcke fortfahren. In einer Ausführungsform ermittelt die Speichersteuereinrichtung 204 die Größe der Datenblöcke. Wieder auf 3 Bezug nehmend, kann die Größe des Datenblocks verwendet werden, um die Anzahl der Abbildungen zu ermitteln, die für einen bestimmten physischen Block benötigt werden. Außerdem kann die Größe des Datenblocks verwendet werden, um die Anzahl der Sektoren zu ermitteln, die jeder der Puffereinträge in einem physischen Block besetzt.
  • Das Verfahren 500 kann dann eine Anzahl an Abbildungen, die für einen physischen Block benötigt werden, auf Basis der Größe eines Datenblocks (nach Komprimierung) und der Größe eines physischen Blocks ermitteln 512. Es sollte erkannt werden, dass die Größe des Datenblocks auf Basis des Komprimierungsverhältnisses variieren kann, wenn er komprimiert wurde. In einer Ausführungsform ermittelt die Speichersteuereinrichtung 204 die Anzahl der Abbildungen, die für einen physischen Block benötigt werden, auf Basis der Größe eines Datenblocks (oder der komprimierten Größe eines Datenblocks) und der Größe eines physischen Blocks. Wenn ein Eingangsdatenstrom zum Beispiel einen oder mehrere Datenblöcke enthält, die nach der Komprimierung eine Größe von 1024 Bytes aufweisen (da die logische Blockgröße bei 4096 Bytes beginnt und auf 1024 Bytes komprimiert wird) und zur Speicherung im physischen Block 0 (PBN = 0) vorbereitet sind; und wenn die Größe des physischen Blocks 4096 Bytes beträgt, dann benötigt die Baumstruktur der Rückwärtsabbildung mit dynamischer Größe 208 vier (4) Abbildungen für diesen physischen Block 0, wenn sie diesen Datenstrom speichert. Es sollte erkannt werden, dass die Anzahl der Abbildungen, die für einen physischen Block benötigt werden, das „N” in den L0e-Abbildungsknoten 308 ist, wie in 3 illustriert. Es sollte erkannt werden, dass die Datenblöcke auf Basis des Komprimierungsverhältnisses verschiedene Größen aufweisen können und dass die im gleichen physischen Block gespeicherten Datenblöcke verschiedene Größen aufweisen können. Wenn der verfügbare Platz in einem physischen Block nicht für den nächsten eingehenden Datenblock ausreicht, kann das System 100 in einigen Ausführungsformen den eingehenden Datenblock über die Grenze des physischen Blocks hinaus speichern.
  • Das Verfahren 500 kann dann die Rückwärtsabbildung mit dynamischer Größe 208 abrufen 514. In einigen Ausführungsformen kann die Rückwärtsabbildung mit dynamischer Größe 208 im Speicher 212 gespeichert werden und von der Speichersteuereinrichtung 204 abgerufen werden, wenn sie benötigt wird. Es sollte erkannt werden, dass die Rückwärtsabbildung mit dynamischer Größe 208 auch in anderen Speichereinrichtungen, wie den Speichereinrichtungen 110, gespeichert werden kann. In einigen Ausführungsformen wird die Rückwärtsabbildung mit dynamischer Größe 208 gleichzeitig mit den Datenspeichervorgängen aktualisiert, um die neueste Übersetzung von physischer Adresse auf logische Adresse nachzuverfolgen.
  • Als Nächstes kann das Verfahren 500 fortfahren, indem es die relative Startposition in der Rückwärtsabbildung mit dynamischer Größe 208 ermittelt, um Abbildungen der Datenblöcke zu speichern. In einer Ausführungsform ermittelt die Speichersteuereinrichtung 204 die relative Startposition in der Rückwärtsabbildung mit dynamischer Größe 208, um die Abbildungen der Datenblöcke zu speichern. Wie oben in Bezug auf 3 besprochen, ist die relative Startposition der Eintragsindex „E” des Eintrags in den L0e-Abbildungsknoten 308. Wieder auf 3 Bezug nehmend, stellt „E” die relative Startposition von Abbildungen für einen physischen Block im L0-Knoten 306 dar. Wie in der Flashspeicherbranche bekannt, werden die physischen Blöcke der Speichereinrichtungen sequenziell gefüllt. Es ist verständlich, dass der erste Eintrag der L0e-Abbildungsknoten 308, d. h. der Eintrag 3080, die physische Blocknummer 0 des Segments repräsentiert und die Startposition der Abbildungen für den physischen Block 0 0 ist. Deshalb ist der Eintragsindex „E” des Eintrags 3080 „0”. Wie oben besprochen, beträgt die Anzahl der für den physischen Block 0 benötigten , das bedeutet, dass der physische Block 0 4 Abbildungen aufnimmt. Diese 4 Abbildungen beginnen bei 0 und sind 0, 1, 2 und 3. Da die physischen Blöcke der Speichereinrichtungen 110 sequenziell gefüllt werden, beginnen die Abbildungen für den nächsten physischen Block 1 bei Nummer 4. In der illustrierten Ausführungsform repräsentiert der Eintrag 3081 den physischen Block 1 in einem Segment. Deshalb ist „E” des Eintrags 3081 „4”. Wie oben besprochen ist „N” des Eintrags 3081 2, deshalb beginnen diese 2 Abbildungen bei 4 und sind 4 und 5. Sequenziell ist „E” des nächsten Eintrags 3082, der auf den Eintrag 3081 folgt, 6. Der Eintrag 3803 ist leer und wird als Nächstes gefüllt. Nach der vorangehenden Analyse wird „E” des Eintrags 3803 8 sein. Das bedeutet, dass die erste Abbildung für den physischen Block 3 eine Startpositionsadresse von 8 aufweisen wird. Es sollte auch wiederum erkannt werden, dass die Datenblöcke auf Basis des Komprimierungsverhältnisses verschiedene Größen aufweisen können und dass die im gleichen physischen Block gespeicherten Datenblöcke verschiedene Größen aufweisen können. Wenn der verfügbare Platz in einem physischen Block nicht für den nächsten eingehenden Datenblock ausreicht, kann das System 100 in einigen Ausführungsformen den eingehenden Datenblock über die Grenze des physischen Blocks hinaus speichern.
  • Wieder auf 5B Bezug nehmend, kann das Verfahren 500 durch Erstellen eines Eintrags für jeden der physischen Blöcke in der Rückwärtsabbildung mit dynamischer Größe 208 fortfahren, wobei der Eintrag die Anzahl der Abbildungen dieses physischen Blocks und die relative Startposition zum Speichern der Abbildungen der Datenblöcke enthält. In einer Ausführungsform erstellt die Speichersteuereinrichtung 204 einen Eintrag für jeden der physischen Blöcke in der Rückwärtsabbildung mit dynamischer Größe 208. Der Eintrag wird erstellt, um die Anzahl der Abbildungen, die für diesen physischen Block benötigt werden, und die relative Startposition der ersten Abbildung für diesen physischen Block zu enthalten. In einigen Ausführungsformen werden die Einträge erstellt und als L0e-Abbildungsknoten 308 gespeichert, wie in 3 gezeigt. Danach kann das Verfahren 500 die Rückwärtsabbildung mit dynamischer Größe 208 aktualisieren 520. In einigen Ausführungsformen aktualisiert die Speichersteuereinrichtung 204 die Rückwärtsabbildung mit dynamischer Größe 208 und speichert die aktualisierte Rückwärtsabbildung mit dynamischer Größe 208 im Speicher 212.
  • 6 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 600 zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe 208, um Puffereinträge für Datenblöcke in einer Speichereinrichtung 110 nach den hierin beschriebenen Techniken aufzunehmen. Wie oben besprochen ist die Rückwärtsabbildung mit dynamischer Größe 208 eine Abbildung mit variabler Größe. Für jeden physischen Block weist die Rückwärtsabbildung mit dynamischer Größe 208 verschiedene Anzahlen an Puffereinträgen auf, um verschiedene Anzahlen an Abbildungen für diesen physischen Block zu speichern. Es sollte erkannt werden, dass die Größe des Datenblocks auf Basis des Komprimierungsverhältnisses variieren kann, wenn er komprimiert wurde. Deshalb kann ein physischer Block mehrere logische Blöcke in komprimierter Form speichern, obwohl die Größe der physischen Blöcke fixiert ist. Deshalb kann die Größe der Rückwärtsabbildung mit dynamischer Größe 208 auf Basis der Arbeitslast/Anzahl der in den Speichereinrichtungen 110 gespeicherten logischen Blöcke variabel sein. Die detaillierten Schritte des Aufbaus der Puffereinträge für Datenblöcke werden hier unter Bezugnahme auf 6 beschrieben. Wie in 3 dargestellt, sind die Puffereinträge in den L0-Knoten 306 in einem Format von <L:P:S:N> enthalten, wobei „L” die logische Blocknummer (LBN) ist, „P” die physische Blocknummer (PBN) ist, „S” den Startsektor im physischen Block repräsentiert und „N” die Anzahl der Sektoren im physischen Block repräsentiert.
  • Das Verfahren 600 kann beginnen, indem es die physische Blocknummer auf Basis der Rückwärtsabbildung mit dynamischer Größe 208 für jeden der Datenblöcke ermittelt 602. Wenn das System 100 wie oben besprochen einen Datenstrom empfängt, der einen oder mehrere Datenblöcke enthält, speichert das System 100 die Datenblöcke in den Speichereinrichtungen 110. Der Datenstrom kann vom Datenempfangsmodul 202 der Speicherlogik 104 empfangen werden. In einigen Ausführungsformen ermittelt die Speichersteuereinrichtung 204 die physische Blocknummer für jeden der Datenblöcke auf Basis der Rückwärtsabbildung mit dynamischer Größe 208. Wie oben in Bezug auf 3 besprochen, kann die Rückwärtsabbildung mit dynamischer Größe 208 die Abbildungsinformationen über die nächste verfügbare physische Blocknummer enthalten. Das „P” der Puffereinträge repräsentiert die physische Blocknummer, in der der Datenblock gespeichert ist. Es sollte erkannt werden, dass für einen bestimmten physischen Block das „P” über die Puffereinträge, die er besetzt, gleich ist. Der physische Block 0 weist zum Beispiel 4 Abbildungen auf, die die Puffereinträge 3100, 3101, 3102 und 3103 sind, wie in 3 gezeigt. Jedes „P” in diesen Puffereinträgen sollte die gleiche PBN sein, d. h. null (0). Gleichermaßen sollte das „P” in den Puffereinträgen 3104 und 3105 die gleiche PBN sein, d. h. eins (1).
  • Wieder auf 6 Bezug nehmend, kann das Verfahren 600 fortfahren, indem es in Bezug auf jeden der Datenblöcke die Anzahl der Sektoren im physischen Block ermittelt 604, die er auf Basis der Größe jedes der Datenblöcke besetzen wird. Es sollte erkannt werden, dass die Größe des Datenblocks auf Basis des Komprimierungsverhältnisses variieren kann, wenn er komprimiert wurde. Wie oben in Bezug auf 3 besprochen, repräsentiert das „N” der Puffereinträge die Anzahl der Sektoren, die dieser Datenblock im physischen Block verbraucht. In einigen Ausführungsformen berechnet die Speichersteuereinrichtung 204 „N” auf Basis der Größe des komprimierten Datenblocks, den dieser physische Block speichert, und der Größe der Sektoren in diesem physischen Block. Zum Beispiel angenommen, dass ein komprimierter Datenblock eine Größe von 1024 Bytes aufweist (der vor der Speicherung mit einem Komprimierungsverhältnis von 4 komprimiert werden kann, beispielsweise von 4096 Bytes auf 1024 Bytes) und die Größe eines Sektors 512 Bytes beträgt, dann kann dieser komprimierte Datenblock zwei (2) Sektoren zur Speicherung verbrauchen. Das bedeutet, dass das „N” in der Abbildung (Puffereintrag) für diesen Datenblock 2 ist. Wenn in anderen Ausführungsformen die Größe des eingehenden komprimierten Datenblocks (der vor der Speicherung mit einem Komprimierungsverhältnis von 2 komprimiert werden kann) und die Größe eines Sektors 512 Bytes beträgt, dann kann dieser komprimierte Datenblock vier (4) Sektoren zur Speicherung verbrauchen. Es sollte erkannt werden, dass die Größe von komprimierten Datenblöcken, die im gleichen physischen Block gespeichert werden, verschieden sein kann. Wenn der verfügbare Platz in einem physischen Block nicht für den nächsten eingehenden Datenblock ausreicht, kann das System 100 in einigen Ausführungsformen den eingehenden Datenblock über die Grenze des physischen Blocks hinaus speichern.
  • Wieder auf 6 Bezug nehmend, kann das Verfahren 600 weitergehen, indem es in Bezug auf jeden der Datenblöcke den Startsektor im physischen Block auf Basis der Rückwärtsabbildung mit dynamischer Größe 208 ermittelt 606. Der Startsektor in einem physischen Block wird durch das „S” der Puffereinträge repräsentiert. Wie oben in Bezug auf 3 besprochen, repräsentiert jeder der Puffereinträge eine Abbildung. Die erste Abbildung/der Puffereintrag eines physischen Blocks besetzt zum Beispiel die ersten ganzzahligen Zahlen von Sektoren des physischen Blocks und das „S” für diese sollte null (0) sein. Die zweite Abbildung/der Puffereintrag des gleichen physischen Blocks beginnt dort, wo die erste Abbildung endet, und das „S” für diese kann auf Basis des „S” und „N” der ersten Abbildung/des Puffereintrags des physischen Blocks ermittelt werden.
  • Als Nächstes kann das Verfahren 600 mit einem Ermitteln 608 der logischen Blocknummer für den Datenblock fortfahren. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 die logische Blocknummer für den Datenblock auf Basis des Schreibbefehls herleiten. Wie in 3 gezeigt, wird die logische Blocknummer durch „L” für den Puffereintrag repräsentiert.
  • Das Verfahren 600 kann fortfahren, indem es die Rückwärtsabbildung mit dynamischer Größe 208 aktualisiert 610, um einen Puffereintrag für jeden der Datenblöcke aufzunehmen, wobei der Puffereintrag die logische Blocknummer (L), die physische Blocknummer (P), den Startsektor im physischen Block (S) und die Anzahl der Sektoren (N) enthält, die zum Speichern des Datenblocks benötigt werden. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 die Rückwärtsabbildung mit dynamischer Größe 208 aktualisieren und dann die aktualisierte Rückwärtsabbildung mit dynamischer Größe 208 im Speicher 212 speichern und das Verfahren 600 kann enden.
  • 7 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 700 zum Implementieren eines automatischen Speicherbereinigungsvorgangs für eine Rückwärtsabbildung mit dynamischer Größe 208 in einer Speichereinrichtung 110 nach den hierin beschriebenen Techniken. Nachdem ein physischer Block vom automatischen Speicherbereinigungsprozess zurückgefordert wird, wird er von einem neuen logischen Block verwendet. Dies führt zu einer neuen Rückwärtsabbildung, was die ältere Rückwärtsabbildung dieses physischen Blocks ungültig macht. Mit der Zeit werden solche ungültigen Abbildungen in den Speichereinrichtungen 110 angesammelt. Der Platz, der von diesen ungültigen Abbildungen verbraucht wird, wird vom Aktualisierungsprozess für Rückwärtsabbildungen mit dynamischer Größe zurückgefordert, z. B. von der automatischen Speicherbereinigung für die Rückwärtsabbildung mit dynamischer Größe 208. Die automatische Speicherbereinigung für die Rückwärtsabbildung mit dynamischer Größe 208 arbeitet zu einem Zeitpunkt jeweils an einem Segment und wählt zumindest auf Basis der Menge der im Segment vorhandenen ungültigen Daten das beste Segment zur automatischen Speicherbereinigung aus. Mit L0-Knoten mit variabler Größe 306 muss die Rückwärtsabbildung mit dynamischer Größe 208 den Platz berücksichtigen, der von einem L0-Knoten in einem Segment verbraucht wird. Wie oben besprochen besteht ein L0-Knoten 306 aus einer ganzzahligen Anzahl von Schreibblöcken. Deshalb wird der ungültige Platz in einem Segment in Einheiten von Schreibblöcken gezählt.
  • Das Verfahren 700 kann beginnen, indem es eine automatische Speicherbereinigung an den Speichereinrichtungen 110 durchführt 702. In einigen Ausführungsformen führt das automatische Speicherbereinigungsmodul 210 periodisch die automatische Datenspeicherbereinigung an den Speichereinrichtungen 110 des Systems 100 durch. Es sollte erkannt werden, dass die automatische Speicherbereinigung eine Form der automatischen Speicherverwaltung ist, die Datenobjekte in einen Programm findet, auf die in der Zukunft nicht zugegriffen werden kann, und die von diesen Objekten verwendeten Ressourcen zurückfordert.
  • Als Nächstes kann das Verfahren 700 dann fortfahren, indem es Informationen eines Abbildungssegments aus dem Segment-Header abruft 704. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 die Informationen eines Abbildungssegments als Reaktion auf den Abschluss der automatischen Speicherbereinigung aus dem Segment-Header abrufen. Nur zum illustrierten Zweck sollte verstanden werden, dass ein Segment ein fester Bereich von zusammenhängenden physischen Blöcken auf den Speichereinrichtungen 110 ist, die sequenziell gefüllt und gemeinsam gelöscht werden. Ein Abbildungssegment kann ein spezielles Segment bzw. spezielle Segmente sein, das bzw. die eine dynamische Übersetzung 206 und die Rückwärtsabbildung mit dynamischer Größe 208 speichert bzw. speichern. In der Baumstruktur der Rückwärtsabbildung mit dynamischer Größe 208 kann der Segment-Header (z. B. der L1-Knoten 304 in der Rückwärtsabbildung mit dynamischer Größe 208, wie in 3 illustriert) eine höhere Knotenebene als die erweiterten Knoten (z. B. ein L0-Knoten 306 in der Rückwärtsabbildung mit dynamischer Größe 208, wie in 3 illustriert) sein. Die Informationen des Abbildungssegments werden im L0-Knoten-Header gespeichert, der der L1-Knoten 304 ist, wie in der Baumstruktur der Rückwärtsabbildung mit dynamischer Größe 208 in 3 gezeigt. Der L1-Knoten 304 speichert die Informationen über die Anzahl der Schreibblöcke, die einen L0-Knoten 306 in den Speichereinrichtungen 110 bilden, und die Adresse des Segments, in dem dieser L0-Knoten 306 geschrieben ist. Wenn ein L0-Knoten 306 in die Speichereinrichtungen 110 geschrieben wird, werden die alte Segmentadresse und die Anzahl der Schreibblöcke vom L1-Knoten 304 abgerufen. Die Anzahl der ungültigen Schreibblöcke (Verwendungsanzahl) im alten Segment wird um die Anzahl der Schreibblöcke erhöht, die dieser L0-Knoten 306 verbraucht hat.
  • Wieder auf 7 Bezug nehmend, kann das Verfahren 700 fortfahren, indem es die Verwendungsanzahl der Schreibblöcke des Abbildungssegments ermittelt 706. Ein Schreibblock kann ein Datenkorn oder ein Sektor sein, was die kleinste Einheit ist, auf die ein logischer Block reduziert werden kann. Als Beispiel, wenn die physische Blockgröße 4096 Bytes beträgt, kann er acht (8) reduzierte logische 512-Byte-Blöcke halten. In einigen Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 die Verwendungsanzahl der Schreibblöcke des Abbildungssegments auf Basis der aus dem Segment-Header abgerufenen Informationen ermitteln. Der in Schritt 706 durchgeführte Vorgang kann von der Speichersteuereinrichtung 204 in Kooperation mit einer oder mehreren anderen Komponenten des Systems 100 durchgeführt werden.
  • Als Nächstes kann das Verfahren 700 mit einer Ermittlung 708 auf Basis der Verwendungsanzahl des Abbildungssegments fortfahren, ob das Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt. In einigen Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 auf Basis der Verwendungsanzahl des Abbildungssegments ermitteln, ob das Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt. Die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe können zum Beispiel als ein Vergleichen der Verwendungsanzahl mit einem Schwellenwert vordefiniert werden. Dieser Prozess wird durch Schritt 710 des Verfahrens 700 beschrieben. Wenn zum Beispiel die Verwendungsanzahl des Abbildungssegments auf 36 erhöht wird und der Schwellenwert als 30 voreingestellt ist, dann ermittelt das automatische Speicherbereinigungsmodul 210, dass dieses Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt. Wenn in einer anderen Ausführungsform die Verwendungsanzahl des Abbildungssegments 26 ist und der Schwellenwert als 30 voreingestellt ist, dann ermittelt das automatische Speicherbereinigungsmodul 210, dass dieses Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe nicht erfüllt. Wie in 7 gezeigt, kann das Verfahren 700 als Reaktion auf die Ermittlung enden, dass ein Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe nicht erfüllt.
  • Als Nächstes kann das Verfahren 700 dann als Reaktion auf die Ermittlung, dass ein Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt, fortfahren, indem es den Aktualisierungsprozess für Rückwärtsabbildungen mit dynamischer Größe am Abbildungssegment durchführt 712. In einigen Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 den Aktualisierungsprozess für Rückwärtsabbildungen mit dynamischer Größe für ein Abbildungssegment, z. B. eine automatische Speicherbereinigung an der Rückwärtsabbildung mit dynamischer Größe 208, durchführen. Der in Schritt 712 durchgeführte Vorgang kann von der Speichersteuereinrichtung 204 in Kooperation mit einer oder mehreren anderen Komponenten des Systems 100 durchgeführt werden.
  • Als Nächstes kann das Verfahren 700 fortfahren, indem es die Informationen des Abbildungssegments im Segment-Header aktualisiert 714. In einigen Ausführungsformen kann das automatische Speicherbereinigungsmodul 210 die Informationen des Abbildungssegments im Segment-Header aktualisieren. In der illustrierten Ausführungsform wird die Verwendungsanzahl des Abbildungssegments nach dem automatischen Speicherbereinigungsprozess am Abbildungssegment zurückgesetzt. Die Informationen des Abbildungssegments können im Abbildungssegment-Header gespeichert werden, z. B. dem L1-Knoten 304, wie in 3 dargestellt. Nachdem die Informationen des Abbildungssegments aktualisiert sind, kann das Verfahren 700 enden.
  • 8 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 800 zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe 208 für einen Blockkopierprozess in einer Speichereinrichtung 110 nach den hierin beschriebenen Techniken. Das Verfahren 800 kann mit einem Empfangen 802 einer Anforderung beginnen, eine Vielzahl von Datenblöcken aus einem ersten Bereich logischer Adressen in einen zweiten Bereich logischer Adressen zu kopieren. In einer Ausführungsform kann das Datenempfangsmodul 202 die Anforderung empfangen, eine Vielzahl von Datenblöcken aus einem ersten Bereich logischer Adressen in einen zweiten Bereich logischer Adressen zu kopieren. Die Anforderung kann Informationen über den ersten Bereich logischer Adressen, Informationen über den zweiten Bereich logischer Adressen und Informationen der Datenblöcke enthalten, ist jedoch nicht darauf beschränkt.
  • Das Verfahren 800 kann dann mit einem Abrufen 804 der dynamischen Übersetzungstabelle 206 fortfahren. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 die dynamische Übersetzungstabelle 206 abrufen.
  • Als Nächstes kann das Verfahren 800 fortfahren, indem es die physische Adresse der Datenblöcke auf Basis des ersten Bereichs logischer Adressen und der Übersetzungstabelle ermittelt 806. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 die physische Adresse der Datenblöcke auf Basis des ersten Bereichs logischer Adressen und der dynamischen Übersetzungstabelle 206 ermitteln.
  • Als Nächstes kann das Verfahren 800 mit einem Aktualisieren 808 der dynamischen Übersetzungstabelle 206 fortfahren, um den Eintrag aus dem zweiten Bereich logischer Adressen auf die physische Adresse aufzunehmen. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 die dynamische Übersetzungstabelle 206 aktualisieren, um den Eintrag aus dem zweiten Bereich logischer Adressen auf die physische Adresse aufzunehmen. Durch den in Schritt 808 durchgeführten Vorgang zeigt der zweite Bereich logischer Adressen auf die physische Adresse, die die Vielzahl der Datenblöcke speichert.
  • Das Verfahren 800 kann dann mit einem Abrufen 810 der Rückwärtsabbildung mit dynamischer Größe 208 fortfahren.
  • Das Verfahren 800 kann mit einem Ermitteln 812 der Größe der Datenblöcke fortfahren. In einigen Ausführungsformen kann die Speichersteuereinrichtung 204 die Größe des Datenblocks auf Basis der Anforderung ermitteln, eine Vielzahl von Datenblöcken aus einem ersten Bereich logischer Adressen in eine zweite logische Adresse zu kopieren. Die Anforderung kann die Informationen der Datenblöcke enthalten.
  • Als Nächstes kann das Verfahren 800 fortfahren, indem es auf Basis der Größe der Datenblöcke und der Rückwärtsabbildung mit dynamischer Größe 208 die Anzahl der Verweise ermittelt 814, die die Datenblöcke besetzen. Wie oben in Bezug auf 4 besprochen, kann die Anzahl der Verweise auf Basis der Größe der Datenblöcke und der Rückwärtsabbildung mit dynamischer Größe 208 ermittelt werden. Der Puffereintrag 3105 wird in den Puffereintrag 3108 kopiert und die Anzahl der Verweise beträgt „1”.
  • Das Verfahren 800 kann fortfahren, indem es den Vorwärtszeiger auf Basis der Rückwärtsabbildung mit dynamischer Größe 208 ermittelt 816, wobei der Vorwärtszeiger den zweiten Bereich logischer Adressen anzeigt, auf den die physische Adresse zeigt. Wie in 4 gezeigt, wird beim Kopieren von Datenblöcken aus dem ersten Bereich logischer Adressen (z. B. der logischen Blocknummer 5, wie im Puffereintrag 3105 gezeigt) in den zweiten Bereich logischer Adressen (z. B. die logische Blocknummer 8, wie im Puffereintrag 3108 gezeigt) der Vorwärtszeiger (FP) ermittelt, 8 zu sein.
  • Das Verfahren 800 kann mit einem Aktualisieren 818 der Abbildungen des Datenblocks in der Rückwärtsabbildung mit dynamischer Größe 208 mit dem Vorwärtszeiger und der Anzahl an Verweisen fortfahren. Wie in 4 illustriert, kann der Puffereintrag 3105 aktualisiert werden, um die <FP:NR>-Informationen zu enthalten, wobei „FP” den Vorwärtszeiger repräsentiert und „NR” die Anzahl von Verweisen repräsentiert. Das Verfahren 800 kann nach dem Aktualisieren der Abbildung des Datenblocks in der Rückwärtsabbildung mit dynamischer Größe 208 enden.
  • Unten werden Systeme und Verfahren zum Implementieren einer Rückwärtsabbildung mit dynamischer Größe in einer Speichereinrichtung beschrieben. In der obigen Beschreibung wurden zur Erläuterung zahlreiche spezifische Details dargelegt. Es ist jedoch offensichtlich, dass die offenbarten Technologien ohne eine beliebige gegebene Teilmenge dieser spezifischen Details ausgeführt werden können. In anderen Fällen werden Strukturen und Einrichtungen in Blockdiagrammform gezeigt. Die offenbarten Technologien werden zum Beispiel in einigen Implementierungen oben in Bezug auf Benutzerschnittstellen und eine bestimmte Hardware beschrieben. Darüber hinaus werden die Technologien oben hauptsächlich im Kontext von Online-Diensten offenbart; die offenbarten Technologien gelten jedoch für andere Datenquellen und andere Datentypen (z. B. Sammlungen von anderen Ressourcen, zum Beispiel Bilder, Audio, Webseiten).
  • Eine Bezugnahme in der Beschreibung auf „eine einzelne Ausführungsform”, „einige Ausführungsformen” oder „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben wird, in zumindest einer Ausführungsform der offenbarten Technologien enthalten ist. Das Auftreten der Phrase „in einer Ausführungsform” an verschiedenen Stellen in der Beschreibung bezieht sich nicht notwendigerweise immer auf die gleiche Ausführungsform.
  • Einige Teile der detaillierten Beschreibungen oben wurden in Form von Prozessen und symbolischen Darstellungen von Vorgängen an Datenbits in einem Computerspeicher dargestellt. Ein Prozess kann allgemein als eine selbstständige Abfolge von Schritten angesehen werden, die zu einem Ergebnis führen. Die Schritte können physische Manipulationen von physischen Größen involvieren. Diese Größen nehmen die Form elektrischer oder magnetischer Signale an, die in der Lage sind, gespeichert, übertragen, kombiniert, verglichen oder anderweitig manipuliert zu werden. Diese Signale können als in Form von Bits, Werten, Elementen, Symbolen, Zeichen, Begriffen, Zahlen oder Ähnlichem bezeichnet werden.
  • Diese und ähnliche Begriffe können mit den entsprechenden physikalischen Größen assoziiert werden und können als Bezeichnungen angesehen werden, die auf diese Größen angewandt wurden. Sofern nicht spezifisch anders angegeben, wie sich aus der vorstehenden Diskussion ergibt, wird klar sein, dass sich Diskussionen, die Ausdrücke wie etwa „Verarbeiten” oder „Berechnen” oder „Kalkulieren” oder „Ermitteln” oder „Anzeigen” oder Ähnliches verwenden, in der gesamten Beschreibung auf die Handlung und Prozesse eines Computersystems oder einer ähnlichen elektronischen Recheneinrichtung beziehen können, die als physikalische (elektronische) Größen dargestellte Daten innerhalb der Register und Speicher des Computersystems manipuliert und in andere Daten umwandelt, die gleichermaßen als physikalische Größen innerhalb der Speicher oder Register des Computersystems oder anderer solcher Informationsspeicherungs-, Übertragungs- oder Anzeigeeinrichtungen dargestellt sind.
  • Die offenbarten Technologien können auch eine Vorrichtung zur Durchführung der Vorgänge hierin betreffen. Diese Vorrichtung kann speziell für die erforderlichen Zwecke konstruiert sein oder sie kann einen Universal-Computer enthalten, der selektiv durch ein im Computer gespeichertes Computerprogramm aktiviert oder rekonfiguriert wird.
  • Die offenbarten Technologien können die Form einer vollständigen Hardware-Implementierung, einer vollständigen Software-Implementierung oder einer Implementierung annehmen, die sowohl Hardware- als auch Software-Elemente enthält. In einigen Implementierungen wird die Technologie in Software implementiert, die Firmware, residente Software, Mikrocode usw. enthält, aber nicht darauf beschränkt ist.
  • Ferner können die offenbarten Technologien die Form eines Computerprogrammprodukts annehmen, auf das von einem nichttransitorischen, computerverwendbaren oder computerlesbaren Medium zugegriffen werden kann, das Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem beliebigen System zur Anweisungsausführung bereitstellt. Zu Zwecken dieser Beschreibung kann ein computerverwendbares oder computerlesbares Medium eine beliebige Vorrichtung sein, die das Programm zur Verwendung durch oder in Verbindung mit dem System zur Anweisungsausführung, der Vorrichtung oder der Einrichtung beinhalten, speichern, kommunizieren, weiterleiten oder transportieren kann.
  • Ein Rechensystem oder Datenverarbeitungssystem, das zur Speicherung und/oder Ausführung von Programmcode geeignet ist, enthält mindestens einen Prozessor (z. B. einen Hardwareprozessor), der direkt oder indirekt über einen Systembus an Speicherelemente gekoppelt ist. Die Speicherelemente können einen lokalen Speicher, der während einer tatsächlichen Ausführung des Programmcodes eingesetzt wird, Massenspeicher und Zwischenspeicher enthalten, die eine temporäre Speicherung von zumindest einigem Programmcode bereitstellen, um die Anzahl der Male zu reduzieren, die der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe/Ausgabe- oder E/A-Einrichtungen (einschließlich Tastaturen, Anzeigen, Zeigegeräten usw., aber nicht darauf beschränkt) können entweder direkt oder durch zwischengeschaltete E/A-Steuereinrichtungen gekoppelt sein.
  • Netzwerkadapter können auch an das System gekoppelt sein, um zu ermöglichen, dass das Datenverarbeitungssystem an andere Datenverarbeitungssysteme oder entfernte Drucker oder Speichereinrichtungen durch zwischengeschaltete private oder öffentliche Netzwerke gekoppelt werden. Modems, Kabelmodems und Ethernet-Karten sind nur einige der derzeit verfügbaren Typen von Netzwerkadaptern.
  • Schließlich können die hier dargestellten Prozesse und Anzeigen nicht inhärent mit irgendeinem bestimmten Computer oder anderen Vorrichtungen zusammenhängen. Verschiedene Universalsysteme können mit Programmen nach den hierin beschriebenen Lehren verwendet werden oder es kann sich als zweckmäßig erweisen, eine speziellere Vorrichtung zum Durchführen der erforderlichen Verfahrensschritte zu konstruieren. Die erforderliche Struktur für eine Vielfalt dieser Systeme wird aus der Beschreibung unten ersichtlich. Darüber hinaus wurden die offenbarten Technologien nicht in Bezug auf eine bestimmte Programmiersprache beschrieben. Es versteht sich, dass eine Vielfalt von Programmiersprachen verwendet werden kann, um die Lehren der Technologien zu implementieren, wie sie hier beschrieben wurden.
  • Die vorangegangene Beschreibung der Implementierungen der vorliegenden Techniken und Technologien wurde zu Illustrationszwecken und zur Beschreibung dargelegt. Es ist nicht beabsichtigt, erschöpfend zu sein oder die hier beschriebenen Techniken und Technologien auf die bestimmte offenbarte Form zu beschränken. Angesichts der obigen Lehre sind viele Modifikationen und Variationen möglich. Es ist beabsichtigt, dass der Umfang der vorliegenden Techniken und Technologien nicht durch diese detaillierte Beschreibung beschränkt wird. Die gegenwärtigen Techniken und Technologien können in anderen spezifischen Formen implementiert werden, ohne den Geist oder wesentliche Merkmale davon zu verlassen. Gleichermaßen sind die besondere Benennung und Aufteilung der Module, Routinen, Funktionen, Attribute, Methoden und anderer Aspekte nicht zwingend oder signifikant und die Mechanismen, die die vorliegenden Techniken und Technologien oder ihre Funktionen implementieren, können unterschiedliche Namen, Aufteilungen und/oder Formate aufweisen. Ferner können die Module, Routinen, Funktionen, Attribute, Methoden und anderen Aspekte der vorliegenden Technologie als Software, Hardware, Firmware oder eine beliebige Kombination der drei implementiert werden. Außerdem, wenn eine Komponente, die beispielsweise ein Modul ist, als Software implementiert ist, kann die Komponente als ein eigenständiges Programm, als Teil eines größeren Programms, als eine Vielzahl von separaten Programmen, als statisch oder dynamisch verbundene Bibliothek, als ein in einen Kernel ladbares Modul, als Gerätetreiber und/oder auf alle und beliebige andere Weisen implementiert werden, die jetzt oder in der Zukunft in der Computerprogrammierung bekannt sind. Zusätzlich sind die vorliegenden Techniken und Technologien auf keine Weise auf eine Implementierung in einer bestimmten Programmiersprache oder für ein bestimmtes Betriebssystem oder eine bestimmte Umgebung beschränkt. Dementsprechend soll die Offenbarung der vorliegenden Techniken und Technologien illustrativ, aber nicht einschränkend sein.

Claims (18)

  1. Verfahren, das Folgendes umfasst: Empfangen eines Datenstroms, der einen oder mehrere Datenblöcke enthält; Ermitteln einer Größe des einen oder der mehreren Datenblöcke; Ermitteln einer Anzahl an Abbildungen auf Basis der Größe des einen oder der mehreren Datenblöcke und einer Größe eines physischen Blocks, wobei die Anzahl der Abbildungen für verschiedene physische Blöcke abhängig von der Größe des einen oder der mehreren Datenblöcke, die im physischen Block gespeichert werden, variabel ist; Abrufen einer Rückwärtsabbildung mit dynamischer Größe, wobei eine Größe der Rückwärtsabbildung mit dynamischer Größe der variablen Anzahl von Abbildungen für verschiedene physische Blöcke entspricht; Ermitteln einer Startposition in der Rückwärtsabbildung mit dynamischer Größe für Abbildungen des einen oder der mehreren Datenblöcke; und Erstellen eines Eintrags für den physischen Block in der Rückwärtsabbildung mit dynamischer Größe, wobei der Eintrag die Anzahl der Abbildungen des physischen Blocks und die Startposition für den einen oder die mehreren Datenblöcke enthält und wobei der Eintrag ein Index der Anzahlen von Abbildungen für den physischen Block ist.
  2. Verfahren nach Anspruch 1, wobei die Rückwärtsabbildung mit dynamischer Größe eine dynamische Baumstruktur enthält, die einen erweiterbaren Knoten für eine Vielzahl von Puffereinträgen aufweist, einen Puffereintrag für jeden des einen oder der mehreren Datenblöcke.
  3. Verfahren nach Anspruch 1, das ferner ein Erstellen eines Puffereintrags für jeden des einen oder der mehreren Datenblöcke umfasst, wobei der Puffereintrag eine logische Blocknummer, eine physische Blocknummer, einen Startsektor im physischen Block und eine Anzahl an Sektoren enthält, die im physischen Block besetzt werden.
  4. Verfahren nach Anspruch 3, wobei der Puffereintrag in der Speichereinrichtung persistent gespeichert wird.
  5. Verfahren nach Anspruch 3, wobei die Anzahl der Sektoren, die im physischen Block besetzt werden, auf Basis der Größe jedes des einen oder der mehreren Datenblöcke und einer Größe des Sektors ermittelt wird.
  6. Verfahren nach Anspruch 4, wobei die Anzahl der Abbildungen des physischen Blocks die Anzahl von Puffereinträgen repräsentiert, die ein physischer Block verbraucht.
  7. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Empfangen einer Anforderung, eine Vielzahl von Datenblöcken aus einem ersten Bereich logischer Adressen in einen zweiten Bereich logischer Adressen zu kopieren; Ermitteln einer Größe der Vielzahl der Datenblöcke; Ermitteln einer Anzahl an Verweisen, die die Vielzahl der Datenblöcke besetzt, auf Basis der Größe der Vielzahl der Datenblöcke; Ermitteln eines Vorwärtszeigers auf Basis der Rückwärtsabbildung mit dynamischer Größe für die Vielzahl der Datenblöcke; und Aktualisieren der Rückwärtsabbildung mit dynamischer Größe mit einem zusätzlichen Eintrag mit dem Vorwärtszeiger und der Anzahl der Verweise.
  8. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Abrufen von Informationen eines Abbildungssegments aus einem Segment-Header; Ermitteln einer Verwendungsanzahl von Schreibblöcken des Abbildungssegments; Ermitteln auf Basis der Verwendungsanzahl des Abbildungssegments, ob das Abbildungssegment Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt; Durchführen einer Aktualisierung der Rückwärtsabbildung mit dynamischer Größe am Abbildungssegment als Reaktion darauf, dass das Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt; und Aktualisieren der Informationen des Abbildungssegments im Segment-Header.
  9. Verfahren nach Anspruch 8, wobei das Abbildungssegment die Rückwärtsabbildung mit dynamischer Größe speichert.
  10. System, das Folgendes umfasst: eine Rückwärtsabbildung mit dynamischer Größe, die eine variable Größe aufweist, die einer variablen Anzahl an Abbildungen für verschiedene physische Blöcke einer Speichereinrichtung entspricht; und einen Prozessor, der an die Rückwärtsabbildung mit dynamischer Größe gekoppelt ist, wobei der Prozessor konfiguriert ist: einen Datenstrom zu empfangen, der einen oder mehrere Datenblöcke enthält; eine Größe des einen oder der mehreren Datenblöcke zu ermitteln; eine Anzahl an Abbildungen zu ermitteln, die für einen physischen Block benötigt wird, auf Basis der Größe eines Datenblocks und einer Größe des physischen Blocks, wobei die Anzahl der Abbildungen für verschiedene physische Blöcke abhängig von der Größe des einen oder der mehreren Datenblöcke, die im physischen Block gespeichert werden, variabel ist; eine Startposition in der Rückwärtsabbildung mit dynamischer Größe für Abbildungen des einen oder der mehreren Datenblöcke zu ermitteln; und einen Eintrag für den physischen Block in der Rückwärtsabbildung mit dynamischer Größe zu erstellen, wobei der Eintrag die Anzahl der Abbildungen des physischen Blocks und die Startposition für den einen oder die mehreren Datenblöcke enthält und wobei der Eintrag ein Index der variablen Anzahlen von Abbildungen für den physischen Block ist.
  11. System nach Anspruch 10, wobei die Rückwärtsabbildung mit dynamischer Größe eine dynamische Baumstruktur enthält, die einen erweiterbaren Knoten für eine Vielzahl von Puffereinträgen aufweist, einen Puffereintrag für jeden des einen oder der mehreren Datenblöcke.
  12. System nach Anspruch 10, wobei der erweiterbare Knoten einen Puffereintrag für jeden des einen oder der mehreren Datenblöcke enthält, wobei der Puffereintrag eine logische Blocknummer, eine physische Blocknummer, einen Startsektor im physischen Block und eine Anzahl an Sektoren enthält, die im physischen Block besetzt werden.
  13. System nach Anspruch 12, wobei der Prozessor konfiguriert ist, den Puffereintrag in der Speichereinrichtung persistent zu speichern.
  14. System nach Anspruch 12, wobei die Anzahl der Sektoren, die im physischen Block besetzt werden, auf Basis der Größe jedes des einen oder der mehreren Datenblöcke und einer Größe des Sektors ermittelt wird.
  15. Verfahren nach Anspruch 4, wobei die Anzahl der Abbildungen des physischen Blocks die Anzahl von Puffereinträgen repräsentiert, die ein physischer Block verbraucht.
  16. System nach Anspruch 10, wobei der Prozessor ferner konfiguriert ist: eine Anforderung zu empfangen, eine Vielzahl von Datenblöcken aus einem ersten Bereich logischer Adressen in einen zweiten Bereich logischer Adressen zu kopieren; eine Größe der Vielzahl der Datenblöcke zu ermitteln; eine Anzahl an Verweisen zu ermitteln, die die Vielzahl der Datenblöcke besetzt, auf Basis der Größe der Vielzahl der Datenblöcke; einen Vorwärtszeiger auf Basis der Rückwärtsabbildung mit dynamischer Größe für die Vielzahl der Datenblöcke zu ermitteln; und die Rückwärtsabbildung mit dynamischer Größe mit einem zusätzlichen Eintrag mit dem Vorwärtszeiger und der Anzahl der Verweise zu aktualisieren.
  17. System nach Anspruch 10, wobei der Prozessor ferner konfiguriert ist: Informationen eines Abbildungssegments aus einem Segment-Header abzurufen; eine Verwendungsanzahl von Schreibblöcken des Abbildungssegments zu ermitteln; auf Basis der Verwendungsanzahl des Abbildungssegments zu ermitteln, ob das Abbildungssegment Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt; eine Aktualisierung der Rückwärtsabbildung mit dynamischer Größe am Abbildungssegment als Reaktion darauf durchzuführen, dass das Abbildungssegment die Aktualisierungskriterien für Rückwärtsabbildungen mit dynamischer Größe erfüllt; und die Informationen des Abbildungssegments im Segment-Header zu aktualisieren.
  18. System nach Anspruch 17, wobei das Abbildungssegment die Rückwärtsabbildung mit dynamischer Größe speichert.
DE102017001999.1A 2016-03-07 2017-03-01 RÜCKWÄRTSABBILDUNG MIT EFFIZIENTER UND DYNAMISCHER GRÖßE ZUR HANDHABUNG VON DATEN MIT VARIABLER GRÖßE Pending DE102017001999A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/062,456 US10001924B2 (en) 2016-03-07 2016-03-07 Efficient and dynamically sized reverse map to handle variable size data
US15/062,456 2016-03-07

Publications (1)

Publication Number Publication Date
DE102017001999A1 true DE102017001999A1 (de) 2017-09-07

Family

ID=59650985

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017001999.1A Pending DE102017001999A1 (de) 2016-03-07 2017-03-01 RÜCKWÄRTSABBILDUNG MIT EFFIZIENTER UND DYNAMISCHER GRÖßE ZUR HANDHABUNG VON DATEN MIT VARIABLER GRÖßE

Country Status (3)

Country Link
US (2) US10001924B2 (de)
CN (1) CN107168893B (de)
DE (1) DE102017001999A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901944B2 (en) * 2017-05-24 2021-01-26 Microsoft Technology Licensing, Llc Statelessly populating data stream into successive files
TWI679538B (zh) * 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
KR20200073794A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200076528A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102494444B1 (ko) * 2020-11-17 2023-02-06 성균관대학교산학협력단 어드레스 압축 방법 및 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112286A (en) * 1997-09-19 2000-08-29 Silicon Graphics, Inc. Reverse mapping page frame data structures to page table entries
US6233712B1 (en) * 1998-04-24 2001-05-15 Lsi Logic Corporation Apparatus and method for recovering information bits from a 64/256-quadrature amplitude modulation treliss coded modulation decoder
US6587515B1 (en) * 1999-02-10 2003-07-01 Hamid Jafarkhani Differential transmitter diversity technique for wireless communications
WO2005041190A1 (en) * 2003-10-24 2005-05-06 Koninklijke Philips Electronics N.V. Forward and backward reproduction of a signal from stream data
US20060294339A1 (en) 2005-06-27 2006-12-28 Trika Sanjeev N Abstracted dynamic addressing
US7822927B1 (en) * 2007-05-14 2010-10-26 Emc Corporation Dynamically configurable reverse DNLC lookup
US8423710B1 (en) 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
US9026767B2 (en) 2009-12-23 2015-05-05 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
US9098400B2 (en) 2012-10-31 2015-08-04 International Business Machines Corporation Dynamic tuning of internal parameters for solid-state disk based on workload access patterns
CN103514249B (zh) * 2013-06-20 2016-12-28 易乐天 一种数据自精简方法和系统及存储装置
US9262096B2 (en) * 2013-07-15 2016-02-16 Seagate Technology Llc Dynamic address mapping for finish in the field
CN104598386B (zh) * 2013-10-31 2018-03-27 Lsi公司 通过追踪和利用二级映射索引重复利用固态驱动器块

Also Published As

Publication number Publication date
CN107168893B (zh) 2020-07-17
US20180275882A1 (en) 2018-09-27
US20170255388A1 (en) 2017-09-07
US10001924B2 (en) 2018-06-19
US10254963B2 (en) 2019-04-09
CN107168893A (zh) 2017-09-15

Similar Documents

Publication Publication Date Title
DE102017001999A1 (de) RÜCKWÄRTSABBILDUNG MIT EFFIZIENTER UND DYNAMISCHER GRÖßE ZUR HANDHABUNG VON DATEN MIT VARIABLER GRÖßE
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE60310255T2 (de) Skalierbarer datenzugang in einem beliebig grossen dokument
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE10315490B4 (de) Verfahren und System zum Wechsel zwischen zwei oder mehreren Firmwareabbildungen auf einer Hostvorrichtung
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE112011101793T5 (de) Gemeinsame Datennutzung bei Dateiklonen
DE112014004794T5 (de) Zuteilen von Kartenabgleichaufgaben durch Cluster-Server im Internet der Fahrzeuge
DE102013200030B4 (de) Hash-basiertes verwalten von speicher-ids
DE102014102246A1 (de) Integrierte Schaltung zum Berechnen einer Zieleintragsadresse eines Puffer-Deskriptors basierend auf einem Datenblockabstand, Verfahren zum Betreiben desselben und System mit demselben
DE102016010276A1 (de) Verfahren und systeme zur verbesserung von flash-speicher-leerung
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE112018002955T5 (de) Kognitive datei- und objektverwaltung für verteilte speicherumgebungen
DE112006004185T5 (de) Verfahren zum Verwalten von Daten in einem nichtflüchtigen Speicher
DE102006026474A1 (de) System und Verfahren für das automatische Optimieren von erhältlichen virtuellem Speicher
DE10352395B4 (de) Speicherverwaltungsverfahren, Verfahren zum Speichern von Druckauftragsdaten sowie entsprechendes maschinenlesbares Medium und System
DE112018005998T5 (de) Kopieren und weiterleiten für eine gleichzeitig ablaufende kopierende garbage-collection
DE102011055097A1 (de) Speichersystem und damit verbundenes Betriebsverfahren

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE