DE112018000230T5 - System and method for speculative instruction execution using the control memory buffer - Google Patents
System and method for speculative instruction execution using the control memory buffer Download PDFInfo
- Publication number
- DE112018000230T5 DE112018000230T5 DE112018000230.6T DE112018000230T DE112018000230T5 DE 112018000230 T5 DE112018000230 T5 DE 112018000230T5 DE 112018000230 T DE112018000230 T DE 112018000230T DE 112018000230 T5 DE112018000230 T5 DE 112018000230T5
- Authority
- DE
- Germany
- Prior art keywords
- command
- host device
- storage device
- queue
- memory
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Es werden Systeme und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers offenbart. NVM Express (NVMe) implementiert einen Mechanismus für gepaarte Übermittlungswarteschlangen- und Beendigungswarteschlangen, wobei Host-Software auf der Hostvorrichtung Befehle in die Übermittlungswarteschlange setzt und danach die Speichervorrichtung über die Befehle in der Übermittlungswarteschlange benachrichtigt. Die Übermittlungswarteschlange kann sich in der Speichervorrichtung befinden, wie zum Beispiel in einem Steuerungsspeicherpuffer. Vor der Benachrichtigung durch die Hostvorrichtung kann die Speichervorrichtung bestimmen, dass die Befehle in die Übermittlungswarteschlange gesetzt werden und Befehle spekulativ ausgeführt werden können. Disclosed are systems and methods for speculative instruction execution using the control storage buffer. NVM Express (NVMe) implements a paired delivery queue and termination queue mechanism whereby host software on the host device places commands in the delivery queue and then notifies the storage device of the instructions in the delivery queue. The delivery queue may reside in the storage device, such as in a control storage buffer. Prior to notification by the host device, the storage device may determine that the instructions are placed in the delivery queue and that instructions can be speculatively executed.
Description
VERWEIS AUF VERWANDTE ANMELDUNGENREFER TO RELATED APPLICATIONS
Diese Anmeldung beansprucht die Priorität der
HINTERGRUNDBACKGROUND
NVM Express (NVMe) ist ein Standard zum Zugriff auf nichtflüchtige Speichermedien, die über einen PCI-Express-Bus (PCIe-Bus) angeschlossen sind. NVMe kann mit einer Vielzahl von nichtflüchtigen Speichermedien, wie beispielsweise Festkörperlaufwerken (SSDs), verwendet werden. Ein Schwerpunkt von NVMe liegt auf der E/A-Kommunikation zwischen einer Hostvorrichtung (die auf das nichtflüchtige Speichermedium zugreifen und/oder darauf schreiben kann) und einer Speichervorrichtung (die das nichtflüchtige Speichermedium einschließt). In diesem Zusammenhang implementiert NVMe einen Mechanismus für gepaarte Übermittlungswarteschlangen und Beendigungswarteschlangen, wobei die Hostsoftware auf der Hostvorrichtung Befehle in die Übermittlungswarteschlange stellt. Die Beendigungen werden von der Speichervorrichtungssteuerung in die zugeordnete Beendigungswarteschlange gestellt.NVM Express (NVMe) is a standard for accessing non-volatile storage media connected via a PCI Express bus (PCIe bus). NVMe can be used with a variety of non-volatile storage media, such as Solid State Drives (SSDs). One focus of NVMe is on I / O communication between a host device (which can access and / or write to the nonvolatile storage medium) and a storage device (which includes the nonvolatile storage medium). In this regard, NVMe implements a paired delivery queue and completion queue mechanism wherein the host software on the host device places commands in the delivery queue. The terminations are placed in the associated completion queue by the storage device controller.
Figurenlistelist of figures
Die beigefügten Zeichnungen, die in dieser Beschreibung enthalten sind und einen Teil derselben bilden, veranschaulichen verschiedene Aspekte der Erfindung und dienen zusammen mit der Beschreibung dazu, ihre Prinzipien zu erklären. Wo immer es zweckmäßig ist, werden in allen Zeichnungen dieselben Bezugszeichen verwendet, um gleiche oder ähnliche Elemente zu bezeichnen.
-
1A ist ein Blockdiagramm eines beispielhaften nichtflüchtigen Speichersystems. -
1B ist ein Blockdiagramm eines Speichermoduls, das eine Vielzahl von nichtflüchtigen Speichersystemen und einen Host einschließt. -
1C ist ein Blockdiagramm eines hierarchischen Speichersystems. -
2A ist ein Blockdiagramm beispielhafter Komponenten einer Steuerung des nichtflüchtigen Speichersystems aus1A . -
2B ist ein Blockdiagramm beispielhafter Komponenten eines nichtflüchtigen Speicherchips des nichtflüchtigen Speichersystems aus1A . -
3 ist ein Blockdiagramm der Hostvorrichtung und der NVMe-Steuerung, das eine Sequenz für eine Hostvorrichtung und eine Speichervorrichtung zum Anfordern und Verarbeiten eines NVMe-Befehls veranschaulicht. -
4 ist ein Blockdiagramm mit weiteren beispielhaften Komponenten einer Hostvorrichtung und einer Speichervorrichtung. -
5 ist ein Flussdiagramm zur spekulativen Ausführung eines Befehls in der Übermittlungswarteschlange. -
6 ist ein Flussdiagramm zur spekulativen Ausführung eines Lesebefehls in der Übermittlungswarteschlange.
-
1A FIG. 10 is a block diagram of an exemplary nonvolatile memory system. FIG. -
1B Figure 10 is a block diagram of a memory module including a plurality of nonvolatile memory systems and a host. -
1C is a block diagram of a hierarchical storage system. -
2A FIG. 12 is a block diagram of exemplary components of a controller of the nonvolatile memory system1A , -
2 B FIG. 12 is a block diagram of exemplary components of a nonvolatile memory chip of the nonvolatile memory system1A , -
3 Figure 10 is a block diagram of the host device and the NVMe controller illustrating a sequence for a host device and a memory device for requesting and processing an NVMe command. -
4 FIG. 10 is a block diagram showing further exemplary components of a host device and a memory device. FIG. -
5 Figure 4 is a flowchart for speculatively executing a command in the delivery queue. -
6 Figure 4 is a flow chart for speculatively executing a read command in the submit queue.
DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMENDETAILED DESCRIPTION OF THE EMBODIMENTS
Überblickoverview
NVMe basiert auf gepaarten Übermittlungswarteschlangen (SQ) und Beendigungswarteschlangen (CQ). Unter Verwendung von Software stellt die Hostvorrichtung Befehle in eine jeweilige Übermittlungswarteschlange. Die Speichervorrichtung setzt über die Speichervorrichtungssteuerung Einträge in die zugeordnete Beendigungswarteschlange, wobei die Einträge eine vollständige Befehlsausführung anzeigen. In einer Implementierung werden Übermittlungs- und Beendigungswarteschlangen dem Speicher der Hostvorrichtung zugewiesen. Die Zuweisung der Warteschlangen in dem Host-Speicherpuffer kann physisch zusammenhängend oder nicht zusammenhängend angeordnet sein. Somit führt die Speichervorrichtungssteuerung zur Übermittlung von Warteschlangen, die sich im Host-Speicher befinden, einen PCI-Express (PCIe) durch, der aus dem Host-Speicher gelesen wird, um die Warteschlangeneinträge abzurufen.NVMe is based on paired delivery queues (SQ) and completion queues (CQ). Using software, the host device places commands in a respective submission queue. The storage device places entries in the associated completion queue through the storage device controller, the entries indicating complete command execution. In one implementation, delivery and completion queues are allocated to the memory of the host device. The allocation of the queues in the host memory buffer may be physically contiguous or non-contiguous. Thus, the storage device controller performs a PCI Express (PCIe) to transfer queues residing in the host memory, which is read from the host memory to retrieve the queue entries.
Alternativ können die Übermittlungswarteschlangen und Beendigungswarteschlangen in der Speichervorrichtung gespeichert werden. Zum Beispiel ermöglicht der Steuerungsspeicherpuffer (Controller Memory Buffer CMB) der Hostvorrichtung, die Übermittlungswarteschlangen und Beendigungswarteschlangen in den Steuerungsspeicher zu setzen. Somit wird eine auf der Speichersteuerung basierende Warteschlange in der gleichen Weise wie eine auf dem Host-Speicher basierende Warteschlange verwendet, mit dem Unterschied, dass sich die Speicheradresse innerhalb der Speichervorrichtung befindet (z.B. eher innerhalb des eigenen Speichers der Speichervorrichtungssteuerung als in dem Host-Speicher). Insbesondere können die Admin- und/oder E/A-Warteschlangen in den CMB gesetzt werden, wie unten detaillierter besprochen wird. Daher befinden sich in einer Implementierung für eine bestimmte Warteschlange alle Speicher, die der bestimmten Warteschlange zugeordnet sind, vollständig in entweder dem CMB oder im Host-Speicher. Übermittlungswarteschlangen im Steuerungsspeicher ermöglichen der Host-Software, den gesamten Übermittlungswarteschlangeneintrag direkt in den internen Speicher der Speichervorrichtungssteuerung zu schreiben, wodurch ein Lesen von der Speichervorrichtungssteuerung in die Host-Vorrichtung vermieden wird.Alternatively, the delivery queues and completion queues may be stored in the storage device. For example, the controller memory buffer (CMB) allows the host device to place the delivery queues and completion queues in the controller storage. Thus, a memory control based queue is used in the same way as a host memory based queue, with the difference that the memory address is within the memory device (eg, rather within the memory controller's own memory than in the host memory ). In particular, the admin and / or I / O queues may be placed in the CMB, as discussed in greater detail below. Therefore, in an implementation for a particular queue, all of the memory that the server has assigned to a particular queue, completely in either the CMB or in the host memory. Delivery queues in the control store allow the host software to write the entire delivery queue entry directly into the storage device controller's internal memory, thereby avoiding reading from the storage device controller into the host device.
Beispielhafte Typen von Warteschlangen schließen Admin-Warteschlangen und E/A-Warteschlangen ein. Die Admin-Warteschlange, wie beispielsweise die Admin-Übermittlungswarteschlangen und -Beendigungswarteschlangen, ist eine administrative Übermittlungswarteschlange, welche administrative Befehle an die Speichervorrichtung einschließt. Beispielhafte administrative Befehle beinhalten, sind aber nicht beschränkt auf: Abruf einer Auslassseiten (z.B. wird eine NVMe-Auslassseiten von einer NVMe-Vorrichtung abgerufen und stellt die Retumed-Struktur bereit); Identifizierung (z.B. wird ein Datenpuffer zurückgegeben, der Informationen über das NVMe-Subsystem, die Steuerung oder die Namensräume beschreibt), Funktionsabruf (z.B. werden Eigenschaften der spezifizierten Funktion abgerufen)/und Funktionseinstellung (z.B. werden die Eigenschaften der angezeigten Funktion spezifiziert). Die aufgeführten administrativen Befehle dienen lediglich der Veranschaulichung. E/A-Befehle können sich auf Datenübertragung beziehen, wie etwa Lesebefehle (z.B. Lesen von Daten aus dem Flash-Speicher) und Schreibbefehle (z.B. Schreiben von Daten in den Flash-Speicher).Example types of queues include admin queues and I / O queues. The admin queue, such as the admin submission queues and queuing queues, is an administrative submission queue that includes administrative commands to the storage device. Exemplary administrative commands include, but are not limited to: retrieving an exhaust page (e.g., an NVMe exhaust page is retrieved from an NVMe device and provides the retumed structure); Identification (e.g., returning a data buffer describing information about the NVMe subsystem, control or namespaces), function fetching (e.g., retrieving properties of the specified function) / and function setting (e.g., specifying the properties of the displayed function). The listed administrative commands are for illustrative purposes only. I / O commands may refer to data transmission, such as read commands (e.g., reading data from the flash memory) and write commands (e.g., writing data to the flash memory).
Üblicherweise schreibt die Host-Vorrichtung zuerst Befehle in die Übermittlungswarteschlange und benachrichtigt danach die Speichervorrichtung durch Aktualisieren des End-Doorbell-Registers der Übermittlungswarteschlange, wie unten detaillierter besprochen wird. Als Antwort auf die Benachrichtigung durch die Hostvorrichtung über einen Befehl in der Übermittlungswarteschlange beginnt die Speichervorrichtungssteuerung, den Befehl zu verarbeiten. In einer Implementierung darf die Speicherschreibaufforderung an das End-Doorbell-Register der Übermittlungswarteschlange nicht das RO-(Relaxed Ordering) Bit aufweisen, um sicherzustellen, dass es bei der Speichervorrichtungssteuerung ankommt, nachdem alles in den CMB geschrieben wurde.Typically, the host device first writes commands to the delivery queue and then notifies the storage device by updating the end-doorbell register of the delivery queue, as discussed in greater detail below. In response to the notification by the host device about a command in the delivery queue, the storage device controller begins to process the command. In one implementation, the memory write request to the end-Doorbell register of the transmit queue may not have the RO (Relaxed Ordering) bit to ensure that it arrives at the memory device controller after everything has been written to the CMB.
In einer Implementierung beginnt die Speichervorrichtungssteuerung, einen Befehl vor der Benachrichtigung durch die Host-Vorrichtung über den Befehl in der Übermittlungswarteschlange zu verarbeiten (z.B. vor der Benachrichtigung über das End-Doorbell-Register der Übermittlungswarteschlange). Zum Beispiel kann die Speichervorrichtung bestimmen, ob die Host-Vorrichtung einen Befehl in die Übermittlungswarteschlange geschrieben hat. Dies kann auf eine von mehreren Arten durchgeführt werden. Auf eine Weise kann die Speichervorrichtung die NVMe-Übermittlungswarteschlangen überwachen, die physisch in dem Steuerungsspeicherpuffer angeordnet sind, wodurch ermöglicht wird, dass die Speichervorrichtung die spekulative Befehlsausführung selbst vor dem Empfang der entsprechenden Benachrichtigung von der Host-Vorrichtung beginnt (z.B. Doorbell-Schreibübertragungen). In einer anderen Weise kann die Speichervorrichtung eine Kommunikationsschnittstelle zwischen der Hostvorrichtung und der Speichervorrichtung überwachen (z.B. den Eingang des PCIe-Busses), um zu bestimmen, ob die Hostvorrichtung irgendwelche Kommunikationen gesendet hat, die ein Schreiben eines Befehls in eine Übermittlungswarteschlange anzeigen.In one implementation, the storage device controller begins to process a command prior to notification by the host device via the command in the delivery queue (e.g., prior to notification via the end-Doorbell register of the delivery queue). For example, the storage device may determine if the host device has written a command to the delivery queue. This can be done in one of several ways. In one way, the storage device may monitor the NVMe delivery queues that are physically located in the control storage buffer, thereby allowing the storage device to begin the speculative command execution itself before receiving the corresponding notification from the host device (e.g., Doorbell write transfers). In another way, the storage device may monitor a communication interface between the host device and the storage device (e.g., the PCIe bus input) to determine if the host device has sent any communications indicating a write of a command to a delivery queue.
Als Antwort auf die Bestimmung der Speichervorrichtung, dass die Hostvorrichtung (einen) Befehl(e) in die Übermittlungswarteschlange(n) geschrieben hat, kann die Speichervorrichtung den/die Befehl(e) parsen, und als Antwort auf die Bestimmung, dass ein oder mehrere neue Befehle in der Übermittlungswarteschlange sind, mit der Ausführung des einen oder der mehreren neuen Befehle auf spekulative Weise beginnen.In response to the determination of the storage device that the host device has written command (s) into the delivery queue (s), the storage device may parse the command (s), and in response to the determination that one or more new commands in the submission queue are to begin speculatively with the execution of the one or more new commands.
Verschiedene Befehle können einer spekulativen Ausführung unterzogen werden. Zum Beispiel kann ein Lesebefehl einer spekulativen Lesebefehlsausführung unterzogen werden, die einen Rad-Look-Ahead -(RLA-)Algorithmus auslöst. Insbesondere können die relevanten Daten, die dem Lesebefehl unterliegen, aus dem Flash-Speicher in einen temporären Zwischenspeicher abgerufen werden. Wenn die Hostvorrichtung die Speichervorrichtung über den Befehl benachrichtigt (z.B. den relevanten Befehl in die Warteschlange einreiht, indem sie einen Schreibvorgang an das entsprechende Doorbell-Register der Übermittlungswarteschlange ausgibt), können die Daten sofort aus dem temporären Zwischenspeicher abgerufen und der Hostvorrichtung bereitgestellt werden. In dieser Hinsicht kann der RLA-Treffer eine bessere Latenz des Flash-Speichers (z.B. Zeitraum der Erfassung und der Übertragung) und dadurch eine bessere Leistung bewirken. In einem anderen Fall kann ein Schreibbefehl einer spekulativen Schreibbefehlsausführung unterzogen werden. Zum Beispiel können ein oder mehrere Schritte zum Durchführen des Schreibbefehls, wie beispielsweise das Abrufen der Flash-Translation-Layer-(FTL-)Tabelle, durchgeführt werden, bevor die Hostvorrichtung den Befehl in die Warteschlange reiht. Somit kann die Gesamtleistung der Speichervorrichtung verbessert werden.Various instructions may be subjected to speculative execution. For example, a read command may be subjected to a speculative read command execution that triggers a Rad Look Ahead (RLA) algorithm. In particular, the relevant data subject to the read command may be retrieved from the flash memory to a temporary cache. When the host device notifies the storage device of the command (e.g., enqueues the relevant command by issuing a write to the corresponding doorbell register of the submission queue), the data can be retrieved immediately from the temporary cache and provided to the host device. In this regard, the RLA hit may result in better latency of the flash memory (e.g., period of capture and transmission) and thereby better performance. In another case, a write command may be subjected to a speculative write command execution. For example, one or more steps to perform the write command, such as fetching the Flash Translation Layer (FTL) table, may be performed before the host device queues the command. Thus, the overall performance of the storage device can be improved.
In einer Implementierung führt die Speichervorrichtung selektiv eine spekulative Ausführung von Befehlen durch. In einer ersten spezifischen Implementierung kann die Speichervorrichtung den Befehl analysieren und kann auf Grundlage der Art des Befehls bestimmen, ob spekulativ die Ausführung des Befehls vor der Benachrichtigung der Hostvorrichtung über das Doorbell-Register durch Setzen des Befehls in die Übermittlungswarteschlange beginnen soll. Wie hierin erörtert, gibt es verschiedene Arten von Befehlen, wie zum Beispiel Lesebefehle, Schreibbefehle und dergleichen. Ein Lesebefehl kann beispielsweise einen Zeiger auf einer PRP-Liste einschließen, wobei die PRP-Liste die Abschnitte im Host-Speicher angibt, in denen die Speichervorrichtung die vom Flash-Speicher gelesenen Daten schreiben soll. Gleichermaßen schließt der Schreibbefehl einen Zeiger auf eine PRP-Liste ein, der die Abschnitte im Host-Speicher anzeigt, wo die Daten zum Schreiben in den Flash lokalisiert sind (d.h. die Speichervorrichtung verwendet die PRP-Liste zum Lesen von Host-Speicherplätzen für Daten, wobei die gelesenen Daten in den Flash-Speicher geschrieben werden).In one implementation, the storage device selectively performs a speculative execution of instructions. In a first specific Implementation, the storage device may parse the command and may determine, based on the nature of the command, whether speculatively the execution of the command should commence prior to notifying the host device of the Doorbell register by placing the command in the delivery queue. As discussed herein, there are various types of commands, such as read commands, write commands, and the like. For example, a read command may include a pointer to a PRP list, where the PRP list indicates the portions in the host memory where the memory device is to write the data read from the flash memory. Similarly, the write command includes a pointer to a PRP list indicating the portions in the host memory where the data is located for writing to the flash (ie, the memory device uses the PRP list to read host locations for data, where the read data is written to the flash memory).
In einer zweiten spezifischen Implementierung kann die Speichervorrichtung bei zumindest einer Ausführungsform des Befehls, wie zum Beispiel der Priorität des Befehls, bestimmen, ob (oder wann) die spekulative Befehlsausführung vor einer Benachrichtigung der Hostvorrichtung über das Doorbell-Registers durch Setzen des Befehls in die Übermittlungswarteschlange begonnen werden soll. Wie in der gleichzeitig anhängigen US-Anmeldung Nr._(Ref.-Nr. 10519-3193 (SDA-2985-US-Patent), hierin durch Verweis in seiner Gesamtheit aufgenommen, kann die Speichervorrichtung die Priorität für einen Befehl (oder zum Durchführen einer oder mehrerer Phasen) auf Grundlage einer oder mehrerer Kriterien einschließlich jegliches oder einer beliebigen Kombination oder aller der folgenden bestimmen: (
Somit führt in den ersten und zweiten spezifischen Implementierungen die Speichervorrichtung die spekulative Ausführung nur auf Abläufen innerhalb der Speichervorrichtung durch, nicht aber auf Abläufen, welche die Host-Vorrichtung miteinbeziehen (z.B. die sich außerhalb der Host-Vorrichtung befinden oder die in Kommunikation mit der Host-Vorrichtung stehen). In dieser Hinsicht wird jeder Ablauf in Zusammenhang mit der Hostvorrichtung, wie zum Beispiel das Lesen einer PRP-Liste auf der Hostvorrichtung, nicht spekulativ durchgeführt. Jedoch kann ein interner Ablauf, wie das Lesen aus einem Flash-Speicher, die Durchführung einer Fehlerkorrektur oder Verschlüsselung/Entschlüsselung, spekulativ durchgeführt werden. In dieser Hinsicht kann die Speichervorrichtung in einer spezifischen Implementierung eine spekulative Ausführung eines Lesebefehls durchführen, aber keine spekulative Ausführung eines Schreibbefehls. Genauer gesagt, vor dem Empfang der Doorbell-Benachrichtigung von der Hostvorrichtung führt die Speichervorrichtung spekulativ bestimmte Abläufe bei der Ausführung des Lesebefehls durch, wie den Lesevorgang aus dem Flash-Speicher, die Durchführung der Fehlerkorrektur und Verschlüsselung, führt aber keine anderen Abläufe, die sich auf Kommunikation mit der Hostvorrichtung beziehen, durch, wie beispielsweise das Lesen der PRP-Liste, die sich auf der Hostvorrichtung befindet.Thus, in the first and second specific implementations, the storage device performs speculative execution only on threads within the storage device, but not on threads that include the host device (eg, that are external to the host device or in communication with the host Stand device). In this regard, any flow associated with the host device, such as reading a PRP list on the host device, is not speculatively performed. However, an internal process, such as reading from flash memory, performing error correction or encryption / decryption, may be performed speculatively. In this regard, in a specific implementation, the storage device may perform a speculative execution of a read command, but not a speculative execution of a write command. Specifically, prior to receiving the Doorbell notification from the host device, the storage device speculatively performs certain operations in the execution of the read command, such as reading from the flash memory, performing error correction and encryption, but does not perform other operations by communication with the host device, such as by reading the PRP list located on the host device.
Ein Maß für die Leistung der NVME-Befehlsausführung ist der Zeitraum zwischen der Ausgabe des Doorbell-Schreibvorgangs in eine Übermittlungswarteschlange durch die Hostvorrichtung und der Zustellung einer Beendigungsnachricht an die Übermittlungswarteschlange durch die Speichervorrichtung. Unter Verwendung der spekulativen Ausführung kann diese Zeit reduziert werden. In dieser Hinsicht kann die spekulative Ausführung die Leistung für bestimmte Befehle verbessern, wie zum Beispiel Lese- und Schreibbefehle, insbesondere in niedrigen Warteschlangentiefen. Weiterhin kann die Latenz der Befehlsausführung, welche auf dem PCIe-Bus gemessen werden kann, für verschiedene Befehlsarten (z.B. Lese-, Schreib-, und Admin-Befehle) verbessert werden. Schließlich kann die spekulative Ausführung sowohl in Hardware als auch in Firmware implementiert sein, wodurch die Eingliederung innerhalb der Speichervorrichtung vereinfacht wird.One measure of the performance of the NVME command execution is the period between the issuance of the Doorbell write to a submission queue by the host device and the delivery of a completion message to the submission queue by the storage device. Using speculative execution, this time can be reduced. In this regard, speculative execution may improve performance for certain instructions, such as read and write instructions, especially at low queue depths. Furthermore, instruction execution latency, which can be measured on the PCIe bus, can be improved for different types of instructions (e.g., read, write, and admin commands). Finally, the speculative implementation may be implemented in both hardware and firmware, thereby simplifying integration within the storage device.
In der Regel, wenn die Hostvorrichtung einen Befehl in die Übermittlungswarteschlange schreibt, benachrichtigt die Hostvorrichtung die Speichervorrichtung des Befehls (z.B. wird der Befehl gegebenenfalls von der Hostvorrichtung zum Schreiben in das entsprechende Doorbell-Registerende gereiht). Es ist untypisch, dass die Hostvorrichtung einen Befehl in die Übermittlungswarteschlange schreiben kann und danach den Befehl mit einem anderen Befehl überschreiben und dann den anderen Befehl in eine Warteschlange reihen kann. Unabhängig davon kann die spekulative Ausführung diese atypische Situation beeinträchtigen. Typically, when the host device writes a command to the delivery queue, the host device notifies the storage device of the command (eg, the command is optionally queued from the host device for writing to the corresponding doorbell register end). It is atypical that the host device can write one instruction to the delivery queue and then override the instruction with another instruction and then queue the other instruction. Regardless, speculative execution may affect this atypical situation.
Ausführungsformenembodiments
Die folgenden Ausführungsformen beschreiben nichtflüchtige Speichervorrichtungen und zugehörige Verfahren zur Verarbeitung von Befehlen. Bevor auf diese und andere Ausführungsformen Bezug genommen wird, stellen die folgenden Absätze eine Erörterung beispielhafter nichtflüchtiger Speichervorrichtungen und Speichermodule bereit, die mit diesen Ausführungsformen verwendet werden können. Natürlich sind dies nur Beispiele, und es können andere geeignete Arten von nichtflüchtigen Speichervorrichtungen und/oder Speichermodulen verwendet werden.The following embodiments describe nonvolatile memory devices and associated methods for processing instructions. Before referring to these and other embodiments, the following paragraphs provide a discussion of exemplary non-volatile memory devices and memory modules that may be used with these embodiments. Of course, these are only examples and other suitable types of nonvolatile memory devices and / or memory modules may be used.
Die Steuerung
Wie hier verwendet, ist die Flash-Speichersteuerung eine Vorrichtung, die im Flash-Speicher gespeicherte Daten verwaltet und mit einem Host, wie einem Computer oder einer elektronischen Vorrichtung, kommuniziert. Eine Flash-Speichersteuerung kann verschiedene Funktionen zusätzlich zu der hier beschriebenen spezifischen Funktionalität aufweisen. Zum Beispiel kann die Flash-Speichersteuerung den Flash-Speicher formatieren, um sicherzustellen, dass der Speicher ordnungsgemäß arbeitet, um schlechte Flash-Speicherzellen auszugrenzen und Ersatzzellen zuzuordnen, die künftig fehlerhafte Zellen ersetzen sollen. Einige Teile der Ersatzzellen können verwendet werden, um Firmware aufzunehmen, um die Flash-Speichersteuerung zu betreiben und andere Merkmale zu implementieren. Ein Beispiel für die Firmware ist eine Flash-Translationsschicht. Wenn eine Hostvorrichtung Daten während des Betriebs aus dem Flash-Speicher lesen oder Daten in diesen schreiben muss, kommuniziert der Host mit der Flash-Speichersteuerung. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann die Flash-Speichersteuerung die vom Host empfangene logische Adresse in eine physische Adresse in der Flash-Speichersteuerung umwandeln. Die Flash-Speichersteuerung kann auch verschiedene Speicherverwaltungsfunktionen ausführen, wie z. B., ohne darauf beschränkt zu sein, Abnutzungsausgleich (Verteilen von Schreibvorgängen zum Vermeiden eines Verschleißes spezifischer Speicherblöcke, auf die ansonsten wiederholt geschrieben werden würde) und Speicherbereinigung (nachdem ein Block voll ist, Verschieben ausschließlich der gültigen Datenseiten zu einem neuen Block, so dass der volle Block gelöscht und wiederverwendet werden kann).As used herein, the flash memory controller is a device that manages data stored in the flash memory and communicates with a host, such as a computer or electronic device. A flash memory controller may have various functions in addition to the specific functionality described herein. For example, the flash memory controller may format the flash memory to ensure that the memory is operating properly to isolate bad flash memory cells and allocate spare cells to replace defective cells in the future. Some parts of the spare cells can be used to capture firmware, operate the flash memory controller, and implement other features. An example of the firmware is a flash translation layer. If a host device needs to read data from flash memory during operation or write data to it, the host communicates with the flash memory controller. When the host provides a logical address to which to read / write data, the flash memory controller may convert the logical address received from the host to a physical address in the flash memory controller. The flash memory controller may also perform various memory management functions, such as memory management. For example, but not limited to, wear leveling (distributing writes to avoid wearing down specific memory blocks that would otherwise be written to repeatedly) and garbage collection (after a block is full, shifting only the valid data pages to a new block such that the full block can be deleted and reused).
Die Schnittstelle zwischen der Steuerung
Obwohl die nichtflüchtige Speichervorrichtung
Die Steuerung
Zusätzlich kann das Frontend-Modul
Das Backend-Modul
Somit kann die Steuerung
Zusätzliche Module der in
Andere Module der nichtflüchtigen Speichervorrichtung
Wie unten detaillierter besprochen, kann die Speichervorrichtung bestimmen, ob die Hostvorrichtung in die Übermittlungswarteschlange geschrieben hat, bevor die Hostvorrichtung die Speichervorrichtung unter Verwendung des Host-Befehlsschreibmoduls
Zusätzlich kann eine Flash-Speicherzelle in dem Array
Die Speicherzellen können in dem Speicherarray
Das Speicherarray
Der nichtflüchtige Speicherchip
Außerdem kann der nichtflüchtige Speicherchip
Eingangs kann die Hostvorrichtung
Die Übermittlungswarteschlange
In Schritt
Nach Schritt
Als Reaktion auf das Bestimmen, von welcher bestimmten Übermittlungswarteschlange
Wie oben erläutert, kann der Übermittlungswarteschlange oder der Beendigungswarteschlange ein Speicherbereich zugewiesen werden (wie etwa in der Hostvorrichtung oder in dem Steuerungsspeicherpuffer in der Speichervorrichtung). Die Übermittlungswarteschlange und die Beendigungswarteschlange können mehrere Einträge einschließen, die jeweils einem spezifischen Befehl zugeordnet sind. Die Größe jedes Eintrags kann eine vorbestimmte Größe sein, wie 64 Kb. In diesem Zusammenhang können Einträge innerhalb der Übermittlungswarteschlange anhand der Basisadresse für die Übermittlungswarteschlange und durch Verrechnung der Basisadresse mit der Anzahl der Einträge multipliziert mit der Größe jedes Eintrags (z. B. 64 Kb) bestimmt werden.As explained above, the transmission queue or the completion queue may be allocated a memory area (such as in the host device or in the control memory buffer in the memory device). The delivery queue and the completion queue may include multiple entries, each associated with a specific instruction. The size of each entry may be a predetermined size, such as 64 Kb. In this regard, entries within the delivery queue may be based on the base address for the delivery queue and offsetting the base address against the number of entries multiplied by the size of each entry (e.g. Kb) are determined.
Wie oben erläutert, hat die Speichervorrichtung Kenntnis von dem Endzeiger, über den sie in Schritt
Bei Schritt
Insbesondere kann die Speichervorrichtung einen Lesebefehl oder Schreibbefehl mit einem PRP1-Zeiger empfangen. Zum Beispiel beinhaltet ein Lesebefehl, bei dem die Hostvorrichtung die Speichervorrichtung auffordert, aus dem Flash-Speicher zu lesen, einen PRP1-Zeiger, der auf eine PRP-Liste zeigt. Die Speichervorrichtung erhält die PRP-Liste, um die Speicherstellen innerhalb der Hostvorrichtung zu bestimmen, um die Daten zu schreiben, die aus dem Flash-Speicher gelesen wurden. Als anderes Beispiel beinhaltet ein Schreibbefehl, bei dem die Hostvorrichtung die Speichervorrichtung auffordert, Daten in den Flash-Speicher zu schreiben, einen PRP1-Zeiger, der auf eine PRP-Liste zeigt. Die Speichervorrichtung erhält die PRP-Liste, um die Speicherstellen innerhalb der Hostvorrichtung zu bestimmen, von denen die Daten von dem Flash-Speicher zu lesen sind (und um danach die gelesenen Daten auf dem Flash-Speicher zu speichern).In particular, the memory device may receive a read command or a write command with a PRP1 pointer. For example, a read command in which the host device requests the memory device to read from the flash memory includes a PRP1 pointer pointing to a PRP list. The storage device obtains the PRP list to determine the locations within the host device to write the data read from the flash memory. As another example, a write command in which the host device requests the memory device to write data to the flash memory includes a PRP1 pointer pointing to a PRP list. The storage device receives the PRP list to determine the locations within the host device from which to read the data from the flash memory (and thereafter store the read data on the flash memory).
Jeder Eintrag in der PRP-Liste kann einem bestimmten Abschnitt in dem Hostvorrichtungsspeicher zugeordnet sein und kann eine vorbestimmte Größe, wie beispielsweise 4 Kb, aufweisen. Somit kann es in einer 1 Mb-Übertragung
In NVMe kann es eine Vielzahl von PCI-e-TLPs geben, um die Daten von der Speichervorrichtung zu der Hostvorrichtung
Nach Abschluss des Datentransfers, in Schritt
Nach dem Schritt
Als Reaktion auf den Empfang des Interrupts bestimmt die Hostvorrichtung
Nachdem der Host die Einträge aus der Beendigungswarteschlange
Die eingehenden Anforderungen (Anforderungen von der Hostvorrichtung
In der Praxis kann es bei Verwendung von MVMe eine Reihe von Leseanforderungen (eine Anforderung von der Hostvorrichtung zum Lesen von auf der Speichervorrichtung residenten Daten, und umgekehrt) und eine Reihe von Schreibanforderungen geben (eine Anforderung von der Hostvorrichtung zum Schreiben von Daten an einen auf der Speichervorrichtung residenten Ort, und umgekehrt). Insbesondere kommunizieren die Speichervorrichtung und die Hostvorrichtung in NVMe miteinander über TLP-Anforderungen (Transaction Layer Packet), wie z. B. TLP-Leseanforderungen, um ein Lesen auf der anderen Vorrichtung durchzuführen, oder TLP-Schreibanforderungen, um ein Schreiben auf der anderen Vorrichtung durchzuführen. In einem Beispiel (mit der sich auf der Hostvorrichtung befindenden SQ und CQ) verwendet die Speichervorrichtung als Antwort auf eine (über den Eingangspfad gesendete) TLP-Schreibaufforderung durch die Hostvorrichtung an das Doorbell-Register auf der Speichervorrichtung (wobei das Schreiben in das Doorbell-Register anzeigt, dass ein Befehl in der SQ vorhanden ist) eine TLP-Leseanforderung (über den Ausgangspfad gesendet), um den Schreibbefehl aus der SQ (die sich auf der Hostvorrichtung befindet) abzurufen. Somit ist der Schreibbefehl eine Anforderung für die Speichervorrichtung, Daten in den nichtflüchtigen Speicher zu schreiben. Die Speichervorrichtung analysiert dann den Schreibbefehl bezüglich Informationen, wie zum Beispiel einen Hinweis eines PRP-Pointers (z. B. PRP1) auf eine PRP-Liste. Die PRP-Liste ist eine Reihe von Informationen, wie beispielsweise Pointer oder Adressen, welche den Ort der Daten in der Hostvorrichtung anzeigen. Die Speichervorrichtung verwendet dann eine weitere TLP-Leseanforderung, um Daten von den Pointern oder Adressen in der PRP-Liste zu lesen. Danach führt die Speichervorrichtung den Schreibvorgang durch Speichern der Daten in einem nichtflüchtigen Speicher (z. B. einem Flash-Speicher) auf der Speichervorrichtung durch. Nach dem Speichern der Daten verwendet die Speichervorrichtung eine TLP-Schreibaufforderung, um einen Eintrag in die CQ zu schreiben (der anzeigt, dass der Schreibbefehl beendet wurde). Schließlich verwendet die Speichervorrichtung eine TLP-Schreibaufforderung, um eine Unterbrechung für die Hostvorrichtung zu erzeugen, wobei die Unterbrechung der Hostvorrichtung signalisiert, dass ein Eintrag in der CQ vorhanden ist. Als Antwort auf die Unterbrechung liest die Host-Vorrichtung den Eintrag in der CQ und gibt dann eine TLP-Schreibanforderung an ein CQ-Doorbell-Schreibregister aus, die angibt, dass die Hostvorrichtung den Eintrag in der CQ überprüft hat.In practice, using MVMe, there may be a series of read requests (a request from the host device to read data resident on the storage device, and vice versa) and a series of write requests (a request from the host device to write data to one the storage device resident location, and vice versa). In particular, the storage device and the host device communicate with each other in NVMe TLP requirements (Transaction Layer Packet), such as: For example, TLP read requests to perform a read on the other device, or TLP write requests to perform a write on the other device. In one example (with the SQ and CQ on the host device), the memory device uses the Doorbell register on the memory device in response to a TLP write request (sent via the input path) by the host device (writing to the Doorbell device). Register indicates that a command is present in the SQ) a TLP read request (sent over the output path) to fetch the write command from the SQ (located on the host device). Thus, the write command is a request for the memory device to write data to the nonvolatile memory. The storage device then analyzes the write command for information, such as an indication of a PRP pointer (eg, PRP1) to a PRP list. The PRP list is a set of information, such as pointers or addresses, that indicate the location of the data in the host device. The storage device then uses another TLP read request to read data from the pointers or addresses in the PRP list. Thereafter, the storage device performs the writing operation by storing the data in a nonvolatile memory (eg, a flash memory) on the storage device. After storing the data, the storage device uses a TLP write request to write an entry to the CQ (indicating that the write command has been completed). Finally, the memory device uses a TLP write request to generate an interrupt to the host device, which interrupt signals the host device that an entry exists in the CQ. In response to the interruption, the host device reads the entry in the CQ and then issues a TLP write request to a CQ Doorbell write register indicating that the host device has checked the entry in the CQ.
In einem anderen Beispiel (wobei sich die SQ und die CQ auf der Hostvorrichtung befinden) verwendet die Speichervorrichtung als Antwort auf eine TLP-Schreibaufforderung des Hosts an das Doorbell-Register auf der Speichervorrichtung (wobei das Schreiben in das Doorbell-Register anzeigt, dass ein Befehl auf dem SQ vorliegt) eine TLP-Leseanforderung, um den Lesebefehl von der SQ (die sich auf der Hostvorrichtung befindet) abzurufen. Somit ist der Lesebefehl eine Anforderung für die Speichervorrichtung, Daten aus dem nichtflüchtigen Speicher zu lesen und die gelesenen Daten an die Hostvorrichtung zu senden. Die Speichervorrichtung liest dann den nichtflüchtigen Speicher (z. B. Flash-Speicher) zum Auslesen der Daten. Die Speichervorrichtung kann eine Reihe von Operationen an den Daten ausführen, wie beispielsweise eine Fehlerkorrektur, Codierung/Decodierung, usw., wobei Speicherpuffer zwischen jeder der seriellen Operationen eingestreut sind. Die Speichervorrichtung kann dann den Lesebefehl bezüglich Informationen analysieren, wie zum Beispiel einen Hinweis eines PRP-Pointers (z. B. PRP1) auf eine PRP-Liste. Die PRP-Liste ist eine Reihe von Informationen, wie z. B. Pointer oder Adressen, die den Speicherort in der Hostvorrichtung angeben, um die Daten zu speichern, die aus dem nichtflüchtigen Speicher gelesen (und optional fehlerkorrigiert, verschlüsselt usw.) wurden. Die Speichervorrichtung verwendet dann eine TLP-Leseanforderung, um Daten von den Pointern oder Adressen in der PRP-Liste zu lesen. Danach verwendet die Speichervorrichtung eine TLP-Schreibanforderung, um die Daten zu schreiben, die aus dem nichtflüchtigen Speicher gelesen wurden. Nach dem Schreiben der Daten in die Hostvorrichtung verwendet die Speichervorrichtung eine TLP-Schreibaufforderung, um einen Eintrag in die CQ zu schreiben (der angibt, dass der Lesebefehl beendet wurde). Schließlich verwendet die Speichervorrichtung eine TLP-Schreibaufforderung, um eine Unterbrechung für die Hostvorrichtung zu erzeugen, wobei die Unterbrechung der Hostvorrichtung signalisiert, dass ein Eintrag in der CQ vorhanden ist. Als Antwort auf die Unterbrechung liest die Host-Vorrichtung den Eintrag in der CQ und gibt dann eine TLP-Schreibanforderung an ein CQ-Doorbell-Schreibregister aus, die angibt, dass die Hostvorrichtung den Eintrag in der CQ überprüft hat.In another example (with the SQ and the CQ residing on the host device), the storage device uses the Doorbell register on the storage device (in which writing to the Doorbell register indicates that a write request is made by the host in response to a TLP write request from the host Command on the SQ) is a TLP read request to fetch the read command from the SQ (located on the host device). Thus, the read command is a request for the memory device to read data from the nonvolatile memory and send the read data to the host device. The storage device then reads the nonvolatile memory (eg, flash memory) to read out the data. The memory device may perform a number of operations on the data, such as error correction, encoding / decoding, etc., with memory buffers interspersed between each of the serial operations. The storage device may then analyze the read command for information, such as an indication of a PRP pointer (eg, PRP1) to a PRP list. The PRP list is a set of information, such as: Pointers or addresses indicating the location in the host device to store the data read from the non-volatile memory (and optionally error-corrected, encrypted, etc.). The storage device then uses a TLP read request to read data from the pointers or addresses in the PRP list. Thereafter, the storage device uses a TLP write request to write the data read from the nonvolatile memory. After writing the data to the host device, the storage device uses a TLP write request to write an entry to the CQ (indicating that the read command has ended). Finally, the memory device uses a TLP write request to generate an interrupt to the host device, which interrupt signals the host device that there is an entry in the CQ. In response to the interruption, the host device reads the entry in the CQ and then issues a TLP write request to a CQ Doorbell write register indicating that the host device has checked the entry in the CQ.
Optional können sich die CQ und SQ in der Speichervorrichtung befinden, wie beispielsweise in dem Steuerungsspeicherpuffer (CMB). In diesem Fall kann die Hostvorrichtung eine TLP-Schreibaufforderung (gesendet über den Eingangspfad) an die Speichervorrichtung senden, um in die Beendigungswarteschlange zu schreiben. Gleichermaßen kann die Speichervorrichtung eine TLP-Schreibanforderung (über den Ausgangspfad gesendet) senden, um einen Interrupt für die Hostvorrichtung zu erzeugen.Optionally, the CQ and SQ may reside in the memory device, such as in the Control Memory Buffer (CMB). In this case, the host device may send a TLP write request (sent over the input path) to the storage device to write to the termination queue. Likewise, the memory device may send a TLP write request (sent over the output path) to generate an interrupt for the host device.
Die Speichervorrichtung
Die Speichervorrichtungssteuerung
Der Befehlsparser
Das Flash-Schnittstellenmodul
In einer Implementierung stellt die spekulative Befehlsausführung nicht spekulativ jeden Ablauf, der sich auf die Hostvorrichtung
Obwohl
In einer anderen Implementierung analysiert der Befehlsparser
Es gibt Fälle, in denen die Host-Vorrichtung
In
Umgekehrt kann während der Zeit, in der die Daten in dem temporären Puffer gespeichert sind, die Host-Vorrichtung
Aufgrund der spekulativen Ausführung kann die Speichervorrichtung auf die temporären Speicherpuffer zugreifen, um die gelesenen Daten an die Hostvorrichtung zu übertragen, wenn die Hostvorrichtung
Andere Befehle als Lesebefehle können Kandidaten für spekulative Ausführung sein. Beispielsweise können Schreibbefehle spekulativ ausgeführt werden. Insbesondere kann die spekulative Ausführung für Flash-Schreibvorgänge den Abruf der Flash-Translation-Layer-(FTL)-Tabelle aufweisen, die für Adressübersetzungen verwendet wird (z.B. logischer Block in eine physikalischer Blockübersetzungstabelle). In einem weiteren Beispiel können Energieverwaltungsbefehle spekulativ ausgeführt werden. Insbesondere kann die Hostvorrichtung
Schließlich kann, wie oben erwähnt, jeder geeignete Speichertyp verwendet werden. Halbleiter-Speichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie beispielsweise „DRAM“-Speichervorrichtungen (Dynamic Random Access Memory) oder „SRAM“-Speichervorrichtungen (Static Random Access Memory), nichtflüchtige Speicher wie „ReRAM“-Speicher (Resistive Random Access Memory), „EEPROM“-Speicher (Electrically Erasable Programmable Read Only Memory), Flash-Speicher (der auch als Untergruppe eines EEPROM angesehen werden kann), „FRAM“-Speicher (Ferroelectric Random Access Memory) und „MRAM“-Speicher (Magnetoresistive Random Access Memory) und andere Halbleiterelemente, die Informationen speichern können. Jede Art von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.Finally, as mentioned above, any suitable storage type can be used. Semiconductor memory devices include volatile memory devices, such as "Dynamic Random Access Memory (DRAM) memory devices, or Static Random Access Memory (SRAM) memory devices, nonvolatile memory such as Resistive Random Access Memory (ReRAM) memories." Electrically Erasable Programmable Read Only Memory, Flash Memory (which may also be considered a subset of an EEPROM), Ferroelectric Random Access Memory (FRAM), and Magnetoresistive Random Access Memory (MRAM) memory ) 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 NOR configuration.
Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nicht einschränkendes Beispiel sei angeführt, dass passive Halbleiter-Speicherelemente ReRAM-Vorrichtungselemente einschließen, die in einigen Ausführungsformen ein Speicherelement mit Widerstandsumschaltung, wie beispielsweise ein Anti-Fuse-, Phasenwechsel-Material usw. und optional ein Lenkelement, wie eine Diode usw., enthalten. Ferner sei als nicht einschränkendes Beispiel genannt, dass aktive Halbleiter-Speicherelemente EEPROM- und Flash-Speichervorrichtungselemente enthalten, die in einigen Ausführungsformen Elemente mit einem Ladungsspeicherbereich, wie beispielsweise ein Floating-Gate, leitende Nanopartikel, oder ein Ladung speicherndes dielektrisches Material enthalten.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, in some embodiments a resistive memory element such as an anti-fuse, phase change material, etc., and optionally a steering element such as a diode, etc. , contain. Further, by way of non-limiting example, semiconductor active memory elements include EEPROM and flash memory device elements, which in some embodiments include elements having a charge storage region, such as a floating gate, conductive nanoparticles, or a charge-storing dielectric material.
Mehrere Speicherelemente können so eingerichtet sein, dass sie in Reihe geschaltet sind oder dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in NAND-Konfiguration (NAND-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-Speicherarray kann so eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente so konfiguriert sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können anderweitig eingerichtet sein.Multiple storage elements can be set up in series or each item can be accessed individually. As a non-limiting example, flash memory devices in NAND (NAND) configuration typically include memory elements connected in series. A NAND memory array may be arranged such that the array is composed of a plurality of memory chains in which a chain is composed of a plurality of memory elements that share a single bit line and are accessed as a group. Alternatively, memory elements may be configured so that each element is individually accessible, e.g. B. a NOR memory array. NAND and NOR memory configurations are exemplary, and memory elements may be otherwise configured.
Die Halbleiterspeicherelemente, die innerhalb und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.The semiconductor memory elements disposed within and / or over a substrate may be arranged in two or three dimensions, such as a two-dimensional memory structure or a three-dimensional memory structure.
In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z. B. in einer x-z-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das nach dem Ausbilden an den Speicherelementen befestigt ist. Als ein nicht einschränkendes Beispiel, kann das Substrat einen Halbleiter wie Silizium einschließen.In a two-dimensional memory structure, the semiconductor memory elements are arranged in a single plane or a single memory device plane. Typically, in a two-dimensional memory structure, memory elements are arranged in a plane (eg, in an x-z direction plane) that extends substantially parallel to a major surface of a substrate carrying 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 attached to the memory elements after formation. As a non-limiting example, the substrate may include a semiconductor such as silicon.
Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.The storage elements may be arranged on the single storage device level in an ordered array, such as in 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 Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wo die y-Richtung im Wesentlichen senkrecht ist und die x- und z-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats verlaufen).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, where the y-direction is substantially perpendicular and the x and z-directions are substantially parallel to the main surface of the substrate).
Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zur Hauptfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, wobei jede Spalte mehrere Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden. As a non-limiting example, a three-dimensional memory structure may be vertically arranged as a stack of a plurality of two-dimensional storage device layers. 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 a plurality of memory elements in each column. The columns may be arranged in a two-dimensional configuration, e.g. In an xz 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 form a three-dimensional storage array.
Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y) Speichervorrichtungsebenen zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch als eine NOR-Konfiguration und als eine ReRAM-Konfiguration ausgelegt sein.As a non-limiting example, in a three-dimensional NAND memory array, the memory elements may be coupled together to form a NAND chain within a single horizontal (eg, x-y) memory device levels. Alternatively, the storage elements may be coupled together to form a vertical NAND chain that extends across a plurality of horizontal storage device levels. Other three-dimensional configurations may be considered, with some NAND chains containing memory elements in a single memory plane, while other chains include memory elements extending across multiple memory planes. Three-dimensional memory arrays may also be configured as a NOR configuration and as a ReRAM configuration.
Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray ein oder mehrere Speichervorrichtungsebenen über einem einzigen Substrat gebildet. Gegebenenfalls kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel, kann das Substrat einen Halbleiter wie Silizium einschließen. In einem monolithischen dreidimensionalen Array werden die Schichten, die jede Speichervorrichtungsebene des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.Typically, in a monolithic three-dimensional memory array, one or more storage device layers 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 storage device plane of the array are typically formed on the layers of the underlying storage device layers of the array. However, layers of adjacent memory device levels of a monolithic three-dimensional memory array may be shared or may have intermediate layers between memory device levels.
Dann können wiederum zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Beispielsweise können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet werden und dann übereinander gestapelt werden. Die Substrate können vor dem Stapeln ausgedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Weiterhin können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.Then, again, two-dimensional arrays may be separately formed and then packaged together 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 layers on separate substrates and then stacking them one on top of the other. The substrates may be thinned out or removed from the storage device planes before stacking, but since the storage device layers are initially formed over separate substrates, the resulting storage arrays are not monolithic three-dimensional storage arrays. Furthermore, multiple two-dimensional memory arrays or three-dimensional memory arrays (monolithic or non-monolithic) can be formed on separate chips and then packaged together to form a stacked chip memory device.
Zugehörige Schaltungen sind üblicherweise 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, die zum Steuern und Treiben von Speicherelementen verwendet werden, um Funktionen wie Programmieren und Lesen auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.Associated circuits are usually 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. This associated circuit may be located on the same substrate as the memory elements and / or on a separate substrate. For example, a controller for read / write operations of the memory may be disposed on a separate control chip and / or on the same substrate as the memory elements.
Es ist beabsichtigt, dass die vorstehende ausführliche Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Es sind nur die folgenden Ansprüche einschließlich aller Äquivalente, die den Umfang der beanspruchten Erfindung definieren sollen. Schließlich sei darauf hingewiesen, dass jeder Aspekt jeder der hier beschriebenen bevorzugten Ausführungsformen allein oder in Kombination miteinander verwendet werden kann.It is intended that the foregoing detailed description be interpreted as illustrative of selected forms that the invention may 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 understood that each aspect of each of the preferred embodiments described herein may be used alone or in combination with each other.
ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte PatentliteraturCited patent literature
- US 15468620 [0001]US 15468620 [0001]
- US 15585827 [0001]US 15585827 [0001]
Claims (20)
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/468,620 US10466903B2 (en) | 2017-03-24 | 2017-03-24 | System and method for dynamic and adaptive interrupt coalescing |
US15/468,620 | 2017-03-24 | ||
US15/585,827 US10725835B2 (en) | 2017-05-03 | 2017-05-03 | System and method for speculative execution of commands using a controller memory buffer |
US15/585,827 | 2017-05-03 | ||
PCT/US2018/019905 WO2018175059A1 (en) | 2017-03-24 | 2018-02-27 | System and method for speculative execution of commands using the controller memory buffer |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112018000230T5 true DE112018000230T5 (en) | 2019-09-05 |
Family
ID=61622735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112018000230.6T Pending DE112018000230T5 (en) | 2017-03-24 | 2018-02-27 | System and method for speculative instruction execution using the control memory buffer |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN110073323B (en) |
DE (1) | DE112018000230T5 (en) |
WO (1) | WO2018175059A1 (en) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309077B (en) * | 2019-06-28 | 2021-06-11 | 清华大学 | Method and device for constructing flash translation layer of cooperative work of host and equipment |
JP2021056550A (en) | 2019-09-26 | 2021-04-08 | キオクシア株式会社 | Memory system, control method of memory system, and information processing system |
CN111221476B (en) * | 2020-01-08 | 2022-03-29 | 深圳忆联信息系统有限公司 | Front-end command processing method and device for improving SSD performance, computer equipment and storage medium |
US11544107B2 (en) * | 2020-04-17 | 2023-01-03 | Western Digital Technologies, Inc. | Storage system and method for multiprotocol handling |
US11733920B2 (en) * | 2020-09-10 | 2023-08-22 | Western Digital Technologies, Inc. | NVMe simple copy command support using dummy virtual function |
CN112256601B (en) * | 2020-10-19 | 2023-04-21 | 苏州凌云光工业智能技术有限公司 | Data access control method, embedded storage system and embedded equipment |
CN112732176B (en) * | 2020-12-28 | 2022-10-04 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | SSD (solid State disk) access method and device based on FPGA (field programmable Gate array), storage system and storage medium |
CN112711442A (en) * | 2020-12-29 | 2021-04-27 | 北京浪潮数据技术有限公司 | Host command writing method, device and system and readable storage medium |
US11966343B2 (en) | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
CN114490222B (en) * | 2022-02-14 | 2022-11-15 | 无锡众星微系统技术有限公司 | PCIe P2P system test starting method and device |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7596628B2 (en) * | 2006-05-01 | 2009-09-29 | Broadcom Corporation | Method and system for transparent TCP offload (TTO) with a user space library |
JP2008046791A (en) * | 2006-08-14 | 2008-02-28 | Fujitsu Ltd | Storage device, firmware update method and control device |
US8645617B2 (en) * | 2008-12-09 | 2014-02-04 | Rambus Inc. | Memory device for concurrent and pipelined memory operations |
US8230177B2 (en) * | 2009-05-28 | 2012-07-24 | Oracle America, Inc. | Store prefetching via store queue lookahead |
WO2013048451A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Presentation of direct accessed storage under a logical drive model |
JP5962260B2 (en) * | 2012-06-29 | 2016-08-03 | 富士通株式会社 | Storage device and write completion notification method |
US9483431B2 (en) * | 2013-04-17 | 2016-11-01 | Apeiron Data Systems | Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA) |
US20140331001A1 (en) * | 2013-05-02 | 2014-11-06 | Lsi Corporation | Command Barrier for a Solid State Drive Controller |
US9348537B2 (en) * | 2013-09-10 | 2016-05-24 | Qualcomm Incorporated | Ascertaining command completion in flash memories |
US9778859B2 (en) * | 2013-09-18 | 2017-10-03 | Western Digital Technologies, Inc. | Doorless protocol having multiple queue read requests in flight |
US9513869B2 (en) * | 2013-09-18 | 2016-12-06 | HGST Netherlands B.V. | Doorbell-less endpoint-initiated protocol for storage devices |
US9317204B2 (en) * | 2013-11-14 | 2016-04-19 | Sandisk Technologies Inc. | System and method for I/O optimization in a multi-queued environment |
US20160259568A1 (en) * | 2013-11-26 | 2016-09-08 | Knut S. Grimsrud | Method and apparatus for storing data |
US9459810B2 (en) * | 2013-12-30 | 2016-10-04 | Sandisk Technologies Llc | Storage module and method for configuring command attributes |
US9720860B2 (en) * | 2014-06-06 | 2017-08-01 | Toshiba Corporation | System and method for efficient processing of queued read commands in a memory system |
US20160124876A1 (en) * | 2014-08-22 | 2016-05-05 | HGST Netherlands B.V. | Methods and systems for noticing completion of read requests in solid state drives |
US9563367B2 (en) * | 2014-08-26 | 2017-02-07 | HGST Netherlands B.V. | Latency command processing for solid state drive interface protocol |
US9626106B2 (en) * | 2015-01-13 | 2017-04-18 | Sandisk Technologies Llc | System and method for memory command queue management and configurable memory status checking |
US9524114B2 (en) * | 2015-01-27 | 2016-12-20 | Futurewei Technologies, Inc. | Optimizing synchronous write via speculation |
US10089266B2 (en) * | 2015-07-10 | 2018-10-02 | Apple Inc. | Power saving feature for storage subsystems |
KR20170032502A (en) * | 2015-09-14 | 2017-03-23 | 삼성전자주식회사 | Storage device and interrupt generation method thereof |
-
2018
- 2018-02-27 CN CN201880005085.9A patent/CN110073323B/en active Active
- 2018-02-27 WO PCT/US2018/019905 patent/WO2018175059A1/en active Application Filing
- 2018-02-27 DE DE112018000230.6T patent/DE112018000230T5/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2018175059A1 (en) | 2018-09-27 |
CN110073323A (en) | 2019-07-30 |
CN110073323B (en) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112018000230T5 (en) | System and method for speculative instruction execution using the control memory buffer | |
DE112018000180T5 (en) | SYSTEM AND METHOD FOR ADAPTIVELY SENDING EARLY TERMINATION USING A CONTROL MEMORY BUFFER | |
DE112018000834T5 (en) | SYSTEM AND METHOD FOR ADAPTIVE COMMAND CALL AGGREGATION | |
DE112018000181T5 (en) | SYSTEM AND METHOD FOR THE FAST EXECUTION OF CAPSULE COMMANDS | |
DE112018000233T5 (en) | System and method for processing and arbitrating delivery and completion queues | |
US10725835B2 (en) | System and method for speculative execution of commands using a controller memory buffer | |
DE112018000228T5 (en) | System and method for processing and arbitrating delivery and completion queues | |
DE102017128939A1 (en) | System and method for dynamically and adaptively merging interrupts | |
DE102018123891A1 (en) | Handling non-aligned writes | |
DE102018106154A1 (en) | FOLDING OPERATIONS IN DATA STORAGE SYSTEMS WITH SINGLE ADDRESS UPDATES | |
DE112017005890T5 (en) | Retrieve data buffer pointers for direct memory access | |
DE112017005887T5 (en) | Memory system and method of thermal throttling via command arbitration | |
DE112020000139T5 (en) | NAME SPACES NOT SEQUENTIALLY DIVIDED INTO ZONES | |
DE102017112013A1 (en) | Adaptive temperature and storage parameter throttling | |
DE112015004536T5 (en) | Hardware automation for storage management | |
DE112019005511T5 (en) | KEEP WRITE COMMANDS IN ZONED NAME SPACES | |
DE112017005955T5 (en) | STORAGE SYSTEM AND METHOD FOR LOWER MEMORY ASSIGNMENT | |
DE102018123880A1 (en) | Adaptive management of caches | |
DE102018105871A1 (en) | Storage system and method for avoiding collision in non-volatile data stores with explicit tile grouping | |
DE112019000161T5 (en) | MEMORY CACHE MANAGEMENT | |
US10635350B2 (en) | Task tail abort for queued storage tasks | |
DE112020004966T5 (en) | CNS PARITY SHIFT AFTER DRAM | |
DE102018123494A1 (en) | MEMORY DEVICE DESIGNED TO UPGRADE A FIELD-PROGRAMMABLE GATE ARRAY, AND OPERATING METHOD THEREFOR | |
DE112020005044T5 (en) | ZONE ATTACHMENT COMMAND SCHEDULING BASED ON ZONE STATE | |
DE112016000696T5 (en) | Scheduling scheme (ta) for a multi-chip storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0003060000 Ipc: G06F0013160000 |
|
R082 | Change of representative |
Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE |