-
TECHNISCHES GEBIET
-
Erfindungsgemäße Ausführungsformen beziehen sich im Allgemeinen auf Speichergeräte und spezieller auf Verringern der Schreibverstärkung (write amplification) von Speichergeräten ohne Cache-Bedarf zu erhöhen.
-
HINTERGRUND
-
Computergeräte speichern Daten in verschiedenen Arten von Speichermedien und -geräten. Einige dieser Speichermedien und -geräte sind nichtflüchtig, d. h. das Gerät speichert Daten fortbestehend, wenn die Stromversorgung eines Computersystems abgeschaltet wird. Ein Beispiel eines Permanentspeichergeräts ist NAND-Speicher.
-
Daten von Permanentspeichergeräten können als Seiten dargestellt werden, und Seiten können weiter in Blöcken beinhaltet sein. Ein auf einem Prozessor ausgeführtes Betriebssystem (operating system, OS) kann Aktionen anfordern oder ausführen, z. B. das Lesen aus und Schreiben in bestimmte Seiten des Speichermediums. Diese Seiten können mit einer „physischen Adresse” auf dem Speichermedium und mit einer „logischen Adresse” innerhalb des OS verbunden sein.
-
Eine logische Adresse stellt eine Adresse dar, die das Betriebssystem, der Disk-Cache oder andere logische Komponente verwenden kann, um auf eine Datenseite zuzugreifen. Wenn ein einzelner „Schreibzugriff” erfolgt, gibt es tatsächlich mehrere Schreibzugriffe, die erfolgen müssen – ein Schreibzugriff auf die physische Adresse und Schreibzugriffe, die mit Aktualisierungen der entsprechenden logischen Adresse verbunden sind. Die Gesamtanzahl an Schreibzugriffen, die während einer einzelnen „Schreib”operation stattfinden, wird als „Schreibverstärkung” bezeichnet.
-
Stand der Technik Optimierungen von Schreibverstärkung, d. h. Verringern der tatsächlichen Anzahl an Schreibzugriffen für eine Schreibtransaktion, erfordern große Mengen an Cache-RAM, während Speichermanagement-Lösungen, die geringe Mengen an Cache-RAM verwenden, typischerweise schlechte Schreibverstärkung erzielen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die folgende Beschreibung beinhaltet eine Erörterung von Figuren mit Veranschaulichungen, die als Beispiel von Implementierungen von erfindungsgemäßen Ausführungsformen gegeben werden. Die Zeichnungen sollen als Beispiel und in keiner Weise einschränkend verstanden werden. Wie hierin verwendet, sollen Referenzen auf eine oder mehr „Ausführungsformen” als ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristikum beschreibend angesehen werden, das/die in zumindest einer erfindungsgemäßen Implementierung beinhaltet ist. Daher beschreiben hierin erscheinende Ausdrücke wie z. B. „bei einer Ausführungsform” oder „bei einer alternativen Ausführungsform” verschiedene erfindungsgemäße Ausführungsformen und Implementierungen, und beziehen sich nicht alle notwendigerweise auf die gleiche Ausführungsform. Sie schließen sich jedoch auch nicht notwendigerweise gegenseitig aus.
-
1 ist ein Blockdiagramm eines Computersystems, das eine erfindungsgemäße Ausführungsform verwendet.
-
2 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum Erzeugen eines modifizierten B+ Baums, um logische Adresse physischen Adressen eines NAND-Speichergeräts zuzuordnen.
-
3 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines modifizierten B+ Baums.
-
4 ist ein Blockdiagramm, das einen Lesezugriff quer über den modifizierten B+ Baum veranschaulicht.
-
5 ist ein Blockdiagramm eines modifizierten B+ Baums während der Ausführung eines Schreibzugriffs.
-
Die Beschreibungen von bestimmten Details und Implementierungen folgen, einschließlich einer Beschreibung der Figuren, die einige oder alle der nachstehend beschriebenen Ausführungsformen darstellen, sowie eine Erörterung anderer potentieller Ausführungsformen oder Implementierungen der erfinderischen Konzepte, die hierin vorgestellt sind. Ein Überblick über erfindungsgemäße Ausführungsformen wird nachstehend bereitgestellt, gefolgt von einer detaillierteren Beschreibung unter Bezugnahme auf die Zeichnungen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Erfindungsgemäße Ausführungsformen beziehen sich auf Verfahren, Vorrichtungen und Systeme, um Schreibverstärkung von Speichergeräten unter Verwendung von geringen Mengen an Cache-Speicher zu verbessern. Erfindungsgemäße Ausführungsformen können als ein modifizierter B+ Baum dargestellt sein, der logische und physische Adressen von Speicherseiten darstellt. Der modifizierte B+ Baum würde mit darauf bezogenen traversalen Algorithmen und Caching-Richtlinien verwendet werden. Beispielhafte hierin beschriebene erfindungsgemäße Ausführungsformen verwenden NAND-Speicher; für Fachleute ist es jedoch selbstverständlich, dass die folgenden Ausführungsformen mit anderen unterschiedlichen Arten von Speichergeräten und Permanentspeichern (z. B. Phasenwechselspeicher kann erfindungsgemäße Ausführungsformen einsetzen) verwendet werden können.
-
Ein B+ Baum stellt sortierte Daten auf eine Art und Weise dar, die eine effiziente Einfügung, Rückgewinnung und Entfernung von Berichten ermöglicht, die jeweils durch einen Schlüssel identifiziert sind. In einem B+ Baum (im Gegensatz zu einem B– Baum) werden alle Daten auf der Blattebene des Baums gespeichert, während Schlüssel in Innenknoten gespeichert werden.
-
Ein B+ Baum ermöglicht effiziente Rückgewinnung von gespeicherten Daten durch Verwenden eines blockorientierten Speicherkontextes. Stand der Technik B+ Bäume sind beginnend mit dem Stammknoten, dann mit den Innenknoten und zum Schluss mit den Blattknoten ausgestaltet.
-
Erfindungsgemäße Ausführungsformen können als ein modifizierter B+ Baum dargestellt werden, wobei der Baum einen Baum mit mehreren Ebenen umfasst, in dem alle Datenelemente in den Blattknoten des Baums gespeichert sind. Jeder Nichtblattknoten in dem Baum bezieht sich auf eine große Anzahl an Knoten in der nächsten Ebene abwärts gehend von dem Baum. Die Datenelemente in dem hierin beschriebenen modifizierten B+ Baum können sequentiell gespeichert werden, und daher sind zwischen Knoten keine Zeiger erforderlich, die auf der gleichen Ebene des Baums sind.
-
Hierin beschriebene modifizierte B+ Bäume können als Datenstrukturen dargestellt werden, die verwendet werden, um Speichergerät-Seitenadressen zuzuordnen, z. B. logische Seitenadressen zu physischen Seitenadressen. Der gesamte modifizierte B+ Baum, der verwendet wird, um die Seiten zuzuordnen, kann auf dem gleichen Speichergerät gespeichert werden, wobei beschränkte Mengen an Cache erforderlich sind. Diese Ausführungsformen können von kostengünstigen Controller verwendet werden, die eine gute sequentielle Lese- und Schreibleistung ohne große Mengen an Cache erfordern.
-
1 ist ein Blockdiagramm eines Computersystems, das eine erfindungsgemäße Ausführungsform verwendet. Computersystem 100 kann ein Desktop-Computersystem, ein mobiles EDV-Gerät oder jedes andere Universalcomputerverarbeitungsgerät umfassen.
-
Wie in 1 gezeigt, kann das Computersystem 100 Benutzeroberfläche 110, Hauptprozessor (central processing unit, CPU) 120, primären flüchtigen Speicher 130 und sekundären Speicher 140 beinhalten. Jede der vorstehenden Komponenten kann über Systembus 190 gekoppelt sein. Der hierin verwendete Ausdruck „flüchtiger Speicher” bezieht sich auf Speicher, der Strom benötigt, um gespeicherte Information aufrechtzuerhalten (z. B. Cache-Speicher, RAM).
-
Sekundärer Permanentspeicher 140 kann weiter Controller 145, NAND-Speicher 150 und Cache 160 beinhalten. Es ist selbstverständlich, dass NAND-Speicher 150 Permanentspeicher ist. Der hierin verwendete Ausdruck „Permanentspeicher” bezieht sich auf einen Speicher, der gespeicherte Information aufrechterhalten kann, sogar wenn er nicht mit Strom versorgt wird. Controller 145 ist so konfiguriert, dass er Aktionen ausführt, die Zugriff, Management und Verwendung von Daten, enthalten in NAND-Speicher 150, miteinbeziehen. Cache-Speicher 160 kann flüchtigen Speicher beinhalten. Controller 145 kann Cache-Speicher 160 verwenden, um Information für Daten, die in NAND-Speicher 150 gespeichert sind (z. B. Knoten eines modifizierten B+ Baums), zu speichern, die mit logischen Seitenadressen und entsprechenden physischen Seitenadressen verbunden sind. Während als Element 160 innerhalb von sekundärem Speicher 140 gezeigt, kann Cache-Speicher, verwendet von Controller 145, in primärem flüchtigen Speicher 130 beinhaltet sein. Die Information, gespeichert in Cache-Speicher 160, in Verbindung mit Controller 145, kann von Computersystem 100 verwendet werden, um logische Adressen in physische Adressen oder umgekehrt zu übersetzen.
-
Bei einer Ausführungsform umfasst die in Cache 160 gespeicherte Information, verwendet von Controller 145, Elemente eines modifizierten B+ Baums. Der modifizierte B+ Baum, wie nachstehend beschrieben, ermöglicht es einem RAM-Controller mit geringem Cache, nur eine kleine Anzahl der Knoten des modifizierten B+ Baums in den Cache-Speicher aufzunehmen. Die Knoten und Blattknoten sind ebenfalls für die NAND-Seitengröße optimiert. Erfindungsgemäße Ausführungsformen erzeugen ebenfalls Lookup-Kosten niedriger Komplexität, da alle logischen Seiten sequentiell gespeichert werden, und darauf bezogene traversale Algorithmen und Caching-Richtlinien verwenden.
-
2 ist ein Ablaufdiagramm einer Ausführungsform eines Prozesses zum Erzeugen eines modifizierten B+ Baums, um logische Adresse physischen Adressen eines NAND-Speichergeräts zuzuordnen. Hierin veranschaulichte Ablaufdiagramme stellen Beispiele von Abläufen von verschiedenen Prozessaktionen bereit. Obwohl in einem bestimmten Ablauf oder Reihenfolge gezeigt, kann die Reihenfolge der Aktionen modifiziert werden, wenn nicht anders spezifiziert. Daher sollen die veranschaulichten Implementierungen lediglich als Beispiele verstanden werden, und die veranschaulichten Prozesse können in einer unterschiedlichen Reihenfolge ausgeführt werden und einige Aktionen können parallel ausgeführt werden. Außerdem können eine oder mehr Aktionen bei verschiedenen erfindungsgemäßen Ausführungsformen weggelassen werden; daher sind nicht alle Aktionen in jeder Implementierung erforderlich. Andere Prozessabläufe sind möglich.
-
Bei einer Ausführungsform wird ein Speichergerät eines Systems initialisiert, 200, und die Menge an Datenseiten, die in einem Speichergerät eines System beinhaltet ist, wird bestimmt, 210. Jede der Datenseiten wird mit einer physischen Adresse und einer logischen Adresse verbunden. Die physische Adresse eines Speicherorts zeigt einen physischen Ort der Datenseite in dem Speichergerät an, während die logische Adresse die Seite zu Komponenten des Systems identifiziert.
-
Die Blattknoten einer Baumstruktur werden erzeugt, basierend auf der Gesamtanzahl an Datenseiten, 220. Jeder Knoten der Baumstruktur umfasst eine Datenseite und hat eine Knotenkapazität gleich der Datenseitengröße. Die Knoten speichern eine Anzahl an logischen Adressen; die Anzahl an logischen Adressen wird von einer Datenseitengröße und der Anzahl an physischen Adressen in dem Speichergerät bestimmt. Bei einer Ausführungsform wird die Anzahl an von dem Knoten gespeicherten Adressen durch die folgende ganzzahlige Divisionsoperation bestimmt:
(page size in bytes)/(physical pages in the system).
-
Die Anzahl an Mittelseitenknoten für die Baumstruktur wird durch die Anzahl an logischen Adressen in dem System und der Knotenkapazität, 230, bestimmt. Bei einer Ausführungsform wird die Anzahl an Mittelseitenknoten durch die Obergrenze der folgenden ganzzahligen Divisionsoperation bestimmt:
(page addresses in system)/((page addresses per node)^2).
-
Ein Stammknoten wird in dem Baum eingerichtet, um die Adresse des zumindest einen Mittelebenenknoten, 240, zu speichern. Einige der Knoten der Baumstruktur werden sodann in den Cache-Speicher aufgenommen, 250. Dadurch, dass der modifizierte B+ Baum „am Boden sehr kräftig ist” (d. h. volle Blattknoten), kann es für einen RAM-Controller mit geringem Cache erforderlich sein, nur den Stammknoten, Mittelebenenknoten und zumindest einen der Blattknoten in den Cache-Speicher aufzunehmen, um den optimierten Speicherzugriff zu verwenden, wenn eine Seite von RAM gleich einer Seite des NAND-Speichergeräts ist.
-
3 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines modifizierten B+ Baums. Baum 300 beinhaltet eine geringe Menge an physischen Seiten, um zu veranschaulichen, wie ein Baum ausgestaltet und überquert werden kann. Ausführungsformen involvieren typischerweise wesentlich größere Mengen an physischen Seiten.
-
Die Anzahl an Seitenadressen pro Knoten für Baum 300 kann durch die beispielhafte vorstehend beschriebene Gleichung bestimmt werden:
pageAddressesPerNode = pageSizeInBytes/physicalPagesInSystem.
-
In 3 pageSizeInBytes = 64 und physicalPagesInSystem = 17; deshalb ist pageAddressesPerNode = 3.
-
Die Anzahl an Mittelseitenknoten für Baum 300 kann durch die beispielhafte Gleichung bestimmt werden, die vorstehend beschrieben wird:
numMidPageNodes = ceil (physicalPagesInSystem/(pageAddressesPerNode·pageAddressesPerNode))
-
In 3 physicalPagesInSystem = 17 und pageAddressesPerNode = 9; deshalb ist numMidPageNodes = 2 (i. e., ceil (17/9) = 2).
-
Um eine logische Adresse in die entsprechende physische Adresse zu übersetzen, muss modifizierter B+ Baum 300 überquert werden, ausgehend von Stammknoten 310 über Mittelseitenknoten 320 und 330 bis hin zu Blattknoten 340–345. Jeder der Blattknoten identifiziert physische Seiten 350–366. Die folgende beispielhafte Gleichung kann verwendet werden, um zu bestimmen, welcher Stammknotenindex folgen muss, um den angemessenen Mittelseitenknoten zu finden:
rootNodeIndex = logicalPageAddress/(pageAddressesPerNode·pageAddressesPerNode).
-
In 3 beginnt das Überqueren von Baum 300 zum Erhalten der physischen Seite für LogicalPageAddress = 0xB mit dem Verwenden der vorstehenden Gleichung. Das Verwenden des vorstehend erörterten Wertes für pageAddressesPerNode ergibt:
rootNodeIndex = 11/9 = 1.
-
In 3 zeigt Index [1] von Stammknoten 310 auf Mittelseitenknoten 330.
-
Die folgende beispielhafte Gleichung kann verwendet werden, um zu bestimmen, welcher Mittelseitenknotenindex von Mittelseitenknoten 330 folgen muss, um den angemessenen Blattknoten zu finden:
midNodeIndex = (logicalPageAddress/pageAddressesPerNode) %pageAddressesPerNode.
-
For logicalPageAddress = 0xB:
midNodeIndex = (11/3) % 3 = 3 % 3 = 0.
-
In 3 zeigt Index [0] von Mittelseitenknoten 330 auf Blattknoten 343.
-
Die folgende beispielhafte Gleichung kann verwendet werden, um zu bestimmen, welcher Blattknotenindex von Blattknoten 343 folgen muss, um die angemessene physische Seite zu finden:
leafIndex = logicalPageAddress % pageAddressesPerNode.
-
For LogicalPageAddress = 0xB:
leafIndex = 11 % 3 = 2.
-
In 3 zeigt Index [2] von Blattknoten 343 auf physische Seite 361. Daher übersetzt das Überqueren von Baum 300 unter Verwendung von LogicalPageAddress 0×B die logische Adresse in physische Seite 361 über 310[1]-330[0]-343[2]. Das vorstehende Beispiel veranschaulicht, dass das Sortieren der Einträge von Baum 300 sequentiell eine niedrige Komplexität in Speicher-Lookups ermöglicht.
-
4 ist ein Blockdiagramm, das einen Lesezugriff quer über den modifizierten B+ Baum veranschaulicht. Die Anzahl an Knoten und Einträgen, gezeigt in dem Stammknoten (420), den Mittelseitenknoten (431, 432, 435 und 439) und Blattseitenknoten (441, 445, 448 und 449), sind lediglich zum Zweck der Veranschaulichung, und werden nicht gezeigt, um die ordentliche Anzahl an Knoten oder Einträgen in jedem der entsprechenden Knoten zu veranschaulichen.
-
Das Überqueren von Baum 400, um physischen Seitenort 450 einer logischen Seitenadresse zu finden, wird durch Lesen und Aufnehmen des Stammseitenknotens 420 in den Cache-Speicher durchgeführt (in einem NAND-Speichergerät ist dies der erste Lesezugriff nach dem Hochfahren; ansonsten erfolgt die Aufnahme in den Cache-Speicher). Der Ort von Stammseitenknoten 420 wird durch Stammzeiger 415 bestimmt, der in reserviertem Block 410 gespeichert wird. Der Mittelseitenknoten, der in dem Stammseitenknoten adressiert wird, wird durch einen traversalen Algorithmus bestimmt. In 4 ist der entsprechende Mittelseitenknoten Knoten 435. Dieser Knoten wird gelesen und in den Cache-Speicher aufgenommen.
-
Der angemessene Mittelseitenknotenindex, wie bestimmt durch den traversalen Algorithmus, zeigt auf den entsprechenden Blattseitenknoten. In 4 ist der entsprechende Blattseitenknoten Knoten 445. Eine Caching-Richtlinie kann angewendet werden, um zu bestimmen, ob Blattseitenknoten 445 in den Cache-Speicher aufgenommen wird. Die Bestimmung, Blattseitenknoten 445 in den Cache-Speicher aufzunehmen, kann weiter von verfügbarem Cache-RAM abhängig sein.
-
Die physische Seitenadresse von Datenseite 450 ist der Wert, der in dem entsprechenden Blattknotenindex von Blattseitenknoten 445 beinhaltet ist. Es ist anzumerken, dass in dem vorstehenden Algorithmus, sobald alle Stamm- und Mittelseitenknoten in den Cache-Speicher dort aufgenommen wurden, höchstens ein Lesezugriff von NAND erforderlich ist, um die physischen Adressen für jegliche logischen Adressen zu finden. Für sequentielle Zugriffe sind typischerweise keine zusätzlichen Lesezugriffe erforderlich, da die logischen zu physischen Einträge der Blattknoten sequentiell gespeichert werden. Solange die sequentiellen Zugriffe also nicht über die letzte Seite hinausgehen, auf die in einem Blattseitenknoten Bezug genommen wird (d. h. über Index 499 in Blattknoten 445) ist kein zusätzlicher Knoten-Lesezugriff erforderlich. Dies führt zu verbesserter sequentieller Leseleistung verglichen mit dem Stand der Technik.
-
5 ist ein Blockdiagramm eines modifizierten B+ Baums während der Ausführung eines Schreibzugriffs. Die Anzahl an Knoten und Einträgen, gezeigt in dem Stammknoten (521, 525), den Mittelseitenknoten (530, 531, 535) und Blattknoten (540, 541, 542 und 545), sind lediglich zum Zweck der Veranschaulichung, und werden nicht gezeigt, um die ordentliche Anzahl an Knoten oder Einträgen in jedem der entsprechenden Knoten zu veranschaulichen.
-
Eine Aktualisierung (z. B. ein Zurückschreiben) von Datenseite 551 wird als aktualisierte Seite 555 gezeigt. Aktualisieren von Baum 500 beinhaltet zuerst ein Aktualisieren der im Cache-Speicher befindlichen Kopie von Blattseitenknoten 541. Der Blattseitenknoten muss jedes Mal aktualisiert werden, wenn eine Seite in den NAND geschrieben wird. Neuer Blattseitenknoten 545 wird als auf die aktualisierte Seite 555 zeigend gezeigt.
-
Der neue physische Seitenort des Blattseitenknotens 545 muss aktualisiert werden. Periodische Aktualisierungen von NAND-Kopien von Stammseitenknoten 521 und Mittelseitenknoten 531 werden ebenfalls als neue Knoten 525 bzw. 535 veranschaulicht. Diese periodischen Aktualisierungen werden zu Datenintegritätszwecken benötigt.
-
Reservierter Block 510 wird mit Stammzeiger 515 aktualisiert, um Stammzeiger 511 zu ersetzen. Da sequentielle Schreibzugriffe auf den gleichen im Cache-Speicher befindlichen Blattseitenknoten zugreifen, arbeitet die veranschaulichte Ausführungsform gut mit sequentiellen Schreibzugriffen auf physische Seiten, auf die von dem gleichen Blattseitenknoten Bezug genommen wird.
-
Verschiedene Komponenten, die vorstehend als Prozesse, Server oder Werkzeuge, wie hierin beschrieben, bezeichnet werden, können ein Mittel zur Ausführung der beschriebenen Funktionen sein. Jede der hierin beschriebenen Komponenten beinhaltet Software oder Hardware oder eine Kombination davon. Die Komponenten können als Softwaremodule, Hardwaremodule, Spezialzweckhardware (z. B. anwendungsspezifische Hardware, ASICs, DSPs, etc.), eingebettete Controller, festverdrahteter Schaltkreis, etc. implementiert werden. Softwareinhalt (z. B. Daten, Befehle, Konfiguration) kann über ein Herstellungsprodukt bereitgestellt werden, einschließlich eines computerlesbaren Speichermediums, das Inhalt bereitstellt, der Befehle darstellt, die ausgeführt werden können. Der Inhalt kann einen Computer dazu bringen, verschiedene hierin beschriebene Funktionen/Operationen auszuführen. Ein maschinenlesbares Speichermedium beinhaltet jeden Mechanismus, der Information in einer Form bereitstellt (d. h. speichert und/oder überträgt), auf die von einem Computer zugegriffen werden kann (z. B. EDV-Gerät, Elektroniksystem, etc.), wie z. B. beschreibbare/nicht-beschreibbare Medien (z. B. ROM (read only memory); Direktzugriffsspeicher (random access memory, (RAM); magnetisches Diskettenspeichermedium; optisches Speichermedium, Flash-Memory-Geräte, etc.) Der Inhalt kann direkt ausführbar („Objekt”- oder „ausführbare” Form), Quellcode oder anderer Code (Delta- oder Patch-Code) sein. Ein computerlesbares Speichermedium kann ebenfalls einen Speicher oder eine Datenbank beinhalten, von dem/der Inhalt heruntergeladen werden kann. Ein computerlesbares Medium kann ebenfalls ein Gerät oder Produkt enthalten, auf dem zum Zeitpunkt des Kaufs oder der Lieferung Inhalt gespeichert ist. Daher wird das Liefern eines Geräts mit darauf gespeichertem Inhalt oder das Anbieten von Inhalt zum Herunterladen über ein Kommunikationsmedium als das Bereitstellen eines Herstellungsprodukts mit solch einem hierin beschriebenen Inhalt verstanden.