[0011] 优选的,在所述S2中,编码过程包括如下步骤:
[0012] S21、将2N个编码组中的前2k个编码组映射为重写组1,将参数i初始化为1;
[0013] S22、以重写组i中的最后一个编码组作为共享编码组,成为新的起点,重新获取2k个编码组,映射为重写组(i+1),将参数i加1递增后进行更新;
[0014] S23、判断(2N‑(2k ‑1)*i)< 2k是否成立,如果成立,进入S24,否则,返回S22;
[0015] S24、结束编码。
[0016] 优选的,在所述S2中,以QLC SSD驱动器为例,在k=1的情况下,分为15个重写组,分别为(0000,0001)、(0001,0010)、(0010,0011)、(0011,0100)、(0100,0101)、(0101,0110)、(0110,0111)、(0111,1000)、(1000,1001)、(1001,1010)、(1010,1011)、(1011,1100)、(1100,1101)、(1101,1110)、(1110,1111)。
[0017] 优选的,在所述S2中,以QLC SSD驱动器为例,在k=2的情况下,分为5个重写组,分别为(0000,0001,0010,0011)、(0011,0100,0101,0110)、(0110,0111,1000,1001)、(1001,1010,1011,1100)、(1100, 1101,1110,1111)。
[0018] 优选的,在所述S2中,以QLC SSD驱动器为例,在k=3的情况下,分为2个重写组,分别为(0000,0001,0010,0011,0100,0101,0110,0111),(0111,1000,1001,1010,1011,1100,1101,1110)。
[0019] 优选的,在所述S3中,分为两种写入方式: 1)在M个重写组之间进行跳跃,实现数据的写入;2)在相同重写组内进行数据转换。
[0020] 优选的,在所述S3中,通过在M个重写组之间进行跳跃实现数据写入时,以QLC SSD驱动器为例,在k=1的情况下,重写次数为15,在k=2的情况下,重写次数为5,在k=3的情况下,重写次数为2。
[0021] 本发明提出的计算机存储介质存储有计算机程序,处理器通过运行所述计算机程序能够实现上述提高SSD生命周期的方法。
[0022] 相对于现有技术,本发明具有如下有益效果:
[0023] 通过重新编码每一闪存单元的位,使得每一闪存单元在被擦除前可以重写多次,减少闪存单元的擦除次数,从而提高整个SSD的生命周期。
附图说明
[0024] 图1是本发明提高SSD生命周期的方法的流程图。
具体实施方式
[0025] 为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。
[0026] 为了更加清楚地描述系统异常重启下的缓存数据保护方法,现对本发明中高速缓存部分的存储结构进行说明:
[0027] 为了更好地描述本发明,现对N‑Level Cell SSD驱动器的存储原理进行说明。N‑Level Cell SSD驱动器的一个闪存单元可以存储N个比特位,这N个比特位对应着SSD里晶体管的16个不同水平的参考电压,其中每个参考电压表示一个N位二进制代码,以QLC SSD驱动器为例,QLC SSD的一个闪存单元可以储存4个比特位,这4个比特位对应着SSD里晶体管的16个不同水平的参考电压,其中每个参考电压表示一个4位二进制代码。闪存单元不同状态之间的任何转换都受当前参考电压水平的控制,同时必须遵循如下规则:参考电压水平可以单向增加,但只有先擦除才能降低电压水平,它不依赖于存储在闪存单元中的4比特位值的单个比特位的值。
[0028] 如图1所示,本发明提出的提高SSD生命周期的方法具体包括如下步骤:
[0029] S1、将SSD的闪存单元N比特位序列编码成2N个编码组,对应2N个参考电压,N>1,为正整数,以QLC SSD驱动器为例,将QLC驱动器的闪存单元4比特位序列编码成16个编码组,其对应QLC驱动器的16个参考电压,0000为最低参考电压,1111为最大参考电压。
[0030] S2、将编码组映射到k比特位的数据,获得M个重写组,0体地,k个比特位可以表达2个数据,例如,2个比特位可以表达4个数据:00,01,10,11,编码过程包括如下步骤:
[0031] S21、将2N个编码组中的前2k个编码组映射为重写组1,将参数i初始化为1;
[0032] S22、以重写组i中的最后一个编码组作为共享编码组,成为新的起点,重新获取2k个编码组,映射为重写组(i+1),将参数i加1递增后进行更新;
[0033] S23、判断(2N‑(2k ‑1)*i)< 2k是否成立,如果成立,进入S24,否则,返回S22;
[0034] S24、结束编码。
[0035] 设置共享编码组只是为了增加重写组的个数,以增加重写次数,以QLC SSD驱动器为例,在k=1的情况下,分为15个重写组,分别为(0000,0001)、(0001,0010)、(0010,0011)、(0011,0100)、(0100,0101)、(0101,0110)、(0110,0111)、(0111,1000)、(1000,1001)、(1001,1010)、(1010,1011)、(1011,1100)、(1100,1101)、(1101,1110)、(1110,1111),在k=2的情况下,分为5个重写组,分别为(0000,0001,0010,0011)、(0011,0100,0101,0110)、(0110,0111,1000,1001)、(1001,1010,1011,1100)、(1100, 1101,1110,1111),在k=3的情况下,分为2个重写组,分别为(0000,0001,0010,0011,0100,0101,0110,0111),(0111,1000,1001,1010,1011,1100,1101,1110)。
[0036] S3、基于M个重写组将数据写入闪存单元,每次只能写k个比特位,具体地,分为两种写入方式:
[0037] 1)在M个重写组之间进行跳跃,实现数据的写入,以QLC SSD驱动器为例,k=2的情况下,假如5次写入序列为01,10,11,01,01,对于一个新擦除的QLC驱动器的闪存单元,只需要将参考电压按序升到0001,0110,0111,1001,1101,每次写入更高的重写组,只需提升闪存单元的电压即可,在升至最大参考电压1111之前不需要擦除,此时可以对同一个闪存单元无擦除重写5次,同理可以得出,在k=1的情况下,重写次数为15,在k=3的情况下,重写次数为2。
[0038] 2)在相同重写组内进行数据转换,可以提供更多的重写次数,以QLC SSD驱动器为例,k=2的情况下,如果在3个连续的写入周期中写入数据序列01、10和11,对写入周期1到3分别进行编码并将参考电压水平更改为0001、0010和0011,第二次写入不需要参考电压跃迁到重写组2,只需要将参考电压从0001增加到0010,这两个电压都位于重写组1内,对于第三次写入同理。
[0039] 相对于现有技术,本发明具有如下有益效果:
[0040] 1)通过物理空间换取更多的逻辑空间,以QLC SSD驱动器为例,存在k=1、k=2和k=3这三种编码方案,虽然需要4倍、2倍和1.33倍的物理空间开销,但能够分别为其写入15倍、5倍和2倍数量的逻辑数据,相比无编码方案有巨大的增益,k=1时为每个物理单元提供了375%的额外空间,k=2时为每个物理单元提供了250%的额外空间,k=3时为每个物理单元提供了150%的额外逻辑空间。
[0041] 2)具有天然的闪存友好性,在本发明中,参考电压水平的增加只在一个较短的电压水平范围内,以QLC SSD驱动器为例,在k=2的情况下,参考电压可以只在5个重写组内跃迁,而不像非编码方案中,在16个参考电压内任意增加,本编码方案有着更少的电压增加频率,也即更少数量的充电电荷注入闪存单元,减少了闪存的program disturb错误。
[0042] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围。应当指出,对于本技术领域的技术人员,在不脱离本发明设计结构及原理的前提下对本发明方案所作的等同变化都视作本发明的保护范围。