一种闪存设备的访问方法、装置和系统与流程

文档序号:12362586阅读:360来源:国知局
一种闪存设备的访问方法、装置和系统与流程

本发明涉及数据存储技术领域,尤其涉及一种闪存设备的访问方法、装置和系统。



背景技术:

闪存设备是一种长寿命的非易失性存储阵列,即使断电其所存储的数据也不会丢失。由于闪存设备的非易失存储特性和高速读写性能,近年来被广泛应用。

在实际应用中,闪存设备的最小存储单位为存储元,而数据在存储元中是以电子的形式存储的,且不同的数据,在存储元中表现为不同的阈值电压Vth;比如,在单阶存储元(SLC,Single-level cell)类型的存储阵列中,每个存储元存储一比特的数据,所存储的数据为0或1;其中,如图1所示,在存储元存储数据1时,其Vth的概率分布如图1中的左边图形所示,而在存储元存储数据0时,其Vth的概率分布如图1中的右边图形所示。在现有技术中,闪存设备的控制器通常采用下述方式,读取存储元中的存储数据:首先获取该存储元的阈值电压Vth,然后将预设的判决电压Vread与该存储元的阈值电压Vth作比较;在判决电压Vread大于存储单元的阈值电压Vth时,确定该存储元存储的数据为“1”;在判决电压Vread小于该存储元的阈值电压Vth时,确定该存储单元存储的数据为“0”。

但是,在实际应用中,由于存储元中的电子会随着时间的推移而泄漏,而在电子泄露后存储元的阈值电压也会向低电压方向偏移,如此,采用上述方法,对于存储数据0的存储元,当其阈值电压Vth偏移到低于预设的判决电压Vread时,将会造成该存储元存储数据的误判;比如,仍参照图1,一存储元所存储的数据为0,其初始Vth为5V,而经过一段时间后,由于该存储元的电子泄露,其阈值电压Vth变为2V,而预设的判决电压Vread为3V,那么此时,如果采用上述方法,由于此时判决电压Vread(3V)大于阈值电压Vth(2V),闪存设备的控制器将会将该存储元所存储的数据误判为1。



技术实现要素:

本发明实施例提供一种闪存设备的访问方法、装置和系统,以减少对闪存设备存储数据的误判。

第一方面,本发明提供一种闪存设备的访问方法,该闪存设备包括控制器和存储阵列,该存储阵列包括特定存储单元和用户存储单元,其中,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压,该方法包括:控制器读取特定存储单元中存储的特定数据,根据读取的特定数据,确定判决电压,以及利用确定的判决电压,读取用户存储单元中存储的用户数据。

在本发明实施例中,预先将存储阵列分为特定存储单元和用户存储单元,且特定存储单元和用户存储单元的存储特性相一致,两者的阈值电压Vth偏移相一致,从而两者所采用的判决电压Vread趋于一致;而本发明实施例中,每当在读取用户存储单元中的用户数据时,所述控制器读取特定存储单元中存储的特定数据,且根据所读取的特定数据,确定判决电压Vread,最后,利用确定的判决电压Vread,读取用户存储单元中存储的所述用户数据;由于特定存储单元和用户存储单元的阈值电压Vth偏移趋于一致,因此,利用在特定存储单元中确定的判决电压Vread对用户存储单元的存储数据进行读取,可减少由于阈值电压Vth的偏移,而造成的存储数据的误判。

结合第一方面,在第一种可能的实现方式中,控制器读取特定存储单元中存储的特定数据,包括:控制器获取特定存储单元的当前阈值电压、比较预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据。在本发明实施例中,可获取特定存储单元中所存储的特定数据。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,控制器根据读取的特定数据,确定判决电压,包括:控制器计算确定的特定数据的误码率,在误码率小于预设阈值时,将预设判决电压作为确定的判决电压。

在本发明实施例中,可获取误码率小于预设阈值的特定数据,然后,利用误码率小于预设阈值的特定数据所对应的判决电压Vread,在用户存储单元中读取用户数据,可使得所读取的用户数据的误码率也小于预设阈值,从而减少对存储数据的误判。

结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,预设判决电压有至少两个;控制器比较预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据,包括:控制器比较每个预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据;控制器根据读取的特定数据,确定判决电压,包括:控制器计算根据每个预设判决确定的特定数据的误码率,选择误码率最小的确定的特定数据对应的预设判决电压作为确定的判决电压。

在本发明实施例中,利用误码率最小的特定数据所对应的判决电压,在用户存储单元中读取用户数据,可使所读取的用户数据的误码率也最小,从而减少对存储数据的误判。

结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,控制器计算确定的特定数据的误码率包括:控制器比较确定的特定数据和记录的原始特定数据,获得确定的特定数据的误码率。在本发明实施例中,可确定特定数据的误码率。

结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第五种可能的实现方式中,上述方法还包括:控制器根据用户存储单元的磨损特性对特定存储单元进行磨损操作,以使特定存储单元和用户存储单元的磨损特性相一致。在本发明实施例中,可使特定存储单元和用户存储单元的磨损特性相一致。

结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第六种可能的实现方式中,上述方法还包括:控制器在将用户数据写入至用户存储单元时,同步将特定数据重新写入至特定存储单元,以使得特定存储单元和用户存储单元存储数据的时长特性相一致。在本发明实施例中,可使特定存储单元和用户存储单元存储数据的时长特性相一致。

第二方面,本发明提供一种闪存设备的访问方法,该闪存设备包括控制器和存储阵列,该存储阵列包括特定存储单元和用户存储单元,其中,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压,该方法包括:控制器获取特定存储单元的当前阈值电压,以及原始阈值电压,根据特定存储单元的当前阈值电压和原始阈值电压,确定判决电压,以及利用确定的判决电压,读取用户存储单元中存储的用户数据,其中,原始阈值电压为写入特定数据时特定存储单元的阈值电压。

由上可见,在本发明实施例中,采用上述方法,可根据存储单元阈值电压Vth的实时偏移情况,确定判决电压Vread,从而可减少对存储单元存储数据的误判。

第三方面,本发明提供一种闪存设备的访问装置,闪存设备至少包括存储阵列,该存储阵列包括特定存储单元和用户存储单元,其中,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压,该装置包括:读取单元和确定单元,其中,读取单元,用于读取特定存储单元中存储的特定数据以及利用确定的判决电压,读取用户存储单元中存储的用户数据,确定单元,用于根据读取的特定数据,确定判决电压。采用本发明的装置,可减少对存储单元存储数据的误判。

结合第三方面,在第一种可能的实现方式中,读取单元在读取特定存储单元中存储的特定数据时,具体用于:获取特定存储单元的当前阈值电压、比较预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据。在本发明实施例中,可在存储单元中确定特定数据。

结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,确定单元,具体用于:计算确定的特定数据的误码率,且在误码率小于预设阈值时,将预设判决电压作为确定的判决电压。

在本发明实施例中,可获取误码率小于预设阈值的特定数据,然后,利用误码率小于预设阈值的特定数据所对应的判决电压Vread,在用户存储单元中读取用户数据,从而使所读取的用户数据的误码率也小于预设阈值,进而减少对存储数据的误判。

结合第三方面的第一种可能的实现方式,在第三种可能的实现方式中,预设判决电压有至少两个,读取单元在读取特定存储单元中存储的特定数据时,具体用于:比较每个预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据;确定单元,具体用于:计算根据每个预设判决确定的特定数据的误码率、选择误码率最小的确定的特定数据对应的预设判决电压作为确定的判决电压。

在本发明实施例中,利用误码率最小的特定数据所对应的判决电压,在用户存储单元中读取用户数据,可使所读取的用户数据的误码率也最小,从而减少对存储数据的误判。

结合第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,在第四种可能的实现方式中,确定单元在计算确定的特定数据的误码率时,具体用于:比较确定的特定数据和记录的原始特定数据,获得确定的特定数据的误码率。在本发明实施例中,可确定特定数据的误码率。

结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式或第三方面的第四种可能的实现方式,在第五种可能的实现方式中,该装置还包括:磨损单元,用于根据用户存储单元的磨损特性对特定存储单元进行磨损操作,以使特定存储单元和用户存储单元的磨损特性相一致。在本发明实施例中,可使得特定存储单元和用户存储单元的磨损特性相一致。

结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式或第三方面的第四种可能的实现方式,在第六种可能的实现方式中,该装置还包括:重写入单元,用于在将用户数据写入至用户存储单元时,同步将特定数据重新写入至特定存储单元,以使得特定存储单元和用户存储单元存储数据的时长特性相一致。在本发明实施例中,可使得特定存储单元和用户存储单元存储数据的时长特性相一致。

第四方面,本发明提供一种闪存设备的访问装置,该闪存设备包括存储阵列,该存储阵列包括特定存储单元和用户存储单元,其中,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压,该装置包括:获取单元、判决电压确定单元和用户数据读取单元,其中,获取单元,用于获取特定存储单元的当前阈值电压,以及原始阈值电压,原始阈值电压为写入特定数据时特定存储单元的阈值电压;判决电压确定单元,用于根据特定存储单元的当前阈值电压和原始阈值电压,确定判决电压;用户数据读取单元,用于利用确定的判决电压,读取用户存储单元中存储的用户数据。

由上可见,在本发明实施例中,采用上述方法,可根据存储单元阈值电压Vth的实时偏移情况,确定判决电压Vread,从而减少对存储单元存储数据的误判。

第五方面,本发明提供一种闪存设备的访问系统,该系统包括第三方面提供的闪存设备的访问装置和存储阵列;该存储阵列包括特定存储单元和用户存储单元,其中,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压;该闪存设备的访问装置具体用于:读取特定存储单元中存储的特定数据,根据读取的特定数据,确定判决电压以及利用确定的判决电压,读取用户存储单元中存储的用户数据;

或,该系统包括第四方面提供的闪存设备的访问装置和存储阵列;该存储阵列包括特定存储单元和用户存储单元,其中,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压;闪存设备的访问装置具体用于:获取特定存储单元的当前阈值电压,以及原始阈值电压,其中,原始阈值电压为写入特定数据时特定存储单元的阈值电压,根据特定存储单元的当前阈值电压和原始阈值电压,确定判决电压,以及利用确定的判决电压,读取用户存储单元中存储的用户数据。采用本发明的系统,可减少对存储数据的误判。

第六方面,本发明提供一种可读介质,包括执行指令,当存储控制器的处理器执行执行指令时,存储控制器执行第一方面提供的方法或第二方面提供的方法。采用本发明的可读介质,可减少对存储数据的误判。

第七方面,提供一种存储控制器,该存储控制器包括:处理器、存储器和总线;其中,存储器用于存储执行指令,处理器与存储器通过总线连接,当存储控制器运行时,处理器执行存储器存储的执行指令,以使存储控制器执行第一方面提供的方法或第二方面提供的方法。采用本发明的存储控制器,可减少对存储数据的误判。

由上可见,在本发明实施例中,预先将存储阵列分为特定存储单元和用户存储单元,且特定存储单元和用户存储单元的存储特性相一致,两者的阈值电压Vth偏移相一致,从而两者所采用的判决电压Vread趋于一致;而本发明实施例中,每当在读取用户存储单元中的用户数据时,控制器读取特定存储单元中存储的特定数据,且根据所读取的特定数据,确定判决电压Vread,最后,利用确定的判决电压Vread,读取用户存储单元中存储的用户数据;由于特定存储单元和用户存储单元的阈值电压Vth偏移趋于一致,因此,利用在特定存储单元中确定的判决电压Vread对用户存储单元的存储数据进行读取,可减少由于阈值电压Vth的偏移,而造成的对闪存设备存储数据的误判。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的闪存设备阈值电压的概率分布示意图;

图2为本发明实施例提供的闪存设备的访问方法的一流程示意图;

图3为本发明实施例提供的SSD的结构示意图;

图4为本发明实施例提供的判决电压的调整示意图;

图5为本发明实施例提供的确定判决电压的示意图;

图6为本发明实施例提供的闪存设备的访问方法的另一流程示意图;

图7为本发明实施例提供的闪存设备的访问方法的又一流程示意图;

图8为本发明实施例提供的闪存设备的访问方法的另一流程示意图;

图9为本发明实施例提供的闪存设备的访问方法的又一流程示意图;

图10为本发明实施例提供的闪存设备的访问装置的一结构示意图;

图11为本发明实施例提供的闪存设备的访问系统的一结构示意图;

图12为本发明实施例提供的闪存设备的一结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。

本发明首先提供一种闪存设备的访问方法,该方法的应用场景如下:

目前,闪存设备主要由两部分构成,分别为控制器和存储阵列,且存储阵列的最小存储单位为存储元;通常,采用下述方法,读取存储元中存储的数据:首先获取存储元的阈值电压Vth,然后将预设的判决电压Vread与存储元的阈值电压Vth作比较;以单阶存储元(SLC,Single-level cell)进行举例说明,SLC是指只记录一位二进制比特位“0”或“1”的存储元,如果判决电压Vread大于存储元的阈值电压Vth,确定该存储元所存储的数据为“1”;如果判决电压Vread小于存储元的阈值电压Vth,确定存储元所存储的数据为“0”。

由于在实际应用中,数据在存储元中是以电子的形式存在的,而随着时间的推移,存储元中的电子会泄露,阈值电压Vth会向低电压方向偏移,而在现有技术中,存储阵列以预设的判决电压Vread读取存储数据,将会导致存储元存储数据的误判。比如,一存储元所存储的数据为“0”,其初始阈值电压Vth为5V,而经过一段时间后,由于该存储单元的电子泄露,其阈值电压Vth变为2V,而预设的判决电压Vread为3V,那么此时,如果采用上述方法,由于此时判决电压Vread(3V)大于阈值电压Vth(2V),会将该存储元所存储的数据误判为“1”。

应理解,为了描述方便,本发明实施例仅仅以单阶存储元进行举例说明,但本发明实施例适用多阶存储元(MLC,Multi-level cell),MLC是指可以记录两位或者两位以上的二进制比特位的存储元。

实施例一

基于上述应用场景,本发明提供一种闪存设备的访问方法,闪存设备可具体为U盘(USB闪存盘,USB flash disk)和SSD(Solid State Drives,固态硬盘)等设备,闪存设备可具体由控制器和存储阵列组成,控制器的功能可具体由控制芯片实现,存储阵列的功能可具体由存储芯片实现,存储芯片为Flash芯片,Flash类型的芯片可具体为Nand flash芯片;而本发明提供的闪存设备的访问方法,如图2所示,可具体包括以下步骤:

步骤S21:首先将存储阵列分为特定存储单元和用户存储单元;

其中,特定存储单元具体用于存储特定数据,用户存储单元具体用于存储用户数据,特定数据具体用于确定读取用户数据的判决电压Vread,在本发明实施例中,特定数据可具体为N比特位的二进制数据,特定数据是计算机系统预知的数据,例如,特定数据可以是一个预设的二进制数列,或者计算机系统将特定数据备份在安全性能较高的存储设备中,其中N为大于0的正整数,在以下实施例不再赘述。

在本发明实施例中,如图3所示,闪存设备的存储阵列可具体包括多个物理块(Block),而每个物理块可包括多个页面(Page),每个页面包括多个存储元。在实际应用中,SSD具体以物理块为单位对存储的数据进行擦除的,SSD具体以页面为单位对存储数据进行读写的。为了方便对特定存储单元存储的特定数据进行擦除操作,可具体在存储阵列的中预留一部分物理块,该物理块中的存储元用于存储特定数据,也即上述特定存储单元可具体包括预留物理块内的一个或多个存储元,而该存储阵列的剩余物理块用于存储用户数据,也即上述用户存储单元可具体包括剩余物理块内的一个或多个存储元。在本发明实施例中,可具体设置存储阵列中0.5%的物理块,用于存储特定数据,99.5%的物理块,用于存储用户数据;

步骤S22:使得特定存储单元和用户存储单元的存储特性相一致;

在本发明实施例中,由于决定存储元的阈值电压Vth偏移的主要因素为存储元的磨损特性,也即PE(Program/Erase cycle,擦写次数),和数据的存储时长(Retention)特性;在本发明实施例中,可具体采用以下方式,确保特定存储单元和用户存储单元的磨损特性以及存储数据的时长特性相一致:

应理解,因为闪存设备以物理块为单位进行擦除操作,且不同物理的PE次数可能不相同,可以将存储用户数据的物理块分为多个用户存储单元,每个用户存储单元分别有一个特定存储单元与其相对应,即用户存储单元和特定存储单元都可以分别有多个,用户存储单元与特定存储单元存在对应关系,相互对应的用户存储单元和特定存储单元的存储特性相一致。且用户存储单元与特定存储之间的对应关系可以动态调整。为了介绍方便,除非另有说明,以下描述中的用户存储单元与特定存储单元相互对应。

控制器根据用户存储单元的磨损特性对特定存储单元进行磨损操作,以使特定存储单元和用户存储单元的磨损特性相一致,磨损操作包括对特定存储单元所存储的特定数据擦除的操作以及将特定数据重新写入特定存储单元的操作。

可选的,控制器可每间隔预设时长,获取一次用户存储单元的擦写次数;擦写次数可具体为用户存储单元被擦除存储数据的次数;用户存储单元可具体记录自身的擦写次数,具体可当每次用户存储单元被擦除一次数据时,计数增加1;而在控制器获取上述擦写次数后;控制器对特定存储单元进行同样次数的擦写操作;比如,控制器获取的擦写次数为M,控制器可具体对特定存储单元存储的特定数据进行M次擦除操作,然后再将特定数据写入至特定存储单元,其中M为大于0的正整数。

可选的,控制器还可每当检测到用户存储单元被执行擦除和写入的操作时,对特定存储单元执行一次擦除和写入的操作。具体的,控制器可每当检测到用户存储单元存储的数据被擦除,写入新的数据时,控制器擦除特定存储单元存储的特定数据,然后再将特定数据重新写入至特定存储单元。

控制器在将用户数据写入至用户存储单元时,同步将特定数据重新写入至特定存储单元,以使得特定存储单元和用户存储单元存储数据的时长特性相一致。

可选的,因为在擦除操作前,闪存设备的存储元不能进行重写操作,控制器可具体预先为每个用户存储单元分配多个特定存储单元,在每当用户数据写入至用户存储单元时,将特定数据重新写入一新的特定存储单元。比如,为一用户存储单元分配三个特定存储单元,分别为第一存储单元、第二存储单元和第三存储单元,可具体在闪存设备出厂时,在第一特定存储单元写入特定数据,而在该用户存储单元写入数据时,读取第一特定存储单元写入的特定数据,然后同步写入特定数据至第二特定存储单元,从而使得第二特定存储单元的存储数据的时长特性与用户存储单元存储数据的时长特性相一致。

可选的,控制器还可每当用户数据写入用户存储单元时,对特定存储单元进行充电,从而可弥补由于存储时长不同造成的特定存储单元的电子泄露,从而使得两者的初始阈值电压Vth相一致。

步骤S23:控制器在特定存储单元中写入特定数据;

步骤S24:每当在读取用户存储单元中的用户数据时,控制器读取特定存储单元中存储的特定数据;

步骤S25:控制器根据所读取的特定数据,确定判决电压Vread;

步骤S26:控制器利用确定的判决电压Vread,读取用户存储单元中存储的用户数据。

由上可见,在本发明实施例中,预先将存储阵列分为特定存储单元和用户存储单元,且特定存储单元和用户存储单元的存储特性相一致,两者的阈值电压Vth偏移相一致,从而两者所采用的判决电压Vread趋于一致;而本发明实施例中,每当在读取用户存储单元中的用户数据时,控制器读取特定存储单元中存储的特定数据,且根据所读取的特定数据,确定判决电压Vread,最后,利用确定的判决电压Vread,读取用户存储单元中存储的用户数据;由于特定存储单元和用户存储单元的阈值电压Vth偏移趋于一致,因此,利用在特定存储单元中确定的判决电压Vread对用户存储单元的存储数据进行读取,可减少由于阈值电压Vth的偏移,而造成的存储数据的误判。

实施例二

在本发明实施例中,上述实施例一中的步骤S24“控制器读取特定存储单元中存储的特定数据”可具体为:控制器获取特定存储单元的当前阈值电压Vth;控制器比较预设判决电压Vread与特定存储单元的当前阈值电压Vth,确定特定存储单元中存储的特定数据。在本发明实施例中,特定存储单元可以包含多个存储元,上述获取的阈值电压Vth也可具体为获取多个存储元的阈值电压Vth;仍如前,对于SLC类型的闪存设备,可具体在预设的判决电压Vread大于特定存储单元中存储元的当前阈值电压Vth时,确定特定存储单元的存储元所存储的数据为“1”;在预设的判决电压Vread小于特定存储单元中存储元的当前阈值电压Vth时,确定特定存储单元的存储元所存储的数据为“0”。

相应的,实施例一中的步骤S25“控制器根据所读取的特定数据,确定判决电压Vread”可具体包括:控制器计算在特定存储单元中所确定的特定数据的误码率;若所确定特定数据的误码率小于预设阈值,将预设判决电压Vread作为确定的判决电压Vread;若所确定特定数据的误码率大于等于预设阈值,控制器则调整预设的判决电压Vread,且利用调整后的判决电压Vread重新确定特定存储单元中的特定数据,计算重新确定的特定数据的误码率,循环上述过程,直至所确定的特定数据的误码率小于预设阈值为止。

具体的,如图6所示,确定判决电压的过程可具体包括:

步骤S61:控制器比较在特定存储单元中所确定的特定数据和记录的原始特定数据,获得在特定存储单元中所确定的特定数据的误码率;

可选的,控制器可在预设存储介质中记录原始特定数据,具体如下:控制器在写入特定数据至特定存储单元时,可同步将特定数据写入预设存储介质内,预设存储介质存储数据的可靠性要高于特定存储单元存储数据的可靠性;在本发明实例中,预设存储介质可具体位于闪存设备的内部也可位于闪存设备的外部;当位于闪存设备的内部时,在闪存设备的控制器上具体有用于存储程序指令的存储介质,该存储介质的可靠性要高于存储单元存储数据的可靠性,因此,可具体将特定数据存储于闪存设备控制器上的存储介质内,该存储介质可具体为NOR flash类型的存储芯片;而NOR flash类型的存储芯片的可靠性要高于闪存设备存储阵列通常所用的Nand flash类型的芯片。在本发明实施例中,控制器可具体在预设存储介质中获取原始特定数据。

可选的,控制器还可在程序指令中记录原始特定数据,具体的:可预先在程序指令中直接记录原始特定数据,因此控制器还在直接在程序指令中获取原始特定数据。

比如,假设所记录的原始特定数据为00000,而经过一段时间后,由于特定存储单元的阈值电压Vth偏移,控制器利用预设的判决电压Vread,将特定存储单元中存储的数据误判为00011,也即控制器从特定存储单元中所读取出的特定数据为00011,此时,控制器可将上述两个特定数据,00011和00000进行比较,可确定上述两个特定数据有2个比特位不同,而特定数据共有5个比特位,因此可确定在特定存储单元中所读取的特定数据的误码率为2/5=40%。

步骤S62:控制器判断特定数据的误码率是否低于预设阈值,如果是,执行步骤S63;如果否,执行步骤S64;

具体的,用户可自行设置预设阈值的大小。

步骤S63:控制器将当前判决电压Vread作为确定的判决电压Vread;

步骤S64:控制器调整预设的判决电压Vread,且利用调整后的判决电压Vread在特定存储单元中重新读取特定数据,然后返回执行步骤S61;直至获取误码率小于预设阈值的特定数据为止。

关于如何利用调整后的判决电压Vread读取特定数据的方法,可参见上述利用预设的判决电压Vread读取特定数据的方式。

由上可见,在本发明实施例中,可获取误码率小于预设阈值的特定数据,然后,利用误码率小于预设阈值的特定数据所对应的判决电压Vread,在用户存储单元所读取用户数据,可使所读取的用户数据的误码率也小于预设阈值,从而减少存储数据的误判。

可选的,预设判决电压有至少两个,上述控制器比较预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据,可具体为:控制器比较每个预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据;实施例一中的步骤S25“控制器根据所读取的特定数据,确定判决电压Vread”还可具体为:控制器计算根据每个预设判决电压Vread确定的特定数据的误码率;控制器选择误码率最小的确定的特定数据对应的预设判决电压Vread作为确定的判决电压Vread;

具体的,如图7所示,确定判决电压的过程可具体包括:

步骤S71:控制器获取当前在存储单元中所确定的特定数据的误码率;

关于如何计算特定数据的误码率,可具体参见上述记载。

步骤S72:控制器调整预设的判决电压Vread,且利用调整后的判决电压Vread,重新在特定存储单元中确定特定数据;

由于存储单元的电子泄露,仅仅会导致存储单元的阈值电压Vth向低电压方向偏移,因此,可仅将判决电压Vread向低电压方向调整即可;比如,可一次将存储阵列的判决电压Vread向低电压方向调整一个步长,步长可具体为10mv;再如,闪存设备原始的预设判决电压Vread为50mv,那么经过一次调整后,判决电压Vread可变为40mv,且控制器再利用40mV的判决电压Vread重新在特定存储单元中读取特定数据,同理,对于SLC类型的闪存设备,可具体将40mv的判决电压Vread与特定存储单元的阈值电压Vth进行比较,当判决电压Vread大于当前阈值电压Vth时,确定特定存储单元所存储的数据为“1”,否则,确定特定存储单元所存储的数据为“0”。

步骤S73:控制器判断判决电压Vread的调整是否达至预设值,如果达到,执行步骤S74;如果未达到,返回执行步骤S71;

具体的,控制器可判断判决电压Vread的调整的总步长是否达至预设值,预设值可具体为500mv-600mv;假设,判决电压Vread一次调节一个步长,一个步长10mv,那么采用上述方法,判决电压Vread仅能调节50-60次。

在本发明实施例中,仍沿上述举例,在判决电压Vread的调节未达至预设值时,控制器将利用调节后的判决电压Vread继续在特定存储单元中读取特定数据,假设所读取的特定数据为00001,计算重新读取特定数据的误码率,将最新读取的特定数据00001和记录的原始特定数据00000进行比较,确定两者有一比特位不同,因此,可确定最新读取特定数据的误码率=1/5=20%。

步骤S74:控制器将最小误码率的特定数据所对应的判决电压作为确定的判决电压;

通过上述论述可知,控制器通过调节判决电压Vread,可获取利用不同判决电压Vread所读取的特定数据,进而可获取上述不同特定数据的误码率,在本发明实施例中,可具体从上述特定数据中,选择误码率最小的特定数据,且获取误码率最小的特定数据所对应的判决电压Vread;最后,利用最小误码率的特定数据所对应的判决电压Vread读取用户存储单元中的用户数据。

在本发明实施例中,利用误码率最小的特定数据所对应的判决电压Vread,在用户存储单元所读取用户数据,也可使所读取的用户数据的误码率最小,从而减少存储数据的误判。

实施例三

本发明还提供另一种闪存设备的访问方法,该方法可具体应用于固态硬盘SSD中,该方法具体如下:

首先预先为SSD存储阵列中的每个物理块均分配一BIT(Block Info Table,物理块信息表),该表中可记录每个物理块的PE(擦写)次数、存储时长(Retention)以及读取次数等信息;然后设置一Calibration Table(校准表),该表以PE、Retention、读次数以及环境温度作为索引,存储SSD存储阵列的判决电压Vread的偏移值;其中,BIT以及Calibration Table可具体存储在SSD控制器的存储介质中。

在本发明实施例中,为了使SSD具有一定纠错能力,一般对写入SSD的数据进行ECC(Error Correcting Code,错误检查和纠正)编码,因此,在控制器获取存储阵列读取的数据后,还需再对数据进行ECC解码;

具体的,在本发明实施例中,SSD控制器的功能可具体由DSP(Digital Signal Processing,数字信号处理)单元和ECC解码单元实现;当控制器要读取存储阵列的数据时,SSD控制器中的DSP单元可首先获取环境的温度信息,SSD内设置有温度传感器,可采集SSD所处环境的温度;然后,确定需读取数据的物理块,以及确定当前物理块的BIT,从BIT中获取该物理块的PE、Retention、读取次数等信息,最后根据所获取的环境温度、PE、Retention以及读取次数等信息,在Calibration Table中查询存储阵列判决电压的偏移量;再然后,控制器通过Read Retry/Read Offset等命令调整存储阵列的判决电压;存储阵列利用调整后的判决电压,读取存储单元内部的数据;最后,SSD控制器的ECC解码单元对所读取的数据进行ECC解码,以对读取的数据进行纠错;整个流程可参见图8所示。

由于采用上述方法,在SSD下电后,SSD内部的温度传感器以及控制器均处于power down掉电状态,这些器件均无法运行,那么相应的SSD的控制器也就无法记录下电的时长,以及温度的变化情况。因此,在SSD再次上电后,并无法获取下电期间的温度信息以及存储时长(Retention)等信息;由于上述两关键参数信息无法获知,将导致在Calibration Table中查询出的判决电压的偏移值并不准确,最终造成利用该偏移值读取的数据的误码率偏大。在实际应用中,申请人发现,在SSD长时间下电,再次上电后,所读取的数据将超过ECC的纠错能力,将导致无法获取准确的存储数据。

实施例四

本发明提供另一种闪存设备的访问方法,同样该方法可具体应用于SSD固态硬盘中长时间下电,且重新上电的情况,如图9所示,该方法具体如下:

步骤S91:首先分配存储阵列中的一部分物理块,用于存储特定数据,这些物理块不用于存储用户数据;存储阵列的剩余物理块仍然用于存储用户数据;

具体为,为了方便进行区别不同功能的物理块,可将用于存储特定数据的物理块,称为参数块,将用于存储用户数据的物理块,称为数据块;SSD的存储阵列可包括多个flash芯片,可具体在每个flash芯片中分配0.5%的物理块作为参考块,剩余的99.5%的参数块作为数据块;

步骤S92:SSD的控制器对参考块进行擦写磨损,以保持参考块的擦写次数与数据块的擦写次数相一致。

在实际应用中,SSD在写入数据时,会进行全盘磨损均衡,即在本发明中,假设SSD中有三个数据块,分别为第一数据块,第二数据块和第三数据块,那么,在写入数据时,SSD的控制器会依次在第一数据块、第二数据块和第三数据块中写入数据,而在擦除数据时,SSD的控制器也是依次擦除第一数据块、第二数据块和第三数据块内的存储数据,从而使得数据块的擦写次数趋于一致。而关于如何对参考块进行擦写磨损,可具体参见实施例一的论述,在此不再赘述。

步骤S93:SSD的控制器在参考块中写入特定数据,以及在高可靠性存储介质中写入特定数据;其中,高可靠性存储介质可具体为NOR Flash芯片中的存储介质。

其中,特定数据在写入参考块时,需进行加扰,无需进行ECC编码;而实际写入SSD中的用户数据,需同时进行加扰和ECC编码,而特定数据和用户数据的加扰方式相同;在本发明中可具体将原始特定数据或原始用户数据与白噪声随机序列进行异或操作,从而得到加扰的特定数据,或加扰的用户数据;在现有技术中,白噪声随机序列可具体由LFSR(Linear Feedback Shift Register,线性反馈移位寄存器)产生,以Page号码作为该LFSR的初始值。而关于对用户数据进行的ECC编码可具体参见实施例四的论述,在此不再赘述。

需要说明的是,对特定数据和用户数据进行加扰,主要是为了降低flash芯片的ICI(Inter-Cell Interference,存储单元间干扰)效应,ICI效应是指在flash芯片中不同存储单元之间存储数据相互干扰的现象;与上述进行数据加扰相应的,在存储阵列读取加扰的特定数据或加扰的用户数据后,还需对数据进行解扰,解扰的过程,可具体为:将加扰的特定数据或加扰的用户数据再次与白噪声随机序列进行异或操作,获得原始的特定数据或原始的用户数据。

在SSD长时间下电,且重新上电后:

步骤S94:,SSD的控制器取参考块中的特定数据,

步骤S95:SSD的控制器将获取的特定数据与保存在高可靠性存储介质中的特定数据进行逐比特比较,计算误码率;

步骤S96:SSD控制器通过存储阵列的接口命令,将存储阵列的判决电压值向低电平方向调整一个步长;其中一个步长可具体为10mv。接口命令可具体用于调整存储阵列的判决电压。

由于在SSD的下电期电,SSD中的存储单元的阈值电平只会向低电压方向偏移,因此只需将存储阵列的判决电压向低电压方向调整即可。

步骤S97:SSD的控制器判断判决电压的总共偏移是否达到最大偏移值,如果否,返回执行步骤S94;否则,执行步骤S98;其中,最大偏移值可具体为大约为500~900mV;

也就是说,SSD控制器将继续按照上述步长调整读判决电压压的偏移值,重复执行步骤S94-S96统计每一种判决电压偏移值下特定数据的误码率,直到达到判决电压的最大偏移值为止.

步骤S98:获取误码率最小的特定数据所对应的偏移电压。

而在确定上述偏移电压后,SSD的控制器此时可响应计算机进行读写,而在SSD上电后,对于已存储数据的读取均采用上述偏移电压来调节判决电压;而对于在SSD上电后写入数据的读取,由于此时存储数据的Retention时长已经可以获得,可具体采用实施例四所公开的方法查询偏移电平,然后基于此偏移电平调整的判决电压进行数据读取。

需要说明的是,虽然实施例四中公开了影响存储单元的阈值电压Vth偏移的因素有PE、Retention时长、读取次数以及环境温度等因素,但决定阈值电压Vth偏移的最主要两个因素为PE次数和Retention时长。而在本发明中,通过对参考块进行磨损,可保证参考块与数据块的PE次数相一致;而由于在SSD长时间下电后,参数块的特定数据与数据块的用户数据两者的Retention时长的差异在长时间下电时长的对比下,两者的差异可几乎忽略,因此,在本发明实施例中,对参数块进行磨损,即可保证参考块与数据块的阈值电压Vth偏移相一致,当然在本发明实施例中,在SSD上电时可具体采用实施例四所提供的方法,调节存储阵列的判决电压;采用本发明实施例中的方法,可以解决由于SSD长时间下电后存储单元误码过高,导致存储数据无法恢复的问题。

实施例五

本发明还提供另一种闪存设备的访问方法,该闪存设备包括控制器和存储阵列,存储阵列包括特定存储单元和用户存储单元,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压Vread,方法具体如下:

控制器获取特定存储单元的当前阈值电压Vth,以及原始阈值电压Vth,原始阈值电压Vth为在写入特定数据时特定存储单元的阈值电压Vth;

控制器根据特定存储单元的当前阈值电压Vth和原始阈值电压Vth,确定判决电压Vread;

可选的,控制器可根据特定存储单元的当前阈值电压Vth和原始阈值电压Vth,确定存储单元阈值电压Vth的偏移量,然后,再将预设的判决电压Vread按照偏移量进行偏移即可;比如,仍参照图1,假设一特定存储单元所存储的特定数据为0,且该特定存储单元的原始阈值电压Vth为5V,经过一段时间后,由于存储单元的电子泄露,该特定存储单元的阈值电压Vth变为2V,那么可确定该特定存储单元的阈值电压Vth的偏移量为3V(5V-2V=3V);而相应的将判决电压Vread的值也向左偏移一定数量即可,具体可如图4所示。由于在实际应用中,特定存储单元可以包含多个存储元,在本发明实施例中,可首先确定特定存储单元中每个发生电荷泄露的存储元(以SLC进行举例说明,即存储状态“0”的存储元)的阈值电压Vth偏移量,然后计算这些存储元的阈值电压Vth偏移量的平均值,可具体采用现有技术中的算术平均法或加权平均法求平均值;最后,将判决电压Vread的值根据上述平均值进行偏移。

可选的,控制器内可预先存储有特定数据阈值电压Vth的概率分布情况,比如,仍参照图1,对于SLC类型的闪存设备,其存储数据“0”的阈值电压Vth的概率分布如图1中的右图所示,而其存储数据“1”的阈值电压Vth的概率分布如图1中的左图所示。然后,根据特定存储单元的原始阈值电压Vth与当前阈值电压Vth,确定特定存储单元的阈值电压Vth的偏移量;关于如何计算阈值电压Vth的偏移量,可具体参见上述记载;最后,根据当前计算的阈值电压Vth的偏移量,对整个阈值电压Vth的概率分布情况进行相应的偏移,以及,根据偏移后的阈值电压Vth的概率分布情况,确定判决电压Vread;比如,如图5所示,当确定一特定存储单元的阈值电压Vth的偏值为3V,那么将整个阈值电压Vth的概率分布情况也向左相应的偏移3V,最后,确定偏移后的阈值电压Vth的概率分布情况中的最小阈值电压Vth;将判决电压Vread设置为大于最小阈值电压Vth的任一值即可。

控制器利用确定的判决电压Vread,读取用户存储单元中存储的用户数据。

由上可见,在本发明实施例中,采用上述方法,可根据存储单元阈值电压Vth的实时偏移情况,确定判决电压Vread,从而可减少对存储单元存储数据的误判。

实施例六

与上述方法相对应的,本发明还提供一种闪存设备的访问装置,闪存设备至少包括存储阵列,存储阵列包括特定存储单元和用户存储单元,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压,如图10所示,闪存设备的访问装置10至少包括:读取单元101,用于读取特定存储单元中存储的特定数据;确定单元102,用于根据读取的特定数据,确定判决电压;读取单元101,还用于利用确定的判决电压,读取用户存储单元中存储的用户数据。

可选的,读取单元101在读取特定存储单元中存储的特定数据时,具体用于:获取特定存储单元的当前阈值电压;比较预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据。

可选的,确定单元102,具体用于:计算确定的特定数据的误码率;在误码率小于预设阈值时,将预设判决电压作为确定的判决电压。

可选的,预设判决电压有至少两个,读取单元101在读取特定存储单元中存储的特定数据时,具体用于:比较每个预设判决电压与特定存储单元的当前阈值电压,确定特定存储单元中存储的特定数据;确定单元102,具体用于:计算根据每个预设判决确定的特定数据的误码率;选择误码率最小的确定的特定数据对应的预设判决电压作为确定的判决电压。

可选的,确定单元102在计算确定的特定数据的误码率时,具体用于:比较确定的特定数据和记录的原始特定数据,获得确定的特定数据的误码率。

可选的,闪存设备的访问装置10还可包括:磨损单元,用于根据用户存储单元的磨损特性对特定存储单元进行磨损操作,以使特定存储单元和用户存储单元的磨损特性相一致。重写入单元,用于在将用户数据写入至用户存储单元时,同步将特定数据重新写入至特定存储单元,以使得特定存储单元和用户存储单元存储数据的时长特性相一致。

由上可见,在本发明实施例中,预先将存储阵列分为特定存储单元和用户存储单元,且特定存储单元和用户存储单元的存储特性相一致,两者的阈值电压Vth偏移相一致,从而两者所采用的判决电压Vread趋于一致;而本发明实施例中,每当在读取用户存储单元中的用户数据时,控制器读取特定存储单元中存储的特定数据,且根据所读取的特定数据,确定判决电压Vread,最后,利用确定的判决电压Vread,读取用户存储单元中存储的用户数据;由于特定存储单元和用户存储单元的阈值电压Vth偏移趋于一致,因此,利用在特定存储单元中确定的判决电压Vread对用户存储单元的存储数据进行读取,可减少由于阈值电压Vth的偏移,而造成的存储数据的误判。

实施例七

与上述方法相对应的,本发明还提供一种闪存设备的访问装置,闪存设备至少包括存储阵列,存储阵列包括特定存储单元和用户存储单元,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压,装置包括:获取单元,用于获取特定存储单元的当前阈值电压,以及原始阈值电压,原始阈值电压为写入特定数据时特定存储单元的阈值电压;判决电压确定单元,用于根据特定存储单元的当前阈值电压和原始阈值电压,确定判决电压;用户数据读取单元,用于利用确定的判决电压,读取用户存储单元中存储的用户数据。

由上可见,在本发明实施例中,采用上述方法,可根据存储单元阈值电压Vth的实时偏移情况,确定判决电压Vread,从而可减少对存储单元存储数据的误判。

实施例八

与上述方法和装置相对应的,本发明还提供一种闪存设备的访问系统,如图11所示,闪存设备的访问系统11包括闪存设备的访问装置111和存储阵列112;

存储阵列112包括特定存储单元和用户存储单元,特定存储单元用于存储特定数据,用户存储单元用于存储用户数据,特定数据用于确定读取用户数据的判决电压;

闪存设备的访问装置111用于:读取特定存储单元中存储的特定数据;根据读取的特定数据,确定判决电压;利用确定的判决电压,读取用户存储单元中存储的用户数据;

或,闪存设备的访问装置111用于:获取特定存储单元的当前阈值电压,以及原始阈值电压,原始阈值电压为写入特定数据时特定存储单元的阈值电压;根据特定存储单元的当前阈值电压和原始阈值电压,确定判决电压;利用确定的判决电压,读取用户存储单元中存储的用户数据。

由上可见,在本发明实施例中,预先将存储阵列的存储单元分为特定存储单元和用户存储单元,且特定存储单元和用户存储单元的存储特性相一致,两者的阈值电压Vth偏移相一致,从而两者所采用的判决电压Vread趋于一致;而本发明实施例中,每当在读取用户存储单元中的用户数据时,控制器读取特定存储单元中存储的特定数据,且根据所读取的特定数据,确定判决电压Vread,最后,利用确定的判决电压Vread,读取用户存储单元中存储的用户数据;由于特定存储单元和用户存储单元的阈值电压Vth偏移趋于一致,因此,利用在特定存储单元中确定的判决电压Vread对用户存储单元的存储数据进行读取,可减少由于阈值电压Vth的偏移,而造成的存储数据的误判。

实施例九

与上述方法相对应的,本发明还提供一种可读介质,包括执行指令,当存储控制器的处理器执行执行指令时,存储控制器执行上述实施例所公开的访问闪存设备的方法。

本发明还公开了一种存储控制器,如图12所示,,存储控制器12包括:处理器121、存储器122和总线123;

存储器122用于存储执行指令,处理器121与存储器122通过总线123连接,当存储控制器运行时,处理器121执行存储器122存储的执行指令,以使存储控制器执行:

读取特定存储单元中存储的特定数据;

根据读取的特定数据,确定判决电压;

利用确定的判决电压,读取用户存储单元中存储的用户数据;

或,执行:

获取特定存储单元的当前阈值电压,以及原始阈值电压,原始阈值电压为写入特定数据时特定存储单元的阈值电压;

根据特定存储单元的当前阈值电压和原始阈值电压,确定判决电压;

利用确定的判决电压,读取用户存储单元中存储的用户数据。

由上可见,在本发明实施例中,预先将存储阵列的存储单元分为特定存储单元和用户存储单元,且特定存储单元和用户存储单元的存储特性相一致,两者的阈值电压Vth偏移相一致,从而两者所采用的判决电压Vread趋于一致;而本发明实施例中,每当在读取用户存储单元中的用户数据时,控制器读取特定存储单元中存储的特定数据,且根据所读取的特定数据,确定判决电压Vread,最后,利用确定的判决电压Vread,读取用户存储单元中存储的用户数据;由于特定存储单元和用户存储单元的阈值电压Vth偏移趋于一致,因此,利用在特定存储单元中确定的判决电压Vread对用户存储单元的存储数据进行读取,可减少由于阈值电压Vth的偏移,而造成的存储数据的误判。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1