[go: up one dir, main page]

US10719390B2 - Memory system, controller, memory and reading method thereof - Google Patents

Memory system, controller, memory and reading method thereof Download PDF

Info

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
Application number
US16/208,601
Other versions
US20200174880A1 (en
Inventor
Yi-Chun Liu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Macronix International Co Ltd
Original Assignee
Macronix International Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Macronix International Co Ltd filed Critical Macronix International Co Ltd
Priority to US16/208,601 priority Critical patent/US10719390B2/en
Assigned to MACRONIX INTERNATIONAL CO., LTD. reassignment MACRONIX INTERNATIONAL CO., LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LIU, YI-CHUN
Publication of US20200174880A1 publication Critical patent/US20200174880A1/en
Application granted granted Critical
Publication of US10719390B2 publication Critical patent/US10719390B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online 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

TECHNICAL FIELD
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.
BACKGROUND
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.
SUMMARY
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.
BRIEF DESCRIPTION OF THE DRAWINGS
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 S640 according to one embodiment.
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.
DETAILED DESCRIPTION
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)

What is claimed is:
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.
US16/208,601 2018-12-04 2018-12-04 Memory system, controller, memory and reading method thereof Active US10719390B2 (en)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180205396A1 (en) * 2017-01-13 2018-07-19 Everspin Technologies Inc. Preprogrammed data recovery

Patent Citations (1)

* Cited by examiner, † Cited by third party
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