用于降低存储设备功耗的方法和系统的制作方法

文档序号:6427113阅读:115来源:国知局
专利名称:用于降低存储设备功耗的方法和系统的制作方法
技术领域
本发明涉及存储设备,并且更具体但不排他地涉及用于降低存储设备功耗的方法和系统。
背景技术
诸如高速缓冲存储器的存储设备允许处理器通过将主存储器的最近使用的副本存储在高速缓冲存储器的高速缓存行中来更块地执行指令。如果程序需要的指令或数据存储在高速缓冲存储器的高速缓存行中,那么可以降低程序的访问延迟。当高速缓冲存储器未命中事件发生时,在乱序(out-of-order)微架构中使用非阻塞高速缓冲存储器来避免处理器的停顿。即使存在高速缓冲存储器未命中事件,诸如填充缓冲器的专用硬件允许服务后面的加载和存储请求。填充缓冲器可以包含任意状态的高速缓存行的副本,并且在加载或存储请求的执行期间,每当数据高速缓存被访问时,都会对该填充缓冲器进行访问。主存储器的存储器行可以位于填充缓冲器中或数据高速缓存中, 但不会同时位于二者中。1级高速缓冲存储器被处理器频繁地访问并且其大小和组相联 (set-associative)配置可以影响处理器的性能。例如,1级高速缓冲存储器可以具有32 千字节的大小、8路组相联配置并且可以每高速缓冲存储器行包含64字节。要针对加载请求访问1级高速缓冲存储器,必须读取高速缓冲存储器组的所有8个路以确定从哪个路得到所需要数据。


根据主题的以下详细描述,本发明的实施例的特征和优点将会变得显而易见,其中图1说明了根据本发明的一个实施例的处理单元的框图;图2说明了根据本发明的一个实施例的存储器执行单元和1级数据高速缓冲存储器的框图;图3说明了根据本发明的一个实施例的从虚拟地址到物理地址的映射;图4说明了根据本发明的一个实施例的处理混淆(aliasing)事件的流程图;图5说明了根据本发明的一个实施例的降低高速缓冲存储器的功耗的流程图;以及图6说明了根据本发明的一个实施例的用于实现本文公开的方法的系统。
具体实施例方式在附图中以示例的方式而非限制的方式说明了本文描述的发明的实施例。为了说明的简单和清楚,附图中说明的元件未必按照比例绘制。例如,为了清楚,可以相对其他元件放大一些元件的尺寸。此外,当认为合适时,在附图之间重复使用参考标号以指示对应或类似的元件。说明书中对于本发明的“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,整个说明书中各个位置出现的短语“在一个实施例中”不是必然都指同一实施例。本发明的实施例提供了用于降低存储设备的功耗的方法和系统。在本发明的一个实施例中,存储设备是N路组相联1级(Li)高速缓冲存储器,其中N是整数并且具有大于 1的值。存在与数据高速缓冲存储器耦合的逻辑,以响应于加载指令或存储指令促成仅对N 路组相联Ll高速缓冲存储器的N路的部分进行访问。在本发明的一个实施例中,通过减少针对每个加载或存储请求的访问N路组相联Ll高速缓冲存储器的路的数量,降低了 N路组相联Ll高速缓冲存储器的功率要求。例如,在本发明的一个实施例中,存储设备是8路组相联Ll高速缓冲存储器并且它被划分为两组阵列,其中每组阵列具有4路访问。当接收到加载或存储指令时,仅选择两组阵列中的一组,即仅访问8路组相联Ll高速缓冲存储器的8路中的4路。在本发明的一个实施例中,两组阵列之间的选择是基于8路组相联Ll高速缓冲存储器的虚拟地址的地址位的。在本发明的一个实施例中,N路组相联Ll高速缓冲存储器具有一个或多个填充缓冲器以允许在处理器上执行乱序指令,即N路组相联Ll高速缓冲存储器是非阻塞高速缓冲存储器。在本发明的一个实施例中,当作出对高速缓冲存储器的访问仅需要N路组相联Ll 高速缓冲存储器的数据阵列的预测时停用或禁用对于填充缓冲器的访问。在本发明的一个实施例中,由于与填充缓冲器相关联的逻辑被停用,所以降低了 N路组相联Ll高速缓冲存储器的功耗。存储设备包括但不限于高速缓冲存储器、高速缓存数据阵列、高速缓存标签阵列等。图1说明了根据本发明的一个实施例的处理单元105的框图100。在本发明的一个实施例中,处理单元105具有指令提取和发布单元110、总线控制器120、执行单元130以及Ll数据高速缓冲存储器140。处理单元105的总线控制器120与系统接口 150耦合以连接到其他部件,该其他部件包括但不限于主存储器、2级高速缓冲存储器、芯片组等。指令提取和发布单元110通过总线控制器120经由系统接口 150或任何其他外部总线从外部存储器或主存储器提取指令。所提取的指令被存储在指令高速缓冲存储器115中。在本发明的一个实施例中,总线控制器120管理处理单元105中的高速缓存一致性转移。执行单元130接收和执行来自指令提取和发布单元110的所提取的指令,并且执行算术和逻辑运算,该算术和逻辑运算包括但不限于加、减、逻辑AND、整数乘、存储器操作等。在本发明的一个实施例中,执行单元130具有存储器执行单元135以在处理单元105 中执行存储器访问操作,该存储器访问操作包括但不限于加载和存储操作。存储器执行单元135接收来自调度器的加载和存储操作并且执行它们以完成存储器访问操作。在本发明的一个实施例中,存储器执行单元135与Ll数据高速缓冲存储器140相耦合,其中所述Ll数据高速缓冲存储器140具有Ll数据阵列142、L1标签阵列144和填充缓冲器146。Ll数据高速缓冲存储器140具有其他部件,例如为了说明的清楚而没有在图 1中示出的转换后援缓冲器(TLB)。在本发明的一个实施例中,Ll数据高速缓冲存储器140 具有逻辑来控制填充缓冲器146的访问并且将存储器访问操作限制到Ll数据阵列142和Ll标签阵列144的高速缓存路的仅仅一部分。图2说明了根据本发明的一个实施例的存储器执行单元135和Ll数据高速缓冲存储器140的框图200。为了说明的清楚,参考图1来讨论图2。在本发明的一个实施例中,Ll数据高速缓冲存储器140是8路组相联Ll高速缓冲存储器。在本发明的一个实施例中,Ll数据高速缓冲存储器140中的Ll数据阵列142和Ll标签阵列144被划分为两个部分或两个组。Ll数据阵列142被划分为4路Ll数据阵列[3-0] 220和4路Ll数据阵列 [7-4]225οLl路3-0读取启用信号202和Ll路7_4读取启用信号204分别控制4路Ll数据阵列[3-0]220和4路Ll数据阵列[7-4]225的访问或激活。例如,在本发明的一个实施例中,如果只允许或需要访问4路Ll数据阵列[3-0]220,那么断言(assert) Ll路3-0读取启用信号202以启用4路Ll数据阵列[3-0] 220以及解除断言(de-assert) Ll路7_4启用信号204以禁用4路Ll数据阵列[7-4] 225。组选择(set_select)信号206耦合到4路Ll数据阵列[3-0] 220和4路Ll数据阵列[7-4]225以选择要访问的期望或需要的组。例如,在本发明的一个实施例中,Ll数据高速缓冲存储器140是具有32千字节、64组并且每组具有8路高速缓存访问的高速缓冲存储器。为了执行加载或存储指令,使用组选择信号206来选择期望的组并且8路复用器 (mux) 260选择该期望的组的哪一路来作为读取的数据沈2。由路命中矢量[7_0]270生成8路复用器沈0的控制信号。在本发明的一个实施例中,路命中矢量[7-0]270具有8位来表示Ll数据高速缓冲存储器140的8路中的哪一路被选择作为读取的数据262。在本发明的一个实施例中,根据Ll标签阵列144、Ll标签比较器240和AND门块250生成路命中矢量[7_0]270。Ll标签阵列144被划分为4路Ll 标签阵列[3-0] 230和4路Ll标签阵列[7-4] 235。组选择信号206耦合到4路Ll标签阵列[3_0] 230和4路Ll标签阵列[7_4] 235 以选择要访问的期望或需要的组。4路Ll标签阵列[3-0]230和4路Ll标签阵列[7_4]235 分别耦合到Ll标签比较器MO中的4路Ll标签比较器[3-0]242和4路Ll标签比较器 [7-4] 244。Ll标签比较器240将4路Ll标签阵列[3-0] 230和4路Ll标签阵列[7-4] 235 中的所选择的组的路中的标签地址与加载或存储指令的物理地址246进行比较。如果发现匹配,那么Ll标签比较器240中各自的标签比较器针对AND门块250生成逻辑1信号。如果没有发现匹配,那么Ll标签比较器240中各自的标签比较器针对AND门块250生成逻辑 0信号。4路Ll标签比较器[3-0] 242针对每个路3_0生成信号并且每个信号耦合到AND 门块250中的各自的AND门。类似地,4路Ll标签比较器[7_4] 244针对每个路7_4生成信号并且每个信号耦合到AND门块250中的各自的AND门。与4路Ll标签比较器[3_0] 242 耦合的每个AND门与OR门210的输出相耦合。由填充缓冲器阻塞信号208和Ll路3-0读取启用信号202驱动OR门210的输出。类似地,与4路Ll标签比较器[7_4] 244耦合的每个AND门与OR门212的输出相耦合。由填充缓冲器阻塞信号208和Ll路7_4读取启用信号204驱动OR门212的输出。填充缓冲器阻塞信号208选择是否由Ll路3_0读取启用信号202和Ll路7_4读取启用信号204确定Ll标签阵列144的控制。OR门210和212的输出分别与4路Ll标签阵列[3-0]230和4路Ll标签阵列[7-4]235相耦合以启用或禁用它们的操作。例如,在本发明的一个实施例中,当填充缓冲器阻塞信号208被断言或被设置为逻辑1时,OR门210和 212的输出被断言为逻辑1以启用4路Ll标签阵列[3-0] 230和4路Ll标签阵列[7_4]235
■~ 者 ο当填充缓冲器阻塞信号208被设置为逻辑1时,由于填充缓冲器阻塞信号208将 OR门210和212的输出设置为逻辑1,所以Ll路3-0读取启用信号202和Ll路7_4读取启用信号204不影响4路Ll标签阵列[3-0]230和4路Ll标签阵列[7_4]235的操作。类似地,当填充缓冲器阻塞信号208被设置为逻辑1时,AND门块250中的AND门不受Ll路 3-0读取启用信号202和Ll路7-4读取启用信号204的影响。当填充缓冲器阻塞信号208被解除断言或被设置为逻辑0时,分别由Ll路3_0读取启用信号202和Ll路7-4读取启用信号204确定4路Ll标签阵列[3_0] 230和4路Ll 标签阵列[7-4]235的控制。这是因为当填充缓冲器阻塞信号208被设置为逻辑0时,OR门 210和212的输出仅取决于4路Ll标签阵列[3_0]230和4路Ll标签阵列[7_4]235的状态。例如,在本发明的一个实施例中,当要启用路3-0并且要禁用路7-4时,Ll路3_0 读取启用信号202和Ll路7-4读取启用信号204分别被设置为逻辑1和0。由Ll路3-0 读取启用信号202激活4路Ll数据阵列[3-0]220。Ll路3-0读取启用信号202将OR门 210的输出设置为逻辑1并且启用4路Ll标签阵列[3-0] 230。由于OR门210的输出被设置为逻辑1,所以启用耦合到4路Ll标签比较器[3-0]242的AND门。由于Ll路7-4读取启用信号204被设置为逻辑0,所以4路Ll数据阵列[7_4] 225 被禁用。由于Ll路7-4读取启用信号204和填充缓冲器阻塞信号208 二者都被设置为逻辑0,所以OR门212的输出被设置为逻辑0。由于OR门212的输出被设置为逻辑0,所以4 路Ll标签阵列[7-4]235被禁用,并且耦合到4路Ll标签比较器[7_4]244的AND门被禁用。路命中矢量[7-0]270 耦合到 OR 门[3-0] 280 和 OR 门[7-4] 282。OR 门[3-0] 280 的四个输入耦合到路命中矢量[7-0]270的路3-0。类似地,OR门[7_4]282的四个输入耦合到路命中矢量[7-0] 270的路7-4。AND门290耦合到OR门[3-0] 280的输出和Ll路3-0 读取启用信号202。AND门292耦合到OR门[7_4]282的输出和Ll路7_4读取启用信号 204。AND门290和四2的输出都耦合到OR门四4以生成Ll高速缓存命中/未命中信号 2960 Ll高速缓存命中/未命中信号296指示是否存在Ll数据高速缓冲存储器140的高速缓冲存储器命中或未命中。在本发明的一个实施例中,Ll数据高速缓冲存储器140中的Ll数据阵列142和 Ll标签阵列144维持处理单元105的性能,同时由于减少了高速缓存访问的路的数量,从而降低了功耗。图2中的Ll数据高速缓冲存储器140的说明不意味着是限制性的。在本发明的其他实施例中,可以在不影响本发明的运行的情况下,使用数据和标签阵列的不同结构和配置。例如,在本发明的另一实施例中,数据和标签阵列中的每一个被划分为多于两个部分并且能够生成分离的控制信号来选择数据和标签阵列的哪一部分或组要被选择用于加载或存储操作。相关领域中的普通技术人员将会容易地意识到如何修改逻辑以支持Ll数据高速缓冲存储器140的不同配置,本文中将不对此进行描述。图3说明了根据本发明的一个实施例的从虚拟地址310到物理地址330的映射 300。在本发明的一个实施例中,虚拟或线性地址310具有页偏移312和虚拟页码314。页偏移312由虚拟地址310的前12个地址位[11:0]构成,并且在虚拟地址310被转换为物理地址330时不对页偏移312进行转换。在本发明的一个实施例中,虚拟地址310的6个地址位[11 6]被用作组地址。使用6个地址位可以选择64个组。在本发明的一个实施例中,基于虚拟地址310的地址位 [11:6]生成组选择信号206。在本发明的一个实施例中,经由转换逻辑320来转换虚拟页码 314以获取物理页码334。转换逻辑320包括但不限于TLB中的查找表。在本发明的一个实施例中,基于虚拟地址310的地址位[12]生成Ll路3-0读取启用信号202和Ll路7_4 读取启用信号204。例如,在本发明的一个实施例中,当断言了地址位[12]时,Ll路3-0读取启用信号202和Ll路7-4读取启用信号204分别被断言和解除断言。当地址位[12]被解除断言时,Ll路3-0读取启用信号202和Ll路7_4读取启用信号204分别被解除断言和断言。在任何高速缓冲存储器访问之前设置地址位[12]以确定要访问Ll数据高速缓冲存储器140的哪4路。相关领域的普通技术人员将会意识到,在不影响本发明的运行的情况下,可以使用生成Ll路3-0读取启用信号202和Ll路7_4读取启用信号204的其他方式,本文中将不对这些其他方式进行描述。在本发明的一个实施例中,可以使用虚拟地址 310的另一位或另外多个位来生成Ll路3-0读取启用信号202和Ll路7_4读取启用信号 204。在本发明的另一实施例中,可以使用另一寄存器的另一位或另外多个位来生成Ll路 3-0读取启用信号202和Ll路7-4读取启用信号204。在本发明的另一实施例中,虚拟地址310和物理地址330可以具有不止32位。图4说明了根据本发明的一个实施例的处理混淆事件的流程图400。在虚拟索引的高速缓冲存储器中,用来定位特定高速缓冲存储器行的位的数量大于页的大小,并且可能混淆一个或多个位。例如,在本发明的一个实施例中,基于混淆的位的值,相同的物理页可以在高速缓冲存储器中的两个不同单元被引用。如此,Ll数据高速缓冲存储器140中的两个不同的高速缓冲存储器行可以保持有相同物理存储器的不同版本。流程400说明了根据本发明的一个实施例的用于处理混淆事件的方法。在步骤 410,流程接收存储或加载请求。在步骤420,流程检查在Ll数据高速缓冲存储器140中是否存在所述存储或加载请求的真命中(true hit)事件。在本发明的一个实施例中,当在Ll 数据高速缓冲存储器140的所选择的4路的一路中对所述存储或加载请求的存储单元进行高速缓存时,发生真命中事件。例如,在本发明的一个实施例中,处理单元105接收针对虚拟地址X的存储请求。 存储器执行单元135检查虚拟地址X的地址位[12]以确定要访问Ll数据高速缓冲存储器 140的路3-0还是路7-4。假设地址位[12]选择了路3_0,那么当4路Ll标签阵列[3_0] 242 中的标签阵列中的一个与虚拟地址X相匹配时,Ll标签比较器[3-0] 242生成Ll命中信号, 即真命中。如果在步骤420中存在真命中事件,那么流程400结束。如果在步骤420中不存在真命中事件,那么流程400进行到步骤430以检查在Ll数据高速缓冲存储器140中是否存在所述存储或加载请求的真未命中(true miss)事件。在本发明的一个实施例中,当在 Ll数据高速缓冲存储器140的所有8路中没有对所述存储或加载请求的存储单元进行高速缓存时,发生真未命中事件。例如,在本发明的一个实施例中,处理单元105接收针对虚拟地址Y的加载请求。 存储器执行单元135检查虚拟地址Y的地址位[12]以确定要访问Ll数据高速缓冲存储器 140的路3-0还是路7-4。当在4路Ll标签阵列[3_0] 242或4路Ll标签阵列[7_4] 244 中的标签阵列没有与虚拟地址Y相匹配时,Ll标签比较器240生成Ll未命中信号,即真未命中。如果在步骤430中存在真未命中事件,那么流程400结束。如果在步骤430中不存在真未命中事件,那么流程400进行到步骤440以检查在Ll数据高速缓冲存储器140中是否存在所述存储或加载请求的假命中(false hit)事件。在本发明的一个实施例中,当Ll 标签比较器240生成命中但地址位[12]选择数据阵列的不正确的组时,发生假命中事件。例如,在本发明的一个实施例中,处理单元105接收针对虚拟地址Z的加载请求。 存储器执行单元135检查虚拟地址Z的地址位[12]以确定要访问Ll数据高速缓冲存储器 140的路3-0还是路7-4。假设地址位[12]选择了路3_0,则4路Ll数据阵列[3-0] 220被选择。然而,由于混淆,当Ll标签比较器MO比较所述加载请求的物理地址时,由4路Ll 标签比较器[7-4] 244而非4路Ll标签比较器[3_0]242生成命中信号,即假命中。如果在步骤440中不存在假命中事件,那么流程400结束。如果在步骤400中存在假命中事件,那么流程400进行到步骤450以重复所述存储或加载请求并且启用或激活 Ll数据阵列142的所有的路,然后流程结束。图5说明了根据本发明的一个实施例的用于降低高速缓冲存储器的功耗的流程图500。为了说明的清楚,参考图2来讨论图5。在步骤510,流程500确定Ll数据高速缓冲存储器140的连续的高速缓冲存储器命中的数量。在本发明的一个实施例中,处理单元105包括逻辑以预测连续的高速缓冲存储器命中的数量。在本发明的另一实施例中,步骤510确定Ll数据高速缓冲存储器140的高速缓冲存储器命中的连续的时钟的数量。在步骤520,流程500检查命中的数量或命中的时钟周期的数量是否超过阈值。在本发明的一个实施例中,该阈值被设置为Ll数据高速缓冲存储器140中的高速缓存命中的 1 个时钟。如果没有超过,那么流程500返回步骤510。如果超过,那么在本发明的一个实施例中流程500进行到步骤530以停用与填充缓冲器146相关联的逻辑。在本发明的另一个实施例中,步骤530限制对填充缓冲器146的访问。在本发明的一个实施例中,当与填充缓冲器146相关联的逻辑被停用时,与填充缓冲器146相关联的逻辑的输入时钟被停止或禁用。在本发明的一个实施例中,填充缓冲器146和Ll数据高速缓冲存储器140不同时保存或存储相同的高速缓存行,即针对一个加载或存储操作,或者填充缓冲器146被访问, 或者Ll数据高速缓冲存储器140被访问。当处理单元105中的逻辑预测存在在Ll数据高速缓冲存储器140中命中或找到所有的加载和存储操作的时间段时,由于需要的高速缓存行在Ll数据高速缓冲存储器140中,所以不需要填充缓冲器查找。步骤530检测填充器缓冲器146的不活跃性并且停用与填充缓冲器相关联的逻辑。当停用了与填充缓冲器146相关联的逻辑时,处理单元105在每次存储器访问时消耗低的或最少的功率。在步骤M0,流程500减少Ll标签阵列144的访问路的数量。例如,在本发明的一个实施例中,在加载或存储操作期间,仅访问Ll标签阵列144的8路中的4路。在本发明的一个实施例中,步骤540解除断言填充缓冲器阻塞信号208以允许Ll路3-0读取启用信号202和Ll路7-4读取启用信号204来控制Ll标签阵列144的激活。在步骤550,流程 500检查是否存在任何高速缓存未命中。如果不存在,那么流程500返回步骤550。如果存在,那么流程500进行到步骤560以激活与填充缓冲器146相关联的逻辑。 步骤560在停用与填充缓冲器146相关联的逻辑之后检测Ll数据高速缓冲存储器140的第一个高速缓冲存储器未命中。尽管第一个未命中会导致激活与填充缓冲器146相关联的逻辑的损失,但是由于在Ll数据高速缓冲存储器140中的一长串高速缓存命中之后填充缓冲器被阻塞,所以对处理单元105的性能的影响是极小的。在步骤M0,针对访问启用Ll标签阵列144的所有的路,然后流程结束。在本发明的一个实施例中,断言填充缓冲器阻塞信号208以阻止Ll路3-0读取启用信号202和Ll路7_4读取启用信号204控制Ll标签阵列144的激活并且在每次加载或存储操作时检查Ll标签阵列144的所有的路。图6说明了根据本发明的一个实施例的用于实现本文中所公开的方法的系统 600。系统600包括但不限于台式计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、互联网设备或任何其他类型的计算设备。在另一实施例中,用于实现本文所公开的方法的系统600可以是片上系统(SOC)系统。处理器610具有用于执行系统600的指令的处理核心612。处理核心612包括但不限于用于提取指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等。 处理器610具有用于对系统600的指令和/或数据进行高速缓存的高速缓冲存储器616。 在本发明的另一实施例中,高速缓冲存储器616包括但不限于1级、2级和3级、高速缓冲存储器或处理器610中的任何其他配置的高速缓冲存储器。存储器控制中心(MCH)614执行使得处理器610能够访问存储器630和与存储器 630进行通信的功能,所述存储器630包括易失性存储器632和/或非易失性存储器634。 易失性存储器632包括但不限于同步动态随机存取存储器(SDRAM)、动态随机存取存储器 (DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其他类型的随机存取存储设备。非易失性存储器634包括但不限于NAND闪速存储器、相变存储器(PCM)、只读存储器(ROM)、 电可擦可编程只读存储器(EEPROM)或任何其他类型的非易失性存储设备。存储器630存储要由处理器610执行的信息和指令。当处理器610在执行指令时,存储器630还可以存储临时变量或其他中间信息。芯片组620经由点到点(PtP)接口 617和622与处理器610连接。芯片组620使得处理器610能够连接到系统600中的其他模块。在本发明的一个实施例中,接口 617和622依照PtP通信协议(诸如Intel 快速路径互联(QPI)等)进行操作。芯片组620连接到显示设备640,所述显示设备640包括但不限于液晶显示器(LCD)、阴极射线管(CRT)显示器或任何其他形式的视觉显示设备。此外,芯片组620连接到一个或多个总线650和655,所述总线650和655互连各个模块674、660、662、664和666。如果在总线速度或通信协议方面存在不匹配,那么总线 650和655可以经由总线桥672互连起来。芯片组620与非易失性存储器660、大容量存储设备662、键盘/鼠标664和网络接口 666相耦合(但并不限于这些设备)。大容量存储设备662包括但不限于固态驱动器、硬盘驱动器、通用串行总线闪速存储设备或任何其他形式的计算机数据存储介质。使用任何类型的公知的网络接口标准来实现网络接口 666,该网络接口标准包括但不限于以太网接口、通用串行总线(USB)接口、外围部件互连(PCI)快速接口、无线接口和/或任何其他合适类型的接口。该无线接口根据IEEE 802. 11标准和其相关的协议族、家庭插电AV (HPAV)、超宽带(UWB)、蓝牙、WiMax或任何形式的无线通信协议(但并不限于这些协议)进行操作。尽管图6中示出的模块被描述为系统600中的分离的块,但是由这些块中的一些执行的功能可以集成在单个半导体电路中或可以使用两个或更多个分离的集成电路来实现。例如,尽管高速缓冲存储器616被描述为处理器610中的分离的块,但是高速缓冲存储器616可以分别地包括在处理器核心612中。在本发明的另一实施例中,系统600可以包括不止一个处理器/处理核心。可以用硬件、软件、固件或它们的任何其他组合来实现本文公开的方法。尽管描述了所公开主题的实施例的示例,但是相关领域中的普通技术人员将容易意识到,可以替换地使用实现所公开主题的许多其他方法。在前面的描述中,已经描述了所公开主题的各个方面。为了解释的目的,阐述了具体的数字、系统和配置以便提供对本主题的透彻理解。然而,对受益于本公开的相关领域的技术人员显而易见的是,可以在没有这些具体细节的情况下实现本主题。在其他实例中,省略、简化、合并或拆分了公知的特征、部件或模块,以免模糊所公开的主题。本文中所使用的术语“是可操作的”意味着当设备或系统处于断电状态时,设备、 系统、协议等能够针对其期望的功能进行操作或适于进行操作。可以用硬件、固件、软件或它们的组合来实现所公开主题的各个实施例,并且可以参考或结合程序代码对其进行描述,其中,所述程序代码(诸如指令、函数、过程、数据结构、逻辑、应用程序、用于设计的模拟、仿真和制作的设计表示或格式)当由机器访问时,使得该机器执行任务、定义抽象数据类型或低层硬件环境或产生结果。可以用在一个或多个计算设备上存储和执行的代码和数据来实现附图中示出的技术,其中所述计算设备诸如通用计算机或计算设备。这些计算设备使用机器可读介质来存储和(内部地以及通过网络与其他计算设备)传输代码和数据,其中,所述机器可读介质诸如机器可读存储介质(例如,磁盘、光盘、随机存取存储器、只读存储器、闪速存储设备、 相变存储器)和机器可读通信介质(例如,电、光、声或其他形式的传播信号一诸如载波、红外线信号、数字信号等)。尽管已经参考说明性的实施例描述了所公开的主题,但是本描述不意图以限制的意思进行解释。说明性的实施例的各种修改以及本主题的其他实施例被认为是落在所公开的主题的范围内,上述说明性的实施例的各种修改以及本主题的其他实施例对所公开主题所属的领域中的技术人员而言是显而易见的。
权利要求
1.一种装置,包括具有多个路的数据高速缓冲存储器;以及与所述数据高速缓冲存储器耦合的逻辑,其用于响应于加载指令或存储指令促成仅对所述数据高速缓冲存储器的所述多个路的部分进行访问。
2.根据权利要求1所述的装置,其中,用于促成仅对所述数据高速缓冲存储器的所述多个路的部分进行访问的所述逻辑至少部分地基于所述数据高速缓冲存储器的虚拟地址的地址位来促成仅对所述数据高速缓冲存储器的所述多个路的部分进行访问。
3.根据权利要求1所述的装置,其中,所述数据高速缓冲存储器包括数据阵列,并且其中,所述逻辑还用于确定所述数据阵列的连续高速缓冲存储器命中的数量是否超过阈值。
4.根据权利要求3所述的装置,其中,所述数据高速缓冲存储器包括具有所述多个路的标签阵列,并且其中,所述逻辑还用于响应于确定所述数据阵列的连续高速缓冲存储器命中的数量已经超过所述阈值,促成仅对所述标签阵列的所述多个路的部分进行访问。
5.根据权利要求3所述的装置,还包括一个或多个填充缓冲器,并且其中,所述逻辑还用于响应于确定所述数据阵列的连续高速缓冲存储器命中的数量已经超过所述阈值,禁用与所述一个或多个填充缓冲器相关联的逻辑。
6.根据权利要求5所述的装置,其中,所述逻辑还用于确定是否存在所述数据阵列的高速缓冲存储器未命中;以及响应于确定存在所述数据阵列的高速缓冲存储器未命中,启用与所述一个或多个填充缓冲器相关联的所述逻辑。
7.根据权利要求4所述的装置,其中,所述逻辑还用于确定与所述加载指令或所述存储指令相关联的虚拟地址是否索引到映射到另一虚拟地址的物理地址;以及响应于确定与所述加载指令或所述存储指令相关联的所述虚拟地址索引到映射到另一虚拟地址的物理地址,促成对所述数据高速缓冲存储器的所述多个路的所有的路进行访问。
8.一种装置,包括1级(Li)非阻塞高速缓冲存储器;以及耦合到所述Ll非阻塞高速缓冲存储器的逻辑,用于确定所述Ll非阻塞高速缓冲存储器的高速缓冲存储器命中的连续时钟的数量是否超过阈值;以及响应于确定所述Ll非阻塞高速缓冲存储器的高速缓冲存储器命中的连续时钟的数量已经超过所述阈值,停用对多个填充缓冲器的访问。
9.根据权利要求8所述的装置,其中,所述逻辑还用于确定是否存在所述Ll非阻塞高速缓冲存储器的高速缓冲存储器未命中;以及响应于确定存在所述Ll非阻塞高速缓冲存储器的高速缓冲存储器未命中,激活对所述多个填充缓冲器的所述访问。
10.根据权利要求8所述的装置,其中,所述Ll非阻塞高速缓冲存储器是具有N路数据阵列的N路组相联高速缓冲存储器,并且其中,所述N路数据阵列被划分为两个或更多个组,并且其中,所述逻辑还用于接收访问所述N路组相联高速缓冲存储器的加载请求或存储请求;以及响应于所接收的加载请求或存储请求,允许仅对所述N路数据阵列的所述两个或更多个组中的一个组进行访问。
11.根据权利要求10所述的装置,其中,用于允许仅对所述N路数据阵列的所述两个或更多个组中的一个组进行访问的所述逻辑至少部分地基于所述Ll非阻塞高速缓冲存储器的虚拟地址的地址位来允许仅对所述N路数据阵列的所述两个或更多个组中的一个组进行访问。
12.根据权利要求10所述的装置,其中,所述N路数据阵列的每个组具有启用信号,并且其中,用于允许仅对所述N路数据阵列的所述两个或更多个组中的一个组进行访问的所述逻辑至少部分地基于所述N路数据阵列的每个组的每个启用信号来允许仅对所述N路数据阵列的所述两个或更多个组中的一个组进行访问。
13.根据权利要求10所述的装置,其中,所述N路组相联高速缓冲存储器还包括N路标签阵列,并且其中,所述N路标签阵列被划分为所述两个或更多个组,并且其中,所述逻辑还用于响应于确定所述Ll非阻塞高速缓冲存储器的高速缓冲存储器命中的连续时钟的数量已经超过所述阈值,允许响应于所接收的加载请求或存储请求仅对所述N路标签阵列的所述两个或更多个组中的一个组进行访问。
14.根据权利要求8所述的装置,其中,所述装置是乱序处理器。
15.一种方法,包括接收访问具有多个路的组相联高速缓冲存储器的加载指令或存储指令;以及响应于所接收的加载指令或存储指令促成仅对所述组相联高速缓冲存储器的所述多个路的部分进行访问。
16.根据权利要求15所述的方法,还包括确定所述组相联高速缓冲存储器的高速缓冲存储器命中的连续时钟的数量是否超过阈值。
17.根据权利要求16所述的方法,还包括响应于确定所述组相联高速缓冲存储器的高速缓冲存储器命中的连续时钟的数量已经超过所述阈值,停用对多个填充缓冲器的访问。
18.根据权利要求17所述的方法,还包括确定是否存在所述组相联高速缓冲存储器的高速缓冲存储器未命中;以及响应于确定存在所述组相联高速缓冲存储器的高速缓冲存储器未命中,激活对所述多个填充缓冲器的所述访问。
19.根据权利要求15所述的方法,其中,所述组相联高速缓冲存储器包括具有所述多个路的数据阵列,并且其中,所述数据阵列被划分为两个或更多个的组,并且其中,促成仅对所述组相联高速缓冲存储器的所述多个路的部分进行访问包括允许仅对所述数据阵列的所述两个或更多个组中的一个组进行访问。
20.根据权利要求15所述的方法,其中,促成仅对所述组相联高速缓冲存储器的所述多个路的部分进行访问包括至少部分地基于所述组相联高速缓冲存储器的虚拟地址的地址位促成仅对所述组相联高速缓冲存储器的所述多个路的部分进行访问。
全文摘要
一种用于降低存储设备功耗的方法和系统。在本发明的一个实施例中,存储设备是N路组相联1级(L1)高速缓冲存储器并且存在与该数据高速缓冲存储器耦合的逻辑来响应于加载指令或存储指令促成仅对N路组相联L1高速缓冲存储器的N路的部分进行访问。在本发明的一个实施例中,通过减少针对每个加载或存储请求的访问N路组相联L1高速缓冲存储器的路的数量,降低了N路组相联L1高速缓冲存储器的功率要求。在本发明的一个实施例中,当作出对高速缓冲存储器的访问仅需要N路组相联L1高速缓冲存储器的数据阵列的预测时,停用或禁用对填充缓冲器的访问。
文档编号G06F12/02GK102298554SQ20111017431
公开日2011年12月28日 申请日期2011年6月24日 优先权日2010年6月24日
发明者E·科亨, O·马古利斯, R·萨德, S·施瓦兹曼 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1