DE102015012567A1 - Integritätsdiagnose für speichergeräte - Google Patents

Integritätsdiagnose für speichergeräte Download PDF

Info

Publication number
DE102015012567A1
DE102015012567A1 DE102015012567.2A DE102015012567A DE102015012567A1 DE 102015012567 A1 DE102015012567 A1 DE 102015012567A1 DE 102015012567 A DE102015012567 A DE 102015012567A DE 102015012567 A1 DE102015012567 A1 DE 102015012567A1
Authority
DE
Germany
Prior art keywords
storage device
controller
fill percentage
fill
blocks
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.)
Pending
Application number
DE102015012567.2A
Other languages
English (en)
Inventor
Haining Liu
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
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102015012567A1 publication Critical patent/DE102015012567A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/54Arrangements for designing test circuits, e.g. design for test [DFT] tools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

Ein Speichergerät kann eine Vielzahl von Speichereinheiten, die logisch in eine Vielzahl von Blöcken aufgeteilt sind, und einen Controller umfassen. In manchen Beispielen kann der Controller konfiguriert sein, einen jeweiligen Füllprozentsatz für jeden jeweiligen Block der Vielzahl von Blöcken zu ermitteln; den kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, eine mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft Speichergeräte wie Halbleiterlaufwerke.
  • STAND DER TECHNIK
  • Halbleiterlaufwerke (SSDs, Solid-State-Drives) können in Computer in Anwendungen verwendet werden, bei denen relativ geringe Latenz und Speicherung mit hoher Kapazität gewünscht werden. SSDs können zum Beispiel geringere Latenz als Festplatten (HDDs) zeigen, insbesondere für zufällige Lese- und Schreibvorgänge. Dies kann größeren Durchsatz für zufällige Lesevorgänge aus einem und für zufällige Schreibvorgänge in ein SSD im Vergleich zu einer Festplatte erlauben. Zusätzlich können SSDs mehrere parallele Datenkanäle zum Lesen von und zum Schreiben auf Speichereinheiten benutzen, was in hohen sequenziellen Lese- und Schreibgeschwindigkeiten resultieren kann.
  • SSDs können nichtflüchtige Speichereinheiten benutzen, wie Flash-Speichereinheiten, die weiter Daten speichern, ohne eine dauernde oder periodische Stromversorgung zu benötigen. Flash-Speichereinheiten werden durch Anlegen einer Spannung an die Speicherzelle beschrieben und gelöscht. Die zum Löschen der Flash-Speichereinheiten verwendete Spannung kann relativ hoch sein und kann über viele Löschoperationen physische Änderungen an der Flash-Speicherzelle verursachen. Aus diesem Grund können sich Flash-Speicherzellen nach vielen Löschoperationen abnutzen, was ihre Fähigkeit zum Speichern von Ladung reduziert und die Fähigkeit zum Schreiben neuer Daten in die Flash-Speicherzellen reduziert oder eliminiert.
  • KURZFASSUNG
  • In manchen Beispielen beschreibt die Offenbarung ein Speichergerät, das eine Vielzahl von Speichereinheiten, die logisch in eine Vielzahl von Blöcken aufgeteilt sind, und einen Controller umfasst. In manchen Beispielen kann der Controller konfiguriert sein, einen jeweiligen Füllprozentsatz für jeden jeweiligen Block der Vielzahl von Blöcken zu ermitteln; den kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, eine mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.
  • In manchen Beispielen beschreibt die Offenbarung ein Verfahren, das Ermitteln eines jeweiligen Füllprozentsatzes für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts durch einen Controller eines Speichergeräts; Ermitteln des kleinsten Füllprozentsatzes für die Vielzahl der jeweiligen Füllprozentsätze durch den Controller; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, Durchführen einer mit der Integrität des Speichergeräts verknüpften Maßnahme durch den Controller umfasst.
  • In manchen Beispielen beschreibt die Offenbarung ein computerlesbares Speichermedium, das Anweisungen umfasst, die, wenn sie ausgeführt werden, einen oder mehrere Prozessoren eines Speichergeräts konfigurieren, einen jeweiligen Füllprozentsatz für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts zu ermitteln; den kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln; und als Reaktion auf ein Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, eine mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.
  • In manchen Beispielen beschreibt die Offenbarung ein System, das Mittel zum Ermitteln eines jeweiligen Füllprozentsatzes für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts umfasst. Das System kann auch Mittel zum Ermitteln des kleinsten Füllprozentsatzes für die Vielzahl der jeweiligen Füllprozentsätze umfassen. Gemäß diesen Beispielen kann das System auch Mittel zum Durchführen einer mit einer Integrität des Speichergeräts verknüpften Maßnahme umfassen, als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet.
  • 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 konzeptuelles und schematisches Blockdiagramm, das ein Beispielsystem illustriert, das ein mit einem Hostgerät verbundenes Speichergerät enthält.
  • 2 ist ein konzeptuelles Blockdiagramm, das eine Beispielspeichereinheit 12AA illustriert, das eine Vielzahl von Blöcken enthält, wobei jeder Block eine Vielzahl von Seiten enthält.
  • 3 ist ein konzeptuelles und schematisches Blockdiagramm, das einen Beispielcontroller illustriert.
  • 4 ist eine grafische Beispieldarstellung, die eine Verteilung von Blöcken als Funktion eines Füllprozentsatzes während des stationären Betriebs eines Speichergeräts illustriert.
  • 5 ist eine grafische Darstellung des Schreibverstärkungsfaktors als Verhältnis des Überversorgungsverhältnisses p für ein Beispielspeichergerät.
  • 6 ist eine grafische Darstellung des schlechtesten Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät.
  • 7 ist ein Flussdiagramm, das eine Beispielmethode zum Abschätzen einer Integrität eines Speichergeräts auf der Basis eines kleinsten Füllprozentsatzwerts illustriert.
  • 8 ist eine grafische Darstellung des mittleren Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Offenbarung beschreibt eine Methode zur Integritätsverfolgung eines Speichergeräts, wie eines Halbleiterlaufwerks (SSD). In manchen Beispielen kann die Methode einen oder mehr Parameter benutzen, der bzw. die von einem Controller des Speichergeräts als Teil von automatischen Speicherbereinigungsoperationen (Garbage Collection) des Speichergeräts verfolgt wird bzw. werden. Ein Speichergerät kann Speichereinheiten enthalten, die jede eine Vielzahl von Blöcken enthalten, wobei jeder Block Speicherzellen enthält, die Daten speichern. Ein Controller eines Speichergeräts kann einen Füllprozentsatz für jeden Block des Speichergeräts ermitteln, während er eine automatische Speicherbereinigung durchführt. Der Füllprozentsatz bezieht sich auf ein Verhältnis der gültigen Daten, die in einem Block gespeichert sind, im Vergleich zur Gesamtkapazität des Blocks. Der Controller kann dann den kleinsten Füllprozentsatz über die Blöcke hinweg ermitteln. Der Controller kann diesen kleinsten Füllprozentsatz mit einem vorbestimmten Schwellenwert vergleichen. Falls der kleinste Füllprozentsatz größer als der Schwellenwert ist, kann dies anzeigen, dass sich die Integrität des Speichergeräts verschlechtert. Die Integrität des Speichergeräts kann mit einer Anzahl von freien Blöcken im Speichergerät verknüpft sein. Falls die Anzahl von freien Blöcken gering wird, kann der Controller keinen ausreichenden Abnutzungsausgleich und keine ausreichende automatische Speicherbereinigung durchführen, um die Leistung des Speichergeräts aufrechtzuerhalten. Falls die Anzahl der freien Blöcke zu gering ist, kann der Controller nicht fähig sein, die verlorene Leistung wiederherzustellen, oder neue Daten können nicht in das Speichergerät geschrieben werden. Deshalb ist ein Ermitteln, warm sich die Integrität des Speichergeräts verschlechtert, bevor sich die Integrität so weit verschlechtert, dass sie nicht wiederherstellbar ist, für einen fortgesetzten Betrieb des Speichergeräts wichtig.
  • In manchen Beispielen kann der Controller für jede automatische Speicherbereinigungsoperation den kleinsten Füllprozentsatz ermitteln. Der Controller kann dann einen mittleren kleinsten Füllprozentsatz für eine vorbestimmte Anzahl von jüngsten kleinsten Füllprozentsätzen ermitteln. Durch Mitteln der kleinsten Füllprozentsätze für jeden von einer Vielzahl von jüngsten automatischen Speicherbereinigungsoperationen kann der Controller den Wert des kleinsten Füllprozentsatzes über die Vielzahl von jüngsten automatischen Speicherbereinigungsoperationen glätten. Der Controller kann dann diesen mittleren kleinsten Füllprozentsatz mit dem Schwellenwert vergleichen.
  • Der Controller kann als Reaktion auf ein Ermitteln, dass der mittlere kleinste Füllprozentsatz größer als der Schwellenwert ist, eine oder mehrere vorbestimmte Operationen durchführen. Der Controller kann zum Beispiel einen Betriebsparameter modifizieren oder eine Angabe der Speichergeräteintegrität an ein Hostgerät des Speichergeräts ausgeben.
  • Auf diese Weise kann der Controller des Speichergeräts die Integrität des Speichergeräts während der Laufzeit durch Verwendung eines einzelnen Werts oder eines Mittelwerts eines einzelnen Werts über eine Vielzahl von Operationen überwachen. Dieser einzelne Wert oder Mittelwert eines einzelnen Werts wird dann mit einem Schwellenwert verglichen, um eine Ermittlung der Speichergeräteintegrität zu machen. Deshalb kann die Speichergeräteintegritätsüberwachung relativ leicht und mit geringem Overhead sein. Zusätzlich setzen die hier beschriebenen Methoden einen während der automatischen Speicherbereinigung verfolgten Parameter ein.
  • Im Vergleich werden manche Methoden zum Abschätzen der Speichergeräteintegrität durch ein Hostgerät implementiert und erfordern, dass das Hostgerät einen Schreibverstärkungsfaktor auf der Basis roher Speichergerätstatistiken berechnet (wie der Datenmenge, die das Hostgerät das Speichergerät angewiesen hat zu schreiben, und der Datenmenge, die das Speichergerät tatsächlich geschrieben hat, einschließlich der während Schreibvorgängen, automatischer Speicherbereinigung, Abnutzungsausgleich und Ähnlichem geschriebenen Daten). Das Hostgerät schätzt dann die Speichergeräteintegrität auf der Basis des berechneten Schreibverstärkungsfaktors ab. Das Sammeln der rohen Speichergerätstatistiken und die Berechnung des Schreibverstärkungsfaktors kann eine Verzögerung beim Ermitteln der Speichergeräteintegrität einführen, die ein Eingreifen, falls sich die Speichergeräteintegrität verschlechtert hat, verzögern kann. In manchen Beispielen kann die Verzögerung so schwerwiegend sein, dass das Speichergerät einen Zustand annimmt, von dem sich das Speichergerät nicht erholen kann. Im Gegensatz zu diesen Methoden können die hier beschriebenen Methoden keine Ermittlung eines Schreibverstärkungsfaktors auf der Basis von tatsächlichen Schreibstatistiken erfordern und/oder können vom Speichergerät-Controller anstatt vom Hostgerät implementiert werden. Dementsprechend können die hier beschriebenen Methoden eine frühere Erfassung oder Vorhersage einer Verschlechterung der Speichergeräteintegrität erlauben und können die Wahrscheinlichkeit reduzieren oder eliminieren, dass das Speichergerät einen Zustand annimmt, von dem sich das Speichergerät nicht erholen kann.
  • 1 ist ein konzeptuelles und schematisches Blockdiagramm, das ein Beispielsystem illustriert, das ein mit einem Hostgerät 15 verbundenes Speichergerät 2 umfasst. Das Hostgerät 15 kann nichtflüchtige, im Speichergerät 2 enthaltene Speichereinheiten benutzen, um Daten zu speichern und abzurufen. Das Hostgerät 15 kann irgendein Rechengerät umfassen, zum Beispiel einschließlich eines Computerservers, einer NAS-Einheit (Network Attached Storage), eines Desktop-Computers, eines Notebook-Computers (z. B. eines Laptops), eines Tablet-Computers, einer Set-Top-Box, eines mobilen Rechengeräts wie eines „Smartphones”, eines Fernsehers, einer Kamera, eines Anzeigegeräts, eines digitalen Medienplayers, einer Videospielkonsole, eines Videostreaminggeräts oder Ähnlichem.
  • Wie in 1 illustriert, kann das Speichergerät 2 einen Controller 4, ein nichtflüchtiges Speicherarray 6, einen Cache 8 und eine Schnittstelle 10 enthalten. In manchen Beispielen kann das Speichergerät 2 zusätzliche Komponenten enthalten, die in 1 der Klarheit halber nicht gezeigt sind. Zum Beispiel kann das Speichergerät 2 Stromversorgungskomponenten enthalten, zum Beispiel einschließlich eines Kondensators, eines Superkondensators oder einer Batterie; eine Leiterplatte, an der Komponenten des Speichergeräts 2 mechanisch angebracht sind und die elektrisch leitende Bahnen enthält, die Komponenten des Speichergeräts 2 elektrisch miteinander verbinden; oder Ähnliches enthalten. In manchen Beispielen enthält das Speichergerät 2 ein Solid-State-Drive (SSD).
  • Das Speichergerät 2 kann die Schnittstelle 10 zu einem Ankoppeln mit dem Hostgerät 15 enthalten. Die Schnittstelle 10 kann eine mechanische Verbindung und eine elektrische Verbindung mit dem Hostgerät 15 oder beides bereitstellen. Die Schnittstelle 10 kann einen der folgenden Busse oder beide umfassen: einen Datenbus zum Austauschen von Daten mit dem Hostgerät 15 und einen Steuerbus zum Austauschen von Befehlen mit dem Hostgerät 15. Die Schnittstelle 10 kann in Übereinstimmung mit irgendeinem geeigneten Protokoll arbeiten. Die Schnittstelle 10 kann zum Beispiel in Übereinstimmung mit einem der oder mehrere der folgenden Protokolle arbeiten: ATA (Advanced Technology Attachment) (z. B. Serial ATA (SATA) und Parallel ATA (PATA)), Fibre Channel, SCSI (Small Computer System Interface), SAS (Serially Attached SCSI), PCI (Peripheral Component Interconnect) und PCI-Express. Die elektrische Verbindung der Schnittstelle 10 (z. B. der Datenbus, der Steuerbus oder beide) ist elektrisch mit dem Controller 4 verbunden und stellt eine elektrische Verbindung zwischen dem Hostgerät 15 und dem Controller bereit, was erlaubt, dass Daten zwischen dem Hostgerät 15 und dem Controller 4 ausgetauscht werden.
  • Das Speichergerät 2 kann das NVMA 6 enthalten, das eine Vielzahl von Speichereinheiten 12AA12NN umfassen kann (kollektiv „Speichereinheiten 12”), die jeweils konfiguriert sein können, Daten zu speichern und/oder abzurufen. Eine Speichereinheit der Speichereinheiten 12 kann zum Beispiel Daten und eine Nachricht vom Controller 4 erhalten, die die Speichereinheit anweist, die Daten zu speichern. Gleichermaßen kann die Speichereinheit der Speichereinheiten 12 eine Nachricht vom Controller 4 erhalten, die die Speichereinheit anweist, Daten abzurufen. In manchen Beispielen kann jede der Speichereinheiten 12 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 manchen Beispielen können die Speichereinheiten 12 Flash-Speichereinheiten umfassen. Flash-Speichereinheiten können auf NAND oder NOR basierende Flash-Speichereinheiten enthalten und können Daten auf der Basis einer Ladung speichern, die in einem Floating Gate eines Transistors für jede Flash-Speicherzelle beinhaltet ist. In NAND-Flash-Speichereinheiten kann die Flash-Speichereinheit in eine Vielzahl von Blöcken aufgeteilt sein. 2 ist ein konzeptuelles Blockdiagramm, das eine Beispielspeichereinheit 12AA illustriert, die eine Vielzahl von Blöcken 16A16N (kollektiv „Blöcke 16”) enthält, wobei jeder Block eine Vielzahl von Seiten 18AA18NM (kollektiv „Seiten 18”) enthält. Jeder Block der Blöcke 16 kann eine Vielzahl von NAND-Zellen enthalten. Zeilen von NAND-Zellen können unter Verwendung einer Wortleitung elektrisch in Reihe geschaltet sein, um eine Seite zu definieren (eine Seite der Seiten 18). Die jeweiligen Zellen in jeder der Vielzahl der Seiten 18 können elektrisch mit den jeweiligen Bitleitungen verbunden sein. Der Controller 4 kann auf Seitenebene Daten in die NAND-Flash-Speichereinheiten schreiben und daraus lesen und Daten aus den NAND-Flash-Speichereinheiten auf der Blockebene löschen.
  • In manchen Beispielen kann es für den Controller 4 nicht praktikabel sein, separat mit jeder Speichereinheit der Speichereinheiten 12 verbunden zu sein. Dementsprechend können die Verbindungen zwischen den Speichereinheiten 12 und dem Controller 4 gebündelt sein. Als ein Beispiel können die Speichereinheiten 12 in Kanäle 14A14N (kollektiv „Kanäle 14”) gruppiert sein. Zum Beispiel, wie in 1 illustriert, können die Speichereinheiten 12AA12AN in einen ersten Kanal 14A gruppiert sein, und die Speichereinheiten 12NA12NN können in einen N-ten Kanal 14N gruppiert sein. Die in jeden der Kanäle 14 gruppierten Speichereinheiten 12 können sich eine oder mehrere Verbindungen mit dem Controller 4 teilen. Die jeweils in den ersten Kanal 14A gruppierten Speichereinheiten 12 können zum Beispiel an einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus angeschlossen sein. Das Speichergerät 2 kann einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus jeweils für einen Kanal der Kanäle 14 enthalten. In manchen Beispielen kann jeder der Kanäle 14 einen Satz Chipfreigabe- bzw. CE-Leitungen enthalten, die zur Bündelung von Speichereinheiten auf jedem Kanal verwendet werden können. Jede CE-Leitung kann zum Beispiel mit einer entsprechenden Speichereinheit der Speichereinheiten 12 verbunden sein. Auf diese Weise kann die Anzahl der separaten Verbindungen zwischen den Speichereinheiten 12 reduziert werden. Zusätzlich kann, da jeder Kanal einen unabhängigen Satz von Verbindungen mit dem Controller 4 aufweist, die Reduktion von Verbindungen die Datendurchsatzrate nicht wesentlich beeinflussen, da der Controller 4 gleichzeitig unterschiedliche Befehle an jeden Kanal erteilen kann.
  • In manchen Beispielen kann das Speichergerät 2 eine Anzahl von Speichereinheiten 12 enthalten, die ausgewählt wurde, um eine Gesamtkapazität bereitzustellen, die größer als die für das Hostgerät 15 zugängliche Kapazität ist. Dies wird als Überversorgung bezeichnet. Falls das Speichergerät 2 zum Beispiel angekündigt wird, 240 GB an für Benutzer zugänglicher Speicherkapazität zu enthalten, kann das Speichergerät 2 ausreichende Speichereinheiten 12 enthalten, um eine Gesamtspeicherkapazität von 256 GB zu ergeben. Die 16 GB der Speichergeräte 12 können für das Hostgerät 15 oder einen Benutzer des Hostgeräts 15 nicht zugänglich sein. Stattdessen können die zusätzlichen Speichergeräte 12 zusätzliche Blöcke 16 bereitstellen, um Schreibvorgänge, automatische Speicherbereinigung, Abnutzungsausgleich und Ähnliches zu erleichtern. Ferner können die zusätzlichen Speichergeräte 12 zusätzliche Blöcke 16 bereitstellen, die verwendet werden können, falls sich manche Blöcke abnutzen, um unverwendbar zu werden, und aus der Verwendung ausgeschieden werden. Das Vorhandensein der zusätzlichen Blöcke 16 kann ein Ausscheiden der abgenutzten Blöcke erlauben, ohne eine Änderung in der für das Hostgerät 15 verfügbaren Speicherkapazität zu verursachen. In manchen Beispielen kann das Ausmaß an Überversorgung als p = (T – D)/D definiert werden, wobei p das Überversorgungsverhältnis, T die Gesamtanzahl der Blöcke des Speichergeräts 2 und D die Anzahl der Blöcke des Speichergeräts 2 ist, die für das Hostgerät 15 zugänglich sind.
  • Das Speichergerät 2 umfasst den Controller 4, der eine oder mehr Operationen des Speichergeräts 2 verwalten kann. 3 ist ein konzeptuelles und schematisches Blockdiagramm, das einen Beispielcontroller 20 illustriert, der ein Beispiel für den Controller 4 in 1 sein kann. In manchen Beispielen kann der Controller 20 ein Schreibmodul 22, ein Wartungsmodul 24, ein Lesemodul 26, eine Vielzahl von Kanalcontrollern 28A28N (kollektiv „Kanalcontroller 28”) und ein Adressübersetzungsmodul 20 umfassen. In anderen Beispielen kann der Controller 20 zusätzliche Module oder Hardwareeinheiten umfassen oder kann weniger Module oder Hardwareeinheiten umfassen. Der Controller 20 kann einen Mikroprozessor, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA) oder andere digitale Logikschaltkreise umfassen.
  • Der Controller 20 kann über die Schnittstelle 10 an das Hostgerät 15 ankoppeln und die Speicherung von Daten in den und den Abruf von Daten aus den Speichereinheiten 12 verwalten. Das Schreibmodul 22 des Controllers 20 kann zum Beispiel Schreibvorgänge in die Speichereinheiten 12 verwalten. Das Schreibmodul 22 kann zum Beispiel über die Schnittstelle 10 eine Nachricht vom Hostgerät 15 erhalten, die das Speichergerät 2 anweist, zu einer logischen Adresse gehörige Daten und die Daten zu speichern. Das Schreibmodul 22 kann das Schreiben der Daten in die Speichereinheiten 12 verwalten.
  • Das Schreibmodul 22 kann zum Beispiel mit dem Adressübersetzungsmodul 20 kommunizieren, das die Übersetzung zwischen logischen Adressen, die vom Hostgerät 15 zur Verwaltung von Speicherpositionen von Daten verwendet werden, und physikalischen Blockadressen verwaltet, die vom Schreibmodul 22 zur Lenkung des Schreibens der Daten in Speichereinheiten verwendet werden. Das Adressübersetzungsmodul 30 von Controller 20 kann eine Flash-Übersetzungsschicht oder -tabelle benutzen, die logische Adressen (oder logische Blockadressen) der von den Speichereinheiten 12 gespeicherten Daten in physikalische Blockadressen der von den Speichereinheiten 12 gespeicherten Daten übersetzt. Das Hostgerät 15 kann zum Beispiel die logischen Blockadressen der von den Speichereinheiten 12 gespeicherten Daten in Anweisungen oder Nachrichten an das Speichergerät 2 benutzen, während das Schreibmodul 22 physikalische Blockadressen der Daten einsetzt, um das Schreiben der Daten in die Speichereinheiten 12 zu steuern. (Gleichermaßen kann das Lesemodul 26 physikalische Blockadressen zu einer Steuerung des Lesens von Daten aus den Speichereinheiten 12 benutzen.) Die physikalischen Blockadressen entsprechen tatsächlichen physikalischen Blöcken (z. B. den Blöcken 16 von 2) der Speichereinheiten 12.
  • Auf diese Weise kann es dem Hostgerät 15 erlaubt sein, eine statische logische Blockadresse für einen bestimmten Satz von Daten zu verwenden, während sich die physikalische Blockadresse, an der die Daten tatsächlich gespeichert sind, ändern kann. Das Adressübersetzungsmodul 20 kann die Flash-Übersetzungsschicht oder -tabelle unterhalten, um die logischen Blockadressen physikalischen Blockadressen zuzuordnen, um die Verwendung der statischen logischen Blockadresse durch das Hostgerät 15 zu erlauben, während sich die physikalische Blockadresse der Daten ändern kann, wie zum Beispiel aufgrund von Abnutzungsausgleich, automatischer Speicherbereinigung oder Ähnlichem.
  • Wie oben besprochen, kann das Schreibmodul 24 von Controller 20 eine oder mehrere Operationen zum Verwalten des Schreibens von Daten in die Speichereinheiten 16 zu ausführen. Das Schreibmodul 24 kann zum Beispiel das Schreiben von Daten in die Speichereinheiten 16 verwalten, indem es einen oder mehrere Blöcke innerhalb der Speichereinheiten 16 auswählt, um die Daten zu speichern, und verursacht, dass die Speichereinheiten der Speichereinheiten 16, die die ausgewählten Blocks enthalten, die Daten tatsächlich speichern. Wie oben besprochen, kann das Schreibmodul 24 verursachen, dass das Adressübersetzungsmodul 30 die Flash-Übersetzungsschicht oder -tabelle auf der Basis der ausgewählten Blöcke aktualisiert. Das Schreibmodul 24 kann zum Beispiel eine Nachricht vom Hostgerät 4 erhalten, die eine Dateneinheit und eine logische Blockadresse enthält, einen Block innerhalb einer bestimmten Speichereinheit der Speichereinheiten 16 auswählen, um die Daten zu speichern, verursachen, dass die bestimmte Speichereinheit der Speichereinheiten 16 die Daten tatsächlich speichert (z. B. über einen Kanalcontroller der Kanalcontroller 28A28N, der der bestimmten Speichereinheit entspricht), und verursachen, dass das Adressübersetzungsmodul 30 die Flash-Übersetzungsschicht oder -tabelle aktualisiert, um anzuzeigen, dass die logische Blockadresse dem ausgewählten Block in der bestimmten Speichereinheit entspricht.
  • Die Flash-Übersetzungsschicht oder -tabelle kann auch eine Aufteilung von vom Hostgerät 15 erhaltenen Daten über eine Vielzahl von physikalischen Blockadressen erleichtern. In manchen Fällen können die vom Hostgerät 15 erhaltenen Daten zum Beispiel in Einheiten sein, die größer als ein einzelner Block sind. Dementsprechend kann der Controller 20 mehrere Blöcke auswählen, um jeweils einen Teil der Dateneinheit zu speichern. Im Gegensatz zu einem Auswählen von mehreren Blöcken innerhalb einer einzelnen Speichereinheit der Speichereinheiten 12, um die Teile der Dateneinheit zu speichern, kann der Controller 20 Blöcke aus einer Vielzahl von Speichereinheiten 12 auswählen, um die Teile der Dateneinheit zu speichern. Der Controller 20 kann dann verursachen, dass die Vielzahl der Speichereinheiten 12 die Teile der Dateneinheiten parallel speichern. Auf diese Weise kann der Controller 20 die Rate erhöhen, mit der die Daten in die Speichereinheiten 12 gespeichert werden, indem Teile der Daten in unterschiedliche Speichereinheiten 12 geschrieben werden, die zum Beispiel mit unterschiedlichen Kanälen 14 verbunden sind.
  • Um ein Bit mit einem logischen Wert von 0 (Ladung) in ein Bit mit einem vorhergehenden logischen Wert von 1 (ungeladen) zu schreiben, wird ein hoher Strom verwendet. Dieser Strom kann hinreichend hoch sein, sodass er unbeabsichtigte Änderungen an der Ladung von benachbarten Flash-Speicherzellen verursacht. Um vor unbeabsichtigten Änderungen zu schützen, kann ein gesamter Block von Flash-Speicherzellen vor dem Schreiben irgendwelcher Daten in die Zellen in dem Blocks auf einen logischen Wert von 1 (ungeladen) gelöscht werden. Aus diesem Grund können Flash-Speicherzellen auf Blockebene gelöscht und auf Seitenebene beschrieben werden.
  • Um sogar eine Datenmenge zu schreiben, die weniger als eine Seite verbrauchen würde, kann der Controller 20 somit verursachen, dass ein gesamter Block gelöscht wird. Dies kann zu Schreibverstärkung führen, was sich auf das Verhältnis zwischen der vom Hostgerät 14 erhaltenen Datenmenge, die in die Speichereinheiten 12 zu schreiben ist, und der tatsächlich in die Speichereinheiten 12 geschriebenen Datenmenge bezieht. Die Schreibverstärkung trägt zu einer schnelleren Abnutzung der Flash-Speicherzellen bei, als ohne Schreibverstärkung auftreten würde. Wenn Flash-Speicherzellen gelöscht werden, kann eine Abnutzung der Flash-Speicherzellen aufgrund der relativ hohen Spannungen auftreten, die zum Löschen verwendet werden. Über eine Vielzahl von Löschzyklen können die relativ hohen Spannungen physische Änderungen an den Flash-Speicherzellen zur Folge haben. Irgendwann können sich die Flash-Speicherzellen abnutzen, sodass keine Daten mehr in die Zellen geschrieben werden können.
  • Eine Methode, die der Controller 20 implementieren kann, um die Schreibverstärkung und Abnutzung von Flash-Speicherzellen zu reduzieren, umfasst ein Schreiben von vom Hostgerät 14 erhaltenen Daten in unbenutzte (oder freie) Blöcke (z. B. die Blöcke 16 von 2) oder teilweise benutzte Blöcke. Falls zum Beispiel Hostgerät 14 Daten an das Speichergerät 2 sendet, die nur eine kleine Änderung von bereits vom Speichergerät 2 gespeicherten Daten enthält, kann der Controller 20 die alten Daten als veraltet oder ungültig markieren und die neuen Daten in einen nicht verwendeten Block bzw. in nicht verwendete Blöcke schreiben. Mit der Zeit kann dies eine Anzahl von Löschoperationen reduzieren, denen Blöcke ausgesetzt sind, verglichen mit einem Löschen des die alten Daten haltenden Blocks und Schreiben der aktualisierten Daten in den gleichen Block.
  • Da leere (oder freie) Blöcke keine bestehenden Daten beinhalten, können freie Blöcke beschrieben werden, ohne zuerst vom Block gespeicherte Daten zu löschen. Deshalb kann Schreiben in freie Blöcke schneller als Schreiben in vorher volle oder teilweise volle Blöcke sein. Ein Schreiben in freie Blöcke kann auch die Abnutzung der Speichereinheiten 12 aufgrund des Fehlens einer Löschoperation vor der Schreiboperation reduzieren. In manchen Beispielen kann das Speichergerät 2 genug Speichereinheiten 12 enthalten, um einen Pool an freien Blöcken F aufrechtzuerhalten, um Schreibgeschwindigkeiten aufrechtzuerhalten und die Abnutzung der Speichereinheiten 12 zu reduzieren. Die Anzahl der freien Blöcke F ist mit dem Überversorgungsverhältnis p verknüpft, da die Anzahl der freien Blöcke F gleich der Anzahl der benutzerzugänglichen Blöcke D subtrahiert von der Gesamtanzahl der Blöcke T (F = T – D) ist.
  • Als Reaktion auf ein Empfangen eines Schreibbefehls vom Hostgerät 15 kann das Schreibmodul 22 ermitteln, an welche physikalischen Speicherstellen (Blöcke 16) der Speichereinheiten 12 es die Daten schreibt. Das Schreibmodul 22 kann zum Beispiel eine oder mehrere physikalische Blockadressen, die leer (z. B. keine Daten speichern), teilweise leer (z. B. nur manche Seiten des Blocks speichern Daten) sind oder zumindest einige ungültige (oder veraltete) Daten speichern, vom Adressübersetzungsmodul 30 oder Wartungsmodul 24 anfordern. Nach Erhalten der einen oder mehreren physikalischen Blockadressen kann das Schreibmodul 22 eine Nachricht an einen oder mehrere der Kanalcontroller 28A28N (kollektiv „Kanalcontroller 28”) kommunizieren, die verursacht, dass die Kanalcontroller 28 die Daten in die ausgewählten Blöcke schreiben.
  • Das Lesemodul 26 kann gleichermaßen das Lesen von Daten aus den Speichereinheiten 12 steuern. Das Lesemodul 26 kann zum Beispiel eine Nachricht vom Hostgerät 15 erhalten, die Daten mit einer zugehörigen logischen Blockadresse anfordert. Das Adressübersetzungsmodul 30 kann die logische Blockadresse unter Verwendung der Flash-Übersetzungsschicht oder -tabelle in eine physikalische Blockadresse umwandeln. Das Lesemodul 26 kann dann einen oder mehrere der Kanalcontroller 28 steuern, um die Daten von den physikalischen Blockadressen abzurufen.
  • Jeder Kanalcontroller der Kanalcontroller 28 kann mit einem entsprechenden Kanal der Kanäle 14 verbunden sein. In manchen Beispielen kann der Controller 20 die gleiche Anzahl von Kanalcontrollern 28 wie die Anzahl der Kanäle 14 des Speichergeräts 2 enthalten. Die Kanalcontroller 28 können die enge Steuerung des Adressierens, Programmierens (oder Schreibens), Löschens und Lesens der Speichereinheiten 12 durchführen, die mit den entsprechenden Kanälen verbunden sind, z. B. unter Kontrolle des Schreibmoduls 22, des Lesemoduls 26 und/oder des Wartungsmoduls 24.
  • Das Wartungsmodul 24 kann konfiguriert sein, Operationen durchzuführen, die mit einer Aufrechterhaltung der Leistung und einer Verlängerung der nutzbaren Lebensdauer des Speichergeräts 2 (z. B. Speichereinheiten 12) verknüpft sind. Das Wartungsmodul 24 kann zum Beispiel mindestens eines von Folgendem implementieren: Abnutzungsausgleich oder automatische Speicherbereinigung.
  • Wie oben beschrieben kann ein Löschen von Flash-Speicherzellen relativ hohe Spannungen verwenden, die über eine Vielzahl von Löschoperationen Änderungen an den Flash-Speicherzellen verursachen können. Nach einer gewissen Anzahl von Löschoperationen können sich Flash-Speicherzellen so weit verschlechtern, dass Daten nicht mehr in die Flash-Speicherzellen geschrieben werden können, und ein Block (z. B. Block 16 von 2), der diese Zellen enthält, kann ausgeschieden (nicht mehr vom Controller 20 zum Speichern von Daten verwendet) werden. Um die Datenmenge, die in die Speichereinheiten 12 geschrieben werden können, zu erhöhen, bevor die Blöcke abgenutzt und ausgeschieden werden, kann das Wartungsmodul 24 Abnutzungsausgleich implementieren.
  • Beim Abnutzungsausgleich kann das Wartungsmodul 24 für jeden Block oder jede Blockgruppe eine Anzahl von Löschvorgängen an oder Schreibvorgängen in einen Block oder eine Blockgruppe verfolgen. Das Wartungsmodul 24 kann verursachen, dass eingehende Daten vom Hostgerät 15 in einen Block oder eine Blockgruppe geschrieben werden, der bzw. die relativ weniger Schreib- oder Löschvorgänge durchlaufen hat, um zu versuchen, eine ungefähr gleiche Anzahl von Schreib- oder Löschvorgängen für jeden Block oder jede Blockgruppe aufrechtzuerhalten. Dies kann verursachen, dass sich jeder Block der Speichereinheiten 12 mit ungefähr der gleichen Rate abnutzt, und kann die nutzbare Lebensdauer des Speichergeräts 2 erhöhen.
  • Obwohl dies die Schreibverstärkung und Abnutzung der Flash-Speicherzellen durch Reduzieren einer Anzahl von Löschvorgängen und Schreiben von Daten in unterschiedliche Blöcke reduzieren kann, kann dies auch zu Blöcken führen, die einige gültige (frische) Daten und einige ungültige (veraltete) Daten enthalten. Um dies zu bekämpfen, kann der Controller 20 eine automatische Speicherbereinigung implementieren. In einer automatischen Speicherbereinigungsoperation kann der Controller 20 den Inhalt der Blöcke der Speichereinheiten 12 analysieren, um einen Block zu ermitteln, der einen hohen Prozentsatz an ungültigen (veralteten) Daten beinhaltet. Der Controller 20 kann dann die gültigen Daten aus dem Block in einen anderen Block neu schreiben und danach den Block löschen. Dies kann eine ungültige (veraltete) Datenmenge reduzieren, die von den Speichereinheiten 12 gespeichert wird, und eine Anzahl von freien Blöcken erhöhen, kann aber auch die Schreibverstärkung und Abnutzung der Speichereinheiten 12 erhöhen.
  • In Übereinstimmung mit einem oder mehr Beispielen dieser Offenbarung kann das Speichergerät 2 (z. B. das Wartungsmodul 24) eine Integrität des Speichergeräts 2 unter Verwendung mindestens eines während der automatischen Speicherbereinigungsoperationen ermittelten Parameters überwachen. Das Wartungsmodul 24 kann zum Beispiel für jede automatische Speicherbereinigungsoperation einen Füllprozentsatz für jeden Block der Speichergeräte 12 ermitteln. Der Füllprozentsatz bezieht sich auf das Verhältnis der vom Block gespeicherten gültigen Datenmenge zur Gesamtkapazität des Blocks. Ein niedrigerer Füllprozentsatz zeigt an, dass der Block einen geringeren Prozentsatz an gültigen Daten speichert. Zum Beispiel zeigt ein Füllprozentsatz von 0% an, dass der Block keine gültigen Daten speichert, und ein Füllprozentsatz von 100% zeigt an, dass alle vom Block gespeicherten Daten gültig sind. Das Wartungsmodul 24 kann die Füllprozentsätze während der automatischen Speicherbereinigung verwenden, um zu ermitteln, welche Blöcke einige gültige Daten und einige ungültige Daten beinhalten, und kann die Daten innerhalb der Speichergeräte umverteilen, um Daten von teilweise gefüllten Blöcken zusammenzufassen, um leere Blöcke freizumachen. Der kleinste Füllprozentsatz wird hier als „C” bezeichnet.
  • 4 ist eine grafische Beispieldarstellung, die eine Verteilung von Blöcken als Funktion eines Füllprozentsatzes während des stationären Betriebs eines Speichergeräts illustriert. Wie in 4 gezeigt kann die Anzahl der Blöcke mit einem vorgegebenen Füllprozentsatz einem unimodalen Verteilungsprofil folgen, mit einem relativ längeren Ausläufer zu niedrigeren Füllprozentsätzen. Der ganz linke Punkt auf der Kurve, der 0 am nächsten ist, definiert den kleinsten Füllprozentsatz „C”. Während des stationären Betriebs kann der Wert von C von einer automatischen Speicherbereinigungsoperation zur nächsten relativ konstant bleiben. Dies kann vorhergesagt werden, indem angenommen wird, dass die Gesamtkapazität eines einzigen logischen Blocks N ist und dass der kleinste Füllprozentsatz, der aus dem vorangegangenen Sampling der Füllprozentsätze beobachtet wurde, C ist. Mit diesen Annahmen kann der ungünstigste Abfall einer Füllung eines Blocks als (N/(T – F))/N = 1/(T – F) ≈ 0 ausgedrückt werden, was anzeigt, dass erwartet werden kann, dass der Wert von C von einem Sampling zum nächsten wesentlich gleich bleibt. Der Wert von C kann sich jedoch mit der Zeit mit dem Abnehmen einer Anzahl von freien Blöcken des Speichergeräts 2 langsam erhöhen.
  • Wie oben beschrieben werden, während sich Blöcke abnutzen, Ersatzblöcke aus dem Pool der freien Blöcke herausgezogen, um die abgenutzten Blöcke zu ersetzen. Dies reduziert die Anzahl der freien Blöcke. Deshalb nimmt mit der Erhöhung der Anzahl von abgenutzten Blöcken die Anzahl der freien Blöcke proportional ab. 5 ist eine grafische Darstellung des Schreibverstärkungsfaktors als Verhältnis des Überversorgungsverhältnisses p für ein Beispielspeichergerät. Wie in 5 gezeigt erhöht sich der Schreibverstärkungsfaktor mit dem Abnehmen des Überversorgungsverhältnisses (das weniger verfügbare Blöcke insgesamt und weniger freie Blöcke anzeigt). Falls das Überversorgungsverhältnis (und die Anzahl der freien Blöcke) zu gering wird, können Abnutzungsausgleich und automatische Speicherbereinigung die Leistung des Speichergeräts 2 nicht aufrechterhalten und die Leistung kann sich nicht erholen. Deshalb ist ein Ermitteln, wann sich die Integrität des Speichergeräts 2 verschlechtert, bevor sich die Integrität so weit verschlechtert, dass sie nicht wiederherstellbar ist, für einen fortgesetzten Betrieb des Speichergeräts 2 wichtig. Die Beziehung des Schreibverstärkungsfaktors im ungünstigsten Fall W verglichen mit dem Überversorgungsverhältnis kann als W = (1 + p)/(2·p) angenähert werden.
  • 6 ist eine grafische Darstellung des schlechtesten Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät. Wie in 6 gezeigt erhöht sich der schlechteste Beginn der automatischen Speicherbereinigung mit dem Abnehmen des Überversorgungsverhältnisses und korreliert im Allgemeinen mit dem Schreibverstärkungsfaktor (in 5 gezeigt). Der in 6 gezeigte schlechteste Beginn der automatischen Speicherbereinigung korreliert mit dem kleinsten Füllprozentsatz C. Der Wert C ist zum Beispiel gleich dem Wert des schlechtesten Beginns der automatischen Speicherbereinigung dividiert durch die Gesamtanzahl von Blöcken. Im Beispiel von 6 war die Gesamtanzahl von Blöcken 16.384 und deshalb ist der Wert C der in 6 gezeigte y-Achsen-Wert dividiert durch 16.384.
  • Das Wartungsmodul 24 kann den kleinsten Füllprozentsatz C benutzen, um die Integrität des Speichergeräts 2 (z. B. der Speichereinheiten 12) abzuschätzen. Das Wartungsmodul 24 kann den kleinsten Füllprozentsatz C mit einem Schwellenwert vergleichen, um zu ermitteln, ob sich die Integrität des Speichergeräts 2 (z. B. der Speichereinheiten 12) verschlechtert. Falls zum Beispiel der kleinste Füllprozentsatz C größer als der Schwellenwert ist, kann das Wartungsmodul 24 ermitteln, dass sich die Integrität des Speichergeräts 2 (z. B. der Speichereinheiten 12) verschlechtert.
  • Der Schwellenwert kann vorbestimmt sein und kann auf der Basis einer Ermittlung oder Abschätzung, wann sich die Integrität des Speichergeräts 2 so weit verschlechtert, dass eine vorbestimmte Maßnahme getroffen werden sollte, bevor die Verschlechterung so schlimm wird, dass die Leistung des Speichergeräts nicht wiederherstellbar ist, ausgewählt werden. Der Schwellenwert TV kann zum Beispiel als TV = (W – 1)/W gesetzt werden, wobei W der Schreibverstärkungsfaktor im ungünstigsten Fall ist. Als Reaktion auf ein Ermitteln, dass C TV übersteigt, kann das Wartungsmodul 24 mindestens eine vorbestimmte Funktion durchführen, wie ein Modifizieren eines Betriebsparameters des Controllers 20 oder ein Ausgeben einer Nachricht oder einer Angabe an das Hostgerät 15.
  • Das Wartungsmodul 24 kann zum Beispiel einen Betriebsparameter des Controllers 20 modifizieren, wie etwa ein Aussetzen aller weiteren Schreibvorgänge in das Speichergerät 2. Das Wartungsmodul 24 kann auch eine Angabe an das Hostgerät 15 ausgeben, dass das Speichergerät 2 ein schreibgeschütztes Speichergerät ist, sodass das Hostgerät 15 nicht mehr Schreibbefehle an das Speichergerät 2 ausgibt. Durch ein Umwandeln in ein schreibgeschütztes Gerät kann ein Verlust der auf dem Speichergerät 2 gespeicherten Daten vermieden werden. Als ein weiteres Beispiel kann der Controller 20 die Schreibgeschwindigkeiten zu den Speichereinheiten 12 des Speichergeräts 2 drosseln (verlangsamen), was dem Controller 20 mehr Zeit gibt, eine automatische Speicherbereinigung durchzuführen.
  • In manchen Beispielen kann die vorbestimmte Operation ein Ausgeben eines Anzeichens der Integrität des Speichergeräts 2 an das Hostgerät 12 durch das Wartungsmodul 24 umfassen. Das Hostgerät 15 kann dann optional eine oder mehrere vorbestimmte Maßnahmen als Reaktion auf ein Erhalten des Anzeichens durchführen. Das Hostgerät 15 kann zum Beispiel konfiguriert werden, Schreibanweisungen an das Speichergerät 2 zu drosseln (reduzieren), um dem Controller 20 des Speichergeräts 2 mehr Zeit zu geben, automatische Speicherbereinigungsoperationen durchzuführen. Als ein weiteres Beispiel kann das Hostgerät 15 konfiguriert sein, eine Identifikation des Speichergeräts 2 schreibgeschützt zu ändern, dass es zu, sodass das Hostgerät 15 nicht länger Schreibanweisungen an das Speichergerät 2 sendet. Als ein zusätzliches Beispiel kann Hostgerät 15 konfiguriert sein, eine dem Hostgerät 15 zugängliche Kapazität des Speichergeräts 2 zu ändern, wobei effektiv die Anzahl von für den Controller 20 verfügbaren freien Blöcken des Speichergeräts 2 erhöht wird, um damit Abnutzungsausgleich und automatische Speicherbereinigung durchzuführen.
  • In manchen Beispielen kann das Wartungsmodul 24 eine Vielzahl von kleinsten Füllprozentsatzwerten benutzen, einen für jeden aus einer Vielzahl von automatischen Speicherbereinigungsoperationen, um einen mittleren kleinsten Füllprozentsatzwert zu ermitteln. 7 ist ein Flussdiagramm, das eine Beispielmethode zum Abschätzen einer Integrität eines Speichergeräts auf der Basis eines kleinsten Füllprozentsatzwerts illustriert. Die Methode von 7 wird mit gleichzeitigem Bezug auf das Speichergerät 2 und den Controller 20 von 1 und 3 zur leichteren Beschreibung beschrieben. In anderen Beispielen kann jedoch ein unterschiedliches Speichergerät oder ein unterschiedlicher Controller die Methode von 7 implementieren, das Speichergerät 2 und der Controller 20 von 1 und 2 können eine unterschiedliche Methode zum Abschätzen einer Integrität des Speichergeräts 2 implementieren oder beides.
  • Die Methode von 7 kann Ermitteln des kleinsten Füllprozentsatzes C über alle Blöcke hinweg (42) durch das Wartungsmodul 24 umfassen. Wie oben beschrieben kann das Wartungsmodul 24 einen jeweiligen Füllprozentsatz für jeden Block der Speichereinheiten 12 als Teil einer automatischen Speicherbereinigungsoperation ermitteln.
  • Die Methode von 7 umfasst auch Ermitteln eines mittleren kleinsten Füllprozentsatzwerts, eines mittleren C, für eine Vielzahl von automatischen Speicherbereinigungsoperationen (44) durch das Wartungsmodul 24. Das Wartungsmodul 24 kann einen Wert C für jede automatische Speicherbereinigungsoperation ermitteln. Das Wartungsmodul 24 kann verursachen, dass der C-Wert gespeichert wird, z. B. in einem C-Wertepuffer oder einer anderen Datenstruktur. In manchen Beispielen kann der C-Wertepuffer oder die andere Datenstruktur N Einträge enthalten, einen C-Wert für jede der letzten N automatischen Speicherbereinigungsoperationen (einschließlich der aktuellen automatischen Speicherbereinigungsoperation). Wenn das Wartungsmodul 24 eine automatische Speicherbereinigungsoperation durchführt und einen C-Wert für die automatische Speicherbereinigungsoperation ermittelt, kann der neueste Wert C in Eintrag 0 des C-Wertepuffers oder der anderen Datenstruktur platziert werden, und jeder vorher im C-Wertepuffer oder in der anderen Datenstruktur gespeicherte Wert kann um einen Wert nach oben erhöht werden (z. B. ein vorangegangener Eintrag 0 wird zu Eintrag 1, ein vorangegangener Eintrag N – m wird zu Eintrag N – m + 1). Eintrag N – 1, der letzte Eintrag im C-Wertepuffer oder in der anderen Datenstruktur, wird verworfen. Auf diese Weise speichert der C-Wertepuffer oder die andere Datenstruktur die C-Werte für die letzten N automatischen Speicherbereinigungsoperationen.
  • N, die Größe des C-Wertepuffers oder der anderen Datenstruktur, kann so ausgewählt werden, dass ein Mitteln der N C-Werte die C-Werte glättet, was das Störsignal im C-Wertesignal reduziert. Zusätzlich kann N so ausgewählt werden, dass der mittlere C-Wert nur relativ neue C-Werte miteinbezieht. In manchen Beispielen kann N 1024 sein. Das Wartungsmodul 24 ermittelt den mittleren kleinsten Füllprozentsatzwert (den mittleren C-Wert) (44) unter Verwendung der N C-Werte, die im C-Wertepuffer oder in der anderen Datenstruktur gespeichert sind. Auf diese Weise kann der mittlere C-Wert ein gleitender Mittelwert der C-Werte für die letzten N automatischen Speicherbereinigungsoperationen sein.
  • 8 ist eine grafische Darstellung des mittleren Beginns der automatischen Speicherbereinigung als Funktion eines Überversorgungsverhältnisses für ein Beispielspeichergerät. Wie in 8 gezeigt, erhöht sich der mittlere Beginn der automatischen Speicherbereinigung mit Abnehmen des Überversorgungsverhältnisses und korreliert im Allgemeinen mit dem Schreibverstärkungsfaktor (in 5 gezeigt). Der in 8 gezeigte mittlere Beginn der automatischen Speicherbereinigung korreliert mit dem mittleren kleinsten Füllprozentsatz, dem mittleren C. Der mittlere C-Wert ist zum Beispiel gleich dem Wert des schlechtesten Beginns der automatischen Speicherbereinigung dividiert durch die GesamtAnzahl von Blöcken. Im Beispiel von 8 war die GesamtAnzahl von Blöcken 16.384, deshalb ist der mittlere C-Wert der in 8 gezeigte y-Achsen-Wert dividiert durch 16.384.
  • Das Wartungsmodul 24 vergleicht dann den mittleren C-Wert mit einem vorbestimmten Schwellenwert (46). Der Schwellenwert kann vorbestimmt sein und kann auf der Basis einer Ermittlung oder Abschätzung, warm sich die Integrität des Speichergeräts 2 verschlechtert, ausgewählt werden, sodass eine vorbestimmte Maßnahme getroffen werden sollte, bevor die Verschlechterung so schlimm wird, dass die Leistung des Speichergeräts nicht wiederherstellbar ist. Der Schwellenwert, TV, kann zum Beispiel als TV = (W – 1)/W gesetzt sein.
  • Als Reaktion auf Ermitteln, dass der mittlere C-Wert TV überschreitet (der „JA”-Zweig des Entscheidungsblocks 48), kann das Wartungsmodul 24 mindestens eine vorbestimmte Funktion durchführen (50). Die vorbestimmte Funktion kann mit der Integrität des Speichergeräts 2 (z. B. den Speichereinheiten 12) verknüpft sein, da ein Überschreiten von TV durch den mittleren C-Wert anzeigt, dass sich die Integrität der Speichereinheiten 12 verschlechtert. Das Wartungsmodul 24 kann zum Beispiel eine Nachricht ausgeben, die verursacht, dass der Controller 20 einen Betriebsparameter modifiziert oder eine Nachricht oder eine Anweisung ausgibt, die an das Hostgerät 15 kommuniziert wird. Der Controller 20 kann zum Beispiel einen Betriebsparameter modifizieren, indem er eine Antwort auf eine vom Hostgerät 15 erhaltene Schreibanforderung verlangsamt, um dem Speichergerät 2 (z. B. dem Controller 20) zu erlauben, Schreib- und automatische Speicherbereinigungsoperationen angesichts des aktuellen (niedrigeren) Überversorgungsverhältnisses aufrechtzuerhalten, oder indem er das Speichergerät 2 in ein schreibgeschütztes Gerät umwandelt, um Datenverlust zu verhindern. Als ein weiteres Beispiel kann das Hostgerät 15 seinen Betrieb durch Reduzieren eines Schreibdurchsatzes (z. B. Schreibanweisungen) an das Speichergerät 2 modifizieren.
  • Jedoch als Reaktion auf ein Ermitteln, dass der mittlere C-Wert TV nicht überschreitet (der „NEIN”-Zweig des Entscheidungsblocks 48), kann das Wartungsmodul 24 die Methode von 7 nochmals beginnen und kann einen C-Wert bei Durchführung der nächsten automatischen Speicherbereinigungsoperation ermitteln (42). Das Wartungsmodul 24 kann diesen neuen C-Wert zum C-Wertepuffer oder zur anderen Datenstruktur hinzufügen und den ältesten C-Wert aus dem C-Wertepuffer oder der anderen Datenstruktur verwerfen. Das Wartungsmodul 24 kann den mittleren C-Wert (44) unter Verwendung der N C-Werte ermitteln, die im C-Wertepuffer oder der anderen Datenstruktur gespeichert sind, und den mittleren C-Wert mit dem TV vergleichen (46).
  • In manchen Beispielen kann das Wartungsmodul 24 diese Methode jedes Mal Wiederholen, wenn eine automatische Speicherbereinigungsoperation durchgeführt wird, bis der mittlere C-Wert den TV überschreitet, zu welchem Zeitpunkt das Wartungsmodul 24 die vorbestimmte, mit der Integrität des Speichergeräts 2 (z. B. Speichereinheiten 12) verknüpfte Maßnahme durchführt (50). In anderen Beispielen kann das Wartungsmodul 24 diese Methode periodisch wiederholen, z. B. nach einer vorbestimmten Anzahl von automatischen Speicherbereinigungsoperationen, anstatt nach jeder automatischen Speicherbereinigungsoperation.
  • Auf diese Weise kann der Controller des Speichergeräts die Integrität des Speichergeräts während der Laufzeit durch Verwendung eines einzelnen C-Werts oder eines mittleren C-Werts über eine Vielzahl von automatischen Speicherbereinigungsoperationen überwachen. Dieser einzelne C-Wert oder mittlere C-Wert wird dann mit einem Schwellenwert (TV) verglichen, um eine Ermittlung der Integrität des Speichergeräts 2 (z. B. Speichereinheiten 12) zu treffen. Deshalb kann die Speichergeräteintegritätsüberwachungsmethode relativ leichtgewichtig und mit geringem Overhead sein. Zusätzlich setzen die hier beschriebenen Speichergeräteintegritätsüberwachungsmethoden einen während der automatischen Speicherbereinigung verfolgten Parameter ein. Die hier beschriebenen Methoden können keine Ermittlung eines Schreibverstärkungsfaktors auf der Basis tatsächlicher Schreibstatistiken erfordern, können eine frühere Erfassung oder Vorhersage einer Verschlechterung der Speichergeräteintegrität erlauben und/oder vom Speichergerät-Controller anstatt vom Hostgerät implementiert werden.
  • Die in dieser Offenbarung beschriebenen Methoden können zumindest teilweise in Hardware, Software, Firmware oder einer beliebigen Kombination dieser implementiert werden. Verschiedene Aspekte der hier beschriebenen Methoden können zum Beispiel in einem oder mehreren Prozessoren implementiert werden, einschließlich eines oder mehrerer Mikroprozessoren, digitalen Signalprozessoren (DSPs), anwendungsspezifischer integrierter Schaltungen (ASIC), Field Programmable Gate Arrays (FPGA) oder eines anderen gleichwertigen integrierten oder diskreten Logikschaltkreises sowie beliebigen 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 Methoden dieser Offenbarung durchführen.
  • Diese Hardware, Software oder Firmware kann innerhalb des gleichen Geräts oder innerhalb separater Geräte implementiert werden, um die verschiedenen, in dieser Offenbarung beschriebenen Methoden zu unterstützen. Zusätzlich können beliebige der beschriebenen Einheiten, Module oder Komponenten zusammen oder separat als diskrete, jedoch interoperable Logikgeräte implementiert werden. Die Darstellung unterschiedlicher Merkmale als Module oder Einheiten soll unterschiedliche funktionale Aspekte hervorheben und deutet nicht unbedingt an, dass solche Module oder Einheiten von separaten Hardware-, Firmware- oder Softwarekomponenten realisiert werden müssen. Vielmehr kann die zu einem oder mehr Modulen oder 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 Methoden können auch in einem Fabrikat einschließlich eines computerlesbaren Speichermediums, das mit Anweisungen codiert ist, ausgeformt oder codiert sein. In einem Fabrikat eingebettete oder codierte Anweisungen, einschließlich der in einem computerlesbaren Speichermedium codierten, können verursachen, dass ein oder mehrere programmierbare Prozessoren oder andere Prozessoren eine oder mehrere der hier beschriebenen Methoden implementieren, wie wenn Anweisungen, die im computerlesbaren Speichermedium enthaltenen oder codiert sind, von dem einen Prozessor oder den mehreren Prozessoren ausgeführt werden. Computerlesbare Speichermedien können Random-Access Memory (RAM), Read-Only Memory (ROM), Programmable Read-Only Memory (PROM), Erasable Programmable Read-Only Memory (EPROM), Electronically Erasable Programmable Read-Only Memories (EEPROM), Flash-Speicher, 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 ausgeformt 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 fallen in den Schutzbereich der folgenden Ansprüche.

Claims (20)

  1. Speichergerät, das Folgendes umfasst: eine Vielzahl von Speichereinheiten, die logisch in eine Vielzahl von Blöcken aufgeteilt ist; und einen Controller, der konfiguriert ist: einen jeweiligen Füllprozentsatz für jeden jeweiligen Block der Vielzahl von Blöcken zu ermitteln; den kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, eine mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.
  2. Speichergerät nach Anspruch 1, wobei der Controller konfiguriert ist, die mit der Integrität des Speichergeräts verknüpfte Maßnahme durch zumindest Modifizieren eines Betriebsparameters des Controllers durchzuführen.
  3. Speichergerät nach Anspruch 2, wobei der Controller konfiguriert ist, den Betriebsparameter des Controllers durch zumindest Setzen des Speichergeräts in einen schreibgeschützten Zustand zu modifizieren.
  4. Speichergerät nach Anspruch 1, wobei der Controller konfiguriert ist, die mit der Integrität des Speichergeräts verknüpfte Maßnahme zumindest durch Ausgeben eines Anzeichens an ein Hostgerät durchzuführen, das verursacht, dass das Hostgerät mindestens einen Betriebsparameter modifiziert.
  5. Speichergerät nach Anspruch 1, wobei der Controller konfiguriert ist, für jede jeweilige automatische Speicherbereinigungsoperation von einer Vielzahl von automatischen Speicherbereinigungsoperationen: einen jeweiligen Füllprozentsatz für jeden Block der Vielzahl von Blöcken des Speichergeräts zu ermitteln; den jeweils kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln, die zur jeweiligen automatischen Speicherbereinigungsoperation gehören; einen mittleren kleinsten Füllprozentsatz auf der Basis der jeweiligen kleinsten Füllprozentsätze zu ermitteln; und den mittleren kleinsten Füllprozentsatz mit dem vorbestimmten Schwellenwert zu vergleichen.
  6. Speichergerät nach Anspruch 1, wobei der Controller ferner konfiguriert ist: einen mittleren kleinsten Füllprozentsatz auf der Basis des kleinsten Füllprozentsatzes und der jeweiligen kleinsten Füllprozentsätze für jede von einer Vielzahl von vorher durchgeführten automatischen Speicherbereinigungsoperationen zu ermitteln, und als Reaktion auf Ermitteln, dass der mittlere kleinste Füllprozentsatz den vorbestimmten Schwellenwert überschreitet, die mit der Integrität des Speichergeräts verknüpfte Aktion durchzuführen.
  7. Speichergerät nach Anspruch 1, wobei der Schwellenwert gleich (W – 1)/W ist, wobei W = (1 + p)/2·p, wobei p = (T – D)/D und wobei T die GesamtAnzahl von Blöcken des Speichergeräts ist und D die Anzahl von einem Hostgerät zugänglichen Blöcken des Speichergeräts zum Schreiben von Daten in das Speichergerät ist.
  8. Speichergerät nach Anspruch 1, wobei das Speichergerät ein Solid-State-Drive (SSD) umfasst.
  9. Verfahren, Folgendes umfassend: Ermitteln eines jeweiligen Füllprozentsatzes für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts durch einen Controller eines Speichergeräts; Ermitteln des kleinsten Füllprozentsatzes für die Vielzahl der jeweiligen Füllprozentsätze durch den Controller; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, Durchführen einer mit der Integrität des Speichergeräts verknüpften Maßnahme durch den Controller.
  10. Verfahren nach Anspruch 9, wobei Durchführen der mit der Integrität des Speichergeräts verknüpften Maßnahme Modifizieren eines Betriebsparameters des Controllers umfasst.
  11. Verfahren nach Anspruch 10, wobei Modifizieren des Betriebsparameters des Controllers Setzen des Speichergeräts in einen schreibgeschützten Zustand umfasst.
  12. Verfahren nach Anspruch 9, wobei Durchführen der mit der Integrität des Speichergeräts verknüpften Maßnahme Ausgeben eines Anzeichens an ein Hostgerät umfasst, das verursacht, dass das Hostgerät mindestens einen Betriebsparameter modifiziert.
  13. Verfahren nach Anspruch 9, das ferner für jede jeweilige automatische Speicherbereinigungsoperation von einer Vielzahl von automatischen Speicherbereinigungsoperationen Folgendes umfasst: Ermitteln eines jeweiligen Füllprozentsatzes für jeden Block der Vielzahl von Blöcken des Speichergeräts durch den Controller; Ermitteln des jeweils kleinsten Füllprozentsatzes für die Vielzahl der jeweiligen Füllprozentsätze, die zur jeweiligen automatischen Speicherbereinigungsoperation gehören, durch den Controller; Ermitteln eines mittleren kleinsten Füllprozentsatzes auf der Basis der jeweiligen kleinsten Füllprozentsätze durch den Controller; und Vergleichen des mittleren kleinsten Füllprozentsatzes mit dem vorbestimmten Schwellenwert durch den Controller.
  14. Verfahren nach Anspruch 9, ferner umfassend: Ermitteln eines mittleren kleinsten Füllprozentsatzes auf der Basis des kleinsten Füllprozentsatzes und der jeweiligen kleinsten Füllprozentsätze für jede von einer Vielzahl von vorher durchgeführten automatischen Speicherbereinigungsoperationen durch den Controller, und wobei als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz den vorbestimmten Schwellenwert überschreitet, Durchführen der mit der Integrität des Speichergeräts verknüpften Maßnahme Durchführen der mit der Integrität des Speichergeräts verknüpften Maßnahme, als Reaktion auf Ermitteln, dass der mittlere kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, umfasst.
  15. Verfahren nach Anspruch 9, wobei der Schwellenwert gleich (W – 1)/W ist, wobei W = (1 + p)/2·p, wobei p = (T – D)/D und wobei T die GesamtAnzahl von Blöcken des Speichergeräts ist und D die Anzahl von einem Hostgerät zugänglichen Blöcken des Speichergeräts zum Schreiben von Daten in das Speichergerät ist.
  16. Computerlesbares Speichermedium, umfassend Anweisungen, die, wenn sie ausgeführt werden, einen oder mehr Prozessoren eines Speichergeräts konfigurieren: einen jeweiligen Füllprozentsatz für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts zu ermitteln; den kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln; und als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, eine mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.
  17. Computerlesbares Speichermedium nach Anspruch 16, ferner umfassend Anweisungen, die, wenn sie ausgeführt werden, einen oder mehr Prozessoren des Speichergeräts konfigurieren: einen mittleren kleinsten Füllprozentsatz auf der Basis des kleinsten Füllprozentsatzes und der jeweiligen kleinsten Füllprozentsätze für jede von einer Vielzahl von vorher durchgeführten automatischen Speicherbereinigungsoperationen zu ermitteln, und wobei die Anweisungen, die, wenn sie ausgeführt werden, den einen Prozessor oder die mehreren Prozessoren des Speichergeräts konfigurieren, als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz den vorbestimmten Schwellenwert überschreitet, die mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen, Anweisungen umfassen, die, wenn sie ausgeführt werden, den einen Prozessor oder die mehreren Prozessoren des Speichergeräts konfigurieren, als Reaktion auf Ermitteln, dass der mittlere kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet, die mit der Integrität des Speichergeräts verknüpfte Maßnahme durchzuführen.
  18. Computerlesbares Speichermedium nach Anspruch 16, ferner umfassend Anweisungen, die, wenn sie ausgeführt werden, einen oder mehrere Prozessoren des Speichergeräts konfigurieren: einen jeweiligen Füllprozentsatz für jeden Block der Vielzahl von Blöcken des Speichergeräts zu ermitteln; den jeweils kleinsten Füllprozentsatz für die Vielzahl der jeweiligen Füllprozentsätze zu ermitteln, die zur jeweiligen automatischen Speicherbereinigungsoperation gehören; einen mittleren kleinsten Füllprozentsatz auf der Basis der jeweiligen kleinsten Füllprozentsätze zu ermitteln; und den mittleren kleinsten Füllprozentsatz mit dem vorbestimmten Schwellenwert zu vergleichen.
  19. System, Folgendes umfassend: Mittel zum Ermitteln eines jeweiligen Füllprozentsatzes für jeden jeweiligen Block einer Vielzahl von Blöcken des Speichergeräts; Mittel zum Ermitteln des kleinsten Füllprozentsatzes für die Vielzahl der jeweiligen Füllprozentsätze; und Mittel zum Durchführen einer mit der Integrität des Speichergeräts verknüpften Maßnahme, als Reaktion auf Ermitteln, dass der kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet.
  20. System nach Anspruch 19, ferner Folgendes umfassend: Mittel zum Ermitteln eines mittleren kleinsten Füllprozentsatzes auf der Basis des kleinsten Füllprozentsatzes und der jeweiligen kleinsten Füllprozentsätze für jede von einer Vielzahl von vorher durchgeführten automatischen Speicherbereinigungsoperationen, wobei das Mittel zum Durchführen ein Mittel zum Durchführen der mit der Integrität des Speichergeräts verknüpften Maßnahme umfasst, als Reaktion auf Ermitteln, dass, der mittlere kleinste Füllprozentsatz einen vorbestimmten Schwellenwert überschreitet.
DE102015012567.2A 2014-09-26 2015-09-25 Integritätsdiagnose für speichergeräte Pending DE102015012567A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/498,331 US10235056B2 (en) 2014-09-26 2014-09-26 Storage device health diagnosis
US14/498,331 2014-09-26

Publications (1)

Publication Number Publication Date
DE102015012567A1 true DE102015012567A1 (de) 2016-03-31

Family

ID=54544665

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015012567.2A Pending DE102015012567A1 (de) 2014-09-26 2015-09-25 Integritätsdiagnose für speichergeräte

Country Status (5)

Country Link
US (1) US10235056B2 (de)
CN (1) CN105469829B (de)
DE (1) DE102015012567A1 (de)
FR (1) FR3026513B1 (de)
GB (1) GB2531651B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015189957A1 (ja) * 2014-06-12 2015-12-17 株式会社日立製作所 性能情報管理システム、管理計算機、および性能情報管理方法
US10599352B2 (en) * 2015-08-14 2020-03-24 Samsung Electronics Co., Ltd. Online flash resource allocation manager based on a TCO model
US10235198B2 (en) * 2016-02-24 2019-03-19 Samsung Electronics Co., Ltd. VM-aware FTL design for SR-IOV NVME SSD
KR20180093152A (ko) * 2017-02-09 2018-08-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10564886B2 (en) * 2018-02-20 2020-02-18 Western Digital Technologies, Inc. Methods and apparatus for controlling flash translation layer recycle from host
US10969994B2 (en) 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
US11074007B2 (en) * 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
KR102554418B1 (ko) 2018-10-01 2023-07-11 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 스토리지 장치
US11450348B2 (en) * 2019-01-31 2022-09-20 Marvell Asia Pte, Ltd. Health management for magnetic storage media
US11113007B2 (en) * 2019-05-13 2021-09-07 Micron Technology, Inc. Partial execution of a write command from a host system
CN110716699A (zh) * 2019-10-17 2020-01-21 北京百度网讯科技有限公司 用于写入数据的方法和装置
US11042432B1 (en) 2019-12-20 2021-06-22 Western Digital Technologies, Inc. Data storage device with dynamic stripe length manager
US11543987B2 (en) * 2020-06-04 2023-01-03 Western Digital Technologies, Inc. Storage system and method for retention-based zone determination
CN114816223A (zh) * 2021-01-27 2022-07-29 建兴储存科技股份有限公司 运用于固态存储装置的相关控制方法
US11494299B2 (en) 2021-02-18 2022-11-08 Silicon Motion, Inc. Garbage collection operation management with early garbage collection starting point
US20220300184A1 (en) * 2021-03-19 2022-09-22 Silicon Motion, Inc. Method of performing wear-leveling operation in flash memory and related controller and storage system
CN114090480B (zh) * 2022-01-17 2022-04-22 英韧科技(南京)有限公司 主控内嵌式指令和数据记录装置

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US30409A (en) * 1860-10-16 Chueh
US55455A (en) * 1866-06-12 Improvement in fastenings for fruit-boxes
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US6732203B2 (en) * 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US7136986B2 (en) * 2002-11-29 2006-11-14 Ramos Technology Co., Ltd. Apparatus and method for controlling flash memories
US7434011B2 (en) * 2005-08-16 2008-10-07 International Business Machines Corporation Apparatus, system, and method for modifying data storage configuration
US7752391B2 (en) * 2006-01-20 2010-07-06 Apple Inc. Variable caching policy system and method
US7512847B2 (en) 2006-02-10 2009-03-31 Sandisk Il Ltd. Method for estimating and reporting the life expectancy of flash-disk memory
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US8032724B1 (en) * 2007-04-04 2011-10-04 Marvell International Ltd. Demand-driven opportunistic garbage collection in memory components
US8200904B2 (en) 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
US8239611B2 (en) * 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US8078918B2 (en) 2008-02-07 2011-12-13 Siliconsystems, Inc. Solid state storage subsystem that maintains and provides access to data reflective of a failure risk
US8341331B2 (en) * 2008-04-10 2012-12-25 Sandisk Il Ltd. Method, apparatus and computer readable medium for storing data on a flash device using multiple writing modes
US8140739B2 (en) * 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
WO2010054410A2 (en) 2008-11-10 2010-05-14 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for predicting failures in solid-state storage
CA2745646C (en) 2009-04-21 2017-09-19 International Business Machines Corporation Apparatus and method for controlling a solid state disk (ssd) device
US8176367B2 (en) * 2009-05-28 2012-05-08 Agere Systems Inc. Systems and methods for managing end of life in a solid state drive
US8402242B2 (en) * 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
US8489966B2 (en) 2010-01-08 2013-07-16 Ocz Technology Group Inc. Solid-state mass storage device and method for failure anticipation
US8463826B2 (en) * 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8719455B2 (en) * 2010-06-28 2014-05-06 International Business Machines Corporation DMA-based acceleration of command push buffer between host and target devices
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
US8949506B2 (en) * 2010-07-30 2015-02-03 Apple Inc. Initiating wear leveling for a non-volatile memory
US8452911B2 (en) * 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8422303B2 (en) 2010-12-22 2013-04-16 HGST Netherlands B.V. Early degradation detection in flash memory using test cells
WO2012161659A1 (en) * 2011-05-24 2012-11-29 Agency For Science, Technology And Research A memory storage device, and a related zone-based block management and mapping method
EP2549482B1 (de) * 2011-07-22 2018-05-23 SanDisk Technologies LLC Vorrichtung, System und Verfahren zur Bestimmung einer Parameterkonfiguration für Solid-State Speichervorrichtungen.
KR101907059B1 (ko) * 2011-12-21 2018-10-12 삼성전자 주식회사 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
US20140018136A1 (en) * 2012-07-16 2014-01-16 Yahoo! Inc. Providing a real-world reward based on performance of action(s) indicated by virtual card(s) in an online card game
US8862810B2 (en) * 2012-09-27 2014-10-14 Arkologic Limited Solid state device write operation management system
US9141532B2 (en) * 2012-12-26 2015-09-22 Western Digital Technologies, Inc. Dynamic overprovisioning for data storage systems
KR101854020B1 (ko) 2012-12-31 2018-05-02 샌디스크 테크놀로지스 엘엘씨 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템
CN103559115A (zh) 2013-09-29 2014-02-05 记忆科技(深圳)有限公司 基于smart的ssd智能监控系统
WO2015066719A2 (en) * 2013-11-04 2015-05-07 Falconstor, Inc. Use of solid state storage devices and the like in data deduplication
KR102157672B1 (ko) * 2013-11-15 2020-09-21 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법

Also Published As

Publication number Publication date
FR3026513B1 (fr) 2018-05-18
FR3026513A1 (de) 2016-04-01
US10235056B2 (en) 2019-03-19
US20160092120A1 (en) 2016-03-31
GB201516823D0 (en) 2015-11-04
GB2531651B (en) 2017-04-26
CN105469829B (zh) 2020-02-11
GB2531651A (en) 2016-04-27
CN105469829A (zh) 2016-04-06

Similar Documents

Publication Publication Date Title
DE102015012567A1 (de) Integritätsdiagnose für speichergeräte
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102020103817B4 (de) Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE112019006907B3 (de) Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE102019124450A1 (de) Bandbreitenbegrenzung in solid-state-laufwerken
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102016009806A1 (de) Speichern von paritätsdaten getrennt von geschützten daten
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112011100564B4 (de) Einfügen eines Flash-Zwischenspeichers in große Speichersysteme
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102016101311A1 (de) Datenspeicherverfahren, Datenspeichervorrichtung und Solid State Disk
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R081 Change of applicant/patentee

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

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE