一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统与流程

专利2022-05-10  79



1.本发明涉及存储技术领域,特别涉及一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统。


背景技术:

2.目前绝大多数非挥发性记忆体存储器使用闪存芯片作为存储介质。闪存芯片是一种非易失性存储器,其基本存储单元是浮栅晶体管,因电荷泄漏、氧化层老化等物理特性。数据写入闪存阵列前需要进行编码,数据从闪存阵列读出后需要进行解码。由于闪存本身的物理属性,当从闪存阵列中读取数据时会发生数据比特位翻转现象。当发生翻转的比特位数比较大时,读取的数据会出错,此时主控会启动纠错模块进行纠错。当主控的纠错模块无法纠错成功时,就需要固件进行相应的错误处理。由于主机在从非挥发性记忆体存储器中读取数据出现错误是才会报错,并且垃圾回收只是在非挥发性记忆体存储器内部运转,如果垃圾回收读出错也向主机发送错误状态,这就会对非挥发性记忆体存储器的使用寿命有很大影响。


技术实现要素:

3.鉴于上述现有技术缺陷,本发明提出一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统,通过该垃圾回收方法可以减少垃圾回收读出错时向主机发送报错信号的次数,延长该非挥发性记忆体存储器的使用寿命。
4.为实现上述目的及其他目的,本发明提出一种非挥发性记忆体存储器的垃圾回收方法,包括:
5.确定源存储块和目标存储块;
6.将所述源存储块中的有效数据转移至所述目标存储块中,并获取转移过程中的错误物理地址;
7.根据所述错误物理地址在第一映射表中获得相对应的错误逻辑地址;
8.根据所述错误逻辑地址在第二映射表中获得相对应的条目,并将所述条目中的物理地址更新为虚拟值;
9.其中,当主机向所述非挥发性记忆体存储器发送读请求时,则判断所述读请求是否命中所述虚拟值;
10.若是,则向所述主机发送报错信号;
11.若否,则继续进行所述读请求。
12.进一步地,所述第二映射表为主机逻辑地址到存储块物理地址映射表,所述第一映射表为存储块物理地址到主机逻辑地址映射表。
13.进一步地,判断所述读请求是否命中所述虚拟值的步骤包括:
14.获取所述读请求中的逻辑地址;
15.根据所述逻辑地址在所述第二映射表中获得相对应的条目;
16.判断所述条目中的所述物理地址是否为虚拟值;
17.若是,则所述读请求命中所述虚拟值;
18.若否,则所述读请求未命中所述虚拟值。
19.进一步地,当所述主机向所述非挥发性记忆体存储器发送写请求时,且所述写请求中的逻辑地址命中所述错误逻辑地址,则根据所述逻辑地址在所述第二映射表中获得相对应的所述条目,并将所述条目中的所述虚拟值更新成所述逻辑地址相对应的物理地址。
20.进一步地,获取转移过程中的错误物理地址的步骤包括:
21.确定所述源存储块的所述有效数据;
22.进行转移操作,在转移过程中将确定的所述有效数据转化成非确定的所述有效数据时,则将所述存储块的物理地址定义为所述错误物理地址。
23.进一步地,当所述源存储块中的所述有效数据全部转移至所述目标存储块之后,则擦除所述源存储块。
24.进一步地,本发明还提出一种非挥发性记忆体存储器的垃圾回收系统,包括:
25.存储块确定模块,用于确定源存储块和目标存储块;
26.错误物理地址统计模块,当将所述源存储块中的有效数据转移至所述目标存储块中时,所述错误物理地址统计模块用于获取转移过程中的错误物理地址;
27.读错误处理模块,用于根据所述错误物理地址在第一映射表中获得相对应的错误逻辑地址;以及,根据所述错误逻辑地址在第二映射表中获得相对应的条目,并将所述条目中的物理地址更新为虚拟值;
28.命令判断模块,当主机向所述非挥发性记忆体存储器发送读请求时,则判断所述读请求是否命中所述虚拟值;若是,则向所述主机发送报错信号;若否,则继续进行所述读请求。
29.进一步地,所述存储块确定模块用于从存满数据的多个存储块中确定所述源存储块,并从空闲的多个所述存储块中确定所述目标存储块。
30.进一步地,当主机向所述非挥发性记忆体存储器发送写请求时,所述命令判断模块还用于判断所述写请求中的逻辑地址是否命中所述错误逻辑地址,若是,则根据所述逻辑地址在所述第二映射表中获得相对应的所述条目,并将所述条目中的所述虚拟值更新成所述逻辑地址相对应的物理地址;若否,则继续进行所述写请求。
31.进一步地,当所述主机向所述非挥发性记忆体存储器发送读请求时,所述命令判断模块则获取所述读请求中的逻辑地址,并根据所述逻辑地址在所述第二映射表中获得相对应的条目,当所述条目中的所述物理地址为虚拟值时,则所述读请求命中所述虚拟值。
32.综上所述,本发明提出一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统,在进行垃圾回收时,首先确定出源存储块和目标存储块,然后进行垃圾回收操作,即将源存储块中的有效数据转移至目标存储块中,并获取转移过程中出现的错误物理地址;然后根据错误物理地址在第一映射表中获得相对应的错误地址,然后根据错误逻辑地址在第二映射表中获得相对应的条目,并将条目中的物理地址更新为虚拟值,当主机向非挥发性记忆体存储器发送读请求时,则判断读请求是否命中虚拟值;若是,则向主机发送报错信号,若否,则继续进行所述读请求。本发明可以减少非挥发性记忆体存储器在垃圾回收阶段读出错情况,即减少读出错的次数或者使得非挥发性记忆体存储器延迟报错,从而可以提
高该非挥发性记忆体存储器的使用寿命。
附图说明
33.图1:本发明中存储系统的框图。
34.图2:本发明中nand型闪速存储器的系统方块图。
35.图3:本发明中nand存储芯片的系统方块图。
36.图4:本发明中存储单元阵列的方框图。
37.图5:本发明中存储系统的组成图。
38.图6:本发明中系统控制器的结构示意图。
39.图7:本发明中存储器的结构示意图。
40.图8:本发明中非挥发性记忆体存储器的垃圾回收系统的结构示意图。
41.图9:本发明中源存储块和目标存储块的结构示意图。
42.图10:本发明中非挥发性记忆体存储器的垃圾回收方法的流程图。
43.图11:本发明中步骤s1对应的示意图。
44.图12:本发明中第一映射表的结构示意图。
45.图13:本发明中第二映射表的结构示意图。
46.图14:本发明中错误物理地址的结构示意图。
47.图15:本发明中写请求中虚拟值更新成最新的物理地址的结构示意图。
48.图16:本发明中判断读请求是否命中虚拟值的流程图。
49.图17:本发明中非挥发性记忆体存储器的垃圾回收方法的另一流程图。
50.图18:本发明中主机逻辑地址的第k位的状态示意图。
51.图19:本发明中存储系统的结构示意图。
具体实施方式
52.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
53.需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
54.这里所描述的系统包括用于控制包括闪存芯片的大容量存储模块的新颖结构。在图1中以高度概述的形式示出了整个系统。与这里的其它框图一样,图1所示的元件本质上是概念性的,它们示出了这些功能块之间的互相关系的性质,而不意在表示实际的物理电路级实施。
55.如图1所示,本实施例提出一种存储系统,该存储系统包括非易失性半导体存储装置。非易失性半导体存储装置是即使切断电源也不会丢失数据的非易失性存储器(非暂时的存储器),本实施例中,作为非易失性半导体存储装置,举例说明nand型闪速存储器120。
另外,作为存储系统,举例说明具备nand型闪速存储器的非挥发性记忆体存储器设备(solid state drive,ssd)。
56.如图1所示,非挥发性记忆体存储器100经由接口171及电源线172与主机装置170(例如信息处理装置)连接。主机装置170例如由个人计算机、cpu核或者与网络连接的服务器等构成。主机装置170对非挥发性记忆体存储器100执行数据存取控制,例如,通过向非挥发性记忆体存储器100发送写入请求、读出请求及删除请求,对非挥发性记忆体存储器100执行数据的写入、读出及删除。
57.如图1所示,非挥发性记忆体存储器100具备ssd控制器(存储装置控制部)110、nand型闪速存储器120、接口控制器(接口部)130及电源供给部140。ssd控制器110、接口控制器130及nand型闪速存储器120通过总线150相互连接。
58.如图1所示,电源供给部140通过电源线172与主机装置170连接,接受从主机装置170供给的外部电源。电源供给部140和nand型闪速存储器120通过电源线161连接,电源供给部140和ssd控制器110通过电源线162连接,电源供给部140和接口控制器130通过电源线163连接。电源供给部140对外部电源进行升压及降压,生成各种电压,向ssd控制器110、nand型闪速存储器120及接口控制器130供给各种电压。
59.如图1所示,接口控制器130通过接口171与主机装置170连接。接口控制器130执行与主机装置170的接口处理。作为接口171,可以采用sata(serial advanced technology a ttachment:串行高级技术附件)、pci express(peripheral component interconnect express:高速外设部件互连)、sas(serial attached scsi:串行连接scsi)、usb(universal serial bus:通用串行总线)等。在一实施例中,作为接口171,以采用sata场合的例子进行说明。
60.如图1所示,nand型闪速存储器120非易失地存储数据。在nand型闪速存储器120的物理地址空间,确保存储固件(firmware,fw)的fw区域121、存储管理信息的管理信息区域122、存储用户数据的用户区域123、存储例如测试步骤时的各种日志的筛选日志区域125。
61.如图1所示,ssd控制器110控制非挥发性记忆体存储器100的各种工作。ssd控制器110可以通过执行在nand型闪速存储器120的fw区域121存储的固件的处理器和各种硬件电路等来实现其功能,执行针对来自主机装置170的写请求、缓存刷新请求、读请求等的各种指令的主机装置170

nand型闪速存储器120间的数据转送控制、在ram111及nand型闪速存储器120存储的各种管理表的更新
·
管理、筛选处理等。ssd控制器110从电源线172接受电源后,从fw区域121读出固件,然后,根据读出固件进行处理。ssd控制器110具备作为缓存区及操作区的ram111和ecc(error checking and correcting:错误检测和校正)电路112。
62.如图1所示,ram111由dram(dynamic random access memory:动态随机存取存储器)、sram(static random access memory:静态随机存取存储器)等的易失性ram,或mram(magnetoresistive random access memory:磁阻随机存取存储器)、feram(ferroelectric random access memory:铁电随机存取存储器)、reram(resistance random access memory:电阻随机存取存储器)、pram(phase

change random access memory:相变随机存取存储器)等的非易失性ram构成。
63.如图1所示,ecc电路112在数据写入时,对写入数据生成纠错码,将该纠错码附加到写入数据,发送到nand型闪速存储器120。另外,ecc电路112在数据读出时,对读出数据,
采用读出数据所包含的纠错码进行检错(错误位检测)及纠错。ecc电路112的ecc编码、ecc解密采用例如bose

chaudhuri

hocquenghem(bch)码、reed

solomon(rs)码、low

density parity

check(ldpc)码。电路112也可以是采用cyclic redundancy check(crc)码进行检错的crc电路112。
64.如图2

图3所示,图2显示为nand型闪速存储器120的系统方块图,图3显示为nand存储芯片200的系统方块图,nand型闪速存储器120具备一个以上的nand存储芯片200。
65.如图3所示,存储单元阵列202由可电改写数据的存储单元矩阵状配置而成。在存储单元阵列202配设了多个位线、多个字线及共用源极线。在位线和字线的交差区域,配置存储单元。
66.如图3所示,作为行解码器的字线控制电路205与多个字线连接,在数据的读出、写入及删除时,进行字线的选择及驱动。位线控制电路203与多个位线连接,在数据的读出、写入及删除时,控制位线的电压。另外,位线控制电路203在数据读出时检知位线的数据,在数据写入时向位线施加与写入数据相应的电压。列解码器204根据地址,生成用于选择位线的列选择信号,向位线控制电路203发送该列选择信号。
67.如图3所示,从存储单元阵列202读出的读出数据经由位线控制电路203、数据输入输出缓冲器209从数据输入输出端子208向外部输出。另外,从外部向数据输入输出端子208输入的写入数据经由数据输入输出缓冲器209,向位线控制电路203输入。
68.如图3所示,存储单元阵列202、位线控制电路203、列解码器204、数据输入输出缓冲器209及字线控制电路205与控制电路206连接。控制电路206根据从外部向控制信号输入端子207输入的控制信号,生成用于控制存储单元阵列202、位线控制电路203、列解码器204、数据输入输出缓冲器209及字线控制电路205的控制信号及控制电压。nand存储芯片200中,与存储单元阵列202以外的部分一起称为存储单元阵列控制部(nand控制器)201。
69.如图4所示,图4显示为存储单元阵列202的构成方框图。存储单元阵列202具备一个或多个平面(plane)(或district)。图4中的存储单元阵列202例如具备2个平面(平面0及平面1)的情况。各平面具备多个块(block),各块(block)由多个存储单元构成,以该块(block)为单位,删除数据。
70.如图5所示,本实施例给出另一存储系统30的框图,该存储系统300包括至少一个控制器310和多个存储器320。控制器310通过存储区域网络(storage area network,san)与主机(图中未示出)连接。控制器310可以是一种计算设备,如服务器、台式计算机等等。在控制器310上安装有操作系统以及应用程序。控制器310可以接收来自主机的输入输出(i/o)请求。控制器310还可以存储i/o请求中携带的数据(如果有的话),并且将该数据写入存储器320中。存储器320可以为非挥发性记忆体存储器。非挥发性记忆体存储器是以闪存(flash memory)芯片为介质的存储器,又名固态驱动器(solid state drive,ssd)。
71.图5仅是示例性说明,在实际应用中存储系统可包含两个或两个以上控制器,每个控制器的物理结构和功能与控制器310类似,并且本实施例并不限定控制器之间,以及任意一个控制器与存储器320之间的连接方式。只要各个控制器之间,以及各个控制器和存储器320之间能够相互通信。
72.如图6所示,图6显示为控制器310的结构示例图,控制器310包括接口卡311、处理器313和接口卡314。接口卡311用于和主机通信,控制器310可以通过接口卡311接收主机的
操作指令。处理器313可能是一个中央处理器(central processing unit,cpu)。在本发明实施例中,处理器313可以用于接收来自主机的i/o请求、处理所述i/o请求。所述i/o请求可以是写数据请求或者读数据请求,处理器313还可以将写数据请求中的数据发送给存储器320。此外,处理器313还可以用于执行系统垃圾回收操作。接口卡314用于和存储器320通信,控制器310可以通过接口卡314将写数据请求(包括数据以及所述数据的生命周期级别)发送给存储器320存储。
73.如图6所示,在本实施例中,控制器310还可以包括存储器312。存储器312用于临时存储从主机接收的数据或从存储器320读取的数据。控制器310接收主机发送的多个写数据请求时,可以将所述多个写数据请求中的数据暂时保存在存储器312中。当存储器312的容量达到一定阈值时,将存储器312存储的数据以及为所述数据分配的逻辑地址发送给存储器320。存储器320存储所述数据。存储器312包括易失性存储器,闪存芯片或其组合。易失性存储器例如为随机访问存储器(random

access memory,ram)。闪存芯片例如软盘、硬盘、非挥发性记忆体存储器(solid state disk,ssd)、光盘等各种可以存储程序代码的机器可读介质。存储器312具有保电功能,保电功能是指系统发生掉电又重新上电时,存储器312中存储的数据也不会丢失。
74.如图6所示,在本实施例中,控制器310负责对数据的生命周期进行识别,并且把不同生命周期的数据划分为若干等级。本实施例中数据的生命周期和该数据的修改频率有关,修改频率越高的数据生命周期越短,修改频率越低的数据生命周期越长。例如日志写入量大但很快会被删除(在非挥发性记忆体存储器中的保存时间可能只有几分钟),这类数据被划分为第一等级的生命周期。元数据相对于日志来说,它在非挥发性记忆体存储器中的保存时间略长,可以被划分为第二等级的生命周期。而业务数据中的热数据可以被划分为第三等级的生命周期,业务数据中的冷数据可以被划分为第四等级的生命周期。当然,本发明实施例并不限定生命周期级别的数量,可以只包含两个等级的生命周期,也可以包含三个或三个以上等级的生命周期。具体的,控制器310可以预先设置一个或多个生命周期阈值,将数据的生命周期与生命周期阈值进行比较从而确定该数据所属的生命周期级别。举例来说,预先设置第一生命周期阈值、第二生命周期阈值和第三生命周期阈值,其中第二生命周期阈值高于第一生命周期阈值,第三生命周期阈值高于第二生命周期阈值。当数据的生命周期等于或低于第一生命周期阈值时,它属于第一等级的生命周期,当数据的生命周期位于第一生命周期阈值与第二生命周期阈值之间时,该数据属于第二等级的生命周期,当数据的生命周期位于第二生命周期阈值和第三生命周期阈值之间时,该数据属于第三等级的生命周期,当数据的生命周期高于第三生命周期阈值时,该数据属于第四等级的生命周期。
75.如图6所示,控制器310在识别出数据的生命周期级别之后,将所述识别出的生命周期级别以参数的形式携带在nvme协议中传递给存储器320,以便存储器320根据生命周期的参数判断生命周期级别,并且为不同生命周期级别的数据分配不同的数据存储模式的闪存块。
76.如图6所示,需要说明的是,控制器310属于系统控制器,系统控制器是独立的设备,不同于非挥发性记忆体存储器中的控制芯片。本实施例将非挥发性记忆体存储器的控制芯片称为闪存控制器。
77.如图7所示,图7显示为存储器320的结构示意图。存储器320包括控制单元321和多个闪存阵列322。其中,控制单元321用于执行控制器310发送的写数据请求或者读数据请求等操作。
78.如图7所示,控制单元321中包含闪存翻译层(flash translation layer,ftl)。闪存翻译层用于保存有数据的逻辑地址与实际地址之间的对应关系。因此,闪存翻译层用于将系统控制器发送的写数据请求或者读数据请求中的逻辑地址转化为非挥发性记忆体存储器中数据的实际地址。数据的逻辑地址是由系统控制器分配的,一个段的逻辑地址区间的子集。数据的逻辑地址包括起始逻辑地址和长度,起始逻辑地址指示所述数据位于的所述段的位置,长度代表所述数据的大小。数据的实际地址可以是非挥发性记忆体存储器中该数据的物理地址,也可以是在所述物理地址的基础上经过虚拟化,只对闪存控制器可见的地址。该经过虚拟化的实际地址对系统控制器不可见。
79.如图7所示,存储器320通常包括一个或多个闪存阵列322。每个闪存阵列322包括若干个闪存块。存储器320在读取或写入时是以一个页(page)为基础的,但擦除操作只能以一个闪存块为基础,擦除操作是指将这个块的所有位都设置为“1”。在擦除之前,闪存控制器需要先将这个闪存块中的有效数据复制到另一个块的空白页中去。闪存块中的有效数据是指该块中保存的没有被修改过的数据,这部分数据可能会被读取。闪存块中的无效数据是指该块中保存的已经被修改过的数据,这部分数据不可能会被读取。
80.如图7所示,每个闪存块包含多个页(page)。存储器320在执行写数据请求时,是以页为单位来写数据的。举例来说,控制器310向控制单元321发送一个写数据请求。所述写数据请求包括数据的逻辑地址。控制单元321在接收所述写数据请求之后,按照接收的时间顺序将所述数据连续写入一个或多个闪存块中。连续写入一个或多个闪存块是指,控制单元321查找一个空白的闪存块,将数据写入所述空白的闪存块,直至将所述空白的闪存块填满,当所述数据的大小超过闪存块的容量时,控制单元321再查找下一个空白的闪存块,继续写入。闪存翻译层建立并保存所述逻辑地址与写入所述数据的页的实际地址之间的对应关系。当控制器310向控制单元321发送读数据请求,要求读取所述数据时,所述读数据请求中包括所述逻辑地址。控制单元321根据所述逻辑地址,以及所述逻辑地址与实际地址之间的对应关系读取所述数据,并将该数据发送给控制器310。
81.如图7所示,存储单元(cell)是页的最小操作单元,一个存储单元对应一个浮栅晶体管,它可以存储1比特(bit)或多比特的数据,这取决于闪存的类型。一个页上的存储单元共享一根字符线。存储单元包括控制栅极和浮置栅极,浮置栅极是真正存储数据的单元。数据在存储单元中是以电荷(electrical charge)形式存储的。存储电荷的多少取决于控制栅极所被施加的电压,其控制了向浮置栅极中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值来表示。往浮置栅极中写入数据就是对控制栅极施加电压,使得浮置栅极中存储的电荷够多,超过阈值,就表示0。对闪存进行擦除操作就是对浮置栅极放电,使得浮置栅极中存储的电荷低于阈值,就表示1。
82.如图8

图9所示,本实施例还提出一种非挥发性记忆体存储器的垃圾回收系统400,该垃圾回收系统400可以包括存储块确定模块401,错误物理地址统计模块402,读错误处理模块403和命令判断模块404。存储块确定模块401可以用于确定源存储块405和目标存储块406。存储块确定模块401可以从存储数据的多个存储块中确定源存储块405,也就是说
源存储块405中包括有效数据和无效数据,例如源存储块405中包括一个有效数据,其他数据均为无效数据(填充区域)。存储块确定模块401还可以从空闲的多个存储块中确定目标存储块406。当确定好源存储块405和目标存储块406后,即可进行垃圾回收操作,即将源存储块405中的有效数据转移至目标存储块406中。
83.如图10所示,本实施例还提出一种非挥发性记忆体存储器的垃圾回收方法,包括:
84.s1:确定源存储块和目标存储块;
85.s2:将所述源存储块中的有效数据转移至所述目标存储块中,并获取转移过程中的错误物理地址;
86.s3:根据所述错误物理地址在第一映射表中获得相对应的错误逻辑地址;
87.s4:根据所述错误逻辑地址在第二映射表中获得相对应的条目,并将所述条目中的物理地址更新为虚拟值;
88.s5:主机向所述非挥发性记忆体存储器发射新的请求?
89.s6:若是,则判断主机发送的是读请求?
90.s7:若是,则判断所述读请求是否命中虚拟值?
91.s8:若是,向主机发送报错信号。
92.如图8和图11所示,在步骤s1

s2中,在确定后源存储块405和目标存储块406之后,则将源存储块405中的有效数据转移至目标存储块406中,在转移过程中,当出现垃圾回收读错误时,则可以通过错误物理地址统计模块402来获得错误物理地址,例如从图11中可以看出,源存储块405中的有效数据为“4”,在数据转移过程中,目标存储块406的有效数据变成“5”,也就是说在数据转移过程中,数据发生错误,因此可以将该源存储块405的物理地址定义为错误物理地址。
93.如图8和图12

图14所示,在步骤s3

s4中,在获得错误物理地址之后,则可以根据第一映射表获得错误逻辑地址。第一映射表可以为存储块物理地址至主机逻辑地址映射表,第一映射表中可以包括多个条目(entry),每个条目可以是存储块物理地址

主机逻辑地址的组合。第一映射表的大小可以为4kb/8kb/16kb/32kb。条目的大小可以为4kb。每个条目存放的是主机逻辑地址,存储块物理地址为索引,因此当获知存储块物理地址之后,即可获得主机逻辑地址。当获得错误物理地址之后,即可获得该错误物理地址相对应的主机逻辑地址,并将该主机逻辑地址定义为错误逻辑地址。在获得该错误逻辑地址之后,然后根据第二映射表获得该错误逻辑地址相对应的条目(entry)。第二映射表可以为主机逻辑地址至存储块物理地址映射表,主机逻辑地址

存储块物理地址的组合可以是第二映射表中的一个条目。第二映射表的大小可以为4kb/8kb/16kb/32kb。条目的大小可以为4kb。第二映射表中存放的是存储块物理地址,主机逻辑地址为索引,因此当获得主机逻辑地址之后,就可以在第二映射表中找到该主机逻辑地址相对应的条目,进行获得该主机逻辑地址相对应的存储块物理地址。从图14中可以看出,该错误逻辑地址对应于第二映射表中的条目0,因此可以将该条目0中的存储块物理地址更新为虚拟值。该虚拟值可以起到标记作用,当后续读请求命中该虚拟值时,则可以将向主机发送报错信号。
94.如图8,图10和图15所示,在步骤s5

s7中,在将第二映射表中的某个物理地址更新为虚拟值后,则通过命令判断模块404判断主机是否向非挥发性记忆体存储器发送新的请求。如果主机未向非挥发性记忆体存储器发送新的请求,则进行步骤s51,即继续进行垃圾
回收操作。当主机向非挥发性记忆体存储器发送新的请求时,则进行步骤s6,即进一步判断主机发送的请求是否是读请求,如果主机发送的请求不是读请求,则进行步骤s61,即进行写请求。如果主机发送的请求是读请求,则进行步骤s7,则判断读请求是否命中虚拟值,若读请求未命中虚拟值,则进行步骤s71,即继续进行主机读请求。如果读请求命中虚拟值,则向主机发送报错信号。在步骤s61中,在进行写请求过程中,如果写请求中的逻辑地址命中错误逻辑地址,则根据第二映射表中获得相应的条目,并将条目中的虚拟值更新成逻辑地址相对应的物理地址,从图15中可以看出,该错误逻辑地址对应于第二映射表中的条目0,因此将条目0中的虚拟值更新成最新的物理地址。需要说明的是,该命令判断模块404还可以进行命令执行操作。
95.如图16所示,在步骤s7中,判断读请求是否命中虚拟值的步骤包括:
96.s711:获取所述读请求中的逻辑地址;
97.s712:根据所述逻辑地址在所述第二映射表中获得相对应的条目;
98.s713:判断所述条目中的所述物理地址是否为虚拟值?
99.s714:若是,则所述读请求命中所述虚拟值。
100.s715:若否,则所述读请求未命中所述虚拟值。
101.如图14和图16所示,在步骤s712

s713中,当逻辑地址在第二映射表中对应的是条目0时,该条目0中的存储块物理地址为虚拟值,则此时读请求命中该虚拟值,当逻辑地址在第二映射表中对应的是条目3时,该条目3中的存储块物理地址为正常值,则此时读请求未命中该虚拟值。当读请求命中该虚拟值时,则向主机发送报错信号,当读请求未命中该虚拟值时,则继续进行垃圾回收读处理。通过该方法可以延迟向主机发送报错信号,因此可以延长非挥发性记忆体存储器的使用寿命。
102.如图17所示,本实施例还提出一种非挥发性记忆体存储器的垃圾回收方法,包括:
103.s100:确定源存储块和目标存储块;
104.s101:将所述源存储块中的有效数据转移至所述目标存储块中,并获取转移过程中的错误物理地址;
105.s102:获取所述错误物理地址在第一映射表相对应的主机逻辑地址,并将所述主机逻辑地址中的第k位的状态更新为错误标志状态;
106.s103:将所述第一映射表的内容更新至第二映射表内;
107.s104:判断所述第一映射表中的所述主机逻辑地址中第k位的状态为错误标志状态?
108.s105:若是,获取所述主机逻辑地址在所述第二映射表中相对应的条目,并将所述条目中的存储块物理地址更新为虚拟值;
109.s106:判断主机向所属非挥发性记忆体存储器发送新的请求?
110.s107:若是,则判断主机发送的是读请求?
111.s108:若是,则判断读请求命中虚拟值?
112.s109:若是,则向主机发送报错信号。
113.如图8和图17

图18所示,在本实施例中,步骤s100

s101可以参阅上述步骤s1

s2的描述。在步骤s102

s103中,当获得错误物理地址之后,即可根据该错误物理地址在第一映射表中获得相对应的条目,由于该条目是存储块物理地址

主机逻辑地址的组合,因此当
获得错误物理地址之后,即可在第一映射表中获得该错误物理地址相对应的主机逻辑地址。从图18中可以看出,该错误物理地址例如位于条目0(entry0)中,同时更新该条目0内的主机逻辑地址的第k位的状态,例如第k位的状态例如从“0”更新至“1”,也就是将第k位的状态由正常标志状态更新为错误标志状态。当更新第二映射表时,该错误标志状态后续将被更新至第二映射表中,也就是可以将第一映射表的内容更新至第二映射表内。在本实施例中,k的数值可以大于等于30,k为正整数,例如为31或32。本实施例将主机逻辑地址的第k位设置成错误标志状态,且k的数值比较大,因此可以具有良好的通用性,能够适用于大容量的非挥发性记忆体存储器。
114.如图8,图14,图15和图17

图18所示,在步骤s104

s105中,在更新第二映射表时,还需要判断第一映射表中所述主机逻辑地址中第k位的状态为错误标志状态。如果,第k位的状态为错误标志状态,那么则获取该主机逻辑地址在第二映射表相对应的条目,然后将该条目中的存储块物理地址更新为虚拟值。例如第一映射表的条目0中主机逻辑地址的第k位的状态为错误标志状态,那么可以在第二映射表中获得该主机逻辑地址相对应的条目0,并将该条目0中的存储块物理地址更新为虚拟值。如果第k位的状态为正常标志状态,则获取该主机逻辑地址在第一映射中的相对应的存储块物理地址,然后将该存储块物理更新至该主机逻辑地址在第二映射表中的条目内,也就是将最新的存储块物理地址替换原先的存储块地址。需要说明的是,可以通过读错误处理模块403和命令判断模块404来处理步骤s102

