一种SSD中块转换层的实现方法与流程

文档序号:16531678发布日期:2019-01-05 10:48阅读:296来源:国知局
一种SSD中块转换层的实现方法与流程

本发明涉及ssd相关技术领域,尤其是指一种ssd中块转换层的实现方法。



背景技术:

现有ssd(solidstatedisk)控制器中广泛使用一种称为flash传输层(ftl)的计数来解决逻辑lba号与实际物理地址的对应关系,引入ftl的原因就是nandflash出错会导致实际地址变化的情况。但是ftl基于的粒度是lba的粒度进行管理,常见的为512byte或者4kbyte。但是该管理粒度与实际nandflash出错的管理粒度并不一致。

在实际nandflash使用的时候,按照物理块为单位擦除,在多plane操作的时候,多个块一起擦除,但是擦除之后的状态是各plane分离的。由于坏块的存在,需要在ssd控制器处理的时候考虑坏块的影响,从而导致ssd的各处理流程都比较复杂。



技术实现要素:

本发明是为了克服现有技术中存在上述的不足,提供了一种简化ssd的ssd中块转换层的实现方法。

为了实现上述目的,本发明采用以下技术方案:

一种ssd中块转换层的实现方法,具体包括如下步骤:

(1)建立初始的坏块信息表bbit;

(2)建立块转换层btl,块转换层btl表是一个逻辑block到物理block的转换表,其中逻辑block的地址生成包括若干类型,物理block的替换方式包括若干类型。

块转换层btl用于将传统方案可见的物理block(或者物理block的group)转换为逻辑的block——lrb,该逻辑block可以是单个的物理block,或者多个物理block。相比于传统的物理block(或物理block的group),转换后的逻辑blocklrb没有坏块的影响,即所有的坏块都被转换层替换或者屏蔽。块转换层btl建立过程是指建立逻辑块和物理块的映射过程。当nandflash制造完成后会有一定比例的原厂坏块,同时,在flash的使用过程中,由于擦除、编程等多种原因,可能产生新的坏块。这些信息需要维护在坏块信息表(bbit)中,块转换层btl需要根据bbit建立映射关系。块转换层btl表建立之后,控制器的其他引擎在查询block的信息的时候,直接向块转换层btl申请,块转换层btl将屏蔽掉坏块信息的block信息送到各流程,这样其他流程不用处理有坏块的异常情况,引入块转换层(btl)简化了ssd的设计。

作为优选,在步骤(2)中,块转换层btl表是一个逻辑block到物理block的转换表,该表项的条目数由需要支持替换的数目决定,最大值为lrbxchxdiexpl个;其中:逻辑block的地址生成包括三种类型,分别是lrbxchxdiexpl、lrbxch、lrbxchxdie。

作为优选,块转换层btl表的内容提供了需要替换的物理block的信息,物理block的替换方式包括五种类型,分别为chxdiexblk、chxdiexplxblk、blk、chxblk、plxblk。

作为优选,作为替换关系的一个特例,引入一个替换为无效的条目,此条目用于表征该逻辑block没有可以替换为好的block,即不能替换,或者替换之后仍为无效块。

作为优选,在步骤(2)中,当逻辑block的地址生成类型为lrbxchxdiexpl,物理block的替换方式类型为blk时,这种块转换层btl得到的逻辑块lrb中,所有的坏块只能选用当前pl的冗余块进行替换,替换的时候单个pl进行替换。

作为优选,在步骤(2)中,当逻辑block的地址生成类型为lrbxchxdie,物理block的替换方式类型为chxdiexblk时,这种块转换层btl得到的逻辑块lrb中,所有的坏块通过不同的通道不同的die的多个pl进行替换,替换的时候可以同时对多个pl进行替换。

作为优选,在步骤(2)中,当逻辑block的地址生成类型为lrbxchxdie,物理block的替换方式类型为blk时,这种块转换层btl得到的逻辑块lrb中,每一个逻辑block替换成新的block,通过设置无效block的方式将不同的ch绑定到不同的逻辑block中。

本发明的有益效果是:块转换层btl表建立之后,控制器的其他引擎在查询block的信息的时候,直接向块转换层btl申请,块转换层btl将屏蔽掉坏块信息的block信息送到各流程,这样其他流程不用处理有坏块的异常情况,引入块转换层(btl)简化了ssd的设计。

附图说明

图1是ssd磁盘的结构示意图;

图2是块转换层btl表的结构示意图;

图3是无效条目的结构示意图;

图4、图5、图6是本发明不同替换方式的示意图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的描述。

如图1所述的实施例中,一种ssd中块转换层的实现方法,具体包括如下步骤:

(1)建立初始的坏块信息表bbit;

(2)建立块转换层btl,块转换层btl表是一个逻辑block到物理block的转换表,其中逻辑block的地址生成包括若干类型,物理block的替换方式包括若干类型。

块转换层btl表是一个逻辑block到物理block的转换表,该表项的条目数由需要支持替换的数目决定,最大值为lrbxchxdiexpl个,比如:需要支持1024个逻辑块lrb,每个lrb由16个ch,4个die,2个pl构成,那么btl的条目数为1024x16x4x2;在实际工程中为了简化设计,可以采用所有pl(或die)一起替换,那么相应条目数可以减少。

如图2所示,逻辑block的地址生成包括三种类型,分别是lrbxchxdiexpl、lrbxch、lrbxchxdie。btl表的内容提供了需要替换的物理block的信息,物理block的替换方式包括五种类型,分别为chxdiexblk、chxdiexplxblk、blk、chxblk、plxblk。btl表的内容提供了需要替换的物理block的信息,我们可以约束这种替换只能在同一个pl内部进行,还是可以在任意ch/die/pl上进行替换。这种替换关系对控制器的带宽波动和性能以及复杂度都会由比较大的影响。

作为替换关系的一个特例,引入一个替换为无效的条目,如图3所示,此条目用于表征该逻辑block没有可以替换为好的block,即不能替换,或者替换之后仍为无效块。

如图4所示,当逻辑block的地址生成类型为lrbxchxdiexpl,物理block的替换方式类型为blk时,这种块转换层btl得到的逻辑块lrb中,所有的坏块只能选用当前pl的冗余块进行替换,替换的时候单个pl进行替换。图中,lrb2的内部在ch0die1pl1上的物理block2出现了错误,我们使用同一个pl下的物理block1026进行替换。由于替换只在同一个pl内部发生,这种方案具有如下特点:替换之后的block同样可以多pl并发,所以写带宽较高。但是由于约束了替换关系,当当前pl的坏块较多,也不能用其他pl的有效块进行替换,导致实际使用的容量变小,影响op大小。

如图5所示,当逻辑block的地址生成类型为lrbxchxdie,物理block的替换方式类型为chxdiexblk时,这种块转换层btl得到的逻辑块lrb中,所有的坏块通过不同的通道不同的die的多个pl进行替换,替换的时候可以同时对多个pl进行替换。图中,lrb3的内部在ch0die1pl1上的物理block2出现了错误,我们使用ch1die0block1026将pl0和pl1同时进行替换。由于替换可以在不同die之间发生,这种方案具有如下特点:替换之后的block同样可以多pl并发,所以写带宽较高。且我们没有约束替换在同一个pl内部,所以当当前pl的坏块较多时,可以用其他plane的有效块进行替换,可以最大限度使用冗余的块资源。

如图6所示,当逻辑block的地址生成类型为lrbxchxdie,物理block的替换方式类型为blk时,这种块转换层btl得到的逻辑块lrb中,每一个逻辑block替换成新的block,通过设置无效block的方式将不同的ch绑定到不同的逻辑block中。对应的块转换层btl表项内容如下:

在这种情况下‘ffff’用以标记该block无效。在本例中ch0~3隶属lrba;而ch4~7隶属lrbb。从而实现了不同的ch划分到不同的逻辑块lrb。

块转换层用于将传统方案可见的物理block(或者物理block的group)转换为逻辑的block——lrb,该逻辑block可以是单个的物理block,或者多个物理block。相比于传统的物理block(或物理block的group),转换后的逻辑blocklrb没有坏块的影响,即所有的坏块都被转换层替换或者屏蔽。块转换层btl建立过程是指建立逻辑块和物理块的映射过程。当nandflash制造完成后会有一定比例的原厂坏块,同时,在flash的使用过程中,由于擦除、编程等多种原因,可能产生新的坏块。这些信息需要维护在坏块信息表(bbit)中,块转换层btl需要根据bbit建立映射关系。块转换层btl表建立之后,控制器的其他引擎在查询block的信息的时候,直接向块转换层btl申请,块转换层btl将屏蔽掉坏块信息的block信息送到各流程,这样其他流程不用处理有坏块的异常情况,通过引入块转换层(btl)简化了ssd的设计。通过块转换层btl表格的设计,实现不同逻辑block的划分和坏块替换方式,用以支持不同的绑定关系,从而得到不同的带宽、raid能力等特性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1