一种NandFlash控制器及方法与流程

文档序号:12120758阅读:202来源:国知局
一种Nand Flash控制器及方法与流程

本发明涉及Flash控制技术领域,,特别涉及一种Nand Flash控制器及方法。



背景技术:

Nand Flash技术中,通常采用Flash controller(即Flash控制器)对Flash的命令操作进行监控。其中,Flash控制器与Flash Target呈一一对应关系,也即,一个Flash控制器只对一个Target进行控制。

在当前的Nand Flash中,一个Target最多只能同时对一个命令进行响应,然后在命令的控制之下,进行相应的命令执行操作。然而,Target在完成了与某个命令对应的命令执行操作后,均会进入BUSY状态,该BUSY状态将会持续一段时间,也即,在命令执行操作过后,Target的状态将会在一段时间之内保持在BUSY状态,只有等BUSY状态结束之后,这个Target才能对新的命令进行响应。

由上可见,在现有的技术中,Flash控制器需要等与其唯一对应的Target的BUSY状态结束后才能控制该Target去执行其他命令,从而使得Flash控制器所对应的单位时间内进行读写操作的次数处于非常低的水平,也即,当前Flash控制器对应的IOPS(即Input/Output Operations Per Second)带宽较低,不利于Nand Flash性能的提升。

综上所述可以看出,如何提高Flash控制器对应的IOPS带宽是目前有待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种Nand Flash控制器及方法,提高了Flash控制器对应的IOPS带宽。其具体方案如下:

一种Nand Flash控制器,包括:

命令获取模块,用于获取第一待执行命令;

Target监视模块,用于对Nand Flash的Target组中的所有Target进行监视;其中,所述Target组包括至少两个Target;

Target筛选模块,用于当所述Target监视模块监视到当前所述Target组的所有Target均没有处于命令执行状态,则从所有Target中筛选出一个处于IDLE状态的Target作为第一目标Target;

命令发送模块,用于将所述第一待执行命令发送至所述第一目标Target,以控制所述第一目标Target进行相应的命令执行操作。

优选的,所述Target监视模块包括:

第一监视单元,用于监视所述Target组中的每个Target是否处于命令执行状态;

第二监视单元,用于监视所述Target组中的每个Target的工作负荷状态;其中,任一Target的工作负荷状态包括BUSY状态和IDLE状态。

优选的,所述Target筛选模块包括:

第一筛选单元,用于当所述第一监视单元监视到当前所述Target组的所有Target均没有处于命令执行状态,则根据所述第二监视单元的监视结果,从所述Target组中筛选出所有处于IDLE状态的Target,得到目标Target组;

第二筛选单元,用于从所述目标Target组中筛选出一个Target作为所述第一目标Target。

优选的,所述第二筛选单元,具体用于从所述目标Target组中筛选出使用频率最低的一个Target作为所述第一目标Target。

优选的,所述第二筛选单元,具体用于根据预先设定的Target编号,从所述目标Target组中筛选出Target编号最小的Target作为所述第一目标Target。

优选的,所述Nand Flash控制器,还包括:

命令执行时间确定模块,用于在所述第一目标Target正在执行所述第一待执行命令的过程中,若所述命令获取模块获取到第二待执行命令,则利用预先设定的映射表,分别确定所述第一待执行命令和所述第二待执行命令各自所对应的命令执行时间,相应地得到第一命令执行时间和第二命令执行时间;其中,所述映射表为用于记录命令类型与命令执行时间之间对应关系的数据表;

判断模块,用于判断所述第一命令执行时间是否大于所述第二命令执行时间,如果是,则从所有Target中筛选出一个处于IDLE状态的Target作为第二目标Target;

操作临时管制模块,用于将所述第一目标Target中当前正针对所述第一待执行命令的命令执行操作挂起,以暂停所述第一目标Target当前对所述第一待执行命令的命令执行操作,并通知所述命令发送模块,将所述第二待执行命令发送至所述第二目标Target,以控制所述第二目标Target进行相应的命令执行操作;

操作恢复模块,用于当所述第二目标Target完成针对所述第二待执行命令的命令执行操作,则取消当前所述第一目标Target的挂起状态,以控制所述第一目标Target进行剩余的命令执行操作。

相应的,本发明还公开了一种Nand Flash控制方法,包括:

获取第一待执行命令;

对Nand Flash的Target组中的所有Target进行监视;其中,所述Target组包括至少两个Target;

当监视到当前所述Target组的所有Target均没有处于命令执行状态,则从所有Target中筛选出一个处于IDLE状态的Target作为第一目标Target;

