掌桥专利:专业的专利平台
掌桥专利
首页

闪存错误注入系统、固态存储设备及测试系统

文献发布时间:2023-06-19 16:11:11



技术领域

本发明涉及数据存储技术领域,尤其涉及一种闪存错误注入系统、固态存储设备及测试系统。

背景技术

随着闪存技术不断发展,当前使用闪存作为存储介质的固态存储设备越来越被广泛地使用在各种领域,闪存的容量越来越大,性能越来越高,但同时为了降低单位存储容量的成本,闪存的可靠性也逐渐降低,这就需要固态存储设备有强大的闪存容错处理能力。

闪存在使用过程中,随着使用寿命的增加,不可避免地会出现读写擦等各种操作错误,甚至出现更为严重的晶圆整体失效的异常,为了对用户提供可靠的数据存储服务,固态存储设备就必须要合理地处理闪存在使用过程中出现的这些异常问题,这部分功能主要是由固态存储设备中的控制软件或者固件结合特定的硬件模块来完成。闪存异常处理的功能是否完善直接决定了固态存储设备的可靠性。由于闪存出现的异常错误类型多样以及异常出现的时间、位置都不可预知等特点,另外,固态存储设备在处理闪存异常的同时,还需要及时地,正确地响应用户的读写请求,所以固态存储设备中的闪存异常处理功能模块通常较为复杂,容易出现设计或者实现上的漏洞,对固态存储设备的可靠性带来潜在的风险,所以对固态存储设备中的闪存异常处理模块的测试的完备性就非常重要。

当前主要有两种技术方案来测试固态存储设备中的闪存异常处理模块,第一种是通过事先对闪存进行一些不可逆转的损坏性测试,比如增加闪存的擦写次数,让闪存进入生命中后期,或者对闪存进行高温烘烤等,这些手段都是为了增加闪存出现异常的概率,然后把这些闪存集成到固态存储设备中,形成完整的固态存储设备,再对这些特定的固态存储设备进行各种压力测试。但是该方式由于要对闪存进行破坏性测试,所以成本很高,而且测试不够完善和充分,因为即使对闪存进行破坏性的测试,闪存在后续使用过程中出现问题的类型,时间和位置等错误行为仍然不可预知,这不利于固态存储设备测试的完整性,也不利于复现测试中出现的问题,给分析解决问题带来很大难度。

另外一种方案是在纯软件的模拟仿真系统下测试闪存异常处理模块,通过软件控制仿真模型来模拟闪存异常。该方案测试的对象并非真实的固态存储设备,而是用纯软件在计算机上模拟固态存储设备的固件和硬件功能,软件模拟的行为跟真实固态存储设备的行为存在很大差异,所以这种方式不能充分验证固态存储设备本身的闪存异常处理模块,只能作为固态存储设备开发过程中辅助补充测试,不能完全替代对固态存储设备本身的闪存异常处理模块的测试。

发明内容

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的闪存错误注入系统、固态存储设备及测试系统。

本发明的一个方面,提供了一种闪存错误注入系统,所述系统包括设置在固态存储设备中的错误注入接口、错误信息存储模块和错误触发模块;

错误注入接口,当对固态存储设备的闪存异常处理模块进行功能测试时与上位机连接,用于接收上位机下发的与待测试的测试用例匹配的插错信息,所述插错信息包括闪存错误类型、错误位置信息、错误发生次数、错误发生频率以及错误触发条件;

错误信息存储模块,用于存储错误注入接口接收到的插错信息;

错误触发模块,用于在固态存储设备根据上位机测试请求进行闪存操作过程中监测闪存的操作状态,并在闪存的操作状态满足错误信息存储模块中存储的插错信息的错误触发条件时,按照当前插错信息的闪存错误类型、错误位置信息、错误发生次数和错误发生频率触发相应的闪存错误消息,实现闪存错误注入。

进一步地,所述系统还包括

错误信息管理模块,用于为错误信息存储模块分配存储空间以存储上位机下发的插错信息,并对错误触发模块已经触发完成的插错信息进行删除,以回收已经触发完成的插错信息占用的存储空间。

进一步地,闪存错误类型包括初始化失败、读错误、写错误、擦错误、设置特征或者特征获取失效,平面Plane失效或者晶片Die失效。

进一步地,所述错误位置信息包括物理地址信息和逻辑地址信息,所述物理地址信息包括芯片选通地址CE、逻辑单元号Lun、平面Plane、物理块Block、物理页Page以及扇区Sector;

所述错误触发模块,还用于当错误位置信息为逻辑地址信息时,根据预设的逻辑地址到物理地址的映射关系解析出所述逻辑地址信息对应的物理闪存位置;或所述错误信息管理模块,还用于在错误信息存储模块进行插错信息存储之前,根据预设的逻辑地址到物理地址的映射关系解析出所述逻辑地址信息对应的物理闪存位置。

进一步地,所述错误信息管理模块,用于根据错误触发条件确定插错信息对应的错误是否在本次上电周期内完成触发,若是则将该插错信息的存储空间分配在固态存储设备内部的随机存取存储介质中,否则,将该插错信息的存储空间分配在固态存储设备内部的非易失性存储介质中。

进一步地,所述错误信息管理模块,还用于记录上位机下发的插错信息和已经触发的插错信息,并提供插错信息查询功能。

进一步地,所述错误注入接口采用上述固态存储设备固有的用户IO接口或预留的扩展接口实现。

本发明的另一方面,提供了一种固态存储设备,所述设备包括IO处理模块、闪存异常处理模块和如上所述的闪存错误注入系统;

所述IO处理模块,用于接收上位机的测试请求,并根据测试请求进行闪存操作,所述测试请求中携带有待测试的测试用例;

所述异常处理模块,用于在接收到错误触发模块触发的闪存错误消息之后,进入闪存异常处理流程,实现对闪存异常处理模块的功能测试。

本发明的第三方面,提供了一种测试系统,包括上位机和如上所述的固态存储设备,所述上位机包括测试用例管理模块和错误注入模块;

所述错误注入模块,用于当对固态存储设备的闪存异常处理模块进行功能测试时建立与错误注入接口的连接,生成或从预设的插错信息库中选取与待测试的测试用例匹配的插错信息,并通过错误注入接口下发到固态存储设备;

测试用例管理模块,用于在完成插错信息下发操作后,发送测试请求以启动相应测试用例中的测试操作。

进一步地,所述上位机还包括:

测试模块,用于在测试用例执行过程中,判断固态存储设备中闪存异常处理模块的处理行为是否符合预期操作设定,如果不符合预期操作设定则进行报错,以表明固态存储设备的闪存异常处理模块功能不正确。

本发明实施例提供的闪存错误注入系统、固态存储设备及测试系统,通过在固态存储设备中添加闪存错误注入系统,提供错误注入接口给上位机,以供上位机根据具体测试用例的需求,灵活地完成错误注入,达到充分测试闪存异常处理模块的目的。本发明无需对待测试的固态存储设备进行不可逆转的损坏性测试,能够有效降低测试成本,而且本发明以真实的固态存储设备为测试标的,相对于与在纯软件的模拟仿真系统下测试闪存异常处理模块的实现方式能够充分验证固态存储设备本身的闪存异常处理模块。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例提供的闪存错误注入系统的结构框图;

图2为本发明另一实施例提供的闪存错误注入系统的结构框图;

图3为本发明实施例提供的固态存储设备的结构框图;

图4为本发明实施例提供的测试系统的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。

为了保证固态存储设备的可靠性,需要对其中闪存异常处理模块进行充分的测试,当前现有的测试技术方案有测试成本较高,测试不充分等局限性,为此本发明提出了一种闪存错误注入系统、固态存储设备及测试系统,可以在不增加硬件测试设备的情况下,通过在固态存储设备中添加错误注入接口、错误信息存储模块和错误触发模块,提供多种错误注入接口给上位机,上位机根据具体测试用例的需求,来完成错误注入,然后运行测试用例触发闪存异常,进而达到充分测试固态存储设备中的闪存异常处理模块的目的。如果在测试中遇到问题,由于闪存的错误是可以预期的,并且保存了完整的错误注入信息,这为后续复现问题,定位并且最终解决问题带来了很大的方便,大大加速了产品的开发进度,保证了产品的可靠性。

闪存:Flash Memory,是一种电子式可清除的存储器,允许在操作中被多次擦写的存储器,根据实现原理不同,主要有NAND Flash和Nor Flash两种闪存。本发明提到的闪存主要指NAND Flash。

固态存储设备是指基于闪存作为存储介质的存储设备,例如:固态硬盘SSD(SolidState Disk),U盘,通用闪存存储卡UFS(Universal Flash Storage),嵌入式多媒体卡eMMC(Embedded Multi Media Card),安全数字卡SD(Secure Digital Card)等。

图1示意性示出了本发明闪存错误注入系统的结构框图。参照图1,本发明实施例的闪存错误注入系统,包括设置在固态存储设备中的错误注入接口101、错误信息存储模块102和错误触发模块103,其中:

错误注入接口102,当对固态存储设备的闪存异常处理模块进行功能测试时与上位机连接,用于接收上位机下发的与待测试的测试用例匹配的插错信息,所述插错信息包括闪存错误类型、错误位置信息、错误发生次数、错误发生频率以及错误触发条件;

错误信息存储模块102,用于存储错误注入接口接收到的插错信息;

错误触发模块103,用于在固态存储设备根据上位机测试请求进行闪存操作过程中监测闪存的操作状态,并在闪存的操作状态满足错误信息存储模块中存储的插错信息的错误触发条件时,按照当前插错信息的闪存错误类型、错误位置信息、错误发生次数和错误发生频率触发相应的闪存错误消息,实现闪存错误注入。

本发明另一实施例中,如图2所示,所述系统还包括错误信息管理模块104,用于为错误信息存储模块102分配存储空间以存储上位机下发的插错信息,并对错误触发模块103已经触发完成的插错信息进行删除,以回收已经触发完成的插错信息占用的存储空间。

进一步地,所述错误信息管理模块104,还用于记录上位机下发的插错信息和已经触发的插错信息,并提供插错信息查询功能。

本发明通过在固态存储设备中添加闪存错误注入系统,提供错误注入接口给上位机,以供上位机根据具体测试用例的需求,灵活地完成错误注入,达到充分测试闪存异常处理模块的目的。本发明能够有效避免为了触发闪存出现异常需要预先对在待测试闪存进行破坏,降低测试成本;而且相对于与在纯软件的模拟仿真系统下测试闪存异常处理模块的实现方式,本发明能够充分验证固态存储设备本身的闪存异常处理模块,避免测试不充分问题。

在本发明实施例中,在固态存储设备中添加错误注入接口,错误信息存储模块,错误信息管理模块和错误触发模块等模块。

错误注入接口采用上述固态存储设备固有的用户IO接口或预留的扩展接口实现。具体的,为了不增加额外的硬件模块,错误注入接口一般使用固态存储设备固有的用户IO接口,比如PCIe SSD,则可以使用PCIe接口来提供错误注入功能,SATA SSD则可以使用SATA接口提供错误注入功能,U盘则可以使用USB接口提供错误注入功能。当然错误注入接口也可以使用其他常见扩展接口来实现,比如串口,IIC,SPI等,只要固态存储设备能支持这些接口,就可以用来提供错误注入接口。

错误信息存储模块主要用于存储错误注入接口收到的插错信息,一般包括闪存错误类型,错误位置信息,错误发生次数,错误发生频率,错误触发条件等信息。

错误信息管理模块主要用于管理当前的插错信息,包括有如下功能:分配存储空间用于存储新注入的错误,及时回收已经触发完成的错误占用的存储空间,合并同类型的重复注入的错误,删除用户误注入的错误,修改用户注入的错误信息,查询当前还未触发的错误信息,查询历史已经触发的错误信息等功能。

错误触发模块主要用于在操作闪存过程中,根据错误信息存储模块存储的错误信息,在预期的时间点触发预期的闪存错误。某个错误触发完成之后,需要及时通知错误信息管理模块删除错误记录信息,避免后续多次触发非预期的闪存错误。

本发明实施例中,闪存错误类型包括初始化失败,读错误,写错误,擦错误,设置特征(Set feature)或者特征获取失效(Get feature失效),平面Plane失效或者晶片Die失效。其中,die是闪存颗粒封装内部半导体芯片的裸片,die也称为裸片,或者晶片,每个die包括多个plane,plane是闪存颗粒中能否根据读、写、擦除等命令进行操作的最小单位,plane也称为平面、分组,每个plane包括多个依次编号的block,block是闪存颗粒的最小擦除单位,block也称为物理块块,每个block包括多个依次编号的page,page是闪存颗粒最小的读写单位,page也称为物理页。

其中,错误位置信息包括物理地址信息和逻辑地址信息,所述物理地址信息包括芯片选通地址CE、逻辑单元号Lun、平面Plane、物理块Block、物理页Page以及扇区Sector等定位到具体物理闪存位置的信息。其中,一个闪存器件封装了一个或多个的target,也称ce(chipenable,芯片选通),一个ce包含了一个或多个的lun(logicalunitnumber,逻辑单元号),lun为闪存在通信时的最小基本管理单元,是一个闪存命令执行的基本单元。有一些测试用例期望将错误注入到指定闪存物理位置,就可以直接使用这些位置信息来指定,还有一些测试测试用例希望将错误注入到特定的逻辑地址LBA(logical block address)而非物理地址PBA(physical block address),对于这种类型的注入错误,就需要在错误信息管理模块和错误触发模块,根据实际的逻辑地址LBA到物理地址PBA的映射关系,解析出这个逻辑地址对应的物理闪存的位置,在操作到这个物理闪存位置的时候触发相应错误;

在一个具体示例中,可以由错误触发模块实现逻辑地址LBA到物理地址PBA地址的转换。具体的,错误触发模块,还用于当错误位置信息为逻辑地址信息时,根据预设的逻辑地址到物理地址的映射关系解析出所述逻辑地址信息对应的物理闪存位置。

在另一个具体示例中,还可以由错误信息管理模块实现逻辑地址LBA到物理地址PBA地址的转换。具体的,错误信息管理模块,还用于在错误信息存储模块进行插错信息存储之前,根据预设的逻辑地址到物理地址的映射关系解析出所述逻辑地址信息对应的物理闪存位置。

其中,闪存错误发生次数,发生频率和触发条件根据具体不同测试用来需求不同,有的错误是单次触发,有的连续多次触发或间隔多次触发,有的错误触发还依赖于其他错误先触发等条件,这些不同的错误信息都需要存储下来,给错误触发模块使用。进一步地,根据触发条件不同,有的错误需要在本次上电周期内完成触发,这种错误信息就只需要保存在固态存储设备内部RAM中,可以是SRAM,也可以是DRAM;有的错误信息需要经过一次或者多次上下电之后才能触发,对于这种类型的错误信息,需要保存在固态存储设备内部的非易失性存储介质上,通常有Nor Flash,EEPROM或者用于存储后台管理信息的NAND Flash空间内,错误信息存储模块在每次上电的时候,从非易失性存储介质上读取错误信息给错误触发模块,当上下电次数满足错误触发条件时,错误触发模块就会触发对应的闪存错误。

在一个具体示例中,所述错误信息管理模块,用于根据错误触发条件确定插错信息对应的错误是否在本次上电周期内完成触发,若是则将该插错信息的存储空间分配在固态存储设备内部的随机存取存储介质中,否则,将该插错信息的存储空间分配在固态存储设备内部的非易失性存储介质中。

本发明实施例提供的测试系统具有以下有益效果:

1. 不用对闪存进行破坏性测试,就能制造出预期的闪存异常,降低了测试成本;

2. 闪存错误注入系统模块相对独立,具有很好的通用性,任何类型的固态存储设备开发过程中都可以使用类似方式来实现闪存异常的触发;

3. 可以灵活扩展的错误注入接口,能满足几乎所有闪存错误相关测试用例的需求;

4. 闪存错误可以预期地出现,这能够充分验证闪存异常处理模块的功能,同时这给调试问题带来很大的方便,易于快速定位解决问题;

5. 整个测试过程中,闪存异常处理模块都是真实的运行在固态存储设备中,跟真实情况完全一样,达到了更加真实而充分的验证目的。

图3示意性示出了本发明实施例的固态存储设备的结构框图。参照图3,本发明实施例提供的固态存储设备1除了包括闪存之外,还包括IO处理模块11、闪存异常处理模块12和如上实施例所述的闪存错误注入系统10;

所述IO处理模块11,用于接收上位机的测试请求,并根据测试请求进行闪存操作,所述测试请求中携带有待测试的测试用例;

所述异常处理模块12,用于在接收到错误触发模块触发的闪存错误消息之后,进入闪存异常处理流程,实现对闪存异常处理模块的功能测试。

本发明实施例中,闪存错误注入系统10能够根据测试用例的具体需求,灵活地注入不同类型,不同位置,不同时间触发等各种闪存异常错误,对闪存异常处理模块来说,闪存错误注入系统10注入的错误触发之后,跟真实的闪存报错是完全一样的,闪存异常处理模块会按照真实的闪存报错来处理,因此本发明达到充分测试闪存异常处理模块的目的。

进一步地,对于固态存储设备来说,即使闪存错误注入系统保留在固态存储设备中,只要不通过错误注入接口注入错误,就不会影响客户正常使用固态存储设备,错误注入接口只开放给内部测试使用,不对外开放。

在一个具体实施例中,可以对错误注入接口加锁,只有在解锁之后,才能实现错误注入的功能。

在另一个具体实施例中,可以在固态存储设备的正式发布版本的代码中利用预编译技术,将错误注入系统相关代码排除在编译范围之外,以减少发布版本代码的容量。

图4示意性示出了本发明实施例的测试系统的结构框图。参照图4,本发明实施例提供的测试系统,包括上位机2和如上实施例所述的固态存储设备1,所述上位机2包括测试用例管理模块21和错误注入模块22;

所述错误注入模块22,用于当对固态存储设备1的闪存异常处理模块12进行功能测试时建立与错误注入接口101的连接,生成或从预设的插错信息库中选取与待测试的测试用例匹配的插错信息,并通过错误注入接口101下发到固态存储设备1;

测试用例管理模块21,用于在完成插错信息下发操作后,发送测试请求以启动相应测试用例中的测试操作。

进一步地,所述上位机还包括附图中未示出的测试模块,所述的测试模块,用于在测试用例执行过程中,判断固态存储设备1中闪存异常处理模块的处理行为是否符合预期操作设定,如果不符合预期操作设定则进行报错,以表明固态存储设备的闪存异常处理模块功能不正确。

如下4所示,上位机2跟固态存储设备1之间有IO命令通道和管理命令通道,IO命令通道用于完成正常的用户IO操作,管理命令通道用于传输非IO类型的命令,错误注入接口101就可以使用管理命令通道来传输,这两个通道可以共用同一物理接口,也可以是独立的两套物理接口。

本发明实施例提供的测试系统,在固态存储设备中添加闪存错误注入系统,上位机根据测试用例需求,生成或从预设的插错信息库中选取与待测试的测试用例匹配的插错信息,然后利用闪存错误注入系统提供的错误注入接口,通过上位机与固态存储设备之间的管理命令通道,将这些插错信息下发给闪存错误注入系统,闪存错误系统接收插错信息之后,保存和处理这些插错信息,之后上位机启动相应测试用例中的IO读写测试,上下电测试或者其他用户正常操作命令等测试项目,固态存储设备响应这些测试请求,同时闪存错误注入系统中的错误触发模块监控闪存操作,适时地触发相应的闪存错误,固态存储设备中的异常处理模块接收到闪存触发模块报错之后,进入闪存异常处理流程。

最后,在测试用例执行过程中,上位机测试用例会判断固态存储设备的行为是否符合预期,如果不符合预期,例如出现了不预期的IO超时或者报错,或者性能不符合设计预期等等异常行为,上位机测试用例就会报告错误,表明固态存储设备的闪存异常处理模块功能不正确,需要进一步分析问题,定位解决问题,因为上位机和固态存储设备中都保存了插错信息,在出现问题之后,这些信息对复现问题,调试问题,定位并且最终解决问题有非常大的帮助,能够大大减少解决问题的时间。

本发明实施例提供的闪存错误注入系统、固态存储设备及测试系统,通过在固态存储设备中添加闪存错误注入系统,提供错误注入接口给上位机,以供上位机根据具体测试用例的需求,灵活地完成错误注入,达到充分测试闪存异常处理模块的目的。本发明无需对待测试的固态存储设备进行不可逆转的损坏性测试,能够有效降低测试成本,而且本发明以真实的固态存储设备为测试标的,相对于与在纯软件的模拟仿真系统下测试闪存异常处理模块的实现方式能够充分验证固态存储设备本身的闪存异常处理模块。

本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 闪存错误注入系统、固态存储设备及测试系统
  • 一种闪存错误模式的测试方法和系统
技术分类

06120114731074