DE102017104150A1 - Abnutzungsausgleich in Speichervorrichtungen - Google Patents
Abnutzungsausgleich in Speichervorrichtungen Download PDFInfo
- Publication number
- DE102017104150A1 DE102017104150A1 DE102017104150.8A DE102017104150A DE102017104150A1 DE 102017104150 A1 DE102017104150 A1 DE 102017104150A1 DE 102017104150 A DE102017104150 A DE 102017104150A DE 102017104150 A1 DE102017104150 A1 DE 102017104150A1
- Authority
- DE
- Germany
- Prior art keywords
- logical block
- block address
- address collection
- value
- write counter
- 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
- 230000004044 response Effects 0.000 claims abstract description 40
- 230000001052 transient effect Effects 0.000 claims description 164
- 238000000034 method Methods 0.000 claims description 49
- 230000002085 persistent effect Effects 0.000 claims description 20
- 238000013497 data interchange Methods 0.000 claims description 9
- 238000013500 data storage Methods 0.000 claims description 3
- 238000009825 accumulation Methods 0.000 claims 1
- 230000015654 memory Effects 0.000 abstract description 38
- 230000008569 process Effects 0.000 description 15
- 208000019585 progressive encephalomyelitis with rigidity and myoclonus Diseases 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 239000007787 solid Substances 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000012005 ligant binding assay Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000004146 energy storage Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920001485 poly(butyl acrylate) polymer Polymers 0.000 description 2
- 230000009467 reduction Effects 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
- 239000003990 capacitor Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007850 degeneration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003628 erosive effect Effects 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
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000003936 working memory Effects 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/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
- 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
-
- 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/1028—Power efficiency
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/656—Address space sharing
-
- 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/657—Virtual address space management
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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
-
- 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/7211—Wear leveling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
- TECHNISCHES GEBIET
- Diese Offenbarung betrifft eine Datenspeicherverwaltung.
- STAND DER TECHNIK
- Festkörperlaufwerke (SSDs) können in Computer in Anwendungen verwendet werden, bei denen eine relativ geringe Latenzzeit und eine Speicherung mit hoher Kapazität gewünscht werden. Zusätzlich können SSDs mehrere parallele Datenkanäle zum Lesen von und zum Schreiben auf Arbeitsspeichervorrichtungen einsetzen, was in hohen sequenziellen Lese- und Schreibgeschwindigkeiten resultieren kann.
- SSDs können nichtflüchtige Arbeitsspeichervorrichtungen (NVM-Vorrichtungen) wie Flash-, PCM-, ReRAM- oder MRAM-Arbeitsspeichervorrichtungen einsetzen. In einigen Beispielen kann ein SSD Daten häufiger in eine bestimmte Arbeitsspeichervorrichtung schreiben, als die SSD Daten in andere Arbeitsspeichervorrichtungen schreibt. Das häufige Schreiben von Daten in NVM-Vorrichtungen in vielen Schreibvorgängen kann physische Änderungen an der NVM-Arbeitsspeichervorrichtung hervorrufen, die bewirken können, dass die NVM-Arbeitsspeichervorrichtung die Fähigkeit verliert, Daten zu speichern. Einige SSDs setzen Abnutzungsausgleichstechniken ein, um zu verhindern, dass eine bestimmte NVM-Arbeitsspeichervorrichtung viel häufiger als andere NVM-Arbeitsspeichervorrichtungen beschrieben wird, in einem Versuch, die Lebensdauer der NVM-Arbeitsspeichervorrichtungen zu verlängern.
- KURZFASSUNG
- In einem Beispiel enthält ein System eine Vielzahl von Arbeitsspeichervorrichtungen und einen Prozessor. Die Vielzahl der Arbeitsspeichervorrichtungen enthält eine Vielzahl von physischen Positionen, an denen Daten gespeichert sind. Der Prozessor kann konfiguriert sein, auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, zu ermitteln, ob physische Positionen von an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und physische Positionen von an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind. Der Wert des ersten transienten Schreibvorgangszählers kann gleich einer Anzahl von Malen sein, die Daten seit einem vorangehenden, die erste logische Blockadressensammlung involvierenden Datenaustausch in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers kann gleich einer Anzahl von Malen sein, die Daten seit einem vorangehenden, die zweite logische Blockadressensammlung involvierenden Datenaustausch in die zweite logische Blockadressensammlung geschrieben wurden. Der Prozessor kann ferner konfiguriert sein, als Reaktion auf ein Ermitteln, dass die physischen Positionen der an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind, die physischen Positionen der an den logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen.
- In einem anderen Beispiel kann ein Verfahren ein Ermitteln auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, ob physische Positionen von in der ersten logischen Blockadressensammlung gespeicherten Daten und physische Positionen von in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind, durch einen Prozessor enthalten. Der Wert des ersten transienten Schreibvorgangszählers kann gleich einer Anzahl von Malen sein, die Daten seit einem vorangehenden, die erste logische Blockadressensammlung involvierenden Datenaustausch in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers kann gleich einer Anzahl von Malen sein, die Daten seit einem vorangehenden, die zweite logische Blockadressensammlung involvierenden Datenaustausch in die zweite logische Blockadressensammlung geschrieben wurden. Das Verfahren kann ferner als Reaktion auf ein Ermitteln, dass die physischen Positionen der an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind, ein Bewirken durch den Prozessor enthalten, dass die physischen Positionen der an den logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten ausgetauscht werden.
- In einem anderen Beispiel speichert ein computerlesbares Speichermedium Anweisungen, die bewirken, wenn sie ausgeführt werden, dass ein Prozessor auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, ermittelt, ob physische Positionen von in einer ersten logischen Blockadressensammlung einer Speichervorrichtung gespeicherten Daten und physische Positionen von in einer zweiten logischen Blockadressensammlung einer Speichervorrichtung gespeicherten Daten auszutauschen sind. Der Wert des ersten transienten Schreibvorgangszählers kann gleich einer Anzahl von Malen sein, die Daten seit einem vorangehenden, die erste logische Blockadressensammlung involvierenden Datenaustausch in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers kann einer Anzahl von Malen gleich sein, die Daten seit einem vorangehenden, die zweite logische Blockadressensammlung involvierenden Datenaustausch in die zweite logische Blockadressensammlung geschrieben wurden. Die Anweisungen können ferner als Reaktion auf das Ermitteln, dass die physischen Positionen der an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind, bewirken, dass der Prozessor bewirkt, dass die physischen Positionen der an den logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten ausgetauscht werden.
- Die Details eines oder mehrerer Beispiele werden in den beigefügten Zeichnungen und der Beschreibung unten dargelegt. Andere Eigenschaften, Aufgaben und Vorteile werden aus der Beschreibung und den Zeichnungen und aus den Ansprüchen ersichtlich.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein konzeptionelles und schematisches Blockdiagramm, das ein Beispielsystem illustriert, das eine mit einer Hostvorrichtung verbundene Speichervorrichtung enthält. -
2 ist ein konzeptionelles Blockdiagramm, das eine beispielhafte Arbeitsspeichervorrichtung nach einer oder mehreren Techniken dieser Offenbarung illustriert. -
3 ist ein konzeptionelles und schematisches Blockdiagramm, das einen Beispielcontroller illustriert. -
4A –4B sind konzeptionelle und schematische Blockdiagramme, die beispielhafte Details einer Schreibvorgangszählertabelle nach einer oder mehreren Techniken dieser Offenbarung illustrieren. -
5 ist ein Ablaufdiagramm, das beispielhafte Abnutzungsausgleichsvorgänge eines Festkörperlaufwerks illustriert. -
6 ist ein Ablaufdiagramm, das beispielhafte Abnutzungsausgleichsvorgänge eines Festkörperlaufwerks illustriert. - DETAILLIERTE BESCHREIBUNG
- Die Offenbarung beschreibt Techniken zum Durchführen eines Abnutzungsausgleichs für eine Speichervorrichtung, wie ein Festkörperlaufwerk (SSD), die helfen können, die Langlebigkeit der Speichervorrichtung zu erhöhen. Eine Speichervorrichtung kann eine Vielzahl an Arbeitsspeichervorrichtungen enthalten, die jeweils eine Vielzahl an physischen Blöcken enthalten. Eine Hostvorrichtung, die Daten auf der Speichervorrichtung speichert, kann logische Blockadressen einsetzen, die die Speichervorrichtung unter Verwendung z. B. einer Umleitungs- oder Logisch-zu-physisch-Tabelle in physische Blockadressen übersetzt. Bei den hierin beschriebenen Abnutzungsausgleichstechniken können Sätze von logischen Blockadressen in einer logischen Blockadressensammlung assoziiert sein. Ein Prozessor, wie ein Prozessor im Controller der Speichervorrichtung, kann einen mit jeder logischen Blockadressensammlung assoziierten Schreibvorgangszähler pflegen und kann Daten zwischen physischen Blockadressen, die mit verschiedenen logischen Blockadressensammlungen assoziiert sind, auf Basis des Werts des Schreibvorgangszählers für die jeweilige logische Blockadressensammlung austauschen. Auf Basis des Schreibvorgangszählers der jeweiligen logischen Blockadressensammlung kann der Prozessor ermitteln, ob Daten von der jeweiligen logischen Blockadressensammlung in physische Blockadressen auszutauschen sind, die mit logischen Blockadressen in einer anderen logischen Blockadressensammlung assoziiert sind, um Schreibvorgänge über logische Blockadressensammlungen hinweg auszugleichen.
- Der Schreibvorgangszähler kann zum Beispiel ein transienter Schreibvorgangszähler sein und kann eine Zählung von Schreibvorgängen sein, die mit der jeweiligen logischen Blockadressensammlung seit dem letzten Mal assoziiert sind, zu dem Daten von der jeweiligen logischen Blockadressensammlung mit Daten von einer anderen logischen Blockadressensammlung ausgetauscht wurden. Ein hoher Wert des transienten Schreibvorgangszählers zeigt deshalb an, dass die jeweilige logische Blockadressensammlung seit dem letzten Datenaustausch häufig beschrieben wurde. In einigen Fällen kann dies darauf hinweisen, dass die jeweilige logische Blockadressensammlung in der nahen Zukunft häufig beschrieben wird, sodass ein Austausch der Daten, die an logischen Blockadressen in der jeweiligen logischen Blockadressensammlung gespeichert sind, an physische Blockadressen, die mit logischen Blockadressen in einer anderen logischen Blockadressensammlung assoziiert sind, effektiv Schreibvorgänge über die physischen Blockadressen der Arbeitsspeichervorrichtungen verbreiten wird. Deshalb kann der Prozessor physische Positionen (physische Blockadressen) von Daten von der jeweiligen logischen Blockadressensammlung mit physischen Positionen (physischen Blockadressen) von Daten von einer anderen logischen Blockadressensammlung austauschen, die einen niedrigeren Wert des transienten Schreibvorgangszählers aufweist. In einigen Beispielen kann der Prozessor zusätzlich dazu, die Ermittlung auf den Wert des transienten Schreibvorgangszählers zu basieren, die Ermittlung, ob Daten zwischen physischen, mit verschiedenen logischen Blockadressensammlungen assoziierten Positionen auszutauschen sind, auch auf einem permanenten Schreibvorgangszählwert basieren, der eine Anzahl an Schreibvorgängen in eine logische Blockadressensammlung vor dem letzten Datenaustausch nachverfolgt, der die logische Blockadressensammlung involviert.
- Ein Pflegen von Schreibvorgangszählern für logische Blockadressensammlungen anstatt für einzelne logische Blöcke kann im Vergleich zum Pflegen von Schreibvorgangszählern für jeweils jeden logischen Block weniger Mehraufwand an Platz verbrauchen. Gleichermaßen kann das Pflegen von Schreibvorgangszählern für logische Blocksammlungen anstatt eines fortlaufenden Austauschens von Daten zwischen physischen Blöcken eine Anzahl von Schreibvorgängen für jeden physischen Block reduzieren, während gleichzeitig ein ausreichender Abnutzungsausgleich bereitgestellt wird. Durch Verwenden eines geringeren Mehraufwands an Platz für die Schreibvorgangszähler und weniger häufiges Bewegen von Daten zwischen physischen Blöcken der Speichervorrichtung können Techniken der Offenbarung die Langlebigkeit und Leistung der Speichervorrichtung verbessern.
- In einigen Beispielen kann der Prozessor zusätzlich und optional physische Positionen (z. B. physische Blöcke) von Daten innerhalb einer logischen Blocksammlung neu anordnen, um die Wahrscheinlichkeit zu reduzieren, dass Daten viel häufiger an eine bestimmte physische, mit der logischen Blockadressensammlung assoziierte Position geschrieben werden als an andere physische Positionen, die mit der logischen Blockadressensammlung assoziiert sind. Durch Bewegen der physischen Positionen von Daten innerhalb einer bestimmten logischen Blockadressensammlung können Techniken dieser Offenbarung die Wahrscheinlichkeit reduzieren, dass sich bestimmte physische, mit einer logischen Blockadressensammlung assoziierte Positionen vorzeitig abnutzen.
-
1 ist ein konzeptionelles und schematisches Blockdiagramm, das eine beispielhafte Speicherumgebung2 illustriert, in der Speichervorrichtung6 als eine Speichervorrichtung für Hostvorrichtung4 funktioniert, nach einer oder mehreren Techniken dieser Offenbarung. Die Hostvorrichtung4 kann beispielsweise nichtflüchtige, in der Speichervorrichtung6 enthaltene Arbeitsspeichervorrichtungen einsetzen, um Daten zu speichern und abzurufen. In einigen Beispielen kann die Speicherumgebung2 eine Vielzahl von Speichervorrichtungen enthalten, wie die Speichervorrichtung6 , die als ein Speicherarray arbeiten können. Die Speicherumgebung2 kann zum Beispiel eine Vielzahl von Speichervorrichtungen6 enthalten, die als ein redundantes Array von günstigen/unabhängigen Platten (RAID) konfiguriert sind, die zusammen als eine Massenspeichervorrichtung für die Hostvorrichtung4 funktionieren. - Die Speicherumgebung
2 kann die Hostvorrichtung4 enthalten, die Daten auf einer oder mehreren Speichervorrichtungen wie der Speichervorrichtung6 speichern und/oder von diesen abrufen kann. Wie in1 illustriert, kann die Hostvorrichtung4 mit der Speichervorrichtung6 über eine Schnittstelle14 kommunizieren. Die Hostvorrichtung4 kann Beliebige aus einem breiten Bereich von Vorrichtungen enthalten, einschließlich Computerserver, NAS(Network Attached Storage)-Einheiten, Desktop-Computer, Notebook-Computer (d. h., Laptop-Computer), Tablet-Computer, Set-Top-Boxen, Fernsprechhandapparate wie sogenannte „Smartphones”, sogenannte „Smartpads”, Fernseher, Kameras, Anzeigevorrichtungen, digitaler Mediaplayer, Videospielkonsolen, einer Videostreamingvorrichtung und Ähnlichem. - Wie in
1 illustriert, kann die Speichervorrichtung6 einen Controller8 , ein nichtflüchtiges Speicherarray10 (NVMA10 ), eine Energieversorgung11 , einen flüchtigen Arbeitsspeicher12 und eine Schnittstelle14 enthalten. In manchen Beispielen kann die Speichervorrichtung6 zusätzliche Komponenten enthalten, die in1 der Klarheit halber nicht gezeigt sind. Zum Beispiel kann die Speichervorrichtung6 eine Leiterplatte (PB), an der Komponenten der Speichervorrichtung6 mechanisch angebracht sind und die elektrisch leitende Spuren enthält, die Komponenten der Speichervorrichtung6 elektrisch miteinander verbinden, oder Ähnliches enthalten. In manchen Beispielen können die physischen Abmessungen und Anschlusskonfigurationen der Speichervorrichtung6 einem oder mehreren Standardformfaktoren entsprechen. Einige beispielhafte Standardformfaktoren enthalten unter anderem ein 3,5-Zoll-Festplattenlaufwerk (HDD), ein 2,5-Zoll-HDD, ein 1,8-Zoll-HDD, Peripheral Component Interconnect (PCI), PCI-Extended (PCI-X), PCI-Express (PCIe) (z. B. PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI usw.), M.2 oder Ähnliches. In einigen Beispielen kann die Speichervorrichtung6 direkt an eine Leiterplatine der Hostvorrichtung4 gekoppelt (z. B. direkt gelötet) sein. - Die Speichervorrichtung
6 kann die Schnittstelle14 zum Ankoppeln mit der Hostvorrichtung4 enthalten. Die Schnittstelle14 kann einen oder beide der folgenden Busse enthalten: einen Datenbus zum Austauschen von Daten mit der Hostvorrichtung4 und einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung4 . Die Schnittstelle14 kann in Übereinstimmung mit irgendeinem geeigneten Protokoll arbeiten. Die Schnittstelle14 kann zum Beispiel in Übereinstimmung mit einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel, Small Computer System Interface (SCSI), Serially Attached SCSI (SAS), Peripheral Component Interconnect (PCI), PCI-Express, Non-Volatile Memory Express (NVMe) oder Ähnliches. Die elektrische Verbindung der Schnittstelle14 (z. B. der Datenbus, der Steuerbus oder beide) ist elektrisch mit dem Controller8 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung4 und dem Controller8 bereit, was erlaubt, dass Daten zwischen der Hostvorrichtung4 und dem Controller8 ausgetauscht werden. In manchen Beispielen kann die elektrische Verbindung der Schnittstelle14 auch der Speichervorrichtung6 erlauben, Energie von der Hostvorrichtung4 zu empfangen. - Die Speichervorrichtung
6 enthält das NVMA10 , das eine Vielzahl von Arbeitsspeichervorrichtungen16Aa –16Nn (zusammen „Arbeitsspeichervorrichtungen16 ”) enthält. Jede der Arbeitsspeichervorrichtungen16 kann konfiguriert sein, Daten zu speichern und/oder abzurufen. Eine Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen16 kann zum Beispiel Daten und eine Nachricht vom Controller8 empfangen, die die Arbeitsspeichervorrichtung anweist, die Daten zu speichern. Gleichermaßen kann die Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen16 eine Nachricht vom Controller8 empfangen, die die Arbeitsspeichervorrichtung anweist, Daten abzurufen. In einigen Beispielen kann jede der Arbeitsspeichervorrichtungen16 als ein Die bezeichnet werden. In einigen Beispielen kann ein einziger physischer Chip eine Vielzahl von Dies enthalten (d. h. eine Vielzahl von Arbeitsspeichervorrichtungen16 ). In einigen Beispielen kann jede der Arbeitsspeichervorrichtungen16 konfiguriert sein, relativ große Datenmengen 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 Arbeitsspeichervorrichtungen
16 einen beliebigen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen enthalten. Einige Beispiele von Arbeitsspeichervorrichtungen16 enthalten unter anderem Flasharbeitsspeichervorrichtungen (z. B. NAND oder NOR), Phasenwechsel-Arbeitsspeichervorrichtungen (PCM-Vorrichtungen), resistive Arbeitsspeichervorrichtungen mit wahlfreiem Zugriff (ReRAM-Vorrichtungen), magnetoresistive Arbeitsspeichervorrichtungen mit wahlfreiem Zugriff (MRAM-Vorrichtungen), ferroelektrische Arbeitsspeichervorrichtungen mit wahlfreiem Zugriff (F-RAM-Vorrichtungen), holografische Arbeitsspeichervorrichtungen und einen beliebigen anderen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen. Im Gegensatz zu Flasharbeitsspeichervorrichtungen benötigen PCM-Vorrichtungen, ReRAM-Vorrichtungen, MRAM-Vorrichtungen und F-RAM-Vorrichtungen möglicherweise keine Wiedergewinnung von veralteten Blöcken (z. B. automatische Speicherbereinigung), können jedoch trotzdem einen Abnutzungsausgleich einsetzen, um Auswirkungen von beschränkter Schreibbeständigkeit einzelner Arbeitsspeicherzellen zu reduzieren. - In einigen Beispielen können die Arbeitsspeichervorrichtungen
16 Flasharbeitsspeichervorrichtungen enthalten. Flasharbeitsspeichervorrichtungen können NAND- oder NOR-basierte Flasharbeitsspeichervorrichtungen enthalten und können Daten auf Basis einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flashspeicherzelle beinhaltet ist. In NAND-Flasharbeitsspeichervorrichtungen kann die Flasharbeitsspeichervorrichtung in eine Vielzahl von Blöcken gegliedert sein, die in eine Vielzahl von Seiten gegliedert sein können. Jeder Block der Vielzahl von Blöcken in einer bestimmten Arbeitsspeichervorrichtung kann eine Vielzahl von NAND-Zellen enthalten. Zeilen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch verbunden sein, um eine Seite aus einer Vielzahl von Seiten zu definieren. Die jeweiligen Zellen in jeder der Vielzahl von Seiten können elektrisch jeweils mit Bitleitungen verbunden sein. In einigen Beispielen kann der Controller8 auf Seitenebene Daten in die NAND-Flasharbeitsspeichervorrichtungen schreiben und daraus lesen und Daten aus den NAND-Flasharbeitsspeichervorrichtungen auf Blockebene löschen. Zusätzliche Details der Arbeitsspeichervorrichtungen16 werden unten in Bezug auf2 besprochen. - In manchen Beispielen kann es für den Controller
8 nicht praktikabel sein, separat mit jeder Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen16 verbunden zu sein. Als solche können die Verbindungen zwischen den Arbeitsspeichervorrichtungen16 und dem Controller8 gebündelt sein. Als ein Beispiel können die Arbeitsspeichervorrichtungen16 in Kanäle18A –18N (kollektiv „Kanäle18 ”) gruppiert sein. Zum Beispiel, wie in1 illustriert, können die Arbeitsspeichervorrichtungen16Aa –16An in einen ersten Kanal18A gruppiert sein, und die Arbeitsspeichervorrichtungen16Na –16Nn können in einen N-ten Kanal18N gruppiert sein. Die in jeden der Kanäle18 gruppierten Arbeitsspeichervorrichtungen16 können sich eine oder mehrere Verbindungen mit dem Controller8 teilen. Zum Beispiel können die Arbeitsspeichervorrichtungen16 , die in den ersten Kanal18A gruppiert sind, mit einem gemeinsamen E/A-Bus und einem gemeinsamen Steuerbus verbunden sein. Die Speichervorrichtung6 kann für jeden Kanal der Kanäle18 jeweils einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus enthalten. In manchen Beispielen kann jeder Kanal der Kanäle18 einen Satz Chipfreigabeleitungen (CE-Leitungen) enthalten, die zur Bündelung von Arbeitsspeichervorrichtungen auf jedem Kanal verwendet werden können. Jede CE-Leitung kann zum Beispiel mit einer entsprechenden Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen18 verbunden sein. Auf diese Weise kann die Anzahl der separaten Verbindungen zwischen dem Controller8 und den Arbeitsspeichervorrichtungen18 reduziert werden. Zusätzlich, da jeder Kanal einen unabhängigen Satz von Verbindungen mit dem Controller8 aufweist, kann die Reduktion an Verbindungen die Datendurchsatzrate nicht wesentlich beeinflussen, da der Controller8 gleichzeitig unterschiedliche Befehle an jeden Kanal erteilen kann. - Die Speichervorrichtung
6 kann eine Energieversorgung11 enthalten, die eine oder mehrere Komponenten der Speichervorrichtung6 mit Energie versorgen kann. Beim Betrieb in einem Standardmodus kann die Energieversorgung11 unter Verwendung von Energie, die von einer externen Vorrichtung wie der Hostvorrichtung4 bereitgestellt wird, die eine oder die mehreren Komponenten mit Energie versorgen. Die Energieversorgung11 kann zum Beispiel die eine oder die mehreren Komponenten unter Verwendung von Energie, die von der Hostvorrichtung4 über die Schnittstelle14 empfangen wurde, mit Energie versorgen. In einigen Beispielen kann die Energieversorgung11 eine oder mehrere Energiespeicherkomponenten enthalten, die konfiguriert sind, bei Betrieb in einem Abschaltmodus, wenn zum Beispiel keine Energie mehr von der externen Vorrichtung mehr empfangen wird, die eine oder die mehreren Komponenten mit Energie zu versorgen. Auf diese Weise kann die Energieversorgung11 als eine interne Backup-Energiequelle fungieren. Einige Beispiele der einen oder der mehreren Energiespeicherkomponenten enthalten unter anderem Kondensatoren, Superkondensatoren, Batterien und Ähnliches. - Die Speichervorrichtung
6 kann auch einen flüchtigen Arbeitsspeicher12 enthalten, der vom Controller8 verwendet werden kann, um Informationen zu speichern. In einigen Beispielen kann der Controller8 den flüchtigen Arbeitsspeicher12 als einen Zwischenspeicher verwenden. Der Controller8 kann zum Beispiel zwischengespeicherte Informationen im flüchtigen Arbeitsspeicher12 speichern, bis die zwischengespeicherten Informationen in die Arbeitsspeichervorrichtungen16 geschrieben werden. Der flüchtige Arbeitsspeicher12 kann Energie verbrauchen, die von der Energieversorgung11 empfangen wird. Beispiele von flüchtigem Arbeitsspeicher12 enthalten unter anderem Arbeitsspeicher mit wahlfreiem Zugriff (RAM), dynamischen Arbeitsspeicher mit wahlfreiem Zugriff (DRAM), statischen RAM (SRAM) und synchronen dynamischen RAM (SDRAM) (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und Ähnliches). - Die Speichervorrichtung
6 enthält den Controller8 , der eine oder mehrere Operationen der Speichervorrichtung6 verwalten kann. Der Controller8 kann zum Beispiel das Lesen von Daten von den und/oder das Schreiben von Daten in die Arbeitsspeichervorrichtungen16 verwalten. In einigen Fällen kann der Controller8 einen Befehl von der Hostvorrichtung4 empfangen, der Daten enthält und eine logische Blockadresse (LBA) angibt, an die die Daten zu schreiben sind. Der Controller8 kann die Daten an eine physische Blockadresse (PBA) der Arbeitsspeichervorrichtungen16 schreiben, die der von der Hostvorrichtung4 angegebenen LBA entspricht. Das oftmalige Schreiben von Daten an eine bestimmte PBA einer bestimmten Arbeitsspeichervorrichtung16 kann jedoch bewirken, dass sich die bestimmte Arbeitsspeichervorrichtung16 schneller als andere Arbeitsspeichervorrichtungen16 abnutzt. - In einigen Beispielen enthält der Host
4 ein Abnutzungsverwaltungsmodul (WMM)31 . In anderen Beispielen enthält der Controller8 ein Abnutzungsverwaltungsmodul (WMM)30 . In anderen Beispielen enthält der Host4 das WMM31 und der Controller8 enthält das WMM30 . Das WMM30 ,31 kann konfiguriert sein, die Schreibpositionen für Daten zu verwalten, die von der Hostvorrichtung4 empfangen wurden, um die Lebensdauer der Speichervorrichtung6 durch Verbreiten von Schreibvorgängen über die Arbeitsspeichervorrichtungen16 zu verbessern. Die WMMs30 ,31 können zum Beispiel versuchen, Schreibvorgänge gleichmäßig unter den Arbeitsspeichervorrichtungen16 zu verteilen, indem Sie die Anzahl der Schreibvorgänge in einen Block verwalten. In einigen Beispielen können die WMMs30 ,31 versuchen, Schreibvorgänge gleichmäßig unter den Arbeitsspeichervorrichtungen zu verteilen, indem sie die Anzahl der Schreibvorgänge in eine logische Blockadressensammlung verwalten, die eine Gruppe von zwei oder mehr logischen Blockadressen enthalten kann. Die WMMs30 ,31 können zum Beispiel physische Positionen, an denen mit einer ersten logischen Blockadressensammlung assoziierte Daten gespeichert sind, mit physischen Positionen austauschen, an denen mit einer zweiten logischen Blockadressensammlung assoziierte Daten gespeichert sind, wenn die erste logische Blockadressensammlung viele Male beschrieben wurde und die zweite logische Blockadressensammlung weniger häufig beschrieben wurde. - In einigen Beispielen können die WMMs
30 ,31 einen jeweiligen transienten Schreibvorgangszähler, der mit jeder logischen Blockadressensammlung assoziiert ist, einen jeweiligen permanenten Schreibvorgangszähler, der mit jeder logischen Blockadressensammlung assoziiert ist, und einen Vorrichtungs-Schreibvorgangszähler pflegen, der mit dem NVMA10 assoziiert ist. Jeder jeweilige transiente Schreibvorgangszähler kann eine Zählung der Anzahl an Malen speichern, die Daten in die jeweilige logische Blockadressensammlung über einen bestimmten Zeitraum geschrieben wurden (z. B. seit dem letzten Abnutzungsausgleichsvorgang, der vom Controller8 durchgeführt wurde und die jeweilige logische Blockadressensammlung involvierte). Jeder jeweilige permanente Schreibvorgangszähler kann eine Zählung der Anzahl an Malen speichern, die Daten an die jeweilige logische Blockadressensammlung über die Lebensdauer der Speichervorrichtung6 oder über die Lebensdauer der Speichervorrichtung6 vor dem letzten Abnutzungsausgleichsvorgang geschrieben wurden, der die jeweilige logische Blockadressensammlung involvierte. Der Vorrichtungs-Schreibvorgangszähler kann eine Zählung der Anzahl an Malen speichern, die Daten in das NVMA10 (über alle Blocksammlungen hinweg) geschrieben wurden. In einigen Beispielen kann der Vorrichtungs-Schreibvorgangszähler die Anzahl an Malen zählen, die Daten in das NVMA10 über die Lebensdauer des NVMA10 geschrieben wurden. - In einigen Beispielen enthält der Controller
8 das WMM30 und der Controller8 kann einen Schreibbefehl von der Hostvorrichtung4 empfangen, der Daten und eine LBA enthält. Der Controller8 kann eine PBA ermitteln, die der LBA entspricht (z. B. auf Basis einer Umleitungs- oder Logisch-zu-physisch-Tabelle), und kann die empfangenen Daten in eine Arbeitsspeichervorrichtung16 an eine PBA schreiben, die der LBA entspricht. Alternativ dazu kann der Controller8 die Daten an eine verfügbare PBA schreiben (die derzeit keine gültigen Daten speichert) und die Umleitungstabelle aktualisieren, um die LBA-zu-PBA-Entsprechung widerzuspiegeln. In einigen Beispielen kann das WMM30 den Wert des Vorrichtungs-Schreibvorgangszählers schrittweise erhöhen (z. B. um eins erhöhen), um anzuzeigen, dass der Controller6 einen weiteren Schreibvorgang durchgeführt hat, und den Wert des transienten Schreibvorgangszählers schrittweise erhöhen, der mit der logischen Blockadressensammlung assoziiert ist, die die von der Hostvorrichtung4 angegebene LBA enthält. Als Reaktion auf das schrittweise Erhöhen des Werts des Vorrichtungs-Schreibvorgangszählers kann das WMM30 ermitteln, ob ein Vergleich der jeweiligen, mit jeder jeweiligen logischen Blockadressensammlung assoziierten transienten Schreibvorgangszähler durchzuführen ist. Das WMM30 kann zum Beispiel ermitteln, ob ein Vergleich der jeweiligen transienten Schreibvorgangszähler durchgeführt werden soll, indem es den Vorrichtungs-Schreibvorgangszähler mit einer Vorrichtungs-Schreibvorgangszählschwelle vergleicht. Wenn der Vorrichtungs-Schreibvorgangszähler eine Vorrichtungs-Schreibvorgangszählschwelle erfüllt (z. B. größer oder gleich dem Schwellen-Schreibvorgangszähler ist, wie zum Beispiel 500.000 Schreibvorgänge, 1 Million Schreibvorgänge, 2 Millionen Schreibvorgänge oder Ähnliches), kann das WMM30 ermitteln, ob physische Positionen (z. B. PBAs) von Daten, die an LBAs in einer ersten logischen Blockadressensammlung gespeichert sind, mit physischen Positionen von Daten, die an LBAs in einer zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind. In einigen Beispielen kann das WMM30 die Ermittlung auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit der zweiten logischen Blockadressensammlung assoziiert ist, durchführen. - Als Reaktion darauf, dass das WMM
30 ermittelt, die physischen Positionen von in der ersten logischen Blockadressensammlung gespeicherten Daten mit den physischen Positionen der in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen, kann der Controller8 die physischen Positionen der Daten austauschen, die in der ersten und der zweiten logischen Blockadressensammlung gespeichert sind. Das WMM30 kann die Werte des ersten transienten Schreibvorgangszählers und des zweiten transienten Schreibvorgangszählers gleich einem Grundwert (z. B. null) setzen. In einigen Beispielen kann das WMM30 den Wert des ersten transienten Schreibvorgangszählers zu einem Wert eines ersten permanenten Schreibvorgangszählers addieren, der mit der ersten logischen Blockadressensammlung assoziiert ist, bevor es den ersten transienten Schreibvorgangszähler auf den Grundwert setzt. Gleichermaßen kann das WMM30 den Wert des zweiten transienten Schreibvorgangszählers zu einem Wert eines zweiten permanenten Schreibvorgangszählers addieren, der mit der zweiten logischen Blockadressensammlung assoziiert ist, bevor es den zweiten transienten Schreibvorgangszähler auf den Grundwert setzt. Durch Addieren des Werts jedes transienten Schreibvorgangszählers zu einem jeweiligen permanenten Schreibvorgangszähler kann das WMM30 die Gesamtanzahl der Schreibvorgänge in jede jeweilige logische Blockadressensammlung nachverfolgen. Auf diese Weise kann das WMM30 die Gesamtanzahl von Schreibvorgängen in jede jeweilige logische Blockadressensammlung nachverfolgen, ohne jeden jeweiligen permanenten Schreibvorgangszähler jedes Mal zu aktualisieren, wenn der Controller8 in eine jeweilige logische Blockadressensammlung schreibt. - In einigen Beispielen kann die Hostvorrichtung
4 ein WMM31 enthalten. Die Hostvorrichtung4 kann einen Schreibbefehl, der Daten enthält, und eine LBA an den Controller8 senden. Als Reaktion auf das Schreiben des Controllers8 von Daten in eine Arbeitsspeichervorrichtung16 an einer PBA, die der von der Hostvorrichtung4 empfangenen LBA entspricht, kann das WMM31 den Wert des Vorrichtungs-Schreibvorgangszählers schrittweise erhöhen, um anzuzeigen, dass der Controller6 einen weiteren Schreibvorgang durchgeführt hat, und kann den Wert des transienten Schreibvorgangszählers schrittweise erhöhen, der mit der logischen Blockadressensammlung assoziiert ist, die die von der Hostvorrichtung4 angegebene LBA enthält. Als Reaktion auf das schrittweise Erhöhen des Werts des Vorrichtungs-Schreibvorgangszählers kann das WMM31 ermitteln, ob ein Vergleich der jeweiligen, mit jeder jeweiligen logischen Blockadressensammlung assoziierten transienten Schreibvorgangszähler durchzuführen ist. Das WMM31 kann zum Beispiel ermitteln, ob ein Vergleich der jeweiligen transienten Schreibvorgangszähler durchgeführt werden soll, indem es den Vorrichtungs-Schreibvorgangszähler mit einer Vorrichtungs-Schreibvorgangszählschwelle vergleicht. Wenn der Vorrichtungs-Schreibvorgangszähler eine Vorrichtungs-Schreibvorgangszählschwelle erfüllt, kann das WMM31 ermitteln, ob physische Positionen von an LBAs in einer ersten logischen Blockadressensammlung gespeicherten Daten mit physischen Positionen von an LBAs in einer zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind. In einigen Beispielen kann das WMM31 die Ermittlung auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit der zweiten logischen Blockadressensammlung assoziiert ist, durchführen. - Als Reaktion darauf, dass das WMM
31 ermittelt, die physische Position von in der ersten logischen Blockadressensammlung gespeicherten Daten mit einer physischen Position von in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen, kann der Controller8 die physischen Positionen der Daten in der ersten und der zweiten logischen Blockadressensammlung austauschen. Das WMM31 kann die Werte des ersten transienten Schreibvorgangszählers und des zweiten transienten Schreibvorgangszählers gleich einem Grundwert setzen. In einigen Beispielen kann das WMM31 den Wert des ersten transienten Schreibvorgangszählers und den Wert des zweiten transienten Schreibvorgangszählers zu einem Wert eines jeweiligen permanenten Schreibvorgangszählers addieren, der mit der jeweiligen logischen Blockadressensammlung assoziiert ist, bevor es die transienten Schreibvorgangszähler auf den Grundwert setzt. Durch Addieren des Werts des transienten Schreibvorgangszählers zu einem jeweiligen permanenten Schreibvorgangszähler kann das WMM31 die Gesamtanzahl der Schreibvorgänge an die jeweilige logische Blockadressensammlung nachverfolgen. - Auf diese Weise können die WMMs
30 ,31 verbesserte Abnutzungsausgleichstechniken bereitstellen. Durch die Pflege von Schreibvorgangszählern für jede logische Blockadressensammlung anstatt für jede logische Blockadresse können die WMMs30 ,31 die Anzahl der Zähler reduzieren und gleichzeitig einen ausreichenden Abnutzungsausgleich bereitstellen. Die Reduktion der Anzahl der Zähler kann den räumlichen Mehraufwand reduzieren, der von den Zählern verbraucht wird, und kann die Leistung der Speichervorrichtung6 verbessern. Durch das Austauschen der physischen Positionen der Daten nur dann, wenn eine bestimmte logische Blockadressensammlung häufiger beschrieben wurde als eine andere logische Blockadressensammlung, anstatt die physischen Positionen der Daten fortlaufend auszutauschen, können die WMMs30 ,31 den Abnutzungsausgleich je nach Bedarf durchführen, was das Ausmaß an unnötigen Austauschvorgängen reduzieren kann. Durch Reduzieren der Anzahl der Schreibvorgangszähler und durch Durchführen des Abnutzungsausgleichs je nach Bedarf können die beschriebenen Techniken die Lebensdauer und Leistung der Speichervorrichtung6 verbessern. -
2 ist ein konzeptionelles Blockdiagramm, das eine beispielhafte Arbeitsspeichervorrichtung16Aa illustriert, die eine Vielzahl an Blöcken17A –17N (kollektiv „Blöcke17 ”) enthält, wobei jeder Block eine Vielzahl an Seiten19Aa –19Nm (kollektiv „Seiten19 ”) enthält. Jeder Block der Blöcke17 kann eine Vielzahl an NAND-Zellen enthalten. Zeilen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch in Serie verbunden sein, um eine Seite zu definieren (eine Seite der Seiten19 ). Die jeweiligen Zellen in jeder der Vielzahl der Seiten19 können elektrisch mit den jeweiligen Bitleitungen verbunden sein. Der Controller8 kann auf Seitenebene Daten in die NAND-Flasharbeitsspeichervorrichtungen schreiben und daraus lesen und auf Blockebene Daten aus den NAND-Flasharbeitsspeichervorrichtungen löschen. Eine Gruppe von zwei oder mehr Blöcken kann als eine logische Blockadressensammlung bezeichnet werden. Die logische Blockadressensammlung20A kann beispielsweise die Blöcke17A –17B enthalten und die logische Blockadressensammlung20B kann die Blöcke17M –17N enthalten. -
3 ist ein konzeptionelles und schematisches Blockdiagramm, das beispielhafte Details des Controllers8 illustriert. In einigen Beispielen kann der Controller8 ein Adressenübersetzungsmodul22 , ein Schreibmodul24 , ein Planungsmodul26 , ein Lesemodul28 , ein Abnutzungsausgleichsmodul (WMM)30 und eine Vielzahl von Kanalcontrollern32A –32N (kollektiv „Kanalcontroller32 ”) enthalten. In anderen Beispielen kann der Controller8 zusätzliche Module oder Hardwareeinheiten enthalten oder kann weniger Module oder Hardwareeinheiten enthalten. Der Controller8 kann einen oder mehrere Mikroprozessoren, einen oder mehrere digitale Signalprozessoren (DSP), einen oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC), einen oder mehrere Field Programmable Gate Arrays (FPGA) oder eine oder mehrere andere digitale Logikverschaltungen enthalten. - Der Controller
8 kann an die Hostvorrichtung4 über die Schnittstelle14 ankoppeln und die Speicherung von Daten in den und den Abruf von Daten aus den Arbeitsspeichervorrichtungen16 verwalten. Das Schreibmodul24 des Controllers8 kann zum Beispiel Schreibvorgänge in die Arbeitsspeichervorrichtungen16 verwalten. Das Schreibmodul24 kann zum Beispiel über die Schnittstelle14 eine Nachricht von der Hostvorrichtung4 empfangen, die die Speichervorrichtung6 anweist, mit einer logischen Adresse assoziierte Daten und die Daten, die als Benutzerdaten bezeichnet werden können, zu speichern. Das Schreibmodul24 kann das Schreiben der Benutzerdaten in die Arbeitsspeichervorrichtungen16 verwalten. - Das Schreibmodul
24 kann zum Beispiel mit dem Adressenübersetzungsmodul22 kommunizieren, das die Übersetzung zwischen logischen Adressen, die von der Hostvorrichtung4 zur Verwaltung von Speicherpositionen von Daten verwendet werden, und physischen Blockadressen verwaltet, die vom Schreibmodul24 zum Lenken des Schreibens der Daten in Arbeitsspeichervorrichtungen verwendet werden. Das Adressenübersetzungsmodul22 von Controller8 kann eine Flash-Übersetzungsschicht oder Umleitungstabelle einsetzen, die logische Adressen (oder logische Blockadressen) der von den Arbeitsspeichervorrichtungen16 gespeicherten Daten in physische Blockadressen der von den Arbeitsspeichervorrichtungen16 gespeicherten Daten übersetzt. Die Hostvorrichtung4 kann zum Beispiel die logischen Blockadressen der von den Arbeitsspeichervorrichtungen16 gespeicherten Daten in Anweisungen oder Nachrichten an die Speichervorrichtung6 einsetzen, während das Schreibmodul24 physische Blockadressen der Daten einsetzt, um das Schreiben der Daten in die Arbeitsspeichervorrichtungen16 zu steuern. (Gleichermaßen kann das Lesemodul28 physische Blockadressen zum Steuern des Lesens von Daten aus den Arbeitsspeichervorrichtungen16 einsetzen.) Die physischen Blockadressen entsprechen tatsächlichen, physischen Blöcken der Arbeitsspeichervorrichtungen16 . In einigen Beispielen kann das Adressenübersetzungsmodul22 die Flash-Übersetzungsschicht oder -tabelle im flüchtigen Arbeitsspeicher12 speichern. - Auf diese Weise kann es der Hostvorrichtung
4 erlaubt sein, eine statische logische Blockadresse für einen bestimmten Satz von Daten zu verwenden, während sich die physische Blockadresse, an der die Daten tatsächlich gespeichert sind, ändern kann. Das Adressenübersetzungsmodul22 kann die Flash-Übersetzungsschicht oder Umleitungstabelle aufrechterhalten, um die logischen Blockadressen physischen Blockadressen zuzuordnen, um die Verwendung der statischen logischen Blockadresse durch die Hostvorrichtung4 zu erlauben, während sich die mit den Daten assoziierte physische Blockadresse ändern kann, zum Beispiel aufgrund eines Abnutzungsausgleichs, einer automatischen Speicherbereinigung oder Ähnlichem. - Wie oben besprochen kann das Schreibmodul
24 von Controller8 eine oder mehrere Operationen zum Verwalten des Schreibens von Daten in die Arbeitsspeichervorrichtungen16 durchführen. Das Schreibmodul24 kann zum Beispiel das Schreiben von Daten in die Arbeitsspeichervorrichtungen16 verwalten, indem es einen oder mehrere physische Blöcke innerhalb der Arbeitsspeichervorrichtungen16 auswählt, um die Daten zu speichern, und bewirkt, dass die Arbeitsspeichervorrichtungen der Arbeitsspeichervorrichtungen16 , die die ausgewählten physischen Blöcke enthalten, die Daten tatsächlich speichern. Wie oben besprochen kann das Schreibmodul24 verursachen, dass das Adressenübersetzungsmodul22 die Flash-Übersetzungsschicht oder Umleitungstabelle auf Basis der ausgewählten physischen Blöcke aktualisiert. Das Schreibmodul24 kann zum Beispiel eine Nachricht von der Hostvorrichtung4 erhalten, die Daten und eine logische Blockadresse enthält, einen physischen Block innerhalb einer bestimmten Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen16 auswählen, um die Daten zu speichern, verursachen, dass die bestimmte Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen16 die Daten tatsächlich speichert (z. B. über einen Kanalcontroller der Kanalcontroller32 , der der bestimmten Arbeitsspeichervorrichtung entspricht), und verursachen, dass das Adressenübersetzungsmodul22 die Flash-Übersetzungsschicht oder Umleitungstabelle aktualisiert, um anzuzeigen, dass die logische Blockadresse dem ausgewählten physischen Block innerhalb der bestimmten Arbeitsspeichervorrichtung entspricht. - Das Lesemodul
28 kann gleichermaßen ein Lesen von Daten aus den Arbeitsspeichervorrichtungen16 steuern. Das Lesemodul28 kann zum Beispiel eine Nachricht von der Hostvorrichtung4 erhalten, die Daten mit einer zugehörigen logischen Blockadresse anfordert. Das Adressenübersetzungsmodul22 kann die logische Blockadresse unter Verwendung der Flash-Übersetzungsschicht oder -tabelle in eine physische Blockadresse umwandeln. Das Lesemodul28 kann dann einen oder mehrere der Kanalcontroller32 steuern, um die Daten von den physischen Blockadressen abzurufen. Ähnlich wie das Schreibmodul24 kann das Lesemodul28 einen oder mehrere physische Blöcke auswählen und eine Nachricht an die Kanalcontroller32 kommunizieren, die bewirken kann, dass die Kanalcontroller32 die Daten aus den ausgewählten physischen Blöcken lesen. - Das Planungsmodul
26 des Controllers8 kann eine oder mehrere Operationen zur Planung von Aktivitäten durchführen, die von den Arbeitsspeichervorrichtungen16 durchzuführen sind. Das Planungsmodul26 kann zum Beispiel Anforderungen zeitlich planen, die von anderen Komponenten des Controllers8 empfangen wurden, um einer oder mehrerer der Arbeitsspeichervorrichtungen16 zu befehlen, eine oder mehrere Aktivitäten während der Laufzeit durchzuführen. In einigen Beispielen kann das Planungsmodul30 die durchzuführenden Anforderungen in der Reihenfolge zeitlich planen, in der sie empfangen wurden (z. B. First-In-First-Out oder FIFO). In einigen Beispielen kann das Planungsmodul26 die Anforderungen auf Basis einer oder mehrerer Faktoren zeitlich planen, die die Art der Anforderung (z. B. eine Leseanforderung, eine Schreibanforderung, eine Löschanforderung, eine Anforderung zur automatischen Speicherbereinigung usw.), eine Zeitdauer, die seit dem Empfang der Anforderung verstrichen ist, eine Leistungsmenge, die durch die Durchführung der Anforderung verbraucht würde, Bandbreitenüberlegungen und Ähnliches enthalten können, aber nicht darauf beschränkt sind. - Der Controller
8 kann einen ersten Schreibbefehl von der Hostvorrichtung4 empfangen, der Daten und mindestens eine logische, mit den Daten assoziierte Blockadresse enthält. Als Reaktion auf ein Empfangen des ersten Schreibbefehls von der Hostvorrichtung4 kann das Schreibmodul24 ermitteln, an welche physischen Positionen der Arbeitsspeichervorrichtungen16 die Daten zu schreiben sind. Das Schreibmodul24 kann zum Beispiel eine oder mehrere physische Blockadressen, die leer sind (z. B. keine Daten speichern), teilweise leer sind (z. B. nur manche Seiten des physischen Blocks speichern Daten) oder zumindest einige ungültige (oder veraltete) Daten speichern, vom Adressenübersetzungsmodul22 anfordern. Nach Empfangen der einen oder der mehreren physischen Blockadressen kann das Schreibmodul24 einen oder mehrere physische Blöcke definieren und/oder auswählen und eine Nachricht an die Kanalcontroller32A –32N (kollektiv „Kanalcontroller32 ”) kommunizieren, die bewirkt, dass die Kanalcontroller32 die Daten in die physischen Blöcke schreiben. - Jeder Kanalcontroller der Kanalcontroller
32 kann mit einem entsprechenden Kanal der Kanäle18 verbunden sein. In manchen Beispielen kann der Controller8 die gleiche Anzahl an Kanalcontrollern32 wie die Anzahl der Kanäle18 der Speichervorrichtung2 enthalten. Die Kanalcontroller32 können die enge Steuerung eines Adressierens, Programmierens, Löschens und Lesens der Arbeitsspeichervorrichtungen16 durchführen, die mit den entsprechenden Kanälen verbunden sind, z. B. unter Steuerung des Schreibmoduls24 und/oder des Lesemoduls28 . - In einigen Beispielen (z. B. wenn die Arbeitsspeichervorrichtungen
16 Flasharbeitsspeichervorrichtungen enthalten) kann ein großer Strom verwendet werden, um ein Bit mit einem logischen Wert von 0 (geladen) in ein Bit mit einem vorherigen logischen Wert von 1 (ungeladen) zu schreiben. Dieser Strom kann hinreichend hoch sein, sodass er unbeabsichtigte Änderungen an der Ladung von benachbarten Flasharbeitsspeicherzellen verursacht. Um vor unbeabsichtigten Änderungen zu schützen, kann ein gesamter Block an Flashspeicherzellen vor dem Schreiben irgendwelcher Daten in die Zellen innerhalb des Blocks auf einen logischen Wert von 1 (ungeladen) gelöscht werden. Aus diesem Grund können Flashspeicherzellen auf Blockebene gelöscht und auf Seitenebene beschrieben werden. Das Schreiben von Daten und das Löschen von Daten kann jedoch eine Abnutzung der Flashspeicherzellen verursachen. Wenn zum Beispiel Flashspeicherzellen gelöscht werden, kann eine Abnutzung der Flashspeicherzellen aufgrund der relativ hohen Spannungen auftreten, die zum Löschen der Flashspeicherzellen verwendet werden. Über eine Vielzahl an Löschzyklen können die relativ hohen Spannungen Änderungen an den Flashspeicherzellen zur Folge haben. Irgendwann können sich die Flashspeicherzellen abnutzen, sodass keine Daten mehr in die Zellen geschrieben werden können. Gleichermaßen können sich andere Arten von nichtflüchtigem Arbeitsspeicher (z. B. PCM, ReRAM, MRAM oder Ähnliches) auch mit der Zeit abnutzen, sodass die Arbeitsspeichervorrichtung keine Daten mehr in bestimmte Zellen schreiben kann. - In einigen Beispielen kann der Controller
8 Abnutzungsausgleichsvorgänge durchführen, um die Wahrscheinlichkeit zu reduzieren, dass sich eine bestimmte Arbeitsspeicherzelle vorzeitig abnutzt. Durch Einsatz von Abnutzungsausgleichstechniken kann der Controller8 Schreibvorgänge auf verschiedene Arbeitsspeicherzellen aufteilen, was helfen kann, die Langlebigkeit der Arbeitsspeichervorrichtungen zu erhöhen. In einigen Beispielen können die beschriebenen Abnutzungsausgleichstechniken auf einen beliebigen NVM-Typ (z. B. Flash, PCM, ReRAM, MRAM oder Ähnliches) angewandt werden. - Das WMM
30 kann die Abnutzungsausgleichsvorgänge verwalten. In einigen Beispielen kann das WMM30 verschiedene Arten von Abnutzungsausgleichsvorgängen verwalten. In einem Beispiel kann das WMM30 einen Inter-Blocksammlungs-Abnutzungsausgleich verwalten. Das WMM30 kann zum Beispiel einen Inter-Blocksammlungs-Abnutzungsausgleich durchführen, indem es mit einer ersten logischen Blockadressensammlung assoziierte Daten periodisch von einer ersten physischen Position an eine zweite physische Position verschiebt, die nicht mit der ersten logischen Blockadressensammlung assoziiert ist. Das WMM30 kann zum Beispiel die physische Position von Daten, die an logischen Blockadressen in einer ersten logischen Blockadressensammlung gespeichert sind, mit der physischen Position von Daten austauschen, die an logischen Blockadressen in einer zweiten logischen Blockadressensammlung gespeichert sind. In einem anderen Beispiel kann das WMM30 einen Intra-Blocksammlungs-Abnutzungsausgleich verwalten. Das WMM30 kann zum Beispiel den Intra-Blocksammlungs-Abnutzungsausgleich verwalten, indem es Daten periodisch neu anordnet, die an physischen Positionen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind. Das WMM30 kann zum Beispiel Daten neu anordnen, die an physischen Positionen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind, indem es die physische Position von Daten, die an einer ersten logischen Adresse (z. B. an einer logischen Seite, an einem logischen Wort oder Byte) gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert ist, und eine physische Position von Daten austauscht, die an einer zweiten logischen Adresse (z. B. an einer logischen Seite, an einem logischen Wort oder Byte) gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert ist. - In einigen Beispielen kann das WMM
30 auf Basis eines oder mehrerer Schreibvorgangszähler ermitteln, ob ein Abnutzungsausgleichsvorgang durchzuführen ist. Das WMM30 kann zum Beispiel einen Vorrichtungs-Schreibvorgangszähler, eine Vielzahl von transienten Schreibvorgangszählern und eine Vielzahl von permanenten Schreibvorgangszählern pflegen. Wie oben in Bezug auf1 beschrieben, kann der Vorrichtungs-Schreibvorgangszähler eine Zählung der Anzahl an Malen speichern, die Daten in das NVMA10 geschrieben wurden. Die Vielzahl der permanenten Schreibvorgangszähler kann einen jeweiligen permanenten Schreibvorgangszähler enthalten, der mit jeder jeweiligen logischen Blockadressensammlung der Vielzahl der logischen Blockadressensammlungen assoziiert ist. Jeder jeweilige permanente Schreibvorgangszähler kann eine Zählung der Anzahl an Malen speichern, die Daten in die jeweilige logische Blockadressensammlung geschrieben wurden (z. B. über die Lebensdauer der Speichervorrichtung6 oder über die Lebensdauer der Speichervorrichtung6 vor dem letzten Abnutzungsausgleichsvorgang, der die jeweilige logische Blockadressensammlung involvierte). Gleichermaßen kann die Vielzahl der transienten Schreibvorgangszähler einen jeweiligen transienten Schreibvorgangszähler enthalten, der mit jeder jeweiligen logischen Blockadressensammlung der Vielzahl der logischen Blockadressensammlungen assoziiert ist. Jeder jeweilige transiente Schreibvorgangszähler kann eine Zählung der Anzahl an Malen speichern, die Daten in die jeweilige logische Blockadressensammlung innerhalb eines bestimmten Zeitraums geschrieben wurden (z. B. seit dem letzten Inter-Blocksammlungs-Abnutzungsausgleichsvorgang, der die jeweilige logische Blockadressensammlung involvierte). - In einigen Beispielen kann das WMM
30 auf Basis eines Vergleichs von mindestens einem Schreibvorgangszähler, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und von mindestens einem Schreibvorgangszähler, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, ermitteln, ob ein Inter-Blocksammlungs-Abnutzungsausgleichsvorgang durchzuführen ist. In einigen Fällen kann das WMM30 die jeweiligen Schreibvorgangszähler nach jedem Schreibvorgang vergleichen. - In anderen Fällen kann das WMM
30 die jeweiligen Schreibvorgangszähler nach einer bestimmten Anzahl von Schreibvorgängen vergleichen. Wenn der Wert des Vorrichtungs-Schreibvorgangszählers zum Beispiel eine Vorrichtungs-Schreibvorgangszählschwelle erfüllt, kann das WMM30 ermitteln, dass eine bestimmte Anzahl von Schreibvorgängen eingetreten sind und dass das WMM30 die jeweiligen Schreibvorgangszähler vergleichen soll. In einigen Beispielen kann das WMM30 als Reaktion auf das Durchführen eines ersten Schreibvorgangs den Wert des Vorrichtungs-Schreibvorgangszählers aktualisieren (z. B. um eins erhöhen) und ermitteln, ob der Wert des Vorrichtungs-Schreibvorgangszählers eine Vorrichtungs-Schreibvorgangszählschwelle erfüllt. - In einigen Beispielen kann das WMM
30 ermitteln, dass der Vorrichtungs-Schreibvorgangszähler einen Schwellenwert erfüllt, wenn der im Vorrichtungs-Schreibvorgangszähler gespeicherte Wert gleich einer von einer Vielzahl von Vorrichtungs-Schreibvorgangszählschwellen ist oder diese überschreitet. Das WMM30 kann zum Beispiel mehrere Vorrichtungs-Schreibvorgangszählschwellen (z. B. 500.000 Schreibvorgänge, 1 Million Schreibvorgänge, 1,5 Millionen Schreibvorgänge oder Ähnliches) enthalten. Anders ausgedrückt kann das WMM30 ermitteln, dass der Vorrichtungs-Schreibvorgangszähler den Schwellenwert nach jedem fünfhunderttausendsten Schreibvorgang erfüllt. Wenn deshalb der Vorrichtungs-Schreibvorgangszähler eine der Vielzahl der Vorrichtungs-Schreibvorgangszählschwellen erreicht, kann der Wert des Vorrichtungs-Schreibvorgangszählers den Schwellenwert erfüllen und das WMM30 kann die jeweiligen transienten Schreibvorgangszähler vergleichen. - In anderen Beispielen kann das WMM
30 ermitteln, dass der Vorrichtungs-Schreibvorgangszähler den Schwellenwert erfüllt, wenn der im Vorrichtungs-Schreibvorgangszähler gespeicherte Wert größer oder gleich einer Vorrichtungs-Schreibvorgangszählschwelle ist. Das WMM30 kann zum Beispiel eine einzelne Vorrichtungs-Schreibvorgangszählschwelle (z. B. 1 Million Schreibvorgänge) enthalten. Als Reaktion auf das Ermitteln, dass der Wert des Vorrichtungs-Schreibvorgangszählers größer oder gleich der Vorrichtungs-Schreibvorgangszählschwelle ist, kann das WMM30 den Vorrichtungs-Schreibvorgangszähler auf einen Grundwert (z. B. null) zurücksetzen und die jeweiligen transienten Schreibvorgangszähler vergleichen. - In noch anderen Beispielen kann das WMM
30 ermitteln, dass der Vorrichtungs-Schreibvorgangszähler einen Schwellenwert erfüllt, wenn der Vorrichtungs-Schreibvorgangszähler durch eine ganze Zahl teilbar ist. In einigen Fällen kann der Vorrichtungs-Schreibvorgangszähler durch eine ganze Zahl teilbar sein, wenn eine Durchführung einer Modulo-Operation des Vorrichtungs-Schreibvorgangszählers und der Vorrichtungs-Schreibvorgangszählschwelle einem bestimmten Wert gleicht. Die Modulo-Operation kann den Rest nach Dividieren des Vorrichtungs-Schreibvorgangszählers durch die Vorrichtungs-Schreibvorgangszählschwelle berechnen. Das WMM30 kann in einigen Beispielen ermitteln, dass der Vorrichtungs-Schreibvorgangszähler durch eine ganze Zahl teilbar ist, wenn der Rest einem bestimmten Wert (z. B. null) gleicht. In einigen Beispielen kann das WMM30 als Reaktion auf ein Ermitteln, dass der Vorrichtungs-Schreibvorgangszähler den Schwellenwert erfüllt, die jeweiligen transienten Schreibvorgangszähler vergleichen. - Wie oben besprochen kann das WMM
30 auf Basis eines oder mehrerer Schreibvorgangszähler als Reaktion auf das Ermitteln, dass der Wert des Vorrichtungs-Schreibvorgangszählers einen Schwellenwert erfüllt, ermitteln, ob ein Inter-Blocksammlungs-Abnutzungsausgleichsvorgang durchzuführen ist. Das WMM30 kann auf Basis eines Vergleichs eines ersten transienten Schreibvorgangszählers, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines zweiten transienten Schreibvorgangszählers, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, ermitteln, ob ein Inter-Blocksammlungs-Abnutzungsausgleichsvorgang durchzuführen ist. Anders ausgedrückt kann das WMM30 auf Basis der jeweiligen transienten Schreibvorgangszähler, die mit den jeweiligen logischen Blockadressensammlungen assoziiert sind, ermitteln, ob die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind. Das WMM30 kann zum Beispiel ermitteln, physische Positionen der mit den jeweiligen logischen Blockadressensammlungen assoziierten Daten auszutauschen, wenn der Wert des ersten transienten Schreibvorgangszählers (mit C1,TRANS bezeichnet) größer als eine vorbestimmte Zahl (mit P bezeichnet) multipliziert mit dem Wert des zweiten transienten Schreibvorgangszählers (auch mit C2,TRANS bezeichnet) ist. Anders ausgedrückt, kann das WMM30 ermitteln, physische Positionen von mit den jeweiligen logischen Blocksammlungen assoziierten Daten auszutauschen, falls:C1,TRANS > P·C2,TRANS Gleichung 1 - Falls beispielsweise C1,TRANS = 1200, C2,TRANS = 200 und die vorbestimmte Zahl P gleich 5 ist, kann das WMM
30 ermitteln, die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen, da C1,TRANS (1200) größer als die vorbestimmte Zahl P multipliziert mit C2,TRANS (5·200 = 1000) ist. Es sollte klar sein, dass die hier gezeigte vorbestimmte Zahl nur zu illustrativen Zwecken gegeben wird und dass andere Werte für die vorbestimmte Zahl verwendet werden können. - In einigen Beispielen kann das WMM
30 auf Basis eines mit einer ersten logischen Blockadressensammlung assoziierten ersten transienten Schreibvorgangszählers, eines mit der ersten logischen Blockadressensammlung assoziierten ersten permanenten Schreibvorgangszählers, eines mit einer zweiten logischen Blockadressensammlung assoziierten zweiten transienten Schreibvorgangszählers und eines mit der zweiten logischen Blockadressensammlung assoziierten zweiten permanenten Schreibvorgangszählers ermitteln, ob ein Inter-Blocksammlungs-Abnutzungsausgleichsvorgang durchzuführen ist. Anders ausgedrückt, kann das WMM30 auf Basis der jeweiligen transienten Schreibvorgangszähler, die mit den jeweiligen logischen Blockadressensammlungen assoziiert sind, und der jeweiligen permanenten Schreibvorgangszähler, die mit den jeweiligen logischen Blockadressensammlungen assoziiert sind, ermitteln, ob die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind. Das WMM30 kann zum Beispiel den Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) und den Wert des ersten permanenten Schreibvorgangszählers (mit C1,PERM bezeichnet) summieren, um einen ersten Gesamtschreibvorgangswert (auch mit C1,TOTAL bezeichnet) zu ermitteln, und kann den Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) und den Wert des zweiten permanenten Schreibvorgangszählers (mit C2,PERM bezeichnet) summieren, um einen zweiten Gesamtschreibvorgangswert (auch mit C2,TOTAL bezeichnet) zu ermitteln. Das WMM30 kann als Reaktion auf ein Ermitteln, dass der erste Gesamtschreibvorgangswert größer als eine vorbestimmte Zahl P multipliziert mit dem zweiten Gesamtschreibvorgangswert ist, ermitteln, physische Positionen der mit den jeweiligen logischen Blockadressensammlungen assoziierten Daten auszutauschen. Anders ausgedrückt, kann das WMM30 ermitteln, physische Positionen der mit den jeweiligen logischen Blockadressensammlungen assoziierten Daten auszutauschen, falls:C1,TOTAL > P·C2,TOTAL Gleichung 2 - Falls beispielsweise C1,TRANS = 1200, C1,PERM = 2000, C2,TRANS = 200 und C2,PERM = 400, C1,TOTAL = 3200 und C2,TOTAL = 600. Falls in diesem Beispiel die vorbestimmte Zahl P = 5 ist, kann das WMM
30 ermitteln, die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen, da C1,TOTAL (3200) größer als die vorbestimmte Zahl P multipliziert mit C2,TOTAL (5·600 = 3000) ist. - In einigen Beispielen kann das WMM
30 auf Basis des ersten Gesamtschreibvorgangswerts, des zweiten Gesamtschreibvorgangswerts, des ersten transienten Schreibvorgangswerts und des zweiten transienten Schreibvorgangswerts ermitteln, ob ein Inter-Blocksammlungs-Abnutzungsausgleichsvorgang durchzuführen ist. Anders ausgedrückt, kann das WMM30 auf Basis der jeweiligen transienten Schreibvorgangszähler, die mit den jeweiligen logischen Blockadressensammlungen assoziiert sind, und der jeweiligen Gesamtschreibvorgangswerte, die mit den jeweiligen logischen Blockadressensammlungen assoziiert sind, ermitteln, ob die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind. Das WMM30 kann zum Beispiel als Reaktion auf das Ermitteln, dass der erste Gesamtschreibvorgangswert größer als die vorbestimmte Zahl P multipliziert mit dem zweiten Gesamtschreibvorgangswert ist und dass der Wert des ersten transienten Schreibvorgangszählers größer als der Wert des zweiten transienten Schreibvorgangszählers ist, ermitteln, physische Positionen der mit den jeweiligen logischen Blockadressensammlungen assoziierten Daten auszutauschen. Anders ausgedrückt, kann das WMM30 ermitteln, physische Positionen der mit den jeweiligen logischen Blockadressensammlungen assoziierten Daten auszutauschen, falls:C1,TOTAL > P·C2,TOTAL und Gleichung 3 C1,TRANS > P·C2,TRANS.Gleichung 4 - Falls beispielsweise C1,TRANS = 1200, C1,TOTAL = 3200, C2,TRANS = 200, C2,TOTAL = 600 und die vorbestimmte Zahl P = 5, dann ist C1,TOTAL (3200) größer als die vorbestimmte Zahl multipliziert mit C2,TOTAL (5·600 = 3000) und C1,TRANS (1200) ist größer als C2,TRANS (200). In diesem Beispiel kann das WMM
30 ermitteln, dass die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, da beide durch die Gleichungen 3 und 4 gegebenen Bedingungen erfüllt sind. - Als Reaktion auf ein Ermitteln, dass die physischen Positionen der an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind, kann das WMM
30 die physischen Positionen der an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten austauschen. Das WMM30 kann zum Beispiel Daten, die an einer ersten physischen Position gespeichert sind, die mit dem ersten transienten Schreibvorgangszähler assoziiert ist, an eine dritte physische Position (z. B. in eine andere Arbeitsspeichervorrichtung16 oder in einen flüchtigen Arbeitsspeicher12 ) kopieren, Daten, die an der zweiten physischen Position gespeichert sind, die mit dem zweiten transienten Schreibvorgangszähler assoziiert ist, an die erste physische Position kopieren und die Daten von der dritten physischen Position an die zweite physische Position kopieren. Das WMM30 kann bewirken, dass das Adressenübersetzungsmodul22 die Flash-Übersetzungsschicht oder Umleitungstabelle aktualisiert, um anzuzeigen, dass die erste logische Blockadressensammlung nun der zweiten physischen Position entspricht und dass die zweite logische Blockadressensammlung nun der ersten physischen Position entspricht. Als weitere Reaktion auf das Ermitteln, einen Abnutzungsausgleichsvorgang auszuführen, kann das WMM30 den Wert des ersten transienten Schreibvorgangszählers und den Wert des zweiten transienten Schreibvorgangszählers auf einen Grundwert (z. B. null) zurücksetzen. - Der Controller
8 kann einen zweiten Schreibbefehl, der Daten und eine logische Blockadresse enthält, von der Hostvorrichtung4 empfangen. Die logische Blockadresse kann einer dritten logischen Blockadressensammlung entsprechen, die mit einem dritten transienten Schreibvorgangszähler und einem dritten permanenten Schreibvorgangszähler assoziiert sein kann. Als Reaktion auf das Empfangen des zweiten Schreibbefehls von der Hostvorrichtung4 kann das Schreibmodul24 ermitteln, an welchen physischen Positionen der Arbeitsspeichervorrichtungen16 die Daten auf eine Weise zu schreiben sind, die der oben in Bezug auf den ersten Schreibbefehl beschriebenen Weise ähnlich ist. Das Schreibmodul24 kann zum Beispiel bewirken, dass die empfangenen Daten an eine physische Position geschrieben werden, die mit der dritten logischen Blocksammlung assoziiert ist. In einigen Beispielen kann das WMM30 als Reaktion auf das Schreiben von mit der dritten logischen Blockadressensammlung assoziierten Daten den dritten transienten Schreibvorgangszähler aktualisieren. - Das WMM
30 kann auf Basis des Werts des dritten transienten Schreibvorgangszählers oder auf Basis der Summe des dritten transienten Schreibvorgangszählers und des Werts des dritten permanenten Schreibvorgangszählers ermitteln, ob ein Intra-Blocksammlungs-Abnutzungsausgleichsvorgang durchzuführen ist, wobei die Summe als der dritte Gesamtschreibvorgangswert bezeichnet wird. Anders ausgedrückt, kann das WMM30 auf Basis davon, ob der Wert des dritten transienten Schreibvorgangszählers eine Blocksammlungszählschwelle erfüllt oder ob der dritte Gesamtschreibvorgangswert eine Blocksammlungszählschwelle erfüllt, ermitteln, ob Daten neu anzuordnen sind, die an physischen Positionen gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert sind. - In einigen Beispielen kann das WMM
30 ermitteln, dass der dritte transiente Schreibvorgangszähler (oder der dritte Gesamtschreibvorgangswert) eine Blocksammlungszählschwelle erfüllt, wenn der Wert des dritten transienten Schreibvorgangszählers (oder des dritten Gesamtschreibvorgangswerts) gleich einer von einer Vielzahl von Blocksammlungszählschwellen ist. Das WMM30 kann zum Beispiel mehrere Blocksammlungszählschwellen (z. B. eintausend Schreibvorgänge, zweitausend Schreibvorgänge oder Ähnliches) enthalten. Wenn deshalb der dritte transiente Schreibvorgangszähler (oder der dritte Gesamtschreibvorgangswert) eine der Vielzahl der Blocksammlungszählschwellen erreicht, kann der Wert des dritten transienten Schreibvorgangszählers (oder des dritten Gesamtschreibvorgangswerts) die Blocksammlungszählschwellen erfüllen und das WMM30 kann ermitteln, Daten neu anzuordnen, die an Seiten gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind. - In anderen Beispielen kann das WMM
30 ermitteln, dass der dritte transiente Schreibvorgangszähler (oder der dritte Gesamtschreibvorgangswert) eine Blocksammlungszählschwelle erfüllt, wenn der dritte transiente Schreibvorgangszähler (oder der dritte Gesamtschreibvorgangswert) durch eine ganze Zahl teilbar ist. In einigen Fällen ist der dritte transiente Schreibvorgangszähler (oder der dritte Gesamtschreibvorgangswert) durch eine ganze Zahl teilbar, wenn ein Durchführen einer Modulo-Operation des dritten transienten Schreibvorgangszählers (oder des dritten Gesamtschreibvorgangswerts) und der Blocksammlungszählschwelle gleich einem bestimmten Wert ist. Die Modulo-Operation kann den Rest nach Dividieren des dritten transienten Schreibvorgangszählers (oder des dritten Gesamtschreibvorgangswerts) durch die Blocksammlungszählschwelle berechnen. Das WMM30 kann in einigen Beispielen ermitteln, dass der dritte transiente Schreibvorgangszähler (oder der dritte Gesamtschreibvorgangswert) durch eine ganze Zahl teilbar ist, wenn der Rest einem bestimmten Wert (z. B. null) gleicht. In einigen Beispielen kann das WMM30 als Reaktion auf das Ermitteln, dass der dritte transiente Schreibvorgangszähler oder der dritte Gesamtschreibvorgangswert die Blocksammlungszählschwelle erfüllt, ermitteln, Daten neu anzuordnen, die an Seiten gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind. - Es sollte verstanden werden, dass die hier beschriebenen Schreibvorgangszählschwellen (egal, ob es sich um eine Vorrichtungs-Schreibvorgangszählschwelle, eine Blocksammlungszählschwelle oder um beliebige andere hier beschriebene Schreibvorgangszählschwellen handelt) nur Beispiele sind und dass ein beliebiger Wert für die verschiedenen Schreibvorgangszählschwellen verwendet werden kann.
- Als Reaktion auf das Ermitteln, Daten an physischen Positionen neu anzuordnen, die mit der dritten logischen Blockadressensammlung assoziiert sind, kann das WMM
30 die Daten neu anordnen, die an physischen Positionen gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert sind, indem es die physische Position von Daten, die an einer ersten logischen Adresse (z. B. an einer logischen Seite, an einem logischen Wort oder Byte) gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert ist, und eine physische Position von Daten austauscht, die an einer zweiten logischen Adresse gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert ist. In einigen Beispielen kann das WMM30 den Tausch auf Basis eines Offsetwerts durchführen, der mit der dritten logischen Blockadressensammlung assoziiert ist. Das WMM30 kann zum Beispiel Daten von einer ersten physischen Position an eine zweite physische Position austauschen, die von der ersten physischen Position um den Offsetwert versetzt ist. In einigen Beispielen verwaltet das WMM30 einen einzelnen Offsetwert für alle der logischen Blockadressensammlungen. In anderen Beispielen kann das WMM30 einen jeweiligen Offsetwert pflegen, der mit jeder jeweiligen logischen Blockadressensammlung assoziiert ist. - In einigen Beispielen kann der Offsetwert ein fester Offsetwert sein. Man betrachte beispielsweise ein Beispiel, in dem der feste Offsetwert, der mit der dritten logischen Blockadressensammlung assoziiert ist, gleich
50 ist und die dritte logische Blockadressensammlung 256 Seiten enthält. In diesem Beispiel, als Reaktion auf das Ermitteln, dass der Wert des dritten transienten Schreibvorgangszählers (oder des dritten Gesamtschreibvorgangswerts) den Schwellenwert erfüllt, kann das WMM30 eine logische Dateneinheit (z. B. eine Seite) mit Daten von einer ersten physischen Position (z. B. physische Seite-1) an eine zweite physische Position (z. B. physische Seite-51), eine logische Dateneinheit (z. B. eine Seite) von einer dritten physischen Position (z. B. physische Seite-2) an eine vierte physische Position (z. B. physische Seite-52) usw. kopieren. Wenn das WMM30 das nächste Mal ermittelt, Daten neu anzuordnen, die an physischen Positionen gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert sind, kann das WMM30 wiederum eine logische Dateneinheit (z. B. eine Seite) von der ersten physischen Position (z. B. physische Seite-1) an die zweite physische Position (z. B. physische Seite-51), eine logische Dateneinheit (z. B. eine Seite) von der dritten physischen Position (z. B. physische Seite-2) an die vierte physische Position (z. B. physische Seite-52) usw. kopieren. Deshalb kann das WMM30 nach zwei Neuanordnungsoperationen eine logische Seite von Daten, die ursprünglich an der physischen Seite-1 gespeichert waren, an die physische Seite-51 und dann an die physische Seite-101 bewegt haben. - In anderen Beispielen kann der Offsetwert ein zufälliger Offsetwert sein. Das WMM
30 kann beispielsweise den Offsetwert periodisch ändern, der mit der dritten logischen Blockadressensammlung assoziiert ist. In einigen Beispielen kann das WMM30 den zufälligen Offsetwert von einem ersten zufälligen Offsetwert (z. B.50 ) auf einen zweiten zufälligen Offsetwert (z. B. 121) aktualisieren. Das WMM30 kann den zufälligen Wert auf Basis eines Zufallszahlengenerators aktualisieren. In einigen Beispielen kann der Zufallszahlengenerator einen Wert zwischen 1 und Z generieren, wobei Z gleich einer Anzahl von physischen Dateneinheiten (z. B. Seiten, Wörtern oder Bytes) ist, die mit der logischen Blockadressensammlung assoziiert sind. Man betrachte beispielsweise ein Beispiel, in dem der feste Offsetwert, der mit der dritten logischen Blockadressensammlung assoziiert ist, anfänglich gleich50 ist und die dritte logische Blockadressensammlung 256 Seiten enthält. In diesem Beispiel kann das WMM30 eine logische Dateneinheit (z. B. eine Seite) von einer ersten physischen Position (z. B. der physischen Seite-1) an eine zweite physische Position (z. B. die physische Seite-51), eine logische Dateneinheit (z. B. eine Seite) von einer dritten physischen Position (z. B. der physischen Seite-2) an eine dritte physische Position (z. B. die physische Seite-52) usw. kopieren. Das WMM30 kann den zufälligen Offsetwert von einem Wert von50 auf einen Wert von 121 aktualisieren. Wenn das WMM30 das nächste Mal ermittelt, Daten neu anzuordnen, die an physischen Positionen gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert sind, kann das WMM30 eine logische Dateneinheit (z. B. eine Seite) von der ersten physischen Position (z. B. der physischen Seite-1) an eine fünfte physische Position (z. B. die physische Seite-122), eine logische Dateneinheit (z. B. eine Seite) von der dritten physischen Position (z. B. der physischen Seite-2) an eine sechste physische Position (z. B. die physische Seite-123) usw. kopieren. Deshalb kann das WMM30 nach zwei Neuanordnungsoperationen eine logische Seite von Daten, die ursprünglich an einer physischen Seite-1 gespeichert waren, an die physische Seite-51 und dann an die physische Seite-172 bewegt haben. - In einigen Beispielen kann das WMM
30 die verschiedenen Schreibvorgangszähler (z. B. den Vorrichtungs-Schreibvorgangszähler, die jeweiligen transienten Schreibvorgangszähler, die jeweiligen permanenten Schreibvorgangszähler oder eine beliebige Kombination darin) im flüchtigen Arbeitsspeicher12 , im NVMA10 oder in einer Kombination davon speichern. In einigen Beispielen kann das WMM30 alle der jeweiligen transienten Schreibvorgangszähler und der jeweiligen permanenten Schreibvorgangszähler im NVMA10 speichern und eine Teilmenge der jeweiligen transienten Schreibvorgangszähler und der jeweiligen permanenten Schreibvorgangszähler im flüchtigen Arbeitsspeicher12 speichern. - Als Reaktion auf das Einschalten der Speichervorrichtung
6 kann das WMM30 beispielsweise beim Hochfahren der Vorrichtung blocksammlungsspezifische Parameter laden. Anders ausgedrückt, kann das WMM30 eine Teilmenge von transienten Schreibvorgangszählern, permanenten Schreibvorgangszählern oder von beiden abrufen und kann die Teilmenge der transienten Schreibvorgangszähler und permanenten Schreibvorgangszähler in den flüchtigen Arbeitsspeicher12 laden. In einigen Beispielen kann die Teilmenge der Schreibvorgangszähler die jeweiligen Zähler enthalten, die den am häufigsten beschriebenen logischen Blockadressensammlungen, den am häufigsten gelesenen logischen Blockadressensammlungen oder beiden entsprechen. - Das WMM
30 kann zusätzliche Teilmengen der Schreibvorgangszähler abrufen, die mit jeweiligen zusätzlichen logischen Blockadressensammlungen assoziiert sind, wenn der Controller8 Schreibbefehle oder Lesebefehle empfängt, die die jeweiligen zusätzlichen logischen Blockadressensammlungen involvieren. In einigen Beispielen kann das WMM30 eine zusätzliche Teilmenge von Schreibvorgangszählern abrufen, die mit einer oder mehreren jeweiligen zusätzlichen logischen Blockadressensammlungen assoziiert sind, falls der Controller8 ermittelt, dass die jeweiligen zusätzlichen logischen Blockadressensammlungen wahrscheinlich verwendet werden, auch wenn der Controller8 keinen Befehl empfangen hat, der die zusätzliche oder die mehreren zusätzlichen logischen Blockadressensammlungen involviert. Durch Laden der jeweiligen Schreibvorgangszähler, wenn sie verwendet werden (oder es wahrscheinlich ist, dass sie verwendet werden), kann das WMM30 die Anzahl der Zähler reduzieren, die im flüchtigen Arbeitsspeicher12 gespeichert sind, was die Leistung der Speichervorrichtung6 verbessern kann. - In einigen Beispielen, wenn das WMM
30 zumindest einige der jeweiligen Schreibvorgangszähler in den flüchtigen Speicher12 lädt, kann das WMM30 die jeweiligen, im NVMA10 gespeicherten Schreibvorgangszähler periodisch aktualisieren. Das WMM30 kann die jeweiligen, im NVMA10 gespeicherten Schreibvorgangszähler aktualisieren, wenn die Speichervorrichtung6 ausgeschaltet ist (z. B. aufgrund eines absichtlichen Ausschaltens oder eines Stromausfalls). Auf diese Weise kann das WMM30 eine genauere Zählung für jeden der jeweiligen Schreibvorgangszähler bei Stromverlust der Speichervorrichtung6 bewahren. -
4A –4B sind konzeptionelle und schematische Blockdiagramme, die beispielhafte Details einer Schreibvorgangszählertabelle nach einer oder mehreren Techniken dieser Offenbarung illustrieren.4A illustriert beispielhafte Details einer Schreibvorgangszählertabelle40 vor Durchführen eines Inter-Blocksammlungs-Abnutzungsausgleichsvorgangs. Anders ausgedrückt, illustriert die in4A gezeigte Schreibvorgangszählertabelle40 die jeweiligen Werte der jeweiligen Schreibvorgangszähler vor dem Austausch der physischen Positionen der Daten, die an den logischen Blockadressen in einer ersten logischen Blockadressensammlung gespeichert sind, und der physischen Positionen der Daten, die an den logischen Blockadressen in einer zweiten logischen Blockadressensammlung gespeichert sind. Gleichermaßen illustriert4B die jeweiligen Werte der jeweiligen Schreibvorgangszähler nach dem Austausch der physischen Positionen der Daten, die an den logischen Blockadressen in einer ersten logischen Blockadressensammlung gespeichert sind, und der physischen Positionen der Daten, die an den logischen Blockadressen in einer zweiten logischen Blockadressensammlung gespeichert sind. Die Datenstruktur wird nur zur einfachen Illustration als eine Schreibvorgangszählertabelle40 beschrieben; die Informationen in der Schreibvorgangszählertabelle40 können jedoch in einem beliebigen Typ von Datenstruktur, wie einem Array, einer Datenbank oder Ähnlichem, gespeichert werden. Zu Illustrationszwecken wird die Schreibvorgangszählertabelle40 in Bezug auf1 und3 beschrieben. - Die Schreibvorgangszählertabelle
40 kann Schreibvorgangszählerwerte speichern, die jeweils mit der jeweiligen logischen Blockadressensammlung assoziiert sind. Die Schreibvorgangszählertabelle40 kann zum Beispiel „n” Zeilen enthalten, eine Zeile für jede logische Blockadressensammlung. Jede Zeile kann eine Vielzahl an Spalten enthalten, wobei jede Spalte jeweilige Schreibvorgangszähler enthält, die mit jeweiligen logischen Blockadressensammlungen assoziiert sind. - Die Schreibvorgangszählertabelle
40 kann zum Beispiel mindestens eine der folgenden Spalten enthalten: logische Blockadressensammlung42 , physischer Blockadressbereich44 , transienter Schreibvorgangszähler46 , permanenter Schreibvorgangszähler48 oder Gesamtzählwert50 . In einigen Beispielen kann die Schreibvorgangszählertabelle40 eine oder mehrere der Spalten42 –50 weglassen, kann andere Spalten enthalten, die andere Informationen speichern, oder eine Kombination davon. Die logische Blockadressensammlung42 kann einen eindeutigen logischen Blockadressenidentifikator enthalten, um die logische Blockadressensammlung zu identifizieren. Der physische Blockadressenbereich44 kann einen Hinweis auf die physischen Blockadressen speichern, die der logischen Blockadresse innerhalb der jeweiligen logischen Blockadressensammlung entsprechen. Der transiente Schreibvorgangszähler46 kann eine Zählung der Anzahl an Malen speichern, die Daten in die jeweilige logische Blockadressensammlung über einen bestimmten Zeitraum geschrieben wurden (z. B. seit dem letzten Abnutzungsausgleichsvorgang, der vom Controller8 durchgeführt wurde und die jeweilige logische Blockadressensammlung involvierte). Der permanente Schreibvorgangszähler48 kann eine Zählung der Anzahl an Malen speichern, die Daten in die jeweilige logische Blockadressensammlung über die Lebensdauer der Speichervorrichtung6 oder über die Lebensdauer der Speichervorrichtung6 vor dem letzten Inter-Blocksammlungs-Abnutzungsausgleichsvorgang geschrieben wurden, der die jeweilige logische Blockadressensammlung involvierte. Der Gesamtschreibvorgangswert50 speichert eine Zählung der Gesamtanzahl der Male, die Daten in die jeweilige logische Blockadressensammlung geschrieben wurden. In einigen Beispielen kann das WMM30 den Gesamtschreibvorgangswert50 nicht tatsächlich speichern (z. B., um die Speichermenge zu reduzieren, die erforderlich ist, um die Zähler zu speichern) und kann die Gesamtanzahl an Malen, die Daten in eine logische Blockadressensammlung geschrieben wurden, durch Summieren des Werts des jeweiligen transienten Schreibvorgangszählers und des Werts des jeweiligen permanenten Schreibvorgangszählers berechnen. - In einigen Beispielen kann das WMM
30 als Reaktion auf ein Ermitteln, dass ein Vorrichtungs-Schreibvorgangszähler einen Schwellenwert erfüllt, ermitteln, ob die physischen Positionen der Daten, die an den logischen Blockadressen in einer ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in einer zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind. Das WMM30 kann auf Basis der jeweiligen transienten Schreibvorgangszähler46 , der jeweiligen permanenten Schreibvorgangszähler48 , des Gesamtschreibvorgangswerts50 oder einer Kombination daraus ermitteln, ob auszutauschen ist. In einigen Beispielen kann das WMM30 auf Basis eines Vergleichs des Schreibvorgangszählers (z. B. des transienten Schreibvorgangszählers46 , des permanenten Schreibvorgangszählers48 oder des Gesamtschreibvorgangswerts50 ) mit dem größten Wert mit dem Schreibvorgangszähler mit dem größten Wert ermitteln, ob auszutauschen ist. In einigen Fällen kann es ermitteln, welcher Schreibvorgangszähler den größten Wert speichert und welcher Schreibvorgangszähler den kleinsten Wert speichert, indem es die transienten Schreibvorgangszählerwerte44 vom größten zum kleinsten sortiert. In anderen Fällen kann das WMM30 ermitteln, welcher Schreibvorgangszähler den größten Wert speichert und welcher Schreibvorgangszähler den kleinsten Wert speichert, indem es eine Vorrangwarteschlange einsetzt. - In einigen Beispielen kann das WMM
30 auf Basis der in den Gleichungen 3 und 4 gezeigten Austauschbedingungen ermitteln, wie oben beschrieben, ob physische Positionen auszutauschen sind. Auf4A Bezug nehmend, kann das WMM30 ermitteln, dass der größte Gesamtschreibvorgangswert50 mit der logischen Blockadressensammlung (Nr. 5) assoziiert ist und dass der kleinste Gesamtschreibvorgangswert50 mit der logischen Blockadressensammlung (Nr. 3) assoziiert ist. Deshalb kann der Wert des transienten Schreibvorgangszählers, der mit der logischen Blockadressensammlung (Nr. 5) assoziiert ist, als C5,TRANS bezeichnet werden, der Gesamtschreibvorgangswert, der mit der logischen Blockadressensammlung (Nr. 5) assoziiert ist, kann als C5,TOTAL bezeichnet werden, der Wert des transienten Schreibvorgangszählers, der mit der logischen Blockadressensammlung (Nr. 3) assoziiert ist, kann als C3,TRANS bezeichnet werden und der Gesamtschreibvorgangswert, der mit der logischen Blockadressensammlung (Nr. 3) assoziiert ist, kann als C3,TOTAL bezeichnet werden. Substituieren in die Gleichungen 3 und 4 ergibt Gleichungen 5 und 6:C5,TOTAL > P·C3,TOTAL und Gleichung 5 C5,TRANS > C3,TRANS Gleichung 6 - Falls C5,TRANS = 1100, C5,TOTAL = 5350, C3,TRANS = 50, C3,TOTAL = 550 und die vorbestimmte Zahl P = 2, kann das WMM
30 ermitteln, die physische Position von Daten, die an der logischen Blockadresse in der logischen Blockadressensammlung (Nr. 5) gespeichert sind, und die physische Position von Daten, die an der logischen Blockadresse in der logischen Blockadressensammlung (Nr. 3) gespeichert sind, auszutauschen, da beide Gleichungen 5 und 6 wahr sind. Deshalb kann, wie durch4B illustriert, die physische Position von Daten, die mit der logischen Blockadressensammlung (Nr. 5) assoziiert sind, vom physischen Blockadressbereich (9, 10) in den physischen Blockadressbereich (5, 6) ausgetauscht werden. Gleichermaßen kann die physische Position von Daten, die mit der logischen Blockadressensammlung (Nr. 3) assoziiert sind, vom physischen Blockadressbereich (5, 6) in den physischen Blockadressbereich (9, 10) ausgetauscht werden. - Auf ähnliche Weise kann das WMM
30 den zweitgrößten Gesamtschreibvorgangswert, den zweitkleinsten Gesamtschreibvorgangswert ermitteln und kann ermitteln, ob physische Positionen der Daten auszutauschen sind, die mit dem zweitgrößten Gesamtschreibvorgangswert und dem zweitkleinsten Gesamtschreibvorgangswert assoziiert sind. Auf4A Bezug nehmend, kann das WMM30 ermitteln, dass der zweitgrößte Gesamtschreibvorgangswert50 mit der logischen Blockadressensammlung (Nr. 1) assoziiert ist und dass der kleinste Gesamtschreibvorgangswert50 mit der logischen Blockadressensammlung (Nr. 2) assoziiert ist. Deshalb kann der Wert des transienten Schreibvorgangszählers, der mit der logischen Blockadressensammlung (Nr. 1) assoziiert ist, als C1,TRANS bezeichnet werden, der Gesamtschreibvorgangswert, der mit der logischen Blockadressensammlung (Nr. 1) assoziiert ist, kann als C1,TOTAL bezeichnet werden, der Wert des transienten Schreibvorgangszählers, der mit der logischen Blockadressensammlung (Nr. 2) assoziiert ist, kann als C2,TRANS bezeichnet werden und der Gesamtschreibvorgangswert, der mit der logischen Blockadressensammlung (Nr. 2) assoziiert ist, kann als C2,TOTAL bezeichnet werden. Substituieren in die Gleichungen 3 und 4 ergibt Gleichungen 7 und 8:C1,TOTAL > P·C2,TOTAL und Gleichung 7 C1,TRANS > C2,TRANS Gleichung 8 - Falls C1,TRANS = 1200, C1,TOTAL = 3200, C2,TRANS = 200, C2,TOTAL = 600 und die vorbestimmte Zahl P = 2, kann das WMM
30 ermitteln, die physische Position von Daten, die an der logischen Blockadresse in der logischen Blockadressensammlung (Nr. 1) gespeichert sind, und die physische Position von Daten, die an der logischen Blockadresse in der logischen Blockadressensammlung (Nr. 2) gespeichert sind, auszutauschen, da beide Gleichungen 7 und 8 wahr sind. Deshalb kann, wie durch4B illustriert, die physische Position von Daten, die mit der logischen Blockadressensammlung (Nr. 1) assoziiert sind, vom physischen Blockadressbereich (1, 2) in den physischen Blockadressbereich (3, 4) ausgetauscht werden. Gleichermaßen kann die physische Position von Daten, die mit der logischen Blockadressensammlung (Nr. 2) assoziiert sind, vom physischen Blockadressbereich (3, 4) in den physischen Blockadressbereich (1, 2) ausgetauscht werden. - Das WMM
30 kann diesen Prozess fortsetzen, bis es keine Kombinationen von logischen Blockadressensammlungen und mit den jeweiligen logischen Blockadressensammlungen assoziierten Schreibvorgangszählern mehr gibt, die die Austauschgleichungen erfüllen. - Als Reaktion auf das Austauschen von physischen Positionen von Daten, die an logischen Blockadressen in einer ersten logischen Blockadressensammlung gespeichert sind, und von physischen Positionen von Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, kann das WMM
30 den Wert des ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, um den Wert des ersten transienten Schreibvorgangszählers erhöhen. Gleichermaßen kann das WMM30 den Wert des zweiten permanenten Schreibvorgangszählers, der mit der zweiten logischen Blockadressensammlung assoziiert ist, um den Wert des zweiten transienten Schreibvorgangszählers erhöhen. Das WMM30 kann zum Beispiel die jeweiligen Werte des transienten Schreibvorgangszählers und die jeweiligen Werte des permanenten Schreibvorgangszählers summieren, die mit der logischen Blockadressensammlung (Nr. 5) assoziiert sind. Deshalb kann das WMM30 den Wert des transienten Schreibvorgangszählers, der mit der logischen Blockadressensammlung (Nr. 5) assoziiert ist, von 4250 auf 5350 erhöhen. Gleichermaßen kann das WMM30 den Wert der permanenten Schreibvorgangszähler erhöhen, die mit logischen Blockadressensammlungen (Nr. 1, 2 und 3) assoziiert sind. - In einigen Beispielen kann das WMM
30 nach Summieren des Werts des jeweiligen transienten Schreibvorgangszählers und des permanenten Schreibvorgangszählers den Wert der jeweiligen permanenten Schreibvorgangszähler und den Wert der jeweiligen Gesamtschreibvorgangszähler austauschen, die mit jeder jeweiligen logischen Blockadressensammlung assoziiert sind. Falls beispielsweise nach Summieren der jeweiligen transienten Schreibvorgangszähler und der jeweiligen permanenten Schreibvorgangszähler C5,PERM = 5350 und C3,PERM = 550, kann das WMM30 den Wert der aktualisierten permanenten Schreibvorgangszähler so austauschen, dass nach dem Austausch C5,PERM = 550 und C3,PERM = 5350. Deshalb spiegelt der permanente Schreibvorgangszähler C3,PERM nach dem Austausch die Gesamtanzahl an Schreibvorgängen in den physischen Blockadressbereich (9, 10) wider und der permanente Schreibvorgangszähler C5,PERM spiegelt die Gesamtanzahl an Schreibvorgängen in den physischen Blockadressbereich (5, 6) wider. Auf diese Weise können die permanenten Schreibvorgangszähler50 den physischen Positionen der Daten entsprechen und können die tatsächliche Anzahl an Schreibvorgängen in die jeweiligen physischen Blockadressen nachverfolgen. - Als weitere Reaktion auf das Austauschen von physischen Positionen von Daten, die an logischen Blockadressen in einer ersten logischen Blockadressensammlung gespeichert sind, und von physischen Positionen von Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, kann das WMM
30 die jeweiligen transienten Schreibvorgangszähler46 aktualisieren, indem es den Wert der jeweiligen transienten Schreibvorgangszähler auf einen Grundwert (z. B. null) setzt. Das WMM30 kann beispielsweise den Wert der transienten Schreibvorgangszähler auf null setzen, die mit den logischen Blockadressensammlungen (Nr. 1, 2, 3 und 5) assoziiert sind. -
5 ist ein Ablaufdiagramm, das beispielhafte Abnutzungsausgleichsvorgänge eines Festkörperlaufwerts nach einer oder mehreren Techniken dieser Offenbarung illustriert. Zur einfachen Illustration wird die beispielhafte Methode von5 mit gleichzeitigem Bezug auf die Speichervorrichtung6 und den Controller8 von1 und3 beschrieben. Die Techniken können jedoch mit einer beliebigen Kombination aus Hardware und Software verwendet werden. - Das WMM
30 kann ermitteln, ob physische Positionen von Daten, die an logischen Blockadressen in einer ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen von Daten, die an logischen Blockadressen in einer zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind (52 ). In einigen Beispielen kann das WMM30 auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit der zweiten logischen Blockadressensammlung assoziiert ist, ermitteln, ob die physischen Positionen der Daten auszutauschen sind. In anderen Beispielen kann das WMM30 auf Basis der Summe des Werts eines ersten transienten Schreibvorgangszählers und eines ersten permanenten Schreibvorgangszählers, die mit der ersten logischen Blockadressensammlung assoziiert sind, auch als der erste Gesamtschreibvorgangswert bezeichnet, und der Summe des Werts eines zweiten transienten Schreibvorgangszählers und eines zweiten permanenten Schreibvorgangszählers, die mit der zweiten logischen Blockadressensammlung assoziiert sind, auch als der zweite Gesamtschreibvorgangswert bezeichnet, ermitteln, ob die physischen Positionen der Daten auszutauschen sind. In anderen Beispielen kann das WMM30 auf Basis des ersten transienten Schreibvorgangswerts und des ersten Gesamtschreibvorgangswerts, die mit der ersten logischen Blockadressensammlung assoziiert sind, und des zweiten transienten Schreibvorgangswerts und des zweiten Gesamtschreibvorgangswerts, die mit der zweiten logischen Blockadressensammlung assoziiert sind, ermitteln, ob die physischen Positionen der Daten auszutauschen sind. - Als Reaktion auf ein Ermitteln, dass die physischen Positionen der an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind, kann das WMM
30 die physischen Positionen der an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und die physischen Positionen der an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten austauschen (54 ). Das WMM30 kann zum Beispiel Daten, die an einer ersten physischen Position gespeichert sind, die mit dem ersten transienten Schreibvorgangszähler assoziiert ist, an eine dritte physische Position (z. B. in eine andere Arbeitsspeichervorrichtung16 oder in einen flüchtigen Arbeitsspeicher12 ) kopieren, Daten, die an der zweiten physischen Position gespeichert sind, die mit dem zweiten transienten Schreibvorgangszähler assoziiert ist, an die erste physische Position kopieren und die Daten von der dritten physischen Position an die zweite physische Position kopieren. -
6 ist ein Ablaufdiagramm, das beispielhafte Abnutzungsausgleichsvorgänge eines Festkörperlaufwerks nach einer oder mehreren Techniken dieser Offenbarung illustriert. Zur einfachen Illustration wird die beispielhafte Methode von7 mit gleichzeitigem Bezug auf die Speichervorrichtung6 und den Controller8 von1 und3 beschrieben. Die Techniken können jedoch mit einer beliebigen Kombination aus Hardware und Software verwendet werden. - In einigen Beispielen kann das WMM
30 blocksammlungsspezifische Parameter beim Hochfahren der Vorrichtung laden (62 ). Das WMM30 kann zum Beispiel eine Vielzahl von transienten Schreibvorgangszählern, die jeweils mit einer jeweiligen logischen Blockadressensammlung einer Vielzahl von logischen Blockadressensammlungen assoziiert sind, eine Vielzahl von permanenten Schreibvorgangszählern, die jeweils mit einer jeweiligen logischen Blockadressensammlung der Vielzahl von logischen Blockadressensammlungen assoziiert sind, oder beides abrufen. Das WMM30 kann die Vielzahl der transienten Schreibvorgangszähler und/oder der permanenten Schreibvorgangszähler in den flüchtigen Arbeitsspeicher12 laden. In einigen Beispielen kann die Vielzahl der transienten und/oder permanenten Schreibvorgangszähler die jeweiligen transienten und/oder permanenten Schreibvorgangszähler enthalten, die den am häufigsten beschriebenen logischen Blockadressensammlungen, den am häufigsten gelesenen logischen Blockadressensammlungen oder beidem entsprechen. - Das Schreibmodul
24 kann Daten in eine erste logische Blockadressensammlung schreiben (64 ). Das Schreibmodul24 kann zum Beispiel einen Schreibbefehl von der Hostvorrichtung4 empfangen, der Daten und eine logische Blockadresse enthält, eine physische Position (z. B. eine PBA) innerhalb einer bestimmten Arbeitsspeichervorrichtung16 auswählen, um die Daten zu speichern, und die Daten in der ausgewählten physischen Position speichern. In einigen Beispielen kann das WMM30 eine erste logische Blockadressensammlung ermitteln, die die logische Blockadresse enthält. Als Reaktion auf das Schreiben der Daten in die erste physische Position kann das WMM30 einen ersten transienten Schreibvorgangszähler (C1,TRANS) aktualisieren, der mit der ersten logischen Blockadressensammlung assoziiert ist (66 ). Das WMM30 kann zum Beispiel den Wert des ersten transienten Schreibvorgangszählers um eins erhöhen. - In einigen Beispielen kann das WMM
30 auf Basis einer Summe des ersten transienten Schreibvorgangszählers (C1,TRANS) und des ersten permanenten Schreibvorgangszählers (C1,PERM), die mit der ersten logischen Blockadressensammlung assoziiert sind, ermitteln, ob Daten neu anzuordnen sind, die an physischen Positionen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind. Das WMM30 kann zum Beispiel ermitteln, ob eine Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung (C1,TRANS + C1,PERM) eine Blocksammlungszählschwelle erfüllt (68 ). In einigen Beispielen kann das WMM30 ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung eine Blocksammlungszählschwelle erfüllt, wenn die Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung gleich einer von einer Vielzahl von Blocksammlungszählschwellen ist oder diese überschreitet. In anderen Beispielen kann das WMM30 ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung eine Blocksammlungszählschwelle erfüllt, wenn die Gesamtanzahl an Schreibvorgängen in die zweite logische Blockadressensammlung durch eine ganze Zahl teilbar ist. - Als Reaktion auf das Ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung eine Blocksammlungszählschwelle erfüllt, kann das WMM
30 auf Basis eines zufälligen Offsetwerts Daten neu anordnen, die an physischen Positionen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind (70 ). Das WMM30 kann zum Beispiel die Daten neu anordnen, die an physischen Positionen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind, indem es die physische Position von Daten, die an einer ersten logischen Adresse (z. B. einer logischen Seite, einem logischen Wort oder Byte) gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert ist, und eine physische Position von Daten austauscht, die an einer zweiten logischen Adresse (z. B. einer logischen Seite oder einem logischen Wort) gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert ist. In einigen Beispielen kann das WMM30 den Austausch auf Basis eines zufälligen Offsetwerts durchführen, der mit der ersten logischen Blockadressensammlung assoziiert ist. Das WMM30 kann zum Beispiel Daten von einer ersten physischen Position an eine zweite physische Position austauschen, die von der ersten physischen Position um den zufälligen Offsetwert versetzt ist. - Das WMM
30 kann den zufälligen Offsetwert aktualisieren (72). Das WMM30 kann zum Beispiel eine zufällige Zahl generieren und den zufälligen Offsetwert gleich dem Wert setzen, der vom Zufallszahlengenerator generiert wurde. - In einigen Beispielen kann das WMM
30 ermitteln, ob eine Gesamtanzahl an Schreibvorgängen in die Schreibvorrichtung6 seit dem letzten Austausch (z. B. seit dem letzten Inter-Blocksammlungs-Abnutzungsausgleich) eine Schwellenanzahl an Schreibvorgängen erfüllt (74 ). In einigen Fällen kann das WMM30 ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die Speichervorrichtung6 seit dem Austausch einen Schwellenwert erfüllt, wenn ein Wert eines Vorrichtungs-Schreibvorgangszählers gleich einer von einer Vielzahl von Vorrichtungs-Schreibvorgangszählschwellen ist. In anderen Fällen kann das WMM30 ermitteln, dass der Vorrichtungs-Schreibvorgangszähler einen Schwellenwert erfüllt, wenn der Wert des Vorrichtungs-Schreibvorgangszählers größer oder gleich einer Vorrichtungs-Schreibvorgangszählschwelle ist. In noch anderen Fällen kann das WMM30 ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die Speichervorrichtung6 seit dem letzten Austausch einen Schwellenwert erfüllt, wenn der Vorrichtungs-Schreibvorgangszähler durch eine ganze Zahl teilbar ist. - Das WMM
30 kann als Reaktion auf das Ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die Speichervorrichtung6 die Schwellenanzahl an Schreibvorgängen erfüllt, ermitteln, ob die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten auszutauschen sind, die an logischen Blockadressen in der dritten logischen Blockadressensammlung gespeichert sind. Das WMM30 kann ermitteln, ob die physischen Positionen der Daten auszutauschen sind, indem es ermittelt, ob ein Gesamtschreibvorgangswert (C2,TOTAL), der mit der zweiten Blocksammlung assoziiert ist, größer als eine vorbestimmte Zahl P multipliziert mit dem Gesamtschreibvorgangswert (C3,TOTAL) ist, der mit einer dritten Blocksammlung assoziiert ist, und ob ein transienter Schreibvorgangszähler (C2,TRANS), der mit der zweiten Blocksammlung assoziiert ist, größer als ein transienter Schreibvorgangszähler (C3,TRANS) ist, der mit der dritten Blocksammlung assoziiert ist. - Als Reaktion auf ein Ermitteln, dass C2,ToTAL > P·C3,ToTAL und C2,TRANS > C3,TRANS, kann das WMM
30 die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der dritten logischen Blockadressensammlung gespeichert sind, austauschen (80 ). Das WMM30 kann zum Beispiel Daten, die an einer ersten physischen Position gespeichert sind, die mit dem ersten transienten Schreibvorgangszähler assoziiert ist, an eine dritte physische Position (z. B. in eine andere Arbeitsspeichervorrichtung16 oder in einen flüchtigen Arbeitsspeicher12 ) kopieren, Daten, die an der zweiten physischen Position gespeichert sind, die mit dem zweiten transienten Schreibvorgangszähler assoziiert ist, an die erste physische Position kopieren und die Daten von der dritten physischen Position an die zweite physische Position kopieren. Das WMM30 kann bewirken, dass das Adressenübersetzungsmodul22 die Flash-Übersetzungsschicht oder Umleitungstabelle aktualisiert, um anzuzeigen, dass die erste logische Blockadressensammlung nun der zweiten physischen Position entspricht und dass die zweite logische Blockadressensammlung nun der ersten physischen Position entspricht. - Die in dieser Offenbarung beschriebenen Techniken können zumindest teilweise in Hardware, Software, Firmware oder einer beliebigen Kombination dieser implementiert werden. Verschiedene Aspekte der hier beschriebenen Techniken können zum Beispiel in einem oder mehreren Prozessoren implementiert werden, einschließlich eines oder mehrerer Mikroprozessoren, digitaler Signalprozessoren (DSPs), anwendungsspezifischer integrierter Schaltungen (ASICs), Field Programmable Gate Arrays (FPGAs) oder eines anderen gleichwertigen integrierten oder diskreten Logikschaltkreises sowie beliebiger Kombinationen solcher Komponenten. Der Begriff „Prozessor” oder „verarbeitender Schaltkreis” kann sich allgemein auf irgendeinen der vorangehenden Logikschaltkreise, alleine oder in Kombination mit anderen Logikschaltkreisen, oder irgendeinen anderen gleichwertigen Schaltkreis beziehen. Eine Steuereinheit, die Hardware enthält, kann auch eine oder mehrere der Techniken dieser Offenbarung durchführen.
- Derartige Hardware, Software oder Firmware kann innerhalb der gleichen Vorrichtung oder innerhalb separater Vorrichtungen implementiert werden, um die diversen, in dieser Offenbarung beschriebenen Techniken zu unterstützen. Zusätzlich können beliebige der beschriebenen Einheiten, Module oder Komponenten zusammen oder separat als diskrete, jedoch interoperable Logikvorrichtungen implementiert werden. Die Darstellung unterschiedlicher Merkmale als Module oder Einheiten soll unterschiedliche funktionale Aspekte hervorheben und deutet nicht unbedingt an, dass diese Module oder Einheiten von separaten Hardware-, Firmware- oder Softwarekomponenten realisiert werden müssen. Vielmehr kann die zu einem oder mehreren Modulen oder einer oder mehreren Einheiten gehörige Funktionalität von separaten Hardware-, Firmware- oder Softwarekomponenten durchgeführt oder innerhalb gemeinsamer oder separater Hardware-, Firmware- oder Softwarekomponenten integriert werden.
- Die in dieser Offenbarung beschriebenen Techniken können auch in einem Fabrikat einschließlich eines computerlesbaren Speichermediums, das mit Anweisungen codiert ist, ausgeführt oder codiert sein. In einem Fabrikat eingebettete oder codierte Anweisungen, einschließlich eines codierten computerlesbaren Speichermediums, können bewirken, dass ein oder mehrere programmierbare Prozessoren oder andere Prozessoren eine oder mehrere der hier beschriebenen Techniken implementieren, wie zum Beispiel, wenn Anweisungen, die im computerlesbaren Speichermedium enthaltenen oder codierten Anweisungen von dem einen oder den mehreren Prozessoren ausgeführt werden. Computerlesbare Speichermedien können Arbeitsspeicher mit wahlfreiem Zugriff (RAM), Read-Only Memory (ROM), Programmable Read-Only Memory (PROM), Erasable Programmable Read-Only Memory (EPROM), Electronically Erasable Programmable Read-Only Memory (EEPROM), Flashspeicher, eine Festplatte, ein Compact Disc Read-Only Memory (CD-ROM), eine Diskette, eine Kassette, magnetische Medien, optische Medien oder andere computerlesbare Medien enthalten. In manchen Beispielen kann ein Fabrikat ein oder mehrere computerlesbare Speichermedien enthalten.
- In manchen Beispielen kann ein computerlesbares Speichermedium ein nicht transitorisches Medium enthalten. Der Begriff „nicht transitorisch” kann anzeigen, dass das Speichermedium nicht in einer Trägerwelle oder einem verbreiteten Signal ausgeführt ist. In bestimmten Beispielen kann ein nicht transitorisches Speichermedium Daten speichern, die sich mit der Zeit ändern können (z. B. in einem RAM oder Zwischenspeicher).
- Verschiedene Beispiele sind beschrieben worden. Diese und andere Beispiele liegen im Umfang der folgenden Ansprüche.
Claims (20)
- System, das Folgendes umfasst: eine Vielzahl von Arbeitsspeichervorrichtungen, die eine Vielzahl von physischen Positionen umfassen, an denen Daten gespeichert sind; einen Prozessor, der konfiguriert ist: auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, zu ermitteln, ob physische Positionen von an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeicherten Daten und physische Positionen von an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeicherten Daten auszutauschen sind, wobei: der Wert des ersten transienten Schreibvorgangszählers gleich einer Anzahl an Malen ist, die Daten seit einem vorherigen, die erste logische Blockadressensammlung involvierenden Datenaustausch in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers gleich einer Anzahl an Malen ist, die Daten seit einem vorherigen, die zweite logische Blockadressensammlung involvierenden Datenaustausch in die zweite logische Blockadressensammlung geschrieben wurden; und als Reaktion auf das Ermitteln, dass die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: die physischen Positionen der Daten, die an den logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen.
- System nach Anspruch 1, wobei der Prozessor konfiguriert ist, zu ermitteln, ob physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, zumindest durch Folgendes auszutauschen sind: Ermitteln, ob der Wert des ersten transienten Schreibvorgangszählers größer als eine vorbestimmte Zahl multipliziert mit dem Wert des zweiten transienten Schreibvorgangszählers ist.
- System nach Anspruch 1, wobei der Prozessor konfiguriert ist, zu ermitteln, ob physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, zumindest durch Folgendes auszutauschen sind: Summieren des Werts des ersten transienten Schreibvorgangszählers mit einem Wert eines ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, um einen ersten Gesamtschreibvorgangswert zu ermitteln, der eine Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung anzeigt, wobei der Wert des ersten permanenten Schreibvorgangszählers gleich der Anzahl an Malen ist, die Daten in die erste logische Blockadressensammlung vor einem vorherigen, die erste logische Blockadressensammlung involvierenden Datenaustausch geschrieben wurden; Summieren des Werts des zweiten transienten Schreibvorgangszählers mit einem Wert eines zweiten permanenten Schreibvorgangszählers, der mit der zweiten logischen Blockadressensammlung assoziiert ist, um einen zweiten Gesamtschreibvorgangswert zu ermitteln, der eine Gesamtanzahl an Schreibvorgängen in die zweite logische Blockadressensammlung anzeigt, wobei der Wert des zweiten permanenten Schreibvorgangszählers gleich der Anzahl an Malen ist, die Daten in die zweite logische Blockadressensammlung vor einem vorherigen, die zweite logische Blockadressensammlung involvierenden Datenaustausch geschrieben wurden; und Ermitteln, ob der erste Gesamtschreibvorgangswert größer als eine vorbestimmte Zahl multipliziert mit dem zweiten Gesamtschreibvorgangswert ist.
- System nach Anspruch 1, wobei der Prozessor ferner konfiguriert ist: als Reaktion auf das Ermitteln, dass eine Summe des Werts des ersten transienten Schreibvorgangszählers und eines Werts eines ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, eine Blocksammlungsschreibzählschwelle überschreitet, physische Positionen von Daten, die an logischen Adressen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind, auf Basis eines Offsetwerts neu anzuordnen, der mit der ersten logischen Blockadressensammlung assoziiert ist; und den Offsetwert zu aktualisieren, der zumindest mit der ersten logischen Blockadressensammlung assoziiert ist.
- System nach Anspruch 1, wobei der Prozessor ferner konfiguriert ist, als Reaktion auf das Ermitteln, dass physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: einen Wert eines ersten permanenten Schreibvorgangszählers, der mit der ersten Blocksammlung assoziiert ist, um den Wert des ersten transienten Schreibvorgangszählers zu erhöhen; und einen Wert eines zweiten permanenten Schreibvorgangszählers, der mit der zweiten Blocksammlung assoziiert ist, um den Wert des zweiten transienten Schreibvorgangszählers zu erhöhen.
- System nach Anspruch 1, das ferner Folgendes umfasst: eine Datenspeichervorrichtung, die Folgendes umfasst: die Vielzahl der Arbeitsspeichervorrichtungen; und den Prozessor.
- System nach Anspruch 1, das ferner Folgendes umfasst: eine Datenspeichervorrichtung, die die Vielzahl der Arbeitsspeichervorrichtungen umfasst; und eine Hostvorrichtung, die den Prozessor umfasst.
- System nach Anspruch 1, wobei der Prozessor ferner konfiguriert ist: als weitere Reaktion auf das Ermitteln, dass die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: den Wert des ersten transienten Zählers und den Wert des zweiten transienten Schreibvorgangszählers gleich einem Grundwert zu setzen.
- Verfahren, das Folgendes umfasst: Ermitteln, durch einen Prozessor, auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, ob physische Positionen von Daten, die in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen von Daten, die in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, wobei: der Wert des ersten transienten Schreibvorgangszählers gleich einer Anzahl an Malen ist, die Daten seit einem vorherigen, die erste logische Blockadressensammlung involvierenden Datenaustausch in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers gleich einer Anzahl an Malen ist, die Daten seit einem vorherigen, die zweite logische Blockadressensammlung involvierenden Datenaustausch in die zweite logische Blockadressensammlung geschrieben wurden; und als Reaktion auf das Ermitteln, dass die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: Bewirken durch den Prozessor, dass die physischen Positionen der Daten, die an den logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, mit den physischen Positionen der Daten ausgetauscht werden, die an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind.
- Verfahren nach Anspruch 9, wobei das Ermitteln, ob physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, Folgendes umfasst: Ermitteln durch den Prozessor, ob der Wert des ersten transienten Schreibvorgangszählers größer als eine vorbestimmte Zahl multipliziert mit dem Wert des zweiten transienten Schreibvorgangszählers ist.
- Verfahren nach Anspruch 9, wobei das Ermitteln, ob physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, Folgendes umfasst: Summieren, durch den Prozessor, des Werts des ersten transienten Schreibvorgangszählers mit einem Wert eines ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, um einen ersten Gesamtschreibvorgangswert zu ermitteln, der eine Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung anzeigt, wobei der Wert des ersten permanenten Schreibvorgangszählers gleich der Anzahl an Malen ist, die Daten in die erste logische Blockadressensammlung vor einem vorherigen, die erste logische Blockadressensammlung involvierenden Datenaustausch geschrieben wurden; Summieren, durch den Prozessor, des Werts des zweiten transienten Schreibvorgangszählers mit einem Wert eines zweiten permanenten Schreibvorgangszählers, der mit der zweiten logischen Blockadressensammlung assoziiert ist, um einen zweiten Gesamtschreibvorgangswert zu ermitteln, der eine Gesamtanzahl an Schreibvorgängen in die zweite logische Blockadressensammlung anzeigt, wobei der Wert des zweiten permanenten Schreibvorgangszählers gleich der Anzahl an Malen ist, die Daten in die zweite logische Blockadressensammlung vor einem vorherigen, die zweite logische Blockadressensammlung involvierenden Datenaustausch geschrieben wurden; und Ermitteln durch den Prozessor, ob der erste Gesamtschreibvorgangswert größer als eine vorbestimmte Zahl multipliziert mit dem zweiten Gesamtschreibvorgangswert ist.
- Verfahren nach Anspruch 9, das ferner Folgendes umfasst: als Reaktion auf das Ermitteln, dass eine Summe des Werts des ersten transienten Schreibvorgangszählers und eines Werts eines ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, eine Blocksammlungsschreibzählschwelle überschreitet, Neuanordnen, durch den Prozessor, von physischen Positionen von Daten, die an logischen Adressen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind, auf Basis eines Offsetwerts, der mit der ersten logischen Blockadressensammlung assoziiert ist; und Aktualisieren des Offsetwerts, der zumindest mit der ersten logischen Blockadressensammlung assoziiert ist, durch den Prozessor.
- Verfahren nach Anspruch 9, das ferner Folgendes umfasst: als Reaktion auf das Ermitteln, dass physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: Erhöhen eines Werts eines ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, um den Wert des ersten transienten Schreibvorgangszählers durch den Prozessor; und Erhöhen eines Werts eines zweiten permanenten Schreibvorgangszählers, der mit der zweiten Blocksammlung assoziiert ist, um den Wert des zweiten transienten Schreibvorgangszählers durch den Prozessor.
- Verfahren nach Anspruch 9, wobei das Ermitteln, ob die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, und die physischen Positionen von Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, als Reaktion auf ein Ermitteln durch den Prozessor erfolgt, dass ein Wert eines Vorrichtungs-Schreibvorgangszählers eine Vorrichtungs-Schreibvorgangszählschwelle erfüllt.
- Verfahren nach Anspruch 9, das ferner Folgendes umfasst: als weitere Reaktion auf das Ermitteln, dass die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: Setzen des Werts des ersten transienten Zählers und des Werts des zweiten transienten Schreibvorgangszählers gleich einem Grundwert durch den Prozessor.
- Computerlesbares Speichermedium, das Anweisungen speichert, die, wenn sie ausgeführt werden, bewirken, dass ein Prozessor: auf Basis eines Werts eines ersten transienten Schreibvorgangszählers, der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers, der mit einer zweiten logischen Blockadressensammlung assoziiert ist, ermittelt, ob physische Positionen von Daten, die in einer ersten logischen Blockadressensammlung einer Speichervorrichtung gespeichert sind, und physische Positionen von Daten, die in einer zweiten logischen Blockadressensammlung einer Speichervorrichtung gespeichert sind, auszutauschen sind, wobei: der Wert des ersten transienten Schreibvorgangszählers gleich einer Anzahl an Malen ist, die Daten seit einem vorherigen, die erste logische Blockadressensammlung involvierenden Datenaustausch in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers gleich einer Anzahl an Malen ist, die Daten seit einem vorherigen, die zweite logische Blockadressensammlung involvierenden Datenaustausch in die zweite logische Blockadressensammlung geschrieben wurden; und als Reaktion auf das Ermitteln, dass die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und die physischen Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: bewirkt, dass die physischen Positionen der Daten, die an den logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, mit den physischen Positionen der Daten ausgetauscht werden, die an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind.
- Computerlesbares Speichermedium nach Anspruch 16, wobei die Anweisungen bewirken, dass der Prozessor ermittelt, ob physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, zumindest durch Bewirken, dass der Prozessor: ermittelt, ob der Wert des ersten transienten Schreibvorgangszählers größer als eine vorbestimmte Zahl multipliziert mit dem Wert des zweiten transienten Schreibvorgangszählers ist.
- Computerlesbares Speichermedium nach Anspruch 16, wobei die Anweisungen bewirken, dass der Prozessor ermittelt, ob physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind, zumindest durch Bewirken, dass der Prozessor: den Wert des ersten transienten Schreibvorgangszählers mit einem Wert eines ersten permanenten Schreibvorgangszählers summiert, der mit der ersten logischen Blockadressensammlung assoziiert ist, um einen ersten Gesamtschreibvorgangswert zu ermitteln, der eine Gesamtanzahl an Schreibvorgängen in die erste logische Blockadressensammlung anzeigt, wobei der Wert des ersten permanenten Schreibvorgangszählers gleich der Anzahl an Malen ist, die Daten vor einem vorherigen, die erste logische Blockadressensammlung involvierenden Datenaustausch in die erste logische Blockadressensammlung geschrieben wurden; den Wert des zweiten transienten Schreibvorgangszählers mit einem Wert eines zweiten permanenten Schreibvorgangszählers summiert, der mit der zweiten logischen Blockadressensammlung assoziiert ist, um einen zweiten Gesamtschreibvorgangswert zu ermitteln, der eine Gesamtanzahl an Schreibvorgängen in die zweite logische Blockadressensammlung anzeigt, wobei der Wert des zweiten permanenten Schreibvorgangszählers gleich der Anzahl an Malen ist, die Daten vor einem vorherigen, die zweite logische Blockadressensammlung involvierenden Datenaustausch in die zweite logische Blockadressensammlung geschrieben wurden; und ermittelt, ob der erste Gesamtschreibvorgangswert größer als eine vorbestimmte Zahl multipliziert mit dem zweiten Gesamtschreibvorgangswert ist.
- Computerlesbares Speichermedium nach Anspruch 16, das ferner Anweisungen umfasst, die, wenn sie ausgeführt werden, bewirken, dass der Prozessor: als Reaktion auf das Ermitteln, dass eine Summe des Werts des ersten transienten Schreibvorgangszählers und eines Werts eines ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, eine Blocksammlungsschreibzählschwelle überschreitet, bewirkt, dass physische Positionen von Daten, die an logischen Adressen gespeichert sind, die mit der ersten logischen Blockadressensammlung assoziiert sind, auf Basis eines Offsetwerts neu angeordnet werden, der mit der ersten logischen Blockadressensammlung assoziiert ist; und den Offsetwert aktualisiert, der zumindest mit der ersten logischen Blockadressensammlung assoziiert ist.
- Computerlesbares Speichermedium nach Anspruch 16, das ferner Anweisungen umfasst, die, wenn sie ausgeführt werden, bewirken, dass der Prozessor: als Reaktion auf das Ermitteln, dass physische Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, und physische Positionen der Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, auszutauschen sind: einen Wert eines ersten permanenten Schreibvorgangszählers, der mit der ersten logischen Blockadressensammlung assoziiert ist, um den Wert des ersten transienten Schreibvorgangszählers erhöht; und einen Wert eines zweiten permanenten Schreibvorgangszählers, der mit der zweiten Blocksammlung assoziiert ist, um den Wert des zweiten transienten Schreibvorgangszählers erhöht.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/098,668 US9842059B2 (en) | 2016-04-14 | 2016-04-14 | Wear leveling in storage devices |
US15/098,668 | 2016-04-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102017104150A1 true DE102017104150A1 (de) | 2017-10-19 |
DE102017104150B4 DE102017104150B4 (de) | 2023-10-26 |
Family
ID=59980777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102017104150.8A Active DE102017104150B4 (de) | 2016-04-14 | 2017-02-28 | Abnutzungsausgleich in Speichervorrichtungen |
Country Status (4)
Country | Link |
---|---|
US (1) | US9842059B2 (de) |
KR (1) | KR101908581B1 (de) |
CN (1) | CN107301134B (de) |
DE (1) | DE102017104150B4 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430085B2 (en) | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
US10261876B2 (en) * | 2016-11-08 | 2019-04-16 | Micron Technology, Inc. | Memory management |
JP6779821B2 (ja) * | 2017-03-24 | 2020-11-04 | キオクシア株式会社 | メモリシステム及びデータの読み出し方法 |
KR20190052315A (ko) * | 2017-11-08 | 2019-05-16 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
US10733110B1 (en) * | 2017-12-04 | 2020-08-04 | Amazon Technologies, Inc. | Collecting statistics for persistent memory |
CN111587424A (zh) * | 2018-01-29 | 2020-08-25 | 惠普发展公司,有限责任合伙企业 | 存储器中存储的数据集的有效性 |
JP7020989B2 (ja) * | 2018-04-23 | 2022-02-16 | 株式会社メガチップス | 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法 |
CN108920386B (zh) * | 2018-07-20 | 2020-06-26 | 中兴通讯股份有限公司 | 面向非易失性内存的磨损均衡及访问方法、设备和存储介质 |
US10431281B1 (en) | 2018-08-17 | 2019-10-01 | Micron Technology, Inc. | Access schemes for section-based data protection in a memory device |
US10991411B2 (en) * | 2018-08-17 | 2021-04-27 | Micron Technology, Inc. | Method and apparatuses for performing a voltage adjustment operation on a section of memory cells based on a quantity of access operations |
CN110858124B (zh) | 2018-08-24 | 2021-06-01 | 华为技术有限公司 | 数据迁移方法及装置 |
US10679708B2 (en) * | 2018-09-17 | 2020-06-09 | Western Digital Technologies, Inc. | Pre-program read to counter wordline failures |
US10860219B2 (en) * | 2018-10-05 | 2020-12-08 | Micron Technology, Inc. | Performing hybrid wear leveling operations based on a sub-total write counter |
US11347860B2 (en) * | 2019-06-28 | 2022-05-31 | Seagate Technology Llc | Randomizing firmware loaded to a processor memory |
US11416048B2 (en) * | 2019-07-22 | 2022-08-16 | Micron Technology, Inc. | Using a thermoelectric component to improve memory sub-system performance |
US10902929B1 (en) | 2019-08-29 | 2021-01-26 | Micron Technology, Inc. | Zone swapping for wear leveling memory |
US11416163B2 (en) * | 2020-04-09 | 2022-08-16 | SK Hynix Inc. | Systems and methods for dynamic logical block address distribution between multicores |
US20240220118A1 (en) * | 2022-12-28 | 2024-07-04 | SK hynix NAND Product Solutions Corporation | Systems, methods, and media for controlling background wear leveling in solid-state drives |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09237162A (ja) * | 1996-02-23 | 1997-09-09 | Hewlett Packard Co <Hp> | 走査型データ記憶システム、及びその針摩耗管理方法、媒体摩耗管理方法、並びに残存寿命表示装置 |
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US6732221B2 (en) | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
ATE372578T1 (de) * | 2002-10-28 | 2007-09-15 | Sandisk Corp | Automatischer abnutzungsausgleich in einem nicht- flüchtigen speichersystem |
US8176238B2 (en) * | 2003-12-02 | 2012-05-08 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US20090193184A1 (en) * | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
DE112006004187B4 (de) * | 2006-12-27 | 2015-09-10 | Intel Corporation | Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher |
KR100857761B1 (ko) * | 2007-06-14 | 2008-09-10 | 삼성전자주식회사 | 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법 |
US8656083B2 (en) * | 2007-12-21 | 2014-02-18 | Spansion Llc | Frequency distributed flash memory allocation based on free page tables |
US8095724B2 (en) | 2008-02-05 | 2012-01-10 | Skymedi Corporation | Method of wear leveling for non-volatile memory and apparatus using via shifting windows |
KR101437123B1 (ko) * | 2008-04-01 | 2014-09-02 | 삼성전자 주식회사 | 메모리 시스템 및 그것의 마모도 관리 방법 |
US20100017649A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation | Data storage system with wear-leveling algorithm |
US20100174845A1 (en) | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8533429B2 (en) * | 2009-06-24 | 2013-09-10 | Panasonic Corporation | Memory access control device, integrated circuit, memory access control method, and data processing device |
US9170933B2 (en) | 2010-06-28 | 2015-10-27 | International Business Machines Corporation | Wear-level of cells/pages/sub-pages/blocks of a memory |
US8356153B2 (en) | 2010-11-19 | 2013-01-15 | International Business Machines Corporation | Adaptive wear leveling via monitoring the properties of memory reference stream |
WO2012109679A2 (en) * | 2011-02-11 | 2012-08-16 | Fusion-Io, Inc. | Apparatus, system, and method for application direct virtual memory management |
US9251056B2 (en) * | 2012-06-01 | 2016-02-02 | Macronix International Co., Ltd. | Bucket-based wear leveling method and apparatus |
KR102042859B1 (ko) * | 2013-10-14 | 2019-11-08 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그 동작 방법 |
-
2016
- 2016-04-14 US US15/098,668 patent/US9842059B2/en active Active
-
2017
- 2017-02-28 DE DE102017104150.8A patent/DE102017104150B4/de active Active
- 2017-02-28 KR KR1020170026225A patent/KR101908581B1/ko active IP Right Grant
- 2017-03-06 CN CN201710129319.8A patent/CN107301134B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107301134B (zh) | 2020-06-16 |
CN107301134A (zh) | 2017-10-27 |
DE102017104150B4 (de) | 2023-10-26 |
US20170300423A1 (en) | 2017-10-19 |
KR101908581B1 (ko) | 2018-10-17 |
KR20170117868A (ko) | 2017-10-24 |
US9842059B2 (en) | 2017-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102017104150B4 (de) | Abnutzungsausgleich in Speichervorrichtungen | |
DE102017104125B4 (de) | Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay | |
DE102017113439B4 (de) | Abbildungstabellen für Speichervorrichtungen | |
US10282286B2 (en) | Address mapping using a data unit type that is variable | |
DE112020000184T5 (de) | In zonen unterteilte namensräume in festkörperlaufwerken | |
DE102020107659A1 (de) | Zonenbildung für gezonte namensräume | |
DE112020000139T5 (de) | Nicht sequentiell in zonen aufgeteilte namensräume | |
DE102020106971A1 (de) | Datenschreibverwaltung im nichtflüchtigen speicher | |
DE112014006118B4 (de) | Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten | |
DE102015012566A1 (de) | Mehrlagenkonzept für logische speicherungsverwaltung | |
DE102016009806A1 (de) | Speichern von paritätsdaten getrennt von geschützten daten | |
DE102017104158A1 (de) | Gültigkeitsverfolgung für garbage collection | |
DE102020112512A1 (de) | Datenspeichergerät und Betriebsverfahren dafür | |
DE112020005060T5 (de) | Ratengrenze für den übergang von zonen zum öffnen | |
DE102018105984A1 (de) | Prioritätsbasierte interne Datenverschiebung | |
DE112019005511T5 (de) | Halten von schreibbefehlen in gezonten namensräumen | |
DE102008036822A1 (de) | Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem | |
DE102010018765A1 (de) | Speichervorrichtung und Speicherverfahren | |
DE112020005787T5 (de) | Verbesserte dateisystem-unterstützung für zonen-namespace-speicher | |
DE112011106032T5 (de) | Energieeinsparung durch Speicherkanal-Abschaltung | |
DE102021115626A1 (de) | Datenaggregation in zns-laufwerk | |
DE112017005782T5 (de) | Warteschlange für Speichervorgänge | |
DE102022101607A1 (de) | Verwaltung der hostspeicherpufferzuweisung | |
DE112020005078T5 (de) | Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen | |
DE112020005044T5 (de) | Zonenanhang-befehlsplanung basierend auf zonenzustand |
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 |
|
R016 | Response to examination communication | ||
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: 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 |
|
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 |
|
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 |
|
R020 | Patent grant now final |