本技术涉及存储,特别是涉及一种ssd控制器、数据处理方法、设备及存储介质。
背景技术:
1、随着互联网技术的发展,大数据应用对存储系统的性能和可靠性提出了更高的挑战。由于ssd(solid state drive,固态硬盘)具有高可靠性、优秀的性能及低能耗等特点,在当下成为存储领域的发展热点。
2、ssd通常使用nand闪存来实现,典型的nand闪存在其浮栅极中保持电荷。闪存中存储的电荷量不同,用于切换nand闪存的阈值电压也会发生变化。不同的阈值电压对应不同的电荷水平,即表示存储数据位的不同值。当闪存模块被编程或擦除时,电荷被注入浮栅极或从浮栅极排出,通过围绕浮栅极的介电绝缘体形成临时隧道。随着电介质经历大量的写入或擦除操作时,电介质出现磨损导致浮栅极保持电荷的能力减弱。电介质的磨损会导致写入、擦除错误,并且,由于数据保持的错误率升高导致对存储数据的读取失败。
3、写入、擦除错误可以在写入操作或擦除操作期间检测到,通常可以通过屏蔽有缺陷的模块来立即修复。然而,存储数据的读取失败更难处理,因为这种问题通常在一定的数据保持期之后才会出现。随着时间的推移,从浮栅极跑出来的电子达到一定数量时,会导致存储模块的比特发生翻转出错,当出错的比特数超出ecc(error correction code,纠错码)的纠错能力时,该部分数据就会丢失。为了解决数据读取失败的问题,相关技术中,ssd厂商通常在固件中加入数据巡检算法,对ssd进行全盘扫描,当发现某个闪存页中翻转的比特数量超过阈值,就将数据重写到新的位置,以此避免数据存放太久导致比特翻转数量超过ecc的纠错能力。但是,这种方式会占用大量的cpu时钟周期,降低ssd的运行性能。
技术实现思路
1、有鉴于此,本技术旨在提出一种ssd控制器、数据处理方法、设备及存储介质,以提升ssd的运行性能。
2、为达到上述目的,本技术的技术方案如下:
3、本技术实施例第一方面提供一种ssd控制器,包括:
4、控制模块,用于当ssd上电时,根据强制回收池中待回收的数据块的数量,判断是否对ssd的闪存进行搜索;当判定对闪存进行搜索时,生成搜索指令并下发到搜索模块;待回收的数据块为数据保存时间大于或等于回收阈值的数据块;
5、搜索模块,用于响应于接收到的搜索指令,对闪存内所有数据块进行搜索。
6、可选地,控制模块,用于判断强制回收池中待回收的数据块的数量是否小于第一阈值;当强制回收池中待回收的数据块的数量小于第一阈值时,判定对闪存进行搜索。
7、可选地,控制模块在生成搜索指令之前,获取搜索模块的状态,当搜索模块为空闲状态时,生成搜索指令。
8、可选地,搜索指令是基于搜索条件生成的,搜索条件包括:获取时间戳最小的数据块;时间戳表示数据块首次被写入数据的时刻。
9、可选地,ssd控制器,还包括:
10、回收模块,用于根据闪存的全局数据保持时间及搜索结果中任一数据块的时间戳,判断是否对数据块进行垃圾回收操作;对判定为需要垃圾回收的数据块进行垃圾回收操作。
11、可选地,回收模块,用于执行以下步骤:
12、根据闪存的全局数据保持时间及数据块的时间戳,计算数据块的数据保持时间;
13、将数据块的数据保持时间与回收阈值进行比较,当数据保持时间大于或等于回收阈值时,判定对数据块进行垃圾回收操作;
14、当判定对数据块进行垃圾回收操作时,将数据块放入强制回收池。
15、可选地,回收模块,还用于:
16、当判定对数据块进行垃圾回收操作时,判断数据块是否为在用状态;若数据块为在用状态,修改数据块的状态为强制回收状态。
17、可选地,控制模块,还用于当强制回收池中待回收的数据块的数量大于或等于第一阈值时,停止向搜索模块发送搜索指令;
18、当搜索模块空闲的时间达到间歇时间阈值时,重新向搜索模块发送搜索指令。
19、可选地,搜索条件还包括搜索结果中数据块的数量;
20、控制模块,还用于根据搜索结果判断是否执行集中垃圾回收操作。
21、可选地,控制模块,用于当搜索结果中所有数据块的数据保持时间均大于或等于回收阈值时,判定执行集中垃圾回收操作。
22、可选地,控制模块,还用于当判定执行集中垃圾回收操作时,生成搜索指令并发送给搜索模块。
23、可选地,ssd控制器,还包括:
24、更新模块,用于按照第一时间间隔,更新闪存的全局数据保持时间。
25、可选地,更新模块,具体用于根据当前的温度值计算温度加速系数,基于温度加速系数和上电时间确定全局数据保持时间。
26、可选地,更新模块,还用于当闪存被写入数据时,若当前被写入数据的数据块为空数据块,则将当前的全局数据保持时间作为数据块的时间戳。
27、可选地,ssd控制器,还包括:
28、加载模块,用于当ssd上电时,将闪存内所有数据块的信息存储到缓存中;信息包括所有数据块的时间戳;
29、保存模块,用于接收到下电请求时,从缓存中获取所有数据块更新后的时间戳并存储到闪存中;更新后的时间戳为根据主机发送的写入指令对空的数据块进行写入时标记的时间戳,或对待回收的数据块执行垃圾回收操作后标记的时间戳。
30、根据本技术实施例的第二方面,提供一种数据处理方法,应用于ssd,该方法包括:
31、当ssd上电时,根据强制回收池中待回收的数据块的数量,判断是否对ssd的闪存进行搜索;待回收的数据块为数据保存时间大于或等于回收阈值的数据块;
32、当判定对闪存进行搜索时,生成搜索指令并启动搜索模块对闪存内所有数据块进行搜索。
33、可选地,搜索指令是基于搜索条件生成的,搜索条件包括:获取时间戳最小的数据块;时间戳表示数据块首次被写入数据的时刻。
34、可选地,根据强制回收池中待回收的数据块的数量,判断是否对ssd的闪存进行搜索,包括:
35、判断强制回收池中待回收的数据块的数量是否小于第一阈值;当强制回收池中待回收的数据块的数量小于第一阈值时,判定对闪存进行搜索;当强制回收池中待回收的数据块的数量大于或等于第一阈值时,判定为停止搜索;
36、当停止搜索的时长达到间歇时间阈值时,再次对闪存进行搜索。
37、可选地,数据处理方法还包括:
38、获取闪存当前的全局数据保持时间;
39、根据全局数据保持时间及搜索结果中任一数据块的时间戳计算数据块的数据保持时间;
40、将数据块的数据保持时间与回收阈值进行比较;当数据块的数据保持时间大于或等于回收阈值时,判定对数据块进行垃圾回收操作;
41、当判定对数据块进行垃圾回收操作时,将数据块放入强制回收池。
42、可选地,数据处理方法还包括:
43、当判定对数据块进行垃圾回收操作时,判断数据块是否为在用状态;若数据块为在用状态,修改数据块的状态为强制回收状态。
44、可选地,搜索条件还包括搜索结果中保留的数据块的数量;
45、当搜索结果中所有数据块的数据保持时间均大于或等于回收阈值时,判定执行集中垃圾回收操作,获取闪存内数据保持时间大于或等于回收阈值的所有数据块。
46、可选地,在根据强制回收池中待回收的数据块的数量,判断是否对ssd的闪存进行搜索之前,还包括:
47、当ssd上电时,将闪存内所有数据块的信息存储到缓存中;信息包括所有数据块的时间戳;
48、按照第一时间间隔,更新闪存的全局数据保持时间。
49、可选地,数据处理方法还包括:
50、当接收到下电请求时,从缓存中获取所有数据块更新后的时间戳并存储到闪存中;更新后的时间戳为根据主机发送的写入指令对空的数据块进行写入时标记的时间戳,或对待回收的数据块执行垃圾回收操作后标记的时间戳。
51、根据本技术实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现如本技术实施例第二方面的方法中的步骤。
52、根据本技术实施例的第四方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如本技术实施例第二方面的方法中的步骤。
53、本技术提供的ssd控制器在ssd上电时,通过控制模块根据强制回收池中待回收的数据块的数量判断是否对ssd的闪存进行搜索,当判定需要对闪存进行搜索时,生成搜索指令并发送给搜索模块。搜索模块相应于接收到的搜索指令,对闪存内所有数据块进行搜索。本技术中采用了硬件模块搜索策略,通过控制模块限制搜索指令的生成频率,从而减少cpu时钟周期的占用,提升ssd的运行性能。