-
QUERVERWEIS AUF VERWANDTE ANMELDUNG
-
Diese Anmeldung beansprucht Priorität und den Nutzen der nicht vorläufigen US-Anmeldung Seriennummer
16/390.370 , eingereicht am 22. April 2019.
-
HINTERGRUND
-
Einige Arten von Speichersystemen speichern Daten gemäß inhaltsadressierbaren Speicherschemata (CAM-Schemata), in denen Daten als Schlüsseldatensatzpaare gespeichert sind. Ein solches Speichersystem kann einen ersten Teil eines Speichers, der Schlüssel speichert, und einen zweiten Teil eines Speichers, der Datensätze speichert, einschließen. Ein Schlüssel kann eine Vielzahl von Attributen eines zugehörigen Datensatzes identifizieren und kann auch angeben, wo der zugehörige Datensatz in dem Speichersystem gespeichert ist. Im Betrieb kann eine Hostvorrichtung herausfinden wollen, welche der Datensätze, die das Speichersystem speichert, ein oder mehrere bestimmte Attribute aufweisen. Um dies herauszufinden, sendet die Hostvorrichtung dem Speichersystem einen Zielschlüssel, der die bestimmten Attribute identifiziert. Nach Empfang des Zielschlüssels führt das Speichersystem einen CAM-Lesevorgang durch, in dem das Speichersystem den ersten Teil des Speichers durchsucht, der die Schlüssel speichert, um zu bestimmen, ob einer der Schlüssel mit dem Zielschlüssel übereinstimmt. Beim Bestimmen, welcher der Schlüssel übereinstimmt, ruft das Speichersystem die Datensätze ab, die den übereinstimmenden Schlüsseln zugehörig sind, und gibt sie an die Hostvorrichtung zurück.
-
Speichersysteme speichern aufgrund inhärenter Einschränkungen fehlerhafte Schlüssel. Zwar sind die Fehlerraten gering, es liegen jedoch immer noch Fehler vor. Als Folge der Fehler können Speichersysteme keine übereinstimmenden Schlüssel erkennen, was dazu führt, dass das Speichersystem keine Datensätze an die Hostvorrichtung zurückgibt, welche die Hostvorrichtung ansonsten empfangen möchte. Insofern können neue CAM-Speicherschemata und zugehörige CAM-Lesevorgänge wünschenswert sein, die es einem Speichersystem ermöglichen, übereinstimmende Schlüssel zu erfassen, obwohl die Schlüssel mit Fehlern gespeichert sind.
-
Figurenliste
-
Die beigefügten Zeichnungen, die in dieser Beschreibung enthalten sind und einen Teil derselben bilden, veranschaulichen verschiedene Aspekte der Erfindung und dienen zusammen mit der Beschreibung dazu, ihre Prinzipien zu erklären. Wo immer es zweckmäßig ist, werden in allen Zeichnungen dieselben Bezugszeichen verwendet, um gleiche oder ähnliche Elemente zu bezeichnen.
- 1A ist ein Blockdiagramm eines beispielhaften Speichersystems.
- 1 B ist ein Blockdiagramm eines beispielhaften Speichermoduls, das eine Vielzahl von Speichersystemen einschließt.
- 1C ist ein beispielhaftes Blockdiagramm eines hierarchischen Speichersystems.
- 2A ist ein Blockdiagramm einer beispielhaften Konfiguration von Komponenten einer Steuerung des Speichersystems von 1A.
- 2B ist ein Blockdiagramm einer beispielhaften Konfiguration von Komponenten eines Speicher-Dies des Speichersystems von 1A.
- 3A ist ein Blockdiagramm einer Speicherzellenstruktur, die in Blöcken organisiert ist.
- 3B ist ein Blockdiagramm einer Speicherzellenstruktur, die in Blöcken in verschiedenen Speicherebenen organisiert ist.
- 4A ist eine perspektivische Ansicht von mindestens einem Abschnitt des Speicher-Dies von 2B, das eine Vielzahl von dreidimensionalen Blöcken einschließt.
- 4B ist eine Querschnittsansicht eines Abschnitts von einem der Blöcke von 4A.
- 4C ist eine Detailansicht eines Bereichs des Querschnitts von 4B.
- 4D ist ein Schaltschema eines Blocks von Speicherzellen, die dreidimensional in eine Vielzahl von NAND-Ketten angeordnet sind.
- 5A ist ein Diagramm von Schwellenspannungsverteilungskurven für Speicherzellen, die ein Datenbit pro Zelle speichern.
- 5B ist ein Diagramm von Schwellenspannungsverteilungskurven für Speicherzellen, die zwei Datenbits pro Zelle speichern.
- 5C ist ein Diagramm von Schwellenspannungsverteilungskurven für Speicherzellen, die drei Datenbits pro Zelle speichern.
- 5D ist ein Diagramm von Schwellenspannungsverteilungskurven für Speicherzellen, die vier Datenbits pro Zelle speichern.
- 6 ist ein Blockdiagramm einer beispielhaften Programmierschaltung des Speicherchips von 2B, die eingerichtet ist, um Daten in Blöcke zu programmieren.
- 7 ist ein Blockdiagramm einer beispielhaften Leseschaltung des Speicherchips von 2 B, die eingerichtet ist, normale Lesevorgänge und/oder inhaltsadressierbare Lesevorgänge durchzuführen.
- 8 ist ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, der eine Vielzahl von Ketten einschließt, die eine Vielzahl von Schlüsseln gemäß einer ersten Art von CAM-Speicherschemata speichern.
- 9 ist ein schematisches Teilschaltdiagramm von zwei Ketten, die zwei Schlüssel gemäß der ersten Art von CAM-Speicherschema speichern.
- 10 ist ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, der eine Vielzahl von Ketten einschließt, die eine Vielzahl von Schlüsseln und zugehörigen invertierten Schlüsseln gemäß eine zweiten Art von CAM-Speicherschema speichern.
- 11 ist ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, der eine Vielzahl von Ketten einschließt, die eine Vielzahl von Schlüsselwörtern und zugehörigen invertierten Schlüsselwörtern gemäß einer dritten Art von CAM-Speicherschema speichern.
- 12 ist ein Blockschema einer beispielhaften Schlüsselerzeugungsschaltung.
- 13 ist ein Blockdiagramm einer beispielhaften Konfiguration eines Kettenabschnitts eines Abtastergebnisspeichers von 8, der eingerichtet ist, um vorläufige Abtastergebnisse zu speichern und ein endgültiges Abtastergebnis für eine Kette des Blocks von 11 zu bestimmen, der Schlüsselwörter gemäß der dritten Art von CAM-Speicherschema speichert.
- 14 ist ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, der eine Vielzahl von Ketten einschließt, die eine Vielzahl von Schlüsselwortabschnitten und entsprechenden invertierten Schlüsselwortabschnitten gemäß einer vierten Art von CAM-Speicherschema speichern.
- 15 ist ein Blockdiagramm einer beispielhaften Schlüsselwortabschnitt-Erzeugungsschaltung.
- 16 ist ein Blockdiagramm einer beispielhaften Konfiguration eines Kettenabschnitts des Abtastergebnisspeichers von 8, der eingerichtet ist, vorläufige Abtastergebnisse zu speichern und ein endgültiges Abtastergebnis für eine Kette des Blocks von 14 zu bestimmen, der Schlüsselwortabschnitte gemäß der vierten Art von CAM-Speicherschema speichert.
- 17 ist ein Blockdiagramm einer anderen beispielhaften Konfiguration des Kettenabschnitts des Abtastergebnisspeichers von 8, der eingerichtet ist, um vorläufige Abtastergebnisse zu speichern und ein endgültiges Abtastergebnis für eine Kette zu bestimmen, die Schlüsselworte speichert, gemäß der dritten Art von CAM-Speicherschema, oder für eine Kette, die Schlüsselwortabschnitte speichert, gemäß der vierten Art von CAM-Speicherschema.
-
DETAILLIERTE BESCHREIBUNG
-
Die folgenden Ausführungsformen beschreiben Einrichtungen, Vorrichtungen, Systeme, Schaltungen und Verfahren zum Speichern von Schlüsseln als Schlüsselwörter (Schlüssel mit assoziierten Sätzen von Paritätsbits) und zum Durchführen assoziierter Lesevorgänge eines inhaltsadressierbaren Speichers (CAM, content addressable memory), um übereinstimmende Schlüssel gemäß CAM-Speicherschemata zu bestimmen. Durch Speichern der Schlüssel als Schlüsselwörter kann das Speichersystem die Paritätsbits der Schlüsselwörter nutzen, um übereinstimmende Schlüsselwörter und wiederum übereinstimmende Schlüssel zu bestimmen, obwohl Speicherzellen, die Schlüsselwörter speichern, diese mit einem oder mehreren Bitfehlern speichern können. Das Speichersystem kann die Paritätsbits während der Abtast- oder Lesevorgänge, die auf den Speicherchips durchgeführt werden, nutzen, um die übereinstimmenden Schlüsselwörter zu bestimmen, anstatt die Paritätsbits nur während der Fehlererkennungs- und Korrekturprozesse nach dem Lesen zu verwenden. Das Hinzufügen der Paritätsbits zu den Schlüsseln zur Bildung von Schlüsselwörtern reduziert oder minimiert wiederum die Anzahl der fehlgeschlagenen oder verpassten Erkennungen, d. h. die Anzahl der Male, die das Speichersystem nicht erkennt, dass ein Schlüssel ein übereinstimmender Schlüssel ist, da er mit Bitfehlern gespeichert ist.
-
In verschiedenen Ausführungsformen kann das Speichersystem ferner invertierte Schlüsselwörter zusammen mit den Schlüsselwörtern speichern, so dass das Schlüsselwort und das invertierte Schlüsselwort jeweils einen zugehörigen Satz von Paritätsbits aufweisen. Unter zumindest einigen CAM-Speicherschemata werden sowohl ein Schlüssel als auch eine invertierte Version des Schlüssels (d. h. ein invertierter Schlüssel) in den Speicherzellen gespeichert, um übereinstimmende Schlüssel genau zu detektieren. Dementsprechend kann das Speichersystem durch Speichern von sowohl Schlüsselwörtern als auch invertierten Versionen der Schlüsselwörter (d. h. invertierten Schlüsselwörtern) die Paritätsbits von sowohl den Schlüsselwörtern als auch den invertierten Schlüsselwörtern nutzen, um übereinstimmende Schlüsselwörter zu bestimmen, selbst wenn die Speicherzellen die Schlüsselwörter und/oder die invertierten Schlüsselwörter mit einem oder mehreren Bitfehlern speichern. Wenn dagegen Paritätsbits nur für den Schlüssel und nicht für den invertierten Schlüssel erzeugt werden, wie wenn die Paritätsbits nur für eine Fehlererkennung und -korrektur nach dem Lesen für den Schlüssel erzeugt werden, der aus dem Speicherchip heraus erfasst wird, kann das Speichersystem während der Abtastoperationen übereinstimmende Schlüsselwörter nicht optimal erfassen, falls der invertierte Schlüssel mit einem oder mehreren Bitfehlern gespeichert ist.
-
Um übereinstimmende Schlüsselwörter zu erkennen, die mit einem Zielschlüsselwort übereinstimmen, ist eine Leseschaltung eingerichtet, um einen CAM-Lesevorgang durchzuführen. Die Leseschaltung schließt eine Vielzahl von Abtastschaltungen ein, die mit den Ketten von Speicherzellen über Bitleitungen gekoppelt sind, die Abtastvorgänge durchführen, um zu bestimmen, ob ihre zugehörigen Ketten und/oder Bitleitungen leiten. Während eines Abtastvorgangs spannt eine Lesesteuerung Wortleitungen, die mit den Ketten gekoppelt sind, gemäß einer Wortleitungsvorspannungseinstellung vor, die Wortleitungsspannungspegel angibt, die an die Wortleitungen angelegt werden. Abhängig von der Vorspannungseinstellung und den Zuständen der Speicherzellen kann die Bitleitung leiten oder nicht. Wenn eine Bitleitung leitet, erzeugt eine Abtastschaltung, die mit der Bitleitung gekoppelt ist, ein Abtastergebnis, um anzuzeigen, dass eine mit der Bitleitung gekoppelte Kette ein übereinstimmendes Schlüsselwort speichert.
-
Die Leseschaltung kann einen CAM-Lesevorgang durchführen, indem sie eine Vielzahl von Abtastvorgängen für einen Satz von Speicherzellen durchführt, die ein Schlüsselwort speichern. Während der Abtastvorgänge spannt die Leseschaltung eine Wortleitungsgruppe vor, die mit zumindest einem Abschnitt der Speicherzellen gekoppelt ist, die zumindest einen Abschnitt des Schlüsselworts gemäß einer Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen speichern. Im Allgemeinen gibt eine Wortleitungsvorspannungseinstellung die Wortleitungsvorspannungspegel zum Vorspannen einer Gruppe von Wortleitungen an. Jeder Vorspannungspegel kann auf eine der Wortleitungen der Gruppe abgebildet werden. Eine modifizierte Wortleitungsvorspannungseinstellung, wie hierin verwendet, kann von einer Zielwortleitungsvorspannungseinstellung, die einem Zielschlüsselwort entspricht, modifiziert werden. Außerdem kann, wie eine modifizierte Wortleitungsvorspannungseinstellung modifiziert wird, auf einer Bitfehlermenge basieren oder von dieser abhängen, die mit der Speicherung des Schlüsselworts assoziiert ist, wie beispielsweise einer maximalen Anzahl von Bitfehlern, bis zu denen das Schlüsselwort oder ein Abschnitt des Schlüsselworts gespeichert werden kann und dennoch als ein übereinstimmendes Schlüsselwort erkannt werden kann, ohne dass die Erkennung ein Fehler ist. Insbesondere kann die Bitfehlerzahl eine Anzahl von Wortleitungen angeben, deren Spannungspegel im Vergleich zur Zielwortleitungsvorspannungseinstellung geändert werden. Wenn zum Beispiel die Bitfehleranzahl eins ist, kann eine gegebene modifizierte Wortleitungsvorspannungseinstellung den Spannungspegel dann für eine der Wortleitungen ändern, die gemäß der modifizierten Wortleitungsvorspannungseinstellung vorgespannt sind. Die Leseschaltung kann eine Vielzahl von Abtastergebnissen für die Vielzahl von Abtastvorgängen bestimmen und basierend auf der Vielzahl von Abtastergebnissen bestimmen, ob das Schlüsselwort ein übereinstimmendes Schlüsselwort ist.
-
In einigen Ausführungsformen führt die Leseschaltung einen CAM-Lesevorgang durch, indem sie Sätze von Abtastvorgängen durchführt, wobei jeder Satz für Speicherzellen, die zumindest einen Abschnitt eines Schlüsselworts speichern, oder für Speicherzellen, die zumindest einen Abschnitt eines invertierten Schlüsselworts speichern, und/oder für Wortleitungsgruppen, die mit dem ersten und dem zweiten Satz von Speicherzellen gekoppelt sind, durchgeführt wird. Während eines Satzes von Abtastvorgängen für einen bestimmten Abschnitt und/oder eine bestimmte Wortleitungsgruppe spannt die Lesesteuerung die Wortleitungsgruppe gemäß einer Vielzahl von zugehörigen modifizierten Wortleitungsvorspannungseinstellungen vor. Zum Beispiel führt die Leseschaltung einen ersten Satz von Abtastvorgängen für einen ersten Abschnitt der Speicherzellen, der mindestens einen Abschnitt des Schlüsselworts speichert, und einen zweiten Satz von Abtastvorgängen für einen zweiten Abschnitt der Speicherzellen, der mindestens einen Abschnitt des invertierten Schlüsselworts speichert, durch. Wenn der erste Satz von Abtastvorgängen durchgeführt wird, spannt die Lesesteuerung eine erste Wortleitungsgruppe, die mit dem ersten Abschnitt gekoppelt ist, gemäß einem ersten Satz von modifizierten Wortleitungsvorspannungseinstellungen vor. Wenn der zweite Satz von Abtastvorgängen durchgeführt wird, spannt die Lesesteuerung eine zweite Wortleitungsgruppe, die mit dem zweiten Abschnitt gekoppelt ist, gemäß einem zweiten Satz von modifizierten Wortleitungsvorspannungseinstellungen vor. Die Leseschaltung bestimmt Abtastergebnisse für die Sätze von Abtastvorgängen und bestimmt dann, basierend auf diesen Abtastergebnissen, ob das Schlüsselwort mit einem Zielschlüsselwort übereinstimmt.
-
Die Leseschaltung kann durch einen Satz von Abtastvorgängen für eine zugehörige Wortleitungsgruppe und/oder einen zugehörigen Abschnitt über eine Vielzahl von Iterationen iterieren. Während jeder Iteration spannt die Lesesteuerung die Wortleitungsgruppe gemäß einer der modifizierten Wortleitungsvorspannungseinstellungen vor.
-
Die Leseschaltung kann den CAM-Lesevorgang mit einer Vielzahl von Sätzen von Abtastvorgängen und unterschiedlichen Wortleitungsvorspannungseinstellungen durchführen, um übereinstimmende Schlüsselwörter zu erfassen, selbst wenn Speicherzellen die übereinstimmenden Schlüsselwörter oder das zugehörige invertierte Schlüsselwort mit einer bestimmten vorbestimmten Anzahl von Bitfehlern speichern. Dies liegt daran, dass die Anwendung der unterschiedlichen Wortleitungsvorspannungseinstellungen während mehrerer Abtastvorgänge eines Satzes bewirken kann, dass die Bitleitung während mindestens einer der mehreren Abtastvorgänge leitet, was ein übereinstimmendes Schlüsselwort anzeigt.
-
Außerdem können das Schlüsselwort und die invertierten Schlüsselwörter mit einer ausreichend hohen Anzahl von Paritätsbits erzeugt werden, um zu bewirken, dass beliebige zwei verschiedene Schlüsselwörter oder invertierte Schlüsselwörter ausreichend voneinander verschieden sind, selbst wenn beide mit bis zu der vorbestimmten Anzahl von Bitfehlern gespeichert sind. Infolgedessen können die Paritätsbits verhindern, dass Bitleitungen, die mit Speicherzellen gekoppelt sind, die keine übereinstimmenden Schlüsselwörter speichern, leiten, wenn die unterschiedlichen Vorspannungseinstellungen während eines Satzes von Abtastvorgängen angelegt werden. Dies wiederum verhindert, dass die Lesesteuerung fälschlicherweise erkennt, dass ein Schlüsselwort ein übereinstimmendes Schlüsselwort ist, wenn dies tatsächlich nicht der Fall ist.
-
Dementsprechend kann das Speichersystem in verschiedenen hierin beschriebenen Ausführungsformen ein CAM-Speicherschema verwenden, unter dem sowohl Schlüsselwörter als auch invertierte Schlüsselwörter mit zugehörigen Sätzen von Paritätsbits im Speicher gespeichert werden. Die Speicherung der Schlüsselwörter und invertierten Schlüsselwörter mit den Paritätsbits zusammen mit der Durchführung der mehreren Abtastvorgänge mit modifizierter Wortleitungsvorspannung ermöglicht die Erkennung übereinstimmender Schlüsselwörter, obwohl diese Schlüsselwörter mit einer bestimmten Anzahl von Bitfehlern gespeichert sind, während verhindert wird, dass nicht übereinstimmende Schlüssel fälschlicherweise als übereinstimmend erkannt werden.
-
Außerdem kann die Einbeziehung der Paritätsbits zur Bildung der Schlüsselwörter und invertierten Schlüsselwörter die Notwendigkeit des Speicherns einer zusätzlichen Kopie eines Schlüssels und/oder seines invertierten Schlüssels eliminieren oder mindestens reduzieren. Solche zusätzlichen Kopien können in zusätzlichen Speicherzellen gespeichert werden, die mit zusätzlichen Bitleitungen gekoppelt sind, um Redundanz zu verbessern und gegen Bitfehler zu schützen. Für diese Konfigurationen können die zusätzlichen Speicherzellen und Bitleitungen Abtastvorgängen unterzogen werden, deren Ergebnisse verwendet werden, um zu erfassen, welche Schlüssel übereinstimmen. Im Gegensatz dazu kann die Einbeziehung von Paritätsbits zum Bilden der Schlüsselwörter und der invertierten Schlüsselwörter ermöglichen, dass ein Schlüsselwort und ein invertiertes Schlüsselwort in Speicherzellen gespeichert werden, die mit einer einzelnen Bitleitung gekoppelt sind, während die Notwendigkeit vermieden wird, eine zusätzliche Kopie eines Schlüssels und/oder eines invertierten Schlüssels zu speichern, um Redundanz zu optimieren. Dies wiederum kann ermöglichen, dass eine größere Anzahl von Schlüsseln in einem gegebenen Speicherbereich gespeichert wird.
-
Außerdem nutzen die hierin beschriebenen CAM-Lesevorgänge die Parallelität, gemäß der Schlüsselwörter in Ketten gespeichert werden können, und gemäß der Abtastschaltungen gleichzeitig Abtastvorgänge durchführen können. Das heißt, für eine zumindest aktuelle Speichertechnologie (insbesondere NAND-Technologie) liegt die Anzahl von Bitleitungen, die mit Ketten gekoppelt sind, die gleichzeitig während eines einzelnen Abtastvorgang leiten können, in den Hunderttausenden, was bedeutet, dass während eines einzelnen Abtastvorgangs, wobei Wortleitungen gemäß einer bestimmten Wortleitungsvorspannungseinstellung vorgespannt sind, die Abtastschaltungen gleichzeitig hunderttausende Abtastergebnisse bestimmen können, jeweils für eine Kette, die einen Schlüssel speichert. Obwohl die hierin beschriebenen CAM-Lesevorgänge die Anzahl von Abtastvorgängen von einem einzelnen Abtastvorgang auf eine Vielzahl von Abtastvorgängen erhöhen, ist die Anzahl von Abtastvorgängen immer noch wesentlich geringer als die Hunderttausende von Ketten und Schlüsseln, die gleichzeitig analysiert werden können (d. h. parallel analysiert werden können). Daher überwiegt die Fähigkeit, Hunderttausende von Ketten parallel nach übereinstimmenden Schlüsseln zu analysieren, während die Anzahl verpasster Erfassungen reduziert wird, hinsichtlich Leistung die zusätzliche Zeit und den zusätzlichen Stromverbrauch, die durch Durchführen zusätzlicher Abtastvorgänge verbraucht werden.
-
Zusätzlich speichern einige Ausführungsformen des Speichersystems Schlüsselwörter und invertierte Schlüsselwörter als Schlüsselwortabschnitte und invertierte Schlüsselwortabschnitte. Das heißt, dass jedes Schlüsselwort eine Vielzahl von Schlüsselwortabschnitten einschließt, und jedes invertierte Schlüsselwort schließt eine Vielzahl von invertierten Schlüsselwortabschnitten ein. Im Allgemeinen ist eine Bitlänge eines Schlüsselwortabschnitts kleiner als eine Bitlänge eines Schlüsselworts.
-
Die Leseschaltung kann CAM-Lesevorgänge auf eine gleiche oder ähnliche Weise durchführen, wie zuvor beschrieben, wenn Schlüsselwort- und invertierte Schlüsselwortabschnitte gespeichert werden. Jede Wortleitungsgruppe und/oder jeder Satz von Speicherzellen kann jedoch einem der Schlüsselwort- oder invertierten Schlüsselwortabschnitte entsprechen, anstatt dem gesamten Schlüsselwort oder dem gesamten invertierten Schlüsselwort. Wiederum kann die Anzahl von Abtastvorgängen, die in einem CAM-Lesevorgang durchgeführt werden, im Verhältnis zu der größeren Anzahl von Schlüsselwort- und invertierten Schlüsselwortabschnitten größer sein.
-
Das Speichern von Schlüsselwörtern und invertierten Schlüsselwörtern als Abschnitte kann vorteilhaft sein, da dies eine Gesamtzahl durchgeführter Abtastvorgänge und/oder eine Anzahl erzeugter Paritätsbits minimieren kann, ohne das Risiko verpasster Erfassungen zu erhöhen. Dies kann daran liegen, dass eine durchschnittliche Anzahl von Bitfehlern pro Satz von Speicherzellen, die einen Schlüsselwortabschnitt speichern, niedriger ist als eine durchschnittliche Anzahl von Bitfehlern pro Satz von Speicherzellen, die ein Schlüsselwort speichern. Mit anderen Worten, es ist weniger wahrscheinlich, dass ein erster Satz von Speicherzellen, die einen Schlüsselwortabschnitt speichern, diesen Schlüsselwortabschnitt mit einer t-Anzahl von Bitfehlern speichert, als es für einen zweiten Satz von Speicherzellen der Fall ist, bei dem ein Schlüsselwort gespeichert wird, der dieses Schlüsselwort mit der t-Anzahl von Bitfehlern speichert. Dementsprechend kann durch Speichern von Schlüsselwörtern und invertierten Schlüsselwörtern als eine Vielzahl von Schlüsselwortabschnitten und eine Vielzahl von invertierten Schlüsselwortabschnitten eine t-maximale Anzahl von Bitfehlern, für die eine Anzahl von Paritätsbits erzeugt wird, minimiert werden, was wiederum die Anzahl von Paritätsbits, die erzeugt werden, und/oder die Anzahl von Abtastvorgängen, die durchgeführt werden, minimieren kann, ohne das Risiko von Fehldetektionen zu erhöhen.
-
In einer Ausführungsform schließt eine Schaltung eine Steuerung ein, die eingerichtet ist zum: Erzeugen eines Schlüsselworts für einen Schlüssel, der in einem Speicherarray gemäß einem inhaltsadressierbaren Speicher- (CAM) Speicherschema gespeichert werden soll, wobei das Schlüsselwort eine Vielzahl von Informationsbits des Schlüssels und eine Vielzahl von Paritätsbits, die aus der Vielzahl von Informationsbits bestimmt werden, aufweist; Erzeugen eines invertierten Schlüsselworts basierend auf dem Schlüsselwort; und Programmieren des Schlüsselworts und des invertierten Schlüsselworts gemäß dem CAM-Speicherschema.
-
In einigen Ausführungsformen ist die Steuerung ferner eingerichtet zum: Vorspannen einer Vielzahl von Wortleitungen, die mit dem Speicherarray gekoppelt sind, gemäß einer Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen, wobei jede von einer anfänglichen Wortleitungsvorspannungseinstellung, die einem Zielschlüsselwort oder einem invertierten Zielschlüsselwort entspricht, und basierend auf einer Bitfehlerzahl, die mit dem Speichern des Schlüsselworts assoziiert ist, modifiziert ist; und Bestimmen, dass das Schlüsselwort mit dem Zielschlüsselwort übereinstimmt, als Reaktion auf die Vorspannung.
-
In einigen Ausführungsformen ist die Steuerung eingerichtet, um eine Wortleitung der Vielzahl von Wortleitungen auf einem niedrigen Spannungspegel gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorzuspannen, und ist eingerichtet, um die Wortleitung auf dem hohen Spannungspegel gemäß einer modifizierten Wortleitungsvorspannungseinstellung vorzuspannen.
-
In einigen Ausführungsformen ist die Steuerung ferner eingerichtet zum: Programmieren einer Vielzahl von Schlüsselwörtern in das Speicherarray, wobei beliebige zwei verschiedene Schlüsselwörter der Vielzahl von Schlüsselwörtern einen Mindestabstand von 2*t+1 aufweisen, wobei t eine maximale Anzahl von Bitfehlern ist, mit denen das Speicherarray jedes der zwei verschiedenen Schlüsselwörter speichert.
-
In einigen Ausführungsformen ist eine Abtastschaltung eingerichtet, um eine Vielzahl von Abtastergebnissen einer Vielzahl von Abtastvorgängen für einen Satz von Speicherzellen, die mit der Vielzahl von Wortleitungen gekoppelt sind, während der Vorspannung der Vielzahl von Wortleitungen gemäß der Vielzahl von modifizierten Vorspannungseinstellungen, zu bestimmen; und eine ODER-Logikschaltung ist eingerichtet, um eine ODER-Logikoperation durchzuführen, um ein kombiniertes Abtastergebnis basierend auf der Vielzahl von Abtastergebnissen zu erzeugen, wobei die Steuerung eingerichtet ist, um basierend auf dem kombinierten Abtastergebnis zu bestimmen, dass das Schlüsselwort mit einem Zielschlüsselwort übereinstimmt.
-
In einigen Ausführungsformen ist die Abtastschaltung eingerichtet, um eine zweite Vielzahl von Abtastergebnissen einer zweiten Vielzahl von Abtastvorgängen für einen zweiten Satz von Speicherzellen zu bestimmen, die zumindest einen Abschnitt des invertierten Schlüsselworts speichern; die ODER-Logikschaltung ist eingerichtet, um ein zweites kombiniertes Abtastergebnis basierend auf der zweiten Vielzahl von Abtastergebnissen zu erzeugen, eine UND-Logikschaltung ist eingerichtet, um eine UND-Logikoperation an dem ersten kombinierten Abtastergebnis und dem zweiten kombinierten Abtastergebnis durchzuführen, um ein endgültiges Abtastergebnis zu erzeugen, und die Steuerung ist eingerichtet, um ferner basierend auf dem endgültigen Abtastergebnis zu bestimmen, dass das Schlüsselwort mit dem Zielschlüsselwort übereinstimmt.
-
In einigen Ausführungsformen schließt das Schlüsselwort eine Vielzahl von Schlüsselwortabschnitten ein, und die Steuerung ist, um die Vielzahl von Schlüsselwortabschnitten zu erzeugen, eingerichtet zum: Teilen des Schlüssels in eine Vielzahl von Schlüsselabschnitten; und Erzeugen eines jeweiligen Satzes von Paritätsbits für jeden der Schlüsselabschnitte.
-
In einigen Ausführungsformen ist die Steuerung, um das invertierte Schlüsselwort zu erzeugen, eingerichtet, um einen jeweiligen invertierten Schlüsselwortabschnitt für jeden der Schlüsselwortabschnitte zu erzeugen.
-
In einigen Ausführungsformen ist die Steuerung ferner eingerichtet zum: Programmieren einer Vielzahl von Schlüsselwörtern in das Speicherarray, wobei jedes der Vielzahl von Schlüsselwörtern eine zugehörige Vielzahl von Schlüsselwortabschnitten umfasst, und wobei beliebige zwei verschiedene Schlüsselwortabschnitte einen Mindestabstand von 2*t+1 aufweisen, wobei t eine maximale Anzahl von Bitfehlern ist, mit denen das Speicherarray jeden der zwei verschiedenen Schlüsselwortabschnitte speichert.
-
In einer anderen Ausführungsform schließt eine Schaltung ein Speicherarray und eine Lesesteuerung ein. Das Speicherarray schließt eine Vielzahl von Ketten von Speicherzellen ein, die eingerichtet sind, um eine Vielzahl von Schlüsselwörtern gemäß einem inhaltsadressierbaren Speicher-(CAM)Schema zu speichern. Die Lesesteuerung ist eingerichtet zum: Vorspannen einer Wortleitungsgruppe, die mit einem Satz von Speicherzellen gekoppelt ist, gemäß einer Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen während eines Satzes von Abtastvorgängen, wobei der Satz von Speicherzellen zumindest einen Abschnitt eines Schlüsselworts speichert, und jede der mehreren modifizierten Wortleitungsvorspannungseinstellungen von einer Zielwortleitungsvorspannungseinstellung, die einem Zielschlüsselwort entspricht, auf der Basis einer Bitfehlerzahl, die mit dem Speichern des Schlüsselworts assoziiert ist, modifiziert wird. Die Lesesteuerung ist ferner eingerichtet, um basierend auf einem Satz von Abtastergebnissen, die aus dem Satz von Abtastvorgängen identifiziert werden, zu bestimmen, dass das Schlüsselwort mit dem Zielschlüsselwort übereinstimmt.
-
In einigen Ausführungsformen ist die Lesesteuerung ferner eingerichtet zum: Vorspannen einer zweiten Wortleitungsgruppe, die mit einem zweiten Satz von Speicherzellen gekoppelt ist, gemäß einer zweiten Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen während eines zweiten Satzes von Abtastvorgängen, wobei der zweite Satz von Speicherzellen zumindest einen Abschnitt eines invertierten Schlüsselworts speichert, und jede der zweiten Vielzahl von modifizierten Vorspannungseinstellungen von einer invertierten Zielwortleitungsvorspannungseinstellung, die einem invertierten Zielschlüsselwort entspricht, basierend auf der Bitfehlerzahl modifiziert wird, und Bestimmen, dass das Schlüsselwort mit dem Zielschlüsselwort übereinstimmt, ferner basierend auf einem zweiten Satz von Abtastergebnissen, die aus dem zweiten Satz von Abtastvorgängen identifiziert werden.
-
In einigen Ausführungsformen ist die Lesesteuerung, um die erste Wortleitungsgruppe vorzuspannen, ferner eingerichtet zum: Erhöhen einer unterschiedlichen einen oder mehreren einer Vielzahl von Wortleitungsspannungen von einem niedrigen Spannungspegel auf einen hohen Spannungspegel für den ersten Satz von Abtastvorgängen, basierend auf der Bitfehlerzahl, wobei der niedrige Spannungspegel eingerichtet ist, um zu bewirken, dass Speicherzellen in einem gelöschten Zustand leiten, aber nicht in einem Programmierzustand, und der hohe Spannungspegel eingerichtet ist, um zu bewirken, dass Speicherzellen sowohl in dem gelöschten Zustand als auch in dem Programmierzustand leiten.
-
In einigen Ausführungsformen ist die Bitfehleranzahl eine maximale Anzahl von Bitfehlern, mit denen die Vielzahl von Ketten jedes der Vielzahl von Schlüsselwörtern speichert.
-
In einigen Ausführungsformen ist das Speicherarray eingerichtet, um das Schlüsselwort als eine Vielzahl von Schlüsselwortabschnitten zu speichern, wobei der Satz von Speicherzellen einen der Schlüsselwortabschnitte speichert.
-
In einigen Ausführungsformen ist eine Schlüsselwortabschnitt-Erzeugungsschaltung eingerichtet, um eine Vielzahl von Schlüsselwortabschnitten derart zu erzeugen, dass beliebige zwei verschiedene Schlüsselwortabschnitte der Vielzahl von Schlüsselwortabschnitten einen Mindestabstand von 2*t+1 aufweisen, wobei t eine maximale Anzahl von Bitfehlern ist, mit denen das Speicherarray jeden der zwei verschiedenen Schlüsselwortabschnitte speichert.
-
In einigen Ausführungsformen ist die Lesesteuerung ferner eingerichtet zum: Erhöhen eines niedrigen Spannungspegels, der während eines CAM-Lesevorganges an die Wortleitungsgruppe angelegt wird, und Bestimmen, dass das Schlüsselwort mit dem Zielschlüsselwort übereinstimmt, basierend auf der Erhöhung des niedrigen Spannungspegels.
-
In einigen Ausführungsformen ist eine Abtastschaltung eingerichtet, um eine Vielzahl von Abtastergebnissen über eine Vielzahl von Iterationen zu bestimmen, und die Lesesteuerung ist eingerichtet zum: Vorspannen der Wortleitungsgruppe auf eine Vielzahl von niedrigen Spannungspegeln und auf einen hohen Spannungspegel über die Vielzahl von Iterationen, wobei ein erster niedriger Spannungspegel der Vielzahl von niedrigen Spannungspegeln ein Leseimpulspegel ist, der mit einem Programmierzustand eines Einzelpegelzellenspeicherschemas assoziiert ist, ein zweiter niedriger Spannungspegel ein erster vorbestimmter Betrag über dem Leseimpulspegel ist und ein dritter niedriger Spannungspegel ein zweiter vorbestimmter Betrag unter dem Leseimpulspegel ist, und wobei die Lesesteuerung ferner eingerichtet ist, um basierend auf der Vielzahl von Abtastergebnissen zu bestimmen, dass das Schlüsselwort mit dem Zielschlüsselwort übereinstimmt.
-
In einer anderen Ausführungsform schließt ein System Folgendes ein: einen Block, der eine Vielzahl von Ketten von Speicherzellen einschließt; eine Programmierschaltung, die eingerichtet ist, um eine Vielzahl von Schlüsselwörtern in der Vielzahl von Ketten gemäß einem inhaltsadressierbaren Speicher-(CAM)Schema zu programmieren; und eine Leseschaltung, die eingerichtet ist zum: Vorspannen einer Vielzahl von Wortleitungen, die mit der Vielzahl von Ketten gekoppelt sind, gemäß einer anfänglichen Wortleitungsvorspannungseinstellung, die einem Zielschlüsselwort entspricht; als Reaktion auf die Vorspannung gemäß der anfänglichen Wortleitungsvorspannungseinstellung ein Bestimmen, dass eine Anzahl von übereinstimmenden Schlüsselwörtern unter einem Schwellenpegel liegt; als Reaktion auf das Bestimmen, ein Iterieren durch eine Vielzahl von Abtastvorgängen für die Vielzahl von Ketten, wobei für jeden der Abtastvorgänge die Lesesteuerung eingerichtet ist, um die Vielzahl von Wortleitungen gemäß einer von einer Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen vorzuspannen; und Bestimmen eines oder mehrerer übereinstimmender Schlüsselwörter aus der Vielzahl von Schlüsselwörtern, die mit dem Zielschlüsselwort übereinstimmen, als Reaktion auf die Iteration durch die Vielzahl von Abtastvorgängen.
-
In einigen Ausführungsformen ist die Programmierschaltung eingerichtet, um die Vielzahl von Schlüsselwörtern als eine Vielzahl von Schlüsselwortabschnitten zu programmieren.
-
In einigen Ausführungsformen bildet jede der Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen eine andere Wortleitung oder eine andere Kombination von Wortleitungen auf einen anderen Spannungspegel ab als ein Spannungspegel, auf den die andere Wortleitung oder die andere Kombination von Wortleitungen in der anfänglichen Wortleitungsvorspannungseinstellung abgebildet wird.
-
In einer anderen Ausführungsform werden die Daten in Single-Level-Cell- (SLC) Weise mit Paritätsbits als Codewort (CW) geschrieben, was einen Mindestabstand von drei zwischen zwei gültigen Werten des Schlüssels ermöglicht, und dann wird das invertierte CW auch auf einen Satz von „n‟ Zellen programmiert, die derselben Bitleitung entsprechen. Dann werden „n‟ Abtastvorgänge durchgeführt, während in jedem Abtastvorgang eine Zelle, die als „1‟ abgetastet wurde, als „0‟ abgetastet wird, um ein Szenario zu überwinden, in dem ein Bit fehlerhaft war und die Zelle wie absichtlich programmiert gelesen wurde. Da der minimale Abstand drei ist, wenn ein einzelner Fehler in dem CW (plus dem invertierten CW) beobachtet würde, wird die Bitleitung dann leiten, andernfalls würde sie nicht.
-
Andere Ausführungsformen sind möglich, und jede der Ausführungsformen kann allein oder zusammen in Kombination verwendet werden. Dementsprechend werden nun verschiedene Ausführungsformen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
-
1A ist ein Blockdiagramm, das ein Speichersystem 100 veranschaulicht. Das Speichersystem 100 kann eine Steuerung 102 und einen Speicher, der einen oder mehrere Speicher-Dies 104 einschließen oder aus diesen bestehen kann, einschließen. Wie hier verwendet, bezieht sich der Ausdruck Die auf den Satz von Speicherzellen und zugeordneter Schaltlogik zum Verwalten des physischen Betriebs dieser Speicherzellen, die auf einem einzelnen Halbleitersubstrat ausgebildet sind. Die Steuerung 102 kann mit einem Hostsystem eine Schnittstelle bilden und Befehlssequenzen für Lese-, Programmier- und Löschvorgänge zu dem/den Nichtspeicher-Die(s) 104 übertragen.
-
Die Steuerung 102 (die eine Flash-Speichersteuerung sein kann) kann die Form einer Verarbeitungsschaltlogik, eines Mikroprozessors oder Prozessors und eines computerlesbaren Mediums annehmen, das computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der von dem (Mikro-) Prozessor, Logikgatter, Schaltern, einer anwendungsspezifischen integrierten Schaltung (ASIC), einer programmierbaren Logiksteuerung und einem eingebetteter Mikrocontroller ausgeführt werden kann. Die Steuerung 102 kann mit Hardware und/oder Firmware eingerichtet sein, um die verschiedenen Funktionen durchzuführen, die unten beschrieben und in den Flussdiagrammen gezeigt sind. Außerdem können einige der Komponenten, die als innerhalb der Steuerung gezeigt sind, auch außerhalb der Steuerung gespeichert werden, und andere Komponenten können verwendet werden. Zusätzlich könnte der Ausdruck „operativ in Kommunikation mit“ direkt in Kommunikation mit oder indirekt (verdrahtet oder drahtlos) in Kommunikation mit durch eine oder mehrere Komponenten, die hierin gezeigt oder beschrieben sein können oder nicht gezeigt oder beschrieben sein können, bedeuten.
-
Wie hierin verwendet, ist die Steuerung 102 eine Vorrichtung, die in dem/den Speicherelement(en) gespeicherte Daten verwaltet und mit einem Host, wie einem Computer oder einer elektronischen Vorrichtung, kommuniziert. Die Steuerung 102 kann verschiedene Funktionalität zusätzlich zu der hierin beschriebenen spezifischen Funktionalität aufweisen. Zum Beispiel kann die Steuerung 102 die Speicher-Dies 104 formatieren, um sicherzustellen, dass sie ordnungsgemäß arbeiten, schlechte Flash-Speicherzellen abbilden und Ersatzzellen zuweisen, um zukünftige ausgefallene Zellen zu ersetzen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware zu enthalten, um die Steuerung 102 zu betreiben und andere Merkmale zu implementieren. Im Betrieb, wenn ein Host Daten von dem/den Speicher-Die(s) 104 lesen oder Daten in dieses schreiben muss, kommuniziert der Host mit der Steuerung 102. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann die Steuerung 102 die vom Host empfangene logische Adresse in eine physische Adresse in dem/den Speicher-Die(s) 104 umwandeln. (Alternativ kann der Host die physische Adresse bereitstellen). Die Steuerung 102 kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie, aber nicht beschränkt auf, Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und Speicherbereinigung (nachdem ein Block voll ist, nur die gültigen Datenseiten zu einem neuen Block zu bewegen, so dass der volle Block gelöscht und wiederverwendet werden kann).
-
Die Schnittstelle zwischen der Steuerung 102 und dem/den nichtflüchtigen Speicher-Die(s) 104 kann jede geeignete Schnittstelle sein, wie eine Flash-Schnittstelle, einschließlich jener, die für den Toggle-Modus 200, 400, 800, 1000 oder höher konfiguriert sind. Bei einigen beispielhaften Ausführungsformen kann das Speichersystem 100 ein kartenbasiertes System sein, wie eine sichere digitale (SD) oder eine sichere digitale Mikro-Karte (Mikro-SD). In alternativen beispielhaften Ausführungsformen kann das Speichersystem 100 Teil eines eingebetteten Speichersystems sein.
-
In dem in 1A veranschaulichten Beispiel ist das Speichersystem 100 so gezeigt, dass es einen einzelnen Kanal zwischen der Steuerung 102 und dem/den nichtflüchtigen Speicher-Die(s) 104 einschließt. Jedoch ist der hier beschriebene Gegenstand nicht auf Speichersysteme mit einem einzelnen Speicherkanal beschränkt. Beispielsweise können in einigen Speichersystemen, wie etwa solchen, die NAND-Architekturen verkörpern, 2, 4, 8 oder mehr Kanäle zwischen der Steuerung 102 und dem/den Speicher-Die(s) 104 abhängig von den Fähigkeiten der Steuerung existieren. In jeder der hier beschriebenen Ausführungsformen kann mehr als ein einziger Kanal zwischen der Steuerung und dem/den Speicher-Die(s) 104 existieren, selbst wenn ein einzelner Kanal in den Zeichnungen gezeigt ist.
-
1 B veranschaulicht ein Speichermodul 200, das eine Vielzahl von nichtflüchtigen Speichersystemen 100 einschließt. Deshalb kann das Speichermodul 200 eine Speichersteuerung 202 einschließen, die mit einem Host und mit einem Speichersystem 204, das eine Vielzahl von nichtflüchtigen Speichersystemen 100 einschließt, verbunden ist. Die Schnittstelle zwischen der Speichersteuerung 202 und den nichtflüchtigen Speichersystemen 100 kann eine Busschnittstelle, wie eine SATA-Schnittstelle (Serial Advanced Technology Attachment), eine PCIe-Schnittstelle (Peripheral Component Interface express), eine eMMC-Schnittstelle (embedded Multimedia Card), eine SD-Schnittstelle oder eine USB-Schnittstelle (Universal Serial Bus), sein. Das Speichermodul 200 kann in einer Ausführungsform ein SSD-Laufwerk (Solid State Drive) sein, wie es beispielsweise in tragbaren Computergeräten wie Laptop-Computern, Tablet-Computern und Mobiltelefonen zu finden ist.
-
1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem 210 veranschaulicht. Das hierarchische Speichersystem 210 kann eine Vielzahl von Speichersteuerungen 202 einschließen, von denen jede ein jeweiliges Speichersystem 204 steuert. Hostsysteme 212 können über eine Busschnittstelle auf Speicher innerhalb des hierarchischen Speichersystems 210 zugreifen. Beispielbusschnittstellen können beispielsweise eine Non-Volatile Memory Express-Schnittstelle (NVMe-Schnittstelle), eine Fiber Channel over Ethernet-Schnittstelle (FCoE-Schnittstelle), eine SD-Schnittstelle, eine USB-Schnittstelle, eine SATA-Schnittstelle, eine PCIe-Schnittstelle oder eine eMMC-Schnittstelle einschließen. In einer Ausführungsform ist das in 1C dargestellte Speichersystem 210 ein rahmenmontierbares Massenspeichersystem sein, auf das von mehreren Hostcomputern zugegriffen werden kann, wie es in einem Datenzentrum oder einem anderen Standort, in dem eine Massenspeicherung benötigt wird, zu finden ist.
-
2A ist ein Blockdiagramm, das beispielhafte Komponenten der Steuerung 102 detaillierter veranschaulicht. Die Steuerung 102 kann ein Frontend-Modul 108, das mit einem Host verbunden ist, ein Backend-Modul 110, das mit dem/den nichtflüchtigen Speicher-Die(s) 104 verbunden ist, und verschiedene andere Module, die verschiedene Funktionen des nichtflüchtigen Speichersystems 100 ausführen, einschließen. Im Allgemeinen kann ein Modul Hardware oder eine Kombination aus Hardware und Software sein. Zum Beispiel kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), eine anwenderprogrammierbare Gatteranordnung (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Zusätzlich oder alternativ kann jedes Modul Speicherhardware einschließen, die Anweisungen aufweist, die mit einem Prozessor oder einer Prozessorschaltung ausführbar sind, um eines oder mehrere der Merkmale des Moduls zu implementieren. Wenn eines der Module den Abschnitt des Speichers einschließt, der Befehle aufweist, die mit dem Prozessor ausführbar sind, kann das Modul den Prozessor einschließen oder nicht. In einigen Beispielen kann jedes Modul nur der Teil des Speichers sein, der Anweisungen aufweist, die mit dem Prozessor ausführbar sind, um die Merkmale des entsprechenden Moduls zu implementieren, ohne dass das Modul irgendeine andere Hardware enthält. Da jedes Modul mindestens einige Hardware einschließt, selbst wenn die eingeschlossene Hardware Software aufweist, kann jedes Modul austauschbar als Hardwaremodul bezeichnet werden.
-
Die Steuerung 102 kann ein Puffermanager-/Bussteuerungsmodul 114 einschließen, das Puffer in einem Direktzugriffsspeicher (RAM) 116 verwaltet und die interne Buszuteilung für die Kommunikation auf einem internen Kommunikationsbus 117 der Steuerung 102 steuert. Ein Nur-Lese-Speicher (ROM) 118 kann den Bootcode des Systems speichern und/oder darauf zugreifen. Obwohl sie in 2A als von der Steuerung 102 getrennt angeordnet dargestellt sind, können in anderen Ausführungsformen entweder der RAM 116 oder der ROM 118 oder beide innerhalb der Steuerung 102 angeordnet sein. In noch anderen Ausführungsformen können sich Teile des RAM 116 und des ROM 118 sowohl innerhalb der Steuerung 102 als auch außerhalb der Steuerung 102 befinden. Ferner können sich in einigen Implementierungen die Steuerung 102, der RAM 116 und der ROM 118 auf separaten Halbleiterelementen befinden.
-
Zusätzlich kann das Frontend-Modul 108 eine Host-Schnittstelle 120 und eine Physical-Layer-Schnittstelle (PHY) 122 aufweisen, die die elektrische Schnittstelle mit dem Host oder der Speichersteuerung der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann von der Art des verwendeten Speichers abhängen. Beispieltypen der Host-Schnittstelle 120 können SATA, SATA Express, SAS, Fibre Channel, USB, PCle und NVMe einschließen, sind aber nicht darauf beschränkt. Die Host-Schnittstelle 120 kann üblicherweise die Übertragung von Daten, Steuersignalen und Zeitsignalen ermöglichen.
-
Das Backend-Modul 110 kann eine ECC-Engine (Error Correction Code) oder -Modul 124 enthalten, die/das die von dem Host empfangenen Datenbytes codiert und die aus den nichtflüchtigen Speicher-Die(s) 104 gelesenen Datenbytes dekodiert und Fehler korrigiert. Das Backend-Modul 110 kann auch einen Befehlssequenzer 126 einschließen, der Befehlssequenzen erzeugt, wie Programmier-, Lese- und Lösch-Befehlssequenzen, die zu dem/den nichtflüchtigen Speicher-Die(s) 104 zu übertragen sind. Zusätzlich kann das Backend-Modul 110 ein RAID-Modul (Redundant Array of Independent Drives) 128 umfassen, das die Erzeugung von RAID-Parität und Wiederherstellung ausgefallener Daten verwaltet. Die RAID-Parität kann als ein zusätzlicher Integritätsschutz für die Daten verwendet werden, die in das nichtflüchtige Speichersystem 100 geschrieben werden. In manchen Fällen kann das RAID-Modul 128 Teil der ECC-Maschine 124 sein. Eine Speicherschnittstelle 130 stellt die Befehlssequenzen an das/die nichtflüchtigen Speicher-Die(s) 104 bereit und empfängt Statusinformationen von dem/den nichtflüchtigen Speicher-Die(s) 104. Zusätzlich zu den Befehlssequenzen und Statusinformationen können Daten, die in den/die nichtflüchtigen Speicherchip(s) 104 programmiert und daraus ausgelesen werden sollen, über die Speicherschnittstelle 130 kommuniziert werden. In einer Ausführungsform kann die Speicherschnittstelle 130 eine Double Date Rata-Schnittstelle (DDR-Schnittstelle) und/oder eine Toggle-Modus 200, 400, 800 oder höhere Schnittstelle sein. Eine Steuerschicht 132 kann den Gesamtbetrieb des Backend-Moduls 110 steuern.
-
Zusätzliche Module des in 2A veranschaulichten nichtflüchtigen Speichersystems 100 können eine Medienverwaltungsschicht 138 einschließen, die bestimmte Speicherverwaltungsfunktionen, wie einen Abnutzungsausgleich von Speicherzellen der Speicher-Dies 104, eine Adressverwaltung, ausführt und Faltungsoperationen unterstützt. Andere Speicherverwaltungsfunktionen können möglich sein. Das nichtflüchtige Speichersystem 100 kann auch andere diskrete Komponenten 140, wie externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die mit der Steuerung 102 verbunden sein können, einschließen. In alternativen Ausführungsformen sind eine oder mehrere der Komponenten RAID-Modul 128, Medienverwaltungsschicht 138 und Pufferverwaltungs-/ Bussteuerung 114 optionale Komponenten, die in der Steuerung 102 möglicherweise nicht notwendig sind.
-
2B ist ein detaillierteres Blockdiagramm einer beispielhaften Konfiguration von Komponenten eines Speicher-Dies 104. Das Speicher-Die 104 kann eine Speicherzellenstruktur 142 einschließen, die eine Vielzahl von Speicherzellen, die ansonsten oder austauschbar als Speicherelemente bezeichnet werden, einschließt. Eine Speicherzelle ist ein Element oder eine Komponente, das/die eine Einheit von Daten speichert, die einen n-Bit-Datenwert aufweisen, wobei n eins oder mehr ist. Jeder geeignete Typ von Speicher kann für die Speicherzellen der Speicherzellenstruktur 142 verwendet werden. Als Beispiele kann der Speicher ein Dynamic Random Access Memory („DRAM“) oder ein Static Random Access Memory („SRAM“), ein nichtflüchtiger Speicher, wie ein Resistive Random Access Memory („ReRAM“), ein Electrically Erasable Programmable Read Only Memory („EEPROM“), ein Flash-Speicher (der auch als Untergruppe eines EEPROM betrachtet werden kann), ein Ferroelectric Random Access Memory („FRAM“), ein Magnetoresistive Random Access Memory („MRAM“), ein Phase-Change Memory („PCM“) oder andere Elemente, die Halbleitermaterial oder anderes Material, das Informationen speichern kann, aufweisen, sein. Jede Art von Speicher kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel kann Flash-Speicher in einer NAND- oder einer NOR-Konfiguration eingerichtet sein.
-
Der Speicher kann aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als nicht einschränkendes Beispiel schließen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente ein, die in einigen Ausführungsformen ein Speicherelement mit Widerstandsumschaltung, wie eine Anti-Sicherung, Phasenwechselmaterial usw., und optional ein Lenkelement, wie eine Diode usw., einschließen. Ferner schließen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speicher-Vorrichtungselemente ein, die in einigen Ausführungsformen Elemente einschließen, die einen Ladungsspeicherbereich, wie ein Floating-Gate, leitende Nanopartikel, oder ein dielektrisches Material zur Ladungsspeicherung einschließen.
-
Mehrere Speicherzellen können derart eingerichtet sein, dass sie in Reihe geschaltet sind oder dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-Speicherarray kann derart eingerichtet sein, dass das Array aus mehreren Zellgruppen besteht, wobei die Speicherzellen, die Teil der gleichen Zellgruppe sind, eine einzige Vorspannungsleitung, wie eine einzelne Wortleitung oder eine einzelne Bitleitung, gemeinsam nutzen und als Gruppe zugänglich oder vorgespannt sind. Alternativ können Speicherzellen derart eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherzellen können anderweitig eingerichtet sein.
-
Eine Vielzahl von Speicherzellen, die die Speicherzellenstruktur 142 eines Speicher-Dies bilden, können sich in und/oder über einem Substrat befinden. Das Substrat kann ein Wafer sein, über dem oder in dem die Schicht der Speicherzellen gebildet sind, oder es kann ein Trägersubstrat sein, das an den Speicherzellen befestigt wird, nachdem diese gebildet werden. Als nicht einschränkendes Beispiel kann das Substrat einen Halbleiter einschließen und/oder aus einem Halbleitermaterial, wie Silizium, bestehen.
-
Außerdem können eine Vielzahl von Speicherzellen, die die gesamte Speicherzellenstruktur 142 oder mindestens einen Abschnitt der Speicherzellenstruktur 142 bilden, in zwei Dimensionen oder in drei Dimensionen angeordnet sein. Eine Vielzahl von Speicherzellen, die in zwei Dimensionen angeordnet sind, wird als eine zweidimensionale Speicherzellenstruktur (2D-Speicherzellenstruktur) bezeichnet. Eine Vielzahl von Speicherzellen, die in drei Dimensionen angeordnet sind, wird als eine dreidimensionale Speicherzellenstruktur (3D-Speicherzellenstruktur) bezeichnet.
-
In einer zweidimensionalen Speicherzellenstruktur sind die Speicherzellen in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherzellenstruktur die Speicherzellen in einer Ebene (z. B. in einer x-y-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats erstreckt, das die Speicherzellen trägt.
-
In einer dreidimensionalen Speicherzellenstruktur sind die Speicherzellen derart angeordnet, dass Speicherzellen mehrere Ebenen oder mehrere Speichervorrichtungsebenen (z. B. mehrere x-y-Richtung-Ebenen) belegen, wodurch eine Struktur in drei Dimensionen (d. h. in x-, y- und z-Richtung, wobei die z-Richtung im Wesentlichen senkrecht zu und die x- und y-Richtung im Wesentlichen parallel zu der Hauptoberfläche des Substrats ist) gebildet wird. Bei einer Einrichtung als eine dreidimensionale Speicherzellenstruktur erstrecken sich die Speicherzellen nach oben oder von der Hauptoberfläche des Substrats weg.
-
Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats, d. h. in z-Richtung, erstrecken) angeordnet sein, wobei jede Spalte mehrere Speicherzellen in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration, z. B. in einer x-y-Ebene, angeordnet sein, was zu einer dreidimensionalen Speicherzellenanordnung führt, wobei die Speicherzellen auf mehreren vertikal gestapelten Speicherebenen angeordnet sind. Andere Konfigurationen von Speicherzellen in drei Dimensionen können ebenfalls ein dreidimensionales Speicherarray bilden.
-
In mindestens einigen beispielhaften Konfigurationen kann eine zweidimensionale oder dreidimensionale Speicherzellenstruktur in der Form eines geordneten Arrays (oder einfach eines Arrays) bestehen oder als ein solches eingerichtet sein. Ein Typ eines Arrays ist ein orthogonales Array, das eine matrixartige Struktur ist, die Zeilen und Spalten einschließt. Die Speicherzellen sind in den Zeilen und Spalten angeordnet. An dem Schnittpunkt einer Zeile und einer Spalte befindet sich eine Speicherzelle. In anderen Konfigurationen können jedoch die Speicherzellen in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein.
-
Unter Bezugnahme auf 3A können die Speicherzellen einer Speicherzellenstruktur 142, die sich auf einem einzelnen Speicher-Die 104 befinden, in einer N-Anzahl von Blöcken organisiert sein, die sich von einem ersten Block BLK 1 zu einem N. Block BLK N erstrecken. Ein Block ist eine Mindestlöscheinheit eines Speicher-Dies 104. Speicherzellen, die Teil des gleichen Blocks sind, werden gleichzeitig und/oder als Teil einer gleichen Löschoperation gelöscht.
-
Unter Bezugnahme auf 3B sind für einige beispielhafte Konfigurationen die N-Anzahl von Blöcken, die sich auf einem einzelnen Speicher-Die 104 befinden, in eine Vielzahl von Speicherebenen (oder einfach Ebenen) organisiert. 3B zeigt eine beispielhafte Konfiguration, bei der die Blöcke in zwei Speicherebenen, einschließlich einer ersten Speicherebene Ebene 0 und einer zweiten Speicherebene Ebene 1, organisiert sind. Konfigurationen, die mehr als zwei Speicherebenen einschließen, können möglich sein. In 3B ist jede Speicherebene als eine M-Anzahl von Blöcken, die sich von einem ersten Block BLK 1 zu einem M. Block BLK M erstrecken, einschließend gezeigt. In mindestens einigen beispielhaften Konfigurationen können Blöcke, die Teil der gleichen Ebene sind, in einer Spalte oder einem eindimensionalen Array von Blöcken ausgerichtet sein und/oder eine solche/ein solches bilden, wenngleich andere Konfigurationen von Blöcken in einer einzelnen Ebene möglich sein können.
-
Die Speicherzellen eines Blocks können zweidimensional in einem zweidimensionalen Speicherarray (2D-Speicherarray) oder dreidimensional in einem dreidimensionalen Speicherarray (3D-Speicherarray) angeordnet sein. Ein zweidimensionaler Block ist ein Block, in dem Speicherzellen zweidimensional angeordnet sind. Ein dreidimensionaler Block ist ein Block, in dem Speicherzellen dreidimensional angeordnet sind.
-
4A zweigt eine perspektivische Ansicht von mindestens einem Abschnitt eines Speicher-Dies 104, das einen Satz oder eine Vielzahl von dreidimensionalen Blöcken 400 einschließt, die mindestens einen Abschnitt der Speicherzellenstruktur 142 von 2B repräsentieren können. Der Einfachheit halber ist die Vielzahl von Blöcken 400 als vier Blöcke BLK1, BLK2, BLK3 und BLK4 einschließend gezeigt. In einer tatsächlichen Implementierung kann eine gegebene Speicherzellenstruktur 142 eines Speicher-Dies 104 einige mehr Blöcke als vier einschließen, wie in der Größenordnung von Hunderten, Tausenden oder Zehntausenden von Blöcken. In einer bestimmten beispielhaften Konfiguration schließt eine Ebene von Blöcken 2.000 Blöcke ein.
-
Die Blöcke 400 befinden sich auf einem Substrat 402 des Speicher-Dies 104 oder sind auf diesem angeordnet. Das Substrat 402 kann Teil einer unteren Ebene oder eines unteren Bereichs 404 des Speicher-Dies 104 sein, die/der eine Schaltung unter den Blöcken 400 trägt oder einschließt, zusammen mit einer oder mehreren unteren Metallschichten, die strukturiert sind, um Leiterbahnen zu bilden, die von der Schaltung ausgegebene Signale oder Spannungen tragen oder zuführen, wie solche, die zum Durchführen von Speicheroperationen (z. B. Lesen, Programmieren, Abtasten, Löschen) verwendet werden.
-
Die Blöcke 400 sind in einer Zwischenebene oder einem Zwischenbereich 406 (auch als Blockebene oder -bereich oder Arrayebene oder -bereich bezeichnet) des Speicher-Dies 104 zwischen dem unteren Bereich 404 und einer oberen Ebene oder einem oberen Bereich 408 des Speicher-Dies 104 angeordnet. Der obere Bereich 408 kann eine oder mehrere obere Metallschichten einschließen, die in Form von Leiterbahnen strukturiert sind, die von der Schaltung ausgegebene Signale oder Spannungen tragen oder zuführen.
-
Das Substrat 402 ist allgemein eine ebene Struktur, die gegenüberliegende ebene Oberflächen aufweist. Hierin können die Komponenten auf einem Speicher-Die 104 physisch unter Bezugnahme auf ein dreidimensionales kartesisches Koordinatensystem beschrieben sein, das eine x-Achse, eine y-Achse und eine z-Achse aufweist. Die z-Achse ist die Achse, die sich senkrecht zu den ebenen Oberflächen des Substrats 402 erstreckt. Im Allgemeinen sind die Komponenten auf einem Speicher-Die 104 auf einer der ebenen Oberflächen in einer z-Richtung, die parallel zu der z-Achse ist, angeordnet und/oder erstrecken sich von einer solchen. Die Begriffe „über“ und „unter“ sowie andere Begriffe, wie „oben“ und „unten“ und „obere/r/s“ und „untere/r/s“, werden hierin verwendet, um die relative Anordnung von Komponenten des Speicher-Dies 104 entlang der oder Bezug nehmend auf die z-Achse zu beschreiben. Zum Beispiel sind die Blöcke 400 „über“ dem Substrat 402 und ist das Substrat 402 Teil des unteren Bereichs 404, der „unter“ den Blöcken 400 ist. Außerdem ist der obere Bereich 408 ein Bereich des Speicher-Dies 104 „über“ sowohl den Blöcken 400 als auch dem Substrat 402. Komponenten des Speicher-Dies 104, die in dem oberen Bereich 408 angeordnet sind, sind in der z-Richtung weiter weg von dem Substrat 402 als Komponenten der Blöcke 400. Im Allgemeinen ist für zwei Komponenten auf einem gegebenen Speicher-Die 104, bei dem die erste Komponente „über“ der zweiten Komponente ist, die erste Komponente in der z-Richtung weiter weg von dem Substrat 402 als die zweite Komponente positioniert oder angeordnet. Außerdem, wenn die erste Komponente „unter“ der zweiten Komponente ist, ist die erste Komponente in der z-Richtung näher an dem Substrat 402 als die zweite Komponente positioniert oder angeordnet.
-
Die Begriffe „oben“ und „unten“ werden auch verwendet, um auf die relative Anordnung von Komponenten des Speicher-Dies 104 in der z-Richtung und/oder entlang der z-Achse Bezug zu nehmen. Im Allgemeinen sind „untere“ Komponenten in der z-Richtung näher an dem Substrat 402 als „obere“ Komponenten positioniert oder angeordnet und sind „obere“ Komponenten in der z-Richtung weiter weg von dem Substrat 402 als „untere“ Komponenten positioniert oder angeordnet. In diesem Zusammenhang kann ein Speicher-Die 104 eine oder mehrere obere Metallschichten in dem oberen Bereich 408 und eine oder mehrere untere Metallschichten in dem unteren Bereich 404 einschließen. Im Allgemeinen sind die unteren Metallschichten in der z-Richtung näher an dem Substrat 402 als die oberen Metallschichten positioniert oder angeordnet und sind die oberen Metallschichten in der z-Richtung weiter weg von dem Substrat 402 als die unteren Metallschichten positioniert oder angeordnet.
-
Wenngleich die Begriffe „obere/r/s“ und „untere/r/s“, „über“ und „unter“ und „oben“ und „unten“ verwendet werden, um die relative Position von Komponenten auf einem Speicher-Die 104 zu beschreiben, dürfen sie nicht als die relative Anordnung der Komponenten einschränkend ausgelegt werden, weil ein Speicher-Die 104 oder das Speichersystem 100 als Ganzes in einer beliebigen von verschiedenen Positionen ausgerichtet sein kann.
-
In Bezug auf die Komponenten eines Blocks schließt ein Block eine Vielzahl von Vorspannungselementen und eine Vielzahl von Steuerleitungen ein. Ein Vorspannungselement ist eine Komponente oder Einheit eines Blocks, die eine Vorspannung empfängt, mit einer solchen vorgespannt ist und/oder auf eine solche reagiert. Eine Vorspannung, wie sie in Verbindung mit einem Vorspannungselement eines Blocks verwendet wird, ist eine Spannung, ein Strom, eine Vielzahl von Spannungen, eine Vielzahl von Strömen oder eine Kombination aus mindestens einer Spannung und mindestens einem Strom, der/die an das Vorspannungselement angelegt und/oder von diesem empfangen wird, um eine Reaktion von dem Vorspannungselement zu bewirken oder das Vorspannungselement in einem bestimmten Zustand einzurichten. Eine Vorspannung wird an das Vorspannungselement angelegt oder diesem zugeführt, oder das Vorspannungselement ist mit der Vorspannung vorgespannt, auf einer oder mehreren Ebenen, um eine Reaktion zu induzieren oder das Vorspannungselement in einem bestimmten Zustand einzurichten, damit eine Speicheroperation ausgeführt wird.
-
Die Vielzahl von Vorspannungselementen eines Blocks können alle von einem einzigen Typ sein oder können jeweils einer von einer Vielzahl von verschiedenen Typen sein. Vorspannungselemente verschiedener Typen können verschiedene Funktionen in dem Block durchführen und/oder können mit verschiedenen Vorspannungen auf verschiedenen Ebenen während der Speicheroperationen vorgespannt sein.
-
Ein Typ eines Vorspannungselements ist eine Speicherzelle. Speicherzellen, die Teil des gleichen Blocks sind, werden als ein Block von Speicherzellen bezeichnet. Andere Typen von Vorspannungselementen können je nach der Speichertechnologie möglich sein. In der NAND-Technologie können andere Typen von Vorspannungselementen Dummy-Zellen, Drain-Auswahlgate-Transistoren (als SGD-Transistoren bezeichnet) und Source-Auswahlgate-Transistoren (als SGS-Transistoren bezeichnet) einschließen. Mindestens in der NAND-Technologie sind Dummy-Zellen Speicherzellen, die keine Daten von einem Host speichern, und sind komplanar mit Dummy-Wortleitungsschichten angeordnet, die Speicherzellen und Wortleitungsschichten von bestimmten Flankenauswirkungen abschirmen. SGD-Transistoren und SGS-Transistoren können eingerichtet sein, um aktiviert (einschalten) und deaktiviert oder gesperrt (ausschalten) zu werden, oder können anderweitig eingerichtet sein, um in leitenden und nicht leitenden Zuständen, zu einem bestimmten Zeitpunkt und/oder als Reaktion auf bestimmte Vorspannungen, ein Ausführen von Speicheroperationen zu ermöglichen - z. B., um zu ermöglichen, dass Daten in die Speicherzellen programmiert, aus diesen gelesen oder von diesen gelöscht werden. Andere Vorspannungselementtypen als Speicherzellen, Dummy-Zellen, SGD-Transistoren und/oder SGS-Transistoren oder Vorspannungselementtypen zusätzlich zu diesen können möglich sein.
-
Außerdem ist eine Steuerleitung eines Blocks eine leitende Struktur, ein leitendes Element oder eine leitende Komponente eines Blocks, die/das mindestens einen Teil einer Vorspannung (wie eine einzelne Spannung oder einen einzelnen Strom) an ein oder mehrere Vorspannungselemente eines Blocks leitet, anlegt oder ausgibt und/oder die/das das eine oder die mehreren Vorspannungselemente mit mindestens einem Teil der Vorspannung vorspannt. In mindestens einigen beispielhaften Konfigurationen wirkt eine Steuerleitung wie eine Kontaktleitung, insofern es die Kontaktleitung ist, die sich physisch zu dem einen oder den mehreren Vorspannungselementen, die sie vorspannt, erstreckt und diese kontaktiert, wie durch Kontaktieren und/oder Bilden von mindestens einem Teil der Elektroden oder Anschlüsse des Vorspannungselements, das sie vorspannt.
-
Die Steuerleitungen eines Blocks können in eine Vielzahl von verschiedenen Typen von Steuerleitungen organisiert, angeordnet, charakterisiert, geteilt oder eingerichtet sein. Die Steuerleitungen können in Typen nach der Weise, in der sie die Vorspannungselemente vorspannen, organisiert sein. Zum Beispiel können Steuerleitungen des gleichen Typs die Vorspannungselemente auf die gleiche Weise vorspannen, wie durch Vorspannen des gleichen Typs von Vorspannungselementen und/oder des gleichen Typs von Anschlüssen der Vorspannungselemente.
-
Für die NAND-Technologie können die Steuerleitungen eines Blocks in drei Haupttypen, einschließlich Steuergateleitungen, Bitleitungen und Sourceleitungen, organisiert sein. Eine Steuergateleitung (mindestens für die NAND-Technologie) ist eine Steuerleitung, die eine Steuergatespannung an einen oder mehrere Steuergateanschlüsse (oder einfach ein Steuergate) von einem oder mehreren Vorspannungselementen anlegt und/oder die einen oder mehrere Steuergateanschlüsse von einem oder mehreren Vorspannungselementen mit einer Steuergatespannung vorspannt.
-
Eine Bitleitung (mindestens für die NAND-Technologie) ist eine Steuerleitung, die eine Bitleitungsspannung an einen oder mehrere Drainanschlüsse (oder einfach Drain) von einem oder mehreren Vorspannungselementen anlegt und/oder die eine oder mehrere Drainanschlüsse von einem oder mehreren Vorspannungselementen mit einer Bitleitungsspannung vorspannt. In diesem Kontext kann die Bitleitungsspannung alternativ als Drainspannung bezeichnet werden, wobei eine Bitleitung eine Steuerleitung ist, die eine Drainspannung an einen oder mehrere Drainanschlüsse von einem oder mehreren Vorspannungselementen anlegt. In bestimmten Beispielkonfigurationen spannt eine Bitleitung Drainanschlüsse durch Anlegen ihrer Bitleitungsspannung an ein oder mehrere Drainenden oder Seiten einer oder mehrerer NAND-Ketten und/oder zugeordneter Kanäle und/oder durch Vorspannen eines oder mehrerer Drainenden oder Seiten einer oder mehrerer NAND-Ketten und/oder zugehöriger Kanäle mit einer Bitleitungsspannung vor. In diesem Zusammenhang kann eine Bitleitungsspannung alternativ als eine Drainseitenkanalspannung (oder einfach eine Drainseitenspannung) bezeichnet werden. Hierin werden die Begriffe Bitleitungsspannung, Drainseitenspannung und Drainseitenkanalspannung austauschbar verwendet, zumindest wenn diese Spannungen die NAND-Technologie betreffen, sofern nicht ausdrücklich anders beschrieben. NAND-Ketten, Kanäle und ihre Drainenden werden nachstehend ausführlicher beschrieben.
-
Eine Sourceleitung (mindestens für die NAND-Technologie) ist eine Steuerleitung, die eine Sourceleitungsspannung an einen oder mehrere Sourceanschlüsse (oder einfach Source) von einem oder mehreren Vorspannungselementen anlegt und/oder die eine oder mehrere Sourceanschlüsse von einem oder mehreren Vorspannungselementen mit einer Sourceleitungsspannung vorspannt. In diesem Kontext kann die Sourceleitungsspannung alternativ als Sourcespannung bezeichnet werden, wobei eine Sourceleitung eine Steuerleitung ist, die eine Sourcespannung an einen oder mehrere Sourceanschlüsse von einem oder mehreren Vorspannungselementen anlegt. In bestimmten Beispielkonfigurationen spannt eine Sourceleitung Sourceanschlüsse durch Anlegen ihrer Sourceleitungsspannung an ein oder mehrere Sourceenden oder Seiten einer oder mehrerer NAND-Ketten und/oder zugeordneter Kanäle und/oder durch Vorspannen eines oder mehrerer Sourceenden oder Seiten einer oder mehrerer NAND-Ketten und/oder zugehöriger Kanäle mit einer Sourceleitungsspannung vor. In diesem Zusammenhang kann eine Sourceleitungsspannung alternativ als eine Sourceseitenkanalspannung oder (oder einfach eine Sourceseitenspannung) bezeichnet werden. Hierin werden die Begriffe Sourceleitungsspannung, Sourcespannung, Sourceseitenspannung und Sourceseitenkanalspannung austauschbar verwendet, mindestens wenn diese Spannungen die NAND-Technologie betreffen, sofern nicht ausdrücklich anders beschrieben. Ebenso kann die Sourceleitung eines Blocks alternativ als Zell-Sourceleitung CELSRC bezeichnet werden. NAND-Ketten, Kanäle und ihre Sourceenden werden nachstehend ausführlicher beschrieben.
-
In mindestens einigen beispielhaften Konfigurationen können Steuergateleitungen eines Blocks ferner in eine Vielzahl von verschiedenen Steuergatetypen (oder Untertypen) organisiert, angeordnet, charakterisiert, geteilt oder eingerichtet sein. Insbesondere können die Steuergateleitungen ferner in die Typen von Vorspannungselementen, die sie vorspannen, angeordnet sein und Wortleitungen, Dummy-Wortleitungen, Drain-Auswahlgate-Leitungen (als SGD-Leitungen bezeichnet) und Source-Auswahlgate-Leitungen (als SGS-Leitungen bezeichnet) einschließen.
-
Eine Wortleitung ist eine Steuergateleitung, die eine Wortleitungsspannung an ein oder mehrere Steuergates von einer oder mehreren Speicherzellen anlegt und/oder die ein oder mehrere Steuergates von einer oder mehreren Speicherzellen mit einer Wortleitungsspannung vorspannt. Eine Dummy-Wortleitung ist eine Steuergateleitung, die eine Dummy-Wortleitungsspannung an ein oder mehrere Steuergates von einer oder mehreren Dummy-Zellen anlegt und/oder die ein oder mehrere Steuergates von einer oder mehreren Dummy-Zellen mit einer Dummy-Wortleitungsspannung vorspannt. Eine Drain-Auswahlgate-Leitung (als SGD-Leitung bezeichnet) ist eine Steuergateleitung, die eine Drain-Auswahlgate-Spannung (als SGD-Leitungsspannung bezeichnet) an ein oder mehrere Steuergates von einem oder mehreren SGD-Transistoren anlegt und/oder die ein oder mehrere Steuergates von einem oder mehreren SGD-Transistoren mit einer SGD-Leitungsspannung vorspannt. Eine Source-Auswahlgate-Leitung (als SGS-Leitung bezeichnet) ist eine Steuergateleitung, die eine Source-Auswahlgate-Spannung (als SGS-Leitungsspannung bezeichnet) an ein oder mehrere Steuergates von einem oder mehreren SGS-Transistoren anlegt und/oder die ein oder mehrere Steuergates von einem oder mehreren SGS-Transistoren mit einer SGS-Leitungsspannung vorspannt.
-
Für einige beispielhafte Konfigurationen eines dreidimensionalen Blocks ist mindestens ein Typ einer Steuerleitung als eine Vielzahl von Schichten implementiert oder gebildet. Zum Beispiel sind in mindestens einigen 3-D-NAND-Konfigurationen die Steuergateleitungen eines Blocks als Schichten implementiert oder gebildet. Im Allgemeinen ist eine Schicht, die ansonsten als ein Blech oder eine Platte bezeichnet wird, eine allgemein ebene Struktur, die sich in den x-y-Richtungen senkrecht zu der z-Richtung erstreckt. Eine Schicht weist gegenüberliegende ebene Oberflächen auf, die in entgegengesetzte Richtungen weisen. Eine der ebenen Oberflächen ist eine Oberseite, die in der z-Richtung von dem Substrat 402 weg weist, und die andere ebene Oberfläche ist eine Unterseite, die in der z-Richtung zu dem Substrat 402 weist.
-
Hierin werden die Begriffe „Leitung“ und „Schicht“, mindestens wenn sie zur Bezugnahme auf Steuerleitungen verwendet werden, mit Ausnahme von SGD-Leitungen, wie unten detaillierter beschrieben, austauschbar oder als Alternativen füreinander verwendet. Zum Beispiel werden die Begriffe „Steuergateleitung“ und „Steuergateschicht“ austauschbar verwendet; werden die Begriffe „Wortleitung“ und „Wortleitungsschicht“ austauschbar verwendet; werden die Begriffe „Dummy-Wortleitung“ und „Dummy-Wortleitungsschicht“ austauschbar verwendet; und werden die Begriffe „Source-Auswahlgate-Leitung“ (oder SGS-Leitung) und „Source-Auswahlgate-Schicht“ (oder SGS-Schicht) austauschbar verwendet.
-
Außerdem schließt für mindestens für einige beispielhafte Konfigurationen der 3-D-NAND-Technologie ein dreidimensionaler Block einen Stapel ein. Im Allgemeinen ist ein Stapel eine Vielzahl oder eine Sammlung von Schichten, die übereinander angeordnet sind. Für 3-D-NAND schließt ein Stapel eines Blocks eine Vielzahl von Steuergateschichten und eine Vielzahl von dielektrischen Schichten ein. Eine dielektrische Schicht ist, mindestens wenn sie mit Steuergateschichten eines Stapels implementiert ist, eine Schicht, die eine Steuergateschicht von einer anderen Steuergateschicht elektrisch isoliert. In dem Stapel sind die Steuergateschichten und die dielektrischen Schichten abwechselnd angeordnet, insofern als sich die Schichten fortlaufend zwischen Steuergateschichten und dielektrischen Schichten abwechseln, wenn sich der Stapel in der z-Richtung von dem Substrat weg erstreckt. In diesem Zusammenhang ist ein Stapel eines dreidimensionalen Blocks eine Sammlung von abwechselnd angeordneten Steuergateschichten und dielektrischen Schichten.
-
Ein Stapel eines dreidimensionalen Blocks schließt Außenoberflächen und Kanten, wie durch die Seitenoberflächen und Kanten der Schichten definiert, sowie eine Oberseite einer obersten Schicht des Stapels und eine Unterseite einer untersten Schicht des Stapels ein. Die Außenoberflächen und Kanten des Stapels definieren wiederum eine Außengrenze des Stapels. Die Vorspannungselemente des dreidimensionalen Blocks sind dreidimensional innerhalb der Außengrenze angeordnet. In diesem Zusammenhang werden die Vorspannungselemente des dreidimensionalen Blocks als in dem Stapel oder innerhalb des Stapels angeordnet bezeichnet.
-
Außerdem sind die Vorspannungselemente eines dreidimensionalen Blocks mindestens für einige beispielhafte Konfigurationen komplanar (in der x-y-Richtung) mit Steuergateschichten angeordnet. Insbesondere sind die Vorspannungselemente komplanar mit den Steuergateschichten, durch die sie gemäß ihrer Einrichtung vorgespannt sind. Entsprechend sind Speicherzellen, die eingerichtet sind, um durch eine bestimmte Wortleitungsschicht vorgespannt zu sein, komplanar mit der bestimmten Wortleitungsschicht angeordnet; sind SGD-Transistoren, die eingerichtet sind, um durch eine bestimmte SGD-Schicht vorgespannt zu sein, komplanar mit der bestimmten SGD-Schicht angeordnet; sind SGS-Transistoren, die eingerichtet sind, um durch eine bestimmte SGS-Schicht vorgespannt zu sein, komplanar mit der bestimmten SGS-Schicht angeordnet; und sind Dummy-Zellen, die eingerichtet sind, um durch eine bestimmte Dummy-Wortleitungsschicht vorgespannt zu sein, komplanar mit der bestimmten Dummy-Wortleitungsschicht angeordnet.
-
Ein Vorspannungselement, das komplanar mit einer gegebenen Steuergateschicht ist und/oder eingerichtet ist, um durch eine solche vorgespannt zu sein, kann als in der gegebenen Steuergateschicht angeordnet, sich darin befindend und/oder daran gekoppelt bezeichnet werden. Zum Beispiel kann eine Speicherzelle, die komplanar mit einer gegebenen Wortleitung ist und/oder eingerichtet ist, um durch eine solche vorgespannt zu sein, als in der gegebenen Wortleitungsschicht angeordnet, sich darin befindend und/oder daran gekoppelt bezeichnet werden.
-
Außerdem schließt mindestens für einige beispielhafte Konfigurationen der 3D-NAND-Technologie ein dreidimensionaler Block eine Vielzahl von Kanälen ein. Ein Kanal ist eine längliche Struktur, die sich in der z-Richtung durch einen Stapel eines Blocks erstreckt, um den Vorspannungselemente des Blocks gebildet oder angeordnet sind. Ein Vorspannungselement, das um einen Kanal angeordnet oder gebildet ist, kann den Kanal mindestens teilweise und in einigen Konfigurationen vollständig umgeben.
-
Außerdem werden mindestens für einige beispielhafte Konfigurationen der 3D-NAND-Technologie Vorspannungselemente eines Blocks mittels Kanälen vorgespannt. Anders ausgedrückt ist ein Kanal eine Struktur eines Blocks, durch die Vorspannungselemente vorgespannt sind. Insbesondere werden Drainanschlüsse und Sourceanschlüsse von Vorspannungselementen mittels Kanälen vorgespannt. Ein Vorspannungselement, dessen Source- und Drainanschlüsse durch einen gegebenen Kanal vorgespannt sind, ist an diesen gegebenen Kanal gekoppelt.
-
Jeder Kanal schließt ein jeweiliges Drainende (oder eine Drainseite) und ein jeweiliges Sourceende (oder eine Sourceseite) ein. Ein Kanal erstreckt sich durch einen Stapel in der z-Richtung zu dem Substrat von seinem Drainende zu seinem Sourceende. Bitleitungen eines Blocks sind elektrisch die Drainenden der Kanäle angeschlossen oder gekoppelt, und die Sourceleitung eines Blocks ist elektrisch an die Sourceenden der Kanäle angeschlossen oder gekoppelt. In einem Block legt eine Bitleitung eine Bitleitungsspannung (oder Drainspannung oder Drainseitenspannung oder Drainseitenkanalspannung) an das eine oder die mehreren Drainenden von einem oder mehreren Kanälen, an die sie gekoppelt ist, an. Die Sourceleitung legt eine Sourceleitungsspannung (oder Sourcespannung oder Sourceseitenspannung oder Sourceseitenkanalspannung) an die Sourceenden der Kanäle, an die sie gekoppelt ist, an.
-
Außerdem ist, wie hierin verwendet (zumindest für 2D- und 3D-NAND-Technologie), eine NAND-Kette (auch als eine Speicherzellen-Kette, eine Kette von Speicherzellen oder nur eine Kette bezeichnet) eine Vielzahl von Vorspannungselementen oder eine Sammlung von Vorspannungselementen, die mit einer gleichen oder gemeinsamen Bitleitung gekoppelt sind. Speziell für 3D-NAND ist eine NAND-Kette eine Vielzahl oder eine Sammlung von Vorspannungselementen, die mit einer gleichen oder gemeinsamen Bitleitung gekoppelt sind und die um einen gleichen oder gemeinsamen Kanal gebildet oder angeordnet sind. Dementsprechend ist für 2D-NAND eine einzelne Kette mit einer Bitleitung gekoppelt, während für 3D-NAND eine Vielzahl von unterschiedlichen Ketten mit derselben Bitleitung gekoppelt ist.
-
Auch werden, wie hierin verwendet, ein gegebener Kanal und eine gegebene NAND-Kette, welche die Vorspannungselemente, die um den gegebenen Kanal angeordnet oder gebildet sind, einschließt, als aneinander gekoppelt und/oder miteinander verbunden bezeichnet. Außerdem werden Vorspannungselemente, die Teil der gleichen NAND-Kette sind, als aneinander gekoppelt bezeichnet.
-
Für mindestens einige Beispielkonfigurationen schließen die Vorspannungselemente einer NAND-Kette eine Vielzahl von Speicherzellen, mindestens einen SGD-Transistor und mindestens einen SGS-Transistor ein. In bestimmten Beispielkonfigurationen kann eine NAND-Kette ferner eine oder mehrere Dummy-Zellen einschließen.
-
Zusätzlich für 3D-NAND erstrecken sich die NAND-Ketten in der z-Richtung um ihre zugehörigen Kanäle. Ähnlich wie die Kanäle schließen die NAND-Ketten jeweils jeweilige Drainenden (oder Drainseiten) und Sourceenden (oder Sourceseiten) ein. Ein Kanal erstreckt sich in der z-Richtung zu dem Substrat von seinem Drainende zu seinem Sourceende.
-
Drainenden von NAND-Ketten sind elektrisch mit Drainenden ihrer zugehörigen Kanäle gekoppelt. Entsprechend sind die Bitleitungen elektrisch an Drainenden von Kanälen und zugehörigen Kanalelementgruppen angeschlossen oder gekoppelt. Eine Bitleitung ist eingerichtet, um eine Bitleitungsspannung (oder eine Drainseitenspannung, oder eine Drainseitenkanalspannung) an Drainenden von Kanälen und zugehörigen NAND-Ketten anzulegen, mit denen die Bitleitung gekoppelt ist. Anders ausgedrückt ist eine Bitleitungsspannung (oder eine Drainseitenspannung, oder eine Drainseitenkanalspannung) eine Spannung, die eine Bitleitung erzeugt und an ein Drainende (oder eine Drainseite) eines Kanals und/oder ein Drainende (oder eine Drainseite) einer NAND-Kette, an die sie elektrisch angeschlossen oder gekoppelt ist, anlegt. Während mindestens einiger beispielhafter Speicheroperationen kann eine Bitleitung einen oder mehrere Drainanschlüsse von einem oder mehreren Vorspannungselementen vorspannen, indem sie eine Bitleitungsspannung (oder eine Drainspannung, eine Drainseitenkanalspannung oder eine Drainseitenspannung) an ein oder mehrere Drainenden von einem oder mehreren Kanälen und/oder an ein oder mehrere Drainenden von einer oder mehreren NAND-Ketten, an die sie, die Bitleitung, elektrisch angeschlossen oder gekoppelt ist, anlegt. Anders ausgedrückt spannt, während Speichervorgängen, eine Bitleitung einen oder mehrere Drainanschlüsse von einem oder mehreren Vorspannungselementen mit einer Bitleitungsspannung (oder einer Drainseitenspannung oder einer Drainseitenkanalspannung) mittels der Drainenden von einem oder mehreren Kanälen und/oder der Drainenden von einer oder mehreren NAND-Ketten, an welche die Bitleitung gekoppelt ist, vor.
-
Gleichermaßen sind Sourceenden von NAND-Ketten elektrisch mit Sourceenden ihrer zugehörigen Kanäle gekoppelt. Entsprechend ist die Sourceleitung elektrisch an Sourceenden von Kanälen und zugehörigen Kanalelementgruppen angeschlossen oder gekoppelt. Die Sourceleitung ist eingerichtet, um eine Sourceleitungsspannung (oder eine Sourceseitenspannung oder eine Sourceseitenkanalspannung) an Sourceenden von Kanälen und zugehörigen NAND-Ketten anzulegen, mit denen die Sourceleitung gekoppelt ist. Anders ausgedrückt ist eine Sourceleitungsspannung (oder Sourceseitenkanalspannung oder Sourceseitenspannung) eine Spannung, die eine Sourceleitung erzeugt und die sie an ein Sourceende (oder eine Sourceseite) eines Kanals und/oder ein Sourceende (oder eine Sourceseite) einer NAND-Kette, an welche die Sourceleitung elektrisch angeschlossen oder gekoppelt ist, anlegt. Während mindestens einiger beispielhafter Speicheroperationen kann eine Sourceleitung einen oder mehrere Sourceanschlüsse von einem oder mehreren Vorspannungselementen vorspannen, indem sie eine Sourceleitungsspannung (oder eine Sourceseitenkanalspannung oder eine Sourceseitenspannung) an ein oder mehrere Sourceenden von einem oder mehreren Kanälen und/oder an ein oder mehrere Sourceenden von einer oder mehreren NAND-Ketten, an welche die Sourceleitung elektrisch angeschlossen oder gekoppelt ist, anlegt. Anders ausgedrückt spannt, während zumindest einiger beispielhafter Speicheroperationen, eine Sourceleitung einen oder mehrere Sourceanschlüsse von einem oder mehreren Vorspannungselementen mit einer Sourceleitungsspannung (oder einer Sourceseitenkanalspannung oder einer Sourceseitenspannung) mittels der Sourceenden von einem oder mehreren Kanälen und/oder der Sourceenden von einer oder mehreren NAND-Ketten, an welche die Sourceleitung gekoppelt ist, vor.
-
Außerdem erstrecken sich Vorspannungselemente einer NAND-Kette in der z-Richtung um den gleichen Kanal. Jedes Vorspannungselement der NAND-Kette ist komplanar mit einer der Vielzahl von Steuergateschichten des Blocks angeordnet. In dieser Hinsicht ist jede Steuergateschicht des Blocks eingerichtet, um ein Steuergate eines jeweiligen der Vielzahl von Vorspannungselementen der NAND-Kette vorzuspannen.
-
Außerdem können die NAND-Ketten eines Blocks für mindestens einige Beispielkonfigurationen die gleiche Anzahl von Vorspannungselementen, die gleiche Kombination von Vorspannungselementtypen und die gleiche Anzahl von Vorspannungselementen jedes Vorspannungselementtyps aufweisen. Auch ist eine Vorspannungselementreihenfolge, in der sich die Vorspannungselemente ihrer jeweiligen Vorspannungselementtypen in der z-Richtung von dem Substrat weg erstrecken, unter den NAND-Ketten eines Blocks die gleiche. Mindestens für einige Beispielkonfigurationen der 3D-NAND-Technologie schließt die Vorspannungselementreihenfolge der Vorspannungselemente einer NAND-Kette, beginnend am nächsten zu dem Substrat und sich von dem Substrat in der z-Richtung weg bewegend, einen oder mehrere SGS-Transistoren, gefolgt von einer oder mehreren Sourceseiten-Dummy-Zellen, gefolgt von einer Vielzahl von Speicherzellen, gefolgt von einer oder mehreren Drainseiten-Dummy-Zellen und gefolgt von einem oder mehreren SGD-Transistoren ein. Andere Vorspannungselementreihenfolgen können möglich sein.
-
Eine Steuergateschichtreihenfolge der Steuergateschichten und ihrer jeweiligen Typen kann mit der Vorspannungselementreihenfolge eines Blocks übereinstimmen oder dieser entsprechen. Entsprechend schließt mindestens für einige beispielhafte Konfigurationen der 3-D-NAND-Technologie eine Steuergateschichtreihenfolge eine Vielzahl von Steuergateschichten eines Blocks, beginnend am nächsten zu dem Substrat und sich von dem Substrat in der z-Richtung weg bewegend, eine oder mehrere SGS-Schichten, gefolgt von einer oder mehreren Sourceseiten-Dummy-Wortleitungsschichten, gefolgt von einer Vielzahl von Wortleitungsschichten, gefolgt von einer oder mehreren Drainseiten-Dummy-Wortleitungsschichten und gefolgt von einer oder mehreren SGD-Schichten ein.
-
Im Einzelnen zeigt 4B eine Querschnittsansicht eines Abschnitts eines Blocks 410, der repräsentativ für einen der Blöcke 400 von 4A sein kann. Der Block 410 schließt einen Stapel 412 von abwechselnden Steuergateschichten und dielektrischen Schichten (DL) ein. Außerdem schließt der in 4B gezeigte Abschnitt zwei Kanäle (oder Speicherlöcher) ein, die sich durch die Schichten erstrecken, einschließlich eines ersten Kanals 414 und eines zweiten Kanals 416. Vorspannungselemente, die zwei NAND-Ketten um die beiden Kanäle 414, 416 bilden, sind in 4B durch gestrichelte Kästchen identifiziert. Insbesondere sind Vorspannungselemente, die eine erste NAND-Kette NS1 um den ersten Kanal 414 bilden, durch ein gestricheltes Kästchen identifiziert, das als NS1 gekennzeichnet ist, und sind Vorspannungselemente, die eine zweite NAND-Kette NS2 um den zweiten Kanal 416 bilden, durch ein gestricheltes Kästchen identifiziert, das als NS2 gekennzeichnet ist. Weitere Details von Vorspannungselementen und beispielhaften Materialien zum Bilden der Elemente und der Kanäle werden unten in Bezug auf 4C unter Bezugnahme auf einen bestimmten Bereich 418 der ersten NAND-Kette NS1 und des zugehörigen ersten Kanals 414 detaillierter beschrieben.
-
Zum Zwecke der Veranschaulichung sind in 4B die erste und die zweite NAND-Kette NS1, NS2, die um den ersten und den zweiten Kanal 414, 416 gebildet sind, beide elektrisch an eine i-te Bitleitung BLi angeschlossen. In einer tatsächlichen Implementierung kann ein Block Hunderte oder Tausende von Bitleitungen einschließen. Eine Anordnung von Kanälen und zugehörigen NAND-Ketten eines Blocks kann bestimmen, welche Kanäle und NAND-Ketten elektrisch an welche Bitleitungen angeschlossen sind. Unter der Vielzahl von Kanälen und NAND-Ketten eines Blocks sind bestimmte Kombinationen von Kanälen und zugehörigen NAND-Ketten elektrisch untereinander an die gleiche Bitleitung angeschlossen, während bestimmte andere Kombinationen von Kanälen und zugehörigen NAND-Ketten elektrisch untereinander an verschiedene Bitleitungen angeschlossen sind.
-
Außerdem kann eine gegebene NAND-Kette mittels ihres zugehörigen Kanals und einer leitenden Durchkontaktierung, die den zugehörigen Kanal elektrisch mit der Bitleitung verbindet, elektrisch an eine gegebene Bitleitung angeschlossen sein. Zum Beispiel ist in 4B die erste NAND-Kette NS1 mittels des ersten Kanals 414 und einer leitenden Durchkontaktierung 420, die den ersten Kanal 414 elektrisch mit der i-ten Bitleitung BLi verbindet, elektrisch an die i-te Bitleitung BLi angeschlossen. Die zweite NAND-Kette NS2 ist mittels des zweiten Kanals 416 und einer leitenden Durchkontaktierung 422, die den zweiten Kanal 416 elektrisch mit der i-ten Bitleitung BLi verbindet, elektrisch an die i-te Bitleitung BLi angeschlossen. Andere Wege zum elektrischen Verbinden von Bitleitungen mit NAND-Ketten können möglich sein.
-
Der Block 410 kann ferner ein Substrat 424 einschließen oder auf einem solchen angeordnet sein. Ein Isolierfilm 426 kann auf dem Substrat 424 gebildet sein, und eine Sourceleitung SL kann auf einer untersten Schicht des Stapels 412 gebildet oder angeordnet sein.
-
Außerdem schließt in der beispielhaften Konfiguration, die in 4B gezeigt ist, jeder Kanal 414, 416 ein Sourceende, das mit der Sourceleitung SL verbunden ist, und ein Drainende, das mit seiner zugehörigen leitenden Durchkontaktierung verbunden ist, ein. In 4B schließt der erste Kanal 414 ein Sourceende 428, das mit der Sourceleitung SL verbunden ist, und ein Drainende 430, das mit der leitenden Durchkontaktierung 420 verbunden ist, ein. In ähnlicher Weise schließt der zweite Kanal 416 ein Sourceende 432, das mit der Sourceleitung SL verbunden ist, und ein Drainende 434, das mit der leitenden Durchkontaktierung 422 verbunden ist, ein.
-
Außerdem kann der Block 410, mindestens einige beispielhafte Konfigurationen, ferner vertikale Verbindungen (z. B. metallgefüllte Schlitze) einschließen, die sich durch den Stapel 412 erstrecken und die Sourceleitung SL mit einer Leiterbahn über dem Stapel 412, wie einer Leiterbahn in einer der Metallschichten in dem oberen Bereich 408 (4A), verbinden. Zum Zwecke der Veranschaulichung zeigt 4B zwei Verbindungen 436, 438, die sich durch den Stapel 412 erstrecken.
-
Außerdem schließt in der beispielhaften Konfiguration in 4B zum Zwecke der Veranschaulichung jede der NAND-Ketten zwei SGS-Transistoren, zwei Sourceseiten-Dummy-Zellen, elf Speicherzellen, zwei Drainseiten-Dummy-Zellen und zwei SGD-Transistoren ein. Entsprechend schließen die Steuergateschichten des Stapels 412 ein: zwei SGS-Schichten, einschließlich einer ersten SGS-Schicht SGSL0 und einer zweiten SGS-Schicht SGSL1; zwei Sourceseiten-Dummy-Wortleitungsschichten, einschließlich einer ersten Sourceseiten-Dummy-Wortleitungsschicht DWLS0 und einer zweiten Sourceseiten-Dummy-Wortleitungsschicht DWLS1; elf Wortleitungsschichten, die sich von einer ersten Wortleitungsschicht WLL0 zu einer elften Wortleitungsschicht WLL10 erstrecken; zwei Drainseiten-Dummy-Wortleitungsschichten, einschließlich einer ersten Drainseiten-Dummy-Wortleitungsschicht DWLDO und einer zweiten Drainseiten-Dummy-Wortleitungsschicht DWLD1; und zwei SGD-Schichten, einschließlich einer ersten SGD-Schicht SGSL0 und einer zweiten SGD-Schicht SGDL1. Der Stapel schließt ferner zwanzig dielektrische Schichten ein, die sich von einer ersten dielektrischen Schicht DL0 zu einer zwanzigsten dielektrischen Schicht DL19 erstrecken und abwechselnd zwischen den Steuergateschichten angeordnet sind.
-
Die Anzahl von Vorspannungselementen und ihre jeweiligen Vorspannungselementtypen, die für die NAND-Ketten verwendet werden, und die Anzahl von entsprechenden Steuergateschichten in der beispielhaften Konfiguration des Blocks 410 in 4B sind nicht einschränkend und lediglich beispielhaft zum Zwecke der Veranschaulichung. Andere Anzahlen von Vorspannungselementen für beliebige der Vorspannungselementtypen oder andere Konfigurationen, die keine Vorspannungselemente von bestimmten Vorspannungselementtypen einschließen oder die ein oder mehrere Vorspannungselemente von anderen Vorspannungselementtypen als den in 4B gezeigten einschließen, können möglich sein.
-
4C ist eine Nahansicht des Bereichs 418 des Blocks 410 von 4B. Die Materialien, die die Vorspannungselemente bilden, sind auf verschiedenen Ebenen des Stapels 412 am Schnittpunkt von jeweiligen Steuergateschichten und jeweiligen Kanälen gebildet. In der beispielhaften Konfiguration des Blocks 410, wie in der Nahansicht von 4C dargestellt, sind ein erster SGD-Transistor 440 und ein zweiter SGD-Transistor 442 unter dem Drainende 430 des ersten Kanals 414 und über einer ersten und einer zweiten Drainseiten-Dummy-Zelle 444, 446 und einer elften Speicherzelle MC10 angeordnet.
-
Physisch oder strukturell schließt ein Kanal ein Speicherloch ein, das sich in der z-Richtung erstreckt und eine Seitenwand (SW) definiert. Ein Kanal schließt ferner eine oder mehrere Schichten von Materialien ein, die in dem Speicherloch und/oder an der Seitenwand angeordnet sind, wie beispielsweise durch Verwenden einer Atomlagenabscheidung. In einigen beispielhaften Konfigurationen können die Schichten von Materialien eines Kanals (die als eine Säule von Materialien bezeichnet werden können), wie in Bezug auf den ersten Kanal 414 beschrieben, eine ladungshaltende Schicht oder einen ladungshaltenden Film 448, wie Siliziumnitrid, eine Tunnelschicht 450, einen Polysiliziumkörper oder -kanal 452 und eine dielektrische Kern 454 einschließen. Außerdem können die Materialien, die jedes der Vorspannungselemente bilden, in einigen Beispielkonfigurationen, wie der in 4C gezeigten, ein Sperroxid-/Sperr-High-k-Material 456, ein Barrieremetall 458 und ein leitendes Metall 460 (z. B. Wolfram), das die Steuergates der Transistoren bildet, einschließen. Die Materialien, die die Vorspannungselemente bilden, können in der gleichen Ebene wie die jeweiligen Steuergateschichten angeordnet sein. Andere Konfigurationen können Materialien verwenden, die entlang der Seitenwand (SW) und/oder für die anderen Vorspannungselemente als die in Bezug auf 4C gezeigten und beschriebenen abgeschieden werden.
-
4D zeigt ein Schaltschema einer beispielhaften Konfiguration eines dreidimensionalen Blocks 480, der für mindestens einen Abschnitt von einem der Blöcke 400 von 4A repräsentativ sein und/oder den physischen Aufbau oder die physische Struktur wie in 4B, 4C dargestellt aufweisen kann. In 4D ist jedes Vorspannungselement als ein Transistor repräsentiert oder dargestellt. Außerdem sind Speicherzellen als MC gekennzeichnet, sind SGD-Transistoren als SGDT gekennzeichnet und sind SGS-Transistoren als SGST gekennzeichnet. In dem beispielhaften Block 480 schließt jede NAND-Kette NS 50 Zellen ein, einschließlich 48 Speicherzellen, die sich von einer ersten Speicherzelle MC1 zu einer 48. Speicherzelle MC48 erstrecken, eines SGD-Transistors SGDT und eines SGS-Transistors SGST. Andere NAND-Kettenkonfigurationen sind möglich, einschließlich derjenigen, die eine oder mehrere Sourceseiten-Dummy-Zellen, eine oder mehrere Drainseiten-Dummy-Zellen, mehr als einen SGD-Transistor und/oder mehr als einen SGS-Transistor einschließen, wie zuvor beschrieben.
-
Gemäß der NAND-Kettenkonfiguration in 4B schließt der Block 480 50 Steuergateschichten ein, einschließlich 48 Wortleitungsschichten, die sich von einer ersten Wortleitungsschicht WLL1 zu einer 48. Wortleitungsschicht WLL48 erstrecken, einer SGD-Schicht SGDL und einer SGS-Schicht SGSL. Wie zuvor beschrieben, sind die i. Speicherzellen MCi in jeder NAND-Kette in ihren jeweiligen Steuergates angeordnet und derart eingerichtet, dass diese durch die i. Wortleitungsschicht WLLi der Steuergateschichten vorgespannt sind. Als Beispiele sind die ersten Speicherzellen MC1 der NAND-Ketten CEG in ihren Steuergates angeordnet und derart eingerichtet, dass diese durch die erste Wortleitungsschicht WLL1 vorgespannt sind, sind die zweiten Speicherzellen MC2 in ihren Steuergates angeordnet und derart eingerichtet, dass diese durch die zweite Wortleitungsschicht WLL2 vorgespannt sind, und sind die 48. Speicherzellen MC48 der NAND-Ketten CEG in ihren Steuergates angeordnet und derart eingerichtet, dass diese durch die 48. Wortleitungsschicht WLL48 vorgespannt sind. Außerdem sind die SGD-Transistoren der NAND-Ketten NS in ihren jeweiligen Steuergates angeordnet und derart eingerichtet, dass diese durch die SGD-Schicht SGDL vorgespannt sind, und die SGS-Transistoren SGST der NAND-Ketten NS in ihren jeweiligen Steuergates angeordnet und derart eingerichtet sind, dass diese durch die SGS-Schicht SGSL vorgespannt sind.
-
Wie in 4D dargestellt, sind die NAND-Ketten NS und ihre zugehörigen Kanäle zweidimensional in der x- und der y-Richtung in dem Block 480 angeordnet und elektrisch an eine m-Anzahl von Bitleitungen angeschlossen. In bestimmten beispielhaften Konfigurationen sind die NAND-Ketten NS und ihre zugehörigen Kanäle zweidimensional gemäß einer Kanalanordnung angeordnet, die von einer P-Anzahl von NAND-Ketten und ihren zugehörigen Kanälen, die mit einer einzelnen Bitleitung verbunden sind, abhängt. Anders ausgedrückt ist jede Bitleitung BL derart eingerichtet, dass sie an einen eindeutigen Satz einer P-Anzahl von NAND-Ketten und ihren zugehörigen Kanälen elektrisch angeschlossen ist, eine jeweilige Bitleitungsspannung an diese anlegt und/oder diese mit einer jeweiligen Bitleitungs(kanal)spannung vorspannt.
-
In der beispielhaften Konfiguration von 4D ist jede Bitleitung BL derart eingerichtet, dass sie an vier NAND-Ketten elektrisch angeschlossen ist (d. h. P = 4). Dementsprechend zeigt 4D die erste Bitleitung BL1, die jeweils mit einer ersten NAND-Kette NS1, einer zweiten NAND-Kette NS2, einer dritten NAND-Kette NS3 und einer vierten NAND-Kette NS4 elektrisch verbunden ist. Jede der anderen beiden durch m. Bitleitungen BL2 bis BLm ist auch elektrisch an einen jeweiligen Satz von vier NAND-Ketten und ihren jeweiligen Kanälen angeschlossen. Andere Anzahlen für P als vier können für verschiedene andere Konfigurationen möglich sein.
-
In einigen Beispielkonfigurationen kann eine SGD-Schicht in eine Vielzahl von verschiedenen Drain-Auswahlgate-Teilschichten (SGD-Teilschichten) getrennt oder geteilt sein, die elektrisch isoliert oder voneinander getrennt sind. Zum Beispiel kann eine SGD-Schicht geätzt werden, um Abschnitte des Metalls, das die SGD-Schicht bildet, zu entfernen, um eine Vielzahl von elektrisch isolierten oder getrennten SGD-Teilschichten zu bilden.
-
Verschiedene SGD-Teilschichten der gleichen SGD-Schicht können unabhängig und/oder einzeln vorgespannt sein und/oder mit einer anderen von einer Vielzahl von SGD-Leitungsspannungen versorgt werden. Für eine gegebene Vielzahl von SGD-Transistoren, die in der gleichen SGD-Schicht angeordnet sind, kann wiederum jede SGD-Teilschicht der gleichen SGD-Schicht eingerichtet sein, um die Steuergates der SGD-Transistoren, die in ihrer SGD-Unterschicht angeordnet sind, aber nicht der SGD-Transistoren, die in den anderen SGD-Teilschichten angeordnet sind, vorzuspannen. Auf diese Weise kann die Vielzahl von SGD-Teilschichten eingerichtet sein, um unabhängig oder einzeln die verschiedenen SGD-Transistoren innerhalb ihrer jeweiligen SGD-Teilschichten mit einer jeweiligen von einer Vielzahl von SGD-Leitungsspannungen vorzuspannen.
-
Außerdem kann für beispielhafte Konfigurationen, die mehrere SGD-Schichten einschließen, jede SGD-Schicht mehrere SGD-Teilschichten einschließen. Die Anzahl von SGD-Teilschichten in jeder SGD-Schicht kann die gleiche sein. Außerdem können bestimmte Kombinationen von SGD-Teilschichten in verschiedenen SGD-Schichten elektrisch gekoppelt sein und/oder mit der gleichen SGD-Leitungsspannung versorgt werden, sodass die Steuergates von SGD-Transistoren der gleichen NAND-Kette mit der gleichen SGD-Leitungsspannung vorgespannt sind. SGD-Teilschichten, die SGD-Transistoren mit der gleichen SGD-Leitungsspannung vorspannen, bilden einen Teil der gleichen SGD-Leitung.
-
Wie hierin verwendet, ist eine SGD-Leitung eine leitende Struktur eines Blocks, die Steuergates von SGD-Transistoren mit einer gemeinsamen oder der gleichen SGD-Leitungsspannung vorspannt. Entsprechend werden die Begriffe „Leitung“ und „Schicht“, wie hierin speziell für SGD-Schichten und SGD-Leitungen verwendet, nicht austauschbar verwendet. Stattdessen ist eine SGD-Leitung eine einzelne SGD-Teilschicht oder eine Sammlung von SGD-Teilschichten, die jeweils einen Teil einer anderen SGD-Schicht bilden. Insbesondere bildet jede SGD-Teilschicht der SGD-Schicht für 3-D-Block-Konfigurationen, die eine einzelne SGD-Schicht einschließen, eine gesamte SGD-Leitung. Für 3-D-Block-Konfigurationen, die mehrere SGD-Schichten einschließen, bildet jede SGD-Teilschicht einen Teil einer SGD-Leitung mit einer oder mehreren anderen SGD-Teilschichten von einer oder mehreren anderen SGD-Schichten.
-
Außerdem sind verschiedene SGD-Leitungen eingerichtet, um unabhängig oder getrennt verschiedene Sätze oder Gruppen von SGD-Transistoren eines Blocks mit verschiedenen SGD-Leitungsspannungen vorzuspannen. Eine SGD-Leitung ist eingerichtet, um die Steuergates der SGD-Transistoren, an die sie gekoppelt oder elektrisch angeschlossen ist, vorzuspannen und die Steuergates der SGD-Transistoren, von denen sie entkoppelt oder elektrisch getrennt ist, nicht vorzuspannen. Entsprechend sind die SGD-Transistoren SGDT eines Blocks in einer Vielzahl von SGDT-Gruppen angeordnet oder gebildet. SGD-Transistoren, die Teil der gleichen SGDT-Gruppe sind, sind an die gleiche SGD-Leitung gekoppelt und derart eingerichtet, dass sie durch die gleiche SGD-Leitungsspannung vorgespannt sind. SGD-Transistoren, die Teil verschiedener SGDT-Gruppen sind, sind an verschiedene SGD-Leitungen gekoppelt und derart eingerichtet, dass sie durch verschiedene SGD-Leitungsspannungen vorgespannt sind.
-
In Bezug auf 4D sind die SGD-Transistoren, die Teil derselben SGDT-Gruppe sind, mit demselben Namen gekennzeichnet. Insbesondere sind SGD-Transistoren, die Teil einer gleichen, ersten SGDT-Gruppe sind, jeweils als SGDT1 bezeichnet, SGD-Transistoren, die Teil einer gleichen, zweiten SGDT-Gruppe sind, jeweils als SGDT2 bezeichnet, SGD-Transistoren, die Teil einer gleichen, dritten SGDT-Gruppe sind, jeweils als SGDT3 bezeichnet und SGD-Transistoren, die Teil einer gleichen, vierten SGDT-Gruppe sind, jeweils als SGDT4 bezeichnet.
-
Außerdem ist die Anzahl von SGD-Leitungen für mindestens einige Beispielkonfigurationen eines 3-D-Blocks gleich der P-Anzahl von NAND-Ketten und zugehörigen Kanälen, die mit der gleichen Bitleitung verbunden sind. Zum Beispiel schließt der Block 480 in Bezug auf 4D vier SGD-Leitungen ein, die den vier NAND-Ketten entsprechen, die mit einer einzelnen Bitleitung, einschließlich einer ersten SGD-Leitung SGD1, einer zweiten SGD-Leitung SGD2, einer dritten SGD-Leitung SGD3 und einer vierten SGD-Leitung SGD4, verbunden sind. Anders ausgedrückt schließt die SGD-Schicht SGDL vier SGD-Leitungen SGD1, SGD2, SGD3 und SGD4 ein.
-
Außerdem können die NAND-Ketten derart angeordnet sein, dass für einen gegebenen Satz von NAND-Ketten, die mit der gleichen Bitleitung verbunden sind, der SGD-Transistor SGDT jeder NAND-Kette des Satzes an eine andere der SGD-Leitungen gekoppelt ist. Zum Beispiel sind in dem Block 480 von 4D die jeweiligen SGD-Transistoren SGDT des Satzes von vier NAND-Ketten NS1, NS2, NS3, NS4, die mit der ersten Bitleitung BL1 verbunden sind, mit einer anderen der SGD-Leitungen SGD1, SGD2, SGD3, SGD4 verbunden. Insbesondere schließt die erste NAND-Kette NS1 einen ersten SGD-Transistor SGDT1 ein, der an sein Steuergate gekoppelt und derart eingerichtet ist, dass dieses durch die erste SGD-Leitung SGD1 vorgespannt ist, schließt die zweite NAND-Kette NS2 einen SGD-Transistor SGDT2 ein, der an sein Steuergate gekoppelt und derart eingerichtet ist, dass dieses durch die zweite SGD-Leitung SGD2 vorgespannt ist, schließt die dritte NAND-Kette NS3 einen SGD-Transistor SGDT3 ein, der an sein Steuergate gekoppelt und derart eingerichtet ist, dass dieses durch die dritte SGD-Leitung SGD3 vorgespannt ist, und schließt die vierte NAND-Kette NS4 einen SGD-Transistor SGDT4 ein, der an sein Steuergate gekoppelt und derart eingerichtet ist, dass dieses durch die vierte SGD-Leitung SGD4 vorgespannt ist.
-
Zusätzlich kann ein 3-D-Block in Unterblöcke (z. B. die Elemente SB1-SB4 in 4D) über die m-Anzahl von Bitleitungen BL1 bis BLm hinweg, basierend auf den verschiedenen SGD-Leitungen, angeordnet, organisiert oder geteilt sein. Wie hierin verwendet, ist ein Unterblock ein Abschnitt eines Blocks, der NAND-Ketten mit SGD-Transistoren aufweist, die eingerichtet sind, um durch die gleiche SGD-Leitung und/oder mit der gleichen SGD-Leitungsspannung vorgespannt zu sein. Ein Unterblock kann, wie in der x-Richtung, über die m-Anzahl von Wortleitungen eines Blocks hinweg überspannen. Außerdem sind NAND-Ketten mit SGD-Transistoren, die eingerichtet sind, um durch verschiedene SGD-Leitungen und/oder mit verschiedenen SGD-Leitungsspannungen vorgespannt zu sein, Teil verschiedener Unterblöcke.
-
Die Anzahl von Unterblöcken eines Blocks kann gleich der Anzahl von SGD-Leitungen sein. Zum Beispiel schließt der beispielhafte Block 480 von 4D vier Unterblöcke (SB), die gleich der Anzahl von SGD-Leitungen sind, einschließlich eines ersten Unterblocks SB1, eines zweiten Unterblocks SB2, eines dritten Unterblocks SB3 und eines vierten Unterblocks SB4, ein. Der erste Unterblock SB1 schließt die NAND-Ketten mit SGD-Transistoren SGD1 ein, die an die erste SGD-Leitung SGD1 gekoppelt und derart eingerichtet sind, dass sie mit einer ersten SGD-Leitungsspannung vorgespannt sind, der zweite Unterblock SB2 schließt die NAND-Ketten mit SGD-Zellen SGD2 ein, die an die zweite SGD-Leitung gekoppelt und derart eingerichtet sind, dass sie mit einer zweiten SGD-Leitungsspannung vorgespannt sind, der dritte Unterblock SB3 schließt die NAND-Ketten mit SGD-Zellen SGD3 ein, die an die dritte SGD-Leitung gekoppelt und derart eingerichtet sind, dass sie mit einer dritten SGD-Leitungsspannung vorgespannt sind, und der vierte Unterblock SB4 schließt die NAND-Ketten mit SGD-Zellen SGD4 ein, die an die vierte SGD-Leitung gekoppelt und derart eingerichtet sind, dass sie mit einer vierten SGD-Leitungsspannung vorgespannt sind.
-
Außerdem kann ein Block von Speicherzellen (d. h. Speicherzellen, die Teil des gleichen Blocks sind) auf einer Unterblockebene oder sowohl auf einer Unterblockebene als auch auf einer Wortleitungsebene angeordnet, organisiert, getrennt und/oder gekennzeichnet sein. Eine Vielzahl von Speicherzellen MC, die Teil des gleichen Unterblocks sind, werden als ein Unterblock von Speicherzellen bezeichnet. Anders ausgedrückt handelt es sich bei einem Unterblock von Speicherzellen um Speicherzellen von NAND-Ketten mit SGD-Zellen, die mit der gleichen SGD-Leitung gekoppelt sind und/oder eingerichtet sind, um mit der gleichen SGD-Leitungsspannung vorgespannt zu sein.
-
Außerdem wird eine Vielzahl von Speicherzellen, die Teil des gleichen Unterblocks sind und die auch in der gleichen Wortleitungsschicht angeordnet sind und/oder die derart eingerichtet sind, dass ihre Steuergates durch die gleiche Wortleitung und/oder mit der gleichen Wortleitungsspannung vorgespannt sind, als eine Wortleitungszellgruppe von Speicherzellen bezeichnet. Anders ausgedrückt ist eine Wortleitungszellgruppe von Speicherzellen eine Vielzahl oder eine Sammlung von Speicherzellen, die an die gleiche Wortleitungsschicht gekoppelt sind und die Teil von NAND-Ketten sind, die eingerichtet sind, um mit der gleichen SGD-Leitungsspannung vorgespannt zu sein.
-
Eine einzelne Wortleitungsschicht kann eine Vielzahl von Wortleitungszellgruppen derart einschließen, dass die Speicherzellen, die in einer einzelnen Wortleitungsschicht angeordnet sind, in eine Vielzahl von Wortleitungszellgruppen organisiert oder angeordnet sind. Speicherzellen, die an die gleiche Wortleitungsschicht gekoppelt sind, aber Teil von NAND-Ketten mit SGD-Transistoren sind, die an verschiedene SGD-Leitungen gekoppelt sind, sind Teil verschiedener Wortleitungszellgruppen. In bestimmten beispielhaften Konfigurationen ist die Anzahl von Wortleitungszellgruppen, die an eine einzelne Wortleitungsschicht gekoppelt sind, gleich der Anzahl von SGD-Leitungen eines Blocks. Außerdem kann die Anzahl von Speicherzellen einer einzelnen Wortleitungszellgruppe gleich der m-Anzahl von Bitleitungen BL1 bis BLm sein, sodass jede Speicherzelle einer Wortleitungszellgruppe elektrisch an eine andere der m-Anzahl von Bitleitungen BL1 bis Blm angeschlossen ist.
-
Außerdem sind die Speicherzellen eines Blocks oder der Speicherzellenstruktur 142 allgemein derart eingerichtet, dass sie Daten als Bits oder Binärziffern speichern, wobei jedes Bit entweder einen logischen Binärwert 0 oder einen logischen Binärwert 1 aufweist. Eine einzelne Speicherzelle kann eingerichtet sein, um entweder ein einzelnes Bit oder eine Vielzahl von Bits zu speichern. Ein Bit oder Bits, die eine einzelne Speicherzelle speichert, werden als ein Datenwert bezeichnet. Anders ausgedrückt ist ein Datenwert ein n-Bit-Binärwert, den eine einzelne Speicherzelle speichert, wobei n die Anzahl von Bits des Binärwerts ist und wobei die Anzahl n eins oder mehr ist. Die Anzahl möglicher Datenwerte, die eine einzelne Speicherzelle speichern kann, hängt von der n-Anzahl von Bits ab, zu deren Speicherung sie eingerichtet ist. Insbesondere ist die Anzahl möglicher Datenwerte, die eine einzelne Speicherzelle speichern kann, 2n.
-
Speicherzellen können in Abhängigkeit von der Anzahl von Bits, zu deren Speicherung sie eingerichtet sind, als Single Level Cells oder Multi Level Cells bezeichnet werden. Eine Single Level Cell, die als eine SLC-Zelle (oder einfach SLC) bezeichnet wird, ist eine Speicherzelle, die eingerichtet ist, um ein einzelnes oder ein Bit von Daten zu speichern. Eine Multi Level Cell, die als eine MLC-Zelle (oder einfach MLC) bezeichnet wird, ist eine Speicherzelle, die eingerichtet ist, um mehrere (d. h. zwei oder mehr) Bits von Daten zu speichern. Beispielhafte Anzahlen von Bits, die eine MLC-Zelle speichern kann, schließen 2, 3 oder 4 ein, wenngleich MLC-Zellen, die mehr als 4 Bits speichern, möglich sein können.
-
Im Allgemeinen sind bestimmte Sammlungen von Speicherzellen eingerichtet, um die gleiche Anzahl von Bits zu speichern. Zum Beispiel sind Speicherzellen, die Teil der gleichen Wortleitungszellgruppe, Teil des gleichen Blocks oder Teil der gleichen Speicherzellenstruktur 142 sind, eingerichtet, um die gleiche Anzahl von Bits zu speichern. In diesem Zusammenhang speichert eine gegebene Sammlung von Speicherzellen (z. B. Speicherzellen der gleichen Wortleitungszellgruppe, des gleichen Blocks, der gleichen Speicherzellenstruktur usw.) Daten auf einer Bit-pro-Zelle-Basis. Jede Speicherzelle der gegebenen Sammlung speichert die gleiche Anzahl von Bits pro Zelle.
-
Außerdem kann eine Speicherzellenstruktur 142, einschließlich Blöcken und Wortleitungszellgruppen der Speicherzellenstruktur 142, Daten als Seiten speichern. Hierin ist eine Seite eine einzelne Einheit von Daten, die eine einzelne Wortleitungszellgruppe von Speicherzellen speichert. Die Anzahl von Seiten, die eine einzelne Wortleitungszellgruppe speichert, hängt von der Anzahl von Bits pro Zelle ab, zu deren Speicherung die Speicherzellen der einzelnen Wortleitungszellgruppe eingerichtet sind. Als Beispiele ist eine Wortleitungszellgruppe von SLC-Zellen eingerichtet, um eine einzelne oder eine Seite von Daten zu speichern; ist eine Wortleitungszellgruppe von MLC-Zellen, die eingerichtet ist, um zwei Bits pro Zelle zu speichern, eingerichtet, um zwei Seiten von Daten zu speichern; und ist eine Wortleitungszellgruppe von MLC-Zellen, die eingerichtet ist, um drei Bits pro Zelle zu speichern, eingerichtet, um drei Seiten von Daten zu speichern.
-
Außerdem kann eine Speicherzellenstruktur 142 Daten gemäß einem oder mehreren Speicherschemata speichern. Wie hierin verwendet, ist ein Speicherschema ein allgemeiner Plan, einschließlich eines vordefinierten Satzes von Aktionen und eines vordefinierten Satzes von Parametern, den ein Speichersystem implementiert, um Daten zu speichern. Hierin werden zwei allgemeine Arten von Speicherschemata beschrieben, einschließlich eines Bits-pro-Zellen-Speicherschemas und eines inhaltsadressierbaren Speicher- (CAM) Schemas. Jede allgemeine Art schließt ferner spezifische Arten von Speicherschemata ein, wie nachstehend im Einzelnen beschrieben.
-
Ein Bits-pro-Zelle-Speicherschema identifiziert oder definiert die Anzahl von Bits pro Zelle, zu deren Speicherung Speicherzellen einer bestimmten Sammlung eingerichtet sind. Die Komponenten des Speichersystems 100, einschließlich der Schaltungskomponenten auf einem gegebenen Speicherchip, sind eingerichtet, um Speicheroperationen an der bestimmten Sammlung gemäß einem gegebenen Bits-pro-Zelle-Speicherschema durchzuführen, um Daten in die bestimmte Sammlung von Speicherzellen zu programmieren und/oder von dieser zu lesen.
-
Speicherzellen verschiedener Speichertechnologien können Daten gemäß verschiedenen Speicherschemata speichern. Außerdem können Speicherzellen der gleichen Speichertechnologie Daten gemäß verschiedenen Speicherschemata speichern. Zum Beispiel können Speicherzellen der gleichen Speichertechnologie, die sich jedoch in verschiedenen Speichersystemen oder in dem gleichen Speichersystem, aber in verschiedenen Speicherchips oder in verschiedenen Blöcken oder Ebenen des gleichen Speicherchips oder sogar verschiedenen Wortleitungsschichten oder verschiedenen Wortleitungszellgruppen des gleichen Blocks befinden, Daten zumindest in Bezug auf die Anzahl von Bits pro Zelle, zu deren Speicherung die verschiedenen Speicherzellen eingerichtet sind, gemäß verschiedenen Bits-pro-Zelle-Speicherschemata speichern.
-
Zumindest für die NAND-Speichertechnologie können die NAND-Speicherzellen eingerichtet sein, um Daten gemäß einem von mehreren verschiedenen Bits-pro-Zelle-Speicherschemata zu speichern, wobei jedes Bits-pro-Zelle-Speicherschema mit einer verschiedenen Anzahl von Bits pro Zelle verbunden ist oder diese identifiziert. In mindestens einigen beispielhaften Konfigurationen können einige NAND-Speicherzellen Daten gemäß einem Bits-pro-Zelle-Speicherschema speichern, während andere NAND-Speicherzellen Daten gemäß einem anderen Bits-pro-Zelle-Speicherschema speichern. Entsprechend können zwei verschiedene Sammlungen von NAND-Speicherzellen, die sich in verschiedenen Speichersystemen oder in dem gleichen Speichersystem, aber in verschiedenen Dies, Ebenen, Blöcken, Wortleitungsschichten oder Wortleitungszellgruppen befinden, verschiedenen Anzahlen von Bits pro Zelle gemäß verschiedenen Bits-pro-Zelle-Speicherschemata speichern. Zur Veranschaulichung kann eine Sammlung von NAND-Speicherzellen als SLC-Zellen eingerichtet sein und kann eine andere Sammlung von NAND-Speicherzellen als MLC-Zellen eingerichtet sein.
-
Außerdem kann die gleiche Speicherzelle (oder die gleiche Sammlung von Speicherzellen) eingerichtet sein, um verschiedene Anzahlen von Bits pro Zelle gemäß verschiedenen Bits-pro-Zelle-Speicherschema zu verschiedenen Zeitpunkten zu speichern. Zur Veranschaulichung kann eine Speicherzelle in einem Beispiel zu einem Zeitpunkt als eine SLC-Zelle eingerichtet werden und dann zu einem späteren Zeitpunkt als eine MLC-Zelle neu eingerichtet werden. Als ein weiteres Beispiel kann eine Speicherzelle in einem Beispiel zu einem Zeitpunkt als eine MLC-Zelle eingerichtet werden und dann zu einem späteren Zeitpunkt als eine SLC-Zelle neu eingerichtet werden. Als ein weiteres Beispiel kann eine Speicherzelle zu einem Zeitpunkt als eine MLC-Zelle eingerichtet werden, die eine erste Anzahl von Bits pro Zelle speichert, und dann zu einem späteren Zeitpunkt als eine MLC-Zelle neu eingerichtet werden, die eine zweite Anzahl von Bits pro Zelle speichert, wobei die erste und die zweite Anzahl voneinander verschieden sind, wobei die erste Anzahl entweder kleiner oder größer als die zweite Anzahl ist.
-
Außerdem kann ein Bits-pro-Zellen-Speicherschema, das eine bestimmte Anzahl von Bits pro Zelle identifiziert, eine Vielzahl möglicher Datenwerte identifizieren, die eine Speicherzelle gemäß dem Bits-pro-Zellen-Speicherschema speichern kann. Ein Bits-pro-Zellen-Speicherschema kann ferner Pegel, Werte, Größen oder Zustände oder vorbestimmte Bereiche von Pegeln, Werten, Größen oder Zuständen von Speicherparametern definieren, die Speicherparameter aufweisen oder auf die Speicherparameter von Speicherzellen eingestellt werden können, damit die Speicherzellen die möglichen Datenwerte speichern, die unter dem Bits-pro-Zellen-Speicherschema definiert sind.
-
Allgemein speichert eine Speicherzelle Daten, indem ein zugehöriger Speicherparameter (alternativ oder anderweitig als Charakteristik, Eigenschaft oder Merkmal bezeichnet) auf eine Ebene, einen Wert, eine Größe oder einen Zustand gesetzt wird. Der zugehörige Parameter ist einstellbar oder variabel und kann gesteuert werden, indem die Steuerleitungen, die an die Speicherzellen gekoppelt sind, auf bestimmten Ebenen, zu bestimmten Zeitpunkten, während bestimmten Speicheroperationen und gemäß bestimmten Speicherschemata vorgespannt werden. Innerhalb eines Bits-pro-Zelle-Speicherschemas, das einen Satz von Datenwerten definiert, kann eine Speicherzelle Daten auf einem bestimmten der Datenwerte speichern, indem ihr Speicherparameter auf eine Ebene, einen Wert, eine Größe oder einen Zustand oder innerhalb eines vorbestimmten Bereichs von Ebenen, Werten, Größen oder Zuständen gesetzt wird. Die Ebene, der Wert, die Größe oder der Zustand, auf der/dem sich die Speicherzelle befindet oder auf die/den sie gesetzt ist, entspricht dem Datenwert des Satzes, den die Speicherzelle speichert. Eine Speicherzelle kann eingerichtet sein, um einen anderen Wert zu speichern oder um den Datenwert der Daten, die sie speichert, von einem Datenwert in einen anderen Datenwert zu ändern, indem der Speicherparameter auf eine andere Ebene, einen anderen Wert, eine andere Größe oder einen anderen Zustand geändert oder eingestellt wird.
-
Der Speicherparameter, dass eine Speicherzelle Daten speichern muss, hängt von der Speichertechnologie ab und kann über verschiedene Speichertechnologien variieren. Für die NAND-Technologie ist der Speicherparameter die Schwellenspannung. Mindestens in Bezug auf NAND-Speicherzellen ist eine Schwellenspannung einer Speicherzelle eine Spannung, die an ein Steuergate der Speicherzelle angelegt wird, an der die Speicherzelle leitend wird. Die Ebene (anderweitig als Wert oder Größe bezeichnet) der Schwellenspannung hängt von der Menge an elektrischer Ladung ab, die die Speicherzelle speichert oder hält, oder ist proportional zu dieser. Je mehr Ladung eine Speicherzelle speichert, desto höher ist ihre Schwellenspannung, und je weniger Ladung eine Speicherzelle speichert, desto niedriger ist ihre Schwellenspannung. Entsprechend wird der Datenwert, den die Speicherzelle speichert, gesetzt, indem die Schwellenspannung der Speicherzelle auf eine bestimmte Ebene gesetzt wird, und wird der Datenwert eingestellt oder geändert, indem die Schwellenspannung auf eine andere Ebene oder innerhalb eines anderen Bereichs von Ebenen geändert wird.
-
Außerdem speichern die Speicherzellen für die NAND-Technologie Daten, indem sie in Speicherzuständen eingerichtet werden. Wie hierin verwendet, ist ein Speicherzustand ein Identifikator, der einen Datenwert von Daten identifiziert, die eine Speicherzelle speichert, speichern kann oder speichern soll. Ein Bits-pro-Zelle-Speicherschema identifiziert oder definiert eine zugehörige Vielzahl oder einen zugehörigen Satz von Speicherzuständen, bei denen eine Speicherzelle eingerichtet werden kann. Jeder Speicherzustand identifiziert oder entspricht einem der Vielzahl von Datenwerten, die durch das Bits-pro-Zelle-Speicherschema identifiziert oder definiert werden, und/oder ist damit verbunden. Entsprechend speichert eine Speicherzelle, die in einem gegebenen Speicherzustand eingerichtet ist, einen Datenwert, der dem gegebenen Speicherzustand entspricht. Eine Speicherzelle kann einen anderen Datenwert speichern, indem sie in einen anderen Speicherzustand eingerichtet wird.
-
Für ein gegebenes Bits-pro-Zelle-Speicherschema schließen die Speicherzustände einen gelöschten Zustand und einen oder mehrere Programmierzustände ein. Ein gelöschter Zustand ist ein Speicherzustand, in dem eine Speicherzelle eingerichtet ist, wenn sie gelöscht ist. Für mindestens einige Beispielkonfigurationen ist der gelöschte Zustand der Speicherzustand, in dem sich alle einer Sammlung von Speicherzellen zu Beginn eines Programmiervorgangs befinden, um mindestens einige der Speicherzellen der Sammlung zu programmieren. Ein Programmierzustand ist ein Speicherzustand, in dem sich eine Speicherzelle befindet, nachdem sie einem Programmiervorgang unterzogen wurde. Zu einem gegebenen Zeitpunkt kann sich eine Speicherzelle in dem gelöschten Zustand oder in einem der Programmierzustände befinden.
-
Außerdem weist jeder Speicherzustand für ein gegebenes Bits-pro-Zelle-Speicherschema einen zugehörigen Bereich von Schwellenspannungsebenen auf, entspricht einem solchen oder ist mit einem solchen verbunden, wobei jeder Bereich durch eine obere Schwellenspannungsebene und eine untere Schwellenspannungsebene eingegrenzt ist. Anders ausgedrückt kann ein gegebenes Bits-pro-Zelle-Speicherschema eine Vielzahl von nicht überlappenden Schwellenspannungsbereichen definieren, wobei jeder Bereich mit einem jeweiligen der Vielzahl von Speicherzuständen, die durch das gegebene Bits-pro-Zelle-Speicherschema definiert oder identifiziert werden, verbunden ist oder einem solchen entspricht. Jeder Bereich wiederum weist einen jeweiligen der Datenwerte auf, entspricht diesem oder ist damit verbunden. Auf diese Weise stellt ein Bits-pro-Zelle-Speicherschema eine Eins-zu-eins-Entsprechung zwischen den Schwellenspannungsbereichen, den Speicherzuständen und den Datenwerten her. Speicherzellen werden gemäß der Eins-zu-eins-Entsprechung programmiert und gelesen. Das heißt, dass eine Speicherzelle, die mit einer Schwellenspannungsebene innerhalb eines gegebenen Schwellenspannungsbereichs eingerichtet ist, in dem Speicherzustand eingerichtet ist, der mit dem gegebenen Schwellenspannungsbereich verbunden ist, und wiederum Daten speichert, die einen Datenwert aufweisen, der mit dem gegebenen Schwellenspannungsbereich und dem entsprechenden Speicherzustand verbunden ist.
-
Für bestimmte Ausführungsformen ist der gelöschte Zustand mit dem niedrigsten Schwellenspannungsbereich verbunden. Die Programmierzustände sind mit fortlaufend oder sequentiell höheren Schwellenspannungsbereichen von dem Bereich verbunden, der mit dem gelöschten Zustand verbunden ist.
-
Außerdem können die Speicherschemata die Speicherzustände in einer beliebigen von verschiedenen Weisen kennzeichnen oder bezeichnen, einschließlich als nicht einschränkende Beispiele alphabetisch, numerisch oder alphanumerisch. In bestimmten beispielhaften Konfigurationen wird der gelöschte Zustand der gelöschte Zustand genannt und werden die Programmierzustände mit Buchstaben, Zahlen oder einer Kombination davon bezeichnet, indem höhere Buchstaben im Alphabet oder höhere Zahlen mit höheren Schwellenspannungsbereichen verbunden werden. Als Beispiele ist ein Speicherzustand C mit einem höheren Schwellenspannungsbereich als ein Speicherzustand A verbunden und ist ein Speicherzustand 8 mit einem höheren Schwellenspannungsbereich als ein Speicherzustand 1 verbunden. Verschiedene Weisen des Kennzeichnens oder Bezeichnens von Speicherzuständen sind möglich.
-
Außerdem können Speicherzustände relativ zueinander als höhere Speicherzustände und niedrigere Speicherzustände bezeichnet werden. Ein erster Speicherzustand ist ein höherer Speicherzustand als ein zweiter Speicherzustand, wobei der erste Speicherzustand mit einem höheren Schwellenspannungsbereich verbunden ist als der Schwellenspannungsbereich, mit dem der zweite Speicherzustand verbunden ist. Außerdem ist ein erster Speicherzustand ein niedrigerer Speicherzustand als ein zweiter Speicherzustand, wobei der erste Speicherzustand mit einem niedrigeren Schwellenspannungsbereich verbunden ist als der Schwellenspannungsbereich, mit dem der zweite Speicherzustand verbunden ist.
-
Außerdem kann die Weise, in der Datenwerte den Speicherzuständen und/oder den Schwellenspannungsbereichen entsprechen, variieren und, in bestimmten Ausführungsformen, kann die Weise, in der Datenwerte den Speicherzuständen und/oder Schwellenspannungsbereichen entsprechen oder diesen zugewiesen sind, von einem bestimmten Codeschema, wie zum Beispiel dem Gray-Codeschema, abhängen.
-
In einer Implementierung kann eine Sammlung von Speicherzellen, die in den gleichen Speicherzustand programmiert sind, als Ergebnis der Programmierung eine zugehörige Sammlung von Schwellenspannungen aufweisen. Die Schwellenspannungen können als eine Schwellenspannungswahrscheinlichkeitsverteilung oder einfach eine Schwellenverteilung der Anzahl von Speicherzellen in der Sammlung in Abhängigkeit von der Schwellenspannung dargestellt werden.
-
Ein gegebenes Bits-pro-Zelle-Speicherschema kann eine Modell-, Referenz-, Soll- oder Zielschwellenspannungsverteilung, die in der Form einer kontinuierlichen Wahrscheinlichkeitsverteilung, wie zum Beispiel einer Gauß'schen Verteilung, vorliegen kann, für jeden der Speicherzustände und zugehörigen Schwellenspannungsbereiche, die durch das gegebene Speicherschema definiert sind, aufweisen. Eine Modellschwellenspannungsverteilung kann ein Modell einer Sollschwellenspannungsverteilung darstellen, die eine Sammlung von Speicherzellen, die in den gleichen Speicherzustand programmiert sind, aufweisen soll. Die unteren und oberen Enden der Modellschwellenspannungsverteilungen können an den oberen und unteren Schwellenspannungsebenen der Bereiche, mit denen jede der Modellschwellenspannungsverteilungen verbunden ist, ausgerichtet sein, oder sie können diesen entsprechen.
-
Die 5A-5D sind Darstellungen der Schwellenspannungsverteilungskurven für unterschiedliche Bits-pro-Zelle-Speicherschema zum Speichern von unterschiedlichen Anzahlen von Bits in Speicherzellen. Die Schwellenspannungsverteilungskurven sind für Anzahlen von Speicherzellen in Abhängigkeit von der Schwellenspannung Vth aufgetragen. Darüber hinaus zeigen die 5A-5D den Speicherzustand, den Datenwert und den Schwellenspannungsbereich, mit denen jede Schwellenspannungsverteilungskurve verbunden ist. 5A zeigt Schwellenspannungsverteilungskurven für ein SLC-Speicherschema zum Speichern eines Datenbits pro Speicherzelle. Die 5B-5D zeigen eine Schwellenspannungsverteilungskurve für MLC-Speicherschemata. Insbesondere zeigt 5B Schwellenspannungsverteilungskurven für ein MLC-Speicherschema zum Speichern von zwei Datenbits pro Speicherzelle; 5C zeigt Schwellenspannungsverteilungskurven für ein MLC-Speicherschema zum Speichern von drei Datenbits pro Speicherzelle; und 5D zeigt Spannungsverteilungskurven für ein MLC-Speicherschema zum Speichern von vier Datenbits pro Speicherzelle. Ähnliche Schwellenspannungsverteilungskurven können für andere Speicherschemata definiert oder erzeugt werden, die zum Speichern von anderen Anzahlen von Bits als (beispielsweise mehr als) zwei, drei oder vier Bits pro Zelle verwendet werden.
-
Bezugnehmend auf 5A kann bei Speicherzellen, die für die Speicherung von einem Datenbit eingerichtet sind, jede der Speicherzellen in einem Löschzustand Er oder einem Programmierzustand A eingerichtet sein. Bezugnehmend auf 5B kann bei Speicherzellen, die für die Speicherung von zwei Datenbits eingerichtet sind, jede der Speicherzellen in einem Löschzustand Er oder in einem von drei Programmierzuständen A, B, C eingerichtet sein. Bezugnehmend auf 5C kann bei Speicherzellen, die zum Speichern von drei Bits eingerichtet sind, jede der Speicherzellen in einem gelöschten Zustand Er oder einem von sieben Programmierzuständen A, B, C, D, E, F, G eingerichtet sein. Bezugnehmend auf 5D kann bei Speicherzellen, die eingerichtet sind, um vier Bits zu speichern, jede der Speicherzellen in einem gelöschten Zustand Er oder einem von fünfzehn Programmierzuständen 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F eingerichtet sein. Wie in den 5A-5D gezeigt, ist jede Spannungsverteilungskurve dem gelöschten Zustand oder einem der Programmierzustände zugehörig. Auch werden hierin die Begriffe „Speicherzustand“ und „Programmierzustand“ synonym verwendet. Beispielsweise werden die Begriffe „Speicherzustand A“ und „Programmierzustand A“ austauschbar verwendet, um auf denselben Speicherzustand Bezug zu nehmen.
-
Darüber hinaus ist in den 5A-5D der zugehörige Speicherzustand und Datenwert innerhalb oder unter jeder der Schwellenspannungsverteilungskurven enthalten. Beispielsweise zeigt 5A die linke Schwellenspannungsverteilungskurve in Verbindung mit dem gelöschten Zustand Er und einem logischen Wert von 1, und die rechte Schwellenspannungsverteilungskurve in Verbindung mit dem Speicherzustand A und einem logischen Wert von 0. Für einige SLC-Speicherschemata wird der Speicherzustand A auch als „Programmzustand“ bezeichnet, da SLC-Speicherschemata nur einen Programmzustand aufweisen.
-
Bei den in den 5B-5D dargestellten beispielhaften MLC-Speicherschemata ändern sich die Datenwerte sequentiell mit zunehmenden Speicherzuständen und Schwellenspannungsbereichen nach einem Gray-Codeschema. Bezugnehmend auf 5B speichern beispielsweise Speicherzellen, die im Löschzustand Er eingerichtet sind, den Datenwert „11“; Speicherzellen, die im Speicherzustand A eingerichtet sind, speichern den Datenwert „01“; Speicherzellen, die im Speicherzustand B eingerichtet sind, speichern den Datenwert „00“; und Speicherzellen, die im Speicherzustand B eingerichtet sind, speichern den Datenwert „10.“ Ähnliche Beziehungen oder Entsprechungen zwischen Datenwerten, Speicherzuständen und Schwellenspannungsbereichen können für Speicherzellen gemacht werden, die programmiert sind, um drei Bits (5C), vier Bits (5D) oder mehr als vier Anzahlen von Bits pro Zelle zu speichern.
-
Darüber hinaus ist, wie in den 5A-5D veranschaulicht, jeder Programmierzustand mit einem entsprechenden Prüfspannungsimpulspegel (oder nur Prüfimpulspegel) Vv und einem Lesespannungsimpulspegel (oder nur Leseimpulspegel) Vr verbunden. Beispielsweise sind in Bezug auf die Speicherschemata der 5A-5D ein Prüfimpulspegel VvA und ein Leseimpulspegel VrA dem Speicherzustand A, der Prüfimpulspegel VvB und der Leseimpulspegel VrB dem Speicherzustand B und der Prüfimpulspegel VvC und der Leseimpulspegel VrC dem Speicherzustand C zugeordnet. Ähnliche Prüf- und Leseimpulspegel Vv, Vr sind mit anderen Speicherzuständen verbunden, wie z. B. den Speicherzuständen D-G und den Speicherzuständen 1-9, wie in 5C und 5D dargestellt.
-
Wie in den 5A-5D dargestellt, geben die Prüf- und Leseimpulspegel Vv, Vr die unteren Grenzen oder Enden der Schwellenspannungsverteilungskurven an oder sind relativ dazu positioniert. Wie weiter unten näher beschrieben, können die Prüfimpulspegel Vv zur Einstellung der Pegel ausgewählter Wortleitungsspannungen während Programmiervorgängen verwendet werden, um die Programmierzustände der Speicherzellen zu prüfen, und die Leseimpulspegel Vr können zur Einstellung der Pegel ausgewählter Wortleitungsspannungen während Lesevorgängen verwendet werden, um Daten aus den Speicherzellen zu lesen.
-
Wie erwähnt, ist eine andere Art von Speicherschema, zu dessen Implementierung das Speichersystem 100 eingerichtet sein kann oder unter dem das Speichersystem 100 Daten speichert und abruft, ein inhaltsadressierbares Speicher- (CAM) Schema. Unter einem CAM-Speicherschema werden Daten in den Speicherchips 104 als Schlüsseldatensatzpaare (auch als Schlüsselwertpaare oder Schlüsseldatenpaare bezeichnet) gespeichert. Jedes Schlüsseldatensatzpaar schließt ein Paar Datensätze ein, einschließlich eines ersten Datensatzes, der als Schlüssel bezeichnet wird, und eines zweiten Datensatzes, der als Datensatz bezeichnet wird. Eine Identifizierung eines Schlüssels eines gegebenen Schlüsseldatensatzpaars zeigt an, wo der Datensatz des gegebenen Paars in den Speicherchips 104 gespeichert ist. Verschiedene Wege der Implementierung eines CAM-Speicherschemas, so dass ein Schlüssel anzeigt, wo ein zugehöriger Datensatz gespeichert ist, können möglich sein. In einigen beispielhaften Implementierungen entspricht eine Adresse, an der ein Schlüssel gespeichert ist, einer Adresse, an welcher der Datensatz gespeichert ist. Somit kann durch Kenntnis der Schlüsseladresse der zugehörige Datensatz abgerufen werden. In einigen beispielhaften Konfigurationen, wie nachstehend im Einzelnen beschrieben, werden Schlüssel in Ketten gespeichert, die mit Bitleitungen gekoppelt sind. Eine Spalten- oder Bitleitungsadresse, die als Adressoffset einer Bitleitung angesehen werden kann, die mit einer Kette gekoppelt ist, die einen Schlüssel speichert, kann eine Adresse identifizieren, an welcher der zugehörige Datensatz gespeichert ist.
-
CAM-Speicherschemata können für Datenbankanwendungen nützlich oder geeignet sein, bei denen die Speicherchips 104 eine Vielzahl von Datensätzen speichern. Jeder Datensatz kann eine eindeutige Kennung - wie einen Namen eines Orts, einer Person oder eines Dings - und ein oder mehrere Attribute aufweisen. Ein Datensatz kann seine Attribute in Feldern organisieren. Das Speichersystem 100 kann die Attribute oder eine Kombination von Attributen als Schlüssel in den Speicherchips 104 speichern. Jeder Datenwert eines Schlüssels kann einen Wert (oder Werte) eines oder mehrerer Attribute darstellen. Der CAM-Speicher kann über eine oder mehrere Schlüssel durchsucht werden. In einigen Ausführungsformen speichert das Speichersystem 100 die Felder der Schlüssel getrennt von den Datensätzen, und der Schlüssel ist im Vergleich zu dem vollständigen Datensatz relativ kurz (in der Anzahl von Bits). In solchen Ausführungsformen speichert das Speichersystem 100 die Schlüssel in einer Bitleitungsanordnung und speichert den Rest der Datensätze in einer Seitenanordnung.
-
Eine elektronische Vorrichtung außerhalb des Speichersystems 100, wie beispielsweise eine Hostvorrichtung, möchte möglicherweise eine Datensatzdatenbank durchsuchen, die Datensätze einschließt, um zu bestimmen, welcher der Datensätze einen bestimmten Attributwert oder eine bestimmte Kombination von Attributwerten aufweist. Der/die bestimmte(n) Attributwert(e) kann/können als Suchkriterien betrachtet werden. Um die Suche durchzuführen, kann die elektronische Vorrichtung einen Zielschlüssel an das Speichersystem 100 ausgeben oder senden, der die Suchkriterien (d. h. den/die Attributwert(e)) identifiziert. Nach Empfang des Zielschlüssels kann das Speichersystem 100 die Vielzahl von Schlüsseln durchsuchen, die es speichert, um zu sehen, welche Schlüssel den/die in dem Zielschlüssel identifizierten Attributwert(e) einschließen. Das Speichersystem 100 kann die Vielzahl von Schlüsseln durchsuchen, indem es einen CAM-Lesevorgang durchführt. Verschiedene Ausführungsformen eines CAM-Lesevorganges werden nachstehend im Einzelnen beschrieben. Ein Schlüssel, der den/die in dem Zielschlüssel identifizierten Attributwert (e) enthält, stimmt mit dem Zielschlüssel überein. Dementsprechend wird ein Schlüssel, der den/die in dem Zielschlüssel identifizierten Attributwert(e) einschließt, als übereinstimmender Schlüssel bezeichnet, und eine Instanz eines Schlüssels, der mit dem Zielschlüssel übereinstimmt, wird als Schlüsselübereinstimmung oder Datensatzübereinstimmung bezeichnet. Eine Anzahl von Schlüsselübereinstimmungen ist die Anzahl von Schlüsseln, die mit den Zielschlüsseln übereinstimmen, oder der/die mit der Teilmenge von Schlüsseln assoziierte(n) Wert(e).
-
Beim Identifizieren der übereinstimmenden Schlüssel weiß das Speichersystem 100, wo die den übereinstimmenden Schlüsseln zugehörigen Datensätze gespeichert sind. Dementsprechend liest das Speichersystem 100 als Reaktion auf das Identifizieren oder Bestimmen der übereinstimmenden Schlüssel die zugehörigen Datensätze aus den Speicherchips und gibt die zugehörigen Datensätze an die elektronische Vorrichtung zurück.
-
Das Abrufen der zugehörigen Datensätze kann auf verschiedenen Wegen möglich sein. Zum Beispiel kann die Steuerung 102 einen Zielschlüssel von einem Host empfangen und als Reaktion den Zielschlüssel an einen Speicherchip 104 senden, der Schlüssel speichert. Als Reaktion darauf sucht der Speicherchip 104 nach übereinstimmenden Schlüsseln, indem er einen CAM-Lesevorgang durchführt. Nach dem Identifizieren eines übereinstimmenden Schlüssels kann der Speicherchip 104 den übereinstimmenden Schlüssel oder eine durch den übereinstimmenden Schlüssel angegebene Adresse zurück an die Steuerung 102 bereitstellen. Die Steuerung 102 kann dann diesen übereinstimmenden Schlüssel oder die durch den übereinstimmenden Schlüssel angegebene Adresse verwenden, um einen weiteren Lesebefehl an die Speicherchips 104 auszugeben, der wiederum die Speicherchips 104 auffordert, einen Datensatz abzurufen, der dem übereinstimmenden Schlüssel zugehörig ist, und den Datensatz an die Steuerung 102 zurückzusenden. Die Steuerung 102 kann dann den abgerufenen Datensatz an den Host senden. In anderen beispielhaften Konfigurationen ist, wenn ein Speicherchip 104 einen übereinstimmenden Schlüssel in Folge eines CAM-Lesevorgangs identifiziert, dieser in der Lage, die durch den übereinstimmenden Schlüssel angegebene Adresse zu verwenden, um den zugehörigen Datensatz aus den Speicherchips 104 zu lesen und den Datensatz an die Steuerung 102 zurückzugeben, ohne zuvor den übereinstimmenden Schlüssel und/oder seine zugehörige Adresse an die Steuerung 102 senden zu müssen.
-
Als beispielhafte Veranschaulichung können die Speicherchips 104 eine Datensatzdatenbank speichern, die eine Vielzahl von Datensätzen einschließt, die Automobile identifizieren, wobei jeder Datensatz zu einem spezifischen Automobil gehört. Jeder Datensatz schließt eine Vielzahl von Attributwerten ein, die einer Vielzahl von Attributen zugehörig sind, die zu einem bestimmten Kraftfahrzeug gehören. Zu beispielhaften Attributen gehören beliebige der verschiedenen Attributen oder Eigenschaften eines Automobils, wie Hersteller, Modell, Typ (Limousine, Lastkraftwagen, Crossover, SUV usw.), Preis, Jahr, Kilometerstand, Außenfarbe usw. Außerdem kann jeder Datensatz eine Vielzahl von Attributwerten aufweisen, die der Vielzahl von Attributen des Automobildatensatzes zugehörig sind.
-
In Fortführung des Beispiels kann eine elektronische Vorrichtung eine Sammlung von Datensätzen finden wollen, die Kraftfahrzeuge identifizieren, die Lastkraftwagen mit einem blauen Äußeren sind, die unter 100.000 Meilen haben. Jeder dieser Begriffe - Lastkraftwagen, blaues Äußere und 100.000 - stellt einen Attributwert der Attribute Autotyp, Außenfarbe und Kilometerleistung dar. Um diese Datensätze zu finden, gibt die elektronische Vorrichtung einen Zielschlüssel aus, der Attributwerte für Lastkraftwagen, blaues Äußeres und 100.000 einschließt. Als Reaktion auf den Empfang des Zielschlüssels identifiziert das Speichersystem 100, welche Schlüssel den/die Attributwert(e) LKW, blaues Äußeres und 100.000 aufweisen. Nach dem Identifizieren der übereinstimmenden Schlüssel weiß das Speichersystem 100, wo in den Speicherchips 104 die entsprechenden Datensätze gespeichert werden, liest diese Datensätze aus den Speicherchips 104 und gibt die Datensätze an die elektronische Vorrichtung zurück. Es ist zu beachten, dass in diesem speziellen Beispiel das Speichersystem 100 nicht die Fähigkeit hätte, die spezielle CAM-Speicherstruktur schnell nach bestimmten Werten zu durchsuchen, sondern nur nach einer Übereinstimmung,. Daher würde in diesem Beispiel das Speichersystem 100 nach einem Lastkraftwagen mit einem blauen Äußeren suchen, und aus allen Datensätzen, die mit dieser Beschreibung übereinstimmen, wäre der Kilometerstand eine zweite Suchaufgabe, die vom Host und nicht vom Speicher durchgeführt werden soll. Dennoch würde die Fähigkeit, alle Datensätze nur auf die übereinstimmenden Typen („LKW‟) und Farben („Blau“) zu reduzieren, nur eine sehr kleine Teilmenge zur Kilometerstandssuche an den Host gesendet. Noch eine andere Option wäre, um immer noch eine Kilometersuche zu ermöglichen, den Kilometerstand in Gruppen zu unterteilen, zum Beispiel wäre Gruppe-1 Kilometerstand von 0 bis 25 K, eine zweite Gruppe von 25 K+1 bis 50 K, eine dritte Gruppe von 50 K+1 bis 75 K usw. In diesem Fall würde jede Gruppe eine Schlüsselkombination erhalten, und da gezeigt wird, wie nach booleschen Ausdrücken mit mehreren Schlüsseln oder einem gleichen Schlüssel gesucht werden soll, könnte das Speichersystem 100 nach Datensätzen suchen, die einer logischen ODER-Operation der ersten vier Gruppen genügen.
-
Unter erneuter Bezugnahme auf 2B kann der Speicherchip 104 ferner eine Lese-/Schreibschaltung 144 einschließen, die eine Vielzahl oder eine p-Anzahl von Abtastblöcken (auch als Abtastmodule oder Abtastsysteme bezeichnet) 146 einschließt. Wie unten detaillierter beschrieben, sind die Abtastblöcke 146 derart eingerichtet, dass sie sich an einem parallelen Lesen von Daten aus oder Programmieren von Daten in Wortleitungszellgruppen von Speicherzellen beteiligen.
-
Das Speicher-Die 104 kann auch einen Zeilenadressdecodierer (oder einfach Zeilendecodierer) 148 und einen Spaltenadressdecodierer (oder einfach Spaltendecodierer) 150 einschließen. Der Zeilendecodierer 148, der auch als ein Wortleitungsdecodierer, ein x-Decodierer oder ein x-Draht-Decodierer bezeichnet werden kann, kann eine Zeilenadresse (auch als eine Wortleitungsadresse oder eine x-Adresse bezeichnet) decodieren und eine bestimmte Wortleitung in der Speicherzellenstruktur 142 auswählen, die der decodierten Zeilenadresse entspricht und/oder von dieser identifiziert wird, wenn Daten aus der Speicherzellenstruktur 142 gelesen oder in diese programmiert/geschrieben werden. Der Spaltendecodierer 150, der auch als ein Bitleitungsdecodierer, ein y-Decodierer oder ein y-Draht-Decodierer bezeichnet werden kann, kann eine Spaltenadresse (auch als eine Bitleitungsadresse oder eine y-Adresse bezeichnet) decodieren und eine bestimmte Bitleitung oder Gruppe von Bitleitungen in der Speicherzellenstruktur 142 auswählen, die der Spaltenadresse entspricht und/oder von dieser identifiziert wird, wenn Daten aus der Speicherzellenstruktur 142 gelesen oder in diese programmiert werden.
-
Außerdem kann das nichtflüchtige Speicher-Die 104 eine Peripherieschaltung 152 einschließen. Die Peripherieschaltung 152 kann eine Steuerlogikschaltung (auch als eine Steuerlogik, eine On-Chip-Steuerung oder eine On-Die-Steuerung bezeichnet) 154 einschließen, die mindestens in einigen beispielhaften Ausführungsformen als eine Zustandsmaschine implementiert sein kann, die eingerichtet ist, um On-Chip-Speicheroperationen zu steuern sowie Statusinformationen an die Steuerung 102 zu senden. Die Peripherieschaltung 152 kann auch einen On-Chip-Adressdecodierer 156 einschließen, der eine Adressschnittstelle zwischen einer von der Steuerung 102 und/oder einem Host verwendeten Adressierung und der von den Zeilen- und Spaltendecodierern 148, 150 verwendeten Adressierung bereitstellt. Außerdem kann die Peripherieschaltung 152 einen flüchtigen Speicher 158 einschließen. Eine beispielhafte Konfiguration des flüchtigen Speichers 158 kann Latches einschließen, obwohl andere Konfigurationen möglich sind.
-
Außerdem kann die Peripherieschaltung 152 eine Stromsteuerschaltung 160 einschließen, die eingerichtet ist, um Steuerleitungsspannungen (einschließlich Spannungsimpulsen) zu erzeugen und Steuerleitungen der Speicherzellenstruktur 142 zuzuführen. Die Steuerleitungsspannungen schließen Steuergateleitungsspannungen, die Steuergateschichten zugeführt werden, Bitleitungsspannungen, die Bitleitungen zugeführt werden, und Sourceleitungsspannungen, die Sourceleitungen zugeführt werden, ein. Die Steuergateleitungsspannungen schließen Wortleitungsspannungen, die den Wortleitungen zugeführt werden, Drain-Auswahlgate-Leitungsspannungen (SGD-Leitungsspannungen), die den SGD-Leitungen zugeführt werden, und Source-Auswahlgate-Leitungsspannungen (SGS-Leitungsspannungen), die den SGS-Leitungen zugeführt werden, ein. Die Stromsteuerschaltung 160 kann auch eingerichtet sein, um andere Spannungen als die Steuerleitungsspannungen zu erzeugen und/oder zuzuführen, einschließlich anderer Spannungen, die der Speicherzellenstruktur 142, den Lese-/Schreibschaltungen 144, den Abtastblöcken 146 und/oder anderen Schaltungskomponenten auf dem Speicherchip 104 zugeführt werden können.
-
Die Stromsteuerschaltung 160 kann eine beliebige von verschiedenen Schaltungstopologien oder Schaltungskonfigurationen einschließen, um die Spannungen auf geeigneten Ebenen zu erzeugen und/oder zuzuführen, um Speicheroperationen (einschließlich Lese-, Programmier-/Schreib-, Abtast- und Löschoperationen) durchzuführen, wie Treiberschaltungen, Stromquellen, Ladungspumpen, Referenzspannungsgeneratoren, Regler und Impulserzeugungsschaltungen oder eine beliebige von verschiedenen Kombinationen davon. Andere Arten von Schaltungen zum Erzeugen der Spannungen können möglich sein. Außerdem kann die Stromsteuerschaltung 160 mit der Steuerlogikschaltung 154, den Lese-/Schreibschaltungen 144 und/oder den Abtastblöcken 146 kommunizieren und/oder durch diese gesteuert werden, um die Spannungen auf geeigneten Pegeln und zu geeigneten Zeiten zuzuführen, um die Speicheroperationen auszuführen.
-
6 ist ein Blockdiagramm einer beispielhaften Programmierschaltung 600, die so eingerichtet ist, dass sie Programmiervorgänge zum Programmieren (Schreiben) von Daten in einen Block 602 ausführt. Wie hierin verwendet, ist eine Programmierschaltung eine Schaltung oder eine Sammlung von Schaltungen oder Schaltungskomponenten, die Daten programmiert oder in Speicherzellen schreibt. Darüber hinaus kann eine Programmierschaltung, mindestens bei einigen beispielhaften Ausführungsformen, den Programmierzustand der von ihr programmierten Speicherzellen überprüfen. In bestimmten beispielhaften Ausführungsformen befindet sich eine Programmierschaltung auf demselben Speicher-Die wie die Speicherzellen, die sie programmiert und/oder prüft. Außerdem ist ein Programmiervorgang (auch als Schreibvorgang bezeichnet), wie hierin verwendet, eine Folge von Schritten, die eine Programmierschaltung ausführt, um eine elektrische und/oder magnetische Eigenschaft von Speicherzellen so zu ändern, dass die geänderte elektrische und/oder magnetische Eigenschaft einer oder mehrerer Speicherzellen einen Datenwert darstellt.
-
Der Block 602 kann ein Block der Speicherzellenstruktur 142 der 2B sein, einer der Blöcke BLK in den 3A, 3B oder 4A, den physischen Aufbau oder die Struktur des Blocks 410 in den 4B, 4C haben und/oder die Schaltungskonfiguration des Blocks 480 in 4D haben. Der Block 602 schließt eine Vielzahl von Steuerleitungen ein, einschließlich einer Vielzahl von Steuergateleitungsschichten (oder nur Steuergateleitungen), einer Vielzahl von Bitleitungen BL und einer Sourceleitung SL. Entsprechend dem Block 480 von 4D schließt der Block 602 eine m-Zahl von Bitleitungen BL1 bis Blm ein, und die Steuergateschichten schließen vier SGD-Leitungen SGD1, SGD2, SGD3, SGD4 ein; achtundvierzig Wortleitungsschichten (oder nur Wortleitungen) WLL1 bis WLL48; und eine SGS-Leitung/Schicht SGSL.
-
Die Bitleitungen BL sind so eingerichtet, dass sie Bitleitungsspannungen VBL (auch oder alternativ als Drainseitenkanalspannungen oder Drainseitenspannungen bezeichnet) erzeugen und die Bitleitungsspannungen VBL an Kanäle und zugehörige NAND-Ketten des Blocks 602 anlegen. Jede Bitleitung BL ist eingerichtet, um eine jeweilige Bitleitungsspannung zu erzeugen und die jeweilige Bitleitungsspannung an einen zugeordneten Satz von Kanälen und zugeordneten NAND-Ketten anzulegen. Beispielsweise ist eine erste Bitleitung BL1 eingerichtet, um eine erste Bitleitungsspannung VBL1 zu erzeugen und die erste Bitleitungsspannung VBL1 an einen ersten Satz von Kanälen und zugeordneten NAND-Ketten anzulegen; eine zweite Bitleitung BL2 ist eingerichtet, um eine zweite Bitleitungsspannung VBL2 zu erzeugen und die zweite Bitleitungsspannung VBL2 an einen zugeordneten Satz von Kanälen und zugeordneten NAND-Ketten anzulegen; eine dritte Bitleitung BL3 ist eingerichtet, um eine dritte Bitleitungsspannung VBL3 zu erzeugen und die dritte Bitleitungsspannung VBL3 an einen zugeordneten Satz von Kanälen und zugeordneten NAND-Ketten anzulegen; und eine m-te Bitleitung BLm ist eingerichtet, um eine m-te Bitleitungsspannung VBLm zu erzeugen und die m-te Bitleitungsspannung VBLm an einen m-ten Satz von Kanälen und zugeordneten NAND-Ketten anzulegen. Die anderen Bitleitungen BL4 bis BL(m-1), die in 6 nicht gezeigt sind, sind ähnlich eingerichtet, um jeweilige Bitleitungsspannungen zu erzeugen und ihre jeweiligen Bitleitungsspannungen an zugeordnete Sätze von Kanälen und NAND-Ketten anzulegen.
-
Außerdem sind die Steuergateleitungen eingerichtet, Steuergatespannungen zu erzeugen und die Steuergatespannungen an Steuergates der Vorspannelemente anzulegen, an welche die Steuergateleitungen jeweils gekoppelt sind. Beispielsweise ist eine erste SGD-Leitung SGD1 eingerichtet, um eine erste SGD-Leitungsspannung VSGD1 zu erzeugen und die erste SGD-Leitungsspannung VSGD1 an Steuergates von SGD-Transistoren anzulegen, die an die erste SGD-Leitung SGD1 gekoppelt sind; eine zweite SGD-Leitung SGD2 ist eingerichtet, um eine zweite SGD-Leitungsspannung VSGD2 zu erzeugen und die zweite SGD-Leitungsspannung VSGD2 an Steuergates von SGD-Transistoren anzulegen, die an die zweite SGD-Leitung SGD2 gekoppelt sind; eine dritte SGD-Leitung SGD3 ist eingerichtet, um eine dritte SGD-Leitungsspannung VSGD3 zu erzeugen und die dritte SGD-Leitungsspannung VSGD3 an Steuergates von SGD-Transistoren anzulegen, die an die dritte SGD-Leitung SGD3 gekoppelt sind; und eine vierte SGD-Leitung SGD4 ist eingerichtet, um eine vierte SGD-Leitungsspannung VSGD4 zu erzeugen und die vierte SGD-Leitungsspannung VSGD4 an Steuergates von SGD-Transistoren anzulegen, die an die vierte SGD-Leitung SGD4 gekoppelt sind. Außerdem ist eine erste Wortleitung WLL1 eingerichtet, um eine erste Wortleitungsspannung VWL1 zu erzeugen und die erste Wortleitungsspannung VWL1 an Steuergates von Speicherzellen anzulegen, die mit der ersten Wortleitung WLL1 gekoppelt sind; und eine achtundvierzigste Wortleitung WLL48 ist eingerichtet, um eine achtundvierzigste Wortleitungsspannung VWL48 zu erzeugen und die achtundvierzigste Wortleitungsspannung VWL48 an Steuergates von Speicherzellen anzulegen, die an die achtundvierzigste Wortleitung WLL48 gekoppelt sind. Die anderen Wortleitungen WLL2 bis WLL47, die in 6 nicht gezeigt sind, sind ähnlich eingerichtet, um jeweilige Wortleitungsspannungen zu erzeugen und ihre jeweiligen Wortleitungsspannungen an Speicherzellen anzulegen, mit denen die Wortleitungen gekoppelt sind. Außerdem ist die SGS-Leitung SGSL eingerichtet, um eine SGS-Leitungsspannung VSGS zu erzeugen und die SGS-Leitungsspannung VSGS an SGS-Transistoren anzulegen, die mit der SGS-Leitung SGSL gekoppelt sind. Wie in 6 gezeigt, ist die Sourceleitung SL so eingerichtet, dass sie eine Sourceleitungsspannung VSL erzeugt und die Sourceleitungsspannung VSL an Sourceenden von Kanälen und zugeordneten NAND-Ketten anlegt, mit denen die Sourceleitung SL gekoppelt ist.
-
Die Programmierschaltung 600 führt Programmiervorgänge durch, um Daten in ausgewählte Speicherzellen zu programmieren. Wie hierin verwendet, ist eine ausgewählte Speicherzelle eines Programmiervorgangs eine Speicherzelle, die während des Programmiervorgangs programmiert wird. Zusätzlich oder alternativ ist eine ausgewählte Speicherzelle eines Programmiervorgangs eine Speicherzelle, die ihren Speicherzustand während des Programmiervorgangs von einem Anfangsspeicherzustand in einen Zielspeicherzustand ändert. Ein Anfangsspeicherzustand einer ausgewählten Speicherzelle ist der Speicherzustand der Speicherzelle zu Beginn des Programmiervorgangs. Ein Zielspeicherzustand ist der Speicherzustand, in dem sich die Speicherzelle am Ende des Programmiervorgangs befinden soll, damit Daten korrekt in der Speicherzelle gespeichert werden. Bei mindestens einigen Programmiervorgängen wird der erste Speicherzustand für eine ausgewählte Speicherzelle gelöscht. Für solche Programmiervorgänge ist eine ausgewählte Speicherzelle eine Speicherzelle, die ihren Speicherzustand von dem Löschzustand in einen Programmierzustand ändert. Zusätzlich oder alternativ dazu ist eine ausgewählte Speicherzelle eines Programmiervorgangs eine Speicherzelle, die einen Pegel, einen Wert oder einen Zustand eines Speicherparameters ändert, um ihren Speicherzustand von einem anfänglichen Speicherzustand in einen Zielspeicherzustand zu ändern.
-
Mindestens für die NAND-Technologie ist eine ausgewählte Speicherzelle eines Programmiervorgangs eine Speicherzelle, die einen Pegel ihrer Schwellenspannung von einem anfänglichen Schwellenspannungspegel auf einen Zielschwellspannungspegel ändert, um ihren Speicherzustand während des Programmiervorgangs von einem Anfangsspeicherzustand in einen Zielspeicherzustand zu ändern. Ein anfänglicher Schwellenspannungspegel einer ausgewählten Speicherzelle ist der Schwellenspannungspegel der Zielspeicherzelle zu Beginn eines Programmiervorgangs und ist ein Schwellenspannungspegel, der innerhalb eines Bereichs von Schwellenspannungspegeln liegt, der dem anfänglichen Speicherzustand der ausgewählten Speicherzelle entspricht. Ein Zielschwellenspannungspegel einer ausgewählten Speicherzelle ist ein Schwellenspannungspegel, der innerhalb eines Bereichs von Schwellenspannungspegeln liegt, der dem Zielspeicherzustand der ausgewählten Speicherzelle entspricht. Darüber hinaus ist mindestens für die NAND-Technologie eine ausgewählte Speicherzelle eines Programmiervorgangs eine Speicherzelle, die ihren Schwellenspannungspegel von einem anfänglichen Schwellenspannungspegel auf einen Zielschwellenspannungspegel als Reaktion auf mindestens einen Programmierspannungsimpuls (oder nur einen Programmierimpuls) während des Programmiervorgangs ändert.
-
Außerdem werden Speicherzellen, die nicht Gegenstand eines Programmiervorgangs sind, als nicht ausgewählte Speicherzellen bezeichnet. Anders ausgedrückt handelt es sich bei einer nicht ausgewählten Speicherzelle eines Programmiervorgangs um eine Speicherzelle, die während eines Programmiervorgangs nicht programmiert wird. Eine nicht ausgewählte Speicherzelle kann eine Speicherzelle sein, die während der gesamten Dauer des Programmiervorgangs in ihrem anfänglichen Speicherzustand bleibt oder verbleibt.
-
In bestimmten beispielhaften Ausführungsformen beschränkt die Programmierschaltung 600 einen Programmiervorgang auf einen bestimmten Bereich oder einen Teil der Speicherzellenstruktur 142. Bei solchen Ausführungsformen schließen die ausgewählten Speicherzellen einen ersten Teil oder eine erste Gruppe des jeweiligen Bereichs ein, und die nicht ausgewählten Speicherzellen schließen einen zweiten Teil oder eine zweite Gruppe des jeweiligen Bereichs ein.
-
Mindestens bei der NAND-Technologie begrenzt die Programmierschaltung 600 einen Programmiervorgang auf einen Block. Die ausgewählten Speicherzellen eines Programmiervorgangs sind Teil eines ersten Satzes oder einer Gruppe von Speicherzellen des Blocks, und die nicht ausgewählten Speicherzellen sind Teil eines zweiten Satzes oder einer Gruppe von Speicherzellen des Blocks, nämlich diejenigen Speicherzellen, die nicht ausgewählte Speicherzellen sind. In bestimmten beispielhaften Ausführungsformen sind die ausgewählten Speicherzellen eines Programmiervorgangs in derselben Wortleitung (oder Wortleitungsschicht) angeordnet und/oder sind eingerichtet, um durch dieselbe Wortleitung (oder Wortleitungsschicht) vorgespannt zu werden. In weiteren speziellen Ausführungsformen sind die ausgewählten Speicherzellen eines Programmiervorgangs nur diejenigen Speicherzellen, die Teil derselben oder einer einzigen Wortleitungszellgruppe sind.
-
Die Programmierschaltung 600 kann einen Programmiervorgang über eine oder mehrere Programmierschleifen ausführen. Eine Programmierschleife, die auch als Programmierzyklus oder Programmieriteration bezeichnet wird, ist mindestens ein Teil eines Programmiervorgangs, während dessen eine Programmierschaltung einen diskreten Satz von Programmieraktionen ausführt, um die Speicherzustände ausgewählter Speicherzellen in ihre jeweiligen Zielspeicherzustände zu versetzen (die Zielzustände repräsentieren/kodieren Datenwerte). In bestimmten Ausführungsformen schließt eine Programmierschleife eine Prüfphase ein, die eingerichtet ist, um zu bestimmen, welche Zellen einen oder mehrere Zielzustände erreicht haben. Wie weiter unten näher beschrieben, kann der diskrete Satz von Programmieraktionen das Anlegen eines diskreten Satzes von Vorspannungen, wie z.B. Spannungen oder Strompegel, an Steuerleitungen des Blocks 602 einschließen, um die Pegel, Größen, Werte oder Zustände der Speicherparameter von mindestens einigen der ausgewählten Speicherzellen zu ändern. Einer der diskreten Sätze von Programmieraktionen schließt das Anlegen eines Programmierimpulses an eine ausgewählte Wortleitung ein.
-
In einem Fall, in dem die Programmierschaltung 600 nicht in der Lage ist, alle der ausgewählten Speicherzellen in einer einzigen Programmierschleife mit einem einzelnen diskreten Satz von Programmieraktionen zu programmieren, kann die Programmierschaltung 600 mehrere Programmierschleifen ausführen, wie z. B. sequentiell oder nacheinander, bis die ausgewählten Speicherzellen in ihren jeweiligen Zielspeicherzuständen programmiert sind. Wenn die Programmierschaltung 600 eine Vielzahl von Programmierschleifen zum Programmieren der ausgewählten Speicherzellen in ihre Zielspeicherzustände ausführt, kann die Programmierschaltung 600 eine Vielzahl von Sätzen von diskreten Programmieraktionen ausführen, jeweils in einer anderen der Vielzahl von Programmierschleifen.
-
Zu jedem gegebenen Zeitpunkt während eines Programmiervorgangs kann eine ausgewählte Speicherzelle einen zugeordneten Programmierzustand aufweisen, der einer von drei verschiedenen Programmierzuständen sein kann, einschließlich eines ausreichend programmierten Zustands, eines unzureichend programmierten Zustands und eines überprogrammierten Zustands. Eine ausgewählte Speicherzelle, die einen ausreichend programmierten Zustand aufweist, ist eine ausreichend programmierte Speicherzelle, die eine Speicherzelle ist, die in ihrem Zielspeicherzustand ist oder diesen erreicht hat. Eine ausgewählte Speicherzelle, die einen unzureichend programmierten Zustand aufweist, ist eine unzureichend programmierte Speicherzelle, die eine Speicherzelle ist, die ihren Zielspeicherzustand noch nicht erreicht hat. Eine ausgewählte Speicherzelle, die einen überprogrammierten Zustand aufweist, ist eine überprogrammierte Speicherzelle, die eine Speicherzelle ist, die sich nicht in ihrem Zielspeicherzustand befindet und die nicht durch weitere Ausführung eines oder mehrerer diskreter Sätze von Programmieraktionen in ihren Zielspeicherzustand versetzt werden kann.
-
Nachdem die Programmierschaltung 600 eine Programmierschleife ausgeführt hat, bestimmt die Programmierschaltung 600, ob alle ausgewählten Speicherzellen ausreichend programmiert sind. Wenn alle der ausgewählten Speicherzellen ausreichend programmiert sind, dann beendet die Programmierschaltung 600 den Programmiervorgang. Alternativ führt, wenn mindestens eine der ausgewählten Speicherzellen unzureichend programmiert ist, die Programmierschaltung 600 eine nächste Programmierschleife aus. Die Programmierschaltung 600 kann so lange durch die Programmierschleifen iterieren, bis die Programmierschaltung 600 bestimmt, dass alle ausgewählten Speicherzellen ausreichend programmiert sind, oder die Programmierschaltung 600 erkennt, dass ein Timeout-Ereignis eingetreten ist, das die Programmierschaltung 600 veranlasst, den Programmiervorgang zu beenden. In einer Beispielkonfiguration ist das Timeout-Ereignis eine Anzahl von Programmierschleifen, die eine vorbestimmte maximale Anzahl von Programmierschleifen erreichen. Andere Timeout-Ereignisse können möglich sein.
-
Außerdem kann die Programmierschaltung 600 diskrete Sätze von Programmieraktionen während Programmierphasen in den Programmierschleifen durchführen. Mindestens für die NAND-Technologie schließt ein Satz von Programmieraktionen, die die Programmierschaltung 600 während einer gegebenen Programmierphase ausführt, das Vorspannen der Steuergates und Kanäle eines Blocks mit einem Satz von Programmierspannungen ein. Jede Programmierspannung kann sich auf einem von einer Vielzahl von Programmierpegeln befinden, die der gegebenen Programmierphase zugeordnet sind.
-
In einer Programmierphase schließt der Satz von Programmierspannungen, mit denen die Programmierschaltung 600 die Steuergates und Kanäle vorspannt, eine Programmier-Ausgewählte-Speicherzellen-Gatespannung, eine Programmier-Nichtausgewählte-Speicherzellen-Gatespannung, eine Programmier-Ausgewählte-SGD-Gatespannung, eine Programmier-Nichtausgewählte-SGD-Gatespannung, eine Programmier-SGS-Gatespannung, eine Programmier-Ausgewählte-Drainseitenspannung, eine Programmier-Nichtausgewählte-Drainseitenspannung und eine Programmier-Sourceseitenspannung ein. Die Programmierschaltung 600 spannt Steuergates ausgewählter Speicherzellen während einer Programmierphase mit einer Programmier-Ausgewählte-Speicherzellen-Gatespannung vor, um ausgewählte Speicherzellen in ihre oder in Richtung ihrer Zielspeicherzustände zu bewegen, beispielsweise durch Erhöhen ihrer jeweiligen Schwellenspannungen. Die Programmierschaltung 600 spannt die Steuergates nicht ausgewählter Speicherzellen während einer Programmierphase mit der Programmier-Nichtausgewählte-Speicherzellen-Gatespannung vor. Die Programmierschaltung 600 spannt die Steuergates von mit ausgewählten Speicherzellen gekoppelten SGD-Transistoren während einer Programmierphase mit der Programmier-Ausgewählte-SGD-Gatespannung vor. Die Programmierschaltung 600 spannt die Steuergates von mit nicht ausgewählten Speicherzellen gekoppelten SGD-Transistoren während einer Programmierphase mit der Programmier-Nichtausgewählte-SGD-Gatespannung vor. Die Programmierschaltung 600 spannt die Steuergates von SGS-Transistoren während einer Programmierphase mit der Programmier-SGS-Gatespannung vor. Die Programmierschaltung 600 spannt die Drainenden von mit programmierfähigen Speicherzellen gekoppelten Kanälen während einer Programmierphase mit der Programmier-Ausgewählte-Drainseitenspannung vor. Die Programmierschaltung 600 spannt die Drainenden von mit programmiergesperrten Speicherzellen gekoppelten Kanälen während einer Programmierphase mit der Programmier-Nichtausgewählte-Drainseitenspannung vor. Die Programmierschaltung 600 spannt die Sourceenden von Kanälen während einer Programmierphase mit der Programmier-Sourceseitenspannung vor.
-
Die Programmierschaltung 600 ist so eingerichtet, dass sie die Steuergates und Kanäle mit den Programmierspannungen während der Programmierphasen durch die Steuerleitungen des Blocks 602 vorspannt, einschließlich der Steuergate-Leitungen SGD, WLL, SGSL, der Bitleitungen BL und der Sourceleitung SL. Insbesondere ist die Programmierschaltung 600 eingerichtet, um die Steuergates der Speicherzellen, der SGD-Transistoren und der SGS-Transistoren mit den Programmierspannungen jeweils über die Wortleitungen WLL, die SGD-Leitungen bzw. die SGS-Leitung zu vorzuspannen. Die Programmierschaltung 600 ist eingerichtet, um die Drainenden der Kanäle mit den Programmier-Drainseitenspannungen vorzuspannen. Die Programmierschaltung 600 ist eingerichtet, um die Sourceenden der Kanäle mit den Programmier-Sourceseitenspannungen vorzuspannen.
-
In diesem Zusammenhang werden die Programmierspannungen auch oder alternativ in Bezug auf die Steuerleitungen, welche die Steuergates und Kanäle vorspannen, referenziert oder gekennzeichnet. Insbesondere werden die Programmier-Ausgewählte-Speicherzellen-Gatespannungen als Programmier-Ausgewählte-Speicherzellen-Wortleitungsspannungen bezeichnet, die Programmier-Nichtausgewählte-Speicherzellen-Gatespannungen werden als Programmier-Nichtausgewählte-Speicherzellen-Wortleitungsspannungen bezeichnet, die Programmier-Ausgewählte-Drainseitenspannungen werden als Programmier-Ausgewählte-Bitleitung-Spannungen bezeichnet, die Programmier-Nichtausgewählte-Drainseitenspannungen werden als Programmier-Nichtausgewählte-Bitleitung-Spannungen bezeichnet, die Programmier-Nichtausgewählte-Sourceseitenspannungen werden als Programmier-Sourceleitungsspannungen bezeichnet, die Programmier-SGS-Gatespannungen werden als Programmier-SGS-Leitungsspannungen bezeichnet, die Programmier-Ausgewählte-SGD-Gatespannungen werden als Programmier-Ausgewählte SGD-Leitungsspannungen bezeichnet, und die Programmier-Nichtausgewählte SGD-Gatespannungen werden als Programmier-Nichtausgewählte SGD-Leitungsspannungen bezeichnet.
-
Um die Steuerleitungen des Blocks, und wiederum die Steuergates und die Kanäle mit den Programmierspannungen vorzuspannen, kann die Programmierschaltung 600 eine Spannungsversorgungsschaltung 604 einschließen, welche die Programmierspannungen an die Steuerleitungen liefert. Durch Zuführung der Programmier- und Prüfspannungen zu den Steuerleitungen legt die Spannungsversorgungsschaltung 604 die Programmierspannungen an die Steuerleitungen an, spannt die Steuerleitungen mit den Programmierspannungen vor und/oder erzeugt die Programmierspannungen auf den Steuerleitungen. Aus der Sicht der Steuerleitungen empfängt eine Steuerleitung eine, wird versorgt mit oder wird vorgespannt mit einer Programmierspannung von der Spannungsversorgungsschaltung 604, spannt die entsprechenden Steuergates oder Kanäle mit der von ihr empfangenen Programmierspannung vor, legt die Programmierspannung, die sie empfängt, an die entsprechenden Steuergates oder Kanäle an, erzeugt eine Programmierspannung als Reaktion auf den Empfang der Programmierspannung, die sie von der Spannungsversorgungsschaltung 604 empfängt, erzeugt die Programmierspannung auf einem Pegel der Programmierspannung, die sie empfängt, legt die Programmierspannung, die sie erzeugt, an ein jeweiliges Steuergate oder einen jeweiligen Kanal an oder spannt ein jeweiliges Steuergate oder einen jeweiligen Kanal mit der Programmierspannung vor, die sie als Reaktion auf die von ihr empfangene Programmierspannung erzeugt. Diese Ausdrücke und Wendungen zur Beschreibung, wie die Programmierschaltung 600 die Steuergates und Kanäle des Blocks 602 mit den Programmierspannungen durch Zuführen der Programmierspannungen zu den Steuerleitungen des Blocks 602 vorspannt, werden hierin allgemein austauschbar verwendet, sofern nicht ausdrücklich etwas anderes beschrieben ist.
-
Wie in 6 dargestellt, kann die Spannungsversorgungsschaltung 604 so eingerichtet werden, dass sie die Programmierspannungen erzeugt und/oder die Steuerleitungen veranlasst, ihre jeweiligen Spannungen auf Pegeln relativ zu einer Bezugsmasse GND mit einem Bezugsmasse-Spannungspegel von 0 V zu erzeugen. Allerdings können einige Spannungen während einiger Programmierphasen auf Pegeln erzeugt werden, die sich auf einen anderen Referenzpunkt als die Bezugsmasse GND beziehen, wie beispielsweise die Sourceleitung SL. Hierin kann davon ausgegangen werden, dass die Spannungspegel in Bezug auf den Bezugsmasse-Spannungspegel von 0 V angegeben werden, sofern nicht ausdrücklich anders beschrieben.
-
In der beispielhaften Konfiguration in 6 schließt die Versorgungsspannungsschaltung 604 drei Versorgungsspannungsschaltungen ein, welche die Programmierspannungen an die Steuerleitungen liefern, einschließlich einer Steuergateleitungs-Spannungsversorgungsschaltung 606, einer Bitleitungs-Spannungsversorgungsschaltung 608, und einer Sourceleitungs-Spannungsversorgungsschaltung 610. Die Steuergateleitungs-Spannungsversorgungsschaltung 606 ist eingerichtet, um die Programmierspannungen an die Steuergateleitungen von Block 602 zu liefern oder anzulegen. Insbesondere ist die Steuergateleitungs-Spannungsversorgungsschaltung 606 eingerichtet, um die Programmier-Ausgewählte- und -Nichtausgewählte-Wortleitung-Spannungen an die Wortleitungen WLL, die Programmier-Ausgewählte- und -Nichtausgewählte-SGD-Leitungsspannungen an die SGD-Leitungen und die Programmier-SGS-Leitungsspannungen an die SGS-Leitung zu liefern. Die Bitleitungs-Spannungsversorgungsschaltung 608 ist eingerichtet, um die Programmier-Ausgewählte- und -Nichtausgewählte-Bitleitung-Spannungen an die Bitleitungen BL des Blocks 602 zu liefern oder anzulegen. Die Sourceleitungs-Spannungsversorgungsschaltung 610 ist eingerichtet, um die Programmier-Sourceleitungsspannungen an die Sourceleitung SL des Blocks 602 zu liefern oder anzulegen. Andere Arten, die Spannungsversorgungsschaltung 604 einzurichten, können möglich sein.
-
Darüber hinaus enthalten in der beispielhaften Konfiguration in 6 die Steuergateleitungs-Spannungsversorgungsschaltung 606 und die Bitleitungs-Spannungsversorgungsschaltung 608 jeweils zwei Schaltungskomponenten, eine Spannungserzeugungsschaltung und eine Decodiererschaltung. Im Allgemeinen erzeugt eine Spannungserzeugungsschaltung Spannungen, die den Steuerleitungen zugeführt werden, und eine Decodiererschaltung leitet die erzeugten Spannungen selektiv an die Steuerleitungen weiter.
-
Im Einzelnen schließt die Steuergateleitungs-Spannungsversorgungsschaltung 606 eine Steuergateleitungs-Spannungserzeugungsschaltung 612 und eine Zeilendecodiererschaltung 614 ein. Die Steuergate-Spannungserzeugungsschaltung 612 kann mindestens einen Teil der Stromsteuerschaltung 160 von 2B darstellen. Die Zeilendecodiererschaltung 614 kann mindestens einen Teil des Zeilendecodierers 148 von 2B darstellen.
-
Die Steuergate-Spannungserzeugungsschaltung 612 ist eingerichtet, um eine Vielzahl oder einen Satz von der Gateleitungsspannungen zu erzeugen, einschließlich einer Ausgewählte-Wortleitung-Spannung VWLS einer Nichtausgewählte-Wortleitung-Spannung VWLU, einer Ausgewählte-SGD-Leitungsspannung VSGDS, einer Nichtausgewählte-SGD-Leitungsspannung VSGDU, und einer SGS-Leitungsspannung VSGS. Außerdem kann die Steuergateleitungs-Spannungserzeugungsschaltung 612 eingerichtet sein, um die Pegel der Steuergateleitungs-Spannungen anzupassen, wenn die Programmierschaltung 600 von einer Speicheroperation zu einer anderen oder zwischen Stufen innerhalb einer einzelnen Speicheroperation übergeht. Die Steuergateleitungs-Spannungserzeugungsschaltung 612 erzeugt Programmier-Steuergateleitungs-Spannungen oder Steuergateleitungs-Spannungen auf Programmierpegeln während Programmiervorgängen. Im Allgemeinen, wie hierin verwendet, werden Ausdrücke oder Begriffe wie „eine Programmierspannung erzeugen“ und „eine Spannung auf einem Programmierpegel erzeugen“ sowie andere ähnliche Ausdrücke oder Begriffe wie „eine Programmierspannung liefern“ und „eine Spannung auf einem Programmierpegel liefern“; „eine Programmierspannung anlegen“ und „eine Spannung auf einem Programmierpegel anlegen“; oder „eine Steuerleitung mit einer Programmierspannung vorspannen“ und „eine Steuerleitung mit einer Spannung auf einem Programmierpegel vorspannen“ im Allgemeinen austauschbar verwenden, sofern nicht ausdrücklich anderweitig beschrieben.
-
Außerdem kann die Steuergateleitungs-Spannungserzeugungsschaltung 612 eingerichtet sein, um die Steuergateleitungsspannungen auf unterschiedlichen Programmierphasen für unterschiedliche Programmierphasen zu erzeugen. Zum Beispiel kann mindestens für einige Programmiervorgänge die Steuergateleitungs-Erzeugungsschaltung 612 eingerichtet sein, um die Ausgewählte-Wortleitung-Spannung VWLS in Form von Programmier-Gatespannungsimpulsen (oder nur Programmier-Spannungsimpulsen oder Programmierimpulsen) mit unterschiedlichen Programmierimpulspegeln in oder während verschiedener Programmierphasen erzeugen.
-
Die Zeilendecodiererschaltung 614 ist eine Schaltung, die selektiv die Steuergateleitungsspannungen an die Steuergateleitungen leitet oder liefert. Die Zeilendecodiererschaltung 614 kann einen Satz von Eingangsanschlüssen einschließen, der die Steuergateleitungsspannungen von der Steuergateleitungs-Spannungserzeugungsschaltung 612 empfängt. Außerdem kann die Zeilendecodiererschaltung 614 einen Satz von Ausgangsanschlüssen einschließen, die mit den Steuergateleitungen gekoppelt sind. Der Zeilendecodierer 614 kann selektiv die Steuergateleitungsspannungen, die er an seinen Eingangsanschlüssen von der Steuergate-Spannungserzeugungsschaltung 612 empfängt, zu seinen Ausgangsanschlüssen leiten, um sie an die Steuergateleitungen zu liefern oder anzulegen.
-
Die Zeilendecodiererschaltung 614 ist eingerichtet, um die Steuergateleitungs-Spannungen selektiv zu leiten oder zu liefern, indem der Zeilendecodierer 614 die Steuergateleitungs-Spannungen zu verschiedenen Zeiten innerhalb desselben Programmiervorgangs oder während verschiedener Programmiervorgänge an verschiedene Steuergateleitungen leiten kann, und zwar in Abhängigkeit von den Speicherzellen des Blocks 602, die für verschiedene Programmiervorgänge oder für verschiedene Programmierphasen innerhalb desselben Programmiervorgangs ausgewählt, nicht ausgewählt sind. Als Beispiel kann die Zeilendecodiererschaltung 614 die Ausgewählte-Wortleitung-Spannung VWLS wie beispielsweise in Form von einem oder mehreren Programmierimpulsen an eine erste Wortleitung während eines ersten Programmiervorgangs liefern, und kann die Ausgewählte-Wortleitung-Spannung VWLS zum Beispiel in Form von einem oder mehreren Programmierimpulsen an eine zweite, andere Wortleitung während eines zweiten Programmiervorgangs liefern.
-
Die Zeilendecodiererschaltung 614 kann eine beliebige von verschiedenen Schaltungskonfigurationen aufweisen, um selektiv die Steuergateleitungsspannungen an die Steuergateleitungen zu leiten oder zu liefern. Für mindestens einige Beispielkonfigurationen kann die Zeilendecodiererschaltung 614 eine Vielzahl von Schaltern (z. B. Transistoren) einschließen, die ein- und ausgeschaltet werden, um die Eingangsanschlüsse selektiv mit den Ausgangsanschlüssen zu verbinden. Die Ein- und Aus-Zustände der Schalter können leitende Pfade zwischen den Eingangs- und Ausgangsanschlüssen des Zeilendecodierers 614 bilden, die selektiv die Steuergateleitungsspannungen liefern oder leiten. Die Schalter können eine beliebige von verschiedenen Konfigurationen aufweisen, z. B ein- oder mehrschichtige (oder Baum-) Konfigurationen. Für einen gegebenen Programmiervorgang oder eine gegebene Programmierphase kann ein gegebener Gesamtzustand der in Ein- und Aus-Zuständen eingerichteten Steuergate-Schalter bestimmen, wie die Zeilendecodiererschaltung 614 die Steuergateleitungs-Spannungen zu den verschiedenen Steuergateleitungen des Blocks 602 leitet.
-
Außerdem schließt die Bitleitungs-Spannungsversorgungsschaltung 606 eine Bitleitungs-Spannungserzeugungsschaltung 616 und eine Spaltendecodiererschaltung 618 ein. Die Bitleitungs-Spannungserzeugungsschaltung 616 kann mindestens einen Teil der Stromsteuerschaltung 160 von 2B darstellen. Die Spaltendecodiererschaltung 618 kann mindestens einen Teil des Spaltendecodierers 148 von 2B darstellen.
-
Die Bitleitungs-Spannungserzeugungsschaltung 616 ist eingerichtet, um eine Vielzahl oder einen Satz von Bitleitungsspannungen zu erzeugen, einschließlich einer Ausgewählte-Bitleitung-Spannung VBLS und einer Nichtausgewählte-Bitleitung-Spannung VSLU. Während Programmiervorgängen kann die Bitleitungs-Spannungserzeugungsschaltung 616 eingerichtet sein, um die Bitleitungsspannungen auf Programmierpegel für Programmierphasen einzustellen. Dementsprechend erzeugt die Bitleitungs-Spannungserzeugungsschaltung 616 während Programmiervorgängen Programmier-Bitleitungsspannungen oder Bitleitungsspannungen auf Programmierpegeln. Außerdem kann die Steuergate-Spannungserzeugungsschaltung 616 eingerichtet sein, um die Pegel der Bitleitungsspannungen anzupassen, wenn die Programmierschaltung 600 von einem Programmiervorgang zu einem anderen oder zwischen Stufen eines einzelnen Programmiervorgangs übergeht.
-
Die Spaltendecodiererschaltung 618 ist eine Schaltung, die selektiv die Bitleitungsspannungen an die Bitleitungen leitet oder liefert. Die Spaltendecodiererschaltung 618 kann einen Satz von Eingangsanschlüssen einschließen, der die Bitleitungsspannungen von der Bitleitungs-Spannungserzeugungsschaltung 616 empfängt. Außerdem kann die Spaltendecodiererschaltung 618 einen Satz von Ausgangsanschlüssen einschließen, die mit den Bitleitungen gekoppelt sind. Der Spaltendecodierer 618 kann selektiv die Bitleitungsspannungen, die er an seinen Eingangsanschlüssen von der Bitleitungs-Spannungserzeugungsschaltung 616 empfängt, zu seinen Ausgangsanschlüssen leiten, um sie an die Bitleitungen zu liefern oder anzulegen.
-
Die Spaltendecodiererschaltung 618 ist eingerichtet, um die Bitleitungsspannungen selektiv weiterzuleiten oder bereitzustellen, indem der Spaltendecoder 618 die Bitleitungsspannungen zu unterschiedlichen Zeiten innerhalb desselben Programmiervorgangs oder während unterschiedlicher Programmiervorgängen an unterschiedliche Bitleitungen weiterleiten kann. Beispielsweise kann während einer ersten Programmierphase die Spaltendecodiererschaltung 618 die Ausgewählte-Bitleitung-Spannung VBLS auf einem zugehörigen Programmierpegel an einen ersten Satz der Bitleitungen BL und die Nichtausgewählte-Bitleitung-Spannung VBLU auf einem zugehörigen Programmierpegel an einen zweiten Satz der Bitleitungen BL liefern. Dann kann während einer zweiten Programmierphase die Spaltendecodiererschaltung 618 die Ausgewählte-Bitleitung-Spannung VBLS auf einem zugehörigen Programmierpegel an einen dritten Satz der Bitleitungen BL liefern und die Nichtausgewählte-Bitleitung-Spannung VBLU auf einem zugehörigen Programmierpegel an einen vierten Satz der Bitleitungen BL liefern. Die ersten und dritten Bitleitungssätze, welche die Ausgewählte-Bitleitung-Spannung VBLS empfangen, können Bitleitungen einschließen, welche die gleichen sind oder sich voneinander unterschieden, oder einige Bitleitungen aufweisen, welche die gleichen sind und einige, die unterschiedlich sind. In ähnlicher Weise können die zweiten und vierten Bitleitungssätze, welche die Nichtausgewählte-Bitleitung-Spannung VBLU empfangen, Bitleitungen einschließen, welche die gleichen sind oder sich voneinander unterschieden, oder einige Bitleitungen aufweisen, welche die gleichen sind und einige, die unterschiedlich sind.
-
Die Spaltendecodiererschaltung 618 kann eine beliebige von verschiedenen Schaltungskonfigurationen aufweisen, um selektiv die Bitleitungsspannungen an die Bitleitungen BL zu leiten oder zu liefern. Für mindestens einige Beispielkonfigurationen kann die Spaltendecodiererschaltung 618 eine Vielzahl von Schaltern (z. B. Transistoren) einschließen, die ein- und ausgeschaltet werden, um die Eingangsanschlüsse selektiv mit den Ausgangsanschlüssen zu verbinden. Die Ein- und Aus-Zustände der Schalter können leitende Pfade zwischen den Eingangs- und Ausgangsanschlüssen des Spaltendecodierers 618 bilden, die selektiv die Bitleitungsspannungen liefern oder leiten. Die Schalter können eine beliebige von verschiedenen Konfigurationen aufweisen, z. B ein- oder mehrschichtige (oder Baum-) Konfigurationen. Für einen gegebenen Programmiervorgang oder eine gegebene Programmierphase des Programmiervorgangs kann ein gegebener Gesamtzustand der in Ein- und Aus-Zuständen eingerichteten Schalter bestimmen, wie die Spaltendecodiererschaltung 618 die Bitleitungsspannungen zu den verschiedenen Bitleitungen des Blocks 602 leitet.
-
Bei einigen beispielhaften Konfigurationen, wie der in 6 gezeigten, sind die Ausgangsanschlüsse der Spaltendecodiererschaltung 618 mit den Bitleitungen BL über eine Vielzahl von Abtastschaltungen 620 verbunden, die so eingerichtet sind, dass sie Abtastvorgänge durchführen, um die Programmierzustände ausgewählter Speicherzellen während der Prüfphasen, einschließlich der Prüf-Unterphasen, von Programmiervorgängen zu erfassen. Details der Abtastschaltungen 620 und Abtastvorgänge werden nachstehend in weiteren Einzelheiten beschrieben.
-
In der beispielhaften Konfiguration in 6 schließt die Vielzahl der Abtastschaltungen 620 eine m-Anzahl von Abtastschaltungen 620(1) bis 620(m) ein, wobei jede Abtastschaltung 620 mit jeweils einer der m-Anzahl von Bitleitungen BL1 bis BLm gekoppelt ist. Andere Abtastschaltungskonfigurationen können möglich sein. Beispielsweise kann die Anzahl der Abtastschaltungen 620 kleiner sein als die Anzahl von Bitleitungen BL in einem Block. Zusätzlich oder alternativ kann eine Abtastschaltung 620 mit verschiedenen Bitleitungen verschiedener Blöcke gekoppelt sein. Zum Beispiel kann die erste Abtastschaltung 620(1) mit der ersten Bitleitung BL1 des Blocks 602 gekoppelt sein und kann mit einer anderen ersten Bitleitung BL1 eines anderen Blocks der Speicherzellenstruktur 142 gekoppelt sein. Andere Abtastschaltungskonfigurationen sind möglich, wie unten detaillierter beschrieben wird.
-
Bei einigen Beispielkonfigurationen können die Bitleitungsspannungen, die von dem Spaltendecodierer 618 ausgegeben werden, direkt durch die Abtastschaltungen 620 gehen, so dass die Pegel der Bitleitungsspannungen, wie sie von den Bitleitungen BL empfangen werden, die gleichen oder im Wesentlichen die gleichen sind wie ihre Pegel an den Ausgangsanschlüssen der Spaltendecodiererschaltung 618. In anderen Beispielkonfigurationen können die Abtastschaltungen 620 jeweils verschiedene Schaltungskomponenten, wie z. B. Widerstände, Kondensatoren und/oder Halbleiterbauelemente (z. B. Transistoren) als nicht-begrenzende Beispiele einschließen, die die Spannungspegel der empfangenen Bitleitungsspannungen ändern, z. B. durch Reduzierung der Pegel. In bestimmten Beispielkonfigurationen schließen die Abtastschaltungen 620 jeweils ein entsprechendes Halbleiterbauelement, wie z. B. einen Transistor, ein, der eine Bitleitungsspannung vom Spaltendecodierer 618 erhält. Die Halbleiterbauelemente können entsprechende erste Anschlüsse, wie z. B. Gate-Anschlüsse, einschließen, die die Bitleitungsspannungen von der Spaltendecodiererschaltung 618 empfangen. Die Halbleiterbauelemente können ferner entsprechende zweite Anschlüsse wie etwa Source-Anschlüsse einschließen, die die Bitleitungsspannungen auf die Bitleitungen BL ausgeben, indem sie die Bitleitungsspannungen um einen Schwellenspannungspegel von dem Pegel verringern, auf dem die Bitleitungsspannungen an ihren ersten (Gate-) Anschlüssen empfangen wurden. Verschiedene Arten der Zuführung von Bitleitungsspannungen zu Bitleitungen über Abtastschaltungen können möglich sein.
-
Die Programmierschaltung 600 kann ferner eine Programmiersteuerung 622 einschließen. Eine Programmiersteuerung ist eine Komponente oder ein Modul, die ausgelegt und aufgebaut ist, um Programmiervorgänge zu steuern. In bestimmten Ausführungsformen kann eine Programmiersteuerung Hardware, Firmware (oder Software) oder eine Kombination aus Hardware und Firmware (oder Software) umfassen. Zum Beispiel kann eine Programmiersteuerung eine integrierte Schaltung (IC) einschließen oder eine Komponente von ihr sein, wie beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC), eine anwenderprogrammierbare Gatteranordnung (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon. Außerdem oder alternativ kann eine Programmiersteuerung Speicherhardware einschließen, die Anweisungen aufweist, die mit einem Prozessor oder einer Prozessorschaltung ausführbar sind, um eines oder mehrere der Merkmale der Programmiersteuerung zu implementieren. Eine Programmiersteuerung, bei der es sich in bestimmten Ausführungsformen um eine On-Die-NAND-Programmiersteuerung handeln kann, kann die Form einer Verarbeitungsschaltung, eines Mikroprozessors oder Prozessors und eines computerlesbaren Mediums (z. B. eines nichtflüchtigen computerlesbaren Speichermediums) haben, das computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der vom (Mikro-) Prozessor ausführbar ist, sowie Logikgatter, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC), eine speicherprogrammierbare Steuerung und einen eingebetteten Mikrocontroller.
-
Außerdem steuert eine Programmiersteuerung, wann Programmiervorgänge beginnen und wann sie enden. Außerdem steuert eine Programmiersteuerung, wann Programmierphasen innerhalb eines Programmiervorgangs beginnen und enden. Eine Programmiersteuerung steuert die Übergänge von Phasen von einer Phase zu einer nächsten Phase und steuert die Übergänge von Programmierschleifen von einer Programmierschleife zu einer nächsten Programmierschleife.
-
Außerdem stellt eine Programmiersteuerung die Spannungen auf Programmierpegel auf den Steuerleitungen eines Blocks ein, legt an oder liefert Spannungen auf Programmierpegeln an die Steuerleitungen eines Blocks, und/oder spannt die Steuerleitungen eines Block mit Spannungen auf Programmierpegeln vor. Eine Programmiersteuerung kann dies durch Steuern der Spannungspegel der Spannungen, die eine Spannungsversorgungsschaltung erzeugt und liefert ausführen, und wenn die Spannungsversorgungsschaltung die Spannungen auf ihren bestimmten Pegeln erzeugt und liefert. Beispielsweise steuert eine Programmiersteuerung, ob und/oder wann ausgewählte und nichtausgewählte Spannungen auf zugehörigen Programmierpegeln erzeugt werden. Außerdem stellt eine Programmiersteuerung die Spannungen auf den Steuerleitungen ein, legt die Spannungen an die Steuerleitungen an oder versorgt diese mit den Spannungen und/oder spann Steuerleitungen mit den Spannungen vor, indem sie steuert, wie Spannungen zu den Steuerleitungen eines Blocks geleitet werden, und sie kann ändern, welche Spannungen an welche Steuerleitungen geleitet werden. Dementsprechend wird, wie hierin verwendet, sofern nicht ausdrücklich anders beschrieben, der Verweis darauf oder die Beschreibung dessen, dass die Programmiersteuerung 622 eine Spannung auf einer Steuerleitung einstellt, austauschbar damit verwendet, dass die Programmiersteuerung 622 die Spannungsversorgungsschaltung 604 (oder eine ihrer Komponenten) steuert, um eine Spannung auf einer Steuerleitung einzustellen; dass die Programmiersteuerung 622 eine Spannung an eine Steuerleitung anlegt oder liefert, wird austauschbar damit verwendet, dass die Programmiersteuerung 622 die Spannungsversorgungsschaltung 604 (oder eine ihrer Komponenten) steuert, um eine Spannung an eine Steuerleitung zu liefern oder anzulegen; und dass die Programmiersteuerung 622 eine Steuerleitung mit einer Spannung vorspannt, wird austauschbar damit verwendet, dass die Programmiersteuerung 622 die Spannungsversorgungsschaltung 604 (oder eine ihrer Komponenten) steuert, um eine Steuerleitung mit einer Spannung vorzuspannen.
-
Außerdem kann eine Programmiersteuerung auch bestimmen, wo Daten zu speichern sind. Zum Beispiel kann eine Programmiersteuerung bestimmen, dass Daten gespeichert werden sollen, und eine Sammlung von Speicherzellen identifizieren, in die die Daten zu speichern oder zu programmieren sind, wie beispielsweise durch Identifizieren einer Ebene, eines Blocks, einer Wortleitung und/oder einer Wortleitungszellengruppe, die die Sammlung von Speicherzellen einschließt. Die Programmiersteuerung kann diese Sammlung von Speicherzellen als die ausgewählten Speicherzellen eines Programmiervorgangs identifizieren.
-
Eine Programmiersteuerung kann als Reaktion auf den Empfang von Adressinformationen von der Steuerung 102 (2A) bestimmen, wo Daten gespeichert werden sollen, oder anderweitig eine eindeutige physische Adresse identifizieren (z. B. eine, die eine bestimmte Ebene, einen bestimmten Block, eine bestimmte Wortleitung und/oder eine bestimmte Wortleitungszellengruppe einschließt), die eine physische Position der ausgewählten Speicherzellen identifiziert, in die die Daten programmiert werden sollen.
-
Außerdem kann eine Programmiersteuerung ein Speicherschema kennen oder bestimmen, unter dem Daten in ausgewählten Speicherzellen gespeichert werden. Durch Kenntnis des Speicherschemas kann eine Programmiersteuerung wissen, ob die ausgewählten Speicherzellen als SLC-Zellen oder MLC-Zellen, wie durch das Speicherschema definiert, programmiert werden sollen. Darüber hinaus kann, wenn die ausgewählten Speicherzellen als MLC-Zellen programmiert werden sollen, die Programmiersteuerung die Anzahl von Bits pro Zelle kennen, für die jede der MLC-Zellen eingerichtet ist, um sie zu speichern, wie durch das Speicherschema definiert. Eine Programmiersteuerung kann das Vorspannen auf den Steuerleitungen steuern, um die ausgewählten Speicherzellen als SLC-Zellen oder MLC-Zellen gemäß dem Speicherschema zu programmieren.
-
Eine Programmiersteuerung kann auch die Datenwerte der Daten identifizieren, die in den ausgewählten Speicherzellen zu programmieren sind. Eine Programmiersteuerung kann wissen, welche Datenwerte in welchen Speicherzellen der ausgewählten Speicherzellen gespeichert werden sollen. Basierend auf diesen Kenntnissen kann die Programmiersteuerung die Zielspeicherzustände jeder der ausgewählten Speicherzellen eines Programmiervorgang kennen. Die Programmiersteuerung kann wiederum im Laufe des Programmiervorgangs feststellen, welche ausgewählten Speicherzellen ausreichend und welche ausgewählten Speicherzellen unzureichend programmiert sind.
-
Um ferner im Einzelnen Bezug auf die beispielhafte Konfiguration von 6 zu nehmen, kann die Programmiersteuerung 622 eingerichtet sein, um die Spannungen auf den Steuerleitungen auf bestimmten Pegeln und während bestimmter Programmierphasen, einzustellen, um Programmiervorgänge auszuführen. Dazu ist die Programmsteuerung 622 eingerichtet, um die Spannungsversorgungsschaltung 604 zu steuern, um die Programmierspannungen während Programmierphasen von Programmiervorgängen an die Steuerleitungen zu liefern, anzulegen oder auszugeben.
-
In Bezug auf die Steuergateleitungs-Spannungsversorgungsschaltung 606 ist die Programmiersteuerung 622 eingerichtet, dass sie die Steuergateleitungs-Spannungsversorgungsschaltung 606 so steuert, dass sie die Steuergateleitungsspannungen VSGDS, VSGDU, VWLS, VWLU, VSGS an die Steuergateleitungen auf Programmierpegeln während der Programmierphasen liefert, anlegt oder ausgibt. Die Programmiersteuerung 622 kann die Steuergateleitungs-Spannungserzeugungsschaltung 612 so steuern, dass sie die Steuergateleitungsspannungen VSGDS, VSGDU, VWLS, VWLU, VSGS auf zugeordneten Programmierpegeln während Programmierphasen generiert. In einigen beispielhaften Konfigurationen, wie in 6 gezeigt, kann die Programmiersteuerung 622 ein Steuergateleitungsspannungs-Steuersignal CTRLCLV ausgeben, um die Steuergateleitungs-Spannungserzeugungsschaltung 612 so zu steuern, dass sie die Steuergateleitungsspannungen VSGDS, VSGDU, VWLS, VWLU, VSGS auf den zugehörigen Programmierpegeln erzeugt, oder anderweitig die Steuergateleitungsspannungen VSGDS, VSGDU, VWLS, VWLU, VSGS als Programmierspannungen an die Zeilendecodiererschaltung 614 ausgibt.
-
Außerdem ist die Programmiersteuerung 622 eingerichtet, die Zeilendecodiererschaltung 614 dadurch zu steuern, dass sie den Zeilendecodierer 614 in einem von verschiedenen Zuständen einrichtet, um die Steuergateleitungsspannungen VSGDS, VSGDU, VWLS, VWLU, VSGS zu den Steuergateleitungen zu leiten, um die ausgewählten Speicherzellen zu programmieren. Wie in 6 gezeigt, kann der Programmiersteuerung 622 die Zeilendecodiererschaltung 614 steuern, indem sie ein Zeilendecodierer-Steuersignal CTRLRD an die Zeilendecodiererschaltung 614 ausgibt. Die Zeilendecodiererschaltung 614 kann auf das Zeilendecodierer-Steuersignal CTRLRD reagieren, indem sie in einem Zustand eingerichtet wird, der einem Pegel oder Wert des Zeilendecodierer-Steuersignals CTRLRD entspricht, wie beispielsweise durch Ein- und Ausschalten verschiedener Schalter. Die Programmiersteuerung 622 kann das Zeilendecodierer-Steuersignal CTRLRD basierend auf physischen Adressinformationen ausgeben, die die ausgewählten Speicherzellen identifizieren.
-
In Bezug auf die Bitleitungs-Spannungsversorgungsschaltung 608 ist die Programmiersteuerung 622 so eingerichtet, dass sie die Bitleitungs-Spannungsversorgungsschaltung 606 so steuert, dass sie die Bitleitungsspannungen VSLS, VBLU, an die Bitleitungen auf Programmierpegeln während der Programmierphasen liefert, anlegt oder ausgibt. Die Programmiersteuerung 622 kann die Bitleitungs-Spannungserzeugungsschaltung 616 so steuern, dass sie die Bitleitungsspannungen VSLS, VBLU, auf zugeordneten Programmierpegeln während Programmierphasen erzeugt. In einigen beispielhaften Konfigurationen, wie in 6 gezeigt, kann die Programmiersteuerung 622 ein Bitleitungsspannung-Steuersignal CTRLBLV ausgeben, um die Bitleitungs-Spannungserzeugungsschaltung 616 so zu steuern, dass sie die Bitleitungsspannungen VSLS, VBLU auf den zugehörigen Programmierpegeln erzeugt, oder anderweitig die Bitleitungsspannungen VSLS, VBLU als Programmierspannungen an die Spaltendecodiererschaltung 618 ausgibt.
-
Außerdem ist die Programmiersteuerung 622 eingerichtet, die Spaltendecodiererschaltung 618 dadurch zu steuern, dass sie den Spaltendecodierer 618 in einem von verschiedenen Zuständen einrichtet, um die Bitleitungsspannungen VSLS, VBLU zu den Bitleitungen zu leiten, um die ausgewählten Speicherzellen zu programmieren. Wie in 6 gezeigt, kann der Programmiersteuerung 622 die Spaltendecodiererschaltung 618 steuern, indem sie ein Spaltendecodierer-Steuersignal CTRLCD an die Spaltendecodiererschaltung 618 ausgibt. Die Spaltendecodiererschaltung 618 kann auf das Spaltendecodierer-Steuersignal CTRLCD reagieren, indem sie in einem Zustand eingerichtet wird, der einem Pegel oder Wert des Spaltendecodierer-Steuersignals CTRLCD entspricht, wie beispielsweise durch Ein- und Ausschalten verschiedener Schalter.
-
Die Programmiersteuerung 622 kann das Spaltendecodierer-Steuersignal CTRLCD basierend auf physischen Adressinformationen ausgeben, die die ausgewählten Speicherzellen identifizieren. Außerdem kann die Programmiersteuerung 622 das Spaltendecodierer-Steuersignal CTRLCD basierend auf Programmierzuständen der ausgewählten Speicherzellen ausgeben. Basierend auf den Programmierzuständen kann die Programmiersteuerung 622 das Spaltendecodierer-Steuersignal CTRLCD ausgeben, so dass der Spaltendecodierer 618 während der Programmierphasen die Ausgewählte-Bitleitung-Spannung VBLS an Bitleitungen leitet oder liefert, die mit unzureichend programmierten ausgewählten Speicherzellen gekoppelt sind und die Nichtausgewählte-Bitleitung-Spannung VBLU an Bitleitungen leitet oder liefert, die mit ausreichend programmierten ausgewählten Speicherzellen gekoppelt sind.
-
In Bezug auf die Sourceleitungs-Spannungsversorgungsschaltung 610 ist die Programmiersteuerung 622 so eingerichtet, dass sie die Sourceleitungs-Spannungsversorgungsschaltung 610 so steuert, dass sie die Sourceleitungsspannung VSL an die Sourceleitung SL auf Programmierpegeln während der Programmierphasen liefert, anlegt oder ausgibt. In einigen beispielhaften Konfigurationen, wie in 6 gezeigt, kann die Programmiersteuerung 622 ein Sourceleitungs-Spannungssteuersignal CTRLSLV ausgeben, um die Sourceleitungs-Spannungsversorgungsschaltung 610 so zu steuern, dass sie die Sourceleitungsspannung VSL auf dem zugehörigen Programmierpegel erzeugt.
-
Während eines Programmiervorgangs richtet die Programmiersteuerung 622 die Wortleitungen, die Bitleitungen und die SGD-Leitungen des Blocks 602 in ausgewählten Zuständen und nicht ausgewählten Zuständen ein, um ausgewählte Speicherzellen in ihre Zielspeicherzustände zu programmieren, während die nicht ausgewählten Speicherzellen in ihren anfänglichen Speicherzuständen gehalten werden. Eine Wortleitung in einem ausgewählten Zustand wird als ausgewählt und/oder als ausgewählte Wortleitung bezeichnet. Eine Wortleitung in einem nichtausgewählten Zustand wird als nichtausgewählt und/oder als eine nichtausgewählte Wortleitung bezeichnet. Eine Bitleitung in einem ausgewählten Zustand wird als ausgewählt und/oder als ausgewählte Bitleitung bezeichnet. Eine Bitleitung in einem nichtausgewählten Zustand wird als nichtausgewählt und/oder als eine nichtausgewählte Bitleitung bezeichnet. Eine SGD-Leitung in einem ausgewählten Zustand wird als ausgewählt und/oder als ausgewählte SGD-Leitung bezeichnet. Eine SGD-Leitung in einem nichtausgewählten Zustand wird als nichtausgewählt und/oder als eine nichtausgewählte SGD-Leitung bezeichnet.
-
Eine ausgewählte Wortleitung (oder ausgewählte Wortleitungsschicht) eines Programmiervorgangs ist eine Wortleitung (oder Wortleitungsschicht), die während eines Programmiervorgangs mit ausgewählten Speicherzellen gekoppelt ist. Eine ausgewählte Wortleitung kann während Programmierphasen eines Programmiervorgangs unterschiedliche Rollen oder unterschiedliche Funktionen ausführen. Mindestens bei der NAND-Technologie legt eine ausgewählte Wortleitung während einer Programmierphase eine Ausgewählte-Wortleitung-Spannung auf einem zugeordneten Programmierpegel, die als Programmier-Gate-Spannungsimpuls bezeichnet wird (oder nur als Programmierspannungsimpuls oder Programmierimpuls), an ausgewählte Speicherzellen an und/oder spannt ausgewählte Speicherzellen mit einem Programmierimpuls vor, z. B. durch Anlegen eines Programmierimpulses an Steuergates ausgewählter Speicherzellen und/oder durch Vorspannen der Steuergates ausgewählter Speicherzellen mit einem Programmierimpuls während der Programmierphase.
-
Eine nichtausgewählte Wortleitung (oder nichtausgewählte Wortleitungsschicht) eines Programmiervorgangs ist eine Wortleitung (oder Wortleitungsschicht), die während eines Programmiervorgangs mit keinen ausgewählten Speicherzellen gekoppelt ist. Zusätzlich oder alternativ dazu ist eine nichtausgewählte Wortleitung eines Programmiervorgangs eine Wortleitung, die nicht mindestens einen Programmierimpuls an mindestens eine ausgewählte Speicherzelle während eines Programmiervorgangs anlegt. Bei Programmiervorgängen, die auf einen bestimmten Bereich der Speicherzellenstruktur 142 beschränkt sind, sind die nichtausgewählten Wortleitungen diejenigen Wortleitungen in dem bestimmten Bereich, die nicht die ausgewählte Wortleitung sind. Beispielsweise sind bei einen Programmiervorgang, bei dem die ausgewählten Speicherzellen mit derselben Wortleitung gekoppelt sind (oder in derselben Wortleitungsschicht angeordnet sind), die nichtausgewählten Wortleitungen die Wortleitungen des Blocks, die nicht die ausgewählte Wortleitung sind.
-
Eine ausgewählte Bitleitung eines Programmiervorgangs ist eine Bitleitung, die es ermöglicht oder gestattet, dass eine ausgewählte Speicherzelle, die mit der ausgewählten Bitleitung gekoppelt ist, programmiert wird. Eine nichtausgewählte Bitleitung eines Programmiervorgangs ist eine Bitleitung, die eine ausgewählte Speicherzelle, die mit der nichtausgewählten Bitleitung gekoppelt ist, hemmt, sperrt oder verriegelt, so dass sie nicht programmiert oder geprüft wird. Während einer Programmierphase eines Programmiervorgangs ist eine nichtausgewählte Bitleitung eine Bitleitung, die eine ausgewählte Speicherzelle in einem Programmiersperrzustand einrichtet, um die ausgewählte Speicherzelle zu hemmen, zu sperren oder zu verriegeln, damit sie während der Programmierphase nicht programmiert wird.
-
Außerdem ist eine ausgewählte SGD-Leitung eines Programmiervorgangs eine SGD-Leitung, die es ermöglicht oder gestattet, dass ausgewählte Speicherzellen, die mit der SGD-Leitung gekoppelt sind, programmiert oder geprüft werden. Während einer Programmierphase eines Programmiervorgangs ist eine ausgewählte SGD-Leitung eine SGD-Leitung, die eine ausgewählte Speicherzelle in einem Programmierfreigabezustand einrichtet, um zu ermöglichen oder zu gestatten, dass die ausgewählte Speicherzelle während der Programmierphase programmiert wird. Eine nichtausgewählte SGD-Leitung eines Programmiervorgangs ist eine SGD-Leitung, die nichtausgewählte Speicherzellen, die mit der SGD-Leitung gekoppelt sind, hemmt, sperrt oder verriegelt, so dass sie nicht programmiert oder geprüft werden. Die SGD-Leitung kann diese nichtausgewählten Speicherzellen hemmen, sperren oder verriegeln, so dass sie nicht programmiert oder geprüft werden, obwohl sie mit ausgewählten Bitleitungen und/oder ausgewählten Wortleitungen gekoppelt sein können. Während einer Programmierphase eines Programmiervorgangs kann eine nichtausgewählte Speicherzelle, die in derselben Wortleitungsschicht wie eine ausgewählte Speicherzelle angeordnet ist, während der Programmierphase mit einer ausgewählten Bitleitung gekoppelt sein. Die nichtausgewählte SGD-Leitung, die mit dieser nichtausgewählten Speicherzelle gekoppelt ist, ist eine SGD-Leitung, die die nichtausgewählte Speicherzelle in dem Programmiersperrzustand einrichtet, so dass die nichtausgewählte Speicherzelle während der Programmierphase nicht programmiert wird, obwohl sie mit der ausgewählten Bitleitung gekoppelt ist.
-
Zu jedem gegebenen Zeitpunkt während eines Programmiervorgangs weisen die Wortleitungen, die Bitleitungen und die SGD-Leitungen jeweilige ausgewählte Zustände auf. Ein ausgewählter Zustand einer Steuerleitung ist eine Zustandskennung, die identifiziert, ob die Steuerleitung eine ausgewählte Steuerleitung oder eine nichtausgewählte Steuerleitung ist. Während des Verlaufs oder der Dauer eines Programmiervorgangs kann der ausgewählte Zustand einer Steuerleitung gleich bleiben oder sich ändern. Bei einem ausgewählten Zustand einer Steuerleitung, der sich ändert, kann die Änderung vom ausgewählten Zustand in den nichtausgewählten Zustand oder vom nichtausgewählten Zustand in den ausgewählten Zustand erfolgen. Außerdem kann bei einem ausgewählten Zustand einer Steuerleitung, der sich ändert, die Änderung innerhalb einer einzigen Programmierschleife oder über mehrere Programmierschleifen hinweg auftreten.
-
Die Programmiersteuerung 622 kann jede der Wortleitungen WLL, der Bitleitungen BL und der SGD-Leitungen als ausgewählt oder nichtausgewählt identifizieren und jede der Wortleitungen WLL, der Bitleitungen BL und der SGD-Leitungen in ausgewählten oder nichtausgewählten Zuständen entsprechend der Identifikationen einrichten. Insbesondere richtet die Programmiersteuerung 622 gemäß den Identifikationen jede der Wortleitungen WLL als eine ausgewählte Wortleitung oder eine nichtausgewählte Wortleitung, jede der Bitleitungen BL als eine ausgewählte Bitleitung oder eine nichtausgewählte Bitleitung und jede der SGD-Leitungen als eine ausgewählte SGD-Leitung oder eine nichtausgewählte SGD-Leitung ein.
-
Die Programmiersteuerung 622 richtet jede der Wortleitungen WLL, der Bitleitungen BL und der SGD-Leitungen in ausgewählten und nicht ausgewählten Zuständen ein, indem sie ihnen jeweils ausgewählte und nichtausgewählte Spannungen zuführt oder sie damit vorspannt. Insbesondere richtet die Programmiersteuerung 622 eine Wortleitung als eine ausgewählte Wortleitung ein, indem sie dieser Wortleitung die Ausgewählte-Wortleitung-Spannung VWLS zuführt oder an sie anlegt und/oder die Wortleitung mit der Ausgewählte-Wortleitung-Spannung VWLS vorspannt. Die Wortleitung, die die Ausgewählte-Wortleitung-Spannung VWLS empfängt oder mit ihr vorgespannt wird, wird zu einer ausgewählten Wortleitung oder als solche eingerichtet und erzeugt eine Ausgewählte-Wortleitung-Spannung, indem sie ihre Spannung auf einem Ausgewählte-Wortleitung-Pegel erzeugt. In ähnlicher Weise richtet die Programmiersteuerung 622 eine Wortleitung als eine nichtausgewählte Wortleitung ein, indem sie dieser Wortleitung die Nichtausgewählte-Wortleitung-Spannung VWLU zuführt oder an sie anlegt und/oder die Wortleitung mit der Nichtausgewählte-Wortleitung-Spannung VWLU vorspannt. Die Wortleitung, die die Nichtausgewählte-Wortleitung-Spannung VWLU empfängt oder mit ihr vorgespannt wird, wird zu einer nichtausgewählten Wortleitung oder als solche eingerichtet und erzeugt eine Nichtausgewählte-Wortleitung-Spannung, indem sie ihre Spannung auf einem Nichtausgewählte-Wortleitung-Pegel erzeugt.
-
In ähnlicher Weise richtet die Programmiersteuerung 622 eine SGD-Leitung als eine ausgewählte SGD-Leitung ein, indem sie dieser SGD-Leitung die Ausgewählte-SGD-Leitung-Spannung VSGDS zuführt oder an sie anlegt und/oder die SGD-Leitung mit der Ausgewählte-SGD-Leitung-Spannung VSGDS vorspannt. Die SGD-Leitung, die die Ausgewählte-SGD-Leitung-Spannung VSGDS empfängt oder mit ihr vorgespannt wird, wird zu einer ausgewählten SGD-Leitung oder als solche eingerichtet und erzeugt eine Ausgewählte-SGD-Leitung-Spannung, indem sie ihre Spannung auf einem Ausgewählte-SGD-Leitung-Pegel erzeugt. In ähnlicher Weise richtet die Programmiersteuerung 622 eine SGD-Leitung als eine nichtausgewählte SGD-Leitung ein, indem sie dieser SGD-Leitung die Nichtausgewählte-SGD-Leitung-Spannung VSGDU zuführt oder an sie anlegt und/oder die SGD-Leitung mit der Nichtausgewählte-SGD-Leitung-Spannung VSGDU vorspannt. Die SGD-Leitung, die die Nichtausgewählte-SGD-Leitung-Spannung VSGDU empfängt oder mit ihr vorgespannt wird, wird zu einer nichtausgewählten SGD-Leitung oder als solche eingerichtet und erzeugt eine Nichtausgewählte-SGD-Leitung-Spannung, indem sie ihre Spannung auf einem Nichtausgewählte-SGD-Leitung-Pegel erzeugt.
-
Die Ausgewählt- und Nichtausgewählt-Pegel, auf denen die Wortleitungen und SGD-Leitungen ihre jeweiligen Spannungen erzeugen, können den Spannungspegeln der Ausgewählte- und Nichtausgewählte-Wortleitung-Spannungen und -SGD-Leitung-Spannungen VWLS, VWLU, VSGDS, VSGDU gleich sein oder sich von ihnen unterscheiden. Zum Beispiel kann die Zeilendecodiererschaltung 614 einen Spannungsabfall bereitstellen, so dass die ausgewählten und nichtausgewählten Wortleitungen und SGD-Leitungen ihre jeweiligen Ausgewählte- und Nichtausgewählte-Spannungen auf Pegeln erzeugen oder mit ihnen vorgespannt werden, die niedriger sind als die Pegel, auf denen die Steuergateleitungs-Spannungserzeugungsschaltung 612 die Ausgewählte- und Nichtausgewählte-Wortleitung-Spannungen und -SGD-Leitung-Spannungen VWLS, VWLU, VSGDS, VSGDU erzeugt. Bei solchen Beispielkonfigurationen ist die Steuergateleitungs-Spannungserzeugungsschaltung 612 so eingerichtet, dass sie die Ausgewählte- und Nichtausgewählte-Wortleitung-Spannungen und -SGD-Leitung-Spannungen VWLS, VWLU, VSGDS, VSGDU, sowie die SGS-Leitungsspannung VSGS auf ausreichend hohen Pegeln erzeugt, um eine ausreichende Vorspannung der Steuergateleitungen SGD, WLL, SGSL zu erreichen.
-
Bei einigen Beispielkonfigurationen werden die Ausgewählte- und Nichtausgewählte-Wortleitung-Spannungen und -SGD-Leitung-Spannungen VWLS, VWLU, VSGDS, VSGDU als globale Ausgewählte- und Nichtausgewählte-Spannungen bezeichnet, und die Ausgewählte- und Nichtausgewählte-Spannungen, die die Wortleitungen und SGD-Leitungen erzeugen und/oder mit denen sie vorgespannt werden, werden als lokale Ausgewählte- und Nichtausgewählte-Spannungen bezeichnet. In ähnlicher Weise erzeugt die Steuergateleitungs-Spannungserzeugungsschaltung 612 eine globale SGS-Leitungsspannung VSGS, und die SGS-Leitung SGSL erzeugt eine lokale SGS-Leitungsspannung VSGS oder ist mit ihr vorgespannt. In diesem Zusammenhang erzeugt die Steuergateleitungs-Spannungsversorgungsschaltung 606 globale Steuergateleitungsspannungen, einschließlich der globalen Ausgewählte- und Nichtausgewählte-Steuergateleitungsspannungen und liefert oder leitet die globalen Steuergateleitungsspannungen an die Steuergateleitungen des Blocks 602. Als Reaktion erzeugen die Steuergateleitungen des Blocks 602 jeweils lokale Steuergateleitungsspannungen. Ausgewählte Steuergateleitungen erzeugen lokale Ausgewählte-Steuergateleitungsspannungen oder Spannungen auf lokalen Ausgewählt-Pegeln, und nichtausgewählte Steuergateleitungen erzeugen lokale Nichtausgewählte-Steuergateleitungsspannungen oder Spannungen auf lokalen Ausgewählt-Pegeln. Der Einfachheit halber wird hierin nicht ausdrücklich zwischen den Pegeln, einschließlich der Ausgewählt- und Nichtausgewählt-Pegeln, der Steuergateleitungsspannungen unterschieden, die die Steuergateleitungs-Spannungserzeugungsschaltung 612 erzeugt, und den Pegeln, einschließlich der Ausgewählt- und Nichtausgewählt-Pegeln, der Steuergateleitungsspannungen, die die Steuergateleitungen erzeugen.
-
Außerdem richtet die Programmiersteuerung 622 eine Bitleitung als eine ausgewählte Bitleitung ein, indem sie dieser Bitleitung die Ausgewählte-Bitleitung-Spannung VBLS zuführt oder an sie anlegt und/oder die Bitleitung mit der Ausgewählte-Bitleitung-Spannung VBLS vorspannt. Die Bitleitung, die die Ausgewählte-Bitleitung-Spannung VBLS empfängt oder mit ihr vorgespannt wird, wird zu einer ausgewählten Bitleitung oder als solche eingerichtet und erzeugt eine Ausgewählte-Bitleitung-Spannung, indem sie ihre Spannung auf einem Ausgewählte-Bitleitung-Pegel erzeugt. In ähnlicher Weise richtet die Programmiersteuerung 622 eine Bitleitung als eine nichtausgewählte Bitleitung ein, indem sie dieser Bitleitung die Nichtausgewählte-Bitleitung-Spannung VBLU zuführt oder an sie anlegt und/oder die Bitleitung mit der Nichtausgewählte-Bitleitung-Spannung VBLU vorspannt. Die Bitleitung, die die Nichtausgewählte-Bitleitung-Spannung VBLU empfängt oder mit ihr vorgespannt wird, wird zu einer nichtausgewählten Bitleitung oder als solche eingerichtet und erzeugt eine Nichtausgewählte-Bitleitung-Spannung, indem sie ihre Spannung auf einem Nichtausgewählte-Bitleitung-Pegel erzeugt.
-
Die Ausgewählt- und Nichtausgewählt-Pegel, auf denen die Bitleitungen ihre jeweiligen Spannungen erzeugen, können den Spannungspegeln der Ausgewählte- und Nichtausgewählte-Bitleitung-Spannungen VSLS, VBLU, gleich sein oder sich von ihnen unterscheiden. Zum Beispiel können die Spaltendecodiererschaltung 618 und/oder die Abtastschaltungen 620 einen oder mehrere Spannungsabfälle dergestalt bereitstellen, dass die ausgewählten und nichtausgewählten Bitleitungen ihre jeweiligen Ausgewählte- und Nichtausgewählte-Bitleitung-Spannungen auf Pegeln erzeugen oder mit ihnen vorgespannt werden, die niedriger sind als die Pegel, auf welchen die Bitleitungs-Spannungserzeugungsschaltung 616 die Ausgewählte- und Nichtausgewählte-Bitleitung-Spannungen VSLS, VBLU erzeugt. Bei solchen Beispielkonfigurationen ist die Bitleitungs-Spannungserzeugungsschaltung 616 eingerichtet, um die Ausgewählte- und Nichtausgewählt-Bitleitung-Spannungen VSLS, VBLU auf ausreichend hohen Pegeln zu erzeugen, um eine geeignete Vorspannung der Bitleitungen zu erreichen.
-
Bei einigen beispielhaften Konfigurationen werden die Ausgewählte- und Nichtausgewählte-Bitleitung-Spannungen VBLS, VBLU, als globale Ausgewählte- und Nichtausgewählte-Bitleitung-Spannungen bezeichnet, und die Ausgewählte- und Nichtausgewählte-Spannungen, welche die Bitleitungen erzeugen und/oder mit denen sie vorgespannt werden, werden als lokale Ausgewählte- und Nichtausgewählte-Bitleitung-Spannungen bezeichnet. In diesem Zusammenhang erzeugt die Bitleitungs-Spannungsversorgungsschaltung 608 globale Bitleitungsspannungen, einschließlich der globalen Ausgewählte- und Nichtausgewählte-Bitleitung-Spannungen und liefert oder leitet die globalen Bitleitungsspannungen an die Bitleitungen des Blocks 602. Als Reaktion erzeugen die Bitleitungen die jeweiligen lokalen Bitleitungsspannungen. Ausgewählte Bitleitungen erzeugen lokale Ausgewählte-Bitleitung-Spannungen oder Spannungen auf lokalen Ausgewählt-Pegeln, und nichtausgewählte Bitleitungen erzeugen lokale Nichtausgewählte-Bitleitung-Spannungen oder Spannungen auf lokalen Ausgewählt-Pegeln. Der Einfachheit halber wird hierin nicht ausdrücklich zwischen den Pegeln, einschließlich der Ausgewählt- und Nichtausgewählt-Pegeln, der Bitleitungsspannungen unterschieden, die die Bitleitungs-Spannungserzeugungsschaltung 616 erzeugt, und den Pegeln, einschließlich der Ausgewählt- und Nichtausgewählt-Pegeln, der Bitleitungsspannungen, die die Bitleitungen erzeugen.
-
Wie zuvor beschrieben, kann die Programmiersteuerung 622 jede der Wortleitungen, Bitleitungen und SGD-Leitungen als ausgewählt oder nicht ausgewählt während eines Programmiervorgangs identifizieren oder zuweisen. Die Bestimmungen oder Identifikationen, welche die Programmiersteuerung 622 vornimmt, um jede der Wortleitungen, SGD-Leitungen und Bitleitungen als ausgewählt oder nichtausgewählt zuzuweisen, kann von der physischen Position der ausgewählten Speicherzellen abhängen, die programmiert werden, den Zielspeicherzuständen der ausgewählten Speicherzellen, den Programmierzuständen der ausgewählten Speicherzellen, und der bestimmten Programmierphase, die zu einem gegebenen Zeitpunkt des Programmiervorgangs ausgeführt wird.
-
In einem beispielhaften Programmiervorgang kann die Programmierschaltung 600 einen Programmiervorgang zum Programmieren von Daten (wie etwa eine oder mehrere Seiten von Daten) in eine ausgewählte Wortleitungszellengruppe 628 des Blocks 602 ausführen. Im Allgemeinen ist eine ausgewählte Wortleitungszellengruppe eine Wortleitungszellengruppe, die ausgewählte Speicherzellen einschließt, die während des Programmiervorgangs programmiert werden. Der Wortleitungszellengruppen, die keine ausgewählten Speicherzellen einschließen, d. h., die nichtausgewählte Speicherzellen einschließen, sind nichtausgewählte Wortleitungszellengruppen des Programmiervorgangs.
-
7 ist ein Blockdiagramm einer beispielhaften Leseschaltung 700, die so eingerichtet ist, dass sie Lesevorgänge zum Lesen von Daten aus einem Block 704 ausführt. Der Block 704 kann derselbe oder ein ähnlicher Block wie der Block 602 von 6 sein. 7 zeigt den Block 704 als die gleiche Konfiguration von Steuerleitungen einschließend wie der Block 602 von 6. Zusätzlich oder alternativ kann der Block 704 ein Block der Speicherzellenstruktur 142 sein, einer der Blöcke BLK in den 3A, 3B oder 4A, den physischen Aufbau oder die Struktur des Blocks 410 in 4B, 4C aufweisen, und/oder die Schaltungskonfiguration des Blocks 480 in 4D aufweisen.
-
Eine Leseschaltung ist eine Schaltung oder eine Sammlung von Schaltungen oder Schaltungskomponenten, die Lesevorgänge durchführt. Ein Lesevorgang ist ein Speichervorgang, der durchgeführt wird, um Zustände ausgewählter Speicherzellen zu lesen oder zu erfassen. Dementsprechend sind ausgewählte Speicherzellen diejenigen Speicherzellen, aus denen Zustände während Lesevorgängen gelesen oder abgetastet werden. Auch sind nicht ausgewählte Speicherzellen eines Lesevorgangs diejenigen Speicherzellen, aus denen während des Lesevorgangs keine Zustände gelesen oder abgetastet werden.
-
Ein Zustand einer ausgewählten Speicherzelle oder einer Vielzahl von Speicherzellen ist eine Bedingung oder ein Zustand der ausgewählten Speicherzelle(n). Der Zustand kann eine(r) von einer Vielzahl von möglichen vorbestimmten Bedingungen oder Zuständen sein, in denen die ausgewählten(n) Speicherzelle(n) sein kann. Zusätzlich kann ein Zustand einer ausgewählten Speicherzelle oder einer Vielzahl von ausgewählten Speicherzellen eine beliebige von verschiedenen Arten von Zuständen sein. Ein Zustandstyp kann sich auf einen Speichervorgang beziehen oder für diesen spezifisch sein. Ein Zustandstyp ist ein Lesezustand, welcher der Speicherzustand einer ausgewählten Speicherzelle und/oder ein Zustand ist, der angibt, ob eine ausgewählte Speicherzelle eine Schwellenspannung oberhalb oder unterhalb eines Leseimpulspegels eines an eine ausgewählte Wortleitung angelegten Leseimpulses aufweist. Ein anderer Zustandstyp ist ein Schlüsselzustand, der ein Zustand ist, der angibt, ob eine Sammlung, wie beispielsweise eine Kette, ausgewählter Speicherzellen einen Schlüssel speichert, der mit einem Zielschlüssel übereinstimmt, und/oder ein Zustand, der angibt, ob die NAND-Kette elektrischen Strom leitet, als Reaktion darauf, dass sie gemäß einer vorbestimmten Vorspannungsbedingung vorgespannt wird.
-
Die Leseschaltung 700 ist eingerichtet, Lesevorgänge durchzuführen, indem Abtastvorgänge durchgeführt werden, um Zustände aus ausgewählten Speicherzellen zu lesen oder abzutasten. Ein Abtastvorgang ist ein Speichervorgang, der durchgeführt wird, um eine Reaktion einer oder mehrerer ausgewählter Speicherzellen als Reaktion auf eine Vorspannung bei einer vorbestimmten Vorspannungseinstellung zu bestimmen. Die Vorspannung kann jede der verschiedenen Arten von Vorspannungen sein, einschließlich einer beliebigen Anzahl von Vorspannungen oder jeder Art von Vorspannung, wie beispielsweise eine Spannung, ein Strom oder eines von verschiedenen Signalen wie Gleichstromsignale (DC) oder Wechselstromsignale (AC), verdrahtet oder drahtlos, die ein Verhalten der Speicherzelle beeinflussen oder eine Reaktion der Speicherzelle(n) auslösen können. Die vorbestimmte Vorspannungseinstellung schließt die Eigenschaften oder Merkmale der Vorspannung ein, wie die Größe, Frequenz, das Tastverhältnis, die Wellenform oder beliebige andere Eigenschaften oder Merkmale, die eine Vorspannung definieren können. Die Leseschaltung 700 legt die Vorspannung entsprechend den Vorspannungsbedingungen an eine Vielzahl von Speicherzellen an, um die Reaktion der ausgewählten Speicherzelle(n) zu bestimmen. Eine Reaktion der ausgewählten Speicherzelle(n), wenn sie der Vorspannung ausgesetzt wird/werden, übermittelt oder kommuniziert den Zustand der ausgewählten Speicherzelle(n).
-
Eine Reaktion der Speicherzelle, die während eines Abtastvorgangs erzeugt wird, kann eine von verschiedenen messbaren Eigenschaften eines elektrischen Signals sein, wie beispielsweise eine Gleich- oder Wechselspannung oder ein Gleich- oder Wechselstrom oder eine elektromagnetische Welle, welche die ausgewählte(n) Speicherzelle(n) als Reaktion auf eine Vorspannung während des Abtastvorgangs erzeugen, leiten, induzieren, aussenden, abstrahlen oder anderweitig erzeugen kann. Beispiele messbarer Eigenschaften können eine Größe, eine Menge, ein Pegel, eine Frequenz, ein Anstieg, ein Tastverhältnis, eine Pulsbreite, ein Wellenformtyp (z. B. sinusförmig, rechteckig, sägezahnartig), eine Änderungsrate (z. B. eine Verfallsgeschwindigkeit oder eine Anstiegsrate), eine Modulation oder ein Signal-Rausch-Verhältnis als nicht limitierende Beispiele sein. Die Art der Reaktion und der Wert der Reaktion, die gemessen oder erfasst werden, können von einem Speicherparameter der ausgewählten Speicherzelle(n) und dem Pegel, Wert oder Zustand des Speicherparameters abhängen, der wiederum den Zustand der ausgewählten Speicherzelle(n) anzeigt.
-
Zumindest bei der NAND-Technologie ist die Reaktion einer ausgewählten Speicherzelle ein Strom, den die ausgewählte(n) Speicherzelle(n) durch eine Bitleitung zieht oder ziehen lässt. Während eines Abtastvorgangs wird eine/werden ausgewählte Speicherzelle(n) mit einer Vorspannung bei vorbestimmten Einstellungen vorgespannt, um zu bewirken, dass die ausgewählte(n) Speicherzelle(n) einen Strom durch eine Bitleitung zieht/ziehen. Eine Strommenge, welche die ausgewählte(n) Speicherzelle(n) zieht oder ziehen lässt/lassen, hängt von einem Schwellenspannungspegel (oder Pegeln) der ausgewählten Speicherzelle(n) ab und zeigt wiederum einen Zustand an, wie beispielsweise einen Lesezustand oder einen Schlüsselzustand der ausgewählten Speicherzelle(n).
-
Außerdem schließt die Vorspannung, die während eines Abtastvorgangs angelegt wird, mindestens für die NAND-Technologie eine Vielzahl von Spannungen ein, die an die Steuerleitungen eines Blocks angelegt werden, der die ausgewählten Speicherzellen einschließt. Die Leseschaltung 700 kann eine Spannungsversorgungsschaltung einschließen, die eingerichtet ist, um die Spannungen zu erzeugen und die Spannungen an die Steuerleitungen anzulegen, die wiederum die Speicherzellen vorspannen. Für zumindest einige beispielhafte Konfigurationen, wie die in 7 gezeigte, kann die Leseschaltung 700 die gleiche Spannungsversorgungsschaltung 604 wie die Programmierschaltung 600 in 6 einschließen, sodass die Spannungsversorgungsschaltung 604 und ihre Komponenten auf die gleiche Weise gekennzeichnet oder nummeriert sind, wie sie es in 6 sind.
-
Für Lesevorgänge ist die Spannungsversorgungsschaltung 604 eingerichtet, um Lesespannungen oder Spannungen bei Lesepegeln zu erzeugen und den Steuerleitungen zuzuführen, anstatt Spannungen zu programmieren. In bestimmten beispielhaften Konfigurationen kann die Spannungsversorgungsschaltung 604 separate Schaltungskomponenten einschließen, um separate Lesespannungen für die Lesevorgänge zu erzeugen und diese Lesespannungen anstatt der Programmierspannungen während der Lesevorgänge an die Steuerleitungen zu liefern. Für andere beispielhafte Konfigurationen kann die Spannungsversorgungsschaltung 604 die gleichen Schaltungskomponenten einschließen, um die Programmier- und Lesespannungen zu erzeugen, und kann eingerichtet sein, um die Pegel der Spannungen nach Bedarf zu ändern oder anzupassen, um Programmier- und Lesevorgänge durchzuführen.
-
Während Lesevorgängen ist die Bitleitungsspannungsversorgungsschaltung 608 der Spannungsversorgungsschaltung 604 eingerichtet, um gelesene ausgewählte und nicht ausgewählte Bitleitungsspannungen VSLS, VBLU (oder ausgewählte und nicht ausgewählte Bitleitungsspannungen VSLS, VBLU auf Lesepegeln an die ausgewählten und nicht ausgewählten Bitleitungen des Blocks zu liefern oder anzulegen, und die Steuergateleitungsspannungsversorgungsschaltung 606 eingerichtet ist, Lesesteuergateleitungsspannungen (oder Steuergateleitungsspannungen auf Lesepegeln) an die Steuergateleitungen des Blocks zu liefern oder anzulegen. Insbesondere ist die Steuergateleitungsspannungsversorgungsschaltung eingerichtet, um eine gelesene ausgewählte SGD-Leitungsspannung VSGDS (oder eine ausgewählte SGD-Leitungsspannung auf einem Lesepegel) an eine ausgewählte SGD-Leitung des Blocks 704, eine gelesene nicht ausgewählte SGD-Leitungsspannung VSGDU (oder eine nicht ausgewählte SGD-Leitungsspannung auf einem Lesepegel) an nicht ausgewählte SGD-Leitungen des Blocks 704, eine gelesene ausgewählte Wortleitungsspannung VWLS, wie beispielsweise in Form eines Lesegate-Spannungsimpulses (oder nur eines Lesespannungsimpulses oder eines Leseimpulses), an eine ausgewählte Wortleitung des Blocks 704, einer Lesespannung VWLU für nicht ausgewählte Wortleitungen (oder einer Spannung für nicht ausgewählte Wortleitungen auf einem Lesepegel) an nicht ausgewählte Wortleitungen des Blocks 704 und einer Lese-SGS-Leitungsspannung VSGS (oder einer SGS-Leitungsspannung auf einem Lesepegel) an die SGS-Leitung des Blocks 704 zu liefern oder anzulegen. Die Sourceleitungs-Spannungsversorgungsschaltung 610 ist eingerichtet, um eine Lese-Sourceleitungsspannung VSL oder eine Source-Leitungsspannung (auf einem Lesepegel) an die Source-Leitung des Blocks zu liefern oder anzulegen.
-
In bestimmten beispielhaften Konfigurationen, wie in 7 gezeigt, kann die Bitleitungsspannungserzeugungsschaltung 616 die ausgewählten und nicht ausgewählten Bitleitungsspannungen VSLS, VBLU auf Lesepegeln erzeugen, und der Spaltendecodierer 618 kann die ausgewählten und nicht ausgewählten Bitleitungsspannungen VSLS, VBLU an die Bitleitungen des Blocks 704 liefern. Außerdem kann die Steuergateleitungs-Spannungserzeugungsschaltung 606 die Steuergateleitungsspannungen auf Lesepegeln erzeugen, und die Zeilendecodiererschaltung 614 kann die ausgewählten und nicht ausgewählten Steuergateleitungsspannungen an die Steuergateleitungen des Blocks 704 liefern.
-
Während die Spannungsversorgungsschaltung 604 die Steuergateleitungen mit Lesespannungen vorspannt, kann die Leseschaltung 700 Abtastvorgänge unter Verwendung der Abtastschaltungen 620 durchführen. Eine Abtastschaltung ist eine Schaltung, die eine Reaktion einer ausgewählten Speicherzelle oder einer Vielzahl von ausgewählten Speicherzellen abtastet. Die Abtastschaltung kann eine Reaktion abtasten, während Steuerleitungen mit einer vorbestimmten Vorspannungseinstellung vorgespannt sind. Eine Abtastschaltung kann die Reaktion erfassen, indem sie das Vorhandensein oder Nichtvorhandensein der Reaktion abtastet oder feststellt und/oder indem sie Menge, Pegel, Wert oder Größe der Reaktion misst. Die Abtastschaltungen 620 in 6 und 7 weisen Schaltungsstrukturen auf, die eine Verbindung zu den mit den Speicherzellen gekoppelten Bitleitungen BL herstellen, um Strompfade zu ermöglichen oder zu bilden, damit Ströme zu den Bitleitungen BL durch sie fließen können. Andere strukturelle Konfigurationen zum Ausführen der Funktion der Stromabtastung können möglich sein. Beispielsweise können andere beispielhafte Abtastschaltungen anstelle der Bitleitungen an die Wortleitungen angeschlossen werden und die Zustände der Speicherzellen basierend auf des durch die Wortleitungen gezogenen Stromflusses bestimmen. Andere beispielhafte Abtastschaltungen können eine Spannung auf einer Wortleitung oder einer Bitleitung erfassen, ohne dass diese Spannung notwendigerweise von einem Strom abhängig sein muss, der durch die ausgewählten Speicherzellen gezogen wird. Für solche Konfigurationen führt die Abtastschaltung eine Spannungserfassung statt einer Stromerfassung durch, um Zustände der ausgewählten Speicherzellen zu bestimmen.
-
Außerdem kann die Leseschaltung 700 eine Lesesteuerung 702 einschließen, die Lesevorgänge steuert. Die Lesesteuerung 702 steuert, wann Lesevorgänge beginnen und wann sie enden. Außerdem steuert eine Lesesteuerung, wann Lesephasen innerhalb eines normalen Lesevorgangs beginnen und enden. Eine Lesesteuerung steuert die Übergänge der Phasen von einer Phase zu einer nächsten Phase. Außerdem stellt der Lesesteuerung 702 die Spannungen auf den Steuerleitungen eines Blocks während Lesevorgängen ein. Die Lesesteuerung 702 kann dies durch Steuern der Spannungspegel der Spannungen, welche die Spannungsversorgungsschaltung 604 erzeugt und liefert ausführen, und wenn die Spannungsversorgungsschaltung 604 die Spannungen auf ihren bestimmten Pegeln erzeugt und liefert. Beispielsweise steuert die Programmiersteuerung 702, ob und/oder wann ausgewählte und nichtausgewählte Spannungen auf zugehörigen Lesepegeln erzeugt werden. Außerdem stellt die Lesesteuerung 702 die Spannungen auf den Steuerleitungen ein, indem sie steuert, wie Spannungen zu Steuerleitungen eines Blocks geführt werden, und kann ändern, welche Spannungen zu welchen Steuerleitungen geführt werden.
-
Außerdem kann der Lesesteuerung 702 bestimmen, wo solche Speicherzellen, Lesevorgänge durchzuführen sollen. Zum Beispiel kann die Lesesteuerung 702 bestimmen, dass Daten gelesen werden sollen, und eine Sammlung von Speicherzellen identifizieren, aus der die Daten zu lesen sind, wie beispielsweise durch Identifizieren einer Ebene, eines Blocks, einer Wortleitung und/oder einer Wortleitungszellengruppe, welche die Sammlung von Speicherzellen einschließt. Die Lesesteuerung 702 kann diese Sammlung von Speicherzellen als die ausgewählten Speicherzellen eines Lesevorgangs identifizieren.
-
In einigen Ausführungsformen kann die Lesesteuerung 702 als Reaktion auf den Empfang von Adressinformationen von der Steuerung 102 (2A) bestimmen, wo Daten gelesen werden sollen, oder anderweitig eine eindeutige physische Adresse identifizieren (z. B. eine, die eine bestimmte Ebene, einen bestimmten Block, eine bestimmte Wortleitung und/oder eine bestimmte Wortleitungszellengruppe einschließt), die eine physische Position der ausgewählten Speicherzellen identifiziert, aus der die Daten gelesen werden sollen.
-
Außerdem kann die Lesesteuerung 702 ein Bits-pro-Zelle-Speicherschema kennen oder bestimmen, unter dem Daten in ausgewählten Speicherzellen gespeichert werden. Durch Kenntnis des Speicherschemas kann die Lesesteuerung 702 wissen, ob die Speicherzellen als SLC-Zellen oder MLC-Zellen programmiert sind, wie durch das Bits-pro-Zellen-Speicherschema definiert. Außerdem kann, wenn die ausgewählten Speicherzellen als MLC-Zellen programmiert werden, die Lesesteuerung 702 die Anzahl von Bits pro Zelle kennen, die jede der MLC-Zellen speichert, wie durch das Bits-pro-Zelle-Speicherschema definiert. Die Lesesteuerung 702 kann das Vorspannen auf den Steuerleitungen steuern, um die Datenwerte der ausgewählten Speicherzellen als SLC-Zellen oder MLC-Zellen gemäß dem Speicherschema zu lesen. Außerdem kann die Lesesteuerung 702 die Vorspannung auf den Steuerleitungen steuern, um die verschiedenen Bitleitungen, Wortleitungen und SGD-Leitungen als jeweils ausgewählt oder nicht ausgewählt einzurichten.
-
Die Leseschaltung 700 ist eingerichtet, um zwei Arten von Lesevorgängen durchzuführen, einschließlich Lesevorgängen von einem inhaltsadressierbaren Speicher (CAM) und normalen (oder Nicht-CAM) Lesevorgängen. Die Leseschaltung 700 führt CAM-Lesevorgänge durch, um übereinstimmende Schlüssel gemäß einem CAM-Speicherschema zu finden. Die Leseschaltung 700 führt normale Lesevorgänge durch, um Datenwerte von Daten zu bestimmen, die ausgewählte Speicherzellen speichern. CAM-Lesevorgänge werden nachstehend im Einzelnen beschrieben.
-
In Bezug auf normale Lesevorgänge beschränkt die Leseschaltung 700 einen normalen Lesevorgang auf einen bestimmten Bereich oder Abschnitt der Speicherzellenstruktur 142. Bei solchen Ausführungsformen schließen die ausgewählten Speicherzellen einen ersten Teil oder eine erste Gruppe des jeweiligen Bereichs ein, und die nicht ausgewählten Speicherzellen schließen einen zweiten Teil oder eine zweite Gruppe des jeweiligen Bereichs ein.
-
Zumindest bei der NAND-Technologie beschränkt die Leseschaltung 700 einen normalen Lesevorgang auf einen Block. Die ausgewählten Speicherzellen eines normalen Lesevorgangs sind Teil eines ersten Satzes oder einer Gruppe von Speicherzellen des Blocks, und die nicht ausgewählten Speicherzellen sind Teil eines zweiten Satzes oder einer Gruppe von Speicherzellen des Blocks, nämlich diejenigen Speicherzellen, die nicht ausgewählte Speicherzellen sind. In bestimmten beispielhaften Ausführungsformen sind die ausgewählten Speicherzellen eines normalen Lesevorgangs in/mit derselben Wortleitung (oder Wortleitungsschicht) angeordnet oder gekoppelt und/oder sind eingerichtet, um durch dieselbe Wortleitung (oder Wortleitungsschicht) vorgespannt zu werden. In weiteren speziellen Ausführungsformen schließen die ausgewählten Speicherzellen eines normalen Lesevorgangs nur diejenigen Speicherzellen ein, die Teil derselben oder einzigen Wortleitungszellgruppe (oder Kette) sind.
-
Außerdem kann die Leseschaltung 700 in Bezug auf normale Lesevorgänge zum Lesen von Daten aus MFK-Zellen einen normalen Lesevorgang trennen oder in diskrete Lesephasen unterteilen. Eine Lesephase ist zumindest ein Abschnitt eines normalen Lesevorgangs, während dem die Leseschaltung 700 einen diskreten Satz von Leseaktionen durchführt, um zumindest Abschnitte der Datenwerte zu lesen, welche die ausgewählten Speicherzellen speichern. Wie nachstehend im Einzelnen beschrieben, kann der diskrete Satz von Leseaktionen das Anlegen eines diskreten Satzes von Vorspannungen, wie etwa Spannungen, an die Steuerleitungen des Blocks einschließen, um zumindest Abschnitte der Datenwerte aus den ausgewählten Speicherzellen zu lesen. Der diskrete Satz von Leseaktionen kann auch das Ausführen von Abtastvorgängen einschließen, um Lesezustände der ausgewählten Speicherzellen abzutasten.
-
Durch Teilen oder Trennen eines normalen Lesevorgangs in verschiedene Lesephasen ordnet die Leseschaltung 700 jede Lesephase einem anderen aus der Vielzahl von Speicherzuständen zu, in den jede der ausgewählten Speicherzellen eingerichtet werden kann. Der Speicherzustand, der einer gegebenen Lesephase zugehörig ist, wird als der zugehörige Speicherzustand der gegebenen Lesephase bezeichnet.
-
Mindestens für die NAND-Technologie führt die Leseschaltung 700 für eine gegebene Lesephase mit einem zugehörigen Speicherzustand die Lesephase durch, um zu bestimmen oder herauszufinden, welche der ausgewählten Speicherzellen in Speicherzuständen bei oder über dem zugehörigen Speicherzustand programmiert sind und welche der ausgewählten Speicherzellen in Speicherzuständen unter dem zugehörigen Speicherzustand programmiert sind. Durch Bestimmen, welche Speicherzellen sich in oder über dem zugehörigen Speicherzustand befinden und welche darunter liegen, kann es der Leseschaltung 700 ermöglicht werden, einen Abschnitt, wie beispielsweise einen Bitwert, von jedem der Datenwerte, die ausgewählten Speicherzellen speichern, zu bestimmen. Für manche beispielhaften Konfigurationen können Abschnitte eines Datenwerts durch Seitenbezeichner (z. B. obere Seite, untere Seite und mittlere Seite) bezeichnet werden, wobei jeder Seitenbezeichner einer von einer Vielzahl von Bitpositionen eines Datenwerts entspricht, wie beispielsweise dem niedrigstwertigen Bit, dem höchstwertigen Bit oder einem oder mehreren Bits zwischen dem niedrigstwertigen und dem höchstwertigen Bit. Wenn eine Lesephase durchgeführt wird, kann die Leseschaltung 700 Bitwerte von Bits bestimmter Bitpositionen der Datenwerte identifizieren, welche die ausgewählten Speicherzellen speichern.
-
Um einen normalen Lesevorgang an MFK-Zellen durchzuführen, führt die Leseschaltung 700 außerdem eine Vielzahl von Lesephasen sequentiell in einer vorbestimmten Lesereihenfolge durch. Die Lesereihenfolge kann eine Reihenfolge von Speicherzuständen sein. Wo ein gegebener Speicherzustand in der Lesereihenfolge positioniert ist, bestimmt, wann die Leseschaltung 700 eine gegebene, dem gegebenen Speicherzustand zugehörige Lesephase ausführt, relativ dazu, wann die Leseschaltung 700 die anderen Lesephasen ausführt.
-
Außerdem führt die Leseschaltung 700 zum Durchführen eines normalen Lesevorgangs, der eine Vielzahl von Lesephasen einschließt, den normalen Lesevorgang sequenziell durch, indem sie sequenziell von einer Lesephase zu einer anderen Lesephase gemäß der Lesereihenfolge übergeht. Wenn die Leseschaltung 700 eine aktuelle Lesephase beendet, identifiziert die Leseschaltung 700 eine nächste Lesephase in der Lesereihenfolge als die aktuelle Lesephase und beginnt mit der Ausführung der neuen aktuellen Lesephase. Die Leseschaltung 700 führt sequentiell die Lesephasen auf diese Weise aus, bis eine letzte Lesephase in der Lesereihenfolge ausgeführt wird. Nach dem Durchführen der letzten Lesephase kann die Leseschaltung 700 die Datenwerte aller ausgewählten Speicherzellen identifizieren.
-
Während einer normalen Lesephase kann die Leseschaltung 700 die ausgewählten Speicherzellen in einem von zwei Lesevorspannungszuständen einrichten, einschließlich eines Lesefreigabezustands und eines Lesesperrzustands. Ein Lesefreigabezustand ist ein Vorspannungszustand, der die Lesung einer ausgewählten Speicherzelle freigibt oder zulässt, d. h. die Bestimmung eines Lesezustands der ausgewählten Speicherzelle ermöglicht oder freigibt. Wenn die Leseschaltung 700 eine ausgewählte Speicherzelle in dem Lesefreigabezustand einrichtet, kann die leseaktivierte ausgewählte Speicherzelle (die gerade als eine leseaktivierte Speicherzelle bezeichnet werden kann) gelesen werden, was bedeutet, dass zumindest ein Abschnitt des Datenwerts, den die leseaktivierte Speicherzelle speichert, bestimmt werden kann. Wenn die Leseschaltung 700 einrichtet, dass eine ausgewählte Speicherzelle während einer Lesephase in dem leseaktivierten Zustand ist, kann die Leseschaltung 700 bestimmen, ob die leseaktivierte Speicherzelle in einem Speicherzustand programmiert ist, der höher oder niedriger als der zugehörige Speicherzustand der Lesephase ist.
-
Außerdem ist ein Lesesperrzustand ein Vorspannungszustand, der die Lesung einer ausgewählten Speicherzelle verhindert oder hemmt - d. h. die Bestimmung eines Lesezustands der ausgewählten Speicherzelle verhindert oder hemmt. Wenn die Leseschaltung 700 eine ausgewählte Speicherzelle in dem Lesesperrzustand einrichtet, wird verhindert oder gesperrt, dass die lesegesperrte ausgewählte Speicherzelle (die gerade als eine lesegesperrte Speicherzelle bezeichnet werden kann) gelesen wird, was bedeutet, dass zumindest ein Abschnitt des Datenwerts, den die lesegesperrte Speicherzelle speichert, nicht bestimmt werden kann. Wenn die Leseschaltung 700 eine ausgewählte Speicherzelle während einer Lesephase in dem Lesesperrzustand einrichtet, bestimmt die Leseschaltung 700 möglicherweise nicht, ob die lesegesperrte Speicherzelle in einem Speicherzustand programmiert ist, der höher oder niedriger als der zugehörige Speicherzustand der Lesephase ist.
-
Die Leseschaltung 700 legt verschiedene Vorspannungszustände, wie beispielsweise in Form von Spannungen mit unterschiedlichen Pegeln, an Bitleitungen und SGD-Leitungen, an, um jede der ausgewählten Speicherzellen in dem leseaktivierten Zustand oder dem Lesesperrzustand einzurichten. Zusätzlich oder alternativ dazu, als lesegesperrte Speicherzelle bezeichnet zu werden, kann eine ausgewählte Speicherzelle, die in dem Lesesperrzustand eingerichtet ist, als eine verriegelte Speicherzelle bezeichnet werden, da sie daran gehindert wird, während eines normalen Lesevorgangs oder einer bestimmten Phase des normalen Lesevorgangs gelesen zu werden.
-
Im Allgemeinen richtet die Leseschaltung 700 während eines normalen Lesevorgangs jede der ausgewählten Speicherzellen als leseaktivierte Speicherzellen ein, um die Datenwerte zu bestimmen, die sie speichern. Für manche beispielhafte normale Lesevorgänge kann die Leseschaltung 700 jedoch in der Lage sein, einen vollständigen Datenwert einer ausgewählten Speicherzelle zu ermitteln, bevor die Leseschaltung alle Lesephasen abschließt. In dieser Situation kann die Leseschaltung die ausgewählte Speicherzelle als eine lesegesperrte Speicherzelle für einen Rest des normalen Lesevorgangs einrichten, was verhindern kann, dass Strom durch die Bitleitung gezogen wird, die mit der lesegesperrten Speicherzelle gekoppelt ist, und den Stromverbrauch reduzieren kann.
-
Zusätzlich kann die Bitleitungs_Spannungsversorgungsschaltung 608 während eines normalen Lesevorgangs die ausgewählte Bitleitungsspannung VBLS an ausgewählte Bitleitungen liefern oder anlegen, um ausgewählte Speicherzellen, die mit den ausgewählten Bitleitungen gekoppelt sind, als leseaktivierte Speicherzellen einzurichten, und kann die nicht ausgewählte Bitleitungsspannung VBLU an nicht ausgewählte Bitleitungen liefern oder anlegen, um nicht ausgewählte Speicherzellen, die mit den nicht ausgewählten Bitleitungen gekoppelt sind, als lesegesperrte Speicherzellen zu konfigurieren. In diesem Zusammenhang richtet eine ausgewählte Bitleitung eines normalen Lesevorgangs eine Bitleitung, die mit einer ausgewählten Bitleitungsspannung vorgespannt ist, eine ausgewählte Speicherzelle als eine leseaktivierte Speicherzelle ein und/oder ermöglicht, dass eine ausgewählte Speicherzelle gelesen wird. Eine nicht ausgewählte Bitleitung eines normalen Lesevorgangs ist eine Bitleitung, die mit einer nicht ausgewählten Bitleitungsspannung vorgespannt ist, eine ausgewählte Speicherzelle als eine leseaktivierte Speicherzelle einrichtet und/oder verhindert, hemmt oder sperrt, dass eine ausgewählte Speicherzelle gelesen wird.
-
Außerdem liefert oder legt die Steuergateleitungs-Spannungsversorgungsschaltung 606 während normaler Lesevorgänge die ausgewählte SGD-Leitungsspannung VSGDS an eine ausgewählte SGD-Leitung an, um SGD-Transistoren zu aktivieren, und ermöglicht wiederum, dass ausgewählte Speicherzellen während Lesevorgängen leseaktiviert werden, und liefert oder legt die nicht ausgewählte SGD-Leitungsspannung VSGDU an nicht ausgewählte SGD-Leitungen an, um SGD-Transistoren zu sperren und wiederum bestimmte nicht ausgewählte Speicherzellen daran zu hindern, während normaler Lesevorgänge gelesen zu werden.
-
Um einen normalen Lesevorgang durchzuführen, kann die Lesesteuerung 702 eine Lesereihenfolge bestimmen und eine Vielzahl von Lesephasen gemäß der Lesereihenfolge durchführen. Außerdem kann die Bitleitungs-Spannungsversorgungsschaltung 608 ausgewählte und nicht ausgewählte Bitleitungsspannungen auf abgetasteten ausgewählten und nicht ausgewählten Bitleitungspegeln liefern oder anlegen, um ausgewählte Speicherzellen während verschiedener Lesephasen eines normalen Lesevorgangs zum Lesen zu aktivieren und zum Lesen zu sperren.
-
Außerdem kann die Steuergateleitungs-Spannungsversorgungsschaltung 606 durch Steuerung durch die Lesesteuerung 702 Leseimpulse auf Leseimpulspegeln Vr liefern, um einen normalen Lesevorgang durchzuführen. Beispielhafte Leseimpulspegel sind in den Schwellenspannungsverteilungsdiagrammen in 5A-5D gezeigt. Die Leseimpulspegel Vr können jeweils einem Speicherzustand zugehörig sein. Während eines Lesevorgangs kann, wenn die Leseschaltung 600 eine Lesephase durchführt, die einem bestimmten Speicherzustand zugehörig ist, die Steuergateleitungs-Spannungsversorgungsschaltung 608 den Leseimpuls auf dem Leseimpulspegel liefern, der dem bestimmten Speicherzustand während der Lesephase zugehörig ist. Die Leseschaltung 700 kann, wie beispielsweise durch Steuerung durch die Lesesteuerung 702, sequentiell die Lesephasen durchführen, ausführen oder durch diese übergehen, zumindest durch sequentielles Anlegen von Leseimpulsen an eine ausgewählte Wortleitung auf den verschiedenen Leseimpulspegeln Vr gemäß einer Lesereihenfolge des normalen Lesevorgangs. Die Steuergateleitungs-Spannungsversorgungsschaltung 608 kann durch die Leseimpulse übergehen, indem sie gemäß der Lesereihenfolge direkt auf den nächsten Leseimpulspegel übergeht.
-
Während einer gegebenen Lesephase, die einem gegebenen Speicherzustand eines normalen Lesevorgangs zugehörig ist, liefert oder legt die Steuergateleitungs-Spannungsversorgungsschaltung 606 einen Lesespannungsimpuls mit einem Leseimpulspegel Vr, der dem gegebenen Speicherzustand zugehörig ist, eine ausgewählte Wortleitung an. Diejenigen ausgewählten Speicherzellen mit Schwellenspannungen, die niedriger als der Leseimpulspegel Vr sind, können als Reaktion auf das Anlegen des Leseimpulses mit dem Leseimpulspegel Vr an die ausgewählte Wortleitung leiten, und diejenigen ausgewählten Speicherzellen mit Schwellenspannungen, die höher als der Leseimpulspegel Vr sind, als Reaktion auf das Anlegen des Leseimpulses mit dem Leseimpulspegel Vr an die ausgewählte Wortleitung möglicherweise nicht leiten. Zusätzlich liefert oder legt die Steuergateleitungs-Spannungsversorgungsschaltung 606 während der gegebenen Lesephase eine nicht ausgewählte Wortleitungsspannung (oder eine Wortleitungsspannung auf einem nicht ausgewählten Wortleitungspegel) an nicht ausgewählte Wortleitungen an. Die nicht ausgewählte Wortleitungsspannung liegt auf einem ausreichend hohen Pegel, um zu bewirken, dass die nicht ausgewählten Speicherzellen leiten, unabhängig von ihren jeweiligen Speicherzuständen. Auf diese Weise kann, ob eine Kette und eine Bitleitung, die mit der Ketten gekoppelt sind, leitet, vom Schwellenspannungspegel einer ausgewählten Speicherzelle der Kette relativ zum Leseimpulspegel Vr abhängen, d. h. ob der Schwellenspannungspegel der ausgewählten Speicherzelle höher oder niedriger als der Leseimpulspegel ist. Wenn der Schwellenspannungspegel der ausgewählten Speicherzelle höher ist, dann leiten die Kette und die Bitleitung nicht; und wenn der Schwellenspannungspegel der ausgewählten Speicherzelle niedriger ist, dann leiten die Kette und die Bitleitung. Wiederum, ob die Kette und die Bitleitung leiten, zeigt an, ob sich die ausgewählte Speicherzelle auf oder über dem assoziierten Speicherzustand befindet, was wiederum der Lesesteuerung 702 ermöglicht, zumindest einen Abschnitt, wie beispielsweise einen Bitwert, von jedem der Datenwerte, welche die ausgewählten Speicherzellen speichern, zu bestimmen.
-
Als eine beispielhafte Veranschaulichung kann die Steuergateleitungs-Spannungsversorgungsschaltung 606 für ein SLC-Speicherschema (z. B. 5A) während einer gegebenen Lesephase einen Leseimpuls auf einem Leseimpulspegel VrA, der dem Speicherzustand A zugehörig ist (der für SLC nur als der Programmierzustand bezeichnet werden kann), an eine ausgewählte Wortleitung liefern und kann eine nicht ausgewählte Wortleitungsspannung an nicht ausgewählte Wortleitungen liefern. Für eine gegebene Kette, die eine ausgewählte Speicherzelle im Speicherzustand A (dem Programmierzustand) einschließt, können die gegebene Kette und die Bitleitung, die mit der Kette gekoppelt sind, möglicherweise nicht leiten. Außerdem können für eine gegebene Kette, die eine ausgewählte Speicherzelle im gelöschten Zustand einschließt, die gegebene Kette und Bitleitung leiten. Basierend darauf, ob die gegebene Kette und Bitleitung leiten oder nicht, kann die Lesesteuerung 702 bestimmen, ob sich die ausgewählte Speicherzelle im gelöschten Zustand befindet und einen logischen 1-Wert speichert, oder im Speicherzustand A (dem Programmierzustand) und einen logischen 0-Wert speichert.
-
Als eine weitere beispielhafte Veranschaulichung kann für ein MFK-Speicherschema mit zwei Bits pro Zelle (z. B. 5B) während einer gegebenen Lesephase, die dem Speicherzustand B zugehörig ist, die Steuergateleitungs-Spannungsversorgungsschaltung 606 einen Leseimpuls auf einem Leseimpulspegel VrB, der dem Speicherzustand B zugehörig ist, an eine ausgewählte Wortleitung liefern und kann eine nicht ausgewählte Wortleitungsspannung an nicht ausgewählte Wortleitungen liefern. Für eine gegebene Kette, die eine ausgewählte Speicherzelle im Speicherzustand B oder Speicherzustand C einschließt, können die gegebene Kette und die Bitleitung, die mit der Kette gekoppelt sind, möglicherweise nicht leiten. Außerdem können für eine gegebene Kette, die eine ausgewählte Speicherzelle im gelöschten Zustand Er oder Speicherzustand A einschließt, die gegebene Kette und die Bitleitung, die mit dem Kette gekoppelt sind, leiten. Basierend darauf, ob die gegebene Kette und die gegebene Bitleitung leiten oder nicht, kann die Lesesteuerung 702 bestimmen, ob der niedrigere Seiten- oder niedrigstwertige Bitwert des Zwei-Bit-Datenwerts, den die ausgewählte Speicherzelle speichert, ein logischer 1-Wert (für den gelöschten Zustand oder den Speicherzustand A) oder ein logischer 0-Wert (für den Speicherzustand B oder den Speicherzustand C) ist.
-
Zusätzlich können die Abtastschaltungen 620 während einer Lesephase, während die Steuergateleitungs-Spannungsversorgungsschaltung 606 den Leseimpuls an die ausgewählte Wortleitung und die Spannung der nicht ausgewählten Wortleitung an die nicht ausgewählten Wortleitungen liefert, jeweilige Abtastvorgänge durchführen, um zu bestimmen oder abzutasten, ob die Bitleitungen BL, mit denen sie gekoppelt sind, Strom leiten. Jede Abtastschaltung 620, die einen Abtastvorgang während einer Lesephase durchführt, kann ein Abtastergebnis des Abtastvorgangs in einem bestimmten Bereich oder Ort eines Speichers, wie beispielsweise eines nichtflüchtigen Speichers oder eines Zwischenspeichers, speichern. In bestimmten beispielhaften Konfigurationen speichert eine Abtastschaltung 620 das Abtastergebnis als einen einzelnen Bitwert, wie beispielsweise einen logischen 1-Wert, um anzuzeigen, dass eine Bitleitung leitete, und einen logischen 0-Wert, um anzuzeigen, dass die Bitleitung während des Abtastvorgangs nicht leitete.
-
Außerdem führen während einer Lesephase die Vielzahl von Abtastschaltungen, die über die Bitleitungen mit den ausgewählten Speicherzellen gekoppelt sind, ihre jeweiligen Abtastvorgänge gleichzeitig oder parallel aus, sodass bis zum Ende der Lesephase jede der Abtastschaltungen ihren jeweiligen Abtastvorgang ausgeführt hat und ein Abtastergebnis für die Bitleitung und die zugehörige ausgewählte Speicherzelle erzeugt hat. In diesem Zusammenhang kann eine Vielzahl von Abtastschaltungen, die gleichzeitig jeweilige Abtastvorgänge während einer Lesephase durchführen, kollektiv als ein einzelner Abtastvorgang während der Lesephase ausführend betrachtet werden.
-
Wie erwähnt, ist die Leseschaltung 700 zusätzlich oder alternativ zur Durchführung normaler Lesevorgänge eingerichtet, CAM-Lesevorgänge gemäß CAM-Speicherschemata durchzuführen. Im Allgemeinen ist ein CAM-Lesevorgang eine Speicheroperation, die durchgeführt wird, um zu erfassen oder zu identifizieren, welche einer Vielzahl von Schlüsseln übereinstimmende Schlüssel sind, die mit einem Zielschlüssel übereinstimmen. Die Vielzahl von Schlüsseln, die während eines CAM-Lesevorgangs gelesen oder analysiert werden, kann in Blöcken der Speicherzellenstrukturen 142 gemäß einem CAM-Speicherschema gespeichert werden. Gemäß einem CAM-Speicherschema sind zumindest einige der Speicherzellenstrukturen 142 der Speicherchips 104 eingerichtet, um Daten als Schlüsseldatensatzpaare zu speichern, wie zuvor beschrieben. Ein erster Abschnitt der Speicherzellenstrukturen 142 ist eingerichtet, um Schlüssel der Schlüsseldatensatzpaare zu speichern, und ein zweiter Abschnitt der Speicherzellenstrukturen 142 ist eingerichtet, um Datensätze der Schlüsseldatensatzpaare zu speichern.
-
Zusätzlich werden unter einem CAM-Speicherschema die Schlüssel in Ketten von Speicherzellen gespeichert. Das heißt, zumindest bei NAND-Technologie werden die Daten des Schlüssels nicht in einer Wortleitungszellengruppe oder einer Seite von Speicherzellen, die mit derselben Wortleitung gekoppelt sind, gespeichert, sondern in einer Kette über mehrere Wortleitungen hinweg.
-
Wie eine Vielzahl von Schlüsseln in Ketten gespeichert sind und wie die Leseschaltung 700 CAM-Lesevorgänge durchführt, um zu erfassen, welche der Vielzahl von Schlüsseln übereinstimmende Schlüssel sind, kann von einer Art des CAM-Speicherschemas abhängen, unter dem die Schlüssel gespeichert sind. Hierin werden vier Arten von CAM-Speicherschemata beschrieben. Bei einer ersten Art von CAM-Speicherschema, das unter Bezugnahme auf 8 und 9 beschrieben ist, speichern die Ketten Schlüssel. Bei einer zweiten Art von CAM-Speicherschema, das unter Bezugnahme auf 10 beschrieben ist, speichern die Ketten Schlüssel und invertierte Schlüssel. Bei einer dritten Art von CAM-Speicherschema, das unter Bezugnahme auf 11-13 beschrieben ist, speichern die Ketten Schlüsselwörter und invertierte Schlüsselwörter. Bei einer vierten Art von CAM-Speicherschema, das unter Bezugnahme auf 14-16 beschrieben ist, speichern die Ketten Schlüsselwortabschnitte und invertierte Schlüsselwortabschnitte. Verschiedene CAM-Lesevorgänge werden unter Bezugnahme auf die vier verschiedenen Arten von CAM-Speicherschemata und ferner unter Bezugnahme auf die Leseschaltung 700 in 7 beschrieben.
-
Im Einzelnen zeigt 8 ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, das eine beispielhafte Konfiguration einer Vielzahl von Ketten S veranschaulicht, die eine Vielzahl von Schlüsseln K gemäß einer ersten Art von CAM-Speicherschema speichern. In der beispielhaften Konfiguration in 8 ist eine m-Anzahl von Ketten S1 bis Sm gleich der m-Anzahl von Bitleitungen BL1 bis BLm der Blöcke 602, 704 jeweils in 6 und 7, speichern eine m-Anzahl von Schlüsseln K1 bis Km, sodass jede der m-Anzahl von Ketten S einen anderen der m-Anzahl von Schlüsseln K speichert. Für die 3-D-NAND-Technologie kann die m-Anzahl von Ketten S1 bis Sm Teil desselben Unterblocks sein, obwohl andere Konfigurationen möglich sein können. Zusätzlich gehören in einigen Ausführungsformen die Schlüssel K zu einem gleichen Feld.
-
Jedem der Schlüssel K kann ein Bitmuster zugehörig sein, das die Attributwerte kennzeichnet, die jeder Schlüssel aufweist. Ein Bitmuster eines Schlüssels ist ein Binärwert, der eine n-Anzahl von Binärstellen oder Bits mit jeweils einem logischen 1-Wert oder einem logischen 0-Wert einschließt. Der Binärwert und/oder die Binärstellen können auch als Bitfolge des Schlüssels bezeichnet werden. Außerdem wird die n-Anzahl der Binärstellen als Kettenlänge der Kette bezeichnet.
-
Die Programmierschaltung 600 ist eingerichtet, um die Speicherzellen zu programmieren, um die Schlüssel K zu speichern. Für einen gegebenen i-ten Schlüssel Ki, der in einer gegebenen i-ten Kette Si gespeichert ist, kann die Programmierschaltung 600 die Bits in dem Schlüssel Ki in Speicherzellen der Kette Si gemäß einer beliebigen von verschiedenen Codier-, Bestell- oder Formatierungsschemata, die angeben oder anderweitig bestimmen, welche Bits des i-ten Schlüssels Ki in welchen Speicherzellen einer Kette S gespeichert sind, programmieren. Demgemäß kann die Programmsteuerung 622 eingerichtet sein, um das Bitmuster des i-ten Schlüssels Ki zu identifizieren, und basierend auf den Bitwerten des Bitmusters und dem Schema, das sie verwendet, bestimmen, wie der i-te Schlüssel Ki in die Kette Si programmiert (oder codiert) werden soll, einschließlich wie die Wortleitungen, die mit der Kette Si gekoppelt sind, vorgespannt werden sollen und auf welchen Schwellenspannungspegeln jede der Speicherzellen der Kette Si nach dem Programmieren des Schlüssels Ki in die Kette Si sein sollte. Da die Programmierschaltung 600 Schlüssel zur Speicherung empfängt, programmiert (oder codiert) sie die mit Spalten gekoppelten Ketten durch Identifizieren der Bitmuster der Schlüssel und Durchführen von Programmiervorgängen gemäß den Bitwerten des Bitmusters und des von ihr verwendeten Schemas.
-
Für manche beispielhaften Konfigurationen programmiert die Programmierschaltung 600 basierend auf dem verwendeten Schema einen i-ten Schlüssel Ki in eine Kette, sodass benachbarte oder sequenziell positionierte Bits in einem Bitmuster des i-ten Schlüssels Ki in benachbarten Speicherzellen einer Kette gespeichert werden, wobei benachbarte Speicherzellen einer Kette Speicherzellen sind, die Teil derselben Kette sind und die mit benachbarten Wortleitungen eines Blocks gekoppelt sind. Für andere beispielhafte Konfigurationen werden benachbarte oder sequentiell positionierte Bits in einem Bitmuster des i-ten Schlüssels Ki in nicht benachbarten Speicherzellen der Kette gespeichert, wobei nicht benachbarte Zellen einer Kette Speicherzellen sind, die Teil derselben Kette sind, aber mit nicht benachbarten Wortleitungen eines Blocks gekoppelt sind.
-
Um Ketten weiter zu veranschaulichen, die Schlüssel gemäß der ersten Art von CAM-Speicherschema speichern, zeigt 9 ein schematisches Teilschaltdiagramm einer beispielhaften Konfiguration von zwei Ketten, einschließlich einer j-ten Kette Sj und einer k-ten Kette Sk, die jeweils einen j-ten Schlüssel Kj und einen k-ten Schlüssel Kk speichern. Die zwei Ketten Sj, Sk können für beliebige zwei der Ketten S1 bis Sm in 8 repräsentativ sein. In ähnlicher Weise können die zwei Schlüssel Kj, Kk für beliebige zwei der Schlüssel K1 bis Km in 8 repräsentativ sein. 8 zeigt auch die j-te Kette Sj, die mit einer j-ten Bitleitung BLj gekoppelt ist, und die k-te Kette Sk, die mit einer k-ten Bitleitung BLk gekoppelt ist. Die j-te und k-te Bitleitungen BLj, BLk können für jede der m-ten Anzahl von Bitleitungen BL1 bis BLm in 8 repräsentativ sein.
-
In der beispielhaften Konfiguration in 9 schließt jeder der Schlüssel Kj, Kk sieben Bits ein-d. h. sie weisen jeweils eine Schlüssellänge von sieben auf. Außerdem weist, als beispielhafte Veranschaulichung, der j-te Schlüssel Kj ein Bitmuster 1101001 und der k-te Schlüssel Kk ein Bitmuster 1000111 auf. Auch werden in der beispielhaften Konfiguration in 9 die Bits der Schlüssel Kj, Kk in den Speicherzellen gemäß einem SLC-Speicherschema gespeichert. Dementsprechend schließt jede Kette Sj, Sk sieben Speicherzellen ein, die jeweils eingerichtet sind, eines der sieben Bits zu speichern. 9 zeigt ferner die sieben Speicherzellen jeder Kette Sj, Sk, die mit sieben Wortleitungen gekoppelt sind, die sich von einer ersten Wortleitung WL(1) zu einer siebten Wortleitung WL(7) erstrecken. Zusätzlich zeigt 9, dass die Bits der Bitmuster der Schlüssel Kj, Kk in den Speicherzellen der jeweiligen Ketten Sj, Sk gespeichert sind, sodass zunehmend höherwertige Bits in Speicherzellen gespeichert sind, die mit höher nummerierten Wortleitungen gekoppelt sind. Zum Beispiel werden die niedrigstwertigen Bits der Bitmuster in Speicherzellen gespeichert, die mit einer ersten Wortleitung WL(1) gekoppelt sind, und die höchstwertigen Bits der Bitmuster werden in Speicherzellen gespeichert, die mit einer siebten Wortleitung WL(7) gekoppelt sind. Andere Arten des Speicherns von Schlüsseln in Ketten unter einem SLC-Speicherschema können möglich sein. Zusätzlich oder alternativ können in anderen beispielhaften Konfigurationen die Bitmuster von Schlüsseln gemäß MFK-Speicherschemata anstelle eines SLC-Speicherschemas, wie in 9 veranschaulicht, gespeichert werden.
-
Bezugnehmend auf 8 können die Abtastschaltungen 620 mit jeweiligen Ketten S gekoppelt sein und können ferner mit einem Abtastergebnisspeicher 802 gekoppelt sein. Der Abtastergebnisspeicher 802 kann, einschließlich seiner Abschnitte und Unterabschnitte, wie nachstehend im Einzelnen beschrieben, gemäß einer beliebigen Art oder einer beliebigen Kombination von Arten flüchtiger oder nichtflüchtiger Speichertechnologie eingerichtet sein, wofür nicht einschränkende Beispiele Latches, Flip-Flops, Register oder Puffer einschließen.
-
Im Allgemeinen sind die Abtastschaltungen 620 eingerichtet, um Ergebnisse der Abtastvorgänge in dem Abtastergebnisspeicher 802 zu speichern. Wie in 8 gezeigt, schließt der Abtastergebnisspeicher 802 eine Vielzahl von Kettenabschnitten 804 ein. Jede Abtastschaltung 620 ist eingerichtet, Abtastergebnisse von Abtastvorgängen in einem zugehörigen der Kettenabschnitte 804 zu speichern. Außerdem führt, wie zuvor beschrieben, jede Abtastschaltung 620 Abtastvorgänge durch und bestimmt Abtastergebnisse der Abtastvorgänge für die Bitleitung BL und die zugehörige Kette S, mit der sie gekoppelt ist. Außerdem erzeugt jede Abtastschaltung 620 mindestens für die NAND-Technologie ein Abtastergebnis eines Abtastvorgangs, um anzuzeigen, ob die Abtastschaltung 620 während des Abtastvorgangs erfasst hat, dass die Bitleitung BL, mit der sie gekoppelt ist, leitete oder nicht. So ist zum Beispiel die erste Abtastschaltung 620(1) eingerichtet, Abtastergebnisse von Abtastvorgängen in einem ersten Ketten- (S1) Abschnitt 804(2) zu speichern, der angibt, ob die erste Bitleitung BL1 während der Abtastvorgänge leitete, die zweite Abtastschaltung 620(2) ist eingerichtet, Abtastergebnisse von Abtastvorgängen in einem zweiten Ketten- (S2) Abschnitt 804(2) zu speichern, der angibt, ob die zweite Bitleitung BL2 während der Abtastvorgänge leitete, die dritte Abtastschaltung 620 (3) ist eingerichtet, Abtastergebnisse von Abtastvorgängen in einem dritten Ketten- (S3) Abschnitt 804(3) zu speichern, der angibt, ob die dritte Bitleitung BL3 während der Abtastvorgänge leitete, und die m-te Abtastschaltung 620(m) ist eingerichtet, Abtastergebnisse von Abtastvorgängen in einem m-ten Ketten- (Sm) Abschnitt 804(m) zu speichern, der angibt, ob die m-te Bitleitung BLm während der Abtastvorgänge leitete.
-
Außerdem können die Abtastschaltungen 620 für zumindest einige beispielhafte Konfigurationen, einschließlich der hierin beschriebenen, die Abtastergebnisse als Ein-Bit-Binärwerte speichern. Für einen Abtastvorgang kann eine gegebene i-te Abtastschaltung 620(i) ein Abtastergebnis als ein einzelnes Bit mit einem logischen 1-Wert speichern, wenn die Abtastschaltung 620(i) erkennt, dass die i-te Bitleitung BL(i), mit der sie gekoppelt ist, leitete, und als ein einzelnes Bit mit einem logischen 0-Wert speichern, wenn die Abtastschaltung 620(i) erkennt, dass die i-te Bitleitung BL(i) nicht leitete. Zusätzlich kann jede der Abtastschaltungen 620 eingerichtet sein, um ein Abtastergebnis für jeden Abtastvorgang zu speichern, die sie durchführt.
-
Ein beispielhafter CAM-Lesevorgang, der gemäß der ersten Art von CAM-Speicherschema durchgeführt wird, wird nun unter Bezugnahme auf 8 und 9 und ferner in Bezug auf die Leseschaltung 700 von 7 beschrieben. Im Allgemeinen kann die Leseschaltung 700 einen CAM-Lesevorgang durchführen, um zu erkennen, welche einer Vielzahl von Schlüsseln K übereinstimmende Schlüssel sind, die mit einem Zielschlüssel übereinstimmen. Dementsprechend kann die Leseschaltung 700 einen CAM-Lesevorgang als Reaktion darauf durchführen, dass das Speichersystem 100 einen Zielschlüssel empfängt, der ein Zielbitmuster identifiziert. Als Reaktion auf das Durchführen des CAM-Lesevorgangs kann die Leseschaltung 700 identifizieren, welcher einer Vielzahl von Schlüsseln K, die in einer Vielzahl von Ketten S gespeichert sind, wie beispielsweise welcher der Schlüssel K1 bis Km, die in Ketten S1 bis Sm in 8 gespeichert sind, mit dem Zielschlüssel übereinstimmt.
-
Um den beispielhaften CAM-Lesevorgang gemäß der ersten Art von CAM-Speicherschema durchzuführen, spannt die Lesesteuerung 702 die Wortleitungen eines Blocks (z. B. Wortleitungen WL(1) bis WL(7) in 9) mit einer Wortleitungsvorspannung gemäß einer Wortleitungsvorspannungseinstellung vor, die dem Zielschlüssel entspricht, so dass Bitleitungen, die mit Ketten gekoppelt sind, die übereinstimmende Schlüssel speichern, leiten und Bitleitungen, die mit Ketten gekoppelt sind, die keine übereinstimmenden Schlüssel speichern, nicht leiten. Wenn die Lesesteuerung 702 die Wortleitungen gemäß der Wortleitungsvorspannungseinstellung vorspannt, die dem Zielschlüssel entspricht, führt die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durch, und als Reaktion auf die Abtastvorgang, speichern diejenigen Abtastschaltungen 620, die mit Ketten gekoppelt sind, die übereinstimmende Schlüssel speichern, Abtastergebnisbits mit logischen 1-Werten in ihren jeweiligen Kettenabschnitten 804, und diejenigen Abtastschaltungen 620, die mit Ketten gekoppelt sind, die Schlüssel speichern, die nicht mit dem Zielschlüssel übereinstimmen, speichern Abtastergebnisbits mit logischen 0-Werten in ihren jeweiligen Kettenabschnitten 804.
-
Im Allgemeinen ist eine Wortleitungsvorspannung eine Vielzahl von Wortleitungsspannungen, die gleichzeitig an eine Vielzahl von Wortleitungen angelegt werden, wobei jede der Wortleitungsspannungen an eine jeweilige oder eine andere der Vielzahl von Wortleitungen angelegt wird. Während eines CAM-Lesevorgangs, der gemäß der ersten Art von CAM-Speicherschema durchgeführt wird, spannt die Lesesteuerung 702, durch Steuerung der Steuergateleitungs-Spannungsversorgungsschaltung 606, gleichzeitig eine Vielzahl von Wortleitungen, die mit Speicherzellen gekoppelt sind, die Schlüssel speichern, mit einer Wortleitungsvorspannung vor, so dass die Lesesteuerung 702 jede Wortleitungsspannung an eine jeweilige der Wortleitungen anlegt. So schließt zum Beispiel in Bezug auf 9 die Wortleitungsvorspannung sieben Wortleitungsspannungen ein, die an die sieben Wortleitungen WL(1) bis WL(7) angelegt werden. Die Lesesteuerung 702 legt, wie beispielsweise über die Steuergateleitungs-Spannungsversorgungsschaltung 606, die sieben Wortleitungsspannungen jeweils an eine der sieben Wortleitungen WL(1) bis WL(7) an.
-
Außerdem ist im Allgemeinen eine Wortleitungsvorspannungseinstellung eine Abbildung, die jede einer Vielzahl von Wortleitungen auf einen einer Vielzahl von Wortleitungsspannungspegeln abbildet. Für eine Vielzahl von Wortleitungen, die gemäß einer Wortleitungsspannungseinstellung vorgespannt sind, sind die Vielzahl von Wortleitungen jeweils mit ihrer jeweiligen Wortleitungsspannung auf einem jeweiligen Wortleitungsspannungspegel vorgespannt, der durch die Wortleitungsspannungseinstellung identifiziert wird.
-
Für CAM-Lesevorgänge identifiziert die Wortleitungsvorspannungseinstellung eine Vielzahl von Lesewortleitungsspannungspegeln, bei denen eine Vielzahl von Wortleitungen vorgespannt werden sollen, und bildet jede Wortleitung und/oder jede Wortleitungsspannung, die an einer jeweiligen Wortleitung erzeugt wird, auf einen der Vielzahl von Lesewortleitungsspannungspegeln ab. Die Lesewortleitungsspannungspegel schließen einen hohen Spannungspegel VH und einen niedrigen Spannungspegel VL ein. Im Allgemeinen weist der hohe Spannungspegel VH einen Größenpegel auf, der höher ist als ein Größenpegel des niedrigen Spannungspegels VL. Zusätzlich ist der hohe Spannungspegel VH ein Pegel, der bewirkt, dass Speicherzellen in mehr Speicherzuständen leiten als der niedrige Spannungspegel VL. In bestimmten beispielhaften Konfigurationen ist der hohe Spannungspegel VH ein Pegel, der bewirkt, dass eine Speicherzelle ungeachtet des Speicherzustands (oder Schwellenpegels) der Speicherzelle leitet, und der niedrige Spannungspegel VL ist ein Pegel, der bewirken kann oder nicht, dass eine Speicherzelle leitet, abhängig vom Speicherzustand (oder Schwellenpegel) der Speicherzelle. Zusätzlich oder alternativ kann der hohe Spannungspegel VH dem Größenpegel der während normaler Lesevorgänge an nicht ausgewählte Wortleitungen angelegten nicht ausgewählten Wortleitungsspannung entsprechen oder gleich diesem sein, und der niedrige Spannungspegel VL kann einem Leseimpulspegel eines Leseimpulses (oder einer ausgewählten Wortleitungsspannung) entsprechen oder gleich diesem sein, der während normaler Lesevorgänge an ausgewählte Wortleitungen angelegt wird. Für SLC-Speicherschemata kann der niedrige Spannungspegel VL der Leseimpulspegel VrA sein, der dem Speicherzustand A zugehörig ist (5A). Für MFK-Speicherschemata kann der niedrige Spannungspegel VL jeder aus einer Vielzahl von Leseimpulspegeln Vr sein, abhängig von der Anzahl von Bits pro Zelle des MFK-Speicherschemas und einer bestimmten Seite (z. B. obere, mittlere, untere), für die der Abtastvorgang durchgeführt wird.
-
Während eines CAM-Lesevorgangs kann die Lesesteuerung 702 eine Wortleitungsvorspannungseinstellung bestimmen und die Steuergateleitungs-Spannungserzeugungsschaltung 612 steuern, um Spannungen bei oder entsprechend den Spannungspegeln zu erzeugen, die in der Wortleitungsvorspannungseinstellung identifiziert werden. Zum Beispiel kann die Lesesteuerung 702 die Steuergateleitungs-Spannungserzeugungsschaltung 612 steuern, um die nicht ausgewählte Wortleitungsspannung VWLU auf dem hohen Spannungspegel VH und den ausgewählten Wortleitungsspannungspegel VWLS auf dem niedrigen Spannungspegel zu erzeugen. Zusätzlich kann die Lesesteuerung 702 die Zeilendecodiererschaltung 614 steuern, um die ausgewählte Wortleitungsspannung VWLS auf dem niedrigen Spannungspegel VL den Wortleitungen zuzuführen, die gemäß der Wortleitungsvorspannungseinstellung auf den niedrigen Spannungspegel VL vorgespannt werden sollen, und um die nicht ausgewählte Wortleitungsspannung VWLU mit dem hohen Spannungspegel VH an die Wortleitungen zu liefern, die mit dem hohen Spannungspegel VH gemäß der Wortleitungsvorspannungseinstellung vorgespannt werden sollen.
-
Zusätzlich kann im Allgemeinen eine Wortleitungsvorspannungseinstellung einem Datensatz entsprechen, der ein zugehöriges Bitmuster einschließt. Für eine solche Wortleitungsvorspannungseinstellung entspricht jeder Spannungspegel, der in der Wortleitungsvorspannungseinstellung identifiziert wird, einer jeweiligen einer Vielzahl von n-Bit-Bitgruppen des assoziierten Bitmusters, wobei n eins oder mehr ist und die Anzahl von Bits pro Zelle der Daten ist, die in Speicherzellen gespeichert sind, die mit Wortleitungen gekoppelt sind, die gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind. Zum Beispiel schließt in einem SLC-Speicherschema, in dem jede Speicherzelle ein einzelnes Datenbit speichert, eine Wortleitungsvorspannungseinstellung, die einem Datensatz entspricht, eine Vielzahl von Spannungspegeln ein, die jeweils einem der Bits des Bitmusters des Datensatzes entsprechen, und wobei jeder Spannungspegel entspricht und/oder abhängig davon ist, ob das Bit, dem er entspricht, einen logischen 0-Wert oder einen logischen 1-Wert aufweist.
-
Für CAM-Lesevorgänge, die gemäß der ersten Art von CAM-Speicherschema durchgeführt werden, kann eine Wortleitungsvorspannungseinstellung, gemäß der Wortleitungen vorgespannt werden, einem Zielschlüssel entsprechen. Für eine solche Wortleitungsvorspannungseinstellung entspricht jeder Spannungspegel, der in der Wortleitungsvorspannungseinstellung identifiziert wird, einer von einer Vielzahl von n-Bit-Bitgruppen eines Bitmusters des Zielschlüssels. Für CAM-Lesevorgänge zum Erkennen übereinstimmender Schlüssel, die gemäß einem SLC-Speicherschema gespeichert sind, entspricht jeder Spannungspegel einer Wortleitungsvorspannungseinstellung einem Bitwert eines jeweiligen der Bits des Bitmusters des Zielschlüssels.
-
Wie erwähnt, spannt die Lesesteuerung 702 bei einem CAM-Lesevorgang die Wortleitungen so vor, dass diejenigen Ketten, die einen übereinstimmenden Schlüssel speichern, leiten. Dementsprechend identifiziert eine Wortleitungsvorspannungseinstellung, die einem Zielschlüssel entspricht, einen Lesewortleitungsspannungspegel für jede Wortleitungsspannung, der bewirkt, dass jede Speicherzelle einer Kette leitet, wenn diese Kette einen übereinstimmenden Schlüssel speichert. Sodass ferner nicht alle Bitleitungen leiten, identifiziert die Wortleitungsvorspannungseinstellung unterschiedliche Lesewortleitungsspannungspegel für Wortleitungsspannungen, die Bits des Bitmusters mit unterschiedlichen Bitwerten entsprechen. Zum Beispiel kann eine Wortleitungsvorspannungseinstellung den hohen Spannungspegel VH für eine Wortleitungsspannung identifizieren, die einem Bit eines Zielschlüssels mit einem logischen 0-Wert entspricht, und kann den niedrigen Spannungspegel für eine Wortleitungsspannung identifizieren, die einem Bit eines Zielschlüssels mit einem logischen 1-Wert entspricht. Auf diese Weise leiten Speicherzellen im gelöschten Zustand, die einen logischen 1-Wert speichern, oder im Programmierzustand, die einen logischen 0-Wert speichern, wenn sie mit einer Wortleitungsspannung auf dem hohen Pegel VH vorgespannt sind; und Speicherzellen im gelöschten Zustand, die einen logischen 1-Wert speichern, aber nicht Speicherzellen im Programmierzustand, die einen logischen 0-Wert speichern, leiten, wenn sie mit einer Wortleitungsspannung auf dem niedrigen Pegel VL vorgespannt sind.
-
Wenn ein CAM-Lesevorgang gemäß der ersten Art von CAM-Speicherschema durchgeführt wird, kann die Lesesteuerung 702 das Bitmuster des Zielschlüssels bestimmen und als Reaktion darauf eine Wortleitungsvorspannungseinstellung bestimmen, die dem Zielschlüssel entspricht, bei dem die Wortleitungen vorgespannt werden sollen, die mit den Ketten gekoppelt sind, welche die Schlüssel speichern. Die Lesesteuerung 702 kann dann die Wortleitungen gemäß der Wortleitungsvorspannungseinstellung vorspannen und die Abtastschaltungen 620 steuern, um einen Abtastvorgang durchzuführen und die Abtastergebnisse des Abtastvorgangs in dem Abtastergebnisspeicher 802 zu speichern. Die Lesesteuerung 702 kann den Abtastergebnisspeicher 802 analysieren, um zu bestimmen, welche der Bitleitungen und/oder Ketten während des Abtastvorgangs durchgeführt werden, wie beispielsweise durch Bestimmen, welche der Kettenabschnitte 804 einen logischen 1-Wert speichern und welche einen logischen 0-Wert speichern. Als Reaktion auf die Analyse kann die Lesesteuerung 702 bestimmen, welche Ketten übereinstimmende Schlüssel speichern, und entweder Spaltenadressen dieser Ketten an die Steuerung 102 zurücksenden oder basierend auf der Spaltenadresse dieser Ketten Datensätze abrufen, die diesen übereinstimmenden Schlüsseln zugehörig sind, ohne zuerst mit der Steuerung 102 kommunizieren zu müssen. Die Speicherchips 104 können die abgerufenen Datensätze an die Steuerung 102 senden, die wiederum die abgerufenen Datensätze an die Hostvorrichtung senden kann, die den Zielschlüssel gesendet hat. In manchen beispielhaften CAM-Lesevorgänge kann das ECC-Modul/die ECC-Maschine 124 zuerst eine Fehlerkorrektur durchführen, um etwaige Bitfehler in den abgerufenen Datensätzen zu erkennen und zu korrigieren, bevor sie an den Host zurückgesendet werden.
-
In dem in 9 veranschaulichten Beispiel sei angenommen, dass der Zielschlüssel ein Bitmuster aufweist, das mit dem Bitmuster des j-ten Schlüssels Kj übereinstimmt, d. h. 1101001. Dementsprechend kann die Lesesteuerung 702, wenn sie von dem niedrigstwertigen (oder am weitesten rechts gelegenen) Bit zu dem höchstwertigen (oder am weitesten links gelegenen) Bit des Bitmusters übergeht, die erste Wortleitung WL(1) mit einer Wortleitungsspannung auf dem niedrigen Pegel VL vorspannen, die dem logischen 1-Wert entspricht, wobei die zweite Wortleitung WL(2) mit einer Wortleitungsspannung auf dem hohen Pegel VH dem logischen 0-Wert entspricht, die dritte Wortleitung WL(3) mit einer Wortleitungsspannung auf dem hohen Pegel VH dem logischen 0-Wert entspricht, die vierte Wortleitung WL(4) mit einer Wortleitungsspannung auf dem niedrigen Pegel VL entsprechend dem logischen 1-Wert, die fünfte Wortleitung WL(5) mit einer Wortleitungsspannung auf dem hohen Pegel VH entsprechend dem logischen 0-Wert, die sechste Wortleitung WL(6) mit einer Wortleitungsspannung auf dem niedrigen Pegel VL, die dem logischen 1-Wert entspricht, und die siebte Wortleitung WL(7) mit einer Wortleitungsspannung auf dem niedrigen Pegel VL, die dem logischen 1-Wert entspricht.
-
Wenn die Lesesteuerung 702 die Wortleitungen WL(1) bis WL(7) gemäß der Wortleitungsvorspannungseinstellung vorspannt, die dem Bitmuster 1101001 des Zielschlüssels entspricht, leiten die j-te Kette Sj und die Bitleitung BLj. Als Reaktion darauf speichert die j-te Abtastschaltung 620(j) ein Abtastergebnisbit mit einem logischen 1-Wert im j-ten Kettenabschnitt 804(j) des Abtastergebnisspeichers 802. Die k-te Kette Sk und die Bitleitung BLk leiten jedoch nicht, da die Speicherzellen der k-ten Kette Sk, die logische 0-Werte speichern, als Reaktion darauf, dass sie mit Wortleitungsspannungen auf dem niedrigen Pegel VL vorgespannt werden, nicht leiten. Wiederum speichert die k-te Abtastschaltung 620(k) ein Abtastergebnisbit mit einem logischen 0-Wert im k-ten Kettenabschnitt 804(k) des Abtastergebnisspeichers 802. Als Reaktion auf das Durchführen des Abtastvorgangs mit den Wortleitungen WL(1) bis WL(7), die gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, die dem Zielschlüssel entspricht, bestimmt wiederum die Lesesteuerung 702, dass die j-te Kette einen übereinstimmenden Schlüssel speichert und die k-te Kette keinen übereinstimmenden Schlüssel speichert.
-
In manchen beispielhaften Konfigurationen führt das bloße Speichern von Schlüsseln in Ketten unerwünscht zu Fehlalarmen. Wie hierin verwendet, ist ein Fehlalarm eine Identifikation eines übereinstimmenden Schlüssels, der tatsächlich nicht mit dem Zielschlüssel übereinstimmt. Das Ergebnis eines Fehlalarms ist, dass der Speicherchip, der einen Datensatz abruft, der dem identifizierten übereinstimmenden Schlüssel zugehörig ist, tatsächlich nicht das/die Attribut(e) einschließt, das/die in dem Zielschlüssel identifiziert wird/werden. In manchen beispielhaften Konfigurationen kann das ECC-Modul 124 so eingerichtet sein, dass es Fehlalarme erkennt und fehlerhafte Datensätze herausfiltert, welche die angeforderten Attribute nicht aufweisen, so dass die Hostvorrichtung die fehlerhaften Datensätze nicht empfängt.
-
Lediglich das Speichern von Schlüsseln in Ketten kann zu Fehlalarmen führen, da eine Wortleitungsspannung auf dem hohen Pegel VH bewirken kann, dass Speicherzellen, die entweder einen logischen 0-Wert oder einen logischen 1-Wert speichern, leiten. Dies kann wiederum bewirken, dass Ketten, die nicht übereinstimmende Schlüssel speichern, leiten. Um in Bezug auf 9 zu veranschaulichen, sei angenommen, dass der Zielschlüssel ein Bitmuster von 1101001 wie in dem vorhergehenden Beispiel aufweist. Es sei jedoch angenommen, dass sich die mit der fünften Wortleitung WL(5) gekoppelte Speicherzelle der j-ten Kette Sj im gelöschten Zustand befindet, d.h. einen logischen 1-Wert speichert. Diese Speicherzelle würde als Reaktion auf die Wortleitungsspannung auf der fünften Wortleitung WL(5) auf dem hohen Pegel leiten, was bewirkt, dass die j-te Abtastschaltung 620(j) fälschlicherweise anzeigt, dass die j-te Kette Sj einen übereinstimmenden Schlüssel speichert.
-
Um vor Fehlalarmen zu schützen und die Überidentifikation übereinstimmender Schlüssel zu begrenzen, speichern die Ketten in anderen CAM-Speicherschemata invertierte Schlüssel zusätzlich zu den Schlüsseln. Jeder invertierte Schlüssel, der gespeichert wird, ist einem der Schlüssel zugehörig. Ein invertierter Schlüssel, der einem Schlüssel zugehörig ist, ist ein binärer Wert, der ein Bitmuster aufweist, das zu dem Bitmuster des Schlüssels, dem er zugehörig ist, invertiert ist. Ein erstes Bitmuster und ein zweites Bitmuster sind invertiert zueinander, wobei jedes der entsprechenden Bits des ersten und des zweiten Bitmusters invertierte oder entgegengesetzte Bitwerte aufweist. Ferner entsprechen ein Bit in dem ersten Bitmuster und ein Bit in dem zweiten Bitmuster einander, wenn sie die gleiche Bitposition innerhalb ihres jeweiligen ersten und zweiten Bitmusters aufweisen. So weist beispielsweise ein Bitmuster 1101001 ein invertiertes Bitmuster 0010110 auf.
-
10 zeigt ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, das eine beispielhafte Konfiguration einer Vielzahl von Ketten S veranschaulicht, die eine Vielzahl von Schlüsseln K und entsprechende invertierte Schlüssel Kb gemäß der zweiten Art von CAM-Speicherschema speichern. In der beispielhaften Konfiguration speichert jede i-te Kette Si einen i-ten Schlüssel Ki und einen i-ten invertierten Schlüssel Kibar, der dem i-ten Schlüssel Ki zugehörig ist. Verschiedene Wege der Speicherung eines i-ten Schlüssels Ki und eines i-ten invertierten Schlüssels Kbari in einer i-ten Kette Si können möglich sein. In anderen beispielhaften Konfigurationen sind der i-te Schlüssel Ki und der i-te invertierte Schlüssel Kbari in verschiedenen Ketten gespeichert. In bestimmten beispielhaften Konfigurationen, wie denen für 3D-NAND, werden der i-te Schlüssel Ki und der i-te invertierte Schlüssel Kbari in verschiedenen Ketten gespeichert, die Teil einer gleichen Sammlung oder eines gleichen Satzes von Ketten sind, die/der mit einer gleichen oder gemeinsamen Bitleitung gekoppelt ist.
-
Außerdem sind, wie in 10 gezeigt, die Wortleitungen in einer Vielzahl von Wortleitungsgruppen angeordnet oder organisiert, einschließlich einer ersten Wortleitungsgruppe WLG1 und einer zweiten Wortleitungsgruppe WLG2. Die erste Wortleitungsgruppe WLG1 schließt diejenigen Wortleitungen ein, die mit Speicherzellen gekoppelt sind, die den Schlüssel K speichern, und die zweite Wortleitungsgruppe WLG2 schließt diejenigen Wortleitungen ein, die mit Speicherzellen gekoppelt sind, die den invertierten Schlüssel Kbar speichern.
-
Außerdem weist in der beispielhaften Konfiguration in 10 jeder der Schlüssel K und der invertierten Schlüssel Kbar eine Schlüssellänge n auf. Gemäß einem SLC-Speicherschema schließt jede i-te Kette Si eine n-Anzahl von Speicherzellen ein, die einen i-ten Schlüssel Ki speichern, und eine n-Anzahl von Speicherzellen, die einen zugehörigen i-ten invertierten Schlüssel Kibar speichern. Ferner schließt, gemäß einem SLC-Speicherschema, in der in 10 gezeigten Konfiguration die zweite Wortleitungsgruppe WLG2 eine erste n-Anzahl von Wortleitungen WL(1) bis WL(n) ein, die mit Speicherzellen gekoppelt sind, welche die invertierten Schlüssel Kbar speichern, und die erste Wortleitungsgruppe WLG1 schließt eine zweite n-Anzahl von Wortleitungen WL(n+1) bis WL(2n) ein, die mit Speicherzellen gekoppelt sind, welche die Schlüssel K speichern.
-
Außerdem speichert in der in 10 gezeigten beispielhafte Konfiguration jede i-te Kette zusammenhängend einen i-ten Schlüssel Ki und speichert zusammenhängend den zugehörigen i-ten invertierten Schlüssel Kibar. Andere Arten der Speicherung der Schlüssel K und der invertierten Schlüssel Kbar sind möglich. Zum Beispiel verschachtelt die i-te Kette Si die Bits des i-ten Schlüssels Ki und des i-ten invertierten Schlüssels Kbari, wie beispielsweise über eine Anzahl von 2n Wortleitungen, anstatt zusammenhängend.
-
Wenn ein CAM-Lesevorgang an Ketten S, die Schlüssel K speichern, und invertierten Ketten Kbar gemäß der zweiten Art von CAM-Speicherschema, wie in 10 gezeigt, durchgeführt wird, kann die Lesesteuerung 702 das Bitmuster des Zielschlüssels und das Bitmuster des invertierten Zielschlüssels identifizieren oder bestimmen. Als Reaktion darauf kann die Lesesteuerung 702 die Wortleitungen gemäß einer Wortleitungsvorspannungseinstellung vorspannen, die den Bitmustern des Zielschlüssels und des invertierten Zielschlüssels entspricht. Wenn die Wortleitungen gemäß der Wortleitungsvorspannungseinstellung vorgespannt werden, spannt die Lesesteuerung 702 die erste Wortleitungsgruppe WLG1, die mit Speicherzellen gekoppelt ist, welche die Schlüssel K speichern, auf Spannungspegeln vor, wie beispielsweise hohen und niedrigen Spannungspegeln VH, VL, die dem Bitmuster des Zielschlüssels entsprechen, und spannt die zweite Wortleitungsgruppe WLG2, die mit Speicherzellen gekoppelt ist, welche die invertierten Schlüssel Kbar speichern, auf Spannungspegel vor, die dem Bitmuster des invertierten Zielschlüssels entsprechen.
-
Wenn die Wortleitungen gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, kann die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durchführen, um zu bestimmen, welche der Bitleitungen leiten, und Abtastergebnisse speichern, wie beispielsweise in Form von Bits, die jeweils entweder einen logischen 1-Wert oder einen logischen 0-Wert aufweisen, basierend auf der Bestimmung in ihren jeweiligen Kettenabschnitten 804, wie zuvor in Bezug auf 8 und 9 dargestellt. Durch Konfigurieren der Ketten S, um sowohl die Schlüssel K als auch die invertierten Schlüssel Kbar zu speichern, werden diejenigen Bitleitungen BL, die mit Ketten gekoppelt sind, die übereinstimmende Schlüssel speichern, leiten, während die Anzahl von Fehlalarmen minimiert wird.
-
Idealerweise speichern die Speicherzellen Datenwerte fehlerfrei, d. h. jede Speicherzelle speichert den Datenwert, den sie haben soll. In tatsächlichen Implementierungen speichern jedoch einige Speicherzellen Daten fehlerhaft, d. h. der Datenwert, den die Speicherzelle speichert, unterscheidet sich von dem, den sie speichern soll. Speicherzellen können aus beliebigen verschiedenen Gründen Daten fehlerhaft speichern, wie beispielsweise aufgrund von Programmstörungen, Lesestörungen oder Struktur- oder Materialdefekten, einschließlich anwachsender Defekte, die sich nach der Herstellung entwickeln, als nicht einschränkende Beispiele. Während die Anzahl von Speicherzellen, die Daten fehlerhaft speichern, in der Regel niedrig ist, im Durchschnitt gleich einer erwarteten Bitfehlerrate, wie beispielsweise in der Größenordnung von 10∧-4 oder 10∧-5, gibt es immer noch Fehler.
-
Für CAM-Speicherschemata und entsprechende CAM-Lesevorgänge können Speicherzellen, die falsche Datenwerte speichern, Nicht-Erkennungen verursachen (auch verpasste Detektionen genannt). Eine Nicht-Erkennung ist ein Fehlschlagen der Erkennung eines übereinstimmenden Schlüssels während eines CAM-Lesevorgangs. Das Ergebnis einer Nicht-Erkennung ist, dass das Speichersystem 100 der Hostvorrichtung keinen Datensatz bereitstellt, der die im Zielschlüssel identifizierten Attribute aufweist. Hinsichtlich der Leistung ist eine Nicht-Erkennung schlechter als ein Fehlalarm, da das Speichersystem 100 möglicherweise nicht mit einem Mechanismus zur Sicherung gegen Nicht-Erkennungen ausgestattet ist. Im Gegensatz dazu kann das Speichersystem 100 bei Fehlalarmen durch seine Fehlerkorrekturprozesse, die es vor dem Senden von Datensätzen an die Hostvorrichtung durchführt, vor dem Senden von nicht übereinstimmenden Datensätzen an die Hostvorrichtung schützen.
-
11 zeigt ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, das eine beispielhafte Konfiguration einer Vielzahl von Ketten S veranschaulicht, die eine Vielzahl von Schlüsselwörtern KW und entsprechende invertierte Schlüsselwörter KWbar gemäß einer dritten Art von CAM-Speicherschema speichern. Es ist zu beachten, dass die Schlüsselwörter KW1 bis KWm in 11 alle der gleiche Schlüsseltyp sind und in jeder NAND-Kette ein Wert für den Schlüssel für einen anderen Datensatz bereitgestellt wird. Ein Schlüsselwort ist ein Schlüsseltyp, der einen zusätzlichen Satz von Bits einschließt, die Paritätsbits genannt werden. Ein Schlüsselwort umfasst zwei Teile oder Komponenten, die Informationsbits und Paritätsbits umfassen. Informationsbits eines Schlüsselworts bilden einen Schlüssel K, der ein oder mehrere Attribute identifiziert und der Teil eines Schlüsseldatensatzpaars mit einem zugehörigen Datensatz ist, gemäß CAM-Speicherschemata und wie zuvor unter Bezugnahme auf 8-10 beschrieben. Paritätsbits eines Schlüsselwortes sind neben den Informationsbits eines Schlüsselwortes zusätzliche Bits, mit denen Bitfehler der Informationsbits erkannt und/oder korrigiert werden können. Zusätzlich oder alternativ ermöglichen Paritätsbits für CAM-Lesevorgänge, dass eine Kette, die ein Schlüsselwort mit einem oder mehreren Bitfehlern speichert, als einen übereinstimmenden Schlüssel speichernd erkannt wird, während die Wahrscheinlichkeit, dass die Erkennung ein Fehlalarm ist, verringert oder minimiert wird, wie nachstehend im Einzelnen beschrieben.
-
Wie in 11 gezeigt, programmiert die Programmierschaltung 600 für einige Ausführungsformen des dritten CAM-Speicherschemas die Schlüsselwörter KW und die invertierten Schlüsselwörter KWbar in die Ketten, sodass jede i-te Kette Si ein i-tes Schlüsselwort KWi und ein zugehöriges i-tes invertiertes Schlüsselwort KWibar speichert. Für andere Ausführungsformen werden das i-te Schlüsselwort KWi und das zugehörige i-te invertierte Schlüsselwort KWibar in verschiedenen Ketten gespeichert. In bestimmten beispielhaften Konfigurationen, wie denen für 3D-NAND, werden das i-te Schlüsselwort KWi und der i-te invertierte Schlüssel KWibar in verschiedenen Ketten gespeichert, die Teil einer gleichen Sammlung oder eines gleichen Satzes von Ketten sind, die mit einer gleichen oder gemeinsamen Bitleitung gekoppelt sind.
-
Einem Schlüsselwort KW ist ähnlich wie bei Schlüsseln ein Bitmuster in Form eines Binärwertes zugehörig, der eine r-Zahl von Binärstellen mit jeweils einem logischen 1-Wert oder einem logischen 0-Wert einschließt. Ähnlich wie bei den invertierten Schlüsseln Kbar weist ein invertiertes Schlüsselwort KWbar ein invertiertes Bitmuster auf, das invertiert zu dem Bitmuster seines zugehörigen Schlüsselwortes KW ist. 11 zeigt jede i-te Kette Si, die ein i-tes Schlüsselwort KWi und ein zugehöriges i-tes invertiertes Schlüsselwort KWibar speichert.
-
Außerdem können ähnlich wie bei der zweiten Art von CAM-Speicherschema die Wortleitungen, die mit Speicherzellen gekoppelt sind, die Schlüsselwörter KW und die invertierten Schlüsselwörter KWbar gemäß der dritten Art von CAM-Speicherschema speichern, in einer Vielzahl von Wortleitungsgruppen WLG angeordnet oder organisiert sein, einschließlich einer ersten Wortleitungsgruppe WLG1 und einer zweiten Wortleitungsgruppe WLG2. Wortleitungen, die Teil der ersten Wortleitungsgruppe WLG1 sind, sind mit Speicherzellen gekoppelt, die Schlüsselwörter KW speichern, und Wortleitungen, die Teil der zweiten Wortleitungsgruppe WLG2 sind, sind mit Speicherzellen gekoppelt, die invertierte Schlüsselwörter KWbar speichern.
-
In der in 11 gezeigten beispielhafte Konfiguration überlappen sich die erste Wortleitungsgruppe WLG1 und die zweite Wortleitungsgruppe WLG2 insofern nicht, als sich die Wortleitungen der ersten Wortleitungsgruppe WLG1 alle von den Wortleitungen der zweiten Wortleitungsgruppe WLG2 unterscheiden. In anderen beispielhaften Konfigurationen überlappen sich die erste Wortleitungsgruppe WLG1 und die zweite Wortleitungsgruppe WLG2, indem mindestens eine der Wortleitungen der ersten Wortleitungsgruppe WLG1 dieselbe ist wie mindestens eine der Wortleitungen der zweiten Wortleitungsgruppe WLG2. Überlappende Wortleitungsgruppensituationen können für Konfigurationen auftreten, in denen ein Schlüsselwort KW und das zugehörige invertierte Schlüsselwort KWbar in verschiedenen Ketten gespeichert sind, wie beispielsweise verschiedenen Ketten, die mit derselben Bitleitung in 3D-NAND gekoppelt sind.
-
In der In 11 gezeigten beispielhaften Konfiguration weist jedes Schlüsselwort KW und jeder invertierte Schlüsselwort KWbar eine zugehörige Schlüsselwortlänge rauf. Gemäß einem SLC-Speicherschema speichert innerhalb jeder i-ten Kette Si eine erste r-Anzahl von Speicherzellen ein i-tes Schlüsselwort KWi und eine zweite r-Anzahl von Speicherzellen ein zugehöriges i-tes invertiertes Schlüsselwort KWibar. Außerdem schließt gemäß einem SLC-Speicherschema die zweite Wortleitungsgruppe WLG2 eine erste r-Anzahl von Wortleitungen WL(1) bis WL(r) ein, die mit Speicherzellen gekoppelt sind, welche die invertierten Schlüsselwörter KWbar speichern, und die erste Wortleitungsgruppe WLG1 schließt eine zweite r-Anzahl von Wortleitungen WL(r+1) bis WL(2r) ein, die mit Speicherzellen gekoppelt sind, welche die Schlüsselwörter KW speichern. Andere Speicherkonfigurationen sind möglich, einschließlich solcher, in denen die Ketten S Schlüsselwörter KW und invertierte Schlüsselwörter KWbar gemäß MFK-Speicherschemata speichern.
-
Zusätzlich zeigt 11 jedes i-te Schlüsselwort KWi, das einen i-ten Satz von Informationsbits KWi_i und einen zugehörigen i-ten Satz von Paritätsbits KWi_p einschließt, und jedes i-te invertierte Schlüsselwort KWibar, das einen i-ten Satz von invertierten Informationsbits KWibar_i und einen zugehörigen i-ten Satz von invertierten Paritätsbits KWibar_p einschließt. Dementsprechend ist in der beispielhaften Konfiguration in 11 jede i-te Kette Si eingerichtet, um ein i-tes Schlüsselwort KWi und ein zugehöriges i-tes invertiertes Schlüsselwort KWibar zu speichern, wobei jedes i-te Schlüsselwort KWi einen i-ten Satz von Informationsbits KWi_i und einen zugehörigen i-ten Satz von Paritätsbits KWi_p einschließt und jedes i-te invertierte Schlüsselwort KWibar einen i-ten Satz von Informationsbits KWibar_i und einen zugehörigen i-ten Satz von Paritätsbits KWibar_p einschließt.
-
12 zeigt ein Blockdiagramm einer beispielhaften Schlüsselworterzeugungsschaltung (oder eines beispielhaften Schaltungssystems) 1200, die eingerichtet ist, um Schlüsselwörter KW und invertierte Schlüsselwörter KWbar zu erzeugen. In verschiedenen Ausführungsformen können die Schaltungskomponenten oder Module der Schaltung 1200 an beliebigen von verschiedenen Stellen und/oder auf beliebigen von verschiedenen Chips oder Substraten innerhalb des Speichersystems 100 angeordnet oder eingerichtet sein. Zum Beispiel können in verschiedenen Ausführungsformen alle Schaltungskomponenten der Schlüsselworterzeugungsschaltung 1200 als Teil der Steuerung 102 eingerichtet sein, alle Schaltungskomponenten können auf den Speicherchips 104 eingerichtet sein (wie beispielsweise ein Teil der Programmierschaltung 600 und/oder der Programmsteuerung 622 von 6), die Schaltungskomponenten können auf voneinander verschiedenen Speicherchips 104 eingerichtet sein, alle Schaltungskomponenten können auf einem einzigen Speicherchip 104 eingerichtet sein, einige der Schaltungskomponenten können auf der Steuerung 102 eingerichtet sein, während andere Schaltungskomponenten auf einem oder mehreren der Speicherchips 104 eingerichtet sind, oder Kombinationen davon. Zusätzlich oder alternativ kann das Speichersystem 100 in verschiedenen Ausführungsformen mehrere Schlüsselworterzeugungsschaltungen einschließen. Zum Beispiel kann jeder Speicherchip 104 seine eigene Schlüsselworterzeugungsschaltung einschließen. Zusätzlich oder alternativ kann in verschiedenen Ausführungsformen die Schlüsselworterzeugungsschaltung 1200 als eine Steuerung bezeichnet werden, sei es allein oder in Kombination mit Komponenten der Programmierschaltung 600 betrachtet, und unabhängig davon, ob ihre Komponenten als Teil der Steuerung 102, als Teil der Speicherchips 104 oder Kombinationen davon eingerichtet sind. Es sind verschiedene Konfigurationen oder Kombinationen von Konfigurationen einer Schlüsselworterzeugungsschaltung möglich.
-
In der beispielhaften Konfiguration in 12 schließen die Schaltungskomponenten oder Module der Schlüsselworterzeugungsschaltung 1200 eine Fehlerkorrekturcode- (ECC) Paritätsbit-Erzeugungsschaltung 1202 und eine invertierte Schlüsselworterzeugungsschaltung 1204 ein. Als Komponenten oder Module der Steuerung 102 und/oder eines oder mehrerer der Speicherchips 104, kann jede der ECC-Paritätsbit-Erzeugungsschaltungen 1202 und der invertierten Schlüsselworterzeugungsschaltungen 1204 eine beliebige der verschiedenen Hardware- und/oder Kombinationen von Hardware- und Firmware- (oder Hardware- und Software-) Konfigurationen aufweisen, welche die Steuerung 102 und/oder die Speicherchips 104 aufweisen können, um ihre jeweiligen Funktionen auszuführen. Für einige beispielhaften Konfigurationen können die ECC-Paritätsbit-Erzeugungsschaltung 1202 und die invertierte Schlüsselworterzeugungsschaltung 1204 getrennte diskrete Sätze von Schaltungen enthalten, wie etwa getrennte diskrete Sätze von Logikschaltungen oder andere Arten von Hardwareschaltungen. Für andere beispielhafte Konfigurationen können die ECC-Paritätsbit-Erzeugungsschaltung 1202 und die invertierte Schlüsselworterzeugungsschaltung 1204 die gleiche Hardwareschaltung, wie beispielsweise den gleichen Prozessor, einschließen, aber verschiedene Firmware, wie beispielsweise unterschiedliche Sätze von Computercodes oder Anweisungen, durchführen, um ihre jeweiligen Funktionen, Vorgänge oder Aktionen auszuführen. Für die ECC-Paritätsbit-Erzeugungsschaltung 1202 und die invertierte Schlüsselworterzeugungsschaltung 1204 sind verschiedene Konfigurationen oder Kombinationen von Konfigurationen möglich.
-
Die ECC-Paritätsbit-Erzeugungsschaltung 1202 ist eingerichtet, um Paritätsbits für Schlüssel K zu erzeugen. Insbesondere ist die ECC-Paritätsbit-Erzeugungsschaltung 1202 eingerichtet, um einen Satz von Paritätsbits für jeden Schlüssel K zu erzeugen, den sie empfängt und/oder identifiziert. Die ECC-Paritätsbit-Erzeugungsschaltung 1202 kann eingerichtet sein, um einen Satz von Paritätsbits für einen bestimmten Schlüssel K mit einem Bitmuster zu erzeugen, das dem Bitmuster des bestimmten Schlüssels K entspricht und/oder davon abhängt. Die ECC-Paritätsbit-Erzeugungsschaltung 1202 kann mit einem beliebigen von verschiedenen Paritätsbiterzeugungs- oder Codierungsschemata eingerichtet sein, um einen Satz von Paritätsbits für einen gegebenen Schlüssel K zu erzeugen, wie beispielsweise Hamming oder Bose-Chaudhuri-Hocquenghem (BCH) als nicht einschränkende Beispiele.
-
Außerdem kann die ECC-Paritätsbit-Erzeugungsschaltung 1202 eingerichtet sein, um eine q-Anzahl von Paritätsbits für eine gegebene p-Anzahl von Bits eines Schlüssels K zu erzeugen. Für mindestens einige beispielhafte Konfigurationen kann die Anzahl von Paritätsbits q von einer Bitfehlermenge oder -anzahl abhängen, die der Speicherung eines Schlüsselworts oder eines invertierten Schlüsselworts zugehörig ist. In bestimmten Ausführungsformen ist die Bitfehlermenge oder -anzahl eine maximale t-Anzahl von Bitfehlern, bis zu der ein Abschnitt einer Kette, die ein Schlüsselwort oder ein invertiertes Schlüsselwort speichert, aufweisen kann, und die Kette kann weiterhin als ein übereinstimmendes Schlüsselwort speichernd erkannt werden, ohne dass die Erkennung ein Fehlalarm ist. Ein übereinstimmendes Schlüsselwort ist ein Schlüsselwort, das einen übereinstimmenden Schlüssel einschließt, der mit einem Zielschlüssel übereinstimmt.
-
Im Allgemeinen ist eine Anzahl von Bitfehlern, mit denen ein Satz von Speicherzellen einen Datensatz speichert, die Anzahl von Bits des Datensatzes, die in dem Satz von Speicherzellen mit falschen Bitwerten gespeichert sind. Beispielsweise speichert ein Satz von Speicherzellen, der ein Datenbit mit einem logischen 1-Wert speichern soll, aber es stattdessen mit einem logischen 0-Wert speichert, dieses Datenbit mit einem Bitfehler.
-
Um eine Kette zu erfassen, die ein übereinstimmendes Schlüsselwort speichert, wobei diese Kette ein Schlüsselwort oder ein invertiertes Schlüsselwort mit bis zu einer t-Anzahl von Bitfehlern speichert, ohne dass die Erfassung ein Fehlalarm ist, kann jede Kombination von zwei verschiedenen Schlüsselwörtern einen Abstand d aufweisen, der größer oder gleich dem Zweifachen der t-Anzahl von Bitfehlern plus eins ist oder mathematisch d ≥ 2*t+1. Unterschiedliche Schlüsselwörter sind Schlüsselwörter, die unterschiedliche Bitmuster aufweisen.
-
Im Allgemeinen ist ein Abstand d zwischen zwei Datensätzen X1, X2 (wie Schlüssel, Schlüsselwörter oder jede andere Art von Daten mit Bitmustern) eine Anzahl von Bits zwischen den Bitmustern, die gleiche Bitposition, aber unterschiedliche Logikwerte aufweisen. Mathematisch wird ein Abstand d für zwei Datensätze X1, X2 durch folgende Formel bestimmt:
wobei x ein Index ist, der eine Bitposition der Bitmuster der Datensätze X1, X2 angibt, und r eine Bitlänge jedes der Datensätze X1, X2 ist. Durch Erzeugen einer q-Zahl von Paritätsbits, so dass zwei beliebige verschiedene Schlüsselwörter KWa, KWb einen zugehörigen Abstand d von mindestens 2*t+1 aufweisen, dann beträgt, wenn eine beliebige t-Zahl von Bits jedes der verschiedenen Schlüsselwörter KWa, KWb umgekehrt wird (d. h. die Logikwerte dieser Bits von logisch 0 auf logisch 1 oder von logisch 1 auf logisch 0 geändert werden), der Abstand zwischen diesen zwei Schlüsselwörtern KWa, KWb immer noch mindestens 1. Infolgedessen kann eine Kette, die ein übereinstimmendes Schlüsselwort speichert, auch dann erkannt werden, wenn die Kette das Schlüsselwort oder das invertierte Schlüsselwort mit bis zu einer t-Anzahl von Bitfehlern speichert, ohne dass es sich bei der Erkennung um einen Fehlalarm handelt. Für zumindest einige beispielhafte Konfigurationen kann die ECC-Paritätsbit-Erzeugungsschaltung
1202 für einen gegebenen Schlüssel K eingerichtet sein, um eine Anzahl von Paritätsbits basierend auf log
2(n) zu erzeugen (z. B. durch Aufrunden oder Übernehmen der Obergrenze von log
2(n)), wobei n die Anzahl von Informationsbits des Schlüssels K ist, um einen Abstand d von mindestens 2*t+1 zu erzeugen, obwohl andere Anzahlen von Paritätsbits erzeugt werden können, um einen Abstand d von mindestens 2*t+1 für verschiedene Konfigurationen zu erreichen.
-
Zusätzlich zum Erzeugen der Paritätsbits kann die ECC-Paritätsbit-Erzeugungsschaltung 1202 eingerichtet sein, um die Schlüsselwörter KW durch Kombinieren der Schlüssel K und der den Schlüsseln K zugehörigen Paritätsbits zu bilden oder zu erzeugen. Für ein gegebenes Schlüsselwort KW, das einen Schlüssel K und einen zugehörigen Satz von Paritätsbits umfasst, werden die Bits des Schlüssels K austauschbar als die Schlüsselbits oder die Informationsbits des Schlüsselworts KW bezeichnet. Ein gebildetes Schlüsselwort KW weist eine Bitlänge r auf, d.h. die Anzahl der Bits r eines gegebenen Schlüsselwortes KW ist die Summe aus der p-Anzahl der Informationsbits und der q-Anzahl der Paritätsbits des Schlüsselwortes KW.
-
Die invertierte Schlüsselworterzeugungsschaltung 1204 ist eingerichtet, um als Reaktion auf den Empfang eines gegebenen Schlüsselworts KW ein invertiertes Schlüsselwort KWbar zu erzeugen. Wie zuvor beschrieben, weist ein invertiertes Schlüsselwort KWbar ein invertiertes Bitmuster auf, das invertiert zum Bitmuster eines zugehörigen Schlüsselwortes KW ist. Dementsprechend ist in der beispielhaften Konfiguration von 12 die invertierte Schlüsselworterzeugungsschaltung 1204 eingerichtet, um ein Schlüsselwort KW mit einem zugehörigen Bitmuster zu empfangen und als Reaktion auf den Empfang ein zugehöriges invertiertes Schlüsselwort KWbar mit einem Bitmuster zu erzeugen, welches das Inverse des Bitmusters des zugehörigen Schlüsselworts KW ist.
-
Andere Konfigurationen der Schlüsselworterzeugungsschaltung 1200 können möglich sein. Zum Beispiel schließt in anderen Konfigurationen die Schlüsselworterzeugungsschaltung 1200 anstelle einer invertierten Schlüsselworterzeugungsschaltung eine invertierte Schlüsselworterzeugungsschaltung ein, die invertierte Schlüssel Kbar als Reaktion auf den Empfang von Schlüsseln K erzeugt. Die invertierte Schlüsselerzeugungsschaltung stellt die Schlüssel K und die invertierten Schlüssel Kbar an eine Paritätsbitgenerierungsschaltung bereit, die Paritätsbits für jeden der Schlüssel K und der invertierten Schlüssel Kbar erzeugt. In beiden Konfigurationen erzeugt die Schlüsselworterzeugungsschaltung 1200 Schlüsselwörter KW und ein zugehöriges invertiertes Schlüsselwort KWbar für zugehörige Schlüssel K.
-
Beim Erzeugen von Schlüsselwörtern KW und zugehörigen invertierten Schlüsselwörtern KWbar kann die Schlüsselworterzeugungsschaltung 1200 die Schlüsselwörter KW und die invertierten Schlüsselwörter KWbar an die Programmierschaltung 600 ausgeben oder bereitstellen (6). Als Reaktion darauf kann die Programmierschaltung 600 die Schlüsselwörter KW und die invertierten Schlüsselwörter KWbar in eine Vielzahl von Ketten S gemäß der dritten Art von CAM-Speicherschema programmieren.
-
Beim Programmieren der Schlüsselwörter KW und der invertierten Schlüsselwörter KWb in die Speicherzellenstrukturen 142 gemäß dem dritten CAM-Speicherschema kann die Programmsteuerung 622 beliebige von verschiedenen Codier-, Ordnungs-, oder Formatierungsschemata verwenden, die angeben oder bestimmen, welche Bits jedes Schlüsselworts KWi und des zugehörigen invertierten Schlüsselworts KWibar in welchen Speicherzellen gespeichert sind, wie zuvor für das erste CAM-Speicherschema unter Bezugnahme auf 8 und 9 beschrieben. Dementsprechend kann die Programmsteuerung 622 bei Empfang eines i-ten Schlüsselworts KWi und eines i-ten invertierten Schlüsselworts KWibar ihre jeweiligen Bitmuster identifizieren, und basierend auf den Bitwerten dieser Bitmuster und dem Schema, das sie verwendet, bestimmen, wie das i-te Schlüsselwort KWi und das i-te invertierte Schlüsselwort KWibar in die Kette Si zu programmieren (oder zu codieren) sind, einschließlich wie die mit der Kette Si gekoppelten Wortleitungen vorgespannt werden sollen, und auf welchen Schwellenspannungspegeln jede der Speicherzellen der Kette Si liegen sollte, um das i-te Schlüsselwort KWi und das i-te invertierte Schlüsselwort KWibar in die Kette Si zu programmieren. Außerdem kann, wie nachstehend im Einzelnen beschrieben, die Programmierschaltung 600 in manchen beispielhaften Konfigurationen ein i-tes Schlüsselwort KWi und ein i-tes invertiertes Schlüsselwort KWibar zusammenhängend innerhalb der Kette Si programmieren, sodass Bits von dem i-ten Schlüsselwort KWi und von dem i-ten invertierten Schlüsselwort KWibar nicht zwischen benachbarten Speicherzellen der Kette Si verschachtelt sind. In anderen beispielhaften Konfigurationen kann die Programmierschaltung 600 das i-te Schlüsselwort KWi und das i-te invertierte Schlüsselwort KWibar programmieren, indem sie entlang der benachbarten Speicherzellen einer Kette Si verschachtelt werden. Zur Programmierung der Schlüsselwörter KW und der invertierten Schlüsselwörter KWbar in die Ketten sind je nach verwendetem Schema verschiedene Wege möglich. Da die Programmierschaltung 600 Schlüsselwörter KW und invertierte Schlüsselwörter KWbar zur Speicherung empfängt, programmiert (oder codiert) sie die mit Spalten gekoppelten Ketten durch Identifizieren ihrer Bitmuster und Durchführen von Programmiervorgängen gemäß den Bitwerten ihrer Bitmuster und dem Schema, das sie verwendet.
-
Unter erneuter Bezugnahme auf 11 ist, um einen CAM-Lesevorgang für die dritte Art von CAM-Speicherschema durchzuführen, die Lesesteuerung 702 eingerichtet, um ein Bitmuster eines Zielschlüsselworts, das einem Zielschlüssel entspricht, und ein invertiertes Bitmuster eines zugehörigen invertierten Zielschlüsselworts zu identifizieren. In manchen beispielhaften Konfigurationen erzeugt die Schlüsselworterzeugungsschaltung 1200 das Zielschlüsselwort und das zugehörige invertierte Zielschlüsselwort als Reaktion auf den Empfang des Zielschlüssels, und die Lesesteuerung 702 bestimmt die Bitmuster des Zielschlüsselworts und des invertierten Zielschlüsselworts als Reaktion auf die Erzeugung des Zielschlüsselworts und des invertierten Zielschlüsselworts. Zusätzlich kann in verschiedenen Ausführungsformen, um zu erfassen, welche der Vielzahl von Ketten S ein übereinstimmendes Schlüsselwort KW (und somit einen übereinstimmenden Schlüssel) speichert, die Leseschaltung 700 eingerichtet sein, in mindestens einem einer Vielzahl von CAM-Lesemodi zu arbeiten. Im Folgenden werden fünf CAM-Lesemodi beschrieben.
-
In einem ersten CAM-Lesemodus der Vielzahl von Lesemodi ist die Lesesteuerung 702 eingerichtet, um die Wortleitungen gemäß einer Wortleitungsvorspannungseinstellung vorzuspannen, die den Bitmustern des Zielschlüsselworts und des invertierten Zielschlüsselworts entspricht, so dass die Lesesteuerung 702 die erste Gruppe von Wortleitungen WLG1 vorspannt, die mit Speicherzellen gekoppelt sind, die Schlüsselwörter KW auf Spannungspegeln speichern, wie den hohen und niedrigen Spannungspegeln VH, VL, entsprechend dem Bitmuster des Zielschlüsselworts, und die zweite Gruppe von Wortleitungen WLG2, die mit Speicherzellen gekoppelt sind, die invertierten Schlüsselwörter KWbar auf Spannungspegel speichern, entsprechend dem invertierten Zielschlüsselwort. Für manche beispielhaften Konfigurationen kann die Wortleitungsvorspannungseinstellung, die den Bitmustern des Zielschlüsselworts und des invertierten Zielschlüsselworts entspricht, in zwei Wortleitungsvorspannungseinstellungen getrennt werden, einschließlich einer Zielwortleitungsvorspannungseinstellung, die den Bitmustern des Zielschlüsselworts entspricht, und einer invertierten Zielwortleitungsvorspannungseinstellung, die den Bitmustern des invertierten Zielschlüsselworts entspricht.
-
Wenn die Wortleitungen gemäß der Vorspannungseinstellung vorgespannt sind, die den Bitmustern des Zielschlüsselworts und des invertierten Zielschlüsselworts entspricht, kann die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durchführen, um zu bestimmen, welche der Bitleitungen leiten, und Abtastergebnisse speichern, wie beispielsweise in Form von Bits, die jeweils entweder einen logischen 1-Wert oder einen logischen 0-Wert aufweisen, basierend auf der Bestimmung in ihren jeweiligen Kettenabschnitte 804, wie zuvor in Bezug auf 8-10 beschrieben. Dementsprechend ist beim Betrieb im ersten CAM-Lesemodus die Leseschaltung 700, einschließlich der Vielzahl von Abtastschaltungen 620, eingerichtet, um einen einzelnen Abtastvorgang durchzuführen, um zu identifizieren, welche der Vielzahl von Ketten S übereinstimmende Schlüsselwörter und wiederum übereinstimmende Schlüssel speichern. Durch Einrichten der Ketten S, um sowohl die Schlüsselwörter KW als auch die invertierten Schlüsselwörter KWbar zu speichern, werden diejenigen Bitleitungen BL, die mit Ketten gekoppelt sind, die übereinstimmende Schlüsselwörter und wiederum übereinstimmende Schlüssel speichern, leiten, während die Anzahl von Fehlalarmen minimiert wird. Durch Ausführen nur eines einzigen Abtastvorgangs kann die Lesesteuerung 702 jedoch anfällig für ein Nicht-Erkennungen sein, da die Lesesteuerung 702 aufgrund der Kopplung mit einer Kette, die ein Schlüsselwort mit mindestens einem Bitfehler speichert, keine Prüfung auf Bitleitungen BL durchführt, die nicht leiten.
-
In einem zweiten CAM-Lesemodus der Vielzahl von CAM-Lesemodi ist die Lesesteuerung 702 eingerichtet, um den niedrigen Spannungspegel, mit dem sie Wortleitungen vorspannt, von einem anfänglichen niedrigen Spannungspegel VLl auf einen erhöhten niedrigen Spannungspegel VL' zu erhöhen. In manchen beispielhaften Konfigurationen ist der anfängliche niedrige Spannungspegel VLl der niedrige Spannungspegel, bei dem die Lesesteuerung 702 die Wortleitungen WL im ersten CAM-Lesemodus vorspannt. Zusätzlich oder alternativ ist der anfängliche niedrige Spannungspegel VLl der Leseimpulspegel VrA, der dem Speicherzustand A (oder dem Programmierzustand für SLC-Speicherschemata) zugehörig ist. Der erhöhte niedrige Spannungspegel VL' ist ein Wortleitungsspannungspegel, der höher ist als der anfängliche niedrige Spannungspegel VLl. In bestimmten beispielhaften Konfigurationen ist der erhöhte niedrige Spannungspegel VL' niedriger als der hohe Spannungspegel VH. In mindestens einigen beispielhaften Konfigurationen kann die Lesesteuerung 702 die Steuergateleitungs-Spannungserzeugungsschaltung 612 steuern, um die ausgewählte Wortleitungsspannung VWLS von dem anfänglichen niedrigen Spannungspegel VLl auf den erhöhten niedrigen Spannungspegel VL' zu erhöhen, und die Zeilendecodiererschaltung 614 stellt die ausgewählte Wortleitungsspannung VWLS mit dem erhöhten niedrigen Spannungspegel VL' an die Wortleitungen bereit, die mit der niedrigen Spannung VL gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, die den Bitmustern des Zielschlüsselworts und des invertierten Zielschlüsselworts entspricht.
-
Wenn die Wortleitungen mit dem hohen Spannungspegel VH und dem erhöhten niedrigen Spannungspegel VL' gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, die dem Zielschlüsselwort und dem invertierten Zielschlüsselwort entspricht, kann die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durchführen, um zu bestimmen, welche der Bitleitungen leiten, und Abtastergebnisse, wie beispielsweise in Form von Bits, die jeweils entweder einen logischen 1-Wert oder einen logischen 0-Wert aufweisen, basierend auf der Bestimmung in ihren jeweiligen Kettenabschnitten 804 speichern.
-
Für manche beispielhaften Konfigurationen kann die Lesesteuerung 702 eingerichtet sein, um einen CAM-Lesevorgang im zweiten CAM-Lesemodus über eine Vielzahl von Iterationen durchzuführen, wobei die Lesesteuerung 702 den Pegel der niedrigen Spannung während jeder nächsten Iteration inkrementell erhöht. Zum Beispiel spannt die Lesesteuerung 702 während einer ersten Iteration die Wortleitungen auf den hohen Spannungspegel VH und einen ersten erhöhten niedrigen Spannungspegel VL' gemäß der Wortleitungsvorspannungseinstellung vor, die den Ziel- und invertierten Zielschlüsselwörtern entspricht, und während einer zweiten Iteration spannt die Lesesteuerung 702 die Wortleitungen WL auf den hohen Spannungspegel VH und einen zweiten erhöhten niedrigen Spannungspegel VL'' gemäß der Vorspannungseinstellung vor, die den Ziel- und invertierten Zielschlüsselwörtern entspricht, wobei der zweite erhöhte niedrige Spannungspegel VL'' höher als der erste erhöhte niedrige Spannungspegel VL' ist. In verschiedenen Ausführungsformen kann die Lesesteuerung 702 eine beliebige Anzahl von Iterationen im zweiten CAM-Lesemodus durchführen, wodurch der Pegel der niedrigen Spannung VL während jeder nächsten Iteration gegenüber der vorherigen Iteration erhöht wird. Auf diese Weise erhöht die Lesesteuerung 702 kontinuierlich den niedrigen Spannungspegel, während sie die Vielzahl von Iterationen durchläuft.
-
Zusätzlich ist für manche beispielhaften Ausführungsformen des zweiten CAM-Lesemodus die Lesesteuerung 702 eingerichtet, um den niedrigen Spannungspegel VL für jede Iteration um einen vorbestimmten Betrag Δ zu erhöhen oder zu inkrementieren. Zum Beispiel kann die Lesesteuerung 702 den ersten erhöhten niedrigen Spannungspegel VL' auf VLl + Δ während einer ersten Iteration erhöhen, den zweiten erhöhten niedrigen Spannungspegel VL'' auf VLl + 2Δ während einer zweiten Iteration, und so weiter.
-
Während jeder Iteration, wobei die Wortleitungen auf dem hohen Spannungspegel VH und einer Vielzahl von erhöhten niedrigen Spannungspegeln gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, die den Ziel- und invertierten Zielschlüsselwörtern entspricht, kann die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durchführen, um zu bestimmen, welche der Bitleitungen leiten, und Abtastergebnisse, wie beispielsweise in Form von Bits, die jeweils entweder einen logischen 1-Wert oder einen logischen 0-Wert aufweisen, basierend auf der Bestimmung in ihren jeweiligen Kettenabschnitten 804 speichern.
-
Dementsprechend führen beim Durchführen eines CAM-Lesevorgangs über eine Vielzahl von Iterationen im zweiten CAM-Lesemodus die Vielzahl von Abtastschaltungen 620 eine Vielzahl von Abtastvorgängen durch, wobei die Anzahl von Abtastvorgängen gleich der Anzahl von Iterationen ist. Während und/oder am Ende jeder Iteration kann die Lesesteuerung 702 den Abtastergebnisspeicher 802 analysieren und bestimmen, welche der Ketten S übereinstimmende Schlüssel speichern. Wenn in diesem Zusammenhang ein CAM-Lesevorgang über eine Vielzahl von Iterationen in dem zweiten CAM-Lesemodus durchgeführt wird, iteriert die Lesesteuerung 702 durch eine Vielzahl von Abtastvorgängen, wodurch der niedrige Spannungspegel während jedes Abtastvorgangs, durch die sie iteriert, erhöht wird.
-
Wenn ein CAM-Lesevorgang in dem zweiten CAM-Lesemodus durchgeführt wird, kann die Lesesteuerung 702 Ketten identifizieren, die übereinstimmende Schlüssel für jene Ketten S speichern, die Speicherzellen in oder nahe dem gelöschten Zustand einschließen, aber Schwellenspannungen oberhalb, wie etwa etwas oberhalb, des anfänglichen niedrigen Spannungspegels VLl, wie etwa etwas oberhalb des Leseimpulspegels VrA, der dem Speicherzustand A zugehörig ist (z. B. dem Programmierzustand in SCL-Speicherschemata) aufweisen. Dementsprechend kann die Lesesteuerung 702 durch Ausführen einer oder mehrerer Iterationen im zweiten CAM-Lesemodus übereinstimmende Schlüssel erkennen, die sie ansonsten nicht erkannt hätte, wenn sie nur im ersten CAM-Lesemodus ausgeführt würde.
-
In einem dritten CAM-Lesemodus der Vielzahl von CAM-Lesemodi kann die Leseschaltung 700 einen CAM-Lesevorgang durchführen, indem Sätze von Abtastvorgängen durchgeführt werden, wobei jeder Satz für einen bestimmten Abschnitt einer Sammlung von Speicherzellen, der ein Schlüsselwort oder ein invertiertes Schlüsselwort speichert, und/oder für eine bestimmte Wortleitungsgruppe, die mit dem bestimmten Abschnitt von Speicherzellen gekoppelt ist, durchgeführt wird. Während eines Satzes von Abtastvorgängen für einen bestimmten Abschnitt und/oder eine bestimmte Wortleitungsgruppe spannt die Lesesteuerung 702 die Wortleitungsgruppe gemäß einer Vielzahl von zugehörigen Wortleitungsvorspannungseinstellungen vor. Zum Beispiel führen die Abtastschaltungen 620 einen ersten Satz von Abtastvorgängen für eine erste Wortleitungsgruppe, die mit Speicherzellen gekoppelt ist, die Schlüsselwörter speichern, und einen zweiten Satz von Abtastvorgängen für eine zweite Wortleitungsgruppe durch, die mit Speicherzellen gekoppelt ist, die invertierte Schlüsselwörter speichern. Während des ersten Satzes von Abtastvorgängen spannt die Lesesteuerung 702 die erste Wortleitungsgruppe gemäß einem ersten Satz von Wortleitungsvorspannungseinstellungen vor. Während des zweiten Satzes von Abtastvorgängen spannt die Lesesteuerung 702 die zweite Wortleitungsgruppe gemäß einem zweiten Satz von Wortleitungsvorspannungseinstellungen vor. Die Abtastschaltungen 620 bestimmen Abtastergebnisse für den ersten und den zweiten Satz von Abtastvorgängen und die Lesesteuerung 702 bestimmt, basierend auf diesen Abtastergebnissen, ob das Schlüsselwort mit einem Zielschlüsselwort übereinstimmt.
-
Für mindestens einige beispielhafte Konfigurationen führt die Leseschaltung 700 bei Betrieb im dritten CAM-Lesemodus die Sätze von Abtastvorgängen über eine Vielzahl von Iterationen durch. Während jeder Iteration erhöht die Lesesteuerung 702 eine andere Wortleitungsspannung oder eine andere Kombination der Vielzahl von Wortleitungsspannungen, die an eine Vielzahl von Wortleitungen angelegt werden. In bestimmten beispielhaften Konfigurationen ändert die Lesesteuerung 702 während jeder Iteration eine andere Wortleitungsspannung oder eine andere Kombination der Vielzahl von Wortleitungsspannungen auf dem niedrigen Spannungspegel VL auf den hohen Spannungspegel VH, und die Vielzahl von Abtastschaltungen 620 führt einen Abtastvorgang durch, um eine Vielzahl von Abtastergebnissen als Reaktion auf die Änderungen der Wortleitungsspannung zu bestimmen.
-
Im Einzelnen spannt, wenn im dritten CAM-Lesemodus gearbeitet wird, die Lesesteuerung 702 für jeden Satz von Abtastvorgängen für jede der Wortleitungsgruppen eine gegebene Wortleitungsgruppe mit einer Vielzahl von Wortleitungsspannungen gemäß einer Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen vor. Eine modifizierte Wortleitungsvorspannungseinstellung ist eine Wortleitungsvorspannungseinstellung, die sich von einer anfänglichen Wortleitungsvorspannungseinstellung (auch als Standardwortleitungs-Vorspannungseinstellung bezeichnet) unterscheidet oder im Vergleich zu dieser modifiziert ist, die Bitmustern eines Zielschlüsselworts und eines zugehörigen invertierten Zielschlüsselworts entspricht. Für manche beispielhaften Konfigurationen ist die anfängliche oder voreingestellte Wortleitungsvorspannungseinstellung die Wortleitungsvorspannungseinstellung, gemäß der die Lesesteuerung 702 die Wortleitungen in dem ersten CAM-Lesemodus vorspannt. Außerdem unterscheidet sich eine modifizierte Wortleitungsvorspannungseinstellung von der anfänglichen Vorspannungseinstellung dadurch, dass sie zumindest eine Wortleitung der Vielzahl von Wortleitungen auf einen anderen Spannungspegel abbildet als den Spannungspegel, auf den die zumindest eine Wortleitung in der anfänglichen Wortleitungsvorspannungseinstellung abgebildet wird/werden. Jede der Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen bildet eine andere Wortleitung oder eine andere Kombination von Wortleitungen auf den anderen Spannungspegel ab.
-
In bestimmten beispielhaften Konfigurationen schließen die Wortleitungen, die in den modifizierten Wortleitungsvorspannungseinstellungen einem anderen Spannungspegel zugehörig sind, diejenigen Wortleitungen ein, die in der anfänglichen Wortleitungsvorspannungseinstellung dem niedrigen Spannungspegel VL zugehörig sind. Für solche Konfigurationen bildet die anfängliche Wortleitungsvorspannungseinstellung einen ersten Satz von einer oder mehreren Wortleitungen der Vielzahl von Wortleitungen auf den niedrigen Spannungspegel VL und einen zweiten Satz von einer oder mehreren Wortleitungen der Vielzahl von Wortleitungen auf den hohen Spannungspegel VH ab, der den Bitmustern eines Zielschlüssels und eines invertierten Zielschlüssels entspricht. Jede modifizierte Wortleitungsvorspannungseinstellung bildet mindestens eine der Wortleitungen des ersten Satzes auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL ab. Außerdem bildet unter der Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen jede modifizierte Wortleitungsvorspannungseinstellung eine andere Wortleitung oder eine andere Kombination von Wortleitungen des ersten Satzes auf den hohen Spannungspegel VH ab.
-
Zusätzlich hängt die Anzahl von Wortleitungen, die eine gegebene modifizierte Wortleitungsvorspannungseinstellung auf einen anderen Spannungspegel abbildet, von einer Anzahl von Bitfehlern ab, wie beispielsweise einer maximalen Anzahl von Bitfehlern, die mit der Speicherung des Schlüsselworts oder eines invertierten Schlüsselworts in einer Kette verbunden sind. In bestimmten Ausführungsformen ist die Bitfehleranzahl gleich einer maximalen t-Anzahl von Bitfehlern, bis zu der eine Kette, die ein Schlüsselwort oder ein invertiertes Schlüsselwort speichert, ein übereinstimmendes Schlüsselwort aufweisen kann und weiterhin als ein übereinstimmendes Schlüsselwort speichernd erkannt werden kann, ohne dass die Erkennung ein Fehlalarm ist. Wenn zum Beispiel die Anzahl t eins ist, dann bildet eine gegebene modifizierte Wortleitungsvorspannungseinstellung eine Wortleitung des ersten Satzes auf den hohen Spannungspegel VH ab. In solchen Konfigurationen, in denen die Anzahl t eins ist, bildet jede modifizierte Wortleitungsvorspannungseinstellung aus der Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen eine andere der Wortleitungen des ersten Satzes auf den hohen Spannungspegel VH ab. Wenn als weiteres Beispiel die Anzahl t zwei ist, dann bildet eine gegebene modifizierte Wortleitungsvorspannungseinstellung zwei Wortleitungen des ersten Satzes auf den hohen Spannungspegel VH ab. In solchen Konfigurationen, in denen die Anzahl t zwei ist, bildet jede modifizierte Wortleitungsvorspannungseinstellung eine andere Kombination von zwei Wortleitungen auf den hohen Spannungspegel ab im Vergleich zu anderen modifizierten Wortleitungsvorspannungseinstellungen.
-
Außerdem ist jede modifizierte Wortleitungsvorspannungseinstellung für eine bestimmte der Wortleitungsgruppen vorgesehen, entspricht dieser oder ist für diese spezifisch. Zum Beispiel entspricht, oder ist unter der dritten Art von CAM-Speicherschema, jede modifizierte Wortleitungsvorspannungseinstellung der ersten Wortleitungsgruppe WLG1 von Wortleitungen gekoppelt mit Speicherzellen, die Schlüsselwörter speichern, oder entspricht oder ist für die zweite Wortleitungsgruppe WLG2 von Wortleitungen mit Speicherzellen gekoppelt, welche die invertierten Schlüsselwörter speichern. Für eine gegebene modifizierte Wortleitungsvorspannungseinstellung, welche Wortleitung(en) des ersten Satzes auf den hohen Spannungspegel VH abbildet/abbilden, hängt davon ab, welcher Wortleitungsgruppe die gegebene modifizierte Wortleitungsvorspannungseinstellung entspricht. Wenn die gegebene modifizierte Wortleitungsvorspannungseinstellung der ersten Wortleitungsgruppe WLG1 entspricht, dann ist/sind die Wortleitung(en) des ersten Satzes, die auf den hohen Spannungspegel VH in der gegebenen modifizierten Wortleitungsvorspannungseinstellung abgebildet wird/werden, Teil der ersten Wortleitungsgruppe WLG1. Wenn die gegebene modifizierte Wortleitungsvorspannungseinstellung der zweiten Wortleitungsgruppe WLG2 entspricht, dann ist/sind die Wortleitung(en) des ersten Satzes, die auf den hohen Spannungspegel VH in der gegebenen modifizierten Wortleitungsvorspannungseinstellung abgebildet wird/werden, Teil der zweiten Wortleitungsgruppe WLG2.
-
In diesem Zusammenhang werden die Spannungspegel, die durch eine modifizierte Wortleitungsvorspannungseinstellung für eine bestimmte Wortleitungsgruppe angezeigt werden, relativ zu den Spannungspegeln modifiziert, die durch die Zielwortleitungsvorspannungseinstellung oder die invertierte Wortleitungsvorspannungseinstellung angezeigt werden, die auch auf die Wortleitungen der bestimmten Wortleitungsgruppe abgebildet werden. Dementsprechend weisen modifizierte Wortleitungsgruppen für die erste Wortleitungsgruppe WLG1 Spannungspegel auf, die relativ zu den in der Zielwortleitungs-Vorspannungseinstellung angegebenen Spannungspegeln modifiziert sind, die auch für die erste Wortleitungsgruppe WLG1 sind. In ähnlicher Weise weisen modifizierte Wortleitungsgruppen für die zweite Wortleitungsgruppe WLG2 Spannungspegel auf, die relativ zu den in der invertierten Zielwortleitungs-Vorspannungseinstellung angegebenen Spannungspegeln modifiziert sind, die auch für die zweite Wortleitungsgruppe WLG2 sind.
-
Außerdem entspricht für eine gegebene CAM-Lesevorgang, die gemäß der dritten Art von CAM-Speicherschema im dritten CAM-Lesemodus durchgeführt wird, eine x1-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen der ersten Wortleitungsgruppe WLG1, und eine x2-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen entspricht der zweiten Wortleitungsgruppe WLG2. Die x1-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen, die der ersten Wortleitungsgruppe WLG1 entsprechen, hängt von einer s1-Anzahl von Wortleitungen ab, die mit Speicherzellen gekoppelt sind, die Schlüsselwörter speichern, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind, und der t-Anzahl von Wortleitungen, die eine gegebene modifizierte Wortleitungsvorspannungseinstellung auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL abbildet. Insbesondere,
Außerdem ist die x2-Anzahl von modifizierten Vorspannungseinstellungen, die der zweiten Wortleitungsgruppe WLG2 entsprechen, von einer s2-Anzahl von Wortleitungen abhängig, die mit Speicherzellen gekoppelt sind, die invertierte Schlüsselwörter speichern, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind, und der t-Anzahl von Wortleitungen, die eine gegebene modifizierte Wortleitungsvorspannungseinstellung auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL abbildet. Insbesondere,
Dementsprechend ist eine Gesamtzahl von modifizierten Wortleitungsvorspannungseinstellungen, welche die Lesesteuerung
702 verwendet, um einen CAM-Lesevorgang gemäß der dritten Art von CAM-Speicherschema im dritten CAM-Lesemodus durchzuführen, gleich
-
Außerdem bilden zwei oder mehr modifizierte Wortleitungsvorspannungseinstellungen, die derselben Wortleitungsgruppe (z. B. derselben ersten Wortleitungsgruppe oder derselben zweiten Wortleitungsgruppe) entsprechen, unterschiedliche Wortleitungen oder unterschiedliche Kombinationen von Wortleitungen auf den hohen Spannungspegel VH ab, jedoch sind diejenigen Wortleitungen, die abgebildet werden, Teil derselben Wortleitungsgruppe. Außerdem werden für eine gegebene modifizierte Wortleitungsvorspannungseinstellung diejenigen Wortleitungen, die nicht Teil der Wortleitungsgruppe sind, der die gegebene modifizierte Wortleitungsvorspannungseinstellung entspricht, auf den hohen Spannungspegel VH abgebildet, unabhängig davon, ob sie gemäß der anfänglichen Wortleitungsvorspannungseinstellung auf den hohen Spannungspegel VH oder den niedrigen Spannungspegel VL abgebildet werden.
-
Wenn ein CAM-Lesevorgang in dem dritten CAM-Lesemodus für die dritte Art von CAM-Speicherschema über eine Vielzahl von Iterationen durchgeführt wird, spannt die Lesesteuerung 702 die Vielzahl von Wortleitungen gemäß einer anderen modifizierten Wortleitungsvorspannungseinstellung während jeder Iteration vor. Dementsprechend spannt die Lesesteuerung 702 während jeder Iteration die Wortleitungen gemäß einer modifizierten Wortleitungsvorspannungseinstellung vor, die sie zuvor nicht verwendet hat. Nachdem die Lesesteuerung 702 die Wortleitungen gemäß jeder der modifizierten Vorspannungseinstellungen vorspannt, kann der Lesesteuerung 702 bestimmen, keine weiteren Iterationen durchzuführen.
-
Wenn die Wortleitungen gemäß einer gegebenen modifizierten Wortleitungsvorspannungseinstellung während einer gegebenen Iteration vorgespannt werden, kann die Lesesteuerung 702 effektiv eine gegebene Wortleitung oder eine gegebene Kombination von Wortleitungen auf den hohen Spannungspegel VH vorspannen, den sie ansonsten auf den niedrigen Spannungspegel VL vorspannen würde, wenn die Wortleitungen gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt werden. Wenn zu einer nächsten Iteration übergegangen wird, kann die Lesesteuerung 702 den Pegel, auf dem sie die gegebene Wortleitung oder Kombination von Wortleitungen vorspannt, von dem hohen Spannungspegel VH auf den niedrigen Spannungspegel VL schalten, und ferner den Pegel, mit dem sie eine andere Wortleitung oder eine andere Kombination von Wortleitungen vorspannt, gemäß einer anderen modifizierten Wortleitungsvorspannungseinstellung von dem niedrigen Spannungspegel VL auf den hohen Spannungspegel VH schalten. Die Lesesteuerung 702 fährt auf diese Weise fort, während sie jede der Iterationen zyklisch durchläuft oder durchwechselt, wobei sie eine Vorspannung einer oder einer Kombination von Wortleitungen von dem hohen Spannungspegel VH auf den niedrigen Spannungspegel VL schaltet, während sie eine andere Vorspannung einer anderen oder Kombination von Wortleitungen von dem niedrigen Spannungspegel VL auf den hohen Spannungspegel VH für eine nächste Iteration schaltet.
-
Für zumindest einige Ausführungsformen kann die Lesesteuerung 702 eine Sequenz oder eine Reihenfolge der Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen bestimmen, gemäß der die Wortleitungen über die Vielzahl von Iterationen vorgespannt werden sollen, so dass jede modifizierte Wortleitungsvorspannungseinstellung einer jeweiligen der Iterationen entspricht, wie durch die Sequenz oder Reihenfolge bestimmt. Dementsprechend kann die Lesesteuerung 702 für eine gegebene Iteration die Wortleitungen gemäß einer modifizierten Wortleitungsvorspannungseinstellung vorspannen, die den gegebenen Iterationen entspricht, und für eine nächste Iteration kann die Lesesteuerung 702 die Wortleitungen gemäß einer anderen modifizierten Wortleitungsvorspannungseinstellung vorspannen, die der nächsten Iteration entspricht. Dabei wird jede Wortleitung oder jede mögliche Kombination von t Wortleitungen, die gemäß der anfänglichen Wortleitungsvorspannungseinstellung auf den niedrigen Spannungspegel VL vorgespannt wird, während einer der Iterationen in dem dritten CAM-Lesemodus auf den hohen Spannungspegel VH vorgespannt.
-
Außerdem kann die Vielzahl von Abtastschaltungen
620 während jeder Iteration mit den Wortleitungen, die auf den hohen und niedrigen Spannungspegeln VH, VL gemäß einer der modifizierten Wortleitungsvorspannungseinstellungen vorgespannt sind, einen Abtastvorgang durchführen, um zu bestimmen, welche der Bitleitungen leitet. Dementsprechend ist im Verlauf einer CAM-Lesevorgang die Anzahl von Iterationen und wiederum die Anzahl von Abtastvorgängen, welche die Vielzahl von Abtastschaltungen
620 durchführt, gleich einer Gesamtzahl von modifizierten Wortleitungsvorspannungseinstellungen, die abhängig ist von einer s1-Anzahl von Wortleitungen, die mit Speicherzellen gekoppelt sind, die Schlüsselwörter speichern, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind, einer s2-Anzahl von Wortleitungen, die mit Speicherzellen gekoppelt sind, die invertierte Schlüsselwörter speichern, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind, und der t-Anzahl von Wortleitungen, die eine gegebene modifizierte Wortleitungsvorspannungseinstellung auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL gemäß der anfänglichen Vorspannungseinstellung abbildet, insbesondere die Summe eines ersten binomialen Koeffizienten
und eines zweiten binomialen Koeffizienten
Effektiv ist der erste binomiale Koeffizient die Anzahl eines ersten Satzes von Abtastvorgängen, welche die Abtastschaltungen
620 für die erste Wortleitungsgruppe WLG1 durchführen, und der zweite binomiale Koeffizient ist die Anzahl eines zweiten Satzes von Abtastvorgängen, welche die Abtastschaltungen
620 für die zweite Wortleitungsgruppe WLG2 durchführen.
-
Auch speichert die Vielzahl von Abtastschaltungen 620 während jeder Iteration Abtastergebnisse, wie beispielsweise in der Form von Bits, die jeweils entweder einen logischen 1-Wert oder einen logischen 0-Wert aufweisen, basierend auf ihren Bestimmungen, welche Bitleitungen in ihren jeweiligen Kettenabschnitten 804 leiteten. Um zu identifizieren, ob eine Kette S einen übereinstimmenden Schlüssel speichert, können die Kettenabschnitte 804 eine zusätzliche Logikschaltlogik einschließen oder damit gekoppelt sein, die Logikoperationen an Abtastergebnissen durchführt, um zu identifizieren, ob eine zugehörige Kette, die ein Schlüsselwort und ein invertiertes Schlüsselwort mit bis zu einer t-Anzahl von Bitfehlern speichert, ein übereinstimmendes Schlüsselwort speichert.
-
13 zeigt ein Blockdiagramm eines beispielhaften i-ten Ketten- (Si) Abschnitts 1302, der für eine beispielhafte Konfiguration für einen i-ten Kettenabschnitt 804(i) repräsentativ sein kann, der verwendet wird, um CAM-Lesevorgänge in dem dritten CAM-Lesemodus für die dritte Art von CAM-Speicherschema durchzuführen. 13 zeigt den i-ten Kettenabschnitt 1302, der mit einer zugehörigen i-ten Abtastschaltung 620(i) und einer zugehörigen i-ten Kette Si gekoppelt ist, wobei die i-te Kette Si ein i-tes Schlüsselwort KWi, das einen Satz von Informationsbits KWi_i und einen Satz von Paritätsbits KWi_p einschließt, und ein zugehöriges i-tes invertiertes Schlüsselwort KWibar speichert, das einen Satz von Informationsbits KWibar_i und einen Satz von Paritätsbits KWibar_p einschließt. Die Abtastschaltung 620(i) und die Kette Si in 13 können eine beliebige der m-Anzahl von Abtastschaltungen 620 darstellen, die mit der m-Anzahl von Ketten S gekoppelt sind, wie in 8 veranschaulicht. In der Implementierung kann jeder der m-Anzahl von Kettenabschnitten 804(1) bis 804(m) die Konfiguration des i-ten Kettenabschnitts 1302 aufweisen, der in 13 gezeigt ist.
-
Ferner kann in der beispielhafte Konfiguration in 13 der Kettenabschnitt 1302 eine Vielzahl von vorläufigen Ergebnis- (PR) Unterabschnitten 1304 einschließen. Jeder PR-Unterabschnitt 1304 kann eingerichtet sein, um ein Abtastergebnis eines Abtastvorgangs zu speichern, wie beispielsweise in der Form eines einzelnen Bits mit einem logischen 1-Wert oder einem logischen 0-Wert. Zusätzlich kann die Vielzahl von PR-Unterabschnitten 1304 in einer Vielzahl von Wortleitungsgruppen-Unterabschnitten (WLG-Unterabschnitten) 1306 angeordnet oder organisiert sein, die jeweils einer der Vielzahl von Wortleitungsgruppen WLG1, WLG2 zugehörig sind oder dieser entsprechen. Zum Beispiel ist ein erster Satz von PR-Unterabschnitten 1304_WLG1 in einer ersten Wortleitungsgruppe (WLG1) von Unterabschnitten 1306(1) angeordnet oder organisiert und entspricht der ersten Wortleitungsgruppe WLG1, die mit Speicherzellen gekoppelt ist, die Schlüsselwörter KW speichern, und ein zweiter Satz von PR-Unterabschnitten 1304_WLG2 ist in einer zweiten Wortleitungsgruppe (WLG2) von Unterabschnitten 1306(2) angeordnet oder organisiert und entspricht der zweiten Wortleitungsgruppe WLG2, die mit Speicherzellen gekoppelt ist, die invertierte Schlüsselwörter (KWbar) speichern.
-
Zusätzlich kann die Anzahl von PR-Unterabschnitten 1304 einer gegebenen Wortleitungsgruppe von Unterabschnitten, die einer gegebenen Wortleitungsgruppe entsprechen, gleich der Anzahl von modifizierten Wortleitungsvorspannungseinstellungen sein, die der gegebenen Wortleitungsgruppe entsprechen. Wie in 13 gezeigt, schließt die erste Wortleitungsgruppe von Unterabschnitten 1306(1) eine x1-Anzahl von PR-Unterabschnitten 1304_WLG1(1) bis 1304_WLG1(x1) ein, die gleich einer x1-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen ist, die der ersten Wortleitungsgruppe WLG1 entspricht. In ähnlicher Weise schließt die zweite Wortleitungsgruppe von Unterabschnitten 1306(2) eine x2-Anzahl von PR-Unterabschnitten 1304_WLG2(1) bis 1304_WLG2(x2) ein, die gleich einer x2-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen ist, die der zweiten Wortleitungsgruppe WLG2 entspricht. Dementsprechend ist jeder PR-Unterabschnitt 1304 einer jeweiligen oder einer anderen der Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen zugehörig.
-
Um einen CAM-Lesevorgang gemäß der dritten Art von CAM-Speicherschema in dem dritten CAM-Lesemodus durchzuführen, führen die Vielzahl von Abtastschaltungen 620 während jeder Iteration einen Abtastvorgang mit den Wortleitungen durch, die gemäß einer jeweiligen der modifizierten Wortleitungsvorspannungseinstellungen vorgespannt sind. Als Reaktion auf das Durchführen des Abtastvorgangs speichern die Abtastschaltungen 620 jeweils ein Abtastergebnis in einem PR-Unterabschnitt 1304, der einem jeweiligen einen der modifizierten Wortleitungsvorspannungseinstellungen zugehörig ist. Zum Beispiel nimmt man in Bezug auf 13 an, dass die Lesesteuerung 702 eine Iteration mit den Wortleitungen durchführt, die gemäß einer ersten modifizierten Wortleitungsvorspannungseinstellung vorgespannt sind, die der ersten Wortleitungsgruppe WLG1 entspricht. Als Reaktion auf den Abtastvorgang, der während dieser Iteration durchgeführt wird, speichert die i-te Abtastschaltung 620 ein Abtastergebnis, wie beispielsweise ein Bit mit einem logischen 0-Wert oder einem logischen 1-Wert, in dem PR-Unterabschnitt 1304_WLG1(1), welcher der ersten modifizierten Wortleitungsvorspannungseinstellung zugehörig ist, die der ersten Wortleitungsgruppe WLG1 entspricht.
-
Die in den PR-Unterabschnitten 1304 gespeicherten Abtastergebnisse können als vorläufige oder anfängliche Abtastergebnisse bezeichnet werden, welche die Leseschaltung 700 durch Durchführen von Logikoperationen kombiniert, um endgültige Abtastergebnisse zu erzeugen, die anzeigen oder identifizieren, welche der Ketten ein übereinstimmendes Schlüsselwort speichern, wobei jede Kette ein Schlüsselwort oder ein invertiertes Schlüsselwort mit bis zu einer t-Anzahl von Bitfehlern speichert. Für zumindest einige beispielhaften Konfigurationen kann jeder der Kettenabschnitte 804 seine endgültigen Ergebnisse in einem zugehörigen endgültigen Ergebnis- (FR) Unterabschnitt speichern. 13 zeigt den Kettenabschnitt 1302, welcher der i-ten Kette Si zugehörig ist, einschließlich eines zugehörigen endgültigen Ergebnis- (FR) -Unterabschnitts 1308, der eingerichtet ist, um ein endgültiges Abtastergebnis zu speichern, das angibt, ob die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert.
-
Im Einzelnen ist die Leseschaltung 700 eingerichtet, um eine ODER-Operation an den vorläufigen Abtastergebnissen durchzuführen, die aus Abtastvorgänge erzeugt werden, die derselben Wortleitungsgruppe entsprechen und/oder für diese durchgeführt werden. Die Abtastschaltungen 620 führen Abtastvorgänge für dieselbe Wortleitungsgruppe durch, wobei die Abtastvorgänge durchgeführt werden, während Wortleitungen gemäß modifizierten Wortleitungsvorspannungseinstellungen vorgespannt werden, die derselben Wortleitungsgruppe entsprechen. Um es weiter auszuführen: während eines CAM-Lesevorgangs führt die Lesesteuerung 702 eine x-Anzahl von Iterationen durch, wobei jede der Wortleitungen gemäß einer jeweiligen der modifizierten Wortleitungsvorspannungseinstellungen vorgespannt ist, die derselben Wortleitungsgruppe entsprechen, und die Vielzahl von Abtastschaltungen 620 führt eine x-Anzahl von Abtastvorgänge über die x-Anzahl von Iterationen durch und speichert eine x-Anzahl von vorläufigen Abtastergebnissen in den PR-Unterabschnitten 1304, die derselben Wortleitungsgruppe zugehörig sind.
-
So führt beispielsweise in Bezug auf 13 die Leseschaltung 700 eine x1-Anzahl von Iterationen durch, wobei jede der Wortleitungen gemäß einer jeweiligen der x1-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen vorgespannt ist, die der ersten Wortleitungsgruppe WLG1 entsprechen, und die i-te Abtastschaltung 620(i) führt eine x1-Anzahl eines ersten Satzes von Abtastvorgänge für die erste Wortleitungsgruppe WLG1 über die x1-Anzahl von Iterationen durch und bestimmt eine x1-Anzahl von vorläufigen Abtastergebnissen, wobei sie in den PR-Unterabschnitten 1304_WLG1(1) bis 1304_WLG1(x1) gespeichert werden. Beim Erzeugen der vorläufigen Abtastergebnisse für Abtastvorgänge, die für dieselbe Wortleitungsgruppe durchgeführt werden, führt die Leseschaltung 700 eine logische ODER-Operation an diesen vorläufigen Abtastergebnissen durch, um ein kombiniertes Abtastergebnis für die erste Wortleitungsgruppe zu erzeugen.
-
In ähnlicher Weise führt die Leseschaltung 700 eine x2-Anzahl von Iterationen durch, wobei jede der Wortleitungen gemäß einer jeweiligen der x2-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen vorgespannt ist, die der zweiten Wortleitungsgruppe WLG2 entsprechen, und die i-te Abtastschaltung 620(i) führt eine x2-Anzahl eines zweiten Satzes von Abtastvorgänge für die zweite Wortleitungsgruppe WLG2 über die x2-Anzahl von Iterationen durch und bestimmt eine x2-Anzahl von vorläufigen Abtastergebnissen, wobei sie in den PR-Unterabschnitten 1304_WLG2(1) bis 1304_WLG2(x2) gespeichert werden. Beim Erzeugen der vorläufigen Abtastergebnisse für Abtastvorgänge, die für dieselbe Wortleitungsgruppe durchgeführt werden, führt die Leseschaltung 700 eine logische ODER-Operation an diesen vorläufigen Abtastergebnissen durch, um ein kombiniertes Abtastergebnis für die zweite Wortleitungsgruppe WLG2 zu erzeugen.
-
Die Leseschaltung 700 kann eine ODER-Logikschaltung einschließen, die eingerichtet ist, um die ODER-Logikoperationen durchzuführen. In der In 13 gezeigten beispielhaften Konfiguration ist der i-te Kettenabschnitt 1302 so gezeigt, dass er eine ODER-Logikschaltung in Form einer Vielzahl von ODER-Logikschaltungen 1310 enthält oder damit gekoppelt ist, um die ODER-Logikoperationen durchzuführen, einschließlich einer ersten ODER-Logikschaltung 1310(1) und einer zweiten ODER-Logikschaltung 1310(2). Die erste ODER-Logikschaltung 1310(1) ist eingerichtet, um eine ODER-Logikoperation an der x1-Anzahl von vorläufigen Abtastvorgänge durchzuführen, die aus der x1-Anzahl von Abtastergebnissen erzeugt werden, die für die erste Wortleitungsgruppe WLG1 durchgeführt werden, und als Reaktion darauf ein erstes kombiniertes Abtastergebnis für die erste Wortleitungsgruppe WLG1 erzeugen. In ähnlicher Weise ist die zweite ODER-Logikschaltung 1310(2) eingerichtet, um eine ODER-Logikoperation an der x2-Anzahl von vorläufigen Abtastergebnissen durchzuführen, die aus der x2-Anzahl von Abtastvorgänge erzeugt werden, die für die zweite Wortleitungsgruppe WLG2 durchgeführt werden, und als Reaktion darauf ein zweites kombiniertes Abtastergebnis für die zweite Wortleitungsgruppe WLG2 erzeugen.
-
Um ein endgültiges Abtastergebnis für den CAM-Lesevorgang für eine gegebene i-te Kette Si zu erzeugen, kann die Leseschaltung 700 ferner eingerichtet sein, eine UND-Logikoperation an den kombinierten Abtastergebnissen für die Wortleitungsgruppen WLG durchzuführen. Das Fazit oder Ergebnis der UND-Logikoperation ist das endgültige Abtastergebnis.
-
In der in 13 gezeigten beispielhafte Konfiguration ist der i-te Kettenabschnitt 1302 so gezeigt, dass er eine UND-Logikschaltung 1312 einschließt oder damit gekoppelt ist, die eingerichtet ist, um eine UND-Logikoperation an dem kombinierten Abtastergebnis für die erste Wortleitungsgruppe WLG1 und dem kombinierten Abtastergebnis für die zweite Wortleitungsgruppe WLG2 durchzuführen und ein endgültiges Abtastergebnisses für die erste und die zweite Wortleitungsgruppe WLG1, WLG2 als Reaktion auf die UND-Logikoperation zu erzeugen. Der endgültigen Ergebnis- (FR) Unterabschnitt 1308 kann eingerichtet sein, um das endgültige Abtastergebnis zu speichern, das von der UND-Logikschaltung 1312 erzeugt wird, wie beispielsweise ein Bit mit einem logischen 1-Wert oder einem logischen 0-Wert, um anzuzeigen, ob die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert.
-
Nach dem Durchführen aller Iterationen kann die Lesesteuerung 702 die endgültigen Abtastergebnisse im Abtastergebnisspeicher 802 analysieren, um zu bestimmen, welche der Bitleitungen und/oder Ketten während des Abtastvorgangs leiteten, wie beispielsweise durch Bestimmen, welche der Kettenabschnitte 804 einen logischen 1-Wert speichern und welche einen logischen 0-Wert speichern. Als Reaktion auf die Analyse kann die Lesesteuerung 702 bestimmen, welche Ketten übereinstimmende Schlüsselwörter speichern, und entweder Spaltenadressen dieser Ketten an die Steuerung 102 zurücksenden oder basierend auf der Spaltenadresse dieser Ketten Datensätze abrufen, die diesen übereinstimmenden Schlüsselwörtern zugehörig sind, ohne zuerst mit der Steuerung 102 kommunizieren zu müssen. Die Speicherchips 104 können die abgerufenen Datensätze an die Steuerung 102 senden, die wiederum die abgerufenen Datensätze an die Hostvorrichtung senden kann, die den Zielschlüssel gesendet hat.
-
Während einer gegebenen Iteration eines CAM-Lesevorgangs, wenn die Wortleitungen gemäß einer modifizierten Wortleitungsvorspannungseinstellung vorgespannt werden, die einer gegebenen Wortleitungsgruppe entspricht, spannt die Lesesteuerung 702 eine entsprechende t-Anzahl von Wortleitungen, die Teil der gegebenen Wortleitungsgruppe sind, auf den hohen Spannungspegel VH vor, der ansonsten auf den niedrigen Spannungspegel VL vorgespannt werden würde, wenn er gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt würde, wie zuvor beschrieben. Für den Fall, dass Speicherzellen der i-ten Kette Si, die mit der entsprechenden t-Anzahl von Wortleitungen gekoppelt sind, Daten mit bis zu einer t-Anzahl von Bitfehlern speichern (z. B. Speichern von Daten mit einem logischen O-Wert anstelle eines logischen 1-Wertes) können diese Speicherzellen noch leiten, da ihre Steuergates auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL vorgespannt sind. Außerdem spannt gemäß der gegebenen modifizierten Wortleitungsvorspannungseinstellung die Lesesteuerung 702 Wortleitungen, die nicht Teil der gegebenen Wortleitungsgruppe sind, auf den hohen Spannungspegel VH vor, so dass Speicherzellen der i-ten Kette Si, die mit diesen Wortleitungen gekoppelt sind, in der Lage sind, zu leiten, wodurch das Ergebnis des Abtastvorgangs, der während der gegebenen Iteration durchgeführt wird, nicht beeinflusst wird. Infolgedessen wird, wenn die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert, aber dieses übereinstimmende Schlüsselwort oder das invertierte übereinstimmende Schlüsselwort mit bis zu einer t-Anzahl von Bitfehlern speichert, die i-te Kette Si (und die i-te Bitleitung BLi) mindestens einmal über die x1-Anzahl von Abtastvorgänge leiten, die für die erste Wortleitungsgruppe WLG1 durchgeführt werden, und wird mindestens einmal über die x2-Anzahl von Abtastvorgänge leiten, die für die zweite Wortleitungsgruppe WLG2 durchgeführt werden, wobei bewirkt wird, dass die ODER-Logikschaltungen 1310 ihre jeweiligen kombinierten Abtastergebnisse mit einem entsprechenden logischen 1-Wert ausgeben, und wobei wiederum bewirkt wird, dass die UND-Logikschaltung 1312 das endgültige Abtastergebnis mit einem logischen 1-Wert ausgibt, um anzuzeigen, dass die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert. Alternativ wird, wenn die i-te Kette Si kein übereinstimmendes Schlüsselwort speichert, die i-te Kette Si (und die i-te Bitleitung Bli) nicht mindestens einmal über die x1-Anzahl von Abtastvorgängen leiten, die für die erste Wortleitungsgruppe WLG1 durchgeführt werden, und/oder wird nicht mindestens einmal über die x2-Anzahl von Abtastvorgängen leiten, die für die zweite Wortleitungsgruppe WLG2 durchgeführt werden, wobei bewirkt wird, dass mindestens eine der ODER-Logikschaltungen 1310 ein jeweiliges kombiniertes Abtastergebnis mit einem logischen 0-Wert ausgibt, was wiederum bewirkt, dass die UND-Logikschaltung 1312 das endgültige Abtastergebnis mit einem logischen 0-Wert ausgibt, um anzuzeigen, dass die i-te Kette kein übereinstimmendes Schlüsselwort speichert.
-
Außerdem sind die ODER- und UND-Logikschaltungen 1310, 1312 lediglich Beispiele, und jede der verschiedenen Arten von Schaltungen, einschließlich Hardwareschaltungen oder eine Kombination von Hardware- und Softwareschaltungen, kann verwendet werden, um die ODER- und UND-Logikoperationen durchzuführen. Außerdem kann jede von verschiedenen Arten von Logikschaltungen oder andere Arten von Schaltungen, die eingerichtet sind, um eine von verschiedenen Arten von Logikoperationen durchzuführen, zusätzlich oder alternativ zu ODER- und UND-Operationen verwendet werden, um vorläufige Abtastergebnisse effektiv zu kombinieren, um ein endgültiges Abtastergebnis zu bestimmen, wie logische Inversionsoperationen, NOR, NAND, XOR, XNOR oder dergleichen.
-
In einem vierten CAM-Lesemodus der Vielzahl von CAM-Lesemodi kann die Leseschaltung 700 eingerichtet sein, um eine Hybrid- oder Kombination des zweiten und dritten CAM-Lesemodus durchzuführen. Gemäß diesem Hybrid oder dieser Kombination führt die Leseschaltung 700 einen CAM-Lesevorgang gemäß dem dritten CAM-Lesemodus in Zyklen oder Schleifen durch. Innerhalb einer gegebenen Schleife oder eines gegebenen Zyklus führt die Leseschaltung 700 die Vielzahl von Sätzen von Abtastvorgängen für die Wortleitungsgruppen über die Vielzahl von Iterationen durch, wie beschrieben. Am Ende der gegebenen Schleife kann die Lesesteuerung 702 eine Anzahl von endgültigen Abtastergebnissen prüfen, um zu bestimmen, ob eine Anzahl von übereinstimmenden Schlüsselwörtern einen Schwellenwert überschritten hat. Wenn dies der Fall ist, kann die Lesesteuerung 702 den CAM-Lesevorgang beenden. Wenn dies nicht der Fall ist, kann die Lesesteuerung 702 in eine nächste Schleife oder einen nächsten Zyklus eintreten. In dieser nächsten Schleife kann die Lesesteuerung 702 den Pegel der niedrigen Spannung VL, die für die modifizierten Wortleitungsvorspannungseinstellungen verwendet wird, ähnlich dem zweiten CAM-Lesemodus erhöhen. Dementsprechend kann für den vierten CAM-Lesemodus die Leseschaltung 700 einen CAM-Lesevorgang über eine Vielzahl von Schleifen durchführen, wobei die Leseschaltung 700 für jede Schleife im dritten CAM-Lesemodus arbeitet und wobei für jede nächste Schleife die Lesesteuerung 702 den Pegel der niedrigen Spannung VL von dem Pegel in der vorherigen Schleife erhöht oder inkrementiert.
-
Zusätzlich kann in verschiedenen Ausführungsformen die Leseschaltung 700 eingerichtet sein, um in einem fünften CAM-Lesemodus für das dritte CAM-Speicherschema zu arbeiten. Im fünften CAM-Lesemodus ist die Leseschaltung 700 eingerichtet, um einen CAM-Lesevorgang über eine Vielzahl von Iterationen durchzuführen. Während jeder Iteration spannt die Lesesteuerung 702 die Wortleitungen gemäß einer Wortleitungsvorspannungseinstellung vor, die Bitmustern eines Zielschlüsselworts und eines invertierten Zielschlüsselworts entspricht, wie beispielsweise im ersten und zweiten CAM-Lesemodus, wie zuvor beschrieben. Für eine der Iterationen ist der niedrige Spannungspegel, mit dem die Lesesteuerung 702 den ersten Satz von Wortleitungen vorspannt, der Leseimpulspegel VrA, der dem Speicherzustand A (oder dem Programmierzustand für SLC-Speicherschemata) zugehörig ist. Für eine andere Iteration ist der niedrige Spannungspegel, mit dem die Lesesteuerung 702 den ersten Satz von Wortleitungen vorspannt, um einen ersten vorbestimmten Betrag höher als der oder über dem Leseimpulspegel VrA. Für eine dritte Iteration ist der niedrige Spannungspegel, mit dem die Lesesteuerung 702 den ersten Satz von Wortleitungen vorspannt, um einen zweiten vorbestimmten Betrag niedriger als der oder unter dem Leseimpulspegel VrA. In verschiedenen Ausführungsformen können die Größen des ersten und des zweiten vorbestimmten Betrags gleich oder voneinander verschieden sein.
-
Außerdem kann während jeder Iteration, wenn die Wortleitungen gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durchführen und als Reaktion Abtastergebnisse für jede Kette speichern. Dementsprechend speichert die Vielzahl von Abtastschaltungen 620 nach der Vielzahl von Iterationen eine Vielzahl von Abtastergebnissen für jede Kette. Wenn zum Beispiel, die Leseschaltung 700 drei Iterationen durchführt, speichert die Vielzahl von Abtastschaltungen drei Abtastergebnisse für jede Kette. Nach dem Durchführen der Vielzahl von Iterationen kann die Lesesteuerung 702 eine Vielzahl von ODER-Logikoperationen durchführen, wobei jede ODER-Logikoperation an den Abtastergebnissen durchgeführt wird, die sich auf eine jeweilige Kette beziehen. Die Lesesteuerung 702 kann die Ergebnisse der ODER-Logikoperationen als endgültige Abtastergebnisse für die Vielzahl von Ketten in den Kettenabschnitten 804 speichern. Für jede Kette kann, wenn die Kette (und die zugehörige Bitleitung) während mindestens einer der Iterationen leitet, die Lesesteuerung 702 das endgültigen Ergebnis als einen logischen 1-Wert speichern, um anzuzeigen, dass die Kette ein übereinstimmendes Schlüsselwort speichert. Alternativ kann, wenn die Kette (und die zugehörige Bitleitung) während keiner der Iterationen leitet, die Lesesteuerung 702 das endgültigen Ergebnis als einen logischen 0-Wert speichern, um anzuzeigen, dass der Kette kein übereinstimmendes Schlüsselwort speichert.
-
Für manche beispielhaften Ausführungsformen kann die Vielzahl von niedrigen Spannungen überlappenden Bereichen erwarteter oder tatsächlicher Schwellenspannungsverteilungskurven entsprechen. Obwohl 5A-5D die Schwellenspannungsverteilungskurven als nicht überlappend zeigen, kann in der tatsächlichen Implementierung das obere Ende einer Schwellenspannungsverteilungskurve mit dem unteren Ende einer anderen Schwellenspannungsverteilungskurve überlappen. Dementsprechend kann, wenn eine Wortleitung während eines Abtastvorgangs auf einem gegebenen Leseimpulspegel Vr vorgespannt ist, egal ob eine Bitleitung leitet oder nicht, eine Wahrscheinlichkeit anzeigen, dass ein Datenwert, den eine mit der Wortleitung gekoppelte Speicherzelle speichert, anstatt mit 100 % angezeigt wird. Wenn, zum Beispiel, in SLC-Speicherschemata eine Bitleitung leitet, wenn eine Wortleitung auf dem Leseimpulspegel VrA vorgespannt ist, kann die Leitung nur eine Wahrscheinlichkeit anzeigen, dass sich eine mit der Wortleitung gekoppelte Speicherzelle im gelöschten Zustand befindet, nicht eine absolute Sicherheit, dass sich die Speicherzelle im gelöschten Zustand befindet. Wenn die Wortleitung auf einen Wortleitungsspannungspegel vorgespannt ist, der niedriger als der Leseimpulspegel VrA ist, und die Bitleitung immer noch leitet, ist die Wahrscheinlichkeit umso höher, dass sich die Speicherzelle im gelöschten Zustand befindet, und die Wahrscheinlichkeit, dass sich die Speicherzelle im Programmierzustand befindet umso niedriger. Außerdem ist, wenn die Wortleitung auf einen Wortleitungsspannungspegel vorgespannt ist, der höher als der Leseimpulspegel VrA ist, und die Bitleitung leitet, die Wahrscheinlichkeit, dass sich die Speicherzelle im gelöschten Zustand befindet, umso niedriger und die Wahrscheinlichkeit, dass sich die Speicherzelle im Programmierzustand befindet, umso höher. Für solche Ausführungsformen kann ein Abtastergebnis, das erzeugt wird, wenn die Wortleitung auf dem Leseimpulspegel VrA vorgespannt ist, als ein Hartbitwert bezeichnet werden, der einen erfassten Datenwert identifiziert, den die Speicherzelle speichert, und ein Abtastergebnis, das erzeugt wird, wenn die Wortleitung auf einem Pegel höher oder niedriger als der Leseimpulspegel VrA vorgespannt ist, kann als ein Soft-Bit-Wert bezeichnet werden, der eine Wahrscheinlichkeit anzeigt, dass der erfasste Datenwert korrekt ist. In diesem Zusammenhang entspricht für den fünften CAM-Lesemodus die Vielzahl von niedrigen Spannungspegeln, mit denen die Lesesteuerung 702 den ersten Satz von Wortleitungen im fünften CAM-Lesemodus vorspannt, den Spannungspegeln, mit denen die Lesesteuerung 702 Wortleitungen vorspannt, um harte und weiche Bitwerte zu bestimmen.
-
Wie zuvor unter Bezugnahme auf 12 beschrieben, kann die ECC-Paritätsbit-Erzeugungsschaltung 1202 die q-Zahl von Paritätsbits für jeden Schlüssel K so erzeugen, dass ein Mindestabstand d für beliebige zwei verschiedene Schlüsselwörter, die in der Vielzahl von Ketten S gespeichert sind, 2*t+1 beträgt. Infolgedessen sind die Schlüsselwörter ausreichend voneinander verschieden, so dass, wenn die Lesesteuerung 702 Wortleitungsspannungen oder Kombinationen von Wortleitungsspannungen von dem niedrigen Spannungspegel VL zu dem hohen Spannungspegel VH gemäß den modifizierten Wortleitungsvorspannungseinstellungen ändert, während sie fortschreitet oder sich durch die Iterationen bewegt, diese Änderungen des Spannungspegels nicht bewirken, dass Ketten, die keine übereinstimmenden Schlüssel oder invertierten übereinstimmenden Schlüssel speichern, leiten. Wiederum speichern diejenigen Ketten-Unterabschnitte 804 für Ketten, die keine übereinstimmenden Schlüsselwörter mit bis zu einer t-Anzahl von Bitfehlern speichern, keine endgültigen Abtastergebnisse mit logischen 1-Werten, wodurch die Anzahl von Fehlalarmen minimiert wird.
-
Um Ketten zu erfassen, die übereinstimmende Schlüsselwörter speichern, wobei diese Ketten Schlüsselwörter oder invertierte Schlüsselwörter mit bis zu einer t-Anzahl von Bitfehlern speichern, erhöht sich außerdem die q-Anzahl von Paritätsbits, die für eine p-Anzahl von Informationsbits erzeugt werden, wenn t zunimmt. Aufgrund von Konstruktionsbeschränkungen (z. B. der Anzahl von Wortleitungen eines Blocks) oder Leistungsbeschränkungen (z. B. der Anzahl von Abtastvorgänge, die innerhalb einer CAM-Lesevorgang durchzuführen sind) kann es wünschenswert sein, die q-Anzahl von Paritätsbits, welche die ECC-Paritätsbit-Erzeugungsschaltung 1202 für jedes Schlüsselwort erzeugt, zu minimieren. Die minimale Anzahl der q-Paritätsbits, die erzeugt werden kann, ist für Konfigurationen, bei denen t 1 ist. Je größer jedoch die Schlüssellänge eines Schlüssels (bzw. je größer die Anzahl der Informationsbits) eines Schlüsselwortes ist, desto höher ist die Wahrscheinlichkeit, dass Speicherzellen, die das Schlüsselwort speichern, dieses mit mehr als einem Bitfehler speichern. Somit kann das Erzeugen einer q-Anzahl von Paritätsbits zum Erkennen von Ketten, die relativ lange übereinstimmende Schlüsselwörter mit nicht mehr als einem einzelnen Bitfehler speichern, unerwünscht zu Nicht-Erkennungen führen. Um t minimal zu halten (wie beispielsweise 1), trennt eine vierte Art von CAM-Speicherschema Schlüssel in Abschnitte und speichert Schlüsselwort- und invertierte Schlüsselwortabschnitte, wie nachstehend im Einzelnen beschrieben.
-
14 zeigt ein Blockdiagramm von zumindest einem Abschnitt eines Blocks, das eine beispielhafte Konfiguration einer Vielzahl von Ketten S veranschaulicht, die eine Vielzahl von Schlüsselwortabschnitten KW_p und entsprechende invertierte Schlüsselwortabschnitte KWb_p gemäß einer vierten Art von CAM-Speicherschema speichern. Ein Schlüsselwortabschnitt ist ein Abschnitt oder ein Teil eines Schlüsselworts. Unter der vierten Art von CAM-Speicherschema schließt ein j-tes Schlüsselwort KWj, das in einer j-ten Kette Sj gespeichert ist, eine Vielzahl von Schlüsselwortabschnitten Kwj_p ein. Ebenso ist ein invertierter Schlüsselwortabschnitt ein Abschnitt oder ein Teil eines invertierten Schlüsselworts. Dementsprechend schließt ein j-tes invertiertes Schlüsselwort KWjbar eine Vielzahl von invertierten Schlüsselwortabschnitten Kwjbar_p ein. Außerdem ist jedem k-ten Schlüsselwortabschnitt KV\/j_pk eines j-ten Schlüsselworts KWj ein k-ter invertierter Schlüsselwortabschnitt KV\/jbar_pk eines zugehörigen j-ten invertierten Schlüsselworts KWjbar zugehörig. Insbesondere weist der k-te invertierte Schlüsselwortabschnitt KV\/jbar_pk ein invertiertes Bitmuster auf, welches das Inverse des Bitmusters des zugehörigen k-ten Schlüsselwortabschnitts KV\/jbar_pk ist.
-
Ferner schließt jeder k-te Schlüsselwortabschnitt KWj_pk eines j-ten Schlüsselworts KWj einen Satz von Informationsbits KWj_pk_i und einen Satz von Paritätsbits Kwj_pk_p ein. Die Informationsbits KWj_pk_i sind ein Abschnitt oder ein Teil eines k-ten Schlüssels Kk, der in den Speicherchips 104 gespeichert ist. In ähnlicher Weise schließt jeder k-te invertierte Schlüsselwortabschnitt KV\/jbar_pk eines j-ten invertierten Schlüsselworts KWjbar einen Satz von Informationsbits KWjbar_pk_i und einen Satz von Paritätsbits Kwjbar_pk_pk ein. Im Wesentlichen wird ein Schlüsselwortabschnitt (oder ein invertierter Schlüsselwortabschnitt) auf die gleiche oder ähnliche Weise wie ein Schlüsselwort (oder ein invertiertes Schlüsselwort) erzeugt und/oder formatiert, indem jedes einen Satz von Informationsbits und einen Satz von Paritätsbits einschließt, der ein Bitmuster von logischen 1- und logischen 0-Werten aufweist, die für das Bitmuster des Satzes von Informationsbits spezifisch sind. Die Länge der Schlüsselwortabschnitte und der invertierten Schlüsselwortabschnitte ist jedoch zumindest deshalb kleiner, weil sie eine geringere Anzahl von Informationsbits im Vergleich zu Schlüsselwörtern und invertierten Schlüsselwörtern aufweisen.
-
15 zeigt ein Blockdiagramm einer beispielhaften Schlüsselwortabschnitt-Erzeugungsschaltung (oder Schaltungssystems) 1500, die eingerichtet ist, Schlüsselwortabschnitte KW_p und invertierte Schlüsselwortabschnitte KWbar_p zu erzeugen. In verschiedenen Ausführungsformen können die Schaltungskomponenten oder Module der Schaltung 1500 an beliebigen von verschiedenen Stellen und/oder auf beliebigen von verschiedenen Chips oder Substraten innerhalb des Speichersystems 100 angeordnet oder eingerichtet sein. Zum Beispiel können in verschiedenen Ausführungsformen alle Schaltungskomponenten der Schlüsselwortabschnitt-Erzeugungsschaltung 1500 als Teil der Steuerung 102 eingerichtet sein, alle Schaltungskomponenten können auf den Speicherchips 104 eingerichtet sein (wie zum Beispiel Teil des Programms 600 und/oder der Programmsteuerung 622 von 6), die Schaltungskomponenten können auf voneinander verschiedene Speicherchips 104 eingerichtet sein, alle Schaltungskomponenten können auf einem einzigen Speicherchip 104 eingerichtet sein, einige der Schaltungskomponenten können auf der Steuerung 102 eingerichtet sein, während andere Schaltungskomponenten auf einem oder mehreren der Speicherchips 104 eingerichtet sind, oder Kombinationen davon. Zusätzlich oder alternativ kann das Speichersystem 100 in verschiedenen Ausführungsformen mehrere Schlüsselwortabschnitt-Erzeugungsschaltungen einschließen. Zum Beispiel kann jeder Speicherchip 104 seine eigene Schlüsselworterzeugungsschaltung einschließen. Zusätzlich oder alternativ kann in verschiedenen Ausführungsformen die Schlüsselworterzeugungsschaltung 1500 als eine Steuerung bezeichnet werden, sei es allein oder in Kombination mit Komponenten der Programmierschaltung 600 betrachtet, und unabhängig davon, ob ihre Komponenten als Teil der Steuerung 102, als Teil der Speicherchips 104 oder Kombinationen davon eingerichtet sind. Es sind verschiedene Konfigurationen oder Kombinationen von Konfigurationen einer Schlüsselworterzeugungsschaltung möglich.
-
In der beispielhafte Konfiguration in 15 schließt die Schlüsselwortabschnitt-Erzeugungsschaltung 1500 eine Schlüsselwortabschnitt-Erzeugungsschaltung 1502, eine Fehlerkorrekturcode- (ECC) Paritätsbit-Erzeugungsschaltung 1504 und eine invertierte Schlüsselwortabschnitt-Erzeugungsschaltung 1506 ein. Als Komponenten oder Module der Steuerung 102 und/oder eines oder mehrerer der Speicherchips 104, kann jede der Schlüsselwortabschnitt-Erzeugungsschaltungen 1502, die ECC-Paritätsbit-Erzeugungsschaltung 1504 und die invertierte Schlüsselwortabschnitt-Erzeugungsschaltung 1506 jede der verschiedenen Hardware- und/oder Kombinationen von Hardware- und Firmware- (oder Hardware- und Software-) Konfigurationen aufweisen, welche die Steuerung 102 und/oder die Speicherchips 104 aufweisen können, um ihre jeweiligen Funktionen auszuführen. Für einige beispielhaften Konfigurationen können die Schlüsselwortabschnitt-Erzeugungsschaltung 1502, die Paritätsbit-Erzeugungsschaltung 1502 und die invertierte Schlüsselwortabschnitt-Erzeugungsschaltung 1506 getrennte diskrete Sätze von Schaltungen enthalten, wie beispielsweise separate diskrete Sätze von Logikschaltungen oder anderen Arten von Hardwareschaltungen. Für andere beispielhaften Konfigurationen können die Schlüsselwortabschnitt-Erzeugungsschaltung 1502, die ECC-Paritätsbit-Erzeugungsschaltung 1504 und die invertierte Schlüsselwortabschnitt-Erzeugungsschaltung 1506 die gleiche Hardwareschaltung, wie beispielsweise den gleichen Prozessor, einschließen, aber verschiedene Firmware, wie beispielsweise unterschiedliche Sätze von Computercodes oder Anweisungen, ausführen, um ihre jeweiligen Funktionen, Vorgänge oder Aktionen auszuführen. Für die Schlüsselwortabschnitt-Erzeugungsschaltung 1502, die ECC-Paritätsbit-Erzeugungsschaltung 1504 und die invertierte Schlüsselwortabschnittserzeugungsschaltung 1506 sind verschiedene Konfigurationen oder Kombinationen von Konfigurationen möglich.
-
Wie in 15 gezeigt, ist die Schlüsselwortabschnitt-Erzeugungsschaltung 1502 eingerichtet, um Schlüsselabschnitte K_p für Schlüssel K zu erzeugen. Ein Schlüsselabschnitt ist ein Abschnitt oder ein Teil eines Schlüssels, der Teil eines Schlüsseldatensatzpaars ist und der ein oder mehrere Attribute identifiziert, gemäß CAM-Speicherschemata. Die Schlüsselwortabschnitt-Erzeugungsschaltung 1502 kann eingerichtet sein, um einen gegebenen Schlüssel K zu empfangen, der in den Speicherchips 104 unter der vierten Art von CAM-Speicherschema gespeichert werden soll, und als Reaktion darauf, den gegebenen Schlüssel K in eine Vielzahl von Schlüsselabschnitten K_p teilt oder trennt, wie beispielsweise durch Trennen oder Teilen eines Bitmusters eines gegebenen Schlüssels in eine vorbestimmte Anzahl von Bitgruppen, wobei jede Bitgruppe ein Schlüsselabschnitt des gegebenen Schlüssels ist. Zur Veranschaulichung sei angenommen, dass ein gegebener Schlüssel 9 Bits aufweist, und die Schlüsselwortabschnitt-Erzeugungsschaltung 1502 ist eingerichtet, um Schlüsselabschnitte von 3 Bits zu erzeugen. Als Reaktion auf den gegebenen Schlüssel mit 9 Bit erzeugt die Schlüsselwortabschnitt-Erzeugungsschaltung 1502 drei Schlüsselabschnitte für den gegebenen Schlüssel mit jeweils 3 Bits.
-
Die ECC-Paritätsbit-Erzeugungsschaltung 1504 ist eingerichtet, um Paritätsbits für die Schlüsselabschnitte K_p zu erzeugen. Insbesondere ist die ECC-Paritätsbit-Erzeugungsschaltung 1504 eingerichtet, um einen spezifischen Satz von Paritätsbits für jeden Schlüsselabschnitt K_p zu erzeugen, den sie empfängt oder anderweitig identifiziert. Die ECC-Paritätsbit-Erzeugungsschaltung 1504 kann gleich oder ähnlich der ECC-Paritätsbit-Erzeugungsschaltung 1202 von 12 eingerichtet sein. Außerdem kann die ECC-Paritätsbit-Erzeugungsschaltung 1504 eine q-Anzahl von Paritätsbits für jeden Schlüsselabschnitt erzeugen, sodass für beliebige zwei verschiedene Schlüsselwortabschnitte ein zugehöriger Abstand d für die zwei verschiedenen Schlüsselwortabschnitte mindestens 2*t+1 beträgt, wobei t die Anzahl von Bitfehlern ist, mit denen ein Satz von Speicherzellen einer Kette, die einen Schlüsselwortabschnitt oder einen invertierten Schlüsselwortabschnitt speichert, aufweisen kann, und die Kette weiterhin als ein übereinstimmendes Schlüsselwort speichernd erkannt werden kann. Für zumindest einige beispielhaften Konfigurationen kann die ECC-Paritätsbit-Erzeugungsschaltung 1202 für einen gegebenen Schlüsselabschnitt K_p eingerichtet sein, um eine Anzahl von Paritätsbits basierend auf log2(n) zu erzeugen (z. B. durch Aufrunden oder Übernehmen der Obergrenze von log2 (n)), wobei n die Anzahl von Informationsbits des Schlüssels K ist, um einen Abstand d von mindestens 2*t+1 zu erzeugen, obwohl andere Anzahlen von Paritätsbits erzeugt werden können, um einen Abstand d von mindestens 2*t+1 für verschiedene Konfigurationen zu erreichen. Zusätzlich zum Erzeugen der Paritätsbits kann die ECC-Paritätsbit-Erzeugungsschaltung 1504 eingerichtet sein, um die Schlüsselwortabschnitte KW_p zu bilden, wie beispielsweise durch Kombinieren der Schlüsselabschnitte K_p mit jeweiligen Sätzen von Paritätsbits, die sie erzeugt.
-
Die invertierte Schlüsselwortabschnitt-Erzeugungsschaltung 1506 kann eingerichtet sein, um invertierte Schlüsselwortabschnitte KWbar_p basierend auf den Schlüsselwortabschnitten KW_p zu erzeugen, die von der ECC-Paritätsbit-Erzeugungsschaltung 1504 gebildet werden. Die invertierte Schlüsselwortabschnitt-Erzeugungsschaltung 1506 erzeugt die invertierten Schlüsselwortabschnitte KWbar_p derart, dass ihre Bitmuster zu den Bitmustern zugehöriger Schlüsselwortabschnitte KW_p invertiert sind.
-
Andere Konfigurationen der Schlüsselwortabschnitt-Erzeugungsschaltung 1500 können möglich sein. Zum Beispiel schließt in anderen Konfigurationen die Schlüsselwortabschnitt-Erzeugungsschaltung 1500 eine invertierte Schlüsselwortabschnitt-Erzeugungsschaltung statt einer invertierten Schlüsselwort-Erzeugungsschaltung ein, die invertierte Schlüsselabschnitte Kbar_p als Reaktion auf den Empfang von Schlüsselabschnitten K_p erzeugt. Die invertierte Schlüsselwortabschnitt-Erzeugungsschaltung stellt die Schlüsselabschnitte K_p und die invertierten Schlüsselabschnitte Kbar_p an eine Paritätsbit-Erzeugungsschaltung bereit, die Paritätsbits für jeden der Schlüsselabschnitte K_p und der invertierten Schlüsselabschnitte Kbar_p erzeugt. In beiden Konfigurationen erzeugt die Schlüsselwortabschnitt-Erzeugungsschaltung 1500 Schlüsselwortabschnitte KW_p und zugehörige invertierte Schlüsselwortabschnitte KWbar_p für zugehörige Schlüssel K.
-
Beim Erzeugen von Schlüsselwortabschnitten KW_p und zugehörigen invertierten Schlüsselwortabschnitten KWbar_p kann die Schlüsselwortabschnitt-Erzeugungsschaltung 1500 die Schlüsselwortabschnitte KW_p und die invertierten Schlüsselwortabschnitte KWbar_p an die Programmierschaltung 600 ausgeben oder bereitstellen (6). Als Reaktion darauf kann die Programmierschaltung 600 die Schlüsselwortabschnitte KW_p und die invertierten Schlüsselwortabschnitte KWblank_p gemäß der vierten Art von CAM-Speicherschema in eine Vielzahl von Ketten S programmieren.
-
Beim Programmieren der Schlüsselwortabschnitte KW_p und der invertierten Schlüsselwortabschnitte KWb_p in die Speicherzellenstrukturen 142 gemäß dem vierten CAM-Speicherschema kann die Programmsteuerung 622 beliebige von verschiedenen Codier-, Ordnungs-, oder Formatierungsschemata verwenden, die angeben oder bestimmen, welche Bits jedes Schlüsselwortabschnitts KWi_p und des zugehörigen invertierten Schlüsselwortabschnitts KWibar_p in welchen Speicherzellen gespeichert sind, wie zuvor für das erste CAM-Speicherschema unter Bezugnahme auf 8 und 9 dargestellt. Dementsprechend kann die Programmsteuerung 622 bei Empfang von Schlüsselwortabschnitten eines i-ten Schlüsselworts KWi und invertierten Schlüsselwortabschnitten eines i-ten invertierten Schlüsselworts KWibar ihre jeweiligen Bitmuster identifizieren, und basierend auf den Bitwerten dieser Bitmuster und dem Schema, das sie verwendet, bestimmen, wie die Schlüsselwortabschnitte und invertierten Schlüsselwortabschnitte des i-ten Schlüsselworts KWi und des i-ten invertierten Schlüsselworts KWibar in die Kette Si programmiert (oder codiert) werden sollen, einschließlich wie die mit der Kette Si gekoppelten Wortleitungen vorgespannt werden sollen, und auf welchen Schwellenspannungspegeln jede der Speicherzellen der Kette Si liegen sollte, um das i-te Schlüsselwort KWi und das i-te invertierte Schlüsselwort KWibar in die Kette Si zu programmieren. Außerdem kann in manchen beispielhaften Konfigurationen die Programmierschaltung 600 die Schlüsselwortabschnitte eines i-ten Schlüsselworts KWi und die invertierten Schlüsselwortabschnitte eines i-ten invertierten Schlüsselworts KWibar zusammenhängend innerhalb der Kette Si programmieren, sodass Bits von den Bits von den verschiedenen Abschnitten nicht zwischen benachbarten Speicherzellen der Kette Si verschachtelt sind. In anderen beispielhaften Konfigurationen kann die Programmierschaltung 600 die verschiedenen Abschnitte des i-ten Schlüsselworts KWi und des i-ten invertierten Schlüsselworts KWibar programmieren, indem sie entlang der benachbarten Speicherzellen einer Kette Si verschachtelt werden. Zur Programmierung der Abschnitte der Schlüsselwörter KW und der invertierten Schlüsselwörter KWbar in die Ketten sind je nach verwendetem Schema verschiedene Wege möglich. Da die Programmierschaltung 600 Abschnitte von Schlüsselwörtern KW und invertierten Schlüsselwörtern KWbar zur Speicherung empfängt, programmiert (oder codiert) sie die mit Spalten gekoppelten Ketten durch Identifizieren ihrer Bitmuster und Durchführen von Programmiervorgängen gemäß den Bitwerten des Bitmusters und des von ihr verwendeten Schemas.
-
Bezugnehmend auf 14 speichert für einige Ausführungsformen der vierten Art von CAM-Speicherschema jede i-te Kette Si ein i-tes Schlüsselwort KWi und ein zugehöriges i-tes invertiertes Schlüsselwort KWibar. Jedes i-te Schlüsselwort KWi schließt eine Vielzahl von Schlüsselwortabschnitten Kwi_p ein, und das zugehörige i-te invertierte Schlüsselwort KWibar schließt eine Vielzahl von invertierten Schlüsselwortabschnitten Kwibar_p ein. Für andere Ausführungsformen werden die verschiedenen Schlüsselwort- und invertierten Schlüsselwortabschnitte KW_p, KWbar_p in mehreren Ketten gespeichert, sodass unter den verschiedenen Schlüsselwort- und invertierten Schlüsselwortabschnitten KW_p, KWbar_p mindestens zwei der Abschnitte in verschiedenen Ketten gespeichert werden. In bestimmten beispielhaften Konfigurationen, wie denen für 3D-NAND, sind die verschiedenen Ketten, in denen die Schlüsselwort- und invertierten Schlüsselwortabschnitte KW_p, KWbar_p Teil einer gleichen Sammlung oder eines gleichen Satzes von Ketten sind, mit einer gleichen oder gemeinsamen Bitleitung gekoppelt.
-
Außerdem schließt in der beispielhaften Konfiguration in 14 jedes i-te Schlüsselwort KWi zwei Schlüsselwortabschnitte KWi_p1 und KWi_p2 ein, und jedes zugehörige i-te invertierte Schlüsselwort KWib schließt zwei zugehörige invertierte Schlüsselwortabschnitte KWibar_p1 und KWibar_p2 ein, obwohl Anzahlen von anderen Abschnitten ungleich zwei (wie beispielsweise drei oder mehr) für andere Konfigurationen möglich sein können.
-
Außerdem werden ähnlich wie bei der dritten Art von CAM-Speicherschema unter der vierten Art von CAM-Speicherschema die Wortleitungen WL eines Blocks, der die Schlüsselwortabschnitte KW_p und invertierte Schlüsselwortabschnitte KWbar_p speichert, in eine Vielzahl von Wortleitungsgruppen WLG aufgeteilt oder organisiert. Für die vierte Art von CAM-Speicherschema schließt jede Wortleitungsgruppe Wortleitungen ein, die mit Speicherzellen gekoppelt sind, die einen bestimmten Schlüsselwortabschnitt oder einen bestimmten invertierten Schlüsselwortabschnitt speichern. Dementsprechend ist die Anzahl der Wortleitungsgruppen WLG gleich der Summe aus der Anzahl der Schlüsselwortabschnitte KW_p und der Anzahl der invertierten Schlüsselwortabschnitte KWbar_p, die Teil eines gegebenen Schlüsselworts KW und eines zugehörigen invertierten Schlüsselworts KWbar sind. Zum Beispiel schließen in Bezug auf die Konfiguration in 14 jedes i-te Schlüsselwort KWi und zugehörige i-te invertierte Schlüsselwort KWibar zwei Schlüsselwortabschnitte KWi_p1, KWi_p2 und zwei invertierte Schlüsselwortabschnitte KWbar_p1, KWbar_p2 ein. Dementsprechend sind die Wortleitungen, die mit Speicherzellen gekoppelt sind, welche die Schlüsselwörter KW und invertierten Schlüsselwörter KWbar speichern, in vier Wortleitungsgruppen unterteilt oder organisiert, einschließlich: einer ersten Wortleitungsgruppe WLG1 von Wortleitungen, die mit Speicherzellen gekoppelt sind, die erste Schlüsselwortabschnitte KW_p1 der Schlüsselwörter KW speichern, eine zweite Wortleitungsgruppe WLG2 von Wortleitungen, die mit Speicherzellen gekoppelt ist, die zweite Schlüsselwortabschnitte KW_p2 der Schlüsselwörter KW speichern, eine dritte Wortleitungsgruppe WLG3 von Wortleitungen, die mit Speicherzellen gekoppelt ist, die erste invertierte Schlüsselwortabschnitte KWbar_p1 der invertierten Schlüsselwörter speichern, und eine vierte Wortleitungsgruppe WLG4 von Wortleitungen, die mit Speicherzellen gekoppelt ist, die zweite invertierte Schlüsselwortabschnitte KWbar_p2 der invertierten Schlüsselwörter KWb speichern. Andere Anzahlen von Wortleitungsgruppen sind für andere beispielhaften Konfigurationen möglich, die andere Anzahlen von Schlüsselwort- und invertierten Schlüsselwortabschnitten speichern.
-
Außerdem zeigt 14 ähnlich der dritten Art von CAM-Speicherschema die vier Wortleitungsgruppen WLG1 - WLG4 als nicht überlappend, indem sich die Wortleitungen der ersten Wortleitungsgruppe WLG1 alle von den Wortleitungen der zweiten, dritten und vierten Wortleitungsgruppen WLG2 - WLG4 unterscheiden und so weiter. In anderen beispielhaften Konfigurationen sind mindestens zwei der Wortleitungsgruppen, indem mindestens eine der Wortleitungen einer der Wortleitungsgruppen dieselbe ist wie mindestens eine der Wortleitungen einer anderen der Wortleitungsgruppen. Überlappende Wortleitungsgruppensituationen können für Konfigurationen auftreten, die unterschiedliche Schlüsselwortabschnitte und/oder invertierte Schlüsselwortabschnitte in unterschiedlichen Ketten speichern, wie beispielsweise unterschiedliche Ketten, die mit derselben Bitleitung in 3D-NAND gekoppelt sind.
-
Um einen CAM-Lesevorgang gemäß der vierten Art von CAM-Speicherschema durchzuführen, ist die Lesesteuerung 702 eingerichtet, um Bitmuster von Zielschlüsselwortabschnitten, die einem Zielschlüssel entsprechen, und invertierte Bitmuster von zugehörigen invertierten Zielschlüsselwortabschnitten zu identifizieren. Wie viele Bitmuster von Abschnitten des Zielschlüsselworts und des invertierten Zielschlüsselworts, welche die Lesesteuerung 702 identifiziert, entsprechen der Anzahl von Abschnitten von Schlüsselwörtern und invertierten Schlüsselwörtern, die Ketten speichern. Zum Beispiel identifiziert die Lesesteuerung 702 in Bezug auf die beispielhafte Konfiguration in 14 ein Bitmuster für einen ersten Zielschlüsselwortabschnitt, ein Bitmuster für einen zweiten Zielschlüsselwortabschnitt, ein Bitmuster für einen ersten invertierten Zielschlüsselwortabschnitt und ein Bitmuster für den zweiten invertierten Zielschlüsselwortabschnitt. In einigen beispielhaften Konfigurationen erzeugt die Schlüsselwortabschnitt-Erzeugungsschaltung 1500 die Zielschlüsselwortabschnitte und die zugehörigen invertierten Zielschlüsselwortabschnitte als Reaktion auf den Empfang des Zielschlüssels, und die Lesesteuerung 702 bestimmt die Bitmuster der Zielschlüsselwortabschnitte und der invertierten Zielschlüsselwortabschnitte als Reaktion auf die Erzeugung der Zielschlüsselwortabschnitte und der invertierten Zielschl üsselwortabsch nitte.
-
Zusätzlich kann die Leseschaltung 700 in verschiedenen Ausführungsformen eingerichtet sein, um zu erfassen, welche der Vielzahl von Ketten S ein übereinstimmendes Schlüsselwort KW (und somit einen übereinstimmenden Schlüssel) speichern, und um in mindestens einem einer Vielzahl von CAM-Lesemodi zu arbeiten, einschließlich eines ersten CAM-Lesemodus, eines zweiten CAM-Lesemodus, eines dritten CAM-Lesemodus, eines vierten CAM-Lesemodus und/oder eines fünften CAM-Lesemodus, ähnlich den ersten bis fünften CAM-Lesemodi, die für die dritte Art von CAM-Speicherschema beschrieben sind.
-
Um einen CAM-Lesevorgang in dem ersten CAM-Lesemodus für die vierte Art von CAM-Speicherschema durchzuführen, ist die Lesesteuerung 702 eingerichtet, um die Wortleitungen gemäß einer Wortleitungsvorspannungseinstellung vorzuspannen, die den Bitmustern der Zielschlüsselabschnitte und der invertierten Zielschlüsselabschnitte entspricht. Dabei ist in Bezug auf die Konfiguration in 14 die Lesesteuerung 702 eingerichtet, um die erste Wortleitungsgruppe WLG1 gemäß hohen und niedrigen Spannungspegeln VH, VL, die dem Bitmuster des ersten Zielschlüsselwortabschnitts entsprechen, vorzuspannen, die zweite Wortleitungsgruppe WLG2 gemäß hohen und niedrigen Spannungspegeln VH, VL, die dem Bitmuster des zweiten Zielschlüsselwortabschnitts entsprechen, vorzuspannen, die dritte Wortleitungsgruppe WLG3 auf hohe und niedrige Spannungspegel VH, VL, die dem Bitmuster des ersten invertierten Zielschlüsselwortabschnitts entsprechen, vorzuspannen, und die vierte Wortleitungsgruppe WLG4 auf hohe und niedrige Spannungspegel VH, VL, die dem Bitmuster des zweiten invertierten Zielschlüsselwortabschnitts entsprechen, vorzuspannen.
-
Wobei die Wortleitungsgruppen WLG gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, die dem Zielschlüsselwort und invertierten Zielschlüsselwortabschnitten entspricht, die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durchführen kann, um zu bestimmen, welche der Bitleitungen leiten, und Abtastergebnissen speichert, wie beispielsweise in der Form von Bits, die jeweils entweder einen logischen 1-Wert oder einen logischen 0-Wert aufweisen, basierend auf der Bestimmung in ihren jeweiligen Kettenabschnitten 804. Dementsprechend ist beim Betrieb im ersten CAM-Lesemodus die Leseschaltung 700, einschließlich der Vielzahl von Abtastschaltungen 620, eingerichtet, um einen einzelnen Abtastvorgang durchzuführen, um zu identifizieren, welche der Vielzahl von Ketten S übereinstimmende Schlüsselwörter und wiederum übereinstimmende Schlüssel speichern.
-
Die Leseschaltung 700 ist auch eingerichtet, um in ähnlicher Weise zu arbeiten, wenn sie in dem zweiten CAM-Lesemodus für die vierte Art von CAM-Speicherschema arbeitet, wie es der Fall ist, wenn sie in dem zweiten CAM-Lesemodus für die dritte Art von CAM-Speicherschema arbeitet. Das heißt, wenn im zweiten CAM-Lesemodus gearbeitet wird, ist die Lesesteuerung 702 eingerichtet, um die Wortleitungsgruppen WLG gemäß einer Wortleitungsvorspannungseinstellung vorzuspannen, die den Bitmustern von Zielschlüsselwortabschnitten und invertierten Zielschlüsselwortabschnitten entspricht, jedoch mit einem oder mehreren erhöhten niedrigen Spannungspegeln. Die Lesesteuerung 702 kann einen CAM-Lesevorgang im zweiten CAM-Lesemodus für das vierte CAM-Speicherschema in einer einzigen Iteration oder über eine Vielzahl von Iterationen durchführen. Wenn ein CAM-Lesevorgang in dem zweiten CAM-Lesemodus über eine Vielzahl von Iterationen durchgeführt wird, erhöht die Lesesteuerung 702 den niedrigen Spannungspegel für jede nächste Iteration, wie zuvor beschrieben.
-
Außerdem ist die Lesesteuerung 702 eingerichtet, um in ähnlicher Weise zu arbeiten, wenn sie in dem dritten CAM-Lesemodus für die vierte Art von CAM-Speicherschema arbeitet, wie es der Fall ist, wenn sie in dem dritten CAM-Lesemodus für die dritte Art von CAM-Speicherschema arbeitet. Das heißt, im dritten CAM-Lesemodus kann die Leseschaltung 700 einen CAM-Lesevorgang durchführen, indem Sätze von Abtastvorgänge durchgeführt werden, wobei jeder Satz für einen bestimmten Abschnitt einer Sammlung von Speicherzellen, der einen Schlüsselwortabschnitt KW_p oder einen invertierten Schlüsselwortabschnitt KWbar_p speichert, und/oder für eine bestimmte Wortleitungsgruppe, die mit dem bestimmten Abschnitt von Speicherzellen gekoppelt ist, durchgeführt wird. Wie bei der dritten Art von CAM-Speicherschema spannt die Lesesteuerung 702 während eines Satzes von Abtastvorgängen für einen bestimmten Abschnitt und/oder eine bestimmte Wortleitungsgruppe die Wortleitungsgruppe gemäß einer Vielzahl von zugehörigen Wortleitungsvorspannungseinstellungen vor. Die Abtastschaltungen 620 bestimmen Abtastergebnisse für die Sätze von Abtastvorgängen, und die Lesesteuerung 702 bestimmt basierend auf diesen Abtastergebnissen, ob das Schlüsselwort mit einem Zielschlüsselwort übereinstimmt.
-
In bestimmten Konfigurationen führt die Leseschaltung 700 einen CAM-Lesevorgang im dritten CAM-Lesemodus für das vierte CAM-Speicherschema über eine Vielzahl von Iterationen durch. Während jeder Iteration erhöht die Lesesteuerung 702 eine andere, oder eine andere Kombination der Vielzahl von Wortleitungsspannungen, die an die Wortleitungen angelegt werden. In bestimmten beispielhaften Konfigurationen ändert die Lesesteuerung 702 während jeder Iteration eine andere Wortleitungsspannung oder eine andere Kombination der Vielzahl von Wortleitungsspannungen auf dem niedrigen Spannungspegel VL auf den hohen Spannungspegel VH, und die Vielzahl von Abtastschaltungen 620 führt einen Abtastvorgang durch, um eine Vielzahl von Abtastergebnissen als Reaktion auf die Änderungen der Wortleitungsspannung zu bestimmen.
-
Ferner spannt die Lesesteuerung 702 im dritten CAM-Lesemodus, der für die vierte Art von CAM-Speicherschema durchgeführt wird, für jeden Satz von Abtastvorgängen für jede der Wortleitungsgruppen eine gegebene Wortleitungsgruppe mit einer Vielzahl von Wortleitungsspannungen, gemäß einer Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen während der Vielzahl von Iterationen, vor. Jede modifizierte Wortleitungsvorspannungseinstellung bildet eine Wortleitung oder eine Kombination von Wortleitungen auf den hohen Spannungspegel VH ab, der/die auf den niedrigen Spannungspegel in einer Anfangs- oder Standardvorspannungseinstellung abgebildet wird/werden, die den Bitmustern der Zielschlüsselwortabschnitte und/oder der invertierten Zielschlüsselwortabschnitte entspricht. Außerdem ist die Anzahl von Wortleitungen, die eine gegebene modifizierte Wortleitungsvorspannungseinstellung auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL abbildet, gleich einer t-Anzahl von Bitfehlern, mit denen eine Kette, die einen Schlüsselwortabschnitt oder einen invertierten Schlüsselwortabschnitt speichert, ein übereinstimmendes Schlüsselwort aufweisen und immer noch als ein übereinstimmendes Schlüsselwort speichernd erkannt werden kann, ohne dass die Erkennung ein falscher Alarm ist.
-
Außerdem entspricht oder ist jede modifizierte Wortleitungsvorspannungseinstellung spezifisch für eine der Wortleitungsgruppen. In diesem Zusammenhang werden die Spannungspegel, die durch eine modifizierte Wortleitungsvorspannungseinstellung angezeigt werden und die auf die Wortleitungen einer bestimmten Wortleitungsgruppe abgebildet werden, relativ zu den Spannungspegeln modifiziert, die durch die Zielwortleitungs-Vorspannungseinstellung oder die invertierte Wortleitungsvorspannungseinstellung angezeigt werden, die auch auf die Wortleitungen der bestimmten Wortleitungsgruppe abgebildet werden. Dementsprechend weisen in dem in 14 gezeigten vierten CAM-Speicherschema modifizierte Wortleitungsvorspannungseinstellungen für die erste Wortleitungsgruppe WLG1 Spannungspegel auf, die relativ zu den in der Zielwortleitungs-Vorspannungseinstellung angezeigten Spannungspegeln modifiziert sind, die auch auf die Wortleitungen der ersten Wortleitungsgruppe WLG1 abgebildet werden; modifizierte Wortleitungsvorspannungseinstellungen für die zweite Wortleitungsgruppe WLG2 weisen Spannungspegel auf, die relativ zu den in der Zielwortleitungs-Vorspannungseinstellung angezeigten Spannungspegeln modifiziert sind, die auch auf die Wortleitungen der zweiten Wortleitungsgruppe WLG2 abgebildet werden; modifizierte Wortleitungsvorspannungseinstellungen für die dritte Wortleitungsgruppe WLG3 weisen Spannungspegel auf, die relativ zu den in der invertierten Zielwortleitungs-Vorspannungseinstellung angezeigten Spannungspegeln modifiziert sind, die auch auf die Wortleitungen der dritten Wortleitungsgruppe WLG3 abgebildet werden; und modifizierte Wortleitungsvorspannungseinstellungen für die vierte Wortleitungsgruppe WLG4 weisen Spannungspegel auf, die relativ zu den in der Zielwortleitungs-Vorspannungseinstellung angezeigten Spannungspegeln modifiziert sind, die auch auf die Wortleitungen der vierten Wortleitungsgruppe WLG4 abgebildet werden.
-
Dementsprechend entspricht für einen gegebenen CAM-Lesevorgang jede Wortleitungsgruppe WLG einer zugehörigen Anzahl modifizierter Wortleitungsvorspannungseinstellungen. Diese Anzahl hängt ab von einer zugehörigen S-Anzahl von Wortleitungen, die mit Speicherzellen gekoppelt sind, die Schlüsselwort- oder invertierte Schlüsselwortabschnitte speichern, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind, und der t-Anzahl von Wortleitungen, die eine gegebene modifizierte Wortleitungsvorspannungseinstellung auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL gemäß der anfänglichen Vorspannungseinstellung abbildet. Insbesondere
Die Gesamtzahl modifizierter Wortleitungsvorspannungseinstellungen, welche die Lesesteuerung
702 verwendet, um einen CAM-Lesevorgang in dem dritten CAM-Lesemodus für das vierte CAM-Speicherschema durchzuführen, ist die Summe der x-Anzahl modifizierter Wortleitungsvorspannungseinstellungen, die den verschiedenen Wortleitungsgruppen WLG entsprechen.
-
Um dies in Bezug auf die beispielhafte Konfiguration in
14 zu veranschaulichen, entsprechen eine oder mehrere modifizierte Wortleitungsvorspannungseinstellungen der ersten Wortleitungsgruppe WLG1, entsprechen eine oder mehrere modifizierte Wortleitungsvorspannungseinstellungen der zweiten Wortleitungsgruppe WLG2, entsprechen eine oder mehrere modifizierte Wortleitungsvorspannungseinstellungen der dritten Wortleitungsgruppe WLG3 und entsprechen eine oder mehrere modifizierte Wortleitungsvorspannungseinstellungen der vierten Wortleitungsgruppe WLG4. Eine x1-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen entspricht der ersten Wortleitungsgruppe WLG1 und hängt insbesondere von einer s1-Anzahl von Wortleitungen der ersten Wortleitungsgruppe WLG1 ab, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind
eine x2-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen entspricht der zweiten Wortleitungsgruppe WLG2 und hängt insbesondere von einer s2-Anzahl von Wortleitungen der zweiten Wortleitungsgruppe WLG2 ab, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind
eine x3-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen entspricht der dritten Wortleitungsgruppe WLG3 und hängt insbesondere von einer s3-Anzahl von Wortleitungen der dritten Wortleitungsgruppe WLG3 ab, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind
und eine x4-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen entspricht der vierten Wortleitungsgruppe WLG3 und hängt insbesondere von einer s4-Anzahl von Wortleitungen der vierten Wortleitungsgruppe WLG4 ab, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind
Dementsprechend ist die Gesamtzahl der modifizierten Wortleitungsvorspannungseinstellungen, welche die Lesesteuerung
702 verwendet, um einen CAM-Lesevorgang in dem dritten CAM-Lesemodus gemäß der vierten Art von CAM-Speicherschema durchzuführen, gleich
-
Die Lesesteuerung 702 kann einen CAM-Lesevorgang im dritten CAM-Lesemodus für die vierte Art von CAM-Speicherschema ähnlich wie für die dritte Art von CAM-Speicherschema durchführen. Wenn ein CAM-Lesevorgang in dem dritten CAM-Lesemodus über eine Vielzahl von Iterationen durchgeführt wird, spannt die Lesesteuerung 702 die Vielzahl von Wortleitungen gemäß einer anderen modifizierten Wortleitungsvorspannungseinstellung während jeder Iteration vor. Dementsprechend spannt die Lesesteuerung 702 während jeder Iteration die Wortleitungen gemäß einer modifizierten Wortleitungsvorspannungseinstellung vor, die sie zuvor nicht verwendet hat. Nachdem die Lesesteuerung 702 die Wortleitungen gemäß jeder der modifizierten Vorspannungseinstellungen vorspannt, kann der Lesesteuerung 702 bestimmen, keine weiteren Iterationen durchzuführen. Außerdem kann die Vielzahl von Abtastschaltungen 620 während jeder Iteration mit den Wortleitungen, die auf den hohen und niedrigen Spannungspegeln VH, VL gemäß einer der modifizierten Wortleitungsvorspannungseinstellungen vorgespannt sind, einen Abtastvorgang durchführen, um zu bestimmen, welche der Bitleitungen leitet. Dementsprechend ist im Verlauf eines CAM-Lesevorgangs die Anzahl von Iterationen und wiederum die Anzahl von Abtastvorgängen, welche die Vielzahl von Abtastschaltungen 620 durchführt, gleich einer Gesamtzahl von modifizierten Wortleitungsvorspannungseinstellungen.
-
16 zeigt ein Blockdiagramm eines beispielhaften i-ten Ketten- (Si) Abschnitts 1602, der eine beispielhafte Konfiguration für einen i-ten Kettenabschnitt 804(i) darstellen kann, der verwendet wird, um CAM-Lesevorgänge in dem dritten CAM-Lesemodus für das vierte CAM-Speicherschema durchzuführen. Obwohl in 16 nicht gezeigt, ist der i-te Ketten- (Si) Abschnitt 1602 mit einer zugehörigen i-ten Abtastschaltung 620(i) und einer zugehörigen i-ten Kette Si gekoppelt, wobei die i-te Kette Si ein i-tes Schlüsselwort Kwi speichert, das einen ersten und einen zweiten Schlüsselwortabschnitt KWi_p1, KWi_p2 einschließt, und ein zugehöriges i-tes invertiertes Schlüsselwort Kwibar speichert, das einen zugehörigen ersten und zweiten invertierten Schlüsselwortabschnitt KWibar_p1, KWibar_p2 einschließt. In der Implementierung kann jede der m-Anzahl von Kettenabschnitten 804(1) bis 804(m) die Konfiguration des i-ten Kettenabschnitts 1602 aufweisen, der in 16 gezeigt ist.
-
Die beispielhafte Konfiguration in 16 für das vierte CAM-Speicherschema ist ähnlich derjenigen, die in 13 für die dritte Art von CAM-Speicherschema gezeigt ist, außer dass es mehr Wortleitungsgruppen-Unterabschnitte und ODER-Logikschaltungen (und ODER-Logikoperationen) gibt, die der erhöhten Anzahl von Wortleitungsgruppen entsprechen, die wiederum den Schlüsselwort- und invertierten Schlüsselwortabschnitten entsprechen, anstatt Schlüsselwörtern und invertierten Schlüsselwörtern. Dementsprechend schließt, wie in 16 gezeigt, der i-te Kettenabschnitt 1602 eine Vielzahl von vorläufigen Ergebnis- (PR) Unterabschnitten 1604 ein, die in eine Vielzahl von Wortleitungsgruppen- (WLG) Unterabschnitten 1606 organisiert oder angeordnet sind. Jeder PR-Unterabschnitt 1604 ist eingerichtet, um ein Abtastergebnis eines Abtastvorgangs zu speichern, wie beispielsweise in der Form eines einzelnen Bits mit einem logischen 1-Wert oder einem logischen 0-Wert. Außerdem ist jeder der PR-Unterabschnitte 1604 in einem von vier Wortleitungsgruppen-Unterabschnitten 1606(1) bis 1606(4) angeordnet, die den vier Wortleitungsgruppen WLG1 bis WLG4 entsprechen, in denen die Wortleitungen in der beispielhafte Konfiguration in 14 organisiert sind. Für andere Konfigurationen können die PR-Unterabschnitte 1604 in anderen Anzahlen von Wortleitungsgruppen-Unterabschnitten 1606 angeordnet sein, abhängig von der Anzahl von Wortleitungsgruppen und letztlich der Anzahl von Schlüsselwort- und invertierten Schlüsselwortabschnitten.
-
Ferner kann, wie bei der Konfiguration in 13, die Anzahl von PR-Unterabschnitten 1604 einer gegebenen i-ten Wortleitungsgruppe von Unterabschnitten 1606(i), die einer i-ten gegebenen Wortleitungsgruppe WLG(i) entsprechen, gleich der Anzahl von modifizierten Wortleitungsvorspannungseinstellungen sein, die der gegebenen Wortleitungsgruppe WLG(i) entsprechen. Wie in 16 gezeigt, schließt die erste Wortleitungsgruppe von Unterabschnitten 1606(1) eine x1-Anzahl von PR-Unterabschnitten 1604_WLG1(1) bis 1604_WLG1(x1) ein, die gleich einer x1-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen ist, die der ersten Wortleitungsgruppe WLG1 entspricht; die zweite Wortleitungsgruppe von Unterabschnitten 1606(2) schließt eine x2-Anzahl von PR-Unterabschnitten 1604_WLG2(1) bis 1604_WLG2(x2) ein, die gleich einer x2-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen ist, die der zweiten Wortleitungsgruppe WLG2 entspricht; die dritte Wortleitungsgruppe von Unterabschnitten 1606(3) schließt eine x3-Anzahl von PR-Unterabschnitten 1604_WLG1(1) bis 1604_WLG 1 (x3) ein, die gleich einer x3-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen ist, die der dritten Wortleitungsgruppe WLG3 entspricht; und die vierte Wortleitungsgruppe von Unterabschnitten 1606(4) schließt eine x4-Anzahl von PR-Unterabschnitten 1604_WLG2(1) bis 1604_WLG2(x4) ein, die gleich einer x4-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen ist, die der vierten Wortleitungsgruppe WLG4 entspricht. Dementsprechend ist jeder PR-Unterabschnitt 1604 einer jeweiligen oder einer anderen der Vielzahl von modifizierten Wortleitungsvorspannungseinstellungen zugehörig.
-
Zusätzlich führt, um einen CAM-Lesevorgang in dem dritten CAM-Lesemodus für die vierte Art von CAM-Speicherschema über eine Vielzahl von Iterationen durchzuführen, während jeder Iteration die Vielzahl von Abtastschaltungen
620 einen Abtastvorgang mit den Wortleitungen durch, die gemäß einer jeweiligen der modifizierten Wortleitungsvorspannungseinstellungen vorgespannt sind. Als Reaktion auf das Durchführen des Abtastvorgangs speichern die Abtastschaltungen
620 jeweils ein vorläufiges Abtastergebnis in einem PR-Unterabschnitt
1604, der jeweiligen einen der modifizierten Wortleitungsvorspannungseinstellungen zugehörig ist. Dementsprechend ist die Anzahl von Abtastvorgängen, welche die Vielzahl von Abtastschaltungen
620 in einem CAM-Lesevorgang durchführt, gleich der Gesamtzahl von modifizierten Wortleitungsvorspannungseinstellungen und wiederum der Anzahl von Iterationen, die in dem CAM-Lesevorgang durchgeführt werden. Mathematisch ist die Anzahl der Abtastvorgänge und/oder Iterationen gleich:
wobei x
i die i-te Anzahl von modifizierten Wortleitungsvorspannungseinstellungen, Abtastvorgängen und/oder Iterationen für eine entsprechende i-te Wortleitungsgruppe WLGi ist, s
i die Anzahl von Wortleitungen der i-ten Wortleitungsgruppe WLGi ist, die auf dem niedrigen Spannungspegel VL gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt sind, die den Zielschlüsselwort- und invertierten Zielschlüsselwortabschnitten entspricht, t die Anzahl von Bitfehlern ist, bis zu denen ein Satz von Speicherzellen einer Kette, die einen Schlüsselwortabschnitt oder einen invertierten Schlüsselwortabschnitt speichert, aufweisen kann, und die Kette noch als ein übereinstimmendes Schlüsselwort speichernd erkannt werden kann, und P die Anzahl von Wortleitungsgruppen ist.
-
Außerdem kombiniert, wie bei der Konfiguration in 13, die Leseschaltung 700 die vorläufigen Abtastergebnisse durch Ausführen von Logikoperationen, einschließlich UND- und ODER-Logikoperationen, um endgültige Abtastergebnisse zu erzeugen, die angeben oder identifizieren, welche der Ketten ein übereinstimmendes Schlüsselwort speichern. 16 zeigt den Kettenabschnitt 1302 einschließlich eines endgültigen Abtastergebnis- (FR) Unterabschnitts 1608, der eingerichtet ist, um ein endgültiges Abtastergebnis zu speichern, das angibt, ob die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert.
-
Außerdem ist, wie bei der Konfiguration in 13, die Leseschaltung 700 eingerichtet, um eine ODER-Operation an den vorläufigen Abtastergebnissen durchzuführen, die aus Abtastvorgänge erzeugt werden, die für dieselbe Wortleitungsgruppe durchgeführt werden, um ein zugehöriges kombiniertes Abtastergebnis für diese Wortleitungsgruppe zu erzeugen oder zu bestimmen. Dementsprechend ist in Bezug auf 16 eine erste ODER-Logikschaltung 1610(1) eingerichtet, um eine ODER-Operation an der x1-Anzahl von vorläufigen Abtastergebnissen für die erste Wortleitungsgruppe WLG1 durchzuführen, um ein erstes kombiniertes Abtastergebnis für die erste Wortleitungsgruppe WLG1 zu erzeugen; eine zweite ODER-Logikschaltung 1610(2) ist eingerichtet, um eine ODER-Operation an der x2-Anzahl von vorläufigen Abtastergebnissen für die zweite Wortleitungsgruppe WLG2 durchzuführen, um ein zweites kombiniertes Abtastergebnis für die zweite Wortleitungsgruppe WLG2 zu erzeugen; eine dritte ODER-Logikschaltung 1610(3) ist eingerichtet, um eine ODER-Operation an der x3-Anzahl von vorläufigen Abtastergebnissen für die dritte Wortleitungsgruppe WLG3 durchzuführen, um ein drittes kombiniertes Abtastergebnis für die dritte Wortleitungsgruppe WLG3 zu erzeugen; und eine vierte ODER-Logikschaltung 1610(4) ist eingerichtet, um eine ODER-Operation an der x4-Anzahl von vorläufigen Abtastergebnissen für die vierte Wortleitungsgruppe WLG4 durchzuführen, um ein viertes kombiniertes Abtastergebnis für die vierte Wortleitungsgruppe WLG4 zu erzeugen.
-
Zusätzlich wird, wie bei der Konfiguration in 13, der i-te Kettenabschnitt 1602 so gezeigt, dass er eine UND-Logikschaltung 1612 einschließt, die eingerichtet ist, um eine UND-Logikoperation an den kombinierten Abtastergebnissen durchzuführen und ein endgültiges Abtastergebnis als Reaktion auf die UND-Logikoperation zu erzeugen. Der endgültige Abtastergebnis- (FR) Unterabschnitt 1608 kann eingerichtet sein, um das endgültige Abtastergebnis zu speichern, das von der UND-Logikschaltung 1612 erzeugt wird, wie beispielsweise ein Bit mit einem logischen 1-Wert oder einem logischen 0-Wert, um anzuzeigen, ob die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert.
-
Während einer gegebenen Iteration eines CAM-Lesevorgangs, wenn die Wortleitungen gemäß einer modifizierten Wortleitungsvorspannungseinstellung vorgespannt werden, die einer gegebenen Wortleitungsgruppe entspricht, spannt die Lesesteuerung 702 eine entsprechende t-Anzahl von Wortleitungen, die Teil der gegebenen Wortleitungsgruppe sind, auf den hohen Spannungspegel VH vor, der ansonsten auf den niedrigen Spannungspegel VL vorgespannt werden würde, wenn er gemäß der anfänglichen Wortleitungsvorspannungseinstellung vorgespannt würde, wie zuvor beschrieben. Für den Fall, dass Speicherzellen der i-ten Kette Si, die mit der entsprechenden t-Anzahl von Wortleitungen gekoppelt sind, Daten mit bis zu einer t-Anzahl von Bitfehlern speichern (z. B. Speichern von Daten mit einem logischen 0-Wert anstelle eines logischen 1-Wertes) können diese Speicherzellen noch leiten, da ihre Steuergates auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL vorgespannt sind. Außerdem spannt gemäß der gegebenen modifizierten Wortleitungsvorspannungseinstellung die Lesesteuerung 702 Wortleitungen, die nicht Teil der gegebenen Wortleitungsgruppe sind, auf den hohen Spannungspegel VH vor, so dass Speicherzellen der i-ten Kette Si, die mit diesen Wortleitungen gekoppelt sind, in der Lage sind, zu leiten, wodurch das Ergebnis des Abtastvorgangs, der während der gegebenen Iteration durchgeführt wird, nicht beeinflusst wird. Infolgedessen wird, wenn die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert, aber dieses übereinstimmende Schlüsselwort oder das invertierte übereinstimmende Schlüsselwort mit bis zu einer t-Anzahl von Bitfehlern speichert, die i-te Kette Si (und die i-te Bitleitung BLi) mindestens einmal über die x1-Anzahl von Abtastvorgängen, die für die erste Wortleitungsgruppe WLG1 durchgeführt werden, leiten, mindestens einmal über die x2-Anzahl von Abtastvorgängen, die für die zweite Wortleitungsgruppe WLG2 durchgeführt werden, leiten, mindestens einmal über die x3-Anzahl von Abtastvorgängen, die für die dritte Wortleitungsgruppe WLG3 durchgeführt werden, leiten, und mindestens einmal über die x4-Anzahl von Abtastvorgängen, die für die vierte Wortleitungsgruppe WLG4 durchgeführt werden, leiten, wodurch bewirkt wird, dass die ODER-Logikschaltungen 1612 jeweils ihre jeweiligen kombinierten Abtastergebnisse mit einem logischen 1-Wert ausgeben, was wiederum bewirkt, dass die UND-Logikschaltung 1612 das endgültige Abtastergebnis mit einem logischen 1-Wert ausgibt, um anzuzeigen, dass die i-te Kette ein übereinstimmendes Schlüsselwort speichert. Alternativ wird, wenn die i-te Kette Si kein übereinstimmendes Schlüsselwort speichert, die i-te Kette Si (und die i-te Bitleitung BLi) nicht mindestens einmal über die x1-Anzahl von Abtastvorgängen, die für die erste Wortleitungsgruppe WLG1 durchgeführt werden, leiten, nicht mindestens einmal über die x2-Anzahl von Abtastvorgängen, die für die zweite Wortleitungsgruppe WLG2 durchgeführt werden, leiten, nicht mindestens einmal über die x3-Anzahl von Abtastvorgängen, die für die dritte Wortleitungsgruppe WLG3 durchgeführt werden, leiten und/oder nicht mindestens einmal über die x4-Anzahl von Abtastvorgängen, die für die vierte Wortleitungsgruppe WLG4 durchgeführt werden, leiten, wodurch bewirkt wird, dass mindestens eine der ODER-Logikschaltungen 1610 ein jeweiliges kombiniertes Abtastergebnis mit einem logischen 0-Wert ausgibt, was wiederum bewirkt, dass die UND-Logikschaltung 1612 das endgültige Abtastergebnis mit einem logischen 0-Wert ausgibt, um anzuzeigen, dass die i-te Kette Si kein übereinstimmendes Schlüsselwort speichert.
-
Nach dem Durchführen aller Iterationen kann die Lesesteuerung 702 die endgültigen Abtastergebnisse im Abtastergebnisspeicher 802 analysieren, um zu bestimmen, welche der Bitleitungen und/oder Ketten während des Abtastvorgangs leiteten, wie beispielsweise durch Bestimmen, welche der Kettenabschnitte 804 einen logischen 1-Wert speichern und welche einen logischen 0-Wert speichern. Als Reaktion auf die Analyse kann die Lesesteuerung 702 bestimmen, welche Ketten übereinstimmende Schlüsselwörter speichern, und entweder Spaltenadressen dieser Ketten an den Steuerung 102 zurücksenden oder basierend auf der Spaltenadresse dieser Ketten Datensätze abrufen, die diesen übereinstimmenden Schlüsselwörtern zugehörig sind, ohne zuerst mit der Steuerung 102 kommunizieren zu müssen. Die Speicherchips 104 können die abgerufenen Datensätze an die Steuerung 102 senden, die wiederum die abgerufenen Datensätze an die Hostvorrichtung senden kann, die den Zielschlüssel gesendet hat.
-
Das Speichern von Schlüsselwort- und invertierten Schlüsselwortabschnitten gemäß der vierten Art von CAM-Speicherschema gegenüber dem Speichern von Schlüsselwörtern und invertierten Schlüsselwörtern gemäß der dritten Art von CAM-Speicherschema kann insofern vorteilhaft sein, als dadurch eine reduzierte oder minimierte Anzahl von Abtastvorgängen in einem CAM-Lesevorgang durchgeführt werden kann, was wiederum die Anzahl von Iterationen und die gesamte Zeitdauer des CAM-Lesevorgangs reduziert oder minimiert. Da die Bitlänge eines Schlüsselwortabschnitts kleiner als die Bitlänge eines Schlüsselworts ist, ist die Wahrscheinlichkeit, dass ein Satz von Speicherzellen einen Schlüsselwortabschnitt mit einer t-Anzahl von Bitfehlern speichert, geringer als die Wahrscheinlichkeit, dass ein Satz von Speicherzellen ein Schlüsselwort mit der t-Anzahl von Bitfehlern speichert. Daher ist die durchschnittliche Anzahl von Bitfehlern pro Satz von Speicherzellen, die einen Schlüsselwortabschnitt oder einen invertierten Schlüsselwortabschnitt speichern, geringer als die durchschnittliche Anzahl von Bitfehlern pro Satz von Speicherzellen, die ein Schlüsselwort oder ein invertiertes Schlüsselwort speichern. Ferner hängt, wie zuvor erläutert, die Anzahl von Abtastvorgängen von der t-Anzahl von Bitfehlern ab, bis zu denen ein Satz von Speicherzellen, die ein Schlüsselwort oder einen Schlüsselwortabschnitt speichern, aufweisen kann, und entsprechend von der t-Anzahl von Wortleitungen einer gegebenen Wortleitungsgruppe, die auf den hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL für eine gegebene modifizierte Wortleitungsvorspannungseinstellung abgebildet werden. Mathematisch ist die Anzahl der Abtastvorgänge gleich
wie zuvor beschrieben. Je höher wiederum die Anzahl t ist, desto mehr Iterationen und desto mehr Abtastvorgänge gibt es, welche die Vielzahl von Abtastschaltungen
620 in einem CAM-Lesevorgang durchführen. Da die durchschnittliche Anzahl von Bitfehlern pro Satz von Speicherzellen, die einen Schlüsselwortabschnitt oder invertierten Schlüsselwortabschnitt speichern, geringer ist als die durchschnittliche Anzahl von Bitfehlern pro Satz von Speicherzellen, die ein Schlüsselwort oder invertiertes Schlüsselwort speichern, kann die Anzahl t für die vierte Art von CAM-Speicherschema niedriger sein als für die dritte Art von CAM-Speicherschema, ohne die Wahrscheinlichkeit von Nicht-Erkennungen zu erhöhen, was zu weniger Abtastvorgänge führt, die in einem CAM-Lesevorgang durchgeführt werden. In optimierten vierten Arten von CAM-Speicherschemata basieren die Anzahlen von Schlüsselwort- und invertierten Schlüsselwortabschnitten und die q-Anzahl von Paritätsbits, die für Schlüsselwort- und invertierte Schlüsselwortabschnitte erzeugt werden, auf t = 1. Entsprechend ist die t-Anzahl von Wortleitungen einer Wortleitungsgruppe, die auf dem hohen Spannungspegel VH anstelle des niedrigen Spannungspegels VL in einer modifizierten Wortleitungsvorspannungseinstellung abgebildet wird, 1, wodurch die Anzahl von Abtastvorgängen minimiert wird, die in einem CAM-Lesevorgang im dritten Lesemodus durchgeführt werden.
-
Außerdem ist in verschiedenen Ausführungsformen die Leseschaltung 700 so eingerichtet, dass sie in ähnlicher Weise arbeitet, wenn sie im vierten CAM-Lesemodus für die vierte Art von CAM-Speicherschema arbeitet, wie wenn sie im vierten CAM-Lesemodus für die dritte Art von CAM-Speicherschema arbeitet. Wie zuvor beschrieben, führt die Lesesteuerung 702 im vierten CAM-Lesemodus einen CAM-Lesevorgang über eine Vielzahl von Schleifen durch, wobei die Leseschaltung 700 im dritten CAM-Lesemodus für jede Schleife arbeitet und wobei die Lesesteuerung 702 für jede nächste Schleife den Pegel der niedrigen Spannung VL gegenüber dem Pegel in der vorherigen Schleife erhöht oder inkrementiert. Die Lesesteuerung 702 kann eine nächste Schleife eingeben, wenn sie bestimmt, dass eine Anzahl von übereinstimmenden Schlüsselwörtern in einer vorliegenden Schleife unter einer Schwellenanzahl liegt.
-
Zusätzlich ist in verschiedenen Ausführungsformen die Leseschaltung 700 eingerichtet, um in ähnlicher Weise zu arbeiten, wenn sie im fünften CAM-Lesemodus für die vierte Art von CAM-Speicherschema arbeitet, wie es der Fall ist, wenn sie im fünften CAM-Lesemodus für die dritte Art von CAM-Speicherschema arbeitet. Im fünften CAM-Lesemodus ist die Leseschaltung 700 eingerichtet, um einen CAM-Lesevorgang über eine Vielzahl von Iterationen durchzuführen. Während jeder Iteration spannt die Lesesteuerung 702 die Wortleitungen gemäß einer Wortleitungsvorspannungseinstellung vor, die Bitmustern von Zielschlüsselwortabschnitten und invertierten Zielschlüsselwortabschnitten entspricht, wie beispielsweise im ersten und zweiten CAM-Lesemodus, wie zuvor beschrieben. Für eine der Iterationen ist der niedrige Spannungspegel, mit dem die Lesesteuerung 702 den ersten Satz von Wortleitungen vorspannt, der Leseimpulspegel VrA, der dem Speicherzustand A (oder dem Programmierzustand für SLC-Speicherschemata) zugehörig ist. Für eine andere Iteration ist der niedrige Spannungspegel, mit dem die Lesesteuerung 702 den ersten Satz von Wortleitungen vorspannt, um einen ersten vorbestimmten Betrag höher als der oder über dem Leseimpulspegel VrA. Für eine dritte Iteration ist der niedrige Spannungspegel, mit dem die Lesesteuerung 702 den ersten Satz von Wortleitungen vorspannt, um einen zweiten vorbestimmten Betrag niedriger als der oder unter dem Leseimpulspegel VrA. In verschiedenen Ausführungsformen können die Größen des ersten und des zweiten vorbestimmten Betrags gleich oder voneinander verschieden sein.
-
Außerdem kann während jeder Iteration, wenn die Wortleitungen gemäß der Wortleitungsvorspannungseinstellung vorgespannt sind, die Vielzahl von Abtastschaltungen 620 einen Abtastvorgang durchführen und als Reaktion Abtastergebnisse für jede Kette speichern. Dementsprechend speichert die Vielzahl von Abtastschaltungen 620 nach der Vielzahl von Iterationen eine Vielzahl von Abtastergebnissen für jede Kette. Nach dem Durchführen der Vielzahl von Iterationen kann die Lesesteuerung 702 eine Vielzahl von ODER-Logikoperationen durchführen, wobei jede ODER-Logikoperation an den Abtastergebnissen durchgeführt wird, die sich auf eine jeweilige Kette beziehen. Die Lesesteuerung 702 kann die Ergebnisse der ODER-Logikoperationen als endgültige Abtastergebnisse für die Vielzahl von Ketten in den Kettenabschnitten 804 speichern. Für jede Kette kann, wenn die Kette (und die zugehörige Bitleitung) während mindestens einer der Iterationen leitet, die Lesesteuerung 702 das endgültigen Ergebnis als einen logischen 1-Wert speichern, um anzuzeigen, dass die Kette ein übereinstimmendes Schlüsselwort speichert. Alternativ kann, wenn die Kette (und die zugehörige Bitleitung) während keiner der Iterationen leitet, die Lesesteuerung 702 das endgültigen Ergebnis als einen logischen 0-Wert speichern, um anzuzeigen, dass der Kette kein übereinstimmendes Schlüsselwort speichert.
-
17 zeigt ein Blockdiagramm eines anderen Beispiels eines i-ten Ketten- (Si) Abschnitts 1702, der für eine andere beispielhafte Konfiguration für einen i-ten Kettenabschnitt 804(i) repräsentativ sein kann, der verwendet wird, um CAM-Lesevorgänge in dem dritten und/oder vierten CAM-Lesemodus für entweder das dritte CAM-Speicherschema oder das vierte CAM-Speicherschema durchzuführen. Der i-te Ketten- (Si) Abschnitt 1702 ist mit einer zugehörigen i-ten Abtastschaltung 620(i) und einer zugehörigen i-ten Kette Si gekoppelt. Die i-te Kette Si kann eingerichtet sein, um Schlüsselwörter und invertierte Schlüsselwörter gemäß dem dritten CAM-Speicherschema zu speichern oder Schlüsselwortabschnitte und invertierte Schlüsselwortabschnitte gemäß dem vierten CAM-Speicherschema zu speichern. Bei Implementierung kann jeder der m-Anzahl von Kettenabschnitten 804(1) bis 804(m) in 8 die Konfiguration des i-ten Kettenabschnitts 1702 aufweisen, der in 17 gezeigt ist.
-
Der i-te Kettenabschnitt 1702 kann eine alternative Konfiguration zu den Konfigurationen der i-ten Kettenabschnitte 1302 und 1602 sein, die jeweils in 13 bzw. 16 gezeigt sind. Außerdem kann der i-te Kettenabschnitt 1702 flexibel sein, um mit einer beliebigen Anzahl von Wortleitungsgruppen und einer beliebigen Anzahl von Abtastvorgängen zu arbeiten. Das heißt, die Konfiguration in 17 kann mit zwei Wortleitungsgruppen, die einem Schlüsselwort KW und einem invertierten Schlüsselwort KWbar entsprechen, oder mit einer beliebigen Anzahl von Wortleitungsgruppen, die einer beliebigen Anzahl von Schlüsselwort- und invertierten Schlüsselwortabschnitten KW_p, KWbar_p entsprechen, arbeiten. Wie in 17 gezeigt ist die Kette Si mit einer (P·r)-Anzahl von Wortleitungen gekoppelt, die in einer P-Anzahl von Wortleitungsgruppen organisiert sind, wobei jede Wortleitungsgruppe eine r-Anzahl von Wortleitungen einschließt.
-
Zusätzlich schließt der i-te Kettenabschnitt 1702 im Allgemeinen weniger Schaltungskomponenten ein als die Kettenabschnitte 1302, 1602. Das heißt, anstatt eine xj-Anzahl von Speicher-Unterabschnitten für vorläufige Abtastergebnisse (PR) für jede Wortleitungsgruppe einzuschließen, schließt der i-te Kettenabschnitt 1702 einen einzelnen Speicher-Unterabschnitt 1704 ein, der eingerichtet ist, um ein einzelnes vorläufiges Abtastergebnis zu speichern. Anstatt eine P-Zahl von ODER-Logikschaltungen einzuschließen, schließt der i-te Kettenabschnitt 1702 auch eine einzelne ODER-Logikschaltung 1706 ein. Ähnlich wie bei den anderen Konfigurationen ist die ODER-Logikschaltung 1706 eingerichtet, um eine ODER-Logikoperation durchzuführen, um ein kombiniertes Abtastergebnis zu erzeugen und das kombinierte Abtastergebnis in dem PR-Unterabschnitt 1704 zu speichern.
-
Im Einzelnen führt die ODER-Logikschaltung 1706 eine ODER-Logikoperation an einem Abtastergebnis eines Abtastvorgangs durch, der aus der i-ten Abtastschaltung 620(i) und dem kombinierten Abtastergebnis, das in dem PR-Unterabschnitt 1704 gespeichert ist, bestimmt wird. Das heißt, der i-te Kettenabschnitt 1702 verwendet ein kombiniertes Abtastergebnis von einer letzten ODER-Operation als Rückmeldung zur Durchführung einer aktuellen ODER-Operation. Dementsprechend verwendet die ODER-Logikschaltung 1706 für eine aktuelle ODER-Logikoperation als Eingaben ein Abtastergebnis eines aktuellen Abtastvorgangs und ein letztes kombiniertes Abtastergebnis, das aus einer letzten ODER-Logikoperation bestimmt wird.
-
Außerdem schließt, ähnlich wie bei den Kettenabschnitten 1302, 1602, der i-te Kettenabschnitt 1702 eine UND-Logikschaltung 1708 ein, die eingerichtet ist, um eine UND-Logikoperation durchzuführen, um ein endgültiges Abtastergebnis zu erzeugen, das angibt, ob die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert. Der i-te Kettenabschnitt 1702 schließt ferner einen endgültigen Abtastergebnis- (FR) Unterabschnitt 1710 ein, der eingerichtet ist, um das endgültige Abtastergebnis zu speichern, das durch die UND-Logikschaltung 1708 bestimmt wird.
-
Um einen CAM-Lesevorgang gemäß dem Kettenabschnitt 1702 durchzuführen, durchläuft die Lesesteuerung 702 eine Vielzahl von Sätzen von Abtastvorgängen. Jeder Satz von Abtastvorgängen entspricht einer der Wortleitungsgruppen. Die Anzahl von Abtastvorgängen eines Satzes ist gleich der Anzahl von modifizierten Wortleitungsvorspannungseinstellungen, die der Wortleitungsvorspannungsgruppe entsprechen, welcher der Satz entspricht.
-
Die UND-Logikschaltung 1708 führt eine UND-Logikoperation durch, um das endgültige Abtastergebnis am Ende jedes Satzes zu aktualisieren. Das heißt, am Ende eines gegebenen Satzes führt die UND-Logikschaltung 1708 eine UND-Logikoperation an dem Logikwert des am Ende des gegebenen Satzes bestimmten kombinierten Abtastergebnisses und dem Logikwert des am Ende des letzten Satzes von Abtastvorgänge bestimmten endgültigen Abtastergebnisses durch. Dementsprechend verwendet der i-te Kettenabschnitt 1702 ein endgültiges Abtastergebnis aus einer letzten UND-Operation als Rückmeldung zur Durchführung einer aktuellen UND-Operation. Dementsprechend verwendet die UND-Logikschaltung 1708 für eine aktuelle UND-Logikoperation als Eingaben ein kombiniertes Abtastergebnis, das am Ende eines aktuellen Satzes von Abtastvorgängen bestimmt wird, und ein letztes endgültiges Abtastergebnis, das aus einer letzten UND-Logikoperation bestimmt wird.
-
Im Einzelnen kann die Lesesteuerung 702, um einen CAM-Lesevorgang durchzuführen, die Sätze von Abtastvorgängen nacheinander durchführen, wobei sie zu einem nächsten Satz übergeht, nachdem sie alle Abtastvorgänge eines aktuellen Satzes durchgeführt hat. Innerhalb eines gegebenen Satzes, der einer gegebenen k-ten Wortleitungsgruppe WLGk entspricht, zyklieren oder iteriereen die Lesesteuerung 702 und die i-te Abtastschaltung 620(i) durch eine xk-Anzahl von Abtastvorgängen, die gleich der xk-Anzahl von modifizierten Wortleitungsvorspannungseinstellungen ist, die der gegebenen k-ten Wortleitungsgruppe WLGk entspricht. Die Lesesteuerung 702 spannt die Wortleitungen gemäß einer anderen der xk-Anzahl modifizierter Vorspannungseinstellungen während jedes Abtastvorgangs vor, die in dem gegebenen Satz durchgeführt wird. Nachdem die Lesesteuerung 702 und die i-te Abtastschaltung 620(i) einen letzten Abtastvorgang des gegebenen Satzes durchgeführt haben, geht die Lesesteuerung 702 zu einem nächsten Satz über, der einer anderen Wortleitungsgruppe entspricht.
-
Zusätzlich kann die Lesesteuerung 702 zu Beginn eines CAM-Lesevorgangs den FR-Unterabschnitt 1710 initialisieren, um ein logisches 1-Bit zu speichern, um anzuzeigen, dass die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert. Wenn dann während des Iterierens durch die Sätze von Abtastvorgängen die i-te Bitleitung BLi mindestens einmal für jeden der Sätze leitet, behält der FR-Unterabschnitt 1710 das Speichern eines logischen 1-Werts der logischen UND-Operationen infolgedessen bei, die durch die logische UND-Schaltung 1708 durchgeführt werden. Alternativ wird, wenn die i-te Bitleitung BLi für zumindest einen der Sätze nicht mindestens einmal leitet, der FR-Unterabschnitt 1710 bis zum Ende des CAM-Lesevorgangs zum Speichern eines logischen 0-Werts wechseln, um anzuzeigen, dass die i-te Kette Si kein übereinstimmendes Schlüsselwort speichert.
-
Auch initialisiert die Lesesteuerung 702 zu Beginn jedes Satzes von Abtastvorgängen den PR-Unterabschnitt 1704, um ein logisches 0-Bit zu speichern, um anzuzeigen, dass die i-te Bitleitung BLi während der Durchführung des Satzes von Abtastvorgängen mindestens einmal nicht leitete. Wenn während eines gegebenen Satzes die i-te Bitleitung BLi nicht mindestens einmal leitet, dann behält der PR-Unterabschnitt 1704 das Speichern eines logischen 0-Bits bis zum Ende des gegebenen Satzes bei. Wenn alternativ die i-te Bitleitung BLi während des gegebenen Satzes mindestens einmal leitet, dann wechselt der PR-Unterabschnitt 1704 zum Speichern eines logischen 1-Bits bis zum Ende des gegebenen Satzes. Nachdem die Lesesteuerung 702 einen letzten Abtastvorgang des gegebenen Satzes (d. h. am Ende des gegebenen Satzes) durchgeführt hat, steuert die Lesesteuerung 702 die UND-Logikschaltung 1708, um eine UND-Logikoperation an einem aktuellen Logikwert des Bits, das in dem PR-Unterabschnitt 1704 gespeichert ist, und einen aktuellen Logikwert des Bits, das in dem FR-Unterabschnitt 1710 gespeichert ist, durchzuführen, um den Wert des endgültigen Abtastergebnisses, das in dem FR-Unterabschnitt 1710 gespeichert ist, zu aktualisieren. Wenn während des gegebenen Satzes die i-te Bitleitung BLi mindestens einmal leitete, dann speichert der PR-Unterabschnitt 1704 ein logisches 1-Bit am Ende des gegebenen Satzes, das die UND-Logikschaltung 1708 mit dem logischen Wert des endgültigen Abtastergebnisses UND, das am Ende eines letzten Satzes von Abtastvorgänge bestimmt wurde, durchführen wird. Da die Lesesteuerung 702 den FR-Unterabschnitt auf eine logische 1 initialisiert, speichert der FR-Unterabschnitt 1710 am Ende des letzten Satzes von Abtastvorgängen einen logischen 1-Wert, um anzuzeigen, dass die i-te Kette Si ein übereinstimmendes Schlüsselwort speichert, solange die i-te Bitleitung BLi während jedes der Sätze von Abtastvorgängen mindestens einmal leitet. Wenn alternativ die i-te Bitleitung BLi während keinem Abtastvorgang von mindestens einem der Sätze leitet, dann speichert der PR-Unterabschnitt 1704 ein logisches 0-Bit am Ende dieser Sätze, was bewirkt, dass der FR-Unterabschnitt 1710 das endgültige Abtastergebnis als einen logischen 0-Wert am Ende des letzten Satzes speichert, was anzeigt, dass die i-te Kette Si kein übereinstimmendes Schlüsselwort speichert.
-
Zusätzlich ist in verschiedenen Ausführungsformen der dritten Art von CAM-Speicherschema und/oder der vierten Art von CAM-Speicherschema die Lesesteuerung 702 eingerichtet, einige oder alle des ersten, zweiten, dritten, vierten oder fünften CAM-Lesemodus durchzuführen. In bestimmten Ausführungsformen kann die Lesesteuerung 702 beginnen, indem sie einen CAM-Lesevorgang im ersten CAM-Lesemodus durchführt. Am Ende des Abtastvorgangs, der während des Betriebs im ersten CAM-Lesemodus durchgeführt wird, kann die Lesesteuerung 702 bestimmen, ob der Abtastvorgang ein auslösendes Ereignis ausgelöst hat. Wenn dies nicht der Fall ist, kann die Lesesteuerung 702 den CAM-Lesevorgang beenden, indem sie jegliche übereinstimmenden Schlüsselwörter (oder angegebenen Adressen) an die Steuerung 102 sendet und/oder Datensätze abruft, die den übereinstimmenden Schlüsselwörtern zugehörig sind, und die Datensätze an die Steuerung 102 sendet. Wenn dies jedoch der Fall ist, dann kann die Lesesteuerung 702 an eine der anderen zweiten bis fünften CAM-Lesemodi übergehen und eine oder mehrere Iterationen in dem anderen CAM-Lesemodus durchführen, in den sie übergegangen ist. In manchen beispielhaften Konfigurationen kann die Lesesteuerung 702 direkt vom ersten CAM-Lesemodus in den dritten CAM-Lesemodus oder den vierten CAM-Lesemodus übergehen. In anderen beispielhaften Konfigurationen kann die Lesesteuerung 702 zuerst in den zweiten CAM-Lesemodus und/oder den fünften CAM-Lesemodus übergehen. Nach Abschluss des zweiten CAM-Lesemodus und/oder des fünften CAM-Lesemodus kann die Lesesteuerung 702 bestimmen, ob ein anderes auslösendes Ereignis aufgetreten ist. Wenn dies nicht der Fall ist, kann die Lesesteuerung 702 den CAM-Lesevorgang beenden. Wenn dies der Fall ist, dann kann die Lesesteuerung 702 in den dritten CAM-Lesemodus oder den vierten CAM-Lesemodus übergehen und durch eine Vielzahl von Abtastvorgängen in dem dritten CAM-Lesemodus oder dem vierten CAM-Lesemodus iterieren.
-
Für zumindest einige beispielhafte Konfigurationen ist das auslösende Ereignis eine vorbestimmte Anzahl von übereinstimmenden Schlüsseln. Nach dem Durchführen eines Abtastvorgangs im ersten CAM-Lesemodus kann die Abtaststeuerung 702 eine Anzahl von übereinstimmenden Schlüsseln bestimmen (z. B. durch Bestimmen einer Anzahl von Ketten, die übereinstimmende Schlüsselwörter speichern, und/oder durch Bestimmen, wie viele Kettenabschnitte 804 einen logischen 1-Wert speichern). Wobei die Anzahl übereinstimmender Schlüssel, die unter der vorbestimmten Anzahl liegt, ein auslösendes Ereignis ist, das die Lesesteuerung 702 veranlasst, in einen anderen CAM-Lesemodus überzugehen. In diesem Zusammenhang fungieren der zweite bis fünfte CAM-Lesemodus dabei als erweiterte Detektionsmodi, die der Lesesteuerung 702 zur Verfügung stehen, um die Anzahl der Nicht-Erkennungen zu minimieren.
-
Es ist beabsichtigt, dass die vorstehende detaillierte Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Es sind nur die folgenden Ansprüche, einschließlich aller Äquivalente, die den Umfang der beanspruchten Erfindung definieren sollen. Schließlich sei darauf hingewiesen, dass jeder Aspekt jeder der hier beschriebenen bevorzugten Ausführungsformen allein oder in Kombination miteinander verwendet werden kann.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-