DE102017112446A1 - Electrically buffered NV-DIMM and method of use therewith - Google Patents

Electrically buffered NV-DIMM and method of use therewith Download PDF

Info

Publication number
DE102017112446A1
DE102017112446A1 DE102017112446.2A DE102017112446A DE102017112446A1 DE 102017112446 A1 DE102017112446 A1 DE 102017112446A1 DE 102017112446 A DE102017112446 A DE 102017112446A DE 102017112446 A1 DE102017112446 A1 DE 102017112446A1
Authority
DE
Germany
Prior art keywords
data
host
memory
command
controller
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.)
Pending
Application number
DE102017112446.2A
Other languages
German (de)
Inventor
Daniel Helmick
Martin v. Lueker-Boden
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.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
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
Priority claimed from US15/297,971 external-priority patent/US20180059933A1/en
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102017112446A1 publication Critical patent/DE102017112446A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dram (AREA)

Abstract

Ein elektrisch gepuffertes NV-DIMM und ein Verfahren zur Verwendung damit werden bereitgestellt. In einer Ausführungsform wird ein Speichersystem bereitgestellt, welches eine Mehrzahl von nicht-flüchtigen Speichervorrichtungen; einen Controller in Kommunikation mit der Mehrzahl von nicht-flüchtigen Speichervorrichtungen; eine Mehrzahl von Datenpuffern in Kommunikation mit dem Controller und ausgelegt, um zwischen dem Controller und einem Eingangs-/Ausgangsbus gesendete Daten zu speichern; und einen Befehls- und Adresspuffer, welcher ausgelegt ist, um Befehle und Adressen zu speichern, die von einem Host gesendet werden, umfasst, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um den Datenfluss in die und aus der Mehrzahl von Datenpuffern zu synchronisieren.An electrically buffered NV-DIMM and method of use therewith are provided. In one embodiment, a memory system is provided that includes a plurality of non-volatile memory devices; a controller in communication with the plurality of non-volatile storage devices; a plurality of data buffers in communication with the controller and configured to store data sent between the controller and an input / output bus; and a command and address buffer configured to store commands and addresses sent from a host, the command and address buffer further configured to synchronize data flow into and out of the plurality of data buffers ,

Description

Querverweis auf verwandte Anmeldung Cross-reference to related application

Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung Nr. 62/380,217, eingereicht am 26. August 2016, welche hiermit durch Bezugnahme hierin aufgenommen wird. This application claims the benefit of US Patent Application No. 62 / 380,217, filed on Aug. 26, 2016, which is hereby incorporated herein by reference.

Hintergrund background

Viele Computersysteme verwenden ein oder mehrere Dual-In-line-Speichermodule (DIMMs, Dual In-line Memory Modules), welche an eine zentrale Verarbeitungseinheit (CPU, Central Processing Unit) angeschlossen sind, um Daten zu speichern. Einige DIMMs enthalten Chips mit dynamischem Direktzugriffsspeicher (DRAM, Dynamic Random-Access Memory). Jedoch ist DRAM relativ teuer, erfordert eine relativ große Menge an Leistung und versagt beim Skalieren der Kapazität bei einer Ratenanpassungsprozessorleistung, was bei einer Verwendung in Servern, wie beispielsweise Enterprise- und Hyperscale-Systemen in Datenzentren, in denen große Datenmengen gespeichert werden, unerwünscht sein kann. Um diese Probleme anzusprechen, sind nicht-flüchtige DIMMs (NV-DIMMs, Non-Volatile DIMMs) entwickelt worden, die flüchtige DRAM-Chips mit nicht-flüchtigen Speichervorrichtungen ersetzen. Im Vergleich zu DRAM-basierten DIMMs können NV-DIMMs geringere Kosten pro Gigabyte, geringeren Leistungsverbrauch und längere Datenaufbewahrung bereitstellen, insbesondere im Fall eines Stromausfalls oder Systemabsturzes. Wie einige DRAM-basierte DIMMs sind einige NV-DIMMs konzipiert, um über eine Taktdatenparallelschnittstelle, wie beispielsweise eine Doppeldatenrate(DDR)-Schnittstelle, zu kommunizieren. Many computer systems use one or more dual in-line memory modules (DIMMs) connected to a central processing unit (CPU) to store data. Some DIMMs include dynamic random access memory (DRAM) chips. However, DRAM is relatively expensive, requires a relatively large amount of power, and fails to scale capacity with rate matching processor performance, which is undesirable when used in servers such as enterprise and hyperscale systems in data centers where large amounts of data are stored may, To address these issues, non-volatile DIMMs (NV-DIMMs) have been developed which replace volatile DRAM chips with non-volatile memory devices. Compared to DRAM-based DIMMs, NV-DIMMs can provide lower cost per gigabyte, lower power consumption, and longer data retention, especially in the event of a power outage or system crash. Like some DRAM-based DIMMs, some NV-DIMMs are designed to communicate via a clock data-parallel interface, such as a double data rate (DDR) interface.

Kurze Beschreibung der Zeichnungen Brief description of the drawings

1 ist ein Blockschaltbild eines Hosts und von Speichersystemen einer Ausführungsform. 1 Figure 12 is a block diagram of a host and memory systems of one embodiment.

2A ist ein Blockschaltbild eines Speichersystems einer Ausführungsform, bei der das Speichersystem die Form eines nicht-flüchtigen Dual-In-line-Speichermoduls (NV-DIMM, Non-Volatile Dual In-line Memory Module) annimmt. 2A Figure 4 is a block diagram of a memory system of an embodiment wherein the memory system takes the form of a non-volatile dual in-line memory (NV-DIMM) non-volatile memory module.

2B ist ein Blockschaltbild eines Speichersystems einer Ausführungsform mit einem verteilten Controller. 2 B FIG. 10 is a block diagram of a distributed system memory system of one embodiment. FIG.

3 ist ein Blockschaltbild, welches Signale zwischen einem Host und Speichersystemen einer Ausführungsform zeigt. 3 Fig. 10 is a block diagram showing signals between a host and memory systems of an embodiment.

4 ist ein Flussdiagramm eines Verfahrens zum Lesen von Daten aus einem DRAM-DIMM. 4 FIG. 10 is a flowchart of a method of reading data from a DRAM DIMM. FIG.

5 ist ein Zeitdiagramm eines Verfahrens zum Lesen von Daten aus einem DRAM-DIMM. 5 Figure 4 is a timing diagram of a method of reading data from a DRAM DIMM.

6 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform für einen Host, um einen Lesebefehl zu senden. 6 FIG. 10 is a flowchart of a method of an embodiment for a host to send a read command.

7 ist ein Flussdiagramm eines Verfahrens einer Ausführungsform für einen Host, um eine Rückgabe von Lesedaten anzufordern, indem ein Sendebefehl verwendet wird, und empfangene Daten zu verarbeiten. 7 Figure 10 is a flow diagram of a method of an embodiment for a host to request a return of read data by using a send command and processing received data.

8A und 8B sind Zeitdiagramme eines nicht-deterministischen Verfahrens zum Lesen von Daten aus einem Speichersystem einer Ausführungsform. 8A and 8B Figure 9 are timing diagrams of a non-deterministic method for reading data from a memory system of one embodiment.

8C ist ein Zeitdiagramm eines nicht-deterministischen Verfahrens zum Schreiben von Daten in ein Speichersystem einer Ausführungsform. 8C Figure 10 is a timing diagram of a non-deterministic method for writing data to a memory system of one embodiment.

9 ist ein Blockschaltbild eines Controllers eines Speichersystems einer Ausführungsform. 9 Figure 12 is a block diagram of a controller of a memory system of one embodiment.

10 ist ein Flussdiagramm eines Verfahrens zum Lesen von Daten aus einem Speichersystem einer Ausführungsform. 10 FIG. 10 is a flow chart of a method of reading data from a memory system of one embodiment. FIG.

11 ist ein Flussdiagramm eines Verfahrens zum Schreiben von Daten in ein Speichersystem einer Ausführungsform. 11 FIG. 10 is a flowchart of a method of writing data to a memory system of one embodiment. FIG.

12 und 13 sind Darstellungen, welche jeweils Lese- und Schreibflüsse eines DRAM-basierten DIMM zeigen. 12 and 13 are representations showing read and write flows of a DRAM-based DIMM, respectively.

14 ist eine Darstellung der internen Zustände des Datenflusses in einem DRAM-basierten DIMM. 14 is a representation of the internal states of the data flow in a DRAM-based DIMM.

15 ist ein Blockschaltbild eines Speichersystems einer Ausführungsform, bei der das Speichersystem die Form eines nicht-flüchtigen Dual-In-line-Speichermoduls (NV-DIMM, Non-Volatile Dual In-line Memory Module) annimmt. 15 Figure 4 is a block diagram of a memory system of an embodiment wherein the memory system takes the form of a non-volatile dual in-line memory (NV-DIMM) non-volatile memory module.

16 ist ein Blockschaltbild, welches eine Leseoperation eines Speichersystems einer Ausführungsform veranschaulicht. 16 Fig. 10 is a block diagram illustrating a read operation of a memory system of an embodiment.

17 ist ein Blockschaltbild, welches eine Schreiboperation eines Speichersystems einer Ausführungsform veranschaulicht. 17 Fig. 10 is a block diagram illustrating a write operation of a memory system of an embodiment.

18A und 18B sind Flussdiagramme einer Leseoperation einer Ausführungsform. 18A and 18B FIG. 10 are flowcharts of a read operation of an embodiment. FIG.

19A und 19B sind Flussdiagramme einer Schreiboperation einer Ausführungsform. 19A and 19B FIG. 10 are flowcharts of a write operation of an embodiment. FIG.

20 ist eine Darstellung, welche eine Änderung der Taktgeschwindigkeit einer Ausführungsform zeigt. 20 Fig. 10 is a diagram showing a change of the clock speed of an embodiment.

21 ist ein Blockschaltbild eines Datenpuffers. 21 is a block diagram of a data buffer.

22 ist ein Blockschaltbild eines Datenpuffers einer Ausführungsform. 22 FIG. 12 is a block diagram of a data buffer of one embodiment. FIG.

23A ist ein Blockschaltbild eines Speichersystems einer Ausführungsform, bei dem nicht-flüchtige Speichervorrichtungen mit Datenpuffern verbunden sind, ohne durch einen NVM-Controller zu gehen. 23A Figure 12 is a block diagram of a memory system of an embodiment in which nonvolatile memory devices are connected to data buffers without going through an NVM controller.

23B ist ein Blockschaltbild eines registrierten Takttreibers (RCD, Registered Clock Driver) einer Ausführungsform. 23B FIG. 10 is a block diagram of a Registered Clock Driver (RCD) of one embodiment. FIG.

Detaillierte Beschreibung Detailed description

Überblick overview

Einführend betreffen die nachfolgenden Ausführungsformen ein elektrisch gepuffertes NV-DIMM und ein Verfahren zur Verwendung damit. In einer Ausführungsform wird ein Speichersystem bereitgestellt, welches eine Mehrzahl von nicht-flüchtigen Speichervorrichtungen; einen Controller in Kommunikation mit der Mehrzahl von nicht-flüchtigen Speichervorrichtungen; eine Mehrzahl von Datenpuffern in Kommunikation mit dem Controller und ausgelegt, um zwischen dem Controller und einem Eingangs-/Ausgangsbus gesendete Daten zu speichern; und einen Befehls- und Adresspuffer, welcher ausgelegt ist, um Befehle und Adressen zu speichern, die von einem Host gesendet werden, umfasst, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um den Datenfluss in die und aus der Mehrzahl von Datenpuffern zu synchronisieren. By way of introduction, the following embodiments relate to an electrically buffered NV-DIMM and a method of use therewith. In one embodiment, a memory system is provided that includes a plurality of non-volatile memory devices; a controller in communication with the plurality of non-volatile storage devices; a plurality of data buffers in communication with the controller and configured to store data sent between the controller and an input / output bus; and a command and address buffer configured to store commands and addresses sent from a host, the command and address buffer further configured to synchronize data flow into and out of the plurality of data buffers ,

In einigen Ausführungsformen ist der Controller ausgelegt, um Lese- und/oder Schreibbefehle mit Identifikatoren zu assoziieren, so dass die Lese- und/oder Schreibbefehle in einer anderen Reihenfolge als in einer Reihenfolge, in der sie vom Host empfangen werden, verarbeitet werden können. In some embodiments, the controller is configured to associate read and / or write commands with identifiers so that the read and / or write commands can be processed in a different order than in an order received from the host.

In einigen Ausführungsformen umfasst der Befehls- und Adresspuffer einen registrierten Takttreiber. In some embodiments, the command and address buffer includes a registered clock driver.

In einigen Ausführungsformen umfasst die Mehrzahl von Datenpuffern Direktzugriffsspeicher. In some embodiments, the plurality of data buffers include random access memory.

In einigen Ausführungsformen ist der Befehls- und Adresspuffer ferner ausgelegt, um eine Frequenz eines vom Host empfangenen Takts zu reduzieren. In some embodiments, the command and address buffer is further configured to reduce a frequency of a clock received from the host.

In einigen Ausführungsformen ist der Befehls- und Adresspuffer ferner ausgelegt, um eine Bandbreitenumwandlung durchzuführen. In some embodiments, the command and address buffer is further configured to perform bandwidth conversion.

In einigen Ausführungsformen sind physische Schichten und Befehlsschichten des Speichersystems ausgelegt, um mit einem DRAM-DIMM-Kommunikationsprotokoll kompatibel zu sein. In some embodiments, physical layers and instruction layers of the memory system are designed to be compatible with a DRAM DIMM communication protocol.

In einigen Ausführungsformen sind physische Schichten und Befehlsschichten des Speichersystems ausgelegt, um mit einem oder mehreren der Folgenden kompatibel zu sein: ungepuffertem DIMM (UDIMM), registriertem DIMM (RDIMM) und lastreduziertem DIMM (LRDIMM). In some embodiments, physical layers and instruction layers of the memory system are designed to be compatible with one or more of the following: unbuffered DIMM (UDIMM), registered DIMM (RDIMM), and load-reduced DIMM (LRDIMM).

In einigen Ausführungsformen ist der Controller ferner ausgelegt zum: Senden eines Bereitschaftssignals, nachdem vom Host angeforderte Daten zum Senden an den Host bereit sind; Empfangen eines Sendebefehls vom Host; und in Reaktion auf das Empfangen des Sendebefehls vom Host Senden der Daten an den Host. In some embodiments, the controller is further configured to: transmit a ready signal after data requested by the host is ready to be sent to the host; Receiving a send command from the host; and in response to receiving the send command from the host, sending the data to the host.

In einigen Ausführungsformen werden die Daten nach einer Zeitverzögerung an den Host gesendet, wobei die Zeitverzögerung basierend auf einem mit dem Host verwendeten Kommunikationsprotokoll ausgewählt wird. In some embodiments, the data is sent to the host after a time delay, wherein the time delay is selected based on a communication protocol used with the host.

In einigen Ausführungsformen ist der Controller ausgelegt, um unter Verwendung einer Taktdatenparallelschnittstelle mit dem Host zu kommunizieren. In some embodiments, the controller is configured to communicate with the host using a clock data parallel interface.

In einigen Ausführungsformen umfasst die Taktdatenparallelschnittstelle eine Doppeldatenrate(DDR)-Schnittstelle.  In some embodiments, the clock data parallel interface comprises a double data rate (DDR) interface.

In einigen Ausführungsformen umfasst wenigstens eine der Mehrzahl von nicht-flüchtigen Speichervorrichtungen einen dreidimensionalen Speicher. In some embodiments, at least one of the plurality of non-volatile memory devices includes a three-dimensional memory.

Andere Ausführungsformen sind möglich, und jede der Ausführungsformen kann allein oder zusammen in Kombination verwendet werden. Other embodiments are possible, and each of the embodiments may be used alone or in combination.

Allgemeine Einführung in eine Implementierung einer Ausführungsform General introduction to an implementation of an embodiment

Wie im obigen Hintergrundabschnitt erläutert, können Dual-In-line-Speichermodule (DIMMs, Dual In-line Memory Modules) an eine zentrale Verarbeitungseinheit (CPU, Central Processing Unit) eines Hosts angeschlossen werden, um Daten zu speichern. Nicht-flüchtige Dual-In-line-Speichermodule (NV-DIMMs, Non-Volatile Dual In-line Memory Modules) wurden entwickelt, um Chips mit flüchtigem DRAM auf standardmäßigen DIMMs mit nicht-flüchtigen Speichervorrichtungen, wie beispielsweise NAND, zu ersetzen. Im Vergleich zu DRAM-basierten DIMMs können NV-DIMMs geringere Kosten pro Gigabyte, geringeren Leistungsverbrauch und längere Datenaufbewahrung bereitstellen, insbesondere im Fall eines Stromausfalls oder Systemabsturzes. Wie einige DRAM-basierte DIMMs sind einige NV-DIMMs konzipiert, um über eine Taktdatenparallelschnittstelle, wie beispielsweise eine Doppeldatenrate(DDR)-Schnittstelle, zu kommunizieren. As explained in the background section above, dual in-line memory modules (DIMMs) can be connected to a central processing unit (CPU) of a host to store data. Non-Volatile Dual In-line Memory Modules (NV-DIMMs) have been developed to provide chips with volatile DRAM on standard DIMMs with non-volatile memory devices such as non-volatile memory devices NAND, to replace. Compared to DRAM-based DIMMs, NV-DIMMs can provide lower cost per gigabyte, lower power consumption, and longer data retention, especially in the event of a power outage or system crash. Like some DRAM-based DIMMs, some NV-DIMMs are designed to communicate via a clock data-parallel interface, such as a double data rate (DDR) interface.

Jedoch können vorhandene Standards, die für DRAM-basierte DIMMs geeignet sind, für NV-DIMMs nicht geeignet sein. Beispielsweise erfordern einige vorhandene Standards, dass Lese- und Schreiboperationen innerhalb einer angegebenen („deterministischen“) Zeitdauer abgeschlossen werden. Obgleich der Abschluss von Lese- und Schreiboperationen in der angegebenen Zeitdauer typischerweise kein Problem für DRAM-Speicher ist, kann der Mechanismus des Lesens und Schreibens in den nicht-flüchtigen Speicher zu Verzögerungen führen, die die angegebene Zeitdauer überschreiten. Das heißt, DRAM-basierte DIMM-Protokolle erwarten einheitliche, vorhersagbare und schnelle Antworten, die nicht-flüchtiger Speicher möglicherweise nicht bereitstellen kann. Um dies zu berücksichtigen, erlauben einige neu entstehende Standards (z. B. NVDIMM-P-Standard von JEDEC), dass „nicht-deterministische“ Lese- und Schreiboperationen „Slack“ in die Kommunikation zwischen dem Speichersystem und dem Host einfügen. Gemäß derartigen Standards müssen Lese- und Schreiboperationen zum NV-DIMM nicht in einer bestimmten Zeitdauer abgeschlossen werden. Im Fall einer Leseoperation informiert das NV-DIMM stattdessen den Host, wenn die angeforderten Daten bereit sind, so dass der Host sie dann abrufen kann. Im Fall einer Schreiboperation kann der Host dahingehend eingeschränkt werden, dass er mehr als eine bestimmte Anzahl von ausstehenden Schreibbefehlen hat, um sicherzustellen, dass die nicht-flüchtige Speichervorrichtung nicht mehr Schreibbefehle empfängt, als sie handhaben kann. However, existing standards that are suitable for DRAM-based DIMMs may not be suitable for NV-DIMMs. For example, some existing standards require that read and write operations be completed within a specified ("deterministic") period of time. Although the completion of read and write operations in the specified amount of time is typically not a problem for DRAM memories, the mechanism of reading and writing to the non-volatile memory may result in delays exceeding the specified time period. That is, DRAM-based DIMM protocols expect consistent, predictable, and fast responses that nonvolatile storage may not be able to provide. To take this into account, some emerging standards (eg JEDEC's NVDIMM-P standard) allow "non-deterministic" read and write operations to introduce "slack" into the communication between the storage system and the host. According to such standards, read and write operations to the NV-DIMM need not be completed in a certain amount of time. In the case of a read operation, the NV-DIMM instead informs the host when the requested data is ready so that the host can retrieve it. In the case of a write operation, the host may be constrained to have more than a certain number of pending write instructions to ensure that the non-volatile memory device does not receive more write commands than it can handle.

Der Ansatz, nicht-deterministisch zeitgesteuerte Operationen auf einer Protokollebene zuzulassen, ist nur ein möglicher Ansatz für den Umgang mit der unvorhersagbaren Natur von nicht-flüchtigen Speichern. Andere Ansätze nutzen keine nicht-deterministischen Modifikationen des DDR-Standards. Stattdessen beruhen sie auf Softwareansätzen, um zusammengesetzte Lese- und Schreibprozeduren aus herkömmlichen DDR-Primitiven zu konstruieren. Jedes DDR-Primitiv kann entweder einem direkten Zugriff auf den nicht-flüchtigen Speicher selbst entsprechen oder es kann indirekten Operationen entsprechen, welche durch die Verwendung von Zwischenschaltungselementen, wie Steuerregistern oder Puffern, durchgeführt werden. Obwohl die Lese- oder Schreibalgorithmen selbst eine nicht spezifizierte Anzahl von Iterationen oder DRR-Befehlen zum Abschließen erfordern können – und somit möglicherweise nicht innerhalb eines bestimmten Zeitrahmens abschließen – schließt jede einzelne primitive DDR-Operation innerhalb der wohldefinierten Zeitgrenzen ab, welche durch die üblichen (deterministisch zeitgesteuerten) DDR-Standards festgelegt werden. The approach of allowing non-deterministic timed operations at a protocol level is just one possible approach to dealing with the unpredictable nature of non-volatile storage. Other approaches do not use non-deterministic modifications of the DDR standard. Instead, they rely on software approaches to construct composite read and write procedures from conventional DDR primitives. Each DDR primitive may correspond either to direct access to the non-volatile memory itself, or it may correspond to indirect operations performed by the use of interconnect elements such as control registers or buffers. Although the read or write algorithms themselves may require an unspecified number of iterations or DRR commands to complete - and thus may not complete within a particular timeframe - each individual DDR primitive completes operation within the well-defined time limits set by the usual (e.g. deterministic timed) DDR standards.

Einige der folgenden Ausführungsformen profitieren von dem nicht-deterministischen Aspekt des neu entstehenden Standards, um dem NV-DIMM zu ermöglichen, zeitaufwendige Aktionen durchzuführen, für die es möglicherweise gemäß herkömmlichen DRAM-basierten DIMM-Standards nicht die Zeit haben kann. Diese Aktionen werden hierin manchmal als Operationen mit einer unbestimmten Dauer aus der Perspektive des Hosts bezeichnet und können Speicher- und Datenverwaltungsoperationen umfassen. Diese Speicher- und Datenverwaltungsoperationen können für den Betrieb des NV-DIMM wichtig sein. Beispielsweise kann eine nicht-flüchtige Speichervorrichtung im Vergleich zu DRAM eine geringere Ausdauer (d. h. Anzahl der Schreibvorgänge vor einem Fehler) aufweisen und Daten weniger zuverlässig speichern (z. B. aufgrund von internen Speicherfehlern, die verursachen, dass Bits inkorrekt gespeichert werden). Diese Probleme können bei neu entstehenden nicht-flüchtigen Speichertechnologien, welche wahrscheinlich als DRAM-Ersatz in einem NV-DIMM verwendet werden würden, sogar noch ausgeprägter sein. Als solches nutzt das NV-DIMM in einer Ausführungsform aus, dass es nicht „unter Druck steht“, um Operationen mit einer unbestimmten Dauer aus der Perspektive des Hosts durchzuführen, wie beispielsweise Speicher- und Datenverwaltungsoperationen (z. B. Wear-Levelling- und Fehlerkorrekturoperationen), welche es gemäß herkömmlichen DRAM-basierten DIMM-Standards möglicherweise in der zugewiesenen Zeit nicht durchführen kann. Some of the following embodiments benefit from the non-deterministic aspect of the emerging standard to allow the NV-DIMM to perform time-consuming actions that may not have the time, according to conventional DRAM-based DIMM standards. These actions are sometimes referred to herein as indefinite-duration operations from the perspective of the host, and may include memory and data management operations. These memory and data management operations may be important to the operation of the NV-DIMM. For example, a non-volatile memory device may have lower endurance (i.e., the number of writes prior to a failure) compared to DRAM and may store data less reliably (eg, due to internal memory errors that cause bits to be improperly stored). These problems can be even more pronounced with emerging non-volatile memory technologies that would likely be used as a DRAM replacement in an NV-DIMM. As such, in one embodiment, the NV-DIMM exploits that it is not "under pressure" to perform indefinite-duration operations from the perspective of the host, such as memory and data management operations (e.g., wear-leveling and data management operations) Error correction operations) which it may not be able to perform in the allocated time according to conventional DRAM based DIMM standards.

Es sollte beachtet werden, dass diese Einführung lediglich eine bestimmte Implementierung einer Ausführungsform erörtert und dass andere Implementierungen und Ausführungsformen verwendet werden können, wie in den folgenden Absätzen erörtert. Ferner versteht es sich, dass, obgleich einige dieser Ausführungsformen in Bezug auf ein NV-DIMM, welches an eine CPU eines Hosts angeschlossen ist, erörtert werden, eine beliebige Art von Speichersystem in einer beliebigen geeigneten Art von Umgebung verwendet werden kann. Dementsprechend sollten spezielle Architekturen und Protokolle, welche hierin erörtert werden, nicht in die Ansprüche hineingelesen werden, sofern nicht ausdrücklich darin angegeben. It should be noted that this introduction discusses only a particular implementation of an embodiment, and that other implementations and embodiments may be used, as discussed in the following paragraphs. Further, although some of these embodiments are discussed with respect to an NV-DIMM connected to a CPU of a host, any type of memory system may be used in any suitable type of environment. Accordingly, specific architectures and protocols discussed herein should not be read into the claims unless expressly stated therein.

Allgemeine Erörterung von Taktdatenparallelschnittstellen und neuen Protokollen General discussion of timing data interfaces and new protocols

Taktdatenparallelschnittstellen sind eine einfache Möglichkeit, digitalisierte Daten und Befehle zwischen zwei beliebigen Vorrichtungen zu übertragen. Jede Übertragungsleitung, welche Daten oder Befehle von einer Vorrichtung zur anderen trägt, wird von einer separaten „Takt“-Übertragungsleitung begleitet, die eine Zeitreferenz für Abtaständerungen in den Daten- und Befehlsbussen bereitstellt. In einigen Ausführungsformen kann der Takt deaktiviert werden, wenn die Schnittstelle inaktiv ist und keine Daten oder Befehle überträgt. Dies stellt einen zweckmäßigen Weg bereit, bei Inaktivität die Verlustleistung zu reduzieren. In einigen Ausführungsformen von Taktdatenparallelschnittstellen ist der Takt eine Single-Ended-Übertragungsleitung, was bedeutet, dass der Takt aus einer zusätzlichen Übertragungsleitung besteht, deren Spannung mit einer gemeinsamen Spannungsreferenz verglichen wird, welche von vielen Übertragungsleitungen zwischen der CPU und den Speichervorrichtungen gemeinsam genutzt wird. In anderen Ausführungsformen kann die Zeitreferenz ein Differentialtakt sein, sowohl mit einer positiven Taktreferenz als auch mit einem Taktkomplement, welches gleichzeitig mit jeder Nieder-zu-Hochspannungsumschaltung des positiven Takts auf eine Niederspannung umschaltet – ein Ereignis, das als „ansteigende Flanke“ des Takts bekannt ist – und umgekehrt schaltet das Taktkomplement in den Hochspannungszustand mit jedem Hoch-zu-Niederspannungsübergang der positiven Taktreferenz – ein Ereignis, das als „fallende Flanke“ des Takts bekannt ist. Taktdatenparallelschnittstellen werden oft danach klassifiziert, wie viele Daten-Beats zusammen mit dem Takt gesendet werden. In „Single-Data Rate“- oder SDR-Schnittstellen wechseln die Befehls- oder Datenbusse einmal pro Taktzyklus, oft mit der ansteigenden Flanke des Referenztakts. In „Double-Data Rate“- oder DDR-Schnittstellen senden die Befehls- und Datenbusse doppelt so viele Daten pro Taktperiode, indem sie den Befehls- und Datenbussen zweimal pro Periode ein Umschalten ermöglichen, einmal auf der ansteigenden Flanke des Takts und einmal auf der fallenden Flanke des Takts. Weiterhin gibt es Quad-Data-Rate(QDR)-Protokolle, welche vier Daten- oder Befehlsübergänge pro Takt ermöglichen. Typischerweise sind Taktdatenparallelschnittstellen durch ihre Einfachheit effizient und von geringer Latenz, und die Empfängerschaltungen können so einfach sein wie eine einzelne Bank von Logik-Flip-Flops. Jedoch kann zusätzliche Komplexität vorhanden sein, welche durch die Notwendigkeit verursacht wird, die neu gelatchten Daten mit dem internen Takt der Vorrichtungen selbst zu synchronisieren, einer der vielen Jobs, die von einer Sammlung von Signalaufbereitungsschaltungen gehandhabt werden, die als „physische Kommunikationsschicht“ oder einfach „Phy-Schicht“ bekannt sind. Clock data parallel interfaces are an easy way to transfer digitized data and commands between any two devices. Each transmission line carrying data or instructions from one device to another is accompanied by a separate "clock" transmission line which provides a time reference for sample changes in the data and command buses. In some embodiments, the clock may be disabled when the interface is inactive and does not transmit data or commands. This provides a convenient way to reduce power loss during inactivity. In some embodiments of clock data parallel interfaces, the clock is a single-ended transmission line, which means that the clock consists of an additional transmission line whose voltage is compared to a common voltage reference shared by many transmission lines between the CPU and the memory devices. In other embodiments, the time reference may be a differential clock having both a positive clock reference and a clock complement switching to a low voltage concurrently with each of the positive to low-to-high voltage switching - an event known as the "rising edge" of the clock and vice versa, the clock complement switches to the high voltage state with each high to low voltage transition of the positive clock reference - an event known as the "falling edge" of the clock. Timing data parallel interfaces are often classified according to how many data beats are sent along with the clock. In single-data-rate or SDR interfaces, the command or data buses alternate once per clock cycle, often with the rising edge of the reference clock. In Double Data Rate (DDR) interfaces, the command and data buses send twice as much data per clock cycle, allowing the command and data busses to switch twice per period, once on the rising edge of the clock and once on the clock falling edge of the clock. There are also Quad Data Rate (QDR) protocols, which allow four data or command transitions per clock. Typically, clock data parallel interfaces are efficient and of low latency because of their simplicity, and the receiver circuits can be as simple as a single bank of logic flip-flops. However, there may be additional complexity caused by the need to synchronize the newly-latched data to the internal clock of the devices themselves, one of the many jobs handled by a collection of signal conditioning circuits called the "physical communication layer" or simply "Phy layer" are known.

Serielle Schnittstellen beruhen dagegen typischerweise auf Taktdatenwiederherstellungsprozessen, um die Zeitreferenz von einer einzelnen elektrischen Übertragungsleitung zu extrahieren, welche die Spannung in regelmäßigen Zeitintervallen schaltet, aber in einem solchen Muster, dass auch Befehle und/oder Daten kommuniziert werden (in einigen Ausführungsformen werden viele verschiedene Leitungen parallel für eine erhöhte Bandbreite ausgeführt, und somit kann jede Leitung Daten für einen ganzen Befehl und eine ganze Sequenz von Daten oder nur einen Teil einer Befehls- oder Datensequenz codieren). Das Codieren des Takts und der Daten in der gleichen physischen Übertragungsleitung reduziert Timing-Ungewissheiten, welche durch nicht übereinstimmende Verzögerungen zwischen Takt und Daten- oder Befehlsleitungen verursacht werden, und ermöglicht somit Taktfrequenzen von 25 GHz oder höher für eine Kommunikation mit sehr hoher Bandbreite. Derartige Schnittstellen weisen jedoch auch einige Nachteile auf. Aufgrund der Art der Taktdatenwiederherstellung muss die Übertragungsleitung kontinuierlich aktiv bleiben, um die Synchronisierung der inferierten Taktreferenz zwischen den Kommunikationspartnern aufrechtzuerhalten. Stromsparmodi sind möglich, aber der erneute Wechsel in den aktiven Modus erfordert signifikante Retraining-Verzögerungen. Darüber hinaus erfordert genau die Art der Taktdatenwiederherstellung geringfügig mehr Zeit, um jede Nachricht zu decodieren, und Einweg-Kommunikationsverzögerungen sind selbst bei einem gut trainierten seriellen Link üblich. Dies fügt zusätzliche Latenz zu jeder Datenanforderung hinzu. Conversely, serial interfaces are typically based on clock data recovery processes to extract the time reference from a single electrical transmission line which switches the voltage at regular time intervals but in a pattern that also communicates commands and / or data (in some embodiments, many different lines will be used in parallel for increased bandwidth, and thus each line may encode data for a whole instruction and a whole sequence of data, or only part of a instruction or data sequence). Coding the clock and data in the same physical transmission line reduces timing uncertainties caused by mismatching delays between clock and data or command lines, thus allowing clock frequencies of 25 GHz or higher for very high bandwidth communication. However, such interfaces also have some disadvantages. Due to the nature of clock data recovery, the transmission line must remain continuously active to maintain the synchronization of the inferred clock reference between the communication partners. Power saving modes are possible, but switching back to active mode requires significant retraining delays. Moreover, the very nature of clock data recovery requires slightly more time to decode each message, and one-way communication delays are common even with a well-trained serial link. This adds extra latency to each data request.

Die Schnittstelle zwischen Computer-CPUs und ihren entsprechenden Speichervorrichtungen ist ein Beispiel für eine Schnittstelle, bei der eine Optimierung sowohl der Leistung als auch der Latenz erwünscht ist. Obwohl also serielle CPU-Speicherschnittstellen mit hoher Bandbreite existieren, wie beispielsweise Hybrid Memory Cube, verwendet der Großteil der heutigen Schnittstellen zwischen CPUs und Speichervorrichtungen immer noch Taktdatenparallelschnittstellen. Beispielsweise verwendet der synchrone dynamische Direktzugriffsspeicher (SDRAM, Synchronous Dynamic Random-Access Memory) einen einzelnen Takt, um Befehle auf einem Befehlsbus zu synchronisieren, welcher aus einer Mehrzahl von Übertragungsleitungen besteht, von denen jede ein Bit der Befehlssequenzinformationen codiert. Abhängig von der Ausführungsform können Befehle in einer SDRAM-Befehlssequenz die Folgenden umfassen, sind aber nicht darauf beschränkt: Aktivieren von einer Reihe von Zellen in einem zweidimensionalen Daten-Array für zukünftiges Lesen oder Schreiben; Lesen von einigen Spalten in einer aktuell aktiven Zeile; Schreiben von einigen Spalten in einer aktuell aktiven Zeile; Auswählen einer anderen Bank von Zellen zum Lesen oder Schreiben; Schreiben von einigen Bits in die Speichermodusregister, um Aspekte des Verhaltens der Speichervorrichtung zu ändern; und Rücklesen von Werten aus den Modusregistern, um den Status der Speichervorrichtung zu identifizieren. The interface between computer CPUs and their corresponding storage devices is an example of an interface where optimization of both performance and latency is desired. Thus, while high bandwidth serial CPU memory interfaces exist, such as Hybrid Memory Cube, most of today's interfaces between CPUs and memory devices still use clock data parallel interfaces. For example, synchronous dynamic random access memory (SDRAM) uses a single clock to synchronize commands on a command bus, which consists of a plurality of transmission lines, each of which encodes a bit of the command sequence information. Depending on the embodiment, instructions in an SDRAM command sequence may include, but are not limited to: activating a series of cells in a two-dimensional data array for future reading or writing; Reading from some Columns in a currently active row; Writing some columns in a currently active line; Selecting another bank of cells for reading or writing; Writing a few bits into the memory mode registers to change aspects of the behavior of the memory device; and reading back values from the mode registers to identify the status of the memory device.

Daten, welche mit diesen Befehlen assoziiert sind, werden entlang eines separaten Datenbusses gesendet oder empfangen, der aus einer separaten und parallelen Mehrzahl von Datenübertragungsleitungen besteht, die als DQ-Bus bezeichnet werden. In einigen Ausführungsformen kann der DQ-Bus halbduplex und bidirektional sein, was bedeutet, dass die gleichen Leitungen für den Empfang und die Übertragung von Daten verwendet werden, und Daten können nicht gleichzeitig von der Speichervorrichtung zur CPU gesendet werden, während Daten in die entgegengesetzte Richtung fließen, oder umgekehrt. In anderen Ausführungsformen kann der DQ-Bus vollduplex mit separaten Leitungen für den Empfang oder die Übertragung von Daten sein. Es kann sicher angenommen werden, dass die Daten auf dem DQ-Bus synchron mit dem Vorrichtungsbefehlstakt sind. Für längere Übertragungsleitungen oder schnellere Betriebsfrequenzen kann dies jedoch zu einer schlechten Synchronisierung führen. Somit existieren andere Ausführungsformen, bei denen der gesamte DQ-Bus in eine Mehrzahl von kleineren DQ-Gruppen unterteilt ist, jeweils mit einem eigenen „DQ-Strobe“-Signal, DQS, das als separate Timing-Frequenz für die Drähte in dieser DQ-Gruppe dient. Beispielsweise kann ein 64-Bit-DQ-Bus in einer Ausführungsform in 8 Gruppen (oder „Byte-Lanes“) von jeweils 8 DQ-Leitungen unterteilt sein, welche jeweils durch einen eigenen DQS-Strobe synchronisiert sind. Die DQS-Strobes können je nach Ausführungsform differentiell oder single-ended sein. In einigen Ausführungsformen können einige DQ-Leitungen eine Codierung nicht nur für vom Host gespeicherte Daten bereitstellen, sondern auch zusätzliche Paritäts- oder andere Signaldaten zum Zweck der Aufzeichnung zusätzlicher Fehlerkorrekturcodes. Je nach Ausführungsform weisen viele DDR-Protokolle einen Bereich von anderen Steuersignalübertragungsleitungen auf, welche von der CPU an die Speichervorrichtung angesteuert werden, was beispielsweise in einigen Ausführungsformen die folgenden Funktionen befehlen kann, aber nicht darauf beschränkt ist: Command-Suppression-Leitungen (CS_N), Clock Enable (CKE) oder Aktivierung von On-Die-Termination (ODT). Data associated with these instructions are sent or received along a separate data bus consisting of a separate and parallel plurality of data transmission lines called the DQ bus. In some embodiments, the DQ bus may be half-duplex and bi-directional, meaning that the same lines are used for receiving and transmitting data, and data may not be sent simultaneously from the memory device to the CPU while data is in the opposite direction flow, or vice versa. In other embodiments, the DQ bus may be full-duplex with separate lines for receiving or transmitting data. It can be safely assumed that the data on the DQ bus is synchronous with the device command clock. However, for longer transmission lines or faster operating frequencies, this can lead to poor synchronization. Thus, there are other embodiments in which the entire DQ bus is divided into a plurality of smaller DQ groups, each with its own "DQ Strobe" signal, DQS, which is used as a separate timing frequency for the wires in that DQ. Group serves. For example, in one embodiment, a 64-bit DQ bus may be divided into 8 groups (or "byte lanes") of 8 DQ lines, each synchronized by its own DQS strobe. Depending on the embodiment, the DQS strobes can be differential or single-ended. In some embodiments, some DQ lines may provide encoding not only for data stored by the host, but also additional parity or other signal data for the purpose of recording additional error correction codes. Depending on the embodiment, many DDR protocols include a range of other control signal transmission lines that are driven by the CPU to the memory device, which may, for example, command, but is not limited to, the following functions in some embodiments: Command Suppression Lines (CS_N) , Clock Enable (CKE) or On-Die-Termination (ODT) activation.

Ein elektronisches System kann aus einem oder einer Mehrzahl von Datenverarbeitungselementen bestehen – wobei der Vorgang der Verarbeitung eine Berechnung, eine Analyse, eine Speicherung von Daten oder eine Übertragung von Daten über ein Netz oder einen peripheren Bus umfassen kann – welche an eine Mehrzahl von Speichervorrichtungen angeschlossen sind. Beispiele für Datenverarbeitungselemente umfassen, sind aber nicht darauf beschränkt, CPUs, CPU-Caches, anwendungsspezifische integrierte Schaltungen, Peripheriebusse, Direct Memory Access(DMA)-Engines oder Netzschnittstellenvorrichtungen. In den vielen DRAM-Konfigurationen werden eine Mehrzahl von Speicherschaltungen zusammen in Module gebündelt; beispielsweise in Module, welche durch den Dual-Inline-Speichermodul(DIMM)-Standard beschrieben werden. Innerhalb eines Moduls können einige Vorrichtungen Daten parallel entlang separater DQ-Gruppen übertragen, während andere alle parallel mit den gleichen Übertragungsleitungen innerhalb einer DQ-Gruppe verbunden sein können. Um es noch einmal zu erwähnen, können in vielen typischen DRAM-Konfigurationen eine Mehrzahl von Modulen dann parallel verbunden sein, um einen Kanal auszubilden. Zusätzlich zu den Speichermodulen ist jeder Kanal mit genau einem Datenverarbeitungselement verbunden, welches nachfolgend als Host bezeichnet wird. Jede Speichervorrichtung kann über einen Teil eines Halbduplex-DQ-Busses (im Gegensatz zu einem Vollduplex-DQ-Bus) mit dem Host verbunden sein oder kann ferner an den gleichen DQ-Übertragungsleitungen wie mehrere andere Speichervorrichtungen angeschlossen sein – entweder auf dem gleichen Modul oder auf anderen benachbarten Modulen im gleichen Kanal. Daher besteht die Gefahr, dass eine Speichervorrichtung wählen könnte, Daten auf dem DQ-Bus oder zur gleichen Zeit wie andere Speichervorrichtungen auf dem gleichen Bus zu assertieren, und somit besteht eine Notwendigkeit für eine Arbitrierung auf dem Bus. Daher beruhen SDRAM-Protokolle auf einem zentralisierten Buszuteilungsschema mit Zeitfenster: Der Host ist standardmäßig die einzige Vorrichtung, der es erlaubt ist, Daten auf dem DQ-Bus zu übertragen, und standardmäßig lassen alle Speichervorrichtungen ihre DQ-Leitungen die meiste Zeit hochimpedant. Wenn ein Befehl, welcher eine Antwort erfordert, an eine bestimmte Speichervorrichtung gesendet wird, ist es der Vorrichtung gestattet, Daten auf dem DQ-Bus zu übertragen, aber nur innerhalb eines bestimmten Zeitfensters nach dem ersten Impuls des Befehls. Das Fenster startet eine feste Anzahl von Taktzyklen nach dem Befehl und weist eine typische Dauer von nur einem oder zwei Taktzyklen länger als die Zeit auf, die zum Übertragen der Daten erforderlich ist. Speichervorrichtungen, welche Daten außerhalb dieses Fensters übertragen, schlagen entweder fehl, ihre Daten erfolgreich an den Host zu senden, oder werden Daten, die von benachbarten Speichervorrichtungen zurückkommen, beschädigen.  An electronic system may consist of one or a plurality of data processing elements - wherein the process of processing may include computation, analysis, storage of data or transmission of data over a network or peripheral bus - connected to a plurality of storage devices are. Examples of data processing elements include, but are not limited to, CPUs, CPU caches, application specific integrated circuits, peripheral buses, Direct Memory Access (DMA) engines, or network interface devices. In the many DRAM configurations, a plurality of memory circuits are bundled together into modules; for example, in modules described by the Dual Inline Memory Module (DIMM) standard. Within a module, some devices may transmit data in parallel along separate DQ groups, while others may all be connected in parallel to the same transmission lines within a DQ group. To reiterate, in many typical DRAM configurations, a plurality of modules may then be connected in parallel to form a channel. In addition to the memory modules, each channel is connected to exactly one data processing element, hereinafter referred to as host. Each memory device may be connected to the host via a portion of a half duplex DQ bus (as opposed to a full duplex DQ bus), or may also be connected to the same DQ transmission lines as several other memory devices - either on the same module or on other neighboring modules in the same channel. Therefore, there is a risk that a memory device might choose to assert data on the DQ bus or at the same time as other memory devices on the same bus, and thus there is a need for arbitration on the bus. Therefore, SDRAM protocols are based on a time-window centralized arbitration scheme: by default, the host is the only device allowed to transmit data on the DQ bus, and by default, all storage devices leave their DQ lines high impedance most of the time. When a command requiring a response is sent to a particular memory device, the device is allowed to transmit data on the DQ bus, but only within a certain time window after the first pulse of the command. The window starts a fixed number of clock cycles after the instruction and has a typical duration of only one or two clock cycles longer than the time required to transfer the data. Storage devices that transfer data outside of this window either fail to successfully send their data to the host, or will corrupt data coming from neighboring storage devices.

Das DQ-Bus-Arbitrierungsschema, welches von diesen taktdatenparallelen SDRAM-Protokollen verwendet wird, funktioniert gut für DRAM. Die Technologie hinter DRAM-Vorrichtungen ist bis zu dem Punkt fortgeschritten, wo ihre Datenzugriffszeiten extrem einheitlich und vorhersagbar sind. DRAM ist jedoch eine relativ leistungshungrige Technologie, da es häufige Auffrischung Tausende von Malen pro Sekunde erfordert. The DQ bus arbitration scheme used by these clock data parallel SDRAM protocols works well for DRAM. The Technology behind DRAM devices has advanced to the point where their data access times are extremely consistent and predictable. However, DRAM is a relatively power hungry technology because it requires frequent refreshing thousands of times per second.

Nicht-flüchtige Speicher, wie beispielsweise Phase-Change Random Access Memory (PCM), Oxidative Resistive Random Access Memory (OxRAM oder ReRAM), Conductive-Bridge Random Access Memory (CBRAM), NAND-Flash (NAND), Magnetic Tunnel Junction-based Magnetic Random Access Memory (MRAM), Memristor, NOR-Flash (NOR), Spin Torque-Transfer Magnetic Memory (STT-MRAM) und ferroelektrischer Direktzugriffsspeicher (FeRAM), versprechen alle Datenzugriff mit niedriger Latenz für Daten, können für einen geringeren Leistungsverbrauch für viele datenschwere Workloads optimiert werden und können bald einen Direktzugriffsspeicher mit höherer Dichte als DRAM bieten. Jedoch benötigen sie etwas lockerere Datenzugriffsprotokolle als DRAM. Alle diese nicht-flüchtigen Speicher weisen nicht-deterministische Lese- und Schreib-Latenzen auf. Es ist unmöglich, zu dem Zeitpunkt, zu dem ein Lese- oder Schreibbefehl geschrieben wird, genau zu wissen, wie lange es dauern würde, um auf die Daten zu oder von einer Zelle des nicht-flüchtigen Speichers für alle NVM-Optionen und für alle NVM-Vorrichtungsarchitekturen zuzugreifen oder diese festzuschreiben. Es ist jedoch möglich, deterministische Latenzen nachzuahmen. Deterministische Latenzen können nachgeahmt werden, indem Worst-Case-Timing-Bedingungen angenommen werden oder ein Lesevorgang aufgegeben wird, welcher möglicherweise zu lange dauert. Modifikationen der DDR-SDRAM-Protokolle könnten basierend auf pessimistischen Lese- oder Schreiblatenzspezifikationen spezifiziert werden. Beispielsweise könnte ein Speicher, welcher die meisten Schreibvorgänge innerhalb von 100 ns festschreibt, aber gelegentlich aus unvorhersagbaren Gründen 10 us benötigt, um Daten festzuschreiben, ein DDR-Protokoll verwenden, das keine Schreibvorgänge ganze 10 us nach dem vorherigen Schreibvorgang zulässt und auch keine Lesevorgänge in dieser Zeitperiode zulässt (da bei einigen Speichertechnologien Schreibvorgänge bedeuten, dass Lesevorgänge auch verzögert werden müssen). Dies würde jedoch eine drastische Grenze für die maximale Bandbreite darstellen, welche durch eine solche Vorrichtung erreichbar ist, und könnte ferner die Leistung anderer Vorrichtungen auf dem gleichen Kanal einschränken. Umgekehrt kann man sich eine Modifikation der standardmäßigen DDR- oder SDR- oder QDR-SDRAM-Protokolle vorstellen, welche Flexibilität für nicht-deterministische Leselatenzen und nicht-deterministische Schreiblatenzen ermöglichen. In einer Ausführungsform wird dieses Protokoll als ein synchrones nicht-flüchtiges RAM(nachfolgend SNVRAM, Synchronous Non-Volatile RAM)-Protokoll bezeichnet. Non-volatile memory, such as Phase-Change Random Access Memory (PCM), Oxidative Resistive Random Access Memory (OxRAM or ReRAM), Conductive Bridge Random Access Memory (CBRAM), NAND Flash (NAND), Magnetic Tunnel Junction-based Magnetic Random Access Memory (MRAM), Memristor, NOR Flash (NOR), Spin Torque Transfer Magnetic Memory (STT-MRAM), and Ferroelectric Random Access Memory (FeRAM), all promise data access at low latency for data, allowing for lower power consumption Many data-heavy workloads can be optimized and can soon provide higher density random access memory than DRAM. However, they require somewhat looser data access protocols than DRAM. All of these non-volatile memories have non-deterministic read and write latencies. It is impossible at the time a read or write command is written to know exactly how long it would take to access the data to or from a non-volatile memory cell for all NVM options and for all Access or commit NVM device architectures. However, it is possible to mimic deterministic latencies. Deterministic latencies can be mimicked by accepting worst case timing conditions or abandoning a read that may take too long. Modifications of DDR SDRAM protocols could be specified based on pessimistic read or write latency specifications. For example, a memory that commits most writes within 100 ns, but occasionally, for unpredictable reasons, may take 10 us to commit data, use a DDR protocol that does not allow writes to as many as 10 μs after the previous write, and no reads in this period of time (because in some storage technologies, write operations mean that reads must also be delayed). However, this would represent a drastic limit on the maximum bandwidth achievable by such a device and could further limit the performance of other devices on the same channel. Conversely, one can envision a modification of the standard DDR or SDR or QDR SDRAM protocols which allow flexibility for non-deterministic read latencies and non-deterministic writes. In one embodiment, this protocol is referred to as a synchronous non-volatile RAM (hereinafter SNVRAM, Synchronous Non-Volatile RAM) protocol.

Beispielsweise kann der Lesebefehl in einigen Ausführungsformen von SNVRAM-Protokollen in drei kleinere Befehle aufgeteilt werden. Wo vorher eine Lesebefehlssequenz aus zwei Teilen bestand: einem Aktivierungsbefehl, gefolgt von einem Lesevorgang, um die Zeile und Spalte der angeforderten Daten anzugeben, würde der Befehl nun aus einem Aktivierungsbefehl, einem Lesebefehl und schließlich – nach einer unbestimmten Verzögerung – einem Sendebefehl bestehen. Die Aktivierungs-/Lesekombination würde die zweiteilige Anforderung zum Lesen eines speziellen Bereichs spezifizieren. Jedoch würde keine Antwort nach dem Lesebefehl gesendet werden; stattdessen würde die Speichervorrichtung ein Signal, welches zum Beispiel als „READ READY“ bezeichnet wird (hierin manchmal als „R_RDY“ bezeichnet), zurück zum Host zu irgendeinem nicht bestimmten Zeitpunkt nach dem Lesebefehl assertieren. Diese Assertierung würde dann den Host auffordern, den SEND-Befehl auszugeben, da einer anderen SDRAM-Aktivität erlaubt ist, die vollständig extrahierten Daten aus der Speichervorrichtung zurück zum Host zu übertragen. Die Antwort vom SEND-Befehl würde über den gemeinsam genutzten DQ-Bus innerhalb eines vorbestimmten Fensters im Anschluss an den SEND-Befehl ausgehen. Auf diese Weise würde der typische Lesebefehl nicht-deterministische Leselatenzen unterstützen; jedoch sind Leistungseigenschaften, wie beispielsweise die durchschnittliche minimale Latenz oder Gesamtbandbreite des Systems, nicht durch den langsamstmöglichen Lesevorgang begrenzt. Die durchschnittliche Leistung des Protokolls stimmt mit der typischen Leistung der Vorrichtung überein, während es immer noch eine gewisse Flexibilität für Ausreißer gibt, welche eindeutig als physische Konsequenz der Medienwahl erwartet werden. For example, in some embodiments, the read command may be partitioned by SNVRAM protocols into three smaller commands. Previously, where a read command sequence consisted of two parts: an activation command followed by a read to indicate the row and column of requested data, the command would now consist of an activation command, a read command, and finally, after an indefinite delay, a send command. The activation / reading combination would specify the two-part requirement to read a particular area. However, no response would be sent after the read command; instead, the memory device would assert a signal, referred to for example as "READ READY" (sometimes referred to herein as "R_RDY") back to the host at some undetermined time after the read command. This assertion would then prompt the host to issue the SEND command because another SDRAM activity is allowed to transfer the fully extracted data from the storage device back to the host. The response from the SEND command would go out over the shared DQ bus within a predetermined window following the SEND command. In this way, the typical read command would support non-deterministic read latencies; however, performance characteristics such as the average minimum latency or overall bandwidth of the system are not limited by the slowest possible read operation. The average performance of the protocol is consistent with the typical performance of the device, while there is still some flexibility for outliers, which are clearly expected as a physical consequence of media choice.

In einer Ausführungsform umfasst das SNVRAM die folgenden Eigenschaften:

  • – Ähnlich wie bestehende SDRAM- oder DDR-Protokolle unterstützt es die Kommunikation zwischen einem einzelnen Host und einer Mehrzahl von Speichervorrichtungen auf dem gleichen Speicherkanal. Hosts können an separate Speicherkanäle angeschlossen sein, obwohl jeder Kanal unabhängig arbeitet, und somit spezifiziert das Protokoll nicht das Verhalten von Vorrichtungen in anderen Kanälen. Übertragungsleitungen für den Betrieb eines Kanals können ausschließlich von diesem Kanal verwendet werden. In anderen Ausführungsformen kann der Host an eine einzelne Speichervorrichtung angeschlossen sein, und diese Speichervorrichtung kann die Befehle und Daten an eine zweite Vorrichtung in einem verketteten Stil der Bereitstellung weiterleiten.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen kann jedes Signal oder jeder Bus vom Host zum Kanal synchron zu einem Taktsignal im Anschluss an eine parallele Übertragungsleitung sein.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen existieren logische Befehle, wie beispielsweise „Adressblock aktivieren“, „Element innerhalb des aktiven Adressblocks lesen“ oder „Zum Element innerhalb des aktiven Adressblocks schreiben“, welche entlang eines Befehlsbusses gesendet werden können.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen kann der Befehlsbus mit einem Master-Takt oder Master-Befehls-Strobe für den Kanal synchronisiert werden.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen können Daten, welche von der Speichervorrichtung zurückkehren, entlang eines separaten Datenbusses gesendet werden, der aus einer Mehrzahl von Übertragungsleitungen besteht, die als DQ-Bus bezeichnet werden.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen kann jede Leitung im DQ-Bus in einigen Ausführungsformen mit dem Master-Takt synchron sein. In anderen Ausführungsformen ist der DQ-Bus synchron mit einem separaten DQ-Strobe-Signal (das entweder durch den Host oder durch die Speichervorrichtung erzeugt wird), nachfolgend als DQS bezeichnet. In einigen Ausführungsformen können mehrere DQS-Leitungen vorhanden sein, welche jeweils einer Teilmenge der DQ-Busleitungen entsprechen.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen existieren einige Ausführungsformen, in denen der DQ-Bus bidirektional sein kann und speicherbare Daten vom Host zur Speichervorrichtung aufnehmen kann. Andere Ausführungsformen können einen separaten Schreib-DQ-Bus umfassen.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen können Daten vom Host zur Speichervorrichtung auf einem DQ-Bus je nach der betrachteten Ausführungsform synchron entweder mit dem Master-Takt oder den entsprechenden DQS-Leitungen übertragen werden.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen können die DQ-Busse zusätzlich zum einzelnen Host an mehrere Speichervorrichtungen angeschlossen sein. Die Arbitrierung auf diesem Bus erfolgt auf der Basis von Zeitfenstern. Wenn eine Speichervorrichtung vom Host einen Befehl empfängt, welcher eine Antwort erfordert, hat sie ein schmales Zeitfenster, in dem sie den DQ-Bus besitzt und Daten assertieren kann.
  • – Wie bei bestehenden SDRAM- oder DDR-Protokollen können innerhalb eines Kanals Speichervorrichtungen als eine Mehrzahl gruppiert werden, um koordinierte Module auszubilden.
  • – SNVRAM-Protokolle unterscheiden sich typischerweise von SDRAM-Protokollen, da es zusätzliche Steuerleitungen gibt, welche Signale vom Speichersystem zum Host senden. (Typische SDRAM-Schnittstellen umfassen nur Steuersignale, welche vom Host zum Speichersystem gesendet werden.) Diese zusätzlichen Steuerleitungen werden nachfolgend als „Antwortbus“ (oder RSP) bezeichnet. Der Antwortbus kann in einigen Ausführungsformen synchron mit dem Master-Takt sein oder kann in anderen Ausführungsformen ein eigenes Strobe-Signal aufweisen, welches durch das Speichermodul generiert wird. Der Antwortbus umfasst, ist aber nicht darauf beschränkt, Signale, welche für unsere Zwecke hier als „LESEN BEREIT“ (R_RDY) und „CREDIT-INKREMENT SCHREIBEN“ (WC_INC) identifiziert werden. Es sollte jedoch beachtet werden, dass verschiedene Ausführungsformen von SNVRAM-Protokollen elektrische Signale mit ähnlichen Funktionen aufweisen können, obwohl das Protokoll sie mit einem anderen Namen bezeichnen kann. Dementsprechend versteht es sich, dass spezielle Signalnamen, welche hierin verwendet werden, lediglich Beispiele sind.
  • – In einigen Ausführungsformen von NVRAM-Protokollen kann der Antwortbus von allen Modulen in einem Kanal gemeinsam genutzt und durch den Host arbitriert werden, oder in anderen Ausführungsformen kann der Antwortbus aus unterschiedlichen Übertragungsleitungen bestehen – die nicht von irgendwelchen Modulen geteilt werden – welche nur von jedem Modul zum Host weitergeleitet werden, ohne elektrischen Kontakt mit anderen Modulen zu machen.
  • – Genau wie verschiedene Ausführungsformen der SDRAM- oder DDR-Protokolle Daten mit protokollspezifizierten Raten übertragen, können Daten auf jedem Befehlsbus für die Übertragung bei SDR-, DDR- oder QDR-Raten durch die spezielle Protokollausführungsform spezifiziert werden.
  • – Daten auf einem beliebigen Befehlsbus, Takten oder Strobes können je nach den in der Ausführungsform des SNVRAM-Protokolls enthaltenen Spezifikationen single-ended oder differentiell gesendet werden.
  • – SNVRAM-Protokolle bieten eine einfache Möglichkeit, das unregelmäßige Verhalten von nicht-deterministischen, nicht-flüchtigen Medien zu berücksichtigen, ohne deren Bandbreite unnötigerweise einzuschränken. Jedoch gibt es viele andere Möglichkeiten, welche durch solche Protokolle realisiert werden können. Zusätzlich zur Kompensierung für das nicht-deterministische Verhalten des Speichers können diese Protokolle auch verwendet werden, um Zeit für verschiedene Wartungsaufgaben und Datenqualitätsverbesserungen bereitzustellen, wie beispielsweise Fehlerkorrektur, I/O-Scheduling, Speicher-Wear-Levelling, In-situ-Mediencharakterisierung und Protokollierung von controllerspezifischen Ereignissen und Funktionen. Sobald die Hardware, welche diese Funktionen implementiert, komplexer wird, wird die Konkurrenz für Hardwareressourcen, die diese Funktionen durchführen, zu einer weiteren potentiellen Verzögerungsquelle. Alle derartigen Verzögerungen können bei der Verwendung eines standardmäßigen SDRAM-Kommunikationsprotokolls signifikante Leistungs- oder Zuverlässigkeitsprobleme bewirken. Die Verwendung eines nicht-deterministisch zeitgesteuerten SNVRAM-Protokolls ermöglicht jedoch einen flexiblen Betrieb und Freiheit von Hardwarekomplexität. Ferner ermöglichen nicht-deterministische Lese-Timings die Möglichkeit einer gelegentlich schnelleren Leseantwort durch Caching.
In one embodiment, the SNVRAM includes the following properties:
  • Similar to existing SDRAM or DDR protocols, it supports communication between a single host and a plurality of storage devices on the same memory channel. Hosts can be connected to separate memory channels, although each channel operates independently, and thus the protocol does not specify the behavior of devices in other channels. Transmission lines for the operation of a channel can only be used by this channel. In other embodiments, the host may be connected to a single storage device, and this storage device may forward the commands and data to a second device in a chained style of deployment.
  • As with existing SDRAM or DDR protocols, any signal or bus from the host to the channel may be synchronous with a clock signal following a parallel transmission line.
  • - As with existing SDRAM or DDR protocols, there are logical commands such as "Enable Address Block", "Read Element Within Active Address Block", or "Write To Element Within Active Address Block" which can be sent along a command bus.
  • - As with existing SDRAM or DDR protocols, the command bus can be synchronized with a master clock or master command strobe for the channel.
  • As with existing SDRAM or DDR protocols, data returning from the memory device can be sent along a separate data bus consisting of a plurality of transmission lines called a DQ bus.
  • As with existing SDRAM or DDR protocols, in some embodiments each line in the DQ bus may be synchronous with the master clock. In other embodiments, the DQ bus is synchronous with a separate DQ strobe signal (generated either by the host or by the memory device), hereinafter referred to as DQS. In some embodiments, multiple DQS lines may be present, each corresponding to a subset of the DQ bus lines.
  • As with existing SDRAM or DDR protocols, there are some embodiments in which the DQ bus may be bidirectional and may receive storable data from the host to the storage device. Other embodiments may include a separate write DQ bus.
  • As with existing SDRAM or DDR protocols, data from the host to the memory device on a DQ bus may be transmitted synchronously with either the master clock or the corresponding DQS lines, depending on the embodiment under consideration.
  • - As with existing SDRAM or DDR protocols, the DQ buses may be connected to multiple storage devices in addition to the single host. The arbitration on this bus is based on time slots. When a storage device receives a command from the host requiring a response, it has a narrow window of time in which to own the DQ bus and assert data.
  • As with existing SDRAM or DDR protocols, memory devices may be grouped as a plurality within a channel to form coordinated modules.
  • SNVRAM protocols typically differ from SDRAM protocols because there are additional control lines that send signals from the storage system to the host. (Typical SDRAM interfaces include only control signals sent from the host to the memory system.) These additional control lines are hereafter referred to as a "response bus" (or RSP). The response bus, in some embodiments, may be synchronous with the master clock or, in other embodiments, may have its own strobe signal generated by the memory module. The response bus includes, but is not limited to, signals identified for our purposes as "READY READY" (R_RDY) and "WRITE CREDIT INCREMENT" (WC_INC). It should be noted, however, that various embodiments of SNVRAM protocols may have electrical signals with similar functions, although the protocol may refer to them by a different name. Accordingly, it should be understood that specific signal names used herein are merely examples.
  • In some embodiments of NVRAM protocols, the response bus of all modules in a channel may be shared and arbitrated by the host, or in other embodiments, the response bus may consist of different transmission lines - which are not shared by any modules - which only by each Module to be forwarded to the host without making electrical contact with other modules.
  • Just as various embodiments of the SDRAM or DDR protocols transmit data at protocol-specified rates, data on each command bus may be specified for transmission at SDR, DDR, or QDR rates by the particular protocol embodiment.
  • Data on any command bus, clocks or strobes may be sent single-ended or differential depending on the specifications contained in the SNVRAM protocol embodiment.
  • - SNVRAM protocols provide an easy way to account for the irregular behavior of non-deterministic, non-volatile media without unnecessarily limiting their bandwidth. However, there are many other possibilities that can be realized by such protocols. In addition to compensating for non-deterministic memory behavior, these protocols can also be used to provide time for various maintenance tasks and data quality enhancements, such as error correction, I / O scheduling, memory wear leveling, in-situ media characterization, and the like Logging of controller-specific events and functions. As the hardware implementing these functions becomes more complex, the competition for hardware resources performing these functions becomes another potential source of delay. Any such delays can cause significant performance or reliability problems when using a standard SDRAM communication protocol. However, the use of a non-deterministic timed SNVRAM protocol allows flexible operation and freedom from hardware complexity. Furthermore, non-deterministic read timings allow the possibility of occasionally faster read response through caching.

Erörterung der Zeichnungen Discussion of the drawings

Wendet man sich nun den Zeichnungen zu, ist 1 ein Blockschaltbild eines Hosts 100 in Kommunikation mit Speichersystemen einer Ausführungsform. Wie hierin verwendet, könnte der Ausdruck „in Kommunikation mit“ direkt in Kommunikation mit oder indirekt in Kommunikation mit über eine oder mehrere Komponenten, die hierin beschrieben oder gezeigt sein können oder nicht, bedeuten. In dieser Veranschaulichung werden zwei Speichersysteme gezeigt (Speichersystem A und Speichersystem B); es versteht sich jedoch, dass mehr als zwei Speichersysteme verwendet werden können oder nur ein Speichersystem verwendet werden kann. In dieser Ausführungsform umfasst der Host 100 eine oder mehrere zentrale Verarbeitungseinheiten (CPUs, Central Processing Units) 110 und einen Speichercontroller 120. In dieser Veranschaulichung gibt es zwei CPUs (CPU A und CPU B); jedoch versteht es sich, dass mehr als zwei CPUs verwendet werden können oder nur eine einzelne CPU verwendet werden kann. Der Speichercontroller kann auch mit anderen Vorrichtungen als nur CPUs verbunden sein und kann ausgelegt sein, um Speicheranforderungen im Auftrag von anderen Vorrichtungen, wie beispielsweise, aber nicht darauf beschränkt, Netzkarten oder anderen Speichersystemen (z. B. Festplatte oder Solid-State-Drive (SSD)), weiterzuleiten. Ferner kann der Speichercontroller Speicheranforderungen im Auftrag von einer oder mehreren Softwareanwendungen weiterleiten, welche auf der CPU ausgeführt werden, die Anforderungen an den Speichercontroller 120 für den Zugriff auf die angeschlossenen Speichersysteme sendet. Turning now to the drawings, is 1 a block diagram of a host 100 in communication with memory systems of one embodiment. As used herein, the term "in communication with" may mean directly in communication with or indirectly in communication with over one or more components described or shown herein or not. In this illustration, two memory systems are shown (memory system A and memory system B); however, it should be understood that more than two memory systems may be used or only one memory system may be used. In this embodiment, the host includes 100 one or more central processing units (CPUs, Central Processing Units) 110 and a memory controller 120 , In this illustration, there are two CPUs (CPU A and CPU B); however, it is understood that more than two CPUs may be used or only a single CPU may be used. The memory controller may also be connected to devices other than just CPUs, and may be configured to handle memory requests on behalf of other devices, such as, but not limited to, network cards or other storage systems (eg, hard disk or solid state drive). SSD)), forward. Further, the memory controller may forward memory requests to the memory controller on behalf of one or more software applications executing on the CPU 120 for accessing the connected storage systems.

In dieser Ausführungsform umfasst der Host 100 auch einen Speichercontroller 120 in Kommunikation mit den CPUs 110 (obwohl in anderen Ausführungsformen kein Speichercontroller verwendet wird), welcher mit den Speichersystemen unter Verwendung einer Kommunikationsschnittstelle kommuniziert, wie beispielsweise einer Taktdatenparallelschnittstelle (z. B. DDR), und gemäß einem bestimmten Protokoll arbeitet (z. B. einem vom Joint Electron Device Engineering Council (JEDEC) dargelegten). In einer Ausführungsform korreliert der Speichercontroller 120 Zugriffsanforderungen an die Speichersysteme von den CPUs 110 und sortiert Antworten von den Speichersystemen aus und liefert sie an die entsprechenden CPUs 110. In this embodiment, the host includes 100 also a memory controller 120 in communication with the CPUs 110 (although in other embodiments, no memory controller is used) that communicates with the memory systems using a communication interface, such as a clock data parallel interface (eg, DDR), and operates according to a particular protocol (eg, one from Joint Electron Device Engineering Council (JEDEC)). In one embodiment, the memory controller correlates 120 Access requests to the storage systems from the CPUs 110 and sorts responses from the storage systems and delivers them to the appropriate CPUs 110 ,

Wie auch in 1 gezeigt, umfasst das Speichersystem A einen Medien(nicht-flüchtiger-Speicher)-Controller 130 in Kommunikation mit einer Mehrzahl von nicht-flüchtigen Speichervorrichtungen 140. In dieser Ausführungsform enthalten Speichersysteme A und B die gleichen Komponenten; das Speichersystem A umfasst somit auch einen Medien(nicht-flüchtiger-Speicher)-Controller 150 in Kommunikation mit einer Mehrzahl von nicht-flüchtigen Speichervorrichtungen 160. Es sollte beachtet werden, dass die Speichersysteme in anderen Ausführungsformen unterschiedliche Komponenten enthalten können. As well as in 1 The storage system A comprises a media (non-volatile memory) controller 130 in communication with a plurality of non-volatile memory devices 140 , In this embodiment, storage systems A and B contain the same components; the memory system A thus also includes a media (non-volatile memory) controller 150 in communication with a plurality of non-volatile memory devices 160 , It should be noted that in other embodiments, the storage systems may include different components.

Der Mediencontroller 130 (der manchmal als „nicht-flüchtiger-Speicher(NVM, Non-Volatile Memory)-Controller“ oder nur „Controller“ bezeichnet wird) kann die Form von Verarbeitungsschaltungen, einem Mikroprozessor oder Prozessor und einem computerlesbaren Medium annehmen, welches computerlesbaren Programmcode (z. B. Firmware) speichert, der beispielsweise durch den (Mikro-)Prozessor, logische Gates, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit), eine programmierbare Logiksteuerung und einen eingebetteten Mikrocontroller ausführbar ist. Der Controller 130 kann mit Hardware und/oder Firmware konfiguriert werden, um die verschiedenen Funktionen auszuführen, welche unten beschrieben und in den Flussdiagrammen gezeigt werden. The media controller 130 (sometimes referred to as a "non-volatile memory (NVM) controller" or "controller") may take the form of processing circuitry, a microprocessor or processor, and a computer-readable medium having computer-readable program code (e.g. B. Firmware), for example, by the (micro) processor, logic gates, switches, an application specific integrated circuit (ASIC, Application Specific Integrated Circuit), a programmable logic controller and an embedded microcontroller executable. The controller 130 can be configured with hardware and / or firmware to perform the various functions described below and shown in the flowcharts.

Im Allgemeinen empfängt der Controller 130 Anforderungen für den Zugriff auf das Speichersystem vom Speichercontroller 120 im Host 100, verarbeitet und sendet die Anforderungen an die nicht-flüchtigen Speicher 140 und liefert Antworten zurück an den Speichercontroller 120. In einer Ausführungsform kann der Controller 130 die Form eines nicht-flüchtiger-(z. B. Flash-)Speicher-Controllers annehmen, welcher den nicht-flüchtigen Speicher formatieren kann, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, schlechte nicht-flüchtige Speicherzellen festlegen kann und Ersatzzellen zuteilen kann, die für zukünftige fehlerhafte Zellen ersetzt werden. Ein Teil der Ersatzzellen kann verwendet werden, um Firmware für den Betrieb des nicht-flüchtiger-Speicher-Controllers und die Implementierung anderer Merkmale aufzunehmen. Bei Betrieb, wenn der Host 100 Daten aus dem nicht-flüchtigen Speicher lesen muss oder Daten in den nicht-flüchtigen Speicher schreiben muss, kommuniziert er mit dem nicht-flüchtiger-Speicher-Controller. Falls der Host 100 eine logische Adresse bereitstellt, bei der Daten gelesen/geschrieben werden sollen, kann der Flash-Speichercontroller die vom Host 100 empfangene logische Adresse in eine physische Adresse im nicht-flüchtigen Speicher umwandeln. (Alternativ kann der Host 100 die physische Adresse bereitstellen.) Der nicht-flüchtiger-Speicher-Controller kann auch verschiedene Operationen mit einer unbestimmten Dauer aus der Perspektive des Hosts durchführen, wie beispielsweise, aber nicht darauf beschränkt, Wear-Levelling (Verteilung von Schreibvorgängen, um die Abnutzung von speziellen Speicherblöcken zu vermeiden, zu denen sonst wiederholt geschrieben werden würde) und Garbage-Collection (nachdem ein Block voll ist, werden nur die gültigen Seiten von Daten zu einem neuen Block bewegt, so dass der volle Block gelöscht und wiederverwendet werden kann). Weitere Informationen zu einer bestimmten Ausführungsform des Controllers 130 sind nachstehend in Verbindung mit 6 dargelegt. In general, the controller receives 130 Requirements for accessing the storage system from the storage controller 120 in the host 100 , processes and sends the requests to the non-volatile memory 140 and returns responses back to the memory controller 120 , In one embodiment, the controller 130 take the form of a non-volatile (e.g., flash) memory controller which can format the non-volatile memory to ensure that the memory operates properly, can set bad non-volatile memory cells and can allocate spare cells, which will be replaced for future faulty cells. A portion of the spare cells may be used to accommodate firmware for operating the non-volatile memory controller and implementing other features. When operating when the host 100 Data must read from the non-volatile memory or data in the non-volatile memory To write memory, it communicates with the non-volatile memory controller. If the host 100 provides a logical address where data is to be read / written, the flash memory controller can receive the information from the host 100 convert received logical address into a physical address in non-volatile memory. (Alternatively, the host 100 provide the physical address.) The non-volatile memory controller may also perform various operations of indefinite duration from the perspective of the host, such as, but not limited to, wear-leveling (distribution of writes to reduce the wear on specific ones) Avoid memory blocks that would otherwise be written to repeatedly) and garbage collection (after a block is full, only the valid pages of data are moved to a new block so that the full block can be erased and reused). Learn more about a specific embodiment of the controller 130 are in connection with 6 explained.

Eine nicht-flüchtige Speichervorrichtung 140 kann auch eine beliebige geeignete Form annehmen. Beispielsweise kann eine nicht-flüchtige Speichervorrichtung 140 einen einzelnen Speicher-Die oder mehrere Speicher-Dies enthalten und kann mit oder ohne internen Controller ausgestattet sein. Wie hierin verwendet, bezieht sich der Begriff „Die“ auf eine Sammlung von nicht-flüchtigen Speicherzellen und assoziierten Schaltungen zur Verwaltung des physischen Betriebs dieser nicht-flüchtigen Speicherzellen, welche auf einem einzelnen Halbleitersubstrat ausgebildet sind. Ein nicht-flüchtiger-Speicher-Die 104 kann ein beliebiges nicht-flüchtiges Speichermedium umfassen, einschließlich NAND-Flash-Speicherzellen, NOR-Flash-Speicherzellen, PCM, RRAM, OxRAM, CBRAM, MRAM, STT-RAM, FeRAM oder einer beliebigen anderen nicht-flüchtigen Technologie. Auch kann flüchtiger Speicher, welcher Nicht-Flüchtigkeit nachahmt, verwendet werden, wie beispielsweise ein flüchtiger Speicher, der batteriegesichert oder auf andere Weise mittels Hilfsstromquelle geschützt ist. Die Speicherzellen können die Form von Solid-State (z. B. Flash-)Speicherzellen annehmen und können one-time-programmable, few-time-programmable oder many-time-programmable sein. Die Speicherzellen können auch Single-Level-Cells (SLC), Multiple-Level-Cells (MLC), Triple-Level-Cells (TLC) sein oder andere Speicherzellen-Level-Technologien verwenden, welche jetzt bekannt sind oder später entwickelt werden. Auch können die Speicherzellen in einer zweidimensionalen oder dreidimensionalen Art und Weise gefertigt werden. Einige andere Speichertechnologien wurden oben erörtert, und eine weitere Erörterung möglicher Speichertechnologien, welche verwendet werden können, wird darüber hinaus unten bereitgestellt. Auch können unterschiedliche Speichertechnologien unterschiedliche Algorithmen (z. B. vorhandenes Programm und Wear-Levelling) aufweisen, welche auf diese Technologie zutreffen. A non-volatile storage device 140 may also take any suitable form. For example, a non-volatile memory device 140 a single memory-contains one or more memory dies and may be equipped with or without an internal controller. As used herein, the term "die" refers to a collection of nonvolatile memory cells and associated circuitry for managing the physical operation of these nonvolatile memory cells formed on a single semiconductor substrate. A non-volatile memory die 104 may include any non-volatile storage medium, including NAND flash memory cells, NOR flash memory cells, PCM, RRAM, OxRAM, CBRAM, MRAM, STT-RAM, FeRAM, or any other non-volatile technology. Also, volatile memory that mimics non-volatility may be used, such as a volatile memory that is battery backed or otherwise protected by an auxiliary power source. The memory cells may take the form of solid-state (e.g., flash) memory cells and may be one-time programmable, few-programmable or many-time programmable. The memory cells may also be single-level cells (SLC), multiple-level cells (MLC), triple-level cells (TLC) or use other memory cell level technologies now known or later developed. Also, the memory cells may be fabricated in a two-dimensional or three-dimensional manner. Some other storage technologies have been discussed above, and further discussion of possible storage technologies that may be used is further provided below. Also, different storage technologies may have different algorithms (eg, existing program and wear-leveling) that apply to this technology.

Zur Vereinfachung zeigt 1 eine einzelne Linie, welche den Controller 130 und die nicht-flüchtige Speichervorrichtung 140 verbindet; es versteht sich, dass diese Verbindung einen einzelnen Kanal oder mehrere Kanäle enthalten kann. Beispielsweise können in einigen Architekturen 2, 4, 8 oder mehr Kanäle zwischen dem Controller 130 und einer Speichervorrichtung 140 existieren. Dementsprechend können in einer beliebigen der hierin beschriebenen Ausführungsformen mehr als ein einzelner Kanal zwischen dem Controller 130 und der Speichervorrichtung 140 existieren, selbst wenn ein einzelner Kanal in den Zeichnungen gezeigt ist. For simplicity shows 1 a single line representing the controller 130 and the non-volatile storage device 140 links; it is understood that this connection may contain a single channel or multiple channels. For example, in some architectures, 2, 4, 8, or more channels may exist between the controller 130 and a storage device 140 exist. Accordingly, in any of the embodiments described herein, more than a single channel may exist between the controller 130 and the storage device 140 exist even if a single channel is shown in the drawings.

Der Host 100 und die Speichersysteme können eine beliebige geeignete Form annehmen. Beispielsweise nimmt das Speichermodul in einer Ausführungsform (in 2A gezeigt) die Form eines nicht-flüchtigen Dual-In-line-Speichermoduls (NV-DIMM, Non-Volatile Dual In-line Memory Module) 200 an, und der Host 100 nimmt die Form eines Computers mit einem Motherboard an, welches ein oder mehrere DIMMs akzeptiert. Im in 2A gezeigten NV-DIMM 200 gibt es neun nicht-flüchtige Speichervorrichtungen 40, und das NV-DIMM 200 weist eine Schnittstelle 210 auf, welche 9 Dateneingangs-/-ausgangs-DQ-Gruppen (DQ0–DQ8), einen Befehlsbus und einen Antwortbus umfasst. Natürlich sind dies lediglich Beispiele, und andere Implementierungen können verwendet werden. Beispielsweise zeigt 2B eine alternative Ausführungsform, in der das Speichersystem einen verteilten Controller 31 und einen Master-Controller 212 (der, obwohl nicht gezeigt, mit allen verteilten Controllern 31 verbunden ist) aufweist. Im Vergleich zum Speichersystem in 2A kommuniziert jede NVM-Vorrichtung 41 mit ihrem eigenen NVM-Controller 31, statt dass alle NVM-Vorrichtungen mit einem einzelnen NVM-Controller kommunizieren. In einer Ausführungsform führt der Master-Controller 212 jegliche erforderliche Synchronisierungsaktivität durch, einschließlich der Bestimmung, wann alle verteilten Controller 31 gelesen sind, um das RD_RDY-Signal zu senden, was im Folgenden detaillierter erörtert wird. The host 100 and the storage systems may take any suitable form. For example, in one embodiment (in 2A shown) the form of a non-volatile dual in-line memory module (NV-DIMM, non-volatile Dual In-line Memory Module) 200 to, and the host 100 takes the form of a computer with a motherboard that accepts one or more DIMMs. Im in 2A shown NV-DIMM 200 There are nine non-volatile storage devices 40 , and the NV-DIMM 200 has an interface 210 which comprises 9 data input / output DQ groups (DQ0-DQ8), a command bus and a response bus. Of course, these are just examples, and other implementations may be used. For example, shows 2 B an alternative embodiment in which the storage system is a distributed controller 31 and a master controller 212 (although not shown, with all distributed controllers 31 is connected). Compared to the storage system in 2A communicates each NVM device 41 with their own NVM controller 31 instead of all NVM devices communicating with a single NVM controller. In one embodiment, the master controller performs 212 through any required synchronization activity, including determining when all distributed controllers 31 are read to send the RD_RDY signal, which will be discussed in more detail below.

Wie oben erwähnt, können mehrere Speichersysteme verwendet werden, in denen Signale durch ein Speichersystem weitergeleitet werden können, um ein anderes zu erreichen. Dies ist in 3 gezeigt. In 3 liegt das Speichersystem A näher am Host 100 als das Speichersystem B. Der Pfeil 300 repräsentiert gemeinsam genutzte Speichereingangssignale, welche vom Host 100 an den Befehls-Pin sowohl in den ersten als auch zweiten Speichersystemen gesendet werden. Beispiele für gemeinsam genutzte Speichereingangssignale, welche verwendet werden können, umfassen, sind aber nicht darauf beschränkt, ein Adressensignal, ein Lesechipauswahlsignal, ein Bankgruppensignal, ein Befehlssignal, ein Aktivierungssignal, ein Taktfreigabesignal, ein Terminierungssteuersignal und ein Befehlsidentifikator(ID)-Signal. Der Pfeil 310 repräsentiert einen Speicherkanaltakt, welcher auch auf dem Befehls-Pin gesendet werden kann. Der Pfeil 320 repräsentiert gemeinsam genutzte Speicherausgangssignale, welche auf den DQ0–DQ8-Gruppen gesendet werden können. Beispiele für gemeinsam genutzte Speicherausgangssignale umfassen, sind aber nicht darauf beschränkt, Datensignale, Paritätssignale und Daten-Strobe-Signale. Der Pfeil 330 repräsentiert dedizierte Speichereingangssignale zum Speichersystem B, und der Pfeil 350 repräsentiert dedizierte Speichereingangssignale zum Speichersystem A. Beispiele für dedizierte Speichereingangssignale, welche auf dem Befehls-Pin gesendet werden können, umfassen, sind aber nicht darauf beschränkt, Taktfreigabesignale, Daten-Strobe-Signale, Chipauswahlsignale und Terminierungssteuersignale. Der Pfeil 340 repräsentiert eine vorrichtungsdedizierte Antwortleitung zum Speichersystem B, und der Pfeil 360 repräsentiert eine vorrichtungsdedizierte Antwortleitung zum Speichersystem A. Beispiele für Signale, welche auf den vorrichtungsdedizierten Antwortleitungen gesendet werden, die auf dem Befehls-Pin gesendet werden können, umfassen, sind aber nicht darauf beschränkt, Lesedatenbereitschafts(R_RDY)-Signale, ein Leseidentifikator(ID)-Signal und ein Schreibflusssteuersignal. Diese Signale werden im Folgenden detaillierter erörtert. As mentioned above, multiple memory systems may be used in which signals may be passed through one memory system to accomplish another. This is in 3 shown. In 3 Storage system A is closer to the host 100 as the storage system B. The arrow 300 represents shared memory input signals from the host 100 be sent to the command pin in both the first and second memory systems. Examples of shared memory input signals, which may be used include, but are not limited to, an address signal, a read chip select signal, a bank group signal, a command signal, an enable signal, a clock enable signal, a termination control signal, and a command identifier (ID) signal. The arrow 310 represents a memory channel clock that can also be sent on the command pin. The arrow 320 represents shared memory output signals that can be sent on the DQ0-DQ8 groups. Examples of shared memory output signals include, but are not limited to, data signals, parity signals, and data strobe signals. The arrow 330 represents dedicated memory input signals to the memory system B, and the arrow 350 represents dedicated memory input signals to the memory system A. Examples of dedicated memory input signals that may be transmitted on the command pin include, but are not limited to, clock enable signals, data strobe signals, chip select signals, and termination control signals. The arrow 340 represents a device dedicated response line to the storage system B, and the arrow 360 represents a device dedicated response line to the memory system A. Examples of signals sent on the device dedicated response lines that can be sent on the command pin include, but are not limited to, Read Data Readiness (R_RDY) signals, a Read Identifier (ID). Signal and a write flow control signal. These signals will be discussed in more detail below.

Ein Aspekt dieser Ausführungsformen ist, wie der NVM-Controller 130 im Speichersystem Lese- und Schreibbefehle handhabt. Bevor dieser Aspekt dieser Ausführungsformen besprochen wird, wird das Flussdiagramm 400 in 4 erörtert, um zu veranschaulichen, wie ein herkömmlicher Host Daten aus einem herkömmlichen DDR-basierten DRAM-DIMM liest. Das Flussdiagramm 400 wird in Verbindung mit dem Zeitdiagramm 500 in 5 erörtert. Wie in 4 gezeigt, wenn der Host Daten vom DIMM (als „Vorrichtung“ in 4 bezeichnet) (Vorgang 410) erfordert, sendet der Speichercontroller im Host einen Aktivierungsbefehl mit der oberen Adresse (Vorgang 420). Der Speichercontroller im Host sendet dann einen Lesebefehl mit der unteren Adresse (Vorgang 430). Dies wird als die Felder „Akt.“ und „Rd“ auf der Befehls-/Adressleitung in 5 gezeigt. Der Speichercontroller im Host wartet dann eine vorbestimmte Zeitdauer (manchmal als die „Präambelzeit“ bezeichnet) (Vorgang 440). Dies wird als „vordefinierte Verzögerung“ in 5 gezeigt. Nachdem die vorbestimmte („deterministische“) Zeitdauer abgelaufen ist, akzeptiert der Speichercontroller im Host die Daten (mit Daten-Strobes für feinkörnige Zeitsynchronisierung) (Vorgang 450) (Felder D1-DN auf der Datenleitung in 5), und die Daten werden an den Host bereitgestellt (Vorgang 460). One aspect of these embodiments is like the NVM controller 130 handles read and write commands in the storage system. Before discussing this aspect of these embodiments, the flowchart becomes 400 in 4 to illustrate how a conventional host reads data from a conventional DDR-based DRAM DIMM. The flowchart 400 becomes in connection with the time diagram 500 in 5 discussed. As in 4 shown when the host receives data from the DIMM (as a "device" in 4 designated) (operation 410 ), the memory controller in the host sends an activation command with the upper address (Operation 420 ). The memory controller in the host then sends a read command with the lower address (Operation 430 ). This is referred to as the "Act." And "Rd" fields on the command / address line in 5 shown. The memory controller in the host then waits a predetermined period of time (sometimes referred to as the "preamble time") (act 440 ). This is called a "predefined delay" in 5 shown. After the predetermined ("deterministic") time has elapsed, the memory controller in the host accepts the data (with data strobes for fine-grained time synchronization) (act 450 ) (Fields D1-DN on the data line in 5 ), and the data is provided to the host (operation 460 ).

Wie oben erwähnt, obgleich diese Interaktion zwischen einem Host und dem Speichersystem adäquat ist, wenn das Speichersystem ein DRAM-DIMM ist, können Komplikationen auftreten, wenn ein deterministisches Protokoll mit einem NV-DIMM verwendet wird, da der Mechanismus hinter dem Lesen und Schreiben in den nicht-flüchtigen Speicher zu Verzögerungen führen kann, welche die angegebene Zeitdauer für eine Lese- oder Schreiboperation gemäß dem Protokoll überschreiten. Um dies zu berücksichtigen, ermöglichen einige neu entstehende Standards „nicht-deterministische“ Lese- und Schreiboperationen. Gemäß derartigen Standards müssen Lese- und Schreiboperationen zum NV-DIMM nicht in einer bestimmten Zeitdauer abgeschlossen werden. As mentioned above, although this interaction between a host and the storage system is adequate when the storage system is a DRAM DIMM, complications may arise when using a deterministic protocol with an NV DIMM, since the mechanism behind reading and writing in the non-volatile memory may result in delays exceeding the specified time duration for a read or write operation according to the protocol. To accommodate this, some emerging standards allow for "non-deterministic" read and write operations. According to such standards, read and write operations to the NV-DIMM need not be completed in a certain amount of time.

Im Fall einer Leseoperation informiert das NV-DIMM den Host 100, wenn die angeforderten Daten bereit sind, so dass der Host sie dann abrufen kann. Dies ist in den Flussdiagrammen 600, 700 in 6 und 7 und dem Zeitdiagramm 800 in 8A gezeigt. Wie in 6 gezeigt, wenn der Host 100 Daten aus dem Speichersystem anfordert (Vorgang 610), erzeugt der Host 100 einen Doppeldatenratenidentifikator (DDR-ID) für die Anforderung (Vorgang 620). Der Host 100 assoziiert dann die DDR-ID mit einer Host-Anforderungs-ID (z. B. einer ID von der CPU oder einer anderen Entität im Host 100, der die Daten angefordert hat) (Vorgang 630). Als Nächstes sendet der Host 100 den Aktivierungsbefehl und die obere Adresse (Vorgang 640) und sendet dann den Lesebefehl, die untere Adresse und die DDR-ID (Vorgang 650). Dies wird durch die Felder „Akt.“ und „Rd +ID“ auf der Befehls-/Adressleitung in 8A gezeigt. ( 8B ist ein weiteres Zeitdiagramm 810 für den oben erörterten Leseprozess, aber hier gibt es zwei Lesebefehle, und der später empfangene Lesebefehl (Lesebefehl B) wird vor dem zuerst empfangenen Lesebefehl (Lesebefehl B) abgeschlossen. Als solche werden die Daten B vor den Daten A an den Host 100 zurückgegeben.) In the case of a read operation, the NV-DIMM informs the host 100 when the requested data is ready so that the host can retrieve it. This is in the flowcharts 600 . 700 in 6 and 7 and the timing diagram 800 in 8A shown. As in 6 shown when the host 100 Request data from the storage system (operation 610 ), the host generates 100 a double data rate identifier (DDR-ID) for the request (operation 620 ). The host 100 then associates the DDR ID with a host request ID (eg, an ID from the CPU or other entity in the host 100 who requested the data) (operation 630 ). Next, the host sends 100 the activation command and the upper address (Action 640 ) and then sends the read command, the lower address and the DDR ID (Action 650 ). This is indicated by the fields "Act." And "Rd + ID" on the command / address line in 8A shown. ( 8B is another time chart 810 for the reading process discussed above, but here there are two read commands, and the later received read command (read command B) is completed before the first received read command (read command B). As such, the data B before the data A is sent to the host 100 returned.)

In Reaktion auf das Empfangen des Lesebefehls nimmt der Controller 130 eine unbestimmte Zeitdauer in Anspruch, um die Daten aus dem nicht-flüchtigen Speicher 140 zu lesen. Nachdem die Daten gelesen wurden, teilt der Controller 130 dem Host 100 durch Senden eines R_RDY-Signals auf dem Antwortbus mit, dass die Daten bereit sind (Vorgang 710 in 7). Als Antwort sendet der Host 100 einen Befehl „Senden“ auf der Befehls-/Adressenleitung (Vorgang 720), und nach einer vordefinierten Verzögerung gibt der Controller 130 die Daten an den Host 100 zurück (Vorgang 730) (wie durch die Felder „D1“-„DN“ auf der Datenleitung und das Feld „ID“ auf der ID-Leitung in 8B gezeigt). Der Speichercontroller 120 im Host 100 akzeptiert dann die Daten und die DDR-ID (Vorgang 740). Als Nächstes bestimmt der Speichercontroller 120, ob die DDR-ID mit einer speziellen Host-ID von einer der CPUs 110 im Host 100 assoziiert ist (Vorgang 750). Falls dies der Fall ist, gibt der Speichercontroller 120 die Daten an die korrekte CPU 110 zurück (Vorgang 760); andernfalls ignoriert der Speichercontroller 120 die Daten oder gibt eine Ausnahme aus (Vorgang 770). In response to receiving the read command, the controller takes 130 an indefinite amount of time to the data from the non-volatile memory 140 to read. After the data has been read, the controller shares 130 the host 100 by sending a R_RDY signal on the reply bus indicating that the data is ready (act 710 in 7 ). In response, the host sends 100 a "Send" command on the command / address line (Action 720 ), and after a predefined delay gives the controller 130 the data to the host 100 back (operation 730 ) (as indicated by the fields "D1" - "DN" on the data line and the field "ID" on the ID line in 8B shown). The memory controller 120 in the host 100 then accepts the data and the DDR ID (operation 740 ). Next, the memory controller determines 120 whether the DDR ID with a specific host ID from any of the CPUs 110 in the host 100 is associated (process 750 ). If so, the memory controller gives 120 the data to the correct CPU 110 back (operation 760 ); otherwise, the memory controller ignores 120 the data or returns an exception (operation 770 ).

Im Fall einer Schreiboperation kann der Host 100 dahingehend eingeschränkt werden, dass er mehr als eine bestimmte Anzahl von ausstehenden Schreibbefehlen hat, um sicherzustellen, dass die nicht-flüchtige Speichervorrichtung nicht mehr Schreibbefehle empfängt, als sie handhaben kann. Dies wird im Schreibzeitdiagramm 820 in 8C gezeigt. Wie in 8C gezeigt, verringert der Host 100 jedes Mal, wenn er einen Schreibbefehl ausgibt, seine Schreibflusssteuerungs-Credits (in der Zeichnung mit „WC“ gekennzeichnet). Wenn eine Schreiboperation abgeschlossen ist, sendet der Mediencontroller 130 eine Antwort an den Host 100, damit er seine Schreibflusssteuerungs-Credits erhöht. In the case of a write operation, the host may 100 be limited in that it has more than a certain number of pending write commands to ensure that the non-volatile memory device receives no more write commands than it can handle. This will be in the writing time diagram 820 in 8C shown. As in 8C shown, the host decreases 100 each time he issues a write command, his write flow control credits (marked "WC" in the drawing). When a write operation completes, the media controller sends 130 a response to the host 100 for him to increase his write flow control credits.

Das oben erörterte Protokoll ist eine Ausführungsform eines NVRAM-Protokolls, welches Lese- und Schreiboperationen von unvorhersagbarer Dauer unterstützt. Wie zuvor erörtert, kann der Controller 130 in einigen Ausführungsformen den nicht-deterministischen Aspekt in Lese- und Schreiboperationen ausnutzen, um zeitaufwendige Aktionen durchzuführen (die hierin als Operationen mit einer unbestimmten Dauer aus der Perspektive des Hosts bezeichnet werden können), für die er gemäß herkömmlichen DRAM-basierten DIMM-Standards möglicherweise nicht die Zeit hat. Diese Operationen, welche eine unbestimmte Dauer aus der Perspektive des Hosts aufweisen, wie beispielsweise Speicher- und Datenverwaltungsoperationen, können für den Betrieb des NV-DIMM wichtig sein. Beispielsweise kann eine nicht-flüchtige Speichervorrichtung 140 im Vergleich zu DRAM eine geringere Ausdauer (d. h. Anzahl der Schreibvorgänge vor einem Fehler) aufweisen und Daten weniger zuverlässig speichern (z. B. aufgrund von internen Speicherfehlern, die verursachen, dass Bits inkorrekt gespeichert werden). Diese Probleme können bei neu entstehenden nicht-flüchtigen Speichertechnologien, welche wahrscheinlich als DRAM-Ersatz in einem NV-DIMM verwendet werden würden, sogar noch ausgeprägter sein. Als solches nutzt das NV-DIMM in einer Ausführungsform aus, dass es nicht „unter Druck steht“, um Operationen mit einer unbestimmten Dauer aus der Perspektive des Hosts durchzuführen (z. B. Wear-Levelling- und Fehlerkorrekturoperationen), welche es gemäß herkömmlichen DRAM-basierten DIMM-Standards möglicherweise in der zugewiesenen Zeit nicht durchführen kann. The protocol discussed above is an embodiment of an NVRAM protocol that supports read and write operations of unpredictable duration. As previously discussed, the controller may 130 in some embodiments, exploit the non-deterministic aspect in read and write operations to perform time-consuming actions (which may be referred to herein as indefinite-duration operations from the perspective of the host) for which it may be in accordance with conventional DRAM-based DIMM standards does not have the time. These operations, which have an indeterminate duration from the perspective of the host, such as memory and data management operations, may be important to the operation of the NV-DIMM. For example, a non-volatile memory device 140 have lower stamina (ie, number of writes before failure) compared to DRAM and store data less reliably (eg, due to internal memory errors that cause bits to be stored improperly). These problems can be even more pronounced with emerging non-volatile memory technologies that would likely be used as a DRAM replacement in an NV-DIMM. As such, in one embodiment, the NV-DIMM exploits that it is not "pressurized" to perform operations of indeterminate duration from the perspective of the host (eg, wear-leveling and error-correcting operations) according to conventional practices DRAM-based DIMM standards may not perform in the assigned time.

Im Allgemeinen bezieht sich eine Operation, welche eine unbestimmte Dauer aus der Perspektive des Hosts aufweist, auf eine Operation, welche (1) naturgemäß keine vorbestimmte Dauer aufweist (z. B. da die Dauer der Operation von einer oder mehreren Variablen abhängt) oder (2) eine vorbestimmte Dauer aufweist, aber diese Dauer dem Host nicht bekannt ist (z. B. kann eine Entschlüsselungsoperation eine vorbestimmte Dauer aufweisen, aber diese Dauer ist aus der Perspektive des Hosts unbestimmt, da der Host nicht weiß, ob das Speichersystem eine Entschlüsselungsoperation durchführen wird oder nicht). Eine „Operation, welche eine unbestimmte Dauer aus der Perspektive des Hosts aufweist“ kann eine beliebige geeignete Form annehmen. Beispielsweise kann eine derartige Operation eine „Speicher- und Datenverwaltungsfunktion“ sein, welche eine Aktion seitens des Controllers 130 ist, um die Gesundheit und Integrität der NVM-Vorrichtung zu verwalten. Beispiele der Speicher- und Datenverwaltungsfunktion umfassen, sind aber nicht darauf beschränkt, Wear-Levelling, Datenbewegung, Schreiben/Lesen von Metadaten (z. B. Protokollierung, Controllerstatus- und Zustandsverfolgung, Wear-Levelling-Verfolgungsaktualisierungen), Datendecodierungsvariationen (ECC-Engine-Variationen (Syndrome, BCH vs. LDPC, Soft-Bit-Decodierungen), Soft-Lesevorgänge oder erneute Lesevorgänge, geschichteten ECC, der erhöhte Transfers und Lesevorgänge erfordert, RAID- oder Paritätslesevorgänge mit ihren kompoundierten Decodierungs- und Komponentenlatenzen), Ressourcenkonflikt (ECC-Engine, Kanäle, NVM-Eigenschaft (Die, Block, Ebene, I/O-Schaltungen, Puffer), DRAM-Zugriff, Scrambler, andere Hardware-Engines, anderen RAM-Konflikt), Controllerausnahmen (Bugs, Peripherien (Temperatur, NOR), Mediencharakterisierungsaktivitäten (Bestimmen des effektiven Alters von Speicherzellen, Bestimmen der Bitfehlerrate (BER, Bit Error Rate) oder Sondieren von Speicherdefekten). Ferner kann der Mediencontroller Elemente wie beispielsweise Caches einführen, welche die inverse Wirkung haben (schnelle Programme, temporäre Schreibvorgänge mit reduzierter Retention oder anderen Eigenschaften) und dazu dienen, Lese- oder Schreiboperationen auf eine Weise zu beschleunigen, die schwierig deterministisch vorherzusagen sein würde. In general, an operation that has an indeterminate duration from the perspective of the host refers to an operation which (1) naturally does not have a predetermined duration (e.g., since the duration of the operation depends on one or more variables) or ( 2) has a predetermined duration, but this duration is not known to the host (eg, a decryption operation may have a predetermined duration, but this duration is indeterminate from the perspective of the host because the host does not know if the storage system is decrypting will perform or not). An "operation having an indefinite duration from the perspective of the host" may take any suitable form. For example, such an operation may be a "storage and data management function" which is an action on the part of the controller 130 is to manage the health and integrity of the NVM device. Examples of storage and data management functionality include, but are not limited to, wear-leveling, data movement, metadata read / write (e.g., logging, controller status and status tracking, wear-leveling tracking updates), data decoding variations (ECC engine). Variations (syndromes, BCH vs. LDPC, soft-bit decoding), soft reads or re-reads, layered ECC requiring increased transfers and reads, RAID or parity reads with their compounded decode and component latencies), resource conflict (ECC) Engine, channels, NVM property (die, block, level, I / O, buffers), DRAM access, scrambler, other hardware engines, other RAM conflict), controller exceptions (bugs, peripherals (temperature, NOR) Media characterization activities (determining the effective age of memory cells, determining bit error rate (BER), or probing memory defects Further, the media controller may introduce elements, such as caches, that have the inverse effect (fast programs, temporary writes with reduced retention or other properties) and serve to speed up read or write operations in a way that would be difficult to predict deterministically ,

Ferner können Operationen mit unbestimmter Dauer aus der Perspektive des Hosts Programmauffrischungen, Schritte zur Verifikation (z. B. Verifikation überspringen, reguläre Einstellungen, enge Einstellungen), Datenbewegung von einem Medium/Zustand zu einem anderen Speicherort oder anderen Zustand (z. B. SLC zu TLC, ReRam zu NAND, STT-MRAM zu ReRam, Burst-Einstellungen zu Hardened-Einstellungen, niedriger ECC zu hoher ECC) und längere Medieneinstellungen (z. B. einfachere Spannungstransienten) umfassen, sind aber nicht darauf beschränkt. Solche Operationen können beispielsweise zur Ausdauerausdehnung, Retentionsverbesserung oder -abschwächung und Leistungsbeschleunigung (z. B. schnelles Schreiben dieses Daten-Bursts oder stärkeres Programmieren dieser Daten in der bevorzugten Richtung, so dass sich zukünftige Lesevorgänge schneller stabilisieren) durchgeführt werden. Further, indefinite duration operations from the perspective of the host may include program refreshes, verification steps (eg, skip verification, regular settings, tight settings), data movement from one media / state to another storage location, or other state (e.g., SLC TLC, ReRam to NAND, STT-MRAM to ReRam, burst settings to Hardened settings, low ECC to high ECC), and longer media settings (eg, simpler voltage transients) include, but are not limited to. Such operations can for example, for endurance expansion, retention improvement or attenuation, and performance acceleration (eg, fast writing of this data burst or more programming of that data in the preferred direction so that future reads will stabilize faster).

Der Medien/NVM-Controller 130 kann mit verschiedenen Hardware- und/oder Softwaremodulen ausgestattet sein, um diese Speicher- und Datenverwaltungsoperationen durchzuführen. Wie hierin verwendet, kann ein „Modul“ beispielsweise die Form einer verpackten funktionellen Hardwareeinheit, welche zur Verwendung mit anderen Komponenten konzipiert ist, eines Teils eines Programmcodes (z. B. Software oder Firmware), welcher durch einen (Mikro-)Prozessor oder Verarbeitungsschaltungen ausführbar ist, welche in der Regel eine bestimmte Funktion von verwandten Funktionen ausführen, oder einer eigenständigen Hardware- oder Softwarekomponente, welche über eine Schnittstelle mit einem größeren System verbunden ist, annehmen. The media / NVM controller 130 may be equipped with various hardware and / or software modules to perform these memory and data management operations. For example, as used herein, a "module" may take the form of a packaged functional hardware unit designed for use with other components, a portion of program code (e.g., software or firmware) provided by a (micro) processor or processing circuitry executable, which typically perform a particular function of related functions, or a stand-alone hardware or software component interfaced to a larger system.

9 ist ein Blockschaltbild eines NVM-Controllers 130 einer Ausführungsform, welches verschiedene Module zeigt, die verwendet werden können, um Speicher- und Datenverwaltungsfunktionen durchzuführen. In dieser bestimmten Ausführungsform ist der Controller 130 ausgelegt, um Verschlüsselung, Fehlerkorrektur, Wear-Levelling, Befehlsplanung und Datenaggregation durchzuführen. Es sollte jedoch beachtet werden, dass der Controller 130 ausgelegt sein kann, um andere Arten und Anzahlen von Speicher- und Datenverwaltungsfunktionen durchzuführen. 9 is a block diagram of an NVM controller 130 an embodiment showing various modules that may be used to perform memory and data management functions. In this particular embodiment, the controller is 130 Designed to perform encryption, error correction, wear-leveling, command-planning and data aggregation. It should be noted, however, that the controller 130 may be designed to perform other types and numbers of memory and data management functions.

Wie in 9 gezeigt, umfasst dieser NVM-Controller 900 eine physische Schicht 900 und eine nicht-flüchtige RAM(„SNVRAM“)-Protokolllogikschnittstelle (die Befehls- und Speicherortdecodierung umfasst) 905, welche verwendet wird, um mit dem Host 100 (über den Speichercontroller 120) zu kommunizieren. Die physische Schicht 900 ist für das Latching in den Daten und Befehlen verantwortlich, und die Schnittstelle 905 trennt die Befehle und Speicherorte und handhabt zusätzliche Signalisierungs-Pins zwischen dem Host 100 und dem Controller 130. Der Controller 130 umfasst auch eine Anzahl N von Speicherzustandsautomaten (MemFSMs, Memory Finite State Machines) 910 und eine physische NVM-Schicht (Phy) 910, welche mit einer Anzahl M von nicht-flüchtigen Speichervorrichtungen 140 kommunizieren. As in 9 shown includes this NVM controller 900 a physical layer 900 and a nonvolatile RAM ("SNVRAM") protocol logic interface (including instruction and memory location decoding) 905 which is used to communicate with the host 100 (via the memory controller 120 ) to communicate. The physical layer 900 is responsible for the latching in the data and commands, and the interface 905 separates the commands and memory locations and handles additional signaling pins between the host 100 and the controller 130 , The controller 130 also includes a number N of memory state machines (MemFSMs, Memory Finite State Machines) 910 and a physical NVM layer (Phy) 910 , which are connected to a number M of non-volatile memory devices 140 communicate.

Zwischen diesen Eingangs- und Ausgangsteilen weist der Controller 130 einen Schreibpfad rechts, einen Befehlspfad in der Mitte und einen Lesepfad links auf. Obwohl nicht gezeigt, kann der Controller 130 einen Prozessor (z. B. eine CPU, die Firmware ausführt) aufweisen, welcher die verschiedenen in 9 gezeigten Elemente steuern kann und über eine Schnittstelle mit ihnen verbunden sein kann. Wendet man sich zunächst einer Schreiboperation zu, nachdem ein Befehl und Speicherort durch die Schnittstelle 905 decodiert wurden, wird die Adresse zu einem Wear-Levelling-Adressübersetzungsmodul 955 gesendet. In dieser Ausführungsform sendet der Host 100 eine logische Adresse mit einem Befehl, Daten zu schreiben, und das Wear-Levelling-Adressübersetzungsmodul 955 übersetzt die logische Adresse in eine physische Adresse im Speicher 140. Bei dieser Übersetzung shuffelt das Wear-Levelling-Adressübersetzungsmodul 955 die Daten, welche bei einer physischen Adresse platziert werden sollen, die nicht sehr abgenutzt wurde. Das Wear-Levelling-Datenbewegungsmodul 960 ist für die Neuanordnung der Daten verantwortlich, falls kein ausreichend nicht abgenutzter Speicherbereich innerhalb des Adressübersetzungsschemas gefunden werden kann. Die resultierende physische Adresse, zusammen mit dem assoziierten Befehl und der assoziierten Adresse, wo die Daten in lokalen Puffern innerhalb des Controllers 130 gefunden werden können, werden in das NVM-I/O-Scheduling-Modul 940 eingegeben, welches Lese- und Schreiboperationen zum Speicher 140 plant. Das NVM-I/O-Scheduling-Modul 940 kann andere Funktionen zur Planung umfassen, wie beispielsweise, aber nicht darauf beschränkt, Löschvorgänge, Einstellungsänderungen und Defektverwaltung. The controller points between these input and output parts 130 a write path on the right, a command path in the middle, and a read path on the left. Although not shown, the controller may 130 a processor (eg, a CPU that executes firmware) having the various in 9 can control elements shown and connected via an interface with them. Turning first to a write operation after a command and location through the interface 905 the address becomes a wear-leveling address translation module 955 Posted. In this embodiment, the host sends 100 a logical address with a command to write data and the wear-leveling address translation module 955 translates the logical address into a physical address in memory 140 , In this translation, the wear leveling translation module shuffles 955 the data to be placed at a physical address that has not been very worn. The wear-leveling data movement module 960 is responsible for rearranging the data if a sufficiently unused space within the address translation scheme can not be found. The resulting physical address, along with the associated command and associated address, where the data resides in local buffers within the controller 130 can be found in the NVM I / O scheduling module 940 which reads and writes to memory 140 plans. The NVM I / O scheduling module 940 may include other functions for planning, such as, but not limited to, deletion, setting changes, and defect management.

In dieser Ausführungsform werden die Daten, parallel zur Adressübersetzung, für eine Schreiboperation zunächst von der Verschlüsselungs-Engine 925 verschlüsselt. Als Nächstes erzeugt der Medienfehlerkorrekturcode(ECC, Error Correction Code)-Codierer 930 ECC-Schutz für die Daten im Ruhezustand im NVM-Speicher 140. Der Schutz von Daten im Ruhezustand kann bevorzugt sein, da nicht-flüchtige Speicher viel anfälliger für Fehler als DRAM sind, wenn zuvor gespeicherte Daten abgerufen werden. Jedoch ist das Decodieren von Daten mit Fehlerkorrektur nicht immer eine konstante Zeitoperation, so dass es schwierig sein würde, solche Operationen gemäß deterministischen Protokollen durchzuführen. Obgleich in diesem Beispiel ECC verwendet wird, versteht es sich, dass ein beliebiges geeignetes Datenschutzschema verwendet werden kann, wie beispielsweise, aber nicht darauf beschränkt, zyklische Redundanzprüfung (CRC, Cyclic Redundancy Check), redundantes Array von unabhängigen Festplatten (RAID, Redundant Array of Independent Disks), Scrambling, Datengewichtung/-modulation oder andere Änderungen zum Schutz vor Verschlechterung aufgrund physischer Ereignisse wie Temperatur, Zeit und Spannungsbelastung (DRAM ist auch fehleranfällig, aber NVM ist anfällig in Bezug auf andere Fehler. Somit erfordert jedes NVM im Ruhezustand wahrscheinlich ein anderes Schutzschema. Oft ist es ein Kompromiss zwischen Latenz und Kosten). Obgleich nicht gezeigt, um die Zeichnung zu vereinfachen, sollte auch beachtet werden, dass andere Datenschutzsysteme vom Controller 130 verwendet werden können, um Daten zu schützen, wenn sie „unterwegs“ zwischen dem Host 100 und dem Controller 130 sind und wenn sie sich im Controller 130 bewegen (z. B. unter Verwendung von CRC, ECC oder RAID). In this embodiment, the data, parallel to the address translation, for a write operation is first obtained by the encryption engine 925 encrypted. Next, the media error correction code (ECC) generates an error correction code encoder 930 ECC protection for data in idle state in NVM memory 140 , Data protection at rest may be preferred because non-volatile memories are much more susceptible to errors than DRAM when retrieving previously stored data. However, decoding data with error correction is not always a constant time operation, so it would be difficult to perform such operations according to deterministic protocols. Although ECC is used in this example, it will be understood that any suitable privacy scheme may be used, such as, but not limited to, cyclic redundancy check (CRC), redundant array of independent hard drives (RAID, redundant array of Independent disks), scrambling, data weighting / modulation, or other changes to protect against deterioration due to physical events such as temperature, time, and voltage stress (DRAM is also prone to error, but NVM is vulnerable to other errors.) Thus, each NVM in idle state probably requires one other Protection scheme. Often it is a trade-off between latency and cost). Although not shown to simplify the drawing, it should also be noted that other privacy systems from the controller 130 can be used to protect data when "on the go" between the host 100 and the controller 130 are and if they are in the controller 130 move (eg using CRC, ECC or RAID).

Wie oben erwähnt, können andere Datenschutzschemata als ECC verwendet werden. In den folgenden Absätzen werden einige zusätzliche Informationen über verschiedene Datenschutzschemata bereitgestellt. As mentioned above, other privacy schemes may be used as ECC. The following paragraphs provide some additional information about different privacy schemes.

In Bezug auf ECC ermöglichen einige Ausführungsformen von Fehlerprüfungscodes, wie beispielsweise BCH oder andere Hamming-Codes, der Decodierungs-Engine, welche ein nahezu momentanes Syndrom verwenden kann, eine Prüfung, um die Richtigkeit der Daten zu validieren. Jedoch kann ein Syndromprüfungsfehler die Lösung von komplexen algebraischen Gleichungen mit sich bringen, was zu einer signifikanten Verzögerung führen kann. Falls darüber hinaus mehrere Syndromprüfungsfehler gleichzeitig auftreten, können hardwareressourcengenerierte Backlogs aufgrund der Nichtverfügbarkeit von Hardwareressourcen für die Decodierung vorhanden sein. Jedoch können diese gelegentlichen Verzögerungen durch Verzögerung der Lesebereitschaftsbenachrichtigung an den Host gehandhabt werden. Andere Codierungsschemata, wie beispielsweise LDPC oder zusätzliche CRC-Prüfungen, können auch für eine effizientere Nutzung von Platz oder höherer Zuverlässigkeit eingeschlossen werden, und obwohl diese anderen Schemata wahrscheinlich zusätzliche zeitliche Variationen aufweisen, um die aus dem Speichermedium kommenden Daten zu verarbeiten, können diese Variationen auch durch eine einfache Verzögerung des Lesebereitschaftssignals gehandhabt werden. With respect to ECC, some embodiments of error checking codes, such as BCH or other Hamming codes, allow the decoding engine, which can use near-instantaneous syndrome, to validate the validity of the data. However, a syndrome check error can bring about the solution of complex algebraic equations, which can lead to a significant delay. In addition, if multiple syndrome check errors occur simultaneously, hardware resource generated backlogs may be present due to the unavailability of hardware resources for decoding. However, these occasional delays can be handled by delaying read ready notification to the host. Other coding schemes, such as LDPC or additional CRC checks, may also be included for more efficient use of space or higher reliability, and although these other schemes are likely to have additional temporal variations to process the data coming from the storage medium, these variations can can also be handled by a simple delay of read ready signal.

Eine weitere Form von Datenschutz kann die Form von Soft-Bit-Decodierung annehmen, wobei der Binärwert der im Medium gespeicherten Daten mit einem höheren Vertrauen gemessen wird, indem die Analogwerte der im physischen Speichermedium gespeicherten Daten mehrere Male gemessen werden, relativ zu mehreren Schwellenwerten. Derartige Techniken werden bei der Durchführung länger dauern und können zusätzliche Variabilität zum kombinierten Datenlese- und Decodierungsprozess hinzufügen. Jedoch können diese zusätzlichen Verzögerungen bei Bedarf gut gehandhabt werden, indem das Lesebereitschaftssignal zurück an den Host hinausgezögert wird. Another form of data protection may take the form of soft bit decoding wherein the binary value of the data stored in the medium is measured with a higher confidence by measuring the analog values of the data stored in the physical storage medium several times, relative to several threshold values. Such techniques will take longer to implement and may add additional variability to the combined data read and decode process. However, these additional delays can be handled well if desired by delaying the read ready signal back to the host.

Ferner kann Zuverlässigkeit noch unter Verwendung von verschachtelten oder geschichteten Fehlerkorrekturschemata hinzugefügt werden. Beispielsweise können die Daten im Medium codiert werden, so dass die Daten N Fehler aus allen gelesenen A Bytes überleben können und M (wobei M>N) Fehler aus allen gelesenen B (wobei B>A) Bytes überleben können. Ein kleiner Lesevorgang der Größe A kann somit für einen schnellen Betrieb optimal, aber angesichts eines sehr schlechten Datenblocks mit mehr als N Fehlern suboptimal für die Datenzuverlässigkeit sein. Gelegentliche Probleme in diesem Schema können korrigiert werden, indem zuerst A Bytes gelesen und validiert werden. Falls Fehler bestehen bleiben, hat der Controller die Möglichkeit, den viel größeren Block zu lesen, mit der Strafe von einer Verzögerung, aber mit der erfolgreichen Decodierung der Daten. Dies ist eine weitere Notfalldecodierungsoption, welche durch die nicht-deterministischen Lese-Timings ermöglicht wird, die durch den SNVRAM-unterstützten Mediencontroller gewährt werden. Furthermore, reliability can still be added using nested or layered error correction schemes. For example, the data in the medium can be encoded so that the data can survive N errors from all read A bytes and M (where M> N) can survive errors from all read B (where B> A) bytes. A size A small read may thus be optimal for fast operation, but suboptimal for data reliability given a very poor data block with more than N errors. Occasional problems in this scheme can be corrected by first reading and validating A bytes. If errors persist, the controller has the ability to read the much larger block with the penalty of a delay, but with the successful decoding of the data. This is another emergency decoding option enabled by the non-deterministic read timings granted by the SNVRAM supported media controller.

Auch könnten grobe Fehlfunktionen einer bestimmten Speichervorrichtung mittels RAID-Techniken codiert werden. Daten könnten über eine Mehrzahl von Speichervorrichtungen verteilt werden, um der kompletten Fehlfunktion einer bestimmten Anzahl von Speichervorrichtungen innerhalb dieses Satzes entgegenzukommen. Ersatzspeichervorrichtungen könnten als Fail-in-Place-Ersatz in einem Speichermodul eingeschlossen werden, um Redundanzdaten zu erhalten, sobald eine schlechte Speichervorrichtung angetroffen wird. Also, gross malfunctions of a particular storage device could be encoded using RAID techniques. Data could be distributed across a plurality of memory devices to accommodate the complete malfunction of a particular number of memory devices within that set. Spare memory devices could be included as a fail-in-place replacement in a memory module to obtain redundancy data once a bad memory device is encountered.

Zurückkehrend zu 9, nachdem der Medienfehlerkorrekturcode(ECC, Error Correction Code)-Codierer 930 ECC-Schutz für die Daten generiert, werden die Daten zum Schreib-Cacheverwaltungsmodul 935 gesendet, welches bestimmt, ob Platz in den Schreib-Datencachepuffern 945 vorhanden ist oder nicht und wo die Daten in diesen Puffern 945 abgelegt werden sollen. Die Daten werden in den Schreib-Datencachepuffern 945 gespeichert, wo sie bis zum Lesen gespeichert werden. Falls also eine Verzögerung in der Planung des Schreibbefehls vorhanden ist, können die Daten im Schreib-Datencachepuffer 945 auf unbestimmte Zeit gespeichert werden, bis der Speicher 140 bereit ist, die Daten zu empfangen. Returning to 9 after the Media Error Correction Code (ECC) encoder 930 ECC protection for the data generated, the data becomes the write cache management module 935 which determines whether to buffer space in the write data cache 945 exists or not and where the data in these buffers 945 should be stored. The data is buffered in the write data cache 945 stored where they are stored until reading. Thus, if there is a delay in the scheduling of the write command, the data in the write data cache buffer 945 be stored indefinitely until the memory 140 is ready to receive the data.

Sobald der Schreibbefehl, welcher mit diesem Schreib-Datencachepuffereintrag assoziiert ist, in der Warteschlange nach vorne kommt, wird der Dateneintrag an die NVM-Schreib-I/O-Warteschlange 950 weitergeleitet. Wenn durch den NVM-I/O-Scheduler 940 angezeigt, wird der Befehl vom NVM-I/O-Scheduler 940 an das NVM-Daten-Routing-, Befehls-Routing- und Datenaggregationsmodul 920 weitergeleitet, und die Daten werden aus der NVM-Schreib-I/O-Warteschlange 950 an das NVM-Daten-Routing-, Befehls-Routing- und Datenaggregationsmodul 920 weitergeleitet. Der Befehl und die Daten werden dann an den entsprechenden Kanal weitergeleitet. Der Speicherzustandsautomat (MemFSM, Memory Finite State Machine) 910 ist für das Parsing der Befehle in feinkörnigere, NVM-spezifische Befehle und die Steuerung des Timings, wann diese Befehle an die NVM-Vorrichtungen 140 verteilt werden, verantwortlich. Das NVM Phy 915 steuert das Timing auf ein noch feineres Niveau, wobei sichergestellt wird, dass die Daten- und Befehlsimpulse in gut synchronisierten Intervallen in Bezug auf den NVM-Takt angeordnet sind. As soon as the write command associated with this write cache buffer entry comes forward in the queue, the data entry is sent to the NVM write I / O queue 950 forwarded. If through the NVM I / O scheduler 940 is displayed, the command is issued by the NVM I / O Scheduler 940 to the NVM Data Routing, Command Routing, and Data Aggregation module 920 forwarded and the data is taken from the NVM Write I / O Queue 950 to the NVM data routing, command routing and Data aggregation module 920 forwarded. The command and the data are then forwarded to the appropriate channel. The memory state machine (MemFSM, Memory Finite State Machine) 910 This is for parsing the commands into finer-grained, NVM-specific commands and controlling the timing of these commands to the NVM devices 140 be responsible. The NVM Phy 915 controls the timing to an even finer level, ensuring that the data and command pulses are located at well-synchronized intervals with respect to the NVM clock.

Wendet man sich nun dem Lesepfad zu, wenn Daten von Lesebefehlen von den NVM-Vorrichtungen 140 zurückkehren, stellt das NVM-Daten-Routing-, Befehls-Routing- und Datenaggregationsmodul 920 die Lesedaten in die NVM-Lese-I/O-Warteschlange 965. In dieser Ausführungsform können die Lesedaten eine von drei Formen annehmen: Daten, welche von einem Benutzer angefordert werden, NVM-Registerdaten (für den internen Gebrauch durch den Controller 130) und Schreibvalidierungsdaten. In anderen Ausführungsformen können eine oder mehrere dieser Datenklassen in anderen Warteschlangen gehalten werden. Falls die Daten für interne Zwecke gelesen wurden, werden sie vom internen Leseverarbeitungsmodul 960 verarbeitet (z. B. zum Prüfen, ob zuvor geschriebene Daten korrekt geschrieben wurden, bevor eine Bestätigung zurück an den Host 100 gesendet wird oder eine Neuschreibanforderung an den Scheduler 940 gesendet wird). Falls die Daten vom Benutzer angefordert wurden, werden Metadaten, welche die Befehls-ID angeben, die mit den Lesedaten assoziiert ist, an die Daten angehängt. Diese Befehls-ID-Metadaten werden mit den Lesedaten assoziiert, wenn sie durch die Lese-Pipeline übertragen werden (wie durch den Doppelpfeil angezeigt). Die Daten werden dann zum Medien-ECC-Decodierer 975 gesendet, welcher die Daten decodiert, und dann zum Entschlüsselungsmodul 980, welches die Daten entschlüsselt, bevor sie zum Lesedatencache 955 gesendet werden. Die Daten bleiben im Lesedatencache 955, bis der Host 100 sie durch Identifizieren des Befehls-ID-Blocks anfordert. Zu diesem Zeitpunkt werden die Daten an die Schnittstelle 905 und physische Schicht 900 zur Übertragung an den Host 100 gesendet. Turning now to the read path when data read commands from the NVM devices 140 return, provides the NVM Data Routing, Command Routing and Data Aggregation module 920 the read data to the NVM read I / O queue 965 , In this embodiment, the read data may take one of three forms: data requested by a user, NVM register data (for internal use by the controller 130 ) and write validation data. In other embodiments, one or more of these data classes may be held in different queues. If the data was read for internal purposes, it will be taken from the internal read processing module 960 (for example, to check if previously written data was written correctly before sending an acknowledgment back to the host 100 is sent or a rewrite request to the scheduler 940 is sent). If the data was requested by the user, metadata indicating the command ID associated with the read data is appended to the data. These command-ID metadata are associated with the read data as they pass through the read pipeline (as indicated by the double-headed arrow). The data then becomes the media ECC decoder 975 which decodes the data and then to the decryption module 980 which decrypts the data before going to the read data cache 955 be sent. The data remains in the read data cache 955 until the host 100 requests them by identifying the command ID block. At this point, the data is sent to the interface 905 and physical layer 900 for transmission to the host 100 Posted.

10 ist ein Flussdiagramm 1000 eines Verfahrens zum Lesen von Daten unter Verwendung des Controllers 130 aus 6. Wie in 10 gezeigt, sendet der Host 100 zunächst eine Leseanforderung an das Speichersystem (Vorgang 1050). Der NVM-Controller 130 in dieser Ausführungsform extrahiert dann die folgenden Elemente aus der Anforderung: Adresse, Leseanforderungs-ID und Länge der Anforderung (Vorgang 1010). Der NVM-Controller 130 wandelt dann die logische Adresse von der Anforderung in eine physische Adresse für Wear-Levelling um (Vorgang 1015). 10 is a flowchart 1000 a method of reading data using the controller 130 out 6 , As in 10 shown, the host sends 100 first a read request to the storage system (operation 1050 ). The NVM controller 130 in this embodiment, the following elements then extract from the request: Address, Read Request ID, and Request Length (Operation 1010 ). The NVM controller 130 then converts the logical address from the request to a physical address for wear-leveling (act 1015 ).

Der NVM-Controller 130 bestimmt dann, ob die physische Adresse einem Teil des Speicher-Arrays entspricht, der beschäftigt oder für Lesevorgänge nicht verfügbar ist (Vorgang 1020). Falls der Speicherteil beschäftigt oder nicht verfügbar ist, plant der NVM-Controller 130 das Lesen der nicht-flüchtigen Speichervorrichtungen 140 für einen späteren Zeitpunkt (Vorgang 1022). Zu diesem späteren Zeitpunkt, falls die physische Adresse verfügbar wird (Vorgang 1024), bestimmt der NVM-Controller 130, ob andere Operationen mit höherer Priorität anstehen, welche das Lesen verhindern (Vorgang 1026). Falls dies der Fall ist, wartet der NVM-Controller 130 (Vorgang 1028). The NVM controller 130 then determines if the physical address corresponds to a portion of the storage array that is busy or unavailable for reads (operation 1020 ). If the memory part is busy or unavailable, the NVM controller is planning 130 reading the non-volatile memory devices 140 for a later date (operation 1022 ). At this later time, if the physical address becomes available (operation 1024 ), determines the NVM controller 130 whether there are any other higher priority operations that prevent reading (act 1026 ). If so, the NVM controller waits 130 (Process 1028 ).

Falls/wenn der Speicherteil verfügbar wird, sendet der NVM-Controller 130 Lesebefehle an die NVM-Vorrichtungen 140, um die angeforderten Daten zu lesen (Vorgang 1030). Die NVM-Vorrichtungen 140 geben dann die angeforderten Daten zurück (Vorgang 1035). Je nach Art der verwendeten Vorrichtungen können die NVM-Vorrichtungen 140 die Daten nach einer festen, vorbestimmten Zeitdauer zurückgeben. Der NVM-Controller 130 kann dann die zurückgegebenen Daten verarbeiten. Beispielsweise, nachdem die Daten, welche von den verschiedenen NVM-Vorrichtungen 140 zurückgegeben werden, aggregiert wurden (Vorgang 1040), kann der NVM-Controller 130 bestimmen, ob die Daten eine Fehlerkorrekturcode(ECC, Error Correction Code)-Prüfung bestehen (Vorgang 1045). Falls die Daten die ECC-Prüfung nicht bestehen, kann der NVM-Controller 130 einen Fehlerwiederherstellungsprozess initiieren (Vorgang 1046). Nachdem der Fehlerwiederherstellungsprozess abgeschlossen ist (Vorgang 1048) oder falls die aggregierten Daten die ECC-Prüfung bestanden haben, bestimmt der NVM-Controller 130, ob die Daten verschlüsselt sind (Vorgang 1050). Falls die Daten verschlüsselt sind, initiiert der NVM-Controller 130 einen Entschlüsselungsprozess (Vorgang 1052). If / when the memory part becomes available, the NVM controller sends 130 Read commands to the NVM devices 140 to read the requested data (operation 1030 ). The NVM devices 140 then return the requested data (operation 1035 ). Depending on the type of devices used, the NVM devices 140 return the data after a fixed, predetermined period of time. The NVM controller 130 can then process the returned data. For example, after the data, which from the various NVM devices 140 be returned, were aggregated (operation 1040 ), the NVM controller can 130 determine if the data passes an Error Correction Code (ECC) check (operation 1045 ). If the data fails the ECC check, the NVM controller can 130 initiate an error recovery process (operation 1046 ). After the error recovery process is completed (Operation 1048 ) or if the aggregated data has passed the ECC test, the NVM controller determines 130 whether the data is encrypted (act 1050 ). If the data is encrypted, the NVM controller initiates 130 a decryption process (operation 1052 ).

Nachdem der Entschlüsselungsprozess abgeschlossen ist (Vorgang 1054) oder falls die Daten nicht verschlüsselt waren, bestimmt der NVM-Controller 130 optional, ob der Host 100 zuvor vereinbart hat, nicht-deterministische Lesevorgänge zu verwenden (Vorgang 1055). (Vorgang 1055 ermöglicht, dass der NVM-Controller 130 sowohl für deterministische als auch nicht-deterministische Lesevorgänge verwendet wird, kann jedoch bei bestimmten Ausführungsformen nicht verwendet werden.) Falls der Host 100 eine zuvorige Vereinbarung hat, hält der NVM-Controller 130 die Lesedaten für einen zukünftigen Sendebefehl (oder legt sie beiseite) (wie unten erörtert) (Vorgang 1060). Der NVM-Controller 130 sendet auch ein Signal auf der Leitung „LESEBEREIT“ an den Host 100 (Vorgang 1065). Wenn er bereit ist, sendet der Speichercontroller 120 im Host 100 einen Sendebefehl (Vorgang 1070). In Reaktion auf das Empfangen des Sendebefehls vom Host 100 überträgt der NVM-Controller 130 die verarbeiteten Lesedaten zusammen mit der Befehls-ID an den Host 100 (z. B. nach einer vordefinierten Verzögerung (es können globale Zeitübschreitungen vom Speichercontroller im Host vorhanden sein)) (Vorgang 1075). After the decryption process is completed (operation 1054 ) or if the data was not encrypted, the NVM controller determines 130 optional, whether the host 100 previously agreed to use non-deterministic reads (operation 1055 ). (Process 1055 allows the NVM controller 130 is used for both deterministic and non-deterministic reads, but may not be used in certain embodiments.) If the host 100 has a previous agreement, holds the NVM controller 130 the read data for a future send command (or set aside) (as discussed below) (act 1060 ). The NVM controller 130 also sends a signal on the line "READY TO READ" to the host 100 (Process 1065 ). When he is ready, the memory controller sends 120 in the host 100 a send command (operation 1070 ). In response to receiving the send command from the host 100 transmits the NVM controller 130 the processed read data together with the command ID to the host 100 (eg after a predefined delay (there may be global timeouts from the memory controller in the host)) 1075 ).

Falls der Host 100 nicht zuvor vereinbart hat, nicht-deterministische Lesevorgänge zu verwenden (Vorgang 1055), wird der NVM-Controller 130 den Lesevorgang handhaben wie im oben erörteten herkömmlichen System. Das heißt, der NVM-Controller 130 wird bestimmen, ob die verstrichene Zeit die zuvor vereinbarte Übertragungszeit überschreitet (Vorgang 1080). Falls die verstrichene Zeit die zuvor vereinbarte Übertragungszeit nicht überschritten hat, überträgt der NVM-Controller 130 die Daten an den Host 100 (Vorgang 1075). Falls die verstrichene Zeit jedoch die zuvor vereinbarte Übertragungszeit überschritten hat, ist der Lesevorgang fehlgeschlagen (Vorgang 1085). If the host 100 has not previously agreed to use non-deterministic reads (operation 1055 ), becomes the NVM controller 130 handle the reading as in the conventional system discussed above. That is, the NVM controller 130 will determine if the elapsed time exceeds the previously agreed transmission time (Operation 1080 ). If the elapsed time has not exceeded the previously agreed transmission time, the NVM controller transmits 130 the data to the host 100 (Process 1075 ). However, if the elapsed time has exceeded the previously agreed transmission time, the read operation failed (operation 1085 ).

Wendet man sich nun einer Schreiboperation zu, ist 11 ein Flussdiagramm 1100, welches beginnt, wenn der Host 100 Daten zum Schreiben hat (Vorgang 1105). Als Nächstes prüft der Host 1110, um zu sehen, ob verfügbarer Flusssteuerungs-Credit für die Schreiboperation vorhanden ist (Vorgänge 1110 und 1115). Falls ein Flusssteuerungs-Credit verfügbar ist, gibt der Host 100 die Schreibanforderung aus (Vorgang 1130), und der Mediencontroller 130 empfängt die Schreibanforderung vom Host 10 (Vorgang 1125). Der Controller 130 extrahiert dann die Zieladresse und Benutzerdaten aus der Anforderung (Vorgang 1130). Da ein nicht-deterministisches Protokoll in dieser Ausführungsform verwendet wird, kann der Controller 130 nun Zeit für die Durchführung von Speicher- und Datenverwaltungsoperationen aufwenden. Falls die Daten beispielsweise eine Verschlüsselung erfordern (Vorgang 1135), verschlüsselt der Controller 130 die Daten (Vorgang 1140). Andernfalls codiert der Controller 130 die Daten zur Fehlerkorrektur (Vorgang 1145). Wie oben erwähnt, kann ein beliebiges geeignetes Fehlerkorrekturschema verwendet werden, wie beispielsweise, aber nicht darauf beschränkt, ECC, zyklische Redundanzprüfung (CRC, Cyclic Redundancy Check), redundantes Array von unabhängigen Festplatten (RAID, Redundant Array of Independent Disks), Scrambling oder Datengewichtung/-modulation. Als Nächstes verwendet der Controller 130 Wear-Levelling-Hardware (oder -Software), um die logische Adresse in eine physische (NVM-) Adresse umzuwandeln (Vorgang 1150). Der Controller 130 bestimmt dann, ob der Schreibcache voll ist (Vorgang 1155). Falls dies der Fall ist, signalisiert der Controller 130 einen Fehler (Vorgang 1160). Ein Fehler kann in einer beliebigen geeigneten Art und Weise signalisiert werden, einschließlich, aber nicht beschränkt auf, Verwenden einer Reihe von Spannungen auf einem dedizierten Stift oder dedizierten Stiften auf dem Antwortbus, Schreiben des Fehlers in ein Protokoll (z. B. im NVM-Controller) oder Inkrementieren oder Anmerken des Fehlers in den Serial Presence Detect(SPD)-Daten. Falls dies nicht der Fall ist, assoziiert der Controller 130 einen Schreibcacheeintrag mit der aktuellen Anforderung (Vorgang 1165) und schreibt die Daten in den Schreibcache (Vorgang 1170). Turning now to a write operation is 11 a flowchart 1100 which starts when the host 100 Has data to write (operation 1105 ). Next, the host checks 1110 to see if there is any available flow control credit for the write operation (operations 1110 and 1115 ). If a flow control credit is available, the host issues 100 the write request (operation 1130 ), and the media controller 130 receives the write request from the host 10 (Process 1125 ). The controller 130 then extracts the destination address and user data from the request (operation 1130 ). Since a non-deterministic protocol is used in this embodiment, the controller may 130 now spend time performing memory and data management operations. For example, if the data requires encryption (operation 1135 ), the controller encrypts 130 the data (operation 1140 ). Otherwise, the controller encodes 130 the data for error correction (operation 1145 ). As mentioned above, any suitable error correction scheme may be used, such as, but not limited to, ECC, Cyclic Redundancy Check (CRC), redundant Array of Independent Disks (RAID), scrambling, or data weighting /-modulation. Next, the controller uses 130 Wear leveling hardware (or software) to convert the logical address into a physical (NVM) address (act 1150 ). The controller 130 then determines if the write cache is full (operation 1155 ). If so, the controller signals 130 an error (operation 1160 ). An error may be signaled in any suitable manner, including, but not limited to, using a series of voltages on a dedicated pin or dedicated pins on the response bus, writing the error to a protocol (eg, in the NVM). Controller) or incrementing or annotating the error in the Serial Presence Detect (SPD) data. If this is not the case, the controller associates 130 a write cache entry with the current request (operation 1165 ) and write the data into the write cache (operation 1170 ).

Der Controller 130 bestimmt dann, ob die physischen Medien an der erforderlichen physischen Adresse beschäftigt sind (Vorgang 1175). Falls dies der Fall ist, plant der Controller 130 die Schreiboperation für die zukünftige Verarbeitung (Vorgang 1180). Falls dies nicht der Fall ist, wartet der Controller 130, bis die aktuelle Operation abgeschlossen ist (Vorgang 1182), und bestimmt dann, ob eine Anforderung mit höherer Priorität noch aussteht (Vorgang 1184). Falls dies nicht der Fall ist, verteilt der Controller 130 die Daten mittels Schreibbefehlen an die NVM-Vorrichtungen 140 (Vorgang 1186). Der Controller 130 wartet dann, da typische Verzögerungen beim Schreiben zu NVM-Vorrichtungen vorhanden sind (Vorgang 1188). Als Nächstes stellt der Controller 140 optional sicher, dass die Schreibfestschreibung erfolgreich war (Vorgang 1190), indem bestimmt wird, ob der Schreibvorgang erfolgreich war (Vorgang 1192). Falls der Schreibvorgang nicht erfolgreich war, bestimmt der Controller 130, ob weitere Versuche gerechtfertigt sind (Vorgang 1193). Falls dies nicht der Fall ist, kann der Controller 130 optional Fehlerkorrekturtechniken anwenden (Vorgang 1194). Falls und wenn der Schreibvorgang erfolgreich ist, gibt der Controller 130 den Schreibcacheeintrag frei (Vorgang 1195) und benachrichtigt den Host 100 über zusätzlichen Schreibpufferplatz (Vorgang 1196), und der Schreibvorgang schließt dann ab (Vorgang 1197). The controller 130 then determines if the physical media is busy at the required physical address (act 1175 ). If so, the controller is planning 130 the write operation for future processing (operation 1180 ). If this is not the case, the controller waits 130 until the current operation is completed (Operation 1182 ), and then determines if a higher priority request is still outstanding (operation 1184 ). If this is not the case, the controller distributes 130 the data by write commands to the NVM devices 140 (Process 1186 ). The controller 130 then waits as there are typical delays in writing to NVM devices (Operation 1188 ). Next up is the controller 140 optionally, make sure the write commit was successful (operation 1190 ) by determining whether the write was successful (act 1192 ). If the write was unsuccessful, the controller determines 130 whether further attempts are justified (Act 1193 ). If this is not the case, the controller can 130 optionally apply error correction techniques (Operation 1194 ). If and when the write succeeds, the controller issues 130 the write cache entry free (operation 1195 ) and notifies the host 100 via additional write buffer space (operation 1196 ), and the write completes (operation 1197 ).

Die Flussdiagramme in 10 und 11 beschreiben beide den Prozess zum Durchführen einer einzelnen Leseoperation oder einer einzelnen Schreiboperation. In vielen Mediencontroller-Ausführungsformen können jedoch mehrere Lese- oder Schreiboperationen parallel erfolgen, wobei somit eine kontinuierliche Pipeline von Lese- oder Schreibprozessen geschaffen wird. Viele dieser Schritte werden wiederum Out-of-Order-Verarbeitung unterstützen. Die Flussdiagramme dienen als ein Beispiel für die Schritte, welche erforderlich sein können, um eine einzelne Lese- oder Schreibanforderung zu verarbeiten. The flowcharts in 10 and 11 both describe the process for performing a single read operation or a single write operation. However, in many media controller embodiments, multiple read or write operations may occur in parallel, thus providing a continuous pipeline of read or write processes. Many of these steps will in turn support out-of-order processing. The flowcharts serve as an example of the steps that may be required to process a single read or write request.

Zusammenfassend stellen einige der obigen Ausführungsformen einen Mediencontroller bereit, welcher mittels einer bestimmten Ausführungsform des SNVRAM-Protokolls über eine Schnittstelle mit einem Host verbunden ist und auch über eine Schnittstelle mit einer Mehrzahl von Speichervorrichtungen verbunden ist. Zusätzlich zur Verwendung von nicht-deterministischen Lese- und Schreib-Timing-Merkmalen des SNVRAM-Protokolls ist der Mediencontroller speziell entwickelt, um die Lebensdauer der Medien (NVM) zu verbessern, Fehler in den Medien optimal zu korrigieren und Anforderungen durch die Medien zu planen, um den Durchsatz zu optimieren, alles während dem Host eine Speicherschnittstelle mit einer niedrigen Latenz und hohen Bandbreite präsentiert wird. Auf diese Weise kann der Mediencontroller die Gesundheit und Integrität des Speichermediums durch „Massieren“ von Speicheridiosynkrasien verwalten. Darüber hinaus kann der Mediencontroller Daten von NVM-Chips für eine effizientere Datenverarbeitung und Fehlerhandhabung sammeln und aggregieren. In summary, some of the above embodiments provide a media controller that interfaces with a particular embodiment of the SNVRAM protocol is connected to a host and is also connected via an interface with a plurality of storage devices. In addition to using non-deterministic read and write timing features of the SNVRAM protocol, the media controller is specifically designed to improve the life of the media (NVM), optimally correct media errors, and plan for media requirements to optimize throughput while presenting a low latency, high bandwidth memory interface to the host. In this way, the media controller can manage the health and integrity of the storage medium by "massaging" storage idiosyncrasies. In addition, the media controller can collect and aggregate data from NVM chips for more efficient data processing and error handling.

Es gibt viele Alternativen, welche bei diesen Ausführungsformen verwendet werden können. Während beispielsweise eine Taktdatenparallelschnittstelle in den obigen Beispielen vorhanden war, können andere Arten von Schnittstellen in verschiedenen Ausführungsformen verwendet werden, wie beispielsweise, aber nicht darauf beschränkt, SATA (Serial Advanced Technology Attachment), PCIe (Peripheral Component Interface Express), NVMe (Non-Volatile Memory Express), RapidIO, ISA (Industry Standard Architecture), Lightning, Infiniband oder FCoE (Fiber Channel over Ethernet). Dementsprechend können, während eine parallele DDR-Schnittstelle im obigen Beispiel verwendet wurde, andere Schnittstellen, einschließlich serieller Schnittstellen, in alternativen Ausführungsformen verwendet werden. Jedoch können aktuelle serielle Schnittstellen auf lange Latenzzeiten und I/O-Verzögerungen treffen (während eine DDR-Schnittstelle schnelle Zugriffszeiten bereitstellt). Auch können, wie oben erwähnt, obgleich das Speichersystem in den obigen Beispielen die Form eines NV-DIMM annimmt, andere Arten von Speichersystemen verwendet werden, einschließlich, aber nicht darauf beschränkt, eingebetteter und entfernbarer Vorrichtungen, wie beispielsweise ein Solid-State-Drive (SSD) oder eine Speicherkarte (z. B. Secure Digital (SD), Micro Secure Digital(Micro-SD)-Karte oder Universal-Seriell-Bus(USB)-Laufwerke). There are many alternatives that can be used in these embodiments. For example, while a clock data parallel interface was present in the above examples, other types of interfaces may be used in various embodiments, such as, but not limited to, Serial Advanced Technology Attachment (SATA), Peripheral Component Interface Express (PCIe), NVMe (NonMedia). Volatile Memory Express), RapidIO, Industry Standard Architecture (ISA), Lightning, Infiniband or FCoE (Fiber Channel over Ethernet). Accordingly, while a parallel DDR interface was used in the above example, other interfaces, including serial interfaces, may be used in alternative embodiments. However, current serial ports may encounter long latencies and I / O delays (while a DDR interface provides fast access times). Also, as noted above, although the memory system takes the form of an NV-DIMM in the above examples, other types of memory systems may be used, including, but not limited to, embedded and removable devices such as a solid-state drive. SSD) or a memory card (such as Secure Digital (SD), Micro Secure Digital (Micro SD) card, or Universal Serial Bus (USB) drives).

Als weitere Alternative können NVM-Chips gebaut werden, welche entweder standardmäßige DDR- oder neuere SNVRAM-Protokolle ohne Verwendung eines Mediencontrollers sprechen können. Jedoch wird die Verwendung eines Mediencontrollers derzeit bevorzugt, da gegenwärtig vorhandene NVM-Vorrichtungen viel größere Merkmale aufweisen als mehr entwickelte DRAM-Vorrichtungen; auf NVM-Chips kann sich somit nicht verlassen werden, bei aktuellen DDR-Frequenzen zu sprechen. Der Speichercontroller kann DDR-Signale verlangsamen, um mit den NVM-Chips zu kommunizieren. Darüber hinaus können die Funktionen, welche der Mediencontroller durchführt, relativ komplex und teuer sein, um sie in die Speicherchips selbst zu integrieren. Ferner ist es wahrscheinlich, dass sich die Mediencontrollertechnologie weiterentwickelt, und es kann erwünscht sein, zu ermöglichen, den Mediencontroller separat zu aktualisieren, um eine bestimmte Art von Speicherchip besser zu handhaben. Das heißt, eine ausreichende Isolierung des NVM und NVM-Controllers ermöglicht die Inkubation von neuen Speichern, während gleichzeitig auch ein DRAM-Geschwindigkeitsdurchfluss für reife NVMs bereitgestellt wird. Zusätzlich ermöglicht der Mediencontroller Fehlerprüfcodes und Wear-Levelling-Schemata, welche Daten über alle Chips verteilen und Defekte handhaben, und es gibt einen Vorteil, Daten zusammen durch eine Vorrichtung zu aggregieren. As a further alternative, NVM chips can be built that can speak either standard DDR or newer SNVRAM protocols without the use of a media controller. However, the use of a media controller is currently preferred because currently existing NVM devices have much larger features than more sophisticated DRAM devices; On NVM chips can not be relied on to speak at current DDR frequencies. The memory controller can slow down DDR signals to communicate with the NVM chips. Moreover, the functions that the media controller performs may be relatively complex and expensive to integrate into the memory chips themselves. Furthermore, media controller technology is likely to evolve, and it may be desirable to enable the media controller to be separately updated to better handle a particular type of memory chip. That is, sufficient isolation of the NVM and NVM controller allows the incubation of new memories while also providing DRAM speed for mature NVMs. In addition, the media controller enables error checking codes and wear-leveling schemes that distribute data across all chips and handle defects, and there is an advantage of aggregating data together through a device.

Wie oben erörtert, kann der Controller 130 in einigen Ausführungsformen den nicht-deterministischen Aspekt in Lese- und Schreiboperationen ausnutzen, um zeitaufwendige Aktionen durchzuführen, welche eine unbestimmte Dauer aus der Perspektive des Hosts aufweisen. Obgleich Speicher- und Datenverwaltungsoperationen oben als Beispiele für derartige Aktionen erwähnt wurden, versteht es sich, dass es viele andere Beispiele für derartige Aktionen gibt, wie beispielsweise Überwachen der Gesundheit der einzelnen nicht-flüchtigen Medienzellen, um sie vor Verschleiß zu schützen, Identifizieren von Fehlversagen in den Schaltungen, welche für den Zugriff auf die Zellen verwendet werden, Sicherstellen, dass Benutzerdaten rechtzeitig und übereinstimmend mit den betrieblichen Anforderungen der NVM-Vorrichtung zu den Zellen transferiert oder von den Zellen entfernt werden, und Sicherstellen, dass Benutzerdaten zuverlässig gespeichert und nicht aufgrund von schlechten Zellen oder Medienschaltungsfehlern verloren oder beschädigt werden. Ferner können in Fällen, in denen sensible Daten auf einer derartigen Vorrichtung gespeichert sein können, Operationen mit einer unbestimmten Dauer aus der Perspektive des Hosts eine Verschlüsselung als Verwaltungsdienst umfassen, um den Diebstahl von nicht-flüchtigen Daten durch böswillige Entitäten zu verhindern. As discussed above, the controller may 130 in some embodiments, exploit the non-deterministic aspect in read and write operations to perform time consuming actions that have an indeterminate duration from the perspective of the host. Although memory and data management operations have been mentioned above as examples of such actions, it will be understood that there are many other examples of such actions, such as monitoring the health of individual non-volatile media cells to protect them from wear, identifying failures in the circuits used to access the cells, ensuring that user data is transferred to or removed from the cells in a timely and consistent with the operational requirements of the NVM device, and ensuring that user data is reliably stored, not due to be lost or damaged by bad cells or media circuit errors. Further, in cases where sensitive data may be stored on such a device, operations of indefinite duration from the perspective of the host may include encryption as a management service to prevent theft of non-volatile data by malicious entities.

Allgemeiner gesagt, kann eine Operation mit einer unbestimmten Dauer aus der Perspektive des Hosts eines oder mehrere der Folgenden umfassen, ist aber nicht darauf beschränkt: (1) NVM-Aktivität, (2) Schutz von Daten, welche im NVM gespeichert sind, und (3) Datenbewegungseffizienzen im Controller. More generally, an indefinite-duration operation may include, but is not limited to, one or more of the following: (1) NVM activity, (2) protection of data stored in the NVM, and ( 3) Data movement efficiencies in the controller.

