DE102015012621A1 - Offline-Deduplikation für Halbleiterspeichervorrichtungen - Google Patents

Offline-Deduplikation für Halbleiterspeichervorrichtungen Download PDF

Info

Publication number
DE102015012621A1
DE102015012621A1 DE102015012621.0A DE102015012621A DE102015012621A1 DE 102015012621 A1 DE102015012621 A1 DE 102015012621A1 DE 102015012621 A DE102015012621 A DE 102015012621A DE 102015012621 A1 DE102015012621 A1 DE 102015012621A1
Authority
DE
Germany
Prior art keywords
host data
flash memory
data units
data unit
physical address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102015012621.0A
Other languages
English (en)
Inventor
Gunter KNESTELE
Jeffrey L. Furlong
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
HGST Netherlands BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102015012621A1 publication Critical patent/DE102015012621A1/de
Withdrawn 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/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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/0641De-duplication techniques
    • 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
    • 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/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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein Verfahren zum Verwalten eines Flash-Speichersystems weist das Lesen von Flash-Dateneinheiten aus einem Flash-Speicher in einen Puffer, wobei jede der Flash-Dateneinheiten Host-Dateneinheiten aufweist, und das Bestimmen eines Identifizierers für jede Host-Dateneinheit auf. Das Verfahren weist das Auswählen eines Satzes eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche den jeweiligen eindeutigen Identifizierer geteilt verwenden, auf. Für jeden eindeutigen Identifizierer in dem Satz eindeutiger Identifizierer weist das Verfahren das Festlegen einer der Host-Dateneinheiten als eine Master-Dateneinheit auf, wobei die logische Adresse der festgelegten Host-Dateneinheit auf eine physikalische Adresse abgebildet wird. Die logischen Adressen der anderen Host-Dateneinheiten, welche den eindeutigen Identifizierer geteilt verwenden, werden auf die physikalische Master-Adresse abgebildet, und die physikalischen Adressen, die zuvor auf die neu abgebildeten logischen Adressen abgebildet waren, werden ungültig gemacht.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft Flash-Speichervorrichtungen und insbesondere Offline-Deduplikationsprozesse für Flash-Speichervorrichtungen.
  • Halbleiterspeichervorrichtungen (SSD) können einen Flash-Speicher als ein nicht flüchtiges Speichermedium verwenden. Ein Deduplikations- oder Deduplizierungsprozess ermöglicht eine wirksamere Verwendung von Platz. Bei einem Deduplikationsprozess werden duplizierte Dateneinträge entfernt. Statt mehrere Kopien der gleichen Daten an mehreren physikalischen Adressen auf der Speichervorrichtung zu speichern, wird nur eine Kopie der Daten an einer physikalischen Adresse gespeichert, wobei Verweise auf diese eine Kopie die anderen Kopien ersetzen. Die Deduplikation kann inline ausgeführt werden, wenn ein Schreibbefehl von einem Host empfangen wird. Vor dem Schreiben der Daten werden die Daten mit bereits auf der Speichervorrichtung gespeicherten Daten verglichen. Falls eine Übereinstimmung gefunden wird, wird ein Verweis auf diese Übereinstimmung verwendet, statt die Daten an eine neue physikalische Adresse zu schreiben. Diese Inline-Deduplizierung kann jedoch Latenz zu Schreibvorgängen hinzufügen.
  • KURZFASSUNG
  • Gemäß Aspekten der vorliegenden Technologie ist ein Verfahren zum Verwalten eines Flash-Speichersystems vorgesehen. Das Verfahren weist das Lesen mehrerer Flash-Dateneinheiten aus einem Flash-Speicher in einen Puffer, wobei jede der mehreren Flash-Dateneinheiten eine oder mehrere Host-Dateneinheiten aufweist, und das Bestimmen eines Identifizierers für jede der in den Puffer gelesenen Host-Dateneinheiten auf. Das Verfahren weist das Auswählen eines Satzes eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche die jeweiligen eindeutigen Identifizierer geteilt verwenden, auf. Für jeden eindeutigen Identifizierer im Satz eindeutiger Identifizierer weist das Verfahren Folgendes auf: Festlegen einer ersten Host-Dateneinheit, die den eindeutigen Identifizierer geteilt verwendet, als eine Master-Dateneinheit, wobei eine logische Adresse der ersten Host-Dateneinheit auf eine erste physikalische Adresse im Flash-Speicher in einer Nachschlagetabelle abgebildet wird, Neuabbilden jeweiliger logischer Adressen einer oder mehrerer zweiter Host-Dateneinheiten, die den eindeutigen Identifizierer geteilt verwenden, von jeweiligen zweiten physikalischen Adressen im Flash-Speicher auf die erste physikalische Adresse im Flash-Speicher in der Nachschlagetabelle und Ungültigmachen von Daten, die an den jeweiligen zweiten physikalischen Adressen im Flash-Speicher gespeichert sind.
  • Gemäß anderen Aspekten der vorliegenden Technologie ist ein Flash-Speichersystem vorgesehen. Das Flash-Speichersystem weist mehrere Flash-Speichervorrichtungen, einen Speicher mit einem Puffer und eine Steuereinrichtung auf. Die Steuereinrichtung ist dafür ausgelegt, mehrere Flash-Dateneinheiten aus den mehreren Flash-Speichervorrichtungen in den Puffer zu lesen, wobei jede der mehreren Flash-Dateneinheiten eine oder mehrere Host-Dateneinheiten aufweist, einen Identifizierer für jede der in den Puffer gelesenen Host-Dateneinheiten zu bestimmen und einen Satz eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche die jeweiligen eindeutigen Identifizierer geteilt verwenden, auszuwählen. Für jeden eindeutigen Identifizierer im Satz eindeutiger Identifizierer ist die Steuereinrichtung dafür ausgelegt, eine erste Host-Dateneinheit, welche den eindeutigen Identifizierer geteilt verwendet, als eine Master-Dateneinheit festzulegen, wobei eine logische Adresse der ersten Host-Dateneinheit auf eine erste physikalische Adresse in der Flash-Speichervorrichtung in einer Nachschlagetabelle abgebildet wird, in der Nachschlagetabelle jeweilige logische Adressen einer oder mehrerer zweiter Host-Dateneinheiten, welche den eindeutigen Identifizierer geteilt verwenden, von jeweiligen zweiten physikalischen Adressen in der Flash-Speichervorrichtung auf die erste physikalische Adresse in der Flash-Speichervorrichtung neu abzubilden und an den jeweiligen zweiten physikalischen Adressen in der Flash-Speichervorrichtung gespeicherte Daten ungültig zu machen.
  • Gemäß anderen Aspekten der vorliegenden Technologie umfasst ein nicht flüchtiges maschinenlesbares Medium darin gespeicherte Befehlen, die, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen, Operationen auszuführen. Die Operationen umfassen das Lesen mehrerer Flash-Dateneinheiten aus einem Flash-Speicher in einen Puffer, wobei jede der mehreren Flash-Dateneinheiten eine oder mehrere Host-Dateneinheiten aufweist, das Bestimmen eines Identifizierers für jede der in den Puffer gelesenen Host-Dateneinheiten und das Auswählen eines Satzes eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche sich die jeweiligen eindeutigen Identifizierer teilen. Für jeden eindeutigen Identifizierer im Satz eindeutiger Identifizierer weisen die Operationen Folgendes auf: Festlegen einer ersten Host-Dateneinheit, die den eindeutigen Identifizierer geteilt verwendet, als eine Master-Dateneinheit, wobei eine logische Adresse der ersten Host-Dateneinheit auf eine erste physikalische Adresse im Flash-Speicher in einer Nachschlagetabelle abgebildet wird, Neuabbilden jeweiliger logischer Adressen einer oder mehrerer zweiter Host-Dateneinheiten, die den eindeutigen Identifizierer geteilt verwenden, von jeweiligen zweiten physikalischen Adressen im Flash-Speicher auf die erste physikalische Adresse im Flash-Speicher in der Nachschlagetabelle und Ungültigmachen von Daten, die an den jeweiligen zweiten physikalischen Adressen im Flash-Speicher gespeichert sind.
  • Es ist zu verstehen, dass andere Konfigurationen der vorliegenden Technologie Fachleuten anhand der folgenden detaillierten Beschreibung, worin verschiedene Konfigurationen der vorliegenden Technologie dargestellt und zur Erläuterung beschrieben sind, leicht verständlich werden. Wie ersichtlich wird, ist die vorliegende Technologie für andere und verschiedene Konfigurationen geeignet und sind ihre mehreren Einzelheiten in verschiedenen anderen Hinsichten modifizierbar, ohne vom Geltungsbereich der vorliegenden Technologie abzuweichen. Dementsprechend sind die Zeichnung und die detaillierte Beschreibung als erläuternd und nicht als einschränkend anzusehen.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Es zeigen:
  • 1 ein Blockdiagramm von Komponenten eines Flash-Speichersystems gemäß Aspekten der vorliegenden Technologie,
  • 2 ein Blockdiagramm von Flash-Speichervorrichtungen gemäß Aspekten der vorliegenden Technologie,
  • 3 ein Flussdiagramm eines Verfahrens zum Verwalten eines Flash-Speichersystems gemäß Aspekten der vorliegenden Technologie,
  • 4A ein Diagramm eines Knotens einer Datenstruktur gemäß Aspekten der vorliegenden Technologie,
  • 4B ein Diagramm einer Datenstruktur mit Knoten aus 4A gemäß Aspekten der vorliegenden Technologie,
  • 5A ein Diagramm einer Nachschlagetabelle gemäß Aspekten der vorliegenden Technologie,
  • 5B ein Diagramm einer Nachverfolgungstabelle gemäß Aspekten der vorliegenden Technologie,
  • 6A ein Flussdiagramm eines Verfahrens zum Aktualisieren von Deduplikationseinträgen gemäß Aspekten der vorliegenden Technologie,
  • 6B ein Flussdiagramm eines anderen Verfahrens zum Aktualisieren von Deduplikationseinträgen gemäß Aspekten der vorliegenden Technologie,
  • 7A ein Diagramm einer modifizierten Nachschlagetabelle gemäß Aspekten der vorliegenden Technologie,
  • 7B ein Diagramm einer modifizierten Nachverfolgungstabelle gemäß Aspekten der vorliegenden Technologie,
  • 7C ein Diagramm einer anderen modifizierten Nachschlagetabelle gemäß Aspekten der vorliegenden Technologie und
  • 7D ein Diagramm einer anderen modifizierten Nachverfolgungstabelle gemäß Aspekten der vorliegenden Technologie.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehend dargelegte detaillierte Beschreibung ist als eine Beschreibung verschiedener Konfigurationen der vorliegenden Technologie vorgesehen und soll nicht die einzigen Konfigurationen repräsentieren, in denen die vorliegende Technologie verwirklicht werden kann. Die anliegende Zeichnung ist hier aufgenommen und bildet einen Teil der detaillierten Beschreibung. Die detaillierte Beschreibung weist spezifische Einzelheiten auf, um ein gründliches Verständnis der vorliegenden Technologie bereitzustellen. Die vorliegende Technologie kann jedoch auch ohne diese spezifischen Einzelheiten verwirklicht werden. In einigen Fällen sind Strukturen und Komponenten in Form eines Blockdiagramms dargestellt, um es zu vermeiden, die Konzepte der vorliegenden Technologie unverständlich zu machen.
  • Eine SSD kann eine oder mehrere Flash-Speichervorrichtungen aufweisen, die jeweils ein Feld von Flash-Speicherzellen umfassen. Die Flash-Speicherzellen können in physikalische Blöcke organisiert sein, wobei jeder physikalische Block eine Anzahl von Seiten umfasst. Daten werden in Schreibeinheiten von Seiten in den Flash-Speicher geschrieben, wobei jede Seite die Kapazität für das Speichern einer vorgegebenen Anzahl von Host-Dateneinheiten oder Sektoren aufweist. Host-Datendateien können an der nächsten verfügbaren Stelle sequenziell in den Flash-Speicher geschrieben werden. Daten werden aus dem Flash-Speicher jedoch in Löscheinheiten physikalischer Blöcke gelöscht. Die SSD kann Wartungsoperationen ausführen, die dabei helfen, die Datenspeicherung/-verwendung und die Lebensdauer der Flash-Speichervorrichtungen zu verwalten.
  • Bei einem Deduplikations- oder Deduplizierungsprozess wird der Speicherplatz durch Beseitigen duplizierter Dateneinheiten wirksamer verwendet. Während einer Inline-Deduplizierung wird, wenn ein Schreibbefehl vom Host empfangen wird, die zu schreibende Host-Dateneinheit mit in der Speichervorrichtung gespeicherten Host-Dateneinheiten verglichen. Falls eine Übereinstimmung gefunden wird, wird die logische Zieladresse des Schreibbefehls auf die physikalische Adresse der übereinstimmenden Host-Dateneinheit abgebildet. Falls keine Übereinstimmung gefunden wird, wird die Host-Dateneinheit in eine verfügbare physikalische Adresse geschrieben und wird die logische Zieladresse auf die geschriebene physikalische Adresse abgebildet. Der Deduplizierungsprozess kann den Abschluss des Schreibbefehls jedoch verzögern. Durch das Anwenden einer Deduplikation während Wartungsoperationen (Offline-Deduplikation) in der Art einer Datenmüllsammlung (”garbage collection” – GC) kann die Schreiblatenz während Host-Schreibbefehlen vermieden werden.
  • 1 ist ein Blockdiagramm, das Komponenten eines Flash-Speichersystems 110 gemäß Aspekten der vorliegenden Technologie zeigt. Wie in 1 dargestellt ist, weist das Flash-Speichersystem 110 eine Schnittstelle 115, eine Steuereinrichtung 120, Flash-Speichervorrichtungen 130 und einen Speicher 125 auf. Die Schnittstelle 115 erleichtert die Kommunikation von Daten, Befehlen und/oder Steuersignalen zwischen dem Flash-Speichersystem 110 und einem Host 150. Die Steuereinrichtung 120 steuert den Betrieb des Flash-Speichersystems 110 zum Speichern und Abrufen von Daten in den Flash-Speichervorrichtungen 130 gemäß vom Host 150 empfangenen Befehlen. Die Steuereinrichtung 120 kann einen Prozessor 122 aufweisen. Der Speicher 125, der ein Direktzugriffsspeicher (RAM) sein kann, stellt der Steuereinrichtung 120 einen temporären Speicherplatz, welcher ein Puffer 127 sein kann, zur Verarbeitung von Befehlen und zur Übertragung von Daten zwischen dem Host 150 und den Flash-Speichervorrichtungen 130 bereit. Die Arbeitsweise jeder dieser Komponenten wird nachstehend in weiteren Einzelheiten beschrieben.
  • Die Schnittstelle 115 stellt physikalische und elektrische Verbindungen zwischen dem Host 150 und dem Flash-Speichersystem 110 bereit. Die Schnittstelle 115 ist dafür ausgelegt, die Kommunikation von Daten, Befehlen und/oder Steuersignalen zwischen dem Host 150 und dem Flash-Speichersystem 110 über die physikalischen und elektrischen Verbindungen zu erleichtern. Die Verbindung und die Kommunikationen mit der Schnittstelle 115 können auf einer Standardschnittstelle in der Art eines universellen seriellen Busses (”Universal Serial Bus” – USB), einer Kleincomputer-Systemschnittstelle (”Small Computer System Interface” – SCSI), Serial Advanced Technology Attachment (SATA) usw. beruhen. Alternativ können die Verbindung und/oder die Kommunikationen auf einer proprietären Schnittstelle beruhen. Fachleute werden verstehen, dass die vorliegende Technologie nicht auf einen bestimmten Schnittstellentyp beschränkt ist.
  • Die Steuereinrichtung 120 verwaltet den Fluss von Daten zwischen dem Host 150 und den Flash-Speichervorrichtungen 130. Die Steuereinrichtung 120 ist dafür ausgelegt, Befehle und Daten vom Host 150 über die Schnittstelle 115 zu empfangen. Beispielsweise kann die Steuereinrichtung 120 vom Host 150 Daten und einen Schreibbefehl empfangen, um die Daten in die Flash-Speichervorrichtungen 130 zu schreiben. Die Steuereinrichtung 120 ist ferner dafür ausgelegt, Daten über die Schnittstelle 115 zum Host 150 zu senden. Beispielsweise kann die Steuereinrichtung 120 Daten von den Flash-Speichervorrichtungen 130 lesen und die Daten ansprechend auf einen Lesebefehl zum Host 150 senden. Die Steuereinrichtung 120 ist ferner dafür ausgelegt, in den Flash-Speichervorrichtungen 130 und dem Speicher 125 gespeicherte Daten auf der Grundlage interner Steueralgorithmen oder anderer Typen von Befehlen, die vom Host 150 empfangen werden können, zu verwalten. Beispielsweise ist die Steuereinrichtung 120 dafür ausgelegt, GC- und andere Wartungsoperationen auszuführen. Fachleute werden mit anderen herkömmlichen Operationen vertraut sein, die von einer Steuereinrichtung in einer Flash-Speichervorrichtung ausgeführt werden, welche hier nicht detailliert beschrieben werden.
  • Die Steuereinrichtung 120 kann mit einem Prozessor für allgemeine Zwecke, einer Mikrosteuereinrichtung, einem digitalen Signalprozessor (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gate-Array (FPGA) oder einer anderen programmierbaren Logikvorrichtung, einem diskreten Gatter oder einer Transistorlogikvorrichtung, diskreten Hardwarekomponenten oder einer Kombination davon, die dafür vorgesehen und ausgelegt sind, die hier beschriebenen Operationen und Funktionen auszuführen, implementiert sein. Bei bestimmten Implementationen kann die Steuereinrichtung 120 den Prozessor 122 aufweisen, der ein spezialisierter Prozessor für eine spezifische Operation sein kann, wie das Berechnen eines sicheren Hash-Algorithmus (”Secure Hash Algorithm” – SHA). Die Steuereinrichtung 120 kann die hier beschriebenen Operationen und Funktionen durch Ausführen einer oder mehrerer Sequenzen von Befehlen, die in einem maschinen-/computerlesbaren Medium gespeichert sind, ausführen. Das maschinen-/computerlesbare Medium kann aus den Flash-Speichervorrichtungen 130, dem Speicher 125 oder anderen Medientypen, woraus die Steuereinrichtung 120 Befehle oder Code auslesen kann, bestehen. Beispielsweise kann das Flash-Speichersystem 110 einen Nurlesespeicher (ROM) in der Art eines EPROMs oder eines EEPROMs, der mit Firmware-/Software codiert ist, welche eine oder mehrere Sequenzen von Befehlen umfasst, die von der Steuereinrichtung 120 während des Betriebs des Flash-Speichersystems 110 gelesen und ausgeführt werden, aufweisen.
  • Die Flash-Speichervorrichtungen 130 können jeweils ein einziger Flash-Speicherchip sein oder eine Gruppe mehrerer Flash-Speicherchips repräsentieren. Die Flash-Speichervorrichtungen 130 können durch die Steuereinrichtung 120 zwischen mehreren Kanälen organisiert sein, durch welche Daten aus den Flash-Speichervorrichtungen 130 gelesen oder in diese geschrieben werden, oder mit einem einzigen Kanal gekoppelt sein. Die Flash-Speichervorrichtungen 130 können unter Verwendung eines NAND-Flash implementiert sein.
  • Die Flash-Speichervorrichtungen 130 umfassen mehrere Speicherzellen, die in Speicherblöcke unterteilt sind. Diese Speicherblöcke können als Datenblöcke oder Speicherblöcke bezeichnet werden und sind unter Verwendung einer physikalischen Blockadresse von der Steuereinrichtung 120 adressierbar. Jeder der Speicherblöcke ist ferner in mehrere Datensegmente oder Seiten unterteilt, welche durch die Steuereinrichtung 120 unter Verwendung einer physikalischen Seitenadresse oder eines Versatzes von einer physikalischen Blockadresse des die referenzierte Seite enthaltenden Speicherblocks adressierbar sind. Die Seiten können Sektoren oder andere Host-Dateneinheiten speichern. Die Speicherblöcke repräsentieren die Dateneinheiten, die in einem einzigen Löschvorgang innerhalb der Flash-Speichervorrichtungen 130 gelöscht werden. Die physikalischen Seiten repräsentieren die Dateneinheiten, die in einem einzigen Lese- oder Schreibvorgang aus den Flash-Speichervorrichtungen 130 gelesen oder in diese geschrieben werden.
  • 2 zeigt ein Blockdiagramm von Flash-Speichervorrichtungen 230A–D, welche den Flash-Speichervorrichtungen 130 entsprechen können. Die Flash-Speichervorrichtungen 230A–D weisen jeweilige Speicherblöcke 240A–D bzw. Blöcke 241A–D auf. Block 240A ist in Seiten 245A1–A4 unterteilt. Block 240B ist in Seiten 245B1–B4 unterteilt. Block 240C ist in Seiten 245C1–C4 unterteilt. Block 240D ist in Seiten 245D1–D4 unterteilt. Wenngleich dies in 2 nicht dargestellt ist, können die Blöcke 241A–D in Seiten unterteilt werden. Die Seiten in der Art der Seiten 245A1, 245B1, 245C1 und 245D1 in den Flash-Speichervorrichtungen 230A–D mit entsprechenden physikalischen Adressen werden als Superseite oder Streifen 250 bezeichnet. Die Blöcke in der Art der Blöcke 240A–D in den Flash-Speichervorrichtungen 230A–D werden als Superblock oder Band 251 bezeichnet. Jede der Flash-Speichervorrichtungen 230A–D kann sich auf einem getrennten Kanal befinden, wodurch parallele Lese-/Schreibvorgänge über die Kanäle ermöglicht werden. Fachleute auf dem Gebiet können eine andere Terminologie erkennen, die herkömmlicherweise verwendet wird, um sich auf diese Dateneinheiten innerhalb einer Flash-Speichervorrichtung zu beziehen.
  • Die vorliegende Technologie ist nicht auf eine bestimmte Kapazität einer Flash-Speichervorrichtung begrenzt. Beispielsweise können die Speicherblöcke jeweils 32, 64, 128 oder 512 Seiten umfassen. Zusätzlich können die Seiten jeweils 512 Bytes, 2 KB, 4 KB oder 32 KB umfassen. Die Sektoren können jeweils 4 KB oder andere Größen umfassen, so dass Sektoren die gleiche Größe wie eine Seite aufweisen können, oder es kann mehrere Sektoren pro Seite geben.
  • Zu 1 zurückkehrend sei bemerkt, dass der Speicher 125 einen Speicher repräsentiert, der während des Betriebs des Flash-Speichersystems 110 mit der Steuereinrichtung 120 gekoppelt ist und davon verwendet wird. Die Steuereinrichtung 120 kann Befehle und/oder Daten im Speicher 125 puffern. Beispielsweise kann die Steuereinrichtung 120 Daten im Puffer 127 puffern. Der Puffer 127 kann Übertragungspuffer und/oder andere Puffer aufweisen, die von der Steuereinrichtung 120 verwendet werden. Die Steuereinrichtung 120 kann auch den Speicher 125 verwenden, um Adressabbildungstabellen oder Nachschlagetabellen zu speichern, die verwendet werden, um vom Host 150 verwendete logische Datenadressen in virtuelle und/oder physikalische Adressen umzuwandeln, welche Abschnitten der Flash-Speichervorrichtungen 130 entsprechen. Andere Typen von Tabellen, Daten, Statusindikatoren usw., die verwendet werden, um Flash-Speichervorrichtungen zu verwalten, können auch durch die Steuereinrichtung 120 im Speicher 125 gespeichert werden. Der Speicher 125 kann unter Verwendung eines dynamischen Direktzugriffsspeichers (DRAM), eines statischen Direktzugriffsspeichers (SRAM) oder anderer Typen eines flüchtigen und nicht flüchtigen Direktzugriffsspeichers, einschließlich mehrerer Typen von Speichern, wie DRAM und SRAM, die Fachleuten bekannt sind, implementiert werden, ohne vom Gegenstand der vorliegenden Technologie abzuweichen.
  • Der Host 150 kann eine Rechenvorrichtung in der Art eines Computers/Servers, eines Smartphones oder einer anderen elektronischen Vorrichtung sein, welche Daten aus dem Flash-Speichersystem 110 liest und darin schreibt. Der Host 150 kann ein Betriebssystem oder andere Software aufweisen, die Lese- und Schreibbefehle an das Flash-Speichersystem 110 ausgibt. Das Flash-Speichersystem 110 kann mit dem Host 150 integriert sein oder sich außerhalb des Hosts 150 befinden. Das Flash-Speichersystem 110 kann drahtlos mit dem Host 150 verbunden sein oder physikalisch mit dem Host 150 verbunden sein.
  • Die Steuereinrichtung 120 ist dafür ausgelegt, Wartungsvorgänge an den Flash-Speichervorrichtungen 130 auszuführen. Beispielsweise kann die Steuereinrichtung 120 feststellen, dass eine GC ausgeführt werden sollte. Beispielsweise kann die Steuereinrichtung 120 feststellen, dass eine Anzahl verfügbarer Blöcke unterhalb eines Schwellenwerts liegen kann. Die Steuereinrichtung 120 kann die Programmier-/Lösch-(P/E)-Zyklen jedes Blocks für Abnutzungsausgleichszwecke nachverfolgen.
  • Sobald eine GC ausgelöst wurde, kann beispielsweise der Block 240A auf der Grundlage der im Block 240A enthaltenen Menge ungültiger Dateneinheiten, eines Fehlerzählwerts in Zusammenhang mit dem Block 240A oder anderer Parameter in der Art von P/E-Zyklen ausgewählt werden. Beispielsweise kann selbst dann, wenn der Block 240B für eine GC ausgewählt werden könnte, weil er eine erhebliche Menge ungültiger Daten aufweist, der Block 240A stattdessen auf der Grundlage der jeweiligen P/E-Zyklen der Blöcke 240A und 240B ausgewählt werden.
  • Sobald der Block 240A für eine GC ausgewählt wurde, werden die gültigen Daten aus Block 240A in einen leeren Block in der Art des Blocks 240D kopiert, und Block 240A wird gelöscht. Die Steuereinrichtung 120 kann jedoch dafür ausgelegt sein, eine Deduplikation vor dem Kopieren der gültigen Daten aus Block 240A in Block 240D auszuführen. 3 zeigt ein Flussdiagramm 300 einer Offline-Deduplikation gemäß Aspekten der vorliegenden Technologie.
  • Wenn ein Block in der Art des Blocks 240A für einen Wartungsvorgang in der Art eines GC ausgewählt wurde, kann der Deduplikationsprozess beginnen, indem eine Seite des ausgewählten Blocks in der Art der Seite 245A1 gelesen wird. In Schritt 310 werden mehrere Flash-Dateneinheiten aus dem Flash-Speicher in einen Puffer gelesen, wobei jede der mehreren Flash-Dateneinheiten eine oder mehrere Host-Dateneinheiten aufweist. Beispielsweise können die Daten der Seite 245A1 in den Puffer 127 gelesen werden. Für eine bessere Deduplikationsleistung können mehr Daten in den Puffer gelesen werden, weil durch das Analysieren von mehr Daten die Wahrscheinlichkeit des Findens duplizierter Daten erhöht wird. Demgemäß können auch die restlichen Seiten des Bands in Zusammenhang mit der gelesenen Seite, beispielsweise des Bands 251, in den Puffer gelesen werden. Weil sich die anderen Seiten des Bands auf verschiedenen Kanälen befinden, können die Seiten parallel gelesen werden, so dass durch das Lesen des gesamten Bands kein erheblicher Lesezusatzaufwand hinzugefügt werden kann. Bei bestimmten Implementationen kann der Wartungsvorgang eine bestimmte Anzahl von Flash-Dateneinheiten auswählen, wie die Hälfte eines Bands oder Streifens, so dass nicht alle Flash-Speichervorrichtungen analysiert werden können.
  • In Schritt 320 wird ein Identifizierer für jede der in den Puffer gelesenen Host-Dateneinheiten bestimmt. Beispielsweise kann ein Hash-Algorithmus in der Art von SHA auf jede Host-Dateneinheit angewendet werden, um jeweilige Hash-Werte zu erzeugen. Wenngleich hier ein SHA erörtert wird, können auch andere Typen von Identifizierern an Stelle eines SHA verwendet werden. Die Identifizierer werden so bestimmt, dass die gleichen Daten den gleichen Identifizierer erzeugen, um duplizierte Dateneinträge zu identifizieren. Die Identifizierer können durch die Steuereinrichtung 120 bestimmt werden. Bei bestimmten Implementationen kann ein kleiner Hardwareprozessor in der Art des Prozessors 122 für das Berechnen des SHA verwendet werden. Der Prozessor 122 kann spezifisch dafür ausgelegt sein, den SHA zu berechnen, um die Leistungsfähigkeit zu erhöhen und zu ermöglichen, dass die Steuereinrichtung 120 andere Vorgänge parallel ausführt.
  • In Schritt 330 wird ein Satz eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche sich die jeweiligen eindeutigen Identifizierer teilen, ausgewählt. Die Auswahl kann auf dem Analysieren einer Datenstruktur in der Art eines B-Baums beruhen, welcher die in Schritt 320 bestimmten Identifizierer enthält. Beispielsweise kann die Steuereinrichtung 120 einen B-Baum im Speicher 125 bilden, wenn jeder Identifizierer in Schritt 320 bestimmt wird. 4A zeigt ein Blockdiagramm eines Knotens 410, der in einem B-Baum 400 in 4B verwendet wird. Jeder Knoten 410 weist einen Schlüssel 420 auf. Jeder Schlüssel 420 speichert einen Hash-Wert 425, einen Zählwert 430 und Adressen 440. Der Hash-Wert 425 enthält einen eindeutigen Identifizierer. Der Zählwert 430 enthält die Anzahl der Host-Dateneinheiten, welche dem Identifizierer des Hash-Werts 425 entsprechen. Wenn jede Host-Dateneinheit untersucht wird, wird der Zählwert 430 erhöht, falls der Hash-Wert der Host-Dateneinheit mit dem Hash-Wert 425 übereinstimmt, und die logische Adresse der Host-Dateneinheit wird zu den Adressen 440 hinzugefügt. Die Adressen 440 enthalten eine Liste logischer Adressen mit den Daten, welche dem Identifizierer des Hash-Werts 425 entsprechen. Der Zählwert 430 stimmt mit der Anzahl der Adressen in den Adressen 440 überein. Die Adressen 440 können als eine verknüpfte Liste, ein verknüpftes Feld oder eine andere Datenstruktur für das Speichern mehrerer Elemente implementiert werden.
  • 4B zeigt den B-Baum 400, welcher die Knoten 410A, 410B, 410C und 410D enthält. Der Knoten 410A enthält die Schlüssel 420A und 420B. Der Knoten 410B enthält die Schlüssel 420C und 420D. Der Knoten 410C enthält die Schlüssel 420E und 420F. Der Knoten 410D enthält die Schlüssel 420G und 420H. Jeder der Schlüssel 420A, 420B, 420C, 420D, 420E, 420F, 420G und 420H enthält jeweilige Hash-Werte 425, Zählwerte 430 und Adressen 440, die in 4B nicht dargestellt sind. Wenn ein Hash-Wert für jede in Schritt 320 untersuchte Host-Dateneinheit erzeugt wird, sucht die Steuereinrichtung nach einem übereinstimmenden Hash-Wert im B-Baum. Falls ein übereinstimmender Hash-Wert in einem Schlüssel gefunden wird, wird der entsprechende Zählwert erhöht und wird die logische Adresse der Host-Dateneinheit zu den entsprechenden Adressen hinzugefügt. Falls kein übereinstimmender Hash-Wert gefunden wird, wird ein neuer Schlüssel erzeugt.
  • Der neue Schlüssel wird auf der Grundlage des Hash-Werts zum B-Baum hinzugefügt. Die Hash-Werte können beispielsweise mit einem alphanumerischen Wert verglichen werden, so dass ein erster Hash-Wert größer als, kleiner als oder gleich einem zweiten Hash-Wert angesehen werden kann. Ausgehend vom Wurzelknoten (Knoten 410A in 4B) als ein aktueller Knoten wird der neue Hash-Wert mit den Hash-Werten der Schlüssel für den aktuellen Knoten verglichen. Falls der neue Hash-Wert kleiner als die Hash-Werte der Schlüssel des aktuellen Knotens ist, wird die Untersuchung mit dem Tochterknoten (Knoten 410B in 4B) fortgesetzt, der Hash-Werte aufweist, die kleiner sind als die Hash-Werte des aktuellen Knotens. Falls der neue Hash-Wert zwischen den Hash-Werten des aktuellen Knotens liegt, wird die Untersuchung mit dem Tochterknoten (Knoten 410C in 4B) fortgesetzt, der Hash-Werte zwischen den geeigneten Hash-Werten des aktuellen Knotens aufweist. Falls der neue Hash-Wert größer ist als die Hash-Werte des aktuellen Knotens, wird die Untersuchung mit dem Tochterknoten (Knoten 410D in 4B) fortgesetzt, der Hash-Werte aufweist, die größer sind als die Hash-Werte des aktuellen Knotens. Sobald ein Knoten ohne Töchter erreicht wird, wird der neue Hash-Wert als ein neuer Schlüssel zum neuen Hash-Wert, einem neuen Zählwert von 1 und der logischen Adresse der Host-Dateneinheit addiert. Abhängig von der Ordnung des B-Baums kann der neue Schlüssel bewirken, dass der Knoten eine maximale Anzahl von Schlüsseln übersteigt, so dass ein neuer Knoten erzeugt werden kann.
  • Sobald die Identifizierer aller Host-Dateneinheiten in den B-Baum eingetragen wurden, kann der B-Baum vollständig sein. Der Satz eindeutiger Identifizierer kann auf der Grundlage der mit jedem Schlüssel gespeicherten Zählwerte ausgewählt werden. Beispielsweise können die Identifizierer ausgewählt werden, die den größten Zählwerten entsprechen. Eine Schwellenanzahl von Identifizierern wie 16 kann ausgewählt werden, oder ein Schwellenprozentsatz der Gesamtzahl der untersuchten Host-Dateneinheiten wie 15% kann verwendet werden, um die Identifizierer auszuwählen, die Zählwerte aufweisen, die insgesamt den Schwellenprozentsatz erreichen, ohne den Schwellenprozentsatz zu überschreiten.
  • Alternativ können nur Identifizierer ausgewählt werden, die Zählwerte aufweisen, die größer als ein unterer Schwellenzählwert sind, um eine Auswahl von Identifizierern mit einem zu kleinen Zählwert für einen Deduplikationsvorteil zu verhindern. Beispielsweise können die 16 größten Zählwerte einen Zählwert von zwei einschließen, der keine erhebliche Deduplikation bereitstellen kann. Identifizierer mit Zählwerten, die größer als ein oberer Schwellenzählwert sind, können auch ausgeschlossen werden. Wenngleich durch das Deduplizieren eines großen Zählwerts eine erhöhte Speichereffizienz bereitgestellt werden würde, kann die Datenverwaltung mühsam werden. Falls der Zählwert groß genug ist, können mehrere Lesebefehle ein Lesen aus der gleichen physikalischen Adresse innerhalb eines kurzen Zeitraums erfordern, wodurch ein Engpass erzeugt werden kann und eine Leseverzögerung bewirkt werden kann. Falls beispielsweise jede Host-Dateneinheit die gleichen Daten enthält, würden alle Lesebefehle einen Zugriff auf eine einzige physikalische Adresse erfordern.
  • Für jeden eindeutigen Identifizierer im Satz eindeutiger Identifizierer werden die Schritte 340, 350 und 360 ausgeführt. In Schritt 340 wird eine erste Host-Dateneinheit, die den eindeutigen Identifizierer geteilt verwendet, als eine Master-Dateneinheit bezeichnet, wobei eine logische Adresse der ersten Host-Dateneinheit auf eine erste physikalische Adresse im Flash-Speicher in einer Nachschlagetabelle abgebildet ist. 5A zeigt eine Nachschlagetabelle 500, welche logische Blockadressen (LBA) 510 speichert, die auf physikalische Blockadressen (PBA) 520 abgebildet sind. Die PBA der Master-Dateneinheit speichert die eine Kopie (oder Masterkopie) der Host-Dateneinheit. Zusätzlich wird eine Nachverfolgungstabelle in der Art einer Nachverfolgungstabelle 550 mit in 5B dargestellten PBA 560 und LBA 570 aktualisiert, um Umkehrabbildungen von den PBA auf die LBA beizubehalten. Die Nachverfolgungstabelle 550 kann mit verknüpften Listen oder Feldern für das Speichern der mehreren LBA pro PBA implementiert werden.
  • In Schritt 350 wird eine jeweilige logische Adresse einer oder mehrerer zweiter Host-Dateneinheiten, die sich den eindeutigen Identifizierer teilen, von jeweiligen zweiten physikalischen Adressen im Flash-Speicher auf die erste physikalische Adresse im Flash-Speicher neu abgebildet. In 5A entspricht die LBA 12 der Master-Dateneinheit und weist die gleichen Daten auf wie die LBA 98 und 105. Die LBA 98 wird auf die PBA 16 abgebildet, und die LBA 105 wird auch auf die PBA 16 abgebildet. Bei bestimmten Implementationen können die duplizierten Einträge 12, 98 und 105 mit einem Deduplizierungshinweiszeichen ausgezeichnet werden. Bei bestimmten Implementationen kann der Master-Dateneinheitseintrag als eine Master-Dateneinheit ausgezeichnet werden. Die Nachverfolgungstabelle wird auch aktualisiert. In 5B wird die PBA 16 auf die LBA 12, 98 und 105 abgebildet. Die Nachverfolgungstabelle zeigt, welche LBA auf eine gegebene PBA abgebildet werden, die verwendet werden kann, wenn später in einer PBA gespeicherte Daten aktualisiert werden.
  • In Schritt 360 werden an den jeweiligen zweiten physikalischen Adressen im Flash-Speicher gespeicherte Daten ungültig gemacht. Weil die LBA für die deduplizierten Einträge auf die PBA der Master-Dateneinheit zeigen, können die PBA, auf die zuvor gezeigt wurde, später freigegeben werden. Der Wartungsvorgang in der Art des GC-Vorgangs, in dem die Flash-Dateneinheit ursprünglich ausgewählt wurde, kann fortgesetzt werden. Weil die deduplizierten PBA nun als ungültig markiert sind, kann es weniger gültige Daten zum Kopieren für den GC-Vorgang geben als vor der Deduplikation. Mit anderen Worten können mehr ungültige Host-Dateneinheiten für die GC beansprucht werden.
  • Zusätzlich kann der B-Baum aus dem Speicher gelöscht werden, nachdem die Deduplikation abgeschlossen wurde. Weil der Deduplizierungsvorgang nicht inline erfolgt, braucht der B-Baum nicht für neue Schreibbefehle beibehalten zu werden und kann der Speicher für andere Operationen freigegeben werden. Falls ein dedupliziertes Band später für eine Deduplizierung ausgewählt wird, kann der B-Baum auf der Grundlage der Nachverfolgungstabelle und/oder der Deduplizierungs-ausgezeichneten Einträge in der Nachschlagetabelle neu erzeugt werden.
  • Wenn Daten im Flash-Speichersystem modifiziert werden, beispielsweise indem sie aktualisiert oder gelöscht werden, können die deduplizierten LBA aktualisiert werden müssen. Die 6A und 6B zeigen Prozesse, die Deduplizierungseinträge einer zu modifizierenden Ziel-Host-Dateneinheit aktualisieren. Beispielsweise kann der Host einen Schreibbefehl für das Aktualisieren von Daten für die LBA der Ziel-Host-Dateneinheit ausgeben. Alternativ kann der Host einen Löschbefehl für das Löschen von Daten für die LBA der Ziel-Host-Dateneinheit ausgeben. Falls der Nachschlagetabelleneintrag für die Ziel-Host-Dateneinheit ein Deduplizierungshinweiszeichen aufweist, kann der Deduplizierungsaktualisierungsprozess ausgelöst werden. Alternativ kann die PBA der Ziel-Host-Dateneinheit in der Nachverfolgungstabelle gefunden werden, um den Deduplizierungsaktualisierungsprozess auszulösen.
  • 6A zeigt ein Flussdiagramm 600 zum Entfernen/Überschreiben eines Deduplizierungseintrags. Beispielsweise kann der Host einen Befehl ausgeben, der eine LBA löscht oder überschreibt. In Schritt 610 wird eine Abbildung einer logischen Adresse auf eine Ziel-Host-Dateneinheit aus einer Nachschlagetabelle für die zu modifizierende Ziel-Host-Dateneinheit entfernt, wobei die logische Adresse der Ziel-Host-Dateneinheit auf die physikalische Adresse der Master-Dateneinheit abgebildet wurde. Beispielsweise zeigt 7A eine Nachschlagetabelle 700 mit LBA 702, die auf PBA 704 abgebildet sind, ähnlich der Nachschlagetabelle 500 in 5A. Die Ziel-Host-Dateneinheit kann der LBA 105 entsprechen. Die LBA 105 wird nicht mehr auf die PBA 16 abgebildet (verglichen mit 5A). Die LBA 105 kann nicht mehr auf eine PBA abgebildet werden oder auf eine andere PBA (in 7A nicht dargestellt) neu abgebildet werden. Falls die LBA 105 nicht mehr auf eine Master-PBA abgebildet wird (kein Deduplizierungseintrag mehr ist), kann das Deduplizierungshinweiszeichen für die LBA 105 aufgehoben werden.
  • In Schritt 620 wird eine Umkehrabbildung der physikalischen Adresse der Master-Dateneinheit auf die logische Adresse der Ziel-Host-Daten aus der Nachverfolgungstabelle entfernt. Wenn die Ziel-Host-Dateneinheit keine Master-Dateneinheit ist, ist die entsprechende PBA unbeeinflusst und werden die jeweiligen Einträge in der Nachschlagetabelle und der Nachverfolgungstabelle aktualisiert. Beispielsweise zeigt 7B eine Nachverfolgungstabelle 710 mit auf LBA 714 abgebildeten PBA 712 ähnlich der Nachverfolgungstabelle 550 in 5B. Die PBA 16 wird nicht mehr auf die LBA 105 abgebildet (verglichen mit 5B). Bei bestimmten Implementationen kann ein Deduplizierungseintrag unter Verwendung des Prozesses aus 6A gelöscht werden, wenn die Master-PBA nicht gelöscht werden muss. Falls beispielsweise die LBA 12 zu entfernen wäre, würden die anderen LBA in der Art der LBA 98 die PBA 16 noch als die Master-PBA beibehalten. Durch Aktualisieren der Nachschlage- und Nachverfolgungstabellen, ohne die Master-PBA zu ändern, werden keine Daten kopiert oder verschoben.
  • 6B zeigt ein Flussdiagramm 602 des Entfernens/Überschreibens eines Master-Deduplizierungseintrags. Ein GC- oder anderer Wartungsvorgang kann schließlich das Löschen einer Master-PBA in der Art des Löschens eines der Master-PBA entsprechenden Blocks nach dem Kopieren der Daten von der Master-PBA zu einer neuen PBA erfordern. Anders als der in 6A dargestellte Prozess wird die Master-PBA modifiziert. In Schritt 612 werden Daten von einer physikalischen Adresse einer Ziel-Host-Dateneinheit zu einer neuen physikalischen Adresse kopiert, wobei die Ziel-Host-Dateneinheit zu modifizieren ist und die Ziel-Host-Dateneinheit als die Master-Dateneinheit bezeichnet wird. Wenn die Ziel-Host-Dateneinheit die Master-Dateneinheit ist, muss die Kopie von Daten an der entsprechenden PBA zu einer neuen PBA kopiert werden, um zu gewährleisten, dass andere deduplizierte Host-Dateneinheiten, welche sich die Daten teilen, die Daten noch referenzieren können. 7C zeigt eine Nachschlagetabelle 720 mit auf PBA 724 abgebildeten LBA 722 ähnlich der Nachschlagetabelle 500 in 5A. 7D zeigt eine Nachverfolgungstabelle 730 mit auf LBA 734 abgebildeten PBA 732 ähnlich der Nachverfolgungstabelle 550 in 5B. Die Master-PBA kann 32 sein, und die neue physikalische Adresse kann 40 sein.
  • In Schritt 622 wird eine Host-Dateneinheit der neuen physikalischen Adresse als die Master-Dateneinheit bezeichnet. Beispielsweise kann die PBA 40 als die neue Master-Dateneinheit bezeichnet werden.
  • In Schritt 632 werden die jeweiligen logischen Adressen der zweiten Host-Dateneinheiten neu auf die neue physikalische Adresse in der Nachschlagetabelle abgebildet. Beispielsweise werden in 7C die LBA 12, 98 und 105 nun auf die PBA 40 abgebildet (verglichen mit 5A).
  • In Schritt 642 werden Umkehrabbildungen der physikalischen Adresse der Ziel-Host-Dateneinheit in der Nachverfolgungstabelle zu Umkehrabbildungen der neuen physikalischen Adresse aktualisiert. In der Nachverfolgungstabelle wird die alte Master-PBA auf die neue Master-PBA aktualisiert. Beispielsweise wird in 7D die PBA 16 nun durch die PBA 40 ersetzt (verglichen mit 5B).
  • In Schritt 652 werden die an der physikalischen Adresse der Ziel-Host-Dateneinheit gespeicherten Daten ungültig gemacht. Die alte Master-PBA wird als ungültig markiert, um die Modifikation abzuschließen. Die ungültig gemachte PBA kann später gelöscht werden und in einem GC-Vorgang freigegeben werden. Bei bestimmten Implementationen können die Prozesse der Flussdiagramme 600 und 602 kombiniert werden, um eine spezifische Dateneinheit zu modifizieren. Falls beispielsweise eine bestimmte deduplizierte LBA und eine bestimmte deduplizierte PBA zu modifizieren wären, können die Prozesse der Flussdiagramme 600 und 602 verwendet werden, um die Nachschlage- und Nachverfolgungstabellen zu aktualisieren.
  • Die Deduplikation für das Flash-Speichersystem kann beispielsweise durch eine Benutzerschnittstelle, die über den Host zugänglich ist, von einem Benutzer aktiviert werden. Die Benutzerschnittstelle kann als eine Anwendung oder als eine über einen Browser auf dem Host zugängliche Webseite implementiert werden. Der Benutzer kann auch bestimmte Optionen oder Parameter für die Deduplikation des Flash-Speichersystems auswählen. Beispielsweise kann ein Prozentsatz der Deduplizierungsfähigkeit ausgewählt werden, so dass ein Schwellenprozentsatz des gesamten verfügbaren Platzes des Flash-Speichersystems dedupliziert werden kann. Sobald der Schwellenprozentsatz dedupliziert wurde, kann das Flash-Speichersystem nicht weiter Daten deduplizieren, es sei denn, dass der Prozentsatz unter den Schwellenprozentsatz abfällt. Zusätzlich können bestimmte Deduplizierungsmuster ohne Deduplikation normal gespeichert werden. Beispielsweise kann der Benutzer spezifische Datenmuster bezeichnen, die nicht für die Deduplikation auszuwählen sind. Solche Muster können gemeinsame Muster (wie nur Nullen) einschließen, die eine erhebliche Leselatenz oder Verwaltungsbelastungen erzeugen können. Die Deduplikation kann vom Benutzer deaktiviert werden, was ein Formatieren des Flash-Speichersystems erfordern kann.
  • Die Deduplikation kann für kalte Datenbänder priorisiert werden. Das Flash-Speichersystem kann heiße Datenbänder, beispielsweise auf der Grundlage der Häufigkeit der LBA-Datenänderung, nachverfolgen. Das Ausführen einer Deduplizierung an kalten Daten minimiert die Buchhaltung in der Art des Aktualisierens der Nachschlagetabelle und der Nachverfolgungstabelle. Weil kalte Daten weniger häufig aktualisiert werden können, können Master-Dateneinheiten weniger häufig aktualisiert werden, was die Schreibausweitung verringern kann. Wenn die GC beispielsweise ein Band auswählt, kann die Deduplikation nicht ausgeführt werden, falls das Band als heiß angesehen wird.
  • Die Deduplikation kann die Leseausweitung erhöhen, weil zusätzliche Lesevorgänge erforderlich sein können, um Daten für deduplizierte Einträge zu lesen. Weil jedoch weniger Schreibvorgänge erforderlich sind und weniger Speicherplatz verwendet wird, kann die Häufigkeit von GC- oder anderen Wartungsvorgängen verringert werden und kann die Gesamtlebensdauer des Flash-Speichersystems erhöht werden. Weil die Deduplikation zusätzlich nicht während Host-Schreibvorgängen ausgeführt wird, erhöht die Deduplikation nicht die Latenz für Host-Schreibvorgänge. Weil für das Kopieren der gültigen Daten das Schreiben von Daten erforderlich ist, kann das Verringern der Menge geschriebener Daten die Lebensdauer der entsprechenden Flash-Speichervorrichtung verlängern.
  • Eine Offline-Deduplikation kann einfacher zu unterbrechen sein als eine Inline-Deduplikation. Beispielsweise sind bei der Offline-Deduplizierung Daten bereits auf der Flash-Speichervorrichtung gespeichert und sind die Abbildungen aktualisiert. Falls ein neuer Lesebefehl während einer Offline-Deduplikation empfangen wird, können die Daten gelesen werden, weil die Daten noch wie zuvor geschrieben gespeichert sind, oder die Abbildungen können bereits durch Deduplizieren aktualisiert worden sein. Falls ein neuer Schreibbefehl während einer Offline-Deduplikation empfangen wird, werden die Daten im Allgemeinen in eine neue physikalische Adresse geschrieben, statt dass die physikalischen Adressen für das Deduplizieren untersucht werden. Während einer Offline-Deduplizierung können die GC-Befehle eine niedrigere Priorität als Host-Schreibbefehle aufweisen, wodurch dem Host große Leistungsvorteile bereitgestellt werden. Zusätzlich kann die Deduplikation die Speicherverwendung optimieren, weil mehr freier Platz verfügbar sein kann.
  • Fachleute werden verstehen, dass die verschiedenen der Erläuterung dienenden Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen, die hier beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beiden implementiert werden können. Zur Erläuterung dieser Austauschbarkeit von Hardware und Software wurden vorstehend verschiedene der Erläuterung dienende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen allgemein in Bezug auf ihre Funktionalität beschrieben. Ob diese Funktionalität als Hardware oder als Software implementiert wird, hängt von den bestimmten Anwendungs- und Entwurfsrandbedingungen, die dem Gesamtsystem auferlegt sind, ab. Fachleute können die beschriebene Funktionalität auf verschiedene Arten für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können auf verschiedene Arten angeordnet werden (beispielsweise in einer anderen Reihenfolge angeordnet werden oder auf andere Weise unterteilt werden), wobei all dies geschehen kann, ohne vom Schutzumfang der vorliegenden Technologie abzuweichen.
  • Es sei bemerkt, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen eine Erläuterung als Beispiel dienender Ansätze ist. Es ist zu verstehen, dass auf der Grundlage von Entwurfspräferenzen die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen abgeändert werden kann. Einige der Schritte können gleichzeitig ausgeführt werden. Die anliegenden Verfahrensansprüche präsentieren Elemente der verschiedenen Schritte in einer als Beispiel dienenden Reihenfolge und sollten nicht als auf die spezifische präsentierte Reihenfolge oder Hierarchie eingeschränkt ausgelegt werden.
  • Die vorstehende Beschreibung wurde bereitgestellt, um es Fachleuten zu ermöglichen, die verschiedenen hier beschriebenen Aspekte zu verwirklichen. Verschiedene Modifikationen dieser Aspekte werden Fachleuten leicht verständlich werden, und die allgemeinen hier definierten Prinzipien können auch auf andere Aspekte angewendet werden. Demgemäß sollen die Ansprüche nicht auf die hier dargestellten Aspekte beschränkt sein, sondern ihnen soll der gesamte Umfang, der mit dem Sprachgebrauch der Ansprüche verträglich ist, eingeräumt werden, wobei ein Bezug auf ein Element im Singular nicht als ”ein und nur ein” bedeutend zu verstehen ist, es sei denn, dass dies spezifisch so ausgesagt wird, sondern vielmehr als ”ein oder mehrere”. Sofern nichts anderes spezifisch ausgesagt wird, bezieht sich der Begriff ”einige” auf einen oder mehrere. Pronomen in der männlichen Form (beispielsweise sein) schließen das weibliche und neutrale Geschlecht (beispielsweise ihre und sein) ein und umgekehrt. Überschriften und Teilüberschriften, falls überhaupt, werden nur aus Gründen der Zweckmäßigkeit verwendet und sollen die Erfindung nicht einschränken.
  • Ein Ausdruck in der Art eines ”Aspekts” impliziert nicht, dass dieser Aspekt für die vorliegende Technologie wesentlich ist oder dass dieser Aspekt für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf einen Aspekt bezieht, kann für alle Konfigurationen oder eine oder mehrere Konfigurationen gelten. Ein Ausdruck in der Art eines Aspekts kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt. Ein Ausdruck in der Art einer ”Konfiguration” impliziert nicht, dass diese Konfiguration für die vorliegende Technologie wesentlich ist oder dass diese Konfiguration für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann für alle Konfigurationen oder eine oder mehrere Konfigurationen gelten. Ein Ausdruck in der Art einer Konfiguration kann sich auf eine oder mehrere Konfigurationen beziehen und umgekehrt.
  • Das Wort ”als Beispiel dienend” soll hier ”als ein Beispiel oder eine Erläuterung dienend” bedeuten. Ein hier als ”als Beispiel dienend” beschriebener Aspekt oder Entwurf ist nicht notwendigerweise als gegenüber anderen Aspekten oder Entwürfen bevorzugt oder vorteilhaft auszulegen.
  • Alle strukturellen und funktionellen Entsprechungen zu den Elementen der verschiedenen in dieser Offenbarung beschriebenen Aspekte, die Durchschnittsfachleuten bekannt sind oder später bekannt werden, werden hier ausdrücklich durch Verweis aufgenommen und sollen von den Ansprüchen eingeschlossen sein. Überdies soll nichts was hier offenbart ist, für die Öffentlichkeit bestimmt sein, unabhängig davon, ob diese Offenbarung in den Ansprüchen explizit erwähnt ist. Kein Anspruchselement ist nach den Bestimmungen von 35 U.S.C. §112, sechster Absatz, auszulegen, es sei denn, dass das Element ausdrücklich unter Verwendung des Ausdrucks ”Mittel für” erwähnt wird oder im Fall eines Verfahrensanspruchs das Element unter Verwendung des Ausdrucks ”Schritt für” erwähnt wird. Ferner soll in dem Maße, dass der Begriff ”aufweisen”, ”haben” oder dergleichen in der Beschreibung oder den Ansprüchen verwendet wird, dieser Begriff in einer Weise ähnlich dem Begriff ”umfassen” als einschließend verstanden werden, wie ”umfassen” interpretiert wird, wenn es als ein Übergangswort in einem Anspruch verwendet wird.

Claims (25)

  1. Verfahren zum Verwalten eines Flash-Speichersystems, welches folgende Schritte umfasst: Lesen mehrerer Flash-Dateneinheiten aus einem Flash-Speicher in einen Puffer, wobei jede der mehreren Flash-Dateneinheiten eine oder mehrere Host-Dateneinheiten aufweist, Bestimmen eines Identifizierers für jede der in den Puffer gelesenen Host-Dateneinheiten, Auswählen eines Satzes eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche sich die jeweiligen eindeutigen Identifizierer teilen, und für jeden eindeutigen Identifizierer in dem Satz eindeutiger Identifizierer: Festlegen einer ersten Host-Dateneinheit, die den eindeutigen Identifizierer geteilt verwendet, als eine Master-Dateneinheit, wobei eine logische Adresse der ersten Host-Dateneinheit auf eine erste physikalische Adresse im Flash-Speicher in einer Nachschlagetabelle abgebildet wird, Neuabbilden jeweiliger logischer Adressen einer oder mehrerer zweiter Host-Dateneinheiten, die den eindeutigen Identifizierer geteilt verwenden, von jeweiligen zweiten physikalischen Adressen im Flash-Speicher auf die erste physikalische Adresse im Flash-Speicher in der Nachschlagetabelle und Ungültigmachen von Daten, die an den jeweiligen zweiten physikalischen Adressen im Flash-Speicher gespeichert sind.
  2. Verfahren nach Anspruch 1, wobei die mehreren Flash-Dateneinheiten ansprechend auf einen Systemwartungsvorgang aus dem Flash-Speicher in den Puffer gelesen werden, und wobei das Verfahren ferner das Ausführen des Systemwartungsvorgangs umfasst, nachdem die an der jeweiligen zweiten physikalischen Adresse gespeicherten Daten ungültig gemacht wurden.
  3. Verfahren nach Anspruch 1, wobei das Verfahren ferner Folgendes umfasst: Belegen einer Datenstruktur auf der Grundlage der bestimmten Identifizierer der Host-Dateneinheiten, wobei die Datenstruktur einen Eintrag für jeden eindeutigen Identifizierer von den bestimmten Identifizierern aufweist und wobei jeder Eintrag einen Zählwert von Host-Dateneinheiten, welche den jeweiligen eindeutigen Identifizierer geteilt verwenden, und eine logische Adresse jeder Host-Dateneinheit, die den jeweiligen eindeutigen Identifizierer geteilt verwendet, aufweist, wobei der Satz eindeutiger Identifizierer ausgewählt wird, indem die Einträge der Datenstruktur durchlaufen werden und eine vorgegebene Anzahl eindeutiger Identifizierer mit den größten Zählwerten von Host-Dateneinheiten ausgewählt wird.
  4. Verfahren nach Anspruch 3, wobei die größten Zählwerte von Host-Dateneinheiten größer als ein unterer Schwellenzählwert sind.
  5. Verfahren nach Anspruch 3, wobei die größten Zählwerte von Host-Dateneinheiten Zählwerte von Host-Dateneinheiten, die größer als ein oberer Schwellenzählwert sind, ausschließen.
  6. Verfahren nach Anspruch 3, wobei die Datenstruktur einen B-Baum umfasst und wobei jeder Eintrag einen jeweiligen Schlüssel des B-Baums umfasst.
  7. Verfahren nach Anspruch 1, welches ferner für jeden eindeutigen Identifizierer in dem Satz eindeutiger Identifizierer Folgendes umfasst: Speichern jeweiliger Umkehrabbildungen der ersten physikalischen Adresse auf die logische Adresse der ersten Host-Dateneinheit und die jeweiligen logischen Adressen der einen oder der mehreren zweiten Host-Dateneinheiten in einer Nachverfolgungstabelle.
  8. Verfahren nach Anspruch 7, welches ferner Folgendes umfasst: Entfernen einer Abbildung einer logischen Adresse einer zu modifizierenden Ziel-Host-Dateneinheit aus der Nachschlagetabelle, wobei die logische Adresse der Ziel-Host-Dateneinheit auf die physikalische Adresse der Master-Dateneinheit abgebildet wurde, und Entfernen einer Umkehrabbildung der physikalischen Adresse der Master-Dateneinheit auf die logische Adresse der Ziel-Host-Daten aus der Nachverfolgungstabelle.
  9. Verfahren nach Anspruch 7, welches ferner Folgendes umfasst: Kopieren von Daten aus einer physikalischen Adresse einer Ziel-Host-Dateneinheit zu einer neuen physikalischen Adresse, wobei die Ziel-Host-Dateneinheit zu modifizieren ist und die Ziel-Host-Dateneinheit als die Master-Dateneinheit festgelegt wird, Festlegen einer Host-Dateneinheit der neuen physikalischen Adresse als die Master-Dateneinheit, Neuabbilden jeweiliger logischer Adressen der zweiten Host-Dateneinheiten auf die neue physikalische Adresse in der Nachschlagetabelle, Aktualisieren von Umkehrabbildungen der physikalischen Adresse der Ziel-Host-Dateneinheit zu Umkehrabbildungen der neuen physikalischen Adresse in der Nachverfolgungstabelle und Ungültigmachen an der physikalischen Adresse der Ziel-Host-Dateneinheit gespeicherter Daten.
  10. Verfahren nach Anspruch 1, welches ferner Folgendes umfasst: für jede logische Adresse in Zusammenhang mit einem eindeutigen Identifizierer aus dem Satz eindeutiger Identifizierer, Festlegen eines Deduplizierungshinweiszeichens in einem Eintrag, welcher der logischen Adresse in der Nachschlagetabelle entspricht, wobei das Deduplizierungshinweiszeichen angibt, dass die logische Adresse auf eine jeweilige eindeutige physikalische Adresse abgebildet wird.
  11. Verfahren nach Anspruch 1, wobei die mehreren Flash-Dateneinheiten jeweilige Flash-Dateneinheiten aus mehreren Flash-Speichervorrichtungen des Flash-Speichersystems umfassen und wobei die jeweiligen Flash-Dateneinheiten aus den mehreren Flash-Speichervorrichtungen ansprechend auf einen Systemwartungsvorgang ausgewählt werden.
  12. Flash-Speichersystem, welches Folgendes umfasst: mehrere Flash-Speichervorrichtungen, einen Speicher, der einen Puffer umfasst, und eine Steuereinrichtung, welche dafür ausgelegt ist, Folgendes auszuführen: Lesen mehrerer Flash-Dateneinheiten aus den mehreren Flash-Speichervorrichtungen in den Puffer, wobei jede der mehreren Flash-Dateneinheiten eine oder mehrere Host-Dateneinheiten aufweist, Bestimmen eines Identifizierers für jede der in den Puffer gelesenen Host-Dateneinheiten, Auswählen eines Satzes eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche sich die jeweiligen eindeutigen Identifizierer teilen, und für jeden eindeutigen Identifizierer in dem Satz eindeutiger Identifizierer: Festlegen einer ersten Host-Dateneinheit, die den eindeutigen Identifizierer geteilt verwendet, als eine Master-Dateneinheit, wobei eine logische Adresse der ersten Host-Dateneinheit auf eine erste physikalische Adresse in der Flash-Speichervorrichtung in einer Nachschlagetabelle abgebildet wird, Neuabbilden jeweiliger logischer Adressen einer oder mehrerer zweiter Host-Dateneinheiten, die den eindeutigen Identifizierer geteilt verwenden, von jeweiligen zweiten physikalischen Adressen im Flash-Speicher auf die erste physikalische Adresse in der Flash-Speichervorrichtung in der Nachschlagetabelle und Ungültigmachen von Daten, die an den jeweiligen zweiten physikalischen Adressen in der Flash-Speichervorrichtung gespeichert sind.
  13. Flash-Speichersystem nach Anspruch 12, wobei die Steuereinrichtung dafür ausgelegt ist, die mehreren Flash-Dateneinheiten ansprechend auf einen Systemwartungsvorgang aus den mehreren Flash-Speichervorrichtungen in den Puffer zu lesen und wobei die Steuereinrichtung ferner dafür ausgelegt ist, den Systemwartungsvorgang auszuführen, nachdem die an der jeweiligen zweiten physikalischen Adresse gespeicherten Daten ungültig gemacht worden sind.
  14. Flash-Speichersystem nach Anspruch 12, wobei die Steuereinrichtung ferner dafür ausgelegt ist, Folgendes auszuführen: Belegen einer Datenstruktur im Speicher auf der Grundlage der bestimmten Identifizierer der Host-Dateneinheiten, wobei die Datenstruktur einen Eintrag für jeden eindeutigen Identifizierer von den bestimmten Identifizierern aufweist und wobei jeder Eintrag einen Zählwert von Host-Dateneinheiten, welche den jeweiligen eindeutigen Identifizierer geteilt verwenden, und eine logische Adresse jeder Host-Dateneinheit, die den jeweiligen eindeutigen Identifizierer geteilt verwendet, aufweist, wobei der Satz eindeutiger Identifizierer ausgewählt wird, indem die Einträge der Datenstruktur durchlaufen werden und eine vorgegebene Anzahl eindeutiger Identifizierer mit den größten Zählwerten von Host-Dateneinheiten ausgewählt wird.
  15. Flash-Speichersystem nach Anspruch 14, wobei die größten Zählwerte von Host-Dateneinheiten größer als ein unterer Schwellenzählwert sind.
  16. Flash-Speichersystem nach Anspruch 14, wobei die größten Zählwerte von Host-Dateneinheiten Zählwerte von Host-Dateneinheiten, die größer als ein oberer Schwellenzählwert sind, ausschließen.
  17. Flash-Speichersystem nach Anspruch 14, wobei die Datenstruktur einen B-Baum umfasst und wobei jeder Eintrag einen jeweiligen Schlüssel des B-Baums umfasst.
  18. Flash-Speichersystem nach Anspruch 12, wobei die Steuereinrichtung ferner dafür ausgelegt ist, für jeden eindeutigen Identifizierer im Satz eindeutiger Identifizierer Folgendes auszuführen: Speichern jeweiliger Umkehrabbildungen der ersten physikalischen Adresse auf die logische Adresse der ersten Host-Dateneinheit und die jeweiligen logischen Adressen der einen oder der mehreren zweiten Host-Dateneinheiten in einer Nachverfolgungstabelle.
  19. Flash-Speichersystem nach Anspruch 18, wobei die Steuereinrichtung ferner dafür ausgelegt ist, Folgendes auszuführen: Entfernen einer Abbildung einer logischen Adresse einer zu modifizierenden Ziel-Host-Dateneinheit aus der Nachschlagetabelle, wobei die logische Adresse der Ziel-Host-Dateneinheit auf die physikalische Adresse der Master-Dateneinheit abgebildet wurde, und Entfernen einer Umkehrabbildung der physikalischen Adresse der Master-Dateneinheit auf die logische Adresse der Ziel-Host-Daten aus der Nachverfolgungstabelle.
  20. Flash-Speichersystem nach Anspruch 18, wobei die Steuereinrichtung ferner dafür ausgelegt ist, Folgendes auszuführen: Kopieren von Daten aus einer physikalischen Adresse einer Ziel-Host-Dateneinheit zu einer neuen physikalischen Adresse, wobei die Ziel-Host-Dateneinheit zu modifizieren ist und die Ziel-Host-Dateneinheit als eine Master-Dateneinheit festgelegt wird, Festlegen einer Host-Dateneinheit der neuen physikalischen Adresse als die Master-Dateneinheit, Neuabbilden jeweiliger logischer Adressen der zweiten Host-Dateneinheiten auf die neue physikalische Adresse in der Nachschlagetabelle, Aktualisieren von Umkehrabbildungen der physikalischen Adresse der Ziel-Host-Dateneinheit zu Umkehrabbildungen der neuen physikalischen Adresse in der Nachverfolgungstabelle und Ungültigmachen an der physikalischen Adresse der Ziel-Host-Dateneinheit gespeicherter Daten.
  21. Flash-Speichersystem nach Anspruch 12, wobei die Steuereinrichtung ferner dafür ausgelegt ist, Folgendes auszuführen: für jede logische Adresse in Zusammenhang mit einem eindeutigen Identifizierer aus dem Satz eindeutiger Identifizierer, Festlegen eines Deduplizierungshinweiszeichens in einem Eintrag, welcher der logischen Adresse in der Nachschlagetabelle entspricht, wobei das Deduplizierungshinweiszeichen angibt, dass die logische Adresse auf eine jeweilige eindeutige physikalische Adresse abgebildet wird.
  22. Flash-Speichersystem nach Anspruch 12, wobei die mehreren Flash-Dateneinheiten jeweilige Flash-Dateneinheiten aus den mehreren Flash-Speichervorrichtungen umfassen und wobei die jeweiligen Flash-Dateneinheiten aus den mehreren Flash-Speichervorrichtungen ansprechend auf einen Systemwartungsvorgang ausgewählt werden.
  23. Nicht flüchtiges maschinenlesbares Medium mit darin gespeicherten Befehlen, die, wenn sie von einer Maschine ausgeführt werden, die Maschine veranlassen, Operationen auszuführen, welche Folgendes umfassen: Lesen mehrerer Flash-Dateneinheiten aus einem Flash-Speicher in einen Puffer, wobei jede der mehreren Flash-Dateneinheiten eine oder mehrere Host-Dateneinheiten aufweist, Bestimmen eines Identifizierers für jede der in den Puffer gelesenen Host-Dateneinheiten, Auswählen eines Satzes eindeutiger Identifizierer aus den bestimmten Identifizierern auf der Grundlage einer Anzahl von Host-Dateneinheiten, welche sich die jeweiligen eindeutigen Identifizierer teilen, und für jeden eindeutigen Identifizierer in dem Satz eindeutiger Identifizierer: Festlegen einer ersten Host-Dateneinheit, die den eindeutigen Identifizierer geteilt verwendet, als eine Master-Dateneinheit, wobei eine logische Adresse der ersten Host-Dateneinheit auf eine erste physikalische Adresse im Flash-Speicher in einer Nachschlagetabelle abgebildet wird, Neuabbilden jeweiliger logischer Adressen einer oder mehrerer zweiter Host-Dateneinheiten, die den eindeutigen Identifizierer geteilt verwenden, von jeweiligen zweiten physikalischen Adressen im Flash-Speicher auf die erste physikalische Adresse im Flash-Speicher in der Nachschlagetabelle und Ungültigmachen von Daten, die an den jeweiligen zweiten physikalischen Adressen im Flash-Speicher gespeichert sind.
  24. Nicht flüchtiges maschinenlesbares Medium nach Anspruch 23, wobei die Befehle ferner die Maschine veranlassen, Operationen auszuführen, welche Folgendes umfassen: Belegen einer Datenstruktur auf der Grundlage der bestimmten Identifizierer der Host-Dateneinheiten, wobei die Datenstruktur einen Eintrag für jeden eindeutigen Identifizierer von den bestimmten Identifizierern aufweist und wobei jeder Eintrag einen Zählwert von Host-Dateneinheiten, welche den jeweiligen eindeutigen Identifizierer geteilt verwenden, und eine logische Adresse jeder Host-Dateneinheit, die den jeweiligen eindeutigen Identifizierer geteilt verwendet, aufweist, wobei der Satz eindeutiger Identifizierer ausgewählt wird, indem die Einträge der Datenstruktur durchlaufen werden und eine vorgegebene Anzahl eindeutiger Identifizierer mit den größten Zählwerten von Host-Dateneinheiten ausgewählt wird.
  25. Nicht flüchtiges maschinenlesbares Medium nach Anspruch 23, wobei die mehreren Flash-Dateneinheiten ansprechend auf einen Datenmüllsammelvorgang aus dem Flash-Speicher in den Puffer gelesen werden.
DE102015012621.0A 2014-09-29 2015-09-29 Offline-Deduplikation für Halbleiterspeichervorrichtungen Withdrawn DE102015012621A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/500,937 2014-09-29
US14/500,937 US9792069B2 (en) 2014-09-29 2014-09-29 Offline deduplication for solid-state storage devices

Publications (1)

Publication Number Publication Date
DE102015012621A1 true DE102015012621A1 (de) 2016-03-31

Family

ID=54544168

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015012621.0A Withdrawn DE102015012621A1 (de) 2014-09-29 2015-09-29 Offline-Deduplikation für Halbleiterspeichervorrichtungen

Country Status (5)

Country Link
US (1) US9792069B2 (de)
CN (1) CN105468294B (de)
DE (1) DE102015012621A1 (de)
FR (1) FR3026512A1 (de)
GB (1) GB2532850B (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102320864B1 (ko) * 2015-03-24 2021-11-03 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US10515055B2 (en) * 2015-09-18 2019-12-24 Netapp, Inc. Mapping logical identifiers using multiple identifier spaces
JP6679971B2 (ja) * 2016-02-16 2020-04-15 セイコーエプソン株式会社 記憶装置、液体容器及びホスト装置
US10229000B2 (en) 2016-08-09 2019-03-12 Seagate Llc Erasure codes to prevent lower page corruption in flash memory
CN109074226B (zh) 2016-09-28 2020-03-20 华为技术有限公司 一种存储系统中重复数据删除方法、存储系统及控制器
US10235397B1 (en) * 2016-09-30 2019-03-19 EMC IP Holding Company LLC Trees and graphs in flash memory
US10282127B2 (en) 2017-04-20 2019-05-07 Western Digital Technologies, Inc. Managing data in a storage system
US10809928B2 (en) 2017-06-02 2020-10-20 Western Digital Technologies, Inc. Efficient data deduplication leveraging sequential chunks or auxiliary databases
CN107301133B (zh) * 2017-07-20 2021-01-12 苏州浪潮智能科技有限公司 一种构建丢失的FTL table的方法及装置
US10503608B2 (en) 2017-07-24 2019-12-10 Western Digital Technologies, Inc. Efficient management of reference blocks used in data deduplication
US10579593B2 (en) * 2018-01-31 2020-03-03 EMC IP Holding Company, LLC Techniques for selectively deactivating storage deduplication
CN108304736A (zh) * 2018-02-09 2018-07-20 深圳国微技术有限公司 一种安全芯片
CN109213450B (zh) * 2018-09-10 2021-08-31 郑州云海信息技术有限公司 一种基于闪存阵列的关联元数据删除方法、装置及设备
CN114072759A (zh) * 2019-07-26 2022-02-18 华为技术有限公司 存储系统中数据处理方法、装置及计算机存储可读存储介质
TWI768799B (zh) * 2021-03-30 2022-06-21 宏碁股份有限公司 資料讀取方法及電子系統
CN113867642B (zh) * 2021-09-29 2023-08-04 杭州海康存储科技有限公司 数据处理方法、装置及存储设备
CN117271224B (zh) * 2023-11-14 2024-02-20 苏州元脑智能科技有限公司 存储系统的数据重复存储处理方法及装置、存储介质、电子设备
CN117707435B (zh) * 2024-02-05 2024-05-03 超越科技股份有限公司 一种固态盘数据去重方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
WO2008106686A1 (en) * 2007-03-01 2008-09-04 Douglas Dumitru Fast block device and methodology
JP5026213B2 (ja) 2007-09-28 2012-09-12 株式会社日立製作所 ストレージ装置及びデータ重複排除方法
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
US8612699B2 (en) 2010-06-25 2013-12-17 International Business Machines Corporation Deduplication in a hybrid storage environment
WO2012056491A1 (en) 2010-10-26 2012-05-03 Hitachi, Ltd. Storage apparatus and data control method
US8572053B2 (en) 2010-12-09 2013-10-29 Jeffrey Vincent TOFANO De-duplication indexing
WO2012161933A1 (en) 2011-05-24 2012-11-29 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8930307B2 (en) 2011-09-30 2015-01-06 Pure Storage, Inc. Method for removing duplicate data from a storage array
US8583868B2 (en) 2011-08-29 2013-11-12 International Business Machines Storage system cache using flash memory with direct block access
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9069657B2 (en) * 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US8930612B2 (en) 2012-05-31 2015-01-06 Seagate Technology Llc Background deduplication of data sets in a memory
US8780633B2 (en) 2012-11-09 2014-07-15 SanDisk Technologies, Inc. De-duplication system using NAND flash based content addressable memory
US9898404B2 (en) * 2013-07-14 2018-02-20 Cnex Labs Method and apparatus for providing improved garbage collection process in solid state drive

Also Published As

Publication number Publication date
FR3026512A1 (de) 2016-04-01
CN105468294A (zh) 2016-04-06
GB2532850A (en) 2016-06-01
GB2532850B (en) 2016-12-07
US9792069B2 (en) 2017-10-17
GB201517060D0 (en) 2015-11-11
US20160092138A1 (en) 2016-03-31
CN105468294B (zh) 2018-10-26

Similar Documents

Publication Publication Date Title
DE102015012621A1 (de) Offline-Deduplikation für Halbleiterspeichervorrichtungen
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE102010013389B4 (de) Verfahren und System zum Durchführen von Caching, basierend auf der Heuristik auf Dateiebene
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112008003826B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112014005521T5 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE112010004969T5 (de) Hybrides Speicherteilsystem
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE102012022728A1 (de) Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens
DE112010004667T5 (de) Speichervorrichtung und Speichersteuerung
DE112015003536T5 (de) Host-Verwalter nicht flüchtiger Speicher
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE102016001066A1 (de) Zuordnung der logischen Blockadresse für Festplattenlaufwerke

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

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

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee