US10203881B2 - Optimized execution of interleaved write operations in solid state drives - Google Patents

Optimized execution of interleaved write operations in solid state drives Download PDF

Info

Publication number
US10203881B2
US10203881B2 US13/539,632 US201213539632A US10203881B2 US 10203881 B2 US10203881 B2 US 10203881B2 US 201213539632 A US201213539632 A US 201213539632A US 10203881 B2 US10203881 B2 US 10203881B2
Authority
US
United States
Prior art keywords
data items
data
memory
items
processor
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.)
Active, expires
Application number
US13/539,632
Other versions
US20130159626A1 (en
Inventor
Shachar Katz
Oren Golov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Priority to US13/539,632 priority Critical patent/US10203881B2/en
Assigned to APPLE INC. reassignment APPLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GOLOV, OREN, KATZ, SHACHAR
Publication of US20130159626A1 publication Critical patent/US20130159626A1/en
Application granted granted Critical
Publication of US10203881B2 publication Critical patent/US10203881B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Definitions

  • the present invention relates generally to data storage, and particularly to methods and systems for storing data from multiple data sources.
  • SAS Serial Attached SCSI
  • IRCITS International Committee for Information Technology Standards
  • An embodiment of the present invention that is described herein provides a method for data storage.
  • the method includes receiving a plurality of data items for storage in a memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, such that the first and second data items are interleaved with one another over time.
  • the first data items are de-interleaved from the second data items, by identifying a respective data source with which each received data item is associated.
  • the de-interleaved first data items and the de-interleaved second data items are stored in the memory.
  • storing the first data items and the second data items includes storing the first data items in a first consecutive range of physical addresses of the memory, and storing the second data items in a second consecutive range of the physical addresses, different from the first range.
  • storing the first data items includes caching the first data items prior to storage in a first cache memory
  • storing the second data items includes caching the second data items prior to the storage in a second cache memory, separate from the first cache memory.
  • the memory includes multiple memory devices, and storing the first data items includes distributing the de-interleaved first data items across two or more of the memory devices, so as to enable parallel readout of the first data items.
  • identifying the respective data source with which each received data item is associated includes identifying received data items having sequential Logical Block Addresses (LBAs).
  • the method includes initially storing the received data items in the memory without de-interleaving, and de-interleaving the first data items from the second data items includes retrieving the initially-stored first and second data items from the memory and de-interleaving the retrieved first and second data items.
  • identifying the data source with which a given data item is associated includes deducing the data source from an advance notification of a storage command that includes the given data item. In yet another embodiment, identifying the data source with which a given data item is associated includes deducing the data source from control information, which is sent together with the given data item and is indicative of the data source.
  • the first data items belong to a first write command and the second data items belong to a second write command, different from the first storage command.
  • receiving the data items includes receiving the first data items over a first physical port, and receiving the second data items over a second physical port, different from the first physical port.
  • a data storage apparatus including a memory and a processor.
  • the processor is configured to receive a plurality of data items for storage in the memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, such that the first and second data items are interleaved with one another over time, to de-interleave the first data items from the second data items by identifying a respective data source with which each received data item is associated, and to store the de-interleaved first data items and the de-interleaved second data items in the memory.
  • a data storage apparatus including a memory and a processor.
  • the processor is configured to receive a plurality of data items for storage in the memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, such that the first and second data items are interleaved with one another over time, to de-interleave the first data items from the second data items by identifying a respective data source with which each received data item is associated, and to store the de-interleaved first data items and the de-interleaved second data items in the memory.
  • FIG. 1 is a block diagram that schematically illustrates a data storage system, in accordance with an embodiment of the present invention
  • FIG. 2 is a diagram that schematically illustrates a process of storing multiple data streams, in accordance with an embodiment of the present invention.
  • FIG. 3 is a flow chart that schematically illustrates a method for storing multiple data streams, in accordance with an embodiment of the present invention.
  • a storage device receives data for storage from multiple data sources in an interleaved manner.
  • the SAS protocol allows a host to send data associated with multiple write commands in an interleaved manner.
  • a Solid State Drive (SSD) operating in accordance with the SAS protocol may thus receive from the host multiple data streams that are interleaved with one another.
  • SSD Solid State Drive
  • SATA Serial Advanced Technology Attachment
  • multiple applications running in parallel on a host may send to an SSD data associated with different tags in an interleaved manner.
  • an SSD may receive multiple data streams concurrently over multiple different physical ports, so that the data of the different streams may be interleaved with one another when arriving in the SSD.
  • a storage device e.g., an SSD
  • a non-volatile memory e.g., a plurality of Flash memory devices
  • a processor e.g., an SSD controller
  • the processor de-interleaves the various streams, by identifying the data source with which each data item is associated. In other words, the processor reconstructs the successive stream of data items associated with each data source.
  • the processor stores the de-interleaved streams of data items in the non-volatile memory.
  • the processor applies separate processing to each stream. For example, the processor may cache each stream in a separate cache memory. As another example, the processor may store each stream in a contiguous range of physical storage locations (physical addresses) of the non-volatile memory.
  • both write performance and subsequent readout performance can be improved considerably.
  • caching and read-ahead mechanisms can be used with high efficiency.
  • Virtual-to-Physical address translation in the processor, as well as other management data structures, can be simplified and reduced in size. The frequency of lookup in such data structures can also be reduced.
  • FIG. 1 is a block diagram that schematically illustrates a data storage system, in the present example a Solid State Drive (SSD) 20 , in accordance with an embodiment of the present invention.
  • SSD 20 stores data on behalf of a host 24 .
  • SSD 20 may be installed in a mobile or personal computer, in which case host 24 comprises a Central Processing Unit (CPU) chipset of the computer.
  • host 24 comprises a Central Processing Unit (CPU) chipset of the computer.
  • CPU Central Processing Unit
  • SSD 20 may be used with any other suitable host.
  • the embodiments described herein refer mainly to SSD, the disclosed techniques can be used with various other kinds of memory systems, such as enterprise storage devices, mobile phones, digital cameras, mobile computing devices such as laptop computers, tablet computers or Personal Digital Assistants (PDAs), media players, removable memory cards or devices, or any other suitable data storage system.
  • PDAs Personal Digital Assistants
  • SSD 20 stores data on behalf of host 24 in a non-volatile memory, in the present example in one or more NAND Flash memory devices 28 .
  • the non-volatile memory in SSD 20 may comprise any other suitable type of non-volatile memory, such as, for example, NOR Flash, Charge Trap Flash (CTF), Phase Change RAM (PRAM), Magnetoresistive RAM (MRAM) or Ferroelectric RAM (FeRAM).
  • An SSD controller 36 performs the various storage and management tasks of the SSD, and in particular carries out data de-interleaving schemes that are described below.
  • the SSD controller is also referred to generally as a memory controller.
  • SSD controller 36 comprises a host interface 40 for communicating with host 24 , a memory interface 44 for communicating with Flash devices 28 , and a processor 48 that carries out the methods described herein.
  • SSD 20 further comprises a volatile memory, in the present example a Random Access Memory (RAM) 32 .
  • RAM 32 is shown as part of SSD controller 36 , although the RAM may alternatively be separate from the SSD controller.
  • the volatile memory in SSD 20 may comprise any suitable type of volatile memory, such as, for example, Dynamic RAM (DRAM), Double Data Rate DRAM (DDR DRAM) or Static RAM (SRAM).
  • DRAM Dynamic RAM
  • DDR DRAM Double Data Rate DRAM
  • SRAM Static RAM
  • SSD controller 36 and in particular processor 48 , may be implemented in hardware.
  • the SSD controller may comprise a microprocessor that runs suitable software, or a combination of hardware and software elements.
  • FIG. 1 is an exemplary configuration, which is shown purely for the sake of conceptual clarity. Any other suitable SSD or other memory system configuration can also be used. Elements that are not necessary for understanding the principles of the present invention, such as various interfaces, addressing circuits, timing and sequencing circuits and debugging circuits, have been omitted from the figure for clarity. In some applications, e.g., non-SSD applications, the functions of SSD controller 36 are carried out by a suitable memory controller.
  • memory devices 28 and SSD controller 48 are implemented as separate Integrated Circuits (ICs). In alternative embodiments, however, the memory devices and the SSD controller may be integrated on separate semiconductor dies in a single Multi-Chip Package (MCP) or System on Chip (SoC), and may be interconnected by an internal bus. Further alternatively, some or all of the SSD controller circuitry may reside on the same die on which one or more of memory devices 28 are disposed. Further alternatively, some or all of the functionality of SSD controller 36 can be implemented in software and carried out by a processor or other element of host 24 . In some embodiments, host 24 and SSD controller 36 may be fabricated on the same die, or on separate dies in the same device package.
  • MCP Multi-Chip Package
  • SoC System on Chip
  • SSD controller 36 comprises a general-purpose processor, which is programmed in software to carry out the functions described herein.
  • the software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory.
  • FIG. 2 is a diagram that schematically illustrates a process of storing multiple data streams in SSD 20 , in accordance with an embodiment of the present invention.
  • the top graph of FIG. 2 shows an example of multiple data items 60 A . . . 60 I that are sent from host 24 to SSD 20 for storage.
  • the data items are shown on a time axis in accordance with their order of arrival to SSD controller 36 .
  • data items 60 A, 60 C and 60 G are associated with a data stream 64 A
  • data items 60 B, 60 E and 60 F are associated with another data stream 64 B
  • data items 60 D, 60 H and 601 are associated with a third data stream 64 C.
  • the three data streams are interleaved with one another in time.
  • each data stream is associated with a respective data source.
  • each data stream may be associated with a different write command (e.g., with a different SAS command tag) and all arrive over the same physical port.
  • each data stream may arrive in SSD 20 over a different physical port.
  • processor 48 of SSD controller 36 de-interleaves the data items and thus reconstructs the three consecutive data streams.
  • Data streams 64 A . . . 64 C after de-interleaving are shows at the bottom of FIG. 2 .
  • Processor 36 then sends the de-interleaved data streams for storage in Flash devices 28 .
  • the de-interleaved data streams are processed and sent for storage in Flash memory 28 devices of SSD 20 .
  • processor 48 applies separate processing to each de-interleaved stream, in order to improve the overall write and/or read performance of SSD 20 .
  • processor 48 stores the various streams so as to improve subsequent readout of the data items.
  • the de-interleaving and storage operations are performed while the data items of the various streams continue to arrive in the SSD.
  • processor 48 may assign a separate cache memory to each data stream, i.e., cache the data items of each stream separately.
  • processor 48 may assign a contiguous range of physical storage locations (physical addresses) in memory devices 28 to each stream.
  • each data item is typically provided by host together with a respective virtual address (logical address).
  • Processor 48 translates the virtual addresses into corresponding physical addresses in memory devices 28 , and stores the data items in the appropriate physical addresses.
  • processor 48 stores the data items of each stream sequentially in a respective contiguous range of physical addresses.
  • subsequent readout of the data items will be highly efficient, because it will involve considerably fewer lookups in the virtual-to-physical address mapping, and will generally have the characteristics of sequential readout as opposed to random readout.
  • Readout in these embodiments may make efficient use of caching and read-ahead (pre-fetch) mechanisms.
  • Write performance can also be improved, for example because sequential write operations incur considerably less write amplification than random write operations.
  • processor 48 may apply any other suitable separate processing to the different streams, in order to improve write and/or read performance.
  • FTLs Flash Translation Layers
  • processor 48 may distribute the data of a given stream across multiple Flash devices (e.g., dies) in parallel, so as to enable fast parallel readout of the data.
  • FIG. 3 is a flow chart that schematically illustrates a method for storing multiple data streams, in accordance with an embodiment of the present invention.
  • the method begins with SSD controller 36 receiving from host 24 via host interface 40 data items for storage in Flash devices 28 , at an input step 70 .
  • Each data item is associated with a respective data stream originating from a certain data source, and the various data streams are interleave in time with one another.
  • Processor 48 of SSD controller 36 identifies the respective data stream (and thus the data source) with which each data item is associated, at an association step 74 .
  • Processor 48 may identify the data stream to which a given data item belongs in various ways, and several example identification techniques are described below. Based on the identification above, processor 48 de-fragments or de-interleaves the different data streams from one another, at a de-interleaving step 78 .
  • Processor 48 then processes each data stream individually, e.g., stores each data stream in a different contiguous physical address range, at a storage step 82 .
  • host 24 sends to the Flash translation Layer (FTL) in processor 48 an advance notification for each write command, prior to actual arrival of the data.
  • FTL Flash translation Layer
  • Processor 48 associates the subsequent data with the appropriate stream based on these notifications.
  • Each notification may comprise, for example, the tag of the command, the starting logical address (e.g., start Logical Block Address—LBA), the number of LBAs to be written, and/or any other information that will assist the FTL to associate the subsequent data with the context of the command.
  • LBA Logical Block Address
  • the storage protocol may provide “hints” that can be included in the notification.
  • a hint typically provides the FTL additional knowledge regarding the profile of the stream and the expected behavior when it is read (e.g., low or high read latency and/or hot or cold data).
  • host 24 sends every data item to the FTL of processor 48 along with control information that puts the data item in the context of a stream.
  • the control information may comprise, for example, the tag of the command associated with this data, the port from which the data arrived, the initiator/host that sent the data, the offset of the data within the transaction, and/or any other suitable information.
  • processor 48 maintains a dynamic database of the written segment LBAs that can be used to recognize patterns of sequential LBAs undergoing contiguous writes. For example, processor 48 can store an array that holds the last LBA of each recognized stream. When a new LBA arrives for storage, processor 48 may check, for each recognized stream in the array, whether the new LBA is the next LBA in this stream. If a sequential match is found, the new LBA is appended to the corresponding stream. If not, the processor assumes the new LBA starts a new stream, and initializes such a stream in the array. In some cases, a stream can span across the boundary of a single command.
  • Dynamic stream detection of this sort can identify a stream even if it spans multiple commands, based on the LBA sequentiality.
  • the beginning of a given detected stream may sometimes be stored in an interleaved manner, but the majority of the stream will typically be distinguished from other streams and processed accordingly.
  • processor 48 may identify the stream (and thus the data source) to which each data item belongs in any other suitable way.
  • processor 48 performs de-interleaving on-the-fly to incoming data items, before sending them for storage in Flash devices 28 .
  • processor 48 initially stores the incoming data items in memory 28 without de-interleaving, e.g., in accordance with the order they arrive from the host.
  • processor 48 runs a background task that performs de-interleaving and storage according to affiliation with data streams. The background task may operate during idle times in which the processor is less busy. Such a task may detect LBA sequences that are stored in a fragmented manner in memory 28 . The task typically rearranges (de-fragmenting) the data on the physical media of memory 28 , and updates the virtual-to-physical address mapping accordingly, so as to achieve continuous data stripes. Using this technique, the content stored in SSD 20 can be read with an improved performance.
  • HDD Hard Disk Drives

Abstract

A method for data storage includes receiving a plurality of data items for storage in a memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, such that the first and second data items are interleaved with one another over time. The first data items are de-interleaved from the second data items, by identifying a respective data source with which each received data item is associated. The de-interleaved first data items and the de-interleaved second data items are stored in the memory.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims the benefit of U.S. Provisional Patent Application 61/577,125, filed Dec. 19, 2011, whose disclosure is incorporated herein by reference.
FIELD OF THE INVENTION
The present invention relates generally to data storage, and particularly to methods and systems for storing data from multiple data sources.
BACKGROUND OF THE INVENTION
Data storage devices, such as Solid State Drives (SSDs) and enterprise storage systems, use various storage protocols for transferring data to and from storage. One example of a storage protocol is the Serial Attached SCSI (SAS) protocol developed by the International Committee for Information Technology Standards (INCITS). The SAS protocol is described, for example, in “Information Technology—Serial Attached SCSI-2 (SAS-2),” INCITS document T10/1760-D, revision 15a, Feb. 22, 2009, which is incorporated herein by reference.
SUMMARY OF THE INVENTION
An embodiment of the present invention that is described herein provides a method for data storage. The method includes receiving a plurality of data items for storage in a memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, such that the first and second data items are interleaved with one another over time. The first data items are de-interleaved from the second data items, by identifying a respective data source with which each received data item is associated. The de-interleaved first data items and the de-interleaved second data items are stored in the memory.
In some embodiments, storing the first data items and the second data items includes storing the first data items in a first consecutive range of physical addresses of the memory, and storing the second data items in a second consecutive range of the physical addresses, different from the first range. In other embodiments, storing the first data items includes caching the first data items prior to storage in a first cache memory, and storing the second data items includes caching the second data items prior to the storage in a second cache memory, separate from the first cache memory. In alternative embodiments, the memory includes multiple memory devices, and storing the first data items includes distributing the de-interleaved first data items across two or more of the memory devices, so as to enable parallel readout of the first data items.
In a disclosed embodiment, identifying the respective data source with which each received data item is associated includes identifying received data items having sequential Logical Block Addresses (LBAs). In an embodiment, the method includes initially storing the received data items in the memory without de-interleaving, and de-interleaving the first data items from the second data items includes retrieving the initially-stored first and second data items from the memory and de-interleaving the retrieved first and second data items.
In another embodiment, identifying the data source with which a given data item is associated includes deducing the data source from an advance notification of a storage command that includes the given data item. In yet another embodiment, identifying the data source with which a given data item is associated includes deducing the data source from control information, which is sent together with the given data item and is indicative of the data source.
In an embodiment, the first data items belong to a first write command and the second data items belong to a second write command, different from the first storage command. In an embodiment, receiving the data items includes receiving the first data items over a first physical port, and receiving the second data items over a second physical port, different from the first physical port.
There is additionally provided, in accordance with an embodiment of the present invention, a data storage apparatus including a memory and a processor. The processor is configured to receive a plurality of data items for storage in the memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, such that the first and second data items are interleaved with one another over time, to de-interleave the first data items from the second data items by identifying a respective data source with which each received data item is associated, and to store the de-interleaved first data items and the de-interleaved second data items in the memory.
There is additionally provided, in accordance with an embodiment of the present invention, a data storage apparatus including a memory and a processor. The processor is configured to receive a plurality of data items for storage in the memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, such that the first and second data items are interleaved with one another over time, to de-interleave the first data items from the second data items by identifying a respective data source with which each received data item is associated, and to store the de-interleaved first data items and the de-interleaved second data items in the memory.
The present invention will be more fully understood from the following detailed description of the embodiments thereof, taken together with the drawings in which:
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram that schematically illustrates a data storage system, in accordance with an embodiment of the present invention;
FIG. 2 is a diagram that schematically illustrates a process of storing multiple data streams, in accordance with an embodiment of the present invention; and
FIG. 3 is a flow chart that schematically illustrates a method for storing multiple data streams, in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF EMBODIMENTS Overview
In various data storage applications, a storage device receives data for storage from multiple data sources in an interleaved manner. For example, the SAS protocol allows a host to send data associated with multiple write commands in an interleaved manner. A Solid State Drive (SSD) operating in accordance with the SAS protocol may thus receive from the host multiple data streams that are interleaved with one another. As another example, in the Serial Advanced Technology Attachment (SATA) protocol, multiple applications running in parallel on a host may send to an SSD data associated with different tags in an interleaved manner. As yet another example, an SSD may receive multiple data streams concurrently over multiple different physical ports, so that the data of the different streams may be interleaved with one another when arriving in the SSD.
When storing the data in non-volatile memory, however, storing the data in a fragmented manner, in accordance with its time-of-arrival, will typically cause considerable performance degradation during both programming and readout. It is highly desirable for the SSD to process the data of each data stream separately from the other streams.
Embodiments of the present invention that are described herein provide improved methods and systems for storing data originating from multiple data sources. In some embodiments, a storage device (e.g., an SSD) comprises a non-volatile memory (e.g., a plurality of Flash memory devices) and a processor (e.g., an SSD controller). The processor receives multiple time-interleaved streams of data items, each stream associated with a respective data source.
The processor de-interleaves the various streams, by identifying the data source with which each data item is associated. In other words, the processor reconstructs the successive stream of data items associated with each data source. The processor stores the de-interleaved streams of data items in the non-volatile memory. Typically, the processor applies separate processing to each stream. For example, the processor may cache each stream in a separate cache memory. As another example, the processor may store each stream in a contiguous range of physical storage locations (physical addresses) of the non-volatile memory.
By storing the de-interleaved data streams rather than the interleaved data items, both write performance and subsequent readout performance can be improved considerably. For example, caching and read-ahead mechanisms can be used with high efficiency. Virtual-to-Physical address translation in the processor, as well as other management data structures, can be simplified and reduced in size. The frequency of lookup in such data structures can also be reduced.
System Description
FIG. 1 is a block diagram that schematically illustrates a data storage system, in the present example a Solid State Drive (SSD) 20, in accordance with an embodiment of the present invention. SSD 20 stores data on behalf of a host 24. For example, SSD 20 may be installed in a mobile or personal computer, in which case host 24 comprises a Central Processing Unit (CPU) chipset of the computer. Alternatively, SSD 20 may be used with any other suitable host. Although the embodiments described herein refer mainly to SSD, the disclosed techniques can be used with various other kinds of memory systems, such as enterprise storage devices, mobile phones, digital cameras, mobile computing devices such as laptop computers, tablet computers or Personal Digital Assistants (PDAs), media players, removable memory cards or devices, or any other suitable data storage system.
SSD 20 stores data on behalf of host 24 in a non-volatile memory, in the present example in one or more NAND Flash memory devices 28. In alternative embodiments, the non-volatile memory in SSD 20 may comprise any other suitable type of non-volatile memory, such as, for example, NOR Flash, Charge Trap Flash (CTF), Phase Change RAM (PRAM), Magnetoresistive RAM (MRAM) or Ferroelectric RAM (FeRAM).
An SSD controller 36 performs the various storage and management tasks of the SSD, and in particular carries out data de-interleaving schemes that are described below. The SSD controller is also referred to generally as a memory controller. SSD controller 36 comprises a host interface 40 for communicating with host 24, a memory interface 44 for communicating with Flash devices 28, and a processor 48 that carries out the methods described herein.
SSD 20 further comprises a volatile memory, in the present example a Random Access Memory (RAM) 32. In the embodiment of FIG. 1 RAM 32 is shown as part of SSD controller 36, although the RAM may alternatively be separate from the SSD controller. In various embodiments, the volatile memory in SSD 20 may comprise any suitable type of volatile memory, such as, for example, Dynamic RAM (DRAM), Double Data Rate DRAM (DDR DRAM) or Static RAM (SRAM).
SSD controller 36, and in particular processor 48, may be implemented in hardware. Alternatively, the SSD controller may comprise a microprocessor that runs suitable software, or a combination of hardware and software elements.
The configuration of FIG. 1 is an exemplary configuration, which is shown purely for the sake of conceptual clarity. Any other suitable SSD or other memory system configuration can also be used. Elements that are not necessary for understanding the principles of the present invention, such as various interfaces, addressing circuits, timing and sequencing circuits and debugging circuits, have been omitted from the figure for clarity. In some applications, e.g., non-SSD applications, the functions of SSD controller 36 are carried out by a suitable memory controller.
In the exemplary system configuration shown in FIG. 1, memory devices 28 and SSD controller 48 are implemented as separate Integrated Circuits (ICs). In alternative embodiments, however, the memory devices and the SSD controller may be integrated on separate semiconductor dies in a single Multi-Chip Package (MCP) or System on Chip (SoC), and may be interconnected by an internal bus. Further alternatively, some or all of the SSD controller circuitry may reside on the same die on which one or more of memory devices 28 are disposed. Further alternatively, some or all of the functionality of SSD controller 36 can be implemented in software and carried out by a processor or other element of host 24. In some embodiments, host 24 and SSD controller 36 may be fabricated on the same die, or on separate dies in the same device package.
In some embodiments, SSD controller 36 comprises a general-purpose processor, which is programmed in software to carry out the functions described herein. The software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory.
De-Interleaving and Storage of Arriving Data Streams
FIG. 2 is a diagram that schematically illustrates a process of storing multiple data streams in SSD 20, in accordance with an embodiment of the present invention. The top graph of FIG. 2 shows an example of multiple data items 60A . . . 60I that are sent from host 24 to SSD 20 for storage. The data items are shown on a time axis in accordance with their order of arrival to SSD controller 36.
In the present example, data items 60A, 60C and 60G are associated with a data stream 64A, data items 60B, 60E and 60F are associated with another data stream 64B, and data items 60D, 60H and 601 are associated with a third data stream 64C. The three data streams are interleaved with one another in time.
The data items of each data stream are associated with a respective data source. In one example embodiment, each data stream may be associated with a different write command (e.g., with a different SAS command tag) and all arrive over the same physical port. As another example, each data stream may arrive in SSD 20 over a different physical port.
In some embodiments, processor 48 of SSD controller 36 de-interleaves the data items and thus reconstructs the three consecutive data streams. Data streams 64A . . . 64C after de-interleaving are shows at the bottom of FIG. 2. Processor 36 then sends the de-interleaved data streams for storage in Flash devices 28. The de-interleaved data streams are processed and sent for storage in Flash memory 28 devices of SSD 20.
Typically, processor 48 applies separate processing to each de-interleaved stream, in order to improve the overall write and/or read performance of SSD 20. In some embodiments, processor 48 stores the various streams so as to improve subsequent readout of the data items. In some embodiments, the de-interleaving and storage operations are performed while the data items of the various streams continue to arrive in the SSD.
For example, processor 48 may assign a separate cache memory to each data stream, i.e., cache the data items of each stream separately.
In other embodiments, processor 48 may assign a contiguous range of physical storage locations (physical addresses) in memory devices 28 to each stream. In these embodiments, each data item is typically provided by host together with a respective virtual address (logical address). Processor 48 translates the virtual addresses into corresponding physical addresses in memory devices 28, and stores the data items in the appropriate physical addresses.
When using the disclosed technique, processor 48 stores the data items of each stream sequentially in a respective contiguous range of physical addresses. As a result, subsequent readout of the data items will be highly efficient, because it will involve considerably fewer lookups in the virtual-to-physical address mapping, and will generally have the characteristics of sequential readout as opposed to random readout. Readout in these embodiments may make efficient use of caching and read-ahead (pre-fetch) mechanisms. Write performance can also be improved, for example because sequential write operations incur considerably less write amplification than random write operations.
Moreover, since long stretches of successive virtual addresses are mapped to contiguous ranges of physical addresses, the data structures used for storing and managing the virtual-to-physical address translation can be simplified and reduced in size.
Additionally or alternatively, processor 48 may apply any other suitable separate processing to the different streams, in order to improve write and/or read performance. For example, in tree-based Flash Translation Layers (FTLs), compaction and balancing of the tree is simpler for sequential write operation than for random write operations, and the tree occupies less memory. In resource-limited FTLs, e.g., FTLs that have very small RAM and that fetch data structures from the non-volatile memory, sequential write operation gives considerably better performance than random write operation. As yet another example, processor 48 may distribute the data of a given stream across multiple Flash devices (e.g., dies) in parallel, so as to enable fast parallel readout of the data.
FIG. 3 is a flow chart that schematically illustrates a method for storing multiple data streams, in accordance with an embodiment of the present invention. The method begins with SSD controller 36 receiving from host 24 via host interface 40 data items for storage in Flash devices 28, at an input step 70. Each data item is associated with a respective data stream originating from a certain data source, and the various data streams are interleave in time with one another.
Processor 48 of SSD controller 36 identifies the respective data stream (and thus the data source) with which each data item is associated, at an association step 74. Processor 48 may identify the data stream to which a given data item belongs in various ways, and several example identification techniques are described below. Based on the identification above, processor 48 de-fragments or de-interleaves the different data streams from one another, at a de-interleaving step 78.
At this stage, the various data items of each stream are identified as belonging together and ready for subsequent processing. Processor 48 then processes each data stream individually, e.g., stores each data stream in a different contiguous physical address range, at a storage step 82.
In some embodiments, host 24 sends to the Flash translation Layer (FTL) in processor 48 an advance notification for each write command, prior to actual arrival of the data. Processor 48 associates the subsequent data with the appropriate stream based on these notifications. Each notification may comprise, for example, the tag of the command, the starting logical address (e.g., start Logical Block Address—LBA), the number of LBAs to be written, and/or any other information that will assist the FTL to associate the subsequent data with the context of the command. As another example, the storage protocol may provide “hints” that can be included in the notification. A hint typically provides the FTL additional knowledge regarding the profile of the stream and the expected behavior when it is read (e.g., low or high read latency and/or hot or cold data).
In another embodiment, host 24 sends every data item to the FTL of processor 48 along with control information that puts the data item in the context of a stream. The control information may comprise, for example, the tag of the command associated with this data, the port from which the data arrived, the initiator/host that sent the data, the offset of the data within the transaction, and/or any other suitable information.
In some embodiments, processor 48 maintains a dynamic database of the written segment LBAs that can be used to recognize patterns of sequential LBAs undergoing contiguous writes. For example, processor 48 can store an array that holds the last LBA of each recognized stream. When a new LBA arrives for storage, processor 48 may check, for each recognized stream in the array, whether the new LBA is the next LBA in this stream. If a sequential match is found, the new LBA is appended to the corresponding stream. If not, the processor assumes the new LBA starts a new stream, and initializes such a stream in the array. In some cases, a stream can span across the boundary of a single command. Dynamic stream detection of this sort can identify a stream even if it spans multiple commands, based on the LBA sequentiality. The beginning of a given detected stream may sometimes be stored in an interleaved manner, but the majority of the stream will typically be distinguished from other streams and processed accordingly.
Further alternatively, processor 48 may identify the stream (and thus the data source) to which each data item belongs in any other suitable way.
In embodiments described above, processor 48 performs de-interleaving on-the-fly to incoming data items, before sending them for storage in Flash devices 28. In alternative embodiments, processor 48 initially stores the incoming data items in memory 28 without de-interleaving, e.g., in accordance with the order they arrive from the host. In addition, processor 48 runs a background task that performs de-interleaving and storage according to affiliation with data streams. The background task may operate during idle times in which the processor is less busy. Such a task may detect LBA sequences that are stored in a fragmented manner in memory 28. The task typically rearranges (de-fragmenting) the data on the physical media of memory 28, and updates the virtual-to-physical address mapping accordingly, so as to achieve continuous data stripes. Using this technique, the content stored in SSD 20 can be read with an improved performance.
Although the embodiments described herein mainly address SSD, the methods and systems described herein can also be used in other applications, such as in Hard Disk Drives (HDD).
It will thus be appreciated that the embodiments described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described 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 would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art. Documents incorporated by reference in the present patent application are to be considered an integral part of the application except that to the extent any terms are defined in these incorporated documents in a manner that conflicts with the definitions made explicitly or implicitly in the present specification, only the definitions in the present specification should be considered.

Claims (20)

The invention claimed is:
1. A method for data storage, comprising:
receiving, by a processor, a plurality of data items for storage in a memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, wherein the first and second data items are interleaved with one another over time;
wherein the first data items are associated with a first stream of logical block addresses (LBAs) and the second data items are associated with a second stream of LBAs;
de-interleaving the first data items from the second data items, by identifying a respective data source with which each received data item is associated; and
storing the de-interleaved first data items and the de-interleaved second data items in the memory, wherein storing the first data items comprises caching the first data items prior to storage in a first cache memory, and wherein storing the second data items comprises caching the second data items prior to the storage in a second cache memory separate from the first cache memory;
wherein identifying the respective data source with which each received data item is associated comprises:
identifying received data items having sequential LBAs;
determining if either of the first or second data streams spans across a boundary of a single command based on LBA sequentiality;
maintaining a database of LBAs that have been received from the first data source and the second data source; and
comparing, by the processor, each received LBA to LBAs in the database to dynamically determine to which stream each received LBA belongs.
2. The method according to claim 1, wherein storing the first data items and the second data items comprises storing the first data items in a first consecutive range of physical addresses of the memory, and storing the second data items in a second consecutive range of the physical addresses, different from the first range.
3. The method according to claim 1, wherein the memory comprises multiple memory devices, and wherein storing the first data items comprises distributing the de-interleaved first data items across two or more of the memory devices, so as to enable parallel readout of the first data items.
4. The method according to claim 1, further comprising initially storing the received data items in the memory without de-interleaving, wherein de-interleaving the first data items from the second data items comprises retrieving the initially-stored first and second data items from the memory and de-interleaving the retrieved first and second data items.
5. The method according to claim 1, wherein identifying the data source with which a given data item is associated comprises deducing the data source from an advance notification of a storage command that comprises the given data item.
6. The method according to claim 1, wherein identifying the data source with which a given data item is associated comprises deducing the data source from control information, which is sent together with the given data item and is indicative of the data source.
7. The method according to claim 1, wherein the first data items belong to a first write command, and wherein the second data items belong to a second write command different from the first write command.
8. The method according to claim 1, wherein receiving the data items comprises receiving the first data items over a first physical port, and receiving the second data items over a second physical port, different from the first physical port.
9. A data storage apparatus, comprising:
a memory; and
a processor, which is configured to:
receive a plurality of data items for storage in the memory, including at least first data items that are associated with a first data source and a first stream of logical block addresses (LBAs), and second data items that are associated with a second data source and a second stream of LBAs, wherein the first and second data items are interleaved with one another over time;
de-interleave the first data items from the second data items by identifying a respective data source with which each received data item is associated, wherein identifying the respective data source with which each received data item is associated comprises:
maintaining a database of LBAs that have been received from the first data source and the second data source; and
comparing each received LBA to LBAs in the database to dynamically determine to which stream each received LBA belongs; and
storing the de-interleaved first data items and the de-interleaved second data items in the memory, wherein the processor is configured to cache the first data items prior to storage in a first cache memory, and to cache the second data items prior to the storage in a second cache memory separate from the first cache memory;
wherein the processor is configured to identify the respective data source with which each received data item is associated by identifying received data items having sequential LBAs and whether received data items have sequential LBAs and further configured to determine if either of the first or second data streams spans across a boundary of a single command based on LBA sequentiality.
10. The apparatus according to claim 9, wherein the processor is configured to store the first data items in a first consecutive range of physical addresses of the memory, and to store the second data items in a second consecutive range of the physical addresses, different from the first range.
11. The apparatus according to claim 9, wherein the memory comprises multiple memory devices, and wherein the processor is configured to distribute the de-interleaved first data items across two or more of the memory devices, so as to enable parallel readout of the first data items.
12. The apparatus according to claim 9, wherein the processor is configured to initially store the received data items in the memory without de-interleaving, to retrieve the initially-stored first and second data items from the memory, and to de-interleave and store the retrieved first and second data items.
13. The apparatus according to claim 9, wherein the processor is configured to identify the data source with which a given data item is associated by deducing the data source from an advance notification of a storage command that comprises the given data item.
14. The apparatus according to claim 9, wherein the processor is configured to identify the data source with which a given data item is associated by deducing the data source from control information, which is sent together with the given data item and is indicative of the data source.
15. The apparatus according to claim 9, wherein the first data items belong to a first write command, and wherein the second data items belong to a second write command different from the first write command.
16. The apparatus according to claim 9, wherein the processor is configured to receive the first data items over a first physical port, and to receive the second data items over a second physical port, different from the first physical port.
17. A data storage apparatus, comprising:
an interface for communicating with a memory; and
a processor, which is configured to:
receive a plurality of data items for storage in the memory, including at least first data items that are associated with a first data source and second data items that are associated with a second data source, wherein the first and second data items are interleaved with one another over time;
wherein the first data items are associated with a first stream of logical block addresses (LBAs) and the second data items are associated with a second stream of LBAs;
de-interleave the first data items from the second data items by identifying a respective data source with which each received data item is associated;
maintain a database of LBAs that have been received from the first data source and the second data source;
compare each received LBA to LBAs in the database to dynamically determine to which stream each received LBA belongs and identify received data items having sequential LBAs;
determine if either of the first or second data streams spans across a boundary of a single command based on LBA sequentiality; and
store the de-interleaved first data items and the de-interleaved second data items in the memory, wherein storing the first data items comprises caching the first data items prior to storage in a first cache memory, and wherein storing the second data items comprises caching the second data items prior to the storage in a second cache memory separate from the first cache memory.
18. The apparatus according to claim 17, wherein the processor is configured to store the first data items in a first consecutive range of physical addresses of the memory, and to store the second data items in a second consecutive range of the physical addresses, different from the first range.
19. The apparatus according to claim 17, wherein the processor is configured to initially store the received data items in the memory without de-interleaving, to retrieve the initially-stored first and second data items from the memory, and to de-interleave and store the retrieved first and second data items.
20. The apparatus according to claim 17, wherein the memory comprises multiple memory devices, and wherein the processor is configured to distribute the de-interleaved first data items across two or more of the memory devices, so as to enable parallel readout of the first data items.
US13/539,632 2011-12-19 2012-07-02 Optimized execution of interleaved write operations in solid state drives Active 2034-02-22 US10203881B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/539,632 US10203881B2 (en) 2011-12-19 2012-07-02 Optimized execution of interleaved write operations in solid state drives

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161577125P 2011-12-19 2011-12-19
US13/539,632 US10203881B2 (en) 2011-12-19 2012-07-02 Optimized execution of interleaved write operations in solid state drives

Publications (2)

Publication Number Publication Date
US20130159626A1 US20130159626A1 (en) 2013-06-20
US10203881B2 true US10203881B2 (en) 2019-02-12

Family

ID=48611421

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/539,632 Active 2034-02-22 US10203881B2 (en) 2011-12-19 2012-07-02 Optimized execution of interleaved write operations in solid state drives

Country Status (1)

Country Link
US (1) US10203881B2 (en)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250954B2 (en) * 2013-01-17 2016-02-02 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US9323539B2 (en) * 2013-06-27 2016-04-26 Intel Corporation Constructing persistent file system from scattered persistent regions
CN105320462A (en) * 2014-07-08 2016-02-10 广明光电股份有限公司 Data access method for solid state driver
US9632927B2 (en) 2014-09-25 2017-04-25 International Business Machines Corporation Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes
TWI519951B (en) * 2014-11-03 2016-02-01 慧榮科技股份有限公司 Data storage device and flash memory control method
US10078582B2 (en) 2014-12-10 2018-09-18 International Business Machines Corporation Non-volatile memory system having an increased effective number of supported heat levels
US9779021B2 (en) * 2014-12-19 2017-10-03 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US10509770B2 (en) 2015-07-13 2019-12-17 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
US10324832B2 (en) 2016-05-25 2019-06-18 Samsung Electronics Co., Ltd. Address based multi-stream storage device access
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US11461010B2 (en) * 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US9886208B2 (en) 2015-09-25 2018-02-06 International Business Machines Corporation Adaptive assignment of open logical erase blocks to data streams
KR20170051563A (en) * 2015-10-29 2017-05-12 에스케이하이닉스 주식회사 Data storage device and operating method thereof
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US9959046B2 (en) 2015-12-30 2018-05-01 Samsung Electronics Co., Ltd. Multi-streaming mechanism to optimize journal based data storage systems on SSD
US10296264B2 (en) 2016-02-09 2019-05-21 Samsung Electronics Co., Ltd. Automatic I/O stream selection for storage devices
US10592171B2 (en) 2016-03-16 2020-03-17 Samsung Electronics Co., Ltd. Multi-stream SSD QoS management
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
US10628045B2 (en) * 2016-06-23 2020-04-21 Seagate Technology Llc Internal data transfer management in a hybrid data storage device
US10031689B2 (en) * 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
US10216417B2 (en) * 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
US11048624B2 (en) 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10698808B2 (en) 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US10769068B2 (en) * 2017-11-10 2020-09-08 International Business Machines Corporation Concurrent modification of shared cache line by multiple processors
US10878859B2 (en) 2017-12-20 2020-12-29 Micron Technology, Inc. Utilizing write stream attributes in storage write commands
US11803325B2 (en) 2018-03-27 2023-10-31 Micron Technology, Inc. Specifying media type in write commands
US11379359B2 (en) * 2020-02-11 2022-07-05 Micron Technology, Inc. Selecting data transfer units associated with a data stream for garbage collection

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668343B1 (en) * 1998-12-21 2003-12-23 Samsung Electronics Co., Ltd. Interleaving/deinterleaving device and method for communication system
US20050160342A1 (en) * 2003-12-09 2005-07-21 Stmicroelectronics N.V. Method and device of de-interleaving successive sequences of interleaved data samples
US6986019B1 (en) * 2003-04-21 2006-01-10 Maxtor Corporation Method and apparatus for detection and management of data streams
US7024596B2 (en) * 2001-11-12 2006-04-04 Broadcom Corporation Efficient address generation for interleaver and de-interleaver
US7392340B1 (en) * 2005-03-21 2008-06-24 Western Digital Technologies, Inc. Disk drive employing stream detection engine to enhance cache management policy
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US7644340B1 (en) * 2005-07-08 2010-01-05 Marvell International Ltd. General convolutional interleaver and deinterleaver
US20100042899A1 (en) * 2006-09-12 2010-02-18 Nxp, B.V. Deinterleaver
US20120069657A1 (en) 2010-09-20 2012-03-22 Seonghyeog Choi Memory device and self interleaving method thereof
US8145858B2 (en) 2009-07-09 2012-03-27 Kabushiki Kaisha Toshiba Interleave control device, interleave control method, and memory system
US8255615B1 (en) 2009-01-08 2012-08-28 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
US8332569B2 (en) 2009-08-06 2012-12-11 Samsung Electronics Co., Ltd. Nonvolatile memory system using data interleaving scheme
US8738841B2 (en) 2007-12-27 2014-05-27 Sandisk Enterprise IP LLC. Flash memory controller and system including data pipelines incorporating multiple buffers

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6668343B1 (en) * 1998-12-21 2003-12-23 Samsung Electronics Co., Ltd. Interleaving/deinterleaving device and method for communication system
US7024596B2 (en) * 2001-11-12 2006-04-04 Broadcom Corporation Efficient address generation for interleaver and de-interleaver
US6986019B1 (en) * 2003-04-21 2006-01-10 Maxtor Corporation Method and apparatus for detection and management of data streams
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US20050160342A1 (en) * 2003-12-09 2005-07-21 Stmicroelectronics N.V. Method and device of de-interleaving successive sequences of interleaved data samples
US7392340B1 (en) * 2005-03-21 2008-06-24 Western Digital Technologies, Inc. Disk drive employing stream detection engine to enhance cache management policy
US7644340B1 (en) * 2005-07-08 2010-01-05 Marvell International Ltd. General convolutional interleaver and deinterleaver
US20100042899A1 (en) * 2006-09-12 2010-02-18 Nxp, B.V. Deinterleaver
US8738841B2 (en) 2007-12-27 2014-05-27 Sandisk Enterprise IP LLC. Flash memory controller and system including data pipelines incorporating multiple buffers
US8255615B1 (en) 2009-01-08 2012-08-28 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
US8145858B2 (en) 2009-07-09 2012-03-27 Kabushiki Kaisha Toshiba Interleave control device, interleave control method, and memory system
US8332569B2 (en) 2009-08-06 2012-12-11 Samsung Electronics Co., Ltd. Nonvolatile memory system using data interleaving scheme
US20120069657A1 (en) 2010-09-20 2012-03-22 Seonghyeog Choi Memory device and self interleaving method thereof

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
H.Park, D. Shin "Buffer flush and address mapping scheme for flash memory solid-state disk" Journal of Systems Architecture 56, Apr. 4, 2010. *
J.Kang, J. Kim, C. Park, H. Park, J. Lee "A multi-channel architecture for high-performance NAND flash-based storage system" Journal of Systems Architecture 53, Feb. 1, 2007. *
S.Park, E. Seo, J. Shin, S. Maeng "Exploiting Internal Parallelism of Flash-based SSDs" IEEE Computer Architecture Letters, vol. 9, No. 1, Feb. 26, 2010. *
Y.Hu, H. Jiang, D. Feng, L. Tian, H. Luo, S. Zhang "Performance Impact and Interplay of SSD Parallelism through Advanced Commands, Allocation Strategy and Data Granularity" ICS'11, May 31-Jun. 4, 2011. *

Also Published As

Publication number Publication date
US20130159626A1 (en) 2013-06-20

Similar Documents

Publication Publication Date Title
US10203881B2 (en) Optimized execution of interleaved write operations in solid state drives
US10365832B2 (en) Two-level system main memory
US10649776B2 (en) System and method for prediction of multiple read commands directed to non-sequential data
TWI596603B (en) Apparatus, system and method for caching compressed data
US9586142B2 (en) Vertically integrated storage
US11379151B2 (en) Flow control of large sequential host read commands based on a queue threshold
US20140095555A1 (en) File management device and method for storage system
US10846226B2 (en) System and method for prediction of random read commands in virtualized multi-queue memory systems
US10732848B2 (en) System and method for predictive read of random data
US9507705B2 (en) Write cache sorting
US20160092361A1 (en) Caching technologies employing data compression
US11513723B2 (en) Read handling in zoned namespace devices
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
US10725781B1 (en) System and method for chain prediction of multiple read commands
US11010299B2 (en) System and method for performing discriminative predictive read
JP2020502606A (en) Store operation queue
US11126624B2 (en) Trie search engine
US11604735B1 (en) Host memory buffer (HMB) random cache access
US9047959B1 (en) Data storage device, memory control method, and electronic device with data storage device
US11132128B2 (en) Systems and methods for data placement in container-based storage systems
US10268386B2 (en) Data storage device including temporary storage locations

Legal Events

Date Code Title Description
AS Assignment

Owner name: APPLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KATZ, SHACHAR;GOLOV, OREN;SIGNING DATES FROM 20120620 TO 20120624;REEL/FRAME:028477/0092

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4