CN115641887A - 闪存管理方法及闪存设备 - Google Patents
闪存管理方法及闪存设备 Download PDFInfo
- Publication number
- CN115641887A CN115641887A CN202211231769.5A CN202211231769A CN115641887A CN 115641887 A CN115641887 A CN 115641887A CN 202211231769 A CN202211231769 A CN 202211231769A CN 115641887 A CN115641887 A CN 115641887A
- Authority
- CN
- China
- Prior art keywords
- word line
- physical
- physical word
- data
- logical
- 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.)
- Pending
Links
- 238000007726 management method Methods 0.000 title claims abstract description 27
- 238000013507 mapping Methods 0.000 claims abstract description 118
- 238000000034 method Methods 0.000 claims abstract description 55
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims description 4
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 10
- 239000002245 particle Substances 0.000 description 7
- 239000008187 granular material Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本申请实施例涉及存储设备应用领域,公开了一种闪存管理方法及闪存设备,该闪存管理方法通过获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组,本申请能够利用映射表来映射逻辑字线和物理字线组,而物理字线组包括至少一个物理字线,至少两个物理字线包括的数据页的数量不完全相同,使得本申请能够适配不同类型的闪存颗粒,提高闪存设备对闪存颗粒的兼容性。
Description
技术领域
本申请涉及存储设备应用领域,特别是涉及一种闪存管理方法及闪存设备。
背景技术
闪存设备,例如:固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制单元和存储单元(FLASH存储芯片或DRAM存储芯片)。
目前,闪存设备通常是收集一段数据,并经过逻辑地址到物理地址的映射处理之后,将该段数据写入到数据块的字线中。
但是,由于架构工艺等原因,数据块内部的字线的大小不统一,即数据块内部的字线的数据页的数量不同,例如:某些字线包括1个数据页、2个数据页或3个数据页,使得数据写入字线需要进行算法改进,导致闪存设备对闪存颗粒的兼容性不足。
基于此,现有技术亟待改进。
发明内容
本申请实施例提供一种闪存管理方法及闪存设备,提高闪存设备对闪存颗粒的兼容性。
为解决上述技术问题,本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种闪存管理方法,应用于闪存设备,方法包括:
获取写请求,其中,写请求包括物理地址信息以及写入数据;
根据写请求对应的物理地址信息,获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;
根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组,其中,映射表包括逻辑字线和物理字线组的映射关系,物理字线组包括至少一个物理字线,至少两个物理字线包括的数据页的数量不完全相同,每一个物理字线包括若干数据页;
根据每一逻辑单元的逻辑字线对应的物理字线组,将写入数据写入到物理字线组对应的物理字线。
在一些实施例中,物理字线组中的最大物理字线对应的数据页的数量等于一个逻辑字线的数据页的数量。
在一些实施例中,在获取写请求之前,方法还包括:建立映射表;
建立映射表,具体包括:
若闪存设备的一个物理块包括两种物理字线,分别为第一物理字线和第二物理字线,则:
从序号最小的物理字线开始进行映射;
判断当前的物理字线是否是第一物理字线;
若是,则将连续的若干个第一物理字线组合为一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射;
若否,则确定当前的物理字线为第二物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,第一物理字线包括第一数量的数据页,第二物理字线包括第二数量的数据页,第二数量大于第一数量且逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
在一些实施例中,建立映射表,具体还包括:
若闪存设备的一个物理块包括三种物理字线,分别为第一物理字线、第二物理字线和第三物理字线,则:
从序号最小的物理字线开始进行映射;
判断当前的物理字线是否是第一物理字线,其中,第一物理字线包括第一数量的数据页;
若是,则将连续的若干个第一物理字线组合为一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射;
若否,则进一步判断当前的物理字线是否是第二物理字线,其中,第二物理字线包括第二数量的数据页,第二数量大于第一数量;
若当前的物理字线是第二物理字线,则将连续的若干个第二物理字线组合成一个第二物理字线组,并将一个第二物理字线组与一个逻辑字线进行映射;
若当前的物理字线不是第二物理字线,则确定当前的物理字线为第三物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,第三物理字线包括第三数量的数据页,第三数量大于第二数量且逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
在一些实施例中,建立映射表,具体还包括:
若闪存设备的一个物理块包括N种物理字线,分别为第一物理字线、第二物理字线,…,第N-1物理字线和第N物理字线,则:
若当前的物理字线不是第二物理字线,则继续判断当前的物理字线是否为第三物理字线;
若是,则将若干个第三物理字线组合成一个第三物理字线组,并将一个第三物理字线组与一个逻辑字线进行映射;
以此类推,直至判断当前的物理字线是否是第N-1物理字线;
若当前的物理字线是第N-1物理字线,则将若干个第N-1物理字线组合成一个第N-1物理字线组,并将一个第N-1物理字线组与一个逻辑字线进行映射;
若当前的物理字线不是第N-1物理字线,则确定当前的物理字线是第N物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,N为正整数且N大于第三数量,并且,每一逻辑字线的数据页的数量相同,并且,所述逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,逻辑字线与最大数量的数据页对应的物理字线一一对应,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
在一些实施例中,根据每一逻辑单元的逻辑字线对应的物理字线组,将写入数据写入到物理字线组对应的物理字线,包括:
将写入数据中与每一逻辑单元对应的数据并行写入到每一逻辑单元对应的物理字线组;其中,
若逻辑单元对应的物理字线组包括一个物理字线,则将写入数据中与该逻辑单元对应的数据写入到物理字线;
若逻辑单元对应的物理字线组包括至少两个物理字线,则将该写入数据中与该逻辑单元对应的数据写入到至少两个物理字线。
在一些实施例中,方法还包括:
若逻辑单元对应的物理字线组包括一个物理字线,则将写入数据中与该逻辑单元对应的数据写入到物理字线之后,确定写入完成;
若逻辑单元对应的物理字线组包括至少两个物理字线,则将该写入数据中与该逻辑单元对应的数据写入到至少两个物理字线之后,对物理字线组中的剩余空间填充无效数据,并确定写入完成;
其中,写入数据的数据量等于闪存设备的一个晶片的逻辑单元的数量*一个逻辑单元对应的数据页的数量*一个数据页的大小。
在一些实施例中,
物理地址信息包括晶片的地址、至少一个逻辑单元的地址、物理块的地址以及逻辑字线地址。
第二方面,本申请实施例提供一种闪存管理方法,应用于闪存设备,方法包括:
获取读请求,其中,读请求包括逻辑地址信息;
根据读请求对应的逻辑地址信息,获取逻辑字线地址;
根据逻辑字线地址对应的逻辑字线,查找映射表,确定逻辑字线对应的物理字线组,其中,映射表包括逻辑字线和物理字线组的映射关系,物理字线组包括至少一个物理字线,至少两个物理字线包括的数据页的数量不完全相同,每一个物理字线包括若干数据页;
根据物理字线组的物理字线地址,读取读请求对应的数据。
在一些实施例中,根据物理字线组的物理字线地址,读取读请求对应的数据,包括:
根据物理字线地址,确定物理字线地址对应的数据页地址,读取数据页地址对应的数据。
在一些实施例中,逻辑字线地址包括若干个逻辑数据页,其中,每一个逻辑数据页的大小等于一个物理数据页的大小,逻辑数据页的起始地址为第一个映射的物理字线的地址。
第三方面,本申请实施例提供一种闪存设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够用于执行如第一方面或第二方面的闪存管理方法。
第四方面,本申请实施例还提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使闪存设备能够执行如第一方面的闪存管理方法。
本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种闪存管理方法,应用于闪存设备,方法包括:获取写请求,其中,写请求包括物理地址信息以及写入数据;根据写请求对应的物理地址信息,获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组,其中,映射表包括逻辑字线和物理字线组的映射关系,物理字线组包括至少一个物理字线;根据每一逻辑单元的逻辑字线对应的物理字线组,将写入数据写入到物理字线组对应的物理字线。
一方面,通过获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组,本申请能够利用映射表来映射逻辑字线和物理字线组,而物理字线组包括至少一个物理字线,至少两个物理字线包括的数据页的数量不完全相同,使得本申请能够适配不同类型的闪存颗粒,提高闪存设备对闪存颗粒的兼容性;
另一方面,通过每一逻辑单元的逻辑字线对应的物理字线组,将写入数据写入到物理字线组对应的物理字线,本申请能够提高数据存储的稳定性。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种闪存设备的结构示意图;
图2是本申请实施例提供的一种闪存设备的固件系统的结构示意图;
图3是本申请实施例提供的一种NAND颗粒的示意图;
图4是本申请实施例提供的另一种NAND颗粒的示意图;
图5是本申请实施例提供的一种闪存管理方法的流程示意图;
图6是本申请实施例提供的一种逻辑字线与物理字线组进行映射的示意图;
图7是本申请实施例提供的一种建立映射表的流程示意图;
图8是本申请实施例提供的另一种建立映射表的流程示意图;
图9是本申请实施例提供的又一种建立映射表的流程示意图;
图10是图5中的步骤S504的细化流程示意图;
图11是本申请实施例提供的将数据写入闪存的流程示意图;
图12是本申请实施例提供的另一种闪存管理方法的流程示意图;
图13是图12中的步骤S1204的细化流程示意图;
图14A是本申请实施例提供的一种逻辑字线与物理字线的映射关系的示意图;
图14B是本申请实施例提供的另一种逻辑字线与物理字线的映射关系的示意图;
图15是本申请实施例提供的一种读取闪存中的数据的流程示意图;
图16是本申请实施例提供的一种存储设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本申请所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
对本申请进行详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释:
(1)字线(WordLine,WL),为NAND的写入基本单位,NAND颗粒的不同,使得每一字线包含的数据页(Page)的数量也不相同,例如:一个字线包含一个数据页,或者,一个字线包含两个数据页,或者,一个字线包含三个以上的数据页。
(2)物理字线(物理WL),指的是NAND中的实际的字线。
(3)逻辑字线(逻辑WL,Log_WL)指的是与物理字线进行映射的字线,在本申请实施例中,一个逻辑字线对应一个或两个以上的物理字线。
下面结合说明书附图具体说明本申请的技术方案:
请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图;
如图1所示,闪存设备100包括闪存介质110以及与闪存介质110连接的控制器120。其中,闪存设备100通过有线或无线的方式与主机200通信连接,用以实现数据交互。
闪存介质110,作为闪存设备100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。
控制器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获取的读数据或者写数据。
闪存控制器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.2NVME/SATA协议。
请再参阅图2,图2是本申请实施例提供的一种闪存设备的固件系统的结构示意图;
可以理解的是,闪存设备的闪存控制器包括固件系统,固件系统用于连接主机(HOST)和闪存阵列,实现数据IO的处理。
如图2所示,该固件系统210,包括:
前端模块211(Front End,FE),用于获取主机命令,以产生IO操作,其中,前端模块还用于负责和主机(Host)的通信协议,主机命令、固态硬盘命令的解析等操作;
闪存算法模块212,即闪存转换层(Flash translation layer,FTL),用于对IO操作进行映射处理,以确定下发的闪存阵列;
闪存算法模块212向闪存控制器的后端模块213(Back End,BE)发送IO操作,以使闪存控制器的后端模块213接收闪存算法模块212发送的IO操作;
后端模块213(Back End,BE),连接闪存算法模块212,用于接收闪存算法模块212发送的IO操作,以控制硬件模块214对闪存阵列进行读/写/擦操作;
硬件模块214(HW Op Nand Mode),指的是操作Flash闪存的模块,连接后端模块213,由后端模块213进行控制,用于操作Flash闪存,例如:根据IO操作,向对应的闪存阵列或闪存介质进行操作,即完成数据到Flash闪存的操作处理,操作包括读操作、写操作或擦操作。
其中,前端模块211获取到主机命令后,进行处理以产生IO操作,并依次通过闪存算法模块212、后端模块213以及硬件模块214,以对闪存阵列进行操作。例如:主机读数据时,主机(Host)发送主机命令给闪存设备(device),闪存设备的前端模块211(FE)接收到主机命令,进行处理后分发到闪存算法模块212(FTL),闪存算法模块212收到后,通过逻辑到物理的转化处理,然后将请求NAND读操作发送给后端模块213(BE),后端模块213收到之后,将硬件指令发送给硬件模块(214),并行地进行操作NAND处理。
请参阅图3,图3是本申请实施例提供的一种NAND颗粒的示意图;
如图3所示,在一个物理块(Block)中,包括多个字线(WL),例如:字线0(WL0),字线1(WL),…,字线n(WLn)。可以理解的是,该字线指的是闪存设备中实际的物理字线。
其中,每一个字线均包括3个数据页(Page),例如:字线0包括数据页0(Page 0)、数据页1(Page 1)和数据页2(Page 2);字线1包括数据页3(Page 3)、数据页4(Page 4)和数据页5(Page 5);字线n包括数据页3n(Page 3n)、数据页3n+1(Page 3n+1)、数据页3n+2(Page3n+2)。
显然,上述的NAND颗粒的物理块中的每一字线的大小是一样的,都包括3个字线,此时,后端模块能够确定要写的地址以及写入的数据量,从而将固定数据量的写入数据并行地写入到NAND颗粒的多个逻辑单元中。
但是,对于字线的大小不同的NAND颗粒,请再参阅图4,图4是本申请实施例提供的另一种NAND颗粒的示意图;
如图4所示,对于一个物理块(Block),至少存在两个字线(WL)的大小不同,即,至少存在两个字线包括的数据页的数量不同。例如:字线0(WL0)、字线1(WL1)、字线2(WL2)、字线3(WL3)均包括一个数据页,分别为数据页0(Page 0)、数据页1(Page 1)、数据页2(Page2)、数据页3(Page 3);而字线4(WL4)包括3个数据页,分别为数据页4(Page 4)、数据页5(Page 5)和数据页6(Page 6);字线5(WL5)也包括3个数据页,分别为数据页7(Page 7)、数据页8(Page 8)和数据页9(Page 9);而字线n(WLn)包括两个数据页,分别为数据页1056(Page 1056)和数据页1057(Page 1057),字线n+1(WLn+1)也包括两个数据页,分别为数据页1058(Page 1058)和数据页1059(Page 1059)。
此时,如果仍然将固定数据量的写入数据并行地写入到NAND颗粒的多个逻辑单元中,由于物理块中的字线的大小不同,导致后端模块不能确定要写的地址,也无法确定能写入的数据量,导致无法支持该类型的NAND颗粒。
有鉴于此,本申请通过将物理字线与逻辑字线进行映射的方式,实现支持物理字线包括的数据页的数量不同的NAND颗粒。
请参阅图5,图5是本申请实施例提供的一种闪存管理方法的流程示意图;
其中,该闪存管理方法,应用于闪存设备,该闪存设备包括闪存控制器,闪存控制器包括固件系统,该固件系统包括前端模块、闪存算法模块、后端模块以及硬件模块。
如图5所示,该闪存管理方法,包括:
步骤S501:获取写请求,其中,写请求包括物理地址信息以及写入数据;
具体的,该写请求由主机向闪存设备发送,具体的,前端模块接收主机发送的写请求,将固定大小的写入数据发送给闪存算法模块进行写入,闪存算法模块在收到前端模块发送的写请求之后,将逻辑地址与物理地址进行映射,并转发该写请求到后端模块,由后端模块接收该写请求,并将写入数据写入到闪存中,其中,该写请求包括物理地址信息以及写入数据。
在本申请实施例中,该物理地址信息包括晶片(Die)的地址、至少一个逻辑单元(Plane)的地址、物理块(Block)的地址以及逻辑字线地址(Log_WL地址)。
在本申请实施例中,该写入数据与闪存设备的一个晶片的逻辑单元的数量有关,具体的,该写入数据与闪存设备的一个晶片的逻辑单元的数量成正相关。可以理解的是,闪存设备的一个晶片包括至少一个逻辑单元,其中,前端模块(FE)要写入的数据对应的数据量与逻辑单元(Plane)的数量相关,比如:4plane的NAND颗粒,假设一个物理字线(WL)的大小为3个数据页(Page),则前端模块(FE)的写入数据P的大小为:P=1WL*4plane=4个WL=4*3page=12个page的数据量;类似的,对于2plane的NAND颗粒,写入数据P的大小为:P=2*3=6个page的数据量。
步骤S502:根据写请求对应的物理地址信息,获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;
具体的,物理地址信息包括晶片(Die)的地址、至少一个逻辑单元(Plane)的地址、物理块(Block)的地址以及逻辑字线地址(Log_WL地址),由于写请求对应多个逻辑单元(Plane),因此,从写请求对应的物理地址信息中获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址(Log_WL地址)。
步骤S503:根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组,其中,映射表包括逻辑字线和物理字线组的映射关系,物理字线组包括至少一个物理字线,至少两个物理字线包括的数据页的数量不完全相同,每一个物理字线包括若干数据页;
具体的,根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组。
在本申请实施例中,映射表用于表征逻辑字线和物理字线组的映射关系,逻辑字线和物理字线组的映射关系包括逻辑字线、逻辑字线地址、物理字线组、物理字线组的地址、物理字线组中的每一物理字线的地址的映射关系。
请再参阅图6,图6是本申请实施例提供的一种逻辑字线与物理字线组进行映射的示意图;
如图6所示,一个逻辑字线(Log_WL)映射一个物理字线组(WL_Group),其中,一个物理字线组包括至少一个物理字线(WL),例如:逻辑字线Log_WL 0映射物理字线组WL_Group 0,该物理字线组WL_Group 0包括四个物理字线,分别为物理字线WL0-WL3,其中,每一物理字线均包括一个数据页,分别为数据页Page 0-3。
逻辑字线Log_WL 1映射物理字线组WL_Group 1,该物理字线组WL_Group 1包括一个物理字线WL4,该物理字线WL4包括三个数据页,分别为数据页Page 4-6。
逻辑字线Log_WL 351映射物理字线组WL_Group 351,该物理字线组WL_Group 351包括两个物理字线WL,分别为物理字线WL356和物理字线WL357,每一物理字线均包括两个数据页,比如:物理字线WL356包括数据页Page 1056和Page 1057,物理字线WL357包括数据页Page 1058和Page 1059。
需要说明的是,每一种物理字线组可以包括一个或两个以上的物理字线,每一种物理字线组的数量根据具体的NAND颗粒的物理字线的数量来确定。
可以理解的是,为了查找映射表,该映射表一般在获取写请求之前建立,即,在获取写请求之前,建立映射表。
在本申请实施例中,逻辑字线的数据页的数量等于最大物理字线的数据页的数量。
可以理解的是,在闪存设备中,一个晶片(Die)可能包括多个逻辑单元(Plane),一个逻辑单元(Plane)可能包括多个物理块(Block),一个物理块(Block)可能包括两种、三种或四种以上的物理字线,因此,分别针对一个物理块包括两种、三种或四种以上的物理字线进行建立映射表的陈述。
(1)一个物理块包括两种物理字线
具体的,建立映射表,包括:
若闪存设备的一个物理块包括两种物理字线,分别为第一物理字线和第二物理字线,则:
从序号最小的物理字线开始进行映射;
判断当前的物理字线是否是第一物理字线;
若是,则将连续的若干个第一物理字线组合为一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射;
若否,则确定当前的物理字线为第二物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,第一物理字线包括第一数量的数据页,第二物理字线包括第二数量的数据页,第二数量大于第一数量且逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量。
例如:一个逻辑字线对应一个物理字线,此时,物理字线的数据页的数量为3,则逻辑字线的数据页的数量为3;或者,一个逻辑字线对应一个物理字线组,该物理字线组包括两个物理字线,两个物理字线对应的数据页的数量分别为2,3,此时,物理字线组的数据页的数量为5,逻辑字线的数据页的数量为3。优选地,逻辑字线的数据页的数量等于最大物理字线的数据页的数量,如上,最大物理字线为数据页的数量为3的物理字线,则此时逻辑字线的数据页的数量为3。
请再参阅图7,图7是本申请实施例提供的一种建立映射表的流程示意图;
如图7所示,建立映射表的流程,包括:
步骤S701:从序号最小的物理字线开始进行映射;
具体的,假设在物理块中有n个物理字线,每一个物理字线均对应一个序号,则物理字线的编号从序号0开始,一直到最后一个物理字线n-1。可以理解的是,从序号最小的物理字线开始进行映射,直至序号最大的物理字线。
步骤S702:是否是第一物理字线;
具体的,若一个物理块包括两种物理字线,则将两种物理字线分别命名为第一物理字线和第二物理字线,其中,第一物理字线包括第一数量的数据页,第二物理字线包括第二数量的数据页,并且,第二数量大于第一数量且第二数量为一个物理字线的数据页的最大数量。例如:第一数量为1个,第二数量为2个;或者,第一数量为X个,第二数量为X+M个,其中,X、M为正整数。
若当前的物理字线是第一物理字线,则进入步骤S703;
若当前的物理字线不是第一物理字线,则确定当前的物理字线为第二物理字线,此时进入步骤S704;
步骤S703:将连续的若干个第一物理字线组合为一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
具体的,若当前的物理字线为第一物理字线,则将连续的若干个第一物理字线组合成一个第一物理字线组,其中,第一物理字线组中的每一个物理字线均为第一物理字线,并且,第一物理字线组中的所有物理字线所包含的数据页的数量不小于一个第二物理字线所包含的数据页的数量。例如:假设第一物理字线包括1个数据页,第二物理字线包括2个数据页,则将连续的两个以上的第一物理字线组合成一个第一物理字线组,此时,一个第一物理字线组中所有物理字线所包含的数据页的数量等于2个以上,即等于或大于一个第二物理字线所包含的数据页的数量。
可以理解的是,进入下一个逻辑字线和物理字线指的是将逻辑字线的序号加一,将物理字线的序号对应加n,其中,n为第一物理字线组中的第一物理字线的数量,例如:第一物理字线组中的第一物理字线的数量为两个,则将物理字线的序号加二。
同时,在进入下一个逻辑字线和物理字线之后,进入步骤S705:判断当前的字线是否为物理块的最后一个字线,即,判断当前的物理字线是否为当前的物理块的最后一个物理字线,即,判断是否遍历完当前物理块的全部物理字线,若是,则进入步骤S706;
若否,则进入下一物理字线,将下一个物理字线作为当前的物理字线,并对当前的物理字线进行相同处理,即判断当前的物理字线是否是第一物理字线,若是,则进入步骤S703;若否,则进入步骤S704;以此类推,直至遍历当前的物理块的全部的物理字线。
步骤S704:确定当前的物理字线为第二物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
步骤S705:当前的字线是否为物理块的最后一个字线;
具体的,判断当前的物理字线是否为物理块的最后一个物理字线,即,判断是否已经遍历完当前的物理块的全部的物理字线,即,判断是否已经对当前的物理块的全部的物理字线进行映射,若是,则进入到步骤S706;若否,则返回步骤S702。
步骤S706:遍历闪存设备的全部物理块,完成映射表的建立。
具体的,在遍历当前的物理块的全部的物理字线之后,对下一个物理块进行映射,直至遍历闪存设备的全部物理块,以完成映射表的建立。可以理解的是,对每一个物理块的操作与上述操作相同,在此不再赘述。
(2)一个物理块包括三种物理字线
具体的,建立映射表,包括:
若闪存设备的一个物理块包括三种物理字线,分别为第一物理字线、第二物理字线和第三物理字线,则:
从序号最小的物理字线开始进行映射;
判断当前的物理字线是否是第一物理字线,其中,第一物理字线包括第一数量的数据页;
若是,则将连续的若干个第一物理字线组合为一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射;
若否,则进一步判断当前的物理字线是否是第二物理字线,其中,第二物理字线包括第二数量的数据页,第二数量大于第一数量;
若当前的物理字线是第二物理字线,则将连续的若干个第二物理字线组合成一个第二物理字线组,并将一个第二物理字线组与一个逻辑字线进行映射;
若当前的物理字线不是第二物理字线,则确定当前的物理字线为第三物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,第三物理字线包括第三数量的数据页,第三数量大于第二数量且逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
请再参阅图8,图8是本申请实施例提供的另一种建立映射表的流程示意图;
如图8所示,该建立映射表的流程,包括:
步骤S801:从序号最小的物理字线开始进行映射;
具体的,假设在物理块中有n个物理字线,每一个物理字线均对应一个序号,则物理字线的编号从序号0开始,一直到最后一个物理字线n-1。可以理解的是,从序号最小的物理字线开始进行映射,直至序号最大的物理字线。
步骤S802:是否是第一物理字线;
具体的,若一个物理块包括三种物理字线,则将三种物理字线分别命名为第一物理字线、第二物理字线和第三物理字线,其中,第一物理字线包括第一数量的数据页,第二物理字线包括第二数量的数据页,第三物理字线包括第三数量的数据页,并且,第二数量大于第一数量,第三数量大于第二数量且逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
例如:第一数量为1个,第二数量为2个,第三数量为3个;或者,第一数量为X个,第二数量为X+M个,第三数量为X+M+N个,其中,X、M、N均为正整数。比如:一个逻辑字线对应一个物理字线,此时,物理字线的数据页的数量为3,则逻辑字线的数据页的数量为3;或者,一个逻辑字线对应一个物理字线组,该物理字线组包括两个物理字线,三个物理字线对应的数据页的数量分别为2,2,此时,物理字线组的数据页的数量为4,逻辑字线的数据页的数量为3。优选地,逻辑字线的数据页的数量等于最大物理字线的数据页的数量,如上,最大物理字线为数据页的数量为3的物理字线,则此时逻辑字线的数据页的数量为3。
若当前的物理字线是第一物理字线,则进入步骤S803;
若当前的物理字线不是第一物理字线,则确定当前的物理字线为第二物理字线,此时进入步骤S804;
步骤S803:将连续的若干个第一物理字线组合成一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
具体的,若当前的物理字线为第一物理字线,则将连续的若干个第一物理字线组合成一个第一物理字线组,其中,第一物理字线组中的每一个物理字线均为第一物理字线,并且,第一物理字线组中的所有物理字线所包含的数据页的数量不小于一个第三物理字线所包含的数据页的数量。例如:假设第一物理字线包括1个数据页,第二物理字线包括2个数据页,第三物理字线包括3个数据页,则将连续的三个或四个以上的第一物理字线组合成一个第一物理字线组,此时,一个第一物理字线组中所有物理字线所包含的数据页的数量等于3个以上,即等于或大于一个第三物理字线所包含的数据页的数量。
可以理解的是,进入下一个逻辑字线和物理字线指的是将逻辑字线的序号加一,将物理字线的序号对应加n,其中,n为第一物理字线组中的第一物理字线的数量,例如:第一物理字线组中的第一物理字线的数量为四个,则将物理字线的序号加四。
步骤S804:是否是第二物理字线;
具体的,判断当前的物理字线是否为第二物理字线,若是,则进入步骤S805;若否,则进入步骤S806;
步骤S805:将连续的若干个第二物理字线组合成一个第二物理字线组,并将一个第二物理字线组与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
具体的,若当前的物理字线为第二物理字线,则将连续的若干个第二物理字线组合成一个第二物理字线组,其中,第二物理字线组中的所有物理字线均为第二物理字线,并且,第二物理字线组中的所有物理字线所包含的数据页的数量不小于一个第三物理字线所包含的数据页的数量。例如:假设第一物理字线包括1个数据页,第二物理字线包括2个数据页,第三物理字线包括3个数据页,则将连续的两个第二物理字线组合成一个第二物理字线组,此时,一个第二物理字线组中所有物理字线所包含的数据页的数量为4个,大于一个第三物理字线所包含的数据页的数量。
可以理解的是,进入下一个逻辑字线和物理字线指的是将逻辑字线的序号加一,将物理字线的序号对应加n,其中,n为第二物理字线组中的第二物理字线的数量,例如:第二物理字线组中的第二物理字线的数量为两个,则将物理字线的序号加二。
步骤S806:确定当前的物理字线为第三物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
具体的,若当前的物理字线不是第二物理字线,则确定当前的物理字线为第三物理字线,此时将当前的第三物理字线作为一个第三物理字线组,该第三物理字线组只包括一个第三物理字线,并将该第三物理字线组与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线。
可以理解的是,由于第三物理字线组只包括一个第三物理字线,则进入下一个逻辑字线指的是将逻辑字线的序号加一,进入下一个物理字线指的是将物理字线的序号加一。
步骤S807:当前的物理字线是否为物理块的最后一个字线;
具体的,判断当前的物理字线是否为物理块的最后一个物理字线,即,判断是否已经遍历完当前的物理块的全部的物理字线,即,判断是否已经对当前的物理块的全部的物理字线进行映射,若是,则进入到步骤S808;若否,则返回步骤S802。
步骤S808:遍历闪存设备的全部物理块,完成映射表的建立。
具体的,在遍历当前的物理块的全部的物理字线之后,对下一个物理块进行映射,直至遍历闪存设备的全部物理块,以完成映射表的建立。可以理解的是,对每一个物理块的操作与上述操作相同,在此不再赘述。
下表1为一个物理块包括三种物理字线进行映射得到的映射表。
表1
(3)一个物理块包括四种以上的物理字线
请再参阅图9,图9是本申请实施例提供的又一种建立映射表的流程示意图;
如图9所示,该建立映射表的流程,包括:
步骤S901:从序号最小的物理字线开始进行映射;
具体的,假设在物理块中有n个物理字线,每一个物理字线均对应一个序号,则物理字线的编号从序号0开始,一直到最后一个物理字线n-1。可以理解的是,从序号最小的物理字线开始进行映射,直至序号最大的物理字线。
步骤S902:是否是第一物理字线;
具体的,若一个物理块包括N种物理字线,N为正整数且N≥4,则将N种物理字线分别命名为第一物理字线、第二物理字线,…,第N物理字线,其中,第一物理字线包括第一数量的数据页,第二物理字线包括第二数量的数据页,…,第N物理字线包括第N数量的数据页,并且,第二数量大于第一数量,第三数量大于第二数量,…,第N数量大于第N-1数量,并且,每一逻辑字线的数据页的数量相同,并且,逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,逻辑字线与最大数量的数据页对应的物理字线一一对应,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
例如:第一数量为1个,第二数量为2个,第三数量为3个,逐渐递增,直至第N数量为第T个,T为正整数。
假设N=5,此时,第一数量为1个,第二数量为2个,第三数量为3个,第四数量为4个,第五数量为5个,则:一个逻辑字线对应一个物理字线,此时,物理字线的数据页的数量为5,则逻辑字线的数据页的数量为5;或者,一个逻辑字线对应一个物理字线组,该物理字线组包括三个物理字线,三个物理字线对应的数据页的数量分别为2,2,2,此时,物理字线组的数据页的数量为6,逻辑字线的数据页的数量为5。优选地,逻辑字线的数据页的数量等于最大物理字线的数据页的数量,如上,最大物理字线为数据页的数量为5的物理字线,则此时逻辑字线的数据页的数量为5。
若当前的物理字线是第一物理字线,则进入步骤S903;
若当前的物理字线不是第一物理字线,则确定当前的物理字线为第二物理字线,此时进入步骤S904;
步骤S903:将连续的若干个第一物理字线组合成一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
具体的,若当前的物理字线为第一物理字线,则将连续的若干个第一物理字线组合成一个第一物理字线组,其中,第一物理字线组中的每一个物理字线均为第一物理字线,并且,第一物理字线组中的所有物理字线所包含的数据页的数量不小于一个第N物理字线所包含的数据页的数量。例如:假设第一物理字线包括1个数据页,第二物理字线包括2个数据页,第三物理字线包括3个数据页,…,第N物理字线包括N个数据页,则将连续的N个或N个以上的第一物理字线组合成一个第一物理字线组,此时,一个第一物理字线组中所有物理字线所包含的数据页的数量等于N个以上,即等于或大于一个第N物理字线所包含的数据页的数量。
可以理解的是,进入下一个逻辑字线和物理字线指的是将逻辑字线的序号加一,将物理字线的序号对应加n,其中,n为第一物理字线组中的第一物理字线的数量,例如:第一物理字线组中的第一物理字线的数量为五个,则将物理字线的序号加五。
步骤S904:是否是第二物理字线;
具体的,判断当前的物理字线是否为第二物理字线,若是,则进入步骤S905;若否,则进入步骤S906;
步骤S905:将连续的若干个第二物理字线组合成一个第二物理字线组,并将一个第二物理字线组与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
具体的,若当前的物理字线为第二物理字线,则将连续的若干个第二物理字线组合成一个第二物理字线组,其中,第二物理字线组中的所有物理字线均为第二物理字线,并且,第二物理字线组中的所有物理字线所包含的数据页的数量不小于一个第N物理字线所包含的数据页的数量。例如:假设第一物理字线包括1个数据页,第二物理字线包括2个数据页,第三物理字线包括3个数据页,,…,第N物理字线包括N个数据页,则将连续的N/2或以上个第二物理字线组合成一个第二物理字线组,此时,一个第二物理字线组中所有物理字线所包含的数据页的数量为N个以上,大于或等于一个第N物理字线所包含的数据页的数量。
可以理解的是,进入下一个逻辑字线和物理字线指的是将逻辑字线的序号加一,将物理字线的序号对应加n,其中,n为第二物理字线组中的第二物理字线的数量,例如:第二物理字线组中的第二物理字线的数量为五个,则将物理字线的序号加五。
步骤S906:是否是第N-1物理字线;
具体的,在对每一种物理字线进行类似上述的处理之后,判断步骤到达倒数第二种物理字线,倒数第二种物理字线即物理字线中的数据页的数量仅次于最高的物理字线的数据页的数量的物理字线。
若当前的物理字线是第N-1物理字线,则进入步骤S907;
若当前的物理字线不是第N-1物理字线,则进入步骤S908。
步骤S907:将连续的若干个第N-1物理字线组合成一个第二物理字线组,并将一个第N-1物理字线组与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线;
具体的,一个第N-1物理字线组中所有物理字线所包含的数据页的数量大于或等于一个第N物理字线所包含的数据页的数量。
可以理解的是,进入下一个逻辑字线和物理字线的操作与上述的操作类似,在此不再赘述。
步骤S908:确定当前的物理字线为第N物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射,并进入下一个逻辑字线和物理字线。
步骤S909:具体的,判断当前的物理字线是否为物理块的最后一个物理字线,即,判断是否已经遍历完当前的物理块的全部的物理字线,即,判断是否已经对当前的物理块的全部的物理字线进行映射,若是,则进入到步骤S910;若否,则返回步骤S902。
步骤S910:遍历闪存设备的全部物理块,完成映射表的建立。
具体的,在遍历当前的物理块的全部的物理字线之后,对下一个物理块进行映射,直至遍历闪存设备的全部物理块,以完成映射表的建立。可以理解的是,对每一个物理块的操作与上述操作相同,在此不再赘述。
在本申请实施例中,通过遍历一个物理块中的所有的物理字线,将一个或两个以上的物理字线组合成一个物理字线组,并将一个物理字线组与一个逻辑字线进行映射,能够对不同类型的NAND颗粒进行处理,有利于提高闪存设备的兼容性。
步骤S504:根据每一逻辑单元的逻辑字线对应的物理字线组,将写入数据写入到物理字线组对应的物理字线。
具体的,在根据逻辑字线确定对应的物理字线组之后,将写入数据写入到物理字线组对应的物理字线。
请再参阅图10,图10是图5中的步骤S504的细化流程示意图;
如图10所示,该步骤S504,包括:
步骤S5041:将写入数据中与每一逻辑单元对应的数据并行写入到每一逻辑单元对应的物理字线组;
具体的,闪存算法模块根据逻辑单元的数量以及一个逻辑单元对应的数据页的数量来下发写入数据,其中,写入数据的数据量等于闪存设备的一个晶片的逻辑单元的数量*一个逻辑单元对应的数据页的数量*一个数据页的大小。
可以理解的是,若写入数据对应至少两个逻辑单元,则将写入数据中与每一逻辑单元对应的数据并行写入到每一逻辑单元对应的物理字线组;若写入数据对应一个逻辑单元,则将写入数据直接写入到该逻辑单元对应的物理字线组。
在本申请实施例中,一个逻辑单元对应的数据页的数量等于该逻辑单元中的物理块的一个物理字线的数据页的最大数量,例如:一个物理块中包括两种以上的物理字线,其中,物理字线的数据页的最大数量为N,则一个逻辑单元对应的数据页的数量为N,比如:一个物理块中包括3种物理字线,每一种物理字线分别包括一个数据页、两个数据页、三个数据页,则一个逻辑单元对应的数据页的数量为三个。
步骤S5042:逻辑单元对应的物理字线组是否只包括一个物理字线;
具体的,判断逻辑单元对应的物理字线组是否只包括一个物理字线,若是,则进入步骤S5043;若否,则进入步骤S5044。
步骤S5043:将写入数据中与该逻辑单元对应的数据写入到物理字线;
具体的,写入数据中与该逻辑单元对应的数据页的数量为最大物理字线对应的数据页的数量,若逻辑单元对应的物理字线组中只包括一个物理字线,此时,该物理字线所包含的数据页的数量与该逻辑单元对应的数据页的数量相等,此时可以直接将写入数据中与该逻辑单元对应的数据写入到该物理字线中。
步骤S5044:将该写入数据中与该逻辑单元对应的数据写入到至少两个物理字线。
具体的,由于该物理字线组中包括至少两个物理字线,因此,该物理字线组中的任意一个物理字线所包含的数据页的数量均小于一个物理字线的数据页的最大数量,即,小于该写入数据中与该逻辑单元对应的数据页的数量,此时,需要将该写入数据中与该逻辑单元对应的数据写入到至少两个物理字线。
在本申请实施例中,该方法还包括:
若逻辑单元对应的物理字线组包括一个物理字线,则将写入数据中与该逻辑单元对应的数据写入到物理字线之后,确定写入完成;
若逻辑单元对应的物理字线组包括至少两个物理字线,则将该写入数据中与该逻辑单元对应的数据写入到至少两个物理字线之后,对物理字线组中的剩余空间填充无效数据,即Dummy数据,并确定写入完成;
其中,写入数据的数据量等于闪存设备的一个晶片的逻辑单元的数量*一个逻辑单元对应的数据页的数量*一个数据页的大小。
具体的,请再参阅图11,图11是本申请实施例提供的将数据写入闪存的流程示意图;
如图11所示,将数据写入闪存的流程,包括:
步骤S1101:获取写请求;
步骤S1102:根据写请求对应的物理地址信息,获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;
步骤S1103:根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元对应的物理字线组;
步骤S1104:根据每一逻辑单元对应的物理字线组,将写入数据写入到物理字线组对应的物理字线;
步骤S1105:逻辑单元对应的物理字线组是否包括至少两个物理字线;
步骤S1106:将该写入数据中与该逻辑单元对应的数据写入到至少两个物理字线之后,对物理字线组中的剩余空间填充无效数据;
步骤S1107:将写入数据中与该逻辑单元对应的数据写入到物理字线;
步骤S1108:确定写入完成。
在本申请实施例中,通过提供一种闪存管理方法,应用于闪存设备,方法包括:获取写请求,其中,写请求包括物理地址信息以及写入数据;根据写请求对应的物理地址信息,获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组,其中,映射表包括逻辑字线和物理字线组的映射关系,物理字线组包括至少一个物理字线;根据每一逻辑单元的逻辑字线对应的物理字线组,将写入数据写入到物理字线组对应的物理字线。
一方面,通过获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;根据每一逻辑单元对应的逻辑字线地址,查找映射表,确定每一逻辑单元的逻辑字线对应的物理字线组,本申请能够利用映射表来映射逻辑字线和物理字线组,而物理字线组包括至少一个物理字线,至少两个物理字线包括的数据页的数量不完全相同,使得本申请能够适配不同类型的闪存颗粒,提高闪存设备对闪存颗粒的兼容性;
另一方面,通过每一逻辑单元的逻辑字线对应的物理字线组,将写入数据写入到物理字线组对应的物理字线,本申请能够提高数据存储的稳定性。
请再参阅图12,图12是本申请实施例提供的另一种闪存管理方法的流程示意图;
如图12所示,该闪存管理方法,包括:
步骤S1201:获取读请求,其中,读请求包括逻辑地址信息;
具体的,该逻辑地址信息包括逻辑字线地址。
步骤S1202:根据读请求对应的逻辑地址信息,获取逻辑字线地址;
具体的,后端模块在接收到闪存算法模块发送的读请求之后,解析该读请求,获取读请求对应的逻辑地址信息,以获取逻辑地址信息中的逻辑字线地址。
步骤S1203:根据逻辑字线地址对应的逻辑字线,查找映射表,确定逻辑字线对应的物理字线组,其中,映射表包括逻辑字线和物理字线组的映射关系,物理字线组包括至少一个物理字线,至少两个物理字线包括的数据页的数量不完全相同,每一个物理字线包括若干数据页;
可以理解的是,每一逻辑字线对应一个逻辑字线地址,该映射表中存储逻辑字线与物理字线组的映射关系,根据逻辑字线地址对应的逻辑字线,确定该逻辑字线对应的物理字线组,例如:如上表1所示,通过确定逻辑字线的序号,即可确定对应的物理字线组,进而确定物理字线组中包含的至少一个物理字线,每一个物理字线包括若干数据页。
步骤S1204:根据物理字线组的物理字线地址,读取读请求对应的数据。
具体的,每一物理字线组对应至少一个物理字线,该物理字线组的物理字线地址为第一个物理字线的地址,由于物理字线组中的物理字线为连续的若干个物理字线,因此,根据物理字线组的物理字线地址,可以读取读请求对应的数据。
具体的,请再参阅图13,图13是图12中的步骤S1204的细化流程示意图;
如图13所示,该步骤S1204,包括:
步骤S12041:根据物理字线地址,确定物理字线地址对应的数据页地址,读取数据页地址对应的数据。
可以理解的是,NAND的访问地址为:晶片的地址(Die地址)+逻辑单元的地址(plane地址)+物理块的地址(block地址)+物理字线的地址(WL地址)。
具体的,数据页作为闪存的基本读取单元,而每一个数据页的大小相同,因此,根据物理字线地址,可以确定物理字线地址对应的每一个数据页的数据页地址,因此,可以读取每一个数据页对应的数据页地址的数据。
请参阅图14A,图14A是本申请实施例提供的一种逻辑字线与物理字线的映射关系的示意图;
如图14A所示,逻辑字线与数据页的地址、数据页的数量进行映射,例如:逻辑字线0(Log_WL 0)与数据页的地址A0(Page地址A0)、数据页的数量(Page数量B0)进行映射。
请再参阅图14B,图14B是本申请实施例提供的另一种逻辑字线与物理字线的映射关系的示意图。
如图14B所示,逻辑字线与物理字线的地址、物理字线的数量进行映射,例如:逻辑字线0(Log_WL 0)与物理字线的地址A0(WL地址A0)、物理字线的数量(WL数量B0)进行映射。
可以理解的是,一个物理字线由至少一个数据页组成,物理字线的地址可以转换为数据页的地址。
在本申请实施例中,逻辑字线地址包括若干个逻辑数据页,其中,每一个逻辑数据页的大小等于一个物理数据页的大小,逻辑数据页的起始地址为第一个映射的物理字线的地址。
请再参阅图15,图15是本申请实施例提供的一种读取闪存中的数据的流程示意图;
如图15所示,该读取闪存中的数据的流程,包括:
步骤S1501:后端模块开始读数据;
具体的,后端模块在接收到闪存算法模块发送的读请求之后,开始读取闪存中的数据。
步骤S1502:基于逻辑字线,查找映射表,确定物理字线组;
具体的,后端模块根据读请求对应的逻辑地址信息中的逻辑字线地址,确定逻辑字线,并查找映射表,确定逻辑字线对应的物理字线组。
步骤S1503:根据物理字线组,确定物理字线;
具体的,根据物理字线组的地址,确定物理字线组中的至少一个物理字线的地址。
步骤S1504:根据物理字线,确定数据页的地址;
具体的,根据物理字线的地址,确定物理字线中的至少一个数据页的地址。
步骤S1505:根据数据页的地址,读取数据页的数据。
具体的,根据每一数据页的地址,读取每一数据页中的数据。
请参阅图16,图16是本申请实施例提供的一种存储设备的结构示意图;
如图16所示,该存储设备1600包括一个或多个处理器1601以及存储器1602。其中,图16中以一个处理器1601为例。
处理器1601和存储器1602可以通过总线或者其他方式连接,图16中以通过总线连接为例。
存储器1602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器1601通过运行存储在存储器1602中的非易失性软件程序、指令以及模块,从而执行闪存管理方法的各种功能应用以及数据处理,即实现上述方法实施例的闪存管理方法。其中,该闪存管理方法可由各种具有一定逻辑处理能力的电子设备执行,如控制芯片等。
存储器1602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器1602可选包括相对于处理器1601远程设置的存储器,这些远程存储器可以通过网络连接至处理器1601。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
模块存储在存储器1602中,当被一个或者多个处理器1601执行时,执行上述任意方法实施例中的闪存管理方法,例如,执行以上描述的图5或图12所示的各个步骤。
本申请实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如上述一个或多个处理器可执行上述任意方法实施例中的闪存管理方法,例如,执行上述任意方法实施例中的闪存管理方法,例如,执行以上描述的各个步骤。
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (12)
1.一种闪存管理方法,其特征在于,应用于闪存设备,所述方法包括:
获取写请求,其中,所述写请求包括物理地址信息以及写入数据;
根据所述写请求对应的物理地址信息,获取至少一个逻辑单元中的每一逻辑单元对应的逻辑字线地址;
根据每一所述逻辑单元对应的逻辑字线地址,查找映射表,确定每一所述逻辑单元的逻辑字线对应的物理字线组,其中,所述映射表包括逻辑字线和物理字线组的映射关系,所述物理字线组包括至少一个物理字线,至少两个所述物理字线包括的数据页的数量不完全相同,每一个物理字线包括若干数据页;
根据每一所述逻辑单元的逻辑字线对应的物理字线组,将所述写入数据写入到所述物理字线组对应的物理字线。
2.根据权利要求1所述的方法,其特征在于,所述物理字线组中的最大物理字线对应的数据页的数量等于一个逻辑字线的数据页的数量。
3.根据权利要求1所述的方法,其特征在于,在获取写请求之前,所述方法还包括:建立映射表;
所述建立映射表,具体包括:
若所述闪存设备的的一个物理块包括两种物理字线,分别为第一物理字线和第二物理字线,则:
从序号最小的物理字线开始进行映射;
判断当前的物理字线是否是第一物理字线;
若是,则将连续的若干个第一物理字线组合为一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射;
若否,则确定当前的物理字线为第二物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,所述第一物理字线包括第一数量的数据页,所述第二物理字线包括第二数量的数据页,所述第二数量大于所述第一数量且所述逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
4.根据权利要求3所述的方法,其特征在于,所述建立映射表,具体还包括:
若所述闪存设备的一个物理块包括三种物理字线,分别为第一物理字线、第二物理字线和第三物理字线,则:
从序号最小的物理字线开始进行映射;
判断当前的物理字线是否是第一物理字线,其中,所述第一物理字线包括第一数量的数据页;
若是,则将连续的若干个第一物理字线组合为一个第一物理字线组,并将一个第一物理字线组与一个逻辑字线进行映射;
若否,则进一步判断当前的物理字线是否是第二物理字线,其中,所述第二物理字线包括第二数量的数据页,所述第二数量大于所述第一数量;
若当前的物理字线是第二物理字线,则将连续的若干个第二物理字线组合成一个第二物理字线组,并将一个第二物理字线组与一个逻辑字线进行映射;
若当前的物理字线不是第二物理字线,则确定当前的物理字线为第三物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,所述第三物理字线包括第三数量的数据页,所述第三数量大于所述第二数量且所述逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
5.根据权利要求4所述的方法,其特征在于,所述建立映射表,具体还包括:
若所述闪存设备的一个物理块包括N种物理字线,分别为第一物理字线、第二物理字线,…,第N-1物理字线和第N物理字线,则:
若当前的物理字线不是第二物理字线,则继续判断当前的物理字线是否为第三物理字线;
若是,则将若干个第三物理字线组合成一个第三物理字线组,并将一个第三物理字线组与一个逻辑字线进行映射;
以此类推,直至判断当前的物理字线是否是第N-1物理字线;
若当前的物理字线是第N-1物理字线,则将若干个第N-1物理字线组合成一个第N-1物理字线组,并将一个第N-1物理字线组与一个逻辑字线进行映射;
若当前的物理字线不是第N-1物理字线,则确定当前的物理字线是第N物理字线,此时将当前的物理字线直接与一个逻辑字线进行映射;
遍历一个物理块的所有物理字线;
其中,N为正整数且N大于第三数量,并且,每一逻辑字线的数据页的数量相同,并且,所述逻辑字线的数据页的数量小于或等于逻辑字线对应的物理字线或物理字线组的数据页的数量,逻辑字线与最大数量的数据页对应的物理字线一一对应,并且,逻辑字线的数据页的数量等于最大物理字线对应的数据页的数量。
6.根据权利要求1所述的方法,其特征在于,所述根据每一所述逻辑单元的逻辑字线对应的物理字线组,将所述写入数据写入到所述物理字线组对应的物理字线,包括:
将所述写入数据中与每一逻辑单元对应的数据并行写入到每一所述逻辑单元对应的物理字线组;其中,
若所述逻辑单元对应的物理字线组包括一个物理字线,则将写入数据中与该逻辑单元对应的数据写入到所述物理字线;
若所述逻辑单元对应的物理字线组包括至少两个物理字线,则将该写入数据中与该逻辑单元对应的数据写入到至少两个所述物理字线。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述逻辑单元对应的物理字线组包括一个物理字线,则将写入数据中与该逻辑单元对应的数据写入到所述物理字线之后,确定写入完成;
若所述逻辑单元对应的物理字线组包括至少两个物理字线,则将该写入数据中与该逻辑单元对应的数据写入到至少两个所述物理字线之后,对物理字线组中的剩余空间填充无效数据,并确定写入完成;
其中,所述写入数据的数据量等于所述闪存设备的一个晶片的逻辑单元的数量*一个逻辑单元对应的数据页的数量*一个数据页的大小。
8.根据权利要求1-7任一项所述的方法,其特征在于,
所述物理地址信息包括晶片的地址、至少一个逻辑单元的地址、物理块的地址以及逻辑字线地址。
9.一种闪存管理方法,其特征在于,应用于闪存设备,所述方法包括:
获取读请求,其中,所述读请求包括逻辑地址信息;
根据所述读请求对应的逻辑地址信息,获取逻辑字线地址;
根据所述逻辑字线地址对应的逻辑字线,查找映射表,确定所述逻辑字线对应的物理字线组,其中,所述映射表包括逻辑字线和物理字线组的映射关系,所述物理字线组包括至少一个物理字线,至少两个所述物理字线包括的数据页的数量不完全相同,每一个物理字线包括若干数据页;
根据所述物理字线组的物理字线地址,读取所述读请求对应的数据。
10.根据权利要求9所述的方法,其特征在于,所述根据所述物理字线组的物理字线地址,读取所述读请求对应的数据,包括:
根据所述物理字线地址,确定所述物理字线地址对应的数据页地址,读取所述数据页地址对应的数据。
11.根据权利要求9或10所述的方法,其特征在于,所述逻辑字线地址包括若干个逻辑数据页,其中,每一个逻辑数据页的大小等于一个物理数据页的大小,所述逻辑数据页的起始地址为第一个映射的物理字线的地址。
12.一种闪存设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够用于执行如权利要求1-11中任一项所述的闪存管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211231769.5A CN115641887A (zh) | 2022-09-30 | 2022-09-30 | 闪存管理方法及闪存设备 |
PCT/CN2023/094015 WO2024066383A1 (zh) | 2022-09-30 | 2023-05-12 | 闪存管理方法及闪存设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211231769.5A CN115641887A (zh) | 2022-09-30 | 2022-09-30 | 闪存管理方法及闪存设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115641887A true CN115641887A (zh) | 2023-01-24 |
Family
ID=84942212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211231769.5A Pending CN115641887A (zh) | 2022-09-30 | 2022-09-30 | 闪存管理方法及闪存设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115641887A (zh) |
WO (1) | WO2024066383A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024066383A1 (zh) * | 2022-09-30 | 2024-04-04 | 深圳大普微电子科技有限公司 | 闪存管理方法及闪存设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819385B2 (en) * | 2009-04-06 | 2014-08-26 | Densbits Technologies Ltd. | Device and method for managing a flash memory |
CN110209340B (zh) * | 2018-02-28 | 2022-08-02 | 杭州宏杉科技股份有限公司 | 一种全闪存存储系统的访问方法及装置 |
KR20220028897A (ko) * | 2020-08-31 | 2022-03-08 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
CN115641887A (zh) * | 2022-09-30 | 2023-01-24 | 深圳大普微电子科技有限公司 | 闪存管理方法及闪存设备 |
-
2022
- 2022-09-30 CN CN202211231769.5A patent/CN115641887A/zh active Pending
-
2023
- 2023-05-12 WO PCT/CN2023/094015 patent/WO2024066383A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024066383A1 (zh) * | 2022-09-30 | 2024-04-04 | 深圳大普微电子科技有限公司 | 闪存管理方法及闪存设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2024066383A1 (zh) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9658955B2 (en) | Data storage device and operating method thereof | |
JP5344411B2 (ja) | シリアルインターフェースメモリの同時読み出し及び書き込みメモリ動作 | |
US20200201570A1 (en) | Method of writing data in storage device, storage device performing the same and storage system including the same | |
US8892842B2 (en) | Memory systems and methods of operating the same | |
KR102641521B1 (ko) | 키-밸류 스토리지 장치 및 이의 동작 방법 | |
KR20190087217A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11086568B2 (en) | Memory system for writing fractional data into nonvolatile memory | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
US20190163623A1 (en) | Memory system and operating method thereof | |
US10067873B2 (en) | Data storage device and operating method thereof | |
US20160062883A1 (en) | Data storage device and operating method thereof | |
US10168951B2 (en) | Methods for accessing data in a circular block mode and apparatuses using the same | |
US10754555B2 (en) | Low overhead mapping for highly sequential data | |
KR20210003946A (ko) | 논리적-물리적 데이터 구조 | |
CN114519019A (zh) | 控制器及其操作方法 | |
EP4124962A1 (en) | Storage devices, storage controllers, and operating methods of storage controllers | |
CN113360089A (zh) | 用于存储器子系统的命令批处理 | |
CN115641887A (zh) | 闪存管理方法及闪存设备 | |
CN112181274A (zh) | 提升存储设备性能稳定性的大块的组织方法及其存储设备 | |
US10282328B2 (en) | Apparatus having direct memory access controller and method for accessing data in memory | |
US20190278703A1 (en) | Memory system, operating method thereof and electronic device | |
JP2021043911A (ja) | ストレージシステム及びその制御方法 | |
CN111949559B (zh) | 一种数据写入方法、装置及存储设备 | |
US11645008B2 (en) | Memory system and operating method thereof for controlling a multi-plane read operation | |
US11994986B2 (en) | Valid data retrieval for garbage collection |
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 |