US20140025868A1 - System and method for managing storage device caching - Google Patents

System and method for managing storage device caching Download PDF

Info

Publication number
US20140025868A1
US20140025868A1 US13/953,395 US201313953395A US2014025868A1 US 20140025868 A1 US20140025868 A1 US 20140025868A1 US 201313953395 A US201313953395 A US 201313953395A US 2014025868 A1 US2014025868 A1 US 2014025868A1
Authority
US
United States
Prior art keywords
data
user
caching
cache
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/953,395
Inventor
Martin R. Furuhjelm
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/953,395 priority Critical patent/US20140025868A1/en
Publication of US20140025868A1 publication Critical patent/US20140025868A1/en
Assigned to SEAGATE TECHNOLOGY LLC reassignment SEAGATE TECHNOLOGY LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FURUHJELM, MARTIN R
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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/221Static RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10675Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control
    • G11B2020/10685Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control input interface, i.e. the way data enter the buffer, e.g. by informing the sender that the buffer is busy
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/1075Data buffering arrangements, e.g. recording or playback buffers the usage of the buffer being restricted to a specific kind of data
    • G11B2020/10759Data buffering arrangements, e.g. recording or playback buffers the usage of the buffer being restricted to a specific kind of data content data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10805Data buffering arrangements, e.g. recording or playback buffers involving specific measures to prevent a buffer overflow
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2508Magnetic discs
    • G11B2220/2516Hard disks

Definitions

  • the present disclosure is directed to data storage devices.
  • the present disclosure is directed to cache management systems for data storage devices.
  • Data storage devices such as magnetic disk drives, optical disk drives, hybrid drives, and solid state drives are used to store data for subsequent retrieval.
  • Such devices employ data caches, which are typically high-speed semiconductor memory chips that enable the devices to rapidly manage the data and commands received from a host computer. Without caching, all read and write commands from the host computer would result in an access to the mass storage medium, such as a magnetic disk. This may result in significant time latencies due to mechanical positioning of the head relative to the magnetic disk. By caching, the storage device can buffer data that is likely to be accessed by the host computer so that when the data is actually accessed, the data is made available more quickly.
  • an apparatus may comprise a controller configured to pin data from a non-volatile storage medium to a data cache based on at least one user-selectable caching mode.
  • a device may comprise a processor configured to display a graphical user interface (GUI) at a display, and receive, from the GUI, an indication of a user selection of a data caching mode that determines which data to pin from a non-volatile memory of a data storage device to a data cache of the data storage device.
  • the processor may be configured to then send an indication of the user selection of the data caching mode to the data storage device.
  • GUI graphical user interface
  • a data storage memory device may store instructions that, when executed by a processor, perform a method comprising pinning data from a non-volatile memory to a data cache based on at least one user-selectable caching mode.
  • FIG. 1 is a schematic illustration of a data storage device in use with a host computer, where the data storage device includes a cache management system having user-selectable caching modes.
  • FIG. 2 is a flow diagram of a method of using a data storage device that includes user-selectable caching modes.
  • FIG. 3 is a flow diagram of a method of using a data storage device that includes an active caching mode.
  • the present disclosure is directed to a data storage device having a caching management system (CMS) that allows a user to interactively control and monitor the data caching operations of the device.
  • CMS may include a plurality of user-selectable caching modes, where each caching mode includes an algorithm for caching data. This allows the user to modify performance of the data storage device and an associated host computer system based on the particular needs and desires of the user. This is in comparison to caching selections that rely solely on system-controlled caching algorithms. Such algorithms are typically based on statistical results (e.g., cache hit rates) rather than particular needs of individual users.
  • FIG. 1 shows storage device 10 in use with host computer 12 , where host computer 12 may be one or more computer-based systems configured to engage with storage device 10 .
  • Storage device 10 is an example of a suitable data storage device of the present disclosure, and includes housing 14 , actuator 16 , display unit 18 , controller 20 , ROM module 22 , RAM cache 24 , non-volatile cache (NVC) 26 , and head disk assembly (HDA) 28 .
  • Housing 14 is an exterior casing for storage device 10 , which desirably encases and retains the interior components, such as one or more of controller 20 , ROM module 22 , RAM cache 24 , NVC 26 , and HDA 28 . Accordingly, storage device 10 may be internal or external to a casing of host computer 12 .
  • Actuator 16 is a user interface (e.g., a push-button user interface) for storage device 10 that is retained by housing 14 and communicates with controller 20 over actuator interface 30 .
  • actuator 16 may be activated (e.g., pressed) by a user to select different caching modes for operating storage device 10 . This allows the user to interact directly with storage device 10 to select which caching mode the user prefers storage device 10 to operate under. While actuator 16 is illustrated in FIG. 1 as a single press-button, storage device 10 may include a variety of different user interfaces for allowing a user to select different caching modes.
  • These user interfaces desirably operate independently of host computer 12 . This allows the user to select caching modes for storage device 10 while access to host computer 12 is unavailable, such as during early stages of a startup sequence. For example, as discussed below, during the initial boot sequence for starting host computer 12 (e.g., after the power-on self test), the user may select a caching mode with actuator 16 that directs controller 20 to cache all data read from HDA 28 . This allows data read from a startup sequence of HDA 28 (e.g., including a boot sector) to be cached for subsequent use.
  • a startup sequence of HDA 28 e.g., including a boot sector
  • Pinning this cached data in a non-volatile cache may reduce subsequent startup times by allowing controller 20 to read the startup sequence data from NVC 26 rather than from the slower HDA 28 . Furthermore, this choice of whether to cache the startup sequence data may be determined entirely by the user.
  • Display unit 18 is a visual display unit retained by housing 14 in a manner that desirably allows the user to view information relating to the data caching in storage device 10 .
  • display unit 16 communicates with controller 20 over display interface 32 .
  • Display unit 18 may include a variety of different units for displaying information to the user, such as liquid-crystal display (LCD) units, light-emitting diode (LED) units, and the like.
  • display unit 18 may be separate from housing 14 , thereby allowing display unit 18 be disposed at a remote location from storage device 10 .
  • display interface 32 may include a communication cable (not shown) that interconnects display unit 18 and controller 20 , and/or may include a wireless transmitter/receiver assembly (not shown).
  • Display unit 18 may provide a variety of different information relating to the data caching in storage device 10 , such as percentages of cache used, percentages of cache hits, cache hit rates, free and/or used cache volumes, available caching modes, selected caching modes, and the like. Because this information is viewable directly from storage device 10 , display unit 18 may display the information independently of host computer 12 . This allows the user to receive caching information even when such information may be unavailable through host computer 12 , such as during startup and shut down sequences.
  • Controller 20 is a circuit assembly that directs the reading and writing operations for storage device 10 , and is configured to respectively communicate with ROM module 22 , RAM cache 24 , NVC 26 , and HDA 28 . Controller 20 may also communicate with host computer 12 via host interface 34 , where host interface 34 may be any suitable interface, such as a universal serial bus (USB) interface, a Serial Advanced Technology Attachment (SATA) interface, an External SATA (eSATA) interface, a Parallel Advanced Technology Attachment (PATA) interface, an IEEE 1394 interface, a Small Computer System Interface (SCSI), a Serial Attached SCSI (SAS) interface, an Integrated Drive Electronics (IDE) interface, a Fiber Channel interface, and the like.
  • USB universal serial bus
  • SATA Serial Advanced Technology Attachment
  • eSATA External SATA
  • PATA Parallel Advanced Technology Attachment
  • IEEE 1394 an IEEE 1394 interface
  • SCSI Small Computer System Interface
  • SAS Serial Attached SCSI
  • IDE Integrated Drive Electronics
  • ROM module 22 is one or more non-volatile memory modules (e.g., read-only memory) for storing information such as firmware.
  • RAM cache 24 is one or more volatile memory modules (e.g., dynamic random access memory) that may function as a volatile data cache during reading and/or writing operations with HDA 28 (i.e., a volatile disk buffer).
  • NVC 26 is one or more solid state, non-volatile memory modules, such as flash memory, magnetic random access memory (MRAM), electrically erasable programmable read-only memory (EEPROM), ferroelectric random access memory (FeRAM), and combinations thereof.
  • MRAM magnetic random access memory
  • EEPROM electrically erasable programmable read-only memory
  • FeRAM ferroelectric random access memory
  • NVC 26 includes a plurality of erasable data blocks (referred to as data blocks 36 ) for storing data, and desirably functions as a non-volatile data cache during reading and/or writing operations with HDA 28 (i.e., a non-volatile disk buffer).
  • data blocks 36 erasable data blocks
  • HDA 28 i.e., a non-volatile disk buffer
  • HDA 28 is one or more head disk assemblies, and is the primary storage medium/media for storage device 10 .
  • HDA 28 includes storage disk 38 and spindle motor 40 , where spindle motor 40 rotates storage disk 38 in a rotational direction during operation.
  • Storage disk 38 includes recordable surface 42 , which is a surface of storage disk 38 having multiple data tracks (not shown) for storing data (e.g., startup sequence data).
  • HDA 28 further includes actuation motor 44 (e.g., a voice coil motor) and actuator arm assembly 46 , where actuator arm assembly 46 may include an actuator arm, suspension assembly, and slider to carry a transducing head for writing data to, and reading data from, the data tracks in recordable surface 42 .
  • actuation motor 44 e.g., a voice coil motor
  • actuator arm assembly 46 may include an actuator arm, suspension assembly, and slider to carry a transducing head for writing data to, and reading data from, the data tracks in recordable surface 42 .
  • Actuation motor 44 is configured to pivot actuator arm assembly 46 about an axis to sweep the transducing head in an arc over recordable surface 42 .
  • the operation of HDA 28 is directed by controller 20 , where controller 20 may communicate with servo and spindle controls to read from, and write data to, recordable surface 42 .
  • Reading data from, and writing data to, HDA 28 is generally slower than the respective operations with RAM cache 24 and/or NVC 26 . This is due in part to the mechanical arrangement of HDA 28 , which requires storage disk 38 to spin up and actuator arm assembly 46 to seek the desired data tracks in recordable surface 42 . As such, pinning data to RAM cache 24 and/or NVC 26 may increase data retrieval efficiencies by allowing controller 20 to read the cached data directly from RAM cache 24 and/or NVC 26 rather than from the slower HDA 28 . Allowing the user to determine which data is to be cached correspondingly provides greater user control over storage device 10 and host computer 12 , and allows the performance of storage device 10 to be modified to suit the particular needs and desires of the user.
  • Storage device 10 also includes CMS 48 , which desirably includes a plurality of user-selectable caching modes (e.g., caching mode 1 , caching mode 2 , . . . , caching mode n) for directing how controller 20 performs cache writing operations from HDA 28 to RAM cache 24 and/or NVC 26 .
  • Instructions for instantiating CMS 48 may be stored on any suitable storage medium/media in storage device 10 , such as in ROM module 22 , NVC 26 , and/or HDA 28 .
  • CMS 48 When storage device 10 is powered up, CMS 48 is desirably copied from the given storage medium to RAM cache 24 . CMS 48 may then direct the cache writing operations that controller 20 performs based on a selected caching mode.
  • the caching modes of CMS 48 may include a variety of different algorithms for directing controller 20 to perform cache writing operations. Furthermore, the caching modes may be preset caching modes, user-defined caching modes, system-modified caching modes, and combinations thereof.
  • the preset caching modes are predefined caching modes that provide suitable default algorithms for performing cache writing operations, and may be stored in any suitable storage medium of storage device 10 , such as ROM module 22 , NVC 26 , and/or HDA 28 .
  • User-defined caching modes are caching modes that users may generate with host computer 12 , as discussed below.
  • System-modified caching modes are caching modes that may be modified by storage device 10 and/or host computer 12 based on cache statistical results.
  • suitable techniques for generating system-modified caching modes based on cache statistical results include those disclosed in Herbst et al., U.S. Patent Application Publication No. 2003/0061444.
  • the user-defined caching modes and the system-modified caching modes may each be stored in any suitable storage medium of storage device 10 , such as NVC 26 and/or HDA 28 .
  • the caching modes may then be copied to RAM cache 24 with CMS 48 when storage device 10 is powered up.
  • the caching modes may define a variety of different algorithms for directing controller 20 to perform cache writing operations from HDA 28 to RAM cache 24 and/or NVC 26 .
  • the caching modes may define usable cache volumes, may define optimal operating characteristics for one or more benchmarks, may apply different algorithms for writing data to the data caches (e.g., first-in-last-out algorithms), may allocate portions of the data caches to specific algorithms (e.g., volatile vs. non-volatile storage), and the like.
  • the caching modes of CMS 48 may include an active caching mode.
  • active caching mode refers to a caching mode in which a controller (e.g., controller 20 ) copies and pins all data read from a storage medium (e.g., HDA 28 ) to one or more data caches of the storage device (e.g., RAM cache 24 and/or NVC 26 ).
  • a controller e.g., controller 20
  • data caches of the storage device e.g., RAM cache 24 and/or NVC 26
  • FIG. 1 when the user selects the active caching mode, all data that controller 20 reads from recordable surface 42 of HDA 28 for transmission to host computer 12 , is also copied and pinned to RAM cache 24 and/or NVC 26 .
  • controller 20 continues to copy and pin all data read from HDA 28 to RAM cache 24 and/or NVC 26 . This may continue until either RAM cache 24 and/or NVC 26 are full, or until the user disables the active caching mode (e.g., the user selects a different caching mode).
  • actuator 16 may function as an on/off switch for enabling and disabling the active caching mode. Accordingly, when the user presses actuator 16 , controller 20 may be directed to operate under the active caching mode, as discussed above. At a subsequent point in time, when the user desires to disable the active caching mode, the user may press actuator 16 again to select another non-active caching mode, thereby disabling the active caching mode.
  • the non-active caching mode may be one of a variety of caching modes, such as a default preset caching mode. Controller 20 may then perform cache writing operations pursuant to the non-active caching mode.
  • actuator 16 may also provide additional data caching functions, such as data purging.
  • data purging may empty entire physical regions of RAM cache 24 and/or NVC 26 , or may selectively purge data based on criteria. Suitable criteria for data purging include the number of hits, the residence time in RAM cache 24 and/or NVC 26 , and the like. The purging of RAM cache 24 and/or NVC 26 in this manner may accordingly free up storage space for subsequent cache writing operations.
  • the purging operation may be performed by pressing and holding actuator 16 for a predetermined time period (e.g., a few seconds).
  • Display unit 18 may also indicate whether controller 20 is operating under the active caching mode. For example, when controller 20 is operating under the active caching mode, display unit 18 may provide one or more visual and/or audible indicators, such as a textual indicator stating “ACTIVE CACHING ON”, an illuminated LED indicator, an audible sound, and the like. When RAM cache 24 and/or NVC 26 become full, the active caching mode may be disabled, and display unit 18 may provide a corresponding indication, such as “CACHE FULL”. Likewise, when the user disables the active caching mode, the display unit 18 may provide a corresponding indication, such as “ACTIVE CACHING OFF”.
  • the active caching mode is particularly suitable for use with hybrid drives (e.g., storage device 10 ) and solid state drives, each of which desirably includes one or more large-volume, non-volatile caches (e.g., NVC 26 ).
  • hybrid drives e.g., storage device 10
  • solid state drives each of which desirably includes one or more large-volume, non-volatile caches (e.g., NVC 26 ).
  • NVC 26 has a storage volume of about 32 gigabytes (GB)
  • controller 20 reads data from HDA 28 at a rate of about 100 megabytes/second
  • the active caching mode may run for about 5 minutes before data blocks 36 of NVC 26 become full.
  • a 250 GB volume for NVC 26 would allow the caching operation under the active caching mode to continue for about 40 minutes before NVC 26 becomes full. Because data is typically re-read from previously cached sectors, the active caching mode may actually continue for greater durations than these examples listed above. As such, providing the user the means to select the active caching mode in combination with large caching volumes allows substantial amounts of data to be pinned to data caches based on the particular needs and desires of the user.
  • This combination is also suitable for caching startup sequence data, as discussed above.
  • the user may select the active caching mode with actuator 16 , thereby directing controller 20 to cache all data read from HDA 28 .
  • This desirably directs controller 20 to copy and pin all startup sequence data to data blocks 36 of NVC 26 .
  • the user may then press actuator 16 again to select a non-active caching mode (e.g., a default caching mode), thereby disabling the active caching mode.
  • a non-active caching mode e.g., a default caching mode
  • the retained startup sequence data may then be read from NVC 26 during subsequent startup sequences of host computer 12 . As discussed above, this may reduce subsequent startup times by allowing controller 20 to read the startup sequence data from NVC 26 rather than from the slower HDA 28 .
  • data cache managers that are based on software are generally unsuitable for selectively caching startup sequence data from data storage devices.
  • Such data cache managers typically require the startup sequence of the host computer to be completed before they may be used. This effectively prevents these types of data cache managers from being selectively operated by a user during the startup sequences.
  • Storage device 10 with CMS 48 allows the user to selectively cache data during a variety of different power cycles of host computer 12 , including startup and shut down sequences.
  • the user may also select caching modes for controller 20 through host computer 12 .
  • host computer 12 may provide software-based tools for allowing the user to select the caching modes for storage device 10 , as well as for reviewing caching statistics and generating user-defined caching modes for CMS 48 .
  • host computer 12 may be one or more computer-based systems configured to engage with storage device 10 .
  • suitable systems for host computer 12 include desktop computers, laptops, server-based systems, personal digital assistants (PDA), telecommunication devices, multimedia players (e.g., portable multimedia players), and combinations thereof.
  • host computer 12 includes graphical user interface (GUI) 50 , memory controller 52 , processor 54 , RAM 56 , input/output (I/O) controller 58 , and data storage device (DSD) interface 60 .
  • GUI graphical user interface
  • memory controller 52 memory controller 52
  • processor 54 RAM 56
  • I/O controller 58 input/output controller 58
  • DSD data storage device
  • Host computer 12 may also include a variety of additional components that are typically contained in computer-based systems.
  • GUI 50 is a user interface, such as an operating system interface, that may be instantiated and stored in RAM 56 during operation.
  • Memory controller 52 is a circuit assembly that interfaces the components of host computer 12 with RAM 56 , and may include logic for mapping addresses of the components of host computer 12 to particular areas of RAM 56 .
  • Processor 54 is one or more processing units, and RAM 56 is one or more volatile random access memory modules.
  • I/O controller 58 is a circuit assembly that interfaces memory controller 52 , processor 54 , and RAM 56 with various input and output components of host computer 12 , including DSD interface 60 .
  • DSD interface 60 is the reciprocating interface of host interface 34 , which allows storage device 10 to engage and communicate with host computer 12 .
  • Suitable interfaces for DSD interface 60 include the reciprocating interfaces for those discussed above for host interface 34 .
  • I/O controller 58 and/or the DSD interface 60 may include logic to support RAID technology, thereby allowing storage device 10 to operate using RAID technology.
  • the user may interact with CMS 48 via host computer 12 through a software application that may be instantiated and stored in RAM 56 , and displayed in GUI 50 .
  • the software application may be instantiated in host computer 12 by loading program instructions from NVC 26 and/or HDA 28 with controller 20 , and relaying the instructions to host computer 12 .
  • the instructions may then be stored in RAM 64 during operation.
  • the software application may then allow the user to interact with CMS 48 in a variety of manners.
  • the user may select one or more of the caching modes for directing the cache writing operations of storage device 10 .
  • the software application may provide a selectable menu in GUI 50 , providing a list of the caching modes that are available in CMS 48 .
  • the software application may query storage device 10 for the caching modes available in CMS 48 . Controller 20 may then transmit the list of the available caching modes to host computer 12 for display and selection by the user.
  • the software application may allow the user to generate user-defined caching modes, as discussed above. Furthermore, the software application may allow the user to remove specific data from RAM cache 24 and/or NVC 26 , such as by file name, block numbers, or by specifying that blocks with zero hits (or some other number) be purged from the given data cache(s).
  • the display on GUI 50 may also provide information relating to statistical information of RAM cache 24 and/or NVC 26 . For example, the program may display information such as the percentages of cache used, percentages of cache hits, cache hit rates, free and/or used cache volumes, available caching modes, selected caching modes, and the like. Moreover, in some embodiments, the program may allow the user to select applications and/or data to be cached.
  • GUI 50 may include menus for an application or data file that allow the user to selectively cache this application and/or data file. Additionally, the program may also identify applications and/or data files that are related to the application or data file already selected. The program may then prompt the user to cache the related data (e.g., dynamic link libraries).
  • related data e.g., dynamic link libraries
  • storage device 10 allows a user to interactively control and monitor data caching operations.
  • the use of a user interface (e.g., actuator 16 ) that is independent of host computer 12 is beneficial for situations in which selective data caching through software programs is generally unavailable (e.g., startup and shut down sequences). This increases the versatility of storage device 10 in accommodating the particular needs of individual users.
  • FIG. 2 is a flow diagram of method 62 for using a data storage device.
  • method 62 includes steps 64 - 80 , and initially involves providing a plurality of caching modes for selectively operating controller 20 (step 64 ).
  • display unit 18 of storage device 10 and/or GUI 50 of host computer 12 may provide lists of available caching modes for the user to select from.
  • the user may select the given caching mode, such as with actuator 16 and/or through the software application in GUI 50 (step 66 ).
  • controller 20 may read data from one or more storage media. For example, controller 20 may initially determine whether the intended data is already cached in RAM cache 24 and/or NVC 26 . If so, controller 20 may read the data from RAM cache 24 and/or NVC 26 and transmit one or more portions of the read data to host computer 12 . Alternatively, if the intended data is not currently cached, controller 20 may read the data from HDA 28 (step 68 ) and transmit one or more portions of the read data to host computer 12 (step 70 ). At this point, controller 20 may also verify whether the intended data cache, such as NVC 26 , is full (step 72 ).
  • this verification under step 72 may be performed prior to, or concurrent with, one or more of steps 64 - 70 .
  • controller 20 may stop caching (step 74 ) and display information to the user that NVC 26 is full via display unit 18 and/or GUI 50 (step 76 ). The user may then either allow controller 20 to continue to read and transmit the data pursuant to steps 68 - 76 without caching, or have controller 20 purge one or more portions of the cached data in NVC 26 . After purging, controller 20 may then continue to read and transmit the data pursuant to steps 68 and 70 , and perform a cache writing operation, as discussed below under step 78 .
  • controller 20 may then copy and pin one or more portions of the data read from HDA 28 to NVC 26 in conformance with the algorithm of the selected caching mode (step 78 ). This data pinning allows the data to be retained in NVC 26 for subsequent reading operations. Steps 68 - 78 may then be repeated pursuant to the selected caching mode until the user decides to select a different caching mode (step 80 ). At this point, the user may review the list of available caching modes (step 64 ) and select a new caching mode for controller 20 to operate under (step 66 ). These steps of method 62 may then be repeated as desired by the user, thereby allowing the user to cache data in NVC 26 based on the user's particular needs.
  • FIG. 3 is a flow diagram of method 82 for using a storage device, and is an example of a suitable aspect of method 62 (shown in FIG. 2 ) that involves an active caching mode.
  • active caching mode refers to a caching mode in which a controller copies and pins all data read from a storage medium to one or more data caches of the storage device.
  • method 82 includes steps 84 - 104 , and initially involves operating controller 20 under a default caching mode (i.e., a non-active caching mode) (step 84 ). If the user desires to copy and pin all data read from HDA 28 to one or more data caches (e.g., NVC 26 ) (step 86 ), the user may enable the active caching mode (step 88 ). As discussed above, the user may enable the active caching mode in a variety of manners, such as by pressing actuator 16 .
  • a default caching mode i.e., a non-active caching mode
  • Steps 90 - 100 of method 82 generally correspond to steps 68 - 78 of method 62 .
  • controller 20 may read data from one or more storage media. For example, controller 20 may initially determine whether the intended data is already cached in RAM cache 24 and/or NVC 26 . If so, controller 20 may read the data from RAM cache 24 and/or NVC 26 and transmit one or more portions of the read data to host computer 12 . Alternatively, if the intended data is not currently cached, controller 20 may read the data from HDA 28 (step 90 ) and transmits one or more portions of the read data to host computer 12 (step 92 ). At this point, controller 20 may also verify whether the intended data cache, such as NVC 26 , is full (step 94 ).
  • this verification under step 94 may be performed prior to, or concurrent with, one or more of steps 84 - 92 .
  • controller 20 may stop caching (step 96 ) and display information to the user via display unit 18 and/or GUI 50 , as discussed above (step 98 ). The user may then either allow controller 20 to continue to read and transmit the data pursuant to steps 90 - 98 without caching, or have controller 20 purge one or more portions of the cached data in NVC 26 . After purging, controller 20 may then continue to read and transmit the data pursuant to steps 90 and 92 , and perform a cache writing operation pursuant to the active caching mode, as discussed below under step 100 .
  • controller 20 may then copy and pin all data read from HDA 28 to NVC 26 , in conformance with the active caching mode (step 100 ). This data pinning allows the data to be retained in NVC 26 for subsequent reading operations. Steps 90 - 100 may then be repeated pursuant to the active caching mode until the user desires to stop the active caching (step 102 ). At this point, the user may disable the active caching mode, such as by pressing actuator 16 again (step 104 ). This may switch operation of controller 20 back to the default caching mode, or another non-active caching mode as desired by the user.
  • steps 90 - 104 may then be repeated under the selected non-active caching mode (e.g., a default caching mode).
  • Method 82 accordingly allows cached data to be retained in NVC 26 for subsequent reading operations based on the particular needs of the user. As discussed above, this method is particularly suitable for caching startup sequence data when applied in combination with a user interface (e.g., actuator 16 ) that is independent of host computer 12 .

Abstract

Systems and methods are disclosed for caching data according to user-selected caching modes. In an embodiment, an apparatus may comprise a controller configured to pin data from a non-volatile storage medium to a data cache based on at least one user-selectable caching mode. In another embodiment, a device may comprise a processor configured to display a graphical user interface (GUI) at a display, and receive, from the GUI, an indication of a user selection of a data caching mode that determines which data to pin from a non-volatile memory of a data storage device to a data cache of the data storage device. The processor may be configured to then send an indication of the user selection of the data caching mode to the data storage device.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • The present application is a continuation of and claims priority to pending U.S. patent application Ser. No. 12/508,895, entitled SYSTEM AND METHOD FOR MANAGING STORAGE DEVICE CACHING, filed on Filed Jul. 24, 2009, the contents of which are hereby incorporated by reference in their entirety.
  • BACKGROUND
  • The present disclosure is directed to data storage devices. In particular, the present disclosure is directed to cache management systems for data storage devices.
  • Data storage devices, such as magnetic disk drives, optical disk drives, hybrid drives, and solid state drives are used to store data for subsequent retrieval. Such devices employ data caches, which are typically high-speed semiconductor memory chips that enable the devices to rapidly manage the data and commands received from a host computer. Without caching, all read and write commands from the host computer would result in an access to the mass storage medium, such as a magnetic disk. This may result in significant time latencies due to mechanical positioning of the head relative to the magnetic disk. By caching, the storage device can buffer data that is likely to be accessed by the host computer so that when the data is actually accessed, the data is made available more quickly.
  • SUMMARY
  • In an embodiment, an apparatus may comprise a controller configured to pin data from a non-volatile storage medium to a data cache based on at least one user-selectable caching mode.
  • In another embodiment, a device may comprise a processor configured to display a graphical user interface (GUI) at a display, and receive, from the GUI, an indication of a user selection of a data caching mode that determines which data to pin from a non-volatile memory of a data storage device to a data cache of the data storage device. The processor may be configured to then send an indication of the user selection of the data caching mode to the data storage device.
  • In yet another embodiment, a data storage memory device may store instructions that, when executed by a processor, perform a method comprising pinning data from a non-volatile memory to a data cache based on at least one user-selectable caching mode.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a schematic illustration of a data storage device in use with a host computer, where the data storage device includes a cache management system having user-selectable caching modes.
  • FIG. 2 is a flow diagram of a method of using a data storage device that includes user-selectable caching modes.
  • FIG. 3 is a flow diagram of a method of using a data storage device that includes an active caching mode.
  • DETAILED DESCRIPTION
  • The present disclosure is directed to a data storage device having a caching management system (CMS) that allows a user to interactively control and monitor the data caching operations of the device. As discussed below, the CMS may include a plurality of user-selectable caching modes, where each caching mode includes an algorithm for caching data. This allows the user to modify performance of the data storage device and an associated host computer system based on the particular needs and desires of the user. This is in comparison to caching selections that rely solely on system-controlled caching algorithms. Such algorithms are typically based on statistical results (e.g., cache hit rates) rather than particular needs of individual users.
  • FIG. 1 shows storage device 10 in use with host computer 12, where host computer 12 may be one or more computer-based systems configured to engage with storage device 10. Storage device 10 is an example of a suitable data storage device of the present disclosure, and includes housing 14, actuator 16, display unit 18, controller 20, ROM module 22, RAM cache 24, non-volatile cache (NVC) 26, and head disk assembly (HDA) 28. Housing 14 is an exterior casing for storage device 10, which desirably encases and retains the interior components, such as one or more of controller 20, ROM module 22, RAM cache 24, NVC 26, and HDA 28. Accordingly, storage device 10 may be internal or external to a casing of host computer 12.
  • Actuator 16 is a user interface (e.g., a push-button user interface) for storage device 10 that is retained by housing 14 and communicates with controller 20 over actuator interface 30. As discussed below, actuator 16 may be activated (e.g., pressed) by a user to select different caching modes for operating storage device 10. This allows the user to interact directly with storage device 10 to select which caching mode the user prefers storage device 10 to operate under. While actuator 16 is illustrated in FIG. 1 as a single press-button, storage device 10 may include a variety of different user interfaces for allowing a user to select different caching modes.
  • These user interfaces (e.g., actuator 16) desirably operate independently of host computer 12. This allows the user to select caching modes for storage device 10 while access to host computer 12 is unavailable, such as during early stages of a startup sequence. For example, as discussed below, during the initial boot sequence for starting host computer 12 (e.g., after the power-on self test), the user may select a caching mode with actuator 16 that directs controller 20 to cache all data read from HDA 28. This allows data read from a startup sequence of HDA 28 (e.g., including a boot sector) to be cached for subsequent use. Pinning this cached data in a non-volatile cache (e.g., NVC 26) may reduce subsequent startup times by allowing controller 20 to read the startup sequence data from NVC 26 rather than from the slower HDA 28. Furthermore, this choice of whether to cache the startup sequence data may be determined entirely by the user.
  • Display unit 18 is a visual display unit retained by housing 14 in a manner that desirably allows the user to view information relating to the data caching in storage device 10. As shown, display unit 16 communicates with controller 20 over display interface 32. Display unit 18 may include a variety of different units for displaying information to the user, such as liquid-crystal display (LCD) units, light-emitting diode (LED) units, and the like. In one embodiment, display unit 18 may be separate from housing 14, thereby allowing display unit 18 be disposed at a remote location from storage device 10. In this embodiment, display interface 32 may include a communication cable (not shown) that interconnects display unit 18 and controller 20, and/or may include a wireless transmitter/receiver assembly (not shown).
  • Display unit 18 may provide a variety of different information relating to the data caching in storage device 10, such as percentages of cache used, percentages of cache hits, cache hit rates, free and/or used cache volumes, available caching modes, selected caching modes, and the like. Because this information is viewable directly from storage device 10, display unit 18 may display the information independently of host computer 12. This allows the user to receive caching information even when such information may be unavailable through host computer 12, such as during startup and shut down sequences.
  • Controller 20 is a circuit assembly that directs the reading and writing operations for storage device 10, and is configured to respectively communicate with ROM module 22, RAM cache 24, NVC 26, and HDA 28. Controller 20 may also communicate with host computer 12 via host interface 34, where host interface 34 may be any suitable interface, such as a universal serial bus (USB) interface, a Serial Advanced Technology Attachment (SATA) interface, an External SATA (eSATA) interface, a Parallel Advanced Technology Attachment (PATA) interface, an IEEE 1394 interface, a Small Computer System Interface (SCSI), a Serial Attached SCSI (SAS) interface, an Integrated Drive Electronics (IDE) interface, a Fiber Channel interface, and the like.
  • ROM module 22 is one or more non-volatile memory modules (e.g., read-only memory) for storing information such as firmware. RAM cache 24 is one or more volatile memory modules (e.g., dynamic random access memory) that may function as a volatile data cache during reading and/or writing operations with HDA 28 (i.e., a volatile disk buffer). NVC 26 is one or more solid state, non-volatile memory modules, such as flash memory, magnetic random access memory (MRAM), electrically erasable programmable read-only memory (EEPROM), ferroelectric random access memory (FeRAM), and combinations thereof. NVC 26 includes a plurality of erasable data blocks (referred to as data blocks 36) for storing data, and desirably functions as a non-volatile data cache during reading and/or writing operations with HDA 28 (i.e., a non-volatile disk buffer).
  • HDA 28 is one or more head disk assemblies, and is the primary storage medium/media for storage device 10. HDA 28 includes storage disk 38 and spindle motor 40, where spindle motor 40 rotates storage disk 38 in a rotational direction during operation. Storage disk 38 includes recordable surface 42, which is a surface of storage disk 38 having multiple data tracks (not shown) for storing data (e.g., startup sequence data). HDA 28 further includes actuation motor 44 (e.g., a voice coil motor) and actuator arm assembly 46, where actuator arm assembly 46 may include an actuator arm, suspension assembly, and slider to carry a transducing head for writing data to, and reading data from, the data tracks in recordable surface 42. Actuation motor 44 is configured to pivot actuator arm assembly 46 about an axis to sweep the transducing head in an arc over recordable surface 42. The operation of HDA 28 is directed by controller 20, where controller 20 may communicate with servo and spindle controls to read from, and write data to, recordable surface 42.
  • Reading data from, and writing data to, HDA 28 is generally slower than the respective operations with RAM cache 24 and/or NVC 26. This is due in part to the mechanical arrangement of HDA 28, which requires storage disk 38 to spin up and actuator arm assembly 46 to seek the desired data tracks in recordable surface 42. As such, pinning data to RAM cache 24 and/or NVC 26 may increase data retrieval efficiencies by allowing controller 20 to read the cached data directly from RAM cache 24 and/or NVC 26 rather than from the slower HDA 28. Allowing the user to determine which data is to be cached correspondingly provides greater user control over storage device 10 and host computer 12, and allows the performance of storage device 10 to be modified to suit the particular needs and desires of the user.
  • Storage device 10 also includes CMS 48, which desirably includes a plurality of user-selectable caching modes (e.g., caching mode 1, caching mode 2, . . . , caching mode n) for directing how controller 20 performs cache writing operations from HDA 28 to RAM cache 24 and/or NVC 26. Instructions for instantiating CMS 48 may be stored on any suitable storage medium/media in storage device 10, such as in ROM module 22, NVC 26, and/or HDA 28. When storage device 10 is powered up, CMS 48 is desirably copied from the given storage medium to RAM cache 24. CMS 48 may then direct the cache writing operations that controller 20 performs based on a selected caching mode.
  • The caching modes of CMS 48 may include a variety of different algorithms for directing controller 20 to perform cache writing operations. Furthermore, the caching modes may be preset caching modes, user-defined caching modes, system-modified caching modes, and combinations thereof. The preset caching modes are predefined caching modes that provide suitable default algorithms for performing cache writing operations, and may be stored in any suitable storage medium of storage device 10, such as ROM module 22, NVC 26, and/or HDA 28. User-defined caching modes are caching modes that users may generate with host computer 12, as discussed below. System-modified caching modes are caching modes that may be modified by storage device 10 and/or host computer 12 based on cache statistical results. Examples of suitable techniques for generating system-modified caching modes based on cache statistical results include those disclosed in Herbst et al., U.S. Patent Application Publication No. 2003/0061444. When generated, the user-defined caching modes and the system-modified caching modes may each be stored in any suitable storage medium of storage device 10, such as NVC 26 and/or HDA 28. The caching modes may then be copied to RAM cache 24 with CMS 48 when storage device 10 is powered up.
  • As discussed above, the caching modes may define a variety of different algorithms for directing controller 20 to perform cache writing operations from HDA 28 to RAM cache 24 and/or NVC 26. For example, the caching modes may define usable cache volumes, may define optimal operating characteristics for one or more benchmarks, may apply different algorithms for writing data to the data caches (e.g., first-in-last-out algorithms), may allocate portions of the data caches to specific algorithms (e.g., volatile vs. non-volatile storage), and the like.
  • In one embodiment, the caching modes of CMS 48 may include an active caching mode. As used herein, the term “active caching mode” refers to a caching mode in which a controller (e.g., controller 20) copies and pins all data read from a storage medium (e.g., HDA 28) to one or more data caches of the storage device (e.g., RAM cache 24 and/or NVC 26). As such, in the embodiment shown in FIG. 1, when the user selects the active caching mode, all data that controller 20 reads from recordable surface 42 of HDA 28 for transmission to host computer 12, is also copied and pinned to RAM cache 24 and/or NVC 26. In this embodiment, while the active caching mode in CMS 48 remains selected, controller 20 continues to copy and pin all data read from HDA 28 to RAM cache 24 and/or NVC 26. This may continue until either RAM cache 24 and/or NVC 26 are full, or until the user disables the active caching mode (e.g., the user selects a different caching mode).
  • In this embodiment, actuator 16 may function as an on/off switch for enabling and disabling the active caching mode. Accordingly, when the user presses actuator 16, controller 20 may be directed to operate under the active caching mode, as discussed above. At a subsequent point in time, when the user desires to disable the active caching mode, the user may press actuator 16 again to select another non-active caching mode, thereby disabling the active caching mode. The non-active caching mode may be one of a variety of caching modes, such as a default preset caching mode. Controller 20 may then perform cache writing operations pursuant to the non-active caching mode.
  • In addition to functioning as an on/off switch, actuator 16 may also provide additional data caching functions, such as data purging. In this embodiment, after the active caching mode has been enabled and disabled, when the user presses actuator 16 again to re-enable the active caching mode, one or more portions of the previously pinned data may be purged from RAM cache 24 and/or NVC 26. The data purging may empty entire physical regions of RAM cache 24 and/or NVC 26, or may selectively purge data based on criteria. Suitable criteria for data purging include the number of hits, the residence time in RAM cache 24 and/or NVC 26, and the like. The purging of RAM cache 24 and/or NVC 26 in this manner may accordingly free up storage space for subsequent cache writing operations. In one embodiment, the purging operation may be performed by pressing and holding actuator 16 for a predetermined time period (e.g., a few seconds).
  • Display unit 18 may also indicate whether controller 20 is operating under the active caching mode. For example, when controller 20 is operating under the active caching mode, display unit 18 may provide one or more visual and/or audible indicators, such as a textual indicator stating “ACTIVE CACHING ON”, an illuminated LED indicator, an audible sound, and the like. When RAM cache 24 and/or NVC 26 become full, the active caching mode may be disabled, and display unit 18 may provide a corresponding indication, such as “CACHE FULL”. Likewise, when the user disables the active caching mode, the display unit 18 may provide a corresponding indication, such as “ACTIVE CACHING OFF”.
  • The active caching mode is particularly suitable for use with hybrid drives (e.g., storage device 10) and solid state drives, each of which desirably includes one or more large-volume, non-volatile caches (e.g., NVC 26). A substantial amount of data may be cached and retained using non-volatile caches having large storage volumes. For example, in embodiments in which NVC 26 has a storage volume of about 32 gigabytes (GB), and controller 20 reads data from HDA 28 at a rate of about 100 megabytes/second, the active caching mode may run for about 5 minutes before data blocks 36 of NVC 26 become full. Similarly, a 250 GB volume for NVC 26 would allow the caching operation under the active caching mode to continue for about 40 minutes before NVC 26 becomes full. Because data is typically re-read from previously cached sectors, the active caching mode may actually continue for greater durations than these examples listed above. As such, providing the user the means to select the active caching mode in combination with large caching volumes allows substantial amounts of data to be pinned to data caches based on the particular needs and desires of the user.
  • This combination is also suitable for caching startup sequence data, as discussed above. For example, during the initial startup sequence for starting host computer 12 (e.g., after the power-on self test), the user may select the active caching mode with actuator 16, thereby directing controller 20 to cache all data read from HDA 28. This desirably directs controller 20 to copy and pin all startup sequence data to data blocks 36 of NVC 26. When the startup sequence is complete, the user may then press actuator 16 again to select a non-active caching mode (e.g., a default caching mode), thereby disabling the active caching mode. Due to the non-volatile nature of NVC 26, the retained startup sequence data may then be read from NVC 26 during subsequent startup sequences of host computer 12. As discussed above, this may reduce subsequent startup times by allowing controller 20 to read the startup sequence data from NVC 26 rather than from the slower HDA 28.
  • In comparison, data cache managers that are based on software are generally unsuitable for selectively caching startup sequence data from data storage devices. Such data cache managers typically require the startup sequence of the host computer to be completed before they may be used. This effectively prevents these types of data cache managers from being selectively operated by a user during the startup sequences. Storage device 10 with CMS 48, however, allows the user to selectively cache data during a variety of different power cycles of host computer 12, including startup and shut down sequences.
  • In addition to actuator 16 and display unit 18, in some embodiments, the user may also select caching modes for controller 20 through host computer 12. In these embodiment, host computer 12 may provide software-based tools for allowing the user to select the caching modes for storage device 10, as well as for reviewing caching statistics and generating user-defined caching modes for CMS 48.
  • As discussed above, host computer 12 may be one or more computer-based systems configured to engage with storage device 10. Examples of suitable systems for host computer 12 include desktop computers, laptops, server-based systems, personal digital assistants (PDA), telecommunication devices, multimedia players (e.g., portable multimedia players), and combinations thereof. In the embodiment shown in FIG. 1, host computer 12 includes graphical user interface (GUI) 50, memory controller 52, processor 54, RAM 56, input/output (I/O) controller 58, and data storage device (DSD) interface 60. Host computer 12 may also include a variety of additional components that are typically contained in computer-based systems.
  • GUI 50 is a user interface, such as an operating system interface, that may be instantiated and stored in RAM 56 during operation. Memory controller 52 is a circuit assembly that interfaces the components of host computer 12 with RAM 56, and may include logic for mapping addresses of the components of host computer 12 to particular areas of RAM 56. Processor 54 is one or more processing units, and RAM 56 is one or more volatile random access memory modules. I/O controller 58 is a circuit assembly that interfaces memory controller 52, processor 54, and RAM 56 with various input and output components of host computer 12, including DSD interface 60. DSD interface 60 is the reciprocating interface of host interface 34, which allows storage device 10 to engage and communicate with host computer 12. Suitable interfaces for DSD interface 60 include the reciprocating interfaces for those discussed above for host interface 34. Furthermore, I/O controller 58 and/or the DSD interface 60 may include logic to support RAID technology, thereby allowing storage device 10 to operate using RAID technology.
  • The user may interact with CMS 48 via host computer 12 through a software application that may be instantiated and stored in RAM 56, and displayed in GUI 50. The software application may be instantiated in host computer 12 by loading program instructions from NVC 26 and/or HDA 28 with controller 20, and relaying the instructions to host computer 12. The instructions may then be stored in RAM 64 during operation. The software application may then allow the user to interact with CMS 48 in a variety of manners.
  • In one embodiment, through the software application, the user may select one or more of the caching modes for directing the cache writing operations of storage device 10. For example, the software application may provide a selectable menu in GUI 50, providing a list of the caching modes that are available in CMS 48. In this embodiment, when the software application is instantiated and stored in RAM 64, the software application may query storage device 10 for the caching modes available in CMS 48. Controller 20 may then transmit the list of the available caching modes to host computer 12 for display and selection by the user.
  • In an additional embodiment, the software application may allow the user to generate user-defined caching modes, as discussed above. Furthermore, the software application may allow the user to remove specific data from RAM cache 24 and/or NVC 26, such as by file name, block numbers, or by specifying that blocks with zero hits (or some other number) be purged from the given data cache(s). The display on GUI 50 may also provide information relating to statistical information of RAM cache 24 and/or NVC 26. For example, the program may display information such as the percentages of cache used, percentages of cache hits, cache hit rates, free and/or used cache volumes, available caching modes, selected caching modes, and the like. Moreover, in some embodiments, the program may allow the user to select applications and/or data to be cached. For example, GUI 50 may include menus for an application or data file that allow the user to selectively cache this application and/or data file. Additionally, the program may also identify applications and/or data files that are related to the application or data file already selected. The program may then prompt the user to cache the related data (e.g., dynamic link libraries).
  • As discussed above, storage device 10 allows a user to interactively control and monitor data caching operations. The inclusion of user-selectable caching modes accordingly allows the user to modify performance of storage device 10 and host computer 12 based on the particular needs and desires of the user. Furthermore, the use of a user interface (e.g., actuator 16) that is independent of host computer 12 is beneficial for situations in which selective data caching through software programs is generally unavailable (e.g., startup and shut down sequences). This increases the versatility of storage device 10 in accommodating the particular needs of individual users.
  • FIG. 2 is a flow diagram of method 62 for using a data storage device. The following discussion of method 62 is made with reference to storage device 10 (shown in FIG. 1) with the understanding that method 62 may be used with a variety of data storage devices. As shown, method 62 includes steps 64-80, and initially involves providing a plurality of caching modes for selectively operating controller 20 (step 64). For example, display unit 18 of storage device 10 and/or GUI 50 of host computer 12 may provide lists of available caching modes for the user to select from. When the user identifies a desired caching mode, the user then may select the given caching mode, such as with actuator 16 and/or through the software application in GUI 50 (step 66).
  • After the desired caching mode has been selected, subsequent read operations may be performed, where controller 20 reads data from one or more storage media. For example, controller 20 may initially determine whether the intended data is already cached in RAM cache 24 and/or NVC 26. If so, controller 20 may read the data from RAM cache 24 and/or NVC 26 and transmit one or more portions of the read data to host computer 12. Alternatively, if the intended data is not currently cached, controller 20 may read the data from HDA 28 (step 68) and transmit one or more portions of the read data to host computer 12 (step 70). At this point, controller 20 may also verify whether the intended data cache, such as NVC 26, is full (step 72). In alternative embodiments, this verification under step 72 may be performed prior to, or concurrent with, one or more of steps 64-70. In the event that NVC 26 is full, controller 20 may stop caching (step 74) and display information to the user that NVC 26 is full via display unit 18 and/or GUI 50 (step 76). The user may then either allow controller 20 to continue to read and transmit the data pursuant to steps 68-76 without caching, or have controller 20 purge one or more portions of the cached data in NVC 26. After purging, controller 20 may then continue to read and transmit the data pursuant to steps 68 and 70, and perform a cache writing operation, as discussed below under step 78.
  • If, pursuant to step 72, NVC 26 contains free data blocks 36, controller 20 may then copy and pin one or more portions of the data read from HDA 28 to NVC 26 in conformance with the algorithm of the selected caching mode (step 78). This data pinning allows the data to be retained in NVC 26 for subsequent reading operations. Steps 68-78 may then be repeated pursuant to the selected caching mode until the user decides to select a different caching mode (step 80). At this point, the user may review the list of available caching modes (step 64) and select a new caching mode for controller 20 to operate under (step 66). These steps of method 62 may then be repeated as desired by the user, thereby allowing the user to cache data in NVC 26 based on the user's particular needs.
  • FIG. 3 is a flow diagram of method 82 for using a storage device, and is an example of a suitable aspect of method 62 (shown in FIG. 2) that involves an active caching mode. As discussed above, the term “active caching mode” refers to a caching mode in which a controller copies and pins all data read from a storage medium to one or more data caches of the storage device.
  • The following discussion of method 82 is also made with reference to storage device 10 (shown in FIG. 1) with the understanding that method 82 may be used with a variety of data storage devices. As shown in FIG. 3, method 82 includes steps 84-104, and initially involves operating controller 20 under a default caching mode (i.e., a non-active caching mode) (step 84). If the user desires to copy and pin all data read from HDA 28 to one or more data caches (e.g., NVC 26) (step 86), the user may enable the active caching mode (step 88). As discussed above, the user may enable the active caching mode in a variety of manners, such as by pressing actuator 16.
  • Steps 90-100 of method 82 generally correspond to steps 68-78 of method 62. Accordingly, controller 20 may read data from one or more storage media. For example, controller 20 may initially determine whether the intended data is already cached in RAM cache 24 and/or NVC 26. If so, controller 20 may read the data from RAM cache 24 and/or NVC 26 and transmit one or more portions of the read data to host computer 12. Alternatively, if the intended data is not currently cached, controller 20 may read the data from HDA 28 (step 90) and transmits one or more portions of the read data to host computer 12 (step 92). At this point, controller 20 may also verify whether the intended data cache, such as NVC 26, is full (step 94). In alternative embodiments, this verification under step 94 may be performed prior to, or concurrent with, one or more of steps 84-92. In the event that NVC 26 is full, controller 20 may stop caching (step 96) and display information to the user via display unit 18 and/or GUI 50, as discussed above (step 98). The user may then either allow controller 20 to continue to read and transmit the data pursuant to steps 90-98 without caching, or have controller 20 purge one or more portions of the cached data in NVC 26. After purging, controller 20 may then continue to read and transmit the data pursuant to steps 90 and 92, and perform a cache writing operation pursuant to the active caching mode, as discussed below under step 100.
  • If, pursuant to step 94, NVC 26 contains free data blocks 36, controller 20 may then copy and pin all data read from HDA 28 to NVC 26, in conformance with the active caching mode (step 100). This data pinning allows the data to be retained in NVC 26 for subsequent reading operations. Steps 90-100 may then be repeated pursuant to the active caching mode until the user desires to stop the active caching (step 102). At this point, the user may disable the active caching mode, such as by pressing actuator 16 again (step 104). This may switch operation of controller 20 back to the default caching mode, or another non-active caching mode as desired by the user.
  • While under the non-active caching mode (and if the user does not desire to re-enable the active caching mode, pursuant to step 86), steps 90-104 may then be repeated under the selected non-active caching mode (e.g., a default caching mode). Method 82 accordingly allows cached data to be retained in NVC 26 for subsequent reading operations based on the particular needs of the user. As discussed above, this method is particularly suitable for caching startup sequence data when applied in combination with a user interface (e.g., actuator 16) that is independent of host computer 12.
  • Although the present invention has been described with reference to preferred embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.

Claims (23)

1. An apparatus comprising:
a controller configured to pin data from a non-volatile storage medium to a data cache based on at least one user-selectable caching mode.
2. The apparatus of claim 1, further comprising the at least one user-selectable caching mode includes:
one or more caching modes that are modified based on cache statistical results.
3. The apparatus of claim 1, further comprising:
the data cache includes a non-volatile cache; and
the at least one user-selectable caching mode includes an active caching mode configured to pin all data requested by a host from the non-volatile memory to the data cache.
4. The apparatus of claim 1, further comprising the controller configured to:
implement the at least one user-selectable caching mode based on input received at a user interface; and
purge data from the data cache based on input received at the user interface.
5. The apparatus of claim 4, further comprising the user interface includes a display unit configured to display information relating to cache pinning operations performed by the controller.
6. The apparatus of claim 1, further comprising:
the data cache;
a user interface configured to allow a user to select the at least one user-selectable caching mode; and
a housing for retaining the data cache, the controller, and the user interface.
7. The apparatus of claim 1, further comprising:
the controller further configured to pin data based on read commands received from a host device; and
the at least one user-selectable caching mode is selectable in a manner that is independent of the host device.
8. The apparatus of claim 7, further comprising:
the controller configured to receive data from the host including an indication of a selection of a user-selectable caching mode.
9. The apparatus of claim 7, further comprising:
the controller configured to transmit statistics relating to cache pinning operations to the host for display on a graphical user interface.
10. A device comprising:
a processor configured to:
initiate a display of a graphical user interface (GUI);
receive, from the GUI, an indication of a user selection of a data caching mode that determines which data to pin from a non-volatile memory of a data storage device to a data cache of the data storage device; and
send an indication of the user selection of the data caching mode to the data storage device.
11. The device of claim 10, further comprising the processor configured to:
display a list of available data caching modes via the GUI.
12. The device of claim 10, further comprising the processor configured to:
provide tools allowing a user to generate user-defined caching modes via the GUI; and
send the user-defined caching modes to the data storage device for storage to the non-volatile memory.
13. The device of claim 10, further comprising the processor configured to:
display caching statistics received from the data storage device via the GUI.
14. The device of claim 10, further comprising the processor configured to:
receive instructions from a user via the GUI to remove specific data from the data cache; and
send the instructions to remove specific data to the data storage device.
15. The device of claim 14, further comprising:
the specific data is specified based on file name, block numbers, or based on a threshold number of cache hits.
16. The device of claim 10, the processor further configured to:
receive instructions from a user via the GUI to pin selected data to the data cache; and
send the instructions to pin the selected data to the data storage device.
17. The device of claim 16, the processor further configured to:
display a list of data related to the selected data to the user via the GUI;
receive a selection to pin the related data from a user via the GUI; and
send the selected related data to the data storage device.
18. The device of claim 17, further comprising:
the selected data includes an application, and the related data includes data files associated with the application.
19. The device of claim 17, further comprising:
the selected data includes a data file, and the related data includes an application associated with the data file.
20. The device of claim 17, further comprising:
the selected data includes a first data file, and the related data includes other data files related to the first data file.
21. A data storage memory device storing instructions that, when executed by a processor, perform a method comprising:
pinning data from a non-volatile memory to a data cache based on at least one user-selectable caching mode.
22. The data storage memory device of claim 21, the method further comprising:
purging data selected by a user from the data cache.
23. The data storage memory device of claim 21, the method further comprising:
pinning specific data identified by a user to the data cache.
US13/953,395 2008-10-17 2013-07-29 System and method for managing storage device caching Abandoned US20140025868A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/953,395 US20140025868A1 (en) 2008-10-17 2013-07-29 System and method for managing storage device caching

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10623608P 2008-10-17 2008-10-17
US12/508,895 US8499120B2 (en) 2008-10-17 2009-07-24 User selectable caching management
US13/953,395 US20140025868A1 (en) 2008-10-17 2013-07-29 System and method for managing storage device caching

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/508,895 Continuation US8499120B2 (en) 2008-10-17 2009-07-24 User selectable caching management

Publications (1)

Publication Number Publication Date
US20140025868A1 true US20140025868A1 (en) 2014-01-23

Family

ID=42109525

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/508,895 Active 2031-08-29 US8499120B2 (en) 2008-10-17 2009-07-24 User selectable caching management
US13/953,395 Abandoned US20140025868A1 (en) 2008-10-17 2013-07-29 System and method for managing storage device caching

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/508,895 Active 2031-08-29 US8499120B2 (en) 2008-10-17 2009-07-24 User selectable caching management

Country Status (1)

Country Link
US (2) US8499120B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268692B1 (en) * 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US10613982B1 (en) 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683005B1 (en) * 2010-03-31 2014-03-25 Emc Corporation Cache-based mobile device network resource optimization
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
JP5984500B2 (en) * 2011-11-30 2016-09-06 三菱電機株式会社 Information processing apparatus, broadcast receiving apparatus, and software activation method
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US10198462B2 (en) * 2012-04-05 2019-02-05 Microsoft Technology Licensing, Llc Cache management
US20140149650A1 (en) * 2012-11-29 2014-05-29 Jason Caulkins Caching Program Optimization
US9122615B1 (en) * 2013-03-07 2015-09-01 Western Digital Technologies, Inc. Data cache egress for a data storage system
US20160050112A1 (en) * 2014-08-13 2016-02-18 PernixData, Inc. Distributed caching systems and methods
US20160210044A1 (en) 2015-01-15 2016-07-21 Commvault Systems, Inc. Intelligent hybrid drive caching
US10776268B2 (en) 2018-04-19 2020-09-15 Western Digital Technologies, Inc. Priority addresses for storage cache management

