CN113076218B - Nvm芯片读数据错误快速处理方法及其控制器 - Google Patents

Nvm芯片读数据错误快速处理方法及其控制器 Download PDF

Info

Publication number
CN113076218B
CN113076218B CN202010631963.7A CN202010631963A CN113076218B CN 113076218 B CN113076218 B CN 113076218B CN 202010631963 A CN202010631963 A CN 202010631963A CN 113076218 B CN113076218 B CN 113076218B
Authority
CN
China
Prior art keywords
read
command
redo
nvm chip
commands
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010631963.7A
Other languages
English (en)
Other versions
CN113076218A (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 Starblaze Technology Co ltd
Original Assignee
Beijing Starblaze 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 Starblaze Technology Co ltd filed Critical Beijing Starblaze Technology Co ltd
Priority to CN202010631963.7A priority Critical patent/CN113076218B/zh
Publication of CN113076218A publication Critical patent/CN113076218A/zh
Application granted granted Critical
Publication of CN113076218B publication Critical patent/CN113076218B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

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

提供了NVM芯片读数据错误快速处理方法及其控制器。所提供的访问NVM芯片的方法,包括:响应于处理IO读命令,根据要读取的NVM芯片的地址访问读阈值表,以获得读阈值;生成使用所获得的读阈值对应的读阈值电压的读重做命令来访问NVM芯片;以及在处理IO命令的间隙更新所述读阈值表。

Description

NVM芯片读数据错误快速处理方法及其控制器
技术领域
本申请涉及存储技术领域,尤其涉及降低从NVM芯片读出数据出现不可校正错误的方法以及对从NVM芯片读出数据出现不可校正错误的快速处理方法与控制器。
背景技术
图1展示了现有技术中的存储设备的框图。存储设备100同主机相耦合,用于为主机提供存储能力。主机同存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备100。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口110、控制部件120、一个或多个NVM芯片130以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)140。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口110可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件120用于控制在接口110、NVM芯片130以及DRAM 140之间的数据传输,还用于存储管理、主机逻辑地址到NVM芯片的物理地址映射、擦除均衡、坏块管理等。控制部件120可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件120可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件120也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件120的硬件来处理IO(Input/Output)命令。控制部件120还可以耦合到DRAM 140,并可访问DRAM 140的数据。在DRAM存储FTL表和/或缓存的IO命令的数据。
控制部件120包括闪存接口控制器(或称为介质接口、介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130的接口协议的方式向NVM芯片130发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.as hx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元(LUN)、平面(Plane)的含义,其为现有技术的一部分。
NVM存储介质上通常按页来存储和读取数据。而按块来擦除数据。NVM存储介质上的块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。可选地,访问存储设备的主机提供FTL。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。通常FTL表的数据项记录了存储设备中以数据页为单位的地址映射关系。
图2展示了存储设备的控制部件的详细的框图。
主机以遵循存储协议的IO命令访问存储设备。控制部件根据来自主机的IO命令,生成一个或多个存储命令并提供给介质接口控制器。介质接口控制器根据存储命令生遵循NVM芯片的接口协议的存储介质访问命令(例如,编程命令、读命令、擦除命令)。控制部件还跟踪从一个IO命令生成的所有存储命令都被执行完成,并向主机指示IO命令的处理结果。
参看图2,控制部件包括例如主机接口、主机命令处理单元、存储命令处理单元、介质接口控制器与存储介质管理单元。主机接口获取主机提供的IO命令,并生成存储命令提供给存储命令处理单元。存储命令例如访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。
存储介质管理单元为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元包括FTL表。对于读命令,存储介质管理单元输出存储命令所访问的逻辑地址对应的物理地址,对于写命令,存储介质管理单元为其分配可用的物理地址,并记录其访问的逻辑地址与分配的物理地址的映射关系。存储介质管理单元还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元根据存储介质管理单元提供的物理地址,操作介质接口控制器向NVM芯片发出存储介质访问命令。为了清楚的目的,将存储命令处理单元发送给介质接口控制器的命令称为介质接口命令,而将介质接口控制器发送给NVM芯片的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。
NAND闪存读写速度快,写入数据前必须先擦除数据,且擦除是以块(Block)为单位进行的。然而NAND闪存的寿命是有限的,一般来说,NAND闪存的寿命以擦写循环次数(Program and Erase cycle,PE cycle)来定义的。常见的3D TLC NAND闪存的寿命一般在3000次左右,这意味着NAND闪存的块在经历了大约3000次擦写后,其寿命将耗尽,该块将不能再被使用。随着寿命将近,NAND闪存块存储数据的可靠性逐渐降低。包括NAND闪存的存储设备的控制部件记录其NAND闪存的各块是否可用。
NAND闪存通过在存储单元中保持电荷量来存储信息。存储单元中的电荷量决定了存储单元的读出电压。在读取闪存数据时,比较存储单元的读出电压与阈值电压来识别存储单元所存储的信息。但是由于存储单元的电荷量受存储单元的质量、寿命、时间等多种因素的影响,以及从多个存储单元到敏感放大器的信号传输路径的非均一性,导致存储单元的读出电压发生变化,进而导致从存储单元读取的数据存在一些偏差,无法正确体现原始向存储单元写入的信息。阈值电压可包括用于读操作的读阈值与用于写操作的写阈值。
现有技术中采用一些手段来预防或应对因存储单元的电荷量等因素的变化而导致读取的数据无法正确体现写入的数据的问题,例如,在美国专利US9070454B1中,根据存储单元的擦写次数、保持时间等因素计算阈值电压(从存储单元中读取数据或向存储单元中写入数据时使用的阈值电压或判决电压),并使用计算出的阈值电压向存储单元写入数据。
在闪存芯片中,通过为存储介质访问(读)命令指示不同的参数,来选择闪存芯片处理读命令时所使用的阈值电压。通过具有不同阈值电压的存储介质访问(读)命令(也称为ReadRetry,读重做命令),从存储单元读出的数据会有不同的结果。有些结果具有较低的比特错误率(Bit Error Ratio,错误比特与传输的总比特数的百分比),而有些结果具有较高的比特错误率。结合使用ECC(Error Correction Code,错误校正码)技术,具有较低的比特错误率的读取结果被ECC技术纠正的几率较高。从而通过尝试不同参数,来应对读操作中遇到的错误。参数可以合并在读重做命令中提供给闪存芯片。或者,在闪存芯片中设置用于读操作的参数,而在闪存芯片处理存储介质访问(读)命令时,使用所设置的参数。
图3展示了现有技术的NAND闪存存储介质的结构。闪存块包括多条字线与位线。字线耦合了多个用于存储信息的晶体管,每个晶体管提供一个存储单元(Cn,Cn-1,…,C1,C0)。每个存储单元能存储1比特或多比特数据。每条字线中的多个存储单元提供一个或多个物理页。构成一个物理页的比特存储在耦合到同一条字线的晶体管中。
图4为存储单元的读出电压分布曲线图。存储单元被编程后,依据被编程的值,在存储单元中存储了电荷。读存储单元时,从存储了不同电荷的存储单元会得到不同的读出电压。参看图4,钟形线L0是具有“1”状态的存储单元的读出电压分布,钟形线L1是具有“0”状态的存储单元的读出电压分布。当使用阈值电压Vt2时,在阈值电压Vt2右侧的具有“1”状态的存储单元被误读并成为错误比特。类似地,当使用阈值电压Vt1时,在阈值电压Vt1左侧的具有“0”状态的存储单元被误读并成为错误比特。阈值电压Vt3是又一可选的用于从存储单元读出数据的阈值电压。
通过比较多个阈值电压对应的错误比特的数量,选择错误比特的数量最小的阈值电压作为最佳阈值电压。或者,从读出电压分布中,确定最佳阈值电压(例如,选择Vt,使得钟形线L0在Vt右侧部分的面积与钟形线L1在Vt左侧部分的面积之和最小)。
图5A为又一例子的存储单元的读出电压分布曲线图。在图5A的例子中,存储单元的类型是TLC(Triple Level Cell,三值存储单元)。TLC存储单元的读出电压被分组为代表8种不同的状态,每种状态对应3比特组合之一。由“L0”到“L7”来指示存储单元的8种不同的状态,“L0”为存储单元被擦除后的状态,而“L7”为存储单元被充分编程后的状态。参看图5A,从“L0”到“L7”,存储单元的读出电压单调变化。
用多个阈值来区分存储单元的状态。继续参看图5A,用阈值TH1区分状态“L3”与“L4”;用阈值TH2区分状态“L1”与“L2”;用阈值TH3区分状态“L5”与“L6”;用阈值TH4区分状态“L0”与“L1”;用阈值TH5区分状态“L2”与“L3”;用阈值TH6区分状态“L4”与“L5”;用阈值TH7区分状态“L6”与“L7”。作为举例,为每个阈值提供寄存器来存储阈值的值。以及通过比较器比较阈值的值与存储单元的读出电压,来识别存储单元所处的状态。
为存储单元的每个状态提供编码,编码代表了TLC存储单元所存储的三比特。图5B展示了存储单元的状态与存储的比特的对应关系。作为举例,参看图5B,状态“L0”代表三比特“111”,状态“L1”代表三比特“011”。图5B中,使任意相邻的两个状态,所对应的两个三比特值,仅存在一比特变化,而另外两比特相同。
图5C展示了存储单元存储的3个比特与物理页的对应关系。为提升物理页访问的并行性,每个存储单元中存储的3个比特分别属于不同的物理页。例如,图5C中,存储单元存储了3比特“101”,按从左到右的顺序分别称为MSB(最高有效位,Most Significant Bit)、CSB(中间有效位,Central Significant Bit)和LSB(最低有效位,Least SignificantBit)。将由多个存储单元的MSB构成的物理页称为MSB页,将由多个存储单元的CSB构成的物理页称为CSB页,以及将由多个存储单元的LSB构成的物理页称为LSB页。
NAND闪存的物理块包括若干物理页(例如几百到两千页)。物理块还包括多个字线(WordLine)(例如,256个)。在一些3DNAND闪存中,字线直接关联于垂直于晶圆平面的布置了存储单元的层,例如每层包括1个或4个字线。字线包括多个存储单元。属于同一字线的存储单元构成物理页。在例如TLC存储单元中,同一字线的存储单元的LSB构成LSB页,同一字线的存储单元的CSB构成CSB页,同一字线的存储单元的MSB构成MSB页。对NAND闪存的操作通常是擦除一个物理块,依次向物理块的各物理页进行编程操作以写入数据。
通常,字线的LSB页、CSB页与MSB页各自具有适用的阈值电压。而同一物理块中,其多个字线的相同类型的物理页(LSB页、CSB页或MSB页)可适用相同的阈值电压。在一些情况下,NAND闪存靠近晶圆边缘部分的物理页的适用的阈值电压同其他位置的物理页的适用的阈值电压有不同,而位于晶圆的非边缘区域和/或非表面的各层的字线的相同类型的物理页(LSB页、CSB页或MSB页)可适用相同的阈值电压。
可以理解地,SLC类型的存储单元,每个存储单元记录1比特数据。MLC类型的存储单元,每个存储单元记录2比特数据。
在NAND闪存生命周期的初期,存储介质的可靠性好,通常的存储介质访问(读)命令的阈值电压可以很好的区分存储介质当前保存的数据值。但是,随着NAND闪存被使用,特别是经历了多次PE周期(编程-擦除周期),存储介质可靠性变差。此时,通常的存储介质访问(读)命令的阈值电压已经无法很好的区分存储介质当前的数据值。为此,用户可以根据当前NAND闪存的状态调整阈值电压。
一般情况下,NAND闪存供应商会提供若干(一般几十个)用于读重做命令的阈值电压供控制部件选择,控制部件也可以根据对当前NAND闪存的状态的理解,自行决定所使用的阈值电压。
通常存储工作过程中,控制部件并不知道NAND闪存的当前状态或其中各存储介质的当前状态,所以只能尝试各种阈值电压。
例1,控制部件按指定的顺序遍历NAND闪存供应商提供的所有阈值电压,用指示每种阈值电压的读重做命令从NAND闪存读出数据,并对读出数据进行错误校正译码,直到错误校正译码成功或穷尽了所有阈值电压后依然没能获得错误校正译码成功的数据。
例2,控制部件首先使用通常的存储介质访问(读)命令,若读出数据的错误校正译码失败,采用遍历所有阈值电压的方式做数据恢复。当使用某一个阈值电压读出的数据的错误校正译码成功时,记录此该阈值电压,在下一次使用通常的存储介质访问(读)命令读出数据又发生了错误校正译码失败后,优先使用上一次记录的能成功读取数据的阈值电压,如果用该阈值电压读出数据的错误校正译码失败,则再遍历供应商提供的其他阈值电压。
例3,控制部件对存储介质的当前状态有较准确的理解,在要读出数据时,直接使用自认为最佳的阈值电压值(一组或几组)并发出读重做命令。如果这些阈值电压对应的读重做命令都不能得到可以错误校正译码成功的数据,再遍历NAND闪存供应商提供的阈值电压。
发明内容
现有技术对阈值电压的搜索主要基于事后的策略。在用通常的存储介质访问读命令失败(读出数据的错误校正译码失败)后,通过读重做命令搜索最佳阈值电压。上面提到的3个例子,有各自的缺点。
对于例1,在进行读重做时,盲目的遍历所有阈值电压,不结合存储介质的当前状态,导致使用的读重做命令的平均次数高,寻找最佳阈值电压的效率低。
对于例2,记录对应上一次错误校正译码成功的阈值电压的方式可以比较好的应对耐久力(Endurance,随擦写次数增加引起的存储介质质量下降)对读出数据的影响。但是在实际的存储介质使用过程中,除了耐久力以外,数据保持力(Data Retention)读/编程扰动(Read/Program Disturb),温度等因素都会引起存储介质的低可靠性问题。例2的方案没有办法很好的应对这类问题。
对于例3,控制部件要建立对存储介质的充分理解,需要依赖大量的实验数据收集和分析,以及对存储设备上的存储介质的当前的状态(包括读/擦/写次数、保持时间、环境温度等诸多因素)有充分的跟踪和估计,这引入了复杂的系统设计与工作量。并且在实际场景下,实验数据和真实数据未必具备很好的一致性,所以仍然可能出现多次尝试了读重做命令,所读出的数据仍然无法通过错误校正译码的可能性。
根据本申请的实施例,希望提高控制部件估计阈值电压的准确率,从而缩短获取正确的读出数据所需的时间。特别是在NAND闪存生命周期的后期,存储介质质量下降后,希望控制部件从存储介质读出数据的时间不会因多次尝试读重做命令而明显延长。
根据本申请的第一方面,提供了根据本申请第一方面的第一访问NVM芯片的方法,包括:响应于处理IO读命令,根据要读取的NVM芯片的地址访问读阈值表,以获得读阈值;生成使用所获得的读阈值对应的读阈值电压的读重做命令来访问NVM芯片;以及在处理IO命令的间隙更新所述读阈值表。
根据本申请第一方面的第一访问NVM芯片的方法,提供了根据本申请第一方面的第二访问NVM芯片的方法,其中生成第一额外的多个读重做命令访问NVM芯片,所述第一额外的多个读重做命令指示对NVM芯片可用的多种读阈值;根据所述第一额外的多个读重做命令从NVM芯片读出数据的正确程度,用得到了正确程度最好的读出数据的所述第一额外的多个读重做命令之一对应的读阈值更新读阈值表。
根据本申请第一方面的第二访问NVM芯片的方法,提供了根据本申请第一方面的第三访问NVM芯片的方法,其中所述第一额外的多个读重做命令访问NVM芯片的相同物理块或相同物理页。
根据本申请第一方面的第二或第三访问NVM芯片的方法,提供了根据本申请第一方面的第四访问NVM芯片的方法,其中所述第一额外的多个读重做命令被间隔地发送给NVM芯片,使得处理所述第一额外的多个读重做命令不影响处理IO命令的性能。
根据本申请第一方面的第一至第四访问NVM芯片的方法之一,提供了根据本申请第一方面的第五访问NVM芯片的方法,还包括:生成第二额外的多个读重做命令访问NVM芯片,所述第二额外的多个读重做命令指示对NVM芯片可用的多种读阈值,所述第二额外的多个读重做命令访问的物理块同所述第一额外的多个读重做命令访问的物理块不同;根据所述第二额外的多个读重做命令从NVM芯片读出数据的正确程度,用得到了正确程度最好的读出数据的所述第二额外的多个读重做命令之一对应的读阈值更新读阈值表。
根据本申请第一方面的第二至第五访问NVM芯片的方法之一,提供了根据本申请第一方面的第六访问NVM芯片的方法,其中所述第一额外的多个读重做命令,包括访问第一类型物理页的读重做命令与访问第二类型物理页的读重做命令;所述根据所述第一额外的多个读重做命令从NVM芯片读出数据的正确程度,用得到了正确程度最好的读出数据的所述第一额外的多个读重做命令之一对应的读阈值更新读阈值表,包括:用访问第一类型物理页的读重做命令中得到了正确程度最好的读出数据的访问第一类型物理页的读重做命对应的读阈值更新读阈值表,以及用访问第二类型物理页的读重做命令中得到了正确程度最好的读出数据的访问第二类型物理页的读重做命对应的读阈值更新读阈值表。
根据本申请第一方面的第六访问NVM芯片的方法,提供了根据本申请第一方面的第七访问NVM芯片的方法,其中读阈值表中为第一类型物理页记录的读阈值的数量不同于为第二类型物理页记录的读阈值数量。
根据本申请第一方面的第二至第七访问NVM芯片的方法之一,提供了根据本申请第一方面的第八访问NVM芯片的方法,其中所述从NVM芯片读出数据的正确程度包括,从NVM芯片中读出数据经错误校正译码识别出的错误比特数或错误比特率,或者从NVM芯片中读出的数据同写入NVM芯片的数据相比发生翻转的比特数或比特率。
根据本申请第一方面的第二至第八访问NVM芯片的方法之一,提供了根据本申请第一方面的第九访问NVM芯片的方法,其中额外的多个读重做命令的生成不依赖于要处理IO命令。
根据本申请第一方面的第一至第九访问NVM芯片的方法之一,提供了根据本申请第一方面的第十访问NVM芯片的方法,其中读阈值表为存储设备的每个物理块记录了读阈值;或者读阈值表为存储设备的每个物理块的每种类型物理页记录了读阈值。
根据本申请第一方面的第一至第十访问NVM芯片的方法之一,提供了根据本申请第一方面的第十一访问NVM芯片的方法,其中响应于处理IO读命令,根据要读取的NVM芯片的物理块地址访问读阈值表,或者根据要读取的NVM芯片的物理块地址与物理页类型访问读阈值表。
根据本申请第一方面的第一至第十一访问NVM芯片的方法之一,提供了根据本申请第一方面的第十二访问NVM芯片的方法,其中响应于处理IO读命令,若要访问的NVM芯片处于生命周期的后期,则根据要读取的NVM芯片的地址访问读阈值表,以获得读阈值;若要访问的NVM芯片非处于生命周期的后期,则生成通常的存储介质访问读命令提供给NVM芯片。
根据本申请第一方面的第一至第十一访问NVM芯片的方法之一,提供了根据本申请第一方面的第十二访问NVM芯片的方法,其中所述响应于处理IO读命令,根据要读取的NVM芯片的地址访问读阈值表,包括:根据所述IO读命令,生成通常的存储介质访问读命令提供给NVM芯片,响应于NVM芯片响应所述通常的存储介质访问读命令而输出的数据存在不可纠正错误,才根据要读取的NVM芯片的地址访问读阈值表。
根据本申请第一方面的第十三访问NVM芯片的方法,提供了根据本申请第一方面的第十四访问NVM芯片的方法,其中第一模块根据所述IO读命令,生成所述指示通常的存储介质访问读命令的介质接口命令;第二模块,响应于NVM芯片响应所述通常的存储介质访问读命令而输出的数据存在不可纠正错误,而根据要读取的NVM芯片的地址访问读阈值表,并用所获得的读阈值对应的读阈值电压的第一读重做命令来访问NVM芯片;其中第一模块与第二模块是不同的模块。
根据本申请第一方面的十四访问NVM芯片的方法,提供了根据本申请第一方面的第十五访问NVM芯片的方法,还包括:第二模块响应于所述第一读重做命令从NVM芯片读出的数据存在不可纠正错误,使用第二读阈值电压生成第二读重做命令来访问NVM芯片,其中第二读阈值电压不同于第一读重做命令对应的读阈值电压。
根据本申请第一方面的第十五访问NVM芯片的方法,提供了根据本申请第一方面的第十六访问NVM芯片的方法,还包括:响应于所述第二读重做命令从NVM芯片读出的数不存在不可纠正错误,将第二读重做命令的处理结果提供给所述第一模块,作为所述通常的存储介质访问读命令的介质接口命令的处理结果。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备的控制部件,包括:存储命令处理单元、介质接口控制器与处理器;存储命令处理单元与介质接口控制器通过入港队列与出港队列耦合;存储命令处理单元将对应于IO命令的要提供给介质接口控制器的介质接口命令添加到入港队列;处理器生成指示额外的读重做命令的介质接口命令添加到入港队列,并根据额外的读重做命令的处理结果更新读阈值表。
根据本申请第二方面的第一存储设备的控制部件,提供了根据本申请第二方面的第二存储设备的控制部件,其中介质接口控制器还用于耦合NVM芯片;介质接口控制器根据介质接口命令生成通常的存储介质访问读命令或读重做命令并提供给NVM芯片;处理器还用于耦合存储器,所述存储器存储所述读阈值表。
根据本申请第二方面的第一或第二存储设备的控制部件,提供了根据本申请第二方面的第三存储设备的控制部件,其中所述读阈值表包括多个条目;读阈值表的多个条目为存储设备的每个物理块记录了读阈值;或者读阈值表的多个条目为存储设备的每个物理块的每种类型物理页记录了读阈值。
根据本申请第二方面的第一至第三存储设备的控制部件之一,提供了根据本申请第二方面的第四存储设备的控制部件,其中处理器从出港队列获取指示额外的读重做命令的介质接口命令的处理结果;或者处理器从介质接口控制器获取指示额外的读重做命令的介质接口命令的处理结果。
根据本申请第二方面的第一至第四存储设备的控制部件之一,提供了根据本申请第二方面的第五存储设备的控制部件,其中所述处理器在存储命令处理单元向入港队列添加对应于IO命令的介质接口命令的间隙,向入港队列添加指示额外的读重做命令的介质接口命令。
根据本申请第二方面的第一至第五存储设备的控制部件之一,提供了根据本申请第二方面的第六存储设备的控制部件,其中所述处理器向入港队列添加指示第一额外的多个读重做命令的介质接口命令;所述第一额外的多个读重做命令指示对NVM芯片可用的多种读阈值;根据所述第一额外的多个读重做命令从NVM芯片读出数据的正确程度,所述处理器用得到了正确程度最好的读出数据的所述第一额外的多个读重做命令之一对应的读阈值更新读阈值表。
根据本申请第二方面的第六存储设备的控制部件,提供了根据本申请第二方面的第七存储设备的控制部件,其中所述第一额外的多个读重做命令访问NVM芯片的相同物理块或相同物理页。
根据本申请第二方面的第六或第七存储设备的控制部件,提供了根据本申请第二方面的第八存储设备的控制部件,其中所述处理器将所述第一额外的多个读重做命令间隔地发送给NVM芯片,使得处理所述第一额外的多个读重做命令不影响所述控制部件处理IO命令的性能。
根据本申请第二方面的第六至第八存储设备的控制部件之一,提供了根据本申请第二方面的第九存储设备的控制部件,还包括:所述处理器向入港队列添加指示第二额外的多个读重做命令的介质接口命令;所述第二额外的多个读重做命令指示对NVM芯片可用的多种读阈值,所述第二额外的多个读重做命令访问的物理块同所述第一额外的多个读重做命令访问的物理块不同;所述处理器根据所述第二额外的多个读重做命令从NVM芯片读出数据的正确程度,用得到了正确程度最好的读出数据的所述第二额外的多个读重做命令之一对应的读阈值更新读阈值表。
根据本申请第二方面的第六至第九存储设备的控制部件之一,提供了根据本申请第二方面的第十存储设备的控制部件,其中所述第一额外的多个读重做命令,包括访问第一类型物理页的读重做命令与访问第二类型物理页的读重做命令;所述处理器用得到了正确程度最好的读出数据的所述第一额外的多个读重做命令之一对应的读阈值更新读阈值表,包括:用访问第一类型物理页的读重做命令中得到了正确程度最好的读出数据的访问第一类型物理页的读重做命对应的读阈值更新读阈值表,以及用访问第二类型物理页的读重做命令中得到了正确程度最好的读出数据的访问第二类型物理页的读重做命对应的读阈值更新读阈值表。
根据本申请第二方面的第一至第十存储设备的控制部件之一,提供了根据本申请第二方面的第十一存储设备的控制部件,其中所述存储命令处理单元根据IO读命令,生成所述指示通常的存储介质访问读命令的介质接口命令;所述介质接口控制器,响应于NVM芯片响应所述通常的存储介质访问读命令而输出的数据存在不可纠正错误,向所述处理器指示所述不可纠正错误的出现;所述处理器,根据要读取的NVM芯片的地址访问读阈值表,生成指示第一读重做命令的介质接口命令提供给入港队列,其中所述第一读重做命令指示访问读阈值表所获得的读阈值。
根据本申请第二方面的第十一存储设备的控制部件,提供了根据本申请第二方面的第十二存储设备的控制部件,其中,所述介质接口控制器,响应于NVM芯片响应所述第一读重做命令而输出的数据存在不可纠正错误,向所述处理器指示不可纠正错误的出现;所述处理器第二模块响应于不可纠正错误的出现,生成指示第二读重做命令的介质接口命令提供给入港队列,其中第二读阈值电压不同于第一读重做命令对应的读阈值电压。
根据本申请第二方面的第十二存储设备的控制部件,提供了根据本申请第二方面的第十三存储设备的控制部件,还包括:所述介质接口控制器,响应于所述第二读重做命令从NVM芯片读出的数不存在不可纠正错误,将第二读重做命令的处理结果通过出港队列提供给所述存储命令处理单元,作为所述指示通常的存储介质访问读命令的介质接口命令的处理结果。
根据本申请第二方面的第一至第十存储设备的控制部件之一,提供了根据本申请第二方面的第十四存储设备的控制部件,其中所述存储命令处理单元根据IO读命令,生成所述指示通常的存储介质访问读命令的介质接口命令;所述介质接口控制器,响应于NVM芯片响应所述通常的存储介质访问读命令而输出的数据存在不可纠正错误,向所述存储命令处理单元指示所述不可纠正错误的出现;所述存储命令处理单元,响应于所述不可纠正错误的出现,访问读阈值表,以及生成指示第一读重做命令的介质接口命令提供给入港队列,其中所述第一读重做命令指示访问读阈值表所获得的读阈值。
根据本申请第二方面的第一至第十存储设备的控制部件之一,提供了根据本申请第二方面的第十五存储设备的控制部件,其中所述存储命令处理单元根据IO读命令访问的NVM芯片的地址访问读阈值表,生成指示第一读重做命令的介质接口命令提供给入港队列,其中所述第一读重做命令指示访问读阈值表所获得的读阈值。
根据本申请第二方面的第十五存储设备的控制部件,提供了根据本申请第二方面的第十六存储设备的控制部件,其中所述存储命令处理单元响应于处理IO读命令,若IO读命令要访问的NVM芯片处于生命周期的后期,则根据IO读命令访问的NVM芯片的地址访问读阈值表,以获得用于第一读重做命令的读阈值;若IO读命令要访问的NVM芯片非处于生命周期的后期,则生成通常的存储介质访问读命令提供给NVM芯片。
根据本申请的第三方面,提供了根据本申请第三方面的存储设备,所述存储设备包括处理器、存储器与NVM芯片,所述存储器存储程序,所述处理器执行所述程序来实施根据本申请第一方面的第一至第十六访问NVM芯片的方法之一。
根据本申请的第四方面,提供了根据本申请第四方面的存储设备,所述存储设备包括控制部件、存储器与NVM芯片,所述控制部件是根据本申请第二方面的第一至第十六控制部件之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1展示了现有技术中的存储设备的框图;
图2展示了存储设备的控制部件的详细的框图;
图3展示了现有技术的NAND闪存存储介质的结构;
图4为存储单元的读出电压分布曲线图;
图5A为又一例子的存储单元的读出电压分布曲线图;
图5B展示了存储单元的状态与存储的比特的对应关系;
图5C展示了存储单元存储的3个比特与物理页的对应关系;
图6A展示了根据本申请实施例的存储设备的框图;
图6B展示了根据本申请实施例的读阈值表的示意图;
图7展示了根据本申请实施例创建或更新读阈值表的流程图;
图8展示了根据本申请实施例的利用读阈值表处理IO命令的示意图;以及
图9展示了根据本申请又一实施例的利用读阈值表处理IO命令的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图6A展示了根据本申请实施例的存储设备的框图。
存储设备的控制部件包括主机接口、主机命令处理单元、存储命令处理单元、存储介质管理单元与介质接口控制器。
介质接口控制器包括入港队列642与出港队列644。介质接口控制器通过入港队列542接收介质接口命令,还通过出港队列544输出介质接口命令处理结果。
同图2展示的控制部件,根据本申请实施例的控制部件,还包括处理器610。处理器610耦合入港队列642与出港队列644。可选地,处理器610还耦合介质接口控制器,以从介质接口控制器获取处理失败的介质接口命令。
可以理解地,一些实施方式中,控制部件的主机命令处理单元、存储命令处理单元和/或存储介质管理单元由硬件或运行在处理器上的软件实现。处理器610是例如独立于提供主机命令处理单元、存储命令处理单元和/或存储介质管理单元的处理器。同其他处理器相比,处理器610可以是具有更低的成本、更低的功耗、更低的工作频率和/或更低的性能的处理器。
处理器610用于向入港队列642填充指示读重做命令的介质接口命令。处理器610还用于从出港队列644获取其填充的介质接口命令的处理结果(包括所读出的数据,和/或所读出数据的错误比特数)。从而处理器610以不影响控制部件的其他单元对主机命令的处理的方式工作。进一步地,处理器610以低负载方式工作,例如,每1秒、每10秒甚至更高的间隔时间,向入港队列642添加一个或少数介质接口命令。从而处理器610产生的工作负载对控制部件的整体性能影响较低。依然可选地,处理器610提供给入港队列642的介质接口命令,具有同存储命令处理单元生成的介质接口命令相同或兼容的格式,以降低引入处理器610对介质接口控制器的复杂度的影响。
可选地,处理器610提供给入港队列642的介质接口命令包括特殊的标记,响应于存在该标记,介质接口控制器知晓该介质接口命令不是来自主机接口或存储命令处理单元,因而将对此类介质接口命令的处理结果,直接提供给处理器610,而不添加到出港队列644。依然可选地,处理器610监视出港队列644中的介质接口命令的处理结果,并将对应自身提供给入港队列642的介质接口命令的处理结果从出港队列644中取出,使得这些处理结果不会被提供给存储命令处理单元。
处理器610为每个物理块生成指示读重做命令的介质接口命令,以遍历对于该物理块可用的多种的读阈值电压,从中获取具有最优或较优读出数据结果的读阈值电压(称为最佳读阈值电压)。具有最优或较优读出数据结果是指例如读出的数据中,同其他读出结果相比较,具有最少或较少的错误比特数。处理器610以较低的工作负载为储设备中的一个、多个或所有物理块搜索最佳读阈值电压,使得在命令处理单元需要使用读重做命令时,得以便利地获取当前对指定物理块的最佳读阈值电压而无需像现有技术中因事后搜索最佳读阈值电压而引入了较长的处理延迟。根据本申请的实施例,将最佳读阈值电压的搜索所需的时间隐藏在存储设备正常工作期间,从而减少了在需要使用最佳读阈值电压时,寻找该最佳读阈值电压所需的时间。
继续参看图6A,读阈值表612用于记录各物理块对应的最佳读阈值电压。读阈值表612包括多个条目,每个条目记录了用于某物理块的最佳读阈值电压。可选地,对于例如TLC存储介质,为每个物理块记录3个最佳读阈值电压,分别用于该物理块的LSB页、CSB页与MSB页。按物理块为单位在读阈值表中记录最佳读阈值电压,而不是为每个物理页记录读阈值电压,以降低读阈值表的尺寸。依然可选地,一些物理块包括多种类型的字线,例如,容纳SLC类型存储单元的字线、容纳MLC类型存储单元的字线与TLC类型存储单元的字线。相应地,读阈值表中,为物理块的每种类型的字线,记录其上容纳的物理页的最佳读阈值电压。
读阈值表612被记录在例如DRAM中。可选地,读阈值表由集成于控制部件的存储器所容纳。处理器610将找到的最佳读阈值电压记录在读阈值表中。
图6B展示了根据本申请实施例的读阈值表的示意图。
读阈值表包括多个条目,每个条目指示相关联的物理块与读阈值。可选地,根据本申请实施例的读阈值表,为存储设备的所有物理块提供条目,从而条目中可不必记录物理块地址或索引,而是以条目在存储器中的地址暗示该条目所指示的物理块。
参看图6B,读阈值表中记录了用于物理块B0的读阈值为“0”,用于物理块B1的读阈值为“-5”。读阈值表中记录的读阈值是用于该物理块的优选的读阈值。依然可选地,读阈值“0”代表默认的读阈值电压,或者由通常的存储介质访问读命令所使用的读阈值电压。而读阈值“-5”代表相对于默认的读阈值电压向左偏移5个单位。
图6B中,物理块B0、B1与B2各自是SLC类型,其仅需要一个读阈值,而物理块B3是TLC类型,其中有3类物理页,读取LSB页需要一个读阈值(图6B中为“0”),读取CSB页需要2个读阈值(图6B中为“-20”与“40”),而读取MSB页需要3个读阈值(图6B中为“-100”、“-10”与“95”)。从而读阈值表中还根据物理块的类型,为其中的各种类型的物理页提供对应的读阈值。可选地,存储介质采用了物理页与存储单元所有的多个状态之间的其他映射方式(不同于图5A展示的映射方式),并使得读取各物理页所使用的读阈值改变,所属领域技术人员能够理解针对其他映射方式,在读阈值表中需要记录的读阈值。
可选地,对于物理块中的各物理页,读阈值表的条目中记录唯一的读阈值,该读阈值被用于其对应物理块的所有物理页。
依然可选地,物理块中的物理页被分组,例如,将TLC类型的物理页又分为多组,读阈值表中为每组记录其使用的读阈值。
图7展示了根据本申请实施例创建或更新读阈值表的流程图。
也参看图6A,处理器610执行图7展示的处理流程。
处理器610作为存储设备的控制部件的后台任务,周期性地或者在识别出存储设备空闲时,开始执行图7展示的处理流程(710)。例如,存储设备每秒处理100万个来自主机的IO命令,而处理器610在1秒中内产生例如1次用于更新读阈值表的存储介质访问读命令,或者产生用于1个物理页的多个可用的读阈值的读命令。从而,处理器610产生的存储介质访问读命令,相对于存储设备处理的主机IO命令,数量或负载都很小,因而不会影响存储设备处理主机IO命令的性能。
处理器610获取要为其更新读阈值的物理块(720)。处理器610的目的是为存储设备的多个或所有物理块更新读阈值,并且要将为更新读阈值所使用的读重做命令在时间上分散开,以尽量降低对存储设备性能的影响。作为举例,处理器610按存储设备的物理块索引的顺序,获取要为其更新读阈值的物理块。在为一个物理块更新了读阈值后,再按顺序获取另一个物理块。可选地,存储设备使用过程中,一些物理块的读阈值需要被优先更新,例如,在这些物理块上读出的数据发生了不可纠正错误,存储命令处理单元(也参看图6A)即将需要使用用于这些物理块的优选读阈值电压。对此情况,处理器610在步骤720优先选取这些物理块。依然作为举例,处理器610还依据物理块的擦写次数、读取次数、数据保持时间、环境温度等因素调整物理块的选择顺序。
对于选出的物理块,处理器610获取用于该物理块的读阈值(730)。所获取的读阈值被用于向该物理块发出读重做命令。作为举例,存储介质提供了20种可用的读阈值,在步骤730,处理器610从20种读阈值种选择之一,以及通过重复步骤730到770,处理器610用存储介质的多种或所有可用的读阈值向存储介质发出读重做命令。可选地,在步骤730,处理器610通过访问读阈值表,从中获取对应该物理块的读阈值。读阈值表记录的读阈值为处理器610提供了从多个读阈值中搜索读阈值的优选起点。
处理器610用获取的读阈值生成指示读重做命令的介质接口命令,通过入港队列642提交给介质接口控制器,以读取指定的物理页(740)。生成的介质接口命令,访问步骤720中的选择的物理块的指定的一个或多个物理页。所访问的物理页的类型(LSB页、CSB页或MSB页)同所使用的读阈值相对应。指定的物理页是例如物理块中具有指定地址或索引的物理页,或者是物理块中随机选择的物理页。
处理器610识别并记录从指定物理页用所获取的读阈值所读出的数据的正确程度(760),用于表征所使用的读阈值电压的效果。读出数据的正确程度是例如读出数据的错误比特数、错误比特数在读出数据中的占比或其他形式。作为举例,介质接口控制器对读出的数据进行错误校正译码,译码结果指示了读出数据与译码后数据的差异,用该差异代表读出数据的正确程度。作为又一个例子,处理器610预先向指定的物理页(例如,每个物理块的物理页100)写入已知的数据,步骤740中获取该指定的物理页(例如,物理页100)。从而处理器610比较从该指定物理页读出的数据与其之前写入的数据,以得到读出数据的正确程度。处理器610从例如出港队列644获取读重做命令的处理结果,进而获取读出数据的正确程度。可选地,介质接口控制器将处理器610提交的介质接口命令的处理结果直接提供给处理器610而不经过出港队列644。
对于指定的物理页,处理器610识别是否还要为该物理页尝试其他读阈值(770),以获取用于该物理页的当前最佳读阈值。如果没有其他读阈值需要尝试,处理器610根据为该物理页之前使用的一个或多个读阈值的读出数据正确程度,获取对应最佳的读出数据正确程度的读阈值,将该读阈值同该物理页所在的物理块相关联地记录在读阈值表中(780)。
在步骤770,如果处理器610识别出还有其他读阈值需要尝试,则处理流程返回步骤710,以等待下一次启动流程后,获取其他的读阈值向该物理页发出读重做命令。
作为举例,存储设备有100个物理块,物理页对应20种读阈值电压。根据图7展示的流程,从步骤710到步骤770的每次循环,对物理块之一的指定物理页发出一条读重做命令,该读重做命令使用20种读阈值电压之一。通过例如重复20次步骤710到步骤770,为某物理页发出了20个读重做命令,从而使用了全部20种读阈值电压来访问该物理页,并得到了对应的20个读出数据正确程度,接下来在步骤780,在读阈值表中记录对应读出数据程度最正确的读阈值电压。进而,在下次步骤710到步骤770的处理中,步骤720将选择另一个物理块,来为该另一个物理块选取其最适用的读阈值电压。
可以理解地,图7展示的处理流程在存储设备的工作期间持续发生。即使为存储设备的所有物理块都在读阈值表中记录了最适用的读阈值,依然通过图7展示的流程,继续为每个物理块寻找最适用的读阈值,并持续更新读阈值表。因为随着时间流逝、存储设备的使用,每个物理块的存储介质特性发生变花,其最适用的读阈值也可能改变。
通过图7展示的处理流程,处理器610以不显著影响存储设备性能的方式持续更新读阈值表,使得读阈值表中记录了存储设备的物理块,在“当前”最适用的读阈值。
图8展示了根据本申请实施例的利用读阈值表处理IO命令的示意图。
图8的框图同图6A展示的框图在结构上基本一致。区别在于,存储命令处理单元还访问DRAM中的读阈值表。
在处理IO命令时,向介质接口控制器提交介质接口命令前,存储命令处理单元还访问读阈值表612(图8中,由“(1)”指示),以获取对要访问的物理块的最适用读阈值电压。根据最适用读阈值电压,存储命令处理单元在介质接口命令中向介质接口控制器指示使用读重做命令还是通常的存储介质访问读命令(图8中,由“(2)”指示),所指示的读重做命令使用该最适用读阈值电压。介质接口处理器处理介质接口的命令,向NVM芯片发出存储介质访问读命令或读重做命令,以及将命令处理结果通过出港队列提供给命令处理单元(图8中,由“(3)”指示)。
可选地,在NVM芯片生命周期的早期,存储介质的质量较好,通常的存储介质访问读命令在大部分情况下能读出正确的数据。此时,存储命令处理单元向介质接口控制器提交介质接口命令前,不访问读阈值表,以减少IO命令处理环节,加快处理速度。在NVM芯片生命周期后期,存储介质的错误率增加,通常的存储介质访问读命令读出数据的错误率增加。此时,存储命令处理单元向介质接口控制器提交介质接口命令前,访问读阈值表以获得当前最适用的读阈值,降低从NVM芯片读出数据的错误率,提高介质接口控制器响应于介质接口命令而首次从NVM芯片读取数据被正确地错误校验译码的机率。可以理解地,存储命令处理单元处理IO命令与处理器610更新读阈值表并行发生。存储命令处理单元也无需关心处理器610更新读阈值表的进度,而随时访问读阈值表。
可选地,存储命令处理单元依据控制部件已工作的时间、向NVM芯片已写入的数据量、NVM芯片的平均擦写次等因素确定是否进入了NVM芯片生命周期后期。可选地,存储命令处理单元响应于从NVM芯片读取的数据发生不可纠正错误的次数确定是否进入了NVM芯片生命周期后期。
图9展示了根据本申请又一实施例的利用读阈值表处理IO命令的示意图。
图9的框图同图6A展示的框图在结构上基本一致。
在处理IO命令时,存储命令处理单元无需访问读阈值表,而是直接向介质接口控制器提交介质接口命令(图9中,由“(1)”指示)。介质接口处理器处理介质接口的命令,向NVM芯片发出存储介质访问读命令或读重做命令。若从NVM芯片读出的数据出现了不可校正错误,介质接口控制器将命令处理结果提供给处理器610(图9中,由“(2)”指示)。处理器610响应于收到了存储介质访问读命令或读重做命令读出数据失败的指示,用所读取的物理块以及可选的物理页类型访问读阈值表(图9中,由“(3)”指示),以获取读阈值表中记录的用于该被读取地址的最适用读阈值。处理器610还用获取的最适用读阈值生成指示新的读重做命令的介质接口命令并通过入港队列提供给介质接口控制器(图9中,由“(4)”指示)。介质接口控制器用指示了新的读阈值的读重做命令访问NVM芯片,并获取NVM芯片提供的读出数据。若读出数据的错误校正译码成功,介质接口控制器将命令处理结果通过出港队列提供给存储命令处理单元(图9中,由“(5)”指示);若读出数据的错误校正译码失败,介质接口控制器将命令处理结果提供给处理器610,处理器610再次通过图9中的“(3)”、“(4)”与“(5)”阶段所指示的处理流程生成指示读重做命令的介质接口命令并将正确的读出数据提供给存储命令处理单元。
可选地,处理器610根据读阈值表记录的读阈值生成的读重做命令,所读出的数据如果依然无法完成错误校验译码,处理器610尝试用其他的读阈值生成读重做命令。处理器610这里的操作过程同图7展示的处理流程类似,但无需等待指定的时间或存储设备空闲,以及在用某阈值电压生成的读重做命令读出数据错误校正译码成功后,即可向存储命令处理单元提供所读出数据,而无需搜索读阈值的所有可能取值。
根据本申请的实施方式,存储设备被关闭时,还将读阈值表存储到NVM芯片中。还记录处理器610执行图7的流程所处的阶段,例如,正在处理哪个物理块,已尝试了哪个或哪些读阈值等。这些信息在存储设备关闭时,也存储在NVM芯片中。
以及存储设备上电时,从NVM芯片读出读阈值表并放置在存储器中,并配置处理器610继续图7的流程。
本申请的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、专用继承电路(ASIC)等等。软件可以包括计算机可读程序,这些计算机可读程序在被计算机执行时,实现本申请所述的方法。
本申请的软件还可以存储在计算机可读存储介质,例如硬盘,光盘等等中,该计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备进行上面所述的方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种访问NVM芯片的方法,包括如下步骤:
响应于处理IO读命令,根据要读取的NVM芯片的地址访问读阈值表,以获得读阈值;
生成使用所获得的读阈值对应的读阈值电压的读重做命令,以预设时间间隔向入港队列添加一个或少数指示所述读重做命令的介质接口命令,根据指示所述读重做命令的介质接口命令来访问NVM芯片;以及
在处理IO命令的间隙更新所述读阈值表。
2.根据权利要求1所述的方法,其中
生成第一额外的多个读重做命令访问NVM芯片,所述第一额外的多个读重做命令指示对NVM芯片可用的多种读阈值;
根据所述第一额外的多个读重做命令从NVM芯片读出数据的正确程度,用得到了正确程度最好的读出数据的所述第一额外的多个读重做命令之一对应的读阈值更新读阈值表。
3.根据权利要求2所述的方法,其中
所述第一额外的多个读重做命令被间隔地发送给NVM芯片,使得处理所述第一额外的多个读重做命令不影响处理IO命令的性能。
4.根据权利要求2或3所述的方法,还包括:
生成第二额外的多个读重做命令访问NVM芯片,所述第二额外的多个读重做命令指示对NVM芯片可用的多种读阈值,所述第二额外的多个读重做命令访问的物理块同所述第一额外的多个读重做命令访问的物理块不同;
根据所述第二额外的多个读重做命令从NVM芯片读出数据的正确程度,用得到了正确程度最好的读出数据的所述第二额外的多个读重做命令之一对应的读阈值更新读阈值表。
5.根据权利要求2或3所述的方法,其中
所述第一额外的多个读重做命令,包括访问第一类型物理页的读重做命令与访问第二类型物理页的读重做命令;
所述根据所述第一额外的多个读重做命令从NVM芯片读出数据的正确程度,用得到了正确程度最好的读出数据的所述第一额外的多个读重做命令之一对应的读阈值更新读阈值表,包括:用访问第一类型物理页的读重做命令中得到了正确程度最好的读出数据的访问第一类型物理页的读重做命对应的读阈值更新读阈值表,以及用访问第二类型物理页的读重做命令中得到了正确程度最好的读出数据的访问第二类型物理页的读重做命对应的读阈值更新读阈值表。
6.根据权利要求1-3之一所述的方法,其中
响应于处理IO读命令,若要访问的NVM芯片处于生命周期的后期,则根据要读取的NVM芯片的地址访问读阈值表,以获得读阈值;
若要访问的NVM芯片非处于生命周期的后期,则生成通常的存储介质访问读命令提供给NVM芯片。
7.根据权利要求1-3之一所述的方法,其中
所述响应于处理IO读命令,根据要读取的NVM芯片的地址访问读阈值表,包括:
根据所述IO读命令,生成通常的存储介质访问读命令提供给NVM芯片,响应于NVM芯片响应所述通常的存储介质访问读命令而输出的数据存在不可纠正错误,才根据要读取的NVM芯片的地址访问读阈值表。
8.一种存储设备的控制部件,包括:
存储命令处理单元、介质接口控制器与处理器;
存储命令处理单元与介质接口控制器通过入港队列与出港队列耦合;
存储命令处理单元将对应于IO命令的要提供给介质接口控制器的介质接口命令添加到入港队列;
处理器生成指示额外的读重做命令的介质接口命令添加到入港队列,并在处理IO
命令的间隙根据额外的读重做命令的处理结果更新读阈值表,其中,以预设时间间隔向入港队列添加一个或少数指示所述读重做命令的介质接口命令。
9.根据权利要求8所述的控制部件,其中
所述处理器向入港队列添加指示第一额外的多个读重做命令的介质接口命令;所述第一额外的多个读重做命令指示对NVM芯片可用的多种读阈值;
根据所述第一额外的多个读重做命令从NVM芯片读出数据的正确程度,所述处理器用得到了正确程度最好的读出数据的所述第一额外的多个读重做命令之一对应的读阈值更新读阈值表。
10.根据权利要求8或9所述的控制部件,其中
所述存储命令处理单元根据IO读命令,生成所述指示通常的存储介质访问读命令的介质接口命令;
所述介质接口控制器,响应于NVM芯片响应所述通常的存储介质访问读命令而输出的数据存在不可纠正错误,向所述存储命令处理单元指示所述不可纠正错误的出现;
所述存储命令处理单元,响应于所述不可纠正错误的出现,访问读阈值表,以及生成指示第一读重做命令的介质接口命令提供给入港队列,其中所述第一读重做命令指示访问读阈值表所获得的读阈值。
CN202010631963.7A 2020-07-03 2020-07-03 Nvm芯片读数据错误快速处理方法及其控制器 Active CN113076218B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010631963.7A CN113076218B (zh) 2020-07-03 2020-07-03 Nvm芯片读数据错误快速处理方法及其控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010631963.7A CN113076218B (zh) 2020-07-03 2020-07-03 Nvm芯片读数据错误快速处理方法及其控制器

Publications (2)

Publication Number Publication Date
CN113076218A CN113076218A (zh) 2021-07-06
CN113076218B true CN113076218B (zh) 2022-03-25

Family

ID=76609082

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010631963.7A Active CN113076218B (zh) 2020-07-03 2020-07-03 Nvm芯片读数据错误快速处理方法及其控制器

Country Status (1)

Country Link
CN (1) CN113076218B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102519664B1 (ko) * 2021-08-31 2023-04-10 삼성전자주식회사 스토리지 장치, 스토리지 컨트롤러 및 스토리지 컨트롤러의 동작 방법
CN113849434B (zh) * 2021-12-01 2022-02-22 杰创智能科技股份有限公司 多功能可配置eeprom接口控制协处理器
CN117215503B (zh) * 2023-11-09 2024-06-11 深圳星火半导体科技有限公司 一种读取闪存数据的方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8370603B2 (en) * 2008-12-23 2013-02-05 Apple Inc. Architecture for address mapping of managed non-volatile memory
US9053008B1 (en) * 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
CN106448737B (zh) * 2016-09-30 2020-12-01 厦门旌存半导体技术有限公司 读取闪存数据的方法、装置以及固态驱动器
CN108257642B (zh) * 2016-12-29 2021-08-17 北京忆恒创源科技股份有限公司 读阈值设置方法与装置
CN109065092B (zh) * 2017-02-21 2022-06-17 北京忆恒创源科技股份有限公司 Nvm芯片的读阈值设置方法及其装置
CN109582490B (zh) * 2017-09-28 2023-12-15 北京忆芯科技有限公司 智能重读命令生成
KR102392056B1 (ko) * 2017-12-27 2022-04-28 삼성전자주식회사 메모리 장치의 데이터 독출 방법, 메모리 컨트롤러의 제어 방법 및 이들을 포함하는 저장 장치
US10878920B2 (en) * 2018-03-21 2020-12-29 SK Hynix Inc. Memory controller and memory system having the same

Also Published As

Publication number Publication date
CN113076218A (zh) 2021-07-06

Similar Documents

Publication Publication Date Title
US8972776B2 (en) Partial R-block recycling
US10475518B2 (en) Memory system, memory system control method, and program
US9753653B2 (en) High-priority NAND operations management
US9135112B2 (en) Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
US10956317B2 (en) Garbage collection in non-volatile memory that fully programs dependent layers in a target block
KR101459861B1 (ko) 스트라이프 기반 메모리 작동
CN112148525B (zh) 实现更快且经过调节的装置初始化时间
US11574688B2 (en) Memory system, control method thereof, and program
WO2015097956A1 (en) Extending useful life of a non-volatile memory by health grading
US9898215B2 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
CN113076218B (zh) Nvm芯片读数据错误快速处理方法及其控制器
US11836392B2 (en) Relocating data to low latency memory
US10789003B1 (en) Selective deduplication based on data storage device controller status and media characteristics
TWI651726B (zh) 解碼方法以及儲存控制器
US11461177B2 (en) Data storage device and method of operating the same
US20230266884A1 (en) Operating method for storage controller and storage system including same
US9417809B1 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US11662911B2 (en) Memory system and operating method thereof
CN114546254A (zh) 写入数据的方法和非易失性存储器装置
US20240079073A1 (en) Storage controller generating read voltages for soft decision decoding based on read information and decoding information, storage device including the same, and operating method thereof
WO2021041073A1 (en) Memory sub-system grading and allocation
US20240231987A1 (en) Storage device, method of operating storage device, and method of operating non-volatile memory
CN118519582A (zh) 数据管理方法与存储装置
KR20190099570A (ko) 데이터 저장 장치 및 그것의 동작 방법

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