DE102016010276A1 - Verfahren und systeme zur verbesserung von flash-speicher-leerung - Google Patents

Verfahren und systeme zur verbesserung von flash-speicher-leerung Download PDF

Info

Publication number
DE102016010276A1
DE102016010276A1 DE102016010276.4A DE102016010276A DE102016010276A1 DE 102016010276 A1 DE102016010276 A1 DE 102016010276A1 DE 102016010276 A DE102016010276 A DE 102016010276A DE 102016010276 A1 DE102016010276 A1 DE 102016010276A1
Authority
DE
Germany
Prior art keywords
pointer
region
dirty
request
flash memory
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.)
Withdrawn
Application number
DE102016010276.4A
Other languages
English (en)
Inventor
Daniel Peter NOÉ
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.)
HGST Netherlands BV
Original Assignee
HGST Netherlands BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102016010276A1 publication Critical patent/DE102016010276A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es werden Techniken zur Verbesserung der Flash-Speicher-Leerung offenbart. In einigen Ausführungsformen können die Techniken als Verfahren zur Verbesserung von Flash-Speicher-Leerung umgesetzt sein, umfassend das Empfangen einer Anfrage zum Schreiben auf den Flash-Speicher; das Schreiben von Daten, die der Anfrage zugeordnet sind, auf den Flash-Speicher; das Identifizieren eines Zeigers auf eine Region-Bitmap, die einer Schreibregion für die Anfrage entspricht; das Markieren eines Bits der der Anfrage entsprechenden Region-Bitmap als schmutzig; und das Aktualisieren des Zeigers auf die Region-Bitmap unter Verwendung einer Zeigerverwaltungskomponente, sodass er einen Zählwert schmutziger Blöcke enthält.

Description

  • Hintergrund
  • Um beim Schreiben von einer Halbleitervorrichtung (SSD) auf eine herkömmliche Speichervorrichtung (z. B. eine Festplatte) das bestmögliche Leistungsverhalten zu erhalten, können Schreibvorgänge entsprechend ihrer logischen Blockadresse (LBA) gereiht werden. Je länger ein kontinuierliches Durchlaufen von Adressen während eines Schreibvorgangs ist, desto besser kann das Leistungsverhalten sein. Die Länge eines Durchlaufens von Adressen, die Schreibvorgänge von einem SSD auf einen herkömmlichen Speicher erfordern, kann allerdings davon abhängen, welche Abschnitte des SSD-Speichers Modifikationen aufweisen, die dem herkömmlichen Speicher noch nicht zugewiesen wurden (z. B. schmutzige Blöcke). Ein effizientes Auffinden solcher schmutzigen Blöcke in einem SSD (z. B. umfassend einen Flash-Speicher), um Blöcke zu identifizieren, die Schreibvorgänge auf einen Speicher erfordern (z. B. Leeren), ist eine Herausforderung.
  • Zusammenfassung
  • Es werden Techniken zur Verbesserung von Flash-Speicher-Leerung offenbart. In einigen Ausführungsformen können die Techniken als ein Verfahren zur Verbesserung von Flash-Speicher-Leerung durchgeführt werden, welches das Empfangen einer Anfrage zum Schreiben auf den Flash-Speicher; das Schreiben von Daten, die der Anfrage zugeordnet sind, auf den Flash-Speicher; das Identifizieren eines Zeigers auf eine Region-Bitmap, die einer Schreibregion für die Anfrage entspricht; das Markieren eines Bits der der Anfrage entsprechenden Region-Bitmap als schmutzig und das Aktualisieren des Zeigers auf die Region-Bitmap unter Verwendung einer Zeigerverwaltungskomponente, sodass er einen Zählwert schmutziger Blöcke enthält, umfasst.
  • Gemäß zusätzlichen Aspekten dieser Ausführungsform kann das Aktualisieren des Zeigers auf die Region-Bitmap, sodass er einen Zählwert schmutziger Blöcke enthält, das Aktualisieren von einem oder mehreren Bits höherer Ordnung des Zeigers umfassen, sodass er den Zählwert schmutziger Blöcke enthält.
  • Gemäß weiteren Aspekten dieser Ausführungsform kann der Zeiger einen Zeiger mit 48 signifikanten unteren Bits und 16 Bits höherer Ordnung umfassen, wobei der Zählwert schmutziger Blöcke in den 16 Bits höherer Ordnung gespeichert ist.
  • Gemäß anderen Aspekten dieser Ausführungsform kann das Markieren eines Bits der Region-Bitmap, die der Anfrage entspricht, als schmutzig das Aktualisieren der Bits höherer Ordnung des Zeigers, sodass er einen Wert eines letzten signifikanten Bits des Zeigers umfasst, und das Verwenden des aktualisierten Zeigers zur Identifizierung der Region-Bitmap umfassen.
  • Gemäß zusätzlichen Aspekten dieser Ausführungsform kann der Zeiger einen von einem Array von Zeigern umfassen, wobei das Array von Zeigern durch einen Zählwert schmutziger Blöcke in jedem der Zeiger geordnet ist.
  • Gemäß weiteren Aspekten dieser Ausführungsform können die Techniken das Identifizieren einer schmutzigsten Region von einer Vielzahl von Regionen des Flash-Speichers unter Verwendung des geordneten Arrays von Zeigern und das Schreiben von einem oder mehreren Blöcken der schmutzigsten Region auf den herkömmlichen Speicher umfassen.
  • Gemäß weiteren Aspekten dieser Ausführungsform kann das Schreiben von einem oder mehreren Blöcken auf den herkömmlichen Speicher durch Detektion von einem oder mehreren Faktoren getriggert werden.
  • Gemäß zusätzlichen Aspekten dieser Ausführungsform können der eine oder die mehreren Faktoren mindestens eines von: einer bestimmten Schwelle von erreichten schmutzigen Blöcken, einem CPU-Nutzungsgrad, einem Netzwerknutzungsgrad, einem Eingangs-/Ausgangswert eines herkömmlichen Speichers, einem zeitbedingten Entfernen von einem oder mehreren Blöcken aus dem Cache und einer vom Benutzer bestimmten Präferenz umfassen.
  • Gemäß weiteren Aspekten dieser Ausführungsform kann das Schreiben eines oder mehrerer Blöcke der schmutzigsten Region auf einen herkömmlichen Speicher das Verwenden einer Basisadresse einer Region-Bitmap und eines Offsets, das einem Bit der Region-Bitmap zugeordnet ist, zur Identifizierung einer logischen Blockadresse, die auf einen herkömmlichen Speicher zu schreibenden Daten zugeordnet ist, umfassen.
  • Gemäß zusätzlichen Aspekten dieser Ausführungsform können die Techniken nach dem Schreiben eines oder mehrerer, einer ersten Region zugeordneter Blöcke das Identifizieren eines zweiten Zeigers im Array von Zeigern, der einer zweiten schmutzigsten Region zugeordnet ist, umfassen.
  • Gemäß weiteren Aspekten dieser Ausführungsform wird, wenn einer oder mehrere Blöcke, die einem ersten Zeiger zugeordnet sind, auf einen herkömmlichen Speicher geschrieben werden, ein Offset des zweiten Zeigers zu einem Ausgangspunkt des Arrays.
  • In weiteren Ausführungsformen können die Techniken als Produkt eines nichtflüchtigen Computerprogramms umgesetzt sein, das eine Reihe von auf einem Computer ausführbaren Befehlen umfasst. Das Produkt eines nichtflüchtigen Computerprogramms kann einen Prozess zur Verbesserung von Flash-Memory-Leerung ausführen. Das Computerprogramm kann die Schritte des Empfangens einer Anfrage zum Schreiben auf den Flash-Speicher; des Schreibens von Daten, die der Anfrage zugeordnet sind, auf den Flash-Speicher; des Identifizierens eines Zeigers auf eine Region-Bitmap, die einer Schreibregion für die Anfrage entspricht; des Markierens eines Bits der der Anfrage entsprechenden Region-Bitmap als schmutzig und des Aktualisierens des Zeigers auf die Region-Bitmap, sodass er einen Zählwert schmutziger Blöcke enthält, umfassen.
  • In noch weiteren Ausführungsformen können die Techniken als ein System zur Verbesserung der Flash-Speicher-Leerung umgesetzt sein. Das System kann eine Speichermedienvorrichtung und eine PCIe-basierte Vorrichtungssteuerung, die der Speichermedienvorrichtung zugeordnet ist, umfassen. Die PCIe-basierte Vorrichtungssteuerung kann konfiguriert sein, um eine Anfrage zum Schreiben auf den Flash-Speicher zu empfangen; die Anfrage auf den Flash-Speicher zu schreiben; einen Zeiger auf eine Region-Bitmap, die einer Schreibregion für die Anfrage entspricht, zu identifizieren; ein Bit der der Anfrage entsprechenden Region-Bitmap als schmutzig zu markieren und den Zeiger auf die Region-Bitmap zu aktualisieren, sodass er einen Zählwert schmutziger Blöcke enthält.
  • Gemäß zusätzlichen Aspekten dieser Ausführungsform kann das Aktualisieren des Zeigers auf die Region-Bitmap, sodass er einen Zählwert schmutziger Blöcke enthält, das Aktualisieren von einem oder mehreren Bits höherer Ordnung des Zeigers umfassen, sodass er den Zählwert schmutziger Blöcke enthält.
  • Gemäß weiteren Aspekten dieser Ausführungsform kann der Zeiger einen Zeiger mit 48 signifikanten unteren Bits und 16 Bits höherer Ordnung umfassen, wobei der Zählwert schmutziger Blöcke in den 16 Bits höherer Ordnung gespeichert ist.
  • Gemäß anderen Aspekten dieser Ausführungsform kann das Markieren eines Bits der Region-Bitmap, die der Anfrage entspricht, als schmutzig das Aktualisieren der Bits höherer Ordnung des Zeigers, sodass er einen Wert eines letzten signifikanten Bits des Zeigers enthält, und das Verwenden des aktualisierten Zeigers zur Identifizierung der Region-Bitmap umfassen.
  • Gemäß zusätzlichen Aspekten dieser Ausführungsform kann der Zeiger einen von einem Array von Zeigern umfassen, wobei das Array von Zeigern durch einen Zählwert schmutziger Blöcke in jedem der Zeiger geordnet ist.
  • Gemäß weiteren Aspekten dieser Ausführungsform kann die PCIe-basierte Vorrichtungssteuerung ferner konfiguriert sein, um eine schmutzigste Region von einer Vielzahl von Regionen des Flash-Speichers unter Verwendung des geordneten Zeigerarrays zu identifizieren und einen oder mehrere Blöcke der schmutzigsten Region auf den herkömmlichen Speicher zu schreiben.
  • Gemäß weiteren Aspekten dieser Ausführungsform kann das Schreiben von einem oder mehreren Blöcken auf den herkömmlichen Speicher durch Detektion von einem oder mehreren Faktoren getriggert werden.
  • Gemäß zusätzlichen Aspekten dieser Ausführungsform können der eine oder die mehreren Faktoren mindestens eines von: einer bestimmten Schwelle von erreichten schmutzigen Blöcken, einem CPU-Nutzungsgrad, einem Netzwerknutzungsgrad, einem Eingangs-/Ausgangswert eines herkömmlichen Speichers, einem zeitbedingten Entfernen von einem oder mehreren Blöcken aus dem Cache und einer vom Benutzer bestimmten Präferenz umfassen.
  • Die vorliegende Offenbarung wird nun in Bezug auf beispielhafte Ausführungsformen derselben in den beigefügten Zeichnungen detaillierter beschrieben. Zwar wird die vorliegende Offenbarung weiter unten in Bezug auf beispielhafte Ausführungsformen beschrieben, doch gilt es zu verstehen, dass die vorliegende Offenbarung nicht darauf beschränkt ist. Fachleute auf dem Gebiet der Technik, die Zugang zu den Erörterungen hierin haben, werden zusätzliche Umsetzungen, Modifikationen und Ausführungsformen sowie weitere Einsatzbereiche erkennen, die innerhalb des Schutzumgangs der vorliegenden Offenbarung wie hier beschrieben liegen und in Bezug auf die die vorliegende Offenbarung von signifikantem Nutzen sein kann.
  • Kurze Beschreibung der Zeichnungen
  • Um ein umfassendes Verständnis der vorliegenden Offenbarung zu erleichtern, wird nun auf die beigefügten Zeichnungen hingewiesen, in denen auf gleiche Elemente mit den gleichen Bezugszeichen verwiesen wird. Diese Zeichnungen sollten nicht als die vorliegende Offenbarung einschränkend ausgelegt werden, sondern sollen nur beispielhaft sein.
  • 1 ist ein Blockdiagramm, das eine Vielzahl von PCIe-Vorrichtungen in Kommunikation mit einer Hostvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 2A ist ein Blockdiagramm, das ein Modul zur Verbesserung der Flash-Speicher-Leerung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 2B ist ein Flussdiagramm, das ein Verfahren zur Verwendung einer Bitmap zum Speichern von zu schreibenden Blöcken gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
  • 2C ist ein Flussidagramm, das ein Verfahren, um als erstes eine schmutzigste Region zurückzuschreiben, gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 2D ist ein Flussdiagramm, das ein Verfahren zum Sortieren von Regionen gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 3 ist ein Flussdiagramm, das ein Verfahren zur Verbesserung der Flash-Speicher-Leerung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 4 ist ein Flussdiagramm, das ein Verfahren zur Verbesserung der Flash-Speicher-Leerung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • Beschreibung
  • Die vorliegende Erfindung betrifft Techniken zur Verbesserung des Verlegens von modifizierten Daten von SSD (z. B. umfassend Flash-Speicher) auf herkömmliche Speicher (z. B. Platte, Band usw.).
  • Gemäß einigen Ausführungsformen werden die Schreibvorgänge, wenn sie mit einem Satz von Daten präsentiert werden, die in einer zufälligen Reihenfolge geschrieben wurden, zunächst auf einem Direktzugriffs-freundlichen Halbleiterspeicher gespeichert. Datenstrukturen, Algorithmen und/oder Schaltungen (z. B. (Mikro-)Prozessor, Logikschaltungen, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierbare logische Steuerung (z. B. FPGA) und eine eingebettete Mikrosteuerung), können bereitgestellt sein, um zu ermöglichen, dass diese Schreibvorgänge geordnet, mit einer verbesserten Wahrscheinlichkeit von kontinuierlichem Durchlaufen von logischen Blockadressen, wieder auf einen herkömmlichen Speicher geschrieben werden können.
  • Um zu den Zeichnungen zu kommen, ist 1 ein Blockdiagramm, das eine Vielzahl von PCIe-Vorrichtungen in Kommunikation mit einer Hostvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. 1 enthält eine Anzahl von Rechentechnologien, wie ein Hostsystem 102, eine Host-CPU 104 und einen PCI-Express-Root-Complex 106. Ein Schalter 108 kann eine Vielzahl von Zielobjekten (z. B. PCIe-Vorrichtungen, wie einem NVMe-basierten Zielobjekt), wie Zielobjekte 110, 116 und 122, über den PCI-Express-Root-Complex 106 mit dem Hostsystem 102 kommunikativ verbinden.
  • Das Zielobjekt 110 kann eine Steuerung 112 (z. B. eine NVME-Steuerung) und einen nichtflüchtigen Speicher 114 umfassen. Das Zielobjekt 116 kann eine Steuerung 118 (z. B. eine NVMe-Steuerung) und einen nichtflüchtigen Speicher 120 umfassen. Das Zielobjekt 122 kann eine Steuerung 124 (z. B. eine NVMe-Steuerung) und einen nichtflüchtigen Speicher 126 umfassen.
  • Speicherbasierte Ressourcen können für das Hostsystem 102 über eine Speicherschnittstelle (z. B. synchroner dynamischer Direktzugriffspeicher Double-Data-Rate-Type-Three (DDR3 SDRAM)) zugänglich sein. Der Speicher kann jede geeignete Form aufweisen, wie z. B., aber nicht ausschließlich, Halbleiterspeicher (z. B. Flash-Speicher oder Halbleitervorrichtung (SSD)), optischer Speicher und Magnetspeicher.
  • Gemäß einigen Ausführungsformen können andere Schnittstellenstandards als PCIe für einen oder mehrere Abschnitte verwendet werden, darunter, aber nicht ausschließlich, Serial Advanced Technology Attachment (SATA), Advanced Technology Attachment (ATA), Small Computer System Interface (SCSI), PCI-extended (PCI-X), Fibre Channel, Serial Attached SCSI (SAS), Secure Digital (SD), Embedded Multi-Media Card (EMMC) und Universal Flash Storage (UFS).
  • Das Hostsystem 102 kann jede geeignete Form aufweisen, darunter, aber nicht ausschließlich, einen Unternehmensserver, einen Datenbank-Host, einen Arbeitsplatz, einen Personal Computer, ein Mobiltelefon, eine Spielvorrichtung, ein persönlicher digitaler Assistent (PDA), eine E-Mail-/Textnachrichtenvorrichtung, eine Digitalkamera, ein digitaler Medien-(z. B. MP3-)Player, eine GPS-Navigationsvorrichtung und ein TV-System.
  • Das Hostsystem 102 und die Zielvorrichtung können zusätzliche Komponenten umfassen, die in 1 aus Gründen der Vereinfachung der Zeichnung nicht gezeigt sind. Auch sind in einigen Ausführungsformen nicht alle der gezeigten Komponenten vorhanden. Ferner können die verschiedenen Steuerungen, Blöcke und Schnittstellen auf jede geeignete Weise umgesetzt sein. Zum Beispiel kann eine Steuerung die Form von einem oder mehreren von einem Mikroprozessor oder Prozessor und einem computerlesbaren Medium, das computerlesbaren Programmkode (z. B. Software oder Firmware) speichert, der durch den (Mikro-)Prozessor, Logikschaltungen, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierbare logische Steuerung (z. B. FPGA) und eine eingebettete Mikrosteuerung ausführbar ist, aufweisen.
  • 2A ist ein Blockdiagramm, das ein Modul zur Verbesserung der Flash-Speicher-Leerung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Komponenten können Hardware (z. B. dedizierte Schaltung), Firmware, Software oder eine Kombination der genannten sein.
  • In der nachstehenden Beschreibung werden Netzwerkelemente, Computer und/oder Komponenten eines Systems und Verfahrens für Back-up und Wiederherstellung erörtert, die eine oder mehrere Komponenten umfassen können. Der Begriff „Komponente”, wie hier verwendet, bezieht sich auf Rechensoftware, Firmware, Hardware und/oder verschiedene Kombinationen davon. Komponenten sind jedoch nicht als Software zu verstehen, die nicht auf Hardware oder Firmware umgesetzt oder auf einem Prozessor-lesbaren, aufzeichenbaren Speichermedium aufgezeichnet ist (d. h. Komponenten sind nicht Software für sich). Die Komponenten sind beispielhafter Natur. Die Komponenten können kombiniert, integriert, getrennt und/oder dupliziert sein, um verschiedene Anwendungen zu unterstützen. Auch kann eine Funktion, die als in einer bestimmten Komponente durchgeführt beschrieben ist, von einer oder mehreren weiteren Komponenten und/oder von einer oder mehreren weiteren Vorrichtungen anstatt oder zusätzlich zu der in der bestimmten Komponente durchgeführten Funktion durchgeführt werden. Ferner können die Komponenten in zahlreichen Vorrichtungen und/oder sonstigen Komponenten lokal oder entfernt zueinander umgesetzt sein. Darüber hinaus können die Komponenten von einer Vorrichtung verschoben und zu einer weiteren Vorrichtung hinzugefügt werden, und/oder in beiden Vorrichtungen enthalten sein. In einigen Ausführungsformen können eine oder mehrere Komponenten als Teil einer SSD-Steuerung, eines Host-Systems und/oder einer SSD-Optimierungssoftware umgesetzt sein. Wie in 2A gezeigt, können Komponenten 210 zur Verbesserung der SSD-Leerung eine Schreibvorgangsüberwachungskomponente 212, eine Komponente 214 zur Identifizierung schmutziger Regionen, eine Arrayverwaltungskomponente 216 und eine Fehlerprotokollierungs- und Berichterstattungskomponente 218 umfassen.
  • Die Schreibvorgangsüberwachungskomponente 212 kann Daten verfolgen, die auf einen SSD (z. B. Flash-Speicher), aber noch nicht auf einen herkömmlichen Speicher (z. B. schmutziger Speicher) geschrieben wurden. Jeden Block oder jede sonstige Einheit durchzugehen, um ihn/sie mit Sicherungsspeichern (z. B. Platte) zu vergleichen, um veränderte Blöcke zu identifizieren, kann ressourcen- und/oder zeitintensiv sein. In einigen Ausführungsformen kann die Schreibvorgangsüberwachungskomponente 212, wenn ein Abschnitt des SSD-Speichers modifiziert wird, die Schreibvorgänge unter Verwendung von einer oder mehreren Datenstrukturen und/oder Schaltungen auffinden. Zum Beispiel kann die Schreibvorgangsüberwachungskomponente 212 in einigen Ausführungsformen eine Bitmap verwenden, um Blöcke, die für jede Region zu schreiben sind, zu speichern. Herkömmliche Sicherungsspeichervorrichtungen können in Regionen mit fixierter Größe unterteilt sein. Zum Beispiel kann jede Region 32768 Blöcke umfassen, wobei jeder Block vier Kilobytes groß sein kann.
  • 2B ist ein Flussdiagramm, das ein beispielhaftes Verfahren 220 zur Verwendung einer Bitmap zum Speichern von zu schreibenden Blöcken veranschaulicht. Gemäß einigen Ausführungsformen kann die Arrayverwaltungskomponente 216, wenn ein System gestartet wird, jeder Region ein Array von Zeigern 222 zuweisen und das Array auf NULL Werte 224 parametrieren. Wenn eine Region erstmals beschrieben wird, kann eine Speicherseite von 4 Kilobyte zugewiesen 226 und ein Zeiger für diese Region aktualisiert werden, um zur neu zugewiesenen Speicherseite zu zeigen 228.
  • In einem Beispiel umfasst eine 4-Kilobyte-Speicherseite 32768 einzelne Speicherbits. Dieser Speicher kann als Bitmap verwendet werden. Wenn ein Block zunächst auf einen temporären Direktzugriffspeicher geschrieben wird, kann seine logische Blockadresse vorerst maskiert und verschoben sein, um die geeignete Region 230 zu bestimmen. Nach der Zuweisung kann von der Schreibvorgangsüberwachungskomponente 212 ein Zeiger verwendet werden, um die Bitmap für eine Region 232 zu lokalisieren. Zum Beispiel kann eine SSD-Speicherstelle, sobald sie zugewiesen ist, einem Zeiger, Wert oder Verweis zugeordnet werden, der eine Stelle einer Bitmap, Hashmap oder sonstigen Datenstruktur anzeigt, die Hinweise darüber speichert, welche Bits im SSD-Speicher noch nicht auf den herkömmlichen Speicher geschrieben wurden. Die Bits niedrigerer Ordnung (z. B. signifikant niedrigere Bits) der logischen Blockadresse für einen Block, der auf den temporären Direktzugriffspeicher geschrieben wurde, kann dann als Offset in die Bitmap verwendet werden, um ein entsprechendes Bit zu lokalisieren. In einigen Ausführungsformen erfordert dies möglicherweise kein Suchen, sondern nur Vorgänge über eine konstante Zeit (d. h. eine Zeit, die zum Abschluss der Vorgänge erforderlich ist, kann von einer Größe der Eingabe unabhängig sein), um einen Block als „schmutzig” (z. B. ein zukünftiges Zurückschreiben auf den herkömmlichen Speicher erfordernd) zu markieren.
  • Die Komponente 214 zur Identifizierung von schmutzigen Regionen kann bestimmen, wann schmutzige Abschnitte eines SSD auf einen herkömmlichen Speicher zu verlegen sind und/oder welche Abschnitte in welcher Reihenfolge zu verlegen sind. In einigen Ausführungsformen sind lange sequenzielle Durchlaufe von Schreibvorgängen auf einem konventionellen Speicher wünschenswert. Um dies zu erreichen, können Schreibvorgänge auf einen herkömmlichen Speicher durchgeführt werden, sobald eine oder mehrere Regionen eines SSD ausreichend schmutzig sind (z. B. eine signifikante Anzahl an sequenziellen schmutzigen Blöcken enthalten). Die Bestimmung, wann eine oder mehrere Regionen ausreichend schmutzig sind, kann von einem oder mehreren Faktoren abhängig und konfigurierbar sein (z. B. eine Anzahl, ein Prozentsatz oder ein sonstiger Indikator einer Menge von schmutzigen Blöcken in einer Region). Um die Wahrscheinlichkeit, dass eine Region ausreichend schmutzig ist, um geleert zu werden, zu verbessern, kann die Komponente 214 zur Identifizierung von schmutzigen Regionen eine schmutzigste Region identifizieren, die als erste zu schreiben ist.
  • 2C ist ein Flussidagramm, das ein beispielhaftes Verfahren 234, um als erstes eine schmutzigste Region zurückzuschreiben, gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wenn es an der Zeit ist, Daten zurück auf den herkömmlichen Speicher zu schreiben, wird die Gruppe von Regionen sortiert 236 und die schmutzigste (am meisten mit Daten, die Schreiben erfordern, belegten) Region wird durch die Komponente 214 zur Identifizierung von schmutzigen Regionen ausgewählt 238. Gemäß einigen Ausführungsformen kann die Arrayverwaltungskomponente 216 die Regionen sortieren.
  • Dem Zeiger für diese Region kann gefolgt werden, um auf die entsprechende Bitmap 240 zuzugreifen. Die Bitmap kann dann vorwärts durchlaufen 242 werden. Die logische Basisblockadresse der Region kann mit dem Offset jedes Bits in der Map kombiniert werden, um die logische Blockadresse auszubilden, die ein Zurückschreiben 244 erfordert.
  • Das Sortieren der Regionen kann herkömmlicher Weise das Zählen aller Bits, die in jeder Bitmap festgelegt sind, umfassen, um einen schmutzigste Region zu identifizieren. Dies kann unvorteilhaft sein, da es eine umfangreiches, CPU-intensives Scannen der Bitmap erfordern kann, um die Anzahl festgelegter Bits zu bestimmen. In einigen Ausführungsformen kann die Schreibvorgangsüberwachungskomponente 212 Platz in einem Zeiger auf eine schmutzige Bitmap einer Region verwenden, um eine Anzahl von Abschnitten schmutzigen Speicherplatzes in einer Region (z. B. eine Anzahl von Bits, die in einem 4-Kilobyte-Bitmapblock festgelegt sind) anzuzeigen. Zum Beispiel können in einer x86_64-Architektur nur 48 Bits von einem 64-Bit-Zeiger signifikant sein. Die Bits höherer Ordnung können Erweiterungen der 48 Bits niedriger Ordnung, z. B. signifikant niedrigeren Bits, sein. Das bedeutet, dass die Bits für die obersten 16 Bits dieselben sein können und dass bei Verlust der Wert von Bit 47 erhalten werden kann. In einigen Ausführungsformen kann die Schreibvorgangsüberwachungskomponente 212 die Anzahl von im Bitmapblock festgelegten Bits in den 16 Bits höherer Ordnung des Zeigers in einem Array von Zeigern speichern. Die Arrayverwaltungskomponente 216 kann eine Bitzahl in jedem Zeiger eines Arrays oder einer sonstigen Datenstruktur von Zeigern (oder sonstigen Referenzstrukturen) verwenden, um ein Array zu sortieren, sodass ein erster Zeiger der schmutzigste ist.
  • 2D ist ein Flussdiagramm, das ein beispielhaftes Verfahren 246 zum Sortieren von Regionen gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Die Arrayverwaltungskomponente 216 kann ein kompaktes, sortiertes Array von 4-Byte-Offsets 248 in das Hauptzeigerarray, das einen Zeiger pro Region umfasst, erhalten. Wenn es an der Zeit ist, einige Rückschreibvorgänge auf den herkömmlichen Speicher durchzuführen, kann das Array sortiert werden, ganz ohne den Zeigern zu den Bitmapblöcken zu folgen 250. Dies kann im Wesentlichen den Aufwand verringern, die schmutzigste zurückzuschreibende Region aufzufinden.
  • Um einem Zeiger zu folgen, der modifiziert wurde, um eine Anzahl schmutziger Bits zu speichern, kann der Zeiger wiederhergestellt 252 werden. In einigen Ausführungsformen kann der Zeiger wiederhergestellt werden, indem ein letztes signifikantes Bit in die Bits höherer Ordnung erweitert wird (z. B. durch Kopieren des Werts von Bit 47 in die Bits 48–63). Wenn die Anzahl der in der Bitmap festgelegten Bits angepasst 254 wurde, kann die neue Anzahl in den Bits höherer Ordnung 256 gespeichert werden.
  • In einigen Ausführungsformen kann die Komponente 214 zur Identifizierung von schmutzigen Regionen eine Vielzahl von Regionen ordnen, und einer oder mehrere Faktoren können zusätzlich zu einer Zahl, einem Prozentsatz oder einem sonstigen Indikator einer Menge von schmutzigen Blöcken in einer Region bewertet werden. Zum Beispiel kann das Alter von Daten in einer SSD-Region berücksichtigt werden. Weitere Faktoren können Algorithmen wie Last In First Out (LIFO), First In First Out (FIFO) oder sonstige Techniken zur Bestimmung der zu schreibenden Regionen umfassen. Wenn z. B. eine erste Region schmutziger ist als eine zweite Region, aber die erste Region nach wie vor signifikanten Eingangs-/Ausgangs-(I/O-)Datenverkehr empfängt, kann eine zweite Region in einigen Ausführungsformen zuerst geschrieben werden.
  • Die Arrayverwaltungskomponente 216 kann ein Array oder eine sonstige Datenstruktur, das/die Verweise auf Bitmaps, die schmutzige SSD-Regionen anzeigen, erhalten. Gewisse Sortierungsalgorithmen können ein besseres Leistungsverhalten aufweisen, wenn ein Array im Wesentlichen bereits sortiert ist. Eine oder mehrere der oben beschriebenen Ausführungsformen können eine Gruppe von Regionen sortieren, eine schmutzigste Region hernehmen und diese vollständig bereinigen, und den verbleibenden Teil des Arrays in einem sortierten Zustand belassen. Dies kann gut funktionieren, was das Verlegen von schmutzigen Regionen auf einen herkömmlichen Speicher betrifft, weil es der Komponente zur Identifizierung schmutziger Regionen ermöglichen kann, zur nächsten schmutzigsten Region (die in gleichem Maße schmutzig sein kann) überzugehen. Ein im Wesentlichen sortiertes Array mit einem fehlsortierten Block am Anfang kann fehlerhaftes Verhalten an den Tag legen und viele CPU-Vorgänge erfordern, um zur neuen, richtigen Position am Ende des Arrays überzugehen.
  • Um dies zu beheben, kann die Arrayverwaltungskomponente 216 das sortierte Array als kreisförmiges Array behandeln, bei dem Anfang und Ende versetzbar sind. Der sortierte Anfang eines Arrays kann sich im Offset 0 befinden, und das Ende kann das letzte Element des Speicherblocks, der das Array enthält, sein. Sobald die am höchsten gereihte Region bereinigt ist, kann es nach wie vor im Offset 0 vorhanden, aber inkorrekt sortiert sein. Anstatt das Array auf herkömmliche Weise umzusortieren und die Daten zu verschieben, kann die Arrayverwaltungskomponente 216 die sortierten Anfangs- und Endoffsets anpassen, sodass das gesamte kreisförmige Array um eins versetzt wird. Das sortierte Anfangsoffset kann zu 1 werden, und das 0. Element des Arrays kann nun das letzte Element des Arrays sein. Auf diese Weise wird die Region, die auf 0 schmutzige Blöcke reduziert wurde, in einem Vorgang über konstante Zeit zur richtigen Position am Ende des Arrays umsortiert, wobei das Array ansonsten sortiert bleibt.
  • Die Fehlerprotokollierungs- und Berichterstattungskomponente 218 kann Fehler erkennen und Fehler, die der Überwachung von Schreibanfragen, der Identifizierung von schmutzigen Regionen und/oder der Verwaltung von Datenstrukturen, die schmutzige Regionen (z. B. Zeigerarrays) aufspüren, zugeordnet sind, protokollieren. In einigen Ausführungsformen kann die Fehlerprotokollierungs- und Berichterstattungskomponente 218 Fehlerbenachrichtigungen bereitstellen.
  • 3 ist ein Flussdiagramm, das ein Verfahren zur Verbesserung der Flash-Speicher-Leerung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Der Prozess 300 hat allerdings nur beispielhaften Charakter. Der Prozess 300 kann verändert werden, z. B. durch Hinzufügen, Ändern, Entfernen oder Umordnen von Schritten. Der Prozess kann mit Schritt 302 beginnen.
  • Bei Schritt 304 kann eine Flash-Speicher-Schreibanfrage empfangen werden. Bei Schritt 306 kann die Schreibanfrage auf eine Flash-Speicher-Region geschrieben werden. Für eine Vielzahl von Regionen eines SSD kann ein Array von Zeigern, einer für jede Region, zugeordnet werden, und jedes Array kann auf NULL Werte parametriert werden.
  • Bei Schritt 308, kann, wenn eine Region zuerst beschrieben wird, eine Speicherseite zugewiesen und ein Zeiger für diese Region aktualisiert werden, um zur neu zugewiesenen Speicherseite zu zeigen.
  • Bei Schritt 310 können, wenn zuvor ein Zeiger zugewiesen und Bits höherer Ordnung des Zeigers überschrieben wurden, um einen Zählwert schmutziger Blöcke zu speichern, die Bits höherer Ordnung wiederhergestellt werden. Zum Beispiel können in einer x86_64-Architektur nur 48 Bits von einem 64-Bit-Zeiger signifikant sein. Die Bits höherer Ordnung können Erweiterungen der 48 Bits niedriger Ordnung, z. B. signifikant niedrigeren Bits, sein. Das bedeutet, dass die Bits für die obersten 16 Bits dieselben sein können und dass bei Verlust der Wert von Bit 47 erhalten werden kann.
  • Bei Schritt 312 kann ein Zeiger nach der Zuweisung verwendet werden, um die Bitmap für eine Region zu finden. Die Bits niedrigerer Ordnung der logischen Blockadresse für einen Block, der auf einen temporären Direktzugriffspeicher geschrieben wurde, kann dann als Offset in die Bitmap verwendet werden, um ein entsprechendes Bit zu lokalisieren. In einigen Ausführungsformen erfordert dies möglicherweise kein Suchen, sondern nur Vorgänge über eine konstante Zeit, um einen Block als „schmutzig” (z. B. ein zukünftiges Zurückschreiben auf den herkömmlichen Speicher erfordernd) zu markieren.
  • Bei Schritt 314 kann Platz in einem Zeiger auf die schmutzige Bitmap der Region verwendet werden, um eine Zahl von Abschnitten schmutzigen Speicherplatzes in einer Region (z. B. eine Anzahl von Bits, die in einem 4-Kilobyte-Bitmapblock festgelegt sind) anzuzeigen. Zum Beispiel können in einer x86_64-Architektur nur 48 Bits von einem 64-Bit-Zeiger signifikant sein. Die Bits höherer Ordnung können Erweiterungen der 48 Bits niedriger Ordnung, z. B. signifikant niedrigeren Bits, sein. Das bedeutet, dass die Bits für die obersten 16 Bits dieselben sein können und dass bei Verlust der Wert von Bit 47 erhalten werden kann. In einigen Ausführungsformen kann die Zahl von Bits, die im Bitmapblock festgelegt sind, in den 16 Bits höherer Ordnung des Zeigers in einem Zeigerarray gespeichert werden.
  • Mit Schritt 316 kann das Verfahren 300 enden.
  • 4 ist ein Flussdiagramm, das ein Verfahren zur Verbesserung der Flash-Speicher-Leerung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • Der Prozess 400 hat allerdings nur beispielhaften Charakter. Der Prozess 400 kann verändert werden, z. B. durch Hinzufügen, Ändern, Entfernen oder Umordnen von Schritten. Der Prozess kann mit Schritt 402 beginnen.
  • Bei Schritt 404 kann ein Array von Zeigern auf schmutzige Region-Bitmaps sortiert werden. Es kann eine Bitzahl in jedem Zeiger eines Arrays oder einer sonstigen Datenstruktur von Zeigern (oder sonstigen Referenzstrukturen) verwenden, um ein Array zu sortieren, sodass ein erster Zeiger der schmutzigste ist.
  • Bei Schritt 406 kann bestimmt werden, ob eine Leerungsschwelle erreicht wurde. Es können einer oder mehrere Faktoren bewertet werden, um zu bestimmen, ob schmutziger SSD-Speicher auf einen herkömmlichen Speicher verlegt werden soll. Die Faktoren können z. B. eines oder mehrere einer spezifizierten Schwelle von erreichten schmutzigen Blöcken, einen CPU-Nutzungsgrad, einen Netzwerknutzungsgrat, einen Eingangs-/Ausgangswert eines herkömmlichen Speichers, ein zeitbedingtes Entfernen von einem oder mehreren Blöcken aus dem Cache und einer vom Benutzer bestimmten Präferenz umfassen. Wenn bestimmt wird, dass ein Leeren durchgeführt werden soll, kann das Verfahren mit Schritt 408 fortgeführt werden. Wenn bestimmt wird, dass kein Leeren durchgeführt werden soll, kann das Verfahren mit Schritt 414 enden.
  • Bei Schritt 408 kann eine schmutzigste Region identifiziert werden. In einigen Ausführungsformen kann Platz in einem Zeiger auf eine schmutzige Bitmap einer Region eine Anzahl von Abschnitten schmutzigen Speicherplatzes in einer Region (z. B. eine Anzahl von Bits, die in einem 4-Kilobyte-Bitmapblock festgelegt sind) anzeigen. Zum Beispiel können in einer x86_64-Architektur nur 48 Bits von einem 64-Bit-Zeiger signifikant sein. Die Bits höherer Ordnung können Erweiterungen der 48 Bits niedriger Ordnung, z. B. signifikant niedrigeren Bits, sein. Das bedeutet, dass die Bits für die obersten 16 Bits dieselben sein können und dass bei Verlust der Wert von Bit 47 erhalten werden kann. Ein Array von Zeigern auf schmutzige Regionen kann eine Bitzahl in jedem Zeiger eines Arrays oder einer sonstigen Datenstruktur von Zeigern (oder sonstigen Referenzstrukturen) verwenden, um ein Array zu sortieren, sodass ein erster Zeiger der schmutzigste ist.
  • Bei Schritt 410 können schmutzige Blöcke, die einer schmutzigsten Region zugeordnet sind, auf den herkömmlichen Speicher (z. B. Platte, Band usw.) geschrieben werden. In einigen Ausführungsformen können schmutzige Blöcke von einer Bitmap schmutziger Blöcke identifiziert werden, indem eine logische Basisblockadresse einer Bitmap schmutziger Regionen und ein Offset, das einem bestimmten schmutzigen Bit entspricht, verwendet werden, um eine logische Blockadresse für einen dem schmutzigen Bit entsprechenden schmutzigen Block bereitzustellen.
  • Bei Schritt 410 kann bestimmt werden, ob in einem Array von Zeigern auf Bitmaps schmutziger Regionen ein weiterer Bitmap-Zeiger existiert. Wenn keine weiteren Zeiger existieren (z. B. wenn alle schmutzigen Bitmaps größer oder gleich einer Leerungsschwelle auf eine Platte verschoben und in einem Array sortiert wurden), kann das Verfahren 400 mit Schritt 414 enden. Wenn ein weiterer Bitmap-Zeiger für eine schmutzige Region existiert, kann das Verfahren 400 mit Schritt 412 fortgeführt werden.
  • Bei Schritt 412 kann ein Zeiger, der einer nächsten schmutzigsten Bitmap entspricht, als Ausgangspunkt des Arrays markiert werden. Der sortierte Anfang eines Arrays kann sich im Offset 0 befinden, und das Ende kann das letzte Element des Speicherblocks, der das Array enthält, sein. Sobald die am höchsten gereihte Region bereinigt ist (z. B. nach Schritt 408), kann der Regionenzeiger im Offset 0 nach wie vor vorhanden, aber inkorrekt sortiert sein. Anstatt das Array auf herkömmliche Weise umzusortieren und die Daten zu verschieben, kann das Verfahren 400 die sortierten Anfangs- und Endoffsets anpassen, sodass das gesamte kreisförmige Array um eins versetzt wird. Das sortierte Anfangsoffset kann zu 1 werden, und das 0. Element des Arrays kann nun das letzte Element des Arrays sein. Auf diese Weise wird die Region, die auf 0 schmutzige Blöcke reduziert wurde, in einem Vorgang über konstante Zeit zur richtigen Position am Ende des Arrays umsortiert, wobei das Array ansonsten sortiert bleibt. Nachdem ein Arrayanfangselement angepasst wurde, kann das Verfahren 400 zu Schritt 406 zurückkehren.
  • Bei Schritt 414 kann das Verfahren 400 enden.
  • Weitere Ausführungsformen liegen innerhalb des Schutzumfangs und des Geistes der Erfindung. Die oben beschriebenen Funktionen können zum Beispiel unter Verwendung von Software, Hardware, Firmware, Festverdrahtung oder Kombinationen davon umgesetzt werden. Einer oder mehrere Computerprozessoren, die gemäß Anweisungen betrieben werden, können die zugeordneten Funktionen umsetzen, um die Flash-Speicher-Leerung gemäß der vorliegenden Offenbarung wie oben beschrieben zu verbessern. Wenn dies der Fall ist, liegt es innerhalb des Schutzumfangs der vorliegenden Erfindung, dass solche Anweisungen auf einem oder mehreren nichtflüchtigen Prozessor-lesbaren Speichermedium/Speichermedien (z. B. einer Magnetplatte oder einem sonstigen Speichermedium) gespeichert werden können. Ferner können Funktionen umsetzende Module auch physisch in verschiedenen Positionen angeordnet sein, was eine Verteilung einschließt, bei der Abschnitte von Funktionen in verschiedenen physischen Positionen ausgeführt werden.
  • Die vorliegende Erfindung wird von den spezifischen, hier beschriebenen Ausführungsformen nicht in ihrem Umfang eingeschränkt. Für Fachleute auf dem Gebiet der Technik werden anhand der obigen Beschreibung und den beigefügten Zeichnungen verschiedene weitere Ausführungsformen und Veränderungen der vorliegenden Offenbarung, zusätzlich zu den hier beschriebenen, ersichtlich sein. Diese weiteren Ausführungsformen und Veränderungen fallen daher in den Schutzumfang der vorliegenden Offenbarung. Obwohl die vorliegende Erfindung hier im Zusammenhang mit einer bestimmten Umsetzung in einem bestimmten Umfeld für einen bestimmten Zweck beschrieben wurde, werden Fachleute ferner erkennen, dass ihr Nutzen nicht darauf beschränkt ist und dass die vorliegende Erfindung in einer Anzahl von Umgebungen für eine beliebige Anzahl von Zwecken vorteilhaft umgesetzt werden kann. Dementsprechend sind die weiter unten angeführten Ansprüche mit Blick auf die volle Bandbreite und den Geist der vorliegenden Offenbarung wie hier beschrieben auszulegen.

Claims (20)

  1. Verfahren zur Verbesserung von Flash-Speicher-Leerung, umfassend: Empfangen einer Anfrage zum Schreiben auf den Flash-Speicher; Schreiben von Daten, die der Anfrage zugeordnet sind, auf den Flash-Speicher; Identifizieren eines Zeigers auf eine Region-Bitmap, die einer Schreibregion für die Anfrage entspricht; Markieren eines Bits der der Anfrage entsprechenden Region-Bitmap als schmutzig; und Aktualisieren des Zeigers auf die Region-Bitmap unter Verwendung einer Zeigerverwaltungskomponente, sodass er einen Zählwert schmutziger Blöcke enthält.
  2. Verfahren nach Anspruch 1, wobei das Aktualisieren des Zeigers auf die Region-Bitmap, sodass er einen Zählwert schmutziger Blöcke enthält, das Aktualisieren von einem oder mehreren höherwertigen Bits des Zeigers umfasst, sodass er den Zählwert schmutziger Blöcke enthält.
  3. Verfahren nach Anspruch 2, wobei der Zeiger einen Zeiger mit 48 signifikanten unteren Bits und 16 Bits höherer Ordnung umfasst, wobei der Zählwert schmutziger Blöcke in den 16 Bits höherer Ordnung gespeichert ist.
  4. Verfahren nach Anspruch 2, wobei das Markieren eines Bits der Region-Bitmap, die der Anfrage entspricht, als schmutzig das Aktualisieren der Bits höherer Ordnung des Zeigers, sodass er einen Wert eines letzten signifikanten Bits des Zeigers umfasst, und das Verwenden des aktualisierten Zeigers zur Identifizierung der Region-Bitmap umfasst.
  5. Verfahren nach Anspruch 1, wobei der Zeiger einen von einem Array von Zeigern umfasst, wobei das Array von Zeigern durch einen Zählwert schmutziger Blöcke in jedem der Zeiger geordnet ist.
  6. Verfahren nach Anspruch 5, ferner umfassend: Identifizieren einer schmutzigsten Region von einer Vielzahl von Regionen des Flash-Speichers unter Verwendung des geordneten Arrays von Zeigern; und Schreiben von einem oder mehreren Blöcken der schmutzigsten Region auf einen herkömmlichen Speicher.
  7. Verfahren nach Anspruch 6, wobei das Schreiben von einem oder mehreren Blöcken auf den herkömmlichen Speicher durch Detektion von einem oder mehreren Faktoren getriggert wird.
  8. Verfahren nach Anspruch 7, wobei der eine oder die mehreren Faktoren mindestens eines von einer bestimmten Schwelle von erreichten schmutzigen Blöcken, einem CPU-Nutzungsgrad, einem Netzwerknutzungsgrad, einem Eingangs-/Ausgangswert eines herkömmlichen Speichers, einem zeitbedingten Entfernen von einem oder mehreren Blöcken aus dem Cache und einer vom Benutzer bestimmten Präferenz umfassen.
  9. Verfahren nach Anspruch 6, wobei das Schreiben eines oder mehrerer Blöcke der schmutzigsten Region auf einen herkömmlichen Speicher das Verwenden einer Basisadresse einer Region-Bitmap und eines Offsets, das einem Bit der Region-Bitmap zugeordnet ist, zur Identifizierung einer logischen Blockadresse, die auf einen herkömmlichen Speicher zu schreibenden Daten zugeordnet ist, umfasst.
  10. Verfahren nach Anspruch 6, ferner umfassend, nach dem Schreiben eines oder mehrerer, einer ersten Region zugeordneter Blöcke, das Identifizieren eines zweiten Zeigers im Array von Zeigern, der einer zweiten schmutzigsten Region zugeordnet ist.
  11. Verfahren nach Anspruch 10, wobei, wenn ein oder mehrere Blöcke, die einem ersten Zeiger zugeordnet sind, auf einen herkömmlichen Speicher geschrieben werden, ein Offset des zweiten Zeigers zu einem Ausgangspunkt des Arrays wird.
  12. Computerprogrammprodukt, umfassend eine Reihe von auf einem Computer ausführbaren Befehlen, wobei das Computerprogrammprodukt einen Prozess zur Verbesserung von Flash-Memory-Leerung ausführt; wobei das Computerprogramm folgende Schritte umsetzt: Empfangen einer Anfrage zum Schreiben auf den Flash-Speicher; Schreiben von Daten, die der Anfrage zugeordnet sind, auf den Flash-Speicher; Identifizieren eines Zeigers auf eine Region-Bitmap, die einer Schreibregion für die Anfrage entspricht; Markieren eines Bits der der Anfrage entsprechenden Region-Bitmap als schmutzig; und Aktualisieren des Zeigers auf die Region-Bitmap, sodass er einen Zählwert schmutziger Blöcke enthält.
  13. System zur Verbesserung von Flash-Speicher-Leerung, wobei das System Folgendes umfasst: eine Speichermedienvorrichtung; eine PCIe-basierte Vorrichtungssteuerung, die der Speichermedienvorrichtung zugeordnet ist, wobei die PCIe-basierte Vorrichtungssteuerung konfiguriert ist, um: eine Anfrage zum Schreiben auf den Flash-Speicher zu empfangen; Daten, die der Anfrage zugeordnet sind, auf den Flash-Speicher zu schreiben; einen Zeiger auf eine Region-Bitmap, die einer Schreibregion für die Anfrage entspricht, zu identifizieren; ein Bit der der Anfrage entsprechenden Region-Bitmap als schmutzig zu markieren und den Zeiger auf die Region-Bitmap zu aktualisieren, sodass er einen Zählwert schmutziger Blöcke enthält.
  14. System nach Anspruch 13, wobei das Aktualisieren des Zeigers auf die Region-Bitmap, um einen Zählwert schmutziger Blöcke zu enthalten, das Aktualisieren von einem oder mehreren Bits höherer Ordnung des Zeigers umfasst, sodass er den Zählwert schmutziger Blöcke enthält.
  15. System nach Anspruch 14, wobei der Zeiger einen Zeiger mit 48 signifikanten unteren Bits und 16 Bits höherer Ordnung umfasst, wobei der Zählwert schmutziger Blöcke in den 16 Bits höherer Ordnung gespeichert ist.
  16. System nach Anspruch 14, wobei das Markieren eines Bits der Region-Bitmap, die der Anfrage entspricht, als schmutzig das Aktualisieren der Bits höherer Ordnung des Zeigers, sodass er einen Wert eines letzten signifikanten Bits des Zeigers enthält, und das Verwenden des aktualisierten Zeigers zur Identifizierung der Region-Bitmap umfasst.
  17. System nach Anspruch 13, wobei der Zeiger einen von einem Array von Zeigern umfasst, wobei das Array von Zeigern durch einen Zählwert schmutziger Blöcke in jedem der Zeiger geordnet ist.
  18. System nach Anspruch 17, wobei die PCIe-basierte Vorrichtungssteuerung ferner konfiguriert ist, um eine schmutzigste Region von einer Vielzahl von Regionen des Flash-Speichers unter Verwendung des geordneten Zeigerarrays zu identifizieren und einen oder mehrere Blöcken der schmutzigsten Region auf den herkömmlichen Speicher zu schreiben.
  19. System nach Anspruch 18, wobei das Schreiben von einem oder mehreren Blöcken auf den herkömmlichen Speicher durch Detektion von einem oder mehreren Faktoren getriggert wird.
  20. System nach Anspruch 19, wobei der eine oder die mehreren Faktoren mindestens eines von einer bestimmten Schwelle von erreichten schmutzigen Blöcken, einem CPU-Nutzungsgrad, einem Netzwerknutzungsgrad, einem Eingangs-/Ausgangswert eines herkömmlichen Speichers, einem zeitbedingten Entfernen von einem oder mehreren Blöcken aus dem Cache und einer vom Benutzer bestimmten Präferenz umfassen.
DE102016010276.4A 2015-08-24 2016-08-24 Verfahren und systeme zur verbesserung von flash-speicher-leerung Withdrawn DE102016010276A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/833,817 2015-08-24
US14/833,817 US10209891B2 (en) 2015-08-24 2015-08-24 Methods and systems for improving flash memory flushing

Publications (1)

Publication Number Publication Date
DE102016010276A1 true DE102016010276A1 (de) 2017-03-02

Family

ID=57045461

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016010276.4A Withdrawn DE102016010276A1 (de) 2015-08-24 2016-08-24 Verfahren und systeme zur verbesserung von flash-speicher-leerung

Country Status (6)

Country Link
US (1) US10209891B2 (de)
JP (1) JP2017084338A (de)
KR (1) KR101933766B1 (de)
CN (1) CN106486167B (de)
DE (1) DE102016010276A1 (de)
GB (1) GB2543391B (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170058482A (ko) * 2015-11-18 2017-05-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102426107B1 (ko) 2017-12-20 2022-07-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20190088790A (ko) 2018-01-19 2019-07-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN109002399B (zh) * 2018-07-09 2021-05-18 北京智芯微电子科技有限公司 嵌入式设备事件记录的方法
CN111240900B (zh) * 2019-05-23 2020-11-24 北京天华星航科技有限公司 基于虚拟磁带库的数据备份方法
CN112749134B (zh) * 2019-10-30 2024-05-17 伊姆西Ip控股有限责任公司 用于位图转换的方法、设备和计算机可读存储介质
US10923178B1 (en) * 2020-02-27 2021-02-16 Western Digital Technologies, Inc. Data storage with improved write performance for preferred user data
CN111597076B (zh) * 2020-05-12 2024-04-16 第四范式(北京)技术有限公司 操作数据的方法和装置以及管理持久化跳表的方法和装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341339A (en) 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
TW288120B (en) * 1994-04-18 1996-10-11 Macronix Int Co Ltd Solid-state disk sector link processing method and pointer structure
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
US6275912B1 (en) * 1998-06-30 2001-08-14 Microsoft Corporation Method and system for storing data items to a storage device
US6629198B2 (en) 2000-12-08 2003-09-30 Sun Microsystems, Inc. Data storage system and method employing a write-ahead hash log
JP3723960B2 (ja) * 2001-11-19 2005-12-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 外部記憶装置、外部記憶装置制御方法、プログラム及び記録媒体
US20030163633A1 (en) * 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US20040131055A1 (en) * 2003-01-06 2004-07-08 Juan-Carlos Calderon Memory management free pointer pool
US7380059B2 (en) * 2003-05-16 2008-05-27 Pillar Data Systems, Inc. Methods and systems of cache memory management and snapshot operations
US7039661B1 (en) * 2003-12-29 2006-05-02 Veritas Operating Corporation Coordinated dirty block tracking
US7231497B2 (en) * 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
JP5076411B2 (ja) 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
US7624129B2 (en) * 2006-06-30 2009-11-24 Microsoft Corporation Dual logging of changes to a user preference in a computer device
US8903888B1 (en) * 2006-10-27 2014-12-02 Hewlett-Packard Development Company, L.P. Retrieving data of a virtual machine based on demand to migrate the virtual machine between physical machines
US8074014B2 (en) * 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US8443166B2 (en) * 2009-03-06 2013-05-14 Vmware, Inc. Method for tracking changes in virtual disks
US8793440B2 (en) * 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
JP5609436B2 (ja) 2010-08-30 2014-10-22 セイコーエプソン株式会社 印刷装置におけるデータ記憶処理装置、印刷装置及びデータ記憶処理方法
US10817502B2 (en) * 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9092337B2 (en) * 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
WO2012116369A2 (en) * 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8806112B2 (en) * 2011-07-14 2014-08-12 Lsi Corporation Meta data handling within a flash media controller
KR101996641B1 (ko) * 2012-02-06 2019-07-04 삼성전자주식회사 메모리 오버레이 장치 및 방법
US8838936B1 (en) * 2013-11-27 2014-09-16 NXGN Data, Inc. System and method for efficient flash translation layer

Also Published As

Publication number Publication date
CN106486167A (zh) 2017-03-08
US10209891B2 (en) 2019-02-19
KR20170023734A (ko) 2017-03-06
US20170060433A1 (en) 2017-03-02
GB2543391A (en) 2017-04-19
CN106486167B (zh) 2019-11-15
KR101933766B1 (ko) 2018-12-28
GB2543391B (en) 2019-03-27
GB201614433D0 (en) 2016-10-05
JP2017084338A (ja) 2017-05-18

Similar Documents

Publication Publication Date Title
DE102016010276A1 (de) Verfahren und systeme zur verbesserung von flash-speicher-leerung
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE102013017179B4 (de) DMA-Integritätsprüfungseinheit
DE112010002663B4 (de) Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE69432878T2 (de) Informationsverarbeitungssystem mit Flash-Speicher und Cache-Speicher
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112012004540B4 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE102017128952A1 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE112013004400B4 (de) Herstellen einer Zeitpunktkopie-Beziehung zwischen logischen Quellenadressen und logischen Zieladressen
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
CN106339324B (zh) 一种选择垃圾回收块的方法及装置
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE112011103290T5 (de) Intelligente Schreibcacheoperation für sequenzielle Datenspuren
DE112017005014B4 (de) Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung der Vorhersage einer Datenstromlänge
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE112021000665T5 (de) Primärspeicher mit Deduplizierung
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE112020000498T5 (de) Migrieren von daten aus einem grossen extent-pool in einen kleinen extent-pool
DE112012002796T5 (de) Übertragen von in virtuellen Datenträgern organisierten deduplizierten Daten in einen Zielsatz von physischen Medien

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee