Data storage devices are used to access digital data in a fast and efficient manner. At a user level, data are often structured in terms of variable length files, which can be constituted from one or more fixed-sized logical blocks (such as logical blocks which are addressed using logical block addresses (LBAs)).
To store or retrieve user data with an associated data storage device, host commands are generally issued to the device using a logical block convention. The device links LBAs associated with host write commands to physical locations or blocks of media on which the data are to be stored. The device may also utilize logical to physical translation methods to locate logical blocks in an optimal physical location from which the data are to be retrieved.
When the data storage device is characterized as a disc drive, a controller may be used to execute a seek command to move a data transducer adjacent a rotating recording disc and carry out the data transfer operation with the associated physical block(s). Other types of data storage devices (for example, solid state data storage devices that have no moving parts) generally carry out other types of access operations to transfer the associated data.
With continued demands for data storage devices with ever higher data storage and data transfer capabilities, there remains a continual need for improvements in a manner in which storage of data associated with logical blocks is managed within the data storage device. It is to these and other improvements that the present embodiments are generally directed.
In a particular embodiment, a data storage device includes one or more storage media that comprise a plurality of physical storage locations. The device also includes at least one cache memory having a logical space that includes a plurality of separately managed logical block address (LBA) ranges. Additionally, a controller is included in the device. The controller is configured to receive data extents addressed by a first LBA and a logical block count. The controller is also configured to identify at least one separately managed LBA range of the plurality of separately managed LBA ranges in the at least one cache memory based on LBAs associated with at least some of the received data extents. The controller stores the at least some of the received data extents in substantially monotonically increasing LBA order in at least one physical storage location, of the at least one cache memory, assigned to the identified at least one LBA range.
In another particular embodiment, a method is disclosed that includes transferring first data extents from a first memory area to a second memory area based on logical block addresses (LBAs) associated with the first data extents being within an LBA range of a plurality of separately managed LBA ranges. The first data extents are stored in substantially monotonically increasing LBA order in at least one physical storage location, of the second memory area, assigned to the LBA range of the plurality of LBA ranges.
In yet another particular embodiment, a method is disclosed that includes providing, in a data storage device, one or more storage media that include a plurality of physical storage locations. The method also includes providing a plurality of cache memory levels in the data storage device. The plurality of provided cache memory levels includes a first level cache memory and a second level cache memory. The second level cache memory has a logical space that includes a plurality of separately managed logical block address (LBA) ranges. Data extents addressed by a first LBA and a logical block count are stored into the first level cache memory substantially in an order in which the data extents are received in the data storage device. The method further includes gathering at least some of the data extents stored in the first level cache memory, and identifying at least one LBA range of the plurality of LBA ranges in the second level cache memory based on LBAs associated with the gathered data extents. The gathered data extents are stored in substantially monotonically increasing LBA order in at least one physical storage location, of the second level cache memory, assigned to the identified at least one LBA range.
The disclosure is related to multi-level write caching for data storage management in data storage or memory devices.
Referring to
The memory device 108 may include a controller 110, which may be coupled to the processor 102 via a connection through the system bus 103. In one embodiment, the memory device 108 comprises at least one storage entity 112. In a particular embodiment, storage entity 112 includes a plurality of memories of various sizes and types. In some embodiments, device 108 employs a multi-level cache that allows for sequential appends of data in the caches, and pre-grouped and pre-sorted logical block addresses (LBAs) in an upper level cache when promoting to main store and its one-extent-per-band mapping. The storage entity 112 is organized as a non-overlapping set of storage areas referred to herein as physical bands as further described in
During operation, the processor 102 may send commands and data to the memory device 108 to retrieve or store data. The controller 110 can receive the commands and data from the processor 102 and then manage the execution of the commands to store or retrieve data from storage entity 112. It should be noted that controller 110 may include one or more integrated circuits.
In some embodiments, write commands received in memory device 108 from processor 102 or any other suitable sending interface include data addressed by LBAs. Device 108 processes the received commands and ultimately stores the data accompanying the received commands into storage entity 112. Locations within main store 113 may be mapped to individual LBAs and/or LBA extents. In some embodiments, individual ones of the LBAs or LBA extents are dynamically assigned to different individual ones (or groups) of locations in the main store 113. In other embodiments, individual ones of the LBAs or LBA extents may be statically associated with individual ones (or groups) of locations in the main store 113. For various reasons, some of which are described further below, performance of device 108 may be optimized by first temporarily storing received write commands in locations within cache memories 114 and/or 115, for example, and at a later time, transferring the data into locations in the main store 113. It should be noted that it is not necessary that all data that is received in device 108 be ultimately transferred to main store 113.
In some embodiments, first level cache 114 in storage entity 112 may be configured as a circular buffer in which data for host write commands fill substantially in arrival order as LBA extents for one command, multiple sequential commands, or multiple overlapping commands. In one embodiment, the first level cache 114 comprises a solid state memory having a plurality of erasure blocks configured as a circular buffer with a plurality of memory slots that are re-used in a predetermined order. Each memory slot of the plurality of memory slots utilizes a different portion of the plurality of erasure blocks. In such an embodiment, the controller 110 is configured to move any of the received data extents contained in an earliest-filled slot of the plurality of memory slots to the second cache memory 115 or the main store 113 before the solid state memory is re-used for data storage.
In some embodiments, data for multiple received commands are LBA sorted by the processor controller 110 before filling the first level cache 114 in storage entity 112. When a number of LBA extents stored in first level cache 114 reach a predetermined threshold, for example, they are transferred to second level cache 115. When a number of LBA extents stored in second level cache 115 reach a threshold, for example, they are transferred from second level cache to main store 113. In some embodiments, as the received LBA extents are transferred to second level cache 115, controller 110 sorts or groups the LBA extents read from first level cache 114 into different smaller groups or subsets based on ranges of LBAs, and then writes the LBA extents to second level cache 115 in different LBA-ordered smaller groups.
In one embodiment, data transfers from first level cache 114 to second level cache 115 are carried out by sorting the LBA extents stored in first level cache 114 in monotonically increasing LBA order, discarding repeated LBAs such that only the most recently received data for a given LBA is retained, and then writing to the second level cache 115 in LBA order. For example, as shown in
As indicated above, physical memory in 112 may be organized for three uses, namely first level cache 114, second level cache 115 and main store 113. Thus, although main store 113 may occupy a particular region of storage entity 112 that is separate from regions of storage entity 112 allocated to first level cache 114 and second level cache 115, in different embodiments, any available physical bands from a set of physical bands 200 may be dynamically assigned to logical bands 206. In one embodiment, only one physical band 202 may be assigned to any one logical band 206. The assignment of the physical band 202 to the logical band 206 may be carried out dynamically. In such embodiments with dynamic assignment, logical bands 206 whose LBAs have never been a part of any host write command received in memory device 108, or whose LBAs have been unmapped by a host unmap command may have no physical band assigned. In general, a “written” LBA can be converted into an “unwritten” logical block. This conversion may be carried out with the help of a suitable host command such as the host unmap command. It should be noted that in some embodiments, due to over-provisioning, N is substantially larger than L. In other embodiments, due to thin provisioning, N is substantially smaller than L. In some embodiments, logical-physical band assignments may be static. In such embodiments, an additional scratchpad memory (not shown) may be employed to facilitate data updates of physical bands 202 in their respective fixed/static logical assignment. In certain embodiments, multiple physical bands 202 may be assigned to a single logical band 206. In some embodiments, the assignment of multiple physical bands 202 to a single logical band 206 accommodates logical bands with larger data size than one of the physical bands. In other embodiments, the assignment of multiple physical bands 202 to a single logical band 206 is temporary during an update of part of the LBA extent of the logical band such as early in a sequential write to a logical band 206.
In one embodiment, second level cache 115 (shown in
M≅√{square root over (N−L)} Equation 1
As noted above, data is stored in first level cache 114 substantially in an order that it is received in memory device 108 (shown in
A decision to select a particular LBA range 210 for cleaning to one or more logical bands associated with the particular LBA range 210 may be made based on one or more different criteria. The criteria may include the elapsing of a predetermined time period of allocation of a physical band to the particular LBA range (to clean “old” bands); a physical band in the particular LBA range having a substantially small amount of valid data; exceeding a threshold level of resources assigned to the particular LBA range (i.e., a large number of physical bands having been assigned to a particular LBA range), etc. In general, any suitable cleaning criteria may be used based on the application(s) for which a storage device (such as memory device 108 of
Disc drive 400 is shown in
Memory 406 can include random access memory (RAM), read only memory (ROM), and other sources of resident memory for microprocessor 404. Disc drive 400 includes one or more data storage discs 412. Discs 412 are rotated at a substantially constant high speed by a spindle control circuit 414. One or more heads 416 communicate with the surface(s) of discs 412 to carry out data read/write operations. The radial position of heads 416 is controlled through the application of current to a coil in an actuator assembly 417. A servo control system 420 provides such control.
As noted above, in some embodiments, tracks may be written on one or more storage discs 412 in a partially-overlaying relationship. The overlaying of tracks is shown in close-up view of area 422 of disc(s) 412. In area 422, a corner of head 416A is shown writing a track portion 424. Different shading within the track portion 424 represents different magnetic orientations that correspond to different values of stored binary data. The track portion 424 is overlaid over part of track portion 425. Similarly, track portion 425 is overlaid over part of portion 426, portion 426 is overlaid over portion 427, etc.
The portions 424-427 may be part of what is referred to herein as a physical band which, in this embodiment, may include tens, hundreds or thousands of similarly overlapping, concentric portions 424-427. Gaps are created between such physical bands so that each physical band can be updated independently of other physical bands. The overlaying of successive track portions within a physical band in shingled magnetic recording (SMR) means that individual parts of the physical band may not be randomly updated on their own. This is because spacings between centers of track portions 424, 425, 426, 427, for example, are smaller than a width of a write pole (not separately shown) of head 416. However, a width of a reader (not separately shown) of head 416 may be small enough to read individual track portions 424, 425, 426, 427, thereby enabling random reads of data to be carried out. As described above in connection with
In certain embodiments, disc drive 400 includes a memory 428 that may serve as, for example, a first/upper level cache. In some embodiments, memory 428 is physically separate from discs 412. The memory 428 may be of a different type than the discs 412. For example, in certain embodiments, memory 428 may be constructed from solid-state components. In one embodiment, memory 428 may be a Flash memory. In such an embodiment, the Flash memory may include a plurality of programmable devices that are capable of storing data. A plurality of physical erasure blocks are within each of the devices, and each physical erasure block has physical pages of transistors. The Flash memory may be logically organized as a plurality of stripes where each stripe may include one or more physical erasure blocks or physical pages from multiple devices. The physical erasure blocks and/or stripes may be managed as physical bands and therefore may be a part of what are referred herein as physical bands.
In some embodiments, the one or more storage discs 412 are managed as non-overlapping disc portion 430 and disc portion 435. In some embodiments, disc portion 430 is used for a second level cache (i.e., a portion of the disc(s) 412 may be reserved for use as second level cache). In other embodiments, locations for the second level cache may be dynamically allocated from a pool of available locations on disc(s) 412. Thus, although disc portion 430 is shown in
Disc drive 400 may use memory 428 in conjunction with disc portion 430 in order to manage data as the data is being transferred to main storage locations 435 on disc(s) 412. In the interest of simplification, components such as a read/write channel which encodes data and provides requisite write current signals to heads 416 is not shown in
The physical bands of drive 400 may be utilized in a manner described above in connection with
Dashed lines within dashed box 112 of
As indicated earlier, although second level cache 115 is shown in
In accordance with certain aspects, the solid-state drive 500 includes a circuit card assembly 502 that includes a connector 506 for connection to a host computer. In accordance with certain aspects, the connector 506 includes a NVMe, SAS, FC-AL, SCSI, PCI-E, IDE, AT, ATA, SATA, IEEE-1394, USB or other interface connector adapted for connection to a host.
If, as shown in
SSD 500 does not include bands of tracks on a disc of the type described in connection with
In accordance with various embodiments, the methods described herein may be implemented as one or more software programs running on one or more computer processors or controllers, such as those included in devices 108, 400 and 500. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays and other hardware devices can likewise be constructed to implement the methods described herein.
The illustrations of the embodiments described herein are intended to provide a general understanding of the structure of the various embodiments. The illustrations are not intended to serve as a complete description of all of the elements and features of apparatus and systems that utilize the structures or methods described herein. Many other embodiments may be apparent to those of skill in the art upon reviewing the disclosure. Other embodiments may be utilized and derived from the disclosure, such that structural and logical substitutions and changes may be made without departing from the scope of the disclosure. Additionally, the illustrations are merely representational and may not be drawn to scale. Certain proportions within the illustrations may be exaggerated, while other proportions may be reduced. Accordingly, the disclosure and the figures are to be regarded as illustrative rather than restrictive.
One or more embodiments of the disclosure may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to limit the scope of this application to any particular invention or inventive concept. Moreover, although specific embodiments have been illustrated and described herein, it should be appreciated that any subsequent arrangement designed to achieve the same or similar purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all subsequent adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the description.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b) and is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, various features may be grouped together or described in a single embodiment for the purpose of streamlining the disclosure. This disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter may be directed to less than all of the features of any of the disclosed embodiments.
The above-disclosed subject matter is to be considered illustrative, and not restrictive, and the appended claims are intended to cover all such modifications, enhancements, and other embodiments, which fall within the true spirit and scope of the present disclosure. Thus, to the maximum extent allowed by law, the scope of the present disclosure is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited by the foregoing detailed description.
The present application is a continuation-in-part of and claims priority of U.S. patent application Ser. No. 13/839,132, filed Mar. 15, 2013, the content of which is hereby incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5586291 | Lasker et al. | Dec 1996 | A |
5852705 | Hanko et al. | Dec 1998 | A |
5884098 | Mason, Jr. | Mar 1999 | A |
6157984 | Fisher et al. | Dec 2000 | A |
6295577 | Anderson et al. | Sep 2001 | B1 |
6330640 | Williams et al. | Dec 2001 | B1 |
6366980 | Haines et al. | Apr 2002 | B1 |
6516426 | Forehand et al. | Feb 2003 | B1 |
6757781 | Williams et al. | Jun 2004 | B2 |
6826630 | Olds et al. | Nov 2004 | B2 |
6907499 | Herbst et al. | Jun 2005 | B2 |
6996668 | Gaertner et al. | Feb 2006 | B2 |
7099993 | Keeler | Aug 2006 | B2 |
7318121 | Gaertner et al. | Jan 2008 | B2 |
7350046 | Sicola et al. | Mar 2008 | B2 |
7406547 | Haines et al. | Jul 2008 | B2 |
7966450 | Klein | Jun 2011 | B2 |
7982994 | Erden et al. | Jul 2011 | B1 |
8015433 | Chu et al. | Sep 2011 | B2 |
8032699 | Feldman et al. | Oct 2011 | B2 |
8171219 | Trika et al. | May 2012 | B2 |
8195909 | Haines et al. | Jun 2012 | B2 |
8296504 | Chu et al. | Oct 2012 | B2 |
8327076 | Murphy et al. | Dec 2012 | B2 |
8332582 | Nakamura et al. | Dec 2012 | B2 |
8402210 | Mannen et al. | Mar 2013 | B2 |
8412884 | Ide et al. | Apr 2013 | B1 |
8417839 | Ng et al. | Apr 2013 | B1 |
8443165 | Haines et al. | May 2013 | B2 |
8468370 | Miller et al. | Jun 2013 | B2 |
8519673 | Williams | Aug 2013 | B2 |
8560770 | Haines et al. | Oct 2013 | B2 |
8621144 | Eschmann et al. | Dec 2013 | B2 |
8621145 | Kimmel | Dec 2013 | B1 |
8631204 | Haines et al. | Jan 2014 | B2 |
8724401 | Friendshuh et al. | May 2014 | B2 |
8745421 | Miller et al. | Jun 2014 | B2 |
8819375 | Pruett et al. | Aug 2014 | B1 |
20020029354 | Forehand et al. | Mar 2002 | A1 |
20020108016 | Haines et al. | Aug 2002 | A1 |
20030145165 | Herbst et al. | Jul 2003 | A1 |
20030149815 | Williams et al. | Aug 2003 | A1 |
20040174631 | Tanaka et al. | Sep 2004 | A1 |
20050015567 | Zohar | Jan 2005 | A1 |
20050055517 | Olds et al. | Mar 2005 | A1 |
20050066121 | Keeler | Mar 2005 | A1 |
20050240792 | Sicola et al. | Oct 2005 | A1 |
20060075202 | Gaertner et al. | Apr 2006 | A1 |
20070150693 | Kaneko et al. | Jun 2007 | A1 |
20080007219 | Williams | Jan 2008 | A1 |
20080065845 | Montero et al. | Mar 2008 | A1 |
20080313396 | Feldman et al. | Dec 2008 | A1 |
20090198888 | Mannen et al. | Aug 2009 | A1 |
20090199217 | McBrearty et al. | Aug 2009 | A1 |
20090276588 | Murase | Nov 2009 | A1 |
20100037009 | Yano | Feb 2010 | A1 |
20100293337 | Murphy et al. | Nov 2010 | A1 |
20100332717 | Maeda et al. | Dec 2010 | A1 |
20110075490 | Friendshuh et al. | Mar 2011 | A1 |
20110082985 | Haines et al. | Apr 2011 | A1 |
20110106804 | Keeler et al. | May 2011 | A1 |
20110119442 | Haines et al. | May 2011 | A1 |
20110161557 | Haines et al. | Jun 2011 | A1 |
20120017045 | Haines et al. | Jan 2012 | A1 |
20120069466 | Okamoto | Mar 2012 | A1 |
20120131265 | Koltsidas | May 2012 | A1 |
20120221826 | Haines et al. | Aug 2012 | A1 |
20130038960 | Song | Feb 2013 | A1 |
20130275780 | Miller et al. | Oct 2013 | A1 |
20130318295 | Kojima | Nov 2013 | A1 |
20140177085 | Haga et al. | Jun 2014 | A1 |
20140181369 | Horn | Jun 2014 | A1 |
20140189234 | Tang et al. | Jul 2014 | A1 |
20140254042 | Yeo et al. | Sep 2014 | A1 |
20140281183 | Edgar et al. | Sep 2014 | A1 |
20140281229 | Kowles | Sep 2014 | A1 |
20140285923 | Aoki | Sep 2014 | A1 |
Entry |
---|
Write Caching, Charles M. Kozierok, Apr. 17, 2001, retrieved from http://www.pcguide.com/ref/hdd/op/cacheWrite-c.html on Jan. 11, 2014 (2 pages). |
Momentus 5400 PSD, Seagate, copyright 2007, retrieved from http://www.seagate.com/docs/pdf/datasheet/disc/ds—momentus—5400—psd.pdf on Aug. 14, 2013 (2 pages). |
22 File Caching, Spring 2000, retrieved from www.mpi-sws.org/˜druschel/cources/os/lectures/fs-chaching.ps.gz? Jan. 11, 2014 (2 pages). |
Product Manual Momentus 5400 FDE, Seagate, Aug. 2007, retrieved from http://www.seagate.com/staticfiles/support/disc/manuals/notebook/momentus/5400.2/PATA/100377037c.pdf on Jan. 11, 2014 (56 pages). |
Computer Architecture: A Quantitative Approach (Third Edition), Hennessy et al., May 31, 2002, ISBN-10 1558605957, ISBN-13 978-1558605961, p. 683 (1 page). |
Data Storage—Logical Block Addressing (LBA), Nico Gerard, Sep. 21, 2010, retrieved from http://gerardnico.com/wiki/data—storage/lba on Jan. 11, 2014 (2 pages). |
What is disk cache, Webopedia, retrieved from http://www.webopedia.com/TERM/D/disk—cache.html on Jan. 11, 2014 (3 pages). |
Number | Date | Country | |
---|---|---|---|
20150106568 A1 | Apr 2015 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13839132 | Mar 2013 | US |
Child | 14575616 | US |