-
Kontinuierliche Innovationen bei Consumer-Anwendungen haben den Bedarf an Speicherung mit höheren Dichten verstärkt. Eigenschaften, die Flash-Speichern innewohnen, erfüllen die Datenaufbewahrungsbedürfnisse von vielen Consumer-Anwendungen. Flash-Speicher behält seine Daten, selbst wenn der Strom ausgeschaltet wird, und die Verwendung von MLC(MultiLevel Cell)-Technologie erzielt die höchsten Dichten, die Consumer (Verbraucher) wünschen. MLC-Technologie bietet niedrigere Speicherkosten, indem die Speicherung von mehreren Bits von Daten pro Speicherzelle ermöglicht wird. Durch Hinzufügen von mehreren Informationsbits auf einem einzigen Speichertransistor ist die Siliziumfläche verringert worden und ist der Bedarf an höherer Dichte erfüllt worden. Die MLC-Technologie weist jedoch Kosten auf, die mit dem Programmieren des Speichers verbunden sind, und es ist daher eine Lösung erwünscht, die dabei hilft, diese Kosten in den Griff zu bekommen.
-
Die
US 2005/0078513 A1 offenbart nichtflüchtige MLC-Speicher mit einem Speicher-Bit-Swap-Kodierer zum Charakterisieren von empfangenem Code, um einen dominanten Zustand des zu speichernden Codes zu finden, wobei der Swap-Kodierer den Code durch einen Austauschcode vor der Speicherung ersetzt.
-
Die
US 7 117 295 B2 offenbart Anordnungen und Verfahren zur Speicherung von Daten in Multi-Level-Speicherbausteinen, die entsprechende Kodierer zum Charakterisieren von Programmiercode umfassen, um dominante Zustände zu ermitteln, wobei die Daten in umkodierter Weise gespeichert werden, um geringere Programmier- und Lesezeiten zu erreichen.
-
KURZBESCHREIBUNG DER ZEICHUNGEN
-
Die Erfindung ist sowohl hinsichtlich der Gestaltung als auch des Betriebsverfahrens gemeinsam mit Aufgaben, Merkmalen und Vorteilen derselben durch Bezugnahme auf die folgende ausführliche Beschreibung in Verbindung mit den beigefügten Zeichnungen am besten verständlich, in denen:
-
1 ein Diagramm ist, das ein Gerät darstellt, das Schaltkreise und Algorithmen zur Bit-Swap-Kodierung zum Verbessern der Leistung des nichtflüchtigen Speichers gemäß der vorliegenden Erfindung enthält;
-
2 ein Flussdiagramm ist, das ein Verfahren zum Charakterisieren eines Bereiches eines nichtflüchtigen Speichers und Bestimmen eines Bedarfs an der Verwendung der Bit-Swap-Kodierung und Verwendung des Bit-Swap-Algorithmus zum Verbessern der Systemleistung gemäß der vorliegenden Erfindung darstellt;
-
3 ein Blockdiagramm zeigt, das ein Beispiel für die Bit-Swap-Kodierung darstellt, die Speicherbereiche Speicherprogrammier und -leseoperationen gemäß der vorliegenden Erfindung zuordnet.
-
Es versteht sich, dass der Einfachheit- und Klarheit der Darstellung halber Elemente, die in den Figuren dargestellt sind, nicht notwendigerweise maßstabsgerecht gezeichnet sind. Zum Beispiel können die Abmessungen von einigen der Elemente im Verhältnis zu anderen Elementen der Klarheit halber übertrieben dargestellt sein. Außerdem sind Bezugszahlen in den Figuren, sofern als geeignet angesehen, wiederholt worden, um auf korrespondierende oder analoge Elemente hinzuweisen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der folgenden Beschreibung und in den folgenden Ansprüchen können die Begriffe „gekoppelt” und „verbunden” sowie deren Abwandlungen verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonym füreinander dienen sollen. Statt dessen kann in speziellen Ausführungsformen „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem körperlichen oder elektrischen Kontakt miteinander stehen, während „gekoppelt” ferner bedeuten kann, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch unverändert kooperieren oder miteinander Wechselwirken.
-
1 stellt Einrichtungen der vorliegenden Erfindung dar, die zum Beispiel in einem Gerät 10 enthalten sein können. In der gezeigten Ausführungsform ist das Gerät 10 ein drahtloses Kommunikationsgerät, aber es sollte darauf hingewiesen werden, dass die vorliegende Erfindung nicht auf drahtlose Anwendungen beschränkt ist. In der drahtlosen Ausführungsform empfängt und sendet ein Transceiver 12 ein moduliertes Signal von einer oder mehreren Antenne(n). Der analoge Front-End-Transceiver kann ein eigenständiger analoger integrierter Hochfrequenz(HF)-Schaltkreis oder alternativ mit einem Prozessor 14 als ein integrierter Mischbetrieb-Schaltkreis eingebettet sein. Das empfangene modulierte Signal kann frequenzabwärtsgemischt, gefiltert, danach in ein digitales Basisband-Signal umgewandelt werden.
-
Der Prozessor 14 ist mit dem Tranceiver 12 verbunden, um Basisband- und Anwendungsverarbeitungsfunktionen bereitzustellen, die einen oder mehrere Prozessorkern(e) benutzen können. Prozessorkerne 16 und 18 verarbeiten allgemein Funktionen, die Instruktionen abrufen, die Kodierungen generieren, Operanden finden und geeignete Aktionen durchführen sowie danach Ergebnisse speichern. Die Verwendung von mehreren Kernen kann ermöglichen, dass ein Kern für die Handhabung von anwendungsspezifischen Funktionen, wie zum Beispiel Grafiken, Modemfunktionen etc., reserviert wird. Alternativ können die mehrfachen Kerne ermöglichen, dass Verarbeitungslasten auf die Kerne aufgeteilt werden.
-
Eine Speichersteuerung steuert eine Speicherschnittstelle 22, die ermöglicht, dass die Prozessorkerne und Cache-Speicher, der in dem Prozessor 14 eingebettet ist, Daten mit einem Systemspeicher 24 austauschen. Der Systemspeicher 24 kann eine Kombination von Speichern, wie zum Beispiel Platte, RAM (Random Access Memory), ROM (Read Only Memory) und einen nichtflüchtigen Speicher 26, enthalten, obwohl weder der Typ noch die Vielzahl von in dem Systemspeicher 24 enthaltenen Speicher Beschränkungen für die Erfindung darstellen.
-
In der drahtlosen Ausführungsform sind der Transceiver 12, der Prozessor 14 und der nichtflüchtige Speicher 26 vereint, um Lösungen für eine Vielzahl von Anwendungen bereitzustellen. Typische Anwendungen, die für nichtflüchtige Speicher gut geeignet sind, schließen Speicherkarten für digitale Videos und digitale Fotoapparate, USB-Flash-Laufwerke, MP3-Player, Fahrzeugdiagnose, GPS-Geräte, Animatronik, Videospielkarten und Spielzeuganwendungen ein. Zusätzliche Anwendungen schließen Speicherkarten für Drucker (Fonts), Mobilfunkgeräte, Telekommunikationsanwendungen, Sprachkommunikationssystem (Voice Mail), Set-Top-Boxen, Solid-State-Hard-Disc-Laufwerke, HDTV, Strichcodescanner und andere Typen von Hand-Speichergeräten ein. Wie aufgezeigt, können der Prozessor 14 und der nichtflüchtigen Speicher 26 in Systemen enthalten sein, die sich von drahtlosen Anwendungen unterscheiden. Beispielsweise können der Prozessor 14 und der nichtflüchtige Speicher 26 gemeinsam enthalten sein, wobei der beanspruchte Gegenstand in Anwendungen enthalten ist, die Desktop-Computer und Laptops einschließen.
-
Der nichtflüchtige Speicher 26 kann aus einer Vielzahl von Speichereinrichtungen ausgewählt sein, wie zum Beispiel einem ETOXTM-Flash-NOR-Speicher, NAND-Speicher, einem EEPROM (Electrically Erasable and Programmable Read Only Memory), einen FRAM (Ferroelectric Random Access Memory), einem PFRAM (Polymer Ferroelectric Random Access Memory), einen MRAM (Magnetic Random Access Memory), einen OUM (Ovonics Unified Memory), einem Mehrstufen-Molekular-Speicher, der Information in Form von Ladungspaketen an mehreren aktiven Orten um ein einzelnes Molekül speichert, oder irgendein anderer Einrichtungstyp sein, der Instruktionen und/oder Daten speichern und die Information halten kann, selbst wenn sich die Einrichtung in einem Stromsparmodus befindet. Dementsprechend ist der Schutzbereich der vorliegenden Erfindung nicht nur auf diese Beispiele für nichtflüchtige Speicher 26 beschränkt.
-
Der Prozessor 14 kann ferner einen Speicher-Bit-Swap-Kodierer 20 enthalten, oder alternativ kann der nichtflüchtige Speicher 26 den Speicher-Bit-Swap-Kodierer enthalten. Gemäß der vorliegenden Erfindung ordnet der Speicher-Bit-Swap-Kodierer 20 Speichergebiete oder -bereiche speziellen Funktionen zu, die auf diesen Gebieten oder Bereichen durchgeführt werden. 2 liefert ein Beispiel, das in dem nichtflüchtigen Speicher 26 durchgeführte Operationen darstellt, bei dem Speicher-Bit-Swapping die Systemleistung verbessern kann. Die Figur stellt das Programmieren und Lesen eines Speicherbereiches in dem nichtflüchtigen Speicher auf der Grundlage der verschiedenen steuerbaren Bit-Zustände dar.
-
Es versteht sich, dass eine gesteuerte Programmiertechnik eine präzise Ladungsmenge auf dem schwebenden Gate einer Zelle eines nichtflüchtigen Speichers platziert. Die Ladungsspeicherfähigkeit der Flash-Speicherzelle ermöglicht die Speicherung von mehreren Bits in einer einzigen Zelle. Durch genaues Platzieren von Ladung auf dem schwebenden Gate in einem von vier Ladungszuständen oder -bereichen kann die Speicherzelle zwei Daten-Bits speichern. Durch noch präzisere Ladungsplatzierungssteuerung sind aber höhere Bit-pro-Zelle-Dichten möglich. Es wird herausgestellt, dass zum Darstellen der Erfindung und der Einfachheit halber die Tabelle nur zwei gespeicherte Daten-Bits pro Zelle darstellt. Andere Ausführungsformen können aber zusätzliche Bits pro Zelle speichern und somit ist die vorliegende Erfindung nicht auf Zelldichten von nur zwei Bits pro Zelle beschränkt.
-
Multi-Level Cell(MLC)-Technologie ermöglicht die Speicherung von mehreren Bits pro Speicherzelle durch Laden des schwebenden Gates eines Transistors auf unterschiedliche Pegel, die durch eindeutige Flash-Zellenschwellenwertspannungsbereiche definiert sind. Die auf dem schwebenden Gate gespeicherte Ladung erzeugt ein Spannungspotenzial, das von einer höheren Einschaltschwellenwertspannung (Vt) überwunden werden muss, die an einem Steuergate in dem Speicherzellentransistor anliegt. Die gespeicherte Ladungsmenge auf dem schwebenden Gate modifiziert das Verhalten des Speicherzellentransistors, und diese gespeicherte Gate-Ladung kann in einer Speicherleseoperation als Zustände (levels) von gespeicherten Daten detektiert werden.
-
Die Beziehung zwischen den vier Schwellenwertspannungsbereichen beziehungsweise Vt-Pegeln, die in der Flash-Speicherzelle gespeichert sind, und den korrespondierenden logischen Zuständen können durch die Zwei-Bit-Kombinationen '11b, '10b, '01b und '00b eindeutig repräsentiert werden. Die vier Schwellenwertspannungsverteilungen gehen in gespeicherte Daten über, die eine Speicherleseoperation als '11b, zum Beispiel einen gelöschten Zustand, '10b, zum Beispiel einen Teilzellenprogrammierzustand, '01b, zum Beispiel einen Teilzellenprogrammierzustand und '00b, zum Beispiel einen Vollzellenprogrammierzustand interpretieren kann. Somit kann das Vorhandensein von Gateladung als Zustände von gespeicherten Daten oder diskrete Zustände '11b, '10b, '01b und '00b interpretiert werden.
-
Die Inhalte des Flash-Speichers können an einer Blockgrenze gelöscht werden, wobei mit der Löschoperation Daten von dem Flash-Speicher gelöscht werden. Nach Löschen des Speicherblocks bis zum gelöschten Zustand '11b können die adressierten Speicherzellen dann auf die '10b-, '01b- oder die '00b- programmierten Zustände programmiert werden. Das Speichern von zwei Bits pro Zelle erfordert vier Zustände, die durch Lesereferenzzellen definiert sind. Wenn Daten in die Speichereinrichtung eingegeben werden, werden sie unabhängig von dem Vorhandensein oder Fehlen von Strom bleiben.
-
Es versteht sich, dass die Programmierzeit dieser vier Zustände nicht dieselbe ist. Zum Beispiel entspricht einer der Vt-Zustände, der als '11b bezeichnet ist, dem „gelöschten” Zustand und weist die geringste Programmierzeit der vier Zustände auf. Dieser gelöschte '11b-Zustand ist ein „Leer”(do-nothing)-Zustand und zum Speichern dieses Bit-Paares ist keine Programmiertätigkeit erforderlich, um die Vt der Zelle zu ändern. Somit repräsentiert dieser gelöschte Zustand die minimale Zeit zum Programmieren im Vergleich zu irgendeinem der anderen Bit-Paare. Die Programmierung auf die '10b-, '01b- und '00b-Zustände ist mit dem Laden des schwebenden Gates von Transistoren von Speicherzellen auf unterschiedliche Pegel beziehungsweise Zustände verbunden, was sicherlich mehr Programmierzeit als der '11b-Zustand benötigt.
-
2 zeigt ein Flussdiagramm, das sowohl einen Programmieralgorithmus als auch einen Lesealgorithmus beschreibt, die gemäß der vorliegenden Erfindung für den nichtflüchtigen Speicher 26, der in 1 dargestellt ist, verwendet werden. Typischerweise sind Code und Daten, die in definierten Bereichen eines nichtflüchtigen Speichers behalten werden, nicht auf jede Bit-Paar-Kombination gleichmäßig verteilt. Mit anderen Worten spezielle Bereiche in dem nichtflüchtigen Speicher speichern allgemein keine gleichmäßige Zuordnung der '00b–'01b-, '10b- und '11b-Zustände, sondern weisen stattdessen einige programmierte Zustände eine höhere Neigung zu einem Bit-Paar gegenüber anderen Bit-Paaren auf. Diese Neigung, die ein Bit-Paar favorisiert, tritt zum Beispiel auf, wenn das Befehlssatzkodieren von Code in Prozessor 14 mehr Nullen als Einsen generiert. Es leuchtet ein, dass mehr '00b-Bit-Paar-Kombinationen zur Speicherung in den definierten Bereichen des nichtflüchtigen Speichers 26 im Vergleich zu den anderen Bit-Paar-Kombinationen zeitlich geplant würden.
-
Die vorliegende Erfindung nutzt diese ungleiche Stellung (skew), die die Generierung einer Bit-Paar-Kombination gegenüber anderen Bit-Paar-Kombinationen, die zur programmierten Speicherung zeitlich geplant sind, favorisiert, zum eigenen Vorteil aus. In einigen Ausführungsformen wird Verfahren 200 oder werden Teile davon im normalen Betrieb von dem nichtflüchtigen Speicher 26 durchgeführt, um Leistung zu verbessern und den Systemarbeitsstromverbrauch zu reduzieren. In anderen Ausführungsformen kann/können das Verfahren 200 oder Teile davon von dem nichtflüchtigen Speicher 26 in Kooperation mit dem Prozessor 14 durchgeführt werden. Man beachte, dass das Verfahren 200 nicht auf die spezielle Art von Vorrichtung, Softwareelement oder System, die/das das Verfahren durchführt, beschränkt ist.
-
Wie gezeigt, beginnt das Verfahren 200 bei Prozess 210, in dem der Speicherbereich oder die Speichergröße, die programmiert wird, in dem nichtflüchtigen Speicher 26 festgelegt wird. In einigen Ausführungsformen kann dieser Bereich als ein 1 K-Byte-Bereich definiert werden, obwohl diese 1 K-Bereichsgröße nicht einschränkend zu verstehen ist und andere Bereichsgrößen ins Auge gefasst sind. In dem Prozess 212 wird der definierte Speicherbereich so charakterisiert, dass die häufigste Bit-Paar-Kodierkombination bestimmt wird. In Prozess 214 wird eine Entscheidung getroffen, ob die häufigste Bit-Paar-Kodierkombination, die in dem Prozess 212 ermittelt worden ist, dem gelöschten '11b-Zustand entspricht. Wenn die häufigste Bit-Paar-Kodierkombination dem gelöschten '11b-Zustand entspricht, dann wird der Prozess 222 durchgeführt und erfolgt keine Bit-Paar-Kodierung oder kein Bit-Swapping. Wenn der Speicherbereich eine dominante Bit-Paar-Kombination enthält, die direkt auf eine Vt abbildet, die den gelöschten, zum Beispiel Leer-'11b-Zustand repräsentiert, dann erfolgt kein Swapping und geht der Algorithmus zum normalen Programmieren des Speicherbereichs über.
-
Wenn jedoch der Speicherbereich eine dominante Bit-Paar-Kodierkombination aufweist, die sich von dem gelöschten '11b-Zustand unterscheidet, dann geht der Algorithmus zum Durchführen von Prozess 216 über. Der Prozess 216 tauscht die häufigste Bit-Paar-Kombination mit der '11b-Kodierung. Anders ausgedrückt, wenn die dominante Bit-Paar-Kombination für den Speicherbereich auf eine Vt abbildet, die länger als die gelöschte „Leer”-Vt benötigt, dann tauscht (swap) der Speicher-Bit-Swap-Kodierer 20 die Bit-Kodierung für den Programmierbereich, sodass die dominanteste Bit-Paar-Kombination auf die „Leer”-Vt abbildet. Wenn ein Swap-Zustand ermittelt wird und der Prozess 216 erfolgt, speichert der nichtflüchtige Speicher 26 zwei Extra-Bits, die die Swap-Information für diesen Programmierbereich, wie in Prozess 218 angegeben, beschreiben. Der ausgewählte Speicherbereich wird dann unter Verwendung der Post-Swap-Kodierungen, siehe Prozess 222, programmiert.
-
3 zeigt ein Blockdiagramm, das ein Beispiel für die Bit-Swap-Kodierung darstellt, die Speicherbereiche Speicherprogrammier- und -leseoperationen gemäß der vorliegenden Erfindung zuordnet. Die Vt-Zustände von '11b, '10b, '01b und '00b in Block 310 repräsentieren die Bit-Paar-Kombination für einen zum Programmieren ausgewählten nichtflüchtigen Speicherbereich. Die Vt-Zustände von '11b, '10b, '01b und '00b in Block 320 repräsentieren die Post-Swap-Kodierungen (beschrieben in Prozess 220 in dem in 2 gezeigten Algorithmus). In diesem Beispiel wird die dominante Bit-Paar-Kombination für diesen ausgewählten Speicherbereich als '10b festgelegt (entspricht Prozess 212 in dem in 2 gezeigten Algorithmus). Anders gesagt, repräsentiert der durch Bezugszahl 314 gekennzeichnete Vt-Zustand die am häufigsten auftretende Bit-Paar-Kombination für den ausgewählten Speicherbereich.
-
Da die gängigste Bit-Paar-Kombination nicht dem '11b-Bit-Paar (beschrieben in Prozess 214 in dem in 2 gezeigten Algorithmus) gleicht, wird der '10b-Zustand dem gelöschten '11b-Zustand zugeordnet oder damit ausgetauscht, um Programmierzeiten zu optimieren (beschrieben in Prozess 216 in dem in 2 gezeigten Algorithmus). Somit wird eine Pre-Swap-Bit-Paar-Kombination von '10b in Block 310 einer Post-Swap-Kodierung von '11b in Block 320 zugeordnet und werden zwei Bits zum Beschreiben der Swap-Information mit dem ausgewählten Programmierbereich gespeichert (beschrieben in Prozess 218 in dem in 2 gezeigten Algorithmus). Zum Abschließen der Paarzuordnung wird das '11b-Bit-Paar, das durch Bezugszahl 312 gekennzeichnet ist, in Block 310 mit dem '10b-Bit-Paar, das durch Bezugszahl 324 gekennzeichnet ist, in Block 320 ausgetauscht.
-
Der Einfachheit halber ist in 3 nur eine Speicher-Swap-Paarung dargestellt, aber weitere Überlagerungen könnten zeitlich eingeplant werden, um optimale Programmierzeiten zu erzielen und den Systemstromverbrauch zu reduzieren. Somit kann der Speicher-Bit-Swap-Kodierer 20 mehrere Überlagerungen (swapping) für jeden Speicherbereich zuordnen. 2 stellt ferner dar, dass, wenn in diesem Programmierbereich gespeicherte Information abgerufen wird, die beiden Extra-Bits, die dem gespeicherten Swap-Status für diesen Programmierbereich entsprechen, verwendet werden, um den in der Programmieroperation verwendeten Vt-Swap umzudrehen und die ursprünglichen Benutzerdaten zu reproduzieren (siehe Prozess 250, 252, 254 und 256).
-
Man beachte, dass in Flash-Technologien eine Einwegprogrammierung eine Programmierung von Bits von 1 bis 0 ermöglicht. Bits können zum Beispiel von einem O × F bis O × E bis O × C bis O × 8 bis O × O programmiert sein, bevor ein Löschen erfolgt. Mittels eines anderen Beispiels können Bits von O × F bis O × 7 bis O × 3 bis O × 1 bis O × O programmiert werden, bevor ein Löschen erfolgt. Diese einmalige Programmiereinschränkung ermöglicht Zustandsaustausch (Level Swapping). Jede Programmierung, die mehr als einmal erfolgt, schaltet die Fähigkeit zum Austauschen von Speicher-Paarungen aus, aber die Auferlegung einer Beschränkung, in einem Bereich nur einmal zu programmieren, ermöglicht Austausch (Swapping). In der Praxis erfordert der Schutz von Daten mit Fehlerkorrektur diese Beschränkung auf eine einmalige Programmierung. Allgemein erfordert die Fehlerkorrektur, dass die fehlerkorrigierten Zellen nur geschrieben werden. Man beachte, dass, wenn die Daten ein zweites Mal geschrieben werden, die ECC-Paritätsbits von 0 bis 1 laufen können und dieser Übergang dieser Paritätsbitdaten nicht mit einer Flash-Programmoperation gespeichert werden kann.
-
Nunmehr sollte ersichtlich sein, dass der nichtflüchtige Speicher 26 ohne Hilfe durch den Prozessor 14 verwendet werden kann, um die Leistungs- und Stromverbrauchsprobleme durch Verwalten und Durchführen von Ziel-Bit-Paar-Kombinationsumschaltungen, die mit ausgewählten Programmierbereichen verbunden sind, zu lösen. Durch geeignetes Austauschen des existierenden Codes kann der nichtflüchtige Speicher 26 Leistungsunterschiede minimieren und eine Verbesserung hinsichtlich der Programmierleistung erzielen. Datenbits, die nicht zufälliger Natur sind, dass heißt Datenbits, die nicht gleichmäßig über alle Zustände in dem Programmierbereich verteilt sind, können von der Verwendung des Swapping-Algorithmus profitieren. Wenn jedoch kein Zustand häufiger als andere ist, dann wird Swapping nicht helfen. In der Praxis sollten zellulärer Code und andere Typen von Daten von dem Swapping-Algorithmus profitieren und können Verbesserungen im Bereich von zum Beispiel 7% bis 37% realisiert werden. Durch Optimieren des „Leer”-Zustands beim Programmieren kann der erforderliche Programmierstrom reduziert werden, weil eine geringere Anzahl an Zellen programmiert werden muss.