DE112014006118T5 - Speculative prefetching of data stored in a flash memory - Google Patents
Speculative prefetching of data stored in a flash memory Download PDFInfo
- Publication number
- DE112014006118T5 DE112014006118T5 DE112014006118.2T DE112014006118T DE112014006118T5 DE 112014006118 T5 DE112014006118 T5 DE 112014006118T5 DE 112014006118 T DE112014006118 T DE 112014006118T DE 112014006118 T5 DE112014006118 T5 DE 112014006118T5
- Authority
- DE
- Germany
- Prior art keywords
- data storage
- data
- page
- read
- storage device
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/1072—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 in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
Ein Verfahren für Datenspeicherung schließt ein Festhalten einer Definition eines Modus spekulativen Auslesens zum Auslesen in einer Datenspeichervorrichtung ein, in dem von der Datenspeichervorrichtung angefordert wird, eine Dateneinheit mit einer Dateneinheitgröße zu lesen, und als Reaktion die Datenspeichervorrichtung eine Datenspeicherseite abruft, welche die Dateneinheit enthält und eine größere Datenspeicherseitengröße als die Dateneinheitgröße besitzt, und die Datenspeicherseite in Vorbereitung für nachfolgende Anforderungen aufbewahrt. Eine Aktivierung des Modus spekulativen Auslesens wird koordiniert. Ein Auslesebefehl wird unter Verwendung des Modus spekulativen Auslesens ausgeführt.A method for data storage includes adhering to a definition of a speculative read-out mode for reading in a data storage device in which the data storage device requests to read a data unit having a data unit size, and in response the data storage device retrieves a data storage page containing the data unit and has a larger data storage page size than the data unit size, and keeps the data storage page in preparation for subsequent requests. Activation of the speculative readout mode is coordinated. A read command is executed using the speculative readout mode.
Description
GEBIET DER ERFINDUNGFIELD OF THE INVENTION
Die vorliegende Erfindung betrifft allgemein die Datenspeicherung und insbesondere Verfahren und Systeme zum Vorab-Holen (prefetching) von in nichtflüchtigem Speicher gespeicherten Daten.The present invention relates generally to data storage, and more particularly to methods and systems for prefetching data stored in nonvolatile memory.
HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION
Manche Rechensysteme verwenden Techniken für virtuellen Speicher (Virtual Memory (VM)), die einen schnellen, aber kleinen, flüchtigen Speicher und einen großen, aber langsameren, nichtflüchtigen Speicher verwenden. Zum Beispiel umfasst in manchen mobilen Rechen- und Kommunikationsvorrichtungen das Vorrichtungsbetriebssystem (Operating System (OS)) ein VM-Modul, das den Speicher mit wahlfreiem Zugriff (Random Access Memory (RAM)) der Vorrichtung mit einem Halbleiterlaufwerk (Solid State Drive (SSD)) gemeinsam betreibt.Some computing systems use virtual memory (VM) techniques that use fast, but small, volatile memory and large, but slower, non-volatile memory. For example, in some mobile computing and communication devices, the operating system (OS) includes a VM module that mounts the random access memory (RAM) of the device with a solid state drive (SSD). ) operates together.
Verschiedene Verfahren zum Verwenden von VM sind im Stand der Technik bekannt. Zum Beispiel beschreibt das
In „Key-Study to Execute Code Using Demand Paging and NAND Flash at Smart Card Scale”, Smart Card Research and Advanced Application, Proceedings of the 9th IFIP WG 8.8/11.2 International Conference, CARDIS 2010, Passau, Deutschland, April 2010, Seiten 102 bis 117, das durch Bezugnahme hierin aufgenommen wird, erläutern Geoffroy et al. Einschränkungen, die ein Einbetten von mehreren Anwendungen in so kleine Systeme wie Smart Cards oder Sensoren mit sich bringt. Physische Einschränkungen dieser Systeme, wie beispielsweise ein sehr kleiner Hauptspeicher, und deren Produktionskosten machen dies schwierig zu erreichen. Eine bestimmte, in der Studie vorgeschlagene Lösung liegt darin, Code aus einem billigeren, dichteren, aber langsameren Sekundärspeicher, wie beispielsweise einem NAND-Flash, auszuführen.IFIP WG 8.8 / 11.2 International Conference, CARDIS 2010, Passau, Germany, April 2010, pages: "Key-Study to Execute Code Using Demand Paging and NAND Flash at Smart Card Scale", Smart Card Research and Advanced Application 102 to 117, which is incorporated herein by reference, Geoffroy et al. Limitations that embedding multiple applications into such small systems as smart cards or sensors. Physical limitations of these systems, such as a very small main memory, and their production costs make this difficult to achieve. One particular solution proposed in the study is to execute code from a cheaper, denser but slower secondary storage, such as a NAND flash.
ZUSAMMENFASSUNG DER ERFINDUNGSUMMARY OF THE INVENTION
Eine Ausführungsform der vorliegenden Erfindung stellt ein Verfahren bereit, das ein Festhalten einer Definition eines Modus spekulativen Auslesens zum Auslesen in einer Datenspeichervorrichtung einschließt, in dem von der Datenspeichervorrichtung angefordert wird, eine Dateneinheit mit einer Dateneinheitgröße zu lesen, und als Reaktion die Datenspeichervorrichtung eine Datenspeicherseite abruft, welche die Dateneinheit enthält und eine größere Datenspeicherseitengröße als die Dateneinheitgröße besitzt, und die Datenspeicherseite in Vorbereitung für nachfolgende Anforderungen aufbewahrt. Eine Aktivierung des Modus spekulativen Auslesens wird koordiniert. Ein Auslesebefehl wird unter Verwendung des Modus spekulativen Auslesens ausgeführt.An embodiment of the present invention provides a method that includes adhering to a definition of a speculative read-out mode for reading in a data storage device by requesting the data storage device to read a data unit having a data unit size and, in response, the data storage device retrieving a data storage page containing the data unit and having a larger data storage page size than the data unit size, and storing the data storage page in preparation for subsequent requests. Activation of the speculative readout mode is coordinated. A read command is executed using the speculative readout mode.
In manchen Ausführungsformen schließt das Koordinieren der Aktivierung ein Empfangen eines Befehls, eine einzelne Dateneinheit auszulesen, in der Datenspeichervorrichtung ein, und das Ausführen des Auslesebefehls schließt ein Lesen der einzelnen Dateneinheit aus der aufbewahrten Datenspeicherseite ein. In weiteren Ausführungsformen schließt das Ausführen des Auslesebefehls bei Erfassen, dass sich die einzelne Dateneinheit nicht in der aufbewahrten Datenspeicherseite befindet, ein Berichten eines Fehlerereignisses ein. In noch weiteren Ausführungsformen schließt das Ausführen des Auslesebefehls ferner ein Verwerfen der aufbewahrten Datenspeicherseite ein, nachdem alle Dateneinheiten in der aufbewahrten Datenspeicherseite angefordert wurden.In some embodiments, coordinating the activation includes receiving an instruction to read a single data unit in the data storage device, and executing the read command includes reading the individual data unit from the stored data storage page. In other embodiments, executing the read-out command upon detecting that the single data unit is not in the retained data storage page includes reporting an error event. In still other embodiments, executing the read command further includes discarding the retained data storage page after all data units in the stored data storage page have been requested.
In einer Ausführungsform schließt das Ausführen des Auslesebefehls ein Empfangen einer Anforderung, eine gegebene Dateneinheit in der aufbewahrten Datenspeicherseite zu lesen, und ein Ausgeben der gegebenen Dateneinheit und aller darauf folgenden Dateneinheiten aus der aufbewahrten Datenspeicherseite in der Datenspeichervorrichtung ein. In noch einer weiteren Ausführungsform schließt das Koordinieren der Aktivierung ein Berichten der Datenspeicherseitengröße aus der Datenspeichervorrichtung ein. In noch einer weiteren Ausführungsform schließt das Verfahren ferner ein Empfangen eines Schreibbefehls zum Speichern von Daten, deren Größe gleich der Datenspeicherseitengröße ist, und ein Speichern der Daten auf eine Seitengrenze der Datenspeichervorrichtung ausgerichtet in der Datenspeichervorrichtung ein.In one embodiment, executing the read command includes receiving a request to read a given data unit in the stored data storage page, and outputting the given data unit and all subsequent data units from the retained data storage page in the data storage device. In yet another embodiment, coordinating the activation includes reporting the data storage page size from the data storage device. In yet another embodiment, the method further includes receiving a write command to store data sized equal to the data storage page size and storing the data to a page boundary of the data storage device aligned in the data storage device.
Zusätzlich wird gemäß einer Datenspeichervorrichtung, die einen nichtflüchtigen Speicher und einen Prozessor einschließt, bereitgestellt. Der Prozessor ist konfiguriert, eine Definition eines Modus spekulativen Auslesens festzuhalten, in dem von der Datenspeichervorrichtung angefordert wird, eine Dateneinheit mit einer Dateneinheitgröße zu lesen, und als Reaktion die Datenspeichereinheit aus dem nichtflüchtigen Speicher eine Datenspeicherseite abruft, welche die Dateneinheit enthält und eine größere Datenspeicherseitengröße als die Dateneinheitgröße besitzt, und die Datenspeicherseite in Vorbereitung für nachfolgende Anforderungen aufbewahrt, um eine Aktivierung des Modus spekulativen Auslesens zu koordinieren, und um unter Verwendung des Modus spekulativen Auslesens einen Auslesebefehl auszuführen.In addition, according to a data storage device including a non-volatile memory and a processor is provided. Of the The processor is configured to capture a definition of a speculative read mode in which the data storage device requests to read a data unit having a data unit size, and in response the data storage unit retrieves from the nonvolatile memory a data storage page containing the data unit and having a larger data storage page size than has the data unit size, and keeps the data storage page in preparation for subsequent requests to coordinate activation of the speculative readout mode, and to execute a read-out command using the speculative readout mode.
Die vorliegende Erfindung wird aus der folgenden detaillierten Beschreibung der Ausführungsformen davon in Zusammenhang mit den Zeichnungen besser verständlich, in denen: The present invention will become more fully understood from the following detailed description of the embodiments thereof, taken in conjunction with the drawings, in which:
KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS
DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMENDETAILED DESCRIPTION OF EMBODIMENTS
Überblickoverview
Ausführungsformen der vorliegenden Erfindung, die hierin beschrieben sind, stellen verbesserte Verfahren und Systeme zum Betrieb von virtuellem Speicher (VM) bereit. In vielen Datenspeichersystemen ist der Platz, den ein Betriebssystem (OS) für einen gegebenen Prozess im flüchtigen Speicher des Hosts (hierein als „lokaler Speicher” bezeichnet) alloziert, nicht ausreichend, um den gesamten Code und die gesamten Daten des Prozesses zu beinhalten. Dieses Szenario kann zum Beispiel auftreten, wenn der Gesamtdatenspeicherplatz des lokalen Speichers kleiner ist als der Platz, den der Prozess erfordert, oder wenn das OS mehrere Prozesse gleichzeitig ausführt.Embodiments of the present invention described herein provide improved methods and systems for virtual memory (VM) operation. In many data storage systems, the space that an operating system (OS) allocates for a given process in the volatile memory of the host (hereafter referred to as "local memory") is not sufficient to contain all the code and data of the process. For example, this scenario may occur if the total local memory space is less than the space that the process requires, or if the OS is running multiple processes at the same time.
In manchen Ausführungsformen umfasst das OS ein Subsystem eines virtuellen Speichers (VM), das den Speicher für Prozesse verwaltet, die im lokalen Speicher ausgeführt werden. In den hierin beschriebenen Ausführungsformen verwaltet der VM den lokalen Speicher und einen großen nichtflüchtigen Speicher, wie beispielsweise ein Flashgestütztes Halbleiterlaufwerk (SSD). Der VM ermöglicht es einem Prozess, einen Speicherplatz zu verwenden, der größer ist als der für diesen Prozess durch das OS allozierte Platz. Gelegentlich kann der Prozess versuchen, auf Daten zuzugreifen, die derzeit lokal nicht verfügbar sind. Solch ein Ereignis wird als Seitenfehlerereignis bezeichnet. Der VM reagiert typischerweise auf Seitenfehler, indem die fraglichen Daten aus dem SSD geholt werden.In some embodiments, the OS includes a virtual memory subsystem (VM) that manages the memory for processes executing in local memory. In the embodiments described herein, the VM manages the local memory and a large nonvolatile memory, such as a Flash Driven Solid State Drive (SSD). The VM allows a process to use a storage space that is larger than the space allocated for that process by the OS. Occasionally, the process may attempt to access data that is currently unavailable locally. Such an event is called a page fault event. The VM typically responds to page faults by fetching the data in question from the SSD.
Der VM greift auf Daten im SSD in Einheiten zu, die hierin als Datenblöcke (data chunks) oder Dateneinheiten bezeichnet werden. Bei Erfassen (oder Empfangen einer Angabe) eines Seitenfehlers holt der VM die entsprechenden fehlenden Daten aus dem SSD, indem der Datenblock angefordert wird, zu dem die fehlenden Daten gehören (auch als der fehlende Block bezeichnet). Um die Zugriffsrate auf fehlende Daten zu verbessern, kann in manchen Ausführungsformen der VM konfiguriert sein, zusätzlich zum fehlenden Block einen oder mehrere darauf folgende Datenblöcke zu holen. Dieser Betriebsmodus wird als spekulatives Vorab-Holen bezeichnet. Spekulatives Vorab-Holen in SSD-gestützten Datenspeichersystemen kann jedoch problematisch sein, wie nachstehend weiter beschrieben.The VM accesses data in the SSD in units, referred to herein as data chunks or data units. Upon detecting (or receiving an indication of) a page fault, the VM retrieves the corresponding missing data from the SSD by requesting the block of data to which the missing data belongs (also referred to as the missing block). In order to improve the access rate to missing data, in some embodiments the VM may be configured to fetch one or more subsequent data blocks in addition to the missing block. This mode of operation is referred to as speculative prefetching. However, speculative prefetching in SSD-based data storage systems can be problematic, as further described below.
Typischerweise umfasst das OS ferner ein Dateisystem(File System (FS))-Subsystem, das die Speicherung von Daten (z. B. Benutzer- oder andere Daten) in logischen Strukturen, wie beispielsweise Dateien und Verzeichnissen, verwaltet. Das FS speichert Dateien im SSD. Ein Computerprogramm kann eine oder mehrere Dateien ausführen oder anderweitig verwenden. Zum Beispiel kann ein Anwendungsprogramm auf eine große Anzahl kleiner Dateien zugreifen, wie beispielsweise ausführbare und Multimediadateien. Bei Ausführen einer Anwendung lädt das FS zuerst die entsprechenden Anwendungsdateien aus dem SSD in den lokalen Speicher hoch, und der Host führt dann die Anwendung aus dem lokalen Speicher aus. Der Prozess des Hochladens der Dateien einer Anwendung wird als Anwendungsstart bezeichnet. Da die Anwendungsdateien vor dem Ausführen hochgeladen werden sollten, führt eine kürzere Anwendungsstartdauer zu einer besseren Benutzererfahrung.Typically, the OS further includes a File System (FS) subsystem that manages the storage of data (eg, user or other data) in logical structures such as files and directories. The FS stores files in the SSD. A computer program can execute or otherwise use one or more files. For example, an application program may access a large number of small files, such as executable and multimedia files. When an application is run, the FS first uploads the appropriate application files from the SSD to local storage, and the host then runs the application from local storage. The process of uploading the files of an application is called application startup. Since the application files should be uploaded before running, a shorter application startup time will result in a better user experience.
Im Host verwalten das VM- und das FS-Subsystem des OS typischerweise den Speicher in einem kontinuierlichen Raum logischer Adressen. Das SSD umfasst typischerweise eine SSD-Steuereinheit (SSD controller), die den Speicher in physischen Adressen der Flash-Speicher verwaltet. Logische Adressen entsprechen physischen Adressen von Datenblöcken in den Flash-Speichern. Die SSD-Steuereinheit unterhält typischerweise eine Übersetzungstabelle zwischen logischen und physischen Adressen. In the host, the OS VM and FS subsystems typically manage the memory in a continuous logical address space. The SSD typically includes an SSD controller (SSD controller) that manages the memory in physical addresses of the flash memory. Logical addresses correspond to physical addresses of data blocks in the flash memories. The SSD controller typically maintains a translation table between logical and physical addresses.
Die SSD-Steuereinheit speichert Daten im SSD in Einheiten, die als Datenspeicherseiten oder der Kürze wegen einfach als Seiten bezeichnet werden. In manchen Fällen ist der VM (oder das FS) konfiguriert, Datenblöcke zu holen, die kleiner als die Seitengröße des SSD sind. In anderen Worten umfasst eine Seite im SSD typischerweise mehrere Datenblöcke, von denen der VM jeweils eine anfordern kann. Wie nachstehend beschrieben, kann diese Größenabweichung zwischen Datenspeicherseiten und Datenblöcken potenzielle Vorteile des spekulativen Vorab-Holens zunichtemachen.The SSD controller stores data in the SSD in units that are referred to simply as pages for data storage pages or for brevity. In some cases, the VM (or FS) is configured to fetch data blocks smaller than the page size of the SSD. In other words, a page in the SSD typically includes multiple data blocks, of which the VM can request one each. As described below, this size variance between data storage pages and data blocks can negate potential benefits of speculative prefetching.
In manchen Ausführungsformen liest das OS Daten in Einheiten, die hierin als Blöcke oder Segmente bezeichnet werden. Die Blockgröße kann zum Beispiel 512 Byte oder 4 Kilobyte (KB) betragen. Daten im SSD werden andererseits in Datenspeicherseiten, deren Größe typischerweise größer als die Blockgröße ist, in die Flash-Speicher geschrieben und aus ihnen abgerufen. Zu Beispielseitengrößen zählen 8 KB, 16 KB und 32 KB.In some embodiments, the OS reads data in units, referred to herein as blocks or segments. The block size may be 512 bytes or 4 kilobytes (KB), for example. On the other hand, data in the SSD is written to and retrieved from flash memory in data storage pages whose size is typically larger than the block size. Example page sizes include 8 KB, 16 KB, and 32 KB.
In einer Ausführungsform fordert der VM als Reaktion auf ein Seitenfehlerereignis den entsprechenden fehlenden Block (d. h. den Block, zu dem die fehlenden Daten gehören, die den Seitenfehler erzeugt haben) aus dem SSD an. Im Prinzip kann der VM ein spekulatives Vorab-Holen durchführen, indem zusätzlich zum fehlenden Block ein oder mehrere darauf folgende Blöcke angefordert werden. Diese Vorab-Hol-Operation würde jedoch die Rate eines Zugreifens auf fehlende Daten nicht verbessern, da das SSD für jede Blockanforderung eine gesamte Seite abruft, selbst wenn der VM mehrere Blöcke innerhalb derselben Seite anfordert. Darüber hinaus verursachen solche redundanten Operationen von Seitenabrufen einen erhöhten Energieverbrauch, der die Batterie- oder Akkulebensdauer des Systems verkürzt.In one embodiment, in response to a page fault event, the VM requests the corresponding missing block (i.e., the block that includes the missing data that generated the page fault) from the SSD. In principle, the VM can perform speculative prefetching by requesting one or more subsequent blocks in addition to the missing block. However, this pre-fetch operation would not improve the rate of accessing missing data because the SSD will fetch an entire page for each block request, even if the VM requests multiple blocks within the same page. In addition, such redundant page fetch operations cause increased power consumption, which shortens the battery or battery life of the system.
Wenn bei den offenbarten Techniken der VM einen fehlenden Block anfordert, wird die Seite, die diesen Block enthält, abgerufen und im SSD zwischengespeichert (cached). Wenn der VM dann einen oder mehrere Blöcke anfordert, die bereits zwischengespeichert sind (z. B. bei Durchführen von spekulativem Vorab-Holen), werden diese Blöcke aus der zwischengespeicherten Seite ausgelesen, ohne ein unnötiges erneutes Lesen der entsprechenden Seite aus dem SSD zu erzeugen.In the disclosed techniques, if the VM requests a missing block, the page containing that block is retrieved and cached in the SSD. If the VM then requests one or more blocks that are already cached (e.g., when performing speculative prefetching), those blocks are flushed from the cached page without creating an unnecessary re-read of the corresponding page from the SSD ,
In der Beschreibung, die folgt, nehmen wir einen zugrunde liegenden SSD-Datenspeicher, der eine SSD-Steuereinheit umfasst, und einen flüchtigen Zwischenspeicher an. Der Klarheit willen wird der nichtflüchtige Speicher des SSD als „Flash-Speicher” bezeichnet, sofern nicht anderweitig angegeben. Der Flash-Speicher kann jede geeignete Anzahl individueller Flash-Vorrichtungen umfassen.In the description that follows, we assume an underlying SSD data store that includes an SSD controller and a volatile cache. For the sake of clarity, the nonvolatile memory of the SSD is referred to as "flash memory" unless otherwise specified. The flash memory may include any suitable number of individual flash devices.
In einer Ausführungsform gibt der Host-VM dem SSD eine Anforderung zum Abrufen eines fehlenden Blocks aus und gibt der SSD-Steuereinheit zusätzlich eine spekulative Vorab-Hol-Operation an. Die SSD-Steuereinheit ruft die Seite, zu welcher der angeforderte Block gehört, aus dem Flash-Speicher ab und speichert die Seite im Zwischenspeicher zwischen. Die SSD-Steuereinheit liefert den angeforderten Block an den Host und bewahrt die zwischengespeicherte Seite auf, bis der VM alle anderen Blöcke der zwischengespeicherten Seite anfordert.In one embodiment, the host VM issues a request to the SSD to fetch a missing block and additionally issues a speculative prefetch operation to the SSD controller. The SSD controller retrieves the page to which the requested block belongs from the flash memory and caches the page. The SSD controller provides the requested block to the host and retains the cached page until the VM requests all other blocks of the cached page.
In einer Ausführungsform liest der VM Blöcke, die Teil einer Seite sind, die bereits im SSD zwischengespeichert ist, ab, indem die SSD-Steuereinheit angewiesen wird, jeden solchen Block aus der zwischengespeicherten Seite zu lesen, ohne die gesamte Seite erneut aus dem Flash-Speicher zu lesen. Wenn der VM einen zwischengespeicherten Block anfordert, sich der angeforderte Block jedoch nicht in der zwischengespeicherten Seite befindet, gibt die SSD-Steuereinheit dem VM eine entsprechende Fehlerangabe aus. Der VM kann dann diesen Block mit oder ohne Zwischenspeichern der entsprechenden Seite lesen. Ein Lesen eines zwischengespeicherten Blocks ist schneller als ein Lesen des Blocks aus dem Flash-Speicher.In one embodiment, the VM reads blocks that are part of a page that is already cached in the SSD by instructing the SSD controller to read each such block from the cached page without rescanning the entire page from the flash memory. Memory to read. However, if the VM requests a cached block, but the requested block is not in the cached page, the SSD controller issues the VM with a corresponding error indication. The VM can then read this block with or without caching the corresponding page. Reading a cached block is faster than reading the block from the flash memory.
In manchen Ausführungsformen führt der VM spekulatives Vorab-Holen durch, indem ein fehlender Block angefordert wird und zusätzlich das SSD über die spekulative Vorab-Hol-Operation benachrichtigt wird. Das SSD ruft die Seite, zu welcher der angeforderte Block gehört, aus dem Flash-Speicher ab, speichert die Seite zwischen und gibt den angeforderten Block sowie alle darauf folgenden Blöcke in der zwischengespeicherten Seite an den Host aus.In some embodiments, the VM performs speculative prefetching by requesting a missing block and additionally notifying the SSD via the speculative prefetching operation. The SSD retrieves the page to which the requested block belongs from flash memory, caches the page, and outputs the requested block and all subsequent blocks in the cached page to the host.
Spekulatives Vorab-Holen kann im Prinzip effizienter sein, wenn eine einzige VM-Anforderung die SSD-Steuereinheit veranlasst, Blöcke mit Ausrichtung zu Seitengrenzen abzurufen. Der VM besitzt jedoch keine explizite Kenntnis der Position einzelner Blöcke in der Seite, und daher kann der VM nicht explizit Blöcke anfordern, die zu Seitengrenzen ausgerichtet sind.In principle, speculative prefetching may be more efficient if a single VM request causes the SSD controller to fetch blocks with page boundary alignment. However, the VM has no explicit knowledge of the location of individual blocks in the page, and therefore the VM can not explicitly request blocks that are aligned to page boundaries.
In einer Ausführungsform berichtet die SSD-Steuereinheit dem VM die im Flash-Speicher verwendete Seitengröße. Der VM speichert dann Daten in Einheiten mit der empfangenen Seitengröße, während zusätzlich die SSD-Steuereinheit angewiesen wird, jede solche Einheit mit Ausrichtung zu Seitengrenzen im Flash-Speicher zu speichern. Wenn der VM später die entsprechenden gespeicherten Daten liest, führt der VM ein spekulatives Vorab-Holen wie vorstehend beschrieben durch, indem der erste Block in einer Seite abgerufen wird, und als Reaktion auf die Anforderung nach spekulativem Vorab-Holen liest das SSD die Seite, zu welcher der erste Block gehört, und speichert sie zwischen und liefert die gesamte Seite an den Host. In one embodiment, the SSD controller reports to the VM the page size used in the flash memory. The VM then stores data in units with the received page size, while additionally instructing the SSD controller to store each such page aligned alignment device in the flash memory. When the VM later reads the corresponding stored data, the VM performs speculative prefetching as described above by fetching the first block in a page, and in response to the request for speculative prefetching, the SSD reads the page, to which the first block belongs, and store it between and deliver the entire page to the host.
Bei Starten einer Anwendung kann es vorteilhaft sein, ein spekulatives Vorab-Holen durchzuführen, um die Startdauer zu verringern, wenn zum Beispiel die Anwendungsdateien aufeinander folgend im Flash-Speicher gespeichert sind. Bei Hochladen jeder der Anwendungsdateien ist sich das FS jedoch nicht bewusst, dass die Dateien einem Anwendungsprogramm gemeinsam sind, und besitzt keine explizite Angabe, bei Hochladen dieser Dateien in einen Modus spekulativen Vorab-Holens zu wechseln. In einer Ausführungsform gibt das OS dem FS an, wenn ein Anwendungsstart initiiert wird. Als Reaktion wechselt das FS dann zu einem Lesen der entsprechenden Anwendungsdateien im Modus spekulativen Vorab-Holens.When launching an application, it may be advantageous to do a speculative prefetch to reduce startup duration, for example, if the application files are sequentially stored in flash memory. However, when uploading any of the application files, the FS is unaware that the files are common to an application program and has no explicit indication to switch to a speculative prefetch mode when uploading these files. In one embodiment, the OS indicates the FS when an application start is initiated. In response, the FS then switches to reading the appropriate application files in speculative prefetching mode.
In manchen Ausführungsformen gibt das OS der SSD-Steuereinheit an, wenn ein Anwendungsstart begonnen und beendet wird. Als Reaktion überwacht das SSD die logischen und entsprechenden physischen Adressen der hochgeladenen Dateien der gestarteten Anwendung. Die SSD-Steuereinheit ordnet dann die Anwendungsdateien aufeinander folgend in einem zusammenhängenden Bereich physischer Adressen im Flash-Speicher neu, um ein nachfolgendes effizientes Starten derselben Anwendung unter Verwendung von spekulativem Vorab-Holen zu ermöglichen.In some embodiments, the OS indicates the SSD controller when an application startup is started and terminated. In response, the SSD monitors the logical and corresponding physical addresses of the uploaded files of the launched application. The SSD controller then reorders the application files sequentially in a contiguous range of physical addresses in the flash memory to allow for subsequent efficient launching of the same application using speculative prefetching.
In alternativen Ausführungsformen gibt das OS dem FS (anstelle des SSD) an, wann immer das OS einen Anwendungsstart initiiert und beendet. Das FS speichert die logischen Adressen der hochgeladenen Anwendungsdateien und sendet die festgehaltenen Adressen unter Verwendung eines dedizierten Defragmentierungsbefehls an die SSD-Steuereinheit. Die SSD-Steuereinheit ordnet dann die Anwendungsdateien aufeinander folgend im Flash-Speicher neu und aktualisiert die Adressenübersetzungstabelle dementsprechend.In alternative embodiments, the OS indicates the FS (instead of the SSD) whenever the OS initiates and terminates an application launch. The FS stores the logical addresses of the uploaded application files and sends the held addresses to the SSD controller using a dedicated defragmentation command. The SSD controller then reorders the application files sequentially in the flash memory and updates the address translation table accordingly.
Die offenbarten Techniken ermöglichen es, ein spekulatives Vorab-Holen durchzuführen, um die Rate eines Zugreifens auf fehlende Daten bei Erfassen von Seitenfehlerereignissen zu verbessern und um die Dauer eines Startens von Anwendungen zu verringern, während von unnötigen Leseoperationen aus dem Flash-Speicher abgesehen wird. Die offenbarten Techniken verbessern somit Leselatenzzeiten, Energieverbrauch und Batterie- oder Akkulebensdauer des Systems.The disclosed techniques make it possible to perform speculative prefetching to improve the rate of accessing missing data in detecting page fault events and to reduce the duration of launching applications while ignoring unnecessary read operations from the flash memory. The disclosed techniques thus improve read latency, power consumption and battery or battery life of the system.
Systembeschreibungsystem Description
In alternativen Ausführungsformen kann der Host einen beliebigen anderen, geeigneten Prozessor oder eine beliebige andere, geeignete Steuereinheit umfassen, und die Datenspeichervorrichtung kann eine beliebige andere, geeignete Vorrichtung umfassen. Zum Beispiel kann der Host eine Datenspeichersteuereinheit eines Unternehmens-Datenspeichersystems umfassen, und die Datenspeichervorrichtung kann ein SSD oder eine Anordnung (array) von SSDs umfassen. Weitere Beispiele von Hosts, die Daten in nichtflüchtigen Datenspeichervorrichtungen speichern, umfassen Mobiltelefone, Digitalkameras, Medienwiedergabevorrichtungen und Wechselkarten oder -vorrichtungen.In alternative embodiments, the host may comprise any other suitable processor or any other suitable control unit, and the data storage device may comprise any other suitable device. For example, the host may include a data storage controller of a corporate data storage system, and the data storage device may include an SSD or an array of SSDs. Other examples of hosts that store data in nonvolatile data storage devices include mobile phones, digital cameras, media players, and changeover cards or devices.
In einer Ausführungsform führt die CPU
Das SSD
Eine SSD-Steuereinheit
Das SSD
Der untere Teil von
Die Speicheranordnung
Manche Speichervorrichtungen umfassen zwei oder mehr separate Speicherzellenanordnungen, die oft als Ebenen bezeichnet werden. Zum Beispiel kann in einer Vorrichtung mit zwei Ebenen, bei der jede Ebene Seiten von 16 KB umfasst, die SSD-Steuereinheit unter Verwendung von Mehrfachebenenzugriff 32 KB in einer einzigen Leseoperation abrufen.Some memory devices include two or more separate memory cell arrays, often referred to as planes. For example, in a two-level device in which each layer has pages of 16 KB, the SSD controller can retrieve 32 KB in a single read operation using multi-level access.
Der Prozessor
Die logischen und entsprechenden physischen Adressen greifen auf Dateneinheiten zu, die hierin als Datenblöcke bezeichnet werden. In manchen Ausführungsformen ist die Größe einer Datenseite größer als die Größe eines Datenblocks. Zum Beispiel kann der VM mit Datenblöcken von 4 KB konfiguriert sein und die Flash-Speicher mit Seiten einer Größe von 16 KB. Typischerweise, obwohl nicht notwendig, umfasst eine Datenseite eine ganze Zahl an Datenblöcken.The logical and corresponding physical addresses access data units, referred to herein as data blocks. In some embodiments, the size of a data page is greater than the size of a data block. For example, the VM can be configured with 4KB data blocks and the flash memory can be configured with 16KB pages. Typically, although not necessary, a data page comprises an integer number of data blocks.
Die SSD-Steuereinheit
Bei der Konfiguration von
In der in
In manchen Ausführungsformen umfasst der Prozessor
VM-Vorab-Holen in SSD-gestützten DatenspeichersystemenVM prefetching in SSD-based data storage systems
In der Beschreibung, die folgt, nehmen wir an, dass der VM
Wenn ein Softwareprozess oder eine Anwendung, der oder die durch das OS
Wie nachstehend demonstriert, kann ein Konfigurieren des VM
Die offenbarten Techniken, die nachstehend beschrieben sind, ermöglichen es dem VM, ein spekulatives Vorab-Holen durchzuführen, ohne Bandbreite und Energieverbrauch zu verschwenden. Durch Definieren neuer VM-Operationen kann die SSD-Steuereinheit in den offenbarten Techniken eine Datenseite einmal lesen und zwischenspeichern und die zwischengespeicherten Datenblöcke dieser Seite auf Anforderung an den Host liefern. The disclosed techniques, described below, allow the VM to perform speculative prefetching without wasting bandwidth and power consumption. By defining new VM operations, in the disclosed techniques, the SSD controller may once read and cache a data page and provide the cached data blocks of that page upon request to the host.
Verfahren zum effizienten spekulativen Vorab-HolenMethod for efficient speculative prefetching
Wir nehmen nun Bezug auf
Als Nächstes führt der VM eine Operation READ_NO_SENSE(ADR1) aus, in welcher der VM den Block ADR1 anfordert, die angibt, den Block aus der zwischengespeichertem Seite zu lesen. Die SSD-Steuereinheit
Bei Durchführen der Operation READ_NO_SENSE(ADR5) fordert der VM den Block ADR5 an, der nicht Teil der zwischengespeicherten Blöcke ADR1 bis ADR4 ist. Als ein Ergebnis reagiert die SSD-Steuereinheit
Wenn der VM den Block ADR4 unter Verwendung der Operation READ_NO_SENSE(ADR4) anfordert, liest die SSD-Steuereinheit
Zu einer späteren Gelegenheit führt der VM eine Operation READ_VM_TO_END(ADR6) durch, um die Seite anzufordern, welche die Blöcke ADR6 = ADR9 speichert. Die SSD-Steuereinheit
In manchen Ausführungsformen wendet die SSD-Steuereinheit einen Blockverdichtungsprozess an, der auch als „Garbage Collection” (GC) bezeichnet wird. In diesem Prozess kopiert die SSD-Steuereinheit gültige Daten aus teilweise gültigen Quellblöcken in einen oder mehrere Zielblöcke. Da bei GC typischerweise gesamte Blöcke oder Seiten kopiert werden, behalten Daten, die auf Seitengrenzen ausgerichtet geschrieben wurden, wie vorstehend beschrieben, ihre Ausrichtung bei, selbst nachdem sie durch den GC-Prozess kopiert wurden.In some embodiments, the SSD controller employs a block compression process, also referred to as garbage collection (GC). In this process, the SSD controller copies valid data from partially valid source blocks into one or more destination blocks. Since GC typically copies entire blocks or pages, data written aligned on page boundaries, as described above, maintains alignment even after being copied by the GC process.
In einem Befehlsempfangsschritt
In Schritt
Schneller AnwendungsstartFast application start
Ein Anwendungsprogramm greift oft auf eine große Anzahl relativ kleiner Dateien zu, die das FS
Verschiedene Verfahren zum Beschleunigen der Startdauer von Anwendungen sind im Stand der Technik bekannt. Beispielverfahren sind durch Yongsoo et al. in „FAST: quick application launch on solid-state drives”, Proceedings of the 9th USENIX conference on File and Storage Technologies, Seiten 259 bis 272, 15. bis 17. Februar 2011, San Jose, USA, beschrieben, was durch Bezugnahme hierein aufgenommen wird.Various methods for accelerating the startup time of applications are known in the art. Example methods are described by Yongsoo et al. in "FAST: quick application launch on solid state drives", Proceedings of the 9th USENIX on February 25-17, 2011, San Jose, USA, which is incorporated herein by reference.
In manchen Ausführungsformen, die hierin beschrieben sind, verwendet das FS
In einer Beispielausführungsform werden die Anwendungsdateien aufeinander folgend in einem zusammenhängenden Bereich physischer Adressen in einem der Flash-Speicher gespeichert. Bei Empfangen von Identifikationen der Anwendungsdateien vom OS
In einer offenbarten Ausführungsform weist das OS
In einem Startbeendigungsangabe-Schritt
In alternativen Ausführungsformen weist das OS
Bei den vorstehend beschriebenen Verfahren handelt es sich um beispielhafte Verfahren, und andere Verfahren können in alternativen Ausführungsformen verwendet werden. Obwohl zum Beispiel in allen vorstehend beschriebenen Verfahren die Datenblock- und Seitengrößen 4 KB bzw. 16 KB betragen, können auch beliebige andere Größen verwendet werden.The methods described above are exemplary methods, and other methods may be used in alternative embodiments. For example, although the data block and page sizes are 4 KB and 16 KB, respectively, in all the methods described above, any other sizes may be used.
Obwohl typischerweise der VM und das FS dieselbe Datenblockgröße teilen, können als ein weiteres Beispiel in alternativen Ausführungsformen die vorstehend beschriebenen Verfahren so angewendet werden, dass der VM und das FS Datenblöcke unterschiedlicher Größen holen (beide Größen sind kleiner als die Seitengröße). Alternativ oder zusätzlich dazu kann der VM (oder das FS) unterschiedliche Blockgrößen für unterschiedliche Prozesse oder Anwendungen verwenden.Although typically the VM and the FS share the same data block size, as another example in alternative embodiments, the methods described above may be applied such that the VM and FS fetch data blocks of different sizes (both sizes are smaller than the page size). Alternatively or additionally, the VM (or FS) may use different block sizes for different processes or applications.
Die offenbarten Verfahren sind nicht nur auf SSD-gestützte Datenspeichersysteme anwendbar, sondern auf jegliche Datenspeichersysteme, in denen für jedes Holen eines fehlenden Datenblocks durch den VM (oder das FS) eine Seite, deren Größe größer als die Blockgröße ist, aus dem zugrunde liegenden Speicher abgerufen wird.The disclosed methods are applicable not only to SSD-based data storage systems, but to any data storage systems in which, for each fetch of a missing data block by the VM (or FS), a page whose size is larger than the block size is from the underlying memory is retrieved.
Obwohl die hierin beschriebenen Ausführungsformen hauptsächlich einen mit Speichervorrichtungen kommunizierenden Host-Prozessor in einem SSD-gestützten Datenspeichersystem ansprechen, können die hierin beschriebenen Verfahren und Systeme auch in anderen Anwendungen verwendet werden, wie beispielsweise in jedem System, in dem ein Host konfiguriert ist, Daten in Blöcken zu speichern, die kleiner als die durch die zugrunde liegende Datenspeichervorrichtung verwendete Datenspeichereinheit sind.Although the embodiments described herein primarily address a memory device communicating host processor in an SSD-based data storage system, the methods and systems described herein may also be used in other applications, such as in any system in which a host is configured to store data in Storing blocks that are smaller than the data storage unit used by the underlying data storage device.
Es wird daher ersichtlich sein, dass die vorstehend beschriebenen Ausführungsformen in beispielhafter Weise angeführt werden, und dass die vorliegende Erfindung nicht auf das beschränkt ist, was hierin vorstehend im Einzelnen gezeigt und beschrieben worden ist. Vielmehr schließt der Umfang der vorliegenden Erfindung sowohl Kombinationen und Teilkombinationen der verschiedenen hierin vorstehend beschriebenen Merkmale als auch Variationen und Modifikationen davon ein, die dem Fachmann beim Lesen der vorhergehenden Beschreibung einfallen, und die im Stand der Technik nicht offenbart sind. Dokumente, die durch Bezugnahme in die vorliegende Patentanmeldung aufgenommen werden, sind als ein integraler Teil der Anmeldung anzusehen, außer dass in dem Ausmaß, in dem jegliche Begriffe in diesen aufgenommenen Dokumenten in einer Weise definiert sind, die mit den explizit oder implizit in der vorliegenden Patentschrift erfolgten Definitionen in Konflikt steht, nur die Definitionen in der vorliegenden Patentschrift berücksichtigt werden sollen.It will therefore be understood that the above-described embodiments are presented by way of example, and that the present invention is not limited to what has been shown and described in detail hereinabove. Rather, the scope of the present invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof which occur to those skilled in the art upon reading the foregoing description, and which are not disclosed in the prior art. Documents incorporated by reference into the present application are to be considered as an integral part of the application, except to the extent that any terms in these incorporated documents are defined in a manner consistent with those expressed or implied in the present application Patent definitions are conflicting, only the definitions in the present specification are to be considered.
Claims (17)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/148,910 US9582204B2 (en) | 2014-01-07 | 2014-01-07 | Speculative prefetching of data stored in flash memory |
US14/148,910 | 2014-01-07 | ||
PCT/US2014/073040 WO2015105721A1 (en) | 2014-01-07 | 2014-12-31 | Speculative prefetching of data stored in flash memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112014006118T5 true DE112014006118T5 (en) | 2016-09-29 |
DE112014006118B4 DE112014006118B4 (en) | 2021-09-16 |
Family
ID=52395223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112014006118.2T Active DE112014006118B4 (en) | 2014-01-07 | 2014-12-31 | Speculative prefetching of data stored in flash memory |
Country Status (6)
Country | Link |
---|---|
US (1) | US9582204B2 (en) |
JP (1) | JP6224253B2 (en) |
KR (1) | KR101790913B1 (en) |
CN (1) | CN105900069B (en) |
DE (1) | DE112014006118B4 (en) |
WO (1) | WO2015105721A1 (en) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9594687B2 (en) * | 2015-04-14 | 2017-03-14 | Google Inc. | Virtualization-aware prefetching |
KR20170001235A (en) * | 2015-06-26 | 2017-01-04 | 에스케이하이닉스 주식회사 | Memory system and method of operating the same |
US20170123796A1 (en) * | 2015-10-29 | 2017-05-04 | Intel Corporation | Instruction and logic to prefetch information from a persistent memory |
JP2017122997A (en) * | 2016-01-06 | 2017-07-13 | 富士通株式会社 | Information processing unit, control method for arithmetic processing unit, and control program for arithmetic processing unit |
US10817224B2 (en) * | 2016-06-23 | 2020-10-27 | Qualcomm Incorporated | Preemptive decompression scheduling for a NAND storage device |
CN107329908A (en) * | 2017-07-07 | 2017-11-07 | 联想(北京)有限公司 | A kind of data processing method and electronic equipment |
CN107479938B (en) * | 2017-09-27 | 2024-03-29 | 北京忆芯科技有限公司 | Electronic equipment and starting method thereof |
CN109582490B (en) * | 2017-09-28 | 2023-12-15 | 北京忆芯科技有限公司 | Intelligent reread command generation |
US11029879B2 (en) * | 2018-01-29 | 2021-06-08 | Samsung Electronics Co., Ltd | Page size synchronization and page size aware scheduling method for non-volatile memory dual in-line memory module (NVDIMM) over memory channel |
US10963394B2 (en) * | 2018-04-16 | 2021-03-30 | Samsung Electronics Co., Ltd. | System and method for optimizing performance of a solid-state drive using a deep neural network |
CN109213448B (en) * | 2018-08-30 | 2022-04-05 | 东信和平科技股份有限公司 | Method, device, equipment and storage medium for erasing and writing data of smart card |
CN109254733B (en) * | 2018-09-04 | 2021-10-01 | 北京百度网讯科技有限公司 | Method, device and system for storing data |
KR102518095B1 (en) | 2018-09-12 | 2023-04-04 | 삼성전자주식회사 | Storage device and system |
US10607712B1 (en) * | 2018-09-28 | 2020-03-31 | Toshiba Memory Corporation | Media error reporting improvements for storage drives |
KR20200057473A (en) * | 2018-11-16 | 2020-05-26 | 삼성전자주식회사 | Storage Device And Storage System Including The Same |
US11042325B2 (en) | 2019-08-05 | 2021-06-22 | International Business Machines Corporation | Speculative bank activate dynamic random access memory (DRAM) scheduler |
CN110688325B (en) * | 2019-09-05 | 2021-12-03 | 苏州浪潮智能科技有限公司 | Garbage recycling method, device and equipment for solid state disk and storage medium |
US11249913B2 (en) * | 2020-03-06 | 2022-02-15 | Macronix International Co., Ltd. | Continuous read with multiple read commands |
US11314637B2 (en) * | 2020-05-29 | 2022-04-26 | Hewlett Packard Enterprise Development Lp | System and method for efficient cache coherency protocol processing |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675853A (en) * | 1992-08-25 | 1994-03-18 | Oki Electric Ind Co Ltd | Cache memory device |
US7031987B2 (en) * | 1997-05-30 | 2006-04-18 | Oracle International Corporation | Integrating tablespaces with different block sizes |
US7143401B2 (en) * | 2000-02-17 | 2006-11-28 | Elbrus International | Single-chip multiprocessor with cycle-precise program scheduling of parallel execution |
JP5076133B2 (en) * | 2000-06-27 | 2012-11-21 | インベンサス、コーポレーション | Integrated circuit with flash |
US20030204675A1 (en) * | 2002-04-29 | 2003-10-30 | Dover Lance W. | Method and system to retrieve information from a storage device |
US7421567B2 (en) * | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
JP2007188408A (en) * | 2006-01-16 | 2007-07-26 | Toshiba Corp | Storage device and its method |
JP2007293604A (en) * | 2006-04-25 | 2007-11-08 | Toshiba Corp | Information processor and program load method |
US20080215849A1 (en) * | 2007-02-27 | 2008-09-04 | Thomas Scott | Hash table operations with improved cache utilization |
US9052910B2 (en) * | 2007-10-25 | 2015-06-09 | International Business Machines Corporation | Efficiency of short loop instruction fetch |
TWI375953B (en) * | 2008-02-21 | 2012-11-01 | Phison Electronics Corp | Data reading method for flash memory, controller and system therof |
JP5163220B2 (en) | 2008-03-26 | 2013-03-13 | 富士通株式会社 | Cache control device, information processing device |
US8429377B2 (en) * | 2010-01-08 | 2013-04-23 | International Business Machines Corporation | Optimizing TLB entries for mixed page size storage in contiguous memory |
US20110238962A1 (en) * | 2010-03-23 | 2011-09-29 | International Business Machines Corporation | Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors |
US8341382B2 (en) | 2010-09-30 | 2012-12-25 | Nxp B.V. | Memory accelerator buffer replacement method and system |
US10031850B2 (en) | 2011-06-07 | 2018-07-24 | Sandisk Technologies Llc | System and method to buffer data |
US8856456B2 (en) * | 2011-06-09 | 2014-10-07 | Apple Inc. | Systems, methods, and devices for cache block coherence |
-
2014
- 2014-01-07 US US14/148,910 patent/US9582204B2/en active Active
- 2014-12-31 DE DE112014006118.2T patent/DE112014006118B4/en active Active
- 2014-12-31 CN CN201480072501.9A patent/CN105900069B/en active Active
- 2014-12-31 JP JP2016541546A patent/JP6224253B2/en active Active
- 2014-12-31 WO PCT/US2014/073040 patent/WO2015105721A1/en active Application Filing
- 2014-12-31 KR KR1020167021071A patent/KR101790913B1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR101790913B1 (en) | 2017-10-26 |
WO2015105721A1 (en) | 2015-07-16 |
CN105900069B (en) | 2019-09-17 |
DE112014006118B4 (en) | 2021-09-16 |
US20150193155A1 (en) | 2015-07-09 |
US9582204B2 (en) | 2017-02-28 |
JP2017503266A (en) | 2017-01-26 |
JP6224253B2 (en) | 2017-11-01 |
CN105900069A (en) | 2016-08-24 |
KR20160104710A (en) | 2016-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112014006118B4 (en) | Speculative prefetching of data stored in flash memory | |
DE102017104150B4 (en) | Wear compensation in memory devices | |
DE102012216034B4 (en) | Direct memory addressing for solid-state drives | |
DE102018105427A1 (en) | Maintaining data during power off | |
DE102017104158A1 (en) | VALIDITY PURPOSES FOR GARBAGE COLLECTION | |
DE112015004873T5 (en) | Processing of removal commands to improve the performance and durability of a storage device | |
DE102013016609A1 (en) | Apparatus and method for a low energy, low latency and high capacity storage class memory | |
DE112020000139T5 (en) | NAME SPACES NOT SEQUENTIALLY DIVIDED INTO ZONES | |
DE102008036822A1 (en) | Method for storing data in a solid state memory, solid state memory system and computer system | |
DE102018123805A1 (en) | Operation for distributed programming | |
DE112019005511T5 (en) | KEEP WRITE COMMANDS IN ZONED NAME SPACES | |
DE102009031125A1 (en) | Nand error handling | |
DE112015003536T5 (en) | Host administrator non-volatile memory | |
DE112017005782T5 (en) | Queue for storage operations | |
DE102021114457A1 (en) | HANDLING READS TO ZONED NAMESPACE DEVICES | |
DE112018000230T5 (en) | System and method for speculative instruction execution using the control memory buffer | |
DE112020005787T5 (en) | IMPROVED FILE SYSTEM SUPPORT FOR ZONE NAMESPACE STORAGE | |
DE102020122182A1 (en) | VIRTUAL MACHINE REPLICATION AND MIGRATION | |
DE102021115626A1 (en) | DATA AGGREGATION IN CNS DRIVE | |
DE102021115374A1 (en) | MITIGATION OF ZONED NAMESPACE USING SUB-BLOCK MODE | |
DE102018105651A1 (en) | Change of memory parameters | |
DE112020000183T5 (en) | STORAGE CLASS STORAGE ACCESS | |
DE112020005044T5 (en) | ZONE ATTACHMENT COMMAND SCHEDULING BASED ON ZONE STATE | |
DE102022101609A1 (en) | VERY SMALL ZONE SUPPORT FOR STORAGE DEVICES | |
DE102022101607A1 (en) | HOST MEMORY BUFFER ALLOCATION MANAGEMENT |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |