US20140281194A1 - Dynamically-sizeable granule storage - Google Patents

Dynamically-sizeable granule storage Download PDF

Info

Publication number
US20140281194A1
US20140281194A1 US13/839,595 US201313839595A US2014281194A1 US 20140281194 A1 US20140281194 A1 US 20140281194A1 US 201313839595 A US201313839595 A US 201313839595A US 2014281194 A1 US2014281194 A1 US 2014281194A1
Authority
US
United States
Prior art keywords
granule
data
storage
data blocks
storage area
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.)
Abandoned
Application number
US13/839,595
Inventor
Mark A. Gaertner
Brian Thomas Edgar
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.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
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 Seagate Technology LLC filed Critical Seagate Technology LLC
Priority to US13/839,595 priority Critical patent/US20140281194A1/en
Assigned to SEAGATE TECHNOLOGY LLC reassignment SEAGATE TECHNOLOGY LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EDGAR, BRIAN THOMAS, GAERTNER, MARK A.
Priority to US13/973,491 priority patent/US9384793B2/en
Priority to KR1020140024425A priority patent/KR101910840B1/en
Priority to JP2014050342A priority patent/JP5941489B2/en
Priority to CN201410093915.1A priority patent/CN104049908B/en
Priority to EP14160349.8A priority patent/EP2778891A1/en
Publication of US20140281194A1 publication Critical patent/US20140281194A1/en
Priority to US15/177,022 priority patent/US9740406B2/en
Priority to KR1020160084281A priority patent/KR20160086299A/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories

Definitions

  • Some data storage systems such as those containing rotating magnetic storage, magnetic tape, and/or rotating optical storage, suffer from relatively high latency times (e.g., in the milliseconds range or more) to reach a randomly-targeted location within physical storage. Once the targeted location is reached (e.g., via a seek operation), data can be transferred (read or written) relatively sequentially from the physical storage at a reasonably high rate.
  • One of many challenges relating to improving data transfer rates is managing the transfer requests of a host within the constraints of physical location and logical ordering of the requested data within the data storage system.
  • Embodiments described and claimed herein address the foregoing problems by efficiently segregating dynamically mapped data throughout multiple levels of physical storage within a data storage system. Such efficient data segregation can reduce deviation in the behavior of logically sequential data accesses to the physical storage media, especially in the presence of shingled magnetic recording regions.
  • a data storage system includes data storage and a random access memory.
  • a sorting module is communicatively coupled to the random access memory and sorts data blocks of write data received in the random access memory of the data storage.
  • a storage controller is communicatively coupled to the random access memory and the data storage and being configured to write the sorted data blocks into one or more individually-sorted granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to a subset of logical block addresses.
  • a method and processor-implemented process provide for sorting data blocks of write data received in a random access memory of data storage.
  • the method and processor-implemented process write the sorted data blocks into one or more individually-sorted granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to a subset of logical block addresses.
  • FIG. 1 illustrates an example data storage system for staging sorted data in a staging area of intermediate latency storage.
  • FIG. 2 illustrates an example storage medium with one or more staging areas for chunks of sorted data.
  • FIG. 3 illustrates an example data storage system with hierarchical storage based on varying levels of generally increasing data organization.
  • FIG. 4 illustrates an example staging area in which stale data is identified and marked as stale.
  • FIG. 5 illustrates an example generation of a chunk of sorted data in a staging area.
  • FIG. 6 illustrates an example sorting of a subset of data from a set of chunks for use external to a staging area.
  • FIG. 7 illustrates example operations for chunking data blocks into a staging area.
  • FIG. 8 illustrates example operations for re-sorting data blocks from a staging area to other intermediate storage.
  • FIG. 9 illustrates an example granule storage area into which sorted data blocks are recorded in individual granules.
  • FIG. 10 illustrates an example granule storage area into which sorted data blocks are compacted into individual granules.
  • FIG. 11 illustrates an example granule storage area in a band of shingled magnetic recording into which sorted data blocks are recorded into individual granules.
  • FIG. 12 illustrates an example granule storage area in a band of shingled magnetic recording into which sorted data blocks are sorted into an individual granule.
  • FIG. 13 illustrates example levels of storage including a random access memory, a staging area, a granule storage area, and a destination storage area.
  • FIG. 14 illustrates other example levels of storage including a random access memory, a staging area, a granule storage area, and a destination storage area.
  • FIG. 15 illustrates example operations for storing data blocks into a granule storage area.
  • FIG. 16 illustrates example operations for storing data blocks into a destination storage area.
  • FIG. 1 illustrates an example data storage system 100 for staging sorted data in a staging area 102 of intermediate latency storage.
  • the data storage system 100 represents a hard disc drive having one or more magnetic storage discs 104 , although other embodiments of such a storage medium may be in the form of an optical disc reader (e.g., a CD reader/writer or a DVD reader/writer), a tape drive, a solid state drive (SSD), etc.
  • the data storage system 100 communicates with a host device 106 , which sends write data to and receives read data from the data storage system 100 .
  • the host device 106 can write a data file to the data storage system 100 , which records the data file on the magnetic storage disc 104 and can later read the data file from the data storage system 100 .
  • user data is often structured in terms of variable length files, which can be constituted from one or more fixed length data blocks.
  • the data blocks are addressable by the host device 106 using logical block addresses (LBAs).
  • LBAs logical block addresses
  • the data storage system 100 includes a write channel having data write circuitry 108 , which encodes the data blocks according to an encoding scheme used by the data storage system 100 .
  • One or more data blocks may be combined with redundancy information to form self-contained codewords for error detection and/or correction.
  • the data write circuitry 108 writes the data blocks through a write controller 110 , which determines the physical location and ordering of the data blocks written by the write controller 110 to one or more levels of data storage within the data storage system 100 .
  • a data block is written to the storage disc 104
  • the data block is written to a physical block address (PBA) on the storage disc 104 .
  • PBA physical block address
  • the mapping between LBA and PBA can change over time and is referred to as “dynamic mapping.”
  • the write controller 110 manages the dynamic mapping between LBA and PBA, even as the mapping changes over time.
  • Memory 116 may store firmware instructions that are processed by the write controller 110 to implement dynamic mapping, sorting, relocation, overprovisioning, and other functions performed by the write controller 110 .
  • groups of data blocks having consecutive logical addresses can be recorded in approximately consecutive physical locations on the storage disc 104 to achieve a lower latency for successive data accesses after the seek operation for certain sets of data.
  • dynamic mapping can be intelligently extended to support multiple levels of physical storage within the data storage system 100 , wherein different levels of physical storage can provide different average access latencies.
  • a data storage area 112 of the storage disc 104 referred to as “destination storage,” represents a physical storage area generally intended for long term storage. Although data in destination storage is intended for long term storage, such data may still be moved from destination storage locations to other destination storage locations over time.
  • a data storage area 114 of the storage disc 104 referred to as “granule storage,” represents intermediate physical storage in which data stored in each dynamically-sizeable granule is constrained to a certain subset of logical block addresses (LBAs).
  • LBAs logical block addresses
  • An example granule size may be about 1 MB, although other sizes may be employed. In fact, granules may be of many different sizes on the same disc surface or even within the same shingled media recording band.
  • a data storage area 102 of the storage disc 104 represents a physical storage area in which groups of logical blocks can be incrementally written and rewritten in an increasingly contiguous LBA order.
  • data blocks can be initially received by the data storage system 100 from the host device 106 in an arbitrary or sparse LBA order (e.g., the data blocks are received from diverse areas in logical space). Such data blocks may be written to the staging area in a physically contiguous manner.
  • Random access memory 118 also represents a storage area of the data storage system 100 . Its random access characteristics and low access latency provide a storage area appropriate for sorting data blocks according to certain constraints (e.g., LBA ordering, PBA ordering, most-frequently-accessed order, prioritized data order, etc.).
  • data is received into the random access memory 118 , sorted according to an LBA order, and written to the staging area in groups of data called “chunks,” which are sized in association with the available amount of the random access memory 118 .
  • An example chunk size may be 64 MB, although other sizes may be employed.
  • Data read and recovery circuitry 120 can read the data (with appropriate error correction coding) from the magnetic storage disc 104 (or from the random access memory 118 ) and use the error correction coding to detect and/or correct errors (such as data errors caused by scratch damage on the magnetic storage disc 104 ). The data read and recovery circuitry 120 then transfers the read data (which may be corrected read data) to the host device 106 .
  • the sorting of data blocks received in the random access memory 118 may be accomplished in a variety of ways. In one embodiment, the sorting may be accomplished by a processor or other control circuitry while the data blocks reside in the random access memory 118 . In an alternative embodiment, the sorting may be accomplished during transfer of the data blocks to and/or from the random access memory 118 , such as by using a scatter-gather DMA (direct memory access) transfer scheme. Other sorting techniques and configurations may be employed.
  • a staging area may be a non-shingled or shingled magnetic recording region.
  • each of the cells on a magnetized medium are of a sufficiently large size relative to the size of the write pole to allow the write pole to write data to the cells without overwriting data in any surrounding cells.
  • data may be randomly written to available cells anywhere on the magnetic medium.
  • cell size decreases. A commensurate decrease in the size of the write pole is difficult because a strong write field gradient provided by a larger write pole is often required to shift the polarity of the cells on the magnetized medium.
  • writing data to smaller cells on the magnetized medium using the relatively larger write pole may affect the polarization of adjacent cells (i.e., overwriting the adjacent cells).
  • One technique for adapting the magnetic medium to utilize smaller cells while preventing adjacent data being overwritten during a write operation is shingled magnetic recording (SMR).
  • SMR utilizes a large strong write field generated by the write pole.
  • One constraint of shingled magnetic recording is that when data is written to the magnetic media, it is written in sequentially increasing or decreasing radius tracks.
  • the strong write field affects two or more adjacent tracks including the track being written to and one or more previously-written tracks. As a result, in order to change any data cell within the shingled data, all of the shingled data is re-written in the selected sequential write order.
  • one or more isolation regions may be created within with shingled data.
  • the isolation regions also referred to as guard tracks, are groupings of one or more adjacent data tracks within the shingled data that are unavailable for recording.
  • the isolation regions define separate data bands (i.e., groups of logical sectors bounded by guard tracks) of shingled data.
  • each guard track is wide enough to prevent any overwriting across the guard track.
  • the guard tracks create bands of shingled data, including one or more adjacent tracks, that are isolated from other bands. Consequently, a single band of shingled data is rewritten (rather than all of the shingled data on the disk) when one or more cells within the band are changed.
  • re-writing one or more cells of data in a data band still typically entails multiple steps, including: reading the entire data band, writing data of the data band into a media scratch pad (e.g., a temporary cache) on a disc, reading the data from the media scratch pad, and re-writing the data to the original data band with the one or more changed cells. Consequently, shingled data write operations are typically more time consuming and less power efficient than un-shingled data write operations.
  • a media scratch pad e.g., a temporary cache
  • Redundancy information can be interlaced with the written data to create multi-logical-block-sized codewords.
  • the redundancy information could be included each time data is written to the staging area, or the redundancy information could be recorded at predictable intervals, such that incremental redundancy could be maintained if the staging area is appended a few times before receiving enough appended data to reach the predictable location where redundancy information is to reside.
  • the writing of data to the staging area of FIG. 1 (or other staging area) can be paced to perform those processes that free staging area space before those processes that consume staging area space. In this manner, staging area space is more likely to be available for new write data blocks.
  • FIG. 2 illustrates an example storage medium 200 with one or more staging areas (such as staging area 202 ) for chunks of sorted data.
  • a surface of a data storage disc 204 includes a number of concentric tracks 206 .
  • the tracks 206 are distributed on the surface of the storage 204 and may take any number of different forms including without limitation conventional pre-shingled continuous recording, discrete track recording, and shingled magnetic recording.
  • a single storage disc surface may support both conventional pre-shingled continuous recording and shingled magnetic recording, for example. Further, the same area of a single disc surface may be used for both conventional pre-shingled continuous recording and shingled magnetic recording at different times.
  • different storage disc surfaces may be dedicated to different recording types (e.g., a surface of one storage disc may used for one type of recording and a surface of the same storage disc or another storage disc may be used for a different type of recording).
  • a conventional continuous recording pattern is formed by the write head writing data along tracks designated by servo information stored in radial servo burst sectors (such as servo burst sectors 208 ).
  • the write head re-writes portions of the track as it writes data to the storage medium, potentially resulting in slight variations in the bounds of individual tracks over time.
  • discrete track recording patterns include concentric discrete tracks with non-magnetic inter-track isolation, wherein data is recorded continuously along each isolated track. As such, the write head writes data in consistent sets of discrete target tracks during a write operation. Read and write access to these types of recording areas may differ between them, and further, the segregation and ordering of the data blocks along the tracks can also influence the access latency.
  • Shingled magnetic recording employs write poles that record wider tracks than that which is required by the read sensors.
  • a writing operation typically results in the overwriting of adjacent tracks in a given direction. Accordingly, the write tracks are written to overlap each other in the given direction, leaving narrow tracks of data that can be read correctly by the read heads. As such, the overlapping tracks are written in groups or bands of tracks, which are isolated or otherwise separate from other tracks.
  • each track 206 is divided into slices called data wedges or sectors 210 between the servo burst sectors 208 .
  • Servo burst sectors include data for maintaining accurate positioning of a read/write head over a target track and are positioned at predetermined spaced locations around the storage disc 204 .
  • the read/write head reads the servo information containing an address within the servo bursts sectors 208 and sends the servo information back to a servo control system.
  • the servo control system checks whether the address in the servo information read from the servo burst sector 208 corresponds to the target track location. If the address does not correspond to the target track location, the servo control system adjusts the position of the read/write head to the correct track location as part of a seek operation.
  • each track 206 includes discrete data sectors 210 containing stored user information.
  • the number of data sectors 210 contained on a particular track depends, in part, on the length (e.g., circumference) of the track.
  • each data sector may also include other data to help identify and process the user information (e.g., error detection and correction coding).
  • one or more portions of the storage disc 204 are reserved for use as a staging area 202 , a type of intermediate storage.
  • the staging area 202 is shown in FIG. 2 as being a circumferential grouping of tracks 206 located proximate to the outer diameter of 212 of the storage disc 204 .
  • the staging area 202 is shown in FIG. 2 as an example, and it should be understood that the staging area 202 may be written on any other area (radial or circumferential) of the storage disc 204 .
  • One characteristic of tracks proximate to the outer diameter 212 is that they can be read with a higher sequential data rate than tracks proximate to the inner diameter 214 of the storage disc 204 .
  • the storage disc 204 also includes one or more granule storage areas 216 , a type of intermediate storage, wherein each dynamically-sizeable granule is constrained to a certain subset of logical block addresses (LBAs).
  • the storage disc 204 also includes destination storage areas 218 , where data blocks are typically recorded for longer term storage than the other areas of the storage disc 204 .
  • the destination storage areas 218 are characterized by a non-dynamic LBA-to-PBA mapping, at least for certain confined address ranges, although other embodiments may include destination storage areas with some use of dynamic mapping.
  • one or more of the staging areas 202 , the granule storage areas 216 , and the destinations storage areas 218 may be shingled magnetic recording regions, non-shingled magnetic recording regions, or regions of other recording formats.
  • write data may take a variety of paths to the various storage areas (e.g., to random access memory, to a staging area, to a granule storage area, to a destination storage area, etc.).
  • a host device writes data blocks to a random access memory, where the data blocks may or may not be initially sorted. If the random access memory is non-volatile, the data blocks may accumulate in the random access memory to service host device read requests, without being written to other non-volatile storage media. Alternatively, data blocks may be written from the random access memory to a staging area (in individual sorted sets or as unsorted data blocks) or to other storage.
  • FIG. 3 illustrates an example data storage system 300 with hierarchical storage based on varying levels of generally increasing data organization.
  • a storage controller 302 manages reading and writing of data blocks to various storage areas, whether to random access memory 304 , to intermediate storage (e.g., a staging area 306 or a granule storage area 308 ) of data storage 310 , or to destination storage (e.g., a destination storage area 312 ) of data storage 310 .
  • intermediate storage e.g., a staging area 306 or a granule storage area 308
  • destination storage e.g., a destination storage area 312
  • the storage controller 302 may dynamically adjust the role of a given storage area over time. For example, a staging area may be used as a destination storage area at various times of operation.
  • the storage controller 302 receives data blocks of new write data, responsive to one or more write commands from a host device.
  • the received data blocks may be received in arbitrary LBA-order—some write commands may be more LBA-ordered while other write commands may be less LBA-ordered, and some combinations of write commands may be targeted at substantially diverse areas of the logical address space.
  • the storage controller 302 receives the data blocks into random access memory 304 , sorts the data blocks, and writes the sorted data blocks to the staging area 306 in a relatively contiguous physical space in the staging area 306 .
  • relatively contiguous refers to a read/write operation, potentially associated with multiple read/write commands, from/to a physical storage area in which a single seek operation (or few seek operations) are used to complete the read/write operation and data blocks are read from/written to sequential PBAs on one or more tracks. It should be understood that the skipping of damaged, stale, or otherwise “bad” PBAs in the data storage 310 or the reading/writing of data across nearby multiple tracks of the data storage 310 does not preclude a read/write operation from being considered “relatively contiguous.”
  • the storage controller 302 can read data stored in the staging area 306 using a relatively contiguous read operation.
  • the read data is transferred to the random access memory 304 , sorted in random access memory 304 in a predefined order (e.g., in LBA order, in most-frequently-accessed order, etc.), and then written to the staging area 306 or to another storage area or the host device.
  • the amount of data read, sorted, and written to the staging area 306 is referred to as a “chunk” and is the same as the size of the random access memory 304 , although other sizes may be used (e.g., different portions of the random access memory 304 may be used for different purposes or for different “chunks”).
  • the read and sorted data may alternatively be transferred to a host device in response to a read command or transferred to another storage area (e.g., flash memory, a granule storage area 308 or a destination storage area 312 ).
  • the storage controller 302 When the storage controller 302 writes the sorted data to the staging area 306 , the storage controller 302 typically writes the sorted data to a new location in the staging area 306 , rather than overwriting the physical storage of the previously read data with the newly sorted copy of the data.
  • the physical storage containing the previously read data may be marked as stale and reclaimed for use with new write data.
  • the reclamation operation may be referred to as “garbage collection” and may allow for multiple sorted and unsorted versions of the same data to reside in the staging area 306 or other storage areas of the data storage 310 at the same time.
  • the previous read PBAs may be overwritten with the newly sorted copy of the data. It should also be understood that the reading, sorting, and writing of data recorded in the staging area 306 (or other storage areas) may be repeated multiple times (e.g., to increase the correlation between logical and physical ordering for a particular chunk of data).
  • the processing of write operations by the storage controller 302 may be performed in an order that favors creating more room within the staging area to receive new write data.
  • host commands or data storage system operations that generate more stale PBAs in the staging area or that generate more regions of relatively contiguous stale PBAs in the staging area may be performed before host commands or data storage system operations that consume PBAs in the staging area.
  • host commands to delete data blocks may be prioritized ahead of new data write commands.
  • data storage system operations that transfer data blocks from a staging area to a granule storage area or a destination storage area may be prioritized ahead of new data write commands. In this manner, the data storage system can prevent or reduce the likelihood that a staging area is too full to accept new write data.
  • FIG. 4 illustrates an example staging area 400 in which stale data is identified and marked as stale.
  • stale data is “marked” as stale because there is no longer an LBA that translates to the corresponding PBA storing the stale data.
  • FIG. 4 depicts a stale data marking module 406 for illustrative purposes.
  • the stale data marking module 406 is typically a functional component of the dynamic mapping subsystem that re-maps the LBA to the PBA containing the fresh data and deletes the mapping of the same LBA to the stale PBA.
  • Another aspect of the stale data marking module 406 may include a counter that records the number of stale locations in a physical subdivision.
  • the staging area 400 receives data blocks from a storage controller, which records the blocks in a relatively contiguous manner.
  • the data is shown as written to the staging area 400 in ten successive write operations 402 , from write operation 1 to write operation 10.
  • the write operations 402 designate separate media accesses resulting in the recording of individual data blocks 404 (each marked in FIG. 4 with a corresponding LBA).
  • the write operation 1 writes data blocks associated with LBAs 73, 21, and 94 to the staging area 400 in a relatively contiguous (e.g., physically sequential) manner
  • the write operation 2 writes data blocks associated with LBAs 24 and 92 to the staging area 400 in a relatively contiguous (e.g., physically sequential) manner.
  • the storage controller Responsive to each write operation, the storage controller records an LBA-to-PBA mapping for each data block. In this manner, the storage controller can retrieve a data block requested by the host device from its PBA according to its corresponding LBA.
  • the associated dynamic mapping information may be stored in a storage controller-accessible dynamic mapping table (not shown).
  • a data block associated with LBA 46 is written twice, once in write operation 4 and again in write operation 5. Accordingly, the data block storing the data written in the write operation 4 is now stale, as a more up-to-date data block has been written by the write operation 5. Further, the storage controller updates the dynamic mapping between LBA 46 and the new PBA associated with the write operation 5.
  • a stale data marking module 406 detects the new write of LBA 46 and therefore marks the data block from the write operation 4 as stale (e.g., LBA 46 no longer maps to the PBA storing the stale data block).
  • Write operations 7 and 8 are also shown as writing the same LBA 17. Accordingly, the stale data marking module 406 marks the data block for LBA 17 written by write operation 7 as stale and updates the dynamic mapping between LBA 17 and the new PBA associated with the write operation 8.
  • stale data blocks are ignored or otherwise managed to preclude their transfer to random access memory for sorting and subsequent re-writing to the host device or the storage media.
  • physical data blocks are marked as stale, the physical data blocks can be reclaimed and reused for new data blocks, including for newly sorted chunks.
  • all of the write data or one or more portions of the write data shown in the staging area 400 may also be retained in a random access memory (not shown in FIG. 4 ). As such, copies of the most recently written data from the host device may be maintained in the random access memory as well as the staging area. In this manner, it is unnecessary for the storage controller to read from the staging area in order to gain access to the most recently written data in the random access memory.
  • FIG. 5 illustrates an example generation of a chunk 500 of sorted data in a staging area 502 .
  • the storage controller when the host device writes data blocks to the storage controller, the storage controller writes the data blocks directly to the random access memory 504 , as shown at 505 , where it can be sorted and copied to the staging area 502 while still maintaining a sorted copy in the random access memory.
  • the storage controller can read an unsorted sequence of data blocks from the staging area 502 into random access memory 504 , shown as data blocks at 506 .
  • a sorting module 508 sorts the data according to LBA order, shown as data blocks at 510 , although it should be understood that the sorting module 508 may sort the data blocks according to other ordering preferences, including most-frequently-accessed, most-recently-accessed, etc. Various sorting methods may be used to sort the data blocks within the random access memory 504 .
  • the sorted data (“the chunk”) is then written in a relatively contiguous manner to another location within the staging area 502 , to the host device, or to other intermediate or destination storage areas of the storage media. As previously discussed, in an alternative embodiment, the sorted chunk may be re-written over the previously read data, although FIG. 5 shows the chunk 500 as written to a separate location in the same staging area 502 .
  • the storage controller updates the dynamic mapping information to reflect the new relationships between the LBAs (21, 24, 73, and 94) and their new PBAs within the staging area 502 .
  • a stale data marking module marks the previous PBAs that stored the previous data blocks for the same LBAs as stale. In this manner, those PBAs may be reclaimed to be re-used for new write data.
  • the transfer of multiple, sorted data blocks per media access to/from the staging area amortizes the latencies between relatively contiguous physical media accesses across a larger number of data blocks.
  • FIG. 6 illustrates an example sorting of a subset of data 600 from a set of chunks 602 for use external to a staging area 604 .
  • a storage controller reads multiple sorted sets of data blocks (e.g., multiple chunks via multiple read accesses) from the staging area 604 into random access memory 606 (e.g., the entire memory 606 or a portion thereof). Note: Multiple extents of data may be read per media access to amortize the latencies between media accesses across multiple extents.
  • a sorting module 608 sorts the read data blocks received in the random access memory 606 according to a predefined order (e.g., in LBA order in FIG. 6 ).
  • Various sorting methods such as an N-ary merge sort that reads from the head of each sorted chunk, may be used to sort the data blocks received in the random access memory 606 .
  • the newly sorted chunk at 610 is written to other storage (e.g., to other intermediate storage, such as another staging area or a granule storage area, or to destination storage area) or to a host device. Responsive to the writing of the new chunk 612 to other storage, the storage controller updates the dynamic mapping information to reflect the new relationships between the LBAs (1, 2, 11, and 16) and their new PBAs within the other storage.
  • the data blocks at 614 represent unsorted, un-chunked data blocks that are still recorded in the staging area 604 .
  • a stale data marking module marks the previous PBAs that stored the previous data blocks for the same LBAs as stale. In this manner, those PBAs may be reclaimed to be reused for new write data. In an alternative embodiment, however, data blocks in the staging area 604 corresponding to data blocks written to other storage need not be marked as stale.
  • multiple copies of the data blocks may be recorded in multiple physical locations within the data storage system (e.g., within a staging area, within a flash memory cache, within random access memory, within a granule storage area, within a destination storage area) and the storage controller can determine the physical location presenting the lowest latency for accessing a host-requested set of data blocks, whether for read or write operations.
  • the dynamic mapping of the data blocks can manage the multiple physical locations for the same data blocks in combination with the expected latency associated with access at each physical location to reduce the average access latency for a given read or write command for the data blocks.
  • data is read from the staging area 604 by the application of disc scheduling logic.
  • disc scheduling logic may also be used for write operations, such as a write to a granule storage area or a destination storage area.
  • FIG. 7 illustrates example operations 700 for chunking data blocks into a staging area.
  • a receiving operation 702 receives logical-block-addressed data blocks from a host device or other storage into random access memory.
  • a sorting operation 704 sorts the received data blocks into a predefined order.
  • Example ordering may include without limitation LBA-order, most-frequently-accessed order, most-recently-accessed order, etc.
  • a writing operation 706 writes the sorted data blocks to the staging area as a set of sorted data blocks (e.g., referred to as sorted chunks).
  • a dynamic mapping operation 708 dynamically maps the LBAs of the data blocks to the corresponding PBAs in the staging area of the data storage.
  • FIG. 8 illustrates example operations 800 for re-sorting data blocks from a staging area to other intermediate storage.
  • a reading operation 802 reads a relatively contiguous set of data blocks from different sets of sorted data blocks (e.g., chunks) in the staging area of the data storage.
  • a transfer operation 804 transfers the read data blocks into a random access memory.
  • a sorting operation 806 sorts the transferred data blocks into a predefined order.
  • Example ordering may include without limitation LBA-order, most-frequently-accessed order, most-recently-accessed order, etc.
  • a writing operation 808 writes the sorted data blocks to another intermediate storage area, to a destination storage area, or to a host device.
  • the sorted data blocks may be written to a different staging area in chunks or to a granule storage area.
  • the sorted data blocks may be written to a destination storage area of data storage for longer term storage.
  • the sorted data blocks may be transferred to the host device in response to a read command. If the data blocks are re-written to the data storage, a dynamic re-mapping operation 810 dynamically re-maps the LBAs of the data blocks to the new corresponding physical block addresses in the staging area of the data storage.
  • a marking operation 812 marks the PBAs from which the data blocks were read in the reading operation 802 as stale.
  • a reclamation operation 814 reclaims stale PBAs in the staging area, for example, by re-using the stale PBAs in the staging area to recording other data blocks. For example, if the data blocks are moved to a destination storage area, the PBAs in the staging area previously storing those data blocks may be marked as stale and reclaimed for use with new data blocks.
  • the storage controller may maintain copies of the same data blocks in the storage area, in other intermediate storage areas, and/or in a destination storage area. In this manner, the storage controller can read requested data blocks from storage providing the lowest average access latency. Dynamic mapping maintains the mappings for each LBA-to-PBA relationship and may provide information assisting in the determination of the lowest average access latency for each relationship for a certain read command.
  • FIG. 9 illustrates an example granule storage area 900 into which sorted data blocks are recorded in individual granules 902 , 903 , and 904 .
  • the granule storage area 900 ′ represents a state of the granule storage area 900 prior to the writing of the new data blocks into the granule storage area 900 .
  • the A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 900 / 900 ′.
  • the example granule storage area 900 also includes other granules that are not shown as including or not including mapped data, including granules 903 , 906 , 908 , 910 , and 912 .
  • Each granule is designated by a bold outline and contains data blocks dynamically constrained to a certain subset of LBAs (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range).
  • the constraint can be dynamically defined and re-defined over time for each granule by the data storage system in order to store write data being written into the granule storage area.
  • a granule or a any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or any other recorded data area.
  • the LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 900 .
  • each granule is of a fixed size, but different granules can have different sizes. In this way, individual smaller granules of data blocks can be sorted and re-written into larger granules within a granule storage area.
  • Sets of granules may also be “appended” or aggregated so that the set of granules can contain data blocks satisfying the same LBA subset. For example, multiple granules may each be configured to store data blocks from the same LBA range. At some future point, the data blocks in these multiple granules can be sorted and/or compacted into other granules (typically one or more larger granules to provide increased data organization).
  • the granule storage area 900 is shown as a non-shingled magnetic recording region, although granule storage may be stored in shingled magnetic recording region (see, e.g., FIGS. 11 and 12 .).
  • a granule storage module 914 can receive write data blocks from a variety of sources, including directly from a host device, from a staging area (not shown), from random access memory 916 , etc. Such data blocks may also be read from a different set of granules from granule storage area 900 ′ and then written into a new set of granules in the granule storage area 900 .
  • a set of data blocks 918 are received into the random access memory 916 , sorted by a granule sorting module 920 , and transferred to one or more individually granules in the granule storage area 900 . It should be understood that the data blocks 918 may be sorted within the random access memory 916 or sorted when transferred to or from the random access memory (e.g., using scatter-gather DMA techniques).
  • the data blocks do not need to be completely sorted within an individual granule, but they are written in sorted manner in a given media access (e.g., a write operation).
  • Other data blocks can be sorted and written in empty PBAs within a granule, as shown with regard to LBA 40 in the granule 902 (i.e., in PBA A4) and LBAs 50, 55, and 56 in granule 904 (i.e., B10, B11, and B12).
  • FIG. 10 illustrates an example granule storage area 1000 into which sorted data blocks are compacted into individual granules 1008 and 1012 .
  • the granule storage area 1000 ′ represents a state of the granule storage area 1000 prior to the writing of the new data blocks into the granule storage area 1000 .
  • the A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1000 .
  • the example granule storage area 1000 also includes other granules that are not shown as including or not including mapped data, including granule 1002 , 1003 , 1004 , 1006 , and 1010 .
  • Each granule is designated by a bold outline and contains data blocks constrained to a certain subset of LBA (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range).
  • LBA e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range.
  • a granule or any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or in any other recorded data area.
  • the LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 1000 .
  • a granule storage module 1014 reads data blocks from granules of the granule storage area 1000 ′ into random access memory 1016 , sorts them via a granule sorting module 1020 , and writes them to new granules or sets of granules (granules 1008 and 1012 in this case) in the granule storage area 1000 / 1000 ′.
  • the granules 1008 and 1012 contain highly LBA-ordered data blocks in sequential PBAs of each granule.
  • the storage space of granules 1002 , 1003 , 1010 , 1006 , and 1004 is freed up for use by new write data to the granule storage area 1000 .
  • the data blocks in the granule storage area 1000 are considered compacted and highly organized (e.g., dynamically mapped in an LBA-to-PBA ordering). It should be understood that the data may also be compacted in place, being re-written back to the same granule, rather than being compacted/written into a different granule, subset of granules, or set of granules.
  • FIG. 11 illustrates an example granule storage area 1100 in a band 1108 of shingled magnetic recording into which sorted data blocks are recorded into individual granules 1102 and 1104 .
  • the granule storage area 1100 ′ represents a state of the granule storage area 1100 prior to the writing of the new data blocks into the granule storage area 1100 .
  • the A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1100 / 1100 ′.
  • the example granule storage area 1100 also includes another granule 1106 within the same shingled magnetic recording band that is shown as not including mapped data.
  • Each granule is designated by a bold outline and contains data blocks constrained to a certain subset of LBAs (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range).
  • the constraint can be dynamically defined and re-defined over time for each granule by the data storage system in order to store write data being written into the granule storage area.
  • a granule or any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or in any other recorded data area.
  • the LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 1100 .
  • each granule is of a fixed size, but different granules can have different sizes. In this way, individual smaller granules of data blocks can be sorted and re-written into larger granules within a granule storage area.
  • a single band 1108 can include more than one granule.
  • Sets of granules may also be “appended” or aggregated so that the set of granules can contain data blocks satisfying the same LBA subset constraint.
  • multiple granules may each be configured to store data blocks from the same LBA range. At some future point, the data blocks in these multiple granules can be sorted and/or compacted into other granules (typically one or more larger granules to provide increased data organization).
  • a granule storage module 1114 can receive write data blocks from a variety of sources, including directly from a host device, from a staging area (not shown), from random access memory 1116 , etc. Such data blocks may also be read from a different set of granules from granule storage area 1100 ′ and then written into a new set of granules in the granule storage area 1100 .
  • a set of data blocks 1118 are received into the random access memory 1116 , sorted by a granule sorting module 1120 , and transferred to one or more individually granules in the granule storage area 1100 . It should be understood that the data blocks 1118 may be sorted within the random access memory 1116 or sorted when transferred to or from the random access memory (e.g., using scatter-gather DMA techniques).
  • the data blocks do not need to be completely sorted within an individual granule, but they are written in sorted manner in a given media access (e.g., a write operation).
  • Other data blocks can be sorted and written in empty PBAs within a granule, as show with regard to LBA 40 in the granule 1102 (i.e., in PBA A1) and LBAs 50, 55, and 56 in granule 1104 (i.e., in PBAs B8, B9, and A7).
  • FIG. 12 illustrates an example granule storage area 1200 in a band 1208 of shingled magnetic recording into which sorted data blocks are sorted into an individual granule 1206 .
  • the granule storage area 1200 ′ represents a state of the granule storage area 1200 prior to the writing of the new data blocks into the granule storage area 1200 .
  • the A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1200 / 1200 ′.
  • the example granule storage area 1200 also includes other granules that are not shown as including or not including mapped data, including granule 1202 and 1206 .
  • Each granule is designated by a bold outline and contains data blocks constrained to a certain subset of LBA (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range).
  • LBA e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range.
  • a granule or any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or in any other recorded data area.
  • the LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 1200 .
  • a granule storage module 1214 reads data blocks from a granule of the granule storage area 1200 ′ into random access memory 1216 , sorts them via a granule sorting module 1220 , and writes them to new granules or sets of granules (granules 1206 in this case) in the granule storage area 1200 .
  • the granule 1206 contains highly LBA-ordered data blocks in sequential PBAs of each granule or near sequential PBAs of each granule (e.g., such as in the presence of defective PBAs in the granule).
  • the storage space of granules 1204 is freed up for use by new write data to the granule storage area 1200 .
  • the data blocks in the granule storage area 1200 are considered compacted and highly organized (e.g., dynamically mapped in an LBA-to-PBA ordering).
  • the granule storage module 1214 may write other data blocks satisfying an appropriate LBA-related constraint into granules 1202 and 1204 .
  • an appropriate LBA-related constraint For example, via dynamic mapping, the constraint for the granule 1204 , which was previously to store data blocks of LBAs 50-59, can be changed to store LBAs from 40-49. Accordingly, the granule storage module 1214 can write a new set of data blocks in the LBA 40-49 range into the granule 1204 .
  • the set of granules 1202 and 1204 can support the same LBA grouping of data blocks. That is, the non-stale data blocks in the LBA 40-49 can span both granules 1202 and 1204 .
  • a similar operation can also provide data block compaction within the granule storage area 1200 , such as described with regard to FIG. 10 .
  • the dynamic mapping can allow a compression algorithm to be applied to the data in the granule storage area 1200 , yielding the option of requiring fewer PBAs than LBAs to store data within a granule.
  • partial code words and/or incremental codewords may be employed as data blocks are written to partially filled granules.
  • an additional piece of error correction code (ECC) is also written into the granule storage area 1200 .
  • ECC error correction code
  • the combination of the new data blocks and the new error code is referred to as a “codeword.”
  • variable amounts of data e.g., a variable number of data blocks.
  • the codeword size can vary or the additional ECC is computed in an incremental fashion and written at fixed boundaries (e.g., at locations appropriate for fixed, rather than variable, word sizes).
  • FIG. 13 illustrates example levels of storage including a random access memory 1300 , a staging area 1302 , a granule storage area 1304 , and a destination storage area 1306 in a data storage system.
  • Data blocks are recorded in individually-sorted sets (“chunks”) in the staging area 1302 . These data blocks have been written to the staging area 1302 from the random access memory 1300 .
  • the previous unsorted data blocks are sorted according to a given sort order (e.g., LBA order in the case shown in FIG. 13 ).
  • the data blocks were sorted during a transfer to or from the random access memory 1300 (e.g., via a scatter-gather DMA process).
  • the data storage system performs processes to make space available for new write data.
  • data blocks in the staging area 1302 can become stale as new data corresponding to the same LBA is written into the staging area 1302 .
  • the data storage system can perform garbage collection or compaction to reclaim the storage space from PBAs storing stale data.
  • data blocks in the staging area 1302 can be read into random access memory 1300 and sorted by the storing module 1308 for storage into the granule storage area 1304 .
  • the granule storage area 1304 shown in FIG. 13 is in the form of a band 1310 of shingled magnetic recording containing three granules 1312 , 1314 , and 1316 .
  • the A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1300 .
  • the data blocks in the staging area 1302 are read into the random access memory 1300 , sorted by a sorting module 1308 , and written into granules according to the dynamically mapped constraints of each granule. For example, in FIG. 13 , granule 1312 is allocated to LBAs 40-49, granule 1314 is allocated to LBAs 50-59, and granule 1316 is allocated to LBAs 60-69.
  • the dynamically mapped constraints shown in FIG. 13 are mere examples.
  • individual granules can be dynamically mapped with the same constraints to append the two granules (effectively growing the granule) within the same constraint.
  • the LBA constraints of granules 1312 and 1314 may be dynamically mapped to form a set of granules that include LBAs 30-61. Accordingly, LBA 60 could be written to PBA A9 and LBA 61 could be written to PBA A2.
  • LBA 60 could be written to PBA A9 and LBA 61 could be written to PBA A2.
  • data blocks may be written from the staging area 1302 through the random access memory to 1300 to the destination storage area 1306 without first being stored in the granule storage area 1304 .
  • the data blocks in the staging area 1302 are marked as stale after they are written into the granule storage area 1304 (e.g., the dynamic mapping of the data storage system no longer maps logical-block-addressed data blocks to the PBAs in the staging area 1302 ), and the PBAs in the staging area 1302 can therefore be used for new write data.
  • the destination storage area 1306 does not currently have any data blocks written to it.
  • the random access memory 1300 may retain one or more data blocks for access by the host device, even if the same data blocks have been written to the staging area 1302 , the granule storage area 1304 , or the destination storage area 1306 .
  • This ability to maintain extra copies of data blocks allowed by the ability to dynamically map LBAs to PBAs and allows the data storage system to determine the lowest latency access option available to it for any read data requested by the host device. (For example, dynamic mapping allows a data storage system to decide whether to read requested data from a storage medium or from random access memory.)
  • FIG. 14 illustrates other example levels of storage including a random access memory 1400 , a staging area 1402 , a granule storage area 1404 , and a destination storage area 1406 .
  • the staging area 1402 includes new individually-sorted chunks.
  • the granule storage area 1404 includes granules 1412 and 1414 with stale data blocks, which can be reclaimed and reused for new write data, and a granule 1416 , which includes data that, while written to the destination storage area 1406 , is not stale. Accordingly, the granule 1416 contains an additional copy of live data, which may be read by the storage controller. Such data copies may be maintained for a period of time (e.g., until the granules are compacted).
  • the destination storage area 1406 may be in non-shingled format (as shown) or shingled format.
  • the sorted data blocks from the granule storage area 1404 have been written through the random access memory to the destination storage area 1406 in a highly ordered configuration to provide a relatively low average latency of access.
  • FIG. 15 illustrates example operations 1500 for storing data blocks into a granule storage area.
  • the operations 1500 of FIG. 15 depict a write operation from a staging area through a random access memory to a granule storage area. Nevertheless, it should be understood that data blocks can also be written from the host device to granule storage through a random access memory, without intermediate storage in a staging area.
  • a reading operation 1502 reads data blocks from individual sorted chunks in the staging area.
  • a transferring operation 1504 transfers the read data blocks to the random access memory.
  • a sorting operation 1506 sorts the transferred data according to dynamically defined granule constraints.
  • a writing operation 1508 writes the sorted data blocks to one or more granules in the granule storage area 1508 , in accordance with the defined granule constraints.
  • a mapping operation 1510 dynamically re-maps the LBAs of the data blocks to the written PBAs of the one or more granules in the granule storage area 1508 .
  • a marking operation 1512 marks the PBAs previously storing the written data in the staging area as stale. Note: The mapping operation 1510 and the marking operation 1512 may be integrated into the same operation—re-mapping the LBAs inherently marks the previous PBAs as stale.
  • a reclamation operation 1514 reclaims the stale PBAs within the staging area for use with new write data.
  • FIG. 16 illustrates example operations 1600 for storing data blocks into a destination storage area.
  • a reading operation 1602 reads data blocks from individual sorted granule sets in a granule storage area.
  • a transferring operation 1604 transfers the read data blocks to the random access memory.
  • a sorting operation 1606 sorts the transferred data according to a defined ordering.
  • a writing operation 1608 writes the sorted data blocks according to relatively static LBA-to-PBA mappings into the destination storage area. It should be noted that LBA-to-PBA mappings for large discrete regions (e.g., 256 MB) may still change over time (e.g., during defragmentation, when damaged PBAs are detected, etc.).
  • the data blocks written to the destination storage area may be retained in the random access memory or the granule storage area as additional live copies of the data.
  • the corresponding granules and/or the random access memory may be reused for new write data.
  • the embodiments of the technology described herein are implemented as logical steps in one or more computer systems.
  • the logical operations of the present technology are implemented (1) as a sequence of processor-implemented steps executing in one or more computer systems and (2) as interconnected machine or circuit modules within one or more computer systems.
  • the embodiment is a matter of choice, dependent on the performance requirements of the computer system implementing the technology. Accordingly, the logical operations making up the embodiments of the technology described herein are referred to variously as operations, steps, objects, or modules.
  • logical operations may be performed in any order, unless explicitly claimed otherwise or a specific order is inherently necessitated by the claim language.
  • the data storage and/or memory may be embodied by various types of storage, such as hard disc media, a storage array containing multiple storage devices, optical media, solid-state drive technology, ROM, RAM, and other technology.
  • the operations may be implemented in firmware, software, hard-wired circuitry, gate array technology and other technologies, whether executed or assisted by a microprocessor, a microprocessor core, a microcontroller, special purpose circuitry, or other processing technologies. It should be understood that a write controller, a storage controller, data write circuitry, data read and recovery circuitry, a stale data marking module, a sorting module, and other functional modules of a data storage system may include or work in concert with a processor for processing processor-readable instructions for performing a system-implemented process.

Abstract

A data storage system includes data storage and random access memory. A sorting module is communicatively coupled to the random access memory and sorts data blocks of write data received in the random access memory of the data storage. A storage controller is communicatively coupled to the random access memory and the data storage and being configured to write the sorted data blocks into one or more individually-sorted granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to a subset of logical block addresses. A method and processor-implemented process provide for sorting data blocks of write data received in random access memory of data storage. The method and processor-implemented process write the sorted data blocks into one or more individually-sorted granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to a subset of logical block addresses.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application relates to U.S. application Ser. No. ______ [Docket No. STL17728], entitled “Staging Sorted Data in Intermediate Storage” and filed concurrently herewith, which is specifically incorporated by reference for all that it discloses and teaches.
  • BACKGROUND
  • Some data storage systems, such as those containing rotating magnetic storage, magnetic tape, and/or rotating optical storage, suffer from relatively high latency times (e.g., in the milliseconds range or more) to reach a randomly-targeted location within physical storage. Once the targeted location is reached (e.g., via a seek operation), data can be transferred (read or written) relatively sequentially from the physical storage at a reasonably high rate. One of many challenges relating to improving data transfer rates is managing the transfer requests of a host within the constraints of physical location and logical ordering of the requested data within the data storage system.
  • SUMMARY
  • Embodiments described and claimed herein address the foregoing problems by efficiently segregating dynamically mapped data throughout multiple levels of physical storage within a data storage system. Such efficient data segregation can reduce deviation in the behavior of logically sequential data accesses to the physical storage media, especially in the presence of shingled magnetic recording regions.
  • A data storage system includes data storage and a random access memory. A sorting module is communicatively coupled to the random access memory and sorts data blocks of write data received in the random access memory of the data storage. A storage controller is communicatively coupled to the random access memory and the data storage and being configured to write the sorted data blocks into one or more individually-sorted granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to a subset of logical block addresses.
  • A method and processor-implemented process provide for sorting data blocks of write data received in a random access memory of data storage. The method and processor-implemented process write the sorted data blocks into one or more individually-sorted granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to a subset of logical block addresses.
  • Other embodiments are also described and recited herein.
  • BRIEF DESCRIPTIONS OF THE DRAWINGS
  • FIG. 1 illustrates an example data storage system for staging sorted data in a staging area of intermediate latency storage.
  • FIG. 2 illustrates an example storage medium with one or more staging areas for chunks of sorted data.
  • FIG. 3 illustrates an example data storage system with hierarchical storage based on varying levels of generally increasing data organization.
  • FIG. 4 illustrates an example staging area in which stale data is identified and marked as stale.
  • FIG. 5 illustrates an example generation of a chunk of sorted data in a staging area.
  • FIG. 6 illustrates an example sorting of a subset of data from a set of chunks for use external to a staging area.
  • FIG. 7 illustrates example operations for chunking data blocks into a staging area.
  • FIG. 8 illustrates example operations for re-sorting data blocks from a staging area to other intermediate storage.
  • FIG. 9 illustrates an example granule storage area into which sorted data blocks are recorded in individual granules.
  • FIG. 10 illustrates an example granule storage area into which sorted data blocks are compacted into individual granules.
  • FIG. 11 illustrates an example granule storage area in a band of shingled magnetic recording into which sorted data blocks are recorded into individual granules.
  • FIG. 12 illustrates an example granule storage area in a band of shingled magnetic recording into which sorted data blocks are sorted into an individual granule.
  • FIG. 13 illustrates example levels of storage including a random access memory, a staging area, a granule storage area, and a destination storage area.
  • FIG. 14 illustrates other example levels of storage including a random access memory, a staging area, a granule storage area, and a destination storage area.
  • FIG. 15 illustrates example operations for storing data blocks into a granule storage area.
  • FIG. 16 illustrates example operations for storing data blocks into a destination storage area.
  • DETAILED DESCRIPTIONS
  • FIG. 1 illustrates an example data storage system 100 for staging sorted data in a staging area 102 of intermediate latency storage. In the illustrated example, the data storage system 100 represents a hard disc drive having one or more magnetic storage discs 104, although other embodiments of such a storage medium may be in the form of an optical disc reader (e.g., a CD reader/writer or a DVD reader/writer), a tape drive, a solid state drive (SSD), etc. The data storage system 100 communicates with a host device 106, which sends write data to and receives read data from the data storage system 100.
  • For example, the host device 106 can write a data file to the data storage system 100, which records the data file on the magnetic storage disc 104 and can later read the data file from the data storage system 100. At the host level, user data is often structured in terms of variable length files, which can be constituted from one or more fixed length data blocks. The data blocks are addressable by the host device 106 using logical block addresses (LBAs). The data storage system 100 includes a write channel having data write circuitry 108, which encodes the data blocks according to an encoding scheme used by the data storage system 100. One or more data blocks may be combined with redundancy information to form self-contained codewords for error detection and/or correction.
  • The data write circuitry 108 writes the data blocks through a write controller 110, which determines the physical location and ordering of the data blocks written by the write controller 110 to one or more levels of data storage within the data storage system 100. When a data block is written to the storage disc 104, the data block is written to a physical block address (PBA) on the storage disc 104. The mapping between LBA and PBA can change over time and is referred to as “dynamic mapping.” The write controller 110 manages the dynamic mapping between LBA and PBA, even as the mapping changes over time. Memory 116 may store firmware instructions that are processed by the write controller 110 to implement dynamic mapping, sorting, relocation, overprovisioning, and other functions performed by the write controller 110.
  • In the data storage system 100, groups of data blocks having consecutive logical addresses can be recorded in approximately consecutive physical locations on the storage disc 104 to achieve a lower latency for successive data accesses after the seek operation for certain sets of data. In addition, dynamic mapping can be intelligently extended to support multiple levels of physical storage within the data storage system 100, wherein different levels of physical storage can provide different average access latencies.
  • As referenced above, the write controller 110 can write data blocks to one or more levels of data storage within the data storage system 100. For example, a data storage area 112 of the storage disc 104, referred to as “destination storage,” represents a physical storage area generally intended for long term storage. Although data in destination storage is intended for long term storage, such data may still be moved from destination storage locations to other destination storage locations over time. In addition, a data storage area 114 of the storage disc 104, referred to as “granule storage,” represents intermediate physical storage in which data stored in each dynamically-sizeable granule is constrained to a certain subset of logical block addresses (LBAs). An example granule size may be about 1 MB, although other sizes may be employed. In fact, granules may be of many different sizes on the same disc surface or even within the same shingled media recording band.
  • Furthermore, a data storage area 102 of the storage disc 104, referred to as “a staging area,” represents a physical storage area in which groups of logical blocks can be incrementally written and rewritten in an increasingly contiguous LBA order. For example, data blocks can be initially received by the data storage system 100 from the host device 106 in an arbitrary or sparse LBA order (e.g., the data blocks are received from diverse areas in logical space). Such data blocks may be written to the staging area in a physically contiguous manner.
  • Random access memory 118 also represents a storage area of the data storage system 100. Its random access characteristics and low access latency provide a storage area appropriate for sorting data blocks according to certain constraints (e.g., LBA ordering, PBA ordering, most-frequently-accessed order, prioritized data order, etc.). In one embodiment, data is received into the random access memory 118, sorted according to an LBA order, and written to the staging area in groups of data called “chunks,” which are sized in association with the available amount of the random access memory 118. An example chunk size may be 64 MB, although other sizes may be employed.
  • Data read and recovery circuitry 120 can read the data (with appropriate error correction coding) from the magnetic storage disc 104 (or from the random access memory 118) and use the error correction coding to detect and/or correct errors (such as data errors caused by scratch damage on the magnetic storage disc 104). The data read and recovery circuitry 120 then transfers the read data (which may be corrected read data) to the host device 106.
  • The sorting of data blocks received in the random access memory 118 may be accomplished in a variety of ways. In one embodiment, the sorting may be accomplished by a processor or other control circuitry while the data blocks reside in the random access memory 118. In an alternative embodiment, the sorting may be accomplished during transfer of the data blocks to and/or from the random access memory 118, such as by using a scatter-gather DMA (direct memory access) transfer scheme. Other sorting techniques and configurations may be employed.
  • In a data storage system, such as data storage system 100 of FIG. 1, a staging area may be a non-shingled or shingled magnetic recording region. In non-shingled magnetic media, each of the cells on a magnetized medium are of a sufficiently large size relative to the size of the write pole to allow the write pole to write data to the cells without overwriting data in any surrounding cells. As a result, data may be randomly written to available cells anywhere on the magnetic medium. However, as requirements for data storage density increase for magnetic media, cell size decreases. A commensurate decrease in the size of the write pole is difficult because a strong write field gradient provided by a larger write pole is often required to shift the polarity of the cells on the magnetized medium. As a result, writing data to smaller cells on the magnetized medium using the relatively larger write pole may affect the polarization of adjacent cells (i.e., overwriting the adjacent cells). One technique for adapting the magnetic medium to utilize smaller cells while preventing adjacent data being overwritten during a write operation is shingled magnetic recording (SMR).
  • SMR utilizes a large strong write field generated by the write pole. One constraint of shingled magnetic recording is that when data is written to the magnetic media, it is written in sequentially increasing or decreasing radius tracks. The strong write field affects two or more adjacent tracks including the track being written to and one or more previously-written tracks. As a result, in order to change any data cell within the shingled data, all of the shingled data is re-written in the selected sequential write order.
  • In order to achieve the increased cell density made possible by SMR while compensating for a lack of random write functionality in such a system, one or more isolation regions may be created within with shingled data. The isolation regions, also referred to as guard tracks, are groupings of one or more adjacent data tracks within the shingled data that are unavailable for recording. In operation, the isolation regions define separate data bands (i.e., groups of logical sectors bounded by guard tracks) of shingled data. Typically, each guard track is wide enough to prevent any overwriting across the guard track. As a result, the guard tracks create bands of shingled data, including one or more adjacent tracks, that are isolated from other bands. Consequently, a single band of shingled data is rewritten (rather than all of the shingled data on the disk) when one or more cells within the band are changed.
  • However, re-writing one or more cells of data in a data band still typically entails multiple steps, including: reading the entire data band, writing data of the data band into a media scratch pad (e.g., a temporary cache) on a disc, reading the data from the media scratch pad, and re-writing the data to the original data band with the one or more changed cells. Consequently, shingled data write operations are typically more time consuming and less power efficient than un-shingled data write operations.
  • Redundancy information can be interlaced with the written data to create multi-logical-block-sized codewords. The redundancy information could be included each time data is written to the staging area, or the redundancy information could be recorded at predictable intervals, such that incremental redundancy could be maintained if the staging area is appended a few times before receiving enough appended data to reach the predictable location where redundancy information is to reside. Furthermore, the writing of data to the staging area of FIG. 1 (or other staging area) can be paced to perform those processes that free staging area space before those processes that consume staging area space. In this manner, staging area space is more likely to be available for new write data blocks.
  • FIG. 2 illustrates an example storage medium 200 with one or more staging areas (such as staging area 202) for chunks of sorted data. In one embodiment, a surface of a data storage disc 204 includes a number of concentric tracks 206. The tracks 206 are distributed on the surface of the storage 204 and may take any number of different forms including without limitation conventional pre-shingled continuous recording, discrete track recording, and shingled magnetic recording. In some embodiments, a single storage disc surface may support both conventional pre-shingled continuous recording and shingled magnetic recording, for example. Further, the same area of a single disc surface may be used for both conventional pre-shingled continuous recording and shingled magnetic recording at different times. In other embodiments, different storage disc surfaces may be dedicated to different recording types (e.g., a surface of one storage disc may used for one type of recording and a surface of the same storage disc or another storage disc may be used for a different type of recording).
  • Different types of recording can contribute to different levels of access latency. A conventional continuous recording pattern is formed by the write head writing data along tracks designated by servo information stored in radial servo burst sectors (such as servo burst sectors 208). The write head re-writes portions of the track as it writes data to the storage medium, potentially resulting in slight variations in the bounds of individual tracks over time. In contrast, discrete track recording patterns include concentric discrete tracks with non-magnetic inter-track isolation, wherein data is recorded continuously along each isolated track. As such, the write head writes data in consistent sets of discrete target tracks during a write operation. Read and write access to these types of recording areas may differ between them, and further, the segregation and ordering of the data blocks along the tracks can also influence the access latency.
  • Shingled magnetic recording employs write poles that record wider tracks than that which is required by the read sensors. However, in shingled magnetic recording, a writing operation typically results in the overwriting of adjacent tracks in a given direction. Accordingly, the write tracks are written to overlap each other in the given direction, leaving narrow tracks of data that can be read correctly by the read heads. As such, the overlapping tracks are written in groups or bands of tracks, which are isolated or otherwise separate from other tracks.
  • When configured with radial servo burst sectors 208, each track 206 is divided into slices called data wedges or sectors 210 between the servo burst sectors 208. Servo burst sectors include data for maintaining accurate positioning of a read/write head over a target track and are positioned at predetermined spaced locations around the storage disc 204.
  • As the storage disc 204 rotates, the read/write head reads the servo information containing an address within the servo bursts sectors 208 and sends the servo information back to a servo control system. The servo control system checks whether the address in the servo information read from the servo burst sector 208 corresponds to the target track location. If the address does not correspond to the target track location, the servo control system adjusts the position of the read/write head to the correct track location as part of a seek operation.
  • As indicated above, each track 206 includes discrete data sectors 210 containing stored user information. The number of data sectors 210 contained on a particular track depends, in part, on the length (e.g., circumference) of the track. Besides containing user information, each data sector may also include other data to help identify and process the user information (e.g., error detection and correction coding).
  • In accordance with an embodiment, one or more portions of the storage disc 204 are reserved for use as a staging area 202, a type of intermediate storage. The staging area 202 is shown in FIG. 2 as being a circumferential grouping of tracks 206 located proximate to the outer diameter of 212 of the storage disc 204. The staging area 202 is shown in FIG. 2 as an example, and it should be understood that the staging area 202 may be written on any other area (radial or circumferential) of the storage disc 204. One characteristic of tracks proximate to the outer diameter 212 is that they can be read with a higher sequential data rate than tracks proximate to the inner diameter 214 of the storage disc 204.
  • In addition to the one or more staging areas 202, the storage disc 204 also includes one or more granule storage areas 216, a type of intermediate storage, wherein each dynamically-sizeable granule is constrained to a certain subset of logical block addresses (LBAs). The storage disc 204 also includes destination storage areas 218, where data blocks are typically recorded for longer term storage than the other areas of the storage disc 204. In one embodiment, the destination storage areas 218 are characterized by a non-dynamic LBA-to-PBA mapping, at least for certain confined address ranges, although other embodiments may include destination storage areas with some use of dynamic mapping. It should be understood that the illustrated placement of various intermediate and destination storage areas are merely examples, and that such areas may be located at any location on the storage disc 204. Furthermore, one or more of the staging areas 202, the granule storage areas 216, and the destinations storage areas 218 may be shingled magnetic recording regions, non-shingled magnetic recording regions, or regions of other recording formats.
  • First, as a general comment, it should be understood that write data may take a variety of paths to the various storage areas (e.g., to random access memory, to a staging area, to a granule storage area, to a destination storage area, etc.). In one embodiment, a host device writes data blocks to a random access memory, where the data blocks may or may not be initially sorted. If the random access memory is non-volatile, the data blocks may accumulate in the random access memory to service host device read requests, without being written to other non-volatile storage media. Alternatively, data blocks may be written from the random access memory to a staging area (in individual sorted sets or as unsorted data blocks) or to other storage. Even when the data blocks are written to the staging area or other storage, the same data blocks may also be retained in the random access memory, which can avoid a possible media read operation in the future. Furthermore, it is typically desirable to maintain at least copy of write data in a nonvolatile storage (e.g., NVRAM or another non-volatile storage medium) because of the possibility of power loss.
  • FIG. 3 illustrates an example data storage system 300 with hierarchical storage based on varying levels of generally increasing data organization. A storage controller 302 manages reading and writing of data blocks to various storage areas, whether to random access memory 304, to intermediate storage (e.g., a staging area 306 or a granule storage area 308) of data storage 310, or to destination storage (e.g., a destination storage area 312) of data storage 310. It should be understood that there may be multiple staging areas, multiple granule storage areas, and multiple destination storage areas on a single storage disc. Furthermore, the storage controller 302 may dynamically adjust the role of a given storage area over time. For example, a staging area may be used as a destination storage area at various times of operation.
  • In one embodiment, the storage controller 302 receives data blocks of new write data, responsive to one or more write commands from a host device. The received data blocks may be received in arbitrary LBA-order—some write commands may be more LBA-ordered while other write commands may be less LBA-ordered, and some combinations of write commands may be targeted at substantially diverse areas of the logical address space. Nevertheless, in this embodiment, the storage controller 302 receives the data blocks into random access memory 304, sorts the data blocks, and writes the sorted data blocks to the staging area 306 in a relatively contiguous physical space in the staging area 306. The term “relatively contiguous” refers to a read/write operation, potentially associated with multiple read/write commands, from/to a physical storage area in which a single seek operation (or few seek operations) are used to complete the read/write operation and data blocks are read from/written to sequential PBAs on one or more tracks. It should be understood that the skipping of damaged, stale, or otherwise “bad” PBAs in the data storage 310 or the reading/writing of data across nearby multiple tracks of the data storage 310 does not preclude a read/write operation from being considered “relatively contiguous.”
  • At any time, but typically during periods of low storage activity, the storage controller 302 can read data stored in the staging area 306 using a relatively contiguous read operation. The read data is transferred to the random access memory 304, sorted in random access memory 304 in a predefined order (e.g., in LBA order, in most-frequently-accessed order, etc.), and then written to the staging area 306 or to another storage area or the host device. In one embodiment, the amount of data read, sorted, and written to the staging area 306 is referred to as a “chunk” and is the same as the size of the random access memory 304, although other sizes may be used (e.g., different portions of the random access memory 304 may be used for different purposes or for different “chunks”). In another embodiment, the read and sorted data may alternatively be transferred to a host device in response to a read command or transferred to another storage area (e.g., flash memory, a granule storage area 308 or a destination storage area 312).
  • When the storage controller 302 writes the sorted data to the staging area 306, the storage controller 302 typically writes the sorted data to a new location in the staging area 306, rather than overwriting the physical storage of the previously read data with the newly sorted copy of the data. Once the newly sorted data is written to the staging area 306 (or to another storage area), the physical storage containing the previously read data may be marked as stale and reclaimed for use with new write data. The reclamation operation may be referred to as “garbage collection” and may allow for multiple sorted and unsorted versions of the same data to reside in the staging area 306 or other storage areas of the data storage 310 at the same time. In an alternative embodiment, the previous read PBAs may be overwritten with the newly sorted copy of the data. It should also be understood that the reading, sorting, and writing of data recorded in the staging area 306 (or other storage areas) may be repeated multiple times (e.g., to increase the correlation between logical and physical ordering for a particular chunk of data).
  • It should also be understood that the processing of write operations by the storage controller 302 may be performed in an order that favors creating more room within the staging area to receive new write data. For example, host commands or data storage system operations that generate more stale PBAs in the staging area or that generate more regions of relatively contiguous stale PBAs in the staging area may be performed before host commands or data storage system operations that consume PBAs in the staging area. For example, host commands to delete data blocks may be prioritized ahead of new data write commands. Likewise, data storage system operations that transfer data blocks from a staging area to a granule storage area or a destination storage area may be prioritized ahead of new data write commands. In this manner, the data storage system can prevent or reduce the likelihood that a staging area is too full to accept new write data.
  • FIG. 4 illustrates an example staging area 400 in which stale data is identified and marked as stale. In one embodiment, stale data is “marked” as stale because there is no longer an LBA that translates to the corresponding PBA storing the stale data. FIG. 4 depicts a stale data marking module 406 for illustrative purposes. However, the stale data marking module 406 is typically a functional component of the dynamic mapping subsystem that re-maps the LBA to the PBA containing the fresh data and deletes the mapping of the same LBA to the stale PBA. Another aspect of the stale data marking module 406 may include a counter that records the number of stale locations in a physical subdivision.
  • The staging area 400 receives data blocks from a storage controller, which records the blocks in a relatively contiguous manner. In FIG. 4, the data is shown as written to the staging area 400 in ten successive write operations 402, from write operation 1 to write operation 10. The write operations 402 designate separate media accesses resulting in the recording of individual data blocks 404 (each marked in FIG. 4 with a corresponding LBA). For example, the write operation 1 writes data blocks associated with LBAs 73, 21, and 94 to the staging area 400 in a relatively contiguous (e.g., physically sequential) manner, and the write operation 2 writes data blocks associated with LBAs 24 and 92 to the staging area 400 in a relatively contiguous (e.g., physically sequential) manner. Responsive to each write operation, the storage controller records an LBA-to-PBA mapping for each data block. In this manner, the storage controller can retrieve a data block requested by the host device from its PBA according to its corresponding LBA. The associated dynamic mapping information may be stored in a storage controller-accessible dynamic mapping table (not shown).
  • As shown with regard to write operations 4 and 5, a data block associated with LBA 46 is written twice, once in write operation 4 and again in write operation 5. Accordingly, the data block storing the data written in the write operation 4 is now stale, as a more up-to-date data block has been written by the write operation 5. Further, the storage controller updates the dynamic mapping between LBA 46 and the new PBA associated with the write operation 5.
  • A stale data marking module 406 detects the new write of LBA 46 and therefore marks the data block from the write operation 4 as stale (e.g., LBA 46 no longer maps to the PBA storing the stale data block). Write operations 7 and 8 are also shown as writing the same LBA 17. Accordingly, the stale data marking module 406 marks the data block for LBA 17 written by write operation 7 as stale and updates the dynamic mapping between LBA 17 and the new PBA associated with the write operation 8.
  • As the storage controller reads the relatively contiguous data from the staging area 400, stale data blocks are ignored or otherwise managed to preclude their transfer to random access memory for sorting and subsequent re-writing to the host device or the storage media. As physical data blocks are marked as stale, the physical data blocks can be reclaimed and reused for new data blocks, including for newly sorted chunks.
  • It should be understood that all of the write data or one or more portions of the write data shown in the staging area 400 may also be retained in a random access memory (not shown in FIG. 4). As such, copies of the most recently written data from the host device may be maintained in the random access memory as well as the staging area. In this manner, it is unnecessary for the storage controller to read from the staging area in order to gain access to the most recently written data in the random access memory.
  • FIG. 5 illustrates an example generation of a chunk 500 of sorted data in a staging area 502. In one embodiment, when the host device writes data blocks to the storage controller, the storage controller writes the data blocks directly to the random access memory 504, as shown at 505, where it can be sorted and copied to the staging area 502 while still maintaining a sorted copy in the random access memory. In an alternative embodiment, the storage controller can read an unsorted sequence of data blocks from the staging area 502 into random access memory 504, shown as data blocks at 506.
  • A sorting module 508 sorts the data according to LBA order, shown as data blocks at 510, although it should be understood that the sorting module 508 may sort the data blocks according to other ordering preferences, including most-frequently-accessed, most-recently-accessed, etc. Various sorting methods may be used to sort the data blocks within the random access memory 504. The sorted data (“the chunk”) is then written in a relatively contiguous manner to another location within the staging area 502, to the host device, or to other intermediate or destination storage areas of the storage media. As previously discussed, in an alternative embodiment, the sorted chunk may be re-written over the previously read data, although FIG. 5 shows the chunk 500 as written to a separate location in the same staging area 502.
  • Responsive to the writing of the new chunk 500 to the staging area 502, the storage controller updates the dynamic mapping information to reflect the new relationships between the LBAs (21, 24, 73, and 94) and their new PBAs within the staging area 502. In addition, a stale data marking module marks the previous PBAs that stored the previous data blocks for the same LBAs as stale. In this manner, those PBAs may be reclaimed to be re-used for new write data. Typically, each time a set of data blocks is sorted and “chunked,” the average access latency of those data blocks is reduced because, in the case of LBA ordering, the subsequent read operations are accessing data with a better LBA-to-PBA mapping. In one perspective, the transfer of multiple, sorted data blocks per media access to/from the staging area amortizes the latencies between relatively contiguous physical media accesses across a larger number of data blocks.
  • FIG. 6 illustrates an example sorting of a subset of data 600 from a set of chunks 602 for use external to a staging area 604. A storage controller reads multiple sorted sets of data blocks (e.g., multiple chunks via multiple read accesses) from the staging area 604 into random access memory 606 (e.g., the entire memory 606 or a portion thereof). Note: Multiple extents of data may be read per media access to amortize the latencies between media accesses across multiple extents.
  • A sorting module 608 sorts the read data blocks received in the random access memory 606 according to a predefined order (e.g., in LBA order in FIG. 6). Various sorting methods, such as an N-ary merge sort that reads from the head of each sorted chunk, may be used to sort the data blocks received in the random access memory 606. The newly sorted chunk at 610 is written to other storage (e.g., to other intermediate storage, such as another staging area or a granule storage area, or to destination storage area) or to a host device. Responsive to the writing of the new chunk 612 to other storage, the storage controller updates the dynamic mapping information to reflect the new relationships between the LBAs (1, 2, 11, and 16) and their new PBAs within the other storage. The data blocks at 614 represent unsorted, un-chunked data blocks that are still recorded in the staging area 604.
  • In addition, in one embodiment, a stale data marking module marks the previous PBAs that stored the previous data blocks for the same LBAs as stale. In this manner, those PBAs may be reclaimed to be reused for new write data. In an alternative embodiment, however, data blocks in the staging area 604 corresponding to data blocks written to other storage need not be marked as stale. In such an implementation, multiple copies of the data blocks may be recorded in multiple physical locations within the data storage system (e.g., within a staging area, within a flash memory cache, within random access memory, within a granule storage area, within a destination storage area) and the storage controller can determine the physical location presenting the lowest latency for accessing a host-requested set of data blocks, whether for read or write operations. The dynamic mapping of the data blocks can manage the multiple physical locations for the same data blocks in combination with the expected latency associated with access at each physical location to reduce the average access latency for a given read or write command for the data blocks.
  • In one embodiment, data is read from the staging area 604 by the application of disc scheduling logic. For example, read requests are queued up and scheduled for execution based on seek times, latency times, etc. In some embodiments, disc scheduling logic may also be used for write operations, such as a write to a granule storage area or a destination storage area.
  • FIG. 7 illustrates example operations 700 for chunking data blocks into a staging area. A receiving operation 702 receives logical-block-addressed data blocks from a host device or other storage into random access memory. A sorting operation 704 sorts the received data blocks into a predefined order. Example ordering may include without limitation LBA-order, most-frequently-accessed order, most-recently-accessed order, etc.
  • A writing operation 706 writes the sorted data blocks to the staging area as a set of sorted data blocks (e.g., referred to as sorted chunks). A dynamic mapping operation 708 dynamically maps the LBAs of the data blocks to the corresponding PBAs in the staging area of the data storage.
  • FIG. 8 illustrates example operations 800 for re-sorting data blocks from a staging area to other intermediate storage. A reading operation 802 reads a relatively contiguous set of data blocks from different sets of sorted data blocks (e.g., chunks) in the staging area of the data storage. A transfer operation 804 transfers the read data blocks into a random access memory. A sorting operation 806 sorts the transferred data blocks into a predefined order. Example ordering may include without limitation LBA-order, most-frequently-accessed order, most-recently-accessed order, etc.
  • A writing operation 808 writes the sorted data blocks to another intermediate storage area, to a destination storage area, or to a host device. For example, the sorted data blocks may be written to a different staging area in chunks or to a granule storage area. In another example, the sorted data blocks may be written to a destination storage area of data storage for longer term storage. In yet another example, the sorted data blocks may be transferred to the host device in response to a read command. If the data blocks are re-written to the data storage, a dynamic re-mapping operation 810 dynamically re-maps the LBAs of the data blocks to the new corresponding physical block addresses in the staging area of the data storage. A marking operation 812 marks the PBAs from which the data blocks were read in the reading operation 802 as stale. A reclamation operation 814 reclaims stale PBAs in the staging area, for example, by re-using the stale PBAs in the staging area to recording other data blocks. For example, if the data blocks are moved to a destination storage area, the PBAs in the staging area previously storing those data blocks may be marked as stale and reclaimed for use with new data blocks. However, in an overprovisioning circumstance, the storage controller may maintain copies of the same data blocks in the storage area, in other intermediate storage areas, and/or in a destination storage area. In this manner, the storage controller can read requested data blocks from storage providing the lowest average access latency. Dynamic mapping maintains the mappings for each LBA-to-PBA relationship and may provide information assisting in the determination of the lowest average access latency for each relationship for a certain read command.
  • FIG. 9 illustrates an example granule storage area 900 into which sorted data blocks are recorded in individual granules 902, 903, and 904. (The granule storage area 900′ represents a state of the granule storage area 900 prior to the writing of the new data blocks into the granule storage area 900. The A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 900/900′.) The example granule storage area 900 also includes other granules that are not shown as including or not including mapped data, including granules 903, 906, 908, 910, and 912. Each granule is designated by a bold outline and contains data blocks dynamically constrained to a certain subset of LBAs (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range). The constraint can be dynamically defined and re-defined over time for each granule by the data storage system in order to store write data being written into the granule storage area. In addition, a granule or a any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or any other recorded data area. The LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 900.
  • In one embodiment, each granule is of a fixed size, but different granules can have different sizes. In this way, individual smaller granules of data blocks can be sorted and re-written into larger granules within a granule storage area. Sets of granules may also be “appended” or aggregated so that the set of granules can contain data blocks satisfying the same LBA subset. For example, multiple granules may each be configured to store data blocks from the same LBA range. At some future point, the data blocks in these multiple granules can be sorted and/or compacted into other granules (typically one or more larger granules to provide increased data organization). The granule storage area 900 is shown as a non-shingled magnetic recording region, although granule storage may be stored in shingled magnetic recording region (see, e.g., FIGS. 11 and 12.).
  • A granule storage module 914 can receive write data blocks from a variety of sources, including directly from a host device, from a staging area (not shown), from random access memory 916, etc. Such data blocks may also be read from a different set of granules from granule storage area 900′ and then written into a new set of granules in the granule storage area 900.
  • In one example, a set of data blocks 918 are received into the random access memory 916, sorted by a granule sorting module 920, and transferred to one or more individually granules in the granule storage area 900. It should be understood that the data blocks 918 may be sorted within the random access memory 916 or sorted when transferred to or from the random access memory (e.g., using scatter-gather DMA techniques).
  • As shown in the granule 902, the data blocks do not need to be completely sorted within an individual granule, but they are written in sorted manner in a given media access (e.g., a write operation). Other data blocks can be sorted and written in empty PBAs within a granule, as shown with regard to LBA 40 in the granule 902 (i.e., in PBA A4) and LBAs 50, 55, and 56 in granule 904 (i.e., B10, B11, and B12).
  • FIG. 10 illustrates an example granule storage area 1000 into which sorted data blocks are compacted into individual granules 1008 and 1012. (The granule storage area 1000′ represents a state of the granule storage area 1000 prior to the writing of the new data blocks into the granule storage area 1000. The A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1000.) The example granule storage area 1000 also includes other granules that are not shown as including or not including mapped data, including granule 1002, 1003, 1004, 1006, and 1010. Each granule is designated by a bold outline and contains data blocks constrained to a certain subset of LBA (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range). In addition, a granule or any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or in any other recorded data area. The LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 1000.
  • A granule storage module 1014 reads data blocks from granules of the granule storage area 1000′ into random access memory 1016, sorts them via a granule sorting module 1020, and writes them to new granules or sets of granules ( granules 1008 and 1012 in this case) in the granule storage area 1000/1000′. As a result, the granules 1008 and 1012 contain highly LBA-ordered data blocks in sequential PBAs of each granule. Further, the storage space of granules 1002, 1003, 1010, 1006, and 1004 is freed up for use by new write data to the granule storage area 1000. In this manner, the data blocks in the granule storage area 1000 are considered compacted and highly organized (e.g., dynamically mapped in an LBA-to-PBA ordering). It should be understood that the data may also be compacted in place, being re-written back to the same granule, rather than being compacted/written into a different granule, subset of granules, or set of granules.
  • FIG. 11 illustrates an example granule storage area 1100 in a band 1108 of shingled magnetic recording into which sorted data blocks are recorded into individual granules 1102 and 1104. (The granule storage area 1100′ represents a state of the granule storage area 1100 prior to the writing of the new data blocks into the granule storage area 1100. The A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1100/1100′.) The example granule storage area 1100 also includes another granule 1106 within the same shingled magnetic recording band that is shown as not including mapped data. Each granule is designated by a bold outline and contains data blocks constrained to a certain subset of LBAs (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range). The constraint can be dynamically defined and re-defined over time for each granule by the data storage system in order to store write data being written into the granule storage area. In addition, a granule or any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or in any other recorded data area. The LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 1100.
  • In one embodiment, each granule is of a fixed size, but different granules can have different sizes. In this way, individual smaller granules of data blocks can be sorted and re-written into larger granules within a granule storage area. Furthermore, as shown in FIG. 11, a single band 1108 can include more than one granule. Sets of granules may also be “appended” or aggregated so that the set of granules can contain data blocks satisfying the same LBA subset constraint. For example, multiple granules may each be configured to store data blocks from the same LBA range. At some future point, the data blocks in these multiple granules can be sorted and/or compacted into other granules (typically one or more larger granules to provide increased data organization).
  • A granule storage module 1114 can receive write data blocks from a variety of sources, including directly from a host device, from a staging area (not shown), from random access memory 1116, etc. Such data blocks may also be read from a different set of granules from granule storage area 1100′ and then written into a new set of granules in the granule storage area 1100.
  • In one example, a set of data blocks 1118 are received into the random access memory 1116, sorted by a granule sorting module 1120, and transferred to one or more individually granules in the granule storage area 1100. It should be understood that the data blocks 1118 may be sorted within the random access memory 1116 or sorted when transferred to or from the random access memory (e.g., using scatter-gather DMA techniques).
  • As shown in the granule 1102, the data blocks do not need to be completely sorted within an individual granule, but they are written in sorted manner in a given media access (e.g., a write operation). Other data blocks can be sorted and written in empty PBAs within a granule, as show with regard to LBA 40 in the granule 1102 (i.e., in PBA A1) and LBAs 50, 55, and 56 in granule 1104 (i.e., in PBAs B8, B9, and A7).
  • FIG. 12 illustrates an example granule storage area 1200 in a band 1208 of shingled magnetic recording into which sorted data blocks are sorted into an individual granule 1206. (The granule storage area 1200′ represents a state of the granule storage area 1200 prior to the writing of the new data blocks into the granule storage area 1200. The A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1200/1200′.) The example granule storage area 1200 also includes other granules that are not shown as including or not including mapped data, including granule 1202 and 1206. Each granule is designated by a bold outline and contains data blocks constrained to a certain subset of LBA (e.g., a specific LBA range, a most-recently-accessed LBA range, a most-frequently-accessed LBA range). In addition, a granule or any portion of a granule can be separately written if it does not immediately destabilize, erase or overwrite any other unintended data in the granule, in another granule, or in any other recorded data area. The LBA-to-PBA relationships of the data blocks in the granules are dynamically mapped to allow reorganization of the data blocks in the granule storage area 1200.
  • A granule storage module 1214 reads data blocks from a granule of the granule storage area 1200′ into random access memory 1216, sorts them via a granule sorting module 1220, and writes them to new granules or sets of granules (granules 1206 in this case) in the granule storage area 1200. As a result, the granule 1206 contains highly LBA-ordered data blocks in sequential PBAs of each granule or near sequential PBAs of each granule (e.g., such as in the presence of defective PBAs in the granule). Further, the storage space of granules 1204 is freed up for use by new write data to the granule storage area 1200. In this manner, the data blocks in the granule storage area 1200 are considered compacted and highly organized (e.g., dynamically mapped in an LBA-to-PBA ordering).
  • In a subsequent operation, the granule storage module 1214 may write other data blocks satisfying an appropriate LBA-related constraint into granules 1202 and 1204. For example, via dynamic mapping, the constraint for the granule 1204, which was previously to store data blocks of LBAs 50-59, can be changed to store LBAs from 40-49. Accordingly, the granule storage module 1214 can write a new set of data blocks in the LBA 40-49 range into the granule 1204. By appending the granule 1204 to the same LBA-based constraint as granule 1202, the set of granules 1202 and 1204 can support the same LBA grouping of data blocks. That is, the non-stale data blocks in the LBA 40-49 can span both granules 1202 and 1204.
  • A similar operation can also provide data block compaction within the granule storage area 1200, such as described with regard to FIG. 10. In addition, the dynamic mapping can allow a compression algorithm to be applied to the data in the granule storage area 1200, yielding the option of requiring fewer PBAs than LBAs to store data within a granule.
  • Furthermore, as with the staging area, partial code words and/or incremental codewords may be employed as data blocks are written to partially filled granules. In this manner as data blocks are written to data storage, an additional piece of error correction code (ECC) is also written into the granule storage area 1200. The combination of the new data blocks and the new error code is referred to as a “codeword.” When writing to the granule storage area 1200, variable amounts of data (e.g., a variable number of data blocks). To maintain the addition ECC, the codeword size can vary or the additional ECC is computed in an incremental fashion and written at fixed boundaries (e.g., at locations appropriate for fixed, rather than variable, word sizes).
  • FIG. 13 illustrates example levels of storage including a random access memory 1300, a staging area 1302, a granule storage area 1304, and a destination storage area 1306 in a data storage system. Data blocks are recorded in individually-sorted sets (“chunks”) in the staging area 1302. These data blocks have been written to the staging area 1302 from the random access memory 1300. In one embodiment, the previous unsorted data blocks are sorted according to a given sort order (e.g., LBA order in the case shown in FIG. 13). In other implementations, the data blocks were sorted during a transfer to or from the random access memory 1300 (e.g., via a scatter-gather DMA process).
  • As the staging area fills up with sets of individually-sorted data, the data storage system performs processes to make space available for new write data. In some cases, data blocks in the staging area 1302 can become stale as new data corresponding to the same LBA is written into the staging area 1302. Accordingly, the data storage system can perform garbage collection or compaction to reclaim the storage space from PBAs storing stale data. In other cases, data blocks in the staging area 1302 can be read into random access memory 1300 and sorted by the storing module 1308 for storage into the granule storage area 1304.
  • The granule storage area 1304 shown in FIG. 13 is in the form of a band 1310 of shingled magnetic recording containing three granules 1312, 1314, and 1316. The A-B-C and 0 through 15 represent coordinates of individual data blocks within the granule storage area 1300. In one implementation, the data blocks in the staging area 1302 are read into the random access memory 1300, sorted by a sorting module 1308, and written into granules according to the dynamically mapped constraints of each granule. For example, in FIG. 13, granule 1312 is allocated to LBAs 40-49, granule 1314 is allocated to LBAs 50-59, and granule 1316 is allocated to LBAs 60-69.
  • It should be understood that the dynamically mapped constraints shown in FIG. 13 are mere examples. In addition, individual granules can be dynamically mapped with the same constraints to append the two granules (effectively growing the granule) within the same constraint. For example, the LBA constraints of granules 1312 and 1314 may be dynamically mapped to form a set of granules that include LBAs 30-61. Accordingly, LBA 60 could be written to PBA A9 and LBA 61 could be written to PBA A2. As such, not only can the LBA content of a granule change, multiple granules can be aggregated to form a sorted set of granules, which assists with compaction and overprovisioning. In some embodiments, data blocks may be written from the staging area 1302 through the random access memory to 1300 to the destination storage area 1306 without first being stored in the granule storage area 1304.
  • In FIG. 13, the data blocks in the staging area 1302 are marked as stale after they are written into the granule storage area 1304 (e.g., the dynamic mapping of the data storage system no longer maps logical-block-addressed data blocks to the PBAs in the staging area 1302), and the PBAs in the staging area 1302 can therefore be used for new write data. In addition, the destination storage area 1306 does not currently have any data blocks written to it. Also note that the random access memory 1300 may retain one or more data blocks for access by the host device, even if the same data blocks have been written to the staging area 1302, the granule storage area 1304, or the destination storage area 1306. This ability to maintain extra copies of data blocks allowed by the ability to dynamically map LBAs to PBAs and allows the data storage system to determine the lowest latency access option available to it for any read data requested by the host device. (For example, dynamic mapping allows a data storage system to decide whether to read requested data from a storage medium or from random access memory.)
  • FIG. 14 illustrates other example levels of storage including a random access memory 1400, a staging area 1402, a granule storage area 1404, and a destination storage area 1406. The staging area 1402 includes new individually-sorted chunks. The granule storage area 1404 includes granules 1412 and 1414 with stale data blocks, which can be reclaimed and reused for new write data, and a granule 1416, which includes data that, while written to the destination storage area 1406, is not stale. Accordingly, the granule 1416 contains an additional copy of live data, which may be read by the storage controller. Such data copies may be maintained for a period of time (e.g., until the granules are compacted).
  • The destination storage area 1406 may be in non-shingled format (as shown) or shingled format. The sorted data blocks from the granule storage area 1404 have been written through the random access memory to the destination storage area 1406 in a highly ordered configuration to provide a relatively low average latency of access.
  • FIG. 15 illustrates example operations 1500 for storing data blocks into a granule storage area. The operations 1500 of FIG. 15 depict a write operation from a staging area through a random access memory to a granule storage area. Nevertheless, it should be understood that data blocks can also be written from the host device to granule storage through a random access memory, without intermediate storage in a staging area.
  • A reading operation 1502 reads data blocks from individual sorted chunks in the staging area. A transferring operation 1504 transfers the read data blocks to the random access memory. A sorting operation 1506 sorts the transferred data according to dynamically defined granule constraints. A writing operation 1508 writes the sorted data blocks to one or more granules in the granule storage area 1508, in accordance with the defined granule constraints.
  • A mapping operation 1510 dynamically re-maps the LBAs of the data blocks to the written PBAs of the one or more granules in the granule storage area 1508. A marking operation 1512 marks the PBAs previously storing the written data in the staging area as stale. Note: The mapping operation 1510 and the marking operation 1512 may be integrated into the same operation—re-mapping the LBAs inherently marks the previous PBAs as stale. A reclamation operation 1514 reclaims the stale PBAs within the staging area for use with new write data.
  • FIG. 16 illustrates example operations 1600 for storing data blocks into a destination storage area. A reading operation 1602 reads data blocks from individual sorted granule sets in a granule storage area. A transferring operation 1604 transfers the read data blocks to the random access memory. A sorting operation 1606 sorts the transferred data according to a defined ordering. A writing operation 1608 writes the sorted data blocks according to relatively static LBA-to-PBA mappings into the destination storage area. It should be noted that LBA-to-PBA mappings for large discrete regions (e.g., 256 MB) may still change over time (e.g., during defragmentation, when damaged PBAs are detected, etc.).
  • The data blocks written to the destination storage area may be retained in the random access memory or the granule storage area as additional live copies of the data. Alternatively, the corresponding granules and/or the random access memory may be reused for new write data.
  • The embodiments of the technology described herein are implemented as logical steps in one or more computer systems. The logical operations of the present technology are implemented (1) as a sequence of processor-implemented steps executing in one or more computer systems and (2) as interconnected machine or circuit modules within one or more computer systems. The embodiment is a matter of choice, dependent on the performance requirements of the computer system implementing the technology. Accordingly, the logical operations making up the embodiments of the technology described herein are referred to variously as operations, steps, objects, or modules. Furthermore, it should be understood that logical operations may be performed in any order, unless explicitly claimed otherwise or a specific order is inherently necessitated by the claim language.
  • The data storage and/or memory may be embodied by various types of storage, such as hard disc media, a storage array containing multiple storage devices, optical media, solid-state drive technology, ROM, RAM, and other technology. The operations may be implemented in firmware, software, hard-wired circuitry, gate array technology and other technologies, whether executed or assisted by a microprocessor, a microprocessor core, a microcontroller, special purpose circuitry, or other processing technologies. It should be understood that a write controller, a storage controller, data write circuitry, data read and recovery circuitry, a stale data marking module, a sorting module, and other functional modules of a data storage system may include or work in concert with a processor for processing processor-readable instructions for performing a system-implemented process.
  • The above specification, examples, and data provide a complete description of the structure and use of exemplary embodiments of the technology. Since many embodiments of the technology can be made without departing from the spirit and scope of the technology, the invention resides in the claims hereinafter appended. Furthermore, structural features of the different embodiments may be combined in yet another embodiment without departing from the recited claims.

Claims (20)

What is claimed is:
1. A method comprising:
writing the data blocks grouped into subsets of logical block addresses into one or more individual granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to the subset of logical block addresses.
2. The method of claim 1 further comprising:
dynamically mapping logical block addresses of the written data blocks to new physical block addresses in the granule storage area of the data storage.
3. The method of claim 1 further comprising:
sorting the data blocks according to a subset of logical block addresses.
4. The method of claim 1 wherein at least one granule in the granule storage area is dynamically constrained to the same subset of logical block addresses as another granule.
5. The method of claim 1 further comprising:
reading into the random access memory multiple individual granules recorded in the granule storage area of the data storage;
re-sorting the data blocks read from the multiple individual granules received in the random access memory according to another subset of logical block addresses; and
writing the re-sorted data blocks to a new granule in the granule storage area, wherein the new granule is constrained to the other subset of logical block addresses.
6. The method of claim 1 further comprising:
reading into the random access memory multiple individual granules recorded in the granule storage area of the data storage; and
writing multiple data blocks of the multiple individual granules from the random access memory to a host device.
7. The method of claim 1 further comprising:
reading into the random access memory multiple individual granules recorded in the granule storage area of the data storage;
re-sorting the data blocks read from the multiple individual granules received in the random access memory according to an LBA-to-PBA mapping; and
writing the re-sorted data blocks to an LBA-to-PBA-mapped region of a destination storage area.
8. A data storage system comprising:
data storage;
random access memory; and
a storage controller communicatively coupled to the random access memory and the data storage and being configured to write the data blocks grouped into subsets of logical block addresses into one or more individually granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to the subset of logical block addresses.
9. The data storage system of claim 8 wherein the storage controller is further configured to dynamically map logical block addresses of the written data blocks to new physical block addresses in the granule storage area of the data storage.
10. The data storage system of claim 8 further comprising:
a sorting module is further configured to sort the data blocks according to a subset of logical block addresses.
11. The data storage system of claim 8 wherein more than one individually sorted granule in the granule storage area are dynamically constrained to the same subset of logical block addresses as another individually sorted granule.
12. The data storage system of claim 8 wherein the storage controller is further configured to read into the random access memory multiple individual granules recorded in the granule storage area of the data storage, and further comprising:
a sorting module configured to re-sort the data blocks read from the individually-sorted granules received in the random access memory according to another subset of logical block addresses to be written to a new granule in the granule storage area, wherein the new granule is constrained to the other subset of logical block addresses.
13. The data storage system of claim 8 wherein the storage controller is further configured to read into the random access memory multiple individual granules recorded in the granule storage area of the data storage, and further comprising:
a sorting module configured to re-sort the data blocks read from the individually-sorted granules received in the random access memory according to an LBA-to-PBA mapping to be written to a statically-mapped region of a destination storage area.
14. One or more processor-readable storage media storing processor-readable instructions for performing a system-implemented process in a data storage system, the process comprising:
writing the data blocks grouped into subsets of logical block addresses into one or more individual granules in a granule storage area of the data storage, wherein each granule is dynamically constrained to the subset of logical block addresses.
15. The one or more processor-readable storage media of claim 14 wherein the process further comprises:
dynamically mapping logical block addresses of the written data blocks to new physical block addresses in the granule storage area of the data storage.
16. The one or more processor-readable storage media of claim 14 wherein the sorting operation comprises:
sorting the data blocks according to a subset of logical block addresses.
17. The one or more processor-readable storage media of claim 14 wherein at least one granule in the granule storage area is dynamically constrained to the same subset of logical block addresses as another granule.
18. The one or more processor-readable storage media of claim 14, wherein the process comprises:
reading into the random access memory multiple individually-sorted granules recorded in the granule storage area of the data storage;
re-sorting the data blocks read from the individually-sorted granules in the random access memory according to another subset of logical block addresses; and
writing the individually-re-sorted data blocks to a new granule in the granule storage area, wherein the new granule is constrained to the other subset of logical block addresses.
19. The one or more processor-readable storage media of claim 14, wherein the process comprises:
reading into the random access memory multiple individually-sorted granules recorded in the granule storage area of the data storage; and
writing the individually-re-sorted data block to a host device.
20. The one or more processor-readable storage media of claim 14, wherein the process comprises:
reading into the random access memory multiple individual granules recorded in the granule storage area of the data storage;
re-sorting the data blocks read from the multiple individual granules received in the random access memory according to an LBA-to-PBA mapping; and
writing the re-sorted data blocks to an LBA-to-PBA-mapped region of a destination storage area.
US13/839,595 2013-03-15 2013-03-15 Dynamically-sizeable granule storage Abandoned US20140281194A1 (en)

Priority Applications (8)

Application Number Priority Date Filing Date Title
US13/839,595 US20140281194A1 (en) 2013-03-15 2013-03-15 Dynamically-sizeable granule storage
US13/973,491 US9384793B2 (en) 2013-03-15 2013-08-22 Dynamic granule-based intermediate storage
KR1020140024425A KR101910840B1 (en) 2013-03-15 2014-02-28 Dynamic granule-based intermediate storage
JP2014050342A JP5941489B2 (en) 2013-03-15 2014-03-13 Method, data storage system, and storage medium using intermediate storage area based on dynamic granular material
CN201410093915.1A CN104049908B (en) 2013-03-15 2014-03-14 Intermediate storage based on dynamic particle
EP14160349.8A EP2778891A1 (en) 2013-03-15 2014-03-17 Dynamic granule-based intermediate storage
US15/177,022 US9740406B2 (en) 2013-03-15 2016-06-08 Dynamic granule-based intermediate storage
KR1020160084281A KR20160086299A (en) 2013-03-15 2016-07-04 Dynamic granule-based intermediate storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/839,595 US20140281194A1 (en) 2013-03-15 2013-03-15 Dynamically-sizeable granule storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/973,491 Continuation US9384793B2 (en) 2013-03-15 2013-08-22 Dynamic granule-based intermediate storage

