提高非易失性存储器操作性能的系统和方法

文档序号:6768484阅读:100来源:国知局
专利名称:提高非易失性存储器操作性能的系统和方法
技术领域
本发明涉及非易失性存储器,更具体地涉及提高存储子系统中执行的非易失性存
储器操作的性能的系统和方法。
背景技术
非易失性存储器(NVM)制造商通常将计时周期固定为适应完成页编程和块擦除 操作所需要的时间。对于闪存,典型的页编程周期可以持续约200-250iis,最长可持续 500-750 ii s,而典型的块擦除周期可持续约1. 5ms,最长可持续2ms。但是,物理NVM设备的 计时是不统一的,并且完成页编程或块擦除操作所花费的实际时间会发生变化。因此,在很 多系统中,执行这种操作的控制器需要不断地轮询编程循环中的状态寄存器,直到操作完 成。在等待状态中花费的时间通常是浪费,并且因此影响了系统性能。

发明内容
本文公开了优化存储子系统中非易失性存储器(NVM)操作的系统和方法。该系统 和方法识别并重获普通页编程和块擦除操作中潜在未使用的处理时间。在一个实施例中, 控制器内的表征模块(characterization module)通过在一阵列中的一个或更多NVM设备 上执行随机页编程和块擦除操作来执行表征程序。之后,从表征程序获得的针对NVM设备 的实际时间值被存储在校准表中。可以在启动时执行表征程序,或者由某些受监视事件诸 如通电时间的每第l,OOO个小时,周期性地触发来执行表征程序,从而校准表中的值反映 各个NVM设备的实际物理状态。 任务管理器使用校准表中的这些值评估完成某些存储器操作所需要的时间。基于 评估的完成时间,任务管理器分配将在页编程和/或块擦除周期期间执行的包括存储器或 非存储器操作的某些任务,从而有效利用其他情况下未使用的处理时间。


将参照以下概括附图描述本发明的优选实施例。提供这些附图和相关的描述是为 了图示说明本发明的优选实施例,而不是为了限制本发明的范围。
图1是图示说明根据本发明的一个实施例连接到固态存储子系统的主机系统的
框图。






图2是显示典型页编程操作的流程图。 图3是显示典型块擦除操作的流程图。
图4是图示说明根据一个实施例产生校准表的方法的流程图。
图5是图示说明根据一个实施例的任务管理器的时间分配操作的流程图。
图6是图示说明根据一个实施例的任务管理器的任务分配操作的流程图。
图7是图示说明根据一个实施例在页编程操作期间任务管理器的操作的流程图,
图8是图示说明根据一个实施例在块擦除操作期间任务管理器的操作的流程图,
具体实施例方式
现在将参照附图描述提高非易失性存储器操作的性能的系统和方法。在可能的情 况下,整个附图中使用相同参考数字代表相同或类似的组件。本描述意在图示说明某些优 选实施例,但是对于本领域技术人员来说显而易见的其他实施例,包括未提供本文记载的 所有优点和特征的实施例也属于本发明的范围。因此,此详细描述中没有任何内容意在表 明任何特定特征或组件是必须的。本发明的保护范围由权利要求来限定。l.皿
图1是图示说明根据本发明的一个实施例连接到固态存储子系统112的主机系统 110的框图。主机系统110包括诸如个人计算机的计算机、工作站、路由器、刀片型服务器 (blade server)或其他类型的计算设备。例如,主机系统110可以是军用系统、航程计算 机或其他飞行航空电子设备系统、用于军事应用的可携式计算机、高速数据记录器、医学设 备、工业控制系统、交互式公用电话、个人数字助理、膝上型计算机、交互式无限通信设备、 销售点零售设备等。固态存储子系统112为主机系统110提供数据存储,并且也可以为主 机系统110提供操作系统功能和引导过程数据。主机系统110执行驱动器程序113,该驱动 器程序113提供与子系统112通信的功能,诸如通过根据ATA或其他标准发布命令。
在一个实施例中,固态存储子系统112包括控制器114和非易失性存储器(NVM) 阵列116。可以利用NAND存储器组件实现NVM阵列116,但不是必须的。与常规的一样,控 制器114被配置成(通常通过固件)向NVM阵列116写数据以及从NVM阵列116读数据来 响应来自主机110的命令。控制器可以实现损耗均衡(wear-leveling)算法在NVM阵列 116的存储块间分配写操作。存储子系统112的形式可以是可拆设备的形式并且可以与任 何标准或独特的通信接口通信,通信接口包括但是不限于并行ATA、串行ATA、 RS232/423、 PCMCIA、 USB、火线(IEEE-1394)、光纤通道、PCI Express总线、SD/匪C、 SCSI或SAS。存储 子系统112也可以通过该接口自主机110接收电力。 如以下的详细描述,控制器114执行到NVM阵列116的写操作时,其用使用统计信 息更新该阵列的非用户数据区(即未暴露给主机操作系统的区域),所述使用统计信息反 映已经执行的编程/擦除周期的数目。该信息优选包括一组计数器,不同的计数器对应存 储器阵列的不同的块或区域;但是,可以以多种格式中的任一种来保持该使用统计。当制 造或首次初始化该设备时,这些计数器最初被设为零(或某一其他选择的起始值),在执行 编程/擦除周期时这些计数器随着时间的推移而增大。在一些实施例中,存储在存储器子 系统112中的使用统计数据还包括从主机接收的时间戳或其他时间数据。该时间数据可用 于以时间(例如,天和小时)计算子系统112的可用寿命,这对于一些应用来说是令人期望 的。 例如,存储子系统112可以是插入到主系统110的槽中并且符合以下卡规 范中至少 一 种的固态存储卡CompactFlash、 PCMCIA、 SmartMedia、 MultiMediaCard、 SecureDigital、 Memory Stick(存储棒)和ATA/ATAPI。存储子系统112可例如具有外壳 和符合以下规范之一的信号接口 低于1英寸硬盘驱动、1.8英寸硬盘驱动、2.5英寸硬盘驱 动和3. 5英寸硬盘驱动。可以替代使用定制的形状因子和/或信号接口 。
在一个实施例中,控制器114执行固件程序以执行本文描述的过程并包括ATA闪 盘控制器,例如商用ATA闪盘控制器。可以使用另一类型的设备诸如专用集成电路(ASIC)替代地实现控制器114,或者该控制器114可包括多个不同器件。而且,尽管控制器114优 选执行固件,但是可使用不执行固件程序的控制器。 NVM阵列116包括连接到控制器114的多个固态存储设备118。固态存储设备118 可包括,例如闪存集成电路、硫系化合物随机存取存储器(C-RAM)、相变存储器(PC-RAM或 PRAM)、可编程金属单元随机存取存储器(PMC-RAM或PMCm)、奥弗辛斯基电效应统一存储器 (0UM)、电阻随机存取存储器(RRAM) 、NAND存储器、NOR存储器、EEPROM、铁电存储器(FeRAM) 或其他不连续的NVM芯片。固态存储设备118可以在物理上分成多块、多页和多个区,这是 本领域熟知的。 主机系统110与控制器114交换控制信号122,以协调自固态存储(NVM)设备118 读数据和向其写数据。控制器114通过向NVM阵列116发送存储器控制信号120来处理读 操作和写操作。控制信号122可包括,例如,读命令和写命令。控制信号122可以用于发送 选自例如工业标准命令集的命令,诸如ATA、 CF卡或PC卡标准提供的工业标准命令集的命 令,以自标准存储设备读数据或向标准存储设备写数据。主机系统110也与控制器114交 换数据信号124。数据信号可包括例如将要写入NVM阵列116的数据、自NVM阵列读取的数 据以及渉及NVM阵列的被监视状态和使用统计的数据。2.典型页编稈和擦除块操作中的处 理时间 主要的NVM制造商通常将计时周期固定,以适应完成页编程和块擦除操作所需要 的时间。对于闪存,典型的页编程周期持续约200-250 ii s,最长可持续500-750 ii s,而典型 的块擦除周期可持续约1. 5ms,最长可持续2ms。图2是显示编程一页的典型方法200的流 程图。 一旦控制器114启动页编程功能,它就在状态202和204循环重复轮询状态寄存器 直至编程完成。块擦除操作中也发生类似的情形。图3是显示擦除块的典型方法300的流 程图。正擦除存储器中的块的控制器114在状态302和循环中还需要轮询状态寄存器直到 操作在状态304完成。 在上述两个操作中,由于等待页编程或块擦除操作完成的原因,控制器中大量的 处理器时间未使用。由于在每个操作的典型计时和最长计时之间存在很大的不同,所以控 制器无法预计这个等待时间会持续多长并且因此不能有效使用"浪费的"处理器时间。这 里公开的系统和方法使处理器能够在这些存储器操作正在进行时执行其他任务,包括存储 器或非存储器操作。 页编程和块擦除操作仅仅作为示例示出。本领域技术人员将会认识到本发明的实 施例也可应用到其他存储器或非存储器操作。3.NVM设备的特征 在一个实施例中,NVM设备的特征由控制器114内的表征模块126表征,从而测量 页编程和块擦除操作中涉及的实际时间。使用记录的实际时间值,控制器可以由此预见到 这些操作期间期望的等待时间并且可以在页编程和块擦除操作期间执行后台任务,诸如整 理数据和精简数据。 一个实施例提供上电和/或某个其他时间运行的表征功能。在一个实 施例中,为了测试的目的,表征功能在存储子系统内的每个NVM设备上执行抽样的页编程 和块擦除命令,并且将执行时间存储在校准表中。在另一实施例中,表征模块126观察并记 录与在存储子系统的正常操作过程期间发生的存储器操作有关的执行时间数据。在其他实 施例中,表征模块126可以存储与特定块的存储器操作有关的单独的执行时间数据。这些 编程和擦除时间用于粗略估计实际操作所需的时间。图4示出了在存储子系统中的四个示例NVM设备上执行的表征操作的示例。例如,如校准表404中所示,序号为1的NVM设备记
录的擦除时间为1. 5ms,记录的编程时间为240 ii s。在一个实施例中,校准表404中记录的
时间是从表征操作获得的时间的平均值。在一个实施例中,获得加权平均,其中给予在最近
的表征操作中获得的值较大加权。其他实施例记录来自表征操作的最快或最慢时间。 由于页编程和块擦除操作的计时会随着NVM设备的寿命而变化或者由于操作环
境而变化,所以可以以定期的间隔运行表征功能,使得存储在校准表中的值一直反映设备
的实际运行时间。例如,重新表征可以和与NVM有关的监视装置一起使用,以便重新表征由
一件或一件以上的受监视事件触发,例如 1)当存在温度变化时,例如每变化10°C, 2)当NVM使用增长或降低时,例如,每增长或降低10%, 3)当NVM阵列在某时间段内一直运行时(例如,上电时间的每第1000个小时),
4)当NVM阵列已经上电(加电)达到某一数目时(例如,每第10次上电),和/ 或 5)当提供给NVM阵列的电源电压电平变化某一阈值量时(例如,标准3. 3V电源电 压每变化0. IV)。 2006年5月8日提交的共同待决的美国专利申请11/429, 936号完整地描述了触 发器事件的进一步示例和NVM的示例性监视装置,该申请的公开内容通过引用全部并入本 文。在一个实施例中,表征模块126和任务管理器128为不同的被监视环境状态分别存储 和使用不同的校准数据集。例如,对于每个块,表征模块126可存储两组执行时间,一组针 对第一温度范围,另一组针对第二温度范围。4.时间和任务分配功能 在一个实施例中,任务管理器128执行两种基本功能时间分配功能和任务分配 功能。图5示出了根据一个实施例的时间分配功能。控制器114可在任务表402中具有多 个预定执行的任务。在一个实施例中,任务表402包括控制器需要在正常操作过程期间执 行的较低优先级任务。低优先级任务的示例包括计算使用统计数据、预处理排队的命令、对 排列的命令划分优先级等。如所示的,时间分配功能承担任务表402中的任务并且查找校 准表404中记录的执行时间。例如,任务表402中显示的第一任务是针对存储子系统116中 序列号为1的NVM设备的块擦除操作408。时间分配功能在校准表404中找到对应的时间, 该时间为1.5ms。之后,使用位于校准表404中的时间更新任务表402中的条目410。在一 个实施例中,校准表404可包括具有并非通过表征获得的预设值的NVM操作。例如,校准表 404显示了 NVM操作,诸如"其他功能1"和"其他功能2"。 图6图示说明根据一个实施例的任务分配功能600的操作。在状态602,任务管理 器128基于即将发生的当前NVM操作确定可用时间间隙的持续时间。当前操作可以是不在 任务表402中的操作,但是在一些实施例中,当前操作可以是任务表402中的任务。在一个 实施例中,控制器114启动任务管理器128并且为任务管理器提供当前NVM操作的预期持 续时间。预期的持续时间可以从任务表402获得。例如,任务表402中最上面的操作是花 费1. 5ms的块擦除操作。因此,为任务管理器128提供1. 5ms的值。在另一实施例中,任务 管理器128通过直接从任务表402获得该值确定持续时间。 之后,在状态604,任务管理器128从任务表402选择要在当前NVM操作的执行期 间执行的一个或一个以上任务。在上述示例中,任务管理器找到在分配的1.5ms内要执行的任务。在状态606,任务管理器确定分配的时间内是否有剩余的时间用于另外的任务。在 一个实施例中,添加另外的任务直到没有留下在剩余的时间内可以执行的任务。 一旦添加 了最后一项任务,任务管理器128导致所选任务在状态608处执行。在一个实施例中,只要 任务表中的任务可以在可用的时间间隙内执行,则可以不按顺序选择任务表中的任务。例 如,任务管理器128可选择要在分配的1. 5ms内执行的"其他功能l"和"其他功能2",因为 这些任务加起来需要1. 25ms (700 y s+550 y s)。 在描述了任务管理器128的两种主要功能后,图7示出了示例性页编程操作700, 其中根据一个实施例执行任务管理器128。 一旦执行页编程操作,控制器114就启动或导 致任务管理器在状态702执行。基于一个实施例中从校准表404获得的值,任务管理器被 赋予期望的执行页编程命令的时间。任务管理器128从任务表402选择一个或一个以上任 务,这些任务可以在示出的所记录的示例页编程操作的执行时间330iis内执行。例如,根 据图6所示方法选择任务。之后执行这些所选任务,并且一旦完成这些任务,控制器114则 在状态704轮询状态寄存器。由于任务管理器128选择控制器114可以在页编程操作期间 执行的适当任务,因此使控制器114在状态704轮询状态寄存器必须花费的等待时间最少。 当页编程操作在状态706完成时,操作结束。控制器的性能由于利用了之前未使用的等待 时间执行NVM任务而得以改善。 图8示出块擦除操作800,其中根据一个实施例执行任务管理器128。 一旦执行块 擦除操作,控制器114启动或导致任务管理器128在状态802执行。任务管理器基于在一 个实施例中从校准表404中获得的值被赋予块擦除命令的预期执行时间。任务管理器128 从任务表402选择可以在所示记录的示例性块擦除操作的执行时间1. 4ms内执行的一个或 一个以上的任务。这些任务根据例如图6所示的方法来选择。之后,执行这些选择的任务, 并且一旦完成这些任务,控制器114则在状态804轮询状态寄存器。由于任务管理器128 选择控制器114可以在块擦除操作期间执行的适当任务,所以使控制器114在状态804轮 询状态寄存器必须花费的等待时间最少。当页编程操作在状态806完成时,该操作结束。 5.结论 本发明的实施例可以并且通常能在存储子系统中单独实现,从而不需要向主机添 加特定硬件或软件。可替代地,上述所有方法和过程可以在一个或一个以上通用计算机或 处理器执行的软件代码模块中体现,并且通过该软件代码模块实现完全自动化。这些代码 模块可以存储在任意类型的计算机可读介质或其他计算机存储设备中。一些或所有这些方 法可以替代地在专用计算机硬件中体现。此外,本文提及的组件可以在硬件、软件、固件或 其组合中实现。 通常,本文使用的词语"模块"是指在硬件和/或固件中体现的逻辑,或者软件指 令的集合,可能具有入口和出口点,使用编程语言书写,诸如,Java、 Lua、(:或0++。软件模 块可以编译并链接成可执行程序,安装在动态链接库中,或者可以使用解释性编程语言书 写,诸如BASIC、 Perl或Python。应当理解软件模块可以从其他模块调用或者自身调用, 并且/或者可以响应检测到的事件或中断而被启用。软件指令可以嵌入在固件中,诸如 EPROM中。还应当理解硬件模块可以由连接的逻辑单元构成,诸如多个门电路和触发电路 (flip-flop),和/或可以由可编程单元构成,诸如可编程门阵列或处理器。本文描述的模 块可以在硬件(通用或专用)、软件和/或固件中实现。通常,本文描述的模块是指可以与
8其他模块结合或分成多个子模块而不考虑其物理组织或存储的逻辑模块。 除非特别指出或者根据所使用的环境的理解外,条件语言,诸如"可"、"可以"、"可
能"等通常意在表明某些实施例包括而其他实施例不包括的某些特征、元件和/或步骤。因
此,通常,这种条件语言并非暗示这些特征、元件和/或步骤对于一个或一个以上实施例是
需要的,或者一个或一个以上实施例必然包括在有或没有用户输入或提示时用于判定在任
何特殊实施例中是否包括或者将执行这些特征、元件和/或步骤的逻辑。 本文描述的和/或附图中描述的流程图中的任何过程描述、元件或块应当理解为
潜在表示包括用于实现过程中具体逻辑功能或步骤的一个或一个以上可执行指令的代码
模块、代码段或代码部分。替代实现属于本文描述的实施例的范围,其中替代实现可删除元
件或功能、不以所示顺序或讨论的顺序执行,包括实质上并行或者以相反的顺序执行元件
或功能,这取决于涉及的功能,如本领域技术人员可以理解的。 要强调的是,可以对上述实施例作出很多变化和修改,这些修改的元素均理解为 处于其他可接受的实施例之中。所有这些变化和修改包含在本公开的范围内。
9
权利要求
一种存储子系统,包括非易失性存储器阵列;和控制器,其包括表征模块,其被配置成在校准表中记录在所述非易失性存储器阵列中的多个存储器设备上执行的存储器操作的执行时间;和任务管理器,其使用来自所述校准表的时间选择在所述控制器正在执行当前存储器操作时要执行的一个或一个以上的任务,所选任务的总执行时间小于与所述当前存储器操作关联的所记录的执行时间。
2. 根据权利要求1所述的存储子系统,其中所述存储器操作是在所述存储子系统的正 常使用过程期间执行的存储器操作。
3. 根据权利要求1所述的存储子系统,其中所述存储器操作是校准操作。
4. 根据权利要求3所述的存储子系统,其中所述表征模块被配置成执行由监视的事件 触发的校准操作。
5. 根据权利要求4所述的存储子系统,其中所述监视的事件是温度变化一个或一个以 上当前阈值。
6. 根据权利要求4所述的存储子系统,其中所述监视的事件是所述存储子系统的使用 增长阈值量。
7. 根据权利要求4所述的存储子系统,其中所述监视的事件是达到阈值量的通电时间。
8. 根据权利要求4所述的存储子系统,其中所述监视的事件是达到阈值数目的上电。
9. 根据权利要求4所述的存储子系统,其中所述监视的事件是电压电平变化阈值量。
10. 根据权利要求1所述的存储子系统,其中所记录的时间包括与所述非易失性存储 器阵列的特定块关联的执行时间数据。
11. 根据权利要求io所述的存储子系统,其中所记录的时间包括与所述非易失性存储器阵列的特定块关联的单独执行时间数据。
12. 根据权利要求IO所述的存储子系统,其中所记录的时间是与所述非易失性存储器 阵列的特定块的页编程周期关联的执行时间数据。
13. 根据权利要求IO所述的存储子系统,其中所记录的时间是与所述非易失性存储器 阵列的特定块的块擦除周期关联的执行时间数据。
14. 根据权利要求1所述的存储子系统,其中所记录的时间包括与所述非易失性存储 器阵列的不同被监视状态关联的执行时间数据。
15. —种为存储子系统优化由控制器执行的存储器操作的方法,其包括 在存储子系统中的多个存储器设备上执行多个存储器操作; 记录所述多个存储器操作的执行时间;选择一个或一个以上任务用于执行,其总的记录的执行时间小于当前存储器操作的记 录的执行时间;禾口在执行所述当前存储器操作时执行所选择的任务。
16. 根据权利要求15所述的方法,其中所述存储器操作是在所述存储子系统的正常使 用过程期间执行的存储器操作。
17. 根据权利要求15所述的方法,其中所述存储器操作是校准操作。
18. 根据权利要求15所述的方法,其中所述存储器操作是页编程操作。
19. 根据权利要求15所述的方法,其中所述当前存储器操作是块擦除操作。<
20. 根据权利要求15所述的方法,其中所述执行和记录在由被监视的事件触发时执行。
21. 根据权利要求20所述的方法,其中所述监视的事件是温度变化一个或一个以上当 前阈值。
22. 根据权利要求20所述的方法,其中所述监视的事件是所述存储子系统的使用增长阈值量。
23. 根据权利要求20所述的方法,其中所述监视的事件是达到阈值量的通电时间。
24. 根据权利要求20所述的方法,其中所述监视的事件是达到阈值数目的上电。
25. 根据权利要求20所述的方法,其中所述监视的事件是电压电平变化阈值量。
26. —种其上存储可执行代码的计算机可读介质,该代码由计算机执行时导致该计算 机执行权利要求15所述的方法。
27. —种存储子系统,其包括 固态非易失性存储器阵列,禾口控制器,其可操作用于向所述固态非易失性存储器写数据以及自所述固态非易失性存储器读数据以响应从主机系统接收的存储器存取命令,所述控制器还可操作用于为所述非 易失固态存储器阵列的多个区域的每个区域记录反映各自区域的存储器存取操作执行时 间的执行时间数据,所述控制器进一步可操作用于使用所记录的执行时间选择任务以和由 所述主机系统启动的特定存储器存取操作同时执行。
全文摘要
本文公开了识别和重获非易失性存储器(NVM)设备内典型页编程和块擦除操作中潜在未使用的处理时间的系统和方法。在一个实施例中,控制器内的表征模块通过在阵列中的一个或一个以上NVM设备上执行页编程和块擦除操作以及将操作的执行时间数据存储在校准表中来执行表征过程。该过程可以在启动时执行以及/或周期性地执行,以便时间值反映各个NVM设备的实际物理状态。任务管理器使用存储的时间值估计完成其任务表中的特定存储器操作所需的时间。基于估计的完成时间,任务管理器分配在页编程和/或块擦除周期期间要执行的任务,以便可以利用其他情况下未使用的处理时间。
文档编号G11C29/00GK101794198SQ20101000214
公开日2010年8月4日 申请日期2010年1月7日 优先权日2009年1月7日
发明者M·S·迪格斯, W·华生 申请人:硅系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1