DE102010030745B4 - Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen - Google Patents
Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen Download PDFInfo
- Publication number
- DE102010030745B4 DE102010030745B4 DE102010030745.9A DE102010030745A DE102010030745B4 DE 102010030745 B4 DE102010030745 B4 DE 102010030745B4 DE 102010030745 A DE102010030745 A DE 102010030745A DE 102010030745 B4 DE102010030745 B4 DE 102010030745B4
- Authority
- DE
- Germany
- Prior art keywords
- memory
- read
- error
- address
- cam
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Read Only Memory (AREA)
Abstract
Description
- STAND DER TECHNIK
- Technisches Gebiet:
- Das hier Offenbarte betrifft das Umabbilden von Speichereinheiten.
- Informationen:
- Speichereinheiten werden in vielen Arten von elektronischen Geräten verwendet, wie zum Beispiel in Computern, Mobiltelefonen, PDA, Datenprotokollierern und Navigationsgeräten, um nur einige wenige Beispiele zu nennen. Bei solchen elektronischen Geräten können verschiedene Arten von nichtflüchtigen Speichereinheiten verwendet werden, wie zum Beispiel NAND- oder NOR-Flash-Speicher, SRAM-, DRAM- und Phasenänderungsspeicher, um nur einige wenige Beispiele zu nennen. Im allgemeinen können Schreib- oder Programmierprozesse verwendet werden, um Informationen in solchen Speichereinheiten zu speichern, während ein Leseprozeß verwendet werden kann, um gespeicherte Informationen abzurufen.
- Solche nichtflüchtigen Speichereinheiten können Speicherzellen umfassen, die sich mit der Zeit langsam verschlechtern, so daß eine zunehmende Wahrscheinlichkeit entsteht, daß beim Zugreifen auf eine solche Speicherzelle ein Lese- und/oder Schreibfehler auftreten kann. Fehler können sich auch aus Herstellungsdefekten und/oder Randwertkonstruktionen einer Speichereinheit ergeben, um nur einige wenige Beispiele zu nennen. Obwohl solche Fehler später zum Beispiel in einer Speichereinheit korrigiert werden können, kann eine solche Fehlerkorrektur mit zunehmender Anzahl von Fehlern schwierig oder unmöglich werden.
- In der
US 6,236,602 B1 ist ein rekonfigurierbarer Speicher, der einen Controller40 , einen Spalten-CAM42 , einen Reihen-CAM43 und einen Bit-CAM60 beinhaltet, beschrieben. Der Controller verwendet ein Fehlerkorrekturschema, um Fehler in dem Spalten-CAM und Reihen-CAM zu detektieren und schreibt die in den fehlerhaften Spalten und Reihen abgespeicherten Daten in freigehaltene und ungenutzte Reihen und Spalten um. Allerdings wird die neue Adresse der gespeicherten Daten nicht zusätzlich abgespeichert, so dass sie möglicherweise verloren gehen kann und dann die Daten nicht mehr auffindbar sind. - Der Erfindung liegt daher die Aufgabe zugrunde, eine Lösung zu schaffen, die ein fehlerfreies Abspeichern von Daten in nichtflüchtigen Speichermedien, die aufgrund ihrer physikalischen Beschaffenheiten einem natürlichen Alterungsprozess ausgesetzt sind, zu ermöglichen. Es soll vermieden werden, dass beim Zugreifen auf Speicherzellen von nichtflüchtigen Speichermedien Lese- und/oder Schreibfehler auftreten.
- Bei einem Verfahren zum Ausführen eines Lese-/Schreibprozesses zum Lesen aus oder Schreiben in einen Teil einer Speicherzelle wird diese Aufgabe erfindungsgemäß dadurch gelöst, dass durch eine Lese-/Schreibadresse eine Speicherstelle identifiziert wird, aus der gespeicherte Daten zu lesen sind oder in die sie zu schreiben sind, wobei eine Anzahl von Fehlerbits, die bei dem Lese-/schreibprozess an der Speicherstelle auftreten, als eine Bitfehlerrate ausgedrückt wird, die ein Verhältnis der Anzahl der Fehlerbits zu der Gesamtzahl gelesener Bits umfasst, wobei die Anzahl der Fehlerbits durch eine Fehlerdetektionskomponente, die aus dem Speicher gelesene Daten auf Fehler prüfen kann, bestimmt wird, wobei, wenn die Anzahl der Fehlerbits über einem Fehlerschwellenwert liegt, ein Zurückziehen des Teils des Speichers, der zu zu vielen Fehlern führt, begonnen wird, und wobei anfänglich in dem Teil des Speichers, wo ein Fehler aufgetreten ist, gespeicherte Daten zu einem anderen Teil des Speichers verlagert werden, von dem bekannt ist, dass er funktionsfähig ist, wobei ein Speichercontroller Umabbildungs-informationen, die in einem inhaltsadressierbaren Speicher (CAM) gespeichert sind, bezüglich einer Adresse des Teils des Speichers, wo Fehler aufgetreten sind, aktualisiert, wodurch ein Aufruf der Adresse zu einer neuen Adresse umgelenkt wird, die eine Speicherstelle verlagerter Daten des fehleranfälligen Teils des Speichers spezifiziert, wobei der Speichercontroller bei jeder Aktualisierung des inhaltsadressierbaren Speichers (CAM) die in dem CAM gespeicherte aktualisierte Umabbildungsinformation in einen nichtflüchtigen diskret adressierbaren Speicher kopiert, sodass der nichtflüchtige diskret adressierbare Speicher und der inhaltsadressierbare Speicher synchron sind.
- Des Weiteren wird die Aufgabe gelöst durch ein System zur Durchführung des erfindungsgemäßen Verfahrens, umfassend einen Host zum Lesen bzw. Schreiben aus einer Speichereinheit bzw. in diese und zum Ausführen einer oder mehrerer Anwendungen; eine Speichereinheit; einen inhaltsadressierbaren Speicher (CAM); einen nichtflüchtigen diskret adressierbaren Speicher; einen Decodierer für Fehlerkorrekturcodierung (ECC) zum Empfangen von Digitalsignalen, die aus der Speichereinheit gelesene Daten repräsentieren, und zum Bestimmen einer Bitfehlerrate und/oder einer Anzahl von Bitfehlern, die mit den die Daten repräsentierenden gelesenen Signalen assoziiert ist, einen Speichercontroller zum Speichern von Digitalsignalen, die umabgebildete Adressen der Speichereinheit repräsentieren, in dem inhaltsadressierbaren Speicher (CAM) mindestens teilweise abhängig davon, ob die Bitfehlerrate und/oder die Anzahl der Bitfehler eine Fehlerschwelle erreicht oder übersteigt, wobei der CAM einen Phasenänderungsspeicher (PCM) umfasst, wobei der Speichercontroller dafür ausgelegt ist, mindestens einen Teil der in dem inhaltsadressierbaren Speicher (CAM) gespeicherten Umabbildungsinformationen in dem nichtflüchtigen diskret adressierbaren Speicher abzuspeichern, wenn die in dem inhaltsadressierbaren Speicher (CAM) gespeicherten Umabbildungsinformationen aktualisiert werden, so dass der nichtflüchtige diskret adressierbare Speicher und der inhaltsadressierbare Speicher synchron sind.
- Zweckmäßige Ausgestaltungen und vorteilhafte Weiterbildungen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.
- KURZE BESCHREIBUNG DER FIGUREN
- Nichteinschränkende und nichterschöpfende Ausführungsformen werden mit Bezug auf die folgenden Figuren beschrieben, wobei gleiche Bezugszahlen in den verschiedenen Figuren durchweg gleiche Teile bezeichnen, sofern es nicht anders angegeben ist.
-
1 ist eine schematische Ansicht einer Speicherkonfiguration gemäß einer Ausführungsform. -
2 ist ein Flußdiagramm eines Speicherleseprozesses gemäß einer Ausführungsform. -
3 ist ein Flußdiagramm eines Speicherleseprozesses gemäß einer anderen Ausführungsform. -
4 ist ein schematisches Blockdiagramm eines Datenverarbeitungssystems und einer Speichereinheit gemäß einer Ausführungsform. -
5 ist ein Flußdiagramm eines Speicherleseprozesses gemäß einer Ausführungsform. -
6 ist ein Flußdiagramm eines Speicherleseprozesses gemäß einer anderen Ausführungsform. -
7 ist eine schematische Ansicht einer Vektor-Umabbildungstabelle gemäß einer Ausführungsform. -
8 ist ein schematisches Blockdiagramm eines Speichersystems gemäß einer Ausführungsform. -
9 ist ein schematisches Blockdiagramm eines Datenverarbeitungssystems und einer Speichereinheit gemäß einer Ausführungsform. - AUSFÜHRLICHE BESCHREIBUNG
- In der vorliegenden Beschreibung bedeutet ein Verweis auf „eine Ausführungsform”, daß ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, die in Verbindung mit der Ausführungsform beschrieben werden, in mindestens einer Ausführungsform des Beanspruchten enthalten ist. Das Erscheinen des Ausdrucks „bei einer Ausführungsform” oder „eine Ausführungsform” an verschiedenen Stellen in der vorliegenden Beschreibung bezieht sich somit nicht unbedingt immer auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen kombiniert werden.
- Bei einer Ausführungsform können Umabbildungsinformationen bezüglich einer Speichereinheit in einem nichtflüchtigen diskret adressierbaren Speicher geführt werden. Solche Umabbildungsinformationen können Umabbildungsvektoren umfassen, die eine Umabbildungsadresse zum Ersatz einer durch einen Prozessor bereitgestellten Adresse zum Beispiel als Teil einer an die Speichereinheit gerichteten Lese-/Schreibanforderung bereitstellen. Hierbei kann ein diskret adressierbarer Speicher zum Beispiel Speicherzellen umfassen, die nicht in Blöcken und/oder Sektoren auf einmal beschrieben werden müssen, sondern individuell oder in relativ kleinen Gruppen adressiert werden können. Zum Beispiel kann beim Schreiben von Daten in einen Speicher des NOR-Flash-Typs in einen großen Block von Speicherzellen geschrieben werden, auch wenn die zu schreibenden Daten nur einen Speicherplatz von einer oder zwei Speicherzellen erfordern. Bei einem anderen Beispiel kann beim Schreiben von Daten, wie zum Beispiel Umabbildungsinformationen, in einen Phasenänderungsspeicher (PCM) lediglich in eine Anzahl von Speicherzellen geschrieben werden, die im wesentlichen mit der Speichergröße der zu schreibenden Daten übereinstimmt.
- Das Führen von Umabbildungsinformationen in einem solchen nichtflüchtigen diskret adressierbaren Speicher kann eine feinstufigere Steuerung bestimmter umzuabbildender Bereiche des Speichers gewährleisten. Zum Beispiel kann ein solcher nichtflüchtiger diskret adressierbarer Speicher diskrete Adressierung erlauben, um Umabbildungsvektoren in relativ kleinen Teilen eines Speicherplatzes zu speichern. Im Gegensatz dazu kann ein nicht diskret adressierbarer Speicher Block- und/oder Sektoradressierung benutzen, so daß zum Beispiel das Speichern lediglich eines einzigen Umabbildungsvektors einen relativ großen Teil der Speichereinheit einnehmen kann. Zusätzlich kann ein Block- und/oder Sektoradressierung benutzender Speicher einen Löschprozeß verwenden, um einen Speicherblock und/oder -sektor für einen nachfolgenden Schreibprozeß vorzubereiten, was im Vergleich zu einem diskret adressierbaren Speicher zu einer vergrößerten Schreibzeit führt. Das Speichern und Führen der Umabbildungsinformationen in einem nichtflüchtigen diskret adressierbaren Speicher kann dementsprechend eine Möglichkeit bereitstellen, die Speicherplatzausnutzung der Speichereinheit zu verbessern sowie die bei einem Schreibprozeß benötigte Zeit zu verringern. Bei einer Implementierung kann das Führen von Umabbildungsinformationen in einem nichtflüchtigen diskret adressierbaren Speicher die Verwendung einer flüchtigen Speichereinheit erlauben, die solche Umabbildungsinformationen betreffen, da ein solcher nichtflüchtiger Speicher solche Umabbildungsinformationen sogar während eines Abschaltens speichern kann. Dementsprechend kann das Speichern und Führen von Umabbildungsinformationen in einem nichtflüchtigen diskret adressierbaren Speicher eine vergrößerte Flexibilität bei der Auswahl des Speichertyps, wie zum Beispiel NAND- oder NOR-Flash-Speicher, SRAM, DRAM und PCM, um nur einige wenige Beispiele zu nennen, erlauben.
- Bei einer Implementierung kann eine Speichereinheit, die Umabbildungsinformationen betreffen, physisch einen nichtflüchtigen diskret adressierbaren Speicher umfassen, so daß ein einziger Chip oder integrierter Schaltungschip sowohl eine Speichereinheit als auch einen nichtflüchtigen diskret adressierbaren Speicher umfaßt. Bei einer solchen Implementierung kann eine Speichereinheit jedoch von einem nichtflüchtigen diskret adressierbaren Speicher verschieden sein, so daß separat durch einen Prozessor und/oder Speichercontroller auf eine solche Speichereinheit und einen nichtflüchtigen diskret adressierbaren Speicher zugegriffen werden kann. Zum Beispiel kann ein nichtflüchtiger diskret adressierbarer Speicher, der zum Speichern von Umabbildungsinformationen bezüglich einer Speichereinheit verwendet wird, sich auf der Speichereinheit befinden, aber immer noch von einer solchen Speichereinheit verschieden sein. Als Fortsetzung des Beispiels kann eine solche Speichereinheit ein Speichermodul umfassen, das mehrere Speicherchips enthält; während über einen einzigen Prozessor und/oder Speichercontroller auf den Speicherchip zugegriffen werden kann, kann durch einen separaten Prozessor und/oder Speichercontroller auf einen zum Speichern von Umabbildungsinformationen verwendeten nichtflüchtigen diskret adressierbaren Speicher zugegriffen werden. Solche Einzelheiten und Vorteile des Führens von Umabbildungsinformationen auf einem nichtflüchtigen diskret adressierbaren Speicher sind natürlich lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt.
- Das Speichern und Führen von Umabbildungsinformationen bezüglich einer Speichereinheit auf einem nichtflüchtigen diskret adressierbaren Speicher kann auch zu einer reduzierten Latenzzeit und/oder eine erhöhte Nutzung verfügbarer Speicherkapazität im Vergleich zu dem Führen von Umabbildungsinformationen zum Beispiel in der Speichereinheit führen. Bei einer Implementierung können solche Umabbildungsinformationen im Fluge erzeugt werden, zum Beispiel während Laufzeitprozessen, wie zum Beispiel durch einen Prozessor eingeleitete Lese-/Schreibprozesse, wobei aus einer Speichereinheit gelesene Daten, wie nachfolgend beschrieben, auf Fehler geprüft werden. Bei einer anderen Implementierung kann durch ein System ein Initialisierungsprozeß durchgeführt werden, um ein Scannen nach fehleranfälligen Teilen einer Speichereinheit zu beinhalten. Wiederum sind solche Einzelheiten und Vorteile des Führens von Umabbildungsinformationen in einem nichtflüchtigen diskret adressierbaren Speicher lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt.
- Bei einer Ausführungsform kann eine Speichereinheit Speicherzellen umfassen, die sich mit der Zeit langsam verschlechtern, so daß eine vergrößerte Wahrscheinlichkeit entstehen kann, daß während des Lesens einer solchen Speichereinheit ein oder mehrere Fehler auftreten können. Eine Speichereinheit kann auch als Folge ihrer Herstellung defekte und/oder marginal-funktionsfähige Speicherzellen umfassen.
- Solche Fehler können zum Beispiel in mehreren Bereichen innerhalb eines Datenverarbeitungssystems unter Verwendung von Fehlerkorrekturcodes (ECC) oder anderen solchen Techniken korrigiert werden. Von einer Systemperspektive aus gesehen, kann eine Bestimmung erfolgen, ob solche fehleranfälligen Zellen weiter benutzt werden sollen oder nicht. Wie später ausführlicher erläutert werden wird, kann eine solche Bestimmung mindestens teilweise auf einem Vergleich der Anzahl solcher Fehler mit einer Fehlerschwelle basieren, die zum Beispiel während einer Entwurfsphase einer Speichereinheit definiert werden kann. Bei einer Implementierung kann die Benutzung bestimmter Speicherzellen ausgesetzt werden, bevor solche Zellen eine zu große Anzahl von Fehlern zeigen. Anders ausgedrückt, kann die Benutzung fehleranfälliger Speicherzellen ausgesetzt werden, wenn solche Speicherzellen eine Anzahl von Fehlern produzieren, die sich einer Fehlerschwelle nähert. Eine solche Schwelle muß zum Beispiel nicht erreicht werden, um zu bestimmen, daß die Benutzung von Speicherzellen ausgesetzt werden kann. Die Beobachtung, daß eine Anzahl von Fehlern sich einer Fehlerschwelle nähert, kann dementsprechend eine Möglichkeit darstellen, vorherzusagen, daß bestimmte Speicherzellen bald zu viele Fehler produzieren werden, so daß zum Beispiel die Benutzung solcher fehleranfälligen Speicherzellen gestoppt werden kann, bevor eine kritische Fehlfunktion der Speicherzellen tatsächlich beginnt. Wenn die Benutzung von bestimmten Speicherzellen ausgesetzt werden soll, können Ersatzspeicherzellen auf eine Weise ausgewählt werden, die eine Gesamtspeichereinheitskapazität aufrechterhält.
- Bei einer Ausführungsform kann dementsprechend ein Prozeß zum Aufrechterhalten einer Größenkapazität einer Speichereinheit das Umabbilden einer fehleranfälligen Speicherstelle auf eine ordnungsgemäß funktionierende Speicherstelle ohne Verlust von Gesamtsystemspeicherplatz (z. B. Kapazität der Speichereinheit) umfassen. Eine solche Umabbildung kann mindestens teilweise auf Informationen bezüglich einer Quantität und/oder Häufigkeit von als Ergebnis des Lesens aus einer fehleranfälligen Speicherstelle auftretenden Fehlern basieren. Hierbei bedeutet Speicherstelle einen Teil einer Speichereinheit, auf den z. B. über einen Lese- und/oder Schreibprozeß zugegriffen werden kann, wobei eine Adresse oder Adressen verwendet werden, um eine solche Speicherstelle und/oder einen solchen Teil zu identifizieren. Wie später ausführlicher erläutert werden wird, kann zum Beispiel eine ECC-Maschine verwendet werden, um eine Bitfehlerrate und/oder die Anzahl von Bitfehlern zu bestimmen, die mit dem Lesen eines bestimmten Teils eines Speichers assoziiert ist. Danach können die Bitfehlerrate und/oder die Anzahl der Bitfehler mit einer Fehlerschwelle verglichen werden, die zum Beispiel eine wesentliche Grenze für eine annehmbare Anzahl von Fehlern umfassen kann. Abhängig von einem Ergebnis eines solchen Vergleichs kann eine Entscheidung erfolgen, ob der bestimmte Teil des Speichers, der die Fehler produziert, zurückgezogen, z. B. nicht weiter benutzt, werden soll.
- Bei einer bestimmten Ausführungsform kann ein Prozeß zum Zurückziehen eines Teils einer Speichereinheit das Verlagern von Digitalsignalen, die in dem zurückzuziehenden Teil der Speichereinheit gespeicherte Daten repräsentieren, zu einem anderen Teil der Speichereinheit umfassen. Bei einer Implementierung können solche von einem zurückgezogenen Teil einer Speichereinheit umgeordnete Daten repräsentierenden Digitalsignale zu einem Ersatzteil der Speichereinheit verlagert werden. Zum Beispiel kann ein solcher Ersatzteil des Speichers eine physische Stelle der Speichereinheit umfassen, die anfänglich nicht als Teil der vollen Kapazität der Speichereinheit anerkannt oder betrachtet wird, wie später ausführlicher erläutert werden wird. Ein Prozeß des Zurückziehens eines Teils einer Speichereinheit kann auch eine Umabbildung einer Adresse eines zurückzuziehenden Teils der Speichereinheit umfassen, um eine Adresse eines neuen Ersatzteils der Speichereinheit zu entsprechen. Solche umabgebildeten Adressen können, wie oben angegeben, zum Beispiel in einem nichtflüchtigen diskret adressierbaren Speicher gespeichert werden. Natürlich sind solche Prozesse lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt.
- Bei einer Ausführungsform kann bei einem Prozeß, wie zum Beispiel dem oben beschriebenen, eine Speichereinheit beteiligt sein, die eine Einheit umfaßt. Wenn ein PCM altert, können dementsprechend eine Bitfehlerrate und/oder eine Anzahl von Bitfehlern, die durch Teile des PCM produziert wird, zunehmen. Solche Fehler können bis zu einem gewissen Grad zum Beispiel unter Verwendung einer ECC-Maschine und/oder anderer solcher Fehlerkorrekturtechniken korrigiert werden. Eine Anzahl von Fehlern kann jedoch bis über eine Fähigkeit solcher Fehlerkorrekturtechniken hinaus zunehmen. Deshalb kann es wünschenswert sein, solche Speicherteile zurückzuziehen, wenn ein Trend angezeigt wird, daß solche Speicherteile eine zu große Anzahl von Fehlern produziert haben oder anfangen, diese zu produzieren.
- Ausführungsformen, wie zum Beispiel die oben beschriebenen, können eine erfolgreiche Verwendung von Speicherungseinheiten unter Verwendung relativ wenig zuverlässiger Technologien erlauben. Zum Beispiel kann unter Verwendung von hier beschriebenen Ausführungsformen ein Chip verwendet werden, der zuvor als unbenutzbar betrachtet wurde. Außerdem können solche Ausführungsformen eine Lebensdauer einer Speicherungseinheit auf die eines Großteils ihrer Speicherzellen, statt die Lebensdauer relativ weniger ihrer Speicherzellen, verlängern.
-
1 ist eine schematische Ansicht einer Speicherkonfiguration gemäß einer Ausführungsform. Eine Speichereinheit100 kann in einen Hauptspeicher110 und einen Ersatzspeicher120 aufgeteilt werden. Die Speichereinheit100 kann NAND- oder NOR-Flash-Speicher, SRAM, DRAM oder PCM umfassen, um nur einige wenige Beispiele zu nennen. Die Speichereinheit100 kann einen benutzeradressierbaren Speicherplatz umfassen, der solche Haupt- und Ersatzspeicherteile und/oder einen oder mehrere andere Speicherteile enthält, die miteinander zusammenhängend sein können oder auch nicht und auf einer einzigen Einheit angeordnet sein können oder auch nicht. Der Hauptspeicher110 und der Ersatzspeicher120 können unabhängige adressierbare Plätze umfassen, auf die zum Beispiel durch Lese-, Schreib- und/oder Löschprozesse zugegriffen werden kann. - Gemäß einer Ausführungsform können ein oder mehrere Teile der Speichereinheit
100 Signale speichern, die Daten und/oder Informationen repräsentieren, so wie sie durch einen bestimmten Zustand der Speichereinheit100 ausgedrückt werden. Zum Beispiel kann ein Daten und/oder Informationen repräsentierendes elektronisches Signal in einem Teil der Speichereinheit „gespeichert” werden, indem der Zustand solcher Teile der Speichereinheit100 beeinflußt oder geändert wird, um Daten und/oder Informationen als Binärinformationen (zum Beispiel Einsen und Nullen) darzustellen. Bei einer bestimmten Implementierung stellt dementsprechend eine solche Änderung des Zustands des Teils des Speichers zum Speichern eines Daten und/oder Informationen repräsentierenden Signals eine Transformation der Speichereinheit100 in einen anderen Zustand oder eine andere Sache dar. - Die Speichereinheit
100 kann dafür konfiguriert werden, anfänglich Hauptspeicher110 zu umfassen, der der voll benutzbaren Kapazität der Speichereinheit100 entspricht. Eine solche anfängliche Konfiguration kann zusätzlich Ersatzspeicher120 umfassen, der bei der Bestimmung der Kapazität der Speichereinheit nicht eingeschlossen werden muß. Wenn Teile des Hauptspeichers unbenutzbar werden oder zum Beispiel während Lese-/Schreibprozessen zu einer zu großen Anzahl von Fehlern führen, kann der Ersatzspeicher120 jedoch verwendet werden, um Teile des Hauptspeichers110 zu ersetzen. Natürlich sind Einzelheiten einer solchen Speicherkonfiguration lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. -
2 ist ein Flußdiagramm eines Speicherlese-/-schreibprozesses200 gemäß einer Ausführungsform. Im Block220 kann ein Lese-/Schreibprozeß zum Lesen oder Schreiben in einem Teil einer Speichereinheit, zum Beispiel durch eine Systemanwendung, eingeleitet werden, die durch einen hier nicht gezeigten Prozessor ausgeführt wird, der eine oder mehrere Lese-/Schreibadressen bereitstellt, um jeweils eine oder mehrere Speicherstellen zu identifizieren, auf denen gespeicherte Daten zu lesen sind oder in die zu schreiben ist. Beginnend im Block230 kann eine solche Lese-/Schreibadresse einen Datenlese-/-schreibprozeß entlang eines Datenpfads lenken, der zuvor mindestens teilweise abhängig davon ausgewählt wurde, ob die Lese-/Schreibadresse einer Speicherstelle entspricht, die zurückgezogen wurde. In dem vorliegenden Beispiel kann eine Speichereinheit einen Hauptspeicherteil und einen Ersatzspeicherteil umfassen, wie zum Beispiel die in1 gezeigte Speichereinheit100 . Bei einer bestimmten Implementierung kann ein Ersatzspeicherteil anstelle eines Hauptspeicherteils verwendet werden, der zurückgezogen wird. Falls eine solche Speicherstelle nicht zurückgezogen wurde, kann im Block240 der Datenpfad einen Datenlese-/-schreibprozeß zu einer Stelle in einem Hauptspeicherteil lenken, der einer durch einen Prozessor gesendeten Adresse entspricht. Ein solches Lenken kann durch eine geeignet geschaltete Hardware-Schaltkomponente, wie zum Beispiel einen Multiplexer, durchgeführt werden. Zum Beispiel kann ein Signal an eine Hardware-Schaltkomponente angelegt werden, um einen Datenpfad auszuwählen, der zu einem Hauptspeicherteil führt, der einer durch den Prozessor gesendeten Adresse entspricht. Andere durch die Hardware-Schaltkomponente ausgewählte Datenpfade können individuelle Datenpfade umfassen, die zu verschiedenen Teilen einer Speichereinheit, wie zum Beispiel einem Ersatzspeicherteil, führen. - Als Ergebnis kann im Block
250 die durch den Prozessor gesendete Lese-/Schreibadresse verwendet werden, um aus dem Hauptspeicherteil der Speichereinheit zu lesen oder in diesen zu schreiben. Danach können im Block260 aus der gelesenen Adresse der Speichereinheit gelesene Daten Fehlerprüfhardware und/oder -software, wie zum Beispiel einem ECC-Decodierer und/oder anderen solchen Fehlerkorrekturtechniken, zugeführt werden. Im Fall des Schreibens von Daten in die Speichereinheit kann ein nachfolgender Leseprozeß zum Verifizieren einer erfolgreichen Schreiboperation durchgeführt werden: solche gelesenen Daten können dann Fehlerprüfhardware und/oder -software, wie zum Beispiel einem ECC-Decodierer und/oder anderen solchen Fehlerkorrekturtechniken, zugeführt werden. - Falls eine Speicherstelle zurückgezogen wurde, kann im Block
245 ein Datenpfad einen Datenlese-/-schreibprozeß zu einer Stelle in einem Ersatzspeicherteil anstelle einer Speicherstelle, die einer durch einen Prozessor gesendeten Adresse entspricht, lenken. Eine solche Pfadlenkung kann durch eine geeignete geschaltete Hardware-Schaltkomponente, wie zum Beispiel einen Multiplexer, durchgeführt werden. Insbesondere kann ein Signal an eine solche Hardware-Schaltkomponente angelegt werden, um einen Datenpfad auszuwählen, der zu einem Ersatzspeicherteil führt, der einer durch einen Prozessor gesendeten Adresse entspricht. Andere durch die Hardware-Schaltkomponente ausgewählte Datenpfade können individuelle Datenpfade umfassen, die zu verschiedenen Teilen einer Speichereinheit führen, wie zum Beispiel einem Hauptspeicherteil und/oder anderen Ersatzspeicherteilen. - Als Ergebnis kann im Block
255 die durch den Prozessor gesendete Lese-/Schreibadresse, obwohl sie ursprünglich an eine Adresse eines Hauptspeicherteils gerichtet war, zu einem Ersatzspeicherteil der Speichereinheit umgelenkt werden. Danach können im Block260 aus dem Ersatzspeicherteil gelesene oder in diesen geschriebene Daten Fehlerprüfhardware und/oder -software, wie zum Beispiel einem ECC-Decodierer und/oder anderen solchen Fehlerkorrekturtechniken, zugeführt werden. Im Fall des Schreibens von Daten in die Speichereinheit kann ein nachfolgender Leseprozeß zum Verifizieren einer erfolgreichen Schreiboperation durchgeführt werden: solche gelesenen Daten können dann Fehlerprüfhardware und/oder -software, wie zum Beispiel einem ECC-Decodierer und/oder anderen solchen Fehlerkorrekturtechniken, zugeführt werden. Natürlich sind Einzelheiten eines solchen Speicherleseprozesses lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. -
3 ist ein Flußdiagramm eines Speicherlese-/Schreibprozesses300 gemäß einer Ausführungsform. Im Block310 kann ein Lese-/Schreibprozeß zum Lesen oder Schreiben in einem Teil einer Speichereinheit zum Beispiel durch eine Systemanwendung eingeleitet werden, die eine oder mehrere Lese-/Schreibadressen bereitstellt, um jeweils eine oder mehrere Speicherstellen zu identifizieren, aus denen gespeicherte Daten zu lesen sind oder in die zu schreiben ist. ECC-Hardware und/oder -Software kann zum Beispiel durch Paritätsprüfung gelesener Daten verwendet werden, um Fehler in gelesenen Daten zu prüfen und/oder zu korrigieren. Danach können anfänglich gelesene Daten mit korrigierten gelesenen Daten verglichen werden, um die Anzahl der Fehler zu bestimmen, die bei dem Speicherlese-/-schreibprozeß aufgetreten sind, wie im Block320 . Eine solche Anzahl von Fehlern kann als Bitfehlerrate (BER) ausgedrückt werden, die zum Beispiel ein Verhältnis der Anzahl der Fehlerbit zu der Gesamtzahl gelesener Bit umfassen kann. Eine BER oder Anzahl von Fehlern, die sich aus dem Lesen aus einem Teil einer Speichereinheit ergibt, kann mit einem Fehlerschwellenwert verglichen werden, der einen Wert umfassen kann, der eine maximal annehmbare BER oder eine maximal annehmbare Anzahl von Fehlern repräsentiert, über die hinaus zum Beispiel zusätzliche Fehler nicht erfolgreich korrigiert werden können: ein solcher Fehlerschwellenwert kann zum Beispiel eine Zahl umfassen, die eine wesentliche Obergrenze einer BER oder einer Anzahl von Fehlern darstellt, die für eine bestimmte Speichereinheit, wie zum Beispiel die in1 gezeigte Speichereinheit100 , korrigierbar sind. Bei oder unter einem solchen Fehlerschwellenwert kann ECC-Hardware und/oder -Software in der Lage sein, Lesefehler zu korrigieren. Aber über einer solchen Fehlerschwelle kann eine relativ hohe Wahrscheinlichkeit bestehen, daß nicht alle Lesefehler korrigierbar sind. - Im Block
330 erfolgt eine Entscheidung, ob ein Teil des Speichers zurückzuziehen ist, mindestens teilweise abhängig davon, ob das Lesen aus einem solchen Teil des Speichers zu zu vielen Fehlern führt. Wenn eine solche Anzahl von Fehlern bei oder unter einer Fehlerschwelle liegt, kann eine Entscheidung erfolgen, einen solchen Teil des Speichers nicht zurückzuziehen, und der Lese-/Schreibprozeß300 kann zum Block335 voranschreiten. Hier kann einer Hardware-Schaltkomponente ein Signal zugeführt werden, so daß eine Route oder ein Pfad, worauf Daten für den Lese-/Schreibprozeß gesendet werden, zu einem ursprünglichen Hauptspeicherteil gelenkt werden kann. Als nächstes können im Block340 zum Beispiel gelesene Daten einer Anwendung zugeführt werden, die die gelesenen Daten angefordert hat, oder Schreibdaten können in einen ursprünglichen Hauptspeicherteil geschrieben werden. - Wenn dagegen eine solche Anzahl von Fehlern über einer Fehlerschwelle liegt, kann eine Entscheidung erfolgen, einen Teil des Speichers zurückzuziehen, und der Lese-/Schreibprozeß
300 kann zu dem Block350 voranschreiten, in dem zum Beispiel ein Prozeß zum Zurückziehen eines solchen Teils des Speichers, der zu zu vielen Fehlern führt, beginnen kann. Bei einer bestimmten Implementierung können in einem solchen zurückzuziehenden Speicherteil gespeicherte Daten ein weiteres Mal gelesen werden, indem einer Hardware-Schaltkomponente ein Signal zugeführt wird, so daß eine für den Lese-/Schreibprozeß verwendete Datenroute zu einem ursprünglichen Hauptspeicherteil gelenkt werden kann. Als nächstes kann im Block360 der Hardware-Schaltkomponente ein Signal zugeführt werden, so daß eine für nachfolgende Lese- und/oder Schreibprozesse verwendete Datenroute zu einem Ersatzspeicherteil gelenkt werden kann, der verwendet wird, um den ursprünglichen Hauptspeicherteil zu ersetzen. Als nächstes können in Block340 zum Beispiel gelesene Daten einer Anwendung zugeführt werden, die die gelesenen Daten angefordert hat, oder Schreibdaten können in einen Ersatzspeicherteil geschrieben werden. Einzelheiten eines solchen Speicherleseprozesses sind natürlich lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. -
4 ist ein schematisches Diagramm einer Ausführungsform eines Datenverarbeitungssystems400 mit einer Speichereinheit455 , die wie oben zum Beispiel mit Bezug auf1 besprochen in einen Hauptteil450 und einen Ersatzteil460 aufgeteilt werden kann. Ein Datenverarbeitungssystem400 kann eine beliebige Einheit, Vorrichtung und/oder Maschine repräsentieren, die dafür konfigurierbar sein kann, die Speichereinheit455 zu verwalten. Als Beispiel, aber nicht als Einschränkung, kann das Datenverarbeitungssystem400 folgendes umfassen: eine oder mehrere Datenverarbeitungseinheiten und/oder -plattformen, wie zum Beispiel einen Desktop-Computer, einen Laptop-Computer, eine Workstation, eine Servereinheit oder dergleichen; eine oder mehrere persönliche Datenverarbeitungs- oder Kommunikationseinheiten oder -vorrichtungen, wie zum Beispiel einen Personal Digital Assistant, ein Mobilkommunikationsgerät oder dergleichen; ein Datenverarbeitungssystem und/oder assoziierte Dienstanbieterfähigkeit, wie zum Beispiel einen Datenbank- oder Datenspeicherungsdienstanbieter bzw. ein System; und/oder beliebige Kombinationen davon. - Es wird anerkannt, daß alle oder Teile der verschiedenen in dem Datenverarbeitungssystem
400 gezeigten Anordnungen und die hier weiter beschriebenen Prozesse und Verfahren unter Verwendung von oder anderweitigem Einbezug von Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert werden können. Als Beispiel, aber nicht als Beschränkung, kann das Datenverarbeitungssystem400 somit folgendes umfassen: mindestens eine Verarbeitungseinheit410 , die wirksam durch eine Hardware-Schaltkomponente470 mit dem Speicher455 gekoppelt ist, einen Speichercontroller435 und eine Fehlerdetektions- und Speicherzurückzieh-Bestimmungskomponente440 (die im folgenden der Einfachheit halber als „Fehlerdetektionskomponente” bezeichnet wird). Die Verarbeitungseinheit410 kann eine oder mehrere Schaltungen repräsentieren, die dafür konfigurierbar sind, mindestens einen Teil einer Datenverarbeitungsprozedur oder eines Prozesses auszuführen. Als Beispiel, aber nicht als Beschränkung, kann die Verarbeitungseinheit410 folgendes umfassen: einen oder mehrere Prozessoren, Controller, Mikroprozessoren, Mikrocontroller, anwendungsspezifische integrierte Schaltungen, digitale Signalprozessoren, programmierbare Logikanordnungen, am Einsatzort programmierbare Gate-Arrays und dergleichen oder eine beliebige Kombination davon. Die Verarbeitungseinheit410 kann mit dem Speichercontroller435 kommunizieren, um speicherbezogene Operationen zu verarbeiten, wie zum Beispiel Lesen, Schreiben und/oder Löschen. Die Verarbeitungseinheit410 kann ein Betriebssystem umfassen, das dafür ausgelegt ist, mit dem Speichercontroller435 zu kommunizieren. Ein solches Betriebssystem kann zum Beispiel Befehle erzeugen, die über den Adressenausgabeport415 und/oder den Datenlese-/-schreibport420 zu dem Speichercontroller435 zu senden sind. Solche Befehle können zum Beispiel eine dem Speicher455 entsprechende Speicheradresse umfassen. - Das Datenverarbeitungssystem
400 kann zum Beispiel einen Eingangs-/Ausgangsteil480 umfassen, der ein/eine oder mehrere Anordnungen oder Merkmale repräsentieren kann, die dafür konfigurierbar sind, menschliche Eingaben und/oder Maschineneingaben anzunehmen oder anderweitig einzuführen, und/oder ein/eine oder mehrere Anordnungen oder Merkmale, die dafür konfigurierbar sind, menschliche Ausgaben und/oder Maschinenausgaben abzuliefern oder anderweitig bereitzustellen. Als Beispiel, aber nicht als Beschränkung, kann der Eingangs-/Ausgangsteil480 ein Display, einen Lautsprecher, eine Tastatur, eine Maus, einen Trackball, einen Berührungsschirm, einen Datenport usw. in wirksamer Konfiguration umfassen. - Der Speichercontroller
435 kann einen nichtflüchtigen diskret adressierbaren Speicher430 umfassen, um Informationen zu führen, die dazu zu verwenden sind, über die Hardware-Schaltkomponente470 zwischen mehreren zu verschiedenen Teilen des Speichers455 führenden Datenpfaden475 auszuwählen. Bei einer Ausführungsform kann ein diskret adressierbarer Speicher PCM umfassen. Zum Beispiel können solche Informationen eine Tabelle von mit bestimmten Speicherauswahlwerten assoziierten Speicheradressen zur Auswahl bestimmter Datenpfade475 umfassen; wenn die Verarbeitungseinheit410 als Teil einer Lese-/Schreiboperation eine Adresse präsentiert, kann der nichtflüchtige diskret adressierbare Speicher430 verwendet werden, um die Adresse zur Auswahl eines bestimmten Datenpfads zu dem Speicher mit einem bestimmten Speicherauswahlwert zu assoziieren. Hierbei kann zum Beispiel eine Auswahl erfolgen, um einen Datenpfad entweder zum Hauptspeicher450 oder zum Ersatzspeicher460 zu wählen. Eine solche Auswahl kann, wie oben angegeben, mindestens teilweise abhängig davon erfolgen, ob eine Stelle des Speichers455 , die mit einer in einem Lese-/Schreibprozeß präsentierten Adresse assoziiert ist, zurückgezogen wurde. Um die durch ein konkretes Beispiel zu veranschaulichen, kann die Verarbeitungseinheit410 als Teil einer Leseoperation eine Adresse präsentieren. Die durch den Speichercontroller435 empfangene Adresse kann dann mit einem in dem nichtflüchtigen diskret adressierbaren Speicher430 geführten bestimmten Speicherauswahlwert assoziiert werden. Wie nachfolgend erläutert wird, kann ein solcher Speicherauswahlwert mindestens teilweise auf der Basis von durch die Fehlerdetektionskomponente440 bereitgestellten Informationen eingerichtet worden sein. Ein solcher Speicherauswahlwert kann dann der Hardware-Schaltkomponente470 zugeführt werden, um aus mehreren Datenpfaden475 einen Datenpfad zum Speicher auszuwählen. In dem vorliegenden konkreten Beispiel entspricht die Adresse einer zuvor zurückgezogenen Stelle des Speichers455 . Dementsprechend kann das Register430 die Adresse mit einem Speicherauswahlwert assoziieren, der, wenn er der Hardware-Schaltkomponente470 vorgelegt wird, einen Datenpfad auswählen kann, der zu einer Stelle in dem Ersatzspeicher460 führt. Obwohl zwei Datenpfade gezeigt sind, um die mehreren Datenpfade475 in4 zu repräsentieren, ist zu beachten, daß eine beliebige Anzahl von Datenpfaden möglich sein kann. Außerdem muß die Hardware-Schaltkomponente470 nicht auf die Auswahl von nur einem Datenpfad auf einmal begrenzt sein. Ähnlich sind Kombinationen einschließlich einer beliebigen Anzahl von Datenpfaden zu einem beliebigen Teil des Speichers455 möglich, wobei der Speicher455 zum Beispiel eine oder mehrere zusammen oder individuell gekapselte Speichereinheiten umfassen kann. Der Speicher455 kann einen beliebigen Datenspeicherungsmechanismus repräsentieren. Der Speicher455 kann zum Beispiel ein Festplattenlaufwerk, ein optisches Laufwerk, ein Bandlaufwerk, ein Halbleiter-Speicherlaufwerk usw. umfassen. Dementsprechend sind die hier beschriebenen Konfigurationen lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. - Wie oben angegeben, kann nichtflüchtiger diskret adressierbarer Speicher
430 , wie zum Beispiel PCM, Informationen einrichten und führen, die mindestens teilweise auf durch die Fehlerdetektionskomponente440 bereitgestellten Informationen basieren. Bei einer Ausführungsform können aus dem Speicher455 gelesene Daten der Fehlerdetektionskomponente440 zugeführt werden, die auf Fehler prüfen kann, um eine Bitfehlerrate und/oder die Anzahl der Bitfehler, die mit dem Lesen eines bestimmten Teils des Speichers455 assoziiert ist, zu bestimmen. Solche Fehlerinformationen können dann dem Speichercontroller435 zugeführt werden, der die Bitfehlerrate und/oder Anzahl der Bitfehler zum Beispiel mit einer Fehlerschwelle vergleichen kann. Abhängig von einem Ergebnis eines solchen Vergleichs kann eine Entscheidung darüber erfolgen, ob der bestimmte Teil des Speichers zurückgezogen wird. Dementsprechend kann die Adresse des bestimmten Teils des Speichers mit einem Speicherauswahlwert assoziiert werden, der, wenn er der Hardware-Schaltkomponente470 vorgelegt wird, verwendet werden kann, um einen Datenpfad zu einem geeigneten Teil des Speichers auszuwählen. Wie oben beschrieben, kann nichtflüchtiger diskret adressierbarer Speicher430 solche mit bestimmten Speicheradressen assoziierten Speicherauswahlwerte führen. - Wie in
4 gezeigt, kann das Datenverarbeitungssystem400 einen Hardwareteil490 umfassen, der zum Beispiel den Speichercontroller435 , den nichtflüchtigen diskret adressierbaren Speicher430 , die Hardware-Schaltkomponente470 und/oder den Speicher455 umfaßt. Bei einer bestimmten Ausführungsform kann das Zurückziehen eines Teils einer Speichereinheit und/oder das Bestimmen, ob aus Haupt- oder Ersatzspeicher zu lesen oder darin zu schreiben ist, einen Prozeß umfassen, der mit Bezug auf die Verarbeitungseinheit410 , die Lese-/Schreibanweisungen ausgeben kann, transparent ist. Dementsprechend muß die Prozessoreinheit410 aus einem bestimmten Teil des Speichers, der Fehler produziert, gelesene Daten weder empfangen noch verarbeiten. Statt dessen können solche Fehler abgefangen und durch die Fehlerdetektionskomponente440 detektiert werden, die dann, wie oben beschrieben, dem Speichercontroller435 Fehlerinformationen zuführen kann. Danach kann der Speichercontroller435 bestimmen, ob ein bestimmter Teil des Speichers455 zurückgezogen werden sollte, wobei eine solche Bestimmung in dem Hardwareteil490 und ohne Teilnahme zum Beispiel der Verarbeitungseinheit410 erfolgen kann. Zusätzlich kann der Speichercontroller435 mindestens teilweise abhängig von Signalen, die in dem nichtflüchtigen diskret adressierbaren Speicher430 gespeicherte Informationen repräsentieren, bestimmen, ob aus Haupt- oder Ersatzspeicher zu lesen oder darin zu schreiben ist. Wieder kann eine solche Bestimmung in dem Hardwareteil490 und ohne Beteiligung der Verarbeitungseinheit410 erfolgen. Wie oben angegeben, muß ein Prozessor dementsprechend zum Beispiel während des Verarbeitens von Lese-/Schreibanweisungen nicht mit Softwareprozessen zum Umorganisieren von und/oder Arbeiten mit Speicherabbildungen belastet werden. Natürlich sind solche Prozesse lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. -
5 ist ein Flußdiagramm eines Speicherlese-/-schreibprozesses500 gemäß einer Ausführungsform. Im Block505 kann ein Lese-/Schreibprozeß zum Lesen aus einem Teil einer Speichereinheit oder zum Schreiben darin, zum Beispiel durch eine Systemanwendung, eingeleitet werden, die eine oder mehrere Lese-/Schreibadressen bereitstellt, um jeweils eine oder mehrere Speicherstellen zu identifizieren, aus denen gespeicherte Daten zu lesen sind oder in die zu schreiben ist. Im Block510 können eine oder mehrere solche Lese-/Schreibadressen zum Beispiel einem inhaltsadressierbaren Speicher (CAM) zugeführt werden, wobei eine Suche nach möglichen umabgebildeten Adressen, die den bereitgestellten Lese-/Schreibadressen entsprechen, durchgeführt werden kann. Bei einer Implementierung kann ein CAM einen nichtflüchtigen diskret adressierbaren Speicher, wie zum Beispiel einen PCM, umfassen. Ein solcher CAM kann Digitalsignale speichern, die eine Datenbank und/oder Tabelle repräsentieren, die ursprüngliche Adressen mit entsprechenden umabgebildeten Adressen assoziiert. Durch Durchsuchen eines solchen CAM kann dementsprechend im Block530 eine Bestimmung erfolgen, ob eine ankommende ursprüngliche Lese-/Schreibadresse mit einer in dem CAM gespeicherten entsprechenden umabgebildeten Adresse assoziiert ist. Wenn nicht, wobei eine Suche nach einer mit einer bestimmten ursprünglichen Lese-/Schreibadresse assoziierten umabgebildeten Adresse ein Nullergebnis zurückgibt, kann der Lese-/Schreibprozeß500 zum Block540 voranschreiten, in dem die ursprüngliche Lese-/Schreibadresse ausgegeben werden kann. Als Ergebnis kann im Block550 die ursprüngliche Lese-/Schreibadresse verwendet werden, um aus einer Speichereinheit zu lesen oder in diese zu schreiben. Nachfolgend können im Block560 aus der ursprünglichen Lese-/Schreibadresse der Speichereinheit zu lesende oder in diese zu schreibende Daten einer Fehlerprüfhardware und/oder -software zugeführt werden, wie zum Beispiel einem ECC-Decodierer und/oder anderen solchen Fehlerkorrekturtechniken. - Wenn dagegen im Block
530 bestimmt wird, daß eine ankommende ursprüngliche Lese-/Schreibadresse eine entsprechende umabgebildete Adresse aufweist, kann der Lese-/Schreibprozeß500 zum Block545 voranschreiten, in dem eine umabgebildete Adresse, die einer bestimmten ursprünglichen Lese-/Schreibadresse entspricht, gesendet werden kann. Als Ergebnis kann im Block555 die umabgebildete Lese-/Schreibadresse verwendet werden, um aus einer Speichereinheit zu lesen oder in diese zu schreiben. Bei einer Implementierung kann ein Ersatzteil der Speichereinheit gelesen oder geschrieben werden, wenn eine umabgebildete Adresse benutzt wird, eine solche Beschränkung ist jedoch lediglich ein Beispiel. Danach können im Block560 aus der umabgebildeten Lese-/Schreibadresse der Speichereinheit gelesene oder in diese geschriebene Daten einer Fehlerprüfhardware und/oder -software zugeführt werden, wie zum Beispiel einem ECC-Decodierer und/oder anderen solchen Fehlerkorrekturtechniken. Natürlich sind Einzelheiten eines solchen Speicherlese-/-schreibprozesses lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. -
6 ist ein Flußdiagramm eines Speicherleseprozesses600 gemäß einer Ausführungsform. Im Block605 kann ein Leseprozeß zum Lesen von in einem Teil einer Speichereinheit gespeicherte Informationen repräsentierenden Lesesignalen, zum Beispiel durch eine Systemanwendung, eingeleitet werden, die eine oder mehrere Leseadressen bereitstellt, um jeweils eine oder mehrere Speicherstellen zu identifizieren, aus denen Daten repräsentierende gespeicherte Signale zu lesen sind. ECC-Hardware und/oder -Software kann durch Paritätsprüfung gelesener Daten verwendet werden, um Fehler in gelesenen Daten zu prüfen und/oder zu korrigieren. Danach können anfänglich gelesene Daten mit korrigierten gelesenen Daten verglichen werden und somit die Anzahl der Fehler bestimmt werden, die in dem Speicherleseprozeß aufgetreten sind, wie im Block610 . Eine solche Anzahl von Fehlern kann als eine Bitfehlerrate (BER) ausgedrückt werden, die zum Beispiel ein Verhältnis der Anzahl der Fehlerbit zu der Gesamtzahl gelesener Bit umfassen kann. Im Block620 kann eine BER oder Anzahl von Fehlern, die sich aus dem Lesen aus einem Teil einer Speichereinheit ergibt, mit einem Fehlerschwellenwert verglichen werden, der einen Wert umfassen kann, der eine maximal annehmbare BER oder maximale annehmbare Anzahl von Fehlern repräsentiert, über den hinaus zum Beispiel zusätzliche Fehler nicht erfolgreich korrigiert werden können: ein solcher Fehlerschwellenwert kann eine Zahl umfassen, die eine wesentliche Obergrenze einer BER oder Anzahl von Fehlern repräsentiert, die für eine bestimmte Speichereinheit, wie zum Beispiel die in1 gezeigte Speichereinheit100 , annehmbar ist. Bei oder unter einem solchen Fehlerschwellenwert kann ECC-Hardware und/oder -Software in der Lage sein, Lesefehler zu korrigieren. Aber über einer solchen Fehlerschwelle kann eine relativ hohe Wahrscheinlichkeit bestehen, daß mindestens bestimmte Lesefehler nicht korrigierbar sein können. - Im Block
630 wird mindestens teilweise abhängig davon, ob das Lesen aus einem solchen Teil des Speichers zu zu vielen Fehlern führt, eine Entscheidung getroffen, ob ein Teil einer Speichereinheit zurückgezogen wird. Wenn eine solche Anzahl von Fehlern bei oder unter einer Fehlerschwelle liegt, kann der Leseprozeß600 zum Block640 voranschreiten, in dem zum Beispiel gelesene Daten einer Anwendung zugeführt werden können, die die gelesenen Daten angefordert hat. Wenn dagegen eine solche Anzahl von Fehlern über einer Fehlerschwelle liegt, kann der Leseprozeß600 zum Block650 voranschreiten, in dem zum Beispiel ein Prozeß, einen Teil des Speichers, der zu zu vielen Fehlern führt, zurückzuziehen, beginnen kann. Bei einer bestimmten Implementierung können anfänglich in einem solchen fehleranfälligen Speicherteil gespeicherte Daten zu einem anderen Speicherteil verlagert werden, von dem bekannt ist, daß er funktionsfähig und/oder gesund ist. Ein solcher neuer Speicherteil kann einen Teil von Ersatzspeicher, wie zum Beispiel den in1 gezeigten Ersatzspeicher120 , umfassen. Im Block660 kann eine Speicheradresse oder können mehrere Speicheradressen zum Identifizieren der ursprünglichen Speicherstelle(n) der Daten umabgebildet werden, um den neuen Speicherteil zu identifizieren, zu dem Daten verlagert werden. Bei einer Implementierung kann die Umabbildung umfassen, eine neue Adresse so zuzuweisen, daß sie zum Beispiel über einen Vektor einer ursprünglichen Adresse entspricht, so daß ein Aufruf der ursprünglichen Adresse zu einer neuen Adresse umgelenkt werden kann, die die Stelle verlagerter Daten spezifiziert. Im Block670 können dann Informationen bezüglich solcher umabgebildeter Adressen einem CAM zugeführt werden, um in dem CAM gespeicherte Umabbildungsinformationen zu aktualisieren, wobei solche Informationen als eine Vektor-Umabbildungstabelle gespeichert werden können, wie später ausführlicher beschrieben wird. Im Block680 können als Reaktion darauf, daß dem CAM eine oder mehrere umabgebildete Adressen zugeführt werden, aktualisierte Informationen auch einem nichtflüchtigen diskret adressierbaren Speicher, wie zum Beispiel einem PCM, zugeführt werden. Zum Beispiel kann ein Speichercontroller Digitalsignale, die Umabbildungsinformationen bezüglich einer Speichereinheit repräsentieren, einem CAM zuführen, wobei ein solcher Speichercontroller mindestens einen Teil der in dem CAM gespeicherten Umabbildungsinformationen in einen nichtflüchtigen diskret adressierbaren Speicher kopieren kann, wenn die in dem CAM gespeicherten Umabbildungsinformationen aktualisiert werden. Bei einer Implementierung können solche aktualisierten Informationen einem nichtflüchtigen diskret adressierbaren Speicher im Fluge zum Beispiel während Laufzeitprozessen, wie zum Beispiel durch einen Prozessor eingeleiteten Lese-/Schreibprozessen, zugeführt werden. Bei einer anderen Implementierung kann ein Initialisierungsprozeß durch ein System durchgeführt werden, um Scannen nach fehleranfälligen Teilen einer Speichereinheit einzuschließen. - Bei einer bestimmten Implementierung kann ein PCM oder ein anderer nichtflüchtiger diskret adressierbarer Speicher periodisch mit Umabbildungsinformationen und/oder anderen in einem CAM gespeicherten Inhalten aktualisiert werden, wie nachfolgend ausführlicher besprochen werden wird. Nach der Umabbildung eines fehleranfälligen Teils des Speichers kann der Leseprozeß
600 zum Block640 voranschreiten, in dem gelesene Daten zum Beispiel einer Anwendung zugeführt werden können, die die gelesenen Daten angefordert hat. Natürlich sind Einzelheiten eines solchen Speicherleseprozesses lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. -
7 ist eine schematische Ansicht einer Vektor-Umabbildungstabelle700 gemäß einer Ausführungsform. In der Tabelle700 enthaltene Informationen müssen bei anderen Implementierungen nicht in einer Tabelle formatiert sein; solche Informationen können zum Beispiel ein Array oder ein anderes Mittel zum Organisieren solcher Informationen umfassen. Solche Informationen und die Organisation bezüglich dieser können als solche Informationen repräsentierende Digitalsignale in einem nichtflüchtigen diskret adressierbaren Speicher, wie zum Beispiel einem PCM, gespeichert werden. Die Spalte710 kann eine Liste von ursprünglichen Adressen740 umfassen, wie zum Beispiel addr1, addr2, addr3 und so weiter; die Statusspalte720 kann Informationen darüber, ob eine entsprechende ursprüngliche Adresse, die in der Spalte710 aufgelistet ist, umabgebildet wurde, umfassen; und Spalte730 kann eine Liste umabgebildeter Adressen umfassen, wie zum Beispiel addr1', addr2', addr3' und so weiter, die den in der Spalte710 aufgelisteten ursprünglichen Adressen740 entsprechen. - Bei einer Implementierung können die ursprünglichen Adressen
740 eine oder mehrere Adressen umfassen, die in einer Lese-/Schreibanforderung durch eine Anwendung und/oder ein System enthalten sind, die bzw. das über in der Speichereinheit100 an der Stelle der einen oder mehreren Adressen gespeicherte Informationen anfragt. Die Statusspalte720 kann Metadaten umfassen, um zu beschreiben, ob eine ursprüngliche Adresse740 umabgebildet wurde. Wenn eine solche Umabbildung aufgetreten ist, kann Spalte730 dann eine umabgebildete Adresse750 umfassen, die einer ursprünglichen Adresse740 entspricht. Zur Veranschaulichung durch ein Beispiel gemäß1 wurden addr1, addr5, addr7 und addr8 auf addr1', addr5', addr7' bzw. addr8' umabgebildet, während addr2, addr3, addr4 und addr6 nicht umabgebildet wurden. - Hierbei weisen ursprüngliche Adressen, die nicht umabgebildet wurden, keine entsprechende umabgebildete Adresse in der Spalte
730 auf. Bei einer anderen Implementierung muß die Statusspalte720 nicht in der Tabelle700 enthalten sein, da eine Anwesenheit einer umabgebildeten Adresse750 ausreichen kann, um anzuzeigen, daß Umabbildung zum Beispiel für eine bestimmte ursprüngliche Adresse740 stattgefunden hat. Natürlich sind Einzelheiten einer solchen Vektor-Umabbildungstabelle und anderer Formate des Speicherns von Umabbildungsinformationen lediglich Beispiele, und das Beanspruchte ist nicht darauf beschränkt. -
8 ist ein Blockdiagramm eines Speichersystems800 gemäß einer Ausführungsform. Ein Controller810 kann dafür konfiguriert werden, ein oder mehrere Signale zu empfangen, die eine Leseanforderung805 anzeigen, die eine Adresse umfaßt, die eine Stelle einer Speicheranordnung825 spezifiziert, aus der Daten zu lesen sind. Die Speichereinheit825 kann zum Beispiel, wie oben beschrieben, Hauptspeicher820 und Ersatzspeicher830 umfassen. Ankommende Adressen, die Leseanforderungen begleiten, können durch einen CAM815 geleitet werden, in dem solche Adressen mit in dem CAM815 gespeicherten Inhalten verglichen werden können, die mit ursprünglichen Adressen assoziierte umabgebildete Adressen umfassen können. Bei einer bestimmten Implementierung erfolgen Umabbildungsprozesse ohne bestimmte Anweisungen und/oder Signale, die durch einen Benutzer auf einer Systemebene erzeugt werden, so daß ankommende Adressen, die Leseanforderungen begleiten, immer ursprüngliche Adressen umfassen können; solche Adressen können nur einer CAM-Suche nachfolgend mit ihren assoziierten umabgebildeten Adressen assoziiert werden. Anders ausgedrückt, kann der CAM815 eine Übersetzung aus einem ursprünglichen Adressenraum in einen umabgebildeten Adressenraum gewährleisten. Auf solche Weise kann der Controller810 bestimmen, ob die Leseanforderung805 eine Adresse umfaßt, die umabgebildet wurde. Abhängig von einer solchen Bestimmung kann der Controller810 die Leseanforderung805 entweder zu dem Hauptspeicher820 oder zu dem Ersatzspeicher830 lenken, um Daten zu lesen. Wenn zum Beispiel die Adresse der Leseanforderung805 nicht umabgebildet wurde, kann der Controller810 die Leseanforderung zu dem Hauptspeicher820 weiterleiten, während, wenn eine solche Adresse umabgebildet wurde, der Controller810 die Leseanforderung805 dann so modifizieren kann, daß sie eine umabgebildete Adresse umfaßt, die zu dem Ersatzspeicher820 gelenkt werden kann. Danach kann entweder der Hauptspeicher820 oder der Ersatzspeicher830 gelesene Daten835 einem Fehlerdetektionsblock840 zuführen, der zum Beispiel einen Fehlerzähler und/oder einen ECC-Decodierer umfassen kann. Bei einer Ausführungsform kann der einen ECC-Decodierer umfassende Fehlerdetektionsblock840 in einem Chipelement der Speichereinheit825 angeordnet sein. Bei einer anderen Ausführungsform kann der einen ECC-Decodierer umfassende Fehlerdetektionsblock840 auf einer Systemebene, wie zum Beispiel in einer Anwendung, bereitgestellt werden. Der Fehlerdetektionsblock840 kann etwaige in den gelesenen Daten835 anwesende Fehler detektieren und/oder korrigieren und kann solche detektierten Fehler als eine BER und/oder eine Anzahl von Bitfehlern ausdrücken. Dementsprechend kann der Fehlerdetektionsblock840 korrigierte gelesene Daten845 einer Entität zuführen, die die Leseanforderung805 eingeführt hat, wie zum Beispiel einer Anwendung und/oder einem Hostsystem. Der Fehlerdetektionsblock840 kann auch Informationen bezüglich der Anzahl von in den gelesenen Daten835 anwesenden Fehlern einer Vergleichsmaschine850 zuführen. Falls der Fehlerdetektionsblock840 einen in einem Chipelement der Speichereinheit825 angeordneten ECC-Decodierer umfaßt, können solche Fehlerinformationen durch eine Vergleichsmaschinen-Anwendung auf einer Systemebene zugänglich sein. Bei einer Implementierung kann ein ECC-Decodierer zum Beispiel ein für Zugang durch die Vergleichsmaschine850 verfügbares Fehlerinformationsregister umfassen, das die Anzahl detektierter Fehler mit einer Fehlerschwelle vergleichen kann. - Wie oben erläutert, kann eine solche Fehlerschwelle eine Grenze für eine annehmbare BER oder Anzahl von Fehlern umfassen. Die Vergleichsmaschine
850 kann Ergebnisse860 eines solchen Vergleichs dem Controller810 zuführen. Mindestens teilweise auf der Basis solcher Vergleichsergebnisse kann der Controller810 bestimmen, ob ein bestimmter Teil der Speichereinheit825 zurückzuziehen ist. Wenn ein solcher Vergleich anzeigt, daß ein bestimmter Teil der Speichereinheit825 während eines Leseprozesses zum Beispiel zu einer zu großen Anzahl von Bitfehlern geführt hat, kann der Controller810 dann einen Prozeß zum Zurückziehen des fehleranfälligen Teils des Speichers einleiten. Ein solcher Zurückziehprozeß kann umfassen, in dem sich zurückziehenden Teil des Speichers gespeicherte Daten zu einem anderen Teil des Speichers zu verschieben. Zum Beispiel können Digitalsignale, die Daten repräsentieren, aus einem bestimmten Teil des Hauptspeichers820 bewegt werden, um in dem Ersatzspeicher830 gespeichert zu werden. Dementsprechend kann der Controller810 eine Adresse, die den sich zurückziehenden Teil des Speichers identifiziert, in eine Adresse modifizieren, die den neuen Teil des Speichers, der die verschobenen Daten enthalten soll, identifiziert. Eine solche modifizierte umabgebildete Adresse kann dann in den CAM815 geschrieben werden, in dem sie, wie oben beschrieben, mit der ursprünglichen Adresse assoziiert werden kann. Ein solcher Speicherzurückziehprozeß kann mit Bezug auf eine Anwendung und/oder ein Hostsystem, die bzw. das zum Beispiel die Leseanforderung805 eingeführt hat, nahtlos erfolgen. Bei einer Implementierung kann ein nichtflüchtiger diskret adressierbarer Speicher818 , wie zum Beispiel ein PCM, benutzt werden, um in dem CAM815 gespeicherte Umabbildungsinformationen zu sichern. Zum Beispiel kann der nichtflüchtige diskret adressierbare Speicher818 von Zeit zu Zeit, gelegentlich, periodisch und/oder jedesmal, wenn der CAM815 mit neuen Umabbildungsinformationen aktualisiert wird, aktualisiert werden. Bei einer Ausführungsform kann der nichtflüchtige diskret adressierbare Speicher818 im Fluge zum Beispiel während Laufzeitprozessen, wie zum Beispiel einem durch die Leseanforderung805 eingeleiteten Leseprozeß, aktualisiert werden. Falls eine solche Aktualisierung des nichtflüchtigen diskret adressierbaren Speichers818 im wesentlichen für jede Aktualisierung des CAM815 erfolgt, können der nichtflüchtige diskret adressierbare Speicher und der CAM beide im wesentlichen synchron miteinander sein. Das heißt, jeder der Speicher kann im wesentlichen ähnliche Umabbildungsinformationen enthalten. Eine solche Synchronizität kann während einer Unterbrechung der Stromversorgung des Speichersystems800 nützlich sein, wobei ein flüchtiger CAM815 Umabbildungsinformationen verlieren kann, während der nichtflüchtige diskret adressierbare Speicher818 solche Informationen behalten kann. Natürlich ist eine solche Implementierung eines Speichersystems lediglich ein Beispiel, und das Beanspruchte ist nicht darauf beschränkt. -
9 ist ein schematisches Diagramm einer beispielhaften Ausführungsform eines Datenverarbeitungssystems900 , das eine Speichereinheit910 enthält, die zum Beispiel, wie oben besprochen, in einen Haupt- und einen Ersatzteil aufgeteilt werden kann. Eine Datenverarbeitungseinheit904 kann eine beliebige Einheit, Vorrichtung und/oder Maschine repräsentieren, die dafür konfigurierbar sein kann, die Speichereinheit910 zu verwalten. Die Speichereinheit910 kann einen Speichercontroller915 und einen Speicher992 umfassen. Als Beispiel, aber nicht als Beschränkung, kann die Datenverarbeitungseinheit904 folgendes umfassen: eine oder mehrere Datenverarbeitungseinheiten und/oder -plattformen, wie zum Beispiel einen Desktop-Computer, einen Laptop-Computer, eine Workstation, eine Servereinheit oder dergleichen; eine oder mehrere persönliche Datenverarbeitungs- oder Kommunikationseinheiten oder -vorrichtungen, wie zum Beispiel einen Personal Digital Assistant, ein Mobilkommunikationsgerät oder dergleichen; ein Datenverarbeitungssystem und/oder assoziierte Dienstanbieterfähigkeit, wie zum Beispiel eine Datenbank oder ein Datenspeicherungsdienstanbieter bzw. -system; und/oder eine beliebige Kombination davon. - Es wird anerkannt, daß alle oder Teile der verschiedenen in dem System
900 gezeigten Anordnungen bzw. Einheiten und die hier weiter beschriebenen Prozesse und Verfahren unter Verwendung oder anderweitigem Einbezug von Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert werden können. Als Beispiel, aber nicht als Beschränkung, kann die Datenverarbeitungseinheit904 mindestens eine Verarbeitungseinheit920 umfassen, die durch einen Bus940 und einen Host- oder Speichercontroller915 wirksam mit dem Speicher922 gekoppelt ist. Die Verarbeitungseinheit920 repräsentiert eine oder mehrere Schaltungen, die dafür konfigurierbar sind, mindestens einen Teil einer Datenverarbeitungsprozedur oder eines Datenverarbeitungsprozesses auszuführen. Als Beispiel, aber nicht als Beschränkung, kann die Verarbeitungseinheit920 folgendes umfassen: einen oder mehrere Prozessoren, Controller, Mikroprozessoren, Mikrocontroller, anwendungsspezifische integrierte Schaltungen, digitale Signalprozessoren, programmierbare Logikanordnungen, am Einsatzort programmierbare Gate-Arrays und dergleichen oder eine beliebige Kombination davon. Die Verarbeitungseinheit920 kann mit dem Speichercontroller915 kommunizieren, um speicherbezogene Operationen zu verarbeiten, wie zum Beispiel Lesen, Schreiben und/oder Löschen sowie oben besprochene Speicheraufteilungsprozesse. Die Verarbeitungseinheit920 kann ein Betriebssystem umfassen, das dafür ausgelegt ist, mit dem Speichercontroller915 zu kommunizieren. Ein solches Betriebssystem kann zum Beispiel Befehle erzeugen, die über den Bus940 zu dem Speichercontroller915 zu senden sind. Solche Befehle können zum Beispiel Anweisungen zum Aufteilen mindestens eines Teils des Speichers922 , zum Assoziieren eines oder mehrerer Attribute mit bestimmten Aufteilungen und zum Programmieren einer bestimmten Aufteilung mindestens teilweise auf der Basis des Typs der zu programmierenden und zu speichernden Daten enthalten. - Der Speicher
922 stellt einen beliebigen Datenspeicherungsmechanismus dar. Der Speicher922 kann zum Beispiel einen primären Speicher924 und/oder einen sekundären Speicher926 umfassen. Bei einer bestimmten Ausführungsform kann der Speicher922 Speicher umfassen, der mindestens teilweise auf der Basis eines oder mehrerer Attribute des Speichers und/oder eines Speicherverwaltungsprozesses, wie oben beschrieben, aufgeteilt werden kann. Der primäre Speicher924 kann zum Beispiel Direktzugriffsspeicher, Nurlesespeicher usw. umfassen. Obwohl er in diesem Beispiel als von der Verarbeitungseinheit920 getrennt dargestellt ist, versteht sich, daß der primäre Speicher924 vollständig oder teilweise in der Verarbeitungseinheit920 bereitgestellt oder anderweitig mit dieser zusammen angeordnet bzw. gekoppelt werden kann. - Der sekundäre Speicher
926 kann zum Beispiel denselben oder einen ähnlichen Typ von Speicher wie der primäre Speicher umfassen und/oder ein/eine oder mehrere Datenspeicherungseinheiten oder -systeme, wie zum Beispiel ein Plattenlaufwerk, ein optisches Laufwerk, ein Bandlaufwerk, ein Halbleiter-Speicherlaufwerk usw. Bei bestimmten Implementierungen kann der sekundäre Speicher926 wirksam ein computerlesbares Medium928 aufnehmen oder anderweitig dafür konfigurierbar sein, mit diesem gekoppelt zu werden. Das computerlesbare Medium928 kann zum Beispiel ein beliebiges Medium umfassen, das Daten, Code und/oder Anweisungen für eine oder mehrere der Einheiten in dem System900 tragen und/oder zugänglich machen kann. - Die Datenverarbeitungseinheit
904 kann zum Beispiel einen Eingang/Ausgang932 umfassen. Der Eingang/Ausgang932 repräsentiert ein/eine oder mehrere Anordnungen oder Merkmale, die dafür konfigurierbar sein können, menschliche Eingaben und/oder Maschineneingaben anzunehmen oder anderweitig einzuführen, und/oder ein/eine oder mehrere Anordnungen oder Merkmale, die konfigurierbar sein können, um menschliche Ausgaben und/oder Maschinenausgaben abzuliefern oder anderweitig bereitzustellen. Als Beispiel, aber nicht als Beschränkung, kann die Eingangs-/Ausgangsanordnung932 ein Display, einen Lautsprecher, eine Tastatur, eine Maus, einen Trackball, einen Berührungsschirm, einen Datenport usw. mit wirksamer Konfiguration umfassen. - In der obigen ausführlichen Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, um ein umfassendes Verständnis des Beanspruchten zu gewährleisten. Für Fachleute ist jedoch erkennbar, daß das Beanspruchte ohne diese spezifischen Einzelheiten ausgeübt werden kann. In anderen Fällen wurden Verfahren, Vorrichtungen oder Systeme, die Durchschnittsfachleuten bekannt wären, nicht ausführlich beschrieben, um so das Beanspruchte nicht zu verdecken.
- Bestimmte Teile der obigen ausführlichen Beschreibung werden in Form von Algorithmen oder symbolischen Darstellungen von Operationen an binären Digitalsignalen dargestellt, die in einem Speicher einer spezifischen Vorrichtung oder Spezial-Datenverarbeitungseinheit oder -plattform gespeichert sind. Im Kontext der vorliegenden konkreten Beschreibung umfaßt der Ausdruck spezifische Vorrichtung oder dergleichen einen Vielzweckcomputer, sobald er dafür programmiert ist, bestimmte Operationen gemäß Anweisungen aus Programmsoftware auszuführen. Algorithmische Beschreibungen oder symbolische Darstellungen sind Beispiele für Techniken, die von Durchschnittsfachleuten auf dem Gebiet der Signalverarbeitung oder verwandten Gebieten verwendet werden, um anderen Fachleuten das Wesentliche ihrer Arbeit zu vermitteln. Ein Algorithmus wird hier und allgemein als eine in sich stimmige Sequenz von Operationen oder ähnliche Signalverarbeitung betrachtet, die zu einem gewünschten Ergebnis führt. In diesem Kontext umfassen Operationen oder Verarbeitung physische Manipulation physischer Größen. Typischerweise, aber nicht unbedingt, können solche Größen die Form von elektrischen oder magnetischen Signalen annehmen, die gespeichert, transferiert, kombiniert, verglichen oder anderweitig manipuliert werden können. Es hat sich manchmal als zweckmäßig erwiesen, hauptsächlich aus Gründen der üblichen Verwendung solche Signale als Bit, Daten, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen, Ziffern oder dergleichen zu bezeichnen. Es versteht sich jedoch, daß alle diese oder ähnliche Ausdrücke mit geeigneten physikalischen Größen zu assoziieren sind und lediglich zweckmäßige Kennzeichnungen sind. Sofern es nicht spezifisch anders erwähnt wird, so wie es aus der folgenden Besprechung hervorgeht, versteht sich, daß in der gesamten vorliegenden Beschreibung Besprechungen, die Ausdrücke wie „Verarbeitung”, „Datenverarbeitung”, „Berechnung”, „Bestimmung” oder dergleichen benutzen, auf Aktionen oder Prozesse einer spezifischen Vorrichtung, wie zum Beispiel eines Spezial-Computers oder einer ähnlichen elektronischen Spezial-Datenverarbeitungseinheit, verweisen. In einem Beispiel kann ein solcher Spezial-Computer oder eine solche elektronische Spezial-Datenverarbeitungseinheit einen Vielzweckcomputer umfassen, der mit Anweisungen zum Ausführen einer oder mehrerer spezifischer Funktionen programmiert wird. Im Kontext der vorliegenden Beschreibung ist ein Spezial-Computer oder eine ähnliche elektronische Spezial-Datenverarbeitungseinheit deshalb in der Lage, Signale zu manipulieren oder zu transformieren, die typischerweise als physikalische elektronische oder magnetische Größen in Speichern, Registern oder anderen Informationsspeichereinheiten, Übertragungseinheiten oder Anzeigeeinheiten des Spezial-Computers oder der ähnlichen elektronischen Spezial-Datenverarbeitungseinheit repräsentiert werden.
- Die hier verwendeten Ausdrücke „und”, „und/oder” und „oder” können vielfältige Bedeutungen umfassen, die mindestens teilweise von dem Kontext abhängen werden, in dem sie verwendet werden. Typischerweise soll „und/oder” sowie „oder” bei Verwendung zum Assoziieren einer Liste, wie zum Beispiel A, B oder C, A, B und C, hier im einschließenden Sinne verwendet, sowie A, B oder C, hier im ausschließenden Sinne verwendet, bedeuten. Der Verweis in der gesamten vorliegenden Beschreibung auf „eine Ausführungsform” bedeutet, daß ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, die in Verbindung mit der Ausführungsform beschrieben werden, in mindestens einer Ausführungsform des Beanspruchten enthalten ist. Das Erscheinen des Ausdrucks „bei einer Ausführungsform” oder „eine Ausführungsform” an verschiedenen Stellen in der gesamten vorliegenden Beschreibung bezieht sich somit nicht immer unbedingt auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristika in einer oder mehreren Ausführungsformen kombiniert werden. Die hier beschriebenen Ausführungsformen können Einheiten, Anordnungen, Maschinen oder Vorrichtungen umfassen, die unter Verwendung von Digitalsignalen operieren. Solche Signale können elektronische Signale, optische Signale, elektromagnetische Signale oder eine beliebige Form von Energie umfassen, die Informationen zwischen Orten bereitstellt.
- Obwohl das Dargestellte und Beschriebene zur Zeit als beispielhafte Ausführungsformen betrachtet wird, ist für Fachleute erkennbar, daß verschiedene andere Modifikationen vorgenommen und Äquivalente substituiert werden können, ohne von dem Beanspruchten abzuweichen. Zusätzlich können viele Modifikationen vorgenommen werden, um eine bestimmte Situation an die Lehren des Beanspruchten anzupassen, ohne von dem hier beschriebenen zentralen Konzept abzuweichen. Deshalb ist es beabsichtigt, daß das Beanspruchte nicht auf die bestimmten offenbarten Ausführungsformen beschränkt wird, sondern daß das derart Beanspruchte auch alle Ausführungsformen einschließt, die in den Schutzumfang der angefügten Ansprüche und ihrer Äquivalente fallen.
Claims (16)
- Verfahren zum Ausführen eines Lese-/Schreibprozesses zum Lesen aus oder Schreiben in einen Teil einer Speichereinheit (
100 ,455 ,825 ), wobei durch eine Lese-/Schreibadresse eine Speicherstelle identifiziert wird, aus der gespeicherte Daten zu lesen sind oder in die sie zu schreiben sind, wobei eine Anzahl von Fehlerbits, die bei dem Lese-/schreibprozess an der Speicherstelle auftreten, als eine Bitfehlerrate ausgedrückt wird, die ein Verhältnis der Anzahl der Fehlerbits zu der Gesamtzahl gelesener Bits umfasst, wobei die Anzahl der Fehlerbits durch eine Fehlerdetektionskomponente (440 ,840 ), die aus dem Speicher gelesene Daten auf Fehler prüfen kann, bestimmt wird, wobei, wenn die Anzahl der Fehlerbits über einem Fehlerschwellenwert liegt, ein Zurückziehen des Teils des Speichers (100 ,455 ,825 ), der zu zu vielen Fehlern führt, begonnen wird, und wobei anfänglich in dem Teil des Speichers (100 ,455 ,825 ), wo ein Fehler aufgetreten ist, gespeicherte Daten zu einem anderen Teil des Speichers (100 ,455 ,825 ) verlagert werden, von dem bekannt ist, dass er funktionsfähig ist, wobei ein Speichercontroller (435 ,810 ) Umabbildungsinformationen, die in einem inhaltsadressierbaren Speicher (CAM) (815 ) gespeichert sind, bezüglich einer Adresse des Teils des Speichers (100 ,455 ,825 ), wo Fehler aufgetreten sind, aktualisiert, wodurch ein Aufruf der Adresse zu einer neuen Adresse umgelenkt wird, die eine Speicherstelle verlagerter Daten des fehleranfälligen Teils des Speichers (100 ,455 ,825 ) spezifiziert, wobei der Speichercontroller (435 ,819 ) bei jeder Aktualisierung des inhaltsadressierbaren Speichers (CAM) (815 ) die in dem CAM (815 ) gespeicherte aktualisierte Umabbildungsinformation in einen nichtflüchtigen diskret adressierbaren Speicher (818 ) kopiert, sodass der nichtflüchtige diskret adressierbare Speicher (818 ) und der inhaltsadressierbare Speicher synchron (815 ) sind. - Verfahren nach Anspruch 1, wobei der nichtflüchtige diskret adressierbare Speicher (
818 ) einen Phasenänderungsspeicher (PCM) umfaßt. - Verfahren nach Anspruch 1, wobei die Umabbildungsinformationen eine oder mehrere Tabellen von Umabbildungsadressen umfassen.
- Verfahren nach Anspruch 1, wobei der nichtflüchtige diskret adressierbare Speicher (
818 ) mit neuen Umabbildungsinformationen im Fluge während eines an die Speichereinheit (100 ,455 ,825 ) gerichteten Lese-/Schreibprozesses aktualisiert werden kann. - Verfahren nach Anspruch 1, wobei der nichtflüchtige diskret adressierbare Speicher (
818 ) einen inhaltsadressierbaren Speicher (CAM) umfaßt. - Verfahren nach Anspruch 3, wobei die Speichereinheit (
100 ,455 ,825 ) einen Hauptspeicherteil (110 ) und einen Ersatzspeicherteil (120 ) umfaßt und wobei die Umabbildungsadressen einer Speicherstelle in dem Ersatzspeicherteil entsprechen. - Verfahren nach Anspruch 1, wobei das Speichern ferner das Schreiben der Umabbildungsinformationen in einen Teil des nichtflüchtigen diskret adressierbaren Speichers (
818 ) umfaßt, wobei der Teil im Wesentlichen dieselbe Größe wie die Umabbildungsinformationen aufweist. - System, ausgebildet zur Durchführung des Verfahrens nach Anspruch 1, umfassend: einen Host zum Lesen bzw. Schreiben aus einer Speichereinheit bzw. in diese und zum Ausführen einer oder mehrerer Anwendungen; eine Speichereinheit (
100 ,455 ,825 ); einen inhaltsadressierbaren Speicher (CAM) (815 ); einen nichtflüchtigen diskret adressierbaren Speicher (818 ); einen Decodierer für Fehlerkorrekturcodierung (ECC) zum Empfangen von Digitalsignalen, die aus der Speichereinheit (100 ,455 ,825 ) gelesene Daten repräsentieren, und zum Bestimmen einer Bitfehlerrate und/oder einer Anzahl von Bitfehlern, die mit den die Daten repräsentierenden gelesenen Signalen assoziiert ist, einen Speichercontroller (435 ,810 ) zum Speichern von Digitalsignalen, die umabgebildete Adressen der Speichereinheit (100 ,455 ,825 ) repräsentieren, in dem inhaltsadressierbaren Speicher (CAM) (815 ) mindestens teilweise abhängig davon, ob die Bitfehlerrate und/oder die Anzahl der Bitfehler eine Fehlerschwelle erreicht oder übersteigt, wobei der CAM (815 ) einen Phasenänderungsspeicher (PCM) umfasst, wobei der Speichercontroller (435 ,810 ) dafür ausgelegt ist, mindestens einen Teil der in dem inhaltsadressierbaren Speicher (CAM) (815 ) gespeicherten Umabbildungsinformationen in dem nichtflüchtigen diskret adressierbaren Speicher (818 ) abzuspeichern, wenn die in dem inhaltsadressierbaren Speicher (CAM) (815 ) gespeicherten Umabbildungsinformationen aktualisiert werden, so dass der nichtflüchtige diskret adressierbare Speicher (818 ) und der inhaltsadressierbare Speicher (815 ) synchron sind. - System nach Anspruch 8, wobei der inhaltsadressierbare Speicher (CAM) (
815 ) dafür ausgelegt ist, Digitalsignale zu empfangen, die eine Leseadresse repräsentieren, und Digitalsignale zu senden, die ein Signal repräsentieren, das mindestens teilweise darauf reagiert, ob die Leseadresse der in dem inhaltsadressierbaren Speicher (CAM) (815 ) gespeicherten umabgebildeten Adresse entspricht. - System nach Anspruch 9, ferner umfassend: einen Auswahlteil zum Auswählen entweder der Leseadresse oder der umabgebildeten Adresse zur Verwendung als eine Adresse zum Lesen aus der Speichereinheit (
100 ,455 ,825 ), wobei die Auswahl mindestens teilweise auf dem Signal basiert. - System nach Anspruch 8, wobei die Speichereinheit (
100 ,455 ,825 ) einen Hauptspeicherteil (110 ) und einen Ersatzspeicherteil (120 ) umfaßt und wobei die umabgebildete Adresse einer Speicherstelle in dem Ersatzspeicherteil (120 ) entspricht. - System nach Anspruch 11, wobei die Speichereinheit (
100 ,455 ,825 ) ferner den ECC-Decodierer und einen Phasenänderungsspeicherteil umfaßt. - System nach Anspruch 8, wobei die Bitfehlerrate und/oder die Anzahl der Bitfehler mindestens teilweise auf eine physische Verschlechterung des Speichers (
100 ,455 ,825 ) reagieren. - System nach Anspruch 8, wobei die Umabbildungsinformationen eine oder mehrere Tabellen von Umabbildungsadressen umfassen.
- System nach Anspruch 8, wobei der nichtflüchtige diskret adressierbare Speicher (
818 ) mit neuen Umabbildungsinformationen im Fluge während eines an die Speichereinheit (100 ,455 ,825 ) gerichteten Lese-/Schreibprozesses aktualisiert werden kann. - System nach Anspruch 8, wobei der nichtflüchtige diskret adressierbare Speicher (
818 ) einen zweiten inhaltsadressierbaren Speicher (CAM) umfaßt.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/494,994 US8412987B2 (en) | 2009-06-30 | 2009-06-30 | Non-volatile memory to store memory remap information |
US12/494,994 | 2009-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102010030745A1 DE102010030745A1 (de) | 2011-01-05 |
DE102010030745B4 true DE102010030745B4 (de) | 2015-02-19 |
Family
ID=43299312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102010030745.9A Active DE102010030745B4 (de) | 2009-06-30 | 2010-06-30 | Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen |
Country Status (6)
Country | Link |
---|---|
US (1) | US8412987B2 (de) |
JP (1) | JP5996838B2 (de) |
KR (1) | KR101647845B1 (de) |
CN (1) | CN101937374B (de) |
DE (1) | DE102010030745B4 (de) |
TW (1) | TWI484330B (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102020202632A1 (de) | 2020-03-02 | 2021-09-02 | Robert Bosch Gesellschaft mit beschränkter Haftung | Inferenzberechnung für neuronale Netzwerke mit Schutz gegen Speicherfehler |
Families Citing this family (216)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8370712B2 (en) * | 2009-07-23 | 2013-02-05 | International Business Machines Corporation | Memory management in a non-volatile solid state memory device |
US20110307758A1 (en) * | 2010-06-15 | 2011-12-15 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
US8533538B2 (en) * | 2010-06-28 | 2013-09-10 | Intel Corporation | Method and apparatus for training a memory signal via an error signal of a memory |
US9003247B2 (en) * | 2011-04-28 | 2015-04-07 | Hewlett-Packard Development Company, L.P. | Remapping data with pointer |
US20120311262A1 (en) * | 2011-06-01 | 2012-12-06 | International Business Machines Corporation | Memory cell presetting for improved memory performance |
US8996955B2 (en) | 2011-11-16 | 2015-03-31 | HGST Netherlands B.V. | Techniques for storing data in stuck and unstable memory cells |
CN102567213B (zh) * | 2011-11-30 | 2014-09-24 | 华中科技大学 | 相变存储器的写均衡方法 |
US9070483B2 (en) | 2012-10-10 | 2015-06-30 | HGST Netherlands B.V. | Encoding and decoding redundant bits to accommodate memory cells having stuck-at faults |
US9274884B2 (en) | 2012-10-10 | 2016-03-01 | HGST Netherlands B.V. | Encoding and decoding data to accommodate memory cells having stuck-at faults |
US9257203B2 (en) * | 2012-12-06 | 2016-02-09 | Micron Technology, Inc. | Setting a default read signal based on error correction |
US8943388B2 (en) | 2012-12-12 | 2015-01-27 | HGST Netherlands B.V. | Techniques for encoding and decoding using a combinatorial number system |
US8812934B2 (en) | 2012-12-12 | 2014-08-19 | HGST Netherlands B.V. | Techniques for storing bits in memory cells having stuck-at faults |
KR101545512B1 (ko) * | 2012-12-26 | 2015-08-24 | 성균관대학교산학협력단 | 반도체 메모리 장치, 검증 독출 방법 및 시스템 |
CN103076996B (zh) * | 2013-01-08 | 2016-08-03 | 深圳市硅格半导体有限公司 | Pcram控制方法及系统 |
KR102025193B1 (ko) * | 2013-02-19 | 2019-09-25 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것의 동작 방법, 메모리 컨트롤러를 포함하는 메모리 시스템 |
US9349476B2 (en) * | 2013-02-21 | 2016-05-24 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for early detection of potential flash failures using an adaptive system level algorithm based on flash program verify |
US9158667B2 (en) | 2013-03-04 | 2015-10-13 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US20140282478A1 (en) * | 2013-03-15 | 2014-09-18 | Silicon Graphics International Corp. | Tcp server bootloader |
US10198314B2 (en) * | 2013-05-23 | 2019-02-05 | Rambus Inc. | Memory device with in-system repair capability |
JP6102515B2 (ja) * | 2013-05-24 | 2017-03-29 | 富士通株式会社 | 情報処理装置、制御回路、制御プログラム、および制御方法 |
US9678689B2 (en) * | 2013-05-29 | 2017-06-13 | Microsoft Technology Licensing, Llc | Storage systems and aliased memory |
US8964496B2 (en) | 2013-07-26 | 2015-02-24 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
US9274715B2 (en) * | 2013-08-02 | 2016-03-01 | Qualcomm Incorporated | Methods and apparatuses for in-system field repair and recovery from memory failures |
US8971124B1 (en) | 2013-08-08 | 2015-03-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9153305B2 (en) | 2013-08-30 | 2015-10-06 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9019785B2 (en) | 2013-09-19 | 2015-04-28 | Micron Technology, Inc. | Data shifting via a number of isolation devices |
US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
US9378081B2 (en) * | 2014-01-02 | 2016-06-28 | Qualcomm Incorporated | Bit remapping system |
KR20150084244A (ko) * | 2014-01-13 | 2015-07-22 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법 |
US9299457B2 (en) * | 2014-02-23 | 2016-03-29 | Qualcomm Incorporated | Kernel masking of DRAM defects |
US20150270015A1 (en) * | 2014-03-19 | 2015-09-24 | Micron Technology, Inc. | Memory mapping |
US9934856B2 (en) | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
US9292380B2 (en) | 2014-04-06 | 2016-03-22 | Freescale Semiconductor,Inc. | Memory access scheme for system on chip |
US20150286529A1 (en) * | 2014-04-08 | 2015-10-08 | Micron Technology, Inc. | Memory device having controller with local memory |
KR102321501B1 (ko) * | 2014-05-14 | 2021-11-05 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것을 포함하는 스토리지 장치의 동작 방법 |
KR20150130888A (ko) * | 2014-05-14 | 2015-11-24 | 에스케이하이닉스 주식회사 | 셀프 리페어 동작을 수행하는 반도체 메모리 장치 |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
US9711207B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
US9711206B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9830999B2 (en) | 2014-06-05 | 2017-11-28 | Micron Technology, Inc. | Comparison operations in memory |
US9786335B2 (en) | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9779019B2 (en) | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
US9524112B2 (en) | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by trimming |
US9582212B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device |
US9582203B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
US9665311B2 (en) | 2014-09-02 | 2017-05-30 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable |
US9519427B2 (en) | 2014-09-02 | 2016-12-13 | Sandisk Technologies Llc | Triggering, at a host system, a process to reduce declared capacity of a storage device |
US9563370B2 (en) | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Triggering a process to reduce declared capacity of a storage device |
US9524105B2 (en) | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by altering an encoding format |
US9582202B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by moving data |
US9563362B2 (en) | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Host system and process to reduce declared capacity of a storage device by trimming |
US9652153B2 (en) | 2014-09-02 | 2017-05-16 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses |
US9582193B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system |
US9582220B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system |
US9158681B1 (en) | 2014-09-02 | 2015-10-13 | Sandisk Technologies Inc. | Process and apparatus to reduce declared capacity of a storage device by conditionally trimming |
US9552166B2 (en) | 2014-09-02 | 2017-01-24 | Sandisk Technologies Llc. | Process and apparatus to reduce declared capacity of a storage device by deleting data |
US9740607B2 (en) | 2014-09-03 | 2017-08-22 | Micron Technology, Inc. | Swap operations in memory |
US10068652B2 (en) | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
US9898252B2 (en) | 2014-09-03 | 2018-02-20 | Micron Technology, Inc. | Multiplication operations in memory |
US9904515B2 (en) | 2014-09-03 | 2018-02-27 | Micron Technology, Inc. | Multiplication operations in memory |
US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
US9847110B2 (en) | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
US9747961B2 (en) | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
US9940026B2 (en) | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
US9836218B2 (en) | 2014-10-03 | 2017-12-05 | Micron Technology, Inc. | Computing reduction and prefix sum operations in memory |
US10163467B2 (en) | 2014-10-16 | 2018-12-25 | Micron Technology, Inc. | Multiple endianness compatibility |
US10147480B2 (en) | 2014-10-24 | 2018-12-04 | Micron Technology, Inc. | Sort operation in memory |
US9779784B2 (en) | 2014-10-29 | 2017-10-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9747960B2 (en) | 2014-12-01 | 2017-08-29 | Micron Technology, Inc. | Apparatuses and methods for converting a mask to an index |
US10073635B2 (en) | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
US10061590B2 (en) | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
US10032493B2 (en) | 2015-01-07 | 2018-07-24 | Micron Technology, Inc. | Longest element length determination in memory |
US9558064B2 (en) | 2015-01-28 | 2017-01-31 | Micron Technology, Inc. | Estimating an error rate associated with memory |
US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
WO2016126478A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for memory device as a store for program instructions |
WO2016126472A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
EP3254286B1 (de) | 2015-02-06 | 2019-09-11 | Micron Technology, INC. | Vorrichtungen und verfahren zum parallelen schreiben an mehrere speichervorrichtungsstandorte |
WO2016144724A1 (en) | 2015-03-10 | 2016-09-15 | Micron Technology, Inc. | Apparatuses and methods for shift decisions |
US9741399B2 (en) | 2015-03-11 | 2017-08-22 | Micron Technology, Inc. | Data shift by elements of a vector in memory |
US9898253B2 (en) | 2015-03-11 | 2018-02-20 | Micron Technology, Inc. | Division operations on variable length elements in memory |
EP3268965A4 (de) | 2015-03-12 | 2018-10-03 | Micron Technology, INC. | Vorrichtungen und verfahren zur datenverschiebung |
US10146537B2 (en) | 2015-03-13 | 2018-12-04 | Micron Technology, Inc. | Vector population count determination in memory |
US10049054B2 (en) | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
US10140104B2 (en) | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
US9959923B2 (en) | 2015-04-16 | 2018-05-01 | Micron Technology, Inc. | Apparatuses and methods to reverse data stored in memory |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US10073786B2 (en) | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
US9921777B2 (en) | 2015-06-22 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for data transfer from sensing circuitry to a controller |
US9996479B2 (en) | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US10228990B2 (en) * | 2015-11-12 | 2019-03-12 | Sandisk Technologies Llc | Variable-term error metrics adjustment |
US9946483B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning |
US9946473B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive |
US9905276B2 (en) | 2015-12-21 | 2018-02-27 | Micron Technology, Inc. | Control of sensing components in association with performing operations |
US9952925B2 (en) | 2016-01-06 | 2018-04-24 | Micron Technology, Inc. | Error code calculation on sensing circuitry |
US10048888B2 (en) | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
US9892767B2 (en) | 2016-02-12 | 2018-02-13 | Micron Technology, Inc. | Data gathering in memory |
US9971541B2 (en) | 2016-02-17 | 2018-05-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10956439B2 (en) | 2016-02-19 | 2021-03-23 | Micron Technology, Inc. | Data transfer with a bit vector operation device |
US9899070B2 (en) | 2016-02-19 | 2018-02-20 | Micron Technology, Inc. | Modified decode for corner turn |
US9697876B1 (en) | 2016-03-01 | 2017-07-04 | Micron Technology, Inc. | Vertical bit vector shift in memory |
US10732856B2 (en) | 2016-03-03 | 2020-08-04 | Sandisk Technologies Llc | Erase health metric to rank memory portions |
US10432232B2 (en) * | 2016-03-04 | 2019-10-01 | Sandisk Technologies Llc | Multi-type parity bit generation for encoding and decoding |
US9997232B2 (en) | 2016-03-10 | 2018-06-12 | Micron Technology, Inc. | Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations |
US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
US10379772B2 (en) | 2016-03-16 | 2019-08-13 | Micron Technology, Inc. | Apparatuses and methods for operations using compressed and decompressed data |
US9910637B2 (en) | 2016-03-17 | 2018-03-06 | Micron Technology, Inc. | Signed division in memory |
US11074988B2 (en) | 2016-03-22 | 2021-07-27 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10120740B2 (en) | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
US10388393B2 (en) | 2016-03-22 | 2019-08-20 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10977033B2 (en) | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
US10474581B2 (en) | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
US10074416B2 (en) | 2016-03-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10430244B2 (en) | 2016-03-28 | 2019-10-01 | Micron Technology, Inc. | Apparatuses and methods to determine timing of operations |
US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10607665B2 (en) | 2016-04-07 | 2020-03-31 | Micron Technology, Inc. | Span mask generation |
US9818459B2 (en) | 2016-04-19 | 2017-11-14 | Micron Technology, Inc. | Invert operations using sensing circuitry |
US10153008B2 (en) | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US9659605B1 (en) | 2016-04-20 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10042608B2 (en) | 2016-05-11 | 2018-08-07 | Micron Technology, Inc. | Signed division in memory |
US9659610B1 (en) | 2016-05-18 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for shifting data |
US10049707B2 (en) | 2016-06-03 | 2018-08-14 | Micron Technology, Inc. | Shifting data |
US10387046B2 (en) | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
US9679661B1 (en) * | 2016-06-28 | 2017-06-13 | Sandisk Technologies Llc | Non-volatile storage system with self-test for read performance enhancement feature setup |
US10037785B2 (en) | 2016-07-08 | 2018-07-31 | Micron Technology, Inc. | Scan chain operation in sensing circuitry |
US10388360B2 (en) | 2016-07-19 | 2019-08-20 | Micron Technology, Inc. | Utilization of data stored in an edge section of an array |
US10387299B2 (en) | 2016-07-20 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods for transferring data |
US10733089B2 (en) | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
US9767864B1 (en) | 2016-07-21 | 2017-09-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in a sensing circuitry element |
US9972367B2 (en) | 2016-07-21 | 2018-05-15 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10303632B2 (en) | 2016-07-26 | 2019-05-28 | Micron Technology, Inc. | Accessing status information |
US10468087B2 (en) | 2016-07-28 | 2019-11-05 | Micron Technology, Inc. | Apparatuses and methods for operations in a self-refresh state |
US9990181B2 (en) | 2016-08-03 | 2018-06-05 | Micron Technology, Inc. | Apparatuses and methods for random number generation |
US11029951B2 (en) | 2016-08-15 | 2021-06-08 | Micron Technology, Inc. | Smallest or largest value element determination |
US9672940B1 (en) | 2016-08-18 | 2017-06-06 | Sandisk Technologies Llc | Non-volatile memory with fast read process |
US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
US10387058B2 (en) | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
US10014034B2 (en) | 2016-10-06 | 2018-07-03 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10529409B2 (en) | 2016-10-13 | 2020-01-07 | Micron Technology, Inc. | Apparatuses and methods to perform logical operations using sensing circuitry |
US9805772B1 (en) | 2016-10-20 | 2017-10-31 | Micron Technology, Inc. | Apparatuses and methods to selectively perform logical operations |
US10373666B2 (en) | 2016-11-08 | 2019-08-06 | Micron Technology, Inc. | Apparatuses and methods for compute components formed over an array of memory cells |
US10423353B2 (en) | 2016-11-11 | 2019-09-24 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
US9761300B1 (en) | 2016-11-22 | 2017-09-12 | Micron Technology, Inc. | Data shift apparatuses and methods |
US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
US10268389B2 (en) | 2017-02-22 | 2019-04-23 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10403352B2 (en) | 2017-02-22 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for compute in data path |
US10838899B2 (en) | 2017-03-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for in-memory data switching networks |
US11222260B2 (en) | 2017-03-22 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for operating neural networks |
US10185674B2 (en) | 2017-03-22 | 2019-01-22 | Micron Technology, Inc. | Apparatus and methods for in data path compute operations |
US10049721B1 (en) | 2017-03-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10318381B2 (en) * | 2017-03-29 | 2019-06-11 | Micron Technology, Inc. | Selective error rate information for multidimensional memory |
US10043570B1 (en) | 2017-04-17 | 2018-08-07 | Micron Technology, Inc. | Signed element compare in memory |
US10147467B2 (en) | 2017-04-17 | 2018-12-04 | Micron Technology, Inc. | Element value comparison in memory |
US9997212B1 (en) | 2017-04-24 | 2018-06-12 | Micron Technology, Inc. | Accessing data in memory |
US10942843B2 (en) | 2017-04-25 | 2021-03-09 | Micron Technology, Inc. | Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes |
US10236038B2 (en) | 2017-05-15 | 2019-03-19 | Micron Technology, Inc. | Bank to bank data transfer |
US10068664B1 (en) | 2017-05-19 | 2018-09-04 | Micron Technology, Inc. | Column repair in memory |
US10013197B1 (en) | 2017-06-01 | 2018-07-03 | Micron Technology, Inc. | Shift skip |
US10152271B1 (en) | 2017-06-07 | 2018-12-11 | Micron Technology, Inc. | Data replication |
US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
US10318168B2 (en) | 2017-06-19 | 2019-06-11 | Micron Technology, Inc. | Apparatuses and methods for simultaneous in data path compute operations |
KR20190001417A (ko) * | 2017-06-27 | 2019-01-04 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그 동작 방법 |
KR102326659B1 (ko) * | 2017-07-19 | 2021-11-16 | 삼성전자주식회사 | 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템 |
US10162005B1 (en) | 2017-08-09 | 2018-12-25 | Micron Technology, Inc. | Scan chain operations |
US10534553B2 (en) | 2017-08-30 | 2020-01-14 | Micron Technology, Inc. | Memory array accessibility |
US10346092B2 (en) | 2017-08-31 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations using timing circuitry |
US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
US10741239B2 (en) | 2017-08-31 | 2020-08-11 | Micron Technology, Inc. | Processing in memory device including a row address strobe manager |
US10409739B2 (en) | 2017-10-24 | 2019-09-10 | Micron Technology, Inc. | Command selection policy |
KR20190053646A (ko) * | 2017-11-10 | 2019-05-20 | 에스케이하이닉스 주식회사 | 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법 |
KR102406868B1 (ko) * | 2017-11-23 | 2022-06-10 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법 |
US10522210B2 (en) | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
US10614875B2 (en) | 2018-01-30 | 2020-04-07 | Micron Technology, Inc. | Logical operations using memory cells |
US10437557B2 (en) | 2018-01-31 | 2019-10-08 | Micron Technology, Inc. | Determination of a match between data values stored by several arrays |
US11194477B2 (en) | 2018-01-31 | 2021-12-07 | Micron Technology, Inc. | Determination of a match between data values stored by three or more arrays |
US10725696B2 (en) | 2018-04-12 | 2020-07-28 | Micron Technology, Inc. | Command selection policy with read priority |
US10440341B1 (en) | 2018-06-07 | 2019-10-08 | Micron Technology, Inc. | Image processor formed in an array of memory cells |
US10795810B2 (en) * | 2018-09-10 | 2020-10-06 | Micron Technology, Inc. | Wear-leveling scheme for memory subsystems |
US10978028B2 (en) * | 2018-09-17 | 2021-04-13 | Apple Inc. | Correction for defective memory of a memory-in-pixel display |
US10769071B2 (en) | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
US11175915B2 (en) | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US10483978B1 (en) | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
US11237902B2 (en) * | 2019-03-15 | 2022-02-01 | Innogrit Technologies Co., Ltd. | Systems and methods for an ECC architecture with memory mapping |
US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
US11360768B2 (en) | 2019-08-14 | 2022-06-14 | Micron Technolgy, Inc. | Bit string operations in memory |
US11436071B2 (en) | 2019-08-28 | 2022-09-06 | Micron Technology, Inc. | Error control for content-addressable memory |
KR20210051803A (ko) | 2019-10-31 | 2021-05-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 컨트롤러 |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
CN113297014B (zh) * | 2020-02-22 | 2024-03-08 | 广州希姆半导体科技有限公司 | 待测内存容量的识别方法及装置、电子设备及存储介质 |
CN113495672B (zh) | 2020-04-01 | 2023-08-11 | 长鑫存储技术有限公司 | 读写方法及存储器装置 |
CN113495671B (zh) | 2020-04-01 | 2023-10-17 | 长鑫存储技术有限公司 | 读写方法及存储器装置 |
EP3964941B1 (de) | 2020-04-01 | 2024-02-28 | Changxin Memory Technologies, Inc. | Lese-schreib-verfahren und speichervorrichtung |
CN113495675B (zh) | 2020-04-01 | 2023-08-11 | 长鑫存储技术有限公司 | 读写方法及存储器装置 |
EP3964940A4 (de) | 2020-04-01 | 2022-08-17 | Changxin Memory Technologies, Inc. | Lese-/schreib-verfahren und speichervorrichtung |
EP3985494B1 (de) | 2020-04-01 | 2024-01-17 | Changxin Memory Technologies, Inc. | Lese-schreib-verfahren und speichervorrichtung |
EP3936996A4 (de) | 2020-04-01 | 2022-07-06 | Changxin Memory Technologies, Inc. | Lese-schreib-verfahren und speichervorrichtung |
CN113495674B (zh) | 2020-04-01 | 2023-10-10 | 长鑫存储技术有限公司 | 读写方法及存储器装置 |
CN113495677B (zh) * | 2020-04-01 | 2023-10-10 | 长鑫存储技术有限公司 | 读写方法及存储器装置 |
US11227641B1 (en) | 2020-07-21 | 2022-01-18 | Micron Technology, Inc. | Arithmetic operations in memory |
US11656938B2 (en) * | 2020-09-28 | 2023-05-23 | Micron Technology, Inc. | Preemptive read verification after hardware write back |
US11989417B1 (en) * | 2022-10-31 | 2024-05-21 | Nxp Usa, Inc. | Column repair in a memory system using a repair cache |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6236602B1 (en) * | 2000-05-25 | 2001-05-22 | Robert Patti | Dynamic configuration of storage arrays |
US7233054B1 (en) * | 2005-11-29 | 2007-06-19 | Korea Institute Of Science And Technology | Phase change material and non-volatile memory device using the same |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4335459A (en) | 1980-05-20 | 1982-06-15 | Miller Richard L | Single chip random access memory with increased yield and reliability |
JP2617026B2 (ja) | 1989-12-22 | 1997-06-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 障害余裕性メモリ・システム |
JP2575557B2 (ja) | 1990-11-13 | 1997-01-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | スーパーコンピユータシステム |
US5418796A (en) | 1991-03-26 | 1995-05-23 | International Business Machines Corporation | Synergistic multiple bit error correction for memory of array chips |
KR970008188B1 (ko) | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US5465262A (en) | 1994-01-28 | 1995-11-07 | International Business Machines Corporation | Method and structure for providing error correction code and automatic parity sensing |
JPH0916479A (ja) * | 1995-06-29 | 1997-01-17 | Fuji Electric Co Ltd | 多機能保護リレー |
US5838614A (en) * | 1995-07-31 | 1998-11-17 | Lexar Microsystems, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
US5867642A (en) | 1995-08-10 | 1999-02-02 | Dell Usa, L.P. | System and method to coherently and dynamically remap an at-risk memory area by simultaneously writing two memory areas |
JPH09128302A (ja) * | 1995-11-01 | 1997-05-16 | Fujitsu Ltd | 不揮発性メモリへのデータアクセス方法 |
US5764878A (en) | 1996-02-07 | 1998-06-09 | Lsi Logic Corporation | Built-in self repair system for embedded memories |
US5706292A (en) | 1996-04-25 | 1998-01-06 | Micron Technology, Inc. | Layout for a semiconductor memory device having redundant elements |
US6006306A (en) * | 1997-07-02 | 1999-12-21 | Xylan Corporation | Integrated circuit with stage-implemented content-addressable memory cell |
US5974564A (en) * | 1997-07-31 | 1999-10-26 | Micron Electronics, Inc. | Method for remapping defective memory bit sets to non-defective memory bit sets |
TW446955B (en) | 1998-10-30 | 2001-07-21 | Siemens Ag | The read/write memory with self-testing device and its associated test method |
US6067262A (en) | 1998-12-11 | 2000-05-23 | Lsi Logic Corporation | Redundancy analysis for embedded memories with built-in self test and built-in self repair |
US6651202B1 (en) | 1999-01-26 | 2003-11-18 | Lsi Logic Corporation | Built-in self repair circuitry utilizing permanent record of defects |
JP3937214B2 (ja) | 1999-09-17 | 2007-06-27 | 株式会社ルネサステクノロジ | エラー訂正回数を記録する記憶装置 |
US6467048B1 (en) | 1999-10-07 | 2002-10-15 | Compaq Information Technologies Group, L.P. | Apparatus, method and system for using cache memory as fail-over memory |
US6848070B1 (en) | 1999-11-24 | 2005-01-25 | Intel Corporation | Error correcting code scheme |
JP4165990B2 (ja) * | 1999-12-20 | 2008-10-15 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法 |
US6941505B2 (en) | 2000-09-12 | 2005-09-06 | Hitachi, Ltd. | Data processing system and data processing method |
US6525966B1 (en) * | 2000-12-06 | 2003-02-25 | Advanced Micro Devices, Inc. | Method and apparatus for adjusting on-chip current reference for EEPROM sensing |
JP4059472B2 (ja) * | 2001-08-09 | 2008-03-12 | 株式会社ルネサステクノロジ | メモリカード及びメモリコントローラ |
US7120068B2 (en) | 2002-07-29 | 2006-10-10 | Micron Technology, Inc. | Column/row redundancy architecture using latches programmed from a look up table |
US6907505B2 (en) * | 2002-07-31 | 2005-06-14 | Hewlett-Packard Development Company, L.P. | Immediately available, statically allocated, full-logical-unit copy with a transient, snapshot-copy-like intermediate stage |
EP1394810B1 (de) * | 2002-08-13 | 2007-10-10 | STMicroelectronics S.r.l. | Nichtflüchtige Speicheranordnung und Selbstreparatur-Verfahren |
US7174440B2 (en) * | 2002-10-28 | 2007-02-06 | Sandisk Corporation | Method and apparatus for performing block caching in a non-volatile memory system |
US20050120265A1 (en) | 2003-12-02 | 2005-06-02 | Pline Steven L. | Data storage system with error correction code and replaceable defective memory |
DE102004027423A1 (de) | 2004-06-04 | 2006-07-20 | Infineon Technologies Ag | Speicherschaltung mit redundanten Speicherbereichen |
KR100622349B1 (ko) | 2004-08-04 | 2006-09-14 | 삼성전자주식회사 | 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법. |
US7519875B2 (en) | 2004-08-20 | 2009-04-14 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and apparatus for enabling a user to determine whether a defective location in a memory device has been remapped to a redundant memory portion |
US7644323B2 (en) | 2004-11-30 | 2010-01-05 | Industrial Technology Research Institute | Method and apparatus of build-in self-diagnosis and repair in a memory with syndrome identification |
JP2006179101A (ja) | 2004-12-22 | 2006-07-06 | Fujitsu Ltd | 半導体記憶装置 |
KR100725390B1 (ko) * | 2005-01-06 | 2007-06-07 | 삼성전자주식회사 | 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법 |
US7346815B2 (en) | 2005-03-31 | 2008-03-18 | Intel Corporation | Mechanism for implementing redundancy to mask failing SRAM |
US8060774B2 (en) | 2005-06-24 | 2011-11-15 | Google Inc. | Memory systems and memory modules |
US20070006048A1 (en) | 2005-06-29 | 2007-01-04 | Intel Corporation | Method and apparatus for predicting memory failure in a memory system |
EP1881505A1 (de) * | 2006-07-20 | 2008-01-23 | STMicroelectronics S.r.l. | Speicher mit eingebauter Microprozessor zur selbstständigen Fehlersuche und Behebung |
US7757135B2 (en) | 2006-09-11 | 2010-07-13 | Mentor Graphics Corporation | Method and apparatus for storing and distributing memory repair information |
US7661004B2 (en) | 2006-10-30 | 2010-02-09 | Research In Motion Limited | Automatic power-up portable electronic device based on time-dependent event |
EP2095234B1 (de) * | 2006-11-21 | 2014-04-09 | Freescale Semiconductor, Inc. | Speichersystem mit ecc-einheit und weitere verarbeitungsanordnung |
JP4301301B2 (ja) * | 2007-02-05 | 2009-07-22 | ソニー株式会社 | 不揮発性半導体記憶装置およびその管理方法 |
US8028125B2 (en) * | 2007-08-27 | 2011-09-27 | Comtech Ef Data Corp. | Content-addressable memories and state machines for performing three-byte matches and for providing error protection |
US7515469B1 (en) * | 2007-09-27 | 2009-04-07 | Atmel Corporation | Column redundancy RAM for dynamic bit replacement in FLASH memory |
US20090132876A1 (en) | 2007-11-19 | 2009-05-21 | Ronald Ernest Freking | Maintaining Error Statistics Concurrently Across Multiple Memory Ranks |
WO2009140700A1 (en) | 2008-05-16 | 2009-11-19 | Fusion Multisystems, Inc. | Apparatus, system, and method for detecting and replacing failed data storage |
KR20100016987A (ko) * | 2008-08-05 | 2010-02-16 | 삼성전자주식회사 | 상 변화 메모리를 포함하는 컴퓨팅 시스템 |
KR101019986B1 (ko) | 2008-10-10 | 2011-03-09 | 주식회사 하이닉스반도체 | 성장 방식에 의해 형성되는 콘택 구조를 절연시키는 절연막을 포함하는 상변화 메모리 소자, 이를 포함하는 반도체 소자, 및 그들의 제조방법 |
US7996736B2 (en) | 2008-10-26 | 2011-08-09 | Sandisk 3D Llc | Bad page marking strategy for fast readout in memory |
US7908530B2 (en) | 2009-03-16 | 2011-03-15 | Faraday Technology Corp. | Memory module and on-line build-in self-test method thereof for enhancing memory system reliability |
-
2009
- 2009-06-30 US US12/494,994 patent/US8412987B2/en active Active
-
2010
- 2010-05-28 KR KR1020100050111A patent/KR101647845B1/ko active IP Right Grant
- 2010-06-15 TW TW099119459A patent/TWI484330B/zh active
- 2010-06-29 CN CN201010219745.9A patent/CN101937374B/zh active Active
- 2010-06-29 JP JP2010148353A patent/JP5996838B2/ja active Active
- 2010-06-30 DE DE102010030745.9A patent/DE102010030745B4/de active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6236602B1 (en) * | 2000-05-25 | 2001-05-22 | Robert Patti | Dynamic configuration of storage arrays |
US7233054B1 (en) * | 2005-11-29 | 2007-06-19 | Korea Institute Of Science And Technology | Phase change material and non-volatile memory device using the same |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102020202632A1 (de) | 2020-03-02 | 2021-09-02 | Robert Bosch Gesellschaft mit beschränkter Haftung | Inferenzberechnung für neuronale Netzwerke mit Schutz gegen Speicherfehler |
Also Published As
Publication number | Publication date |
---|---|
CN101937374B (zh) | 2015-07-01 |
TWI484330B (zh) | 2015-05-11 |
KR101647845B1 (ko) | 2016-08-11 |
JP2011040051A (ja) | 2011-02-24 |
JP5996838B2 (ja) | 2016-09-21 |
TW201126329A (en) | 2011-08-01 |
KR20110001882A (ko) | 2011-01-06 |
CN101937374A (zh) | 2011-01-05 |
DE102010030745A1 (de) | 2011-01-05 |
US8412987B2 (en) | 2013-04-02 |
US20100332895A1 (en) | 2010-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102010030745B4 (de) | Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen | |
DE102010030750A1 (de) | Bitfehlerschwelle und inhaltsadressierbarer Speicher zur Adressierung einer umabgebildeten Speichereinheit | |
DE102010030748A1 (de) | Bitfehlerschwelle und Umabbildung einer Speicheranordnung | |
DE112018004256T5 (de) | Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen | |
DE102018123891A1 (de) | Handhabung nichtabgestimmter Schreibvorgänge | |
DE112019005369T5 (de) | Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust | |
DE112020000178T5 (de) | Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen | |
DE112013003255B4 (de) | Managementmechanismus für fehlerhafte Blöcke | |
DE112020000184T5 (de) | In zonen unterteilte namensräume in festkörperlaufwerken | |
DE102020112512A1 (de) | Datenspeichergerät und Betriebsverfahren dafür | |
DE102019117787B4 (de) | Speichervorrichtung und Betriebsverfahren derselben | |
DE112018004251T5 (de) | Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich | |
DE102011075814B4 (de) | Speicherpuffer mit zugänglicher Information nach einem Schreibfehler | |
DE112015004863T5 (de) | Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen | |
DE112015000378T5 (de) | Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher | |
DE112008000180T5 (de) | Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems | |
DE112010003887T5 (de) | Datenverwaltung in Halbleiter-Speichereinheiten | |
DE112018006329T5 (de) | Speichervorrichtungen, systeme und verfahren zum aktualisieren von firmware mit einer einzelnen speichervorrichtung | |
DE112018000230T5 (de) | System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers | |
DE112019000161T5 (de) | Speicher-cache-verwaltung | |
DE112020005350T5 (de) | Aktualisieren von korrigierenden lesespannung-offsetwerten in nichtflüchtigen direktzugriffsspeichern | |
DE102018123670A1 (de) | Speicherungssystem, Rechensystem und Verfahren dafür | |
DE102021107475A1 (de) | Kalibrieren von leseschwellenwerten eines nichtflüchtigen speichers | |
DE112017004916T5 (de) | Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse | |
DE112020005395T5 (de) | Kapazitätserweiterung für speicher-untersysteme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R082 | Change of representative |
Representative=s name: VIERING, JENTSCHURA & PARTNER, DE Representative=s name: VIERING, JENTSCHURA & PARTNER, 40476 DUESSELDORF, |
|
R081 | Change of applicant/patentee |
Owner name: MICRON TECHNOLOGY, INC., BOISE, US Free format text: FORMER OWNER: NUMONYX B.V., ROLLE, CH Effective date: 20120521 Owner name: MICRON TECHNOLOGY, INC., US Free format text: FORMER OWNER: NUMONYX B.V., ROLLE, CH Effective date: 20120521 |
|
R082 | Change of representative |
Representative=s name: VIERING, JENTSCHURA & PARTNER MBB PATENT- UND , DE Effective date: 20120521 Representative=s name: VIERING, JENTSCHURA & PARTNER PATENT- UND RECH, DE Effective date: 20120521 Representative=s name: VIERING, JENTSCHURA & PARTNER, DE Effective date: 20120521 |
|
R012 | Request for examination validly filed |
Effective date: 20130314 |
|
R082 | Change of representative |
Representative=s name: VIERING, JENTSCHURA & PARTNER MBB PATENT- UND , DE Representative=s name: VIERING, JENTSCHURA & PARTNER PATENT- UND RECH, DE |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |