本申请涉及计算机,尤其涉及一种p2l反表存储、读命令处理方法和存储设备。
背景技术:
1、目前,ssd在使用nand块时,会将位于不同内存颗粒(die)的相同物理索引块绑定,组成一个大块(xblock)作为写入和擦除单元。
2、如图1所示,为现有大块组成示意图。大块包括来自多个逻辑单元(lun)的物理块。为大块提供物理块的多个逻辑单元被称为逻辑单元组。逻辑单元组的每个逻辑单元可以为大块提供一个物理块。在例如16个逻辑单元(lun0、lun1、……、lun15)的逻辑单元组上构造大块。图1中,lun0-lun15的块0构成了大块0,其中lun0到lun14的各个平面中的物理块0用于存储用户数据,而lun15的物理块0用于存储根据大块0的用户数据计算得到的校验数据。
3、图1还展示了页条带和tlc页条带。在大块上构造页条带,大块内的每个物理块的相同物理地址的物理页构成了“页条带”。物理页p0-0、物理页p0-1……与物理页p0-x构成了页条带0,其中物理页p0-0、物理页p0-1……物理页p0-14用于存储用户数据,而物理页p0-x用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,物理页p1-0、物理页p1-1……与物理页p1-x构成了页条带1。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置。
4、目前,主流的nand颗粒类型是tlc(trinary-level cell),tlc(trinary-levelcell)是一种闪存颗粒的存储单元,其特性是每个cell单元可以储存3个数据,拥有8个状态。这意味着每个存储单元可以存储3bit的信息,因此也被称为三层式储存。即一次nand写(指的是一种nand闪存技术)会对物理块上的3个相邻的物理页进行写操作,所以在逻辑上将这3个相邻的物理页称为一个tlc页条带。图1中,页条带0、页条带1、页条带2组成了tlc页条带0。页条带3、页条带4、页条带5组成了tlc页条带1。
5、p2l(即physical address to logic address,物理地址到逻辑地址)反表的作用是将每个4k写的逻辑地址(lba)和物理地址(pba)保存到一个p2l buffer(缓冲区)中,然后将p2l buffer写到nand上,p2l buffer会写到对应的大块上。在触发垃圾回收某个大块时,先依次读取这个大块上所有的p2l反表内容,通过l2p(即logic address to physicaladdress,逻辑地址到物理地址)表查询得到其中的有效数据,再读取搬移有效数据。
6、但是现有的p2l反表存储方式受限于系统和硬件资源,同一时间下发的物理页读请求会有数量限制,影响读命令的处理性能。
技术实现思路
1、本申请的目的在于提供一种p2l反表存储、读命令处理方法和存储设备,充分利用系统硬件资源,提高同时并发读的物理页数量,提高垃圾回收时同时读的nand物理块数量,提高垃圾回收时的读性能,缩短垃圾回收大块的时间。
2、为达到上述目的,作为本申请的第一方面,本申请提供一种p2l反表存储方法,该方法包括:获取写数据分配的物理块地址在页条带中的位置;依据写数据分配的物理块地址在页条带中的位置,确定p2l反表的条目在p2l缓冲区中的对应位置;对所述p2l缓冲区初始化,获得p2l反表数据结构。
3、如上所述的p2l反表存储方法,其中,所述获取写数据分配的物理块地址在页条带中的位置包括:所述p2l缓冲区为tlc页条带上的所有物理块地址预留相应的位置,包括:根据物理块地址的条带号和逻辑单元号,在所述p2l缓冲区按照条带号和逻辑单元号确定预留的位置。
4、如上所述的p2l反表存储方法,其中,所有物理块地址包括好物理块的地址、坏物理块的地址或者存储校验数据的物理块的地址。
5、如上所述的p2l反表存储方法,其中,对所述p2l缓冲区初始化的方法包括:在所述p2l缓冲区中,将所述p2l反表中无效的逻辑单元号条目的内容清零。
6、如上所述的p2l反表存储方法,其中,所述p2l反表中无效的逻辑单元号条目包括:坏的物理块或者存储校验数据的物理页在p2l缓冲区中的位置。
7、作为本申请的第二方面,本申请提供一种基于p2l反表的读命令处理方法,该方法基于p2l反表数据结构执行垃圾回收读操作,该方法包括:响应于接收到多个并发的读请求;根据p2l反表数据结构,以页条带为单位,对多个读请求顺序进行读数据的处理。
8、如上所述的基于p2l反表的读命令处理方法,其中,执行读操作的方法包括:获取垃圾回收时允许同时读的物理块数量;依据允许同时读的物理块数量,并下发执行相应数量的读请求,其中同时读的物理块数量不超过p2l反表数据结构中每个页条带所包含的物理块数量。
9、如上所述的基于p2l反表的读命令处理方法,其中,还包括:
10、从p2l缓冲区中取出的每个p2l反表的条目,通过l2p表检查p2l反表的条目的有效性;
11、如果p2l反表的条目是无效的,则禁止对该p2l反表的条目执行读操作,否则,允许对该p2l反表的条目执行读操作。
12、如上所述的基于p2l反表的读命令处理方法,其中,该方法还包括:获取单个tlc页条带中有效的物理页数量;在垃圾回收时,基于tlc页条带中有效的物理页数量,在同一时间内对不同的物理块下发相应数量的读请求。
13、基于p2l反表的读命令处理方法作为本申请的第三方面,本申请提供一种存储设备,包括控制部件与nvm芯片,所述控制部件执行所述的p2l反表存储方法或所述的基于p2l反表的读命令处理方法中任一项的方法。
14、本申请实现的有益效果如下:
15、(1)本申请的p2l反表存储方法,相比现有的p2l反表存储方法,在垃圾回收时可以提高同时读的nand物理块数量,有效提高了垃圾回收时的读性能,缩短垃圾回收过程中回收一个大块的时间。
16、(2)由于随机写性能受限于垃圾回收的速度,如果随机写速度太快导致系统没有空闲大块使用,写命令就会超时出错,所以垃圾回收一个大块的时间越短,随机写的性能就可以越高,利用本申请的p2l反表存储方法和读命令处理方法,可以提高随机读写的性能。
1.一种p2l反表存储方法,其特征在于,该方法包括:
2.根据权利要求1所述的p2l反表存储方法,其特征在于,所述获取写数据分配的物理块地址在页条带中的位置包括:
3.根据权利要求3所述的p2l反表存储方法,其特征在于,所有物理块地址包括好物理块的地址、坏物理块的地址或者存储校验数据的物理块的地址。
4.根据权利要求1所述的p2l反表存储方法,其特征在于,对所述p2l缓冲区初始化的方法包括:在所述p2l缓冲区中,将所述p2l反表中无效的逻辑单元号条目的内容清零。
5.根据权利要求2所述的p2l反表存储方法,其特征在于,所述p2l反表中无效的逻辑单元号条目包括:坏的物理块或者存储校验数据的物理页在p2l缓冲区中的位置。
6.一种基于p2l反表的读命令处理方法,其特征在于,该方法基于权利要求1-5之一获得的p2l反表数据结构执行垃圾回收读操作,该方法包括:
7.根据权利要求6所述的基于p2l反表的读命令处理方法,其特征在于,执行读操作的方法包括:
8.根据权利要求6所述的基于p2l反表的读命令处理方法,其特征在于,还包括:
9.根据权利要求6所述的基于p2l反表的读命令处理方法,其特征在于,该方法还包括:
10.一种存储设备,其特征在于,包括控制部件与nvm芯片,所述控制部件执行根据权利要求1-9中任一项的方法。