使用停止命令进行电源故障处理的制作方法

文档序号:16245348发布日期:2018-12-11 23:31阅读:159来源:国知局
使用停止命令进行电源故障处理的制作方法

本说明书一般涉及数据存储设备内的数据传输,包括使用用于非易失性存储器设备的停止命令的电源故障处理。

背景技术

使用闪存的固态存储设备提供优于传统硬盘的性能和功耗优势。为了进一步提高性能,许多固态存储设备除了闪存之外还包含并使用易失性存储器,诸如随机存取存储器(randomaccessmemory,ram)。例如,易失性存储器可以用于高速缓存数据和/或临时存储用于管理存储在闪存中的数据的系统数据。然而,与闪存不同,易失性存储器需要电能来维持其中存储的数据。如果电源中断,则存储在易失性存储器中的任何数据可能会丢失。这种数据丢失可能会通过要求重建丢失的表格来增加固态存储设备中的开销操作。此外,这种数据丢失可能会导致永久丢失电源中断之前尚未存储在闪存中的被高速缓存的数据。



技术实现要素:

所公开的主题涉及一种数据存储设备,其包括用于控制器在发生电源故障事件时暂停某些闪存操作的机制。在发生电源故障事件后,保存非易失性存储器中的系统数据和某些情况下的主机数据的时间有限。控制器可以被配置为在已经确定已经发生电源故障事件之后,发出诸如写入命令的某些数据保存命令以存储系统数据。控制器可以被配置为当检测到电源故障事件时首先检测是否正在运行任何不必要的存储器命令。控制器可以被配置为向非易失性存储器电路(例如,闪存)发出停止命令以停止检测到的存储器命令的运行,使得更多的非易失性存储器变得可容易获得,并且能够发出数据保存命令来代替。

在另一方面,一种数据存储设备包括非易失性存储器电路和控制器。在一个方面,控制器被配置为确定电源故障事件已经发生。控制器也被配置为响应于已发生电源故障事件的确定,确定哪些非易失性存储器电路正在运行第一类型的存储器命令。控制器也被配置为向所确定的非易失性存储器电路发出停止命令以停止第一类型的存储器命令的运行。

在另一方面,一种系统包括多个闪存电路、随机存取存储器(ram)、以及通信地耦合到多个闪存电路的控制器。在一个方面,控制器被配置为确定已经发生电源故障事件。控制器也被配置为响应于已发生电源故障事件的确定,确定多个闪存电路中的哪些正在运行擦除命令或编程命令。控制器也被配置为基于正向所确定的闪存电路发出的停止命令来停止擦除命令或编程命令的运行。

在另一方面,一种方法包括确定已经发生电源故障事件。该方法也包括响应于已经发生电源故障事件的确定,确定数据存储设备中的哪些闪存电路正在运行擦除命令或编程命令。该方法也包括向所确定的闪存电路发出停止命令以终止擦除命令或暂停编程命令。

在另一方面,一种系统包括用于确定在闪存中已经发生电源故障事件的部件。该系统还包括用于响应于确定已经发生电源故障事件而确定数据存储设备中的哪些闪存电路正在运行擦除命令或编程命令的部件。该系统也包括用于向所确定的闪存电路发出停止命令以终止擦除命令或暂停编程命令的部件。

应该理解,从下面的详细描述中,本主题技术的其他配置对于本领域技术人员来说将变得显而易见,其中本主题技术的各种配置以示例的方式被示出和描述。如将认识到的,本主题技术能够具有其他的和不同的配置,并且其若干细节能够在各种其他方面进行修改,所有这些都不脱离本主题技术的范围。因此,附图和详细描述本质上被认为是说明性的而不是限制性的。

附图说明

主题技术的某些特征在所附权利要求中阐述。然而,出于解释的目的,在下面的附图中阐述了本技术的若干实施方式。

图1示出了根据一个或多个实施方式的可以使用停止命令来实施用于电源故障处理的系统的示例数据存储系统。

图2示出了根据一个或多个实施方式的使用停止命令的电源故障处理的示例过程的流程图。

图3示出了根据一个或多个实施方式的示例数据存储设备中分布在不同通道上的示例非易失性存储器电路。

图4示出了根据一个或多个实施方式的示例数据存储设备中分布在不同通道上的非易失性存储器电路的示例块。

具体实施方式

以下阐述的详细描述旨在作为对本主题技术的各种配置的描述,而不旨在表示可以实践本主题技术的唯一配置。附图在本文中并入并构成详细描述的一部分。详细描述包括出于提供对主题技术的透彻理解的目的的具体细节。然而,本主题技术不限于本文中阐述的具体细节,并且可以使用一个或多个实施方式来实践。在一个或多个实例中,结构和组件以框图形式示出以避免模糊本主题技术的概念。

当存在在事件发生之后的有限时间量以保存存储在易失性存储器中的系统数据和/或主机数据时,处理使用闪存的固态存储设备中的电源故障事件形成重大挑战。如本文中所使用的,例如,术语“系统数据”是指用于管理数据存储设备的数据,包括但不限于到物理块(例如,nand块)地址映射索引的主机逻辑块号(logicalblocknumber,lbn)、主机lbn到物理块地址映射索引的第二层索引、启动信息、物理块属性(例如,擦除、等待被擦除、在编程中、编程完成)、改变日志信息、主机表格信息、可用物理块的列表、写入/擦除计数、和垃圾收集指标。如本文中所使用的,例如,术语“主机数据”是指从包括内部移动的数据的主机接收和/或向该主机发送的数据。本主题技术涉及电源故障事件后面临数据保存的挑战的两种不同情形。第一种情形包括板载电容器或电池电源,其提供电能以停止现有存储器命令、向非易失性存储器设备发出大量写入命令、以及完成这些写入命令的运行以在电源故障事件后保存系统数据和/或某一主机数据。可能无法使用板载电容器或电池电源的第二种情形,可能在电源故障事件后没有时间发出写入命令来保存存储在易失性存储器中的系统数据。相反,在电源故障事件之后剩余的电量允许优先化要发起的写入命令以及要终止的写入命令,以便在电能完全丢失之前将非易失性存储器置于稳定状态中。

当用诸如电容器或电池的板载(或内部)电源电路来处理电源故障事件时,存储在易失性存储器(诸如理想情况的ram)中的系统数据和某些主机数据(例如,向主机确认回的主机数据)在电能完全丢失之前被保存。主机数据可以是从主机接收并由数据存储设备确认的用于存储在非易失性存储器中的数据。板载电源电路不提供无限制的电能,因此可能需要尽快完成为保存现有系统数据和/或主机数据而发出的任何写入命令。诸如擦除和编程命令的第一类型的存储器命令(例如,要写入的未确认的主机数据)包括相对长的运行序列,因此需要最多的时间来完成。这些第一类型的命令并不理想用于在电源故障事件后进行。在这方面,擦除和编程命令不是关键的,因此当需要在电源故障事件之后运行意在存储系统数据的写入命令时,不需要运行擦除和编程命令。例如,当正运行擦除或编程命令并且已经发生电源故障事件时,运行不可能完成或正确执行的这些类型的命令可能会耗费时间。

当在没有板载(或内部)电源电路的情况下处理电源故障事件时,目标转变为通过在电能完全丧失之前将单元设置为稳定状态来保护非易失性存储器设备的单元。电源故障事件可能发生在不同的环境中。例如,当数据存储设备附着到(或连接到)主机设备(例如,计算机)并且主机设备正在丢失电能时,对于电源电压水平下降到低于数据存储设备的操作电压,电源故障事件可能涉及相对较长的时间段。在另一示例中,当数据存储设备被强制从主机设备分开时,对于电压下降到低于数据存储设备的操作电压,电源故障事件可能涉及相对较短的时间段。本主题技术提供了以一致的方式保护非易失性存储器设备的单元,使得非易失性存储器设备能够在下一启动序列中以一致的方式恢复。

在一个或多个实施方式中,当用板载(或内部)电源电路处理电源故障事件时,数据存储设备的控制器将诸如擦除停止命令或编程停止命令的停止命令,发送到被识别为正分别运行擦除命令或编程命令的特定非易失性存储器设备。接收到停止命令的非易失性存储器设备在相对短的时间段内暂停擦除或编程命令的运行,并且等待来自控制器的新命令。当第一类型的命令(例如,擦除命令、编程命令)被暂停时,控制器能够在任何可用的非易失性存储器设备上运行第二类型的存储器命令(例如,意在存储系统数据的写入命令)以在更短的时间完成电源故障处理过程。因为当来自主机的电源不稳定时,板载电源电路不提供无限制的电能,所以数据存储设备使用剩余电能用于数据保存而不是非关键性存储器操作。

在一个或多个实施方式中,取决于实施方式,停止命令由硬件或固件发出。所停止的命令(例如,擦除命令、编程命令)可以在下一个启动序列中被重新执行。用于数据保存的电源故障处理活动可以包括仅限于将系统数据和/或确认的主机数据存储到非易失性存储器的写入命令。这些写入命令可以包括用于保存(或存储)与非易失性存储器设备相关联的数据的索引的写入命令。写入命令也可以包括用于存储非易失性存储器设备的给定物理块的擦除计数的写入命令。写入命令也可以包括用于存储非易失性存储器设备的给定物理块的特性(诸如物理块已经被擦除、已被写入等的大量实例)的写入命令。写入命令也可以包括用于存储主机有效载荷数据的写入命令,其中该数据已经由数据存储设备向主机确认。响应于发出的数据保存命令而存储的数据能够用于下一个恢复启动序列。

当在没有板载(或内部)电源电路的情况下处理电源故障事件时,控制器向特定的非易失性存储器设备发送停止命令以暂停在该设备处运行擦除或编程命令。在电源故障事件期间,电源电压以可能不稳定或不可预测的速率下降,使得将现有系统数据存储到非易失性存储器中的剩余时间量是未知的。由于向非易失性存储器设备的单元施加的电荷量不足,编程命令可能无法适当地运行。例如,多级单元(multi-levelcell,mlc)或三级单元(triple-levelcell,tlc)中的每个编程周期或擦除周期的电压电平可能没有被施加适当的电平,因此导致单元不完全被充电(用于编程)或者放电(用于擦除)。接收到停止命令的非易失性存储器设备在相对短的时间段内暂停擦除或编程命令的任何运行。在这方面,能够在电压下降到低于非易失性存储器设备的操作电压之前完成停止命令,并且保持非易失性存储器设备的单元处于稳定状态。

本主题技术提供了一种包括非易失性存储器电路和控制器的数据存储设备。在一个或多个实施方式中,控制器确定已经发生电源故障事件。然后控制器响应于已发生电源故障事件的确定,确定哪些非易失性存储器电路正在运行第一类型的存储器命令。然后控制器向所确定的非易失性存储器电路发出停止命令以停止第一类型的存储器命令的运行。一旦从控制器接收到新命令(例如,恢复命令),非易失性存储器电路就可以恢复暂停的写入(或编程)命令的运行,或者一旦从控制器接收到后续擦出命令,非易失性存储器电路就可以开始在处于稳定状态的物理块上运行擦除命令。

图1示出了根据一个或多个实施方式的可以使用命令暂停来实施用于电源故障处理的系统的示例数据存储系统100。然而,并非所有描绘的组件都是必需的,并且一个或多个实施方式可以包括图中未示出的额外的组件。在不脱离本文中阐述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供额外的组件、不同的组件或更少的组件。

系统100包括数据存储设备110和主机设备130。数据存储设备110包括总线111、一个或多个闪存电路112a-n、一个或多个通道113a-n、控制器114、随机存取存储器(ram)122、接口124、和感测电路126。控制器114包括电源故障电路120。控制器114可以包括一个或多个解码器(未示出)(例如纠错码(ecc,error-correctingcode)解码器)、一个或多个编码器(未示出)(诸如ecc编码器)。一个或多个解码器和/或一个或多个编码器可以是控制器114的一个或多个专用电路,可以经由在控制器114上运行的固件来实施,和/或可以是与控制器114分离的一个或多个电路。如本文中所使用的,术语“闪存电路”可以与术语“非易失性存储器设备”互换使用。

电源故障电路120处理来自感测电路126的感测电路信号,该信号可以指示电源故障事件是否已经发生。在一个或多个实施方式中,电源故障电路120基于感测电路信号确定电源故障事件是否已发生。响应于感测电路信号,电源故障电路120可以向闪存电路112a-n中的一个或多个发出停止命令。电源故障电路120可以发出擦除停止命令以终止现有擦除命令的运行。电源故障电路120可以发出编程停止命令,以暂停现有的编程命令以便稍后在电能恢复时恢复,或者终止现有的编程命令。在一些方面,控制器114包括在运行时间(或正常操作)期间发出标准读取/写入命令的一个或多个逻辑电路。在这方面,这些逻辑电路可以被配置为基于感测电路信号的状态向闪存电路112a-n中的一个或多个发出停止命令。在一个或多个方面,逻辑电路可以在一些实施方式中处理来自感测电路126的感测电路信号,或可从控制器114的一个或多个处理核心接收指示以触发停止命令的发出。例如,当感测电路信号处于第一逻辑状态(“0”)时,一个或多个逻辑电路可以在运行时间期间发出标准读取/写入命令,并且当感测电路信号处于第二逻辑状态(“1”)时,在电源故障事件期间发出停止命令。在一些实施方式中,逻辑电路可以从电源故障电路120分开,或者在其他实施方式中,逻辑电路可以是电源故障电路120的子部件。

数据存储设备110的接口124将数据存储设备110耦合到主机设备130。接口124可以是有线接口,诸如外围组件接口控制器(peripheralcomponentinterfacecontroller,pcic)接口、个人计算机存储卡国际协会(personalcomputermemorycardinternationalassociation,pcmcia)接口、串行at附件(serialat(advancetechnology,先进技术)attachment,sata)接口、通用串行总线(universalserialbus,usb)接口、或一般任何有线接口。可选地或另外地,接口124可以是无线接口,诸如无线sata、蓝牙、或者一般任何无线接口。

感测电路126耦合到接口124和控制器114。感测电路126在一些实施方式中可以是电压检测器,或者在其他实施方式中可以是电流检测器。感测电路126测量来自主机设备130的电源电平(例如,电压幅度、电流幅度)以确定是否已经发生电源故障事件。在一些方面,感测电路126可以测量来自其他外部电源(而不是主机设备130)的电源电平。如果来自主机设备130的电源电平下降到低于预定阈值(例如,10%、20%下降),则感测电路126可以向控制器114发出通知(例如,感测电路信号),指示已经发生电源故障事件。

在一个或多个实施方式中,系统100包括内部电源128以在电源故障事件期间向控制器114和向非易失性存储器设备(例如,闪存电路112a-n)供应补充电能。内部电源128可以耦合到感测电路126和到控制器114。内部电源128在一些实施方式中包括无源电路(例如,电容器),或者在其他实施方式中包括电池。

通道113a-n可以耦合到总线111,且通道113a-n可以各自通过总线111将闪存电路112a-n中的一个或多个通信地耦合到控制器114。在一个或者多个实施方式中,通道113a-n可以直接耦合到控制器114,例如没有总线111的情况下。通道113a-n和/或总线111可以是有线接口。

在系统100中,通道113a通信地耦合到闪存电路112a,通道113b通信地耦合到闪存电路112b,通道113c通信地耦合到闪存电路112c,并且通道113n通信地耦合到闪存电路112n。虽然通道113a-n在系统100中被示出为各自通信地耦合到闪存电路112a-n中的一个,但是通道113a-n中的每一个可以通信地耦合到闪存电路112a-n中的多个,如将在下面关于图2进一步讨论的。当多个闪存电路112a-n耦合到通道113a-n中的单个通道时,闪存电路112a-n中只有一个可能能够在任何给定时间通过通道发送或接收数据。

总线111和/或通道113a-n可以各自与最大带宽和/或吞吐量相关联。类似地,接口124也可以与最大带宽和/或吞吐量相关联。因此,在任何给定时间,在能够通过总线111和/或通过每个通道113a-n传送的数据量上可能存在带宽/吞吐量限制。此外,闪存电路112a-n中的每一个可能在任何给定的时间仅能够处理单个命令,例如,写入命令或读取命令。

控制器114可以是可操作为经由通道113a-n和总线111从闪存电路112a-n读取数据和将数据写入闪存电路112a-n。例如,控制器114经由接口124从主机设备130接收数据(诸如数据流),其中数据然后可以经由总线111和通道113a-n中的一个或多个被写入到闪存电路112a-n中的一个或多个。闪存电路112a-n可以各自包括一个或多个物理块,诸如nand块和/或nor块。物理块可以各自包括一个或多个物理页面,数据可以被写入物理页面或可以从物理页面读取数据。

控制器114可以利用ram122来排队旨在存储在闪存电路112a-n中的系统数据和/或主机数据。例如,ram122可以用作速率控制的缓冲器,或者可以另外用于存储被控制器114利用以从/向闪存电路112a-n读取/写入数据的信息(例如,队列、变量、物理块状态、逻辑到物理地址映射表、耐久性/保留数据、设置等等)。因为ram122可以是易失性存储器,所以控制器114可以从ram122写入闪存电路112a-n,以将信息永久存储在闪存电路112a-n中的一个或多个中。当数据存储设备110通电时,控制器114可从一个或多个闪存电路112a-n中检索信息并将该信息存储在ram122中。

虽然闪存电路112a-n的物理块的物理页面能够被单独写入(例如,物理页面是用于读取/写入操作的单位),但是闪存电路112a-n的物理块的物理页面不能被单独擦除。相反,只能通过擦除物理块的所有物理页面(例如,物理块是用于擦除操作的单位),来擦除并随后重写物理块的物理页面。因此,当数据从物理块的页面移动或数据被删除时,该页面可以被标记为无效,并且在整个物理块被擦除之前不能被再次使用。

如果向非易失性存储器设备(例如,闪存电路112a-n中的一个)发出擦除命令并且发生电源故障事件,则完成擦除命令的时间长度(例如,约10到20毫秒)可能不够,因为内部电源128(例如,备用电池或电容器)可能没有足够的电能供应来施加到非易失性存储器设备。

在发生电源故障事件的一些情况下,正运行在非易失性存储器设备(例如,闪存电路112a-n中的一个)上的编程命令可以在编程序列中的任意步骤被暂停。在这方面,页面的单元可能不会被充电到期望的编程电平,因此由于页面的编程在电源故障事件之后变得损坏,而导致来自该页面的后续读取操作无效。

当非易失性存储器设备(例如,闪存电路112a-n中的一个)处于准备状态时,控制器114能够发出写入命令以存储系统数据和/或来自已经被控制器114确认的主机的数据。例如,当主机向数据存储设备100发送编程命令或写入命令、并且控制器114已经通过向主机发送回确认信号来确认来自主机的命令时,那么写入主机数据的操作被认为完成。在这方面,与所确认的编程(或写入)命令相关联的主机数据成为在数据存储设备中电能丢失之前完成的较高优先级的操作。在一些情况下,从主机发送的主机数据被临时存储在诸如本地高速缓存的易失性存储器中,因此将主机数据从易失性存储器写入到非易失性存储器设备的重要性增加。

为了增加在电源故障事件之后成功地完成对非易失性存储器设备的写入操作以用于数据保存的可能性,本主题技术提供了发出停止命令(例如,暂停现有的不必要的(或不太重要的)写入或擦除命令)到非易失性存储器设备。发出停止命令能够释放额外的非易失性存储器设备,用于在电压下降到低于非易失性存储器设备的操作电压之前,将任何现有的系统数据从易失性存储器移动到非易失性存储器。在一个或多个实施方式中,停止命令的长度相对较短,诸如包括相对较小的有效载荷或控制信息开销,因此在将非易失性存储器设备转变为暂停状态的处理时间中产生相对少量的等待时间。

当发出停止命令以停止非易失性存储器设备中的非关键性编程命令时,用于非易失性存储器设备的物理块中的物理页面的单元可能未被完全编程。这是因为编程命令可以包括多个周期(或一系列周期)以完成物理页面的编程,其中施加到每个单独单元的电压可以在每个周期中增加(或升高)到某一电压电平。在一些方面,编程命令可以包括几微秒的持续时间来完成。在这方面,向非易失性存储器设备发出的停止命令暂停编程命令,因此导致单元电荷电平未被升高到用于编程物理页面的期望电平。可以从受暂停的编程命令影响的页面中读取的数据,将很可能是损坏的数据(或具有错误的数据),因为单元未被充电到正确的电平以存储正确的数据值。在一些方面,当编程命令被间歇地(或在完成之前)停止时,要被编程(或写入)到非易失性存储器设备中的数据保持在非易失性存储器设备的本地高速缓存(或预加载寄存器)中。除非非易失性存储器设备能够将数据保持在暂停状态,否则已经存储在预加载寄存器中的数据将会丢失,并且所停止(或暂停)的编程命令可能无法恢复。例如,控制器114向非易失性存储器设备中的一个发送写入命令,并且它将数据加载到用于非易失性存储器设备的一组预加载寄存器中。控制器114然后可以发起编程循环的序列以将数据从该组预加载寄存器写入非易失性存储器设备。当非易失性存储器设备从控制器114接收到停止命令时,编程操作可以在编程周期的序列中的任意点处暂停,其中物理页面的单元处于任意的编程电平。可能在电源故障事件后清除预加载寄存器,因此导致后续编程操作的数据丢失。

类似地,在擦除操作中,擦除命令可以包括多个周期以使物理块中的单元放电。在一些方面,擦除命令可以包括几毫秒的持续时间来完成。如果擦除命令被间歇性地(或在完成之前)暂停,那么大量单元可能仍然包含一些电荷。在这方面,当对在擦除操作期间未完全放电的单元执行后续写入操作时,由于单元中的剩余电荷,正被写入的单元可能不会被充电到预期电平。这可能会在读取操作期间导致错误。

在一个或多个实施方式中,当向包括多个非易失性存储器设备的裸芯或封装的特定非易失性存储器设备发出停止命令时,该裸芯或平面中的特定非易失性存储器设备被暂停并且变得不可用来执行任何写入操作。属于该芯片或平面的其他非易失性存储器设备在向特定非易失性存储器设备发出的停止命令完成之后是可用的。例如,诸如读取命令或擦除命令的新命令可以被发出到其余的非易失性存储器设备。然而,新的编程命令可能不会发出到接收到编程停止命令的相同裸芯或平面。相反,新的编程命令可以被发送到另一裸芯或平面,以执行将系统数据和/或所确认的主机数据存储在非易失性存储器中的写入操作。

在一个或多个实施方式中,在多于一个非易失性存储器设备中发生的编程操作能够并行发生。在这方面,停止命令将被发出到发生不必要的编程操作的特定非易失性存储器设备。在一些方面,向发生不必要的编程或擦除操作的每个非易失性存储器设备发出单独的停止命令。例如,包含四个非易失性存储器设备的非易失性存储器设备封装可以具有同时发生的编程操作,其中四个单独的停止命令然后被分别发出到四个非易失性存储器设备中的每一个。

在一个或多个实施方式中,为暂停擦除操作而发出的停止命令(或擦除停止命令)的格式和为暂停编程操作而发出的停止命令(或编程停止命令)的格式是不同的。在一些方面,擦除停止命令表示重置(reset)命令。在这方面,在擦除停止命令中存在预定的前缀以重新开始停止的擦除操作。类似地,在编程停止命令中存在预定的前缀以重新启动停止的编程操作。在这方面,用于暂停编程命令的停止命令是特殊命令,因为使用与擦除停止命令类似的停止命令来暂停编程命令可以完全取消编程命令,而不能够在稍后的时间(或启动周期)恢复停止的编程命令。

在一个或多个实施方式中,由控制器114将编程停止命令发出到特定非易失性存储器设备。控制器114在向非易失性存储器设备发出编程停止命令之后,执行对裸芯或平面的非易失性存储器设备的状态轮询,以确定非易失性存储器设备是进入用于编程命令的停止(或暂停)状态还是用于擦除命令的终止状态。如果非易失性存储器设备进入暂停状态,那么控制器114可以向属于其他裸芯或平面的其他非易失性存储器设备发出诸如擦除命令或读取命令的另一命令。为了恢复停止的编程命令,控制器114能够发出包括指示恢复停止的编程命令的请求的预定前缀的特殊编程命令。在这方面,处于暂停状态的非易失性存储器设备能够基于后续编程命令从暂停状态转变回编程状态。关于擦除命令,控制器114发出重置命令或擦除停止命令以阻止擦除操作发生。控制器114然后监视来自非易失性存储器设备的状态轮询以检测准备信号。一旦检测到准备信号,控制器114就可以通过向非易失性存储器设备中的相同地址(例如,指向非易失性存储器设备的物理块的地址)发出相同的擦除命令,来恢复停止的擦除命令。在这方面,处于终止状态的非易失性存储器设备能够基于后续擦除命令从终止状态转变回擦除状态。

在一个或多个实施方式中,电压检测器(例如,感测电路126)监视正向控制器114和向非易失性存储器设备供应的电能。电压检测器可以被配置为检测相对于预定阈值的预定操作电压(例如,3.3v、2.5v、1.8v)。预定阈值可以对应于电源电压的百分比(例如,90%)。例如,如果电源电压下降至少10%(或低于90%阈值),则电压检测器发出警报信号(例如,感测电路信号),该信号触发控制器114向非易失性存储器设备发出停止命令。

图2示出根据一个或多个实施方式的使用命令暂停的电源故障处理的示例过程200的流程图。为了说明的目的,本文中参考图1的控制器114描述示例过程200;然而,示例过程200不限于图1的控制器114,并且示例过程200的一个或多个块可以由控制器114的一个或多个其他组件执行。进一步为了解释的目的,示例过程200在本文中被描述为串行或线性地发生。然而,示例过程200的多个块可以并行发生。另外,示例过程200的块不需要以所示的顺序执行,以及/或示例过程200的一个或多个块不需要执行。

当数据存储设备110的控制器114(图1)确定已经发生电源故障事件时,示例过程200在步骤202开始。例如,控制器114可以从感测电路126接收指示在接口124处监测的电压已经下降约10%(例如,从5.0v到4.5v)的感测电路信号,并且因此来自主机设备130的电源处于或低于第一阈值以表示电源故障事件。在该方法中,感测电路126可能不需要检测闪存电路112a-n处的电压以触发电源故障事件。在另一方面,来自感测电路126的感测电路信号可以基于第二阈值,指示没有足够的电能来操作闪存电路112a-n,其中第二阈值低于闪存电路的电源电平达预定百分比(例如,10%)。例如,感测电路126可以检测闪存电路112a-n处的电压以触发电源故障事件,其中检测到的电压可能已经从3.3v电源下降到大约3.0v。在该示例中,第二阈值对应于3.0v电平并且大于闪存电路112a-n的最小操作电压(例如,2.7v)。在这方面,电源故障事件在电压电平达到最小操作电压之前被触发,而不是在电压电平已经下降到低于最小操作电压时被触发。

在一些方面,当已经发生电源故障事件时,非易失性存储器电路112a-n由内部电源128供电。感测电路信号可以触发内部电源128以向控制器114供应电能。在这方面,控制器114在来自内部电源128的电能下降到低于预定阈值之前,将来自诸如ram122的易失性存储器的数据写入非易失性存储器电路(例如,112a-n)。

在步骤204中,控制器114确定是否正在非易失性存储器电路112a-n上运行第一类型的存储器命令(例如,写入命令和/或擦除命令)。例如,控制器114可以具有命令队列的可见性,以知道哪个非易失性存储器设备或非易失性存储器设备的分组正在运行第一类型的存储器命令。如果控制器确定存在正在运行的写入命令和/或擦除命令,则过程200前进到步骤206。否则,过程200终止。在一些方面,第一类型的存储器命令包括擦除命令。在其他方面,第一类型的存储器命令包括用于写入第一类型的数据的编程命令。第一类型的数据可以包括未确认的主机数据。

第一类型的数据也可以包括奇偶校验数据。例如,控制器114可以在闪存电路112a-n上实施raid(redundantarrayofinexpensivedisks,廉价磁盘的冗余阵列)存储方案。诸如xor函数的按位函数可以在一组主机数据上被运行以产生奇偶校验数据,奇偶校验数据连同该组主机数据一起被写入闪存电路112a-n。如果用于写入奇偶校验数据的第一类型的存储器命令在电源故障事件时被暂停或终止,则可以在数据存储设备的下次启动之后从该组主机数据重新计算奇偶校验数据,并将其写入闪存电路112a-n。

在步骤206中,当确定已经发生电源故障事件时,控制器通过参考命令队列来确定哪些非易失性存储器电路(例如,112a-n)正在运行第一类型的存储器命令。在步骤208中,控制器向所确定的非易失性存储器电路发出停止命令,以暂停或终止第一类型的存储器命令的运行。

在一个或多个实施方式中,控制器114向所确定的非易失性存储器电路发出第二类型的存储器命令。在一些方面,第二类型的存储器命令包括用于写入第二类型的数据的编程命令。第二类型的数据可以是系统数据和/或所确认的主机数据。

在一个或多个实施方式中,停止命令包括暂停第一类型的存储器命令的运行的暂停命令。在这方面,响应于来自控制器114的后续命令,可以恢复暂停的第一类型的存储器命令。在其他实施方式中,停止命令包括终止第一类型的存储器命令的运行的终止命令,使得终止命令可能不会在来自控制器114的后续写入命令中恢复或复原。

图3示出根据一个或多个实施方式的在示例数据存储设备110中分布在不同通道上的示例非易失性存储器电路。然而,并非所有描绘的组件都是必需的,并且一个或多个实施方式可以包括图中未示出的额外的组件。在不脱离本文阐述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供额外的组件、不同的组件、或更少的组件。

