US20190026045A1 - Storage Device and Data Control Method for Storage Error Control - Google Patents
Storage Device and Data Control Method for Storage Error Control Download PDFInfo
- Publication number
- US20190026045A1 US20190026045A1 US16/142,994 US201816142994A US2019026045A1 US 20190026045 A1 US20190026045 A1 US 20190026045A1 US 201816142994 A US201816142994 A US 201816142994A US 2019026045 A1 US2019026045 A1 US 2019026045A1
- Authority
- US
- United States
- Prior art keywords
- data
- spare
- spare block
- block
- storage device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
- G06F3/064—Management of blocks
-
- 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/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/74—Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
Definitions
- the present invention relates to data storage technology, and more particularly to a storage device, a control unit thereof, and a data storing method for storage device.
- storage device is mainly constituted by a control unit and a data storage medium (for example, a flash memory).
- the data storage medium includes a plurality of physical blocks, and each physical block includes a plurality of data pages.
- the control unit is electrically coupled to the data storage medium and configured to perform data write, data read or data erase on the data pages in the physical blocks.
- the storage device may have data integrity issues caused by frequent data moving, defect in the manufacturing process and aging of data after long-term usage. Therefore, once data write is completed, the control unit of the storage device may use error correcting code (ECC) to perform a correcting operation on the data stored in the storage device.
- ECC error correcting code
- the correcting capability of the error correcting code has a limitation (e.g., 60 bits). Therefore, once the data stored in the data pages has an error greater than 60 bits, the stored data may not be corrected by the error correcting code and an error correcting code invalid issue would happen, leading to loss of validity of the data stored in the storage device.
- One objective of the present invention is to provide a storage device.
- the storage device When performing a data write operation, the storage device would make a backup of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the storage device may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the storage device may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- Another objective of the present invention is to provide a control unit of a storage device.
- the control unit When performing a data write operation, the control unit would make a backup of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the control unit may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the control unit may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- Still another objective of the present invention is to provide a data storing method for a storage device.
- the data storing method When performing a data write operation, the data storing method would make a backup of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the data storing method may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the data storing method may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- the present invention provides a storage device, which includes a data storage medium and a control unit.
- the data storage medium includes a spare block pool.
- the spare block pool includes a plurality of spare blocks.
- Each one of the plurality of spare blocks includes a plurality of data pages.
- the control unit is electrically coupled to the data storage medium.
- the control unit is configured to receive data from a host and to determine whether the data is sequential data according to a default policy.
- the data is written into at least two of the plurality of data pages in one of the plurality of spare blocks respectively.
- the present invention further provides a control unit, which includes a control logic and a microprocessor.
- the control logic is electrically coupled to a data storage medium.
- the data storage medium includes a spare block pool.
- the spare block pool is for storing a plurality of spare blocks. Each one of the plurality of spare blocks includes a plurality of data pages.
- the microprocessor is electrically coupled to the control logic.
- the microprocessor is configured to receive data from a host and determine whether the data is sequential data. If the determination is true, the microprocessor is configured to write the data into at least two of the plurality of spare blocks via the control logic respectively. If the determination is false, the microprocessor is configured to write the data into at least two of the plurality of data pages in one of the plurality of spare blocks via the control logic respectively.
- the present invention still further provides a data storing method for a storage device, which includes the steps of: receiving data from a host; determining whether the data is sequential data; if the determination is true, writing the data into at least two spare blocks respectively, wherein the at least two spare blocks are selected from a plurality of spare blocks of a spare block pool, and each one of the plurality of spare blocks comprises a plurality of data pages; or if the determination is false, writing the data into at least two of the plurality of data pages in one of the plurality of spare blocks in the spare block pool respectively.
- the present invention when performing a data write operation, the present invention would make a copy of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the present invention may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the present invention may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- FIG. 1 is a schematic circuit block view of a storage device in accordance with an embodiment of the present invention.
- FIG. 2 is a flowchart of a data storing method for a storage device in accordance with an embodiment of the present invention.
- FIG. 1 is a schematic circuit block view of a storage device in accordance with an embodiment of the present invention.
- the storage device 100 of the present embodiment mainly includes a control unit 110 and a data storage medium 120 .
- the data storage medium 120 logically includes an in-use block pool 130 and a spare block pool 140 .
- the spare block pool 140 is for storing spare blocks not written with any (valid) data, such as the spare blocks 141 -K; wherein K is a natural number.
- the spare block is re-defined as an in-use block, such as the in-use blocks 131 -M, and moved to the in-use block pool 130 ; wherein M is a natural number.
- both of the spare blocks 141 -K and the in-use blocks 131 -M are essentially physical blocks and can be interchanged logically. That is, the logical amount of the in-use blocks can be adjusted according to a user's requirement. As shown in FIG.
- each in-use block logically includes a plurality of data pages such as the data pages P 1 , P 2 , P 3 , P 4 , . . . , and PN, wherein N is a natural number.
- the data storage medium 120 is realized by a non-volatile random-access memory with longer data retention time, such as flash memory, magnetoresistive random access memory (Magnetoresistive RAM), ferroelectric random access memory (Ferroelectric RAM), etc.
- the control unit 110 is electrically coupled to the data storage medium 120 and configured to control an operation (e.g., data access or erase) of the data storage medium 120 .
- the control unit 110 includes an interface logic 112 , a microprocessor 114 and a control logic 116 .
- the microprocessor 114 is electrically coupled to the interface logic 112 , via which the microprocessor 114 is configured to receive commands (e.g., write command, read command, erase command, etc.) or data from a host (e.g., an electronic device such as computer, mobile phone or digital camera with arithmetic function [not shown]).
- the microprocessor 114 is further electrically coupled to the data storage medium 120 via the control logic 116 .
- the microprocessor 114 is further configured to perform data access or data erase on the data storage medium 120 via the control logic 116 .
- the microprocessor 114 when receiving a write command and data from a host, the microprocessor 114 would first determine whether the received data is sequential data.
- the sequential data means that the logic block addresses (LBA) corresponding thereto are sequentially continuous.
- the number of sequentially-continuous logic block address for the determination of sequential data is not necessarily set to two and may be set to other values according to a user's requirement. For example, if the number of sequentially-continuous logic block address for the determination of sequential data is set to four, the microprocessor 114 would only determine the data with more than four sequentially-continuous logic block addresses as sequential data; otherwise non-sequential data would be determined. Then, the microprocessor 114 adopts a data storage mean for the data storage medium 120 specific to the determination result of the received data.
- the microprocessor 114 selects one spare block from the spare block pool 140 via the control logic 116 and writes the data into two data pages of the selected spare block via the control logic 116 , respectively. For example, the microprocessor 114 first selects the spare block 141 from the spare block pool 140 via the control logic 116 , and then writes the received data into the data page P 1 as well as a backup into the data page P 2 of the spare block 141 . In other words, both of the received data and the backup thereof are stored in the same spare block 141 .
- the data page P 1 and the data page P 2 are two adjacent data pages, as illustrated in FIG. 1 .
- the data page P 1 and the data page P 2 are not necessarily adjacent to each other in another embodiment; for example, the microprocessor 114 may use a specific equation or a random number generator to select the two data pages, but the present invention is not limited thereto.
- the number of backup can be more than one. In one embodiment, for example, the number of backup is two and the microprocessor 114 may further write the received data (another backup) into the data page P 3 of the spare block 141 . Similarly, the received data and the two backups thereof are stored in the same spare block 141 .
- the spare block 141 having the least number of data erase or having the longest time since the last data erase may be selected among the spare blocks 141 -K in the spare block pool 140 .
- the microprocessor 114 selects two spare blocks from the spare block pool 140 via the control logic 116 and writes the data into the two selected spare blocks via the control logic 116 , respectively. For example, the microprocessor 114 first selects the spare blocks 142 , 143 from the spare block pool 140 via the control logic 116 , and then writes the received data into the data page P 1 of the spare block 142 as well as a backup into the data page P 1 of the spare block 143 .
- the microprocessor 114 When the two selected spare blocks are written and filled with data (i.e., all the data pages thereof are written and filled with data), the microprocessor 114 then starts a data verification process; that is, the microprocessor 114 uses error correcting code to perform a correcting operation on the data in each data page of the two spare blocks. When any one of the data pages in any spare block has an error correcting code invalid issue, that spare block is determined as having an error correcting code invalid issue. Then, the microprocessor 114 determines whether to perform a data integration on the two spare blocks according to whether an error correcting code invalid issue is present. In addition, for specific purposes, the microprocessor 114 may initiate write of dummy data into the blank data page in a spare block, so as to allow the spare block written and filled with data to enter the data verification process.
- the microprocessor 114 re-defines the spare block (or one of the spare blocks) not having the error correcting code invalid issue as an in-use block and moves the in-use block into the in-use block pool 130 via the control logic 116 .
- the remaining spare block is recycled; that is, the remaining spare block is erased and moved to the spare block pool 140 .
- the microprocessor 114 selecting the spare blocks 142 and 143 is taken as an example. In this example, it is assumed that both of the spare blocks 142 , 143 are written and filled with data and that the spare block 142 has an error correcting code invalid issue whereas the spare block 143 does not have so. Then, the microprocessor 114 re-defines the spare block 143 as an in-use block and moves this in-use block into the in-use block pool 130 via the control logic 116 . In addition, the microprocessor 114 erases the data in the spare block 142 and moves the spare block 142 into the spare block pool 140 via the control logic 116 .
- the microprocessor 114 further selects one spare block (referred to as the third spare block) from the spare block pool 140 and stores the data in the data pages not having an error correcting code invalid issue in the two selected spare blocks that are written and filled with data into the data pages in the third spare blocks. Then, when the third spare block is written and filled with data and verified by the data verification process, the microprocessor 114 defines the third spare block as an in-use block and moves the third spare block into the in-use block pool 130 . Then, the two selected spare blocks are erased and moved to the spare block pool 140 .
- the third spare block referred to as the third spare block
- the microprocessor 114 selecting the spare blocks 142 and 143 is taken as an example.
- both of the spare blocks 142 , 143 are written and filled with data;
- the data pages P 1 , PN in the spare block 142 have an error correcting code invalid issue;
- the data page P 1 , PN in the spare block 143 does not have an error correcting code invalid issue;
- the data pages P 2 , PN- 1 in the spare block 143 have an error correcting code invalid issue;
- the data page P 2 , PN- 1 in the spare block 142 does not have an error correcting code invalid issue.
- the microprocessor 114 further selects one spare block (e.g., the spare block 144 ) from the spare block pool 140 as the third spare block and stores the data in the data pages P 2 -PN- 1 of the spare block 142 and the data pages P 1 , PN of the spare page 143 , into the spare block 144 .
- the microprocessor 114 may further re-verify the data to make sure the data has been correctly written into the spare block 144 .
- the microprocessor 114 further selects one spare block (e.g., the spare block 145 ) from the spare block pool 140 via the control logic 116 , refers the selected spare block 145 as the third spare block, and then repeats the aforementioned process. Then, when the third spare block is written and filled with data and verified by the data verification process, the microprocessor 114 defines the third spare block as an in-use block and moves the third spare block into the in-use block pool 130 . In addition, the microprocessor 114 erases the data of the spare blocks 142 , 143 and moves the spare blocks 142 , 143 into the spare block pool 140 via the control logic 116 .
- one spare block e.g., the spare block 145
- the microprocessor 114 defines the third spare block as an in-use block and moves the third spare block into the in-use block pool 130 .
- the microprocessor 114 erases the data of the spare blocks 142 , 143 and moves the spare blocks 142 , 143 into the spare block
- FIG. 2 is a flowchart of a data storing method for a storage device in accordance with an embodiment of the present invention.
- the data storing method for a storage device of the present embodiment includes steps of: first, receiving data from a host (step S 201 ); then, determining whether the data is sequential data (step S 202 ); if yes, writing the data into at least two spare blocks respectively, wherein the at least two spare blocks are selected from a spare block pool and both include a plurality of data pages (step S 203 ); alternatively, if no, writing the data into at least two data pages of a spare block selected from the spare block pool respectively (S 204 ).
- the present invention when performing a data write operation, the present invention would make a backup of the written data. Therefore, once any one of these two data has an error correcting code invalid issue, the present invention may select and store another data not having the error correcting code invalid issue g. Or, if both of these two data have the error correcting code invalid issue, the present invention may integrate the pieces of these two data to form one data without the error correcting code invalid issue. As a result, data loss is avoided.
Abstract
Description
- This application is a continuation application of an application Ser. No. 15/396,784, filed on Jan. 02, 2017, and based upon and claims the benefit of priority from the prior Taiwanese Patent Application No. 105107810, filed Mar. 14, 2016, the entire contents of which are incorporated herein by reference.
- The present invention relates to data storage technology, and more particularly to a storage device, a control unit thereof, and a data storing method for storage device.
- In general, storage device is mainly constituted by a control unit and a data storage medium (for example, a flash memory). The data storage medium includes a plurality of physical blocks, and each physical block includes a plurality of data pages. The control unit is electrically coupled to the data storage medium and configured to perform data write, data read or data erase on the data pages in the physical blocks.
- However, the storage device may have data integrity issues caused by frequent data moving, defect in the manufacturing process and aging of data after long-term usage. Therefore, once data write is completed, the control unit of the storage device may use error correcting code (ECC) to perform a correcting operation on the data stored in the storage device. However, the correcting capability of the error correcting code has a limitation (e.g., 60 bits). Therefore, once the data stored in the data pages has an error greater than 60 bits, the stored data may not be corrected by the error correcting code and an error correcting code invalid issue would happen, leading to loss of validity of the data stored in the storage device.
- One objective of the present invention is to provide a storage device. When performing a data write operation, the storage device would make a backup of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the storage device may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the storage device may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- Another objective of the present invention is to provide a control unit of a storage device. When performing a data write operation, the control unit would make a backup of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the control unit may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the control unit may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- Still another objective of the present invention is to provide a data storing method for a storage device. When performing a data write operation, the data storing method would make a backup of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the data storing method may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the data storing method may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- The present invention provides a storage device, which includes a data storage medium and a control unit. The data storage medium includes a spare block pool. The spare block pool includes a plurality of spare blocks. Each one of the plurality of spare blocks includes a plurality of data pages. The control unit is electrically coupled to the data storage medium. The control unit is configured to receive data from a host and to determine whether the data is sequential data according to a default policy. The data is written into at least two of the plurality of data pages in one of the plurality of spare blocks respectively.
- The present invention further provides a control unit, which includes a control logic and a microprocessor. The control logic is electrically coupled to a data storage medium. The data storage medium includes a spare block pool. The spare block pool is for storing a plurality of spare blocks. Each one of the plurality of spare blocks includes a plurality of data pages. The microprocessor is electrically coupled to the control logic. The microprocessor is configured to receive data from a host and determine whether the data is sequential data. If the determination is true, the microprocessor is configured to write the data into at least two of the plurality of spare blocks via the control logic respectively. If the determination is false, the microprocessor is configured to write the data into at least two of the plurality of data pages in one of the plurality of spare blocks via the control logic respectively.
- The present invention still further provides a data storing method for a storage device, which includes the steps of: receiving data from a host; determining whether the data is sequential data; if the determination is true, writing the data into at least two spare blocks respectively, wherein the at least two spare blocks are selected from a plurality of spare blocks of a spare block pool, and each one of the plurality of spare blocks comprises a plurality of data pages; or if the determination is false, writing the data into at least two of the plurality of data pages in one of the plurality of spare blocks in the spare block pool respectively.
- In summary, when performing a data write operation, the present invention would make a copy of the written data. Therefore, once any one of the two pieces of data has an error correcting code invalid issue, the present invention may select and store the other piece of data not having the error correcting code invalid issue. Or, if both of the two pieces of data have the error correcting code invalid issue, the present invention may integrate the data pages of the two pieces of data to form one piece of data without the error correcting code invalid issue. As a result, data loss is avoided.
- Other advantages, objectives and features of the present invention will become apparent from the following description referring to the attached drawings.
-
FIG. 1 is a schematic circuit block view of a storage device in accordance with an embodiment of the present invention; and -
FIG. 2 is a flowchart of a data storing method for a storage device in accordance with an embodiment of the present invention. - The present invention will now be described more specifically with reference to the following embodiments. It is to be noted that the following descriptions of preferred embodiments of this invention are presented herein for purpose of illustration and description only. It is not intended to be exhaustive or to be limited to the precise form disclosed.
-
FIG. 1 is a schematic circuit block view of a storage device in accordance with an embodiment of the present invention. As shown inFIG. 1 , thestorage device 100 of the present embodiment mainly includes acontrol unit 110 and adata storage medium 120. Thedata storage medium 120 logically includes an in-use block pool 130 and aspare block pool 140. Thespare block pool 140 is for storing spare blocks not written with any (valid) data, such as the spare blocks 141-K; wherein K is a natural number. Once a spare block is written and filled with data, the spare block is re-defined as an in-use block, such as the in-use blocks 131-M, and moved to the in-use block pool 130; wherein M is a natural number. When a garbage collection process is performed, the data in a plurality of related in-use blocks is written to a spare block. Then, after a data erase process is performed, the plurality of in-use blocks are re-defined as spare blocks and moved to thespare block pool 140; and the spare block with written data is re-defined as an in-use block and moved to the in-use block pool 130. Therefore, it is understood that both of the spare blocks 141-K and the in-use blocks 131-M are essentially physical blocks and can be interchanged logically. That is, the logical amount of the in-use blocks can be adjusted according to a user's requirement. As shown inFIG. 1 , each in-use block logically includes a plurality of data pages such as the data pages P1, P2, P3, P4, . . . , and PN, wherein N is a natural number. In the present embodiment, thedata storage medium 120 is realized by a non-volatile random-access memory with longer data retention time, such as flash memory, magnetoresistive random access memory (Magnetoresistive RAM), ferroelectric random access memory (Ferroelectric RAM), etc. - As shown in
FIG. 1 , thecontrol unit 110 is electrically coupled to thedata storage medium 120 and configured to control an operation (e.g., data access or erase) of thedata storage medium 120. In the present embodiment, thecontrol unit 110 includes aninterface logic 112, amicroprocessor 114 and acontrol logic 116. Themicroprocessor 114 is electrically coupled to theinterface logic 112, via which themicroprocessor 114 is configured to receive commands (e.g., write command, read command, erase command, etc.) or data from a host (e.g., an electronic device such as computer, mobile phone or digital camera with arithmetic function [not shown]). Themicroprocessor 114 is further electrically coupled to thedata storage medium 120 via thecontrol logic 116. Themicroprocessor 114 is further configured to perform data access or data erase on thedata storage medium 120 via thecontrol logic 116. - In the present embodiment, when receiving a write command and data from a host, the
microprocessor 114 would first determine whether the received data is sequential data. Herein, the sequential data means that the logic block addresses (LBA) corresponding thereto are sequentially continuous. In addition, the number of sequentially-continuous logic block address for the determination of sequential data is not necessarily set to two and may be set to other values according to a user's requirement. For example, if the number of sequentially-continuous logic block address for the determination of sequential data is set to four, themicroprocessor 114 would only determine the data with more than four sequentially-continuous logic block addresses as sequential data; otherwise non-sequential data would be determined. Then, themicroprocessor 114 adopts a data storage mean for thedata storage medium 120 specific to the determination result of the received data. - When it is determined that the data from a host is not sequential data, the
microprocessor 114 selects one spare block from thespare block pool 140 via thecontrol logic 116 and writes the data into two data pages of the selected spare block via thecontrol logic 116, respectively. For example, themicroprocessor 114 first selects thespare block 141 from thespare block pool 140 via thecontrol logic 116, and then writes the received data into the data page P1 as well as a backup into the data page P2 of thespare block 141. In other words, both of the received data and the backup thereof are stored in the samespare block 141. In one preferred embodiment, the data page P1 and the data page P2 are two adjacent data pages, as illustrated inFIG. 1 . However, the data page P1 and the data page P2 are not necessarily adjacent to each other in another embodiment; for example, themicroprocessor 114 may use a specific equation or a random number generator to select the two data pages, but the present invention is not limited thereto. In addition, the number of backup can be more than one. In one embodiment, for example, the number of backup is two and themicroprocessor 114 may further write the received data (another backup) into the data page P3 of thespare block 141. Similarly, the received data and the two backups thereof are stored in the samespare block 141. - To comply with the management of wear leveling, the
spare block 141 having the least number of data erase or having the longest time since the last data erase may be selected among the spare blocks 141-K in thespare block pool 140. - Alternatively, when it is determined that the data from a host is sequential data, the
microprocessor 114 selects two spare blocks from thespare block pool 140 via thecontrol logic 116 and writes the data into the two selected spare blocks via thecontrol logic 116, respectively. For example, themicroprocessor 114 first selects the spare blocks 142, 143 from thespare block pool 140 via thecontrol logic 116, and then writes the received data into the data page P1 of the spare block 142 as well as a backup into the data page P1 of the spare block 143. - When the two selected spare blocks are written and filled with data (i.e., all the data pages thereof are written and filled with data), the
microprocessor 114 then starts a data verification process; that is, themicroprocessor 114 uses error correcting code to perform a correcting operation on the data in each data page of the two spare blocks. When any one of the data pages in any spare block has an error correcting code invalid issue, that spare block is determined as having an error correcting code invalid issue. Then, themicroprocessor 114 determines whether to perform a data integration on the two spare blocks according to whether an error correcting code invalid issue is present. In addition, for specific purposes, themicroprocessor 114 may initiate write of dummy data into the blank data page in a spare block, so as to allow the spare block written and filled with data to enter the data verification process. - When the data verification process is performed and it is determined that both of the two selected spare blocks do not have an error correcting code invalid issue or only one spare block has an error correcting code invalid issue, then the
microprocessor 114 re-defines the spare block (or one of the spare blocks) not having the error correcting code invalid issue as an in-use block and moves the in-use block into the in-use block pool 130 via thecontrol logic 116. The remaining spare block is recycled; that is, the remaining spare block is erased and moved to thespare block pool 140. - Herein the
microprocessor 114 selecting the spare blocks 142 and 143 is taken as an example. In this example, it is assumed that both of the spare blocks 142, 143 are written and filled with data and that the spare block 142 has an error correcting code invalid issue whereas the spare block 143 does not have so. Then, themicroprocessor 114 re-defines the spare block 143 as an in-use block and moves this in-use block into the in-use block pool 130 via thecontrol logic 116. In addition, themicroprocessor 114 erases the data in the spare block 142 and moves the spare block 142 into thespare block pool 140 via thecontrol logic 116. - Alternatively, when the data verification process is performed and it is determined that both of the two selected spare blocks have an error correcting code invalid issue, then the
microprocessor 114 further selects one spare block (referred to as the third spare block) from thespare block pool 140 and stores the data in the data pages not having an error correcting code invalid issue in the two selected spare blocks that are written and filled with data into the data pages in the third spare blocks. Then, when the third spare block is written and filled with data and verified by the data verification process, themicroprocessor 114 defines the third spare block as an in-use block and moves the third spare block into the in-use block pool 130. Then, the two selected spare blocks are erased and moved to thespare block pool 140. - Herein the
microprocessor 114 selecting the spare blocks 142 and 143 is taken as an example. In this example, it is assumed that both of the spare blocks 142, 143 are written and filled with data; the data pages P1, PN in the spare block 142 have an error correcting code invalid issue; the data page P1, PN in the spare block 143 does not have an error correcting code invalid issue; the data pages P2, PN-1 in the spare block 143 have an error correcting code invalid issue; and the data page P2, PN-1 in the spare block 142 does not have an error correcting code invalid issue. Then, themicroprocessor 114 further selects one spare block (e.g., the spare block 144) from thespare block pool 140 as the third spare block and stores the data in the data pages P2-PN-1 of the spare block 142 and the data pages P1, PN of the spare page 143, into the spare block 144. During the data verification process and after the data is written into the spare block 144, themicroprocessor 114 may further re-verify the data to make sure the data has been correctly written into the spare block 144. If it is determined that the data page in thespare block 114 also has the error correcting code invalid issue, themicroprocessor 114 further selects one spare block (e.g., the spare block 145) from thespare block pool 140 via thecontrol logic 116, refers the selected spare block 145 as the third spare block, and then repeats the aforementioned process. Then, when the third spare block is written and filled with data and verified by the data verification process, themicroprocessor 114 defines the third spare block as an in-use block and moves the third spare block into the in-use block pool 130. In addition, themicroprocessor 114 erases the data of the spare blocks 142, 143 and moves the spare blocks 142, 143 into thespare block pool 140 via thecontrol logic 116. - A data storing method for a storage device can be developed according to the above teachings.
FIG. 2 is a flowchart of a data storing method for a storage device in accordance with an embodiment of the present invention. As shown inFIG. 2 , the data storing method for a storage device of the present embodiment includes steps of: first, receiving data from a host (step S201); then, determining whether the data is sequential data (step S202); if yes, writing the data into at least two spare blocks respectively, wherein the at least two spare blocks are selected from a spare block pool and both include a plurality of data pages (step S203); alternatively, if no, writing the data into at least two data pages of a spare block selected from the spare block pool respectively (S204). - In summary, when performing a data write operation, the present invention would make a backup of the written data. Therefore, once any one of these two data has an error correcting code invalid issue, the present invention may select and store another data not having the error correcting code invalid issue g. Or, if both of these two data have the error correcting code invalid issue, the present invention may integrate the pieces of these two data to form one data without the error correcting code invalid issue. As a result, data loss is avoided.
- While the invention has been described in terms of what is presently considered to be the most practical and preferred embodiments, it is to be understood that the invention needs not be limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims which are to be accorded with the broadest interpretation so as to encompass all such modifications and similar structures.
Claims (4)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/142,994 US20190026045A1 (en) | 2016-03-14 | 2018-09-26 | Storage Device and Data Control Method for Storage Error Control |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105107810A TWI639112B (en) | 2016-03-14 | 2016-03-14 | Memory device and control unit thereof, and data storage method for memory device |
TW105107810 | 2016-03-14 | ||
US15/396,784 US10120611B2 (en) | 2016-03-14 | 2017-01-02 | Storage device and data control method for storage error control |
US16/142,994 US20190026045A1 (en) | 2016-03-14 | 2018-09-26 | Storage Device and Data Control Method for Storage Error Control |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/396,784 Continuation US10120611B2 (en) | 2016-03-14 | 2017-01-02 | Storage device and data control method for storage error control |
Publications (1)
Publication Number | Publication Date |
---|---|
US20190026045A1 true US20190026045A1 (en) | 2019-01-24 |
Family
ID=59786722
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/396,784 Active US10120611B2 (en) | 2016-03-14 | 2017-01-02 | Storage device and data control method for storage error control |
US16/142,994 Abandoned US20190026045A1 (en) | 2016-03-14 | 2018-09-26 | Storage Device and Data Control Method for Storage Error Control |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/396,784 Active US10120611B2 (en) | 2016-03-14 | 2017-01-02 | Storage device and data control method for storage error control |
Country Status (3)
Country | Link |
---|---|
US (2) | US10120611B2 (en) |
CN (1) | CN107193485B (en) |
TW (1) | TWI639112B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809331B1 (en) * | 2022-05-25 | 2023-11-07 | Western Digital Technologies, Inc. | Storage system and method for avoiding header to improve parity |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI639112B (en) * | 2016-03-14 | 2018-10-21 | 慧榮科技股份有限公司 | Memory device and control unit thereof, and data storage method for memory device |
US11922047B2 (en) * | 2021-09-16 | 2024-03-05 | EMC IP Holding Company LLC | Using RPO as an optimization target for DataDomain garbage collection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110231610A1 (en) * | 2010-03-17 | 2011-09-22 | Kabushiki Kaisha Toshiba | Memory system |
US20160124644A1 (en) * | 2014-11-03 | 2016-05-05 | Arm Limited | Data storage organisation technique |
US10120611B2 (en) * | 2016-03-14 | 2018-11-06 | Silicon Motion, Inc. | Storage device and data control method for storage error control |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI398770B (en) * | 2008-07-08 | 2013-06-11 | Phison Electronics Corp | Data accessing method for flash memory and storage system and controller using the same |
CN101576966A (en) * | 2009-06-02 | 2009-11-11 | 中兴通讯股份有限公司 | Method and device for reading and writing memory card |
US8726104B2 (en) | 2011-07-28 | 2014-05-13 | Sandisk Technologies Inc. | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US9218242B2 (en) * | 2013-07-02 | 2015-12-22 | Sandisk Technologies Inc. | Write operations for defect management in nonvolatile memory |
TWI519951B (en) * | 2014-11-03 | 2016-02-01 | 慧榮科技股份有限公司 | Data storage device and flash memory control method |
JP2017045405A (en) * | 2015-08-28 | 2017-03-02 | 株式会社東芝 | Memory system |
CN105260270B (en) * | 2015-11-11 | 2018-12-11 | 恒宝股份有限公司 | A kind of Dynamic- Recovery method and device of Flash memory space |
-
2016
- 2016-03-14 TW TW105107810A patent/TWI639112B/en active
- 2016-05-30 CN CN201610371108.0A patent/CN107193485B/en active Active
-
2017
- 2017-01-02 US US15/396,784 patent/US10120611B2/en active Active
-
2018
- 2018-09-26 US US16/142,994 patent/US20190026045A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110231610A1 (en) * | 2010-03-17 | 2011-09-22 | Kabushiki Kaisha Toshiba | Memory system |
US20160124644A1 (en) * | 2014-11-03 | 2016-05-05 | Arm Limited | Data storage organisation technique |
US10120611B2 (en) * | 2016-03-14 | 2018-11-06 | Silicon Motion, Inc. | Storage device and data control method for storage error control |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809331B1 (en) * | 2022-05-25 | 2023-11-07 | Western Digital Technologies, Inc. | Storage system and method for avoiding header to improve parity |
Also Published As
Publication number | Publication date |
---|---|
TW201732531A (en) | 2017-09-16 |
US10120611B2 (en) | 2018-11-06 |
US20170262219A1 (en) | 2017-09-14 |
CN107193485B (en) | 2020-07-31 |
TWI639112B (en) | 2018-10-21 |
CN107193485A (en) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105701021B (en) | Data storage device and data writing method thereof | |
TWI604455B (en) | Data management method and data block management method for data storage device and memory controller | |
US9600408B2 (en) | Data storage device and method for flash block management | |
US20160103631A1 (en) | Non-volatile memory devices and control methods therefor | |
US8055873B2 (en) | Data writing method for flash memory, and controller and system using the same | |
JP4729062B2 (en) | Memory system | |
US10776264B2 (en) | Data storage device with power recovery procedure and method for operating non-volatile memory | |
US11354236B2 (en) | Garbage collection method for data storage device | |
US8510502B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US20100011154A1 (en) | Data accessing method for flash memory and storage system and controller using the same | |
US20100082878A1 (en) | Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method | |
US8694748B2 (en) | Data merging method for non-volatile memory module, and memory controller and memory storage device using the same | |
US20190026045A1 (en) | Storage Device and Data Control Method for Storage Error Control | |
US20170255523A1 (en) | Non-volatile memory devices and controllers | |
US9378130B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US9430159B2 (en) | Non-volatile memory devices and controllers | |
US20140040534A1 (en) | Data storing method and memory controller and memory storage device using the same | |
US20170285953A1 (en) | Data Storage Device and Data Maintenance Method thereof | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
JP4235646B2 (en) | Memory controller and flash memory system | |
TWI521346B (en) | Data merging method for non-volatile memory and controller and stoarge apparatus using the same | |
TW202024924A (en) | A data storage device and a data processing method | |
TWI639113B (en) | Memory device and control unit thereof, and data storage method for memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
AS | Assignment |
Owner name: SILICON MOTION, INC., TAIWAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LIN, CHIH-MING;REEL/FRAME:052934/0740 Effective date: 20200602 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |