[go: up one dir, main page]

US20180039432A9 - Method and apparatus for real-time blank page detection in data transmission - Google Patents

Method and apparatus for real-time blank page detection in data transmission Download PDF

Info

Publication number
US20180039432A9
US20180039432A9 US14/946,780 US201514946780A US2018039432A9 US 20180039432 A9 US20180039432 A9 US 20180039432A9 US 201514946780 A US201514946780 A US 201514946780A US 2018039432 A9 US2018039432 A9 US 2018039432A9
Authority
US
United States
Prior art keywords
page
data
memory
blank
threshold voltage
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.)
Granted
Application number
US14/946,780
Other versions
US20160328164A1 (en
US10521133B2 (en
Inventor
Yong Wang
Chongbin Fan
Jun Xie
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.)
NXP USA Inc
Original Assignee
NXP USA Inc
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 NXP USA Inc filed Critical NXP USA Inc
Assigned to FREESCALE SEMICONDUCTOR,INC. reassignment FREESCALE SEMICONDUCTOR,INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FAN, CHONGBIN, WANG, YONG, XIE, JUN
Assigned to MORGAN STANLEY SENIOR FUNDING, INC. reassignment MORGAN STANLEY SENIOR FUNDING, INC. SUPPLEMENT TO THE SECURITY AGREEMENT Assignors: FREESCALE SEMICONDUCTOR, INC.
Publication of US20160328164A1 publication Critical patent/US20160328164A1/en
Assigned to NXP USA, INC. reassignment NXP USA, INC. CHANGE OF NAME Assignors: FREESCALE SEMICONDUCTOR INC.
Assigned to NXP USA, INC. reassignment NXP USA, INC. CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Assignors: NXP SEMICONDUCTORS USA, INC. (MERGED INTO), FREESCALE SEMICONDUCTOR, INC. (UNDER)
Publication of US20180039432A9 publication Critical patent/US20180039432A9/en
Assigned to NXP B.V. reassignment NXP B.V. RELEASE OF SECURITY INTEREST Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Application granted granted Critical
Publication of US10521133B2 publication Critical patent/US10521133B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F11/1016Error in accessing a memory location, i.e. addressing 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/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/1072Adding 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 multilevel memories
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50004Marginal testing, e.g. race, voltage or current testing of threshold voltage
    • 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
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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
    • 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
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C2029/5004Voltage

Definitions

  • the present invention relates to a method and an apparatus for transferring data between different memories and, more particularly, to real-time blank page detection of data read from a memory.
  • FIG. 1 shows a conventional device 100 for transferring data between a flash memory 102 and an external memory 104 .
  • the flash memory 102 can be any type of memory that contains information (data) stored in units of programmed pages, and the external memory 104 can be either on or off-chip random access memory (RAM).
  • the device 100 is used to transfer data between low cost, page-based flash memory 102 and high cost, RAM (the external memory 104 ). Due to the high possibility of errors either programming or reading from the flash memory 102 , the device 100 , in general, implements enhanced algorithms to recover from these errors.
  • the data When being programmed from the external memory 104 to the flash memory 102 by the device 100 , the data sequentially passes an interface 106 of the device 100 , a data processing unit 108 that encodes the data with a set of codes, a randomizer/de-randomizer 110 that randomizes the data to combat noise, and a buffer 112 that buffers a portion of the encoded, randomized data before being programmed into the flash memory 102 with a memory controller 114 .
  • a programmed page stored in the flash memory 102 usually contains equivalently distributed “0” and “1” bits due to the randomization.
  • the buffer which is implemented by registers, usually has a small memory size such as several 32-bit words to save area.
  • the flash memory 102 stores the data page-by-page.
  • the page of data when reading a page of data from the flash memory 102 with the device 100 , the page of data also sequentially passes the memory controller 114 for reading the page of data from the flash memory 102 , the buffer 112 for buffering a portion of the page of data, the randomizer/de-randomizer 110 for de-randomizing the page of data, and the data processing unit 108 for decoding the de-randomized page of data that has already flowed out of the device 100 and storing in the external memory 104 while actual error locations are calculated some time later due to the complexity of the calculations.
  • the set of codes used for encoding and decoding are error-correcting codes (ECC), such as BCH codes. Therefore, the decoded data stored in the external memory 104 will reflow to the data processing unit 108 for error correcting.
  • ECC error-correcting codes
  • the flash memory 102 may include some blank pages that contain only “0xFF” bytes, and some bad pages that cannot be programmed properly. Some of the bad pages have been previously detected and marked during manufacturing, while some of the bad pages are transformed from good pages over time due to progressive deterioration.
  • a de-randomized blank page will contain non-0xFF bytes, therefore, when a portion of the page of data fails in the error correcting process after being de-randomized, the page of data must be re-read from the flash memory 102 , and transferred to the data processing unit 108 skipping de-randomization for whole-page blank page detection.
  • the data processing unit 108 detects whether the page of data is a blank page by scanning the whole page.
  • FIG. 1 is a schematic block diagram of a conventional device for transmitting data between a first memory and a second memory
  • FIG. 2 is a schematic block diagram of a device for transmitting data between a first memory and a second memory in accordance with an embodiment of the invention
  • FIG. 3 shows two types of data structures of a page in the first memory
  • FIG. 4 shows a structure of a metadata block in the memory page
  • FIG. 5 is a flow chart of a method for reading data from the first memory with the device of FIG. 2 in accordance with another embodiment of the invention.
  • FIG. 6 is a flow chart of the read-retry step in the flow chart of FIG. 5 .
  • the present invention provides a device for reading data from a first memory to a second memory.
  • the device includes a memory controller for reading at least one page of data from the first memory, a buffer connected to the memory controller for buffering a portion of the at least one page of data read from the first memory, a blank page pre-detection unit, connected to the buffer, for generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the data in the at least one page, a data processing unit, connected to the buffer and the blank page pre-detection unit, for processing all of the data in the at least one page to identify a type of the page, and a control unit, connected to the memory controller, the blank page pre-detection unit, and the data processing unit, for signaling the memory controller to read the at least one page of data from the first memory and enabling the data processing unit based on the pre-detection result.
  • the present invention provides a method of reading data from a first memory to a second memory performed by a device, wherein the device includes a buffer and a processor connected to the buffer.
  • the method includes reading at least one page of data from the first memory, generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the at least one page of data stored in the buffer, performing blank page detection based on all of the data in the at least one page if the pre-detection result indicates that the at least one page is a blank page, and de-randomizing and decoding the at least one page of data if the pre-detection result or the blank page detection indicates that the at least one page is not a blank page.
  • FIG. 2 a block diagram of a device 200 for transferring data between a first memory 202 and a second memory 204 in accordance with an embodiment of the invention is shown.
  • the device 200 can be implemented in hardware or software, the flash memory 202 can be any low cost, page-based accessible memory chip that stores a programmed pages, and the external memory 204 can be any higher cost, on or off-chip RAM.
  • the device 200 includes a memory controller 206 for reading at least one page of data from the first memory 202 , a buffer 208 connected to the memory controller 206 for buffering a portion of the at least one page of data read from the first memory 202 , and a control unit 210 connected to the memory controller 206 for signaling the memory controller 206 to read the at least one page of data from the first memory 202 .
  • the buffer 208 is preferably a first-in-first-out (FIFO) buffer with a small memory size such as several 32-bit words.
  • the memory controller 206 reads the at least one page of data from the first memory 202 based on a set of threshold voltage configurations for the first memory provided by the control unit 210 .
  • the set of threshold voltage configurations includes at least one threshold voltage configuration indicating a mapping between logic values and corresponding voltage ranges inside a single information storage cell of the first memory.
  • the device 200 further includes a blank page pre-detection unit 212 , connected to the buffer 208 , for generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the data in the at least one page, and a data processing unit 214 , connected to the buffer 208 , the control unit 210 and the blank page pre-detection unit 212 , for identifying a type of the page based on all of the data in the at least one page. Operation of the data processing unit 214 is controlled by the control unit 210 based on the pre-detection result.
  • FIG. 3 shows first and second structure types 300 and 302 of a page in the first memory 202 .
  • the page of data includes a metadata block 304 at the beginning of the page that stores information of the page, such as bad page indication or some bytes swapped for bad page indication or other control bytes, followed by a plurality of interlaced block[n]d blocks 306 for storing a systematic part of the ECC code used for decoding and encoding and block[n]p blocks 308 for storing a parity part of the ECC code for corresponding block[n]d blocks 306 .
  • the page of data includes a metadata block 304 that stores information of the page and a meta data block 310 that stores the parity part of the ECC for the meta data block, followed by a plurality of interlaced block[n]d blocks 306 for storing the systematic part of the ECC and block[n]p blocks 308 for storing the parity part of the ECC code for block[n]d block.
  • the predetermined part used for blank page pre-detection is the metadata block 304 of the page.
  • FIG. 4 shows a detailed structure of a metadata block 400 of a page with one of the structure types 300 and 302 .
  • a size of the metadata block 400 is configured to be 128 bits that includes 4 words WORD_ 0 ⁇ WORD_ 3 .
  • the metadata block 400 has an occupied part 402 with a size of at least one byte for containing the information of the page, and a non-occupied part 404 .
  • the occupied part 402 is the first two bytes BYTE_ 0 and BYTE_ 1 of the first word WORD_ 0
  • the non-occupied part 404 has a size of 112 bits that includes 14 bytes.
  • the non-occupied part 404 is filled with 0x00 bytes. However, if the page is a blank page, the non-occupied part 404 is ideally filled with 0xFF bytes, or only contains a limited number of “0” bits due to noise.
  • the blank page pre-detection unit 212 generates the pre-detection result by counting one of “1” and “0” bits in the non-occupied part 404 and comparing the number of one of “1” and “0” in the non-occupied part 404 with a predetermined threshold.
  • the predetermined threshold is preferably set as half of the number of bits in the non-occupied part 404 .
  • the blank page pre-detection unit 212 counts 1 in the non-occupied part 404
  • the predetermined threshold is set as 56 , which is half of the number of bits in the non-occupied part 404 for the metadata block 400 of FIG. 4 .
  • the blank page pre-detection unit 212 pre-detects the page is a blank page if the number of “1” bits in the non-occupied part 404 is greater than the predetermined threshold.
  • the blank page pre-detection unit 212 generates a pre-detection-done signal in conjunction with a read data valid signal generated by the buffer 208 for indicating the data processing unit 214 to read data from the buffer 208 , and further indicates the pre-detection result to the control unit 210 .
  • the data processing unit 214 includes a de-randomizer 216 , a decoder 218 and a blank page detector 220 , which are respectively enabled by the control unit 210 based on the pre-detection result.
  • the control unit 210 disables the de-randomizer 216 and the decoder 218 , and enables the blank page detector 220 for double checking whether the page is a blank page by scanning all of the data in the page to generate a final blank page detecting result. The page is skipped if the final blank page detecting result shows that the page is a blank page.
  • control unit 210 enables the de-randomizer 216 and the decoder 218 , and disables the blank page detector 220 for further processing.
  • the de-randomizer 216 de-randomizes data in the page preferably by XORing the data with a random sequence generated by the de-randomizer 216 , and the decoder 218 decodes the de-randomized data in the page with a set of codes and performs error-correcting process on the decoded data, where the set of codes belongs to a class of cyclic error-correcting codes, such as BCH codes.
  • a read-retry operation will be performed, in which the control unit 210 signals the memory controller 206 to read the page of data from the first memory 202 again based on a second set of threshold voltage configurations, and the data processing unit 214 de-randomizes and decodes the data in the page read based on the second set of threshold voltage configurations. Similarly, if errors in the decoded data of the page fail to be corrected, another read-retry operation will be performed based on another set of threshold voltage configurations.
  • the control units 210 includes a plurality of sets of threshold voltage configurations.
  • the page of data passes the decoding and error-correcting process based on one set of threshold voltage configurations, the page is a programmed page and the decoded data is stored in the external memory 204 through an interface 222 .
  • the interface 222 is a master interface for accessing the second memory, such as AXI protocol used by ARM Corporation.
  • the page of data read from the flash memory 202 fails in the error-correcting process after all of the plurality of sets of threshold voltages have been tried, the page is identified as a bad page and will be skipped.
  • FIG. 5 is a flow chart of a method for operating the device 200 of FIG. 2 to read data from the first memory 202 to the external memory 204 in accordance with another embodiment of the invention.
  • the device 200 can be implemented in hardware or software, the flash memory 202 can be any low cost, page-based accessible memory chip that stores a plurality of programmed data, and the external memory 204 can be any higher cost on or off-chip RAM.
  • the memory controller 206 of the device 202 reads a page of data from the flash memory 202 .
  • the memory controller 206 reads the at least one page of data from the first memory 202 based on a set of threshold voltage configurations.
  • the set of threshold voltage configurations includes at least one threshold voltage configuration indicating a mapping between logic values and corresponding voltage ranges inside a single information storage cell of the first memory.
  • a portion of the data in the page that has been read out by the memory controller 206 is stored in the buffer 208 before being forwarded to a next step.
  • the buffer 208 is preferably a FIFO buffer with a small memory size such as several 32-bit words implemented by registers.
  • a blank page pre-detection process is performed to detect whether the page is a blank page based on a pre-determined part of the data in the page stored in the buffer 208 .
  • the predetermined part used for blank page pre-detection is the metadata block 304 at the beginning of the page, as shown in FIG. 3 , for storing information of the page, such as bad page indication or some bytes swapped for bad page indication or other control bytes.
  • the metadata block 400 has an occupied part 402 with a size of at least one byte for containing the information of the page, and a non-occupied part 404 .
  • the non-occupied part 404 is filled with 0x00 bytes. However, if the page is a blank page, the non-occupied part 404 is ideally filled with 0xFF bytes, or only contains a limited number of 0 bits due to noise.
  • the blank page pre-detection is performed by calculating one of “1 and 0 in the non-occupied part 404 and comparing the number of one of “1” and “0” in the non-occupied part 404 with a predetermined threshold.
  • the predetermined threshold is preferably set as half of the number of bits in the non-occupied part 404 . For example, if the number of “1” bits is greater than half of the number of bits in the non-occupied part 404 , the page is pre-detected as a blank page, otherwise, the page is pre-detected as a non-blank page.
  • the data in the page is de-randomized preferably by being XORed with a random sequence, and decoded based on a set of codes.
  • the decoding includes error-correcting the decoded data, where the set of codes belongs to a class of cyclic error-correcting codes, such as BCH codes.
  • step 512 if the decoding succeeds, i.e., errors, if any, during the decoding have been corrected, at step 514 , the page is identified as a programed page, and the de-randomized and decoded data of the page is stored in the external memory 204 . However, if the decoding fails, i.e., some errors during the decoding fails to be corrected, at step 516 , a read-retry operation is performed.
  • FIG. 6 is a detailed flow chart of the read-retry operation 516 in the flow chart of FIG. 5 .
  • the set of threshold voltage configurations used for reading the page of data from the memory 202 is replaced with a second set of threshold voltage configurations.
  • the memory controller 206 reads the page of data from the first memory 202 based on the second set of threshold voltage configurations.
  • the page of data is de-randomized preferably by being XORed with a random sequence and decoded with the set of ECC codes.
  • step 518 if the data of the page read based on the second set of threshold voltage configurations is successfully decoded, at step 514 , the page is identified as a programed page, and the de-randomized and decoded data of the page read based on the second set of threshold voltage configurations is stored in the external memory 204 . Otherwise, at step 520 , the read-retry operation is repeated based on other available sets of threshold voltage configurations. At step 522 , if the page of data read from the flash memory 202 fails to be successfully decoded after all available sets of threshold voltage configurations have been tried, the page is identified as a bad page and will be skipped.
  • blank page detection is performed by scanning through all of the data in the page.
  • step 522 if the page is detected as a blank page based on the blank page detection process, at step 524 , the blank page is skipped. If the page is detected as a non-blank page based on the blank page detection process, moving to step 516 , the read-retry operation will be performed as described above until either the data in the page is successfully decoded and stored in the external memory 204 or the page is identified as a bad page and skipped.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

A device for reading data from a first memory to a second memory based on real-time blank page detection includes a memory controller for reading a page of data from the first memory, a buffer for buffering a portion of the page data, a blank page pre-detection unit for generating a pre-detection result that indicates whether the page is a blank page based on a pre-determined part of the page data, a data processing unit for processing all of the page data to identify a page type, and a control unit for signaling the memory controller to read the page of data from the first memory and enabling the data processing unit based on the pre-detection result.

Description

    BACKGROUND OF THE INVENTION
  • The present invention relates to a method and an apparatus for transferring data between different memories and, more particularly, to real-time blank page detection of data read from a memory.
  • FIG. 1 shows a conventional device 100 for transferring data between a flash memory 102 and an external memory 104. The flash memory 102 can be any type of memory that contains information (data) stored in units of programmed pages, and the external memory 104 can be either on or off-chip random access memory (RAM). The device 100 is used to transfer data between low cost, page-based flash memory 102 and high cost, RAM (the external memory 104). Due to the high possibility of errors either programming or reading from the flash memory 102, the device 100, in general, implements enhanced algorithms to recover from these errors. When being programmed from the external memory 104 to the flash memory 102 by the device 100, the data sequentially passes an interface 106 of the device 100, a data processing unit 108 that encodes the data with a set of codes, a randomizer/de-randomizer 110 that randomizes the data to combat noise, and a buffer 112 that buffers a portion of the encoded, randomized data before being programmed into the flash memory 102 with a memory controller 114. A programmed page stored in the flash memory 102 usually contains equivalently distributed “0” and “1” bits due to the randomization. The buffer, which is implemented by registers, usually has a small memory size such as several 32-bit words to save area. The flash memory 102 stores the data page-by-page. Thus, when reading a page of data from the flash memory 102 with the device 100, the page of data also sequentially passes the memory controller 114 for reading the page of data from the flash memory 102, the buffer 112 for buffering a portion of the page of data, the randomizer/de-randomizer 110 for de-randomizing the page of data, and the data processing unit 108 for decoding the de-randomized page of data that has already flowed out of the device 100 and storing in the external memory 104 while actual error locations are calculated some time later due to the complexity of the calculations. The set of codes used for encoding and decoding are error-correcting codes (ECC), such as BCH codes. Therefore, the decoded data stored in the external memory 104 will reflow to the data processing unit 108 for error correcting.
  • In addition to a plurality of programmed pages with programmed data, the flash memory 102 may include some blank pages that contain only “0xFF” bytes, and some bad pages that cannot be programmed properly. Some of the bad pages have been previously detected and marked during manufacturing, while some of the bad pages are transformed from good pages over time due to progressive deterioration. As the randomization and de-randomization are performed by XORing the data with a random sequence generated by the randomizer/de-randomizer 110, a de-randomized blank page will contain non-0xFF bytes, therefore, when a portion of the page of data fails in the error correcting process after being de-randomized, the page of data must be re-read from the flash memory 102, and transferred to the data processing unit 108 skipping de-randomization for whole-page blank page detection. The data processing unit 108 detects whether the page of data is a blank page by scanning the whole page.
  • However, rereading the page of data from the flash memory 102 for blank page detection is time consuming, and when a blank page is found, the external memory 104 already contains at least a part of the data of the blank page that has been previously de-randomized and decoded. Thus filling the external memory 104 with 0xFF bytes to clear the part of data of the de-randomized and decoded blank page also takes time. It is therefore desirable to find a method for real-time blank page detection to reduce the data transmission time.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The invention, together with objects and advantages thereof, may best be understood by reference to the following description of preferred embodiments together with the accompanying drawings in which:
  • FIG. 1 is a schematic block diagram of a conventional device for transmitting data between a first memory and a second memory;
  • FIG. 2 is a schematic block diagram of a device for transmitting data between a first memory and a second memory in accordance with an embodiment of the invention;
  • FIG. 3 shows two types of data structures of a page in the first memory;
  • FIG. 4 shows a structure of a metadata block in the memory page;
  • FIG. 5 is a flow chart of a method for reading data from the first memory with the device of FIG. 2 in accordance with another embodiment of the invention; and
  • FIG. 6 is a flow chart of the read-retry step in the flow chart of FIG. 5.
  • DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
  • The detailed description set forth below in connection with the appended drawings is intended as a description of presently preferred embodiments of the invention, and is not intended to represent the only forms in which the present invention may be practised. It is to be understood that the same or equivalent functions may be accomplished by different embodiments that are intended to be encompassed within the spirit and scope of the invention. In the drawings, like numerals are used to indicate like elements throughout. Furthermore, terms “comprises,” “comprising,” or any other variation thereof, are intended to cover a non-exclusive inclusion, such that module, circuit, device components, structures and method steps that comprises a list of elements or steps does not include only those elements but may include other elements or steps not expressly listed or inherent to such module, circuit, device components or steps. An element or step proceeded by “comprises . . . a” does not, without more constraints, preclude the existence of additional identical elements or steps that comprises the element or step.
  • In one embodiment, the present invention provides a device for reading data from a first memory to a second memory. The device includes a memory controller for reading at least one page of data from the first memory, a buffer connected to the memory controller for buffering a portion of the at least one page of data read from the first memory, a blank page pre-detection unit, connected to the buffer, for generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the data in the at least one page, a data processing unit, connected to the buffer and the blank page pre-detection unit, for processing all of the data in the at least one page to identify a type of the page, and a control unit, connected to the memory controller, the blank page pre-detection unit, and the data processing unit, for signaling the memory controller to read the at least one page of data from the first memory and enabling the data processing unit based on the pre-detection result.
  • In another embodiment, the present invention provides a method of reading data from a first memory to a second memory performed by a device, wherein the device includes a buffer and a processor connected to the buffer. The method includes reading at least one page of data from the first memory, generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the at least one page of data stored in the buffer, performing blank page detection based on all of the data in the at least one page if the pre-detection result indicates that the at least one page is a blank page, and de-randomizing and decoding the at least one page of data if the pre-detection result or the blank page detection indicates that the at least one page is not a blank page.
  • Referring now to FIG. 2, a block diagram of a device 200 for transferring data between a first memory 202 and a second memory 204 in accordance with an embodiment of the invention is shown. The device 200 can be implemented in hardware or software, the flash memory 202 can be any low cost, page-based accessible memory chip that stores a programmed pages, and the external memory 204 can be any higher cost, on or off-chip RAM. The device 200 includes a memory controller 206 for reading at least one page of data from the first memory 202, a buffer 208 connected to the memory controller 206 for buffering a portion of the at least one page of data read from the first memory 202, and a control unit 210 connected to the memory controller 206 for signaling the memory controller 206 to read the at least one page of data from the first memory 202. The buffer 208 is preferably a first-in-first-out (FIFO) buffer with a small memory size such as several 32-bit words. In a preferred embodiment, the memory controller 206 reads the at least one page of data from the first memory 202 based on a set of threshold voltage configurations for the first memory provided by the control unit 210. The set of threshold voltage configurations includes at least one threshold voltage configuration indicating a mapping between logic values and corresponding voltage ranges inside a single information storage cell of the first memory.
  • The device 200 further includes a blank page pre-detection unit 212, connected to the buffer 208, for generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the data in the at least one page, and a data processing unit 214, connected to the buffer 208, the control unit 210 and the blank page pre-detection unit 212, for identifying a type of the page based on all of the data in the at least one page. Operation of the data processing unit 214 is controlled by the control unit 210 based on the pre-detection result.
  • FIG. 3 shows first and second structure types 300 and 302 of a page in the first memory 202. In a page having the first data structure type 300, the page of data includes a metadata block 304 at the beginning of the page that stores information of the page, such as bad page indication or some bytes swapped for bad page indication or other control bytes, followed by a plurality of interlaced block[n]d blocks 306 for storing a systematic part of the ECC code used for decoding and encoding and block[n]p blocks 308 for storing a parity part of the ECC code for corresponding block[n]d blocks 306. In a page having the second data structure type 302, the page of data includes a metadata block 304 that stores information of the page and a meta data block 310 that stores the parity part of the ECC for the meta data block, followed by a plurality of interlaced block[n]d blocks 306 for storing the systematic part of the ECC and block[n]p blocks 308 for storing the parity part of the ECC code for block[n]d block. In a preferred embodiment, the predetermined part used for blank page pre-detection is the metadata block 304 of the page.
  • FIG. 4 shows a detailed structure of a metadata block 400 of a page with one of the structure types 300 and 302. A size of the metadata block 400 is configured to be 128 bits that includes 4 words WORD_0˜WORD_3. As shown in FIG. 4, the metadata block 400 has an occupied part 402 with a size of at least one byte for containing the information of the page, and a non-occupied part 404. In the example shown in FIG. 4, the occupied part 402 is the first two bytes BYTE_0 and BYTE_1 of the first word WORD_0, and the non-occupied part 404 has a size of 112 bits that includes 14 bytes. For a programmed page, the non-occupied part 404 is filled with 0x00 bytes. However, if the page is a blank page, the non-occupied part 404 is ideally filled with 0xFF bytes, or only contains a limited number of “0” bits due to noise.
  • Referring back to FIG. 2, the blank page pre-detection unit 212 generates the pre-detection result by counting one of “1” and “0” bits in the non-occupied part 404 and comparing the number of one of “1” and “0” in the non-occupied part 404 with a predetermined threshold. The predetermined threshold is preferably set as half of the number of bits in the non-occupied part 404. For example, the blank page pre-detection unit 212 counts 1 in the non-occupied part 404, and the predetermined threshold is set as 56, which is half of the number of bits in the non-occupied part 404 for the metadata block 400 of FIG. 4. The blank page pre-detection unit 212 pre-detects the page is a blank page if the number of “1” bits in the non-occupied part 404 is greater than the predetermined threshold. In a preferred embodiment, the blank page pre-detection unit 212 generates a pre-detection-done signal in conjunction with a read data valid signal generated by the buffer 208 for indicating the data processing unit 214 to read data from the buffer 208, and further indicates the pre-detection result to the control unit 210.
  • The data processing unit 214 includes a de-randomizer 216, a decoder 218 and a blank page detector 220, which are respectively enabled by the control unit 210 based on the pre-detection result.
  • If the pre-detection result indicates that the page is a blank page, the control unit 210 disables the de-randomizer 216 and the decoder 218, and enables the blank page detector 220 for double checking whether the page is a blank page by scanning all of the data in the page to generate a final blank page detecting result. The page is skipped if the final blank page detecting result shows that the page is a blank page.
  • If either the pre-detection result or the final blank page detecting result shows that the page is not a blank page, the control unit 210 enables the de-randomizer 216 and the decoder 218, and disables the blank page detector 220 for further processing. In a preferred embodiment, if the pre-detection result indicates that the page is not a blank page, the de-randomizer 216 de-randomizes data in the page preferably by XORing the data with a random sequence generated by the de-randomizer 216, and the decoder 218 decodes the de-randomized data in the page with a set of codes and performs error-correcting process on the decoded data, where the set of codes belongs to a class of cyclic error-correcting codes, such as BCH codes. If the final blank page detecting result shows that the page is not a blank page, a read-retry operation will be performed, in which the control unit 210 signals the memory controller 206 to read the page of data from the first memory 202 again based on a second set of threshold voltage configurations, and the data processing unit 214 de-randomizes and decodes the data in the page read based on the second set of threshold voltage configurations. Similarly, if errors in the decoded data of the page fail to be corrected, another read-retry operation will be performed based on another set of threshold voltage configurations. In a preferred embodiment, the control units 210 includes a plurality of sets of threshold voltage configurations.
  • If the page of data passes the decoding and error-correcting process based on one set of threshold voltage configurations, the page is a programmed page and the decoded data is stored in the external memory 204 through an interface 222. In a preferred embodiment, the interface 222 is a master interface for accessing the second memory, such as AXI protocol used by ARM Corporation. However, if the page of data read from the flash memory 202 fails in the error-correcting process after all of the plurality of sets of threshold voltages have been tried, the page is identified as a bad page and will be skipped.
  • FIG. 5 is a flow chart of a method for operating the device 200 of FIG. 2 to read data from the first memory 202 to the external memory 204 in accordance with another embodiment of the invention. The device 200 can be implemented in hardware or software, the flash memory 202 can be any low cost, page-based accessible memory chip that stores a plurality of programmed data, and the external memory 204 can be any higher cost on or off-chip RAM.
  • At step 502, the memory controller 206 of the device 202 reads a page of data from the flash memory 202. In a preferred embodiment, the memory controller 206 reads the at least one page of data from the first memory 202 based on a set of threshold voltage configurations. The set of threshold voltage configurations includes at least one threshold voltage configuration indicating a mapping between logic values and corresponding voltage ranges inside a single information storage cell of the first memory. In a preferred embodiment, a portion of the data in the page that has been read out by the memory controller 206 is stored in the buffer 208 before being forwarded to a next step. The buffer 208 is preferably a FIFO buffer with a small memory size such as several 32-bit words implemented by registers.
  • At step 504, a blank page pre-detection process is performed to detect whether the page is a blank page based on a pre-determined part of the data in the page stored in the buffer 208. In a preferred embodiment, the predetermined part used for blank page pre-detection is the metadata block 304 at the beginning of the page, as shown in FIG. 3, for storing information of the page, such as bad page indication or some bytes swapped for bad page indication or other control bytes. As shown in FIG. 4, the metadata block 400 has an occupied part 402 with a size of at least one byte for containing the information of the page, and a non-occupied part 404. For a programmed page, the non-occupied part 404 is filled with 0x00 bytes. However, if the page is a blank page, the non-occupied part 404 is ideally filled with 0xFF bytes, or only contains a limited number of 0 bits due to noise.
  • In a preferred embodiment, the blank page pre-detection is performed by calculating one of “1 and 0 in the non-occupied part 404 and comparing the number of one of “1” and “0” in the non-occupied part 404 with a predetermined threshold. The predetermined threshold is preferably set as half of the number of bits in the non-occupied part 404. For example, if the number of “1” bits is greater than half of the number of bits in the non-occupied part 404, the page is pre-detected as a blank page, otherwise, the page is pre-detected as a non-blank page.
  • At step 506, if the page is pre-detected as a non-blank page, at steps 508 and 510, the data in the page is de-randomized preferably by being XORed with a random sequence, and decoded based on a set of codes. In a preferred embodiment, the decoding includes error-correcting the decoded data, where the set of codes belongs to a class of cyclic error-correcting codes, such as BCH codes.
  • At step 512, if the decoding succeeds, i.e., errors, if any, during the decoding have been corrected, at step 514, the page is identified as a programed page, and the de-randomized and decoded data of the page is stored in the external memory 204. However, if the decoding fails, i.e., some errors during the decoding fails to be corrected, at step 516, a read-retry operation is performed.
  • FIG. 6 is a detailed flow chart of the read-retry operation 516 in the flow chart of FIG. 5.
  • At step 600, the set of threshold voltage configurations used for reading the page of data from the memory 202 is replaced with a second set of threshold voltage configurations.
  • At step 602, the memory controller 206 reads the page of data from the first memory 202 based on the second set of threshold voltage configurations.
  • At steps 604 and 606, the page of data is de-randomized preferably by being XORed with a random sequence and decoded with the set of ECC codes.
  • Going back to FIG. 5, at step 518, if the data of the page read based on the second set of threshold voltage configurations is successfully decoded, at step 514, the page is identified as a programed page, and the de-randomized and decoded data of the page read based on the second set of threshold voltage configurations is stored in the external memory 204. Otherwise, at step 520, the read-retry operation is repeated based on other available sets of threshold voltage configurations. At step 522, if the page of data read from the flash memory 202 fails to be successfully decoded after all available sets of threshold voltage configurations have been tried, the page is identified as a bad page and will be skipped.
  • Referring back to step 506, if the page is pre-detected as a blank page, moving to step 522, blank page detection is performed by scanning through all of the data in the page.
  • At step 522, if the page is detected as a blank page based on the blank page detection process, at step 524, the blank page is skipped. If the page is detected as a non-blank page based on the blank page detection process, moving to step 516, the read-retry operation will be performed as described above until either the data in the page is successfully decoded and stored in the external memory 204 or the page is identified as a bad page and skipped.
  • The description of the preferred embodiments of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or to limit the invention to the forms disclosed. It will be appreciated by those skilled in the art that changes could be made to the embodiments described above without departing from the broad inventive concept thereof. It is understood, therefore, that this invention is not limited to the particular embodiment disclosed, but covers modifications within the spirit and scope of the present invention as defined by the appended claims.

Claims (18)

1. A device for reading data from a first memory to a second memory, the device comprising:
a memory controller for reading at least one page of data from the first memory;
a buffer connected to the memory controller for buffering a portion of the at least one page of data read from the first memory;
a blank page pre-detection unit, connected to the buffer, for generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the data in the at least one page;
a data processing unit, connected to the buffer and the blank page pre-detection unit, for processing all of the data in the at least one page to identify a type of the page; and
a control unit, connected to the memory controller, the blank page pre-detection unit, and the data processing unit, for signaling the memory controller to read the at least one page of data from the first memory and enabling the data processing unit based on the pre-detection result.
2. The device of claim 1, wherein the pre-determined part is a metadata block of the at least one page, wherein the metadata block includes an occupied part for storing information of the at least one page, and a non-occupied part.
3. The device of claim 2, wherein the blank page pre-detection unit generates the pre-detection result by counting one of 1 and 0 in the non-occupied part and comparing the number of one of 1 and 0 in the non-occupied part with a predetermined threshold.
4. The device of claim 3, wherein the predetermined threshold is set as half of the number of bits in the non-occupied part.
5. The device of claim 1, wherein the data processing unit comprises:
a blank page detector for detecting whether the at least one page is a blank page based on all of the data in the at least one page, wherein the blank page detector is enabled if the pre-detection result indicates that the at least one page is a blank page;
a de-randomizer for de-randomizing the at least one page of data; and
a decoder, connected to the de-randomizer, for identifying whether the at least one page is either of a programmed page or a bad page by decoding de-randomized data in the at least one page, wherein the de-randomizer and the decoder are enabled and the blank page detector is disabled if either of the pre-detection result or the blank page detector indicates that the at least one page is not a blank page.
6. The device of claim 5, further comprising an interface unit, connected to the page identifying unit, for transferring the at least one page of data to the second memory if the page identifying unit identifies that the at least one page is a programmed page, wherein the programmed page is identified if the decoder successfully decoded the de-randomized data in the at least one page.
7. The device of claim 5, wherein the memory controller reads the at least one page of data from the first memory based on a set of threshold voltage configurations provided by the control unit, wherein the set of threshold voltages includes at least one threshold voltage configuration indicating a mapping between logic values and corresponding voltage ranges inside a single information storage cell of the first memory.
8. The device of claim 7, wherein the control unit stores a plurality of sets of threshold voltage configurations, wherein upon a failure to decode the at least one page of data read based on a first set of threshold voltage configurations, the control unit enables the memory controller, de-randomizer and decoder to perform a read-retry operation based on a second set of threshold voltage configurations.
9. The device of claim 8, wherein in the read-retry operation, the memory controller reads the at least one page of data from the first memory based on the second set of threshold voltage configurations, the de-randomizer de-randomizes the at least one page of data read based on the second set of threshold voltages, and the decoder decodes the at least one page of data read based on the second set of threshold voltage configurations.
10. The device of claim 8, wherein the control unit indicates that the at least one page is a bad page upon failing to decode the at least one page of data after read-retry operations based on all of the plurality of sets of threshold voltage configurations have been performed.
11. A method of reading data from a first memory to a second memory performed by a device, wherein the device includes a buffer and a processor connected to the buffer, the method comprising:
reading at least one page of data from the first memory;
generating a pre-detection result that indicates whether the at least one page is a blank page based on a pre-determined part of the at least one page of data stored in the buffer;
performing blank page detection based on all of the data in the at least one page if the pre-detection result indicates that the at least one page is a blank page; and
de-randomizing and decoding the at least one page of data if the pre-detection result or the blank page detection indicates that the at least one page is not a blank page.
12. The method of claim 11, wherein the pre-determined part is a metadata block of the at least one page, wherein the metadata block includes a plurality of occupied part for storing information of the at least one page, and a plurality of non-occupied part.
13. The method of claim 12, wherein said generating the pre-detection result comprises counting one of 1 and 0 in the non-occupied part and comparing the number of one of 1 and 0 in the non-occupied part with a threshold.
14. The method of claim 13, wherein the threshold is set as half of the number of bits in the non-occupied part.
15. The method of claim 11, further comprising storing the at least one page of data to the second memory.
16. The method of claim 11, wherein the at least one page of data is read from the first memory based on a set of threshold voltage configurations, wherein the set of threshold voltage configurations includes at least one threshold voltage configuration indicating a mapping between logic values and corresponding voltage ranges inside a single information storage cell of the first memory.
17. The method of claim 16, further comprising, upon a failure to decode the at least one page of data read based on a first set of threshold voltage configurations, performing a read-retry operation with a second set of threshold voltage configurations.
18. The method of claim 17, wherein the read-retry operation comprises:
reading the at least one page of data from the first memory based on the second set of threshold voltage configurations, and
de-randomizing and decoding the at least one page of data read based on the second set of threshold voltage configurations.
US14/946,780 2015-06-10 2015-11-20 Method and apparatus for real-time blank page detection in data transmission Active 2036-04-27 US10521133B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510445431.3 2015-05-10
CN201510445431 2015-06-10
CN201510445431.3A CN106250050B (en) 2015-06-10 2015-06-10 Method and apparatus for real-time blank page detection in data transmission

Publications (3)

Publication Number Publication Date
US20160328164A1 US20160328164A1 (en) 2016-11-10
US20180039432A9 true US20180039432A9 (en) 2018-02-08
US10521133B2 US10521133B2 (en) 2019-12-31

Family

ID=57221871

Family Applications (1)

Application Number Title Priority Date Filing Date
US14/946,780 Active 2036-04-27 US10521133B2 (en) 2015-06-10 2015-11-20 Method and apparatus for real-time blank page detection in data transmission

Country Status (2)

Country Link
US (1) US10521133B2 (en)
CN (1) CN106250050B (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI692771B (en) * 2017-11-14 2020-05-01 慧榮科技股份有限公司 Method for controlling operations of memory device, associated memory device and controller thereof, and associated electronic device
US11907571B2 (en) * 2020-07-13 2024-02-20 SK Hynix Inc. Read threshold optimization systems and methods using domain transformation
CN118689396A (en) * 2024-06-04 2024-09-24 合肥开梦科技有限责任公司 Physical page management method and storage device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930706A (en) 1995-11-29 1999-07-27 Ericsson Inc. Detecting messages transmitted over a communications channel such as a paging channel
JP2004289496A (en) 2003-03-20 2004-10-14 Ricoh Co Ltd Image reproducing apparatus, image reproducing method, and program for causing computer to execute this method
EP1993611A4 (en) * 2006-03-16 2013-05-22 Alnylam Pharmaceuticals Inc RNAi MODULATION OF TGF-BETA AND THERAPEUTIC USES THEREOF
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
US7934052B2 (en) * 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
JP4567771B2 (en) 2008-07-07 2010-10-20 シャープ株式会社 Document reading apparatus, and image transmission apparatus and image forming apparatus provided with document reading apparatus
US8351290B1 (en) * 2008-09-12 2013-01-08 Marvell International Ltd. Erased page detection
TWI425513B (en) * 2009-08-13 2014-02-01 Silicon Motion Inc Method for identifying a page of a block of a flash memory, and associated memory device
TWI438778B (en) 2010-03-25 2014-05-21 Silicon Motion Inc Method for suppressing errors, and associated memory device and controller thereof
US8417880B2 (en) 2010-11-01 2013-04-09 Hong Kong Applied Science and Technology Research Institute Company Limited System for NAND flash parameter auto-detection
JP5179559B2 (en) 2010-11-12 2013-04-10 シャープ株式会社 Control device for controlling image processing system, image forming device, image reading device, control method, image processing program, and computer-readable recording medium
JP2012129910A (en) 2010-12-17 2012-07-05 Canon Inc Image processing device, method, and program
US9417811B2 (en) * 2012-03-07 2016-08-16 International Business Machines Corporation Efficient inline data de-duplication on a storage system
KR102050729B1 (en) * 2013-02-12 2019-12-02 삼성전자 주식회사 Memory System
CN104217761B (en) * 2013-05-31 2018-12-14 慧荣科技股份有限公司 Data storage device and error correction method thereof

Also Published As

Publication number Publication date
US20160328164A1 (en) 2016-11-10
CN106250050A (en) 2016-12-21
CN106250050B (en) 2021-02-05
US10521133B2 (en) 2019-12-31

Similar Documents

Publication Publication Date Title
KR101750662B1 (en) Circuits, apparatuses, and methods for correcting data errors
EP1635261B1 (en) Memory with embedded error correction code circuit
US8458566B2 (en) Method for performing copy back operations and flash storage device
US8719677B2 (en) Using ECC encoding to verify an ECC decode operation
US11815996B2 (en) Method and system for identifying erased memory areas
US9778985B1 (en) Operating method of data storage device
CN103187104B (en) The error correction method of DRAM memory
US20150067439A1 (en) Memory controller
US9354970B2 (en) Method and apparatus for encoding erroneous data in an error correction code protected memory
US10956259B2 (en) Error correction code memory device and codeword accessing method thereof
US20110066883A1 (en) Data storage apparatus and data writing/reading method
US9164831B2 (en) Memory controller, semiconductor storage device, and decoding method
US20200007168A1 (en) Data storage system and associated data storing method for reducing data error rate
US10521133B2 (en) Method and apparatus for real-time blank page detection in data transmission
KR100680473B1 (en) Flash memory device with reduced access time
US8429485B2 (en) Method and apparatus for detecting free page and a method and apparatus for decoding error correction code using the method and apparatus for detecting free page
JP2009070362A (en) ECC code generation method for memory device
KR101489827B1 (en) Semiconductor memory device using an efficient protocol between NAND flash memory and controller
US11048586B2 (en) Memory systems and methods of correcting errors in the memory systems
CN119149446A (en) Memory address generation method, memory control method and generation device
JP2012003569A (en) Memory controller, flash memory system including memory controller, and method of controlling flash memory
US9361180B2 (en) Storing data by an ECC memory
US9519539B2 (en) Monitoring data error status in a memory
CN112466380B (en) Memory and storage method thereof
JP2011154551A (en) Error checking and correction device and method, as well as memory device

Legal Events

Date Code Title Description
AS Assignment

Owner name: FREESCALE SEMICONDUCTOR,INC., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WANG, YONG;FAN, CHONGBIN;XIE, JUN;SIGNING DATES FROM 20150604 TO 20150608;REEL/FRAME:037095/0090

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., MARYLAND

Free format text: SUPPLEMENT TO THE SECURITY AGREEMENT;ASSIGNOR:FREESCALE SEMICONDUCTOR, INC.;REEL/FRAME:039138/0001

Effective date: 20160525

AS Assignment

Owner name: NXP USA, INC., TEXAS

Free format text: CHANGE OF NAME;ASSIGNOR:FREESCALE SEMICONDUCTOR INC.;REEL/FRAME:040626/0683

Effective date: 20161107

AS Assignment

Owner name: NXP USA, INC., TEXAS

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME;ASSIGNOR:FREESCALE SEMICONDUCTOR INC.;REEL/FRAME:041414/0883

Effective date: 20161107

Owner name: NXP USA, INC., TEXAS

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016;ASSIGNORS:NXP SEMICONDUCTORS USA, INC. (MERGED INTO);FREESCALE SEMICONDUCTOR, INC. (UNDER);SIGNING DATES FROM 20161104 TO 20161107;REEL/FRAME:041414/0883

FEPP Fee payment procedure

Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PTGR); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

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: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

AS Assignment

Owner name: NXP B.V., NETHERLANDS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:050744/0097

Effective date: 20190903

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

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