一种不连续地址的处理方法、装置、电子设备及存储介质
技术领域
本申请涉及芯片
技术领域
,具体而言,涉及一种不连续地址的处理方法、装置、电子设备及存储介质。背景技术
作为常见的大容量存储芯片,nandflash 由于存储密度不断提升以及颗粒成本优势,广泛应用于消费类电子产品。在手机、笔记本、人工智能和5G通信等新型行业巨大需求推动下,nandflash 存储需求与日俱增。
但由于nandflash存在多个标准,以英特尔,镁光,海力士,为首的nand厂商主导ONFI标准,而三星和东芝阵营主打Toggle标准。不同的标准使得产品技术规则存在较大差异,即使同一标准,不同公司在产品规划上,由于芯片受限于半导体芯片制程,也存在一些差别,如在不同nand flash的地址中存在位于不同块号内的不连续地址,不连续地址内地址是随机不连续的,缺少有序性,在地址运算时容易出错;而无论是小型的os还是linux,在软件架构上,从上而下可分为:应用层,文件系统层,FTL,物理层。FTL层会从文件系统获得操作命令对应的逻辑区块地址,FTL会目标层映射至块中进行操作;而原本复杂的FTL除了需要兼顾坏块管理以及磨损平衡,若增加不连续地址的识别、处理方式则会使FTL更加复杂,且开发难度大;传统的nand flash处理地址不连续方法一般采用MTD进行多个区域管理,如通过划分多个MTD区域,设定对应的伪物理块号,再通过不同的映射算法得到真正的物理块号,较为复杂,且不适用小系统产品。
针对上述问题,目前尚未有有效的技术解决方案。
发明内容
本申请实施例的目的在于提供一种不连续地址的处理方法、装置、电子设备及存储介质,利用简单的逻辑方法使得FTL层运作时可绕开不连续地址所在块进行操作,避免不连续地址对数据读写产生影响,且不增加FTL层复杂度,且适用于不同厂家的不同产品使用。
第一方面,本申请实施例提供了一种不连续地址的处理方法,用于处理nandflash中不连续地址,所述方法包括以下步骤:
S1、扫描并获取闪存的物理层中不连续地址;
S2、获取不连续地址所在块;
S3、设计关于不连续地址所在块的绕开逻辑;
S4、根据绕开逻辑,使FTL层运行时绕开不连续地址所块进行映射。
所述的一种不连续地址的处理方法,其中,步骤S3中的绕开逻辑为设计第二级映射逻辑,使得FTL层将目标映射至不连续所在块时通过第二级映射逻辑映射至另外的正常块中。
所述的一种不连续地址的处理方法,其中,步骤S3中的绕开逻辑为将不连续地址所在块纳入坏块,使得不连续地址所在块不在FTL层映射目标中而绕开该块映射。
所述的一种不连续地址的处理方法,其中,将不连续地址所在块纳入坏块过程为:遍历检查闪存中块地址,将坏块和不连续所在块加入坏块表中。
所述的一种不连续地址的处理方法,其中,在检查闪存中块地址时,先判断该块是否为不连续地址所在块,若为否再判断该块是否为坏块。
第二方面,本申请实施例还提供了一种不连续地址的处理方法装置,用于处理nand flash中不连续地址,包括:
获取模块,用于获取闪存物理层中不连续地址及其所在块;
绕开模块,用于设定绕开不连续地址所在块的绕开逻辑;
FTL层模块,用于nand flash操作时进行物理层映射;
所述FTL层运行时可基于绕开模块设定的绕开逻辑以绕开不连续地址所在块进行物理层映射。
所述的一种不连续地址的处理方法装置,其中,所述绕开模块为次级映射模块,可生成第二级映射逻辑,当FLT层映射目标为不连续地址所在块时进行第二级映射以将目标映射至另外的正常块中。
所述的一种不连续地址的处理方法装置,其中,所述绕开模块为坏块管理模块,可将不连续地址所在块纳入至坏块管理中,以使FLT层运行时绕开不连续地址所在块进行映射。
第三方面,本申请实施例还提供了一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第四方面,本申请实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
由上可知,本申请实施例提供的一种不连续地址的处理方法、装置、电子设备及存储介质,其中,处理方法通过设计关于不连续地址所在块的绕开逻辑,使得FTL层运作时可绕开不连续地址所在块进行操作,可避免不连续地址对数据读写产生影响,该处理方法逻辑简单,不会增加FTL层复杂度,且适用于不同厂家的不同产品使用。
附图说明
图1为本申请实施例提供的一种不连续地址的处理方法的流程图。
图2为本申请实施例提供的一种不连续地址的处理方法中绕开逻辑一种实施方式的逻辑图。
图3为本申请实施例提供的一种不连续地址的处理方法中绕开逻辑另一种实施方式的逻辑图。
图4为本申请实施例提供的一种不连续地址的处理装置的结构示意图。
图5为一nand flash的地址信息表。
图6为将图5地址信息表中不连续地址所在块纳入坏块管理过程的逻辑图。
图7为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
第一方面,请参照图1,图1是本申请一些实施例中的一种不连续地址的处理方法,用于处理nand flash中不连续地址,方法包括以下步骤:
S1、扫描并获取闪存的物理层中不连续地址;
具体地,由于不同厂家nand flash标准不同且产品存在差异,因此需对应扫描以精确获取闪存芯片中的不连续地址分布情况。
S2、获取不连续地址所在块;
具体地,由文件系统层的操作命令对应的逻辑区块地址(Logical BlockAddress, LBA),一般以扇区(sector 512B)为最小基本单位,而FTL层会将该扇区转换成相应的块以及页进行操作,因此,本申请实施例的中需获取不连续地址所在块,使得本申请实施例能以块作为操作单位,利于FTL层进行处理操作,符合FTL层的操作逻辑以减少FTL层负荷。
S3、设计关于不连续地址所在块的绕开逻辑;
具体地,该绕开逻辑服务于FTL层,目的在于设置一种可绕开不连续地址所在块使对应块不参与读写操作的逻辑。
S4、根据绕开逻辑,使FTL层运行时绕开不连续地址所块进行映射。
具体地,基于绕开逻辑,FTL接收文件系统层的操作命令后,将操作命令映射至不连续地址所块以外的正常块进行操作,使得不连续地址所块不参与读写操作。
本申请实施例的一种不连续地址的处理方法,获取闪存中不连续地址及其所在块,设计关于该块的绕开逻辑,使得FTL层运作时可绕开不连续地址所在块进行操作,采用直接绕开的方式进行不连续地址的处理,可避免不连续地址对数据读写产生影响,该处理方法逻辑简单,不会增加FTL层复杂度,且适用于不同厂家的不同产品使用。
在一些优选的实施方式中,步骤S3中的绕开逻辑包括且不限于两种实施方式,其中,第一种实施方式为:设计第二级映射逻辑,使得FTL层将目标映射至不连续所在块时通过第二级映射逻辑映射至另外的正常块中。
具体地,如图2所示,FTL层自身具备第一映射逻辑,可将指令映射至目标块中进行操作,而设计第二级映射逻辑目的在于增加一个绕开层,设于FTL层和物理层之间,在FTL层映射目标为正常块时,该绕开层不操作,在FTL层映射目标为不连续地址所在块时,该绕开层操作且根据第二映射逻辑对映射目标进行第二次映射,以将目标映射为正常块;在FTL层与物理层之间增设绕开层的方式并不会增加FTL层自身的复杂度,还可便捷实现不连续地址的绕开处理。
更具体地,该第二级映射逻辑为条件逻辑,即判断FTL层映射目标的块编号是否在属于不连续地址所在块的编号内,若不是则不进行映射,若是则相应改变编号值进行第二级映射;其中,改变编号值的方式可为定值增加编号值或定值减小编号值,该编号值改变幅度基于不连续地址所在块编号的覆盖区间进行设定;如某一nand flash中不连续地址所在块覆盖了编号为n-m的快地址,此时绕开层判断映射目标是否属于不连续地址的条件为:if(block_num >=n && block_num <=m),即判断映射目标的块编号是否在n-m之间,当映射目标在不连续地址所在块内时,则Phy_num = block_num+(m-n+1),即使映射目标块编号增加(m-n+1)值,从而实现不连续地址的绕开处理,另外,设计编号值改变量为(m-n+1),可确保映射目标能顺利映射到不连续地址之外的地址上;本申请实施例通过设置上述伪代码的方式进行第二级映射,使得FTL层可绕开不连续地址所在块进行映射,具有逻辑简单、有效的特点,且不会增加FTL层的复杂度,也不会直接影响FTL层自身的映射逻辑。
在一些优选的实施方式中,步骤S3中的绕开逻辑的第二种实施方式为:将不连续地址所在块纳入坏块,使得不连续地址所在块不在FTL层映射目标中而绕开该块映射。
具体地,坏块一般为闪存中不可使用的块地址,通过坏块管理的方式可使坏块不进入使用,FTL层映射也能跳过坏块进行映射,因此,在坏块整理时,将不连续地址所在块纳入其中,可将不连续地址所在块伪装为坏块,使得FTL层运行时可直接绕开不连续地址所在块进行块地址映射。
在一些优选的实施方式中,将不连续地址所在块纳入坏块过程为:遍历检查闪存中块地址,将坏块和不连续所在块加入坏块表中。
具体地,该步骤执行与闪存芯片投入使用前,需率先进行坏块扫描,避免坏块进行使用,而在该步骤中加入了不连续地址所在块的判断条件,以使得不连续地址所在块可纳入坏块管理中,如某一nand flash中不连续地址所在块覆盖了编号为n-m的快地址,则增加条件判断块编号是否为n-m之间,若是就纳入至坏块表中。
在一些优选的实施方式中,如图3所示,在检查闪存中块地址时,先判断该块是否为不连续地址所在块,若为否再判断该块是否为坏块。
具体地,由于步骤S1-S2已获取了不连续地址所在块,因此根据块编号即可将不连续地址所在块纳入坏块表中进行管理,而无需重新识别该不连续地址所在块的地址情况,先进行不连续地址所在块的判定可减少扫描过程中的数据分析量。
本申请实施例的一种不连续地址的处理方法,通过设计关于不连续地址所在块的绕开逻辑,使得FTL层运作时可绕开不连续地址所在块进行操作,可避免不连续地址对数据读写产生影响,该处理方法逻辑简单,不会增加FTL层复杂度,且适用于不同厂家的不同产品使用。
第二方面,请参照图4,图4是本申请一些实施例中提供的一种不连续地址的处理方法装置,用于处理nand flash中不连续地址,包括:
获取模块,用于获取闪存物理层中不连续地址及其所在块;
绕开模块,用于设定绕开不连续地址所在块的绕开逻辑;
FTL层模块,用于nand flash操作时进行物理层映射;
FTL层运行时可基于绕开模块设定的绕开逻辑以绕开不连续地址所在块进行物理层映射。
本申请实施例的一种不连续地址的处理方法装置,通过获取模块获取闪存中不连续地址及其所在块,通过绕开模块设计关于该块的绕开逻辑,使得FTL层模块运作时可基于绕开逻辑绕开不连续地址所在块进行操作,采用直接绕开的方式进行不连续地址的处理,可避免不连续地址对数据读写产生影响,该处理方法逻辑简单,不会增加FTL层模块复杂度,且适用于不同厂家的不同产品使用。
在一些优选的实施方式中,绕开模块包括且不限于两种实施方式,其中第一种实施方式为:绕开模块为次级映射模块,可生成第二级映射逻辑,当FLT层映射目标为不连续地址所在块时进行第二级映射以将目标映射至另外的正常块中。
具体地,次级映射模块作为FTL层模块与物理层之间的绕开层,在FTL层模块映射目标为正常块时,该绕开层不操作,在FTL层模块映射目标为不连续地址所在块时,该绕开层操作且根据第二映射逻辑对映射目标进行第二次映射,以将目标映射为正常块;在FTL层模块与物理层之间增设绕开层的方式并不会增加FTL层模块自身的复杂度,还可便捷实现不连续地址的绕开处理。
在一些优选的实施方式中,绕开模块的第二实施方式为:绕开模块为坏块管理模块,可将不连续地址所在块纳入至坏块管理中,以使FLT层运行时绕开不连续地址所在块进行映射。
具体地,坏块一般为闪存中不可使用的块地址,通过坏块管理模块可使坏块不进入使用,FTL层模块映射也能跳过坏块进行映射,因此,在坏块管理模块整理坏块时,将不连续地址所在块纳入其中,可将不连续地址所在块伪装为坏块,使得FTL层模块运行时可直接绕开不连续地址所在块进行块地址映射。
实施例1
如图5所示为一nand flash芯片的地址情况,其中不连续地址表现为086400h–0FFFFFh,分析可见该不连续地址覆盖的块编号为2148-4095,因此设计连接于FTL层和物理层之间用于绕开该不连续地址的伪代码逻辑:
if(block_num >=2148 && block_num <=4095)
Phy_num = block_num+1948;
也就是FTL层经的映射目标在块编号2148-4095时,将块编号增加1948值,以将FLT层目标映射在不连续地址所在块之外的正常块中,经过以上转换后,就可以绕开无效地址,同时又不会改变FTL层映射关系本身算法。
实施例2
如图5所示为一nand flash芯片的地址情况,其中不连续地址表现为086400h–0FFFFFh,分析可见该不连续地址覆盖的块编号为2148-4095;如图6所示,要将无效地址所在块编号(2148-4095)纳入系统坏块管理,首先在坏块扫描环节上配制不连续地址所在块编号(2148-4095)的判断逻辑,若是则将该块纳入坏块表中,若否则再进行坏块识别,坏块识别条件为是否满足“Page0 SPARE[0]数据==FF”,因此,程序在扫描坏块的时候,就可以直接将该不连续地址所在块的区域加入坏块管理,间接绕开了该区域,处理方式简单方便有效。
第三方面,请参照图5,图5为本申请实施例提供的一种电子设备的结构示意图,本申请提供一种电子设备3,包括:处理器301和存储器302,处理器301和存储器302通过通信总线303和/或其他形式的连接机构(未标出)互连并相互通讯,存储器302存储有处理器301可执行的计算机程序,当计算设备运行时,处理器301执行该计算机程序,以执行时执行上述实施例的任一可选的实现方式中的方法。
第四方面,本申请实施例提供一种存储介质,所述计算机程序被处理器执行时,执行上述实施例的任一可选的实现方式中的方法。其中,存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static RandomAccess Memory, 简称SRAM),电可擦除可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory, 简称EEPROM),可擦除可编程只读存储器(ErasableProgrammable Read Only Memory, 简称EPROM),可编程只读存储器(Programmable Red-Only Memory, 简称PROM),只读存储器(Read-Only Memory, 简称ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:存储器设备及其操作方法