US20130246721A1 - Controller, data storage device, and computer program product - Google Patents
Controller, data storage device, and computer program product Download PDFInfo
- Publication number
- US20130246721A1 US20130246721A1 US13/608,086 US201213608086A US2013246721A1 US 20130246721 A1 US20130246721 A1 US 20130246721A1 US 201213608086 A US201213608086 A US 201213608086A US 2013246721 A1 US2013246721 A1 US 2013246721A1
- Authority
- US
- United States
- Prior art keywords
- data
- cluster
- unit
- read
- cluster data
- 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
- 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/0661—Format or protocol conversion 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0608—Saving storage space on 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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]
Definitions
- Embodiments described herein relate generally to a controller, a data storage device, and a computer program product.
- a data storage device typified by a solid state drive (SSD) has been known which uses a semiconductor storage medium, such as NAND flash memory.
- the lifespan of the semiconductor storage medium such as NAND flash memory, depends on the number of times data is rewritten.
- FIG. 1 is a block diagram illustrating an example of the structure of a data storage device according to a first embodiment
- FIG. 2 is a schematic diagram illustrating the relationship between a block and a page in a storage medium
- FIGS. 3A and 3B are schematic diagrams illustrating the storage position (arrangement) of a cluster set in the page
- FIG. 4 is a schematic diagram illustrating an address mapping table according to the first embodiment
- FIG. 5 is a flowchart illustrating an example of the procedure of a writing process according to the first embodiment
- FIG. 6 is a flowchart illustrating an example of the procedure of a reading process according to the first embodiment
- FIG. 7 is a flowchart illustrating an example of the procedure of a transfer process according to the first embodiment
- FIG. 8 is a block diagram illustrating an example of the structure of a data storage device according to a second embodiment
- FIG. 9 is a schematic diagram illustrating an example of the structure of a slot
- FIGS. 10A to 10D are schematic diagrams illustrating the size of compressed data with respect to the division size of the slot
- FIGS. 11A and 11B are schematic diagrams illustrating a state in which the compressed clusters are stored across the slots (or pages);
- FIG. 12 is a schematic diagram illustrating the storage patterns of the compressed clusters in the slot.
- FIG. 13 is a schematic diagram illustrating an address mapping table according to the second embodiment
- FIG. 14 is a flowchart illustrating an example of the procedure of a writing process according to the second embodiment
- FIG. 15 is a flowchart illustrating an example of the procedure of a reading process according to the second embodiment
- FIG. 16 is a flowchart illustrating an example of the procedure of a transfer process according to the second embodiment
- FIG. 17 is a block diagram illustrating an example of the structure of a data storage device according to a third embodiment
- FIGS. 18A and 18B are schematic diagrams illustrating an address mapping table according to the third embodiment
- FIG. 19 is a schematic diagram illustrating the state of a cluster stored at the end of a slot
- FIG. 20 is a flowchart illustrating an example of the procedure of a writing process according to the third embodiment
- FIG. 21 is a flowchart illustrating an example of the procedure of a reading process according to the third embodiment.
- FIG. 22 is a flowchart illustrating an example of the procedure of a transfer process according to the third embodiment.
- FIG. 23 is a schematic diagram illustrating an example of data including error correction data for correcting irreversibly compressed data.
- a controller controls the reading and writing of data from and to a storage medium and a storage unit.
- the storage medium includes a plurality of pages each serving as a storage area which is a unit of input and output from and to an external device.
- the storage medium stores a plurality of pieces of data of clusters in each page, each of the pieces of data being a predetermined data unit.
- the storage unit stores correspondences between logical addresses for identifying the respective clusters and physical addresses of the storage medium.
- the controller includes a write control unit configured to make a control that converts data requested to be written by the external device into a plurality of pieces of cluster data with a size equal to a size of the cluster of the storage medium, compresses each of the converted pieces of cluster data by an external compression unit, determines a corresponding physical address of a write destination in the storage medium according to a predetermined rule, and writes the compressed pieces of cluster data to the storage medium using the physical address of the write destination, and a control that writes a correspondence between the physical address of the write destination and a corresponding logical address to the storage unit.
- the controller also includes a read control unit configured to a control that acquires a corresponding physical address of data requested to be read by the external device from the storage unit, reads a corresponding piece of cluster data from the storage medium using the acquired physical address, decompresses the read piece of cluster data by an external decompression unit, and outputs the decompressed piece of cluster data.
- a read control unit configured to a control that acquires a corresponding physical address of data requested to be read by the external device from the storage unit, reads a corresponding piece of cluster data from the storage medium using the acquired physical address, decompresses the read piece of cluster data by an external decompression unit, and outputs the decompressed piece of cluster data.
- the controller also includes a transfer control unit configured to make a control that determines a piece of cluster data to be transferred among the pieces of cluster data written to the storage medium according to a predetermined rule, reads the determined piece of cluster data from the storage medium, decompresses the read piece of cluster data by the external decompression unit, compresses the decompressed piece of cluster data by the external compression unit, determines a corresponding physical address of a transfer destination in the storage medium according to a predetermined rule, and writes the compressed piece of cluster data to the storage medium using the corresponding physical address of the transfer destination, and a control that writes a correspondence between the physical address of the transfer destination and a corresponding logical address to the storage unit.
- a transfer control unit configured to make a control that determines a piece of cluster data to be transferred among the pieces of cluster data written to the storage medium according to a predetermined rule, reads the determined piece of cluster data from the storage medium, decompresses the read piece of cluster data by the external decompression unit, compresses the de
- an SSD is used as the data storage device, but the data storage device is not limited thereto.
- a data storage device includes a controller having a function of compressing data to be written to a storage medium to reduce the amount of data.
- a controller controls the reading and writing of data from and to a storage medium and a storage unit.
- the storage medium includes a plurality of pages each serving as a storage area which is a unit of input and output from and to an external device.
- the storage medium stores a plurality of pieces of data of clusters in each page, each of the pieces of data being a predetermined data unit.
- the storage unit stores correspondences between logical addresses for identifying the respective clusters and physical addresses of the storage medium.
- the controller includes a write control unit configured to make a control that converts data requested to be written by the external device into a plurality of pieces of cluster data with a size equal to a size of the cluster of the storage medium, compresses each of the converted pieces of cluster data by an external compression unit, determines a corresponding physical address of a write destination in the storage medium according to a predetermined rule, and writes the compressed pieces of cluster data to the storage medium using the physical address of the write destination, and a control that writes a correspondence between the physical address of the write destination and a corresponding logical address to the storage unit.
- the controller also includes a read control unit configured to a control that acquires a corresponding physical address of data requested to be read by the external device from the storage unit, reads a corresponding piece of cluster data from the storage medium using the acquired physical address, decompresses the read piece of cluster data by an external decompression unit, and outputs the decompressed piece of cluster data.
- a read control unit configured to a control that acquires a corresponding physical address of data requested to be read by the external device from the storage unit, reads a corresponding piece of cluster data from the storage medium using the acquired physical address, decompresses the read piece of cluster data by an external decompression unit, and outputs the decompressed piece of cluster data.
- the controller also includes a transfer control unit configured to make a control that determines a piece of cluster data to be transferred among the pieces of cluster data written to the storage medium according to a predetermined rule, reads the determined piece of cluster data from the storage medium, decompresses the read piece of cluster data by the external decompression unit, compresses the decompressed piece of cluster data by the external compression unit, determines a corresponding physical address of a transfer destination in the storage medium according to a predetermined rule, and writes the compressed piece of cluster data to the storage medium using the corresponding physical address of the transfer destination, and a control that writes a correspondence between the physical address of the transfer destination and a corresponding logical address to the storage unit.
- a transfer control unit configured to make a control that determines a piece of cluster data to be transferred among the pieces of cluster data written to the storage medium according to a predetermined rule, reads the determined piece of cluster data from the storage medium, decompresses the read piece of cluster data by the external decompression unit, compresses the de
- the write control unit controls whether the external compression unit compresses the pieces of cluster data according to a predetermined rule.
- the read control unit controls whether the external decompression unit decompresses the piece of cluster data according to a predetermined rule.
- the transfer control unit controls whether the external decompression unit decompresses the piece of cluster data according to a predetermined rule and controls whether the external compression unit compresses the piece of cluster data according to a predetermined rule.
- the storage medium includes a block including the plurality of pages.
- the write control unit makes a control that writes the pieces of cluster data across the plurality of pages with consecutive physical addresses, respectively, in a management unit in which the block is managed into the storage medium.
- the read control unit makes a control that reads the plurality of pages and extracts the pieces of cluster data.
- the transfer control unit makes a control that reads the plurality of pages and extracts the pieces of cluster data.
- the transfer control unit makes a control that writes the pieces of cluster data across the plurality of pages with consecutive physical addresses, respectively, in the management unit in which the block is managed into the storage medium.
- FIG. 1 is a block diagram illustrating the example of the structure of a data storage device 100 according to the first embodiment.
- the data storage device 100 includes a controller 110 , a storage medium access unit 101 , a first access unit 102 , a second access unit 103 , a compression unit 104 , a decompression unit 105 , an interface unit 106 , a storage medium 151 , a first memory 152 , and a second memory 153 .
- the storage medium 151 is a semiconductor storage medium, such as NAND flash memory.
- the storage medium 151 includes a plurality of blocks 400 , as illustrated in FIG. 2 .
- the block 400 is, for example, a unit of data reading and writing for the semiconductor storage medium. For example, a deletion process is performed for each block 400 in the storage medium 151 .
- the block 400 includes a plurality of pages 402 .
- the page 402 is a unit of data input and output between the storage medium 151 and the outside (for example, the storage medium access unit 101 ) of the storage medium 151 .
- Consecutive page numbers are given to each page 402 of the block 400 .
- data is written to the storage medium 151 , for example, in ascending order of the page numbers. That is, data is written to the storage medium 151 in the following order: for example, after a process of deleting data which is recorded in the unit of the blocks 400 in advance, data is written in ascending order of the page numbers.
- the cluster set includes cluster data and error correction data.
- the basic data for generating the error correction data includes the cluster data.
- the cluster is a unit of data in the data storage device 100 .
- address information for identifying the cluster is, for example, a logical address.
- the size of the cluster is set to, for example, 1024 bytes, but is not limited thereto.
- the cluster data which is stored as a portion of the cluster set in the page 402 may or may not be compressed.
- the cluster set may further include metadata, which is information indicating the cluster.
- the metadata is, for example, the logical address of the cluster.
- the basic data for generating the error correction data also includes the metadata.
- the cluster set includes the metadata
- the metadata which is stored as a portion of the cluster set in the page 402 may or may not be compressed.
- an example in which the cluster set includes the metadata will be described, but the invention is not limited thereto.
- the cluster set may not include the metadata.
- the cluster set may further include cluster set size data, which is information indicating the size of the cluster set.
- cluster set size data which is information indicating the size of the cluster set.
- the cluster set size data which is stored as a portion of the cluster set in the page 402 is not compressed.
- the cluster set may include the cluster set size data.
- the storage format of the cluster set stored in the page 402 is not limited to the example illustrated in FIG. 3A .
- the cluster set may be stored in the page 402 in any storage format as long as each data piece included in the cluster set can be appropriately extracted.
- the metadata, the cluster data, and the error correction data are not necessarily stored in the page 402 in this order.
- Two pages 402 including consecutive physical address information items may include one cluster set in a management unit managing the block 400 , as illustrated in FIG. 3B . That is, the cluster set may be stored across two pages 402 .
- the page 402 may be configured such that dummy data is stored in the area in which the cluster set is not stored.
- the dummy data may have a predetermined value (for example, all zero) or a random value.
- the page 402 may be configured such that the dummy data is stored instead of the error correction data.
- the page 402 stores the error correction data, it is possible to improve the reliability of data stored in the storage medium 151 .
- the page 402 may be configured such that the order of the cluster sets is appropriately changed to reduce the amount of dummy data stored.
- the amount of dummy data stored in the page 402 is reduced, it is possible to improve the usage efficiency of the storage medium 151 .
- the storage medium access unit 101 When receiving an instruction to write data to the storage medium 151 , the storage medium access unit 101 ( FIG. 1 ) inputs data which is instructed to be written to the storage medium 151 and performs a writing process. When receiving an instruction to read data stored in the storage medium 151 , the storage medium access unit 101 reads data which is instructed to be read from the storage medium 151 and returns the read data to a request source which has requested the reading process.
- the first memory 152 stores management information.
- the management information includes an address mapping table 160 .
- the address mapping table 160 is a table in which the logical address of the cluster is associated with the physical address information (hereinafter, in some cases, simply referred to as a physical address) of the storage medium 151 in which data indicated by the logical address is stored.
- the first memory 152 may be configured so as to store information derived from the information of the address mapping table 160 in advance in order to simplify various processes performed by the data storage device 100 .
- the address mapping table 160 when the page 402 stores a plurality of cluster sets, the address mapping table 160 includes, as indexes, the logical addresses which are arranged in ascending order as illustrated in FIG. 4 .
- the address mapping table 160 stores, as elements of the table, a set of block number information, page number information, and information about a page offset (an offset on a page), which are the physical address of the storage medium 151 .
- the address mapping table 160 stores information about the size of the cluster set stored in the storage medium 151 .
- the information about the size of the cluster set is not necessarily stored in the address mapping table 160 .
- the metadata may include the information about the size of the cluster set.
- the address mapping table 160 includes the information about the size of the cluster set.
- the address mapping table 160 may not include the information about the size of the cluster set.
- the pages 402 with consecutive page numbers in the same block 400 correspond to two pages 402 which have consecutive physical addresses in a management unit managing the block 400 which is described with reference to FIG. 3B .
- a page with page number 34 in a block with block number 66 is the left page of FIG. 3B and a page with page number 35 in the same block (block number 66 ) is the right page of FIG. 3B .
- the block number information is 66
- the page number information is 34
- the information about the page offset is the storage start position of the cluster set.
- data for the cluster set stored across the pages is needed, data may be read with the page offset being zero in the page with page number 35 in the block with block number 66 .
- two pages 402 with consecutive physical addresses may store one cluster set in the management unit managing the block 400 .
- the structure of the address mapping table 160 is not limited to that illustrated in FIG. 4 .
- the address mapping table 160 may be configured such that various kinds of information are associated with each other using a logical block, which is a set of block groups selected from each storage medium 151 , as a unit.
- the address mapping table 160 may be configured such that various kinds of information are associated with each other using a logical page, which is a set of the pages with the same page number in a plurality of blocks 400 forming the logical block, as a unit.
- the management information may be configured so as to further include a logical-physical conversion table (not illustrated) for deriving information about the blocks 400 forming the logical block from logical block information.
- the management information may be configured so as to include, as the physical address of the storage medium 151 , logical block number information, logical page number information, and information about an offset on the logical page. In this case, consecutive pages forming the same logical page, or pages with consecutive logical page numbers in the same logical block correspond to the two pages 402 with consecutive physical addresses in the management unit managing the block 400 which is described with reference to FIG. 3B .
- a block with block number 5 , a block with block number 97 , a block with block number 36 , and a block with block number 104 form a logical block with logical block number 49 and the clusters are written to the logical pages in this order.
- a page with page number 40 in the block with block number 5 is the left page of FIG. 3B and a page with page number 40 in the block with block number 97 is the right page of FIG. 3B .
- the logical block number information is 49
- the logical page number information is 40
- the information about the offset on the logical page is the storage start position of the cluster set.
- data for the cluster set stored across consecutive pages with the same logical page is needed, data may be read from an offset 0 on the page with page number 40 in the block with block number 97 .
- a logical page with logical page number 34 in a logical block with logical block number 66 is the left page of FIG. 3B and a logical page with logical page number 35 in the same logical block (logical block number 66 ) is the right page of FIG. 3B .
- the logical block number information is 66
- the logical page number information is 34
- the information about the offset on the logical page is the storage start position of the cluster set.
- the structure of the address mapping table 160 may be changed in various ways.
- the address mapping table 160 includes the block number information, the page number information, and the information about the page offset as the physical address of the storage medium 151 .
- the structure of the address mapping table 160 is not limited thereto and the address mapping table 160 may have other structures.
- the first access unit 102 When receiving an instruction to write data to the first memory 152 , the first access unit 102 ( FIG. 1 ) writes data which is instructed to be written to the first memory 152 . In addition, when receiving an instruction to read data stored in the first memory 152 , the first access unit 102 reads data which is instructed to be read from the first memory 152 and returns the read data to a request source which has requested the reading.
- the second memory 153 temporarily stores a plurality of cluster sets to be written.
- the second access unit 103 When receiving an instruction to write data to the second memory 153 , the second access unit 103 writes data which is instructed to be written to the second memory 153 . In addition, when receiving an instruction to read data stored in the second memory 153 , the second access unit 103 reads data which is instructed to be read from the second memory 153 and returns the read data to a request source which has requested the reading process.
- the compression unit 104 When receiving an instruction to compress data, the compression unit 104 reversibly compresses the instructed data using a predetermined method and returns the compressed data to a request source which has requested compression.
- the decompression unit 105 When receiving an instruction to decompress the data compressed by the compression unit 104 , the decompression unit 105 decompressed the instructed data using a predetermined method and returns the decompressed data to a request source which has requested decompression.
- the controller 110 includes a writing unit 111 , a reading unit 112 , a write control unit 113 , a read control unit 114 , and a transfer control unit 115 .
- the writing unit 111 receives a cluster write request from the write control unit 113 (or transfer control unit 115 ).
- the cluster write request includes write destination information, cluster data to be written, and data indicating the logical address of the cluster to be written.
- the write destination information includes the block number of the write destination of the cluster, a page number, and information about an offset on a page.
- the writing unit 111 extracts the cluster data to be written from the received cluster write request.
- the writing unit 111 transmits the extracted cluster data to be written to the compression unit 104 and instructs the compression unit 104 to compress the cluster data. Then, the writing unit 111 acquires the cluster data to be written which is compressed by the compression unit 104 .
- the writing unit 111 processes the extracted cluster data to be written in the same way as that in which the compressed cluster data to be written is processed, without transmitting the cluster data to the compression unit 104 (the cluster data is regarded as the compressed cluster data to be written).
- the writing unit 111 may not transmit the cluster data to the compression unit 104 .
- the writing unit 111 extracts data indicating the logical address of the cluster to be written from the received cluster write request and generates metadata including the extracted data indicating the logical address of the cluster to be written.
- the writing unit 111 may instruct the compression unit 104 to compress the generated metadata, acquire the compressed metadata from the compression unit 104 , and replace the generated metadata with the acquired compressed metadata.
- the writing unit 111 generates the error correction data on the basis of the compressed cluster data to be written and data including the generated metadata. Then, the writing unit 111 generates the cluster set including the compressed cluster data to be written, the generated metadata, and the generated error correction data.
- the writing unit 111 calculates the size of the generated cluster set. Then, the writing unit 111 determines whether the generated cluster set is fitted into a page, which is a write destination. Specifically, the writing unit 111 determines whether the sum of the information about the page offset included in the write destination information and the calculated size of the cluster set is within the size of the page.
- the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated cluster set.
- the writing unit 111 returns the information about the size of the cluster set to a request source (write request source) which has requested the writing process.
- the writing unit 111 When the determination result is No (the cluster set is not fitted into the page, which is a write destination), the writing unit 111 returns a response indicating the overflow of the page, which is a write destination, to the request source which has requested the writing process. When receiving the next write destination information from the write request source, the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated cluster set. In addition, the writing unit 111 returns the information about the size of the cluster set to the write request source.
- the writing unit 111 When receiving an instruction to store the dummy data from the write request source, the writing unit 111 generates dummy data corresponding to the size of the area in which the cluster set is not stored in the page, which is a write destination.
- the dummy data may have a predetermined value (for example, all zero) or a random value. Then, the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated dummy data.
- the writing unit 111 may be configured so as to generate the error correction data of the cluster set which is temporarily stored in the second memory 153 , instead of the dummy data.
- the cluster sets may be stored in the second memory 153 such that the order thereof is appropriately changed, thereby reducing the amount of dummy data stored in the second memory 153 .
- the amount of dummy data stored in the second memory 153 is reduced, it is possible to improve the usage efficiency of the storage medium 151 .
- the writing unit 111 instructs the second access unit 103 to read data corresponding to the size of the page from the second memory 153 . In this way, the writing unit 111 acquires data corresponding to the size of the page. Specifically, the writing unit 111 instructs the second access unit 103 to read the data stored in the left page of FIG. 3B among the data pieces temporarily stored in the second memory 153 .
- the writing unit 111 instructs the second access unit 103 to read data corresponding to the size of the pages to which data is written in parallel from the second memory 153 .
- the writing unit 111 instructs the storage medium access unit 101 to write the data corresponding to the page size (or the size of the pages to which data is written in parallel) which is acquired through the second access unit 103 to the write destination pages (or each page to which data is written in parallel).
- the write destination page is the left page of FIG. 3B .
- the writing unit 111 instructs the storage medium access unit 101 to write the block number of the write destination of the cluster and the page number which are included in the write destination information received from the write request source.
- the writing unit 111 transmits a notice indicating that the writing of data to the page, which is a write destination, has been completed to the write request source.
- the writing unit 111 notifies the write request source of the block number of the write destination of the cluster and the page number which are included in the write destination information received from the write request source.
- the block 400 to which data which is requested to be written by the host apparatus is written is different from a transfer destination block 400 . Therefore, when the write request source is the transfer control unit 115 , the writing unit 111 performs the same process as that performed when the write request source is the write control unit 113 on another write destination page.
- the writing unit 111 may be configured such that the block 400 to which data which is requested to be written by the host apparatus is written is the same as the transfer destination block 400 . For example, even when there is a write request from the write control unit 113 or there is a write request from the transfer control unit 115 , the writing unit 111 performs the above-mentioned process on the same write destination page.
- the reading unit 112 receives a cluster read request from the read request source.
- the cluster read request includes read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes the block number, the page number, the information about the page offset, and the information about the size of the cluster set.
- the reading unit 112 also receives information about consecutive read destination pages.
- the information about consecutive read destination pages includes the block number and the page number.
- the reading unit 112 extracts the block number and the page number from the acquired read destination information and instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number. Then, the reading unit 112 acquires the data of the page from the storage medium access unit 101 .
- the reading unit 112 extracts the block number and the page number from the acquired information about consecutive read destination pages and instructs the storage medium access unit 101 to read the data of the pages 402 with the extracted page numbers in the block 400 with the extracted block number. Then, the reading unit 112 further acquires the data of the pages from the storage medium access unit 101 .
- the reading unit 112 extracts the information about the page offset and the information about the size of the cluster set from the acquired read destination information.
- the reading unit 112 extracts data with the size indicated by the extracted information about the size of the cluster set, using the position indicated by the extracted information about the page offset as a read start position in the acquired page.
- the reading unit extracts data corresponding to the remaining size of the cluster set from the position of the head of the consecutive read destination pages and adds the extracted data and the previously extracted data to generate data for the cluster set.
- the reading unit 112 corrects the error of the data for the cluster set and acquires the error corrected data for the cluster set. Specifically, the reading unit 112 uses data including metadata and cluster data as the basic data for generating error correction data in the data for the cluster set. In addition, the reading unit 112 corrects the error of the data for the cluster set and acquires the error corrected data for the cluster set. When error correction fails (error correction is unavailable), the reading unit 112 notifies the read request source of the occurrence of a read error.
- the reading unit 112 extracts the cluster data from the error corrected data for the cluster set.
- the reading unit 112 transmits the extracted cluster data to the decompression unit 105 and instructs the decompression unit 105 to decompress the extracted cluster data. Then, the reading unit 112 acquires the cluster data decompressed by the decompression unit 105 .
- the reading unit 112 may process the extracted cluster data in the same way as that in which the decompressed cluster data is processed, without transmitting the extracted cluster data to the decompression unit 105 .
- the reading unit 112 processes the extracted cluster data in the same way as that in which the decompressed cluster data is processed, without transmitting the extracted cluster data to the decompression unit 105 . Then, the reading unit 112 transmits the decompressed cluster data (or the extracted cluster data which does not need to be decompressed) to the read request source.
- the interface unit 106 receives instructions, such as a write instruction and a read instruction, from a host apparatus (not illustrated), such as a personal computer (PC).
- the write instruction includes data storage device address information and write data.
- the read instruction includes the data storage device address information.
- the data storage device address information is address information which is provided from the data storage device 100 to the host apparatus (not illustrated).
- a logical block address (LBA) is an example of the data storage device address information of a hard disk drive (HDD) or an SSD.
- the size of the data specified by LBA is set to, for example, 512 bytes. As described above, the size of the data specified by the data storage device address is generally different from the size of the data (cluster) specified by the logical address.
- the data storage device address and the logical address can be converted into each other.
- the quotient of the data storage device address information divided by 2 can be calculated to convert the data storage device address information into the logical address.
- the size of the data specified by the data storage device address is equal to the size of the cluster.
- the data storage device 100 may be configured such that the size of the data specified by the data storage device address is different from the size of the cluster.
- the interface unit 106 transmits the received write instruction to the write control unit 113 .
- the interface unit 106 transmits the received read instruction to the read control unit 114 .
- the interface unit 106 transmits the received data to the host apparatus (not illustrated).
- the write control unit 113 When receiving the write instruction from the interface unit 106 , the write control unit 113 extracts the data storage device address information and the write data from the received write instruction. Then, the write control unit 113 converts the extracted data storage device address information into a corresponding logical address. In addition, the write control unit 113 shifts the write destination information transmitted in the previous cluster write request for the writing unit 111 by the size of the cluster set returned from the writing unit 111 in the previous cluster write request for the writing unit 111 to generate the write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 111 includes the block number of the write destination of the cluster, the page number, and the information about the page offset.
- the write control unit 113 adds, to the information about the page offset, the size of the cluster set indicated by the information about the size of the cluster set which is returned from the writing unit 111 in the previous cluster write request for the writing unit 111 , thereby generating the write destination information.
- the write control unit 113 shifts the next write destination information by the remaining size of the cluster set to generate write destination information.
- the next write destination information includes the block number of the write destination of the cluster, the page number, and the information about the page offset which indicates the position of the head of the page.
- the write control unit 113 adds the remaining size of the cluster set to the information about the page offset to generate the write destination information.
- the write control unit 113 and the transfer control unit 115 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the write control unit 113 transmits the generated write destination information, the extracted write data, which is the cluster data to be written, and the converted logical address in which the cluster to be written to the writing unit 111 and instructs the writing unit 111 to perform a writing process.
- the write control unit 113 When a response indicating the overflow of the write destination page is received from the writing unit 111 and the physical addresses are consecutive in the same management unit managing the block 400 , the write control unit 113 gives the next write destination information to the writing unit 111 . In some cases, the write control unit 113 instructs the writing unit 111 to write the dummy data. For example, the write control unit 113 may appropriately instruct the writing unit 111 to write the dummy data even when the physical addresses are not consecutive in the same management unit managing the block 400 . When instructing the writing unit 111 to write the dummy data, the write control unit 113 ensures a new write destination page in order to write the cluster data, which is a write target, and performs the writing process again. Then, the write control unit 113 receives the size of the cluster set from the writing unit 111 .
- the write control unit 113 When receiving a write completion notice from the writing unit 111 , the write control unit 113 updates the address mapping table 160 for the cluster written to the page. Specifically, the write control unit 113 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 151 indicated by the converted logical address in the address mapping table 160 is updated to the physical address of the storage medium 151 , which is a write destination, for the cluster written to the page.
- the write control unit 113 instructs the first access unit 102 to perform a writing process such that the information about the size of the cluster set acquired from the writing unit 111 is written to the address mapping table 160 for the cluster written to the page (see FIG. 4 ).
- the read control unit 114 When receiving a read instruction from the interface unit 106 , the read control unit 114 extracts the data storage device address information from the received read instruction. The read control unit 114 converts the extracted data storage device address information to a corresponding logical address. The read control unit 114 acquires information associated with the converted logical address. Specifically, the read control unit 114 instructs the first access unit 102 to read the physical address of the storage medium 151 and the information about the size of the cluster set indicated by the converted logical address in the address mapping table 160 . Then, the read control unit 114 acquires the physical address and the information about the size of the cluster set.
- the read control unit 114 determines whether the cluster set is stored across the pages on the basis of the information about the page offset which is included in the acquired physical address and the acquired information about the size of the cluster set. When the determination result is YES (the cluster set is stored across the pages), the read control unit 114 generates information about consecutive read destination pages.
- the information about consecutive read destination pages includes the block number and the page number. Here, the block number and numbers subsequent to the page number included in the acquired physical address are newly set as the block number and the page number included in the information about consecutive read destination pages.
- the block number and numbers subsequent to the page number are newly set.
- the left page of FIG. 3B is a page with page number 34 in the block with block number 66 on the basis of the acquired physical address
- the right page of FIG. 3B is a page with page number 35 in the same block (block number 66 ) on the basis of the information about the consecutive read destination pages.
- consecutive pages in the same logical page, or pages with consecutive logical page numbers in the same logical block are as follows.
- a block with block number 5 , a block with block number 97 , a block with block number 36 , and a block with block number 104 form a logical block with logical block number 49 and the clusters are written to the logical page in this order.
- the right page of FIG. 3B is a page with page number 40 in the block with block number 97 on the basis of the information about consecutive read destination pages.
- the left page of FIG. 3B is a page with logical page number 34 in a logical block with logical block number 66
- the right page of FIG. 3B is a page with logical page number 35 in the same logical block (logical block number 66 ) on the basis of the information about consecutive read destination pages.
- the read control unit 114 instructs the reading unit 112 to perform a reading process, using the acquired physical address and the acquired information about the size of the cluster set as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the read control unit 114 adds the generated information items about consecutive read destination pages and transmits the added information to the reading unit 112 .
- the read control unit 114 When receiving a notice indicating the occurrence of the read error from the reading unit 112 , the read control unit 114 transmits data indicating the read error to the interface unit 106 .
- the first memory 152 may further store information indicating that the read error occurs when the logical address is read as one of the management information items. In this way, when a read request for the same logical address is issued again, it is possible to rapidly return the read error.
- the read control unit 114 When receiving the data read from the reading unit 112 , the read control unit 114 transmits the received data to the interface unit 106 .
- the data storage device 100 appropriately performs a transfer process in order to internally manage the data stored in the data storage device 100 .
- the transfer control unit 115 controls the following transfer process according to a predetermined rule.
- the transfer control unit 115 determines the cluster to be transferred. Specifically, the transfer control unit 115 instructs the first access unit 102 to read the management information stored in the first memory 152 and acquires the management information.
- the transfer control unit 115 determines the cluster to be transferred from the acquired management information using a predetermined method. In the first embodiment, any known method may be used to determine the cluster to be transferred.
- the transfer control unit 115 extracts the logical address of the determined cluster from the acquired management information.
- the transfer control unit 115 reads the cluster to be transferred. Specifically, the transfer control unit 115 acquires information associated with the extracted logical address. For example, the transfer control unit 115 instructs the first access unit 102 to read the physical address of the storage medium 151 and the information about the size of the cluster set indicated by the extracted logical address in the address mapping table 160 . The transfer control unit 115 acquires the physical address and the information about the size of the cluster set.
- the transfer control unit 115 determines whether the cluster set is stored across the pages on the basis of the information about the page offset in the acquired physical address and the acquired information about the size of the cluster set. When the determination result is YES (the cluster set is stored across the pages), the transfer control unit 115 generates information about consecutive read destination pages.
- the information about consecutive read destination pages includes the block number and the page number. Here, the block number and numbers subsequent to the page number included in the acquired physical address are newly set as the block number and the page number included in the information about consecutive read destination pages.
- the block number and numbers subsequent to the page number are newly set.
- the left page of FIG. 3B is the page with page number 34 in the block with block number 66 on the basis of the acquired physical address
- the right page of FIG. 3B is the page with page number 35 in the same block (block number 66 ) on the basis of the information about the consecutive read destination pages.
- consecutive pages in the same logical page, or pages with consecutive logical page numbers in the same logical block are as follows.
- a block with block number 5 , a block with block number 97 , a block with block number 36 , and a block with block number 104 form a logical block with logical block number 49 and the clusters are written to the logical page in this order.
- the right page of FIG. 3B is a page with page number 40 in the block with block number 97 on the basis of the information about consecutive read destination pages.
- the left page of FIG. 3B is a page with logical page number 34 in a logical block with logical block number 66
- the right page of FIG. 3B is a page with logical page number 35 in the same logical block (logical block number 66 ) on the basis of the information about consecutive read destination pages.
- the transfer control unit 115 instructs the reading unit 112 to perform a reading process, using the acquired physical address and the acquired information about the size of the cluster set as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the transfer control unit 115 adds the generated information items about consecutive read destination pages and transmits the added information to the reading unit 112 .
- the transfer control unit 115 When receiving a notice indicating the occurrence of the read error from the reading unit 112 , the transfer control unit 115 performs a process of maintaining consistency such that an error occurs when the cluster is read after the transfer process. For example, the transfer control unit 115 may transfer the cluster data with the read error, without correcting the read error. In addition, the transfer control unit 115 may insert information indicating that the read error occurs when the logical address is read into the management information stored in the first memory 152 such that the cluster data with the read error is not transferred.
- the transfer control unit 115 receives the data read by the reading unit 112 . Then, the transfer control unit 115 writes the cluster to be transferred. Specifically, the transfer control unit 115 shifts the write destination information transmitted in the previous cluster write request for the writing unit 111 by the size of the cluster set indicated by the information about the size of the cluster set which is returned from the writing unit 111 in the previous cluster write request for the writing unit 111 , thereby generating write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 111 includes the block number of the write destination of the cluster, the page number, and the information about the page offset.
- the transfer control unit 115 adds, to the information about the page offset, the size of the cluster set indicated by the information about the size of the cluster set which is returned from the writing unit 111 in the previous cluster write request for the writing unit 111 , thereby generating the write destination information.
- the transfer control unit 115 shifts the next write destination information by the remaining size of the cluster set to generate the write destination information.
- the next write destination information includes the block number of the write destination of the cluster, the page number, and the information about the page offset indicating the position of the head of the page.
- the transfer control unit 115 adds the remaining size of the cluster set to the information about the page offset to generate the write destination information.
- the write control unit 113 and the transfer control unit 115 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the transfer control unit 115 transmits the generated write destination information, the data which is received as the cluster data to be transferred from the reading unit 112 , and the extracted logical address to the writing unit 111 . Then, the write control unit 113 instructs the writing unit 111 to perform a writing process.
- the transfer control unit 115 When a response indicating the overflow of the write destination page is received from the writing unit 111 and the physical addresses are consecutive in the same management unit managing the block 400 , the transfer control unit 115 outputs the next write destination information to the writing unit 111 . In some cases, the transfer control unit 115 instructs the writing unit 111 to write the dummy data.
- the transfer control unit 115 may appropriately instruct the writing unit 111 to write the dummy data even when the physical addresses are not consecutive in the same management unit managing the block 400 .
- the transfer control unit 115 ensures a new write destination page in order to write the cluster data, which is a write target, and performs the writing process again.
- the transfer control unit 115 receives the size of the cluster set from the writing unit 111 .
- the transfer control unit 115 repeatedly performs the above-mentioned process until a write request for the writing unit 111 corresponds to at least one page. Since the unit of input and output for the storage medium 151 is the page 402 , the transfer control unit 115 needs to write data corresponding to at least one page in order to perform a process of updating the management information, which will be described. Therefore, the transfer process is not completed.
- the transfer control unit 115 updates the management information about the transferred cluster. Specifically, when receiving the write completion notice from the writing unit 111 , the transfer control unit 115 updates the address mapping table 160 for the cluster written to the page. The transfer control unit 115 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 151 indicated by the extracted logical address in the address mapping table 160 is updated to the physical address of the storage medium 151 , which is a write destination, for the cluster written to the page.
- the transfer control unit 115 instructs the first access unit 102 to perform a writing process such that the information about the size of the cluster set which is acquired from the writing unit 111 is stored in the address mapping table 160 for the cluster written to the page.
- the transfer control unit 115 repeatedly performs the above-mentioned process according to a predetermined method.
- the data storage device 100 may be configured such that the compression unit 104 determines whether to perform compression on the basis of, for example, the reception speed of data by the interface unit 106 . For example, when the reception speed of data by the interface unit 106 is reduced due to the compression of the compression unit 104 , the data storage device 100 performs control such that the compression unit 104 does not perform compression.
- the data storage device 100 may be configured such that, when the read control unit 114 reads data which has not been compressed by the compression unit 104 from, for example, the storage medium 151 , the decompression unit 105 does not decompress the data.
- FIG. 5 is a flowchart illustrating an example of the procedure of the writing process performed by the data storage device 100 .
- the data storage device 100 receives instructions including a write instruction and a read instruction from, for example, an external host apparatus (not illustrated).
- the interface unit 106 receives a write instruction from the host apparatus (not illustrated).
- the write instruction includes the data storage device address information and the write data.
- the read instruction includes the data storage device address information.
- the data storage device address information is address information which is provided from the data storage device 100 to the host apparatus (not illustrated).
- an LBA is an example of the data storage device address information of an HDD (Hard Disk Drive) or an SSD.
- the size of the data specified by LBA is set to, for example, 512 bytes.
- the size of the data specified by the data storage device address is generally different from the size of the data (cluster) specified by the logical address.
- the data storage device address and the logical address can be converted into each other. For example, when the data storage device address information is allocated for every 512 bytes and the logical address is allocated for every 1024 bytes, the quotient of the data storage device address information divided by 2 can be calculated to convert the data storage device address information into the logical address.
- the size of the data specified by the data storage device address is equal to the size of the cluster.
- the data storage device 100 may be configured such that the size of the data specified by the data storage device address is different from the size of the cluster.
- Step S 102 the write control unit 113 generates write destination information. Specifically, when receiving the write instruction from the interface unit 106 , the write control unit 113 extracts the data storage device address information and the write data from the received write instruction. Then, the write control unit 113 converts the extracted data storage device address information into a corresponding logical address. In addition, the write control unit 113 shifts the write destination information transmitted in the previous cluster write request for the writing unit 111 by the size of the cluster set returned from the writing unit 111 in the previous cluster write request for the writing unit 111 to generate the write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 111 includes the block number of the write destination of the cluster, the page number, and the information about the page offset.
- the write control unit 113 adds, to the information about the page offset, the size of the cluster set indicated by the information about the size of the cluster set which is returned from the writing unit 111 in the previous cluster write request for the writing unit 111 , thereby generating the write destination information.
- the write control unit 113 shifts the next write destination information by the remaining size of the cluster set to generate the write destination information.
- the next write destination information includes the block number of the write destination of the cluster, the page number, and the information about the page offset which indicates the position of the head of the page.
- the write control unit 113 adds the remaining size of the cluster set to the information about the page offset to generate the write destination information.
- the write control unit 113 and the transfer control unit 115 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the write control unit 113 transmits the generated write destination information, the extracted write data, which is the cluster data to be written, and the converted logical address in which the cluster to be written to the writing unit 111 and instructs the writing unit 111 to perform a writing process.
- the writing unit 111 receives a cluster write request from the write control unit 113 .
- the cluster write request includes write destination information, cluster data to be written, and data indicating the logical address of the cluster to be written.
- the write destination information includes the block number of the write destination of the cluster, the page number, and the information about the page offset.
- Step S 104 the writing unit 111 transmits a compression instruction to the compression unit 104 (if necessary). Specifically, the writing unit 111 extracts the cluster data to be written from the received cluster write request. The writing unit 111 transmits the extracted cluster data to be written to the compression unit 104 and instructs the compression unit 104 to compress the cluster data. When receiving an instruction to compress data, the compression unit 104 reversibly compresses the instructed data using a predetermined method and returns the compressed data to a request source which has requested the compression. Then, the writing unit 111 acquires the compressed cluster data to be written from the compression unit 104 .
- the writing unit 111 processes the extracted cluster data to be written in the same way as that in which the compressed cluster data to be written is processed, without transmitting the cluster data to the compression unit 104 (the cluster data is regarded as the compressed cluster data to be written). For example, when there is little difference between the size of data obtained by compressing the extracted cluster data to be written and the size of the cluster data before compression, the effect of compressing the cluster data is small. Therefore, it is not necessary to compress the cluster data. In this case, the writing unit 111 may not transmit the cluster data to the compression unit 104 .
- Step S 106 the writing unit 111 generates a cluster set. Specifically, the writing unit 111 extracts data indicating the logical address of the cluster to be written from the received cluster write request and generates metadata including the extracted data indicating the logical address of the cluster to be written.
- the writing unit 111 may instruct the compression unit 104 to compress the generated metadata, acquire the compressed metadata from the compression unit 104 , and replace the generated metadata with the acquired compressed metadata.
- the writing unit 111 generates error correction data on the basis of the compressed cluster data to be written and data including the generated metadata. Then, the writing unit 111 generates the cluster set including the compressed cluster data to be written, the generated metadata, and the generated error correction data.
- Step S 108 the writing unit 111 calculates the size of the generated cluster set. Then, the writing unit 111 determines whether the generated cluster set is fitted into a write destination page. Specifically, the writing unit 111 calculates the size of the generated cluster set. Then, the writing unit 111 determines whether the generated cluster set is fitted into the write destination page. Specifically, the writing unit 111 determines whether the sum of the information about the page offset included in the write destination information and the calculated size of the cluster set is within the size of the page.
- Step S 110 the second memory 153 temporarily stores a plurality of cluster sets to be written. Specifically, when the determination result in Step S 108 is YES (the cluster set is fitted into the write destination page), the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated cluster set. In addition, the writing unit 111 returns the information about the size of the cluster set to a write request source. The write control unit 113 receives the size of the cluster set from the writing unit 111 .
- Step S 112 the writing unit 111 and the write control unit 113 perform terminal processing. Specifically, when the determination result in Step S 108 is No (the cluster set is not fitted into the write destination page), the writing unit 111 returns a response indicating the overflow of the write destination page to the write request source. When the response indicating the overflow of the write destination page is received from the writing unit 111 and the physical addresses are consecutive in the same management unit managing the block 400 , the write control unit 113 gives the next write destination information to the writing unit 111 . When receiving the next write destination information from the write request source, the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated cluster set.
- the writing unit 111 returns the information about the size of the cluster set to the write request source.
- the write control unit 113 receives the size of the cluster set from the writing unit 111 . Then, the process proceeds to Step S 114 .
- the write control unit 113 may appropriately instruct the writing unit 111 to write the dummy data even when the physical addresses are not consecutive in the same management unit managing the block 400 .
- the writing unit 111 When receiving an instruction to store the dummy data from the write request source, the writing unit 111 generates dummy data corresponding to the size of the area in which the cluster set is not stored in the write destination page.
- the dummy data may have a predetermined value (for example, all zero) or a random value. Then, the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated dummy data.
- the writing unit 111 may be configured so as to generate the error correction data of the cluster set which is temporarily stored in the second memory 153 , instead of the dummy data.
- the cluster sets may be stored in the second memory 153 such that the order thereof is appropriately changed, thereby reducing the amount of dummy data stored in the second memory 153 .
- the write control unit 113 ensures a new write destination page in order to write the cluster data, which is a write target, and performs the writing process again from Step S 102 .
- Step S 114 the writing unit 111 determines whether the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of one page.
- the writing unit 111 proceeds to Step S 100 .
- the writing unit 111 proceeds to Step S 116 .
- Step S 116 the writing unit 111 writes data corresponding to one page to the storage medium 151 through the storage medium access unit 101 .
- the writing unit 111 instructs the second access unit 103 to read data corresponding to the page size from the second memory 153 .
- the writing unit 111 acquires the data corresponding to the page size.
- the writing unit 111 instructs the second access unit 103 to read data stored in the left page of FIG. 3B among the data pieces temporarily stored in the second memory 153 .
- the writing unit 111 instructs the second access unit 103 to read data corresponding to the size of the pages to which data is written in parallel from the second memory 153 .
- the writing unit 111 instructs the storage medium access unit 101 to write the data corresponding to the page size (or the size of the pages to which data is written in parallel) which is acquired through the second access unit 103 to the write destination pages (or each page to which data is written in parallel).
- the write destination page is the left page of FIG. 3B .
- the writing unit 111 instructs the storage medium access unit 101 to write the block number of the write destination of the cluster and the page number which are included in the write destination information received from the write request source.
- the storage medium access unit 101 inputs the data which is instructed to be written to the storage medium 151 and performs a writing process.
- Step S 118 the write control unit 113 updates the management information. Specifically, the writing unit 111 transmits a notice indicating that the writing of data to the write destination page has been completed to the write request source.
- the write destination page is the left page of FIG. 3B and the writing unit 111 notifies the write request source of the block number of the write destination of the cluster and the page number included in the write destination information received from the write request source.
- the write control unit 113 updates the address mapping table 160 for the cluster written to the page.
- the write control unit 113 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 151 indicated by the converted logical address in the address mapping table 160 is updated to the physical address of the storage medium 151 , which is a write destination, for the cluster written to the page.
- the write control unit 113 instructs the first access unit 102 to perform a writing process such that the information about the size of the cluster set acquired from the writing unit 111 is written to the address mapping table 160 for the cluster written to the page (see FIG. 4 ).
- FIG. 6 is a flowchart illustrating an example of the procedure of the reading process performed by the data storage device 100 .
- the data storage device 100 receives a read instruction from, for example, an external host apparatus (not illustrated).
- the interface unit 106 receives instructions including a write instruction and a read instruction from, for example, the host apparatus (not illustrated).
- the write instruction includes the data storage device address information and the write data.
- the read instruction includes the data storage device address information.
- the data storage device address information is address information which is provided from the data storage device 100 to the host apparatus (not illustrated).
- an LBA is an example of the data storage device address information of an HDD (Hard Disk Drive) or an SSD.
- the size of the data specified by LBA is set to, for example, 512 bytes.
- the size of the data specified by the data storage device address is generally different from the size of the data (cluster) specified by the logical address.
- the data storage device address and the logical address can be converted into each other. For example, when the data storage device address information is allocated for every 512 bytes and the logical address is allocated for every 1024 bytes, the quotient of the data storage device address information divided by 2 can be calculated to convert the data storage device address information into the logical address.
- the size of the data specified by the data storage device address is equal to the size of the cluster.
- the data storage device 100 may be configured such that the size of the data specified by the data storage device address is different from the size of the cluster.
- Step S 202 the read control unit 114 generates read destination information. Specifically, when receiving the read instruction from the interface unit 106 , the read control unit 114 extracts the data storage device address information from the received read instruction. Then, the read control unit 114 converts the extracted data storage device address information into a corresponding logical address. In addition, the read control unit 114 acquires information associated with the converted logical address. Specifically, the read control unit 114 instructs the first access unit 102 to read the physical address of the storage medium 151 and the information about the size of the cluster set indicated by the converted logical address in the address mapping table 160 . Then, the read control unit 114 acquires the physical address and the information about the size of the cluster set.
- the read control unit 114 determines whether the cluster set is stored across the pages on the basis of the information about the page offset which is included in the acquired physical address and the acquired information about the size of the cluster set. When the determination result is YES (the cluster set is stored across the pages), the read control unit 114 generates information about consecutive read destination pages. Specifically, the information about consecutive read destination pages includes the block number and the page number. Here, the block number and numbers subsequent to the page number included in the acquired physical address are newly set as the block number and the page number included in the information about consecutive read destination pages.
- the block number and numbers subsequent to the page number are newly set.
- the left page of FIG. 3B is a page with page number 34 in a block with block number 66 on the basis of the acquired physical address
- the right page of FIG. 3B is a page with page number 35 in the same block (block number 66 ) on the basis of the information about consecutive read destination pages.
- a block with block number 5 , a block with block number 97 , a block with block number 36 , and a block with block number 104 form a logical block with logical block number 49 and the clusters are written to the logical page in this order.
- the right page of FIG. 3B is a page with page number 40 in the block with block number 97 on the basis of the information about consecutive read destination pages.
- the left page of FIG. 3B is a page with logical page number 34 in a logical block with logical block number 66
- the right page of FIG. 3B is a page with logical page number 35 in the same logical block (logical block number 66 ) on the basis of the information about consecutive read destination pages.
- Step S 204 the read control unit 114 reads data, which is a read target, through the reading unit 112 . Specifically, the read control unit 114 instructs the reading unit 112 to perform a reading process, using the acquired physical address and the acquired information about the size of the cluster set as read destination information and the converted logical address as the logical address of the cluster to be read. When the cluster set to be read is stored across the pages, the read control unit 114 adds the generated information items about consecutive read destination pages and transmits the added information to the reading unit 112 .
- the reading unit 112 receives a request to read the cluster from a read request source.
- the read destination information includes data indicating the logical address of the cluster to be read.
- the read destination information includes the block number, the page number, the information about the page offset, and the information about the size of the cluster set.
- the reading unit 112 also receives information about consecutive read destination pages.
- the information about consecutive read destination pages includes the block number and the page number.
- the reading unit 112 extracts the block number and the page number from the acquired read destination information and instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number. Then, the reading unit 112 acquires the data of the page from the storage medium access unit 101 .
- the reading unit 112 extracts the block number and the page number from the acquired information about consecutive read destination pages and instructs the storage medium access unit 101 to read the data of the pages 402 with the extracted page numbers in the block 400 with the extracted block number. Then, the reading unit 112 further acquires the data of the pages from the storage medium access unit 101 .
- the reading unit 112 extracts the information about the page offset and the information about the size of the cluster set from the acquired read destination information.
- the reading unit 112 extracts data with the size indicated by the extracted information about the size of the cluster set, using the position indicated by the extracted information about the page offset as a read start position in the acquired page.
- the reading unit extracts data corresponding to the remaining size of the cluster set from the position of the head of the consecutive read destination pages and adds the extracted data and the previously extracted data to generate data for the cluster set.
- Step S 206 the read control unit 114 decompresses the data to be read using the decompression unit 105 and returns the decompressed data to the host apparatus. Specifically, the reading unit 112 corrects the error of the data for the cluster set and acquires the error corrected data for the cluster set. Specifically, the reading unit 112 uses data including the metadata and the cluster data as the basic data for generating error correction data in the data for the cluster set. In addition, the reading unit 112 corrects the error of the data for the cluster set and acquires the error corrected data for the cluster set.
- the reading unit 112 When error correction fails (error correction is unavailable), the reading unit 112 notifies the read request source of the occurrence of a read error.
- the read control unit 114 transmits data indicating the read error to the interface unit 106 .
- the first memory 152 may further store information indicating that the read error occurs when the logical address is read as one of the management information items.
- the interface unit 106 When receiving data (data indicating the read error) from the read control unit 114 , the interface unit 106 transmits the received data (data indicating the read error) to the host apparatus (not illustrated).
- error correction succeeds (error correction is available), the reading unit 112 extracts the cluster data from the error corrected data for the cluster set.
- the reading unit 112 transmits the extracted cluster data to the decompression unit 105 and instructs the decompression unit 105 to decompress the extracted cluster data.
- the decompression unit 105 decompresses the instructed data using a predetermined method and returns the decompressed data to the request source which has requested decompression. Then, the reading unit 112 acquires the cluster data decompressed by the decompression unit 105 .
- the reading unit 112 may process the extracted cluster data in the same way as that in which the decompressed cluster data is processed, without transmitting the extracted cluster data to the decompression unit 105 .
- the reading unit 112 processes the extracted cluster data in the same way as that in which the decompressed cluster data is processed, without transmitting the extracted cluster data to the decompression unit 105 . Then, the reading unit 112 transmits the decompressed cluster data (or the extracted cluster data which does not need to be decompressed) to the read request source.
- the read control unit 114 When receiving the data read from the reading unit 112 , the read control unit 114 transmits the received data to the interface unit 106 . When receiving the data from the read control unit 114 , the interface unit 106 transmits the received data to the host apparatus (not illustrated).
- FIG. 7 is a flowchart illustrating an example of the procedure of the transfer process performed by the data storage device 100 .
- the transfer control unit 115 controls the transfer process illustrated in FIG. 7 according to a predetermined rule.
- Step S 300 the transfer control unit 115 determines the cluster to be transferred. Specifically, the transfer control unit 115 instructs the first access unit 102 to read the management information stored in the first memory 152 and acquires the management information. The transfer control unit 115 determines the cluster to be transferred from the acquired management information using a predetermined method. In the first embodiment, any known method may be used to determine the cluster to be transferred. The transfer control unit 115 extracts the logical address of the determined cluster from the acquired management information.
- the transfer control unit 115 generates read destination information. Specifically, the transfer control unit 115 acquires information associated with the extracted logical address. For example, the transfer control unit 115 instructs the first access unit 102 to read the physical address of the storage medium 151 and the information about the size of the cluster set indicated by the extracted logical address in the address mapping table 160 . The transfer control unit 115 acquires the physical address and the information about the size of the cluster set. The transfer control unit 115 determines whether the cluster set is stored across the pages on the basis of the information about the page offset included in the acquired physical address and the acquired information about the size of the cluster set. When the determination result is YES (the cluster set is stored across the pages), the transfer control unit 115 generates information about consecutive read destination pages. The information about consecutive read destination pages includes a block number and a page number.
- the block number and numbers subsequent to the page number included in the acquired physical address are newly set as the block number and the page number included in the information about consecutive read destination pages.
- the block number and numbers subsequent to the page number are newly set.
- the left page of FIG. 3B is the page with page number 34 in the block with block number 66 on the basis of the acquired physical address
- the right page of FIG. 3B is the page with page number 35 in the same block (block number 66 ) on the basis of the information about the consecutive read destination pages.
- consecutive pages in the same logical page, or pages with consecutive logical page numbers in the same logical block are as follows.
- a block with block number 5 , a block with block number 97 , a block with block number 36 , and a block with block number 104 form a logical block with logical block number 49 and the clusters are written to the logical page in this order.
- the right page of FIG. 3B is a page with page number 40 in the block with block number 97 on the basis of the information about consecutive read destination pages.
- the left page of FIG. 3B is a page with logical page number 34 in a logical block with logical block number 66
- the right page of FIG. 3B is a page with logical page number 35 in the same logical block (logical block number 66 ) on the basis of the information about consecutive read destination pages.
- Step S 304 the transfer control unit 115 reads data, which is a read target, through the reading unit 112 .
- the transfer control unit 115 instructs the reading unit 112 to perform a reading process, using the acquired physical address and the acquired information about the size of the cluster set as read destination information and the converted logical address as the logical address of the cluster to be read.
- the transfer control unit 115 adds the generated information items about consecutive read destination pages and transmits the added information to the reading unit 112 .
- the reading unit 112 receives a cluster read request from a read request source.
- the cluster read request includes read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes the block number, the page number, the information about the page offset, and the information about the size of the cluster set.
- the reading unit 112 also receives information about consecutive read destination pages.
- the information about consecutive read destination pages includes the block number and the page number.
- the reading unit 112 extracts the block number and the page number from the acquired read destination information and instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number. Then, the reading unit 112 acquires the data of the page from the storage medium access unit 101 .
- the reading unit 112 extracts the block number and the page number from the acquired information about consecutive read destination pages and instructs the storage medium access unit 101 to read the data of the pages 402 with the extracted page numbers in the block 400 with the extracted block number. Then, the reading unit 112 further acquires the data of the pages from the storage medium access unit 101 .
- the reading unit 112 extracts the information about the page offset and the information about the size of the cluster set from the acquired read destination information.
- the reading unit 112 extracts data with the size indicated by the extracted information about the size of the cluster set, using the position indicated by the extracted information about the page offset as a read start position in the acquired page.
- the reading unit extracts data corresponding to the remaining size of the cluster set from the position of the head of the consecutive read destination pages and adds the extracted data and the previously extracted data to generate data for the cluster set.
- Step S 306 the transfer control unit 115 decompresses the data to be read using the decompression unit 105 and acquires the decompressed data.
- the reading unit 112 corrects the error of the data for the cluster set and acquires the error corrected data for the cluster set.
- the reading unit 112 uses data including metadata and cluster data as the basic data for generating error correction data in the data for the cluster set.
- the reading unit 112 corrects the error of the data for the cluster set and acquires the error corrected data for the cluster set.
- error correction fails (error correction is unavailable)
- the reading unit 112 notifies the read request source of the occurrence of a read error.
- the transfer control unit 115 when receiving a notice indicating the occurrence of the read error from the reading unit 112 , performs a process of maintaining consistency such that an error occurs when the cluster is read after the transfer process. For example, the transfer control unit 115 may transfer the cluster data with the read error, without correcting the read error. In addition, the transfer control unit 115 may insert information indicating that the read error occurs when the logical address is read into the management information stored in the first memory 152 such that the cluster data with the read error is not transferred.
- the reading unit 112 extracts cluster data from the error corrected data for the cluster set.
- the reading unit 112 transmits the extracted cluster data to the decompression unit 105 and instructs the decompression unit 105 to decompress the extracted cluster data. Then, the reading unit 112 acquires the cluster data decompressed by the decompression unit 105 .
- the reading unit 112 may process the extracted cluster data in the same way as that in which the decompressed cluster data is processed, without transmitting the extracted cluster data to the decompression unit 105 .
- the reading unit 112 processes the extracted cluster data in the same way as that in which the decompressed cluster data is processed, without transmitting the extracted cluster data to the decompression unit 105 .
- the reading unit 112 transmits the decompressed cluster data (or the extracted cluster data which does not need to be decompressed) to the read request source.
- the transfer control unit 115 receives the data to be read from the reading unit 112 .
- Step S 308 the transfer control unit 115 generates write destination information. Specifically, the transfer control unit 115 shifts the write destination information transmitted in the previous cluster write request for the writing unit 111 by the size of the cluster set indicated by the information about the size of the cluster set which is returned from the writing unit 111 in the previous cluster write request for the writing unit 111 , thereby generating write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 111 includes the block number of the write destination of the cluster, the page number, and the information about the page offset.
- the write control unit 113 adds, to the information about the page offset, the size of the cluster set indicated by the information about the size of the cluster set which is returned from the writing unit 111 in the previous cluster write request for the writing unit 111 , thereby generating the write destination information.
- the transfer control unit 115 shifts the next write destination information by the remaining size of the cluster set to generate write destination information.
- the next write destination information includes the block number of the write destination of the cluster, the page number, and the information about the page offset indicating the position of the head of the page.
- the transfer control unit 115 adds the remaining size of the cluster set to the information about the page offset to generate the write destination information.
- the write control unit 113 and the transfer control unit 115 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the transfer control unit 115 transmits the generated write destination information, the data which is received as the cluster data to be transferred from the reading unit 112 , and the extracted logical address to the writing unit 111 . Then, the write control unit 113 instructs the writing unit 111 to perform a writing process.
- the writing unit 111 receives a cluster write request from the transfer control unit 115 .
- the cluster write request includes write destination information, cluster data to be written, and data indicating the logical address of the cluster to be written.
- the write destination information includes the block number of the write destination of the cluster, the page number, and the information about the page offset.
- Step S 310 the writing unit 111 compresses the cluster data using the compression unit 104 (if necessary). Specifically, the writing unit 111 extracts the cluster data to be written from the received cluster write request. The writing unit 111 transmits the extracted cluster data to be written to the compression unit 104 and instructs the compression unit 104 to compress the cluster data. Then, the writing unit 111 acquires the cluster data to be written which is compressed by the compression unit 104 .
- the writing unit 111 processes the extracted cluster data to be written in the same way as that in which the compressed cluster data to be written is processed, without transmitting the cluster data to the compression unit 104 (the cluster data is regarded as the compressed cluster data to be written).
- Step S 312 the writing unit 111 generates a cluster set. Specifically, the writing unit 111 extracts data indicating the logical address of the cluster to be written from the received cluster write request and generates metadata including the extracted data indicating the logical address of the cluster to be written. When the metadata included in the cluster set is compressed, the writing unit 111 may instruct the compression unit 104 to compress the generated metadata, acquire the compressed metadata from the compression unit 104 , and replace the generated metadata with the acquired compressed metadata.
- the writing unit 111 generates the error correction data on the basis of the compressed cluster data to be written and data including the generated metadata. Then, the writing unit 111 generates a cluster set including the compressed cluster data to be written, the generated metadata, and the generated error correction data.
- Step S 314 the writing unit 111 determines whether the generated cluster set is fitted into the page. Specifically, the writing unit 111 calculates the size of the generated cluster set. Then, the writing unit 111 determines whether the generated cluster set is fitted into the write destination page. Specifically, the writing unit 111 determines whether the sum of the information about the page offset included in the write destination information and the calculated size of the cluster set is within the size of the page.
- Step S 316 the second memory 153 temporarily stores a plurality of cluster sets to be written. Specifically, when the determination result in Step S 314 is YES (the cluster set is fitted into the write destination page), the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated cluster set. In addition, the writing unit 111 returns the information about the size of the cluster set to the write request source. The transfer control unit 115 receives the size of the cluster set from the writing unit 111 .
- Step S 318 the writing unit 111 and the transfer control unit 115 perform terminal processing. Specifically, when the determination result in Step S 318 is No (the cluster set is not fitted into the write destination page), the writing unit 111 returns a response indicating the overflow of the write destination page to the write request source. When the response indicating the overflow of the write destination page is received from the writing unit 111 and the physical addresses are consecutive in the same management unit managing the block 400 , the transfer control unit 115 gives the next write destination information to the writing unit 111 . When receiving the next write destination information from the write request source, the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated cluster set. In addition, the writing unit 111 returns the information about the size of the cluster set to the write request source. The transfer control unit 115 receives the size of the cluster set from the writing unit 111 . Then, the process proceeds to Step S 320 .
- the transfer control unit 115 instructs the writing unit 111 to write the dummy data.
- the transfer control unit 115 may appropriately instruct the writing unit 111 to write the dummy data even when the physical addresses are not consecutive in the same management unit managing the block 400 .
- the writing unit 111 When receiving an instruction to store the dummy data from the write request source, the writing unit 111 generates dummy data corresponding to the size of the area in which the cluster set is not stored in the write destination page. Then, the writing unit 111 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated dummy data.
- the writing unit 111 may be configured so as to generate the error correction data of the cluster set which is temporarily stored in the second memory 153 , instead of the dummy data.
- the cluster sets may be stored in the second memory 153 such that the order thereof is appropriately changed, thereby reducing the amount of dummy data stored in the second memory 153 .
- the transfer control unit 115 ensures a new write destination page in order to write the cluster data, which is a write target, and performs the writing process again from Step S 308 .
- Step S 320 the writing unit 111 determines whether the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of one page.
- the writing unit 111 proceeds to Step S 300 .
- the writing unit 111 proceeds to Step S 322 . The reason is as follows.
- the transfer control unit 115 Since the unit of input and output for the storage medium 151 is the page 402 , the transfer control unit 115 needs to write data corresponding to at least one page in order to perform a process of updating the management information, which will be described. Therefore, the transfer process is not completed.
- Step S 322 the writing unit 111 writes data corresponding to one page to the storage medium 151 through the storage medium access unit 101 .
- the writing unit 111 instructs the second access unit 103 to read data corresponding to the page size from the second memory 153 .
- the writing unit 111 acquires the data corresponding to the page size.
- the writing unit 111 instructs the second access unit 103 to read data stored in the left page of FIG. 3B among the data pieces temporarily stored in the second memory 153 and acquires data corresponding to the page size.
- the writing unit 111 instructs the second access unit 103 to read data corresponding to the size of the pages to which data is written in parallel from the second memory 153 .
- the writing unit 111 instructs the storage medium access unit 101 to write the data corresponding to the page size (or the size of the pages to which data is written in parallel) which is acquired through the second access unit 103 to the write destination pages (or each page to which data is written in parallel).
- the write destination page is the left page of FIG. 3B .
- the writing unit 111 instructs the storage medium access unit 101 to write the block number of the write destination of the cluster and the page number which are included in the write destination information received from the write request source.
- Step S 324 the transfer control unit 115 updates the management information. Specifically, the writing unit 111 transmits a notice indicating that the writing of data to the write destination page has been completed to the write request source.
- the write destination page is the left page of FIG. 3B and the writing unit 111 notifies the write request source of the block number of the write destination of the cluster and the page number included in the write destination information received from the write request source.
- the transfer control unit 115 updates the address mapping table 160 for the cluster written to the page.
- the transfer control unit 115 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 151 indicated by the converted logical address in the address mapping table 160 is updated to the physical address of the storage medium 151 , which is a write destination, for the cluster written to the page.
- the transfer control unit 115 instructs the first access unit 102 to perform a writing process such that the information about the size of the cluster set acquired from the writing unit 111 is written to the address mapping table 160 for the cluster written to the page (see FIG. 4 ).
- the compression unit 104 performs the compression process. Therefore, it is possible to reduce the amount of data which is actually written to the storage medium 151 with respect to the total size of data which is requested to be written from the outside. As a result, it is possible to increase the lifespan of the data storage device 100 , as compared to a data storage device data without the compression function.
- the size of the cluster set stored in the page 402 is arranged in a predetermined unit.
- the page includes at least one set area with a size that is an integer multiple of the size of the cluster.
- the set area is divided into a plurality of predetermined division sizes.
- the write control unit adds dummy data to the compressed piece of cluster data so that a size of the compressed piece of cluster data is an integer multiple of the division size.
- the transfer control unit adds dummy data to the compressed piece of cluster data so that a size of the compressed piece of cluster data is an integer multiple of the division size.
- the page includes at least one set area with a size that is an integer multiple of the size of the cluster.
- the set area is divided into a plurality of predetermined division sizes.
- the write control unit adds dummy data to the compressed piece of cluster data so that a size of the compressed piece of cluster data is an integer multiple of the division size.
- the transfer control unit adds dummy data to the compressed piece of cluster data so that a size of the compressed piece of cluster data is an integer multiple of the division size.
- the write control unit makes a control that cancels the compression of the piece of cluster data, and writes the piece of cluster data whose compression is cancelled to the storage medium using the physical address of the write destination, and a control that writes a correspondence between the physical address of the write destination and the logical address to the storage unit.
- the read control unit makes a control that outputs the read piece of cluster data without decompressing by the external decompression unit.
- the transfer control unit makes a control that does not decompress the read piece of cluster data by the external decompression unit.
- the transfer control unit makes a control that cancels the compression of the piece of cluster data, writes the piece of cluster data whose compression is cancelled to the storage medium using the physical address of the write destination, and a control that writes a correspondence between the physical address of the transfer destination and the logical address to the storage unit.
- the storage medium includes a block including the plurality of set areas.
- the write control unit makes a control that writes the pieces of cluster data across the plurality of set areas with consecutive physical addresses, respectively, in a management unit in which the block is managed into the storage medium.
- the read control unit makes a control that reads the plurality of set areas and extracts the pieces of cluster data.
- the transfer control unit makes a control that reads the plurality of set areas and extracts the pieces of cluster data.
- the transfer control unit makes a control that writes the pieces of cluster data across the plurality of set areas with consecutive physical addresses, respectively, in the management unit in which the block is managed into the storage medium.
- the structure of the data storage device according to the second embodiment will be described.
- components having the same functions as those in the first embodiment are denoted by the same reference numerals as those in the first embodiment.
- the second embodiment differs from the first embodiment in that a read/write target is not the first memory 152 , but is a first memory 252 .
- the other components have the same functions as those in the components according to the first embodiment and are denoted by the same reference numerals as those in the first embodiment.
- FIG. 8 is a block diagram illustrating the example of the outline of the functional structure of a data storage device 200 according to the second embodiment.
- the data storage device 200 includes the storage medium access unit 101 , the first access unit 102 , the second access unit 103 , the compression unit 104 , the decompression unit 105 , the interface unit 106 , a controller 210 , a storage medium 251 , the first memory 252 , and the second memory 153 .
- the storage medium 251 has restrictions in a data storage format, as compared to the storage medium 151 ( FIG. 1 ).
- a page 402 includes a plurality of slots.
- the size of the slot is equal to, for example, the size of a cluster set (or cluster data) which is not compressed in the storage medium 151 .
- the slot is a set area which may have other sizes.
- the size of the slot may be an integer multiple of the size of the cluster set (or cluster data) which is not compressed.
- the area of the slot in which data can be stored is divided into a predetermined number of areas.
- the slot is divided into an arbitrary number of areas.
- the size of data (cluster) which can be identified by a logical address is set to 1024 bytes and the size of data (sector) which can be identified by a data storage device address is set to 512 bytes.
- the cluster is divided into two areas when the area of the slot in which data can be stored is divided by 512 bytes, which are the size of sector data.
- the storage format of the slot includes, metadata, a first data piece, a first error correction data piece, a second data piece, a second error correction data piece, a third data piece, a third error correction data piece, a fourth data piece, and a fourth error correction data piece, as illustrated in FIG. 9 .
- the basic data for generating the first error correction data piece includes the metadata and the first data piece.
- the basis data for generating the second error correction data piece includes the metadata and the second data piece.
- the basis data for generating the third error correction data piece includes the metadata and the third data piece.
- the basis data for generating the fourth error correction data piece includes the metadata and the fourth data piece.
- the size of the compressed data is an integer multiple of the division size.
- the division size corresponds to the storage areas of the first to fourth data pieces illustrated in FIG. 9 . That is, the storage areas of the metadata or the first to fourth error correction data pieces are not included.
- the size of data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is an integer multiple of the division size.
- the metadata of the cluster to be compressed may or may not be compressed.
- the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than (one time) the division size
- dummy data is stored in the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data in the area with the division size (one time), as illustrated in FIG. 10A .
- the size of data is an integer multiple of the division size.
- the dummy data may have a predetermined value (for example, all zero) or a random value.
- the dummy data may be error correction data which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data. When the dummy data is the error correction data, the effect of improving the reliability of the stored data is obtained.
- the size of data is an integer multiple of the division size, as illustrated in FIG. 10B .
- the size of data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than three times the division size, the size of data is an integer multiple of the division size, as illustrated in FIG. 10C .
- the size of data is not limited to an integer multiple of the division size, but may be other values.
- the size of data may be a multiple of 2.
- the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than four times the division size, that is, when the size of the data is equal to or less than the size of the cluster data which is not compressed
- the size of the data may be set as follows. For example, as illustrated in FIG. 10D , the size of the data may be an integer multiple of the same division size as that illustrated in FIGS. 10A to 100 .
- the cluster data may be stored in a plurality of slots of the page 402 illustrated in FIG. 9 , without being compressed.
- the advantage of the structure in which the cluster data is compressed and stored and the size is an integer multiple of the division size is that error correction data, which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data, is dummy data and the reliability of the stored data is improved.
- error correction data which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data
- the cluster is stored across adjacent slots in the same page or the physical addresses are consecutive in the range in which the units of management of the block 400 do not overlap each other (for example, in the same block 400 ), it is possible to store data across the pages. Therefore, according to the second embodiment, it is possible to improve the storage efficiency of the storage medium 251 and increase the lifespan of the data storage device 200 .
- the advantage of the structure in which the cluster data is stored without being compressed is that it is possible to reduce the time required for the compression process during, for example, the writing process or the time required for the decompression process during the reading process.
- the compressed cluster may be stored across adjacent slots in the same page illustrated in FIG. 11A , similarly to the structure in which the cluster is stored across the pages illustrated in FIG. 3B .
- the compressed cluster may be stored across the pages 402 .
- FIGS. 11A and 11B for simplicity of explanation, the storage area of the metadata or the error correction data in the slot is not illustrated.
- data indicating a special value (magic number) indicating the arrangement pattern of the compressed and stored cluster is stored in the area of the metadata in the storage format of the slot in the page 402 .
- the page 402 stores the magic number indicating eight patterns illustrated in FIG. 12 in the slot. In this way, it is possible to distinguish a case in which the cluster data is stored in the slot without being compressed from a case in which the cluster data is compressed and stored in the slot.
- the cluster stored at the head or tail of the slot is stored across adjacent slots in the same page or across the pages 402 , as illustrated in FIGS. 11A and 11B . Therefore, for the slot, the pattern indicating the situations may be added to the magic number, thereby simplifying the process.
- the first memory 252 ( FIG. 8 ) stores management information and the management information includes an address mapping table 162 .
- the address mapping table 162 is a table in which the logical address of the cluster is associated with the physical address of the storage medium 151 at which data indicated by the logical address is stored.
- the first memory 252 may be configured so as to store information derived from the information of the address mapping table 160 in advance in order to simplify various processes performed by the data storage device 200 .
- the address mapping table 162 manages the association between the logical address of the cluster and the physical address of the storage medium 251 at which data indicated by the logical address is stored.
- the address mapping table 162 is similar to the address mapping table 160 of the first memory 152 in that the logical addresses arranged in ascending order are indexes.
- the address mapping table 162 includes, as elements of the table, a set of block number information, page number information, information about the offset on a page and information about the offset on a slot, which are the physical address of the storage medium 251 .
- the address mapping table 162 includes information indicating how many times greater the size of the data is than the division size instead of information about the size of the cluster set stored in the address mapping table 160 .
- the first memory 252 is processed by the same method as that processing the first memory 152 according to the first embodiment.
- the structure of the address mapping table 162 is the same as that of the first memory 152 according to the first embodiment.
- the controller 210 ( FIG. 8 ) includes a writing unit 211 , a reading unit 212 , a write control unit 213 , a read control unit 214 , and a transfer control unit 215 .
- the writing unit 211 receives a cluster write request from the write control unit 213 (or the transfer control unit 215 ).
- the cluster write request includes write destination information, cluster data to be written, and data indicating the logical address of the cluster to be written.
- the write destination information includes the block number of the write destination of the cluster, a page number, information about a page offset (a slot offset on a page), and information about a slot offset (an offset on the slot).
- a cluster data compression process of the writing unit 211 is the same as that of the writing unit 111 . Specifically, the writing unit 211 extracts the cluster data to be written from the received cluster write request. The writing unit 211 transmits the extracted cluster data to be written to the compression unit 104 and instructs the compression unit 104 to compress the cluster data. Then, the writing unit 211 acquires the cluster data to be written which is compressed by the compression unit 104 .
- the writing unit 211 extracts data indicating the logical address of the cluster to be written from the received cluster write request and generates metadata including the extracted data indicating the logical address of the cluster to be written.
- the writing unit 211 treats the compressed metadata the same as the metadata.
- the writing unit 211 adjusts the size of the data obtained by adding the generated metadata and the compressed cluster data to an integer multiple of the division size. Specifically, when the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than an integer multiple of the division size, the writing unit 211 generates dummy data corresponding to the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data in the area with a size that is an integer multiple of the division size.
- the dummy data may have a predetermined value (for example, all zero) or a random value.
- the dummy data may be error correction data which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data. When the dummy data is the error correction data, it is possible to improve the reliability of the stored data.
- the detailed example of setting the data size is the same as that in the storage medium 251 .
- the writing unit 211 determines whether data with a size that is an integer multiple of the division size is fitted into the slot, which is a write destination. Specifically, the writing unit 211 may determine whether the sum of the information about the offset on a slot included in the write destination information and the size that is an integer multiple of the division size is within the slot.
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size.
- the writing unit 211 returns information indicating the size of the data that is an integer multiple of the division size to a write request source.
- the writing unit 211 When the determination result is NO (the sum is not fitted into the slot, which is a write destination), the writing unit 211 returns a response indicating the overflow of the slot, which is a write destination, to the write request source.
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size.
- the writing unit 211 returns the information indicating the size of the data that is an integer multiple of the division size to the write request source.
- the writing unit 211 When receiving an instruction to store the dummy data from the write request source, the writing unit 211 generates dummy data corresponding to the size of the remaining area of the slot, which is a write destination. Then, the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated dummy data.
- the writing unit 211 may be configured so as to generate the error correction data of the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 , instead of the dummy data.
- the writing unit 211 may use the error correction data of the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 to improve the reliability of data.
- the writing unit 211 may appropriately change the order of the data with a size that is an integer multiple of the division size to reduce the amount of dummy data stored, thereby improving the usage efficiency of the storage medium 251 .
- the writing unit 211 repeats the above-mentioned process until data corresponding to the slot is obtained.
- the writing unit 211 When data corresponding to one slot is obtained, the writing unit 211 generates data for a special value (magic number) indicating the arrangement pattern of the compressed and stored cluster as the metadata in the storage format of the slot. In addition, the writing unit 211 generates error correction data in the storage format of the slot. Specifically, for example, when the cluster data is divided into four parts, data which is a base for generating the first error correction data piece includes the metadata indicating the generated magic number and the first data piece, as illustrated in FIG. 9 . Data which is a base for generating the second error correction data piece includes the metadata indicating the generated magic number and the second data piece. Data which is a base for generating the third error correction data piece includes the metadata indicating the generated magic number and the third data piece. Data which is a base for generating the fourth error correction data piece includes the metadata indicating the generated magic number and the fourth data piece.
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the metadata indicating the generated magic number, the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 , and the generated error correction data are temporarily stored as data of the slot.
- the writing unit 211 may store the extracted cluster data to be written in a plurality of slots of the page 402 without transmitting the cluster data to the compression unit 104 .
- the writing unit 211 repeatedly performs the above-mentioned process until write data corresponding to one page is obtained.
- the writing unit 211 instructs the second access unit 103 to read data corresponding to the page size from the second memory 153 and acquires the data corresponding to the page size.
- the writing unit 211 instructs the storage medium access unit 101 to write, as the write destination page, the block number of the write destination of the cluster and the page number which are included in the write destination information received from the write request source.
- the writing unit 211 transmits a notice indicating that the writing of data to the write destination page has been completed to the write request source.
- the block 400 to which data which is requested to be written by the host apparatus is written is different from a transfer destination block 400 . Therefore, when the write request source is the transfer control unit 115 , the writing unit 211 performs the same process as that performed when the write request source is the write control unit 213 on another write destination page.
- the data storage device 200 may be configured such that the block 400 to which data which is requested to be written by the host apparatus is written is the same as the transfer destination block 400 . In this case, even when there is a write request from the write control unit 213 or there is a write request from the transfer control unit 215 , the writing unit 211 performs the above-mentioned process on the same write destination page.
- the reading unit 212 receives a cluster read request from the read request source.
- the cluster read request includes read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes the block number, the page number, information about the offset on a page, information about the offset on a slot, and information indicating how many times greater the size of the data is than the division size.
- the reading unit 212 also receives information about consecutive read destination slots.
- the information about consecutive read destination slots includes the block number, the page number, the information about the offset on a page, and the information about the offset on a slot.
- the reading unit 212 extracts the block number and the page number from the acquired read destination information, instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number, and acquires the data of the page.
- the reading unit 212 extracts the block number and the page number from the acquired information about consecutive read destination pages, instructs the storage medium access unit 101 to read the data of the pages 402 with the extracted page numbers in the block 400 with the extracted block number, and further acquires the data of the pages.
- the reading unit 212 can read data from the storage medium 251 using one reading process since data is read from the storage medium 251 in the unit of the pages 402 . Therefore, when the cluster is stored across adjacent slots in the same page, the reading unit 212 may perform one reading process to read data.
- the reading unit 212 extracts the information about the offset on a page, the information about the offset on a slot, and the information indicating how many times greater the size of the data is than the division size from the acquired read destination information.
- the reading unit 212 extracts the metadata of the slot, data with a size that is an integer multiple of the division size, and the error correction data of the data from the position by the extracted information about the offset on a page, the information about the offset on a slot, and the information indicating how many times greater the size of the data is than the division size among the data pieces of the acquired page.
- the reading unit extracts data corresponding to the remaining size of the cluster from the position of the head of the consecutive slots and adds the data pieces to generate data for the cluster.
- the reading unit 212 corrects the error of the extracted error correction target data using the extracted error correction data and acquires the error corrected data for the cluster set. Specifically, the reading unit 212 uses data including the metadata of the slot and the data with a size that is an integer multiple of the division size as the basic data for generating the error correction data, among the extracted data pieces. In addition, the reading unit 212 performs error correction using the error correction data among the extracted data pieces and acquires the error corrected data.
- the reading unit 212 When error correction fails (error correction is unavailable), the reading unit 212 notifies the read request source of the occurrence of a read error. When error correction succeeds (error correction is available), the reading unit 212 extracts cluster data from the error corrected data. The reading unit 212 transmits the extracted cluster data to the decompression unit 105 and instructs the decompression unit 105 to decompress the extracted cluster data. Then, the reading unit 212 acquires the decompressed cluster data.
- the reading unit 212 when the cluster data extracted from the error corrected data is not compressed, the reading unit 212 does not transmit the cluster data to the decompression unit 105 . The reading unit 212 transmits the acquired decompressed cluster data to the read request source.
- the write control unit 213 When receiving a write instruction from the interface unit 106 , the write control unit 213 extracts data storage device address information and write data from the received write instruction. Then, the write control unit 213 converts the extracted data storage device address information into a corresponding logical address. In addition, the write control unit 213 shifts the write destination information transmitted in the previous cluster write request for the writing unit 211 by the slot offset on the basis of the information how many times greater the size of the data is than the division size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 211 , thereby generating write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 211 includes the block number of the write destination of the cluster, the page number, and the information about the offset on a page, and the information about the offset on a slot. Among them, the information about the offset on a slot is added to an offset indicated by the information indicating how many times greater the size of the data is than the division size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 211 , thereby generating the write destination information.
- next write destination information When the next write destination information is given to the writing unit 211 (when the cluster is stored across the slots or the pages) in the previous cluster write request for the writing unit 211 , the next write destination information is shifted by the remaining size of the multiple of the division size to generate write destination information.
- the next write destination information includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot which indicates the position of the head of the slot.
- the write control unit 213 adds an offset corresponding to the remainder of the multiple of the division size to the information about the offset on a slot, thereby generating the write destination information.
- the write control unit 213 and the transfer control unit 215 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the write control unit 213 transmits the generated write destination information, the extracted write data which is the cluster data to be written, and the logical address which is converted as the logical address of the cluster to be written to the writing unit 211 and instructs the writing unit 211 to perform a writing process.
- the write control unit 213 gives the next write destination information to the writing unit 111 .
- the write control unit 213 instructs the writing unit 211 to write the dummy data.
- the write control unit 213 gives a dummy data storage instruction to the writing unit 211 .
- the write control unit 213 ensures a new write destination slot in order to write the cluster data, which is a write target, and performs the writing process again.
- the write control unit 213 receives the information indicating how many times greater the size of the data is than the division size from the writing unit 211 .
- the write control unit 213 updates the address mapping table 162 for the cluster written to the page. Specifically, the write control unit 213 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 162 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page.
- the write control unit 213 instructs the first access unit 102 to write the information indicating how many times greater the size of the data is than the division size which is acquired from the writing unit 211 to the address mapping table 162 for the cluster written to the page.
- the read control unit 214 When receiving a read instruction from the interface unit 106 , the read control unit 214 extracts the data storage device address information from the received read instruction. The read control unit 214 converts the extracted data storage device address information to a corresponding logical address. The read control unit 214 acquires information associated with the converted logical address. Specifically, the read control unit 214 instructs the first access unit 102 to read the physical address of the storage medium 251 and the information indicating how many times greater the size of the data is than the division size which are indicated by the converted logical address in the address mapping table 162 . Then, the read control unit 214 acquires the physical address and the information indicating how many times greater the size of the data is than the division size.
- the read control unit 214 determines whether the cluster is stored across adjacent slots in the same page or the pages on the basis of the information about the offset on a page and the information about the offset on a slot which are included in the acquired physical address, and the acquired information indicating how many times greater the size of the data is than the division size.
- the read control unit 214 generates information about consecutive read destination slots. Specifically, the information about consecutive read destination slots includes the block number, the page number, and the information about the offset on a page.
- the block number and the page number included in the acquired physical address are set as the block number and the page number and consecutive information is set to the information about the offset on a page.
- the block number included in the acquired physical address is set to the block number
- consecutive numbers are set to the page numbers
- information indicating the position of the head is set to the information about the offset on a page.
- the read control unit 214 instructs the reading unit 212 to perform a reading process, using the acquired physical address and the acquired information indicating how many times greater the size of the data is than the division size as read destination information and the converted logical address as the logical address of the cluster to be read.
- the read control unit 214 adds the generated information items about consecutive read destination slots and transmits the added information to the reading unit 212 .
- the cluster to be read is stored across adjacent slots in the same page, the cluster is read from the storage medium 251 by one reading process since data is read from the storage medium 251 in the unit of the pages 402 . Therefore, the read control unit 214 may read the information about consecutive read destination slots using one reading process.
- the read control unit 214 When receiving a notice indicating the occurrence of a read error from the reading unit 212 , the read control unit 214 transmits data indicating the read error to the interface unit 106 .
- the first memory 252 may further store information indicating that the read error occurs when the logical address is read as one of the management information items. In this way, when a read request for the same logical address is issued again, it is possible to rapidly return the read error.
- the read control unit 214 When receiving the data read by the reading unit 212 , the read control unit 214 transmits the received data to the interface unit 106 .
- the transfer control unit 215 controls the following transfer process according to a predetermined rule. First, the transfer control unit 215 determines the cluster to be transferred. Specifically, the transfer control unit 215 instructs the first access unit 102 to read the management information from the first memory 252 and acquires the management information. The transfer control unit 215 determines the cluster to be transferred from the acquired management information using a predetermined method. Any known method may be used to determine the cluster to be transferred.
- the transfer control unit 215 extracts the logical address of the determined cluster from the acquired management information.
- the transfer control unit 215 reads data for the cluster to be transferred. Specifically, the transfer control unit 215 acquires information associated with the extracted logical address.
- the transfer control unit 215 instructs the first access unit 102 to read the physical address of the storage medium 151 and the information indicating how many times greater the size of the data is than the division size which are indicated by the extracted logical address in the address mapping table 162 . Then, the transfer control unit 215 acquires the physical address and the information indicating how many times greater the size of the data is than the division size.
- the transfer control unit 215 determines whether the cluster is stored across adjacent slots in the same page or across the pages, on the basis of the information about the offset on a page and the information about the offset on a slot included in the acquired physical address, and the acquired information indicating how many times greater the size of the data is than the division size.
- the transfer control unit 215 generates information about consecutive read destination slots. Specifically, the information about consecutive read destination slots includes the block number, the page number, and information about the offset on a page.
- the block number included in the acquired physical address is set to the block number.
- the page number included in the acquired physical address is set to the page number.
- Consecutive information is set to the information about the offset on a page.
- the block number included in the acquired physical address is set to the block number.
- Consecutive numbers are set to the page numbers, and information indicating the position of the head is set to the information about the offset on a page.
- the transfer control unit 215 instructs the reading unit 212 to perform a reading process, using the acquired physical address and the acquired information indicating how many times greater the size of the data is than the division size as read destination information and the converted logical address as the logical address of the cluster to be read.
- the transfer control unit 215 adds the generated information items about consecutive read destination slots and transmits the added information to the reading unit 212 .
- the cluster to be read is stored across adjacent slots in the same page, the cluster is read from the storage medium 251 by one reading process since data is read from the storage medium 251 in the unit of the page 402 . Therefore, when the cluster to be read is stored across adjacent slots in the same page, the cluster may be read by one reading process.
- the transfer control unit 215 When receiving a notice indicating the occurrence of the read error from the reading unit 212 , the transfer control unit 215 performs a process of maintaining consistency such that an error occurs when the cluster is read after the transfer process. For example, the transfer control unit 215 may transfer the cluster data with the read error, without correcting the read error. In addition, the transfer control unit 215 may insert information indicating that the read error occurs when the logical address is read into the management information stored in the first memory 252 such that the cluster data with the read error is not transferred.
- the transfer control unit 215 receives the data read from the reading unit 212 .
- the transfer control unit 215 writes the cluster to be transferred. Specifically, the transfer control unit 215 shifts the write destination information transmitted in the previous cluster write request for the writing unit 211 by the slot offset indicated by the information indicating how many times greater the size of the data is than the division size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 111 , thereby generating write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 211 includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot.
- the transfer control unit 215 adds, to the information about the offset on a slot, the offset indicated by the information indicating how many times greater the size of the data is than the division size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 211 , thereby generating the write destination information.
- the transfer control unit 215 shifts the next write destination information by the remainder of the multiple of the division size to generate write destination information.
- the next write destination information includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot which indicates the position of the head of the slot.
- the writing unit 211 adds an offset corresponding to the remainder of the multiple of the division size to the information about the offset on a slot to generate the write destination information.
- the write control unit 213 and the transfer control unit 215 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the transfer control unit 215 transmits the generated write destination information, the write data which is extracted as the cluster data to be written, and the converted logical address as the logical address of the cluster to be written to the writing unit 211 and instructs the writing unit 211 to perform a writing process.
- the transfer control unit 215 When a response indicating the overflow of the slot, which is a write destination, is received from the writing unit 211 and the cluster is stored across adjacent slots in the same page or the physical addresses are consecutive in the same management unit managing the block 400 , the transfer control unit 215 gives the next write destination information to the writing unit 211 .
- the transfer control unit 215 may give a dummy data storage instruction to the writing unit 211 in order to make data sizes equal to each other. For example, when the cluster is written to adjacent slots in the same page or the physical addresses are consecutive in the same management unit managing the block 400 , the transfer control unit 215 gives the dummy data storage instruction to the writing unit 211 .
- the transfer control unit 215 When the dummy data storage instruction is given to the writing unit 211 , the transfer control unit 215 ensures a new write destination slot in order to write the cluster, which is a write target, and starts the writing process again. Then, the transfer control unit 215 receives the information indicating how many times greater the size of the data is than the division size from the writing unit 211 .
- the transfer control unit 215 repeatedly performs the above-mentioned process until the write request for the writing unit 211 corresponds to at least one page as a result of the comparison of the write data.
- the reason is as follows.
- the unit of input and output for the storage medium 251 is the page 402 . Therefore, when data corresponding to at least one page is not written, a management information update process, which will be described below, is not performed and the transfer process is not completed.
- the transfer control unit 215 updates the management information about the transferred cluster. Specifically, when receiving a write completion notice from the writing unit 211 , the transfer control unit 215 updates the address mapping table 162 for the cluster written to the page. The transfer control unit 215 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 162 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page.
- the transfer control unit 215 instructs the first access unit 102 to write the information indicating how many times greater the size of the data is than the division size which is acquired from the writing unit 211 to the address mapping table 162 for the cluster written to the page.
- the transfer control unit 215 repeatedly performs the above-mentioned process according to a predetermined method.
- FIG. 14 is a flowchart illustrating an example of the procedure of the writing process performed by the data storage device 200 .
- the data storage device 200 receives a write instruction from, for example, an external host apparatus (not illustrated).
- the interface unit 106 receives instructions including a write instruction and a read instruction from the host apparatus (not illustrated).
- the write instruction includes the data storage device address information and the write data.
- the read instruction includes the data storage device address information.
- the data storage device address information is address information which is provided from the data storage device 200 to the host apparatus (not illustrated).
- an LBA is an example of the data storage device address information of an HDD (Hard Disk Drive) or an SSD.
- the size of the data specified by LBA is set to, for example, 512 bytes.
- the size of the data specified by the data storage device address is generally different from the size of the data (cluster) specified by the logical address.
- the data storage device address and the logical address can be converted into each other. For example, when the data storage device address information is allocated for every 512 bytes and the logical address is allocated for every 1024 bytes, the quotient of the data storage device address information divided by 2 can be calculated to convert the data storage device address information into the logical address.
- the size of the data specified by the data storage device address is equal to the size of the cluster.
- the data storage device 200 may be configured such that the size of the data specified by the data storage device address is different from the size of the cluster.
- the interface unit 106 transmits the received write instruction to the write control unit 213 .
- Step S 402 the write control unit 113 generates write destination information. Specifically, when receiving the write instruction from the interface unit 106 , the write control unit 213 extracts the data storage device address information and the write data from the received write instruction. Then, the write control unit 213 converts the extracted data storage device address information into a corresponding logical address. In addition, the write control unit 213 shifts the write destination information transmitted in the previous cluster write request for the writing unit 211 by the slot offset indicated by the information indicating how many times greater the size of the data is than the division size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 211 to generate write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 211 includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot.
- the write control unit 213 adds, to the information about the offset on a slot, the offset indicated by the information indicating how many times greater the size of the data is than the division size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 211 , thereby generating the write destination information.
- the write control unit 213 shifts the next write destination information by the remainder of the multiple of the division size to generate the write destination information.
- the next write destination information includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot which indicates the position of the head of the slot.
- the writing unit 211 adds an offset corresponding to the remainder of the multiple of the division size to the information about the offset on a slot to generate the write destination information.
- the write control unit 213 and the transfer control unit 215 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the write control unit 213 transmits the generated write destination information, the write data extracted as the cluster data to be written, and the logical address which is converted as the logical address of the cluster to be written to the writing unit 211 and instructs the writing unit 211 to perform a writing process.
- the writing unit 211 receives a cluster write request from the write control unit 213 .
- the cluster write request includes the write destination information, the cluster data to be written, and data indicating the logical address of the cluster to be written.
- the write destination information includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot.
- Step S 404 the writing unit 211 transmits a compression instruction to the compression unit 104 (if necessary). Specifically, the writing unit 211 performs the same cluster data compression process as the writing unit 111 . Specifically, the writing unit 211 extracts the cluster data to be written from the received cluster write request. The writing unit 211 transmits the extracted cluster data to be written to the compression unit 104 and instructs the compression unit 104 to compress the cluster data. Then, the writing unit 211 acquires the cluster data to be written which is compressed by the compression unit 104 .
- the writing unit 211 extracts data indicating the logical address of the cluster to be written from the received cluster write request and generates metadata including the extracted data indicating the logical address of the cluster to be written.
- the writing unit 211 treats the compressed metadata the same as the metadata.
- Step S 406 the writing unit 211 adjusts the size of the cluster data to an integer multiple of the division size. Specifically, the writing unit 211 adjusts the size of data obtained by adding the generated metadata and the compressed cluster data to an integer multiple of the division size.
- the writing unit 211 when the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than an integer multiple of the division size, the writing unit 211 generates dummy data corresponding to the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data in the area with a size that is an integer multiple of the division size.
- the dummy data may have a predetermined value (for example, all zero) or a random value.
- the dummy data may be error correction data which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data. When the dummy data is the error correction data, it is possible to improve the reliability of the stored data.
- the cluster data is divided into four parts.
- the writing unit 211 stores the dummy data in the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data in the area with the division size (one time), as illustrated in FIG. 10A .
- the size of the data is an integer multiple of the division size.
- the size of the data is an integer multiple of the division size, as illustrated in FIG. 10B .
- the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than three times the division size, the size of the data is an integer multiple of the division size, as illustrated in FIG. 10C .
- the size of the data is not limited to an integer multiple of the division size, but it may be other values. For example, the size of the data may be a multiple of 2.
- the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than four times the division size, that is, when the size of the data is equal to or less than the size of the cluster data which is not compressed
- the size of the data may be set as follows. For example, as illustrated in FIG. 10D , the size of the data may be an integer multiple of the same division size as that illustrated in FIGS. 10A to 10C .
- the cluster data may be stored in a plurality of slots of the page 402 illustrated in FIG. 9 , without being compressed.
- the advantage of the structure in which the cluster data is compressed and stored and the size is an integer multiple of the division size is that error correction data, which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data, is dummy data and the reliability of the stored data is improved.
- error correction data which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data
- the reliability of the stored data is improved.
- the advantage of the structure in which the cluster data is stored without being compressed is that it is possible to reduce the time required for the compression process during, for example, the writing process or the time required for the decompression process during the reading process.
- the compressed cluster may be stored across adjacent slots in the same page illustrated in FIG. 11A , similarly to the structure in which the cluster is stored across the pages illustrated in FIG. 3B .
- the compressed cluster may be stored across the pages 402 .
- FIGS. 11A and 11B for simplicity of explanation, the storage area of the metadata or the error correction data in the slot is not illustrated.
- Step S 408 the writing unit 211 determines whether the generated cluster set is fitted into the slot. Specifically, the writing unit 211 determines whether data with a size that is an integer multiple of the division size is fitted into the slot, which is a write destination. Specifically, the writing unit 211 determines whether the sum of the information about the offset on a slot included in the write destination information and the size that is an integer multiple of the division size is fitted into the slot.
- Step S 410 the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size.
- the determination result in Step S 408 is YES (the data is fitted into the slot, which is a write destination)
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size.
- the writing unit 211 returns the information indicating how many times greater the data with a size that is an integer multiple of the division size is than the division size to the write request source.
- the write control unit 213 receives the information indicating how many times greater the data is than the division size from the writing unit 211 .
- Step S 412 the writing unit 211 and the write control unit 213 perform terminal processing. Specifically, when the determination result in Step S 408 is NO (the data is not fitted into the slot, which is a write destination), the writing unit 211 returns a response indicating the overflow of the slot, which is a write destination, to the write request source. When the response indicating the overflow of the slot, which is a write destination, is received from the writing unit 211 and the cluster is stored across adjacent slots in the same page or the physical addresses are consecutive in the same management unit managing the block 400 , the write control unit 213 gives the next write destination information to the writing unit 211 .
- the writing unit 211 When receiving the next write destination information from the write request source, the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size. In addition, the writing unit 211 returns the information indicating how many times greater the data with a size that is an integer multiple of the division size is than the division size to the write request source. The write control unit 213 receives the information indicating how many times greater the data is than the division size from the writing unit 211 . Then, the write control unit 213 proceeds to Step S 414 .
- the write control unit 213 may give a dummy data storage instruction to the writing unit 211 .
- the write control unit 213 gives the dummy data storage instruction to the writing unit 211 when the cluster is stored across adjacent slots in the same page or the physical addresses are not consecutive in the range in which the units of management of the block 400 do not overlap each other.
- the writing unit 211 When receiving the dummy data storage instruction from the write request source, the writing unit 211 generates dummy data corresponding to the size of the remaining area of the slot, which is a write destination.
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated dummy data.
- the writing unit 211 may generate the error correction data of the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 , instead of the dummy data.
- the writing unit 211 may use the error correction data of the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 to improve the reliability of data.
- the writing unit 211 may appropriately change the order of the data with a size that is an integer multiple of the division size to reduce the amount of dummy data stored, thereby improving the usage efficiency of the storage medium 251 .
- the write control unit 213 When instructing the writing unit 211 to write the dummy data, the write control unit 213 ensures a new write destination slot in order to write the cluster data, which is a write target, and performs the writing process again from Step S 402 .
- Step S 414 the writing unit 211 determines whether the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of one slot. When the total size of the data temporarily stored in the second memory 153 is not equal to or more than the size of one slot (No in Step S 414 ), the writing unit 211 proceeds to Step S 400 . When the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of one slot (Yes in Step S 414 ), the writing unit 211 proceeds to Step S 416 .
- Step S 416 the writing unit 211 generates slot data. Specifically, when data corresponding to one slot is obtained, the writing unit 211 generates data for a special value (magic number) indicating the arrangement pattern of the compressed and stored cluster as the metadata in the storage format of the slot. In addition, the writing unit 211 generates the error correction data in the storage format of the slot.
- a special value magic number
- data which is a base for generating the first error correction data piece includes the metadata indicating the generated magic number and the first data piece, as illustrated in FIG. 9 .
- Data which is a base for generating the second error correction data piece includes the metadata indicating the generated magic number and the second data piece.
- Data which is a base for generating the third error correction data piece includes the metadata indicating the generated magic number and the third data piece.
- Data which is a base for generating the fourth error correction data piece includes the metadata indicating the generated magic number and the fourth data piece.
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the metadata indicating the generated magic number, the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 , and the generated error correction data are temporarily stored as data of the slot.
- the writing unit 211 may store the extracted cluster data to be written in a plurality of slots of the page 402 without transmitting the cluster data to the compression unit 104 .
- Step S 418 the writing unit 211 determines whether the size of the data to be written is equal to or more than one page. When the size of the data to be written is not equal to or more than one page (No in Step S 418 ), the writing unit 211 proceeds to Step S 400 . When the size of the data to be written is equal to or more than one page (Yes in Step S 418 ), the writing unit 211 proceeds to Step S 420 .
- Step S 420 the writing unit 211 writes data corresponding to one page. Specifically, when the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of the page 402 , the writing unit 211 instructs the second access unit 103 to read data corresponding to the page size among the data pieces temporarily stored in the second memory 153 and acquires the data corresponding to the page size.
- the writing unit 211 instructs the storage medium access unit 101 to write the block number of the write destination of the cluster and the page number which are included in the write destination information received from the write request source as the write destination page.
- Step S 422 the write control unit 213 updates the management information. Specifically, the writing unit 211 transmits a notice indicating that the writing of data to the write destination page has been completed to the write request source. When receiving the write completion notice from the writing unit 211 , the write control unit 213 updates the address mapping table 162 for the cluster written to the page. The write control unit 213 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 162 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page. In addition, the write control unit 213 instructs the first access unit 102 to write the information indicating how many times greater the size of the data is than the division size which is acquired from the writing unit 211 to the address mapping table 162 for the cluster written to the page.
- FIG. 15 is a flowchart illustrating an example of the procedure of the reading process performed by the data storage device 200 .
- the data storage device 200 receives a read instruction from, for example, an external host apparatus (not illustrated).
- the interface unit 106 receives instructions including a write instruction and a read instruction from, for example, the host apparatus (not illustrated).
- the write instruction includes the data storage device address information and the write data.
- the read instruction includes the data storage device address information.
- the data storage device address information is address information which is provided from the data storage device 200 to the host apparatus (not illustrated).
- an LBA is an example of the data storage device address information of an HDD (Hard Disk Drive) or an SSD.
- the size of the data specified by LBA is set to, for example, 512 bytes.
- the size of the data specified by the data storage device address is generally different from the size of the data (cluster) specified by the logical address.
- the data storage device address and the logical address can be converted into each other. For example, when the data storage device address information is allocated for every 512 bytes and the logical address is allocated for every 1024 bytes, the quotient of the data storage device address information divided by 2 can be calculated to convert the data storage device address information into the logical address.
- the size of the data specified by the data storage device address is equal to the size of the cluster.
- the data storage device 200 may be configured such that the size of the data specified by the data storage device address is different from the size of the cluster.
- the interface unit 106 transmits the received read instruction to the read control unit 214 .
- Step S 502 the read control unit 214 generates read destination information. Specifically, when receiving the read instruction from the interface unit 106 , the read control unit 214 extracts the data storage device address information from the received read instruction. Then, the read control unit 214 converts the extracted data storage device address information into a corresponding logical address. In addition, the read control unit 214 acquires information associated with the converted logical address. Specifically, the read control unit 214 instructs the first access unit 102 to read the physical address of the storage medium 251 and the information indicating how many times greater the size of the data is than the division size which are indicated by the converted logical address in the address mapping table 162 .
- the read control unit 214 acquires the physical address and the information indicating how many times greater the size of the data is than the division size.
- the read control unit 214 determines whether the cluster is stored across adjacent slots in the same pages or the pages on the basis of the information about the offset on a page and the information about the offset on a slot which are included in the acquired physical address and the acquired information indicating how many times greater the size of the data is than the division size.
- the determination result is YES (the cluster is stored across adjacent slots in the same pages or the pages)
- the read control unit 214 generates information about consecutive read destination slots.
- the information about consecutive read destination slots includes the block number, the page number, and the information about the offset on a page.
- the block number and numbers subsequent to the page number included in the acquired physical address are newly set as the block number and the page number included in the information about consecutive read destination pages.
- the block number and the page number included in the acquired physical address are set as the block number and the page number included in the information about consecutive read destination pages and consecutive information is set to the information about the offset on a page.
- the block number included in the acquired physical address is set to the block number
- consecutive numbers are set to the page numbers
- information indicating the position of the head is set to the information about the offset on a page.
- Step S 504 the read control unit 214 reads data, which is a read target. Specifically, the read control unit 214 instructs the reading unit 212 to perform a reading process, using the acquired physical address and the acquired information indicating how many times greater the size of the data is than the division size as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the read control unit 214 adds the generated information items about consecutive read destination slots and transmits the added information to the reading unit 212 .
- the cluster which is a read target, may be read from the storage medium 251 by one reading process since data is read from the storage medium 251 in the unit of the pages 402 .
- the reading unit 212 receives a cluster read request from the read request source.
- the cluster read request includes read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes the block number, the page number, the information about the offset on a page, the information about the offset on a slot, and the information indicating how many times greater the size of the data is than the division size.
- the reading unit 212 also receives information about consecutive read destination slots.
- the information about consecutive read destination slots includes the block number, the page number, and the information about the offset on a page.
- the reading unit 212 extracts the block number and the page number from the acquired read destination information and instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number, and acquires the data of the page.
- the reading unit 212 extracts the block number and the page number from the acquired information about consecutive read destination pages, instructs the storage medium access unit 101 to read the data of the pages 402 with the extracted page numbers in the block 400 with the extracted block number, and further acquires the data of the pages.
- the reading unit 212 can read the cluster from the storage medium 251 using one reading process since data is read from the storage medium 251 in the unit of the pages 402 . Therefore, when the cluster is stored across adjacent slots in the same page, the reading unit 212 may read the cluster using only one reading process.
- the reading unit 212 extracts the information about the offset on a page, the information about the offset on a slot, and the information indicating how many times greater than the size of the data is than the division size from the acquired read destination information.
- the reading unit 212 extracts the metadata of the slot, data with a size that is an integer multiple of the division size, and the error correction data of the data from the position indicated by the extracted information about the offset on a page, the extracted information about the offset on a slot, and the extracted information indicating how many times greater than the size of the data is than the division size among the data pieces of the acquired page.
- the reading unit extracts the remaining data for the cluster from the position of the head of the consecutive slots and adds the data pieces to generate data for the cluster.
- Step S 506 the reading unit 212 decompresses the data to be read and returns the decompressed data to the host apparatus. Specifically, the reading unit 212 corrects the error of the extracted error correction target data using the extracted error correction data and acquires the error corrected data.
- the reading unit 212 uses data including the metadata of the slot and the data with a size that is an integer multiple of the division size as the basic data for generating the error correction data, among the extracted data pieces. In addition, the reading unit 212 performs error correction using the error correction data among the extracted data pieces and acquires the error corrected data.
- the reading unit 212 When error correction fails (error correction is unavailable), the reading unit 212 notifies the read request source of the occurrence of a read error. When receiving a notice indicating the occurrence of the read error from the reading unit 212 , the read control unit 214 transmits data indicating the read error to the interface unit 106 .
- the first memory 252 may further store information indicating that the read error occurs when the logical address is read as one of the management information items. In this way, when a read request for the same logical address is issued again, it is possible to rapidly return the read error.
- the interface unit 106 When receiving data (data indicating the read error) from the read control unit 214 , the interface unit 106 transmits the received data (data indicating the read error) to the host apparatus (not illustrated). When error correction succeeds (error correction is available), the reading unit 212 extracts cluster data from the error corrected data. The reading unit 212 transmits the extracted cluster data to the decompression unit 105 and instructs the decompression unit 105 to decompress the extracted cluster data. The reading unit 212 acquires the decompressed cluster data.
- the reading unit 212 when the cluster data extracted from the error corrected data is not compressed, the reading unit 212 does not transmit the cluster data to the decompression unit 105 .
- the reading unit 212 transmits the acquired decompressed cluster data to the read request source.
- the read control unit 214 When receiving the data read from the reading unit 212 , the read control unit 214 transmits the received data to the interface unit 106 .
- the interface unit 106 When receiving the data from the read control unit 114 , the interface unit 106 transmits the received data to the host apparatus (not illustrated).
- FIG. 16 is a flowchart illustrating an example of the procedure of the transfer process performed by the data storage device 200 .
- the transfer control unit 215 controls the transfer process illustrated in FIG. 16 according to a predetermined rule.
- Step S 600 the transfer control unit 115 determines the cluster to be transferred. Specifically, the transfer control unit 215 instructs the first access unit 102 to read the management information from the first memory 252 and acquires the management information. The transfer control unit 215 determines the cluster to be transferred from the acquired management information using a predetermined method. In the second embodiment, any known method may be used to determine the cluster to be transferred. The transfer control unit 215 extracts the logical address of the determined cluster from the acquired management information.
- Step S 602 the transfer control unit 215 generates read destination information. Specifically, the transfer control unit 215 acquires information associated with the extracted logical address. For example, the transfer control unit 215 instructs the first access unit 102 to read the physical address of the storage medium 251 and the information indicating how many times greater the size of the data is than the division size which are indicated by the extracted logical address in the address mapping table 162 , and acquires the physical address and the information indicating how many times greater the size of the data is than the division size.
- the transfer control unit 215 determines whether the cluster is stored across adjacent slots in the same page or the pages on the basis of the information about the offset on a page and the information about the offset on a slot included in the acquired physical address and the acquired information indicating how many times greater the size of the data is than the division size.
- the transfer control unit 215 generates information about consecutive read destination slots. Specifically, the information about consecutive read destination slots includes the block number, the page number, and the information about the offset on a page.
- the block number included in the acquired physical address is set to the block number.
- the page number included in the acquired physical address is set to the page number.
- Consecutive information is set to the information about the offset on a page.
- the block number included in the acquired physical address is set to the block number.
- Consecutive numbers are set to the page numbers, and information indicating the position of the head is set to the information about the offset on a page.
- Step S 604 the transfer control unit 215 reads data, which is a read target. Specifically, the transfer control unit 215 instructs the reading unit 212 to perform a reading process, using the acquired physical address and the acquired information indicating how many times greater the size of the data is than the division size as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the transfer control unit 215 adds the generated information items about consecutive read destination slots and transmits the added information to the reading unit 212 .
- the cluster is read from the storage medium 251 by one reading process since data is read from the storage medium 251 in the unit of the pages 402 . Therefore, when the cluster to be read is stored across adjacent slots in the same page, the cluster may be read by one reading process.
- the reading unit 212 receives a cluster read request from the read request source.
- the cluster read request includes the read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes the block number, the page number, the information about the offset on a page, the information about the offset on a slot, and the information indicating how many times greater the size of the data is than the division size.
- the reading unit 212 also receives information about consecutive read destination slots.
- the information about consecutive read destination slots includes the block number, the page number, and the information about the offset on a page.
- the reading unit 212 extracts the block number and the page number from the acquired read destination information, instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number and acquires the data of the page.
- the reading unit 212 extracts the block number and the page number from the acquired information about consecutive read destination pages, instructs the storage medium access unit 101 to read the data of the pages 402 with the extracted page numbers in the block 400 with the extracted block number, and further acquires the data of the pages.
- the reading unit 212 can read data from the storage medium 251 using one reading process since data is read from the storage medium 251 in the unit of the pages 402 . Therefore, when the cluster is stored across adjacent slots in the same page, the reading unit 212 may perform one reading process to read data.
- the reading unit 212 extracts the information about the offset on a page, the information about the offset on a slot, and the information indicating how many times greater the size of the data is than the division size from the acquired read destination information.
- the reading unit 212 extracts the metadata of the slot, data with a size that is an integer multiple of the division size, and the error correction data of the data from the position by the extracted information about the offset on a page, the extracted information about the offset on a slot, and the extracted information indicating how many times greater the size of the data is than the division size among the data pieces of the acquired page.
- the reading unit extracts the remaining data for the cluster from the position of the head of the consecutive slots and adds the data pieces to generate data for the cluster.
- Step S 606 the transfer control unit 215 decompresses the read data and acquires the decompressed data. Specifically, the reading unit 212 corrects the error of the extracted error correction target data using the extracted error correction data and acquires the error corrected data. Specifically, the reading unit 212 uses data including the metadata of the slot and the data with a size that is an integer multiple of the division size as the basic data for generating the error correction data, among the extracted data pieces, and performs error correction using the error correction data among the extracted data pieces to acquire the error corrected data. When error correction fails (error correction is unavailable), the reading unit 212 notifies the read request source of the occurrence of a read error.
- the transfer control unit 215 When receiving a notice indicating the occurrence of the read error from the reading unit 212 , the transfer control unit 215 performs a process of maintaining consistency such that an error occurs when the cluster is read after the transfer process. For example, the transfer control unit 215 may transfer the cluster data with the read error, without correcting the read error. In addition, the transfer control unit 215 may insert information indicating that the read error occurs when the logical address is read into the management information stored in the first memory 252 such that the cluster data with the read error is not transferred. When error correction succeeds (error correction is available), the reading unit 212 extracts the cluster data from the error corrected data. The reading unit 212 transmits the extracted cluster data to the decompression unit 105 , instructs the decompression unit 105 to decompress the extracted cluster data, and acquires the decompressed cluster data.
- the reading unit 212 when the cluster data extracted from the error corrected data is not compressed, the reading unit 212 does not transmit the cluster data to the decompression unit 105 .
- the reading unit 212 transmits the acquired decompressed cluster data to the read request source.
- the transfer control unit 215 receives the data read from the reading unit 212 .
- Step S 608 the transfer control unit 215 generates write destination information. Specifically, the transfer control unit 215 shifts the write destination information transmitted in the previous cluster write request for the writing unit 211 by the slot offset indicated by the information indicating how many times greater the size of the data is than the divides size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 211 , thereby generating the write destination information.
- the write destination information transmitted in the previous cluster write request for the writing unit 211 includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot.
- the transfer control unit 215 adds, to the information about the offset on a slot, the offset indicated by the information indicating how many times greater the size of the data is than the divides size which is returned from the writing unit 211 in the previous cluster write request for the writing unit 211 , thereby generating the write destination information.
- the transfer control unit 215 shifts the next write destination information by the remainder of the offset indicated by the information indicating how many times greater the size of the data is than the divides size.
- the next write destination information includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the off on the slot indicating the position of the head of the page.
- the writing unit 211 adds, to the information about the offset on a slot, the remainder of the offset indicated by the information indicating how many times greater the size of the data is than the divides size, thereby generating the write destination information.
- the write control unit 213 and the transfer control unit 215 perform a process in cooperation with each other such that the generated write destination information items do not overlap each other.
- the transfer control unit 215 transmits the generated write destination information, the write data extracted as the cluster data to be written, and the logical address which is converted as the logical address of the cluster to be written to the writing unit 211 and instructs the writing unit 211 to perform a writing process.
- the writing unit 211 receives a cluster write request from the transfer control unit 215 .
- the cluster write request includes the write destination information, the cluster data to be written, and data indicating the logical address of the cluster to be written.
- the write destination information includes the block number of the write destination of the cluster, the page number, the information about the offset on a page, and the information about the offset on a slot.
- Step S 610 the writing unit 211 compresses the cluster data using the compression unit 104 (if necessary).
- the cluster data compression process of the writing unit 211 is the same as that of the writing unit 111 .
- the writing unit 211 extracts the cluster data to be written from the received cluster write request.
- the writing unit 211 transmits the extracted cluster data to be written to the compression unit 104 and instructs the compression unit 104 to compress the cluster data. Then, the writing unit 211 acquires the cluster data to be written which is compressed by the compression unit 104 .
- the writing unit 211 extracts data indicating the logical address of the cluster to be written from the received cluster write request and generates metadata including the extracted data indicating the logical address of the cluster to be written.
- the writing unit 211 treats the compressed metadata the same as the metadata.
- Step S 612 the writing unit 211 adjusts the size of the data to be equal to an integer multiple of the division size. Specifically, the writing unit 211 adjusts the size of the data obtained by adding the generated metadata and the acquired compressed cluster data to be equal to an integer multiple of the division size.
- the writing unit 211 when the size of data obtained by adding the metadata to be compressed and the compressed cluster data is equal to or less than an integer multiple of the division size, the writing unit 211 generates dummy data corresponding to the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data in the area with a size that is an integer multiple of the division size.
- the dummy data may have a predetermined value (for example, all zero) or a random value.
- the dummy data may be the error correction data which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data. When the dummy data is the error correction data, it is possible to improve the reliability of the stored data.
- the cluster data is divided into four parts. Therefore, when the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than (one time) the division size, the dummy data is stored in the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data in the area with the division size (one time), as illustrated in FIG. 10A . In this way, the size of the data is an integer multiple of the division size.
- the size of the data is an integer multiple of the division size, as illustrated in FIG. 10B .
- the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than three times the division size, the size of the data is an integer multiple of the division size, as illustrated in FIG. 10C .
- the size of the data is not limited to an integer multiple of the division size, but it may be other values. For example, the size of the data may be a multiple of 2.
- the size of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than four times the division size, that is, when the size of the data is equal to or less than the size of the cluster data which is not compressed
- the size of the data may be set as follows. For example, as illustrated in FIG. 10D , the size of the data may be an integer multiple of the same division size as that illustrated in FIGS. 10A to 10C .
- the cluster data may be stored in a plurality of slots of the page 402 illustrated in FIG. 9 , without being compressed.
- the advantage of the structure in which the cluster data is compressed and stored and the size is an integer multiple of the division size is that the error correction data, which is generated on the basis of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data, is dummy data and the reliability of the stored data is improved.
- the cluster is stored across adjacent slots in the same page or the physical addresses are consecutive in the range in which the units of management of the block 400 do not overlap each other (for example, in the same block 400 ), it is possible to store data across the pages. Therefore, according to the second embodiment, it is possible to improve the storage efficiency of the storage medium 251 and increase the lifespan of the data storage device 200 .
- the advantage of the structure in which the cluster data is stored without being compressed is that it is possible to reduce the time required for the compression process during, for example, the writing process or the time required for the decompression process during, for example, the reading process.
- the compressed cluster may be stored across adjacent slots in the same page illustrated in FIG. 11A , similarly to the structure in which the cluster is stored across the pages illustrated in FIG. 3B .
- the compressed cluster may be stored across the pages 402 .
- FIGS. 11A and 11B for simplicity of explanation, the storage area of the metadata or the error correction data in the slot is not illustrated.
- Step S 614 the writing unit 211 determines whether data with a size that is an integer multiple of the division size is fitted into the slot, which is a write destination.
- the writing unit 211 determines whether the sum of the information about the offset on a slot included in the write destination information and the size that is an integer multiple of the division size is fitted into the slot.
- Step S 616 the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size.
- the determination result in Step S 614 is YES (the data is fitted into the slot, which is a write destination)
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size.
- the writing unit 211 returns the information indicating how many times greater the data with a size that is an integer multiple of the division size is than the division size to the write request source.
- the transfer control unit 215 receives the information indicating how many times greater the data is than the division size from the writing unit 211 .
- Step S 618 the writing unit 211 and the transfer control unit 215 perform terminal processing. Specifically, when the determination result is NO (the data is not fitted into the slot, which is a write destination), the writing unit 211 returns a response indicating the overflow of the slot, which is a write destination, to the write request source. When the response indicating the overflow of the slot, which is a write destination, is received from the writing unit 211 and the cluster is stored across adjacent slots in the same page or the physical addresses are consecutive in the same management unit managing the block 400 , the transfer control unit 215 gives the next write destination information to the writing unit 211 .
- the writing unit 211 When receiving the next write destination information from the write request source, the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the data with a size that is an integer multiple of the division size. In addition, the writing unit 211 returns the information indicating how many times greater the data with a size that is an integer multiple of the division size is than the division size to the write request source.
- the transfer control unit 215 receives the information indicating how many times greater the data is than the division size from the writing unit 211 . Then, the transfer control unit 215 proceeds to Step S 620 .
- the transfer control unit 215 may give a dummy data storage instruction to the writing unit 211 .
- the transfer control unit 215 gives the dummy data storage instruction to the writing unit 211 when the cluster is not stored across adjacent slots in the same page or the physical addresses are not consecutive in the range in which the units of management of the block 400 do not overlap each other.
- the writing unit 211 When receiving the dummy data storage instruction from the write request source, the writing unit 211 generates dummy data corresponding to the size of the remaining area of the slot, which is a write destination.
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the second memory 153 temporarily stores the generated dummy data.
- the writing unit 211 may generate the error correction data of the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 , instead of the dummy data.
- the writing unit 211 may use the error correction data of the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 to improve the reliability of data.
- the writing unit 211 may appropriately change the order of the data with a size that is an integer multiple of the division size to reduce the amount of dummy data stored, thereby improving the usage efficiency of the storage medium 251 .
- the transfer control unit 215 When instructing the writing unit 211 to store the dummy data, the transfer control unit 215 ensures a new write destination slot in order to write the cluster data, which is a write target, and performs the writing process again.
- Step S 620 the writing unit 211 determines whether the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of one slot. When the total size of the data temporarily stored in the second memory 153 is not equal to or more than the size of one slot (No in Step S 620 ), the writing unit 211 proceeds to Step S 600 . When the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of one slot (Yes in Step S 620 ), the writing unit 211 proceeds to Step S 622 .
- Step S 622 the writing unit 211 generates slot data. Specifically, when data corresponding to one slot is obtained, the writing unit 211 generates data for a special value (magic number) indicating the arrangement pattern of the compressed and stored cluster as the metadata in the storage format of the slot. In addition, the writing unit 211 generates the error correction data in the storage format of the slot.
- a special value magic number
- data which is a base for generating the first error correction data piece includes the metadata indicating the generated magic number and the first data piece, as illustrated in FIG. 9 .
- Data which is a base for generating the second error correction data piece includes the metadata indicating the generated magic number and the second data piece.
- Data which is a base for generating the third error correction data piece includes the metadata indicating the generated magic number and the third data piece.
- Data which is a base for generating the fourth error correction data piece includes the metadata indicating the generated magic number and the fourth data piece.
- the writing unit 211 instructs the second access unit 103 to perform a writing process such that the metadata indicating the generated magic number, the data with a size that is an integer multiple of the division size which is temporarily stored in the second memory 153 , and the generated error correction data are temporarily stored as data of the slot.
- the writing unit 211 may store the extracted cluster data to be written in a plurality of slots of the page 402 without transmitting the cluster data to the compression unit 104 .
- Step S 624 the transfer control unit 215 determines whether the total size of the data temporarily stored in the second memory 153 is equal to or more than the size of one page.
- the writing unit 211 proceeds to Step S 600 .
- the writing unit 211 proceeds to Step S 626 .
- the transfer control unit 215 repeats the above-mentioned process from Step S 600 until the write request for the writing unit 211 corresponds to at least one page as a result of the compression of the write data.
- the transfer control unit 215 needs to write data corresponding to at least one page in order to perform a process of updating the management information, which will be described. Therefore, the transfer process is not completed.
- Step S 626 the writing unit 211 writes data corresponding to one page to the storage medium 251 through the storage medium access unit 101 .
- the writing unit 211 instructs the second access unit 103 to read data corresponding to the page size among the data pieces temporarily stored in the second memory 153 , and acquires the data corresponding to the page size.
- the writing unit 211 instructs the storage medium access unit 101 to write the block number of the write destination of the cluster and the page number which are included in the write destination information received from the write request source as the page, which is a write destination.
- Step S 628 the transfer control unit 215 updates the management information. Specifically, the writing unit notifies the write request source that the writing of data to the write destination page has been completed.
- the transfer control unit 215 updates the address mapping table 162 for the cluster written to the page.
- the transfer control unit 215 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the extracted logical address in the address mapping table 162 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page.
- the transfer control unit 215 instructs the first access unit 102 to write the information indicating how many times greater the size of the data is than the division size which is acquired from the writing unit 211 to the address mapping table 162 for the cluster written to the page.
- the second embodiment it is possible to adjust the size of the cluster set written to the page 402 to a predetermined unit. Therefore, the storage efficiency of the storage medium 251 is reduced a little, but it is possible to reduce the number of processes required to manage data, as compared to the first embodiment.
- the size of the address mapping table is reduced and memory capacity required for the address mapping table is reduced, as compared to the first and second embodiments.
- the third embodiment is a modification of the second embodiment, but may be a modification of the first embodiment.
- the storage medium includes a block including the plurality of pages.
- the write control unit makes a control that writes the piece of cluster data together with metadata including the logical address and information for specifying at least the block as the physical address of the write destination into the storage unit.
- the read control unit makes a control that reads the pieces of cluster data stored at the physical address acquired from the storage unit, extracts metadata which is written together with the read pieces of cluster data, compares the logical address included in the extracted metadata with the logical address of data which is requested to be read, and reads the pieces of cluster data with the identical logical address.
- the transfer control unit makes control that determines pieces of cluster data to be transferred among the pieces of cluster data written into the storage medium according to a predetermined rule, acquires the physical address corresponding to the determined pieces of cluster data from the storage unit, reads the pieces of cluster data stored at the acquired physical address, extracts metadata which is written together with the read pieces of cluster data, compares the logical address included in the extracted metadata with the logical address of the determined pieces of cluster data, and reads the pieces of cluster data with the identical logical address.
- the transfer control unit makes a control that writes the pieces of cluster data together with the metadata including the logical address into the storage medium, and writes information for specifying at least the block as the physical address of the transfer destination into the storage unit.
- the read control unit sequentially compares the logical address from the last piece of cluster data in a storing order of the pieces of cluster data.
- the transfer control unit sequentially compares the logical address from the last piece of cluster data in the storing order of the pieces of cluster data.
- the structure of the data storage device according to the third embodiment will be described.
- components having the same functions as those in the second embodiment are denoted by the same reference numerals as those in the second embodiment.
- the third embodiment differs from the second embodiment in that a read/write target is not the first memory 252 , but is a first memory 352 .
- the other components have the same functions as those in the components according to the second embodiment and are denoted by the same reference numerals as those in the second embodiment.
- FIG. 17 is a block diagram illustrating an example of the outline of the functional structure of a data storage device 300 according to the third embodiment.
- the data storage device 300 includes a controller 310 , the first access unit 102 , the first memory 352 , the second access unit 103 , the second memory 153 , the storage medium access unit 101 , the storage medium 251 , the interface unit 106 , the compression unit 104 , and the decompression unit 105 .
- the first memory 352 stores management information.
- the management information includes an address mapping table 164 .
- the first memory 352 may be configured so as to store information derived from the information of the address mapping table 164 in advance in order to simplify various processes performed by the data storage device 300 .
- the address mapping table 164 manages the association between the logical address of a cluster and the physical address of the storage medium 251 in which data for the logical address is stored. When information about the managed logical address is minimized, the address mapping table 164 may manage only information indicating a block 400 . For example, the address mapping table 162 manages, as the physical address of the storage medium 251 , a set of block number information, page number information, information about a slot offset on a page, and information about an offset on a slot. In contrast, as illustrated in FIG. 18A , when the amount of information about the managed physical address is minimized, the address mapping table 164 may manage the block number information.
- the address mapping table 164 When the amount of information managed by the address mapping table 164 increases, the amount of cluster data (which will be described below) which is read and written is reduced. When the amount of information managed by the address mapping table 164 is reduced, the amount of cluster data (which will be described below) which is read and written increases.
- a structure in which the address mapping table 164 manages a set of the block number information and the page number information as illustrated in FIG. 18B will be described.
- the structure of the address mapping table 164 is not limited to that illustrated in FIG. 18B , but may be other structures.
- the address mapping table 164 does not store the information indicating how many times greater the size of the data is than the division size which is stored in the address mapping table 162 , in order to reduce the amount (size) of information.
- the controller 310 includes a writing unit 211 , a reading unit 312 , a write control unit 313 , a read control unit 314 , and a transfer control unit 315 .
- the reading unit 312 receives a cluster read request from a read request source.
- the cluster read request includes read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes a block number and a page number.
- the reading unit 312 extracts the block number and the page number from the acquired read destination information and instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number, and acquires the data of the page.
- the page 402 stores a plurality of slots, but the number of slots stored in the page 402 may be changed.
- the unit of data input and output for the storage medium 251 is the page 402 . Therefore, as described above, even when all data of the page is read, no new process occurs in the reading process.
- the reading unit 312 corrects the error of slot data included in the acquired data of the page and acquires the error corrected slot data.
- error correction fails (error correction is unavailable)
- the reading unit 312 notifies the read request source of the occurrence of a read error.
- error correction succeeds (error correction is available)
- the reading unit 312 extracts the metadata of each slot from the error corrected data.
- the reading unit 312 calculates the arrangement pattern of the clusters stored in each slot from the magic number included in the extracted metadata of each slot. When the magic number indicating that the cluster is compressed and stored in the slot is not included in the extracted metadata of each slot, the reading unit 312 determines that the cluster is stored in the slot without being compressed.
- the reading unit 312 extracts the metadata of each cluster from the error corrected data according to the calculated arrangement pattern of the clusters.
- the reading unit 312 directly extracts the metadata from the error corrected data.
- the reading unit 312 instructs the decompression unit 105 to decompress the error corrected data and acquires the metadata.
- the cluster stored at the end of the slot is a portion of or the entire compressed cluster according to storage conditions. Therefore, it is necessary to determine whether the cluster is a portion of or the entire compressed cluster.
- the reading unit 312 may decompress the cluster to perform the determination. Specifically, the reading unit 312 instructs the decompression unit 105 to decompress the cluster stored at the end of the slot. When decompression succeeds and cluster data corresponding to the size of the cluster is obtained by the decompression, it may be determined that the cluster is the entire compressed cluster. On the other hand, when decompression fails or cluster data which does not correspond to the size of the cluster is obtained by the decompression, the reading unit 312 determines that the cluster is a portion of the compressed cluster. In FIG. 19 , for simplicity of explanation, the storage area of the metadata or the error correction data in the slot is not illustrated.
- the reading unit 312 extracts the metadata of the cluster.
- the reading unit 312 does not extract the metadata of the cluster. The reason is as follows. The physical address of the consecutive page immediately before the cluster is written to the address mapping table 164 . Therefore, when there is a request to read the cluster, the reading unit 312 is requested to read the consecutive page immediately before the cluster.
- the reading unit 312 extracts the metadata of the entire compressed cluster.
- the reading unit 312 extracts the metadata of each cluster.
- the reading unit 312 acquires data stored in the next consecutive page 402 using the same process as that up to the error correction process, adds the last cluster and the first cluster which is stored first in the next page 402 with a consecutive physical address, and extracts the entire cluster data. In addition, the reading unit 312 extracts the metadata of the entire cluster data.
- the reading unit 312 extracts the metadata of the cluster.
- the reading unit 312 extracts the logical address of the cluster to be read which is included in the received read request.
- the reading unit 312 extracts the logical address included in the extracted metadata of each cluster.
- the reading unit 312 compares the extracted logical address of the cluster to be read with the extracted logical address included in the metadata of each cluster and determines the cluster with the identical logical address to be the cluster to be read.
- the reading unit determines the last cluster in the page 402 among the plurality of clusters to be the cluster to be read. Therefore, the reading unit sequentially compares the logical addresses from the last cluster in the page 402 , which makes it possible to reduce the time required for comparison.
- the reading unit 312 transmits the cluster data which has been determined to be the cluster to be read to the decompression unit 105 , instructs the decompression unit 105 to decompress the cluster data, and acquires the decompressed cluster data. In some cases, the reading unit 312 does not transmit the cluster data which has been determined to be the cluster to be read to the decompression unit 105 , if necessary. In this case, the reading unit 312 replaces the decompressed cluster data in the subsequent process with the cluster data to be read which is not transmitted to the decompression unit 105 . For example, when the cluster data is stored in the storage medium 251 without being compressed, the reading unit 312 does not transmit the cluster data to the decompression unit 105 . The reading unit 312 transmits the acquired cluster data to the read request source.
- the write control unit 313 performs processes other than the following processes, similarly to the write control unit 213 .
- the write control unit 313 updates the address mapping table 164 for the cluster written to the page. Specifically, the write control unit 313 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page.
- the physical address to be updated of the storage medium 251 which a write destination, includes the block number information and the page number information included in the generated write destination information.
- the write control unit 313 does not update the address mapping table 164 for the cluster. This is because the physical address of the previous consecutive page is written to the address mapping table 164 for the cluster.
- the write control unit 313 instructs the first access unit 102 to write the information indicating how many times greater the size of the data is than the division size which is acquired from the writing unit 211 to the address mapping table 164 for the cluster written to the page.
- the read control unit 314 When receiving a read instruction from the interface unit 106 , the read control unit 314 extracts data storage device address information from the received read instruction. The read control unit 314 converts the extracted data storage device address information to a corresponding logical address. The read control unit 314 acquires information associated with the converted logical address. Specifically, the read control unit 314 instructs the first access unit 102 to read the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 , and acquires information about the physical address. The physical address includes the block number information and the page number information.
- the read control unit 314 instructs the reading unit 312 to perform a reading process, using the acquired physical address as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the read control unit 314 transmits data indicating the read error to the interface unit 106 .
- the first memory 352 may further store information indicating that the read error occurs when the logical address is read as one of the management information items. In this way, when a read request is issued for the same logical address again, it is possible to rapidly return the read error.
- the read control unit 314 transmits the received data to the interface unit 106 .
- the transfer control unit 315 controls the following transfer process according to a predetermined rule.
- the transfer control unit 315 determines the cluster to be transferred. Specifically, the transfer control unit 315 instructs the first access unit 102 to read the management information from the first memory 352 and acquires the management information.
- the transfer control unit 315 determines the cluster to be transferred from the acquired management information according to a predetermined rule.
- the cluster to be transferred may be determined according to any known rule.
- the transfer control unit 315 extracts the logical address of the determined cluster from the acquired management information.
- the transfer control unit 315 reads the cluster to be transferred. Specifically, the transfer control unit 315 acquires information associated with the extracted logical address. The transfer control unit 315 instructs the first access unit 102 to read the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 , and acquires information indicating the physical address.
- the physical address includes the block number information and the page number information.
- the transfer control unit 315 instructs the reading unit 312 to perform a reading process, using the acquired physical address as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the transfer control unit 315 performs a process of maintaining consistency such that an error occurs when the cluster is read after the transfer process. For example, the transfer control unit 315 may transfer cluster data with the read error, without correcting the read error.
- the transfer control unit 315 may insert information indicating that the read error occurs when the logical address is read into the management information stored in the first memory 352 such that the cluster data with the read error is not transferred.
- the transfer control unit 315 receives the data read from the reading unit 312 .
- the transfer control unit 315 writes the cluster to be transferred.
- the process of writing the cluster to be transferred in the transfer control unit 315 is the same as that in the transfer control unit 215 .
- the transfer control unit 315 repeatedly performs the above-mentioned process until a write request for the writing unit 211 corresponds to at least one page.
- the reason is as follows. Since the unit of input and output for the storage medium 251 is the page 402 , the transfer control unit 315 needs to write data corresponding to at least one page in order to perform a process of updating the management information, which will be described. Therefore, the transfer process is not completed.
- the transfer control unit 315 updates the management information about the transferred cluster. Specifically, when receiving the write completion notice from the writing unit 211 , the transfer control unit 315 updates the address mapping table 164 for the cluster written to the page. The transfer control unit 315 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page.
- the physical address to be updated of the storage medium 251 which a write destination, includes the block number information and the page number information included in the generated write destination information.
- the transfer control unit 315 When the first cluster which is stored first in the page 402 is a portion of the compressed cluster data (corresponding to compressed cluster data # 6 when the right page of FIG. 19 is the page to which the writing of data has been completed), the transfer control unit 315 does not update the address mapping table 164 for the cluster. This is because the physical address of the previous consecutive page is registered in the address mapping table 164 for the cluster. The transfer control unit 315 repeatedly performs the above-mentioned process according to a predetermined rule, if necessary.
- FIG. 20 is a flowchart illustrating an example of the procedure of the writing process performed by the data storage device 300 .
- the write control unit 313 is used instead of the write control unit 213 , as compared to the flowchart illustrated in FIG. 14 .
- processes which are substantially the same as those illustrated in FIG. 14 are denoted by the same reference numerals as those in FIG. 14 .
- Step S 722 the write control unit 313 updates the management information. Specifically, the writing unit 211 transmits a notice indicating that the writing of data to the write destination page has been completed to the write request source. When receiving the write completion notice from the writing unit 211 , the write control unit 313 updates the address mapping table 164 for the cluster written to the page. The write control unit 313 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page.
- the physical address to be updated of the storage medium 251 which is a write destination, includes the block number information and the page number information included in the generated write destination information.
- the write control unit 313 does not update the address mapping table 164 for the cluster. This is because the physical address of the previous consecutive page is registered in the address mapping table 164 for the cluster.
- FIG. 21 is a flowchart illustrating an example of the procedure of the reading process performed by the data storage device 300 .
- Step S 800 the data storage device 300 receives a read instruction.
- the interface unit 106 receives instructions including a write instruction and a read instruction from, for example, the host apparatus (not illustrated).
- the write instruction includes data storage device address information and the write data.
- the read instruction includes the data storage device address information.
- the data storage device address information is provided from the data storage device 300 to the host apparatus (not illustrated).
- an LBA is an example of the data storage device address information of an HDD (Hard Disk Drive) or an SSD.
- the size of the data specified by LBA is set to, for example, 512 bytes.
- the size of the data specified by the data storage device address is generally different from the size of the data (cluster) specified by the logical address.
- the data storage device address and the logical address can be converted into each other. For example, when the data storage device address information is allocated for every 512 bytes and the logical address is allocated for every 1024 bytes, the quotient of the data storage device address information divided by 2 can be calculated to convert the data storage device address information into the logical address.
- the size of the data specified by the data storage device address is equal to the size of the cluster.
- the data storage device 300 may be configured such that the size of the data specified by the data storage device address is different from the size of the cluster.
- the interface unit 106 transmits the received read instruction to the read control unit 314 .
- Step S 802 the read control unit 314 generates read destination information. Specifically, when receiving the read instruction from the interface unit 106 , the read control unit 314 extracts the data storage device address information from the received read instruction. Then, the read control unit 314 converts the extracted data storage device address information into a corresponding logical address. The read control unit 314 acquires information associated with the converted logical address. The read control unit 314 instructs the first access unit 102 to read the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 , and acquires information indicating the physical address. The physical address includes the block number information and the page number information.
- Step S 804 the read control unit 314 reads all of the areas designated by the read destination information. Specifically, the read control unit 314 instructs the reading unit 312 to perform a reading process, using the acquired physical address as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the reading unit 312 receives a cluster read request from the read request source.
- the cluster read request includes the read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes the block number and the page number.
- the reading unit 312 extracts the block number and the page number from the acquired read destination information, instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number, and acquires the data of the page.
- the page 402 stores a plurality of slots, but the number of slots stored in the page 402 may be changed.
- the unit of data input and output for the storage medium 251 is the page 402 . Therefore, even when all data of the page is read, no new process is needed.
- Step S 806 the read control unit 314 extracts the metadata. Specifically, the reading unit 312 corrects the error of slot data included in the acquired data of the page and acquires the error corrected slot data. When error correction fails (error correction is unavailable), the reading unit 312 notifies the read request source of the occurrence of a read error. When receiving a notice indicating the occurrence of the read error from the reading unit 312 , the read control unit 314 transmits data indicating the read error to the interface unit 106 . When reading the logical address, the first memory 352 may further store information indicating that the read error occurs when the logical address is read as one of the management information items. In this way, when a read request is issued for the same logical address again, it is possible to rapidly return the read error.
- the interface unit 106 When receiving the data (data indicating the read error) from the read control unit 114 , the interface unit 106 transmits the received data to the host apparatus (not illustrated).
- error correction succeeds (error correction is available)
- the reading unit 312 extracts the metadata of each slot from the error corrected data.
- the reading unit 312 calculates the arrangement pattern of the clusters stored in each slot from the magic number included in the extracted metadata of each slot. When the magic number indicating that the cluster is compressed and stored in the slot is not included in the extracted metadata of each slot, the reading unit 312 determines that the cluster is stored in the slot without being compressed. In addition, the reading unit 312 extracts the metadata of each cluster from the error corrected data according to the calculated arrangement pattern of the clusters.
- the reading unit 312 may directly extract the metadata from the error corrected data.
- the reading unit 312 can instruct the decompression unit 105 to decompress the error corrected data and acquire the metadata.
- the cluster stored at the end of the slot is a portion of or the entire compressed cluster according to storage conditions. Therefore, it is necessary to determine whether the cluster is a portion of or the entire compressed cluster.
- the reading unit 312 may decompress the cluster to perform the determination. Specifically, the reading unit 312 instructs the decompression unit 105 to decompress the cluster stored at the end of the slot. When decompression succeeds and cluster data corresponding to the size of the cluster is obtained by the decompression, the read control unit 314 can determine that the cluster is the entire compressed cluster. On the other hand, when decompression fails or cluster data which does not correspond to the size of the cluster is obtained by the decompression, it is possible to determine that the cluster is a portion of the compressed cluster. In FIG. 19 , for simplicity of explanation, the storage area of the metadata or the error correction data in the slot is not illustrated.
- the reading unit 312 When it is determined that the first cluster which is stored first in the page 402 is the entire compressed cluster, the reading unit 312 extracts the metadata of the cluster. On the other hand, when it is determined that the first cluster which is stored first in the page 402 is a portion of the compressed cluster (compressed cluster data # 6 when the right page of FIG. 19 is a read target page), the reading unit 312 does not extract the metadata of the cluster. The reason is as follows. The physical address of the consecutive page immediately before the cluster is registered in the address mapping table 164 . Therefore, when there is a request to read the cluster, the reading unit 312 is requested to read the consecutive page immediately before the cluster.
- the reading unit 312 extracts the metadata of the entire compressed cluster.
- the reading unit 312 extracts the metadata of each cluster.
- the reading unit 312 acquires data stored in the next consecutive page 402 using the same process as that up to the error correction process, adds the last cluster and the first cluster which is stored first in the next page 402 with a consecutive physical address, and extracts the entire cluster data. In addition, the reading unit 312 extracts the metadata of the entire cluster data. On the other hand, when it is determined that the last cluster which is stored last in the page 402 is the entire compressed cluster, the reading unit 312 extracts the metadata of the cluster.
- Step S 808 the reading unit 312 extracts data to be read. Specifically, the reading unit 312 extracts the logical address of the cluster to be read which is included in the received read request. The reading unit 312 extracts the logical address included in the extracted metadata of each cluster. The reading unit 312 compares the extracted logical address of the cluster to be read with the extracted logical address included in the metadata of each cluster and determines the cluster with the identical logical address to be the cluster to be read.
- the reading unit 312 determines the last cluster in the page 402 among the plurality of clusters to be the cluster to be read. Therefore, the reading unit 312 sequentially compares the logical addresses from the last cluster in the page 402 , which makes it possible to reduce the time required for comparison.
- Step S 810 the controller 310 decompresses the data to be read and returns the decompressed data to the host apparatus. Specifically, the reading unit 312 transmits the cluster data which has been determined to be the cluster to be read to the decompression unit 105 , instructs the decompression unit 105 to decompress the cluster data, and acquires the decompressed cluster data. In some cases, the reading unit 312 does not transmit the cluster data which has been determined to be the cluster to be read to the decompression unit 105 , if necessary. In this case, the reading unit 312 replaces the decompressed cluster data in the subsequent process with the cluster data to be read which is not transmitted to the decompression unit 105 .
- the reading unit 312 when the cluster data is stored in the storage medium 251 without being compressed, the reading unit 312 does not transmit the cluster data to the decompression unit 105 .
- the reading unit 312 transmits the acquired decompressed cluster data to the read request source.
- the read control unit 314 When receiving the data read from the reading unit 312 , the read control unit 314 transmits the received data to the interface unit 106 .
- the interface unit 106 When receiving the data from the read control unit 314 , the interface unit 106 transmits the received data to the host apparatus (not illustrated).
- FIG. 22 is a flowchart illustrating an example of the procedure of the transfer process performed by the data storage device 300 .
- the transfer control unit 315 controls the transfer process illustrated in FIG. 22 according to a predetermined rule.
- the transfer control unit 315 is used instead of the transfer control unit 215 , as compared to the flowchart illustrated in FIG. 16 .
- processes which are substantially the same as those illustrated in FIG. 16 are denoted by the same reference numerals as those in FIG. 16 .
- Step S 900 the transfer control unit 315 determines the cluster to be transferred. Specifically, the transfer control unit 315 instructs the first access unit 102 to read the management information from the first memory 352 and acquires the management information. The transfer control unit 315 determines the cluster to be transferred from the acquired management information using a predetermined method. In the third embodiment, any known method may be used to determine the cluster to be transferred. The transfer control unit 315 extracts the logical address of the determined cluster from the acquired management information.
- Step S 902 the transfer control unit 315 generates the read destination information. Specifically, the transfer control unit 315 acquires information associated with the extracted logical address. For example, the transfer control unit 315 instructs the first access unit 102 to read the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 , and acquires information indicating the physical address.
- the physical address includes the block number information and the page number information.
- Step S 904 the transfer control unit 315 reads all of the areas designated by the read destination information. Specifically, the transfer control unit 315 instructs the reading unit 312 to perform a reading process, using the acquired physical address as the read destination information and the converted logical address as the logical address of the cluster to be read.
- the reading unit 312 receives a cluster read request from the read request source.
- the cluster read request includes the read destination information and data indicating the logical address of the cluster to be read.
- the read destination information includes the block number and the page number.
- the reading unit 312 extracts the block number and the page number from the acquired read destination information, instructs the storage medium access unit 101 to read the data of the page 402 with the extracted page number in the block 400 with the extracted block number, and acquires the data of the page.
- the page 402 stores a plurality of slots, but the number of slots stored in the page 402 may be changed.
- the unit of data input and output for the storage medium 251 is the page 402 . Therefore, even when all data of the page is read, no new process is needed.
- Step S 906 the transfer control unit 315 extracts the metadata. Specifically, the reading unit 312 corrects the error of slot data included in the acquired data of the page and acquires the error corrected slot data. When error correction fails (error correction is unavailable), the reading unit 312 notifies the read request source of the occurrence of a read error. When receiving a notice indicating the occurrence of the read error from the reading unit 312 , the transfer control unit 315 performs a process of maintaining consistency such that an error occurs when the cluster is read after the transfer process. For example, the transfer control unit 315 may transfer the cluster data with the read error, without correcting the read error.
- the transfer control unit 315 may insert information indicating that the read error occurs when the logical address is read into the management information stored in the first memory 352 such that the cluster data with the read error is not transferred.
- error correction succeeds (error correction is available)
- the reading unit 312 extracts the metadata of each slot from the error corrected data.
- the reading unit 312 calculates the arrangement pattern of the clusters stored in each slot from the magic number included in the extracted metadata of each slot. When the magic number indicating that the cluster is compressed and stored in the slot is not included in the extracted metadata of each slot, the reading unit 312 determines that the cluster is stored in the slot without being compressed.
- the reading unit 312 extracts the metadata of each cluster from the error corrected data according to the calculated arrangement pattern of the clusters. When the metadata of the compressed and stored cluster is stored without being compressed, the reading unit 312 directly extracts the metadata from the error corrected data. When the metadata of the compressed and stored cluster is compressed and stored, the reading unit 312 instructs the decompression unit 105 to decompress the error corrected data and acquires the metadata.
- the cluster stored at the end of the slot is a portion of or the entire compressed cluster according to storage conditions. Therefore, it is necessary to determine whether the cluster stored at the end of the slot is a portion of or the entire compressed cluster.
- the reading unit 312 decompresses the cluster to determine whether the cluster is a portion of or the entire compressed cluster. Specifically, the reading unit 312 instructs the decompression unit 105 to decompress the cluster stored at the end of the slot. When decompression succeeds and cluster data corresponding to the size of the cluster is obtained by the decompression, the reading unit 312 determines that the cluster is the entire compressed cluster.
- the reading unit 312 determines that the cluster is a portion of the compressed cluster.
- the storage area of the metadata or the error correction data in the slot is not illustrated.
- the reading unit 312 extracts the metadata of the cluster.
- the reading unit 312 does not extract the metadata of the cluster. The reason is as follows. The physical address of the consecutive page immediately before the cluster is written to the address mapping table 164 . Therefore, when there is a request to read the cluster, the reading unit 312 is requested to read the consecutive page immediately before the cluster.
- the reading unit 312 extracts the metadata of the entire compressed cluster.
- the reading unit 312 extracts the metadata of each cluster.
- the reading unit 312 acquires data stored in the next consecutive page 402 using the same process as that up to the error correction process, adds the last cluster and the first cluster which is stored first in the next page 402 with a consecutive physical address, and extracts the entire cluster data. In addition, the reading unit 312 extracts the metadata of the entire cluster data. On the other hand, when it is determined that the last cluster which is stored last in the page 402 is the entire compressed cluster, the reading unit 312 extracts the metadata of the cluster.
- Step S 908 the reading unit 312 extracts the data to be read. Specifically, the reading unit 312 extracts the logical address of the cluster to be read which is included in the received read request. The reading unit 312 extracts the logical address included in the extracted metadata of each cluster. The reading unit 312 compares the extracted logical address of the cluster to be read with the extracted logical address included in the metadata of each cluster and determines the cluster with the identical logical address to be the cluster to be read.
- the reading unit 312 determines the last cluster in the page 402 among the plurality of clusters to be the cluster to be read. Therefore, the reading unit 312 sequentially compares the logical addresses from the last cluster in the page 402 , which makes it possible to reduce the time required for comparison.
- Step S 910 the reading unit 312 decompresses the read target data which has been read. Specifically, the reading unit 312 transmits the cluster data which has been determined to be the cluster to be read to the decompression unit 105 , instructs the decompression unit 105 to decompress the cluster data, and acquires the decompressed cluster data. In some cases, the reading unit 312 does not transmit the cluster data which has been determined to be the cluster to be read to the decompression unit 105 , if necessary. In this case, the reading unit 312 replaces the decompressed cluster data in the subsequent process with the cluster data to be read which is not transmitted to the decompression unit 105 .
- the reading unit 312 when the cluster data is stored in the storage medium 251 without being compressed, the reading unit 312 does not transmit the cluster data to the decompression unit 105 .
- the reading unit 312 transmits the acquired cluster data to the read request source.
- the transfer control unit 315 receives the data read from the reading unit 312 .
- Step S 932 the transfer control unit 315 updates the management information. Specifically, the writing unit 211 transmits a notice indicating that the writing of data to the write destination page has been completed to the write request source. When receiving the write completion notice from the writing unit 211 , the transfer control unit 315 updates the address mapping table 164 for the cluster written to the page. The transfer control unit 315 instructs the first access unit 102 to perform a writing process such that the physical address of the storage medium 251 indicated by the converted logical address in the address mapping table 164 is updated to the physical address of the storage medium 251 , which is a write destination, for the cluster written to the page.
- the physical address to be updated of the storage medium 251 which a write destination, includes the block number information and the page number information included in the generated write destination information.
- the transfer control unit 315 does not update the address mapping table 164 for the cluster. This is because the physical address of the previous consecutive page is registered in the address mapping table 164 for the cluster.
- the third embodiment it is possible to reduce the size of the address mapping table 164 , as compared to the size of the address mapping table 162 according to the second embodiment. That is, according to the third embodiment, it is possible to reduce memory capacity required for the first memory 352 , as compared to memory capacity required for the first memory 252 according to the second embodiment.
- the writing unit 111 or the writing unit 211 gives an instruction not to compress data.
- the reading unit 112 , the reading unit 212 , or the reading unit 312 gives an instruction not to decompress data.
- the fourth embodiment is an example of a combination of a structure in which the compression process is not performed and a structure in which the decompression process is not performed.
- the combination of the structure in which the compression process is not performed and the structure in which the decompression process is not performed in the fourth embodiment is an illustrative example, but other combinations thereof may be made.
- the fourth embodiment which is a modification of the data storage device 300 , will be described.
- the fourth embodiment may be a modification of the data storage device 100 or the data storage device 200 .
- the data storage device 300 (the data storage device 100 or the data storage device 200 ) does not compress and store the data which is requested to be written by the host apparatus, but stores the data to be transferred. That is, when the cluster data which is requested to be written by the host apparatus is stored in the storage medium, the data storage device 300 does not compress the cluster data. When the cluster data to be transferred is stored in the storage medium, the data storage device 300 compresses the cluster data. When reading the cluster data which has been requested to be written by the host apparatus and then stored in the storage medium, the data storage device 300 does not decompress the read cluster data. When reading the cluster data which has been transferred and stored in the storage medium from the storage medium, the data storage device 300 decompresses the read cluster data.
- the writing unit 211 when receiving a write request from the write control unit 313 , the writing unit 211 does not transmits the cluster data to be written to the compression unit 104 and instructs the storage medium access unit 101 to write the cluster data, which is a write target, to the storage medium 251 . Therefore, when the data which has been requested to be written by the host apparatus and then stored in the storage medium is read, the reading unit 312 returns the data read from the storage medium 251 to the read request source, without transmitting the data to the decompression unit 105 , since the data stored without being compressed.
- the writing unit 211 When receiving a write request from the transfer control unit 315 , the writing unit 211 transmits the cluster data to be written to the compression unit 104 and instructs the storage medium access unit 101 to write the compressed data to the storage medium 251 . Therefore, when the transferred data is read, the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 since the data is compressed and stored and returns the decompressed data to the read request source.
- the transferred data is compressed and stored. Therefore, in the second combination, when the previously transferred data is a transfer source, the data, which is the transfer source, is read in a compressed state and is then written to a transfer destination in the compressed state. In this way, a data decompression process during reading in the transfer process and a data compression process during writing in the transfer process are reduced.
- the transfer control unit makes control that does not decompress a piece of cluster data read for piece of cluster data to be transferred again and being written into the storage medium by the control of the transfer control unit among the pieces of cluster data to be transferred which are determined according to a predetermined rule, and a control that does not compress the pieces of cluster data by the external compression unit, in addition to the controller of the data storage device according to the first combination.
- the writing unit 211 instructs the storage medium access unit 101 to write cluster data, which is a write target, to the storage medium 251 , without transmitting the cluster data to the compression unit 104 .
- the reading unit 312 returns the data read from the storage medium 251 to the read request source, without transmitting the data to the decompression unit 105 , since the data is stored without being compressed.
- the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 since the data is compressed and stored and returns the decompressed data to the read request source.
- the reading unit 312 When the data to be read has been previously transferred and is requested to be read by the transfer control unit, the reading unit 312 returns the data read from the storage medium 251 to the read request source, without transmitting the data to the decompression unit 105 in order to reduce the data decompression process during reading in the transfer process although the data is compressed and stored.
- the writing unit 211 transmits the cluster data to be written to the compression unit 104 and instructs the storage medium access unit 101 to write the compressed data to the storage medium 251 .
- the writing unit 211 instructs the storage medium access unit 101 to write the cluster data, which is a write target, to the storage medium 251 , without transmitting the cluster data to the compression unit 104 , in order to reduce the data compression process during writing in the transfer process.
- the data storage device 300 compresses and stores the data which is requested to be written by the host apparatus, constantly reads the compressed data, which is a transfer source, in the transfer process, and writes the compressed data to a transfer destination. In this way, the data decompression process during reading in the transfer process and the data compression process during writing in the transfer process are constantly reduced.
- the write control unit in the controller of the data storage device 300 performs control such that the compression unit compresses the cluster data
- the read control unit performs control such that the decompression unit decompresses the cluster data
- the transfer control unit performs control such that the decompression unit does not decompress the cluster data and the compression unit does not compress the cluster data.
- the writing unit 211 transmits the cluster target to be written to the compression unit 104 and instructs the storage medium access unit 101 to write the compressed data to the storage medium 251 .
- the reading unit 312 When receives a read request from the transfer control unit 315 , the reading unit 312 returns the data read from the storage medium 251 to the read request source, without transmitting the data to the decompression unit 105 , in order to reduce the data decompression process during reading in the transfer process although the data is compressed and stored.
- the writing unit 211 instructs the storage medium access unit 101 to write the cluster data, which is a write target, to the storage medium 251 , without transmitting the cluster data to the compression unit 104 in order to reduce the data compression process during writing in the transfer process.
- the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 since the data is compressed and stored and returns the decompressed data to the read request source.
- the data storage device 300 cancels a process of compressing and storing the cluster and stores the cluster without compression.
- the write control unit in the controller of the data storage device 300 performs control such that, when the time required for the compression unit to compress cluster data is equal to or more than a predetermined time, the compression of the cluster data by the compression unit is cancelled, the cluster data whose compression is cancelled is written to the storage medium according to the physical address of a write destination, and the correspondence between the logical address and the physical address of the write destination is written to the storage unit;
- the read control unit performs control such that, when the read cluster data is not compressed, the read cluster data is output without being decompressed by the decompression unit;
- the transfer control unit performs control such that, when the read cluster data is not compressed, the decompression unit does not decompress the read cluster data, and when the time required for the compression unit to compress the cluster data is equal to or more than a predetermined time, the compression of the cluster data by the compression unit is cancelled, the cluster data whose compression is cancelled is written to the storage medium according to the physical address of
- the writing unit 211 transmits the cluster data to be written to the compression unit 104 .
- the writing unit 211 instructs the storage medium access unit 101 to write the acquired compressed cluster data to the storage medium 251 . Therefore, when the compressed and stored data is read, the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 and returns the decompressed data to the read request source.
- the writing unit 211 transmits the cluster data to be written to the compression unit 104 .
- the writing unit 211 instructs the storage medium access unit 101 to write the (non-compressed) cluster data, which is a write target, to the storage medium 251 . Therefore, when the data which is stored without being compressed is read, the reading unit 312 returns the data read from the storage medium 251 to the read request source, without transmitting the data to the decompression unit 105 .
- the time required for the data compression process is relatively longer than that required for the data transfer process.
- the peak write performance of the data storage device 300 represents the performance when it is not necessary to perform the transfer process and only the writing process requested by the host apparatus is performed. Therefore, in the first combination or the second combination in which the data compression process is not performed in the writing process requested by the host apparatus, it is possible to improve the peak write performance of the data storage device.
- the time required for the data writing process is more than that required for the data transfer process or the data reading process.
- the compression efficiency of the data which is requested to be written is very high, the amount of data written to the semiconductor storage medium is significantly reduced. As a result, the time required to write data to the semiconductor storage medium is significantly reduced. Therefore, in some cases, the total processing time including the time required to compress data is reduced.
- the data storage device 300 according to the third combination of the fourth embodiment performs the data compression process in the writing process requested by the host apparatus. In this way, it is possible to improve the write performance of the data storage device.
- the data storage device 300 since the data compression process is performed in the writing process requested by the host apparatus, it is possible to minimize the amount of data written to the storage medium. Therefore, it is possible to maximize the lifespan of the data storage device.
- the process of compressing and storing the cluster data is cancelled and the cluster data is stored without being compressed. Therefore, it is possible to appropriately set the balance between an improvement in the write performance of the data storage device and an increase in the lifespan of the data storage device.
- the peak write performance of the data storage device 300 is improved.
- the capacity of data written to the storage medium is more than that when data is stored without being compressed, even though data is compressed and stored in the storage medium in the transfer process.
- the fifth embodiment is a modification of the data storage device 300 .
- the fifth embodiment may be a modification of the data storage device 100 or the data storage device 200 .
- Combinations of the structures of the data storage device 300 according to the fifth embodiment are illustrative, but the data storage device 300 may have various other combinations of the structures.
- the write control unit in the controller of the data storage device 300 performs control such that data which is requested to be written by an external apparatus is converted into a plurality of cluster data pieces with the size of the cluster, an external compression unit compresses the converted cluster data at a first compression ratio, the compressed cluster data is written to the storage medium according to the physical address of a write destination, and the correspondence between the logical address and the physical address of the write destination is written to the storage unit;
- the read control unit performs control such that the physical address of data which is requested to be read by the external apparatus is acquired from the storage unit, the cluster data is read from the storage medium according to the acquired physical address, an external decompression unit decompresses the read cluster data at the first compression ratio or a second compression ratio higher than the first compression ratio, and the decompressed cluster data is output; and the transfer control unit performs control such that the cluster data to be transferred among the cluster data pieces written to the storage medium is
- the compression unit 104 can set a plurality of compression ratios.
- the decompression unit 105 can decompress each of the data pieces which are compressed at the plurality of compression ratios.
- the writing unit 211 transmits the cluster data to be written to the compression unit 104 such that the compression unit compresses the cluster data at a low compression ratio and instructs the storage medium access unit 101 to write the compressed data to the storage medium 251 .
- the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 since the data is compressed at the low compression ratio, instructs the decompression unit 105 to decompress the data compressed at the low compression ratio, and returns the decompressed data to the read request source.
- the writing unit 211 When receiving a write request from the transfer control unit 315 , the writing unit 211 transmits the cluster data to be written to the compression unit 104 such that the compression unit 104 compresses the cluster data at a high compression ratio, and instructs the storage medium access unit 101 to write the compressed data to the storage medium 251 . Therefore, when the transferred data is read, the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 since the data is compressed at the high compression ratio, instructs the decompression unit 105 to decompress the data compressed at the high compression ratio, and returns the decompressed data to the read request source.
- the second combination in the data storage device 300 , when the previously transferred data is a transfer source and the compression ratio in the previous transfer process is equal to that in the current transfer process, the compressed data, which is the transfer source, is read without being decompressed and is then written to a transfer destination, similarly to the second combination of the fourth embodiment. In this way, the data decompression process during reading in the transfer process and the data compression process during writing in the transfer process are reduced.
- the compression unit 104 can set a plurality of compression ratios and the decompression unit 105 can set a plurality of compression ratios.
- the writing unit 211 transmits the cluster data to be written to the compression unit 104 such that the compression unit 104 compresses the cluster data at a low compression ratio, and instructs the storage medium access unit 101 to write the compressed data to the storage medium 251 .
- the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 since the data is compressed at the low compression ratio, instructs the decompression unit 105 to decompress the data compressed at the low compression ratio, and returns the decompressed data to the read request source.
- the reading unit 312 transmits the data read from the storage medium 251 to the decompression unit 105 since the data is compressed at a high compression ratio and is then stored, instructs the decompression unit 105 to decompress the data compressed at the high compression ratio, and returns the decompressed data to the read request source.
- the reading unit 312 transmits the data read from the storage medium 251 to the read request source, without transmitting the data to the decompression unit 105 , in order to reduce the data decompression process during reading in the transfer process.
- the writing unit 211 transmits the cluster data to be written to the compression unit 104 such that the compression unit 104 compresses the cluster data at a high compression ratio, and instructs the storage medium access unit 101 to write the compressed data to the storage medium 251 .
- the writing unit 211 instructs the storage medium access unit 101 to write the cluster data, which is a write target, to the storage medium 251 , without transmitting the cluster data to the compression unit 104 in order to reduce the data compression process during reading in the transfer process.
- a data storage device without a data compression function provides, to the host apparatus, a capacity obtained by subtracting a predetermined capacity required for, for example, a transfer process from the capacity of the storage medium capable of storing data as a capacity (hereinafter, referred to as declared capacity) which is allowed to be used for the host apparatus.
- declared capacity a capacity obtained by subtracting a predetermined capacity required for, for example, a transfer process from the capacity of the storage medium capable of storing data as a capacity (hereinafter, referred to as declared capacity) which is allowed to be used for the host apparatus.
- declared capacity a capacity obtained by subtracting a predetermined capacity required for, for example, a transfer process from the capacity of the storage medium capable of storing data as a capacity (hereinafter, referred to as declared capacity) which is allowed to be used for the host apparatus.
- the data storage device without the data compression function according to the sixth embodiment and the data storage device with the data compression function according to the first to fifth embodiments are similar in the capacity of the storage medium capable of
- the first structure of the declared capacity provides the same declared capacity as that of the data storage device without the data compression function to the host apparatus. In this structure, the amount of data written to the storage medium is reduced according to the compression result of data and the lifespan of the data storage device increases.
- the second structure provides a capacity more than the declared capacity of the data storage device without the data compression function to the host apparatus.
- a data capacity less than the declared capacity provided to the host apparatus is stored in the storage medium according to the compression result of data.
- the data storage device returns a write error in response to a new write request from the host apparatus.
- the data storage device may have a function of notifying the host apparatus of the remaining capacity capable of storing data according to the compression result of data.
- the data storage device 200 when the size of the compressed data is set to a predetermined unit, the data storage device 200 according to the sixth embodiment may use the maximum value of the declared capacity as a capacity capable of storing data at the maximum compression ratio. In this case, when it is difficult to process the write request from the host apparatus, the data storage device returns a write error.
- the maximum value of the declared capacity may be four times the declared capacity of the data storage device without the data compression function.
- the capacity of data written to the storage medium is reduced according to the compression result of data and the lifespan of the data storage device increases.
- reversible compression is assumed as the compression and decompression processes.
- There is irreversible compression in which, when the compressed data is decompressed, the decompressed data does not return to the data before compression.
- a mismatched portion between the data before compression and data obtained by decompressing the irreversibly compressed data may be considered as the error of the data obtained by decompressing the irreversibly compressed data with respect to the data before compression. Therefore, when an error correction code is generated using the data before compression as a base for generating the error correction data, the data obtained by decompressing the irreversibly compressed data can be corrected with the error correction code as long as the number of mismatched portions is within the range in which errors can be corrected with the generated error correction code.
- the seventh embodiment it is assumed that the number of mismatched portions is within the range in which errors can be corrected with the generated error correction code.
- the seventh embodiment may be a modification of the data storage device 100 , the data storage device 200 , or the data storage device 300 .
- the data storage device 200 When the cluster data is stored in the storage medium, the data storage device 200 generates error correction data for correcting the irreversibly compressed data, using the data before compression as a base for generating the error correction data, and irreversible compresses the cluster data. Then, the data storage device 200 stores the irreversibly compressed cluster data and the generated error correction data for correcting the irreversibly compressed data so as to be associated with each other.
- the data storage device 200 decompresses the read cluster data as the irreversibly compressed data and corrects the decompressed cluster data with the error correction data for correcting the irreversibly compressed data which is stored associated with the read cluster data.
- the seventh embodiment will be described as a modification of the second embodiment.
- the writing unit 211 When the size obtained by adding the metadata of the cluster to be compressed and the compressed cluster data is equal to or less than an integer multiple of the division size, the writing unit 211 according to the second embodiment writes the dummy data to the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed and the compressed cluster data in the area with a size that is an integer multiple of the division size, thereby setting the size of the cluster data to the size that is an integer multiple of the division size.
- the writing unit 211 when the size of data obtained by adding the metadata of the cluster to be compressed, the compressed cluster data, and the error correction data for correcting the irreversibly compressed data, which is error correction data generated using the data before compression as a base for generating the error correction data, is equal to or less than an integer multiple of the division size, the writing unit 211 according to the seventh embodiment writes the dummy data to the remainder of the area of the data obtained by adding the metadata of the cluster to be compressed, the compressed cluster data, and the error correction data for correcting the irreversibly compressed data in the area with a size that is an integer multiple of the division size, thereby setting the size of the cluster data to the size that is an integer multiple of the division size.
- the reading unit 212 according to the second embodiment transmits the extracted cluster data to the decompression unit 105 , instructs the decompression unit 105 to decompress the cluster data, and acquires the decompressed cluster data.
- the reading unit 212 according to the seventh embodiment transmits the extracted cluster data to the decompression unit 105 , instructs the decompression unit 105 to decompress the cluster data, acquires the decompressed cluster data, uses the decompressed cluster data as a base for generating the error correction data, extracts the error correction data for correcting the irreversibly compressed data for the cluster, performs error correction using the error correction data for correcting the irreversibly compressed data as the error correction data, and acquires the error corrected cluster data.
- the data storage device 200 may perform an irreversible compression process and a process of decompressing the irreversibly compressed data.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/207,308 US10572187B2 (en) | 2012-02-08 | 2016-07-11 | Controller, data storage device, and computer program product |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012-025497 | 2012-02-08 | ||
JP2012025497A JP5687639B2 (ja) | 2012-02-08 | 2012-02-08 | コントローラ、データ記憶装置及びプログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/207,308 Continuation US10572187B2 (en) | 2012-02-08 | 2016-07-11 | Controller, data storage device, and computer program product |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130246721A1 true US20130246721A1 (en) | 2013-09-19 |
Family
ID=49158790
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/608,086 Abandoned US20130246721A1 (en) | 2012-02-08 | 2012-09-10 | Controller, data storage device, and computer program product |
US15/207,308 Active 2032-10-04 US10572187B2 (en) | 2012-02-08 | 2016-07-11 | Controller, data storage device, and computer program product |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/207,308 Active 2032-10-04 US10572187B2 (en) | 2012-02-08 | 2016-07-11 | Controller, data storage device, and computer program product |
Country Status (2)
Country | Link |
---|---|
US (2) | US20130246721A1 (ja) |
JP (1) | JP5687639B2 (ja) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150012694A1 (en) * | 2013-07-03 | 2015-01-08 | Crossbar, Inc. | Hardware assisted meta data lookup |
US20150149739A1 (en) * | 2013-11-25 | 2015-05-28 | Research & Business Foundation Sungkyunkwan University | Method of storing data in distributed manner based on technique of predicting data compression ratio, and storage device and system using same |
US20150178013A1 (en) * | 2013-12-20 | 2015-06-25 | Sandisk Technologies Inc. | Systems and methods of compressing data |
US20160004545A1 (en) * | 2014-04-30 | 2016-01-07 | Huawei Technologies Co., Ltd. | Method and embedded device for loading driver |
US9304709B2 (en) | 2013-09-06 | 2016-04-05 | Western Digital Technologies, Inc. | High performance system providing selective merging of dataframe segments in hardware |
WO2016103112A1 (en) * | 2014-12-23 | 2016-06-30 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
US9712190B2 (en) | 2015-09-24 | 2017-07-18 | International Business Machines Corporation | Data packing for compression-enabled storage systems |
US9710199B2 (en) | 2014-11-07 | 2017-07-18 | International Business Machines Corporation | Non-volatile memory data storage with low read amplification |
US9870285B2 (en) | 2015-11-18 | 2018-01-16 | International Business Machines Corporation | Selectively de-straddling data pages in non-volatile memory |
US20180174006A1 (en) * | 2016-12-19 | 2018-06-21 | Electronics And Telecommunications Research Institute | Apparatus and method for generating 2d barcode and apparatus for extracting 2d barcode information |
US10102060B2 (en) | 2013-08-30 | 2018-10-16 | Hitachi, Ltd. | Storage apparatus and data control method of storing data with an error correction code |
US10139815B2 (en) * | 2014-02-28 | 2018-11-27 | Mitsubishi Heavy Industries Thermal Systems, Ltd. | Chiller control device, chiller, and chiller diagnostic method |
US20190012115A1 (en) * | 2017-07-07 | 2019-01-10 | Seagate Technology Llc | Runt Handling Data Storage System |
US20190065392A1 (en) * | 2017-08-23 | 2019-02-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices and methods of controlling the same |
CN109725846A (zh) * | 2017-10-27 | 2019-05-07 | 东芝存储器株式会社 | 存储器***及控制方法 |
US10503407B2 (en) | 2017-09-21 | 2019-12-10 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
US10552336B2 (en) | 2017-10-27 | 2020-02-04 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
WO2020071745A1 (en) * | 2018-10-01 | 2020-04-09 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive data transfer in a memory system |
US10635310B2 (en) | 2016-09-23 | 2020-04-28 | Toshiba Memory Corporation | Storage device that compresses data received from a host before writing therein |
US10679665B1 (en) * | 2019-04-03 | 2020-06-09 | Lite-On Electronics (Guangzhou) Limited | Control method of optical disc drive system when optical disc write failure occurs |
US10853234B2 (en) | 2017-03-22 | 2020-12-01 | Toshiba Memory Corporation | Memory controller |
US20220413770A1 (en) * | 2019-01-29 | 2022-12-29 | Kioxia Corporation | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region |
US11740818B2 (en) * | 2016-12-02 | 2023-08-29 | Nutanix, Inc. | Dynamic data compression |
US12040033B2 (en) * | 2021-04-06 | 2024-07-16 | Samsung Electronics Co., Ltd. | ECC buffer reduction in a memory device |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5851441B2 (ja) * | 2013-03-25 | 2016-02-03 | 株式会社東芝 | Nandフラッシュメモリコントローラ |
US9927998B2 (en) * | 2014-02-05 | 2018-03-27 | Tidal Systems, Inc. | Flash memory compression |
JP6725120B2 (ja) * | 2016-06-24 | 2020-07-15 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム |
JP7337228B2 (ja) * | 2018-09-19 | 2023-09-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP7500365B2 (ja) | 2020-09-14 | 2024-06-17 | キオクシア株式会社 | メモリシステム |
US20220238174A1 (en) * | 2021-01-27 | 2022-07-28 | Micron Technology, Inc. | Metadata storage at a memory device |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305295A (en) * | 1992-06-29 | 1994-04-19 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5652857A (en) * | 1995-03-09 | 1997-07-29 | Fujitsu Limited | Disk control apparatus for recording and reproducing compression data to physical device of direct access type |
US20020191692A1 (en) * | 2001-02-13 | 2002-12-19 | Realtime Data, Llc | Bandwidth sensitive data compression and decompression |
US20030035543A1 (en) * | 2001-08-15 | 2003-02-20 | Gillon William M. | System and method for conditional access key encryption |
US6823422B2 (en) * | 1999-10-21 | 2004-11-23 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card |
US7058769B1 (en) * | 2002-08-07 | 2006-06-06 | Nvidia Corporation | Method and system of improving disk access time by compression |
US20080062775A1 (en) * | 2006-09-08 | 2008-03-13 | Samsung Electronics Co., Ltd. | Fusion memory device and method |
US20080195833A1 (en) * | 2007-02-13 | 2008-08-14 | Samsung Electronics Co., Ltd. | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit |
US20080228992A1 (en) * | 2007-03-01 | 2008-09-18 | Douglas Dumitru | System, method and apparatus for accelerating fast block devices |
US20080307191A1 (en) * | 2007-06-07 | 2008-12-11 | International Business Machines Corporation | Method, system and computer program product for managing the storage of data |
US7647358B2 (en) * | 2004-03-22 | 2010-01-12 | Microsoft Corporation | Computing device with relatively limited storage space and operating/file system thereof |
US20100082537A1 (en) * | 2008-09-29 | 2010-04-01 | Menahem Lasser | File system for storage device which uses different cluster sizes |
US20100088464A1 (en) * | 2008-10-06 | 2010-04-08 | Xueshi Yang | Compression Based Wear Leveling for Non-Volatile Memory |
US20100161884A1 (en) * | 2008-12-24 | 2010-06-24 | Kabushiki Kaisha Toshiba | Nonvolatile Semiconductor Memory Drive, Information Processing Apparatus and Management Method of Storage Area in Nonvolatile Semiconductor Memory Drive |
US7941409B2 (en) * | 2007-09-11 | 2011-05-10 | Hitachi, Ltd. | Method and apparatus for managing data compression and integrity in a computer storage system |
US20110145486A1 (en) * | 2009-12-16 | 2011-06-16 | Tsutomu Owa | Memory management device and method |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774715A (en) * | 1996-03-27 | 1998-06-30 | Sun Microsystems, Inc. | File system level compression using holes |
JP3127853B2 (ja) * | 1997-04-30 | 2001-01-29 | 日本電気株式会社 | メモリ集積回路並びにこれを用いた主記憶システム及びグラフィクスメモリシステム |
KR100526188B1 (ko) * | 2003-12-30 | 2005-11-04 | 삼성전자주식회사 | 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리 |
US7424482B2 (en) * | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
JP2007094639A (ja) * | 2005-09-28 | 2007-04-12 | Tdk Corp | メモリコントローラ及びフラッシュメモリシステム |
JP2010003035A (ja) * | 2008-06-19 | 2010-01-07 | Fuji Xerox Co Ltd | データ処理装置 |
US9772936B2 (en) * | 2008-07-10 | 2017-09-26 | Micron Technology, Inc. | Data collection and compression in a solid state storage device |
JP2010182216A (ja) * | 2009-02-09 | 2010-08-19 | Panasonic Corp | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システムおよびプログラム |
US8645337B2 (en) * | 2009-04-30 | 2014-02-04 | Oracle International Corporation | Storing compression units in relational tables |
US8370544B2 (en) * | 2009-07-23 | 2013-02-05 | Stec, Inc. | Data storage system with compression/decompression |
JP5526641B2 (ja) * | 2009-08-03 | 2014-06-18 | 富士通株式会社 | メモリコントローラ |
US8176235B2 (en) * | 2009-12-04 | 2012-05-08 | International Business Machines Corporation | Non-volatile memories with enhanced write performance and endurance |
JP2011192260A (ja) | 2010-02-16 | 2011-09-29 | Toshiba Corp | 半導体記憶装置 |
JP5066209B2 (ja) | 2010-03-18 | 2012-11-07 | 株式会社東芝 | コントローラ、データ記憶装置、及びプログラム |
JP2011198272A (ja) * | 2010-03-23 | 2011-10-06 | Toshiba Corp | 半導体記憶装置および半導体記憶装置の制御方法 |
US8533550B2 (en) * | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
JP5066241B2 (ja) | 2010-09-24 | 2012-11-07 | 株式会社東芝 | メモリシステム |
US8630501B1 (en) * | 2011-01-28 | 2014-01-14 | Dr Systems, Inc. | Dual technique compression |
-
2012
- 2012-02-08 JP JP2012025497A patent/JP5687639B2/ja not_active Expired - Fee Related
- 2012-09-10 US US13/608,086 patent/US20130246721A1/en not_active Abandoned
-
2016
- 2016-07-11 US US15/207,308 patent/US10572187B2/en active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305295A (en) * | 1992-06-29 | 1994-04-19 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5652857A (en) * | 1995-03-09 | 1997-07-29 | Fujitsu Limited | Disk control apparatus for recording and reproducing compression data to physical device of direct access type |
US6823422B2 (en) * | 1999-10-21 | 2004-11-23 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card |
US20020191692A1 (en) * | 2001-02-13 | 2002-12-19 | Realtime Data, Llc | Bandwidth sensitive data compression and decompression |
US20030035543A1 (en) * | 2001-08-15 | 2003-02-20 | Gillon William M. | System and method for conditional access key encryption |
US7058769B1 (en) * | 2002-08-07 | 2006-06-06 | Nvidia Corporation | Method and system of improving disk access time by compression |
US7647358B2 (en) * | 2004-03-22 | 2010-01-12 | Microsoft Corporation | Computing device with relatively limited storage space and operating/file system thereof |
US20080062775A1 (en) * | 2006-09-08 | 2008-03-13 | Samsung Electronics Co., Ltd. | Fusion memory device and method |
US20080195833A1 (en) * | 2007-02-13 | 2008-08-14 | Samsung Electronics Co., Ltd. | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit |
US20080228992A1 (en) * | 2007-03-01 | 2008-09-18 | Douglas Dumitru | System, method and apparatus for accelerating fast block devices |
US20080307191A1 (en) * | 2007-06-07 | 2008-12-11 | International Business Machines Corporation | Method, system and computer program product for managing the storage of data |
US7941409B2 (en) * | 2007-09-11 | 2011-05-10 | Hitachi, Ltd. | Method and apparatus for managing data compression and integrity in a computer storage system |
US20100082537A1 (en) * | 2008-09-29 | 2010-04-01 | Menahem Lasser | File system for storage device which uses different cluster sizes |
US20100088464A1 (en) * | 2008-10-06 | 2010-04-08 | Xueshi Yang | Compression Based Wear Leveling for Non-Volatile Memory |
US20100161884A1 (en) * | 2008-12-24 | 2010-06-24 | Kabushiki Kaisha Toshiba | Nonvolatile Semiconductor Memory Drive, Information Processing Apparatus and Management Method of Storage Area in Nonvolatile Semiconductor Memory Drive |
US20110145486A1 (en) * | 2009-12-16 | 2011-06-16 | Tsutomu Owa | Memory management device and method |
Non-Patent Citations (3)
Title |
---|
Hu, Xiao-yu et al. "Write Amplification Analysis in Flash-Based Solid State Drives". Published in 2009. * |
Necrovore. "Sector Size vs. Cluster Size". . Posted February 19, 2011. * |
patpatboy2. "Increasing Available Hard Drive Space By Compressing Files". <https://www.youtube.com/watch?annotation_id=annotation_424106&feature=iv&src_vid=xY0sLcD95g8&v=suJB9TLr2PE>. Uploaded July 14, 2011.Included are two screenshots of the most pertinent frames of the video. * |
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489997B2 (en) * | 2013-07-03 | 2016-11-08 | Crossbar, Inc. | Hardware assisted meta data lookup |
US20150012694A1 (en) * | 2013-07-03 | 2015-01-08 | Crossbar, Inc. | Hardware assisted meta data lookup |
US10102060B2 (en) | 2013-08-30 | 2018-10-16 | Hitachi, Ltd. | Storage apparatus and data control method of storing data with an error correction code |
US9760304B2 (en) | 2013-09-06 | 2017-09-12 | Western Digital Technologies, Inc. | High performance system for selective merging of dataframe segments |
US9304709B2 (en) | 2013-09-06 | 2016-04-05 | Western Digital Technologies, Inc. | High performance system providing selective merging of dataframe segments in hardware |
US20150149739A1 (en) * | 2013-11-25 | 2015-05-28 | Research & Business Foundation Sungkyunkwan University | Method of storing data in distributed manner based on technique of predicting data compression ratio, and storage device and system using same |
US9606750B2 (en) * | 2013-11-25 | 2017-03-28 | Research And Business Foundation Sungkyunkwan University | Method of storing data in distributed manner based on technique of predicting data compression ratio, and storage device and system using same |
WO2015094800A1 (en) * | 2013-12-20 | 2015-06-25 | Sandisk Technologies Inc. | Systems and methods of compressing data |
KR20160105802A (ko) * | 2013-12-20 | 2016-09-07 | 샌디스크 테크놀로지스 엘엘씨 | 데이터를 압축하는 시스템들 및 방법들 |
CN105874420A (zh) * | 2013-12-20 | 2016-08-17 | 桑迪士克科技有限责任公司 | 对数据进行压缩的***和方法 |
KR102051179B1 (ko) | 2013-12-20 | 2020-01-08 | 샌디스크 테크놀로지스 엘엘씨 | 데이터를 압축하는 시스템들 및 방법들 |
US9959072B2 (en) * | 2013-12-20 | 2018-05-01 | Sandisk Technologies Llc | Systems and methods of compressing data |
US20150178013A1 (en) * | 2013-12-20 | 2015-06-25 | Sandisk Technologies Inc. | Systems and methods of compressing data |
US10139815B2 (en) * | 2014-02-28 | 2018-11-27 | Mitsubishi Heavy Industries Thermal Systems, Ltd. | Chiller control device, chiller, and chiller diagnostic method |
US20160004545A1 (en) * | 2014-04-30 | 2016-01-07 | Huawei Technologies Co., Ltd. | Method and embedded device for loading driver |
US9875118B2 (en) * | 2014-04-30 | 2018-01-23 | Huawei Technologies Co., Ltd. | Method and embedded device for loading driver |
US9710199B2 (en) | 2014-11-07 | 2017-07-18 | International Business Machines Corporation | Non-volatile memory data storage with low read amplification |
US10162700B2 (en) | 2014-12-23 | 2018-12-25 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
DE112015005742B4 (de) | 2014-12-23 | 2023-03-23 | International Business Machines Corporation | Lastadaptiver algorithmus zum packen von daten |
WO2016103112A1 (en) * | 2014-12-23 | 2016-06-30 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
CN107111562A (zh) * | 2014-12-23 | 2017-08-29 | 国际商业机器公司 | 工作负荷自适应数据打包算法 |
GB2554508A (en) * | 2014-12-23 | 2018-04-04 | Ibm | Workload-adaptive data packing algorithm |
GB2554508B (en) * | 2014-12-23 | 2019-01-16 | Ibm | Workload-adaptive data packing algorithm |
US9793929B2 (en) | 2015-09-24 | 2017-10-17 | International Business Machines Corporation | Data packing for compression-enabled storage systems |
US9712190B2 (en) | 2015-09-24 | 2017-07-18 | International Business Machines Corporation | Data packing for compression-enabled storage systems |
US9870285B2 (en) | 2015-11-18 | 2018-01-16 | International Business Machines Corporation | Selectively de-straddling data pages in non-volatile memory |
US10528424B2 (en) | 2015-11-18 | 2020-01-07 | International Business Machines Corporation | Selectively de-straddling data pages in non-volatile memory |
US10635310B2 (en) | 2016-09-23 | 2020-04-28 | Toshiba Memory Corporation | Storage device that compresses data received from a host before writing therein |
US11740818B2 (en) * | 2016-12-02 | 2023-08-29 | Nutanix, Inc. | Dynamic data compression |
US10152662B2 (en) * | 2016-12-19 | 2018-12-11 | Electronics And Telecommunications Research Institute | Apparatus and method for generating 2D barcode and apparatus for extracting 2D barcode information |
US20180174006A1 (en) * | 2016-12-19 | 2018-06-21 | Electronics And Telecommunications Research Institute | Apparatus and method for generating 2d barcode and apparatus for extracting 2d barcode information |
US10853234B2 (en) | 2017-03-22 | 2020-12-01 | Toshiba Memory Corporation | Memory controller |
US20190012115A1 (en) * | 2017-07-07 | 2019-01-10 | Seagate Technology Llc | Runt Handling Data Storage System |
US10564890B2 (en) * | 2017-07-07 | 2020-02-18 | Seagate Technology Llc | Runt handling data storage system |
US10606760B2 (en) * | 2017-08-23 | 2020-03-31 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices and methods of controlling the same |
US20190065392A1 (en) * | 2017-08-23 | 2019-02-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices and methods of controlling the same |
US10503407B2 (en) | 2017-09-21 | 2019-12-10 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
US11709597B2 (en) | 2017-09-21 | 2023-07-25 | Kioxia Corporation | Memory system and method for controlling nonvolatile memory |
US11093137B2 (en) | 2017-09-21 | 2021-08-17 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
CN109725846A (zh) * | 2017-10-27 | 2019-05-07 | 东芝存储器株式会社 | 存储器***及控制方法 |
US10719437B2 (en) * | 2017-10-27 | 2020-07-21 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
US11347655B2 (en) | 2017-10-27 | 2022-05-31 | Kioxia Corporation | Memory system and method for controlling nonvolatile memory |
US11416387B2 (en) | 2017-10-27 | 2022-08-16 | Kioxia Corporation | Memory system and method for controlling nonvolatile memory |
US10552336B2 (en) | 2017-10-27 | 2020-02-04 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
US11748256B2 (en) | 2017-10-27 | 2023-09-05 | Kioxia Corporation | Memory system and method for controlling nonvolatile memory |
US11954043B2 (en) | 2017-10-27 | 2024-04-09 | Kioxia Corporation | Memory system and method for controlling nonvolatile memory |
US11550509B2 (en) | 2018-10-01 | 2023-01-10 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive data transfer in a memory system |
WO2020071745A1 (en) * | 2018-10-01 | 2020-04-09 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive data transfer in a memory system |
US20220413770A1 (en) * | 2019-01-29 | 2022-12-29 | Kioxia Corporation | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region |
US11829648B2 (en) * | 2019-01-29 | 2023-11-28 | Kioxia Corporation | Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region |
US10679665B1 (en) * | 2019-04-03 | 2020-06-09 | Lite-On Electronics (Guangzhou) Limited | Control method of optical disc drive system when optical disc write failure occurs |
US12040033B2 (en) * | 2021-04-06 | 2024-07-16 | Samsung Electronics Co., Ltd. | ECC buffer reduction in a memory device |
Also Published As
Publication number | Publication date |
---|---|
US10572187B2 (en) | 2020-02-25 |
JP2013161447A (ja) | 2013-08-19 |
JP5687639B2 (ja) | 2015-03-18 |
US20160321015A1 (en) | 2016-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10572187B2 (en) | Controller, data storage device, and computer program product | |
US9343153B2 (en) | De-duplication in flash memory module | |
US10628060B2 (en) | Smart storage management based on dynamic logic capacity for the storage | |
JP6134857B2 (ja) | 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法 | |
US8806108B2 (en) | Semiconductor storage apparatus and method of controlling semiconductor storage apparatus | |
US9208067B2 (en) | Storage system and storage control method that compress and store data elements | |
JP6265746B2 (ja) | 記憶アドレス空間と不揮発性メモリのアドレス、範囲、および長さとの間のマッピング/変換 | |
US10481797B2 (en) | Data storage device for compressing input data | |
US8214620B2 (en) | Computer-readable recording medium storing data storage program, computer, and method thereof | |
US20180276114A1 (en) | Memory controller | |
US10191840B2 (en) | Mapping table updating method, memory control circuit unit and memory storage device | |
US10552044B2 (en) | Storage apparatus, data processing method and storage system wherein compressed data is read in parallel, said data stored in buffer by size and read from said buffer, in order of when said data is stored in said buffer | |
WO2014188528A1 (ja) | メモリ装置、計算機システム及びメモリ装置の制御方法 | |
US10313471B2 (en) | Persistent-memory management | |
JPWO2014147671A1 (ja) | 圧縮装置、圧縮方法、伸張装置、伸張方法および情報処理システム | |
CN110795272A (zh) | 用于在可变大小的i/o上促进的原子性和延迟保证的方法和*** | |
US20200293439A1 (en) | Memory system | |
US20180203615A1 (en) | Storage control device, storage control method, and computer readable recording medium | |
WO2018061161A1 (ja) | ストレージ装置およびその制御方法 | |
US20210064524A1 (en) | Memory system | |
JP2018132991A (ja) | 情報処理装置、データ圧縮方法及びデータ圧縮プログラム | |
US20160313932A1 (en) | Data storage system and device | |
JP2013131146A (ja) | データ読出しシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: KABUSHIKI KAISHA TOSHIBA, JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FUKUTOMI, KAZUHIRO;KANNO, SHINICHI;REEL/FRAME:029335/0155 Effective date: 20121023 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |