WO2002001365A2 - Non-volatile cache - Google Patents
Non-volatile cache Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In 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.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10196380T DE10196380T1 (en) | 2000-06-23 | 2001-06-01 | Non-volatile cache |
GB0228871A GB2379538B (en) | 2000-06-23 | 2001-06-01 | Non-volatile cache |
AU2001275147A AU2001275147A1 (en) | 2000-06-23 | 2001-06-01 | Non-volatile cache |
JP2002506434A JP3951918B2 (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 (49)
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 |
US9767017B2 (en) | 2010-12-13 | 2017-09-19 | Sandisk Technologies Llc | Memory device with volatile and non-volatile media |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
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 |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
US10073656B2 (en) | 2012-01-27 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for storage virtualization |
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 |
Families Citing this family (33)
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 |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
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 |
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 |
CN102136274B (en) * | 2009-12-30 | 2013-03-27 | 爱国者电子科技有限公司 | Mobile hard disk with two storage media |
WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
EP2652623B1 (en) | 2010-12-13 | 2018-08-01 | SanDisk Technologies LLC | Apparatus, system, and method for auto-commit memory |
US9213594B2 (en) | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
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 |
Family Cites Families (15)
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 |
US5594885A (en) * | 1991-03-05 | 1997-01-14 | Zitel Corporation | Method for operating a cache memory system using a recycled register for identifying a reuse status of a corresponding cache entry |
JPH06505584A (en) * | 1991-03-05 | 1994-06-23 | ザイテル コーポレーション | cache memory |
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 |
US5584007A (en) * | 1994-02-09 | 1996-12-10 | Ballard Synergy Corporation | Apparatus and method for discriminating among data to be stored in cache |
EP0667579A1 (en) * | 1994-02-09 | 1995-08-16 | Ballard Synergy Corporation | Cache for optical storage device |
JP3576561B2 (en) * | 1994-11-22 | 2004-10-13 | モノリシック・システム・テクノロジー・インコーポレイテッド | Method and configuration using a DRAM array as a second level cache memory |
US5963721A (en) * | 1995-12-29 | 1999-10-05 | Texas Instruments Incorporated | Microprocessor system with capability for asynchronous bus transactions |
JPH1040170A (en) * | 1996-07-26 | 1998-02-13 | Toshiba Corp | Disk cache system |
JPH10154101A (en) * | 1996-11-26 | 1998-06-09 | Toshiba Corp | Data storage system and cache controlling method applying to the 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 |
-
2001
- 2001-06-01 WO PCT/US2001/017851 patent/WO2002001365A2/en active Application Filing
- 2001-06-01 GB GB0228871A patent/GB2379538B/en not_active Expired - Fee Related
- 2001-06-01 AU AU2001275147A patent/AU2001275147A1/en not_active Abandoned
- 2001-06-01 CN CNB018143652A patent/CN1295623C/en not_active Expired - Fee Related
- 2001-06-01 JP JP2002506434A patent/JP3951918B2/en not_active Expired - Fee Related
- 2001-06-01 DE DE10196380T patent/DE10196380T1/en not_active Ceased
Cited By (73)
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 |
US9734086B2 (en) | 2006-12-06 | 2017-08-15 | Sandisk Technologies Llc | Apparatus, system, and method for a device shared between multiple independent hosts |
US9824027B2 (en) | 2006-12-06 | 2017-11-21 | Sandisk Technologies Llc | Apparatus, system, and method for a storage area network |
US11960412B2 (en) | 2006-12-06 | 2024-04-16 | 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 |
US11640359B2 (en) | 2006-12-06 | 2023-05-02 | Unification Technologies Llc | Systems and methods for identifying storage resources that are not in use |
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 |
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 |
US8448047B2 (en) | 2008-02-28 | 2013-05-21 | Fujitsu Limited | Storage device, storage control device, data transfer intergrated circuit, and storage control method |
US8832355B2 (en) | 2008-02-28 | 2014-09-09 | Fujitsu Limited | Storage device, storage controlling device, and storage controlling 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 |
US10509730B2 (en) | 2008-09-19 | 2019-12-17 | 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 |
US9448890B2 (en) | 2008-09-19 | 2016-09-20 | Microsoft Technology Licensing, Llc | Aggregation of write traffic to a data store |
WO2010093108A1 (en) * | 2009-02-13 | 2010-08-19 | (주)인디링스 | Storage system using a rapid storage device as a cache |
KR101023883B1 (en) | 2009-02-13 | 2011-03-22 | (주)인디링스 | Storage systems that use high-speed storage 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 |
US9910777B2 (en) | 2010-07-28 | 2018-03-06 | Sandisk Technologies Llc | Enhanced integrity through atomic writes in cache |
US10013354B2 (en) | 2010-07-28 | 2018-07-03 | Sandisk Technologies Llc | Apparatus, system, and method for atomic storage operations |
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 |
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 |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US9767017B2 (en) | 2010-12-13 | 2017-09-19 | Sandisk Technologies Llc | Memory device with volatile and non-volatile media |
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 |
US10102117B2 (en) | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
US8782344B2 (en) | 2012-01-12 | 2014-07-15 | Fusion-Io, Inc. | Systems and methods for managing cache admission |
US10073656B2 (en) | 2012-01-27 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for storage virtualization |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
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 |
US9058123B2 (en) | 2012-08-31 | 2015-06-16 | Intelligent Intellectual Property Holdings 2 Llc | Systems, methods, and interfaces for adaptive persistence |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
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 |
Also Published As
Publication number | Publication date |
---|---|
WO2002001365A3 (en) | 2002-04-11 |
GB0228871D0 (en) | 2003-01-15 |
AU2001275147A1 (en) | 2002-01-08 |
CN1295623C (en) | 2007-01-17 |
GB2379538B (en) | 2005-01-12 |
JP3951918B2 (en) | 2007-08-01 |
GB2379538A (en) | 2003-03-12 |
DE10196380T1 (en) | 2003-10-16 |
CN1527973A (en) | 2004-09-08 |
JP2004506256A (en) | 2004-02-26 |
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 | |
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 | |
CN109643275B (en) | Wear leveling apparatus and method for storage class memory | |
US7966450B2 (en) | Non-volatile hard disk drive cache system and method | |
WO2002001364A2 (en) | Non-volatile cache integrated with mass storage device | |
US20070130442A1 (en) | Apparatus and Methods Using Invalidity Indicators for Buffered Memory | |
CN107632939A (en) | Mapping table for storage device | |
US20030005219A1 (en) | Partitioning cache metadata state | |
US20090327582A1 (en) | Banded Indirection for Nonvolatile Memory Devices | |
US10162760B2 (en) | Hibernation based on page source | |
US20140258591A1 (en) | Data storage and retrieval in a hybrid drive | |
CN111737160B (en) | Optimized handling of multiple copies in storage management | |
GB2403834A (en) | Non-volatile ferro-electric RAM cache | |
CN118349186B (en) | Mapping table updating method and storage device | |
CN119759283A (en) | Control method of storage device, chip, storage medium and solid state disk |
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 |