DE102010053282A1 - Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen - Google Patents

Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen Download PDF

Info

Publication number
DE102010053282A1
DE102010053282A1 DE102010053282A DE102010053282A DE102010053282A1 DE 102010053282 A1 DE102010053282 A1 DE 102010053282A1 DE 102010053282 A DE102010053282 A DE 102010053282A DE 102010053282 A DE102010053282 A DE 102010053282A DE 102010053282 A1 DE102010053282 A1 DE 102010053282A1
Authority
DE
Germany
Prior art keywords
node
nodes
page
addresses
leaf
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.)
Ceased
Application number
DE102010053282A
Other languages
English (en)
Inventor
Nathanial Kiel British Columbia Boyle
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102010053282A1 publication Critical patent/DE102010053282A1/de
Ceased 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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

Abstract

Erfindungsgemäße Ausführungsformen beziehen sich im Allgemeinen auf Speichergeräte und spezieller auf Verringern der Schreibverstärkung von Speichergeräten ohne den Cache-Bedarf zu erhöhen. 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. Hierin beschriebene modifizierte B+ Bäume können als Datenstrukturen dargestellt werden, die verwendet werden, um Speichergerät-Seitenadressen zuzuordnen. 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.

Description

  • 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 340345. Jeder der Blattknoten identifiziert physische Seiten 350366. 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.

Claims (18)

  1. System, umfassend: ein Speichergerät, das als eine Vielzahl von Datenseiten organisiert ist, wobei jede der Vielzahl von Datenseiten mit einer physischen Adresse und einer logischen Adresse verbunden werden soll, wobei die physische Adresse einen Speicherort der Datenseite in dem Speichergerät anzeigen soll, wobei die logische Adresse die Seite zu einer Komponente des Systems identifizieren soll; eine Baumstruktur, die in dem Speichergerät gespeichert ist, wobei die Baumstruktur die Vielzahl von Datenseiten organisieren soll, wobei jeder Knoten der Baumstruktur eine Knotenkapazität aufweisen soll, um eine Anzahl an logischen Adressen zu speichern, wobei die Knotenkapazität von einer Datenseitengröße und einer Anzahl an physischen Adressen in dem Speichergerät bestimmt werden soll, wobei die Baumstruktur weiter beinhalten soll eine Vielzahl von Blattknoten, um die logischen Adressen der Datenseiten des Speichergeräts darzustellen, wobei jeder Blattknoten die physische Adresse einer der Datenseiten beinhalten soll, eine Vielzahl von Knoten, um die Adressen der Blattknoten zu speichern, und einen Stammknoten, um die Adressen der Vielzahl von Mittelebenenknoten zu speichern; und eine Cache-Einheit, um Kopien einiger der Knoten der Baumstruktur zu speichern.
  2. System nach Anspruch 1, wobei das Speichergerät ein NAND-Speichergerät umfasst.
  3. System nach Anspruch 1, wobei die Cache-Einheit Kopien des Stammknotens, zumindest eines Mittelebenenknotens und von zumindest einem der Blattknoten speichern soll.
  4. System nach Anspruch 1, wobei die Anzahl an Mittelebenenknoten durch die Anzahl an logischen Adressen in dem System und der Knotenkapazität bestimmt wird.
  5. System nach Anspruch 1, wobei die Vielzahl von Blattknoten sequentiell die Adressen der Datenseiten des Systems speichern soll, und wobei die Vielzahl von Mittelebenenknoten sequentiell die Adressen der Blattknoten speichern soll.
  6. System nach Anspruch 5, weiter umfassend einen Speicher-Controller, um die physische Adresse der Seite zu bestimmen, basierend auf der logischen Adresse der Seite, wobei das Bestimmen beinhaltet: Identifizieren eines Indexes des Stammknotens durch Erhalten des Quotienten der logischen Adresse der Seite geteilt durch das Ergebnis der Knotenkapazität zum Quadrat, wobei der Index des Stammknotens einen Mittelebenenknoten identifizieren soll; Identifizieren eines Indexes des Mittelebenenknotens durch Teilen, der Rest des Ergebnisses des Quotienten der logischen Adresse geteilt durch die Knotenkapazität, durch die Knotenkapazität, wobei der Index des Mittelebenenknotens einen Blattknoten identifizieren soll; und Identifizieren eines Indexes des Blattknotens durch Erhalten des Restes des Ergebnisses der logischen Adresse geteilt durch die Knotenkapazität, wobei der Index des Blattknotens die physische Adresse der Seite identifizieren soll.
  7. Verfahren, umfassend: Initialisieren eines Speichergeräts, das eine Vielzahl von Datenseiten beinhaltet, wobei jede der Vielzahl von Datenseiten mit einer physischen Adresse und einer logischen Adresse verbunden werden soll, wobei die physische Adresse einen physischen Ort der Datenseite in dem Speichergerät anzeigen soll, wobei die logische Adresse die Seite zu einem EDV-Gerät identifizieren soll; Erzeugen einer Baumstruktur, um die Vielzahl von Datenseiten zu organisieren, wobei jeder Knoten der Baumstruktur eine Knotenkapazität aufweisen soll, um eine Anzahl an logischen Adressen zu speichern, wobei die Knotenkapazität von einer Datenseitengröße und einer Anzahl an physischen Adressen in dem Speichergerät bestimmt werden soll, wobei die Baumstruktur weiter beinhalten soll eine Vielzahl von Blattknoten, um die logischen Adressen der Datenseiten des Speichergeräts darzustellen, wobei jeder Blattknoten die physische Adresse einer der Datenseiten beinhalten soll, eine Vielzahl von Mittelebenenknoten, um die Adressen der Blattknoten zu speichern, und einen Stammknoten, um die Adressen der Vielzahl von Mittelebenenknoten zu speichern; und Speichern einiger der Knoten der Baumstruktur in einem Cache des Speichergeräts.
  8. Verfahren nach Anspruch 7, wobei das Speichergerät ein NAND-Speichergerät umfasst.
  9. Verfahren nach Anspruch 7, wobei das Speichern einiger der Knoten der Baumstruktur das Speichern des Stammknotens, zumindest eines Mittelebenenknotens und von zumindest einem der Blattknoten beinhaltet.
  10. Verfahren nach Anspruch 7, wobei die Anzahl an Mittelebenenknoten durch die Anzahl an logischen Adressen in dem System und der Knotenkapazität bestimmt wird.
  11. Verfahren nach Anspruch 7, wobei die Vielzahl von Blattknoten sequentiell die logischen Adressen der Datenseiten des Systems speichern soll, und wobei die Vielzahl von Mittelebenenknoten sequentiell die Adressen der Blattknoten speichern soll.
  12. Verfahren nach Anspruch 7, weiter umfassend: Bestimmen, über einen Speicher-Controller, der physischen Adresse der Seite, basierend auf der logischen Adresse der Seite, wobei das Bestimmen beinhaltet Identifizieren eines Indexes des Stammknotens durch Erhalten des Quotienten der logischen Adresse der Seite geteilt durch das Ergebnis der Knotenkapazität zum Quadrat, wobei der Index des Stammknotens einen Mittelebenenknoten identifizieren soll, Identifizieren eines Indexes des Mittelebenenknotens durch Teilen, der Rest des Ergebnisses des Quotienten der logischen Adresse geteilt durch die Knotenkapazität, durch die Knotenkapazität, wobei der Index des Mittelebenenknotens einen Blattknoten identifizieren soll, und Identifizieren eines Indexes des Blattknotens durch Erhalten des Restes des Ergebnisses der logischen Adresse geteilt durch die Knotenkapazität, wobei der Index des Blattknotens die physische Adresse der Seite identifizieren soll.
  13. Herstellungsprodukt, umfassend ein computerlesbares Speichermedium mit Befehlen, die darauf gespeichert sind, um einen Prozessor zu veranlassen, Operationen auszuführen, einschließlich: Initialisieren eines Speichergeräts, das eine Vielzahl von Datenseiten beinhaltet, wobei jede der Vielzahl von Datenseiten mit einer physischen Adresse und einer logischen Adresse verbunden werden soll, wobei die physische Adresse einen physischen Ort der Datenseite in dem Speichergerät anzeigen soll, wobei die logische Adresse die Seite zu einem EDV-Gerät identifizieren soll; Erzeugen einer Baumstruktur, um die Vielzahl von Datenseiten zu organisieren, wobei jeder Knoten der Baumstruktur eine Knotenkapazität aufweisen soll, um eine Anzahl an logischen Adressen zu speichern, wobei die Knotenkapazität von einer Datenseitengröße und einer Anzahl an physischen Adressen in dem Speichergerät bestimmt werden soll, wobei die Baumstruktur weiter beinhalten soll eine Vielzahl von Blattknoten, um die logischen Adressen der Datenseiten des Speichergeräts darzustellen, wobei jeder Blattknoten die physische Adresse einer der Datenseiten beinhalten soll, eine Vielzahl von Mittelebenenknoten, um die Adressen der Blattknoten zu speichern, und einen Stammknoten, um die Adressen der Vielzahl von Mittelebenenknoten zu speichern; und Speichern von Knoten der Baumstruktur in einem Cache des Speichergeräts.
  14. Herstellungsprodukt nach Anspruch 13, wobei das Speichergerät ein NAND-Speichergerät umfasst.
  15. Herstellungsprodukt nach Anspruch 13, wobei das Speichern von Knoten der Baumstruktur das Speichern des Stammknotens, zumindest eines Mittelebenenknotens und von zumindest einem der Blattknoten beinhaltet.
  16. Herstellungsprodukt nach Anspruch 13, wobei die Anzahl an Mittelebenenknoten durch die Anzahl an logischen Adressen in dem System und der Knotenkapazität bestimmt wird.
  17. Herstellungsprodukt nach Anspruch 13, wobei die Vielzahl von Blattknoten sequentiell die logischen Adressen der Datenseiten des Systems speichern soll, und wobei die Vielzahl von Mittelebenenknoten sequentiell die Adressen der Blattknoten speichern soll.
  18. Herstellungsprodukt nach Anspruch 13, wobei die Operationen weiter beinhalten: Bestimmen, über einen Speicher-Controller, der physischen Adresse der Seite, basierend auf der logischen Adresse der Seite, wobei das Bestimmen beinhaltet Identifizieren eines Indexes des Stammknotens durch Erhalten des Quotienten der logischen Adresse der Seite geteilt durch das Ergebnis der Knotenkapazität zum Quadrat, wobei der Index des Stammknotens einen Mittelebenenknoten identifizieren soll, Identifizieren eines Indexes des Mittelebenenknotens durch Teilen, der Rest des Ergebnisses des Quotienten der logischen Adresse geteilt durch die Knotenkapazität, durch die Knotenkapazität, wobei der Index des Mittelebenenknotens einen Blattknoten identifizieren soll, und Identifizieren eines Indexes des Blattknotens durch Erhalten des Restes des Ergebnisses der logischen Adresse geteilt durch die Knotenkapazität, wobei der Index des Blattknotens die physische Adresse der Seite identifizieren soll.
DE102010053282A 2009-12-22 2010-12-02 Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen Ceased DE102010053282A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/645,170 US8412881B2 (en) 2009-12-22 2009-12-22 Modified B+ tree to store NAND memory indirection maps
US12/645,170 2009-12-22

Publications (1)

Publication Number Publication Date
DE102010053282A1 true DE102010053282A1 (de) 2011-07-07

Family

ID=43500873

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010053282A Ceased DE102010053282A1 (de) 2009-12-22 2010-12-02 Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen

Country Status (3)

Country Link
US (1) US8412881B2 (de)
DE (1) DE102010053282A1 (de)
GB (1) GB2476536B (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527546B2 (en) 2010-11-25 2013-09-03 International Business Machines Corporation Generating a checkpoint image for use with an in-memory database
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
CN102360338B (zh) * 2011-10-18 2013-07-24 中联重科股份有限公司 搅拌站以及用于该搅拌站的数据存储方法、服务器、系统
DE102014100800A1 (de) 2014-01-24 2015-07-30 Hyperstone Gmbh Verfahren zur zuverlässigen Adressierung eines großen Flash-Speichers
WO2015152830A1 (en) * 2014-04-03 2015-10-08 Agency For Science, Technology And Research Method of maintaining data consistency
SE1450525A1 (sv) * 2014-05-02 2015-11-03 Opiflex Automation AB Ett automationssystem och en metod för att betjäna ett produktionssystem
US10572452B1 (en) * 2015-01-01 2020-02-25 EMC IP Holding Company LLC Context-based read-ahead for B+ tree data structures in a deduplication system
US11010391B2 (en) * 2015-12-30 2021-05-18 Sap Se Domain agnostic similarity detection
WO2017196315A1 (en) * 2016-05-11 2017-11-16 Hitachi, Ltd. Data storage system and process for reducing read and write amplifications
US10114559B2 (en) * 2016-08-12 2018-10-30 International Business Machines Corporation Generating node access information for a transaction accessing nodes of a data set index
CN107491523B (zh) 2017-08-17 2020-05-05 三星(中国)半导体有限公司 存储数据对象的方法及装置
CN109690522B (zh) * 2018-08-27 2024-02-27 袁振南 一种基于b+树索引的数据更新方法、装置及存储装置
CN111382086B (zh) * 2018-12-29 2022-07-29 贵州白山云科技股份有限公司 一种前缀树存储方法、装置、存储介质和计算机设备
US11216434B2 (en) * 2019-09-25 2022-01-04 Atlassian Pty Ltd. Systems and methods for performing tree-structured dataset operations
CN111881064A (zh) * 2020-07-24 2020-11-03 北京浪潮数据技术有限公司 一种全闪存储系统中访问请求的处理方法、装置及设备
CN112597079B (zh) * 2020-12-22 2023-10-17 上海安路信息科技股份有限公司 卷积神经网络加速器的数据回写系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146571A (en) * 1988-03-28 1992-09-08 Emc Corporation Remapping defects in a storage system through the use of a tree structure
US5446887A (en) * 1993-09-17 1995-08-29 Microsoft Corporation Optimal reorganization of a B-tree
JPH09139052A (ja) 1995-11-10 1997-05-27 Sony Corp フアイル管理方法
US6535869B1 (en) * 1999-03-23 2003-03-18 International Business Machines Corporation Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
US6282605B1 (en) * 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
US6711562B1 (en) * 1999-12-01 2004-03-23 The Trustees Of Columbia University In The City Of New York Cache sensitive search (CSS) tree indexing system and method
US7007027B2 (en) * 2002-12-02 2006-02-28 Microsoft Corporation Algorithm for tree traversals using left links
US7120637B2 (en) * 2003-05-30 2006-10-10 Microsoft Corporation Positional access using a b-tree
US20100299494A1 (en) 2005-12-22 2010-11-25 Nxp B.V. Memory with block-erasable locations and a linked chain of pointers to locate blocks with pointer information
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7941692B2 (en) * 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
KR101533744B1 (ko) * 2008-10-16 2015-07-10 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법

Also Published As

Publication number Publication date
GB201020295D0 (en) 2011-01-12
GB2476536B (en) 2012-02-29
GB2476536A (en) 2011-06-29
US20110153979A1 (en) 2011-06-23
US8412881B2 (en) 2013-04-02

Similar Documents

Publication Publication Date Title
DE102010053282A1 (de) Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102016013248A1 (de) Bezugsblockansammlung in einer Bezugsmenge zur Deduplizierung beim Speichermanagement
DE102013208930B4 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112016000726T5 (de) Transparente hardwareunterstützte speicherdekompression
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102010051477A1 (de) Das gemeinsame Benutzen von virtuellen speicherbasierten Mehrversionsdaten zwischen den verschiedenartigen Prozessoren einer Computerplattform
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE112013004397T5 (de) Auswählbare Adressumsetzungsmechanismen
DE102021108455B4 (de) Erzeugen von Snapshots eines Schlüssel-Wert-Index
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102021109729A1 (de) Schätzung der nutzung der speichersystemkapazität
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE112020000748T5 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
US9684658B2 (en) SWAT command and API for atomic swap and trim of logical pages
DE102013200030A1 (de) Hash-basiertes verwalten von speicher-ids

Legal Events

Date Code Title Description
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final