读出错测试方法与装置
技术领域
本发明涉及存储系统测试技术领域,特别涉及一种读出错测试方法与装置。
背景技术
以固态存储设备(Solid Storage Device,SSD)为例,如图1所示,展示了存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial AdvancedTechnology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(IntegratedDriveElectronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVMExpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random AccessMemory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO命令。控制部件104还耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为闪存通道控制器)。闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。NVM芯片105的接口协议包括“Toggle”、“ONFI”等公知的接口协议或标准。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic UnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。FTL表的每个表项所对应的地址空间可以与非易失存储介质的物理页大小相同或不同。
NVM中存储的数据会在一定程度上出现损坏,为克服此类问题,通常在访问NVM时,通过错误校正码技术对NVM上存储的数据进行保护。常用的错误校正码包括BCH码(由Hocquenghem、Bose和Chandhari提出的能纠正多个随机错误的循环码)、LDPC码(LowDensity Parity Check Code,低密度奇偶校验码)、RS码(Reed-Solomon,里德-索罗门码)等。
存储介质上通常按页来存储和读取数据。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。而用户数据单元一般为4K字节+元数据,例如用户数据单元的大小为4120字节。不同的ECC对校验数据的长度也有限制,例如每用户数据单元120比特。用户数据单元连同其校验数据构成ECC块,在本例中,ECC块大小为4240字节。在物理页容能够容纳4个ECC块,余下的704字节可填充无关数据。对应地,FTL表的每个表项对应于用户数据单元的4KB逻辑地址空间,并将用户数据单元映射到物理页中的1个ECC块(或称数据帧),每个ECC块包括对应于1个FTL表项的4KB数据。在另一个例子中,物理页的大小适合于容纳1个ECC块。对应的FTL表的每个表项对应1个ECC块。
为提升存储容量,固态存储设备中包括多个NVM芯片,而NVM有一定的失效率。为提升固态存储设备的可靠性,按跨多个逻辑单元(LUN)的“页”条带来组织数据。
参看图2,示出了页条带的示意图。图2中,固态存储设备中,在每16个逻辑单元(逻辑单元0、逻辑单元1、……、逻辑单元15)上构造页条带,每个逻辑单元内相同物理地址的物理页构成了“页条带”。图2中,物理页P0-0、物理页P0-1……与物理页P0-X构成了页条带0,其中物理页P0-0、物理页P0-1……物理页P0-14用于存储用户数据,而物理页P0-X用于存储根据条带内的所有用户数据计算得到的校验数据(将页条带中存储了校验数据的物理页,也称为ECC页)。类似地,图2中,物理页P2-0、物理页P2-1……与物理页P2-X构成了页条带2。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置,其中,物理页0-1简称为P0-1。
在图2的例子中,通过FTL表为用户IO请求的逻辑地址分配物理地址时,按照页条带中的物理页的物理地址顺序分配。例如,初始状态下,页条带0为空白,响应于接收到对逻辑地址0~15的写请求,为逻辑地址5~19依次分配理页P0-0、物理页P0-1……与物理页P0-14的物理地址,并将逻辑地址5-19与物理页P0-0、物理页P0-1……与物理页P0-14物理地址的对应关系记录在FTL表中。
在图2的例子中,利用页条带中的校验数据,在页条带的1个物理页的数据损坏的情况下,能够从页条带的其他页中恢复损坏页的数据。然而,物理页中存储了ECC校验数据块,大多数情况下,即使物理页中部分数据出现错误,也能够通过错误校正技术通过ECC校验数据块恢复出正确的数据,因而物理页数据损坏的情况很少发生。
为了测试页条带能否正确工作,采用故障注入的方式,人为地构造页条带的物理页的数据,使物理页中存在不可纠正错误。从而在从存在不可纠正错误的物理页中读出数据时,触发基于页条带的数据保护机制。
需要测试多个页条带同时存在具有不可纠正错误的页的情况下,基于页条带的数据保护机制能否正常工作。因而需要提供测试方法来产生多个页条带同时存在具有不可纠正错误的物理页的情况,并且在固态存储设备的固件的常规的操作流程中触发错误,以检查页条带的数据保护机制的正确性。
发明内容
根据本发明的第一方面,提供了根据本发明第一方面的固态存储设备的测试方法,所述固态存储设备包括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个存在不可纠正错误的数据帧,从而测试在固态存储设备的错误纠正能力范围内的响应。此外,还可以在每个页条带中注入多个具有不可纠正错误的数据帧,从而测试在固态存储设备的纠错能力范围之外的响应。以及通过对逻辑地址的常规读请求触发错误处理,以使测试场景尽可能接近固态存储设备的正常工作环境。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了根据本发明实施例的存储设备的框图;
图2示出了根据本发明实施例的页条带的结构;
图3A-图3E是根据本发明一个实施例的固态存储设备的测试方法的示意图;
图4A-4D是根据本发明另一个实施例的固态存储设备的测试方法的示意图;以及
图5A-5D是根据本发明又一个实施例的固态存储设备的测试方法的示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
图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执行上面提供的根据本发明实施例的方法之一。
本发明实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本发明实施例的方法之一。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。