DE102017104125A1 - Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay - Google Patents

Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay Download PDF

Info

Publication number
DE102017104125A1
DE102017104125A1 DE102017104125.7A DE102017104125A DE102017104125A1 DE 102017104125 A1 DE102017104125 A1 DE 102017104125A1 DE 102017104125 A DE102017104125 A DE 102017104125A DE 102017104125 A1 DE102017104125 A1 DE 102017104125A1
Authority
DE
Germany
Prior art keywords
logical
zone
log list
logical zone
processor
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.)
Granted
Application number
DE102017104125.7A
Other languages
English (en)
Other versions
DE102017104125B4 (de
Inventor
Jing Shi Booth
Jerry Lo
Subhash Balakrishna Pillai
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.)
Sandisk Technologies Inc NDGesD Staates Us
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017104125A1 publication Critical patent/DE102017104125A1/de
Application granted granted Critical
Publication of DE102017104125B4 publication Critical patent/DE102017104125B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Eine beispielhafte Vorrichtung umfasst eine Speichervorrichtung und einen oder mehrere Prozessoren. Die Speichervorrichtung ist ausgelegt zum Speichern einer Tabelle, die zwei oder mehr Abbildungen umfasst, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse assoziiert ist. Die Prozessoren sind dafür ausgelegt, in der Tabelle eine erste Zone und eine zweite Zone zu identifizieren. Jede Zone umfasst eine oder mehrere Abbildungen der Tabelle. Die Zonen teilen sich keinerlei Abbildung der Tabelle. Die Prozessoren sind ferner ausgelegt zum Bilden einer ersten Log-Liste, die eine oder mehrere Abbildungsaktualisierungen angibt, die mit der in der ersten Zone enthaltenen Abbildung bzw. den in der ersten Zone enthaltenen Abbildungen assoziiert sind, zum Bilden einer zweiten Log-Liste, die eine oder mehrere Abbildungsaktualisierungen angibt, die mit der in der zweiten Zone enthaltenen Abbildung bzw. den in der zweiten Zone enthaltenen Abbildungen assoziiert sind, und zum gleichzeitigen Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste, um die Tabelle zu aktualisieren.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft allgemein die Abbildung logischer Datenadressen auf physische Datenadressen.
  • STAND DER TECHNIK
  • In Computern oder anderen elektronischen Vorrichtungen verwendete Speicherungsvorrichtungen können nichtflüchtigen Speicher und/oder flüchtigen Speicher umfassen. Nichtflüchtiger Speicher ermöglicht Datenspeicherung in Fällen von Stromausfall, wobei der Stromausfall geplant oder ungeplant sein kann. Folglich haben sich nichtflüchtige Speichervorrichtungen zu einer beliebten Art von Speicher für vielfältige elektronische Anwendungen entwickelt. Zum Beispiel werden nichtflüchtige Speichervorrichtungen, darunter Flash-Speichervorrichtungen, gewöhnlich in Halbleiterspeicherungsvorrichtungen, wie etwa SSD (Solid-State Drives) integriert.
  • Einige Speicherungsvorrichtungen benutzen physische Datenadressen zur internen Abbildung von Daten auf Speicherungsorten. Zum Beispiel können SSD physische Blockadressen, wie etwa physische NAND-Adresseneinheiten in den Speicherungskomponenten des SSD, zum Spezifizieren von Orten von Daten im SSD verwenden. Betriebssysteme können jedoch logische Datenadressen verwenden, um logische Informationen zu spezifizieren, um die Speicherungsorte von Daten zu repräsentieren. Um Daten auf der Basis von dem Betriebssystem verständlichen logischen Ortsinformationen genau zu lokalisieren, kann ein Controller eines SSD eine Übersetzungstabelle von logischen in physische Datenadressen unterhalten, die hier als „L2P“-Tabelle bezeichnet wird. Die L2P-Tabelle assoziiert jede vom Betriebssystem verwendete logische Datenadresse mit einer intern durch den Controller des SSD verwendeten jeweiligen physischen Blockadresse. Der SSD-Controller kann auch eine Log-Liste unterhalten, die dynamisch Aktualisierungen der verschiedenen Abbildungen von logischen auf physische Adressen in der L2P-Tabelle protokolliert. Zum Beispiel kann die dynamische Log-Liste zuvor implementierte Aktualisierungen der L2P-Tabelle umfassen. Zusätzlich kann die dynamische Log-Liste anstehende Aktualisierungen umfassen, die mit Bezug auf die L2P-Tabelle in der Zukunft zu implementieren sind.
  • KURZFASSUNG
  • In einigen Beispielen beschreibt die Offenbarung ein Verfahren. Das Verfahren umfasst Bilden einer Tabelle durch einen Prozessor, die zwei oder mehr Abbildungen umfasst, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse einer Datenspeicherungsvorrichtung assoziiert ist, und Identifizieren mehrerer logischer Zonen durch den Prozessor, die eine erste logische Zone in der Tabelle und eine zweite logische Zone in der Tabelle umfassen, wobei jede der ersten logischen Zone und der zweiten logischen Zone eine oder mehrere Abbildungen der Tabelle umfasst und wobei sich die eine oder mehreren Abbildungen der ersten logischen Zone gegenseitig mit Bezug auf die eine oder mehreren Abbildungen der zweiten logischen Zone ausschließen. Das Verfahren kann ferner umfassen, durch den Prozessor eine erste Log-Liste zu bilden, die mit der ersten logischen Zone assoziiert ist, wobei die erste Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziiert sind, und durch den Prozessor eine zweite Log-Liste zu bilden, die mit der zweiten logischen Zone assoziiert ist, wobei die zweite Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der zweiten logischen Zone enthaltenen Abbildungen assoziiert sind. Das Verfahren kann außerdem gleichzeitiges Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste durch den Prozessor umfassen, um die Tabelle zu aktualisieren.
  • In einigen Beispielen beschreibt die Offenbarung eine Speicherungsvorrichtung, die eine Vorrichtung umfasst, die eine Speichervorrichtung und einen oder mehrere Prozessoren umfasst. Die Speichervorrichtung ist ausgelegt zum Speichern einer Tabelle, die zwei oder mehr Abbildungen umfasst, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse einer Datenspeicherungsvorrichtung assoziiert ist. Der eine oder die mehreren Prozessoren sind ausgelegt zum Identifizieren mehrerer logischer Zonen, einschließlich einer ersten logischen Zone in der Tabelle und einer zweiten logischen Zone in der Tabelle, wobei jede der ersten logischen Zone und der zweiten logischen Zone eine oder mehrere Abbildungen der Tabelle umfasst und wobei sich die eine oder mehreren Abbildungen der ersten logischen Zone gegenseitig mit Bezug auf die eine oder mehreren Abbildungen der zweiten logischen Zone ausschließen. Der Prozessor bzw. die Prozessoren kann bzw. können ferner ausgelegt sein zum Bilden einer ersten Log-Liste, die mit der ersten logischen Zone assoziiert ist, wobei die erste Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziiert sind, und zum Bilden einer zweiten Log-Liste, die mit der zweiten logischen Zone assoziiert ist, wobei die zweite Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der zweiten logischen Zone enthaltenen Abbildungen assoziiert sind. Der Prozessor bzw. die Prozessoren kann bzw. können auch ausgelegt sein zum gleichzeitigen Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste zur Aktualisierung der Tabelle.
  • In einigen Beispielen beschreibt die Offenbarung ein nichttransitorisches computerlesbares Speicherungsmedium, das mit Anweisungen codiert ist. Wenn sie ausgeführt werden, bewirken die Anweisungen, dass ein oder mehrere Prozessoren einer Datenverarbeitungsvorrichtung eine Tabelle bilden, die zwei oder mehr Abbildungen umfasst, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse einer Datenspeicherungsvorrichtung assoziiert ist, und mehrere logische Zonen identifizieren, die eine erste logische Zone in der Tabelle und eine zweite logische Zone in der Tabelle umfassen, wobei jede der ersten logischen Zone und der zweiten logischen Zone eine oder mehrere Abbildungen der Tabelle umfasst und wobei sich die eine oder mehreren Abbildungen der ersten logischen Zone gegenseitig mit Bezug auf die eine oder mehreren Abbildungen der zweiten logischen Zone ausschließen. Das nichttransitorische computerlesbare Speicherungsmedium kann ferner mit Anweisungen codiert sein, die, wenn sie ausgeführt werden, bewirken, dass der eine oder die mehreren Prozessoren der Datenverarbeitungsvorrichtung eine erste Log-Liste bilden, die mit der ersten logischen Zone assoziiert ist, wobei die erste Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder der mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziiert sind, und eine zweite Log-Liste bilden, die mit der zweiten logischen Zone assoziiert ist, wobei die zweite Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der zweiten logischen Zone enthaltenen Abbildungen assoziiert sind. Das nichttransitorische computerlesbare Speicherungsmedium kann auch mit Anweisungen codiert sein, die, wenn sie ausgeführt werden, den einen oder die mehreren Prozessoren der Datenverarbeitungsvorrichtung zum gleichzeitigen Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste zur Aktualisierung der Tabelle veranlassen.
  • In den beigefügten Zeichnungen und in der nachfolgenden Beschreibung werden die Einzelheiten eines oder mehrere Beispiele dargelegt. Andere Merkmale, Aufgaben und Vorteile werden aus der Beschreibung und den beigefügten Zeichnungen und aus den Ansprüchen hervorgehen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist eine konzeptuelle und schematische Blockdarstellung einer beispielhaften Speicherungsumgebung, in der eine Speicherungsvorrichtung als Speicherungsvorrichtung für eine Hostvorrichtung fungieren kann, gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • 2 ist eine konzeptuelle Darstellung einer beispielhaften Speichervorrichtung gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • 3 ist eine konzeptuelle und schematische Blockdarstellung eines beispielhaften Controllers gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • 4 ist eine konzeptuelle Darstellung einer beispielhaften Tabelle von logisch auf physisch (L2P).
  • 5 ist eine konzeptuelle Darstellung einer Zeitlinie, auf deren Grundlage verschiedene Aspekte der vorliegenden Offenbarung beschrieben werden.
  • 6 zeigt eine beispielhafte Log-Liste, die eine Vorrichtung unterhalten kann, um mit Bezug auf eine L2P-Tabelle zu implementierende Änderungen zu protokollieren.
  • 7 zeigt eine gezonte L2P-Tabelle gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • 8 zeigt ein anderes Beispiel für eine gezonte L2P-Tabelle gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • 9A und 9B zeigen Beispiele für zonenspezifische Log-Listen, die eine Vorrichtung unterhalten kann, gemäß verschiedenen Aspekten der vorliegenden Offenbarung.
  • 10 ist ein Flussdiagramm eines beispielhaften Prozesses, der eine Vorrichtung ausführen kann, um einen oder mehrere Aspekte der vorliegenden Offenbarung zu implementieren.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Offenbarung betrifft allgemein Systeme und Techniken zum Verringern der Zeit, die mit dem Durchschreiten oder „Replay“ einer Log-Liste beim Herauffahren einer Datenspeicherungsvorrichtung verbracht wird. In verschiedenen Benutzungsfällen kann ein Datenspeicherungsvorrichtung-Controller oder ein Prozessor des Controllers Aspekte der vorliegenden Offenbarung implementieren, um Mehrkernverarbeitung zur Parallelisierung des Replays der Log-Liste beim Herauffahren auszunutzen. Zum Beispiel kann ein gemäß Aspekten der vorliegenden Offenbarung konfigurierter Controller die L2P-Tabelle in mehrere logische „Zonen“ aufteilen. Beim Herauffahren können mehrere Prozessoren oder Verarbeitungskerne des Controllers ihrerseits die Log-Liste parallel für mehrere logische Zonen replayen. Während die Speicherungskapazität von Datenspeicherungsvorrichtungen wie SSD zugenommen hat, hat auch die Größe der L2P-Tabelle zugenommen. Mit zunehmender L2P-Größe wird auch der Replay- oder „Journaling“-Prozess zum Aktualisieren der L2P-Tabellen beim Herauffahren zunehmend zeitaufwendig und ressourcenintensiv.
  • Die Techniken der logischen Zonen der L2P-Tabelle und des parallelisierten Log-Listen-Replay der vorliegenden Offenbarung stellen mehrere potenzielle Vorteile bereit, indem existierende Datenspeicherungsvorrichtungs-Herauffahrmechanismen erweitert werden. Durch paralleles Journaling von mehreren Zonen der L2P-Tabelle kann der Datenspeicherungsvorrichtungs-Controller die derzeit von existierender Datenspeicherungsvorrichtungstechnologie benötigte Herauffahrzeit verringern. Als ein anderes Beispiel kann der Controller den Ressourcenverbrauch des Journaling-Prozesses gleichmäßiger auf mehrere Kerne verteilen, um dadurch die Last auf einem beliebigen einzelnen Kern über einem bestimmten Zeit-Slice oder Intervall zu verringern. Auf diese Weise kann ein gemäß Aspekten der vorliegenden Offenbarung konfigurierter Datenspeicherungsvorrichtungs-Controller immer mehr verfügbare Mehrkern-Verarbeitungstechnologie benutzen, um die Verteilung der Ressourcenbenutzung zu verbessern und die Herauffahrzeit für die Datenspeicherungsvorrichtung zu mindern. Anders ausgedrückt, ermöglichen die Techniken der vorliegenden Offenbarung, dass der Datenspeicherungsvorrichtungs-Controller Mehrkernprozessoren ausnutzt, die in handelsüblichen Datenverarbeitungsvorrichtungen immer mehr vorkommen.
  • Zuvor vorgeschlagene Techniken zum Verringern der Herauffahrzeit verwendeten Partitionierung eines SSD in mehrere virtuelle Laufwerke oder „Entitäten“. Partitionierung des SSD kann potenziell auf der Basis der verringerten Speicherungskapazität jeder partitionierten Entität eine verringerte Herauffahrzeit ergeben. Im Fall von partitionierten SSD verwalten der bzw. die SSD-Controller jedoch jede partitionierte Entität in einem geschlossenen Universum. Ein partitioniertes SSD kann somit den bzw. die Controller dabei behindern oder davon abhalten, bestimmte Wartungsoperationen auszuführen, wie etwa sogenannte „Müllabfuhr“ und/oder „Abnutzungsnivellierung“ auf SSD-weiter (oder „globaler“) Basis. Stattdessen müssen gemäß diesen zuvor vorgeschlagenen Techniken jegliche zusätzlichen Ressourcen, auf die für Wartungsoperationen zurückgegriffen werden kann, lokal in der kleineren partitionierten Entität residieren.
  • Im Gegensatz dazu ermöglichen die lokalen Zonen- und parallelisierten Replay-Techniken der vorliegenden Offenbarung dem Controller bzw. den Controllern der Datenspeicherungsvorrichtung, die Herauffahrzeit zu mindern und Mehrkernverarbeitung wirksam einzusetzen, ohne die globale Müllabfuhr und Abnutzungsnivellierung über die gesamte Datenspeicherungsvorrichtung zu beeinträchtigen. Es versteht sich, dass ein gemäß den Aspekten der vorliegenden Offenbarung konfigurierter Datenspeicherungsvorrichtungs-Controller eine L2P-Tabelle zonen kann, ohne die L2P-Tabelle in getrennte selbständige Tabellen zu partitionieren oder die Speicherungsvorrichtungen selbst logisch zu partitionieren. Zum Beispiel kann der Datenspeicherungsvorrichtungs-Controller mehrere Zonen der L2P-Tabelle voneinander abgrenzen, während die monolithische oder vereinigte Beschaffenheit der insgesamten L2P-Tabelle selbst aufrechterhalten wird. Somit kann der Controller gemäß der vorliegenden Offenbarung immer noch auf etwaige physische Speicherung oder andere Ressourcen in dem Gesamt-SSD zurückgreifen, um Müllabfuhr und Abnutzungsnivellierung durchzuführen. Auf diese Weise ermöglichen die Techniken des logischen Zonens von Tabellen und des parallelisierten Journaling der vorliegenden Offenbarung dem Controller, den Herauffahrprozess vom Standpunkt eines Zeit- und Taktzyklusverbrauchs aus gesehen zu verbessern, während die Vorteile der globalen Müllabfuhr und Abnutzungsnivellierung aufrechterhalten werden.
  • Gemäß einer oder mehreren Techniken der vorliegenden Offenbarung kann ein Controller einer Datenspeicherungsvorrichtung die L2P-Tabelle auf der Basis verschiedener Gruppierungsschemata logischer Adressen logisch zonen. Gemäß einigen Implementierungen kann der Controller durch Gruppierung logischer Datenadressen, die in sequenzieller Reihenfolge vorliegen, die von einem vorbestimmten Grundwert bis zu einem vorbestimmten Höchstwert reichen, eine logische Zone bilden. Gemäß anderen Implementierungen kann der Controller eine Zone bilden durch Auswählen jeder „N-ten“ logischen Adresse in sequenzieller Reihenfolge. In einem Beispiel mit N = 4 kann der Controller logische Adressen mit Indizes 0 und 4 in eine erste Zone legen, logische Adressen mit Index 1 und 5 in eine zweite Zone und so weiter. Die erstere Implementierung wird hier als „Bereichs-„ oder „serielle“ Implementierung bezeichnet, während die letztere als „verschachtelnde“ oder „verschachtelte“ Implementierung bezeichnet wird. Die Aspekte der vorliegenden Offenbarung werden nachfolgend mit Bezug auf die beigefügten Zeichnungen besprochen.
  • 1 ist eine konzeptuelle und schematische Blockdarstellung einer beispielhaften Speicherungsumgebung 2, in der die Speicherungsvorrichtung 6 als Speicherungsvorrichtung für die Hostvorrichtung 4 fungieren kann, gemäß einer oder mehreren Techniken der vorliegenden Offenbarung. Zum Beispiel kann die Hostvorrichtung 4 in der Speicherungsvorrichtung 6 enthaltene nichtflüchtige Speichervorrichtungen benutzen, um Daten zu speichern und abzurufen. In einigen Beispielen kann die Speicherungsumgebung 2 mehrere Speicherungsvorrichtungen, wie etwa die Speicherungsvorrichtung 6, umfassen, wobei die mehreren Speicherungsvorrichtungen als ein Speicherungsarray arbeiten können. Zum Beispiel kann die Speicherungsumgebung 2 mehrere Speicherungsvorrichtungen 6 umfassen, die als redundantes Array von kostengünstigen/unabhängigen Datenträgern (RAID) ausgelegt sind, die zusammen als Massenspeicherungsvorrichtung für die Hostvorrichtung 4 fungieren.
  • Die Speicherungsumgebung 2 kann die Hostvorrichtung 4 umfassen, die Daten in eine oder mehreren Speicherungsvorrichtungen, wie etwa der Speicherungsvorrichtung 6, speichern und/oder diese daraus abrufen kann. Wie in 1 dargestellt, kann die Hostvorrichtung 4 über die Schnittstelle 14 mit der Speicherungsvorrichtung 6 kommunizieren. Die Hostvorrichtung 4 kann eine beliebige von vielfältigen Vorrichtungen umfassen, darunter Computerserver, NAS-Einheiten (Network Attached Storage), Desktop-Computer, Notebook-(d.h. Laptop-)Computer, Tablet-Computer, Beistellgeräte, Telefonhandapparate wie sogenannte „Smartphones“, sogenannte „Smartpads“, Fernseher, Kameras, Anzeigevorrichtungen, digitale Medienplayer, Videospielkonsolen, Video-Streaming-Vorrichtungen und dergleichen. Die Hostvorrichtung 4 kann in der Speicherungsumgebung 2 gespeicherte Daten unter Verwendung von logischen oder von virtuellen Adressen identifizieren.
  • Wie in 1 dargestellt, kann die Speicherungsvorrichtung 6 einen Controller 8, ein nichtflüchtiges Speicherarray 10 (NVMA 10), eine Stromversorgung 11, flüchtigen Speicher 12 und eine Schnittstelle 14 umfassen. In einigen Beispielen kann die Speicherungsvorrichtung 6 zusätzliche Komponenten umfassen, die in 1 der Klarheit halber nicht gezeigt sind. Zum Beispiel kann die Speicherungsvorrichtung 6 eine Leiterplatte (PB) umfassen, an der Komponenten der Speicherungsvorrichtung 6 mechanisch angebracht sind und die elektrisch leitfähige Bahnen umfasst, die Komponenten der Speicherungsvorrichtung 6 elektrisch miteinander verbinden; und dergleichen. In einigen Beispielen können die physischen Abmessungen und Verbinderkonfigurationen der Speicherungsvorrichtung 6 einem oder mehreren Standard-Seitenverhältnissen entsprechen. Einige beispielhafte Standard-Seitenverhältnisse wären, aber ohne Beschränkung darauf, ein Festplattenlaufwerk (HDD) oder SSD mit 3,5 Zoll, ein HDD oder SSD mit 2,5 Zoll, ein HDD oder SSD mit 1,8 Zoll, PCI (Peripheral Component Interconnect), PCI-X (PCI-extended), PCIe (PCI Express) (z.B. PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI usw.), NVMe (nichtflüchtiger Speicher, Express) oder dergleichen. In einigen Beispielen kann die Speicherungsvorrichtung 6 direkt mit einem Motherboard der Hostvorrichtung 4 gekoppelt (z.B. direkt angelötet) sein.
  • Die Speicherungsvorrichtung 6 kann eine Schnittstelle 14 als Schnittstelle mit der Hostvorrichtung 4 umfassen. Die Schnittstelle 14 kann einen Datenbus zum Austauschen von Daten mit der Hostvorrichtung 4 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung 4 umfassen. Die Schnittstelle 14 kann gemäß einem beliebigen geeigneten Protokoll arbeiten. Zum Beispiel kann die Schnittstelle 14 gemäß einem oder mehreren der folgenden Protokolle arbeiten: ATA (Advanced Technology Attachment) (z.B. SATA (serial-ATA) und PATA (parallel-ATA)), Fibre Channel, SCSI (Small Computer System Interface), SAS (Serially Attached SCSI), PCI (Peripheral Component Interconnect), PCI-Express und NVMe. Die elektrische Verbindung der Schnittstelle 14 (z.B. der Datenbus, der Steuerbus oder beide) ist elektrisch mit dem Controller 8 verbunden, wodurch elektrische Verbindung zwischen der Hostvorrichtung 4 und dem Controller 8 bereitgestellt wird, was den Austausch von Daten zwischen der Hostvorrichtung 4 und dem Controller 8 erlaubt. In einigen Beispielen kann die elektrische Verbindung der Schnittstelle 14 auch der Speicherungsvorrichtung 6 gestatten, Stromversorgung von der Hostvorrichtung 4 zu erhalten. Wie zum Beispiel in 1 dargestellt, kann die Stromversorgung 11 über die Schnittstelle 14 Strom von der Hostvorrichtung 4 erhalten.
  • Die Speicherungsvorrichtung 6 umfasst den Controller 8, der eine oder mehrere Operationen der Speicherungsvorrichtung 6 verwalten kann. Zum Beispiel kann der Controller 8 das Lesen von Daten von Speichervorrichtungen 16 und/oder das Schreiben von Daten in diese verwalten.
  • Die Speicherungsvorrichtung 6 kann NVMA 10 umfassen, der mehrere Speichervorrichtungen 16Aa16Nn (kollektiv „Speichervorrichtungen 16“) umfassen kann. Jede der Speichervorrichtungen 16 kann dafür ausgelegt sein, Daten zu speichern und/oder abzurufen. Zum Beispiel kann eine Speichervorrichtung der Speichervorrichtungen 16 Daten und eine Nachricht von dem Controller 8 empfangen, die die Speichervorrichtung anweist, die Daten zu speichern. Ähnlich kann die Speichervorrichtung der Speichervorrichtungen 16 eine Nachricht von dem Controller 8 empfangen, die die Speichervorrichtung anweist, Daten abzurufen. In einigen Beispielen kann jede der Speichervorrichtungen 16 als Die bezeichnet werden. In einigen Beispielen kann ein einzelner physischer Chip mehrere Dies (d.h. mehrere Speichervorrichtungen 16) umfassen. In einigen Beispielen kann jede der Speichervorrichtungen 16 dafür ausgelegt sein, relativ große Mengen an Daten zu speichern (z.B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB usw.).
  • In einigen Beispielen können die Speichervorrichtungen 16 eine beliebige Art von nichtflüchtigen Speichervorrichtungen umfassen. Einige Beispiele für Speichervorrichtungen 16 wären, aber ohne Beschränkung darauf, Flash-Speichervorrichtungen, PCM-Vorrichtungen (Phasenänderungsspeicher), ReRAM-Vorrichtungen (Resistive Random-Access Memory), MRAM-Vorrichtungen (Magnetoresistive Random-Access Memory), F-RAM (Ferroelectric Random-Access Memory), holographische Speichervorrichtungen und jede andere Art von nichtflüchtigen Speichervorrichtungen.
  • Flash-Speichervorrichtungen können auf NAND oder NOR basierende Flash-Speichervorrichtungen umfassen und können Daten auf der Basis einer Ladung speichern, die für jede Flash-Speicherzelle in einem Floating-Gate eines Transistors enthalten ist. Bei NAND-Flash-Speichervorrichtungen kann die Flash-Speichervorrichtung in mehrere Blöcke aufgeteilt sein, die jeweils in mehrere Seiten aufgeteilt sein können.
  • 2 ist eine konzeptuelle Blockdarstellung einer beispielhaften Speichervorrichtung 16Aa, die mehrere Blöcke 17A17N (kollektiv „Blöcke 17“) umfasst, die jeweils in mehrere Seiten 19Aa19Nm (kollektiv „Seiten 19“) aufgeteilt sind. Jede Seite der Seiten 19 in einer bestimmten Speichervorrichtung (z.B. der Speichervorrichtung 16Aa) kann mehrere Flash-Speicherzellen umfassen. Bei NAND-Flash-Speichervorrichtungen können Zeilen von Flash-Speicherzellen unter Verwendung einer Wortleitung elektrisch verbunden werden, um eine Seite der mehreren Seiten 19 zu definieren. Jeweilige Zellen in jeder der Seiten 19 können elektrisch mit jeweiligen Bitleitungen verbunden sein. Der Controller 8 kann Daten auf der Seitenebene in NAND-Flash-Speichervorrichtungen schreiben und Daten daraus lesen und Daten auf der Blockebene von NAND-Flash-Speichervorrichtungen löschen.
  • In einigen Beispielen kann es nicht praktikabel sein, dass der Controller 8 getrennt mit jeder Speichervorrichtung der Speichervorrichtungen 16 verbunden ist. Dementsprechend können die Verbindungen zwischen Speichervorrichtungen 16 und dem Controller 8 gemultiplext sein. Beispielsweise können Speichervorrichtungen 16 zu Kanälen 18A18N (kollektiv „Kanäle 18“) gruppiert werden. Wie zum Beispiel in 1 dargestellt, können Speichervorrichtungen 16Aa16An zu einem ersten Kanal 18A und Speichervorrichtungen 16Na16Nn zu einem N-ten Kanal 18N gruppiert werden. Die zu jedem der Kanäle 18 gruppierten Speichervorrichtungen 16 können sich eine oder mehrere Verbindungen zu dem Controller 8 teilen. Zum Beispiel können die zu dem ersten Kanal 18A gruppierten Speichervorrichtungen 16 an einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus angeschlossen sein. Die Speicherungsvorrichtung 6 kann einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus für jeden jeweiligen Kanal von Kanälen 18 umfassen. In einigen Beispielen kann jeder Kanal der Kanäle 18 eine Menge von Chip-Enable- bzw. CE-Leitungen umfassen, die zum Multiplexen von Speichervorrichtungen auf jedem Kanal verwendet werden können. Zum Beispiel kann jede CE-Leitung mit einer jeweiligen Speichervorrichtung der Speichervorrichtungen 16 verbunden sein. Auf diese Weise kann die Anzahl getrennter Verbindungen zwischen dem Controller 8 und den Speichervorrichtungen 16 verringert werden. Da jeder Kanal eine unabhängige Menge von Verbindungen zu dem Controller 8 aufweist, kann sich zusätzlich die Verringerung der Verbindungen nicht signifikant auf die Datendurchsatzrate auswirken, da der Controller 8 gleichzeitig verschiedene Befehle an jeden Kanal ausgeben kann.
  • In einigen Beispielen kann die Speicherungsvorrichtung 6 eine Anzahl von Speichervorrichtungen 16 umfassen, die so gewählt ist, dass eine Gesamtkapazität bereitgestellt wird, die größer als die der Hostvorrichtung 4 zugängliche Kapazität ist. Dies wird als Überprovisionierung bezeichnet. Wenn zum Beispiel die Speicherungsvorrichtung 6 angeblich 240 GB benutzerzugängliche Speicherungskapazität umfassen soll, kann die Speicherungsvorrichtung 6 genug Speichervorrichtungen 16 umfassen, um eine Gesamtspeicherungskapazität von 256 GB zu ergeben. Die 16 GB der Speichervorrichtungen 16 können der Hostvorrichtung 4 oder einem Benutzer der Hostvorrichtung 4 nicht zugänglich sein. Stattdessen kann der überprovisionierte Teil der Speicherungsvorrichtungen 16 zusätzliche Blöcke bereitstellen, um Schreibvorgänge, Müllabfuhr, Abnutzungsnivellierung und dergleichen bereitzustellen. Ferner können die überprovisionierten Speicherungsvorrichtungen 16 zusätzliche Blöcke bereitstellen, die verwendet werden können, wenn sich einige Blöcke soweit abnutzen, dass sie unbenutzbar werden, und aus dem Gebrauch genommen werden. Die Anwesenheit der zusätzlichen Blöcke kann Herausnehmen der abgenutzten Blöcke erlauben, ohne eine Änderung der für die Hostvorrichtung 4 verfügbaren Speicherungskapazität zu verursachen. In einigen Beispielen kann die Menge an Überprovisionierung als p = (T – D)/D definiert werden, wobei p das Überprovisionierungsverhältnis, T die Gesamtspeicherungskapazität der Speicherungsvorrichtung 2 und D die Speicherungskapazität der Speicherungsvorrichtung 2 ist, die der Hostvorrichtung 4 zugänglich ist.
  • Die Speicherungsvorrichtung 6 kann die Stromversorgung 11 umfassen, die eine oder mehrere Komponenten der Speicherungsvorrichtung 6 mit Strom versorgen kann. Beim Betrieb in einem Standardmodus kann die Stromversorgung 11 die eine oder mehreren Komponenten unter Verwendung von Strom mit Strom versorgen, der durch eine externe Vorrichtung, wie etwa die Hostvorrichtung 4, bereitgestellt wird. Zum Beispiel kann die Stromversorgung 11 die eine oder mehreren Komponenten unter Verwendung von Strom mit Strom versorgen, der über die Schnittstelle 14 von der Hostvorrichtung 4 erhalten wird. Bei einigen Beispielen kann die Stromversorgung 11 eine oder mehrere Stromspeicherungskomponenten umfassen, die dafür ausgelegt sind, beim Betrieb in einem Herunterfahrmodus die eine oder mehreren Komponenten mit Strom zu versorgen, wie etwa wenn kein Strom mehr von der externen Vorrichtung erhalten wird. Auf diese Weise kann die Stromversorgung 11 als eine Onboard-Backup-Stromquelle fungieren. Einige Beispiele für die eine oder mehreren Stromspeicherungskomponenten wären, aber ohne Beschränkung darauf, Kondensatoren, Superkondensatoren, Batterien und dergleichen. In einigen Beispielen kann die Menge an Strom, die durch die eine oder mehreren Stromspeicherungskomponenten gespeichert werden kann, Funktion der Kosten und/oder Größe (z.B. Fläche und/oder Volumen) der einen oder mehreren Stromspeicherungskomponenten sein. Anders ausgedrückt, nehmen Kosten und/oder Größe der einen oder mehreren Stromspeicherungskomponenten auch zu, wenn die Menge an durch die eine oder mehreren Stromspeicherungskomponenten gespeichertem Strom zunimmt.
  • Die Speicherungsvorrichtung 6 kann den flüchtigen Speicher 12 umfassen, mit dem der Controller 8 Informationen speichern kann. In einigen Beispielen kann der Controller 8 den flüchtigen Speicher 12 als Cache verwenden. Zum Beispiel kann der Controller 8 Cache-gespeicherte Informationen 13 in den flüchtigen Speicher 12 speichern, bis die Cache-gespeicherten Informationen 13 in die Speichervorrichtungen 16 geschrieben werden. Wie in 1 dargestellt, kann der flüchtige Speicher 12 Strom verbrauchen, der von der Stromversorgung 11 empfangen wird. Beispiele für den flüchtigen Speicher 12 wären, aber ohne Beschränkung darauf, RAM (Direktzugriffsspeicher), DRAM (dynamischer Direktzugriffsspeicher), SRAM (statischer RAM) und SDRAM (synchroner dynamischer RAM) (z.B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen).
  • Obwohl sie hier hauptsächlich im Hinblick auf ein SSD beschrieben wird, kann die Speicherungsvorrichtung 6 in anderen Beispielen ein HDD (Festplattenlaufwerk) umfassen, wie etwa ein SMR-HDD (Shingled Magnetic Recording). In einigen Beispielen benutzen HDD L2P- oder Umleitungstabellen, die den hier beschriebenen ähnlich sind, und können von den in der vorliegenden Offenbarung beschriebenen logischen Zonentechniken Nutzen ziehen.
  • In einigen Beispielen kann der Controller 8 den flüchtigen Speicher 12 zum Speichern einer Übersetzungstabelle von logischen in physische (oder virtuellen in physische) Datenadressen speichern, die hier als eine L2P-Tabelle bezeichnet wird. Die L2P-Tabelle kann Einträge umfassen, die eine logische Datenadresse auf eine entsprechende physische Datenadresse abbilden. Zum Beispiel kann die L2P-Tabelle eine LBN (Logische Blocknummer) in eine physische NAND-Adressierungseinheit oder PBN (Physische Blocknummer) abbilden. In einigen Beispielen kann die L2P-Tabelle, statt eine LBN für jeden Eintrag zu enthalten, einen Index enthalten, der die jeweilige LBN codiert. In einigen Beispielen kann die L2P-Tabelle den Indexwert (bzw. die LBN) nicht in dem jeweiligen Eintrag speichern. Stattdessen kann sich in solchen Fällen die Hostvorrichtung 4 auf eine Dateneinheit unter Verwendung der LBN beziehen und der Controller 8 kann PBN benutzen, um direkt Daten in die Speichervorrichtungen 16 zu schreiben oder Daten aus ihnen zu lesen.
  • Der Controller 8 kann die L2P-Tabelle aus vielfältigen Gründen im flüchtigen Speicher 12 unterhalten. Ein Grund für das Unterhalten der L2P-Tabelle ist zum großen Teil, dass der Controller 8 NAND-Blöcke von Speichervorrichtungen 16 löschen kann, bevor er wieder die gelöschten NAND-Blöcke programmiert. Aus Gründen der Leistungsfähigkeit kann der Controller 8 einen aktuell abgebildeten NAND-Block, der mit einer bestimmten LBN assoziiert ist, nicht jedes Mal, wenn Daten gespeichert oder programmiert werden müssen, löschen und dann den neu gelöschten NAND programmieren. Um die Daten für die LBN zu speichern, kann der Controller 8 stattdessen die Daten in einen vorgelöschten (oder freien) NAND-Block von Speichervorrichtungen 16 schreiben. Als Ergebnis dieser dynamischen Umschreibvorgänge in vorgelöschte PBN kann sich der Inhalt der L2P-Tabelle ändern, wenn der Host 4 Schreibbefehle sendet.
  • Intern in der Speicherungsvorrichtung 6 führt der Controller 8 Müllabfuhr durch, indem gültige Benutzerdaten für eine bestimmte LBN von einer PBN zu einer anderen PBN in den Speichervorrichtungen 16 verlagert werden. Dementsprechend kann die Müllabfuhr mit Bezug auf den Betrieb der Speicherungsvorrichtung 6 als ein „Hintergrund“-Prozess bezeichnet werden. Die durch den Controller 8 durchgeführte Müllabfuhr kann bewirken, dass sich auch der Inhalt der L2P ändert. Obwohl der Controller 8 Daten von einer PBN zu einer anderen PBN transferiert, kann der Host 4 genauer gesagt immer noch die transferierten Daten mit derselben LBN assoziieren. Jede durch den Controller 8 durchgeführte Müllabfuhroperation kann somit potenziell eine Notwendigkeit auslösen, in der L2P-Tabelle zu aktualisieren. Durch Unterhalten der L2P-Tabelle in flüchtigem Speicher 12 kann der Controller 8 ein Schreiboverhead des Aktualisierens der L2P-Tabelle verringern, die Abnutzungsnivellierung vereinfachen, indem es weniger notwendig gemacht wird, Daten aus der L2P-Tabelle in die Abnutzungsnivellierung einzubringen, eine Geschwindigkeit von Schreibaktualisierungen an der L2P-Tabelle vergrößern der dergleichen. In einigen Beispielen kann der Controller 8 eine aktuelle Kopie der L2P-Tabelle periodisch in NVMA 10 schreiben.
  • Die Speicherungsvorrichtung 6 kann unter vielfältigen Umständen einen Stromausfall erfahren. Ein Beispiel ist ein absichtliches Herunterfahren, so, wie es auftreten kann, wenn ein Benutzer eine Datenverarbeitungsvorrichtung herunterfährt, die auf die Speicherungsvorrichtung 6 zugreift. Ein anderes Beispiel ist unbeabsichtigter Stromausfall, wie etwa während eines Stromversorgungsverlusts, loser Verbindungen oder einer anderen Fehlfunktion. Gleichgültig, ob Stromausfall beabsichtigt oder unbeabsichtigt ist, kann der Controller 8 beim nachfolgenden Herauffahren möglicherweise den L2P-Tabelleninhalt wieder herstellen müssen, um die tatsächlichen Abbildungen von LBN auf PBN widerzuspiegeln, die vor dem Stromausfall zuletzt gültig waren. Auf die Wiederherstellung der L2P-Tabelle nach einem vollen Stromversorgungszyklus (Herunterfahren oder Stromausfall, gefolgt durch Herauffahren) hin, kann der Controller 8 wieder durch den Host 4 gesendete Schreib- oder Lesebefehle versorgen.
  • Um den Inhalt der L2P-Tabelle wieder herzustellen, um aktuell gültige Abbildungen von LBN auf PBN widerzuspiegeln, kann der Controller 8 eine Log-Liste in der Laufzeit verfolgen. Die Log-Liste protokolliert den Änderungsverlauf von Abbildungen von LBN auf PBN in chronologischer Reihenfolge. Die Länge der Log-Liste kann ausreichend sein, um alle Aktualisierungen der Abbildung von LBN auf PBN seit dem letzten Mal, als die L2P-Tabelle im NMVA 10 übergeben wurde, zu erfassen.
  • Der Controller 8 kann die Länge der Log-Liste beschränken, um innerhalb einer maximalen oder Schwellenlänge zu bleiben. Die maximale Länge kann eine Länge widerspiegeln, für die der Controller 8 innerhalb der Backup-Zeit (oder „Strom-Kapazität“), die durch die Stromversorgung 11 bei Stromausfall bereitgestellt wird, Replay oder „Journal“ durchführen kann. Zum Beispiel kann der Controller 8 die maximale Log-Listen-Länge so begrenzen, dass die durch die Stromversorgung 11 bereitgestellte Strom-Kapazität (in Zeiteinheiten) für den Controller 8 lang genug ist, um die Log-Liste in das nichtflüchtige Speicherarray 10 zu schreiben. Bei einem nachfolgenden Herauffahren kann der Controller 8 die letzte im NVMA 10 übergebene L2P-Tabelle unter Verwendung der Log-Liste aktualisieren. Der Prozess des Iterierens durch die Log-Liste, um die L2P-Tabelle zu aktualisieren, kann als „Replay“, „Durchlaufen“, „Durchschreiten“, oder „Journaling“ der Log-Liste bezeichnet werden. Der Controller 8 führt das Replay der Log-Liste in derselben Reihenfolge durch, in der die Log-Liste aufgezeichnet wurde (auf serielle Weise).
  • Mit zunehmender benutzerzugänglicher Kapazität des nichtflüchtigen Speichers 10 nimmt auch die Größe der durch den Controller 8 unterhaltenen L2P-Tabelle zu. Die Länge der durch den Controller 8 unterhaltenen Log-Liste kann ihrerseits potenziell auch zunehmen. Jede Zunahme der Log-Listen-Länge wirkt sich auf die Zeit aus, die der Controller 8 zum Replay der Log-Liste beim Herauffahren braucht. Vergrößern der durch das nichtflüchtige Speicherarray 10 bereitgestellten Speicherungskapazität kann sich somit negativ auf die Herauffahr-Bereitschaftszeit der Speicherungsvorrichtung 6 auswirken (z.B. diese vergrößern).
  • Um durch Log-Listen-Replay verursachte Herauffahrverzögerungen zu verringern, kann der Controller 8 dafür ausgelegt sein, gemäß verschiedenen Aspekten der vorliegenden Offenbarung zu arbeiten. Zum Beispiel kann der Controller 8 ein logisches Zonenschema anwenden, um verschiedene logische Zonen in der L2P-Tabelle zu identifizieren. Der Controller 8 kann für jede logische Zone einzeln eine jeweilige Log-Liste unterhalten („Journal“) und kann seinerseits beim Herauffahren parallel ein Replay von mehreren einzelnen Log-Listen durchführen. Da jede Log-Liste einer einzelnen logischen Zone der L2P-Tabelle entspricht, kann der Controller 8 die Techniken der vorliegenden Offenbarung zum Replay von mehreren Änderungen von LBN zu PBN parallel implementieren. Durch Parallelisierung des Log-Listen-Replay-Prozesses kann der Controller 8 die Replay-Zeit während eines Herauffahrens, das einen beabsichtigten oder unbeabsichtigten Stromausfall folgt, verringern.
  • Gemäß verschiedenen Aspekten der vorliegenden Offenbarung kann der Controller 8 mehrere Zonen in einer L2P-Tabelle identifizieren, ohne die L2P-Tabelle in getrennte selbständige Subtabellen zu partitionieren. Die L2P-Tabellenzonentechniken der vorliegenden Offenbarung ermöglichen es dem Controller 8 somit, eine L2P-Tabelle zu zonen, während die Einzeltabellenidentität der L2P-Tabelle aufrechterhalten wird. Außerdem kann der Controller 8 jede Zone der L2P-Tabelle mit ihrer eigenen getrennten Log-Liste assoziieren. Der Controller 8 kann Einträge auf der Basis der LBN-Komponenten der Einträge zu einer einzelnen Zone gruppieren. Anders ausgedrückt, kann der Controller 8 die Zonen der L2P-Tabelle unter Verwendung der logischen Adressen der verschiedenen einzelnen Tabelleneinträge bilden. Dementsprechend werden die durch den Controller 8 in einer L2P-Tabelle identifizierten Zonen hier auch als „logische Zonen“ bezeichnet und die verschiedenen Zonenidentifikationstechniken werden hier als „logisches Zonen“ bezeichnet.
  • Da jede identifizierte logische Zone mit ihrer eigenen einzelnen Log-Liste assoziiert ist, kann der Controller 8 mehrere kleinere Log-Listen für L2P-Tabellenaktualisierung beim Herauffahren der Speicherungsvorrichtung 6 zur Verfügung haben. Zu einem Zeitpunkt des Durchführens des Log-Listen-Replay kann der Controller 8 deshalb über Parallelverarbeitungsfähigkeiten verfügen, um Replay von mehreren Log-Listen für dieselbe L2P-Tabelle gleichzeitig durchzuführen. Mit der zunehmenden Anwesenheit von Mehrkernprozessoren kann der Controller 8 Bildung von logischen Zonen und mehreren Log-Listen der vorliegenden Offenbarung wirksam einsetzen, um die Anzahl der gleichzeitig für eine einzelne L2P-Tabelle verarbeiteten Log-Listen zu vergrößern. Beispielsweise kann der Controller 8 CPUs mit 8 Kernen oder CPUs mit 16 Kernen zum gleichzeitigen Replay mehrerer Log-Listen benutzen, mit dem gemeinsamen Endziel des Rekonstruierens einer einzigen L2P-Tabelle. Die Gleichzeitigkeit und Parallelisierung des Log-Listen-Replay-Prozesses für eine einzelne L2P-Tabelle kann die Herauffahr-Bereitschaftszeit für die Speicherungsvorrichtung 6 nach einem Stromausfall beliebiger Art beschleunigen. Somit kann der Controller 8 die Techniken der vorliegenden Offenbarung implementieren, um die zunehmend leistungsstarke Computerarchitektur, die im Handel erhältlich ist, wirksam einzusetzen, um die Herauffahr-Bereitschaft der Speicherungsvorrichtung 6 zu verbessern.
  • 3 ist eine konzeptuelle und schematische Blockdarstellung von beispielhaften Einzelheiten des Controllers 8. In einigen Beispielen kann der Controller 8 ein Adressenübersetzungsmodul 22, ein Schreibmodul 24, ein logisches Zonenmodul 26, ein Lesemodul 28, ein Unterhaltungsmodul 30, ein Journaling-Modul 31 und mehrere Kanalcontroller 32A32N (kollektiv „Kanalcontroller 32“) umfassen. In anderen Beispielen kann der Controller 8 zusätzliche Module oder Hardwareeinheiten umfassen oder kann weniger Module oder Hardwareeinheiten umfassen. Der Controller 8 kann einen Mikroprozessor, einen DSP (digitalen Signalprozessor), eine ASIC (anwendungsspezifische integrierte Schaltung), ein FPGA (Field Programmable Gate Array) oder andere digitale Logikschaltkreise umfassen. In einigen Beispielen kann der Controller 8 ein SoC (System auf einem Chip) sein.
  • Der Controller 8 kann über die Schnittstelle 14 eine Schnittstelle mit der Hostvorrichtung 4 aufweisen und die Speicherung von Daten in Speichervorrichtungen 16 und das Abrufen von Daten aus diesen verwalten. Zum Beispiel kann das Schreibmodul 24 des Controllers 8 Schreibvorgänge in die Speichervorrichtungen 16 verwalten. Zum Beispiel kann das Schreibmodul 24 über die Schnittstelle 14 eine Nachricht von der Hostvorrichtung 4 empfangen, die die Speicherungsvorrichtung 6 anweist, Daten zu speichern, die mit einer logischen Datenadressen und den Daten assoziiert sind. Das Schreibmodul 24 kann das Schreiben der Daten in die Speichervorrichtungen 16 verwalten.
  • Zum Beispiel kann das Schreibmodul 24 mit dem Adressenübersetzungsmodul 22 kommunizieren, das Übersetzung zwischen logischen Datenadressen, die durch die Hostvorrichtung 4 verwendet werden, um Speicherungsorte von Daten zu verwalten, und physischen Datenadressen, die durch das Schreibmodul 24 verwendet werden, um das Schreiben von Daten in Speichervorrichtungen 16 anzuleiten, verwaltet. Das Adressenübersetzungsmodul 22 des Controllers 8 kann eine L2P-Tabelle und eine oder mehrere Log-Listen benutzen, wodurch logische Datenadressen (oder logische Blockadressen) von durch die Speichervorrichtungen 16 gespeicherten Daten mit physischen Datenadressen (oder physischen Blockadressen) von durch die Speichervorrichtungen 16 gespeicherten Daten assoziiert werden. Zum Beispiel kann die Hostvorrichtung 4 die logischen Datenadressen der durch die Speichervorrichtungen 16 gespeicherten Daten in Anweisungen oder Nachrichten für die Speicherungsvorrichtung 6 benutzen, während das Schreibmodul 24 physische Datenadressen der Daten benutzt, um das Schreiben von Daten in Speichervorrichtungen 16 zu steuern. (Ähnlich kann das Lesemodul 28 physische Datenadressen benutzen, um das Lesen von Daten aus den Speichervorrichtungen 16 zu steuern.) Die physischen Datenadressen entsprechen tatsächlichen physischen Orten von Speichervorrichtungen 16. In einigen Beispielen kann das Adressenübersetzungsmodul 22 die L2P-Tabelle und eine oder mehrere Log-Listen in flüchtigem Speicher 12 speichern. In einigen Beispielen kann das Adressenübersetzungsmodul 22 periodisch eine aktuelle Kopie der L2P-Tabelle in NVMA 10 (1) speichern oder übergeben.
  • Auf diese Weise kann es der Hostvorrichtung 4 erlaubt werden, eine statische logische Datenadresse für eine bestimmte Menge von Daten zu verwenden, während die physische Datenadresse, an der die Daten tatsächlich gespeichert sind, sich ändern kann. Das Adressenübersetzungsmodul 22 kann die L2P-Tabelle und eine oder mehrere Log-Listen unterhalten, um die logischen Datenadressen auf physische Datenadressen abzubilden, um Verwendung der statischen logischen Datenadresse durch die Hostvorrichtung 4 zu erlauben, während sich die physische Datenadresse der Daten z.B. aufgrund von Abnutzungsnivellierung, Müllabfuhr oder dergleichen ändern kann. In einigen Beispielen kann die L2P-Übersetzungstabelle eine Einzelschichttabelle sein, so dass durch Anwendung eines Hash auf eine von der Hostvorrichtung 4 empfangene logische Datenadresse das Adressenübersetzungsmodul 22 direkt eine entsprechende physische Datenadresse abrufen kann.
  • Wie oben besprochen, kann das Schreibmodul 24 des Controllers 8 eine oder mehrere Operationen zum Verwalten des Schreibens von Daten in Speichervorrichtungen 16 ausführen. Zum Beispiel kann das Schreibmodul 24 das Schreiben von Daten in Speichervorrichtungen 16 verwalten, indem ein oder mehrere Blöcke in den Speichervorrichtungen 16 zum Speichern der Daten ausgewählt werden und bewirkt wird, dass Speichervorrichtungen der Speichervorrichtungen 16, die die ausgewählten Blöcke enthalten, die Daten tatsächlich speichern. Wie oben besprochen, kann das Schreibmodul 24 bewirken, dass das Adressenübersetzungsmodul 22 die L2P-Tabelle oder eine Log-Liste mit der logischen Blockadresse auf der Basis der ausgewählten Blöcke aktualisiert. Zum Beispiel kann das Schreibmodul 24 eine Nachricht von der Hostvorrichtung 4 empfangen, die eine Einheit von Daten und eine logische Datenadresse umfasst, einen Block und eine Seite in einer bestimmten Speichervorrichtung der Speichervorrichtungen 16 zum Speichern der Daten auswählen, bewirken, dass die bestimmte Speichervorrichtung der Speichervorrichtungen 16 die Daten tatsächlich speichert (z.B. über einen Kanalcontroller der Kanalcontroller 32, der der bestimmten Speichervorrichtung entspricht) und bewirken, dass das Adressenübersetzungsmodul 22 die L2P-Tabelle oder Log-Liste, die die logische Blockadresse enthält, aktualisiert, um anzugeben, dass die logische Datenadresse der ausgewählten physischen Datenadresse in der bestimmten Speichervorrichtung der Speichervorrichtungen 16 entspricht.
  • In einigen Beispielen kann zusätzlich zu dem Bewirken, dass die Daten durch Speichervorrichtungen 16 gespeichert werden, das Schreibmodul 24 bewirken, dass die Speichervorrichtungen 16 Informationen speichern, die zum Wiederherstellen der Einheit von Daten verwendet werden können, falls einer oder mehrere der Blöcke ausfallen oder verfälscht werden. Die Paritätsinformationen können verwendet werden, um die durch andere Blöcke gespeicherten Daten wiederherzustellen. In einigen Beispielen können die Paritätsinformationen ein XOR der durch die anderen Blöcke gespeicherten Daten sein.
  • Um ein Bit mit einem logischen Wert von 0 (geladen) in ein Bit mit einem vorherigen logischen Wert von 1 (ungeladen) zu schreiben, wird ein großer Strom verwendet. Dieser Strom kann groß genug sein, um unbeabsichtigte Änderungen an der Ladung angrenzender Flash-Speicherzellen zu verursachen. Um vor unbeabsichtigten Änderungen zu schützen, kann ein gesamter Block von Flash-Speicherzellen vor dem Schreiben irgendwelcher Daten in Zellen im Block auf einen logischen Wert von 1 (ungeladen) gelöscht werden. Aus diesem Grund können Flash-Speicherzellen auf Blockebene gelöscht und auf Seitenebene geschrieben werden.
  • Um selbst eine Menge an Daten zu schreiben, die weniger als eine Seite verbrauchen würde, kann der Controller 8 somit das Löschen eines gesamten Blocks verursachen. Dies kann zu Schreibverstärkung führen, was sich auf das Verhältnis zwischen der Menge an von der Hostvorrichtung 4 empfangenen Daten, die in die Speichervorrichtungen 16 zu schreiben sind, und der Menge an tatsächlich in die Speichervorrichtungen 16 geschriebenen Daten bezieht. Schreibverstärkung trägt zu einer schnelleren Abnutzung der Flash-Speicherzellen, als ohne Schreibverstärkung auftreten würde, bei. Abnutzung an Flash-Speicherzellen kann auftreten, wenn Flash-Speicherzellen aufgrund der zum Löschen der Flash-Speicherzellen verwendeten relativ hohen Spannungen gelöscht werden. Über mehrere Löschzyklen hinweg können die relativ hohen Spannungen zu Änderungen der Flash-Speicherzellen führen. Letztendlich können sich die Flash-Speicherzellen abnutzen, so dass keine Daten mehr in die Zellen geschrieben werden können. Schreibverstärkung kann durch Verwendung größerer Blöcke und/oder Seiten verschlimmert werden.
  • Eine Technik, die der Controller 8 implementieren kann, um Schreibverstärkung und Abnutzung von Flash-Speicherzellen zu verringern, umfasst Schreiben von Daten, die von der Hostvorrichtung 4 empfangen werden, in unbenutzte Blöcke oder teilweise benutzte Blöcke. Wenn zum Beispiel die Hostvorrichtung 4 Daten zu der Speicherungsvorrichtung 6 sendet, die nur eine kleine Änderung in Bezug auf bereits durch die Speicherungsvorrichtung 6 gespeicherte Daten umfassen. Der Controller kann dann die alten Daten als abgestanden oder nicht mehr gültig markieren. Mit der Zeit kann dies eine Anzahl von Löschoperationen verringern, denen Blöcke ausgesetzt sind, verglichen mit dem Löschen des Blocks, der die alten Daten hält und Schreiben der aktualisierten Daten in denselben Block.
  • Als Reaktion auf Empfang eines Schreibbefehls von der Hostvorrichtung 4 kann das Schreibmodul 24 Bestimmen, an welchen physischen Orten (z.B. Blöcken) der Speichervorrichtungen 16 die Daten zu schreiben sind. Zum Beispiel kann das Schreibmodul 24 von dem Adressenübersetzungsmodul 22 eine oder mehrere physische Blockadressen anfordern, die leer sind (z.B. keine Daten speichern), teilweise leer sind (z.B. speichern nur einige Seiten des Blocks Daten) oder mindestens einige ungültige (oder abgestandene) Daten speichern. Nach dem Empfang der einen oder mehreren physischen Blockadressen kann das Schreibmodul 24 einen oder mehrere Blöcke wie oben besprochen auswählen und eine Nachricht übermitteln, die bewirkt, dass die Kanalcontroller 32A32N (kollektiv „Kanalcontroller 32“) die Daten in die ausgewählten Blöcke schreiben.
  • Das Lesemodul 28 kann ähnlich das Lesen von Daten aus Speichervorrichtungen 16 steuern. Zum Beispiel kann das Lesemodul 28 eine Nachricht von der Hostvorrichtung 4 empfangen, die Daten mit einer assoziierten logischen Datenadresse anfordert. Das Adressenübersetzungsmodul 22 kann die logische Datenadresse unter Verwendung der L2P-Tabelle oder der Log-Liste, die die logische Datenadresse enthält, in eine physische Datenadresse umsetzen. Das Lesemodul 28 kann dann einen oder mehrere der Kanalcontroller 32 steuern, um die Daten aus den physischen Datenadressen abzurufen. Ähnlich wie das Schreibmodul 24 kann das Lesemodul 28 einen oder mehrere Blöcke auswählen und eine Nachricht übermitteln, die bewirkt, dass die Kanalcontroller 32 die Daten aus den ausgewählten Blöcken lesen.
  • Jeder Kanalcontroller der Kanalcontroller 32 kann mit einem jeweiligen Kanal der Kanäle 18 verbunden sein. In einigen Beispielen kann der Controller 8 dieselbe Anzahl von Kanalcontrollern 32 wie die Anzahl von Kanälen 18 der Speicherungsvorrichtung 2 umfassen. Die Kanalcontroller 32 können die innige Steuerung des Adressierens, Programmierens, Löschens und Lesens von Speichervorrichtungen 16, die mit jeweiligen Kanälen verbunden sind, durchführen, z.B. unter der Kontrolle eines oder mehrerer des Schreibmoduls 24, des Lesemoduls 28, des Wartungsmoduls 30 oder des Journaling-Moduls 31.
  • Das Wartungsmodul 30 kann dafür ausgelegt sein, Operationen in Bezug auf Warten der Leistungsfähigkeit und Verlängern der nutzbaren Lebensdauer der Speicherungsvorrichtung 6 (z.B. der Speichervorrichtungen 16) auszuführen. Zum Beispiel kann das Wartungsmodul 30 Abnutzungsnivellierung und/oder Müllabfuhr implementieren.
  • Wie oben beschrieben, kann das Löschen von Flash-Speicherzellen relativ hohe Spannungen verwenden, die über mehrere Löschoperationen hinweg Änderungen an den Flash-Speicherzellen verursachen können. Nach einer bestimmten Anzahl von Löschoperationen verschlechtern sich Flash-Speicherzellen soweit, dass keine Daten mehr in die Flash-Speicherzellen geschrieben werden können, und ein Block, der diese Zellen enthält, kann zurückgezogen (nicht mehr durch den Controller 8 zum Speichern von Daten verwendet) werden. Zur Vergrößerung der Menge an Daten, die in die Speichervorrichtungen 16 geschrieben werden können, bevor Blöcke abgenutzt sind und zurückgezogen werden, kann das Wartungsmodul 30 Abnutzungsnivellierung implementieren.
  • Bei der Abnutzungsnivellierung kann das Wartungsmodul 30 eine Anzahl von Löschvorgängen oder Schreibvorgängen in einen Block oder eine Gruppe von Blöcken für jeden Block oder jede Gruppe von Blöcken verfolgen. Das Wartungsmodul 30 kann bewirken, dass ankommende Daten von der Hostvorrichtung 4 in einen Block oder eine Gruppe von Blöcken geschrieben werden, der bzw. die relativ weniger Schreibvorgängen oder Löschvorgängen unterzogen wurde, um zu versuchen, die Anzahl von Schreibvorgängen oder Löschvorgängen für jeden Block oder jede Gruppe von Blöcken ungefähr gleich zu halten. Dies kann bewirken, dass ich jeder Block von Speichervorrichtungen 16 mit ungefähr derselben Rate abnutzt und kann die nutzbare Lebenszeit der Speicherungsvorrichtung 6 vergrößern.
  • Obwohl dies Schreibverstärkung und Abnutzung von Flash-Speicherzellen durch Verringerung einer Anzahl von Löschvorgängen und Schreiben von Daten in verschiedene Blöcke verringern kann, kann dies auch dazu führen, dass Blöcke einige gültige (frische) Daten und einige ungültige (abgestandene) Daten umfassen. Um dies zu bekämpfen, kann das Wartungsmodul 30 Müllabfuhr implementieren. Bei einer Müllabfuhroperation kann das Wartungsmodul 30 die Inhalte der Blöcke von Speichervorrichtungen 16 analysieren, um einen Block zu bestimmen, der einen hohen Prozentsatz ungültiger (abgestandener) Daten enthält. Das Wartungsmodul 30 kann dann die gültigen Daten aus dem Block in einen anderen Block umschreiben und dann den Block löschen. Dies kann eine Menge an ungültigen (abgestandenen) Daten, die durch Speichervorrichtungen 16 gespeichert wird, verringern und eine Anzahl freier Blöcke vergrößern, kann aber auch Schreibverstärkung und Abnutzung der Speichervorrichtungen 16 vergrößern.
  • Um genaue Informationen aufrecht zu erhalten, kann das Journaling-Modul 31 aufgerufen werden, um ein Replay der Log-Liste für die L2P-Tabelle durchzuführen. Genauer gesagt wird ein Log-Listen-Replay benötigt, um eine aktuelle Version der L2P-Tabelle zu konstruieren. Das Journaling-Modul 31 kann ein Replay der Log-Liste durchführen, um die aktuelle Version der L2P-Tabelle auf der Basis der letzten übergebenen Version der L2P-Tabelle und der auf dem neuesten Stand befindlichen Version der entsprechenden Log-Liste zu konstruieren.
  • Gemäß einer oder mehreren Techniken der vorliegenden Offenbarung kann das logische Zonenmodul 26 des Controllers 8 mehrere logische Zonen in einer L2P-Tabelle identifizieren. Das Journaling-Modul 31 des Controllers 8 kann unter Verwendung einer separaten Log-Liste ein Journaling jeder logischen Zone durchführen. Der Controller 8 (und/oder verschiedene Komponenten davon) kann seinerseits beim Herauffahren parallel ein Replay von zwei oder mehr der Log-Listen durchführen, um dadurch Parallelverarbeitungstechnologie zu benutzen, um die L2P-Tabellenrekonstruktionszeit zu verbessern. Auf diese Weise können das logische Zonenmodul 26 und das Journaling-Modul 31 des Controllers 8 Aspekte der vorliegenden Offenbarung implementieren, um potenziell lange L2P-Tabellen in besser handhabbaren Teilen zu verarbeiten und dadurch die Log-Listen-Replay-Operationen beim Herauffahren der Speicherungsvorrichtung 6 zu parallelisieren.
  • Obwohl das Journaling-Modul 31 wirksam Mehrkernverarbeitung oder andere Parallelverarbeitungsfähigkeiten für Log-Listen-Replay gemäß der vorliegenden Offenbarung einsetzen kann, kann das Journaling-Modul 31 beliebige verfügbare Verarbeitungsressourcen zur Bildung der Log-Liste verwenden. Zum Beispiel kann das Journaling-Modul 31 immer noch Einzelkernverarbeitung zur Log-Listen-Bildung verwenden, während zum Log-Listen-Replay auf Mehrkernverarbeitung zurückgegriffen wird, um einen oder mehrere Vorteile der hier beschriebenen Techniken bereitzustellen. Obwohl es hier zur leichteren Besprechung mit Bezug auf Prozessoren beschrieben wird, versteht sich, dass das Journaling-Modul 31 auch auf Verarbeitungsfähigkeiten (z.B. Parallelverarbeitung) anderer Vorrichtungen und Komponenten zurückgreifen kann, wie etwa die Funktionalitäten, die durch eine Hardwareunterstützungs-Engine bereitgestellt werden, um die parallelisierten Log-Listen-Replay-Techniken der vorliegenden Offenbarung auszuführen.
  • Typischerweise wird eine L2P-Tabelle (die nicht gemäß den Techniken der vorliegenden Offenbarung in Zonen eingeteilt wird) als lineares Array von Einträgen ausgedrückt. Die Einträge einer solchen L2P werden auf der Basis einer aufsteigenden Reihenfolge der LBN-Komponente der Einträge geordnet. Wie oben besprochen, umfasst jeder Eintrag der L2P-Tabelle auch eine PBN, die auf die LBN desselben Eintrags abgebildet wird. 4 ist eine konzeptuelle Darstellung einer beispielhaften L2P-Tabelle 40. Wie in 4 dargestellt, ist die L2P-Tabelle 40 ein lineares Array von Einträgen 42a42n (kollektiv „Einträge 42“). Der erste Eintrag der L2P-Tabelle 40 ist Eintrag 42a, repräsentiert durch die oberste Position der L2P-Tabelle 40. Eintrag 42a gibt die PBN-Abbildung für die erste LBN an, nämlich die als „LBN_0“ indizierte LBN. Der zweite Eintrag der L2P-Tabelle 40 ist Eintrag 42b, repräsentiert durch die zweitoberste Position der L2P-Tabelle 40, und gibt die PBN-Abbildung für die zweite LBN an, nämlich die als „LBN_1“ indizierte LBN. Auf diese Weise umfasst die L2P-Tabelle 40 für eine Abbildung von PBN auf LBN einen einzigen Eintrag, sequenziell angeordnet von der ersten LBN (LBN_0) bis zur maximalen LBN („LBN_max“) am Eintrag 42n.
  • Aufgrund der Beschaffenheit des Schreibens von Daten in ein SSD, von routinemäßigen Wartungsoperationen wie Müllabfuhr und aus anderen Gründen kann sich die PBN, die einer bestimmten LBN entspricht, während der Laufzeit ändern. 5 ist eine konzeptuelle Darstellung einer Zeitlinie 46, gemäß der verschiedene Aspekte der vorliegenden Offenbarung beschrieben werden. Die dynamische Beschaffenheit der Abbildung von LBN auf PBN wird hier mit Bezug auf die Zeitlinie 46 besprochen. Es versteht sich, dass 5, obwohl sie nicht unbedingt maßstabsgetreu gezeichnet ist, das Vergehen der Zeit in festen Inkrementen repräsentiert, wie etwa Millisekunden (ms), Mikrosekunden (µs), Nanosekunden (ns) oder einer beliebigen anderen Zeiteinheit. Die Zeit zwischen Tx-1 und Tx kann dieselbe wie die Zeit zwischen Tx und Tx+1 sein oder auch nicht.
  • An einem Zeitpunkt, der auf der Zeitlinie 46 mit dem Zeitstempel „Tx-1“ repräsentiert ist, kann LBN_0 als nicht einschränkendes Beispiel mit PBN_0 assoziiert sein. Das 3-Tupel, das eine statische LBN_0, ihre entsprechende PBN_0 und den Zeitstempel (Tx-1) der Zeit der Korrespondenz repräsentiert, wird hier als „Pbn_ForLbn0_AtTx-1“ ausgedrückt. Wie in 4 dargestellt, umfasst jeder der Einträge 42 in der L2P-Tabelle 40 jedoch nur ein 2-Tupel, das eine aktuelle PBN auf die statische LBN abbildet. Dementsprechend kann die L2P-Tabelle 40 potenziell gültige Einträge nur für einen einzigen Zeitstempel (z.B. Tx-1) auf der Zeitlinie 46 umfassen, abhängig davon, ob irgendwelche der Einträge 42 als Reaktion auf Müllabfuhr oder andere Operationen, die eine Abbildung von LBN auf PBN ändern könnten, Aktualisierung erfordern.
  • Zwischen der Zeit Tx-1 und einem nachfolgenden Zeitpunkt (auf der Zeitlinie 46 durch den Zeitstempel „Tx“ repräsentiert) kann der Host 4 einen mit LBN_0 assoziierten Schreibbefehl senden, oder das Wartungsmodul 30 kann (intern in der Speicherungsvorrichtung 6) Müllabfuhr durch Verlagern von mit LBN_0 assoziierten Daten durchführen. Als Ergebnis kann LBN_0 zu den Zeiten Tx-1 und Tx auf verschiedene PBN-Werte abgebildet sein. Unter Verwendung der oben eingeführten 3-Tupel-Notation ausgedrückt sind die PBN-Werte für Pbn_ForLbn0_AtTx-1 und Pbn_ForLbn0_AtTx verschieden. Somit kann das Journaling-Modul 31 die L2P-Tabelle 40 aktualisieren, indem der PBN-Wert für LBN_0 in einen neuen Wert umgeändert wird. Obwohl die Aktualisierung nicht notwendigerweise zum Zeitpunkt Tx bewirkt wird, kann das Journaling-Modul 31 die Änderung in einer Log-Liste protokollieren und die Änderung zum Zeitpunkt des Log-Listen-Replay (z.B. beim Herauffahren der Speicherungsvorrichtung 6) bewirken.
  • Wie oben beschrieben, unterhält das Journaling-Modul 31 eine Log-Liste in (oder im Verlauf) der Laufzeit. Die Log-Liste spiegelt Änderungen der Abbildungen von LBN auf PBN in chronologischer Reihenfolge wider. Jeder Eintrag der Log-Liste kann der oben besprochenen 2-Tupel-Notation folgen, um dadurch eine statische LBN auf eine dynamische PBN abzubilden, und die Neuigkeit jeder Aktualisierung anzugeben, auf der Basis der Position jedes Eintrags in einer sequenziellen Reihenfolge von oben nach unten. 6 zeigt eine beispielhafte Log-Liste 50, die das Journaling-Modul 31 unterhalten kann, um mit Bezug auf die L2P-Tabelle 40 zu implementierende Änderungen zu protokollieren. An einem ersten Eintrag 52a der Log-Liste 50 hat das Journaling-Modul 31 ein Tupel von LBN_0, Pbn_ForLbn0_AtTx angehängt. An einem zweiten Eintrag 52b der Log-Liste 50 hat das Journaling-Modul 31 das Tupel von LBN_87, Pbn_ForLbn87_AtTx+1 angehängt. An einem dritten Eintrag 52c der Log-Liste 50 hat das Journaling-Modul 31 das Tupel von LBN_1001, Pbn_ForLbn1001_AtTx+2 angehängt. An einem vierten Eintrag 52d der Log-Liste 50 hat das Journaling-Modul 31 das Tupel von LBN_0, Pbn_ForLbn0_AtTx+3 angehängt. Das Journaling-Modul 31 kann Einträge 52 auf eine Weise anhängen, die dem Journaling-Modul 31 später Replay der Einträge 52 im Warteschlagenverfahren, im Stapelverfahren oder ad-hoc-Verfahren beim Replay ermöglicht. In einem Warteschlangenszenario kann das Journaling-Modul 31 ein Replay der Einträge 52 in einer FIFO-Reihenfolge (First-In-First-Out) durchführen, wie etwa durch Beginnen am Eintrag 52a und sequenzielles Herunterarbeiten durch die Log-Liste 50. In einem Stapelszenario kann das Journaling-Modul 31 Replay der Einträge 52 in einer LIFO-Reihenfolge (Last-In-First-Out) durchführen, wie etwa durch Beginnen am Eintrag 52n und sequenzielles Heraufarbeiten durch die Log-Liste 50. In einem ad-hoc-Szenario kann das Journaling-Modul 31 Replay der Einträge 52 in zufälliger Reihenfolge durchführen, um die L2P-Tabelle 40 zu aktualisieren.
  • Wie gezeigt werden Einträge 52 der Log-Liste 50 in chronologischer Reihenfolge angehängt. Es versteht sich, dass aufeinanderfolgende Zeitstempel Tx, Tx+1, Tx+2 und Tx+3 nicht unbedingt durch feste Zeitinkremente von ihren Nachbarn getrennt sind. Stattdessen handelt es sich bei der Reihe von in der Log-Liste 50 widergespiegelten Zeitstempeln um chronologisch fortschreitende Momente, an denen das Journaling-Modul 31 eine mit Bezug auf die L2P-Tabelle 40 zu implementierende Änderung identifiziert. Beispielsweise kann Tx+1 um 2 Nanosekunden Tx folgen, während Tx+2 um 5 Nanosekunden Tx+1 folgen kann. Die Reihenfolge der Log-Liste 50 ist somit insofern chronologisch, als das Journaling-Modul 31 einen neuen Eintrag auf der Basis der Zeit anhängt, zu der das Journaling-Modul 31 eine Änderung an einer existierenden Abbildung von LBN auf PBN detektiert. Jeder der Zeitstempel Tx bis Tx+3 kann einen Moment einer LBN-PBN-Abbildungsänderung repräsentieren, aufgrund des neuen Host-Schreibvorgangs oder aufgrund interner Müllabfuhr-Datenbewegung. Es versteht sich, dass das Zeitintervall zwischen den Zeitstempeln zweier beliebiger angrenzender Einträge 52 nicht unbedingt fest ist.
  • 6 zeigt ein Szenario, bei dem die Log-Liste 50 mehrere Einträge mit Bezug auf eine einzige LBN umfasst. Genauer gesagt umfasst die Log-Liste 50 zwei Instanzen von LBN-PBN-Abbildungsänderungen für LBN_0. Im Kontext der Log-Listen-Bildung ist das Auftreten mehrerer Einträge für eine einzige LBN möglich. In dem spezifischen Beispiel für die Log-Liste 50 repräsentieren die Einträge 52a und 52d beide LBN-PBN-Abbildungsänderungen für LBN_0. Der Eintrag 52a repräsentiert eine PBN-Abbildungsänderung, die an Zeitstempel Tx für LBN_0 detektiert und/oder protokolliert wurde. Eintrag 52d repräsentiert eine PBN-Abbildungsänderung, die am Zeitstempel Tx+3 detektiert und/oder protokolliert wurde. Die Protokollierungszeitdifferenz wird durch die Position jedes der Einträge 52 in der Reihenfolge von oben nach unten dargestellt, wie in 6 gezeigt. Die in 6 dargestellten Zeitstempel sind nicht unbedingt in Einträgen 52 gespeichert, sondern sind stattdessen lediglich zur Veranschaulichung in 6 enthalten. Die PBN, die in Eintrag 52d auf LBN_0 abgebildet wird, repräsentiert somit eine Aktualisierung der Abbildungsänderung in Eintrag 52a. Dementsprechend macht Eintrag 52d den Eintrag 52a veraltet oder hinfällig. Wenn keiner der dem Eintrag 52d in der Tabelle 50 nachfolgenden Einträge (d.h. von dem unmittelbar dem Eintrag 52d nachfolgenden Eintrag bis hin zum Eintrag 52n) mit LBN_0 in Beziehung steht, repräsentiert Eintrag 52d die aktuelle PBN-Abbildung für LBN_0. In diesem Fall kann beim Herauffahren der Speicherungsvorrichtung 6 der Controller 8 (oder können Komponenten davon, wie etwa das Adressenübersetzungsmodul 22) die L2P-Tabelle 40 aktualisieren, um die durch Eintrag 52d der Log-Liste 50 repräsentierte Abbildung von LBN auf PBN widerzuspiegeln.
  • Im Folgenden wird ein beispielhaftes Benutzungsfallszenario mit Bezug auf die Log-Liste 50 beschrieben. Bei der Herstellung und Fabrikproduktion der Speicherungsvorrichtung 6 kann der Controller 8 neue Schreibbefehle von Host 4 empfangen. So, wie es in der Log-Liste 50 dargestellt ist, kann der Host 4 Schreibbefehle senden, die verschiedenen logischen Adressen entsprechen, die LBN_0, LBN_87 und LBN_1001 umfassen. In dem Beispiel der Log-Liste 50 sendet der Host 4 mehrere Schreibbefehle, die LBN_0 entsprechen. Nachdem das Journaling-Modul Eintrag 52d an die Log-Liste 50 anhängt, kann die Speicherungsvorrichtung 6 entweder mittels eines beabsichtigten Herunterfahrens oder durch einen unerwarteten Stromversorgungsverlust Stromversorgung verlieren. Die durch die Stromversorgung 11 bereitgestellte Stromversorgungs-Kapazität (ausgedrückt in Zeiteinheiten) stellt einen Stromversorgungsburst relativ kurzer Dauer bereit. Die Dauer der durch die Stromversorgung 11 gewährleisteten Stromversorgungs-Kapazität ist lang genug, damit das Journaling-Modul 31 die Log-Liste 50 in dem nichtflüchtigen Speicherarray 10 (z.B. entweder in NAND oder EEPROM) abspeichern kann. Bei einer nachfolgenden Wiederherstellung der Stromversorgung (z.B. „Einschalten“ oder „Herauffahren“) der Speicherungsvorrichtung 6 iteriert (oder „läuft“ oder „schreitet“) das Adressenübersetzungsmodul 22 durch die Log-Liste 50, um die L2P-Tabelle 40 zu aktualisieren.
  • Der oben beschriebene Prozess des Iterierens durch die Log-Liste 50 zur Aktualisierung der L2P-Tabelle 40 wird hier als ein Prozess des „Log-Listen-Replay“ bezeichnet. Es versteht sich, dass das oben beschriebene Benutzungsfallszenario zur leichteren Veranschaulichung ein relativ simples Beispiel repräsentiert. In der Praxis können Log-Listen relativ lang sein. Im Fall von relativ langen Log-Listen kann ein Log-Listen-Replay beim Einschalten signifikant Zeit verbrauchen. Genauer gesagt kann ein chronologisches sorgfältiges eintragsweises Replay der gesamten Log-Liste die Herauffahrzeit in der Größenordnung von 100stel Sekunden behindern und kann auch einen Engpass bei der Verteilung von Taktzyklen und Verarbeitungsressourcen beim Herauffahren erzeugen.
  • Ein möglicher Ansatz zur Minderung dieser aus dem Log-Listen-Replay entstehenden Probleme besteht darin, das gesamte SSD in Teil-SSD aufzuteilen (oder zu „partitionieren“). Zum Beispiel könnte Partitionierung eines 4-TB-SSD vier virtuelle 1-TB-SSD ergeben. Jedes Teil-SSD versorgt ein Viertel des LBN-Bereichs, den das SSD versorgen kann. Wenn zum Beispiel die Gesamtbenutzerkapazität des SSD durch den Obergrenzen-LBN-Index „U“ repräsentiert wird, kann das erste Teil-SSD LBN versorgen, die im Bereich von Indexwerten von 0 bis ((U – 1)/4) liegen, das zweite Teil-SSD kann LBN versorgen, die im Bereich von (U/4) bis ((U – 1)/2) liegen, das dritte Teil-SSD kann LBN versorgen, die im Bereich von (U/2) bis (3·(U – 1)/4) liegen und das vierte Teil-SSD kann LBN versorgen, die im Bereich von (3·U/4) bis (U – 1) liegen. Gemäß solchen SSD-Partitionierungstechniken werden auch die NAND-Blöcke im SSD in vier Teil-SSD aufgeteilt. Wenn also die durch den Host gesendeten Schreibbefehle in Richtung eines bestimmten LBN-Teilbereichs tendieren oder versetzt sind, können die Partitionierungstechniken verschiedenen auf Versetzung basierenden Unzulänglichkeiten oder Unpässlichkeiten unterliegen. Als Beispiele für potenzielle Nachteile kann das SSD Müllabfuhr oder Abnutzungsnivellierung nicht auf globaler Basis über das gesamte SSD hinweg durchführen. Genauer gesagt wird jedes Nach-Partitions-Teil-SSD als eine diskrete Entität erkannt und das SSD müsste Müllabfuhr und Abnutzungsnivellierung entitätsweise im geschlossenen Universum jedes Teil-SSD durchführen. Dementsprechend kann Müllabfuhr und Abnutzungsnivellierung insofern eingeschränkt sein, als bei jeder auf SSD-Partitionierung basierenden Lösung frische Ressourcen von einem anderen Teil-SSD für Nachgiebigkeit in einem aktuellen Teil-SSD nicht verfügbar sind.
  • Um durch Log-Listen-Replay verursachte Verzögerungen zu mindern, während die mit SSD-weiter globaler Müllabfuhr und Abnutzungsnivellierung assoziierten Vorteile beibehalten werden, können der Controller 8 und verschiedene Komponenten davon eine oder mehrere Techniken der vorliegenden Offenbarung implementieren. Zum Beispiel kann das logische Zonenmodul 26 mehrere (z.B. zwei oder mehr) logische Zonen in der L2P-Tabelle 40 identifizieren. Genauer gesagt kann das logische Zonenmodul 26 den Einzeltabellenstatus der L2P-Tabelle 40 selbst nach dem Identifizieren der Zonen aufrechterhalten.
  • 7 zeigt eine logisch gezonte L2P-Tabelle 60. Es versteht sich, dass die logisch gezonte L2P-Tabelle 60 nur einen Teil einer L2P-Tabelle repräsentieren kann. Zum Beispiel kann jedes logische Zonenmodul 26 mehrere logische Zonen in einer L2P (z.B. der L2P-Tabelle 40 von 4) identifizieren, um die logisch gezonte L2P-Tabelle 60 zu bilden. Die logisch gezonte L2P-Tabelle 60 umfasst zwölf Einträge, die als Einträge 62a62l bezeichnet sind. In diesem konkreten Beispiel kann das logische Zonenmodul 26 mehrere logische Zonen identifizieren, wobei jede logische Zone vier Einträge enthält. Wie gezeigt, umfasst die logisch gezonte L2P-Tabelle 60 drei logische Zonen, die als logische Zonen 64a64c bezeichnet sind. Die Einträge 62a64d gehören zu der logischen Zone 64a und werden visuell unter Verwendung von durchgezogenen Grenzen unterschieden. Die Einträge 62e62h gehören zu der logischen Zone 64b und werden visuell unter Verwendung von gestrichelten Grenzen unterschieden. Die Einträge 62i62l gehören zu der logischen Zone 64l und werden visuell unter Verwendung von gepunkteten Grenzen unterschieden. 7 umfasst auch einen Zwischenraum alle zwei aufeinanderfolgende logische Zonen 64 zur Veranschaulichung der durch das logische Zonenmodul 26 identifizierten logischen Abgrenzung. Es versteht sich, dass, obwohl 7 Zwischenräume zur Veranschaulichung logischer Grenzen zwischen logischen Zonen 64 verwendet, die logisch gezonte L2P-Tabelle 60 gemäß den Techniken der vorliegenden Offenbarung immer noch eine zusammenhängende monolithische Tabelle repräsentiert.
  • Die logische gezonte L2P-Tabelle 60 repräsentiert eine Implementierung, bei der das logische Zonenmodul 26 Zonen auf „serielle“ Weise identifiziert. Genauer gesagt kann das logische Zonenmodul 26 durch Auswählen zusammenhängender Blöcke oder Reihen von Einträgen 62 eine einzelne Zone in der logisch gezonten L2P-Tabelle 60 identifizieren. Gemäß der seriellen Implementierung der logischen Zonentechniken der vorliegenden Offenbarung kann jede Reihe von Einträgen 62 einer zusammenhängenden Reihe von LBN entsprechen. Zum Beispiel repräsentiert die erste Zone, nämlich die logische Zone 64a, einen zusammenhängenden Block oder eine zusammenhängende Reihe von Einträgen 62a62d. Gemäß einer seriellen Implementierung des L2P-Tabellenzonens, kann das logische Zonenmodul 26 die Gesamtzahl von Einträgen in einer L2P-Tabelle durch eine gewünschte Anzahl von Zonen dividieren, um eine Anzahl von Einträgen pro Zone zu erhalten. In dem Beispiel der logisch gezonten L2P-Tabelle 60 ist das logische Zonenmodul 26 zu einer Bestimmung von vier Einträgen pro Zone gekommen.
  • In einem vereinfachten Beispiel, bei dem eine gesamte logisch gezonte L2P-Tabelle 60 insgesamt zwölf Einträge umfasst, kann das logische Zonenmodul 26 bestimmen, dass die logisch gezonte L2P-Tabelle 60 in insgesamt drei Zonen aufzuteilen ist. Durch Dividieren der Gesamtzahl von Einträgen (zwölf) durch die gewünschte Anzahl von Zonen (drei) kann das logische Zonenmodul 26 bestimmen, dass jede identifizierte Zone vier Einträge umfassen wird. Auf der Grundlage, dass das logische Zonenschema für die logische L2P-Tabelle 60 das serielle Zonenschema ist, kann das logische Zonenmodul 26 jede der logischen Zonen 64 durch Beginnen mit dem ersten Eintrag (62a) und Identifizieren von zusammenhängenden Blöcken von vier Einträgen identifizieren. Auf diese Weise kann das logische Zonenmodul 26 jede logische Zone 64 in der logisch gezonten L2P-Tabelle 60 identifizieren. Zusätzlich kann das Journaling-Modul 31 die Techniken der vorliegenden Offenbarung implementieren, um für jede der durch das logische Zonenmodul 26 identifizierten logischen Zonen 64 eine getrennte Log-Liste zu bilden und zu unterhalten. Der Controller 8 soll seinerseits zum parallelen Replay von zwei oder mehr der Log-Listen auf parallele Verarbeitungsfähigkeiten zurückgreifen. Auf diese Weise können das logische Zonenmodul 26 und das Journaling-Modul 31 dem Controller 8 ein gleichzeitiges Replay von Log-Listen für verschiedene Teile der logisch gezonten L2P 60 ermöglichen, um dadurch die Herauffahrzeit der Speicherungsvorrichtung 6 zu verbessern und Verarbeitungsaufgaben effizienter auf mehrere Kerne zu verteilen.
  • Durch Verwendung des seriellen Zonenschemas der vorliegenden Offenbarung zum Identifizieren von logischen Zonen 64 in der gezonten L2P-Tabelle 60 kann das logische Zonenmodul 26 einen oder mehrere potenzielle Vorteile bereitstellen. Zum Beispiel kann das logische Zonenmodul 26 die Komplexität der parallelen Log-Listen-Bildung verringern. In Fällen, in denen das System besser mit lokalisiertem Zugriff für Log-Listen arbeitet, bewirkt die serielle Implementierung, dass das Journaling-Modul 31 öfter auf eine Log-Liste (z. B. eine Teilliste für eine einzelne Zone) zugreift. Die serielle Implementierung des logischen Zonens kann somit in Szenarien, bei denen das System besser für lokalisierten Zugriff geeignet ist, ein günstiges Ergebnis liefern. Wenn darüber hinaus der Host 4 Schreiboperationen auf lokalisierte Weise ausführt, kann eine bestimmte Zone des nichtflüchtigen Speicherarrays 10 öfter als andere Zonen aktualisiert werden. In diesem Szenario ist die serielle Implementierung eine relativ effiziente Lösung aufgrund von verringerter Schreibverstärkung, um dadurch potenziell Hardwarestandzeitprobleme zu mindern. Zum Beispiel kann das nichtflüchtige Speicherarray 10 gemäß dem seriellen Zonenschema unter dauerhaftem Gebrauch länger halten.
  • 8 zeigt ein weiteres Beispiel für die gezonte L2P-Tabelle 60. In dem Beispiel von 8 kann das logische Zonenmodul 26 Zonen 64 gemäß einem verschachtelten Zonenschema identifizieren. Im Gegensatz zu dem mit Bezug auf 7 dargestellten seriellen Zonenschema kann das logische Zonenmodul 26 das verschachtelte Zonenschema implementieren, um die identifizierten Zonen gleichmäßig über die Ursprungs-L2P-Tabelle zu verteilen. Ähnlich wie 7 umfasst 8 Zwischenräume zwischen verschiedenen Zonen lediglich zu Anschauungszwecken, und es versteht sich, dass die gezonte L2P-Tabelle 60 von 8 auch eine einzige zusammenhängende monolithische Tabelle repräsentiert.
  • Die logischen Zonen 64 sind in 8 lediglich zu Veranschaulichungszwecken nicht explizit herausgestellt. Die logischen Zonen 64 werden jedoch visuell unter Verwendung desselben in 7 verwendeten Grenzenschemas unterschieden. Genauer gesagt gehören beliebige der mit einer durchgezogenen Grenze dargestellten Einträge 62 zu der logischen Zone 64a, beliebige der Einträge 62, die mit einer gestrichelten Grenze dargestellt sind, gehören zu der logischen Zone 64b und beliebige der Einträge 62, die mit einer gepunkteten Grenze dargestellt sind, gehören zu der logischen Zone 64c. Wie gezeigt gehört ein erster Eintrag (62a) der gezonten L2P-Tabelle 62 zu der logischen Zone 64a, der zweite Eintrag (62b) gehört zu der logischen Zone 64b und der dritte Eintrag (62c) gehört zu der logischen Zone 64c. Beginnend an dem vierten Eintrag 62d (der zu der logischen Zone 62a, derselben logischen Zone wie der erste Eintrag 62a, gehört), wiederholt sich die logische Zonenzuweisung. Gemäß der verschachtelten Zonenimplementierung kann das logische Zonenmodul 26 somit logische Zonen 64 so identifizieren, dass keine zwei aufeinanderfolgenden Einträge der Einträge 62 in derselben logischen Zone enthalten sind. Gemäß der verschachtelten Implementierung der Techniken der vorliegenden Offenbarung kann jede logische Zone einer Gruppe von LBN entsprechen, die gleichmäßig voneinander beabstandet sind.
  • Vom logischen Indizierungsstandpunkt aus gesehen kann das logische Zonenmodul 26 den logischen Zonen 64 Einträge 62 zuweisen, indem eine modulo-Operation (oder „mod“-Operation) unter Verwendung des LBN-Index und der Gesamtzahl von Zonen als die zwei Operanden ausgeführt wird. Das logische Zonenmodul 26 kann seinerseits bestimmen, dass alle Einträge 62, die ein bestimmtes Ergebnis (einen bestimmten Rest) aus der mod-Operation produzieren, zu einer einzigen logischen Zone der logischen Zonen 64 gehören.
  • Als Fortsetzung des mit Bezug auf 7 besprochenen Dreizonenbeispiels kann das logische Zonenmodul 26 unter Verwendung des LBN-Index jedes der Einträge 62 und eines Werts von drei eine jeweilige modulo-Operation ausführen. Dementsprechend kann das logische Zonenmodul 26 die Operation 0%3 für Eintrag 62a, die Operation 1%3 für Eintrag 62b, die Operation 2%3 für Eintrag 62c, die Operation 3%3 für Eintrag 62d und so weiter ausführen. Somit kann das logische Zonenmodul 26 Werte von null (0) für die Einträge 62a, 62d und 62g erhalten. Das logische Zonenmodul 26 kann resultierende Werte von eins (1) für die Einträge 62b, 62e und 62h erhalten. Das logische Zonenmodul 26 kann resultierende Werte von zwei (2) für die Einträge 62c, 62f und 62i erhalten. Auf der Basis der Ergebnisse der mod-Operationen kann das logische Zonenmodul 26 die logische Zone 64a als Einträge 62a, 62d und 62g enthaltend identifizieren. Ähnlich kann das logische Zonenmodul 26 die logische Zone 64b als Einträge 62b, 62e und 62h enthaltend identifizieren und kann die logische Zone 64c als Einträge 62c, 62f und 62i enthaltend identifizieren. Das Journaling-Modul 31 kann seinerseits für jede der logischen Zonen 64 auf dieselbe oben mit Bezug auf die serielle Implementierung beschriebene Weise eine getrennte Log-Liste bilden und unterhalten.
  • Durch Implementieren der verschachtelten Implementierung des logischen Zonens gemäß den hier beschriebenen Techniken kann das logische Zonenmodul 31 (und dadurch das Journaling-Modul 31) einen oder mehrere potenzielle Vorteile bereitstellen. Zum Beispiel kann die verschachtelte Implementierung dem Controller 8 ermöglichen, beim Zugriff auf das nichtflüchtige Speicherarray 10 ein heiß-warm-kalt- oder heiß-warm-kühl-kalt-Zugriffsmuster zu verwenden. Im vorliegenden Gebrauch beziehen sich die Ausdrücke „heiß“, „warm“, „kühl“ und „kalt“ auf die Häufigkeit, mit der auf in einem bestimmten Teil des nichtflüchtigen Speicherarrays 10 gespeicherte Daten zugegriffen wird. Der Controller 8 kann die hier beschriebenen verschachtelten Zonentechniken wirksam einsetzen, um den Zugriff auf Teile des nichtflüchtigen Speicherarrays 10 gleichmäßiger zu verteilen. Anders ausgedrückt, kann der Controller 8 auf weniger lokalisierte oder lokalintensive Weise auf die verschiedenen Speichervorrichtungen 16a zugreifen und diese verwenden.
  • In einigen Fällen kann das logische Zonenmodul 26 dafür ausgelegt sein, in allen Szenarien das serielle logische Zonenschema auszuführen. In anderen Beispielen kann das logische Zonenmodul 26 dafür ausgelegt sein, in allen Szenarien das verschachtelte logische Zonenschema auszuführen. In noch weiteren Beispielen kann das logische Zonenmodul 26 sowohl das serielle als auch das verschachtelte logische Zonenschema verwenden, wie etwa durch fallweises Auswählen aus den zwei Schemata. Auf diese Weise kann das logische Zonenmodul 26 die L2P-Tabellenzonentechniken der vorliegenden Offenbarung auf vielfältige Weisen implementieren, um die Herauffahrleistungsfähigkeit der Speicherungsvorrichtung 6 zu verbessern und verschiedene Vorteile für den Betrieb der Speicherungsvorrichtung 6 bereitzustellen.
  • Obwohl sowohl 7 als auch 8 zur leichteren Darstellung und Besprechung mit Bezug auf Dreizonenschemata dargestellt und beschrieben sind, versteht sich, dass in der Praxis die Anzahl logischer Zonen eine beliebige Zahl sein kann, die als eine geeignete Konfiguration ausgewählt wird. Die logischen Zonen- und parallelisierten Journaling-Techniken der vorliegenden Offenbarung sind insofern skalierbar, als die Techniken herauf- oder ausskaliert werden können, wenn die Kapazität des nichtflüchtigen Speicherarrays 10 zunimmt. Im vorliegenden Gebrauch bezieht sich „Heraufskalieren“ auf das Hinzufügen von mehr Speicherungskapazität zu dem nichtflüchtigen Speicherarray 10, ohne Controllerinfrastruktur zu dem Controller 8 hinzuzufügen. Im vorliegenden Gebrauch bezieht sich „Ausskalieren“ auf das Hinzufügen von mehr Speicherungskapazität zu dem nichtflüchtigen Speicherarray 10, einhergehend mit Hinzufügung von mehr Controllerinfrastruktur zu dem Controller 8. Als Veranschaulichung haben typische Speicherungskapazitäten von ungefähr 62 GB auf ungefähr 4 TB zugenommen, wobei weitere Zunahmen möglich und sogar wahrscheinlich sind. Dementsprechend repräsentiert die Skalierbarkeit der logischen Zonen- und parallelisierten Journaling-Techniken der vorliegenden Offenbarung Verbesserungen, die auf stark unterschiedliche Speicherungskapazitäten angewandt werden können.
  • 9A und 9B zeigen Beispiele für zonenspezifische Log-Listen 70a und 70b, die das Journaling-Modul 31 unterhalten kann, gemäß verschiedenen Aspekten der vorliegenden Offenbarung. Die zonenspezifischen Log-Listen 70a und 70b entsprechen dem in 7 dargestellten logischen Zonenschema. Genauer gesagt kann das Journaling-Modul 31 die zonenspezifischen Log-Listen 70a und 70b in einem Fall bilden und unterhalten, in dem das logische Zonenmodul 26 ein serielles logisches Zonenschema verwendet, um Zonen in einer L2P-Tabelle zu identifizieren. Die spezifischen Beispiele für die zonenspezifischen Log-Listen 70a und 70b entsprechen jeweils den mit Bezug auf die in 7 dargestellte bezonte L2P-Tabelle 60 dargestellten Zonen 64a und 64b. Die Zonenkennungen für die logischen Zonen 64a und 64b sind in 9A und 9B mit gestrichelten Linien dargestellt, um anzugeben, dass die logischen Zonen 64a und 64b eine L2P-Tabelle (nämlich die logisch gezonte L2P-Tabelle 60) betreffen und dementsprechend in keiner der zonenspezifischen Log-Listen 70a oder 70b irgendein Zonen oder irgendeine Identifikation repräsentieren.
  • Wie in 9A gezeigt, umfasst die zonenspezifische Log-Liste 70a Einträge 72a72c, die nur LBN entsprechen, die in die logischen Indizes fallen, die in der logischen Zone 64a enthalten sind. Genauer gesagt betreffen alle Einträge 72a72c der zonenspezifischen Log-Liste 70a eines von LBN_0, LBN_1, LBN_2 oder LBN_3. In dem spezifischen Beispiel von 9A, der zonenspezifischen Log-Liste 70a, sind zwei Abbildungsaktualisierungen für LBN_0 und eine Abbildungsaktualisierung für LBN_2 eingetragen. Wie gezeigt, werden die Einträge 72a72c in chronologischer Reihenfolge angehängt, beginnend vom Zeitstempel Tx und bis zum Zeitstempel Tx+3. Falls und wenn das Journaling-Modul 31 nachfolgende Abbildungsänderungen in der logischen Zone 64a detektiert, kann das Journaling-Modul 31 zusätzliche Einträge an die zonenspezifische Log-Liste 70a anhängen. Das spezifische Beispiel für die zonenspezifische Log-Liste 70a umfasst keine Einträge für LBN_1 oder für LBN_3, die beide in der logischen Zone 64a enthalten sind. Das Journaling-Modul 31 kann jedoch diese LBN-Indizes betreffende Einträge anhängen, falls und wenn das Journaling-Modul 31 PBN-Abbildungsänderungen für diese LBN-Indizes detektiert.
  • Wie in 9B gezeigt, umfasst die zonenspezifische Log-Liste 70b Einträge 72d72f, die alle LBN-Indizes in der logischen Zone 64b betreffen. Genauer gesagt betreffen alle Einträge 72d72f der zonenspezifischen Log-Liste 70b eines von LBN_4, LBN_5, LBN_6 oder LBN_7. Der Controller 8 kann die Techniken der vorliegenden Offenbarung zum parallelen Replay der zonenspezifischen Log-Listen 72 implementieren. Zum Beispiel kann der Controller 8 über den Host 4 verfügbare Mehrkern-Verarbeitungsfähigkeiten wirksam zum gleichzeitigen Replay von Teilen der zonenspezifischen Log-Listen 72 einsetzen, um die gezonte L2P-Tabelle 60 zu rekonstruieren. Verglichen mit existierender Log-Listen-Replay-Technologie ermöglichen die Techniken der vorliegenden Offenbarung dem Controller 8, gleichzeitig zwei oder mehr Aktualisierungen der Zonen-L2P-Tabelle 60 zu implementieren. Durch Parallelisieren des Replay der zonenspezifischen Log-Listen 72 kann der Controller 8 die Techniken der vorliegenden Offenbarung implementieren, um den Prozess der Tabellenrekonstruktion bei jedem Herauffahren der Speicherungsvorrichtung 6 zu beschleunigen. Außerdem kann der Controller 8 den Datenverarbeitungs-Ressourcenverbrauch gleichmäßiger über mehrere Verarbeitungskerne verteilen und dadurch die physische und logische Last auf einen beliebigen gegebenen Kern zu einem gegebenen Zeitpunkt mindern.
  • 10 ist ein Flussdiagramm eines beispielhaften Prozesses 80, den eine Vorrichtung ausführen kann, um einen oder mehrere Aspekte der vorliegenden Offenbarung zu implementieren. Obwohl vielfältige Vorrichtungen den Prozess 80 und dafür relevante Schritte ausführen können, wird der Prozess 80 hier als nichteinschränkendes Beispiel als durch den Controller 8 und eine oder mehrere seiner Komponenten ausgeführt beschrieben. Verschiedene Schritte werden als an dem nichtflüchtigen Speicherarray 10 ausgeführt beschrieben. Der Prozess 80 kann beginnen, wenn der Controller 8 eine L2P-Tabelle bildet, die mehrere Abbildungen (82) von LBN auf PBN umfasst. Zum Beispiel kann das Adressenübersetzungsmodul 22 die L2P-Tabelle so bilden, dass die Tabelle zwei oder mehr Abbildungen, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse assoziiert ist. Im Gegenzug kann das logische Zonenmodul 26 mehrere Zonen innerhalb der L2P-Tabelle (84) identifizieren. In einem vereinfachten Beispiel kann das logische Zonenmodul 26 eine erste Zone in der Tabelle und eine zweite Zone in der Tabelle identifizieren, wobei die erste Zone und die zweite Zone jeweils eine oder mehrere Abbildungen der Tabelle umfassen und wobei sich die erste Zone und die zweite Zone keinerlei Abbildung der zwei oder mehr Abbildungen der Tabelle teilen. Die erste logische Zone und die zweite logische Zone können in mehreren durch das logische Zonenmodul 26 identifizierten logischen Zonen enthalten sein. Bei verschiedenen Implementierungen kann das logische Zonenmodul 26 die mehreren logischen Zonen unter Verwendung des seriellen Zonenschemas, des verschachtelten Zonenschemas oder einer beliebigen Kombination davon identifizieren. Die in der ersten logischen Zone enthaltenen Abbildungen können sich gegenseitig mit Bezug auf die in der zweiten logischen Zone enthaltenen Abbildungen ausschließen. Somit teilen sich die erste und zweite logische Zone keinerlei Abbildung der verschiedenen in der L2P-Tabelle enthaltenen Abbildungen. Anders ausgedrückt überlappen sich niemals zwei logische Zonen.
  • Zusätzlich kann das Journaling-Modul 31 für jede identifizierte Zone der L2P-Tabelle (86) eine getrennte Log-Liste bilden. Zum Beispiel kann das Journaling-Modul 31 eine erste Log-Liste bilden, die mit der ersten Zone assoziiert ist, wobei die erste Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der ersten Zone enthaltenen Abbildungen assoziiert sind. In diesem Beispiel kann das Journaling-Modul 31 eine zweite Log-Liste bilden, die mit der zweiten Zone assoziiert ist, wobei die zweite Log-Liste eine oder mehrere Abbildungaktualisierungen angibt, die mit der einen oder den mehreren in der zweiten Zone enthaltenen Abbildungen assoziiert sind. Gemäß den Aspekten der vorliegenden Offenbarung kann das Journaling-Modul 31 beim Herauffahren der Speicherungsvorrichtung 6 (88) parallel ein Replay von Teilen der mehreren Log-Listen durchführen. Zum Beispiel kann das Journaling-Modul 31 gleichzeitig ein Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste durchführen, um die Tabelle zu aktualisieren. Zum Beispiel kann das Journaling-Modul 31 auf mehrere Prozessoren oder mehrere Kerne eines einzelnen Prozessors zurückgreifen, um das Replay der zonenspezifischen Log-Listen 70a und 70b gleichzeitig zu parallelisieren. Es versteht sich, dass das Journaling-Modul 31 die Vollständigkeit von einigen Log-Listen oder Teilen einiger Log-Listen parallelisieren oder eine beliebige Kombination davon durchführen kann. Gemäß den Aspekten der vorliegenden Offenbarung kann anders ausgedrückt das Journaling-Modul 31 an jedem Zeitpunkt ein Replay von mehreren Log-Listen durchführen oder nicht, und das Journaling-Modul 31 kann an einem beliebigen gegebenen Zeitpunkt ein Replay verschiedener Anzahlen von Log-Listen durchführen.
  • Obwohl die obigen Beispiele mit Bezug auf einen Controller einer Speicherungsvorrichtung beschrieben wurden, können in anderen Szenarien die hier beschriebenen Beispiele durch einen anderen Prozessor implementiert werden, etwa einen Vielzweckprozessor, und die Übersetzungstabelle von logischen in physische Datenadressen kann zum Beispiel ein Übersetzung-Lookaside-Puffer sein.
  • Die in der vorliegenden Offenbarung beschriebenen Techniken können mindestens teilweise in Hardware, Software, Firmware oder einer beliebigen Kombination davon implementiert werden. Zum Beispiel können verschiedene Aspekte der beschriebenen Techniken in einem oder mehreren Prozessoren implementiert werden, darunter ein oder mehrere Mikroprozessoren, DSP (digitale Signalprozessoren), ASIC (anwendungsspezifische integrierte Schaltungen), FPGA (Field Programmable Gate Arrays) oder beliebige andere äquivalente integrierte oder diskrete Logikschaltkreise, sowie beliebige Kombinationen solcher Komponenten. Der Ausdruck „Prozessor“ oder „Verarbeitungsschaltkreise“ kann sich im Allgemeinen auf beliebige der obigen Logikschaltkreise alleine oder in Kombination mit anderen Logikschaltkreisen oder beliebige andere äquivalente Schaltkreise beziehen. Eine Hardware umfassende Steuereinheit kann auch eine oder mehrere der Techniken der vorliegenden Offenbarung ausführen.
  • Solche Hardware, Software und Firmware kann in derselben Vorrichtung oder in getrennten Vorrichtungen implementiert werden, um die verschiedenen in der vorliegenden Offenbarung beschriebenen Techniken zu unterstützen. Außerdem können beliebige der beschriebenen Einheiten, Module oder Komponenten zusammen oder getrennt als diskrete, aber interoperable Logikvorrichtungen implementiert werden. Die Abbildung verschiedener Merkmale als Module oder Einheiten soll verschiedene Funktionsaspekte hervorheben und bedingt nicht notwendigerweise, dass solche Module oder Einheiten als getrennte Hardware-, Firmware- oder Softwarekomponenten realisiert werden müssen. Mit einem oder mehreren Modulen oder einer oder mehreren Einheiten assoziierte Funktionalität kann vielmehr durch getrennte Hardware-, Firmware- oder Softwarekomponenten ausgeführt oder in gemeinsame oder getrennte Hardware-, Firmware- oder Softwarekomponenten integriert werden.
  • Die in der vorliegenden Offenbarung beschriebenen Techniken können auch in einem Herstellungsartikel realisiert oder codiert werden, der ein computerlesbares Speicherungsmedium umfasst, das mit Anweisungen codiert ist. Anweisungen, die in einem Herstellungsartikel, der ein computerlesbares Speicherungsmedium codiert umfasst, eingebettet oder codiert sind, können bewirken, dass ein oder mehrere programmierbare Prozessoren oder andere Prozessoren eine oder mehrere der hier beschriebenen Techniken implementieren, wie etwa wenn in dem computerlesbaren Speicherungsmedium enthaltene oder codierte Anweisungen durch den einen oder die mehreren Prozessoren ausgeführt werden. Computerlesbare Speicherungsmedien wären zum Beispiel RAM (Direktzugriffsspeicher), ROM (Festwertspeicher), PROM (programmierbarer Festwertspeicher), EPROM (löschbarer programmierbarer Festwertspeicher), EEPROM (elektronisch löschbarer programmierbarer Festwertspeicher), Flash-Speicher, eine Festplatte, eine CD-ROM (Compact Disc ROM), eine Diskette, eine Kassette, magnetische Medien, optische Medien oder andere computerlesbare Medien. In einigen Beispielen kann ein Herstellungsartikel ein oder mehrere computerlesbare Speicherungsmedien umfassen.
  • In einigen Beispielen kann ein computerlesbares Speicherungsmedium ein nichttransitorisches Medium umfassen. Der Ausdruck „nichttransitorisch“ kann angeben, dass das Speicherungsmedium nicht in einer Trägerwelle oder einem ausgebreiteten Signal realisiert ist. In bestimmten Beispielen kann ein nichttransitorisches Speicherungsmedium Daten speichern, die sich mit der Zeit (z.B. in RAM oder Cache) ändern können.
  • Es wurden verschiedene Beispiele beschrieben. Diese und andere Beispiele liegen im Schutzumfang der folgenden Ansprüche.

Claims (20)

  1. Verfahren, umfassend: Bilden einer Tabelle durch einen Prozessor, die zwei oder mehr Abbildungen umfasst, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse einer Datenspeicherungsvorrichtung assoziiert ist; Identifizieren mehrerer logischer Zonen durch den Prozessor, die eine erste logische Zone in der Tabelle und eine zweite logische Zone in der Tabelle umfassen, wobei die erste logische Zone und die zweite logische Zone jeweils eine oder mehrere Abbildungen der Tabelle umfassen und wobei sich die eine oder mehreren Abbildungen der ersten logischen Zone gegenseitig mit Bezug auf die eine oder mehreren Abbildungen der zweiten logischen Zone ausschließen; Bilden einer mit der ersten logischen Zone assoziierten ersten Log-Liste durch den Prozessor, wobei die erste Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziiert sind; Bilden einer mit der zweiten logischen Zone assoziierten zweiten Log-Liste durch den Prozessor, wobei die zweite Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der zweiten logischen Zone enthaltenen Abbildungen assoziiert sind; und gleichzeitiges Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste durch den Prozessor, um die Tabelle zu aktualisieren.
  2. Verfahren nach Anspruch 1, wobei ein Controller der Datenspeicherungsvorrichtung den Prozessor umfasst und wobei Replay des Teils der ersten Log-Liste und des Teils der zweiten Log-Liste erfolgt, wenn der Controller ein Herauffahren der Datenspeicherungsvorrichtung detektiert.
  3. Verfahren nach Anspruch 1, wobei Identifizieren der ersten logischen Zone und der zweiten logischen Zone Folgendes umfasst: Bestimmen durch den Prozessor, dass eine erste Teilmenge der zwei oder mehr Abbildungen mit einer ersten Gruppe logischer Adressen assoziiert ist; Bestimmen durch den Prozessor, dass eine zweite Teilmenge der zwei oder mehr Abbildungen mit einer zweiten, anderen Gruppe logischer Adressen assoziiert ist; Vergeben der ersten Teilmenge durch den Prozessor an die erste logische Zone; und Vergeben der zweiten Teilmenge durch den Prozessor an die zweite logische Zone.
  4. Verfahren nach Anspruch 3, ferner umfassend: Identifizieren der ersten Gruppe logischer Adressen durch den Prozessor auf der Basis der ersten Gruppe logischer Adressen, die einen aufeinanderfolgenden Block logischer Adressen repräsentieren.
  5. Verfahren nach Anspruch 4, ferner umfassend: Bestimmen einer Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind, durch den Prozessor; und Bestimmen einer Gesamtzahl logischer Adressen, die in die erste Teilmenge aufzunehmen sind, durch den Prozessor auf der Basis einer Gesamtzahl von Einträgen in der Tabelle und der Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind.
  6. Verfahren nach Anspruch 3, ferner umfassend: Identifizieren der ersten Gruppe logischer Adressen durch den Prozessor auf der Basis eines jeweiligen Index jeder logischen Adresse in der ersten Gruppe, die bei Division durch eine Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind, einen gleichen Rest produziert.
  7. Verfahren nach Anspruch 1, wobei gleichzeitiges Replay des Teils der ersten Log-Liste und des Teils der zweiten Log-Liste Folgendes umfasst: Replay des Teils der ersten Log-Liste durch einen ersten Prozessorkern; und Replay des Teils der zweiten Log-Liste durch einen zweiten Prozessorkern.
  8. Verfahren nach Anspruch 1, das ferner Bestimmen einer Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind, durch den Prozessor dergestalt umfasst, dass die Gesamtzahl logischer Zonen auf einer Gesamtzahl von mit dem Prozessor assoziierten Verarbeitungskernen basiert.
  9. Verfahren nach Anspruch 1, wobei Bilden der ersten Log-Liste Journaling der mit der einen oder den mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziierten einen oder mehreren Abbildungsaktualisierungen durch den Prozessor in einer chronologischen Reihenfolge umfasst.
  10. Vorrichtung, umfassend: eine Speichervorrichtung, die dafür ausgelegt, eine Tabelle zu speichern, die zwei oder mehr Abbildungen umfasst, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse einer Datenspeicherungsvorrichtung assoziiert ist; und einen oder mehrere Prozessoren, ausgelegt zum: Identifizieren mehrerer logischer Zonen, die eine erste logische Zone in der Tabelle und eine zweite logische Zone in der Tabelle umfassen, wobei die erste logische Zone und die zweite logische Zone jeweils eine oder mehrere Abbildungen der Tabelle umfassen und wobei sich die eine oder mehreren Abbildungen der ersten logischen Zone gegenseitig mit Bezug auf die eine oder mehreren Abbildungen der zweiten logischen Zone ausschließen; Bilden einer mit der ersten logischen Zone assoziierten ersten Log-Liste, wobei die erste Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziiert sind; Bilden einer mit der zweiten logischen Zone assoziierten zweiten Log-Liste, wobei die zweite Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der zweiten logischen Zone enthaltenen Abbildungen assoziiert sind; und gleichzeitiges Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste, um die Tabelle zu aktualisieren.
  11. Vorrichtung nach Anspruch 10, wobei ein Controller der Datenspeicherungsvorrichtung den einen oder die mehreren Prozessoren umfasst, wobei die Speichervorrichtung ein nichtflüchtiges Speicherarray der Datenspeicherungsvorrichtung umfasst und wobei zum Replay des Teils der ersten Log-Liste und des Teils der zweiten Log-Liste der Controller zum Replay des Teils der ersten Log-Liste und des Teils der zweiten Log-Liste ausgelegt ist, wenn ein Herauffahren der Datenspeicherungsvorrichtung detektiert wird.
  12. Vorrichtung nach Anspruch 10, wobei zum Identifizieren der ersten logischen Zone und der zweiten logischen Zone der eine oder die mehreren Prozessoren ausgelegt sind zum: Bestimmen, dass eine erste Teilmenge der zwei oder mehr Abbildungen mit einer ersten Gruppe logischer Adressen assoziiert ist; Bestimmen, dass eine zweite Teilmenge der zwei oder mehr Abbildungen mit einer zweiten, anderen Gruppe logischer Adressen assoziiert ist; Vergeben der ersten Teilmenge an die erste logische Zone; und Vergeben der zweiten Teilmenge an die zweite logische Zone.
  13. Vorrichtung nach Anspruch 12, wobei der eine oder die mehreren Prozessoren ferner ausgelegt sind zum Identifizieren der ersten Gruppe logischer Adressen auf der Basis der ersten Gruppe logischer Adressen, die einen aufeinanderfolgenden Block logischer Adressen repräsentieren.
  14. Vorrichtung nach Anspruch 13, wobei der eine oder die mehreren Prozessoren ferner ausgelegt sind zum: Bestimmen einer Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind; und Bestimmen einer Gesamtzahl logischer Adressen, die in die erste Teilmenge aufzunehmen sind, auf der Basis einer Gesamtzahl von Einträgen in der Tabelle und der Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind.
  15. Vorrichtung nach Anspruch 12, wobei der eine oder die mehreren Prozessoren ferner ausgelegt sind zum Identifizieren der ersten Gruppe logischer Adressen auf der Basis eines jeweiligen Index jeder logischen Adresse in der ersten Gruppe, die bei Division durch eine Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind, einen gleichen Rest produziert.
  16. Vorrichtung nach Anspruch 10, wobei zum gleichzeitigen Replay des Teils der ersten Log-Liste und des Teils der zweiten Log-Liste der eine oder die mehreren Prozessoren ausgelegt sind zum: Replay des Teils der ersten Log-Liste durch einen ersten Prozessorkern; und Replay des Teils der zweiten Log-Liste durch einen zweiten Prozessorkern.
  17. Vorrichtung nach Anspruch 10, wobei der eine oder die mehreren Prozessoren ferner ausgelegt sind zum Bestimmen einer Gesamtzahl logischer Zonen, die in der Tabelle zu identifizieren sind, dergestalt, dass die Gesamtzahl von Zonen auf einer Gesamtzahl mit dem Prozessor assoziierten Verarbeitungskernen basiert.
  18. Vorrichtung nach Anspruch 10, wobei zur Bildung der ersten Log-Liste der eine oder die mehreren Prozessoren ausgelegt sind zum Journaling der mit der einen oder den mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziierten einen oder mehreren Abbildungsaktualisierungen in einer chronologischen Reihenfolge.
  19. Vorrichtung nach Anspruch 10, wobei die Datenspeicherungsvorrichtung ein SSD (Solid State Drive) umfasst.
  20. Nichttransitorisches computerlesbares Speichermedium, das mit Anweisungen codiert ist, die, wenn sie ausgeführt werden, bewirken, dass ein oder mehrere Prozessoren einer Datenverarbeitungsvorrichtung Folgendes durchführen: Bilden einer Tabelle, die zwei oder mehr Abbildungen umfasst, wobei jede Abbildung mit einer jeweiligen logischen Adresse und einer jeweiligen physischen Adresse einer Datenspeicherungsvorrichtung assoziiert ist; Identifizieren mehrerer logischer Zonen, die eine erste logische Zone in der Tabelle und eine zweite logische Zone in der Tabelle umfassen, wobei die erste logische Zone und die zweite logische Zone jeweils eine oder mehrere Abbildungen der Tabelle umfassen und wobei sich die eine oder mehreren Abbildungen der ersten logische Zone gegenseitig mit Bezug auf die eine oder mehreren Abbildungen der zweiten logischen Zone ausschließen; Bilden einer mit der ersten logischen Zone assoziierten ersten Log-Liste, wobei die erste Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der ersten logischen Zone enthaltenen Abbildungen assoziiert sind; Bilden einer mit der zweiten logischen Zone assoziierten zweiten Log-Liste, wobei die zweite Log-Liste eine oder mehrere Abbildungsaktualisierungen angibt, die mit der einen oder den mehreren in der zweiten logischen Zone enthaltenen Abbildungen assoziiert sind; und gleichzeitiges Replay eines Teils der ersten Log-Liste und eines Teils der zweiten Log-Liste, um die Tabelle zu aktualisieren.
DE102017104125.7A 2016-05-05 2017-02-28 Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay Active DE102017104125B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/147,465 2016-05-05
US15/147,465 US9940261B2 (en) 2016-05-05 2016-05-05 Zoning of logical to physical data address translation tables with parallelized log list replay

Publications (2)

Publication Number Publication Date
DE102017104125A1 true DE102017104125A1 (de) 2017-11-09
DE102017104125B4 DE102017104125B4 (de) 2024-10-17

Family

ID=60119656

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017104125.7A Active DE102017104125B4 (de) 2016-05-05 2017-02-28 Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay

Country Status (3)

Country Link
US (1) US9940261B2 (de)
CN (1) CN107346290B (de)
DE (1) DE102017104125B4 (de)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528463B2 (en) * 2016-09-28 2020-01-07 Intel Corporation Technologies for combining logical-to-physical address table updates in a single write operation
TWI591533B (zh) * 2016-11-25 2017-07-11 慧榮科技股份有限公司 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置
US10380028B2 (en) * 2016-12-30 2019-08-13 Western Digital Technologies, Inc. Recovery of validity data for a data storage system
US11301433B2 (en) * 2017-11-13 2022-04-12 Weka.IO Ltd. Metadata journal in a distributed storage system
US10884947B2 (en) * 2017-11-17 2021-01-05 SK Hynix Inc. Methods and memory systems for address mapping
KR20190074897A (ko) * 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
CN110109879B (zh) * 2018-01-18 2023-07-18 伊姆西Ip控股有限责任公司 在多核系统中冲刷元数据的方法、设备和计算机可读介质
EP3746852B1 (de) 2018-01-31 2022-07-20 Parker-Hannifin Corporation System und verfahren zur steuerung eines ventilverteilers
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
CN108647157B (zh) * 2018-03-14 2021-10-01 深圳忆联信息系统有限公司 一种基于相变存储器的映射管理方法及固态硬盘
CN108881214B (zh) * 2018-04-18 2021-02-09 李世伟 多功能集成交互方法、装置及电子设备
US11003587B2 (en) * 2018-05-03 2021-05-11 SK Hynix Inc. Memory system with configurable NAND to DRAM ratio and method of configuring and using such memory system
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US11226876B2 (en) * 2018-06-21 2022-01-18 Sap Se Non-blocking backup in a log replay node for tertiary initialization
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10552316B2 (en) * 2018-06-29 2020-02-04 Micron Technology, Inc. Controlling NAND operation latency
CN115658593A (zh) * 2018-07-16 2023-01-31 超聚变数字技术有限公司 一种数据处理方法和装置
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US11030089B2 (en) 2018-09-28 2021-06-08 Micron Technology, Inc. Zone based reconstruction of logical to physical address translation map
KR102553261B1 (ko) 2018-10-10 2023-07-07 삼성전자 주식회사 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법
TWI709042B (zh) * 2018-11-08 2020-11-01 慧榮科技股份有限公司 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
CN111610929B (zh) * 2019-02-26 2023-04-14 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US10922234B2 (en) * 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11100005B2 (en) * 2019-09-06 2021-08-24 Micron Technology, Inc. Logical-to-physical (L2P) table sharping strategy
US11294827B2 (en) * 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11249896B2 (en) * 2019-12-20 2022-02-15 Micron Technology, Inc. Logical-to-physical mapping of data groups with data locality
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11169881B2 (en) 2020-03-30 2021-11-09 Alibaba Group Holding Limited System and method for facilitating reduction of complexity and data movement in erasure coding merging on journal and data storage drive
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
CN111651124B (zh) * 2020-06-03 2023-07-04 深圳忆联信息系统有限公司 Ssd映射表多核分区并行重建方法、装置、设备及介质
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
WO2022006867A1 (en) * 2020-07-10 2022-01-13 Micron Technology, Inc. Rebuilding logical-to-physical address mapping with limited memory
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
KR20220023598A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US11543993B1 (en) 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs
CN113553008A (zh) * 2021-07-20 2021-10-26 深圳忆联信息系统有限公司 映射表更新方法、装置、计算机设备及存储介质
US11615020B2 (en) 2021-08-12 2023-03-28 Micron Technology, Inc. Implementing mapping data structures to minimize sequentially written data accesses
EP4246330A1 (de) * 2022-03-15 2023-09-20 Samsung Electronics Co., Ltd. Speichervorrichtung und betriebsverfahren dafür
CN116361225B (zh) * 2023-04-12 2023-09-26 杭州前云数据技术有限公司 一种实现点对点跨区域nas的系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353305B2 (en) 2002-06-28 2008-04-01 Brocade Communications Systems, Inc. Apparatus and method for data virtualization in a storage processing device
KR100843543B1 (ko) 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US8037112B2 (en) * 2007-04-23 2011-10-11 Microsoft Corporation Efficient access of flash databases
KR100924021B1 (ko) * 2007-10-02 2009-10-28 주식회사 휴원 플래시 메모리의 사상 관리 방법
US7941692B2 (en) 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
US8555086B2 (en) 2008-06-30 2013-10-08 Intel Corporation Encrypting data on a non-volatile memory
CN101676882B (zh) * 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
CN102043721B (zh) 2010-05-12 2016-10-26 中颖电子股份有限公司 闪存存储管理方法
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8949568B2 (en) * 2011-05-24 2015-02-03 Agency For Science, Technology And Research Memory storage device, and a related zone-based block management and mapping method
CN103106143B (zh) 2011-11-11 2016-01-13 光宝科技股份有限公司 固态储存装置及其逻辑至实体对应表建立方法
US9037820B2 (en) 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US8838936B1 (en) 2013-11-27 2014-09-16 NXGN Data, Inc. System and method for efficient flash translation layer
KR20150133530A (ko) * 2014-05-20 2015-11-30 삼성전자주식회사 스토리지 시스템
US9459800B2 (en) * 2014-07-08 2016-10-04 International Business Machines Corporation Storage region metadata management

Also Published As

Publication number Publication date
CN107346290A (zh) 2017-11-14
DE102017104125B4 (de) 2024-10-17
CN107346290B (zh) 2023-05-16
US20170322888A1 (en) 2017-11-09
US9940261B2 (en) 2018-04-10

Similar Documents

Publication Publication Date Title
DE102017104125B4 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE102017104158A1 (de) Gültigkeitsverfolgung für garbage collection
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE102020115969A1 (de) Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE112020004963T5 (de) Datenintegritätsschutz für zns-anforderungen
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US

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

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., IRVINE, CALIF., US

R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D.STAATES DELAWARE), SAN JOSE, CA, US

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D.STAATES DELAWARE), SAN JOSE, CA, US

R018 Grant decision by examination section/examining division
R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US