具有电力恢复后重新加载能力的高速缓存的制作方法

文档序号:6360116阅读:136来源:国知局
专利名称:具有电力恢复后重新加载能力的高速缓存的制作方法
技术领域
本发明涉及计算机高速缓冲存储器,具体涉及用于在将电力从高速缓冲存储器中移除并且接着对高速缓冲存储器恢复电力后重新加载高速缓冲存储器的方法和装置。
背景技术
在计算机中,高速缓存是与保存近期访问的数据的处理器的主存储器分开的小型快速存储器。使用高速缓存加快了对相同数据的后续请求的访问时间。当在正被搜索的高速缓存中找到请求数据或存储器位置时,发生“高速缓存命中”。当未找到请求数据或存储器位置时,应当认为“高速缓存缺失”,并且在高速缓存中该数据可能被分配新条目。如果高速缓存已满,那么许多策略之一可以用于排除现有条目。高速缓存可以包括一个或多个标签存储器和一个或多个数据存储器。标签存储器包括标签。一般地,标签可以用于唯一地识别经高速缓存的数据片并且判定经高速缓存的数据是否可用来满足进入的请求。在一种实施方式中,标签可以包括经高速缓存的数据的主存储器位置的索引。在另一种实施方式中,在转译后援缓冲器(TLB)型高速缓存中,标签可能不会直接为主存储器位置编索引,但是可能由虚拟地址和与特定的主存储器地址没有直接关系的其它基于请求的信息组成。数据存储器包括来自主存储器的数据的副本。数据存储器还可以包括由处理器生成且尚未写出到主存储器(例如,具有回写高速缓存)的数据。这类数据必须在可将电力从高速缓存中移除前写出到存储器。为了减小计算机中的电力消耗,组件(包括内部集成组件)可以在闲置周期期间置于低电力状态或完全断电。对内置有易失性存储元件的高速缓冲存储器断电会引起状态丧失。一旦电力恢复,正常的闻速缓存访问将无法命中,因为闻速缓存是空的,从而需要从较高延时(和可能较低带宽)的永久后备存储器提取数据,从而导致较低性能。这些访问逐渐重新填入高速缓存,且如果后续访问开始命中这些重新填入的条目,那么性能逐渐恢复到其名义水平。某些现有技术允许高速缓存对其内容的一小部分(例如,标签存储器和数据存储器两者)同时断电。在一项技术中,可通过将电力提供给高速缓存的仅一部分而减小电力消耗,同时维持状态。该特定解决方案在维持某些标签存储器和对应数据存储器的状态时消耗电力。其它技术减小高速缓存的时钟频率以降低动态电力消耗。静态电力消耗可以通过对高速缓存的晶体管的操作参数的对应调整(电压减小、偏压变化等)而减小。现有技术导致在电力恢复后牺牲性能以减小电力消耗和牺牲最佳电力消耗以将电力保留在数据存储器的子集中以避免电力恢复后性能下降之间的选择。因此,存在对高速缓存大部分或全部断电而不会在高速缓存通电后牺牲性能的需要。

发明内容
一种用于重新填充高速缓存的方法开始于将所述高速缓存的内容的至少一部分存储在与所述高速缓存分开的位置中。将电力从所述高速缓存中移除并且一段时间之后电力恢复。在已对所述高速缓存恢复电力后,用与所述高速缓存分开存储的所述高速缓存的所述内容的所述部分重新填充所述高速缓存。一种用于重新填充高速缓存的方法开始于将电力从所述高速缓存中移除并且一段时间之后对所述高速缓存恢复电力。用信号通知高速缓存客户端已对所述高速缓存恢复电力并且所述高速缓存已丧失状态。所述客户端将预取命令发放到所述高速缓存,所述高速缓存使用所述预取命令将数据加载到所述高速缓存中。一种用于重新填充高速缓存的装置包括高速缓存、存储器和存储器控制器。所述高速缓存被配置来存储数据和与所述数据相关的标签。所述存储器与所述高速缓存分开定位并且被配置来在将电力从所述高速缓存中移除时存储来自所述高速缓存的标签。所述存储器控制器被配置来在对所述高速缓存恢复电力时将标签从所述高速缓存写入到所述存储器。一种计算机可读存储介质存储供通用计算机执行以重新填充高速缓存的指令集,所述指令集包括存储代码段、移除代码段、恢复代码段和重新填充代码段。所述存储代码段用于将所述高速缓存的内容的至少一部分存储在与所述高速缓存分开的位置中。所述移除代码段用于将电力从所述高速缓存中移除。所述恢复代码段用于对所述高速缓存恢复电力。所述重新填充代码段用于用与所述高速缓存分开存储的所述高速缓存的所述内容的所述部分重新填充所述高速缓存。


可以从举例所给定的下文描述中认知到并且结合附图对本发明有一个更详细的了解。图I是用于在电力恢复后重新加载高速缓存的存储器系统的第一实施方案的方框图; 图2是用于在电力恢复后重新加载高速缓存的第一种方法的流程图;图3是用于在电力恢复后重新加载高速缓存的存储器系统的第二实施方案的方框图;图4是用于在电力恢复后重新加载高速缓存的第二种方法的流程图;图5是用于在电力恢复后重新加载高速缓存的存储器系统的第三实施方案的方框图;图6是用于在电力恢复后重新加载高速缓存的第三种方法的流程图;图7是用于在电力恢复后重新加载高速缓存的存储器系统的第四实施方案的方框图;图8是用于在电力恢复后重新加载高速缓存的第四种方法的流程图;图9是用于在电力恢复后重新加载高速缓存的存储器系统的第五实施方案的方框图10是用于在电力恢复后重新加载高速缓存的第五种方法的流程图;图11是用于在电力恢复后重 新加载高速缓存的存储器系统的第六实施方案的方框图;图12是用于在电力恢复后重新加载高速缓存的第六种方法的流程图;图13是用于在电力恢复后重新加载高速缓存的存储器系统的第七实施方案的方框图;图14是用于在电力恢复后重新加载高速缓存的第七种方法的流程图;图15是用于在电力恢复后重新加载高速缓存的存储器系统的第八实施方案的方框图;和图16是用于在电力恢复后重新加载高速缓存的第八种方法的流程图。
具体实施例方式下文描述对普通高速缓存的增强。通常,当高速缓存断电时,所述高速缓存需要花特定量的时间来重新填入数据,且因此初始高速缓存访问慢于在所述高速缓存断电前。在电力恢复后,空的高速缓存可能随着进入的请求错过所述高速缓存而逐渐被重新填入,其导致新数据填入所述高速缓存。重新填入过程可能受所述进入的请求的速率限制,所述速率可能由于高速缓存缺失导致的较旧请求处理缓慢而较慢。数据可以存储在会断电的高速缓存外面,以便在电力恢复后并且在用户再次从所述高速缓存请求该数据前可以对所述高速缓存恢复相同数据。因此,在对高速缓存通电后,性能退化减轻,因为可以在用户对所述高速缓存请求数据片前恢复所述数据。重新填入过程可以与正常处理器请求重叠并且不必阻止所述正常处理器请求直到所述重新填入过程完成为止。电源门控可以用来减小电力消耗并且低性能周期可以通过在电力恢复后不久将内容加载到高速缓存中而最小化。高速缓存还可以是完全电源门控的,从而消除所有动态电力并且减小通过电源门泄露的静态电力。在其它实施方案中,所有数据存储器可以断电,从而进一步最小化电力消耗。一种机制可以添加到高速缓存以生成,然后保存、留存或存储“恢复标签”。恢复标签包含足够信息以在电力恢复事件后定位和加载来自高速缓存的后备存储存储器的数据。恢复标签本质上与预取请求相似之处在于预期高速缓存在不久的将来会需要数据来服务一个或多个请求而预取所述数据。在对高速缓存部分或全部断电以节省电力前,将恢复标签置于永久存储位置中。当电力恢复时,恢复标签用来将数据从高速缓存的后备存储器加载到所述高速缓存中。该数据加载与由正常高速缓存请求所触发的任何加载分开,且通常发生在所述任何加载前。高速缓存条目的部分或全部可以以这种方式加载。加载的数据可以是在断电前曾在高速缓存中的相同数据或可以是预测在电力恢复后有用的任何数据。在高速缓存断电前,可以使用存储在所述高速缓存中的信息来构造恢复标签。这是基于在断电周期后将需要现有高速缓存数据的假设。恢复标签可以用来重新加载曾存储在高速缓存中的准确数据,用来加载与获得曾存储在所述高速缓存中的数据相关的有用的中间信息,或用来加载预期在恢复电力后有用的其它数据。在这种情况下,可以根据高速缓存条目的标签内容(通常是地址的一部分,但是可能具有额外属性)构造所述条目的恢复标签。还可能需要额外信息来构造恢复标签,例如高速缓存内的高速缓存条目的逻辑地址。还可以由知道或预期在高速缓存重新通电后不久将发生的访问类型的软件构造恢复标签。假设高速缓存具有保存所述高速缓存的数据内容的副本的后备存储存储器。如果高速缓存存储的“脏的”写入数据比后备存储器中的数据更新,那么所述脏数据在将电力从所述高速缓存移除前被写出到所述后备存储存储器。本文所描述的实施方案适用于许多类型的硬件高速缓存,包括但不限于指令高速缓存、数据高速缓存、转译后援缓冲器(TLB)、I/0TLB、纹理和顶点的图形数据高速缓存等。可以使用多种机制来生成、保存或留存然后加载高速缓存的标签。若干实施方案包括一种用于在断电事件前或在电力已恢复后生成恢复标签的机制。此外,若干实施方案具有一种在电力恢复后接受恢复标签并且使用所述恢复标签将数据从高速缓存的后备存储器加载到所述高速缓存中的通电重新加载引擎。通电重新加载引擎可以与现有逻辑(例 如,预取或加载引擎)组合或共享。设计变化下文例示性实施方案用于指示和说明目的。所属领域技术人员将认识到这些实施方案的变化是可能的。每个实施方案均具有自身优点以及不同的电力、性能和复杂性权衡。第一实施方案在第一实施方案中,如图I和图2所示,高速缓存可以将标签信息和数据信息存储在单独存储器中。高速缓存可以为标签存储器的子集保留电力,但允许数据存储器和剩余标签存储器断电。在本实施方案中,在电力恢复后通过使用留存的高速缓存标签来生成恢复标签。恢复标签用来将数据内容从高速缓存的后备存储器加载到所述高速缓存中。图I示出了存储器系统100的一部分,其包括高速缓存102、高速缓存控制器104、存储器106和存储器控制器108。高速缓存102包括第一标签存储池(标签存储池I) 110、第二标签存储池(标签存储池2) 112、第一数据存储池(数据存储池I) 114和第二数据存储池(数据存储池2) 116。高速缓存控制器104包括通电重新加载引擎118。在对高速缓存断电前不需要特殊准备。标签存储池I 110保持其状态并且可以保持通电。标签存储池2 112、数据存储池I 114和数据存储池2 116断电(如图I中阴影部分所示)。在电力恢复后,高速缓存控制器104中的通电重新加载引擎118从标签存储池I110读取标签并且将所述标签用作恢复标签。恢复标签用来从存储器106提取数据,并且所述提取的数据被写入到数据存储池I 114。图2示出了用于保留标签存储器的子集中的电力同时允许数据存储器和其它标签存储器断电的方法200的流程图。方法200涉及创建恢复标签并将所述恢复标签存储在保持通电的高速缓存的一部分中,这通过保持标签存储器的子集中的状态(步骤202)来完成。剩余标签存储器连同所有数据存储器可以断电(步骤204)。标签存储器和数据存储器将保持断电直到接收到通电事件为止。当接收到通电事件时,任何断电高速缓存可以通电(步骤206)。在通电后,读取恢复标签(步骤208)。可以使用恢复标签从存储器提取数据(步骤210)并且所述提取的数据可以写回到数据存储器中(步骤212)。在通电后使用恢复标签以在用户从高速缓存请求相似数据前将数据加载回到所述高速缓存中。
第一实施方案涉及电力、性能与复杂性之间的权衡。节省与高速缓存存储器相关的绝大部分电力,但是仍需要少量电力来保持一个或多个标签存储器的状态。得到的性能取决于保持通电的存储器的有用性。如果存储近期使用的标签以及近期较少使用的标签的集合,那么性能可能较低。在包括将近期使用的标签优先分配给保持通电的标签存储器的一种实施方式中,性能可能较高。在另一种实施方式中,可以在移除电力前执行高速缓存线路交换,使得将最近使用的标签转移到保持通电的标签存储器中。本实施方案的复杂程度相对低。除非实施上文所述的高速缓存线路交换逻辑,否则不需要在移除电力前将数据保存到替代位置。第二实施方案在第二实施方案中,如图3和图4所示,高速缓存可以根据所述高速缓存的标签生·成恢复标签信息。高速缓存可以在电力移除前将恢复标签写入到(芯片上或芯片外的)永久存储器的池中。该永久存储器可能处于全面操作状态或有保留的较低电力状态,例如保留了在高速缓存断电时自我刷新的能力。在典型的个人计算机(PC)中,这可能是系统存储器或单独的专用永久存储器的池。恢复标签或恢复标签组可以以其正常编码存储,或可以在写入到永久存储器前被压缩以减小存储器大小和电力需求。当对高速缓存恢复电力时,恢复标签被读回到所述高速缓存中并且用来将数据内容从所述高速缓存的后备存储器加载到所述高速缓存中。图3示出了存储器系统300的一部分,其包括高速缓存302、系统存储器304、存储器控制器306、内部永久存储存储器308和处理引擎310。高速缓存302包含标签转移引擎312、高速缓存存储阵列314和通电重新加载引擎316。系统存储器304包含高速缓存标签存储器318。在断电准备中,由标签转移引擎312从高速缓存存储阵列314读取标签以生成恢复标签。标签转移引擎312将恢复标签写入到高速缓存标签存储器318 (通过存储器控制器306)或内部永久存储存储器308。可选地,标签转移引擎312可以压缩恢复标签。先前步骤可以可选地重叠,并且可在仍写出先前生成的恢复标签时读取高速缓存标签。在电力恢复后,通电重新加载弓丨擎316从高速缓存标签存储器318或内部永久存储存储器308读取恢复标签。通电重新加载引擎316使用恢复标签(通常是地址)来请求高速缓存从系统存储器304提取数据。高速缓存302提取所请求的数据并将其存储在高速缓存存储阵列314中。先前的三个步骤可以重叠,这意味着一旦读取了恢复标签,即可在读取其它恢复标签前或在读取其它恢复标签时从系统存储器304请求与该恢复标签相关的数据并将所述数据存储在高速缓存存储阵列314中。图4示出了用于在对高速缓存断电前将恢复标签写入到永久存储器的池的方法400的流程图。在对高速缓存断电的准备中,从所述高速缓存读取标签以生成恢复标签(步骤402)。然后,可以将恢复标签写入到永久存储器(步骤404)。步骤402和步骤404可以重叠,使得在将先前生成的恢复标签写入到永久存储器(步骤404)时可以读取高速缓存标签(步骤402)。可选地,可以在将恢复标签写入到永久存储器(步骤404)前压缩所述恢复标签(步骤406)。然后,高速缓存可以断电(步骤408)。所述高速缓存将保持断电直到接收到通电事件为止。当接收到通电事件时,高速缓存通电(步骤410)并且可以从永久存储器读取恢复标签(步骤412)。可以使用所述恢复标签从后备存储器请求数据(步骤414),并且可以提取所述请求的数据并将其存储在高速缓存中(步骤416)。步骤412、414和416可以重叠,使得一旦读取了恢复标签,即可在读取其它恢复标签前或在读取其它恢复标签时从后备存储器请求与所述恢复标签相 关的数据并将所述数据存储在所述高速缓存中。第二实施方案还表明电力、性能和复杂性权衡。如果恢复标签存储在系统存储器中,那么留存最大电力,因为所述系统存储器已需要电力来保持其状态。如果恢复标签存储在单独的芯片上的存储器中,那么消耗相对少量的额外电力。第二实施方案的性能是高的,因为该实施方式可以优先选择存储所有标签或可能是标签的子集,该子集包括最近使用的标签。复杂程度是适中的,因为需要在系统内生成和移动恢复标签。第三实施方案在第三实施方案中,如图5和图6所示,高速缓存可以生成恢复标签。所述恢复标签可以在高速缓存断电前被写入到在系统内某处的非易失性存储器。当所述高速缓存断电时,该非易失性存储器可以保持通电或断电。恢复标签或恢复标签组可以以其正常编码存储,或可以在写入到非易失性存储器前被压缩。压缩恢复标签可以减小存储器和电力需求。当高速缓存通电时,包含恢复标签的非易失性存储器通电。非易失性存储器的内容被读回到高速缓存中并且用来将数据内容从所述高速缓存的后备存储器加载到所述高速缓存中。图5示出了存储器系统500的一部分,其包括高速缓存502、非易失性存储器504、系统存储器506、存储器控制器508和处理引擎510。高速缓存502包含标签转移引擎512、高速缓存存储阵列514和通电重新加载引擎516。在断电准备中,标签转移引擎512从高速缓存存储阵列514读取标签。标签转移引擎512生成恢复标签并将其写入到非易失性存储器504。可选地,标签转移引擎512可以压缩恢复标签。先前的步骤可以可选地重叠,使得可在仍写出先前生成的恢复标签时读取高速缓存标签。在存储所需标签后,高速缓存502可以断电。可选地,非易失性存储器504可以断电以节省额外电力。在电力恢复后,如果需要,那么高速缓存502和非易失性存储器504可以通电。通电重新加载引擎516从非易失性存储器504读取恢复标签。通电重新加载引擎516使用恢复标签(通常是地址)来从系统存储器506请求高速缓存数据。高速缓存502提取所请求的数据并将其存储在高速缓存存储阵列514中。先前的三个步骤可以重叠,使得一旦读取了恢复标签,即可在读取其它恢复标签前或在读取其它恢复标签时从系统存储器506请求与该恢复标签相关的数据并将所述数据存储在高速缓存存储阵列514中。图6示出了用于在对高速缓存断电前将恢复标签写入到非易失性存储器的方法600的流程图。在断电准备中,可以从所述高速缓存读取标签以生成恢复标签(步骤602)。然后,可以将所述恢复标签写入到非易失性存储器(步骤604)。步骤602和步骤604可以重叠,使得在将先前生成的恢复标签写入到非易失性存储器(步骤604)时可以读取高速缓存标签(步骤602)。可选地,可以在将恢复标签写入到非易失性存储器(步骤604)前压缩所述恢复标签(步骤606)。高速缓存和非易失性存储器可以断电(步骤608)。所述高速缓存将保持断电直到接收到通电事件为止。当接收到通电事件时,所述高速缓存和非易失性存储器(如果断电)可以通电(步骤610)。在通电后,可以从非易失性存储器读取恢复标签(步骤612)。可以使用所述提取的恢复标签从后备存储器请求数据(步骤614),并且可以提取所述请求的数据并将其存储在高速缓存存储阵列中(步骤616)。步骤612、614和616可以重叠,使得一旦从非易失性存储器读取了恢复标签,即可在读取其它恢复标签前或在读取其它恢复标签时从后备存储器请求与所述恢复标签相 ''' 关的数据并将所述数据存储在高速缓存中。第三实施方案表明电力、性能和复杂性权衡。第三实施方案的非易失性存储器节省的电力稍微少于第二实施方案的系统存储器实施所节省的电力。但是,当第二实施方案将单独的始终接通的存储器用于恢复标签时,第三实施方案可以节省的电力多于第二实施方案可以节省的电力。如果高速缓存断电持续相对较长的时间,那么这就特别明显。第三实施方案的性能是高的,因为所述实施方式可以优先选择存储所有标签或可能是包括最近使用的标签的子集。最后,复杂程度是高的,因为第三实施方案需要集成非易失性存储器。第四实施方案在第四实施方案中,如图7和图8所示,使用多级高速缓存设计。多级高速缓存用 来应对高速缓存延时与命中率之间的权衡。小型高速缓存通常具有较短延时但具有较低命中率,而较大高速缓存通常具有较高命中率但具有较长延时。多级高速缓存通常会首先检查较小的高速缓存,然后只有当数据不是位于较小的高速缓存中时才继续检查较大的高速缓存。逐步地检查更高级的高速缓存,直到检查完所有高速缓存为止,然后检查外部存储器。在完全包容性的设计中,较小高速缓存中的所有数据也在较大高速缓存中。在排他性设计中,所有数据最多在高速缓存之一中。在半包容性设计中,来自较小的、较低级的高速缓存的某些数据也可以在较大的、较高级的高速缓存中。在第四实施方案中,较低高速缓存级别可以(例如,使用包容性或半包容性设计)复制较高高速缓存级别的内容。本实施方案可以允许较高级高速缓存断电同时较低级高速缓存保持通电。当较高级高速缓存重新通电时,来自较低级高速缓存的内容可以直接转移回到所述较高级高速缓存中。这可能对性能有好处,因为较高级高速缓存通常较大并且由于容量问题而排除那些条目的可能性更低。图7示出了存储器系统700的一部分,其包括电源门控式较高级高速缓存(N级高速缓存)702、多个较低级高速缓存(N-M级高速缓存)704^701、存储器706和存储器控制器 708。在对N级高速缓存702断电前不需要特殊准备。N级高速缓存702断电,同时N-M级高速缓存704-701的所有或子集保持通电。在电力恢复后,每个N-M级高速缓存704(70^生成标签和数据信息并将所述标签和数据信息发回到N级高速缓存702。N级高速缓存702将所述标签和数据信息写入到其本地存储存储器中。图8示出了用于使用多级高速缓存设计将数据从较低级高速缓存恢复到较高级高速缓存的方法800的流程图。较高级高速缓存可以断电(步骤802)。较低级高速缓存的子集可以保持通电(步骤804)。较高级高速缓存保持断电直到接收到通电事件为止。当接收到通电事件时,较高级高速缓存通电(步骤806)。较低级高速缓存生成标签和数据信息并将所述标签和数据信息发回到较高级高速缓存(步骤808)。较高级高速缓存将标签信息和数据信息写入到其本地存储存储器中(步骤810)。第四实施方案表明电力、性能和复杂性之间的权衡。第四实施方案提供高电力节省,因为整个较高级高速缓存可以断电。但是,可预见到性能会相对较差,因为仅包含在较低级高速缓存中的数据被转移到较高级高速缓存并且所述数据已存在于所述较低级高速缓存。当来自较低级高速缓存的高速缓存线路由于容量问题而被排除并且再次需要先前转移到较高级高速缓存的较旧线路时,预期有性能好处。预期复杂性适中。在包容性或半包容性高速缓存设计中,高速缓存线路通常不会从较低级高速缓存向上转移到较高级高速缓存,因为所述高速缓存线路在排他性高速缓存设计中。因此,涉及包容性或半包容性设计的本实施方案可能需要添加新数据路径,以便将高速缓存线路从较低级高速缓存移动到较高级高速缓存。第五实施方案在第五实施方案中,如图9和图10所示,使用多级高速缓存设计。较低高速缓存级别可以(例如,使用包容性或半包容性设计)复制较高高速缓存级别的内容。本实施方案可以允许较高级高速缓存断电同时较低级高速缓存保持通电。当较高级高速缓存通电时,可以根据较低级高速缓存的内容生成恢复标签。所述恢复标签可以用来将数据从后备存储器加载到较高级高速缓存中。这在转译后援缓冲器(TLB)设计中特别有利,所述TLB是用于地址转译的高速缓存。在这种设计中,来自较低级高速缓存中的转译条目的恢复标签可·以允许较高级高速缓存除加载实际转译条目外还加载分层目录信息。图9示出了存储器系统900的一部分,其包括电源门控式较高级高速缓存(N级高速缓存)902、多个较低级高速缓存(N-M级高速缓存)904^901、存储器906和存储器控制器908。N级高速缓存902包括通电重新加载引擎910。在对N级高速缓存902断电前不需要特殊准备。N级高速缓存902断电,同时N-M级高速缓存904^901的所有或子集保持通电。在恢复电力后,每个N-M级高速缓存904^90^根据其本地高速缓存标签信息生成恢复标签。然后,N-M级高速缓存904^901根据所述生成的恢复标签将重新加载命令发放到N级高速缓存902。N级高速缓存902中的通电重新加载引擎910使用来自N-M级高速缓存904^901的重新加载命令从存储器906请求数据。N级高速缓存902将重新加载的数据存储在其高速缓存存储存储器中。在这最后两个步骤中,如果N级高速缓存902必须遍历多级分层数据,那么其可以针对每个重新加载请求来请求、提取和存储来自存储器906的多个数据片。这种情况的实例是如果高速缓存是TLB并且必须在到达最后转译条目前遍历多个目录级别。以这种方式所提取的所有分层信息和目录条目还可以连同最后转译存储在N级高速缓存902中。这可以等效于保留为达到结果而所采取的步骤。图10示出了用于使用多级高速缓存设计以根据较低级高速缓存的内容生成恢复标签的方法1000的流程图。较高级高速缓存可以断电(步骤1002)。较低级高速缓存的子集可以保持通电(步骤1004)。较高级高速缓存保持断电直到接收到通电事件为止。当接收到通电事件时,较高级高速缓存通电(步骤1006)并且较低级高速缓存根据本地高速缓存标签信息生成恢复标签(步骤1008)。较低级高速缓存根据恢复标签将重新加载命令发放到较高级高速缓存(步骤1010)。较高级高速缓存使用重新加载命令从其后备存储器请求数据(步骤1012)并将重新加载的数据存储在其存储存储器中(步骤1014)。可选地,较高级高速缓存可以保留分层目录信息(步骤1016)并将该信息写入到其存储存储器。第五实施方案表明电力、性能与复杂性之间的权衡。第五实施方案提供高电力节省,因为整个较高级高速缓存可以断电。预期性能适中,因为加载到较高级高速缓存中的信息多于第四实施方案。但是,性能可能会低于前三个实施方案,因为仅保留来自较小的、较低级高速缓存的信息。预期复杂程度低。在本实施方案中,从较低级高速缓存之一到较高级高速缓存的请求可能与较低级高速缓存中的高速缓存缺失相似,后者需要来自较高级高速缓存的服务。 第六实施方案在第六实施方案中,如图11和图12所示,可以由软件将恢复标签清单编程到永久存储位置(例如系统存储器或内部存储器)中。高速缓存可以被永久编程或隐约知道将恢复标签定位在何处。每当高速缓存通电时,恢复标签清单可以被访问并且用来将数据内容从所述高速缓存的后备存储器加载到所述高速缓存中。图11示出了存储器系统1100的一部分,其包括高速缓存1102、内部永久存储存储器1104、系统存储器1106、存储器控制器1108和处理引擎1110。高速缓存1102包括通电重新加载引擎1112和高速缓存存储阵列1114。处理引擎1110包括软件1116。在高速缓存断电前或在高速缓存断电期间,软件1116将恢复标签信息写入到永久存储器。该永久存储器可以是(例如)内部永久存储存储器1104或系统存储器1106。然后,高速缓存1102可以断电。高速缓存1102保持断电直到接收到通电事件为止。当接收到通电事件时,高速缓存1102通电并且通电重新加载引擎1112从系统存储器1106或内部永久存储存储器1104读取恢复标签。通电重新加载弓I擎1112使用恢复标签(通常是地址)请求高速缓存从系统存储器1106提取数据。高速缓存提取所述请求的数据并将其存储在高速缓存存储阵列1114中。先前的三个步骤可以重叠,使得一旦读取了恢复标签,即可在读取其它恢复标签前或在读取其它恢复标签时从系统存储器1106读取与该恢复标签相关的数据并将所述数据存储在高速缓存存储阵列1114中。图12示出了用于创建由软件所编程的恢复标签的清单并将所述恢复标签存储在永久存储位置中的方法1200的流程图。软件将恢复标签信息写入到永久存储器(步骤1202)。高速缓存可以在任何时间断电(步骤1204)。高速缓存保持断电直到接收到通电事件为止。当接收到通电事件时,高速缓存通电(步骤1206)并且从永久存储器读取恢复标签(步骤1208)。使用所述恢复标签从后备存储器请求数据(步骤1210),并且提取所述请求的数据并将其存储在高速缓存中(步骤1212)。步骤1208、1210和1212可以重叠,使得一旦读取了恢复标签,即可在读取和处理其它恢复标签前或在读取和处理其它恢复标签时从后备存储器请求与该恢复标签相关的数据并将所述数据存储在所述高速缓存中。如果恢复标签存储在系统存储器中,那么第六实施方案节省最大电力,因为所述系统存储器已需要电力来保持状态。如果恢复标签存储在单独的芯片上的存储器中,那么消耗少量的额外电力。与前三个实施方案相比,预期本实施方案的性能较低,因为软件可能无法以与硬件相同的更新频率来维持恢复标签清单。硬件复杂性低于其它实施方案,因为不需要硬件来保存恢复标签。然而,预期软件复杂性适中,因为软件需要维持活动的恢复标签清单。第七实施方案在第七实施方案中,如图13和图14所示,根据正常高速缓存访问生成和更新恢复标签清单。例如,可以保存并持续更新最近的全部N个请求或来自多个源中每个的最近的N个请求的清单。该清单可以被筛选来移除重复的、相似的或重叠的条目。恢复标签清单可以存储在高速缓存断电时维持状态的永久存储位置中。恢复标签清单还可以存储在非永久位置中。如果存储在非永久位置中,那么恢复标签清单可以在对高速缓存和非永久存储器断电的准备中转移到永久存储位置。在高速缓存通电后,恢复标签用来将数据内容从所述高速缓存的后备存储器加载到所述高速缓存中。图13示出了存储器系统1300的一部分,其包括高速缓存1302、处理引擎1304、内部永久存储存储器1306、系统存储器1308和存储器控制器1310。处理引擎1304包括软件1312。高速缓存1302包括恢复标签清单1314、通电重新加载引擎1316和高速缓存存储阵列 1318。在正常操作期间,从客户端(在这种情况下是处理引擎1304)到高速缓存1302的访问用来生成存储在永久存储位置或非永久位置中的恢复标签。软件1312将恢复标签信息写入到例如永久存储器,即内部永久存储存储器1306或系统存储器1308。如果恢复标 签清单1314将在高速缓存1302断电时丧失状态,那么恢复标签清单1314必须在对高速缓存1302断电前转移到永久存储位置。然后,高速缓存1302断电并且保持断电直到接收到通电事件为止。当接收到通电事件时,高速缓存通电并且通电重新加载引擎1316读取恢复标签。通电重新加载引擎1316使用恢复标签(通常是地址)从系统存储器1308请求高速缓存数据。高速缓存1302提取所述请求的数据并将其存储在高速缓存存储阵列1318中。先前的三个步骤可以重叠,使得一旦读取了恢复标签,即可在读取其它恢复标签前或在读取其它恢复标签时从系统存储器1308请求与该恢复标签相关的数据并将所述数据存储在高速缓存存储阵列1318中。图14示出了用于根据正常高速缓存访问生成和更新恢复标签清单的方法1400的流程图。使用客户端对高速缓存的访问来生成恢复标签(步骤1402)。可选地,恢复标签可以被筛选来移除重复的、相似的或重叠的条目(步骤1404)。将恢复标签存储在永久存储位置或非永久存储位置中(步骤1406)。如果将恢复标签清单存储在非永久存储位置中,那么可以将所述恢复标签清单转移到永久存储位置(步骤1408 )。然后,高速缓存可以断电(步骤1410)。高速缓存保持断电直到接收到通电事件为止。当接收到通电事件时,高速缓存通电(步骤1412)并且读取恢复标签(步骤1414)。使用恢复标签从后备存储器请求数据(步骤1416),并且提取所述请求的数据并将其存储在高速缓存中(步骤1418)。步骤1414、1416和1418可以重叠,使得一旦读取了恢复标签,SP可在读取和处理其它恢复标签前或在读取和处理其它恢复标签时从后备存储器请求与该恢复标签相关的数据并将所述数据存储在所述高速缓存中。如果恢复标签存储在系统存储器中,那么第七实施方案节省最大电力,因为所述系统存储器已需要电力来保持状态。如果恢复标签存储在单独的芯片上的存储器中,那么消耗少量的额外电力。预期性能是高的,因为所述实施方式可以优先选择存储所有标签或可能是标签的子集,该子集包括最近使用的标签。复杂程度是适中的,因为需要在系统内生成和移动恢复标签。在此实施方式中,需要更多逻辑和存储器来保存恢复标签的单独清单。然而,不需要用于扫描全部高速缓存标签以确定将哪些高速缓存标签保存为恢复标签的逻辑。
第八实施方案在第八实施方案中,如图15和图16所示,向高速缓存发出请求的高速缓存客户端可能知道所述高速缓存的电力状态。如果客户端引发高速缓存通电或检测到高速缓存通电事件,那么所述客户端可以生成特殊的预取命令流并将该命令流发送到高速缓存。这些预取命令与恢复标签作用相似并且引发高速缓存从其后备存储器加载信息。客户端可以生成预取命令,以触发所述客户端认为其在不久的将来需要的数据的加载。这与到高速缓存的预取命令的正常生成不同,因为其与高速缓存通电事件相关。此外,客户端可以发放其在高速缓存断电前曾经发放到高速缓存的预取命令。图15示出了存储器系统1500的一部分,其包括高速缓存1502、系统存储器1504和存储器控制器1506。高速缓存1502包括高速缓存存储阵列1508。客户端1510可以访问高速缓存1502和系统存储器1504。虽然在图15中示出了一个客户端,但是应当注意任 何数量的客户端均可以与高速缓存1502和系统存储器1504进行通信。高速缓存1502断电。在电力恢复后,高速缓存1502用信号通知客户端1510其刚通电并且已丧失状态。客户端1510将一系列预取命令发放到高速缓存1502。这些预取命令可能已在断电事件前曾经发放到高速缓存1502。高速缓存1502使用预取命令以在来自客户端1510的实际访问和请求前将数据从系统存储器1506加载到高速缓存1502。图16示出了用于在通电后使用预取命令引发高速缓存从其后备存储器加载信息的方法1600的流程图。高速缓存可以在任何时间断电(步骤1602)。在高速缓存通电(步骤1604)后,所述高速缓存用信号通知客户端已发生通电并且已丧失状态(步骤1606)。客户端将预取命令发放到高速缓存(步骤1608)。客户端可以发放曾经在断电前发放过的预取命令(步骤1610)。高速缓存使用预取命令将数据加载到所述高速缓存中(步骤1612)。第八实施方案节省最大电力,因为从预取命令所收集的信息位于系统存储器中,所述系统存储器已必需保持其状态。本实施方案的性能取决于预取的准确度。预测越准确、预取可发生得越早,则性能越佳。某些应用在本实施方案下可以更好地运行,而其它应用可能更多受益于其它实施方案,这取决于客户端的高速缓存访问模式。对于本实施方案的高速缓存部分来说,复杂程度是低的;预期会给处理器增加复杂性,因为所述处理器需要动态地控制响应于高速缓存电力状态而发生的预取的程度。虽然上文以特定组合描述特征和元件,但是可在不具有其它特征和元件的情况下单独使用每个特征或元件,或者可在具有或不具有其它特征和元件的情况下以各种组合使用每个特征或元件。本文所提供的方法或流程图可以在并入计算机可读存储介质中的供通用计算机或处理器执行的计算机程序、软件或固件中实施。计算机可读存储介质的实例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、磁介质(例如内部硬盘和可抽换式盘)、磁光介质和光介质(例如⑶-ROM盘和数字多功能盘(DVD))。合适的处理器包括(举例来说)通用处理器、特殊用途处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP内核相关的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其它类型的集成电路(IC)和/或状态机。这些处理器可以通过配置使用经过处理的硬件描述语言(HDL)指令(这些指令可存储在计算机可读介质上)的结果的制造过程来制造。这些处理的结果可能是随后在半导体制造过程中用来制造实施本发明的各个方面的处理 器的掩膜作品。
权利要求
1.一种用于重新填充高速缓存的方法,其包括 将所述高速缓存的内容的至少一部分存储在与所述高速缓存分开的位置中; 将电力从所述高速缓存中移除; 对所述高速缓存恢复电力;和 用与所述高速缓存分开存储的所述高速缓存的所述内容的所述部分重新填充所述高速缓存。
2.根据权利要求I所述的方法,其中所述存储包括 创建恢复标签,每个恢复标签包括来自所述高速缓存的某些内容;和 将所述恢复标签存储在与所述高速缓存分开的所述位置中。
3.根据权利要求2所述的方法,其中所述重新填充包括 读取所述恢复标签;和 使用所述恢复标签将数据加载到所述高速缓存中。
4.根据权利要求2所述的方法,其中所述创建包括使用先前高速缓存访问的历史清单生成恢复标签。
5.根据权利要求4所述的方法,其中所述创建包括移除先前高速缓存访问的所述历史清单中的重复的、相似的或重叠的条目。
6.根据权利要求I所述的方法,其中 所述高速缓存包括一个或多个标签存储器和一个或多个数据存储器; 所述移除包括让所述标签存储器中至少之一通电并且对所述剩余标签存储器和所有所述数据存储器断电;且所述重新填充包括 从所述至少一个通电标签存储器读取所述标签;和 使用所述经读取的标签将数据加载到所述高速缓存中。
7.根据权利要求6所述的方法,其中 所述读取包括从所述至少一个通电标签存储器读取地址;且 所述使用包括 从所述地址提取数据;和 将所述提取的数据写入到所述高速缓存。
8.根据权利要求I所述的方法,其中 所述存储包括 从所述高速缓存读取标签以生成恢复标签;和 将所述恢复标签存储在与所述高速缓存分开的所述位置中; 所述重新填充包括 读取所述恢复标签;和 使用所述恢复标签将数据加载到所述高速缓存中。
9.根据权利要求8所述的方法,其中所述存储还包括 在将所述恢复标签存储在与所述高速缓存分开的所述位置中前压缩所述恢复标签。
10.根据权利要求I所述的方法,其中 所述高速缓存是包括较高级高速缓存和多个较低级高速缓存的多级高速缓存;且所述移除包括对所述较高级高速缓存断电并且保留所述较低级高速缓存的至少之一中的电力。
11.根据权利要求10所述的方法,其中所述重新填充包括 在保留电力的所述至少一个较低级高速缓存中生 成标签和数据信息; 将所述标签和数据信息发送到所述较高级高速缓存;和 将所述标签和数据信息写入到所述较高级高速缓存。
12.根据权利要求10所述的方法,其中所述重新填充包括 在保留电力的所述至少一个较低级高速缓存中生成恢复标签,每个恢复标签包括来自所述较低级高速缓存的某些内容; 根据所述恢复标签而将重新加载命令发放到所述较高级高速缓存; 由所述较高级高速缓存使用所述重新加载命令请求数据;和 将所述请求的数据写入到所述较高级高速缓存。
13.根据权利要求11所述的方法,其中所述写入包括 将分层目录信息写入到所述较高级高速缓存。
14.一种用于重新填充高速缓存的方法,其包括 将电力从所述高速缓存中移除; 对所述高速缓存恢复电力; 用信号通知高速缓存客户端已对所述高速缓存恢复电力并且所述高速缓存已丧失状态; 将预取命令从所述高速缓存客户端发放到所述高速缓存;和 由所述高速缓存使用所述预取命令将数据加载到所述高速缓存中。
15.根据权利要求14所述的方法,其中所述发放包括 发放在将电力从所述高速缓存中移除时已待定的预取命令。
16.一种用于重新填充高速缓存的装置,其包括 高速缓存,其被配置来存储数据和与所述数据相关的标签; 存储器,其与所述高速缓存分开定位,所述存储器被配置来在将电力从所述高速缓存中移除时存储来自所述高速缓存的标签;和 存储器控制器,其被配置来在对所述高速缓存恢复电力时将标签从所述高速缓存写入到所述存储器。
17.根据权利要求16所述的装置,其还包括 通电重新加载引擎,其被配置来 从所述存储器读取所述标签; 根据所述标签创建恢复标签;和 使用所述恢复标签将数据加载到所述高速缓存中。
18.根据权利要求17所述的装置,其中 所述高速缓存包括一个或多个标签存储器和一个或多个数据存储器,至少一个标签存储器保留电力同时剩余标签存储器和所述数据存储器断电;且 所述通电重新加载引擎还被配置来从保留电力的所述至少一个标签存储器读取所述标签。
19.根据权利要求16所述的装置,其还包括 标签转移引擎,其被配置来 根据所述标签生成恢复标签;和 将所述恢复标签写入到所述存储器;和 通电重新加载引擎,其被配置来 从所述存储器读取所述恢复标签;和 使用所述恢复标签将数据加载到所述高速缓存中。
20.根据权利要求19所述的装置,其中所述标签转移引擎还被配置来压缩所述恢复标签。
21.根据权利要求16所述的装置,其中 所述高速缓存包括较高级高速缓存和多个较低级高速缓存; 所述较低级高速缓存中至少之一保留电力并且所述较高级高速缓存和剩余较低级高速缓存断电;且 保留电力的所述至少一个较低级高速缓存被配置来将数据和标签发送到所述较高级高速缓存。
22.根据权利要求21所述的装置,其中保留电力的所述至少一个较低级高速缓存还被配置来 根据其标签信息生成恢复标签;和 根据所述恢复标签将重新加载命令发放到所述较高级高速缓存。
23.根据权利要求22所述的装置,其还包括 通电重新加载引擎,其被配置来使用所述重新加载命令请求数据。
24.根据权利要求16所述的装置,其中所述存储器包括恢复标签清单并且所述装置还包括 通电重新加载引擎,其被配置来 从所述存储器读取所述恢复标签;和 使用所述恢复标签将数据加载到所述高速缓存中。
25.根据权利要求16所述的装置,其还包括 高速缓存客户端,其被配置来 生成预取命令,所述预取命令包括用于加载数据的指令;和 将所述预取命令发送到所述高速缓存。
26.一种存储供通用计算机执行以重新填充高速缓存的指令集的计算机可读存储介质,所述指令集包括 存储代码段,其用于将所述高速缓存的内容的至少一部分存储在与所述高速缓存分开的位置中; 移除代码段,其用于将电力从所述高速缓存中移除; 恢复代码段,其用于对所述高速缓存恢复电力;和 重新填充代码段,其用于用与所述高速缓存分开存储的所述高速缓存的所述内容的所述部分重新填充所述高速缓存。
27.根据权利要求26所述的计算机可读存储介质,其中所述指令集是用于制造装置的硬件描述语言(HDL)指 令。
全文摘要
本发明公开了一种用于重新填充高速缓存的方法和装置。所述高速缓存的内容的至少一部分存储在与所述高速缓存分开的位置中。将电力从所述高速缓存中移除并且一段时间之后恢复电力。在已对所述高速缓存恢复电力后,用与所述高速缓存分开存储的所述高速缓存的所述内容的所述部分重新填充所述高速缓存。
文档编号G06F12/02GK102971716SQ201180017541
公开日2013年3月13日 申请日期2011年2月28日 优先权日2010年3月3日
发明者菲利普·Ng, 吉姆谢德·B·米尔扎, 安东尼·阿萨罗 申请人:Ati科技无限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1