发明内容
根据本发明的第一方面,提供了根据本发明第一方面的固态存储设备的测试方法,所述固态存储设备包括S+1个逻辑单元,所述S+1个逻辑单元提供多个页条带,页条带包括S+1个物理页,页条带中的S+1个物理页来自所述S+1个逻辑单元的每一个,每个物理页容纳一个逻辑页,所述方法包括以下步骤:向连续的逻辑地址A到逻辑地址A+S写入数据,其中,数据被写入页条带0,以及页条带1的物理页0;向连续的逻辑地址A+1到逻辑地址S+A+1写入数据,其中数据被写入页条带1,以及页条带2的物理页0与物理页1;擦除页条带0与页条带1所在的物理块;向页条带0的物理页0与页条带1的物理页1写入存在不可纠正错误的数据;以及从逻辑地址A与A+1读取数据;其中S为正整数,A为非负整数。
根据本发明的第一方面的固态存储设备的测试方法,提供了根据本发明第一方面的第二固态存储设备的测试方法,其中,响应于从逻辑地址A与A+1读取数据,根据从逻辑地址A与A+1读取的数据判断所述固态存储设备的数据保护机制是否正确。
根据本发明的第一方面的固态存储设备的测试方法,提供了根据本发明第一方面的第三固态存储设备的测试方法,其中,所述向连续的逻辑地址A到逻辑地址A+S写入数据,包括将逻辑地址A到逻辑地址A+S连续地映射到页条带0的物理页0到物理页S-1,以及页条带1的物理页0;以及所述向连续的逻辑地址A+1到逻辑地址A+S+1写入数据,包括将逻辑地址A+1到逻辑地址A+S+1连续地映射到页条带1的物理页1到物理页S-1,以及页条带2的物理页0与物理页1。
根据本发明的第一方面的固态存储设备的测试方法,提供了根据本发明第一方面的第四固态存储设备的测试方法,其中,所述向连续的逻辑地址A到逻辑地址A+S写入数据,还包括向页条带0的物理页S写入校验数据;以及所述向连续的逻辑地址A+1到逻辑地址A+S+1写入数据,还包括向页条带1的物理页S写入校验数据。
根据本发明的第一方面的固态存储设备的测试方法,提供了根据本发明第一方面的第五固态存储设备的测试方法,还包括:在擦除页条带0与页条带1所在的物理块之前,多次向连续的逻辑地址A+i到逻辑地址A+S+i写入数据,并使i递增,以及1<i;所述方法还包括:对于i的每个取值,擦除第i页条带所在的物理块,向第i页条带的物理页i写入存在不可纠正错误的数据;以及从连续的逻辑地址A到A+i读取数据。
根据本发明的第一方面的固态存储设备的测试方法,提供了根据本发明第一方面的第六固态存储设备的测试方法,还包括:收集固态硬盘做出的响应。
根据本发明的第二方面,提供了根据本发明第二方面的固态存储设备的测试方法,所述固态存储设备包括S+1个逻辑单元,所述S+1个逻辑单元提供多个页条带,页条带包括S+1个物理页,页条带中的S+1个物理页来自所述S+1个逻辑单元的每一个,每个物理页包括四个数据帧,每个数据帧容纳一个逻辑页,所述方法包括:向连续的逻辑地址A+i-1到逻辑地址A+S-1+i写入数据,向连续的逻辑地址A+i到逻辑地址A+S+i写入数据,向连续的逻辑地址A+i到逻辑地址A+S+i写入数据,以及向连续的逻辑地址A+i到逻辑地址A+S-4+i写入数据,其中,数据被写入第i-1个页条带,以及i的初始值为1;设置i=i+1,并重复步骤S1,直到i达到预定值T,T为大于1的整数;对于i的每个取值,向页条带i-1的物理页0写入存在不可纠正错误的数据;以及从逻辑地址A到A+T-1读取数据;其中S为正整数,A为非负整数。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第二固态存储设备的测试方法,其中,响应于从逻辑地址A到A+T-1读取数据,根据从逻辑地址A到A+T-1读取的数据判断所述固态存储设备的数据保护机制是否正确。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第三固态存储设备的测试方法,其中,所述向连续的逻辑地址A+i-1到逻辑地址A+S-1+i写入数据,包括将逻辑地址A+i-1到逻辑地址A+S-1+i连续地映射到页条带i-1的第0个数据帧到第S个数据帧;所述向连续的逻辑地址A+i到逻辑地址A+S+i写入数据,向连续的逻辑地址A+i到逻辑地址A+S+i写入数据,包括将逻辑地址A+i到逻辑地址A+S+i连续地映射到页条带i-1的第S+1个数据帧到第2S+1个数据帧,以及再将逻辑地址A+i到逻辑地址A+S+i连续地映射到页条带i-1的第2S+2个数据帧到第3S+2个数据帧;以及所述向连续的逻辑地址A+i到逻辑地址A+S-4+i写入数据,包括将逻辑地址A+i到逻辑地址A+S-4+i连续地映射到页条带i-1的第3S+3个数据到第4S-1个数据帧。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第四固态存储设备的测试方法,还包括:向第页条带i-1的物理页S写入校验数据。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第五固态存储设备的测试方法,还包括:收集固态硬盘做出的响应。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第六固态存储设备的测试方法,其中,在写入存在不可纠正错误的数据之前,还包括:擦除页条带i-1所在的物理块。
根据本发明的第三方面,提供了根据本发明第三方面的固态存储设备的测试方法,所述固态存储设备包括S+1个逻辑单元,所述S+1个逻辑单元提供多个页条带,页条带中包括S+1个物理页,页条带中的S+1个物理页来自S+1个所述逻辑单元的每一个,每个物理页包括四个数据帧,每个数据帧容纳一个逻辑页,所述方法包括:向连续的逻辑地址A+i-1到逻辑地址A+S-1+i写入数据,向连续的逻辑地址A+i到逻辑地址A+S+i写入三次数据,以及i的初始值为1;设置i=i+1,并重复步骤S1,直到i达到预定值T,T为大于1的整数;对于i的每个取值,向页条带i-1的物理页i-1写入存在不可纠正错误的数据;以及从逻辑地址A到A+T-1读取数据;其中S为正整数,A为非负整数。
根据本发明的第三方面的固态存储设备的测试方法,提供了根据本发明第三方面的第二固态存储设备的测试方法,其中,响应于从逻辑地址A到A+T-1读取数据,根据从逻辑地址A到A+T-1读取的数据判断所述固态存储设备的数据保护机制是否正确。
根据本发明的第三方面的固态存储设备的测试方法,提供了根据本发明第三方面的第三固态存储设备的测试方法,其中,所述写入数据包括将要写入数据的逻辑地址连续映射到物理地址,以及每个页条带的物理页0至物理页S-1被写满后,向物理页S写入校验数据。
根据本发明的第三方面的固态存储设备的测试方法,提供了根据本发明第三方面的第四固态存储设备的测试方法,还包括:收集固态硬盘做出的响应。
根据本发明的第三方面的固态存储设备的测试方法,提供了根据本发明第三方面的第五固态存储设备的测试方法,其中,在写入存在不可纠正错误的数据之前,还包括:擦除页条带i-1所在的物理块。
根据本发明的第四方面,提供了根据本发明第四方面的固态存储设备,包括控制部件,S+1个逻辑单元,所述S+1个逻辑单元提供多个页条带,页条带包括S+1个物理页,页条带中的S+1个物理页来自所述S+1个逻辑单元的每一个,每个物理页容纳一个逻辑页,所述控制部件执行第一方面的固态存储设备的测试方法。
根据本发明的第五方面,提供了根据本发明第五方面的固态存储设备,包括控制部件,S+1个逻辑单元,页条带i中包括S+1个物理页,页条带i中的S+1个物理页来自S+1个所述逻辑单元的每一个,每个物理页容纳4个逻辑页,所述控制部件执行第二方面的固态存储设备的测试方法。
根据本发明的第六方面,提供了根据本发明第六方面的固态存储设备,包括控制部件,S+1个逻辑单元,页条带i中包括S+1个物理页,页条带i中的S+1个物理页来自S+1个所述逻辑单元的每一个,每个物理页容纳4个逻辑页,所述控制部件执行第三方面的固态存储设备的测试方法。
根据本发明的第七方面,提供了根据本发明第七方面的固态存储设备的测试装置,所述固态存储设备包括S+1个逻辑单元,所述S+1个逻辑单元提供多个页条带,页条带包括S+1个物理页,页条带中的S+1个物理页来自所述S+1个逻辑单元的每一个,每个物理页容纳一个逻辑页,所述测试装置包括:第一数据写入模块,用于向连续的逻辑地址A到逻辑地址A+S写入数据,其中,数据被写入页条带0,以及页条带1的物理页0;第二数据写入模块,用于向连续的逻辑地址A+1到逻辑地址S+A+1写入数据,其中数据被写入页条带1的物理页0到物理页S,以及页条带2的物理页0与物理页1;擦除模块,用于擦除页条带0与页条带1所在的物理块;错误注入模块,用于向页条带0的物理页0与页条带1的物理页1写入存在不可纠正错误的数据;以及读取模块,用于从逻辑地址A与A+1读取数据;其中S为正整数,A为非负整数。
根据本发明的第八方面,提供了根据本发明第八方面的固态存储设备的测试装置,所述固态存储设备包括S+1个逻辑单元,所述S+1个逻辑单元提供多个页条带,页条带包括S+1个物理页,页条带中的S+1个物理页来自所述S+1个逻辑单元的每一个,每个物理页包括四个数据帧,每个数据帧容纳一个逻辑页,所述装置包括:数据写入模块,用于向连续的逻辑地址A+i-1到逻辑地址A+S-1+i写入数据,向连续的逻辑地址A+i到逻辑地址A+S+i写入数据,向连续的逻辑地址A+i到逻辑地址A+S+i写入数据,以及向连续的逻辑地址A+i到逻辑地址A+S-4+i写入数据,其中,数据被写入第i-1个页条带,以及i的初始值为1;设置模块,用于设置i=i+1;判断模块,用于判断i是否达到预定值T,如果否,则所述数据写入模块继续写入操作,其中,T为大于1的整数;错误注入模块,用于对于i的每个取值,向页条带i-1的物理页0写入存在不可纠正错误的数据;以及读取模块,用于从逻辑地址A到A+T-1读取数据;其中S为正整数,A为非负整数。
根据本发明的第九方面,提供了根据本发明第九方面的固态存储设备的测试装置,所述固态存储设备包括S+1个逻辑单元,所述S+1个逻辑单元提供多个页条带,页条带中包括S+1个物理页,页条带中的S+1个物理页来自S+1个所述逻辑单元的每一个,每个物理页包括四个数据帧,每个数据帧容纳一个逻辑页,所述装置包括:数据写入模块,用于向连续的逻辑地址A+i-1到逻辑地址A+S-1+i写入数据,向连续的逻辑地址A+i到逻辑地址A+S+i写入三次数据,以及i的初始值为1;设置模块,用于设置i=i+1;判断模块,用于判断所述i是否达到预定值T,如果否,则所述数据写入模块继续写入操作,T为大于1的整数;错误诸如模块,用于对于i的每个取值,向页条带i-1的物理页i-1写入存在不可纠正错误的数据;以及读取模块,用于从逻辑地址A到A+T-1读取数据;其中S为正整数,A为非负整数。
根据本发明的第十方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本发明第一方面至第三方面提供的固态存储设备的测试方法。
根据本发明的第十一方面,提供一种包括程序代码的程序,当被载入存储系统并在存储系统上执行时,所述计程序代码使所述存储系统执行根据本发明第一方面至第三方面提供的固态存储设备的测试方法。
本发明的实施例,能够同时触发对多个存在不可纠正错误数据帧的页条带的读操作,从而测试固态存储设备在此类错误情况下的响应、处理能力或能否正确工作。另外,每个页条带被设计为能够应对1个物理页的失效,在每个页条带中注入错误,使得每个页条带有1个存在不可纠正错误的数据帧,从而测试在固态存储设备的错误纠正能力范围内的响应。此外,还可以在每个页条带中注入多个具有不可纠正错误的数据帧,从而测试在固态存储设备的纠错能力范围之外的响应。以及通过对逻辑地址的常规读请求触发错误处理,以使测试场景尽可能接近固态存储设备的正常工作环境。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
图3A-3E展示了本发明一个实施例的固态存储设备的测试方法的示意图。
参见图3A所示,固态存储设备包括S+1个逻辑单元(LUN),S+1个逻辑单元提供多个页条带,页条带包括S+1个物理页,页条带中的S+1个物理页来自S+1个逻辑单元的每一个,每个物理页容纳一个逻辑页,即,用户访问的逻辑页与物理页具有相同的尺寸。在FTL表中为每个逻辑页与物理页的对应关系提供一个FTL表条目,用于记录逻辑页与物理页的对应关系。
通过执行下列步骤在固态存储设备的S+1个逻辑单元中生成数据,以在多个页条带中产生具有不可纠正错误的页,并且,可由一个命令触发对具有不可纠正错误的页的多个页条带的访问。
结合图3A-3E所示,根据本发明实施例的对固态存储设备的测试方法包括:
(0)获得要写入固态存储设的数据;以及
(1)向逻辑页地址L0到逻辑页地址LS(LS=L0+S)写入数据。例如:将逻辑地址L0到逻辑地址LS连续地映射到页条带0的物理页0到物理页S-1,以及页条带1的物理页0。
图3A中展示了此时固态存储设备的S+1个逻辑单元上的数据。响应于向逻辑页地址L0到逻辑页地址LS写入的数据的请求,逻辑页地址L0到逻辑页地址LS被依次映射到页条带0的物理页P0-0、物理页P0-1至物理页P0-(S-1),以及页条带1的物理页P1-0,并向这些物理页写入数据。在该实例中,向逻辑页地址L0到逻辑页地址LS写入数据,还包括:对页条带0的物理页P0-X写入校验数据,即:页条带0的物理页P0-X用于存储页条带0的校验数据。作为举例,将页条带0的物理页P0-0、物理页P0-1至物理页P0-(S-1)的数据的异或结果,作为页条带0的校验数据存储在页条带0的物理页P0-X中。
结合图3A-3E所示,根据本发明实施例的对固态存储设备的测试方法还包括:(2)向逻辑页地址L1到逻辑页地址L(S+1)写入数据,例如:将逻辑地址L1到逻辑地址L(S+1)连续地映射到页条带1的物理页P1-1到物理页P1-(S-1),以及页条带2的物理页P2-0与物理页P2-1;
图3B展示了此时固态存储设备的S+1个逻辑单元上的数据。响应于向逻辑页地址L1到逻辑页地址L(S+1)写入的数据的请求,逻辑页地址L1到逻辑页地址L(S+1)被依次映射到页条带1的物理页P1-1、物理页P1-2至物理页P1-(S-1),以及页条带2的物理页P2-0与物理页P2-1,并向这些物理页写入数据。还包括向页条带1的物理页P1-X写入校验数据,即:页条带1的物理页P1-S用于存储页条带1的校验数据。
同时,FTL表被更新,在FTL表中记录逻辑页地址L0映射到页条带0的物理页P0-0,而逻辑页地址L1到逻辑页地址L(S+1)被依次映射到页条带1的物理页P1-1、物理页P1-2至物理页P1-(S-1),以及页条带2的物理页P2-0与物理页P2-1。而页条带0的物理页P0-1到物理页P0-(S-1)上的数据成为无效数据。
结合图3A-3E所示,根据本发明实施例的对固态存储设备的测试方法还包括:(3)-(7)以类似方式,向逻辑页地址L(i)到逻辑页地址L(S+i)写入数据,并且重复多次。在图3的例子中,对于i取从2到6的每个自然数,向逻辑页地址L(i)到逻辑页地址L(S+i)写入数据。
结合图3A-3E所示,根据本发明实施例的对固态存储设备的测试方法还包括:(8)向逻辑页地址L(8-1)到逻辑页地址L(8-1+S)写入数据。
图3C展示了此时固态存储设备的S+1个逻辑单元上的数据。响应于向逻辑页地址L(8-1)到逻辑页地址L(8-1+S)写入的数据的请求,逻辑页地址L(8-1)到逻辑页地址L(8-1+S)被依次映射到页条带7的物理页P7-7、物理页P7-8至物理页P7-(S-1),以及页条带8的物理页P8-0、物理页P8-1到物理页P8-7,并向这些物理页写入数据,而条带7的物理页P7-X用于存储页条带7的校验数据。同时,FTL表被更新。
在FTL表中记录逻辑页地址L0映射到物理页P0-0,而逻辑页地址L1到逻辑页地址L(7)被依次映射到页条带1的物理页P1-1、物理页P2-2至物理页P7-7。而页条带0-至页条带7的其他物理页上的数据均为无效数据。
结合图3A-3E所示,根据本发明实施例的对固态存储设备的测试方法还包括:(8+1)读出逻辑页地址L0到逻辑页地址L(8-1)的数据。
读出逻辑页地址L0到逻辑页地址L(8-1)的数据,用于将其修改为存在不可纠正错误的数据,以将错误注入到物理页中。可选地,可以不必执行此操作,而选取预设的存在不可纠正错误的数据,或者生成不可纠正错误的数据,以用于写入到物理页中。存在不可纠正错误的数据,指数据中的错误比特数量超出了在物理页中所应用的错误校正码所能纠正的错误比特数量。
需要说明的是,上述(1)-(8+1)的操作都可通过常规的固态存储设备的写入读出(IO)命令来实施。例如,对于遵循NVMe协议的固态硬盘设备,通过向固态存储设备发出NVMe协议的常规IO命令来实施上述(1)-(8+1)的操作。
结合图3A-3E所示,根据本发明实施例的对固态存储设备的测试方法还包括:(8+2)擦除页条带0到页条带7所在的物理块,并向页条带0的物理页0、页条带1的物理页1、页条带2的物理页2、……、页条带7的物理页7写入存在不可纠正错误的数据。图3D展示了此时固态存储设备的S+1个逻辑单元上的数据。
在不更新FTL表的情况下,擦除页条带0到页条带7所在的物理块;向页条带0的物理页0、页条带1的物理页1、页条带2的物理页、……、页条带7的物理页7写入存在不可纠正错误的数据。可选地,存在不可纠正错误的数据可以是在步骤(8+1)中读出并被注入错误的数据,或者生成的不可纠正错误的数据。
此时FTL中依然记录着逻辑页地址L0映射到页条带0的物理页P0-0,而逻辑页地址L1到逻辑页地址L(7)被依次映射到页条带1的物理页P1-1、页条带2物理页P2-2、……、页条带7的物理页P7-7。
结合图3A-3E所示,根据本发明实施例的对固态存储设备的测试方法还包括:(8+3)请求读出逻辑页地址L0到逻辑页地址L(8-1)的数据。
步骤(8+3)的读操作会触发对页条带0的物理页0、页条带1的物理页1、页条带2的物理页2、……、页条带7的物理页7的读操作。由于这些物理页中存在不可纠正错误,因而会触发对页条带0到页条带7的所有页的读操作,以重建存在不可纠正错误的数据。
步骤(8+3)的读操作可通过常规的存储设备的IO访问操作来实施。
上面的步骤(1)-步骤(8+2)是在准备测试环境与用于测试的数据,而步骤(8+3)为执行测试,触发被测试的目标场景,而可以收集固态存储设备接下来的响应,以分析存在的问题或判断固态存储设备是否做出了正常的响应。
图3E中展示了在图3A-图3D中,物理页的不同样式所指示的含义。
图4A-4D展示了本发明另一个实施例的固态存储设备的测试方法的示意图。
参见图4A,固态存储设备包括S+1个逻辑单元,S+1个逻辑单元提供多个页条带,页条带包括S+1个物理页,页条带中的S+1个物理页来自S+1个逻辑单元的每一个。在1个物理页中容纳4个用户访问的逻辑页,在物理页中存储的用户的每个逻辑页称为“数据帧”。在FTL表中为每个逻辑页与数据帧的对应关系提供一个FTL表条目,用于记录逻辑页与数据帧的对应关系。数据帧也称ECC块,由ECC进行数据保护。
以S=31为例,则通过执行下列步骤在固态存储设备的31+1个逻辑单元中生成数据,以在多个页条带中同时产生具有不可纠正错误的页,并且,这些具有不可纠正错误的页来自同一个逻辑单元,可由一个命令触发对具有不可纠正错误的页的多个页条带的读操作。
结合图4A-4D所示,根据本发明实施例的对固态存储设备的测试方法包括:(0)获得要写入固态存储设备的数据;
(1)向逻辑页地址L0到逻辑页地址L31写入数据;向逻辑页地址L1到逻辑页地址L32写入数据2次;以及向逻辑页地址L1到逻辑页地址L28写入数据;
(2)向逻辑页地址L1到逻辑页地址L32写入数据;向逻辑页地址L2到逻辑页地址L33写入数据2次;以及向逻辑页地址L2到逻辑页地址L29写入数据;
(3)-(7)以类似于步骤(2)的方式,对于i取从3到7的每个自然数,向逻辑页地址L(i-1)到逻辑页地址L(30+i)写入数据;向逻辑页地址L(i)到逻辑页地址L(31+i)写入数据2次;以及向逻辑页地址L(i)到逻辑页地址L(27+i)写入数据;
(8)向逻辑页地址L7到逻辑页地址L38写入数据;向逻辑页地址8到逻辑页地址39写入数据2次;以及向逻辑页地址8到逻辑页地址35写入数据;
(9)读出逻辑页地址L0到逻辑页地址L7的数据;
(10)擦除页条带0到页条带7所在的物理块;向页条带0的物理页0(或物理页0的数据帧0)、页条带1的物理页0(或物理页0的数据帧0)、页条带2的物理页0(或物理页0的数据帧0)、……、页条带7的物理页0(或物理页0的数据帧0)写入存在不可纠正错误的数据;以及
(11)读出逻辑页地址L0到逻辑页地址L7的数据。
参看图4A,响应于向逻辑页地址L0到逻辑页地址L31写入的数据的请求,逻辑页地址L0到逻辑页地址L31被依次映射到页条带0的物理页P0-0的4个数据帧、物理页P0-1的4个数据帧、……、物理页P0-7的4个数据帧,并向这些物理页写入数据。此时页条带0尚未被写满。并且,FTL表被更新,以记录逻辑页地址L0到逻辑页地址L31与物理地址的对应关系。
响应于向逻辑页地址L1到逻辑页地址L32写入数据2次,逻辑页地址L1到逻辑页地址L32先被映射到页条带0的物理页P0-8到物理页P0-15,又被映射到页条带0的物理页P0-16到物理页P0-23,这些物理页被写入数据。并且FTL表被更新。逻辑页地址L0在FTL表中依然被映射到物理页P0-0的第一个数据帧。除了物理页P0-0的第一个数据帧外,物理页P0-0、物理页P0-1到物理页P0-7的其他数据帧都变为无效数据。
响应于向逻辑页地址L1到逻辑页地址L28写入数据,逻辑页地址L1到逻辑页地址L28被映射到页条带0的物理页P0-24到物理页P0-30,这些物理页被写入数据,并且FTL表被更新。由于页条带0的31个物理页均被写入数据,生成页条带0的校验数据,并将校验数据写入页条带0的物理页P0-X。
图4A展示了在执行完上述步骤(1)后,固态存储设备的31+1个逻辑单元上的数据。其中物理页P0-0的第1个数据帧存储了对应于逻辑页地址L0的有效数据。
参看图4B,响应于向逻辑页地址L1到逻辑页地址L32写入数据;由于页条带0已被写满,新的数据将被写入页条带1,因而逻辑页地址L1到逻辑页地址L32被映射到物理页P1-0到物理页P1-7。并向这些物理页写入数据。此时页条带1尚未被写满。并且,FTL表被更新,以记录逻辑页地址L1到逻辑页地址L32与物理地址的对应关系。
响应于向逻辑页地址L2到逻辑页地址L33写入数据2次;逻辑页地址L2到逻辑页地址L33先被映射到页条带1的物理页P1-8到物理页P1-15,又被映射到页条带1的物理页P1-16到物理页P1-23,这些物理页被写入数据。并且FTL表被更新。逻辑页地址L1在FTL表中依然被映射到物理页P1-0的第一个数据帧。
响应于向逻辑页地址L2到逻辑页地址L29写入数据;逻辑页地址L2到逻辑页地址L29被映射到页条带1的物理页P1-24到物理页P1-30,这些物理页被写入数据,并且FTL表被更新。由于页条带1的31个物理页均被写入数据,生成页条带1的校验数据,并将校验数据写入页条带1的物理页P1-X。
图4B展示了在执行完上述步骤(2)后,固态存储设备的31+1个逻辑单元上的数据。其中物理页P0-0的第1个数据帧存储了对应于逻辑页地址L0的有效数据,物理页P1-0的第1个数据帧存储了对应于逻辑页地址L1的有效数据。
以类似的方式,对应i取从3到7的每个自然数,向逻辑页地址L(i-1)到逻辑页地址L(30+i)写入数据;向逻辑页地址L(i)到逻辑页地址L(31+i)写入数据2次;以及向逻辑页地址L(i)到逻辑页地址L(27+i)写入数据。
参看图4C,响应于向逻辑页地址L7到逻辑页地址L38写入数据;向逻辑页地址8到逻辑页地址39写入数据2次;以及向逻辑页地址8到逻辑页地址35写入数据,逻辑页地址L7被映射到页条带7的物理页P7-0的第1个数据帧,页条带7被写满,生成页条带7的校验数据,并将校验数据写入页条带7的物理页P7-X。
图4C展示了在执行完上述步骤(8)后,固态存储设备的31+1个逻辑单元上的数据。逻辑页地址L0到逻辑页地址L7被映射到页条带0的物理页P0-0的第1个数据帧、页条带1的物理页P1-0的第1个数据帧……页条带7的物理页P7-0的第1个数据帧。并且,页条带0到页条带7均被写满,在各个页条带的最后物理页上存储了用于所在页条带的校验数据。
在步骤(9),读出逻辑页地址L0到逻辑页地址L7的数据。读出这些数据,用于将其修改为存在不可纠正错误的数据,以将错误注入诸如到物理页中。可选地,可以不必执行此操作,而选取预设的存在不可纠正错误的数据,或者生成不可纠正错误的数据,以用于写入到物理页中。
需要指出的是,上述(1)-(9)的操作都是针对逻辑地址的访问,都可通过常规的固态存储设备的IO访问操作来实施。例如,对于遵循NVMe协议的固态硬盘设备,通过向固态存储设备发出NVMe协议的常规IO命令来实施上述(1)-(9)的操作。
图4D展示了执行上述步骤(10)后,固态存储设备的31+1个逻辑单元上的数据。在不更新FTL表的情况下,擦除页条带0到页条带7所在的物理块;并通过故障注入的方式,向页条带0的物理页P0-0(或物理页P0-0的数据帧0)、页条带1的物理页P1-0(或物理页P1-0的数据帧0)、页条带2的物理页P2-0(或物理页P2-0的数据帧0)……页条带7的物理页P7-0(或物理页P7-0的数据帧0)写入存在不可纠正错误的数据。可选地,还向页条带中的其他物理页/数据帧填充数据,以将页条带写满,并向页条带写入校验数据。
可选地,擦除页条带0到页条带7的第1物理页(物理页P0-0、物理页P1-0、……物理页P7-0)所在物理块,而保留页条带0到页条带7的其他物理页。并通过故障注入的方式,向页条带0的物理页P0-0(或物理页P0-0的数据帧0)、页条带1的物理页P1-0(或物理页P1-0的数据帧0)、页条带2的物理页P2-0(或物理页P2-0的数据帧0)……页条带7的物理页P7-0(或物理页P7-0的数据帧0)写入存在不可纠正错误的数据。
此时FTL表中依然记录着逻辑页地址L0映射到页条带0的物理页P0-0的数据帧0,而逻辑页地址L1到逻辑页地址L(7)被依次映射到页条带1的物理页P1-0的数据帧0、页条带2的物理页P2-0的数据帧0、……、页条带7的物理页P7-0的数据帧0。
接下来,响应于步骤(11)读出逻辑页地址L0到逻辑页地址L7的数据,会触发对页条带0的物理页P0-0的数据帧0、页条带1的物理页P1-0的数据帧0、页条带2的物理页P2-0的数据帧0、……、页条带7的物理页P7-0的数据帧0的读操作。由于这些物理页中存在不可纠正错误,因而会触发对页条带0到页条带7的数据帧与校验数据的读操作,以重建存在不可纠正错误的数据。
在上述示例中,存在不可纠正错误的数据帧都位于同一个逻辑单元中。
步骤(11)的读操作是针对逻辑地址的访问,可通过常规的存储设备的IO访问操作来实施。
上面的步骤(1)-步骤(10)是在准备测试环境与用于测试的数据,而步骤(11)为执行测试,触发被测试的目标场景,而可以收集固态存储设备接下来的响应,以分析存在的问题或判断固态存储设备是否做出了正常的响应。
图5A-5D展示了本发明再一个实施例的固态存储设备的测试方法的示意图。
参见图5A,固态存储设备包括S+1个逻辑单元,S+1个逻辑单元提供多个页条带,页条带中包括S+1个物理页,页条带中的S+1个物理页来自S+1个逻辑单元的每一个。每个物理页包括四个数据帧,每个数据帧容纳一个用户访问的逻辑页。
以S=31为例,通过执行下列步骤在固态存储设备的31+1个逻辑单元中生成数据,以在多个页条带中同时产生具有不可纠正错误的页,并且,这些具有不可纠正错误的页来自多个逻辑单元,可由一条对逻辑地址的常规读命令触发对具有不可纠正错误的页的多个页条带的读操作。
结合图5A-5D所示,根据本发明实施例的对固态存储设备的测试方法包括:
(0)获得要写入固态存储设备的数据;
(1)向逻辑页地址L0到逻辑页地址L31写入数据;向逻辑页地址L1到逻辑页地址L32写入数据3次;
(2)向逻辑页地址L1到逻辑页地址L32写入数据;向逻辑页地址L2到逻辑页地址L33写入数据3次;
(3)-(7)以类似于步骤(2)的方式,对于i取从3到7的每个自然数,向逻辑页地址L(i-1)到逻辑页地址L(30+i)写入数据;向逻辑页地址L(i)到逻辑页地址L(31+i)写入数据3次;
(8)向逻辑页地址L7到逻辑页地址L38写入数据;向逻辑页地址8到逻辑页地址39写入数据3次;
(9)读出逻辑页地址L0到逻辑页地址L7的数据;
(10)擦除页条带0到页条带7所在的物理块;向页条带0的物理页0(或物理页0的数据帧0)、页条带1的物理页1(或物理页1的数据帧0)、页条带2的物理页(或物理页2的数据帧0)……页条带7的物理页7(或物理页7的数据帧0)写入存在不可纠正错误的数据;以及
(11)读出逻辑页地址L0到逻辑页地址L7的数据。
参看图5A,响应于向逻辑页地址L0到逻辑页地址L31写入的数据的请求,逻辑页地址L0到逻辑页地址L31被依次映射到页条带0的物理页P0-1的4个数据帧、物理页P0-2的4个数据帧、……物理页P0-7的4个数据帧,并向这些物理页写入数据。此时页条带0尚未被写满。并且,FTL表被更新,以记录逻辑页地址L0到逻辑页地址L31与物理地址的对应关系。
响应于向逻辑页地址L1到逻辑页地址L32写入数据3次,逻辑页地址L1到逻辑页地址L32先被映射到页条带0的物理页P0-8到物理页P0-15,又被映射到页条带0的物理页P0-16到物理页P0-23,再被映射到页条带0的物理页P0-24到物理页P0-30,以及页条带1的物理页P1-0。这些物理页被写入数据。并且FTL表被更新。逻辑页地址L0在FTL表中依然被映射到物理页P0-0的第一个数据帧。除了物理页P0-0的第一个数据帧外,页条带0的其他数据帧都变为无效数据。
由于页条带0的31个物理页均被写入数据,生成页条带0的校验数据,并将校验数据写入页条带0的物理页P0-X。
图5A展示了在执行完上述步骤(1)后,固态存储设备的31+1个逻辑单元上的数据。其中物理页P0-0的第1个数据帧存储了对应于逻辑页地址L0的有效数据。
参看图5B,响应于向逻辑页地址L1到逻辑页地址L32写入数据;新的数据将被写入页条带1,因而逻辑页地址L1到逻辑页地址L32被映射到物理页P1-1到物理页P1-8。并向这些物理页写入数据。此时页条带1尚未被写满。并且,FTL表被更新,以记录逻辑页地址L1到逻辑页地址L32与物理地址的对应关系。
响应于向逻辑页地址L2到逻辑页地址L33写入数据3次;逻辑页地址L2到逻辑页地址L33先被映射到页条带1的物理页P1-9到物理页P1-16,又被映射到页条带1的物理页P1-17到物理页P1-24,再被映射到页条带1的物理页P1-25到物理页P1-30,以及页条带2的物理页P2-0到物理页P2-1,这些物理页被写入数据。并且FTL表被更新。逻辑页地址L1在FTL表中依然被映射到页条带1物理页P1-1的第一个数据帧。以及页条带1被写满,生成页条带1的校验数据,并将校验数据写入页条带1的物理页P1-X。
图5B展示了在执行完上述步骤(2)后,固态存储设备的31+1个逻辑单元上的数据。其中物理页P0-0的第1个数据帧存储了对应于逻辑页地址L0的有效数据,物理页P1-1的第1个数据帧存储了对应于逻辑页地址L1的有效数据。
以类似的方式,对于i取从3到7的每个自然数,向逻辑页地址L(i-1)到逻辑页地址L(30+i)写入数据;向逻辑页地址L(i)到逻辑页地址L(31+i)写入数据3次。
参看图5C,响应于向逻辑页地址L7到逻辑页地址L38写入数据;向逻辑页地址8到逻辑页地址39写入数据3次,逻辑页地址L7被映射到页条带7的物理页P7-7的第1个数据帧,页条带7被写满,生成页条带7的校验数据,并将校验数据写入页条带7的物理页P7-X。
图5C展示了在执行完上述步骤(8)后,固态存储设备的31+1个逻辑单元上的数据。逻辑页地址L0到逻辑页地址L7被映射到页条带0的物理页P0-0的第1个数据帧、页条带1的物理页P1-1的第1个数据帧……页条带7的物理页P7-7的第1个数据帧。并且,页条带0到页条带7均被写满,在各个页条带的最后物理页上存储了用于所在页条带的校验数据。
在步骤(9),读出逻辑页地址L0到逻辑页地址L7的数据。读出这些数据,用于将其修改为存在不可纠正错误的数据,以将错误注入诸如到物理页中。可选地,可以不必执行此操作,而选取预设的存在不可纠正错误的数据,或者生成不可纠正错误的数据,以用于写入到物理页中。
需要指出的是,上述(1)-(9)的操作都是针对逻辑地址的访问,都可通过常规的固态存储设备的IO访问操作来实施。例如,对于遵循NVMe协议的固态硬盘设备,通过向固态存储设备发出NVMe协议的常规IO命令来实施上述(1)-(9)的操作。
图5D展示了执行上述步骤(10)后,固态存储设备的31+1个逻辑单元上的数据。在不更新FTL表的情况下,擦除页条带0到页条带7所在的物理块;并通过故障注入的方式,向页条带0的物理页P0-0(或物理页P0-0的数据帧0)、页条带1的物理页P1-1(或物理页P1-1的数据帧0)、页条带2的物理页P2-2(或物理页P2-2的数据帧0)……页条带7的物理页P7-7(或物理页P7-7的数据帧0)写入存在不可纠正错误的数据。可选地,还向页条带中的其他物理页/数据帧填充数据,以将页条带写满,并向页条带写入校验数据。
可选地,擦除页条带0到页条带7的具有有效数据的物理页(物理页P0-0、物理页P1-1、……物理页P7-7)所在物理块,而保留页条带0到页条带7的其他物理页。并通过故障注入的方式,向页条带0的物理页P0-0(或物理页P0-0的数据帧0)、页条带1的物理页P1-1(或物理页P1-1的数据帧0)、页条带2的物理页P2-2(或物理页P2-2的数据帧0)……页条带7的物理页P7-2(或物理页P7-2的数据帧0)写入存在不可纠正错误的数据。
此时FTL表中依然记录着逻辑页地址L0映射到页条带0的物理页P0-0的数据帧0,而逻辑页地址L1到逻辑页地址L(7)被依次映射到页条带1的物理页P1-1的数据帧0、页条带2的物理页P2-2的数据帧0、……、页条带7的物理页P7-7的数据帧0。
接下来,响应于步骤(11)读出逻辑页地址L0到逻辑页地址L7的数据,会触发对页条带0的物理页P0-0的数据帧0、页条带1的物理页P1-1的数据帧0、页条带2的物理页P2-2的数据帧0……页条带7的物理页P7-7的数据帧0的读操作。由于这些物理页中存在不可纠正错误,因而会触发对页条带0到页条带7的所有页的读操作,以重建存在不可纠正错误的数据。
在根据图5A-图5D所示的实施例中,存在不可纠正错误的数据帧位于7个逻辑单元上。
步骤(11)的读操作是针对逻辑地址的访问,可通过常规的存储设备的IO访问操作来实施。
上面的步骤(1)-步骤(10)是在准备测试环境与用于测试的数据,而步骤(11)为执行测试,触发被测试的目标场景,而可以收集固态存储设备接下来的响应,以分析存在的问题或判断固态存储设备是否做出了正常的响应。
本发明的实施例,能够同时触发对多个存在不可纠正错误数据帧的页条带的读操作,从而测试固态存储设备在此类错误情况下的响应、处理能力或能否正确工作。另外,每个页条带被设计为能够应对1个物理页的失效,在每个页条带中注入错误,使得每个页条带有1个数据帧存在不可纠正错误,从而测试在固态存储设备的错误纠正能力范围内的响应。此外,还可以在每个页条带中注入多个具有不可纠正错误的数据帧,从而测试在固态存储设备的纠错能力范围之外的响应。以及通过对逻辑地址的常规读请求触发错误处理,以使测试场景尽可能接近固态存储设备的正常工作环境。
本发明实施例还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行上面提供的根据本发明实施例的方法之一。
本发明实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本发明实施例的方法之一。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。