用以降低功率的大容量存储缓存处理 【技术领域】
本发明所公开的内容涉及用以降低功率的大容量存储缓存,更具体地说涉及移动平台中使用的缓存。
背景技术
移动计算应用已经开始普及。用于这些应用的一些工具例如笔记本或膝上计算机具有硬盘。访问硬盘一般需要转动磁盘,这需要消耗大量功率。诸如读、写和寻道之类的操作比只转动磁盘需要消耗更多的功率。
一种可能的方法是剧烈地将磁盘降速(spin down),其中在一段短时问后停止盘片的转动,在该段时间内不执行任何操作。然而,以这种方式来访问磁盘需要在访问磁盘之前将其重新起速(spin up)。这导致了系统性能中的时间延迟。
传统的方法调节移动系统以获得好的性能,而不是为了降低功耗。例如,多数方法在回写硬盘时都写“通过”(write“through”)任何的存储缓存。通常,这是因为缓存是易失性的,电源断开时会丢失其数据。在许多移动操作中,需要关注数据丢失的问题。
另一种性能调节方法是从硬盘预取大量数据到缓存,以试图预测用户希望最频繁地访问哪些数据。这需要转动磁盘,并可能实际上导致在缓存中存储不会被使用的数据。类似地,许多用于提高性能的技术避免了多媒体应用中常见的缓存串行流。所述串行流可能会污染缓存,占用大量空间而几乎无益于提高性能。
这些方法的示例可以在1984年2月2日授权的美国专利No.4,430,712、1984年8月28日授权的美国专利No.4,468,730、1985年3月5日授权地美国专利No.4,503,501以及1985年8月20日授权的美国专利No.4,536,836中获得。然而,这些方法都没有考虑功率节省问题。
【附图说明】
参考附图,通过阅读本说明书可以最好地理解本发明,其中:
图1示出了根据本发明,具有非易失性缓存系统的平台的一个示例。
图2示出了根据本发明,用于满足存储器操作请求的处理的一个实施例的流程图。
图3示出了根据本发明,用于满足读请求这一存储器操作的处理的一个实施例的流程图。
图4示出了根据本发明,用于满足写请求这一存储器操作的处理的一个实施例的流程图。
【具体实施方式】
图1示出了一个平台,其具有带有非易失性缓存的存储器系统。平台10可以是利用某种形式的永久性存储装置例如硬盘或固定磁盘存储器的任意类型的设备。一般地,这些永久性存储器与用于缓存的存储器技术相比来说要慢。因此,可以使用缓存来提高系统速度并改进性能,而较慢的永久性存储器提供持续性存储功能。
缓存14可以是易失性的,这意味着只要断开电源它就会被擦除;或者是非易失性的,即无论电源状态如何都存储数据。非易失性存储器提供了持续性的数据存储功能,但通常较昂贵并且可能不会大到提供足够的性能增益以平衡其成本因素。在一些应用中,非易失性存储器可以构成带有备用电池的易失性存储器,防止在系统电源断开时丢失数据。
一种制造成本相对低廉的新型非易失性存储器是聚合铁电存储器。一般地,这些存储器包括夹在电极层之间的多层具有铁电性质的聚合材料。这些存储器可以被制造成具有足够的大小以用作为大容量存储缓存。
一些公知的缓存方法被调节来为所述平台提供最好的性能。然而,使用非易失性缓存,可以改变这些方法以为移动平台同时提供好的性能和功率管理。转动硬盘消耗了一些功率,而访问磁盘以进行寻道、读和写操作甚至会消耗更多的功率。移动平台一般使用具有有限的可用功率的电池,因此不必要地转动磁盘所消耗的功率越多,在需要重新充电前用户对该平台的可用时间就越少。如上所述,使磁盘降速在存储器访问中引入了时间延迟,因为磁盘在可被访问前必须重新起速。非易失性存储器使得存储控制器16在处理存储器请求时拥有更多选择,并提供了大量的机会来消除系统中的功耗。
其他类型的系统在硬盘之外还可使用其他类型的主存储器。其他类型的系统可包括但不局限于个人计算机、服务器、工作站、路由器、交换机、网络应用设备、手持计算机、即时消息传递设备、呼叫器、移动电话及多种其他设备。在硬盘之外可能还有具有移动部件的存储器。类似地,非易失性存储器可以具有许多不同的类型。与硬盘类似的主系统存储器在此可被称为存储设备,也可同样地称呼非易失性缓存。然而,为了便于讨论,可以将存储设备称为硬盘,而不是要以任何方式限制本发明的应用。
存储控制器16可以是运行在所述平台的中央处理单元上的驱动器代码,多数情况下以软件、专用硬件控制器例如数字信号处理器或专用集成电路、或者主机处理器或在有能力控制存储器操作的系统中其他地方所使用的控制器的形式实现。该控制器将耦合到非易失性缓存,以处理对存储器系统的输入输出请求。处理存储器请求的方法的一个实施例示出在图2中。
在20接收存储器请求。存储器请求可以是读请求或写请求,如将针对图3和图4所讨论的那样。存储控制器起初将确定缓存22是否可以满足该请求。注意,术语“满足”对于读请求和写请求具有不同的含义。如果在22缓存可以满足该请求,则在24满足该请求,并且存储控制器返回到20以等待另一个存储器请求。
如果在22缓存不能满足请求,则在26访问存储设备。对于硬盘,这将涉及将磁盘起速以使其可被访问。然后在28执行磁盘存储器操作。最后,在30还将执行任何被排队的存储器操作。被排队的存储器操作一般可包括对磁盘的写和从磁盘的预取读操作,下面将更详细地说明。
已说明了使用图1的存储器系统进行存储器操作的一般处理,下面将更详细地说明图2所示的各项处理中的一些处理。一般地,写请求将保留在从缓存满足请求的处理中,因为从缓存满足请求的本质对于写操作来说不同于读操作。写操作还可被称为第一访问请求,而读操作可被称为第二访问请求。
图3示出了根据本发明的读操作的示例。虚线框所包围的处理对应于图2的磁盘存储器操作28。在处理的这一时间,读请求不能在缓存中满足。因此,必须访问磁盘存储器。在32分配缓存中的一个新缓存线(line),在34将数据从磁盘存储器读到该缓存线。在34还满足了读请求。不能从缓存满足读请求的这一情况将被称为“读缺失”。一般地,这是唯一一类将导致磁盘访问的请求。任意其他类型的存储器操作或者将从缓存满足,或者被排队直到读缺失发生。由于读缺失需要访问硬盘,因此该访问周期还将用于协调磁盘存储器和缓存之间的传输,以用于被排队的存储器操作。
一种可能发生的情况是对串行流的一部分的读请求。如上所述,串行流一般不会被当前预取处理所预取。这些预取处理试图抢先确定用户将会期望访问哪些数据并预取该数据,以提供更好的性能。然而,预取大块串行流不会提供相应的性能增益,因此一般地,当前的处理不执行串行数据流的预取。
然而,功率节省技术希望预取大块数据,以避免访问磁盘并因而消耗大量功率。图3的方法在36进行检查,以确定从磁盘读到缓存中的新数据是否是串行流的一部分。一般地,这些串行流是诸如音乐或视频之类的多媒体流应用的一部分。如果该数据是串行流的一部分,则在38,从上次预取中释放(deallocate)缓存中的所述缓存线,这意味着删除这些线中的数据,并在40预取新的缓存线。实际上取得了新的缓存线,预取意味着将数据转移到缓存中而无需来自存储控制器的直接请求。
如果所述数据不是来自串行流,则控制器在42确定是否因为其他原因而需要进行预取。如果需要进行预取,则在40进行预取。注意,串行流的预取将很可能与磁盘存储器操作重合发生。然而,在一些情形下(包括对非串行流的一些预取),预取可仅仅被标识并排队,作为下一次磁盘访问的被排队的存储器操作,或者,排在当前队列的末端以便在图2中的30处发生了其他被排队的存储器操作之后执行。
总之,既然所请求的数据可能已经驻留在缓存中,那么读操作可能从缓存满足。如果不能从缓存满足该请求,则需要进行磁盘存储器操作。相比之下,将确定可从缓存满足写请求。由于缓存较大且是非易失性的,因此写请求一般将在缓存本地执行,而对存储器操作进行排队,以在缓存和磁盘之间进行数据同步。写请求的处理的一个实施例示出在图4中。
再次参考图2以及在图4中重复的部分,一般的处理确定当前请求是否可在缓存中满足。对于多数写请求,答案将被认为是肯定的。包含在图4的虚线框中的处理对应于图2中在24从缓存满足请求的处理。在50,存储控制器确定是否已存在分配给写请求的线。当对特定应用程序周期性地进行写时一般会发生这种情形。例如,可能为字处理应用程序周期性地生成写请求以更新文档的文本。通常,在该应用程序的第一个写请求发生后,所述的线被分配给该特定的写请求。该写请求的数据可能会改变,但缓存中相同的线或线集合被分配给该请求。
如果在50向所述写请求分配了一个或多个线,则在58用新数据覆写所分配的缓存线。如果缓存中没有分配给该请求的线,则在52分配新的线,并在54将数据写入所分配的线。一般地,这一“新”存储器请求在磁盘存储器中不具有对应的数据。然后在56对用来将此新分配并写入的数据同步的磁盘存储器操作进行排队,以在下一次磁盘访问发生时执行。也可以将它推迟到下一次将磁盘起速之后。由于该存储器是非易失性的,因此磁盘不需要立刻更新。
如前所述,这些被排队的存储器操作可包括新的缓存写以及数据的预取。存储控制器可周期性地检查存储器操作队列,以消除那些或者是不必要的或者已经变为不必要的操作。
例如,可能会对同一个写请求而排队了若干个写请求,每个写请求具有不同的数据。使用上述示例,可对文档进行周期性的备份以防止系统故障。存储控制器不需要执行这些请求中的比较旧的请求,因为它本质上是要写几乎立即会被新数据覆盖的数据。然后可从队列中去除冗余条目。
对读操作也可以进行类似的队列剔除。以前认为是必需的预取可能由于用户当前对平台的操作的变化而变为不必要或不是必需的。例如,可能基于用户观看一个数字视频文件的行为而排队了对串行数据流的另一大块数据的预取。如果用户关闭了正在访问该文件的应用程序,则对该文件的串行流的预取就变为不必要。
按照这种方式,只有读缺失才会使得磁盘被访问。所有其他的存储器操作都可从缓存满足,并且,如果必要的话,可以对所述操作进行排队,以在下一次磁盘访问时在缓存和磁盘之间进行同步。这消除了与磁盘访问相关联的功耗,无论这种功耗是通过像当前所做的那样转动磁盘,还是在将来使用其他可用的技术而产生的。
由于写操作或第二存储器访问请求可通过写缓存来满足,因此可首先来服务或满足它们。读操作可能需要访问存储设备,因此可以在第二访问请求之后来服务。
在旋转式存储设备例如硬盘的情形下,这些操作中的大多数在存储设备被降速时开始或结束。本发明的应用的一个结果是节省了功率,而转动旋转式存储设备消耗了大量可用功率。因此,在需要将硬盘起速的存储访问请求发生之后,很可能以剧烈的方式来降低硬盘的转速,以最大限度地节约功率。
这样,虽然到此为止已描述了用于以低功耗进行大容量存储缓存的方法和装置的具体实施例,但是不应将这种具体的参考看成是对本发明的范围的限制,除非在所附的权利要求中有具体的说明。