CN109542671A - 校验数据生成方法及固态硬盘 - Google Patents
校验数据生成方法及固态硬盘 Download PDFInfo
- Publication number
- CN109542671A CN109542671A CN201811450337.7A CN201811450337A CN109542671A CN 109542671 A CN109542671 A CN 109542671A CN 201811450337 A CN201811450337 A CN 201811450337A CN 109542671 A CN109542671 A CN 109542671A
- Authority
- CN
- China
- Prior art keywords
- data
- verification
- die
- plane
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及固态硬盘技术领域,提供一种校验数据生成方法及固态硬盘,所述方法包括:对起始编号的数据die中多个plane做校验运算,得到第一校验数据;将第一校验数据与和起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据;将第二校验数据与和当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成多个数据die的校验运算,得到校验结果。本发明通过对现有RAID的改进,对每个RAID条带做校验运算时只需要一份内存资源,大大减少了RAID对内存资源的消耗,提升了固态硬盘的性能。
Description
技术领域
本发明涉及固态硬盘技术领域,具体而言,涉及一种校验数据生成方法及固态硬盘。
背景技术
当前大容量低成本的三维堆叠的三层存储单元(3D Trinary-Level Cell,3DTLC)和三维堆叠的四层存储单元(3D Quad-Level Cell,3D QLC)NAND闪存的使用越来越普遍,然而由于电压存储状态变多,每种状态分布范围变小,随之带来的错误率增高,另外,NAND闪存在出厂时就存在某些块(block)的存储单元(cell)被击穿不可用的问题,这些问题对NAND的固态硬盘(Solid State Drives,SSD)的控制器提出了较高要求,现有技术使用独立冗余磁盘阵列(Redundant Array of Independent Disks,RAID)进行纠错,由于RAID硬件模块需要大量的内存资源做校验运算,而SSD盘的控制器由于成本和面积的限制,导致其带有的内存资源极其有限,但是,现有的RAID对每个RAID条带做校验运算时需要至少两份内存资源,因此内存资源的消耗比较大,有限的内存资源很容易成为SSD盘性能瓶颈,降低了SSD盘的性能。
发明内容
本发明实施例的目的在于提供一种校验数据生成方法及固态硬盘,通过对现有RAID的改进,对每个RAID条带做校验运算时只需要一份内存资源,大大减少了RAID对内存资源的消耗,提升了固态硬盘的性能。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种校验数据生成方法,应用于固态硬盘,固态硬盘包括多个依次编号的die,多个die包括多个数据die,每个die包括多个依次编号的plane,所述方法包括:对起始编号的数据die中多个plane做校验运算,得到第一校验数据;将第一校验数据与和起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据;将第二校验数据与和当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成多个数据die的校验运算,得到校验结果。
第二方面,本发明实施例还提供了一种固态硬盘,固态硬盘包括处理器及RAID硬件模块,闪存包括多个依次编号的die,多个die包括多个数据die,每个die包括多个依次编号的plane;处理器用于控制RAID硬件模块对起始编号的数据die中多个plane做校验运算,得到第一校验数据、及控制RAID硬件模块将第一校验数据与和起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据、以及控制RAID硬件模块将第二校验数据与和当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成多个数据die的校验运算,得到校验结果。
相对现有技术,本发明实施例提供的一种校验数据生成方法及固态硬盘,首先,对起始编号的数据die中多个plane做校验运算,得到第一校验数据;然后,将第一校验数据与和起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据;最后,将第二校验数据与和当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成多个数据die的校验运算,得到校验结果。与现有技术相比,本发明实施例通过对现有RAID的改进,对每个RAID条带做校验运算时只需要一份内存资源,大大减少了RAID对内存资源的消耗,提升了固态硬盘的性能。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的固态硬盘的方框示意图。
图2示出了本发明实施例提供的主控芯片的系统架构示意图。
图3示出了本发明实施例提供的闪存颗粒的存储组织示例图。
图4示出了本发明实施例提供的校验数据生成方法流程图。
图5为图4示出的步骤S101的子步骤流程图。
图6为图4示出的步骤S102的子步骤流程图。
图7示出了本发明实例提供的写数据流程图。
图8示出了本发明实施例提供的条带的示例图。
图9示出了本发明实例提供的读数据恢复流程图。
图10示出了本发明实施例提供的第一校验数据生成装置的方框示意图。
图11示出了本发明实施例提供的第二校验数据生成装置的方框示意图。
图标:100-固态硬盘;110-主控芯片;111-处理器;112-RAID硬件模块;120-闪存颗粒;200-第一校验数据生成装置;201-获取模块;202-擦除模块;203-申请模块;400-第二校验数据生成装置;401-校验模块;402-写入模块;403-拷贝模块;404-更新模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1示出了本发明实施例提供的固态硬盘100的方框示意图。固态硬盘100包括主控芯片110及多个闪存颗粒120,主控芯片110包括处理器111及RAID硬件模块112,处理器111用于执行本发明实施例提供的第一校验数据生成装置200,RAID硬件模块112用于实现本发明实施例提供的第二校验数据生成装置400进行校验运算及对闪存颗粒120中存储的数据进行读写,闪存颗粒120是非易失性存储介质,存储用户数据和固态硬盘100固件系统信息。
请参照图2,图2示出了本发明实施例提供的主控芯片110的系统架构示意图,主控芯片110包括处理器111及硬件模块NFC,其中,处理器111中包括了软件模块FE、FTL、BE,FE为前端模块,用于接收主机发送的数据访问请求,并按照预设前端协议对数据访问请求进行解析,FTL模块记录待访问数据的地址到待访问数据所在的对应闪存颗粒120中的地址的映射关系,BE模块负责检查RAID资源,在RAID资源满足条件的情况下,确定特定的RAID读写序列,硬件模块NFC为闪存颗粒120的驱动器,向BE模块提供的校验运算单元计算校验数据,及提供访问闪存颗粒120的访问接口对闪存颗粒120的数据进行访问。本发明实施例提供的RAID硬件模块112包括NFC中的校验运算单元及对闪存颗粒120的硬件接口,与RAID硬件模块112对应的软件即本发明实施例提供的第一校验数据生成装置200是BE模块的子模块,运行在处理器111中。
访问闪存颗粒120的数据的访问过程可以描述为:FE接收主机发送的数据访问请求,其中,访问请求中包括待访问数据的地址,并对数据访问请求进行解析,FTL模块将待访问数据的地址转换成待访问数据所在的对应闪存颗粒120中的地址,BE模块检查RAID资源,在RAID资源满足条件的情况下,确定特定的RAID读写序列后调用硬件模块NFC提供的校验运算单元计算校验数据,及访问闪存颗粒120的访问接口对闪存颗粒120的数据进行访问最后将待访问数据返回主机。主控芯片110还包括存储器,第一校验数据生成装置200包括至少一个可以软件或固件(firmware)的形式存储于主控芯片110中存储器的软件功能模块,主控芯片110中处理器111读取该存储器中存储的软件并执行本发明实施例提供的校验数据生成方法。
为了便于说明本申请下文中提供的第一实施例和第二实施例,首先对闪存颗粒120的存储组织形式进行介绍。每个闪存颗粒120包括多个die,die是闪存颗粒120封装内部半导体芯片的裸片,die也称为裸片,或者晶片,每个die包括多个plane,plane是闪存颗粒120中能否根据读、写、擦除等命令进行操作的最小单位,plane也称为平面、分组,每个plane包括多个依次编号的block,block是闪存颗粒120的最小擦除单位,block也称为块,每个block包括多个依次编号的page,page是闪存颗粒120最小的读写单位,page也称为页,一个page包括多个字节,闪存颗粒120中所有die上字线WL(Word Line,WL)相同的block组成super block,WL为block中的页号,多个WL组成一个block,super block也称超级块,一个或多个super block组成一个physical block,physical block也称物理块。请参照图3,图3示出了本发明实施例提供的闪存颗粒120的存储组织示例图,图3中,闪存颗粒120包括3个die:die0、die1、die2,每个die中包括2个plane:plane0、plane1,每个plane中包括2N个block,每个block中包括N个page,die0的plane0的block0(block0在plane0中的WL为1)、die0的plane1的block1(block1在plane1中的WL为1)、die1的plane0的block0(block0在plane0中的WL为1)、die1的plane1的block1(block1在plane1中的WL为1)、die2的plane0的block0(block0在plane0中的WL为1)、die2的plane1的block1(block1在plane1中的WL为1)组成一个super block,即多个die上序号均为1的block组成一个super block。
第一实施例
请参照图4,图4示出了本发明实施例提供的校验数据生成方法流程图。处理方法包括以下步骤:
步骤S101,对起始编号的数据die中多个plane做校验运算,得到第一校验数据。
在本发明实施例中,对一个闪存颗粒120中的多个die依次进行编号,每个die均有一个唯一编号,多个die中包括多个数据die和一个校验die,数据die中存放的是实际需要存储的用户数据或者系统数据,校验die中存放的是多个数据die进行校验运算后得到的校验结果。校验运算是生成校验结果的一种算法,其中,校验数据可以用于校正参与校验运算的数据出现的错误,校验运算包括crc校验、md5校验、异或校验,在本发明实施例中,校验运算可以是异或校验。对一个闪存颗粒120中的多个die依次进行编号,每个die均有一个唯一编号,在本发明实施例中,校验die为结尾编号的die,数据die为多个die中除结尾编号之外其余编号的die,例如,闪存颗粒120一共有4个die,编号分别为:0、1、2、3,则编号为0、1、2的die为数据die,编号为3的die为校验die。每个数据die中包括多个plane,第一校验数据是起始编号的数据die中的多个plane依次进行校验运算后得到的校验数据。每个数据die中的多个plane依次进行编号,每个数据die中的每个plane均有一个唯一编号,对起始编号的数据die中多个plane进行校验运算时,首先,将起始编号的数据die中的起始两个plane做校验运算得到起始校验数据,然后,将起始校验数据与起始编号的数据die中的其余die依次做校验运算,得到第一校验数据。
请参照图5,步骤S101还包括如下子步骤:
子步骤S1011,将起始编号的数据die中起始两个plane做校验运算,得到起始校验数据。
在本发明实施例中,起始编号的数据die为依次编号的第一个数据die,起始两个plane为依次编号的第一个plane和第二个plane,例如,闪存颗粒120一共有4个die,编号分别为:0、1、2、3,每个die中有4个plane,编号分别为:0、1、2、3,则编号0的die为起始编号的数据die,编号0的die中编号0的plane和编号1的plane为起始两个plane。
子步骤S1012,将起始校验数据与起始编号的数据die中其余plane依次迭代做校验运算,得到第一校验数据。
在本发明实施例中,例如,起始编号的数据die中有4个plane,编号分别为:0、1、2、3,起始校验数据为编号0的plane和编号1的plane做校验运算后得到的,将起始校验数据与编号2的plane做校验运算,得到中间校验数据,再将该中间校验数据与编号3的plane做校验运算,得到第一校验数据,因此,第一校验数据是编号0的plane、编号1的plane、编号2的plane、编号3的plane依次进行校验运算得到的。
步骤S102,将第一校验数据与和起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据。
在本发明实施例中,第二校验数据是闪存颗粒120中起始编号的数据die与和起始编号连续的当前编号的数据die中的plane依次做校验运算后得到的,具体计算第二校验数据的方法可以是:首先将起始编号连续的当前编号的数据die中的第一个plane与第一校验数据做校验运算,得到当前校验数据,然后,将当前校验数据与起始编号连续的当前编号的数据die中的其余plane依次做校验运算,得到第二校验数据。
请参照图6,步骤S102的还可以包括以下子步骤:
子步骤S1021,将起始编号连续的当前编号的数据die中的第一个plane与第一校验数据做校验运算,得到当前校验数据。
在本发明实施例中,例如,闪存颗粒120一共有4个die,编号分别为:0、1、2、3,每个die中有2个plane,编号分别为:0、1,起始编号的数据die为编号0数据die,起始编号连续的当前编号的数据die为编号1数据die,首先,将第一校验数据是编号0数据die中的plane0、编号0数据die中的plane1进行校验运算后,得到第一校验数据,然后,将第一校验数据与编号1数据die中的plane0做校验运算后得到当前校验数据。
子步骤S1022,将当前校验数据与起始编号连续的当前编号的数据die中的其余plane依次迭代做校验运算,得到第二校验数据。
步骤S103,将第二校验数据与和当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成多个数据die的校验运算,得到校验结果。
在本发明实施例中,得到第二校验数据后,将第二校验数据与和当前编号连续的下一个编号的die的多个plane依次做校验运算,当和当前编号连续的下一个编号的数据die为最后一个数据die时,最终得到的校验数据为校验结果,例如,闪存颗粒120一共有4个die,编号分别为:0、1、2、3,每个die中有2个plane,编号分别为:0、1,编号0数据die中的编号0的plane和编号0数据die中的编号1的plane做校验运算得到第一校验数据,将第一校验数据与编号1数据die中的编号0的plane做校验运算得到当前校验数据,将当前校验数据与编号1数据die中的编号1的plane做校验运算,得到第二校验数据,按照与计算第二校验数据相同的方法,将第二校验数据与编号2数据die中编号0的plane、编号2数据die中编号1的plane、编号3数据die中编号0的plane、编号3数据die中编号1的plane依次做校验运算后得到校验结果。
为了在数据die中的数据被破坏时,利用校验die中的校验数据将被破坏的数据die中的数据恢复,需要将步骤S103中得到的校验结果进行存储,因此,本发明实施例还包括步骤S104和步骤S105。
步骤S104,将校验结果写入至校验die中的第一个plane。
在本发明实施例中,校验die中包括多个依次编号的plane,通过步骤S103得到校验结果后,将校验结果写入至校验die中的第一个plane。
步骤S105,将写入校验die中的第一个plane中的校验结果拷贝至校验die中的其余plane。
在本发明实施例中,保存多份校验结果可以进一步提升固态硬盘100的可靠性,在一份校验结果和一个数据die中的数据同时被破坏的情况下,仍然可以将被破坏的数据die中的数据恢复出来。
在本发明实施例中,校验运算是以physical block为单位进行的,即对同一个physical block中多个数据die中的多个plane中的多个block进行校验运算,最终得到校验结果,在对固态硬盘100进行写操作的同时还需要计算校验结果,因此本发明实施例还包括步骤S201-步骤S205。
请参照图7,图7示出了本发明实施例提供的写数据的流程图。写数据流程包括以下步骤:
步骤S201,基于写数据的写操作请求获取一个待擦除的physical block。
在本发明实施例中,由于闪存颗粒120受其本身的物理特性的限制,闪存颗粒120进行的写操作之前需要先进行擦除操作,擦除操作是以block为单位进行的,因此在写数据之前首先要获取一个待擦除的physical block,先对待擦除的physical block进行擦除,然后才可以向擦除后的physical block中写入待写数据。
步骤S202,对待擦除的physical block中的block进行擦除,并依据擦除结果确定出第一待写入块和第二待写入块,其中,第一待写入块是待擦除physical block中第一个擦除结果成功的block,第二待写入块是待擦除physical block中最后一个擦除结果成功的block。
在本发明实施例中,当一个die中包括多个plane时,当多个plane中序号相同的任何一个block擦除失败时,与该擦除失败序号相同的其余block也不能用于存储数据,例如,一个die中有2个plane:编号0的plane和编号1的plane,编号0的plane的第一个block擦除失败时,编号1的plane的第一个block也无法存储数据。第一待写入块指physical block中第一个擦除成功的block,第二待写入块指physical block中最后一个擦除成功的block所属的die的第一个plane中的block,写数据从physical block中第一待写入块开始进行存储,跳过中间的擦除失败的block,最后再将写数据进行校验运算的校验结果存储至physical block中第二待写入块。例如,图2中,当一个super block即是一个physicalblock时,die0中的block0、die0中的block1、die1中的block0、die1中的block1、die2中的block0、die2中的block1组成0号physical block,在对0号physical block进行擦除时,die0中的block0、die0中的block1、die1中的block0、die1中的block1均擦除成功,die2中的block0擦除失败,则die0中的block0为第一待写入块,die1中的block0为第二待写入块,由于die2中的block0擦除失败,因此die2中的block1也不能存储数据。
步骤S203,当将写数据写入第一待写入块时,获取第一内存资源,其中,第一内存资源用于暂存对写数据进行校验运算后的校验数据。
在本发明实施例中,由于每个physical block中包括多个block,每个block包括多个page,将每个physical block的每个序号相同的block中编号相同的page作为一个条带,每个physical block包括多个条带,由于数据写入的单位为page,因此,写入写数据至physical block时,是逐个条带依次写入,在将写数据写入每个条带时,是对该条带中每个page依次写入,同时对该条带中的每个page中的数据进行校验运算,最终得到该条带中写入数据的校验数据,将该校验数据存储至第二待写数据块的该条带中对应的page。图8示出了本发明实施例提供的条带的示例图,图8中,每个physical block由一个super block组成,即die0中的block0、die0中的block1、die1中的block0、die1中的block1、die2中的block0、die2中的block1组成0号physical block,其中,die0中的block0的page0、die0中的block1的page0、die1中的block0的page0、die1中的block1的page0、die2中的block0的page0、die2中的block1的page0组成0号条带。
在进行校验计算时,需要内存资源做中间的校验运算,在本发明实施例中,内存资源可以是预先预留的以队列形式组成的内存资源队列,当需要内存资源时,从该内存资源队列中取,内存资源使用完毕后,将该内存资源放回内存资源队列,内存资源包括第一内存资源和第二内存资源,将进行写数据时进行校验运算需要的内存资源作为第一内存资源,将恢复读数据时进行校验运算需要的内存资源作为第二内存资源。由于每个条带在进行校验运算时只需要一个第一内存资源,因此,只有在写入第一待写入块的第一个条带的第一个page时,才需要申请第一内存资源,physical block中其余条带均可使用该第一内存资源。
需要说明的是,为了提高写入性能,本发明实施例中,可以为每个physical block预留两份第一内存资源,支持每个physical block中两个条带同时写入,两个同时写入的条带使用的两份第一内存资源相互独立,一旦一个条带中的数据写入结束,将该条带使用的第一内存资源释放,以便于下一个条带可以申请该第一内存资源,继续进行写数据。
步骤S204,依次将写数据写入待擦除physical block中的block,并根据写数据对第一内存资源中的校验数据进行更新。
在本发明实施例中,对校验数据更新的过程在步骤S101-步骤S103中已经详细说明,此处不再赘述。
步骤S205,当将写数据写入第二待写入块时,将第一内存资源中的校验数据写入第二待写入块。
在本发明实施例中,将校验数据写入第二待写入块的过程在步骤S104-步骤S105中已经详细说明,此处不再赘述。
需要说明的是,一个physical block中也可以包括多个super block,此时,多个super block中对应block中对应的page组成一个条带,写入数据和进行数据校验仍然按照条带进行,例如,die0中的block0、die0中的block1、die1中的block0、die1中的block1、die2中的block0、die2中的block1组成0号super block、die0中的block2、die0中的block3、die1中的block2、die1中的block3、die2中的block2、die2中的block3组成1号super block,0号super block和1号super block组成0号physical block,0号physicalblock中0号条带由0号super block中各block中第一个page及1号super block中各block中第一个page组成。由此,采用不同闪存颗粒120容量的固态硬盘100也可以组成block个数相同的physical block,从而使得本发明实施例中校验数据生成方法可以适用于采用不同闪存颗粒120容量的固态硬盘100。
在本发明实施例中,由于写入该数据时,同时对该数据进行了校验运算,并保存了对应的校验结果,当闪存颗粒120中一个physical block中任意一个block被损坏时,会导致读取该block中存储的数据失败,此时,可以通过之前保存的校验结果中的校验数据及physical block中其他未损坏的数据对被损坏的block中的数据进行恢复,因此,本发明实施例还包括步骤S301-步骤S303。
请参照图9,图9示出了本发明实例提供的读数据恢复流程图,读数据恢复流程图包括以下步骤:
步骤S301,当读数据的读操作请求失败时,获取读数据所属的待读physicalblock及待读page。
在本发明实施例中,数据的读取单位是page,固态硬盘100收到主机发送的读操作请求后,根据该读操作请求中携带的读数据的地址,得到该读数据所属的physical block及待读page。
步骤S302,申请第二内存资源以暂存恢复的待读page中的读数据。
在本发明实施例中,为了恢复待读page中的读数据,需要将读数据所属的physical block中与待读page相同编号的其他page读出,并依次做校验运算,最终得到恢复后的待读page中的读数据。由于恢复读数据也需要进行校验运算,因此,在恢复读数据时,需要首先申请第二内存资源以暂存校验运算的中间校验数据,将physical block中与待读page相同编号的其他page依次进行校验运算,最终的校验结果即为恢复后的读数据。
步骤S303,依次将待读physical block中与待读page的编号相同的page中数据读出后做校验运算,得到恢复后的读数据。
在本发明实施例中,依次将待读physical block中与待读page的编号相同的page中数据读出后做校验运算的过程与步骤S101-S103类似,例如,图7中,die0中的block0的page0、die0中的block1的page0、die1中的block0的page0、die1中的block1的page0、die2中的block0的page0、die2中的block1的page0组成0号条带,当0号条带中die1的block0的page0被损坏导致读取失败时,首先,申请第二内存资源,然后,将die0中的block0的page0、die0中的block1的page0、die1中的block1的page0、die2中的block0的page0、die2中的block1的page0依次做校验运算,最终得到的校验结果即为恢复后的die1的block0的page0中的数据。
需要说明的是,为了提高数据恢复的性能,本发明实施例中,可以为每个physicalblock预留四份第二内存资源,支持每个physical block中四个条带同时恢复,四份第二内存资源相互独立,一旦一个条带中的数据恢复完成,将该条带使用的第二内存资源释放,以便于下一个条带可以申请该第二内存资源,继续进行数据恢复。
在本发明实施例中,通过对现有RAID的改进,对每个RAID条带做校验运算时只需要一份内存资源,与现有技术相比,具有以下有益效果:
第一,对每个RAID条带做校验运算时只需要一份内存资源,大大减少了RAID对内存资源的消耗,使得固态硬盘100中有限的内存资源不再成为性能的瓶颈,提升了固态硬盘100的性能。
第二,通过对同一个physical block预留多份资源,提供的闪存颗粒120的读写并发度,提升闪存颗粒120读写的性能。
第三,以physical block为单位做RAID,通过调整physical block中super block的个数使得本发明实施例提供的校验数据生成方法可以适用于不同容量的闪存颗粒120的固态硬盘100。
第二实施例
请参照图10,图10示出了本发明实施例提供的第一校验数据生成装置200的方框示意图。第一校验数据生成装置200应用于固态硬盘100,其包括获取模块201;擦除模块202;申请模块203。
获取模块201,用于基于写数据的写操作请求获取一个待擦除的physical block、以及用于当读数据的读操作请求失败时,获取读数据所属的待读physical block及待读page。
在本发明实施例中,获取模块201用于执行步骤S201及步骤S301。
擦除模块202,用于对待擦除的physical block中的block进行擦除,并依据擦除结果确定出第一待写入块和第二待写入块,其中,第一待写入块是待擦除physical block中第一个擦除结果成功的block,第二待写入块是待擦除physical block中最后一个擦除结果成功的block。
在本发明实施例中,擦除模块202用于执行步骤S202。
申请模块203,用于当将写数据写入第一待写入块时,获取第一内存资源,其中,第一内存资源用于暂存对写数据进行校验运算后的校验数据、以及用于申请第二内存资源以暂存恢复的待读page中的读数据。
在本发明实施例中,申请模块203用于执行步骤S203及步骤S302。
请参照图11,图11示出了本发明实施例提供的第二校验数据生成装置400的方框示意图。第二校验数据生成装置400应用于固态硬盘100,其包括校验模块401;写入模块402;拷贝模块403;更新模块404;
校验模块401,用于对起始编号的数据die中多个plane做校验运算,得到第一校验数据、以及用于将第一校验数据与和起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据、
以及用于将第二校验数据与和当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成多个数据die的校验运算,得到校验结果、
以及用于依次将待读physical block中与待读page的编号相同的page中数据读出后做校验运算,得到恢复后的读数据。
在本发明实施例中,校验模块401用于执行步骤S101及其子步骤S1011-S1012、以及步骤S102及其子步骤S1021-S1022、以及步骤S103、以及步骤S303。
写入模块402,用于将校验结果写入至校验die中的第一个plane、以及用于当将写数据写入第一待写入块时,获取第一内存资源,其中,第一内存资源用于暂存对写数据进行校验运算后的校验数据、以及用于当将写数据写入第二待写入块时,将第一内存资源中的校验结果写入第二待写入块。
在本发明实施例中,写入模块402用于执行步骤S104、步骤S203及步骤S205。
在本发明实施例中,写入模块402用于执行步骤S104。
拷贝模块403,用于将写入校验die中的第一个plane中的校验结果拷贝至校验die中的其余plane。
在本发明实施例中,拷贝模块403用于执行步骤S105。
更新模块404,用于依次将写数据写入待擦除physical block中的block,并根据写数据对第一内存资源中的校验数据进行更新。
在本发明实施例中,更新模块404用于执行步骤S204。
在本发明实施例中,获取模块201、擦除模块202、申请模块203由处理器111执行,校验模块401、写入模块402、拷贝模块403、更新模块404由RAID硬件模块112执行。
综上所述,本发明提供的一种校验数据生成方法及固态硬盘,所述方法应用于固态硬盘,固态硬盘包括多个依次编号的die,多个die包括多个数据die,每个die包括多个依次编号的plane,所述方法包括:对起始编号的数据die中多个plane做校验运算,得到第一校验数据;将第一校验数据与和起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据;将第二校验数据与和当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成多个数据die的校验运算,得到校验结果。与现有技术相比,本发明通过对现有RAID的改进,对每个RAID条带做校验运算时只需要一份内存资源,大大减少了RAID对内存资源的消耗,提升了固态硬盘的性能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (10)
1.一种校验数据生成方法,其特征在于,应用于固态硬盘,所述固态硬盘包括多个依次编号的die,所述多个die包括多个数据die,每个die包括多个依次编号的plane,所述方法包括:
对起始编号的数据die中多个plane做校验运算,得到第一校验数据;
将所述第一校验数据与和所述起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据;
将所述第二校验数据与和所述当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成所述多个数据die的校验运算,得到校验结果。
2.如权利要求1所述的校验数据生成方法,其特征在于,所述对起始编号的数据die中多个plane做校验运算,得到第一校验数据的步骤,包括:
将所述起始编号的数据die中起始两个plane做校验运算,得到起始校验数据;
将所述起始校验数据与所述起始编号的数据die中其余plane依次迭代做校验运算,得到第一校验数据。
3.如权利要求1所述的校验数据生成方法,其特征在于,所述将所述第一校验数据与和所述起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据的步骤,包括:
将所述起始编号连续的当前编号的数据die中的第一个plane与第一校验数据做校验运算,得到当前校验数据;
将所述当前校验数据与所述起始编号连续的当前编号的数据die中的其余plane依次迭代做校验运算,得到第二校验数据。
4.如权利要求1所述的校验数据生成方法,其特征在于,所述多个die包括一个校验die,
所述得到校验结果的步骤之后,所述方法还包括:
将所述校验结果写入至所述校验die中的第一个plane;
将写入所述校验die中的第一个plane中的校验结果拷贝至所述校验die中的其余plane。
5.如权利要求1所述的校验数据生成方法,其特征在于,每个plane包括多个依次按序排列的block,多个die上字线相同的block组成super block,一个或多个super block组成一个physical block,所述方法还包括:
基于写数据的写操作请求获取一个待擦除的physical block;
对所述待擦除的physical block中的block进行擦除,并依据擦除结果确定出第一待写入块和第二待写入块,其中,所述第一待写入块是所述待擦除physical block中第一个擦除结果成功的block,所述第二待写入块是所述待擦除physical block中最后一个擦除结果成功的block;
当将所述写数据写入所述第一待写入块时,获取第一内存资源,其中,所述第一内存资源用于暂存对所述写数据进行校验运算后的校验数据;
依次将所述写数据写入待擦除physical block中的block,并根据所述写数据对第一内存资源中的校验数据进行更新;
当将所述写数据写入所述第二待写入块时,将所述第一内存资源中的校验数据写入所述第二待写入块。
6.如权利要求5所述的校验数据生成方法,其特征在于,每个block包括多个依次编号的page,所述方法还包括:
当读数据的读操作请求失败时,获取所述读数据所属的待读physical block及待读page;
申请第二内存资源以暂存恢复的待读page中的读数据;
依次将待读physical block中与待读page的编号相同的page中数据读出后做校验运算,得到恢复后的读数据。
7.如权利要求1-6任一项所述的校验数据生成方法,其特征在于,所述固态硬盘还包括RAID硬件模块,所述校验数据生成方法基于所述RAID硬件模块实现。
8.一种固态硬盘,其特征在于,所述固态硬盘包括处理器、RAID硬件模块及闪存颗粒,所述闪存颗粒包括多个依次编号的die,所述多个die包括多个数据die,每个die包括多个依次编号的plane;
所述处理器用于控制所述RAID硬件模块对起始编号的数据die中多个plane做校验运算,得到第一校验数据、及控制所述RAID硬件模块将所述第一校验数据与和所述起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据、以及控制所述RAID硬件模块将所述第二校验数据与和所述当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成所述多个数据die的校验运算,得到校验结果。
9.如权利要求8所述的固态硬盘,其特征在于,所述处理器还用于:
控制所述RAID硬件模块将所述校验结果写入至所述校验die中的第一个plane;
控制所述RAID硬件模块将写入所述校验die中的第一个plane中的校验结果拷贝至所述校验die中的其余plane。
10.如权利要求8所述的固态硬盘,所述RAID硬件模块包括校验运算单元,所述校验运算单元用于对起始编号的数据die中多个plane做校验运算,得到第一校验数据、及用于将所述第一校验数据与和所述起始编号连续的当前编号的数据die的多个plane依次迭代做校验运算,得到第二校验数据、以及用于将所述第二校验数据与和所述当前编号连续的下一个编号的数据die的多个plane依次迭代做校验运算,直到完成所述多个数据die的校验运算,得到校验结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811450337.7A CN109542671B (zh) | 2018-11-30 | 2018-11-30 | 校验数据生成方法及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811450337.7A CN109542671B (zh) | 2018-11-30 | 2018-11-30 | 校验数据生成方法及固态硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542671A true CN109542671A (zh) | 2019-03-29 |
CN109542671B CN109542671B (zh) | 2022-06-07 |
Family
ID=65851517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811450337.7A Active CN109542671B (zh) | 2018-11-30 | 2018-11-30 | 校验数据生成方法及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542671B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596679A (zh) * | 2020-12-25 | 2021-04-02 | 深圳忆联信息系统有限公司 | 固态硬盘的raid实现方法、装置、计算机设备及存储介质 |
CN117632579A (zh) * | 2024-01-25 | 2024-03-01 | 合肥兆芯电子有限公司 | 存储器控制方法和存储器存储装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002185333A (ja) * | 2000-12-15 | 2002-06-28 | Communication Research Laboratory | 冗長パリティ検査を用いたブロック符号化変調方法 |
KR100669352B1 (ko) * | 2005-09-07 | 2007-01-16 | 삼성전자주식회사 | 카피 백 프로그램 동작 동안에 에러 검출 및 데이터 리로딩동작을 수행할 수 있는 낸드 플래시 메모리 장치 |
CN103593253A (zh) * | 2013-11-22 | 2014-02-19 | 华中科技大学 | 一种基于异或的垂直raid-6编码方法 |
CN105573681A (zh) * | 2015-12-31 | 2016-05-11 | 湖南国科微电子股份有限公司 | 一种ssd盘片内部raid组建方法及系统 |
CN107403646A (zh) * | 2016-04-27 | 2017-11-28 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
CN107704338A (zh) * | 2017-08-22 | 2018-02-16 | 深圳市硅格半导体股份有限公司 | 一种资料储存型闪存的数据恢复方法和装置 |
CN107832168A (zh) * | 2017-10-13 | 2018-03-23 | 记忆科技(深圳)有限公司 | 一种固态硬盘数据保护的方法 |
CN108647110A (zh) * | 2018-03-30 | 2018-10-12 | 深圳忆联信息系统有限公司 | 一种增强型raid保护方法及ssd |
-
2018
- 2018-11-30 CN CN201811450337.7A patent/CN109542671B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002185333A (ja) * | 2000-12-15 | 2002-06-28 | Communication Research Laboratory | 冗長パリティ検査を用いたブロック符号化変調方法 |
KR100669352B1 (ko) * | 2005-09-07 | 2007-01-16 | 삼성전자주식회사 | 카피 백 프로그램 동작 동안에 에러 검출 및 데이터 리로딩동작을 수행할 수 있는 낸드 플래시 메모리 장치 |
CN103593253A (zh) * | 2013-11-22 | 2014-02-19 | 华中科技大学 | 一种基于异或的垂直raid-6编码方法 |
CN105573681A (zh) * | 2015-12-31 | 2016-05-11 | 湖南国科微电子股份有限公司 | 一种ssd盘片内部raid组建方法及系统 |
CN107403646A (zh) * | 2016-04-27 | 2017-11-28 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
CN107704338A (zh) * | 2017-08-22 | 2018-02-16 | 深圳市硅格半导体股份有限公司 | 一种资料储存型闪存的数据恢复方法和装置 |
CN107832168A (zh) * | 2017-10-13 | 2018-03-23 | 记忆科技(深圳)有限公司 | 一种固态硬盘数据保护的方法 |
CN108647110A (zh) * | 2018-03-30 | 2018-10-12 | 深圳忆联信息系统有限公司 | 一种增强型raid保护方法及ssd |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596679A (zh) * | 2020-12-25 | 2021-04-02 | 深圳忆联信息系统有限公司 | 固态硬盘的raid实现方法、装置、计算机设备及存储介质 |
CN112596679B (zh) * | 2020-12-25 | 2023-10-10 | 深圳忆联信息系统有限公司 | 固态硬盘的raid实现方法、装置、计算机设备及存储介质 |
CN117632579A (zh) * | 2024-01-25 | 2024-03-01 | 合肥兆芯电子有限公司 | 存储器控制方法和存储器存储装置 |
CN117632579B (zh) * | 2024-01-25 | 2024-04-30 | 合肥兆芯电子有限公司 | 存储器控制方法和存储器存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109542671B (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10365983B1 (en) | Repairing raid systems at per-stripe granularity | |
CN105573681B (zh) | 一种ssd盘片内部raid组建方法及系统 | |
CN107526531B (zh) | 为映射独立盘冗余阵列(raid)选择raid级别的方法和设备 | |
CN104216791B (zh) | 一种校验Flash存储数据的方法 | |
CN106255953B (zh) | 持久性数据存储体中的前向参考记录的方法和系统 | |
CN107193486A (zh) | 数据存储设备和包括该数据存储设备的数据处理系统 | |
CN104965768B (zh) | 用于存储系统中的服务感知数据放置的方法和系统 | |
CN107436733A (zh) | 分片管理方法和分片管理装置 | |
US6993676B2 (en) | Method and apparatus for fast initialization of redundant arrays of storage devices | |
CN102185929A (zh) | 一种基于san资源的视频监控数据存储方法及其装置 | |
CN103064765A (zh) | 数据恢复方法、装置及集群存储系统 | |
CN110413454B (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
CN110032521A (zh) | 用于增强闪存转换层映射灵活性以得到性能和寿命改进的方法和系统 | |
CN103425589A (zh) | 控制装置、存储装置以及存储控制方法 | |
CN112148218B (zh) | 磁盘阵列的校验数据存储方法、装置、设备及存储介质 | |
TW200907995A (en) | Method and system of defect management for storage medium | |
CN111124262B (zh) | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 | |
CN109542671A (zh) | 校验数据生成方法及固态硬盘 | |
EP3553664B1 (en) | Method and apparatus for calculating available capacity of storage system | |
CN110442298A (zh) | 存储设备异常检测方法及装置、分布式存储系统 | |
CN109558066B (zh) | 存储系统中恢复元数据的方法和装置 | |
CN111540400B (zh) | 一种写放大系数测试方法、装置及电子设备和存储介质 | |
CN110083305A (zh) | 存储器系统及其操作方法 | |
CN104133640B (zh) | 从休眠快速恢复 | |
CN105095352B (zh) | 应用于分布式系统的数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |