一种闪存控制器及其控制方法、闪存存储设备的制作方法

文档序号:6371444阅读:117来源:国知局
专利名称:一种闪存控制器及其控制方法、闪存存储设备的制作方法
技术领域
本发明涉及固态存储技术领域,尤其涉及一种闪存控制器及其控制方法、闪存存储设备。
背景技术
当前闪存中的闪存控制器同时控制多个闪存颗粒,这些闪存颗粒共享一个数据和命令的通道,控制器通过片选信号实现对选定闪存颗粒的操作。为了实现高速传输的目标,要求闪存颗粒的数据和命令通道不间断的传输命令和数据,闪存控制器满负荷的在多个闪存颗粒之间切换工作。图I是一种现有闪存控制器的原理结构图,该闪存控制器包括一个核心控制器、 多个命令控制器以及多个闪存颗粒,核心控制器负责控制多个命令在对应的闪存颗粒之间 的切换,核心控制器之前的多个命令控制器(接口控制器)分别对应闪存颗粒,为闪存颗粒提供命令。该方案每个闪存颗粒需要一个命令控制器,每个命令控制器负责从命令接口获取命令、翻译命令并发送命令到核心控制器,然后等待核心控制器执行命令完成后执行对应的收集状态和写回状态的操作。核心控制器需要多个命令去调度实现高性能,因此,在命令接口上,需要多个命令控制器,增加硬件资源的开销,增加芯片的面积和功耗。综上可知,现有的闪存控制器在实际使用上显然存在不便与缺陷,所以有必要加以改进。

发明内容
针对上述的缺陷,本发明的目的在于提供一种闪存控制器及其控制方法、闪存存储设备,能够提高命令的产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。为了实现上述目的,本发明提供一种闪存控制器的控制方法,包括一种闪存控制器的控制方法,其特征在于,包括命令产生状态机从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;所述核心控制器执行所述命令完成后,命令回收状态机从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址向内存中写入所述命令完成状态信息。根据本发明的控制方法,“将所述命令翻译后转发给核心控制器”后还包括所述命令产生状态机将所述命令对应的数据地址发送给所述核心控制器,所述数据地址为数据读出的目的地址或数据写入的源地址。根据本发明的控制方法,“将所述命令翻译后转发给核心控制器”的步骤具体为所述命令产生状态机对所述多个命令接口的总线命令队列进行轮询;若某个总线命令队列不为空,则所述命令产生状态机获取其中一个命令;所述命令产生状态机根据所述命令从内存中获取该命令的详细信息打包后发送给所述核心控制器;所述命令产生状态机继续对所述总线命令队列进行轮询,直至所述多个命令接口上没有命令或者核心控制器不能够再接收命令。根据本发明的控制方法,“所述命令产生状态机根据所述命令从内存中获取该命令的详细信息打包后发送给所述核心控制器”的步骤中,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作。根据本发明的控制方法,“命令回收状态机从所述核心控制器查询该命令对应的命令完成状态信息”的步骤中,所述命令完成状态信息为所述核心控制器执行所述命令的结果,包括所述命令是否执行成功以及所述命令执行失败的类型。本发明相应提供一种闪存控制器,包括
命令产生状态机,用于从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;核心控制器,用于执行所述命令产生状态机发来的命令,并向命令回收状态机返回所述命令完成状态信息;命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。根据本发明的闪存控制器,所述命令产生状态机还用于将所述命令发送给所述核心控制器后,将所述命令对应的数据地址发送给所述核心控制器,所述数据地址为数据读出的目的地址或数据写入的源地址;所述命令完成状态信息包括所述命令是否执行成功以及所述命令执行失败的类型。根据本发明的闪存控制器,所述命令产生状态机还用于对多个命令接口的总线命令队列进行轮询,若某个总线命令队列不为空,则命令产生状态机获取其中一个命令并从内存中获取该命令的详细信息打包后发送给所述核心控制器,直至所述多个命令接口上没有命令或者核心控制器不能够再接收命令。根据本发明的闪存控制器,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作。本发明还提供一种闪存存储设备,包括多个命令接口、与所述多个命令接口对应的多个闪存颗粒以及与所述多个命令接口以及多个闪存颗粒分别连接的闪存控制器,所述闪存控制器包括命令产生状态机,用于从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;核心控制器,用于执行所述命令产生状态机发来的命令,并向命令回收状态机返回所述命令完成状态信息;命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。本发明通过命令产生状态机不断从命令接口获取命令并发送到核心控制器,命令回收状态机从核心控制器回收命令完成状态信息并写回该信息,只需要一个命令产生状态机和命令回收状态机即可实现对核心控制器满负荷运转的控制,同时命令的产生和回收由独立的状态机完成,增加了命令执行的灵活度,减少了命令切换的时间,减少了应急资源的消耗,降低芯片面积和功耗提高了命令的产生和回收的效率,减少硬件资源的开销,相对于现有采用多个命令控制器控制特定的闪存颗粒,本方案只需要一个状态机动态的为核心控制器提供命令去控制多个闪存颗粒,减少了硬件资源的消耗,降低芯片的面积和功耗。借此,本发明能够提高命令的产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。


图I是现有闪存控制器的原理结构图;图2是本发明的闪存控制器的原理结构图;图3是本发明闪存控制器的控制方法的流程图; 图4是本发明闪存控制器中命令产生状态机的运行流程图;图5是本发明闪存存储设备的原理结构图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图2所示,本发明一种闪存控制器100,用于对非易失性闪存的多个闪存颗粒200进行控制,其主要包括命令产生状态机10、核心控制器20、命令回收状态机30,其中命令产生状态机10以及命令回收状态机分别通过同步FIFO (先入先出)缓冲器40与核心控制器20连接耦合。命令产生状态机10,用于从闪存的多个命令接口接收命令,将该命令翻译后转发给核心控制器20,并将命令完成状态信息的地址预写入缓冲寄存器11。在闪存中,通常设置一个命令接口(该命令接口为总线接口)对应一个闪存颗粒,一般来说一个闪存会包括多个闪存颗粒200,从而闪存具有多个命令接口,每个命令接口可以存放多个命令组成的总线命令队列。命令产生状态机10对多个命令接口进行轮询,如果某个总线命令队列不为空,则命令产生状态机10启动,从总线命令队列中获取一个命令,并根据该命令从内存中获取该命令对应的详细信息。该详细信息主要包括命令的操作类型以及命令的操作模式,命令的操作类型包括读闪存、写闪存以及擦除闪存等;命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作等。命令产生状态机10获取了该命令的详细信息后,将该详细信息进行打包发送给核心控制器20进行处理,随后命令产生状态机10将从内存中获取该命令对应的数据地址并发送给核心控制器20,该数据地址为数据读出的目的地址或数据写入的源地址。为便于命令的回收,命令产生状态机10还在内存中预先开辟空间用于存储命令完成状态信息,同时将该命令完成状态信息的存储地址缓存到命令状态机10内部的缓冲寄存器11,以便于命令回收状态机30调用。命令完成状态信息包括命令是否执行成功以及命令执行失败的类型。其中,闪存的多个命令接口与缓冲寄存器11绑定,每个命令接口分别与一个缓冲寄存器11对应。核心控制器20,用于执行命令产生状态机10发来的命令,并向命令回收状态机30返回该命令的命令完成状态信息。在命令中包括了闪存颗粒200的编号,核心控制器20接收一个命令则在对应的闪存颗粒200上执行该命令。为了让闪存接口满负荷工作,达到高性能数据传输的目的,核心控制器20通常能够控制多个闪存颗粒200,即核心控制器20能够接收多个命令,并根据闪存颗粒200的状态调度命令的执行;同时核心控制器20内能够缓存控制器命令,通常缓存的是不同闪存颗粒200不同逻辑单元的命令,以方便核心控制器20动态调度这些命令在空闲的闪存颗粒200上执行。当核心控制器20能够接收命令(即未处于满负荷),且命令接口有新的命令到来,命令产生状态机10启动,核心控制器20接收从命令产生状态机10发来的命令,并根据命令执行相应的操作(读闪存、写闪存以及擦除闪存等);当核心控制器20完成了某个命令的执行,则触发命令回收状态机30接收命令完成状态信息。
命令回收状态机30,用于核心控制器20执行命令完成后从核心控制器20查询该命令的对应的命令完成状态信息,并根据缓冲寄存器11中的地址将该命令完成状态信息写入内存。具体的,当核心控制器20执行某个命令结束,命令回收状态机30触发,并从核心控制器20中查询该命令对应的命令完成状态信息,并根据该命令内的闪存颗粒编号与命令产生状态机10内的缓冲寄存器11的对应关系,将相应的缓冲寄存器11中获取该命令的命令完成状态信息的存储地址,并根据该地址将命令完成状态信息存入内存。根据本发明的一个实施例,核心控制器20控制4个闪存颗粒,总线上有4个slave(从设备)作为命令接口,命令产生状态机10会对4个salve 口轮询并接收命令进行翻译后发送给核心控制器20,4个slave 口和命令产生状态机10内部的BF (缓冲寄存器11)绑定,一个slave 口对应一个BF。Slave 口和闪存颗粒200之间没有绑定的关系,驱动程序可以选择任意一个slave去控制特定的闪存颗粒200。由于命令中包含了闪存颗粒200的编号,因此命令产生状态机10只要把编号缓存在BF中,使不同闪存颗粒200返回状态的位置不同,命令回收状态机30根据返回状态位置和命令匹配。如果驱动程序以固定的关系控制闪存颗粒20,即BR)对于颗粒0,BFl对于颗粒1,则不需要在BF中缓存编号。核心控制器20接收了来自命令状态机10命令,并根据该命令中的闪存颗粒编号对相应的闪存颗粒进行操作。操作结束后,命令回收状态机30触发,从核心I控制器20中查询该命令的命令完成状态信息,并根据该命令内的闪存颗粒编号与命令产生状态机10内的缓冲寄存器11的对应关系,从相应的缓冲寄存器11中获取该命令的命令完成状态信息的存储地址,并根据该地址将命令完成状态信息存入内存。在本发明中,在命令产生端和命令回收端(即命令控制器端),没有不同闪存控制器的概念,命令产生状态机10看到的是不同的命令接口,并循环的从这些接口中接收命令。命令的产生、命令的回收和闪存颗粒200之间不需要通过特定的ID( IDentity,身份标识号码)来固定,命令接口和缓冲寄存器11建立了固定的关系,闪存颗粒200和命令接口的对应关系由驱动程序确定。现有的闪存控制器中有多个命令控制器,每个命令控制器一个闪存颗粒,并且命令控制器需要长时间维持对一个闪存颗粒的控制器,从命令接口获得命令开始,到把命令和数据发到核心控制器,到从核心控制器获得完成状态,命令控制器都需要维持在该闪存颗粒上,需要多个命令控制器实现核心控制器的满负荷运转。而本发明中,命令产生状态机10动态的提供命令,命令回收状态机30动态回收状态,只需要一个命令产生状态机10和命令回收状态机30即可实现对核心控制器20满负荷运转的控制。本发明通过命令产生状态机10不断从命令接口获取命令并发送到核心控制器20,命令回收状态机30从核心控制器20回收命令完成状态信息并写回该信息,只需要一个命令产生状态机10和命令回收状态机30即可实现对核心控 制器20满负荷运转的控制,同时命令的产生和回收由独立的状态机完成,增加了命令执行的灵活度,减少了命令切换的时间,减少了应急资源的消耗,降低芯片面积和功耗提高了命令的产生和回收的效率,减少硬件资源的开销,相对于现有采用多个命令控制器控制特定的闪存颗粒,本方案只需要一个状态机动态的为核心控制器提供命令去控制多个闪存颗粒,减少了硬件资源的消耗,降低芯片的面积和功耗。借此,本发明能够提高命令的产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。如图3所示,本发明还提供一种闪存控制器的控制方法,该方法通过图2中的闪存控制器完成,该控制方法的主要流程包括如下步骤步骤S301,命令产生状态机从闪存的多个命令接口接收命令,将命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器。本步骤由图2中的命令产生状态机10完成。命令完成状态信息为核心控制器执行命令的结果,包括命令是否执行成功以及命令执行失败的类型等信息。步骤S302,核心控制器执行命令完成后,命令回收状态机从核心控制器查询该命令对应的命令完成状态信息,并根据缓冲寄存器中的地址向内存中写入命令完成状态信息。本步骤由图2中的命令回收状态机30完成。优选的是,在步骤S301中,命令产生状态机将命令翻译后转发给核心控制器后还包括将命令对应的数据地址发送给核心控制器,该数据地址为数据读出的目的地址或数据写入的源地址。优选的是,在步骤S301中,命令产生状态机从闪存的多个命令接口接收命令,且将命令并翻译后转发给核心控制器具体为命令产生状态机对多个命令接口的总线命令队列进行轮询;若某个总线命令队列不为空,则命令产生状态机获取其中一个命令;命令产生状态机根据命令从内存中获取该命令的详细信息打包后发送给核心控制器,命令的详细信息包括命令的操作类型以及命令的操作模式,命令的操作类型主要包括读闪存、写闪存以及擦除闪存等,命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作等;命令产生状态机继续对总线命令队列进行轮询,直至多个命令接口上没有命令或者核心控制器不能够再接收命令。图4是本发明闪存控制器中命令产生状态机的运行流程图,主要流程包括如下步骤步骤S401,命令产生状态机对多个命令接口的总线命令队列进行轮询。步骤S402,若某个总线命令队列不为空,则命令产生状态机获取其中一个命令。步骤S403,命令产生状态机将命令进行翻译后发送给核心控制器,同时将该命令的数据地址发送给核心控制器。
步骤S404,判断核心控制器是否为满负荷状态,若是则进入步骤S405,否则进入步骤S406。步骤S405,命令产生状态机暂停向核心控制器发送命令,并回到步骤S404。步骤S406,命令产生状态机向核心控制器发送命令,并回到步骤S402。本发明的将命令产生和命令回收分别通过两个状态机实现,一旦核心控制器能够接收命令,且命令接口有新的命令到来,命令产生状态机启动对应的操作。将命令产生和命令回收两个状态机彼此独立,增加了命令执行的灵活度,减少了命令切换的时间,减少了应急资源的消耗,降低芯片面积和功耗。如图5所示,本发明还提供一种闪存存储设备300,包括多个命令接口 301、与多个命令接口 301对应的多个闪存颗粒200以及与多个命令接口 301以及多个闪存颗粒200分别连接的闪存控制器100,闪存控制器100包括
命令产生状态机,用于从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;核心控制器,用于执行所述命令产生状态机发来的命令,并向命令回收状态机返回所述命令完成状态信息;命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。综上所述,本发明通过命令产生状态机不断从命令接口获取命令并发送到核心控制器,命令回收状态机从核心控制器回收命令完成状态信息并写回该信息,只需要一个命令产生状态机和命令回收状态机即可实现对核心控制器满负荷运转的控制,同时命令的产生和回收由独立的状态机完成,增加了命令执行的灵活度,减少了命令切换的时间,减少了应急资源的消耗,降低芯片面积和功耗提高了命令的产生和回收的效率,减少硬件资源的开销,相对于现有采用多个命令控制器控制特定的闪存颗粒,本方案只需要一个状态机动态的为核心控制器提供命令去控制多个闪存颗粒,减少了硬件资源的消耗,降低芯片的面积和功耗。借此,本发明能够提高命令的产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种闪存控制器的控制方法,其特征在于,包括 命令产生状态机从闪存的多个命令接ロ接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器; 所述核心控制器执行所述命令完成后,命令回收状态机从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址向内存中写入所述命令完成状态ィ目息。
2.根据权利要求I所述的控制方法,其特征在干,“将所述命令翻译后转发给核心控制器”后还包括 所述命令产生状态机将所述命令对应的数据地址发送给所述核心控制器,所述数据地址为数据读出的目的地址或数据写入的源地址。
3.根据权利要求I所述的控制方法,其特征在干,“命令产生状态机从闪存的多个命令接ロ接收命令,且将所述命令并翻译后转发给核心控制器”的步骤具体为 所述命令产生状态机对所述多个命令接ロ的总线命令队列进行轮询; 若某个总线命令队列不为空,则所述命令产生状态机获取其中ー个命令; 所述命令产生状态机根据所述命令从内存中获取该命令的详细信息打包后发送给所述核心控制器; 所述命令产生状态机继续对所述总线命令队列进行轮询,直至所述多个命令接口上没有命令或者核心控制器不能够再接收命令。
4.根据权利要求3所述的控制方法,其特征在干,“所述命令产生状态机根据所述命令从内存中获取该命令的详细信息打包后发送给所述核心控制器”的步骤中,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的ー个页全部数据操作或者部分数据操作。
5.根据权利要求I所述的控制方法,其特征在干,“命令回收状态机从所述核心控制器查询该命令对应的命令完成状态信息”的步骤中,所述命令完成状态信息为所述核心控制器执行所述命令的结果,包括所述命令是否执行成功以及所述命令执行失败的类型。
6.ー种闪存控制器,其特征在于,包括 命令产生状态机,用于从闪存的多个命令接ロ接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器; 核心控制器,用于执行所述命令产生状态机发来的命令,井向命令回收状态机返回所述命令完成状态信息; 命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。
7.根据权利要求6所述的闪存控制器,其特征在于,所述命令产生状态机还用于将所述命令发送给所述核心控制器后,将所述命令对应的数据地址发送给所述核心控制器,所述数据地址为数据读出的目的地址或数据写入的源地址; 所述命令完成状态信息包括所述命令是否执行成功以及所述命令执行失败的类型。
8.根据权利要求6所述的闪存控制器,其特征在于,所述命令产生状态机还用于对多个命令接ロ的总线命令队列进行轮询,若某个总线命令队列不为空,则命令产生状态机获取其中ー个命令并从内存中获取该命令的详细信息打包后发送给所述核心控制器,直至所述多个命令接ロ上没有命令或者核心控制器不能够再接收命令。
9.根据权利要求8所述的闪存控制器,其特征在干,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的ー个页全部数据操作或者部分数据操作。
10.ー种闪存存储设备,包括多个命令接ロ、与所述多个命令接ロ对应的多个闪存颗粒以及与所述多个命令接ロ以及多个闪存颗粒分别连接的闪存控制器,其特征在于,所述闪存控制器包括 命令产生状态机,用于从闪存的多个命令接ロ接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器; 核心控制器,用于执行所述命令产生状态机发来的命令,井向命令回收状态机返回所述命令完成状态信息; 命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。
全文摘要
本发明适用于固态存储技术领域,提供了一种闪存控制器及其控制方法、闪存存储设备,闪存控制器的控制方法包括命令产生状态机从闪存的多个命令接口接收命令,将命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;核心控制器执行命令完成后,命令回收状态机从核心控制器查询该命令对应的命令完成状态信息,并根据缓冲寄存器中的地址向内存中写入所述命令完成状态信息。借此,本发明能够提高命令产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。
文档编号G06F12/02GK102799391SQ20121019586
公开日2012年11月28日 申请日期2012年6月14日 优先权日2012年6月14日
发明者莫海锋 申请人:记忆科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1