CN109582490A - 智能重读命令生成 - Google Patents

智能重读命令生成 Download PDF

Info

Publication number
CN109582490A
CN109582490A CN201710957709.4A CN201710957709A CN109582490A CN 109582490 A CN109582490 A CN 109582490A CN 201710957709 A CN201710957709 A CN 201710957709A CN 109582490 A CN109582490 A CN 109582490A
Authority
CN
China
Prior art keywords
read
reading
threshold voltage
order
value
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
CN201710957709.4A
Other languages
English (en)
Other versions
CN109582490B (zh
Inventor
薛立成
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.)
BEIJING CORE TECHNOLOGY Co Ltd
Original Assignee
BEIJING CORE TECHNOLOGY 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 BEIJING CORE TECHNOLOGY Co Ltd filed Critical BEIJING CORE TECHNOLOGY Co Ltd
Publication of CN109582490A publication Critical patent/CN109582490A/zh
Application granted granted Critical
Publication of CN109582490B publication Critical patent/CN109582490B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请提供了智能重读命令生成。提供的读命令处理方法包括如下步骤:接收主机发出的读访问命令;根据读访问命令向非易失性存储器发出读命令;接收非易失性存储器的读出数据;对读出数据进行错误校正。

Description

智能重读命令生成
技术领域
本申请涉及存储领域,具体地,涉及对从NVM芯片中读出数据的错误处理。
背景技术
闪存通过在存储单元中保持电荷量来存储信息。存储单元中的电荷量决定了存储单元的读出电压。在读取闪存数据时,比较存储单元的读出电压与阈值电压来识别存储单元所存储的信息。相变存储器、阻变存储器、磁旋存储器、DRAM各自利用基于不同原理的存储单元来存储信息。
存储介质一般不是完全可靠的。由于存储单元的电荷量受存储单元的质量、寿命、时间等多种因素的影响,以及从多个存储单元到敏感放大器的信号传输路径的非均一性,导致从存储单元读取的数据同写入的数据存在偏差,无法正确体现原始向存储单元写入的信息。
现有技术中采用一些手段来预防或应对因存储单元的电荷量等因素的变化而导致读取的数据无法正确体现写入的数据的问题,例如,在美国专利US9070454B1中,根据存储单元的擦写次数、保持时间等因素计算阈值电压(从存储单元中读取数据或向存储单元中写入数据时使用的阈值电压或判决电压),并使用计算出的阈值电压向存储单元写入数据。阈值电压可包括用于读操作的读阈值与用于写操作的写阈值。
在闪存芯片中,通过为读操作指示不同的参数,来选择读操作时所使用的阈值电压。通过具有不同阈值电压的读操作,从存储单元读出的数据会有不同的结果。有些结果具有较低的比特错误率(Bit Error Ratio,错误比特与传输的总比特数的百分比),而有些结果具有较高的比特错误率。结合使用ECC(Error Correction Code,错误校正码)技术,具有较低的比特错误率的读取结果被ECC技术纠正的几率较高,从而通过尝试不同参数,来应对读操作中遇到的错误。参数可以合并在读操作中提供给闪存芯片,或者在闪存芯片中设置用于读操作的参数,而在闪存芯片处理读操作时,使用所设置的参数。
ECC技术的纠错能力是有限的,例如,最多能在1K字节数据(被称为ECC数据帧)中纠正40比特错误。当存储的数据的错误比特数量超出了ECC部件的纠错能力,需要尝试具有其他参数的读操作,以期待得到具有较少错误比特数的读出数据,以符合ECC部件的纠错能力要求。
存储介质上通常按页来存储和读取数据,而按块来擦除数据。通常,块包含多个页,存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节,当然,物理页也可以具有其他的尺寸。在读出或写入数据时,一般为每个页的所有存储单元设置相同的阈值电压。
发明内容
读操作具有多种参数,分别指示了不同的读阈值电压。在对读操作的错误处理中,需要提高选择读操作参数的效率,以加快数据读取过程,并减少从NVM芯片重复读数据的次数,以提升读数据的有效带宽。
本申请的目的还在于提供读命令处理方法及固态存储设备,避免主机与固态存储设备之间进行多次数据与命令的交互,缩短了读命令处理的延迟。
根据本申请的第一方面,提供了根据本申请第一方面的读命令处理方法,其中,包括如下步骤:接收主机发出的读访问命令;根据读访问命令向非易失性存储器发出读命令;接收非易失性存储器的读出数据;对读出数据进行错误校正。
根据本申请的第一方面的第一读命令处理方法,提供了根据本申请第一方面的第二读命令处理方法,其中,将对读出数据的错误校正结果发送给主机;响应于错误校正失败,接收主机发出的重读命令。
根据本申请的第一方面的第二读命令处理方法,提供了根据本申请第一方面的第三读命令处理方法,其中,重读命令指示与读命令不同的读命令参数。
根据本申请的第一方面的第一读命令处理方法,提供了根据本申请第一方面的第四读命令处理方法,其中,响应于对读出数据的错误校正失败,生成重读命令;向非易失性存储器发送重读命令;获取重读命令的读出数据;若对重读命令的读出数据的错误校正成功,则将错误校正结果发送给主机。
根据本申请的第一方面的第四读命令处理方法,提供了根据本申请第一方面的第五读命令处理方法,其中,在重读命令中指示与读命令不同的读命令参数。
根据本申请的第一方面的第四读命令处理方法,提供了根据本申请第一方面的第六读命令处理方法,其中,响应于重读命令的读出数据的错误校正失败,重复生成重读命令,直至错误校正成功。
根据本申请的第一方面的第一至六读命令处理方法,提供了根据本申请第一方面的第七读命令处理方法,其中,对读命令的读出数据进行错误校正后,对错误校正后的数据进行解扰。
根据本申请的第一方面的第一至六读命令处理方法,提供了根据本申请第一方面的第八读命令处理方法,其中,对读命令的读出数据进行解扰后,对解扰后的数据进行错误校正。
根据本申请的第一方面的第四至八读命令处理方法,提供了根据本申请第一方面的第九读命令处理方法,其中,统计错误校正后的数据中具有第一值的比特数量与具有第二值的比特数量。
根据本申请的第一方面的第四至八读命令处理方法,提供了根据本申请第一方面的第十读命令处理方法,其中,统计读命令的读出数据中具有第一值的比特数量与具有第二值的比特数量。
根据本申请的第一方面的第九或十读命令处理方法,提供了根据本申请第一方面的第十一读命令处理方法,其中,根据具有第一值的比特数量与具有第二值的比特数量之间的关系,确定重读命令的读命令参数。
根据本申请的第一方面的第十一读命令处理方法,提供了根据本申请第一方面的第十二读命令处理方法,其中,若具有第一值的比特数量与具有第二值的比特数量的第一比例小于1,则相对于在前的读命令的读出阈值电压,重读命令的读出阈值电压朝向具有第二值的存储单元对应的读出电压变化。
根据本申请的第一方面的第十二读命令处理方法,提供了根据本申请第一方面的第十三读命令处理方法,其中,若第一比例大于1,则相对于在前的读命令的读出阈值电压,读出阈值电压朝向具有第一值的存储单元对应的读出电压变化。
根据本申请的第一方面的第十二或十三读命令处理方法,提供了根据本申请第一方面的第十四读命令处理方法,其中,重读命令的读出阈值电压的调整方向和调整幅度依据第一比例确定。
根据本申请的第一方面的第十四读命令处理方法,提供了根据本申请第一方面的第十五读命令处理方法,其中,通过查找表或拟合获得的函数确定调整幅度与第一比例之间的映射关系。
根据本申请的第一方面的第十二读命令处理方法,提供了根据本申请第一方面的第十六读命令处理方法,其中,读出阈值电压的调整幅度为单位步长的倍数。
根据本申请的第一方面的第四至八读命令处理方法,提供了根据本申请第一方面的第十七读命令处理方法,其中,统计错误校正后的数据中具有第一值的第一比特数量或具有第二值的第二比特数量,并且依据第一比特数量或第二比特数量确定重读命令的读出阈值电压的调整方向和/或调整幅度。
根据本申请的第一方面的第一至十七读命令处理方法,提供了根据本申请第一方面的第十八读命令处理方法,其中,响应于错误校正失败,生成重读命令,指示重读命令访问与在前的读命令相同的地址。
根据本申请的第一方面的第一至十八读命令处理方法,提供了根据本申请第一方面的第十九读命令处理方法,其中,记录使错误校正成功的读命令参数并更新默认的读命令参数。
根据本申请的第一方面的第八读命令处理方法,提供了根据本申请第一方面的第二十读命令处理方法,其中,根据解扰后的数据中具有第一值的比特数量与具有第二值的比特数量之间的第二比例确定是否生成重读命令。
根据本申请的第一方面的第二十读命令处理方法,提供了根据本申请第一方面的第二十一读命令处理方法,其中,若第二比例大于指定阈值,则直接生成重读命令;否则,对解扰后的数据进行错误校正解码,并且根据错误校正后的数据或解扰后的数据确定是否生成重读命令。
根据本申请的第一方面的第二十一读命令处理方法,提供了根据本申请第一方面的第二十二读命令处理方法,其中,重读命令的读出阈值电压的调整方向和调整幅度依据错误校正后的数据或解扰后的数据中具有第一值的比特数量和/或具有第二值的比特数量确定。
根据本申请的第一方面的第八读命令处理方法,提供了根据本申请第一方面的第二十三读命令处理方法,其中,统计解扰后的数据中具有第一值的比特数量与具有第二值的比特数量之间的第三比例;同时,对解扰后的数据进行错误校正。
根据本申请的第一方面的第二十三读命令处理方法,提供了根据本申请第一方面的第二十四读命令处理方法,其中,若错误校正失败,根据第三比例生成重读命令。
根据本申请的第一方面的第二十三读命令处理方法,提供了根据本申请第一方面的第二十五读命令处理方法,其中,若第三比例的统计的延迟小于错误校正的延迟,则根据第三比例生成重读命令。
根据本申请的第一方面的第二十五读命令处理方法,提供了根据本申请第一方面的第二十六读命令处理方法,其中,暂存重读命令;响应于错误校正失败,发出重读命令。
根据本申请的第一方面的第二十五读命令处理方法,提供了根据本申请第一方面的第二十七读命令处理方法,其中,发出重读命令;若错误校正成功,则丢弃依据重读命令从非易失性存储器读出的数据;若错误校正失败,则使用依据重读命令从非易失性存储器读出的数据。
根据本申请的第一方面的第一至二十七读命令处理方法,提供了根据本申请第一方面的第二十八读命令处理方法,其中,非易失性存储器的存储单元为三值存储单元,经编程的存储单元具有多种状态之一,每种状态对应三比特编码之一,每个比特具有第一值或第二值;其中,读出阈值电压的调整取决于存储单元的状态。
根据本申请的第一方面的第一至二十八读命令处理方法,提供了根据本申请第一方面的第二十九读命令处理方法,其中,依据从第一类型的物理页读出的数据中具有第一值的比特数量和/或具有第二值的比特数量,确定重读命令的读命令参数。
根据本申请的第一方面的第二十九读命令处理方法,提供了根据本申请第一方面的第三十读命令处理方法,其中,若从第一类型的物理页读出的数据中具有第一值的比特数量大于第一数量阈值,则向降低具有第一值的比特数量的方向调整重读命令所使用的对应于第一读出阈值电压的读命令参数,其中第一类型的物理页对应第一读出阈值电压。
根据本申请的第一方面的第二十九或三十读命令处理方法,提供了根据本申请第一方面的第三十一读命令处理方法,其中,向降低第一读出阈值电压的方向调整重读命令所使用的对应于第一读出阈值电压的读命令参数,其中第一值对应的存储单元的一种或多种状态所对应的读出电压小于第一读出阈值电压。
根据本申请的第一方面的第二十九或三十读命令处理方法,提供了根据本申请第一方面的第三十二读命令处理方法,其中,向升高第一读出阈值电压的方向调整重读命令所使用的对应于第一读出阈值电压的参数,其中第一值对应的存储单元的一种或多种状态所对应的读出电压大于第一读出阈值电压。
根据本申请的第一方面的第二十九至三十二读命令处理方法,提供了根据本申请第一方面的第三十三读命令处理方法,其中,若从第二类型的物理页读出的数据中具有第一值的比特数量大于第二数量阈值,则向降低具有第一值的比特数量的方向调整重读命令所使用的对应于第二读出阈值电压和/或第三读出阈值电压的读命令参数,其中第二类型的物理页对应第二读出阈值电压和第三读出阈值电压,第二读出阈值电压小于第三读出阈值电压。
根据本申请的第一方面的第三十三读命令处理方法,提供了根据本申请第一方面的第三十四读命令处理方法,其中,向降低第二读出阈值电压的方向以及升高第三读出阈值电压的方向调整重读命令所使用的对应于第二读出阈值电压的读命令参数与对应于第三读出阈值电压的读命令参数,其中第一值对应的存储单元的状态所对应的读出电压小于第二读出阈值电压或者大于第三读出阈值电压。
根据本申请的第一方面的第二十九或三十三读命令处理方法,提供了根据本申请第一方面的第三十五读命令处理方法,其中,向升高第二读出阈值电压的方向以及降低第三读出阈值电压的方向调整重读命令所使用的对应于第二读出阈值电压的读命令参数与对应于第三读出阈值电压的读命令参数,其中第一值对应的存储单元的状态所对应的读出电压大于第二读出阈值电压且小于第三读出阈值电压。
根据本申请的第一方面的第二十九至三十五读命令处理方法,提供了根据本申请第一方面的第三十六读命令处理方法,其中,若从第三类型的物理页读出的数据中具有第一值的比特数量大于第三数量阈值,则向降低具有第一值的比特数量的方向调整重读命令所使用的对应于第四读出阈值电压、第五读出阈值电压和/或第六读出阈值电压的读命令参数,其中第三类型的物理页对应第四读出阈值电压、第五读出阈值电压和第六读出阈值电压,第五读出阈值电压大于第四读出阈值电压且小于第六读出阈值电压。
根据本申请的第一方面的第三十六读命令处理方法,提供了根据本申请第一方面的第三十七读命令处理方法,其中,向降低第四读出阈值电压、升高第五读出阈值电压的方向以及降低第六读出阈值电压的方向调整重读命令所使用的对应于第四读出阈值电压的读命令参数、对应于第五读出阈值电压的读命令参数与对应于第六读出阈值电压的读命令参数,其中第一值对应的存储单元的状态所对应的读出电压小于第四读出阈值电压或者介于第五读出阈值电压和第六读出阈值电压之间。
根据本申请的第一方面的第三十六读命令处理方法,提供了根据本申请第一方面的第三十八读命令处理方法,其中,向升高第四读出阈值电压的方向、降低第五读出阈值电压的方向以及升高第六读出阈值电压的方向调整重读命令所使用的对应于第四读出阈值电压的读命令参数、对应于第五读出阈值电压的读命令参数与对应于第六读出阈值电压的读命令参数,其中第一值对应的存储单元的状态所对应的读出电压介于第四读出阈值电压和第五读出阈值电压之间或大于第六读出阈值电压。
根据本申请的第一方面的第二十九至三十八读命令处理方法,提供了根据本申请第一方面的第三十九读命令处理方法,其中,若从第四类型的物理页读出的数据中具有第一值的比特数量大于第四数量阈值,则向降低具有第一值的比特数量的方向调整重读命令所使用的对应于第七读出阈值电压、第八读出阈值电压、第九读出阈值电压和/或第十读出阈值电压的读命令参数,其中第四类型的物理页对应第七读出阈值电压、第八读出阈值电压、第九读出阈值电压和第十读出阈值电压,其中第七读出阈值电压、第八读出阈值电压、第九读出阈值电压、第十读出阈值电压依次增大。
根据本申请的第一方面的第三十九读命令处理方法,提供了根据本申请第一方面的第四十读命令处理方法,其中,向降低第七读出阈值电压、升高第八读出阈值电压的方向、降低第九读出阈值电压的方向以及升高第十读出阈值电压的方向调整重读命令所使用的对应于第七读出阈值电压的读命令参数、对应于第八读出阈值电压的读命令参数、对应于第九读出阈值电压的读命令参数与对应于第十读出阈值电压的读命令参数,其中第一值对应的存储单元的状态所对应的读出电压小于第七读出阈值电压、介于第八读出阈值电压和第九读出阈值电压之间或者大于第十读出阈值电压。
根据本申请的第一方面的第三十九或四十读命令处理方法,提供了根据本申请第一方面的第四十一读命令处理方法,其中,向升高第七读出阈值电压、降低第八读出阈值电压的方向、升高第九读出阈值电压的方向以及降低第十读出阈值电压的方向调整重读命令所使用的对应于第七读出阈值电压的读命令参数、对应于第八读出阈值电压的读命令参数、对应于第九读出阈值电压的读命令参数与对应于第十读出阈值电压的读命令参数,其中第一值对应的存储单元的状态所对应的读出电压介于第七读出阈值电压和第八读出阈值电压之间或介于第九读出阈值电压和第十读出阈值电压之间。
根据本申请的第一方面的第二十八至四十一读命令处理方法,提供了根据本申请第一方面的第四十二读命令处理方法,其中,三值存储单元中,三个比特分别属于三种不同的物理页;使用对应一个或多个与物理页对应的读出阈值电压来从存储单元读出同物理页对应的比特的值;根据从第一类型的物理页读出的数据中具有第一值的比特数量和具有第二值的比特数量之间的第四比例来确定重读命令的读出阈值电压。
根据本申请的第一方面的第四十二读命令处理方法,提供了根据本申请第一方面的第四十三读命令处理方法,其中,若第四比例明显大于1,则生成重读命令,重读命令指示相对于在前的读命令中与第一类型的物理页对应的一个或多个第十一读出阈值电压,重读命令中与第一类型的物理页对应的一个或多个第十二读出阈值电压向降低具有第一值的比特数量的方向调整;若第四比例明显小于1,则生成重读命令,重读命令指示相对于在前的读命令中与第一类型的物理页对应的一个或多个第十一读出阈值电压,重读命令中与第一类型的物理页对应的一个或多个第十二读出阈值电压向降低具有第二值的比特数量的方向调整。
根据本申请的第一方面的第四十三读命令处理方法,提供了根据本申请第一方面的第四十四读命令处理方法,其中,若错误校验码的码率大于指定阈值,则依据第四比例是否大于第三值确定是否生成重读命令。
根据本申请的第二方面,提供了根据本申请第二方面的第一固态存储设备,包括控制部件与非易失性存储器芯片,控制部件用于执行上述的读命令处理方法。
根据本申请的第二方面的第一固态存储设备,提供了根据本申请第二方面的第二固态存储设备,其中,非易失性存储器芯片的闪存块包括多条字线,字线上耦合了多个用于存储信息的晶体管,每个晶体管提供一个存储单元,每条字线中的多个存储单元构成一个或多个物理页,构成一个物理页的比特存储在耦合到同一条字线的晶体管中。
根据本申请的第三方面,提供了根据本申请第三方面的第一控制部件,包括命令下发队列、介质接口控制器、解扰部件、错误校正部件、重读部件和命令完成队列;命令下发队列与介质接口控制器耦合,命令下发队列接收主机的读访问命令,并将读访问命令转发给介质接口控制器;介质接口控制器与非易失性存储器芯片耦合,介质接口控制器向非易失性存储器发出读命令,并接收非易失性存储器的读出数据;错误校正部件与介质接口控制器耦合,错误校正部件对读出数据进行错误校正;解扰部件与错误校正部件耦合,解扰部件对错误校正部件提供的错误校正后的数据进行解扰;命令完成队列与解扰部件耦合,命令完成队列接收解扰部件发送的解扰后的数据;重读部件分别与错误校正部件和介质接口控制器耦合,响应于错误校正失败,重读部件生成重读命令,以及重读部件通过介质接口控制器向非易失性存储器发送重读命令。
根据本申请的第四方面,提供了根据本申请第四方面的第一控制部件,包括命令下发队列、介质接口控制器、错误校正部件、重读部件和命令完成队列;命令下发队列与介质接口控制器耦合,命令下发队列接收主机的读访问命令,并将读访问命令转发给介质接口控制器;介质接口控制器与非易失性存储器芯片耦合,介质接口控制器向非易失性存储器发出读命令,并接收非易失性存储器的读出数据;错误校正部件与介质接口控制器耦合,错误校正部件对读出数据进行错误校正;命令完成队列与错误校正部件耦合,命令完成队列接收错误校正部件发送的错误校正后的数据;重读部件分别与错误校正部件和介质接口控制器耦合,重读部件根据错误校正的数据生成重读命令,以及重读部件通过介质接口控制器向非易失性存储器发送重读命令。
本申请实现的有益效果如下:
(1)本申请通过错误校正部件对读命令的读出数据进行校正,若错误校正失败,则控制部件直接生成重读命令,无需经主机发起重读命令,避免主机与固态存储设备之间进行多次数据与命令的交互,缩短了读命令处理的延迟;
(2)本申请实施例的重读部件根据错误校正和/或解扰部件的处理结果确定重读命令的读命令参数的调整方向和调整幅度,提高读命令的准确度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例一的固态存储设备的示意图。
图2是根据本申请实施例二的固态存储设备的示意图。
图3是现有技术的NAND闪存的结构。
图4为一个例子中的存储单元的读出电压分布曲线图。
图5是又一例子中的存储单元的读出电压分布曲线图。
图6是再一例子中的存储单元的读出电压分布曲线图。
图7是根据本申请实施例三的固态存储设备的示意图。
图8为另一例子的存储单元的读出电压分布曲线图。
图9是图8中存储单元的状态与存储的比特的对应关系。
图10是一个例子中的存储单元存储的三个比特与物理页的对应关系。
图11是图8所示的实施例的阈值与存储单元的状态的对应关系。
图12是图8-10所示的实施例中与物理页类型对应的读出阈值电压的调整方式。
图13为再又一例子的存储单元的读出电压分布曲线图。
图14是图13中存储单元的状态与存储的比特的对应关系。
图15是另一个例子中的存储单元存储的三个比特与物理页的对应关系。
图16是图13所示的实施例的阈值与存储单元的状态的对应关系。
图17是图13-15所示的实施例中与物理页类型对应的读出阈值电压的调整方式。
图18是根据本申请实施例四的固态存储设备的示意图。
图19是根据图18的实施例的固态存储设备处理读命令的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
图1是根据本申请实施例一的固态存储设备的示意图。固态存储设备包括控制部件与耦合到控制器部件的一片或多片NVM(非易失性存储器)芯片。NVM芯片是例如NAND闪存、相变存储器、阻变存储器、磁旋存储器。控制部件还耦合到主机,以响应主机发出的访问固态存储设备的命令。控制部件包括命令下发队列、命令完成队列、ECC部件以及介质接口控制器。
介质接口控制器耦合到NVM芯片,并以遵循NVM芯片的接口协议的方式向NVM芯片发出命令,以操作NVM芯片,并接收从NVM芯片输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
如图1所示,主机向固态存储设备发出访问固态存储设备的命令(1)。命令下发队列用于接收并缓存主机发出的访问固态存储设备的命令。主机发出的命令经过处理,并被转发给介质接口控制器(2)。介质接口控制器根据主机发出的命令向NVM芯片发出命令(3)。介质接口控制器还从NVM芯片获取命令处理结果(4)。以读命令为例,从NVM芯片读出的数据被提供给ECC部件进行错误校正(5)。处理完成的命令被添加到命令完成队列(6)。通过访问命令完成队列,主机获取命令处理结果(7)。
可以理解地,为使用ECC部件对读出数据进行错误校正,在向NVM芯片写入数据时,还用ECC部件对待写入数据进行错误校正编码(图1中未示出)。
ECC部件对从NVM芯片读出的数据进行的错误校正可能成功,也可能失败。在一个实施方式中,即使ECC部件对读出数据的错误校正失败,也向命令完成队列添加命令处理完成指示。若从命令完成队列中的命令处理完成指示中识别出数据的错误校正失败,则响应于错误校正失败,主机生成重读命令(重读命令指示与错误校正失败的读命令不同的读命令参数),发送给固态存储设备的命令下发队列。以及还重复步骤1-7,以再次尝试读取数据。
一般情况下,主机会尝试NVM芯片提供的多种或所有重读命令。如果尝试了所有的重读命令,依然没能获得错误校正成功的结果,则需要通过其他错误处理手段获取数据(例如,通过RAID技术)。而当通过某个重读命令获得了错误校正成功的正确数据,则终止对其他重读命令的尝试。
可选地,一些NVM芯片提供不同形式的重读命令。例如,通过设置特征(SetFeature)命令与读命令的组合来实现重读命令的功能。使用设置特征命令来设置读命令参数,并在读命令中,使用所设置的读命令参数。
依然可选地,在重读命令中指示与错误校正失败的读命令相同的读命令参数。
显然,由主机控制的重读过程,由于要在主机与固态存储设备之间进行多次数据与命令的交互,极大增加了命令处理的延迟。
实施例二
图2是根据本申请实施例二的固态存储设备的示意图。在该实施例中,固态存储设备的控制部件包括命令下发队列、命令完成队列、介质接口控制器、ECC部件以及重读部件。
重读部件耦合到ECC部件和介质接口控制器。响应于ECC部件指示错误校正失败,重读部件向介质接口控制器生成重读命令,并在重读命令中指示与错误校正失败的读命令不同的读命令参数。在重读部件的控制下,尝试NVM芯片提供的多种或所有重读命令。
以固态存储设备读命令处理流程为例,如图2所示,主机向固态存储设备的命令下发队列发出读访问命令(1)。主机发出的读访问命令经过处理后被转发给介质接口控制器(2)。介质接口控制器根据主机发出的读访问命令向NVM芯片发出读命令(3)。介质接口控制器还从NVM芯片获取命令处理结果,即读命令的读出数据(4)。从NVM芯片读出的数据被提供给ECC部件进行错误校正(5)。若ECC部件对读出数据的错误校正失败,则读命令或读命令访问地址、读取的数据长度、读命令使用的读命令参数等信息被转发给重读部件(6)。重读部件生成重读命令(可选地,重读命令选择读命令参数),并将重读命令发送给介质接口控制器(7)。介质接口控制器根据重读命令向NVM芯片发出重读命令(8)。介质接口控制器还从NVM芯片获取重读命令的处理结果(9)。重读命令读出的数据被提供给ECC部件(10)。若ECC部件对重读命令的读出数据的错误校正失败,则由重读部件再次发起从步骤(6)到步骤(10)的过程。若ECC部件对读出数据的错误校正成功,处理完成的命令(以及可选地,读出数据)被添加到命令完成队列(11)。通过访问命令完成队列,主机获取命令处理结果(12)。
本实施例中,在ECC部件错误校正失败的情况下,由重读部件控制发出一次或多次重读过程,减少了固态存储设备与主机的交互,降低了读命令处理延迟。
实施例三
图3展示了现有技术的NAND闪存的结构。闪存块包括多条字线与位线。字线耦合了多个用于存储信息的晶体管,每个晶体管提供一个存储单元(Cn,Cn-1,…,C1,C0),每个存储单元能存储1比特或多比特数据。每条字线中的多个存储单元提供一个或多个物理页,构成一个物理页的比特存储在耦合到同一条字线的晶体管中。
图4为存储单元的读出电压分布曲线图。存储单元被编程后,依据被编程的值,在存储单元中存储了电荷。读存储单元时,从存储了不同电荷的存储单元会得到不同的读出电压。参看图4,钟形线L(0)是存储了“1”值的存储单元的读出电压分布,钟形线L(1)是存储了“0”值的存储单元的读出电压分布。当使用读出阈值电压Vt1时,在读出阈值电压Vt1左侧的具有“1”值的存储单元被正确读取,同时在读出阈值电压Vt1右侧的具有“0”值的存储单元也被正确读取。
图5是又一例子中的存储单元的读出电压分布曲线图。由于时间、编程次数、温度等原因,存储单元的读出电压分布发生了变化。钟形线L(0)是存储了“1”值的存储单元的读出电压分布,钟形线L(1)是存储了“0”值的存储单元的读出电压分布。当使用读出阈值电压Vt1时,在读出阈值电压Vt1左侧的具有“0”值的存储单元被错误读取为“1”值,而在读出阈值电压Vt1右侧的具有“0”值的存储单元被正确读取。而若使用读出阈值电压Vt2,在读出阈值电压Vt2左侧的具有“1”值的存储单元被正确读取,同时在读出阈值电压Vt2右侧的具有“0”值的存储单元也被正确读取。因而,在重读过程中,若通过读命令参数指示采用读出阈值电压Vt2,则有较高几率读出正确数据,或者读出具有较低错误率的能被ECC部件成功进行错误校正的数据。
图7是根据本申请实施例三的固态存储设备的示意图。在该实施例中,固态存储设备的控制部件包括命令下发队列、命令完成队列、介质接口控制器、ECC部件、重读部件、加扰部件(图中未示出)以及解扰部件。重读部件耦合到ECC部件和介质接口控制器。解扰部件耦合ECC部件与命令完成队列。对ECC部件进行错误校正后的数据进行解扰,并将解扰结果提供给命令完成队列。
响应于ECC部件指示错误校正失败,重读部件向介质接口控制器生成重读命令,并在重读命令中指示不同的读命令参数。在重读部件的控制下,尝试NVM芯片提供的多种或所有重读命令。
根据图7的实施例中,响应于ECC部件多次对读出数据的错误校正失败,重读部件相应地多次发起从步骤(6)到步骤(10)的过程,并在生成的重读命令中,更新读命令的参数(例如对应于读出阈值电压的读命令参数)。若ECC部件对读出数据的错误校正成功,由解扰部件对经错误校正的数据解扰(11),以及处理完成的命令(以及可选地,解扰后的数据)被添加到命令完成队列(11)。通过访问命令完成队列,主机获取命令处理结果(12)。
该实施例中,数据被写入NVM芯片前,由加扰部件(未示出)对数据进行加扰。而在从NVM芯片读出数据并经错误校正后,解扰部件对数据按加扰过程相反的方式进行解扰。
加扰过程,是对数据进行随机化。例如,将指定的随机化种子同要写入的数据按指定的算法进行运算(例如,用随机化种子生成m序列,并同要写入数据做异或),得到经加扰的数据。经过加扰,被写入NVM芯片的数据具有指定的统计特性,例如,在NVM芯片的同一物理页、字线或ECC数据帧中读出的数据中,具有“0”值的比特与具有“1”值的比特数量大体相同,例如,均为50%。作为举例,物理页存储16K字节数据,被加扰后写入物理页的数据中,有大约8K*8比特具有“0”值,而有大约8K*8比特具有“1”值。
解扰过程,是前述随机化过程的逆过程,以得到加扰前的数据。
可选地,作为一个实施方式,对待写入NVM芯片的数据,先加扰,再进行错误校正编码。相应地,对于从NVM芯片读出的数据,先进行错误校正解码,再进行解扰。
可选地,作为另一个实施方式,对待写入NVM芯片的数据,被错误校正编码后,再进行加扰。相应地,对于从NVM芯片读出的数据,先进行解扰,再进行错误校正解码。
依然可选地,加扰与解扰过程,由介质接口控制器实施。
本实施例中,以读命令的标准参数(例如,图5中的Vt1为读出阈值电压)读出数据,响应于ECC部件指示对读出数据的错误校正失败,重读部件对ECC部件错误校正前的数据或者经错误校正的数据进行统计,识别其中具有“0”值的比特数量与具有“1”值的比特数量。
在图7的例子中,在存储单元中被写入了经加扰的数据后,以读命令的标准参数(例如,图5中的Vt1为读出阈值电压)读出数据。读出数据中,若具有“0”值的比特数量与具有“1”值的比特数量的比例明显低于1,从而可确定存储单元中的读出电压分布发生了如图5所示的偏移(存储单元的读出电压分布整体向左移动)。相应地,通过向左移动读出阈值电压(例如,将读出阈值电压从Vt1修改为Vt2),将有机会使得读出数据中,具有“0”值的比特与具有“1”值的比特数量的比例接近1。
类似地,以读命令的标准参数(例如,图5中的Vt1为读出阈值电压)读出数据。读出数据中,若具有“0”值的比特数量与具有“1”值的比特数量的比例明显大于1,则可确定存储单元中的读出电压分布发生了“右移”(存储单元的读出电压分布整体向右移动)。相应地,通过向右移动读出阈值电压(例如,将读出阈值电压从Vt1修改为大于Vt1的值),将有机会使得读出数据中,具有“0”值的比特与具有“1”值的比特数量的比例接近1。
从而,根据图7的实施例,重读部件根据对读出数据中的“0”值和/或“1”的比特数量统计结果,识别相应存储单元的读出电压分布的偏移方向,进而确定更新读出阈值电压的方向,并生成重读命令,并使重读命令的读命令参数指示更新后的读出阈值电压,以期待重读命令对应的读出数据中具有“0”值的比特数量与具有“1”值的比特数量的比例接近1,以利于ECC部件有更高的错误校正成功的几率。
可以理解地,可将图5中,钟型线L(0)对应的读出电压分布的状态定义为存储了数值“0”,而将钟型线L(1)对应的读出电压分布的状态定义为存储了数值“1”,如图6所示。从而,响应于ECC部件识别错误校正失败,重读部件识别读出数据中,具有“0”值的比特与具有“1”值的比特数量的比例明显低于1(例如,低于0.96),而在生成的重读命令中,指示相对于在前的引起错误校正失败的读命令所对应的读出阈值电压,向右移动读出阈值电压。若重读部件识别读出数据中,具有“0”值的比特数量与具有“1”值的比特数量的比例明显大于1(例如,高于1.04),而在生成的重读命令中,指示相对于在前的引起错误校正失败的读命令所对应的读出阈值电压,向左移动读出阈值电压。
进一步地,若对重读命令的读出数据的错误校正再次失败,重读部件可再次依据读出数据中具有“0”值的比特数量与具有“1”值的比特数量的比例生成重读命令,并在重读命令中指示更新的读出阈值电压。
在可选的实施方式中,重读部件依据读出数据中具有“0”值的比特数量与具有“1”值的比特数量的比例,不仅确定重读命令所对应的更新的读出阈值电压相对于在前的读命令的读出阈值电压的改变方向(增大或减小),还确定更新的读出阈值电压相对于在前的读命令的读出阈值电压的改变幅度。例如,读出数据中具有“0”值的比特数量与具有“1”值的比特数量的比例距1越远,更新的读出阈值电压相对于在前的读命令的读出阈值电压的改变幅度越大。可选地,通过查找表或由拟合获得的函数,建立读出数据中具有“0”值的比特数量与具有“1”值的比特数量的比例同更新的读出阈值电压相对于在前的读命令的读出阈值电压的改变幅度(以及方向)的映射关系。映射关系可以在实验室中通过对存储器件的特性实验得出。
依然可选地,重读部件以单位步长为单位改变读出阈值电压,而以读出数据中具有“0”值的比特数量与具有“1”值的比特数量的比例来确定读出阈值电压的调整方向(增大或减小)。
可选地,在读出数据量已知的情况下(例如,物理页大小、ECC数据帧大小),重读部件统计读出数据中,具有“0”值的比特数量和/或具有“1”值的比特数量,依据各自的数量确定读出阈值电压的调整方向和/或调整幅度。
可选地,响应于在前的读命令的读出数据的错误校正失败,重读部件生成重读命令,重读命令访问与在前的读命令相同的地址。依然可选地,由于固态存储设备的NVM芯片大体上处于相似的工作环境(温度、擦除次数等),重读部件将重读命令所使用的读命令参数(例如读阈值电压)应用于访问NVM芯片的其他地址的读命令是有利的。可选地,重读部件指示介质接口控制器更新默认的读命令参数,使得介质接口控制器发出的一般读命令,都使用重读部件的默认读命令参数。进一步地,重读部件生成重读命令后,跟踪ECC部件的错误校正结果,并记录使错误校正成功的读命令参数,指示介质接口控制器使用该读命令参数,用于一般读命令。
在可选的实施方式中,响应于主机向固态存储设备写入数据的命令,待写入NVM芯片的数据,先进行加扰,再被错误校正编码。而从NVM芯片读出的数据,是经过加扰的数据。重读部件识别(错误校正解码前)读出数据中具有“0”值的比特数量与具有“1”值的比特数量的比例,生成重读命令,并在重读命令中指示更新的读出阈值电压。可选地,为具有“0”值的比特数量与具有“1”值的比特数量的比例提供阈值,比如1%或2%。若该比例大于阈值,推测出ECC部件对读出数据错误校正失败的几率较大,则重读部件生成重读命令,并且不将读出数据发送给ECC部件,以省去错误校正过程;若比例不大于阈值,重读部件不生成重读命令,而将读出数据发送给ECC部件进行错误校正,以及仅在错误校正失败后,再对错误校正之后或之前的读出数据统计数据中具有“0”值的比特数量与具有“1”值的比特数量的比例,并生成重读命令。可选地,在读出数据量已知的情况下,重读部件统计读出数据中,具有“0”值的比特数量和/或具有“1”值的比特数量,依据各自的数量确定读出阈值电压的调整方向和/或调整幅度。
依然可选地,重读部件对(错误校正解码前的)读出数据中具有“0”值的比特数量与具有“1”值的比特数量的统计,与ECC部件对读出数据的错误校正操作并发进行,以降低处理延迟。若ECC部件指示错误校正成功,则将正确数据(经过解扰后)作为对读命令的响应提供给主机。若ECC部件指示错误校正失败,由重读部件根据对读出数据中具有“0”值的比特数量与具有“1”值的比特数量的统计,生成重读命令。依然可选地,在一个例子中,重读部件对读出数据中具有“0”值的比特数量与具有“1”值的比特数量的统计延迟远低于ECC部件对读出数据的错误校正延迟,在ECC部件确定错误校正成功与否之前,重读部件已根据统计结果生成重读命令。可选地,重读部件暂存重读命令,以等待ECC部件的错误校正结果,响应于错误校正失败,向NVM芯片发出重读命令。依然可选地,重读部件不等待ECC部件的错误校正结果,而向NVM芯片发出重读命令,以及在ECC部件随后指示错误校正成功时,丢弃重读命令从NVM芯片读出的数据,而在ECC部件随后指示错误校正失败时,使用重读命令从NVM芯片读出的数据。
图8为另一例子的存储单元的读出电压分布曲线图。在图8的例子中,存储单元的类型是TLC(Triple Level Cell,三值存储单元)。TLC存储单元的读出电压依据编程程度被分组为8种不同的状态,每种状态对应3比特组合之一。由“L0”到“L7”来指示存储单元的8种不同的状态,“L0”为存储单元被擦除后的状态,而“L7”为存储单元被充分编程后的状态。参看图8,从“L0”到“L7”,存储单元的读出电压单调变化。
用多个读出阈值电压来区分存储单元的状态。继续参看图8,用读出阈值电压TH1区分状态“L3”与“L4”;用读出阈值电压TH2区分状态“L1”与“L2”;用读出阈值电压TH3区分状态“L5”与“L6”;用读出阈值电压TH4区分状态“L0”与“L1”;用读出阈值电压TH5区分状态“L2”与“L3”;用读出阈值电压TH6区分状态“L4”与“L5”;用读出阈值电压TH7区分状态“L6”与“L7”。作为举例,为每个读出阈值电压提供寄存器来存储读出阈值电压的值,并且通过比较器比较读出阈值电压的值与存储单元的读出电压,来识别存储单元所处的状态。
为存储单元的状态提供编码,每种状态对应一种三比特编码。图9展示了存储单元的状态与存储的比特的对应关系。作为举例,参看图9,状态“L0”代表三比特编码“111”,状态“L1”代表三比特编码“011”。图9中,使任意相邻的两个状态所对应的两个三比特值编码之间仅存在一比特变化,而另外两比特是相同的。
图10展示了存储单元存储的三个比特与物理页的对应关系。为提升物理页访问的并行性,每个存储单元中存储的三个比特分别属于不同的物理页。例如,图10中,存储单元存储了三比特“101”,按从左到右的顺序分别称为MSB(最高有效位,Most SignificantBit)、CSB(中间有效位,Central Significant Bit)和LSB(最低有效位,LeastSignificant Bit)。将由多个存储单元的MSB构成的物理页称为MSB页,将由多个存储单元的CSB构成的物理页称为CSB页,以及将由多个存储单元的LSB构成的物理页称为LSB页。使用对应一个或多个与物理页对应的读出阈值电压来从存储单元读出同物理页对应的比特的值。
TLC存储单元存储的三个比特具有不同的可靠度。返回参看图8,要识别存储单元的LSB,仅需将存储单元的读出电压与读出阈值电压TH1比较,从而在存储的三个比特中,LSB具有较好的可靠度。要识别存储单元的CSB,需要将存储单元的读出电压与读出阈值电压TH2和/或TH3比较。而要识别存储单元的MSB,需要将存储单元的读出电压与读出阈值电压TH4、TH5、TH6和/或TH7进行比较。
从而,改变存储单元的读出阈值电压对从存储单元读出的结果的影响依赖于存储单元的状态。例如,若存储单元处于“L7”状态,通过改变读出阈值电压TH1的值,将几乎不会影响存储单元的读出结果。作为另一个例子,改变读出阈值电压TH6的值,读出数据时,若存储单元未处于“L4”与“L5”状态,那么存储单元的读出结果几乎不会被影响。
若存储单元的读出结果受某读出阈值电压的变化的影响很小,则无法通过改变该读出阈值电压的值来寻找适合该存储单元的该读出阈值电压的最佳值。一般地,向物理页写入的数据被加扰,使得写入物理页的数据是随机数序列,使得存储单元存储的状态在物理空间上随机分布。
图11展示了图8所示的实施例的读出阈值电压与存储单元的状态的对应关系。NAND闪存的字线包括存储单元,这些存储单元提供了构成物理页的多个数据。
图11中(也参看图8),用读出阈值电压TH1区分状态“L3”与“L4”,用读出阈值电压TH2区分状态“L1”与“L2”,用读出阈值电压TH3区分状态“L5”与“L6”,用读出阈值电压TH4区分状态“L0”与“L1”,用读出阈值电压TH5区分状态“L2”与“L3”,用读出阈值电压TH6区分状态“L4”与“L5”,以及用读出阈值电压TH7区分状态“L6”与“L7”。
当固态存储设备的NVM芯片的存储单元类型为TLC时,重读部件(也参看图7)根据读出数据来自哪个类型的物理页(例如,MSB页、CSB页或LBS页)来相应的调整读命令参数(读出阈值电压)。
图12展示了根据图8-10所示的实施例中与物理页类型对应的读出阈值电压的调整方式。参看图12,若读出数据来自LSB页,重读部件(也参看图7)统计读出数据(经过错误校正之前或错误校正之后)中具有“0”值的比特数量与具有“1”值的比特数量(数量的值或者二者的比例)。作为举例,若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显大于1(例如,高于1.04),则生成重读命令,并在生成的重读命令中,指示相对于在前的读命令所对应的读出阈值电压TH1,向左移动读出阈值电压TH1。若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显小于1(例如,小于0.96),则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH1,向右移动读出阈值电压TH1。可以理解地,重读部件可依据错误校正码的码率、NVM芯片的工作状态(擦除次数、温度、数据保持时间等)而选择根据读出数据中具有“0”值的比特与具有“1”值的比特数量来确定需要生成重读命令的条件。例如,对于高码率的错误校正码,可依据读出数据中具有“0”值的比特数量与具有“1”值的比特数量之比大于1.1来作为“明显大于1”的判断标准。依然可以理解地,向“左”或向“右”移动读出阈值电压,指在图8所示的水平轴上,以向左或向右的方向调整读出阈值电压的取值,使得通过重读命令得到的数据中,具有“0”值的比特数量与具有“1”值的比特数量大体上相同。
继续参看图12,若读出数据来自CSB页,重读部件(也参看图7)统计读出数据(经过错误校正之前或错误校正之后)中具有“0”值的比特数量与具有“1”值的比特数量(数量的值或者比例)。作为举例,若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显大于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH2与读出阈值电压TH3,向左移动读出阈值电压TH2和/或向右移动读出阈值电压TH3。若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显小于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH2与TH3,向右移动读出阈值电压TH2和/或向左移动读出阈值电压TH3。根据本申请的实施例,在重读命令中,可以仅改变读出阈值电压TH2与读出阈值电压TH3之一,或者改变读出阈值电压TH2与读出阈值电压TH3二者。
继续参看图12,若读出数据来自MSB页,重读部件(也参看图7)统计读出数据(经过错误校正之前或错误校正之后)中具有“0”值的比特数量与具有“1”值的比特数量(数量的值或者比例)。作为举例,若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显大于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH4、读出阈值电压TH5、读出阈值电压TH6与读出阈值电压TH7,向左移动读出阈值电压TH4、向右移动读出阈值电压TH7、向右移动读出阈值电压TH5和/或向左移动读出阈值电压TH6。若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显小于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH4、读出阈值电压TH5、读出阈值电压TH6与读出阈值电压TH7,向右移动读出阈值电压TH4、向左移动读出阈值电压TH7、向左移动读出阈值电压TH5和/或向右移动读出阈值电压TH6。根据本申请的实施例,在重读命令中,可以仅改变读出阈值电压TH4、读出阈值电压TH5、读出阈值电压TH6与读出阈值电压TH7之一,或者改变读出阈值电压TH4、读出阈值电压TH5、读出阈值电压TH6与读出阈值电压TH7中的两个或更多个。
可选地,重读部件还依据对读出数据中具有“0”值的比特数量和/或具有“1”值的比特数量,确定移动一个或多个读出阈值电压的方向和/或幅度。
图13为又一例子的存储单元的读出电压分布曲线图。在图13的例子中,存储单元的类型是TLC(Triple Level Cell,三值存储单元)。TLC存储单元的读出电压依据编程程度被分组为8种不同的状态,每种状态对应3比特组合之一。由“L0”到“L7”来指示存储单元的8种不同的状态,“L0”为存储单元被擦除后的状态,而“L7”为存储单元被充分编程后的状态。从“L0”到“L7”,存储单元的读出电压单调变化。
用多个读出阈值电压来区分存储单元的状态。继续参看图13,用读出阈值电压TH1区分状态“L3”与“L4”;用读出阈值电压TH2区分状态“L1”与“L2”;用读出阈值电压TH3区分状态“L5”与“L6”;用读出阈值电压TH4区分状态“L0”与“L1”;用读出阈值电压TH5区分状态“L2”与“L3”;用读出阈值电压TH6区分状态“L4”与“L5”;用读出阈值电压TH7区分状态“L6”与“L7”。通过比较读出阈值电压的值与存储单元的读出电压来识别存储单元所处的状态。
为存储单元的每个状态提供编码,编码代表了TLC存储单元所存储的三比特,每种状态对应一种三比特编码。图14展示了存储单元的状态与存储的比特编码的对应关系。作为举例,参看图14,状态“L0”代表三比特编码“111”,状态“L1”代表三比特编码“110”,状态“L2”代表三比特编码“100”。图14中,使任意相邻的两个状态所对应的两个三比特编码之间仅存在一比特变化,而另外两比特是相同的。
图15展示了存储单元存储的三个比特与物理页的对应关系。每个存储单元中存储的三个比特分别属于不同的物理页。例如,图15中,存储单元存储了三比特“101”,按从左到右的顺序分别称为MSB、CSB和LSB。将由多个存储单元的MSB构成的物理页称为MSB页,将由多个存储单元的CSB构成的物理页称为CSB页,以及将由多个存储单元的LSB构成的物理页称为LSB页。使用与某一类型的物理页对应的一个或多个读出阈值电压来从存储单元读出同该类型物理页对应的比特的值。
返回参看图13,要识别存储单元的LSB,需将存储单元的读出电压与读出阈值电压TH4和/或TH6比较。读出电压小于读出阈值电压TH4时,存储单元的LSB为“1”,读出电压在TH4与TH6之间时,存储单元的LSB为“0”,读出电压大于TH6时,存储单元的LSB为“1”。
要识别存储单元的CSB,需要将存储单元的读出电压与读出阈值电压TH1、TH2和/或TH3比较。读出电压小于TH2时,存储单元的CSB为“1”,读出电压在TH2与TH1之间时,存储单元的CSB为“0”,读出电压在TH1与TH3之间时,存储单元的CSB为“1”,读出电压大于TH3时,存储单元的CSB为“0”。
要识别存储单元的MSB,需要将存储单元的读出电压与读出阈值电压TH5和/或TH7进行比较。读出电压小于TH5时,存储单元的MSB为“1”,读出电压在TH5与TH7之间时,存储单元的MSB为“0”,读出电压大于TH7时,存储单元的MSB为“1”。
从而,改变存储单元的读出阈值电压,对从存储单元读出的结果的影响依赖于存储单元的状态。例如,若存储单元处于“L7”状态,通过改变读出阈值电压TH1的值,将几乎不会影响存储单元的读出结果。作为另一个例子,改变读出阈值电压TH6的值,读出数据时,若存储单元未处于“L4”与“L5”状态,那么存储单元的读出结果几乎不会被影响。
若存储单元的读出结果受某读出阈值电压的变化的影响很小,则无法通过改变该读出阈值电压的值来寻找适合该存储单元的该读出阈值电压的最佳值。一般地,向物理页写入的数据被加扰,使得写入物理页的数据是随机数序列,使得存储单元存储的状态在物理空间上随机分布。
图16展示了根据本申请实施例的读出阈值电压与存储单元的状态的对应关系。
图16中(也参看图13),用读出阈值电压TH1区分状态“L3”与“L4”,用读出阈值电压TH2区分状态“L1”与“L2”,用读出阈值电压TH3区分状态“L5”与“L6”,用读出阈值电压TH4区分状态“L0”与“L1”,用读出阈值电压TH5区分状态“L2”与“L3”,用读出阈值电压TH6区分状态“L4”与“L5”,以及用读出阈值电压TH7区分状态“L6”与“L7”。
当固态存储设备的NVM芯片的存储单元类型为TLC时,重读部件(也参看图7)根据读出数据来自哪个类型的物理页(例如,MSB页、CSB页或LBS页)来相应的调整读命令参数(读出阈值电压)。
图17展示了图13-16所示的实施例与物理页类型对应的读出阈值电压的调节方式。参看图17,若读出数据来自LSB页,重读部件(也参看图7)统计读出数据(经过错误校正之前或错误校正之后)中具有“0”值的比特数量与具有“1”值的比特数量(数量的值或者比例)。作为举例,若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显大于1(例如,高于1.04),则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH4与读出阈值电压TH6,向左移动读出阈值电压TH4(即减小读出阈值电压TH4的值),和/或向右移动读出阈值电压TH6(即增大读出阈值电压TH6的值)。若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显小于1(例如,小于0.96),则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH4与读出阈值电压TH6,向右移动读出阈值电压TH4,和/或向左移动读出阈值电压TH6。可以理解地,重读部件可依据错误校正码的码率、NVM芯片的工作状态(擦除次数、温度、数据保持时间等)而根据读出数据中具有“0”值的比特与具有“1”值的比特数量来确定需要生成重读命令的条件。例如,对于高码率的错误校正码,可依据读出数据中具有“0”值的比特数量与具有“1”值的比特数量之比大于1.1来作为“明显大于1”的判断标准。依然可以理解地,向“左”或向“右”移动读出阈值电压,指在图13所示的水平轴上,以向左或向右的方向调整读出阈值电压的取值。调整读出阈值电压的目标,是使得通过重读命令得到的数据中,具有“0”值的比特数量与具有“1”值的比特数量大体上相同。根据本申请的实施例,在重读命令中,可以仅改变读出阈值电压TH4与读出阈值电压TH6之一,或者改变读出阈值电压TH4与读出阈值电压TH6二者。
继续参看图17,若读出数据来自CSB页,重读部件(也参看图7)统计读出数据(经过错误校正之前或错误校正之后)中具有“0”值的比特数量与具有“1”值的比特数量(数量的值或者比例)。作为举例,若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显大于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH1、读出阈值电压TH2与读出阈值电压TH3,向左移动读出阈值电压TH2、向左移动读出阈值电压TH3和/或向右移动读出阈值电压TH1。若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显小于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH1、读出阈值电压TH2与读出阈值电压TH3,向右移动读出阈值电压TH2、向右移动读出阈值电压TH3和/或向左移动读出阈值电压TH1。根据本申请的实施例,在重读命令中,可以仅改变读出阈值电压TH1、读出阈值电压TH2与读出阈值电压TH3之一,或者改变读出阈值电压TH1、读出阈值电压TH2与读出阈值电压TH3中的两个或更多个。
继续参看图17,若读出数据来自MSB页,重读部件(也参看图7)统计读出数据(经过错误校正之前或错误校正之后)中具有“0”值的比特数量与具有“1”值的比特数量(数量的值或者比例)。作为举例,若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显大于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH5与读出阈值电压TH7,向左移动读出阈值电压TH5和/或向右移动读出阈值电压TH7。若读出数据中具有“1”值的比特数量与具有“0”值的比特数量之比明显小于1,则生成重读命令,并在生成的重读命令中指示相对于在前的读命令所对应的读出阈值电压TH5与读出阈值电压TH7,向右移动读出阈值电压TH5和/或向左移动读出阈值电压TH7。根据本申请的实施例,在重读命令中,可以仅改变读出阈值电压TH5与读出阈值电压TH7之一,或者改变读出阈值电压TH5与读出阈值电压TH7二者。
可选地,重读部件还依据对读出数据中具有“0”值的比特数量和/或具有“1”值的比特数量,确定移动一个或多个读出阈值电压的方向和/或幅度。
实施例四
图18是根据本申请实施例四的固态存储设备的示意图。根据图18的实施例的固态存储设备的控制部件,包括命令下发队列、命令完成队列、介质接口控制器、ECC部件以及AI(人工智能,Artificial Intelligence)部件。AI部件耦合到ECC部件。响应于ECC部件指示错误校正成功,将当前读命令被应用的场景与当前读命令的读命令参数提供给AI部件,用于训练AI部件。例如,在实现了深度学习算法的AI部件中,训练AI部件的神经网络。可选地,AI部件还耦合到控制部件外部的DRAM,以缓存AI部件的神经网络的参数。AI部件可以是IP核、CPU核或耦合到控制器的ASIC芯片。
该实施例中,读命令被应用的场景是神经网络的输入,而读命令参数(例如,读出阈值电压、读出数据的错误比特数和/或读命令参数的序列)是同神经网络的输入对应的预期输出,用于对学习过程的监督。通过训练,神经网络对读命令被应用的多种场景进行分类,场景的类别与能在该场景下读出可被ECC部件成功错误校正的数据的读命令参数对应,与能在该场景下读出可被ECC部件以较高几率成功错误校正的数据的读命令参数对应,与能在该场景下读出错误比特数较低或低于阈值的数据的读命令参数对应,或者与读命令参数序列对应,其中使用根据读命令参数序列产生的读命令序列从NVM芯片读出的数据组合,能够以较高几率以及较少的重读次数被ECC部件成功错误校正,或者通过软译码可被ECC部件成功错误校正或以较高几率成功错误校正。
读命令被应用的场景的属性包括读命令访问的LUN(由LUN号识别)、物理块(由物理块地址识别)、物理页类型(LSB/CSB/MSB)、物理块上的数据被写入至今的时间间隔、物理块的被擦除次数、物理块的错误率、物理块被读取次数和/或物理块是否被完整写入(以及当前被写入的位置(由物理页地址识别))。
以多种属性信息描述读命令应用的场景,并提供给AI部件。作为举例,物理块上的数据被写入至今的时间间隔包括或不包括固态存储设备处于掉电状态的时间。
可选地,读命令被应用的场景的属性信息还包括读命令访问的物理页(由物理页地址指示),上次对该物理页读出的数据错误校正成功的读命令参数(例如,读出阈值电压、读出数据的错误比特数、读命令参数的序列、软译码错误校正成功的读命令参数的序列和/或之前读出数据错误校正成功率高的一个或多个读命令参数)。
多种属性信息之一或其多种组合可被用来训练AI部件的神经网络。
在根据本申请的一种实施方式中,ECC部件对读出数据的错误校正会失败,并且作为响应,通过重读等手段重新读取数据。而响应于通过重读等手段获取了可能成功地错误校正的数据,将对应的读命令参数与读命令被应用的场景用于训练AI部件的神经网络。
在根据本申请的进一步实施方式中,响应于ECC部件对读出数据的错误校正失败,将对应的读命令参数与读命令被应用的场景也用于训练AI部件的神经网络。
在根据本申请的又一种实施方式中,控制部件的CPU核(图中未示出)识别ECC部件对读出数据的错误校正结果,并将对应的读命令参数与读命令被应用的场景提供给AI部件,以训练AI部件的神经网络。CPU核通过执行软件,控制AI部件的训练、推断、开启和/或关闭。
依然可选地,响应于主机的命令或指示,为AI部件设置神经网络的参数,所设置的神经网络的参数可以存储在固态存储设备的NVM芯片中或由主机提供。可选地,响应于主机的命令或指示,从AI部件获取经学习得到的神经网络参数,并提供给主机或存储在固态存储设备的NVM芯片中,以供其他固态存储设备使用。
继续参看图18,以固态存储设备读命令处理流程为例,主机向固态存储设备的命令下发队列发出读访问命令(1)。主机发出的读访问命令经过处理,并被转发给介质接口控制器(2)。介质接口控制器根据主机发出的读访问命令向NVM芯片发出命令(3)。介质接口控制器还从NVM芯片获取读命令的处理结果(4)。对于读命令,从NVM芯片读出的数据被提供给ECC部件进行错误校正(5)。若ECC部件对数据的错误校正成功,处理完成的读命令被添加到命令完成队列(6),并且当前读命令被应用的场景与读命令参数还被转发给AI部件(6),用于训练AI部件的神经网络。训练AI部件所得的结果被记录在控制部件的存储器、动态随机存取存储器(DRAM)或者NVM芯片中。
可选地,在AI部件中提供多个神经网络,每个神经网络服务于固态存储设备LUN或物理块中的一个或多个,从而降低提供给AI部件的每个神经网络的参数的数量,进而降低对神经网络的规模和/或训练/推断时间的需求。例如,固态存储设备包括32个LUN,而AI部件提供同32个LUN对应的4个或32个神经网络,每个神经网络负责处理指定的8个或1个LUN的读命令。AI部件依据读命令被应用的场景中指示的LUN,将读命令参数与读命令被应用的场景提供给对应的神经网络以训练该神经网络。
图19是根据图18的实施例的固态存储设备处理读命令的示意图。
在图19的实施例中,主机向固态存储设备的命令下发队列发出读访问命令(1)。主机发出的读访问命令经过处理,并被转发给介质接口控制器(2)。介质接口控制器根据主机发出的读访问命令向NVM芯片发出读命令(3)。介质接口控制器还从NVM芯片获取命令处理结果(4)。对于读命令,从NVM芯片读出的数据被提供给ECC部件进行错误校正(5)。若ECC部件对数据的错误校正失败,读命令被应用的场景(可选地,还包括读命令参数(例如,读出阈值电压、读出数据的错误比特数和/或读命令参数的序列))被转发给AI部件(6)。AI部件根据接收的读命令被应用的场景推断最佳的读命令参数(例如,读出阈值电压或具有不同读出阈值电压的读命令序列),生成重读命令,将重读命令发送给介质接口控制器(7)。介质接口控制器根据重读命令向NVM芯片发出重读命令(8)。介质接口控制器还从NVM芯片获取重读命令的处理结果(9)。重读命令读出的数据被提供给ECC部件(10)。若ECC部件对读出数据的错误校正失败,由AI部件再次发起从步骤(6)到步骤(10)的过程。若ECC部件对读出数据的错误校正成功,处理完成的命令被添加到命令完成队列(11)。通过访问命令完成队列,主机获取命令处理结果(12)。
在根据本申请的又一种实施方式中,控制部件的CPU核(未示出)识别ECC部件对读出数据的错误校正结果,并将对应的读命令被应用的场景(可选地,还包括读命令参数)提供给AI部件,AI部件生成重读命令,并在控制部件的CPU核(未示出)的控制下将重读命令发送给介质接口控制器。
可选地,控制部件还包括重读部件(参看图2与图7)。重读部件与AI部件并行工作。作为举例,响应于ECC部件对读出数据的错误校正首次失败,采用AI部件生成重读命令,以及响应于ECC部件对读出数据的错误校正的后续失败,采用重读部件生成的重读命令。作为又一个例子,响应于ECC部件对读出数据的错误校正首次失败,采用重读部件生成重读命令,以及响应于ECC部件对重读部件建议的重读命令读出数据的错误校正失败,再采用AI部件生成的重读命令。重读命令中指示重读命令的读命令参数,产生读命令参数的方法请参照关于图8-17的描述。
可选地,AI部件的神经网络根据接收的读命令被应用的场景推断同当前场景最匹配的场景类别,并根据最匹配的场景类别选择读命令参数和/或读命令序列。
在一个例子中,AI部件的神经网络根据读命令被应用的场景获得同当前场景最匹配的场景类别,并根据该场景类别生成重读命令或重读命令序列,并通过介质接口控制器将重读命令或重读命令序列发送给非易失性存储器。在又一个例子中,AI部件的神经网络根据读命令被应用的场景获得同当前场景最匹配的场景类别,并根据读命令被应用的场景以及对应于错误校正失败的当前读命令的读命令参数生成重读命令或重读命令序列,并通过介质接口控制器将重读命令或重读命令序列发送给非易失性存储器。
依然可选地,若AI部件包括多个神经网络,每个神经网络服务于固态存储设备逻辑单元号(LUN)或物理块中的一个或多个。响应于ECC部件对读出数据的错误校正失败,依据读命令被应用的场景中指示的LUN和/或物理块,将当前读命令参数和/或读命令被应用的场景提供给对应的神经网络,以推断出适合与当前读命令被应用场景的读命令参数和/或读命令序列。
根据图18与图19的实施例中,在ECC部件错误校正失败的情况下,由AI部件控制发出一次或多次重读过程,提升了重读命令读出数据的错误校正成功率,减少了固态存储设备与主机的交互,降低了读命令处理延迟。
本发明实施例的阈值设置方法可应用于基于NVM芯片的固态存储设备,包括但不限于固态硬盘、U盘、SD卡,还可以应用于手机、平板电脑等便携式电子设备,以及其他多种使用NVM芯片(诸如NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。)的需要存储信息的电子设备。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种读命令处理方法,其特征在于,包括如下步骤:
接收主机发出的读访问命令;
根据所述读访问命令向非易失性存储器发出读命令;
接收所述非易失性存储器的读出数据;
对所述读出数据进行错误校正。
2.根据权利要求1所述的读命令处理方法,其特征在于,将对所述读出数据的错误校正结果发送给主机;
响应于错误校正失败,接收主机发出的重读命令。
3.根据权利要求1所述的读命令处理方法,其特征在于,响应于对所述读出数据的错误校正失败,生成重读命令;
向所述非易失性存储器发送所述重读命令;
获取所述重读命令的读出数据;
若对所述重读命令的读出数据的错误校正成功,则将错误校正结果发送给主机。
4.根据权利要求3所述的读命令处理方法,其特征在于,统计读命令的读出数据中具有第一值的比特数量与具有第二值的比特数量。
5.根据权利要求4所述的读命令处理方法,其特征在于,根据所述具有第一值的比特数量与所述具有第二值的比特数量之间的关系,确定重读命令的读命令参数。
6.根据权利要求1-5中任一项所述的读命令处理方法,其特征在于,所述非易失性存储器的存储单元为三值存储单元,经编程的存储单元具有多种状态之一,每种状态对应三比特编码之一,每个比特具有第一值或第二值;
其中,所述读出阈值电压的调整取决于所述存储单元的状态。
7.根据权利要求6所述的读命令处理方法,其特征在于,依据从第一类型的物理页读出的数据中具有第一值的比特数量和/或具有第二值的比特数量,确定所述重读命令的读命令参数。
8.根据权利要求6或7所述的读命令处理方法,其特征在于,所述三值存储单元中,三个比特分别属于三种不同的物理页;使用对应一个或多个与物理页对应的读出阈值电压来从存储单元读出同物理页对应的比特的值;
根据从第一类型的物理页读出的数据中具有第一值的比特数量和具有第二值的比特数量之间的第四比例来确定所述重读命令的读出阈值电压。
9.一种固态存储设备,包括控制部件与非易失性存储器芯片,所述控制部件用于执行根据权利要求1-8所述的读命令处理方法。
10.一种控制部件,其特征在于,包括命令下发队列、介质接口控制器、错误校正部件、重读部件和命令完成队列;
所述命令下发队列与所述介质接口控制器耦合,所述命令下发队列接收主机的读访问命令,并将所述读访问命令转发给介质接口控制器;
所述介质接口控制器与所述非易失性存储器芯片耦合,所述介质接口控制器向非易失性存储器发出读命令,并接收所述非易失性存储器的读出数据;
所述错误校正部件与所述介质接口控制器耦合,所述错误校正部件对所述读出数据进行错误校正;
所述命令完成队列与所述错误校正部件耦合,所述命令完成队列接收所述错误校正部件发送的错误校正后的数据;
所述重读部件分别与所述错误校正部件和所述介质接口控制器耦合,所述重读部件根据错误校正的数据生成重读命令,以及所述重读部件通过所述介质接口控制器向所述非易失性存储器发送所述重读命令。
CN201710957709.4A 2017-09-28 2017-10-16 智能重读命令生成 Active CN109582490B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2017108960741 2017-09-28
CN201710896074 2017-09-28

Publications (2)

Publication Number Publication Date
CN109582490A true CN109582490A (zh) 2019-04-05
CN109582490B CN109582490B (zh) 2023-12-15

Family

ID=65919563

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710957709.4A Active CN109582490B (zh) 2017-09-28 2017-10-16 智能重读命令生成

Country Status (1)

Country Link
CN (1) CN109582490B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110534152A (zh) * 2019-08-08 2019-12-03 杭州电子科技大学 一种预防闪存数据读取错误的方法
CN111400099A (zh) * 2020-03-16 2020-07-10 深圳佰维存储科技股份有限公司 闪存的数据重读方法、装置、设备及计算机可读存储介质
CN112133353A (zh) * 2019-06-24 2020-12-25 爱思开海力士有限公司 Nand闪速存储器中针对读取阈值基于深度学习的回归框架
CN112596681A (zh) * 2020-12-25 2021-04-02 深圳大普微电子科技有限公司 一种重读命令处理方法、闪存控制器及固态硬盘
CN112631515A (zh) * 2020-12-17 2021-04-09 珠海妙存科技有限公司 自适应的闪存数据重读方法、装置及介质
CN113076218A (zh) * 2020-07-03 2021-07-06 北京忆芯科技有限公司 Nvm芯片读数据错误快速处理方法及其控制器
CN114995767A (zh) * 2022-06-22 2022-09-02 北京得瑞领新科技有限公司 固态硬盘的数据管理方法、存储设备及存储介质
CN115509462A (zh) * 2022-11-15 2022-12-23 北京得瑞领新科技有限公司 重读方法及装置、介质、固态硬盘

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130044547A1 (en) * 2011-07-14 2013-02-21 Technion Research And Development Foundation Ltd. Device, method and computer readable program for accessing memory cells using shortened read attempts
CN103456367A (zh) * 2012-05-30 2013-12-18 飞思卡尔半导体公司 非易失性存储器阵列中检测读取失败的方法和存储器系统
US20150135033A1 (en) * 2013-11-08 2015-05-14 Sandisk Enterprise Ip Llc Method and system for improving error correction in data storage
JP2015133161A (ja) * 2014-01-14 2015-07-23 株式会社東芝 半導体記憶装置
US20150262677A1 (en) * 2014-03-13 2015-09-17 Phison Electronics Corp. Data storing method, memory control circuit unit and memory storage apparatus
CN104952486A (zh) * 2014-03-25 2015-09-30 群联电子股份有限公司 数据储存方法、存储器控制电路单元以及存储器储存装置
US20160077913A1 (en) * 2014-09-11 2016-03-17 Kabushiki Kaisha Toshiba Method of controlling nonvolatile memory
CN105900069A (zh) * 2014-01-07 2016-08-24 苹果公司 对被存储在闪存存储器中的数据的推测性预取
CN106448737A (zh) * 2016-09-30 2017-02-22 北京忆芯科技有限公司 读取闪存数据的方法、装置以及固态驱动器

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130044547A1 (en) * 2011-07-14 2013-02-21 Technion Research And Development Foundation Ltd. Device, method and computer readable program for accessing memory cells using shortened read attempts
CN103456367A (zh) * 2012-05-30 2013-12-18 飞思卡尔半导体公司 非易失性存储器阵列中检测读取失败的方法和存储器系统
US20150135033A1 (en) * 2013-11-08 2015-05-14 Sandisk Enterprise Ip Llc Method and system for improving error correction in data storage
CN105900069A (zh) * 2014-01-07 2016-08-24 苹果公司 对被存储在闪存存储器中的数据的推测性预取
JP2015133161A (ja) * 2014-01-14 2015-07-23 株式会社東芝 半導体記憶装置
US20150262677A1 (en) * 2014-03-13 2015-09-17 Phison Electronics Corp. Data storing method, memory control circuit unit and memory storage apparatus
CN104952486A (zh) * 2014-03-25 2015-09-30 群联电子股份有限公司 数据储存方法、存储器控制电路单元以及存储器储存装置
US20160077913A1 (en) * 2014-09-11 2016-03-17 Kabushiki Kaisha Toshiba Method of controlling nonvolatile memory
CN106448737A (zh) * 2016-09-30 2017-02-22 北京忆芯科技有限公司 读取闪存数据的方法、装置以及固态驱动器

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112133353A (zh) * 2019-06-24 2020-12-25 爱思开海力士有限公司 Nand闪速存储器中针对读取阈值基于深度学习的回归框架
CN110534152A (zh) * 2019-08-08 2019-12-03 杭州电子科技大学 一种预防闪存数据读取错误的方法
CN111400099A (zh) * 2020-03-16 2020-07-10 深圳佰维存储科技股份有限公司 闪存的数据重读方法、装置、设备及计算机可读存储介质
CN111400099B (zh) * 2020-03-16 2024-04-02 深圳佰维存储科技股份有限公司 闪存的数据重读方法、装置、设备及计算机可读存储介质
CN113076218A (zh) * 2020-07-03 2021-07-06 北京忆芯科技有限公司 Nvm芯片读数据错误快速处理方法及其控制器
CN112631515B (zh) * 2020-12-17 2023-11-14 珠海妙存科技有限公司 自适应的闪存数据重读方法、装置及介质
CN112631515A (zh) * 2020-12-17 2021-04-09 珠海妙存科技有限公司 自适应的闪存数据重读方法、装置及介质
WO2022134741A1 (zh) * 2020-12-25 2022-06-30 深圳大普微电子科技有限公司 重读命令处理方法、闪存控制器及固态硬盘
CN112596681B (zh) * 2020-12-25 2023-12-22 深圳大普微电子科技有限公司 一种重读命令处理方法、闪存控制器及固态硬盘
CN112596681A (zh) * 2020-12-25 2021-04-02 深圳大普微电子科技有限公司 一种重读命令处理方法、闪存控制器及固态硬盘
CN114995767A (zh) * 2022-06-22 2022-09-02 北京得瑞领新科技有限公司 固态硬盘的数据管理方法、存储设备及存储介质
CN115509462A (zh) * 2022-11-15 2022-12-23 北京得瑞领新科技有限公司 重读方法及装置、介质、固态硬盘
CN115509462B (zh) * 2022-11-15 2023-02-24 北京得瑞领新科技有限公司 重读方法及装置、介质、固态硬盘

Also Published As

Publication number Publication date
CN109582490B (zh) 2023-12-15

Similar Documents

Publication Publication Date Title
CN109582490A (zh) 智能重读命令生成
KR100875539B1 (ko) 프로그램 방식을 선택할 수 있는 메모리 시스템
KR100878479B1 (ko) 데이터 정보에 따라 프로그램 방식을 결정하는 메모리시스템
KR102174293B1 (ko) 확률론적 데이터 구조에 기초한 메모리 내의 사전적인 교정 조치
US11061608B2 (en) Memory controller and memory system having the same
US9292428B2 (en) Memory system
KR100823170B1 (ko) 배드 블록을 싱글 레벨 셀 모드로 사용하는 메모리 시스템및 메모리 카드
CN109582491A (zh) 基于机器学习的读出数据错误处理
CN106448737A (zh) 读取闪存数据的方法、装置以及固态驱动器
KR20200085519A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN110349607A (zh) 存储器装置及其操作方法和包括存储器装置的存储器系统
US9213636B2 (en) Data accessing method for flash memory storage device having data perturbation module, and storage system and controller using the same
KR20080074585A (ko) 메모리 셀에 멀티 비트 데이터를 저장하는 플래시 메모리를포함한 메모리 시스템
CN106843771A (zh) 存储器重读方法、存储器控制电路单元及存储器存储装置
CN104700896B (zh) 存储器系统和包括所述存储器系统的用户装置
US20210004323A1 (en) Controller, memory system having the same, and operating method thereof
US11482263B2 (en) Non-volatile memory device, controller for controlling the same, storage device including the same, and reading method thereof
CN109065092A (zh) Nvm芯片的读阈值设置方法及其装置
US11704048B2 (en) Electronic device
CN109542394A (zh) 控制器、半导体存储器装置及具有它们的存储器系统
KR20200132171A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 장치
CN110120234A (zh) 固态存储设备及其最优读出阈值电压的搜索方法
US20240070062A1 (en) Nonvolatile memory, memory system, and control method of nonvolatile memory
KR20210079552A (ko) 메모리 시스템 및 메모리 컨트롤러
CN106959821A (zh) 数据存储装置及其操作方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TG01 Patent term adjustment
TG01 Patent term adjustment