DE102017112446A1 - Electrically buffered NV-DIMM and method of use therewith - Google Patents
Electrically buffered NV-DIMM and method of use therewith Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title abstract description 49
- 230000015654 memory Effects 0.000 claims abstract description 266
- 238000003860 storage Methods 0.000 claims abstract description 94
- 239000000872 buffer Substances 0.000 claims abstract description 69
- 238000004891 communication Methods 0.000 claims abstract description 37
- 230000004044 response Effects 0.000 claims description 38
- 230000008859 change Effects 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 31
- 230000005540 biological transmission Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 24
- 240000007320 Pinus strobus Species 0.000 description 21
- 230000001934 delay Effects 0.000 description 17
- 239000000758 substrate Substances 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 16
- 230000009471 action Effects 0.000 description 15
- 230000000694 effects Effects 0.000 description 14
- 238000012937 correction Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 238000012546 transfer Methods 0.000 description 13
- 238000013523 data management Methods 0.000 description 12
- 230000006399 behavior Effects 0.000 description 11
- 230000002688 persistence Effects 0.000 description 11
- 230000001360 synchronised effect Effects 0.000 description 11
- 230000009977 dual effect Effects 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 9
- 238000013459 approach Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 7
- 230000014759 maintenance of location Effects 0.000 description 7
- 230000004913 activation Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 230000007547 defect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000002070 Raman circular dichroism spectroscopy Methods 0.000 description 5
- 230000000875 corresponding effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000013439 planning Methods 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 208000011580 syndromic disease Diseases 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 238000012512 characterization method Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000036541 health Effects 0.000 description 3
- 230000001976 improved effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000011534 incubation Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012913 prioritisation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241001136792 Alle Species 0.000 description 1
- 229930091051 Arenine Natural products 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 210000001520 comb Anatomy 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000011093 media selection Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001590 oxidative effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000002023 somite Anatomy 0.000 description 1
- 230000007103 stamina Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
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.
- 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
In dieser Ausführungsform umfasst der Host
Wie auch in
Der Mediencontroller
Im Allgemeinen empfängt der Controller
Eine nicht-flüchtige Speichervorrichtung
Zur Vereinfachung zeigt
Der Host
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
Ein Aspekt dieser Ausführungsformen ist, wie der NVM-Controller
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
In Reaktion auf das Empfangen des Lesebefehls nimmt der Controller
Im Fall einer Schreiboperation kann der Host
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
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
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
Wie in
Zwischen diesen Eingangs- und Ausgangsteilen weist der Controller
In dieser Ausführungsform werden die Daten, parallel zur Adressübersetzung, für eine Schreiboperation zunächst von der Verschlüsselungs-Engine
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
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
Wendet man sich nun dem Lesepfad zu, wenn Daten von Lesebefehlen von den NVM-Vorrichtungen
Der NVM-Controller
Falls/wenn der Speicherteil verfügbar wird, sendet der NVM-Controller
Nachdem der Entschlüsselungsprozess abgeschlossen ist (Vorgang
Falls der Host
Wendet man sich nun einer Schreiboperation zu, ist
Der Controller
Die Flussdiagramme in
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
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
Zurückkehrend zu den Zeichnungen sind
Wendet man sich nun
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
Ein Vorteil dieser Ausführungsform ist, dass der RCD
In einer Ausführungsform inferiert jedes DQx eine Gruppierung von Daten-, Strobe- und Taktsignalen, welche vom Speichercontroller
Der grundlegende Betrieb des RCD
Dementsprechend ist der RCD
Wendet man sich nun der Schreiboperation zu (siehe
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
Wendet man sich nun
In dieser Ausführungsform gibt es drei Stellen, an denen das Speichersystem
In dieser Ausführungsform gibt es drei Stellen, an denen das Speichersystem
Ein anderes Problem, welches möglicherweise aufgrund der Verwendung eines NVM-Controllers
Der RCD
Wie oben erwähnt, können, anstatt diese Taktänderungskomponenten im RCD
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
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
Änderungen an den DBs
Falls ein DB ausgelegt ist, um Daten in eine niedrigere Frequenz abwärtszuwandeln, können zusätzliche Komponenten verwendet werden, wie in
Zurückkehrend zu den Zeichnungen.
Wie in
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
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)
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)
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 |
-
2017
- 2017-06-06 DE DE102017112446.2A patent/DE102017112446A1/en active Pending
Cited By (3)
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 |