Citations (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276835A (en) * 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
US5276662A (en) * 1992-10-01 1994-01-04 Seagate Technology, Inc. Disc drive with improved data transfer management apparatus
US5559952A (en) * 1993-03-23 1996-09-24 Kabushiki Kaisha Toshiba Display controller incorporating cache memory dedicated for VRAM
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5586293A (en) * 1991-08-24 1996-12-17 Motorola, Inc. Real time cache implemented by on-chip memory having standard and cache operating modes
US5666509A (en) * 1994-03-24 1997-09-09 Motorola, Inc. Data processing system for performing either a precise memory access or an imprecise memory access based upon a logical address value and method thereof
US6032227A (en) * 1996-09-30 2000-02-29 International Business Machines Corporation System and method for cache management in mobile user file systems
US20010049770A1 (en) * 1998-12-08 2001-12-06 Cai Zhong-Ning Buffer memory management in a system having multiple execution entities
US20020078309A1 (en) * 2000-12-19 2002-06-20 International Business Machines Corporation Apparatus for associating cache memories with processors within a multiprocessor data processing system
US6430653B1 (en) * 1998-05-01 2002-08-06 Nec Corporation Disk control unit and method for prefetching according to partition information and concatenation information
US6434666B1 (en) * 1995-02-20 2002-08-13 Hitachi, Ltd. Memory control apparatus and method for storing data in a selected cache memory based on whether a group or slot number is odd or even
US20020116585A1 (en) * 2000-09-11 2002-08-22 Allan Scherr Network accelerator
US6457102B1 (en) * 1999-11-05 2002-09-24 Emc Corporation Cache using multiple LRU's
US6477618B2 (en) * 2000-12-28 2002-11-05 Emc Corporation Data storage system cluster architecture
US6490615B1 (en) * 1998-11-20 2002-12-03 International Business Machines Corporation Scalable cache
US20030061444A1 (en) * 2001-09-14 2003-03-27 Seagate Technology Llc Method and system for cache management algorithm selection
US6725330B1 (en) * 1999-08-27 2004-04-20 Seagate Technology Llc Adaptable cache for disc drive
US6725342B1 (en) * 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US20040098540A1 (en) * 2002-11-19 2004-05-20 Renesas Technology Corp. Cache system and cache memory control device controlling cache memory having two access modes
US20050015544A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Storage system configurations
US20050015566A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Data allocation in a distributed storage system
US20050015567A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Distributed independent cache memory
US20050210190A1 (en) * 2004-03-22 2005-09-22 Hitachi Global Storage Technologies Netherlands, B.V. Data storage device, control method thereof, and magnetic disk storage device
US20050210318A1 (en) * 2004-03-22 2005-09-22 Dell Products L.P. System and method for drive recovery following a drive failure
US6983465B2 (en) * 2001-10-11 2006-01-03 Sun Microsystems, Inc. Method and apparatus for managing data caching in a distributed computer system
US20060064563A1 (en) * 2004-09-23 2006-03-23 Hobson Louis B Caching presence detection data
US20060069870A1 (en) * 2004-09-24 2006-03-30 Microsoft Corporation Method and system for improved reliability in storage devices
US20060080471A1 (en) * 2004-10-13 2006-04-13 Microsoft Corporation Offline caching of control transactions for storage devices
US7047362B2 (en) * 2000-05-16 2006-05-16 Samsung Electronics, Co. Ltd Cache system and method for controlling the cache system comprising direct-mapped cache and fully-associative buffer
US7123521B1 (en) * 2005-04-27 2006-10-17 Micron Technology, Inc. Random cache read
US20070022241A1 (en) * 2004-02-04 2007-01-25 Sandisk Corporation Dual media storage device
US20070038850A1 (en) * 2005-08-10 2007-02-15 Matthews Jeanna N System boot and resume time reduction method
US20070041386A1 (en) * 2005-08-17 2007-02-22 Dell Products L.P. Plug and play cluster deployment
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US20070162693A1 (en) * 2006-01-12 2007-07-12 Samsung Electronics Co., Ltd. Hybrid hard disk drive control method and recording medium and apparatus suitable therefor
US20080086585A1 (en) * 2006-10-10 2008-04-10 Hideaki Fukuda Storage apparatus, controller and control method
US20080209109A1 (en) * 2007-02-25 2008-08-28 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US20080215796A1 (en) * 2003-12-08 2008-09-04 The Board Of Trustees Of The Leland Stanford Junior University Virtual Appliance Management
US7461202B2 (en) * 2005-05-03 2008-12-02 International Business Machines Corporation Method and apparatus using hard disk drive for enhanced non-volatile caching
US20090087168A1 (en) * 2007-10-02 2009-04-02 Samsung Electronics Co., Ltd. Method and apparatus for reproducing media contents using non-volatile storage medium
US20090228545A1 (en) * 2008-03-07 2009-09-10 Mendez Jose A Online mobile applications capable of dealing with occasional disconnects
US20090265507A1 (en) * 2008-04-22 2009-10-22 Jibbe Mahmoud K System to reduce drive overhead using a mirrored cache volume in a storage array
US20090269039A1 (en) * 2006-08-29 2009-10-29 Hisashi Ohashi Recording/reproducing system, recording/reproducing apparatus, and method for controlling recording/reproducing apparatus
US7664796B2 (en) * 2004-10-13 2010-02-16 Microsoft Corporation Electronic labeling for offline management of storage devices
US20100095073A1 (en) * 2008-10-09 2010-04-15 Jason Caulkins System for Controlling Performance Aspects of a Data Storage and Access Routine
US20100161890A1 (en) * 2007-09-05 2010-06-24 Kim Hyo-Jun Cache management method and cache device using sector set
US20100274962A1 (en) * 2009-04-26 2010-10-28 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US20110276757A1 (en) * 2009-02-03 2011-11-10 Hitachi, Ltd. Storage control device, and control method for cache memory

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338115B1 (en) 1999-02-16 2002-01-08 International Business Machines Corporation Advanced read cache management
WO2001046792A1 (en) 1999-12-22 2001-06-28 Seagate Technology Llc Buffer management system for managing the transfer of data into and out of a buffer in a disc drive
US6941419B2 (en) 2000-05-24 2005-09-06 Seagate Technology Llc Method and apparatus for disc drive buffer segment management
US20020029354A1 (en) 2000-08-23 2002-03-07 Seagate Technology Llc Non-volatile write cache, in a disc drive, using an alternate power source
EP1320035A1 (en) 2001-12-11 2003-06-18 Thomson Licensing S.A. Storage device cache management
US7107400B2 (en) 2003-03-31 2006-09-12 International Business Machines Corporation System, apparatus, and process for evaluating projected cache sizes
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7441081B2 (en) * 2004-12-29 2008-10-21 Lsi Corporation Write-back caching for disk drives
US7424577B2 (en) 2005-08-26 2008-09-09 Network Appliance, Inc. Dynamic optimization of cache memory
US8250316B2 (en) 2006-06-06 2012-08-21 Seagate Technology Llc Write caching random data and sequential data simultaneously
US7444541B2 (en) 2006-06-30 2008-10-28 Seagate Technology Llc Failover and failback of write cache data in dual active controllers
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
TW200828273A (en) 2006-12-28 2008-07-01 Genesys Logic Inc Hard disk cache device and method
US20080244181A1 (en) 2007-03-30 2008-10-02 Michael Walz Dynamic run-time cache size management
JP2008250718A (en) 2007-03-30 2008-10-16 Toshiba Corp Storage device using nonvolatile cache memory and control method thereof
JP4977554B2 (en) 2007-08-22 2012-07-18 株式会社日立製作所 Storage system with a function to back up data in cache memory
US8161240B2 (en) 2007-10-10 2012-04-17 Apple Inc. Cache management

Patent Citations (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276835A (en) * 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
US5586293A (en) * 1991-08-24 1996-12-17 Motorola, Inc. Real time cache implemented by on-chip memory having standard and cache operating modes
US5276662A (en) * 1992-10-01 1994-01-04 Seagate Technology, Inc. Disc drive with improved data transfer management apparatus
US5559952A (en) * 1993-03-23 1996-09-24 Kabushiki Kaisha Toshiba Display controller incorporating cache memory dedicated for VRAM
US5666509A (en) * 1994-03-24 1997-09-09 Motorola, Inc. Data processing system for performing either a precise memory access or an imprecise memory access based upon a logical address value and method thereof
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US6434666B1 (en) * 1995-02-20 2002-08-13 Hitachi, Ltd. Memory control apparatus and method for storing data in a selected cache memory based on whether a group or slot number is odd or even
US6032227A (en) * 1996-09-30 2000-02-29 International Business Machines Corporation System and method for cache management in mobile user file systems
US6430653B1 (en) * 1998-05-01 2002-08-06 Nec Corporation Disk control unit and method for prefetching according to partition information and concatenation information
US6490615B1 (en) * 1998-11-20 2002-12-03 International Business Machines Corporation Scalable cache
US20010049770A1 (en) * 1998-12-08 2001-12-06 Cai Zhong-Ning Buffer memory management in a system having multiple execution entities
US6725330B1 (en) * 1999-08-27 2004-04-20 Seagate Technology Llc Adaptable cache for disc drive
US6457102B1 (en) * 1999-11-05 2002-09-24 Emc Corporation Cache using multiple LRU's
US7047362B2 (en) * 2000-05-16 2006-05-16 Samsung Electronics, Co. Ltd Cache system and method for controlling the cache system comprising direct-mapped cache and fully-associative buffer
US20020116585A1 (en) * 2000-09-11 2002-08-22 Allan Scherr Network accelerator
US20040162950A1 (en) * 2000-09-26 2004-08-19 Coulson Richard L. Non-volatile mass storage cache coherency apparatus
US6725342B1 (en) * 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US20020078309A1 (en) * 2000-12-19 2002-06-20 International Business Machines Corporation Apparatus for associating cache memories with processors within a multiprocessor data processing system
US6477618B2 (en) * 2000-12-28 2002-11-05 Emc Corporation Data storage system cluster architecture
US20030061444A1 (en) * 2001-09-14 2003-03-27 Seagate Technology Llc Method and system for cache management algorithm selection
US6983465B2 (en) * 2001-10-11 2006-01-03 Sun Microsystems, Inc. Method and apparatus for managing data caching in a distributed computer system
US20040098540A1 (en) * 2002-11-19 2004-05-20 Renesas Technology Corp. Cache system and cache memory control device controlling cache memory having two access modes
US20050015544A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Storage system configurations
US20050015566A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Data allocation in a distributed storage system
US20050015567A1 (en) * 2003-07-15 2005-01-20 Ofir Zohar Distributed independent cache memory
US20080215796A1 (en) * 2003-12-08 2008-09-04 The Board Of Trustees Of The Leland Stanford Junior University Virtual Appliance Management
US20070022241A1 (en) * 2004-02-04 2007-01-25 Sandisk Corporation Dual media storage device
US20050210190A1 (en) * 2004-03-22 2005-09-22 Hitachi Global Storage Technologies Netherlands, B.V. Data storage device, control method thereof, and magnetic disk storage device
US20050210318A1 (en) * 2004-03-22 2005-09-22 Dell Products L.P. System and method for drive recovery following a drive failure
US20060064563A1 (en) * 2004-09-23 2006-03-23 Hobson Louis B Caching presence detection data
US20060069870A1 (en) * 2004-09-24 2006-03-30 Microsoft Corporation Method and system for improved reliability in storage devices
US20060080471A1 (en) * 2004-10-13 2006-04-13 Microsoft Corporation Offline caching of control transactions for storage devices
US7664796B2 (en) * 2004-10-13 2010-02-16 Microsoft Corporation Electronic labeling for offline management of storage devices
US7123521B1 (en) * 2005-04-27 2006-10-17 Micron Technology, Inc. Random cache read
US20080074933A1 (en) * 2005-04-27 2008-03-27 Micron Technology, Inc. Random cache read
US7369447B2 (en) * 2005-04-27 2008-05-06 Micron Technology, Inc. Random cache read
US7461202B2 (en) * 2005-05-03 2008-12-02 International Business Machines Corporation Method and apparatus using hard disk drive for enhanced non-volatile caching
US20070038850A1 (en) * 2005-08-10 2007-02-15 Matthews Jeanna N System boot and resume time reduction method
US20070041386A1 (en) * 2005-08-17 2007-02-22 Dell Products L.P. Plug and play cluster deployment
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US20070162693A1 (en) * 2006-01-12 2007-07-12 Samsung Electronics Co., Ltd. Hybrid hard disk drive control method and recording medium and apparatus suitable therefor
US20090269039A1 (en) * 2006-08-29 2009-10-29 Hisashi Ohashi Recording/reproducing system, recording/reproducing apparatus, and method for controlling recording/reproducing apparatus
US20090059674A1 (en) * 2006-10-10 2009-03-05 Hideaki Fukuda Storage apparatus, controller and control method
US20080086585A1 (en) * 2006-10-10 2008-04-10 Hideaki Fukuda Storage apparatus, controller and control method
US20080209109A1 (en) * 2007-02-25 2008-08-28 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US20100161890A1 (en) * 2007-09-05 2010-06-24 Kim Hyo-Jun Cache management method and cache device using sector set
US20090087168A1 (en) * 2007-10-02 2009-04-02 Samsung Electronics Co., Ltd. Method and apparatus for reproducing media contents using non-volatile storage medium
US20090228545A1 (en) * 2008-03-07 2009-09-10 Mendez Jose A Online mobile applications capable of dealing with occasional disconnects
US20090265507A1 (en) * 2008-04-22 2009-10-22 Jibbe Mahmoud K System to reduce drive overhead using a mirrored cache volume in a storage array
US20100095073A1 (en) * 2008-10-09 2010-04-15 Jason Caulkins System for Controlling Performance Aspects of a Data Storage and Access Routine
US8239640B2 (en) * 2008-10-09 2012-08-07 Dataram, Inc. System for controlling performance aspects of a data storage and access routine
US20110276757A1 (en) * 2009-02-03 2011-11-10 Hitachi, Ltd. Storage control device, and control method for cache memory
US20100274962A1 (en) * 2009-04-26 2010-10-28 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613982B1 (en) 2012-01-06 2020-04-07 Seagate Technology Llc File-aware caching driver
US9268692B1 (en) * 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning

Also Published As

Publication number Publication date
US8499120B2 (en) 2013-07-30
US20100100675A1 (en) 2010-04-22

Similar Documents

Publication Publication Date Title
US8499120B2 (en) User selectable caching management
US10776153B2 (en) Information processing device and system capable of preventing loss of user data
US8719525B2 (en) Storage device with manual learning
US7318118B2 (en) System and method for selective write to flash memory in HDD
US20070162692A1 (en) Power controlled disk array system using log storage area
US9348520B2 (en) Lifetime extension of non-volatile semiconductor memory for data storage device
JP5891027B2 (en) Method and apparatus for sanitizing a storage device
JP2021034026A (en) Data storage device and operation method for the same
US20100030987A1 (en) Data storing location managing method and data storage system
RU2440629C1 (en) Optical disc drive
KR20080098511A (en) Date storage device using two types of storage medium
US20170364447A1 (en) Read cache management
US20070168603A1 (en) Information recording apparatus and control method thereof
US9875030B2 (en) Media write operation
US20110035543A1 (en) Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
WO2008076205A2 (en) Data storage system havng a global cache memory distributed among non-volatile memories within system disk drives
JP2007265492A (en) Disk device with data erasure function
US20080244173A1 (en) Storage device using nonvolatile cache memory and control method thereof
US20060277353A1 (en) Virtual tape library device, virtual tape library system, and method for writing data to a virtual tape
US20220035566A1 (en) Pre-suspend before program in a non-volatile memory (nvm)
JP2007193866A (en) Information recording device and its control method
US20160117251A1 (en) Managing method for cache memory of solid state drive
US20050223167A1 (en) Diskarray system
JP2012521032A (en) SSD controller and operation method of SSD controller
US20070250661A1 (en) Data recording apparatus and method of controlling the same

Legal Events

Date Code Title Description
AS Assignment

Owner name: SEAGATE TECHNOLOGY LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FURUHJELM, MARTIN R;REEL/FRAME:032181/0829

Effective date: 20090722

STCB Information on status: application discontinuation

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