一种固态硬盘设备
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种固态硬盘设备。
背景技术
固态硬盘(Solid State Disk, SSD)因其高速读写性能、低故障率,正在逐步取代机械硬盘,成为主流存储设备。固态硬盘内部通过NAND闪存颗粒存储数据,随着技术的发展,NAND闪存颗粒从单层单元(Single-Level Cell, SLC)、多层单元MLC(Multi-LevelCell)、三层单元(Trinary-Level Cell, TLC)演变到3D NAND,存储密度越来越高,单位GB的存储成本不断下降,与此同时,存储数据的稳定性却越来越低。早期的固态硬盘能够承受十万次以上的擦写,而现在的3D NAND颗粒只能够承受几百次的擦写,对于数据擦写频繁的场景,例如服务器领域,此类固态硬盘的工作寿命是难以接受的。
为了综合利用不同NAND颗粒的特性优势,中国专利CN104331252B设计了一种异构NAND固态硬盘结构,同时包括多个不同速度的NAND阵列,并且能够减少在对异构NAND固态硬盘进行数据读取时的ECC校验所造成的读取延迟,从而加快数据的读取速度,降低在读取数据因对数据进行ECC校验而产生的能耗,进而降低对异构NAND固态硬盘的数据读取功耗。
如何以最大限度的利用高成本NAND颗粒的擦写次数高、寿命长的特性,同时,保护低成本NAND颗粒,延长其使用寿命,以及,将异构NAND固态硬盘的I/O速率保持在最佳的状态,是本申请要解决的技术问题。
发明内容
为此,本发明提供一种固态硬盘设备,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明实施例的一个方面,提供了一种固态硬盘设备,包括:
通过总线连接的SSD控制器、第一闪存阵列、第二闪存阵列,所述SSD控制器包括第一微处理器、第二微处理器、缓存控制器、主机接口控制器、闪存控制器、ECC(Error CorrectingCode, 错误检查和纠正)模块,所述第一闪存阵列的存储密度小于所述第二闪存阵列;
所述第一微处理器与所述第二微处理器均与所述闪存控制器、所述ECC模块连接;
所述第一微处理器被设定为可向所述第一闪存阵列写入数据,以及可读取所述第一闪存阵列和所述第二闪存阵列的数据,在写入或读取数据期间,将使用的通道标记写保护;
所述第二微处理器被设定为可读取所述第一闪存阵列的数据,以及可向所述第二闪存阵列写入数据,在写入或读取数据期间,将使用的通道标记写保护;
所述第一微处理器设定为通过所述主机接口控制器与主机通信,所述第二微处理器设定为不与所述主机接口控制器通信。
可选地,所述第一闪存阵列为SLC闪存,所述第二闪存阵列为MLC闪存、或TLC闪存、或3D NAND闪存;或者,
所述第一闪存阵列为MLC闪存,所述第二闪存阵列为TLC闪存、或3D NAND闪存;或者,
所述第一闪存阵列为TLC闪存,所述第二闪存阵列为3D NAND闪存。
可选地,所述固态硬盘设备还包括FTL(Flash Translation Layer, 闪存转换)模块,所述FTL模块的地址映射表被划分为第一地址映射表和第二地址映射表,所述第一地址映射表为所述第一闪存阵列的地址映射表,所述第二地址映射表为所述第二闪存阵列的地址映射表;
所述第一微处理器设定为执行数据写入指令时,仅访问所述第一地址映射表。
可选地,所述第一地址映射表采用页映射机制,所述第二地址映射表采用块映射机制。
可选地,所述第一地址映射表和所述第二地址映射表存储在第二闪存阵列。
可选地,所述第二微处理器被设定为监测所述第一闪存阵列的数据存储时间和读取次数,根据所述数据存储时间和读取次数确定所述第一闪存阵列的冷数据,将所述冷数据写入所述第二闪存阵列,擦除所述第一闪存阵列中的冷数据。
可选地,所述第二微处理器被设定为周期性地对所述第二闪存阵列存储的数据进行ECC校验,当所述第二闪存阵列的误码率达到任一预设门限时,将校验周期缩短至预设的与所述任一预设门限对应的时长。
可选地,所述第二微处理器被设定为对所述第一闪存阵列和所述第二闪存阵列执行均衡损耗算法的处理过程。
可选地,所述第二微处理器被设定为对所述第一闪存阵列和所述第二闪存阵列执行垃圾回收算法的处理过程。
可选地,所述第二微处理器被设定为对所述第一闪存阵列存储的数据进行ECC校验,以及,对所述第二闪存的阵列存储的数据进行ECC校验。
可选地,所述第一微处理器的计算性能大于所述第二微处理器。
可选地,所述第一微处理器还被设定为可向所述第二闪存阵列写入数据,条件是:所述第一闪存阵列没有空闲的空间。
本发明实施例,通过两个微处理器对闪存阵列进行管理,其中一个微处理器用于与主机通信,以及对存储密度较低即擦写次数较高的闪存阵列执行主机的写入任务,另一个微处理器用于将存储密度较低的闪存阵列数据搬运至存储密度较高的闪存阵列;一方面,将擦写集中在承受擦写次数较高的闪存阵列,能够延长固态硬盘使用寿命,同时利用低成本的存储密度较高的闪存阵列提升固态硬盘容量,另一方面,两个微处理器分别执行与主机的通信、读写任务和数据在闪存阵列之间的搬运任务,保障了主机侧I/O的效率。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了根据本发明的一种固态硬盘的结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
如图1所示,根据本发明的实施例的一种固态硬盘设备,包括SSD控制器110和闪存阵列120,具体包括:
第一微处理器111、第二微处理器112、缓存控制器113、主机接口控制器114、FTL模块115、ECC模块121、闪存控制器122、第一闪存阵列123、第二闪存阵列124。
其中,第一闪存阵列的存储密度小于第二闪存阵列。例如:第一闪存阵列123为SLC闪存,所述第二闪存阵列124为MLC闪存、或TLC闪存、或3D NAND闪存;或者,第一闪存阵列123为MLC闪存,第二闪存阵列124为TLC闪存、或3D NAND闪存;或者,第一闪存阵列123为TLC闪存,第二闪存阵列124为3D NAND闪存。
第一微处理器111与第二微处理器112均与闪存控制器122、ECC模块121连接。一般来说,闪存阵列被划分为若干个通道,每一通道均配置有对应的ECC模块和闪存控制器。
第一微处理器111设定为通过主机接口控制器114与主机通信,第二微处理器112设定为不与主机接口控制器114通信。
第一微处理器111被设定为可向所述第一闪存阵列123写入数据,以及可读取第一闪存阵列123和第二闪存阵列124的数据,在写入或读取数据期间,将使用的通道标记写保护;第二微处理器112被设定为可读取第一闪存阵列123的数据,以及可向第二闪存阵列124写入数据,在写入或读取数据期间,将使用的通道标记写保护。写保护操作能够避免两个微处理器对相同数据同时进行读、取操作,或者同时进行写入操作,避免数据出错。
根据本发明实施例,第一微处理器111和第二微处理器112分别处理不同的任务,第一微处理器111负责与主机通信,根据主机指令向第一闪存阵列123写入数据,第二微处理器负责将第一闪存阵列123的数据写入第二闪存阵列124;第一闪存阵列123承担频繁的擦写任务,速度高、寿命长,第二闪存阵列124用于数据的长期存储,可受到较少的擦写。由于第一闪存阵列123向第二闪存阵列124搬运数据对实时性的要求不高,因此,设置性能弱于第一微处理器的第二微处理器处理数据搬运,能够降低第一微处理器111的负载,提高第一微处理器111对主机的响应速度和任务执行效率。在主机侧,本实施例提供的固态硬盘与完全由第一闪存构成的固态硬盘用起来性能差距较小,同时,存储容量得到了扩充。
在本发明实施例中,固态硬盘的地址映射表被划分为第一地址映射表和第二地址映射表,所述第一地址映射表为所述第一闪存阵列的地址映射表,所述第二地址映射表为所述第二闪存阵列的地址映射表。用两张不同的地址映射表管理两个闪存阵列,目的在于,对于第一微处理器而言,在执行主机写入任务时,只需要查询第一地址映射表,节省查询时间。而在处理主机的读取第二闪存阵列的数据的任务时,需要第一微处理器查询第二地址映射表。
在本发明实施例中,第一闪存阵列的容量小于第二闪存阵列的容量;以及,第一地址映射表采用页映射机制,所述第二地址映射表采用块映射机制。映射表采用页映射机制相比块映射机制,页映射性能好,占用空间大,而块映射占用空间小,性能差,因此,对于容量相对较小的第一闪存阵列,使用页映射机制,提高数据处理效率,对于容量相对较高的第二闪存阵列,其对性能要求不高,则使用块映射机制。
进一步地,第一地址映射表和第二地址映射表存储在第二闪存阵列。由于页映射表占用空间大,比如一个SSD总容量为128G,每页容量2KB,每个映射表项占用空间为4B,则映射表的大小为256MB,将其存储至第二闪存阵列,能够节省容量相对更低的第一闪存阵列的空间。对于其它第一闪存阵列的硬盘管理信息,同样可以存储至第二闪存阵列。
在本发明实施例中,第二微处理器112被设定为监测第一闪存阵列123的数据存储时间和读取次数,根据数据存储时间和读取次数确定第一闪存阵列123的冷数据,将所述冷数据写入第二闪存阵列124,擦除第一闪存阵列123中的冷数据。由于冷数据并非一个技术上有准确定义的概念,本实施例中提出,由存储时间和读取次数两个指标判定数据是否为冷数据,对于长时间存储但访问极少的数据,可判定为冷数据。例如,将存储时间大于第一阈值、读取次数小于第二阈值的数据判定为冷数据。
在本发明实施例中,第二微处理器112被设定为周期性地对所述第二闪存阵列124存储的数据进行ECC校验,当第二闪存阵列124的误码率达到任一预设门限时,将校验周期缩短至预设的与所述任一预设门限对应的时长。第二闪存阵列124的数据被访问或者擦写的频次较低,随着存储时间的增长,第二闪存阵列124的误码率逐渐增高,因此,本实施例中提出由第二微处理器112定期读取第二闪存阵列的数据并进行ECC校验,以纠正发生错误的数据。随着第二闪存阵列的擦写次数的增加,误码率的增长越来越快,此时,可进一步缩短校验及纠正的周期,以提高第二闪存阵列124数据保存的准确率。本实施例中,误码率可以通过统计得出,也可以结合闪存测试数据、存储时间、擦写次数等参数推测出。
一般而言,在固态硬盘使用寿命的后期,如果要确保数据存储的正确性,需要频繁进行ECC校验以纠正错误,但是会增加微处理器负担,大幅度降低固态硬盘性能。本实施例提出由第二微处理器进行校验纠正,不影响第一微处理器的正常工作,固态硬盘与主机之间的I/O性能始终维持在最高的水平,同时又能在后期保障数据存储的正确率,延长固态硬盘的使用寿命。
在本发明实施例中,第二微处理器112被设定为对第一闪存阵列存储的数据进行ECC校验,同时,对第二闪存的阵列存储的数据进行ECC校验,通过ECC校验纠正第一闪存阵列和第二闪存阵列中自动发生变化了的数据。第二微处理器112还被设定为对所述第一闪存阵列和所述第二闪存阵列执行均衡损耗算法的处理过程,以及执行垃圾回收算法的处理过程。除第一微处理器111在执行数据I/O所必须执行的指令,如数据写入,数据读取外,其余指令都可由第二微处理器112处理,从而提升硬盘与主机之间的I/O性能。
在本发明实施例中,第一微处理器的计算性能大于所述第二微处理器。具体地,在相同架构下,第一微处理器的频率大于第二微处理器。在另一种可能的实施例中,第一微处理器和第二微处理器为同一多核处理器的不同核,性能强劲的“大核”用于执行第一微处理器对应的任务,“小核”用于执行第二微处理器对应的任务,从而简化控制器内部线路布局。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。