示例数据存储设备110包括接口124、控制器114、总线111、通道113a-113n、以及一个或多个闪存电路112a-n。闪存电路112a-n各自包括闪存的一个或多个物理块(例如,302a-p),物理块也可以被指代为块并在下面参考图4进一步讨论。

如图3所示,通道113a将闪存电路112a耦合到总线111,通道113b将闪存电路112b耦合到总线111,通道113c将闪存电路112c耦合到总线111,并且通道113n将闪存电路112n耦合到总线111。然而,在闪存电路112a接收到数据之后,闪存电路112a可能处于忙状态,在该状态期间闪存电路112a可能不会接收额外的读取和/或写入命令。因此,同时处于忙状态的闪存电路112a-n的数量可以限制数据存储设备110。其他通道113b-n可以以类似的方式操作。

为了说明的目的,图3的数据存储设备110被示出为包括四个通道113a-n,并且通道113a-n中的每一个被示出为通信地耦合到闪存电路112a-n。然而,数据存储设备110可以包括任何数量的通道,诸如8、16、32。类似地,通道113a-n中的每一个可以通信地耦合到任何数量(诸如任意数量)的闪存电路112a-n。在一个或多个实施方式中,通道113a-n中的一个或多个可以通信地耦合到不同数目的闪存电路112a-n。

图4示出根据一个或多个实施方式的在示例数据存储设备110中分布在不同通道上的非易失性存储器电路的示例块。然而,并非所有描绘的组件都是必需的,并且一个或多个实施方式可以包括图中未示出的额外的组件。在不脱离本文中阐述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供额外的组件、不同的部组件或更少的组件。

为了说明的目的,图3的数据存储设备110被示出为包括闪存电路112a。闪存电路112a包括闪存的一个或多个物理块202a-d,其也可以被指代为块202a-d。物理块202a-d中的每一个可以包括闪存的一个或多个物理页面402a-d。物理块202a-d中的单独的物理页面402a-d可以是能够写入闪存电路112a-n中的最小单位,并且可以是,例如8-16千字节大小。在一个或多个实施方式中,闪存电路112a可以是16千兆字节大小并且可以包括4252个块,其中每一个块包括256个页面,每个页面存储17760个字节。

本公开的范围内的实施方式能够使用编码一个或多个指令的有形计算机可读存储介质(或一种或多种类型的多个有形计算机可读存储介质)来部分地或全部地实现。有形计算机可读存储介质本质上也能够是非瞬态的。

计算机可读存储介质能够是能够被通用或专用计算设备读取、写入、或以其他方式访问的任何存储介质,通用或专用计算设备包括能够运行指令的任何处理电子设备和/或处理电路。例如,没有限制,计算机可读介质能够包括任何易失性半导体存储器,诸如ram、dram(dynamicrandomaccessmemory,动态ram)、sram(staticrandom-accessmemory,静态ram)、t-ram(thyristorram,可控硅ram)、z-ram和ttram(twintransistorram,双场效应管ram)。计算机可读介质也可以包括诸如rom(read-onlymemory,只读存储器)、prom(programmablerom,可编程rom)、eprom(electricallyprom,电可编程rom)、eeprom(electrically-erasableprogrammableread-onlymemory,电可擦除rom)、nvram(non-volatileram,非易失性ram)、闪存、nvsram(non-volatilesram,非易失性sram)、feram(ferroelectricmemory,铁电存储器)、fetram(ferroelectrictransistorram,铁电晶体管ram)、mram(magnetoresistiveram,磁阻ram)、pram(phasechangememory,相变存储器)、cbram(conductive-bridgingram,导电桥ram)、sonos(siliconoxidenitrideoxidesilicon,硅-氧化物-氮化物-氧化物-硅)、rram(resistanceram,电阻ram)、nram(nano-ram,纳米管ram)、赛道(racetrack)存储器、fjg(floatingjunctiongate,浮动结栅)和千足虫(milipede)存储器的任何非易失性半导体存储器。

此外,计算机可读存储介质能够包括任何非半导体存储器,诸如光盘存储器、磁盘存储器、磁带、其他磁存储设备或、或能够存储一个或多个指令的任何其他介质。在一些实施方式中,有形计算机可读存储介质能够直接耦合到计算设备,而在其他实施方式中,有形计算机可读存储介质能够间接(例如,经由一个或多个有限连接、一个或多个无线连接、或其任何组合)耦合到计算设备。

指令能够直接运行或能够用于开发可运行指令。例如,指令能够被实现为可运行或不可运行的机器代码,或者被实现为能够被编译以产生可运行或不可运行的机器代码的高级语言的指令。此外,指令也能够被实现为或能够包括数据。计算机可运行指令也能够以任何格式来组织,包括例程、子例程、程序、数据结构、对象、模块、应用编程、小编程、函数等。如本领域技术人员所认识的,包括但不限于指令的数量、结构、序列、和组织的细节,能够很大地改变,而不改变基础逻辑、功能、处理和输出。

虽然以上讨论主要涉及运行软件的微处理器或多核处理器,但是一个或多个实施方式由一个或多个集成电路(例如专用集成电路(applicationspecificintegratedcircuit,asic)或现场可编程门阵列(fieldprogrammablegatearrays,fpga))执行。在一个或多个实施方式中,这样的集成电路运行存储在电路本身上的指令。

本领域的技术人员将认识到,可以将本文中描述的各种说明性块、模块、元件、组件、方法、和算法实施为电子硬件、计算机软件、或两者的组合。为了说明硬件和软件的这种可互换性,上面已经根据其功能一般地描述了各种说明性块、模块、元件、组件、方法、和算法。这种功能是被实施为硬件还是软件,取决于特定的应用和对整个系统施加的设计约束。熟练的技术人员可以针对每个特定应用以各种方式实施所描述的功能。各种部件和块可以不同地布置(例如,以不同的顺序布置、或以不同的方式分割),而不脱离本主题技术的范围。

应该理解,所公开的过程中的框的任何特定顺序或层次是示例方法的说明。基于设计偏好,可以理解的是,可以重新布置过程中的块的特定顺序或层次,或者执行所有示出的块。任何块可以同时执行。在一个或多个实施方式中,多任务和并行处理可能是有利的。不仅如此,上述实施方式中的各种系统组件的分离不应该被理解为在所有实施方式中都需要这种分离,并且应该理解,所描述的编程组件和系统一般地能够一起集成在单个软件产品中或者封装到多个软件产品中。

如在本说明书和本申请的任何权利要求中所使用的,术语“基站”、“接收器”、“计算机”、“服务器”、“处理器”和“存储器”都指代电子或其他技术设备。这些术语不包括人或人群。为了说明的目的,术语“显示”或“正显示”意味着在电子设备上显示。

如本文中所使用的,在一系列术语之前的短语“……中的至少一个”,和将任何术语分开的术语“和”或“或”,将列表作为整体修饰,而不是修饰列表中的每个成员(即每个术语)。短语“……中的至少一个”不需要选择列出的每个术语中的至少一个;相反,该短语允许包括任何一个术语中的至少一个、和/或术语的任何组合中的至少一个、和/或每个项目中的至少一个的含义。举例来说,短语“a、b和c中的至少一个”或“a、b或c中的至少一个”各自仅指a、仅指b、或仅指c;a、b和c的任意组合;以及/或a、b和c中的每一个中的至少一个。

谓词“配置为”、“可操作为”、和“编程为”不暗示主体的任何特定的有形或无形的修改,而相反是旨在可互换地使用。在一个或多个实施方式中,被配置为监视和控制操作或组件的处理器也可以意味着被编程为监视和控制操作的处理器,或可操作为监视和控制操作的处理器。类似地,被配置为运行代码的处理器能够被解释为被编程为运行代码或可操作为运行代码的处理器。

诸如一方面、该方面、另一方面、一些方面、一个或多个方面、实施方式、该实施方式、另一实施方式、一些实施方式、一个或多个实施方式、配置、该配置、另一种配置、一些配置、一种或多种配置、主题技术、公开、本公开、其其他变化等都是为了方便,并不暗示涉及这样的短语的公开对于主题技术是必不可少的,或者这样的公开适用于主题技术的所有配置。涉及这样的短语的公开可以适用于所有配置或者一个或多个配置。涉及这样的短语的公开可以提供一个或多个示例。诸如一方面或一些方面的短语可以指一个或多个方面,反之亦然,并且这与其他前述短语类似地应用。

本文中使用词语“示例性”来表示“用作示例、实例或说明”。本文中被描述为“示例性”或“示例”的任何实施方式不必被解释为优于其他实施方式的优选的或有利的实施方式。此外,就在说明书或权利要求书中使用的术语“包括”、“具有”等而言,这样的术语旨在以与术语“包含”类似的方式是包括性的,因为“包含”是在用作权利要求中的过渡词时加以解释。

本领域普通技术人员已知或稍后将为本领域技术人员所知的本公开所描述的各个方面的要素的所有结构和功能等同物通过引用被明确地并入本文中,并且旨在被权利要求。不仅如此,在此公开的任何内容都不旨在致力于公众,不管这些公开是否在权利要求中明确记载。权利要求内容不得根据35u.s.c.§112第六段的规定解释,除非使用短语“用于...的部件”明确叙述该元件,或者在方法权利要求的情况下,使用短语“用于...的步骤”来叙述该元件。

提供之前的描述是为了使本领域的任何技术人员能够实践本文描述的各个方面。这些方面的各种修改对于本领域技术人员而言将是显而易见的,并且这里定义的一般原理可以应用于其他方面。因此,权利要求不旨在限于本文所示的方面,而是要符合与语言权利要求相一致的全部范围,其中以单数形式引用的元件并非意在表示“一个且仅一个”(除非具体如此陈述),而是“一个或多个”。除非另有特别说明,否则术语“一些”是指一个或多个。男性(例如他)的代词包括女性和中性(例如她和她的),反之亦然。标题和副标题(如果有的话)仅为了方便,并不限制主题内容。

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