-
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.