US10719390B2 - Memory system, controller, memory and reading method thereof - Google Patents
Memory system, controller, memory and reading method thereof Download PDFInfo
- Publication number
- US10719390B2 US10719390B2 US16/208,601 US201816208601A US10719390B2 US 10719390 B2 US10719390 B2 US 10719390B2 US 201816208601 A US201816208601 A US 201816208601A US 10719390 B2 US10719390 B2 US 10719390B2
- Authority
- US
- United States
- Prior art keywords
- content
- memory
- voted
- data
- circuit
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1012—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 codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/183—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Definitions
- the disclosure relates in general to a storage technology, and more particularly to a memory system, a controller, a memory and a reading method thereof.
- an error-correcting code (ECC) circuit is used to detect and correct the most common kinds of internal data corruption.
- ECC error-correcting code
- the disclosure is directed to a memory system, a controller, a memory and a reading method thereof.
- a voting procedure is used in the reading method, and an ECC procedure is performed only if a CRC verifying procedure fails. Therefore, the energy can be greatly saved.
- a memory system includes a memory to store data and a controller.
- the memory is used to store data.
- the controller is used to perform a read operation on the memory.
- the controller has more than one data verifying circuits to verify the data stored in the memory during the read operation.
- a reading method of a memory includes the following steps.
- a plurality of duplicated contents which are formed by duplicating one data content several times are received by a voting circuit.
- a voting procedure is performed by the voting circuit to obtain a voted content which is a majority of the duplicated contents.
- a controller includes a memory interface circuit connected to a memory.
- the memory interface includes a duplicator and a voting circuit.
- the duplicator is used for duplicating one data content several times to obtain a plurality of duplicated contents.
- the voting circuit is used for performing a voting procedure to obtain a voted content which is a majority of the duplicated contents.
- a memory stores a plurality of duplicated contents which are formed by duplicating one data content several times. A voting procedure is performed to obtain a voted content which is a majority of the duplicated contents.
- FIG. 1 shows a memory system according to one embodiment.
- FIG. 2 shows a memory interface circuit according to one embodiment.
- FIG. 3 shows a flowchart of a writing method of a memory according to one embodiment.
- FIG. 4 illustrates a data placement of the memory according to one embodiment.
- FIG. 5 illustrates another data placement of the memory according to another embodiment.
- FIG. 6 shows a flowchart of a reading method of the memory according to one embodiment.
- FIG. 7 shows details steps of the step S 640 according to one embodiment.
- the memory system 100 includes a memory 110 and a controller 120 .
- the memory 110 may be a non-volatile memory, such as a PCM or a NAND Flash.
- the controller 120 is used for reading and writing the memory 110 .
- the controller 120 includes a host interface circuit 121 , a volatile memory 122 , a memory interface circuit 123 and a processing circuit 124 .
- the host interface circuit 121 is used for communicating with a host 200 .
- the volatile memory 122 is used for temporarily storing data.
- the volatile memory 122 may be a SRAM or DRAM.
- the memory interface circuit 123 is used for communicating with the memory 110 .
- the processing circuit 124 is used for controlling the operation of the host interface circuit 121 , the volatile memory 122 and the memory interface circuit 123 .
- the memory interface circuit 123 includes a multiplexer 1231 , a duplicator 1232 , an encoder 1233 , a voting circuit 1234 , a cyclic redundancy check (CRC) circuit 1235 , an error-correcting code (ECC) circuit 1236 and a randomizer 1237 .
- the multiplexer 1231 is a device that selects one of several analog or digital input signals and forwards the selected input into a single line.
- the duplicator 1232 is used for duplicating data.
- the encoder 1233 is used for encoding a CRC code and an ECC code.
- the voting circuit 1234 is used for performing a voting procedure (illustrated latter).
- the CRC circuit 1235 is used for performing a CRC verifying procedure.
- the ECC circuit 1236 is used for performing an ECC correction procedure. The operation of those elements described above is illustrated via a flowchart as follows. According to the present embodiment, the ECC circuit 1236 is not turned on every time, such that the energy can be saved.
- step S 310 a data content D 0 is received from the host interface circuit 121 .
- the data content D 0 may be 1 bit data or 1 byte data.
- step S 320 the duplicator 1232 duplicates the data content D 0 several times, such as 3 times, to obtain several duplicated contents D 1 , D 2 , D 3 .
- the number of the duplicated contents is more than 3.
- the data content D 0 may be duplicated 5 or more times.
- the duplicated contents D 1 , D 2 , D 3 are separately stored in different blocks or different chips of the memory 110 .
- the number of the chip may be one, and the duplicated contents may be stored in one page for saving the writing time.
- the number of the chip may be more than one, and the duplicated contents may be stored in different pages for increasing the reliability.
- the controller 120 has more than one data verifying circuits to verify the data stored in the memory 110 during the read operation.
- one of the data verifying circuits is the voting circuit 1234 for performing the voting procedure to obtain the voted content R 0 which is a majority of the duplicated contents D 1 , D 2 , D 3 .
- One of the data verifying circuits is the cyclic redundancy check (CRC) circuit 1235 for checking whether the voted content R 0 is correct via the CRC verifying procedure.
- One of the data verifying circuits is the error-correcting code (ECC) circuit 1236 for correcting the voted content R 0 via the ECC correction procedure, only if the voted content R 0 is incorrect.
- CRC cyclic redundancy check
- ECC error-correcting code
- the data content D 0 includes data D 0 ( 1 ), D 0 ( 2 ), . . . , D 0 ( n ).
- the data D 0 ( 1 ) is duplicated 3 times to obtain data D 1 ( 1 ), data D 2 ( 1 ) and data D 3 ( 1 ).
- the data D 0 ( 2 ) is duplicated 3 times to obtain data D 1 ( 2 ), data D 2 ( 2 ) and data D 3 ( 2 ).
- the data D 0 ( n ) is duplicated 3 times to obtain data D 1 ( n ), data D 2 ( n ) and data D 3 ( n ).
- the duplicated contents D 1 , D 2 , D 3 are arranged in a staggered manner.
- the data D 1 ( 1 ), the data D 2 ( 1 ), the data D 3 ( 1 ), the data D 1 ( 2 ), the data D 2 ( 2 ), the data D 3 ( 2 ), . . . , the data D 1 ( n ), the data D 2 ( n ) and the data D 3 ( n ) are arranged sequentially.
- the duplicated contents D 1 , D 2 , D 3 are stored in different chunks 111 , 112 , 113 .
- the data D 1 ( 1 ), the data D 1 ( 2 ), . . . , and the data D 1 ( n ) are arranged sequentially in the chunk 111 .
- the data D 2 ( 1 ), the data D 2 ( 2 ), . . . , and the data D 2 ( n ) are arranged sequentially in the chunk 112 .
- the data D 3 ( 1 ), the data D 3 ( 2 ), . . . , and the data D 3 ( n ) are arranged sequentially in the chunk 113 .
- the duplicated contents D 1 , D 2 , D 3 should be identical. On the other hand, if the duplicated contents D 1 , D 2 , D 3 are identical, there is a great probability that the cells in the memory 110 are well and each of the duplicated contents D 1 , D 2 , D 3 is corrected. Further, even if some of the cells are corrupt, there is still a big probability that the majority of the duplicated contents D 1 , 02 , D 3 is correct.
- step S 610 the memory interface circuit 123 receives the several duplicated contents D 1 , D 2 , D 3 which are formed by duplicating the data content D 0 several times.
- step S 620 the voting circuit 1234 performs the voting procedure to obtain a voted content R 0 which is the majority of the duplicated contents D 1 , D 2 , D 3 .
- a voted content R 0 which is the majority of the duplicated contents D 1 , D 2 , D 3 .
- Table I which shows an example of the voted content R 0 and a probability strength S 0 corresponding the voted content R 0 .
- each of the duplicated contents D 1 , D 2 , D 3 is one bit data.
- the voted content R 0 is the majority of the duplicated contents D 1 , D 2 , D 3 , so the accuracy of the voted content R 0 depends on the consistency degree of the duplicated contents D 1 , D 2 , D 3 . If the accuracy of the voted content R 0 is high, the probability strength S 0 is “1.” If the accuracy of the voted content R 0 is low, the probability strength S 0 is “0.” For example, if the duplicated contents D 1 , D 2 , D 3 are “0”, “0” and “0”, then the voted content R 0 is “0” and the probability strength S 0 is “1.” If the duplicated contents D 1 , D 2 , D 3 are “0”, “0” and “1”, then the voted content R 0 is “0” and the probability strength S 0 is “0.”
- each of the duplicated contents D 1 , D 2 , D 3 is one byte data.
- the voted content R 0 is “00010000” and the probability strength S 0 is “0.” If the duplicated contents D 1 , D 2 , D 3 are “00010001”, “00010001” and “00010001”, then the voted content R 0 is “00010001” and the probability strength S 0 is “1.”
- the number of the duplicated contents is equal to or more than 3, such as 3, 4, 5 or more, so the majority thereof can be selected to be the voted content R 0 . According to the Law of large numbers, the majority can be deemed as the correct content.
- the size of each of the duplicated contents can be increased to speed up the voting procedure. Or, in another embodiment, the size of each of the duplicated contents can be decreased to increase the accuracy of the voting procedure.
- step S 630 the CRC circuit 1235 checks whether the voted content R 0 is correct via the CRC verifying procedure.
- a calculating CRC code is calculated according to one or more voted contents R 0 . Then, whether the calculating CRC code and a predetermined CRC code are identical is determined. If the calculating CRC code and the predetermined CRC code are identical, then the voted contents R 0 are correct and the process terminated. That is to say, the reading method is correctly performed without the ECC procedure, such that the energy is saved. If the calculating CRC code and the predetermined CRC code are not identical, then the voted contents R 0 may be incorrect and the process proceeds to step S 640 .
- the predetermined CRC code storing in the memory 110 may be duplicated and then a voted predetermined CRC code may be used in the CRC verifying procedure.
- step S 640 the ECC circuit 1236 corrects the voted content R 0 via the ECC correction procedure.
- the error-correcting code stored in the memory 110 is used and the ECC correction procedure is performed only if the voted content R 0 is incorrect.
- the ECC correction procedure may be performed via a hard-decision algorithm and a soft-decision algorithm.
- the ECC circuit 1236 corrects the voted content R 0 via the hard-decision algorithm.
- step S 642 whether the voted content R 0 is correctable is determined. If the voted content R 0 is correctable via the hard-decision algorithm, then the process terminated; if the voted content R 0 is not correctable via the hard-decision algorithm, then the process proceeds to step S 643 .
- step S 643 the ECC circuit 1236 corrects the voted content R 0 via the soft-decision algorithm.
- the probability strength S 0 is used for the soft-decision algorithm. Therefore, the ECC circuit 1236 can perform the soft-decision algorithm without any complex calculated probability information.
- the voting procedure is used in the reading method, and the ECC procedure is performed only if the CRC verifying procedure fails. Therefore, the energy can be greatly saved. Further, the probability strength S 0 obtained in the voting procedure can be used in the soft-decision algorithm of the ECC procedure, so the calculating complexity is greatly reduced.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
A memory system, a controller, a memory and a reading method thereof are provided. The reading method includes the following steps. A plurality of duplicated contents which are formed by duplicating one data content several times are received by a voting circuit. A voting procedure is performed by the voting circuit to obtain a voted content which is a majority of the duplicated contents.
Description
The disclosure relates in general to a storage technology, and more particularly to a memory system, a controller, a memory and a reading method thereof.
Along with the development of storage technology, various memories are invented. In a memory system, an error-correcting code (ECC) circuit is used to detect and correct the most common kinds of internal data corruption. However, the ECC circuit consumes lots of energy.
The disclosure is directed to a memory system, a controller, a memory and a reading method thereof. A voting procedure is used in the reading method, and an ECC procedure is performed only if a CRC verifying procedure fails. Therefore, the energy can be greatly saved.
According to one embodiment, a memory system is provided. The memory system includes a memory to store data and a controller. The memory is used to store data. The controller is used to perform a read operation on the memory. The controller has more than one data verifying circuits to verify the data stored in the memory during the read operation.
According to alternative embodiment, a reading method of a memory is provided. The reading method includes the following steps. A plurality of duplicated contents which are formed by duplicating one data content several times are received by a voting circuit. A voting procedure is performed by the voting circuit to obtain a voted content which is a majority of the duplicated contents.
According to another embodiment, a controller is provided. The controller includes a memory interface circuit connected to a memory. The memory interface includes a duplicator and a voting circuit. The duplicator is used for duplicating one data content several times to obtain a plurality of duplicated contents. The voting circuit is used for performing a voting procedure to obtain a voted content which is a majority of the duplicated contents.
According to an alternative embodiment, a memory is provided. The memory stores a plurality of duplicated contents which are formed by duplicating one data content several times. A voting procedure is performed to obtain a voted content which is a majority of the duplicated contents.
In the following detailed description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, that one or more embodiments may be practiced without these specific details. In other instances, well-known structures and devices are schematically shown in order to simplify the drawing.
Please refer to FIG. 1 , which shows a memory system 100 according to one embodiment. The memory system 100 includes a memory 110 and a controller 120. The memory 110 may be a non-volatile memory, such as a PCM or a NAND Flash. The controller 120 is used for reading and writing the memory 110. The controller 120 includes a host interface circuit 121, a volatile memory 122, a memory interface circuit 123 and a processing circuit 124. The host interface circuit 121 is used for communicating with a host 200. The volatile memory 122 is used for temporarily storing data. For example, the volatile memory 122 may be a SRAM or DRAM. The memory interface circuit 123 is used for communicating with the memory 110. The processing circuit 124 is used for controlling the operation of the host interface circuit 121, the volatile memory 122 and the memory interface circuit 123.
Please refer to FIG. 2 , which shows the memory interface circuit 123 according to one embodiment. The memory interface circuit 123 includes a multiplexer 1231, a duplicator 1232, an encoder 1233, a voting circuit 1234, a cyclic redundancy check (CRC) circuit 1235, an error-correcting code (ECC) circuit 1236 and a randomizer 1237. The multiplexer 1231 is a device that selects one of several analog or digital input signals and forwards the selected input into a single line. The duplicator 1232 is used for duplicating data. The encoder 1233 is used for encoding a CRC code and an ECC code. The voting circuit 1234 is used for performing a voting procedure (illustrated latter). The CRC circuit 1235 is used for performing a CRC verifying procedure. The ECC circuit 1236 is used for performing an ECC correction procedure. The operation of those elements described above is illustrated via a flowchart as follows. According to the present embodiment, the ECC circuit 1236 is not turned on every time, such that the energy can be saved.
Please refer to FIG. 3 , which shows a flowchart of a writing method of the memory 110 according to one embodiment. In step S310, a data content D0 is received from the host interface circuit 121. The data content D0 may be 1 bit data or 1 byte data.
Then, in step S320, the duplicator 1232 duplicates the data content D0 several times, such as 3 times, to obtain several duplicated contents D1, D2, D3. The number of the duplicated contents is more than 3. In one embodiment, the data content D0 may be duplicated 5 or more times.
Next, in step S330, the duplicated contents D1, D2, D3 are separately stored in different blocks or different chips of the memory 110. In one embodiment, the number of the chip may be one, and the duplicated contents may be stored in one page for saving the writing time. In one embodiment, the number of the chip may be more than one, and the duplicated contents may be stored in different pages for increasing the reliability.
According to the embodiments described above, the controller 120 has more than one data verifying circuits to verify the data stored in the memory 110 during the read operation. For example, one of the data verifying circuits is the voting circuit 1234 for performing the voting procedure to obtain the voted content R0 which is a majority of the duplicated contents D1, D2, D3. One of the data verifying circuits is the cyclic redundancy check (CRC) circuit 1235 for checking whether the voted content R0 is correct via the CRC verifying procedure. One of the data verifying circuits is the error-correcting code (ECC) circuit 1236 for correcting the voted content R0 via the ECC correction procedure, only if the voted content R0 is incorrect.
Please referring to FIG. 4 , a data placement of the memory 110 is illustrated according to one embodiment. In the example of FIG. 4 , the data content D0 includes data D0(1), D0(2), . . . , D0(n). The data D0(1) is duplicated 3 times to obtain data D1(1), data D2(1) and data D3(1). The data D0(2) is duplicated 3 times to obtain data D1(2), data D2(2) and data D3(2). The data D0(n) is duplicated 3 times to obtain data D1 (n), data D2(n) and data D3(n). In the memory 110, the duplicated contents D1, D2, D3 are arranged in a staggered manner. For example, the data D1(1), the data D2(1), the data D3(1), the data D1(2), the data D2(2), the data D3(2), . . . , the data D1(n), the data D2(n) and the data D3(n) are arranged sequentially.
Please referring to FIG. 5 , another data placement of the memory 110 is illustrated according to another embodiment. In the example of FIG. 5 , the duplicated contents D1, D2, D3 are stored in different chunks 111, 112, 113. For example, the data D1(1), the data D1(2), . . . , and the data D1(n) are arranged sequentially in the chunk 111. The data D2(1), the data D2(2), . . . , and the data D2(n) are arranged sequentially in the chunk 112. The data D3(1), the data D3(2), . . . , and the data D3(n) are arranged sequentially in the chunk 113.
If the cells in the memory 110 are well, the duplicated contents D1, D2, D3 should be identical. On the other hand, if the duplicated contents D1, D2, D3 are identical, there is a great probability that the cells in the memory 110 are well and each of the duplicated contents D1, D2, D3 is corrected. Further, even if some of the cells are corrupt, there is still a big probability that the majority of the duplicated contents D1, 02, D3 is correct.
Please refer to FIG. 6 , which shows a flowchart of a reading method of the memory 110 according to one embodiment. In step S610, the memory interface circuit 123 receives the several duplicated contents D1, D2, D3 which are formed by duplicating the data content D0 several times.
Next, in step S620, the voting circuit 1234 performs the voting procedure to obtain a voted content R0 which is the majority of the duplicated contents D1, D2, D3. Refer to Table I, which shows an example of the voted content R0 and a probability strength S0 corresponding the voted content R0. In the table I, each of the duplicated contents D1, D2, D3 is one bit data.
The voted content R0 is the majority of the duplicated contents D1, D2, D3, so the accuracy of the voted content R0 depends on the consistency degree of the duplicated contents D1, D2, D3. If the accuracy of the voted content R0 is high, the probability strength S0 is “1.” If the accuracy of the voted content R0 is low, the probability strength S0 is “0.” For example, if the duplicated contents D1, D2, D3 are “0”, “0” and “0”, then the voted content R0 is “0” and the probability strength S0 is “1.” If the duplicated contents D1, D2, D3 are “0”, “0” and “1”, then the voted content R0 is “0” and the probability strength S0 is “0.”
| TABLE I | ||||
| D1 | D2 | D3 | R0 | S0 |
| 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
Refer to Table II, which shows another example of the voted content R0 and the probability strength S0 corresponding the voted content R0. In the table II, each of the duplicated contents D1, D2, D3 is one byte data.
For example, if the duplicated contents D1, D2, D3 are “00010000”, “00010000” and “00000000”, then the voted content R0 is “00010000” and the probability strength S0 is “0.” If the duplicated contents D1, D2, D3 are “00010001”, “00010001” and “00010001”, then the voted content R0 is “00010001” and the probability strength S0 is “1.”
| TABLE II | ||||||
| D1 | D2 | D3 | R0 | S0 | ||
| 00010000 | 00010000 | 00000000 | 00010000 | 11101111 | ||
| 00010001 | 00010001 | 00010001 | 00010001 | 11111111 | ||
| 10001000 | 10000000 | 10001000 | 10001000 | 11110111 | ||
| 11101011 | 11111111 | 11101011 | 11101011 | 11101011 | ||
| 10010001 | 10010001 | 10010001 | 10010001 | 11111111 | ||
| 11001010 | 11001010 | 11001010 | 11001010 | 11111111 | ||
| 00010001 | 00000001 | 00010001 | 00010001 | 11101111 | ||
| 00100010 | 11000010 | 00100010 | 00100010 | 00011111 | ||
The number of the duplicated contents is equal to or more than 3, such as 3, 4, 5 or more, so the majority thereof can be selected to be the voted content R0. According to the Law of large numbers, the majority can be deemed as the correct content. In one embodiment, the size of each of the duplicated contents can be increased to speed up the voting procedure. Or, in another embodiment, the size of each of the duplicated contents can be decreased to increase the accuracy of the voting procedure.
Afterwards, in step S630, the CRC circuit 1235 checks whether the voted content R0 is correct via the CRC verifying procedure. In one embodiment, a calculating CRC code is calculated according to one or more voted contents R0. Then, whether the calculating CRC code and a predetermined CRC code are identical is determined. If the calculating CRC code and the predetermined CRC code are identical, then the voted contents R0 are correct and the process terminated. That is to say, the reading method is correctly performed without the ECC procedure, such that the energy is saved. If the calculating CRC code and the predetermined CRC code are not identical, then the voted contents R0 may be incorrect and the process proceeds to step S640.
In one embodiment, the predetermined CRC code storing in the memory 110 may be duplicated and then a voted predetermined CRC code may be used in the CRC verifying procedure.
In step S640, the ECC circuit 1236 corrects the voted content R0 via the ECC correction procedure. In this embodiment, the error-correcting code stored in the memory 110 is used and the ECC correction procedure is performed only if the voted content R0 is incorrect.
Please refer to FIG. 7 , which shows details steps of the step S640 according to one embodiment. In one embodiment, the ECC correction procedure may be performed via a hard-decision algorithm and a soft-decision algorithm. In step S641, the ECC circuit 1236 corrects the voted content R0 via the hard-decision algorithm.
In step S642, whether the voted content R0 is correctable is determined. If the voted content R0 is correctable via the hard-decision algorithm, then the process terminated; if the voted content R0 is not correctable via the hard-decision algorithm, then the process proceeds to step S643.
In step S643, the ECC circuit 1236 corrects the voted content R0 via the soft-decision algorithm. In this step, the probability strength S0 is used for the soft-decision algorithm. Therefore, the ECC circuit 1236 can perform the soft-decision algorithm without any complex calculated probability information.
Based on above, the voting procedure is used in the reading method, and the ECC procedure is performed only if the CRC verifying procedure fails. Therefore, the energy can be greatly saved. Further, the probability strength S0 obtained in the voting procedure can be used in the soft-decision algorithm of the ECC procedure, so the calculating complexity is greatly reduced.
It will be apparent to those skilled in the art that various modifications and variations can be made to the disclosed embodiments. It is intended that the specification and examples be considered as exemplary only, with a true scope of the disclosure being indicated by the following claims and their equivalents.
Claims (19)
1. A memory system, comprising:
a memory used to store data, and
a controller used to perform a read operation on the memory,
wherein the controller has more than one data verifying circuits to verify the data stored in the memory during the read operation;
wherein the controller comprises:
a duplicator for duplicating one data content several times to obtain a plurality of duplicated contents;
wherein one of the data verifying circuits is a voting circuit for performing a voting procedure to obtain a voted content which is a majority of the duplicated contents; and
wherein one of the data verifying circuits is a cyclic redundancy check (CRC) circuit for checking whether the voted content is correct via a CRC verifying procedure.
2. The memory system according to claim 1 , wherein one of the data verifying circuits is an error-correcting code (ECC) circuit for correcting the voted content via an ECC correction procedure, only if the voted content is incorrect.
3. A reading method of a memory, comprising:
receiving, by a voting circuit, a plurality of duplicated contents which are formed by duplicating one data content several times;
performing, by the voting circuit, a voting procedure to obtain a voted content which is a majority of the duplicated contents; and
checking, by a cyclic redundancy check (CRC) circuit, whether the voted content is correct via a CRC verifying procedure.
4. The reading method according to claim 3 , wherein the duplicating contents are separately stored.
5. The reading method according to claim 3 , wherein the number of the duplicated contents is equal to or more than 3.
6. The reading method according to claim 3 , wherein the majority is used to be deemed as a correct content according to a Law of large numbers.
7. The reading method according to claim 3 , further comprising:
correcting, by an error-correcting code (ECC) circuit, the voted content via an ECC correction procedure, only if the voted content is incorrect.
8. The reading method according to claim 3 , wherein in the step of voting, a probability strength corresponding the voted content is obtained, and in the step of correcting the voted content, the probability strength is used.
9. A controller, comprising:
a memory interface circuit connected to a memory, wherein the memory interface circuit includes:
a duplicator for duplicating one data content several times to obtain a plurality of duplicated contents;
a voting circuit for performing a voting procedure to obtain a voted content which is a majority of the duplicated contents; and
a cyclic redundancy check (CRC) circuit for checking whether the voted content is correct via a CRC verifying procedure.
10. The controller according to claim 9 , wherein the duplicating contents are separately stored in the memory.
11. The controller according to claim 9 , wherein the number of the duplicated contents is equal to or more than 3.
12. The controller according to claim 11 , wherein the majority is used to deemed as a correct content according to a Law of large numbers.
13. The controller according to claim 9 , wherein the memory interface circuit further comprises:
an error-correcting code (ECC) circuit for correcting the voted content via an ECC correction procedure, only if the voted content is incorrect.
14. The controller according to claim 9 , wherein the voting circuit further obtains a probability strength corresponding the voted content, and the ECC circuit uses the probability strength to correct the voted content.
15. A memory, storing a plurality of duplicated contents which are formed by duplicating one data content several times, and storing a cyclic redundancy check (CRC) code which is used for checking whether a voted content is correct, wherein a voting procedure is performed to obtain the voted content which is a majority of the duplicated contents.
16. The memory according to claim 15 , wherein the duplicating contents are separately stored.
17. The memory according to claim 15 , wherein the number of the duplicated contents is equal to or more than 3.
18. The memory according to claim 15 , wherein the majority is used to be deemed as a correct content according to a Law of large numbers.
19. The memory according to claim 15 , further storing an error-correcting code (ECC), wherein only if the voted content is incorrect, the ECC is used for correcting the voted content via an ECC correction procedure.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/208,601 US10719390B2 (en) | 2018-12-04 | 2018-12-04 | Memory system, controller, memory and reading method thereof |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/208,601 US10719390B2 (en) | 2018-12-04 | 2018-12-04 | Memory system, controller, memory and reading method thereof |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20200174880A1 US20200174880A1 (en) | 2020-06-04 |
| US10719390B2 true US10719390B2 (en) | 2020-07-21 |
Family
ID=70848857
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/208,601 Active US10719390B2 (en) | 2018-12-04 | 2018-12-04 | Memory system, controller, memory and reading method thereof |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US10719390B2 (en) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180205396A1 (en) * | 2017-01-13 | 2018-07-19 | Everspin Technologies Inc. | Preprogrammed data recovery |
-
2018
- 2018-12-04 US US16/208,601 patent/US10719390B2/en active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180205396A1 (en) * | 2017-01-13 | 2018-07-19 | Everspin Technologies Inc. | Preprogrammed data recovery |
Also Published As
| Publication number | Publication date |
|---|---|
| US20200174880A1 (en) | 2020-06-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11734106B2 (en) | Memory repair method and apparatus based on error code tracking | |
| US9703633B2 (en) | Circuits, apparatuses, and methods for correcting data errors | |
| US8954818B2 (en) | Error detection and correction scheme for a memory device | |
| US12287705B2 (en) | Memory device and repair method with column-based error code tracking | |
| US7412575B2 (en) | Data management technique for improving data reliability | |
| US11030040B2 (en) | Memory device detecting an error in write data during a write operation, memory system including the same, and operating method of memory system | |
| US9312885B2 (en) | Nonvolatile semiconductor memory system error correction capability of which is improved | |
| US20190012231A1 (en) | Memory device, memory system including the same, and operating method of memory system | |
| US12316349B2 (en) | Iterative decoding technique for correcting DRAM device failures | |
| US10481973B2 (en) | Memory module with dedicated repair devices | |
| US12222829B2 (en) | Memory module with dedicated repair devices | |
| US10719390B2 (en) | Memory system, controller, memory and reading method thereof | |
| CN113129993B (en) | Memory device and data reading method thereof |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |