CN116483617B - 快速在线查找nand闪存最优读偏移值的方法和装置 - Google Patents

快速在线查找nand闪存最优读偏移值的方法和装置 Download PDF

Info

Publication number
CN116483617B
CN116483617B CN202310738379.5A CN202310738379A CN116483617B CN 116483617 B CN116483617 B CN 116483617B CN 202310738379 A CN202310738379 A CN 202310738379A CN 116483617 B CN116483617 B CN 116483617B
Authority
CN
China
Prior art keywords
data
count
information
slc
optimal
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
CN202310738379.5A
Other languages
English (en)
Other versions
CN116483617A (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.)
Pengti Storage Technology Nanjing Co ltd
Original Assignee
Pengti Storage Technology Nanjing 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 Pengti Storage Technology Nanjing Co ltd filed Critical Pengti Storage Technology Nanjing Co ltd
Priority to CN202310738379.5A priority Critical patent/CN116483617B/zh
Publication of CN116483617A publication Critical patent/CN116483617A/zh
Application granted granted Critical
Publication of CN116483617B publication Critical patent/CN116483617B/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/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; 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

本发明涉及闪存存储器技术领域,具体涉及快速在线查找NAND闪存最优读偏移值的方法和装置,该方法包括:查找相应页类型下对应的SLC数据,在后续过程中一次读数并行处理多个电压阈值;查找相应页类型下各电压阈值所需的读偏移起始值,作为最优区间搜索处理的读偏移起始值;找到最优区间及最优区间的相邻区间;根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值。本发明采用一次读取并行查找多个电压阈值所对应的最优读偏移,最多只需要10次读操作即可找到最优读偏移,提高了产品的读性能,降低了产品的动态功耗;应用本发明找到的最优读偏移值进行读数可能获得正确解码,则该数据块暂时不需标志为坏块,延长了产品的使用期限。

Description

快速在线查找NAND闪存最优读偏移值的方法和装置
技术领域
本发明涉及闪存存储器技术领域,具体涉及快速在线查找NAND闪存最优读偏移值的方法和装置。
背景技术
TLC NAND闪存作为一种高性价比非易失性存储器,广泛应用各种电子电气产品。在实际产品使用过程中,由于TLC NAND闪存自身特性原因,从TLC NAND闪存读出的大块原始数据都不可避免的发生某些位翻转,无法直接使用。因此,从TLC NAND闪存中读取的原始数据通常需要经过LDPC纠错模块的处理纠正翻转位,确保数据正确后再交给上层应用。而随着TLC NAND闪存擦写次数的增加,读干扰的增加,以及数据保持时间增加,容易导致更多的位翻转,甚至超过LDPC纠错模块的纠错极限导致最终数据出错。
通常情况下,TLC NAND闪存厂商会提供一个数据表给用户去尝试多种不同的读偏移值,数据表里的读偏移值是厂商的一些经验值。然而数据表条目有限,很难全部覆盖多个电压阈值的最优组合,比如,如果根据经验,每个电压阈值有4个最优读偏移对应了不同擦写次数,读干扰次数和保存时间等状况下的存储单元,那么对于读取需要两个电压阈值的页类型的数据,需要4*4=16种组合,对于读取需要三个电压阈值的页类型的数据,需要4*4*4=64种组合。如果每个电压阈值需要更多的预设最优读偏移,组合就更多了。此外,很难找到特别合适的最优读顺序,TLC NAND闪存处于不同状况,比如擦写次数不同,读干扰次数不同,数据保持时间不同,其对应的最优读条目很显然也会不同,这都会很大程度影响产品的读写性能。
发明内容
针对现有方案中数据表条目有限、很难全部覆盖多个电压阈值的最优组合,且很难找到特别合适的最优读顺序的问题,提出了快速在线查找NAND闪存最优读偏移值的方法和装置,该方法或装置可应用于SSD盘、U盘、EMMC、UFS等以TLC NAND闪存为存储介质的各类存储设备,可以提高TLC NAND闪存的读操作性能和延长产品的使用寿命。
为了实现上述目的,本发明通过如下的技术方案来实现:
快速在线查找NAND闪存最优读偏移值的方法,所述方法包括:
查找相应页类型下对应的SLC数据,在后续过程中一次读数并行处理多个电压阈值;
查找相应页类型下各电压阈值所需的读偏移起始值,作为最优区间搜索处理的读偏移起始值;
找到最优区间及最优区间的相邻区间;
根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值。
作为本发明的一种优选方案,所述查找相应页类型下对应的SLC数据的方法具体包括:
向NAND控制器发出SLC格式读命令,从NAND闪存读出SLC数据;
统计每次SLC数据中1的计数,记为SLC计数信息;
生成每次SLC比对用的SLC参考区间信息;
比对所述SLC计数信息和所述SLC参考区间信息,根据比对结果判断所述SLC数据是否是有效的SLC数据,若所述SLC计数信息在所述SLC参考区间信息的范围内,则认定为有效的SLC数据,保存所述SLC数据到SLC数据处理暂存区;若不是,则根据比对结果增加或减少下次SLC读的读偏移值;重复上述操作,直至找到有效的SLC数据。
作为本发明的一种优选方案,所述查找相应页类型下各电压阈值所需的读偏移起始值的方法具体包括:
向NAND控制器发出TLC数据读命令,从NAND闪存读出第一TLC数据;
将每次读到的所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计位运算后数据中所需1的计数或0的计数,记为TLC计数信息;
生成每次TLC比对用的起始值参考区间信息;
比对所述TLC计数信息和所述起始值参考区间信息,根据比对结果判断页类型每个电压阈值是否找到所需的读偏移起始值,若所述TLC计数信息在所述起始值参考区间信息的范围内,则认定为找到所需的读偏移起始值,保存所述第一TLC数据到起始值搜索暂存区;若不是,则根据比对结果增加或减少该电压阈值对应的读偏移值;重复上述操作,直至找到每个电压阈值所需的读偏移起始值。
作为本发明的一种优选方案,所述找到最优区间及最优区间的相邻区间的方法具体包括:
从起始值搜索暂存区取回最后一次的第一TLC数据;
将所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第一计数信息,将所述第一计数信息保存到最优区间搜索暂存区;
生成比对用的第一参考信息;
比对所述第一TLC数据和所述第一参考信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
使用新的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第二TLC数据;
将所述第二TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第二计数信息,将所述第二计数信息保存到最优区间搜索暂存区;
生成比对用的第二参考信息;
计算所述第二计数信息及所述第一计数信息之差,得到第一存储单元计数信息,并保存所述第一存储单元计数信息到最优区间搜索暂存区;将所述第二计数信息和所述第二参考信息进行结果比对,根据比对结果增加或减少所需电压阈值对应的读偏移值;
使用新的读偏移值,向NAND控制器发出TLC数据读命令,从NAND闪存读出第三TLC数据;
将所述第三TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第三计数信息,将所述第三计数信息保存到最优区间搜索暂存区;
计算所述第三计数信息及其相邻数据的计数信息之差,得到第二存储单元计数信息,并保存所述第二存储单元计数信息到最优区间搜索暂存区;比对所述第一存储单元计数信息和所述第二存储单元计数信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
使用新的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第四TLC数据;
将所述第四TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第四计数信息,将所述第四计数信息保存到最优区间搜索暂存区;
计算所述第四计数信息及其相邻数据的计数信息之差,得到第三存储单元计数信息,并保存所述第三存储单元计数信息到最优区间搜索暂存区;比对相邻两个区间的存储单元计数大小;如果本次区间的存储单元计数小于或等于其相邻区间的存储单元计数,则增加或减少该电压阈值对应的读偏移值;重复上述步骤,直到本次区间的存储单元计数大于其相邻区间的存储单元计数,该相邻区间即是所需最优区间。
作为本发明的一种优选方案,所述根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值的方法具体包括:根据不同干扰等级,以及相邻两个区间存储单元计数之差的等级,计算最优读偏移值;所述干扰等级分为弱干扰、中干扰和强干扰。
快速在线查找NAND闪存最优读偏移值的装置,所述装置包括:SLC数据搜索模块、起始值搜索模块、最优区间搜索模块以及最优读偏移搜索模块;
所述SLC数据搜索模块用于查找相应页类型下对应的SLC数据,在后续过程中一次读数并行处理多个电压阈值;
所述起始值搜索模块用于查找相应页类型下各电压阈值所需的读偏移起始值,作为最优区间搜索模块处理的读偏移起始值;
所述最优区间搜索模块用于找到最优区间及最优区间的相邻区间;
所述最优读偏移搜索模块用于根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值。
作为本发明的一种优选方案,所述SLC数据搜索模块包括SLC格式读处理模块、SLC数据信息处理模块、SLC参考信息生成模块以及SLC中央处理模块;
所述SLC格式读处理模块用于向NAND控制器发出SLC格式读命令,从NAND闪存读出SLC数据,并将所述SLC数据发送至所述SLC数据信息处理模块;
所述SLC数据信息处理模块用于统计每次SLC数据中1的计数,记为SLC计数信息;
所述SLC参考信息生成模块用于生成每次SLC比对用的SLC参考区间信息;
所述SLC中央处理模块用于比对所述SLC计数信息和所述SLC参考区间信息,根据比对结果判断所述SLC数据是否是有效的SLC数据,若所述SLC计数信息在所述SLC参考区间信息的范围内,则认定为有效的SLC数据,保存所述SLC数据到SLC数据处理暂存区;若不是,则根据比对结果增加或减少下次SLC读的读偏移值,并由所述SLC格式读处理模块向NAND控制器再次发出SLC格式读命令,重复上述操作,直至找到有效的SLC数据;
首次SLC格式读的读偏移值选择默认读偏移值,后续读偏移值根据所述SLC中央处理模块的处理结果选择指定读偏移值。
作为本发明的一种优选方案,所述起始值搜索模块包括TLC数据读处理模块、起始值搜索数据信息处理模块、起始值搜索参考信息生成模块以及起始值搜索中央处理模块;
所述TLC数据读处理模块用于向NAND控制器发出TLC数据读命令,从NAND闪存读出第一TLC数据,并将所述第一TLC数据发送至所述起始值搜索数据信息处理模块;
所述起始值搜索数据信息处理模块用于将所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计位运算后数据中所需1的计数或0的计数,记为TLC计数信息;
所述起始值搜索参考信息生成模块用于生成比对用的起始值参考区间信息;
所述起始值搜索中央处理模块用于比对所述TLC计数信息和所述起始值参考区间信息,根据比对结果判断页类型每个电压阈值是否找到所需的读偏移起始值,若所述TLC计数信息在所述起始值参考区间信息的范围内,则认定为找到所需的读偏移起始值,保存所述第一TLC数据到起始值搜索暂存区;若不是,则根据比对结果增加或减少该电压阈值对应的读偏移值,并由所述TLC数据读处理模块再次向NAND控制器发出TLC数据读命令,重复上述操作,直至找到每个电压阈值所需的读偏移起始值;
首次TLC数据读命令的读偏移值选择默认读偏移值,后续读偏移值根据所述起始值搜索中央处理模块的处理结果选择指定读偏移值。
作为本发明的一种优选方案,所述最优区间搜索模块包括前置数据信息预处理模块、前置数据信息处理模块、前置参考信息生成模块、前置中央处理A模块、前置中央处理B模块、前置中央处理C模块以及最优区间搜索中央处理模块;
所述前置数据信息预处理模块用于从起始值搜索暂存区取回最后一次的第一TLC数据;
所述前置数据信息处理模块用于将所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,统计位运算后数据中所需1的计数或0的计数,记为第一计数信息,将所述第一计数信息保存至最优区间搜索暂存区;
所述前置参考信息生成模块用于生成比对用的第一参考信息、第二参考信息;
所述前置中央处理A模块用于比对所述第一TLC数据和所述第一参考信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用所述前置中央处理A模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第二TLC数据;前置数据信息处理模块将所述第二TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第二计数信息,将所述第二计数信息保存到最优区间搜索暂存区;
所述前置中央处理B模块用于计算所述第二计数信息及所述第一计数信息之差,得到第一存储单元计数信息,并保存所述第一存储单元计数信息至最优区间搜索暂存区,将所述第二计数信息和所述第二参考信息进行结果比对,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用所述前置中央处理B模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第三TLC数据;前置数据信息处理模块将所述第三TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第三计数信息,将所述第三计数信息保存到最优区间搜索暂存区;
所述前置中央处理C模块用于计算所述第三计数信息及其相邻数据的计数信息之差,得到第二存储单元计数信息,并保存所述第二存储单元计数信息到最优区间搜索暂存区;比对所述第一存储单元计数信息和所述第二存储单元计数信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用所述前置中央处理C模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第四TLC数据;前置数据信息处理模块将所述第四TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第四计数信息,将所述第四计数信息保存到最优区间搜索暂存区;
最优区间搜索中央处理模块用于计算所述第四计数信息及其相邻数据的计数信息之差,得到第三存储单元计数信息,并保存所述第三存储单元计数信息到最优区间搜索暂存区;比对相邻两个区间的存储单元计数大小;如果本次区间的存储单元计数小于或等于其相邻区间的存储单元计数,则增加或减少该电压阈值对应的读偏移值;重复上述操作,直到本次区间的存储单元计数大于其相邻区间的存储单元计数,该相邻区间即是所需最优区间。
作为本发明的一种优选方案,所述最优读偏移搜索模块包括最优值搜索处理模块,所述最优值搜索处理模块用于根据不同干扰等级,以及相邻两个区间存储单元技术之差的等级,计算最优读偏移值;
所述干扰等级分为弱干扰、中干扰和强干扰。
与现有技术相比,本发明的有益效果是:对于拥有多个读电压阈值的页类型,本发明通过SLC数据搜索模块找到合适的SLC数据;通过该SLC数据与TLC数据进行合适的运算,可以在线同时并行查找所需多个电压阈值相应的最优读偏移值;通过起始值搜索模块实现在TLC NAND闪存处于各种不同干扰组合下找到各电压阈值所对应的最优读偏移起始值,避免使用默认读偏移作为读偏移起始值而导致在NAND闪存恶劣条件找到错误的最优读偏移;本发明中的最优读偏移搜索模块根据当前干扰程度以及与最优区间相邻的两个区间之间存储单元计数之差的等级进行微调,可以找到更精确的最优读偏移。本发明采用一次读取并行查找多个电压阈值所对应的最优读偏移,试验证明最多需要10次读操作即可找到最优读偏移,提高了产品的读性能,降低了产品的动态功耗;应用本发明找到的最优读偏移值进行读数可能获得正确解码,则该数据块暂时不需标志为坏块,延长了产品的使用期限。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。其中:
图1为TLC NAND闪存默认情况下数据分布示意图;
图2为TLC NAND闪存存储状态改变后的示意图;
图3为本发明实施例中数据分布示意图;
图4为本发明的方法流程图;
图5为本发明实施例中查找最优区间的方法流程图;
图6为本发明实施例中计算最优读偏移值的方法流程图;
图7为本发明的装置的模块化结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,TLC NAND闪存有三种数据页类型(page type),分别是最低有效位页(LSB page),中间有效位页(CSB page)和最高有效位页(MSB page)。TLC NAND闪存每个存储单元有7个电压阈值,依次表示为Va、Vb、Vc、Vd、Ve、Vf和Vg。这7个电压阈值把每个存储单元分成8种状态,依次表示为P0、P1、P2、P3、P4、P5、P6和P7,对应了其3种数据页类型。
TLC NAND闪存读操作的电压阈值表示为:读操作的电压阈值 = 默认电压阈值 +读偏移值;默认情况下,读偏移值为0。在TLC NAND闪存的状况良好时,即,擦写次数较少、读干扰次数较少以及数据保持时间不长的情况下,其数据分布大致如图1所示,数据没有太多的位翻转。我们只需要用默认读偏移值进行读操作,然后通过LDPC把数据中的少量翻转位纠正过来,就可以得到正确的数据。
随着TLC NAND存储单元的擦写次数增加,读干扰次数增加,以及数据保持时间增加,部分存储单元的状态会发生改变。如图2所示,部分P0状态的存储单元由于大量的读干扰影响,其电压越来越高,超过了默认电压阈值Va。如果这时我们还是采用默认读偏移值进行最低有效位页数据的读操作,会导致读到大量的位翻转。大量的位翻转会降低LDPC的解码速度,降低产品读性能。如果位翻转数量超过LDPC的纠错极限造成纠错失败,该数据所在的块可能被标记为坏块。但如果我们能使用Va_opt作为最低有效位页数据的读操作电压阈值,则可以最大程度减少数据的位翻转。因此,我们需要找到合适的读偏移值,即“Va_opt–Va”的差值,使用该偏移值进行读操作。图2中,默认电压阈值Vb、Vf和Vg也都有较多的位翻转,同样的,我们也需要找到这几个电压阈值相应的最优读偏移值。
通常情况下,TLC NAND闪存厂商会提供一个数据表给用户去尝试多种不同的读偏移值。数据表里的读偏移值是厂商的一些经验值,如表1所示:
表1 数据表
相应电压阈值 Va Vb Vc Vd Ve Vf Vg
条目1 0xFE 0x01 0x03 0xFC 0x05 0x03 0xF8
条目2 0x02 0xFC 0xFD 0x05 0xFE 0x02 0xFC
条目3 0xFD 0xFB 0x07 0x0A 0xFD 0xFC 0x05
条目4 0x0A 0x09 0x04 0xFA 0xFB 0x05 0x0A
条目31 0x06 0xF5 0x0A 0x08 0x04 0xFD 0xFA
数据表包含多个条目,每个条目包含了各个电压阈值所对应的读偏移值。如果LDPC解码失败,则依次按照一定顺序去尝试采用各条目中的读偏移值继续重读数据,直到LDPC解码成功。这种方案的缺点,一是因为读取任何页的数据经常涉及相应多个电压阈值的读偏移组合,很难让多个电压阈值都比较精确地组合到最优偏移值。通常厂商给出的这个数据表也不会太大,也就是说它们的组合有限。二是很难找到特别合适的最优读顺序。TLC NAND闪存处于不同条件时,比如擦写次数,读干扰次数以及数据保持时间的不同组合很可能对应的最优读条目是不一样的。如表1中,如果我们按顺序从条目1到条目31去读,最后发现条目31才可以正确解码。或者如果我们按照从条目31到条目1去读,最后发现条目1才可以正确解码。这会显著影响产品的读写性能。为了解决这个问题,我们提出了快速在线查找NAND闪存最优读偏移值的方法和装置。
如图4-图6所示,为本发明的一个实施例,该实施例提供了快速在线查找NAND闪存最优读偏移值的方法。
编程写入到TLC NAND闪存中的数据必须先经过数据随机化处理,使得每个字线的存储单元尽可能地均匀分布在各个状态。假设某TLC NAND闪存中每个字线总共拥有T个存储单元,其被编程后,每个字线的存储单元(数据)分布大致如图3所示,每种状态大约拥有1/8 T个存储单元,该NAND闪存的LSB page数据和MSB page数据需要两个电压阈值,依次是Va和Ve以及Vc和Vg,而CSB page数据需要三个电压阈值是Vb,Vd和Vf。为了能够同时查找多个电压阈值的最优读偏移值,我们需要SLC读格式的数据。两个电压阈值的页数据需要一笔合适的SLC读格式的数据,三个电压阈值的页数据需要两笔合适的SLC读格式的数据。
快速在线查找NAND闪存最优读偏移值的方法具体包括如下步骤:
S1:查找相应页类型下对应的SLC数据,在后续过程中一次读数并行处理多个电压阈值;
在一个具体的实施例中,S1可以包括以下步骤:
S11:向NAND控制器发出SLC格式读命令,从NAND闪存读出SLC数据;首次SLC格式读的读偏移值选择默认读偏移值,后续读偏移值根据步骤S14的处理结果选择指定读偏移值;
S12:统计每次SLC数据中1的计数,记为SLC计数信息;
S13:生成每次SLC比对用的SLC参考区间信息;
S14:比对SLC计数信息和SLC参考区间信息,根据比对结果判断SLC数据是否是有效的SLC数据,若SLC计数信息在SLC参考区间信息的范围内,则认定为有效的SLC数据,保存SLC数据到SLC数据处理暂存区;若不是,则根据比对结果增加或减少下次SLC读的读偏移值;
重复步骤S11-S14,直至找到有效的SLC数据。
S2:查找相应页类型下各电压阈值所需的读偏移起始值,作为最优区间搜索处理的读偏移起始值;
在一个具体的实施例中,S2可以包括以下步骤:
S21:向NAND控制器发出TLC数据读命令,从NAND闪存读出第一TLC数据;首次TLC数据读的读偏移值选择默认读偏移值,后续读偏移值根据步骤S24的处理结果选择指定读偏移值;
S22:将每次读到的第一TLC数据和SLC数据处理暂存区中的SLC数据进行所需的位运算,并统计位运算后数据中所需1的计数或0的计数,记为TLC计数信息;
因为有了SLC格式的数据信息,所以这里及后续的操作都是基于一次TLC数据读来完成相应页类型下所有电压阈值的数据信息统计及读偏移的调整;
S23:生成每次TLC比对所需的起始值参考区间信息;
S24:比对TLC计数信息和起始值参考区间信息,根据比对结果判断页类型每个电压阈值是否找到所需的读偏移起始值,若TLC计数信息在起始值参考区间信息的范围内,则认定为找到所需的读偏移起始值,保存第一TLC数据到起始值搜索暂存区;若不是,则根据比对结果增加或减少该电压阈值对应的读偏移值;
重复步骤S21-S24,直至找到每个电压阈值所需的读偏移起始值。
S3:找到最优区间及最优区间的相邻区间;
在一个具体的实施例中,S3可以包括以下步骤:
S311:从起始值搜索暂存区取回所需的最后一次的第一TLC数据;
S312:将第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第一计数信息,将第一计数信息保存到最优区间搜索暂存区;
S313:生成比对用的第一参考信息;
S314:比对第一TLC数据和第一参考信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
S321:使用步骤S314中调整的新的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第二TLC数据;
S322:将第二TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第二计数信息,将第二计数信息保存到最优区间搜索暂存区;
S323:生成比对用的第二参考信息;
S324:计算第二计数信息及第一计数信息之差,得到第一存储单元计数信息,并保存第一存储单元计数信息到最优区间搜索暂存区;将第二计数信息和第二参考信息进行结果比对,根据比对结果增加或减少所需电压阈值对应的读偏移值;
S331:使用步骤S324中调整的新的读偏移值,向NAND控制器发出TLC数据读命令,从NAND闪存读出第三TLC数据;
S332:将第三TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第三计数信息,将第三计数信息保存到最优区间搜索暂存区;
S333:计算第三计数信息及其相邻数据的计数信息之差,得到第二存储单元计数信息,其相邻数据的计数信息为第一统计信息或第二统计信息;并保存第二存储单元计数信息到最优区间搜索暂存区;比对第一存储单元计数信息和第二存储单元计数信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
S341:使用步骤S333中调整的新的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第四TLC数据;
S342:将第四TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第四计数信息,将第四计数信息保存到最优区间搜索暂存区;
S343:计算第四计数信息及其相邻数据的计数信息之差,得到第三存储单元计数信息,其相邻数据的计数信息可能为第一计数信息、第二计数信息或第三计数信息;并保存第三存储单元计数信息到最优区间搜索暂存区;比对相邻两个区间的存储单元计数大小,如果本次区间的存储单元计数小于或等于其相邻区间的存储单元计数,则增加或减少该电压阈值对应的读偏移值;
重复步骤S341-S343,直到本次区间的存储单元计数大于其相邻区间的存储单元计数,该相邻区间即是所需最优区间。
S4:根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值;具体包括:根据不同干扰等级,以及相邻两个区间存储单元计数之差的等级,计算最优读偏移值;干扰等级分为弱干扰、中干扰和强干扰。
在一个具体的实施例中,取最优区间中间值作为最优读偏移值,记为opt_offset;若左边区间存储单元计数大于右边区间存储单元计数,则选择最优读偏移右调处理,否则选择最优读偏移左调处理。
左右两边相邻两个区间存储单元计数之差记为diff_cells;划分三个等级参考值,若diff_cells不大于等级1参考值,则取opt_offset作为最终最优读偏移值;若diff_cells大于等级1参考值、不大于等级2参考值,则在opt_offset的基础上,向右(或向左)偏移半个区间大小的50%作为最终最优读偏移值;若diff_cells大于等级2参考值、不大于等级3参考值,则在opt_offset的基础上,向右(或向左)偏移半个区间大小的100%作为最终最优读偏移值;若diff_cells大于等级3参考值,则在opt_offset的基础上,向右(或向左)偏移半个区间大小的125%作为最终最优读偏移值;最终最优读偏移值记为opt_offset_final。
如图7所示,为本发明的另一实施例,该实施例提供了快速在线查找NAND闪存最优读偏移值的装置,具体包括SLC数据搜索模块、起始值搜索模块、最优区间搜索模块以及最优读偏移搜索模块。
SLC数据搜索模块用于查找相应页类型下对应的SLC数据,在后续过程中一次读数并行处理多个电压阈值;SLC数据搜索模块包括SLC格式读处理模块、SLC数据信息处理模块、SLC参考信息生成模块以及SLC中央处理模块;
SLC格式读处理模块用于向NAND控制器发出SLC格式读命令,从NAND闪存读出SLC数据,并将SLC数据发送至SLC数据信息处理模块;
SLC数据信息处理模块用于统计每次SLC数据中1的计数,记为SLC计数信息;
SLC参考信息生成模块用于生成每次SLC比对用的SLC参考区间信息;
SLC中央处理模块用于比对SLC计数信息和SLC参考区间信息,根据比对结果判断SLC数据是否是有效的SLC数据,若SLC计数信息在SLC参考区间信息的范围内,则认定为有效的SLC数据,保存SLC数据到SLC数据处理暂存区;若不是,则根据比对结果增加或减少下次SLC读的读偏移值,并由SLC格式读处理模块向NAND控制器再次发出SLC格式读命令,重复上述操作,直至找到有效的SLC数据;
首次SLC格式读的读偏移值选择默认读偏移值,后续读偏移值根据SLC中央处理模块的处理结果选择指定读偏移值。
起始值搜索模块用于查找相应页类型下各电压阈值所需的读偏移起始值,作为最优区间搜索模块处理的读偏移起始值;起始值搜索模块包括TLC数据读处理模块、起始值搜索数据信息处理模块、起始值搜索参考信息生成模块以及起始值搜索中央处理模块;
TLC数据读处理模块用于向NAND控制器发出TLC数据读命令,从NAND闪存读出第一TLC数据,并将第一TLC数据发送至起始值搜索数据信息处理模块;
起始值搜索数据信息处理模块用于将第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计位运算后数据中所需1的计数或0的计数,记为TLC计数信息;
起始值搜索参考信息生成模块用于生成比对用的起始值参考区间信息;
起始值搜索中央处理模块用于比对TLC计数信息和起始值参考区间信息,根据比对结果判断页类型每个电压阈值是否找到所需的读偏移起始值,若TLC计数信息在起始值参考区间信息的范围内,则认定为找到所需的读偏移起始值,保存第一TLC数据到起始值搜索暂存区;若不是,则根据比对结果增加或减少该电压阈值对应的读偏移值,并由TLC数据读处理模块再次向NAND控制器发出TLC数据读命令,重复上述操作,直至找到每个电压阈值所需的读偏移起始值;
首次TLC数据读命令的读偏移值选择默认读偏移值,后续读偏移值根据起始值搜索中央处理模块的处理结果选择指定读偏移值。
最优区间搜索模块用于找到最优区间及最优区间的相邻区间;最优区间搜索模块包括前置数据信息预处理模块、前置数据信息处理模块、前置参考信息生成模块、前置中央处理A模块、前置中央处理B模块、前置中央处理C模块以及最优区间搜索中央处理模块;
前置数据信息预处理模块用于从起始值搜索暂存区取回最后一次的第一TLC数据;
前置数据信息处理模块用于将第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,统计位运算后数据中所需1的计数或0的计数,记为第一计数信息,将第一计数信息保存至最优区间搜索暂存区;
前置参考信息生成模块用于生成比对用的第一参考信息、第二参考信息;
前置中央处理A模块用于比对第一TLC数据和第一参考信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用前置中央处理A模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第二TLC数据;前置数据信息处理模块将第二TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第二计数信息,将第二计数信息保存到最优区间搜索暂存区;
前置中央处理B模块用于计算第二计数信息及第一计数信息之差,得到第一存储单元计数信息,并保存第一存储单元计数信息至最优区间搜索暂存区,将第二计数信息和第二参考信息进行结果比对,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用前置中央处理B模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第三TLC数据;前置数据信息处理模块将第三TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第三计数信息,将第三计数信息保存到最优区间搜索暂存区;
前置中央处理C模块用于计算第三计数信息及其相邻数据的计数信息之差,得到第二存储单元计数信息,并所述第二存储单元计数信息到最优区间搜索暂存区;比对第一存储单元计数信息和第二存储单元计数信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用前置中央处理C模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第四TLC数据;前置数据信息处理模块将第四TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第四计数信息,将第四计数信息保存到最优区间搜索暂存区;
最优区间搜索中央处理模块用于计算第四计数信息及其相邻数据的计数信息之差,得到第三存储单元计数信息,并保存所述第三存储单元计数信息到最优区间搜索暂存区;
比对相邻两个区间的存储单元计数大小;如果本次区间的存储单元计数小于或等于其相邻区间的存储单元计数,则增加或减少该电压阈值对应的读偏移值;重复上述操作,直到本次区间的存储单元计数大于其相邻区间的存储单元计数,该相邻区间即是所需最优区间。
最优读偏移搜索模块用于根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值;最优读偏移搜索模块包括最优值搜索处理模块,最优值搜索处理模块用于根据不同干扰等级,以及相邻两个区间存储单元技术之差的等级,计算最优读偏移值;干扰等级分为弱干扰、中干扰和强干扰。
以下为对本发明实施例的进一步说明。
该实施例中的SSD硬盘采用BiCS4型号TLC NAND闪存作为存储空间介质。
西部数据BiCS4 TLC NAND闪存的LSB和MSB页类型需要两个电压阈值,所以需要一笔相应的SLC数据,而CSB页类型的需要三个电压阈值,所以需要两笔相应的SLC数据。这里每次调整读偏移值的大小可以具体NAND闪存的试验结果自行定义,目前对于BiCS4 TLCNAND闪存,我们每次调整大小为8。
SLC格式读处理模块向NAND控制器发送Single_State_Read读命令,读回所需SLC数据;SLC数据信息处理模块统计SLC数据中1的计数;
对于LSB页类型,生成参考区间:3/8T±1/32T;
对于CSB页类型,生成参考区间1:3/8T±1/32T,生成参考区间2:5/8T±1/32T;
对于MSB页类型,生成参考区间:5/8T±1/32T;
SLC中央处理模块讲SLC数据中1的计数计数与所需参考区间进行比对,若SLC数据中1的计数小于所需参考区间,则递增或递减下次SLC读的读偏移值,直至找到所需的SLC数据,保存到SLC数据处理暂存区,SLC数据计数器自减1;重复上述步骤,直至查找出所有所需的SLC数据。
同样的,其起始值搜索需要根据不同页类型进行相应处理,每次调整读偏移值的大小可以具体NAND闪存的试验结果自行定义,目前对于BiCS4 TLC NAND闪存,我们每次调整大小为8。
BiCS4 LSB页类型搜索的具体流程如下:
TLC数据读处理模块向NAND控制器发送TLC数据读命令,读回所需TLC数据;
计算Va电压阈值相应的统计信息:将TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为st_count_Va;
计算Ve电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Ve,存储单元总数T减去count1_Ve,得到0的计数,记为st_count_Ve;
生成Va电压阈值所需的比对参考区间:1/8T±1/32T,记为st_ref_Va;
生成Ve电压阈值所需的比对参考区间:5/8T±1/32T,记为st_ref_Ve;
若st_count_Va在st_ref_Va区间范围内,则Va的本次读偏移值是所需起始值,否则判断st_count_Va是否小于st_ref_Va区间范围,若是则递增Va相应的读偏移值,若否则递减Va相应的读偏移值;
若st_count_Ve在st_ref_Ve区间范围内,则Ve的本次读偏移值是所需起始值,否则判断st_count_Ve是否小于st_ref_Ve区间范围,若是则递增Ve相应的读偏移值,若否则递减Ve相应的读偏移值;
直至Va和Ve相应的读偏移值都找到起始值。
BiCS4 MSB页类型搜索的具体流程如下:
TLC数据读处理模块向NAND控制器发送TLC数据读命令,读回所需TLC数据;
计算Vc电压阈值相应的统计信息:将TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为st_count_Vc;
计算Vg电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Vg,存储单元总数T减去count1_Vg,得到0的计数,记为st_count_Vg;
生成Vc电压阈值所需的比对参考区间:3/8T±1/32T,记为st_ref_Vc;
生成Vg电压阈值所需的比对参考区间:7/8T±1/32T,记为st_ref_Vg;
若st_count_Vc在st_ref_Vc区间范围内,则Vc的本次读偏移值是所需起始值,否则判断st_count_Vc是否小于st_ref_Vc区间范围,若是则递增Vc相应的读偏移值,若否则递减Vc相应的读偏移值;
若st_count_Vg在st_ref_Vg区间范围内,则Vg的本次读偏移值是所需起始值,否则判断st_count_Vg是否小于st_ref_Vg区间范围,若是则递增Vg相应的读偏移值,若否则递减Vg相应的读偏移值;
直至Vc和Vg相应的读偏移值都找到起始值。
BiCS4 CSB页类型搜索的具体流程如下:
TLC数据读处理模块向NAND控制器发送TLC数据读命令,读回所需TLC数据;
计算Vb电压阈值相应的统计信息:将TLC数据和SLC数据一进行按位与运算,统计运算后所得数据中1的计数,记为st_count_Vb;
计算Vf电压阈值相应的统计信息:SLC数据二按位取反,结果数据记为slc2_not,TLC数据按位取反,结果数据记为data_not,slc2_not与data_not按位与所得结果数据记为data_Vf,统计data_Vf中1的计数,记为count0_Vf,存储单元总数T减去count0_Vf,得到0的计数,记为st_count_Vf;
计算Vd电压阈值相应的统计信息:SLC数据一按位取反,结果数据记为slc1_not,TLC与slc1_not按位与所得结果数据记为data_Vdf,data_Vdf与data_Vf按位或所得结果数据记为data_Vd;统计data_Vd中1的计数,记为count1_Vd,存储单元总数T减去count1_Vd,得到0的计数,记为st_count_Vd;
生成Vb电压阈值所需的比对参考区间:2/8T±1/32T,记为st_ref_Vb;
生成Vd电压阈值所需的比对参考区间:4/8T±1/32T,记为st_ref_Vd;
生成Vf电压阈值所需的比对参考区间:6/8T±1/32T,记为st_ref_Vf;
若st_count_Vb在st_ref_Vb区间范围内,则Vb的本次读偏移值是所需起始值,否则判断st_count_Vb是否小于st_ref_Vb区间范围,若是则递增Vb相应的读偏移值,若否则递减Vb相应的读偏移值;
若st_count_Vd在st_ref_Vd区间范围内,则Vd的本次读偏移值是所需起始值,否则判断st_count_Vd是否小于st_ref_Vd区间范围,若是则递增Vd相应的读偏移值,若否则递减Vd相应的读偏移值;
若st_count_Vf在st_ref_Vf区间范围内,则Vf的本次读偏移值是所需起始值,否则判断st_count_Vf是否小于st_ref_Vf区间范围,若是则递增Vf相应的读偏移值,若否则递减Vf相应的读偏移值;
直至Vb、Vd和Vf相应的读偏移值都找到起始值。
最优区间搜索同样要根据不同页类型做相应处理,这里每次调整读偏移值的大小可以具体NAND闪存的试验结果自行定义,目前对于BiCS4 TLC NAND闪存,我们每次调整大小为8。
LSB页类型最优区间搜索的具体流程如下:
前置数据信息预处理模块从起始值搜索暂存区取回所需TLC数据;
计算Va电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Va_01;
计算Ve电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Ve,存储单元总数T减去count1_Ve,得到0的计数,记为opt_count_Ve_01;
生成Va电压阈值所需的比对参考区间:1/8T,记为opt_ref_Va;
生成Ve电压阈值所需的比对参考区间:5/8T,记为opt_ref_Ve;
若opt_count_Va_01大于opt_ref_Va,则递减Va相应的读偏移值,若否则递增Va相应的读偏移值;
若opt_count_Ve_01大于opt_ref_Ve,则递增Ve相应的读偏移值,若否则递减Ve相应的读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Va电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Va_02;
计算Ve电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Ve,存储单元总数T减去count1_Ve,得到0的计数,记为opt_count_Ve_02;
生成Va电压阈值所需的比对参考区间:1/8T,记为opt_ref_Va;
生成Ve电压阈值所需的比对参考区间:5/8T,记为opt_ref_Ve;
计算opt_count_Va_02与opt_count_Va_01之差,得到该区间存储单元计数,记为opt_cells_Va_01,并保存到最优区间搜索暂存区;
计算opt_count_Ve_02与opt_count_Ve_01之差,得到该区间存储单元计数,记为opt_cells_Ve_01,并保存到最优区间搜索暂存区;
若opt_count_Va_02更接近opt_ref_Va,则向本次读偏移值相同方向外侧递增(或递减)读偏移值,否则向本次读偏移值相反方向外侧递增(或递减)读偏移值;
若opt_count_Ve_02更接近opt_ref_Ve,则向本次读偏移值相同方向外侧递增(或递减)读偏移值,否则向本次读偏移值相反方向外侧递增(或递减)读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Va电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Va_03;
计算Ve电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Ve,存储单元总数T减去count1_Ve,得到0的计数,记为opt_count_Ve_03;
生成Va电压阈值所需的比对参考区间:1/8T,记为opt_ref_Va;
生成Ve电压阈值所需的比对参考区间:5/8T,记为opt_ref_Ve;
计算opt_count_Va_03与opt_count_Va_01(或opt_count_Va_02)之差,得到该区间存储单元计数,记为opt_cells_Va_02,并保存到最优区间搜索暂存区;
计算opt_count_Ve_03与opt_count_Ve_01(或opt_count_Ve_02)之差,得到该区间存储单元计数,记为opt_cells_Ve_02,并保存到最优区间搜索暂存区;
若opt_cells_Va_02大于opt_cells_Va_01,则向本次读偏移值相反方向外侧递增(或递减)读偏移值,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
若opt_cells_Ve_02大于opt_cells_Ve_01,则向本次读偏移值相反方向外侧递增(或递减)读偏移值,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Va电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Va_04;
计算Ve电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Ve,存储单元总数T减去count1_Ve,得到0的计数,记为opt_count_Ve_04;
计算opt_count_Va_04与相邻读偏移所得统计数据(opt_count_Va_03或opt_count_Va_02或opt_count_Va_01)之差,得到该区间存储单元计数,记为opt_cells_Va_03,并保存到最优区间搜索暂存区;
计算opt_count_Ve_04与相邻读偏移所得统计数据(opt_count_Ve_03或opt_count_Ve_02或opt_count_Ve_01)之差,得到该区间存储单元计数,记为opt_cells_Ve_03,并保存到最优区间搜索暂存区;
若opt_cells_Va_03大于相邻区间的存储单元计数(opt_cells_Va_02或opt_cells_Va_01),则与本区间相邻的区间即是Va的最优区间,保持Va相应的读偏移值不变,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
若opt_cells_Ve_03大于相邻区间的存储单元计数(opt_cells_Ve_02或opt_cells_Ve_01),则与本区间相邻的区间即是Ve的最优区间,保持Ve相应的读偏移值不变,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
直至找到Va和Ve的最优区间。
MSB页类型最优区间搜索的具体流程如下:
前置数据信息预处理模块从起始值搜索暂存区取回所需TLC数据;
计算Vc电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vc_01;
计算Vg电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Vg,存储单元总数T减去count1_Vg,得到0的计数,记为opt_count_Vg_01;
生成Vc电压阈值所需的比对参考区间:3/8T,记为opt_ref_Vc;
生成Vg电压阈值所需的比对参考区间:7/8T,记为opt_ref_Vg;
若opt_count_Vc_01大于opt_ref_Vc,则递减Vc相应的读偏移值,若否则递增Vc相应的读偏移值;
若opt_count_Vg_01大于opt_ref_Vg,则递增Vg相应的读偏移值,若否则递减Vg相应的读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Vc电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vc_02;
计算Vg电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Vg,存储单元总数T减去count1_Vg,得到0的计数,记为opt_count_Vg_02;
生成Vc电压阈值所需的比对参考区间:3/8T,记为opt_ref_Vc;
生成Vg电压阈值所需的比对参考区间:7/8T,记为opt_ref_Vg;
计算opt_count_Vc_02与opt_count_Vc_01之差,得到该区间存储单元计数,记为opt_cells_Vc_01,并保存到最优区间搜索暂存区;
计算opt_count_Vg_02与opt_count_Vg_01之差,得到该区间存储单元计数,记为opt_cells_Vg_01,并保存到最优区间搜索暂存区;
若opt_count_Vc_02更接近opt_ref_Vc,则向本次读偏移值相同方向外侧递增(或递减)读偏移值,否则向本次读偏移值相反方向外侧递增(或递减)读偏移值;
若opt_count_Vg_02更接近opt_ref_Vg,则向本次读偏移值相同方向外侧递增(或递减)读偏移值,否则向本次读偏移值相反方向外侧递增(或递减)读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Vc电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vc_03;
计算Vg电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Vg,存储单元总数T减去count1_Vg,得到0的计数,记为opt_count_Vg_03;
生成Vc电压阈值所需的比对参考区间:3/8T,记为opt_ref_Vc;
生成Vg电压阈值所需的比对参考区间:7/8T,记为opt_ref_Vg;
计算opt_count_Vc_03与opt_count_Vc_01(或opt_count_Vc_02)之差,得到该区间存储单元计数,记为opt_cells_Vc_02,并保存到最优区间搜索暂存区;
计算opt_count_Vg_03与opt_count_Vg_01(或opt_count_Vg_02)之差,得到该区间存储单元计数,记为opt_cells_Vg_02,并保存到最优区间搜索暂存区;
若opt_cells_Vc_02大于opt_cells_Vc_01,则向本次读偏移值相反方向外侧递增(或递减)读偏移值,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
若opt_cells_Vg_02大于opt_cells_Vg_01,则向本次读偏移值相反方向外侧递增(或递减)读偏移值,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Vc电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vc_04;
计算Vg电压阈值相应的统计信息:SLC数据按位取反后,再与TLC数据进行按位与运算,统计运算后所得数据中1的计数,记为count1_Vg,存储单元总数T减去count1_Vg,得到0的计数,记为opt_count_Vg_04;
计算opt_count_Vc_04与相邻读偏移所得统计数据(opt_count_Vc_03或opt_count_Vc_02或opt_count_Vc_01)之差,得到该区间存储单元计数,记为opt_cells_Vc_03,并保存到最优区间搜索暂存区;
计算opt_count_Vg_04与相邻读偏移所得统计数据(opt_count_Vg_03或opt_count_Vg_02或opt_count_Vg_01)之差,得到该区间存储单元计数,记为opt_cells_Vg_03,并保存到最优区间搜索暂存区;
若opt_cells_Vc_03大于相邻区间的存储单元计数(opt_cells_Vc_02或opt_cells_Vc_01),则与本区间相邻的区间即是Vc的最优区间,保持Vc相应的读偏移值不变,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
若opt_cells_Vg_03大于相邻区间的存储单元计数(opt_cells_Vg_02或opt_cells_Vg_01),则与本区间相邻的区间即是Vg的最优区间,保持Vg相应的读偏移值不变,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
直至找到Vc和Vg的最优区间。
CSB页类型最优区间搜索的具体流程如下:
前置数据信息预处理模块从起始值搜索暂存区取回所需TLC数据;
计算Vb电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vb_01;
计算Vf电压阈值相应的统计信息:SLC数据二按位取反,结果数据记为slc2_not,TLC数据按位取反,结果数据记为data_not,slc2_not与data_not按位与所得结果数据记为data_Vf,统计data_Vf中1的计数,记为count0_Vf,存储单元总数T减去count0_Vf,得到0的计数,记为opt_count_Vf_01;
计算Vd电压阈值相应的统计信息:SLC数据一按位取反,结果数据记为slc1_not,TLC数据与slc1_not按位与,记为data_Vdf,data_Vdf与data_Vf按位或所得结果数据记为data_Vd,统计data_Vd中1的计数,记为count1_Vd,存储单元总数T减去count1_Vd,得到0的计数,记为opt_count_Vd_01;
生成Vb电压阈值所需的比对参考区间:2/8T,记为opt_ref_Vb;
生成Vd电压阈值所需的比对参考区间:4/8T,记为opt_ref_Vd;
生成Vf电压阈值所需的比对参考区间:6/8T,记为opt_ref_Vf;
若opt_count_Vb_01大于opt_ref_Vb,则递减Vb相应的读偏移值,若否则递增Vb相应的读偏移值;
若opt_count_Vd_01大于opt_ref_Vd,则递增Vd相应的读偏移值,若否则递减Vd相应的读偏移值;
若opt_count_Vf_01大于opt_ref_Vf,则递增Vf相应的读偏移值,若否则递减Vf相应的读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Vb电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vb_02;
计算Vf电压阈值相应的统计信息:SLC数据二按位取反,结果数据记为slc2_not,TLC数据按位取反,结果数据记为data_not,slc2_not与data_not按位与所得结果数据记为data_Vf,统计data_Vf中1的计数,记为count0_Vf,存储单元总数T减去count0_Vf,得到0的计数,记为opt_count_Vf_02;
计算Vd电压阈值相应的统计信息:SLC数据一按位取反,结果数据记为slc1_not,TLC数据与slc1_not按位与,记为data_Vdf,data_Vdf与data_Vf按位或所得结果数据记为data_Vd,统计data_Vd中1的计数,记为count1_Vd,存储单元总数T减去count1_Vd,得到0的计数,记为opt_count_Vd_02;
生成Vb电压阈值所需的比对参考区间:2/8T,记为opt_ref_Vb;
生成Vd电压阈值所需的比对参考区间:4/8T,记为opt_ref_Vd;
生成Vf电压阈值所需的比对参考区间:6/8T,记为opt_ref_Vf;
计算opt_count_Vb_02与opt_count_Vb_01之差,得到该区间存储单元计数,记为opt_cells_Vb_01,并保存到最优区间暂存区;
计算opt_count_Vd_02与opt_count_Vd_01之差,得到该区间存储单元计数,记为opt_cells_Vd_01,并保存到最优区间暂存区;
计算opt_count_Vf_02与opt_count_Vf_01之差,得到该区间存储单元计数,记为opt_cells_Vf_01,并保存到最优区间暂存区;
若opt_count_Vb_02更接近opt_ref_Vb,则向本次读偏移量相同方向外侧递增(或递减)读偏移值,若否则向本次读偏移量相反方向外侧递增(或递减)读偏移值;
若opt_count_Vd_02更接近opt_ref_Vd,则向本次读偏移量相同方向外侧递增(或递减)读偏移值,若否则向本次读偏移量相反方向外侧递增(或递减)读偏移值;
若opt_count_Vf_02更接近opt_ref_Vf,则向本次读偏移量相同方向外侧递增(或递减)读偏移值,若否则向本次读偏移量相反方向外侧递增(或递减)读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Vb电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vb_03;
计算Vf电压阈值相应的统计信息:SLC数据二按位取反,结果数据记为slc2_not,TLC数据按位取反,结果数据记为data_not,slc2_not与data_not按位与所得结果数据记为data_Vf,统计data_Vf中1的计数,记为count0_Vf,存储单元总数T减去count0_Vf,得到0的计数,记为opt_count_Vf_03;
计算Vd电压阈值相应的统计信息:SLC数据一按位取反,结果数据记为slc1_not,TLC数据与slc1_not按位与,记为data_Vdf,data_Vdf与data_Vf按位或所得结果数据记为data_Vd,统计data_Vd中1的计数,记为count1_Vd,存储单元总数T减去count1_Vd,得到0的计数,记为opt_count_Vd_03;
生成Vb电压阈值所需的比对参考区间:2/8T,记为opt_ref_Vb;
生成Vd电压阈值所需的比对参考区间:4/8T,记为opt_ref_Vd;
生成Vf电压阈值所需的比对参考区间:6/8T,记为opt_ref_Vf;
计算opt_count_Vb_03与opt_count_Vb_01(或opt_count_Vb_02)之差,得到该区间存储单元计数,记为opt_cells_Vb_02,并保存到最优区间暂存区;
计算opt_count_Vd_03与opt_count_Vd_01(或opt_count_Vd_02)之差,得到该区间存储单元计数,记为opt_cells_Vd_02,并保存到最优区间暂存区;
计算opt_count_Vf_03与opt_count_Vf_01(或opt_count_Vf_02)之差,得到该区间存储单元计数,记为opt_cells_Vf_02,并保存到最优区间暂存区;
若opt_cells_Vb_02大于opt_cells_Vb_01,则向本次读偏移量相反方向外侧递增(或递减)读偏移值,若否则向本次读偏移量相同方向外侧递增(或递减)读偏移值;
若opt_cells_Vd_02大于opt_cells_Vd_01,则向本次读偏移量相反方向外侧递增(或递减)读偏移值,若否则向本次读偏移量相同方向外侧递增(或递减)读偏移值;
若opt_cells_Vf_02大于opt_cells_Vf_01,则向本次读偏移量相反方向外侧递增(或递减)读偏移值,若否则向本次读偏移量相同方向外侧递增(或递减)读偏移值。
TLC数据读处理模块发送TLC数据读命令,读回所需TLC数据;
计算Vb电压阈值相应的统计信息:TLC数据和SLC数据进行按位与运算,统计运算后所得数据中1的计数,记为opt_count_Vb_04;
计算Vf电压阈值相应的统计信息:SLC数据二按位取反,结果数据记为slc2_not,TLC数据按位取反,结果数据记为data_not,slc2_not与data_not按位与所得结果数据记为data_Vf,统计data_Vf中1的计数,记为count0_Vf,存储单元总数T减去count0_Vf,得到0的计数,记为opt_count_Vf_04;
计算Vd电压阈值相应的统计信息:SLC数据一按位取反,结果数据记为slc1_not,TLC数据与slc1_not按位与,记为data_Vdf,data_Vdf与data_Vf按位或所得结果数据记为data_Vd,统计data_Vd中1的计数,记为count1_Vd,存储单元总数T减去count1_Vd,得到0的计数,记为opt_count_Vd_04;
计算opt_count_Vb_04与相邻读偏移所得统计数据(opt_count_Vb_03或opt_count_Vb_02或opt_count_Vb_01)之差,得到该区间存储单元计数,记为opt_cells_Vb_03,并保存到最优区间搜索暂存区;
计算opt_count_Vd_04与相邻读偏移所得统计数据(opt_count_Vd_03或opt_count_Vd_02或opt_count_Vd_01)之差,得到该区间存储单元计数,记为opt_cells_Vd_03,并保存到最优区间搜索暂存区;
计算opt_count_Vf_04与相邻读偏移所得统计数据(opt_count_Vf_03或opt_count_Vf_02或opt_count_Vf_01)之差,得到该区间存储单元计数,记为opt_cells_Vf_03,并保存到最优区间搜索暂存区;
若opt_cells_Vb_03大于相邻区间的存储单元计数(opt_cells_Vb_02或opt_cells_Vb_01),则与本区间相邻的区间即是Vb的最优区间,保持Vb相应的读偏移值不变,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
若opt_cells_Vd_03大于相邻区间的存储单元计数(opt_cells_Vd_02或opt_cells_Vd_01),则与本区间相邻的区间即是Vd的最优区间,保持Vd相应的读偏移值不变,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
若opt_cells_Vf_03大于相邻区间的存储单元计数(opt_cells_Vf_02或opt_cells_Vf_01),则与本区间相邻的区间即是Vf的最优区间,保持Vf相应的读偏移值不变,否则向本次读偏移值相同方向外侧递增(或递减)读偏移值;
直至找到Vb、Vd和Vf的最优区间。
最优读偏移搜索模块找到最终的最优读偏移值.为了找到更精确的最优读偏移值,不同的NAND需要根据试验结果调整实际的本模块中控制参数。本实施例中根据试验结果,其相关控制参数采用的实际值如下:
干扰程度控制值有:弱干扰参考值20;中干扰参考值为80;
弱干扰最优搜索处理中的各等级参考值有:等级1参考值为20,等级2参考值为80,等级3参考值为120;
中干扰最优搜索处理中的各等级参考值有:等级1参考值为40,等级2参考值为120,等级3参考值为240;
强干扰最优搜索处理中的各等级参考值有:等级1参考值为80,等级2参考值为200,等级3参考值为320。
综上所述,对于拥有多个读电压阈值的页类型,本发明通过SLC数据搜索模块找到合适的SLC数据;通过该SLC数据与TLC数据进行合适的运算,可以在线同时并行查找所需多个电压阈值相应的最优读偏移值;通过起始值搜索模块实现在TLC NAND闪存处于各种不同干扰组合下找到各电压阈值所对应的最优读偏移起始值,避免使用默认读偏移作为读偏移起始值而导致在NAND闪存恶劣条件找到错误的最优读偏移;本发明中的最优读偏移搜索模块根据当前干扰程度以及与最优区间相邻的两个区间之间存储单元计数之差的等级进行微调,可以找到更精确的最优读偏移。本发明采用一次读取并行查找多个电压阈值所对应的最优读偏移,试验证明最多需要10次读操作即可找到最优读偏移,提高了产品的读性能,降低了产品的动态功耗;应用本发明找到的最优读偏移值进行读数可能获得正确解码,则该数据块暂时不需标志为坏块,延长了产品的使用期限。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (6)

1.在线查找NAND闪存最优读偏移值的方法,其特征在于,所述方法包括:
查找相应页类型下对应的SLC数据;
查找相应页类型下各电压阈值所需的读偏移起始值,作为最优区间搜索处理的读偏移起始值;
找到最优区间及最优区间的相邻区间;
根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值;
所述查找相应页类型下对应的SLC数据的方法具体包括:
向NAND控制器发出SLC格式读命令,从NAND闪存读出SLC数据;
统计每次SLC数据中1的计数,记为SLC计数信息;
生成每次SLC比对用的SLC参考区间信息;
比对所述SLC计数信息和所述SLC参考区间信息,根据比对结果判断所述SLC数据是否是有效的SLC数据,若所述SLC计数信息在所述SLC参考区间信息的范围内,则认定为有效的SLC数据,保存所述SLC数据到SLC数据处理暂存区;若不是,则根据比对结果增加或减少下次SLC读的读偏移值,重复以上操作,直至找到有效的SLC数据;
所述查找相应页类型下各电压阈值所需的读偏移起始值的方法具体包括:
向NAND控制器发出TLC数据读命令,从NAND闪存读出第一TLC数据;
将每次读到的所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计位运算后数据中所需1的计数或0的计数,记为TLC计数信息;
生成每次TLC比对用的起始值参考区间信息;
比对所述TLC计数信息和所述起始值参考区间信息,根据比对结果判断页类型每个电压阈值是否找到所需的读偏移起始值,若所述TLC计数信息在所述起始值参考区间信息的范围内,则认定为找到所需的读偏移起始值,保存所述第一TLC数据到起始值搜索暂存区;若不是,则根据比对结果增加或减少该电压阈值对应的读偏移值,重复以上操作,直至找到每个电压阈值所需的读偏移起始值。
2.根据权利要求1所述的在线查找NAND闪存最优读偏移值的方法,其特征在于,所述找到最优区间及最优区间的相邻区间的方法具体包括:
从起始值搜索暂存区取回最后一次的第一TLC数据;
将所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第一计数信息,将所述第一计数信息保存到最优区间搜索暂存区;
生成比对用的第一参考信息;
比对所述第一TLC数据和所述第一参考信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
使用新的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第二TLC数据;
将所述第二TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第二计数信息,将所述第二计数信息保存到最优区间搜索暂存区;
生成比对用的第二参考信息;
计算所述第二计数信息及所述第一计数信息之差,得到第一存储单元计数信息,并保存所述第一存储单元计数信息到最优区间搜索暂存区;将所述第二计数信息和所述第二参考信息进行结果比对,根据比对结果增加或减少所需电压阈值对应的读偏移值;
使用新的读偏移值,向NAND控制器发出TLC数据读命令,从NAND闪存读出第三TLC数据;
将所述第三TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第三计数信息,将所述第三计数信息保存到最优区间搜索暂存区;
计算所述第三计数信息及其相邻数据的计数信息之差,得到第二存储单元计数信息,并保存所述第二存储单元计数信息到最优区间搜索暂存区;比对所述第一存储单元计数信息和所述第二存储单元计数信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
使用新的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第四TLC数据;将所述第四TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第四计数信息,将所述第四计数信息保存到最优区间搜索暂存区;计算所述第四计数信息及其相邻数据的计数信息之差,得到第三存储单元计数信息,并保存所述第三存储单元计数信息到最优区间搜索暂存区;比对相邻两个区间的存储单元计数大小;如果本次区间的存储单元计数小于或等于其相邻区间的存储单元计数,则增加或减少该电压阈值对应的读偏移值;重复以上步骤,直到本次区间的存储单元计数大于其相邻区间的存储单元计数,该相邻区间即是所需最优区间。
3.根据权利要求2所述的在线查找NAND闪存最优读偏移值的方法,其特征在于,所述根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值的方法具体包括:根据不同干扰等级,以及相邻两个区间存储单元计数之差的等级,计算最优读偏移值;所述干扰等级分为弱干扰、中干扰和强干扰。
4.在线查找NAND闪存最优读偏移值的装置,其特征在于,所述装置包括:SLC数据搜索模块、起始值搜索模块、最优区间搜索模块以及最优读偏移搜索模块;
所述SLC数据搜索模块用于查找相应页类型下对应的SLC数据;
所述起始值搜索模块用于查找相应页类型下各电压阈值所需的读偏移起始值,作为最优区间搜索模块处理的读偏移起始值;
所述最优区间搜索模块用于找到最优区间及最优区间的相邻区间;
所述最优读偏移搜索模块用于根据最优区间及最优区间的相邻区间的计数信息,计算最优读偏移值;
所述SLC数据搜索模块包括SLC格式读处理模块、SLC数据信息处理模块、SLC参考信息生成模块以及SLC中央处理模块;
所述SLC格式读处理模块用于向NAND控制器发出SLC格式读命令,从NAND闪存读出SLC数据,并将所述SLC数据发送至所述SLC数据信息处理模块;
所述SLC数据信息处理模块用于统计每次SLC数据中1的计数,记为SLC计数信息;
所述SLC参考信息生成模块用于生成每次SLC比对用的SLC参考区间信息;
所述SLC中央处理模块用于比对所述SLC计数信息和所述SLC参考区间信息,根据比对结果判断所述SLC数据是否是有效的SLC数据,若所述SLC计数信息在所述SLC参考区间信息的范围内,则认定为有效的SLC数据,保存所述SLC数据到SLC数据处理暂存区;若不是,则根据比对结果增加或减少下次SLC读的读偏移值,并由所述SLC格式读处理模块向NAND控制器再次发出SLC格式读命令,重复以上操作,直至找到有效的SLC数据;
首次SLC格式读的读偏移值选择默认读偏移值,后续读偏移值根据所述SLC中央处理模块的处理结果选择指定读偏移值;
所述起始值搜索模块包括TLC数据读处理模块、起始值搜索数据信息处理模块、起始值搜索参考信息生成模块以及起始值搜索中央处理模块;
所述TLC数据读处理模块用于向NAND控制器发出TLC数据读命令,从NAND闪存读出第一TLC数据,并将所述第一TLC数据发送至所述起始值搜索数据信息处理模块;
所述起始值搜索数据信息处理模块用于将所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计位运算后数据中所需1的计数或0的计数,记为TLC计数信息;
所述起始值搜索参考信息生成模块用于生成比对用的起始值参考区间信息;
所述起始值搜索中央处理模块用于比对所述TLC计数信息和所述起始值参考区间信息,根据比对结果判断页类型每个电压阈值是否找到所需的读偏移起始值,若所述TLC计数信息在所述起始值参考区间信息的范围内,则认定为找到所需的读偏移起始值,保存所述第一TLC数据到起始值搜索暂存区;若不是,则根据比对结果增加或减少该电压阈值对应的读偏移值,并由所述TLC数据读处理模块再次向NAND控制器发出TLC数据读命令,重复以上操作,直至找到每个电压阈值所需的读偏移起始值;
首次TLC数据读命令的读偏移值选择默认读偏移值,后续读偏移值根据所述起始值搜索中央处理模块的处理结果选择指定读偏移值。
5.根据权利要求4所述的在线查找NAND闪存最优读偏移值的装置,其特征在于,所述最优区间搜索模块包括前置数据信息预处理模块、前置数据信息处理模块、前置参考信息生成模块、前置中央处理A模块、前置中央处理B模块、前置中央处理C模块以及最优区间搜索中央处理模块;
所述前置数据信息预处理模块用于从起始值搜索暂存区取回最后一次的第一TLC数据;
所述前置数据信息处理模块用于将所述第一TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,统计位运算后数据中所需1的计数或0的计数,记为第一计数信息,将所述第一计数信息保存至最优区间搜索暂存区;
所述前置参考信息生成模块用于生成比对用的第一参考信息、第二参考信息;
所述前置中央处理A模块用于比对所述第一TLC数据和所述第一参考信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用所述前置中央处理A模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第二TLC数据;前置数据信息处理模块将所述第二TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第二计数信息,将所述第二计数信息保存到最优区间搜索暂存区;
所述前置中央处理B模块用于计算所述第二计数信息及所述第一计数信息之差,得到第一存储单元计数信息,并保存所述第一存储单元计数信息至最优区间搜索暂存区,将所述第二计数信息和所述第二参考信息进行结果比对,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用所述前置中央处理B模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第三TLC数据;前置数据信息处理模块将所述第三TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第三计数信息,将所述第三计数信息保存到最优区间搜索暂存区;
所述前置中央处理C模块用于计算所述第三计数信息及其相邻数据的计数信息之差,得到第二存储单元计数信息,并保存所述第二存储单元计数信息到最优区间搜索暂存区;比对所述第一存储单元计数信息和所述第二存储单元计数信息,根据比对结果增加或减少所需电压阈值对应的读偏移值;
TLC数据读处理模块使用所述前置中央处理C模块调整后的读偏移值向NAND控制器发出TLC数据读命令,从NAND闪存读出第四TLC数据;前置数据信息处理模块将所述第四TLC数据和SLC数据处理暂存区中的SLC数据进行位运算,并统计所需1的计数或0的计数,记为第四计数信息,将所述第四计数信息保存到最优区间搜索暂存区;
最优区间搜索中央处理模块用于计算所述第四计数信息及其相邻数据的计数信息之差,得到第三存储单元计数信息,并保存所述第三存储单元计数信息到最优区间搜索暂存区;比对相邻两个区间的存储单元计数大小;如果本次区间的存储单元计数小于或等于其相邻区间的存储单元计数,则增加或减少该电压阈值对应的读偏移值;重复以上操作,直到本次区间的存储单元计数大于其相邻区间的存储单元计数,该相邻区间即是所需最优区间。
6.根据权利要求5所述的在线查找NAND闪存最优读偏移值的装置,其特征在于,所述最优读偏移搜索模块包括最优值搜索处理模块,所述最优值搜索处理模块用于根据不同干扰等级,以及相邻两个区间存储单元技术之差的等级,计算最优读偏移值;
所述干扰等级分为弱干扰、中干扰和强干扰。
CN202310738379.5A 2023-06-21 2023-06-21 快速在线查找nand闪存最优读偏移值的方法和装置 Active CN116483617B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310738379.5A CN116483617B (zh) 2023-06-21 2023-06-21 快速在线查找nand闪存最优读偏移值的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310738379.5A CN116483617B (zh) 2023-06-21 2023-06-21 快速在线查找nand闪存最优读偏移值的方法和装置

Publications (2)

Publication Number Publication Date
CN116483617A CN116483617A (zh) 2023-07-25
CN116483617B true CN116483617B (zh) 2023-09-05

Family

ID=87212264

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310738379.5A Active CN116483617B (zh) 2023-06-21 2023-06-21 快速在线查找nand闪存最优读偏移值的方法和装置

Country Status (1)

Country Link
CN (1) CN116483617B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117594098B (zh) * 2023-12-22 2024-06-04 国创芯科技(江苏)有限公司 一种tlc最优读电压确定方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108269604A (zh) * 2016-12-30 2018-07-10 西部数据技术公司 用于读取干扰检测以及处理的方法和装置
CN114121107A (zh) * 2021-11-18 2022-03-01 广东工业大学 一种快速确定3d tlc nand闪存读参考电压的方法
CN115295057A (zh) * 2022-09-29 2022-11-04 杭州阿姆科技有限公司 一种快速获取nand最优读取数据的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102050475B1 (ko) * 2013-01-14 2020-01-08 삼성전자주식회사 플래시 메모리, 플래시 메모리 장치 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108269604A (zh) * 2016-12-30 2018-07-10 西部数据技术公司 用于读取干扰检测以及处理的方法和装置
CN114121107A (zh) * 2021-11-18 2022-03-01 广东工业大学 一种快速确定3d tlc nand闪存读参考电压的方法
CN115295057A (zh) * 2022-09-29 2022-11-04 杭州阿姆科技有限公司 一种快速获取nand最优读取数据的方法

Also Published As

Publication number Publication date
CN116483617A (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
US20210257030A1 (en) Method for Reading Data Stored in a Flash Memory According to a Voltage Characteristic and Memory Controller Thereof
US8694715B2 (en) Methods for adaptively programming flash memory devices and flash memory systems incorporating same
CN108052414B (zh) 一种提升ssd工作温度范围的方法及系统
US9141475B2 (en) Methods for tag-grouping of blocks in storage devices
US8576625B1 (en) Decoder parameter estimation using multiple memory reads
CN116483617B (zh) 快速在线查找nand闪存最优读偏移值的方法和装置
US7983082B2 (en) Apparatus and method of multi-bit programming
US8365040B2 (en) Systems and methods for handling immediate data errors in flash memory
US20100146191A1 (en) System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
US10176041B2 (en) Deterministic read retry method for soft LDPC decoding in flash memories
US7979737B2 (en) Method for accessing a Flash memory, and associated memory device and controller thereof
US11301323B2 (en) Customized parameterization of read parameters after a decoding failure for solid state storage devices
WO2009053963A2 (en) Methods for adaptively programming flash memory devices and flash memory systems incorporating same
CN111145820B (zh) 一种数据读取方法及装置、存储介质和设备
CN110473581B (zh) 固态储存装置及其相关控制方法
US11600354B2 (en) Determination of state metrics of memory sub-systems following power events
CN112256193A (zh) 一种提高固态硬盘数据安全性的方法、装置和存储介质
CN111124278A (zh) 一种固态硬盘提高读性能的方法、设备及介质
CN109411002A (zh) 一种数据读取的方法及闪存控制器
CN109669641B (zh) 降低ssd误码率的数据存放方法及装置
CN114530178B (zh) Nand芯片中写入块的读取方法、存储介质及设备
US11776635B2 (en) Method for finding optimum read voltage and flash memory system
CN114267403A (zh) 坏块识别方法、装置、电子设备以及机器可读存储介质
CN114333951A (zh) 一种闪存重读方法和装置
US11361221B2 (en) Method of training artificial intelligence to estimate lifetime of storage device

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
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20230725

Assignee: Suzhou Heyu Finance Leasing Co.,Ltd.

Assignor: Pengti storage technology (Nanjing) Co.,Ltd.

Contract record no.: X2023980046093

Denomination of invention: Method and device for quickly searching for the optimal read offset value of NAND flash memory online

Granted publication date: 20230905

License type: Exclusive License

Record date: 20231110

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method and device for quickly searching for the optimal read offset value of NAND flash memory online

Effective date of registration: 20231116

Granted publication date: 20230905

Pledgee: Suzhou Heyu Finance Leasing Co.,Ltd.

Pledgor: Pengti storage technology (Nanjing) Co.,Ltd.

Registration number: Y2023980065408