Publications (1)

Publication Number Publication Date
US20140281194A1 true US20140281194A1 (en) 2014-09-18

Family

ID=50513663

Family Applications (3)

Application Number Title Priority Date Filing Date
US13/839,595 Abandoned US20140281194A1 (en) 2013-03-15 2013-03-15 Dynamically-sizeable granule storage
US13/973,491 Active 2033-08-20 US9384793B2 (en) 2013-03-15 2013-08-22 Dynamic granule-based intermediate storage
US15/177,022 Active US9740406B2 (en) 2013-03-15 2016-06-08 Dynamic granule-based intermediate storage

Family Applications After (2)

Application Number Title Priority Date Filing Date
US13/973,491 Active 2033-08-20 US9384793B2 (en) 2013-03-15 2013-08-22 Dynamic granule-based intermediate storage
US15/177,022 Active US9740406B2 (en) 2013-03-15 2016-06-08 Dynamic granule-based intermediate storage

Country Status (5)

Country Link
US (3) US20140281194A1 (en)
EP (1) EP2778891A1 (en)
JP (1) JP5941489B2 (en)
KR (2) KR101910840B1 (en)
CN (1) CN104049908B (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150363126A1 (en) * 2014-06-13 2015-12-17 Seagate Technology Llc Logical zone mapping
US20160011778A1 (en) * 2014-07-11 2016-01-14 Kiran Kumar Devarapalli Method and System for Writing to and Reading from Computer Readable Media
US9443553B2 (en) * 2014-04-28 2016-09-13 Seagate Technology Llc Storage system with multiple media scratch pads
US10467172B2 (en) 2016-06-01 2019-11-05 Seagate Technology Llc Interconnect for shared control electronics
CN112214169A (en) * 2020-09-28 2021-01-12 深圳大学 Data storage device and stored data migration method
US11061595B2 (en) * 2019-05-10 2021-07-13 Seagate Technology Llc Logical address remapping for direct write

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461390B (en) * 2014-12-05 2017-10-24 华为技术有限公司 Write data into the method and device of imbricate magnetic recording SMR hard disks
US20160299698A1 (en) * 2015-04-10 2016-10-13 HGST Netherlands B.V. Realm partitioning in hard drives
US9841906B2 (en) * 2016-02-01 2017-12-12 Seagate Technology Llc Zone forward drive management
US10168763B2 (en) * 2016-08-09 2019-01-01 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Modification of when workloads access data units and/or on which storage devices data units are stored to conserve power
US10282109B1 (en) * 2016-09-15 2019-05-07 Altera Corporation Memory interface circuitry with distributed data reordering capabilities
US9990949B1 (en) 2017-09-05 2018-06-05 Seagate Technology Llc Multi-channel data recording
US10923178B1 (en) * 2020-02-27 2021-02-16 Western Digital Technologies, Inc. Data storage with improved write performance for preferred user data
CN113949713A (en) * 2021-10-15 2022-01-18 佳缘科技股份有限公司 Dynamic storage method based on data drift, storage medium and computer equipment
US20240020036A1 (en) * 2022-07-18 2024-01-18 Micron Technology, Inc. Virtual binning in a memory device
CN116737086B (en) * 2023-08-14 2023-11-17 江苏云途半导体有限公司 Read-write method of embedded nonvolatile memory

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103241A1 (en) * 2002-10-28 2004-05-27 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US20090015794A1 (en) * 2007-07-11 2009-01-15 Seiko Epson Corporation Polarization Conversion Unit, Polarization Conversion Device, and Projector
US20090157940A1 (en) * 2007-12-15 2009-06-18 Hitachi Global Storage Technologies Netherlands, B.V. Techniques For Storing Data In Multiple Different Data Storage Media
US20110004724A1 (en) * 2009-07-06 2011-01-06 Samsung Electronics Co., Ltd. Method and system for manipulating data
US20120131265A1 (en) * 2010-11-23 2012-05-24 International Business Machines Corporation Write cache structure in a storage system

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557770A (en) 1993-03-24 1996-09-17 International Business Machines Corporation Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk
JP3419538B2 (en) * 1994-03-24 2003-06-23 株式会社日立製作所 Storage control method and disk system with compression function using the same
JPH09160813A (en) * 1995-12-08 1997-06-20 Sony Corp File managing device
JP2943693B2 (en) 1996-04-26 1999-08-30 日本電気株式会社 Sort work file space management method
JPH1185411A (en) * 1997-09-01 1999-03-30 Toshiba Corp Disk array device, and data relocation method therefor, and storage medium storing program information on the relocation method
JPH11194899A (en) * 1997-12-26 1999-07-21 Toshiba Corp Disk storage system and data updating method applied to the system
JPH11296431A (en) * 1998-04-10 1999-10-29 Nec Corp Information processor and mapping method for cache memory
JP2000222287A (en) 1999-02-04 2000-08-11 Olympus Optical Co Ltd Information recording and reproducing device
US8289984B2 (en) 2003-01-13 2012-10-16 Emlilex Design & Manufacturing Corporation Allocation-unit-based virtual formatting methods and devices employing allocation-unit-based virtual formatting methods
WO2004095201A2 (en) 2003-04-09 2004-11-04 Intervideo Inc. Systems and methods for caching multimedia data
JP4257834B2 (en) 2003-05-06 2009-04-22 インターナショナル・ビジネス・マシーンズ・コーポレーション Magnetic disk device, file management system and method thereof
US7293156B2 (en) 2003-07-15 2007-11-06 Xiv Ltd. Distributed independent cache memory
US7996645B2 (en) * 2003-09-26 2011-08-09 Hitachi Global Storage Technologies Netherlands B.V. Log-structured file system for disk drives with shingled writing
US8756399B2 (en) 2006-01-25 2014-06-17 Seagate Technology Llc Mutable association of a set of logical block addresses to a band of physical storage blocks
EP1990731B1 (en) 2006-02-28 2015-05-27 Fujitsu Limited Processor having prefetch function
DE602006007103D1 (en) 2006-03-28 2009-07-16 Comadur Sa Method for decorating a ceramic part
JP5037881B2 (en) 2006-04-18 2012-10-03 株式会社日立製作所 Storage system and control method thereof
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
JP2008140459A (en) 2006-11-30 2008-06-19 Toshiba Corp Hybrid disk storage device and disk write-method applied to the device
US20100115175A9 (en) 2006-12-18 2010-05-06 Zhiqing Zhuang Method of managing a large array of non-volatile memories
JP2008181416A (en) 2007-01-25 2008-08-07 Hitachi Ltd Storage system and data management method
JP2009160813A (en) 2008-01-07 2009-07-23 Anqbell Japan Co Ltd Writing paper book
JP5141402B2 (en) 2008-06-26 2013-02-13 富士通株式会社 Storage system, copy control method, and copy control apparatus
US8549208B2 (en) 2008-12-08 2013-10-01 Teleputers, Llc Cache memory having enhanced performance and security features
JP5221332B2 (en) * 2008-12-27 2013-06-26 株式会社東芝 Memory system
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
JP2010257094A (en) 2009-04-23 2010-11-11 Hitachi Ltd Method for clipping migration candidate file in hierarchical storage management system
US8176289B2 (en) 2009-05-21 2012-05-08 Red Hat Israel, Ltd. Method to support sparse volumes or thin provisioned volumes in real time
CN101576856A (en) 2009-06-18 2009-11-11 浪潮电子信息产业股份有限公司 Buffer data replacement method based on access frequency within long and short cycle
US9110594B2 (en) 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US8560770B2 (en) 2009-11-13 2013-10-15 Seagate Technology Llc Non-volatile write cache for a data storage system
US9514055B2 (en) 2009-12-31 2016-12-06 Seagate Technology Llc Distributed media cache for data storage systems
US8285915B2 (en) 2010-01-13 2012-10-09 International Business Machines Corporation Relocating page tables and data amongst memory modules in a virtualized environment
KR101654774B1 (en) * 2010-02-08 2016-09-06 시게이트 테크놀로지 엘엘씨 Data storage device, storage medium access method and storing medium thereof
JP2011194899A (en) 2010-03-17 2011-10-06 Ntn Corp Wheel bearing device with built-in in-wheel type motor
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US9569351B2 (en) 2010-10-25 2017-02-14 Seagate Technology Llc Storing corresponding data units in a common storage unit
JP5720204B2 (en) 2010-11-26 2015-05-20 富士通株式会社 Access control program, access control method, and information processing apparatus
US9280477B2 (en) 2010-12-13 2016-03-08 Seagate Technology Llc Data storage management in a memory device
US9015549B2 (en) 2011-04-26 2015-04-21 Seagate Technology Llc Iterating inner and outer codes for data recovery
KR20120121736A (en) 2011-04-27 2012-11-06 삼성전자주식회사 Method for writing data, and storage device
KR101854206B1 (en) 2011-04-27 2018-05-04 시게이트 테크놀로지 엘엘씨 Method for writing and storage device using the method
US8913335B2 (en) * 2011-05-23 2014-12-16 HGST Netherlands B.V. Storage device with shingled data and unshingled cache regions
US8654472B2 (en) * 2011-11-29 2014-02-18 HGST Netherlands B.V. Implementing enhanced fragmented stream handling in a shingled disk drive
US8909859B2 (en) * 2012-03-01 2014-12-09 HGST Netherlands B.V. Implementing large block random write hot spare SSD for SMR RAID
CN102681952B (en) * 2012-05-12 2015-02-18 北京忆恒创源科技有限公司 Method for writing data into memory equipment and memory equipment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040103241A1 (en) * 2002-10-28 2004-05-27 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US20090015794A1 (en) * 2007-07-11 2009-01-15 Seiko Epson Corporation Polarization Conversion Unit, Polarization Conversion Device, and Projector
US20090157940A1 (en) * 2007-12-15 2009-06-18 Hitachi Global Storage Technologies Netherlands, B.V. Techniques For Storing Data In Multiple Different Data Storage Media
US20110004724A1 (en) * 2009-07-06 2011-01-06 Samsung Electronics Co., Ltd. Method and system for manipulating data
US20120131265A1 (en) * 2010-11-23 2012-05-24 International Business Machines Corporation Write cache structure in a storage system

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9443553B2 (en) * 2014-04-28 2016-09-13 Seagate Technology Llc Storage system with multiple media scratch pads
US9874915B2 (en) 2014-06-13 2018-01-23 Seagate Technology Llc Extended file attributes for redundant data storage
US9541978B2 (en) 2014-06-13 2017-01-10 Seagate Technology Llc Redundancies for reconstruction in mass data storage systems
US20150363126A1 (en) * 2014-06-13 2015-12-17 Seagate Technology Llc Logical zone mapping
US9880602B2 (en) 2014-06-13 2018-01-30 Seagate Technology Llc Power characteristics in a system of disparate storage drives
US9965011B2 (en) 2014-06-13 2018-05-08 Seagate Technology Llc Controller interface for operation of multiple storage drives
US10152105B2 (en) 2014-06-13 2018-12-11 Seagate Technology Llc Common controller operating multiple storage drives
US9423965B2 (en) * 2014-07-11 2016-08-23 Dell Products L.P. Method and system for writing to and reading from computer readable media
US20160011778A1 (en) * 2014-07-11 2016-01-14 Kiran Kumar Devarapalli Method and System for Writing to and Reading from Computer Readable Media
US9760287B2 (en) 2014-07-11 2017-09-12 Dell Products L.P. Method and system for writing to and reading from computer readable media
US10467172B2 (en) 2016-06-01 2019-11-05 Seagate Technology Llc Interconnect for shared control electronics
US11061595B2 (en) * 2019-05-10 2021-07-13 Seagate Technology Llc Logical address remapping for direct write
CN112214169A (en) * 2020-09-28 2021-01-12 深圳大学 Data storage device and stored data migration method

Also Published As

Publication number Publication date
KR101910840B1 (en) 2018-12-19
US20140281186A1 (en) 2014-09-18
US9384793B2 (en) 2016-07-05
KR20140113353A (en) 2014-09-24
CN104049908A (en) 2014-09-17
KR20160086299A (en) 2016-07-19
US9740406B2 (en) 2017-08-22
JP2014182823A (en) 2014-09-29
JP5941489B2 (en) 2016-06-29
US20160283115A1 (en) 2016-09-29
EP2778891A1 (en) 2014-09-17
CN104049908B (en) 2018-07-31

Similar Documents

Publication Publication Date Title
US9740406B2 (en) Dynamic granule-based intermediate storage
US9588887B2 (en) Staging sorted data in intermediate storage
US9368130B2 (en) Data storage system, method of writing to storage in the data storage system, hard disk and method of forming the hard disk
JP5792841B2 (en) Method and apparatus for managing data in memory
US10381040B1 (en) Dynamic hybrid shingled magnetic recording device
US11200162B2 (en) Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
KR102357203B1 (en) Read cache management
US20100325352A1 (en) Hierarchically structured mass storage device and method
KR101678868B1 (en) Apparatus for flash address translation apparatus and method thereof
US9804786B2 (en) Sector translation layer for hard disk drives
US10223277B2 (en) SMR drive with multi-level write-cache for high random-write performance
US20170075809A1 (en) Systems and methods for managing cache of a data storage device
US20200104047A1 (en) Container key value store for data storage devices
US8953269B1 (en) Management of data objects in a data object zone
US9373347B2 (en) Data write management
US10282096B1 (en) Identification of data with predetermined data pattern
JP6285762B2 (en) Error correction code control method and mass storage
US9875055B1 (en) Check-pointing of metadata

Legal Events

Date Code Title Description
AS Assignment

Owner name: SEAGATE TECHNOLOGY LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GAERTNER, MARK A.;EDGAR, BRIAN THOMAS;REEL/FRAME:030172/0514

Effective date: 20130405

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION