CN116382598B - 数据搬移方法、闪存设备控制器及闪存设备 - Google Patents
数据搬移方法、闪存设备控制器及闪存设备 Download PDFInfo
- Publication number
- CN116382598B CN116382598B CN202310654208.4A CN202310654208A CN116382598B CN 116382598 B CN116382598 B CN 116382598B CN 202310654208 A CN202310654208 A CN 202310654208A CN 116382598 B CN116382598 B CN 116382598B
- Authority
- CN
- China
- Prior art keywords
- flash memory
- super block
- data
- memory device
- reading times
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000005012 migration Effects 0.000 claims abstract description 13
- 238000013508 migration Methods 0.000 claims abstract description 13
- 238000004891 communication Methods 0.000 claims description 6
- 239000004973 liquid crystal related substance Substances 0.000 claims description 4
- 239000007787 solid Substances 0.000 abstract description 8
- 239000000872 buffer Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 19
- 238000012545 processing Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000012212 insulator Substances 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052814 silicon oxide Inorganic materials 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本申请涉及固态硬盘应用技术领域,公开了一种数据搬移方法、闪存设备控制器及闪存设备,该数据搬移方法,包括:获取超级块的数据读取次数以及超级块中的物理块的数据读取次数,其中,超级块的数据读取次数为超级块中的所有物理块的数据读取次数中的最大值;若物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则超级块的当前数据读取次数更新为该物理块的当前数据读取次数;若超级块的当前数据读取次数大于或等于物理块读取次数阈值,则对超级块进行数据搬移,通过获取超级块的数据读取次数和物理块的数据读取次数,确定超级块的访问模式,本申请能够避免出现不可纠正的错误,并提高闪存设备的读性能。
Description
技术领域
本申请实施方式涉及固态硬盘应用技术领域,特别是涉及一种数据搬移方法、闪存设备控制器及闪存设备。
背景技术
固态存储日新月异的当下,企业级固态硬盘越来越普及,目前企业级固态硬盘(SSD)均采用闪存介质作为存储介质。闪存有读写次数限制,如果闪存中的某些区域读写过于频繁,就会比其它区域磨损的更快,将缩短整个固态硬盘的寿命,当这个区域比较小且当读取次数足够大的时候,以闪存(Nand)作为存储介质的固态硬盘就会出现故障,该故障被称为读干扰,如果对某一个块读取的次数超过一定的阈值(通常几百万次),保存在Nand里面的数据就会变得不稳定,甚至可能出现不可纠正的错误,从而导致数据丢失。
目前,为了处理这种固态硬盘读干扰的特性,现有技术的方案是对超级块(sblk)进行计数,当超级块的读取次数超过某个阈值,则进行数据的搬移,将数据全部迁移到新的超级块(sblk),比如phy block 读干扰的读取次数阈值为A,sblk 占用了512个物理块(phyblock),则sblk 的阈值往往设计成512*A,这种sblk 的计数方法虽然简单易行且占用资源不大,但是会产生很大的误差,导致出现不可纠正的错误。
发明内容
本申请实施例提供一种数据搬移方法、闪存设备控制器及闪存设备,通过获取超级块的数据读取次数和物理块的数据读取次数,确定超级块的访问模式,本申请能够避免出现不可纠正的错误,并提高闪存设备的读性能。
本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种数据搬移方法,应用于闪存设备,闪存设备包括多个超级块,每一个超级块包括多个物理块,该数据搬移方法,包括:
获取超级块的数据读取次数以及超级块中的物理块的数据读取次数,其中,超级块的数据读取次数为超级块中的所有物理块的数据读取次数中的最大值;
若物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则超级块的当前数据读取次数更新为该物理块的当前数据读取次数;
若超级块的当前数据读取次数大于或等于物理块读取次数阈值,则对超级块进行数据搬移。
在一些实施例中,对超级块进行数据搬移,包括:
确定超级块的访问模式;
根据超级块的访问模式,对超级块进行数据搬移。
在一些实施例中,确定超级块的访问模式,包括:
每间隔固定时间,获取一次超级块的数据读取次数;
计算当前超级块的读取次数与该超级块上一次数据读取次数的差值;
若差值大于差值阈值,则确定超级块的访问模式为小区域读模式;
若差值小于或等于差值阈值,则确定超级块的访问模式为普通访问模式。
在一些实施例中,根据超级块的访问模式,对超级块进行数据搬移,包括:
若超级块的访问模式为小区域读模式,则通过第一数据搬移模式对超级块进行数据搬移,其中,第一数据搬移模式包括快速搬移模式;
若超级块的访问模式为普通访问模式,则通过第二数据搬移模式对超级块进行数据搬移,其中,第二数据搬移模式包括慢速搬移模式。
在一些实施例中,方法还包括:
确定闪存设备的主机访问模式;
根据闪存设备的主机访问模式,对闪存设备进行数据搬移。
在一些实施例中,确定闪存设备的主机访问模式,包括:
对闪存设备的全部超级块进行全盘扫描,具体包括:
设置临时备份窗口,其中,临时备份窗口用于存储当前时间点的预设数量个超级块的数据读取次数;
达到预设时间之后,对预设数量个超级块进行遍历扫描,得到更新后的数据读取次数;
计算每一个超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值;
若存在某一个超级块的差值大于差值阈值,则确定闪存设备的主机访问模式为小区域读模式;
若全部差值均小于或等于差值阈值,则更新临时备份窗口,并对下一预设数量个超级块进行遍历扫描,以遍历闪存设备的全部超级块。
在一些实施例中,方法还包括:
在当前的超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值小于或等于差值阈值时,获取全盘扫描的次数;
判断全盘扫描的次数是否大于全盘扫描次数阈值;
若否,则继续扫描下一个超级块;
若是,则确定闪存设备的主机访问模式为普通访问模式。
在一些实施例中,根据闪存设备的主机访问模式,对闪存设备进行数据搬移,包括:
若闪存设备的主机访问模式为小区域读模式,则通过第一数据搬移模式对闪存设备中的超级块进行数据搬移,其中,第一数据搬移模式包括快速搬移模式;
若闪存设备的主机访问模式为普通访问模式,则通过第二数据搬移模式对闪存设备中的超级块进行数据搬移,其中,第二数据搬移模式包括慢速搬移模式。
第二方面,本申请实施例提供一种闪存设备控制器,包括:
至少一个处理器;和
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面的数据搬移方法。
第三方面,本申请实施例提供一种闪存设备,包括:
如第二方面的闪存设备控制器;
与闪存设备控制器通信连接的至少一个闪存介质。
第四方面,本申请实施例提供一种非易失性计算机可读存储介质,非易失性计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使闪存设备执行如第一方面的数据搬移方法。
本申请实施方式的有益效果是:区别于现有技术的情况,本申请实施方式提供一种数据搬移方法,应用于闪存设备,该闪存设备包括多个超级块,每一个超级块包括多个物理块,该数据搬移方法,包括:获取超级块的数据读取次数以及超级块中的物理块的数据读取次数,其中,超级块的数据读取次数为超级块中的所有物理块的数据读取次数中的最大值;若物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则超级块的当前数据读取次数更新为该物理块的当前数据读取次数;若超级块的当前数据读取次数大于或等于物理块读取次数阈值,则对超级块进行数据搬移,本申请能够通过获取超级块的数据读取次数和物理块的数据读取次数,确定超级块的访问模式,避免出现不可纠正的错误,并提高闪存设备的读性能。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种闪存设备的结构示意图;
图2是本申请实施例提供的一种闪存设备控制器的示意图;
图3是本申请实施例提供的一种主机写入数据的模块交互示意图;
图4是本申请实施例提供的一种闪存封装芯片的结构示意图;
图5是本申请实施例提供的一种读操作处理的流程示意图;
图6是本申请实施例提供的一种数据搬移方法的流程示意图;
图7是本申请实施例提供的另一种读操作处理的流程示意图;
图8是图6中的步骤S603的细化流程示意图;
图9是图8中的步骤S6031的细化流程示意图;
图10是图8中的步骤S6032的细化流程示意图;
图11是本申请实施例提供的一种对闪存设备进行数据搬移的流程示意图;
图12是图11中的步骤S111的细化流程示意图;
图13是图12中的步骤S1101的细化流程示意图;
图14是本申请实施例提供的一种备份窗口的示意图;
图15是本申请实施例提供的一种判断全盘扫描的次数是否大于全盘扫描次数阈值的流程示意图;
图16是图11中的步骤S112的细化流程示意图;
图17是本申请实施例提供的一种判断闪存设备的主机访问模式的整体流程示意图。
附图标号说明:
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本说明书中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
下面结合说明书附图具体阐述本申请的技术方案:
在本申请实施例中,闪存设备包括固态硬盘或者其他以闪存介质为存储介质的存储设备,闪存设备控制器包括固态硬盘或者其他以闪存介质为存储介质的存储设备的控制器。
具体的,请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图。
如图1所示,闪存设备100包括闪存介质110以及与闪存介质110连接的闪存设备控制器120。其中,闪存设备100通过有线或无线的方式与主机200通信连接,用以实现数据交互。
闪存介质110,作为闪存设备100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。
其中,闪存介质110可以为Nand Flash,Nand Flash以单晶体管作为二进制信号的存储单元,其结构与普通的半导体晶体管非常相似,区别在于Nand Flash的单晶体管加入了浮动栅和控制栅,浮动栅用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制栅相耦合,当负电子在控制栅的作用下被注入到浮动栅中,Nand Flash的单晶体的存储状态就由“1”变成了“0”,而当负电子从浮动栅中移走后,存储状态就由“0”变成了“1”,包覆在浮动栅表面的绝缘体用于将浮动栅中的负电子困住,实现数据存储。即Nand Flash的存储单元为浮动栅晶体管,使用浮动栅晶体管以电荷的形式存储数据。存储电荷的多少与浮动栅晶体管所被施加的电压的大小有关。
一个Nand Flash包括至少一个Chip芯片,每一个Chip芯片由若干个Block物理块组成,每一个Block物理块包括若干个Page页。其中,Block物理块是Nand Flash执行擦除操作的最小单位,Page页为Nand Flash执行读写操作的最小单位,一个Nand Flash的容量等于其Block物理块的数量*一个Block物理块包含的Page页的数量*一个Page页的容量。具体的,闪存介质10按照存储单元的电压的不同层次,可分为SLC、MLC、TLC以及QLC。
闪存设备控制器120,包括数据转换器121、处理器122、缓存器123、闪存控制器124以及接口125。
数据转换器121,分别与处理器122和闪存控制器124连接,所述数据转换器121用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当闪存控制器124向闪存介质110写入数据时,通过数据转换器121将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质110。当闪存控制器124从闪存介质110读取数据时,通过数据转换器121将闪存介质110中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,数据转换器121可以包括二进制数据寄存器和十六进制数据寄存器。二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。
处理器122,分别与数据转换器121、缓存器123、闪存控制器124以及接口125连接,其中,处理器122与数据转换器121、缓存器123、闪存控制器124以及接口125可以通过总线或者其他方式连接,处理器用于运行存储在缓存器123中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例。
缓存器123,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。缓存器123作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。缓存器123可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,缓存器123可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,缓存器123可选包括相对于处理器124远程设置的存储器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。缓存器123可以为静态随机存取存储器(StaticRandom Access Memory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random AccessMemory,DDR SRAM)。
闪存控制器124,与闪存介质110、数据转换器121、处理器122以及缓存器123连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机200发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责闪存转换层(Flashtranslation layer,FTL)的核心处理。
接口125,连接主机200以及数据转换器121、处理器122以及缓存器123,用于接收主机200发送的数据,或者,接收处理器122发送的数据,实现主机200与处理器122之间的数据传输,接口125可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2 NVME/SATA协议。
请再参阅图2,图2是本申请实施例提供的一种闪存设备控制器的结构示意图;其中,该闪存设备控制器属于上述的闪存设备。
如图2所示,该闪存设备控制器120,包括:PCIe接口控制器126、DDR控制器127、NVMe接口控制器128、处理器122、外设模块129、数据通路模块1210以及闪存控制器124。
具体的,PCIe接口控制器126,用于PCIe通信协议的控制,DDR控制器127,用于动态随机存储器的控制,NVMe接口控制器128用于NVMe通信协议的控制,外设模块129用于其他相关通信协议的控制,数据通路模块1210用于数据通路的控制,例如:写缓存的管理,闪存控制器124用于闪存的数据处理。
其中,该闪存设备控制器120,还包括数据转换器121、缓存器123、接口125等。
具体的,数据转换器121,分别与处理器和闪存控制器连接,数据转换器用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当闪存控制器向所述闪存介质写入数据时,通过数据转换器将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质。当闪存控制器从闪存介质读取数据时,通过数据转换器将闪存介质中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,数据转换器可以包括二进制数据寄存器和十六进制数据寄存器。二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。
具体的,处理器122,分别与数据转换器121、缓存器123、闪存控制器124以及接口125连接,其中,处理器与数据转换器、缓存器、闪存控制器以及接口可以通过总线或者其他方式连接,处理器用于运行存储在缓存器中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例。
具体的,缓存器,主要用于缓存主机发送的读/写指令以及根据主机发送的读/写指令从闪存介质获取的读数据或者写数据。缓存器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。缓存器可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,缓存器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,缓存器可选包括相对于处理器远程设置的存储器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。缓存器可以为静态随机存取存储器(Static Random Access Memory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(DoubleDataRate Synchronous Dynamic Random Access Memory,DDR SRAM)。
具体的,闪存控制器124,与闪存介质、数据转换器、处理器以及缓存器连接,用于访问后端的闪存介质,管理闪存介质的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责闪存转换层(Flash translationlayer,FTL)的核心处理。
具体的,接口,连接主机以及数据转换器、处理器以及缓存器,用于接收主机发送的数据,或者,接收处理器发送的数据,实现主机与处理器之间的数据传输,接口可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2 NVME/SATA协议。
请参阅图3,图3是本申请实施例提供的一种主机写入数据的模块交互示意图;
如图3所示,该模块交互示意图包括主机模块(HOST模块)、前端模块(FE模块)、闪存转换层模块(FTL模块)、后端模块(BE模块)、硬件模块(HW Op Nand Module)。
需要说明的是,主机模块(HOST模块)是指可以直接发出操控命令的计算机,该主机模块包括但不限于个人计算机(PC,Personal Computer),主计算机(host computer),上位计算机(upper computer);前端模块(FE模块)用于处理主机的协议,或者用于进行数据收发处理;闪存转换层模块(FTL模块)指的是闪存介质 (Flash Memory)与设备主控器(Device Controller)之间的连接层,该闪存转换层模块(FTL模块)用于将主机模块(例如,电脑、手机等)发送至Device(例如,eMMC、SSD等)的逻辑地址转换为写入Flash的物理地址,即地址映射管理;后端模块(BE模块,Back End)用于控制硬件模块(HW Op Nand Module);硬件模块(HW Op Nand Module)用于操作闪存(Nand)的硬件模块。
在本申请实施例中,当主机写入数据时,主机模块(HOST模块)发送写入数据的命令给device(装置),device的前端模块(FE模块)收到命令之后进行处理,并将处理后的指令发送至闪存转换层模块(FTL模块),闪存转换层模块(FTL模块)收到该指令后,通过逻辑到物理的转化处理,将请求Nand写操作发送给后端模块(BE模块),后端模块(BE模块)收到请求Nand写操作之后,将硬件指令发送给硬件模块(HW Op Nand Module),采用并行方式进行写Nand操作处理。
请参阅图4,图4是本申请实施例提供的一种闪存封装芯片的结构示意图;
如图4所示,该闪存封装芯片(Chip)中包括多个裸片(Die),例如:裸片0(Die 0),裸片1(Die 1),……,裸片M(Die M),其中,每一个裸片包括多个分组(Plane),每一个分组包括多个物理块(Phy block,phy blk),其中,多个物理块构成一个超级块(Super Block,sblk),其中,Die为Flash内部的单元,Plane为Flash组织单元,Phy block为物理块,SuperBlock为超级块。
在本申请实施例中,每个Die由多个Plane组成,每个plane包含多个phy blk,每个sblk包含多个phy blk,需要注意的是,从所有Die的每个Plane挑选一个phy blk组成一个sblk。
图4是以1个Die中包含4个Plane进行举例说明,如图4,sblk 0是由die 0中的phyblk 0、phy blk 1、phy blk 2、phy blk3和die 1 的phy blk 0、phy blk 1、phy blk 2、phyblk3以及die M中的 phy blk 0、phy blk 1、phy blk 2、phy blk3组成;
sblk 1是由 die 0 中的phy blk 4、phy blk 5、phy blk 6、phy blk 7和 die 1中的phy blk 4、phy blk 5、phy blk 6、phy blk 7以及die M 中的phy blk 4、phy blk 5、phy blk 6、phy blk 7组成;
sblk N是由 die 0 中的 phy blk 4*N、phy blk 4*N+1、phy blk 4*N+2、phy blk4*N+3和 die 1 中的phy blk 4*N、phy blk 4*N+1、phy blk 4*N+2、phy blk 4*N+3以及die M 中的phy blk 4*N、phy blk 4*N+1、phy blk 4*N+2、phy blk 4*N+3组成。
请参阅图5,图5是本申请实施例提供的一种读操作处理的流程示意图;
需要说明的是,每个超级块(sblk)中都存在一个记录该超级块的读次数的变量,即读操作次数,假设该读操作次数为read count_in_Sblk,下面简称为RC值,RC值表示超级块(sblk)内的读操作次数,也即数据读取次数,当该RC值大于或等于读干扰的阈值,则需要对该超级块(sblk)进行数据搬移。
如图5所示,读操作处理的流程,包括:
步骤S501:对超级块进行初始化操作,将闪存设备中的所有超级块的数据读取次数置为0;
步骤S502:主机模块向闪存设备发送读操作请求,其中,读操作请求包括超级块的物理地址;
步骤S503:闪存设备解析读操作请求,根据读操作请求,找到对应的超级块,并将该超级块的数据读取次数加1;
步骤S504:判断该超级块的数据读取次数是否大于或等于读干扰的阈值;
具体的,读干扰的阈值为RC阈值,其中,读干扰的阈值为超级块中的物理块的RC阈值*超级块中物理块的数目,若该超级块的RC值大于或等于读干扰的阈值,则进入步骤S505;若该超级块的RC值小于读干扰的阈值,则进入步骤S506。
步骤S505:启动慢速搬移模式将该超级块中的数据搬移到新的超级块;
步骤S506:读操作完成。
图5中的方法是将超级块(sblk)的RC阈值设置为512*A,但一个 sblk 有很多 phyblock,如果读干扰一直读的是某一个物理块,例如:phy block A,而其他的物理块没有被读到,此时,若phy block A 上读的次数较高,例如:到达512*A,此时容易导致数据发生不可纠正的错误(uncorrectable error,unc),针对上述问题,本申请的发明构思为将每个超级块(sblk)的RC值设置为该超级块(sblk)所管辖的物理块(phy blk)中的最大RC值,以避免出现不可纠正的错误。
具体的,请参阅图6,图6是本申请实施例提供的一种数据搬移方法的流程示意图;
其中,该数据搬移方法,应用于闪存设备,具体的,该闪存设备包括多个超级块,每一个超级块包括多个物理块。
如图6所示,该数据搬移方法,包括:
步骤S601:获取超级块的数据读取次数以及超级块中的物理块的数据读取次数;
具体的,在获取超级块的数据读取次数以及超级块中的每一个物理块的数据读取次数之前,对超级块(sblk)进行初始化操作,即将闪存设备中的所有超级块(sblk)的RC值置为0,需要注意的是,在后续过程中,超级块(sblk)的RC值会保存在闪存设备中,无需再重复初始化操作,将由主机模块(HOST模块)向闪存设备发送读操作请求,闪存设备解析读操作请求,根据读操作请求,确定该读操作请求对应的超级块(sblk)的物理地址以及物理块地址,将该物理块地址对应的物理块的数据读取次数(RC值)加1之后,获取该读操作请求对应的超级块的数据读取次数以及该物理块的数据读取次数,其中,该超级块的数据读取次数为超级块中的所有物理块的数据读取次数中的最大值。
步骤S602:若该物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则将超级块的当前数据读取次数更新为该物理块的当前数据读取次数;
具体的,每次当主机模块(HOST模块)向闪存设备发送读操作请求,闪存设备解析读操作请求之后,将该读操作请求对应的物理块的数据读取次数(RC值)加1,得到该读操作请求对应的物理块的当前数据读取次数,判断该读操作请求对应的物理块的当前数据读取次数是否大于该物理块对应的超级块的数据读取次数,若该读操作请求对应的物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则将超级块的当前数据读取次数更新为该物理块的当前数据读取次数,若该读操作请求对应的物理块的当前数据读取次数小于或等于该物理块对应的超级块的数据读取次数,则不更新该超级块的数据读取次数。
步骤S603:若超级块的当前数据读取次数大于或等于物理块读取次数阈值,则对超级块进行数据搬移;
在本申请实施例中,物理块读取次数阈值为物理块发生读干扰的临界值,当主机模块频繁地读取某些区域且当读取次数足够大时,以闪存(Nand)作为存储介质的闪存设备会出现故障问题,该故障问题被称为读干扰,如果对某一个物理块读取的次数超过一定的阈值,保存在Nand中的数据会出现不可纠正的错误(uncorrectable error,unc),从而导致数据丢失,需要注意的是,该物理块读取次数阈值可根据实际需要进行设置,例如,将物理块读取次数阈值设置为100万次,本申请在此不作限定。
具体的,判断超级块的当前数据读取次数大于或等于物理块读取次数阈值,若超级块的当前数据读取次数大于或等于物理块读取次数阈值,也相当于当该超级块中的某一物理块的数据读取次数大于或等于物理块读取次数阈值时,则对超级块进行数据搬移。
可以理解的是,若超级块的当前数据读取次数小于物理块读取次数阈值,则无需进行数据搬移操作。
请再参阅图7,图7是本申请实施例提供的另一种读操作处理的流程示意图;
如图7所示,该读操作处理的流程,包括:
步骤S701:对闪存设备的超级块进行初始化操作;
具体的,将闪存设备中的所有超级块的数据读取次数设置为0。
步骤S702:主机模块向闪存设备发送读操作请求;
步骤S703:闪存设备解析读操作请求,根据读操作请求,找到对应的超级块的物理地址以及物理块地址;
步骤S704:增加该物理块的数据读取次数;
具体的,增加该物理块地址对应的物理块的数据读取次数,例如:将该物理块的数据读取次数加1。
步骤S705:判断该物理块的当前数据读取次数是否大于该物理块对应的超级块的数据读取次数;
具体的,若该物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则进入步骤S706;若该物理块的当前数据读取次数小于或等于该物理块对应的超级块的数据读取次数,则进入步骤S709。
步骤S706:将超级块的当前数据读取次数更新为该物理块的当前数据读取次数;
步骤S707:判断超级块的当前数据读取次数是否大于或等于物理块读取次数阈值;
具体的,若超级块的当前数据读取次数大于或等于物理块读取次数阈值,则进入步骤S708;若超级块的当前数据读取次数小于物理块读取次数阈值,则进入步骤S709。
步骤S708:启动该超级块的数据搬移任务,对该超级块进行数据搬移;
步骤S709:读操作完成。
由于图7中的方法步骤已在上文中进行详细解释,此处不作过多赘述。
请再结合图5,图5中的超级块(sblk)的RC阈值等于超级块中的物理块的RC阈值*超级块中物理块的数目,假设phy block 的读干扰阈值为A,该超级块(sblk)占用了512个phy block,则按照图5的方式,超级块(sblk)的RC阈值设置为512*A,该方式存在的问题是:一个超级块(sblk)中包含有多个 phy block,如果一直读的是 phy block A,其他的phyblock 均未读到,那么phy block A的RC值就高达512*A,此时数据可能已经出现不可纠正的错误(unc),为了解决该问题,图7与图5的不同之处在于而图7中的每个超级块(sblk)的RC值是该超级块(sblk)所管辖的物理块(phy blk)中的最大RC值,图7的方法带来的好处是可以避免某一物理块的数据读取次数过高。
请再参阅图8,图8是图6中的步骤S603的细化流程示意图;
如图8所示,步骤S603:对超级块进行数据搬移,包括:
步骤S6031:确定超级块的访问模式;
其中,超级块的访问模式包括小区域读模式和普通访问模式。
具体的,请再参阅图9,图9是图8中的步骤S6031的细化流程示意图;
如图9所示,步骤S6031:确定超级块的访问模式,包括:
步骤S6311:每间隔固定时间,获取一次超级块的数据读取次数;
具体的,启动定时检测任务,该定时检测任务为每间隔固定时间,获取一次超级块的数据读取次数,其中,固定时间可以根据实际需要进行设置,本申请在此不作限定,例如,将固定时间设置为5s。
步骤S6312:计算当前超级块的读取次数与该超级块上一次数据读取次数的差值;
具体的,将该超级块的当前超级块的读取次数与该超级块上一次数据读取次数进行比较,通过计算得到当前超级块的读取次数与该超级块上一次数据读取次数的差值。
步骤S6313:判断差值是否大于差值阈值;
具体的,若差值大于差值阈值,则进入步骤S6314;若差值小于或等于差值阈值,则进入步骤S6315。
步骤S6314:确定超级块的访问模式为小区域读模式;
具体的,若当前超级块的读取次数与该超级块上一次数据读取次数的差值大于差值阈值,说明在该固定时间间隔内,该超级块的数据读取次数频繁,则确定超级块的访问模式为小区域读模式。
步骤S6315:确定超级块的访问模式为普通访问模式;
具体的,若当前超级块的读取次数与该超级块上一次数据读取次数的差值小于或等于差值阈值,说明在该固定时间间隔内,该超级块的数据读取次数不频繁,则确定超级块的访问模式为普通访问模式。
请再参阅图5,图5中的步骤S505为启动慢速搬移模式将该超级块(sblk)搬移到新的超级块(sblk),该方式存在的问题为当超级块Sblk a中的某个区域,以下简称Hot区域,被主机模块频繁地读,造成RC值过高之后,超级块Sblk a需要将数据搬移到新的Sblk b,但根据图5中的慢速搬移方法,当Hot区域已经搬到 Sblk b之后,主机模块还是在频繁地读Hot 区域,由于Sblk a 搬移到Sblk b的这个过程中,数据搬移速度比较慢,Hot区域在Sblkb内一直被频繁的读,Sblk b内对应的 phy blk 的数据读取次数容易超过阈值,造成不可纠正的错误(unc)。与图5相比,图9中的方法通过识别小区域读模式,以对超级块进行快速搬移,能够避免在数据搬移的过程中,出现不可纠正的错误。
步骤S6032:根据超级块的访问模式,对超级块进行数据搬移;
请再参阅图10,图10是图8中的步骤S6032的细化流程示意图;
如图10所示,步骤S6032:根据超级块的访问模式,对超级块进行数据搬移,包括:
步骤S6321:获取超级块的访问模式;
具体的,根据上述步骤中的每一物理块的数据读取次数与超级块的当前数据读取次数的差值,获取超级块的访问模式,其中,超级块的访问模式包括小区域读模式和普通访问模式。
步骤S6322:判断超级块的访问模式是否为小区域读模式;
具体的,小区域读指的是主机模块针对闪存设备中的某个特定的区域一直进行快速的读操作,例如,主机模块对某个大小为100M的区域一直进行快速的读操作。针对小区域读,本申请采用小区域读模式对超级块进行访问,避免数据发生不可纠正的错误,若超级块的访问模式是小区域读模式,则进入步骤S6324;若超级块的访问模式不是小区域读模式,则进入步骤S6323。
步骤S6323:通过第二数据搬移模式对超级块进行数据搬移;
具体的,若超级块的访问模式不是小区域读模式,说明主机模块针对闪存设备中的该超级块的读操作不频繁,则通过第二数据搬移模式对该超级块进行数据搬移,其中,第二数据搬移模式包括慢速搬移模式。
步骤S6324:通过第一数据搬移模式对超级块进行数据搬移;
具体的,若超级块的访问模式是小区域读模式,说明主机模块针对闪存设备中的该超级块一直进行快速的读操作,需要快速搬移数据,则通过第一数据搬移模式对超级块进行数据搬移,其中,第一数据搬移模式包括快速搬移模式。
在本申请实施例中,第一数据搬移模式包括快速搬移模式,该快速搬移模式对应第一IO并发数量,第二数据搬移模式包括慢速搬移模式,该慢速搬移模式对应第二IO并发数量,其中,第一IO并发数量大于第二IO并发数量。
可以理解的是,数据搬移就是读和写,并发数量多,则说明同时做的读写IO就多,此时数据搬移的速度较快。同理,并发数量少,则说明同时读写的IO就少,此时数据搬移的速度较慢,例如:快速搬移模式对应的第一IO并发数量为128个,慢速搬移模式对应的第二IO并发数量为4个,甚至1个,因此,快速搬移模式能够更快地对超级块进行数据搬移。
请再参阅图11,图11是本申请实施例提供的一种对闪存设备进行数据搬移的流程示意图;
如图11所示,对闪存设备进行数据搬移的流程,包括:
步骤S111:确定闪存设备的主机访问模式;
请再参阅图12,图12是图11中的步骤S111的细化流程示意图;
如图12所示,步骤S111:确定闪存设备的主机访问模式,包括:
步骤S1101:对闪存设备的全部超级块进行全盘扫描。
具体的,请再参阅图13,图13是图12中的S1101的细化流程示意图;
如图13所示,步骤S1101:对闪存设备的全部超级块进行全盘扫描,包括:
步骤S1111:设置临时备份窗口;
具体的,设置临时备份窗口,该临时备份窗口用于保存当前时间点的预设数量个超级块的初始数据读取次数,将预设数量个超级块的初始数据读取次数保存至该临时备份窗口,可以理解的是,当前时间点为预设时间的起始时间点。需要说明的是,该预设数量个超级块的获取方式是从闪存设备全盘的超级块中选取预设数量个超级块,该预设数量可以根据实际需要进行设置,例如:设置为50个,本申请对此不作限定。
步骤S1112:达到预设时间之后,对预设数量个超级块进行遍历扫描,得到更新后的数据读取次数;
具体的,启动定时检测任务,该定时检测任务为每间隔固定时间,对预设数量个超级块进行遍历扫描,由于主机模块在该固定时间内会对该预设数量个超级块进行读操作,所以超级块的数据读取次数会改变,通过遍历扫描得到更新后的数据读取次数,其中,预设时间可以根据实际需要进行设置,本申请在此不作限定,例如,将预设时间设置为5s。
步骤S1113:计算每一个超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值;
具体的,计算每一个超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值,也即获取更新后的数据读取次数相较于初始数据读取次数的增量。
步骤S1114:判断是否存在某一个超级块的差值大于差值阈值;
具体的,判断是否存在某一个超级块的差值大于差值阈值,若存在某一个超级块的差值大于差值阈值,说明主机模块读取预设数量个超级块的次数频繁,则进入步骤S1115;若不存在某一个超级块的差值大于差值阈值,说明主机模块读取该预设数量个超级块的次数不频繁,需要进一步判断下一预设数量个超级块的数据读取次数是否频繁,则进入步骤S1116。
步骤S1115:确定闪存设备的主机访问模式为小区域读模式;
具体的,若存在某一个超级块的差值大于差值阈值,说明主机模块读取预设数量个超级块的次数频繁,此时无需再判断下一预设数量个超级块的数据读取次数是否频繁,直接确定闪存设备的主机访问模式为小区域读模式。
步骤S1116:更新临时备份窗口,并对下一预设数量个超级块进行遍历扫描,以遍历闪存设备的全部超级块;
具体的,若不存在某一个超级块的差值大于差值阈值,说明主机模块读取该预设数量个超级块的次数不频繁,需要进一步判断下一预设数量个超级块的数据读取次数是否频繁,则更新临时备份窗口,并对下一预设数量个超级块进行遍历扫描,以遍历闪存设备的全部超级块,可以理解的是,当闪存设备全盘的超级块的差值均未大于差值阈值,则将闪存设备的主机访问模式确定为普通访问模式。
请再参阅图14,图14是本申请实施例提供的一种备份窗口的示意图;
如图14所示,假设将闪存设备全盘的超级块为50*n个,等分为预设数量个超级块,该预设数量设置为50个,即闪存设备全盘包括n组超级块,根据图13中的方法步骤,先将前50个超级块,即第1组超级块的初始数据读取次数保存入临时备份窗口,若前50个超级块中不存在某一个超级块的差值小于或等于差值阈值,则将后50个超级块,即第2组超级块的初始数据读取次数保存入临时备份窗口,以此类推,直至扫描到最后一组超级块,若仍未发现存在某一个超级块的差值大于差值阈值,则将闪存设备的主机访问模式确定为普通访问模式,反之,则将闪存设备的主机访问模式确定为小区域读模式。
请再参阅图15,图15是本申请实施例提供的一种判断全盘扫描的次数是否大于全盘扫描次数阈值的流程示意图;
如图15所示,判断全盘扫描的次数是否大于全盘扫描次数阈值的流程,包括:
步骤S1501:在当前的超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值小于或等于差值阈值时,获取全盘扫描的次数;
具体的,全盘扫描指的是闪存设备中的全部超级块均被扫描,且未发现存在某一个超级块的差值大于差值阈值,即在当前的超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值小于或等于差值阈值时,每间隔预设时间则会进行一次全盘扫描,获取一次当前全盘扫描的次数。
步骤S1502:判断全盘扫描的次数是否大于全盘扫描次数阈值;
具体的,根据当前全盘扫描的次数,判断全盘扫描的次数是否大于全盘扫描次数阈值,若全盘扫描的次数大于全盘扫描次数阈值,则进入步骤S1503;若全盘扫描的次数小于或等于全盘扫描次数阈值,则进入步骤S1504,需要注意的是,该全盘扫描次数阈值可根据实际需要进行设置,本申请在此不作限定,例如,将该全盘扫描次数阈值设置为3次。
步骤S1503:确定闪存设备的主机访问模式为普通访问模式;
具体的,若全盘扫描的次数大于全盘扫描次数阈值,说明在一段时间内未发现存在某一个超级块的差值大于差值阈值,主机模块并未频繁读取超级块中的数据,此时可确定闪存设备的主机访问模式为普通访问模式。
步骤S1504:继续扫描下一个超级块;
具体的,若全盘扫描的次数小于或等于全盘扫描次数阈值,说明此时全盘扫描的次数未达到确定闪存设备的主机访问模式为普通访问模式的条件,需要继续扫描下一个超级块的数据读取次数,以确定闪存设备的主机访问模式。
步骤S112:根据闪存设备的主机访问模式,对闪存设备进行数据搬移;
请再参阅图16,图16是图11中的步骤S112的细化流程示意图;
如图16所示,步骤S112:根据闪存设备的主机访问模式,对闪存设备进行数据搬移,包括:
步骤S1121:获取闪存设备的主机访问模式;
具体的,结合图13和图15中的方法步骤,获取闪存设备的主机访问模式,其中,闪存设备的主机访问模式包括小区域读模式,普通访问模式。
步骤S1122:判断闪存设备的主机访问模式是否为小区域读模式;
具体的,判断闪存设备的主机访问模式是否为小区域读模式,若闪存设备的主机访问模式为小区域读模式,则进入步骤S1123;若闪存设备的主机访问模式为普通访问模式,则进入步骤S1124。
步骤S1123:通过第一数据搬移模式对闪存设备中的超级块进行数据搬移;
具体的,通过第一数据搬移模式对闪存设备中的超级块进行数据搬移,其中,第一数据搬移模式包括快速搬移模式。
步骤S1124:通过第二数据搬移模式对闪存设备中的超级块进行数据搬移;
具体的,通过第二数据搬移模式对闪存设备中的超级块进行数据搬移,其中,第二数据搬移模式包括慢速搬移模式。
请再参阅图17,图17是本申请实施例提供的一种判断闪存设备的主机访问模式的整体流程示意图;
如图17所示,判断闪存设备的主机访问模式的整体流程,包括:
步骤S1701:将闪存设备中的预设数量个超级块的数据读取次数暂存至临时备份窗口;
具体的,假设闪存设备全盘的超级块的数量为50*n个,等分为预设数量个超级块,该预设数量设置为50个,即闪存设备全盘包括n组超级块,scanSblk为起始超级块,上电初始化scanSblk=0,将前50个超级块的数据读取次数sblk_RC[0-49]依次赋值暂存到临时备份窗口sblk_RC _Back[0-49]中。
步骤S1702:启动定时扫描任务;
具体的,启动定时扫描任务,假设将固定时间间隔设置为5s,判断是否达到5s时间间隔,若达到5s时间间隔,则进入步骤S1703。
步骤S1703:获取当前的超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值;
具体的,计算每一个超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值,也即获取更新后的数据读取次数相较于初始数据读取次数的增量。
步骤S1704:判断预设数量个超级块的更新后的数据读取次数和临时备份窗口中的数据读取次数的差值是否大于差值阈值;
具体的,假设预设数量为50个,依次比较从起始超级块(scanSblk)开始的后面50个超级块的更新后的数据读取次数(sblk_RC)和临时备份窗口中的数据读取次数(sblk_RC_Back)差值,判断Sblk_RC_Back - sblk_RC是否大于差值阈值,若该差值大于差值阈值,则进入步骤S1705;若该差值小于或等于差值阈值,则进入步骤S1706。
步骤S1705:确定主机访问模式为小区域访问模式,启动第一数据搬移模式;
具体的,若Sblk_RC_Back - sblk_RC大于差值阈值,则判定主机访问模式为小区域访问模式,启动快速搬移模式,对超级块进行数据搬移。
步骤S1706:判断全盘扫描的次数是否大于全盘扫描次数阈值;
具体的,全盘扫描指的是闪存设备中的全部超级块均被扫描,且未发现存在某一个超级块的差值大于差值阈值,即在当前的超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值小于或等于差值阈值时,每间隔预设时间则会进行一次全盘扫描,获取一次当前全盘扫描的次数。假设全盘扫描的次数为LoopNumber,全盘扫描次数阈值为X,则当LoopNumber>X时,进入步骤S1707;当LoopNumber≤X时,进入步骤S1708。
步骤S1707:确定主机访问模式为普通访问模式;
具体的,若差值阈值小于或等于差值阈值,则判定主机访问模式为普通访问模式。
步骤S1708:判断该预设数量个超级块是否已经扫描完;
具体的,由于当前的超级块(Cur_Sblk)为记录超级块序号的变量,Cur_Sblk的取值区间为[0-49],判断Cur_Sblk是否等于49,即可判断该50个超级块是否已经扫描完,若该50个超级块已经扫描完,则进入步骤S1710;若该50个超级块未被扫描完,则进入步骤S1709。
步骤S1709:扫描下一个超级块;
具体的,若该50个超级块未被扫描完,则将Cur_Sblk更新为下一个超级块的序号,继续扫描下一个超级块的差值是否大于差值阈值。
步骤S1710:将后预设数量个超级块的数据读取次数暂存至临时备份窗口;
具体的,确定主机访问模式之后,由于上一组的起始超级块(scanSblk)为0,将起始超级块(scanSblk)加上50表示开始遍历后50个超级块,将从scanSblk 开始后面连续的50个sblk的sblk_RC[scanSblk]到sblk_RC[scanSblk + 49]依次赋值暂存到sblk_RC_Back[0 - 49]中。
步骤S1711:判断全盘所有的超级块是否均未发生小区域读;
具体的,判断全盘所有的超级块是否均未发生小区域读,若全盘所有的超级块是否均未发生小区域读,则进入步骤S1712,继续下一轮全盘扫描;若全盘所有的超级块发生小区域读,则进入步骤S1713,继续下一轮全盘扫描。
步骤S1712:完成一轮扫描之后,将全盘扫描的次数增加1次;
具体的,全盘扫描指的是闪存设备中的全部超级块均被扫描,且未发现存在某一个超级块的差值大于差值阈值,即在当前的超级块的更新后的数据读取次数与临时备份窗口中的数据读取次数的差值小于或等于差值阈值时,每间隔预设时间则会进行一次全盘扫描,完成一轮扫描之后,将全盘扫描的次数增加1。
步骤S1713:结束定时任务。
在本申请实施例中,通过提供一种数据搬移方法,应用于闪存设备,该闪存设备包括多个超级块,每一个超级块包括多个物理块,该数据搬移方法,包括:获取超级块的数据读取次数以及超级块中的物理块的数据读取次数,其中,超级块的数据读取次数为超级块中的所有物理块的数据读取次数中的最大值;若该物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则超级块的当前数据读取次数更新为该物理块的当前数据读取次数;若超级块的当前数据读取次数大于或等于物理块读取次数阈值,则对超级块进行数据搬移,本申请能够通过获取超级块的数据读取次数和物理块的数据读取次数,确定超级块的访问模式,避免出现不可纠正的错误,并提高闪存设备的读性能。
本申请实施例还提供了一种非易失性计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由处理器执行以完成上述实施例中的数据搬移方法。例如,该非易失性计算机可读存储介质可以是只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CDROM)、磁带、软盘和光数据存储设备等。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括一条或多条程序代码,该程序代码存储在非易失性计算机可读存储介质中。闪存设备的处理器从非易失性计算机可读存储介质读取该程序代码,处理器执行该程序代码,以完成上述实施例中提供的数据搬移方法的方法步骤。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来程序代码相关的硬件完成,该程序可以存储于一种非易失性计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,程序可存储于非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (7)
1.一种数据搬移方法,其特征在于,应用于闪存设备,所述闪存设备包括多个超级块,每一个超级块包括多个物理块,所述方法包括:
获取所述超级块的数据读取次数以及所述超级块中的物理块的数据读取次数,其中,所述超级块的数据读取次数为所述超级块中的所有物理块的数据读取次数中的最大值;
若所述物理块的当前数据读取次数大于该物理块对应的超级块的数据读取次数,则将所述超级块的当前数据读取次数更新为该物理块的当前数据读取次数;
若所述超级块的当前数据读取次数大于或等于物理块读取次数阈值,则对所述超级块进行数据搬移;
所述对所述超级块进行数据搬移,包括:
确定所述超级块的访问模式;
根据所述超级块的访问模式,对所述超级块进行数据搬移;
所述确定所述超级块的访问模式,包括:
每间隔固定时间,获取一次所述超级块的数据读取次数;
计算当前超级块的读取次数与所述超级块上一次数据读取次数的差值;
若所述差值大于差值阈值,则确定所述超级块的访问模式为小区域读模式;
若所述差值小于或等于差值阈值,则确定所述超级块的访问模式为普通访问模式;
所述根据所述超级块的访问模式,对所述超级块进行数据搬移,包括:
若所述超级块的访问模式为小区域读模式,则通过第一数据搬移模式对所述超级块进行数据搬移,其中,第一数据搬移模式包括快速搬移模式;
若所述超级块的访问模式为普通访问模式,则通过第二数据搬移模式对所述超级块进行数据搬移,其中,第二数据搬移模式包括慢速搬移模式。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述闪存设备的主机访问模式;
根据所述闪存设备的主机访问模式,对所述闪存设备进行数据搬移。
3.根据权利要求2所述的方法,其特征在于,所述确定所述闪存设备的主机访问模式,包括:
对所述闪存设备的全部超级块进行全盘扫描,具体包括:
设置临时备份窗口,其中,所述临时备份窗口用于存储当前时间点的预设数量个超级块的数据读取次数;
达到预设时间之后,对预设数量个超级块进行遍历扫描,得到更新后的数据读取次数;
计算每一个超级块的更新后的数据读取次数与所述临时备份窗口中的数据读取次数的差值;
若存在某一个超级块的差值大于差值阈值,则确定所述闪存设备的主机访问模式为小区域读模式;
若全部差值均小于或等于差值阈值,则更新所述临时备份窗口,并对下一预设数量个超级块进行遍历扫描,以遍历所述闪存设备的全部超级块。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在当前的超级块的更新后的数据读取次数与所述临时备份窗口中的数据读取次数的差值小于或等于差值阈值时,获取全盘扫描的次数;
判断全盘扫描的次数是否大于全盘扫描次数阈值;
若否,则继续扫描下一个超级块;
若是,则确定所述闪存设备的主机访问模式为普通访问模式。
5.根据权利要求2-4任一项所述的方法,其特征在于,根据所述闪存设备的主机访问模式,对所述闪存设备进行数据搬移,包括:
若所述闪存设备的主机访问模式为小区域读模式,则通过第一数据搬移模式对所述闪存设备中的超级块进行数据搬移,其中,第一数据搬移模式包括快速搬移模式;
若所述闪存设备的主机访问模式为普通访问模式,则通过第二数据搬移模式对所述闪存设备中的超级块进行数据搬移,其中,第二数据搬移模式包括慢速搬移模式。
6.一种闪存设备控制器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-5任一项所述的数据搬移方法。
7.一种闪存设备,其特征在于,包括:
如权利要求6所述的闪存设备控制器;
与所述闪存设备控制器通信连接的至少一个闪存介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310654208.4A CN116382598B (zh) | 2023-06-05 | 2023-06-05 | 数据搬移方法、闪存设备控制器及闪存设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310654208.4A CN116382598B (zh) | 2023-06-05 | 2023-06-05 | 数据搬移方法、闪存设备控制器及闪存设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116382598A CN116382598A (zh) | 2023-07-04 |
CN116382598B true CN116382598B (zh) | 2023-09-08 |
Family
ID=86971621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310654208.4A Active CN116382598B (zh) | 2023-06-05 | 2023-06-05 | 数据搬移方法、闪存设备控制器及闪存设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116382598B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109901792A (zh) * | 2017-12-08 | 2019-06-18 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN111708481A (zh) * | 2020-04-24 | 2020-09-25 | 浙江大学 | 一种基于超级块的固态硬盘ssd双区磨损均衡处理方法 |
CN112650442A (zh) * | 2019-10-11 | 2021-04-13 | 爱思开海力士有限公司 | 存储器系统、存储器控制器及操作方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9632712B2 (en) * | 2014-07-02 | 2017-04-25 | Sandisk Technologies Llc | System and method of updating metablocks associated with multiple memory dies |
US10387243B2 (en) * | 2017-12-08 | 2019-08-20 | Macronix International Co., Ltd. | Managing data arrangement in a super block |
-
2023
- 2023-06-05 CN CN202310654208.4A patent/CN116382598B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109901792A (zh) * | 2017-12-08 | 2019-06-18 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN112650442A (zh) * | 2019-10-11 | 2021-04-13 | 爱思开海力士有限公司 | 存储器系统、存储器控制器及操作方法 |
CN111708481A (zh) * | 2020-04-24 | 2020-09-25 | 浙江大学 | 一种基于超级块的固态硬盘ssd双区磨损均衡处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116382598A (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086529B2 (en) | Data storage systems and methods for improved data relocation based on read-level voltages associated with error recovery | |
CN106067321B (zh) | 适于存储器编程暂停-恢复的控制器 | |
US9043517B1 (en) | Multipass programming in buffers implemented in non-volatile data storage systems | |
US11704239B2 (en) | Garbage collection method for storage medium, storage medium, and program product | |
US11347398B2 (en) | Memory system chip that suspends transfer phase and resumes transfer phase | |
US10643711B1 (en) | Workload based dynamic erase suspend adaptation | |
JP2019200833A (ja) | メモリアクセス動作のサスペンド/再開 | |
KR102411329B1 (ko) | 디코딩 성공 추세에 기초한 조정가능한 판독 재시도 순서 | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
US10628081B2 (en) | Managing internal command queues in solid state storage drives | |
US11086568B2 (en) | Memory system for writing fractional data into nonvolatile memory | |
TWI467574B (zh) | 記憶體儲存裝置、記憶體控制器與其資料傳輸方法 | |
CN112596681A (zh) | 一种重读命令处理方法、闪存控制器及固态硬盘 | |
US20140372831A1 (en) | Memory controller operating method for read operations in system having nonvolatile memory device | |
US11442635B2 (en) | Data storage systems and methods for optimized scheduling of background management operations | |
US10528269B2 (en) | Advanced flash scan algorithm | |
US20080291731A1 (en) | Methods For Optimizing Page Selection In Flash-Memory Devices | |
CN103106155B (zh) | 存储器储存装置、存储器控制器与其数据传输方法 | |
CN113467713B (zh) | 数据分离方法及固态硬盘 | |
US20240120012A1 (en) | Multi-sampled, charge-sharing thermometer in memory device | |
CN116382598B (zh) | 数据搬移方法、闪存设备控制器及闪存设备 | |
CN113129943A (zh) | 基于闪存数据页存储结构的数据操作方法及固态硬盘 | |
CN109062511B (zh) | 一种数据读取的方法以及相关装置 | |
US11809326B2 (en) | Electronic system including host and memory system for performing read operation based on physical address received from the host | |
WO2023009122A1 (en) | Minimize delay times for status checks to flash memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |