G06F11/07
1.一种固态硬盘错误数据处理方法,其特征在于,包括:
获取主机发送的数据读取命令;
根据所述数据读取命令,从固态硬盘的闪存中提取待读取数据;
将所述待读取数据通过直接闪存存取模块发送至主机内存中,所述待读取数据包括正 确数据和不可纠正数据;
通过主控模块在缓存中申请纠错空间,所述纠错空间的大小等于所述不可纠正数据所 占空间的大小;
主控模块通过高阶纠错算法对所述不可纠正数据进行纠错生成纠正数据,并将所述纠 正数据发送至所述纠错空间;
通过所述直接闪存存取模块将所述纠正数据发送至主机内存中,覆盖存储在主机内存 中的所述不可纠正数据。
2.根据权利要求1所述的错误数据处理方法,其特征在于,所述根据所述数据读取命 令,从固态硬盘的闪存中提取待读取数据的步骤包括:
所述主控模块在接收到所述数据读取命令后,根据缓存空间判断所述数据读取命令是 否需要拆分;
如果所述数据读取命令需要拆分,将所述数据读取命令拆分成多个数据读取子命令;
根据所述数据读取命令或所述数据读取子命令,为每个命令要求的所述待读取数据申 请缓存空间;
从固态硬盘的闪存中提取所述待读取数据至申请的缓存空间内。
3.根据权利要求2所述的错误数据处理方法,其特征在于,所述从固态硬盘的闪存中提 取所述待读取数据至申请的缓存空间内的步骤包括:
通过所述主控模块判断所述待读取数据中是否存在不可纠正数据;
如果所述待读取数据中存在不可纠正数据,记录错误数据信息,所述错误数据信息包 括所述不可纠正数据存储的位置以及存储所述不可纠正数据需要的缓存空间;
将所述待读取数据通过直接闪存存取模块发送至主机内存中。
4.根据权利要求1所述的错误数据处理方法,其特征在于,所述方法还包括:
在将所述待读取数据通过直接闪存存取模块发送至主机内存中后,释放已申请的缓存 空间。
5.根据权利要求1所述的错误数据处理方法,其特征在于,所述方法还包括:
在通过所述直接闪存存取模块将所述纠正数据发送至主机内存中,覆盖存储在主机内 存中的所述不可纠正数据后,释放所述纠错空间。
6.根据权利要求1所述的错误数据处理方法,其特征在于,所述方法还包括:
在覆盖存储在主机内存中的所述不可纠正数据后,通过所述主控模块生成读取完成信 息,并将所述读取完成信息发送至所述主机,结束所述数据读取命令。
7.一种固态硬盘错误数据处理装置,其特征在于,包括:
命令获取单元,用于获取主机发送的数据读取命令;
数据提取单元,用于根据所述数据读取命令,从固态硬盘的闪存中提取待读取数据;
数据发送单元,用于将所述待读取数据通过直接闪存存取模块发送至主机内存中,所 述待读取数据包括正确数据和不可纠正数据;
纠错空间单元,用于通过主控模块在缓存中申请纠错空间,所述纠错空间的大小等于 所述不可纠正数据所占空间的大小;
纠正数据生成单元,用于通过主控模块的高阶纠错算法对所述不可纠正数据进行纠错 生成纠正数据,并将所述纠正数据发送至所述纠错空间;
数据覆盖单元,用于通过所述直接闪存存取模块将所述纠正数据发送至主机内存中, 覆盖存储在主机内存中的所述不可纠正数据。
8.根据权利要求7所述的错误数据处理装置,其特征在于,所述数据提取单元包括:
拆分判断子单元,用于在所述主控模块接收到所述数据读取命令后,根据缓存空间判 断所述数据读取命令是否需要拆分;
子命令拆分子单元,用于如果所述数据读取命令需要拆分,将所述数据读取命令拆分 成多个数据读取子命令;
缓存申请子单元,用于根据所述数据读取命令或所述数据读取子命令,为每个命令要 求的所述待读取数据申请缓存空间;
缓存数据子单元,用于从固态硬盘的闪存中提取所述待读取数据至申请的缓存空间 内。
9.根据权利要求8所述的错误数据处理装置,其特征在于,所述数据提取单元还包括:
错误数据判断子单元,用于通过所述主控模块判断所述待读取数据中是否存在不可纠 正数据;
错误数据记录子单元,用于如果所述待读取数据中存在不可纠正数据,记录错误数据 信息,所述错误数据信息包括所述不可纠正数据存储的位置以及存储所述不可纠正数据需 要的缓存空间;
待读取数据发送子单元,用于将所述待读取数据通过直接闪存存取模块发送至主机内 存中。
10.根据权利要求7所述的错误数据处理装置,其特征在于,所述装置还包括:
缓存空间释放子单元,用于在将所述待读取数据通过直接闪存存取模块发送至主机内 存中后,释放已申请的缓存空间。
本申请涉及固态硬盘技术领域,尤其涉及一种固态硬盘错误数据处理方法及装 置。
固态硬盘一般包括总线控制模块(如PCIe控制模块),主控模块(CPU模块),静态随 机存取存储器模块(SRAM模块),直接闪存存取模块(DMA模块),动态随机存储器模块(DDR模 块),纠错模块以及闪存模块(FLASH模块)等。在进行数据读取时,主控模块收到主机的读数 据命令,在数据缓存中申请一块缓存空间;主控模块再通过FLASH控制模块从闪存中将该命 令要求的所有数据读取到该缓存空间,并通过DMA模块将该缓存空间数据由PCIe控制模块 搬移到主机的相应闪存空间;最后主控回复主机读数据命令完成信息。
由于固态硬盘的闪存特性,存储在闪存中的数据会出现错误翻转,产生错误数据, 在读取数据时常通过纠错模块对缓存中的错误数据进行纠错。但从闪存读取数据到纠错模 块进行纠错时可能会出现部分不可纠正的错误数据,此时主控模块需要进行更高阶的纠错 算法纠正错误数据,例如调整闪存的参考电压,再次读取错误数据到纠错模块进行纠错,多 次迭代后最终纠正错误数据。
现有技术中,当出现读取不可纠正数据时,主控模块会挑选出不可纠正的数据块, 然后使用高阶的纠错算法,多次迭代纠错,直到所有数据都纠正后,再通过DMA模块将该缓 存内的数据搬移到主机内存。而使用高阶纠错算法时需要多次迭代,消耗较长时间,且只有 该缓存所有的数据搬移到主机内存后,该缓存才能被释放。因此,传统错误数据的处理方法 在出现不可纠正数据时,缓存被长期占用不能释放,并且在多条命令均出现读不可纠正错 误时,缓存将会被大量占用,主控模块能申请到的有效缓存减少,从而使得固态硬盘读写数 据性能下降,甚至出现主机读写命令申请不到缓存的情况,导致读写命令执行失败。
本申请提供了一种固态硬盘错误数据处理方法及装置,以解决传统错误数据的处 理方法在出现不可纠正数据时,缓存被长期占用的问题。
第一方面,本申请提供一种固态硬盘错误数据处理方法,包括:
获取主机发送的数据读取命令;
根据所述数据读取命令,从固态硬盘的闪存中提取待读取数据;
将所述待读取数据通过直接闪存存取模块发送至主机内存中,所述待读取数据包 括正确数据和不可纠正数据;
通过主控模块在缓存中申请纠错空间,所述纠错空间的大小等于所述不可纠正数 据所占空间的大小;
主控模块通过高阶纠错算法对所述不可纠正数据进行纠错生成纠正数据,并将所 述纠正数据发送至所述纠错空间;
通过所述直接闪存存取模块将所述纠正数据发送至主机内存中,覆盖存储在主机 内存中的所述不可纠正数据。
可选的,所述根据所述数据读取命令,从固态硬盘的闪存中提取待读取数据的步 骤包括:
所述主控模块在接收到所述数据读取命令后,根据缓存空间判断所述数据读取命 令是否需要拆分;
如果所述数据读取命令需要拆分,将所述数据读取命令拆分成多个数据读取子命 令;
根据所述数据读取命令或所述数据读取子命令,为每个命令要求的所述待读取数 据申请缓存空间;
从固态硬盘的闪存中提取所述待读取数据至申请的缓存空间内。
可选的,所述从固态硬盘的闪存中提取所述待读取数据至申请的缓存空间内的步 骤包括:
通过所述主控模块判断所述待读取数据中是否存在不可纠正数据;
如果所述待读取数据中存在不可纠正数据,记录所述错误数据信息,所述错误数 据信息包括所述不可纠正数据存储的位置以及存储所述不可纠正数据需要的缓存空间;
将所述待读取数据通过直接闪存存取模块发送至主机内存中。
可选的,所述方法还包括:
在将所述待读取数据通过直接闪存存取模块发送至主机内存中后,释放已申请的 缓存空间。
可选的,所述方法还包括:
在通过所述直接闪存存取模块将所述纠正数据发送至主机内存中,覆盖存储在主 机内存中的所述不可纠正数据后,释放所述纠错空间。
可选的,所述方法还包括:
在覆盖存储在主机内存中的所述不可纠正数据后,通过所述主控模块生成读取完 成信息,并将所述读取完成信息发送至所述主机,结束所述数据读取命令。
另一方面,本申请还提供一种固态硬盘错误数据处理装置,包括:
命令获取单元,用于获取主机发送的数据读取命令;
数据提取单元,用于根据所述数据读取命令,从固态硬盘的闪存中提取待读取数 据;
数据发送单元,用于将所述待读取数据通过直接闪存存取模块发送至主机内存 中,所述待读取数据包括正确数据和不可纠正数据;
纠错空间单元,用于通过主控模块在缓存中申请纠错空间,所述纠错空间的大小 等于所述不可纠正数据所占空间的大小;
纠正数据生成单元,用于通过主控模块的高阶纠错算法对所述不可纠正数据进行 纠错生成纠正数据,并将所述纠正数据发送至所述纠错空间;
数据覆盖单元,用于通过所述直接闪存存取模块将所述纠正数据发送至主机内存 中,覆盖存储在主机内存中的所述不可纠正数据。
可选的,所述数据提取单元包括:
拆分判断子单元,用于在所述主控模块接收到所述数据读取命令后,根据缓存空 间判断所述数据读取命令是否需要拆分;
子命令拆分子单元,用于如果所述数据读取命令需要拆分,将所述数据读取命令 拆分成多个数据读取子命令;
缓存申请子单元,用于根据所述数据读取命令或所述数据读取子命令,为每个命 令要求的所述待读取数据申请缓存空间;
缓存数据子单元,用于从固态硬盘的闪存中提取所述待读取数据至申请的缓存空 间内。
可选的,所述数据提取单元还包括:
错误数据判断子单元,用于通过所述主控模块判断所述待读取数据中是否存在不 可纠正数据;
错误数据记录子单元,用于如果所述待读取数据中存在不可纠正数据,记录所述 错误数据信息,所述不可纠正数据信息包括所述不可纠正数据存储的位置以及存储所述不 可纠正数据需要的缓存空间;
待读取数据发送子单元,用于将所述待读取数据通过直接闪存存取模块发送至主 机内存中。
可选的,所述装置还包括:
缓存空间释放子单元,用于在将所述待读取数据通过直接闪存存取模块发送至主 机内存中后,释放已申请的缓存空间。
由以上技术方案可知,本申请提供一种固态硬盘错误数据处理方法,方法在获取 到主机发送的数据读取命令后,根据数据读取命令要求读取的数据内容,从固态硬盘的闪 存中提取待读取数据,并将待读取数据发送至主机内存中;再通过主控模块在缓存中申请 与待读取数据中不可纠正数据所占空间大小相同的纠错空间,以及对不可纠正数据进行高 阶纠错,生成纠正数据存储在纠错空间中;最后将存储在主机内存中的不可纠正数据用纠 正数据进行覆盖,完成错误数据的处理过程。采用本发明提供的错误数据处理方法,当读取 的数据中存在不可纠正数据时,依然可以释放大部分数据缓存,从而使主控模块的缓存空 间不受限制,增加固态硬盘读写性能,不会由于缓存缺乏而阻塞其他读写命令执行。解决传 统错误数据的处理方法在出现不可纠正数据时,缓存被长期占用的问题。
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简 单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还 可以根据这些附图获得其他的附图。
图1为一种固态硬盘错误数据处理方法的流程示意图;
图2为本申请提供方法中拆分数据读取命令的流程示意图;
图3为本申请提供方法中判断不可纠正数据的流程示意图;
图4为一种固态硬盘错误数据处理装置的结构示意图;
图5为本申请提供装置中数据提取单元的结构示意图;
图6为本申请提供的一个实施例中数据提取单元的结构示意图。
下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时, 除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施 方式并不代表与本申请相一致的所有实施方式。仅是与权利要求书中所详述的、本申请的 一些方面相一致的系统和方法的示例。
在本申请提供的技术方案中,固态硬盘包括闪存,主控模块,直接闪存存取模块 (DMA模块)以及纠错模块,在实际读取数据过程中,储存在硬盘闪存中的数据在固态硬盘接 入主机后,由主控模块调用至缓存空间内,再通过直接闪存存取模块将数据发送到主机内 存中,完成数据读取。当调用的数据中存在错误数据时,会通过纠错模块,将错误数据进行 纠正后再发送给主机内存。但对于部分错误数据,无法直接通过纠错模块纠正错误,这种错 误数据称为不可纠正数据,处理不可纠正数据时,需要更高阶的纠正算法才能纠正错误,相 应的数据处理时间也大大延长,使得调用到缓存中的数据要一直占用缓存空间,直到高阶 纠错算法将错误数据纠正。为了减轻错误数据对缓存空间的占用,本申请提供一种固态硬 盘错误数据处理方法。
参见图1,为一种固态硬盘错误数据处理方法的流程示意图。可见,本申请提供的 固态硬盘错误数据处理方法,包括以下步骤:
S101:获取主机发送的数据读取命令;
S102:根据数据读取命令,从固态硬盘的闪存中提取待读取数据;
S103:将待读取数据通过直接闪存存取模块发送至主机内存中,待读取数据包括 正确数据和不可纠正数据;
S104:通过主控模块在缓存中申请纠错空间,纠错空间的大小等于不可纠正数据 所占空间的大小;
S105:主控模块通过高阶纠错算法对不可纠正数据进行纠错生成纠正数据,并将 纠正数据发送至纠错空间;
S106:通过直接闪存存取模块将纠正数据发送至主机内存中,覆盖存储在主机内 存中的不可纠正数据。
以上步骤可以看出,本申请提供的错误数据处理方法在实际应用时,先将正确数 据和错误数据全部发送至主机内存中,再在缓存中为不可纠正数据申请纠错空间,然后通 过高阶纠错算法对不可纠正数据进行纠正,最后用纠正后的数据覆盖在主机内存中的错误 数据,使主机内存中仅存储正确数据。由于,先将正确数据和错误数据均发送至了主机内存 中,因此在进行纠错过程中,不必将所有读取的数据均放在缓存空间内等待纠正错误,仅需 要在缓存中申请存储错误数据的空间,因此大部分缓存可以得以释放,以便继续进行数据 读取。
进一步地,如图2所示,在本申请的部分实施例中,步骤S102,根据数据读取命令, 从固态硬盘的闪存中提取待读取数据的步骤包括:
S201:主控模块在接收到数据读取命令后,根据缓存空间判断数据读取命令是否 需要拆分;
S202:如果数据读取命令需要拆分,将数据读取命令拆分成多个数据读取子命令;
S203:根据数据读取命令或数据读取子命令,为每个命令要求的待读取数据申请 缓存空间;
S204:从固态硬盘的闪存中提取待读取数据至申请的缓存空间内。
由于固态硬盘在进行数据读取时,处理单位的数据大小具有限制,因此当主机发 送的数据读取命令较大时,需要对命令进行拆分,以便同时进行处理,提高数据处理效率。 应当说明的是,在本实施例中,主控模块接收到的数据读取命令可以包括多条命令,每个命 令对应一个缓存空间。
例如,固态硬盘的主控模块中,总计有数据缓存空间256KB,一个FLASH(闪存)页的 大小为16KB,纠错模块进行纠错单位空间为2KB。主机向固态硬盘发送4个数据读取命令,每 个数据读取命令要求读取的数据大小为128KB。主控模块在收到4个命令后,分别将每个命 令拆分为3个子命令,总共12个子命令,即每个子命令读取的数据为48KB。主控模块再为每 个子命令申请相应的数据缓存空间,由于总共有256KB缓存,所以能为5个子命令提供缓存。
进一步地,如图3所示,对于步骤S204,从固态硬盘的闪存中提取待读取数据至申 请的缓存空间内的步骤还进一步包括:
S2041:通过主控模块判断待读取数据中是否存在不可纠正数据;
S2042:如果待读取数据中存在不可纠正数据,记录错误数据信息,错误数据信息 包括不可纠正数据存储的位置以及存储不可纠正数据需要的缓存空间;
S2043:将待读取数据通过直接闪存存取模块发送至主机内存中。
本申请提供的技术方案中,当待读取数据从固态硬盘的闪存调用至申请的缓存空 间后,主控模块控制纠错模块对待读取数据进行判断,确定待读取数据中是否存在错误数 据,如果待读取数据中存在错误数据,再通过纠错模块对错误数据进行纠错。此时,错误数 据中,可纠正的数据即被纠正为正确数据,而不可纠正的数据仍旧存在,相应的,记录错误 数据信息,并将所有待读取数据均发送至主机内存内。本实施例中,记录的错误数据信息是 指,待读取数据中存在的,不可纠正数据所在的数据存储位置以及不可纠正数据的大小,以 便在后续数据处理中使用纠正后的数据覆盖错误数据。另外,如果待读取数据中不存在不 可纠正数据,则直接将对应的待读取数据通过DMA模块发送至主机内存中即可。
在本申请提供的部分实施例中,在将待读取数据通过直接闪存存取模块发送至主 机内存中后,释放已申请的缓存空间。即,当正确数据和不可纠正数据都发送到主机内存 后,释放用于存放待读取数据的缓存空间,以便执行其他数据读取指令以及对不可纠正数 据执行高阶纠错算法。本实施例中,释放缓存空间,可以使处理不可纠正数据过程占用的缓 存空间得到利用,增加固态硬盘的读写性能。
进一步地,在通过直接闪存存取模块将纠正数据发送至主机内存中,覆盖存储在 主机内存中的不可纠正数据后,释放纠错空间。同样,释放纠错空间可以在纠正错误数据 后,将处理错误数据的空间也得到利用,便于在下一阶段处理过程中针对数据读取命令分 配缓存空间。
仍以上述示例为例,当固态硬盘的主控模块中,总数据缓存空间为256KB,一个 FLASH(闪存)页的大小为16KB,纠错模块进行纠错单位空间为2KB时。每个子命令需要从固 态硬盘的闪存中读取3个页的数据,如果每个页中均有2KB的数据出现不可纠正的错误。则 按照本申请提供的处理方法,主控模块将所有正确数据和错误数据都传入主机内存,总共 会释放48KB×5=240KB的缓存,然后为每个不可纠正数据申请数据缓存空间,共消耗5×3 ×2KB=30KB,进而,在待读取数据发送到主机内存后,实际释放的缓存空间为240KB–30KB =210KB。这210KB的缓存空间可以为剩余的其他子命令提供缓存,使得其他子命令也能正 常执行。
在一种技术方案中,在覆盖存储在主机内存中的所述不可纠正数据后,通过所述 主控模块生成读取完成信息,并将所述读取完成信息发送至所述主机,结束所述数据读取 命令。通过读取完成信息,可以将固态硬盘数据的读取进程反馈给主机,以便主机根据反馈 的结果再次发送数据读取命令,使固态硬盘在数据读取过程中有序执行读取命令,提高数 据读取的效率。
基于上述处理方法,如图4所示,本申请还提供一种固态硬盘错误数据处理装置, 包括:
命令获取单元1,用于获取主机发送的数据读取命令;
数据提取单元2,用于根据数据读取命令,从固态硬盘的闪存中提取待读取数据;
数据发送单元3,用于将待读取数据通过直接闪存存取模块发送至主机内存中,待 读取数据包括正确数据和不可纠正数据;
纠错空间单元4,用于通过主控模块在缓存中申请纠错空间,纠错空间的大小等于 不可纠正数据所占空间的大小;
纠正数据生成单元5,用于通过主控模块的高阶纠错算法对不可纠正数据进行纠 错生成纠正数据,并将纠正数据发送至纠错空间;
数据覆盖单元6,用于通过直接闪存存取模块将纠正数据发送至主机内存中,覆盖 存储在主机内存中的不可纠正数据。
在一种技术方案中,如图5所示,所述数据提取单元2包括:
拆分判断子单元21,用于在主控模块接收到数据读取命令后,根据缓存空间判断 数据读取命令是否需要拆分;
子命令拆分子单元22,用于如果数据读取命令需要拆分,将数据读取命令拆分成 多个数据读取子命令;
缓存申请子单元23,用于根据数据读取命令或数据读取子命令,为每个命令要求 的待读取数据申请缓存空间;
缓存数据子单元24,用于从固态硬盘的闪存中提取待读取数据至申请的缓存空间 内。
在一种技术方案中,如图6所示,数据提取单元2还包括:
错误数据判断子单元25,用于通过主控模块判断待读取数据中是否存在不可纠正 数据;
错误数据记录子单元26,用于如果待读取数据中存在不可纠正数据,记录错误数 据信息,错误数据信息包括不可纠正数据存储的位置以及存储不可纠正数据需要的缓存空 间;
待读取数据发送子单元27,用于将待读取数据通过直接闪存存取模块发送至主机 内存中。
在一种技术方案中,所述装置还包括:
缓存空间释放子单元,用于在将待读取数据通过直接闪存存取模块发送至主机内 存中后,释放已申请的缓存空间。
由以上技术方案可知,本申请提供一种固态硬盘错误数据处理方法,方法在获取 到主机发送的数据读取命令后,根据数据读取命令要求读取的数据内容,从固态硬盘的闪 存中提取待读取数据,并将待读取数据发送至主机内存中;再通过主控模块在缓存中申请 与待读取数据中不可纠正数据所占空间大小相同的纠错空间,以及对不可纠正数据进行高 阶纠错,生成纠正数据存储在纠错空间中;最后将存储在主机内存中的错误数据用纠正数 据进行覆盖,完成错误数据的处理过程。采用本发明提供的错误数据处理方法,当读取的数 据中存在不可纠正数据时,依然可以释放大部分数据缓存,从而使主控模块的缓存空间不 受限制,增加固态硬盘读写性能,并且不会由于缓存缺乏而阻塞其他读写命令执行。解决传 统错误数据的处理方法在出现不可纠正数据时,缓存被长期占用不能释放的问题。
本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只 是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人 员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属 于本申请的保护范围。
本文发布于:2023-04-15 07:15:40,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/2/86721.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |