用于基于主机缓冲器的估计填充级别重新分配存储设备资源的存储设备和方法
【专利说明】用于基于主机缓冲器的估计填充级别重新分配存储设备资源的存储设备和方法
[0001]相关申请的交叉引用
[0002]本申请要求于2012年12月31日提交的美国临时申请第61/747,442号的权益,通过引用将该申请合并于此。
【背景技术】
[0003]存储设备可以用于存储流式(streamed)数据。流式数据的源可以是主机设备本身(例如,在用户拍摄视频时主机设备的视频和/或音频传感器)或者可以在主机设备外部(例如来自与主机设备网络通信的服务器)。因为数据是流式的,所以存储设备应该具有以数据正被传递到存储设备的速率来接收和存储数据的能力。然而,因为存储设备可能需要不时将其资源转用于存储器管理和其他功能,主机设备可以使用抖动缓冲器来暂时保持数据直到存储设备可以恢复其对到来的数据的完全容纳。为了确保流式数据将不溢出缓冲器,可以将缓冲器设计为相对大,并且设计主机设备和存储设备之间的信道使得其速率显著快于主机设备向存储设备发送流式数据的速率。
【发明内容】
[0004]本发明的实施例由权利要求限定,并且此部分不应被当作是对那些权利要求的限制。
[0005]通过介绍,以下实施例涉及用于基于主机缓冲器的估计填充级别重新分配存储设备资源的存储设备和方法。在一个实施例中,存储设备与主机设备通信,该主机设备具有用于在数据被发送到存储设备以用于存储之前存储该数据的缓冲器。该存储设备从主机设备接收主机设备在该缓冲器中存储数据的速率,并跟踪从主机设备接收的数据量。存储设备使用该速率、经过的时间以及在该经过的时间期间从主机设备接收的数据量来估计在该经过的时间时缓冲器的填充级别。如果缓冲器的估计填充级别在阈值以上,则存储设备增加从主机设备接收数据的速率。
[0006]其他实施例是可能的,且每个实施例可以单独使用或者组合在一起使用。因而,现在将参考附图描述各个实施例。
【附图说明】
[0007]图1是实施例的示例主机设备和存储设备的框图。
[0008]图2是实施例的具有视频应用的示例主机设备以及存储设备的框图。
[0009]图3是基于主机缓冲器的估计填充级别重新分配存储设备资源的实施例的方法的流程图。
[0010]图4是具有多个流式源的实施例的框图。
【具体实施方式】
[0011]企M
[0012]如上所述,可以在主机设备中使用抖动缓冲器以暂时保持流式数据直到存储设备具有接受和存储该数据的资源。为了确保该流式数据将不会溢出缓冲器,可以将该该缓冲器设计为相对大,并且可以设计主机设备和存储设备之间的信道使得其速率显著快于主机设备向存储设备发送流式数据的速率。然而,这是一个相对昂贵的解决方案,因为许多时候存储设备具有充足的资源,并且这样的大的抖动缓冲器不是必需的。以下实施例提供了避免此昂贵性的针对此问题的不同方式。在转向这些以及其他实施例之前,以下部分提供了对可以与这些实施例一起使用的示例的主机和存储设备的讨论。当然,这些仅仅是示例,并且可以使用其他适当类型的主机和存储设备。
_3] 示例的主机和存储设备
[0014]现在转向附图,图1是与实施例的存储设备100通信的主机设备50的框图。如在此使用的,短语“与……通信”可以意指直接与……通信或者经过一个或多个组件间接与……通信,该一个或多个组件可能有或者没有在此示出或描述。例如,主机设备50和存储设备100可以每个具有允许存储设备100可移除地连接到主机设备50的配合物理连接器。主机设备50可以采取任何适当的形式,比如但不限于移动电话、数字媒体播放器、游戏设备、个人数字助理(PDA)、个人计算机(PC)、信息站(k1sk)、机顶盒、TV系统、书阅读器或者其任意组合。存储设备100可以采取任何适当的形式,比如但不限于诸如安全数字(SD)存储卡、微SD存储卡、紧凑快闪(CF)存储卡或者通用串行总线(USB)设备的消费者固态存储设备。在一个实施例中,存储设备100采取SanDisk公司的嵌入了 iNANDTM/eSD/eMMC的快闪驱动器。
[0015]如图1所示,存储设备100包括控制器110和存储器120。控制器110包括用于与存储器120接口的存储器接口 111和用于与主机50接口的主机接口 112。在使用时,控制器110还包括中央处理单元(CPU) 113、可选的操作以提供加密和/或解码操作的硬件密码引擎114、读存取存储器(RAM) 115、可以存储用于存储设备100的基本操作的固件的只读存储器(ROM) 116、以及可以存储用于加密/解密操作的设备特定密钥的非易失性存储器(NVM) 117ο控制器110可以以任何适当的方式实现。例如,控制器110可以采取微处理器或处理器以及计算机可读介质的形式,该计算机可读介质存储可由例如(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入的微控制器执行的计算机可读程序代码(例如软件或固件)。可以从Marvell或者SandForce获得适当的控制器。控制器110可以用于实现流程图中示出以及以下描述的方法。
[0016]存储器120可以采取任何适当的形式。在一个实施例中,存储器120采取固态(例如快闪)存储器的形式并且可以是一次可编程的、几次可编程的或者多次可编程的。存储器120还可以使用单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或现在已知的或者以后开发的其他存储器技术。
[0017]存储器120可以包括单个分区或者多个分区。在一个具体实施例中,存储器120包括由主机50上的文件系统管理的公共存储器区125以及由控制器110内部地管理的私有存储器区136。私有存储器区136可以存储诸如但不限于内容加密密钥(CEK)和固件(FW)代码的数据。公共存储器区125可以存储用户数据和其他数据。公共存储器区125和私有存储器区136可以是相同存储器单元的不同分区或者可以是不同的存储器单元。私有存储器区136是“私有的”(或“隐藏的”),因为其由控制器110(而不由主机的控制器160)内部地管理。再次,这仅仅是一个示例实现方式,并且可以使用存储器120的其他配置。
[0018]现在转向主机50,主机50包括具有用于与存储设备100接口的存储设备接口 161的控制器160。控制器160还包括中央处理单元(CPU) 163、可选的操作以提供加密和/或解密操作的密码引擎164、读访问存储器(RAM) 165、只读存储器(ROM) 166和储存器172。存储设备100和主机50经由存储设备接口 161和主机接口 112彼此通信。主机50可以包含其他组件(例如,视频和/或音频传感器、网络连接器、显示设备、扬声器、头戴受话器、视频输出连接等等),它们未在图1中示出以简化附图。当然,在实践中,主机设备50和存储设备100可以具有与图中所示的那些相比更少或者不同的组件。
[0019]在一些环境中,主机设备50可操作以呈现在存储设备100中存储的内容。如在此使用的,“内容”可以采取任何适当的形式,包括但不限于歌曲、电影、游戏、应用(“app”)、游戏安装程序等等。取决于内容的类型,“呈现”可以意味着播放(例如当内容是歌曲或电影时)、译码(例如当内容是游戏安装程序时)或者需要“享受”内容的任何动作。在一些实施例中,主机设备50包含呈现内容所需的软件(例如媒体播放器)、而在一些其他的实施例中,这样的软件由存储器设备100或者另一实体提供给主机设备50。
[0020]与基于主机缓冲器的估计填充级别重新分配存储设备资源有关的实施例
[0021]返回附图,图2是可以如何使用主机和存储设备50、100来基于主机缓冲器的估计填充级别重新分配存储设备资源的例示。在图2所示的例子中,主机设备50包含视频和音频传感器200、210 (例如相机或CXD设备以及麦克风),它们连接到主机设备的控制器160以提供流式数据用于存储在存储设备100中(如以下将描述的,流式数据也可以来自于其他源)。在此例子中,控制器160实现包括Mpg和音频编码模块230、240(它们可以由控制器的CPU163运行计算机可读程序代码(例如存储在ROM 166中的固件)而实现)以及抖动缓冲器250 (其可以是控制器的RAM 165的部分或者主机设备50中的其他储存器172的部分)的视频应用220。控制器160还(通过计算机可读程序代码)实现操作系统260,其包含文件系统270和存储设备驱动器280。
[0022]在操作中,由视频传感器200检测视频信号,并且由音频传感器210检测音频信号。当视频和音频传感器200、210活动时(即,当用户正拍摄影片时),视频和音频传感器200,210典型地以恒定速率生成原始数据位。这些原始数据位被
发送到Mpg和音频编码模块230、240用于处理以生成编码的数据。编码的数据可以在其速率方面变化,因为速率可以作为原始数据位的压缩率的函数而改变。然而,变化通常不是很大。为了简化以及例示的目的,此例子将假设编码的数据具有IMB/秒的恒定速率。这样,存储设备100应该能够达到该速率并且以稍微高于IMB/秒的速率写到其存储器120。然而,即使存储设备100能够在任何给定时间达到这些速率,也存在存储设备的资源可能被转用的时间,导致较低速率。因此,控制器110需要在考虑到其需要与存储来自Mpg编码器230的编码的数据流并行地进行的其他任务的同时管理其资源预算。作为另一例子,控制器110可能负责存储多个数据流(如以下将更详细描述的)并且可能需要对其资源预算进行计划以达到所有相关联的数据源的要求。作为另一例子,控制器110可能需要应对并分配资源用于存储器管理处理,比如垃圾收集。在垃圾收集期间,控制器110可能需要减少甚至暂时停止从主机设备50向存储器120的写操作以便找到将来不将被访问的存储在存储器120中的数据并回收该数据使用的存储器空间。作为另一例子,控制器110可能需要应对存储与编码的数据相关联的元数据。元数据可能源自于主机的文件系统270或者源自于另一源并且可能导致存储设备100经历的数据速率的另外的变化。
[0023]为了容纳向存储设备100写入的瞬时速率的变化,抖动缓冲器(或者更广泛地,缓冲器)250可以用于存储Mpg编码器230的输出。(如以上所述,在此实施例中的抖动缓冲器250可以是RAM165的部分,其存储单元172的部分或者主机设备50的某个其他部分)。抖动缓冲器250被用于通过存储数据直到存储设备100准备好存储它来解决存储设备100的存储速率的不期望的偏离(例如由于上述的因素)。如上所述,克服这些问题的一种方式是使用大的抖动缓冲器并且将视频应用单元和存储设备100之间的信道的速率设置为显著快于由视频应用产生编码的数据的速率。然而,这是一种昂贵的解决方案。以下实施例提供了用于以有限的存储器资源实现期望的最小速率的替换方式(例如在以上例子中,以每秒IMB并且还以每半秒至少0.5MB),并且将结合图3例示,图3是可以由存储设备的控制器110实现(例如通过执行存储了算法的计算机可读程序代码)的方法的流程图。通常,此方法可以由存储设备100使用来估计在给定时间的抖动缓冲器填充级别并且采取适当的步骤来重新分配存储设备资源。
[0024]如图3所示,在此实施例中,存储设备100从主机设备50接收主机设备50在缓冲器250中存储数据的平均速率(动作300)。在图2所示的例子中,这将是数据从Mpg编码模块230进入抖动缓冲器250的平均速率,尽管可以使用除了平均速率之外的其他速率(例如,中间速率、瞬时速率等)。接下来,存储设备100跟踪从主机设备50接受的数据量(动作310)。存储设备100可以按照数据的源来保持所有接收的数据位的记录。以此方式,可以为其源是抖动缓冲器250的数据以及例如源自于文件系统270的数据定义分别的记录,因为这样的数据将不对抖动缓冲器250的填充级别具有影响,因为其不被存储在抖动缓冲器250中。
[0025]然后,存储设备100使用该平均速率、经过的时间以及在该经过的时间期间从主机设备50接收的数据量来估计在该经过的时间时缓冲器250的填充级别(动作320)。例如,可以使用以下等式来估计在经过的时间时抖动缓冲器250的填充级别:
[0026]J(elpsedTime) = avgRate.elapsedTime-receivedData,
[0027]其从平均速率和经过的时间的乘积中减去从主机设备50接收到的数据位的总数量。此等式可以周期地或者在抖动缓冲器250为空时重设。(当主机设备50上的视频应用220拒绝发送数据的请求时,存储设备100可以断定抖动缓冲器为空。)此等式还可以在J的估计为负时重设。在数学语言中:
[0028]J = max{avgRate.elapsedTime-receivedData,0}
[0029]优选地,当J被重设到O时,elapsedTime (经过的时间)参数以及receivedData (接收到的数据)参数也被重设到O。将J重设到O优选可以仅在抖动缓冲器250确实为空时进行;否则,抖动缓冲器250的负载级别可以累积,同时估计将保持为低,并且抖动缓冲器250可能最终溢出而存储设备100并不知道。在一些实施例中,elapsedTime和receivedData的值可以被重设到0,而在该点时估计的状态被保存到另外的参数中。对抖动缓冲器估计器的稍后的更新可以将此纳入考虑,并且对J的更新可以采取以下形式:
[0030]J(elpsedTime) = avgRate.elapsedTime-receivedData+prcvJ,
[0031]其中elapsedTime和receivedData从最后的重设点计算,prcvj是在重设点时抖动缓冲器估计器的值。
[0032]如果缓冲器250的估计填充级别在阈值以上,则存储设备100增加从主机设备50接收数据的速率(动作330)。存储设备100可以通过重新分配诸如存储器的可用块的存储设备资源来增加从主机设备50接收数据的速率。例如,存储设备100可以减少诸如垃圾收集的其他任务,并且通过以比平均应用速率更高的速率从主机设备50获取数据、因此改进缓冲器状态来专注于抖动缓冲器250。在闪存中,块可以通过字线或者甚至通过页被编程,但是仅按块擦除。这意味着当数据被更新时(例如,给定的逻辑地址(LBA)被主机设备50盖写时),更新的数据被编程到新的字线或者新的页中,中可能存在与原始数据不同的块中。更新逻辑地址和物理地址之间的映射,并且使旧的物理地址无效。如果此处理继续,则闪存将立刻困住,因为来自主机设备50的每个新的写命令需要新的物理位置(字线或页)。因此,需要释放完全或者部分被无效的存储器块,并且释放块的处理被称为垃圾收集。在此处理期间,来自部分被无效的块的有效数据被复制到新的块,并且旧的块被擦除。例如,来自每个在字线的一半上包含被无效的数据的两个块的有效数据可以被复制到一个新块中用于生成一个新的空闲块。垃圾收集的操作也需要空闲块,其中来自要被擦除的块的数据被复制到这些块中。在为了高抖动缓冲器性能而设计的系统中,当抖动缓冲器150级别被估计为高时,存储设备100可以分配更多的空闲块用于写入来自抖动缓冲器250的数据并且减少或者抑制进行垃圾收集。将被分配用于垃圾收集的块的数量可以减少,或者在某些情况下,所有空闲块可以被分配到抖动缓冲器250,并且垃圾收集的处理可以停止直到抖动缓冲器250的级别变得较低,或者直到耗尽了空闲块并且需要进行垃圾收集。抑制进行垃圾收集可能增加从抖动缓冲器250读取的瞬时速率,因为系统进行更少的读和写操作。而且,增加数量的块被分配用于读取抖动缓冲器250允许从抖动缓冲器250读取更大量的数据。
[0033]通常,在为了抖动缓冲器性能而设计的系统中,预定义数量的块将被分配给抖动缓冲器性能。当系统中空闲块的数量高于该预定义的数量时,此数量的空闲块将被分配用于抖动缓冲器性能并且将不用于垃圾收集,使得如果发生数据突发,空闲块将能够吸收该突发达一些时间。为了抖动缓冲器性能而设计的系统所采取的另一手段是按小的量并且在相对小数量的编程操作之后进行垃圾收集操作。可以在每个垃圾收集操作之后估计抖动缓冲器级别,并且如果抖动缓冲器级别变得太高,则可以将垃圾收集操作暂停达预定义的量,并且可以从缓冲器读取数据的突发。因此,可以规律地监视抖动缓冲器250以避免溢出,使得总是有足够的空闲块来吸收突发。不是为抖动缓冲器操作而设计的系统可以选择对于大数量的块并且仅在更大数量的写操作之后实现垃圾收集。
[0034]存在与此实施例相关的几个优点。例如,利用这些实施例,主机设备50可以在实现给定的系统性能规范时使用比先前使用的更小的抖动缓冲器250以及更低带宽的信道。而且,具有给定的的缓冲器大小和给定信道宽度的主机设备可以实现比现有系统更好的性能。此外,这些实施例可以用于使用给定量的存储设备资源支持更大数量的数据流。
[0035]存在可以用在例如允许重叠的命令的存储器系统(例如SATA)中的许多替换,存储设备100可以通过选择为与给定数据流相关联的命令给出更高优先级来管理存储设备资源。在这样的系统中,当与某个流相关联的抖动缓冲器级别高于期望的级别时,存储设备100可以决定向与该流相关联的写命令给出高优先级并且向其他流给出低优先级,因此降低给定流的抖动缓冲器级别。在需要按顺序执行命令的存储器系统中,存储设备100可以通过向垃圾收集处理分配和解除分配资源来调整抖动缓冲器级别,并且并行地,可以降低或增加分配给主机设备50的资源。存储设备100还可以接受来自其他源的数据。例如,图4示出了来自两个视频应用和一个
网络应用的流,其中视频应用具有其自己的视频编码模块400、410和抖动缓冲器430、440,并且其中网络应用具有下载的内容430和抖动缓冲器450。在此例子中,存在具有文件系统470和驱动器480的单个操作系统460,其向存储设备100提供三个流。存储设备100中的控制器110可以负责存储多个流的数据并且可能需要对其资源预算进行计划以达到所有相关联的数据源的要求。
[0036]作为另一替换,以下策略中的一个或多个可以与这些实施例一起使用。首先,分配给主机设备50上的特定应用的存储设备资源可以是该应用的抖动缓冲器的估计填充级别的线性函数。第二,分配给特定应用的存储设备资源可以是该应用的抖动缓冲器的估计填充级别的单调非线性函数,使得在每个点时,分配足够的资源以防止该应用的抖动缓冲器溢出。第三,可以使用滞后(hysteresis)策略,其中定义至少两个阈值,使得当抖动缓冲器的估计落到第一阈值以下时,资源被分配给垃圾收集;并且当抖动缓冲器的估计在第二阈值以上时,资源从垃圾收集解除分配用于从抖动缓冲器接收数据并且降低其负载。第四,可以使用配给(rat1ning)策略,其中在写入一定(第一预定义)量的数据之后,一定量的时间和资源被分配用于垃圾收集。存储设备100然后可以选择在资源的每次分配之后进行垃圾收集。可替换地,存储设备100可以累积多个垃圾收集资源分配并且仅在已经分配了一定量的资源之后进行垃圾收集。此策略可以允许垃圾收集在更大量数据中工作,因此允许对垃圾收集处理的更有效的内部管理。
[0037]结论
[0038]意图将以上描述理解为对本发明可以采取的所选形式的例示而非对本发明的限制。仅仅以下权利要求、包括所有等效物意图限定要求保护的本发明的范围。最后,应该注意,在此所述的任何优选实施例的任何方面可以单独使用或者彼此组合使用。
【主权项】
1.一种存储设备,包括: 存储器; 接口,通过该接口与主机设备通信,其中该主机设备具有用于在数据被发送到存储设备以用于存储在该存储器中之前存储该数据的缓冲器;以及控制器,与该存储器和该接口通信,其中该控制器配置为: 从该主机设备接收该主机设备在该缓冲器中存储数据的速率; 跟踪从该主机设备接收了的数据量; 使用该速率、经过的时间以及在该经过的时间期间从该主机设备接收的数据量来估计该缓冲器的填充级别;以及 如果该缓冲器的估计的填充级别在阈值以上,则增加从该主机设备接收数据的速率。2.如权利要求1所述的存储设备,其中该控制器将接收数据的速率增加到比主机设备在缓冲器中存储数据的速率更高的速率。3.如权利要求1所述的存储设备,其中该控制器通过减少分配给垃圾收集操作的存储设备资源来增加从主机设备接收数据的速率。4.如权利要求1所述的存储设备,其中该控制器通过减少从其他源接收数据的速率来增加从主机设备接收数据的速率。5.如权利要求1所述的存储设备,其中该控制器通过为与存储在该缓冲器中的数据相关联的打包的命令中的命令给出更高优先级来增加从主机设备接收数据的速率。6.如权利要求1所述的存储设备,其中该控制器通过重新分配资源作为该缓冲器的估计的可用容量的线性函数来增加接收数据的速率。7.如权利要求1所述的存储设备,其中该控制器通过重新分配资源作为该缓冲器的估计的可用容量的非线性函数以便将填充级别降低到阈值以下、来增加接收数据的速率。8.如权利要求1所述的存储设备,其中该控制器通过根据滞后函数重新分配资源来增加接收数据的速率。9.如权利要求1所述的存储设备,其中所述控制器通过根据配给策略重新分配资源来增加接收数据的速率。10.如权利要求1所述的存储设备,其中所述控制器还被配置为重设该缓冲器的填充级别的估计。11.如权利要求10所述的存储设备,其中所述估计被周期地重设。12.如权利要求10所述的存储设备,其中当该控制器断定该缓冲器为空时重设该估i+o13.如权利要求12所述的存储设备,其中当该主机设备拒绝该存储设备的对于来自缓冲器的另外的数据的请求时,该控制器断定该缓冲器为空。14.如权利要求12所述的存储设备,其中当该估计是负值时,该控制器断定该缓冲器为空。15.如权利要求10所述的存储设备,其中通过将所述估计、经过的时间和跟踪的数据量设置为零来重设该缓冲器的填充级别的估计。16.如权利要求10所述的存储设备,其中通过将该经过的时间和跟踪的数据量设置为零但是保留该估计作为另外的参数用于将来的估计来重设该缓冲器的填充级别的估计。17.如权利要求1所述的存储设备,其中该主机设备向该存储设备发送未被存储在该缓冲器中的另外的数据,以及其中该控制器在其对缓冲器的填充级别的估计中排除该另外的数据。18.如权利要求1所述的存储设备,其中所述主机设备向该存储设备发送多个数据流,其中每个数据流具有其自己的相应缓冲器,以及其中所述控制器跟踪从每个流接收的数据量。19.如权利要求1所述的存储设备,其中所述控制器跟踪从主机设备中的不同源接收的数据量。20.一种用于基于主机缓冲器的估计填充级别重新分配存储设备资源的方法,该方法包括: 在与具有缓冲器的主机设备通信的存储设备中进行以下步骤,其中,该缓冲器用于在数据被发送到存储设备以用于存储在该存储设备的存储器中之前存储该数据: 从该主机设备接收该主机设备在该缓冲器中存储数据的速率; 跟踪从该主机设备接收了的数据量; 使用该速率、经过的时间以及在该经过的时间期间从该主机设备接收的数据量来估计该缓冲器的填充级别;以及 如果该缓冲器的估计填充级别在阈值以上,则增加从该主机设备接收数据的速率。21.如权利要求20所述的方法,其中该控制器将接收数据的速率增加到比主机设备在缓冲器中存储数据的速率更高的速率。22.如权利要求20所述的方法,其中该控制器通过减少分配给垃圾收集操作的存储设备资源来增加从主机设备接收数据的速率。23.如权利要求20所述的方法,其中该控制器通过减少从其他源接收数据的速率来增加从主机设备接收数据的速率。24.如权利要求20所述的方法,其中该控制器通过为与存储在该缓冲器中的数据相关联的打包的命令中的命令给出更高优先级来增加从主机设备接收数据的速率。25.如权利要求20所述的方法,其中该控制器通过重新分配资源作为该缓冲器的估计的可用容量的线性函数来增加接收数据的速率。26.如权利要求20所述的方法,其中该控制器通过重新分配资源作为该缓冲器的估计的可用容量的非线性函数来增加接收数据的速率,以便将填充级别降低到阈值以下。27.如权利要求20所述的方法,其中该控制器通过根据滞后函数重新分配资源来增加接收数据的速率。28.如权利要求20所述的方法,其中所述控制器通过根据配给策略重新分配资源来增加接收数据的速率。29.如权利要求20所述的方法,其中所述控制器还被配置为重设该缓冲器的填充级别的估计。30.如权利要求29所述的方法,其中所述估计被周期地重设。31.如权利要求29所述的方法,其中当该控制器断定该缓冲器为空时重设该估计。32.如权利要求31所述的方法,其中当该主机设备拒绝该存储设备的对于来自缓冲器的另外的数据的请求时,该控制器断定该缓冲器为空。33.如权利要求31所述的方法,其中当该估计是负值时,该控制器断定该缓冲器为空。34.如权利要求29所述的方法,其中通过将所述估计、经过的时间和跟踪的数据量设置为零来重设该缓冲器的填充级别的估计。35.如权利要求29所述的方法,其中通过将该经过的时间和跟踪的数据量设置为零但是保留该估计作为另外的参数用于将来的估计来重设该缓冲器的填充级别的估计。36.如权利要求20所述的方法,其中该主机设备向该存储设备发送未被存储在该缓冲器中的另外的数据,以及其中该控制器在其对缓冲器的填充级别的估计时排除该另外的数据。37.如权利要求20所述的方法,其中所述主机设备向该存储设备发送多个数据流,其中每个数据流具有其自己的相应缓冲器,以及其中所述控制器跟踪从每个流接收的数据量。38.如权利要求20所述的方法,其中所述控制器跟踪从主机设备中的不同源接收的数据量。
【专利摘要】公开了用于基于主机缓冲器的估计填充级别重新分配存储设备资源的存储设备和方法。在一个实施例中,存储设备从主机设备接收该主机设备在其缓冲器中存储数据的速率并跟踪从该主机设备接收了的数据量。该存储设备使用该速率、经过的时间以及在该经过的时间期间从该主机设备接收的数据量来估计该缓冲器的填充级别。如果该缓冲器的估计的填充级别在阈值以上,则该存储设备增加从该主机设备接收数据的速率。
【IPC分类】G06F3/06
【公开号】CN104903841
【申请号】CN201380068461
【发明人】A.沙哈拉巴尼, A.马库, H.奥欣斯基
【申请人】桑迪士克科技股份有限公司
【公开日】2015年9月9日
【申请日】2013年11月26日
【公告号】US20140189263, WO2014105352A1