CN107221351B - 一种固态盘系统中纠错码的优化处理方法及其应用 - Google Patents
一种固态盘系统中纠错码的优化处理方法及其应用 Download PDFInfo
- Publication number
- CN107221351B CN107221351B CN201710387756.XA CN201710387756A CN107221351B CN 107221351 B CN107221351 B CN 107221351B CN 201710387756 A CN201710387756 A CN 201710387756A CN 107221351 B CN107221351 B CN 107221351B
- Authority
- CN
- China
- Prior art keywords
- error correction
- data page
- correction code
- cache
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种固态盘系统中纠错码的优化处理方法,其特征在于,通过将多个连续的逻辑数据页划分为一个数据页组,在缓存中按照访问热度储数据页、过长的纠错码,在闪存中将一个数据页组的过长纠错码集中存储在专门闪存页中的方式,节省了读写访问时间,避免了跨闪存页读取数据页时所带来的读放大和高访问开销问题,优化了固态盘的整体性能。本发明还公开了该纠错码的优化处理方法的应用,通过该方法,优化了读、写缓存算法,并通过缓存过长的纠错码来提高缓存命中率,以及通过批量写回多个数据页的过长纠错码来减小更新开销,进而提高系统的整体性能,延长固态盘的寿命。
Description
技术领域
本发明属于固态盘存储技术领域,具体涉及一种固态盘系统中纠错码的优化处理方法及其应用。
背景技术
固态盘(solid state disk,SSD)是一种新兴的存储技术,在全球具有上百亿的市场。以闪存为存储介质,具有更低的延时和能耗,更快的数据处理速度,更好的抗震性能,更高的可靠性和耐用性。为了获得更大的存储容量和更高的存储密度,闪存介质分别从工艺制程、组织结构、存储比特数等3个方面进行了优化。但是,存储单元的尺寸缩小,导致单元间串扰增加;堆叠层数不断增多,也增加了层间串扰;而闪存单元存储比特数的改变,使得阈值电压变窄,从而导致每个单元存储的电荷数变少,最终导致数据存储稳定性降低,数据保存时间变低。
研究结果表明,有关固态硬盘出现非透明错误(致命的,无提示的)的比例,在读取中为20%~63%,而在写入中仅为1.5%~2.5%。另外,透明错误尽管可以进行修复,但其占用资源严重,也会导致固态盘性能下降。由此可见,闪存数据存储的可靠性问题亟待解决。而且,随着闪存的使用,P/E周期不断地累加,对存储单元造成永久伤害并累积,导致原始位比特错误率(Raw Bit Error Rate,RBER)增高。随着数据保存时间变长,存储在闪存单元中电荷泄露,保存错误出现,造成原始位比特错误率(RBER)的增加。
目前,固态盘一般使用纠错码来纠正比特错误,以保证数据存储的可靠性与有效性。但是,由于闪存的比特错误率随着存储密度的上升和擦写周期的提高而增高,为保证数据存储的高可靠性和长久性,SSD中需要采用校验码字更长的强力纠错码。在现有闪存上采用校验长的强力纠错码存在明显不足,具体表现为:一方面,强力的纠错码通常需要有更长的冗余,闪存页提供的冗余空间可能不足以存储全部的纠错码;另一方面,一个逻辑数据页通畅需要跨页存储在两个闪存页上,这将带来读放大问题,从而导致高访问开销,降低固态盘的整体性能。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种固态盘系统中纠错码的优化处理方法及其应用,该方法可以解耦数据页和过长纠错码的存储,优化读、写缓存算法,还可以通过缓存过长的纠错码(ECC)来提高缓存命中率,以及通过批量写回多个数据页的过长纠错码(ECC)来减小更新开销,进而提高系统的整体性能,延长固态盘(SSD)的寿命。
为实现上述目的,按照本发明的一个方面,提供了一种固态盘系统中纠错码的优化处理方法,所述固态盘包括闪存和缓存,其特征在于,
S1根据过长纠错码的长度,按照顺序将数据页划分为连续的数据页组;
S2针对每个数据页,提取其中数据页的过长纠错码;
S3将每个数据页组内的过长纠错码集中存储在一个单独的闪存页中,作为该数据页组对应的纠错码页;
S4根据数据页的读取频率和新近程度,将热数据的完整数据页存储在读缓存中,形成数据页缓存区;将温数据的过长纠错码和/或纠错码页存储在读缓存中,形成纠错码缓存区;
以此方式,使得在读访问操作时,可以通过直接访问数据页缓存区中的完整数据页或纠错码缓存区中的过长纠错码而命中访问请求的用户数据页或过长纠错码,从而提升缓存中的访问命中率,提高固态盘系统的读性能。
采取了过长纠错码的固态盘系统,其中的数据页对应的纠错码可能会超过闪存页内备用区的大小,从而导致一个数据页及其纠错码需要跨闪存页存放。这会给读访问过程带来高额的访问开销,即,获取一个数据页需要读取两个闪存页的内容。但是如果可以直接从缓存中命中访问请求的数据页或者是纠错码,则可以大大减少闪存的访问频率,从而减少闪存的访问开销;此外,缓存的访问时间相较于闪存要小得多,可以提高访问效率,提高固态盘的整体性能。
本发明技术方案的方法中,根据数据页的过长纠错码的长度,将一系列的连续数据页分成若干个连续的数据页组。具体来说,首先需要根据纠错码算法和纠错码码率计算出过长纠错码的长度,然后根据过长纠错码的长度来确定分组,每一个分组中包含一定数量的数据页。针对每一个数据页组,单独提取该分组内数据页的过长纠错码,集中存储在一个单独的闪存页上,该闪存页即为该数据页组对应的纠错码页。在闪存空间中,纠错码页存储在单独设立的纠错码存储区域中。经过上述分组处理后的数据页,按照访问频率和新近程度的差异,分别将其存储到缓存空间中。具体来说,对于近期频繁访问的数据,即热数据,将其完整的数据页缓存;对于近期较为频繁的数据,即温数据,针对顺序访问和随机访问,分别缓存温数据所在数据页组对应的纠错码页和温数据对应的过长纠错码单元。类似的,热数据的完整数据页、顺序访问的温数据所在数据页组对应的完整纠错码页以及随机访问的温数据所对应的过长纠错码,均分别存储在缓存中对应设立的存储区域内,即数据页缓存区域、纠错码页缓存区域和纠错码单元缓存区域。因此,通过这种存储方式,在具体的读访问请求中,可以依次访问数据页缓存区域,纠错码缓存区域(包括纠错码页缓存区域和纠错码单元缓存区域)以及闪存。如果数据页在数据页缓存区即命中,则可以直接将其读取出来;如果数据页的纠错码在纠错码缓存区域命中,则根据该纠错码和映射表可以获得访问请求的数据页在闪存中的位置,经过译码器译码后,可以获得访问请求的数据页;如果在缓存中既没有命中访问请求的数据页也没有命中访问请求的数据页的纠错码,才会直接在闪存中进行读取。在本发明技术方案的这种结构设计下,大部分的访问请求都可以在缓存区域中命中,只有极少数的数据页需要直接从闪存中读取,大大节省了访问开销。
作为本发明的一个优选技术方案,对于顺序访问,存储在读缓存中的是温数据所在数据页组对应的纠错码页,对于随机访问,存储在读缓存中的是温数据对应的单个过长纠错码。
对于温数据的存储来说,如果是顺序访问,即依次访问一系列的逻辑数据页,那么将这些逻辑数据页所在的数据页组对应的纠错码页存储在缓存中,这样的话,当访问请求的数据页是顺序访问的温数据时,一次命中即可以访问其他相关数据页。如果是随机访问,即按照不确定次序访问不同的逻辑数据页,则将逻辑数据页的纠错码存储在缓存中即可。
具体而言,在缓存温数据的过长纠错码过程中,按照访问方式的不同,有两种不同的缓存方案。对于顺序访问,缓存逻辑数据页所在的数据页组对应的完整纠错码页,在具体的访问过程中通过预取提升读缓存命中率。预取是提前将同一个逻辑数据页组对应的的纠错码页置入读缓存中,这样的话,载入完整的纠错码页时,并不会引入额外的访存开销。因为闪存是以页为单位进行读写的,对于同一个数据页组的读请求操作以及写操作更新纠错码页引起的读操作,两者读取的纠错码单元均可在读缓存中命中,系统的读性能因此得到了提升。对于随机访问,缓存逻辑数据页的单个纠错码单元;虽然命中缓存的纠错码单元后,进一步读取对应的逻辑数据页时也会带来闪存访问开销,但由于纠错码单元小于逻辑页,缓存纠错码单元还是能够显著提高缓存命中率并减小访问开销。
作为本发明的一个优选技术方案,缓存中还包括写缓存,用于存储近期写入的数据页,属于同一个数据页组的数据页聚集在一起;
以此方式,使得在写访问操作时,可以将写缓存中替换出来的数据页及其所在数据页组对应的纠错码页一起批量更新到对应的闪存页中,从而减少闪存上纠错码页的写入次数,提高固态盘系统的写性能。
作为本发明的一个优选技术方案,缓存中还包括映射表缓存,用于存储近期访问的数据页对应的映射表页。
在写缓存中,数据页的存储也是遵循一定的规律的。近期写入的数据页存储在写缓存中,并按照其所在数据页的分组聚集,属于同一个逻辑数据页组的数据页存储在一起。这样的话,如果写访问命中了写缓存中的数据页,对其进行了写操作,在不采用本发明技术方案的二级结构时,更新一次数据页的同时也需要更新一次纠错码,相当于同时需要更新两个闪存页。采用上述二级机构的写缓存方法后,该数据页及其纠错码在闪存中不会立即更新,而是等到存储在写缓存中的这个数据页组的某一个数据页发生替换的时候,将该数据页组及其对应的纠错码批量更新到闪存中。这样,只需要更新一次纠错码页就可以完成多个纠错码在闪存中的更新,避免了频繁更新同一纠错码页带来较大的闪存访问开销。
作为本发明的一个优选技术方案,读缓存中设有数据页缓存区和纠错码缓存区,所述纠错码缓存区中设有纠错码单元缓存区和纠错码页缓存区。
作为本发明的一个优选技术方案,闪存包括数据块、映射表块和纠错码块,所述数据块用于存储数据页,所述映射块中用于存放地址映射表,所述纠错码块中用于存放与数据页组相对应的纠错码页。
为了提高访问效率,本发明技术方案在读缓存中开辟了一个独立的分区用于存储过长的纠错码,即纠错码缓存区域,该区域又包括纠错码页缓存区域和纠错码单元缓存区域。数据页缓存区中缓存的是热数据的完整数据页,纠错码页缓存区中存储的是顺序访问的温数据所在的数据页组对应的纠错码页,纠错码单元缓存区中存储的是随机访问的温数据的单个纠错码单元。除了读缓存区外,缓存中还包括写缓存区和映射表缓存区。其中,写缓存存储有部分逻辑数据页,根据这些数据页的纠错码,又可以形成一定的数据页组,该数据页组与分组形成的数据页组是一致的,即在写缓存中,属于同一个数据页组的数据页在写缓存中也是属于同一分组的。映射表存储区中存储的是存放地址映射表、记录缓存数据页到闪存数据页和纠错码页的映射关系。
类似的,闪存中也设有单独的数据存储区、映射表存储区以及纠错码存储区,其中,数据存储区用于存储完整的数据页;映射表存储区用于存放地址映射表、记录缓存的数据页到闪存数据页和纠错码页的映射关系;纠错码存储区则是用于存储每个数据页组对应的纠错码页。
按照本发明技术方案的一个方面,提供了一种固态盘系统中纠错码的优化处理方法在固态盘读操作中的应用,其特征在于,包括,
S11扫描固态盘写缓存,确认访问请求的数据页是否命中,若命中,将该数据页数据页合并更新后迁移到读缓存,转到步骤S16,若未命中,进入步骤S12;
S12扫描固态盘读缓存的数据页存储区,确认访问请求的数据页是否命中,若命中,转到步骤S16,若未命中,进入步骤S13;
S13扫描固态盘读缓存的纠错码缓存区,确认访问请求的数据页的纠错码是否命中,若命中,将过长纠错码和从闪存中取出对应的数据页送入译码器译码,获得访问请求的数据页,进入步骤S15,若未命中,进入步骤S14;
S14扫描固态盘闪存的纠错码块,获取访问请求的数据页对应的纠错码,将纠错码和从闪存中取出对应的数据页送入译码器译码,获得访问请求的数据页,进入步骤S15;
S15判断读缓存是否已满,若读缓存未满,将访问请求的数据页写入缓存,若读缓存已满,将访问请求的数据页与读缓存中的数据页和/或纠错码进行替换,并将替换出来的数据页和/或纠错码丢弃,转到步骤S16;
S16返回读请求结果。
在一个具体的读访问请求过程中,先扫描固态盘的读写缓存,一般来说,如果是热数据,其完整数据页已经缓存了,可以直接读取;如果是温数据,则需要在所缓存的过长纠错码中读取其对应的纠错码,将纠错码及其对应的数据页送入译码器译码后写入缓存再进行读取。但是,缓存的容量是有限的,其所缓存的数据页和过长纠错码也是根据访问频率和新近程度而进行缓存的。因此,有可能在缓存的数据页和过长纠错码中均未能找到目标数据页,这样就需要访问闪存,以获取访问请求的数据页信息。从闪存中载入的信息需要写入缓存,具体来说,更新读缓存时,若读缓存未满,则直接进行更新,将请求的用户数据页写入缓存即可;若缓存已满,选择其中一个数据页和/或过长纠错码丢弃后,写入请求的用户数据页即可。更新写缓存时,如果写缓存未满,直接写入即可,如果写缓存已满,则选择其中一个逻辑数据页将其剔出,确定该逻辑数据页所在数据页组对应的纠错码页,将替换出来的逻辑数据页和对应的纠错码页写入闪存中,通过这种方法给写缓存清理出空间以写入数据。
在上述的读访问过程中,依次检测了缓存中的数据存储区域、纠错码缓存单元、闪存纠错码存储单元,在更加详细的读访问过程中,在进行缓存检测的时候,先检测写缓存内容,再检测读缓存内容。其原因在于,如果访问请求的用户数据页位于写缓存中,可以将该数据页从写缓存中取出存入读缓存,这样既能够实现请求数据页的快速访问,又能够给写缓存清理出更多的空间,有助于提高访问效率,以及提高缓存空间的利用率。如果在缓存中的读缓存数据页存储区或者写缓存的数据页缓存区命中请求的用户数据页,即返回读请求结果,不再执行后续扫描任务,否则顺序执行上述过程,直至命中请求的用户数据页。在读访问请求中,无论是在缓存的纠错码单元命中请求的用户数据页还是在闪存的纠错码页上命中请求的用户数据页,所得到的纠错码都需要结合映射表单元确定数据页所在位置,并将纠错码和闪存中的数据页一起送入译码器译码后才能获得相应的数据页。实质上,映射表单元存储的是逻辑地址到物理地址的映射关系,闪存中存储的数据页和纠错码页所具有的是物理地址。
按照本发明技术方案的一个方面,提供了一种固态盘系统中纠错码的优化处理方法在固态盘写操作中的应用,其特征在于,包括,
S21扫描所述固态盘的读缓存,确认访问请求的数据页是否命中,若命中,将数据页合并更新后迁移到写缓存,转到步骤S25;若未命中,则进入步骤S22;
S22扫描所述固态盘的写缓存,确认访问请求的数据页是否命中,若命中,更新缓存中对应的数据页,转到步骤S25;若未命中,进入步骤S23;
S23判断写缓存是否已满,若写缓存未满,将访问请求的数据页写入缓存,转到步骤S25;若写缓存已满,进入步骤S24;
S24将访问请求的数据页与写缓存中的数据页进行替换,对该替换页所在的数据页组进行过长纠错码编码,形成对应的纠错码页;将该数据页组及其对应的纠错码页写入闪存;进入步骤S25;
S25返回写请求结果。
在一个具体的写访问请求过程中,先扫描缓存,包括读缓存和写缓存。具体而言,先扫描读缓存,再检测写缓存。其原因在于,如果访问请求的数据页在读缓存中命中,即可以将该数据页从读缓存迁移到写缓存,避免了同一个数据页在读缓存和写缓存的数据页存储区重复存储,提高了缓存空间的利用率。若请求的用户数据页位于写缓存中,按照写访问请求更新数据页,返回写请求结果即可。若请求的用户数据页位于读缓存中,则需要将该先数据页迁移到写缓存,即对写缓存进行更新。若此时写缓存未满,则直接将用户请求的数据写入写缓存,返回写请求结果即可;若此时写缓存已满,则需要在写缓存中清理出空间以完成写操作,具体来说,需要寻找到一个被替换出来的逻辑数据页及其所在数据页组,对该数据页组内所有的逻辑数据页进行纠错码编码处理后,聚集存储形成一个纠错码页,将上述替换数据页和纠错码页写入闪存后,方可返回写请求结果。
如果写访问请求在扫描写缓存的时候命中请求的用户数据页,即返回写请求结果;若请求的用户数据页不在写缓存中且写缓存未满,则可直接进行写操作,返回写请求结果;否则顺序执行上述操作,直至完成写操作,才可返回写请求结果。
按照本发明技术方案的一个方面,提供了一种固态盘系统,所述固态盘系统中包括缓存模块和闪存模块,其特征在于,所述缓存模块包括读缓存模块和写缓存模块以及映射表缓存模块,其中,
所述读缓存模块包括,
数据页缓存模块,用于存储完整的数据页;
纠错码页缓存模块,用于存储纠错码页;
纠错码单元缓存模块,用于存储单个的纠错码单元;
所述写缓存模块包括,
数据缓存模块,用于存储完整的数据页;
映射缓存模块,用于存储地址映射表;
所述闪存模块包括,
数据模块,用于存储完整的数据页;
纠错码模块,用于集中存储过长的纠错码单元;
映射模块,用于存放地址映射表,记录逻辑数据页到闪存数据页和纠错码页的映射关系。
以此方式,使得在读和/或写访问操作时可通过访问数据页缓存区中的完整逻辑数据页、纠错码缓存区中的过长纠错码或纠错码页中的过长纠错码而命中访问请求的用户数据页或过长纠错码,以及对闪存中的纠错码页按照数据页组进行批量更新,从而提升访问命中率,降低闪存的访问开销。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
1)本发明技术方案的纠错码优化处理方法,通过将多个连续的逻辑数据页划分为一个数据页组,在缓存中按照访问频率和新近程度存储数据页、过长的纠错码,在闪存中将一个数据页组的过长纠错码存储在一个数据页中的方式,节省了读写访问时间,避免了过长纠错码跨页存储在闪存中所带来的读放大和高访问开销问题,优化了固态盘的整体性能;
2)本发明技术方案的纠错码优化处理方法,通过在固态盘的缓存和闪存区域分别设置单独的区域,将部分纠错码存储在缓存和闪存上,改善了闪存页提供的冗余空间不足,难以存储全部纠错码的问题,增强了固态盘的系统稳定性;
3)本发明技术方案的读方法,其利用了上述纠错码优化处理方法,将热数据的完整数据页和温数据的过长纠错码分别存储在读缓存专门的区域里,在进行读操作的时候,通过直接访问缓存的完整数据页或过长纠错码,减少了闪存的访问频率和跨页访问开销,提升了读取效率和缓存的命中率;
4)本发明技术方案的写方法,其采用两级结构形式,将同属于一个数据页组的缓存页组织在一起,当写缓存未命中发生替换操作时,对同一个数据页组的所有缓存页进行纠错码编码,提取每个缓存页过长的纠错码,并批量更新到闪存上对应的ECC页上,能够提高系统的写性能;
5)本发明技术方案的固态盘系统,其利用了上述纠错码优化处理方法,解耦数据页和过长纠错码的存储,优化了读、写缓存算法,通过缓存过长的纠错码来提高缓存命中率,通过批量写回多个数据页的过长纠错码来减小更新开销,进而提高系统的整体性能,延长固态盘的寿命。
附图说明
图1是本发明实施例的NAND Flash芯片层次结构示意图;
图2是本发明实施例的固态盘系统中的纠错码管理和性能优化的方法设计结构图;
图3是本发明实施例的方法的读写缓存响应I/O请求的基本流程图;
图4是本发明实施例的过长纠错码的结构示意图;
图5是本发明实施例的逻辑数据页组及其对应的纠错码页示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
固态盘系统中,数据信息一般是以数据页的形式进行存储。数据页(也称为逻辑数据页),是固态盘系统中信息存储的基本单元。闪存页的物理存储空间分为数据区和备用区,备用区用于存放数据对应的纠错码和一些元数据。由于闪存的比特错误率随着存储密度的上升和擦写周期的提高而增高,为保证数据存储的高可靠性和长久性,固态盘中需要采用校验码字更长的强力纠错码。当采用校验码字长的强力纠错码时,一个逻辑数据页对应的纠错码长度大于备用区用于存放纠错码的空间大小,将过长而无法存储在备用区的纠错码部分称为一个逻辑数据页的“过长的纠错码单元”。图4即为过长纠错码结构示意图。当这些纠错码超过一定长度后,闪存页提供的冗余空间可能不足以存储全部的纠错码,从而导致一个数据页的纠错码跨页存储在两个闪存页上,带来了更大的访问开销。
本发明的固态盘系统中纠错码的优化处理方法及其应用,其对固态盘系统中纠错码的管理和存储进行了特别的设置,提升了固态盘系统的读写效率,并提高了固态盘的稳定性。下面结合本发明的实施例进行说明。
如图1所示实施例的NAND Flash芯片层次结构示意图。针对现有技术存在的缺陷,本发明提出了一种高效的纠错码管理机制,用来解耦数据页和过长纠错码的存储,优化读、写缓存算法,通过缓存过长的纠错码提高缓存命中率,以及通过批量写回多个数据页的过长纠错码来减小更新开销,进而提高系统的整体性能,延长固态盘(SSD)的寿命。
本发明的一个优选实施例的结构设计图如附图2所示,将多个连续的逻辑数据页划分为一个数据页组,将组内多个数据页过长的纠错码单元聚集存储在专门的闪存页,称之为纠错码页。具体的,分组是根据不同纠错码的码率,纠错码算法进行的。不同纠错码算法或者不同码率产生过长的纠错码长度不一致。例如,一个数据页8KB,如果采用码率0.8的纠错码编码,过长的纠错码就是1KB,即8个连续数据页作为一个分组,如果码率是0.84,过长的纠错码可能是2K,那么就是4个连续的数据页作为一个分组。也就是说,对连续逻辑数据页的分组是根据纠错码的长度来进行的,过长纠错码的长度又是根据不同的纠错码算法和纠错码码率等因素决定的。如图5所示,多个逻辑上连续的数据页组成一个逻辑页组,它们的过长的纠错码单元集中存储在一个单独的闪存页中,称之为“纠错码页”。纠错码块(ECC块)即纠错码页所在的闪存块。
对应附图2上的闪存模块,闪存上的块分为三种,依次为,数据块:用于存储用户数据和部分纠错码(ECC);纠错码块(ECC块):用于集中存储过长的纠错码单元(ECC单元),且每个数据页组对应其上一个闪存页,该闪存页上存储了该数据页组的全部逻辑数据页的过长纠错码;映射块:存放地址映射表,记录逻辑数据页到闪存数据页和纠错码页(ECC页)的映射关系。
固态盘系统中通常包含有大量的连续逻辑数据页,在访问的时候,通常需要去闪存中读取,这种访问方式带来了大量的访问开销。本发明技术方案中,先将逻辑数据页划分为多个连续的逻辑数据页组,每个逻辑数据页组内又包含有若干个连续的逻辑数据页。针对上述逻辑数据页组,将其中的逻辑数据页的过长纠错码集中起来,存储在一个闪存页上,作为纠错码页。
在本发明的优选实施例中提出一种读缓存管理算法,对应附图2中的读缓存模块。其中,对于近期频繁读取的热数据,缓存完整的数据页;对于近期较为频繁读取的数据,缓存其过长的纠错码。在缓存近期较为频繁读取的数据时,对于顺序访问,缓存完整的ECC页,通过预取提升读缓存命中率。预取是提前将同一个组的ECC页置入读缓存中,这样的话,载入完整的ECC页不会引入额外的访存开销,因为闪存是以页为单位进行读写的,对于同一个数据页组的读请求操作以及写操作更新ECC页引起的读操作,两者读取的ECC单元均可在读缓存中命中,从而可以提升系统的读性能。对于随机访问,缓存单个的纠错码单元。虽然命中缓存的纠错码单元也会带来闪存访问开销,但由于纠错码单元小于逻辑页,缓存纠错码单元还是能够显著提高缓存命中率。换而言之,针对热数据,缓存其完整数据页;对于温数据,缓存其过长纠错码。这种缓存方式中,对于近期访问过的数据,针对热数据和温数据采取不同的存储方式,可以有效减少读取时间;只有对于近期未读取过的数据,才会在闪存上读取对应的纠错码页,进而确定相应的纠错码。通过这种访问结构的设置,优化了纠错码在固态盘系统中的存储,并进一步优化固态盘性能。
本发明技术方案的实施例,在进行具体的读访问的时候,如果缓存中数据页缓存区的命中请求的用户数据页,可以直接在缓存中读取对应的完整的数据页,或者,缓存中纠错码缓存区的命中请求的用户数据页的纠错码,则可以读取相应的纠错码;如果缓存中未命中请求的用户数据页,则需要直接从闪存上读取对应的纠错码页,获取请求的用户数据页对应的纠错码单元,并进一步地获得请求的用户数据页。这种访问方式,不需要对大量的数据页进行访问以确定目标,只需要访问缓存和闪存内的纠错码页,节省了访问时间,一定程度上避免了跨闪存页读取数据页时所带来的读放大和高访问开销问题,优化了固态盘的整体性能。
在本发明的优选实施例中设计了一种两级结构的写缓存,对应附图2中的写缓存模块。其中,第一级结构是将连续的逻辑页划分为一个数据页组,以组为单位的逻辑节点,第二级结构由各个组下对应的逻辑页组成。当发生写请求时,首先在第一级结构中判断缓存是否命中,若命中,则更新写缓存中对应的数据页,返回写请求结果;若不命中且缓存满时,在第二级结构发生替换操作,根据替换算法选择一个逻辑数据页,将它所在数据页组的所有缓存页进行纠错码编码,并提取出每个缓存页过长的纠错码单元。最后,在向闪存写回替换逻辑数据页的同时,将提取出的纠错码单元批量更新到对应的纠错码页(ECC页)中。也就是说,如果一次写操作所请求访问的数据页位于缓存中,那么完成写操作后,该数据页仍然置于缓存中,没有写入闪存。如果每一次的写操作都立即更新闪存,那么每向闪存写入一个数据页,就需要更新一个纠错码,即需要更新一次纠错码页,这将带来极大的访问开销。而本发明技术方案的实施例中,采取两级结构,如果写访问命中的数据页位于缓存中,完成写操作后,该数据页仍然存放在写缓存中,没有立即更新到闪存中去,如果缓存中没有命中访问请求的数据页,在进行数据页替换的时候一次性将被替换出去的数据页及其所在数据页组对应的纠错码页批量更新到闪存中去。这种二级结构设计,可以保证发生写缓存命中的同组数据页更新的纠错码单元都能一次性被写入闪存上。这样一次对纠错码页(ECC页)的更新即可以保证在闪存上的纠错码页(ECC页)为最新,缓解了缓存替换在闪存引发的纠错码页(ECC页)多次更新操作的问题,而且对于整个替换操作来说,只会发生一个数据页组及其对应的纠错码页(ECC页)的写入,节省了数据页与纠错码页的替换开销。
在本发明的优选实施例中,结合图3来说明该方法在具体实施时,主要的步骤如下:
(1)下发的I/O请求被转化为以闪存页为单位的页级请求,判断请求类型,如果是读请求转(2),否则,转(8);
(2)扫描写缓存,判断访问逻辑页是否被缓存,即缓存是否命中,若命中,则从写缓存中取出对应的数据页并返回读请求结果,否则,转(3);
(3)扫描读缓存,判断访问逻辑页是否被缓存,即缓存是否命中,若命中,则从读缓存中取出对应的数据页并返回读请求结果,否则,转(4);
(4)根据映射表查找该请求对应闪存上的地址,即物理地址,从闪存上读取数据页,扫描读缓存,判断数据页对应的过长纠错码(ECC单元)是否被缓存,如果被缓存,即缓存ECC单元命中,则读取读缓存中的纠错码单元(ECC单元),转(6),否则转(5);
(5)从闪存上读取请求对应的ECC页,译码后并获取纠错码页(ECC页)中请求对应过长的纠错码单元(ECC单元)(不考虑ECC页的纠错码,假定ECC页的纠错码OOB空间足够存放,无过长ECC);
(6)将数据页和纠错码单元(ECC单元)送入纠错码(ECC)译码器,进行纠错码(ECC)译码,获得请求的用户数据页;扫描读缓存数据区域和纠错码区域,判断读缓存中是否有足够多的空位去存放请求的用户数据页或者纠错码单元,即缓存是否已满,如果已满,需要进行缓存替换操作,根据缓存替换算法替换一个数据页或者纠错码单元,并丢弃替换出来的数据页或者纠错码单元,否则,转(7);
(7)将译码获得请求的用户数据页载入读缓存数据区域中,将用户数据页对应的纠错码单元载入读缓存的纠错码区域,并返回读请求结果;
(8)扫描读缓存,判断访问逻辑页是否被缓存,即缓存是否命中,若命中,则转(9),否则,转(10);
(9)判断写请求写入的数据是整页写还是部分页写,若是部分页写,从读缓存中取出命中的数据页,剔除缓存中对应的纠错码单元,将数据页从读缓存移到写缓存,与更新写入的数据页凑成完整一页,否则,从读缓存中剔除命中数据页及对应过长的纠错码单元;
(10)扫描写缓存,判断访问逻辑页是否被缓存,即缓存是否命中,若命中,则更新写缓存中对应的数据页并返回写请求结果,否则,转(11);
(11)判断写缓存中是否有足够多的空位去存放写入的逻辑页,即写缓存是否已满,如果已满,需要进行写缓存替换操作,转(12),否则,转(14);
(12)根据缓存替换算法替换一个数据页,并找到它所在的数据页组;
(13)对数据页组内所有的数据页进行纠错码编码,获得过长的纠错码单元,并聚集成一个纠错码页,向闪存上写入替换的数据页和对应的纠错码页,返回写请求结果;
(14)将写请求下发的数据页写入缓存中,返回写请求结果。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种固态盘系统中纠错码的优化处理方法,所述固态盘包括闪存和缓存,其特征在于,
S1根据过长纠错码的长度,按照顺序将数据页划分为连续的数据页组,其中逻辑数据页对应的纠错码长度大于备用区用于存放纠错码的空间大小的纠错码称为一个逻辑数据页的过长纠错码;
S2针对每个数据页,提取数据页的过长纠错码;
S3将每个数据页组内的过长纠错码集中存储在一个单独的闪存页中,作为该数据页组对应的纠错码页;
S4根据数据页的读取频率和新近程度,将热数据的完整数据页存储在读缓存中,形成数据页缓存区;将温数据的过长纠错码和/或纠错码页存储在读缓存中,形成纠错码缓存区;
以此方式,使得在读访问操作时,以通过直接访问数据页缓存区中的完整数据页或纠错码缓存区中的过长纠错码而命中访问请求的用户数据页或过长纠错码,从而提升缓存中的访问命中率,提高固态盘系统的读性能。
2.根据权利要求1所述的一种固态盘系统中纠错码的优化处理方法,其中,对于顺序访问,存储在读缓存中的是温数据所在数据页组对应的纠错码页,对于随机访问,存储在读缓存中的是温数据对应的单个过长纠错码。
3.根据权利要求1或2所述的一种固态盘系统中纠错码的优化处理方法,其中,所述缓存中还包括写缓存,用于存储近期写入的数据页,属于同一个数据页组的数据页聚集在一起;
以此方式,使得在写访问操作时,将写缓存中替换出来的数据页及其所在数据页组对应的纠错码页一起批量更新到对应的闪存页中,从而减少闪存上纠错码页的写入次数,提高固态盘系统的写性能。
4.根据权利要求1或2所述的一种固态盘系统中纠错码的优化处理方法,其中,所述缓存中还包括映射表缓存,用于存储近期访问的数据页对应的映射表页。
5.根据权利要求1或2所述的一种固态盘系统中纠错码的优化处理方法,其中,所述读缓存中设有数据页缓存区和纠错码缓存区,所述纠错码缓存区中设有纠错码单元缓存区和纠错码页缓存区。
6.根据权利要求1或2所述的一种固态盘系统中纠错码的优化处理方法,其中,所述闪存包括数据块、映射表块和纠错码块,所述数据块用于存储数据页,所述映射块中用于存放地址映射表,所述纠错码块中用于存放与数据页组相对应的纠错码页。
7.权利要求1-6中任一项所述的固态盘系统中纠错码的优化处理方法在固态盘读操作中的应用,其特征在于,包括,
S11扫描固态盘写缓存,确认访问请求的数据页是否命中,若命中,将该数据页合并更新后迁移到读缓存,转到步骤S16,若未命中,进入步骤S12;
S12扫描固态盘读缓存的数据页存储区,确认访问请求的数据页是否命中,若命中,转到步骤S16,若未命中,进入步骤S13;
S13扫描固态盘读缓存的利用权利要求1-6中任一项所述的固态盘系统中纠错码的优化处理方法形成的纠错码缓存区,确认访问请求的数据页的纠错码是否命中,若命中,将过长纠错码和从闪存中取出对应的数据页送入译码器译码,获得访问请求的数据页,进入步骤S15,若未命中,进入步骤S14;
S14扫描固态盘闪存的纠错码块,获取访问请求的数据页对应的纠错码,将纠错码和从闪存中取出的 对应的数据页送入译码器译码,获得访问请求的数据页,进入步骤S15;
S15判断读缓存是否已满,若读缓存未满,将访问请求的数据页写入缓存,若读缓存已满,将访问请求的数据页与读缓存中的数据页和/或纠错码进行替换,并将替换出来的数据页和/或纠错码丢弃,转到步骤S16;
S16返回读请求结果。
8.一种固态盘系统,所述固态盘系统中包括缓存模块和闪存模块,其特征在于,所述缓存模块包括读缓存模块和写缓存模块以及映射表缓存模块,其中,
所述读缓存模块包括,
数据页缓存模块,用于存储完整的数据页;
纠错码页缓存模块,用于存储纠错码页;
纠错码单元缓存模块,用于存储单个的纠错码单元;
所述写缓存模块包括,
数据缓存模块,用于存储完整的数据页;
映射缓存模块,用于存储地址映射表;
所述闪存模块包括,
数据模块,用于存储完整的数据页;
纠错码模块,用于集中存储过长纠错码单元,其中逻辑数据页对应的纠错码长度大于备用区用于存放纠错码的空间大小的纠错码称为一个逻辑数据页的过长纠错码;
映射模块,用于存放地址映射表,记录逻辑数据页到闪存数据页和纠错码页的映射关系;
以此方式,使得在读和/或写访问操作时通过访问数据页缓存区中的完整逻辑数据页、纠错码缓存区中的过长纠错码或纠错码页中的过长纠错码而命中访问请求的用户数据页或过长纠错码,以及对闪存中的纠错码页进行批量更新,从而提升访问命中率,降低闪存的访问开销。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710387756.XA CN107221351B (zh) | 2017-05-27 | 2017-05-27 | 一种固态盘系统中纠错码的优化处理方法及其应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710387756.XA CN107221351B (zh) | 2017-05-27 | 2017-05-27 | 一种固态盘系统中纠错码的优化处理方法及其应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107221351A CN107221351A (zh) | 2017-09-29 |
CN107221351B true CN107221351B (zh) | 2020-06-02 |
Family
ID=59947716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710387756.XA Active CN107221351B (zh) | 2017-05-27 | 2017-05-27 | 一种固态盘系统中纠错码的优化处理方法及其应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107221351B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108132893A (zh) * | 2017-12-06 | 2018-06-08 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持流水的常量Cache |
US10644727B2 (en) * | 2018-01-11 | 2020-05-05 | Western Digital Technologies, Inc. | Code rate switching mechanism for flash memory |
CN110660422A (zh) * | 2018-06-29 | 2020-01-07 | 上海磁宇信息科技有限公司 | 一种配合纠错磁性随机存储器使用的缓存系统 |
CN108984432B (zh) * | 2018-07-16 | 2020-08-14 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN109753480A (zh) * | 2018-12-28 | 2019-05-14 | 上海新储集成电路有限公司 | 一种片上系统及其数据读写处理方法 |
CN116932424B (zh) * | 2023-09-14 | 2023-12-15 | 上海芯联芯智能科技有限公司 | 一种基于ecc检测的缓存访问方法、装置、介质和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102696010A (zh) * | 2009-09-08 | 2012-09-26 | 弗森-艾奥公司 | 用于将数据高速缓存在固态存储设备上的装置、系统和方法 |
CN103902474A (zh) * | 2014-04-11 | 2014-07-02 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
CN105550127A (zh) * | 2015-12-08 | 2016-05-04 | 中电海康集团有限公司 | 一种基于stt-mram的读写缓存分离的ssd控制器 |
CN105930282A (zh) * | 2016-04-14 | 2016-09-07 | 北京时代民芯科技有限公司 | 一种用于nand flash的数据缓存方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715445B2 (en) * | 2013-03-14 | 2017-07-25 | Sandisk Technologies Llc | File differentiation based on data block identification |
US9779021B2 (en) * | 2014-12-19 | 2017-10-03 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
-
2017
- 2017-05-27 CN CN201710387756.XA patent/CN107221351B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102696010A (zh) * | 2009-09-08 | 2012-09-26 | 弗森-艾奥公司 | 用于将数据高速缓存在固态存储设备上的装置、系统和方法 |
CN103902474A (zh) * | 2014-04-11 | 2014-07-02 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
CN105550127A (zh) * | 2015-12-08 | 2016-05-04 | 中电海康集团有限公司 | 一种基于stt-mram的读写缓存分离的ssd控制器 |
CN105930282A (zh) * | 2016-04-14 | 2016-09-07 | 北京时代民芯科技有限公司 | 一种用于nand flash的数据缓存方法 |
Non-Patent Citations (2)
Title |
---|
《Application Optimized Adaptive ECC with Advanced LDPCs to Resolve Trade-off among Reliability,Performance, and Cost of Solid-State Drives》;Yusuke Yamaga 等;《2016 IEEE 8th International Memory Workshop (IMW)》;20160623;全文 * |
《基于NAND闪存的固态盘关键技术研究》;杜晨杰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170415;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107221351A (zh) | 2017-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107221351B (zh) | 一种固态盘系统中纠错码的优化处理方法及其应用 | |
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
CN104794070B (zh) | 基于动态非覆盖raid技术的固态闪存写缓存系统及方法 | |
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
CN103049222B (zh) | 一种raid5的写io优化处理方法 | |
CN102012867B (zh) | 资料储存系统 | |
US7856528B1 (en) | Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system | |
CN107153707B (zh) | 一种针对非易失内存的哈希表构建方法及系统 | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
CN103631536B (zh) | 一种利用ssd的无效数据优化raid5/6写性能的方法 | |
US20140122774A1 (en) | Method for Managing Data of Solid State Storage with Data Attributes | |
CN103488583A (zh) | 一种高性能高可靠的固态盘实现方法 | |
CN108958656B (zh) | 基于raid5固态硬盘阵列的动态条带系统设计方法 | |
US9268705B2 (en) | Data storage device and method of managing a cache in a data storage device | |
WO2014015828A1 (zh) | 数据存储空间的处理方法、处理系统及数据存储服务器 | |
US20220083273A1 (en) | Memory system | |
KR20190087499A (ko) | 태그 매칭 명령에 응답하는 저장회로 | |
CN109213693B (zh) | 存储管理方法、存储系统和计算机程序产品 | |
CN109710541B (zh) | 针对NAND Flash主控芯片Greedy垃圾回收的优化方法 | |
CN108121670B (zh) | 一种减少固态硬盘元数据回刷频率的映射方法 | |
KR20110093035A (ko) | 플래시 주소 변환 장치 및 그 방법 | |
CN109918316B (zh) | 一种减少ftl地址映射空间的方法及其系统 | |
CN105005510B (zh) | 应用于固态硬盘阻变存储器缓存的纠错保护架构及方法 | |
CN106445740A (zh) | 固态硬盘中nand闪存数据的控制方法及控制系统 | |
CN111580754B (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 |