-
HINTERGRUND
-
Gebiet der Erfindung
-
Ausführungsbeispiele der vorliegenden Erfindung betreffen im Allgemeinen das Gebiet der Fehlerkorrektur in einem Speicher. Insbesondere beziehen sich Ausführungsbeispiele der vorliegenden Erfindung auf eine anpassbare Fehlerkorrektur mit analoger Abtastung.
-
Beschreibung des zugehörigen Standes der Technik
-
Elektronische Einrichtungen können eine Fehlerkorrektur zum Zugreifen auf einen Speicher benötigen, der innerhalb dieser Einrichtungen enthalten ist. Ein Fehlerkorrekturcode (ECC, engl.: error-correcting code) oder ein Vorwärtskorrektur-(FEC, engl.: forward error correction)-Code sind redundante Daten, die der Nachricht auf der Senderseite hinzugefügt werden. Wenn die Anzahl der Fehler innerhalb der Fähigkeit des verwendeten Codes liegt, kann der Empfänger die Extrainformation verwenden, um die Stellen der Fehler zu bestimmen und diese zu korrigieren. Fehlerkorrekturcodes werden bei der Computerdatenspeicherung verwendet.
-
Zukünftige Speicher mit hoher Dichte, wie insbesondere nicht flüchtige Speicher, werden hohe Roh-Bit-Fehlerraten in dem Bereich von 10E-3 aufgrund der Technologieskalierung an den Tag legen. Typische ECC-Maschinen funktionieren nicht gut genug für diese Anforderungen. Zusätzlich verursachen unterschiedliche ECC-Anforderungen und unterschiedliche Produktentwicklungen Design-, Entwicklungs-, Test- und Herstellungskostenprobleme sowie eine zusätzliche Produkteinführungszeit.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Ein oder mehrere Ausführungsbeispiele der vorliegenden Erfindung werden beispielhaft und ohne Beschränkung in den Figuren der beigefügten Zeichnungen veranschaulicht, in denen ähnliche Bezugszeichen ähnliche Elemente angeben und in denen:
-
1 eine Datenverarbeitungseinrichtung in Übereinstimmung mit einem Ausführungsbeispiel veranschaulicht;
-
2 eine Vorrichtung veranschaulicht, die einen Speicherzugriff mit anpassbarer Fehlerkorrektur in Übereinstimmung mit einem Ausführungsbeispiel bereitstellt;
-
3 eine Vorrichtung veranschaulicht, die einen Speicherzugriff mit anpassbarer Fehlerkorrektur in Überstimmung mit einem weiteren Ausführungsbeispiel bereitstellt;
-
4 Zellstrom- oder Spannungsschwellwertverteilungen und ein mögliches Raster digitaler Werte veranschaulicht, die von einer Analog-zu-digital-Abtasteinheit in Übereinstimmung mit einem Ausführungsbeispiel erzeugt werden;
-
5 eine beispielhafte Ausführung einer Analog-zu-digital-Abtasteinheit in Übereinstimmung mit einem Ausführungsbeispiel veranschaulicht;
-
6 Verteilungen von digitalen Werten veranschaulicht, die von einer Analog-zu-digital-Abtasteinheit in Übereinstimmung mit einem weiteren Ausführungsbeispiel erzeugt werden; und
-
7 ein Verfahren zur Fehlerkorrektur in einer Speichereinrichtung in Übereinstimmung mit einem Ausführungsbeispiel veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Hierin werden ein Verfahren und Vorrichtungen zum Bereitstellen einer anpassbaren Fehlerkorrektur für Speichermatrizen beschrieben. Bei einem Ausführungsbeispiel weist eine Vorrichtung eine Speichereinrichtung auf, die eine Matrix aus Speicherzellen zum Speichern von Daten hat. Die Speicherzellen sind in n Reihen und m Spalten organisiert. Die Vorrichtung weist auch ein Decodiermittel zum Auswählen und geeigneten Vorspannen dieser Zellen auf und eine Analog-zu-digital-Abtasteinheit, die mit der Speichermatrix gekoppelt ist. Die Analog-zu-digital-Abtasteinheit tastet analoge Signale ab, die zu den Speichermatrixzellen gehören (z. B. Strom oder Schwellspannung) und wandelt die analogen Signale in Verteilungen von digitalen Werten um. Die Vorrichtung weist auch eine Fehlerkorrekturcode-(ECC, engl.: error-correcting code)-Einheit auf, die mit der Analog-zu-digital-Abtasteinheit gekoppelt ist. Die ECC-Einheit empfängt die Verteilungen der digitalen Werte von der Analog-zu-digital-Abtasteinheit. Eine einrichtbare Nachschlagtabelle erzeugt ECC-Parameter, die Fehlerwahrscheinlichkeitsdaten aufweisen, und stellt die ECC-Parameter an der ECC-Einheit für die Fehlerkorrektur bereit. Die Fehlerwahrscheinlichkeitsdaten weisen Fehlerwahrscheinlichkeitswerte auf, die zu den Verteilungen der digitalen Werte gehören. Die ECC-Einheit führt einen ECC-Algorithmus aus, um Fehlerkorrektur unter Verwendung der Fehlerwahrscheinlichkeitsdaten bereitzustellen.
-
Die einrichtbare Nachschlagtabelle aktualisiert Fehlerwahrscheinlichkeitsdaten basierend auf den Verteilungen von analogen Signalen. Die abgetasteten analogen Signale, die zu der Speichermatrix und entsprechenden digitalen Werten gehören bzw. mit ihnen verknüpft sind, können sich während der Produktlebensdauer der Speichermatrix z. B. aufgrund der Streuung im Herstellungsprozess oder aufgrund von Variationen bei Spannungs- und/oder Temperaturbetriebsbedingungen verändern. Die einrichtbare Nachschlagetabelle stellt eine große Flexibilität dahingehend bereit, dass sie in der Lage ist, die „Fehlerwahrscheinlichkeit”, die jedem digitalen Wert zugeordnet ist, zu aktualisieren. Im Falle von Variationen bezüglich Betriebstemperatur oder Betriebsspannung können Fehlerwahrscheinlichkeit unter Verwendung von Eingaben verändert werden, die von einem Spannungs- und Temperatursensor kommen, um die Nachschlagetabellenwerte zu aktualisieren.
-
1 veranschaulicht eine Datenverarbeitungseinrichtung mit Speicherzugriff und Fehlerkorrektur in Übereinstimmung mit einem Ausführungsbeispiel. Die Datenverarbeitungseinrichtung 100 weist eine Verarbeitungseinheit 110 auf, die einen ersten und einen zweiten Prozessorkern 116 und 118 hat, eine Hoststeuerung 119 und einen Systemspeicher 120, der mit der Verarbeitungseinheit 110 gekoppelt ist. Die Hoststeuerung 119 kann intern bezüglich der Verarbeitungseinheit 110 sein oder extern zu der Verarbeitungseinheit 110. Der erste und zweite Prozessorkern 116 und 118 weist eingebettete nicht flüchtige Speicher 130 bzw. 132 auf. Der Systemspeicher 120 weist eine Schalteinrichtung 122, welche eine integrierte Schalteinrichtung sein kann, und verschiedene Arten von Speicher auf (z. B. DRAM 124, RAM 126, ROM 128). Die Schalteinrichtung 122 stellt einen nicht flüchtigen Speicherzugriff (z. B. NVM 123) mit anpassbarer Fehlerkorrektur unter Verwendung einer Analog-zu-digital-Abtasteinheit bereit, einer Nachschlagetabelle und einer ECC-Einheit. Diese Komponenten werden detailliert in Verbindung mit den 2, 3 und 5 erörtert. Die anpassbare Fehlerkorrektur der vorliegenden Offenbarung kann auch für das Zugreifen auf die Speicher 130 und 132 implementiert sein und sie kann intern zu dem NVM 123 sein oder von der Hoststeuerung 119 betrieben werden.
-
Die Datenverarbeitungseinrichtung 100 kann wahlweise einen Sende-Empfänger 112 aufweisen, der mit der Verarbeitungseinheit 110 gekoppelt ist. Der Sende-Empfänger 112 empfängt mit Antennen 114 Signale über den Äther und weist einen Übertrager 160 und einen Empfänger 162 auf. Wie bei diesem drahtlos-Ausführungsbeispiel gezeigt ist, weist die Datenverarbeitungseinheit 100 eine oder mehrere Antennenstrukturen 114 auf, um eine Funkkommunikation mit anderen über den Äther Datenverarbeitungseinrichtungen zu ermöglichen. Als solche kann die Datenverarbeitungseinrichtung 100 als eine zellulare Einrichtung betrieben werden oder als eine Einrichtung, die in einem Drahtlosnetzwerk betrieben wird. Die Funksubsysteme, die in derselben Plattform der Einrichtung 100 zusammengestellt sind, stellen eine Kommunikationsfähigkeit mit unterschiedlichen Frequenzbändern in einem RF/Ortsraum mit anderen Einrichtungen in einem Netzwerk bereit. Es sollte verstanden werden, dass der Schutzbereich der vorliegenden Erfindung nicht auf die Arten von, die Anzahl von oder die Frequenz der Kommunikationsprotokolle beschränkt ist, die von der Datenverarbeitungseinrichtung 100 verwendet werden können.
-
Das Ausführungsbeispiel veranschaulicht die Kupplung der Antennenstruktur 114 mit einem Sende-Empfänger 112, um Modulation/Demodulation unterzubringen. Im Allgemeinen kann ein analoger Frontend-Sende-Empfänger 112 eine alleinstehende diskrete Funkfrequenz (RF, engl.: radio frequency) oder eine integrierte analoge Schaltung sein oder der Sende-Empfänger 112 kann mit einem Prozessor, der einen oder mehrere Prozessorkerne 116 und 118 aufweist, eingebettet sein. Die mehreren Kerne ermöglichen es, zu verarbeitende Arbeitslasten über die Kerne zu verteilen und Basisbandfunktionen und Anwendungsfunktionen handzuhaben. Eine Schnittstelle kann verwendet werden, um Kommunikation oder Information zwischen dem Prozessor und dem Speicher in einem Systemspeicher 120 bereitzustellen.
-
Der Systemspeicher 120 kann durch eine oder mehrere unterschiedliche Arten von Speicher vorgesehen sein und kann sowohl wahlweise DRAM, RAM und/oder ROM als auch die Schalteinrichtung 122 aufweisen, die einen nicht flüchtigen Speicher (NVM, engl.: nonvolatile memory) 123 hat. Der NVM 123 kann eine Phasenwechselmaterial bzw. einen Speicherstoff (engl.: Phase change material) aufweisen. Der NVM 123 kann als ein Phasenwechselspeicher (PCM, engl. Phase change memory), Phasenwechsel-Schreib-Lesespeicher (PRAM oder PCRAM, engl.: Phase change random access memory), Ovonic Unified Memory (OUM) oder chalkogenider Schreib-Lesespeicher (C-RAM, engl.: chalcogenide random access memory) bezeichnet werden. Der NVM 123 kann einen Flash-Speicher aufweisen (z. B. NOR, NAND), ein Festkörperlaufwerk (engl.: solide state drive) und einen Karten-/Stickspeicher.
-
2 veranschaulicht eine Vorrichtung, die einen Speicherzugriff mit anpassbarer Fehlerkorrektur in Übereinstimmung mit einem Ausführungsbeispiel bereitstellt. Die Vorrichtung 200 (z. B. Schalteinrichtung 122) weist eine oder mehrere Matrizen 210 aus Speicherzellen auf (z. B. NVM 123), die Daten speichern. Eine Reihenauswahleinheit 220 und eine Spaltenauswahl- und Vorspanneinheit 230 werden für den Zugriff auf die Matrix 210 verwendet. Lese- und Schreibschaltungen und die Logik 240 steuern die Reihen- und Spaltenauswahleinheiten zum Bereitstellen des Speicherzugriffs. Eine Analog-zu-digital-Abtasteinheit 250 ist mit der Speichermatrix 210 gekoppelt. Die Analog-zu-digital-Abtasteinheit 250 tastet analoge Signale ab, die zu den Speicherzellen der Speichermatrix gehören, und wandelt die analogen Signale in eine oder mehrere Verteilung von digitalen Werten um, wie detaillierter in Verbindung mit der Beschreibung von 4 bis 6 beschrieben werden wird. Die analogen Signale können Verteilungen von Strom- oder Spannungswerten aufweisen, die mit logischen Zuständen (z. B. 0, 1, 00, 01, 10, 11) der Speicherzellen verknüpft sind. Benutzerdaten- und Paritätsinformtion kann ebenfalls von der Matrix 210 an die Analog-zu-digital-Abtasteinheit 250 gesendet werden.
-
Bei einem Ausführungsbeispiel ist eine Fehlerkorrekturcode-(ECC)-Einheit 260 mit der Analog-zu-digital-Abtasteiheit 250 gekoppelt. Die ECC-Einheit 260 weist eine Codier- und Decodiermaschine auf, die die Verteilungen von digitalen Werten (z. B. N0[k:0], N1[k:0], ... Ni[k:0]) von der Analog-zu-digital-Abtasteinheit 250 empfängt und einen ECC-Algorithmus ausführt, um eine Fehlerkorrektur unter Verwendung der Fehlerwahrscheinlichkeitsdaten bereitzustellen, die von der Nachschlagetabelle 270 für eine oder mehrere Matrizen bereitgestellt werden. Die Nachschlagetabelle kann durch Aktualisierung der Verteilung digitaler Werte aktualisiert werden. Der ECC-Algorithmus kann in der ECC-Einheit im Speicher gespeichert sein (z. B. ROM) und mit einem Mikrokontroller ausgeführt werden oder der Algorithmus kann als eine endliche Zustandsmaschine oder als eine boolsche Schaltung implementiert werden.
-
Eine einrichtbare nicht flüchtige Nachschlagetabelle 270 ist mit der ECC-Einheit 260 gekoppelt. Die einrichtbare nicht flüchtige Nachschlagetabelle 270 erzeugt ECC-Parameter (z. B. ECC-Parameter 1[j:0], ... ECC-Parameter i[j:0]), die die Fehlerwahrscheinlichkeitsdaten aufweisen, und stellt die ECC-Parameter an der ECC-Einheit 260 für die Fehlerkorrektur bereit. Die einrichtbare nicht flüchtige Nachschlagetabelle 270 kann extern sein oder mit der ECC-Einheit 260 integriert sein. Die einrichtbare nicht flüchtige Nachschlagetabelle aktualisiert Fehlerwahrscheinlichkeitsdaten basierend auf Variationen in den Zellströmen oder Variationen bei dem Widerstand oder der Schwellwertspannungsverteilung in der Matrix. Diese Variationen können z. B. während des Wafertests erkannt werden oder nach der Initiierung der Vorrichtung oder nach einem gegebenen Lesezustand. Darüber hinaus können die Fehlerwahrscheinlichkeitsdaten als eine Folge auf Variationen bei der Betriebstemperatur und/oder -spannung aktualisiert werden, die von einem geeigneten Spannungssensor 280 und Temperatursensor 290 erkannt werden. Die Fehlerwahrscheinlichkeitswerte basieren auf einer Distanz eines digitalen Wertes in einer Verteilung von einer Bezugsebene bzw. Bezugshöhe, wie detaillierter in Verbindung mit der Beschreibung von 4 beschrieben werden wird.
-
Bei einem Ausführungsbeispiel tastet die Analog-zu-digital-Abtasteinheit 250 analoge Signale ab, die zu den Speicherzellen der Speichermatrix gehören, um Anfangs-Digitalwerte bereitzustellen. Bei anderen Ausführungsbeispielen tastet die Analog-zu-digital-Abtasteinheit analoge Signale, die zu den Speicherzellen der Speichermatrix gehören, basierend auf Variationen bei den Zellenströmen oder Variationen bei dem Widerstand oder der Schwellwertspannungsverteilung in der Matrix ab, um die digitalen Werte zu aktualisieren. Die analogen Signale und die entsprechenden digitalen Werte können sich während der Produktlebensdauer der Speichermatrix verändern. Unterschiedliche Arten von Produkten mit unterschiedlichen Arten von Speichern können ebenfalls unterschiedliche analoge Signale haben.
-
Die Nachschlagetabelle 270 stellt eine große Flexibilität bei der Aktualisierung der „Fehlerwahrscheinlichkeit”, die jedem digitalen Wert zugeordnet ist, sogar während der Produktlebensdauer bereit. Prozessvariationen, unterschiedliche Produktspezifikationen (z. B. weniger oder mehr Lese-/Schreibzyklen, unterschiedliche Temperaturbereiche, Prozessparameterfeinabstimmung usw.) werden nachverfolgt und in der Nachschlagetabelle abgespeichert. Es können unterschiedliche Zuverlässigkeitskriterien sowie unterschiedliche erwartete programmierte Speicherzellverteilungen mit Fehlerwahrscheinlichkeiten pro gegebenen Lesezustand korreliert werden und diese Information kann an die ECC-Einheit gesendet werden. Die ECC-Einheit verwendet diese Information aus der Nachschlagetabelle, um die Fehlerkorrektur für die bestimmten Anforderungen ohne irgendeinen neuen Maskenbefehl zu optimieren. Die nachfolgende Produktqualifikationsphase ist ebenfalls stark verringert.
-
Zum Beispiel kann ein analoges Lesen und eine Umwandlung in digitale Werte während der Sortierung elektrischer Wafer, der elektrischen Charakterisierung oder der Produktqualifikation ausgeführt werden. Eine Speicherzellenverteilung nach der Programmierung, wie beispielsweise eine Strom- oder Spannungsverteilung, kann in unterschiedliche und diskrete Populationen von Zellen partitioniert werden, die jeweils eine unterschiedliche statistische Wahrscheinlichkeit haben, korrekt in einen logischen Zustand nach einem Programmierpuls oder Algorithmus platziert zu sein. Auf diese Art und Weise können die Wahrscheinlichkeiten in der Nachschlagetabelle nützlich zusammengestellt werden und während der Fehlerkorrektur durch die ECC-Einheit verwendet werden.
-
3 veranschaulicht eine Vorrichtung, die einen Speicherzugriff mit Fehlererkennung in Übereinstimmung mit einem weiteren Ausführungsbeispiel bereitstellt. Die Vorrichtung 300 (z. B. Schalteinrichtung 122) weist eine oder mehrere Matrizen 310 aus Speicherzellen auf, die Daten speichern. Eine Reihenauswahleinheit 320 und eine Spaltenauswahl- und Vorspanneinheit 330 werden für den Zugriff auf die Matrix 310 verwendet. Lese- und Schreibschaltungen und Logik 340 steuern die Reihen- und Spaltenauswahleinheiten zum Bereitstellen von Speicherzugriff. Eine Analog-zu-digital-Abtasteinheit 350 ist mit der Speichermatrix 310 gekoppelt. Die Analog-zu-digital-Abtasteinheit 350 tastet analoge Signale ab, die zu den Speicherzellen der Speichermatrix gehören, und wandelt die analogen Signale in Verteilungen von digitalen Werten um.
-
Bei einem Ausführungsbeispiel ist eine Fehlerkorrekturcode-(ECC)-Einheit 360 mit der Analog-zu-digital-Abtasteinheit 350 gekoppelt. Die ECC-Einheit 360 empfängt die Verteilungen digitaler Werte (z. B. N0[k:0], N1[k:0], ... Ni[k:0]) von der Analog-zu-digital-Abtasteinheit 350 und empfängt Fehlerwahrscheinlichkeitsdaten von der Nachschlagetabelle 370. Die ECC-Einheit 360 führt einen ECC-Algorithmus aus, um Fehlerkorrektur unter Verwendung der Fehlerwahrscheinlichkeitsdaten bereitzustellen, welche mit jeder aktualisierten Verteilung digitaler Werte aktualisiert werden können.
-
Eine einrichtbare nicht flüchtige Nachschlagetabelle 370 empfängt die Verteilungen digitaler Werte von der Einheit 350. Die einrichtbare nicht flüchtige Nachschlagetabelle 370 erzeugt ECC-Parameter (z. B. ECC-Parameter 1[j:0], ... ECC-Parameter i[j:0]), die die Fehlerwahrscheinlichkeitsdaten aufweisen, und stellt die ECC-Parameter an der ECC-Einheit 360 zur Fehlerkorrektur bereit. Die einrichtbare nicht flüchtige Nachschlagetabelle 370 kann extern sein oder integriert mit der ECC-Einheit 360. Die einrichtbare nicht flüchtige Nachschlagetabelle aktualisiert Fehlerwahrscheinlichkeitsdaten basierend darauf, wenn die Verteilung digitaler Werte aktualisiert werden. Zum Beispiel können die Fehlerwahrscheinlichkeitsdaten als eine Folge auf Variationen bei der Betriebstemperatur und/oder -spannung aktualisiert werden, die von einem geeigneten Spannungssensor 380 und Temperatursensor 390 erkannt werden.
-
Bei einem weiteren Ausführungsbeispiel werden die Verteilungen digitaler Werte nur an der Nachschlagetabelle 370 und nicht an der ECC-Einheit 360 bereitgestellt. Die ECC-Einheit 360 greift auf die Tabelle 370 zu, um die Fehlerwahrscheinlichkeitsdaten zu aktualisieren, und sie kann diese Daten in einem Speicher abspeichern, der in der ECC-Einheit 360 angeordnet ist.
-
Zukünftige Speicher mit großen Kapazitäten (z. B. NAND, NOR, PCM) werden eine höhere Fehlerwahrscheinlichkeit beim korrekten Empfangen der gespeicherten Daten haben, was als Roh-Bit-Fehlerrate (RBER, engl.: raw bit error rate) bezeichnet wird, da die Technologie an ihre Grenzen geführt wird. Gewöhnlicherweise wird dieses Problem dadurch gehandhabt, dass eine ECC-Maschine implementiert wird, die in der Lage ist, eine Anzahl von Fehlern über einen Datenstring zu korrigieren. Als ein Resultat der ECC-Aktion ist die finale Bitfehlerrate eine Größenordnung niedriger als die Startfehlerrate. Am meisten verbreitete ECC-Maschinen basieren auf einem Code (z. B. Bose Ray-Chaudhuri Hocquenghem), der effektiv ist, vorausgesetzt, dass die Roh-Bit-Fehlerrate (RBER) ist nicht zu hoch. Allerdings wird aufgrund der Technologieskalierung diese Bedingung in naher Zukunft nicht mehr erfüllt werden.
-
Es kann eine andere Klasse von ECC-Codes verwendet werden, die bei einer höheren RBER effektiver sind, nämlich die softdecodierten Codes (z. B. die sog. Konvolutionscodes), aber damit sie funktionieren, müssen sie als Eingabe nicht nur einen String von 0 und 1 haben, sondern auch die „Zuverlässigkeit” der Daten oder in anderen Worten, was ist die Wahrscheinlichkeit, dass eine 0 (oder 1), die empfangen wurde, „wirklich” eine „0” oder „1” ist, die übertragen wurde. Dies kann nicht mit einem herkömmlichen Abtastverstärker bewerkstelligt werden, sondern es bedarf eines neuen Konzepts, wie es in 4 gezeigt ist.
-
4 veranschaulicht Verteilungen digitaler Werte, die von einer Analog-zu-digital-Abtasteinheit in Übereinstimmung mit einem Ausführungsbeispiel erzeugt werden. Der gesamte Raum analoger Werte (z. B. Ströme, Widerstände oder Schwellwertspannungen), die eine typische Speichermatrix von Zellen annehmen kann, ist in einer Anzahl N von „Anteilen” (engl.: „slices”) partioniert, die durch einen binären Code identifiziert sind, so dass jede Zelle in den Verteilungen von der Abtasterschaltung einem definierten Anteil zugeordnet wird. Jeder Anteil ist durch eine unterschiedliche „Fehlerwahrscheinlichkeit” der repräsentierten Daten charakterisiert, basierend auf der „Distanz” dieses bestimmten Anteils von der Bezugsebene bzw. Bezugshöhe 410. Zum Beispiel werden die Daten (z. B. 420 und 422), die zu den Anteilen gehören, die näher an der Bezugsebene bzw. Bezugshöhe 410 sind, eine höhere Fehlerwahrscheinlichkeit haben und eine niedriger Zuverlässigkeit, da es wahrscheinlicher ist, dass diese das Ergebnis eines Fehlers beim Lesen sind, da die Abtastgenauigkeitsgrenze oder die Existenz von „Ausläufern” (engl.: „tails”) von einer der Verteilungen die Bezugsebene bzw. Bezugshöhe durchquert. Die Daten (z. B. 430, 432, 434), die zu den Anteilen gehören, die weiter von der Bezugsebene bzw. Bezugshöhe 410 weg angeordnet sind oder nahe einem Anteil mit maximaler Population, werden eine niedrigere Fehlerwahrscheinlichkeit haben und eine höhere Zuverlässigkeit, da es weniger wahrscheinlich ist, dass sie das Ergebnis eines Fehlers beim Lesen sind. Die Daten (z. B. 440 und 442), die zu den Anteilen gehören, die nahe an einem Zwischenpopulationsanteil sind, werden eine moderate Fehlerwahrscheinlichkeit haben und eine moderate Zuverlässigkeit.
-
Bei manchen Ausführungsbeispielen weist die Nachschlagetabelle ein reprogrammierbares (NVM)-Register auf, wo die Fehlerwahrscheinlichkeiten oder bestimmte Parameter, die zu den Fehlerwahrscheinlichkeiten der Anteile gehören, gespeichert sind. Die digitalen Werte in der Nachschlagetabelle werden verwendet, um eine gegebene Fehlerwahrscheinlichkeit auszuwählen oder eine andere nützliche Information (z. B. ECC-Parameter [k:0]). Die ECC-Parameter können mit anderer ähnlicher Information kombiniert werden, die von dem gesamten Codewortlesen aus der Speichermatrix kommt und an die ECC-Einheit gesendet wird.
-
Bei manchen Ausführungsbeispielen sind die Anteile nicht a priori fest, sondern können sich von Einrichtung zu Einrichtung oder während der Einrichtungslebensdauer ändern.
-
Die ECC-Einheit kann die Information über den Anteil, wo eine bestimmte Zelle angeordnet ist, und die zugehörige Fehlerwahrscheinlichkeit und andere Information (z. B. Paritätsinformation abrufen, N Anzahl von Anteilen, Produktdatenblattinformation usw.) aus der Nachschlagetabelle, kann sie kombinieren und dann einen Konvolutionscode implementieren, um die Bitfehlerrate effektiv zu verringern. Die Nachschlagetabelle stellte eine signifikante Flexibilität bei der Veränderung der „Fehlerwahrscheinlichkeit” bereit, die jedem Anteil zugeordnet ist, sogar während der Produktlebensdauer entsprechend dem Modell der Speicherzellenmatrix, den Störungsfaktoren, den Prozessvariationen, der Schreibgeschwindigkeitsanforderungen, der Haltbarkeit und der allgemeinen Zuverlässigkeitsspezifikationen usw. Folglich vergrößert das vorliegende Design stark die Effektivität der ECC-Einheit selbst. Die Nachschlagetabelle (z. B. nicht flüchtige Register) ist auf verschiedene Arten anpassbar (z. B. durch Die, durch Wafer, durch Menge).
-
Ein ECC, der die Zuverlässigkeitsinformation (z. B. Wahrscheinlichkeiten, Wahrscheinlichkeitswerte usw.) berücksichtigt, wird als Soft-Decision Algorithmus bezeichnet. Das vorliegende ECC-Design verwendet Softdecodierung. ECC-Maschinen, die nur empfangene Bitwerte verwenden, werden Hard-Decision Algorithmen genannt. Allgemein kann die Softdecodierung eine Verstärkung von bis zu 3 dB bei Signal-zu-Rauschen-Verhältnissen im Vergleich zur Harddecodierung bereitstellen. Mit anderen Worten kann eine Hard-Decision ECC dieselbe Leistung wie die eines Soft-Decision ECC liefern, der bei einer Bitfehlerrate arbeitet, die drei Größenordnungen höher ist. Soft-Decision Techniken schließen Konvolutionscodes mit ein, Trellis-codierte Modulation, Turbocodes und Niedrigdichte-Paritätsüberprüf-(LDPC, engl.: low-density parity check)-Codes. Die effektive Fähigkeit zum Erzeugen von Zuverlässigkeitsinformation ermöglicht die Anwendung von Soft-Decision ECC sogar für eine ECC-Steuerung auf dem Chip. Das vorliegende Design kann für verketteten oder nicht verketteten Code (engl.: concatenated or non-concatenated) verwendet werden.
-
Frühere Ansätze zur Fehlerkorrektur verwenden keine Nachschlagetabelle. Die Evaluierung von Fehlerwahrscheinlichkeiten wird mittels mathematischer Annahmen bewerkstelligt, z. B. durch die Annahme einer Gaußschen Verteilung. Auf diese Art und Weise gibt es keine Möglichkeit, die Fehlerwahrscheinlichkeiten an eine genauere charakterisierungsbasierte Modellierung der Matrixverteilungen anzupassen oder diese als ein Ergebnis von Modifikationen äußerer Bedingungen (z. B. wie all die oben erwähnten) zu verändern.
-
5 veranschaulicht eine beispielhafte Ausführung einer Analog-zu-digital-Abtasteinheit in Übereinstimmung mit einem Ausführungsbeispiel. Analoge Signale werden aus den Speicherzellen abgetastet und bilden die Eingabe 510 in der Angabe des Stroms Icell oder der Spannung Vcell. Eine Strom- oder Spannungsrampe 520, In(x), wird zum Umwandeln der aus den Speicherzellen abgetasteten Ströme oder Spannungen in digitale Werte verwendet. Ein Digital-zu-analog-Generator und -Abtasteinheit 530 empfängt die Eingabe 510 und eine Strom- oder Spannungsstufe (oder ein kontinuierliches Rampen)-Eingabesignal 512. Die Einheit 530 gibt ein Stoppsignal aus, das als eine Eingabe für eine N-Generationseinheit 540 empfangen wird. Diese Einheit 540 empfängt auch eine Startsignaleingabe.
-
Bei einem Ausführungsbeispiel erzeugt die Einheit 530 eine analoge Ebene bzw. Höhe eines Strom- oder Spannungsrampensignals 520, die von dem Anfangswert von N und einem Bezugseingabesignal Istep (Vstep) 512 abhängt. Das erzeugte Rampensignal 520 entspricht N mal Istep (Vstep) 512 und wird als eine Vergleichsebene bzw. Vergleichshöhe verwendet; N ist eine Funktion von zwei logischen Signalen, Start und Stopp, und einem Taktsignal. N ist 0, wenn das Startsignal 0 ist. N wird um 1 bei jedem Taktzyklus erhöht (N = N + 1), wenn der Strom der Speicherzelle (Icell) 510 größer als der erzeugte Strom N·Istep ist und es wird ein neuer Strom der gleich (N + 1) × Istep ist erzeugt. Diese Bedingung, bei der N erhöht wird, entspricht der, dass das Startsignal gleich 1 ist und das Stoppsignal gleich 0 ist. Die obige Schleife wird weiter durchlaufen bis der Zellenstrom niedriger als die erzeugte Höhe (bzw. Ebene) ist. Wenn der Zellenstrom gleich dem Vergleichsstrom ist und diesen übersteigt, wird ein Stoppsignal durchgesetzt, wird der erzeugte Strom, der gleich N·Istep ist, konstant gehalten (N bleibt als N) und der Zellenstrom wird in eine n-Bit digitale Ausgabe quantisiert, welche verriegelt ist, wodurch dann N sich selbst darstellt. Dasselbe Prinzip kann angewendet werden, wenn abgetastete und erzeugte Stromhöhen durch abgetastete und erzeugte Spannungshöhen ersetzt werden.
-
6 veranschaulicht Verteilungen digitaler Werte, die von einer Analog-zu-digital-Abtasteinheit in Übereinstimmung mit einem weiteren Ausführungsbeispiel erzeugt werden. Der gesamte Raum von 00, 01, 10 und 11 logischen Zuständen für eine typische Mehrebenen (z. B. 2 Bits/Zelle in diesem Fall 1,5 Bits/Zelle, 3 Bits/Zelle, 4 Bits/Zelle usw.) Speichermatrix aus Zellen (z. B. PCM) wird in eine Anzahl von N „Anteilen” (engl.: „slices”) partioniert, so dass jede Zelle in den Verteilungen von der Abtastschaltung einem definierten Anteil zugeordnet wird. Jeder Anteil ist durch eine unterschiedliche „Fehlerwahrscheinlichkeit” der repräsentierten Daten charakterisiert, basierend auf der „Distanz” des bestimmten Anteils von einer Bezugsebene bzw. Bezugshöhe oder einem Abstand bzw. Begrezung. Zum Beispiel sind Abstände bzw. Begrenzungen 610, 620 und 630 durch Bezugshöhen 612, 614, 622, 624, 632 bzw. 634 definiert.
-
Bei einem Ausführungsbeispiel veranschaulicht 6 eine Stromrampe, wenn das Zellenspeicherelement bei Vsafe gleich 450 Millivolt für eine Mehrebenenzellen (MLC, engl.: multi-level cell) Speicher (z. B. PCM) vorgespannt wird. Insbesondere hat eine 2 Bits/Zell-Einrichtung vier logische Zustände (z. B. 00, 01, 10 und 11). Die PCM-Speicherzellen können als ein variabler Widerstand gebildet sein, der unterschiedliche Werte in Abhängigkeit von der Phase des chalkogenischen Materials annehmen kann. Wenn das Material amorph ist, welches einem Rücksetzzustand 00 entspricht, ist der zugehörige Widerstand sehr hoch, im Bereich von einigen Hundert von Kiloohm bis zu mehr als einem Megaohm. Wenn das Material kristallin ist, ist der zugehörige Widerstand im Bereich von einigen Kiloohm (z. B. weniger als 15 Kiloohm). Es wird ein Strom-(oder Spannungs)-Puls geeigneter Form, Breite und Amplitude verwendet, um von einer Phase zur anderen zu schalten. für den MLC-Betrieb werden Zwischenzustände verwendet und diese Zustände sind durch Zwischenwiderstandswerte gekennzeichnet. Zum Beispiel hat ein Rücksetzzustand 00 einen Widerstand der größer als 200 Kiloohm ist. Ein erster Zwischenzustand 01 hat einen Widerstand zwischen 35 und 50 Kiloohm. Ein zweiter Zwischenzustand 10 hat einen Widerstand zwischen 20 und 25 Kiloohm. Ein Setzzustand 11 hat einen Widerstand, der kleiner als 16 Kiloohm ist.
-
Die Daten, die in einen Anteil fallen, der einen Widerstand in einer der Begrenzungen oder nahe eine der Begrenzungen hat, wird eine höhere Fehlerwahrscheinlichkeit und eine niedriger Zuverlässigkeit haben, da es wahrscheinlicher ist, dass diese Daten das Ergebnis eines Fehlers beim Lesen sind, verglichen zu Daten, die in einen Anteil (z. B. 12) fallen, der einen Widerstand in der Mitte einer der logischen Zustände hat. Der Übergang zwischen unterschiedlichen logischen Zuständen kann auch durch relative Wahrscheinlichkeiten auf eine kontinuierliche Art und Weise ohne Spezifizierung eines Begrenzungsfensters betrieben werden.
-
7 veranschaulicht ein Verfahren zur Fehlerkorrektur bei einer Speichereinrichtung, die eine Speichermatrix in Übereinstimmung mit einem Ausführungsbeispiel hat. Das Verfahren weist bei Block 702 das Speichern von Daten in der Speichermatrix auf. Das Verfahren weist bei Block 704 das Abtasten analoger Signale auf, die zu der Speichermatrix gehören, unter Verwendung einer Analog-zu-digital-Abtasteinheit. Als nächstes weist das Verfahren bei Block 706 das Umwandeln der analogen Signale in die Verteilung digitaler Werte unter Verwendung der Analog-zu-digital-Abtasteinheit auf. Zum Beispiel kann jede Verteilung mit einem logischen Zustand (z. B. 0, 1, 00, 01, 10, 11) einer einzelnen oder einer Mehrebenenspeichermatrix verknüpft sein. Beim Block 708 sendet die Analog-zu-digital-Abtasteinheit die Verteilungen digitaler Werte an eine Fehlerkorrekturcode-(ECC)-Einheit. Bei Block 710 stellt eine Nachschlagetabelle ECC-Parameter, die Fehlerwahrscheinlichkeitsdaten aufweisen, die mit jedem digitalen Wert verknüpft sind, an der ECC-Einheit bereit.
-
Die ECC-Einheit führt einen ECC-Algorithmus aus, um eine Fehlerkorrektur unter Verwendung der Fehlerwahrscheinlichkeitsdaten bei Block 712 bereitzustellen. Bei einem Ausführungsbeispiel wird die nicht flüchtige Nachschlagetabelle mit Fehlerinformation, die zu der Speichermatrix gehört, nach Initialisierung der Speichereinrichtung oder nach einem gegebenen Lesezustand oder als eine Folge auf Variationen bei der Betriebsspannung oder -temperatur, die durch einen geeigneten Spannungssensor bzw. einen Temperatursensor erkannt wird, bei Block 714 aktualisiert. Die einrichtbare nicht flüchtige Nachschlagetabelle aktualisiert Fehlerwahrscheinlichkeitsdaten basierend auf den Verteilungen digitaler Werte mit Fehlerwahrscheinlichkeitswerten, die auf einer Distanz eines digitalen Werts in der Verteilung von einer Bezugshöhe basieren, wie es in den 4 und 6 veranschaulicht ist.
-
Einige Bereiche der detaillierten Beschreibung sind im Hinblick auf Algorithmen und symbolische Darstellungen von Operationen auf Datenbits oder binären digitalen Signalen innerhalb eines Computerspeichers dargestellt. Diese Beschreibungen von Algorithmen und Darstellungen können die Techniken sein, die vom Fachmann auf dem Datenverarbeitungsgebiet verwendet werden, um die Substanz ihrer Arbeit anderen Fachmännern zu übertragen.
-
Ein Algorithmus wird hier und im Allgemeinen als eine selbstkonsistente Abfolge von Handlungen oder Operationen betrachtet, die zu einem gewünschten Ergebnis führen. Dies schließt physikalische Manipulationen physikalischer Einheiten mit ein. Gewöhnlicherweise, wenn auch nicht notwendigerweise, nehmen diese Einheiten die Form von elektrischen oder magnetischen Signalen an, die geeignet sind, gespeichert, übertragen, kombiniert, verglichen und auf sonstige Weise manipuliert zu werden. Es hat sich bei Zeiten als praktisch erwiesen, in erster Linie aus Gründen der gemeinsamen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Ausdrücke, Nummern oder dergleichen zu bezeichnen. Es sollte allerdings verstanden werden, dass alle diese und ähnlichen Ausdrücke mit der geeigneten physikalischen Einheit verknüpft werden sollen und sie nur bequeme Bezeichnungen darstellen, die auf diese Einheiten angewendet werden.
-
Solange es nicht spezifisch anders ausgedrückt ist, sollte begrüßt werden, dass Diskussionen innerhalb der Unterlagen, die Ausdrücke wie beispielsweise „verarbeiten”, „berechnen”, „ausrechnen”, „bestimmen” oder dergleichen verwenden, sich auf Handlungen und/oder Verarbeitungen eines Computer oder Computersystems beziehen oder eine ähnliche elektronische Computereinrichtung, die Daten, die als physikalische, wie beispielsweise elektronische, Einheit innerhalb der Register des Computersystems und/oder in Speichern dargestellt sind, in andere Daten manipulieren und/oder transformieren, die auf ähnliche Art und Weise als physikalische Einheiten innerhalb des Speichers des Computersystems, Register oder andere derartige Informationsspeicher, Übertragungs- oder Anzeigeeinrichtungen dargestellt sind.
-
Ausführungsbeispiele der vorliegenden Erfindung können Vorrichtung zum Ausführen der hierin beschriebenen Operationen aufweisen. Eine Vorrichtung kann spezifisch für den gewünschten Zweck konstruiert sein oder sie kann eine Mehrzweckcomputereinrichtung umfassen, die wahlweise aktiviert oder von einem Programm neu konfiguriert wird, das in der Einrichtung gespeichert ist. Ein derartiges Programm kann in einem bzw. auf einem Speichermedium gespeichert werden, wie beispielsweise aber nicht begrenzt auf, jede Art von Disk, einschließlich Floppy-Disk, optische Disk, Nurlesekompaktspeicher (CD-ROM, engl.: compact disc read only memories), magnetooptische Disk, Nurlesespeicher (ROM, engl.: read only memories), Schreib-Lesespeicher (RAM, engl.: random access memories), elektrisch programmierbare Nurlesespeicher (EPROM, engl.: electrically programmable read-only memories), elektrisch löschbare und programmierbare Nurlesespeicher (EEPROM, engl.: electrically erasable and programmable read-only memories), magnetische oder optische Karten oder jede andere Art von Medium, das zum Speichern elektronischer Befehle geeignet ist und in der Lage ist, mit einem Systembus für eine Computereinrichtung gekoppelt zu werden.
-
Es Gebrauch von den Ausdrücken „gekoppelt” und „verbunden” zusammen mit deren Ableitungen gemacht verwendet. Es sollte verstanden werden, dass diese Ausdrücke nicht als Synonyme füreinander gedacht sind. Stattdessen kann in bestimmten Ausführungsbeispielen „verbunden” verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem physikalischen und elektrischen Kontakt miteinander stehen. „Gekoppelt” kann verwendet werden, um anzugeben, dass zwei oder mehr Elemente entweder in direktem oder indirektem (ohne zwischen liegende Elemente zwischen diesen) physikalischen oder elektrischen Kontakt miteinander stehen und/oder, dass die zwei oder mehr Elemente kooperieren oder miteinander interagieren (z. B. in einer Ursache-Wirkungs-Beziehung).
-
In der obigen detaillierten Beschreibung sind verschiedene spezifische Details dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Allerdings sollte vom Fachmann verstanden werden, dass die vorliegende Erfindung auch ohne diese spezifischen Details ausgeführt werden kann. An anderen Stellen sind wohlbekannte Verfahren, Prozeduren, Komponenten und Schaltkreise nicht im Detail beschrieben, um die vorliegende Erfindung nicht zu verschleiern. Es sollte verstanden werden, dass die obige Beschreibung als veranschaulichend und nicht als beschränkend verstanden werden soll. Viele andere Ausführungsbeispiele werden dem Fachmann in den Sinn kommen, wenn er die obige Beschreibung liest und versteht. Der Schutzbereich der Erfindung sollte daher unter Bezugnahme auf die angehängten Ansprüche zusammen mit dem vollem Schutzbereich von Äquivalenten, die von diesen Ansprüchen abgedeckt sind, bestimmt werden.