CN104881370B - Collaboration uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code - Google Patents
Collaboration uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code Download PDFInfo
- Publication number
- CN104881370B CN104881370B CN201510236451.XA CN201510236451A CN104881370B CN 104881370 B CN104881370 B CN 104881370B CN 201510236451 A CN201510236451 A CN 201510236451A CN 104881370 B CN104881370 B CN 104881370B
- Authority
- CN
- China
- Prior art keywords
- page
- request
- data
- bit
- write
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种协同使用纠删码和纠错码的可靠闪存存储系统构建方法,步骤包括:接收IO请求R,判定读写类型;针对写请求,将每一个条带的s个用户数据页面采用纠删码生成共计待写入的s+k个页面,连同各页面的校验和、纠错码一同写入存储设备;针对读请求划分为属于不同条带的子请求,针对每一个子请求,读取各页面及其校验和、纠错码,计算各页面的校验和并识别位错误,找出位错误最多的页面,如果该页面的位错误数量不大于所使用的纠错码能够纠正的最大错误位数T,则使用纠错码纠正子请求中的位错误,否则使用纠删码纠正子请求中的位错误,返回子请求的数据。本发明具有计算开销低、IO速度快、闪存寿命延长效果显著的优点。
The invention discloses a construction method of a reliable flash memory storage system using erasure correction codes and error correction codes. The steps include: receiving an IO request R, determining the type of read and write; Pages use erasure codes to generate a total of s+k pages to be written, and write them to the storage device together with the checksum and error correction codes of each page; divide the read request into sub-requests belonging to different stripes, and for each Sub-request, read each page and its checksum and error correction code, calculate the checksum of each page and identify bit errors, find out the page with the most bit errors, if the number of bit errors on this page is not greater than the correcting code used The maximum number of error bits T that can be corrected by the error code, use the error correction code to correct the bit error in the sub-request, otherwise use the erasure code to correct the bit error in the sub-request, and return the data of the sub-request. The invention has the advantages of low calculation overhead, fast IO speed and remarkable effect of extending the life of the flash memory.
Description
技术领域technical field
本发明涉及计算机存储系统领域,具体涉及一种协同使用纠删码和纠错码的可靠闪存存储系统构建方法。The invention relates to the field of computer storage systems, in particular to a construction method of a reliable flash memory storage system using erasure correction codes and error correction codes in cooperation.
背景技术Background technique
闪存因为其优越的性能而被广泛部署在大规模存储系统中,但是,其有限的寿命在一定程度上阻碍了闪存在写密集型负载下的推广。闪存的寿命是指每个存储单元能够承受的擦写次数。厂商在推出一款闪存芯片时,会给出该款芯片对应的标称寿命。若每个存储单元的擦写次数在标称寿命以内,闪存的位错误率较低,保存在闪存上的数据被认为是可靠的。实际上,在擦写次数超过标称寿命后的很大范围内,闪存仍然可以保存数据,只是位错误率逐步变大,可能出现数据丢失现象。但是,随着擦写次数的进一步增加,位错误率成指数增长,最终导致闪存不可用。根据以上所述的闪存位错误率增长趋势可知,在位错误率随擦写次数的增加成指数增长之前,闪存仍然是可用的;若采用适当的手段纠正闪存中出现的位错误,即使每个存储单元的擦写次数超过标称寿命,保存在闪存中的数据仍然是可靠的。Flash memory is widely deployed in large-scale storage systems because of its superior performance. However, its limited lifespan hinders the promotion of flash memory under write-intensive loads to some extent. The lifespan of flash memory refers to the number of erasing and writing that each storage unit can withstand. When a manufacturer launches a flash memory chip, it will give the corresponding nominal life of the chip. If the number of times of erasing and writing of each storage unit is within the nominal life, the bit error rate of the flash memory is low, and the data stored on the flash memory is considered to be reliable. In fact, the flash memory can still save data in a large range after the number of times of erasing and writing exceeds the nominal life, but the bit error rate gradually increases, and data loss may occur. However, as the number of erases and writes further increases, the bit error rate increases exponentially, eventually leading to unusable flash memory. According to the growth trend of the bit error rate of the flash memory mentioned above, it can be known that the flash memory is still usable before the bit error rate increases exponentially with the increase of the erasing times; The erasing and writing times of the storage unit exceed the nominal life, and the data stored in the flash memory is still reliable.
ECC(Error Correction Code,纠错码)是存储设备中一种常用的容错机制。存储设备向存储介质中写入一页用户数据时,同时为该页数据生成若干位的纠错码。纠错码与用户数据一同保存在存储介质中。响应上层应用的读请求时,存储设备将上层应用请求的用户数据以及对应的纠错码同时从存储介质中取出,并利用纠错码检测和纠正用户数据中出现的位错误,从而保证用户数据完整可靠。纠错码的特点是空间开销很低,它利用十余位信息即可保证数百字节的数据完整可靠。但其纠错能力有限,仅适用于出错几率较低的场景。当闪存每个存储单元的擦写次数在标称寿命以内时,位出错率较低,纠错码能够保证数据可靠。若擦写次数超过标称寿命,位出错率不断上升,纠错码必须采用更多的校验位、并辅以复杂的计算才能纠正用户数据中出现的位错误。纠错码计算在IO关键路径上,过大的计算开销会严重影响IO性能。所以,当闪存实际使用寿命超过标称寿命时,简单利用纠错码并不能以很低的计算开销保证闪存存储系统的可靠性。ECC (Error Correction Code, Error Correction Code) is a commonly used error tolerance mechanism in storage devices. When the storage device writes a page of user data into the storage medium, it simultaneously generates an error correction code of several bits for the page of data. The error correction code is stored in the storage medium together with the user data. When responding to the read request of the upper-layer application, the storage device simultaneously takes out the user data requested by the upper-layer application and the corresponding error-correcting code from the storage medium, and uses the error-correcting code to detect and correct bit errors in the user data, thereby ensuring that the user data Complete and reliable. The characteristic of the error correction code is that the space overhead is very low, and it can ensure the integrity and reliability of hundreds of bytes of data by using more than ten bits of information. However, its error correction capability is limited, and it is only suitable for scenarios with a low probability of error. When the number of erasing and writing of each storage unit of the flash memory is within the nominal life, the bit error rate is low, and the error correction code can ensure data reliability. If the number of times of erasing and writing exceeds the nominal life, the bit error rate will continue to rise, and the error correction code must use more check bits and supplemented by complex calculations to correct bit errors in user data. The error correction code is calculated on the IO critical path, and excessive calculation overhead will seriously affect the IO performance. Therefore, when the actual service life of the flash memory exceeds the nominal service life, simply using the error correction code cannot guarantee the reliability of the flash memory storage system with a very low computational overhead.
纠删码(Erasure Code)是一种常用于系统级的容错机制,它主要通过保存大量的冗余数据保证数据可靠性。对于抽象为(n,k)二元组的纠删码,当响应上层应用的写请求时,它根据n份用户数据生成k份冗余数据,这n+k份数据大小一致,被同时写到存储系统中。响应上层应用的读请求时,只要这n+k份数据中有n份仍然完整可靠,即可正确恢复出所有用户数据。纠删码的特点是容错能力强,其容错能力随k值的增加而增长,适用于位出错率较高的场景。当闪存每个存储单元的擦写次数超过标称寿命时,尽管位错误率较高,只要纠删码选择足够大的k值,即可保证闪存上的数据完整可靠,但会引入一定的计算开销和空间开销。Erasure Code (Erasure Code) is a fault-tolerant mechanism commonly used at the system level. It mainly ensures data reliability by saving a large amount of redundant data. For erasure codes that are abstracted as (n,k) tuples, when responding to a write request from an upper-layer application, it generates k pieces of redundant data based on n pieces of user data. The n+k pieces of data have the same size and are written at the same time to the storage system. When responding to the read request of the upper-layer application, as long as n copies of the n+k data are still intact and reliable, all user data can be correctly recovered. Erasure codes are characterized by strong error tolerance, and their error tolerance increases with the increase of the k value, and are suitable for scenarios with a high bit error rate. When the number of erasing and writing of each storage unit of the flash memory exceeds the nominal life, although the bit error rate is high, as long as the erasure code selects a sufficiently large k value, the integrity and reliability of the data on the flash memory can be guaranteed, but certain calculations will be introduced overhead and space overhead.
综合比较以上所述的两种容错机制可知:纠错码只适用于错误率较低的场景,当错误率较高时,纠错码的计算开销显著增加,甚至无法保证数据的正确性;纠删码适用于错误率较高的场景,它能够以强大的容错能力纠正数据中出现的大量位错误,且计算开销恒定,但当位错误较少时,纠删码的计算开销高于纠错码。独立使用以上两种机制很难在保证IO性能的同时将闪存的寿命延长到厂商标称寿命以外。因此,如何实现纠错码和纠删码的协同使用,以避免对性能产生不利影响为前提,实现当闪存实际使用寿命超过标称寿命时保障保存在闪存存储系统中的数据的可靠性,延长闪存的实际使用寿命,已成为亟待解决的技术问题。A comprehensive comparison of the above two error-tolerant mechanisms shows that error-correcting codes are only suitable for scenarios with low error rates. Erasure coding is suitable for scenarios with high error rates. It can correct a large number of bit errors in data with strong error tolerance, and the computational overhead is constant. However, when there are few bit errors, the computational overhead of erasure coding is higher than that of error correction. code. Using the above two mechanisms independently is difficult to extend the life of flash memory beyond the manufacturer's nominal life while ensuring IO performance. Therefore, how to realize the coordinated use of error-correcting codes and erasure-correcting codes, to avoid adverse effects on performance, to ensure the reliability of data stored in flash memory storage systems when the actual service life of flash memory exceeds the nominal service life, and to extend The actual service life of flash memory has become a technical problem to be solved urgently.
发明内容Contents of the invention
本发明要解决的技术问题是:针对现有技术的上述问题,提供一种计算开销低、IO速度快、实现当闪存实际使用寿命超过标称寿命时保障保存在闪存存储系统中的数据的可靠性、闪存寿命延长效果显著的协同使用纠删码和纠错码的可靠闪存存储系统构建方法。The technical problem to be solved by the present invention is: aiming at the above-mentioned problems of the prior art, provide a low computing overhead, fast IO speed, and realize the reliability of the data stored in the flash memory storage system when the actual service life of the flash memory exceeds the nominal service life. A method for constructing a reliable flash memory storage system that uses erasure codes and error correction codes synergistically with significant effects on reliability and flash life extension.
为了解决上述技术问题,本发明采用的技术方案为:In order to solve the problems of the technologies described above, the technical solution adopted in the present invention is:
一种协同使用纠删码和纠错码的可靠闪存存储系统构建方法,步骤包括:A method for constructing a reliable flash storage system using erasure correction codes and error correction codes in cooperation, the steps comprising:
1)初始化接收IO请求的缓冲区;1) Initialize the buffer for receiving IO requests;
2)接收IO请求R,判定IO请求R的读写类型,若读写类型为写请求,则跳转执行步骤3);否则若读写类型为读请求,则跳转执行步骤4);2) Receive the IO request R, determine the read-write type of the IO request R, if the read-write type is a write request, then jump to step 3); otherwise, if the read-write type is a read request, then jump to step 4);
3)将IO请求R的写数据按照条带为单位进行选取,将选取的每一个条带的s个用户数据页面采用纠删码生成k个冗余数据页面,分别计算所述s个用户数据页面和k个冗余数据页面组成的s+k个页面的校验和、纠错码,并将所述s+k个页面及其各个页面的校验和、纠错码一同写入存储设备;3) Select the write data of the IO request R in units of stripes, use erasure codes to generate k redundant data pages from the s user data pages of each selected stripe, and calculate the s user data pages respectively The checksums and error correction codes of s+k pages composed of pages and k redundant data pages, and write the checksums and error correction codes of the s+k pages and their respective pages into the storage device together ;
4)将IO请求R划分为分别属于不同条带的子请求,针对每一个子请求,读取子请求所包含的各个页面及其校验和、纠错码,计算子请求所包含的各个页面的校验和并识别子请求所包含的各个页面的位错误,找出位错误最多的页面,判断位错误最多的页面的位错误数量是否大于所使用的纠错码能够纠正的最大错误位数T,如果位错误最多的页面的位错误数量不大于所使用的纠错码能够纠正的最大错误位数T,则使用纠错码纠正子请求中各个页面中出现的位错误;如果位错误最多的页面的位错误数量大于所使用的纠错码能够纠正的最大错误位数T,则使用纠删码纠正子请求中各个页面中出现的位错误,返回子请求所包含的各个页面所包含的数据。4) Divide the IO request R into sub-requests belonging to different stripes, and for each sub-request, read each page included in the sub-request and its checksum and error correction code, and calculate each page included in the sub-request checksum and identify the bit errors of each page included in the subrequest, find out the page with the most bit errors, and determine whether the number of bit errors of the page with the most bit errors is greater than the maximum number of error bits that can be corrected by the error correction code used T, if the number of bit errors in the page with the most bit errors is not greater than the maximum number of error bits T that can be corrected by the error-correcting code used, use the error-correcting code to correct the bit errors that occur in each page in the sub-request; if the bit error is the most If the number of bit errors in the page is greater than the maximum number of error bits T that can be corrected by the error correction code used, use the erasure code to correct the bit errors that appear in each page in the sub-request, and return the information contained in each page contained in the sub-request data.
优选地,所述步骤1)还包括初始化用于记录待写入存储设备的页面总数的写请求计数器Countw为0的步骤,所述步骤3)的详细步骤包括:Preferably, said step 1) also includes the step of initializing the write request counter Count w for recording the total number of pages to be written into the storage device to be 0, and the detailed steps of said step 3) include:
3.1)将写请求R包含的页面数累加到写请求计数器Countw中;3.1) Add the number of pages included in the write request R to the write request counter Count w ;
3.2)判断写请求计数器Countw是否超过预设的阈值h,其中h为大于一个完整条带中包含的页面数量n的整数;如果写请求计数器Countw超过预设的阈值h,则跳转执行步骤3.3);如果写请求计数器Countw不超过预设的阈值h,则跳转执行步骤2);3.2) Determine whether the write request counter Count w exceeds the preset threshold h, where h is an integer greater than the number n of pages contained in a complete stripe; if the write request counter Count w exceeds the preset threshold h, then jump to execute Step 3.3); if the write request counter Count w does not exceed the preset threshold h, then jump to step 2);
3.3)根据页面编号为待写入的Countw个写数据页面作升序排序,将待写入的Countw个写数据页面划分到不同的条带中,使得编号为x的页面被划分到第x/n个条带中,其中n表示一个完整条带中包含的页面数量;从待写入的Countw个写数据页面中选取一个完整条带,如果选取完整条带成功,则跳转执行步骤3.4);否则如果选取完整条带不成功,则选取包含用户数据页面最多的有一个不完整条带,跳转执行步骤3.4);3.3) Sort the Count w write data pages to be written in ascending order according to the page number, divide the Count w write data pages to be written into different stripes, so that the page numbered x is divided into the xth /n stripes, where n represents the number of pages contained in a complete stripe; select a complete stripe from the Count w write data pages to be written, if the selection of a complete stripe is successful, then jump to the execution step 3.4); otherwise, if the selection of a complete strip is unsuccessful, select an incomplete strip that contains the most user data pages, and jump to step 3.4);
3.4)将选取的完整条带或不完整条带中的s个用户数据页面采用纠删码生成k个冗余页面共得到s+k个页面,分别计算所述s+k个页面中各个页面的校验和、纠错码,将所述s+k个页面及所述s+k个页面中各个页面的纠错码和校验和一同写入存储设备;最终从写请求计数器Countw中减去本次写入存储设备的用户数据页面数量s,跳转步骤3.2)。3.4) Use erasure codes to generate k redundant pages from the s user data pages in the selected complete or incomplete stripes to obtain a total of s+k pages, and calculate each page in the s+k pages respectively The checksum and error correction code of the s+k pages and the error correction codes and checksums of each page in the s+k pages are written into the storage device together; finally from the write request counter Count w Subtract the number s of user data pages written to the storage device this time, and skip to step 3.2).
优选地,所述步骤3.2)中的阈值h为一个完整条带中包含的页面数量n的10倍。Preferably, the threshold h in step 3.2) is 10 times the number n of pages contained in a complete stripe.
优选地,所述步骤3.3)的详细步骤包括:Preferably, the detailed steps of said step 3.3) include:
3.3.1)从待写入的写请求计数器Countw个写数据页面中选取一个完整条带,如果选取完整条带成功,则跳转执行步骤3.4);否则如果选取完整条带不成功,则跳转执行步骤3.3.2);3.3.1) Select a complete strip from the write request counter Count w write data pages to be written, if the selection of the complete strip is successful, then jump to step 3.4); otherwise, if the selection of the complete strip is unsuccessful, then Jump to step 3.3.2);
3.3.2)判断IO请求R是否为连续的写请求,如果IO请求R为连续的写请求,则跳转执行步骤2);否则如果IO请求R并非连续的写请求,则跳转执行步骤3.3.3);3.3.2) Determine whether the IO request R is a continuous write request, if the IO request R is a continuous write request, then jump to step 2); otherwise, if the IO request R is not a continuous write request, then jump to step 3.3 .3);
3.3.3)选取包含用户数据页面最多的有一个不完整条带,跳转执行步骤3.4)。3.3.3) Select an incomplete strip that contains the most pages of user data, and jump to step 3.4).
优选地,所述步骤3.4)中将所述s+k个页面及所述s+k个页面中各个页面的纠错码和校验和一同写入存储设备时,存储设备为所述s+k个页面中每个待写入的页面分配一个空闲的物理页面,所述s+k个页面中每一个页面的数据被写入分配的物理页面的数据区域,所述s+k个页面中每一个页面的纠错码和校验和被写入分配的物理页面的额外区域。Preferably, when the error correction codes and checksums of the s+k pages and each page in the s+k pages are written into the storage device in the step 3.4), the storage device is the s+k pages Each page to be written in the k pages is allocated a free physical page, and the data of each page in the s+k pages is written into the data area of the allocated physical page, and in the s+k pages The error correction code and checksum of each page are written to an additional area of the allocated physical page.
优选地,所述步骤3.4)中分别计算所述s+k个页面中各个页面的校验和具体是指将待计算页面中的比特流划分为固定大小的字Word,每个字Word包含64个比特,然后将这些字Word作异或计算得到的结果作为该页面的校验和。Preferably, calculating the checksum of each page in the s+k pages in the step 3.4) specifically refers to dividing the bit stream in the page to be calculated into fixed-sized words Word, each word Word contains 64 bits, and then the result of XOR calculation of these words is used as the checksum of the page.
优选地,所述步骤4)的详细步骤包括:Preferably, the detailed steps of said step 4) include:
4.1)将IO请求R划分为分别属于不同条带的m个子请求;4.1) Divide the IO request R into m sub-requests belonging to different strips;
4.2)初始化设置子请求计数器i为0;4.2) Initially set the sub-request counter i to 0;
4.3)读取子请求Ri所包含的各个页面,一同读取子请求Ri所包含的各个页面对应的纠错码和校验和;4.3) Read each page included in the sub-request R i , and read the error correction code and checksum corresponding to each page included in the sub-request R i together;
4.4)计算子请求Ri所包含的各个页面的校验和,根据计算得到的校验和和步骤4.3)中读取得到的校验和进行比较识别子请求Ri所包含的各个页面中的位错误;4.4) Calculate the checksum of each page included in the sub-request R i , compare and identify the checksum of each page included in the sub-request R i according to the calculated checksum and the checksum read in step 4.3) bit error;
4.5)找出子请求Ri所包含的各个页面中错误位最多的页面,将所述错误位最多的页面的错误位数和所采用的纠错码能够纠正的最大错误位数T进行比较,如果位错误最多的页面的位错误数量不大于所使用的纠错码能够纠正的最大错误位数T,则跳转执行步骤4.6);否则如果位错误最多的页面的位错误数量大于所使用的纠错码能够纠正的最大错误位数T,则跳转步骤4.7);4.5) Find out the page with the most error bits in each page included in the sub-request R i , compare the error bits of the page with the most error bits with the maximum error bit T that can be corrected by the adopted error correction code, If the number of bit errors of the page with the most bit errors is not greater than the maximum number of error bits T that can be corrected by the error correction code used, then jump to step 4.6); otherwise, if the number of bit errors of the page with the most bit errors is greater than the used The maximum number of error bits T that the error correction code can correct, then jump to step 4.7);
4.6)使用纠错码纠正子请求Ri所包含的各个页面的位错误,如果纠正失败,则跳转执行步骤4.7);否则如果纠正成功,则跳转执行步骤4.8);4.6) Use the error correction code to correct the bit error of each page contained in the sub-request R i , if the correction fails, then jump to step 4.7); otherwise, if the correction is successful, then jump to step 4.8);
4.7)利用纠删码纠正子请求Ri所包含的各个页面的位错误;4.7) Utilize the erasure code to correct the bit error of each page contained in the sub-request R i ;
4.8)向上层应用返回子请求Ri所包含的用户数据;4.8) Return the user data contained in the sub-request R i to the upper-layer application;
4.9)增加子请求计数器i;4.9) Increase the sub-request counter i;
4.10)若子请求计数器i小于子请求拆分数量m,则判定还有未处理完的子请求,跳转执行步骤4.3);若子请求计数器i等于子请求拆分数量m,则判定已经处理完所有的子请求,跳转执行步骤2)。4.10) If the sub-request counter i is less than the number m of sub-request splits, it is determined that there are unprocessed sub-requests, and jump to step 4.3); if the sub-request counter i is equal to the number m of sub-request splits, it is determined that all sub-requests have been processed subrequest, jump to step 2).
优选地,所述步骤4.1)中将IO请求R划分为分别属于不同条带的m个子请求时,m的值为(OffsetR+SizeR+n-1)/n-OffsetR/n,其中n表示一个完整条带中包含的用户数据页数,OffsetR表示IO请求R的起始地址,SizeR表示IO请求R包含的页面数,IO请求R由以起始地址OffsetR开始的SizeR个连续页面组成;所述m个子请求中第i个子请求Ri包含的页面如式(1)所示;Preferably, when the IO request R is divided into m sub-requests belonging to different stripes in the step 4.1), the value of m is (Offset R +Size R +n-1)/n-Offset R /n, where n indicates the number of user data pages contained in a complete stripe, Offset R indicates the starting address of IO request R, and Size R indicates the number of pages contained in IO request R, and IO request R starts with Size R starting with the starting address Offset R Consecutive pages; the pages contained in the i-th sub-request R i in the m sub-requests are shown in formula (1);
式(1)中,Ri表示第i个子请求,n表示一个完整条带中的页面数量,OffsetR表示IO请求R的起始地址,SizeR表示IO请求R包含的页面数。In formula (1), R i represents the i-th sub-request, n represents the number of pages in a complete stripe, Offset R represents the starting address of IO request R, and Size R represents the number of pages contained in IO request R.
优选地,所述步骤4.7)的详细步骤包括:Preferably, the detailed steps of said step 4.7) include:
4.7.1)初始化数据恢复次数计数器为0;在子请求Ri中属于同一条带的v个页面已经被读取的基础上,从存储设备读取n-v份数据,共得到纠删码对所述条带作数据恢复时至少需要的n份数据;4.7.1) Initialize the counter of data recovery times to 0; on the basis that v pages belonging to the same band in the sub-request R i have been read, read nv pieces of data from the storage device, and obtain a total of all erasure code pairs At least n copies of data required for the above stripes for data recovery;
4.7.2)根据读取出来的共n份数据通过纠删码纠正子请求Ri所包含的各个页面的位错误,若成功纠正子请求Ri所包含的各个页面的位错误,则跳转执行步骤4.8);否则,将数据恢复次数计数器加1,跳转执行步骤4.7.3);4.7.2) Correct the bit errors of each page contained in the sub-request R i through the erasure code according to a total of n pieces of data read out. If the bit errors of each page contained in the sub-request R i are successfully corrected, jump Execute step 4.8); otherwise, add 1 to the data recovery times counter, and jump to step 4.7.3);
4.7.3)判断数据恢复次数计数器的值是否等于如果数据恢复次数计数器的值小于则读取纠删码对所述条带作数据恢复时至少需要的另外n份数据,跳转执行步骤4.7.2);否则如果数据恢复次数计数器的值等于则判定利用纠删码纠正子请求Ri所包含的各个页面的位错误失败。4.7.3) Determine whether the value of the data recovery times counter is equal to If the value of the data recovery times counter is less than Then read the erasure code to recover at least another n copies of data required for data recovery of the strip, and jump to step 4.7.2); otherwise, if the value of the data recovery times counter is equal to Then it is determined that correcting the bit errors of each page included in the sub-request R i by using the erasure code fails.
本发明协同使用纠删码和纠错码的可靠闪存存储系统构建方法具有下述优点:The method for constructing a reliable flash storage system using erasure correction codes and error correction codes in the present invention has the following advantages:
1、本发明针对闪存寿命有限、位错误率随擦写次数的增多而逐步增长的问题,利用纠删码纠正闪存中出现的位错误,从而将闪存的实际使用寿命延长到厂商标称寿命以外。由于纠删码具有很强的纠错能力,本发明能够将闪存寿命延长数十倍,具有寿命延长效果好的优点,能够显著提高闪存存储系统的可靠性。1. The present invention aims at the problem that the lifetime of flash memory is limited and the bit error rate gradually increases with the increase of erasing times, and uses erasure codes to correct bit errors in flash memory, thereby prolonging the actual service life of flash memory beyond the manufacturer's nominal life . Since the erasure code has a strong error correction capability, the invention can prolong the lifespan of the flash memory dozens of times, has the advantage of good life extension effect, and can significantly improve the reliability of the flash memory storage system.
2、本发明针对当闪存每个存储单元的平均擦写次数较少、位错误率还比较低时,利用纠删码纠正闪存中出现的位错误计算开销相对较大。为了降低计算开销,本发明首先采用校验和对闪存页面中出现的位错误作预判。当校验和判定的位错误较少时,采用纠错码纠正页面中出现的位错误。纠错码纠错能力相对较弱,只适用于位错误率较低的情况,但其计算开销较低,不会对IO性能产生显著的影响。由于灵活采用纠删码和纠错码,本发明既能显著延长闪存的寿命,又具有计算开销低的优点。2. The present invention aims at that when the average number of times of erasing and writing of each storage unit of the flash memory is small and the bit error rate is relatively low, the computational overhead of using erasure codes to correct bit errors in the flash memory is relatively high. In order to reduce calculation overhead, the present invention first uses a checksum to predict bit errors in flash memory pages. When the bit errors determined by the checksum are less, the bit errors occurring in the page are corrected by using the error correction code. The error correction ability of the error correction code is relatively weak, and it is only suitable for the case of low bit error rate, but its calculation overhead is low, and it will not have a significant impact on IO performance. Due to the flexible use of erasure correction codes and error correction codes, the present invention can not only prolong the service life of the flash memory, but also has the advantage of low calculation overhead.
3、本发明的计算开销较低,不会对IO性能产生显著的负面影响。用纠删码作数据恢复时,充分发挥闪存的高并发性,将数据恢复涉及的读请求调度到多个并发通道上,具有IO性能好的优点。3. The calculation overhead of the present invention is low, and will not have a significant negative impact on IO performance. When erasure codes are used for data recovery, the high concurrency of flash memory is fully utilized, and the read requests involved in data recovery are scheduled to multiple concurrent channels, which has the advantage of good IO performance.
附图说明Description of drawings
图1为本发明实施例的基本实施流程示意图。FIG. 1 is a schematic diagram of a basic implementation flow of an embodiment of the present invention.
图2为本发明实施例的详细实施流程示意图。Fig. 2 is a schematic diagram of a detailed implementation process of an embodiment of the present invention.
具体实施方式detailed description
如图1所示,本实施例协协同使用纠删码和纠错码的可靠闪存存储系统构建方法的步骤包括:As shown in Figure 1, the steps of the method for constructing a reliable flash storage system using erasure correction codes and error correction codes in cooperation with this embodiment include:
1)初始化接收IO请求的缓冲区;初始化接收IO请求的缓冲区即为在内存中申请一片区域,用以保存上层应用发送的读写请求;1) Initialize the buffer for receiving IO requests; initializing the buffer for receiving IO requests is to apply for an area in the memory to save the read and write requests sent by the upper application;
2)接收IO请求R,判定IO请求R的读写类型,若读写类型为写请求,则跳转执行步骤3);否则若读写类型为读请求,则跳转执行步骤4);2) Receive the IO request R, determine the read-write type of the IO request R, if the read-write type is a write request, then jump to step 3); otherwise, if the read-write type is a read request, then jump to step 4);
3)将IO请求R的写数据按照条带为单位进行选取,将选取的每一个条带的s个用户数据页面采用纠删码生成k个冗余数据页面,分别计算s个用户数据页面和k个冗余数据页面组成的s+k个页面的校验和、纠错码,并将s+k个页面及其各个页面的校验和、纠错码一同写入存储设备(即闪存存储系统);3) Select the write data of the IO request R in units of strips, use erasure codes to generate k redundant data pages from the s user data pages of each selected strip, and calculate the s user data pages and Checksums and error correction codes of s+k pages composed of k redundant data pages, and write s+k pages and the checksums and error correction codes of each page to the storage device (that is, flash storage system);
4)将IO请求R划分为分别属于不同条带的子请求,针对每一个子请求,读取子请求所包含的各个页面及其校验和、纠错码,计算子请求所包含的各个页面的校验和并识别子请求所包含的各个页面的位错误,找出位错误最多的页面,判断位错误最多的页面的位错误数量是否大于所使用的纠错码能够纠正的最大错误位数T,如果位错误最多的页面的位错误数量不大于所使用的纠错码能够纠正的最大错误位数T,则使用纠错码纠正子请求中各个页面中出现的位错误;如果位错误最多的页面的位错误数量大于所使用的纠错码能够纠正的最大错误位数T,则使用纠删码纠正子请求中各个页面中出现的位错误,返回子请求所包含的各个页面所包含的数据。4) Divide the IO request R into sub-requests belonging to different stripes, and for each sub-request, read each page included in the sub-request and its checksum and error correction code, and calculate each page included in the sub-request checksum and identify the bit errors of each page included in the subrequest, find out the page with the most bit errors, and determine whether the number of bit errors of the page with the most bit errors is greater than the maximum number of error bits that can be corrected by the error correction code used T, if the number of bit errors in the page with the most bit errors is not greater than the maximum number of error bits T that can be corrected by the error-correcting code used, use the error-correcting code to correct the bit errors that occur in each page in the sub-request; if the bit error is the most If the number of bit errors in the page is greater than the maximum number of error bits T that can be corrected by the error correction code used, use the erasure code to correct the bit errors that appear in each page in the sub-request, and return the information contained in each page contained in the sub-request data.
IO请求R可标识为(TypeR,OffsetR,SizeR),其中TypeR表示IO请求R的读写类型,OffsetR表示IO请求R的起始地址,SizeR表示IO请求R包含的页面数;因此,本实施例步骤2)判定IO请求R的读写类型即为判断读写类型TypeR的值类型。本实施例旨在利用容错机制,协同使用纠错码和纠删码纠正闪存中出现的位错误,首先通过校验和技术(Check Sum)初步统计数据中的位错误,在位错误率较低时使用纠错码校正错误,避免对性能产生不利影响;在位错误较高时,采用纠删码校正错误,能够实现当闪存实际使用寿命超过标称寿命时保障保存在闪存存储系统中的数据的可靠性,具有计算开销低、IO速度快、闪存寿命延长效果显著的优点。IO request R can be identified as (Type R , Offset R , Size R ), where Type R indicates the read/write type of IO request R, Offset R indicates the starting address of IO request R, and Size R indicates the number of pages contained in IO request R Therefore, step 2) of this embodiment determines the read/write type of the IO request R is to determine the value type of the read/write type Type R. The purpose of this embodiment is to use the error-tolerant mechanism to use error-correcting codes and erasure-correcting codes to correct the bit errors that occur in the flash memory. First, the bit errors in the data are initially counted through the checksum technology (Check Sum), and the bit error rate is low. When the bit error is high, the erasure code is used to correct the error, which can ensure the data stored in the flash storage system when the actual service life of the flash memory exceeds the nominal service life. It has the advantages of low computing overhead, fast IO speed, and significant effect of extending the life of flash memory.
如图2所示,本实施例步骤1)还包括初始化用于记录待写入存储设备的页面总数的写请求计数器Countw为0的步骤,Countw表示还未写入存储设备的页面总数,本实施例步骤3)的详细步骤包括:As shown in Figure 2, step 1) of this embodiment also includes the step of initializing the write request counter Count w for recording the total number of pages to be written into the storage device to be 0, where Count w represents the total number of pages that have not yet been written into the storage device, The detailed steps of present embodiment step 3) include:
3.1)将写请求R包含的页面数累加到写请求计数器Countw中;3.1) Add the number of pages included in the write request R to the write request counter Count w ;
3.2)判断写请求计数器Countw是否超过预设的阈值h,其中h为大于一个完整条带中包含的页面数量n的整数;如果写请求计数器Countw超过预设的阈值h,则跳转执行步骤3.3);如果写请求计数器Countw不超过预设的阈值h,则跳转执行步骤2);3.2) Determine whether the write request counter Count w exceeds the preset threshold h, where h is an integer greater than the number n of pages contained in a complete stripe; if the write request counter Count w exceeds the preset threshold h, then jump to execute Step 3.3); if the write request counter Count w does not exceed the preset threshold h, then jump to step 2);
3.3)根据页面编号为待写入的Countw(表示写请求计数器Countw的值,下同)个写数据页面作升序排序,将待写入的Countw个写数据页面划分到不同的条带中,使得编号为x的页面被划分到第x/n个条带中,其中n表示一个完整条带中包含的页面数量;从待写入的Countw个写数据页面中选取一个完整条带,如果选取完整条带成功,则跳转执行步骤3.4);否则如果选取完整条带不成功,则选取包含用户数据页面最多的有一个不完整条带,跳转执行步骤3.4);3.3) Sort in ascending order the Count w (representing the value of the write request counter Count w , the same below) write data pages to be written according to the page number, and divide the Count w write data pages to be written into different strips , so that the page numbered x is divided into the x/nth stripe, where n represents the number of pages contained in a complete stripe; select a complete stripe from the Count w write data pages to be written , if the selection of a complete stripe is successful, then jump to step 3.4); otherwise, if the selection of a complete stripe is unsuccessful, then select an incomplete stripe that contains the most user data pages, and jump to step 3.4);
3.4)将选取的完整条带或不完整条带中的s个用户数据页面采用纠删码生成k个冗余页面共得到s+k个页面,分别计算s+k个页面中各个页面的校验和、纠错码,将s+k个页面及s+k个页面中各个页面的纠错码和校验和一同写入存储设备;最终从写请求计数器Countw中减去本次写入存储设备的用户数据页面数量s,跳转步骤3.2)。3.4) Use erasure codes to generate k redundant pages from the s user data pages in the selected complete or incomplete strips to obtain s+k pages in total, and calculate the calibration of each page in the s+k pages respectively. Checksum and error correction code, write s+k pages and the error correction code and checksum of each page in s+k pages together to the storage device; finally subtract this write from the write request counter Count w The number s of user data pages of the storage device, skip to step 3.2).
纠删码可抽象为一个(n,k)二元组,表示纠删码根据n份用户数据生成k份校验信息。这n+k份数据组成一个条带,一同写到底层的存储设备中。在采用纠删码的存储系统中,每次写入操作都涉及一个包含n+k个页面的条带,而不是简单写入一个页面。所以,向存储设备中写入数据时,应该尽可能等到一个条带的所有数据都到达后,再向存储系统发出写请求。本实施例中通过写请求计数器Countw则用来累积页面,每当通过写请求计数器Countw记录的待写入存储设备的数据达到h个页面时,即可将部分数据写入存储设备中;若待写入存储设备的页面总数Countw不超过h,则跳转执行步骤2)继续接受新的读写请求,直到待写入存储设备的数据达到h个页面,从而以便纠删码力图从累积的页面中找到完整的条带,从而以减少对闪存的写损耗,延长存储设备的使用寿命。The erasure code can be abstracted as a (n, k) binary group, which means that the erasure code generates k pieces of verification information based on n pieces of user data. These n+k pieces of data form a stripe and are written to the underlying storage device together. In a storage system using erasure codes, each write operation involves a stripe containing n+k pages instead of simply writing a page. Therefore, when writing data to a storage device, you should try to wait until all the data in a stripe arrives before sending a write request to the storage system. In this embodiment, the write request counter Count w is used to accumulate pages, and whenever the data to be written to the storage device recorded by the write request counter Count w reaches h pages, part of the data can be written into the storage device; If the total number of pages Count w to be written to the storage device does not exceed h, then jump to step 2) and continue to accept new read and write requests until the data to be written to the storage device reaches h pages, so that the erasure code tries to get from Find a complete stripe in the accumulated pages, thereby reducing the write loss to the flash memory and prolonging the service life of the storage device.
本实施例中,步骤3.2)中的阈值h为一个完整条带中包含的页面数量n的10倍。In this embodiment, the threshold h in step 3.2) is 10 times the number n of pages contained in a complete stripe.
本实施例中,步骤3.3)的详细步骤包括:In the present embodiment, the detailed steps of step 3.3) include:
3.3.1)从待写入的写请求计数器Countw个写数据页面中选取一个完整条带,如果选取完整条带成功,则跳转执行步骤3.4);否则如果选取完整条带不成功,则跳转执行步骤3.3.2);3.3.1) Select a complete strip from the write request counter Count w write data pages to be written, if the selection of the complete strip is successful, then jump to step 3.4); otherwise, if the selection of the complete strip is unsuccessful, then Jump to step 3.3.2);
3.3.2)判断IO请求R是否为连续的写请求,如果IO请求R为连续的写请求,则跳转执行步骤2);否则如果IO请求R并非连续的写请求,则跳转执行步骤3.3.3);3.3.2) Determine whether the IO request R is a continuous write request, if the IO request R is a continuous write request, then jump to step 2); otherwise, if the IO request R is not a continuous write request, then jump to step 3.3 .3);
3.3.3)选取包含用户数据页面最多的有一个不完整条带,跳转执行步骤3.4)。3.3.3) Select an incomplete strip that contains the most pages of user data, and jump to step 3.4).
通过上述步骤3.3.1)~3.3.3),能够尽可能避免一个条带中由于部分用户页面的更新导致所有校验数据的更新,实现针对连续的写请求的优化,确保在面对连续的写请求时,若当前没有找到完整条带,则跳转执行步骤2)继续接受后续的连续的写请求,直到待写入存储设备的数据中存在完整条带或者后续为非连续的写请求,从而能够进一步减少对闪存的写损耗,延长存储设备的使用寿命。Through the above steps 3.3.1) to 3.3.3), it is possible to avoid the update of all verification data due to the update of some user pages in a stripe as much as possible, and realize the optimization for continuous write requests, ensuring that in the face of continuous When writing a request, if no complete stripe is currently found, jump to step 2) and continue to accept subsequent continuous write requests until there is a complete stripe in the data to be written to the storage device or subsequent non-sequential write requests, Therefore, the write loss to the flash memory can be further reduced, and the service life of the storage device can be extended.
本实施例中,步骤3.4)将选取的完整条带或不完整条带中的s个用户数据页面采用纠删码生成k个冗余页面共得到s+k个页面时;对于选取的完整条带而言,其中的用户数据页面数量s即为完整条带中的页面数量n;对于选取的不完整条带而言,其中的用户数据页面数量s小于为前述完整条带中的页面数量n。但是,不论选取的完整条带或不完整条带,假定该条带中有s个用户页面待写入存储设备,则根据这s个页面生成k份新的校验信息(k个页面),从而共得到s+k个页面。In this embodiment, when step 3.4) uses erasure codes to generate k redundant pages from the s user data pages in the selected complete or incomplete stripes to obtain s+k pages in total; for the selected complete stripes For the strip, the number s of user data pages in it is the number n of pages in the complete strip; for the selected incomplete strip, the number s of user data pages in it is less than the number n of pages in the aforementioned complete strip . However, regardless of the selected complete stripe or incomplete stripe, assuming that there are s user pages to be written into the storage device in the stripe, k new check information (k pages) are generated based on the s pages, Thus, a total of s+k pages are obtained.
闪存的物理页面包含两部分:保存数据的数据区域和保存元数据的额外区域。本实施例中,步骤3.4)中将s+k个页面及s+k个页面中各个页面的纠错码和校验和一同写入存储设备时,存储设备为s+k个页面中每个待写入的页面分配一个空闲的物理页面,s+k个页面中每一个页面的数据被写入分配的物理页面的数据区域,s+k个页面中每一个页面的纠错码和校验和被写入分配的物理页面的额外区域。假定存储设备为待写入的数据页面Pagedata分配的物理页面为Pagephysical,则Pagedata对应的数据写到Pagephysical的数据区域,Pagedata的纠错码和校验和写到Pagephysical的额外区域。本实施例基于额外区域来存储页面的纠错码和校验和,从而能够在不改变存储设备的存储结构的前提下,实现对页面的纠错码和校验和的存储,从而为后续基于纠错码和纠删码提供基础信息。A physical page of flash memory consists of two parts: a data area that holds data and an additional area that holds metadata. In this embodiment, when s+k pages and the error correction codes and checksums of each page in the s+k pages are written into the storage device together in step 3.4), the storage device is each of the s+k pages The page to be written allocates a free physical page, the data of each page in the s+k pages is written into the data area of the allocated physical page, and the error correction code and checksum of each page in the s+k pages and additional areas that are written to allocated physical pages. Assuming that the physical page allocated by the storage device for the data page Page data to be written is Page physical , then the data corresponding to Page data is written to the data area of Page physical , and the error correction code and checksum of Page data are written to the extra page physical area. This embodiment stores the error correction code and checksum of the page based on the extra area, so that the storage of the error correction code and checksum of the page can be realized without changing the storage structure of the storage device, so as to provide future information based on Error-correcting codes and erasure-correcting codes provide the underlying information.
本实施例中,步骤3.4)中分别计算s+k个页面中各个页面的校验和具体是指将待计算页面中的比特流划分为固定大小的字Word,每个字Word包含64个比特,然后将这些字Word作异或计算得到的结果作为该页面的校验和。毫无疑问,步骤4)中计算各个页面的校验和的方法与步骤3.4)中分别计算s+k个页面中各个页面的校验和的方法完全相同。需要说明的是,校验和技术(Check Sum)是目前比较常见的校验技术,例如还可以根据需要采用目前各类常见的校验和算法,而本实施例采用的校验和算法基于异或计算,计算开销小。In this embodiment, calculating the checksum of each page in the s+k pages in step 3.4) specifically refers to dividing the bit stream in the page to be calculated into fixed-sized words Word, each word Word contains 64 bits , and then the result obtained by XOR calculation of these words is used as the checksum of the page. Undoubtedly, the method for calculating the checksum of each page in step 4) is exactly the same as the method for calculating the checksum of each page in the s+k pages in step 3.4). It should be noted that the checksum technology (Check Sum) is a relatively common checksum technology at present. Or calculation, the calculation overhead is small.
如图2所示,本实施例中步骤4)的详细步骤包括:As shown in Figure 2, the detailed steps of step 4) in the present embodiment include:
4.1)将IO请求R划分为分别属于不同条带的m个子请求R0,R1,R2…Rm-1;纠删码以条带为基本单位保证数据的可靠性,对于被抽象为(n,k)二元组的纠删码,一个条带包含n+k页数据。响应上层应用的读请求时,纠删码首先需要找到上层应用请求的数据所在的条带,这些数据可能分布在多个条带中。对于本实施例,m个子请求R0,R1,R2…Rm-1共同组成了用户请求的所有数据,但它们属于不同的条带,纠删码将依次读取这些条带,并从中找出用户请求的数据;m个子请求中第i个子请求Ri包含的页面如公式(1)所示;4.1) Divide the IO request R into m sub-requests R 0 , R 1 , R 2 ... R m-1 that belong to different stripes; erasure codes use stripes as the basic unit to ensure data reliability. (n, k) Erasure coding of 2-tuples, one stripe contains n+k pages of data. When responding to the read request of the upper-layer application, the erasure code first needs to find the stripe where the data requested by the upper-layer application is located, and the data may be distributed in multiple stripes. For this embodiment, m sub - requests R 0 , R 1 , R 2 . Find the data requested by the user therefrom; the page contained in the i-th sub-request R i in the m sub-requests is shown in formula (1);
式(1)中,Ri表示第i个子请求,n表示一个完整条带中的页面数量,OffsetR表示IO请求R的起始地址,SizeR表示IO请求R包含的页面数。In formula (1), R i represents the i-th sub-request, n represents the number of pages in a complete stripe, Offset R represents the starting address of IO request R, and Size R represents the number of pages contained in IO request R.
4.2)初始化设置子请求计数器i为0;4.2) Initially set the sub-request counter i to 0;
4.3)读取子请求Ri所包含的各个页面,一同读取子请求Ri所包含的各个页面对应的纠错码和校验和;由于闪存及基于闪存的存储设备都存在固有的并行性,所以可并发地读取子请求Ri所包含的各个页面,确保本实施例构建的可靠存储系统具有较高的读性能;4.3) Read each page included in the sub-request R i , and read the error correction code and checksum corresponding to each page included in the sub-request R i together; due to the inherent parallelism of flash memory and storage devices based on flash memory , so each page included in the sub-request R i can be read concurrently, ensuring that the reliable storage system constructed in this embodiment has high read performance;
4.4)计算子请求Ri所包含的各个页面的校验和,根据计算得到的校验和和步骤4.3)中读取得到的校验和进行比较识别子请求Ri所包含的各个页面中的位错误;本实施例中,和前述步骤3.4)中分别计算s+k个页面中各个页面的校验和的步骤相同,样也是指将待计算页面中的比特流划分为固定大小的字Word,每个字Word包含64个比特,然后将这些字Word作异或计算得到的结果作为该页面的校验和;将计算结果与步骤4.3)中读取得到的校验和作异或运算,两种校验和的差异位数被标识为BEj,BEj可近似认为是该页面中出现的位错误数;4.4) Calculate the checksum of each page included in the sub-request R i , compare and identify the checksum of each page included in the sub-request R i according to the calculated checksum and the checksum read in step 4.3) bit error; in the present embodiment, the step of calculating the checksum of each page in the s+k pages is the same as in the aforementioned step 3.4), which also means that the bit stream in the page to be calculated is divided into fixed-sized words Word , each word Word contains 64 bits, and then the result obtained by XOR calculation of these words Word is used as the checksum of the page; the calculation result and the checksum read in step 4.3) are XORed, The difference between the two checksums is identified as BE j , and BE j can be approximately considered as the number of bit errors in the page;
4.5)找出子请求Ri所包含的各个页面中错误位最多的页面,将错误位最多的页面的错误位数和所采用的纠错码能够纠正的最大错误位数T进行比较,如果位错误最多的页面的位错误数量不大于所使用的纠错码能够纠正的最大错误位数T(说明子请求Ri中各个页面的位错误率较低,仅采用纠错码即可校正各页面中出现的位错误),则跳转执行步骤4.6);否则如果位错误最多的页面的位错误数量大于所使用的纠错码能够纠正的最大错误位数T(说明子请求Ri中各个页面的位错误率较高,出现的错误位数超过了纠错码的纠错能力,纠错码就不能成功恢复用户数据,因此需要采用纠删码纠正各页面中出现的位错误),则跳转步骤4.7);其中,错误位最多的页面的错误位数可以表示为式(2)所示;4.5) Find the page with the most error bits in each page included in the sub-request R i , compare the error bits of the page with the most error bits with the maximum error number T that can be corrected by the error correction code adopted, if the error bits The number of bit errors of the page with the most errors is not greater than the maximum number of error bits T that can be corrected by the error correction code used (indicating that the bit error rate of each page in the sub-request R i is low, and each page can be corrected only by using the error correction code Bit errors appearing in ), then jump to step 4.6); otherwise, if the number of bit errors in the page with the most bit errors is greater than the maximum number of error bits T that can be corrected by the error correction code used (indicating that each page in the subrequest R i The bit error rate is high, the number of error bits exceeds the error correction capability of the error correction code, and the error correction code cannot successfully restore user data, so it is necessary to use erasure codes to correct the bit errors that appear in each page), then skip Go to step 4.7); Wherein, the number of error bits of the page with the most error bits can be expressed as shown in formula (2);
式(2)中,P表示子请求Ri的总页面数,BEj表示子请求Ri中的第j个页面中两种校验和的差异位数;In formula (2), P represents the total number of pages of the sub-request R i , and BE j represents the difference between the two checksums in the j-th page of the sub-request R i ;
4.6)使用纠错码纠正子请求Ri所包含的各个页面的位错误,如果纠正失败,则跳转执行步骤4.7);否则如果纠正成功,则跳转执行步骤4.8);实际上,校验和检测到的位错误可能少于页面中实际出现的位错误,因此若页面中实际出现的位错误已经超过了纠错码的纠错能力,纠错码就不能成功恢复用户数据,此时,跳转执行步骤4.7)利用纠删码校正页面中的位错误;若纠错码成功纠正Ri中所有页面的位错误,则跳转执行步骤4.8),从而能够提高本实施例的位错误纠正能力;4.6) Use the error correction code to correct the bit error of each page contained in the sub-request R i , if the correction fails, then jump to step 4.7); otherwise, if the correction is successful, then jump to step 4.8); in fact, check And the detected bit errors may be less than the actual bit errors in the page. Therefore, if the actual bit errors in the page have exceeded the error correction capability of the error correction code, the error correction code cannot successfully restore the user data. At this time, Jump to step 4.7) and use the erasure code to correct the bit errors in the page; if the error correction code successfully corrects the bit errors of all pages in R i , then jump to step 4.8), so that the bit error correction of this embodiment can be improved ability;
4.7)利用纠删码纠正子请求Ri所包含的各个页面的位错误;4.7) Utilize the erasure code to correct the bit error of each page contained in the sub-request R i ;
4.8)向上层应用返回子请求Ri所包含的用户数据;4.8) Return the user data contained in the sub-request R i to the upper-layer application;
4.9)增加子请求计数器i;4.9) Increase the sub-request counter i;
4.10)若子请求计数器i小于子请求拆分数量m,则判定还有未处理完的子请求,跳转执行步骤4.3);若子请求计数器i等于子请求拆分数量m,则判定已经处理完所有的子请求,跳转执行步骤2)。4.10) If the sub-request counter i is less than the number m of sub-request splits, it is determined that there are unprocessed sub-requests, and jump to step 4.3); if the sub-request counter i is equal to the number m of sub-request splits, it is determined that all sub-requests have been processed subrequest, jump to step 2).
本实施例中,步骤4.1)中将IO请求R划分为分别属于不同条带的m个子请求时,m的值为(OffsetR+SizeR+n-1)/n-OffsetR/n,其中n表示一个完整条带中包含的用户数据页数,OffsetR表示IO请求R的起始地址,SizeR表示IO请求R包含的页面数,IO请求R由以起始地址OffsetR开始的SizeR个连续页面组成。读请求R由以OffsetR为起始地址的SizeR个连续页面组成,这些用户数据页面可能分布在不同的条带中。由于每个条带包含n页用户数据,则编号为l的用户数据页面包含在第l/n个条带中。通过以上计算方式,可将R的所有用户数据页面划分到m个不同的条带中。其中,m的值为(OffsetR+SizeR+n-1)/n-OffsetR/n。落入到m个不同条带中的子请求分别被标识为R0,R1,R2,…,Rm-1。In this embodiment, when the IO request R is divided into m sub-requests belonging to different stripes in step 4.1), the value of m is (Offset R +Size R +n-1)/n-Offset R /n, where n indicates the number of user data pages contained in a complete stripe, Offset R indicates the starting address of IO request R, and Size R indicates the number of pages contained in IO request R, and IO request R starts with Size R starting with the starting address Offset R consists of consecutive pages. A read request R consists of Size R consecutive pages starting with Offset R , and these user data pages may be distributed in different stripes. Since each stripe contains n pages of user data, the user data page numbered l is included in the l/nth stripe. Through the above calculation method, all user data pages of R can be divided into m different strips. Wherein, the value of m is (Offset R +Size R +n-1)/n-Offset R /n. The sub-requests falling into m different stripes are respectively identified as R 0 , R 1 , R 2 , . . . , R m-1 .
本实施例中,步骤4.7)的详细步骤包括:In the present embodiment, the detailed steps of step 4.7) include:
4.7.1)初始化数据恢复次数计数器为0;在子请求Ri中属于同一条带的v个页面已经被读取的基础上,从存储设备读取n-v份数据,共得到纠删码对条带作数据恢复时至少需要的n份数据;4.7.1) Initialize the data recovery times counter to 0; on the basis that v pages belonging to the same strip in the sub-request R i have been read, read nv pieces of data from the storage device, and obtain a total of erasure code pairs Bring at least n copies of data required for data recovery;
4.7.2)根据读取出来的共n份数据通过纠删码纠正子请求Ri所包含的各个页面的位错误,若成功纠正子请求Ri所包含的各个页面的位错误,则跳转执行步骤4.8);否则,将数据恢复次数计数器加1,跳转执行步骤4.7.3);4.7.2) Correct the bit errors of each page contained in the sub-request R i through the erasure code according to a total of n pieces of data read out. If the bit errors of each page contained in the sub-request R i are successfully corrected, jump Execute step 4.8); otherwise, add 1 to the data recovery times counter, and jump to step 4.7.3);
4.7.3)判断数据恢复次数计数器的值是否等于如果数据恢复次数计数器的值小于则读取纠删码对条带作数据恢复时至少需要的另外n份数据,跳转执行步骤4.7.2);否则如果数据恢复次数计数器的值等于则判定利用纠删码纠正子请求Ri所包含的各个页面的位错误失败。4.7.3) Determine whether the value of the data recovery times counter is equal to If the value of the data recovery times counter is less than Then read at least n copies of data required for data recovery of the stripe by reading the erasure code, and jump to step 4.7.2); otherwise, if the value of the data recovery times counter is equal to Then it is determined that correcting the bit errors of each page included in the sub-request R i by using the erasure code fails.
对于采用纠删码的存储系统而言,响应上层应用的读请求时,只要这n+k份数据中有n份仍然完整可靠,即可正确恢复出所有用户数据。本实施例基于前述步骤4.7.1)~4.7.3),确保能够基于n+k份数据中完整、正确、可靠的n份数据来实现对位错误的纠错。For a storage system using erasure codes, when responding to a read request from an upper-layer application, as long as n copies of the n+k copies of data are still intact and reliable, all user data can be correctly recovered. In this embodiment, based on the aforementioned steps 4.7.1) to 4.7.3), it is ensured that bit error correction can be realized based on complete, correct and reliable n pieces of data among the n+k pieces of data.
综上所述,本实施例联合使用纠删码和纠错码恢复闪存页面中出现的位错误,从而达到显著延长闪存寿命、提高闪存存储系统可靠性的目的。上层应用发出写请求时,为待写页面计算纠删码的冗余信息,并计算每个页面的纠错码和校验和,将纠删码冗余信息、纠错码、校验和一同保存在存储设备上。上层应用读取数据时,先利用校验和初步判定页面中出现的位错误数。若位错误较少,则用纠错码校正数据;若位错误较多,则采用纠删码恢复数据。以上所述方法在保证强大纠错能力的同时,尽可能采用计算开销较低的方法校正用户数据中出现的位错误,具有计算开销低、IO性能好的优点。由于纠删码具有强大的纠错能力,当闪存每个存储单元擦写次数很多、出错率很高时,纠删码仍然能够成功恢复用户数据中出现的位错误。所以本实施例能够显著增加闪存每个存储单元所能承受的擦写次数,具有寿命延长效果好的优点。In summary, this embodiment jointly uses erasure codes and error correction codes to restore bit errors in flash memory pages, so as to significantly prolong the life of the flash memory and improve the reliability of the flash memory storage system. When the upper-layer application sends a write request, it calculates the redundant information of the erasure code for the page to be written, and calculates the error correction code and checksum of each page, and combines the redundant information of the erasure code, error correction code, and checksum together saved on a storage device. When the upper-layer application reads data, it first uses the checksum to preliminarily determine the number of bit errors in the page. If there are few bit errors, the data is corrected with an error-correcting code; if there are many bit errors, the data is recovered with an erasure-correcting code. The method described above not only ensures a strong error correction capability, but also corrects bit errors in user data using a method with lower computational overhead as much as possible, which has the advantages of low computational overhead and good IO performance. Due to the strong error correction capability of the erasure code, when each storage unit of the flash memory is erased and written many times and the error rate is high, the erasure code can still successfully recover the bit errors that occur in user data. Therefore, this embodiment can significantly increase the number of erases and writes that each storage unit of the flash memory can withstand, and has the advantage of a good life extension effect.
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。The above descriptions are only preferred implementations of the present invention, and the scope of protection of the present invention is not limited to the above-mentioned embodiments, and all technical solutions under the idea of the present invention belong to the scope of protection of the present invention. It should be pointed out that for those skilled in the art, some improvements and modifications without departing from the principle of the present invention should also be regarded as the protection scope of the present invention.
Claims (9)
- A kind of 1. reliable flash-memory storage system construction method cooperateed with using correcting and eleting codes and error correcting code, it is characterised in that step bag Include:1) initialization receives the buffering area of I/O request;2) I/O request R is received, judges I/O request R read-write type, if read-write type is write request, redirects and performs step 3); If otherwise read-write type is read request, redirects and perform step 4);3) I/O request R data of writing are chosen according to band for unit, by s user data of each band of selection The page generates the k redundant data page using correcting and eleting codes, calculates the s user data page and k redundant data page respectively The verification of the s+k page of face composition and, error correcting code, and by the verification of the s+k page and its each page and, error correcting code Together write storage device;4) I/O request R is divided into the son request for being belonging respectively to different bands, asked for each height, son request is read and is wrapped Each page for containing and its verification and, error correcting code, calculate the verification for each page that son request is included and and identify sub- request Comprising each page bit-errors, find out the most page of bit-errors, judge the bit error number of the most page of bit-errors Whether amount is more than the maximum wrong digit T that used error correcting code can correct, if the bit-errors of the most page of bit-errors Quantity is not more than the maximum wrong digit T that used error correcting code can correct, then each in being asked using error correcting code syndrome The bit-errors occurred in the page;If the number of bit errors of the most page of bit-errors, which is more than used error correcting code, to correct Maximum wrong digit T, then the bit-errors occurred in being asked using correcting and eleting codes syndrome in each page, return to son request and wrapped The data that each page contained is included.
- 2. collaboration according to claim 1 uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code, its It is characterised by, the step 1) also includes the write request counter of page sum of the initialization for recording storage device to be written CountwFor 0 the step of, the detailed step of the step 3) includes:3.1) the write request R page numbers included are added to write request counter CountwIn;3.2) write request counter Count is judgedwWhether default threshold value h is exceeded, and wherein h is to be wrapped in more than one complete band The page quantity n contained integer;If write request counter CountwMore than default threshold value h, then redirect and perform step 3.3); If write request counter CountwNo more than default threshold value h, then redirect and perform step 2);3.3) it is Count to be written according to page numberwIndividual page of data of writing makees ascending sort, the Count being written intowIt is individual Write page of data to be divided into different bands so that the page that numbering is x is divided into xth/n band, and wherein n is represented The page quantity included in one complete band;From Count to be writtenwIt is individual to write one complete band of selection in page of data, If choosing complete band success, redirect and perform step 3.4);Else if choosing, complete band is unsuccessful, then selection includes The user data page it is most have an imperfect band, redirect and perform step 3.4);3.4) the s user data page in the complete band of selection or imperfect band is generated into k redundancy using correcting and eleting codes The s+k page is obtained in the page, calculate respectively in the s+k page verification of each page and, error correcting code, by the s+k The error correcting code of each page and verification and together write storage device in the individual page and the s+k page;Finally from write request Counter CountwIn subtract the user data page quantity s of this write storage device, jump procedure 3.2).
- 3. collaboration according to claim 2 uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code, its It is characterised by:Threshold value h in the step 3.2) is 10 times of the page quantity n included in a complete band.
- 4. collaboration according to claim 3 uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code, its It is characterised by, the detailed step of the step 3.3) includes:3.3.1) from write request counter Count to be writtenwIt is individual to write one complete band of selection in page of data, if chosen Complete band success, then redirect and perform step 3.4);Else if selection complete band is unsuccessful, then execution step is redirected 3.3.2);3.3.2) judge whether I/O request R is continuous write request, if I/O request R is continuous write request, redirect execution Step 2);Else if I/O request R and discrete write request, then redirect and perform step 3.3.3);3.3.3) choose comprising the user data page it is most have an imperfect band, redirect and perform step 3.4).
- 5. collaboration according to claim 4 uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code, its It is characterised by:By the error correcting code of each page and verification in the s+k page and the s+k page in the step 3.4) Together during write storage device, storage device is that each page distribution one to be written is idle in the s+k page Physical page, the data of each page are written into the data area of the physical page of distribution, the s+ in the s+k page The error correcting code of each page and verification and the additional areas for the physical page for being written into distribution in the k page.
- 6. collaboration according to claim 5 uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code, its It is characterised by:The verification of each page in the s+k page is calculated in the step 3.4) respectively and specifically refers to wait to count The word Word that the bit stream in the page is divided into fixed size is calculated, each word Word includes 64 bits, then by these words Word as the result that XOR is calculated as the page verification and.
- 7. the collaboration according to any one in claim 1~6 uses correcting and eleting codes and the reliable flash memory storage system of error correcting code System construction method, it is characterised in that the detailed step of the step 4) includes:4.1) I/O request R is divided into m son request for being belonging respectively to different bands;4.2) the sub- request counter i of Initialize installation is 0;4.3) son request R is readiComprising each page, together read son request RiComprising each page corresponding to entangle Error code and verification and;4.4) son request R is calculatediComprising each page verification and, according to the verification being calculated and with step 4.3) Read obtained verification and be compared identification son request RiComprising each page in bit-errors;4.5) sub- request R is found outiComprising each page in the most page of error bit, by the most page of the error bit Wrong digit and the maximum wrong digit T that can correct of used error correcting code be compared, if the page that bit-errors are most The number of bit errors in face is not more than the maximum wrong digit T that used error correcting code can correct, then redirects and perform step 4.6); Else if the number of bit errors of the most page of bit-errors is more than the maximum wrong digit that used error correcting code can correct T, then jump procedure 4.7);4.6) using error correcting code syndrome request RiComprising each page bit-errors, if correct failure, redirect execution Step 4.7);Else if correcting successfully, then redirect and perform step 4.8);4.7) correcting and eleting codes syndrome request R is utilizediComprising each page bit-errors;4.8) son request R is returned to upper layer applicationiComprising user data;4.9) sub- request counter i is increased;If 4.10) sub- request counter i is less than son request fractionation quantity m, judges there be untreated complete son request, redirect and hold Row step 4.3);If sub- request counter i is equal to son, request splits quantity m, judges to have handled all son requests, jumps Turn to perform step 2).
- 8. collaboration according to claim 7 uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code, its It is characterised by:When I/O request R to be divided into m son request for being belonging respectively to different bands in the step 4.1), m value is (OffsetR+SizeR+n-1)/n-OffsetR/ n, wherein n represent the user data number of pages included in a complete band, OffsetRRepresent I/O request R initial address, SizeRThe page number that I/O request R is included is represented, I/O request R is by with initial address OffsetRThe Size of beginningRIndividual continuous page composition;I-th of son request R in the m son requestiComprising the page such as formula (1) It is shown;<mrow> <msub> <mi>R</mi> <mi>i</mi> </msub> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mo>&lsqb;</mo> <msub> <mi>Offset</mi> <mi>R</mi> </msub> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Offset</mi> <mi>R</mi> </msub> <mo>+</mo> <mi>n</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> <mo>/</mo> <mi>n</mi> <mo>&times;</mo> <mi>n</mi> <mo>)</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> <mo>;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>&lsqb;</mo> <msub> <mi>Offset</mi> <mi>R</mi> </msub> <mo>/</mo> <mi>n</mi> <mo>&times;</mo> <mi>n</mi> <mo>+</mo> <mi>i</mi> <mo>&times;</mo> <mi>n</mi> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <msub> <mi>Offset</mi> <mi>R</mi> </msub> <mo>/</mo> <mi>n</mi> <mo>&times;</mo> <mi>n</mi> <mo>+</mo> <mi>i</mi> <mo>&times;</mo> <mi>n</mi> <mo>+</mo> <mi>n</mi> <mo>)</mo> </mrow> </mtd> <mtd> <mrow> <mn>0</mn> <mo><</mo> <mi>i</mi> <mo><</mo> <mi>m</mi> <mo>-</mo> <mn>1</mn> <mo>;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>&lsqb;</mo> <mrow> <mo>(</mo> <msub> <mi>Offset</mi> <mi>R</mi> </msub> <mo>+</mo> <msub> <mi>Size</mi> <mi>R</mi> </msub> <mo>)</mo> </mrow> <mo>/</mo> <mi>n</mi> <mo>&times;</mo> <mi>n</mi> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>Offset</mi> <mi>R</mi> </msub> <mo>+</mo> <msub> <mi>Size</mi> <mi>R</mi> </msub> <mo>)</mo> <mo>)</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mo>=</mo> <mi>m</mi> <mo>-</mo> <mn>1</mn> <mo>;</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>In formula (1), RiI-th of son request is represented, n represents the page quantity in a complete band, OffsetRRepresent I/O request R Initial address, SizeRRepresent the page number that I/O request R is included.
- 9. collaboration according to claim 8 uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code, its It is characterised by, the detailed step of the step 4.7) includes:4.7.1 it is 0 that) initialization data, which recovers number counter,;In sub- request RiIn belong to the v page of same band by On the basis of reading, n-v part data are read from storage device, being obtained when correcting and eleting codes make data recovery to the band at least needs The n part data wanted;4.7.2 R) is asked by correcting and eleting codes syndrome according to the common n parts data read outiComprising each page dislocation By mistake, if success syndrome request RiComprising each page bit-errors, then redirect perform step 4.8);Otherwise, by data Recover number counter and add 1, redirect and perform step 4.7.3);4.7.3) judge whether the value of data recovery number counter is equal toIf the value of data recovery number counter is small InThe other n parts data at least needed when correcting and eleting codes make data recovery to the band are then read, redirect execution step 4.7.2);Else if the value of data recovery number counter is equal toThen judge to utilize correcting and eleting codes syndrome request RiWrapped The bit-errors failure of each page contained.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510236451.XA CN104881370B (en) | 2015-05-11 | 2015-05-11 | Collaboration uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510236451.XA CN104881370B (en) | 2015-05-11 | 2015-05-11 | Collaboration uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104881370A CN104881370A (en) | 2015-09-02 |
CN104881370B true CN104881370B (en) | 2018-01-12 |
Family
ID=53948870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510236451.XA Active CN104881370B (en) | 2015-05-11 | 2015-05-11 | Collaboration uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104881370B (en) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544862B (en) * | 2016-06-29 | 2022-03-25 | 中兴通讯股份有限公司 | A method and device for reconstructing stored data based on erasure code, and a storage node |
CN106445726A (en) * | 2016-09-28 | 2017-02-22 | 上海爱数信息技术股份有限公司 | Data repairing method for distributed erasure code storage system |
CN109426622B (en) * | 2017-08-31 | 2020-11-24 | 香港理工大学深圳研究院 | A method for improving the life of a flash solid state disk and a high life flash solid state disk |
CN111435286B (en) * | 2019-01-14 | 2023-12-05 | 深圳市茁壮网络股份有限公司 | Data storage method, device and system |
CN111007987A (en) * | 2019-11-08 | 2020-04-14 | 苏州浪潮智能科技有限公司 | Memory management method, system, terminal and storage medium for raid io |
CN110896415B (en) * | 2019-11-22 | 2022-05-24 | 浪潮电子信息产业股份有限公司 | Data readdir method, system, equipment and computer medium |
CN111708742B (en) * | 2020-05-24 | 2022-11-29 | 苏州浪潮智能科技有限公司 | Input and output read-ahead method and device for a distributed file system |
CN113890687B (en) * | 2021-11-15 | 2024-08-13 | 杭州叙简未兰电子有限公司 | High-reliability audio transmission method and device based on error correction code and erasure code mixing |
CN114093409A (en) * | 2022-01-21 | 2022-02-25 | 苏州浪潮智能科技有限公司 | Flash memory verification method and device, computer equipment and storage medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101627444A (en) * | 2007-10-03 | 2010-01-13 | 株式会社东芝 | Semiconductor memory device |
CN102034548A (en) * | 2009-09-25 | 2011-04-27 | 三星电子株式会社 | Nonvolatile memory device and system, and method of programming a nonvolatile memory device |
CN102934093A (en) * | 2010-06-29 | 2013-02-13 | 英特尔公司 | Method and system to improve the performance and/or reliability of a solid-state drive |
-
2015
- 2015-05-11 CN CN201510236451.XA patent/CN104881370B/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101627444A (en) * | 2007-10-03 | 2010-01-13 | 株式会社东芝 | Semiconductor memory device |
CN102034548A (en) * | 2009-09-25 | 2011-04-27 | 三星电子株式会社 | Nonvolatile memory device and system, and method of programming a nonvolatile memory device |
CN102934093A (en) * | 2010-06-29 | 2013-02-13 | 英特尔公司 | Method and system to improve the performance and/or reliability of a solid-state drive |
Also Published As
Publication number | Publication date |
---|---|
CN104881370A (en) | 2015-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104881370B (en) | Collaboration uses correcting and eleting codes and the reliable flash-memory storage system construction method of error correcting code | |
US11216196B2 (en) | Erasure coding magnetic tapes for minimum latency and adaptive parity protection feedback | |
US8904261B2 (en) | Data management in solid state storage devices | |
US9009565B1 (en) | Systems and methods for mapping for solid-state memory | |
US9208018B1 (en) | Systems and methods for reclaiming memory for solid-state memory | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
US9026867B1 (en) | Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory | |
US9063874B2 (en) | Apparatus, system, and method for wear management | |
US8560881B2 (en) | FLASH-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes | |
KR101636785B1 (en) | Dynamic higher-level redundancy mode management with independent silicon elements | |
US9053012B1 (en) | Systems and methods for storing data for solid-state memory | |
US9158675B2 (en) | Architecture for storage of data on NAND flash memory | |
TWI472918B (en) | Semiconductor storage device and method of controlling the same | |
US8560916B2 (en) | Method for enhancing error correction capability of a controller of a memory device without increasing an error correction code engine encoding/decoding bit count, and associated memory device and controller thereof | |
CN109426622B (en) | A method for improving the life of a flash solid state disk and a high life flash solid state disk | |
US9811413B2 (en) | Orphan block management in non-volatile memory devices | |
US20150019933A1 (en) | Memory controller, storage device, and memory control method | |
CN110347344A (en) | It is a kind of that block storage method is automatically configured based on distributed memory system | |
US20140026013A1 (en) | Storage control apparatus and error correction method | |
US10062418B2 (en) | Data programming method and memory storage device | |
US8433981B1 (en) | Coding across data blocks to reduce write amplification in NAND flash | |
US20160283319A1 (en) | Data storage device and encoding method thereof | |
US9754682B2 (en) | Implementing enhanced performance with read before write to phase change memory | |
US9081701B1 (en) | Systems and methods for decoding data for solid-state memory | |
US9934093B2 (en) | Control device, method of controlling a storage device, and storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |