元信息管理方法、固态硬盘控制器及固态硬盘

文档序号:1906609 发布日期:2021-11-30 浏览:17次 >En<

阅读说明:本技术 元信息管理方法、固态硬盘控制器及固态硬盘 (Meta information management method, solid state disk controller and solid state disk ) 是由 方浩俊 黄运新 杨亚飞 于 2021-08-23 设计创作,主要内容包括:本申请实施例涉及固态硬盘应用领域,公开了一种元信息管理方法、固态硬盘控制器及固态硬盘,该方法包括:根据每一字线中的每一数据页的原始比特错误率,确定每一字线中的至少两个数据页中的一个第一数据页和至少一个第二数据页,其中,第一数据页的原始比特错误率小于第二数据页的原始比特错误率;将至少一个第二数据页的部分元信息移动到第一数据页的元信息对应的空间,并将第二数据页中被移动的元信息对应的空间用于增加校验数据长度,以使得每一字线对应的元信息的总体空间大小不变。通过对不同数据页采用不同的校验数据长度,本申请能够提高固态硬盘的整体纠错能力,延长固态硬盘的整体寿命。(The embodiment of the application relates to the field of solid state disk application, and discloses a meta information management method, a solid state disk controller and a solid state disk, wherein the method comprises the following steps: determining a first data page and at least one second data page of at least two data pages in each word line according to an original bit error rate of each data page in each word line, wherein the original bit error rate of the first data page is smaller than that of the second data page; and moving partial meta information of at least one second data page to a space corresponding to the meta information of the first data page, and using the space corresponding to the moved meta information in the second data page to increase the length of the check data, so that the total space size of the meta information corresponding to each word line is not changed. Through adopting different check data length to different data pages, this application can improve solid state disk&#39;s whole error correction ability, prolongs solid state disk&#39;s whole life-span.)

元信息管理方法、固态硬盘控制器及固态硬盘

技术领域

本申请涉及固态硬盘应用领域,特别是涉及一种元信息管理方法、固态硬盘控制器及固态硬盘。

背景技术

固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘会包括控制单元和存储单元(FLASH存储芯片或DRAM存储芯片),在固态存储中,元信息的大小影响纠错能力。

目前,每个逻辑块所对应的元信息大小是一样的,为了提高纠错能力,通常通过压缩元信息的大小,从而整体调整用户数据的大小来提升纠错能力,但是,由于不同数据页发生错误的几率不同,通过整体调整用户数据的大小来提升纠错能力不能带来固态硬盘整体寿命的延长。

基于上述问题,现有技术亟待改进。

发明内容

本申请实施例提供一种元信息管理方法、固态硬盘控制器及固态硬盘,以解决目前固态硬盘整体寿命不足的技术问题。

为解决上述技术问题,本申请实施例提供以下技术方案:

第一方面,本申请实施例提供一种元信息管理方法,应用于固态硬盘,该固态硬盘包括至少一条字线,每一字线包括至少两个数据页,每一数据页包括至少一个纠错单元,其中,所述纠错单元包括:有效数据和校验数据,所述有效数据包括:用户数据和元信息,所述方法包括:

根据每一所述字线中的每一数据页的原始比特错误率,确定每一所述字线中的至少两个数据页中的一个第一数据页和至少一个第二数据页,其中,所述第一数据页的原始比特错误率小于所述第二数据页的原始比特错误率;

将至少一个第二数据页的部分元信息移动到所述第一数据页的元信息对应的空间,并将第二数据页中被移动的元信息对应的空间用于增加校验数据长度,以使得每一字线对应的元信息的总体空间大小不变。

第二方面,本申请实施例提供一种固态硬盘控制器,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的元信息管理方法。

第三方面,本申请实施例提供一种固态硬盘,包括:

闪存阵列,所述闪存阵列包括多个晶圆,每一所述晶圆包括多个分组,每一所述分组包括多个物理块,每一所述物理块包括多个物理页;

如第二方面所述的固态硬盘控制器。

第四方面,本申请实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使固态硬盘能够执行如上所述的元信息管理方法。

本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种元信息管理方法,应用于固态硬盘,该固态硬盘包括至少一条字线,每一字线包括至少两个数据页,每一数据页包括至少一个纠错单元,其中,所述纠错单元包括:有效数据和校验数据,所述有效数据包括:用户数据和元信息,所述方法包括:根据每一所述字线中的每一数据页的原始比特错误率,确定每一所述字线中的至少两个数据页中的一个第一数据页和至少一个第二数据页,其中,所述第一数据页的原始比特错误率小于所述第二数据页的原始比特错误率;将至少一个第二数据页的部分元信息移动到所述第一数据页的元信息对应的空间,并将第二数据页中被移动的元信息对应的空间用于增加校验数据长度,以使得每一字线对应的元信息的总体空间大小不变。通过对不同数据页采用不同的校验数据长度,本申请能够提高固态硬盘的整体纠错能力,延长固态硬盘的整体寿命。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本申请实施例提供的一种固态硬盘的结构示意图;

图2是本申请实施例提供的一种固态硬盘控制器的结构示意图;

图3是本申请实施例提供的一种TLC Flash的数据页的RBER分布的示意图;

图4是本申请实施例提供的一种数据页的示意图;

图5是本申请实施例提供的一种TLC Flash的数据页的示意图;

图6是本申请实施例提供的一种元信息管理方法的流程示意图;

图7是本申请实施例提供的一种TLC Flash的数据页的元信息移动的示意图;

图8是本申请实施例提供的一种TLC Flash的数据页的纠错阈值的示意图;

图9是本申请实施例提供的一种确定第一调整区间和第二调整区间的流程示意图;

图10是本申请实施例提供的一种下发操作命令符的流程示意图;

图11是本申请实施例提供的另一种固态硬盘的示意图;

图12是本申请实施例提供的一种纠错引擎生成纠错校验数据的示意图;

图13是本申请实施例提供的另一种元信息管理方法的流程示意图;

图14是本申请实施例提供的一种聚合处理的示意图;

图15是本申请实施例提供的逻辑地址的存储方式的示意图;

图16是本申请实施例提供的一种逻辑地址与页或字线的关系示意图;

图17是图13中的步骤S131的细化流程图;

图18是本申请实施例提供的一种元信息的存储的流程示意图;

图19是本申请实施例提供的一种元信息的处理的示意图;

图20是本申请实施例提供的另一种元信息的处理的示意图;

图21是本申请实施例提供的一种固态硬盘控制器的固件系统的结构示意图;

图22是本申请实施例提供的另一种固态硬盘控制器的固件系统的结构示意图;

图23是图22中的第一聚合处理模块的细化结构示意图;

图24是图22中的第二聚合处理模块的细化结构示意图;

图25是本申请实施例提供的一种IO链表的示意图;

图26是本申请实施例提供的一种子集链表的操作流程示意图;

图27是本申请实施例提供的一种主机写入数据的示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

下面结合说明书附图具体地阐述本申请的技术方案。

请参阅图1,图1是本申请实施例提供的一种固态硬盘的结构示意图。

如图1所示,所述固态硬盘100包括闪存介质110以及与所述闪存介质110连接的固态硬盘控制器120。其中,所述固态硬盘100通过有线或无线的方式与所述主机200通信连接,用以实现数据交互。

闪存介质110,作为所述固态硬盘100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。

固态硬盘控制器120,包括数据转换器121、处理器122、缓存器123、闪存控制器124以及接口125。

数据转换器121,分别与处理器122和闪存控制器124连接,所述数据转换器121用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当所述闪存控制器124向所述闪存介质110写入数据时,通过所述数据转换器121将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质110。当所述闪存控制器124从所述闪存介质110读取数据时,通过所述数据转换器121将闪存介质110中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,所述数据转换器121可以包括二进制数据寄存器和十六进制数据寄存器。所述二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,所述十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。

处理器122,分别与数据转换器121、缓存器123、闪存控制器124以及接口125连接,其中,处理器122与数据转换器121、缓存器123、闪存控制器124以及接口125可以通过总线或者其他方式连接,所述处理器用于运行存储在缓存器123中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例。

缓存器123,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。

闪存控制器124,与闪存介质110、数据转换器121、处理器122以及缓存器123连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机200发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责FTL(Flashtranslation layer,闪存转换层)的核心处理。

接口125,连接主机200以及数据转换器121、处理器122以及缓存器123,用于接收主机200发送的数据,或者,接收所述处理器122发送的数据,实现主机200与处理器122之间的数据传输,所述接口125可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2 NVME/SATA协议。

请再参阅图2,图2是本申请实施例提供的一种固态硬盘控制器的结构示意图;其中,该固态硬盘控制器属于上述的固态硬盘。

如图2所示,该固态硬盘控制器120,包括:PCIe接口控制器126、DDR控制器127、NVMe接口控制器128、处理器122、外设模块129、数据通路模块1210以及闪存控制器124。

具体的,所述PCIe接口控制器126,用于PCIe通信协议的控制,所述DDR控制器127,用于动态随机存储器的控制,所述NVMe接口控制器128用于NVMe通信协议的控制,所述外设模块129用于其他相关通信协议的控制,所述数据通路模块1210用于数据通路的控制,例如:写缓存的管理,所述闪存控制器124用于闪存的数据处理。

可以理解的是,闪存(NAND Flash)是非易性存储介质,其特征是在一个单元内可以存储电子,其存储电子的数量可以呈现为电压值,其电压值可以分为多个区域。仅存储一个bit(此类Flash称之为SLC),对应需要有2个状态;如存储2个bit(此类Flash称之为MLC),对应需要有4个状态;如存储3个bit(此类Flash称之为TLC),对应需要有8个状态,以此类推,以2的幂次方作为存储bit数量来计算,对应需要有2的幂次方个状态。一般地,一个单元中N个bit被编码分布到N个数据页之中,对外表现为不同的数据页,例如:MLCFlash包括LSB和MSB两个数据页,TLCFlash包括LSB、CSB和MSB三个数据页。

一般地,闪存(NAND Flash)错误,主要是由于电子泄漏使Cell的电压变化,其分布区域发生变化而导致读误判,即出现错误bit。由于不同cell所处状态不同,分布区域发生变化对不同数据页的影响不同,从闪存外部视角,不同的数据页的原始比特错误率(RawBit Error Rate,RBER)的大小不一样。

请参阅图3,图3是本申请实施例提供的一种TLC Flash的数据页的RBER分布的示意图;

如图3所示,TLC Flash包括LSB、CSB和MSB三个数据页,每一数据页的RBER分布不同,在相同的擦除-编程周期(Erase-Program Cycle,EPC)下,不同数据页的纠错阈值不同,也就是说,为了达到EPC目标值,不同的数据页的纠错能力不同。

在本申请实施例中,该固态硬盘包括至少一条字线,每一字线包括至少两个数据页,例如:MLCFlash的每一字线包括LSB和MSB两个数据页,TLC Flash的每一字线包括LSB、CSB和MSB三个数据页,以此为例,QLC FLASH的每一字线包括四个数据页,XLC FLASH的每一字线包括五个数据页。

请参阅图4,图4是本申请实施例提供的一种数据页的示意图;

如图4所示,每一数据页包括至少一个纠错单元,其中,所述纠错单元包括:有效数据和校验数据,所述有效数据包括:用户数据和元信息。可以理解的是,所述用户数据包括逻辑块,所述元信息是关于信息的信息,用于描述信息的结构、语义、用途和用法等。

请再参阅图5,图5是本申请实施例提供的一种TLC Flash的数据页的示意图;

如图5所示,LSB数据页、CSB数据页以及MSB数据页三者中的每一元信息的空间大小相同,纠错校验数据的空间大小也相同,即LSB数据页、CSB数据页以及MSB数据页的元信息的空间大小相同,LSB数据页、CSB数据页以及MSB数据页的纠错校验数据的空间大小也相同。

由此,可以看出,LSB数据页、CSB数据页以及MSB数据页的数据分布完全一致,同样的纠错单元,同样的元信息大小,同样的纠错校验数据大小。

可以理解的是,纠错单元由有效数据和校验数据组成,校验数据用于纠错算法,其大小直接影响纠错能力大小,即校验数据越多,纠错能力越强。而有效数据又分为用户数据和元信息,元信息用于固件算法管理,至少包含一个逻辑数据块所对应的逻辑地址。从用户角度来说,元信息和校验数据都是冗余数据。由于确定的闪存类型具有确定的页大小,也就是说具有确定纠错单元大小,那么在此基础上,纠错能力的提升,取决于元信息和校验数据之间的平衡。

如图5所示的数据分布,每个逻辑块所对应的元信息大小是一样,如果要提升纠错能力,需要总体上压缩元信息的大小,从而增加校验数据的空间大小。

目前,通常以最差的页,即原始比特错误率最高的页作为标准,统一一个纠错能力,即纠错阈值,使得每一数据页的纠错能力均高于该纠错阈值,但是,由于不同的数据页在同样的纠错能力下,原始比特错误率高的页(弱页)发生重读几率高于原始比特错误率低的页(强页),导致读取不同数据页的延时存在差异,导致服务质量(QoS)会受到一定的影响。并且,由于弱页的生命周期往往先达到,而强页的生命周期未被消耗,导致存储空间的浪费,进而导致固态硬盘的整体寿命减少。

因此,为了延长固态硬盘的整体寿命,本申请提供一种元信息管理方法,通过对不同数据页采用不同大小的元信息,弱页中减少元信息而多出来的空间用作校验数据空间,从而提高弱页纠错能力。

请参阅图6,图6是本申请实施例提供的一种元信息管理方法的流程示意图;

如图6所示,该元信息管理方法,应用于固态硬盘,其特征在于,该固态硬盘包括至少一条字线,每一字线包括至少两个数据页,每一数据页包括至少一个纠错单元,其中,所述纠错单元包括:有效数据和校验数据,所述有效数据包括:用户数据和元信息,所述方法包括:

步骤S601:根据每一所述字线中的每一数据页的原始比特错误率,确定每一所述字线中的至少两个数据页中的一个第一数据页和至少一个第二数据页,其中,所述第一数据页的原始比特错误率小于所述第二数据页的原始比特错误率;

具体的,获取每一所述字线中的每一数据页的原始比特错误率,例如:某一字线包括LSB数据页、CSB数据页以及MSB数据页,假设LSB数据页的原始比特错误率最小,则确定LSB数据页为第一数据页,确定CSB数据页以及MSB数据页均为第二数据页。

可以理解的是,在实际情况下,根据颗粒厂商的编码机制不同,第一数据页和第二数据页的确定略有不同,也就是说,第一数据页和第二数据页取决于电压状态分布下的编码机制。例如:可以由厂商或者实验数据,确定每一数据页的原始比特错误率,以获得数据页的强弱效果,从而确定第一数据页和第二数据页。

步骤S602:将至少一个第二数据页的部分元信息移动到所述第一数据页的元信息对应的空间,并将第二数据页中被移动的元信息对应的空间用于增加校验数据长度,以使得每一字线对应的元信息的总体空间大小不变。

具体的,将至少一个数据页中的一个逻辑块对应的部分元信息移动到所述第一数据页对应的一个逻辑块的元信息对应的空间,并将每一第二数据页中被移动的元信息对应的空间用于增加校验数据长度,即增大纠错校验数据对应的空间,以提高第二数据页的纠错能力。

请参阅图7,图7是本申请实施例提供的一种TLC Flash的数据页的元信息移动的示意图;

如图7所示,确定LSB数据页为第一数据页,CSB数据页和MSB数据页均为第二数据页,将CSB数据页和MSB数据页的逻辑块0对应的元信息中的一部分移动到LSB数据页对应的元信息的空间,使得纠错校验数据的空间增大,以增加校验数据长度。可以理解的是,由于LSB数据页的元信息的空间增加,因此,LSB数据页的纠错校验数据的空间减少。

由于第二数据页中的部分元信息被移动至第一数据页中,因此,当需要读取第二数据页中被移动的元信息时,可以通过读取第一数据页的元信息来获取。

进一步地,为了确定元信息和纠错校验数据的调整范围,需要计算第一数据页和第二数据页的原始比特错误率的差距,即,以第一数据页(强页)的RBER比第二数据页(弱页)低的程度来设定元信息和校验数据的调整范围。

请参阅图8,图8是本申请实施例提供的一种TLC Flash的数据页的纠错阈值的示意图;

如图8所示,纵轴代表各个页的原始错误比特数(RBER),横轴是擦除-编程周期(Erase-Program Cycles,EPC),纠错强度和纠错阈值以原始比特错误率(RBER)为衡量标准,以确定纠错强度或纠错阈值的高低。

即,从闪存外部整体视角,评估闪存的原始错误比特数(RBER)来判断闪存的可靠性,该值主要受擦除-编程周期(Erase-Program Cycles,EPC),或者编程-擦除周期(Program-Erase Cycles,PEC)或者写入-擦除周期(Write-Erase Cycles,WEC)或者擦除计数器(Erase Counter,EC)的影响。显然,EPC和RBER呈正相关,当EPC目标值提高之后,弱页纠错强度、纠错阈值和强页纠错强度均相应提高,但弱页纠错强度明显需要高于强页纠错强度,才能满足EPC目标值。

可以理解的是,固态硬盘的整体寿命延长体现在EPC目标值的右移,即EPC目标值的增加,但是,EPC目标值的增加会造成RBER的增大,因此,需要提高纠错能力,而纠错能力需要增加校验数据长度来体现。

对于一般闪存供应商,其标称可靠性是指:在标称擦除次数和读取装置的纠错能力要求(ECC Requirement)下,具有的数据读取无错误。简而言之,主控的纠错引擎能力必须大于纠错阈值。

由于各个数据页具有不同的RBER的表现,换句话说,在同样的EPC情况下,LSB数据页(强页)发生原始错误比特数是小于MSB数据页和CSB数据页(弱页)的,因此,此时用相对较弱的纠错能力同样能满足需求。那么对应整体要提高闪存寿命(增加EPC值),显然无论强页还是弱页都需要对纠错能力进行提高。

本申请通过对不同数据页设定不同的纠错强度(纠错能力),而在纠错算法固定下,纠错强度和校验数据长度强相关,也就是说,校验数据长度越长,纠错能力越高。但数据存储分布大部分固定的(一个纠错单元内,含用户数据的逻辑块,和管理信息的元数据,剩余就是给校验数据的空间)。那么对于元数据管理的改善,可以达到不同页里面的纠错单元内校验数据的空间有所不同,从而实现纠错强度的不同。

在本申请实施例中,所述元信息包括逻辑地址,所述将至少一个第二数据页的部分元信息移动到所述第一数据页的元信息对应的空间,包括:

将所述至少一个第二数据页的逻辑地址移动到所述第一数据页的元信息对应的空间。例如:基于字线为单位,通用型的数据页的每一页都有32Bytes的空间,例如:一个字线包括三个数据页,分别为一个第一数据页和两个第二数据页,一个第一数据页有32Bytes的空间,一个第二数据页有32Bytes的空间,第二数据页的逻辑地址LMA为10Bytes,将第二数据页的逻辑地址移动到所述第一数据页的元信息对应的空间,变成第二数据页的空间大小为32-10=22Bytes,第一数据页的空间大小32+20=42Bytes,使得字线的总体大小仍然为32Bytes*3=96Bytes。

可以理解的是,在固态硬盘软件算法中,元信息主要用于两个阶段:垃圾回收阶段和上电重建表阶段。本申请对其中对应于上电重建表阶段的元信息,改变之前通用的方法:仅仅以数据页为单元的管理方法,改为以字线(WordLine)作为单元,保持元信息总体大小不变,即弱页减少的元信息被移至强页的元信息内。具体地,元信息的迁移内容,可以由具体算法确定。

例如:上电重建表阶段的元信息通常包含逻辑地址(LMA,或者称LBN,LPA等),用于P2L(物理地址到逻辑地址的映射)关系建立。通用型代表每个元信息内都含有LMA,一般地,LMA为8~10字节大小。根据第一数据页(强页)的可用元信息大小,可以将第二数据页(弱页)的LMA全部或者部分移至强页的元信息内。

如下表1所示,第二数据页的LMA被全部移至第一数据页的元信息内。由于字线是作为一个编程单元,仅需要一个时间戳(TimeStamp)即可。因此,还可以将第二数据页中的时间戳对应的空间用于增大纠错校验数据的空间。

表1

可以理解的是,对于第一数据页(强页)和第二数据页(弱页)而言,在相同的擦除-编程周期(Erase-Program Cycle,EPC)下,第一数据页的原始比特错误率(Raw Bit ErrorRate,RBER)小于第二数据页的原始比特错误率(Raw Bit Error Rate,RBER),也就是说,第一数据页所需要的纠错强度小于第二数据页的纠错强度,因此,可以减小第一数据页的纠错校验数据的空间,用于增大其元信息的空间,使得第一数据页的元信息的空间用于记录第二数据页的元信息,以使第二数据页的纠错校验数据的空间增大,从而提高第二数据页的纠错强度。

具体的,请再参阅图9,图9是本申请实施例提供的一种确定第一调整区间和第二调整区间的流程示意图;

如图9所示,该确定第一调整区间和第二调整区间的流程,包括:

步骤S901:获取第一数据页和第二数据页的原始比特错误率的数据分布,以及,获取预设的第一纠错强度阈值和第二纠错强度阈值;

具体的,请再参阅图8,如图8所示,LSB数据页为第一数据页,MSB数据页和CSB数据页均为第二数据页,通过获取第一数据页和第二数据页的原始比特错误率的数据分布,并且,在预设的纠错算法下,确定EPC目标值,根据所述EPC目标值,基于所述第一数据页和第二数据页的原始比特错误率的数据分布,确定所述第一数据页对应的第一纠错强度阈值和第二数据页对应的第二纠错强度阈值。在本申请实施例中,所述纠错算法包括LDPC纠错算法。

步骤S902:根据所述第一数据页和第二数据页的原始比特错误率的数据分布以及所述第一纠错强度阈值和第二纠错强度阈值,确定第一数据页对应的第一纠错强度和第二数据页对应的第二纠错强度;

具体的,在第一数据页和第二数据页的纠错强度未调整之前,第一数据页和第二数据页的纠错强度均为通用型数据页的纠错强度。可以理解的是,通用型数据页是不区分强弱页的情况下,统一的纠错强度配置。

如下表2所示,假设纠错单元(Codeword)的长度为4KB,通用型数据页的纠错强度为240bit/4KB,通用型数据页的纠错强度阈值也为240bit/4KB,此时,第一数据页(强页)的纠错强度阈值为210bit/4KB,第二数据页(弱页)的纠错强度阈值为240bit/4KB,为了提高第二数据页(弱页)的纠错能力,因此,根据所述第一数据页和第二数据页的原始比特错误率的数据分布以及所述第一纠错强度阈值和第二纠错强度阈值,确定第一数据页对应的第一纠错强度和第二数据页对应的第二纠错强度,所述确定第一数据页对应的第一纠错强度和第二数据页对应的第二纠错强度,包括:

确定第一数据页对应的第一纠错强度为(第一纠错强度阈值+冗余值);

确定第二数据页对应的第二纠错强度为(通用型数据页的纠错强度阈值+(通用型数据页的纠错强度阈值-第一纠错强度阈值-冗余值)/N),其中,N为第二数据页的数量,N为正整数。

例如:

若只有一个第二数据页,比如:MLCFlash,LSB数据页为第一数据页,MSB数据页为第二数据页,则确定第一数据页对应的第一纠错强度为(第一纠错强度阈值),确定第二数据页对应的第二纠错强度为(通用型数据页的纠错强度阈值+第二纠错强度阈值-第一纠错强度阈值);

若存在两个第二数据页,比如:TLC Flash,LSB数据页为第一数据页,CSB数据页和MSB数据页均为第二数据页,则确定第一数据页对应的第一纠错强度为(第一纠错强度阈值+冗余值),第二数据页对应的第二纠错强度为(通用型数据页的纠错强度阈值+(通用型数据页的纠错强度阈值-第一纠错强度阈值-冗余值)/2);

同理,若存在N个第二数据页,则确定第一数据页对应的第一纠错强度为(第一纠错强度阈值+冗余值),第二数据页对应的第二纠错强度为(通用型数据页的纠错强度阈值+(通用型数据页的纠错强度阈值-第一纠错强度阈值-冗余值)/N),其中,N为正整数且N≥2;

在本申请实施例中,所述冗余值为预设的数值,例如:下表2中以TLC Flash为例,则存在两个第二数据页,假设下表2中的冗余值为10bit/4KB,则确定第一数据页对应的第一纠错强度为(第一纠错强度阈值+冗余值)=(210bit/4KB+10bit/4KB)=220bit/4KB,确定第二数据页对应的第二纠错强度为(通用型数据页的纠错强度阈值+(通用型数据页的纠错强度阈值-第一纠错强度阈值-冗余值)/2)=(240bit/4KB+(240bit/4KB-210bit/4KB-10bit/4KB)/2)=250bit/4KB。

纠错需求类型 纠错强度 RBER阈值要求
第一数据页(强页) 220bit/4KB 210bit/4KB
第二数据页(弱页) 250bit/4KB 240bit/4KB
通用型数据页 240bit/4KB 240bit/4KB

表2

步骤S903:根据预设的纠错强度换算规则,确定第一数据页的校验数据长度的第一调整区间和第二数据页的校验数据长度的第二调整区间。

具体的,所述纠错强度换算规则,包括:可纠错比特位数=校验数据比特位数/预设系数。

具体的,所述预设系数由预设的纠错算法确定,例如:所述纠错算法为LDPC纠错算法,此时所述预设系数为16,则所述纠错强度换算规则=T=P/16,其中,T为可纠错比特位数,P为校验数据比特位数(Parity bit数)。

如上表2所示,在纠错单元的长度为4KB的前提下,第一数据页的可纠错比特位数为240bit-220bit=20bit,此时,P=16T,则校验数据比特位数P=16*20bit=320bit。

具体的,所述根据预设的纠错强度换算规则,确定第一数据页的校验数据长度的第一调整区间和第二数据页的校验数据长度的第二调整区间,包括:

计算第一数据页对应的第一校验数据比特位数,确定第一调整区间;

计算第二数据页对应的第二校验数据比特位数,确定第二调整区间。

如上表2所示,在纠错单元的长度为4KB的前提下,第一数据页的可纠错比特位数为240bit-220bit=20bit,此时,P=16T,则校验数据比特位数P=16*20bit=320bit=40Bytes,即第一数据页的校验数据长度的第一调整区间为[0,40Bytes];同理,第二数据页的可纠错比特位数为250bit-240bit=10bit,此时,P=16T,则校验数据比特位数P=16*10bit=160bit=20Bytes,即第二数据页的校验数据长度的第二调整区间为[0,20Bytes]。

具体的,所述方法还包括:

根据第一数据页的校验数据长度的第一调整区间和第二数据页的校验数据长度的第二调整区间,确定增加的第二数据页的校验数据长度,以及,确定减少的第一数据页的校验数据长度。

具体的,根据第一数据页的校验数据长度的第一调整区间,确定减少的第一数据页的校验数据长度,其中,所述减少的第一数据页的校验数据长度位于所述第一调整区间,优选地,所述减少的第一数据页的校验数据长度为所述第一调整区间的最大值,例如:若第一调整区间为[0,40Bytes],则减少的第一数据页的校验数据长度为40Bytes;

具体的,根据第二数据页的校验数据长度的第二调整区间,确定增加的第二数据页的校验数据长度,其中,所述增加的第二数据页的校验数据长度位于所述第二调整区间,优选地,所述增加的第二数据页的校验数据长度为所述第二调整区间的最大值,例如:若第一调整区间为[0,20Bytes],则减少的第一数据页的校验数据长度为20Bytes。

请再参阅图10,图10是本申请实施例提供的一种下发操作命令符的流程示意图;

如图10所示,该下发操作命令符的流程,包括:

步骤S1001:根据设定的校验数据长度,配置不同的校验矩阵;

具体的,根据所述第一数据页对应的第一校验数据长度,确定与第一校验数据长度对应的第一校验矩阵组合;以及,根据所述第二数据页对应的第二校验数据长度,确定与第二校验数据长度对应的第二校验矩阵组合;

可以理解的是,当第一数据页和第二数据页的纠错强度确定之后,此时校验数据长度已确定,即第一数据页对应的第一校验数据长度,以及第二数据页对应的第二校验数据长度,此时需要通过不同的矩阵和参数来匹配对应的校验数据长度。

在本申请实施例中,根据校验数据长度,确定校验矩阵组合,包括:在所述校验数据长度下,选择有限的校验矩阵,以确定校验矩阵组合。具体的,根据所述第一数据页对应的第一校验数据长度,确定与第一校验数据长度对应的第一校验矩阵组合;以及,根据所述第二数据页对应的第二校验数据长度,确定与第二校验数据长度对应的第二校验矩阵组合。例如:校验数据长度空间有32Bytes,纠错算法提供4种校验矩阵,分别要求校验数据长度为24~34Bytes,28~40Bytes,34~48Bytes,42~54Bytes,那么只能选择其中2种校验矩阵,分别为24~34Bytes和28~40Bytes,此时确定的校验矩阵组合为(24~34Bytes,28~40Bytes)。

在本申请实施例中,所述方法还包括:

根据设定的校验数据长度,配置纠错引擎参数,其中,纠错引擎参数指的是控制纠错引擎的配置,比如是否选择高性能模式,增强模式,是否启用低功耗等等。

步骤S1002:根据配置不同的校验矩阵,设定对应的操作命令符;

具体的,根据所述第一校验矩阵组合,确定对应的第一操作命令符,以确定第一数据页对应的第一操作命令符;

以及,根据所述第二校验矩阵组合,确定对应的第二操作命令符,以确定第二数据页对应的第二操作命令符。

步骤S1003:识别数据页类型,下发对应的操作命令符,进行数据读写操作;

具体的,在识别到数据页类型之后,下发对应的操作命令符,以进行数据读写操作,其中,所述数据页类型包括第一数据页或第二数据页,所述操作命令符包括第一操作命令符或第二操作命令符。例如:若识别到第一数据页,则下发第一操作命令符;若识别到第二数据页,则下发第二操作命令符。其中,所述数据读写操作包括解码操作和编码操作。当识别到数据页类型之后,选择对应的操作命令符,进而使纠错引擎在读写数据时,生成或者识别对应的校验码。

请参阅图10,图10是本申请实施例提供的另一种固态硬盘的示意图;

如图10所示,该固态硬盘100,包括:闪存阵列110以及固态硬盘控制器120,其中,该固态硬盘控制器120,包括:处理器122、缓存器123、纠错引擎1211以及闪存控制器124,其中,所述处理器122连接所述缓存器123、纠错引擎1211以及闪存控制器124。

其中,所述处理器122,用于配置对应的纠错引擎,下发读写操作;

其中,所述缓存器123,用于存储用户数据;在本申请实施例中,所述缓存器123优选为随机存取存储器(Random Access Memory,RAM)。

其中,所述闪存控制器124,用于发送闪存操作命令和数据。

其中,所述纠错引擎1211,连接所述存储器以及处理器,用于在写入数据时,对有效数据进行纠错编码,生成对应的校验数据;或者,用于在读取数据时,对纠错单元进行解码,对有效数据进行纠错;

在本申请实施例中,所述纠错引擎1211为ECC引擎(ECCEngine),所述纠错引擎支持多种纠错能力,例如LDPC纠错算法下,支持多种校验矩阵,可应用于同样的纠错单元(Codeword)生成不同的校验数据,在本申请实施例中,所述校验数据长度可以通过Shorten和Punch技术微调到比特位级别,以对应不同纠错能力。

在本申请实施例中,以写入数据为例,请参阅图12,图12是本申请实施例提供的一种纠错引擎生成纠错校验数据的示意图;

如图12所示,纠错引擎根据不同的校验矩阵生成不同的校验数据,故而,当强页、弱页的纠错需求(校验码长度)确定后,即确定纠错单元(Codeword)的情况下,确定的纠错校验数据长度,需要通过不同的校验矩阵和纠错引擎参数进行调整,以匹配需求的校验数据长度。当纠错编码时,选择对应的校验矩阵,即可生成对应长度的纠错校验数据。

在本申请实施例中,通过元信息管理的改善可使强弱页实际纠错强度趋于一致,提升了弱页的纠错能力,从而不同的数据页发生读错误的几率趋向一致,从而保证了读一致性(即提升了服务质量QoS)。并且,由于提升了弱页的纠错强度来延长其寿命,进而可增强整体固态硬盘的寿命。

在本申请实施例中,通过提供一种元信息管理方法,应用于固态硬盘,该固态硬盘包括至少一条字线,每一字线包括至少两个数据页,每一数据页包括至少一个纠错单元,其中,所述纠错单元包括:有效数据和校验数据,所述有效数据包括:用户数据和元信息,所述方法包括:根据每一所述字线中的每一数据页的原始比特错误率,确定每一所述字线中的至少两个数据页中的一个第一数据页和至少一个第二数据页,其中,所述第一数据页的原始比特错误率小于所述第二数据页的原始比特错误率;将至少一个第二数据页的部分元信息移动到所述第一数据页的元信息对应的空间,并将第二数据页中被移动的元信息对应的空间用于增加校验数据长度,以使得每一字线对应的元信息的总体空间大小不变。通过对不同数据页采用不同的校验数据长度,本申请能够提高弱页的纠错能力,延长固态硬盘的整体寿命。

目前,随着固态硬盘容量越来越大,元信息需求也变得越来越多,特别是元信息中至少含有一个逻辑地址,其位域占据四个字节以上,此种现象不仅开始影响一定的纠错能力的提升,而且对固件算法也产生影响,如上电恢复速度等。

由于对同一页或者字线内的数据没有做特别优化,其数据对应的逻辑地址分布范围为0到最大,那么其元信息内的逻辑地址必须以全量地址存储。而逻辑地址以全量地址形式存储占据的空间过大,如大容量盘需要占据四个字节以上,如何优化逻辑地址在元信息的存储成为一个亟需解决的问题。

基于此,本申请实施例提供一种元信息管理方法、固态硬盘控制器及固态硬盘,以解决目前固态硬盘整体寿命不足的技术问题。

具体的,请参阅图13,图13是本申请实施例提供的另一种元信息管理方法的流程示意图;

如图13所示,该元信息管理方法的流程,包括:

步骤S131:为同一数据页或同一字线内的数据的逻辑地址分配相同的基址;

具体的,通过数据聚合,使得同一数据页或同一字线内的数据的逻辑地址具有相同的基址。具体的,在所述为同一数据页或同一字线内的数据的逻辑地址分配相同的基址之前,所述方法还包括:

基于预设的逻辑地址子集规则,对写入闪存的数据进行聚合处理,将写入闪存的数据的逻辑地址划分为若干个子集,其中,所述逻辑地址子集规则,包括:每一子集一一对应一个数据页或字线,确定每个子集中的数据的逻辑地址具有相同的基址,并且,每一逻辑地址以基址和偏移量的组合进行表示。

具体的,以逻辑地址作为聚合标准,基于预设的逻辑地址子集规则,数据聚合处理时,按照数据的逻辑地址进行分类归集到相应的子集,满足条件是写入闪存的同一个数据页或者同一个字线。

具体的,所述基于预设的逻辑地址子集规则,对写入闪存的数据进行聚合处理,将写入闪存的数据的逻辑地址划分为若干个子集,包括:

假设将写入闪存的数据的逻辑地址划分为N个子集,则:

其中,n为正整数,i为非负整数,N为子集的数量,Base(n)为第n个子集的基址,Mi为第i个子集的大小。

其中,Base(1)=M0,Base(2)=M0+M1,Base(3)=M0+M1+M2,可以理解的是,根据每一子集的子集大小,可以确定子集的基址的起始位置,例如:若子集0的子集大小为1024(其地址是0~1023),则子集1的基址是1024开始。

请再参阅图14,图14是本申请实施例提供的一种聚合处理的示意图;

如图14所示,来自主机(Host)或者垃圾回收(GC)的数据在写入闪存之前,进行聚合处理,分为N个子集,分别为LMA子集1至LMA子集n,其中,每个子集具有相同的基址,子集内的数据逻辑地址可表达为基址加偏移量。

步骤S132:将同一数据页或同一字线内的每一元信息的逻辑地址以基址和偏移量的组合的形式进行存储。

在本申请实施例中,由于同一数据页或者同一字线内的N个逻辑地址以基址加偏移量形式存储于元信息内,相同的基址只保存一份,从而减少逻辑地址占据元信息的长度。

在本申请实施例中,所述方法还包括:

根据同一数据页或同一字线内的元信息的数量N,将所述基址划分为N个子基址,其中,N为正整数;

所述将同一数据页或同一字线内的每一元信息的逻辑地址以基址和偏移量的组合的形式进行存储,包括:

为每一元信息一一对应分配一个子基址,使得每一元信息的逻辑地址以子基址和偏移量的组合的形式进行存储。

如下表3所示,以基址型的方式存储元信息的逻辑地址,即通过子基址+偏移量的组合的形式进行存储,相比通用型的逻辑地址的形式,其能够节约元信息用于存储逻辑地址的空间,将节约出的空间用于校验数据长度,从而有利于提高固态硬盘的整体的纠错能力,进而延长固态硬盘的使用寿命。

表3

在本申请实施例中,元信息内的逻辑地址是以基址加偏移量形式存储,相比于全量逻辑地址存储,同一页或者字线内的N个逻辑地址具有相同的基址,总共只需要存储一个基址,基址平均切分到N个元信息内,每个元信息内有1/N个基址和至少一个偏移量,从而减少元信息的占据空间,从而有利于提高固态硬盘的整体的纠错能力,进而延长固态硬盘的使用寿命。

请参考图15,图15是本申请实施例提供的逻辑地址的存储方式的示意图;

如图15所示,现有技术中的页或字线中逻辑块对应的元信息存储有逻辑地址LMA,例如:逻辑块0对应的元信息0存储的是逻辑地址LMA0,其直接以全量逻辑地址的形式存储于元信息中;

而本发明中的逻辑块对应的元信息存储逻辑地址的方式为:1/N个基址(1/NBASE)和偏移量(OFFSET),例如:逻辑块0对应的元信息0存储的是逻辑地址LMA0对应的1/N个基址(1/N BASE)和偏移量0(OFFSET0)。

请再参阅图16,图16是本申请实施例提供的一种逻辑地址与页或字线的关系示意图;

如图16所示,一个物理块(block)内的同一数据页或者字线内的数据具有相同的逻辑地址子集,但逻辑地址子集的具体值并不确定,反过来说,即确定的物理地址并不属于确定的逻辑地址子集,各个数据页或者字线具有不同逻辑子集的数据。也就是说,数据聚合只需要满足同一个数据页或者同一个字线的数据量需求,逻辑地址子集并不限定数据所在的物理地址。

请再参阅图17,图17是图13中的步骤S131的细化流程图;

如图17所示,该步骤S131:为同一数据页或同一字线内的数据的逻辑地址分配相同的基址,包括:

步骤S1311:获取同一数据页或同一字线内的任意一个逻辑块对应的逻辑地址;

步骤S1312:根据所述逻辑地址,确定所述逻辑地址对应的子集信息;

可以理解的是,由于同一数据页或同一字线内的每一逻辑块都对应唯一的一个逻辑地址子集,因此,通过预先确定逻辑地址与逻辑子集的查询表,获取同一数据页或同一字线内的任意一个逻辑块对应的逻辑地址,可以确定该逻辑地址对应的子集信息。

具体的,所述根据所述逻辑地址,确定所述逻辑地址对应的子集信息,包括:

基于预先建立的逻辑地址与逻辑子集的查询表,根据所述逻辑地址,查询所述查询表,确定所述逻辑地址对应的子集信息,其中,所述子集信息包括所述基址的基址信息。

可以理解的是,在元信息管理中,需要维护逻辑地址到逻辑子集的查询表,从而实现用逻辑地址获得相关子集的信息,如逻辑子集的基址等。当元信息内需要查询逻辑子集的基址时,通过所述查询表,获取逻辑地址对应的逻辑子集的基址。

步骤S1313:根据所述子集信息,获取所述子集信息对应的基址。

具体的,根据逻辑地址子集信息获得基址,将基址切分到同一页或者字线的N个元信息内。子集信息里面包含基址等信息,把基址提取出来进行分割存放到元信息内。

可以理解的是,一个逻辑子集都是一个基址+大小,那么落在该逻辑子集的逻辑地址就是该逻辑子集的基址+偏移量。通过维护逻辑地址与逻辑子集的查询表,用于实现基于逻辑地址来查询基址。

在本申请实施例中,所述方法还包括:为同一数据页或同一字线内的数据分配相同的逻辑地址范围;根据所述逻辑地址范围,为同一数据页或同一字线内的数据的逻辑地址分配相同的基址,并将同一数据页或同一字线内的每一元信息的逻辑地址以基址和偏移量的组合的形式进行存储。

在本申请实施例中,若所述元信息包括至少两个逻辑地址,则所述元信息包括至少两个偏移量,每一偏移量一一对应一个逻辑地址。

可以理解的是,涉及元信息的管理算法,是以顺序规则作为索引,也就是第一个偏移量作为本数据块对应逻辑地址偏移量,第二个偏移量作为其他数据块对应的逻辑地址偏移量。存放逻辑地址主要目的是数据和逻辑地址能对应,从而在一些场合来查验数据和逻辑地址的关系,为了加快查验关系的确定,本数据块的元信息里面还放着相邻数据的逻辑地址,那么读取时,读一个数据块可以知道两个数据与逻辑地址对应关系,因此,通过在元信息中设置一个基址或子基址,结合至少两个偏移量,可以存储多个数据对应的逻辑地址。

请再参阅图18,图18是本申请实施例提供的一种元信息的存储的流程示意图;

如图18所示,该元信息的存储的流程,包括:

步骤S181:根据页或者字线大小,分配N个逻辑块和元信息;

具体的,根据一个数据页或一个字线的内存大小,分配N个逻辑块和N个元信息,其中,每一逻辑块对应一个元信息,例如:逻辑块0对应元信息0,……,逻辑块N-1对应元信息N-1。

步骤S182:获得任意一个逻辑块对应的逻辑地址,根据逻辑地址查询所在子集信息;

具体的,基于预先建立的逻辑地址与逻辑子集的查询表,根据所述逻辑地址,查询所述查询表,确定所述逻辑地址对应的子集信息,即逻辑地址子集信息,其中,所述子集信息包括所述基址的基址信息。

步骤S183:根据逻辑地址子集信息获得基址,将基址切分到同一页或者字线的N个元信息内;

具体的,根据所述逻辑地址子集信息获取基址,将基址切分为N份子基址,将子基址与元信息一一对应,即一个子基址一一对应一个元信息,使得N个子基址一一对应N个元信息,并将每一子基址存储到对应的元信息内。

步骤S184:为每个元信息分配至少一个逻辑地址偏移量,该逻辑地址偏移量对应元信息所在的逻辑块;

具体的,为每一元信息分配至少一个逻辑地址偏移量,使得元信息包括至少一个子基址+偏移量。

请再参阅图19,图19是本申请实施例提供的一种元信息的处理的示意图;

如图19所示,逻辑地址和逻辑块经过元信息处理之后,通过查询子集规则获得基址。

请再参阅图20,图20是本申请实施例提供的另一种元信息的处理的示意图;

如图20所示,将前一模块传递的逻辑块数据和逻辑地址的信息组合进行处理,其中,逻辑块数据用作纠错单元的有效数据部分,逻辑地址用作查询基址和计算偏移量。通过获得基址和页或者字线内的逻辑块数量,可计算放到每个元信息的基址值,并且,根据页或字线的大小,确定分配多少个逻辑块和元信息,即确定纠错单元的数量。

在本申请实施例中,通过提供一种元信息管理方法,该元信息管理方法应用于固态硬盘,该固态硬盘包括至少一条字线,每一字线包括至少两个数据页,每一数据页包括至少一个纠错单元,其中,所述纠错单元包括:逻辑块和元信息,所述方法包括:为同一数据页或同一字线内的数据的逻辑地址分配相同的基址;将同一数据页或同一字线内的每一元信息的逻辑地址以基址和偏移量的组合的形式进行存储。通过基址和偏移量的组合的形式存储逻辑地址,本申请实施例能够减少逻辑地址的占据元信息的空间,有利于增大纠错校验数据长度,从而能够提升固态硬盘的整体的纠错能力,延长固态硬盘的使用寿命。

请再参阅图21,图21是本申请实施例提供的一种固态硬盘控制器的固件系统的结构示意图;

如图21所示,固态硬盘的固态硬盘控制器包括固件系统,所述固件系统用于连接主机和闪存阵列,实现数据IO的处理;

具体的,该固态硬盘控制器的固件系统210,包括:

前端模块211(Front End,FE),用于获取主机命令,以产生I O操作,其中,所述前端模块还用于负责和主机(Host)的通信协议,主机命令、固态硬盘命令的解析等操作;

数据处理模块212(Data Process,DP),连接所述前端模块211,用于接收前端模块211发送的IO操作,并对所述IO操作进行处理,其中,所述数据处理模块212还用于命令级数据处理,如缓存数据等;

算法模块213(Flash Translation Layer,FTL),连接所述数据处理模块212,用于对所述IO操作进行映射处理,以确定下发的闪存阵列;

后端模块214(Back End,BE),连接所述算法模块213,用于接收所述算法模块213发送的IO操作,以对所述闪存阵列进行读写操作;

算法模块213(Flash Translation Layer,FTL)向所述固态硬盘控制器的后端模块214(Back End,BE)发送所述IO操作,以使所述固态硬盘控制器的后端模块214接收所述算法模块213发送的IO操作,并根据所述IO操作,向对应的闪存阵列或闪存介质进行操作,即完成数据到FLASH闪存的操作处理,所述操作包括读操作或写操作。

其中,固态硬盘控制器的前端模块211获取到主机命令后,进行处理以产生IO操作,并依次通过数据处理模块212、算法模块213以及后端模块214,以对闪存阵列进行操作。

请再参阅图22,图22是本申请实施例提供的另一种固态硬盘控制器的固件系统的结构示意图;

如图22所示,所述固件系统包括:

前端模块211,其中,所述前端模块211包括:命令处理模块2111,用于获取主机命令,以产生IO操作;

数据处理模块212,连接所述命令处理模块2111,用于接收所述命令处理模块2111发送的IO操作,并对所述IO操作进行处理;

算法模块213,连接所述数据处理模块212,用于接收所述数据处理模块212进行处理后的IO操作,对所述IO操作进行映射处理,以确定下发的闪存阵列;

后端模块214,其中,所述后端模块214包括:闪存处理模块2141,连接所述算法模块213,用于接收所述算法模块213发送的IO操作,以对所述闪存阵列进行读写操作;

其中,所述数据处理模块212,包括:

第一聚合处理模块2121,连接所述命令处理模块2111,用于进行聚合操作;

其中,所述算法模块213,包括:

第二聚合处理模块2132,连接所述闪存处理模块2141,用于进行聚合操作。

在本申请实施例中,所述数据处理模块212,还包括:

第一数据缓存模块2122,连接所述第一聚合处理模块2121,用于缓存数据;

所述算法模块213,还包括:

第二数据缓存模块2133,连接所述第二聚合处理模块2132,用于缓存数据;

元信息管理模块2131,连接所述第一聚合处理模块2121和所述第二聚合处理模块2132,用于管理元信息。

可以理解的是,在基本逻辑上,数据有两个通路,一个是主机(host)写入,另一个是垃圾回收(GC),即从NAND读取后又写入NAND,这两个通路均需要进行聚合处理。主机(Host)写入在数据处理模块212进行聚合,垃圾回收(GC)写入在算法模块213进行聚合。同时元信息管理模块2131处理两个通路聚合之后的信息处理。

请再参阅图23,图23是图22中的第一聚合处理模块的细化结构示意图;

如图23所示,所述第一聚合处理模块2121,包括:

第一规则管理模块2101,用于设定聚合规则,其中,所述聚合规则包括:子集的数量、子集的基址大小、缓存数据刷出条件;

其中,所述缓存数据刷出条件,指的是满足相同地址子集的数据量大小,其中,相同地址子集是指命令中的地址落在同一设定的子集的地址范围。根据具体需求设定缓存数据刷出条件,例如:若数据聚合限于一个数据页或一个字线的数据量大小,则此时缓存数据刷出条件为一个数据页或一个字线的数据量大小作为阈值,满足阈值则满足缓存数据刷出条件;若数据聚合限于N个数据页或N个字线的数据量大小,则此时缓存数据刷出条件为N个数据页或N个字线的数据量大小作为阈值,满足阈值则满足缓存数据刷出条件。

比如:缓存数据刷出条件为一个数据页或一个字线的数据量大小作为阈值,此时子集M0,地址范围为0~1023,CMD0的写地址为LBA0~3,CMD1的写地址为LBA32~39,CMD2LBA2048~2063那么CMD0和CMD1落在M0,如果CDM0和CMD1操作的数据总量符合阈值,那么就是聚合满了一个写操作需求量,满足缓存数据刷出条件,此时可以刷出。

第一识别聚合模块2102,用于识别逻辑地址,确定逻辑地址对应的子集,并将IO操作挂载于对应的IO链表,并为IO操作申请缓存空间;

其中,第一识别聚合模块2102,用于完成同类逻辑地址操作的聚合,具体的,对主机命令进行逻辑地址识别,根据主机命令内的逻辑地址落在哪个子集内的规则,将主机命令拆分后挂载到对应的子集IO链表。

请再参阅图25,图25是本申请实施例提供的一种IO链表的示意图;

如图25所示,命令采集器(CMD Fetcher)负责从前一个模块获得命令,转化为IO操作,并对输入命令进行逻辑地址识别,根据地址落在哪个子集则将该命令(CMD)对应的IO操作挂载于对应的IO链表上。IO调度器(IO Dispatcher)负责从IO链表中取出IO操作,对IO操作进行分类以及进行数据Buffer的分配,用于下一模块的操作,下一模块为算法模块或者闪存处理模块,例如:IO操作传递给算法模块,数据保留在Buffer内,刷出到闪存处理模块。通过命令采集器和IO调度器的操作,可以完成相同基址的IO操作聚集到同一链表上,也就是完成聚集的任务。

第一分类应用模块2103,用于处理子集数据,当子集数据量满足缓存数据刷出条件时,将子集数据刷出到闪存处理模块;

具体的,第一分类应用模块2103用于完成同类逻辑地址的操作数据的处理,例如:对子集IO进行处理,申请缓存用于数据写入,当子集数据量满足数据刷出条件时,将IO操作刷出到下一模块,例如:算法模块;

请再参阅图24,图24是图22中的第二聚合处理模块的细化结构示意图;

如图24所示,所述第二聚合处理模块2132,包括:

第二规则管理模块3201,用于设定聚合规则,其中,所述聚合规则包括:子集的数量、子集的基址大小、缓存数据刷出条件;

具体的,第二规则管理模块3201的处理过程与上述的第一规则管理模块2101相同,可参考上述的第一规则管理模块2101,在此不再赘述。

第二识别聚合模块3202,用于识别逻辑地址,确定逻辑地址对应的子集,并将IO操作挂载于对应的子集链表,即IO链表,并为IO操作申请缓存空间;

具体的,第二识别聚合模块3202的处理过程与上述的第一识别聚合模块2102相同,可参考上述的第一识别聚合模块2102,在此不再赘述。

第二分类应用模块3203,用于处理子集数据,当子集数据量满足缓存数据刷出条件时,将子集数据刷出到闪存处理模块。

具体的,第二分类应用模块3203用于完成同类逻辑地址的操作数据的处理,例如:对子集IO进行处理,申请缓存用于数据写入,当子集数据量满足数据刷出条件时,将IO操作刷出到下一模块,例如:闪存处理模块;

在本申请实施例中,第一聚合处理模块2121和第二聚合处理模块2132具有相同的功能模块,在IO处理过程中,均用于聚合操作。

请再参阅图26,图26是本申请实施例提供的一种子集链表的操作流程示意图;

如图26所示,子集链表的操作流程,包括:

步骤S261:根据预设的聚合规则,配置对应的参数,并进行初始化;

具体的,所述聚合规则包括:子集的数量、子集的基址大小、缓存数据刷出条件,通过配置所述子集的数量、子集的基址大小、缓存数据刷出条件分别对应的参数,并初始化该参数,以实现预设的聚合规则。

步骤S262:根据聚合规则进行命令检查,并拆分成IO后挂载到对应的子集链表;

具体的,根据接收到的主机命令,识别逻辑地址,确定逻辑地址对应的子集,并将IO操作挂载于对应的IO链表,即子集链表。

步骤S263:轮流处理子集链表,申请缓存分配给IO,并检查子集数据量,满足数据刷出条件则刷出到下一模块;

具体的,轮流处理子集链表的子集数据,为IO操作申请缓存空间,当子集数据量满足缓存数据刷出条件时,将子集数据刷出到算法模块或者闪存处理模块。其中,所述数据刷出条件为缓存数据刷出条件。具体的,所述缓存数据刷出条件,指的是满足相同地址子集的数据量大小,其中,相同地址子集是指命令中的地址落在同一设定的子集的地址范围。根据具体需求设定缓存数据刷出条件,例如:若数据聚合限于一个数据页或一个字线的数据量大小,则此时缓存数据刷出条件为一个数据页或一个字线的数据量大小作为阈值,满足阈值则满足缓存数据刷出条件;若数据聚合限于N个数据页或N个字线的数据量大小,则此时缓存数据刷出条件为N个数据页或N个字线的数据量大小作为阈值,满足阈值则满足缓存数据刷出条件。

请再参阅图27,图27是本申请实施例提供的一种主机写入数据的示意图;

如图27所示,以主机写入数据为例,当写入的数据具有不同逻辑地址范围的命令,如x,y,z代表不同地址范围的数据,假设按照x,y,z为三个逻辑地址子集,经过聚合之后,不同子集的数据会聚合到不同的缓存内,当缓存管理满足数据刷出条件时,将数据刷出到闪存,那么这些数据就具有相同范围的逻辑地址,那么这些逻辑块的地址保存到元信息内时,可以以相同基址加不同偏移量表达。同理,在垃圾回收处理时,除了主机写入变为垃圾回收写入,其他具有相同处理方式。

可以理解的是,本申请并不关注数据写入到哪个数据页或者哪个字线,数据写入到具体的数据页或字线由具体映射算法确定。

在本申请实施例中,通过提供一种固态硬盘控制器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的元信息管理方法。通过基址和偏移量的组合的形式存储逻辑地址,本申请实施例能够减少逻辑地址的占据元信息的空间,有利于增大纠错校验数据长度,从而能够提升固态硬盘的整体的纠错能力,延长固态硬盘的使用寿命。

本申请实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,可使得上述一个或多个处理器可执行上述任意方法实施例中的元信息管理方法,例如,执行上述任意方法实施例中的元信息管理方法。

以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

36页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种存储器电路及其存储器修补方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!