s105。当在垃圾回收过程中遇到垃圾回收读出错时,可以在保证非挥发性记忆体存储器正常运行的前提下,减少垃圾回收在处理读出错时读写存储阵列(nand flash)的频率,由此可以提高非挥发性记忆体存储器处理垃圾回收读出错的效率,提高非挥发性记忆体存储器的性能。
115.如图10和图17所示,在本实施例中,步骤s106

s109可以参考步骤s5

s8,本实施例不在进行阐述。
116.如图19所示,本实施例还提出一种存储系统500,该存储系统500可以包括主机510和通过接口511与主机510传送命令和/或数据的数据保存系统520。存储系统500可以被实现为个人计算机(pc)、工作站、数据中心、互联网数据中心、存储区域网络、网络附属存储器(nas)或移动计算设备,但是本发明构思不限于这些示例。移动计算设备可以被实现为膝上型计算机、蜂窝电话、智能电话、平板pc、个人数字助理(pda)、企业数字助理(eda)、数字静止相机、数字视频相机、便携式多媒体播放器(pmp)、个人导航设备或便携式导航设备(pnd)、手持式游戏控制台、移动互联网设备(mid)、可穿戴计算机、物联网(iot)设备、物联网(ioe)设备、无人机或电子书,但是本发明构思不限于这些示例。
117.如图19所示,接口511可以是串行高级技术附件(sata)接口,sata快速(satae)接口、sas(串行附件小型计算机系统接口(scsi))、外围组件互连高速(pcie)接口、非易失性存储器快速(nvme)接口、高级主机控制器接口(ahci)或多媒体卡(mmc)接口,但不限于此。接口511可以传输电信号或光信号。主机510可以经由接口511控制数据保存系统520的数据处理操作(例如,写操作或读操作)。主机510可以指主机控制器。
118.如图19所示,数据保存系统520可以是基于闪存的存储器设备,但不限于此。数据保存系统520可以被实现为ssd、嵌入式ssd(essd)、通用闪速存储器(ufs)、mmc、嵌入式mmc(emmc)或受管理的nand,但是本发明构思不限于这些示例。基于闪存的存储器设备可以包
括存储器单元阵列。存储器单元阵列可以包括多个存储器单元。存储器单元阵列可以包括二维存储器单元阵列或三维存储器单元阵列。三维存储器单元阵列可以单片地形成在具有设置在硅衬底上或上方的有源区的存储器单元阵列中的一个或多个物理层级处,并且可以包括存储器单元的操作所涉及的电路。所述电路可以形成在硅衬底中、硅衬底上或上方。术语“单片”意指阵列中的每一层级的层直接沉积在阵列中的下层级的层上。三维存储器单元阵列可以包括竖直取向的竖直nand串,使得至少一个存储器单元置于另一存储器单元上或上方。所述至少一个存储器单元可以包括电荷俘获层。
119.如图19所示,数据保存系统520可以包括控制单元321和存储阵列420,控制单元321可以控制主机510。控制单元321与存储阵列420之间可以进行命令和/或数据的传输或处理。数据保存系统520的垃圾回收方法可以参考上述描述。
120.综上所述,本发明提出一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统,在进行垃圾回收时,首先确定出源存储块和目标存储块,然后进行垃圾回收操作,即将源存储块中的有效数据转移至目标存储块中,并获取转移过程中出现的错误物理地址;然后根据错误物理地址在第一映射表中获得相对应的错误地址,然后根据错误逻辑地址在第二映射表中获得相对应的条目,并将条目中的物理地址更新为虚拟值,当主机向非挥发性记忆体存储器发送读请求时,则判断读请求是否命中虚拟值;若是,则向主机发送报错信号,若否,则继续进行所述读请求。本发明可以减少非挥发性记忆体存储器在垃圾回收阶段读出错情况,即减少读出错的次数或者使得非挥发性记忆体存储器延迟报错,从而可以提高该非挥发性记忆体存储器的使用寿命。
121.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明,本领域技术人员应当理解,本技术中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案,例如上述特征与本技术中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
122.除说明书所述的技术特征外,其余技术特征为本领域技术人员的已知技术,为突出本发明的创新特点,其余技术特征在此不再赘述。
转载请注明原文地址:https://doc.8miu.com/read-1750288.html

最新回复(0)