-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf Speichervorrichtungen und insbesondere auf Ausführungsformen, die sich auf die Sicherheit und verbesserte Leistungen beim Lesen und Programmieren von Daten in nichtflüchtigen Speichervorrichtungen beziehen.
-
Ausführungsformen der vorliegenden Offenbarung beziehen sich insbesondere auf ein Verfahren zum Neutrimmen der Einstellung einer Speicherkomponente, um die Cross-Temp-Robustheit der Speichervorrichtung zu verbessern.
-
STAND DER TECHNIK
-
Speichervorrichtungen sind auf dem elektronischen Gebiet gut bekannt, um digitale Informationen zu speichern und darauf zuzugreifen. Im Allgemeinen können verschiedene Arten von Halbleiterspeichervorrichtungen in komplexere Systeme eingebaut werden, die entweder nichtflüchtige Speicherkomponenten sowie flüchtige Speicherkomponenten umfassen, beispielsweise in sogenannten System-on-Chips (SoC), bei denen der oben erwähnte Speicher Komponenten eingebettet sind.
-
Heutzutage erfordert jedoch der Bedarf an Echtzeit-Betriebssystemen, insbesondere für Automobilanwendungen, SoC mit immer mehr Leistung und Effizienz und die bekannten Lösungen erfüllen diese Anforderungen teilweise, jedoch nicht kosten- und ertragswirksam.
-
Nichtflüchtiger Speicher kann persistente Daten bereitstellen, indem er gespeicherte Daten beibehält, wenn er nicht mit Strom versorgt wird, und kann unter anderem NAND-Flash-Speicher, NOR-Flash-Speicher, 3DXP-Speicher, MRAMs, STTRAM und CBRAMs umfassen. NAND-Flash hat kürzere Lösch- und Schreibzeiten und erfordert weniger Chipfläche pro Zelle, wodurch eine höhere Speicherdichte und niedrigere Kosten pro Bit als NOR-Flash ermöglicht werden. Die I/O-Schnittstelle von NAND-Flash bietet jedoch keinen externen Adressbus mit wahlfreiem Zugriff. Vielmehr müssen Daten blockweise gelesen werden, mit typischen Blockgrößen von Hunderten bis Tausenden von Bits.
-
Flash-Speicherbauelemente leiden unter Temperaturschwankungen, insbesondere dem Anstieg der Temperatur während ihres Betriebs. Der Grund liegt hauptsächlich in der Tatsache begründet, dass, wenn die den Speicher bildenden Floating-Gates in Gegenwart einer höheren Temperatur vorgespannt werden, ein Energieniveau erreichen kann, das ausreicht, um einen Sprung in den Kanal zu ermöglichen, und die Folge ist ein Ladungsverlust. Bei anderen Technologien, die beispielsweise Ladungsfallen verwenden, beschleunigt die hohe Temperatur die Rekombination und bedeutet den Verlust der gespeicherten Informationen. Diese Probleme beeinträchtigen die Sicherheit und Korrektheit der aus dem Speichergerät gelesenen Daten.
-
Ein Ziel der vorliegenden Offenbarung besteht darin, eine Flash-Speichervorrichtung und ein Leseverfahren für Flash-Speichervorrichtungen bereitzustellen, die den Einfluss von Alter und Temperatur auf die Leistung der Speichervorrichtung reduzieren, wodurch das Risiko des Informationsverlusts verringert wird.
-
Figurenliste
-
- 1 zeigt eine schematische Ansicht eines Systems mit einer Speicherkomponente, die einem Controller zugeordnet ist, der Daten-, Adress- und Steuersignale mit der Speichervorrichtung austauscht;
- 2 ist eine schematische Ansicht der Speicherkomponente gemäß der vorliegenden Offenbarung;
- 3 ist eine schematische Ansicht der Speicherkomponente gemäß der vorliegenden Offenbarung;
- 4 ist eine schematische Ansicht eines Speicherblocks, der durch eine Vielzahl von Zeilen eines Speicherarrays gemäß einer Ausführungsform der vorliegenden Offenbarung gebildet wird;
- 5 ist eine schematische Ansicht einer Gruppe von Adressregistern für eine Speicherseite im Speicherabschnitt der vorliegenden Offenbarung;
- 6 zeigt in einem schematischen Diagramm die Verteilung einer gut gelöschten/programmierten Zelle (1 Bit/Zelle);
- 7 eigt ein Diagramm entsprechend 6, das eine vergrößerte Verteilung zeigt, die aufgrund von Alterung, Temperatur und Belastung in Richtung des Verarmungszustands (negatives Vth) verschoben ist;
- 8 zeigt in einem Blockdiagramm die Phasen eines Verfahrens gemäß der vorliegenden Offenbarung.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen verwiesen, die einen Teil dieses Dokuments bilden und in denen zur Veranschaulichung bestimmte Ausführungsformen dargestellt sind. In den Zeichnungen beschreiben gleiche Bezugszeichen in den verschiedenen Ansichten im Wesentlichen ähnliche Komponenten. Es können auch andere Ausführungsformen offenbart werden, und es können strukturelle, logische und elektrische Änderungen vorgenommen werden, ohne vom Anwendungsbereich der vorliegenden Offenbarung abzuweichen. Die folgende detaillierte Beschreibung ist deshalb nicht in einschränkendem Sinn aufzufassen.
-
Mehrere Ausführungsformen der vorliegenden Offenbarung richten sich auf Speicherbauelemente, Systeme mit Speicherbauelementen und Verfahren zum Betreiben von Speicherbauelementen, die potentiellen Probleme des Alterns, der Temperatur und der Prozessdrift während des Speicherbetriebs vermeiden.
-
In einer Ausführungsform der vorliegenden Offenbarung wird eine neue Speicherarchitektur für eine verbesserte Sicherheit und Leistung der Datenlesephase in der nichtflüchtigen Speichervorrichtung bereitgestellt.
-
Insbesondere bezieht sich die vorliegende Offenbarung auf eine nichtflüchtige Speichervorrichtung, die mindestens ein Array von Speicherzellen mit einer Vielzahl von Speicherblöcken umfasst;
- - mindestens eine Dummy-Zeile für jeden Block zum Speichern mindestens eines bekannten Musters;
- - einen Controller des Speichergeräts;
- - von der Steuerung angesteuerte Leseschaltungen zum Lesen des in der Dummy-Reihe gespeicherten bekannten Musters durch Ausführen einiger Lesezyklen und Ändern der gelesenen Trimmparameter bis zu dem Moment, in dem der Wert des bekannten Musters korrekt gelesen wird.
-
Das bekannte Muster ist dem Speichercontroller bekannt.
-
Darüber hinaus entsprechen die geänderten Trimmparameter des korrekten Messwerts einem eingestellten Temperaturwert, der in einem programmierbaren Register auf Werksebene aufgezeichnet wurde.
-
In dieser Dummy-Zeile sind auch interne Blockvariablen der Lese- und/oder Löschphase gespeichert. Diese internen Blockvariablen sind Parameter wie die Leseimpulse und/oder die während der Lesephase an den Speicherblock angelegten Zielspannungen.
-
Für ein besseres Verständnis der vorliegenden Offenbarung sollte beachtet werden, dass Flash-Speicher typischerweise ein Basisspeicherelement verwenden. Beispielsweise wird ein Transistor als Speicherelement in allen Technologien verwendet, die ein Floating-Gate, eine Ladungsfalle, ein Split-Gate und dergleichen verwenden. Andere Technologien wie der 3D-XPoint-Speicher oder der Phase Change Memory verwenden eine andere Art von Basisspeicherelement. In allen Fällen besteht jedoch die Notwendigkeit, die gespeicherten Daten rechtzeitig zu verwalten und diese Daten schneller zu lesen.
-
Wenn ein Speicherarray adressiert wird, kann es eine oder mehrere Schichten der Adressübersetzung geben, beispielsweise eine Übersetzung zwischen einer logischen Adresse, die von einem Host-Gerät verwendet wird, und einer physikalischen Adresse, die einer Stelle in dem Speicherarray entspricht. Ein solcher Mechanismus ist sehr nützlich, um erweiterte Funktionen wie Block Wear Leveling und oder Factory/On Field Block Redundanz zu implementieren.
-
Obwohl es ungewöhnlich ist, kann es vorkommen, dass während eines Löschvorgangs ein Stromausfall auftritt. In einem solchen Szenario ist es sehr wichtig, über einen Mechanismus zu verfügen, der die Erkennung von nicht gut oder unvollständig gelöschten Blöcken ermöglicht. Eine Löschunterbrechung verursacht einige Probleme:
- 1) Daten können nicht programmiert werden, da der Speicherblock programmierte Bits anzeigen kann;
- 2) der Block kann als gelöscht erscheinen, hat aber Zuverlässigkeit, d.h. Probleme bei der Datenspeicherung;
- 3) der Block kann an bestimmten Stellen aufgrund erschöpfter Zellen defekt erscheinen.
-
Da ein nicht gut gelöschter Block nicht programmiert werden kann, wäre es äußerst wichtig, während einer Programmierphase eines Blocks, in dem ein Stromausfall aufgetreten ist, jeden unerklärlichen Fehler zu vermeiden.
-
In einigen Ausführungsformen werden bei jeder Einschalt- und/oder Rücksetzphase und/oder auf Benutzeranforderung alle Blöcke in dem Array überprüft, um zu bestimmen, ob einige von ihnen in einem Stromausfallzustand sind. Dies kann durch Verifizieren des Vorhandenseins des bekannten Musters in der oben erwähnten Dummy-Reihe erfolgen.
-
Bei Stromausfall:
- - eine Warnmeldung kann das Host-Gerät erreichen, wenn eine Leseoperation des Statusregisters durchgeführt wird; und/oder
- - Ein Löschen eines solchen Blocks wird durchgeführt, um den gesamten Block wiederherzustellen. Dies kann automatisch während des Einschaltens und/oder wenn das Problem auf Host-Befehl erkannt wird, passieren. Diese Maßnahmen verhindern jedoch nicht das Problem.
-
Darüber hinaus kann es vorkommen, dass Temperaturschwankungen innerhalb eines Geräts zu Messwertdriften führen, die als Geistertemperaturproblem bezeichnet werden.
-
Der mit solchen Temperaturschwankungen verbundene Nachteil wirkt sich auf die reale Bitverteilung aus, die von den Leseverstärkern als verschoben in Bezug auf den idealen Zentralwert, für den sie programmiert wurden, erfasst wird.
-
Um nur ein praktisches Beispiel zu geben: Wenn die Programmierphase bei -40°C durchgeführt wurde, kann es vorkommen, dass bei 120°C die Leseergebnisse viele Fehler enthalten. Dies ist ein echtes Problem für alle Chips, die in Automobilvorrichtungen eingebaut sind, bei denen eine Erhöhung der Temperatur während des Betriebs eines Fahrzeugs berücksichtigt werden muss; außerdem verschiebt oder vergrößert ein Temperaturanstieg entweder die Verteilung der gut gelöschten/programmierten Zellen nach links und/oder nach rechts.
-
Daher wird die Lesephase der Speichervorrichtung meistens unter Umgebungsbedingungen durchgeführt, die der ursprünglichen Programmierphase ähnlich sind; dies gilt auch für die Löschphase.
-
Ein Speichergerät kann als eine Art „Echtzeit“-Gerät in dem Sinne definiert werden, dass es zuverlässige Daten in allen Umgebungsbetriebszuständen freigeben muss, unabhängig davon, ob es in der Fabrik getestet wurde, die aufgrund positiver Testergebnisse eine Zulassung meldet.
-
Darüber hinaus wird die temperaturbedingte Drift durch das Alter des Geräts weiter erhöht, und dieses Problem könnte bei Speichergeräten, die in System-on-Chip-fahrende autonome Fahrzeuge integriert sind, besonders heikel sein.
-
1 veranschaulicht ein schematisches Beispiel eines Systems 10, das eine Flash-Speichervorrichtung 100 enthält. Das System beinhaltet auch eine Speichersteuerung 101, die an die Speichervorrichtung 100 gekoppelt ist.
-
Die Steuerung 101 ist über einen Datenbus 105, einen Steuerbus 106 und einen Adressbus 107 mit der Speichervorrichtung 100 gekoppelt gezeigt. In einer Ausführungsform könnte der Datenbus ein 64-Bit- und/oder 128-Bitbreiter Double-Data-Rate-(DDR)-Bus sein.
-
Das in 1 gezeigte Systemgerät 10 kann ein Host-Gerät oder ein mit der Speicherkomponente 100 gekoppeltes System-on-Chip sein, wie aus der Beschreibung anderer Ausführungsformen der vorliegenden Offenbarung hervorgeht, die unter Bezugnahme auf andere Figuren erfolgt. In jedem Fall werden ein Teil des System-on-Chip 10 und der Speicherbaustein 100 auf einem entsprechenden Chip realisiert, der mit einem anderen Lithografieverfahren hergestellt wird. In der folgenden Beschreibung durch SoC kann es sich um einen Teil des gesamten Systems (z. B. den Abschnitt, mit dem die Speichervorrichtung gekoppelt ist) oder das System als Ganzes, z. B. die Kombination aus dem Hostvorrichtungsabschnitt und der Speichervorrichtung, gemeint sein.
-
Die Speicherkomponente 100 ist eine unabhängige Struktur, aber sie ist strikt dem Host-Gerät oder der SoC-Struktur zugeordnet. Insbesondere ist die Speichervorrichtung 100 mit der SoC-Struktur verbunden und verknüpft, die eine solche Struktur teilweise überlappt, während der entsprechende Halbleiterbereich der SoC-Struktur für andere logische Schaltungen und zur Unterstützung der teilweise überlappenden, strukturell unabhängigen Speichervorrichtung 100 verwendet wurde, beispielsweise durch eine Vielzahl von Pfeilern oder andere ähnliche alternative Verbindungen wie Bumping Balls oder mit einer Flip-Chip-ähnlichen Technologie.
-
Genauer gesagt umfasst die nichtflüchtige Speicherkomponente 100 mit Bezug auf 2 ein Array 90 von Flash-Speicherzellen und eine um das Speicherarray herum angeordnete Schaltung, wie unten ausführlicher beschrieben wird. Die Kopplung zwischen der SoC-Struktur 10 und der Speicherkomponente 100 wird durch die Verbindung einer Vielzahl von entsprechenden Pads oder Stiftanschlüssen erreicht, die einander in einem Schaltungslayout gegenüberliegen, das die Ausrichtung der Pads beibehält, selbst wenn die Größe der Speicherkomponente geändert wird.
-
In einer Ausführungsform der vorliegenden Offenbarung wurde die Anordnung der Pads der Speicherkomponente auf einer Oberfläche der Speicherkomponente 100, in der Praxis auf der Oberseite des Arrays, realisiert. Genauer gesagt sind die Pads über dem Array so angeordnet, dass, wenn die Speicherkomponente 100 umgedreht wird, ihre Pads den entsprechenden Pads der Host- oder SoC-Struktur 10 zugewandt sind.
-
Am Ende wird das Speicherbauteil 100 nach den Bedürfnissen des Benutzers in einem Wertebereich hergestellt, der je nach verfügbarer Technologie variieren kann, z. B. von mindestens 128 Mbit bis 512 Mbit oder sogar mehr, ohne dass die Rechte des Antragstellers eingeschränkt werden. Genauer gesagt ermöglicht die vorgeschlagene externe Architektur die Überschreitung der Grenzen der derzeitigen eFlash-Technologie (d.h. eingebettete Flash-Technologie), was die Integration eines größeren Speichers ermöglicht, da dieser je nach Speichertechnologie und Technologieknoten 512Mbit und/oder 1Gbit und/oder mehr betragen kann.
-
Die endgültige Konfiguration wird eine Face-to-Face-Verbindung SoC/Flash Array sein, bei der die Leseverstärker mit dem SoC in einer Direktspeicherzugriffskonfiguration für Benutzermodi mit Hochfrequenzzugriffen verbunden sind.
-
Der direkte Speicherzugriff ermöglicht es, die endgültige Latenz zu reduzieren, die der SoC beim Lesen der Daten erfahren kann. Darüber hinaus wird die endgültige Latenzzeitauch durch den Blockformfaktor, die Verteilung der Leseverstärker zwischen den Blöcken, die Auswahl der Vergleichsschwelle in den Leseverstärkern und den optimierten Pfad reduziert.
-
Für ein besseres Verständnis des Prinzips der vorliegenden Offenbarung sollte angemerkt werden, dass ein direkter Speicherzugriff ein Merkmal von Computersystemen ist, das es bestimmten Hardware-Subsystemen ermöglicht, auf den Hauptsystemspeicher (im Allgemeinen flüchtig, wie z CPU (Zentraleinheit).
-
Genauer gesagt wird DMA verwendet, wenn die CPU Speicher verwendet, und es wird typischerweise für einen gewissen Taktzyklus der Lese- oder Schreiboperation belegt. Somit dauert es immer dann, wenn die E/A-Geräte auf den Speicher zugreifen, viel Zeit, um die Daten in den und/oder aus dem Speicher zu bekommen.
-
Die E/A-Geräte leiten zuerst die Übertragung mit dem DMA-Controller ein, geben die Kontrolle über die Busse von der CPU ab, und dann führt die CPU andere Operationen aus, während die Übertragung läuft, und empfängt schließlich einen Interrupt vom DMA-Controller, wenn die Operation abgeschlossen ist, daher können von ihm nun Adress- oder Datenbusse für seine internen Operationen verwendet werden. Diese Funktion ist jederzeit nützlich, wenn die CPU mit der Datenübertragungsrate nicht Schritt halten kann oder wenn die CPU Arbeit ausführen muss, während sie auf eine relativ langsame E/A-Datenübertragung (Eingabe oder Ausgabe) wartet. Viele Hardwaresysteme verwenden DMA, einschließlich Festplattencontroller, Grafikkarten, Netzwerkkarten und Soundkarten.
-
DMA wird gemäß der vorliegenden Offenbarung für die Intra-Chip-Datenübertragung in Mehrkernprozessoren verwendet. Die Kerne mit DMA-Kanälen können Daten mit viel weniger CPU-Overhead zu und von den Speicherkomponenten übertragen als Kerne ohne DMA-Kanäle. In ähnlicher Weise kann ein Verarbeitungselement innerhalb eines Mehrkernprozessors Daten zu und von seinem lokalen Speicher übertragen, ohne seine Prozessorzeit zu belegen, wodurch Berechnung und Datenübertragung parallel ablaufen können.
-
Der direkte Speicherzugriff der vorliegenden Offenbarung verwendet Boundary-Scan-Zellen und Leseverstärker als ein System und Verfahren zum Adressieren des direkten Speicherzugriffsvorgangs und zum Lokalisieren der Speicheradresse zu einem spezifischen DMA-Flash-Array. Dabei wird eine modifizierte JTAG-Zellenstruktur implementiert, um eine Vergrößerung der bei einem Direktzugriff zu lesenden Speicherseiten zu ermöglichen.
-
Unter genauerer Bezugnahme auf das Beispiel von 2 wird die Hauptstruktur der Speicherkomponente 100 gemäß einer Ausführungsform der vorliegenden Offenbarung offengelegt.
-
Die Speicherkomponente 100 enthält mindestens: eine I/O-Schaltung 5, einen Mikrosequenzer 3, ein Array von Speicherzellen 90, Spannungs- und Stromreferenzgeneratoren 7, Ladungspumpen 2 und Decodierungsschaltungen 8, die sich an der Peripherie des Arrays oder unterhalb des befinden Array, Leseverstärker 9 und entsprechende Latches, eine Befehlsbenutzerschnittstelle, beispielsweise ein CUI-Block 4.
-
Das Array von Speicherzellen 90 enthält nichtflüchtige Flash-Speicherzellen. Die Zellen können in Blöcken gelöscht werden, anstatt ein Byte nach dem anderen. Jeder löschbare Speicherblock umfasst eine Vielzahl von nichtflüchtigen Speicherzellen, die in einer Matrix von Zeilen und Spalten angeordnet sind. Jede Zelle ist mit einer Zugangsleitung und/oder einer Datenleitung gekoppelt. Die Zellen werden durch Manipulation der Spannungen und des Timings auf den Zugriffs- und Datenleitungen programmiert und gelöscht.
-
Zum Beschreiben und Löschen der Speicherzellen des Arrays 90 ist ein spezieller logischer Schaltungsteil vorgesehen, der einen vereinfachten RISC-Controller (Reduced Instruction Set Computer) oder eine Modify Finite State Machine enthält, d. h. die logische Schaltung zur Handhabung der Programmier - und Löschalgorithmen.
-
Zum Lesen der Speicherzellen des Arrays 90 ist ein spezieller Schaltungsteil vorgesehen, der eine optimierte Read Finite State Machine (RISC) enthält, die für eine hohe Leseleistung sorgt, wie z. B. Verzweigungsvorhersage, Fetch/Pre-Fetch, Interrupt-Verwaltung und so weiter. Die Fehlerkorrektur wird als Operation dem SoC 10 überlassen; die zusätzlichen Bits werden dem Controller 101 bereitgestellt, um jedes mögliche ECC-Syndrom zu speichern, das der Seite zugeordnet ist. Die ECC-Zellen ermöglichen dem Host-Controller zu verstehen, ob eine Beschädigung der Daten plus Adressinhalt auftritt. Der ECC ermöglicht es dem Host auch, die empfangenen Daten zu korrigieren. der Host ist dafür verantwortlich, die Daten im Speicher basierend auf der in den empfangenen Daten vorgenommenen Korrektur zu fixieren.
-
Die oben beschriebenen Schreib- und Löschphasen werden von der Speichersteuerung innerhalb des Speichergeräts gehandhabt, da die interne Flash-Steuerung bei Lesevorgängen, die vom Host gesteuert werden, nicht arbeitet.
-
Unter genauerer Bezugnahme auf das Beispiel von 3 ist in einer Ausführungsform der vorliegenden Offenbarung das Speicherarray 90 als eine Sammlung von Unterarrays 120 aufgebaut. Auf diese Weise wird mit kleineren Sektoren im Vergleich zu bekannten Lösungen die Zugriffszeit erheblich reduziert und der gesamte Durchsatz des Speicherbauelements verbessert.
-
Der Vorteil dieser Architektur ist, dass sie sehr skalierbar ist und eine Erweiterung bzw. Verringerung der Dichte des Endgeräts nur durch Spiegelung eines Teilarrays und Herstellung der Verbindung erfolgt.
-
Das Host-Gerät oder das System-on-Chip 10 umfasst normalerweise mehr als einen Kern, und jeder Kern ist mit einem entsprechenden Bus oder Kanal zum Empfang und zur Übertragung von Daten an die Speicherkomponente 1 verbunden. Jedes Unterarray 120 hat Zugang zu einem entsprechenden Kanal, um mit einem entsprechenden Kern des System-on-Chip zu kommunizieren.
-
Der Kern des Host-Geräts kann über einige interne Pads Zugang zu einer JTAG-Schnittstelle haben. Solche Pads sind schnell und haben die Fähigkeit, die maximale Frequenz zu unterstützen. Solche Pads können jedoch keine analoge Spannung außerhalb des Flash-Arrays verwalten.
-
In Ausführungsformen der vorliegenden Offenlegung ermöglicht ein direkter Speicherzugriff (DMA) eine Verringerung der endgültigen Latenz, die der SoC beim Lesen der Daten erfahren kann.
-
Um die Probleme von in System-on-Chips eingebetteten Flash-Speicherbauelementen zu überwinden und eine sehr niedrige Anfangslatenz und einen hohen Durchsatz zu erzielen, wurde eine skalierbare, kostengünstige, effektive und zuverlässige Speichervorrichtung und ein Verfahren entwickelt, das den Abschluss des Lesevorgangs mit Daten, Adresse und ECC durch DMA-Flash-Array, wodurch sichergestellt wird, dass die Daten von genau demselben Speicherort gelesen werden müssen, den der Controller verlangt.
-
Bei näherer Betrachtung der internen Struktur der Speicherkomponente 100 ist festzustellen, dass die Architektur des Arrays 90 als eine Sammlung von Unterarrays 120 aufgebaut ist, wie in 3 schematisch dargestellt.
-
Jedes Unterarray 120 ist innerhalb der Speichervorrichtung 100 unabhängig adressierbar. Jedes Unterarray 120 enthält mehrere Speicherblöcke 160, wie in den 3 und 4 dargestellt.
-
Auf diese Weise wird mit kleineren Sektoren im Vergleich zu bekannten Lösungen die Zugriffszeit erheblich reduziert und der gesamte Durchsatz des Speicherbauelements verbessert. Die Reduzierung der anfänglichen Latenzzeit erfolgt auf Blockebene, da die Zeilen- und Spaltenleitungen, die mit dem Lesepfad verbundene Latenz und die externe Kommunikation optimiert wurden.
-
In den hier offenbarten Ausführungsformen ist das Speicherarray 90 mit einer Anzahl von Unterarrays 120 strukturiert, die mindestens der Anzahl der Kerne des zugehörigen SoC 10 und damit der Anzahl der entsprechenden Kommunikationskanäle entspricht. So sind beispielsweise mindestens vier Speicher-Unterarrays 120 vorgesehen, eines für jeden Kommunikationskanal mit einem entsprechenden Kern des SoC 10.
-
Das Host-Gerät oder das System-on-Chip 10 enthält normalerweise mehr als einen Kern, und jeder Kern ist mit einem entsprechenden Bus oder Kanal zum Empfang und zur Übertragung von Daten an die Speicherkomponente 100 verbunden.
-
Daher hat in der vorliegenden Implementierung jedes Unterarray 120 Zugang zu einem entsprechenden Kanal, um mit einem entsprechenden Kern des System-on-Chip 10 zu kommunizieren. Das Ergebnis der Speicherblöcke wird direkt auf den SoC übertragen, ohne Hochleistungspuffer zu verwenden und den Pfad zu optimieren.
-
Der Vorteil dieser Architektur besteht darin, dass sie sehr skalierbar ist, wobei sich das Erweitern und/oder Reduzieren der Dichte des Endgeräts nur in der Spiegelung eines Unterarrays und der Erzeugung der Verbindung oder der Erhöhung der Anzahl von Blöcken jedes Unterarrays, d. h. der verfügbaren, niederschlägt Dichte pro Kern.
-
Darüber hinaus ist in einer Ausführungsform der vorliegenden Offenbarung jedes Speicherunterarray 120 in Speicherblöcken 160 strukturiert, die in 4 schematisch gezeigt sind.
-
Jeder unabhängig adressierbare Speicherplatz der Blöcke eines jeden Speicher-Unterarrays 90 adressiert eine erweiterte Seite 150, die im Folgenden ebenfalls definiert wird, wobei der Begriff Superseite eine doppelte erweiterte Seite meint.
-
Anders gesagt, die atomare Seite von 128 Bit, die in jedem Unterarray 120 verwendet wird, um den Kommunikationskanal mit der SoC-Vorrichtung zu füllen, wurde in der vorliegenden Implementierung vergrößert, um die gespeicherte Adresse und den ECC zu enthalten.
-
Als nicht einschränkendes Beispiel umfasst diese erweiterte Seite 150 einen String, der eine erste Gruppe von mindestens N Bits umfasst, zum Beispiel einhundertachtundzwanzig (128) Bit für den E/A-Datenaustausch mit dem SoC-Gerät 10 plus bei mindestens eine zweite Gruppe von M Bits, beispielsweise vierundzwanzig (24) Adressbit und eine letzte oder dritte Gruppe von mindestens R Bits, beispielsweise sechzehn (16) ECC-Bit. Das M-Adress-Bit (im Beispiel die 24 Adress-Bits) reichen aus, um bis zu 2 GigaBit verfügbaren Speicherplatzes zu adressieren.
-
Gemäß der vorliegenden Offenbarung bereiten die Ausgänge der Leseverstärker SA jeweils eine doppelt erweiterte Seite vor, d.h. eine Superseite 150 mit einer Anzahl von Bits, die durch die doppelte Kombination der oben erwähnten drei Gruppen von Datenbits gegeben sind, Adresse Bits und ECC-Bits, entsprechend der Größe des Speicherarrays.
-
In dem hiermit offenbarten spezifischen, aber nicht einschränkenden Beispiel enthält jede erweiterte Seite 150 mindestens 168 Bit, die durch die Kombination der obigen drei Gruppen von N+M+R = 128 + 24 + 16 Daten, Adresse und ECC-Bit erhalten werden, und jedes Superseite wird durch ein paar erweiterte Seiten gebildet, d.h. eine Gruppe von 168 x 2 Bits.
-
Um nur ein nicht einschränkendes numerisches Beispiel zu geben, enthält jede Zeile eines Speicherblocks 160 sechzehn erweiterte Seiten. Daher enthält die resultierende Zeile 2688 Bit, die aus der Kombination von sechzehn erweiterten Seiten stammen, die unabhängig adressierbar sind und jede davon 168 Bit enthält, oder, anders gesagt, die Kombination von acht Superseiten.
-
Jeder Speicherblock enthält mindestens 256 Zeilen und jede Zeile enthält sechzehn Superseiten der obigen Größe. Jede Superseite enthält mindestens 168 Bits als Kombination aus Daten-, Adressierungs- und ECC-Bits. Daher kann jede Zeile des Speicherarrays bis zu sechzehn Doppelwörter von jeweils 32 Bits plus die Adress- und ECC-Syndrom-Ersatzbits pro Seite enthalten.
-
Um nur einen numerischen Wert anzugeben, wird eine Superseite aus 128 + 16 + 24 = 168 Bits gebildet, und sechzehn Superseiten pro Zeile umfassen 168 * 16 = 2688 Bits.
-
Daher enthält jede Zeile 135 eines Speicherblocks 160 mindestens sechzehn Seiten, die ein Speicherwort plus die entsprechenden Adressbits und die entsprechenden ECC-Bits umfassen.
-
Offensichtlich kann eine andere Größe ausgewählt werden und der berichtete Wert dient nur der Veranschaulichung eines nicht einschränkenden Beispiels. Das Ergebnis der Blöcke wird direkt vom Host-Gerät oder SoC 10 gesteuert, ohne Hochleistungs-Ausgangspuffer der bekannten Lösungen zu verwenden und den Pfad dank einer modifizierten und optimierten JTAG-Schnittstelle zu optimieren.
-
Die Ausgänge der Leseverstärker SA pro Unterarray 120 werden durch eine interne Schaltung einer Leseschnittstelle zwischengespeichert. Die Speicherstruktur kann erweitert werden, um das Lesen mehrerer Seiten zu ermöglichen, wobei die bereits gelesene Seite ausgelagert wird.
-
Die Leseverstärker SA sind direkt mit einer modifizierten JTAG-Zelle verbunden, die später offengelegt wird, um eine JTAG-Struktur und die Leseverstärker in einem einzigen Schaltungsteil zu integrieren. Dies ermöglicht es, die Verzögerung bei der Weitergabe der Ausgabe des Speicherarrays an den SoC so weit wie möglich zu reduzieren.
-
Wie bereits erwähnt, bereiten die internen Leseverstärker 9 zwei Seiten mit mindestens 128 Bits plus Adresse und ECC-Bits für insgesamt 168 Bits vor, und während die erste Seite zum Verschieben bereit ist, wird intern eine weitere Leseoperation von einer Sekunde durchgeführt Seite, die mit derselben Adresse verknüpft ist.
-
Dies ermöglicht die Vorbereitung von fünf bis acht Doppelworten, die für die RTOS-Anwendung typisch sind, wodurch die Leseverstärker eine weitere interne Leseoperation ausführen können, um das zweite Nibble oder die Gruppe von 168 Bits vorzubereiten, wenn das System mit zwei Seiten von 168 strukturiert ist Bits.Aus diesem Grund hat man sich für eine Doppelseite von 2x128bitplus entsprechende Adressen und ECC-Bits entschieden.
-
Dieser zweite Teil von vier Doppelwörtern wird an den Ausgang des Flash-Arrays 90 übertragen, wobei ein zusätzliches Freigabesignal (d. h. ein internes Taktsignal oder ein ADV-Signal) verwendet wird, das den auf Leseverstärkerebene gelesenen Inhalt an das Host-Gerät oder SoC-Gerät 10 überträgt. Die Signalnamen sind load_data [0, 1].... bei Verwendung der Superseite ist eine Adresserhöhung nicht erforderlich.
-
Die kombinierte Kette von Datenzellen + Adresszellen + ECC-Zellen ermöglicht die Implementierung der gesamten Sicherheitsabdeckung des Kommunikationskanals gemäß den Standardanforderungen der Regel ISO26262, da der Host zuerst den Datenstrom korrigiert, falls vorhanden, und dann die gesendeten vergleicht Adresse mit der empfangenen.
-
Darüber hinaus deckt der ECC die gesamte Buskommunikation (Datenzellen + Adresszellen) ab, während das Vorhandensein der Adresszellen die Gewissheit gibt, dass die Daten genau von der adressierten Stelle des Controllers kommen, d.h. wenn ADD == ADD0.
-
Für den Test der Speicherkomponente wird eine JTAG-Schnittstelle verwendet, die die Wiederverwendung des Testwerkzeugs ermöglicht. Die Speicherkomponente der vorliegenden Offenbarung umfasst auch eine JTAG-Logik mit einer JTAG-Schnittstelle.
-
Genauer gesagt enthält jedes Speicherfeld mindestens eine JTAG-Schnittstelle, die als Eingänge Standard-JTAG-Signale empfängt: TMS, TCK, TDI sowie Daten von einer Speicherseite, z. B. der in 5 schematisch dargestellten Seite. Gemäß den Ausführungsformen der vorliegenden Offenbarung wird ein flexibles TDI-Signal verwendet. Die Flexibilität beruht auf der Tatsache, dass die Anzahl der parallelen Bits, die als TDI arbeiten, von einem ausgewählten Register abhängt, d.h. dem Befehlsregister, dem Adressregister oder dem Datenregister usw.
-
Diese JTAG-Schnittstelle erzeugt als Ausgang Daten, Adressen und Steuersignale, die an einen Speicheradressdecoder und auch an den internen Flash-Controller übertragen werden, um Änderungs-, Test- und Verifizierungsvorgänge durchzuführen.
-
Die Aktivität des Decoders wird durch die erwähnten Ladungspumpen ermöglicht, die so strukturiert sind, dass sie die Spannungen und Timings zur Verwaltung des Arrays geheim halten. Die Dekodierungsphase treibt die Datenleitungen an, während die Ladungspumpen die vom Adressdecoder in die ausgewählten Datenleitungen geleitete Hochspannung bereitstellen.
-
Dieser Decoder adressiert den ausgewählten Speicherblock. Der Adressdecoder ist mit dem Array verbunden, um die richtigen Datenleitungen auszuwählen, d.h. Zeile und Spalte für jede Superseite. das Lesen, Modifizieren und alle anderen Operationen verwenden den Adressdecoder, um Bytes im Speicherarrayrichtig zu adressieren.
-
Die Speicherblöcke sind mit den Leseverstärkern verbunden und die Leseverstärker der Leseschnittstelle sind mit modifizierten JTAG-Zellen (in den Zeichnungen nicht gezeigt) verbunden, um eine JTAG-Struktur und die Leseverstärker in einem einzigen Schaltungsabschnitt zu integrieren. Dies ermöglicht es, die Verzögerung bei der Weitergabe der Ausgabe des Speicherarrays an den SoC so weit wie möglich zu reduzieren.
-
Jedes Unterarray 120 enthält mehrere Speicherblöcke. Die Unterarrays 120 bedienen jeden Kern des Host-Geräts und verwenden eine Schaltung mit optimiertem Blockformfaktor, um die niedrige Latenzzeit anzugehen.
-
Auf diese Weise wird mit kleineren Sektoren im Vergleich zu bekannten Lösungen die Zugriffszeit erheblich reduziert und der gesamte Durchsatz des Speicherbauelements verbessert.
-
Jedes Unterarray 1120 ist innerhalb der Speichervorrichtung 100 unabhängig adressierbar. Darüber hinaus ist das Speicherarray 90 mit mindestens vier Speicherunterarrays 120 strukturiert, eines für jeden Kommunikationskanal mit einem entsprechenden Kern der Hostvorrichtung oder des SoC 10. Das Host-Gerät oder das System-on-Chip 10 enthält normalerweise mehr als einen Kern, und jeder Kern ist mit einem entsprechenden Bus oder Kanal zum Empfang und zur Übertragung von Daten an die Speicherkomponente 100 verbunden.
-
Daher hat in der vorliegenden Implementierung jedes Unterarray 120 Zugang zu einem entsprechenden Kanal, um mit einem entsprechenden Kern des System-on-Chip 10 zu kommunizieren.
-
Ferner ist zu beachten, dass jedes Unterarray 120 Adressregister enthält, die mit Datenpufferregistern verbunden sind, ähnlich wie bei einer Architektur, die in einem DRAM-Speichergerät verwendet wird.
-
Darüber hinaus ist gemäß einer Ausführungsform der vorliegenden Offenbarung, wie in 4 gezeigt, jedem Block 160 des Speicherunterarrays 120 mindestens eine Dummy-Zeile 200 zugeordnet.
-
Diese Dummy-Zeile 200 befindet sich außerhalb des Adressraums des Speicherarrays 90 und wird zur Optimierung der Lese-, Schreib- und Löschparameter verwendet. Darüber hinaus wird diese Dummy-Reihe zur Überwachung der Löschrobustheit verwendet, um Modifizierungsoperationen und andere Zwecke gut abzuschließen.
-
Gemäß einer anderen Ausführungsform ist die Dummy-Zeile eines Blocks 160 in einem anderen Block des Speicherunterarrays 120 bereitgestellt.
-
Das Vorhandensein dieser Dummy-Zeile ermöglicht das Speichern der gelesenen Parameter zu einem geeigneten Zeitpunkt und in einer geeigneten Weise, um die Überwachungsoperation zum Optimieren der weiteren Schritte zu verwenden.
-
Daher besteht ein Hauptzweck dieser Dummy-Zeile 200 darin, Parameter zu verfolgen, die während der Lese- und Löschphasen der Speicherkomponente 100 verwendet werden können, und/oder um einige Parameter zu speichern, um einen möglichen aufgetretenen Leistungsverlust zu entdecken.
-
Die Dummy-Zeile 200 enthält ein Muster, das der Steuerung 101 der Speichervorrichtung 100 bekannt ist.
-
Nehmen wir an, in der Dummy-Zeile 200 einen bekannten Wert wie 0x55 oder 0xAA in hexadezimaler Form aufzuzeichnen. Dieser Wert ist besonders geeignet, da er die gleiche Menge an logischen Werten von „0“ und logischen Werten von „1“ enthält, die innerhalb des Arrays in unterschiedlichen Flash-Speicherzellen mit zwei unterschiedlichen Schwellenwerten gespeichert sind. Dies bedeutet jedoch nicht, dass die Möglichkeit der Verwendung von Multi-Level-Technologie ausgeschlossen ist, wodurch mehr als zwei Bits für jeden Speichertransistor oder Speicherelement gespeichert werden können.
-
Da dieser Wert auch für den Speichercontroller a priori bekannt ist, führt das System einige Lesezyklen durch, die die Lesetrimmparameter ändern, bis der Wert korrekt gelesen wird. Der geänderte Trimmparameter des korrekten Messwerts entspricht einem eingestellten Temperaturwert, der im programmierbaren Register aufgezeichnet ist. Bei unterschiedlichen Speichertechnologien, wie beispielsweise dem Multilevel-Zellenspeicher (N Level), müssen die zu speichernden Werte so gewählt werden, dass sie alle im Speicherfeld vorhandenen N Level abdecken.
-
Nur wenn es die für die Lesephase eingestellten Trimmparameter perfekt erlauben, den korrekten bekannten Wert abzurufen, dann kann die Lesephase der anderen Speicherblöcke des Unterarrays 120 durchgeführt werden. In diesem Fall entspricht die Suche nach dem optimierten Leseparameter der Ermittlung des besten Abtastpunktes in diesem Betriebszustand, wie es bei der Verwendung eines Augendiagramms der Fall ist.
-
Gemäß einer Ausführungsform der vorliegenden Offenbarung können die Temperatur- und Alterungsdrift, die das Speicherarray 90 beeinflusst, durch die Speicherkomponente 100 selbst unter Verwendung einer gespeicherten Referenz erfasst werden.
-
Durch Verwendung der Driftinformationen des gespeicherten bekannten Musters ist es möglich, die besten Parameter für die nächste oder jede nachfolgende Operation, einschließlich der Programmierphase, einzustellen. Insbesondere können solche Informationen zum korrekten Trimmen aller Spannungswerte und des Timings (d.h. der Signalform) verwendet werden, die in jeder Phase des Lese- und/oder Löschalgorithmus zu verwenden sind.
-
Im Allgemeinen muss der richtige Spannungspegel und das richtige Timing in jeder Lösch- oder Programmierphase den technologischen Richtlinien entsprechen. Solche Richtlinien sind normalerweise für eine gegebene Technologie bekannt, da sie von Flash-Zellen-Technologen als eine Karte zwischen dem Alterungsgrad und den zugehörigen Werten Spannung/Zeit, die verwendet werden sollen, bereitgestellt werden können.
-
Sehen wir uns nun die Lese-, Programmier- und/oder Löschvorgänge gemäß dieser Methodik an:
-
Die wohlbekannten Parameter werden aus der Dummy-Zeile 200 gelesen und von der internen Steuerung ausgearbeitet, um die besten Parameter zu bestimmen, die in den nächsten Schritten verwendet werden sollen. Dann kann der Lese- und Programmieralgorithmus starten.
-
Wenn die Parameter in der Dummy-Zeile 200 nicht vorhanden sind, bedeutet dies, dass ein Leistungsverlust aufgetreten ist. Dieses Ereignis muss durch Löschen des gesamten Blocks wiederhergestellt werden. Andernfalls kann der Block nicht korrekt programmiert oder gelesen werden und der Host muss sich um diese Situation kümmern, wenn die Operation nicht bereits eine Löschphase ist.
-
Während einer Löschpulsphase können Spannung und Pulsdauer so eingestellt werden, dass die Zellen im Block schnell und sicher gelöscht werden (gemäß dem vorherigen Schritt).
-
Wenn der Block zyklisch durchlaufen wird (viele Programmier-Lösch-Zyklen, geschätzt unter Verwendung von Drift-Informationen), werden einige geeignete starke Spannungen und Pulsdauern verwendet. Normalerweise wird ein Block durch Anlegen mehrerer Löschimpulse bei unterschiedlichen (negativ für die Gatespannung und/oder positiv für die Body-Source) gelöscht. Diese Sequenz wird als Treppe bezeichnet und wird verwendet, um einen geeigneten Impuls anzulegen, um den Inhalt des Arrays zu modifizieren. Manchmal, wenn der Block gealtert ist, ist die Treppe größer oder hält länger.
-
Sobald ein Löschimpuls ausgegeben wird (wie oben), wird der Löschzellenstatus durch Anlegen eines geeigneten Zellen-Gate-Spannungswerts verifiziert, der verwendet wird, um eine Löschverifizierung durchzuführen, mit genügend Spielraum, um eine gut gelöschte Zellenverteilung zu garantieren. Außerdem können hier die Driftinformationen verwendet werden, um die richtigen Löschprüfwerte auszuwählen.
-
6 zeigt beispielsweise in einem schematischen Diagramm die Verteilung einer guten gelöschten/programmierten (1 Bit/Zelle) Zelle. Die gesamte Zellschwellenpopulation ist korrekt auf die zugewiesene Grenze beschränkt (d.h. programmierte ‚0‘ oder gelöschte ‚1‘). Die Schritte #1 und #2 werden wiederholt, bis alle Zellen die Löschprüfkriterien erfüllen.
-
Sobald alle Zellen korrekt (gelöscht) verifiziert sind, wird auch überprüft, ob es Zellen mit einem zu niedrigen Schwellenwert gibt. In 6 wird dies durch die Label-Depletion-Verifizierung DV gezeigt.
-
Im Falle einer Erschöpfung wird eine Soft-Programm-Operation für die Zellen ausgegeben, die sie benötigen. Die Parameter, die verwendet werden, um ein weiches Driften der Zellen durchzuführen, um die Schwellenwerte innerhalb der Löschzellenverteilung richtig zu platzieren, können entsprechend dem Alterungsgrad der Zellen gewählt werden.
-
Eine falsche Auswahl eines solchen Parameters kann dazu führen, dass der Schwellenwert der Zellen außerhalb der gelöschten Verteilung (über dem Löschprüfwert) falsch platziert wird, und dies würde bedeuten, dass der Block ab dem obigen Schritt 1 erneut gelöscht werden muss (dies wäre zeitaufwendig).
-
Sobald das Löschen abgeschlossen ist (die obigen Phasen sind abgeschlossen), wird das wohlbekannte Muster in die Reihe 200 geschrieben, um beim nächsten Löschzyklus verwendet zu werden. Insbesondere das Muster, das durch das Speichern der eingestellten Werte (0x55, 0xAA usw.) ausgewählt wurde, wird entsprechend programmiert und überprüft (siehe die PV-Phase von 6) unter Verwendung eines entsprechenden Programmierimpulses, dessen Spannung und Timing von der aktuellen Alterungsgrad des Blocks. Der Inhalt der Dummy-Zeile 200 wird ebenfalls entsprechend gelöscht; dass der Flash-Controller es nach dem Löschen wiederherstellen muss.
-
Durch Verwendung der Driftinformationen und der Anzahl der Löschimpulse, die in der Löschphase (Punkt 1 oben) bereitgestellt werden, ist es möglich, zu folgern, dass sich ein Block dem Ende seiner Lebensdauer nähert. Diese Informationen könnten als Warnung für den Kunden oder als Flag für einen internen Algorithmus verwendet werden, um einen möglichen Block Wear Leveling oder OFBR (On Field Block Redundancy) Betrieb auszulösen, falls implementiert.
-
7 zeigt ein Diagramm entsprechend 6, zeigt jedoch eine vergrößerte Verteilung aufgrund von Alterung, Temperatur und Belastung. Mit der Alterung, Temperatur und Belastung neigen die Verteilungen dazu, sich zu vergrößern und zu verschieben. Gemäß der Methodik der vorliegenden Offenbarung ist es möglich, die Verteilungsvergrößerung zu verwenden, um die Zellverschlechterung zu verfolgen und diese Informationen zu verwenden, um die nächsten Löschimpulse zu korrigieren. Dies ermöglicht es, die Zuverlässigkeit und die Leistungen der Löschphase zu verbessern.
-
Die Trimmsequenz zum Durchführen einer Lesephase des Speicherarrays bei unterschiedlichen Temperaturen oder unterschiedlicher Alterung der Speichervorrichtungen kann in einem Labor erfasst und in einem programmierbaren Register der Speichersteuerung 101 gespeichert werden.
-
Ebenso kann eine Regulierung der während der Lösch- und Programmierphase verwendeten Parameter während des tatsächlichen Betriebs in gleicher Weise durchgeführt werden.
-
Für den Inhalt einer korrekten Lesephase ist es nicht wichtig, bei welchem tatsächlichen Temperaturwert die Lesephase durchgeführt wird. Eine solche Temperatur könnte höher (sogar viel höher) oder niedriger sein, verglichen mit dem Temperaturniveau, bei dem die Programmierphase des bekannten Wertes durchgeführt wurde.
-
Das System wird automatisch durch jegliche thermische Drift geschützt, da die Lesetrimmparameter ausgewählt werden, nachdem das korrekte Lesen der in der Dummy-Reihe 200 gespeicherten bekannten Sequenz durchgeführt und der Trimmparameter zum korrekten Lesen dieses bekannten Wertes entsprechend eingestellt wurde. Dieses Merkmal kann eine Fähigkeit sein, die dem Host-Gerät überlassen und angesteuert wird, da während der Lesephase keine Zeit zum parallelen Lesen der Dummy-Reihe vorhanden ist. Gleiches gilt vor Beginn der Lesephase aufgrund der geringen Anfangslatenz, die die vorliegenden Ausführungsformen unterstützen.
-
Das Verfahren, das es ermöglicht, die geeigneteren Lesetrimmparameter für eine korrekte Lesephase bei einem bestimmten Temperaturwert zu identifizieren, wird nicht unbedingt in jeder Lesephase wiederholt. Im Gegenteil, eine solche Prozedur kann periodisch oder in geeigneterer Weise durchgeführt werden, wenn mögliche Probleme durch die ECC-Bits erkannt werden.
-
Es kommt zum Beispiel vor, dass eine erhöhte Anzahl von ECC-Bits eine übermäßige Anzahl von falschen Lesevorgängen aus der Speichervorrichtung anzeigt (z. B. wenn eine Anzahl von Bits, die von der Fehlerkorrekturmaschine korrigiert wurden, eine Schwellenanzahl überschreitet). In einem solchen Fall kann das System automatisch das Verfahren zum Erfassen einer möglichen thermischen Drift oder Alterung und einer daraus resultierenden Notwendigkeit, die Trimmparameter zu ändern, starten.
-
In einer Ausführungsform könnte das obige Verfahren durch einen Host-Befehl ausgelöst werden. In einigen Ausführungsformen kann das Verfahren durch ein bestimmtes Ereignis ausgelöst werden, wie zum Beispiel eine Temperaturschwankungsdetektion.
-
Die Dummy-Zeile 200 kann konfiguriert sein, um Informationen zu speichern, die ein Fehlschlagen des Löschvorgangs anzeigen.
-
Das Verfahren der vorliegenden Offenbarung ermöglicht es, die Lesephase der Speicherkomponente 100 oder besser eines Speicherblocks 160 richtig durchzuführen.
-
Die Verfahrensphasen sind im Blockschaltbild der 8 schematisch dargestellt.
-
Das Verfahren 800 zum Verbessern der Sicherheit der Lesephase einer nichtflüchtigen Speichervorrichtung, die mindestens ein Array von Speicherzellen und mit zugehöriger Decodier- und Leseschaltung und einer Speichersteuerung umfasst, wobei das Verfahren Folgendes umfasst:
- - Speichern mindestens eines bekannten Musters in einer Dummy-Zeile des Speicherblocks;
- - Durchführen einiger Lesezyklen, die die Lesetrimmparameter ändern, bis zu dem Moment, in dem der bekannte Wert korrekt gelesen wird;
- - Übernahme der Trimmparameter der korrekten Ablesung für die nachfolgenden Ablesephasen.
-
Die obigen Schritte sind in den jeweiligen quadrierten Blöcken 810, 820 und 830 gezeigt.
-
In einer Ausführungsform weist das bekannte Muster eine große Anzahl von programmierten (‚0‘) und gelöschten (‚1‘) Bits in gleicher Anzahl auf, beispielsweise unter Annahme einer hexadezimalen Konfiguration von (0xAA, 0x55 usw.).
-
Darüber hinaus kann die Regelung basierend auf dem Dummy-Zeileninhalt die Auswahl der Bias-Werte der zu lesenden Zellen und/oder die Auswahl eines geeigneten Werts, der als gelesene Referenzzelle verwendet werden soll, beinhalten.
-
Erst wenn die für die Lesephase eingestellten Trimmparameter die Ermittlung des korrekten bekannten Wertes ermöglichen, kann die Lesephase der anderen Speicherblöcke des Unterarrays 120 durchgeführt werden.
-
Jedes Unterarray 120 kann seine eigenen Blöcke haben und die optimalen Parameter können sogar von einem Unterarray zum anderen Unterarray und von Block zu Block unterschiedlich sein.
-
Die geänderten Trimmparameter der korrekten Ablesung entsprechen einem im programmierbaren Register gespeicherten Temperatursollwert.
-
Tatsächlich kann die Speicherung der kritischen Parameter eine Rückmeldung über den Zustand des Blocks liefern, wodurch auch bestimmt wird, wie der Abnutzungsausgleich auf den Block 160 des Unterarrays 120 angewendet werden muss.
-
Das Vorhandensein des bekannten Musters am Ende der Dummy-Reihe stellt die Korrektheit der Operation sicher.
-
Das Verfahren der vorliegenden Erfindung ermöglicht das Erhalten einer dynamischen Löschverifizierung der Löschphase, da es möglich ist, eine sichere Rückmeldung der Korrektheit des Löschvorgangs auch bei unterschiedlichen Betriebsumgebungsbedingungen zu erhalten.