专利名称:一种闪存控制器及其控制方法、闪存存储设备的制作方法
技术领域:
本发明涉及固态存储技术领域,尤其涉及一种闪存控制器及其控制方法、闪存存储设备。
背景技术:
当前闪存中的闪存控制器同时控制多个闪存颗粒,这些闪存颗粒共享一个数据和命令的通道,控制器通过片选信号实现对选定闪存颗粒的操作。为了实现高速传输的目标,要求闪存颗粒的数据和命令通道不间断的传输命令和数据,闪存控制器满负荷的在多个闪
存颗粒之间切换工作,因此,需要闪存控制能够拿到多个闪存颗粒的命令,且能够灵活的在命令之间切换。图I是一种现有闪存控制器的原理结构图,该闪存控制器包括一个核心控制器、多个命令控制器以及多个闪存颗粒,核心控制器负责控制多个命令在对应的闪存颗粒之间的切换,核心控制器之前的多个命令控制器(接口控制器)分别对应闪存颗粒,为闪存颗粒提供命令。该方案每个闪存颗粒需要一个命令控制器,每个命令控制器负责从命令接口获取命令、翻译命令并发送命令到核心控制器,然后等待核心控制器执行命令完成后执行对应的收集状态和写回状态的操作。核心控制器需要多个命令去调度实现高性能,因此,在命令接口上,需要多个命令控制器,增加硬件资源的开销,增加芯片的面积和功耗。同时,且每个命令控制器发出命令后需等待命令完成并回收完成信息,每个命令控制器维持控制一个命令的时间过长,命令切换时间长,降低命令执行的速度。此外,命令控制器需要把命令发送给核心控制器,也需要把该命令所操作的数据地址发送给核心控制器,如果数据来源于多个地址或者数据要分散写到多个地址,对于一个命令,命令控制器需要提供给核心控制器多个数据的地址,而由于核心控制器缓存地址的空间有限,可能会导致命令控制器状态机停在某个状态,降低命令执行的速度。综上可知,现有的闪存控制器在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种闪存控制器及其控制方法、闪存存储设备,能够提高命令执行的速度,保证核心控制器有足够的命令去实现高性能数据传输,保证了闪存控制器的性能,同时提高命令的产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。为了实现上述目的,本发明提供一种闪存控制器的控制方法,包括命令产生状态机从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;所述核心控制器执行所述命令,数据地址状态机根据所述核心控制器的执行情况动态的为其提供数据地址;
所述核心控制器执行所述命令完成后,命令回收状态机从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址向内存中写入所述命令完成状态信息。根 据本发明的控制方法,“命令产生状态机从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器”的步骤具体为所述命令产生状态机对所述多个命令接口的总线命令队列进行轮询;若某个总线命令队列不为空,则所述命令产生状态机获取其中一个命令;所述命令产生状态机根据所述命令从内存中获取该命令的详细信息打包后发送给所述核心控制器;所述命令产生状态机继续对所述总线命令队列进行轮询,直至所述多个命令接口上没有命令或者核心控制器不能够再接收命令。根据本发明的控制方法,“所述命令产生状态机根据所述命令从内存中获取该命令的详细信息打包后发送给所述核心控制器”的步骤中,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作。根据本发明的控制方法,“命令回收状态机从所述核心控制器查询该命令对应的命令完成状态信息”的步骤中,所述命令完成状态信息为所述核心控制器执行所述命令的结果,包括所述命令是否执行成功以及所述命令执行失败的类型。根据本发明的控制方法,“数据地址状态机根据核心控制器的执行情况动态的为核心控制器提供数据地址”的步骤中,所述数据地址为数据读出的目的地址或数据写入的源地址。本发明相应提供一种闪存控制器,包括命令产生状态机,用于从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;核心控制器,用于接收所述命令产生状态机发来的命令并根据数据地址状态机提供的数据地址执行所述命令,并向命令回收状态机返回所述命令完成状态信息;数据地址状态机,用于根据核心控制器的执行情况动态的为其提供数据地址;命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。根据本发明的闪存控制器,所述命令产生状态机还用于对多个命令接口的总线命令队列进行轮询,若某个总线命令队列不为空,则命令产生状态机获取其中一个命令并从内存中获取该命令的详细信息打包后发送给所述核心控制器,直至所述多个命令接口上没有命令或者核心控制器不能够再接收命令。根据本发明的闪存控制器,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作。根据本发明的闪存控制器,所述命令完成状态信息为所述核心控制器执行所述命令的结果,包括所述命令是否执行成功以及所述命令执行失败的类型;所述数据地址为数据读出的目的地址或数据写入的源地址。本发明还提供一种闪存存储设备,包括多个命令接口、与所述多个命令接口对应的多个闪存颗粒以及与所述多个命令接口以及多个闪存颗粒分别连接的闪存控制器,所述闪存控制器包括命令产生状态机,用于从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;核心控制器,用于接收所述命令产生状态机发来的命令并根据数据地址状态机提供的数据地址执行所述命令,并向命令回收状态机返回所述命令完成状态信息;数据地址状态机,用于根据核心控制器的执行情况动态的为其提供数据地址;命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。本发明通过命令产生状态机不断从命令接口获取命令并发送到核心控制器,数据地址状态机动态的为核心控制器提供数据地址,命令回收状态机从核心控制器回收命令完成状态信息并写回该信息。本发明只需要命令产生状态机、数据地址状态机以及命令回收状态机即可实现对核心控制器满负荷运转的控制,同时通过分离命令产生和数据地址产生机制的方式提高命令执行的速度,命令产生状态机只负责从接口获取命令并翻译命令发往 核心控制器,命令产生状态机只需把命令发送到核心控制器就可以回复到空闲状态,去执行发起下一个命令的操作,把数据地址的传输工作交给数据地址产生器,使得命令产生器可以以最快的速度完成命令执行的操作,不影响后续命令的执行,增加了命令执行的灵活度,减少了命令切换的时间。同时命令的产生和回收由独立的状态机完成,命令产生后不必等待该命令的回收,降低芯片面积和功耗提高了命令的产生和回收的效率,减少硬件资源的开销,相对于现有采用多个命令控制器控制特定的闪存颗粒,本方案只需要一个状态机动态的为核心控制器提供命令去控制多个闪存颗粒,减少了硬件资源的消耗,降低芯片的面积和功耗。借此,本发明能够提高命令执行的速度,保证核心控制器有足够的命令去实现高性能数据传输,保证了闪存控制器的性能,同时提高命令的产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。
图I是现有闪存控制器的原理结构图;图2是本发明的闪存控制器的原理结构图;图3是本发明闪存控制器的控制方法的流程图;图4是本发明闪存控制器中命令产生状态机的运行流程图;图5是本发明闪存存储设备的原理结构图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图2所示,本发明一种闪存控制器100,用于对非易失性闪存的多个闪存颗粒200进行控制,其主要包括命令产生状态机10、核心控制器20、命令回收状态机30以及数据地址状态机40,其中命令产生状态机10、命令回收状态机30以及数据地址状态机40分别通过同步FIFO (先入先出)缓冲器50与核心控制器20连接耦合。命令产生状态机10,用于从闪存的多个命令接口接收命令,将该命令并翻译后转发给核心控制器20 ,并将命令完成状态信息的地址预写入缓冲寄存器11。在闪存中,通常设置一个命令接口(该命令接口为总线接口)对应一个闪存颗粒,一般来说一个闪存会包括多个闪存颗粒200,从而闪存具有多个命令接口,每个命令接口可以存放多个命令组成的总线命令队列。命令产生状态机10对多个命令接口进行轮询,如果某个总线命令队列不为空,则命令产生状态机10启动,从总线命令队列中获取一个命令,并根据该命令从内存中获取该命令对应的详细信息。该详细信息主要包括命令的操作类型以及命令的操作模式,命令的操作类型包括读闪存、写闪存以及擦除闪存等;命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作等。命令产生状态机10获取了该命令的详细信息后,将该详细信息进行打包发送给核心控制器20进行处理。为便于命令的回收,命令产生状态机10还在内存中预先开辟空间用于存储命令完成状态信息,同时将该命令完成状态信息的存储地址缓存到命令状态机10内部的缓冲寄存器11,以便于命令回收状态机30调用。命令完成状态信息包括命令是否执行成功以及命令执行失败的类型。其中,闪存的多个命令接口与缓冲寄存器绑定,每个命令接口分别与一个缓冲寄存器对应。数据地址状态机40,用于根据核心控制器20的执行情况动态的为核心控制器20提供数据地址。核心控制器20和数据地址状态机40之间通过同步FIFO缓冲器50互连,核心控制器执行到某个命令开始消耗数据地址,动态数据状态机检测同步FIFO缓冲器50的状态,动态的提供数据地址。该数据地址为数据读出的目的地址或数据写入的源地址。核心控制器20,用于接收命令产生状态机10发来的命令并根据数据地址状态机40提供的数据地址执行命令,并向命令回收状态机30返回命令完成状态信息。在命令中包括了闪存颗粒200的编号,核心控制器20接收一个命令则在对应的闪存颗粒200上执行该命令。为了让闪存接口满负荷工作达到高性能数据传输的目的,核心控制器20通常能够控制多个闪存颗粒200,即核心控制器20能够接收多个命令,并根据闪存颗粒200的状态调度命令的执行;同时核心控制器20内能够缓存命令,通常缓存的是不同闪存颗粒200不同逻辑单元的命令,以方便核心控制器20动态调度这些命令在空闲的闪存颗粒上执行。当核心控制器20能够接收命令(即未处于满负荷),且命令接口有新的命令到来,命令产生状态机10启动,核心控制器20接收从命令产生状态机10发来的命令,并根据命令执行相应的操作(读闪存、写闪存以及擦除闪存等);当核心控制器20完成了某个命令的执行,则触发命令回收状态机30接收命令完成状态信息。命令回收状态机30,用于核心控制器20执行命令完成后从核心控制器20查询该命令的对应的命令完成状态信息,并根据缓冲寄存器11中的地址将该命令完成状态信息写入内存。具体的,当核心控制器20执行某个命令结束,命令回收状态机30触发,并从核心控制器20中查询该命令对应的命令完成状态信息,并根据该命令内的闪存颗粒编号与命令产生状态机10内的缓冲寄存器的对应关系,将相应的缓冲寄存器中获取该命令的命令完成状态信息的存储地址,并根据该地址将该命令的命令完成状态信息存入内存。根据本发明的一个实施例,核心控制器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命令,并根据该命令中的闪存颗粒编号以及数据地址状态机40提供的数据地址对相应的闪存颗粒200进行操作。操作结束后,命令回收状态机30触发,从核心控制器20中查询该命令的命令完成状态信息,并根据该命令内的闪存颗粒编号与命令产生状态机10内的缓冲寄存器11的对应关系,将相应的缓冲寄存器11中获取该命令的命令完成状态信息的存储地址,并根据该地址将命令完成状态信息存入内存。在本发明中,在命令产生端和命令回收端(即命令控制器端),没有不同闪存控制器的概念,命令产生状态机100看到的是不同的命令接口,并循环的从这些接口中接收命令。命令的产生、命令的回收和闪存颗粒200之间不需要通过特定的ID( IDentity,身份标 识号码)来固定,命令接口和缓冲寄存器11建立了固定的关系,闪存颗粒200和命令接口的对应关系由驱动程序确定。现有的闪存控制器中有多个命令控制器,每个命令控制器一个闪存颗粒,并且命令控制器需要长时间维持对一个闪存颗粒的控制器,从命令接口获得命令开始,到把命令和数据发到核心控制器,到从核心控制器获得完成状态,命令控制器都需要维持在该颗粒上,需要多个命令控制器实现核心控制器的满负荷运转。同时,在现有闪存控制器中,命令控制器需要把命令发送给核心控制器,也需要把该命令所操作的数据地址发送给核心控制器,如果数据来源于多个地址或者数据要分散写到多个地址,对于一个命令,命令控制器需要提供给核心控制器多个数据的地址,如果核心控制器正在执行某个命令,而命令控制器正在下发另外的一个命令,且该命令所操作的数据来自很多地址,因此,命令控制器在发送命令到核心控制器后,需要发送多个数据地址到核心控制器,如果数据地址的个数超过了核心控制器为每个命令保留的数据地址空间,命令控制器需要等核心控制器执行到该命令,把数据地址消耗并释放出空间后,才能把剩下的数据地址发送到核心控制器,导致命令控制器的状态机停留,影响后续命令的继续执行。假如核心控制器需要8个命令去调度实现高性能的数据传输,如果出现上述情况,导致核心控制器无法拿到足够的命令去调度,降低闪存控制器的性能。而本发明中,命令产生状态机10动态的提供命令,命令回收状态机30动态回收状态,只需要一个命令产生状态机10和命令回收状态机30即可实现对核心控制器20满负荷运转的控制。且命令产生状态机10不提供数据地址功能,使得命令产生状态机10专职于命令的产生,而把数据地址的提供交给了数据地址状态机40,由数据地址状态机40动态完成。本发明有效的避免了命令堵住的缺点,提高了命令执行的速度,保证核心控制器20有足够的命令去实现高性能数据传输,保证了闪存控制器100的性能。本发明通过命令产生状态机10不断从命令接口获取命令并发送到核心控制器20,数据地址状态机40动态的为核心控制器20提供数据地址,命令回收状态机30从核心控制器20回收命令完成状态信息并写回该信息。本发明只需要命令产生状态机10、数据地址状态机40以及命令回收状态机30即可实现对核心控制器20满负荷运转的控制,同时通过分离命令产生和数据地址产生机制的方式提高命令执行的速度,命令产生状态机10只负责从接口获取命令并翻译命令发往核心控制器20,命令产生状态机10只需把命令发送到核心控制器20就可以回复到空闲状态,去执行发起下一个命令的操作,把数据地址的传输工作交给数据地址产生器40,使得命令产生器10可以以最快的速度完成命令执行的操作,不影响后续命令的执行,增加了命令执行的灵活度,减少了命令切换的时间。同时命令的产生和回收由独立的状态机完成,命令产生后不必等待该命令的回收,降低芯片面积和功耗提高了命令的产生和回收的效率,减少硬件资源的开销,相对于现有采用多个命令控制器控制特定的闪存颗粒,本方案只需要一个状态机动态的为核心控制器提供命令去控制多个闪存颗粒,减少了硬件资源的消耗,降低芯片的面积和功耗。借此,本发明能够提高命令执行的速度,保证核心控制器有足够的命令去实现高性能数据传输,保证了闪存控制器的性能,同时提高命令的产生和回收的效率,减少硬件资源的开销,降低芯片面积和功耗。如图3所示,本发明还提供一种闪存控制器的控制方法,该方法通过图2中的闪存控制器完成,该控制方法的主要流程包括如下步骤
步骤S301,命令产生状态机从闪存的多个命令接口接收命令,将命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器。本步骤由图2中的命令产生状态机10完成。步骤S302,核心控制器执行命令,数据地址状态机根据核心控制器的执行情况动态的为核心控制器提供数据地址。该数据地址为数据读出的目的地址或数据写入的源地址。本步骤由图2中的核心控制器20以及数据地址状态机40完成。步骤S303,核心控制器执行命令完成后,命令回收状态机从核心控制器查询该命令对应的命令完成状态信息,并根据缓冲寄存器中的地址向内存中写入命令完成状态信息。命令完成状态信息为核心控制器执行命令的结果,包括命令是否执行成功以及命令执行失败的类型等信息。本步骤由图2中的命令回收状态机30完成。优选的是,在步骤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.根据权利要求2所述的控制方法,其特征在于,“所述命令产生状态机根据所述命令从内存中获取该命令的详细信息打包后发送给所述核心控制器”的步骤中,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作。
4.根据权利要求I所述的控制方法,其特征在于,“命令回收状态机从所述核心控制器查询该命令对应的命令完成状态信息”的步骤中,所述命令完成状态信息为所述核心控制器执行所述命令的结果,包括所述命令是否执行成功以及所述命令执行失败的类型。
5.根据权利要求I所述的控制方法,其特征在于,“数据地址状态机根据核心控制器的执行情况动态的为核心控制器提供数据地址”的步骤中,所述数据地址为数据读出的目的地址或数据写入的源地址。
6.一种闪存控制器,其特征在于,包括 命令产生状态机,用于从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器; 核心控制器,用于接收所述命令产生状态机发来的命令并根据数据地址状态机提供的数据地址执行所述命令,并向命令回收状态机返回所述命令完成状态信息; 数据地址状态机,用于根据核心控制器的执行情况动态的为其提供数据地址; 命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。
7.根据权利要求6所述的闪存控制器,其特征在于,所述命令产生状态机还用于对多个命令接口的总线命令队列进行轮询,若某个总线命令队列不为空,则命令产生状态机获取其中一个命令并从内存中获取该命令的详细信息打包后发送给所述核心控制器,直至所述多个命令接口上没有命令或者核心控制器不能够再接收命令。
8.根据权利要求7所述的闪存控制器,其特征在于,所述命令的详细信息包括所述命令的操作类型以及所述命令的操作模式,所述命令的操作类型包括读闪存、写闪存以及擦除闪存;所述命令的操作模式包括对闪存的一个页全部数据操作或者部分数据操作。
9.根据权利要求6所述的闪存控制器,其特征在于,所述命令完成状态信息为所述核心控制器执行所述命令的结果,包括所述命令是否执行成功以及所述命令执行失败的类型;所述数据地址为数据读出的目的地址或数据写入的源地址。
10.一种闪存存储设备,包括多个命令接口、与所述多个命令接口对应的多个闪存颗粒以及与所述多个命令接口以及多个闪存颗粒分别连接的闪存控制器,其特征在于,所述闪存控制器包括 命令产生状态机,用于从闪存的多个命令接口接收命令,将所述命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器; 核心控制器,用于接收所述命令产生状态机发来的命令并根据数据地址状态机提供的数据地址执行所述命令,并向命令回收状态机返回所述命令完成状态信息; 数据地址状态机,用于根据核心控制器的执行情况动态的为其提供数据地址; 命令回收状态机,用于所述核心控制器执行所述命令完成后从所述核心控制器查询该命令对应的命令完成状态信息,并根据所述缓冲寄存器中的地址将所述命令完成状态信息写入内存。
全文摘要
本发明适用于固态存储技术领域,提供了一种闪存控制器及其控制方法、闪存存储设备,闪存控制器的控制方法包括命令产生状态机从闪存的多个命令接口接收命令,将命令翻译后转发给核心控制器,并将命令完成状态信息的地址预写入缓冲寄存器;核心控制器执行命令,数据地址状态机根据核心控制器的执行情况动态的为其提供数据地址;核心控制器执行命令完成后,命令回收状态机从核心控制器查询该命令对应的命令完成状态信息,并根据缓冲寄存器中的地址向内存中写入命令完成状态信息。借此,本发明能够提高命令执行的速度,保证核心控制器有足够的命令去实现高性能数据传输,保证了闪存控制器的性能,同时提高命令的产生和回收的效率。
文档编号G06F13/16GK102768647SQ201210195868
公开日2012年11月7日 申请日期2012年6月14日 优先权日2012年6月14日
发明者莫海锋 申请人:记忆科技(深圳)有限公司