WO2013033121A1 - Simultaneous data transfer and error control to reduce latency and improve throughput to a host - Google Patents

Simultaneous data transfer and error control to reduce latency and improve throughput to a host Download PDF

Info

Publication number
WO2013033121A1
WO2013033121A1 PCT/US2012/052713 US2012052713W WO2013033121A1 WO 2013033121 A1 WO2013033121 A1 WO 2013033121A1 US 2012052713 W US2012052713 W US 2012052713W WO 2013033121 A1 WO2013033121 A1 WO 2013033121A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
host
error
storage device
blocks
Prior art date
Application number
PCT/US2012/052713
Other languages
French (fr)
Inventor
Christopher J. Sarcone
David G. Conroy
Jim Keller
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 JP2014527361A priority Critical patent/JP2014529132A/en
Priority to BR112014002172A priority patent/BR112014002172A2/en
Priority to KR1020147001814A priority patent/KR101598726B1/en
Priority to EP12756317.9A priority patent/EP2751688A1/en
Priority to AU2012302094A priority patent/AU2012302094B2/en
Priority to MX2013015121A priority patent/MX2013015121A/en
Priority to CN201280041033.XA priority patent/CN103748561B/en
Publication of WO2013033121A1 publication Critical patent/WO2013033121A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control

Definitions

  • the present embodiments relate to storage devices for computer systems. More specifically, the present embodiments relate to techniques for simultaneously transferring data from the devices and performing error control on the data to reduce latency and improve throughput to a host.
  • a modern computer system typically includes a motherboard containing a processor and memory, along with a set of peripheral components connected to the motherboard via a variety of interfaces.
  • a Serial Advanced Technology Attachment (SATA) interface may facilitate data transfer between a storage device (e.g., hard disk drive, optical drive, solid-state drive, hybrid hard drive, etc.) and the motherboard, while a Peripheral Component Interconnect Express (PCIe) bus may enable communication between the motherboard and a number of integrated and/or add-on peripheral components.
  • SATA Serial Advanced Technology Attachment
  • PCIe Peripheral Component Interconnect Express
  • the throughputs and/or latencies of the interfaces may affect the rates at which data is transferred between components in computer systems.
  • a SATA interface may enable the serial transfer of data between a storage device and a motherboard at rates of up to 6 Gbits/s. Prior to transmission of the data over the SATA interface, error detection and/or correction may be performed on the data, thus increasing the latency of the data transmission. Also, 8b/10b encoding of the transmitted data may cause additional overhead. As a result, the SATA interface may provide an effective throughput of approximately 550 MB/s.
  • SSD solid-state drive
  • read/write operations on the SSD may be performed in parallel on the flash chips, providing effective read/write speeds of over 700 MB/s on the SSDs.
  • the disclosed embodiments provide a system that transfers data from a storage device to a host.
  • the system includes a communication mechanism that receives a request to read a set of blocks from the host. " Next, upon reading each block from the set of blocks from the storage device, the communication mechanism transfers the block over an interface with the host.
  • the system also includes an error-detection apparatus that performs error detection on the block upon reading the block, and an error-correction apparatus that performs error correction on the block if an error is detected in the block.
  • the communication mechanism may then retransfer the block to the host after the error is removed from the block.
  • the block is retransferred to the host in an out-of-order fashion.
  • the block may be retransferred to the host after subsequent blocks have been transferred to the host without errors.
  • the system also includes an error-tracking apparatus that tracks the error correction of the block if the error is detected in the block.
  • the error-tracking apparatus may add each block containing an error to a data structure. After the error is removed from the block, the error-tracking apparatus may remove the block from the data structure. Finally, after all of the blocks have been transferred to the host without errors (e.g., after the data structure has been emptied), the communication mechanism transmits a completion signal to the host to complete the transfer of data to the host.
  • the blocks are transferred to the host over one or more lanes of the interface.
  • the interface is a Peripheral Component Interconnect Express (PCIe) interface.
  • PCIe Peripheral Component Interconnect Express
  • the storage device corresponds to a non- rotating storage device.
  • the storage device may be a solid-state drive (SSD). BRIEF DESCRIPTION OF THE FIGURES
  • FIG. 1 shows a schematic of a system in accordance with an embodiment.
  • FIG. 2 shows the transfer of data from a storage device to a host in accordance with an embodiment.
  • FIG. 3 shows a flowchart illustrating the process of transferring data from a storage device to a host in accordance with an embodiment.
  • FIG. 4 shows a computer system in accordance with an embodiment.
  • the computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing code and/or data now known or later developed.
  • the methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer- readable storage medium as described above.
  • a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium.
  • modules or apparatus may include, but are not limited to, an application-specific integrated circuit (ASIC) chip, a field-programmable gate array (FPGA), a dedicated or shared processor that executes a particular software module or a piece of code at a particular time, and/or other programmable-logic devices now known or later developed.
  • ASIC application-specific integrated circuit
  • FPGA field-programmable gate array
  • the hardware modules or apparatus When activated, they perform the methods and processes included within them.
  • the disclosed embodiments provide a method and system for transferring data within a computer system.
  • the computer system may include a storage device 142 such as a solid-state drive (SSD) and/or hybrid hard drive (HHD).
  • Storage device 142 may include one or more storage units 132- 140, such as flash chips in an SSD and/or disks in an array (e.g., Redundant Array of Independent Disks (RAID)).
  • RAID Redundant Array of Independent Disks
  • Storage device 142 may store data for a host 100 in the computer system. As shown in FIG. 1 , host 100 may include a processor 1 10 and a memory 120. In addition, host 100 may read and write data on storage units 132-140 by communicating with a storage device controller 122 for storage device 142 over a bus 130. For example, processor 1 10 may obtain data stored on storage device 142 by transmitting a request for the data over bus 130 to storage device controller 122. Storage device controller 122 may process the request by reading the data from one or more storage units 132- 140 and transferring the data over bus 1 30 to processor 1 10 and/or one or more locations in memory 120.
  • bus 130 may correspond to a Serial Bus
  • SATA Advanced Technology Attachment
  • SATA Advanced Technology Attachment
  • the data transfer rates over bus 130 may be limited by 8b/ 10b encoding overhead, as well as error correction and/or detection of the data prior to transmission of the data. Consequently, data may be transferred between storage device 142 and host 100 at an effective throughput of 550 MB/s or less.
  • storage device controller 122 may increase the speed of storage device 142 by implementing data striping and/or interleaving on multiple storage units 1 2- 140. In turn, storage device controller 122 may perform read and write operations in paral lel on storage units 1 32-140, thus reaching effective read/write speeds that exceed the data transfer rates of bus 130. In other words, bus 130 may represent the bottleneck in the transfer of data between host 100 and storage device 142.
  • the system of FIG. 1 facilitates the transmission of data between host 1 00 and storage device 142 by reducing the latency of bus 130.
  • storage device controller 122 may process requests for data from host 100 by transferring blocks of data to host 100 as soon as the blocks are read from storage units 132-140. In doing so, storage device controller 122 may send the newly read blocks to memory 120 over one or more lanes of an interface such as a Peripheral Component Interconnect Express (PCIe) interface.
  • PCIe Peripheral Component Interconnect Express
  • the system of FIG. 1 may also facilitate the transmission of data between host 100 and storage device 142 by increasing the bandwidth of bus 130.
  • storage device controller 122 may util ize a 128b/l 30b encoding to reduce overhead associated with the transfer of data over the interface.
  • storage device controller 122 may simultaneously perform error detection on the block. If an error is detected in the block, storage device controller 122 may perform error correction to remove the error while other blocks are being transferred to host 100. Once the error is removed, storage device controller 122 may retransfer the block to host 100 in an out-of-order fashion (e.g., after one or more other newly read blocks have been transferred). After all of the blocks have been transferred to the host without errors, storage device controller 122 may transmit a completion signal to the host to complete the request. By concurrently sending the blocks over a high-speed interface and performing error control on the blocks, storage device controller 122 may reduce the latency of data transmission from storage device 142 to host 100.
  • FIG. 2 shows the transfer of data from storage device 142 to host 100 in accordance with an embodiment.
  • the data transfer may be initiated by a request from host 100 to read a set of blocks 212-21 8 on storage device 142.
  • the request may then be transmitted over an interface 200 and received by a communication mechanism 202 in storage device controller 122.
  • the request may be sent from a root complex in host 100 over a PCIe interface to a PCle device in storage device controller 122.
  • storage device controller 122 may read blocks 212-21 8 from one or more storage units (e.g., flash chips, disks, etc.) in storage device 142.
  • storage device controller 122 may stripe and/or interleave blocks 212-21 8 on multiple flash chips of an SSD.
  • storage device controller 122 may increase the read speeds associated with storage device 142 by retrieving data for each block in parallel from the flash chips.
  • communication mechanism 202 may transfer the block to host 100 over interface 200.
  • communication mechanism 202 may transfer the block by issuing a set of write commands containing data for the block over a PCIe interface.
  • the write commands may be received by a root complex in host 100, forwarded to a memory controller, and used by the memory controller to update the corresponding block 220-226 of memory (e.g., memory 120 of FIG. 1 ) in host 100.
  • an error-detection apparatus 204 in storage device controller 122 may perform error detection on the block. For example, error-detection apparatus 204 may examine redundant data which is added to the block, such as Reed-Solomon code and/or other error- correcting code (ECC), to determine if the block contains an error. If the block is free of errors and successfully transferred to host 100, storage device controller 122 may be finished with reading and transferring the block.
  • ECC error-correcting code
  • an error-correction apparatus 206 in storage device controller 122 may perform error correction on the block to remove the error(s). For example, error-correction apparatus 206 may examine the redundant data to locate the error(s) and correct the error values. While error-correction apparatus 206 removes errors from the block, communication mechanism 202 may continue transferring other blocks read from storage device 142 to host 100, and error- detection apparatus 204 may perform error detection on the blocks.
  • error-correction apparatus 206 may utilize a stronger ECC to correct errors in the previously read block without substantially increasing the latency of the transfer of the blocks from storage device 142 to host 100.
  • communication mechanism 202 may retransfer the block to host 100 to facilitate the accurate transmission of data from storage device 142 to host 100. Because other blocks may be transferred to host 100 before the block is retransferred, the block may be retransferred in an out-of-order fashion. For example, storage device controller 122 may read blocks 212-218 in ascending order from storage device 142. As block 212 is transferred to host 100 over interface 200 (e.g., a PCle interface) and written to block 220, error-detection apparatus 204 may detect an error in block 212.
  • interface 200 e.g., a PCle interface
  • Error-correction apparatus 206 may then perform error correction on block 212 while blocks 214-218 are transferred to host 100 and written to blocks 222-226 without errors. Finally, after the error is removed from block 21 2 and blocks 214-21 8 have been successfully transferred to host 100, block 212 may be retransferred to host 100 and used to write over the erroneous data in block 220.
  • An error-tracking apparatus 208 in storage device controller 122 may additionally track errors that have been detected within the block. During the error correction, error-tracking apparatus 208 may add the block to a data structure 210 such as a queue and/or linked list. After all errors have been removed from the block (e.g., after one or more iterations between error-detection apparatus 204 and error-correction apparatus 206), error-tracking apparatus 208 may remove the block from data structure 210. Error-tracking apparatus 208 may thus maintain a list of blocks that have been transferred to host 100 with errors and that require retransfer to host 100 after error correction has been performed on the blocks.
  • error-tracking apparatus 208 may be used by storage device controller 122 to track the completion status of the request.
  • storage device controller 122 may maintain a separate list of blocks 212-218 requested by host 100. As each block is read and transferred to host 100, storage device controller 122 may remove the block from the list. On the other hand, the block may be added to data structure 210 if error-detection apparatus 204 detects errors in the block. After all blocks 212-21 8 have been read and transferred to host 100, the list may be emptied, while data structure 210 may contain blocks that require retransferring to host 100. Blocks may then be removed from data structure 210 as errors are removed from the blocks and the blocks are retransferred to host 100 without errors. Once the list and data structure 210 are both empty (e.g., after all blocks 212-21 8 have been transferred to host 100 without errors), storage device controller 122 may transmit a completion signal to host 100 to complete the request.
  • storage device controller 122 may utilize parallelism, out-of-order data transfers, and/or repeated data transfers over interface 200 to improve communication between host 100 and storage device 142.
  • storage device controller 122 may increase the bandwidth of data transfer to host 100 by reading data from multiple storage units in storage device 142 at the same time and sending the data in parallel over multiple lanes of interface 200.
  • storage device controller 122 may simultaneously transfer blocks to host 100 and perform error detection and/or correction on the blocks, thus reducing latency associated with transmission of data to host 100 after error control has been performed.
  • storage device controller 122 may repeat the transfer of the block to host 100 in an out-of-order fashion to provide host 100 with error-free data from storage device 142.
  • storage device controller 122 may be implemented in a variety of ways.
  • communication mechanism 202, error-detection apparatus 204, error-correction apparatus 206, and error-tracking apparatus 208 may be provided by a single circuit and/or component.
  • storage device controller 122 may utilize other combinations of integrated and discrete components, such as application- specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), microcontrollers, and/or m icroprocessors.
  • ASICs application- specific integrated circuits
  • FPGAs field-programmable gate arrays
  • microcontrollers microcontrollers
  • storage device controller 122 may be configured to perform reads and writes on a variety of storage devices, including SSDs, HHDs, and/or other types of rotating and/or non-rotating storage devices.
  • FIG. 3 shows a flowchart illustrating the process of transferring data from a storage device to a host in accordance with an embodiment.
  • one or more of the steps may be omitted, repeated, and/or performed in a different order. Accordingly, the specific arrangement of steps shown in FIG. 3 should not be construed as limiting the scope of the
  • a request to read a set of blocks from a host is received (operation 302).
  • the host may include a processor and/or memory in a computer system.
  • a block is transferred over an interface with the host upon reading the block from the storage device (operation 304).
  • the block may be read in parallel from a set of flash chips in an SSD and transferred over one or more lanes of a PCIe interface to a root complex.
  • the root complex may forward the block to a memory controller, and the memory controller may write the block to memory on the host.
  • operation 306 as the block is transferred to the host to detect an error in the block (operation 308). If no errors are detected in the block, processing for the block may be complete after the block is transferred to the host. If an error is detected, error correction is performed on the block to remove the error (operation 310). In addition, the error correction of the block is tracked (operation 312). For example, the block may be added to a data structure during error correction. After all errors have been removed from the block, the block may be removed from the data structure. After error correction has been performed on the block, the block is retransferred to the host (operation 314) in an out-of-order fashion ⁇ e.g., after subsequent blocks have been transferred to the host). [0041] Transfer of blocks to the host may continue (operation 316).
  • blocks may continue to be transferred until all requested blocks have been transferred to the host without errors. If block transfer is to continue, each newly read block is transferred to the host (operation 304). and error detection is simultaneously performed on the block (operation 306) to detect an error in the block (operation 308). If an error is detected, error correction is performed on the block (operation 310) and tracked (operation 312), and the block is subsequently retransferred to the host (operation 314) after the error is removed from the block. Finally, after all blocks have been transferred to the host without errors, a completion signal is transmitted to the host (operation 31 8) to conclude processing of the request.
  • FIG. 4 shows a computer system 400 in accordance with an embodiment.
  • Computer system 400 may correspond to an apparatus that includes a processor 402, memory 404, storage 406, and/or other components found in electronic computing devices.
  • Processor 402 may support parallel processing and/or multi-threaded operation with other processors in computer system 400.
  • Computer system 400 may also include input/output (I/O) devices such as a keyboard 408, a mouse 410, and a display 412.
  • I/O input/output
  • Computer system 400 may include functionality to execute various components of the present embodiments.
  • computer system 400 may include an operating system (not shown) that coordinates the use of hardware and software resources on computer system 400, as well as one or more applications that perform specialized tasks for the user.
  • applications may obtain the use of hardware resources on computer system 400 from the operating system, as well as interact with the user through a hardware and/or software framework provided by the operating system.
  • computer system 400 provides a system for transferring data from a storage device to a host.
  • the system may include a communication mechanism that receives a request to read a set of blocks from the host.
  • the communication mechanism may transfer the block over an interface with the host.
  • the system may also include an error-detection apparatus that performs error detection on the block upon reading the block, and an error- correction apparatus that performs error correction on the block if an error is detected in the block.
  • the communication mechanism may then retransfer the block to the host after the error is removed from the block.
  • the system may further include an error-tracking apparatus that tracks errors that have been detected within the block.
  • the error- tracking apparatus may add each block containing an error to a data structure. After the error is removed from the block, the error-tracking apparatus may remove the block from the data structure. Finally, after all of the blocks have been transferred to the host without errors ⁇ e.g., after the data structure has been emptied), the communication mechanism may transmit a completion signal to the host to complete the transfer of data to the host.
  • one or more components of computer system 400 may be remotely located and connected to the other components over a network. Portions of the present embodiments ⁇ e.g., communication mechanism, error- detection apparatus, error-correction apparatus, error-tracking apparatus, etc.) may also be located on different nodes of a distributed system that implements the embodiments. For example, the present embodiments may be implemented using a cloud computing system that transfers data between a remote storage device and a host. [0047]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

The disclosed embodiments provide a system that transfers data from a storage device to a host. The system includes a communication mechanism that receives a request to read a set of blocks from the host. Next, upon reading each block from the set of blocks from the storage device, the communication mechanism transfers the block over an interface with the host. The system also includes an error-detection apparatus that performs error detection on the block upon reading the block, and an error-correction apparatus that performs error correction on the block if an error is detected in the block. The communication mechanism may then retransfer the block to the host after the error is removed from the block.

Description

SIMULTANEOUS DATA TRANSFER AND ERROR CONTROL TO REDUCE LATENCY AND IMPROVE THROUGHPUT TO A HOST
Inventors: Christopher J. Sarcone, David G. Conroy, and Jim Keller
BACKGROUND
Field
[0001] The present embodiments relate to storage devices for computer systems. More specifically, the present embodiments relate to techniques for simultaneously transferring data from the devices and performing error control on the data to reduce latency and improve throughput to a host.
Related Art
[0002] A modern computer system typically includes a motherboard containing a processor and memory, along with a set of peripheral components connected to the motherboard via a variety of interfaces. For example, a Serial Advanced Technology Attachment (SATA) interface may facilitate data transfer between a storage device (e.g., hard disk drive, optical drive, solid-state drive, hybrid hard drive, etc.) and the motherboard, while a Peripheral Component Interconnect Express (PCIe) bus may enable communication between the motherboard and a number of integrated and/or add-on peripheral components.
[0003] In addition, the throughputs and/or latencies of the interfaces may affect the rates at which data is transferred between components in computer systems. For example, a SATA interface may enable the serial transfer of data between a storage device and a motherboard at rates of up to 6 Gbits/s. Prior to transmission of the data over the SATA interface, error detection and/or correction may be performed on the data, thus increasing the latency of the data transmission. Also, 8b/10b encoding of the transmitted data may cause additional overhead. As a result, the SATA interface may provide an effective throughput of approximately 550 MB/s.
[0004] At the same time, devices connected to the interfaces are operating at progressively faster speeds. For example, a solid-state drive (SSD) may implement data striping and/or interleaving on multiple flash chips. In turn, read/write operations on the SSD may be performed in parallel on the flash chips, providing effective read/write speeds of over 700 MB/s on the SSDs.
Consequently, data transfer between high-speed components in computer systems may be increasingly limited by the signaling capabilities of interfaces connecting the components.
[0005] Hence, what is needed is a mechanism for reducing the latencies and/or increasing the throughputs of interfaces between components in computer systems.
SUMMARY [0006] The disclosed embodiments provide a system that transfers data from a storage device to a host. The system includes a communication mechanism that receives a request to read a set of blocks from the host. "Next, upon reading each block from the set of blocks from the storage device, the communication mechanism transfers the block over an interface with the host. The system also includes an error-detection apparatus that performs error detection on the block upon reading the block, and an error-correction apparatus that performs error correction on the block if an error is detected in the block. The communication mechanism may then retransfer the block to the host after the error is removed from the block.
[0007] In some embodiments, the block is retransferred to the host in an out-of-order fashion. For example, the block may be retransferred to the host after subsequent blocks have been transferred to the host without errors.
[0008] In some embodiments, the system also includes an error-tracking apparatus that tracks the error correction of the block if the error is detected in the block. The error-tracking apparatus may add each block containing an error to a data structure. After the error is removed from the block, the error-tracking apparatus may remove the block from the data structure. Finally, after all of the blocks have been transferred to the host without errors (e.g., after the data structure has been emptied), the communication mechanism transmits a completion signal to the host to complete the transfer of data to the host.
[0009] In some embodiments, the blocks are transferred to the host over one or more lanes of the interface.
[0010] In some embodiments, the interface is a Peripheral Component Interconnect Express (PCIe) interface. [0011] In some embodiments, the storage device corresponds to a non- rotating storage device. For example, the storage device may be a solid-state drive (SSD). BRIEF DESCRIPTION OF THE FIGURES
[0012] FIG. 1 shows a schematic of a system in accordance with an embodiment.
[0013] FIG. 2 shows the transfer of data from a storage device to a host in accordance with an embodiment.
[0014] FIG. 3 shows a flowchart illustrating the process of transferring data from a storage device to a host in accordance with an embodiment.
[0015] FIG. 4 shows a computer system in accordance with an embodiment.
[0016] In the figures, like reference numerals refer to the same figure elements.
DETAILED DESCRIPTION
[0017] The following description is presented to enable any person skilled in the art to make and use the embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present disclosure. Thus, the present invention is not limited to the embodiments shown, but is to be accorded the widest scope consistent with the principles and features disclosed herein. [0018] The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. The computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing code and/or data now known or later developed.
[0019] The methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer- readable storage medium as described above. When a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium.
[0020] Furthermore, methods and processes described herein can be included in hardware modules or apparatus. These modules or apparatus may include, but are not limited to, an application-specific integrated circuit (ASIC) chip, a field-programmable gate array (FPGA), a dedicated or shared processor that executes a particular software module or a piece of code at a particular time, and/or other programmable-logic devices now known or later developed. When the hardware modules or apparatus are activated, they perform the methods and processes included within them.
[0021] The disclosed embodiments provide a method and system for transferring data within a computer system. As shown in FIG. 1 , the computer system may include a storage device 142 such as a solid-state drive (SSD) and/or hybrid hard drive (HHD). Storage device 142 may include one or more storage units 132- 140, such as flash chips in an SSD and/or disks in an array (e.g., Redundant Array of Independent Disks (RAID)).
[0022] Storage device 142 may store data for a host 100 in the computer system. As shown in FIG. 1 , host 100 may include a processor 1 10 and a memory 120. In addition, host 100 may read and write data on storage units 132-140 by communicating with a storage device controller 122 for storage device 142 over a bus 130. For example, processor 1 10 may obtain data stored on storage device 142 by transmitting a request for the data over bus 130 to storage device controller 122. Storage device controller 122 may process the request by reading the data from one or more storage units 132- 140 and transferring the data over bus 1 30 to processor 1 10 and/or one or more locations in memory 120.
[0023] Those skilled in the art will appreciate that data transfer rates between host 100 and storage device 142 may be limited by the latency and/or bandwidth of bus 130. For example, bus 130 may correspond to a Serial
Advanced Technology Attachment (SATA) bus that transfers data serially from storage device 142 to host 100 at rates of up to 6 Gbits/s. However, the data transfer rates over bus 130 may be limited by 8b/ 10b encoding overhead, as well as error correction and/or detection of the data prior to transmission of the data. Consequently, data may be transferred between storage device 142 and host 100 at an effective throughput of 550 MB/s or less.
[0024] On the other hand, storage device controller 122 may increase the speed of storage device 142 by implementing data striping and/or interleaving on multiple storage units 1 2- 140. In turn, storage device controller 122 may perform read and write operations in paral lel on storage units 1 32-140, thus reaching effective read/write speeds that exceed the data transfer rates of bus 130. In other words, bus 130 may represent the bottleneck in the transfer of data between host 100 and storage device 142.
[0025] In one or more embodiments, the system of FIG. 1 facilitates the transmission of data between host 1 00 and storage device 142 by reducing the latency of bus 130. For example, as discussed in further detail below with respect to FIG. 2, storage device controller 122 may process requests for data from host 100 by transferring blocks of data to host 100 as soon as the blocks are read from storage units 132-140. In doing so, storage device controller 122 may send the newly read blocks to memory 120 over one or more lanes of an interface such as a Peripheral Component Interconnect Express (PCIe) interface.
[0026] In one or more embodiments, the system of FIG. 1 may also facilitate the transmission of data between host 100 and storage device 142 by increasing the bandwidth of bus 130. For example, storage device controller 122 may util ize a 128b/l 30b encoding to reduce overhead associated with the transfer of data over the interface.
[0027] As a newly read block is transferred to host 100. storage device controller 122 may simultaneously perform error detection on the block. If an error is detected in the block, storage device controller 122 may perform error correction to remove the error while other blocks are being transferred to host 100. Once the error is removed, storage device controller 122 may retransfer the block to host 100 in an out-of-order fashion (e.g., after one or more other newly read blocks have been transferred). After all of the blocks have been transferred to the host without errors, storage device controller 122 may transmit a completion signal to the host to complete the request. By concurrently sending the blocks over a high-speed interface and performing error control on the blocks, storage device controller 122 may reduce the latency of data transmission from storage device 142 to host 100.
[0028] FIG. 2 shows the transfer of data from storage device 142 to host 100 in accordance with an embodiment. The data transfer may be initiated by a request from host 100 to read a set of blocks 212-21 8 on storage device 142. The request may then be transmitted over an interface 200 and received by a communication mechanism 202 in storage device controller 122. For example, the request may be sent from a root complex in host 100 over a PCIe interface to a PCle device in storage device controller 122.
[0029] To process the request, storage device controller 122 may read blocks 212-21 8 from one or more storage units (e.g., flash chips, disks, etc.) in storage device 142. For example, storage device controller 122 may stripe and/or interleave blocks 212-21 8 on multiple flash chips of an SSD. During subsequent reads of blocks 212-21 8, storage device controller 122 may increase the read speeds associated with storage device 142 by retrieving data for each block in parallel from the flash chips.
[0030] Once a block is read, communication mechanism 202 may transfer the block to host 100 over interface 200. For example, communication mechanism 202 may transfer the block by issuing a set of write commands containing data for the block over a PCIe interface. The write commands may be received by a root complex in host 100, forwarded to a memory controller, and used by the memory controller to update the corresponding block 220-226 of memory (e.g., memory 120 of FIG. 1 ) in host 100.
[0031] While the block is being transferred to host 1 00, an error-detection apparatus 204 in storage device controller 122 may perform error detection on the block. For example, error-detection apparatus 204 may examine redundant data which is added to the block, such as Reed-Solomon code and/or other error- correcting code (ECC), to determine if the block contains an error. If the block is free of errors and successfully transferred to host 100, storage device controller 122 may be finished with reading and transferring the block.
[0032] However, if one or more errors are detected in the block by error- detection apparatus 204, an error-correction apparatus 206 in storage device controller 122 may perform error correction on the block to remove the error(s). For example, error-correction apparatus 206 may examine the redundant data to locate the error(s) and correct the error values. While error-correction apparatus 206 removes errors from the block, communication mechanism 202 may continue transferring other blocks read from storage device 142 to host 100, and error- detection apparatus 204 may perform error detection on the blocks. Because the transfer of a newly read block is not dependent on the completion of error control for a previously read block, error-correction apparatus 206 may utilize a stronger ECC to correct errors in the previously read block without substantially increasing the latency of the transfer of the blocks from storage device 142 to host 100.
[0033] After error-correction apparatus 206 has removed the error(s) from the block, communication mechanism 202 may retransfer the block to host 100 to facilitate the accurate transmission of data from storage device 142 to host 100. Because other blocks may be transferred to host 100 before the block is retransferred, the block may be retransferred in an out-of-order fashion. For example, storage device controller 122 may read blocks 212-218 in ascending order from storage device 142. As block 212 is transferred to host 100 over interface 200 (e.g., a PCle interface) and written to block 220, error-detection apparatus 204 may detect an error in block 212. Error-correction apparatus 206 may then perform error correction on block 212 while blocks 214-218 are transferred to host 100 and written to blocks 222-226 without errors. Finally, after the error is removed from block 21 2 and blocks 214-21 8 have been successfully transferred to host 100, block 212 may be retransferred to host 100 and used to write over the erroneous data in block 220.
[0034] An error-tracking apparatus 208 in storage device controller 122 may additionally track errors that have been detected within the block. During the error correction, error-tracking apparatus 208 may add the block to a data structure 210 such as a queue and/or linked list. After all errors have been removed from the block (e.g., after one or more iterations between error-detection apparatus 204 and error-correction apparatus 206), error-tracking apparatus 208 may remove the block from data structure 210. Error-tracking apparatus 208 may thus maintain a list of blocks that have been transferred to host 100 with errors and that require retransfer to host 100 after error correction has been performed on the blocks.
[0035] In turn, error-tracking apparatus 208 may be used by storage device controller 122 to track the completion status of the request. For example, storage device controller 122 may maintain a separate list of blocks 212-218 requested by host 100. As each block is read and transferred to host 100, storage device controller 122 may remove the block from the list. On the other hand, the block may be added to data structure 210 if error-detection apparatus 204 detects errors in the block. After all blocks 212-21 8 have been read and transferred to host 100, the list may be emptied, while data structure 210 may contain blocks that require retransferring to host 100. Blocks may then be removed from data structure 210 as errors are removed from the blocks and the blocks are retransferred to host 100 without errors. Once the list and data structure 210 are both empty (e.g., after all blocks 212-21 8 have been transferred to host 100 without errors), storage device controller 122 may transmit a completion signal to host 100 to complete the request.
[0036] Consequently, storage device controller 122 may utilize parallelism, out-of-order data transfers, and/or repeated data transfers over interface 200 to improve communication between host 100 and storage device 142. First, storage device controller 122 may increase the bandwidth of data transfer to host 100 by reading data from multiple storage units in storage device 142 at the same time and sending the data in parallel over multiple lanes of interface 200. Next, storage device controller 122 may simultaneously transfer blocks to host 100 and perform error detection and/or correction on the blocks, thus reducing latency associated with transmission of data to host 100 after error control has been performed. Finally, after errors have been detected and removed from a block, storage device controller 122 may repeat the transfer of the block to host 100 in an out-of-order fashion to provide host 100 with error-free data from storage device 142.
[0037] Those ski lled in the art will appreciate that storage device controller 122 may be implemented in a variety of ways. For example, communication mechanism 202, error-detection apparatus 204, error-correction apparatus 206, and error-tracking apparatus 208 may be provided by a single circuit and/or component. Alternatively, storage device controller 122 may utilize other combinations of integrated and discrete components, such as application- specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), microcontrollers, and/or m icroprocessors. Furthermore, storage device controller 122 may be configured to perform reads and writes on a variety of storage devices, including SSDs, HHDs, and/or other types of rotating and/or non-rotating storage devices. [0038] FIG. 3 shows a flowchart illustrating the process of transferring data from a storage device to a host in accordance with an embodiment. In one or more embodiments, one or more of the steps may be omitted, repeated, and/or performed in a different order. Accordingly, the specific arrangement of steps shown in FIG. 3 should not be construed as limiting the scope of the
embodiments.
[0039] First, a request to read a set of blocks from a host is received (operation 302). The host may include a processor and/or memory in a computer system. Next, a block is transferred over an interface with the host upon reading the block from the storage device (operation 304). For example, the block may be read in parallel from a set of flash chips in an SSD and transferred over one or more lanes of a PCIe interface to a root complex. The root complex may forward the block to a memory controller, and the memory controller may write the block to memory on the host.
[0040] Error detection on the block is also simultaneously performed
(operation 306) as the block is transferred to the host to detect an error in the block (operation 308). If no errors are detected in the block, processing for the block may be complete after the block is transferred to the host. If an error is detected, error correction is performed on the block to remove the error (operation 310). In addition, the error correction of the block is tracked (operation 312). For example, the block may be added to a data structure during error correction. After all errors have been removed from the block, the block may be removed from the data structure. After error correction has been performed on the block, the block is retransferred to the host (operation 314) in an out-of-order fashion {e.g., after subsequent blocks have been transferred to the host). [0041] Transfer of blocks to the host may continue (operation 316). For example, blocks may continue to be transferred until all requested blocks have been transferred to the host without errors. If block transfer is to continue, each newly read block is transferred to the host (operation 304). and error detection is simultaneously performed on the block (operation 306) to detect an error in the block (operation 308). If an error is detected, error correction is performed on the block (operation 310) and tracked (operation 312), and the block is subsequently retransferred to the host (operation 314) after the error is removed from the block. Finally, after all blocks have been transferred to the host without errors, a completion signal is transmitted to the host (operation 31 8) to conclude processing of the request.
[0042] FIG. 4 shows a computer system 400 in accordance with an embodiment. Computer system 400 may correspond to an apparatus that includes a processor 402, memory 404, storage 406, and/or other components found in electronic computing devices. Processor 402 may support parallel processing and/or multi-threaded operation with other processors in computer system 400. Computer system 400 may also include input/output (I/O) devices such as a keyboard 408, a mouse 410, and a display 412.
[0043] Computer system 400 may include functionality to execute various components of the present embodiments. In particular, computer system 400 may include an operating system (not shown) that coordinates the use of hardware and software resources on computer system 400, as well as one or more applications that perform specialized tasks for the user. To perform tasks for the user, applications may obtain the use of hardware resources on computer system 400 from the operating system, as well as interact with the user through a hardware and/or software framework provided by the operating system. [0044] In one or more embodiments, computer system 400 provides a system for transferring data from a storage device to a host. The system may include a communication mechanism that receives a request to read a set of blocks from the host. Next, upon reading each block from the set of blocks from the storage device, the communication mechanism may transfer the block over an interface with the host. The system may also include an error-detection apparatus that performs error detection on the block upon reading the block, and an error- correction apparatus that performs error correction on the block if an error is detected in the block. The communication mechanism may then retransfer the block to the host after the error is removed from the block.
[0045] The system may further include an error-tracking apparatus that tracks errors that have been detected within the block. For example, the error- tracking apparatus may add each block containing an error to a data structure. After the error is removed from the block, the error-tracking apparatus may remove the block from the data structure. Finally, after all of the blocks have been transferred to the host without errors {e.g., after the data structure has been emptied), the communication mechanism may transmit a completion signal to the host to complete the transfer of data to the host.
[0046] In addition, one or more components of computer system 400 may be remotely located and connected to the other components over a network. Portions of the present embodiments {e.g., communication mechanism, error- detection apparatus, error-correction apparatus, error-tracking apparatus, etc.) may also be located on different nodes of a distributed system that implements the embodiments. For example, the present embodiments may be implemented using a cloud computing system that transfers data between a remote storage device and a host. [0047] The foregoing descriptions of various embodiments have been presented only for purposes of illustration and description. They are not intended to be exhaustive or to limit the present invention to the forms disclosed.
Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present invention.

Claims

What Is Claimed Is: 1 . A computer-implemented method for transferring data from a storage device to a host, comprising:
receiving a request to read a set of blocks from the host;
upon reading, from the storage device, each block from the set of blocks: transferring the block over an interface with the host; and simultaneously performing error detection on the block; and if an error is detected in the block:
performing error correction on the block to remove the error; and retransferring the block to the host after the error is removed from the block.
2. The computer-implemented method of claim 1 , further comprising: if the error is detected in the block, tracking the error correction of the block; and
transmitting a completion signal to the host after all of the blocks have been transferred to the host without errors.
3. The computer-implemented method of claim 2, wherein tracking the error correction of the block involves:
adding the block to a data structure; and
after the error is removed from the block, removing the block from the data structure.
4. The computer-implemented method of claim 1 , wherein the block is retransferred to the host in an out-of-order fashion.
5. The computer-implemented method of claim 1 , wherein the blocks are transferred to the host over one or more lanes of the interface.
6. The computer-implemented method of claim 1 , wherein the interface is a Peripheral Component Interconnect Express (PCIe) interface.
7. The computer-implemented method of claim 1 , wherein the storage device corresponds to a non-rotating storage device.
8. A system for transferring data from a storage device to a host, comprising:
a communication mechanism configured to:
receive a request to read a set of blocks from the host; and transfer each block from the set of blocks over an interface with the host upon reading the block from the storage device;
an error-detection apparatus configured to perform error detection on the block upon reading the block; and
an error-correction apparatus configured to perform error correction on the block if an error is detected in the block,
wherein the communication mechanism is further configured to retransfer the block to the host after the error is removed from the block.
9. The system of claim 8, further comprising: an error-tracking apparatus configured to track the error correction of the block if the error is detected in the block,
wherein the communication mechanism is further configured to transmit a completion signal to the host after all of the blocks have been transferred to the host without errors.
10. The system of claim 9, wherein tracking the error correction of the block involves:
adding the block to a data structure; and
after the error is removed from the block, removing the block from the data structure.
1 1. The system of claim 8, wherein the block is retransferred to the host in an out-of-order fashion.
12. The system of claim 8, wherein the blocks are transferred to the host over one or more lanes of the interface.
13. The system of claim 8, wherein the interface is a Peripheral Component Interconnect Express (PCIe) interface.
14. The system of claim 8, wherein the storage device corresponds to a non-rotating storage device.
15. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for transferring data from a storage device to a host, the method comprising:
receiving a request to read a set of blocks from the host;
upon reading, from the storage device, each block from the set of blocks: transferring the block over an interface with the host; and simultaneously performing error detection on the block; and if an error is detected in the block:
performing error correction on the block to remove the error; and retransferring the block to the host after the error is removed from the block.
16. The computer-readable storage medium of claim 15, the method further comprising:
if the error is detected in the block, tracking the error correction of the block; and
transmitting a completion signal to the host after all of the blocks have been transferred to the host without errors.
17. The computer-readable storage medium of claim 16, wherein tracking the error correction of the block involves:
adding the block to a data structure; and
after the error is removed from the block, removing the block from the data structure.
18. The computer-readable storage medium of claim 15, wherein the blocks are transferred to the host over one or more lanes of the interface.
19. The computer-readable storage medium of claim 15, wherein the interface is a Peripheral Component Interconnect Express (PCIe) interface.
20. The computer-readable storage medium of claim 15, wherein the storage device corresponds to a non-rotating storage device.
21. A computer system, comprising:
a host comprising:
a processor; and
a memory; and
a storage device controller comprising:
a communication mechanism configured to:
receive a request to read a set of blocks from the host; and transfer each block from the set of blocks over an interface with the host upon reading the block from the storage device; an error-detection apparatus configured to perform error detection on the block upon reading the block; and
an error-correction apparatus configured to perform error correction on the block if an error is detected in the block,
wherein the communication mechanism is further configured to retransfer the block to the host after the error is removed from the block.
22. The computer system of claim 21 , wherein the storage device controller further comprises an error-tracking apparatus configured to track the error correction of the block if the error is detected in the block, and
wherein the communication mechanism is further configured to transmit a completion signal to the host after all of the blocks have been transferred to the host without errors.
23. The computer system of claim 22, wherein tracking the error correction of the block involves:
adding the block to a data structure; and
after the error is removed from the block, removing the block from the data structure.
24. The computer system of claim 21 , wherein the blocks are transferred to the host over one or more lanes of the interface.
25. The computer system of claim 21 , wherein the interface is a Peripheral Component Interconnect Express (PCIe) interface.
26. The computer system of claim 21 , wherein the storage device corresponds to a non-rotating storage device.
PCT/US2012/052713 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to a host WO2013033121A1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2014527361A JP2014529132A (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to the host
BR112014002172A BR112014002172A2 (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve effective transmission rate to a central device
KR1020147001814A KR101598726B1 (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to a host
EP12756317.9A EP2751688A1 (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to a host
AU2012302094A AU2012302094B2 (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to a host
MX2013015121A MX2013015121A (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to a host.
CN201280041033.XA CN103748561B (en) 2011-09-02 2012-08-28 To reduce delay and improve the synchronous data transmission and error control to the handling capacity of host

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/224,714 US8656251B2 (en) 2011-09-02 2011-09-02 Simultaneous data transfer and error control to reduce latency and improve throughput to a host
US13/224,714 2011-09-02

Publications (1)

Publication Number Publication Date
WO2013033121A1 true WO2013033121A1 (en) 2013-03-07

Family

ID=46801657

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2012/052713 WO2013033121A1 (en) 2011-09-02 2012-08-28 Simultaneous data transfer and error control to reduce latency and improve throughput to a host

Country Status (9)

Country Link
US (2) US8656251B2 (en)
EP (1) EP2751688A1 (en)
JP (1) JP2014529132A (en)
KR (1) KR101598726B1 (en)
CN (1) CN103748561B (en)
AU (1) AU2012302094B2 (en)
BR (1) BR112014002172A2 (en)
MX (1) MX2013015121A (en)
WO (1) WO2013033121A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016510927A (en) * 2013-03-13 2016-04-11 インテル・コーポレーション Memory latency management

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8988800B1 (en) * 2009-09-15 2015-03-24 Marvell International Ltd. Error correction for storage devices
JP5542787B2 (en) * 2011-12-08 2014-07-09 シャープ株式会社 Image forming apparatus
US9323610B2 (en) 2014-01-30 2016-04-26 Sandisk Technologies Inc. Non-blocking commands
US9851901B2 (en) 2014-09-26 2017-12-26 Western Digital Technologies, Inc. Transfer of object memory references in a data storage device
KR102229024B1 (en) 2014-12-03 2021-03-17 삼성전자주식회사 Data storage device for self-detecting error and logging operation, and system having the same
DE102015209033A1 (en) * 2015-05-18 2016-11-24 Robert Bosch Gmbh Method and apparatus for providing a test response
US11588783B2 (en) * 2015-06-10 2023-02-21 Cisco Technology, Inc. Techniques for implementing IPV6-based distributed storage space
US20170141878A1 (en) * 2015-11-16 2017-05-18 Western Digital Technologies, Inc. Systems and methods for sending data from non-volatile solid state devices before error correction
US10768856B1 (en) * 2018-03-12 2020-09-08 Amazon Technologies, Inc. Memory access for multiple circuit components
CN114978441A (en) * 2022-06-14 2022-08-30 四川禹明光电技术有限公司 Monitoring and correcting system for optical fiber sensing synchronous transmission

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1286359A2 (en) * 2001-08-23 2003-02-26 Fujitsu Limited Memory controller for multilevel cell memory
US20070186040A1 (en) * 2004-02-03 2007-08-09 Matsushita Electric Industrial Co., Ltd. Memory card, data processor,memory card control method and memory card setting
WO2010129305A1 (en) * 2009-05-06 2010-11-11 Apple Inc. Low latency read operation for managed non-volatile memory

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57211177A (en) * 1981-06-23 1982-12-24 Hitachi Metals Ltd Picture reproducing device
JPS5819712A (en) * 1981-07-29 1983-02-04 Hitachi Ltd Data recording system
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
US5490148A (en) * 1993-12-15 1996-02-06 Motorola, Inc. Bit error rate estimator
US5694262A (en) * 1994-01-31 1997-12-02 Fujitsu Ltd. Method and apparatus for transferring data and making on-the-fly correction of errors
US5488702A (en) * 1994-04-26 1996-01-30 Unisys Corporation Data block check sequence generation and validation in a file cache system
JP4105819B2 (en) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ Storage device and memory card
JP4140344B2 (en) * 2002-10-30 2008-08-27 日本ビクター株式会社 Decoding device and computer program
JP2005141341A (en) * 2003-11-05 2005-06-02 Hitachi Ltd Memory control unit and memory control method
US7426672B2 (en) * 2005-04-28 2008-09-16 International Business Machines Corporation Method for implementing processor bus speculative data completion
US7793059B2 (en) * 2006-01-18 2010-09-07 Apple Inc. Interleaving policies for flash memory
CN101681282A (en) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) Be used to share, front end, the device of distributed raid, system and method
JP4609522B2 (en) * 2008-04-24 2011-01-12 パナソニック株式会社 Storage device
JP2010039779A (en) * 2008-08-05 2010-02-18 Sony Corp Reader/writer, information reading method, communication system, and communication method
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US8639870B2 (en) * 2011-01-14 2014-01-28 Oracle International Corporation String searching within peripheral storage devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1286359A2 (en) * 2001-08-23 2003-02-26 Fujitsu Limited Memory controller for multilevel cell memory
US20070186040A1 (en) * 2004-02-03 2007-08-09 Matsushita Electric Industrial Co., Ltd. Memory card, data processor,memory card control method and memory card setting
WO2010129305A1 (en) * 2009-05-06 2010-11-11 Apple Inc. Low latency read operation for managed non-volatile memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016510927A (en) * 2013-03-13 2016-04-11 インテル・コーポレーション Memory latency management

Also Published As

Publication number Publication date
EP2751688A1 (en) 2014-07-09
JP2014529132A (en) 2014-10-30
AU2012302094A1 (en) 2014-01-16
US9015557B2 (en) 2015-04-21
MX2013015121A (en) 2014-03-31
US20140195872A1 (en) 2014-07-10
CN103748561B (en) 2019-01-08
AU2012302094B2 (en) 2016-02-18
KR20140025595A (en) 2014-03-04
BR112014002172A2 (en) 2017-03-01
US8656251B2 (en) 2014-02-18
US20130061111A1 (en) 2013-03-07
CN103748561A (en) 2014-04-23
KR101598726B1 (en) 2016-02-29

Similar Documents

Publication Publication Date Title
US9015557B2 (en) Simultaneous data transfer and error control to reduce latency and improve throughput to a host
US9317382B2 (en) Storage device with error recovery indication
TWI814975B (en) Method and apparatus for storage media programming with adaptive write buffer release, and the system-on-chip thereof
KR101744465B1 (en) Method and apparatus for storing data
US7624324B2 (en) File control system and file control device
US10489069B2 (en) Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
US9841907B2 (en) Processing input/output requests using proxy and owner storage systems
CN103180816A (en) Usb-to-sata high-speed bridge
US20110282963A1 (en) Storage device and method of controlling storage device
CN110609659A (en) NVMeoF RAID implementation method for executing read command
CN112612639A (en) Method of operating memory system, method of operating host, and computing system
CN103034559B (en) PQ inspection module and the method for inspection based on RDMA architecture design
US9690484B2 (en) Minimizing delay periods when accessing mirrored disks
US20150169254A1 (en) Firmware bypass for medium-access commands
US11023400B1 (en) High performance DMA transfers in host bus adapters
CN117795466A (en) Access request management using subcommands
CN116340047A (en) Method and apparatus for driving redundant array of independent disks engine

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12756317

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: MX/A/2013/015121

Country of ref document: MX

ENP Entry into the national phase

Ref document number: 2012302094

Country of ref document: AU

Date of ref document: 20120828

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 20147001814

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2014527361

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2012756317

Country of ref document: EP

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112014002172

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 112014002172

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20140129