DE112021000637T5 - Kontinuierlicher monotoner zähler für speichervorrichtungen - Google Patents

Kontinuierlicher monotoner zähler für speichervorrichtungen Download PDF

Info

Publication number
DE112021000637T5
DE112021000637T5 DE112021000637.1T DE112021000637T DE112021000637T5 DE 112021000637 T5 DE112021000637 T5 DE 112021000637T5 DE 112021000637 T DE112021000637 T DE 112021000637T DE 112021000637 T5 DE112021000637 T5 DE 112021000637T5
Authority
DE
Germany
Prior art keywords
counter
value
count
local
counters
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
DE112021000637.1T
Other languages
English (en)
Inventor
Yoav Yogev
Amichai GIVANT
Yair Sofer
Amir Rochmann
Shivananda Shetty
Pawan Singh
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.)
Infineon Technologies LLC
Original Assignee
Infineon Technologies LLC
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 Infineon Technologies LLC filed Critical Infineon Technologies LLC
Publication of DE112021000637T5 publication Critical patent/DE112021000637T5/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

Systeme, Verfahren und Vorrichtungen umfassen Zähler, die zum Implementieren von Zählungsoperationen ausgelegt sind. Systeme umfassen nichtflüchtige Speichervorrichtungen, die einen ersten Zähler, ausgelegt zum Speichern erster mehrerer Datenwerte, die mehrere Zählungsoperation repräsentieren, und einen zweiten Zähler, ausgelegt zum Speichern zweiter mehrerer Datenwerte, die eine Anzahl von auf den ersten Zähler angewendeten Löschoperationen repräsentieren, umfassen. Systeme umfassen ferner eine Steuerschaltungsanordnung, ausgelegt zum Implementieren von Lese-, Schreib- und Löschoperation für den ersten Zähler und den zweiten Zähler, Bestimmen eines Teilzählwerts zumindest teilweise basierend auf einem aktuellen Wert des zweiten Zählers und mindestens einem physischen Parameter des ersten Zählers, und Erzeugen eines Zählwerts durch Addieren des Teilzählwerts mit einem aktuellen Wert des ersten Zählers. Solche Zähler und eine solche Schaltungsanordnung sind gegen Datenverlust aufgrund von Stromverlustereignissen geschützt.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung ist eine internationale Anmeldung der am 19. Juni 2020 eingereichten nicht vorläufigen US-Anmeldung Nr. 16/906,892 , die nach 35 U.S.C § 119(e) die Priorität der am 22.1.2020 eingereichten vorläufigen US-Patentanmeldung Nr. 62/964,384 beansprucht, die hier durch Bezugnahme vollumfänglich für alle Zwecke aufgenommen ist.
  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft allgemein Speichervorrichtungen und insbesondere die Implementierung von Zählern in Verbindung mit Speichervorrichtungen.
  • HINTERGRUND
  • Speichervorrichtungen können verschiedene Speicherzellen umfassen, die dazu ausgelegt sind, Datenwerte basierend auf Programmierung, empfangen über verschiedene Wortleitungen und Bitleitungen, zu speichern. Speicherzellen und auf solche Speicherzellen abgebildete Speicherorte können unter Verwendung von Speicheradressen referenziert werden, bei denen es sich um zum Identifizieren solcher Speicherorte verwendete numerische Zeichenketten handelt. Speichervorrichtungen können dazu verwendet werden, Zahlen, beispielsweise durch Zähler für verschiedene Verarbeitungsoperationen erzeugte Zählwerte, zu speichern. Mit Implementierung von Zählern mit höherer Kapazität nimmt die Größe des zum Speichern von Zählwerten verwendeten Speichers zu. Daher kann die zum Speichern der Zählwerte und assoziierter Daten erforderliche Speichermenge groß sein und eine relativ große Menge an Systemressourcen nutzen. Dementsprechend bleibt die Fähigkeit herkömmlicher Speichervorrichtungen, Speicherzählwerte effizient und auf eine Weise zu verfolgen, die die Verwendung solcher Systemressourcen reduziert und außerdem gegen Stromverlustereignisse geschützt ist, begrenzt.
  • Figurenliste
    • 1 veranschaulicht ein Beispiel einer Speichervorrichtung, konfiguriert gemäß einigen Ausführungsformen.
    • 2A veranschaulicht ein Beispiel für monotone Zähler, konfiguriert gemäß einigen Ausführungsformen.
    • 2B veranschaulicht ein weiteres Beispiel für monotone Zähler, konfiguriert gemäß einigen Ausführungsformen.
    • 3 veranschaulicht ein Flussdiagramm eines Beispiels eines Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 4 veranschaulicht ein Flussdiagramm eines Beispiels eines Schreiboperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 5 veranschaulicht ein weiteres Beispiel für monotone Zähler, konfiguriert gemäß einigen Ausführungsformen.
    • 6 veranschaulicht ein Beispiel eines weiteren Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 7 veranschaulicht ein Beispiel noch eines weiteren Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 8 veranschaulicht ein Beispiel eines zusätzlichen Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 9 veranschaulicht ein Beispiel eines weiteren Schreiboperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 10 veranschaulicht ein Beispiel eines weiteren Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 11 veranschaulicht ein Beispiel noch eines weiteren Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 12 veranschaulicht ein Beispiel eines weiteren Schreiboperationsverfahrens, implementiert gemäß einigen Ausführungsformen.
    • 13 veranschaulicht ein Beispiel eines Speichersystems, das eine Speichervorrichtung umfassen kann, konfiguriert gemäß einigen Ausführungsformen.
  • AUFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis der vorgestellten Konzepte zu vermitteln. Die vorgestellten Konzepte können ohne einige oder alle dieser spezifischen Einzelheiten in die Praxis umgesetzt werden. In anderen Fällen wurden hinlänglich bekannte Prozessoperationen nicht ausführlich beschrieben, um die beschriebenen Konzepte nicht unnötigerweise undeutlich zu machen. Obgleich einige Konzepte in Zusammenhang mit den spezifischen Beispielen beschrieben werden, versteht es sich, dass diese Beispiele keine Beschränkung darstellen sollen.
  • Zähler können in Vorrichtungen wie Speichervorrichtungen implementiert sein und können dazu ausgelegt sein, verschiedene Zählungsoperationen zu implementieren, um Zählungszahlen zu erzeugen, die durch die Speichervorrichtungen genutzt werden. Die Fähigkeit einiger Zähler, Zähler zu implementieren, kann beschränkt sein, da die zum Speichern von Zählwerten erforderliche Speichermenge eine große Menge an Speicher- und Systemressourcen einnehmen kann. Darüber hinaus sind solche Zähler möglicherweise nicht sicher und könnten anfällig gegenüber schädlichen Handlungen zum Ändern von Zählungszahlen sowie Stromverlustereignissen sein, die während des Betriebs der Speichervorrichtung und mit den Speichervorrichtung assoziierten Zählungsoperationen auftreten können.
  • Hier offenbarte Ausführungsformen stellen monotone Zähler mit robusten Lese- und Schreibfähigkeiten und Fehlertoleranzen für Stromverlustereignisse bereit. Wie nachstehend ausführlicher erörtert wird, wird eine Kombination von Zählern genutzt, um ein Zählschema zu implementieren, das dazu verwendet werden kann, volle Zählwerte dynamisch zu berechnen und somit eine Gesamtmenge des für Zählungsoperationen genutzten Speichers zu reduzieren. Darüber hinaus können die Zähler auf eine sichere Weise implementiert sein, die dazu ausgelegt ist, schädliche Handlungen und/oder Datenkorruption aufgrund von Stromverlustereignissen zu identifizieren und zu verhindern. So können hier offenbarte Zähler in sicheren Speichervorrichtungen, beispielsweise sicheren Flash-Vorrichtungen, bei denen es sich um nichtflüchtige Speichervorrichtungen handeln kann, enthalten sein. Bei solchen sicheren Flash-Vorrichtungen kann es sich beispielsweise um Charge-Trap-NOR-Flash-Vorrichtungen handeln.
  • 1 veranschaulicht ein Beispiel einer Speichervorrichtung, konfiguriert gemäß einigen Ausführungsformen. Wie oben erörtert, können Speichervorrichtungen, beispielsweise eine Speichervorrichtung 100, Bitzähler umfassen, die zum Implementieren von Zähloperationen verwendet werden. Insbesondere können solche Bitzähler monoton implementiert sein, sodass sie nur in eine Richtung zählen. Wie nachstehend ausführlicher erörtert wird, sind in der Speichervorrichtung 100 implementierte Zähler dazu ausgelegt, hohe Zählungszahlen bei relativ geringen Grundflächenkosten und außerdem auf eine Weise, die gegen Stromverlustereignisse geschützt ist, zu erzielen.
  • In verschiedenen Ausführungsformen kann die Speichervorrichtung 100 eine Speicherungsvorrichtung sein, die mehrere nichtflüchtige Speicherelemente in einem Speicherarray, beispielsweise einem Speicherarray 102, umfasst. Dementsprechend kann das Speicherarray 102 zahlreiche Spalten und Zeilen von Speicherelementen umfassen, die in Sektoren gruppiert oder unterteilt sein können. In verschiedenen Ausführungsformen können solche Sektoren eine Gruppe von Dateneinheiten, beispielsweise Wörter, sein, die als Einheit gelöscht werden können. In verschiedenen Ausführungsformen sind die in 1 gezeigten Sektoren logische Sektoren, die auf physische Sektoren abgebildet werden können. In einigen Ausführungsformen können die logischen Sektoren Sektoren von Daten sein, die durch eine Speicherarrayadresse referenziert werden, die unabhängig von dem physischen Ort der Daten in dem Speicherarray ist. Dementsprechend kann ein Hostsystem einen logischen Sektor als an einer bestimmten Adresse residierend (z.B. beginnend bei der Adresse null des Speicherarrays) betrachten. In diesem Beispiel können sich die Daten tatsächlich in einem anderen Teil des Speicherarray-Adressraums an einer anderen physischen Adresse befinden. In verschiedenen Ausführungsformen führt die Speichervorrichtung 100 eine Abbildungstabelle von der logischen Adresse der Daten auf tatsächliche physische Orte. So kann die Speichervorrichtung 100 verschiedene physische Speichersektoren umfassen, die auf logische Speichersektoren abgebildet werden können.
  • in verschiedenen Ausführungsformen kann das Speicherarray 102 einen Speichersektor 132 umfassen, der dazu ausgelegt ist, Zähler 130 zu umfassen und zu implementieren. In verschiedenen Ausführungsformen umfasst der Speichersektor 132 zahlreiche kleine Speichersektoren. Wie gleichermaßen oben erörtert, sind die Zähler 130 dazu ausgelegt, Zählungsoperationen zu implementieren, die während verschiedener durch die Speichervorrichtung 100 implementierter Operationen verwendet werden können. In einigen Ausführungsformen sind die Zähler 130 monotone Zähler, die in eine einzige Richtung zählen. Eine solche Implementierung monotoner Zähler liefert eine verbesserte Sicherheit für die Speichervorrichtung 100. Wie nachstehend ausführlicher erörtert wird, sind die Zähler 130 dazu ausgelegt, eine Architektur aufzuweisen, die die Implementierung einer relativ hohen Zählungszahl unter Verwendung einer relativ geringen Anzahl von Systemressourcen und eines relativ geringen Speicherplatzes ermöglicht. Beispielsweise können die Zähler 130 dazu ausgelegt sein, eine 232-Zählung unter Verwendung drei kleiner Sprechersektoren zu implementieren. Hierbei kann eine Größe eines kleinen Speichersektors basierend auf einer implementierten Fertigungstechnik variieren. Beispielsweise kann ein kleiner Speichersektor bei Implementierung unter Verwendung einer 45-nm-Fertigungstechnik 128 Wortleitungen umfassen. Wie nachstehend ausführlicher erörtert wird, sind die Zähler 130 dazu ausgelegt, mehrere Zähler zu umfassen, ausgelegt zum Führen lokaler und globaler Zählungen. Darüber hinaus ermöglicht das durch die Konfiguration der Zähler 130 unterstützte Zählschema die Zählung und Erzeugung von Speicheradressen auf eine Weise, die keine Speicherung und Pflege vollständiger Adressen erfordert.
  • Darüber hinaus ist die Konfiguration der Zähler 130 ferner dazu ausgelegt, Schutz gegen Stromverlustereignisse bereitzustellen. Wie nachstehend ausführlicher erörtert wird, kann einen Stromverlustereignis darin bestehen, dass eine Systemkomponente, beispielsweise das Speicherarray 102, Strom verliert. In verschiedenen Ausführungsformen umfasst die Konfiguration der Zähler 130 mehrere Zähler, die in Kombination als lokale und globale Zähler verwendet werden, um ein durch die Speichervorrichtung 100 genutztes Zählschema zu implementieren und zu unterhalten. Eine solche Kombination lokaler und globaler Zähler ermöglicht die Implementierung eines solchen Zählschemas mit reduzierten Systemressourcen, beispielsweise eine zum Speichern solcher Adressinformationen verwendete Speichermenge. Obgleich die Zähler 130 in der Darstellung in dem Speicherarray 102 enthalten sind, können die Zähler 130 an einem beliebigen geeigneten Ort implementiert sein. Beispielsweise können die Zähler 130 an einem separaten Speicherort, beispielsweise einem anderen Speicherarray oder einer dedizierten Speicherungsvorrichtung, implementiert sein. Ferner versteht es sich, dass obgleich 1 ein Beispiel einer Konfiguration der Zähler 130 veranschaulicht, außerdem zusätzliche Konfigurationen implementiert werden können, die zusätzliche Zähler, beispielsweise insgesamt sechs Zähler, umfassen können. So kann die Implementierung der Zähler 130 basierend auf der Speicherverfügbarkeit der Speichervorrichtung 100 sowie dem Zählungsbedarf der Speichervorrichtung 100 skalierbar sein.
  • Die Speichervorrichtung 100 umfasst ferner eine Steuerschaltungsanordnung 128, die mit dem Speicherarray 102 gekoppelt ist. In verschiedenen Ausführungsformen umfasst die Steuerschaltungsanordnung 128 einen oder mehrere Prozessoren, ausgelegt zum Implementieren mit den Zählern 130 assoziierter Lese- und Schreiboperationen sowie mit den Zählern 130 assoziierter Bestimmungen. Dementsprechend kann die Steuerschaltungsanordnung 128 dazu ausgelegt sein, Steuersignale zu erzeugen, die mit solchen Lese- und Schreiboperationen sowie zugrunde liegenden Programmier- und Löschoperationen assoziiert sind. Zusätzliche Einzelheiten bezüglich solcher Operationen werden nachstehend ausführlicher erörtert.
  • 2A veranschaulicht ein Beispiel für monotone Zähler, konfiguriert gemäß einigen Ausführungsformen. Wie oben erörtert, können Speichervorrichtungen Bitzähler, beispielsweise Zähler 202, umfassen, die dazu verwendet werden, Zähloperationen zu implementieren und eine Zählungszahl zu führen. Wie nachstehend ausführlicher erörtert wird, können mehrere Zähler in Kombination implementiert sein, um hohe Zählungszahlen mit relativ geringen Grundflächenkosten und außerdem auf eine Weise, die gegen Stromverlustereignisse geschützt ist, zu implementieren.
  • Wie in 2A gezeigt, umfassen die Zähler 202 einen ersten Zähler 204, einen zweiten Zähler 206 und einen dritten Zähler 208. In verschiedenen Ausführungsformen können der erste Zähler 204, der zweite Zähler 206 und der dritte Zähler 208 jeweils verschiedene Speicherorte umfassen, die hier auch als Adressen bezeichnet werden. Beispielsweise können die Zähler jeweils ein Array aus Speicherzellen umfassen, ausgelegt zum Speichern von Datenwerten, die zum Verfolgen von Zähloperationen verwendet werden. In einem Beispiel können der erste Zähler 204 und der zweite Zähler 206 jeweils einen Zyklus von bis zu 215 durchlaufen und somit jeweils etwa 32.000 Zählungen verfolgen. Wie in 2A gezeigt, kann jede der Speicherzellen auf einen Anfangswert programmiert sein, und jede Zähloperation kann die Änderung eines Werts in der Speicherzelle bewirken, um zu einem anderen programmierten Wert zu schalten. Insbesondere kann ein Anfangswert ein „High“-Wert, beispielsweise ein Wert „1“, sein, und ein programmierter Wert kann ein „Low“-Wert, beispielsweise ein Wert „0“, sein. So können in den Zählern gespeicherte Werte zum Verfolgen von Zähloperationen verwendet werden.
  • In einem Beispiel sind der erste Zähler 204 und der dritte Zähler 208 als lokale Zähler implementiert. Wie hier verwendet, kann sich ein lokaler Zähler auf einen Zähler beziehen, der dazu ausgelegt ist, als Reaktion auf eine Zähloperation, die Teil einer Adressieroperation ist, inkrementiert zu werden. Dementsprechend kann bei jeder Implementierung einer Zählung ein lokaler Zähler inkrementiert werden, um die Zählung zu verfolgen. Darüber hinaus ist der zweite Zähler 206 als globaler Zähler implementiert. Wie hier verwendet, kann sich ein globaler Zähler auf einen Zähler beziehen, der dazu ausgelegt ist, als Reaktion darauf, dass ein lokaler Zähler gefüllt und zurückgesetzt wird, inkrementiert zu werden. Wie nachstehend ausführlicher erörtert wird, kann, wenn ein lokaler Zähler seine maximale Zählungszahl erreicht, dieser zurückgesetzt und der globale Zähler inkrementiert werden.
  • Wie in 2A gezeigt, kann ein globaler Zähler, beispielsweise der zweite Zähler 206, dazu ausgelegt sein, Zählungsdaten für mehrere lokale Zähler, beispielsweise den ersten Zähler 204 und den dritten Zähler 208, zu führen. Beispielsweise kann der zweite Zähler 206 eine dem ersten Zähler 204 zugewiesene erste Datentabelle 210 umfassen und kann außerdem eine dem dritten Zähler 208 zugewiesene zweite Datentabelle 212 umfassen. So kann ein einziger globaler Zähler verwendet werden, um mehrere separate Zähler zu implementieren und zu führen, und eine Anzahl von Zählern kann basierend auf den Anforderungen der Speichervorrichtung dynamisch skaliert werden.
  • Darüber hinaus und wie nachstehend ausführlicher erörtert wird, können die in den Zählern gespeicherten Werte Datenwerte wie ein „High“-Wert oder ein „Low-Wert oder ein beliebiges anderes geeignetes Flag, beispielsweise einer von oder Kombinationen von Datenwerten wie „1“ oder „0“ sein. So sind die im Speicher gespeicherten Datenwerte keine tatsächlichen Zählwerte von Zählungszahlen, sondern Flags, die zum dynamischen Berechnen solcher Zählwerte verwendet werden. So wird die gespeicherte Repräsentation von Zählwerten reduziert, und ein zum Speichern und Führen von Zählungsinformationen genutzter Speicher wird reduziert.
  • 2B veranschaulicht ein weiteres Beispiel für monotone Zähler, konfiguriert gemäß einigen Ausführungsformen. Wie oben erörtert, können Speichervorrichtungen Bitzähler, beispielsweise Zähler 220, umfassen, die zum Implementieren von Zähloperationen und Führen einer Zählungszahl verwendet werden. Wie nachstehend ausführlicher erörtert wird, können Kombinationen von Zählern implementiert sein, um hohe Zählungszahlen mit relativ geringen Grundflächenkosten zu erzielen. Darüber hinaus kann, wie nachstehend ausführlicher erörtert wird, die Repräsentation von Zählungen in den Zählern dazu ausgelegt sein, Schutz gegen Stromverlustereignisse bereitzustellen, die in Systemen auftreten können, die hier offenbarte Speichervorrichtungen umfassen.
  • Wie in 2B gezeigt, umfassen die Zähler 220 einen lokalen Zähler 222 und ein globalen Zähler 224. Wie ebenfalls in 2B gezeigt, können Speicherorte der Zähler dazu ausgelegt sein, mehrere Datenwerte zu speichern. In einem Beispiel kann ein bestimmter Speicherort dazu ausgelegt sein, Wertepaare wie „11“ und „00“ zu speichern. In verschiedenen Ausführungsformen stellt die Verwendung mehrerer Datenwerte eine Redundanz beim Speichern von Datenwerten bereit, die zum Verifizieren der Datenintegrität und Bereitstellen von Fehlertoleranz gegen Stromverlustereignisse, wenn ein solches während Zähloperationen auftritt, bereitstellt.
  • In dem in 2B gezeigten spezifischen Beispiel wurde der globale Zähler 224 auf einen Speicherort inkrementiert, der der dritte von seinem Startort ist, und der lokale Speicher 222 wurde auf einen Ort inkrementiert, der der elfte von seinem Startort ist. In verschiedenen Ausführungsformen ist eine Systemkomponente, beispielsweise eine Steuerschaltungsanordnung, dazu ausgelegt, eine Gesamtgröße jedes lokalen Zählers 222 und globalen Zählers 224, wie sie möglicherweise während einer zum Implementieren des lokalen Zählers 222 und des globalen Zählers 224 verwendeten anfänglichen Konfigurationsoperation bestimmt wurden, zu kennen.
  • Beispielsweise können der Speichervorrichtung eine Größe des lokalen Zählers 222 und des globalen Zählers 224 sowie eine Anzahl von in jedem enthaltenen Wortleitungen bekannt sein und können zum Berechnen eines durch den lokalen Zähler 222 und den globalen Zähler 224 repräsentierten Zählwerts verwendet werden. Insbesondere kann der lokale Zähler 222 128 Wortleitungen aufweisen und kann zu 1048 Zählungen pro Wortleitung fähig sein. Dementsprechend kann der lokale Zähler 222 zu einer maximalen Anzahl von 134.144 Zählungen fähig sein. Wie durch den globalen Zähler 224 angegeben, wurde der lokale Zähler 222 bereits dreimal zykliert. Dementsprechend kann die globale Zählungszahl dazu verwendet werden, eine erste Zahl von 402.432 zu bestimmen, wobei es sich um einen Teilzählwert handeln kann, und diese Zahl kann mit einer aktuellen Position des lokalen Zählers 222, die in diesem Fall 11 ist, kombiniert werden, um eine Gesamtzählungszahl von 402.443 zu erzeugen. So können die in globalen und lokalen Zählern gespeicherten Datenwerte in Kombination mit vorbestimmten Zählerparametern, beispielsweise einer Zählergröße und einer Wortleitungsanzahl, verwendet werden, um Zählungszahlen dynamisch zu berechnen.
  • Des Weiteren können zusätzliche in Flags verwendete Bits verwendet werden, um die Datenintegrität zu verbessern. Wie oben erwähnt, können die Speicherorte dazu ausgelegt sein, Wertepaare wie „11“ und „00“ speichern. In verschiedenen Ausführungsformen kann eine Systemkomponente, beispielsweise eine Steuerschaltungsanordnung, dazu ausgelegt sein, eine oder mehrere Operationen, beispielsweise eine Mehrheitsentscheidungsoperation, an den gespeicherten Bits zu implementieren. Beispielsweise kann ein durch drei der vier Bit repräsentiertes Bit als der gespeicherte Wert identifiziert werden. Sind die gespeicherten Werte „11“ und „10“, so kann der gespeicherte Wert als „1“ identifiziert werden. Dementsprechend können die Mehrheitsentscheidungsoperationen in Situationen implementiert werden, in denen ein Bit mit geringer Zuverlässigkeit von 0 auf 1 kippt, um das Risiko, dass dieses Kippen den Zählerwert beeinträchtigt wird, zu reduzieren. Zusätzliche Operationen in Zusammenhang mit der Bewahrung der Datenintegrität und dem Schutz gegen Stromverlust werden nachstehend ausführlicher erörtert.
  • 3 veranschaulicht ein Flussdiagramm eines Beispiels eines Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können Speichervorrichtungen dazu ausgelegt sein, verschiedene Operationen zu implementieren, die Zähler nutzen. Darüber hinaus können eine oder mehrere Leseoperationen implementiert werden, um Werte aus Zählern zu lesen und eine Zählungszahl zu bestimmen. Wie nachstehend ausführlicher erörtert wird, können Leseoperationen implementiert werden, um eine Zählungszahl gemäß dem oben beschriebenen Schema zu implementieren, sowie Schutz gegen Stromverlustereignisse, die während des Speicherns von Zählungsinformationen aufgetreten sein können, bereitzustellen.
  • Dementsprechend kann das Verfahren 300 mit Operation 302 beginnen, bei der ein Wert eines globalen Zählers an einem aktuellsten Ort gelesen werden kann. In verschiedenen Ausführungsformen ist der aktuellste Ort der aktuelle Ort des Zählers, der den aktuellen Ort des globalen Zählers repräsentiert. Wie hier erörtert, kann sich ein aktueller Ort auf den aktuellsten Ort beziehen, der zum Identifizieren einer Zählung aktualisiert wurde. Wie oben erörtert, kann der globale Zähler zumindest teilweise als Reaktion darauf inkrementiert werden, dass ein lokaler Zähler zykliert wird, was auftreten kann, wenn der lokale Zähler voll ist und seine maximale Zählung erreicht hat und dann unter Verwendung einer Löschoperation zurückgesetzt wird. Dementsprechend kann der aktuelle Ort als ein Ort oder eine Adresse repräsentiert sein, der bzw. die verwendet werden kann, um einen numerischen Wert abzuleiten, der eine Anzahl von Rücksetzvorgängen oder Zyklen der lokalen Zähler repräsentiert.
  • Das Verfahren 300 kann zu Operation 304 übergehen, bei der bestimmt werden kann, ob der Wert des aktuellsten Orts ein Stromverlustereignis identifiziert. Wie nachstehend ausführlicher erörtert wird, können Schreiboperation eines globalen Zählers auf eine Weise implementiert werden, die eine Angabe eines Stromverlustereignisses bereitstellt, falls ein solches aufgetreten ist. Beispielsweise kann für eine Löschung eines lokalen Zählers zweimal in einen globalen Zähler geschrieben werden. Genauer gesagt kann einmal an einem aktuellsten Ort vor der Löschoperation und einmal an einem zweiten Ort nach der Löschoperation in den globalen Zähler geschrieben werden. So kann die Löschoperation zwischen Schreiboperationen des globalen Zählers angeordnet sein, und zwei Orte des globalen Zählers können verwendet werden, um eine einzelne Zählung zu repräsentieren. Dementsprechend kann sich, wie hier offenbart, eine ungerade Zählung oder eine gerade Zählung kollektiv auf alle zugrunde liegenden Speicherorte beziehen, die zum Repräsentieren dieser bestimmten Zählung verwendet werden. Bei einer Implementierung auf diese Weise kann ein an einen ungeraden Ort des globalen Zählers geschriebener Wert angeben, dass das Inkrement implementiert wurde, jedoch kann ein Stromverlustereignis während der Löschoperationen aufgetreten sein, und die zweite Schreiboperation könnte nicht implementiert worden sein. Somit kann die Tatsache, ob der aktuellste Ort ungerade oder gerade ist, dazu verwendet werden, abzuleiten, ob ein Stromverlustereignis aufgetreten ist oder nicht.
  • Während vorliegende Ausführungsformen die Verwendung einer Gerade-oder-Ungerade-Bestimmung beschreiben, kann ein beliebiges geeignetes Flag verwendet werden. Beispielsweise kann eine separate Datentabelle unterhalten werden, um Flags zu speichern, die gesendet werden, wenn erfolgreiche Löschoperationen implementiert wurden. So ist die Identifikation eines Stromverlustereignisses basierend auf dem globalen Zähler nicht zwangsweise auf Eigenschaften wie eine gerade oder ungerade Zählung des aktuellsten Orts beschränkt.
  • Somit kann gemäß verschiedenen Ausführungsformen, wenn bestimmt wird, dass der Wert des aktuellsten Orts kein Stromverlustereignis identifiziert, das Verfahren 300 zu Operation 306 übergehen, bei der ein oder mehrere Speicherorte des globalen Zählers aufgefrischt werden können, um die Integrität gespeicherten Datenwerte zu bewahren, Werte können aus dem lokalen Zähler gelesen werden, beispielsweise eine aktuelle Zählung, und die Speicherorte des lokalen Zählers können ebenfalls aufgefrischt werden. Nach Abschluss der Operation 306 kann das Verfahren 300 zu Operation 316 übergehen, die nachstehend ausführlicher erörtert wird.
  • Unter erneuter Bezugnahme auf Operation 304 kann, wenn bestimmt wird, dass der Wert des aktuellsten Orts ein Stromverlustereignis identifiziert, das Verfahren 300 zu Operation 308 übergehen, bei der eine Löschstromverlustangabe (EPLI: Erase Power Loss Indication) eines lokalen Zählers verifiziert werden kann. In verschiedenen Ausführungsformen sind die lokalen Zähler dazu ausgelegt, EPLI-Bits zu führen, die dazu verwendet werden können, zu identifizieren, ob eine lokale Löschoperation erfolgreich war. Beispielsweise kann einer Löschoperation ein bestimmter Satz von Anfangs-EPLI-Werten und End-EPLI-Werten zugeordnet sein, die durch eine Systemkomponente, beispielsweise eine Speichersteuerung oder eine Steuerschaltung Anordnung, gespeichert werden. Die programmierten EPLI-Werte können später mit den während einer Löschoperation programmierten EPLI-Werten korreliert werden. Die Korrelation kann implementiert werden, um zu bestimmen, ob die Ausführung der Löschoperation abgeschlossen wurde oder ob ein Stromverlustereignis während der Ausführung aufgetreten ist und die Löschoperation nicht abgeschlossen wurde.
  • Dementsprechend kann bei Operation 308 bestimmt werden, ob die EPLI-Bits einen Stromverlustereignis identifizieren oder nicht. Wird bestimmt, dass eine Löschstromverlustangabe eines lokalen Zählers nicht verifiziert werden kann und die EPLI-Bits nicht gültig sind, kann das Verfahren 300 zu Operation 312 übergehen. Wird bestimmt, dass die Löschstromverlustangabe des lokalen Zählers verifiziert werden kann und die EPLI-Bits gültig sind, kann das Verfahren 300 zu Operation 310 übergehen.
  • Dementsprechend kann bei Operation 310 bestimmt werden, ob der lokale Zähler leer ist. Eine solche Bestimmung kann vorgenommen werden Wird bestimmt, dass der lokale Zähler leer ist, kann das Verfahren 300 zu Operation 314 übergehen. Wird bestimmt, dass der lokale Zähler nicht leer ist, kann das Verfahren 300 zu Operation 312 übergehen.
  • Dementsprechend kann bei Operation 312 eine Löschoperation für den lokalen Zähler implementiert werden. Dementsprechend können die Inhalte des lokalen Zählers gelöscht und zurückgesetzt werden, um zu gewährleisten, dass der lokale Zähler dazu bereit ist einen weiteren Zählungszyklus zu implementieren. In einigen Ausführungsformen kann die Löschoperation als Teil eines separaten Prozesses implementiert werden. Beispielsweise kann bei Operation 312 eine Angabe, dass eine Löschoperation zu implementieren ist, erzeugt werden, und die Löschoperation kann nach Beendigung des Verfahrens 300 als Teil eines Löschprozesses implementiert werden.
  • Das Verfahren 300 kann zu Operation 314 übergehen, bei der ein zusätzlicher Ort des globalen Zählers programmiert werden kann. Dementsprechend kann ein zweiter Ort des globalen Zählers programmiert werden. Wie oben erörtert, können zwei Speicherorte des globalen Zählers pro Zyklus eines lokalen Zählers verwendet werden, und die Verwendung zweier solcher Speicherorte stellt zumindest teilweise Stromverlustschutz bereit. In diesem Beispiel kann der zweite Speicherort dahingehend programmiert werden, genau zu identifizieren, dass ein lokaler Zähler zykliert und gelöscht wurde.
  • Das Verfahren 300 kann zu Operation 316 übergehen, bei der eine Zählung basierend auf dem lokalen und dem globalen Zähler erhalten werden kann und ein Zähler einer SRAM-Vorrichtung aktualisiert werden kann. Wie oben erörtert, können die aktuellen Zählungen des lokalen und des globalen Zählers in Kombination mit bekannten Parametern der Zähler selbst, beispielsweise Anzahlen von Wortleitungen und Zählungen pro Wortleitung, verwendet werden, um einen Zählwert zu erzeugen. Während Operation 316 kann der Zählwert an eine oder mehrere andere Systemkomponenten, beispielsweise einen Zähler einer SRAM-Vorrichtung zur Verwendung mit einer oder mehreren Speicheroperationen, gesendet werden.
  • 4 veranschaulicht ein Flussdiagramm eines Beispiels eines Schreiboperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können Schreiboperationen implementiert werden, um in Zählern, beispielsweise einem globalen Zähler, gespeicherte Werte zu aktualisieren. Wie nachstehend ausführlicher erörtert wird, können Schreiboperationen auf eine Weise implementiert werden, die eine Fehlertoleranz für Stromverlustereignisse bereitstellt.
  • Dementsprechend kann das Verfahren 400 mit Operation 402 beginnen, bei der bestimmt werden kann, ob ein lokaler Zähler voll ist. Eine solche Bestimmung kann vorgenommen werden basierend auf einer Identifizierung des aktuellen Speicherorts und einer aktuellen Zählung des lokalen Speichers und einer Bestimmung, ob dies der letzte Speicherort des lokalen Zählers ist, wie sich basierend auf physischen Parametern, beispielsweise einer Größe, des lokalen Zählers bestimmen lässt.
  • Wird bestimmt, dass der lokale Speicher nicht voll ist, kann das Verfahren 400 zu Operation 404 übergehen. Dementsprechend kann bei Operation 404 ein letzter Speicherort aufgefrischt werden und ein lokale Zählung aktualisiert und programmiert werden. So können Werte des lokalen Zählers aufgefrischt werden, um die Integrität der in dem lokalen Zählern gespeicherten Daten zu bewahren, und der lokale Zähler kann zum Aktualisieren seiner Zählung programmiert werden.
  • Unter erneuter Bezugnahme auf Operation 402 kann, wenn bestimmt wird, dass ein lokaler Zähler voll ist, das Verfahren 400 zu Operation 406 übergehen, bei der eine letzte lokale Adresse aufgefrischt werden kann. Wie oben gleichermaßen erörtert, können Werte des lokalen Zählers aufgefrischt werden, um die Integrität der in dem lokalen Zählern gespeicherten Daten zu bewahren. Dementsprechend kann selbst dann, wenn bestimmt wird, dass der lokale Zähler voll ist, die letzte lokale Adresse aufgefrischt werden. In einigen Ausführungsformen gewährleistet die Implementierung einer solchen Auffrischoperation die Integrität der Programmierung des Bits, verhindert, dass die letzte lokale Adresse ein unzuverlässiger Wert ist und verhindert somit einen Bruch der Monotonie.
  • Das Verfahren 400 kann zu Operation 408 übergehen, bei der eine letzte globale Adresse eines globalen Zählers aufgefrischt werden kann. Wie oben erörtert, kann der globale Zähler mit dem lokalen Zähler assoziiert sein und kann zum Zählen von Zyklen des lokalen Zählers verwendet werden. Bei Operation 408 kann eine letzte globale Adresse aufgefrischt werden, um die Integrität der in dem globalen Zähler gespeicherten Daten zu bewahren.
  • Das Verfahren 400 kann zu Operation 410 übergehen, bei der ein erster Wert für den globalen Zähler programmiert werden kann. Wie oben gleichermaßen erörtert, kann es sich dabei um einen ersten Wert oder ein erstes Flag handeln, der bzw. das verwendet wird, um anzugeben, dass eine Löschoperation für einen lokalen Zähler initiiert wurde, und um eine Anzahl erfolgter Löschoperationen zu verfolgen. Die Programmierung des ersten Werts kann an einer ungeraden Adresse oder einem ungeraden Ort des globalen Zählers gespeichert werden.
  • Das Verfahren 400 kann zu Operation 412 übergehen, bei der der lokale Zähler gelöscht werden kann. Dementsprechend kann eine Löschoperation implementiert werden und die in dem lokalen Zählern gespeicherten Werte können zurückgesetzt werden. Wie nachstehend unter Bezugnahme auf die zusätzlichen Ausführungsformen ausführlicher erörtert wird, kann die Löschoperation separat implementiert werden. Dementsprechend kann bei Operation 408 eine Angabe, dass eine Löschoperation zu implementieren ist, erzeugt werden, und die Löschoperation kann als Teil eines separaten Prozesses nach dem Verfahren 400 implementiert werden.
  • Das Verfahren 400 zu Operation 414 übergehen, bei der ein zweiter Wert für den globalen Zähler programmiert werden kann. Wie oben gleichermaßen erörtert, kann es sich dabei um einen zweiten Wert oder ein zweites Flag handeln, der bzw. das verwendet wird, um anzugeben, dass eine Löschoperation für einen lokalen Zähler abgeschlossen wurde. Die Programmierung des zweiten Werts kann an einer geraden Adresse oder einem ungeraden Ort des globalen Zählers gespeichert werden. Dementsprechend kann die erfolgreiche Programmierung sowohl des ersten Werts als auch des zweiten Werts an einem ungeraden bzw. geraden Speicherort oder an einer ungeraden bzw. geraden Speicheradresse implementiert werden, und die zwei Werte repräsentieren kollektiv eine Angabe, dass eine Zählung implementiert wurde und dass eine Löschoperation für einen mit dem globalen Zähler assoziierten lokalen Zähler erfolgreich initiiert und abgeschlossen wurde.
  • 5 veranschaulicht ein weiteres Beispiel monotoner Zähler, konfiguriert gemäß einigen Ausführungsformen. Wie oben erörtert, können Speichervorrichtung Bitzähler, beispielsweise Zähler 500, umfassen, die zum Implementieren von Zähloperationen und Führen einer Zählungszahl verwendet werden. In verschiedenen Ausführungsformen können die Zähler 500 dazu ausgelegt sein, zusätzlichen Speicher oder Teilbereiche von Speicher zu umfassen, die zum Implementieren einer redundanten Speicherung von durch Zähler gespeicherten Zählungsinformationen verwendet werden. So sind die in einer Speichervorrichtung implementierten Zähler 500 dazu ausgelegt, hohe Zählungszahlen mit relativ geringen Grundflächenkosten zu erzielen, und sind ferner dazu ausgelegt, zusätzlichen Schutz gegen Stromverlustereignisse und Datenkorruption bereitzustellen.
  • In verschiedenen Ausführungsformen umfassen die Zähler 500 mehrere Zähler, beispielsweise einen globalen Zähler 502, einen ersten lokalen Zähler 504 und einen zweiten lokalen Zähler 506. Wie oben unter Bezugnahme auf 2 und 2 B gleichermaßen erörtert, sind solche Zähler dazu ausgelegt, verschiedene Speicherorte, die auch als Adressen bezeichnet werden, zu umfassen. Beispielsweise können die Zähler jeweils ein Array aus Speicherzellen umfassen, ausgelegt zum Speichern von Datenwerten, die zum Verfolgen von Zähloperationen und Zählungszahlen verwendet werden. Wie in 5 gezeigt, kann jeder der Speicherorte auf einen Anfangswert programmiert sein, und jede Zähloperation kann die Änderung eines Werts in einer Speicherzelle bewirken, um zu einem programmierten Wert zu schalten. Insbesondere kann ein Anfangswert ein „High“-Wert, beispielsweise ein Wert „1“, sein, und ein programmierter Wert kann ein „Low“-Wert, beispielsweise ein Wert „0“, sein. So können in den Zählern gespeicherte Werte zum Verfolgen von mit der Erzeugung von Speicheradressen assoziierten Zähloperationen verwendet werden.
  • In einem Beispiel sind der erste lokale Zähler 504 und der zweite lokale Zähler 506 dazu ausgelegt, als Reaktion auf eine Zähloperation programmiert zu werden. Dementsprechend kann bei jeder Implementierung einer Zähloperation durch ein Speichersystem ein lokaler Zähler inkrementiert werden, um die Zählungszahl zu verfolgen. Darüber hinaus ist der globale Zähler 502 dazu ausgelegt, als Reaktion darauf, dass ein lokaler Zähler gefüllt und zurückgesetzt wird, aktualisiert zu werden.
  • Wie nachstehend ausführlicher erörtert wird, kann, wenn ein lokaler Zähler seine maximale Zählungszahl erreicht, dieser gelöscht und zurückgesetzt werden und der globale Zähler programmiert und aktualisiert werden.
  • Wie in 5 gezeigt, kann jeder lokaler Zähler in mehrere Abschnitte unterteilt sein. Beispielsweise können der erste lokale Zähler 504 und der zweite lokale Zähler 506 jeweils in einen ersten Abschnitt und einen zweiten Abschnitt unterteilt sein, wobei der erste Abschnitt ein primärer Zähler ist, der hier auch als Hauptzähler bezeichnet wird, und wobei der zweite Abschnitt ein sekundärer Zähler ist, der hier auch als Schattenzähler bezeichnet wird. In verschiedenen Ausführungsformen kann die Unterteilung eines lokalen Zählers implementiert werden, indem ein zum Implementieren des lokalen Zählers verwendeter Speicherabschnitt, beispielsweise ein kleiner Speichersektor, in zwei physische Teilarrays unterteilt wird. Wie nachstehend ausführlicher erörtert wird, kann ein Hauptzähler ein primärer aktiver Zähler sein, und ein Schattenzähler kann ein sekundärer redundanter Zähler sein, der zur Gewährleistung der Datenintegrität verwendet wird. Insbesondere können Daten, die in den ersten Zähler, beispielsweise einen Zähler 520, geschrieben und darin gespeichert werden, in dem zweiten Zähler, beispielsweise einem Zähler 522, gespiegelt werden. Es versteht sich, dass der zweite lokale Zähler 506 auch einen Hauptzähler und einen Schattenzähler, beispielsweise einen Zähler 524 und einen Zähler 526, umfassen kann.
  • In verschiedenen Ausführungsformen ist ein globaler Zähler, beispielsweise der globale Zähler 502, dazu ausgelegt, mehrere lokale Zähler, beispielsweise den ersten lokalen Zähler 504 und den zweiten lokalen Zähler 506, zu nutzen. Beispielsweise kann der globale Zähler 502 einen Zähler 510 umfassen und kann in abwechselnden Zählungen zwischen dem ersten Zähler 504 und dem zweiten Zähler 506 zyklieren. Beispielsweise kann der erste lokale Zähler 504 für gerade Zählungen und der zweite lokale Zähler 506 für ungerade Zählungen verwendet werden. Wie hier beschrieben, kann sich eine gerade Zählung oder eine ungerade Zählungen auf eine gesamte Zähloperation beziehen. Insbesondere und wie nachstehend unter Bezugnahme auf 9 ausführlicher erörtert, kann eine Zählung das Schreiben und Programmieren mehrerer Datenwerte umfassen, um die Daten Integrität zu gewährleisten. Wie in 5 gezeigt, werden für jede Zählung zwei Adressen oder Speicherorte verwendet. In verschiedenen Ausführungsformen kann der globale Zähler 502 ferner einen Zähler 512 umfassen, der als redundanter Speicherort ausgelegt ist, bei dem es sich um einen Schattenzähler handeln kann, der den primären Zähler des globalen Zählers 502 spiegelt. In verschiedenen Ausführungsformen kann eine Anzahl von Zählern basierend auf den Anforderungen einer Speichervorrichtung dynamisch skaliert werden.
  • Wie oben gleichermaßen erörtert, können die in den Zählern gespeicherten Werte Datenwerte wie ein „High“-Wert oder ein „Low-Wert oder ein beliebiges anderes geeignetes Flag, beispielsweise einer von oder Kombinationen von Datenwerten wie „1“ oder „0“ sein. So sind die im Speicher gespeicherten Datenwerte keine tatsächlichen Zählwerte, sondern Flags, die zum dynamischen Berechnen solcher tatsächlichen Zählwerte verwendet werden. So wird die gespeicherte Repräsentation von Zählwerten reduziert, und ein zum Speichern und Führen von Zählungsinformationen genutzter Speicher wird reduziert.
  • 6 veranschaulicht ein Beispiel eines weiteren Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können Speichervorrichtungen dazu ausgelegt sein, verschiedene Operationen, die Zähler nutzen, zu implementieren. Darüber hinaus können eine oder mehrere Leseoperationen implementiert werden, um Werte aus Zählern zu lesen und eine Zählungszahl zu bestimmen. Wie nachstehend ausführlicher erörtert wird, können diese Operationen implementiert werden, um eine Zählungszahl gemäß dem oben beschriebenen Schema zu erzeugen, sowie Schutz gegen Stromverlustereignisse, die während des Speicherns von Zählinformationen aufgetreten sein können, bereitzustellen.
  • Dementsprechend kann das Verfahren 600 mit Operation 602 beginnen, bei der bestimmt werden kann, ob ein Hauptzähler eines globalen Zählers mit einem Schattenzähler des globalen Zählers übereinstimmt. In verschiedenen Ausführungsformen kann ein aktueller Zählwert, der auch als aktuellster Wert bezeichnet wird, des Hauptzählers mit dem des Schattenzählers verglichen werden. Obgleich hier Haupt- und Schattenzähler offenbart werden, handelt es sich bei solchen Zählern um Beispiele, und sie können auch als erster und zweiter globaler Zähler bezeichnet werden. Dementsprechend können die gespeicherten Werte, die eine aktuellste Zählung des Haupt- und des Schattenzählers repräsentieren, verglichen werden, um zu prüfen, ob sie einstimmen. Wird bestimmt, dass die Werte übereinstimmen, kann das Verfahren 600 zu Operation 608 übergehen, bei der ein Speicherort aktualisiert werden kann, und das Verfahren 600 kann mit einer zusätzlichen Leseoperation fortfahren, die nachstehend unter Bezugnahme auf 7 ausführlicher erörtert wird.
  • Wird bestimmt, dass die aktuellen Werte des Haupt- und des Schattenzählers nicht übereinstimmen, kann das Verfahren 600 zu Operation 604 übergehen, um zu prüfen, ob die Differenz zwischen dem Haupt- und dem Schattenzähler eine zulässige Differenz ist, die ausgeglichen werden kann, oder ob die Differenz irreparabel ist und nicht korrigiert werden kann. Beispielsweise kann eine identifizierte Differenz reparabel sein, wenn sich ableiten lässt, dass eine Löschoperation implementiert wurde und ein Hauptzähler aktualisiert wurde, aber ein Stromverlustereignis vor der Programmierung eines Schattenzählers aufgetreten ist, das eine Diskrepanz der Werte verursacht hat. Dementsprechend kann bei Operation 604 bestimmt werden, ob ein aktueller Wert eines aktuellen Orts oder einer aktuellen Adresse des Hauptzählers um einen bestimmten Wert oder Betrag größer als ein aktueller Wert eines aktuellen Orts oder einer aktuellen Adresse des Schattenzählers ist.
  • Insbesondere kann bestimmt werden, ob der Wert des aktuellen Orts des Hauptzählers um eins größer als ein Wert des aktuellen Orts des Schattenzählers ist. In einem Beispiel kann ein aktueller Ort ein Ort sein, der durch einen Index wie N identifiziert wird, und ein um eins inkrementierter aktueller Ort kann ein Ort sein, der durch einen Index wie N+1 identifiziert wird. Dementsprechend kann, wenn ein aktueller Wert des aktuellen Orts des Hauptzählers N ist und ein aktueller Wert des Schattenzählers N-1 ist, bestimmt werden, dass der aktuelle Wert des aktuellen Orts des Hauptzählers um einen bestimmten Wert größer als der aktuelle Wert des aktuellen Orts des Schattenzählers ist. In einigen Ausführungsformen kann der aktuelle Wert des Hauptzählers mit einem aktuellen Wert des Schattenzählers sowie einem zusätzlichen Wert des Schattenzählers, beispielsweise einem aktuellen Ort plus zwei, verglichen werden. Ein solcher zusätzlicher Vergleich kann implementiert werden, um eine zusätzliche Bestätigung bereitzustellen, ob der aktuelle Ort für den Hauptzähler um insbesondere einen Index größer als der aktuelle Ort des Schattenzählers ist oder nicht.
  • In einigen Ausführungsformen können solche Werte bei Verwendung von Datenwerten oder Flags, wie oben unter Bezugnahme auf 5 erörtert, und bei Auftreten eines Stromverlustereignisses oder eines anderen Ereignisses während einer Implementierung eines globalen Zählers und Löschung eines lokalen Zählers auftreten. Insbesondere kann der Hauptzähler aktualisiert und programmiert worden sein, um einen Abschluss einer Löschoperation zu identifizieren, jedoch kann auch ein Stromverlustereignis aufgetreten sein, dass das ordnungsgemäße Programmieren des Schattenzählers verhindert hat. Bei einer solchen Situation kann es sich um eine zulässige Differenz handeln, da sie durch nachfolgendes Programmieren des entsprechenden Bits des Schattenzählers korrigiert werden kann.
  • Wird bestimmt, dass der aktuelle Wert des aktuellen Orts oder der aktuellen Adresse des Hauptzählers nicht um einen bestimmten Wert, beispielsweise eins, größer als der aktuelle Wert des aktuellen Orts oder der aktuellen Adresse des Schattenzählers ist, kann das Verfahren 600 zu Operation 606 übergehen, bei der ein schädliches Ereignis identifiziert werden kann, und das Verfahren 600 kann enden. Darüber hinaus kann eine Benachrichtigungsnachricht erzeugt werden, die an eine andere Systemkomponente gesendet werden kann, um zu identifizieren, dass ein solches Ereignis aufgetreten ist.
  • Unter erneuter Bezugnahme auf Operation 604 kann, wenn bestimmt wird, dass der Wert des aktuellen Orts oder der aktuellen Adresse des Hauptzählers um einen bestimmten Wert, beispielsweise eins, größer als der Wert des aktuellen Orts oder der aktuellen Adresse des Schattenzählers ist, das Verfahren 600 zu Operation 610 übergehen, bei der die letzte Adresse des Hauptzählers aufgefrischt werden kann und die nächste Adresse des Schattenzählers geschrieben werden kann. So können die in dem Schattenzähler, implementiert als der Schattenzähler, gespeicherten Datenwerte basierend auf den in dem Hauptzähler gespeicherten Datenwerten und auf eine Weise, die Daten nach einem Stromverlustereignis wiederherstellt, aktualisiert werden. Nach Abschluss der Operation 610 kann das Verfahren 600 zu Operation 602 übergehen, der Haupt- und der Schattenzähler können verglichen werden und ein Speicherort kann aktualisiert werden, wie oben beschrieben.
  • 7 veranschaulicht ein Beispiel noch eines weiteren Leseoperationsverfahren, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können diese Operationen implementiert werden, um eine Zählungszahl gemäß dem oben beschriebenen Schema zu implementieren, sowie Schutz gegen Stromverlustereignisse bereitzustellen, die während des Speicherns von Zählungsinformationen aufgetreten sein können. Wie nachstehend ausführlicher erörtert wird, können verschiedene Operationen als Reaktion darauf implementiert werden, dass das Vorliegen eines Stromverlustereignisses während einer Zählungsoperation identifiziert wird. In verschiedenen Ausführungsformen kann ein Verfahren, beispielsweise ein Verfahren 700, implementiert werden, wenn identifiziert wird, dass sich eine Zählung eines globalen Zählers an einem geraden Ort befindet und kein Stromverlustereignis auf Ebene des globalen Zählers detektiert wird.
  • Dementsprechend kann das Verfahren 700 mit Operation 702 beginnen, bei der bestimmt werden kann, ob die globale Zählung an einem geraden Ort gespeichert ist. Dementsprechend kann, wie oben unter Bezugnahme auf 6 erörtert, ein aktueller Ort eines globalen Zählers identifiziert werden, und es kann bestimmt werden, ob der aktuelle Ort ein ungerader Ort oder ein gerader Ort ist. Eine solche Bestimmung kann basierend darauf erfolgen, ob der Speicherort eine ungerade oder eine gerade Adresse aufweist. Somit kann das Verfahren 700, wenn die aktuelle Zählung an einem ungeraden Ort gespeichert ist, zu zusätzlichen Operationen übergehen, die unter Bezugnahme auf 8 beschrieben werden. Ist die aktuelle Zählung an einem geraden Ort gespeichert, kann das Verfahren 700 zu Operation 704 übergehen.
  • Dementsprechend kann das Verfahren 700 zu Operation 704 übergehen, bei der bestimmt werden kann, welcher Zähler aktiv ist. Eine solche Bestimmung kann beispielsweise basierend darauf erfolgen, ob die globale Zählung eine ungerade Zählung oder eine gerade Zählung ist. Wie oben erörtert, kann ein globaler Zähler Zählungsoperationen implementieren, bei denen zwei Speicherorte für jede Zählung verwendet werden. Insbesondere wird der erste Speicherort bei Beginn einer Zählungsoperation und einer Löschung eines assoziierten lokalen Zählers verwendet, und der zweite Speicherort wird verwendet, sobald die Löschung abgeschlossen ist. Wie oben erörtert, umfasst jede globale Zählung das Programmieren eines ungeraden und eines geraden Orts, hier auch als Adresse bezeichnet, eines Zählers. Beispielsweise können Orte wie 1, 3 ,5, ... ungerade Orte sein und Orte 2, 4, 6 können gerade Orte sein. Eine abgeschlossene globale Zählung endet mit einem geraden Ort, da bei erfolgreicher Implementierung zwei Bit programmiert werden (andernfalls kann dies auf ein Stromverlustereignis während des Löschens eines lokalen Zählers hinweisen). Daher werden, wie oben unter Bezugnahme auf 5 beschrieben, ungerade globale Zählungen unter Verwendung der Orte 1 und 2, 5 und 6, 9 und 10,... gespeichert, während gerade globale Zählungen an den Orten 3 und 4, 7 und 8, 11 und 12,... gespeichert werden. So kann der Ort oder die Adresse eines letzten Bits einer globalen Zählung auf eine ungerade oder eine gerade Zählung abgebildet werden und kann einen aktiven lokalen Zähler identifizieren und auf diesen zeigen. Dementsprechend können bei Operation 704 ein oder mehrere numerische Merkmale des aktuellen Orts des globalen Zählers verwendet werden, um zu identifizieren, ob die globale Zählung ungerade oder gerade ist. Wie oben erörtert, kann die Tatsache, ob eine Zählung ungerade oder gerade ist, verwendet werden, um zu identifizieren, welcher lokale Zähler aktiv ist.
  • Wird bestimmt, dass der erste lokale Zähler aktiv ist, kann das Verfahren 700 zu Operation 706 übergehen, bei der Adressen eines ersten lokalen Zählers gelesen und aufgefrischt werden können. Wie oben erörtert, kann die Bestimmung, dass der erste lokale Zähler aktiv ist, durch Identifizieren einer geraden globalen Zählung erfolgen. So können Auffrischoperationen implementiert werden, um die Integrität von in sowohl dem globalen als auch dem ersten lokalen Zähler gespeicherten Datenwerten zu bewahren, und Zählwerte können aus dem ersten lokalen Zähler gelesen werden.
  • Unter erneuter Bezugnahme auf Operation 704 kann, wenn bestimmt wird, dass der zweite lokale Zähler aktiv ist, das Verfahren 700 zu Operation 708 übergehen, bei der Adressen eines zweiten lokalen Zählers gelesen und aufgefrischt werden können. So können Auffrischoperationen implementiert werden, um die Integrität von in sowohl dem globalen als auch dem zweiten lokalen Zähler gespeicherten Datenwerten zu bewahren, und Zählwerte können aus dem zweiten lokalen Zähler gelesen werden.
  • Das Verfahren 700 kann zu Operation 710 übergehen, bei der aktuelle Werte von in dem lokalen Zähler enthaltenen Haupt- und Schattenzählers erhalten werden. Dementsprechend können bei Operation 710 die aktuellen Werte sowohl des Haupt- als auch des Schattenzählers des globalen Zählers identifiziert und abgerufen werden.
  • Das Verfahren 700 kann zu Operation 712 übergehen, bei der bestimmt werden kann, ob der aktuelle Wert des Hauptzählers mit dem aktuellen Wert des Schattenzählers des lokalen Zählers übereinstimmt. So können die aktuellen Werte des Haupt- und des Schattenzählers verglichen werden, um zu prüfen, ob sie übereinstimmen. Wird bestimmt, dass die Werte übereinstimmen, kann das Verfahren 700 zu Operation 714 übergehen, bei der ein Speicherort aktualisiert werden kann, und das Verfahren 700 kann enden. Wird jedoch bestimmt, dass die Werte nicht übereinstimmen, kann das Verfahren 700 zu Operation 716 übergehen.
  • Dementsprechend kann bei Operation 716 bestimmt werden, ob eine Differenz zwischen dem Haupt- und dem Schattenzähler eine zulässige Differenz ist. Beispielsweise kann bestimmt werden, ob ein aktueller Wert eines aktuellen Orts oder einer aktuellen Adresse des Hauptzählers um einen bestimmten Wert größer als ein aktueller Wert eines aktuellen Orts oder einer aktuellen Adresse des Schattenzählers ist. Insbesondere kann bestimmt werden, ob der aktuelle Wert des Hauptzählers um eins größer als der aktuelle Wert des Schattenzählers ist. Darüber hinaus kann der Wert eines aktuellen Orts eines Hauptzählers mit einem zusätzlichen Wert des Schattenzählers, beispielsweise der aktuelle Ort, inkrementiert um 2, verglichen werden, wie zuvor erörtert.
  • Wird bestimmt, dass der Wert des aktuellen Orts des Hauptzählers ungleich dem Wert des Schattenzählers an seinem aktuellen Ort, inkrementiert um einen bestimmten Wert, beispielsweise eins, ist, kann das Verfahren 700 zu Operation 718 übergehen, bei der eine schädliche Aktion oder ein Stromausfallereignis identifiziert werden kann. Darüber hinaus kann eine Benachrichtigungsnachricht erzeugt werden, die an eine andere Systemkomponente gesendet werden kann, um zu identifizieren, dass ein solches Ereignis aufgetreten ist, und das Verfahren 700 kann enden.
  • Unter erneuter Bezugnahme auf Operation 716 kann, wenn bestimmt wird, dass der Wert des aktuellen Orts des Hauptzählers ungleich dem Wert des Schattenzählers an seinem aktuellen Ort, inkrementiert um einen bestimmten Wert, beispielsweise eins, ist, das Verfahren 700 zu Operation 720 übergehen, bei der die letzte Adresse des Hauptzählers aufgefrischt werden kann und die nächste Adresse des Schattenzählers geschrieben werden kann. So können die in dem als der Schattenzähler implementierten Schattenzähler gespeicherten Datenwerte basierend auf den in dem Hauptzähler gespeicherten Datenwerten und auf eine Weise, die Daten nach einem Stromverlustereignis wiederherstellt, aktualisiert werden. Nach Abschluss von Operation 720 kann das Verfahren 700 zu Operation 712 zurückkehren, und der Haupt- und der Schattenzähler können verglichen werden und ein Speicherort kann aktualisiert werden, wie oben beschrieben.
  • 8 veranschaulicht ein Beispiel eines zusätzlichen Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können Leseoperationen implementiert werden, um eine Zählungszahl gemäß dem oben beschriebenen Schema zu erzeugen, sowie Schutz gegen Stromverlustereignisse, die während des Speicherns von Zählungsinformationen aufgetreten sein können, bereitzustellen. Wie nachstehend ausführlicher erörtert wird, können verschiedene Operationen als Reaktion auf eine Identifizierung des Vorliegens eines Stromverlustereignisses während einer Zählungsoperation implementiert werden. In verschiedenen Ausführungsformen kann ein Verfahren, beispielsweise ein Verfahren 800, implementiert werden, wenn identifiziert wird, dass sich eine Zählung eines globalen Zählers an einem Ereignisort befindet und auf Ebene des globalen Zählers kein Stromverlustereignis detektiert wird.
  • Dementsprechend kann das Verfahren 800 mit Operation 802 beginnen, bei der bestimmt werden kann, ob die globale Zählung an einem ungeraden Ort gespeichert ist. Dementsprechend kann, wie oben unter Bezugnahme auf 6 und 7 erörtert, ein aktueller Ort eines globalen Zählers identifiziert werden, und es kann bestimmt werden, ob der aktuelle Ort ein ungerader Ort oder ein gerader Ort ist. Eine solche Bestimmung kann basierend darauf vorgenommen werden, ob der Speicherort eine gerade oder eine ungerade Adresse aufweist. Somit kann, wenn die aktuelle Zählung an einem geraden Ort gespeichert ist, das Verfahren 800 zu zusätzlichen Operationen übergehen, die zuvor unter Bezugnahme auf 7 beschrieben wurden. Ist die aktuelle Zählung an einem ungeraden Ort gespeichert, kann das Verfahren 800 zu Operation 804 übergehen.
  • Dementsprechend kann bei Operation 804 bestimmt werden, ob die globale Zählung eine ungerade Zählung oder eine gerade Zählung ist. Wie oben erörtert, kann ein globaler Zähler Zählungsoperationen implementieren, bei denen zwei Speicherorte für jede Zählung verwendet werden. Dementsprechend können bei Operation 804 ein oder mehrere numerische Merkmale des aktuellen Orts des globalen Zählers verwendet werden, um zu identifizieren, ob die globale Zählung ungerade oder gerade ist. Wie oben erörtert, kann die Tatsache, ob eine Zählung ungerade oder gerade ist, dazu verwendet werden, zu identifizieren, welcher lokale Zähler aktiv ist.
  • Wird bestimmt, dass die globale Zählung eine ungerade Zählung ist, kann das Verfahren 800 zu Operation 806 übergehen, bei der bestimmt werden kann, ob EPLI-Bits eines ersten lokalen Zählers korrekt sind. Wie oben erörtert, können solche EPLI-Bits durch den ersten lokalen Zähler als Teil von Lese- und Schreiboperationen geführt werden und können dazu verwendet werden, zu identifizieren, ob eine Schreiboperation erfolgreich war oder nicht oder ein Problem wie ein Stromverlustereignis aufgetreten ist. Dementsprechend kann, wenn bestimmt wird, dass die EPLI-Bits korrekt sind, das Verfahren 800 zu Operation 808 übergehen, bei der eine Löschoperation für den ersten lokalen Zähler implementiert werden kann, um die Inhalte des ersten lokalen Zählers zu löschen. Wie oben gleichermaßen erörtert, kann eine Angabe, dass stattdessen eine Löschoperation erzeugt werden kann, falls angebracht. Wird bestimmt, dass die EPLI-Bits nicht korrekt sind, kann das Verfahren 800 zu Operation 810 übergehen, bei der bestimmt werden kann, ob der erste lokale Zähler leer ist. Sind in dem ersten lokalen Zähler keine Daten gespeichert und ist der erste lokale Zähler leer, kann das Verfahren 800 zu Operation 818 übergehen, die nachstehend ausführlicher beschrieben wird. Darüber hinaus kann, wenn bestimmt wird, dass der erste lokale Zähler nicht leer ist, das Verfahren 800 zu der oben erörterten Operation 908 übergehen, um eine geeignete Löschoperation zu implementieren.
  • Unter erneuter Bezugnahme auf Operation 804 kann, wenn bestimmt wird, dass die globale Zählung eine gerade Zählung ist, das Verfahren 800 zu Operation 812 übergehen, bei der bestimmt werden kann, ob EPLI-Bits eines zweiten lokalen Zählers korrekt sind. Wird bestimmt, dass die EPLI-Bits korrekt sind, kann das Verfahren 800 zu Operation 814 übergehen, bei der eine Löschoperation für den zweiten lokalen Zähler implementiert werden kann, um die Inhalte des zweiten lokalen Zählers zu löschen. Wie oben gleichermaßen erörtert, kann eine Angabe, dass stattdessen eine Löschoperation erzeugt werden kann, falls angebracht. Wird bestimmt, dass die EPLI-Bits nicht korrekt sind, kann das Verfahren 800 zu Operation 816 übergehen, bei der bestimmt werden kann, ob der zweite lokale Zähler leer ist. Wird bestimmt, dass der zweite lokale Zähler nicht leer ist, kann das Verfahren 800 zu der oben erörterten Operation 814 übergehen, um eine geeignete Löschoperation zu implementieren. Sind in dem zweiten lokalen Zähler keine Daten gespeichert und ist der zweite lokale Zähler leer, kann das Verfahren 800 zu Operation 818 übergehen.
  • Dementsprechend kann bei Operation 818 ein nachfolgender Ort in dem globalen Zähler programmiert werden. Wie oben erörtert, kann die erfolgreiche Programmierung des zweiten Orts des globalen Zählers das Programmieren eines zweiten Bits umfassen, das angibt, dass eine Löschung eines lokalen Zählers erfolgreich implementiert wurde, und der globale Zähler kann dementsprechend inkrementiert werden. Somit können bei Operation 818 durch den globalen Zähler gespeicherte Werte aktualisiert werden. Darüber hinaus kann ein nachfolgender Ort, bei dem es sich um ein Bit handeln kann, sowohl eines Haupt- als eines Schattenzählers aktualisiert werden. Nach dem Aktualisieren kann das Verfahren 800 zu zusätzlichen Leseoperationen, beispielsweise den oben unter Bezugnahme auf Operation 710 von 7 erörterten, übergehen.
  • 9 veranschaulicht ein Beispiel eines weiteren Schreiboperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können Schreiboperationen implementiert werden, um Werte, die in Zählern, beispielsweise einem globalen Zähler, gespeichert sind, zu aktualisieren. Wie nachstehend ausführlicher erörtert wird, können Schreiboperationen auf eine Weise implementiert werden, die einen Widerstand gegen Stromverlustereignisse bereitstellt.
  • Dementsprechend kann das Verfahren 900 mit Operation 902 beginnen, bei der bestimmt werden kann, ob ein lokaler Speichersektor voll ist. Wird bestimmt, dass ein lokaler Speichersektor nicht voll ist, kann das Verfahren 900 zu Operation 904 übergehen, bei der eine letzte Hauptadresse und eine letzte Schattenadresse eines Hauptzählers bzw. eines Schattenzählers eines globalen Zählers aufgefrischt und ein Hauptzähler und ein Schattenzähler eines lokalen Zählers programmiert werden können. So können Datenwerte aufgefrischt und ein lokaler Zähler inkrementiert werden. Wird bestimmt, dass der lokale Speichersektor voll ist, kann das Verfahren 900 zu Operation 906 übergehen.
  • Dementsprechend kann bei Operation 906 eine letzte lokale Hauptadresse aufgefrischt werden. Somit kann eine Auffrischoperation für die letzte Adresse eines ersten Zählers eines lokalen Zählers, beispielsweise eines oben unter Bezugnahme auf 5 beschriebenen Hauptzählers, implementiert werden. Darüber hinaus kann bei Operation 908 eine letzte lokale Schattenadresse aufgefrischt werden. Dementsprechend kann eine Auffrischoperation für die letzte Adresse eines zweiten Zählers des lokalen Zählers, beispielsweise eines ebenfalls oben unter Bezugnahme auf 5 beschriebenen Schattenzählers, implementiert werden. Des Weiteren kann bei Operation 910 eine letzte Adresse sowohl des Haupt- als auch des Schattenzählers des globalen Zählers aufgefrischt werden. Wie oben gleichermaßen erörtert, kann die Auffrischoperation die Integrität der in dem globalen Zähler gespeicherten Datenwerte bewahren.
  • Verfahren 900 kann zu Operation 912 übergehen, bei der ein erster Wert für den globalen Zähler programmiert werden kann. Wie oben erörtert, kann eine erste Programmieroperation implementiert werden, um einen ersten Wert zu programmieren, der den Beginn einer Löschung eines lokalen Zählers und die Implementierung einer Löschoperation identifiziert. Dementsprechend kann bei Operation 910 der erste Wert an einer Hauptadresse und einer entsprechenden Schattenadresse des globalen Zählers programmiert werden.
  • Das Verfahren 900 kann zu Operation 914 übergehen, bei der der mit dem lokalen Zähler assoziierte lokale Speichersektor gelöscht werden kann. Dementsprechend können eine oder mehrere Löschoperationen implementiert werden, um die Inhalte des lokalen Speichersektors zu löschen. Wie oben erörtert, kann stattdessen eine Benachrichtigung erzeugt werden, die dazu ausgelegt ist, die Löschoperation nach dem Verfahren 900 zu implementieren.
  • Das Verfahren 900 kann zu Operation 916 übergehen, bei der ein zweiter Wert für den globalen Zähler programmiert werden kann. Wie oben erörtert, kann eine zweite Programmieroperation implementiert werden, um einen zweiten Wert zu programmieren, der den Abschluss einer Löschung eines lokalen Zählers identifiziert. Dementsprechend kann bei Operation 916 der zweite Wert an einer Hauptadresse und einer entsprechenden Schattenadresse des globalen Zählers programmiert werden.
  • 10 veranschaulicht ein Beispiel eines weiteren Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können eine oder mehrere Leseoperationen implementiert werden, um Werte aus Zählern zu lesen und eine Zählungszahl zu bestimmen. Wie nachstehend ausführlicher erörtert wird, können verschiedene Schreiboperationen, beispielsweise Auffrisch-, Programmier- und Löschoperationen, selektiv implementiert und/oder verzögert werden, um verschiedenen Leistungsverhaltensaspekten einer Vorrichtung Rechnung zu tragen. Beispielsweise kann eine bestimmte Speichervorrichtung dazu ausgelegt sein, bestimmte Schreiboperationen separat von Leseoperationen zu implementieren, und dementsprechend können solche Schreiboperationen verzögert werden.
  • Dementsprechend kann das Verfahren 1000 mit Operation 1002 beginnen, bei der Werte aus einem globalen Zähler gelesen werden können. Wie oben gleichermaßen erörtert, können aktuelle Werte aus einem Haupt- und einem Schattenzähler eines globalen Zählers, beispielsweise einem Hauptzähler und einem Schattenzähler, die in dem globalen Zähler implementiert sind, gelesen werden. Wie ebenfalls oben gleichermaßen erörtert, kann der globale Zähler mit lokalen Zählern implementiert sein und kann zwischen lokalen Zählern zyklieren, sodass ein bestimmter lokaler Zähler ein aktiver Zähler ist und die anderen nichtaktive lokale Zähler sind.
  • Das Verfahren 1000 kann zu Operation 1004 übergehen, bei der bestimmt werden kann, ob Werte eines Haupt- und eines Schattenzählers des globalen Zählers übereinstimmen. Dementsprechend können die aus dem Haupt- und dem Schattenzähler gelesenen Werte verglichen werden, und es kann bestimmt werden, ob sie gleich sind und übereinstimmen. Wird bestimmt, dass die Werte übereinstimmen, kann das Verfahren 1000 enden und es können zusätzliche Leseoperationen implementiert werden, wie nachstehend unter Bezugnahme auf Verfahren 1100 erörtert.
  • Wird jedoch bestimmt, dass die Werte nicht übereinstimmen, kann das Verfahren 1000 zu Operation 1006 übergehen, bei der bestimmt werden kann, ob die Differenz zwischen den Werten eine zulässige Differenz ist. Beispielsweise kann bestimmt werden, ob ein aktueller Wert eines aktuellen Orts oder einer aktuellen Adresse des Hauptzählers um einen bestimmten Wert, beispielsweise eins, größer als ein aktueller Wert eines aktuellen Orts oder einer aktuellen Adresse des Schattenzählers ist und es sich um eine reparable Differenz handelt. Wird bestimmt, dass die Differenz keine zulässige Differenz ist, kann das Verfahren 1000 zu Operation 1008 übergehen, während der ein schädliches Ereignis identifiziert werden kann. In einem Beispiel kann dies bestimmt werden, wenn der Wert des Hauptzählers nicht gleich dem Wert des Schattenzählers an der aktuellen Adresse, inkrementiert um eins, ist.
  • Wird bestimmt, dass die Differenz eine zulässige Differenz ist, kann das Verfahren 1000 zu Operation 1010 übergehen. Wie oben erörtert, kann dies bestimmt werden, wenn der Wert des aktuellen Orts des Hauptzählers nicht gleich dem Wert des Schattenzählers an seinem aktuellen Ort, inkrementiert um einen bestimmten Wert, beispielsweise eins, ist. Dementsprechend kann bei Operation 1010 ein Wert für ein Flag gesetzt werden, das angibt, dass zusätzliche Operationen zu späterer Zeit implementiert werden sollten. Beispielsweise kann das Flag angeben, dass zu späterer und geeigneter Zeit eine letzte Adresse des Hauptzählers aufgefrischt werden sollte und eine nächste Adresse des Schattenzählers geschrieben werden sollte. Beispielsweise können die Auffrisch- und Schreiboperationen während eines nachfolgenden Aktualisierungsbefehlszyklus implementiert werden. Nach Setzen des Flags kann das Verfahren zu zusätzlichen Leseoperationen übergehen, die nachstehend unter Bezugnahme auf 11 ausführlicher erörtert werden.
  • 11 veranschaulicht ein Beispiel noch eines weiteren Leseoperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben gleichermaßen erörtert, können Leseoperationen implementiert werden, um Werte aus Zählern zu lesen und eine Zählungszahl zu bestimmen. Wie nachstehend ausführlicher erörtert wird, können verschiedene Operationen selektiv implementiert und/oder verzögert werden, um verschiedenen Leistungsverhaltensaspekten einer Vorrichtung Rechnung zu tragen. Dementsprechend können zusätzliche Leseoperationen implementiert werden, und andere Operationen können selektiv verzögert werden.
  • Das Verfahren 1100 kann mit Operation 1102 beginnen, bei der eine globale Zählung und ein aktiver lokaler Zähler identifiziert werden können. In verschiedenen Ausführungsformen können eine solche globale Zählung und ein solcher aktiver lokaler Zähler basierend auf den während des oben beschriebenen Verfahrens 1000 gelesenen Werten identifiziert werden. Insbesondere können die globale Zählung und der aktive lokale Zähler basierend auf den aus dem globalen Zähler gelesenen Werten identifiziert werden.
  • Das Verfahren 1100 kann zu Operation 1104 übergehen, bei der bestimmt werden kann, ob EPLI-Informationen für den aktiven lokalen Zähler korrekt sind. Wie oben gleichermaßen erörtert, kann ein aktiver lokaler Zähler identifiziert werden, und mit einer aktuellsten Programmoperation assoziierte EPLI-Informationen können verifiziert werden. Wird bestimmt, dass die EPLI-Informationen nicht korrekt sind, kann das Verfahren 1100 zu Operation 1106 übergehen, bei der ein schädliches Ereignis oder ein Stromverlustereignis identifiziert werden kann und eine Fehlerbenachrichtigungsnachricht erzeugt werden kann. Wird jedoch bestimmt, dass die EPLI-Informationen korrekt sind, kann das Verfahren 1100 zu Operation 1108 übergehen, bei der Werte aus dem lokalen Zähler gelesen werden können. Dementsprechend können Werte aus einem Haupt- und einem Schattenzähler des lokalen Zählers gelesen werden.
  • Das Verfahren 1100 kann zu Operation 1110 übergehen, bei der bestimmt werden kann, ob Werte des Haupt- und des Schattenzählers des lokalen Zählers übereinstimmen. Wird bestimmt, dass die Werte des Haupt- und des Schattenzählers des lokalen Zählers nicht übereinstimmen, kann das Verfahren 1100 zu Operation 1112 übergehen, bei der bestimmt werden kann, ob die Differenz zwischen dem Haupt- und dem Schattenzähler eine zulässige Differenz ist und eine Differenz ist, die repariert werden kann. Eine solche Bestimmung kann erfolgen, indem bestimmt wird, ob der Wert des Hauptzählers gleich einem Wert des Schattenzählers an einer aktuellen Adresse, inkrementiert um 1, ist.
  • Wird bestimmt, dass die Differenz keine zulässige Differenz ist, kann das Verfahren 1100 zu Operation 1106 übergehen, bei der ein schädliches Ereignis identifiziert werden kann. Beispielsweise kann die Differenz als eine Differenz identifiziert werden, die nicht repariert werden kann und keine zulässige Differenz ist, wenn der Wert des Hauptzählers nicht gleich dem Wert des Schattenzählers an einer aktuellen Adresse, inkrementiert um 1, ist. In einer solchen Situation kann ein schädliches Ereignis identifiziert werden, und eine Benachrichtigungsnachricht kann erzeugt werden.
  • Wird bestimmt, dass die Differenz eine zulässige Differenz ist, kann das Verfahren 1100 zu Operation 1114 übergehen, bei der ein Flag gesetzt werden kann. Beispielsweise kann die Differenz als eine Differenz identifiziert werden, die repariert werden kann und eine zulässige Differenz ist, wenn der Wert des Hauptzählers gleich dem Wert des Schattenzählers an einer aktuellen Adresse, inkrementiert um 1, ist. In einer solchen Situation kann ein Flag gesetzt werden, das angibt, dass die letzte lokale Hauptadresse aufgefrischt werden sollte und eine nächste lokale Schattenadresse geschrieben werden sollte. Wie oben gleichermaßen erörtert, ist das Flag dazu ausgelegt, die Implementierung der Auffrisch- und Schreiboperationen zu verzögern.
  • Unter erneuter Bezugnahme auf Operation 1110, kann, wenn bestimmt wird, dass Werte des Haupt- und des Schattenzählers übereinstimmen, das Verfahren 1100 zu Operation 1116 übergehen, bei der ein Flag gesetzt werden kann. In verschiedenen Ausführungsformen gibt das Flag an, dass eine letzte lokale Schattenadresse zu späterer Zeit aufgefrischt werden sollte. Es sei angemerkt, dass, falls ein Sektor leer ist, diese Auffrischung relevant ist.
  • Das Verfahren 1100 kann zu Operation 1118 übergehen, bei der bestimmt werden kann, ob der aktive lokale Zähler leer ist. Eine solche Bestimmung kann basierend auf den zuvor aus dem aktiven lokalen Zähler gelesenen Werten sowie bekannten Aspekten solcher Werte, beispielsweise einem Ort oder einer Adresse, erfolgen. Wird bestimmt, dass der aktive lokale Zähler nicht leer ist, kann das Verfahren 1100 zu Operation 1122 übergehen, die nachstehend ausführlicher erörtert wird.
  • Unter erneuter Bezugnahme auf Operation 1118 kann, wenn bestimmt wird, dass der aktive lokale Zähler leer ist, das Verfahren 1100 zu Operation 1120 übergehen, bei der ein Flag gesetzt werden kann, das angibt, dass eine letzte globale Schattenadresse zu späterer Zeit aufgefrischt werden sollte, und das Verfahren 1100 kann dann zu Operation 1122 übergehen, bei der ein nichtaktiver lokaler Zähler identifiziert werden kann. Wie oben erörtert, kann es mehrere lokale Zähler geben, beispielsweise einen ersten lokalen Zähler und einen zweiten lokalen Zähler, und bei Operation 1122 kann ein zusätzlicher lokaler Zähler identifiziert werden, der aktuell nicht aktiv ist und für eine Zählungsoperation verwendet wird.
  • Nach Operation 1122 kann das Verfahren 1100 zu Operation 1124 übergehen, bei der bestimmt werden kann, ob der nichtaktive lokale Zähler leer ist und ob die EPLI-Informationen korrekt sind. Wie oben gleichermaßen erörtert, kann eine solche Bestimmung basierend auf den zuvor gelesenen Zählerwerten sowie in den Zählern gespeicherten EPLI-Informationen erfolgen.
  • Wird bestimmt, dass der Zähler nicht leer ist oder keine korrekten EPLI-Informationen aufweist, kann das Verfahren 1100 zu Operation 1126 übergehen, bei der ein Benutzerwartungsflag gesetzt werden kann, das angibt, dass der nichtaktive lokale Zähler gelöscht werden sollte. Darüber hinaus kann eine Zähleraktualisierung unterbunden werden, solange keine solche Benutzerwartungsoperation durchgeführt wird.
  • Unter erneuter Bezugnahme auf Operation 1122 kann, wenn bestimmt wird, dass der Zähler leer ist und die korrekten EPLI-Informationen aufweist, das Verfahren 1100 zu Operation 1128 übergehen, bei der ein Speicherort aktualisiert werden kann. Wie oben gleichermaßen erörtert, kann der Speicherort ein SRAM-Ort sein. So kann eine Zählung gelesen und für die Speichervorrichtung bereitgestellt werden.
  • 12 ist ein Beispiel eines weiteren Schreiboperationsverfahrens, implementiert gemäß einigen Ausführungsformen. Wie oben erörtert, können Schreiboperationen implementiert werden, um in Zählern, beispielsweise einem globalen Zähler, gespeicherte Werte zu aktualisieren. Wie nachstehend ausführlicher erörtert wird, können Schreiboperationen auf eine Weise implementiert werden, die einen Widerstand gegen Stromverlustereignisse bereitstellt. Wie nachstehend ausführlicher erörtert wird, können verschiedene Operationen, beispielsweise Löschoperationen, selektiv implementiert und/oder verzögert werden, um verschiedenen Leistungsverhaltensaspekten einer Vorrichtung Rechnung zu tragen.
  • Das Verfahren 1200 kann mit Operation 1202 beginnen, bei der Zählerwerte gelesen werden können und Wartungsoperationen implementiert werden können. Wie oben gleichermaßen erörtert, können aktuelle Werte aus lokalen Zählern gelesen werden, und Programmier- und/oder Auffrischoperationen können implementiert werden, falls angebracht. So können aktuelle Informationen über lokale Zähler abgerufen werden, und die Datenintegrität kann bewahrt werden.
  • das Verfahren 1200 kann zu Operation 1204 übergehen, bei der bestimmt werden kann, ob ein aktiver lokaler Zähler voll ist. In verschiedenen Ausführungsformen kann ein aktiver lokaler Zähler ein lokaler Zähler sein, der aktuell für eine Zählungsoperation verwendet wird, und ein nichtaktiver lokaler Zähler kann ein lokaler Zähler sein, der nicht verwendet wird. Dementsprechend kann es verschiedene lokale Zähler geben, beispielsweise einen ersten lokalen Zähler und ein zweiten lokalen Zähler, die oben erörtert werden, und sie können alternativ ausgewählt werden, um zwischen einem aktiven Zustand und einem nichtaktiven Zustand zykliert zu werden. In verschiedenen Ausführungsformen kann eine solche Bestimmung basierend auf während Operation 1202 abgerufenen Werten erfolgen. Dementsprechend kann, wenn bestimmt wird, dass ein aktiver lokaler Zähler nicht voll ist, das Verfahren 1200 zu Operation 1206 übergehen, bei der ein Hauptzähler des lokalen Zählers programmiert werden kann und ein Schattenzähler des lokalen Zählers ebenfalls programmiert werden kann. Unter erneuter Bezugnahme auf Operation 1204 kann, wenn bestimmt wird, dass ein aktiver lokaler Zähler voll ist, das Verfahren 1200 zu Operation 1208 übergehen, bei der bestimmt werden kann, ob ein nichtaktiver lokaler Zähler gelöscht worden ist und korrekte EPLI-Informationen aufweist.
  • Wird bestimmt, dass der nichtaktive lokale Zähler gelöscht wurde und korrekte EPLI-Informationen aufweist, kann das Verfahren 1200 zu Operation 1210 übergehen, bei der ein globaler Zähler programmiert werden kann, ein Flag gesetzt werden kann, das angibt, dass eine Benutzerwartung implementiert werden sollte und dass ein neuer nichtaktiver lokaler Zähler (der Zähler, der zuvor aktiv war) gelöscht werden kann. So kann ein Flag für Benutzerwartungsoperationen gesetzt werden, und solche Benutzerwartungsoperationen können verzögert und nachfolgend zu geeigneter Zeit implementiert werden.
  • Unter erneuter Bezugnahme auf Operation 1208 kann, wenn bestimmt wird, dass der nichtaktive lokale Zähler nicht gelöscht wurde und korrekte EPLI-Informationen aufweist, das Verfahren 1200 zu Operation 1212 übergehen, während der eine Fehlerbenachrichtigung erzeugt werden kann, und eine Zähleraktualisierung kann vor der Anwendung der Benutzerwartungsoperationen unterbunden werden. Das Verfahren 1200 kann anschließend enden.
  • 13 veranschaulicht ein Beispiel eines Speichersystems, das eine Speichervorrichtung umfassen kann, konfiguriert gemäß einigen Ausführungsformen. Gemäß bestimmten Ausführungsbeispielen kann das System 1300 zum Implementieren verschiedener oben beschriebener Komponenten, beispielsweise der Speichervorrichtung 100 sowie des monotonen Zählers, die oben beschrieben werden, geeignet sein. In verschiedenen Ausführungsformen kann das System 1300 einen Prozessor 1301 umfassen, der dazu ausgelegt sein kann, eine oder mehrere Verarbeitungsoperationen zu implementieren. Beispielsweise kann der Prozessor 1301 dazu ausgelegt sein, mit einem Speicherarray 132 assoziierte Lese- und Schreiboperationen zu implementieren. Das System 1300 kann außerdem einen Bus 1315 umfassen, der dazu ausgelegt sein kann, eine Kommunikation zwischen verschiedenen Komponenten des Systems 1300 zu ermöglichen.
  • In verschiedenen Ausführungsformen kann das System 1300 ferner das Speicherarray 132 und eine Steuerschaltungsanordnung 128 umfassen, die dazu ausgelegt sein können, die oben erörterten monotonen Zähler zu implementieren. In verschiedenen Ausführungsformen kann die Steuerschaltungsanordnung 128 einen oder mehrere Prozessoren und dedizierten Speicher umfassen, die dazu ausgelegt sein können, die zuvor beschriebenen Zählungsinkrementierungen sowie Lese- und Schreiboperationen zu implementieren. So kann das System 1300 eine dedizierte Verarbeitungseinheit, beispielsweise die Steuerschaltungsanordnung 128, aufweisen, die dazu ausgelegt sein kann, die zuvor beschriebenen Zählungsinkrementierungen sowie Lese- und Schreiboperationen zu implementieren. Darüber hinaus kann die Steuerschaltungsanordnung 128 in einigen Ausführungsformen in einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert sein oder kann in einer umprogrammierbaren Logik eines feldprogrammierbaren Gate-Arrays implementiert sein. In einigen Ausführungsformen kann die Steuerschaltungsanordnung 128 in einem programmierbaren System oder einer programmierbaren Steuerung implementiert sein, das bzw. die ferner einen nichtflüchtigen Speicher umfasst, beispielsweise ein Programmable-System-On-a-Chip- bzw. PSoC™-Steuerung, im Handel erhältlich von Cypress Semiconductor, San Jose, Kalifornien. In verschiedenen Ausführungsformen können eine oder mehrere Komponenten des Systems 1300 auf demselben Schaltungs-Die und in demselben Package implementiert sein. Beispielsweise können die Steuerschaltungsanordnung 128 und der Speicher 132 auf demselben Schaltungs-Die implementiert sein. In einigen Ausführungsformen können sie auf unterschiedlichen Dies und in unterschiedlichen Packages implementiert sein.
  • In verschiedenen Ausführungsformen kann eine Kommunikationsschnittstelle 1311 dazu ausgelegt sein, Daten an andere Systemkomponenten zu senden und zu empfangen, oder kann dazu ausgelegt sein, Pakete oder Datensegmente über ein Netzwerk zu senden und zu empfangen. Beispielsweise kann die Kommunikationsschnittstelle 1311 über einen Bus, beispielsweise einen Bus 1315, oder über ein Kommunikationsnetzwerk kommunikativ mit einer Benutzeroberflächenvorrichtung gekoppelt sein. Wie oben erörtert, kann die Kommunikationsschnittstelle 1311 dazu ausgelegt sein, Daten von einer solchen Benutzeroberflächenvorrichtung, die in einem Datenverarbeitungssystem oder einem Computersystem enthalten sein kann, zu empfangen. In verschiedenen Ausführungsformen können solche Daten eine Eingabe umfassen, die Wear-Leveling-Parameter identifiziert. In verschiedenen Ausführungsformen kann die Kommunikationsschnittstelle 1311 eine Vorrichtung sein, die Ethernet-Schnittstellen, Frame-Relay-Schnittstellen, Kabelschnittstellen und DSL-Schnittstellen unterstützt. Darüber hinaus können verschiedene Schnittstellen mit sehr hoher Geschwindigkeit bereitgestellt werden, wie etwa schnelle Ethernet-Schnittstellen, Gigabit-Ethernet-Schnittstellen, HSSI-Schnittstellen, POS-Schnittstellen, FDDI-Schnittstellen und dergleichen. Allgemein können diese Schnittstellen Ports umfassen, die zur Kommunikation mit den entsprechenden Medien geeignet sind. In einigen Fällen können sie außerdem einen unabhängigen Prozessor und, in einigen Beispielen, flüchtigen RAM umfassen.
  • Obgleich die obigen Konzepte der Klarheit des Verständnisses halber in gewissem Detailgrad beschrieben wurden, versteht es sich, dass gewisse Änderungen und Modifikationen innerhalb des Schutzumfangs der beigefügten Ansprüche vorgenommen werden können. Es sei angemerkt, dass es viele alternative Weisen zum Implementieren der Prozesse, Systeme und Vorrichtungen gibt. Dementsprechend sind die vorliegenden Beispiele als veranschaulichend und nicht als einschränkend anzusehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/906892 [0001]
    • US 62/964384 [0001]

