一种降低固态硬盘响应延迟的方法与流程

文档序号:12122624阅读:6425来源:国知局
一种降低固态硬盘响应延迟的方法与流程

本发明涉及固态硬盘控制技术,特别涉及一种降低固态硬盘响应延迟的方法。



背景技术:

SSD固态硬盘已经被广泛应用于各种场合,在不同场景下,对其指标要求有较大差别。消费类产品以平均性能为主要目标;而在企业级应用场景下,则对性能一致性要求很高。

以读性能为例,企业级产品可能要求比例高达99%的命令的随机读响应延迟小于500us,一个主机获取命令的过程包含了主机与SSD之间的数据传输;SSD内的数据加载。主机与SSD之间的数据传输的时间是基本固定的,SSD内的数据加载的时间与NAND种类、NAND状态有关。

在正常情况下,也就说NAND内的数据单次读出就成功且正确或只需要普通的ECC纠错就可完成,则SSD内单笔数据加载可以控制在150us内,可满足需求。但是如果有异常发生,导致NAND无法通过ECC纠错,而需要进入其它纠错状态Read Retry或多次纠错才可能恢复该数据,则其消耗的时间将是毫秒级别,超过企业级对访问响应延迟的要求。



技术实现要素:

针对以上缺陷,本发明目的如何降低固态硬盘响应延迟,特别是降低在主机访问NAND时发生异常需要进行多次纠错的概率,进而实现整体上降低固态硬盘响应延迟。

为了解决以上问题本发明提出了,一种降低固态硬盘响应延迟的方法,其特征在于在固态硬盘控制器中增加数据监控线程和异常数据刷新线程,所述数据监控线程在固态硬盘控制器空闲时自动扫描固态硬盘中存储的有效数据块,扫描完成对该有效数据块的数据读取并校验该数据块数据是否正确,如果存在错误怎判定为数据异常,则将存在数据异常的数据块信息进行记录;所述异常数据刷新线程在固态硬盘控制器空闲时根据数据监控线程记录的存在数据异常的数据块进行数据纠错,并将纠错后的数据刷新到固态硬盘的其它空闲存储块中。

所述的降低固态硬盘响应延迟的方法,其特征在于同时各个数据块中增加时间戳记录器,在固态硬盘控制向各个数据块中写入数据时,更新时间戳记录器;各个数据块还增加擦除次数计数器,擦除次数计数器所在的数据块被擦除一次则擦除次数计数器数据加1,所述数据监控线程先读取各个有效数据块时间戳记录器和擦除次数计数器,只有当时间戳记录器超过预先设定的时间或擦除次数计数器超过预先设定的扫描擦除阀值才对该有效数据块数据进行扫描。

所述的降低固态硬盘响应延迟的方法,其特征在于所述的异常数据刷新线程还包括坏块标识模块,所述坏块标识模块监控各个数据块擦除次数计数器,当数据块中的擦除次数计数器超过擦除寿命阀值时,将该数据块中的数据刷新到固态硬盘的其它空闲存储块中,并在坏块表中将该数据块标识为坏块。

所述的降低固态硬盘响应延迟的方法,其特征在于所述异常数据刷新线程在完成将纠错后的数据刷新到固态硬盘的其它空闲存储块中后,将该存在数据异常的数据块进行擦除操作,并写入测试数据,然后读取该数据块的测试数据,判断数据是否存在异常,如果数据存在异常,则在坏块表中将该数据块标识为坏块;如果数据正常则对该数据块进行擦除操作,完成对该数据块回收。

所述的降低固态硬盘响应延迟的方法,其特征在于所述的校验该数据块数据是否正确为根据固态硬盘所采用的存储芯片可支持的可纠错的比特阀值来确定,当读取的数据块数据中各个数据页的数据,只要其中一个数据页的数据发生数据位反转的位数超过比特阀值时,判定该数据块数据不正确存在异常。

所述的降低固态硬盘响应延迟的方法,其特征在于根据固态硬盘支持的最大并发操作存储空间的通道数,为每个通道分别创建各自独立工作的数据监控线程和异常数据刷新线程。

本发明通过在固态硬盘空闲时增加数据异常检查机制,利用空闲时完成数据的恢复和迁移,大大降低主机正常数据访问时发生异常的概率,整体上降低固态硬盘响应延迟,提高主机数据访问的速度。

附图说明

图1是Nand Flash存储结构示意图;

图2是Nand Flash读取存在异常时的操作流程示意图;

图3是数据监控线程操作流程示意图;

图4是将异常数据刷新到新的空闲数据块的示意图。

具体实施方式

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

图1是Nand Flash存储结构示意图;固态硬盘一般都支持并发操作,也就是支持多通道DIE同时操作物理存储空间,每个通道DIE由若干数据块Block组成,每个Block又由若干数据页Page组成;不同的Flash工艺和技术支持的数目不同,本实施例以一个DIE由1024个Block组成,一个Block由256个Page组成,Block是Flash的最小擦除操作单位,Page是Flash的最小写入单位,每重新写入一个Page的数据时,都需要重新计算该Page的ECC校验数据,并写入校验数据区。

图2是Nand Flash读取存在异常时的操作流程示意图,当NAND控制器向NAND发送读命令,NAND内部数据加载后将数据返回给NAND控制器,数据中包括写入时的写入的ECC数据,NAND控制器根据读出的有效数据和ECC数据进行数据校验,判断读出的数据是否正确。对于不同的工艺和技术的Nand Flash所支持的ECC纠错bit数不同,目前存在支持1~128bit/1KB的ECC算法,未来还可能支持更多bit的ECC算法,支持几bit的ECC就是允许每1KB的数据中出现位反转的最大bit数,也就是阀值TH,只要该Page中各个1KB数据单元都只是发生不超过该bit数的位反转,都可以通过ECC算法完成数据纠错和恢复。当数据发生异常无法通过一次纠错时,NAND FLASH内部还存在通过调整读取的电气配置参数,如调整阀值电压等方式来重新读取该Page数据时,并重新进行校验,通过不断尝试直到读出正确的数据,或直到各种尝试都无法读出正确的数据,返回前端主机接口,明确标识该数据异常。因此当数据存在异常时,整个读取数据的响应延迟非常大,严重影响主机的响应时间。

图3是数据监控线程操作流程示意图;本发明就是为了尽可能的降低前端主机在访问数据是遇到数据异常的概率,通过在固态硬盘控制器中增加增加数据监控线程和异常数据刷新线程。由于硬盘都支持并发操作,优选根据通道DIE的数目分别单独增加数据监控线程和异常数据刷新线程,各个通道DIE分别进行扫描和刷新;数据监控线程在固态硬盘控制器空闲时,也就是前端主机没有访问时自动扫描固态硬盘中存储的有效数据块,扫描完成对该有效数据块的数据读取并校验该数据块数据是否正确,如果存在错误且数据无法纠错,怎判定为数据异常,则将存在数据异常的数据块信息进行记录;选定要扫描的Block,逐个读取各个Page的数据,启动ECC纠错模块,当数据发生反转的bit数大于该FLASH的阀值TH时,判定该数据存在异常,将该Block标识为异常;当数据发生反转的bit数不大于该FLASH的阀值TH时,进行数据纠错,返回正确的数据。

图4是将异常数据刷新到新的空闲数据块的示意图,异常数据刷新线程在固态硬盘控制器空闲时根据数据监控线程记录的存在数据异常的数据块Block进行数据重读和纠错,并将纠错后的数据刷新到固态硬盘的其它空闲存储块中。同一个通道DIE的异常数据一般都优先刷新到该通道DIE的其它空闲Block中。

根据NAND FLASH的物理特性,同一个Block的可编程次数是有一定寿命限制的,被编程次数越多,该Block出现数据异常的概率越高,因此数据监控线程进行扫描时可根据Block被编程次数的大小,优先扫描被编程次数多的Block,而Block被编程次数可通过该Block的擦除操作次数来体现,通过记录Block的擦除操作次数就可实现编程次数的监控。

同样NAND FLASH中的存储单元都是通过电荷的多少来区分识别数据,因此数据存储时间越长,则该位数据上的电荷存在泄漏的概率也就越高,也就是存在数据异常的概率也越高,因此还可以增加记录Block被编程的时间,因此数据监控线程进行扫描时可根据Block被编程的时间,优先扫描被编程次时间久的Block。

以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。

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