CN112596674B - 一种用于固态硬盘主控缓存数据双重保护的方法及系统 - Google Patents
一种用于固态硬盘主控缓存数据双重保护的方法及系统 Download PDFInfo
- Publication number
- CN112596674B CN112596674B CN202011517448.2A CN202011517448A CN112596674B CN 112596674 B CN112596674 B CN 112596674B CN 202011517448 A CN202011517448 A CN 202011517448A CN 112596674 B CN112596674 B CN 112596674B
- Authority
- CN
- China
- Prior art keywords
- data
- controller
- error correction
- ecc
- cache
- 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.)
- Active
Links
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
本发明公开了一种用于固态硬盘主控缓存数据双重保护的系统,包括主机模块、控制器模块、闪存设备;所述控制器模块包括控制器缓存;主机模块,用于将原始数据存储于主机的内存的,并发消息通知控制器模块;控制器模块,与所述主机模块连接,用于接收主机模块发送的消息,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中;闪存设备,与所述控制器模块连接,用于存储控制器模块写入的数据。
Description
技术领域
本发明涉及数据保护技术领域,尤其涉及一种用于固态硬盘主控缓存数据双重保护的方法及系统。
背景技术
对于固态硬盘的存储数据,最小的逻辑单元是512字节,通常还有8字节或者16字节的元数据,所以逻辑单元数据在512字节到528字节之间。在存入主控缓存的过程中,通常会把8个连续的逻辑单元合成一个4096字节为基础的硬盘存储单元,单元大小在4096字节到4224字节之间。
对于传统的主控缓存的ECC保护,通常是采用一级ECC保护,也就是将数据切成小块(例如7字节或者8字节),然后在每个小块的数据后面加上1字节的ECC数据,然后同时写入缓存的介质中。
但是在企业级固态硬盘中,对数据的错误率要求更高,所以单比特纠错的错误率并不能满足企业级要求,多比特纠错又会占用更多的编解码逻辑和更多的存储空间的开销,并不能达到最大的带宽利用率和存储空间的利用率。还有部分实现方法将数据存放两份,也大大增加了设计的复杂度和内部存储空间的浪费。
发明内容
本发明的目的是针对现有技术的缺陷,提供了一种用于固态硬盘主控缓存数据双重保护的方法及系统。
为了实现以上目的,本发明采用以下技术方案:
一种用于固态硬盘主控缓存数据双重保护的系统,包括主机模块、控制器模块、闪存设备;所述控制器模块包括控制器缓存;
主机模块,用于将原始数据存储于主机的内存的,并发消息通知控制器模块;
控制器模块,与所述主机模块连接,用于接收主机模块发送的消息,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中;
闪存设备,与所述控制器模块连接,用于存储控制器模块写入的数据。
进一步的,所述控制器模块中经过顶层切片是采用多比特纠错的纠错码进行切片的。
进一步的,所述控制器模块中经过底层切片是采用单比特纠错、多比特检错的纠错码进行切片的。
进一步的,所述控制器模块中读取主机内存中存储的原始数据中还包括:
主机模块的一个消息对应多个逻辑块LB的数据或对应最小一个逻辑块LB的数据,控制器模块将主机模块的逻辑块LB的逻辑单元数据对应到控制器模块的数据单元控制器块CB中。
进一步的,所述控制器模块中经过顶层切片具体为按照大数据块进行切片,且切片的数据采用多比特纠错的顶层ECC编码器进行,并把顶层ECC编码器编码后的校验数据放在数据单元的最后面。
进一步的,所述控制器模块中经过底层切片具体为按照小数据块进行切片,且切片的数据使用底层ECC编码器进行编码。
进一步的,所述控制器模块中顶层ECC编码器的编码逻辑为数据和编码矩阵的乘加逻辑。
进一步的,所述编码矩阵存储于可编程的SRAM芯片中。
进一步的,所述控制器模块中读取写入控制器缓存中的数据后还包括:
将从控制器缓存中读取出的数据后经过底层ECC解码器纠正单比特数据错误和多比特数据报错;当读取到单比特数据错误时,底层ECC解码器对数据实时纠错;当读取到多比特数据错误时,底层ECC解码器对控制器块CB中的数据流标错,同时控制器模块的硬件会对传输失败进行标记,对出错的数据通过顶层ECC解码器进行纠错,并重新发送消息给控制器模块的硬件,重新发起控制器块CB中的数据传输。
相应的,还提供一种用于固态硬盘主控缓存数据双重保护的方法,包括步骤:
S1.主机模块将原始数据存储于主机的内存的,并发消息通知控制器模块;
S2.控制器模块接收主机模块发送的消息,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中;
S3.闪存设备存储控制器模块写入的数据。
与现有技术相比,本发明在对固态硬盘主控数据进行双重ECC保护后,能在几乎不消耗硬件资源的情况下(增加逻辑仅为0.04%),降低3倍的错误率,例如如果DDR的单比特错误率为10e-9,而且假设DDR发生单比特错误的概率相同,那么采用顶层3比特纠错的方案后,可以有效把错误率降低到10e-27。而且由于多比特纠错的ECC编码的硬件实现逻辑简单,很容易使用寄存器控制顶层纠错的比特数。而解码是使用固件实现的,可以根据需要来改变解码逻辑。
附图说明
图1是实施例一提供的一种用于固态硬盘主控缓存数据双重保护的系统结构图;
图2是实施例一提供的数据编解码过程示意图;
图3是实施例一提供的数据进行BCH缓存时的格式示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
本发明的目的是针对现有技术的缺陷,提供了一种用于固态硬盘主控缓存数据双重保护的方法及系统。
实施例一
本实施例提供一种用于固态硬盘主控缓存数据双重保护的系统,如图1所示,包括主机模块11、控制器模块12、闪存设备13;控制器模块12分别与主机模块11、闪存设备14连接;控制器模块12包括控制器缓存(如缓存DDR)。
主机模块11,用于将原始数据存储于主机的内存的,并发消息通知控制器模块;
控制器模块12,与所述主机模块连接,用于接收主机模块发送的消息,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中;
闪存设备13,用于存储控制器模块12写入的数据。
在主机模块11中,将原始数据存储于主机的内存的,并发消息通知控制器模块。
主机模块将数据准备在主机的内存中,通过NVMe协议规定,发消息通知控制器模块。通常主机模块的数据大小逻辑块LB(logic block)为512字节,其对应的元数据meta为8或者16字节。或者主机模块的数据大小为4096字节,元数据meta为8或者16字节。
在控制器模块12中,接收主机模块发送的消息,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中。
控制器模块收到消息后,将数据从主机模块内存中读出,写入缓存DDR中;通常的,主机模块的一个消息对应多个LB的数据,或者对应最小一个LB的数据,控制器模块需要把主机模块的LB逻辑单元数据对应到控制器模块的数据单元控制器块CB(controllerBlock)的大小上。所以一个消息对应的LB大于CB,需要将LB填入多个CB中。而如果写入的数据LB无法填满一个CB,需要将该CB中其他LB的数据从Flash中读出,在组成一个完整CB。
本实施例中当存入缓存DDR的数据块时,会进行底层和顶层两次切片,在进行顶层切片时,切片单位通常较大,使用多比特纠错的纠错码实现;在底层切片时,切片单位通常较小,使用单比特纠错,多比特检错的纠错码实现。
控制器模块将数据存储在缓存DDR中时,采用双重ECC对数据进行保护。数据流如图2所示。
先将数据流经过顶层ECC编码器(如BCH编码器)时,对原始数据进行顶层切片,在本实施例中也就是进行528字节切片,最后一块不足528字节的也可以根据短码进行编码。编码后产生的ECC数据先暂存在BCH编码器中,在该CB全部发完后,跟在数据后写入缓存DDR中。
再在数据(原始数据和BCH校验数据)写入缓存时,经过底层ECC编码器(如RS编码器),对流过的数据进行底层切片,没8个字节生产1个字节的校验数据,同时写入缓存中。
在本实施例的固态硬盘的方案中,底层按8字节切片,切片数据使用RS-ECC(Reed-Solomon ECC)编码(也就是RS编码器),属于普通的对存储介质的数据保护模式。同时,对于同样的数据,再按528字节进行一次顶层切片,切片数据采用纠错3比特的BCH-ECC编码(也就是BCH编码器),并把BCH的ECC数据放在数据单元的最后面,这样在没有错误,或者仅有单比特错误的情况下,并不会影响原始数据的读写流程。
采用硬件实现单比特纠错,多比特检错的ECC保护,普通的单比特纠错,多比特检错的ECC保护是常用的对存储介质的保护方案,其特点是速度快,硬件资源消耗少,编码解码逻辑简单,所以采用硬件逻辑实现编解码功能并不会消耗过多资源,一个8字节对应8比特ECC的编码器约占400逻辑门,而同样的对应64比特数据的ECC解码器约占600多逻辑门。
对于顶层切片,同时进行多比特纠错的ECC保护,对于大块数据(例如528字节),进行多比特的ECC保护(例如BCH-ECC保护),但是硬件仅实现其编码功能,并不实现解码功能。编码逻辑的硬件实现约占2万逻辑门,同时并不影响正常的数据流。产生的ECC放在硬盘存储单元的末尾。
在本实施例中,顶层ECC的编码逻辑可以进行修改。由于顶层ECC的编码是使用BCH-ECC,其特征多项式的编码逻辑可以化简为数据和编码矩阵的乘加逻辑,将编码矩阵存入可编程的SRAM中,就可以替换编码逻辑,实现不同的BCH编解码逻辑,根据需要来调整需要纠错的比特数。
在经过控制器模块中的控制逻辑计算后,控制器模块再将数据从缓存DDR中读出,写入闪存设备NAND介质中。
在需要读取数据时,读数据先经过RS解码器,该解码器可以纠正1比特数据错误,和多比特数据报错。当发生单比特数据错误时,解码器对数据实时纠错,不需要固件参与。上层感知不到错误。
当读取数据时发生了多比特数据出错,RS解码器会对该CB数据流标错,同时控制器模块的硬件模块会标记本次传输失败,顶层切片数据的ECC解码逻辑通过固件实现。当底层切片数据的ECC出现多比特错误时,硬件把该错误上报给固件,固件通过大块数据多比特恢复的方法,来实现多比特纠错的功能。
具体为:发送消息给CPU,CPU的固件会根据地址对出错的数据进行多比特BCH纠错,然后重新发送消息给硬件模块,重新发起该CB数据的传输。
在本实施例中,顶层ECC的解码逻辑也可以修改,由于顶层ECC的解码逻辑使用固件来实现,当更改了编码逻辑后,解码逻辑也可以根据修改固件来实现。
如图3所示为数据进行BCH缓存时的格式改变过程。当数据在内部传输时,把数据进行顶层切片,也就是按528字节分块,每528字节产生8字节的顶层ECC数据,并放入模块寄存器中;同时,在写入缓存的控制器模块中,对写入缓存的数据进行底层切片,也就是按8字节分块,每8字节产生1字节的底层ECC数据,和写入缓存的数据一起写入缓存中;由于控制器模块的内部存储单元最大为8个528字节,也就是4224字节,所以最多产生8个BCH ECC数据,将这64字节的BCH ECC数据放在原始数据末尾写入缓存中;对于顶层ECC数据,在写入缓存时同样会产生底层ECC数据保护顶层ECC数据。
在需要读取主机模块数据时,会把8字节数据+1字节ECC同时放入底层ECC解码器中,该解码器可以对单比特纠错,多比特报错的功能;当底层ECC解码器探测到多比特错误时,会对整块数据(4224字节数据)进行标错,然后通知固件需要对该块数据进行恢复;固件通过读528字节数据来判断是哪块数据出错,然后在固件中实现顶层ECC数据解码恢复。
由于缓存多比特错误的概率并不高,所以没出错的数据流应该正常执行,只对出错的数据进行恢复,当恢复后,即可以重新发出读取命令,重新执行一遍读缓存的操作,恢复出错数据流。
现有技术中在企业级NVMe协议下的固态硬盘中,企业级数据在写入时会要求数据必须写入存储介质中。但是由于存储介质(NAND FLASH)的编程时间过长,通常达到毫秒的延迟,导致有大量数据缓存在控制器内存中,所以该部分数据被存储到了外部的缓存颗粒中,通常使用DDR介质实现。为了降低写入延迟,主控会把数据写入缓存后就标记为写入结束,所以缓存中的数据的错误率必须非常低,例如10e-17以下。而由于DDR的错误率不一定能达到该要求。
为了解决现有技术中存在的问题,本实施例把内部存储的数据进行了双重ECC保护,在普通的底层ECC保护基础上,增加了顶层大块数据的ECC硬件编码,固件解码纠错逻辑。
与现有技术相比,本实施例在对固态硬盘主控数据进行双重ECC保护后,能在几乎不消耗硬件资源的情况下(增加逻辑仅为0.04%),降低3倍的错误率,例如如果DDR的单比特错误率为10e-9,而且假设DDR发生单比特错误的概率相同,那么采用顶层3比特纠错的方案后,可以有效把错误率降低到10e-27。而且由于多比特纠错的ECC编码的硬件实现逻辑简单,很容易使用寄存器控制顶层纠错的比特数。而解码是使用固件实现的,可以根据需要来改变解码逻辑。
实施例二
本实施例提供一种用于固态硬盘主控缓存数据双重保护的方法,包括步骤:
S11.主机模块将原始数据存储于主机的内存的,并发消息通知控制器模块;
S12.控制器模块接收主机模块发送的消息,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中;
S13.闪存设备存储控制器模块写入的数据。
需要说明的是,本实施例提供的一种用于固态硬盘主控缓存数据双重保护的方法与实施例一类似,在此不多做赘述。
与现有技术相比,本实施例在对固态硬盘主控数据进行双重ECC保护后,能在几乎不消耗硬件资源的情况下(增加逻辑仅为0.04%),降低3倍的错误率,例如如果DDR的单比特错误率为10e-9,而且假设DDR发生单比特错误的概率相同,那么采用顶层3比特纠错的方案后,可以有效把错误率降低到10e-27。而且由于多比特纠错的ECC编码的硬件实现逻辑简单,很容易使用寄存器控制顶层纠错的比特数。而解码是使用固件实现的,可以根据需要来改变解码逻辑。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种用于固态硬盘主控缓存数据双重保护的系统,其特征在于,包括主机模块、控制器模块、闪存设备;所述控制器模块包括控制器缓存;
主机模块,用于将原始数据存储于主机的内存的,并发消息通知控制器模块;
控制器模块,与所述主机模块连接,用于接收主机模块发送的消息,写入缓存DDR中,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中;
在读取控制器缓存数据时,先经过底层解码器以硬件方式进行纠错;如果发生单比特数据错误,将根据底层纠错码直接纠错;当发生多比特数据错误,则将该错误转发给固件,固件根据顶层纠错码进行多比特纠错;
主机模块的一个消息对应多个LB的数据,或者对应最小一个LB的数据,控制器模块把主机模块的LB逻辑单元数据对应到控制器模块的数据单元控制器块CB的大小上;所以一个消息对应的LB大于CB,将LB填入多个CB中,而如果写入的数据LB无法填满一个CB,将该CB中其他LB的数据从Flash中读出,再组成一个完整CB;
闪存设备,与所述控制器模块连接,用于存储控制器模块写入的数据;
所述控制器模块中经过顶层切片具体为按照大数据块进行切片,且切片的数据采用多比特纠错的顶层ECC编码器进行,并把顶层ECC编码器编码后的校验数据放在数据单元的最后面;
所述顶层ECC编码采用BCH编码器,底层ECC编码采用RS编码器;
所述控制器模块中经过底层切片是采用单比特纠错、多比特检错的纠错码进行切片的;
当存入缓存DDR的数据块时,在进行顶层切片时,切片单位较大,使用多比特纠错的纠错码实现;在底层切片时,切片单位较小,使用单比特纠错,多比特检错的纠错码实现。
2.根据权利要求1所述的一种用于固态硬盘主控缓存数据双重保护的系统,其特征在于,所述控制器模块中经过顶层切片是采用多比特纠错的纠错码进行切片的。
3.根据权利要求2所述的一种用于固态硬盘主控缓存数据双重保护的系统,其特征在于,所述控制器模块中读取主机内存中存储的原始数据中还包括:
主机模块的一个消息对应多个逻辑块LB的数据或对应最小一个逻辑块LB的数据,控制器模块将主机模块的逻辑块LB的逻辑单元数据对应到控制器模块的数据单元控制器块CB中。
4.根据权利要求3所述的一种用于固态硬盘主控缓存数据双重保护的系统,其特征在于,所述控制器模块中经过底层切片具体为按照小数据块进行切片,且切片的数据使用底层ECC编码器进行编码。
5.根据权利要求1所述的一种用于固态硬盘主控缓存数据双重保护的系统,其特征在于,所述控制器模块中顶层ECC编码器的编码逻辑为数据和编码矩阵的乘加逻辑。
6.根据权利要求5所述的一种用于固态硬盘主控缓存数据双重保护的系统,其特征在于,所述编码矩阵存储于可编程的SRAM芯片中。
7.根据权利要求6所述的一种用于固态硬盘主控缓存数据双重保护的系统,其特征在于,所述控制器模块中读取写入控制器缓存中的数据后还包括:
将从控制器缓存中读取出的数据后经过底层ECC解码器纠正单比特数据错误和多比特数据报错;当读取到单比特数据错误时,底层ECC解码器对数据实时纠错;当读取到多比特数据错误时,底层ECC解码器对控制器块CB中的数据流标错,同时控制器模块的硬件会对传输失败进行标记,对出错的数据通过顶层ECC解码器进行纠错,并重新发送消息给控制器模块的硬件,重新发起控制器块CB中的数据传输。
8.一种用于固态硬盘主控缓存数据双重保护的方法,其特征在于,包括步骤:
S1.主机模块将原始数据存储于主机的内存的,并发消息通知控制器模块;
S2.控制器模块接收主机模块发送的消息,写入缓存DDR中,读取主机内存中存储的原始数据,并通过顶层ECC编码器对读取的原始数据经过顶层切片,得到通过顶层ECC编码后的数据,将顶层ECC编码后的数据经过底层切片后输入至底层ECC编码器中,得到通过底层ECC编码后的数据,将得到的数据写入控制器缓存中;再读取写入控制器缓存中的数据,并将读取的数据写入闪存设备中;
在读取控制器缓存数据时,先经过底层解码器以硬件方式进行纠错;如果发生单比特数据错误,将根据底层纠错码直接纠错;当发生多比特数据错误,则将该错误转发给固件,固件根据顶层纠错码进行多比特纠错;
主机模块的一个消息对应多个LB的数据,或者对应最小一个LB的数据,控制器模块把主机模块的LB逻辑单元数据对应到控制器模块的数据单元控制器块CB的大小上;所以一个消息对应的LB大于CB,将LB填入多个CB中,而如果写入的数据LB无法填满一个CB,将该CB中其他LB的数据从Flash中读出,再组成一个完整CB;
S3.闪存设备存储控制器模块写入的数据;
所述步骤S2中经过顶层切片具体为按照大数据块进行切片,且切片的数据采用多比特纠错的顶层ECC编码器进行,并把顶层ECC编码器编码后的校验数据放在数据单元的最后面;
所述顶层ECC编码采用BCH编码器,底层ECC编码采用RS编码器;
所述控制器模块中经过底层切片是采用单比特纠错、多比特检错的纠错码进行切片的;
当存入缓存DDR的数据块时,在进行顶层切片时,切片单位较大,使用多比特纠错的纠错码实现;在底层切片时,切片单位较小,使用单比特纠错,多比特检错的纠错码实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011517448.2A CN112596674B (zh) | 2020-12-21 | 2020-12-21 | 一种用于固态硬盘主控缓存数据双重保护的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011517448.2A CN112596674B (zh) | 2020-12-21 | 2020-12-21 | 一种用于固态硬盘主控缓存数据双重保护的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112596674A CN112596674A (zh) | 2021-04-02 |
CN112596674B true CN112596674B (zh) | 2023-10-13 |
Family
ID=75199618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011517448.2A Active CN112596674B (zh) | 2020-12-21 | 2020-12-21 | 一种用于固态硬盘主控缓存数据双重保护的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112596674B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114627954B (zh) * | 2022-05-16 | 2022-08-30 | 芯动微电子科技(武汉)有限公司 | Ddr双列直插式存储模块、存储系统及其操作方法 |
CN115061640B (zh) * | 2022-08-11 | 2022-12-02 | 深圳云豹智能有限公司 | 一种容错分布存储系统、方法、电子设备及介质 |
CN116701047A (zh) * | 2023-05-29 | 2023-09-05 | 珠海妙存科技有限公司 | 纠错解码数据生成方法、装置、电子设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4090173A (en) * | 1976-12-17 | 1978-05-16 | General Signal Corporation | Vital digital communication system |
US5381145A (en) * | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
US6076176A (en) * | 1998-03-19 | 2000-06-13 | Digital Equipment Corporation | Encoding of failing bit addresses to facilitate multi-bit failure detect using a wired-OR scheme |
WO2001067447A2 (en) * | 2000-03-09 | 2001-09-13 | Cirrus Logic Inc | Multiple-rate channel endec in a commuted read/write channel for disk storage systems |
US6397365B1 (en) * | 1999-05-18 | 2002-05-28 | Hewlett-Packard Company | Memory error correction using redundant sliced memory and standard ECC mechanisms |
CN1905070A (zh) * | 2005-07-28 | 2007-01-31 | 三星电子株式会社 | 能够存储多比特数据和单比特数据的闪存设备 |
CN101256842A (zh) * | 2007-01-03 | 2008-09-03 | 三星电子株式会社 | 纠错码控制器和包括该纠错码控制器的存储器系统 |
CN102110481A (zh) * | 2009-12-24 | 2011-06-29 | 海力士半导体有限公司 | 具有ecc电路的半导体存储系统及其控制方法 |
CN111431541A (zh) * | 2019-01-09 | 2020-07-17 | 电信科学技术研究院有限公司 | 一种获得crc码的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9143200B2 (en) * | 2012-09-26 | 2015-09-22 | Qualcomm Incorporated | Apparatus and method of receiver architecture and low-complexity decoder for line-coded and amplitude-modulated signal |
US9430324B2 (en) * | 2013-05-24 | 2016-08-30 | Rambus Inc. | Memory repair method and apparatus based on error code tracking |
US9912355B2 (en) * | 2015-09-25 | 2018-03-06 | Intel Corporation | Distributed concatenated error correction |
-
2020
- 2020-12-21 CN CN202011517448.2A patent/CN112596674B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4090173A (en) * | 1976-12-17 | 1978-05-16 | General Signal Corporation | Vital digital communication system |
US5381145A (en) * | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
US6076176A (en) * | 1998-03-19 | 2000-06-13 | Digital Equipment Corporation | Encoding of failing bit addresses to facilitate multi-bit failure detect using a wired-OR scheme |
US6397365B1 (en) * | 1999-05-18 | 2002-05-28 | Hewlett-Packard Company | Memory error correction using redundant sliced memory and standard ECC mechanisms |
WO2001067447A2 (en) * | 2000-03-09 | 2001-09-13 | Cirrus Logic Inc | Multiple-rate channel endec in a commuted read/write channel for disk storage systems |
CN1905070A (zh) * | 2005-07-28 | 2007-01-31 | 三星电子株式会社 | 能够存储多比特数据和单比特数据的闪存设备 |
CN101256842A (zh) * | 2007-01-03 | 2008-09-03 | 三星电子株式会社 | 纠错码控制器和包括该纠错码控制器的存储器系统 |
CN102110481A (zh) * | 2009-12-24 | 2011-06-29 | 海力士半导体有限公司 | 具有ecc电路的半导体存储系统及其控制方法 |
CN111431541A (zh) * | 2019-01-09 | 2020-07-17 | 电信科学技术研究院有限公司 | 一种获得crc码的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112596674A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112596674B (zh) | 一种用于固态硬盘主控缓存数据双重保护的方法及系统 | |
US20210342223A1 (en) | Systems and methods for adaptive error-correction coding | |
US10216569B2 (en) | Systems and methods for adaptive data storage | |
KR102184581B1 (ko) | 메모리 장치 및 모듈 | |
TWI410979B (zh) | 快閃記憶體控制器、其錯誤更正碼控制器及其方法和系統 | |
TWI514139B (zh) | 實體頁、邏輯頁及碼字對應 | |
US8316277B2 (en) | Apparatus, system, and method for ensuring data validity in a data storage process | |
WO2017092239A1 (zh) | 一种闪存纠错方法和装置 | |
US9268632B2 (en) | Memory device with ECC history table | |
US20130179749A1 (en) | Method and system of dynamic data storage for error correction in a memory device | |
EP2299362A2 (en) | Forward error correction for memories | |
JP2011134433A (ja) | Ecc回路を含む半導体ストーリッジシステム及びその制御方法 | |
CN101527171B (zh) | 一种多通道并行纠错的闪存控制方法和装置 | |
KR20130025415A (ko) | 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 | |
CN110597654B (zh) | 用于超快的具有奇偶校验的纠错码的系统和方法 | |
CN106528437B (zh) | 数据储存系统与其相关方法 | |
US10756764B2 (en) | Memory system and control method | |
US10802958B2 (en) | Storage device, its controlling method, and storage system having the storage device | |
JP6491482B2 (ja) | 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 | |
US11204834B1 (en) | Implementation of keeping data integrity in multiple dimensions | |
CN112860476A (zh) | 一种基于视频分层存储的近似纠删码编码方法及装置 | |
CN108170554B (zh) | 一种nand的数据编码方法和装置 | |
CN116909804B (zh) | 一种存储访问控制系统、方法、芯片及存储介质 | |
US10879940B2 (en) | Decoding with data mapping methods and systems | |
CN113921076B (zh) | 基于数据压缩的数据处理方法及ssd设备 |
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 |