将所述第一待执行命令发送至所述第一目标Target,以控制所述第一目标Target进行相应的命令执行操作。

优选的,所述对Nand Flash的Target组中的所有Target进行监视的过程,包括:

监视所述Target组中的每个Target是否处于命令执行状态,以及监视所述Target组中的每个Target的工作负荷状态;其中,任一Target的工作负荷状态包括BUSY状态和IDLE状态;

相应的,所述从所有Target中筛选出一个处于IDLE状态的Target作为第一目标Target的过程,包括:

从所述Target组中筛选出所有处于IDLE状态的Target,得到目标Target组,然后从所述目标Target组中筛选出一个Target作为所述第一目标Target。

优选的,所述从所述目标Target组中筛选出一个Target作为所述第一目标Target的过程,包括:

从所述目标Target组中筛选出使用频率最低的一个Target作为所述第一目标Target;

或者,根据预先设定的Target编号,从所述目标Target组中筛选出Target编号最小的Target作为所述第一目标Target。

优选的,所述Nand Flash控制方法,还包括:

在所述第一目标Target正在执行所述第一待执行命令的过程中,若获取到第二待执行命令,则利用预先设定的映射表,分别确定所述第一待执行命令和所述第二待执行命令各自所对应的命令执行时间,相应地得到第一命令执行时间和第二命令执行时间;其中,所述映射表为用于记录命令类型与命令执行时间之间对应关系的数据表;

判断所述第一命令执行时间是否大于所述第二命令执行时间,如果是,则从所有Target中筛选出一个处于IDLE状态的Target作为第二目标Target;

将所述第一目标Target中当前正针对所述第一待执行命令的命令执行操作挂起,以暂停所述第一目标Target当前对所述第一待执行命令的命令执行操作,并将所述第二待执行命令发送至所述第二目标Target,以控制所述第二目标Target进行相应的命令执行操作;

当所述第二目标Target完成针对所述第二待执行命令的命令执行操作,则取消当前所述第一目标Target的挂起状态,以控制所述第一目标Target进行剩余的命令执行操作。

本发明中,Nand Flash控制器,包括:命令获取模块,用于获取第一待执行命令;Target监视模块,用于对Nand Flash的Target组中的所有Target进行监视;其中,Target组包括至少两个Target;Target筛选模块,用于当Target监视模块监视到当前Target组的所有Target均没有处于命令执行状态,则从所有Target中筛选出一个处于IDLE状态的Target作为第一目标Target;命令发送模块,用于将第一待执行命令发送至第一目标Target,以控制第一目标Target进行相应的命令执行操作。可见,本发明中,通过Flash控制器对至少两个Target进行监视,如果监视到当前所有Target均没有处于命令执行状态,则会从所有Target中筛选出一个处于IDLE状态的Target作为目标Target,以利用该目标Target对待执行命令进行响应,此时其他处于BUSY状态的Target可以继续保持在BUSY状态,由此可见,本发明中令一个Flash控制器对多个Target进行控制,这样使得在某个Target处于BUSY状态的情况下,该Flash控制器依然能够控制某个处于IDLE状态的Target去执行其他命令,从而提高了本发明中Flash控制器所对应的单位时间内进行读写操作的次数,也即,提高了Flash控制器的IOPS带宽。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种Nand Flash控制器结构示意图;

图2为本发明实施例公开的一种具体的Nand Flash控制器工作状态示意图;

图3为本发明实施例公开的一种具体的Target命令挂起状态示意图;

图4为本发明实施例公开的一种Nand Flash控制方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种Nand Flash控制器,参见图1所示,该控制器包括:

命令获取模块11,用于获取第一待执行命令;

Target监视模块12,用于对Nand Flash的Target组中的所有Target进行监视;其中,Target组包括至少两个Target;

Target筛选模块13,用于当Target监视模块12监视到当前Target组的所有Target均没有处于命令执行状态,则从所有Target中筛选出一个处于IDLE状态的Target作为第一目标Target;

命令发送模块14,用于将第一待执行命令发送至第一目标Target,以控制第一目标Target进行相应的命令执行操作。

本实施例中,上述第一待执行命令的类型包括但不限于Erase命令、Program命令或Read命令。

另外,上述Target组中Target的数量大于一个,例如,上述Target组中可以包括8个Target,另外,假设当前上述包括8个Target的Target组需要对至少8个命令进行处理,为了尽可能地提高Flash控制器的IOPS带宽,可以按照如图2所示的命令执行状态以及BUSY状态之间的组合方式,控制Flash控制器中的8个Target对上述多个命令进行依次响应。

可以理解的是,当本实施例中的某个Target正对某个命令进行响应的时候,此时该Target便处于所谓的命令执行状态,另外,当该Target对上述命令的响应结束后,该Target将会进入BUSY状态,而当该Target的BUSY状态结束后,将会进入IDLE状态。

可见,本发明实施例中,通过Flash控制器对至少两个Target进行监视,如果监视到当前所有Target均没有处于命令执行状态,则会从所有Target中筛选出一个处于IDLE状态的Target作为目标Target,以利用该目标Target对待执行命令进行响应,此时其他处于BUSY状态的Target可以继续保持在BUSY状态,由此可见,本发明实施例中令一个Flash控制器对多个Target进行控制,这样使得在某个Target处于BUSY状态的情况下,该Flash控制器依然能够控制某个处于IDLE状态的Target去执行其他命令,从而提高了本发明实施例中Flash控制器所对应的单位时间内进行读写操作的次数,也即,提高了Flash控制器的IOPS带宽。

本发明实施例公开了一种具体的Nand Flash控制器,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

上一实施例中,需要利用Target监视模块对Nand Flash的Target组中的所有Target进行监视。本实施例中,上述Target监视模块具体包括第一监视单元和第二监视单元;其中,

第一监视单元,用于监视Target组中的每个Target是否处于命令执行状态;

第二监视单元,用于监视Target组中的每个Target的工作负荷状态;其中,任一Target的工作负荷状态包括BUSY状态和IDLE状态。

进一步的,上一实施例中的Target筛选模块具体可以包括第一筛选单元和第二筛选单元;其中,

第一筛选单元,用于当上述第一监视单元监视到当前Target组的所有Target均没有处于命令执行状态,则根据上述第二监视单元的监视结果,从Target组中筛选出所有处于IDLE状态的Target,得到目标Target组;

第二筛选单元,用于从上述目标Target组中筛选出一个Target作为第一目标Target。

也即,本实施例具体可以先从Target组中筛选出所有处于IDLE状态的Target,然后在从上述筛选结果中选出一个Target作为上述第一目标Target。当然,本实施例也可以在上述第一监视单元监视到当前Target组的所有Target均没有处于命令执行状态的情况下,随机从上述Target组中挑选出一个Target,如果该Target恰好处于IDLE状态,则直接将该Target确定为上述第一目标Target,如果该Target处于BUSY状态,则在剩余的Target中重新随机选择一个Target,并重复上述过程,直至选到为止。

另外,上述第二筛选单元,具体可以用于从目标Target组中筛选出使用频率最低的一个Target作为第一目标Target。当然,除此之外,上述第二筛选单元,也可以具体用于根据预先设定的Target编号,从上述目标Target组中筛选出Target编号最小的Target作为第一目标Target。

进一步的,考虑到Target所响应的命令中,有些命令的执行时间较长,而有些命令的执行时间相对较短,为了进一步Flash控制器所对应的IOPS,本实施例中的Nand Flash控制器,还可以包括命令执行时间确定模块、判断模块、操作临时管制模块和操作恢复模块;其中,

命令执行时间确定模块,用于在第一目标Target正在执行第一待执行命令的过程中,若上述命令获取模块获取到第二待执行命令,则利用预先设定的映射表,分别确定第一待执行命令和第二待执行命令各自所对应的命令执行时间,相应地得到第一命令执行时间和第二命令执行时间;其中,映射表为用于记录命令类型与命令执行时间之间对应关系的数据表;

判断模块,用于判断第一命令执行时间是否大于第二命令执行时间,如果是,则从所有Target中筛选出一个处于IDLE状态的Target作为第二目标Target;

操作临时管制模块,用于将第一目标Target中当前正针对第一待执行命令的命令执行操作挂起,以暂停第一目标Target当前对第一待执行命令的命令执行操作,并通知命令发送模块,将第二待执行命令发送至第二目标Target,以控制第二目标Target进行相应的命令执行操作;

操作恢复模块,用于当第二目标Target完成针对第二待执行命令的命令执行操作,则取消当前第一目标Target的挂起状态,以控制第一目标Target进行剩余的命令执行操作。

也即,当本实施例中的Target组需要响应的两个命令中,如果正在处理的命令对应的执行时间大于正需要进行处理的另一命令,则可以先暂时将上述正在处理的命令进行挂起,然后让另一Target对上述正需要进行处理的另一命令进行响应,该响应结束后,便重新恢复上述被挂起的命令所对应的响应过程,已完成剩余的命令执行操作。

例如,参见图3所示,如果发往Target 1的命令是Program命令,由于Program命令执行状态分为Program命令处理状态和Program数据处理状态,Program命令处理状态之后跟随着大量的Program Data,一般是一整个Page上的数据,这些数据会占用很长的时间,以Page size为16K Byte和100M工作时钟为例,Program Data时间大约是80us。如果此刻检测到另一处于IDLE状态的Target 2需要执行一个Read命令或者Erase命令,考虑到Read命令或Erase命令所对应的命令执行时间很短,一般是几百纳秒,那么Flash控制器会暂时将Target 1中的Program Data操作暂时挂起,并将接口的控制权分配给Target 2,然后将对应的Read命令或Erase命令发送进去,再返回至Target 1,继续之前的Program data操作。这样一来,便可以提前让Target 2进入Busy状态,并使得Target 2开始对其命令进行操作,而不必等待Target 1的命令执行操作结束才开始,从而节省时间,提高IOPS带宽。

相应的,本发明实施例还公开了一种Nand Flash控制方法,参见图4所示,该方法包括:

步骤S11:获取第一待执行命令;

步骤S12:对Nand Flash的Target组中的所有Target进行监视;其中,Target组包括至少两个Target;

步骤S13:当监视到当前Target组的所有Target均没有处于命令执行状态,则从所有Target中筛选出一个处于IDLE状态的Target作为第一目标Target;

步骤S14:将第一待执行命令发送至第一目标Target,以控制第一目标Target进行相应的命令执行操作。

可以理解的是,上述步骤S11和步骤S12在执行顺序方面不存在先后关系。

可见,本发明实施例中,通过Flash控制器对至少两个Target进行监视,如果监视到当前所有Target均没有处于命令执行状态,则会从所有Target中筛选出一个处于IDLE状态的Target作为目标Target,以利用该目标Target对待执行命令进行响应,此时其他处于BUSY状态的Target可以继续保持在BUSY状态,由此可见,本发明实施例中令一个Flash控制器对多个Target进行控制,这样使得在某个Target处于BUSY状态的情况下,该Flash控制器依然能够控制某个处于IDLE状态的Target去执行其他命令,从而提高了本发明实施例中Flash控制器所对应的单位时间内进行读写操作的次数,也即,提高了Flash控制器的IOPS带宽。

具体的,上述步骤S12中,对Nand Flash的Target组中的所有Target进行监视的过程,可以包括:监视Target组中的每个Target是否处于命令执行状态,以及监视Target组中的每个Target的工作负荷状态;其中,任一Target的工作负荷状态包括BUSY状态和IDLE状态。

相应的,上述步骤S13中,从所有Target中筛选出一个处于IDLE状态的Target作为第一目标Target的过程,可以具体包括:从Target组中筛选出所有处于IDLE状态的Target,得到目标Target组,然后从目标Target组中筛选出一个Target作为第一目标Target。

另外,上述从目标Target组中筛选出一个Target作为第一目标Target的过程,可以为:从目标Target组中筛选出使用频率最低的一个Target作为第一目标Target,当然,也可以为:根据预先设定的Target编号,从目标Target组中筛选出Target编号最小的Target作为第一目标Target。

进一步的,考虑到Target所响应的命令中,有些命令的执行时间较长,而有些命令的执行时间相对较短,为了进一步Flash控制器所对应的IOPS,本实施例中Nand Flash控制方法,还可以包括下面步骤S21至S24:

步骤S21:在第一目标Target正在执行第一待执行命令的过程中,若获取到第二待执行命令,则利用预先设定的映射表,分别确定第一待执行命令和第二待执行命令各自所对应的命令执行时间,相应地得到第一命令执行时间和第二命令执行时间;其中,映射表为用于记录命令类型与命令执行时间之间对应关系的数据表;

步骤S22:判断第一命令执行时间是否大于第二命令执行时间,如果是,则从所有Target中筛选出一个处于IDLE状态的Target作为第二目标Target;

步骤S23:将第一目标Target中当前正针对第一待执行命令的命令执行操作挂起,以暂停第一目标Target当前对第一待执行命令的命令执行操作,并将第二待执行命令发送至第二目标Target,以控制第二目标Target进行相应的命令执行操作;

步骤S24:当第二目标Target完成针对第二待执行命令的命令执行操作,则取消当前第一目标Target的挂起状态,以控制第一目标Target进行剩余的命令执行操作。

也即,当本实施例中的Target组需要响应的两个命令中,如果正在处理的命令对应的执行时间大于正需要进行处理的另一命令,则可以先暂时将上述正在处理的命令进行挂起,然后让另一Target对上述正需要进行处理的另一命令进行响应,该响应结束后,便重新恢复上述被挂起的命令所对应的响应过程,已完成剩余的命令执行操作。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种Nand Flash控制器及方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1