DE102017104150B4 - Abnutzungsausgleich in Speichervorrichtungen - Google Patents

Abnutzungsausgleich in Speichervorrichtungen Download PDF

Info

Publication number
DE102017104150B4
DE102017104150B4 DE102017104150.8A DE102017104150A DE102017104150B4 DE 102017104150 B4 DE102017104150 B4 DE 102017104150B4 DE 102017104150 A DE102017104150 A DE 102017104150A DE 102017104150 B4 DE102017104150 B4 DE 102017104150B4
Authority
DE
Germany
Prior art keywords
logical block
block address
address collection
value
collection
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.)
Active
Application number
DE102017104150.8A
Other languages
English (en)
Other versions
DE102017104150A1 (de
Inventor
Md KAMRUZZAMAN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017104150A1 publication Critical patent/DE102017104150A1/de
Application granted granted Critical
Publication of DE102017104150B4 publication Critical patent/DE102017104150B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

System, das Folgendes umfasst:eine Vielzahl von Arbeitsspeichervorrichtungen (16), 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 (C1,TRANS) , der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers (C2,TRANS), 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 miteinander zu vertauschen sind, wobei:der Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die erste logische Blockadressensammlung involvierenden Datenvertauschungin die erste logische Blockadressensammlung geschrieben wurden, undder Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die zweite logische Blockadressensammlung involvierenden Datenvertauschung in die zweite logische Blockadressensammlung geschrieben wurden; undals 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, miteinander zu vertauschen 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, miteinander zu vertauschen.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft eine Datenspeicherverwaltung.
  • STAND DER TECHNIK
  • Festkörperlaufwerke (SSDs) können in Computern 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.
  • Relevanter Stand der Technik ist aus der US 8356152 B2 , der US 2010/0161880 A1 und der US 2013/0326148 A1 bekannt.
  • 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 miteinander zu vertauschen 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 miteinander zu vertauschen n 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 Datenmiteinander zu vertauschen.
  • 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 miteinander zu vertauschen 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 miteinander vertauscht 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 miteinander zu vertauschen 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 miteinander zu vertauschen 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 miteinander vertauscht 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 Vertauschen 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 miteinander zu vertauschen 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 Speicherumgebung 2 illustriert, in der Speichervorrichtung 6 als eine Speichervorrichtung für Hostvorrichtung 4 funktioniert, nach einer oder mehreren Techniken dieser Offenbarung. Die Hostvorrichtung 4 kann beispielsweise nichtflüchtige, in der Speichervorrichtung 6 enthaltene Arbeitsspeichervorrichtungen einsetzen, um Daten zu speichern und abzurufen. In einigen Beispielen kann die Speicherumgebung 2 eine Vielzahl von Speichervorrichtungen enthalten, wie die Speichervorrichtung 6, die als ein Speicherarray arbeiten können. Die Speicherumgebung 2 kann zum Beispiel eine Vielzahl von Speichervorrichtungen 6 enthalten, die als ein redundantes Array von günstigen/unabhängigen Platten (RAID) konfiguriert sind, die zusammen als eine Massenspeichervorrichtung für die Hostvorrichtung 4 funktionieren.
  • Die Speicherumgebung 2 kann die Hostvorrichtung 4 enthalten, die Daten auf einer oder mehreren Speichervorrichtungen wie der Speichervorrichtung 6 speichern und/oder von diesen abrufen kann. Wie in 1 illustriert, kann die Hostvorrichtung 4 mit der Speichervorrichtung 6 über eine Schnittstelle 14 kommunizieren. Die Hostvorrichtung 4 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 Speichervorrichtung 6 einen Controller 8, ein nichtflüchtiges Speicherarray 10 (NVMA 10), eine Energieversorgung 11, einen flüchtigen Arbeitsspeicher 12 und eine Schnittstelle 14 enthalten. In manchen Beispielen kann die Speichervorrichtung 6 zusätzliche Komponenten enthalten, die in 1 der Klarheit halber nicht gezeigt sind. Zum Beispiel kann die Speichervorrichtung 6 eine Leiterplatte (PB), an der Komponenten der Speichervorrichtung 6 mechanisch angebracht sind und die elektrisch leitende Spuren enthält, die Komponenten der Speichervorrichtung 6 elektrisch miteinander verbinden, oder Ähnliches enthalten. In manchen Beispielen können die physischen Abmessungen und Anschlusskonfigurationen der Speichervorrichtung 6 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 xl, x4, x8, x16, PCIe Mini Card, MiniPCI usw.), M.2 oder Ähnliches. In einigen Beispielen kann die Speichervorrichtung 6 direkt an eine Leiterplatine der Hostvorrichtung 4 gekoppelt (z. B. direkt gelötet) sein.
  • Die Speichervorrichtung 6 kann die Schnittstelle 14 zum Ankoppeln mit der Hostvorrichtung 4 enthalten. Die Schnittstelle 14 kann einen oder beide der folgenden Busse enthalten: einen Datenbus zum Austauschen von Daten mit der Hostvorrichtung 4 und einen Steuerbus zum Austauschen von Befehlen mit der Hostvorrichtung 4. Die Schnittstelle 14 kann in Übereinstimmung mit irgendeinem geeigneten Protokoll arbeiten. Die Schnittstelle 14 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 Schnittstelle 14 (z. B. der Datenbus, der Steuerbus oder beide) ist elektrisch mit dem Controller 8 verbunden und stellt eine elektrische Verbindung zwischen der Hostvorrichtung 4 und dem Controller 8 bereit, was erlaubt, dass Daten zwischen der Hostvorrichtung 4 und dem Controller 8 ausgetauscht werden. In manchen Beispielen kann die elektrische Verbindung der Schnittstelle 14 auch der Speichervorrichtung 6 erlauben, Energie von der Hostvorrichtung 4 zu empfangen.
  • Die Speichervorrichtung 6 enthält das NVMA 10, das eine Vielzahl von Arbeitsspeichervorrichtungen 16Aa-16Nn (zusammen „Arbeitsspeichervorrichtungen 16“) enthält. Jede der Arbeitsspeichervorrichtungen 16 kann konfiguriert sein, Daten zu speichern und/oder abzurufen. Eine Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 kann zum Beispiel Daten und eine Nachricht vom Controller 8 empfangen, die die Arbeitsspeichervorrichtung anweist, die Daten zu speichern. Gleichermaßen kann die Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 eine Nachricht vom Controller 8 empfangen, die die Arbeitsspeichervorrichtung anweist, Daten abzurufen. In einigen Beispielen kann jede der Arbeitsspeichervorrichtungen 16 als ein Die bezeichnet werden. In einigen Beispielen kann ein einziger physischer Chip eine Vielzahl von Dies enthalten (d. h. eine Vielzahl von Arbeitsspeichervorrichtungen 16). In einigen Beispielen kann jede der Arbeitsspeichervorrichtungen 16 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 Arbeitsspeichervorrichtungen 16 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 Controller 8 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 Arbeitsspeichervorrichtungen 16 werden unten in Bezug auf 2 besprochen.
  • In manchen Beispielen kann es für den Controller 8 nicht praktikabel sein, separat mit jeder Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 verbunden zu sein. Als solche können die Verbindungen zwischen den Arbeitsspeichervorrichtungen 16 und dem Controller 8 gebündelt sein. Als ein Beispiel können die Arbeitsspeichervorrichtungen 16 in Kanäle 18A-18N (kollektiv „Kanäle 18“) gruppiert sein. Zum Beispiel, wie in 1 illustriert, können die Arbeitsspeichervorrichtungen 16Aa-16An in einen ersten Kanal 18A gruppiert sein, und die Arbeitsspeichervorrichtungen 16Na-16Nn können in einen N-ten Kanal 18N gruppiert sein. Die in jeden der Kanäle 18 gruppierten Arbeitsspeichervorrichtungen 16 können sich eine oder mehrere Verbindungen mit dem Controller 8 teilen. Zum Beispiel können die Arbeitsspeichervorrichtungen 16, die in den ersten Kanal 18A gruppiert sind, mit einem gemeinsamen E/A-Bus und einem gemeinsamen Steuerbus verbunden sein. Die Speichervorrichtung 6 kann für jeden Kanal der Kanäle 18 jeweils einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus enthalten. In manchen Beispielen kann jeder Kanal der Kanäle 18 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 Arbeitsspeichervorrichtungen 18 verbunden sein. Auf diese Weise kann die Anzahl der separaten Verbindungen zwischen dem Controller 8 und den Arbeitsspeichervorrichtungen 18 reduziert werden. Zusätzlich, da jeder Kanal einen unabhängigen Satz von Verbindungen mit dem Controller 8 aufweist, kann die Reduktion an Verbindungen die Datendurchsatzrate nicht wesentlich beeinflussen, da der Controller 8 gleichzeitig unterschiedliche Befehle an jeden Kanal erteilen kann.
  • Die Speichervorrichtung 6 kann eine Energieversorgung 11 enthalten, die eine oder mehrere Komponenten der Speichervorrichtung 6 mit Energie versorgen kann. Beim Betrieb in einem Standardmodus kann die Energieversorgung 11 unter Verwendung von Energie, die von einer externen Vorrichtung wie der Hostvorrichtung 4 bereitgestellt wird, die eine oder die mehreren Komponenten mit Energie versorgen. Die Energieversorgung 11 kann zum Beispiel die eine oder die mehreren Komponenten unter Verwendung von Energie, die von der Hostvorrichtung 4 über die Schnittstelle 14 empfangen wurde, mit Energie versorgen. In einigen Beispielen kann die Energieversorgung 11 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 Energieversorgung 11 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 Arbeitsspeicher 12 enthalten, der vom Controller 8 verwendet werden kann, um Informationen zu speichern. In einigen Beispielen kann der Controller 8 den flüchtigen Arbeitsspeicher 12 als einen Zwischenspeicher verwenden. Der Controller 8 kann zum Beispiel zwischengespeicherte Informationen im flüchtigen Arbeitsspeicher 12 speichern, bis die zwischengespeicherten Informationen in die Arbeitsspeichervorrichtungen 16 geschrieben werden. Der flüchtige Arbeitsspeicher 12 kann Energie verbrauchen, die von der Energieversorgung 11 empfangen wird. Beispiele von flüchtigem Arbeitsspeicher 12 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 Controller 8, der eine oder mehrere Operationen der Speichervorrichtung 6 verwalten kann. Der Controller 8 kann zum Beispiel das Lesen von Daten von den und/oder das Schreiben von Daten in die Arbeitsspeichervorrichtungen 16 verwalten. In einigen Fällen kann der Controller 8 einen Befehl von der Hostvorrichtung 4 empfangen, der Daten enthält und eine logische Blockadresse (LBA) angibt, an die die Daten zu schreiben sind. Der Controller 8 kann die Daten an eine physische Blockadresse (PBA) der Arbeitsspeichervorrichtungen 16 schreiben, die der von der Hostvorrichtung 4 angegebenen LBA entspricht. Das oftmalige Schreiben von Daten an eine bestimmte PBA einer bestimmten Arbeitsspeichervorrichtung 16 kann jedoch bewirken, dass sich die bestimmte Arbeitsspeichervorrichtung 16 schneller als andere Arbeitsspeichervorrichtungen 16 abnutzt.
  • In einigen Beispielen enthält der Host 4 ein Abnutzungsverwaltungsmodul (WMM) 31. In anderen Beispielen enthält der Controller 8 ein Abnutzungsverwaltungsmodul (WMM) 30. In anderen Beispielen enthält der Host 4 das WMM 31 und der Controller 8 enthält das WMM 30. Das WMM 30, 31 kann konfiguriert sein, die Schreibpositionen für Daten zu verwalten, die von der Hostvorrichtung 4 empfangen wurden, um die Lebensdauer der Speichervorrichtung 6 durch Verbreiten von Schreibvorgängen über die Arbeitsspeichervorrichtungen 16 zu verbessern. Die WMMs 30, 31 können zum Beispiel versuchen, Schreibvorgänge gleichmäßig unter den Arbeitsspeichervorrichtungen 16 zu verteilen, indem Sie die Anzahl der Schreibvorgänge in einen Block verwalten. In einigen Beispielen können die WMMs 30, 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 WMMs 30, 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 NVMA 10 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 Controller 8 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 Speichervorrichtung 6 oder über die Lebensdauer der Speichervorrichtung 6 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 NVMA 10 (über alle Blocksammlungen hinweg) geschrieben wurden. In einigen Beispielen kann der Vorrichtungs-Schreibvorgangszähler die Anzahl an Malen zählen, die Daten in das NVMA 10 über die Lebensdauer des NVMA 10 geschrieben wurden.
  • In einigen Beispielen enthält der Controller 8 das WMM 30 und der Controller 8 kann einen Schreibbefehl von der Hostvorrichtung 4 empfangen, der Daten und eine LBA enthält. Der Controller 8 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 Arbeitsspeichervorrichtung 16 an eine PBA schreiben, die der LBA entspricht. Alternativ dazu kann der Controller 8 die Daten an eine verfügbare PBA schreiben (die derzeit keine gültigen Daten speichert) und die Umleitungstabelle aktualisieren, um die LBAzu-PBA-Entsprechung widerzuspiegeln. In einigen Beispielen kann das WMM 30 den Wert des Vorrichtungs-Schreibvorgangszählers schrittweise erhöhen (z. B. um eins erhöhen), um anzuzeigen, dass der Controller 6 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 Hostvorrichtung 4 angegebene LBA enthält. Als Reaktion auf das schrittweise Erhöhen des Werts des Vorrichtungs-Schreibvorgangszählers kann das WMM 30 ermitteln, ob ein Vergleich der jeweiligen, mit jeder jeweiligen logischen Blockadressensammlung assoziierten transienten Schreibvorgangszähler durchzuführen ist. Das WMM 30 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 WMM 30 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 WMM 30 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 Controller 8 die physischen Positionen der Daten austauschen, die in der ersten und der zweiten logischen Blockadressensammlung gespeichert sind. Das WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 die Gesamtanzahl der Schreibvorgänge in jede jeweilige logische Blockadressensammlung nachverfolgen. Auf diese Weise kann das WMM 30 die Gesamtanzahl von Schreibvorgängen in jede jeweilige logische Blockadressensammlung nachverfolgen, ohne jeden jeweiligen permanenten Schreibvorgangszähler jedes Mal zu aktualisieren, wenn der Controller 8 in eine jeweilige logische Blockadressensammlung schreibt.
  • In einigen Beispielen kann die Hostvorrichtung 4 ein WMM 31 enthalten. Die Hostvorrichtung 4 kann einen Schreibbefehl, der Daten enthält, und eine LBA an den Controller 8 senden. Als Reaktion auf das Schreiben des Controllers 8 von Daten in eine Arbeitsspeichervorrichtung 16 an einer PBA, die der von der Hostvorrichtung 4 empfangenen LBA entspricht, kann das WMM 31 den Wert des Vorrichtungs-Schreibvorgangszählers schrittweise erhöhen, um anzuzeigen, dass der Controller 6 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 Hostvorrichtung 4 angegebene LBA enthält. Als Reaktion auf das schrittweise Erhöhen des Werts des Vorrichtungs-Schreibvorgangszählers kann das WMM 31 ermitteln, ob ein Vergleich der jeweiligen, mit jeder jeweiligen logischen Blockadressensammlung assoziierten transienten Schreibvorgangszähler durchzuführen ist. Das WMM 31 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 WMM 31 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 WMM 31 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 Controller 8 die physischen Positionen der Daten in der ersten und der zweiten logischen Blockadressensammlung austauschen. Das WMM 31 kann die Werte des ersten transienten Schreibvorgangszählers und des zweiten transienten Schreibvorgangszählers gleich einem Grundwert setzen. In einigen Beispielen kann das WMM 31 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 WMM 31 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 WMMs 30, 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 Speichervorrichtung 6 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 WMMs 30, 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 Speichervorrichtung 6 verbessern.
  • 2 ist ein konzeptionelles Blockdiagramm, das eine beispielhafte Arbeitsspeichervorrichtung 16Aa illustriert, die eine Vielzahl an Blöcken 17A-17N (kollektiv „Blöcke 17“) enthält, wobei jeder Block eine Vielzahl an Seiten 19Aa-19Nm (kollektiv „Seiten 19“) enthält. Jeder Block der Blöcke 17 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 Seiten 19). Die jeweiligen Zellen in jeder der Vielzahl der Seiten 19 können elektrisch mit den jeweiligen Bitleitungen verbunden sein. Der Controller 8 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 Blockadressensammlung 20A kann beispielsweise die Blöcke 17A-17B enthalten und die logische Blockadressensammlung 20B kann die Blöcke 17M-17N enthalten.
  • 3 ist ein konzeptionelles und schematisches Blockdiagramm, das beispielhafte Details des Controllers 8 illustriert. In einigen Beispielen kann der Controller 8 ein Adressenübersetzungsmodul 22, ein Schreibmodul 24, ein Planungsmodul 26, ein Lesemodul 28, ein Abnutzungsausgleichsmodul (WMM) 30 und eine Vielzahl von Kanalcontrollern 32A-32N (kollektiv „Kanalcontroller 32“) enthalten. In anderen Beispielen kann der Controller 8 zusätzliche Module oder Hardwareeinheiten enthalten oder kann weniger Module oder Hardwareeinheiten enthalten. Der Controller 8 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 Hostvorrichtung 4 über die Schnittstelle 14 ankoppeln und die Speicherung von Daten in den und den Abruf von Daten aus den Arbeitsspeichervorrichtungen 16 verwalten. Das Schreibmodul 24 des Controllers 8 kann zum Beispiel Schreibvorgänge in die Arbeitsspeichervorrichtungen 16 verwalten. Das Schreibmodul 24 kann zum Beispiel über die Schnittstelle 14 eine Nachricht von der Hostvorrichtung 4 empfangen, die die Speichervorrichtung 6 anweist, mit einer logischen Adresse assoziierte Daten und die Daten, die als Benutzerdaten bezeichnet werden können, zu speichern. Das Schreibmodul 24 kann das Schreiben der Benutzerdaten in die Arbeitsspeichervorrichtungen 16 verwalten.
  • Das Schreibmodul 24 kann zum Beispiel mit dem Adressenübersetzungsmodul 22 kommunizieren, das die Übersetzung zwischen logischen Adressen, die von der Hostvorrichtung 4 zur Verwaltung von Speicherpositionen von Daten verwendet werden, und physischen Blockadressen verwaltet, die vom Schreibmodul 24 zum Lenken des Schreibens der Daten in Arbeitsspeichervorrichtungen verwendet werden. Das Adressenübersetzungsmodul 22 von Controller 8 kann eine Flash-Übersetzungsschicht oder Umleitungstabelle einsetzen, die logische Adressen (oder logische Blockadressen) der von den Arbeitsspeichervorrichtungen 16 gespeicherten Daten in physische Blockadressen der von den Arbeitsspeichervorrichtungen 16 gespeicherten Daten übersetzt. Die Hostvorrichtung 4 kann zum Beispiel die logischen Blockadressen der von den Arbeitsspeichervorrichtungen 16 gespeicherten Daten in Anweisungen oder Nachrichten an die Speichervorrichtung 6 einsetzen, während das Schreibmodul 24 physische Blockadressen der Daten einsetzt, um das Schreiben der Daten in die Arbeitsspeichervorrichtungen 16 zu steuern. (Gleichermaßen kann das Lesemodul 28 physische Blockadressen zum Steuern des Lesens von Daten aus den Arbeitsspeichervorrichtungen 16 einsetzen.) Die physischen Blockadressen entsprechen tatsächlichen, physischen Blöcken der Arbeitsspeichervorrichtungen 16. In einigen Beispielen kann das Adressenübersetzungsmodul 22 die Flash-Übersetzungsschicht oder -tabelle im flüchtigen Arbeitsspeicher 12 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übersetzungsmodul 22 kann die Flash-Übersetzungsschicht oder Umleitungstabelle aufrechterhalten, um die logischen Blockadressen physischen Blockadressen zuzuordnen, um die Verwendung der statischen logischen Blockadresse durch die Hostvorrichtung 4 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 Controller 8 eine oder mehrere Operationen zum Verwalten des Schreibens von Daten in die Arbeitsspeichervorrichtungen 16 durchführen. Das Schreibmodul 24 kann zum Beispiel das Schreiben von Daten in die Arbeitsspeichervorrichtungen 16 verwalten, indem es einen oder mehrere physische Blöcke innerhalb der Arbeitsspeichervorrichtungen 16 auswählt, um die Daten zu speichern, und bewirkt, dass die Arbeitsspeichervorrichtungen der Arbeitsspeichervorrichtungen 16, die die ausgewählten physischen Blöcke enthalten, die Daten tatsächlich speichern. Wie oben besprochen kann das Schreibmodul 24 verursachen, dass das Adressenübersetzungsmodul 22 die Flash-Übersetzungsschicht oder Umleitungstabelle auf Basis der ausgewählten physischen Blöcke aktualisiert. Das Schreibmodul 24 kann zum Beispiel eine Nachricht von der Hostvorrichtung 4 erhalten, die Daten und eine logische Blockadresse enthält, einen physischen Block innerhalb einer bestimmten Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 auswählen, um die Daten zu speichern, verursachen, dass die bestimmte Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 die Daten tatsächlich speichert (z. B. über einen Kanalcontroller der Kanalcontroller 32, der der bestimmten Arbeitsspeichervorrichtung entspricht), und verursachen, dass das Adressenübersetzungsmodul 22 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 Arbeitsspeichervorrichtungen 16 steuern. Das Lesemodul 28 kann zum Beispiel eine Nachricht von der Hostvorrichtung 4 erhalten, die Daten mit einer zugehörigen logischen Blockadresse anfordert. Das Adressenübersetzungsmodul 22 kann die logische Blockadresse unter Verwendung der Flash-Übersetzungsschicht oder -tabelle in eine physische Blockadresse umwandeln. Das Lesemodul 28 kann dann einen oder mehrere der Kanalcontroller 32 steuern, um die Daten von den physischen Blockadressen abzurufen. Ähnlich wie das Schreibmodul 24 kann das Lesemodul 28 einen oder mehrere physische Blöcke auswählen und eine Nachricht an die Kanalcontroller 32 kommunizieren, die bewirken kann, dass die Kanalcontroller 32 die Daten aus den ausgewählten physischen Blöcken lesen.
  • Das Planungsmodul 26 des Controllers 8 kann eine oder mehrere Operationen zur Planung von Aktivitäten durchführen, die von den Arbeitsspeichervorrichtungen 16 durchzuführen sind. Das Planungsmodul 26 kann zum Beispiel Anforderungen zeitlich planen, die von anderen Komponenten des Controllers 8 empfangen wurden, um einer oder mehrerer der Arbeitsspeichervorrichtungen 16 zu befehlen, eine oder mehrere Aktivitäten während der Laufzeit durchzuführen. In einigen Beispielen kann das Planungsmodul 30 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 Planungsmodul 26 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 Hostvorrichtung 4 empfangen, der Daten und mindestens eine logische, mit den Daten assoziierte Blockadresse enthält. Als Reaktion auf ein Empfangen des ersten Schreibbefehls von der Hostvorrichtung 4 kann das Schreibmodul 24 ermitteln, an welche physischen Positionen der Arbeitsspeichervorrichtungen 16 die Daten zu schreiben sind. Das Schreibmodul 24 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übersetzungsmodul 22 anfordern. Nach Empfangen der einen oder der mehreren physischen Blockadressen kann das Schreibmodul 24 einen oder mehrere physische Blöcke definieren und/oder auswählen und eine Nachricht an die Kanalcontroller 32A-32N (kollektiv „Kanalcontroller 32“) kommunizieren, die bewirkt, dass die Kanalcontroller 32 die Daten in die physischen Blöcke schreiben.
  • Jeder Kanalcontroller der Kanalcontroller 32 kann mit einem entsprechenden Kanal der Kanäle 18 verbunden sein. In manchen Beispielen kann der Controller 8 die gleiche Anzahl an Kanalcontrollern 32 wie die Anzahl der Kanäle 18 der Speichervorrichtung 2 enthalten. Die Kanalcontroller 32 können die enge Steuerung eines Adressierens, Programmierens, Löschens und Lesens der Arbeitsspeichervorrichtungen 16 durchführen, die mit den entsprechenden Kanälen verbunden sind, z. B. unter Steuerung des Schreibmoduls 24 und/oder des Lesemoduls 28.
  • 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 Controller 8 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 WMM 30 verschiedene Arten von Abnutzungsausgleichsvorgängen verwalten. In einem Beispiel kann das WMM 30 einen Inter-Blocksammlungs-Abnutzungsausgleich verwalten. Das WMM 30 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 WMM 30 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 WMM 30 einen Intra-Blocksammlungs-Abnutzungsausgleich verwalten. Das WMM 30 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 WMM 30 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 WMM 30 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 auf 1 beschrieben, kann der Vorrichtungs-Schreibvorgangszähler eine Zählung der Anzahl an Malen speichern, die Daten in das NVMA 10 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 Speichervorrichtung 6 oder über die Lebensdauer der Speichervorrichtung 6 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 WMM 30 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 WMM 30 ermitteln, dass eine bestimmte Anzahl von Schreibvorgängen eingetreten sind und dass das WMM 30 die jeweiligen Schreibvorgangszähler vergleichen soll. In einigen Beispielen kann das WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 ermitteln, physische Positionen von mit den jeweiligen logischen Blocksammlungen assoziierten Daten auszutauschen, falls: C 1 ,TRANS > P * C 2 ,TRANS .
    Figure DE102017104150B4_0001
  • 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 ermitteln, physische Positionen der mit den jeweiligen logischen Blockadressensammlungen assoziierten Daten auszutauschen, falls: C 1 ,TOTAL > P * C 2 ,TOTAL .
    Figure DE102017104150B4_0002
  • 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 WMM 30 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 WMM 30 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 WMM 30 ermitteln, physische Positionen der mit den jeweiligen logischen Blockadressensammlungen assoziierten Daten auszutauschen, falls: C 1 ,TOTAL > P * C 2 ,TOTAL  und
    Figure DE102017104150B4_0003
    C 1 ,TRANS > P * C 2 ,TRANS .
    Figure DE102017104150B4_0004
  • 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 WMM 30 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 Arbeitsspeichervorrichtung 16 oder in einen flüchtigen Arbeitsspeicher 12) 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 WMM 30 kann bewirken, dass das Adressenübersetzungsmodul 22 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 WMM 30 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 Hostvorrichtung 4 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 Hostvorrichtung 4 kann das Schreibmodul 24 ermitteln, an welchen physischen Positionen der Arbeitsspeichervorrichtungen 16 die Daten auf eine Weise zu schreiben sind, die der oben in Bezug auf den ersten Schreibbefehl beschriebenen Weise ähnlich ist. Das Schreibmodul 24 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 den Tausch auf Basis eines Offsetwerts durchführen, der mit der dritten logischen Blockadressensammlung assoziiert ist. Das WMM 30 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 WMM 30 einen einzelnen Offsetwert für alle der logischen Blockadressensammlungen. In anderen Beispielen kann das WMM 30 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 WMM 30 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 WMM 30 das nächste Mal ermittelt, Daten neu anzuordnen, die an physischen Positionen gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert sind, kann das WMM 30 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 WMM 30 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 WMM 30 den zufälligen Offsetwert von einem ersten zufälligen Offsetwert (z. B. 50) auf einen zweiten zufälligen Offsetwert (z. B. 121) aktualisieren. Das WMM 30 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 gleich 50 ist und die dritte logische Blockadressensammlung 256 Seiten enthält. In diesem Beispiel kann das WMM 30 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 WMM 30 kann den zufälligen Offsetwert von einem Wert von 50 auf einen Wert von 121 aktualisieren. Wenn das WMM 30 das nächste Mal ermittelt, Daten neu anzuordnen, die an physischen Positionen gespeichert sind, die mit der dritten logischen Blockadressensammlung assoziiert sind, kann das WMM 30 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 WMM 30 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 Arbeitsspeicher 12, im NVMA 10 oder in einer Kombination davon speichern. In einigen Beispielen kann das WMM 30 alle der jeweiligen transienten Schreibvorgangszähler und der jeweiligen permanenten Schreibvorgangszähler im NVMA 10 speichern und eine Teilmenge der jeweiligen transienten Schreibvorgangszähler und der jeweiligen permanenten Schreibvorgangszähler im flüchtigen Arbeitsspeicher 12 speichern.
  • Als Reaktion auf das Einschalten der Speichervorrichtung 6 kann das WMM 30 beispielsweise beim Hochfahren der Vorrichtung blocksammlungsspezifische Parameter laden. Anders ausgedrückt, kann das WMM 30 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 Arbeitsspeicher 12 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 Controller 8 Schreibbefehle oder Lesebefehle empfängt, die die jeweiligen zusätzlichen logischen Blockadressensammlungen involvieren. In einigen Beispielen kann das WMM 30 eine zusätzliche Teilmenge von Schreibvorgangszählern abrufen, die mit einer oder mehreren jeweiligen zusätzlichen logischen Blockadressensammlungen assoziiert sind, falls der Controller 8 ermittelt, dass die jeweiligen zusätzlichen logischen Blockadressensammlungen wahrscheinlich verwendet werden, auch wenn der Controller 8 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 WMM 30 die Anzahl der Zähler reduzieren, die im flüchtigen Arbeitsspeicher 12 gespeichert sind, was die Leistung der Speichervorrichtung 6 verbessern kann.
  • In einigen Beispielen, wenn das WMM 30 zumindest einige der jeweiligen Schreibvorgangszähler in den flüchtigen Speicher 12 lädt, kann das WMM 30 die jeweiligen, im NVMA 10 gespeicherten Schreibvorgangszähler periodisch aktualisieren. Das WMM 30 kann die jeweiligen, im NVMA 10 gespeicherten Schreibvorgangszähler aktualisieren, wenn die Speichervorrichtung 6 ausgeschaltet ist (z. B. aufgrund eines absichtlichen Ausschaltens oder eines Stromausfalls). Auf diese Weise kann das WMM 30 eine genauere Zählung für jeden der jeweiligen Schreibvorgangszähler bei Stromverlust der Speichervorrichtung 6 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ählertabelle 40 vor Durchführen eines Inter-Blocksammlungs-Abnutzungsausgleichsvorgangs. Anders ausgedrückt, illustriert die in 4A gezeigte Schreibvorgangszählertabelle 40 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 illustriert 4B 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ählertabelle 40 beschrieben; die Informationen in der Schreibvorgangszählertabelle 40 können jedoch in einem beliebigen Typ von Datenstruktur, wie einem Array, einer Datenbank oder Ähnlichem, gespeichert werden. Zu Illustrationszwecken wird die Schreibvorgangszählertabelle 40 in Bezug auf 1 und 3 beschrieben.
  • Die Schreibvorgangszählertabelle 40 kann Schreibvorgangszählerwerte speichern, die jeweils mit der jeweiligen logischen Blockadressensammlung assoziiert sind. Die Schreibvorgangszählertabelle 40 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 Blockadressensammlung 42, physischer Blockadressbereich 44, transienter Schreibvorgangszähler 46, permanenter Schreibvorgangszähler 48 oder Gesamtzählwert 50. In einigen Beispielen kann die Schreibvorgangszählertabelle 40 eine oder mehrere der Spalten 42-50 weglassen, kann andere Spalten enthalten, die andere Informationen speichern, oder eine Kombination davon. Die logische Blockadressensammlung 42 kann einen eindeutigen logischen Blockadressenidentifikator enthalten, um die logische Blockadressensammlung zu identifizieren. Der physische Blockadressenbereich 44 kann einen Hinweis auf die physischen Blockadressen speichern, die der logischen Blockadresse innerhalb der jeweiligen logischen Blockadressensammlung entsprechen. Der transiente Schreibvorgangszähler 46 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 Controller 8 durchgeführt wurde und die jeweilige logische Blockadressensammlung involvierte). Der permanente Schreibvorgangszähler 48 kann eine Zählung der Anzahl an Malen speichern, die Daten in die jeweilige logische Blockadressensammlung über die Lebensdauer der Speichervorrichtung 6 oder über die Lebensdauer der Speichervorrichtung 6 vor dem letzten Inter-Blocksammlungs-Abnutzungsausgleichsvorgang geschrieben wurden, der die jeweilige logische Blockadressensammlung involvierte. Der Gesamtschreibvorgangswert 50 speichert eine Zählung der Gesamtanzahl der Male, die Daten in die jeweilige logische Blockadressensammlung geschrieben wurden. In einigen Beispielen kann das WMM 30 den Gesamtschreibvorgangswert 50 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 WMM 30 kann auf Basis der jeweiligen transienten Schreibvorgangszähler 46, der jeweiligen permanenten Schreibvorgangszähler 48, des Gesamtschreibvorgangswerts 50 oder einer Kombination daraus ermitteln, ob auszutauschen ist. In einigen Beispielen kann das WMM 30 auf Basis eines Vergleichs des Schreibvorgangszählers (z. B. des transienten Schreibvorgangszählers 46, des permanenten Schreibvorgangszählers 48 oder des Gesamtschreibvorgangswerts 50) 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ählerwerte 44 vom größten zum kleinsten sortiert. In anderen Fällen kann das WMM 30 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. Auf 4A Bezug nehmend, kann das WMM 30 ermitteln, dass der größte Gesamtschreibvorgangswert 50 mit der logischen Blockadressensammlung (Nr. 5) assoziiert ist und dass der kleinste Gesamtschreibvorgangswert 50 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: C 5 ,TOTAL > P * C 3 ,TOTAL  und
    Figure DE102017104150B4_0005
    C 5 ,TRANS > C 3 ,TRANS .
    Figure DE102017104150B4_0006
  • 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 durch 4B 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. Auf 4A Bezug nehmend, kann das WMM 30 ermitteln, dass der zweitgrößte Gesamtschreibvorgangswert 50 mit der logischen Blockadressensammlung (Nr. 1) assoziiert ist und dass der kleinste Gesamtschreibvorgangswert 50 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: C 1 ,TOTAL > P * C 2 ,TOTAL  und
    Figure DE102017104150B4_0007
    C 1 ,TRANS > C 2 ,TRANS .
    Figure DE102017104150B4_0008
  • 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 durch 4B 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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ähler 50 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ähler 46 aktualisieren, indem es den Wert der jeweiligen transienten Schreibvorgangszähler auf einen Grundwert (z. B. null) setzt. Das WMM 30 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 von 5 mit gleichzeitigem Bezug auf die Speichervorrichtung 6 und den Controller 8 von 1 und 3 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, miteinander zu vertauschen sind (52). In einigen Beispielen kann das WMM 30 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 miteinander zu vertauschen sind. In anderen Beispielen kann das WMM 30 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 miteinander zu vertauschen sind. In anderen Beispielen kann das WMM 30 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 miteinander zu vertauschen 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 miteinander zu vertauschen 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 miteinander vertauschen(54). Das WMM 30 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 Arbeitsspeichervorrichtung 16 oder in einen flüchtigen Arbeitsspeicher 12) 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 von 7 mit gleichzeitigem Bezug auf die Speichervorrichtung 6 und den Controller 8 von 1 und 3 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 WMM 30 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 WMM 30 kann die Vielzahl der transienten Schreibvorgangszähler und/oder der permanenten Schreibvorgangszähler in den flüchtigen Arbeitsspeicher 12 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 Schreibmodul 24 kann zum Beispiel einen Schreibbefehl von der Hostvorrichtung 4 empfangen, der Daten und eine logische Blockadresse enthält, eine physische Position (z. B. eine PBA) innerhalb einer bestimmten Arbeitsspeichervorrichtung 16 auswählen, um die Daten zu speichern, und die Daten in der ausgewählten physischen Position speichern. In einigen Beispielen kann das WMM 30 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 WMM 30 einen ersten transienten Schreibvorgangszähler (C1,TRANS ) aktualisieren, der mit der ersten logischen Blockadressensammlung assoziiert ist (66). Das WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 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 WMM 30 den Austausch auf Basis eines zufälligen Offsetwerts durchführen, der mit der ersten logischen Blockadressensammlung assoziiert ist. Das WMM 30 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 WMM 30 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 Schreibvorrichtung 6 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 WMM 30 ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die Speichervorrichtung 6 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 WMM 30 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 WMM 30 ermitteln, dass die Gesamtanzahl an Schreibvorgängen in die Speichervorrichtung 6 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 Speichervorrichtung 6 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 WMM 30 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 WMM 30 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 Arbeitsspeichervorrichtung 16 oder in einen flüchtigen Arbeitsspeicher 12) 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 WMM 30 kann bewirken, dass das Adressenübersetzungsmodul 22 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)

  1. System, das Folgendes umfasst: eine Vielzahl von Arbeitsspeichervorrichtungen (16), 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 (C1,TRANS) , der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers (C2,TRANS), 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 miteinander zu vertauschen sind, wobei: der Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die erste logische Blockadressensammlung involvierenden Datenvertauschungin die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die zweite logische Blockadressensammlung involvierenden Datenvertauschung 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, miteinander zu vertauschen 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, miteinander zu vertauschen.
  2. 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 miteinander zu vertauschen sind: Ermitteln, ob der Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) größer als eine vorbestimmte Zahl multipliziert mit dem Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) ist.
  3. 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 miteinander zu vertauschen sind: Summieren des Werts des ersten transienten Schreibvorgangszählers (C1,TRANS) mit einem Wert eines ersten permanenten Schreibvorgangszählers (C1,PERM) , 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 (C1,PERM) 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 (C2,PERM), 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 (C2,PERM) 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.
  4. 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 (C1,TRANS) und eines Werts eines ersten permanenten Schreibvorgangszählers (C1,PERM), 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.
  5. 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, miteinander zu vertauschen sind: einen Wert eines ersten permanenten Schreibvorgangszählers (C1,PERM), der mit der ersten Blocksammlung assoziiert ist, um den Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) zu erhöhen; und einen Wert eines zweiten permanenten Schreibvorgangszählers (C2,PERM), der mit der zweiten Blocksammlung assoziiert ist, um den Wert des zweiten transienten Schreibvorgangszählers(C2,TRANS) zu erhöhen.
  6. System nach Anspruch 1, das ferner Folgendes umfasst: eine Datenspeichervorrichtung, die Folgendes umfasst: die Vielzahl der Arbeitsspeichervorrichtungen (16); und den Prozessor.
  7. System nach Anspruch 1, das ferner Folgendes umfasst: eine Datenspeichervorrichtung, die die Vielzahl der Arbeitsspeichervorrichtungen (16) umfasst; und eine Hostvorrichtung, die den Prozessor umfasst.
  8. 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, miteinander zuvertauschen sind: den Wert des ersten transienten Zählers (C1,TRANS) und den Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) gleich einem Grundwert zu setzen.
  9. Verfahren, das Folgendes umfasst: Ermitteln, durch einen Prozessor, auf Basis eines Werts eines ersten transienten Schreibvorgangszählers (C1,TRANS), der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers (C2,TRANS), 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, miteinander zu vertauschen sind, wobei: der Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die erste logische Blockadressensammlung involvierenden Datenvertauschung in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die zweite logische Blockadressensammlung involvierenden Datenvertauschung 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, miteinander zu vertauschen 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 vertauscht werden, die an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind.
  10. 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, miteinander zu vertauschen sind, Folgendes umfasst: Ermitteln durch den Prozessor, ob der Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) größer als eine vorbestimmte Zahl multipliziert mit dem Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) ist.
  11. 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, miteinander zu vertauschen sind, Folgendes umfasst: Summieren, durch den Prozessor, des Werts des ersten transienten Schreibvorgangszählers (C1,TRANS) 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 (C1,PERM) 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 (C2,TRANS) mit einem Wert eines zweiten permanenten Schreibvorgangszählers (C2,PERM), 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 (C2,PERM) gleich der Anzahl an Malen ist, die Daten in die zweite logische Blockadressensammlung vor einer vorherigen, die zweite logische Blockadressensammlung involvierenden Datenvertauschung geschrieben wurden; und Ermitteln durch den Prozessor, ob der erste Gesamtschreibvorgangswert größer als eine vorbestimmte Zahl multipliziert mit dem zweiten Gesamtschreibvorgangswert ist.
  12. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: als Reaktion auf das Ermitteln, dass eine Summe des Werts des ersten transienten Schreibvorgangszählers (C1,TRANS) und eines Werts eines ersten permanenten Schreibvorgangszählers (C1,PERM), 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.
  13. 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, miteinander zu vertauschen sind: Erhöhen eines Werts eines ersten permanenten Schreibvorgangszählers (C1,PERM), der mit der ersten logischen Blockadressensammlung assoziiert ist, um den Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) 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 (C2,TRANS) durch den Prozessor.
  14. Verfahren nach Anspruch 9, wobei das Ermitteln, ob die physischen Positionen der Daten, die an logischen Blockadressen in der ersten logischen Blockadressensammlung gespeichert sind, miteinander zu vertauschen sind, und die physischen Positionen von Daten, die an logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind, miteinander zu vertauschen sind, als Reaktion auf ein Ermitteln durch den Prozessor erfolgt, dass ein Wert eines Vorrichtungs-Schreibvorgangszählers eine Vorrichtungs-Schreibvorgangszählschwelle erfüllt.
  15. 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, miteinander zu vertauschen sind: Setzen des Werts des ersten transienten Zählers (C1,TRANS) und des Werts des zweiten transienten Schreibvorgangszählers (C2,TRANS) gleich einem Grundwert durch den Prozessor.
  16. Computerlesbares Speichermedium, das Anweisungen speichert, die, wenn sie ausgeführt werden, bewirken, dass ein Prozessor: auf Basis eines Werts eines ersten transienten Schreibvorgangszählers (C1,TRANS), der mit einer ersten logischen Blockadressensammlung assoziiert ist, und eines Werts eines zweiten transienten Schreibvorgangszählers (C2,TRANS), 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, miteinander zu vertauschen sind, wobei: der Wert des ersten transienten Schreibvorgangszählers (C1,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die erste logische Blockadressensammlung involvierenden Datenvertauschung in die erste logische Blockadressensammlung geschrieben wurden, und der Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) gleich einer Anzahl an Malen ist, die Daten seit einer vorherigen, die zweite logische Blockadressensammlung involvierenden Datenvertauschung 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, miteinander zu vertauschen 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 vertauscht werden, die an den logischen Blockadressen in der zweiten logischen Blockadressensammlung gespeichert sind.
  17. 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, miteinander zu vertauschen 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.
  18. 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, miteinander zu vertauschen sind, zumindest durch Bewirken, dass der Prozessor: den Wert des ersten transienten Schreibvorgangszählers mit einem Wert eines ersten permanenten Schreibvorgangszählers (C1,PERM) 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 (C1,PERM) 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 (C2,TRANS) 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 (C2,PERM) 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.
  19. 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 (C1,TRANS) und eines Werts eines ersten permanenten Schreibvorgangszählers (C1,PERM), 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.
  20. 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, miteinander zu vertauschen 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 (C2,PERM), der mit der zweiten Blocksammlung assoziiert ist, um den Wert des zweiten transienten Schreibvorgangszählers (C2,TRANS) erhöht.
DE102017104150.8A 2016-04-14 2017-02-28 Abnutzungsausgleich in Speichervorrichtungen Active DE102017104150B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/098,668 2016-04-14
US15/098,668 US9842059B2 (en) 2016-04-14 2016-04-14 Wear leveling in storage devices

Publications (2)

Publication Number Publication Date
DE102017104150A1 DE102017104150A1 (de) 2017-10-19
DE102017104150B4 true 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 (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261876B2 (en) 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
US10430085B2 (en) 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
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
US11354232B2 (en) * 2018-01-29 2022-06-07 Hewlett-Packard Development Company. L.P. Validity of data sets stored in memory
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161880A1 (en) 2006-12-27 2010-06-24 Guangqing You Flash initiative wear leveling algorithm
US20130326148A1 (en) 2012-06-01 2013-12-05 Po-Chao Fang Bucket-based wear leveling method and apparatus

Family Cites Families (17)

* Cited by examiner, † Cited by third party
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
JP4518951B2 (ja) * 2002-10-28 2010-08-04 サンディスク コーポレイション 不揮発性記憶システムにおける自動損耗均等化
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
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
JP5347024B2 (ja) * 2009-06-24 2013-11-20 パナソニック株式会社 メモリアクセス制御装置、集積回路、メモリアクセス制御方法及びデータ処理装置
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
KR102042859B1 (ko) * 2013-10-14 2019-11-08 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100161880A1 (en) 2006-12-27 2010-06-24 Guangqing You Flash initiative wear leveling algorithm
US8356152B2 (en) 2006-12-27 2013-01-15 Intel Corporation Initiative wear leveling for non-volatile memory
US20130326148A1 (en) 2012-06-01 2013-12-05 Po-Chao Fang Bucket-based wear leveling method and apparatus

Also Published As

Publication number Publication date
CN107301134B (zh) 2020-06-16
CN107301134A (zh) 2017-10-27
KR20170117868A (ko) 2017-10-24
KR101908581B1 (ko) 2018-10-17
US9842059B2 (en) 2017-12-12
DE102017104150A1 (de) 2017-10-19
US20170300423A1 (en) 2017-10-19

Similar Documents

Publication Publication Date Title
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
US10282286B2 (en) Address mapping using a data unit type that is variable
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE112020005060T5 (de) Ratengrenze für den übergang von zonen zum öffnen
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE102017104158A1 (de) Gültigkeitsverfolgung für garbage collection
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE112016003998T5 (de) Technologien für das management eines reservierten hochleistungsspeicherbereichs eines solid-state-laufwerks
DE112020005078T5 (de) Verschieben von änderungsprotokolltabellen zum abstimmen mit zonen
DE102021115500A1 (de) Hostverwaltete hardwarekomprimierung mit gezonten namensräumen
DE112020004966T5 (de) Zns-parität-verschiebung nach dram
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE102021115893A1 (de) EFFIZIENTE DATENSPEICHERUNGSNUTZUNG IM ZUSAMMENHANG MIT EINEM NICHT ORDNUNGSGEMÄßEN HERUNTERFAHREN
DE102019133167A1 (de) Optimierte Handhabung mehrerer Kopien im Speichermanagment
DE102022101609A1 (de) Sehr kleine zonenunterstützung für speicherungsvorrichtungen

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. 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. STAATE, US

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