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 PDFInfo
- 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
Links
- 238000013519 translation Methods 0.000 title description 21
- 238000013507 mapping Methods 0.000 claims abstract description 41
- 238000003860 storage Methods 0.000 claims description 180
- 238000000034 method Methods 0.000 claims description 70
- 238000013500 data storage Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 23
- 239000007787 solid Substances 0.000 claims description 4
- 230000001174 ascending effect Effects 0.000 claims description 2
- 238000013403 standard screening design Methods 0.000 description 38
- 230000008859 change Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 238000012423 maintenance Methods 0.000 description 13
- 230000008901 benefit Effects 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 9
- 230000003068 static effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000003628 erosive effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013316 zoning Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- AWZVYNHQGTZJIH-UHFFFAOYSA-N N-Nitrosomethylvinylamine Chemical compound C=CN(C)N=O AWZVYNHQGTZJIH-UHFFFAOYSA-N 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple 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
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 und9B 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 Speicherungsumgebung2 , in der die Speicherungsvorrichtung6 als Speicherungsvorrichtung für die Hostvorrichtung4 fungieren kann, gemäß einer oder mehreren Techniken der vorliegenden Offenbarung. Zum Beispiel kann die Hostvorrichtung4 in der Speicherungsvorrichtung6 enthaltene nichtflüchtige Speichervorrichtungen benutzen, um Daten zu speichern und abzurufen. In einigen Beispielen kann die Speicherungsumgebung2 mehrere Speicherungsvorrichtungen, wie etwa die Speicherungsvorrichtung6 , umfassen, wobei die mehreren Speicherungsvorrichtungen als ein Speicherungsarray arbeiten können. Zum Beispiel kann die Speicherungsumgebung2 mehrere Speicherungsvorrichtungen6 umfassen, die als redundantes Array von kostengünstigen/unabhängigen Datenträgern (RAID) ausgelegt sind, die zusammen als Massenspeicherungsvorrichtung für die Hostvorrichtung4 fungieren. - Die Speicherungsumgebung
2 kann die Hostvorrichtung4 umfassen, die Daten in eine oder mehreren Speicherungsvorrichtungen, wie etwa der Speicherungsvorrichtung6 , speichern und/oder diese daraus abrufen kann. Wie in1 dargestellt, kann die Hostvorrichtung4 über die Schnittstelle14 mit der Speicherungsvorrichtung6 kommunizieren. Die Hostvorrichtung4 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 Hostvorrichtung4 kann in der Speicherungsumgebung2 gespeicherte Daten unter Verwendung von logischen oder von virtuellen Adressen identifizieren. - Wie in
1 dargestellt, kann die Speicherungsvorrichtung6 einen Controller8 , ein nichtflüchtiges Speicherarray10 (NVMA10 ), eine Stromversorgung11 , flüchtigen Speicher12 und eine Schnittstelle14 umfassen. In einigen Beispielen kann die Speicherungsvorrichtung6 zusätzliche Komponenten umfassen, die in1 der Klarheit halber nicht gezeigt sind. Zum Beispiel kann die Speicherungsvorrichtung6 eine Leiterplatte (PB) umfassen, an der Komponenten der Speicherungsvorrichtung6 mechanisch angebracht sind und die elektrisch leitfähige Bahnen umfasst, die Komponenten der Speicherungsvorrichtung6 elektrisch miteinander verbinden; und dergleichen. In einigen Beispielen können die physischen Abmessungen und Verbinderkonfigurationen der Speicherungsvorrichtung6 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 Speicherungsvorrichtung6 direkt mit einem Motherboard der Hostvorrichtung4 gekoppelt (z.B. direkt angelötet) sein. - Die Speicherungsvorrichtung
6 kann eine Schnittstelle14 als Schnittstelle mit der Hostvorrichtung4 umfassen. Die Schnittstelle14 kann einen Datenbus zum Austauschen von Daten mit der Hostvorrichtung4 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung4 umfassen. Die Schnittstelle14 kann gemäß einem beliebigen geeigneten Protokoll arbeiten. Zum Beispiel kann die Schnittstelle14 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 Schnittstelle14 (z.B. der Datenbus, der Steuerbus oder beide) ist elektrisch mit dem Controller8 verbunden, wodurch elektrische Verbindung zwischen der Hostvorrichtung4 und dem Controller8 bereitgestellt wird, was den Austausch von Daten zwischen der Hostvorrichtung4 und dem Controller8 erlaubt. In einigen Beispielen kann die elektrische Verbindung der Schnittstelle14 auch der Speicherungsvorrichtung6 gestatten, Stromversorgung von der Hostvorrichtung4 zu erhalten. Wie zum Beispiel in1 dargestellt, kann die Stromversorgung11 über die Schnittstelle14 Strom von der Hostvorrichtung4 erhalten. - Die Speicherungsvorrichtung
6 umfasst den Controller8 , der eine oder mehrere Operationen der Speicherungsvorrichtung6 verwalten kann. Zum Beispiel kann der Controller8 das Lesen von Daten von Speichervorrichtungen16 und/oder das Schreiben von Daten in diese verwalten. - Die Speicherungsvorrichtung
6 kann NVMA10 umfassen, der mehrere Speichervorrichtungen16Aa –16Nn (kollektiv „Speichervorrichtungen16 “) umfassen kann. Jede der Speichervorrichtungen16 kann dafür ausgelegt sein, Daten zu speichern und/oder abzurufen. Zum Beispiel kann eine Speichervorrichtung der Speichervorrichtungen16 Daten und eine Nachricht von dem Controller8 empfangen, die die Speichervorrichtung anweist, die Daten zu speichern. Ähnlich kann die Speichervorrichtung der Speichervorrichtungen16 eine Nachricht von dem Controller8 empfangen, die die Speichervorrichtung anweist, Daten abzurufen. In einigen Beispielen kann jede der Speichervorrichtungen16 als Die bezeichnet werden. In einigen Beispielen kann ein einzelner physischer Chip mehrere Dies (d.h. mehrere Speichervorrichtungen16 ) umfassen. In einigen Beispielen kann jede der Speichervorrichtungen16 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 Speichervorrichtungen16 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 Speichervorrichtung16Aa , die mehrere Blöcke17A –17N (kollektiv „Blöcke17 “) umfasst, die jeweils in mehrere Seiten19Aa –19Nm (kollektiv „Seiten19 “) aufgeteilt sind. Jede Seite der Seiten19 in einer bestimmten Speichervorrichtung (z.B. der Speichervorrichtung16Aa ) 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 Seiten19 zu definieren. Jeweilige Zellen in jeder der Seiten19 können elektrisch mit jeweiligen Bitleitungen verbunden sein. Der Controller8 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 Speichervorrichtungen16 verbunden ist. Dementsprechend können die Verbindungen zwischen Speichervorrichtungen16 und dem Controller8 gemultiplext sein. Beispielsweise können Speichervorrichtungen16 zu Kanälen18A –18N (kollektiv „Kanäle18 “) gruppiert werden. Wie zum Beispiel in1 dargestellt, können Speichervorrichtungen16Aa –16An zu einem ersten Kanal18A und Speichervorrichtungen16Na –16Nn zu einem N-ten Kanal18N gruppiert werden. Die zu jedem der Kanäle18 gruppierten Speichervorrichtungen16 können sich eine oder mehrere Verbindungen zu dem Controller8 teilen. Zum Beispiel können die zu dem ersten Kanal18A gruppierten Speichervorrichtungen16 an einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus angeschlossen sein. Die Speicherungsvorrichtung6 kann einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus für jeden jeweiligen Kanal von Kanälen18 umfassen. In einigen Beispielen kann jeder Kanal der Kanäle18 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 Speichervorrichtungen16 verbunden sein. Auf diese Weise kann die Anzahl getrennter Verbindungen zwischen dem Controller8 und den Speichervorrichtungen16 verringert werden. Da jeder Kanal eine unabhängige Menge von Verbindungen zu dem Controller8 aufweist, kann sich zusätzlich die Verringerung der Verbindungen nicht signifikant auf die Datendurchsatzrate auswirken, da der Controller8 gleichzeitig verschiedene Befehle an jeden Kanal ausgeben kann. - In einigen Beispielen kann die Speicherungsvorrichtung
6 eine Anzahl von Speichervorrichtungen16 umfassen, die so gewählt ist, dass eine Gesamtkapazität bereitgestellt wird, die größer als die der Hostvorrichtung4 zugängliche Kapazität ist. Dies wird als Überprovisionierung bezeichnet. Wenn zum Beispiel die Speicherungsvorrichtung6 angeblich 240 GB benutzerzugängliche Speicherungskapazität umfassen soll, kann die Speicherungsvorrichtung6 genug Speichervorrichtungen16 umfassen, um eine Gesamtspeicherungskapazität von 256 GB zu ergeben. Die 16 GB der Speichervorrichtungen16 können der Hostvorrichtung4 oder einem Benutzer der Hostvorrichtung4 nicht zugänglich sein. Stattdessen kann der überprovisionierte Teil der Speicherungsvorrichtungen16 zusätzliche Blöcke bereitstellen, um Schreibvorgänge, Müllabfuhr, Abnutzungsnivellierung und dergleichen bereitzustellen. Ferner können die überprovisionierten Speicherungsvorrichtungen16 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 Hostvorrichtung4 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 Speicherungsvorrichtung2 und D die Speicherungskapazität der Speicherungsvorrichtung2 ist, die der Hostvorrichtung4 zugänglich ist. - Die Speicherungsvorrichtung
6 kann die Stromversorgung11 umfassen, die eine oder mehrere Komponenten der Speicherungsvorrichtung6 mit Strom versorgen kann. Beim Betrieb in einem Standardmodus kann die Stromversorgung11 die eine oder mehreren Komponenten unter Verwendung von Strom mit Strom versorgen, der durch eine externe Vorrichtung, wie etwa die Hostvorrichtung4 , bereitgestellt wird. Zum Beispiel kann die Stromversorgung11 die eine oder mehreren Komponenten unter Verwendung von Strom mit Strom versorgen, der über die Schnittstelle14 von der Hostvorrichtung4 erhalten wird. Bei einigen Beispielen kann die Stromversorgung11 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 Stromversorgung11 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 Speicher12 umfassen, mit dem der Controller8 Informationen speichern kann. In einigen Beispielen kann der Controller8 den flüchtigen Speicher12 als Cache verwenden. Zum Beispiel kann der Controller8 Cache-gespeicherte Informationen13 in den flüchtigen Speicher12 speichern, bis die Cache-gespeicherten Informationen13 in die Speichervorrichtungen16 geschrieben werden. Wie in1 dargestellt, kann der flüchtige Speicher12 Strom verbrauchen, der von der Stromversorgung11 empfangen wird. Beispiele für den flüchtigen Speicher12 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 Speicher12 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 Hostvorrichtung4 auf eine Dateneinheit unter Verwendung der LBN beziehen und der Controller8 kann PBN benutzen, um direkt Daten in die Speichervorrichtungen16 zu schreiben oder Daten aus ihnen zu lesen. - Der Controller
8 kann die L2P-Tabelle aus vielfältigen Gründen im flüchtigen Speicher12 unterhalten. Ein Grund für das Unterhalten der L2P-Tabelle ist zum großen Teil, dass der Controller8 NAND-Blöcke von Speichervorrichtungen16 löschen kann, bevor er wieder die gelöschten NAND-Blöcke programmiert. Aus Gründen der Leistungsfähigkeit kann der Controller8 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 Controller8 stattdessen die Daten in einen vorgelöschten (oder freien) NAND-Block von Speichervorrichtungen16 schreiben. Als Ergebnis dieser dynamischen Umschreibvorgänge in vorgelöschte PBN kann sich der Inhalt der L2P-Tabelle ändern, wenn der Host4 Schreibbefehle sendet. - Intern in der Speicherungsvorrichtung
6 führt der Controller8 Müllabfuhr durch, indem gültige Benutzerdaten für eine bestimmte LBN von einer PBN zu einer anderen PBN in den Speichervorrichtungen16 verlagert werden. Dementsprechend kann die Müllabfuhr mit Bezug auf den Betrieb der Speicherungsvorrichtung6 als ein „Hintergrund“-Prozess bezeichnet werden. Die durch den Controller8 durchgeführte Müllabfuhr kann bewirken, dass sich auch der Inhalt der L2P ändert. Obwohl der Controller8 Daten von einer PBN zu einer anderen PBN transferiert, kann der Host4 genauer gesagt immer noch die transferierten Daten mit derselben LBN assoziieren. Jede durch den Controller8 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 Speicher12 kann der Controller8 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 Controller8 eine aktuelle Kopie der L2P-Tabelle periodisch in NVMA10 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 Speicherungsvorrichtung6 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 Controller8 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 Controller8 wieder durch den Host4 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 NMVA10 ü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 Controller8 innerhalb der Backup-Zeit (oder „Strom-Kapazität“), die durch die Stromversorgung11 bei Stromausfall bereitgestellt wird, Replay oder „Journal“ durchführen kann. Zum Beispiel kann der Controller8 die maximale Log-Listen-Länge so begrenzen, dass die durch die Stromversorgung11 bereitgestellte Strom-Kapazität (in Zeiteinheiten) für den Controller8 lang genug ist, um die Log-Liste in das nichtflüchtige Speicherarray10 zu schreiben. Bei einem nachfolgenden Herauffahren kann der Controller8 die letzte im NVMA10 ü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 Controller8 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 Controller8 unterhaltenen L2P-Tabelle zu. Die Länge der durch den Controller8 unterhaltenen Log-Liste kann ihrerseits potenziell auch zunehmen. Jede Zunahme der Log-Listen-Länge wirkt sich auf die Zeit aus, die der Controller8 zum Replay der Log-Liste beim Herauffahren braucht. Vergrößern der durch das nichtflüchtige Speicherarray10 bereitgestellten Speicherungskapazität kann sich somit negativ auf die Herauffahr-Bereitschaftszeit der Speicherungsvorrichtung6 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 Controller8 ein logisches Zonenschema anwenden, um verschiedene logische Zonen in der L2P-Tabelle zu identifizieren. Der Controller8 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 Controller8 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 Controller8 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 Controller8 somit, eine L2P-Tabelle zu zonen, während die Einzeltabellenidentität der L2P-Tabelle aufrechterhalten wird. Außerdem kann der Controller8 jede Zone der L2P-Tabelle mit ihrer eigenen getrennten Log-Liste assoziieren. Der Controller8 kann Einträge auf der Basis der LBN-Komponenten der Einträge zu einer einzelnen Zone gruppieren. Anders ausgedrückt, kann der Controller8 die Zonen der L2P-Tabelle unter Verwendung der logischen Adressen der verschiedenen einzelnen Tabelleneinträge bilden. Dementsprechend werden die durch den Controller8 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 Speicherungsvorrichtung6 zur Verfügung haben. Zu einem Zeitpunkt des Durchführens des Log-Listen-Replay kann der Controller8 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 Controller8 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 Controller8 CPUs mit8 Kernen oder CPUs mit16 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 Speicherungsvorrichtung6 nach einem Stromausfall beliebiger Art beschleunigen. Somit kann der Controller8 die Techniken der vorliegenden Offenbarung implementieren, um die zunehmend leistungsstarke Computerarchitektur, die im Handel erhältlich ist, wirksam einzusetzen, um die Herauffahr-Bereitschaft der Speicherungsvorrichtung6 zu verbessern. -
3 ist eine konzeptuelle und schematische Blockdarstellung von beispielhaften Einzelheiten des Controllers8 . In einigen Beispielen kann der Controller8 ein Adressenübersetzungsmodul22 , ein Schreibmodul24 , ein logisches Zonenmodul26 , ein Lesemodul28 , ein Unterhaltungsmodul30 , ein Journaling-Modul31 und mehrere Kanalcontroller32A –32N (kollektiv „Kanalcontroller32 “) umfassen. In anderen Beispielen kann der Controller8 zusätzliche Module oder Hardwareeinheiten umfassen oder kann weniger Module oder Hardwareeinheiten umfassen. Der Controller8 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 Controller8 ein SoC (System auf einem Chip) sein. - Der Controller
8 kann über die Schnittstelle14 eine Schnittstelle mit der Hostvorrichtung4 aufweisen und die Speicherung von Daten in Speichervorrichtungen16 und das Abrufen von Daten aus diesen verwalten. Zum Beispiel kann das Schreibmodul24 des Controllers8 Schreibvorgänge in die Speichervorrichtungen16 verwalten. Zum Beispiel kann das Schreibmodul24 über die Schnittstelle14 eine Nachricht von der Hostvorrichtung4 empfangen, die die Speicherungsvorrichtung6 anweist, Daten zu speichern, die mit einer logischen Datenadressen und den Daten assoziiert sind. Das Schreibmodul24 kann das Schreiben der Daten in die Speichervorrichtungen16 verwalten. - Zum Beispiel kann das Schreibmodul
24 mit dem Adressenübersetzungsmodul22 kommunizieren, das Übersetzung zwischen logischen Datenadressen, die durch die Hostvorrichtung4 verwendet werden, um Speicherungsorte von Daten zu verwalten, und physischen Datenadressen, die durch das Schreibmodul24 verwendet werden, um das Schreiben von Daten in Speichervorrichtungen16 anzuleiten, verwaltet. Das Adressenübersetzungsmodul22 des Controllers8 kann eine L2P-Tabelle und eine oder mehrere Log-Listen benutzen, wodurch logische Datenadressen (oder logische Blockadressen) von durch die Speichervorrichtungen16 gespeicherten Daten mit physischen Datenadressen (oder physischen Blockadressen) von durch die Speichervorrichtungen16 gespeicherten Daten assoziiert werden. Zum Beispiel kann die Hostvorrichtung4 die logischen Datenadressen der durch die Speichervorrichtungen16 gespeicherten Daten in Anweisungen oder Nachrichten für die Speicherungsvorrichtung6 benutzen, während das Schreibmodul24 physische Datenadressen der Daten benutzt, um das Schreiben von Daten in Speichervorrichtungen16 zu steuern. (Ähnlich kann das Lesemodul28 physische Datenadressen benutzen, um das Lesen von Daten aus den Speichervorrichtungen16 zu steuern.) Die physischen Datenadressen entsprechen tatsächlichen physischen Orten von Speichervorrichtungen16 . In einigen Beispielen kann das Adressenübersetzungsmodul22 die L2P-Tabelle und eine oder mehrere Log-Listen in flüchtigem Speicher12 speichern. In einigen Beispielen kann das Adressenübersetzungsmodul22 periodisch eine aktuelle Kopie der L2P-Tabelle in NVMA10 (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übersetzungsmodul22 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 Hostvorrichtung4 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 Hostvorrichtung4 empfangene logische Datenadresse das Adressenübersetzungsmodul22 direkt eine entsprechende physische Datenadresse abrufen kann. - Wie oben besprochen, kann das Schreibmodul
24 des Controllers8 eine oder mehrere Operationen zum Verwalten des Schreibens von Daten in Speichervorrichtungen16 ausführen. Zum Beispiel kann das Schreibmodul24 das Schreiben von Daten in Speichervorrichtungen16 verwalten, indem ein oder mehrere Blöcke in den Speichervorrichtungen16 zum Speichern der Daten ausgewählt werden und bewirkt wird, dass Speichervorrichtungen der Speichervorrichtungen16 , die die ausgewählten Blöcke enthalten, die Daten tatsächlich speichern. Wie oben besprochen, kann das Schreibmodul24 bewirken, dass das Adressenübersetzungsmodul22 die L2P-Tabelle oder eine Log-Liste mit der logischen Blockadresse auf der Basis der ausgewählten Blöcke aktualisiert. Zum Beispiel kann das Schreibmodul24 eine Nachricht von der Hostvorrichtung4 empfangen, die eine Einheit von Daten und eine logische Datenadresse umfasst, einen Block und eine Seite in einer bestimmten Speichervorrichtung der Speichervorrichtungen16 zum Speichern der Daten auswählen, bewirken, dass die bestimmte Speichervorrichtung der Speichervorrichtungen16 die Daten tatsächlich speichert (z.B. über einen Kanalcontroller der Kanalcontroller32 , der der bestimmten Speichervorrichtung entspricht) und bewirken, dass das Adressenübersetzungsmodul22 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 Speichervorrichtungen16 entspricht. - In einigen Beispielen kann zusätzlich zu dem Bewirken, dass die Daten durch Speichervorrichtungen
16 gespeichert werden, das Schreibmodul24 bewirken, dass die Speichervorrichtungen16 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 Hostvorrichtung4 empfangenen Daten, die in die Speichervorrichtungen16 zu schreiben sind, und der Menge an tatsächlich in die Speichervorrichtungen16 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 Hostvorrichtung4 empfangen werden, in unbenutzte Blöcke oder teilweise benutzte Blöcke. Wenn zum Beispiel die Hostvorrichtung4 Daten zu der Speicherungsvorrichtung6 sendet, die nur eine kleine Änderung in Bezug auf bereits durch die Speicherungsvorrichtung6 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 Schreibmodul24 Bestimmen, an welchen physischen Orten (z.B. Blöcken) der Speichervorrichtungen16 die Daten zu schreiben sind. Zum Beispiel kann das Schreibmodul24 von dem Adressenübersetzungsmodul22 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 Schreibmodul24 einen oder mehrere Blöcke wie oben besprochen auswählen und eine Nachricht übermitteln, die bewirkt, dass die Kanalcontroller32A –32N (kollektiv „Kanalcontroller32 “) die Daten in die ausgewählten Blöcke schreiben. - Das Lesemodul
28 kann ähnlich das Lesen von Daten aus Speichervorrichtungen16 steuern. Zum Beispiel kann das Lesemodul28 eine Nachricht von der Hostvorrichtung4 empfangen, die Daten mit einer assoziierten logischen Datenadresse anfordert. Das Adressenübersetzungsmodul22 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 Lesemodul28 kann dann einen oder mehrere der Kanalcontroller32 steuern, um die Daten aus den physischen Datenadressen abzurufen. Ähnlich wie das Schreibmodul24 kann das Lesemodul28 einen oder mehrere Blöcke auswählen und eine Nachricht übermitteln, die bewirkt, dass die Kanalcontroller32 die Daten aus den ausgewählten Blöcken lesen. - Jeder Kanalcontroller der Kanalcontroller
32 kann mit einem jeweiligen Kanal der Kanäle18 verbunden sein. In einigen Beispielen kann der Controller8 dieselbe Anzahl von Kanalcontrollern32 wie die Anzahl von Kanälen18 der Speicherungsvorrichtung2 umfassen. Die Kanalcontroller32 können die innige Steuerung des Adressierens, Programmierens, Löschens und Lesens von Speichervorrichtungen16 , die mit jeweiligen Kanälen verbunden sind, durchführen, z.B. unter der Kontrolle eines oder mehrerer des Schreibmoduls24 , des Lesemoduls28 , des Wartungsmoduls30 oder des Journaling-Moduls31 . - Das Wartungsmodul
30 kann dafür ausgelegt sein, Operationen in Bezug auf Warten der Leistungsfähigkeit und Verlängern der nutzbaren Lebensdauer der Speicherungsvorrichtung6 (z.B. der Speichervorrichtungen16 ) auszuführen. Zum Beispiel kann das Wartungsmodul30 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 Speichervorrichtungen16 geschrieben werden können, bevor Blöcke abgenutzt sind und zurückgezogen werden, kann das Wartungsmodul30 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 Wartungsmodul30 kann bewirken, dass ankommende Daten von der Hostvorrichtung4 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 Speichervorrichtungen16 mit ungefähr derselben Rate abnutzt und kann die nutzbare Lebenszeit der Speicherungsvorrichtung6 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 Wartungsmodul30 die Inhalte der Blöcke von Speichervorrichtungen16 analysieren, um einen Block zu bestimmen, der einen hohen Prozentsatz ungültiger (abgestandener) Daten enthält. Das Wartungsmodul30 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 Speichervorrichtungen16 gespeichert wird, verringern und eine Anzahl freier Blöcke vergrößern, kann aber auch Schreibverstärkung und Abnutzung der Speichervorrichtungen16 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-Modul31 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 Controllers8 mehrere logische Zonen in einer L2P-Tabelle identifizieren. Das Journaling-Modul31 des Controllers8 kann unter Verwendung einer separaten Log-Liste ein Journaling jeder logischen Zone durchführen. Der Controller8 (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 Zonenmodul26 und das Journaling-Modul31 des Controllers8 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 Speicherungsvorrichtung6 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-Modul31 beliebige verfügbare Verarbeitungsressourcen zur Bildung der Log-Liste verwenden. Zum Beispiel kann das Journaling-Modul31 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-Modul31 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-Tabelle40 . Wie in4 dargestellt, ist die L2P-Tabelle40 ein lineares Array von Einträgen42a –42n (kollektiv „Einträge42 “). Der erste Eintrag der L2P-Tabelle40 ist Eintrag42a , repräsentiert durch die oberste Position der L2P-Tabelle40 . Eintrag42a gibt die PBN-Abbildung für die erste LBN an, nämlich die als „LBN_0“ indizierte LBN. Der zweite Eintrag der L2P-Tabelle40 ist Eintrag42b , repräsentiert durch die zweitoberste Position der L2P-Tabelle40 , 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-Tabelle40 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 Eintrag42n . - 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 Zeitlinie46 , gemäß der verschiedene Aspekte der vorliegenden Offenbarung beschrieben werden. Die dynamische Beschaffenheit der Abbildung von LBN auf PBN wird hier mit Bezug auf die Zeitlinie46 besprochen. Es versteht sich, dass5 , 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 in4 dargestellt, umfasst jeder der Einträge42 in der L2P-Tabelle40 jedoch nur ein 2-Tupel, das eine aktuelle PBN auf die statische LBN abbildet. Dementsprechend kann die L2P-Tabelle40 potenziell gültige Einträge nur für einen einzigen Zeitstempel (z.B. Tx-1) auf der Zeitlinie46 umfassen, abhängig davon, ob irgendwelche der Einträge42 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 Host4 einen mit LBN_0 assoziierten Schreibbefehl senden, oder das Wartungsmodul30 kann (intern in der Speicherungsvorrichtung6 ) 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-Modul31 die L2P-Tabelle40 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-Modul31 die Änderung in einer Log-Liste protokollieren und die Änderung zum Zeitpunkt des Log-Listen-Replay (z.B. beim Herauffahren der Speicherungsvorrichtung6 ) 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-Liste50 , die das Journaling-Modul31 unterhalten kann, um mit Bezug auf die L2P-Tabelle40 zu implementierende Änderungen zu protokollieren. An einem ersten Eintrag52a der Log-Liste50 hat das Journaling-Modul31 ein Tupel von LBN_0, Pbn_ForLbn0_AtTx angehängt. An einem zweiten Eintrag52b der Log-Liste50 hat das Journaling-Modul31 das Tupel von LBN_87, Pbn_ForLbn87_AtTx+1 angehängt. An einem dritten Eintrag52c der Log-Liste50 hat das Journaling-Modul31 das Tupel von LBN_1001, Pbn_ForLbn1001_AtTx+2 angehängt. An einem vierten Eintrag52d der Log-Liste50 hat das Journaling-Modul31 das Tupel von LBN_0, Pbn_ForLbn0_AtTx+3 angehängt. Das Journaling-Modul31 kann Einträge52 auf eine Weise anhängen, die dem Journaling-Modul31 später Replay der Einträge52 im Warteschlagenverfahren, im Stapelverfahren oder ad-hoc-Verfahren beim Replay ermöglicht. In einem Warteschlangenszenario kann das Journaling-Modul31 ein Replay der Einträge52 in einer FIFO-Reihenfolge (First-In-First-Out) durchführen, wie etwa durch Beginnen am Eintrag52a und sequenzielles Herunterarbeiten durch die Log-Liste50 . In einem Stapelszenario kann das Journaling-Modul31 Replay der Einträge52 in einer LIFO-Reihenfolge (Last-In-First-Out) durchführen, wie etwa durch Beginnen am Eintrag52n und sequenzielles Heraufarbeiten durch die Log-Liste50 . In einem ad-hoc-Szenario kann das Journaling-Modul31 Replay der Einträge52 in zufälliger Reihenfolge durchführen, um die L2P-Tabelle40 zu aktualisieren. - Wie gezeigt werden Einträge
52 der Log-Liste50 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-Liste50 widergespiegelten Zeitstempeln um chronologisch fortschreitende Momente, an denen das Journaling-Modul31 eine mit Bezug auf die L2P-Tabelle40 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-Liste50 ist somit insofern chronologisch, als das Journaling-Modul31 einen neuen Eintrag auf der Basis der Zeit anhängt, zu der das Journaling-Modul31 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äge52 nicht unbedingt fest ist. -
6 zeigt ein Szenario, bei dem die Log-Liste50 mehrere Einträge mit Bezug auf eine einzige LBN umfasst. Genauer gesagt umfasst die Log-Liste50 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-Liste50 repräsentieren die Einträge52a und52d beide LBN-PBN-Abbildungsänderungen für LBN_0. Der Eintrag52a repräsentiert eine PBN-Abbildungsänderung, die an Zeitstempel Tx für LBN_0 detektiert und/oder protokolliert wurde. Eintrag52d 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äge52 in der Reihenfolge von oben nach unten dargestellt, wie in6 gezeigt. Die in6 dargestellten Zeitstempel sind nicht unbedingt in Einträgen52 gespeichert, sondern sind stattdessen lediglich zur Veranschaulichung in6 enthalten. Die PBN, die in Eintrag52d auf LBN_0 abgebildet wird, repräsentiert somit eine Aktualisierung der Abbildungsänderung in Eintrag52a . Dementsprechend macht Eintrag52d den Eintrag52a veraltet oder hinfällig. Wenn keiner der dem Eintrag52d in der Tabelle50 nachfolgenden Einträge (d.h. von dem unmittelbar dem Eintrag52d nachfolgenden Eintrag bis hin zum Eintrag52n ) mit LBN_0 in Beziehung steht, repräsentiert Eintrag52d die aktuelle PBN-Abbildung für LBN_0. In diesem Fall kann beim Herauffahren der Speicherungsvorrichtung6 der Controller8 (oder können Komponenten davon, wie etwa das Adressenübersetzungsmodul22 ) die L2P-Tabelle40 aktualisieren, um die durch Eintrag52d der Log-Liste50 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 Speicherungsvorrichtung6 kann der Controller8 neue Schreibbefehle von Host4 empfangen. So, wie es in der Log-Liste50 dargestellt ist, kann der Host4 Schreibbefehle senden, die verschiedenen logischen Adressen entsprechen, die LBN_0, LBN_87 und LBN_1001 umfassen. In dem Beispiel der Log-Liste50 sendet der Host4 mehrere Schreibbefehle, die LBN_0 entsprechen. Nachdem das Journaling-Modul Eintrag52d an die Log-Liste50 anhängt, kann die Speicherungsvorrichtung6 entweder mittels eines beabsichtigten Herunterfahrens oder durch einen unerwarteten Stromversorgungsverlust Stromversorgung verlieren. Die durch die Stromversorgung11 bereitgestellte Stromversorgungs-Kapazität (ausgedrückt in Zeiteinheiten) stellt einen Stromversorgungsburst relativ kurzer Dauer bereit. Die Dauer der durch die Stromversorgung11 gewährleisteten Stromversorgungs-Kapazität ist lang genug, damit das Journaling-Modul31 die Log-Liste50 in dem nichtflüchtigen Speicherarray10 (z.B. entweder in NAND oder EEPROM) abspeichern kann. Bei einer nachfolgenden Wiederherstellung der Stromversorgung (z.B. „Einschalten“ oder „Herauffahren“) der Speicherungsvorrichtung6 iteriert (oder „läuft“ oder „schreitet“) das Adressenübersetzungsmodul22 durch die Log-Liste50 , um die L2P-Tabelle40 zu aktualisieren. - Der oben beschriebene Prozess des Iterierens durch die Log-Liste
50 zur Aktualisierung der L2P-Tabelle40 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 Zonenmodul26 mehrere (z.B. zwei oder mehr) logische Zonen in der L2P-Tabelle40 identifizieren. Genauer gesagt kann das logische Zonenmodul26 den Einzeltabellenstatus der L2P-Tabelle40 selbst nach dem Identifizieren der Zonen aufrechterhalten. -
7 zeigt eine logisch gezonte L2P-Tabelle60 . Es versteht sich, dass die logisch gezonte L2P-Tabelle60 nur einen Teil einer L2P-Tabelle repräsentieren kann. Zum Beispiel kann jedes logische Zonenmodul26 mehrere logische Zonen in einer L2P (z.B. der L2P-Tabelle40 von4 ) identifizieren, um die logisch gezonte L2P-Tabelle60 zu bilden. Die logisch gezonte L2P-Tabelle60 umfasst zwölf Einträge, die als Einträge62a –62l bezeichnet sind. In diesem konkreten Beispiel kann das logische Zonenmodul26 mehrere logische Zonen identifizieren, wobei jede logische Zone vier Einträge enthält. Wie gezeigt, umfasst die logisch gezonte L2P-Tabelle60 drei logische Zonen, die als logische Zonen64a –64c bezeichnet sind. Die Einträge62a –64d gehören zu der logischen Zone64a und werden visuell unter Verwendung von durchgezogenen Grenzen unterschieden. Die Einträge62e –62h gehören zu der logischen Zone64b und werden visuell unter Verwendung von gestrichelten Grenzen unterschieden. Die Einträge62i –62l gehören zu der logischen Zone64l und werden visuell unter Verwendung von gepunkteten Grenzen unterschieden.7 umfasst auch einen Zwischenraum alle zwei aufeinanderfolgende logische Zonen64 zur Veranschaulichung der durch das logische Zonenmodul26 identifizierten logischen Abgrenzung. Es versteht sich, dass, obwohl7 Zwischenräume zur Veranschaulichung logischer Grenzen zwischen logischen Zonen64 verwendet, die logisch gezonte L2P-Tabelle60 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 Zonenmodul26 Zonen auf „serielle“ Weise identifiziert. Genauer gesagt kann das logische Zonenmodul26 durch Auswählen zusammenhängender Blöcke oder Reihen von Einträgen62 eine einzelne Zone in der logisch gezonten L2P-Tabelle60 identifizieren. Gemäß der seriellen Implementierung der logischen Zonentechniken der vorliegenden Offenbarung kann jede Reihe von Einträgen62 einer zusammenhängenden Reihe von LBN entsprechen. Zum Beispiel repräsentiert die erste Zone, nämlich die logische Zone64a , einen zusammenhängenden Block oder eine zusammenhängende Reihe von Einträgen62a –62d . Gemäß einer seriellen Implementierung des L2P-Tabellenzonens, kann das logische Zonenmodul26 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-Tabelle60 ist das logische Zonenmodul26 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 Zonenmodul26 bestimmen, dass die logisch gezonte L2P-Tabelle60 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 Zonenmodul26 bestimmen, dass jede identifizierte Zone vier Einträge umfassen wird. Auf der Grundlage, dass das logische Zonenschema für die logische L2P-Tabelle60 das serielle Zonenschema ist, kann das logische Zonenmodul26 jede der logischen Zonen64 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 Zonenmodul26 jede logische Zone64 in der logisch gezonten L2P-Tabelle60 identifizieren. Zusätzlich kann das Journaling-Modul31 die Techniken der vorliegenden Offenbarung implementieren, um für jede der durch das logische Zonenmodul26 identifizierten logischen Zonen64 eine getrennte Log-Liste zu bilden und zu unterhalten. Der Controller8 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 Zonenmodul26 und das Journaling-Modul31 dem Controller8 ein gleichzeitiges Replay von Log-Listen für verschiedene Teile der logisch gezonten L2P60 ermöglichen, um dadurch die Herauffahrzeit der Speicherungsvorrichtung6 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-Tabelle60 kann das logische Zonenmodul26 einen oder mehrere potenzielle Vorteile bereitstellen. Zum Beispiel kann das logische Zonenmodul26 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-Modul31 ö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 Host4 Schreiboperationen auf lokalisierte Weise ausführt, kann eine bestimmte Zone des nichtflüchtigen Speicherarrays10 ö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 Speicherarray10 gemäß dem seriellen Zonenschema unter dauerhaftem Gebrauch länger halten. -
8 zeigt ein weiteres Beispiel für die gezonte L2P-Tabelle60 . In dem Beispiel von8 kann das logische Zonenmodul26 Zonen64 gemäß einem verschachtelten Zonenschema identifizieren. Im Gegensatz zu dem mit Bezug auf7 dargestellten seriellen Zonenschema kann das logische Zonenmodul26 das verschachtelte Zonenschema implementieren, um die identifizierten Zonen gleichmäßig über die Ursprungs-L2P-Tabelle zu verteilen. Ähnlich wie7 umfasst8 Zwischenräume zwischen verschiedenen Zonen lediglich zu Anschauungszwecken, und es versteht sich, dass die gezonte L2P-Tabelle60 von8 auch eine einzige zusammenhängende monolithische Tabelle repräsentiert. - Die logischen Zonen
64 sind in8 lediglich zu Veranschaulichungszwecken nicht explizit herausgestellt. Die logischen Zonen64 werden jedoch visuell unter Verwendung desselben in7 verwendeten Grenzenschemas unterschieden. Genauer gesagt gehören beliebige der mit einer durchgezogenen Grenze dargestellten Einträge62 zu der logischen Zone64a , beliebige der Einträge62 , die mit einer gestrichelten Grenze dargestellt sind, gehören zu der logischen Zone64b und beliebige der Einträge62 , die mit einer gepunkteten Grenze dargestellt sind, gehören zu der logischen Zone64c . Wie gezeigt gehört ein erster Eintrag (62a ) der gezonten L2P-Tabelle62 zu der logischen Zone64a , der zweite Eintrag (62b ) gehört zu der logischen Zone64b und der dritte Eintrag (62c ) gehört zu der logischen Zone64c . Beginnend an dem vierten Eintrag62d (der zu der logischen Zone62a , derselben logischen Zone wie der erste Eintrag62a , gehört), wiederholt sich die logische Zonenzuweisung. Gemäß der verschachtelten Zonenimplementierung kann das logische Zonenmodul26 somit logische Zonen64 so identifizieren, dass keine zwei aufeinanderfolgenden Einträge der Einträge62 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 Zonen64 Einträge62 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 Zonenmodul26 kann seinerseits bestimmen, dass alle Einträge62 , die ein bestimmtes Ergebnis (einen bestimmten Rest) aus der mod-Operation produzieren, zu einer einzigen logischen Zone der logischen Zonen64 gehören. - Als Fortsetzung des mit Bezug auf
7 besprochenen Dreizonenbeispiels kann das logische Zonenmodul26 unter Verwendung des LBN-Index jedes der Einträge62 und eines Werts von drei eine jeweilige modulo-Operation ausführen. Dementsprechend kann das logische Zonenmodul26 die Operation 0%3 für Eintrag62a , die Operation 1%3 für Eintrag62b , die Operation 2%3 für Eintrag62c , die Operation 3%3 für Eintrag62d und so weiter ausführen. Somit kann das logische Zonenmodul26 Werte von null (0) für die Einträge62a ,62d und62g erhalten. Das logische Zonenmodul26 kann resultierende Werte von eins (1) für die Einträge62b ,62e und62h erhalten. Das logische Zonenmodul26 kann resultierende Werte von zwei (2) für die Einträge62c ,62f und62i erhalten. Auf der Basis der Ergebnisse der mod-Operationen kann das logische Zonenmodul26 die logische Zone64a als Einträge62a ,62d und62g enthaltend identifizieren. Ähnlich kann das logische Zonenmodul26 die logische Zone64b als Einträge62b ,62e und62h enthaltend identifizieren und kann die logische Zone64c als Einträge62c ,62f und62i enthaltend identifizieren. Das Journaling-Modul31 kann seinerseits für jede der logischen Zonen64 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-Modul31 ) einen oder mehrere potenzielle Vorteile bereitstellen. Zum Beispiel kann die verschachtelte Implementierung dem Controller8 ermöglichen, beim Zugriff auf das nichtflüchtige Speicherarray10 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 Speicherarrays10 gespeicherte Daten zugegriffen wird. Der Controller8 kann die hier beschriebenen verschachtelten Zonentechniken wirksam einsetzen, um den Zugriff auf Teile des nichtflüchtigen Speicherarrays10 gleichmäßiger zu verteilen. Anders ausgedrückt, kann der Controller8 auf weniger lokalisierte oder lokalintensive Weise auf die verschiedenen Speichervorrichtungen16a 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 Zonenmodul26 dafür ausgelegt sein, in allen Szenarien das verschachtelte logische Zonenschema auszuführen. In noch weiteren Beispielen kann das logische Zonenmodul26 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 Zonenmodul26 die L2P-Tabellenzonentechniken der vorliegenden Offenbarung auf vielfältige Weisen implementieren, um die Herauffahrleistungsfähigkeit der Speicherungsvorrichtung6 zu verbessern und verschiedene Vorteile für den Betrieb der Speicherungsvorrichtung6 bereitzustellen. - Obwohl sowohl
7 als auch8 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 Speicherarrays10 zunimmt. Im vorliegenden Gebrauch bezieht sich „Heraufskalieren“ auf das Hinzufügen von mehr Speicherungskapazität zu dem nichtflüchtigen Speicherarray10 , ohne Controllerinfrastruktur zu dem Controller8 hinzuzufügen. Im vorliegenden Gebrauch bezieht sich „Ausskalieren“ auf das Hinzufügen von mehr Speicherungskapazität zu dem nichtflüchtigen Speicherarray10 , einhergehend mit Hinzufügung von mehr Controllerinfrastruktur zu dem Controller8 . Als Veranschaulichung haben typische Speicherungskapazitäten von ungefähr62 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 und9B zeigen Beispiele für zonenspezifische Log-Listen70a und70b , die das Journaling-Modul31 unterhalten kann, gemäß verschiedenen Aspekten der vorliegenden Offenbarung. Die zonenspezifischen Log-Listen70a und70b entsprechen dem in7 dargestellten logischen Zonenschema. Genauer gesagt kann das Journaling-Modul31 die zonenspezifischen Log-Listen70a und70b in einem Fall bilden und unterhalten, in dem das logische Zonenmodul26 ein serielles logisches Zonenschema verwendet, um Zonen in einer L2P-Tabelle zu identifizieren. Die spezifischen Beispiele für die zonenspezifischen Log-Listen70a und70b entsprechen jeweils den mit Bezug auf die in7 dargestellte bezonte L2P-Tabelle60 dargestellten Zonen64a und64b . Die Zonenkennungen für die logischen Zonen64a und64b sind in9A und9B mit gestrichelten Linien dargestellt, um anzugeben, dass die logischen Zonen64a und64b eine L2P-Tabelle (nämlich die logisch gezonte L2P-Tabelle60 ) betreffen und dementsprechend in keiner der zonenspezifischen Log-Listen70a oder70b irgendein Zonen oder irgendeine Identifikation repräsentieren. - Wie in
9A gezeigt, umfasst die zonenspezifische Log-Liste70a Einträge72a –72c , die nur LBN entsprechen, die in die logischen Indizes fallen, die in der logischen Zone64a enthalten sind. Genauer gesagt betreffen alle Einträge72a –72c der zonenspezifischen Log-Liste70a eines von LBN_0, LBN_1, LBN_2 oder LBN_3. In dem spezifischen Beispiel von9A , der zonenspezifischen Log-Liste70a , sind zwei Abbildungsaktualisierungen für LBN_0 und eine Abbildungsaktualisierung für LBN_2 eingetragen. Wie gezeigt, werden die Einträge72a –72c in chronologischer Reihenfolge angehängt, beginnend vom Zeitstempel Tx und bis zum Zeitstempel Tx+3. Falls und wenn das Journaling-Modul31 nachfolgende Abbildungsänderungen in der logischen Zone64a detektiert, kann das Journaling-Modul31 zusätzliche Einträge an die zonenspezifische Log-Liste70a anhängen. Das spezifische Beispiel für die zonenspezifische Log-Liste70a umfasst keine Einträge für LBN_1 oder für LBN_3, die beide in der logischen Zone64a enthalten sind. Das Journaling-Modul31 kann jedoch diese LBN-Indizes betreffende Einträge anhängen, falls und wenn das Journaling-Modul31 PBN-Abbildungsänderungen für diese LBN-Indizes detektiert. - Wie in
9B gezeigt, umfasst die zonenspezifische Log-Liste70b Einträge72d –72f , die alle LBN-Indizes in der logischen Zone64b betreffen. Genauer gesagt betreffen alle Einträge72d –72f der zonenspezifischen Log-Liste70b eines von LBN_4, LBN_5, LBN_6 oder LBN_7. Der Controller8 kann die Techniken der vorliegenden Offenbarung zum parallelen Replay der zonenspezifischen Log-Listen72 implementieren. Zum Beispiel kann der Controller8 über den Host4 verfügbare Mehrkern-Verarbeitungsfähigkeiten wirksam zum gleichzeitigen Replay von Teilen der zonenspezifischen Log-Listen72 einsetzen, um die gezonte L2P-Tabelle60 zu rekonstruieren. Verglichen mit existierender Log-Listen-Replay-Technologie ermöglichen die Techniken der vorliegenden Offenbarung dem Controller8 , gleichzeitig zwei oder mehr Aktualisierungen der Zonen-L2P-Tabelle60 zu implementieren. Durch Parallelisieren des Replay der zonenspezifischen Log-Listen72 kann der Controller8 die Techniken der vorliegenden Offenbarung implementieren, um den Prozess der Tabellenrekonstruktion bei jedem Herauffahren der Speicherungsvorrichtung6 zu beschleunigen. Außerdem kann der Controller8 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 Prozesses80 , den eine Vorrichtung ausführen kann, um einen oder mehrere Aspekte der vorliegenden Offenbarung zu implementieren. Obwohl vielfältige Vorrichtungen den Prozess80 und dafür relevante Schritte ausführen können, wird der Prozess80 hier als nichteinschränkendes Beispiel als durch den Controller8 und eine oder mehrere seiner Komponenten ausgeführt beschrieben. Verschiedene Schritte werden als an dem nichtflüchtigen Speicherarray10 ausgeführt beschrieben. Der Prozess80 kann beginnen, wenn der Controller8 eine L2P-Tabelle bildet, die mehrere Abbildungen (82 ) von LBN auf PBN umfasst. Zum Beispiel kann das Adressenübersetzungsmodul22 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 Zonenmodul26 mehrere Zonen innerhalb der L2P-Tabelle (84 ) identifizieren. In einem vereinfachten Beispiel kann das logische Zonenmodul26 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 Zonenmodul26 identifizierten logischen Zonen enthalten sein. Bei verschiedenen Implementierungen kann das logische Zonenmodul26 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-Modul31 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-Modul31 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-Modul31 beim Herauffahren der Speicherungsvorrichtung6 (88 ) parallel ein Replay von Teilen der mehreren Log-Listen durchführen. Zum Beispiel kann das Journaling-Modul31 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-Modul31 auf mehrere Prozessoren oder mehrere Kerne eines einzelnen Prozessors zurückgreifen, um das Replay der zonenspezifischen Log-Listen70a und70b gleichzeitig zu parallelisieren. Es versteht sich, dass das Journaling-Modul31 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-Modul31 an jedem Zeitpunkt ein Replay von mehreren Log-Listen durchführen oder nicht, und das Journaling-Modul31 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Vorrichtung nach Anspruch 10, wobei die Datenspeicherungsvorrichtung ein SSD (Solid State Drive) umfasst.
- 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.
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)
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)
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 |
-
2016
- 2016-05-05 US US15/147,465 patent/US9940261B2/en active Active
-
2017
- 2017-02-28 CN CN201710114789.7A patent/CN107346290B/zh active Active
- 2017-02-28 DE DE102017104125.7A patent/DE102017104125B4/de active Active
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 |