WO2002001365A2 - Non-volatile cache - Google Patents

Non-volatile cache Download PDF

Info

Publication number
WO2002001365A2
WO2002001365A2 PCT/US2001/017851 US0117851W WO0201365A2 WO 2002001365 A2 WO2002001365 A2 WO 2002001365A2 US 0117851 W US0117851 W US 0117851W WO 0201365 A2 WO0201365 A2 WO 0201365A2
Authority
WO
WIPO (PCT)
Prior art keywords
cache
volatile
disk
memory
data
Prior art date
Application number
PCT/US2001/017851
Other languages
French (fr)
Other versions
WO2002001365A3 (en
Inventor
Richard Coulson
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Priority to AU2001275147A priority Critical patent/AU2001275147A1/en
Priority to JP2002506434A priority patent/JP3951918B2/en
Priority to DE10196380T priority patent/DE10196380T1/en
Priority to GB0228871A priority patent/GB2379538B/en
Publication of WO2002001365A2 publication Critical patent/WO2002001365A2/en
Publication of WO2002001365A3 publication Critical patent/WO2002001365A3/en

Links

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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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

Definitions

  • Embodiments of the present invention relate to a non- volatile cache.
  • the present invention relates to a non-volatile memory to cache data for a disk storage device.
  • Computer systems often store data both in a volatile memory and a non-volatile mass storage device. Such data often includes computer instructions, for operating system and application programs, and data that is accessed by these instructions.
  • a disk drive is an example of a mass storage device that can be part of a modern computer system.
  • Nonvolatile mass storage devices, such as disk drives typically do not lose the data stored on them when the power to the computer system is removed or turned off.
  • a non- volatile mass storage device such as a disk drive may store data that the computer system is to retain on a relatively permanent basis.
  • a set of data currently being used by the computer system's microprocessor may be copied from a disk drive into a volatile random access memory (RAM) because a RAM has a significantly faster access time than a disk drive.
  • RAM volatile random access memory
  • units of RAM memory e.g., 1 megabyte
  • the microprocessor can read a block of information including the required data from the disk drive into the RAM. If there is not enough room in the RAM memory, the microprocessor can free space in the RAM by writing a block of data from the RAM back to the disk drive.
  • CMOS complementary metal-oxide-semiconductor
  • CMOS complementary metal-oxide-semiconductor
  • DRAM dynamic random access memory
  • SRAM static random access memory
  • FIG. 1 is a partial block diagram of a computer system that has a non-volatile cache according to an embodiment of the present invention.
  • FIG. 3 is a partial block diagram of a chipset and non-volatile disk cache according to an embodiment of the present invention.
  • FIG. 4 is a more detailed partial block diagram of a non-volatile disk cache according to an embodiment of the present invention.
  • FIG. 5 is a partial block diagram of an entry in a non-volatile disk cache according to an embodiment of the present invention.
  • FIG. 6 is a flow chart of a method of obtaining data associated with a sector in a disk drive according to an embodiment of the present invention.
  • FIG. 7 is a partial block diagram of a computer system that has a non-volatile disk cache expansion card according to an embodiment of the present invention.
  • FIG. 8 is a partial block diagram of a disk drive that has a non- volatile disk cache according to an embodiment of the present invention.
  • FIG. 9 shows a method of storing data in a non-volatile memory according to an embodiment of the present invention.
  • the methods and apparatus described herein relate to a cache for a mass storage device that can be implemented in non-volatile memory.
  • embodiments of the present invention relate to a non-volatile cache that can improve the efficiency of memory storage and retrieval by caching data in a non-volatile memory.
  • FIG. 1 shows a partial block diagram of a computer system (“computer") that has a non- volatile cache according to an embodiment of the present invention.
  • FIG. 1 shows a computer system 100 that includes a central processing unit (CPU) 102, or processor, and a memory unit 104 mounted to a motherboard 106.
  • the processor 102 may be, for example, a Pentium III processor made by Intel Corporation of Santa Clara, California, an application specific integrated circuit (ASIC), a microcontroller, etc.
  • An example of a memory 104 that may be used in computer system 100 is a 128 megabyte dynamic random access memory device (DRAM).
  • Memory 104 may also be, for example, a ROM.
  • the processor 102 and the memory 104 may reside on separate printed circuit cards that are coupled to the motherboard 106.
  • the term "coupled” encompasses a direct connection, an indirect connection, an indirect communication, etc.
  • a chipset 110 is coupled to, and manages interaction between, the processor 102 and other system components, such as the memory 104, mass storage device 130 and peripheral components attached to expansion bus 116.
  • the term chipset refers to a group of one or more integrated circuit chips that acts as a hub (or core) for data transfer between the processor and components of the computer system. As shown in FIG. 1, the chipset may be coupled to the computer system's motherboard.
  • Chipset 110 may be integrated with (e.g., soldered on to) motherboard 106.
  • Chipset 110 may be similar to, for example, the 820 and 810E chipsets made by Intel, Corporation of Santa Clara, California.
  • Chipset 110 may be a single integrated circuit or may comprise two or more integrated circuit chips.
  • chipset 110 may include a memory control hub (MCH) 311, which performs what is known as “northbridge functionality,” and an input/output controller hub (ICH) 312, which performs what is known as “southbridge functionality.”
  • MCH memory control hub
  • ICH input/output controller hub
  • Mass storage device 130 may be a disk drive and may be coupled to chipset 110 through a connector cable 170.
  • Mass storage device 130 may also be a 3.5-inch diskette, a 5.25-inch floppy diskette, a ZIP disk (e.g., manufactured by Iomega Corporation of Roy, Utah), a Jaz disk (e.g., manufactured by Iomega Corporation), an LS-120 Superdisk (e.g., manufactured by Imation Corporation of Oakdale, Minnesota), a rewritable Digital Versatile Disc (DVD-RAM), a Read/Write Compact Disk (CD-RW), optical storage device, magneto-optical storage device, magnetic storage device, holographic, etc.
  • this application discloses embodiments in which the mass storage device is a disk drive. An embodiment of a disk drive that may be used with the present invention is shown in FIG. 2.
  • Expansion bus 116 may be a peripheral component interface (PCI) bus, which is a type of data bus often found in the computer system 100 and which complies with a PCI Local Bus Specification.
  • PCI peripheral component interface
  • One or more PCI compliant peripheral devices such as a network interface card (NIC) 126, may be connected to the expansion bus 116.
  • the network interface card 126 may tie the computer system 100 to a local or wide area computer network.
  • An embodiment of the present invention is a non- volatile cache that comprises a non-volatile memory to cache data that is stored on a mass storage device.
  • a non-volatile cache 150 is coupled to chipset 110.
  • the mass storage device is a disk drive and nonvolatile cache 150 caches data for the disk drive, in which case the cache may be referred to as a disk cache.
  • FIG. 2 shows a partial block diagram of disk drive 230 according to an embodiment of the present invention.
  • Disk drive 230 may be the same as mass storage device 130 of FIG. 1, and is assumed to be mass storage device 130 for the purpose of the discussion below.
  • Disk drive 230 may be an external disk drive or an internal disk drive.
  • Disk drive 230 may store, for example, over 100 gigabytes of data.
  • disk drive 230 is a hard drive.
  • disk drive 230 is a Cheetah 18XL disk drive made by Seagate Technology Inc. of Scotts Valley, California.
  • Disk drive 130 may comprise a disk controller 210 and a mass storage 220.
  • Disk controller 210 may be an application specific integrated circuit and may contain a microprocessor unit (MPU) 211 coupled to a buffer and program memory 215 and ECC logic 218.
  • Buffer and program memory 218 may store a disk drive operation program 219 that is executed by MPU 211 and may also be used as a buffer to store data that is being written to mass storage 220 and read from mass storage 220.
  • MPU microprocessor unit
  • MPU 211 may process requests from CPU 102 to write data to or read data from mass storage 220. For example, MPU 211 may determine when a request has been made, and may translate from a logical sector address to a physical sector address.
  • Buffer and program memory 215 may be coupled to disk spindle interface logic 213 which may interface with the host system (e.g., computer system 100).
  • Disk controller 210 may also contain disk formating logic to format data blocks (e.g., insert a preamble and special characters) that are written to the mass storage.
  • "logic" may include hardware logic, such as circuits that are wired to perform operations, or program logic, such as firmware that performs operations.
  • Mass storage 220 may store, among other things, the computer's operating system (OS) code 231, which, upon boot-up, may be loaded into the computer's memory 104 for execution by the processor 102. Mass storage 220 may also store a device driver 235 for the disk drive, which may also be loaded into the computer's memory 104 for execution by the processor 102 to perform data translation and communication with disk drive 230. The mass storage 220 also may store, among other things, application programs and data that is accessed by these programs. The mass storage 220 may contain platters that may be divided into tracks, which in turn may be divided into sectors. For example, a formatted disk might have 1000's of tracks per platter.
  • OS operating system
  • disk controller 210 when disk controller 210 receives requests from outside the disk drive to read or write data, the requests may be made in terms of logical disk sectors, and the disk controller may translate these into physical disk sectors using a mapping algorithm. Some physical sectors may be left out for spares, and the mapping may be hardware assisted.
  • a file system may be used to check a file allocation table (FAT) to determine whether the data is currently in the memory 104, and if not, where on the mass storage 220 (e.g., disk sector address) the data can be found. If the OS 231 determines that the data it needs is not in the memory 104, but is stored on disk drive 230, OS 231 may send a request for the data through chipset 110 to disk drive 230. More precisely, OS 231 may request that disk drive 230 send a copy of the disk sector containing the data that OS 231 requests.
  • FAT file allocation table
  • Disk controller 210 may then receive the request for the disk sector, retrieve the disk sector from mass storage 220, and send the data for that disk sector through chipset 110 to memory 104.
  • OS 231 may cause a disk sector of data to be written from memory 104 to disk drive 230, in which case disk controller 210 will receive the data and cause it to be stored on a disk sector of mass storage 220.
  • the sector is the smallest addressable physical storage unit used by the disk drive 230, although management information such as addressing information and validity data may be accessed in smaller units.
  • each disk sector is the size of 512 bytes of data.
  • a block is a group of one or more disk sectors that may contain identification codes, error detection codes and/or error correcting codes (ECC) for the block.
  • ECC error detection codes
  • the OS requests data from the disk drive in terms of a disk sector or block of sectors (i.e., it would not request a byte or word), in which case the disk drive is said to be block-oriented (i.e., block-addressable).
  • management information may be accessed in smaller units.
  • ECC is an advanced error detection and correction protocol that may detect single-bit and multi-bit errors and may correct some errors on the fly.
  • the disk sectors in a block are physically located next to each other on one of the disk platters.
  • the blocks are manipulated as a unit by disk driver 230, non-volatile cache 150, and associated components.
  • a block contains 100 disk sectors.
  • the data stored in disk drive 230 may be cached in non-volatile cache 150.
  • non-volatile cache 150 acts as a special memory subsystem which stores duplicates of frequently used disk drive sectors for quicker access.
  • a copy of the disk sector may be stored in non-volatile cache 150.
  • the OS determines that it needs data not in memory 104, and the required data is present in non-volatile cache 150, then the data may be read into memory 104 from non-volatile cache 150 (instead of from disk drive 230).
  • the logical disk drive memory comprises physical disk drive 230 and non-volatile cache 150. If the OS determines that it needs to store data on the disk, for example when the user of a word-processing program instructs the program to "save" the current document, then the data may be stored on the physical disk drive 230 or the non-volatile cache 150. Similarly, when the OS determines it to be necessary to store data that is in memory 104 to free up space in memory 104, the data may be written back to non-volatile cache 150. Because the non-volatile cache 150 is non-volatile, the data saved on it will not be lost if the power is turned off to the computer system.
  • non-volatile cache 150 When non-volatile cache 150 has a faster access time than disk drive 230, the use of non- volatile disk-cache 150 may in the aggregate increase the speed with which processor 102 executes programs. For example, when the average access speed of disk drive 230 is significantly greater than the average access speed for non-volatile disk cache 150, then the use of non-volatile disk cache 150 may lead to a significant increase in overall access speed. Because accesses to the disk drive in a typical computer system may be the cause of up to 80% of the time that a user spends waiting for the system to respond, the use of non-volatile cache 150 will lead to greater user satisfaction.
  • non-volatile cache 150 uses less power per access than disk drive 230, then the use of non- volatile cache 150 may lead to saving in the amount of power used by the system.
  • non-volatile disk cache 150 may be more reliable than a disk drive, thus minimizing the times when the computer system crashes or becomes inoperable.
  • the disk drive's device driver 235 contains cache management instructions 237 for non-volatile cache 150.
  • cache management 237 instructions may make decisions regarding what data to cache, what data to replace, and what data to write back to the disk.
  • cache management instructions 237 may also determine when a cache hit has occurred and what data to pre-fetch into the cache. For example, the cache management instructions 237 may determine whether a desired disk sector of data should be read into memory 104 from non-volatile cache 150 (e.g., if the data is present in non-volatile cache 150) or from disk drive 230. Cache management determinations, such as whether data should be cached in non-volatile cache 150, may be made using known cache algorithms.
  • cache management instructions may determine which data to write back using, for example, a known least recently used (LRU) algorithm or a random replacement algorithm.
  • LRU least recently used
  • the device driver 235 for the disk drive appears to the OS 231 as if it were a normal device driver (e.g., ATAPI.SYS in a WIN98 environment) even though it has cache management instructions 237.
  • the existence of non-volatile cache 150 is transparent to OS 231.
  • the cache management instructions are part of OS 231.
  • cache management is performed by logic on chipset 110.
  • cache management is performed by a combination of OS 231 , the device driver for the disk drive 235, and/or cache management logic on chipset 110.
  • FIG. 3 is a partial block diagram of a chipset 310 and non-volatile disk cache 350 according to an embodiment of the present invention.
  • Chipset 310 and non-volatile disk cache 350 may be the same as chipset 110 and non-volatile cache 150 of FIG. 1.
  • non-volatile disk cache 350 is referred to as a disk cache because it caches data for a disk drive.
  • Non-volatile disk cache 350 may be any type of memory that can be read from and written to and that will retain its contents when all power sources external to the memory are removed or turned off.
  • Non-volatile disk cache 350 may be, for example, a flash memory, a battery backed-up DRAM, a magnetic RAM, a holographic memory, a ferro-electric RAM, etc. In an embodiment, non-volatile disk cache 350 may store 500 megabytes of data. In a further embodiment, non-volatile disk cache 350 is block-oriented, with each block containing one or more logical disk sectors that correspond to logical disk sectors of a disk drive. In this embodiment, each disk sector and block of non-volatile disk cache 350 are the same size as in the disk drive. If disk cache 350 is block-oriented, data (other than cache management information) may be read or stored in terms of a disk sector or block of sectors.
  • non-volatile cache 350 is coupled to chipset 310.
  • non-volatile disk cache 350 may be directly attached to (i.e., not cabled) or may be part of chipset 310.
  • non-volatile cache 150 is stacked on an integrated circuit in chipset 310.
  • ICH 312 includes disk cache interface logic 315, which controls access to non-volatile disk cache 350.
  • chipset 310 may be a single integrated circuit or group of integrated circuits that control communication between a processor and associated devices.
  • chipset 310 comprises multiple integrated circuits, which may be referred to as a first chipset integrated circuit and a second chipset integrated circuit, and the non- volatile disk cache may be coupled to one of the integrated circuits in the chipset.
  • Chipset 310 may include a memory control hub (MCH) 311, which performs what is known as "northbridge functionality," and an input/output controller hub (ICH) 312, which performs what is known as “southbridge functionality.” As shown in FIG. 3, the memory control hub 311 and input/output control hub 312 may be separate chips.
  • the cache interface logic 315 and a buffer 318 are part of the memory control hub 311 on the chipset.
  • the non-volatile memory may be coupled to the chipset in any manner, and the present invention may be used with any type of chipset.
  • the non-volatile memory is shown stacked on top of the input/output control hub 312. The stacked non-volatile memory may cover the entire chip upon which it is stacked or part of the chip.
  • a non-volatile cache can be a fully associative cache. In another embodiment, a non-volatile cache can be a set associative cache.
  • FIG. 4 is a more detailed partial block diagram of a non-volatile disk cache 350 according to an embodiment of the present invention.
  • Non-volatile disk cache 350 may store a plurality of disk cache entries 400 and management information.
  • each of the disk cache entries stored in non-volatile disk cache 350 is the size of a disk sector on mass storage 220.
  • each disk cache entry corresponds to a block of one or more disk sectors (e.g., 100 disk sectors).
  • Non-volatile disk cache 350 also may contain a cache directory table 410 that has a table entry for every disk cache entry. Cache directory table 410 may be used to determine whether a specific disk sector or block of data is present in non- volatile disk cache 350.
  • the cache directory table indicates whether data corresponding to a disk drive sector is stored in the disk cache.
  • Each table entry in cache directory table 410 may contain a sector address for a logical disk sector stored in non-volatile disk cache 350.
  • the cache directory table 410 may be searched using, for example, a known search algorithm.
  • the table entries in cache directory table 410 may be sorted using a hashing algorithm.
  • the presence of a disk sector in non-volatile disk cache 350 may be confirmed by comparing the desired sector address against the sector address stored in the cache directory table entry. Because cache directory table 410 is stored in non-volatile memory, the state of the cache (e.g., what is in the cache) is preserved even if power to the computer system is removed or turned off. In an embodiment that has 2,000,000 disk cache entries in non-volatile disk cache 350, there are 2,000,000 table entries in cache directory table 410. In this embodiment, each table entry may be four bytes long and the cache directly table may use eight megabytes of non-volatile memory. In an embodiment, the size of the cache directory table is reduced (and thus the speed of the average cache access increased) by including a block of multiple disk sectors in each disk cache entry.
  • Non-volatile disk cache 350 also may contain control registers such as a command register 401, an address register 402, and a destination pointer register 403.
  • Command register 401 may store a command received from another device, such as for example a command from processor 102 to retrieve a disk sector that is stored in non-volatile disk cache 350.
  • Address register 402 may store the sector address for the disk sector being read from non- volatile disk cache 350 or written to non-volatile disk cache 350.
  • Destination pointer register 403 may store the location, for example a device such as a RAM, where the disk sector is being written.
  • FIG. 5 is block diagram of a non-volatile disk cache entry 500 according to an embodiment of the present invention.
  • Non-volatile disk cache entry 500 may be one of the plurality of disk cache entries 400 shown in FIG. 4 and may contain data for a disk sector or block of disk sectors.
  • Non-volatile disk cache entry 500 may have a valid field 501, a modified field 502, a sector address 505, a data field 510, and a ECC field 520.
  • Valid field 502 may be set to "valid" when cache entry 500 contains valid data and may be set to "invalid" when cache entry 500 does not contain valid data.
  • valid field 501 may be changed from “valid” to "invalid” to signify that the cache entry no longer stores the logical disk sector.
  • Modified field 502 may be set to "modified” if the data in cache entry 500 is not identical to the data in the corresponding disk sector(s) on disk drive 230.
  • Modified field 502 may be referred to as a "dirty bit.”
  • Sector address 505 may contain the logical disk sector address (or addresses if the entry has more than one sector) for the data stored in the cache entry and may be referred to as a "sector identifier.” In an embodiment, sector address 505 contains the start address for the block, and each block has a known fixed size.
  • Data field 510 stores the data for that cache entry. In an embodiment, data field 510 may contain a disk sector of data (e.g., 512 bytes).
  • ECC field 520 stores error correcting codes for the cache entry. In an embodiment, each block is associated with an error correcting code.
  • processor 102 may determine that a certain block of data is not in memory 104 and may signal chipset 110 to determine if the data is in the non-volatile disk cache.
  • Disk cache interface logic 315 may be used to determine, based on cache directory table 410, that the block of data is in the non- volatile disk cache.
  • processor 102 may then send a "read" command to command register 401, the disk sector address for the block to address register 402, and a destination address in memory 104 to destination pointer register 403. Based on this command, disk cache interface logic 315 may write the data found in the corresponding cache entry (e.g., the data in data field 510 of cache entry 500) into buffer 318.
  • disk cache interface logic 315 may check error correcting codes associated with data stored in the non-volatile memory (e.g., ECC codes 520) to correct errors that may occur when reading the data from the non-volatile disk cache memory into buffer 318.
  • the non-volatile memory is block-oriented and the chipset checks error correcting codes for each block of data read from the non-volatile memory.
  • reads from the non-volatile disk cache memory are destructive reads, in that the act of reading causes the data stored in that entry to be lost or changed unpredictably. This may occur, for example, if the non- volatile disk cache is implemented in core logic.
  • disk cache interface logic 315 may support write back of destructive reads. That is, disk cache interface logic 315 may cause the data that is read to be written back, thereby restoring the data in the entry to its prior state.
  • Disk drive 130 may write the block of data to memory 104. In addition, it may write the same block of data to the non-volatile disk cache by writing the block to buffer 318 and by writing the appropriate command to command register 401.
  • Cache interface logic 315 may then create a new disk cache entry 500 and may copy the block into the new disk cache entry. In addition, cache interface logic 315 may create a new entry in cache directory table 410 corresponding to the new disk cache entry.
  • the valid field 501 for the new disk cache entry would be set to "valid" and the modified field would be set to "unmodified.”
  • the blocks in the non-volatile disk cache have the same size and structure as blocks in the disk drive, so that a block can be copied into the disk cache without modification or with only minor changes.
  • processor 102 may read the block of data from the nonvolatile disk cache instead of from the disk drive.
  • FIG. 6 is a flow chart of a method of obtaining data associated with a sector in a disk drive according to an embodiment of the present invention. For purposes of clarity, the illustrated method is described in connection with the exemplary embodiments described above.
  • the processor 102 may need an item of data and may determine that the data is stored at, or associated with, a location in a disk drive (601). The most current version of data associated with a location in the disk drive may be stored in the RAM or the disk cache. If the data is not stored in the RAM, the processor may cause a check of the cache directory table to determine whether data associated with the disk drive location is stored in the non-volatile disk cache (602).
  • the data may be read from the non-volatile disk cache (604). Error correcting codes may then be checked for the data as it is read from the non-volatile disk cache, and errors may be corrected (605). The data may then be written to RAM (606). If the data is not stored in the non-volatile disk cache (603), then the requested data may be read from the disk drive (607). The data may then be written to RAM and to the non- volatile disk cache, thus creating a new entry in the non-volatile disk cache (608). Next, a new entry in the cache directory table may be created corresponding to the new entry in the non- volatile disk cache (609).
  • FIG. 7 is a partial block diagram of a computer system that has a non-volatile cache expansion card according to another embodiment of the present invention.
  • a non-volatile disk cache is contained on a PCI bus expansion card.
  • FIG. 7 shows a computer system 700 that may be similar to the computer system 100 shown in FIG. 1.
  • FIG. 7 shows a motherboard 706 that contains a CPU 702, RAM 704, chipset 710, and disk drive connector cable 770 that may be the same as CPU 102, memory 104, chipset 110 and connector cable 170 of FIG. 1.
  • Computer system 700 also contains a disk drive 730 which may be the same as mass storage device 130 of FIG. 1. Unlike in FIG. 1, however, in the embodiment of FIG.
  • non-volatile cache is not attached to chipset 710.
  • computer system 700 contains a nonvolatile cache expansion board 750 that is attached to a PCI bus 716.
  • a network interface card 726 is also attached to PCI bus 716.
  • PCI bus 716 and network interface card 726 may be the same as expansion bus 116 and network interface card 126 of FIG. 1.
  • non-volatile cache expansion board 750 may be attached to another expansion bus in computer 700.
  • Non-volatile cache expansion board 750 may be plugged in or removed from a bus of computer 700.
  • Non-volatile cache expansion board 750 contains non-volatile memory that may be similar to the non-volatile memory in nonvolatile disk cache 350.
  • Expansion board 750 may also contain disk cache interface logic.
  • Computer 700 may cache data for disk drive 730 in a similar fashion as described above with reference to computer system 100.
  • a determination may be made that the data is being cached in non-volatile cache expansion board 750. If so, then the data may be written to RAM 704 from non-volatile expansion board 750 instead of disk drive 730.
  • this embodiment is similar to the embodiment of FIG. 1 in the way it caches data for the disk drive, although in this embodiment the cache is part of an expansion card rather than attached to the chipset as in FIG. 1.
  • FIG. 8 is a partial block diagram of a disk drive that has a non-volatile disk cache according to an embodiment of the present invention.
  • FIG. 8 shows a disk drive 830 which may be similar to the disk drive 230 shown in FIG. 2.
  • disk drive 830 may have a disk controller 810 and a disk spindle 820.
  • Disk drive 830 also has a non-volatile cache 850.
  • Mass storage 220 may store an operating system 831 and a disk drive device driver 835. However, disk spindle 820 does not store cache management instructions.
  • Disk controller 810 has a MPU 811, buffer and program memory 815, interface logic 813, and ECC logic 818 which may be similar to MPU 211, buffer and program memory 215, disk spindle interface logic 213, and ECC logic 218 of FIG. 2.
  • disk controller 810 has cache interface logic 815 and is coupled to non- volatile cache 850.
  • Non-volatile disk cache 850 may be similar to non-volatile cache 350 of FIG. 3
  • cache interface logic 815 may be similar to disk cache interface logic 315 shown in FIG. 3.
  • Disk drive 830 may be used in a computer system such as that shown in FIGS. 1 and 7, except that non-volatile cache 850 may be the only non-volatile disk cache in the computer system.
  • the disk cache 8 operates similarly to the embodiments of FIGS. 1 and 7 in the that it caches data for the disk drive in a non-volatile memory.
  • the disk cache may be part of the disk drive.
  • the disk cache management function may be performed by program 819.
  • the disk cache may be managed by the disk controller 810 and may be transparent to the rest of the computer system.
  • FIG. 9 shows a method of storing data in a non-volatile memory according to an embodiment of the present invention.
  • a command to store data in non-volatile memory is received (901).
  • a user who is editing a document in a word processing program may send the program a command to "save" the document.
  • the program may on its own determine, for example based on a timer, that a backup copy of the document being edited should be saved.
  • a part of the operating system may generate a command to store data into a disk drive or other non-volatile memory, for example to free room in the RAM.
  • a determination is made whether to store the data in a non-volatile cache (902).
  • Such a determination may be made using a known caching algorithm. Data may not be cached, for example, if it is not likely to be used in the near future. In addition, a determination may be made not to store data in a nonvolatile cache if a non-volatile cache expansion board is not coupled to an expansion bus. When a determination is made to store data in the non-volatile cache, the data is written to a non-volatile cache (903). In one embodiment, writing data to the non-volatile cache includes updating a cache directory table in a non-volatile memory on the non-volatile cache (904). When a determination is made not to store data in the non-volatile cache, the data is written to a disk drive (905).
  • Embodiments of the present invention relate to a non- volatile disk cache to cache data for a disk storage device.
  • Several embodiments of the present invention are specifically illustrated and/or described herein. However, it will be appreciated that modifications and variations of the present invention are covered by the above teachings and within the purview of the appended claims without departing from the spirit and intended scope of the invention.
  • non- volatile memory any type of non-volatile memory may be used.
  • the present invention discloses a data structure for a nonvolatile disk cache and for a disk cache entry, the cache and cache entries may be implemented using any configuration of data structure.
  • the disk cache may be implemented as part of a chipset, as an extension card, as part of the disk drive, or in another part of the computer system, such as within a disk drive connector cable.
  • the non-volatile cache may also be used to cache data for other mass storage devices.
  • the embodiments shown such as in FIGS. 3, 4 and 5 for convenience discuss the cache with reference to cache as a disk drive (i.e., a disk cache), the apparatus and methods disclosed may also be used to cache data for other types of mass storage devices.

Abstract

A non-volatile cache including a non-volatile memory to cache data that is stored on a mass storage device.

Description

NON-VOLATILE CACHE
FIELD OF THE INVENTION
Embodiments of the present invention relate to a non- volatile cache. In particular, the present invention relates to a non-volatile memory to cache data for a disk storage device.
BACKGROUND
Computer systems often store data both in a volatile memory and a non-volatile mass storage device. Such data often includes computer instructions, for operating system and application programs, and data that is accessed by these instructions. A disk drive is an example of a mass storage device that can be part of a modern computer system. Nonvolatile mass storage devices, such as disk drives, typically do not lose the data stored on them when the power to the computer system is removed or turned off. Thus, a non- volatile mass storage device such as a disk drive may store data that the computer system is to retain on a relatively permanent basis.
In many computer systems, a set of data currently being used by the computer system's microprocessor may be copied from a disk drive into a volatile random access memory (RAM) because a RAM has a significantly faster access time than a disk drive. However, units of RAM memory (e.g., 1 megabyte) are typically more expensive than that amount of memory in a disk drive, and thus in the typical computer system the storage capacity of the RAM is significantly smaller than the storage capacity of the disk drive. When required data is not present in the RAM memory, the microprocessor can read a block of information including the required data from the disk drive into the RAM. If there is not enough room in the RAM memory, the microprocessor can free space in the RAM by writing a block of data from the RAM back to the disk drive.
Because the access time for a disk drive is generally slower than the access time for RAM, the disk drive is often a performance bottleneck. In addition, accessing data from the disk drive typically uses more power than accessing data from RAM because the disk drive must be mechanically moved. Known disk drives include a volatile cache (e.g., a DRAM cache, an SRAM cache), but such volatile caches are typically part of the microprocessor's main memory address space and thereby byte addressed.
DESCRIPTION OF THE DRAWINGS FIG. 1 is a partial block diagram of a computer system that has a non-volatile cache according to an embodiment of the present invention.
FIG. 2 is a partial block diagram of a disk drive according to an embodiment of the present invention.
FIG. 3 is a partial block diagram of a chipset and non-volatile disk cache according to an embodiment of the present invention.
FIG. 4 is a more detailed partial block diagram of a non-volatile disk cache according to an embodiment of the present invention.
FIG. 5 is a partial block diagram of an entry in a non-volatile disk cache according to an embodiment of the present invention. FIG. 6 is a flow chart of a method of obtaining data associated with a sector in a disk drive according to an embodiment of the present invention.
FIG. 7 is a partial block diagram of a computer system that has a non-volatile disk cache expansion card according to an embodiment of the present invention.
FIG. 8 is a partial block diagram of a disk drive that has a non- volatile disk cache according to an embodiment of the present invention.
FIG. 9 shows a method of storing data in a non-volatile memory according to an embodiment of the present invention.
DETAILED DESCRIPTION
The methods and apparatus described herein relate to a cache for a mass storage device that can be implemented in non-volatile memory. In particular, embodiments of the present invention relate to a non-volatile cache that can improve the efficiency of memory storage and retrieval by caching data in a non-volatile memory.
FIG. 1 shows a partial block diagram of a computer system ("computer") that has a non- volatile cache according to an embodiment of the present invention. In particular, FIG. 1 shows a computer system 100 that includes a central processing unit (CPU) 102, or processor, and a memory unit 104 mounted to a motherboard 106. The processor 102 may be, for example, a Pentium III processor made by Intel Corporation of Santa Clara, California, an application specific integrated circuit (ASIC), a microcontroller, etc. An example of a memory 104 that may be used in computer system 100 is a 128 megabyte dynamic random access memory device (DRAM). Memory 104 may also be, for example, a ROM. Alternatively, the processor 102 and the memory 104 may reside on separate printed circuit cards that are coupled to the motherboard 106. The term "coupled" encompasses a direct connection, an indirect connection, an indirect communication, etc.
A chipset 110 is coupled to, and manages interaction between, the processor 102 and other system components, such as the memory 104, mass storage device 130 and peripheral components attached to expansion bus 116. As used in this application, the term chipset refers to a group of one or more integrated circuit chips that acts as a hub (or core) for data transfer between the processor and components of the computer system. As shown in FIG. 1, the chipset may be coupled to the computer system's motherboard. Chipset 110 may be integrated with (e.g., soldered on to) motherboard 106. Chipset 110 may be similar to, for example, the 820 and 810E chipsets made by Intel, Corporation of Santa Clara, California. Chipset 110 may be a single integrated circuit or may comprise two or more integrated circuit chips. As shown in FIG. 3, chipset 110 may include a memory control hub (MCH) 311, which performs what is known as "northbridge functionality," and an input/output controller hub (ICH) 312, which performs what is known as "southbridge functionality." Mass storage device 130 may be a disk drive and may be coupled to chipset 110 through a connector cable 170. Mass storage device 130 may also be a 3.5-inch diskette, a 5.25-inch floppy diskette, a ZIP disk (e.g., manufactured by Iomega Corporation of Roy, Utah), a Jaz disk (e.g., manufactured by Iomega Corporation), an LS-120 Superdisk (e.g., manufactured by Imation Corporation of Oakdale, Minnesota), a rewritable Digital Versatile Disc (DVD-RAM), a Read/Write Compact Disk (CD-RW), optical storage device, magneto-optical storage device, magnetic storage device, holographic, etc. For convenience, this application discloses embodiments in which the mass storage device is a disk drive. An embodiment of a disk drive that may be used with the present invention is shown in FIG. 2.
Expansion bus 116 may be a peripheral component interface (PCI) bus, which is a type of data bus often found in the computer system 100 and which complies with a PCI Local Bus Specification. One or more PCI compliant peripheral devices, such as a network interface card (NIC) 126, may be connected to the expansion bus 116. The network interface card 126 may tie the computer system 100 to a local or wide area computer network.
An embodiment of the present invention is a non- volatile cache that comprises a non-volatile memory to cache data that is stored on a mass storage device. In an embodiment, shown for example in FIG. 1, a non-volatile cache 150 is coupled to chipset 110. In an embodiment, the chipset and non-volatile memory cache data for mass storage device 130. In a further embodiment, the mass storage device is a disk drive and nonvolatile cache 150 caches data for the disk drive, in which case the cache may be referred to as a disk cache.
FIG. 2 shows a partial block diagram of disk drive 230 according to an embodiment of the present invention. Disk drive 230 may be the same as mass storage device 130 of FIG. 1, and is assumed to be mass storage device 130 for the purpose of the discussion below. Disk drive 230 may be an external disk drive or an internal disk drive.
Disk drive 230 may store, for example, over 100 gigabytes of data. In an embodiment, disk drive 230 is a hard drive. In a further embodiment, disk drive 230 is a Cheetah 18XL disk drive made by Seagate Technology Inc. of Scotts Valley, California. Disk drive 130 may comprise a disk controller 210 and a mass storage 220. Disk controller 210 may be an application specific integrated circuit and may contain a microprocessor unit (MPU) 211 coupled to a buffer and program memory 215 and ECC logic 218. Buffer and program memory 218 may store a disk drive operation program 219 that is executed by MPU 211 and may also be used as a buffer to store data that is being written to mass storage 220 and read from mass storage 220. MPU 211 may process requests from CPU 102 to write data to or read data from mass storage 220. For example, MPU 211 may determine when a request has been made, and may translate from a logical sector address to a physical sector address. Buffer and program memory 215 may be coupled to disk spindle interface logic 213 which may interface with the host system (e.g., computer system 100). Disk controller 210 may also contain disk formating logic to format data blocks (e.g., insert a preamble and special characters) that are written to the mass storage. As used in this application, "logic" may include hardware logic, such as circuits that are wired to perform operations, or program logic, such as firmware that performs operations. Mass storage 220 may store, among other things, the computer's operating system (OS) code 231, which, upon boot-up, may be loaded into the computer's memory 104 for execution by the processor 102. Mass storage 220 may also store a device driver 235 for the disk drive, which may also be loaded into the computer's memory 104 for execution by the processor 102 to perform data translation and communication with disk drive 230. The mass storage 220 also may store, among other things, application programs and data that is accessed by these programs. The mass storage 220 may contain platters that may be divided into tracks, which in turn may be divided into sectors. For example, a formatted disk might have 1000's of tracks per platter. In an embodiment, when disk controller 210 receives requests from outside the disk drive to read or write data, the requests may be made in terms of logical disk sectors, and the disk controller may translate these into physical disk sectors using a mapping algorithm. Some physical sectors may be left out for spares, and the mapping may be hardware assisted.
In operation, when the OS 231 (being executed by processor 102) receives a request for data from a program or other part of the OS, a file system may be used to check a file allocation table (FAT) to determine whether the data is currently in the memory 104, and if not, where on the mass storage 220 (e.g., disk sector address) the data can be found. If the OS 231 determines that the data it needs is not in the memory 104, but is stored on disk drive 230, OS 231 may send a request for the data through chipset 110 to disk drive 230. More precisely, OS 231 may request that disk drive 230 send a copy of the disk sector containing the data that OS 231 requests. Disk controller 210 may then receive the request for the disk sector, retrieve the disk sector from mass storage 220, and send the data for that disk sector through chipset 110 to memory 104. At another time, OS 231 may cause a disk sector of data to be written from memory 104 to disk drive 230, in which case disk controller 210 will receive the data and cause it to be stored on a disk sector of mass storage 220.
In an embodiment, the sector is the smallest addressable physical storage unit used by the disk drive 230, although management information such as addressing information and validity data may be accessed in smaller units. In a further embodiment, each disk sector is the size of 512 bytes of data. In an embodiment, a block is a group of one or more disk sectors that may contain identification codes, error detection codes and/or error correcting codes (ECC) for the block. In an embodiment, the OS requests data from the disk drive in terms of a disk sector or block of sectors (i.e., it would not request a byte or word), in which case the disk drive is said to be block-oriented (i.e., block-addressable). In an embodiment of a block-oriented disk drive, management information may be accessed in smaller units. ECC is an advanced error detection and correction protocol that may detect single-bit and multi-bit errors and may correct some errors on the fly. In an embodiment, the disk sectors in a block are physically located next to each other on one of the disk platters. In a further embodiment, the blocks are manipulated as a unit by disk driver 230, non-volatile cache 150, and associated components. In an embodiment, a block contains 100 disk sectors.
In an embodiment of the present invention, the data stored in disk drive 230 may be cached in non-volatile cache 150. In this embodiment, non-volatile cache 150 acts as a special memory subsystem which stores duplicates of frequently used disk drive sectors for quicker access. According to this embodiment, when a disk sector of data is being copied from disk drive 230 into memory 104, a copy of the disk sector may be stored in non-volatile cache 150. According to this embodiment, when the OS determines that it needs data not in memory 104, and the required data is present in non-volatile cache 150, then the data may be read into memory 104 from non-volatile cache 150 (instead of from disk drive 230). In this embodiment, the logical disk drive memory comprises physical disk drive 230 and non-volatile cache 150. If the OS determines that it needs to store data on the disk, for example when the user of a word-processing program instructs the program to "save" the current document, then the data may be stored on the physical disk drive 230 or the non-volatile cache 150. Similarly, when the OS determines it to be necessary to store data that is in memory 104 to free up space in memory 104, the data may be written back to non-volatile cache 150. Because the non-volatile cache 150 is non-volatile, the data saved on it will not be lost if the power is turned off to the computer system. When non-volatile cache 150 has a faster access time than disk drive 230, the use of non- volatile disk-cache 150 may in the aggregate increase the speed with which processor 102 executes programs. For example, when the average access speed of disk drive 230 is significantly greater than the average access speed for non-volatile disk cache 150, then the use of non-volatile disk cache 150 may lead to a significant increase in overall access speed. Because accesses to the disk drive in a typical computer system may be the cause of up to 80% of the time that a user spends waiting for the system to respond, the use of non-volatile cache 150 will lead to greater user satisfaction. In addition, when non-volatile cache 150 uses less power per access than disk drive 230, then the use of non- volatile cache 150 may lead to saving in the amount of power used by the system. In addition, non-volatile disk cache 150 may be more reliable than a disk drive, thus minimizing the times when the computer system crashes or becomes inoperable.
In an embodiment, the disk drive's device driver 235 contains cache management instructions 237 for non-volatile cache 150. Such cache management 237 instructions may make decisions regarding what data to cache, what data to replace, and what data to write back to the disk. In addition, cache management instructions 237 may also determine when a cache hit has occurred and what data to pre-fetch into the cache. For example, the cache management instructions 237 may determine whether a desired disk sector of data should be read into memory 104 from non-volatile cache 150 (e.g., if the data is present in non-volatile cache 150) or from disk drive 230. Cache management determinations, such as whether data should be cached in non-volatile cache 150, may be made using known cache algorithms. For example, if the algorithm determines that there is a low likelihood of the data being used again in the near future (e.g., the data is for an MP3 audio file), then the data might not be cached. In addition, when it becomes necessary to write data in non-volatile cache 150 back into disk drive 230, cache management instructions may determine which data to write back using, for example, a known least recently used (LRU) algorithm or a random replacement algorithm.
In an embodiment, the device driver 235 for the disk drive appears to the OS 231 as if it were a normal device driver (e.g., ATAPI.SYS in a WIN98 environment) even though it has cache management instructions 237. In this embodiment, the existence of non-volatile cache 150 is transparent to OS 231. In a further embodiment, the cache management instructions are part of OS 231. In another embodiment, cache management is performed by logic on chipset 110. In a still further embodiment, cache management is performed by a combination of OS 231 , the device driver for the disk drive 235, and/or cache management logic on chipset 110.
FIG. 3 is a partial block diagram of a chipset 310 and non-volatile disk cache 350 according to an embodiment of the present invention. Chipset 310 and non-volatile disk cache 350 may be the same as chipset 110 and non-volatile cache 150 of FIG. 1. In this embodiment, non-volatile disk cache 350 is referred to as a disk cache because it caches data for a disk drive. Non-volatile disk cache 350 may be any type of memory that can be read from and written to and that will retain its contents when all power sources external to the memory are removed or turned off. Non-volatile disk cache 350 may be, for example, a flash memory, a battery backed-up DRAM, a magnetic RAM, a holographic memory, a ferro-electric RAM, etc. In an embodiment, non-volatile disk cache 350 may store 500 megabytes of data. In a further embodiment, non-volatile disk cache 350 is block-oriented, with each block containing one or more logical disk sectors that correspond to logical disk sectors of a disk drive. In this embodiment, each disk sector and block of non-volatile disk cache 350 are the same size as in the disk drive. If disk cache 350 is block-oriented, data (other than cache management information) may be read or stored in terms of a disk sector or block of sectors.
In an embodiment, non-volatile cache 350 is coupled to chipset 310. In a further embodiment, non-volatile disk cache 350 may be directly attached to (i.e., not cabled) or may be part of chipset 310. In an embodiment, shown in FIG. 3, non-volatile cache 150 is stacked on an integrated circuit in chipset 310. In this embodiment, ICH 312 includes disk cache interface logic 315, which controls access to non-volatile disk cache 350.
As discussed above, chipset 310 may be a single integrated circuit or group of integrated circuits that control communication between a processor and associated devices. In an embodiment, chipset 310 comprises multiple integrated circuits, which may be referred to as a first chipset integrated circuit and a second chipset integrated circuit, and the non- volatile disk cache may be coupled to one of the integrated circuits in the chipset. Chipset 310 may include a memory control hub (MCH) 311, which performs what is known as "northbridge functionality," and an input/output controller hub (ICH) 312, which performs what is known as "southbridge functionality." As shown in FIG. 3, the memory control hub 311 and input/output control hub 312 may be separate chips. In an embodiment, the cache interface logic 315 and a buffer 318 are part of the memory control hub 311 on the chipset. The non-volatile memory may be coupled to the chipset in any manner, and the present invention may be used with any type of chipset. In FIG. 3, the non-volatile memory is shown stacked on top of the input/output control hub 312. The stacked non-volatile memory may cover the entire chip upon which it is stacked or part of the chip.
In an embodiment, a non-volatile cache can be a fully associative cache. In another embodiment, a non-volatile cache can be a set associative cache.
FIG. 4 is a more detailed partial block diagram of a non-volatile disk cache 350 according to an embodiment of the present invention. Non-volatile disk cache 350 may store a plurality of disk cache entries 400 and management information. In an embodiment, each of the disk cache entries stored in non-volatile disk cache 350 is the size of a disk sector on mass storage 220. In a further embodiment, each disk cache entry corresponds to a block of one or more disk sectors (e.g., 100 disk sectors). Non-volatile disk cache 350 also may contain a cache directory table 410 that has a table entry for every disk cache entry. Cache directory table 410 may be used to determine whether a specific disk sector or block of data is present in non- volatile disk cache 350. In one embodiment, the cache directory table indicates whether data corresponding to a disk drive sector is stored in the disk cache. There may be one table entry in cache directory table 410 for each valid disk cache entry that contains, for example, a logical disk sector of data. Each table entry in cache directory table 410 may contain a sector address for a logical disk sector stored in non-volatile disk cache 350. To determine whether a disk sector is present in non-volatile disk cache 350, the cache directory table 410 may be searched using, for example, a known search algorithm. Alternatively, the table entries in cache directory table 410 may be sorted using a hashing algorithm. In an embodiment, the presence of a disk sector in non-volatile disk cache 350 may be confirmed by comparing the desired sector address against the sector address stored in the cache directory table entry. Because cache directory table 410 is stored in non-volatile memory, the state of the cache (e.g., what is in the cache) is preserved even if power to the computer system is removed or turned off. In an embodiment that has 2,000,000 disk cache entries in non-volatile disk cache 350, there are 2,000,000 table entries in cache directory table 410. In this embodiment, each table entry may be four bytes long and the cache directly table may use eight megabytes of non-volatile memory. In an embodiment, the size of the cache directory table is reduced (and thus the speed of the average cache access increased) by including a block of multiple disk sectors in each disk cache entry.
Non-volatile disk cache 350 also may contain control registers such as a command register 401, an address register 402, and a destination pointer register 403. Command register 401 may store a command received from another device, such as for example a command from processor 102 to retrieve a disk sector that is stored in non-volatile disk cache 350. Address register 402 may store the sector address for the disk sector being read from non- volatile disk cache 350 or written to non-volatile disk cache 350. Destination pointer register 403 may store the location, for example a device such as a RAM, where the disk sector is being written.
FIG. 5 is block diagram of a non-volatile disk cache entry 500 according to an embodiment of the present invention. Non-volatile disk cache entry 500 may be one of the plurality of disk cache entries 400 shown in FIG. 4 and may contain data for a disk sector or block of disk sectors. Non-volatile disk cache entry 500 may have a valid field 501, a modified field 502, a sector address 505, a data field 510, and a ECC field 520. Valid field 502 may be set to "valid" when cache entry 500 contains valid data and may be set to "invalid" when cache entry 500 does not contain valid data. For example, when the data in cache entry 500 is written back into disk drive 230, valid field 501 may be changed from "valid" to "invalid" to signify that the cache entry no longer stores the logical disk sector. Modified field 502 may be set to "modified" if the data in cache entry 500 is not identical to the data in the corresponding disk sector(s) on disk drive 230. For example, if a disk sector of data is written back from memory 104 into non- volatile cache 150, and that disk sector contains data that was modified while in memory 104, then the modified field for the disk cache entry corresponding to that data will be set to "modified." Modified field 502 may be referred to as a "dirty bit." Sector address 505 may contain the logical disk sector address (or addresses if the entry has more than one sector) for the data stored in the cache entry and may be referred to as a "sector identifier." In an embodiment, sector address 505 contains the start address for the block, and each block has a known fixed size. Data field 510 stores the data for that cache entry. In an embodiment, data field 510 may contain a disk sector of data (e.g., 512 bytes). ECC field 520 stores error correcting codes for the cache entry. In an embodiment, each block is associated with an error correcting code.
In operation, processor 102 may determine that a certain block of data is not in memory 104 and may signal chipset 110 to determine if the data is in the non-volatile disk cache. Disk cache interface logic 315 may be used to determine, based on cache directory table 410, that the block of data is in the non- volatile disk cache. In order to read the block of data from non-volatile disk cache 350, processor 102 may then send a "read" command to command register 401, the disk sector address for the block to address register 402, and a destination address in memory 104 to destination pointer register 403. Based on this command, disk cache interface logic 315 may write the data found in the corresponding cache entry (e.g., the data in data field 510 of cache entry 500) into buffer 318. The data in the buffer may then be transferred to the location in memory 104 specified by the destination pointer register 403. In another embodiment, because of the speed of the memory, a buffer 318 may not be used. In an embodiment, disk cache interface logic 315 may check error correcting codes associated with data stored in the non-volatile memory (e.g., ECC codes 520) to correct errors that may occur when reading the data from the non-volatile disk cache memory into buffer 318. In an embodiment, the non-volatile memory is block-oriented and the chipset checks error correcting codes for each block of data read from the non-volatile memory.
In an embodiment, reads from the non-volatile disk cache memory are destructive reads, in that the act of reading causes the data stored in that entry to be lost or changed unpredictably. This may occur, for example, if the non- volatile disk cache is implemented in core logic. In this embodiment, disk cache interface logic 315 may support write back of destructive reads. That is, disk cache interface logic 315 may cause the data that is read to be written back, thereby restoring the data in the entry to its prior state.
Alternatively, if the data desired by processor 102 is not present in the non- volatile disk cache, a request for the appropriate block of data may be sent to disk drive 230. Disk drive 130 may write the block of data to memory 104. In addition, it may write the same block of data to the non-volatile disk cache by writing the block to buffer 318 and by writing the appropriate command to command register 401. Cache interface logic 315 may then create a new disk cache entry 500 and may copy the block into the new disk cache entry. In addition, cache interface logic 315 may create a new entry in cache directory table 410 corresponding to the new disk cache entry. The valid field 501 for the new disk cache entry would be set to "valid" and the modified field would be set to "unmodified." In an embodiment, the blocks in the non-volatile disk cache have the same size and structure as blocks in the disk drive, so that a block can be copied into the disk cache without modification or with only minor changes. Once the block of data is stored in the non- volatile disk cache, processor 102 may read the block of data from the nonvolatile disk cache instead of from the disk drive.
FIG. 6 is a flow chart of a method of obtaining data associated with a sector in a disk drive according to an embodiment of the present invention. For purposes of clarity, the illustrated method is described in connection with the exemplary embodiments described above. The processor 102 may need an item of data and may determine that the data is stored at, or associated with, a location in a disk drive (601). The most current version of data associated with a location in the disk drive may be stored in the RAM or the disk cache. If the data is not stored in the RAM, the processor may cause a check of the cache directory table to determine whether data associated with the disk drive location is stored in the non-volatile disk cache (602). If the data is stored in the non-volatile disk cache (603), then the data may be read from the non-volatile disk cache (604). Error correcting codes may then be checked for the data as it is read from the non-volatile disk cache, and errors may be corrected (605). The data may then be written to RAM (606). If the data is not stored in the non-volatile disk cache (603), then the requested data may be read from the disk drive (607). The data may then be written to RAM and to the non- volatile disk cache, thus creating a new entry in the non-volatile disk cache (608). Next, a new entry in the cache directory table may be created corresponding to the new entry in the non- volatile disk cache (609).
FIG. 7 is a partial block diagram of a computer system that has a non-volatile cache expansion card according to another embodiment of the present invention. In this embodiment, a non-volatile disk cache is contained on a PCI bus expansion card. FIG. 7 shows a computer system 700 that may be similar to the computer system 100 shown in FIG. 1. FIG. 7 shows a motherboard 706 that contains a CPU 702, RAM 704, chipset 710, and disk drive connector cable 770 that may be the same as CPU 102, memory 104, chipset 110 and connector cable 170 of FIG. 1. Computer system 700 also contains a disk drive 730 which may be the same as mass storage device 130 of FIG. 1. Unlike in FIG. 1, however, in the embodiment of FIG. 7 a non-volatile cache is not attached to chipset 710. In this embodiment of the present invention, computer system 700 contains a nonvolatile cache expansion board 750 that is attached to a PCI bus 716. A network interface card 726 is also attached to PCI bus 716. PCI bus 716 and network interface card 726 may be the same as expansion bus 116 and network interface card 126 of FIG. 1. In other embodiments, non-volatile cache expansion board 750 may be attached to another expansion bus in computer 700. Non-volatile cache expansion board 750 may be plugged in or removed from a bus of computer 700. Non-volatile cache expansion board 750 contains non-volatile memory that may be similar to the non-volatile memory in nonvolatile disk cache 350. Expansion board 750 may also contain disk cache interface logic. Computer 700 may cache data for disk drive 730 in a similar fashion as described above with reference to computer system 100. When the operating system in computer 700 needs to obtain data that may be stored on disk drive 730, a determination may be made that the data is being cached in non-volatile cache expansion board 750. If so, then the data may be written to RAM 704 from non-volatile expansion board 750 instead of disk drive 730. Thus, this embodiment is similar to the embodiment of FIG. 1 in the way it caches data for the disk drive, although in this embodiment the cache is part of an expansion card rather than attached to the chipset as in FIG. 1.
FIG. 8 is a partial block diagram of a disk drive that has a non-volatile disk cache according to an embodiment of the present invention. FIG. 8 shows a disk drive 830 which may be similar to the disk drive 230 shown in FIG. 2. Like disk drive 230, disk drive 830 may have a disk controller 810 and a disk spindle 820. Disk drive 830 also has a non-volatile cache 850. Mass storage 220 may store an operating system 831 and a disk drive device driver 835. However, disk spindle 820 does not store cache management instructions. Disk controller 810 has a MPU 811, buffer and program memory 815, interface logic 813, and ECC logic 818 which may be similar to MPU 211, buffer and program memory 215, disk spindle interface logic 213, and ECC logic 218 of FIG. 2. In addition, disk controller 810 has cache interface logic 815 and is coupled to non- volatile cache 850. Non-volatile disk cache 850 may be similar to non-volatile cache 350 of FIG. 3, and cache interface logic 815 may be similar to disk cache interface logic 315 shown in FIG. 3. Disk drive 830 may be used in a computer system such as that shown in FIGS. 1 and 7, except that non-volatile cache 850 may be the only non-volatile disk cache in the computer system. The embodiment shown in FIG. 8 operates similarly to the embodiments of FIGS. 1 and 7 in the that it caches data for the disk drive in a non-volatile memory. In this embodiment, however, the disk cache may be part of the disk drive. In a further embodiment, the disk cache management function may be performed by program 819. In this embodiment the disk cache may be managed by the disk controller 810 and may be transparent to the rest of the computer system.
FIG. 9 shows a method of storing data in a non-volatile memory according to an embodiment of the present invention. A command to store data in non-volatile memory is received (901). For example, a user who is editing a document in a word processing program may send the program a command to "save" the document. As another example, the program may on its own determine, for example based on a timer, that a backup copy of the document being edited should be saved. As another example, a part of the operating system may generate a command to store data into a disk drive or other non-volatile memory, for example to free room in the RAM. A determination is made whether to store the data in a non-volatile cache (902). Such a determination may be made using a known caching algorithm. Data may not be cached, for example, if it is not likely to be used in the near future. In addition, a determination may be made not to store data in a nonvolatile cache if a non-volatile cache expansion board is not coupled to an expansion bus. When a determination is made to store data in the non-volatile cache, the data is written to a non-volatile cache (903). In one embodiment, writing data to the non-volatile cache includes updating a cache directory table in a non-volatile memory on the non-volatile cache (904). When a determination is made not to store data in the non-volatile cache, the data is written to a disk drive (905).
Embodiments of the present invention relate to a non- volatile disk cache to cache data for a disk storage device. Several embodiments of the present invention are specifically illustrated and/or described herein. However, it will be appreciated that modifications and variations of the present invention are covered by the above teachings and within the purview of the appended claims without departing from the spirit and intended scope of the invention. For example, although several types of non- volatile memory are discussed for use as the cache, any type of non-volatile memory may be used. As another example, although the present invention discloses a data structure for a nonvolatile disk cache and for a disk cache entry, the cache and cache entries may be implemented using any configuration of data structure. Moreover, the disk cache may be implemented as part of a chipset, as an extension card, as part of the disk drive, or in another part of the computer system, such as within a disk drive connector cable. In addition, while the embodiments described above discuss using the non-volatile cache to cache data for a disk drive, the non-volatile cache may also be used to cache data for other mass storage devices. Thus, while the embodiments shown such as in FIGS. 3, 4 and 5 for convenience discuss the cache with reference to cache as a disk drive (i.e., a disk cache), the apparatus and methods disclosed may also be used to cache data for other types of mass storage devices.

Claims

I CLAIM:
1. A non-volatile cache, comprising a non-volatile memory to cache data that is stored on a mass storage device.
2. The non- volatile cache of claim 1, wherein the mass storage device is a disk drive.
3. The non- volatile cache of claim 1, wherein the non-volatile memoiy is block- oriented.
4. The non- volatile cache of claim 1, wherein the non-volatile memory is coupled to a chipset.
5. A disk cache, comprising: a block-oriented memory device; and disk cache interface logic coupled to the block-oriented memory device.
6. The disk cache of claim 5, wherein the memory device is a non-volatile memory device.
7. The disk cache of claim 6, wherein the memory device is to store a cache directory table, the cache directory table to indicate whether data corresponding to a disk drive sector is stored in the disk cache.
8. The disk cache of claim 7, wherein the disk cache interface logic is to check error correction codes for data read from the non-volatile memory device.
9. An apparatus to cache data, the apparatus comprising a chipset coupled to a nonvolatile cache memory.
10. The apparatus of claim 9, wherein the chipset contains logic to control communication between a processor and an associated device.
11. The apparatus of claim 9, wherein the non- volatile cache memory is a disk cache memory.
14. The apparatus of claim 11, wherein the non-volatile cache memory is directly connected to the chipset.
15. The apparatus of claim 12, wherein the non-volatile cache memory is block- oriented.
16. The apparatus of claim 11, wherein the non- volatile cache memory is part of the chipset.
17. The apparatus of claim 14, wherein the non- volatile cache memory is stacked on the chipset.
18. The apparatus of claim 11, wherein the chipset includes cache interface logic to control access to the non-volatile cache memory.
19. The apparatus of claim 16, wherein the cache interface logic is part of a memory control hub on the chipset.
1. 20. The apparatus of claim 16, wherein the chipset further includes logic to check error correcting codes associated with data stored in the non-volatile cache memory.
21. The apparatus of claim 18, wherein the non-volatile memory is block-oriented, and wherein the apparatus contains logic to check error correcting codes for each block of data read from the non-volatile memory.
22. A computer, comprising: a processor; a chipset coupled to the processor; a disk storage device coupled to the chipset; and a non-volatile disk cache memory coupled to the chipset.
23. The computer of claim 20, further comprising device driver instructions to store data on the disk storage device and read data from the disk storage device, said device driver instructions including cache management instructions to manage caching of data in the non-volatile disk cache memory.
24. The computer of claim 21, wherein the disk memory device driver instructions include instructions to determine whether the data is present in the non-volatile disk cache memory by checking a cache directory table stored in the non-volatile disk cache memory.
25. The computer of claim 22, wherein the non-volatile disk cache is block-oriented.
26. The computer of claim 23, wherein: the chipset includes disk cache interface logic to control access to the nonvolatile disk cache; and the disk cache interface logic is to check error correction codes associated with blocks of data read from the non-volatile disk cache.
27. A method of obtaining data associated with a location in a disk memory, the method comprising: determining whether data associated with a location in a disk memory is stored in a non-volatile cache memory; and reading data associated with the location from the non-volatile cache memory when said data is stored in the non-volatile cache memory.
28. The method of claim 25, further comprising: reading data associated with the location from the disk memory when said data is not stored in the non-volatile cache memory.
29. The method of claim 26, wherein said determining comprises checking a cache directory table stored in the non-volatile memory.
30. The method of claim 27, wherein the non-volatile cache memory is coupled to a chipset, and wherein said reading data from the non-volatile cache memory includes sending a command to cache interface logic located within the chipset, the command to direct reading of the data from the non-volatile cache memory into a RAM.
31. The method of claim 28, wherein the non-volatile cache memory is block-oriented, and wherein reading data from the non-volatile cache memory further comprises checking error correcting codes associated with each block read from the nonvolatile cache memory.
32. The method of claim 29, wherein said reading data associated with the location from the disk memory further comprises storing said data to a RAM and storing said data to the non-volatile cache memory.
PCT/US2001/017851 2000-06-23 2001-06-01 Non-volatile cache WO2002001365A2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
AU2001275147A AU2001275147A1 (en) 2000-06-23 2001-06-01 Non-volatile cache
JP2002506434A JP3951918B2 (en) 2000-06-23 2001-06-01 Non-volatile cache
DE10196380T DE10196380T1 (en) 2000-06-23 2001-06-01 Non-volatile cache
GB0228871A GB2379538B (en) 2000-06-23 2001-06-01 Non-volatile cache

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60201000A 2000-06-23 2000-06-23
US09/602,010 2000-06-23

Publications (2)

Publication Number Publication Date
WO2002001365A2 true WO2002001365A2 (en) 2002-01-03
WO2002001365A3 WO2002001365A3 (en) 2002-04-11

Family

ID=24409613

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/017851 WO2002001365A2 (en) 2000-06-23 2001-06-01 Non-volatile cache

Country Status (6)

Country Link
JP (1) JP3951918B2 (en)
CN (1) CN1295623C (en)
AU (1) AU2001275147A1 (en)
DE (1) DE10196380T1 (en)
GB (1) GB2379538B (en)
WO (1) WO2002001365A2 (en)

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003003202A1 (en) * 2001-06-27 2003-01-09 Intel Corporation System boot time reduction method
US7103724B2 (en) 2002-04-01 2006-09-05 Intel Corporation Method and apparatus to generate cache data
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
EP1923794A1 (en) * 2006-11-16 2008-05-21 Samsung Electronics Co., Ltd. Apparatus and method for managing data
WO2008070173A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
US7454653B2 (en) 2002-11-26 2008-11-18 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US7634585B2 (en) * 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
WO2010093108A1 (en) * 2009-02-13 2010-08-19 (주)인디링스 Storage system using a rapid storage device as a cache
EP2254022A1 (en) * 2004-02-04 2010-11-24 SanDisk Corporation Dual media storage device
US8195878B2 (en) 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
US8448047B2 (en) 2008-02-28 2013-05-21 Fujitsu Limited Storage device, storage control device, data transfer intergrated circuit, and storage control method
US8479045B2 (en) 2008-08-06 2013-07-02 Fujitsu Limited Controller for disk array device, data transfer device, and method of power recovery process
US8554982B2 (en) 2004-10-27 2013-10-08 Sony Corporation Storage device and information processing system
US8719501B2 (en) 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US8775905B2 (en) 2011-01-25 2014-07-08 Sony Corporation Memory system and operation method thereof
US8782344B2 (en) 2012-01-12 2014-07-15 Fusion-Io, Inc. Systems and methods for managing cache admission
US8832355B2 (en) 2008-02-28 2014-09-09 Fujitsu Limited Storage device, storage controlling device, and storage controlling method
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9058123B2 (en) 2012-08-31 2015-06-16 Intelligent Intellectual Property Holdings 2 Llc Systems, methods, and interfaces for adaptive persistence
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
US9170754B2 (en) 2007-12-06 2015-10-27 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9317209B2 (en) 2004-10-21 2016-04-19 Microsoft Technology Licensing, Llc Using external memory devices to improve system performance
US9361183B2 (en) 2008-09-19 2016-06-07 Microsoft Technology Licensing, Llc Aggregation of write traffic to a data store
US9529716B2 (en) 2005-12-16 2016-12-27 Microsoft Technology Licensing, Llc Optimizing write and wear performance for a memory
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9767017B2 (en) 2010-12-13 2017-09-19 Sandisk Technologies Llc Memory device with volatile and non-volatile media
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9910777B2 (en) 2010-07-28 2018-03-06 Sandisk Technologies Llc Enhanced integrity through atomic writes in cache
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US10133663B2 (en) 2010-12-17 2018-11-20 Longitude Enterprise Flash S.A.R.L. Systems and methods for persistent address space management
US10216637B2 (en) 2004-05-03 2019-02-26 Microsoft Technology Licensing, Llc Non-volatile memory cache performance improvement
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
WO2023102784A1 (en) * 2021-12-08 2023-06-15 华为技术有限公司 Data access method and apparatus, disk controller, disk and data storage system
US11960412B2 (en) 2022-10-19 2024-04-16 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328304B2 (en) * 2004-02-27 2008-02-05 Intel Corporation Interface for a block addressable mass storage system
JP4664011B2 (en) * 2004-06-21 2011-04-06 株式会社リコー Information processing apparatus and information processing method
JP5338859B2 (en) * 2004-10-27 2013-11-13 ソニー株式会社 Storage device and information processing system
JP4989875B2 (en) * 2005-11-01 2012-08-01 技嘉科技股▲ふん▼有限公司 Simulated hard disk method
US7721049B2 (en) * 2006-03-27 2010-05-18 Kabuhsiki Kaisha Toshiba Disk drive write method
KR101128234B1 (en) * 2006-08-23 2012-03-23 엘지전자 주식회사 Apparatus and method for controlling access of memory
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
JP5581577B2 (en) * 2008-08-29 2014-09-03 富士通株式会社 Data processing device
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
CN102136274B (en) * 2009-12-30 2013-03-27 爱国者电子科技有限公司 Mobile hard disk with two storage media
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
EP2652623B1 (en) 2010-12-13 2018-08-01 SanDisk Technologies LLC Apparatus, system, and method for auto-commit memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
WO2012100087A2 (en) 2011-01-19 2012-07-26 Fusion-Io, Inc. Apparatus, system, and method for managing out-of-service conditions
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
CN102521147B (en) * 2011-11-17 2015-03-25 曙光信息产业(北京)有限公司 Management method by using rapid non-volatile medium as cache
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9208101B2 (en) * 2013-06-26 2015-12-08 Western Digital Technologies, Inc. Virtual NAND capacity extension in a hybrid drive
CN103488582B (en) * 2013-09-05 2017-07-28 华为技术有限公司 Write the method and device of cache memory
US20150089118A1 (en) * 2013-09-20 2015-03-26 Sandisk Technologies Inc. Methods, systems, and computer readable media for partition and cache restore
JP5950470B2 (en) * 2014-03-24 2016-07-13 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. Method and buffer system for controlling buffer mapping
CN106528001B (en) * 2016-12-05 2019-08-23 北京航空航天大学 A kind of caching system based on nonvolatile memory and software RAID
CN111857587B (en) * 2020-07-15 2022-06-17 济南浪潮数据技术有限公司 Hit detection method based on magnetic track address in cache device of storage system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615353A (en) * 1991-03-05 1997-03-25 Zitel Corporation Method for operating a cache memory using a LRU table and access flags
US5764945A (en) * 1994-02-09 1998-06-09 Ballard; Clinton L. CD-ROM average access time improvement
US5860083A (en) * 1996-11-26 1999-01-12 Kabushiki Kaisha Toshiba Data storage system having flash memory and disk drive
US5963721A (en) * 1995-12-29 1999-10-05 Texas Instruments Incorporated Microprocessor system with capability for asynchronous bus transactions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6362056A (en) * 1986-09-02 1988-03-18 Nec Corp Disk cache device
JPH0273439A (en) * 1988-09-09 1990-03-13 Nec Corp Cache controller for auxiliary memory
WO1992015933A1 (en) * 1991-03-05 1992-09-17 Zitel Corporation Cache memory system and method of operating the cache memory system
GB2256735B (en) * 1991-06-12 1995-06-21 Intel Corp Non-volatile disk cache
JPH05225055A (en) * 1992-02-17 1993-09-03 Sharp Corp Information processor
JPH05250274A (en) * 1992-03-04 1993-09-28 Mitsubishi Electric Corp Disk cache device
EP0667579A1 (en) * 1994-02-09 1995-08-16 Ballard Synergy Corporation Cache for optical storage device
EP0793827B1 (en) * 1994-11-22 2002-03-06 Monolithic System Technology, Inc. Method and structure for utilizing a dram array as second level cache memory
JPH1040170A (en) * 1996-07-26 1998-02-13 Toshiba Corp Disk cache system
JP2000122968A (en) * 1998-10-15 2000-04-28 Nec Corp Input/output cache memory and its control method
US6195749B1 (en) * 2000-02-10 2001-02-27 Advanced Micro Devices, Inc. Computer system including a memory access controller for using non-system memory storage resources during system boot time

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615353A (en) * 1991-03-05 1997-03-25 Zitel Corporation Method for operating a cache memory using a LRU table and access flags
US5764945A (en) * 1994-02-09 1998-06-09 Ballard; Clinton L. CD-ROM average access time improvement
US5963721A (en) * 1995-12-29 1999-10-05 Texas Instruments Incorporated Microprocessor system with capability for asynchronous bus transactions
US5860083A (en) * 1996-11-26 1999-01-12 Kabushiki Kaisha Toshiba Data storage system having flash memory and disk drive

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TANZAWA T ET AL: "A COMPACT ON-CHIP ECC FOR LOW COST FLASH MEMORIES" IEEE JOURNAL OF SOLID-STATE CIRCUITS, IEEE INC. NEW YORK, US, vol. 32, no. 5, 1 May 1997 (1997-05-01), pages 662-668, XP000698786 ISSN: 0018-9200 *

Cited By (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003003202A1 (en) * 2001-06-27 2003-01-09 Intel Corporation System boot time reduction method
US6920533B2 (en) 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US7103724B2 (en) 2002-04-01 2006-09-05 Intel Corporation Method and apparatus to generate cache data
US7454653B2 (en) 2002-11-26 2008-11-18 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
EP2254022A1 (en) * 2004-02-04 2010-11-24 SanDisk Corporation Dual media storage device
US10216637B2 (en) 2004-05-03 2019-02-26 Microsoft Technology Licensing, Llc Non-volatile memory cache performance improvement
US9690496B2 (en) 2004-10-21 2017-06-27 Microsoft Technology Licensing, Llc Using external memory devices to improve system performance
US9317209B2 (en) 2004-10-21 2016-04-19 Microsoft Technology Licensing, Llc Using external memory devices to improve system performance
US9317424B2 (en) 2004-10-27 2016-04-19 Sony Corporation Storage device and information processing system
US8904096B2 (en) 2004-10-27 2014-12-02 Sony Corporation Storage device and information processing system
US8554982B2 (en) 2004-10-27 2013-10-08 Sony Corporation Storage device and information processing system
US7634585B2 (en) * 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US9529716B2 (en) 2005-12-16 2016-12-27 Microsoft Technology Licensing, Llc Optimizing write and wear performance for a memory
US11334484B2 (en) 2005-12-16 2022-05-17 Microsoft Technology Licensing, Llc Optimizing write and wear performance for a memory
US7840754B2 (en) 2006-06-20 2010-11-23 Microsoft Corporation Efficiently synchronizing with separated disk caches
US8180959B2 (en) 2006-06-20 2012-05-15 Microsoft Corporation Efficiently synchronizing with separated disk caches
US8065480B2 (en) 2006-06-20 2011-11-22 Microsoft Corporation Efficiently synchronizing with separated disk caches
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US8489810B2 (en) 2006-06-20 2013-07-16 Microsoft Corporation Cache data transfer to a staging area of a storage device and atomic commit operation
EP1923794A1 (en) * 2006-11-16 2008-05-21 Samsung Electronics Co., Ltd. Apparatus and method for managing data
US8019938B2 (en) 2006-12-06 2011-09-13 Fusion-I0, Inc. Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
US11847066B2 (en) 2006-12-06 2023-12-19 Unification Technologies Llc Apparatus, system, and method for managing commands of solid-state storage using bank interleave
US9824027B2 (en) 2006-12-06 2017-11-21 Sandisk Technologies Llc Apparatus, system, and method for a storage area network
US9734086B2 (en) 2006-12-06 2017-08-15 Sandisk Technologies Llc Apparatus, system, and method for a device shared between multiple independent hosts
US11640359B2 (en) 2006-12-06 2023-05-02 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use
WO2008070173A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
US11573909B2 (en) 2006-12-06 2023-02-07 Unification Technologies Llc Apparatus, system, and method for managing commands of solid-state storage using bank interleave
US9170754B2 (en) 2007-12-06 2015-10-27 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8832355B2 (en) 2008-02-28 2014-09-09 Fujitsu Limited Storage device, storage controlling device, and storage controlling method
US8448047B2 (en) 2008-02-28 2013-05-21 Fujitsu Limited Storage device, storage control device, data transfer intergrated circuit, and storage control method
US8479045B2 (en) 2008-08-06 2013-07-02 Fujitsu Limited Controller for disk array device, data transfer device, and method of power recovery process
US10387313B2 (en) 2008-09-15 2019-08-20 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US9448890B2 (en) 2008-09-19 2016-09-20 Microsoft Technology Licensing, Llc Aggregation of write traffic to a data store
US9361183B2 (en) 2008-09-19 2016-06-07 Microsoft Technology Licensing, Llc Aggregation of write traffic to a data store
US10509730B2 (en) 2008-09-19 2019-12-17 Microsoft Technology Licensing, Llc Aggregation of write traffic to a data store
KR101023883B1 (en) 2009-02-13 2011-03-22 (주)인디링스 Storage system using high speed storage divece as cache
WO2010093108A1 (en) * 2009-02-13 2010-08-19 (주)인디링스 Storage system using a rapid storage device as a cache
US8195878B2 (en) 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
US8719501B2 (en) 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US10013354B2 (en) 2010-07-28 2018-07-03 Sandisk Technologies Llc Apparatus, system, and method for atomic storage operations
US9910777B2 (en) 2010-07-28 2018-03-06 Sandisk Technologies Llc Enhanced integrity through atomic writes in cache
US9767017B2 (en) 2010-12-13 2017-09-19 Sandisk Technologies Llc Memory device with volatile and non-volatile media
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9772938B2 (en) 2010-12-13 2017-09-26 Sandisk Technologies Llc Auto-commit memory metadata and resetting the metadata by writing to special address in free space of page storing the metadata
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10133663B2 (en) 2010-12-17 2018-11-20 Longitude Enterprise Flash S.A.R.L. Systems and methods for persistent address space management
US8775905B2 (en) 2011-01-25 2014-07-08 Sony Corporation Memory system and operation method thereof
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US8782344B2 (en) 2012-01-12 2014-07-15 Fusion-Io, Inc. Systems and methods for managing cache admission
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9058123B2 (en) 2012-08-31 2015-06-16 Intelligent Intellectual Property Holdings 2 Llc Systems, methods, and interfaces for adaptive persistence
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
WO2023102784A1 (en) * 2021-12-08 2023-06-15 华为技术有限公司 Data access method and apparatus, disk controller, disk and data storage system
US11960412B2 (en) 2022-10-19 2024-04-16 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use

Also Published As

Publication number Publication date
JP3951918B2 (en) 2007-08-01
GB2379538A (en) 2003-03-12
JP2004506256A (en) 2004-02-26
DE10196380T1 (en) 2003-10-16
GB2379538B (en) 2005-01-12
CN1295623C (en) 2007-01-17
GB0228871D0 (en) 2003-01-15
AU2001275147A1 (en) 2002-01-08
CN1527973A (en) 2004-09-08
WO2002001365A3 (en) 2002-04-11

Similar Documents

Publication Publication Date Title
JP3951918B2 (en) Non-volatile cache
US6725342B1 (en) Non-volatile mass storage cache coherency apparatus
US11055230B2 (en) Logical to physical mapping
US7308531B2 (en) Hybrid mass storage system and method
KR102506392B1 (en) Systems and methods for write and flush support in hybrid memory
US6327639B1 (en) Method and apparatus for storing location identification information within non-volatile memory devices
US5530673A (en) Flash memory control method and information processing system therewith
CN109643275B (en) Wear leveling apparatus and method for storage class memory
US6078520A (en) Flash memory control method and information processing system therewith
US8122193B2 (en) Storage device and user device including the same
US7958331B2 (en) Storage device with opportunistic address space
US7966450B2 (en) Non-volatile hard disk drive cache system and method
WO2002001364A2 (en) Non-volatile cache integrated with mass storage device
US20030005219A1 (en) Partitioning cache metadata state
JP3421581B2 (en) Storage device using nonvolatile semiconductor memory
US10162760B2 (en) Hibernation based on page source
US20090327582A1 (en) Banded Indirection for Nonvolatile Memory Devices
US20140258591A1 (en) Data storage and retrieval in a hybrid drive
US11061598B2 (en) Optimized handling of multiple copies in storage management
JP2006099802A (en) Storage controller, and control method for cache memory
GB2403834A (en) Non-volatile ferro-electric RAM cache
JP3609739B2 (en) Semiconductor memory device
JPH0519981A (en) Data write normal end judging method for optical disk device
CN115809018A (en) Apparatus and method for improving read performance of system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWE Wipo information: entry into national phase

Ref document number: GB0228871.0

Country of ref document: GB

ENP Entry into the national phase

Ref document number: 2002 506434

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 018143652

Country of ref document: CN

122 Ep: pct application non-entry in european phase
RET De translation (de og part 6b)

Ref document number: 10196380

Country of ref document: DE

Date of ref document: 20031016

Kind code of ref document: P

WWE Wipo information: entry into national phase

Ref document number: 10196380

Country of ref document: DE

REG Reference to national code

Ref country code: DE

Ref legal event code: 8607