Claims (20)

  1. System, das Folgendes umfasst: - eine nichtflüchtige Speichervorrichtung, die Folgendes umfasst: - einen ersten Zähler, eingerichtet zum Speichern erster mehrerer Datenwerte, die mehrere Zählungsoperationen repräsentieren; - einen zweiten Zähler, eingerichtet zum Speichern zweiter mehrerer Datenwerte, die eine Anzahl von auf den ersten Zähler angewendeten Löschoperationen repräsentieren; und - eine Steuerschaltungsanordnung, die eingerichtet ist zum - Implementieren von Lese-, Schreib- und Löschoperationen für den ersten Zähler und den zweiten Zähler; - Bestimmen eines Teilzählwerts zumindest teilweise basierend auf einem aktuellen Wert des zweiten Zählers und mindestens einem physischen Parameter des ersten Zählers; und - Erzeugen eines Zählwerts durch Addieren des Teilzählwerts mit einem aktuellen Wert des ersten Zählers.
  2. System nach Anspruch 1, bei dem die nichtflüchtige Speichervorrichtung eine Flash-Speichervorrichtung ist.
  3. System nach Anspruch 2, bei dem der mindestens eine physische Parameter eine Größe eines zum Implementieren des ersten Zählers ausgelegten Speichersektors umfasst.
  4. System nach Anspruch 1, bei dem die Steuerschaltungsanordnung ferner eingerichtet ist zum - Implementieren einer Löschoperation für den ersten Zähler als Reaktion darauf, dass der erste Zähler voll wird.
  5. System nach Anspruch 4, bei dem der zweite Zähler eingerichtet ist zum - Speichern eines ersten Werts, wenn die Löschoperation initiiert wird; und - Speichern eines zweiten Werts, wenn die Löschoperation abgeschlossen ist.
  6. System nach Anspruch 5, bei dem die Steuerschaltungsanordnung ferner eingerichtet ist zum - Identifizieren eines schädlichen Ereignisses oder eines Stromverlustereignisses zumindest teilweise basierend auf dem ersten Wert und dem zweiten Wert.
  7. System nach Anspruch 1, bei dem die Steuerschaltungsanordnung ferner eingerichtet ist zum - Identifizieren eines schädlichen Ereignisses oder eines Stromverlustereignisses zumindest teilweise basierend auf mit dem ersten Zähler assoziierten Löschstromverlustangabe(EPLI)-Bits.
  8. System nach Anspruch 1, das ferner Folgendes umfasst: - einen dritten Zähler, eingerichtet zum Speichern dritter mehrerer Datenwerte, die zusätzliche mehrere Zählungsoperationen repräsentieren, wobei der erste Zähler und der dritte Zähler lokale Zähler sind und wobei der zweite Zähler ein globaler Zähler ist, eingerichtet zum Zählen von auf den ersten Zähler und den dritten Zähler angewendeten Löschoperationen.
  9. System nach Anspruch 1, bei dem der zweite Zähler einen Hauptzähler umfasst, eingerichtet zum Speichern der zweiten mehreren Datenwerte, und wobei der zweite Zähler ferner einen Schattenzähler umfasst, eingerichtet zum Spiegeln des Hauptzählers.
  10. Verfahren, das Folgendes umfasst: - Speichern, in einem ersten Zähler, erster mehrerer Datenwerte, die mehrere Zählungsoperationen repräsentieren; - Speichern, in einem zweiten Zähler, zweiter mehrerer Datenwerte, die eine Anzahl von auf den ersten Zähler angewendeten Löschoperationen repräsentieren; - Bestimmen, basierend auf den ersten mehreren Datenwerten und den zweiten mehreren Datenwerten, ob ein schädliches Ereignis oder ein Stromausfallereignis aufgetreten ist; - Bestimmen, unter Verwendung eines oder mehrerer Prozessoren, eines Teilzählwerts zumindest teilweise basierend auf einem aktuellen Wert des zweiten Zählers und mindestens einem physischen Parameter des ersten Zählers; und - Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Zählwerts durch Addieren des Teilzählwerts mit einem aktuellen Wert des ersten Zählers.
  11. Verfahren nach Anspruch 10, das ferner Folgendes umfasst: - Anwenden, unter Verwendung einer Steuerschaltungsanordnung, einer Löschoperation auf den ersten Zähler als Reaktion darauf, dass bestimmt wird, dass der erste Zähler voll ist.
  12. Verfahren nach Anspruch 11, das ferner Folgendes umfasst: - Speichern eines ersten Werts, wenn die Löschoperation initiiert wird; und - Speichern eines zweiten Werts, wenn die Löschoperation abgeschlossen ist.
  13. Verfahren nach Anspruch 12, bei dem das Bestimmen des schädlichen Ereignisses oder des Stromverlustereignisses zumindest teilweise auf dem ersten Wert und dem zweiten Wert basiert.
  14. Verfahren nach Anspruch 10, bei dem der mindestens eine physische Parameter eine Größe eines zum Implementieren des ersten Zählers ausgelegten Speichersektors umfasst.
  15. Verfahren nach Anspruch 14, bei dem der mindestens eine physische Parameter ferner eine Anzahl von mit dem Speichersektor assoziierten Wortleitungen umfasst.
  16. Vorrichtung, die Folgendes umfasst: - ein nichtflüchtiges Speicherarray, das Folgendes umfasst: - einen ersten Speichersektor, eingerichtet zum Implementieren eines ersten Zählers, wobei der erste Zähler eingerichtet ist zum Speichern erster mehrerer Datenwerte, die mehrere Zählungsoperationen repräsentieren; - einen zweiten Speichersektor, eingerichtet zum Implementieren eines zweiten Zählers, wobei der zweite Zähler eingerichtet ist zum Speichern zweiter mehrerer Datenwerte, die eine Anzahl von auf den ersten Zähler angewendeten Löschoperationen repräsentieren; und - einen oder mehrere Prozessoren, die eingerichtet sind zum - Implementieren von Lese-, Schreib- und Löschoperationen für den ersten Zähler und den zweiten Zähler; - Bestimmen eines Teilzählwerts zumindest teilweise basierend auf einem aktuellen Wert des zweiten Zählers und mindestens einem physischen Parameter des ersten Zählers; und - Erzeugen eines Zählwerts durch Addieren des Teilzählwerts mit einem aktuellen Wert des ersten Zählers.
  17. Vorrichtung nach Anspruch 16, bei der das nichtflüchtige Speicherarray ein Flash-Speicherarray ist.
  18. Vorrichtung nach Anspruch 16, bei der der zweite Zähler eingerichtet ist zum - Speichern eines ersten Werts, wenn die Löschoperation initiiert wird; und - Speichern eines zweiten Werts, wenn die Löschoperation abgeschlossen ist.
  19. Vorrichtung nach Anspruch 18, bei der der eine oder die mehreren Prozessoren ferner eingerichtet sind zum - Identifizieren eines schädlichen Ereignisses oder eines Stromverlustereignisses zumindest teilweise basierend auf dem ersten Wert und zweiten Wert.
  20. Vorrichtung nach Anspruch 16, bei dem der zweite Zähler einen Hauptzähler umfasst, eingerichtet zum Speichern der zweiten mehreren Datenwerte, und wobei der zweite Zähler ferner einen Schattenzähler umfasst, eingerichtet zum Spiegeln des Hauptzählers.
