本发明属于航天飞行器电子系统、星载固态存储器、航空、航天电子数据处理、存储与传输
技术领域:
:,具体涉及一种基于星载固态存储系统自适应闪存转换层的映射方法。
背景技术:
::目前,航天器上主流的存储介质为nand型flash。其具有如下突出的优点:数据非易失性,掉电数据不丢失;功耗小,不加电也可以长期保持数据;寿命长,擦写次数可达10万次;密度大,单芯片就能达1gb以上,单个叠装模块容量8gb以上。正是由于这些优点,nand型flash被广泛应用到星载固态存储系统中。星载固态存储系统包括主机、闪存转换层和flash芯片;其中,闪存转换层位于主机和flash芯片之间,作为中间软件层。星载固态存储系统采用nand型flash作为主存储器介质,现场可编程逻辑阵列(fieldprogrammablegatearray,fpga)作为flash控制器,并配备中央处理器(centralprocessingunit,cpu)作为主控cpu单元负责地址管理和系统维护。闪存转换层(flashtranslationlayer,ftl)作为中间软件层,位于主控cpu单元中,完成地址映射、垃圾回收和负载均衡等功能。地址映射将主控cpu单元中应用的逻辑地址转换为flash芯片中的物理地址。垃圾回收为当收到数据写入请求时,ftl寻找一个空页用于写入数据,若不存在空页或空余页余量不足,将会触发垃圾回收并选择一个完整的块作为回收对象。垃圾回收通过擦除过时的数据块来释放存储空间。负载均衡是在flash芯片的使用过程中,使其内部块的磨损程度尽可能均衡。页级ftl、块级ftl和页块混合级ftl是目前ftl设计中三种主要映射方案。页级ftl以页为单位将一个逻辑地址映射到一个物理地址,其优点为转换效率高,但存储在ram中的地址映射表较大。块级ftl以块为单位进行逻辑地址到物理地址的映射,其基本思想是逻辑块中的逻辑页偏移量与物理块中物理页的偏移量相同。相比之下,块级ftl的映射表要比页级ftl映射表小得多,但块级ftl的转换效率较低。页块混合级ftl使用块级映射技术来获得相应的物理块地址,使用页级映射技术来定位可用的物理页,页块混合级ftl在较长时间的极限工况下表现出较好的地址转换效率。目前,现有技术大多针对商用固态存储系统的ftl算法,基于商用固态存储系统设计的flt算法管理复杂、处理器性能要求高、接口速率存在瓶颈,不适用于航天任务。此外,现有技术中的星载ftl算法大多采用页级地址映射方式和固定分区的文件管理模式,存在着主机占用率高、系统响应时间长以及没有充分考虑flash芯片的磨损均衡等问题。技术实现要素:本发明的目的在于,为解决现的闪存转换层算法存在上述缺陷,本发明提出了一种基于星载固态存储系统自适应闪存转换层的映射方法,具体涉及一种数据驱动的自适应超级块闪存转换层算法(dasftl)。该算法采用自适应超级块的分级地址映射方案,其中超级块映射表(superblockmappingtable,smt)作为一级映射,页地址映射表(pagemappingtable,pmt)作为二级映射,以提高系统的响应速度;将超级块作为flash地址管理的最小单元,以减少星载固态存储系统对主机的依赖;引入动态块回收权重wrecy作为超级块分组和目标回收块选择的标准,以均衡flash芯片内各物理块的磨损程度,延长其使用寿命。为了实现上述目的,本发明提出了一种基于星载固态存储系统自适应闪存转换层的映射方法,该方法包括:主控cpu单元根据中断类型发出对应的请求;所述中断类型包括:写地址请求和回放地址请求;当请求为写地址请求或回放地址请求时,判断空页余量是否满足当前写地址请求或回放地址请求的要求;如果空页余量满足一个超级块地址的余量要求,则主控cpu单元检索超级块映射表smt,对应地检索出要分配给写地址请求或回放地址请求的超级块号sbn,完成一级映射;根据检索出的超级块号sbn,检索到相应的超级块;利用主控cpu单元依次检索页映射表pmt和块分配表bat,进行二级映射,获得物理页码ppn和物理块号pbn;将得到的物理块号pbn对应实际flash芯片中的物理块地址;将物理页码ppn对应实际flash芯片中的物理页地址;将得到的实际flash芯片中的物理块地址和物理页地址输入至存储控制单元,存储控制单元根据得到的实际flash芯片中的物理块地址和物理页地址,寻找到flash阵列中相应的物理地址进行数据的写/回放;如果空页余量不满足一个超级块地址的余量要求,则生成垃圾回收请求,并将该垃圾回收请求返回至主控cpu单元,供其发送。作为上述技术方案的改进之一,所述方法还包括:主控cpu单元还发出垃圾回收请求,主控cpu单元检索超级块映射表smt,并通过检索超级块映射表smt,对应地检索出要分配给垃圾回收请求的超级块号,并根据该超级块号,获得该超级块号的块回收权重,如果该超级块号的块回收权重是所有超级块中的块回收权重的最大值,则将该超级块内的所有通过物理块号pbn索引的物理块地址对应的物理块进行垃圾回收;垃圾回收结束后,更新超级块映射表smt和超级块中的块回收权重wrecy。作为上述技术方案的改进之一,所述超级块映射表smt为一级映射表,由超级块号sbn进行索引,每个超级块映射表项包括:页映射表索引pmti、逻辑块号lbn和块回收权重wrecy;页映射表pmt和块分配表bat共同组成二级映射表;其中,页映射表pmt包括s个页映射表子表pmst,并由页映射表索引pmti进行索引;根据页映射表索引pmti,检索页映射表pmt,得到相应的物理页码ppn和页热度hpage;块分配表bat包括flash阵列中所有的物理块地址,并由逻辑块号lbn进行索引;存储控制单元,用于根据闪存转换层输出的物理块地址和物理页地址,寻找到flash阵列中实际的物理地址,并完成写/回放/擦除操作;flash阵列包括多个flash芯片,其中,每个flash芯片包括:多个物理块。作为上述技术方案的改进之一,所述块回收权重wrecy的获取,具体为:根据公式(5),计算块平均热度其中,hpage为数据页热度;再根据公式(6),计算块回收权重wrec:其中,nearse为物理块擦除次数;p为权值系数,取值范围为[0,1];nthre为块擦除次数阈值;hmax为目标块最大热度。作为上述技术方案的改进之一,所述页映射表子表pmst的个数s的获取,具体为:根据oob区的大小和逻辑块数,确定页映射子表的个数s;假设α为flash芯片中每个物理块中的物理页数,每个oob区存储m(0<m≤α)个页映射条目,则每个超级块所含有的页地址映射项为m×α个,则s通过如下公式(1)获得:其中,k为每个超级块中所拥有的逻辑块数,的默认值为300。作为上述技术方案的改进之一,所述根据页映射表索引pmti,检索页映射表pmt,得到相应的物理页码ppn和页热度hpage;具体为:具体地,页地址映射表pmt包括s个页映射子表(pmst1、pmst2、…、pmsts),通过页映射表索引pmti进行索引,获得页映射子表(pmst1、pmst2、…、pmsts);每个页映射子表的内容包括:物理页码ppn和页热度hpage;逻辑块号lbn和页地址映射表偏移量pmtoffset的计算公式为:lbn=lpn÷α,(2)pmtoffset=α×sbo lpn%α.(3)其中,lbn为逻辑块号;lpn为逻辑页号;α为每个物理块中的物理页数;sbo为超级块偏移量;pmtoffset为页地址映射表偏移量;逻辑块号lbn通过逻辑页号lpn除以物理页数α计算得到;再查找超级块映射表smt,得到该逻辑块所在的超级块号sbn和对应的超级块偏移量sbo;利用公式(2)和(3),计算得到该逻辑页号lpn在所对应的页地址映射表pmt的页地址映射表偏移量pmtoffset;再根据得到的pmtoffset,查找页地址映射表pmt,获得每个页映射子表的物理页码ppn和页热度hpage;其中,页热度hpage的获取如下:其中,f为一段时间内回放次数,fk 1-fk为第k次及第k 1次触发垃圾回收时该页的回放次数;页回放次数越多则该页的热度越大。本发明还提供了一种基于星载固态存储系统自适应闪存转换层的映射系统,该系统包括:发送模块,用于主控cpu单元根据中断类型发出对应的请求;所述中断类型包括:写地址请求和回放地址请求;判断模块,用于根据发送模块发送的请求,判断空页余量是否满足当前写地址请求或回放地址请求的要求;映射模块,用于根据判断结果,对写地址请求或回放地址请求进行一级映射和二级映射。作为上述技术方案的改进之一,所述映射模块具体包括:如果空页余量满足一个超级块地址的余量要求,则主控cpu单元检索超级块映射表smt,对应地检索出要分配给写地址请求或回放地址请求的超级块号sbn,完成一级映射;根据检索出的超级块号sbn,检索到相应的超级块;利用主控cpu单元依次检索页映射表pmt和块分配表bat,进行二级映射,获得物理页码ppn和物理块号pbn;将得到的物理块号pbn对应实际flash芯片中的物理块地址;将物理页码ppn对应实际flash芯片中的物理页地址;将得到的实际flash芯片中的物理块地址和物理页地址输入至存储控制单元,存储控制单元根据得到的实际flash芯片中的物理块地址和物理页地址,寻找到flash阵列中相应的物理地址进行数据的写/回放;如果空页余量不满足一个超级块地址的余量要求,则生成垃圾回收请求,并将该垃圾回收请求返回至主控cpu单元,供其发送。作为上述技术方案的改进之一,所述系统还包括:垃圾回收模块,用于根据检索到的块回收权重,进行垃圾回收。作为上述技术方案的改进之一,所述垃圾回收模块具体包括:主控cpu单元还发出垃圾回收请求,主控cpu单元检索超级块映射表smt,并通过检索超级块映射表smt,对应地检索出要分配给垃圾回收请求的超级块号,并根据该超级块号,获得该超级块号的块回收权重,如果该超级块号的块回收权重是所有超级块中的块回收权重的最大值,则将该超级块内的所有通过物理块号pbn索引的物理块地址对应的物理块进行垃圾回收;垃圾回收结束后,更新超级块映射表smt和超级块中的块回收权重wrecy。本发明与现有技术相比的有益效果是:本发明综合了基于超级块的ftl算法和数据驱动的动态自适应算法,在系统响应时间、主机占用率以及flash芯片磨损均衡上都取得了很好的效果。首先,基于超级块的ftl算法相比于页级ftl算法和块级ftl算法在系统响应时间和主机占用率上有着很大的优势,但基于超级块的flt算法存在着颗粒度过高,组合模式不灵活以及物理块磨损过快等问题。数据驱动的动态自适应算法可以在系统运行过程中实时更新每一块的权重,有效提升基于超级块的ftl算法的灵活度以及解决物理块磨损过快的问题,能够有效弥补基于超级块ftl算法存在的缺陷。1.系统响应时间短本发明由于在dasftl算法中采用分级地址映射策略,其中超级块映射表smt为一级映射,页地址映射表和块分配表为二级映射。在系统收到地址请求时,可以通过在两个较小映射表检索获得地址,避免在一个过大的映射表中进行检索,缩短系统的响应时间。此外,由于采用分级地址映射策略,两级映射表可以形成两级流水线模式,交替进行检索,进一步加快系统的响应时间。2.主机占用率低本发明由于在dasftl算法中采用基于超级块的地址管理策略,当主机响应地址请求时,会一次将整个超级块下发给存储控制单元,供存储控制单元完成相应的地址操作。其中,每个超级块是由多个不一定连续的逻辑块组合而成。相比于现有技术,主机完成一次地址响应相当于完成了多次地址发放操作,有效减少存储控制单元向主机请求地址的次数,降低主机占用率。3.flash芯片磨损均衡性能好本发明由于在dasftl算法中引入块回收权重wrecy,在系统的运行过程中,超级块不是由多个连续的逻辑块简单组合而成,而是根据实际系统中数据的运行特点组合而成,即将具有相同块回收权重wrecy的逻辑块组合成一个超级块。此外,每完成一次地址请求操作,超级块会实时更新当前块的块回收权重。当系统触发垃圾回收时,将优先回收块回收权重wrecy最大的超级块。这会使得各物理块的回收次数趋于均衡,降低flash芯片的磨损程度,延长flash芯片的使用寿命。附图说明图1是本发明的一种基于星载固态存储系统自适应闪存转换层的映射方法的流程图;图2是本发明的一种基于星载固态存储系统自适应闪存转换层的映射方法的地址映射流程图。具体实施方式现结合附图对本发明作进一步的描述。本发明提供了一种基于星载固态存储系统自适应闪存转换层的映射方法,具体涉及了基于数据驱动的自适应超级块闪存转换层算法(data-drivenadaptivesuperblockftl,dasftl),以提高系统响应速度,降低主机占用率以及避免部分物理块过早磨损,提升flash芯片的使用寿命。如图1所示,该方法包括:主控cpu单元根据中断类型发出对应的请求;所述中断类型包括:写地址请求和回放地址请求;当请求为写地址请求或回放地址请求时,判断空页余量是否满足当前写地址请求或回放地址请求的要求;如果空页余量满足一个超级块地址的余量要求,则主控cpu单元检索超级块映射表smt,并通过检索超级块映射表smt,对应地检索出要分配给写地址请求或回放地址请求的超级块号sbn(superblocknumber,sbn),完成一级映射;根据检索出的超级块号sbn,检索到相应的超级块;根据检索到的超级块,利用主控cpu单元依次检索页映射表pmt和块分配表bat(blockassignmenttable,bat),并进行二级映射,获得物理页码ppn和物理块号pbn;将得到的物理块号pbn对应实际flash芯片中的物理块地址;将物理页码ppn对应实际flash芯片中的物理页地址;将得到的实际flash芯片中的物理块地址和物理页地址输入至存储控制单元,存储控制单元根据得到的实际flash芯片中的物理块地址和物理页地址,寻找到flash阵列中相应的物理地址进行数据的写/回放(写或回放),完成一次写地址请求或回放地址请求的响应;其中,如图1所示,超级块映射表smt为一级映射表,由超级块号sbn进行索引,每个超级块映射表项包括:页映射表索引pmti、逻辑块号lbn和块回收权重wrecy。页映射表pmt和块分配表bat共同组成二级映射表;其中,页映射表pmt包括s个页映射表子表pmst,并由页映射表索引pmti进行索引;块分配表bat包括flash阵列中所有的物理块地址,并由逻辑块号lbn进行索引。存储控制单元,用于根据闪存转换层输出的物理块地址和物理页地址,寻找到flash阵列中实际的物理地址,并完成写/回放/擦除(写或回访或擦除)操作。flash阵列包括多个flash芯片,其中,每个flash芯片包括:多个物理块block。如果空页余量不满足一个超级块地址的余量要求,则生成垃圾回收请求,并将该垃圾回收请求返回至主控cpu单元,供其发送。其中,根据带外数据(outofband,oob区)的大小和逻辑块数,确定页映射子表的个数s;假设α为flash芯片中每个物理块中的物理页数,每个oob区存储m(0<m≤α)个页映射条目,则每个超级块所含有的页地址映射项为m×α个,则s通过如下公式获得;其中,k为每个超级块中所拥有的逻辑块数;k的取值范围从0到存储系统中所有有效物理块的个数。这k个逻辑块可以是连续的逻辑块也可以是不连续的。根据块回收权重wrecy,确定一个超级块中逻辑块的个数,具体地,具有相同wrecy值的逻辑块组成一个超级块,k的默认值为300。根据页映射表索引pmti,检索页映射表pmt,得到相应的物理页码ppn和页热度hpage;具体地,页地址映射表pmt包括s个页映射子表(pmst1、pmst2、…、pmsts),通过页映射表索引pmti进行索引,获得页映射子表(pmst1、pmst2、…、pmsts);每个页映射子表的内容包括:物理页码ppn和页热度hpage;逻辑块号lbn和页地址映射表偏移量pmtoffset的计算公式为:lbn=lpn÷α,(2)pmtoffset=α×sbo lpn%α.(3)其中,lbn为逻辑块号;lpn为逻辑页号;α为每个物理块中的物理页数;sbo为超级块偏移量;pmtoffset为页地址映射表偏移量;每个flash芯片的物理块中含有的物理页数α是固定的,因此,逻辑块号lbn可以由逻辑页号lpn除以物理页数α计算得到;再查找超级块映射表smt,得到该逻辑块所在的超级块号sbn和对应的超级块偏移量sbo;利用公式(2)和(3),计算得到该逻辑页号lpn在所对应的页地址映射表pmt的页地址映射表偏移量pmtoffset;再根据得到的pmtoffset,查找页地址映射表pmt,获得每个页映射子表的物理页码ppn和页热度hpage;其中,页热度hpage的获取如下:其中,f为一段时间内回放次数,fk 1-fk为第k次及第k 1次触发垃圾回收时该页的回放次数;页回放次数越多则该页的热度越大。根据逻辑块号lbn,检索块分配表bat,得到物理块号pbn。所述方法还包括:主控cpu单元还发出垃圾回收请求,主控cpu单元检索超级块映射表smt,并通过检索超级块映射表smt,对应地检索出要分配给垃圾回收请求的超级块号,并根据该超级块号,获得该超级块号的块回收权重,如果该超级块号的块回收权重是所有超级块中的块回收权重的最大值,则将该超级块内的所有通过物理块号pbn索引的物理块地址对应的物理块进行垃圾回收;垃圾回收结束后,更新超级块映射表smt和超级块中的块回收权重wrecy,则完成一次垃圾回收请求的响应。如图2所示,为dasftl算法地址映射流程图。超级块映射表smt和页地址映射表pmt组成两级映射,其中,通过超级块映射表smt,实现一级映射;通过页地址映射表pmt和块分配表bat,实现二级映射。超级块映射表smt通过超级块号sbn进行索引,每个超级映射表项由逻辑块号lbn、页映射表索引pmti和块回收权重wrecy组成。在dasftl中,超级块不是由几个连续的逻辑块简单组合而成,而是将具有相同块回收权重wrecy的逻辑块进行组合而成。其中,块回收权重wrecy是根据flash芯片中物理块的使用热度进行计算得到。页映射表pmt由s个页映射表子表pmst组成,并由页映射表索引pmti进行索引。块分配表bat由flash阵列中所有的物理块地址组成,并由逻辑块号lbn进行索引。其中,页映射子表pmst存储着一个物理块中所有物理页的信息,页映射子表中的每一项对应着该物理页的物理页号ppn和页热度hpage。每个flash芯片由data区和oob区两部分组成,data区存储着外部输入的数据,oob区存储着页映射子表pmst。在dasftl中,为兼顾存储系统的性能和使用寿命,引入数据页热度hpage和物理块擦除次数nearse,作为目标擦除块的选择因素;将页热度hpage代入式(5)可得块平均热度将和nearse代入式(6)可得块回收权重wrecy:其中,p为权值系数,取值范围为[0,1];nthre为块擦除次数阈值;hmax为目标块最大热度。当p为0时,块回收权重只考虑当前物理块的平均热度。随着p不断增大,块平均热度对块回收权重的影响越来越低,块擦除次数nearse对块回收权重的影响越来越大。当p为1时,块回收权重只与块擦除次数nearse有关。存储系统在工作中,权值系数p可以随着系统当前的工作状况进行变化。为平衡存储系统的读写性能和flash芯片的使用寿命,默认设置p为0.5。在dasftl中,块回收权重wrecy将作为超级块组成单位的度量单位。存储系统初次使用时,每个逻辑块的初始块回收权重都为0。随着存储系统的运行,超级块映射表smt会计算并保存每个逻辑块的块回收权重。块回收权重wrecy相同的逻辑块将被组合成为一个超级块,即使这些逻辑块所对应的物理块地址是离散的。当超级块映射表smt中没有足够的空闲块来响应写操作时将触发垃圾回收。与响应写操作相同,主控cpu单元在响应垃圾回收操作时,将块回收权重最大的整个超级块输入至存储控制单元。存储控制单元会按照顺序依次回收超级块内的逻辑块。在完成一次回收之后,会更新超级块映射表smt和块回收权重,则更新后的超级块映射表smt中会生成新的映射索引。在超级块内部采用页级映射,超级块中每一个页地址映射表项都可以映射至其对应的实际物理页上;页地址映射表pmt包括s个页映射子表(pmst1、pmst2、…、pmsts),通过页映射表索引pmti进行索引获得页映射子表(pmst1、pmst2、…、pmsts);在dasftl中,每个页映射子表pmsts都将在flash写操作过程中,写入到最新分配的物理页oob区。在逻辑页号lpn转换为实际flash芯片的物理页地址的过程中,可以通过读取页映射表索引pmti所指示物理页的oob区来直接获得pmsts。这种分级映射方式是通过维护两个短的映射链表来实现地址转换,避免了维护一个很长的地址链表所造成的搜索时间长和ram占用率高等缺点,从而提高星载固态存储系统的响应速度并减少主机的占用,适用于ram空间有限和实时性强的嵌入式系统。星载固态存储系统主要工作在连续回放/写(回放或写)模式下。现有技术大都采用页级ftl映射方案,其中每次回放/写操作都需向主机请求地址,当存储系统连续写入数据时会造成存储系统大量占用主机资源,并且随着读写请求的不断累积系统响应时间将会变长。为此,dasftl将超级块作为回放/写(回放或写)操作的最小单位,当存储控制单元接收到存入flash芯片中的数据,并向主控cpu单元产生写请求时,主控cpu单元会一次性将块回收权重wrecy最小的超级块地址分配给存储控制单元。若当前写请求将整个超级块地址都分配之后,写请求仍未完成,则向主控cpu单元请求新的超级块。若还有部分地址未分配,则该超级块的地址分配信息存储在存储控制单元中,待下次写请求继续使用。当存储系统没有足够的空闲逻辑块来响应写请求时,将会触发垃圾回收。卫星处于地面接收站的范围内时,会将存储系统内的数据下传至地面,随后数据就会被标记为“冷数据”。当触发垃圾回收机制时,将优先回收冷数据块。星载存储系统中,对于冷数据的回收只执行擦除操作。现有技术的星载存储系统大都基于固定分区的文件管理策略,分区内部采用顺序回收机制。由于不同分区的数据热度和输入速率不同,会导致某些物理块的擦写次数不断攀升,直到该块的擦写次数到达上限变为无效块。因此,dasftl中,不采用分区的文件管理策略,而将所有文件进行动态管理,其中超级块作为擦除的最小单位。在超级块内部,同一分区的逻辑地址是连续的,但是其对应的物理地址不一定是连续的。本发明还提供了一种基于星载固态存储系统自适应闪存转换层的映射系统,该系统包括:发送模块,用于主控cpu单元根据中断类型发出对应的请求;所述中断类型包括:写地址请求和回放地址请求;判断模块,用于根据发送模块发送的请求,判断空页余量是否满足当前写地址请求或回放地址请求的要求;映射模块,用于根据判断结果,对写地址请求或回放地址请求进行一级映射和二级映射。所述映射模块具体包括:如果空页余量满足一个超级块地址的余量要求,则主控cpu单元检索超级块映射表smt,对应地检索出要分配给写地址请求或回放地址请求的超级块号sbn,完成一级映射;根据检索出的超级块号sbn,检索到相应的超级块;利用主控cpu单元依次检索页映射表pmt和块分配表bat,进行二级映射,获得物理页码ppn和物理块号pbn;将得到的物理块号pbn对应实际flash芯片中的物理块地址;将物理页码ppn对应实际flash芯片中的物理页地址;将得到的实际flash芯片中的物理块地址和物理页地址输入至存储控制单元,存储控制单元根据得到的实际flash芯片中的物理块地址和物理页地址,寻找到flash阵列中相应的物理地址进行数据的写/回放;如果空页余量不满足一个超级块地址的余量要求,则生成垃圾回收请求,并将该垃圾回收请求返回至主控cpu单元,供其发送。所述系统还包括:垃圾回收模块,用于根据检索到的块回收权重,进行垃圾回收。所述垃圾回收模块具体包括:主控cpu单元还发出垃圾回收请求,主控cpu单元检索超级块映射表smt,并通过检索超级块映射表smt,对应地检索出要分配给垃圾回收请求的超级块号,并根据该超级块号,获得该超级块号的块回收权重,如果该超级块号的块回收权重是所有超级块中的块回收权重的最大值,则将该超级块内的所有通过物理块号pbn索引的物理块地址对应的物理块进行垃圾回收;垃圾回收结束后,更新超级块映射表smt和超级块中的块回收权重wrecy。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种基于星载固态存储系统自适应闪存转换层的映射方法,其特征在于,该方法包括:
主控cpu单元根据中断类型发出对应的请求;
当请求为写地址请求或回放地址请求时,判断空页余量是否满足当前写地址请求或回放地址请求的要求;
如果空页余量满足一个超级块地址的余量要求,则主控cpu单元检索超级块映射表smt,对应地检索出要分配给写地址请求或回放地址请求的超级块号sbn,完成一级映射;
根据检索出的超级块号sbn,检索到相应的超级块;利用主控cpu单元依次检索页映射表pmt和块分配表bat,进行二级映射,获得物理页码ppn和物理块号pbn;
将得到的物理块号pbn对应实际flash芯片中的物理块地址;将物理页码ppn对应实际flash芯片中的物理页地址;将得到的实际flash芯片中的物理块地址和物理页地址输入至存储控制单元,存储控制单元根据得到的实际flash芯片中的物理块地址和物理页地址,寻找到flash阵列中相应的物理地址进行数据的写/回放;
如果空页余量不满足一个超级块地址的余量要求,则生成垃圾回收请求,并将该垃圾回收请求返回至主控cpu单元,供其发送。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
主控cpu单元还发出垃圾回收请求,主控cpu单元检索超级块映射表smt,并通过检索超级块映射表smt,对应地检索出要分配给垃圾回收请求的超级块号,并根据该超级块号,获得该超级块号的块回收权重,如果该超级块号的块回收权重是所有超级块中的块回收权重的最大值,则将该超级块内的所有通过物理块号pbn索引的物理块地址对应的物理块进行垃圾回收;
垃圾回收结束后,更新超级块映射表smt和超级块中的块回收权重wrecy。
3.根据权利要求1所述的方法,其特征在于,所述超级块映射表smt为一级映射表,由超级块号sbn进行索引,每个超级块映射表项包括:页映射表索引pmti、逻辑块号lbn和块回收权重wrecy;
页映射表pmt和块分配表bat共同组成二级映射表;其中,页映射表pmt包括s个页映射表子表pmst,并由页映射表索引pmti进行索引;根据页映射表索引pmti,检索页映射表pmt,得到相应的物理页码ppn和页热度hpage;块分配表bat包括flash阵列中所有的物理块地址,并由逻辑块号lbn进行索引;
存储控制单元,用于根据闪存转换层输出的物理块地址和物理页地址,寻找到flash阵列中实际的物理地址,并完成写/回放/擦除操作;
flash阵列包括多个flash芯片,其中,每个flash芯片包括:多个物理块。
4.根据权利要求3所述的方法,其特征在于,所述块回收权重wrecy的获取,具体为:
根据公式(5),计算块平均热度
其中,hpage为数据页热度;
再根据公式(6),计算块回收权重wrecy:
其中,nearse为物理块擦除次数;p为权值系数,取值范围为[0,1];nthre为块擦除次数阈值;hmax为目标块最大热度。
5.根据权利要求3所述的方法,其特征在于,所述页映射表子表pmst的个数s的获取,具体为:
根据oob区的大小和逻辑块数,确定页映射子表的个数s;
假设α为flash芯片中每个物理块中的物理页数,每个oob区存储m(0<m≤α)个页映射条目,则每个超级块所含有的页地址映射项为m×α个,则s通过如下公式(1)获得:
其中,k为每个超级块中所拥有的逻辑块数,默认值为300。
6.根据权利要求3所述的方法,其特征在于,所述根据页映射表索引pmti,检索页映射表pmt,得到相应的物理页码ppn和页热度hpage;具体为:
具体地,页地址映射表pmt包括s个页映射子表(pmst1、pmst2、…、pmsts),通过页映射表索引pmti进行索引,获得页映射子表(pmst1、pmst2、…、pmsts);每个页映射子表的内容包括:物理页码ppn和页热度hpage;
逻辑块号lbn和页地址映射表偏移量pmtoffset的计算公式为:
lbn=lpn÷α,(2)
pmtoffset=α×sbo lpn%α.(3)
其中,lbn为逻辑块号;lpn为逻辑页号;α为每个物理块中的物理页数;sbo为超级块偏移量;pmtoffset为页地址映射表偏移量;
逻辑块号lbn通过逻辑页号lpn除以物理页数α计算得到;再查找超级块映射表smt,得到该逻辑块所在的超级块号sbn和对应的超级块偏移量sbo;
利用公式(2)和(3),计算得到该逻辑页号lpn在所对应的页地址映射表pmt的页地址映射表偏移量pmtoffset;
再根据得到的pmtoffset,查找页地址映射表pmt,获得每个页映射子表的物理页码ppn和页热度hpage;
其中,页热度hpage的获取如下:
其中,f为一段时间内回放次数,fk 1-fk为第k次及第k 1次触发垃圾回收时该页的回放次数;页回放次数越多则该页的热度越大。
7.一种基于星载固态存储系统自适应闪存转换层的映射系统,其特征在于,该系统包括:
发送模块,用于主控cpu单元根据中断类型发出对应的请求;所述中断类型包括:写地址请求和回放地址请求;
判断模块,用于根据发送模块发送的请求,判断空页余量是否满足当前写地址请求或回放地址请求的要求;
映射模块,用于根据判断结果,对写地址请求或回放地址请求进行一级映射和二级映射。
8.根据权利要求7所述的系统,其特征在于,所述映射模块具体包括:
如果空页余量满足一个超级块地址的余量要求,则主控cpu单元检索超级块映射表smt,对应地检索出要分配给写地址请求或回放地址请求的超级块号sbn,完成一级映射;
根据检索出的超级块号sbn,检索到相应的超级块;利用主控cpu单元依次检索页映射表pmt和块分配表bat,进行二级映射,获得物理页码ppn和物理块号pbn;
将得到的物理块号pbn对应实际flash芯片中的物理块地址;将物理页码ppn对应实际flash芯片中的物理页地址;将得到的实际flash芯片中的物理块地址和物理页地址输入至存储控制单元,存储控制单元根据得到的实际flash芯片中的物理块地址和物理页地址,寻找到flash阵列中相应的物理地址进行数据的写/回放;
如果空页余量不满足一个超级块地址的余量要求,则生成垃圾回收请求,并将该垃圾回收请求返回至主控cpu单元,供其发送。
9.根据权利要求7所述的系统,其特征在于,所述系统还包括:
垃圾回收模块,用于根据检索到的块回收权重,进行垃圾回收。
10.根据权利要求9所述的系统,其特征在于,所述垃圾回收模块具体包括:
主控cpu单元还发出垃圾回收请求,主控cpu单元检索超级块映射表smt,并通过检索超级块映射表smt,对应地检索出要分配给垃圾回收请求的超级块号,并根据该超级块号,获得该超级块号的块回收权重,如果该超级块号的块回收权重是所有超级块中的块回收权重的最大值,则将该超级块内的所有通过物理块号pbn索引的物理块地址对应的物理块进行垃圾回收;
垃圾回收结束后,更新超级块映射表smt和超级块中的块回收权重wrecy。
技术总结本发明属于航空、航天电子数据处理、存储与传输技术领域,具体涉及一种基于星载固态存储系统自适应闪存转换层的映射方法,包括:主控CPU单元根据中断类型发出对应的请求;当请求为写地址请求或回放地址请求时,判断空页余量是否满足当前写地址请求或回放地址请求的要求;如果空页余量满足一个超级块地址的余量要求,则主控CPU单元检索超级块映射表SMT,对应地检索出要分配给写地址请求或回放地址请求的超级块号SBN,完成一级映射;根据检索出的超级块号SBN,检索到相应的超级块;利用主控CPU单元依次检索页映射表PMT和块分配表BAT,完成二级映射,获得物理页码PPN和物理块号PBN;将得到的实际FLASH芯片中的物理块地址和物理页地址输入至存储控制单元。
技术研发人员:张伟东;董振兴;朱岩;安军社
受保护的技术使用者:中国科学院国家空间科学中心
技术研发日:2020.01.17
技术公布日:2020.06.09