Beispiele für NVM-Aktivität umfassen, sind aber nicht darauf beschränkt, Benutzerdatenhandhabung, Nicht-Benutzer-Medienaktivität und Scheduling-Entscheidungen. Beispiele von Benutzerdatenhandhabung umfassen, sind aber nicht darauf beschränkt, Verbesserung und Mitigation der Ausdauer vom NVM (z. B. Wear-Levelling-Datenbewegung, wobei Wear-Levelling die Verteilung lokalisierter Benutzeraktivität über einen größeren physischen Raum ist, um die Ausdauer der Vorrichtung zu verlängern, und Schreiben oder Lesen des NVM auf eine Weise, um die Ausdauereigenschaften dieses Speicherorts zu beeinflussen), Verbesserung oder Mitigation der Retention des NVM (z. B. Programmauffrischungen, Datenbewegung und Retentionsverifikationen), unterschiedliche Medienlatenzhandhabung, um die Verschleißwirkung auf die Medien während der Medienaktivität besser zu verwalten (Schreibvorgänge, Lesevorgänge, Löschvorgänge, Verifikationen oder andere Interaktionen) (z. B. Verwendung von längeren oder kürzeren Latenzverfahren, wie sie für die NVM-Handhabung erforderlich sind, um eine gewünschte Eigenschaft zu verbessern (Ausdauer, Retention, zukünftige Leselatenz, BER usw.)), und Faltung von Daten aus temporärem Speicher (SLC oder STT-MRAM) zu permanenterem Speicher (TLC oder ReRam). Beispiele für Nicht-Benutzer-Medienaktivitäten umfassen, sind aber nicht darauf beschränkt, Vorrichtungsprotokolle (z. B. Fehler, Debug-Informationen, Host-Nutzungsinformationen, Garantieunterstützungsinformationen, Einstellungen, Activity-Trace-Informationen und Vorrichtungshistorieninformationen), Controllerstatus und Zustandsverfolgung (z. B. Algorithmus- und Zustandsverfolgungsaktualisierungen für ein verbessertes oder kontinuierliches Verhalten bei Stromausfall oder Einschalthandhabung und Zwischenverifikationsstatusbedingungen für Medienschreibbestätigungen, Defektidentifikationen und Datenschutzaktualisierungen für ECC (Aktualisierung von Paritäts- oder geschichteten ECC-Werten)), Mediencharakterisierungsaktivitäten (z. B. Charakterisierungen von NVM-Alter oder BER und Untersuchung vom NVM auf Defekte) und Remapping von defekten Bereichen. Examples of NVM activity include, but are not limited to, user data handling, non-user media activity, and scheduling decisions. Examples of user data handling include, but are not limited to, enhancement and mitigation of Endurance from the NVM (eg, wear-leveling data movement, where wear-leveling is the distribution of localized user activity over a larger physical space to extend the endurance of the device, and writing or reading the NVM in a manner that enhances endurance characteristics affecting that location), enhancement or mitigation of NVM retention (e.g., program refresh, data movement, and retention verification), different media latency handling to better manage the wear on the media during media activity (writes, reads, deletions, verifications, or others Interactions) (eg, use of longer or shorter latency techniques, as required for NVM handling, to enhance a desired property (persistence, retention, future read latency, BER, etc.)), and convolution of data from temporary Memory (SLC or STT-MRAM) to more permanent memory (TLC or ReRam). Examples of non-user media activities include, but are not limited to, device logs (e.g., errors, debug information, host usage information, warranty support information, settings, activity trace information, and device history information), controller status, and status tracking (e.g. B. Algorithm and condition tracking updates for improved or continuous behavior in case of power failure or power handling and inter-verification status conditions for media write confirmations, defect identifications and data protection updates for ECC (updating parity or layered ECC values), media characterization activities (eg characterizations of NVM age or BER and investigation of the NVM for defects) and remapping of defective areas.

Beispiele für den Schutz von Daten, welche im NVM gespeichert sind, umfassen, sind aber nicht darauf beschränkt, verschiedene ECC-Engine-Implementierungen (z. B. BCH oder Hamming (Hardwareimplementierungsoptionen der Größe, Parallelisierung der Implementierung, Syndrome und Codierungsimplementierungsoptionen, wie beispielsweise Erzeugerpolynom, Schutzniveau oder Spezialfallanordnungen), LDPC (z. B. Hardwareimplementierungsoptionen der Größe, Parallelisierung der Implementierung, Array-Größe und Taktrate; und Codierungsimplementierungsoptionen, wie beispielsweise Schutzniveau und Polynomauswahl, um Medien-BER-Eigenschaften zu begünstigen), Parität (z. B. Benutzerdaten-CRC vor dem ECC und RAID), geschichteten Schutz eines der obigen in beliebiger Reihenfolge (z. B. CRC auf den Benutzerdaten, ECC über den Benutzerdaten und CRC, zwei ECC-Blöcke zusammen erhalten einen weiteren ECC, Berechnen des RAID über mehrere Blöcke mit ECC für einen vollen Streifen von RAID), Decodierungsneuversuchspfade (z. B. Optionen beim Initiieren und Nutzen der anderen Schutzschichten (z. B. spekulativ Soft-Lesen, Warten bis zum Fehlversagen vor dem Lesen des gesamten RAID-Streifens, ECC-Engine-Modi mit niedriger Leistung vs. hoher Leistung)), ECC-Neuversuche mit oder ohne beliebige der Folgenden: spekulative Bit-Flips, Soft-Bit-Decodierungen, Soft-Lesevorgänge, neue Lesevorgänge (z. B. erneute Lesevorgänge und Soft-Lesevorgänge (erneutes Lesen der gleichen Daten mit unterschiedlichen Einstellungen) und Decodierungsfehler) und Datenformung für ein verbessertes Speicherverhalten (z. B. reduzierte Störung zwischen Zellen (z. B. Verwendung eines Scramblers oder gewichteten Scramblers für eine verbesserte Erfassungsschaltungsleistung)). Examples of the protection of data stored in the NVM include, but are not limited to, various ECC engine implementations (eg, BCH or Hamming (hardware implementation options of size, implementation parallelization, syndromes, and encoding implementation options such as Generator polynomial, protection level or special case arrangements), LDPC (e.g., size hardware implementation options, implementation parallelization, array size and clock rate, and encoding implementation options such as protection level and polynomial selection to favor media BER characteristics), parity (e.g. Layered protection of one of the above in any order (e.g., CRC on the user data, ECC over the user data, and CRC, two ECC blocks together receive another ECC, calculating the RAID over several blocks with ECC for a full strip of RAID), decode new attempt paths (eg. B. Options for initiating and using the other protection layers (eg, speculative soft-reading, waiting for failure before reading the entire RAID stripe, low power ECC engine modes vs. high performance)), ECC Retries with or without any of the following: speculative bit-flips, soft bit decodes, soft reads, new reads (eg, re-reads and soft reads (re-reading the same data with different settings) and decoding errors) and Data shaping for improved memory performance (eg, reduced interference between cells (eg, using a scrambler or weighted scrambler for improved detection circuit performance)).

Beispiele für Datenbewegungseffizienzen im Controller umfassen, sind aber nicht darauf beschränkt, Scheduling-Architektur und Scheduling-Entscheidungen. Die Scheduling-Architektur kann sich auf die Verfügbarkeit von einzelnen vs. mehreren Pfaden für jedes der Folgenden beziehen: Priorisierung, spekulative frühe Starts, Parallelisierung, Komponentenbeschleunigung, Ressourcenarbitrierung und Implementierungsoptionen speziell für diese Komponente. Die Menge, der Durchsatz, die Latenzen und die Verbindungen jeder Vorrichtungsressource werden sich implizit auf die Planung auswirken. Die Scheduling-Architektur kann auch interne Buskonflikte während Transfers (z. B. AXI-Bus-Konflikte), ECC-Engines, NVM-Kommunikationskanäle (z. B. Bandbreite, Geschwindigkeiten, Latenzen, Leerlaufzeiten, Überlastung von Verkehr zum anderen NVM, Reihenfolge- oder Priorisierungsoptionen und Effizienzen der Nutzung für Befehls-, Daten-, Status- und andere NVM-Interaktionen), NVM-Zugriffskonflikte häufig aufgrund der Anordnung und des internen Schaltungszugriffs jedes speziellen NVM (z. B. Die, Block, Ebene, I/O-Schaltungen, Puffer, Bays, Arrays, Wortleitungen, Strings, Zellen, Combs, Schichten und Bitleitungen), Speicherzugriff (z. B. externes DRAM, SRAM, eDRAM, interne NVMs und ECC auf diesen Speichern), Scrambler, interne Datentransfers, Interruptverzögerungen, Pollingverzögerungen, Prozessoren und Firmwareverzögerungen (z. B. Prozessorcodeausführungsgeschwindigkeit, Codeeffizienz und -funktion, Thread- oder Interruptaustausch) und Cache-Engines (z. B. Effizienz von Cache-Suchvorgängen, Cache-Insertionskosten, Cache-Filling-Strategien, Cache-Treffer erfolgreich und effizientes Aufheben der parallelen NVM- und Controlleraktivität und Cache-Auswurfstrategien) umfassen. Scheduling-Entscheidungen können Befehlsüberlappungserkennungen und Reihenfolge, Speicherortsdecodierungs- und Speicherschemata (z. B. zwischengespeicherte Look-up-Tabellen, hardwaregesteuerte Tabellen und geschichtete Tabellen), Controllerausnahmen (z. B. Firmware hängt, Komponentenzeitüberschreitungen und unerwartete Komponentenzustände), periphere Handhabung (z. B. alternative NVM-Handhabung wie beispielsweise NOR oder EEPROM, Temperatur, SPD(Serial Presence Detect)-Interaktionen auf dem NVDIMM-P und alternative Vorrichtungszugriffspfade (z. B. Low-Power-Modi und Out-of-Band-Befehle), Leistungsschaltungsstatus), und reduzierte Leistungsmodi (z. B. Aus, reduzierte Leistungszustände, Leerlauf, Leerlauf aktiv und höhere Leistungszustände, die für Beschleunigungen oder Bursts dienen können) umfassen, sind aber nicht darauf beschränkt. Examples of data movement efficiencies in the controller include, but are not limited to, scheduling architecture and scheduling decisions. The scheduling architecture can affect the availability of individual vs. relate multiple paths for each of the following: prioritization, speculative early launches, parallelization, component acceleration, resource arbitration, and implementation options specific to that component. The amount, throughput, latencies and connections of each device resource will implicitly affect the planning. The scheduling architecture can also handle internal bus conflicts during transfers (eg AXI bus conflicts), ECC engines, NVM communication channels (eg bandwidth, speeds, latencies, idle times, congestion of traffic to other NVM, order - or prioritization options and efficiencies of use for command, data, status, and other NVM interactions), NVM access conflicts often due to the placement and internal circuit access of each particular NVM (e.g., die, block, level, I / O circuits, buffers, bays, arrays, word lines, strings, cells, combs, layers and bit lines), memory access (eg external DRAM, SRAM, eDRAM, internal NVMs and ECC on these memories), scrambler, internal data transfers, Interrupt delays, polling delays, processors and firmware delays (eg, processor code execution speed, code efficiency and function, thread or interrupt interchange), and cache engines (eg, efficiency of cache search operations, cache insertion costs, cache filling strategies, successful cache hits, and efficient cancellation of parallel NVM and controller activity and cache ejection strategies). Scheduling decisions may include command overlap detections and ordering, memory location decode and memory schemes (e.g., cached lookup tables, hardware controlled tables, and layered tables), controller exceptions (e.g., firmware hangs, component timeouts, and unexpected component states), peripheral handling (e.g. , Alternative NVM handling such as NOR or EEPROM, temperature, SPD (Serial Presence Detect) interactions on the NVDIMM-P, and alternative device access paths (eg, low-power modes and out-of-band commands); Power circuit status), and reduced power modes (eg, off, reduced power states, idle, idle active, and higher power states that may serve for accelerations or bursts) include, but are not limited to.

Das oben erörterte Speichersystem kann aus der Verwendung von einem Befehls- und Adresspuffer und Datenpuffern (DBs, Data Buffers) profitieren. Ein Beispiel eines Befehls- und Adresspuffers ist ein Registertakttreiber (RCD, Register Clock Driver). Obgleich ein RCD in den folgenden Beispielen verwendet wird, versteht es sich, dass andere Arten von Befehls- und Adresspuffern verwendet werden können. Darüber hinaus kann ein Befehls- und Adresspuffer andere Funktionalität aufweisen. Beispielsweise kann ein Befehls- und Adresspuffer, wie beispielsweise ein RCD, auch datenparallele Decodierungssynchronisierungsfähigkeiten aufweisen, um den Datenfluss in die und aus den DBs zu synchronisieren. The memory system discussed above may benefit from the use of a command and address buffer and data buffers (DBs). An example of a command and address buffer is a Register Clock Driver (RCD). Although an RCD is used in the following examples, it should be understood that other types of command and address buffers may be used. In addition, a command and address buffer may have other functionality. For example, a command and address buffer, such as an RCD, may also include data-parallel decode synchronization capabilities to synchronize data flow into and out of the DBs.

RCDs und DBs wurden mit DRAM-basierten DIMMs verwendet, um die Signalintegrität zu verbessern. Wenn beispielsweise lange, verirrte elektrische Leitungen im DIMM schlechte elektrische Eigenschaften auf der Befehls- und Adressgruppe von Signalen verursachen, empfängt und wiederholt der RCD 1220 den Befehl und die Adresse an die DRAM-Chips 1210, um sicherzustellen, dass sie diese empfangen. RDIMM (registriertes DIMM) ist ein Beispiel für ein DIMM mit einem RCD, und LRDIMM (lastreduziertes DIMM) (oder FBDIMM (Fully Buffered DIMM, voll gepuffertes DIMM)) ist ein Beispiel für ein DIMM, welches sowohl einen RCD als auch DBs aufweist (ein UDIMM (ungepuffertes DIMM) erzwingt elektrische Routingregeln, die den Bus beeinflussen). Signalintegritäts- und andere Probleme können entstehen, wenn ein NV-DIMM verwendet wird, insbesondere eines mit einem Mediencontroller wie dem oben erläuterten. In den folgenden Absätzen wird die allgemeine Verwendung von RCDs und DBs in diesem Zusammenhang erörtert, bevor sich ihrer Verwendung in einem NV-DIMM zugewandt wird. RCDs and DBs have been used with DRAM-based DIMMs to improve signal integrity. For example, if long, stray electrical lines in the DIMM cause poor electrical characteristics on the command and address group of signals, the RCD will receive and repeat 1220 the command and the address to the DRAM chips 1210 to make sure they receive it. RDIMM (Registered DIMM) is an example of a DIMM with an RCD, and LRDIMM (Load Reduced DIMM) (or FBDIMM (Fully Buffered DIMM)) is an example of a DIMM having both an RCD and DBs ( a UDIMM (unbuffered DIMM) enforces electrical routing rules that affect the bus). Signal integrity and other issues may arise when using an NV-DIMM, particularly one with a media controller such as that discussed above. The following paragraphs discuss the general use of RCDs and DBs in this regard before turning to their use in an NV-DIMM.

Zurückkehrend zu den Zeichnungen sind 12 und 13 Veranschaulichungen eines DRAM-DIMM 1200, welches eine Mehrzahl von DRAM-Chips 1210, einen RCD 1220 und eine Mehrzahl von DBs 1230 aufweist. Obwohl zur Vereinfachung der Zeichnungen nicht in 12 und 13 gezeigt, ist der RCD 1220 in Kommunikation mit allen DRAM-Chips 1210 und den DBs 1230. Im Allgemeinen speichern die DBs 1230 Daten, welche zum DIMM 1200 gesendet oder aus ihm gelesen werden, und der RCD 1220 dient als ein Repeater, um den Befehl und die Adresse, welche auf der CMD/Addr-Leitung des DIMM empfangen werden, an die DRAM-Chips 1210 zu wiederholen. Der RCD 1220 steuert auch, wann die DBs 1230 die Daten freigeben, welche sie speichern. Returning to the drawings are 12 and 13 Illustrations of a DRAM DIMM 1200 containing a plurality of DRAM chips 1210 , an RCD 1220 and a plurality of DBs 1230 having. Although not to simplify the drawings 12 and 13 shown is the RCD 1220 in communication with all DRAM chips 1210 and the DBs 1230 , In general, the DBs store 1230 Data related to the DIMM 1200 be sent or read from it, and the RCD 1220 serves as a repeater to send the command and address received on the CMD / Addr line of the DIMM to the DRAM chips 1210 to repeat. The RCD 1220 Also controls when the DBs 1230 release the data that they store.

12 zeigt den Lesefluss im DIMM 1200, und 13 zeigt den Schreibfluss im DIMM. Wie in 12 gezeigt, wird ein Lesebefehl vom RCD 1220 auf der CMD/Addr-Leitung empfangen (Pfeil 1). Als Nächstes kommuniziert der RCD 1220 einen „Lese“-Befehl an die Adresse in jedem DRAM-Block 1210, da jeder DRAM-Block hier gleich adressiert ist (Pfeil 2). Die Daten werden dann aus jedem der DRAMs 1210 gelesen und zum entsprechenden DB 1230 bewegt (Pfeil 3). Im DRAM-basierten DIMM-Protokoll hat das DIMM nach dem Empfangen des Lesebefehls eine gewisse Zeit, um die Daten zurück an den Host zu liefern. Nach Ablauf dieser Zeit signalisiert der RCD 1220 dann den DBs 1230, die Daten an den Host freizugeben (Pfeil 4). Zwischen jedem dieser Schritte ist eine Variation bei diesem Schema erlaubt. Bei dieser Architektur nimmt der RCD 1220 einfach an, dass die Daten nach Ablauf der Zeit in den DBs 1230 sind, und in der Regel ist dies aufgrund der zuverlässigen DRAM-Latenz beim Lesen von Daten eine sichere Annahme. 12 shows the read flow in the DIMM 1200 , and 13 shows the write flow in the DIMM. As in 12 is shown, a read command from the RCD 1220 received on the CMD / Addr line (arrow 1). Next, the RCD communicates 1220 a "read" command to the address in each DRAM block 1210 , since each DRAM block is addressed here the same (arrow 2). The data will then be from each of the DRAMs 1210 read and to the appropriate DB 1230 moved (arrow 3). In the DRAM-based DIMM protocol, after receiving the read command, the DIMM has some time to deliver the data back to the host. After this time, the RCD signals 1220 then the DBs 1230 to release the data to the host (arrow 4). Between each of these steps a variation is allowed in this scheme. In this architecture, the RCD takes 1220 simply state that the data expires after the time in the DBs 1230 This is usually a safe assumption due to the reliable DRAM latency when reading data.

Wendet man sich nun 13 zu, wird ein Schreibbefehl in einer Schreiboperation vom RCD 1220 auf der CMD/Addr-Leitung empfangen (Pfeil 1). Fast unmittelbar danach kommuniziert der RCD 1220 an die DRAM-Blöcke 1210 den Schreibprozess (Pfeil 2). Als Nächstes empfangen die DBs 1230 nach einer festen Zeitverzögerung tWL die Daten, die geschrieben werden sollen (Pfeil 3), und übertragen dann die Daten an die DRAM-Blöcke 1210 (Pfeil 4). Turning now 13 to, a write command is issued in a write operation from the RCD 1220 received on the CMD / Addr line (arrow 1). Almost immediately thereafter, the RCD communicates 1220 to the DRAM blocks 1210 the writing process (arrow 2). Next, the DBs receive 1230 after a fixed time delay tWL, the data to be written (arrow 3) and then transmit the data to the DRAM blocks 1210 (Arrow 4).

14 ist eine Darstellung der internen Zustände des Datenflusses in einem DRAM-basierten DIMM. Die frühere Schicht der Decodierung und Weiterleitung ermöglicht es, anzunehmen, dass jeder Unterblock in dieser Darstellung korrekt decodiert ist und als eine Gruppe verstanden wird. Theoretisch kann jede der Untergruppen zu einem größeren Satz von Daten aufgerückt werden, die sich zusammen bewegen. Die gestrichelten Felder in dieser Zeichnung vermitteln vier der Gruppen, welche gemeinsam behandelt werden können. Obwohl es Zeiten gibt, in denen CMD/ADDR früher als die DQ-Daten eingehen können, sind die Beziehungen gut ausgebildet, so dass diese Zeitverzögerung ignoriert werden kann. In jedem Fall kann ein Maximum von DQ und CMD/ADDR den Zustand der physischen Schicht beschreiben. 14 is a representation of the internal states of the data flow in a DRAM-based DIMM. The earlier layer of decoding and forwarding makes it possible to assume that each sub-block in this representation is correctly decoded and understood as a group. Theoretically, each of the subgroups can be advanced to a larger set of data moving together. The dashed boxes in this drawing convey four of the groups that can be treated together. Although there are times when CMD / ADDR can go in earlier than the DQ data, the relationships are well formed so that this time delay can be ignored. In either case, a maximum of DQ and CMD / ADDR can describe the state of the physical layer.

Nachdem jetzt der allgemeine Hintergrund von RCDs und DBs bereitgestellt wurde, wird in den folgenden Absätzen die Verwendung von RCDs und DBs in einem NV-DIMM erörtert. Zurückkehrend zu den Zeichnungen ist 15 ein Blockschaltbild eines Speichersystems 1500, welches dem oben erörterten Speichersystem 200 in 2A ähnelt. Wie das Speichersystem 200 umfasst dieses Speichersystem 100 eine Schnittstelle 1510, welche 9 Dateneingangs-/-ausgangs-Pins (DQ0–DQ8), Befehls-Pins und Antwort-Pins, einen NVM-Controller 1530 und neun nicht-flüchtige Speichervorrichtungen 1240 umfasst. Neu bei dieser Ausführungsform sind der RCD 1520 und die DBs 1550. Now that the general background of RCDs and DBs has been provided, the following paragraphs discuss the use of RCDs and DBs in an NV DIMM. Returning to the drawings 15 a block diagram a storage system 1500 which is the storage system discussed above 200 in 2A similar. Like the storage system 200 includes this storage system 100 an interface 1510 which includes 9 data input / output pins (DQ0-DQ8), command pins and response pins, an NVM controller 1530 and nine non-volatile memory devices 1240 includes. New in this embodiment are the RCD 1520 and the DBs 1550 ,

Ein Vorteil dieser Ausführungsform ist, dass der RCD 1520 und die DBs 1550 wirken, um den NV-DIMM elektrisch zu puffern. Beispielsweise können, wie im Speichersystem 200 in 2A gezeigt, die DQ-Leiterbahnen lang und schwierig zu routen sein, was die Signalintegritäts(SI)-Qualität der Busse beeinträchtigen kann. Im Gegensatz dazu sind die Leiterbahnen 1560 zwischen den DRAM-Bus-Pins und dem RCD 1520 und den DBs 1560 relativ kurz, wodurch die Signalintegrität vom DRAM-Bus sichergestellt wird. Diese Leiterbahnen 1560 können für maximale SI- und NV-DIMM-P-Operabilität in jeder von UDIMM-, RDIMM-, LRDIMM- und beliebigen anderen DIMM-Konfigurationen (jetzt vorhanden oder später entwickelt) ohne Verschlechterung der Busintegrität streng spezifiziert werden (dies kann den Lieferantenwettbewerb erhöhen und Systemintegrationsherausforderungen reduzieren). Das heißt, die Geschwindigkeit der Leitungen 1560 kann eine ausreichende Signalintegrität und Geschwindigkeit aufweisen, um mit anderen physischen DRAM-Kommunikationen übereinzustimmen. Im Gegensatz dazu können die Leitungen 1570 zwischen dem RCD 1520 und den DBs 1550 und dem NVM-Controller 1530 sowie die Leitungen 1580 zwischen dem NVM-Controller 1530 und den NVM-Vorrichtungen 1540 mit lockereren Spezifikationen spezifiziert werden, da die Kommunikation auf diesen Leitungen 1570, 1580 in die bestehenden JEDEC-Spezifikationslatenzantworten absorbiert werden kann (d. h. die Latenz kann hinter dem RCD 1520 und den DBs 1550 isoliert werden), oder das elektrische Routing, welches vollständig innerhalb des DIMM enthalten ist, kann ausreichende SI für die Übertragung gewährleisten. Dies ermöglicht die Multi-Vendor-Entwicklung von DB- und RCD-Chips und die „agnostische“ Platzierung der NVM-Vorrichtungen und des NVM-Controllers. Ferner ermöglicht dies eine ausreichende Isolierung der NVM-Vorrichtungen und des NVM-Controllers, um die Inkubation von neuen Speichern zu ermöglichen, während gleichzeitig auch ein DRAM-Geschwindigkeitsdurchfluss für reife NVMs bereitgestellt wird. Darüber hinaus können die RAM-Puffer in den DBs 1550 und im RCD 1520 mit nicht-deterministischem Protokoll ausreichend sein, um Verhaltensweisen von NV-DIMM-P-Interna und DRAM-Bus-Externa zu trennen und auszurichten. An advantage of this embodiment is that the RCD 1520 and the DBs 1550 act to electrically buffer the NV-DIMM. For example, as in the storage system 200 in 2A shown that the DQ traces are long and difficult to route, which may affect the signal integrity (SI) quality of the buses. In contrast, the tracks are 1560 between the DRAM bus pins and the RCD 1520 and the DBs 1560 relatively short, thereby ensuring signal integrity from the DRAM bus. These tracks 1560 can be rigorously specified for maximum SI and NV DIMM P operability in any of UDIMM, RDIMM, LRDIMM and any other DIMM configurations (now or later developed) without degrading bus integrity (this can increase supplier competition and reduce system integration challenges). That is, the speed of the lines 1560 may have sufficient signal integrity and speed to match other physical DRAM communications. In contrast, the wires can 1570 between the RCD 1520 and the DBs 1550 and the NVM controller 1530 as well as the lines 1580 between the NVM controller 1530 and the NVM devices 1540 be specified with looser specifications, as the communication on these lines 1570 . 1580 can be absorbed into the existing JEDEC specification latency responses (ie latency may be behind the RCD 1520 and the DBs 1550 isolated), or the electrical routing contained entirely within the DIMM can ensure sufficient SI for transmission. This enables multi-vendor development of DB and RCD chips and "agnostic" placement of the NVM devices and the NVM controller. Further, this allows sufficient isolation of the NVM devices and the NVM controller to allow the incubation of new memories while also providing DRAM speed for mature NVMs. In addition, the RAM buffers in the DBs 1550 and in the RCD 1520 with non-deterministic protocol sufficient to separate and align behaviors of NV DIMM P internals and DRAM bus externals.

In einer Ausführungsform inferiert jedes DQx eine Gruppierung von Daten-, Strobe- und Taktsignalen, welche vom Speichercontroller 120 im Host 100 kommen. Die Anzahl der Sätze von DQs könnte ein Maximum von DQ7 oder DQ8 in einer Bereitstellung aufweisen, aber es gibt andere Maxima, wie beispielsweise DQ9. (Einige Spezifikationen bezeichnen diese als CBs (Check Bits, Prüfbits).) Dementsprechend können diese Ausführungsformen auf eine beliebige Anzahl von Datengruppensignalen zutreffen, und die maximale DQ-Gruppennummer wird hierin als N bezeichnet. DQ- und RCD-Signal-Timings und Einschränkungen innerhalb jeder Gruppe (z. B. Nachrichteninhaltsleitungen, Strobes und Takte) können sehr streng sein. Beispielsweise können die „Nachrichtenleitungen“ entweder Daten im Fall von DQ oder Befehl und Adresse im Fall von RCD sein. Dadurch wird sichergestellt, dass jeweils acht Bytes von Daten und die Befehle und Adressen zusammen empfangen und korrekt nach Gruppe decodiert werden. Jede Nachricht kann empfangen und korrekt von den DBs 1550 oder dem RCD 1530 (abhängig von der entsprechenden Gruppe) interpretiert werden, so dass die Gesamt-Timing-Einschränkungen zwischen jedem DQ und dem RCD 1530 nachsichtiger sein können. Die Struktur von Verzögerungen des gesamten DRAM-Busses kann viel lockerer als eine einzelne Flanke der DRAM-Bustaktrate sein. Somit sind das DQ und der RCD 1530 in der Lage, korrekt zu den entsprechenden und verwandten Puffern zu decodieren und zu codieren. In einer Ausführungsform sendet der Speichercontroller 1530 die Nachrichtengruppen alle auf einmal, und die korrekten Platzierungen und Signalintegritätsregeln sind sichergestellt, so dass die Daten jede Komponente erreichen und korrekt decodiert werden. In one embodiment, each DQx inferiert a grouping of data, strobe and clock signals from the memory controller 120 in the host 100 come. The number of sets of DQs could have a maximum of DQ7 or DQ8 in one deployment, but there are other maxima, such as DQ9. (Some specifications refer to these as CBs (check bits)). Accordingly, these embodiments may apply to any number of data group signals, and the maximum DQ group number is referred to herein as N. DQ and RCD signal timing and constraints within each group (eg, message content lines, strobes, and bars) can be very stringent. For example, the "message lines" may be either data in the case of DQ or command and address in the case of RCD. This ensures that each eight bytes of data and the instructions and addresses are received together and decoded correctly by group. Each message can be received and correctly received by the DBs 1550 or the RCD 1530 (depending on the appropriate group), so the overall timing constraints between each DQ and the RCD 1530 can be more lenient. The structure of delays of the entire DRAM bus can be much looser than a single edge of the DRAM bus clock rate. Thus, the DQ and the RCD 1530 able to correctly decode and encode to the corresponding and related buffers. In one embodiment, the memory controller sends 1530 the newsgroups all at once, and the correct placements and signal integrity rules are ensured so that the data will reach each component and be correctly decoded.

Der grundlegende Betrieb des RCD 1520 und der DBs 1550 ähnelt dem Betrieb des RCD 1220 und der DBs 1230 im obigen Beispiel mit einem DRAM-basierten DIMM, wobei einige Unterschiede vorliegen, um die Verwendung von NVM-Vorrichtungen 1540 und dem NVM-Controller 1530 zu berücksichtigen. Das heißt, im Allgemeinen speichern die DBs 1550 Daten, welche zu den NVM-Vorrichtungen 1540 gesendet oder aus ihnen gelesen werden, und der RCD 1520 dient als ein Repeater, um den Befehl und die Adresse, welche auf der CMD/Addr-Leitung des Speichersystems 1500 empfangen werden, an die NVM-Vorrichtungen 1540 zu wiederholen. Jedoch verwendet das DRAM-basierte DIMM ein deterministisches Protokoll, wobei der RCD 1220 die DBs 1230 anweist, ihre Daten nach einer vorbestimmten Zeitdauer an den Host freizugeben. Wie oben erwähnt, können die angeforderten Daten aufgrund des Mechanismus von Lesedaten aus einem nicht-flüchtigen Speicher nicht bereit sein, in der vorbestimmten Zeitdauer an den Host gesendet zu werden. Beispiele für diesen Mechanismus umfassen, sind aber nicht darauf beschränkt, Medienwahl (z. B. MRAM, PRAM, RRAM usw.) und Material für das Medium, Prozessknoten, I/O-Schaltungsverhalten, I/O-Schaltungsprotokoll, intermittierende Logik-Dies, Controllerverzögerungen, Datenfehler (BER, Defekte), welche einen höheren oder niedrigeren ECC erfordern, was eine höhere oder niedrigere Anzahl von NVM-Dies bedeutet, Platzierungen von NVM-Vorrichtungen und -Controllern, NVM-Kommunikationskanalverzögerungen (z. B. Befehl vs. Datengruppen von Befehlen, gemeinsam genutzte Daten und Befehl, Serializer/Deserializer (SerDes) vs. parallel), und NVM-Kanalverbindungsoptionen (z. B. Through Silicon Via (TSV), Through Silicon sideWall (TSW), direkt, zwischengeschaltet). The basic operation of the RCD 1520 and the DBs 1550 similar to the operation of the RCD 1220 and the DBs 1230 in the example above with a DRAM-based DIMM, with some differences to the use of NVM devices 1540 and the NVM controller 1530 to take into account. In other words, the DBs generally store 1550 Data related to the NVM devices 1540 be sent or read from them, and the RCD 1520 serves as a repeater to the command and the address appearing on the CMD / Addr line of the storage system 1500 received to the NVM devices 1540 to repeat. However, the DRAM-based DIMM uses a deterministic protocol wherein the RCD 1220 the DBs 1230 instructs to release their data to the host after a predetermined amount of time. As mentioned above, due to the mechanism of read data from a non-volatile memory, the requested data may not be ready to be sent to the host in the predetermined amount of time. Examples of this mechanism include, but are not limited to, media selection (e.g., MRAM, PRAM, RRAM, etc.) and media material, process nodes, I / O circuit behavior, I / O Circuit Log, Intermittent Logic Dies, Controller Delays, Data Errors (BER, Defects) which require a higher or lower ECC, which means a higher or lower number of NVM Dies, Placements of NVM Devices and Controllers, NVM Communication Channel Delays (e.g. B. Command vs. Data Groups of Commands, Shared Data and Command, Serializer / Deserializer (SerDes) vs. Parallel), and NVM Channel Connection Options (eg, Through Silicon Via (TSV), Through Silicon Side Wall (TSW), directly, interposed).

Dementsprechend ist der RCD 1520 in der in 15 gezeigten Ausführungsform ausgelegt (z. B. durch Programmieren eines Prozessors im RCD 1520 mit Firmware/Software oder durch Bereitstellen einer reinen Hardwareimplementierung), um den oben erörterten neuen Lesebefehl zu empfangen und darauf zu antworten. Insbesondere ist der RCD 1520 in dieser Ausführungsform ausgelegt, um ein Bereitschaftssignal auf der CMD/Addr-Leitung bereitzustellen, wenn die DBs 1550 die Daten in Reaktion auf einen Lesebefehl enthalten, und ist ferner ausgelegt, um die DBs 1550 anzuweisen, ihre Daten (nach einer vordefinierten Verzögerung) an den Host in Reaktion darauf freizugeben, dass der RCD 1520 einen Sendebefehl empfängt. Accordingly, the RCD 1520 in the in 15 shown embodiment (eg by programming a processor in the RCD 1520 with firmware / software or by providing a pure hardware implementation) to receive and respond to the new read command discussed above. In particular, the RCD 1520 in this embodiment, to provide a ready signal on the CMD / Addr line when the DBs 1550 The data contained in response to a read command, and is further designed to the DBs 1550 to instruct their data (after a predefined delay) to the host in response to release the RCD 1520 receives a send command.

16 ist ein Blockschaltbild, welches eine Leseoperation veranschaulicht. Wie in 16 gezeigt, wird ein Lesebefehl vom RCD 1520 vom Speichercontroller im Host empfangen (Pfeil 1). Die Adresse und der Lesebefehl werden dann vom RCD 1520 an den NVM-Controller 1530 übertragen (Pfeil 2). Der Lesebefehl wird verarbeitet und an die relevanten NVM-Vorrichtungen 1540 übertragen (Pfeil 3), und die Lesedaten kehren zum NVM-Controller und dann weiter zu den DBs 1550 zurück (Pfeil 4). Wenn der RCD 1520 weiß, dass die DBs 1550 die Daten enthalten (z. B. durch Polling oder anderweitige Kommunikation mit den DBs 1550 oder nach Anweisung durch den NVM-Controller 1530), sendet der RCD 1520 das Signal RD_RDY an den Speichercontroller im Host (Pfeil 5). Als Antwort gibt der Speichercontroller im Host einen SEND-Befehl auf dem Befehlsbus aus (Pfeil 6), und als Antwort weist der RCD 1520 die DBs 1550 an, die Daten (nach einer optionalen angegebenen Verzögerung (tsend)) an den Host zu übertragen (Pfeil 7). 16 Fig. 16 is a block diagram illustrating a read operation. As in 16 is shown, a read command from the RCD 1520 received from the memory controller in the host (arrow 1). The address and the read command are then sent from the RCD 1520 to the NVM controller 1530 transferred (arrow 2). The read command is processed and sent to the relevant NVM devices 1540 Transmit (arrow 3), and the read data returns to the NVM controller and then on to the DBs 1550 back (arrow 4). If the RCD 1520 know that the DBs 1550 contain the data (eg by polling or otherwise communicating with the DBs 1550 or as directed by the NVM controller 1530 ), the RCD sends 1520 the signal RD_RDY to the memory controller in the host (arrow 5). In response, the memory controller in the host issues a SEND command on the command bus (arrow 6), and in response the RCD points 1520 the DBs 1550 to transfer the data (after an optional specified delay (tsend)) to the host (arrow 7).

Wendet man sich nun der Schreiboperation zu (siehe 17), prüft der Speichercontroller im Host zunächst die Schreibzählung, um sicherzustellen, dass ein verbleibender Credit für die Schreiboperation vorhanden ist. Falls dies der Fall ist, überträgt der Speichercontroller im Host einen Schreibbefehl und eine Adresse an den RCD 1520 (Pfeil 2), und der Speichercontroller dekrementiert seinen Schreib-Credit. Als Nächstes überträgt der Speichercontroller im Host nach einer angegebenen JEDEC-Verzögerung Daten an die DBs 1550 (Pfeil 3). Dann werden der Befehl und die Daten vom RCD 1520 und den DBs 1550 an den NVM-Controller 1530 übertragen (Pfeil 4), obwohl der RCD 1520 die Adresse und den Befehl weiterleiten kann, bevor die Daten von den DBs 1550 eingehen. Als Nächstes werden die Schreibdaten bei den NVM-Vorrichtungen 1540 festgeschrieben (Pfeil 5), und der Schreib-Credit wird an den Speichercontroller im Host auf dem Bus zurückgeleitet (Pfeil 6). Es sollte beachtet werden, dass die Aktionen 5 und 6 vertauscht werden können. Falls jedoch Persistenz vor einer Schreib-Credit-Bestätigung erforderlich ist, dann kann es bevorzugt sein, Aktion 5 vor 6 durchzuführen. Falls Persistenz vor einer Schreib-Credit-Bestätigung nicht erforderlich ist, dann kann es bevorzugt sein, Aktion 6 vor 5 durchzuführen. In jedem Fall inkrementiert der Speichercontroller im Host die Schreib-Credit-Zählung (die Schreib-Credit-Antwort zurück an den Host 100 kann entweder einzelne Credits oder mehrere Credits pro Nachricht an den Host 100 sein). Turning now to the write operation (see 17 ), the memory controller in the host first checks the write count to ensure there is a remaining credit for the write operation. If so, the memory controller in the host transmits a write command and an address to the RCD 1520 (Arrow 2), and the memory controller decrements its write credit. Next, the memory controller in the host transfers data to the DBs after a specified JEDEC delay 1550 (Arrow 3). Then the command and the data from the RCD 1520 and the DBs 1550 to the NVM controller 1530 transferred (arrow 4), although the RCD 1520 the address and the command can forward before the data from the DBs 1550 received. Next, the write data becomes the NVM devices 1540 committed (arrow 5), and the write credit is returned to the memory controller in the host on the bus (arrow 6). It should be noted that actions 5 and 6 can be reversed. However, if persistence is required before a write-credit confirmation, then it may be preferable to perform action 5 before 6. If persistence is not required before a write-credit confirmation, then it may be preferable to perform action 6 before 5. In either case, the memory controller in the host increments the write-credit count (the write-credit response back to the host 100 Either single credits or multiple credits per message to the host 100 be).

Aufgrund des Mechanismus des Lesens und Schreibens in NVM-Speichervorrichtungen könnten Lese- und Schreibbefehle möglicherweise nicht in der Reihenfolge abgeschlossen werden, in der sie empfangen wurden. Wie oben erörtert, kann ein zweiter empfangener Lesebefehl (Lesevorgang B) vor einem ersten empfangenen Lesebefehl (Lesevorgang A) abgeschlossen werden, beispielsweise falls Lesevorgang B eine höhere Priorität hat oder falls die physische Adresse von Lesevorgang A für Lesevorgänge nicht verfügbar ist und Lesevorgang A für einen späteren Zeitpunkt geplant ist. Dies ist kein Problem für DRAM-basierte DIMMs, da Lese- und Schreibbefehle in der Reihenfolge verarbeitet werden, in der sie empfangen werden. Dies kann jedoch ein Problem bei NV-DIMMs sein, da die vom NV-DIMM an den Host freigegebenen Daten möglicherweise nicht die Daten sein können, welche der Host erwartet (z. B. erwartet der Host Daten von Lesevorgang A, erhält aber stattdessen Daten von Lesevorgang B). Um dieses Problem anzusprechen, ist ein Identifikator (ID) mit verschiedenen Befehlen assoziiert, um zu verfolgen, welche Daten zu welchen Befehlen gehören. Dies wird in 18 und 19 veranschaulicht. Due to the mechanism of reading and writing in NVM memory devices, read and write commands may not be completed in the order in which they were received. As discussed above, a second received read command (read B) may be completed prior to a first received read command (read A), for example, if read B has a higher priority or if the physical address of read A is not available for reads and read A for a later date is planned. This is not a problem for DRAM-based DIMMs because read and write commands are processed in the order in which they are received. However, this can be a problem with NV-DIMMs because the data shared by the NV-DIMM to the host may not be the data that the host expects (eg, the host expects data from read A, but instead receives data) from reading B). To address this problem, an identifier (ID) is associated with various commands to keep track of which data belongs to which commands. This will be in 18 and 19 illustrated.

18A ist ein Flussdiagramm einer Leseoperation einer Ausführungsform unter Verwendung des Speichersystems 1500 in 15. Wie in 18A gezeigt, befiehlt der Host einen Lesevorgang von einer Adresse (und gibt eine optionale Lese-ID an) (Vorgang 1880). Der RCD leitet dann den Befehl, die Adresse und die ID weiter (Vorgang 1882). Es sollte beachtet werden, dass diese ID (die verwendet werden kann, um Out-of-Order-Operationen zu ermöglichen) die gleiche wie die vom Host empfangene ID sein kann oder nicht. Als Nächstes sind die Daten vom NVM bereit (Vorgang 1884), und der RCD teilt dem Host mit, dass die Lesedaten bereit sind (und optional die ID des bereiten Lesevorgangs einschließen) (Vorgang 1886). Der Host gibt dann das Sendesignal aus (Vorgang 1888), und der RCD teilt dem NVM-Controller mit, dass er übertragen soll (Vorgang 1890). Die Daten (1892) werden dann übertragen (Vorgang 1894), zusammen mit einer Antwort, welche die ID umfasst (Vorgang 1896). 18A FIG. 10 is a flowchart of a read operation of an embodiment using the memory system. FIG 1500 in 15 , As in 18A As shown, the host commands a read from an address (and specifies an optional read ID) 1880 ). The RCD then forwards the command, address, and ID (act 1882 ). It should be noted that this ID (which may be used to enable out-of-order operations) may or may not be the same as the ID received from the host. Next, the data from NVM is ready (operation 1884 ), and the RCD shares tells the host that the read data is ready (and optionally includes the read read ID) 1886 ). The host then outputs the transmission signal (act 1888 ), and the RCD tells the NVM controller to transmit (operation 1890 ). The data ( 1892 ) are then transferred (act 1894 ), along with a response that includes the ID (act 1896 ).

18B ist ein Flussdiagramm einer Leseoperation einer anderen Ausführungsform. Wie in 18B gezeigt, befiehlt der Host 100 einen Lesevorgang von einer Adresse und schließt einen optionalen Leseidentifikator (ID) ein (Vorgang 1805). Der RCD 1520 empfängt den Befehl, die Adresse und die ID an den NVM-Controller 1520 (Vorgang 1810). Der RCD 1520 leitet auch den Befehl und die ID (aber nicht die Adresse) an die DBs 1550 weiter (Vorgang 1815). Als Antwort ordnen die DBs 1550 Platz für die Lesedaten zu und referenzieren den zugeordneten Platz mit der ID (Vorgang 1820). (In einer anderen Ausführungsform haben die DBs immer etwas Platz verfügbar, und die ID wird in einer verzögerten Art und Weise mit der ID, welche innerhalb des RCD enthalten ist, korreliert.) Nachdem der NVM-Controller 1530 die angeforderten Daten von den NVM-Vorrichtungen gelesen hat (Vorgang 1825), sendet der NVM-Controller 1520 die Daten und die ID an die DBs 1550, wodurch die Daten in den zugeordneten Platz platziert werden, welcher durch die ID identifiziert wird (Vorgang 1835). Der NVM-Controller 1520 sendet auch ein Beendigungssignal und die ID an den RCD 1520 (Vorgang 1840), welcher entweder warten kann, bis die DBs 1550 bestätigen, dass die Daten platziert sind, oder eine vordefinierte Zeit warten kann (Vorgang 1845). Nachdem entweder die DBs 1550 die Speicherung der Daten bestätigen oder nachdem die vordefinierte Zeit verstrichen ist, teilt der RCD 1520 dem Host 100 mit, dass der Lesevorgang bereit ist (und kann auch die ID einschließen) (Vorgang 1850). Der Host 100 sendet später einen Sendebefehl (mit der ID), um die Lesedaten anzufordern (Vorgang 1855). Der RCD teilt dann dem NVM-Controller mit, dass er übertragen soll (Vorgang 1859). In Reaktion darauf teilt der NVM-Controller den DBs 1550 mit, die Daten, welche mit der ID assoziiert sind, nach einer optionalen vorbestimmten Verzögerung zu übertragen, welche durch einen Standard spezifiziert ist (Vorgang 1860). Die DBs 1550 übertragen dann die Daten, welche mit der ID assoziiert sind (Vorgang 1865), und der RCD überträgt ihre entsprechenden Informationen (Vorgang 1870). 18B Fig. 10 is a flowchart of a read operation of another embodiment. As in 18B shown, the host orders 100 a read from an address and includes an optional read identifier (ID) 1805 ). The RCD 1520 receives the command, address and ID to the NVM controller 1520 (Process 1810 ). The RCD 1520 also directs the command and the ID (but not the address) to the DBs 1550 continue (process 1815 ). In response, the DBs arrange 1550 Allocate space for the read data and reference the assigned seat with the ID (operation 1820 ). (In another embodiment, the DBs always have some space available, and the ID is correlated in a delayed manner with the ID contained within the RCD.) After the NVM controller 1530 has read the requested data from the NVM devices (act 1825 ), sends the NVM controller 1520 the data and the ID to the DBs 1550 whereby the data is placed in the allocated space identified by the ID (act 1835 ). The NVM controller 1520 Also sends a termination signal and the ID to the RCD 1520 (Process 1840 ), which can either wait until the DBs 1550 confirm that the data is placed or can wait a predefined time (Action 1845 ). After either the DBs 1550 confirming the storage of the data or after the predefined time has elapsed, the RCD communicates 1520 the host 100 that the read is ready (and may include the ID as well) (Action 1850 ). The host 100 later sends a send command (with the ID) to request the read data (Operation 1855 ). The RCD then tells the NVM controller to transmit (operation 1859 ). In response, the NVM controller shares the DBs 1550 with transmitting the data associated with the ID after an optional predetermined delay specified by a standard (act 1860). The DBs 1550 then transmit the data associated with the ID (act 1865 ), and the RCD transmits its corresponding information (operation 1870 ).

Wendet man sich nun 19A zu, ist 19A ein Flussdiagramm einer Schreiboperation einer Ausführungsform. Wie in 19A gezeigt, bestimmt der Host 100 zunächst, ob er einen Schreibbefehl senden kann, indem er prüft, ob Credits im Schreibzähler verblieben sind, und/oder prüft, ob das Persistenzniveau größer als 0 ist (Vorgang 1904). Es sollte beachtet werden, dass der Schreibzähler und der Persistenzzähler optional sind und dass eine Implementierung einen, beide oder keinen der Zähler aufweisen kann. Dieses bestimmte Beispiel verwendet sowohl Schreib- als auch Persistenzzähler, und falls der Schreibvorgang erlaubt ist, verringert der Host 100 die Zählung in beiden Zählern (Vorgang 1908). Wenn der RCD 1520 den Schreibbefehl vom Host 100 empfängt, sendet er den Befehl und die Adresse an den NVM-Controller 1530 (Vorgang 1912) und sendet die zu schreibenden Daten an die DBs 1550 (Vorgang 1922). Der RCD 1520 kann auch die optionale ID in Ausführungsformen einschließen, bei denen der NVM-Controller 1530 die Daten aus den DBs 1550 holt (Vorgang 1925). Die Daten werden dann wiederholt (Vorgang 1926). Der NVM-Controller 1530 akzeptiert dann die Daten von den DBs 1550 in seine Schreibpuffer (Vorgang 1932). Der NVM-Controller 1530 bewegt dann die Daten durch seine Puffer und kann schließlich in einem optionalen Zustand sein, dass er bei Stromausfall geschützt ist und sichergestellt ist, dass geschrieben wird (Vorgang 1934). Der NVM-Controller 1530 schreibt dann die Daten zu den NVM-Vorrichtungen 1540 (Vorgang 1936). Turning now 19A to, is 19A a flowchart of a write operation of an embodiment. As in 19A shown, the host determines 100 first, if he can send a write command by checking whether credits have remained in the write counter and / or checking if the persistence level is greater than 0 (act 1904 ). It should be noted that the write counter and the persistence counter are optional and that an implementation may have one, both or none of the counters. This particular example uses both write and persistence counters, and if the write is allowed, the host decreases 100 the count in both counters (operation 1908 ). If the RCD 1520 the write command from the host 100 receives, sends the command and the address to the NVM controller 1530 (Process 1912 ) and sends the data to be written to the DBs 1550 (Process 1922 ). The RCD 1520 may also include the optional ID in embodiments where the NVM controller 1530 the data from the DBs 1550 brings (process 1925 ). The data is then repeated (operation 1926 ). The NVM controller 1530 then accepts the data from the DBs 1550 into its write buffer (operation 1932 ). The NVM controller 1530 then moves the data through its buffers and may eventually be in an optional state that it is protected in the event of a power failure and is sure to be writing (act 1934 ). The NVM controller 1530 then writes the data to the NVM devices 1540 (Process 1936 ).

In dieser Ausführungsform gibt es drei Stellen, an denen das Speichersystem 100 zurück zum Host 100 kommunizieren kann, dass der Schreibvorgang abgeschlossen ist. Das Protokoll kann zwischen ihnen unterscheiden oder nicht, und es kann sie separat verfolgen oder nicht. Auch kann es vorkommen, dass Kunden oder Hersteller unterschiedliche Verhaltensweisen implementieren werden. Wie in 19 gezeigt, werden der Schreib-Persist-Indikator und Zähler in einer Ausführungsform inkrementiert (Vorgänge 1944 und 1948). In einer anderen Ausführungsform werden der Schreibpersistenzindikator und Zähler inkrementiert (Vorgänge 1952 und 1956). In noch einer weiteren Ausführungsform werden der Schreibabschlussindikator und Zähler inkrementiert (Vorgänge 1964 und 1968). In this embodiment, there are three locations where the storage system 100 back to the host 100 can communicate that the write is completed. The protocol may or may not differentiate between them, and it may or may not track them separately. Also, it may happen that customers or manufacturers will implement different behaviors. As in 19 In one embodiment, the write persist indicator and counter are incremented (operations 1944 and 1948 ). In another embodiment, the write persistence indicator and counter are incremented (operations 1952 and 1956 ). In yet another embodiment, the write completion indicator and counter are incremented (operations 1964 and 1968 ).

19B ist ein Flussdiagramm einer Schreiboperation einer anderen Ausführungsform. Wie in 19B gezeigt, bestimmt der Host 100 zunächst, ob er einen Schreibbefehl senden kann, indem er prüft, ob Credits im Schreibzähler verblieben sind, und/oder prüft, ob das Persistenzniveau größer als 0 ist (Vorgang 1905). Es sollte beachtet werden, dass der Schreibzähler und der Persistenzzähler optional sind und dass eine Implementierung einen, beide oder keinen der Zähler aufweisen kann. Dieses bestimmte Beispiel verwendet sowohl Schreib- als auch Persistenzzähler, und falls der Schreibvorgang erlaubt ist, verringert der Host 100 die Zählung in beiden Zählern (Vorgang 1910). Wenn der RCD 1520 den Schreibbefehl vom Host 100 empfängt, sendet er den Befehl und die Adresse an den NVM-Controller 1530 (Vorgang 1915) und sendet die zu schreibenden Daten an die DBs 1550 (Vorgang 1920). Der RCD 1520 kann auch die Schreib-ID in Ausführungsformen einschließen, bei denen der NVM-Controller 1530 die Daten aus den DBs 1550 holt (Vorgang 1925). Falls der NVM-Controller 1530 die Daten nicht aus den DBs 1550 holt, schieben die DBs 1550 die Schreibdaten zum NVM-Controller 1520, wie durch den RCD 1520 koordiniert, um Daten für die ID anzufordern (Vorgang 1930). Die Daten werden dann zum NVM-Controller 1530 bewegt (Vorgang 1932). Der NVM-Controller 1530 akzeptiert dann die Daten von den DBs 1550 in seine Schreibpuffer (Vorgang 1935). Der NVM-Controller 1530 bewegt dann die Daten durch seine Puffer und kann schließlich in einem optionalen Zustand sein, dass er bei Stromausfall geschützt ist und sichergestellt ist, dass geschrieben wird (Vorgang 1940). Der NVM-Controller 1530 schreibt dann die Daten zu den NVM-Vorrichtungen 1540 (Vorgang 1945). 19B FIG. 10 is a flowchart of a write operation of another embodiment. FIG. As in 19B shown, the host determines 100 first, if he can send a write command by checking whether credits have remained in the write counter and / or checking if the persistence level is greater than 0 (act 1905 ). It should be noted that the write counter and the persistence counter are optional and that an implementation may have one, both or none of the counters. This particular example uses both write and persistence counters, and if the write is allowed, the host decreases 100 the count in both counters (operation 1910 ). If the RCD 1520 the write command from the host 100 receives, sends the command and the address to the NVM controller 1530 (Process 1915 ) and sends the to be written Data to the DBs 1550 (Process 1920 ). The RCD 1520 may also include the write ID in embodiments where the NVM controller 1530 the data from the DBs 1550 brings (process 1925 ). If the NVM controller 1530 the data is not from the DBs 1550 gets, push the DBs 1550 the write data to the NVM controller 1520 as by the RCD 1520 coordinates to request data for the ID (operation 1930 ). The data then becomes the NVM controller 1530 moved (operation 1932 ). The NVM controller 1530 then accepts the data from the DBs 1550 into its write buffer (operation 1935 ). The NVM controller 1530 then moves the data through its buffers and may eventually be in an optional state that it is protected in the event of a power failure and is sure to be writing (act 1940 ). The NVM controller 1530 then writes the data to the NVM devices 1540 (Process 1945 ).

In dieser Ausführungsform gibt es drei Stellen, an denen das Speichersystem 100 zurück zum Host 100 kommunizieren kann, dass der Schreibvorgang abgeschlossen ist. Das Protokoll kann zwischen ihnen unterscheiden oder nicht, und es kann sie separat verfolgen oder nicht. Auch kann es vorkommen, dass Kunden oder Hersteller unterschiedliche Verhaltensweisen implementieren werden. Wie in 19 gezeigt, werden der Schreib-Persist-Indikator und Zähler in einer Ausführungsform inkrementiert (Vorgänge 1955 und 1960). In einer anderen Ausführungsform werden der Schreibpersistenzindikator und Zähler inkrementiert (Vorgänge 1970 und 1975). In noch einer weiteren Ausführungsform werden der Schreibabschlussindikator und Zähler inkrementiert (Vorgänge 1985 und 1990). In this embodiment, there are three locations where the storage system 100 back to the host 100 can communicate that the write is completed. The protocol may or may not differentiate between them, and it may or may not track them separately. Also, it may happen that customers or manufacturers will implement different behaviors. As in 19 In one embodiment, the write persist indicator and counter are incremented (operations 1955 and 1960 ). In another embodiment, the write persistence indicator and counter are incremented (operations 1970 and 1975 ). In yet another embodiment, the write completion indicator and counter are incremented (operations 1985 and 1990 ).

Ein anderes Problem, welches möglicherweise aufgrund der Verwendung eines NVM-Controllers 1520 angesprochen werden muss, ist die Taktrate, da der NVM-Controller 1520 einen langsameren Takt benötigen kann als der, welcher durch den Host 100 auf dem SDRAM-Bus erzeugt wird. Hochgeschwindigkeitsbusleitungen von herkömmlichen DIMMs können komplexe Schaltungen in den Eingangs-/Ausgangsverbindungen am NVM-Controller 1520 sowie ein sorgfältiges Routing im Speichersystem 1500 erfordern. Um dies anzusprechen, kann der RCD 1520 in einer Ausführungsform die Taktgeschwindigkeit ändern, um Daten in den internen Leitungen im Speichersystem 100 mit einer langsameren Frequenz zu übertragen. (Alternativ dazu, dass der RCD 1520 diese Funktionalität durchführt, kann der NVM-Controller 1520 oder eine andere Komponente im Speichersystem 100 die Taktgeschwindigkeit ändern.) Dies wird diagrammatisch in 20 für eingehende Daten gezeigt (die gleiche Umwandlung kann umgekehrt zum Zurücksenden von Daten an den Host 100 erfolgen). 20 zeigt das Takt-, DQ- und DQ-Strobe-Signal von der Seite des Hosts 100 (linker Teil von 20) und von der Seite des NVM-Controllers 1530 (rechter Teil von 20). Wie in dieser Zeichnung gezeigt, ist das Taktsignal vom Host 100 auf einer Frequenz Thost, welche aufgrund des DDR-Protokolls bewirkt, dass Daten und Daten-Strobes mit einer relativ hohen Frequenz auftreten, was zu viel sein kann, um vom NVM-Controller 1530 ohne signifikante Änderungen an seinen Schaltungen gehandhabt zu werden. Im Gegensatz dazu können Daten und Daten-Strobes, wie durch den rechten Teil von 20 gezeigt, durch Verlangsamen des Takts auf Tnvsdimm auf eine relativ niedrige Frequenz verlangsamt werden, was für den NVM-Controller 1530 einfacher ist. Another problem that may be due to the use of an NVM controller 1520 must be addressed, the clock rate, as the NVM controller 1520 may need a slower clock than the one provided by the host 100 is generated on the SDRAM bus. High speed bus lines of conventional DIMMs can handle complex circuits in the input / output connections on the NVM controller 1520 as well as careful routing in the storage system 1500 require. To address this, the RCD 1520 in one embodiment, changing the clock speed to data in the internal lines in the memory system 100 to transmit at a slower rate. (Alternatively, the RCD 1520 This functionality can be performed by the NVM controller 1520 or another component in the storage system 100 change the clock speed.) This becomes diagrammatic in 20 shown for incoming data (the same conversion can be reversed to send data back to the host 100 respectively). 20 shows the clock, DQ and DQ strobe signal from the host side 100 (left part of 20 ) and from the side of the NVM controller 1530 (right part of 20 ). As shown in this drawing, the clock signal is from the host 100 on a frequency Thost, which due to the DDR protocol causes data and data strobes to occur at a relatively high frequency, which may be too much to get from the NVM controller 1530 without significant changes to its circuits. In contrast, data and data strobes, as shown by the right part of 20 shown by slowing down the clock to Tnvsdimm be slowed to a relatively low frequency, indicating the NVM controller 1530 is easier.

Der RCD 1520 kann ausgelegt sein, um den Takt unter Verwendung eines beliebigen geeigneten Verfahrens zu verlangsamen. Beispielsweise kann der RCD 1520 Taktteiler enthalten, um langsamere Takte aus dem Quellentakt zu generieren (z. B. durch Teilen der Frequenz durch eine Ganzzahl, um eine langsamere Frequenz zu erzeugen). Der RCD 1520 kann auch eine Phasenregelschleife (PLL, Phase-Locked Loop) enthalten, um die Taktfrequenz zu erhöhen, was für die Teilung der Taktfrequenz durch eine nicht-integrale Bruchzahl wichtig sein kann. Um beispielsweise die Taktfrequenz durch 3/2 zu teilen (oder mit anderen Worten mit 2/3 zu multiplizieren), kann eine PLL verwendet werden, um die Taktfrequenz zuerst zu verdoppeln, bevor sie durch drei geteilt wird. Als weiteres Beispiel kann der RCD 1520 Verzögerungskompensationsschaltungen aufweisen (z. B. kann eine Phasenregelschleife die Verzögerung enthalten, um in ihrer Rückkopplungsschleife dafür zu kompensieren, und somit würde die Verzögerung automatisch vom Taktausgang subtrahiert werden; oder explizite verzögerungsverriegelte Schleifen können hinzugefügt werden, um die Verzögerungen explizit anzupassen). Als noch weiteres Beispiel kann der RCD 1520 Datensynchronisierer aufweisen, welche die Daten verlangsamen, nicht nur den Takt. Dies kann unter Verwendung eines First-In-First-Out-Speichers erfolgen, welcher den Vorteil hat, die Daten sicher von einer Taktdomäne zu einer anderen zu bewegen. The RCD 1520 may be configured to slow down the clock using any suitable method. For example, the RCD 1520 Include clock dividers to generate slower clocks from the source clock (eg, by dividing the frequency by an integer to produce a slower frequency). The RCD 1520 may also include a phase-locked loop (PLL) to increase the clock frequency, which may be important for the division of the clock frequency by a non-integral fraction. For example, to divide the clock frequency by 3/2 (or in other words multiply by 2/3), a PLL can be used to first double the clock frequency before dividing by three. As another example, the RCD 1520 Delay compensation circuits (e.g., a phase locked loop may contain the delay to compensate in its feedback loop therefor, and thus the delay would be automatically subtracted from the clock output, or explicit delay locked loops may be added to explicitly adjust the delays). As yet another example, the RCD 1520 Have data synchronizer, which slow down the data, not just the clock. This can be done using a first-in-first-out memory, which has the advantage of moving the data securely from one clock domain to another.

Wie oben erwähnt, können, anstatt diese Taktänderungskomponenten im RCD 1520 zu implementieren, sie im NVM-Controller 1520 implementiert werden. Darüber hinaus kann der RCD 1502 die Takt- und Daten-Reclocking-Funktionen umfassen, um die Signalintegritäts- und Routinganforderungen an die DIMM-interne Verdrahtung zu lockern. Ferner können drei Takte verwendet werden (einer zum Sprechen mit dem Host (sehr schnell), einer zum Senden von Daten an den Mediencontroller (weniger schnell) und einer zum Sprechen mit dem NVM (noch weniger schnell)), in welchem Fall sowohl der NVM-Controller 1520 als auch der RCD 1520 eine Taktumwandlung durchführen könnten. As mentioned above, rather than these clock change components in the RCD 1520 to implement them in the NVM controller 1520 be implemented. In addition, the RCD 1502 The clock and data reclocking functions include loosening the signal integrity and routing requirements of the DIMM's internal wiring. Furthermore, three clocks can be used (one to talk to the host (very fast), one to send data to the media controller (less fast) and one to talk to the NVM (even less fast)), in which case both the NVM controller 1520 as well as the RCD 1520 could perform a clock conversion.

In Ausführungsformen, bei denen die Datentaktrate beim Weiterleiten durch den RCD abnimmt, wird der Takt vorzugsweise auf alle DBs verteilt. Somit können die DBs eine Kopie des Hosttakts und des Mediencontrollerseitentakts empfangen. Auch weiß der RCD vorzugsweise, wie langsam der Mediencontrollerseitentakt ist, so dass er seine Aufgabe weiterhin erfüllen kann, die DB-Datentransfers zu synchronisieren. In embodiments where the data clock rate decreases as it passes through the RCD, the clock is preferably distributed to all DBs. Thus, the DBs can receive a copy of the host clock and the media controller page clock. Also, the RCD preferably knows how slow the media controller page clock is, so it can still fulfill its task of synchronizing the DB data transfers.

Darüber hinaus können zusätzlich zur Taktumwandlung Bandbreitenüberlegungen vorhanden sein. Beispielsweise ist die Bandbreite im linken Teil von 20 definiert als: N Bits·(1 ns)/(Thost)·1 GHz oder N/(Thost/1 ns) [Gbits/s]. Im rechten Teil von 20 würde die Bandbreite definiert sein als: N/(nvdimm/1 ns) [Gbits/s]. Es gibt verschiedene Ansätze, welche verwendet werden können, um den Bandbreitenunterschied zu berücksichtigen. Beispielsweise verwendet ein Ansatz Serialisierer und Deserialisierer, um die gleiche Bandbreite wie ein DDR über dem DIMM zu erreichen. Der Deserialisierer kann einen schmalen Bus von N Bits mit einer Frequenz von f Zyklen/Sekunde und einer Transferrate von f*N Bits/Sekunde nehmen und ihn zu einem breiteren Bus von N·a Bits mit einer Frequenz von f/b Zyklen/Sekunde und einer Transferrate von f·N·a/b Bits/Sekunde umwandeln (für a = b ist die Bandbreite für den breiteren, langsameren Bus gleich). Die Verwendung des Serialisierers kann die Breite zurück zu N Bits mit einer Frequenz von f Zyklen/Sekunde transformieren. In addition, bandwidth considerations may be present in addition to clock conversion. For example, the bandwidth in the left part of 20 defined as: N bits * (1 ns) / (thost) * 1 GHz or N / (thost / 1 ns) [Gbits / s]. In the right part of 20 the bandwidth would be defined as: N / (nvdimm / 1 ns) [Gbits / s]. There are several approaches that can be used to account for the bandwidth difference. For example, one approach uses serializers and deserializers to achieve the same bandwidth as a DDR over the DIMM. The deserializer can take a narrow bus of N bits with a frequency of f cycles / second and a transfer rate of f * N bits / second and make it a wider bus of N * a bits with a frequency of f / b cycles / second and For a = b, the bandwidth is the same for the wider, slower bus). The use of the serializer can transform the width back to N bits at a frequency of f cycles / second.

In einem anderen Ansatz können Warteschlangen verwendet werden, um für die Bandbreitenfehlanpassung zu kompensieren. Die Busbreite ist für DB-Eingang und -Ausgang gleich. Bei diesem Ansatz werden eingehende Daten (vom Host 100 zum NVM-Controller 1330) in einem Puffer gehalten, welcher ein First-In-First-Out(FIFO)-Speicher sein kann, aber nicht sein muss. Die Verwendung eines Puffers kann dazu führen, dass die Übertragung an den NVM-Controller 1520 länger dauert, aber der Puffer stellt einen temporären Haltespeicherort während des Transfers bereit. Ausgehende Daten (vom NVM-Controller 1530 zu den DBs) können in einem Puffer (wie beispielsweise, aber nicht darauf beschränkt, einem FIFO) gesammelt werden, wenn sie mit einer niedrigen Bandbreite eintröpfeln. Die Daten können nur dann an den Host erneut übertragen werden, wenn ein komplettes Paket empfangen wird. In another approach, queues may be used to compensate for the bandwidth mismatch. The bus width is the same for DB input and output. In this approach, incoming data (from the host 100 to the NVM controller 1330 ) is held in a buffer which may or may not be a first-in-first-out (FIFO) memory. Using a buffer can cause transmission to the NVM controller 1520 takes longer, but the buffer provides a temporary hold during the transfer. Outgoing data (from the NVM controller 1530 to the DBs) can be collected in a buffer (such as, but not limited to, a FIFO) when they are dropping with a low bandwidth. The data can only be retransmitted to the host when a complete packet is received.

Änderungen an den DBs 1550 können auch vorgenommen werden, um die Verwendung von nicht-flüchtigem Speicher und des NVM-Controllers 1530 zu berücksichtigen. Um diese Änderungen zu verstehen, wird zunächst ein in 21 gezeigter DB 2100 betrachtet. Dieser DB 2100 umfasst einen Satz von Komponenten für die DQ-Signale und für die DQ-Strobe-Signale. Wie in 21 gezeigt, umfassen die Komponenten für die DQ-Signale I/O-Puffer 2110, 2120, Eingangs- und Ausgangs-FIFOs 2130, 2140 und Synchronisierungs-/Phasenanpassungslogik 2115. Die Komponenten für die DQ-Strobe-Signale umfassen I/O-Puffer 2150, 2160 und Strobe-Generatoren 2170, 2180. Der DB 2100 enthält auch eine Befehls-Parsing-Logik 2190, welche die Takt- und Befehlsbussignale als Eingang aufweist. In dieser Ausführungsform werden die FIFOs 2130, 2140 zum Zwischenspeichern von Daten verwendet und werden durch die RCD- und DQ-Strobe-Generatoren synchronisiert. In einer anderen Implementierung werden die FIFOs nicht verwendet, und der DB 2100 ist im „Pass-Through-Modus“ konfiguriert. Changes to the DBs 1550 can also be made to use non-volatile memory and the NVM controller 1530 to take into account. To understand these changes, an in 21 shown DB 2100 considered. This DB 2100 includes a set of components for the DQ signals and for the DQ strobe signals. As in 21 As shown, the components for the DQ signals include I / O buffers 2110 . 2120 , Input and output FIFOs 2130 . 2140 and synchronization / phasing logic 2115 , The components for the DQ strobe signals include I / O buffers 2150 . 2160 and strobe generators 2170 . 2180 , The DB 2100 also contains a command parsing logic 2190 which has the clock and command bus signals as input. In this embodiment, the FIFOs 2130 . 2140 used for caching data and are synchronized by the RCD and DQ strobe generators. In another implementation, the FIFOs are not used, and the DB 2100 is configured in pass-through mode.

Falls ein DB ausgelegt ist, um Daten in eine niedrigere Frequenz abwärtszuwandeln, können zusätzliche Komponenten verwendet werden, wie in 22 gezeigt. Wie der DB 2100 in 21 umfassen die Komponenten für die DQ-Strobe-Signale I/O-Puffer 2250, 2260 und Strobe-Generatoren 2270, 2280, und die Komponenten für die DQ-Signale umfassen I/O-Puffer 2210, 2220 und Synchronisierungs-/Phasenanpassungslogik 2215. Jedoch umfasst der DB 22 in 22 anstelle von Eingangs- und Ausgangs-FIFOs I/O-Puffer 2230, 2240, und die Befehls-Parsing-Logik 2290 enthält die folgenden Eingänge: Takt A (Hostseite), Takt B (NV-DIMM-Seite) und Befehlsbussignale vom RCD. Zusätzlich enthält der DB 2200 Dual-Port-, Dual-Clock-Direktzugriffsspeicher 2235, um eine Out-of-Order-Verarbeitung zu ermöglichen, da die Eingangs- und Ausgangspuffer 2230, 2240 sowohl als ein Datenspeicher als auch als ein Staging-Bereich für die Synchronisierung dienen (ein zweiter FIFO kann für die weitere Synchronisierung verwendet werden). If a DB is designed to down-convert data to a lower frequency, additional components may be used, as in FIG 22 shown. Like the DB 2100 in 21 include the components for the DQ strobe signals I / O buffer 2250 . 2260 and strobe generators 2270 . 2280 , and the components for the DQ signals include I / O buffers 2210 . 2220 and synchronization / phasing logic 2215 , However, the DB includes 22 in 22 instead of input and output FIFOs, I / O buffers 2230 . 2240 , and the command parsing logic 2290 contains the following inputs: clock A (host side), clock B (NV DIMM page), and command bus signals from the RCD. In addition, the DB contains 2200 Dual port, dual clock random access memory 2235 to allow out-of-order processing because the input and output buffers 2230 . 2240 serve both as a data store and as a staging area for synchronization (a second FIFO can be used for further synchronization).

Zurückkehrend zu den Zeichnungen. 23 ist eine Veranschaulichung einer alternativen Architektur zu der in 15 gezeigten. Returning to the drawings. 23 is an illustration of an alternative architecture to that in 15 shown.

Wie in 23A gezeigt, sind die NVM-Vorrichtungen 2540 mit den DBs 2350 verbunden, ohne durch den NVM-Controller 2330 zu gehen. Diese Ausführungsform kann nützlich sein, wenn NVM-Vorrichtungen, welche mit DRAM-Geschwindigkeit arbeiten, in der Lage sind, Datenraten mit den DBs 2350 und dem Bus 2310 in Übereinstimmung zu bringen. Schreib- und Lesevorgänge, welche in Bezug auf Medienspeicherorte in Konflikt stehen, die unvorhergesehene Latenzen verursachen, können von den DBs 2350 absorbiert werden, ohne den Bus 2310 zu beeinträchtigen. Der NVM-Controller 2330 kann die DBs 2350, den RCD 2320 und die NVM-Aktivität koordinieren, während erlaubt wird, dass Daten direkt zwischen den DBs 2350 und den NMV-Vorrichtungen 2340 weitergeleitet werden. As in 23A shown are the NVM devices 2540 with the DBs 2350 connected without the NVM controller 2330 to go. This embodiment may be useful when NVM devices that operate at DRAM speed are capable of data rates with the DBs 2350 and the bus 2310 to bring into line. Writes and reads that conflict with media locations that cause unforeseen latencies can be handled by the DBs 2350 be absorbed without the bus 2310 to impair. The NVM controller 2330 can the DBs 2350 , the RCD 2320 and coordinate the NVM activity while allowing data directly between the DBs 2350 and the NMV devices 2340 to get redirected.

Darüber hinaus kann, wie oben erwähnt, das Speichersystem mit einem RCD und DBs in verschiedenen Variationen von DIMMs (z. B. UDIMM, RDIMM und LRDIMM) hinzugefügt werden. Es gibt Variationen in jedem dieser DIMM-Formate. Beispielsweise weisen UDIMMs in Bezug auf elektrische Routingregeln gerade kurze Leitungen auf. UDIMMs weisen im Allgemeinen eine kleine Anzahl von DIMMs, DRAM-Banken/Ranks pro Paket und nächstes physisches Layout im Server-Motherboard auf. Die DRAM-Pakete und Befehlsroutingleitungen sind alle für wiederholbare Systemintegration und systemelektrische Interaktionen spezifiziert. Hierdurch weisen UDIMMs die günstigsten Produktionskosten auf. RDIMMs weisen einen RCD auf und weisen im Allgemeinen eine größere Anzahl von DIMMs auf. DRAM-Banken/Ranks pro Paket sind möglich. DRAM-Pakete, Terminierungen, Routing für Daten und RCD-Einzelheiten sind spezifiziert. RCD-zu-DRAM-Verbindungen sind lockere Spezifikationen. Im Vergleich zu UDIMM gibt es inkrementelle Kosten für RCD. LRDIMMs weisen bei allen elektrischen Kommunikationsgruppen Isolatoren auf, und DB- und RCD-Verbindungen zum Speichercontroller sind eng spezifiziert. LRDIMMs weisen die höchsten Kosten unter diesen drei Formaten auf, aber die meiste Anzahl von DIMMs, BGAs und Banken/Ranks pro Speichercontroller sind erlaubt. In addition, as noted above, the memory system may include one RCD and DBs in various variations of DIMMs (eg, UDIMM, RDIMM and LRDIMM). There are variations in each of these DIMM formats. For example, UDIMMs have short lines with respect to electrical routing rules. UDIMMs generally have a small number of DIMMs, DRAM banks / ranks per packet, and next physical layout in the server motherboard. The DRAM packets and instruction routing lines are all specified for repeatable system integration and system electrical interactions. As a result, UDIMMs have the cheapest production costs. RDIMMs have an RCD and generally have a larger number of DIMMs. DRAM banks / ranks per package are possible. DRAM packets, terminations, data routing, and RCD details are specified. RCD-to-DRAM connections are loose specifications. Compared to UDIMM, there are incremental costs for RCD. LRDIMMs have insulators across all electrical communication groups, and DB and RCD connections to the memory controller are tightly specified. LRDIMMs have the highest cost among these three formats, but most DIMMs, BGAs, and banks / ranks per storage controller are allowed.

Für jeden DRAM-Bus (UDIMM, RDIMM, LRDIMM) kann das Speichersystem Spezifikationen für die externen interagierenden Komponenten verwenden. Diese Spezifikationen können physische und elektrische Eigenschaften für maximale Interoperabilität umfassen. Dies kann Änderungen sowohl der physischen Signalisierungsschicht (z. B. zur Anpassung von elektrischen Spezifikationen) als auch der Befehlsschicht (z. B. zur Bereitstellung der entsprechenden Befehlsdecodierung) umfassen. Änderungen an der physischen Signalisierungsschicht können das Einführen von zusätzlichen Übertragungsleitungen im Steuersatz oder Änderungen an der Geometrie, der Impedanz und/oder der Terminierung beliebiger der Takt-, Befehls-, Daten- oder Steuersatzleitungen (einschließlich sowohl Standard-SDRAM/DDR-Steuersatzleitungen als auch Antwortbus) umfassen. In der Befehlsschicht können diese Änderungen auch die Auswahl zwischen verschiedenen Tsends umfassen, abhängig von der Verzögerung, welcher diese verschiedenen Formate ausgesetzt werden, oder Hinzufügen von neuer Interpretation zu neuen Befehlen (z. B. Assoziieren bestimmter Zeilendecodierungsbits nicht mit Adressen innerhalb eines Ranks, sondern inferierte Auswahl zusätzlicher Ranks innerhalb eines DIMM). For each DRAM bus (UDIMM, RDIMM, LRDIMM), the storage system may use specifications for the external interacting components. These specifications may include physical and electrical properties for maximum interoperability. This may include changes in both the physical signaling layer (eg, to adapt electrical specifications) and the instruction layer (eg, to provide the appropriate instruction decode). Changes to the physical signaling layer may include the insertion of additional transmission lines in the headset, or changes in the geometry, impedance, and / or termination of any of the clock, command, data, or header lines (including both standard SDRAM / DDR headset lines) Response bus). In the instruction layer, these changes may also include selection between different Tsends, depending on the delay to which these different formats are exposed, or adding new interpretation to new instructions (eg, associating particular row decode bits not with addresses within a ranks, but instead inferred selection of additional ranks within a DIMM).

Auch können parametrisierte Spezifikationen für die internen Verbindungen von einem NVM-Controller zu dem RCD und den DBs festgelegt werden. Die internen Verbindungen können optional sein, um lieferantenspezifische Optimierungen, Paketintegrationen oder ASIC-Integration zu ermöglichen. Die Spezifikationen können ausreichend robust sein, um diverse NVM-Controller-Platzierungen, diverse Datenkommunikationsraten und Signalintegritätseigenschaften zu handhaben. Die Spezifikationen für RAM-Pufferdimensionierung und RCD-Timing-Verhalten können auch für eine erfolgreiche lieferantenagnostische Interoperabilität verwendet werden. Also, parameterized specifications for the internal connections from an NVM controller to the RCD and DBs can be set. The internal connections can be optional to enable vendor-specific optimizations, package integrations, or ASIC integration. The specifications can be robust enough to handle diverse NVM controller placements, diverse data communication rates, and signal integrity characteristics. The specifications for RAM buffer sizing and RCD timing behavior can also be used for successful supplier diagnostic interoperability.

Zurückkehrend zu den Zeichnungen ist 23B eine Veranschaulichung eines RCD 2360 einer Ausführungsform. Wie in 23B gezeigt, umfasst der RCD 2360 in dieser Ausführungsform Eingangspuffer 2363, Latches/FFs 2363, Steuerregister 2364, Ausgangspuffer 2365, CS, CKE, Decodierlogik 2366, Steuerlogik 2367, Taktpuffer 2368, ein PLL 2369 und ein PLL-Rückkopplungsverzögerungs-Kompensationsmodul 2370. Viele der Schaltungselemente in diesem RCD 2360 können denjenigen ähneln, welche im oben erörterten RCD gefunden werden. Jedoch kann die Konfiguration der Steuerlogik 2367 geändert werden, um die Art der nicht-deterministisch zeitgesteuerten SNVRAM-Befehlssequenzen zu berücksichtigen, um SNVRAMs zu unterstützen. Die Steuerlogik 2367 ist für die Verhaltensreaktion des RCD verantwortlich, und Änderungen können vorgenommen werden, so dass die DRAM-DIMM-RCDs die in den Flussdiagrammen in 18 und 19 gezeigten Befehlsflüsse orchestrieren können. Der RCD weist auch die differenzierende Fähigkeit auf, mehr Befehle, Steuerungen und Adressen zu verstehen. Es können zusätzliche Ausgänge und Eingänge vorhanden sein, um neue Teile wie beispielsweise den NVM-Controller zu synchronisieren. Returning to the drawings 23B an illustration of a RCD 2360 an embodiment. As in 23B shown includes the RCD 2360 input buffer in this embodiment 2363 , Latches / FFs 2363 , Control register 2364 , Output buffer 2365 , CS, CKE, decoding logic 2366 , Control logic 2367 , Clock buffer 2368 , a PLL 2369 and a PLL feedback delay compensation module 2370 , Many of the circuit elements in this RCD 2360 may be similar to those found in the RCD discussed above. However, the configuration of the control logic 2367 to accommodate the nature of the non-deterministically timed SNVRAM command sequences to support SNVRAMs. The control logic 2367 is responsible for the behavioral response of the RCD, and changes can be made so that the DRAM DIMM RCDs are as shown in the flowcharts in 18 and 19 orchestrate the command flows shown. The RCD also has the differentiating ability to understand more commands, controls and addresses. There may be additional outputs and inputs to synchronize new parts such as the NVM controller.

Schließlich kann, wie oben erwähnt, eine beliebige geeignete Art von Speicher verwendet werden. Halbleiterspeichervorrichtungen umfassen flüchtige Speichervorrichtungen, wie beispielsweise dynamische Direktzugriffsspeicher(Dynamic Random Access Memory, „DRAM“)- oder statische Direktzugriffsspeicher(Static Random Access Memory, „SRAM“)-Vorrichtungen, nicht-flüchtige Speichervorrichtungen, wie beispielsweise resistiven Direktzugriffsspeicher (Resistive Random Access Memory, „ReRAM“), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (Electrically Erasable Programmable Read-Only Memory, „EEPROM“), Flash-Speicher (der auch als Teilmenge von EEPROM betrachtet werden kann), ferroelektrischen Direktzugriffsspeicher (Ferroelectric Random Access Memory, „FRAM“) und magnetoresistiven Direktzugriffsspeicher (Magnetoresistive Random Access Memory, „MRAM“) und andere Halbleiterelemente, welche Informationen speichern können. Jede Art von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Beispielsweise können Flash-Speichervorrichtungen in einer NAND- oder einer NOR-Konfiguration ausgelegt sein. Finally, as mentioned above, any suitable type of memory may be used. Semiconductor memory devices include volatile memory devices such as dynamic random access memory ("DRAM") or static random access memory ("SRAM") devices, non-volatile memory devices such as resistive random access memory ("Resistive Random Access Memory") , "ReRAM"), electrically erasable programmable read only memory ("EEPROM"), flash memory (which may also be considered as a subset of EEPROM), ferroelectric random access memory , "FRAM") and Magnetoresistive Random Access Memory ("MRAM") and other semiconductor elements that can store information. Each type of storage device may have different configurations. For example, flash memory devices may be configured in a NAND or a NOR configuration.

Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen ausgebildet sein. Als nicht einschränkendes Beispiel umfassen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente, welche in einigen Ausführungsformen ein Widerstandsschaltspeicherelement, wie beispielsweise ein Anti-Fuse-Phasenänderungsmaterial usw., und optional ein Lenkelement, wie beispielsweise eine Diode usw., umfassen. Ferner umfassen als nicht einschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente, welche in einigen Ausführungsformen Elemente umfassen, die eine Ladungsspeicherregion enthalten, wie beispielsweise ein Floating-Gate, leitfähige Nanopartikel oder ein Ladungsspeicher-Dielektrikummaterial. The memory devices may be formed of passive and / or active elements in any combination. As a non-limiting example, passive semiconductor memory devices include ReRAM device elements, which in some embodiments comprise a resistance switching element, such as an anti-fuse phase change material, etc., and optionally a steering element, such as a diode, etc. Further, as a non-limiting example, active semiconductor memory elements include EEPROM and flash memory device elements, which in some embodiments include elements that include a charge storage region, such as a floating gate, conductive nanoparticles, or a charge storage dielectric material.

Mehrere Speicherelemente können ausgelegt sein, so dass sie in Reihe verbunden sind oder so dass auf jedes Element einzeln zugegriffen werden kann. Als nicht einschränkendes Beispiel umfassen Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) typischerweise in Reihe verbundene Speicherelemente. Ein NAND-Speicher-Array kann so ausgelegt sein, dass das Array aus mehreren Strings von Speicher besteht, wobei ein String aus mehreren Speicherelementen besteht, welche eine einzelne Bitleitung teilen und auf die als Gruppe zugegriffen wird. Alternativ können Speicherelemente so ausgelegt sein, dass auf jedes Element einzeln zugegriffen werden kann, z. B. ein NOR-Speicher-Array. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können anderweitig ausgelegt sein. Multiple memory elements may be designed to be connected in series or so that each element may be individually accessed. As a non-limiting example, flash memory devices in a NAND (NAND) configuration typically include series connected memory elements. A NAND memory array may be arranged such that the array consists of multiple strings of memory, where a string consists of several memory elements which share a single bit line and are accessed as a group. Alternatively, memory elements may be designed so that each element can be accessed individually, e.g. B. a NOR memory array. NAND and NOR memory configurations are exemplary, and memory elements may be otherwise designed.

Die Halbleiterspeicherelemente, welche innerhalb und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie beispielsweise in einer zweidimensionalen Speicherstruktur oder in einer dreidimensionalen Speicherstruktur. The semiconductor memory elements disposed within and / or over a substrate may be arranged in two or three dimensions, such as in a two-dimensional memory structure or in a three-dimensional memory structure.

In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einem einzelnen Speichervorrichtungslevel angeordnet. Typischerweise sind Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene (z. B. in einer Ebene in der x-z-Richtung) angeordnet, welche sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats erstreckt, das die Speicherelemente unterstützt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente ausgebildet wird, oder es kann ein Trägersubstrat sein, welches an den Speicherelementen angebracht wird, nachdem sie ausgebildet wurden. Als nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie beispielsweise Silizium umfassen. In a two-dimensional memory structure, the semiconductor memory elements are arranged in a single level or a single memory device level. Typically, memory elements in a two-dimensional memory structure are disposed in a plane (eg, in a plane in the x-z direction) that extends substantially parallel to a major surface of a substrate that supports the memory elements. The substrate may be a wafer over or in which the layer of memory elements is formed, or it may be a carrier substrate which is attached to the memory elements after being formed. As a non-limiting example, the substrate may include a semiconductor such as silicon.

Die Speicherelemente können im einzelnen Speichervorrichtungslevel in einem geordneten Array angeordnet sein, wie beispielsweise in einer Mehrzahl von Zeilen und/oder Spalten. Die Speicherelemente können jedoch in nicht-regulären oder nicht-orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie beispielsweise Bitleitungen und Wortleitungen, aufweisen. The memory elements may be arranged in a single array device level in an ordered array, such as a plurality of rows and / or columns. However, the memory elements may be arranged in non-regular or non-orthogonal configurations. The memory elements may each comprise two or more electrodes or contact lines, such as bit lines and word lines.

Ein dreidimensionales Speicher-Array ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungslevels einnehmen, wodurch eine Struktur in drei Dimensionen ausgebildet wird (d. h. in den x-, y- und z-Richtungen, wobei die y-Richtung im Wesentlichen senkrecht und die x- und z-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats sind). A three-dimensional memory array is arranged such that memory elements occupy multiple levels or multiple memory device levels, thereby forming a structure in three dimensions (ie, in the x, y, and z directions, with the y direction substantially perpendicular and the x and z directions are substantially parallel to the main surface of the substrate).

Als nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichervorrichtungslevels angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicher-Array als mehrere vertikale Spalten angeordnet sein (z. B. Spalten, die sich im Wesentlichen senkrecht zur Hauptoberfläche des Substrats, d. h. in der y-Richtung, erstrecken), wobei jede Spalte mehrere Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration, z. B. in einer x-z-Ebene, angeordnet sein, was zu einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen führt. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicher-Array darstellen. As a non-limiting example, a three-dimensional memory structure may be vertically arranged as a stack of a plurality of two-dimensional memory device levels. As a further non-limiting example, a three-dimensional memory array may be arranged as a plurality of vertical columns (eg, columns extending substantially perpendicular to the main surface of the substrate, ie, in the y-direction), each column having multiple memory elements in it each column. The columns may be in a two-dimensional configuration, e.g. In an x-z plane, resulting in a three-dimensional array of storage elements with elements on multiple vertically stacked storage levels. Other configurations of storage elements in three dimensions may also represent a three-dimensional storage array.

Als nicht einschränkendes Beispiel können die Speicherelemente in einem dreidimensionalen NAND-Speicher-Array miteinander gekoppelt sein, um einen NAND-String innerhalb eines einzelnen horizontalen (z. B. x-z) Speichervorrichtungslevels auszubilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um einen vertikalen NAND-String auszubilden, welcher mehrere horizontale Speichervorrichtungslevels durchquert. Andere dreidimensionale Konfigurationen sind vorstellbar, bei denen einige NAND-Strings Speicherelemente in einem einzelnen Speicherlevel enthalten, während andere Strings Speicherelemente enthalten, welche sich durch mehrere Speicherlevels erstrecken. Dreidimensionale Speicher-Arrays können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration entworfen werden. As a non-limiting example, the memory elements in a three-dimensional NAND memory array may be coupled together to form a NAND string within a single horizontal (eg, x-z) memory device level. Alternatively, the memory elements may be coupled together to form a vertical NAND string that traverses multiple horizontal memory device levels. Other three-dimensional configurations are conceivable in which some NAND strings contain storage elements at a single storage level, while other strings contain storage elements that extend through multiple storage levels. Three-dimensional memory arrays can also be designed in a NOR configuration and in a ReRAM configuration.

Typischerweise werden in einem monolithischen dreidimensionalen Speicher-Array ein oder mehrere Speichervorrichtungslevels über einem einzelnen Substrat ausgebildet. Optional kann das monolithische dreidimensionale Speicher-Array auch eine oder mehrere Speicherschichten wenigstens teilweise innerhalb des einzelnen Substrats aufweisen. Als nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie beispielsweise Silizium umfassen. In einem monolithischen dreidimensionalen Array werden die Schichten, welche jeden Speichervorrichtungslevel des Arrays bilden, typischerweise auf den Schichten des darunter liegenden Speichervorrichtungslevels des Arrays ausgebildet. Jedoch können Schichten von benachbarten Speichervorrichtungslevels eines monolithischen dreidimensionalen Speicher-Arrays gemeinsam genutzt werden oder dazwischen liegende Schichten zwischen Speichervorrichtungslevels aufweisen. Typically, in a monolithic three-dimensional memory array, one or more memory device levels are formed over a single substrate. Optionally, the monolithic three-dimensional memory array may also include one or more memory layers at least partially within the single substrate. As a non-limiting example, the substrate may include a semiconductor such as silicon. In a monolithic three-dimensional array, the layers that make up each array device level of the array are typically formed on the layers of the underlying memory device level of the array. However, layers of adjacent memory device levels of a monolithic three-dimensional memory array may be shared or have intervening layers between memory device levels.

Dann können wiederum zweidimensionale Arrays separat ausgebildet werden und dann zusammen in einem Package gepackt werden, um eine nicht-monolithische Speichervorrichtung mit mehreren Speicherschichten auszubilden. Beispielsweise können nicht-monolithische gestapelte Speicher konstruiert werden, indem Speicherlevels auf separaten Substraten ausgebildet werden und die Speicherlevels dann aufeinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder aus den Speichervorrichtungslevels entfernt werden, aber da die Speichervorrichtungslevels anfänglich über separaten Substraten ausgebildet werden, sind die resultierenden Speicher-Arrays keine monolithischen dreidimensionalen Speicher-Arrays. Ferner können mehrere zweidimensionale Speicher-Arrays oder dreidimensionale Speicher-Arrays (monolithisch oder nicht-monolithisch) auf separaten Chips ausgebildet und dann zusammen in einem Package gepackt werden, um eine Speichervorrichtung mit gestapelten Chips auszubilden. Then, again, two-dimensional arrays may be separately formed and then packaged together in a package to form a non-monolithic memory device having a plurality of memory layers. For example, non-monolithic stacked memories can be constructed by forming memory levels on separate substrates and then stacking the memory levels together. The substrates may be thinned or removed from the memory device levels prior to stacking, but since the memory device levels are initially formed over separate substrates, the resulting memory arrays are not monolithic three-dimensional memory arrays. Further, a plurality of two-dimensional memory arrays or three-dimensional memory arrays (monolithic or non-monolithic) may be formed on separate chips and then packaged together in a package to form a stacked-chip memory device.

Assoziierte Schaltungen sind typischerweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, welche zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen wie beispielsweise Programmieren und Lesen auszuführen. Diese assoziierten Schaltungen können auf dem gleichen Substrat wie die Speicherelemente und/oder auf einem separaten Substrat liegen. Beispielsweise kann ein Controller für Speicher-Lese-/Schreiboperationen auf einem separaten Controllerchip und/oder auf dem gleichen Substrat wie die Speicherelemente angeordnet sein. Associated circuits are typically required for the operation of the memory elements and for communication with the memory elements. As non-limiting examples, memory devices may include circuits used to control and drive memory elements to perform functions such as programming and reading. These associated circuits may be on the same substrate as the memory elements and / or on a separate substrate. For example, a memory read / write controller may be located on a separate controller chip and / or on the same substrate as the memory elements.

Fachleute auf dem Gebiet werden erkennen, dass diese Erfindung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen innerhalb des Wesens und Schutzbereichs der Erfindung, wie hierin beschrieben und wie von Fachleuten auf dem Gebiet verstanden, abdeckt. Those skilled in the art will recognize that this invention is not limited to the described two-dimensional and three-dimensional exemplary structures, but covers all relevant memory structures within the spirit and scope of the invention as described herein and as understood by those skilled in the art.

Es ist beabsichtigt, dass die vorstehende detaillierte Beschreibung als eine Veranschaulichung ausgewählter Formen verstanden wird, welche die Erfindung annehmen kann, und nicht als eine Definition der Erfindung. Es sind nur die folgenden Ansprüche, einschließlich aller Entsprechungen, welche den Schutzbereich der beanspruchten Erfindung definieren sollen. Schließlich sollte beachtet werden, dass jeder Aspekt einer beliebigen der hierin beschriebenen bevorzugten Ausführungsformen alleine oder in Kombination miteinander verwendet werden kann. It is intended that the foregoing detailed description be understood to be illustrative of selected forms that the invention may take and not as a definition of the invention. It is only the following claims, including all equivalents, that are intended to define the scope of the claimed invention. Finally, it should be noted that any aspect of any of the preferred embodiments described herein may be used alone or in combination with one another.

Claims (26)

Speichersystem, umfassend: eine Mehrzahl von nicht-flüchtigen Speichervorrichtungen; einen Controller in Kommunikation mit der Mehrzahl von nicht-flüchtigen Speichervorrichtungen, wobei der Controller ausgelegt ist zum: Empfangen eines Lesebefehls von einem Host; in Reaktion auf das Empfangen des Lesebefehls vom Host Lesen von Daten aus der Mehrzahl von nicht-flüchtigen Speichervorrichtungen; Durchführen einer Operation mit einer unbestimmten Dauer aus der Perspektive des Hosts; Senden eines Bereitschaftssignals an den Host nach dem Durchführen der Operation; Empfangen eines Sendebefehls vom Host; und in Reaktion auf das Empfangen des Sendebefehls vom Host Senden der Daten an den Host; eine Mehrzahl von Datenpuffern in Kommunikation mit dem Controller und ausgelegt, um zwischen dem Controller und dem Host gesendete Daten zu speichern; und einen Befehls- und Adresspuffer, welcher ausgelegt ist, um Befehle und Adressen zu speichern, die vom Host gesendet werden, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um den Datenfluss in die und aus der Mehrzahl von Datenpuffern zu synchronisieren.  Storage system comprising: a plurality of non-volatile memory devices; a controller in communication with the plurality of non-volatile memory devices, the controller being configured to: Receiving a read command from a host; in response to receiving the read command from the host, reading data from the plurality of non-volatile storage devices; Performing an operation of indeterminate duration from the perspective of the host; Sending a ready signal to the host after performing the operation; Receiving a send command from the host; and in response to receiving the send command from the host, sending the data to the host; a plurality of data buffers in communication with the controller and configured to store data sent between the controller and the host; and a command and address buffer configured to store commands and addresses sent by the host, the command and address buffer further configured to synchronize data flow into and out of the plurality of data buffers. Speichersystem nach Anspruch 1, wobei Lese- und/oder Schreibbefehle mit Identifikatoren assoziiert sind, so dass die Lese- und/oder Schreibbefehle in einer anderen Reihenfolge als in einer Reihenfolge, in der sie vom Host empfangen werden, verarbeitet werden können.  The memory system of claim 1, wherein read and / or write commands are associated with identifiers so that the read and / or write commands can be processed in a different order than in an order received from the host. Speichersystem nach einem der vorstehenden Ansprüche, wobei der Befehls- und Adresspuffer einen registrierten Takttreiber umfasst.  The memory system of any one of the preceding claims, wherein the command and address buffer comprises a registered clock driver. Speichersystem nach einem der vorstehenden Ansprüche, wobei die Mehrzahl von Datenpuffern Direktzugriffsspeicher umfasst. The memory system of any one of the preceding claims, wherein the plurality of data buffers comprises random access memory. Speichersystem nach einem der vorstehenden Ansprüche, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um eine Frequenz eines vom Host empfangenen Takts zu ändern.  The memory system of any one of the preceding claims, wherein the command and address buffer is further adapted to change a frequency of a clock received from the host. Speichersystem nach einem der vorstehenden Ansprüche, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um eine Bandbreitenumwandlung durchzuführen.  The memory system of any preceding claim, wherein the command and address buffer is further configured to perform bandwidth conversion. Speichersystem nach einem der vorstehenden Ansprüche, wobei physische Schichten und Befehlsschichten des Speichersystems ausgelegt sind, um mit einem DRAM-DIMM-Kommunikationsprotokoll kompatibel zu sein.  The memory system of any one of the preceding claims, wherein physical layers and instruction layers of the memory system are adapted to be compatible with a DRAM DIMM communication protocol. Speichersystem nach Anspruch 7, wobei physische Schichten und Befehlsschichten des Speichersystems ausgelegt sind, um mit einem oder mehreren der Folgenden kompatibel zu sein: ungepuffertem DIMM (UDIMM), registriertem DIMM (RDIMM) und lastreduziertem DIMM (LRDIMM).  The memory system of claim 7, wherein physical layers and instruction layers of the memory system are configured to be compatible with one or more of the following: unbuffered DIMM (UDIMM), registered DIMM (RDIMM), and load-reduced DIMM (LRDIMM). Speichersystem nach einem der vorstehenden Ansprüche, wobei die Daten nach einer Zeitverzögerung an den Host gesendet werden, und wobei die Zeitverzögerung basierend auf einem mit dem Host verwendeten Kommunikationsprotokoll ausgewählt wird.  The memory system of any one of the preceding claims, wherein the data is sent to the host after a time delay, and wherein the time delay is selected based on a communication protocol used with the host. Speichersystem nach einem der vorstehenden Ansprüche, wobei der Controller ausgelegt ist, um unter Verwendung einer Taktdatenparallelschnittstelle mit dem Host zu kommunizieren.  The memory system of any one of the preceding claims, wherein the controller is configured to communicate with the host using a clock data parallel interface. Speichersystem nach Anspruch 10, wobei die Taktdatenparallelschnittstelle eine Doppeldatenrate(DDR)-Schnittstelle umfasst.  The memory system of claim 10, wherein the clock data parallel interface comprises a double data rate (DDR) interface. Speichersystem nach einem der vorstehenden Ansprüche, wobei wenigstens eine der Mehrzahl von nicht-flüchtigen Speichervorrichtungen einen dreidimensionalen Speicher umfasst.  A memory system according to any one of the preceding claims, wherein at least one of the plurality of non-volatile memory devices comprises a three-dimensional memory. Speichersystem, umfassend: eine Mehrzahl von nicht-flüchtigen Speichervorrichtungen; einen Controller in Kommunikation mit der Mehrzahl von nicht-flüchtigen Speichervorrichtungen, wobei der Controller ausgelegt ist zum: Empfangen eines Schreibbefehls von einem Host, wobei dem Host nur eine bestimmte Anzahl von ausstehenden Schreibbefehlen erlaubt wird, wie durch einen Schreibzähler im Host verfolgt; Durchführen einer Operation mit einer unbestimmten Dauer aus der Perspektive des Hosts; Schreiben von Daten in die Mehrzahl von nicht-flüchtigen Speichervorrichtungen; und nach dem Schreiben der Daten Senden eines Schreibzählererhöhungssignals an den Host; eine Mehrzahl von Datenpuffern in Kommunikation mit dem Controller und ausgelegt, um zwischen dem Controller und dem Host gesendete Daten zu speichern; und einen Befehls- und Adresspuffer, welcher ausgelegt ist, um Befehle und Adressen zu speichern, die vom Host gesendet werden, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um den Datenfluss in die und aus der Mehrzahl von Datenpuffern zu synchronisieren.  Storage system comprising: a plurality of non-volatile memory devices; a controller in communication with the plurality of non-volatile memory devices, the controller being configured to: Receiving a write command from a host, allowing only a certain number of pending write commands to the host, as tracked by a write counter in the host; Performing an operation of indeterminate duration from the perspective of the host; Writing data to the plurality of non-volatile storage devices; and after writing the data, sending a write counter increment signal to the host; a plurality of data buffers in communication with the controller and configured to store data sent between the controller and the host; and a command and address buffer configured to store commands and addresses sent by the host, the command and address buffer further configured to synchronize data flow into and out of the plurality of data buffers. Speichersystem nach Anspruch 13, wobei Lese- und/oder Schreibbefehle mit Identifikatoren assoziiert sind, so dass die Lese- und/oder Schreibbefehle in einer anderen Reihenfolge als in einer Reihenfolge, in der sie vom Host empfangen werden, verarbeitet werden können.  The memory system of claim 13, wherein read and / or write commands are associated with identifiers such that the read and / or write commands can be processed in a different order than in an order received from the host. Speichersystem nach Anspruch 13 oder 14, wobei der Befehls- und Adresspuffer einen registrierten Takttreiber umfasst.  The memory system of claim 13 or 14, wherein the command and address buffer comprises a registered clock driver. Speichersystem nach einem der vorstehenden Ansprüche Anspruch 13 bis 15, wobei die Mehrzahl von Datenpuffern Direktzugriffsspeicher umfasst.  The memory system of any of the preceding claims claims 13 to 15, wherein the plurality of data buffers comprises random access memory. Speichersystem nach einem der vorstehenden Ansprüche Anspruch 13 bis 16, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um eine Frequenz eines vom Host empfangenen Takts zu ändern.  The memory system of any one of the preceding claims, claims 13 to 16, wherein the command and address buffer is further adapted to change a frequency of a clock received from the host. Speichersystem nach einem der vorstehenden Ansprüche Anspruch 13 bis 17, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um eine Bandbreitenumwandlung durchzuführen.  The memory system of any of the preceding claims claims 13 to 17, wherein the command and address buffer is further adapted to perform bandwidth conversion. Speichersystem nach einem der vorstehenden Ansprüche Anspruch 13 bis 18, wobei physische Schichten und Befehlsschichten des Speichersystems ausgelegt sind, um mit einem DRAM-DIMM-Kommunikationsprotokoll kompatibel zu sein.  The memory system of any one of the preceding claims, claims 13 to 18, wherein physical layers and instruction layers of the memory system are adapted to be compatible with a DRAM DIMM communication protocol. Speichersystem nach Anspruch 19, wobei physische Schichten und Befehlsschichten des Speichersystems ausgelegt sind, um mit einem oder mehreren der Folgenden kompatibel zu sein: ungepuffertem DIMM (UDIMM), registriertem DIMM (RDIMM) und lastreduziertem DIMM (LRDIMM).  The memory system of claim 19, wherein physical layers and instruction layers of the memory system are configured to be compatible with one or more of the following: unbuffered DIMM (UDIMM), registered DIMM (RDIMM), and load-reduced DIMM (LRDIMM). Speichersystem nach einem der vorstehenden Ansprüche Anspruch 13 bis 20, wobei die Daten nach einer Zeitverzögerung an den Host gesendet werden, und wobei die Zeitverzögerung basierend auf einem mit dem Host verwendeten Kommunikationsprotokoll ausgewählt wird.  The memory system of any one of the preceding claims, claims 13 to 20, wherein the data is sent to the host after a time delay, and wherein the time delay is selected based on a communication protocol used with the host. Speichersystem nach einem der vorstehenden Ansprüche Anspruch 13 bis 21, wobei der Controller ausgelegt ist, um unter Verwendung einer Taktdatenparallelschnittstelle mit dem Host zu kommunizieren. A memory system according to any one of the preceding claims, claims 13 to 21, wherein the controller is designed to communicate with the host using a clock data parallel interface. Speichersystem nach Anspruch 22, wobei die Taktdatenparallelschnittstelle eine Doppeldatenrate(DDR)-Schnittstelle umfasst.  The memory system of claim 22, wherein the clock data parallel interface comprises a double data rate (DDR) interface. Speichersystem nach einem der vorstehenden Ansprüche Anspruch 13 bis 23, wobei wenigstens eine der Mehrzahl von nicht-flüchtigen Speichervorrichtungen einen dreidimensionalen Speicher umfasst.  The storage system of any one of the preceding claims claims 13 to 23, wherein at least one of the plurality of non-volatile storage devices comprises a three-dimensional storage. Speichersystem, umfassend: eine Mehrzahl von nicht-flüchtigen Speichervorrichtungen; Mittel zum Empfangen eines Lesebefehls von einem Host; Mittel zum Lesen von Daten aus der Mehrzahl von nicht-flüchtigen Speichervorrichtungen in Reaktion auf das Empfangen des Lesebefehls vom Host; Mittel zum Durchführen einer Operation mit einer unbestimmten Dauer aus der Perspektive des Hosts; Mittel zum Senden eines Bereitschaftssignals an den Host nach dem Durchführen der Operation; Mittel zum Empfangen eines Sendebefehls vom Host; Mittel zum Senden der Daten an den Host in Reaktion auf das Empfangen des Sendebefehls vom Host; Mittel zum Speichern von zwischen dem Controller und dem Host gesendeten Daten; und Mittel zum Speichern von vom Host gesendeten Befehlen und Adressen, wobei der Befehls- und Adresspuffer ferner ausgelegt ist, um den Datenfluss in die und aus der Mehrzahl von Datenpuffern zu synchronisieren.  Storage system comprising: a plurality of non-volatile memory devices; Means for receiving a read command from a host; Means for reading data from the plurality of non-volatile memory devices in response to receiving the read command from the host; Means for performing an operation of indeterminate duration from the perspective of the host; Means for sending a ready signal to the host after performing the operation; Means for receiving a send command from the host; Means for sending the data to the host in response to receiving the send command from the host; Means for storing data sent between the controller and the host; and Means for storing commands and addresses sent by the host, the command and address buffer further being arranged to synchronize the flow of data into and out of the plurality of data buffers. Speichersystem nach Anspruch 25, ferner umfassend: Mittel zum Empfangen eines Schreibbefehls vom Host, wobei dem Host nur eine bestimmte Anzahl von ausstehenden Schreibbefehlen erlaubt wird, wie durch einen Schreibzähler im Host verfolgt; Mittel zum Durchführen einer Operation mit einer unbestimmten Dauer aus der Perspektive des Hosts; Mittel zum Schreiben von Daten in die Mehrzahl von nicht-flüchtigen Speichervorrichtungen; und Mittel zum Senden eines Schreibzählererhöhungssignals an den Host nach dem Schreiben der Daten.  The storage system of claim 25, further comprising: Means for receiving a write command from the host, allowing only a certain number of pending write commands to the host, as tracked by a write counter in the host; Means for performing an operation of indeterminate duration from the perspective of the host; Means for writing data to the plurality of non-volatile storage devices; and Means for sending a write counter increment signal to the host after writing the data.
DE102017112446.2A 2016-08-26 2017-06-06 Electrically buffered NV-DIMM and method of use therewith Pending DE102017112446A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662380217P 2016-08-26 2016-08-26
US62/380,217 2016-08-26
US15/297,971 2016-10-19
US15/297,971 US20180059933A1 (en) 2016-08-26 2016-10-19 Electrically-Buffered NV-DIMM and Method for Use Therewith

Publications (1)

Publication Number Publication Date
DE102017112446A1 true DE102017112446A1 (en) 2018-03-01

Family

ID=61166703

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017112446.2A Pending DE102017112446A1 (en) 2016-08-26 2017-06-06 Electrically buffered NV-DIMM and method of use therewith

Country Status (1)

Country Link
DE (1) DE102017112446A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546924A (en) * 2022-01-28 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 AXI-based bidirectional data transmission method, system, storage medium and equipment
CN114745325A (en) * 2022-03-28 2022-07-12 合肥边缘智芯科技有限公司 MAC layer data exchange method and system based on PCIe bus

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114546924A (en) * 2022-01-28 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 AXI-based bidirectional data transmission method, system, storage medium and equipment
CN114546924B (en) * 2022-01-28 2024-05-03 山东云海国创云计算装备产业创新中心有限公司 AXI-based bidirectional data transmission method, AXI-based bidirectional data transmission system, AXI-based bidirectional data transmission storage medium and AXI-based bidirectional data transmission equipment
CN114745325A (en) * 2022-03-28 2022-07-12 合肥边缘智芯科技有限公司 MAC layer data exchange method and system based on PCIe bus

Similar Documents

Publication Publication Date Title
US11610642B2 (en) Storage system with multiple components and method for use therewith
CN107785044B (en) Electrically buffered NV-DIMM and method of use thereof
US20180059976A1 (en) Storage System with Integrated Components and Method for Use Therewith
US20180059945A1 (en) Media Controller with Response Buffer for Improved Data Bus Transmissions and Method for Use Therewith
US10585602B2 (en) Smart memory buffers
DE112018000180T5 (en) SYSTEM AND METHOD FOR ADAPTIVELY SENDING EARLY TERMINATION USING A CONTROL MEMORY BUFFER
US10521343B2 (en) Storage system with a controller having a persistent memory interface to local memory
DE102009037984B4 (en) Memory unit for a hierarchical memory architecture
DE102006002526B4 (en) A solid state disk controller and method of operating the same
DE112018000181T5 (en) SYSTEM AND METHOD FOR THE FAST EXECUTION OF CAPSULE COMMANDS
DE102017128939A1 (en) System and method for dynamically and adaptively merging interrupts
DE102020118897A1 (en) Method and apparatus for reducing power consumption for updating memory devices on a memory module
DE102018214010A1 (en) Method and apparatus for reducing unnoticed data errors in non-volatile memory systems
DE102018105871A1 (en) Storage system and method for avoiding collision in non-volatile data stores with explicit tile grouping
DE112020005044T5 (en) ZONE ATTACHMENT COMMAND SCHEDULING BASED ON ZONE STATE
DE102022106019A1 (en) METHOD AND APPARATUS FOR A BACKPRESSURE SIGNAL TO A MEMORY CHIP ROWHAMMER THREAT AND HOST SIDE RESPONSE
DE102021126634A1 (en) Storage device, storage system and method of operation
CN115083451A (en) Multichannel data processing method, device and equipment and storage medium
DE102017112446A1 (en) Electrically buffered NV-DIMM and method of use therewith
DE102022106020A1 (en) APPLICATION-CONSCIOUS MEMORY PATROL SCRUBBING TECHNIQUES
US20180059943A1 (en) Media Controller and Method for Management of CPU-Attached Non-Volatile Memory
DE112020007776T5 (en) Adaptive error correction to improve system memory reliability, availability and serviceability (RAS)
DE112021000139T5 (en) STORAGE SYSTEM AND METHOD FOR USING ALLOCATED STORAGE IN A HOST FOR READ DATA AS HOST STORAGE BUFFER
DE112022004504T5 (en) DYNAMIC PORT ASSIGNMENT IN THE PCIE FORK SYSTEM
DE112022002494T5 (en) DATA STORAGE APPARATUS AND METHOD FOR FILE BASED INTERRUPT MERGE

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE