一种非易失性闪存执行命令的暂停及恢复方法、非易失性闪存及电子设备与流程

文档序号:16996361发布日期:2019-03-02 01:24阅读:147来源:国知局
一种非易失性闪存执行命令的暂停及恢复方法、非易失性闪存及电子设备与流程

本发明涉及存储技术领域,具体而言,涉及一种非易失性闪存执行命令的暂停及恢复方法、非易失性闪存及电子设备。



背景技术:

非易失性闪存(non-volatilememory,简称:nvm)作为固态硬盘(solidstatedrives,简称:ssd)核心存储器件,其具备非易失性,存储密度高,读写速度远高于硬盘等优点,在业界得到广泛应用。非易失性闪存最基本操作是读/写/擦除,这些基本操作覆盖了ssd基本应用。除此之外,非易失性闪存还能够执行一些诸如编程/擦除暂停恢复等高级特性的操作。闪存控制器(flashcontroller)负责与闪存通信,完成非易失性闪存基本操作和高级特性的实施。

图1为现有技术中非易失性闪存擦除操作序列的示意图,参见图1,非易失性闪存需要一定时间(即tbers)完成擦除操作,通常tbers时间在数十毫秒量级,这段时间内不允许接收闪存控制器发送的新命令。编程操作亦然,其数毫秒编程时间内不允许接收新命令。对于主机更关注读取闪存数据的应用场景中,这一限制增大了读操作的响应时间。为此,非易失性闪存提供了编程/擦除操作的暂停恢复特性。通过特殊指令暂停当前编程/擦除操作,然后接收执行读操作,执行完成读操作,通过特殊指令恢复之前被暂停的编/擦除操作。

尽管现有技术提供了编程/擦除操作暂停恢复机制,然而,现有技术中的编程/擦除操作需要有上层固件下发指令至硬件,再到闪存,往往容易引起指令延迟,从而导致闪存的异常暂停,降低非易失性闪存的稳定性。



技术实现要素:

本发明的目的在于提供一种非易失性闪存执行命令的暂停及恢复方法、非易失性闪存及电子设备,用于提高非易失性闪存的稳定性。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提出一种非易失性闪存执行命令的暂停及恢复方法,包括:

闪存控制器接收目标命令;

所述闪存控制器获取闪存命令执行单元的状态信息,所述状态信息包含所述闪存命令执行单元的工作状态;

当所述闪存命令执行单元的工作状态为忙碌时,所述闪存控制器获取所述闪存命令执行单元执行的当前命令的类型;

当所述当前命令的类型为编程或擦除时,所述闪存控制器调取暂停指令序列模板;

所述闪存控制器根据所述暂停指令序列模板对所述当前命令进行暂停,并执行所述目标命令;

当所述目标命令执行完毕时,所述闪存控制器调取恢复指令序列模板;

所述闪存控制器根据所述恢复指令序列模板对所述当前命令进行恢复。

可选地,在所述闪存控制器接收目标命令之前,还包括:

所述闪存控制器获取所述暂停指令序列模板的起始地址和所述恢复指令序列模板的起始地址。

可选地,当所述当前命令的类型为编程或擦除时,所述闪存控制器调取暂停指令序列模板,具体包括:

当所述当前命令的类型为编程或擦除时,所述闪存控制器获取所述当前命令的闪存地址;

所述闪存控制器根据固件发送的所述暂停指令序列模板的起始地址调取所述暂停指令序列模板;

所述闪存控制器根据所述暂停指令序列模板对所述当前命令进行暂停,并执行目标命令,具体包括:

所述闪存控制器根据所述暂停指令序列模板和所述当前命令的闪存地址,对所述当前命令进行暂停,并执行目标命令;

当所述目标命令执行完毕时,所述闪存控制器调取恢复指令序列模板,具体包括:

所述闪存控制器根据所述固件发送的所述恢复指令序列模板的起始地址和所述当前命令的闪存地址,调取所述恢复指令序列模板。

可选地,所述状态信息还包含所述闪存命令执行单元的已执行时间;

当所述当前命令的类型为编程或擦除时,所述闪存控制器调取暂停指令序列模板,具体包括:

当所述当前命令的类型为编程或擦除时,则所述闪存控制器判断所述闪存命令执行单元的已执行时间是否小于时间阈值;若小于所述时间阈值,则所述闪存控制器调取所述暂停指令序列模板。

可选地,若所述已执行时间大于或等于所述时间阈值,则所述闪存控制器执行所述当前命令。

可选地,当所述闪存命令执行单元的工作状态为空闲时,则所述闪存控制器执行所述目标命令。第二方面,本发明实施例提出一种非易失性闪存执行命令的暂停及恢复方法,包括:

固件识别非易失性闪存的厂商信息;

所述固件根据所述非易失性闪存的厂商信息生成预定义指令模板,所述预定义指令模板包含:至少一个指令的指令模板类型;

所述固件根据所述预定义指令模板生成暂停指令序列模板和恢复指令序列模板;

所述固件向所述闪存控制器下发所述暂停指令序列模板的起始地址和所述恢复指令序列模板的起始地址;以使当闪存命令执行单元的工作状态为忙碌时,所述暂停指令序列模板的起始地址被用于所述闪存控制器调用所述暂停指令序列模板对当前命令进行暂停;当目标命令执行完毕时,所述恢复指令序列模板的起始地址被用于所述闪存控制器调用所述恢复指令序列模板对所述当前命令进行恢复。

可选地,所述预定义指令模板还包含:指令参数;所述指令参数与所述指令对应的。

可选地,所述固件根据所述预定义指令模板生成暂停指令序列模板和恢复指令序列模板,包括:

所述固件采用串行拼接方式将所述预定义指令模板分别构建成所述暂停指令序列模板和所述恢复指令序列模板。

可选地,所述固件向所述闪存控制器下发命令,所述命令的类型为编程或擦除。

第三方面,本发明实施例提出一种非易失性闪存,包括:闪存控制器和存储单元;所述闪存控制器与所述存储单元电连接;

所述闪存控制器,用于接收目标命令;获取闪存命令执行单元的状态信息,所述状态信息包含所述闪存命令执行单元的工作状态;当所述闪存命令执行单元的工作状态为忙碌时,获取所述闪存命令执行单元执行的当前命令的类型;当所述当前命令的类型为编程或擦除时,调取暂停指令序列模板;根据暂停指令序列模板针对所述存储单元暂停当前命令,并针对所述存储单元执行目标命令;当所述目标命令执行完毕时,调取恢复指令序列模板;根据所述恢复指令序列模板针对所述存储单元恢复所述当前命令。

第四方面,本发明实施例提出一种电子设备,包括:固件和第三方面所述的非易失性闪存;所述固件与所述闪存控制器连接;

所述固件,用于识别非易失性闪存的厂商信息;根据所述非易失性闪存的厂商信息生成预定义指令模板,所述预定义指令模板包含:至少一个指令的指令模板类型;根据所述预定义指令模板生成暂停指令序列模板和恢复指令序列模板;向所述闪存控制器下发所述暂停指令序列模板的起始地址和所述恢复指令序列模板的起始地址,以使当闪存命令执行单元的工作状态为忙碌时,所述暂停指令序列模板的起始地址被用于所述闪存控制器调用所述暂停指令序列模板对当前命令进行暂停;当目标命令执行完毕时,所述恢复指令序列模板的起始地址被用于所述闪存控制器调用所述恢复指令序列模板对所述当前命令进行恢复。

相对现有技术,本发明实施例具有以下有益效果:

本发明实施例提供的非易失性闪存执行命令的暂停及恢复方法、非易失性闪存及电子设备,当闪存控制器接收目标命令后,该闪存控制器获取lun的状态信息,具体的是获取lun的工作状态,进而根据lun的工作状态,进而当前命令的类型为编程或擦除时,闪存控制器调取暂停指令序列模板,根据该暂停指令序列模板对编程或擦除命令进行暂停,从而执行目标命令。相比于现有技术的编程/擦除暂停恢复机制,本发明实施例提供的闪存控制器主动进行判断是否需要进行暂停恢复操作,从而避免了由固件触发编程/擦除的暂停恢复而引起的异常暂停和暂停延迟。提高了非易失性内存的稳定性和工作效率。

本发明实施例的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为现有技术中非易失性闪存擦除操作序列的示意图;

图2为一种非易失性内存的示意图;

图3为本发明实施例提供的一种非易失性闪存执行命令的暂停及恢复方法的流程示意图;

图4为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图;

图5为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图;

图6为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图;

图7为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图;

图8为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图;

图9为本发明实施例提供的一种非易失性闪存的结构示意图;

图10为本发明实施例提供的一种电子设备的结构示意图。

图标:10、41-闪存控制器;11、12-逻辑单元号lun;110、120-控制电路;111、121-存储器阵列;20、43-固件;40-非易失性闪存;42-存储单元。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

图2为一种非易失性内存的示意图,该非易失性内存,可以但不限于:nand闪存、nor闪存。参见图2,该非易失性内存包含一个闪存控制器(flashcontroller)10、两个闪存命令执行单元,即逻辑单元号(logicalunitnumber,简称:lun)11和lun12;每个lun11和12分别具有对应的控制电路110和120,以及存储器阵列111和121;

需要说明的是,该闪存命令执行单元可以为lun;或者为最小的芯片单元(例如die),本发明下述实施例以lun进行示例说明,而采用die或其他非易失性内存的最小执行单元的方案,本领域技术人员可以通过本发明实施例公开的方案,在不进行创造性工作的条件下得到。

继续参见图2,其中每个控制电路都对对应的存储器阵列的命令做出响应。例如,控制电路110对读取、擦除或编程存储器阵列111的命令做出响应。当固件20下发读取、擦除或编程命令时,闪存控制器10向与命令对应闪存地址相匹配的lun下发该命令,进而lun的控制电路针对对应存储器阵列执行相应命令。例如,闪存控制器10接收到固件下发的擦除命令,该擦除命令用以对存储器阵列111的一个块进行擦除。基于擦除命令对应的闪存地址,该闪存控制器10将该命令发送至对应的lun11,控制电路110根据该命令对存储器阵列111的一个块进行擦除。

需要说明的是,每个非易失性内存都可以具有任意数量的lun。非易失性内存也可以只包含一个lun。图2仅作为示例对本申请提供的方案进行说明。如果非易失性内存芯片使用多个总线,则每个总线可以具有多个非易失性内存。相反的,非易失性内存也可由多个非易失性内存芯片组成。或者,一个非易失性内存芯片只包含一个非易失性内存。

可选地,该非易失性内存可以包含一个或多个寄存器,用于存储与上述功能相关的命令、地址和其他相关信息。

进一步地,上述固件20作为外部命令源,其可以为能够与非易失性内存进行通信的系统或设备(无论是常规的或尚未开发的)。该固件20通过通信总线与非易失性内存进行通信,但并不意味着该固件20一定在与非易失性内存不同的芯片上。

上述非易失性内存进行通信的总线可以使用onfi协议进行通信,或者使用与非易失性内存进行通信的任何其他协议。本申请实施例的原理不仅限于任何总线通信协议。其应用于目前尚未开发的非易失性内存通信协议时也是有益的。

对于上述非易失性内存,其基本操作为读、写、擦除,这些基本操作覆盖sdd的基本应用。并且非易失性内存在写入数据过程中,必须首先擦除存储器阵列的一部分,根据onfi协议的要求,每擦除存储器的一个块,再对存储器阵列进行编程操作。因此,在写入操作时,一个块的单个擦除操作之后,是多个编写操作以重新填充该块。因此对于写操作来说,擦除操作和编程操作是必不可少的。而对于非易失性内存来说,读操作的量远远高于写操作的量。由于擦除和编程操作相对于读操作来说较慢,因此在现有技术的机制中,固件往往被设计为能够在发生读操作时,暂停正在执行的编程/擦除操作,以便最小化它们对读操作的干扰。

但是在现有技术中,尽管非易失性内存提供了编程/擦除操作暂停恢复机制,由于其暂停恢复时机、恢复寻址以及暂停恢复指令各大闪存厂商不统一,都使得闪存控制器要实现这一特性困难重重。

为了解决兼容性的问题,目前主流设计依靠固件实现这一特性,即由固件匹配不同闪存厂商的暂停恢复命令。然而由于固件下发指令到硬件再到闪存,其时间不可控,从而对闪存造成异常暂停。例如,闪存已经完成编程/擦除操作,固件才下发暂停命令。此外,为了提高访问闪存速度,固件通常按照一个完整操作序列下发硬件,固件于编程/擦除序列中间插入暂停命令难以实现。

因此,针对现有技术的上述问题,本发明的下述实施例给出一种技术方案,其核心改进点在于,将下发暂停/恢复命令序列的功能由固件转移至闪存控制器。为了实现这一技术目的,本发明的技术方案基于不同闪存厂商,能够预定义编程暂停序列模板、编程恢复序列模板、擦除暂停序列模板以及擦除恢复序列模板。由硬件闪存控制器自动检测并下发相应暂停/恢复命令序列。

下面结合具体实施例对本申请的技术方案进行说明。

图3为本发明实施例提供的一种非易失性闪存执行命令的暂停及恢复方法的流程示意图,该流程可以被上述图2对应实施例中的闪存控制器10执行,参见图3,该方法流程包括如下步骤:

步骤100、闪存控制器接收目标命令;

步骤101、闪存控制器获取lun的状态信息,状态信息包含lun的工作状态;

步骤102、当lun的工作状态为忙碌时,闪存控制器获取lun执行的当前命令的类型;

步骤103、当当前命令的类型为编程或擦除时,闪存控制器调取暂停指令序列模板;

步骤104、闪存控制器根据暂停指令序列模板对当前命令进行暂停,并执行目标命令;

步骤105、当目标命令执行完毕时,闪存控制器调取恢复指令序列模板;

步骤106、闪存控制器根据恢复指令序列模板对当前命令进行恢复。

本发明实施例提供的非易失性闪存执行命令的暂停及恢复方法,当闪存控制器接收目标命令后,该闪存控制器获取lun的状态信息,具体的是获取lun的工作状态,进而根据lun的工作状态,进而当前命令的类型为编程或擦除时,闪存控制器调取暂停指令序列模板,根据该暂停指令序列模板对编程或擦除命令进行暂停,从而执行目标命令。相比于现有技术的编程/擦除暂停恢复机制,本发明实施例提供的闪存控制器主动进行判断是否需要进行暂停恢复操作,从而避免了由固件触发编程/擦除的暂停恢复而引起的异常暂停和暂停延迟。提高了非易失性内存的稳定性和工作效率。

进一步地,闪存控制器能够获取固件通过预定义指令模板生成的上述暂停指令序列模板和恢复指令序列模板,本申请给出一种可能的实现方式,在图3的基础上,图4为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图,参见图4,在步骤100之前,还包括:

步骤107、闪存控制器获取暂停指令序列模板的起始地址和恢复指令序列模板的起始地址。

具体的,固件生成预定义指令模板后,会基于预定义指令模板分别生成暂停指令序列模板和恢复指令序列模板,进而将暂停指令序列模板及对应的起始地址和恢复指令序列模板及对应的起始地址下发给闪存控制器的一个或多个寄存器。以便闪存控制器在后续操作中基于起始地址调用相应的暂停指令序列模板或恢复指令序列模板。

需要说明的是,固件在下发预定义指令模板时,已经基于非易失性内存的厂商信息,对该预定义指令模板进行了适配。从而有效解决了暂停/恢复机制的兼容性。

在基于上述实施例提供的方法操作非易失性闪存前,指令序列模板初始化于芯片内嵌存储器,各类模板于存储器的起始地址初始化于闪存控制器不同的寄存器。这样,闪存控制器可以自动调用指定模板。上述模板提供了暂停/恢复序列模板,闪存控制器基于上述序列模板,自动完成编程/擦除的暂停/恢复。因此,需要闪存控制器基于当前命令的闪存地址以及上述序列模板的起始地址实现编程/擦除命令的暂停和恢复,具体的,下面给出一种可能的实现方式。在图4的基础上,图5为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图,参见图5,该方法,步骤103,具体包括:

步骤103-1、当前命令的类型为编程或擦除时,闪存控制器获取当前命令的闪存地址;

具体的,该当前命令的闪存地址即为编程/擦除访问的闪存地址。

步骤103-2、闪存控制器根据固件发送的暂停指令序列模板的起始地址调取暂停指令序列模板;

步骤104,具体包括:

步骤104-1、闪存控制器根据暂停指令序列模板和当前命令的闪存地址,对当前命令进行暂停,并执行目标命令;

步骤105,具体包括:

步骤105-1、闪存控制器根据固件发送的恢复指令序列模板的起始地址和当前命令的闪存地址,调取恢复指令序列模板。

进一步地,当编程/擦除作为当前命令已经被执行一段时间,已临近结束时再被暂停,显然会造成非易失性闪存效率的降低,为了避免这种情况,下面给出一种可能的实现方式:

具体的,上述状态信息还包含lun的已执行时间;进一步地,在图3的基础上,图6为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图,参见图6,该方法步骤包括:

步骤101具体包括:

步骤101-1、闪存控制器获取lun的状态信息,该lun的状态信息包含lun的工作状态;

步骤101-2、闪存控制器判断lun的工作状态;

其中,若lun的工作状态为忙碌,则执行步骤102-1;若lun的状态信息为空闲,则执行步骤108。

步骤102具体包括:

步骤102-1、当当前命令的类型为编程或擦除时,则闪存控制器判断lun的已执行时间是否小于时间阈值;若小于时间阈值,则执行步骤103-2;大于或等于时间阈值则执行步骤103-1

步骤103具体包括:

步骤103-1、闪存控制器执行当前命令。

进而,在当前命令执行完毕后,再执行目标命令。

步骤103-2、闪存控制器调取暂停指令序列模板。

步骤108、闪存控制器执行目标命令。

本发明实施例提供的非易失性闪存执行命令的暂停及恢复方法,通过检测lun的已执行时间是否小于一定的时间阈值来控制当前命令的暂停,从而实现当正在执行的编程或擦除命令已经执行一定时间,且即将结束时,当已执行时间大于或等于上述时间阈值,则避免暂停编程或擦除命令,从而提高命令执行的效率。

需要说明的是,为了获取lun的状态信息,闪存控制器可以使用lun作为索引记录于查找表,用以记录上述当前命令的闪存地址,以及lun的状态信息,该状态信息包括但不限于:当前命令的类型、lun的工作状态、lun的已执行时间。而为了实现图6实施例中的步骤,则需要闪存控制器基于lun进行预解析,例如,闪存控制器从固件接收全新的闪存命令(即上述目标命令),基于lun进行预解析。具体的,基于lun查询内部查找表,遵循下述流程。(a)当前lun处于空闲,即lun的工作状态为空闲,则直接下发目标命令。(b)当前lun忙碌于编程/擦除,即lun的工作状态为忙碌,且当前命令的类型为编程/擦除,且lun的已执行时间小于一定阈值(主要为了避免编程/擦除临近结束而被暂停),闪存控制器视为可以暂停编程/擦除操作。进而,当闪存控制器判定暂停编程/擦除操作,基于lun从内部查找表取出当前命令的闪存地址。之后闪存控制器基于模板起始地址取出暂停指令序列模板(该暂停指令序列模板可以为编程暂停指令序列模板或擦除暂停指令序列模板),并结合来自于查找表中的当前命令的闪存地址,下发暂停命令序列暂停当前lun的编程/擦除操作。当前lun的编程/擦除操作被暂停后,下发闪存控制器新接收的目标命令,等待该目标命令执行结束。当目标命令执行结束时,闪存控制器基于恢复指令序列模板的起始地址取出编程/擦除恢复指令序列模板,下发恢复命令序列恢复之前被暂停的编程/擦除操作。

相应地,为了实现由闪存控制器主动执行编程/擦除的暂停与恢复,同时能够保证该方案在不同闪存制造商的闪存产品上具备良好的兼容性,一种可能的实现方式为:在闪存控制器初始化的过程中,由固件对闪存控制器进行初始的适配。在完该适配动作后,则闪存控制器可以具备主动执行编程/擦除的暂停与恢复功能。具体的,图7为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图,参见图7,该流程步骤,包括:

步骤200、固件识别非易失性闪存的厂商信息;

步骤201、固件根据非易失性闪存的厂商信息生成预定义指令模板,预定义指令模板包含:至少一个指令的指令模板类型;

步骤202、固件根据预定义指令模板生成暂停指令序列模板和恢复指令序列模板;

步骤203、固件向闪存控制器下发暂停指令序列模板的起始地址和恢复指令序列模板的起始地址;

以使当闪存命令执行单元的工作状态为忙碌时,暂停指令序列模板的起始地址被用于闪存控制器调用暂停指令序列模板对当前命令进行暂停;当目标命令执行完毕时,恢复指令序列模板的起始地址被用于闪存控制器调用恢复指令序列模板对当前命令进行恢复。

本实施例提供的非易失性闪存执行命令的暂停及恢复方法,通过固件识别非易失性闪存的厂商信息,进而该固件根据非易失性闪存的厂商信息生成预定义指令模板,非易失性闪存,由于该预定义指令模板适配上文实施例所述非易失性闪存的厂商信息,因此,能够基于不同厂商信息进行适配,实现了编程/擦除暂停恢复机制的兼容性。同时,由于固件向闪存控制器下发暂停指令序列模板的起始地址和恢复指令序列模板的起始地址,从而当闪存命令执行单元的工作状态为忙碌时,暂停指令序列模板的起始地址被用于闪存控制器调用暂停指令序列模板对当前命令进行暂停;当目标命令执行完毕时,恢复指令序列模板的起始地址被用于闪存控制器调用恢复指令序列模板对当前命令进行恢复。从而使得闪存控制器主动执行编程/擦除暂停恢复机制,从而避免现有技术中由固件触发编程/擦除暂停恢复机制而引起的异常暂停和暂停延迟,提高了非易失性闪存的稳定性和工作效率。

可选地,该固件可以将暂停指令序列模板和恢复指令序列模板下发至非易失性闪存对应的寄存器,以便闪存控制器根据起始地址进行调取。

进一步地,上述固件除了下发上述预定义指令模板,也会向该闪存控制器下发命令,例如,读、写、编程或擦除等。

可选地,预定义指令模板还包含:指令参数;指令参数与指令对应的。具体的,对于预定义指令模板可以包含用于实现暂停指令/恢复指令的一个或多个指令。而对于不同的指令,该预定义指令模板可以包含其指令模板类型。还可以包含其指令参数。该指令参数可以包含如下任意一个或组合:指令的具体命令码、指令序列中的偏移、地址字节数、期望状态、错误比特位等等。该指令参数可以通过一个比特位的信息表征,也可以通过多个比特位的信息表征,此处不予限定。

可选地,对于步骤202,一种可能的实现方式为:

固件采用串行拼接方式将预定义指令模板分别构建成暂停指令序列模板和恢复指令序列模板。

对于上述预定义指令模板,下面基于micron颗粒的nand闪存给出一种可能的实现方式,可以理解,针对其他颗粒厂商,本领域技术人员也可以使用本发明申请提供的原理,在不付出创造性劳动的条件下构建不同的模板。参见表1,其示出了一种预定义指令模板。

表1预定义指令模板

其中,指令模板定义的命令类型信息是完成一次nand闪存操作的必要子集,通过表2类似的举例可以构建指令序列模板,从而完成一次nand闪存操作。表2列举了通用的“pageprogram”和“pageread”操作指令序列模板。

表2

参见表1,固件可以采用串行拼接方式,将预定义指令模板分别构建成编程暂停指令序列模板、编程恢复指令序列模板、擦除暂停指令序列模板、擦除恢复指令序列模板,即指令模板为构成指令序列模板的子集。下面给出各个暂停指令序列模板及恢复指令序列模板的一种可能的实现形式。

表3编程暂停指令序列模板

其中,参见表1及表3,以“cle-fix”作为示例说明,该“cle-fix”代表一条指令的指令模板类型,其表示的功能为:“下发模板固定命令码到nandflash”,指令模板类型表征为“8’h02”。而指令参数为对应的命令码。其具体指令结构可以为:第一比特位(byte0)为8’h02;第二比特位(byte1)为对应向nand闪存下发的模板固定命令码,表3中该模板固定命令码即“8‘h84”,其为编程暂停命令。

表4编程恢复指令序列模板

表5擦除暂停指令序列模板

表6擦除恢复指令序列模板

值得注意的是,上述给出的四类模板是基于micron颗粒的暂停/恢复模板,为了适配不同颗粒厂商,固件可以构建不同的预定义指令模板。

基于上述实施例给出的实现方式,下面结合闪存控制器执行的步骤和固件执行的步骤,给出一种可能的实现方式,以便对完整的技术方案进行说明。具体的,图8为本发明实施例提供的另一种非易失性闪存执行命令的暂停及恢复方法的流程示意图,参见图8,该方法步骤包括:

步骤300、固件识别非易失性闪存的厂商信息;

步骤301、固件根据非易失性闪存的厂商信息生成预定义指令模板;

步骤302、固件根据预定义指令模板生成暂停指令序列模板和恢复指令序列模板;

具体的,该暂停指令序列模板包含:编程暂停指令序列模板和擦除暂停指令序列模板;该恢复指令序列模板包含:编程暂停指令序列模板和擦除暂停指令序列模板。

步骤303、固件向闪存控制器下发暂停指令序列模板的起始地址和恢复指令序列模板的起始地址;

步骤304、闪存控制器接收目标命令;

步骤305、闪存控制器获取lun的状态信息,状态信息包含lun的工作状态;

步骤306、闪存控制器判断lun的工作状态为忙碌或空闲。

其中,若为忙碌,则执行步骤307;若为空闲,则执行步骤322。

步骤307、闪存控制器判断当前命令的类型,若为编程,则执行步骤308;若为擦除,则执行步骤315。

步骤308、闪存控制器判断lun对该编程命令的已执行时间是否小于时间阈值t1;若小于t1,则执行步骤309;若大于或等于t1,则执行步骤314。

步骤309,闪存控制器根据编程暂停指令序列模板的起始地址调取编程暂停指令序列模板;

步骤310,闪存控制器根据编程暂停指令序列模板和编程命令的闪存地址暂停编程命令;

步骤311,闪存控制器执行目标命令。

步骤312,闪存控制器确认目标命令执行完毕,则根据编程恢复指令序列模板的起始地址调取编程恢复指令序列模板。

步骤313,闪存控制器根据编程恢复指令序列模板,恢复编程命令。

步骤314,闪存控制器执行编程命令。

具体的,当步骤314编程命令执行完毕后,该闪存控制器再执行目标命令。

步骤315、闪存控制器判断lun对该擦除命令的已执行时间是否小于时间阈值t2;若小于t2,则执行步骤316;若大于或等于t2,则执行步骤321。

步骤316,闪存控制器根据擦除暂停指令序列模板的起始地址调取擦除暂停指令序列模板;

步骤317,闪存控制器根据擦除暂停指令序列模板和擦除命令的闪存地址暂停擦除命令;

步骤318,闪存控制器执行目标命令。

步骤319,闪存控制器确认目标命令执行完毕,则根据擦除恢复指令序列模板的起始地址调取擦除恢复指令序列模板。

步骤320,闪存控制器根据擦除恢复指令序列模板,恢复擦除命令。

步骤321,闪存控制器执行擦除命令。

具体的,当擦除命令执行完毕后,该闪存控制器再执行目标命令。

步骤322,闪存控制器执行目标命令。

需要说明的是,对于步骤311和步骤318,闪存控制器确认目标命令执行完毕的方式,可以采用与步骤305类似的方案,即闪存控制器判断lun的工作状态为忙碌或空闲,若为空闲,则确定该目标命令执行完毕。对于步骤307中的t1和步骤314中的t2,当编程命令和擦除命令的执行时间不同时,t1和t2可以被配置为不同的。例如,编程命令完成时间大概3ms,而擦除命令完成时间大概10ms,则t1可以设置为1ms,而t2可以设置为3ms。但其具体的取值可以根据非易失性闪存的类型和控制需求进行配置。具体可以通过固件根据系统需求,进行配置。

基于上述实施例示出的非易失性闪存执行命令的暂停及恢复方法的流程,下面给出一种用于执行上述任意一个实施例提供的方法流程的非易失性闪存,具体的,图9为本发明实施例提供的一种非易失性闪存的结构示意图,该非易失性闪存40,包括:闪存控制器41和存储单元42;闪存控制器41与存储单元42电连接;

闪存控制器41,用于接收目标命令;获取lun的状态信息,状态信息包含lun的工作状态;当lun的工作状态为忙碌时,获取lun执行的当前命令的类型;当当前命令的类型为编程或擦除时,调取暂停指令序列模板;根据暂停指令序列模板针对存储单元42暂停当前命令,并针对存储单元42执行目标命令;当目标命令执行完毕时,调取恢复指令序列模板;根据恢复指令序列模板针对存储单元42恢复当前命令。

本发明实施例提供的非易失性闪存,当闪存控制器接收目标命令后,该闪存控制器获取lun的状态信息,状态信息包含lun的工作状态;进而当lun的工作状态为忙碌时,获取lun执行的当前命令的类型;当前命令的类型为编程或擦除时,闪存控制器调取暂停指令序列模板,根据该暂停指令序列模板,针对存储单元暂停当前命令,从而执行目标命令。相比于现有技术的编程/擦除暂停恢复机制,本发明实施例提供的闪存控制器主动进行判断是否需要进行暂停恢复操作,从而避免了由固件触发编程/擦除的暂停恢复而引起的异常暂停和暂停延迟。提高了非易失性闪存的稳定性和工作效率。

需要说明的是,参见图2对应实施例,本实施例中存储单元42可以采用图2实施例中的lun实现,即,存储单元42可以包含一个控制电路和存储阵列。例如,以图2所示的实施例为例,该存储单元42包含lun11和lun12,进一步地,对应的控制电路110和120,以及存储器阵列111和121。此处,例如擦除命令访问的地址位于存储器阵列111,则,闪存控制器41调取暂停指令序列模板后,进而基于擦除命令访问的地址,针对存储器阵列111暂停该擦除命令。对于一个存储单元42具体包含的lun的数量,本申请实施例不予限定。

进一步地,本发明实施例还提供一种包含上述非易失性闪存的电子设备,该电子设备可以基于非易失性闪存进行数据的读写。具体的,在图9的基础上,图10为本发明实施例提供的一种电子设备的结构示意图,参见图10,该电子设备包含:固件43和非易失性内存40;固件43与闪存控制器41连接;

固件43,用于识别非易失性闪存的厂商信息;根据非易失性闪存的厂商信息生成预定义指令模板,预定义指令模板包含:至少一个指令的指令模板类型;根据预定义指令模板生成暂停指令序列模板和恢复指令序列模板;向闪存控制器41下发暂停指令序列模板的起始地址和恢复指令序列模板的起始地址,以使当lun的工作状态为忙碌时,暂停指令序列模板的起始地址被用于闪存控制器41调用暂停指令序列模板对当前命令进行暂停;当目标命令执行完毕时,恢复指令序列模板的起始地址被用于闪存控制器41调用恢复指令序列模板对当前命令进行恢复。

该闪存控制器41与存储单元42配合实现图9对应实施例的相应功能。

需要说明的是,该固件可以集成于闪存控制器41上实现,也可以通过独立于闪存控制器41的芯片实现。

本发明实施例提供的电子设备,通过固件识别非易失性闪存的厂商信息,进而该芯片根据非易失性闪存的厂商信息生成预定义指令模板,该预定义指令模板包含:至少一个指令的指令模板类型。由于该预定义指令模板适配上文实施例所述非易失性闪存的厂商信息,因此,能够基于不同厂商信息进行适配,实现了编程/擦除暂停恢复机制的兼容性。同时,由于固件根据预定义指令模板生成暂停指令序列模板和恢复指令序列模板;向闪存控制器下发暂停指令序列模板的起始地址和恢复指令序列模板的起始地址,以使当lun的工作状态为忙碌时,暂停指令序列模板的起始地址被用于闪存控制器调用暂停指令序列模板对当前命令进行暂停;当目标命令执行完毕时,恢复指令序列模板的起始地址被用于闪存控制器调用恢复指令序列模板对当前命令进行恢复。从而避免现有技术中由固件触发编程/擦除暂停恢复机制而引起的异常暂停和暂停延迟,提高了非易失性闪存的稳定性和工作效率。

需要说明的是,该电子设备还可以包含用以实现其他功能的器件,例如,射频电路、输出/输入单元、电源电路等,该电子设备可以为:桌面电脑、平板电脑、笔记本、智能手机、服务器等设备,此处不予限定。

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

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

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