US20090193182A1 - Information storage device and control method thereof - Google Patents
Information storage device and control method thereof Download PDFInfo
- Publication number
- US20090193182A1 US20090193182A1 US12/361,237 US36123709A US2009193182A1 US 20090193182 A1 US20090193182 A1 US 20090193182A1 US 36123709 A US36123709 A US 36123709A US 2009193182 A1 US2009193182 A1 US 2009193182A1
- Authority
- US
- United States
- Prior art keywords
- data
- volatile memory
- volatile
- write
- storage medium
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- 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/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10527—Audio or video recording; Data buffering arrangements
- G11B2020/1062—Data buffering arrangements, e.g. recording or playback buffers
- G11B2020/1075—Data buffering arrangements, e.g. recording or playback buffers the usage of the buffer being restricted to a specific kind of data
- G11B2020/10759—Data buffering arrangements, e.g. recording or playback buffers the usage of the buffer being restricted to a specific kind of data content data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B2220/00—Record carriers by type
- G11B2220/20—Disc-shaped record carriers
- G11B2220/25—Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
- G11B2220/2508—Magnetic discs
- G11B2220/2516—Hard disks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B2220/00—Record carriers by type
- G11B2220/60—Solid state media
- G11B2220/61—Solid state media wherein solid state memory is used for storing A/V content
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- One embodiment of the invention relates to an information storage device having a non-volatile memory which functions as a cache and a control method thereof.
- an information storage device such as a hard disk drive is utilized.
- the information storage device stores information in a non-volatile storage medium such as a hard disk.
- the non-volatile memory is called a non-volatile cache.
- the information storage device having the non-volatile cache can perform read/write access of data which is specified by a host at high speed. Further, the information storage device which has the non-volatile cache has an advantage that electric power consumption can be reduced because data can be accessed without rotating a hard disk.
- a storage device which has a hard disk and a non-volatile memory is disclosed.
- the storage device has a function to perform access to either or both of the hard disk and the non-volatile memory in accordance with an external access request.
- FIG. 1 is an exemplary block diagram showing a structure of an information storage device according to an embodiment of the invention
- FIG. 2 is an exemplary block diagram showing a structural example of a controller which is disposed in the information storage device of the embodiment
- FIG. 3 is an exemplary diagram for explaining an operational example of writing write data to a non-volatile memory which is performed by the information storage device of the embodiment;
- FIG. 4 is an exemplary diagram for explaining another operational example of writing write data to a non-volatile memory which is performed by the information storage device of the embodiment;
- FIG. 5 is an exemplary flowchart for explaining procedure of a data move process which is performed by the information storage device of the embodiment
- FIG. 6 is an exemplary diagram for explaining an example of the data move process which is performed by the information storage device of the embodiment
- FIG. 7 is an exemplary diagram for explaining another example of the data move process which is performed by the information storage device of the embodiment.
- FIG. 8 is an exemplary flowchart for explaining procedure of write operation which is performed by the information storage device of the embodiment.
- FIG. 9 is an exemplary block diagram showing another structural example of the information storage device of the embodiment.
- an information storage device includes a non-volatile storage medium, a non-volatile memory, a buffer, and a controller.
- the non-volatile storage medium is configured to store specific data blocks to be read for a host device and write data to be written to the non-volatile storage medium.
- the buffer configured to temporarily store write data transmitted from the host device.
- the controller is configured to delete synchronized data the same data block as which exists on the non-volatile storage medium among the specific data blocks stored in the non-volatile memory if the free space of the non-volatile memory is smaller than a given data size, and to write the write data stored in the buffer to the non-volatile memory.
- FIG. 1 shows a structure of an information storage device 11 according to an embodiment of the present invention.
- the information storage device 11 is a device which performs writing of data to a non-volatile storage medium and reading of data from the non-volatile storage medium in accordance with an access request from a host device 20 .
- the information storage device 11 has the non-volatile storage medium and a non-volatile memory which functions as a cache for the non-volatile storage medium.
- the capacity of the non-volatile memory is smaller than that of the non-volatile storage medium.
- the non-volatile memory can perform data transfer for reading/writing of data at higher speed than the non-volatile storage medium.
- the information storage device 11 is realized as a hybrid hard disk drive (HHD).
- the hybrid HDD is a hard disk drive which has a non-volatile storage medium and a non-volatile memory.
- the non-volatile storage medium can be realized by a hard disk which is a rotating medium.
- the information storage device 11 has an LSI 12 in which various circuit blocks are integrated, a hard disk 13 , a buffer 14 , a non-volatile memory 15 and the like.
- the non-volatile memory 15 is a semiconductor memory which functions as a cache (non-volatile cache) for the hard disk 13 which is a non-volatile storage medium (also called a permanent storage medium).
- the non-volatile memory 15 can be realized by a flash memory (flash EEPROM) and the like.
- flash EEPROM flash EEPROM
- the non-volatile memory 15 is used for storing specific data (specific data blocks) which is to be read at high speed from the information storage device 11 to the host device 20 and storing write data (write data blocks) which is to be written to the hard disk 13 .
- a copy of a part of the software or a copy of a part of user data which is stored on the hard disk 13 can be stored in the non-volatile memory 15 as the data to be read at high speed to the host device 20 . Accordingly, various data (the software and the user data) can be transferred from the information storage device 11 to the host device 20 at high speed.
- the host device 20 can specify which data should be stored in the non-volatile memory 15 among the data stored on the hard disk 13 .
- the information storage device 11 loads the data (also called a data block) corresponding to each of some logical block addresses (LBA) which are specified by the host device 20 from the hard disk 13 to the non-volatile memory 15 .
- the loaded data can be constantly stored in the non-volatile memory 15 .
- the data to be stored at the non-volatile memory 15 is not limited to the data corresponding to each of the logical block addresses (LBA) which are specified by the host device 20 .
- the information storage device 11 can estimate each logical block address (LBA) which has a high possibility to be requested for reading by the host device 20 . Then, the information storage device 11 can load the data corresponding to each of the estimated logical block addresses (LBA) from the hard disk 13 to the non-volatile memory 15 and store the data in the non-volatile memory 15 .
- the information storage device 11 it is also possible to store data such as a hibernation file, which is requested for writing by the host device 20 , into the non-volatile memory 15 .
- the non-volatile memory 15 is also utilized as a write cache for temporarily storing write data which is to be written to the hard disk 13 .
- the write data which is transferred from the host device 20 is temporarily stored in the non-volatile memory 15 .
- the write data (write data blocks) stored in the non-volatile memory 15 is written to the hard disk 13 .
- the buffer 14 corresponds to a DRAM cache which is disposed in an ordinary HDD.
- the buffer 14 can function as a write buffer for temporarily storing write data which is transferred from the host device 20 .
- the buffer 14 is configured of a volatile memory such as a DRAM and an SDRAM. Although the access speed of reading/writing of the buffer 14 is faster than that of the non-volatile memory 15 , the capacity of the buffer 14 is smaller than that of the non-volatile memory 15 .
- the write cycle which is performed by the host device 20 is completed when the write data transferred from the host device 20 is stored in the buffer 14 .
- the information storage device 11 When a Flush Cache command is received from the host device 20 , the information storage device 11 writes the write data (the write data blocks) accumulated in the buffer 14 into the non-volatile memory 15 .
- the Flush Cache command is a Flush command to instruct to write all of the write data stored in the buffer 14 on the hard disk 13 .
- the write data in the buffer 14 can be stored in a safe storage place which is non-volatile at high speed.
- the LSI 12 is an electronic circuit for controlling the operation of the information storage device 11 .
- the LSI 12 includes a controller 16 , a disk interface 17 , a buffer interface 18 , a memory interface 19 , a host interface 21 and the like.
- the controller 16 controls the operation of the information storage device 11 in accordance with various commands from the host device 20 .
- the controller 16 performs communication with the host device 20 via the host interface 21 .
- the communication between the host device 20 and the controller 16 is performed by utilizing various commands which are defined in the ATA8-ACS standard, for example.
- the disk interface 17 performs the data transfer between the controller 16 and the hard disk 13 .
- the data writing to the hard disk 13 and the data reading from the hard disk 13 are performed by utilizing a mechanical drive mechanism disposed in the information storage device 11 .
- the drive mechanism has a spindle motor for rotating the hard disk 13 , a head, an actuator for moving the head in the radius direction of the hard disk 13 and the like.
- the memory interface 19 performs the data transfer between the controller 16 and the non-volatile memory 15 .
- the memory interface 19 is configured of a memory controller for controlling access of the non-volatile memory 15 .
- the buffer interface 18 performs the data transfer between the controller 16 and the buffer 14 .
- the buffer interface 18 is configured of a DRAM controller, for example.
- the controller 16 includes a management table 161 .
- the controller 16 manages the contents of each data block stored in the non-volatile memory 15 by utilizing the management table 161 .
- management information is stored for each data block which is stored in the non-volatile memory 15 .
- the managing information corresponding to each of the data blocks indicates physical address which shows a storage position where the data block is stored in the non-volatile memory 15 , the logical block address (LBA) of the data block, the data size of the data block, attribute of the data block and the like.
- the attribute shows whether or not the data block is a specified data block (the pinned data) corresponding to the LBA which is previously specified by the host device to be maintained in the non-volatile memory 15 .
- the controller 16 When a read request (read command) is received from the host device 20 , the controller 16 reads the data block from either the non-volatile memory 15 or the hard disk 13 in accordance with the address (LBA) contained in the read command.
- LBA address
- the controller 16 determines whether or not the data block corresponding to the LBA which is specified by the read command exists in the non-volatile memory 15 by referring to the management table 161 .
- the controller 16 reads the data block from the non-volatile memory 15 .
- the controller 16 reads the data block from the hard disk 13 .
- the controller 16 has a function to increase the free area of the non-volatile memory 15 by temporarily deleting a part of the specified data blocks which are stored in the non-volatile memory 15 .
- the write data accumulated in the buffer 14 (one data block or more which is accumulated in the buffer 14 as the write data) cannot be written into the non-volatile memory 15 .
- the write data needs to be written to the hard disk 13 .
- the delay of write operation occurs. If power abnormality such as power failure occurs before completing the write operation on the hard disk 13 , the write data is lost.
- the controller 16 performs the following processes when the abovementioned flush cache command is received, for example.
- the controller 16 determines whether or not the free space of the non-volatile memory 15 is smaller than a predetermined data size. In the case where the free space is smaller than the predetermined data size, the controller 16 increases the free space of the non-volatile memory 15 by temporarily deleting the data block (synchronized data) the same data block as which exists on the hard disk 13 among the specified data blocks (pinned data, etc.) which are stored in the non-volatile memory 15 . Then, the controller 16 writes the write data which is stored in the buffer 14 to the non-volatile memory 15 . In this manner, even in the case where the free space of the non-volatile memory 15 is insufficient, the write data accumulated in the buffer 14 can be stored in the non-volatile memory 15 at high speed and the security of the write data can be improved.
- the synchronized data (also called media synchronized data) is data block the same data block as which also exists on the hard disk 13 . If a certain data block A exists on each of the non-volatile memory 15 and the hard disk 13 , the data block A is the synchronized data. Therefore, even if the synchronized data is deleted from the non-volatile memory 15 , the synchronized data can be restored in the non-volatile memory 15 by reading it from the hard disk 13 .
- the abovementioned delete process of synchronized data is executed in accordance with occurrence of an event which needs storing of write data stored in the buffer 14 into the non-volatile memory 15 at high speed.
- factors which cause the events there exist other factors than the reception of the abovementioned flush cache command.
- the abovementioned delete process of synchronized data is executed.
- a command instructing execution of a high speed flush process which is described later in FIG. 4
- the abovementioned delete process of synchronized data is performed.
- FIG. 2 A structural example of the controller 16 is shown in FIG. 2 .
- the controller 16 includes a synchronized data delete module 201 , a rewrite process module 202 , an access frequency detection process module 203 , and a data move process module 204 .
- the synchronized data delete module 201 selects synchronized data from among the data blocks which are stored in the non-volatile memory 15 and executes the process to delete the synchronized data. For example, the synchronized date delete module 201 selects, as the synchronized data, each of the data blocks which are loaded from the hard disk 13 , from among the specified data blocks corresponding respectively to the LBA specified by the host device 20 .
- the synchronized data delete module 201 preferentially deletes the data block which is synchronized data and has low access frequency among the data blocks stored in the non-volatile memory 15 based on the access frequency by the host device 20 to each of the data blocks of synchronized data. Namely, the data block having a low access frequency is preferentially deleted among the data blocks of the synchronized data. In this manner, reduction of the read access performance caused by the erase of the data blocks can be suppressed to the minimum.
- the controller 16 itself estimates each logical block address (LBA) which has a high possibility to be requested by the host device 20 and loads the data block corresponding to each of the estimated logical block addresses from the hard disk 13 to the non-volatile memory 15 . Therefore, such data block can be selected as the synchronized data (the synchronized data block).
- LBA logical block address
- the data block which is the same as the data block deleted from the non-volatile memory 15 by the synchronized data delete module 201 is respectively read from the hard disk 13 and written to the non-volatile memory 15 by the rewrite process module 202 .
- the rewrite process is executed after the write data accumulated in the non-volatile memory 15 is written to the hard disk 13 .
- the access frequency detection process module 203 executes the process to manage access frequency of each data block which is stored in the non-volatile memory 15 . Specifically, the access frequency detection process module 203 counts the number of the read access or write access by the host device 20 for each data block stored in the non-volatile memory 15 . Here, it is not always necessary to count the actual access number itself accurately. For example, it is also possible to manage the presence or absence of the access during a power cycle of the information storage device 11 (the term from the power ON through the power OFF of the information storage device 11 ) for each data block. In this case, the value of the access number corresponding to the data block which is accessed one time or more during one power cycle becomes one. The access number corresponding to the data block becomes zero when there is no access at all during one power cycle. Further, it is also possible to manage the access number by taking only the synchronized data stored at the non-volatile memory 15 as the target.
- the data move process module 204 executes the data move process for gathering each of the data blocks which have low access frequency among the data blocks into a specific storage area in the non-volatile memory 15 during the normal operation of the information storage device 11 based on the access frequency of each synchronized data (access frequencies of the data blocks which are synchronized data) in the non-volatile memory 15 .
- the data block which is the synchronized data and has low access frequency among the data blocks stored in the non-volatile memory 15 is gathered into a specific area of the non-volatile memory 15 in advance. In this manner, by gathering each of the data blocks which are to be the erase target, the write data can be effectively written to the free space of the non-volatile memory 15 because continuous storage areas can be assigned as the free space.
- the non-volatile memory 15 is configured of a flash memory which includes a plurality of erase blocks
- the synchronized data which have low access frequency among the synchronized data namely, the data blocks which are the synchronized data and have low access frequency
- the process to delete data from the flash memory is executed on the basis of each erase block. Therefore, by gathering the data blocks which are the synchronized data and have low access frequency into one or more specific erase areas in advance, the synchronized data delete module 201 can delete each of the data blocks which are the synchronized data and have low access frequency all together only by executing the block erase process against the specific erase block. Accordingly, the synchronized data delete process (erase process) can be executed at high speed and the necessary free space can be quickly secured.
- the process of gathering the data blocks whose LBAs are close to one another to the same erase block is executed. Accordingly, the speed of the rewrite process for restoring the data blocks which are the same as the deleted data blocks respectively from the hard disk 13 in the non-volatile memory 15 can be enhanced.
- FIG. 3 shows the write operation for writing the write data to the non-volatile memory 15 which is performed at the time of receiving the flush cache command.
- the controller 16 executes the process (the flush process) of writing each data block accumulated as the write data in the buffer 14 to the non-volatile memory 15 .
- the flush process can be executed in a state that the rotation of the hard disk 13 is stopped.
- the flush process is executed based on the premise that the free space, namely, the space to which data can be written freely, is sufficiently assigned in the non-volatile memory 15 .
- the specified data blocks (pinned data, etc.) corresponding to LBAs specified by the host device 20 and the write data blocks which are to be written to the hard disk 13 are mixed.
- Each write data block which is stored in the non-volatile memory 15 is new data block which has not been written to the hard disk 13 . Therefore, the write data block which is stored in the non-volatile memory 15 is non-synchronized data (media non-synchronized data) for which the same data block does not exist on the hard disk 13 .
- the synchronized data (the media synchronized data) the same data block as which exists on the hard disk 13 is included in the data blocks (pinned data) corresponding to LBAs which are specified by the host device 20 .
- the data block which is loaded from the hard disk 13 to the non-volatile memory 15 is the synchronized data. Further, there is a case where the same data block exists on the hard disk 13 as the data block even though it is transferred from the host device 20 .
- the controller 16 selects the synchronized data from among the data blocks (for example, pinned data, etc.) which are stored in the non-volatile memory 15 , and temporarily deletes the selected synchronized data so that the free space of the non-volatile memory 15 is increased.
- the controller 16 also executes the process to update the management table 161 in order to erase the management information corresponding to the deleted synchronized data from the management table 161 .
- the controller 16 writes each of the write data accumulated in the buffer (the write buffer) 14 to the free space of the non-volatile memory 15 which is secured by the delete of the synchronized data. Accordingly, since only the synchronized data is to be the erase target, there arises no problem due to the data erase.
- the area to which the write data is written can be secured in the non-volatile memory 15 and the write data can be stored in the non-volatile memory 15 . Therefore, the response performance against the flush cache command can be improved and the possibility that the write data is lost due to electric power abnormality, etc., can be reduced.
- the process to write the write data stored in the buffer 14 to the non-volatile memory 15 can be executed in a state that the rotation of the hard disk 13 is stopped, the increase of electric power consumption due to the rotation of the hard disk 13 can be prevented.
- the high speed data flush process is the process, not to write the entire write data accumulated in the buffer 14 to the non-volatile memory 15 , but to write a part of the write data accumulated in the buffer 14 to the hard disk 13 and to write the rest of the write data accumulated in the buffer 14 to the non-volatile memory 15 .
- the write operation to the hard disk 13 and the write operation to the non-volatile memory 15 are performed simultaneously.
- the controller 16 selects the write data blocks (for example, the data blocks in which LBAs are continuous, etc.) which can be written to the hard disk 13 at high speed from among the write data blocks accumulated in the buffer 14 , and writes the selected write data blocks to the hard disk 13 .
- the controller 16 selects the write data blocks (for example, the data blocks in which LBAs are continuous, etc.) which can be written to the hard disk 13 at high speed from among the write data blocks accumulated in the buffer 14 , and writes the selected write data blocks to the hard disk 13 .
- a reordering process to reorder the selected data blocks in the order of LBA is executed as well.
- the controller 16 selects the rest of the write data blocks (i.e., the write data blocks other than the selected write data blocks) from among the write data blocks accumulated in the buffer 14 , and writes the rest of the write data blocks to the non-volatile memory 15 .
- the controller 16 selects the synchronized data (media synchronized data) from among the data blocks (for example, pinned data, etc.) which are stored in the non-volatile memory 15 , and deletes the selected synchronized data (media synchronized data) temporarily so as to secure the free space. In this manner, even in the state that the free space of the non-volatile memory 15 is insufficient, the high speed data flush process can be executed.
- the following movement process is executed in order to execute the synchronized data erase process efficiently.
- the controller 16 counts the number of the read access of the host device 20 for each data block which is stored in the non-volatile memory 15 (Step S 101 ). Then, when a garbage collection process or a wear leveling process is executed in the information storage device 11 or when the information storage device 11 is idle, the controller 16 executes the data move process for relocating each of the data blocks which are stored in the non-volatile memory 15 based on the access number corresponding to each of the data blocks stored in the non-volatile memory 15 (Steps S 102 , S 103 ).
- Step S 102 the controller 16 selects the data blocks which are the synchronized data and have low access frequency from among the data blocks which are stored in the non-volatile memory 15 . Then, in Step S 103 , the controller 16 relocates data blocks stored in the non-volatile memory 15 so that the data blocks which are the media synchronized data and has low access frequency are respectively gathered to the specific erase block, as shown in FIG. 6 .
- the controller 16 performs the relocating so that data blocks in which LBAs are close to one another are gathered to the same erase block also in consideration of the LBA for each data block which is the media synchronized data and has low access frequency.
- the state of relocating is shown in FIG. 7 .
- the data block in which LBA is 100, the data block in which LBA is 20000, the data block in which LBA is 180, the data block in which LBA is 21000, the data block in which LBA is 20 and the data block in which LBA is 16000 are the data blocks which are the media synchronized data and have low access frequency.
- the data blocks in which LBAs are close to one another namely, the data blocks in which LBAs belong within the predetermined LBA range are moved to the same erase block.
- the data block in which LBA is 100, the data block in which LBA is 180 and the data block in which LBA is 20 are gathered into the erase block 1 .
- the data block in which LBA is 20000, the data block in which LBA is 21000 and the data block in which LBA is 16000 are gathered into the erase block 2 .
- the number of the erase blocks which are to be the erase target varies in accordance with the data size of the write data. For example, if only the erase block 1 is erased in the synchronized data delete process, it is necessary in the rewrite process to execute the process to restore the data block in which LBA is 100, the data block in which LBA is 180 and the data block in which LBA is 20 from the hard disk 13 in the non-volatile memory 15 . In this case, the data block in which LBA is 100, the data block in which LBA is 180 and the data block in which LBA is 20 exist at the storage positions on the hard disk 13 being close to one another (for example, on the same track or on two adjacent tracks). Therefore, these data blocks can be efficiently read from the hard disk 13 and the enhancement of the rewrite process speed can be achieved.
- Step S 201 When a factor which needs high speed storing of the write data of the buffer 14 to the non-volatile memory 15 is generated, for example, when the flush cache command is received from the host device 20 (Step S 201 ), the controller 16 checks the free space of the non-volatile memory 15 (Step S 202 ). Then, the controller 16 compares the free space of the non-volatile memory 15 with the data size of the write data accumulated in the buffer 14 and determines whether or not the free space of the non-volatile memory 15 is smaller than the data size of the write data (Step S 203 ).
- Step S 204 When the free space of the non-volatile memory 15 is equal to or larger than the data size of the write data (NO in Step S 203 ), the controller 16 writes the write data accumulated in the buffer 14 to the non-volatile memory 15 (Step S 204 ).
- the controller 16 When the data move process is performed such that the data blocks which are synchronized data and have low access frequency are previously gathered into some specific erase blocks, the controller 16 only needs to select the erase blocks which are to be the erase target from among the specific erase blocks based on the shortfall size. Then, the controller 16 erases, from the management table 161 , the management information corresponding to each of the data blocks which exist in the selected erase block (Step S 207 ).
- the controller 16 deletes the whole data in the selected erase block by executing the block erase process against the selected erase block (Step S 208 ). With this erase process, since the free space of the non-volatile memory 15 is increased, the free space corresponding to the data size of the write data is secured at the non-volatile memory 15 . Then, the controller 16 writes each of the write data stored in the buffer 14 to the free space in the non-volatile memory 15 (Step S 209 ). In Step S 209 , the controller 16 can write the write data to the non-volatile memory 15 in the state that the rotation of the hard disk 13 is stopped.
- the write data accumulated in the buffer 14 can be stored in the non-volatile memory 15 at high speed.
- Step S 203 the free space of the non-volatile memory 15 is determined whether or not it is smaller than the data size of the write data. However, it is also possible to determine whether or not the free space of the non-volatile memory 15 is smaller than a specific data size which is previously determined.
- FIG. 9 Another structural example of the information storage device 11 of the present invention is shown in FIG. 9 .
- the information storage device 11 shown in FIG. 9 is realized by an SSD (Solid State Drive) which includes a non-volatile cache.
- a non-volatile storage medium 300 which is configured of a non-volatile memory 301 is disposed instead of the hard disk 13 .
- a non-volatile memory 302 is disposed as a cache with respect to the non-volatile storage medium 300 .
- the non-volatile memory 302 is a memory device accessible at higher speed than the non-volatile memory 301 in the non-volatile storage medium 300 .
- the read/write access to the non-volatile memory 302 is performed at higher speed than the read/write access to the non-volatile memory 301 in the non-volatile storage medium 300 as well. Therefore, the synchronized data erase process which is described above is also useful for the information storage device 11 of FIG. 9 .
- the area to which the write data is written can be secured in the non-volatile memory 15 and the write data can be stored in the non-volatile memory 15 by erasing the synchronized data in the non-volatile memory 15 . Further, since the data move process is executed during the normal operation in advance, the process to erase the synchronized data can be executed at high speed.
- the various modules of the systems described herein can be implemented as software applications, hardware and/or software modules, or components on one or more computers, such as servers. While the various modules are illustrated separately, they may share some or all of the same underlying logic or code.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
According to one embodiment, an information storage device includes a non-volatile storage medium, a non-volatile memory configured to store specific data blocks to be read for a host device and write data to be written to the non-volatile storage medium, a buffer configured to temporarily store write data transmitted from the host device, and a controller. The controller is configured to delete synchronized data the same data block as which exists on the non-volatile storage medium among the specific data blocks stored in the non-volatile memory if the free space of the non-volatile memory is smaller than a given data size, and to write the write data stored in the buffer to the non-volatile memory.
Description
- This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2008-019364, filed Jan. 30, 2008, the entire contents of which are incorporated herein by reference.
- 1. Field
- One embodiment of the invention relates to an information storage device having a non-volatile memory which functions as a cache and a control method thereof.
- 2. Description of the Related Art
- Generally, in an information processing device such as a computer, an information storage device such as a hard disk drive is utilized. The information storage device stores information in a non-volatile storage medium such as a hard disk.
- Recently, an information storage device having a non-volatile storage medium and a non-volatile memory which functions as a cache has been developed. Normally, the non-volatile memory is called a non-volatile cache. The information storage device having the non-volatile cache can perform read/write access of data which is specified by a host at high speed. Further, the information storage device which has the non-volatile cache has an advantage that electric power consumption can be reduced because data can be accessed without rotating a hard disk.
- In Jpn. Pat. Appln. KOKAI Publication No. 2005-190187, a storage device which has a hard disk and a non-volatile memory is disclosed. The storage device has a function to perform access to either or both of the hard disk and the non-volatile memory in accordance with an external access request.
- However, in the state that most of the storage area of the non-volatile cache is used and free space is insufficient, write data from the host cannot be written to the non-volatile cache. Therefore, the write data needs to be written to the hard disk.
- In this case, when the hard disk is not rotating, spin-up of the hard disk is necessary. Therefore, very long time is needed to complete the writing of the write data to the hard disk. Further, even when the hard disk is rotating, it takes long time to complete the writing of the write data due to seek latency.
- In this manner, when free space shortage occurs at the non-volatile cache, the write operation of the information storage device becomes slow. If power abnormality such as power failure occurs before the writing of the write data is completed, the write data is lost.
- A general architecture that implements the various feature of the invention will now be described with reference to the drawings. The drawings and the associated descriptions are provided to illustrate embodiments of the invention and not to limit the scope of the invention.
-
FIG. 1 is an exemplary block diagram showing a structure of an information storage device according to an embodiment of the invention; -
FIG. 2 is an exemplary block diagram showing a structural example of a controller which is disposed in the information storage device of the embodiment; -
FIG. 3 is an exemplary diagram for explaining an operational example of writing write data to a non-volatile memory which is performed by the information storage device of the embodiment; -
FIG. 4 is an exemplary diagram for explaining another operational example of writing write data to a non-volatile memory which is performed by the information storage device of the embodiment; -
FIG. 5 is an exemplary flowchart for explaining procedure of a data move process which is performed by the information storage device of the embodiment; -
FIG. 6 is an exemplary diagram for explaining an example of the data move process which is performed by the information storage device of the embodiment; -
FIG. 7 is an exemplary diagram for explaining another example of the data move process which is performed by the information storage device of the embodiment; -
FIG. 8 is an exemplary flowchart for explaining procedure of write operation which is performed by the information storage device of the embodiment; and -
FIG. 9 is an exemplary block diagram showing another structural example of the information storage device of the embodiment. - Various embodiments according to the invention will be described hereinafter with reference to the accompanying drawings. In general, according to one embodiment of the invention, an information storage device includes a non-volatile storage medium, a non-volatile memory, a buffer, and a controller. The non-volatile storage medium is configured to store specific data blocks to be read for a host device and write data to be written to the non-volatile storage medium. The buffer configured to temporarily store write data transmitted from the host device. The controller is configured to delete synchronized data the same data block as which exists on the non-volatile storage medium among the specific data blocks stored in the non-volatile memory if the free space of the non-volatile memory is smaller than a given data size, and to write the write data stored in the buffer to the non-volatile memory.
-
FIG. 1 shows a structure of aninformation storage device 11 according to an embodiment of the present invention. Theinformation storage device 11 is a device which performs writing of data to a non-volatile storage medium and reading of data from the non-volatile storage medium in accordance with an access request from ahost device 20. Theinformation storage device 11 has the non-volatile storage medium and a non-volatile memory which functions as a cache for the non-volatile storage medium. The capacity of the non-volatile memory is smaller than that of the non-volatile storage medium. However, the non-volatile memory can perform data transfer for reading/writing of data at higher speed than the non-volatile storage medium. In the following, it is assumed that theinformation storage device 11 is realized as a hybrid hard disk drive (HHD). The hybrid HDD is a hard disk drive which has a non-volatile storage medium and a non-volatile memory. In this case, the non-volatile storage medium can be realized by a hard disk which is a rotating medium. - Specifically, the
information storage device 11 has anLSI 12 in which various circuit blocks are integrated, ahard disk 13, abuffer 14, anon-volatile memory 15 and the like. - The
non-volatile memory 15 is a semiconductor memory which functions as a cache (non-volatile cache) for thehard disk 13 which is a non-volatile storage medium (also called a permanent storage medium). For example, thenon-volatile memory 15 can be realized by a flash memory (flash EEPROM) and the like. Thenon-volatile memory 15 is used for storing specific data (specific data blocks) which is to be read at high speed from theinformation storage device 11 to thehost device 20 and storing write data (write data blocks) which is to be written to thehard disk 13. - With an ordinary HDD, software (kernels in the OS, device drivers in the OS, application programs and the like) and all of user data are stored only on the
hard disk 13. - With the
information storage device 11 of the present embodiment, a copy of a part of the software or a copy of a part of user data which is stored on thehard disk 13 can be stored in thenon-volatile memory 15 as the data to be read at high speed to thehost device 20. Accordingly, various data (the software and the user data) can be transferred from theinformation storage device 11 to thehost device 20 at high speed. - The
host device 20 can specify which data should be stored in thenon-volatile memory 15 among the data stored on thehard disk 13. Theinformation storage device 11 loads the data (also called a data block) corresponding to each of some logical block addresses (LBA) which are specified by thehost device 20 from thehard disk 13 to thenon-volatile memory 15. The loaded data can be constantly stored in thenon-volatile memory 15. - Here, the data to be stored at the
non-volatile memory 15 is not limited to the data corresponding to each of the logical block addresses (LBA) which are specified by thehost device 20. For example, theinformation storage device 11 can estimate each logical block address (LBA) which has a high possibility to be requested for reading by thehost device 20. Then, theinformation storage device 11 can load the data corresponding to each of the estimated logical block addresses (LBA) from thehard disk 13 to thenon-volatile memory 15 and store the data in thenon-volatile memory 15. - Further, in the
information storage device 11, it is also possible to store data such as a hibernation file, which is requested for writing by thehost device 20, into thenon-volatile memory 15. - Furthermore, the
non-volatile memory 15 is also utilized as a write cache for temporarily storing write data which is to be written to thehard disk 13. Namely, the write data which is transferred from thehost device 20 is temporarily stored in thenon-volatile memory 15. Then, for example, when a storage area for the write cache of thenon-volatile memory 15 is filled with the write data (data blocks which should be written) or when theinformation storage device 11 is idle and thehard disk 13 is available for writing, the write data (write data blocks) stored in thenon-volatile memory 15 is written to thehard disk 13. - The
buffer 14 corresponds to a DRAM cache which is disposed in an ordinary HDD. Thebuffer 14 can function as a write buffer for temporarily storing write data which is transferred from thehost device 20. Thebuffer 14 is configured of a volatile memory such as a DRAM and an SDRAM. Although the access speed of reading/writing of thebuffer 14 is faster than that of thenon-volatile memory 15, the capacity of thebuffer 14 is smaller than that of thenon-volatile memory 15. The write cycle which is performed by thehost device 20 is completed when the write data transferred from thehost device 20 is stored in thebuffer 14. - When a Flush Cache command is received from the
host device 20, theinformation storage device 11 writes the write data (the write data blocks) accumulated in thebuffer 14 into thenon-volatile memory 15. The Flush Cache command is a Flush command to instruct to write all of the write data stored in thebuffer 14 on thehard disk 13. - As mentioned above, by writing the write data stored in the
buffer 14 into thenon-volatile memory 15 not on thehard disk 13, the write data in thebuffer 14 can be stored in a safe storage place which is non-volatile at high speed. - The
LSI 12 is an electronic circuit for controlling the operation of theinformation storage device 11. TheLSI 12 includes acontroller 16, adisk interface 17, abuffer interface 18, amemory interface 19, ahost interface 21 and the like. Thecontroller 16 controls the operation of theinformation storage device 11 in accordance with various commands from thehost device 20. Thecontroller 16 performs communication with thehost device 20 via thehost interface 21. The communication between thehost device 20 and thecontroller 16 is performed by utilizing various commands which are defined in the ATA8-ACS standard, for example. - The
disk interface 17 performs the data transfer between thecontroller 16 and thehard disk 13. The data writing to thehard disk 13 and the data reading from thehard disk 13 are performed by utilizing a mechanical drive mechanism disposed in theinformation storage device 11. The drive mechanism has a spindle motor for rotating thehard disk 13, a head, an actuator for moving the head in the radius direction of thehard disk 13 and the like. - The
memory interface 19 performs the data transfer between thecontroller 16 and thenon-volatile memory 15. Thememory interface 19 is configured of a memory controller for controlling access of thenon-volatile memory 15. - The
buffer interface 18 performs the data transfer between thecontroller 16 and thebuffer 14. Thebuffer interface 18 is configured of a DRAM controller, for example. - The
controller 16 includes a management table 161. Thecontroller 16 manages the contents of each data block stored in thenon-volatile memory 15 by utilizing the management table 161. Specifically, in the management table 161, management information is stored for each data block which is stored in thenon-volatile memory 15. The managing information corresponding to each of the data blocks indicates physical address which shows a storage position where the data block is stored in thenon-volatile memory 15, the logical block address (LBA) of the data block, the data size of the data block, attribute of the data block and the like. The attribute shows whether or not the data block is a specified data block (the pinned data) corresponding to the LBA which is previously specified by the host device to be maintained in thenon-volatile memory 15. - When a read request (read command) is received from the
host device 20, thecontroller 16 reads the data block from either thenon-volatile memory 15 or thehard disk 13 in accordance with the address (LBA) contained in the read command. - Specifically, the
controller 16 determines whether or not the data block corresponding to the LBA which is specified by the read command exists in thenon-volatile memory 15 by referring to the management table 161. When the data block corresponding to the LBA which is specified by the read command is detected to exist in thenon-volatile memory 15, thecontroller 16 reads the data block from thenon-volatile memory 15. On the other hand, when the data block corresponding to the LBA which is specified by the read command is detected not to exist in thenon-volatile memory 15, thecontroller 16 reads the data block from thehard disk 13. - In addition, in order to prevent occurrence of delay of write operation caused by free area shortage of the
non-volatile memory 15 which is the non-volatile cache, thecontroller 16 has a function to increase the free area of thenon-volatile memory 15 by temporarily deleting a part of the specified data blocks which are stored in thenon-volatile memory 15. - Specifically, in the state that most of the storage area of the
non-volatile memory 15 is used and free space of thenon-volatile memory 15 is insufficient, the write data accumulated in the buffer 14 (one data block or more which is accumulated in thebuffer 14 as the write data) cannot be written into thenon-volatile memory 15. In this case, normally, the write data needs to be written to thehard disk 13. Then, the delay of write operation occurs. If power abnormality such as power failure occurs before completing the write operation on thehard disk 13, the write data is lost. - Therefore, it is important to enable the write data accumulated in the
buffer 14 to be stored in thenon-volatile memory 15 even when free space of thenon-volatile memory 15 is insufficient. In order to realize the abovementioned, thecontroller 16 performs the following processes when the abovementioned flush cache command is received, for example. - First, the
controller 16 determines whether or not the free space of thenon-volatile memory 15 is smaller than a predetermined data size. In the case where the free space is smaller than the predetermined data size, thecontroller 16 increases the free space of thenon-volatile memory 15 by temporarily deleting the data block (synchronized data) the same data block as which exists on thehard disk 13 among the specified data blocks (pinned data, etc.) which are stored in thenon-volatile memory 15. Then, thecontroller 16 writes the write data which is stored in thebuffer 14 to thenon-volatile memory 15. In this manner, even in the case where the free space of thenon-volatile memory 15 is insufficient, the write data accumulated in thebuffer 14 can be stored in thenon-volatile memory 15 at high speed and the security of the write data can be improved. - The synchronized data (also called media synchronized data) is data block the same data block as which also exists on the
hard disk 13. If a certain data block A exists on each of thenon-volatile memory 15 and thehard disk 13, the data block A is the synchronized data. Therefore, even if the synchronized data is deleted from thenon-volatile memory 15, the synchronized data can be restored in thenon-volatile memory 15 by reading it from thehard disk 13. - In the present embodiment, the abovementioned delete process of synchronized data is executed in accordance with occurrence of an event which needs storing of write data stored in the
buffer 14 into thenon-volatile memory 15 at high speed. As factors which cause the events, there exist other factors than the reception of the abovementioned flush cache command. For example, when the write data is written to thebuffer 14 in a state that the head is immediately unloaded to a ramp, the abovementioned delete process of synchronized data is executed. Further, when a command instructing execution of a high speed flush process, which is described later inFIG. 4 , is received from thehost device 20, the abovementioned delete process of synchronized data is performed. - A structural example of the
controller 16 is shown inFIG. 2 . - In order to execute the abovementioned delete process of synchronized data, the
controller 16 includes a synchronized data deletemodule 201, arewrite process module 202, an access frequencydetection process module 203, and a datamove process module 204. - In the case where the free space of the
non-volatile memory 15 is smaller than the predetermined data size (for example, the data size of the write data to be written to the non-volatile memory 15), the synchronized data deletemodule 201 selects synchronized data from among the data blocks which are stored in thenon-volatile memory 15 and executes the process to delete the synchronized data. For example, the synchronized date deletemodule 201 selects, as the synchronized data, each of the data blocks which are loaded from thehard disk 13, from among the specified data blocks corresponding respectively to the LBA specified by thehost device 20. In this case, the synchronized data deletemodule 201 preferentially deletes the data block which is synchronized data and has low access frequency among the data blocks stored in thenon-volatile memory 15 based on the access frequency by thehost device 20 to each of the data blocks of synchronized data. Namely, the data block having a low access frequency is preferentially deleted among the data blocks of the synchronized data. In this manner, reduction of the read access performance caused by the erase of the data blocks can be suppressed to the minimum. - Here, as mentioned above, it is also possible that the
controller 16 itself estimates each logical block address (LBA) which has a high possibility to be requested by thehost device 20 and loads the data block corresponding to each of the estimated logical block addresses from thehard disk 13 to thenon-volatile memory 15. Therefore, such data block can be selected as the synchronized data (the synchronized data block). - In order to restore the deleted data block in the
non-volatile memory 15, the data block which is the same as the data block deleted from thenon-volatile memory 15 by the synchronized data deletemodule 201 is respectively read from thehard disk 13 and written to thenon-volatile memory 15 by therewrite process module 202. For example, the rewrite process is executed after the write data accumulated in thenon-volatile memory 15 is written to thehard disk 13. - The access frequency
detection process module 203 executes the process to manage access frequency of each data block which is stored in thenon-volatile memory 15. Specifically, the access frequencydetection process module 203 counts the number of the read access or write access by thehost device 20 for each data block stored in thenon-volatile memory 15. Here, it is not always necessary to count the actual access number itself accurately. For example, it is also possible to manage the presence or absence of the access during a power cycle of the information storage device 11 (the term from the power ON through the power OFF of the information storage device 11) for each data block. In this case, the value of the access number corresponding to the data block which is accessed one time or more during one power cycle becomes one. The access number corresponding to the data block becomes zero when there is no access at all during one power cycle. Further, it is also possible to manage the access number by taking only the synchronized data stored at thenon-volatile memory 15 as the target. - The data move
process module 204 executes the data move process for gathering each of the data blocks which have low access frequency among the data blocks into a specific storage area in thenon-volatile memory 15 during the normal operation of theinformation storage device 11 based on the access frequency of each synchronized data (access frequencies of the data blocks which are synchronized data) in thenon-volatile memory 15. Namely, the data block which is the synchronized data and has low access frequency among the data blocks stored in thenon-volatile memory 15 is gathered into a specific area of thenon-volatile memory 15 in advance. In this manner, by gathering each of the data blocks which are to be the erase target, the write data can be effectively written to the free space of thenon-volatile memory 15 because continuous storage areas can be assigned as the free space. - In the case where the
non-volatile memory 15 is configured of a flash memory which includes a plurality of erase blocks, in the data move process, the synchronized data which have low access frequency among the synchronized data, namely, the data blocks which are the synchronized data and have low access frequency, are respectively gathered into one or more specific erase areas. The process to delete data from the flash memory is executed on the basis of each erase block. Therefore, by gathering the data blocks which are the synchronized data and have low access frequency into one or more specific erase areas in advance, the synchronized data deletemodule 201 can delete each of the data blocks which are the synchronized data and have low access frequency all together only by executing the block erase process against the specific erase block. Accordingly, the synchronized data delete process (erase process) can be executed at high speed and the necessary free space can be quickly secured. - Further, in the data move process, based on the LBA of each of the synchronized data having a low access frequency, namely, based on the LBA of each of the data blocks which are the synchronized data and have low access frequency, the process of gathering the data blocks whose LBAs are close to one another to the same erase block is executed. Accordingly, the speed of the rewrite process for restoring the data blocks which are the same as the deleted data blocks respectively from the
hard disk 13 in thenon-volatile memory 15 can be enhanced. -
FIG. 3 shows the write operation for writing the write data to thenon-volatile memory 15 which is performed at the time of receiving the flush cache command. - As mentioned above, in response to the reception of the flush cache command (flush command) from the
host device 20, thecontroller 16 executes the process (the flush process) of writing each data block accumulated as the write data in thebuffer 14 to thenon-volatile memory 15. The flush process can be executed in a state that the rotation of thehard disk 13 is stopped. Here, the flush process is executed based on the premise that the free space, namely, the space to which data can be written freely, is sufficiently assigned in thenon-volatile memory 15. - In the
non-volatile memory 15, the specified data blocks (pinned data, etc.) corresponding to LBAs specified by thehost device 20 and the write data blocks which are to be written to thehard disk 13 are mixed. - Each write data block which is stored in the
non-volatile memory 15 is new data block which has not been written to thehard disk 13. Therefore, the write data block which is stored in thenon-volatile memory 15 is non-synchronized data (media non-synchronized data) for which the same data block does not exist on thehard disk 13. - On the other hand, the synchronized data (the media synchronized data) the same data block as which exists on the
hard disk 13 is included in the data blocks (pinned data) corresponding to LBAs which are specified by thehost device 20. For example, the data block which is loaded from thehard disk 13 to thenon-volatile memory 15 is the synchronized data. Further, there is a case where the same data block exists on thehard disk 13 as the data block even though it is transferred from thehost device 20. - Therefore, in the present embodiment, when the free space of the
non-volatile memory 15 is insufficient, thecontroller 16 selects the synchronized data from among the data blocks (for example, pinned data, etc.) which are stored in thenon-volatile memory 15, and temporarily deletes the selected synchronized data so that the free space of thenon-volatile memory 15 is increased. In this case, thecontroller 16 also executes the process to update the management table 161 in order to erase the management information corresponding to the deleted synchronized data from the management table 161. - Then, the
controller 16 writes each of the write data accumulated in the buffer (the write buffer) 14 to the free space of thenon-volatile memory 15 which is secured by the delete of the synchronized data. Accordingly, since only the synchronized data is to be the erase target, there arises no problem due to the data erase. - With the abovementioned process, in the present embodiment, even in the case where most of the storage area of the
non-volatile memory 15 is used, the area to which the write data is written can be secured in thenon-volatile memory 15 and the write data can be stored in thenon-volatile memory 15. Therefore, the response performance against the flush cache command can be improved and the possibility that the write data is lost due to electric power abnormality, etc., can be reduced. In addition, since the process to write the write data stored in thebuffer 14 to thenon-volatile memory 15 can be executed in a state that the rotation of thehard disk 13 is stopped, the increase of electric power consumption due to the rotation of thehard disk 13 can be prevented. - Next, with reference to
FIG. 4 , the operation of a high speed data flush process will be explained as another example of the write operation of the write data. - The high speed data flush process is the process, not to write the entire write data accumulated in the
buffer 14 to thenon-volatile memory 15, but to write a part of the write data accumulated in thebuffer 14 to thehard disk 13 and to write the rest of the write data accumulated in thebuffer 14 to thenon-volatile memory 15. The write operation to thehard disk 13 and the write operation to thenon-volatile memory 15 are performed simultaneously. - Specifically, when the flush cache command is received from the
host device 20 or when a command which explicitly instructs the execution of the high speed data flush process is received from thehost device 20, thecontroller 16 selects the write data blocks (for example, the data blocks in which LBAs are continuous, etc.) which can be written to thehard disk 13 at high speed from among the write data blocks accumulated in thebuffer 14, and writes the selected write data blocks to thehard disk 13. In this case, a reordering process to reorder the selected data blocks in the order of LBA is executed as well. - At the same time as writing the write data blocks to the
hard disk 13, thecontroller 16 selects the rest of the write data blocks (i.e., the write data blocks other than the selected write data blocks) from among the write data blocks accumulated in thebuffer 14, and writes the rest of the write data blocks to thenon-volatile memory 15. - In the case where the free space of the
non-volatile memory 15 is smaller than the total data size of the rest of the write data blocks which are to be written to thenon-volatile memory 15, thecontroller 16 selects the synchronized data (media synchronized data) from among the data blocks (for example, pinned data, etc.) which are stored in thenon-volatile memory 15, and deletes the selected synchronized data (media synchronized data) temporarily so as to secure the free space. In this manner, even in the state that the free space of thenon-volatile memory 15 is insufficient, the high speed data flush process can be executed. - Next, the data move process which is executed at the background during normal operation of the
information storage device 11 will be explained with reference toFIG. 5 . - In the present embodiment, the following movement process is executed in order to execute the synchronized data erase process efficiently.
- First, the
controller 16 counts the number of the read access of thehost device 20 for each data block which is stored in the non-volatile memory 15 (Step S101). Then, when a garbage collection process or a wear leveling process is executed in theinformation storage device 11 or when theinformation storage device 11 is idle, thecontroller 16 executes the data move process for relocating each of the data blocks which are stored in thenon-volatile memory 15 based on the access number corresponding to each of the data blocks stored in the non-volatile memory 15 (Steps S102, S103). - In Step S102, the
controller 16 selects the data blocks which are the synchronized data and have low access frequency from among the data blocks which are stored in thenon-volatile memory 15. Then, in Step S103, thecontroller 16 relocates data blocks stored in thenon-volatile memory 15 so that the data blocks which are the media synchronized data and has low access frequency are respectively gathered to the specific erase block, as shown inFIG. 6 . - Further, in the data move process in Step S103, the
controller 16 performs the relocating so that data blocks in which LBAs are close to one another are gathered to the same erase block also in consideration of the LBA for each data block which is the media synchronized data and has low access frequency. The state of relocating is shown inFIG. 7 . InFIG. 7 , the data block in which LBA is 100, the data block in which LBA is 20000, the data block in which LBA is 180, the data block in which LBA is 21000, the data block in which LBA is 20 and the data block in which LBA is 16000 are the data blocks which are the media synchronized data and have low access frequency. The data blocks in which LBAs are close to one another, namely, the data blocks in which LBAs belong within the predetermined LBA range are moved to the same erase block. InFIG. 7 , the data block in which LBA is 100, the data block in which LBA is 180 and the data block in which LBA is 20 are gathered into the eraseblock 1. Further, the data block in which LBA is 20000, the data block in which LBA is 21000 and the data block in which LBA is 16000 are gathered into the eraseblock 2. - In the synchronized data delete process, the number of the erase blocks which are to be the erase target varies in accordance with the data size of the write data. For example, if only the erase
block 1 is erased in the synchronized data delete process, it is necessary in the rewrite process to execute the process to restore the data block in which LBA is 100, the data block in which LBA is 180 and the data block in which LBA is 20 from thehard disk 13 in thenon-volatile memory 15. In this case, the data block in which LBA is 100, the data block in which LBA is 180 and the data block in which LBA is 20 exist at the storage positions on thehard disk 13 being close to one another (for example, on the same track or on two adjacent tracks). Therefore, these data blocks can be efficiently read from thehard disk 13 and the enhancement of the rewrite process speed can be achieved. - Next, the procedure of the write operation of writing the write data to the
non-volatile memory 15 will be explained with reference to the flowchart ofFIG. 8 . - When a factor which needs high speed storing of the write data of the
buffer 14 to thenon-volatile memory 15 is generated, for example, when the flush cache command is received from the host device 20 (Step S201), thecontroller 16 checks the free space of the non-volatile memory 15 (Step S202). Then, thecontroller 16 compares the free space of thenon-volatile memory 15 with the data size of the write data accumulated in thebuffer 14 and determines whether or not the free space of thenon-volatile memory 15 is smaller than the data size of the write data (Step S203). - When the free space of the
non-volatile memory 15 is equal to or larger than the data size of the write data (NO in Step S203), thecontroller 16 writes the write data accumulated in thebuffer 14 to the non-volatile memory 15 (Step S204). - When the free space of the
non-volatile memory 15 is smaller than the data size of the write data (YES in Step S203), thecontroller 16 calculates the shortfall size (the shortfall size=the data size of the write data−the free space of the non-volatile memory 15) (Step S205). Then, thecontroller 16 determines the data blocks to be deleted from among the data blocks stored in thenon-volatile memory 15 based on the shortfall size (Step S206). In Step S206, the data blocks which are synchronized data and have low access frequency are selected as the erase target of the data blocks from among the data blocks (for example, pinned data, etc.) stored in thenon-volatile memory 15. - When the data move process is performed such that the data blocks which are synchronized data and have low access frequency are previously gathered into some specific erase blocks, the
controller 16 only needs to select the erase blocks which are to be the erase target from among the specific erase blocks based on the shortfall size. Then, thecontroller 16 erases, from the management table 161, the management information corresponding to each of the data blocks which exist in the selected erase block (Step S207). - Next, the
controller 16 deletes the whole data in the selected erase block by executing the block erase process against the selected erase block (Step S208). With this erase process, since the free space of thenon-volatile memory 15 is increased, the free space corresponding to the data size of the write data is secured at thenon-volatile memory 15. Then, thecontroller 16 writes each of the write data stored in thebuffer 14 to the free space in the non-volatile memory 15 (Step S209). In Step S209, thecontroller 16 can write the write data to thenon-volatile memory 15 in the state that the rotation of thehard disk 13 is stopped. - With the abovementioned process, even in the case where the free space of the
non-volatile memory 15 is insufficient, the write data accumulated in thebuffer 14 can be stored in thenon-volatile memory 15 at high speed. - Here, in Step S203, the free space of the
non-volatile memory 15 is determined whether or not it is smaller than the data size of the write data. However, it is also possible to determine whether or not the free space of thenon-volatile memory 15 is smaller than a specific data size which is previously determined. - Another structural example of the
information storage device 11 of the present invention is shown inFIG. 9 . - The
information storage device 11 shown inFIG. 9 is realized by an SSD (Solid State Drive) which includes a non-volatile cache. In theinformation storage device 11 ofFIG. 9 , anon-volatile storage medium 300 which is configured of anon-volatile memory 301 is disposed instead of thehard disk 13. In addition, anon-volatile memory 302 is disposed as a cache with respect to thenon-volatile storage medium 300. Thenon-volatile memory 302 is a memory device accessible at higher speed than thenon-volatile memory 301 in thenon-volatile storage medium 300. In the structure ofFIG. 9 , the read/write access to thenon-volatile memory 302 is performed at higher speed than the read/write access to thenon-volatile memory 301 in thenon-volatile storage medium 300 as well. Therefore, the synchronized data erase process which is described above is also useful for theinformation storage device 11 ofFIG. 9 . - As explained above, according to the present embodiment, even in the state that most of the storage area of the
non-volatile memory 15 is used, the area to which the write data is written can be secured in thenon-volatile memory 15 and the write data can be stored in thenon-volatile memory 15 by erasing the synchronized data in thenon-volatile memory 15. Further, since the data move process is executed during the normal operation in advance, the process to erase the synchronized data can be executed at high speed. - The various modules of the systems described herein can be implemented as software applications, hardware and/or software modules, or components on one or more computers, such as servers. While the various modules are illustrated separately, they may share some or all of the same underlying logic or code.
- While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Claims (12)
1. An information storage device comprising:
a non-volatile storage medium;
a non-volatile memory configured to store specific data to be read for a host device and data to be written to the non-volatile storage medium;
a buffer configured to temporarily store the data to be written transmitted from the host device; and
a controller configured to delete data synchronized with the data in the non-volatile storage medium among the specific data stored in the non-volatile memory, if a space available in the non-volatile memory is smaller than a threshold data size, and to write the data to be written stored in the buffer to the non-volatile memory.
2. The information storage device of claim 1 , wherein the controller is configured to delete data with a substantially low access frequency with priority among a plurality of the synchronized data stored in the non-volatile memory.
3. The information storage device of claim 2 , wherein the controller is configured to move data in order to gather data with low access frequencies among the plurality of data into a designated storage area in the non-volatile memory, the data is moved during normal operation of the information storage device.
4. The information storage device of claim 2 , wherein the non-volatile memory is a flash memory comprising a plurality of erase blocks, and
the controller is configured to move data during normal operation of the information storage device, to gather data with low access frequencies among the plurality of data into at least one designated erase block in the flash memory, and to erase the whole data in the at least one designated erase block in order to erase the gathered data.
5. The information storage device of claim 4 , wherein the data moving comprising gathering data with logical block addresses close to one another among the data with low access frequencies into the same erase block.
6. The information storage device of claim 5 , wherein the controller comprises a rewrite module configured to read data being the same as data deleted from the designated erase block from the non-volatile storage medium, and to rewrite the data read from the non-volatile storage medium to the non-volatile memory.
7. The information storage device of claim 1 , wherein the non-volatile storage medium comprises a hard disk which is a rotating medium, and
the controller is configured to write the data to be written stored in the buffer to the non-volatile memory in a state that rotation of the hard disk is stopped.
8. The information storage device of claim 1 , wherein the non-volatile storage medium comprises a hard disk which is a rotating medium, and
the controller is configured to write a portion to be written among a plurality of data stored in the buffer to the hard disk, and to write the rest of the plurality of data to the non-volatile memory simultaneously.
9. An information storage device comprising:
a non-volatile storage medium;
a non-volatile memory configured to function as a cache, to store specific data to be read for a host device, and to write data to be written to the non-volatile storage medium;
a buffer configured to temporarily store the data to be written transmitted from the host device; and
a controller configured to read a data from either the non-volatile storage medium or the non-volatile memory in accordance with an address comprised in a read request when the read request is received from the host device, and to determine whether a space available in the non-volatile memory is smaller than a threshold data size, when a command instructing to write the data to be written stored in the buffer to the non-volatile storage medium is received from the host device, and configured to delete data synchronized with the data in the non-volatile storage medium among the specific data stored in the non-volatile memory, if the available space is smaller than the threshold data size, and to write the data to be written stored in the buffer to the non-volatile memory.
10. A control method of controlling operation of an information storage device comprising a non-volatile storage medium, a non-volatile memory configured to store specific data to be read for a host device and to write data to be written to the non-volatile storage medium, and a buffer configured to temporarily store the data to be written transmitted from the host device, the method comprising:
reading data from either the non-volatile storage medium or the non-volatile memory in accordance with an address comprised in a read request from the host device;
increasing a space available in the non-volatile memory by deleting data synchronized with the data in the non-volatile storage medium among the specific data stored in the non-volatile memory, if the available space is smaller than a threshold data size; and
writing the data to be written stored in the buffer to the available space of the non-volatile memory.
11. The control method of claim 10 , wherein the deleting further comprises deleting data with a substantially low access frequency with priority among a plurality of the synchronized data stored in the non-volatile memory.
12. The control method of claim 11 , further comprising moving data during normal operation of the information storage device in order to gather data with low access frequencies among the plurality of data into a designated storage area in the non-volatile memory by the host device.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008-019364 | 2008-01-30 | ||
JP2008019364A JP2009181314A (en) | 2008-01-30 | 2008-01-30 | Information recording device and control method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090193182A1 true US20090193182A1 (en) | 2009-07-30 |
Family
ID=40900378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/361,237 Abandoned US20090193182A1 (en) | 2008-01-30 | 2009-01-28 | Information storage device and control method thereof |
Country Status (3)
Country | Link |
---|---|
US (1) | US20090193182A1 (en) |
JP (1) | JP2009181314A (en) |
CN (1) | CN101499036A (en) |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100011168A1 (en) * | 2008-07-11 | 2010-01-14 | Samsung Electronics Co., Ltd | Method and apparatus for cache flush control and write re-ordering in a data storage system |
US20110082967A1 (en) * | 2009-10-05 | 2011-04-07 | Deshkar Shekhar S | Data Caching In Non-Volatile Memory |
US20110161565A1 (en) * | 2009-12-31 | 2011-06-30 | Phison Electronics Corp. | Flash memory storage system and controller and data writing method thereof |
US20110167197A1 (en) * | 2010-01-05 | 2011-07-07 | Mark Leinwander | Nonvolatile Storage with Disparate Memory Types |
CN102129353A (en) * | 2010-01-13 | 2011-07-20 | 群联电子股份有限公司 | Flash storage system, flash controller and data writing method |
US20110198931A1 (en) * | 2010-02-17 | 2011-08-18 | Integrated Device Technology, Inc. | Systems, devices, and methods for providing backup power to a load |
US20110296085A1 (en) * | 2010-05-28 | 2011-12-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US20120137063A1 (en) * | 2010-11-26 | 2012-05-31 | Buffalo Inc. | Auxiliary storage device and processing method thereof |
US20120191647A1 (en) * | 2005-09-15 | 2012-07-26 | Berend Ozceri | Endless memory |
US20120198131A1 (en) * | 2011-01-31 | 2012-08-02 | Phison Electronics Corp. | Data writing method for rewritable non-volatile memory, and memory controller and memory storage apparatus using the same |
US20130019057A1 (en) * | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
US20130212317A1 (en) * | 2012-02-13 | 2013-08-15 | Shai Traister | Storage and Host Devices for Overlapping Storage Areas for a Hibernation File and Cached Data |
US20130282964A1 (en) * | 2010-05-05 | 2013-10-24 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
WO2013165386A1 (en) | 2012-05-01 | 2013-11-07 | Hewlett-Packard Development Company, L.P. | Prearranging data to commit to non-volatile memory |
US20140343896A1 (en) * | 2013-05-15 | 2014-11-20 | Google Inc. | Determining Sensor Information in the Background On a Mobile Device |
CN104598389A (en) * | 2015-01-09 | 2015-05-06 | 上海小蚁科技有限公司 | Method and device for storing data |
US9146875B1 (en) * | 2010-08-09 | 2015-09-29 | Western Digital Technologies, Inc. | Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
US9448918B2 (en) | 2005-09-15 | 2016-09-20 | Eye-Fi, Inc. | Content-aware digital media storage device and methods of using the same |
US20170139826A1 (en) * | 2015-11-17 | 2017-05-18 | Kabushiki Kaisha Toshiba | Memory system, memory control device, and memory control method |
US9690658B2 (en) | 2014-03-29 | 2017-06-27 | Fujitsu Limited | Distributed storage system and method |
US9785666B2 (en) | 2010-12-28 | 2017-10-10 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
US9804784B2 (en) | 2012-12-06 | 2017-10-31 | Kabushiki Kaisha Toshiba | Low-overhead storage of a hibernation file in a hybrid disk drive |
CN107844265A (en) * | 2016-09-20 | 2018-03-27 | 三星电子株式会社 | The method of Memory Controller in the method and Operations Computing System of Operations Computing System |
US9977732B1 (en) * | 2011-01-04 | 2018-05-22 | Seagate Technology Llc | Selective nonvolatile data caching based on estimated resource usage |
EP3301584A4 (en) * | 2015-06-29 | 2018-06-27 | Huawei Technologies Co., Ltd. | Storage system, storage management device, storage device, hybrid storage device, and storage management method |
EP3441869A1 (en) * | 2017-08-09 | 2019-02-13 | Kabushiki Kaisha Toshiba | Storage controller, storage device, and write control method |
US10268415B2 (en) | 2013-06-05 | 2019-04-23 | Kabushiki Kaisha Toshiba | Data storage device including a first storage unit and a second storage unit and data storage control method thereof |
US10474569B2 (en) | 2014-12-29 | 2019-11-12 | Toshiba Memory Corporation | Information processing device including nonvolatile cache memory and processor |
US10672179B2 (en) | 2015-12-30 | 2020-06-02 | Wuhan United Imaging Healthcare Co., Ltd. | Systems and methods for data rendering |
US20200242084A1 (en) * | 2019-01-28 | 2020-07-30 | International Business Machines Corporation | Dynamically increasing available storage space in a storage volume |
US10838665B2 (en) | 2016-12-05 | 2020-11-17 | Huawei Technologies Co., Ltd. | Method, device, and system for buffering data for read/write commands in NVME over fabric architecture |
US11762581B2 (en) | 2016-12-05 | 2023-09-19 | Huawei Technologies Co., Ltd. | Method, device, and system for controlling data read/write command in NVMe over fabric architecture |
USRE49818E1 (en) * | 2010-05-13 | 2024-01-30 | Kioxia Corporation | Information processing method in a multi-level hierarchical memory system |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011031796A2 (en) * | 2009-09-08 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for caching data on a solid-state storage device |
JP2011090460A (en) * | 2009-10-21 | 2011-05-06 | Toshiba Corp | Data storage device and method of controlling the same |
US20130238851A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Hybrid storage aggregate block tracking |
US20140219021A1 (en) * | 2013-02-07 | 2014-08-07 | Seagate Technology Llc | Data protection for unexpected power loss |
US9892798B2 (en) | 2012-09-11 | 2018-02-13 | Seagate Technology Llc | Data protection for unexpected power loss |
JP6158035B2 (en) * | 2013-10-21 | 2017-07-05 | 東芝テック株式会社 | Content playback apparatus and program |
KR101548917B1 (en) | 2014-02-24 | 2015-09-02 | 에스케이텔레콤 주식회사 | Memory management apparatus and control method thereof |
CN104363389A (en) * | 2014-11-11 | 2015-02-18 | 广东中星电子有限公司 | Lens vignetting compensation method and system |
JP6320322B2 (en) * | 2014-12-29 | 2018-05-09 | 東芝メモリ株式会社 | Cache memory device and program |
WO2016194979A1 (en) * | 2015-06-02 | 2016-12-08 | 日本電気株式会社 | Storage system, storage control device, storage control method, and program |
US10289315B2 (en) * | 2017-03-27 | 2019-05-14 | Western Digital Technologies, Inc. | Managing I/O operations of large data objects in a cache memory device by dividing into chunks |
JP6346345B2 (en) * | 2017-06-06 | 2018-06-20 | 東芝テック株式会社 | Content playback apparatus and program |
KR20200088713A (en) * | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | Memory controller and operating method thereof |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070250662A1 (en) * | 2006-04-21 | 2007-10-25 | Kabushiki Kaisha Toshiba | Storage device using nonvolatile cache memory and control method thereof |
US7340580B2 (en) * | 2003-12-25 | 2008-03-04 | Kabushiki Kaisha Toshiba | Storage device and information processing system |
-
2008
- 2008-01-30 JP JP2008019364A patent/JP2009181314A/en active Pending
-
2009
- 2009-01-23 CN CNA2009100039231A patent/CN101499036A/en active Pending
- 2009-01-28 US US12/361,237 patent/US20090193182A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340580B2 (en) * | 2003-12-25 | 2008-03-04 | Kabushiki Kaisha Toshiba | Storage device and information processing system |
US20070250662A1 (en) * | 2006-04-21 | 2007-10-25 | Kabushiki Kaisha Toshiba | Storage device using nonvolatile cache memory and control method thereof |
Cited By (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120191647A1 (en) * | 2005-09-15 | 2012-07-26 | Berend Ozceri | Endless memory |
US8688945B2 (en) * | 2005-09-15 | 2014-04-01 | Eye-Fi, Inc. | Endless memory |
US9448918B2 (en) | 2005-09-15 | 2016-09-20 | Eye-Fi, Inc. | Content-aware digital media storage device and methods of using the same |
US8307162B2 (en) * | 2008-07-11 | 2012-11-06 | Seagate Technology Llc | Method and apparatus for cache flush control and write re-ordering in a data storage system |
US20100011168A1 (en) * | 2008-07-11 | 2010-01-14 | Samsung Electronics Co., Ltd | Method and apparatus for cache flush control and write re-ordering in a data storage system |
US20110082967A1 (en) * | 2009-10-05 | 2011-04-07 | Deshkar Shekhar S | Data Caching In Non-Volatile Memory |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US9003159B2 (en) * | 2009-10-05 | 2015-04-07 | Marvell World Trade Ltd. | Data caching in non-volatile memory |
US20110161565A1 (en) * | 2009-12-31 | 2011-06-30 | Phison Electronics Corp. | Flash memory storage system and controller and data writing method thereof |
US8904086B2 (en) * | 2009-12-31 | 2014-12-02 | Phison Electronics Corp. | Flash memory storage system and controller and data writing method thereof |
US20150039820A1 (en) * | 2009-12-31 | 2015-02-05 | Phison Electronics Corp. | Flash memory storage system and controller and data writing method thereof |
US9009399B2 (en) * | 2009-12-31 | 2015-04-14 | Phison Electronics Corp. | Flash memory storage system and controller and data writing method thereof |
US20110167197A1 (en) * | 2010-01-05 | 2011-07-07 | Mark Leinwander | Nonvolatile Storage with Disparate Memory Types |
CN102129353A (en) * | 2010-01-13 | 2011-07-20 | 群联电子股份有限公司 | Flash storage system, flash controller and data writing method |
US8638010B2 (en) | 2010-02-17 | 2014-01-28 | Integrated Device Technology, Inc. | Systems, devices, and methods for providing backup power to a load |
US20110198931A1 (en) * | 2010-02-17 | 2011-08-18 | Integrated Device Technology, Inc. | Systems, devices, and methods for providing backup power to a load |
US20130282964A1 (en) * | 2010-05-05 | 2013-10-24 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US20130282965A1 (en) * | 2010-05-05 | 2013-10-24 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US9436596B2 (en) * | 2010-05-05 | 2016-09-06 | Microsoft Technology Licensing, Llc | Flash memory cache including for use with persistent key-value store |
US9298604B2 (en) * | 2010-05-05 | 2016-03-29 | Microsoft Technology Licensing, Llc | Flash memory cache including for use with persistent key-value store |
USRE49818E1 (en) * | 2010-05-13 | 2024-01-30 | Kioxia Corporation | Information processing method in a multi-level hierarchical memory system |
US20110296085A1 (en) * | 2010-05-28 | 2011-12-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US8688897B2 (en) * | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US8688900B2 (en) * | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US20130145089A1 (en) * | 2010-05-28 | 2013-06-06 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
US9146875B1 (en) * | 2010-08-09 | 2015-09-29 | Western Digital Technologies, Inc. | Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining |
US20120137063A1 (en) * | 2010-11-26 | 2012-05-31 | Buffalo Inc. | Auxiliary storage device and processing method thereof |
US9785666B2 (en) | 2010-12-28 | 2017-10-10 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
US9977732B1 (en) * | 2011-01-04 | 2018-05-22 | Seagate Technology Llc | Selective nonvolatile data caching based on estimated resource usage |
US20120198131A1 (en) * | 2011-01-31 | 2012-08-02 | Phison Electronics Corp. | Data writing method for rewritable non-volatile memory, and memory controller and memory storage apparatus using the same |
TWI494948B (en) * | 2011-01-31 | 2015-08-01 | Phison Electronics Corp | Data writing method for a non-volatile memory module, memory controller and memory storage apparatus |
US20130019057A1 (en) * | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
US20130212317A1 (en) * | 2012-02-13 | 2013-08-15 | Shai Traister | Storage and Host Devices for Overlapping Storage Areas for a Hibernation File and Cached Data |
WO2013165386A1 (en) | 2012-05-01 | 2013-11-07 | Hewlett-Packard Development Company, L.P. | Prearranging data to commit to non-volatile memory |
EP2845105A4 (en) * | 2012-05-01 | 2015-12-23 | Hewlett Packard Development Co | Prearranging data to commit to non-volatile memory |
US9804784B2 (en) | 2012-12-06 | 2017-10-31 | Kabushiki Kaisha Toshiba | Low-overhead storage of a hibernation file in a hybrid disk drive |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
US9015378B2 (en) * | 2013-05-15 | 2015-04-21 | Google Inc. | Determining sensor information in the background on a mobile device |
US20140343896A1 (en) * | 2013-05-15 | 2014-11-20 | Google Inc. | Determining Sensor Information in the Background On a Mobile Device |
US10268415B2 (en) | 2013-06-05 | 2019-04-23 | Kabushiki Kaisha Toshiba | Data storage device including a first storage unit and a second storage unit and data storage control method thereof |
US9690658B2 (en) | 2014-03-29 | 2017-06-27 | Fujitsu Limited | Distributed storage system and method |
US10474569B2 (en) | 2014-12-29 | 2019-11-12 | Toshiba Memory Corporation | Information processing device including nonvolatile cache memory and processor |
CN104598389A (en) * | 2015-01-09 | 2015-05-06 | 上海小蚁科技有限公司 | Method and device for storing data |
EP3301584A4 (en) * | 2015-06-29 | 2018-06-27 | Huawei Technologies Co., Ltd. | Storage system, storage management device, storage device, hybrid storage device, and storage management method |
US20170139826A1 (en) * | 2015-11-17 | 2017-05-18 | Kabushiki Kaisha Toshiba | Memory system, memory control device, and memory control method |
US10672179B2 (en) | 2015-12-30 | 2020-06-02 | Wuhan United Imaging Healthcare Co., Ltd. | Systems and methods for data rendering |
US11544893B2 (en) | 2015-12-30 | 2023-01-03 | Wuhan United Imaging Healthcare Co., Ltd. | Systems and methods for data deletion |
CN107844265A (en) * | 2016-09-20 | 2018-03-27 | 三星电子株式会社 | The method of Memory Controller in the method and Operations Computing System of Operations Computing System |
US10838665B2 (en) | 2016-12-05 | 2020-11-17 | Huawei Technologies Co., Ltd. | Method, device, and system for buffering data for read/write commands in NVME over fabric architecture |
US11762581B2 (en) | 2016-12-05 | 2023-09-19 | Huawei Technologies Co., Ltd. | Method, device, and system for controlling data read/write command in NVMe over fabric architecture |
EP3441869A1 (en) * | 2017-08-09 | 2019-02-13 | Kabushiki Kaisha Toshiba | Storage controller, storage device, and write control method |
US11144239B2 (en) | 2017-08-09 | 2021-10-12 | Kabushiki Kaisha Toshiba | Storage controller, storage device, and write control method |
US20200242084A1 (en) * | 2019-01-28 | 2020-07-30 | International Business Machines Corporation | Dynamically increasing available storage space in a storage volume |
US10762048B2 (en) * | 2019-01-28 | 2020-09-01 | International Business Machines Corporation | Dynamically increasing available storage space in a storage volume |
Also Published As
Publication number | Publication date |
---|---|
JP2009181314A (en) | 2009-08-13 |
CN101499036A (en) | 2009-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090193182A1 (en) | Information storage device and control method thereof | |
CN102576293B (en) | Data management in solid storage device and Bedding storage system | |
US10776153B2 (en) | Information processing device and system capable of preventing loss of user data | |
US8560759B1 (en) | Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency | |
US8706985B1 (en) | System and method for optimizing garbage collection in data storage | |
US9256542B1 (en) | Adaptive intelligent storage controller and associated methods | |
US9804784B2 (en) | Low-overhead storage of a hibernation file in a hybrid disk drive | |
US8738882B2 (en) | Pre-organization of data | |
US8327076B2 (en) | Systems and methods of tiered caching | |
US8782334B1 (en) | Hybrid drive copying disk cache to non-volatile semiconductor memory | |
US20120144097A1 (en) | Memory system and data deleting method | |
US20150127889A1 (en) | Nonvolatile memory system | |
US20130227198A1 (en) | Flash memory device and electronic device employing thereof | |
US9268499B1 (en) | Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory | |
US9208101B2 (en) | Virtual NAND capacity extension in a hybrid drive | |
US20130031296A1 (en) | System and method for managing address mapping information due to abnormal power events | |
KR20150035560A (en) | Optimized context drop for a solid state drive(ssd) | |
US20080025706A1 (en) | Information recording apparatus and control method thereof | |
US8862819B2 (en) | Log structure array | |
US7913029B2 (en) | Information recording apparatus and control method thereof | |
US9189392B1 (en) | Opportunistic defragmentation during garbage collection | |
KR101204163B1 (en) | Semiconductor memory device | |
JP2010160605A (en) | Semiconductor memory device, host device, and semiconductor memory system | |
KR20090042077A (en) | File management system and method | |
KR101070511B1 (en) | Solid state drive controller and method for operating of the solid state drive controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: KABUSHIKI KAISHA TOSHIBA, JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NITTA, TATSUO;REEL/FRAME:022187/0373 Effective date: 20081107 |
|
STCB | Information on status: application discontinuation |
Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION |