DE102007042184A1 - Nichtflüchtiges Speicherbauelement und Programmierverfahren - Google Patents

Nichtflüchtiges Speicherbauelement und Programmierverfahren Download PDF

Info

Publication number
DE102007042184A1
DE102007042184A1 DE102007042184A DE102007042184A DE102007042184A1 DE 102007042184 A1 DE102007042184 A1 DE 102007042184A1 DE 102007042184 A DE102007042184 A DE 102007042184A DE 102007042184 A DE102007042184 A DE 102007042184A DE 102007042184 A1 DE102007042184 A1 DE 102007042184A1
Authority
DE
Germany
Prior art keywords
programming
memory cells
data
program
logical state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102007042184A
Other languages
English (en)
Inventor
Kwang-jin Hwaseong Lee
Choong-Keun Suwon Kwak
Du-Eung Yongin Kim
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102007042184A1 publication Critical patent/DE102007042184A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0064Verifying circuits or methods

Abstract

Die Erfindung bezieht sich auf ein nichtflüchtiges Speicherbauelement und ein zugehöriges Verfahren zur Durchführung eines Programmiervorgangs. Erfindungsgemäß werden Daten, die einen ersten logischen Zustand aufweisen, in eine erste Gruppe einer Mehrzahl von ausgewählten Speicherzellen, die aus einer Mehrzahl von nichtflüchtigen Speicherzellen ausgewählt werden, während eines ersten Programmierintervalls eines Programmiervorgangs programmiert, und Daten, die einen zweiten logischen Zustand aufweisen, der sich vom ersten logischen Zustand unterscheidet, werden während eines zweiten Programmierintervalls des Programmiervorgangs nach dem ersten Programmierintervall in eine zweite Gruppe der ausgewählten Speicherzellen programmiert. Verwendung z. B. für Speicherbauelemente des PRAM-, RRAM-, FRAM- und MRAM-Typs.

Description

  • Die Erfindung bezieht sich auf ein nichtflüchtiges Speicherbauelement und ein zugehöriges Verfahren zur Durchführung eines Programmiervorgangs.
  • Eine Vielzahl von nichtflüchtigen Speicherbauelementen verwendet Widerstandsmaterialien, um Daten zu speichern. So verwenden beispielsweise Phasenwechselspeicher mit direktem Zugriff (PRAM), Widerstands-RAM (RRAM), ferroelektrische RAM (FRAM) und magnetische RAM (MRAM) alle Widerstandsmaterialien, um Daten zu speichern. Im Gegensatz zu anderen Speicherformen wie dynamische Speicher mit direktem Zugriff (DRAM) und Flashspeicher, die Daten unter Verwendung von Ladungen speichern, tendieren Bauelemente, welche Widerstandsmaterialien benutzen, dazu, Daten durch eine physikalische Modifizierung des Widerstandsmaterials zu speichern. So speichert beispielsweise ein PRAM Daten in der Regel unter Verwendung von verschiedenen Zuständen eines Phasenwechselmaterials, wie z.B. einer Chalcogenidlegierung, ein PRAM speichert Daten in der Regel unter Verwendung von verschiedenen Widerstandswerten eines Materials mit variablem Widerstand, ein FRAM speichert Daten in der Regel unter Verwendung eines Polarisationsphänomens eines ferroelektrischen Materials, und ein MRAM speichert Daten in der Regel unter Verwendung einer Widerstandsvariation eines magnetischen Tunnelübergangs(MTJ)-Dünnfilms in Reaktion auf einen Magnetisierungszustands eines ferromagnetischen Materials.
  • Um eine Möglichkeit darzustellen, dass Widerstandsmaterialien zum Speichern von Daten verwendet werden können, wird nun ein beispielhafter PRAM detaillierter beschrieben. Das Phasenwechselmaterial in einem PRAM, typischerweise Chalcogenid, ist in der Lage, stabil zwischen amorphen und kristallinen Phasen zu wechseln. Die amorphen und kristallinen Phasen (oder Zustände) zeigen verschiedene Widerstandswerte, die zur Unterscheidung von verschiedenen logischen Zuständen von Speicherzellen in den Speicherbauelementen verwendet werden. Insbesondere zeigt die amorphe Phase einen relativ hohen Widerstandswert und die kristalline Phase zeigt einen relativ niedrigen Widerstandswert.
  • Der PRAM benutzt den amorphen Zustand, um einen logischen Wert „1" (oder Datenwert „1") zu repräsentieren, und der kristalline Zustand repräsentiert einen logischen Wert „0" (oder Datenwert „0"). In einem PRAM-Bauelement wird der kristalline Zustand als „Setz-Zustand" bezeichnet und der amorphe Zustand wird als „Rücksetz-Zustand" bezeichnet. Entsprechend speichert eine Speicherzelle in einem PRAM durch Setzen des Phasenwechselmaterials der Speicherzelle in den kristallinen Zustand einen logischen Wert „0" und durch Setzen des Phasenwechselmaterials in den amorphen Zustand einen logischen Wert „1". Verschiedene PRAM-Bauelemente sind beispielsweise in den Patentschriften US 6.487.113 und US 6.480.438 offenbart.
  • Das Phasenwechselmaterial in einem PRAM wird durch Erwärmen des Materials auf einen ersten Temperaturwert, der über einem vorgegebenen Schmelztemperaturwert liegt, und anschließendes schnelles Abkühlen des Materials in den amorphen Zustand konvertiert. Das Phasenwechselmaterial wird durch Erwärmen des Materials auf einen zweiten Temperaturwert und Halten für eine gewisse Zeitspanne in den kristallinen Zustand konvertiert, wobei der zweite Temperaturwert niedriger als der Schmelztemperaturwert aber höher als ein Kristallisationstemperaturwert ist. Entsprechend werden Daten in die Speicherzellen eines PRAMs dadurch programmiert, dass das Phasenwechselmaterial in Speicherzellen des PRAMs durch Erwärmen und Abkühlen zwischen dem amorphen und kristallinem Zustand konvertiert wird, wie oben beschrieben.
  • Das Phasenwechselmaterial in einem PRAM umfasst typischerweise eine Verbindung, die Germanium (Ge), Antimon (Sb) und Tellur (Te) aufweist, d.h. eine „GST-Verbindung". Die GST-Verbindung ist für ein PRAM gut geeignet, da sie durch Erwärmen und Abkühlen schnell zwischen dem amorphen und kristallinen Zustand wechseln kann. Zusätzlich oder alternativ zur GST-Verbindung kann eine Vielzahl von anderen Verbindungen im Phasenwechselmaterial verwendet werden. Beispiele für andere Verbindungen umfassen Verbindungen aus zwei Elementen, wie beispielsweise GaSb, InSb, InSe, Sb2Te3 und GeTe, Verbindungen aus drei Elementen, wie beispielsweise GeSbTe, GaSeTe, InSbTe, SnSb2Te4 und InSbGe, oder Verbindungen aus vier Elementen, wie beispielsweise AgInSbTe, (GeSn)SbTe, GeSb(SeTe) und Te81Ge15Sb2S2, sind aber nicht darauf beschränkt.
  • Die Speicherzellen in einem PRAM werden als „Phasenwechselspeicherzellen" bezeichnet. Eine Phasenwechselspeicherzelle umfasst typischerweise eine obere Elektrode, eine Phasenwechselmaterialschicht, einen unteren Elektrodenkontakt, eine untere Elektrode und einen Zugriffstransistor. Ein Lesevorgang mit der Phasenwechselspeicherzelle wird durch Messen des Widerstandswertes der Phasenwechselmaterialschicht ausgeführt, und ein Programmiervorgang mit der Phasenwechselspeicherzelle wird durch Erwärmen und Abkühlen der Phasenwechselmaterialschicht ausgeführt, wie oben beschrieben.
  • Allgemein wird der Programmiervorgang durch Anlegen eines elektrischen „Setz-" oder „Rücksetz-"Impulses an die Elektrode ausgeführt, um die Phasenwechselmaterialschicht in den „Setz-" oder „Rücksetz-"Zustand zu wechseln. Die erforderliche Zeitspanne zum Programmieren des Datenwertes „0" in eine Speicherzelle entspricht typischerweise ungefähr der fünffachen Zeitspanne, die zum Programmieren des Datenwertes „1" in die Speicherzelle erforderlich ist. Die erforderliche Zeitspanne zum Programmieren des Datenwertes „0" kann beispielsweise ungefähr 600ns betragen, während die erforderliche Zeitspanne zum Programmieren des Datenwertes „1" ungefähr 120ns betragen kann.
  • Herkömmliche PRAM-Bauelemente können mehrere Eingabebits gleichzeitig empfangen, sind aber leider nicht in der Lage, die Bits gleichzeitig in entsprechende Speicherzellen zu programmieren. Ein PRAM kann beispielsweise 16 Eingaben über eine Mehrzahl von Pins empfangen, ist aber nicht in der Lage, gleichzeitig auf 16 Phasenwechselspeicherzellen zuzugreifen. Ein Grund für diesen Mangel besteht darin, dass, wenn ein Strom von 1 mA erforderlich ist, um eine Phasenwechselspeicherzelle zu programmieren, ein Strom von 16mA erforderlich wäre, um 16 Phasenwechselspeicherzellen gleichzeitig zu programmieren. Des Weiteren wäre, wenn der Wirkungsgrad einer Treiberschaltung 10% beträgt, die den Strom zur Verfügung stellt, tatsächlich ein Strom von 160mA erforderlich, um die 16 Speicherzellen gleichzeitig zu programmieren. Herkömmliche PRAM-Bauelemente sind jedoch im Allgemeinen nicht ausgerüstet, Ströme mit solch hohen Werten zur Verfügung zu stellen.
  • Da ein Programmiertreiber in einem PRAM-Bauelement nur einen begrenzten Stromwert zur Verfügung stellen kann, kann ein Programmiervorgang von mehreren Phasenwechselspeicherzellen in mehrere „Teilprogrammiervorgänge" aufgeteilt werden, für welche jeweils ein Bruchteil des für den Programmiervorgang der mehreren Phasenwechselspeicherzellen erforderlichen Gesamtstroms erforderlich ist. In jedem Teilprogrammiervorgang wird eine Untermenge (d.h. ein „Teil") von Speicherzellen aus einer größeren Gruppe programmiert. Eine Gruppe von sechzehn Phasenwechselspeicherzellen kann beispielsweise durch Aufteilen der sechzehn Phasenwechselspeicherzellen in acht Gruppen (d.h. Teilmengen) von je zwei Speicherzellen und gleichzeitiges Programmieren der zwei Speicherzellen in jeder Zweiergruppe in acht aufeinander folgenden Teilprogrammiervorgängen programmiert werden.
  • Um einen unnötigen Stromverbrauch und Programmierfehler zu vermeiden, kann das PRAM-Bauelement auch einen Verifizierungslesevorgang ausführen, um den Programmierstatus von jeder ausgewählten Speicherzelle zu verifizieren. Um den Verifizierungslesevorgang auszuführen, werden in die ausgewählten Speicherzellen zu programmierende Programmierdaten in einem temporären Speicherbereich wie einem Programmpuffer gespeichert. Dann werden die Programmierdaten in die ausgewählten Zellen programmiert. Dann werden die in den ausgewählten Speicherzellen gespeicherten Daten gelesen und mit den in dem temporären Speicherbereich gespeicherten Programmierdaten verglichen. Wo die im temporären Speicherbereich gespeicherten Daten von den in den ausgewählten Speicherzellen gespeicherten Daten verschieden sind, zeigt der Verifizierungslesevorgang einen Programmierfehler an. Ansonsten zeigt der Verifizierungslesevorgang einen Programmiererfolg an.
  • 1 zeigt ein konzeptionelles Zeitablaufdiagramm, das ein herkömmliches Verfahren zum Betreiben eines PRAM-Bauelements zeigt, welches Teilprogrammiervorgänge verwendet. Für Beschreibungszwecke wird angenommen, dass ein Programmiervorgang des PRAM-Bauelements unter Verwendung von 8 Teilprogrammiervorgängen 16 Datenbits in 16 ausgewählte Speicherzellen programmiert, die in acht Paare oder Gruppen aufgeteilt sind.
  • Bezugnehmend auf 1 werden Daten unter Verwendung einer Mehrzahl von Programmierschleifen (L=1 bis 11) in das PRAM-Bauelement programmiert. Bevor jede Programmierschleife beginnt, wird ein Verifizierungslesevorgang ausgeführt, um Speicherzellen unter den ausgewählten Speicherzellen zu detektieren, die nicht erfolgreich programmiert worden sind. Anschließend wird ein Teilprogrammiervorgang mit Gruppen der Speicherzellen, die als „durchgefallene Gruppen" bezeichnet sind, ausgeführt, wo wenigstens eine Speicherzelle nicht erfolgreich programmiert worden ist (individuelle Speicherzellen, die nicht erfolgreich programmiert worden sind, werden übrigens als „durchgefallene Zellen" bezeichnet). Im Beispiel gemäß 1 korrespondieren acht Teilprogrammiervorgänge 1 bis 8 mit acht entsprechenden Zellengruppen.
  • In einem Programmiervorgang beginnen alle acht Speicherzellengruppen allgemein als durchgefallene Gruppen. Entsprechend wird in der ersten Programmierschleife (L=1) typischerweise ein Teilprogrammiervorgang für jede der acht Gruppen ausgeführt. In der zweiten Programmierschleife (L=2) wird unter der Annahme, dass die dritte und vierte Gruppe erfolgreich programmiert worden sind, für alle acht Gruppen außer für die dritte und vierte Gruppe, ein Teilprogrammiervorgang ausgeführt. Ähnlich werden in verbleibenden Programmierschleifen weniger Gruppen programmiert, da mehr Gruppen erfolgreich programmiert wurden.
  • Leider berücksichtigen herkömmliche Prozesse, wie der oben beschriebene Prozess, nicht die Tatsache, dass zur Programmierung des Datenwerts „0" und des Datenwerts „1" in ausgewählte Speicherzellen un terschiedliche Programmierzeiten erforderlich sind. Daraus resultiert, dass die erforderliche Dauer für jeden Teilprogrammiervorgang so lang wie die Dauer eines Setzimpulses ist, der zur Programmierung des Datenwerts „0" verwendet wird, auch wenn einige mit dem Teilprogrammiervorgang korrespondierende Speicherzellen nur mit dem Datenwert „1" zu programmieren sind. Entsprechend kann die zur Durchführung des Programmiervorgangs erforderliche Zeitspanne unnötig lang sein.
  • Als technisches Problem liegt der Erfindung die Bereitstellung eines nichtflüchtigen Speicherbauelements und eines Verfahrens zur Durchführung eines Programmiervorgangs in einem solchen nichtflüchtigen Speicherbauelement zugrunde, die in der Lage sind, die Unzulänglichkeiten des oben genannten Standes der Technik zu reduzieren oder zu vermeiden, und die insbesondere die Durchführung von Programmiervorgängen in einer vergleichsweise kurzen Zeitspanne ermöglichen.
  • Die Erfindung löst dieses Problem durch die Bereitstellung eines Programmierverfahrens mit den Merkmalen des Patentanspruchs 1 und eines nichtflüchtigen Speicherbauelements mit den Merkmalen des Patentanspruchs 6 oder 9. Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • Ausführungsformen der Erfindung stellen nichtflüchtige Speicherbauelemente und zugehörige Verfahren zur Verfügung, welche in der Lage sind, die erforderliche Zeitspanne zur Durchführung von Programmiervorgängen zu reduzieren.
  • Vorteilhafte, nachfolgend beschriebene Ausführungsformen der Erfindung sowie das zu deren besserem Verständnis oben erläuterte, herkömmliche Ausführungsbeispiel sind in den Zeichnungen dargestellt. Es zeigen:
  • 1 ein konzeptionelles Zeitablaufdiagramm eines herkömmlichen Verfahrens zum Betreiben eines PRAM-Bauelements, welches Teilprogrammiervorgänge und Verifizierungslesevorgänge verwendet,
  • 2 ein konzeptionelles Zeitablaufdiagramm eines Verfahrens zur Programmierung eines PRAM-Bauelements gemäß einer Ausführungsform der Erfindung,
  • 3 ein konzeptionelles Zeitablaufdiagramm eines Verfahrens zur Programmierung eines PRAM-Bauelements gemäß einer anderen Ausführungsform der Erfindung,
  • 4A und 4B konzeptionelle Zeitablaufdiagramme einer Technik zum Einstellen des Zeitablaufs zur Ausführung von Teilprogrammiervorgängen gemäß einer Ausführungsform der Erfindung,
  • 5A und 5B konzeptionelle Zeitablaufdiagramme einer Technik zum Einstellen des Zeitablaufs zur Ausführung von Teilprogrammiervorgängen gemäß einer anderen Ausführungsform der Erfindung,
  • 6 ein konzeptionelles Zeitablaufdiagramm einer Technik zum Einstellen des Zeitablaufs zur Ausführung von Teilprogrammiervorgängen gemäß noch einer weiteren Ausführungsform der Erfindung,
  • 7 ein Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs in einem PRAM-Bauelement gemäß einer Ausführungsform der Erfindung,
  • 8 ein Blockdiagramm eines PRAM-Bauelements gemäß einer Ausführungsform der Erfindung,
  • 9 ein Blockdiagramm einer Ausführungsform einer Programmierverifizierungsbestimmungseinheit im PRAM-Bauelement gemäß 8,
  • 10 ein Zeitablaufdiagramm eines Beispiels eines Setzimpulssteuersignals, das von einer Programmierimpulserzeugungseinheit im PRAM-Bauelement gemäß 8 ausgeben wird, und
  • 11 ein Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs in einem PRAM-Bauelement gemäß einer anderen Ausführungsform der Erfindung.
  • Nachfolgend werden unter Bezugnahme auf die 2 bis 11 beispielhafte Ausführungsformen der Erfindung beschrieben. Obwohl ein PRAM-Bauelement verwendet wird, um verschiedene Ausführungsformen der Erfindung zu zeigen, kann die Erfindung selbstverständlich in einer Vielzahl von verschiedenen Formen ausgeführt werden. Das PRAM-Bauelement kann beispielsweise durch andere Typen von nichtflüchtigen Speicherbauelementen, wie z.B. RRAM, FRAM und MRAM, ersetzt werden, die Widerstandsmaterialien verwenden.
  • Die 2 und 3 zeigen konzeptionelle Zeitablaufdiagramme von Verfahren zur Programmierung eines PRAM-Bauelements gemäß ausgewählter Ausführungsformen der Erfindung. Bezugnehmend auf die 2 und 3 werden ausgewählte, mit dem gleichen Zustand zu programmierende Speicherzellen zur gleichen Zeit programmiert. Ausgewählte, mit dem Datenwert „0" zu programmierende Speicherzellen können beispielsweise zuerst programmiert werden, gefolgt von ausgewählten, mit dem Datenwert „1" zu programmierenden Speicherzellen. Ähnlich können aus gewählte Speicherzellen, die in der Lage sind, mehr als ein Bit zu speichern, in einer Reihenfolge basierend auf ihrem beabsichtigten Zustand programmiert werden, z.B. können Daten in der Reihenfolge Datenwert „0", Datenwert „1", Datenwert „2" usw. programmiert werden.
  • In ausgewählten Ausführungsformen der Erfindung umfassen Programmierverfahren für PRAM-Bauelemente Teilprogrammiervorgänge und Verifizierungslesevorgänge. Die Erfindung ist jedoch nicht auf die Verwendung dieser Arten von Vorgängen beschränkt. Teilprogrammiervorgänge können beispielsweise nicht von Verifizierungslesevorgängen begleitet sein und umgekehrt, oder Programmiervorgänge können entweder ohne Teilprogrammiervorgänge oder ohne Verifizierungslesevorgänge ausgeführt werden.
  • Bezugnehmend auf 2 werden in einem erfindungsgemäßen PRAM-Bauelement während eines Programmierintervalls RW Datenwerte „1" in ausgewählte Speicherzellen programmiert, und während eines Programmierintervalls SW werden Datenwerte „0" in eine Teilmenge der ausgewählten Speicherzellen programmiert.
  • Das Programmierintervall RW erstreckt sich über elf Programmierschleifen RL=1 bis 11, und das Programmierintervall SW erstreckt sich über zwei Programmierschleifen SL=1 und 2. Vor jeder Programmierschleife wird ein Verifizierungslesevorgang VERIFY_READ ausgeführt. Während jeder Programmierschleife wird ein Teilprogrammiervorgang nur mit Gruppen von Speicherzellen ausgeführt, die wenigstens eine Speicherzelle aufweisen, die nicht erfolgreich programmiert wurde, d.h. mit „durchgefallenen Gruppen".
  • Aus Beschreibungsgründen sei angenommen, dass sechzehn Datenbits über sechzehn Eingabe/Ausgabe(I/O)-Pins gleichzeitig in das PRAM-Bauelement eingegeben werden. Die sechzehn Bits werden dann in acht Gruppen zu zwei Zellen in sechzehn ausgewählte Phasenwechselspeicherzellen programmiert, wie beispielsweise in der nachfolgenden Tabelle 1 dargestellt ist. Im Beispiel der Tabelle 1 besteht eine erste Gruppe aus Speicherzellen, die mit einem nullten und einem achten IO-Pin IO0 und IO8 korrespondieren, eine zweite Gruppe besteht aus Speicherzellen, die mit einem ersten und einem neunten IO-Pin IO1 und IO9 korrespondieren usw. Die Daten werden gleichzeitig in die beiden Speicherzellen einer jeden Gruppe programmiert, während Speicherzellen in verschiedenen Gruppen zu verschiedenen Zeitpunkten programmiert werden.
  • Aus Beschreibungsgründen sei angenommen, dass die in die ausgewählten Speicherzellen zu programmierenden Daten Werte aufweisen, die in Tabelle 1 durch den Begriff „Programmierdaten" bezeichnet sind. Insbesondere sind die Datenwerte „1" und „0" in die Speicherzellen zu programmieren, die mit den IO-Pins 0 bzw. 8 korrespondieren, die Datenwerte „1" und „1" sind in die Speicherzellen zu programmieren, die mit den IO-Pins 2 bzw. 10 korrespondieren usw. Tabelle 2 zeigt Gruppen von Speicherzellen, die während des Programmierintervalls RW und des Programmierintervalls SW zu programmieren sind. Wie aus Tabelle 2 ersichtlich ist, werden alle Speicherzellengruppen während des Programmierintervalls RW programmiert, und Speicherzellengruppen, in denen wenigstens eine Speicherzelle mit dem Datenwert „0" zu programmieren ist, werden während des Programmierintervalls SW programmiert. Tabelle 1
    IO-Pin {0,8} {1,9} {2,10} {3,11} {4,12} {5,13} {6,14} {7,15}
    Programmierdaten 1,0 1,0 1,1 1,1 1,0 1,0 1,1 1,1
    Gruppe 1 2 3 4 5 6 7 8
    Tabelle 2
    Programmierintervall RW Programmierintervall SW
    Gruppe 1, 2, 3, 4, 5, 6, 7, 8 1, 2, 5, 6
  • Ein erster Verifizierungslesevorgang wird vor der ersten Programmierschleife (RL=1) im Programmierintervall RW ausgeführt. Dann werden die Speicherzellen in allen acht Gruppen in acht korrespondierenden Teilprogrammiervorgängen mit dem Datenwert „1" programmiert. Anschließend wird ein Verifizierungslesevorgang ausgeführt, um Speicherzellen zu detektieren, die erfolgreich/nicht erfolgreich programmiert worden sind. Dann werden Speicherzellen in „durchgefallenen Gruppen" basierend auf der Detektierung nochmals mit dem Datenwert „1" programmiert. In der zweiten Programmierschleife (RL=2) des Programmierintervalls RW werden beispielsweise die Gruppen 1, 2 und 5 bis 8 mit dem Datenwert „1" programmiert. Der Prozess der Ausführung aufeinanderfolgender Verifizierungslesevorgänge und Programmierschleifen dauert bis zur elften Programmierschleife (RL=11) des Programmierintervalls RW an, unter der Annahme, dass bis zur elften Programmierschleife nicht alle der ausgewählten Speicherzellen erfolgreich mit dem Datenwert „1" programmiert sind. Nach der elften Programmierschleife sind unter der ersten bis achten Gruppe keine durchgefallenen Gruppen mehr vorhanden. Entsprechend wird ein Rücksetzpassierflagsignal RE-SET_PASS_FLAG aktiviert, welches anzeigt, dass der Datenwert „1" in allen acht Gruppen erfolgreich programmiert ist.
  • Nachfolgend wird während des Programmierintervalls SW der Datenwert „0" in eine Teilmenge der ausgewählten Speicherzellen programmiert. Insbesondere wird zu Beginn des Programmierintervalls SW ein Verifizierungslesevorgang ausgeführt, um zu detektieren, ob jede Speicherzelle der Teilmenge der ausgewählten Speicherzellen erfolgreich mit dem Datenwert „0" programmiert worden ist. Da die erste, zweite, fünfte und sechste Gruppe anfänglich Speicherzellen umfassen, die nicht er folgreich mit dem Datenwert „0" programmiert worden sind, werden korrespondierend mit diesen Gruppen in der ersten Programmierschleife (SL=1) des Programmierintervalls SW Teilprogrammiervorgänge ausgeführt. Dann werden in der zweiten Programmierschleife (SL=2) des Programmierintervalls SW Teilprogrammiervorgänge ausgeführt, die mit der ersten und zweiten Gruppe korrespondieren, nachdem detektiert wurde, dass alle Speicherzellen in verbliebenen Gruppen erfolgreich programmiert sind.
  • Nach der zweiten Programmierschleife des Programmierintervalls SW sind alle Speicherzellen der Teilmenge der ausgewählten Speicherzellen erfolgreich mit dem Datenwert „0" programmiert. Entsprechend wird ein Setzpassierflagsignal SET_PASS_FLAG aktiviert, welches anzeigt, dass der Datenwert „0" in die Teilmenge der ausgewählten Speicherzellen erfolgreich programmiert ist. Zusätzlich wird ein Passierflagsignal PASS_FLAG aktiviert, welches anzeigt, dass alle der ausgewählten Speicherzellen erfolgreich programmiert sind.
  • Der in 2 dargestellte Programmiervorgang kann wie folgt grob begrifflich gefasst werden. Ausgewählte Speicherzellen werden während eines ersten Programmierintervalls, das eine erste Anzahl von Teilprogrammiervorgängen aufweist, mit Daten programmiert, die einen ersten Zustand aufweisen. Nachfolgend wird eine Teilmenge der ausgewählten Speicherzellen während eines zweiten Programmierintervalls, das eine zweite Anzahl von Teilprogrammiervorgängen aufweist, mit Daten programmiert, die einen zweiten Zustand aufweisen. Da die Programmierung von Phasenwechselspeicherzellen in verschiedene Zustände verschiedene Zeitdauern erfordert, tendiert der Programmiervorgang gemäß 2 im Vergleich mit herkömmlichen Programmiervorgängen dazu, weniger Zeit zu beanspruchen.
  • Bezugnehmend auf 3 werden in einem PRAM-Bauelement gemäß einer anderen Ausführungsform der Erfindung während des Programmierintervalls RW ausgewählte Speicherzellen mit dem Datenwert „1" programmiert, und eine Teilmenge der ausgewählten Speicherzellen wird während des Programmierintervalls SW mit dem Datenwert „0" programmiert. Bei der Ausführungsform gemäß 3 wird die Dauer von jeder Programmierschleife RL im Programmierintervall RW und die Dauer von jeder Programmierschleife SL im Programmierintervall SW entsprechend der Anzahl von innerhalb einer jeden Schleife auszuführenden Teilprogrammiervorgängen eingestellt. Ein Programmiervorgang, der eine solche Einstelleigenschaft oder Einstellfähigkeit aufweist, wird als „adaptiver Programmiervorgang" bezeichnet.
  • Das Verfahren gemäß 3 ist ähnlich dem Verfahren gemäß 2, daher wird zur Vermeidung von Wiederholungen auf eine detaillierte Beschreibung von wenigstens einigen gemeinsamen Eigenschaften der 2 und 3 verzichtet. So führt das Verfahren gemäß 3 wie das Verfahren gemäß 2 beispielsweise acht Teilprogrammiervorgänge in der ersten Programmierschleife des Programmierintervalls RW aus und führt weniger Teilprogrammiervorgänge in nachfolgenden Programmierschleifen des Programmierintervalls RW aus. Danach werden in der ersten Programmierschleife des Programmierintervalls SW Teilprogrammiervorgänge mit Gruppen von Speicherzellen ausgeführt, die mit dem Datenwert „0" programmiert werden sollen, und in der zweiten Programmierschleife des Programmierintervalls SW werden Teilprogrammiervorgänge mit Gruppen ausgeführt, die verbleibende Speicherzellen enthalten, die mit dem Datenwert „0" programmiert werden sollen.
  • Im Gegensatz zum Verfahren gemäß 2 ist jedoch aus 3 ersichtlich, dass die Dauer der Programmierschleifen im Programmierintervall RW und im Programmierintervall SW dazu tendiert, monoton abzunehmen. Diese Einstellungen werden gemacht, um die erforderliche Ge samtdauer zum Abschließen der Teilprogrammiervorgänge innerhalb jeder Programmierschleife zu reduzieren. Um das Verfahren gemäß 3 zu implementieren wird der Zeitablauf der Teilprogrammiervorgänge durch Zeitverschiebung oder allgemeiner durch Neuorganisierung oder Neuanordnung des Timings eingestellt. Im Verfahren gemäß 3 sind während der zehnten Programmierschleife des Programmierintervalls RW die Teilprogrammiervorgänge für die fünfte und sechste Gruppe von Speicherzellen beispielsweise zeitlich verschoben, so dass eine in der zehnten Programmierschleife des Programmierintervalls RW in 2 vorhandene Zeitlücke entfernt ist.
  • Die 4 bis 6 zeigen konzeptionelle Diagramme, die verschiedene Techniken darstellen, welche zum Implementieren der beispielsweise in 3 dargestellten Zeitverschiebung verwendet werden können. Für Beschreibungszwecke wird angenommen, dass die Zeitverschiebung gemäß den 4 bis 6 bewirken, dass Teilprogrammiervorgänge in verschiedenen „Zeitschlitzen" ausgeführt werden. In der in den 4A und 4B dargestellten Technik werden beispielsweise während einer ersten Programmierschleife in den entsprechenden ersten bis achten Zeitschlitzen die ersten bis achten Zellengruppen programmiert. Dann werden während einer zweiten Programmierschleife die fünften bis achten Zellengruppen „verschoben", so dass sie während den entsprechenden dritten bis sechsten Zeitschlitzen programmiert werden.
  • In den 4A und 4B repräsentiert jeder Kasten eine Zellgruppe, die mit ausgewählten Speicherzellen korrespondiert, die durch Zahlen in Klammern repräsentiert werden. Durchgezogene Linien repräsentieren potentielle Zeitverschiebungen zwischen aufeinanderfolgenden Programmschleifen, wobei das tatsächliche Auftreten von Zeitverschiebungen jedoch davon abhängig ist, ob Zellengruppen während jeder Programmierschleife erfolgreich programmiert werden. Bei dem Beispiel gemäß den 4A und 4B werden beispielsweise die dritte und vierte Zellen gruppe während der ersten Programmierschleife erfolgreich programmiert, während die verbleibenden Zellengruppen nicht erfolgreich programmiert werden. Entsprechend wird das Timing der fünften bis achten Zellengruppe für die zweite Programmierschleife verschoben.
  • Die 5A und 6 sind ähnlich zu 4A, außer dass in den 5A und 6 angenommen wird, dass jede Zellengruppe eine größere Anzahl von Speicherzellen aufweist. In 5A wird beispielsweise angenommen, dass jede Zellengruppe vier Speicherzellen aufweist, die gleichzeitig zu programmieren sind, und in 6 wird angenommen, dass jede Zellengruppe acht Speicherzellen aufweist, die gleichzeitig zu programmieren sind.
  • 5B zeigt Beispiele von verschiedenen Fällen, die in einer bestimmten Programmierschleife eines PRAM auftreten können, das wie in 5A Gruppen von vier Speicherzellen verwendet. Bezugnehmend auf 5B werden in einem Fall, der mit „CASE1" bezeichnet ist, während einer ersten Programmierschleife die erste und zweite Zellengruppe nicht erfolgreich programmiert, aber die dritte und vierte Zellengruppe werden erfolgreich programmiert. Entsprechend führt eine zweite Programmierschleife Teilprogrammiervorgänge mit der ersten und zweiten Zellengruppe, aber nicht mit der dritten und vierten Zellengruppe durch, wie in 5B unten dargestellt ist. Obwohl das Diagramm gemäß 5B keinen erschöpfenden Satz von allen möglichen Fällen zeigt, sind einige andere mögliche Fälle als Beispiele dargestellt, wenn auch ohne begleitende Signalverlaufsdiagramme.
  • Durch das Programmieren des Datenwerts „1" und des Datenwerts „0" in getrennten Programmierintervallen und durch das Einstellen der Dauer einer jeden Programmierschleife gemäß der Anzahl von während der Schleife auszuführenden Teilprogrammiervorgängen, können die in den 3 bis 6 dargestellten Verfahren den erforderlichen Zeitbedarf zur Ausführung von Programmiervorgängen deutlich reduzieren.
  • Um die Zeitreduzierung darzustellen, wird die Dauer eines Teilprogrammiervorgangs zur Programmierung des Datenwerts „1" durch „T" repräsentiert, und die Dauer eines Teilprogrammiervorgangs zur Programmierung des Datenwerts „0" wird durch „5T" repräsentiert, wobei angenommen wird, dass die erforderliche Zeitdauer zum Programmieren des Datenwerts „0" ungefähr fünfmal länger als die erforderliche Zeitdauer zum Programmieren des Datenwerts „1" ist. Unter dieser Voraussetzung ist ein Vergleich der erforderlichen Zeitdauern zur Ausführung von Programmiervorgängen unter Verwendung der Verfahren gemäß den 1 bis 3 in der nachfolgenden Tabelle 3 dargestellt. In Tabelle 3 wird angenommen, dass während jeder Programmierschleife acht Zellengruppen in acht verschiedenen Teilprogrammiervorgängen zu programmieren sind. Tabelle 3
    Klassifikation Verfahren gemäß Fig. 1 Verfahren gemäß Fig. 2 Verfahren gemäß Fig. 3
    Programmierzeit (8 × 5T) = 40T Datenwert „1": (8 × T) = 8T Datenwert „0": (8 × 5T) = 40T Datenwert „1": ≤ (8 × T) = 8T Datenwert „0": ≤ (8 × 5T) = 40T
  • Wie aus Tabelle 3 ersichtlich ist, entspricht die Gesamtdauer der Teilprogrammiervorgänge in jeder Programmierschleife im Verfahren gemäß 1 immer 40T. Die Gesamtdauer der Teilprogrammiervorgänge in jeder Programmierschleife im Verfahren gemäß 2 ist in Abhängigkeit davon, ob der Datenwert „1" oder der Datenwert „0" zu programmieren ist, gleich 8T oder 40T. Die Gesamtdauer der Teilprogrammiervorgänge in jeder Programmierschleife im Verfahren gemäß 3 ist in Abhängigkeit davon, ob der Datenwert „1" oder der Datenwert „0" zu programmieren ist, höchstens gleich 8T oder 40T. Entsprechend tendieren die Verfahren gemäß den 2 und 3 dazu, weniger Zeit als das Verfahren gemäß 1 zu brauchen, wenn die Anzahl von Programmierschleifen, die zur Programmierung des Datenwerts „0" erforderlich sind, im Vergleich mit der Anzahl von Programmierschleifen relativ klein ist, die zur Programmierung des Datenwerts „1" erforderlich sind.
  • 7 zeigt ein Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs in einem PRAM-Bauelement gemäß einer Ausführungsform der Erfindung. Insbesondere zeigt das in 7 dargestellte Flussdiagramm eine Möglichkeit zur Implementierung von Verifizierungslesevorgängen für die in den 2 und 3 dargestellten Verfahren. In der nachfolgenden Beschreibung sind beispielhafte Verfahrensschritte in Klammern (SXX) bezeichnet. Bezugnehmend auf 7 wird zuerst ein Teilprogrammiermodus gesetzt (S10). Der Teilprogrammiermodus bestimmt die Anzahl von Speicherzellen, die gleichzeitig zu programmieren sind. Ein Satz von sechzehn ausgewählten Speicherzellen kann beispielsweise in acht Gruppen von zwei Speicherzellen (x2 Teilprogrammiermodus), in vier Gruppen von vier Speicherzellen (x4 Teilprogrammiermodus), in zwei Gruppen von acht Speicherzellen (x8 Teilprogrammiermodus) oder in eine Gruppe von sechzehn Speicherzellen (x16 Teilprogrammiermodus) aufgeteilt werden.
  • Anschließend wird ein Verifizierungslesevorgang ausgeführt, um zu bestimmen, ob die ausgewählten Speicherzellen erfolgreich programmiert worden sind (S20). Während des Verifizierungslesevorgangs werden Verifikationsdaten VDATA aus den ausgewählten Speicherzellen gelesen und die Verifikationsdaten VDATA werden mit Programmierdaten WDATA verglichen, welche gewünschte logische Zustände der ausgewählten Speicherzellen repräsentieren. Basierend auf dem Vergleich bestimmt das Verfahren, ob alle Zellengruppen, die Speicherzellen auf weisen, die mit dem Datenwert „1" zu programmieren sind, erfolgreich programmiert worden sind (S30). Wenn ja (S30 = Ja), dann springt das Verfahren zu einem Schritt S60. Ansonsten (S30 = Nein) führt das Verfahren eine Programmierschleife aus, die Teilprogrammiervorgänge zum Programmieren des Datenwerts „1" für alle der „durchgefallenen Gruppen" unter den ausgewählten Speicherzellen durchführt (S40). Nach Schritt S40 bestimmt das Verfahren, ob die Programmierschleife eine letzte Programmierschleife für ein erstes Programmierintervall war (S50). Wenn ja (S50 = Ja), dann fährt das Verfahren mit Schritt S60 fort. Ansonsten (S50 = Nein) kehrt das Verfahren zum Schritt S20 zurück und wiederholt den Schritt S20 und nachfolgende Schritte.
  • Im Schritt S60 führt das Verfahren einen Verifizierungslesevorgang aus, um zu bestimmen, ob die ausgewählten Speicherzellen erfolgreich programmiert worden sind. Während des Verifizierungslesevorgangs werden Verifikationsdaten VDATA aus den ausgewählten Speicherzellen gelesen und die Verifikationsdaten VDATA werden mit den Programmierdaten WDATA verglichen, welche gewünschte logische Zustände der ausgewählten Speicherzellen repräsentieren. Basierend auf dem Vergleich bestimmt das Verfahren, ob alle Zellengruppen, die Speicherzellen aufweisen, die mit dem Datenwert „0" zu programmieren sind, erfolgreich worden programmiert sind (S70). Wenn ja (S70 = Ja), dann wird das Verfahren mit einem „Bestanden-Zustand" abgeschlossen (S92). Ansonsten (S70 = Nein) führt das Verfahren eine Programmierschleife aus, die für alle mit dem Datenwert „0" zu programmierenden Speicherzellen der „durchgefallenen Gruppen" unter den ausgewählten Speicherzellen einen Teilprogrammiervorgang zum Programmieren des Datenwerts „0" durchführt (S80). Nach Schritt S80 bestimmt das Verfahren, ob die Programmierschleife eine letzte Programmierschleife für ein zweites Programmierintervall war (S90). Wenn ja (S90 = Ja), dann schließt das Verfahren mit einem „Durchgefallen-Zustand" ab (S94). Ansonsten (S90 = Nein) kehrt das Verfahren zum Schritt S60 zurück und wiederholt den Schritt S60 und die nachfolgenden Schritte.
  • Wenn das Verfahren gemäß 3 verwendet wird, werden Teilprogrammiervorgänge für den Schritt S40 und den Schritt S80 zeitlich verschoben, wo es möglich ist, um die Dauer für jede Programmierschleife zu reduzieren.
  • 8 zeigt ein Blockdiagramm eines PRAM-Bauelements gemäß einer Ausführungsform der Erfindung. Aus Beschreibungsgründen wird angenommen, dass das PRAM-Bauelement gemäß 8 dafür ausgeführt ist, eines der Verfahren gemäß 2 oder 3 oder das Flussdiagramm gemäß 7 zu implementieren. Bezugnehmend auf 8 umfasst das PRAM-Bauelement ein Speicherzellenfeld 110, einen Zeilendecoder 124, einen Spaltendecoder 126, einen Adressenpuffer 128 und eine Programmierschaltung 130.
  • Das Speicherzellenfeld 110 umfasst eine Mehrzahl von Phasenwechselspeicherzellen, die in eine Mehrzahl von Zellengruppen aufgeteilt werden können. Obwohl in den Zeichnungen nicht dargestellt, umfasst jede Phasenwechselspeicherzelle ein Phasenwechselwiderstandsmaterial und ein Zugriffselement, wie einen Transistor oder eine Diode. Das Zugriffselement wird verwendet, um die Stromversorgung für das Phasenwechselwiderstandsmaterial während Programmier-, Lese- und Löschvorgängen zu steuern.
  • Der Zeilendecoder 124 wird mit einer Zeilenadresse XA versorgt, die vom Adressenpuffer 128 ausgegeben wird, decodiert die Zeilenadresse XA und wählt eine Zeile der Mehrzahl von zu programmierenden Phasenwechselspeicherzellen aus. Der Spaltendecoder 126 wird mit einer Spaltenadresse YA versorgt, die vom Adressenpuffer 128 ausgegeben wird, decodiert die Spaltenadresse YA und wählt basierend auf der de codierten Spaltenadresse Spalten der Mehrzahl von zu programmierenden Phasenwechselspeicherzellen aus.
  • Die Programmierschaltung 130 führt einen adaptiven Verifizierungslesevorgang mit der Mehrzahl von ausgewählten Phasenwechselspeicherzellen aus. Insbesondere vergleicht die Programmierschaltung 130 Verifikationsdaten VDATA, die aus den ausgewählten Phasenwechselspeicherzellen ausgelesen werden, mit Programmierdaten WDATA, die in die ausgewählten Phasenwechselspeicherzellen zu programmieren sind, identifiziert eine Mehrzahl von „durchgefallenen" Phasenwechselspeicherzellen, deren Verifikationsdaten VDATA und Programmierdaten WDATA sich voneinander unterscheiden, programmiert Daten in die durchgefallenen Phasenwechselspeicherzellen, wobei die Daten einen zu programmierenden ersten logischen Zustand (z.B. den Datenwert „1") aufweisen, und programmiert Daten in die durchgefallenen Phasenwechselspeicherzellen, wobei die Daten einen zu programmierenden zweiten logischen Zustand (z.B. den Datenwert „0") aufweisen.
  • Die Programmierschaltung 130 umfasst eine Vergleichseinheit 140, einen Verifizierungsabtastverstärker 142, einen Dateneingabepuffer 144, eine Statusflagsignalerzeugungseinheit 146, eine Programmierverifizierungsbestimmungseinheit 150, eine Programmierimpulserzeugungseinheit 160, einen Programmiertreiber 170, eine Steuereinheit 180, einen Befehlspuffer 182 und eine Modusauswahleinheit 190.
  • Die Statusflagsignalerzeugungseinheit 146 empfängt die Programmierdaten WDATA vom Dateneingabepuffer 144 und erzeugt ein Statusflagsignal STATUS_FLAG, das eine Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche Programmierdaten eines bestimmten logischen Zustands aus der Mehrzahl von Programmierdaten WDATA zu programmieren sind. Hierbei können die Programmierdaten des bestimmten logischen Zustandes Programmierdaten mit einem ersten logischen Zustand (z.B. dem Datenwert „1") oder Programmierdaten mit einem zweiten logischen Zustand (z.B. dem Datenwert „0") sein. In diesem Fall empfängt die Statusflagsignalerzeugungseinheit 146 ein Programmiersteuersignal RESET/SET_VERIFY von der Steuereinheit 180 und erzeugt ein Statusflagsignal, das eine Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche Programmierdaten mit dem ersten logischen Zustand zu programmieren sind, oder erzeugt ein Statusflagsignal, das eine Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche Programmierdaten mit dem zweiten logischen Zustand zu programmieren sind. Typischerweise stellt die Statusflagsignalerzeugungseinheit 146 zuerst ein Statusflagsignal zur Verfügung, das eine Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche Programmierdaten mit dem ersten logischen Zustand zu programmieren sind, und stellt dann ein Statusflagsignal zur Verfügung, das eine Mehrzahl von Phasenwechselspeicherzellen anzeigt, in welche Programmierdaten mit dem zweiten logischen Zustand zu programmieren sind.
  • Die Vergleichseinheit 140 vergleicht die durch den Verifizierungsabtastverstärker 142 aus der Mehrzahl von Phasenwechselspeicherzellen gelesenen Verifikationsdaten VDATA mit den Programmierdaten WDATA, die vom Dateneingabepuffer 144 eingegeben werden, und gibt korrespondierende Vergleichssignale PASS ab. Die Vergleichssignale PASS zeigen eine Mehrzahl von verschiedenen durchgefallenen Phasenwechselspeicherzellen unter „k" Phasenwechselspeicherzellen an, deren Verifikationsdaten VDATA und Programmierdaten WDATA sich voneinander unterscheiden. Zudem empfängt die Vergleichseinheit 140 die Verifikationsdaten VDATA, die Programmierdaten WDATA und das Statusflagsignal STATUS_FLAG und gibt ein Bestandenflagsignal PASS_FLAG, ein Rücksetzbestandenflagsignal RESET_PASS_FLAG und ein Setzbestandenflagsignal SET_PASS_FLAG an die Steuereinheit 180 aus. Wo die Verifikationsdaten VDATA und die Programmierdaten WDATA gleich sind, nimmt das Bestandenflagsignal PASS_FLAG einen ersten logischen Zustand an (z.B. einen hohen logischen Zustand) und wo die Verifikationsdaten VDATA und die Programmierdaten WDATA voneinander verschieden sind, nimmt das Bestandenflagsignal PASS_FLAG einen zweiten logischen Zustand an (z.B. einen niedrigen logischen Zustand).
  • Des Weiteren nimmt das Rücksetzbestandenflagsignal RESET_PASS_FLAG den ersten logischen Zustand an, wenn alle Phasenwechselspeicherzellen bestanden haben, in die Programmierdaten mit dem ersten logischen Zustand (z.B. mit dem Datenwert „1") zu programmieren sind, und wenn nicht alle Phasenwechselspeicherzellen bestanden haben, in die Programmierdaten mit dem ersten logischen Zustand zu programmieren sind, nimmt das Rücksetzbestandenflagsignal RESET_PASS_FLAG den zweiten logischen Zustand an. Des Weiteren nimmt das Setzbestandenflagsignal SET_PASS_FLAG den ersten logischen Zustand an, wenn alle Phasenwechselspeicherzellen bestanden haben, in die Programmierdaten mit dem zweiten logischen Zustand zu programmieren sind, und wenn nicht alle Phasenwechselspeicherzellen bestanden haben, in die Programmierdaten mit dem zweiten logischen Zustand zu programmieren sind, nimmt das Setzbestandenflagsignal SET_PASS_FLAG den zweiten logischen Zustand an.
  • Die Programmierverifizierungsbestimmungseinheit 150 empfängt das Vergleichssignal PASS, das Statusflagsignal STATUS_FLAG und ein Modusauswahlsignal WT_xX und erzeugt ein Bestimmungssignal DG zur Bestimmung einer Mehrzahl von Teilprogrammiervorgängen, so dass zu programmierende Daten in durchgefallenen Phasenwechselspeicherzellen aus der Mehrzahl von Phasenwechselspeicherzellen programmiert werden, in welche Programmierdaten mit einem bestimmten logischen Zustand zu programmieren sind. Die Programmierverifizierungsbestimmungseinheit 150 wird nachfolgend unter Bezugnahme auf 9 detaillierter beschrieben.
  • Die Programmierimpulserzeugungseinheit 160 empfängt das Bestimmungssignal DG, das Programmiersteuersignal RESET/SET_VERIFY und ein Programmierschleifensignal WT_LOOP und erzeugt ein Setzimpulssteuersignal PWD_SET und ein Rücksetzimpulssteuersignal PWD_RESET im Zeitablauf eines bestimmten Teilprogrammiervorgangs in einer vorbestimmten Programmierschleife.
  • Der Programmiertreiber 170 empfängt die Programmierdaten WDATA, das Setzimpulssteuersignal PWD_SET und das Rücksetzimpulssteuersignal PWD_RESET und erzeugt korrespondierend mit den Programmierdaten für eine durchgefallene Phasenwechselspeicherzelle einen Setzimpuls oder einen Rücksetzimpuls.
  • Die Steuereinheit 180 empfängt einen Programmierbefehl vom Befehlspuffer 182, steuert den Verifizierungsabtastverstärker 142, die Statusflagsignalerzeugungseinheit 146, den Programmiertreiber 170 und die Programmierimpulserzeugungseinheit 160 und führt einen adaptiven Programmierverifizierungsvorgang aus. Zudem empfängt die Steuereinheit 180 das Bestimmungssignal DG und stellt einen detaillierten Betrieb des Verifizierungsabtastverstärkers 142 oder dergleichen ein und empfängt das Flagsignal PASS_FLAG mit dem ersten logischen Zustand und stoppt den adaptiven Programmierverifizierungsvorgang. Des Weiteren empfängt die Steuereinheit 180 das Rücksetzbestandenflagsignal RESET_PASS_FLAG mit dem ersten logischen Zustand, um einen Teilprogrammiervorgang von Daten mit einem ersten Status aufzuheben, und empfängt das Setzbestandenflagsignal SET_PASS_FLAG mit dem ersten logischen Pegel, um einen Teilprogrammiervorgang von Daten mit dem zweiten logischen Zustand aufzuheben. Hierbei wird die Steuereinheit 180 mit dem Modusauswahlsignal WT_xX versorgt, das einen Teilprogrammiermodus aus der Modusauswahleinheit 190 auswählt, und steuert den Betrieb des Verifizierungsabtastverstärkers 142 oder ähnlichem gemäß dem ausgewählten Teilprogrammiermodus.
  • 9 zeigt ein Blockdiagramm einer Ausführungsform einer Programmierverifizierungsbestimmungseinheit 150 im PRAM-Bauelement gemäß 8. Um den Kontext herzustellen, sind auch die Modusauswahleinheit 190 und die Programmierimpulserzeugungseinheit 160 dargestellt.
  • Bezugnehmend auf 9 empfängt die Modusauswahleinheit 190 ein Modussteuersignal MODE und erzeugt eine Mehrzahl von Modusauswahlsignalen WT_x2, WT_x4, WT_x8 und WT_x16 zum Auswählen von Teilprogrammiermodi. Das mit dem ausgewählten Teilprogrammiermodus korrespondierende Modusauswahlsignal (z.B. WT_x2) nimmt den ersten logischen Zustand an, und die verbleibenden Modusauswahlsignale WT_x4, WT_x8 und WT_x16 nehmen den zweiten logischen Zustand an.
  • Die Programmierverifizierungsbestimmungseinheit 150 umfasst eine Mehrzahl von Durchlassgattern 151, 152, 153 und 154 und eine Bestimmungslogikeinheit 156.
  • Die Durchlassgatter 151, 152, 153 und 154 korrespondieren mit einer Mehrzahl von entsprechenden Modusauswahlsignalen. Die Durchlassgatter 151, 152, 153 und 154 werden mit den entsprechenden Modusauswahlsignalen WT_x2, WT_x4, WT_x8 und WT_x16 versorgt und übertragen selektiv ein Vergleichssignal PASS. Insbesondere gibt das mit dem Modusauswahlsignal WT_x2 mit dem ersten logischen Pegel versorgte Durchlassgatter 151 das Vergleichssignal PASS frei und überträgt es, und die Durchlassgatter 152, 153 und 154, die entsprechend mit den Modusauswahlsignalen WT_x4, WT_x8 und WT_x16 mit dem zweiten logischen Pegel versorgt werden, sind gesperrt.
  • Die Bestimmungslogikeinheit 156 empfängt das Vergleichssignal PASS, die Modusauswahlsignale WT_x2, WT_x4, WT_x8 und WT_x16 und das Statusflagsignal STATUS_FLAG, bestimmt aus einer Mehrzahl von Zellengruppen eine vorbestimmte Programmierreihenfolge der Mehrzahl von durchgefallenen Zellengruppen, die wenigstens eine durchgefallene Phasenwechselspeicherzelle aufweisen, in die Programmierdaten mit einem bestimmten logischen Pegel zu programmieren sind, und legt die Bestimmungssignale DG an, welche die Mehrzahl von Teilprogrammiervorgängen so bestimmen, dass die Daten entsprechend der bestimmten Programmierreihenfolge programmiert werden. Ein Beispiel eines Verfahrens zur Bestimmung der Programmierreihenfolge wurde unter Bezugnahme auf die 4A bis 6 beschrieben.
  • 10 zeigt ein Zeitablaufdiagramm eines Beispiels eines Setzimpulssteuersignals, das von der Programmierimpulserzeugungseinheit 160 ausgeben wird. Die Programmierimpulserzeugungseinheit 160 empfängt das Bestimmungssignal DG und das Programmierschleifensignal WT_LOOP und gibt das Setzimpulssteuersignal und das Rücksetzimpulssteuersignal aus. Zur Vereinfachung der Beschreibung zeigt 10 Setzimpulssteuersignale PWD_SET0 bis PWD_SET7, die erzeugt werden, wenn in der ersten Programmierschleife (SL=1) die Phasenwechselspeicherzellen der ersten, zweiten und fünften und sechsten Zellengruppe durchfallen, in welche der Datenwert „0" zu programmieren ist, wie im Zeitablaufdiagramm gemäß 3 dargestellt ist. Bezugnehmend auf 10 korrespondieren die ersten bis achten Setzimpulssteuersignale PWD_SET0 bis PWD_SET7 entsprechend mit den ersten bis achten Zellengruppen. Da die dritte, vierte, siebte und achte Zellengruppe bestanden haben, bleiben das dritte, vierte, siebte und achte Setzimpulssteuersignal PWD_SET2, PWD_SET3, PWD_SET6 und PWD_SET7 auf dem niedrigen logischen Zustand. Das erste, zweite und fünfte und sechste Setzimpulssteuersignal PWD_SET0, PWD_SET1, PWD_SET4 und PWD_SET5 werden nacheinander erzeugt, ohne einander zu überlappen.
  • 11 zeigt ein Flussdiagramm eines Verfahrens zur Ausführung eines Programmiervorgangs in einem PRAM-Bauelement gemäß einer anderen Ausführungsform der Erfindung. Die gleichen Schritte wie die in 7 dargestellten Schritte sind mit den gleichen Bezugszeichen bezeichnet, wobei zur Vermeidung von Wiederholungen auf eine detaillierte Beschreibung der bereits beschriebenen Schritte verzichtet wird. Bezugnehmend auf 11 wird zuerst ein Teilprogrammiermodus gesetzt (S10) und die Anzahl von Phasenwechselspeicherzellen bestimmt, die in jeder Zellengruppe enthalten sind. Dann wird ein Programmiermodus gesetzt (S12) und es wird der Datenwert „1"programmiert und dann der Datenwert „0" programmiert (S20 bis S94), oder es wird der Datenwert „0" und dann der Datenwert „1" programmiert (S220 bis S294).
  • Insbesondere folgt der Vorgang zum Schreiben des Datenwerts „0" nach dem Schreiben des Datenwerts „1" der Reihenfolge des Verifizierungslesevorgangs (S20) in der Bestimmung im Schritt S30, ob die Phasenwechselspeicherzelle, die mit dem Datenwert „1" zu programmieren ist, bestanden hat oder nicht, des Teilprogrammierungsvorgangs für den Datenwert „1" (S40), der Bestimmung im Schritt S50, ob die ausgeführte Programmierschleife mit der letzten Programmierschleife korrespondiert, des Verifizierungslesevorgangs (S60), der Bestimmung im Schritt S70, ob die Phasenwechselspeicherzelle, die mit dem Datenwert „0" zu programmieren ist, bestanden hat, des Teilprogrammiervorgangs des Datenwerts „0" (S80) und der Bestimmung im Schritt S90, ob die ausgeführte Programmierschleife mit der letzten Programmierschleife korrespondiert.
  • Zudem folgt der Vorgang des Programmierens des Datenwerts „1" nach dem Programmieren des Datenwerts „0" der Reihenfolge des Verifizierungslesevorgangs (S220), der Bestimmung im Schritt S230, ob die Phasenwechselspeicherzelle, die mit dem Datenwert „1" zu programmieren ist, bestanden hat oder nicht, des Teilprogrammierungsvorgangs zum Programmieren des Datenwerts „1" (S240), der Bestimmung im Schritt S250, ob die ausgeführte Programmierschleife mit der letzten Programmierschleife korrespondiert, des Verifizierungslesevorgangs (S260), der Bestimmung im Schritt S270, ob die Phasenwechselspeicherzelle, die mit dem Datenwert „0" zu programmieren ist, bestanden hat, des Teilprogrammiervorgangs zum Programmieren des Datenwerts „0" (S280) und der Bestimmung im Schritt S290, ob die ausgeführte Programmierschleife mit der letzten Programmierschleife korrespondiert.
  • Der Fachmann erkennt, dass PRAM-Bauelemente, die zur Implementierung des Verfahrens nach 11 geeignet sind, unter Verwendung eines beispielhaft in 8 dargestellten Aufbaus ausgeführt werden können. Eine getrennte Modusauswahleinheit kann zur Auswahl eines Programmiermodus zur Verfügung gestellt werden.
  • Entsprechend den ausgewählten Ausführungsformen der Erfindung kann der erforderliche Zeitbedarf zur Ausführung eines Programmiervorgangs in ausgewählten Speicherzellen eines nichtflüchtigen Speicherbauelements durch die Programmierung von ausgewählten Speicherzellen mit verschiedenen logischen Zuständen während verschiedener Programmierintervalle reduziert werden. Der erforderliche Zeitbedarf für die Programmiervorgänge kann durch Einstellen der Dauer von Programmierschleifen gemäß der Anzahl von während jeder Programmierschleife auszuführenden Teilprogrammiervorgängen weiter reduziert werden.

Claims (15)

  1. Verfahren zur Durchführung eines Programmiervorgangs in einem nichtflüchtigen Speicherbauelement mit einem Speicherzellenfeld, das eine Mehrzahl von nichtflüchtigen Speicherzellen aufweist, wobei das Verfahren folgende Schritte umfasst: – Programmieren von Daten, die einen ersten logischen Zustand aufweisen, in eine erste Gruppe von einer Mehrzahl von ausgewählten Speicherzellen, die aus der Mehrzahl von nichtflüchtigen Speicherzellen ausgewählt werden, während eines ersten Programmierintervalls des Programmiervorgangs, und – Programmieren von Daten, die einen zweiten logischen Zustand aufweisen, der sich vom ersten logischen Zustand unterscheidet, in eine zweite Gruppe der ausgewählten Speicherzellen während eines zweiten Programmierintervalls des Programmiervorgangs nach dem ersten Programmierintervall.
  2. Verfahren nach Anspruch 1, wobei der erste logische Zustand mit einem logischen Wert „1" korrespondiert und der zweite logische Zustand mit einem logischen Wert „0" korrespondiert.
  3. Verfahren nach Anspruch 1, wobei das nichtflüchtige Speicherbauelement ein Phasenwechselspeicherbauelement mit direktem Zugriff (PRAM) ist und die Mehrzahl von Speicherzellen Phasenwechselspeicherzellen sind.
  4. Verfahren nach einem der Ansprüche 1 bis 3, folgende Schritte umfassend: – Identifizieren einer ersten Gruppe einer Anzahl a von durchgefallenen nichtflüchtigen Speicherzellen aus der Mehrzahl von nichtflüchtigen Speicherzellen, wobei die erste Gruppe von durchge fallenen nichtflüchtigen Speicherzellen mit dem ersten logischen Zustand zu programmieren sind, und Programmieren der ersten Gruppe von durchgefallenen nichtflüchtigen Speicherzellen mit dem ersten logischen Zustand unter Verwendung einer Anzahl m von Teilprogrammiervorgängen während des ersten Programmierintervalls des Programmiervorgangs, – Identifizieren einer zweiten Gruppe einer Anzahl b von durchgefallenen nichtflüchtigen Speicherzellen aus der Mehrzahl von nichtflüchtigen Speicherzellen, wobei die zweite Gruppe von durchgefallenen nichtflüchtigen Speicherzellen mit dem zweiten logischen Zustand zu programmieren sind, und Programmieren der Gruppe von durchgefallenen nichtflüchtigen Speicherzellen mit dem zweiten logischen Zustand unter Verwendung einer Anzahl n von Teilprogrammiervorgängen während des zweiten Programmierintervalls des Programmiervorgangs nach dem ersten Programmierintervall.
  5. Verfahren nach Anspruch 4, wobei – die Mehrzahl von nichtflüchtigen Speicherzellen in eine Mehrzahl von Zellengruppen aufgeteilt wird, – jeder der m Teilprogrammiervorgänge mit einer der Mehrzahl von Zellengruppen korrespondiert, die wenigstens eine der a durchgefallenen nichtflüchtigen Speicherzellen aufweist, und – jeder der n Teilprogrammiervorgänge mit einer der Mehrzahl von Zellengruppen korrespondiert, die wenigstens eine der b durchgefallenen nichtflüchtigen Speicherzellen aufweist.
  6. Nichtflüchtiges Speicherbauelement umfassend: – ein Speicherzellenfeld (110), das eine Mehrzahl von nichtflüchtigen Speicherzellen aufweist, und – eine Programmierschaltung (130), die dafür eingerichtet ist, um während eines ersten Programmierintervalls eines Program miervorgangs Daten, die einen ersten logischen Zustand aufweisen, in eine erste Gruppe einer Mehrzahl von ausgewählten Speicherzellen zu programmieren, die aus der Mehrzahl von nichtflüchtigen Speicherzellen ausgewählt werden, und weiter dafür eingerichtet ist, während eines zweiten Programmierintervalls des Programmiervorgangs nach dem ersten Programmierintervall Daten, die einen zweiten logischen Zustand aufweisen, der sich vom ersten logischen Zustand unterscheidet, in eine zweite Gruppe unter den ausgewählten Speicherzellen zu programmieren.
  7. Nichtflüchtiges Speicherbauelement nach Anspruch 6, wobei die Programmierschaltung dafür eingerichtet ist, eine erste Gruppe einer Anzahl a von durchgefallenen nichtflüchtigen Speicherzellen aus der Mehrzahl von nichtflüchtigen Speicherzellen zu identifizieren, wobei die erste Gruppe von durchgefallenen nichtflüchtigen Speicherzellen mit dem ersten logischen Zustand zu programmieren ist, und die erste Gruppe von durchgefallenen nichtflüchtigen Speicherzellen mit dem ersten logischen Zustand unter Verwendung einer Anzahl m von Teilprogrammiervorgängen während des ersten Programmierintervalls des Programmiervorgangs zu programmieren, und weiter dafür eingerichtet ist, eine zweite Gruppe einer Anzahl b von durchgefallenen nichtflüchtigen Speicherzellen aus der Mehrzahl von nichtflüchtigen Speicherzellen zu identifizieren, wobei die zweite Gruppe von durchgefallenen nichtflüchtigen Speicherzellen mit dem zweiten logischen Zustand zu programmieren ist, und die Gruppe von durchgefallenen nichtflüchtigen Speicherzellen mit dem zweiten logischen Zustand unter Verwendung einer Anzahl n von Teilprogrammiervorgängen während des zweiten Programmierintervalls des Programmiervorgangs nach dem ersten Programmierintervall zu programmieren.
  8. Bauelement nach Anspruch 7, – wobei die Mehrzahl von nichtflüchtigen Speicherzellen in eine Mehrzahl von Zellengruppen aufgeteilt ist, – wobei jeder der m Teilprogrammiervorgänge mit einer der Mehrzahl von Zellengruppen korrespondiert, die wenigstens eine der a durchgefallenen nichtflüchtigen Speicherzellen aufweist, und – wobei jeder der n Teilprogrammiervorgänge mit einer der Mehrzahl von Zellengruppen korrespondiert, die wenigstens eine der b durchgefallenen nichtflüchtigen Speicherzellen aufweist.
  9. Nichtflüchtiges Speicherbauelement umfassend: – eine Mehrzahl von nichtflüchtigen Speicherzellen, die in eine Mehrzahl von Zellengruppen aufgeteilt sind, – eine Vergleichseinheit (140), die eine Mehrzahl von Verifikationsdaten, die aus der Mehrzahl von nichtflüchtigen Speicherzellen gelesen werden, mit einer Mehrzahl von Programmierdaten vergleicht, die in die Mehrzahl von nichtflüchtigen Speicherzellen zu programmieren ist, und Vergleichssignale ausgibt, die eine Mehrzahl von durchgefallenen nichtflüchtigen Speicherzellen anzeigen, deren Verifikationsdaten und Programmierdaten voneinander verschieden sind, – eine Statusflagsignalerzeugungseinheit (146), welche Statusflagsignale erzeugt, die eine Mehrzahl von nichtflüchtigen Speicherzellen anzeigen, in die Programmierdaten mit einem bestimmten logischen Zustand zu programmieren sind, – eine Programmierverifizierungsbestimmungseinheit (150), welche die Vergleichssignale und das Statusflagsignal empfängt und Bestimmungssignale zur Bestimmung einer Mehrzahl von Teilprogrammiervorgängen erzeugt, die verwendet werden, um Daten in durchgefallene nichtflüchtige Speicherzellen zu programmieren, – eine Programmierimpulserzeugungseinheit (160), welche die Bestimmungssignale empfängt und ein Setzimpulssteuersignal und ein Rücksetzimpulssteuersignal während Teilprogrammiervorgängen anlegt, und – einen Programmiertreiber (170), der die Programmierdaten, das Setzimpulssteuersignal und das Rücksetzimpulssteuersignal empfängt und einen Setzimpuls oder einen Rücksetzimpuls erzeugt.
  10. Bauelement nach einem der Ansprüche 6 bis 9, wobei der erste logische Zustand mit einem logischen Wert „1" korrespondiert und der zweite logischen Zustand mit einem logischen Wert „0" korrespondiert.
  11. Bauelement nach einem der Ansprüche 6 bis 10, wobei die nichtflüchtigen Speicherzellen Phasenwechselspeicherzellen aufweisen.
  12. Bauelement nach einem der Ansprüche 9 bis 11, wobei – die Programmierdaten Daten umfassen, die einen ersten logischen Zustand aufweisen, und Daten umfassen, die einen zweiten logischen Zustand aufweisen, und – die Statusflagsignale Speicherzellen anzeigen, die mit Daten zu programmieren sind, die den ersten logischen Zustand aufweisen, und Speicherzellen anzeigen, die mit Daten zu programmieren sind, die den zweiten logischen Zustand aufweisen.
  13. Bauelement nach einem der Ansprüche 9 bis 12, wobei ein Programmiersteuersignal steuert, ob die Statusflagsignalerzeugungseinheit ein Statusflagsignal erzeugt, das eine Mehrzahl von nichtflüchtigen Speicherzellen anzeigt, die mit Daten zu programmieren ist, die den ersten logischen Zustand aufweisen, oder ein Statusflagsignal erzeugt, das eine Mehrzahl von nichtflüchtigen Speicher zellen anzeigt, die mit Daten zu programmieren ist, die den zweiten logischen Zustand aufweisen.
  14. Bauelement nach einem der Ansprüche 9 bis 13, wobei die Programmierverifizierungsbestimmungseinheit eine Bestimmungslogikeinheit (156) aufweist, welche die Vergleichssignale und das Statusflagsignal empfängt und Bestimmungssignale erzeugt, die eine Programmierreihenfolge für eine Mehrzahl von durchgefallenen Zellengruppen bestimmen, die durchgefallene nichtflüchtige Speicherzellen aufweisen, die mit einem bestimmten logischen Zustand zu programmieren sind, und weiter eine Mehrzahl von Teilprogrammiervorgängen bestimmen, die unter Verwendung der Programmierreihenfolge mit den durchgefallenen Zellengruppen auszuführen sind.
  15. Bauelement nach Anspruch 14, weiter eine Modusauswahleinheit (190) umfassend, die ein Modussteuersignal empfängt und eine Mehrzahl von Modusauswahlsignalen zur Auswahl von Teilprogrammiermodi erzeugt, wobei die Programmierverifizierungsbestimmungseinheit eine Mehrzahl von Durchlassgattern (151 bis 154) umfasst, die mit der Mehrzahl von Modusauswahlsignalen korrespondiert, wobei jedes der Mehrzahl von Durchlassgattern ein korrespondierendes der Modusauswahlsignale empfängt und das Vergleichssignal selektiv überträgt.
DE102007042184A 2006-09-04 2007-08-27 Nichtflüchtiges Speicherbauelement und Programmierverfahren Withdrawn DE102007042184A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020060084865A KR100791341B1 (ko) 2006-09-04 2006-09-04 비휘발성 메모리 장치의 기입 방법 및 그 방법을 사용하는비휘발성 메모리 장치
KR10-2006-0084865 2006-09-04

Publications (1)

Publication Number Publication Date
DE102007042184A1 true DE102007042184A1 (de) 2008-04-10

Family

ID=39151299

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007042184A Withdrawn DE102007042184A1 (de) 2006-09-04 2007-08-27 Nichtflüchtiges Speicherbauelement und Programmierverfahren

Country Status (5)

Country Link
US (2) US7688620B2 (de)
KR (1) KR100791341B1 (de)
CN (2) CN102496387B (de)
DE (1) DE102007042184A1 (de)
TW (1) TWI492227B (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100809333B1 (ko) * 2006-09-04 2008-03-05 삼성전자주식회사 상변화 메모리 장치의 기입 검증 방법 및 그 방법을사용하는 상변화 메모리 장치
KR100885923B1 (ko) * 2007-06-19 2009-02-26 삼성전자주식회사 복수의 동작 특성에 따라 동작할 수 있는 반도체 메모리장치 및 그 제어 방법
KR20090098228A (ko) * 2008-03-13 2009-09-17 삼성전자주식회사 상 변화 메모리 장치 및 이의 부트 블럭 설정 방법
US8650355B2 (en) * 2008-10-15 2014-02-11 Seagate Technology Llc Non-volatile resistive sense memory on-chip cache
US8045412B2 (en) * 2008-10-21 2011-10-25 Seagate Technology Llc Multi-stage parallel data transfer
US7852665B2 (en) * 2008-10-31 2010-12-14 Seagate Technology Llc Memory cell with proportional current self-reference sensing
US8040713B2 (en) 2009-01-13 2011-10-18 Seagate Technology Llc Bit set modes for a resistive sense memory cell array
KR20100097407A (ko) * 2009-02-26 2010-09-03 삼성전자주식회사 저항성 메모리 장치, 이를 포함하는 메모리 시스템 및 저항성 메모리 장치의 프로그램 방법
US8489801B2 (en) * 2009-03-04 2013-07-16 Henry F. Huang Non-volatile memory with hybrid index tag array
US7916515B2 (en) * 2009-03-10 2011-03-29 Seagate Technology Llc Non-volatile memory read/write verify
JP5039079B2 (ja) * 2009-03-23 2012-10-03 株式会社東芝 不揮発性半導体記憶装置
US8570828B2 (en) * 2010-04-12 2013-10-29 Mosaid Technologies Incorporated Memory programming using variable data width
JP2012038387A (ja) * 2010-08-06 2012-02-23 Toshiba Corp 半導体記憶装置
CN102592665A (zh) * 2011-10-24 2012-07-18 北京时代全芯科技有限公司 一种相变存储器的高速数据写入结构及写入方法
KR101372434B1 (ko) * 2011-11-04 2014-03-11 에스케이하이닉스 주식회사 반도체 메모리 장치, 이를 위한 분할 프로그램 제어 회로 및 프로그램 방법
KR101298191B1 (ko) * 2011-11-04 2013-08-20 에스케이하이닉스 주식회사 반도체 메모리 장치, 이를 위한 연속 프로그램 제어 회로 및 프로그램 방법
US8971105B2 (en) * 2013-03-13 2015-03-03 Micron Technology, Inc. Methods and apparatuses for controlling memory write sequences
US10157669B2 (en) 2013-04-02 2018-12-18 Micron Technology, Inc. Method of storing and retrieving information for a resistive random access memory (RRAM) with multi-memory cells per bit
KR20150046974A (ko) * 2013-10-23 2015-05-04 에스케이하이닉스 주식회사 저항성 메모리 장치 및 동작 방법과 이를 포함하는 시스템
US9818476B1 (en) * 2016-07-25 2017-11-14 Samsung Electronics Co., Ltd. Reprogram without erase using capacity in multi-level NAND cells
US11347999B2 (en) 2019-05-22 2022-05-31 International Business Machines Corporation Closed loop programming of phase-change memory

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950000273B1 (ko) * 1992-02-21 1995-01-12 삼성전자 주식회사 불휘발성 반도체 메모리장치 및 그 최적화 기입방법
JP3629144B2 (ja) * 1998-06-01 2005-03-16 株式会社東芝 不揮発性半導体記憶装置
JP3138688B2 (ja) * 1998-07-24 2001-02-26 日本電気アイシーマイコンシステム株式会社 不揮発性半導体記憶装置及びプログラムベリファイ方法
KR100674454B1 (ko) 2000-02-16 2007-01-29 후지쯔 가부시끼가이샤 비휘발성 메모리
KR20020047772A (ko) 2000-12-14 2002-06-22 윤종용 노어형 플래시 메모리 장치의 프로그램 방법
US6587394B2 (en) * 2001-07-24 2003-07-01 Hewlett-Packard Development Company, L.P. Programmable address logic for solid state diode-based memory
JP4063615B2 (ja) * 2002-08-30 2008-03-19 Necエレクトロニクス株式会社 不揮発性メモリおよびその書き込み処理方法
US7321959B2 (en) * 2002-10-02 2008-01-22 Matsushita Electric Industrial Co., Ltd. Control method of a non-volatile memory apparatus
JP4188744B2 (ja) 2003-04-08 2008-11-26 株式会社ルネサステクノロジ メモリカード
KR100512181B1 (ko) * 2003-07-11 2005-09-05 삼성전자주식회사 멀티 레벨 셀을 갖는 플래시 메모리 장치와 그것의 독출방법 및 프로그램 방법
DE102005004338B4 (de) * 2004-02-04 2009-04-09 Samsung Electronics Co., Ltd., Suwon Phasenänderungs-Speicherbauelement und zugehöriges Programmierverfahren
US6853603B1 (en) * 2004-03-09 2005-02-08 Altera Corporation Programmable logic device having nonvolatile memory with user selectable power consumption
KR100618902B1 (ko) * 2005-06-17 2006-09-01 삼성전자주식회사 프로그램 검증 판독 중 열 스캔을 통해 프로그램 시간을단축시킬 수 있는 플래시 메모리 장치의 프로그램 방법

Also Published As

Publication number Publication date
US20080056023A1 (en) 2008-03-06
KR100791341B1 (ko) 2008-01-03
US7688620B2 (en) 2010-03-30
TW200820254A (en) 2008-05-01
TWI492227B (zh) 2015-07-11
CN101140806A (zh) 2008-03-12
CN102496387B (zh) 2015-02-04
CN102496387A (zh) 2012-06-13
US7876609B2 (en) 2011-01-25
CN101140806B (zh) 2012-11-21
US20100165729A1 (en) 2010-07-01

Similar Documents

Publication Publication Date Title
DE102007042184A1 (de) Nichtflüchtiges Speicherbauelement und Programmierverfahren
DE102005004338B4 (de) Phasenänderungs-Speicherbauelement und zugehöriges Programmierverfahren
DE102006060424B4 (de) Speicher
DE102009050746B4 (de) Verfahren zum Mehrebenen-Auslesen einer Phasenwechselspeicherzelle sowie Phasenwechselspeicher
US7535747B2 (en) Phase change random access memory and related methods of operation
DE102005063287B4 (de) Phasenänderungsspeicherbauelement und Programmierverfahren
DE102006042621B4 (de) Phasenwechselspeicherbauelement
DE102008032058B4 (de) Mehrpegel-Phasenänderungsspeicher und verwandte Verfahren
DE602004004566T2 (de) Nichtflüchtiger Speicher und sein Programmier- und Löschverfahren
US7701757B2 (en) Phase change random access memory device and related methods of operation
CN101192446A (zh) 多电平可变电阻存储装置及其驱动方法
DE102008030217A1 (de) Programmierverfahren mit lokal optimierten Schreibparametern
DE102006030749A1 (de) Phasenänderungsspeicherbauelement mit Wortleitungstreibern
DE102018124093A1 (de) Speichervorrichtung und betriebsverfahren derselben
DE112014004781B4 (de) Umgruppieren und Überspringen von Zyklen in einem nichtflüchtigen Speicher
DE102018128329A1 (de) Speichervorrichtung und Verfahren zum Betreiben derselben
DE102008064527A1 (de) Nichtflüchtiger Speicher, Speichersystem und Verfahren zum Treiben
DE102016100014B4 (de) Speicherbaustein und seine Referenzschaltung
DE102009050745B4 (de) Verfahren zum Zugreifen auf eine Phasenwechselspeichervorrichtung und Phasenwechselspeichervorrichtung
DE102018127379A1 (de) Ein zum Reduzieren einer Schreiblatenz fähiges Verfahren zum Betreiben einerresistiven Speichervorrichtung
DE102008015585B4 (de) Nichtflüchtiges Speicherbauelement
DE102006040570A1 (de) Speichervorrichtung, insbesondere Phasenwechsel-RAM-Vorrichtung und Verfahren zum Betreiben einer Speichervorrichtung
DE102007009877B3 (de) Speicherarray und Verfahren zum Reduzieren von Kriechstrom in einem Speicherarray

Legal Events

Date Code Title Description
R005 Application deemed withdrawn due to failure to request examination
R005 Application deemed withdrawn due to failure to request examination

Effective date: 20140828