DE112021000637.1T 2020-01-22 2021-01-22 Kontinuierlicher monotoner zähler für speichervorrichtungen Pending DE112021000637T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202062964384P 2020-01-22 2020-01-22
US62/964,384 2020-01-22
US16/906,892 2020-06-19
US16/906,892 US11567691B2 (en) 2020-01-22 2020-06-19 Continuous monotonic counter for memory devices
PCT/US2021/014494 WO2021150805A1 (en) 2020-01-22 2021-01-22 Continuous monotonic counter for memory devices

Publications (1)

Publication Number Publication Date
DE112021000637T5 true DE112021000637T5 (de) 2022-11-03

Family

ID=76857021

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021000637.1T Pending DE112021000637T5 (de) 2020-01-22 2021-01-22 Kontinuierlicher monotoner zähler für speichervorrichtungen

Country Status (4)

Country Link
US (2) US11567691B2 (de)
CN (1) CN115039343A (de)
DE (1) DE112021000637T5 (de)
WO (1) WO2021150805A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11935603B2 (en) * 2021-11-04 2024-03-19 Infineon Technologies LLC Erase power loss indicator (EPLI) implementation in flash memory device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687325B1 (en) * 1999-06-23 2004-02-03 Intel Corporation Counter with non-uniform digit base
US6836853B1 (en) * 1999-12-31 2004-12-28 Intel Corporation Non-volatile memory based monotonic counter
US7058839B2 (en) * 2002-04-11 2006-06-06 International Business Machines Corporation Cached-counter arrangement in which off-chip counters are updated from on-chip counters
US6792065B2 (en) * 2003-01-21 2004-09-14 Atmel Corporation Method for counting beyond endurance limitations of non-volatile memories
US7369432B2 (en) * 2006-02-16 2008-05-06 Standard Microsystems Corporation Method for implementing a counter in a memory with increased memory efficiency
US8195973B2 (en) * 2008-04-14 2012-06-05 Dell Products, Lp Method to implement a monotonic counter with reduced flash part wear
US8189732B1 (en) * 2010-11-17 2012-05-29 Atmel Corporation Non-volatile memory counter
EP2713519A1 (de) * 2012-09-27 2014-04-02 Nxp B.V. Elektronischer Zähler in einem nichtflüchtigen Speicher mit begrenzter Ausdauer
US9378829B2 (en) * 2013-02-07 2016-06-28 Cypress Semiconductor Corporation Non-volatile memory device with an EPLI comparator
US9929970B1 (en) * 2015-12-03 2018-03-27 Innovium, Inc. Efficient resource tracking
US11056192B2 (en) * 2018-12-21 2021-07-06 Micron Technology, Inc. Monotonic counters in memories

Also Published As

Publication number Publication date
CN115039343A (zh) 2022-09-09
US20230244409A1 (en) 2023-08-03
US20210223983A1 (en) 2021-07-22
US11567691B2 (en) 2023-01-31
WO2021150805A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
DE102013222321B4 (de) Elektronisches Gerät mit einer Vielzahl von Speicherzellen und mit physikalisch unklonbarer Funktion
DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE2619159C2 (de) Fehlererkennungs- und Korrektureinrichtung
EP0038947B1 (de) Programmierbare logische Anordnung
DE112012002843B4 (de) Anpassungsfähige Mehrbit-Fehlerkorrektur in Speichern mit begrenzter Lebensdauer
DE102006036070B4 (de) Ladungsfallenspeichervorrichtung und Verfahren für deren Herstellung und Betrieb
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE3209679C2 (de)
DE102013016681B4 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE102018124836A1 (de) Neuartiger speicherbaustein
DE112004001843T5 (de) System und Verfahren zum automatischen Erkennen von Softfehlern in Latches einer integrierten Schaltung
DE102020106006A1 (de) Partieller xor-schutz
DE102012102080B4 (de) Speicherschaltung, integrierte Schaltung und Verfahren mit Fehlerkorrekturen
DE112021000637T5 (de) Kontinuierlicher monotoner zähler für speichervorrichtungen
DE102019116097A1 (de) Vorprogramm-lesevorgang zur behebung von wortleitungsfehlern
DE102017124313B4 (de) Speicheranordnung und verfahren zum verifizieren eines speicherzugriffs
DE112020005001T5 (de) Qlc-programmierverfahren mit zurückspeichern von feindaten
DE69627595T2 (de) Halbleiterspeicher und Verfahren zum Ersetzen einer redundanten Speicherzelle
DE102016123689B4 (de) Speicherschaltung und Verfahren zum Betreiben einer Speicherschaltung
DE102022112485A1 (de) Fehlerkorrekturcodesystem mit erweiterten erkennungsfunktionen
EP1625592B1 (de) Vorrichtung und verfahren zum behandeln eines zustands eines speichers
DE112019005361T5 (de) Protokollierung von verzögerten schreibfehlern

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)