访问处理器缓存的方法和系统的制作方法

文档序号:6465634阅读:150来源:国知局
专利名称:访问处理器缓存的方法和系统的制作方法
技术领域
本发明一般涉及在处理器中执行指令。
技术背景现代计算机系统通常包含几个集成电路(IC),所述集成电路包括可以用来在计算机系统中处理信息的处理器。处理器处理的数 据可以包括该处理器执行的计算机指令以及该处理器使用计算机指 令操作的数据。计算机指令和数据通常存储在计算机系统中的主存 储器中。处理器通常通过以一系列小步骤执行指令来处理指令。在某些 情况下,为了增加处理器处理的指令数量(并因此提高处理器速度), 处理器可以利用流水线技术。流水线技术涉及在处理器中提供分开 的阶段,每个阶段进行一个或多个执行指令所必须的小步骤。在某 些情况下,流水线(除了其他电路外)可以置于称为处理器内核的 处理器部分中。为了提供对数据和指令的更快速访问以及更好的处理器利用, 处理器可以具有几个緩存。緩存是通常小于主存储器的存储器,并 且通常制造在与处理器相同的晶元(即,芯片)上。现代处理器通 常具有若千级緩存。与处理器内核距离最近的最快速緩存称为 一 级緩存(Ll緩存)。除了 Ll緩存外,处理器通常具有第二个更大的 緩存,称为二级緩存(L2緩存)。在某些情况下,处理器可以具有 其他的附加緩存级(例如,L3緩存和L4緩存)。现代处理器提供了地址转换,该地址转换允许软件程序使用有 效地址的集合来访问更大集合的真实地址。在访问緩存期间,由载緩存。因此,处理器可以包括被配置以在载入或者存储指令访问Ll緩存之前执行地址转换的电路。但是,由于地址转换,到L1緩存的访问时间会增加。而且,在处理器包括多个内核,每个内核都执行 地址转换的情况下,来自于提供地址转换电路以及在执行多个程序 时执行地址转换的开销会变得不合需要。因此,需要的是 一 种用于访问处理器緩存的改进型方法和装置。发明内容本发明 一般性地提供了 一种用于访问处理器缓存的方法。在一 个实施例中,该方法包括使用被请求数据的被请求有效地址来访问 处理器中的一个或多个一级緩存中的被请求数据。如果处理器的一 个或多个一级緩存不包含对应于被请求有效地址的被请求数据,则 被请求有效地址被转换成真实地址。后备緩沖器包括针对处理器中 一个或多个一级緩存的每一个中的每条緩存线的相应条目。相应条 目指示从有效地址到緩存线的真实地址的转换。经过转换的真实地 址用于访问二级緩存。本发明的一个实施例还提供了处理器,其包括一个或多个一级 緩存、二级緩存和后备緩冲器。该处理器还包括电路,该电路被配 置以使用被请求数据的被请求有效地址来访问处理器中的 一 个或多 个一级緩存中的被请求数据。如果处理器的一个或多个一级緩存不 包含对应于被请求有效地址的被请求数据,则纟皮请求有效地址纟皮转 换成真实地址。后备緩存包括针对处理器中 一 个或多个 一级緩存的 每一个中的每条緩存线的相应条目。相应条目指示从有效地址到緩 存线的真实地址的转换。该电路还被配置以使用经过转换的真实地 址来访问二级緩存。本发明的一个实施例提供了 一种包括二级緩存和处理器的系 统。该处理器包括一个或多个一级緩存和后备緩冲器,该后备緩沖 器被配置以包括针对置于处理器的一个或多个一级緩存中的每条緩 存线的对应条目。相应条目指示针对緩存线从有效地址到真实地址的转换。该处理器还包括电路,该电路被配置以使用被请求数据的 被请求有效地址来访问处理器的 一 个或多个 一 级緩存中的被请求数 据。如果处理器的 一 个或多个 一 级緩存不包含对应于被请求有效地 址的被请求数据,则被请求有效地址被转换成真实地址。使用经过 转换的真实地址访问二级緩存。


为了使其中包含本发明的上述特征、优势和目的的方式能够被 获得且被详细地理解,通过参考附图中示出的本发明的实施例,可 以得到对上述简要概述的本发明的更加具体的描述。然而需要注意的是,附图示出的仅仅是本发明的典型实施例, 由于本发明可以允许其他等效的实施例,因此不能认为附图是对本 发明范围的限制。图1是示出了根据本发明一个实施例的系统的框图。图2是示出了根据本发明一个实施例的计算机处理器的框图。图3是示出了根据本发明一个实施例的处理器的内核之一的框图。图4是示出了根据本发明一个实施例的、用于访问緩存的处理 的流程图。图5是示出了根据本发明一个实施例的緩存的框图。 图6是示出了根据本发明一个实施例的、用于使用分离目录 (split directory )来访问緩存的处理的流程图。图7是示出了根据本发明一个实施例的分离緩存目录的框图。 图8是示出了根据本发明一个实施例的緩存访问电路的框图。 图9是示出了根据本发明一个实施例的、用于使用緩存访问电 路来访问緩存的处理的框图。
具体实施方式
本发明 一般性地提供了 一种用于访问处理器中緩存存储器的方法和装置。该方法包括^吏用被请求数据的被请求有效地址来访问 处理器的一个或多个一级缓存中的被请求数据。如果处理器的一个 或多个一级緩存不包含对应于被请求有效地址的被请求数据,则将 被请求有效地址转换成真实地址。后备緩冲器包括针对处理器的一 个或多个一级緩存的每一个中的每条緩存线的相应条目。相应条目 指示从有效地址到緩存线的真实地址的转换。经过转换的真实地址 用于访问二级緩存。在下文中,将对本发明的实施例进行参考。然而,应当理解的 是,本发明并不限于具体描述的实施例。相反,不论是否与不同的 实施例相关,下列特征和元件的任意结合都打算用于实现和实施本 发明。而且,在各种实施例中,本发明相比于现有技术提供了许多 优势。然而,尽管本发明的实施例可以实现优于其他解决方案和/或 现有技术的优势,但特定优势是否是由本发明的给定实施例来实现 并不是对本发明的限制。因此,除了在权利要求中明确叙述的情况 之外,下列的各个方面、特征、实施例以及优势仅仅是示例性的,制。同样,除了在权利要求中明确叙述的情况之外,对于"发明" 的引用不应理解为是此处所公开的任何本发明主题的概括,也不应 理解为是所附权利要求的要素或者是对所附权利要求的限制。以下是在附图中描绘的本发明实施例的详细描述。这些实施例 是示例并且如此详细是为了清楚地传达本发明。但是,所提供的细节数量并不旨在限制预期的实施例变体;相反,本发明用于覆盖落入所附权利要求中定义的本发明精神和范围内的所有变体、等同物以及4#4戈物。本发明的实施例可以与系统(例如,计算机系统) 一起利用, 并在下面针对系统进行描述。如在此所使用的那样,系统可以包括 利用处理器和緩存存储器的任何系统,包括个人计算机、互联网应 用、数字媒体应用、便携式数字助理(PDA)、便携式音乐/视频播 放器以及视频游戏控制器。尽管緩存存储器可以位于与利用该緩存存储器的处理器相同的晶元(die)上,但是在某些情况下,处理器 和緩存存储器可以位于不同的晶元上(例如,单独的模块内的单独 的芯片上或者单个模块内的单独的芯片上)。尽管以下针对具有多个处理器内核和多个Ll緩存的处理器进行 了描述,其中每个处理器内核使用多个流水线来执行指令,但是本 发明的实施例可以与任何使用了緩存的处理器(包括具有单个处理 内核的处理器)一起使用。通常,本发明的实施例可以与任何处理 器一起使用并且不限于任何具体的配置。而且,尽管在下面针对具 有Ll緩存的处理器(其被划分为Ll指令緩存(Ll I緩存或者I緩 存)以及L1数据緩存(Ll D緩存或者D缓存))进行了描述,但 是本发明的实施例可以在利用了统一的Ll緩存的配置中使用。而 且,尽管在下面针对利用了 Ll緩存目录的Ll緩存进行了描述,但 是本发明的实施例在未使用緩存目录的情况下仍可使用。示例性系统的概述图1是示出了根据本发明一个实施例的系统100的框图。系统 100可以包含用于存储指令和数据的系统存储器102、用于图形处理 的图形处理单元104、用于与外部设备通信的1/0接口 、用于长期存 储指令和数据的存储设备108,以及用于处理指令和数据的处理器 110。根据本发明的一个实施例,处理器IIO可以具有L2緩存112以 及多个L1緩存116,每个Ll緩存116被多个处理器内核1M之一 使用。根据一个实施例,每个处理器内核114都可以利用流水线, 其中在 一 系列小步骤中执行每个指令,每个步骤由不同的流水线阶段执行。图2是示出了根据本发明一个实施例的处理器110的框图。为 了简便,图2示出了处理器110的单个内核114并针对其进行了描 述。在一个实施例中,每个内核114可以是相同的(例如,包含具 有相同流水线阶段的相同流水线)。在另一个实施例中,每个内核 114可以是不同的(例如,包含具有不同阶段的不同流水线)。在本发明的一个实施例中,L2緩存112可以包含处理器110正 在使用的指令和数据的一部分。在某些情况下,处理器110可以请 求不包含在L2緩存112中的指令和数据。在所请求的指令和数据不 包含在L2緩存112中的情况下,所请求的指令和数据可以被检索(从 更高级别的缓存或者从系统存储器102)并将其置于L2緩存112中。如上所述,在某些情况下,L2緩存112可以由一个或多个处理 器内核114共享,每个内核使用单独的Ll缓存116。在一个实施例 中,处理器IIO还可以在嵌套(nest) 216中提供电路,该电路由一 个或多个处理器内核114以及L1緩存116共享。这样,当给定的处 理器内核U4从L2緩存112请求指令时,该指令可以首先由嵌套216 中的预解码器和调度器220处理,其中该预解码器和调度器220在 一个或多个处理器内核114之间共享。嵌套216还可以包括以下将 更详细地描述的L2緩存访问电路210,其可以由一个或多个处理器 内核114使用来访问共享的L2緩存112。在本发明的一个实施例中,可以从L2緩存112中成组地取回称 为I线的指令。类似地,可以从L2緩存112中成组地取回称为D线 的数据。图1中示出的Ll緩存116可以分为两部分,即用于存储I 线的Ll指令緩存222 (I緩存222 )以及用于存储D线的Ll数据緩 存224 (D緩存224) 。 I线和D线都可以使用L2访问电路210从 L2緩存112取回。从L2緩存112检索的I线可以由预解码器和调度器220处理并 且I线可以置于I緩存222中。为了进一步改进处理器性能,可以对 指令进行预解码,例如,当从L2 (或者更高的)緩存检索I线时以 及在将指令置于L1緩存116以前进行预解码。这样的预解码可以包 括各种功能,诸如地址生成、分支预测以及调度(确定指令的分发 顺序),其作为控制指令执行的分发信息(标志集合)而被捕获。 在处理器110中另一位置执行解码的情况下,例如在已经从L1緩存 116检索指令后执行解码的情况下,也可以使用本发明的实施例。在某些情况下,可以在多个内核114和L1 i爰存116之间共享预解码器和调度器220。类似地,从L2緩存112取回的D线可以置于 D緩存224中。每个I线和D线中的比特可以用来追踪L2緩存112 中的信息线是I线还是D线。可选地,除了以I线和/或D线的方式 从L2緩存112取回数据以外,可以按照其他方式(例如,通过取回 更少量、更大量或者各种量的数据)从L2緩存112取回数据。在一个实施例中,I緩存222和D緩存224可以分别具有I緩存 目录223和D緩存目录225以追踪哪些I线和D线当前处于I緩存 222和D緩存224中。当将I线或D线添加到I緩存222或者D緩 存224时,可以将相应的条目置于I緩存目录223或者D緩存目录 225中。当将I线或D线从I緩存222或者D緩存224移除时,可以 将相应的条目从I緩存目录223或者D緩存目录225中移除。尽管 以下针对利用了 D緩存目录225的D緩存224进行描述,但是本发 明的实施例还可以在未利用D緩存目录225的情况中使用。在这种 情况下,存储在D緩存224中的数据本身可以指示什么D线位于D 緩存224中。在一个实施例中,指令取回电路236可以用于为内核114取回 指令。例如,指令耳又回电路236可以包含程序计数器,其追踪内核 114中正在执行的当前指令。内核114内的分支单元可以用于在遇到 分支指令时改变程序计数器。I线緩沖器232可以用于存储从LI I 緩存222取回的指令。发布队列234及相关联的电路可以用来将I 线緩冲器232中的指令聚集成指令组,然后如下所述,指令组被并 行地发布到内核114。在某些情况下,发布队列234可以使用预解码 器和调度器220提供的信息来形成适当的指令组。除了从发布队列234接收指令外,内核114还可以接收来自于 各种位置的数据。在内核114向数据寄存器要求数据时,寄存器文 件240可以用来获取数据。在内核114向存储器位置要求数据时, 緩存载入和存储电路250可以用来从D緩存224载入数据。在执行 这样的载入时,对被要求数据的请求可以发布到D緩存224。同时, 可以检查D緩存目录225以确定被期待的数据是否位于D緩存224中。在D緩存224包含所期待的数据的情况下,D緩存目录225可 以指示D缓存224包含所期待的数据并且可以在后来的某个时间 完成D緩存访问。在D緩存224不包含所期待的数据的情况下,D 緩存目录225可以指示D緩存224不包含所期待的数据。由于D緩 存目录225可以比D緩存224更快地被访问,所以对于被期待数据 的请求可以在完成D緩存访问之前发布到L2緩存112 (例如,使 用L2访问电J 各210)。在某些情况下,可以在内核114中修改数据。经过修改的数据 可以写入寄存器文件240,或者存储在存储器102中。回写(write back )电路238可以用于将数据回写寄存器文件240 。在某些情况下, 回写电路238可以利用緩存载入和存储电路250来将数据回写D緩 存224。可选地,内核114可以直^姿访问緩存载入和存^f诸电^各250 来执行存储。在某些情况下,回写电路238还可以用来将指令回写I 緩存222。如上所述,发布队列234可以用来形成指令组并且将形成的指 令组发布到内核114。发布队列234还可以包括轮转(rotate)和合 并(merge) I线中的指令从而形成合适的指令组的电路。发布组的 形成可以考虑几种因素,诸如发布组中指令之间的依赖性以及可以 通过以下详述的指令排序而达到的优化。 一旦形成了发布组,则发 布组将会被并行地分发至处理器内核114。在某些情况下,指令组可 以包含一个针对内核114中每个流水线的指令。可选地,指令组可 以是较少数量的指令。根据本发明的一个实施例, 一个或多个处理器内核114可以利 用级联的、延迟的执行流水线配置。在图3示出的示例中,内核114 包含四个级联配置的流水线。可选地,更少数量(两个或多个流水 线)或者更多数量(多于四个流水线)可以在这种配置中使用。而 且,图3中描述的流水线的物理布局是示例性的,并且并不必定暗 示级联的、延迟的执行流水线单元的实际物理布局。在一个实施例中,级联的、延迟的执行流水线配置中的每个流水线(P0、 Pl、 P2和P3)可以包含执行单元310。执行单元310可 以执行针对给定流水线的一个或多个功能。例如,执行单元310可 以执行取回指令以及解码指令的全部或者部分。执行单元执行的解 码可以与预解码器和调度器220分享,其中该预解码器和调度器220 在多个内核114间共享或者可选地可以由单个内核114使用。执行 单元310还可以从寄存器文件240读取数据、计算地址、执行整数 运算功能(例如,使用算术逻辑单元,或者说是ALU)、执行浮点 运算功能、执行指令分支、执行数据访问功能(例如,从存储器载 入或者存储),以及将数据存储回(例如,寄存器文件240中的) 寄存器。在某些情况下,内核114可以利用指令取回电路236、寄存 器文件240、緩存载入和存储电路250、回写电路238以及其他任何 电路,来执行这些功能。在一个实施例中,每个执行单元310可以执行同样的功能(例 如,每个执行单元310可以能够执行载入/存储功能)。可选地,每而且,在某些情况下,每个内核114中的执行单元310可以与在其 他内核中提供的执行单元310相同或者不同。例如,在一个内核中, 执行单元310o和3102可以执行载入/存储和算术功能,而执行单元 310!和3103可以仅执行算术功能。在一个实施例中,如所述,执行单元310中的执行可以相对于 其他执行单元310而言以延迟的方式进行。所描述的布置还可以称 为级联的、延迟的配置,但是所描述的布局并不必须指示执行单元 的实际物理布局。在这种配置中,其中指令组中的四个指令(为了 简便,称为10、 II、 12和13)并行地发布到流水线PO、 Pl、 P2和 P3,每个指令可以相对于每个其他指令而言以延迟的方式执行。例 如,针对流水线PO,指令10可以首先在执行单元310。中执行;然 后,针对流水线P1,指令Il可以在执行单元31(h中执行,等等。10 可以立即在执行单元3100中执行。稍后,当在执行单元310。中执行 完指令I0后,执行单元31(^可以开始执行指令I1,等等,使得并行发布到内核114的指令可以相对于彼此以延迟的形式执行。在一个实施例中,某些执行单元310可以相对于彼此被延迟, 而其他执行单元310不相对于彼此被延迟。在第二指令的执行取决 于第一指令的执行的情况下,转发路径312可以用来将结果从第一 指令转发到第二指令。所描述的转发路径312仅仅是示例性的,并 且内核114可以包含从执行单元310中不同点到其他执行单元310 或者同一执行单元310的更多转发路径。在一个实施例中,执行单元310未执行的指令可以保持在延迟 队列310中或者目标延迟队列330中。延迟队列320可以用来将指 令保持在还未由执行单元310执行的指令组中。例如,在指令IO正 在执行单元310。中执行时,指令II、 12和13可以保持在延迟队列 330中。 一旦指令已经移动通过延迟队列330,则该指令可以发布到 合适的执行单元310并且被执行。目标延迟队列330可以用来保持 已经由执行单元310执行的指令的结果。在某些情况下,目标延迟 队列330中的结果可以转发到执行单元310用于处理或者在合适的 情况下被无效。类似地,在某些情况下,延迟队列中的指令可 以被无效,如下所述。在一个实施例中,在指令组中的每个指令都已经通过延迟队列 320、执行单元310和目标延迟队列330后,结果(例如,数据,以 及如下所述的指令)可以回写寄存器文件或者Ll I緩存222和/或D 緩存224。在某些情况下,回写电路306可以用来将最近修改过的寄 存器的值回写并丟弃无效的结果。访问緩存存储器在本发明的一个实施例中,可以使用有效地址访问用于每个处 理器内核114的Ll緩存116。在Ll緩存116使用单独的Ll I緩存 222和L1 D緩存224的情况下,也可以使用有效地址访问緩存222 和224的每一个。在某些情况下,通过使用正在由处理器内核114 执行的指令直接提供的有效地址来访问Ll緩存116,可以在Ll緩 存访问期间省掉地址转换产生的处理开销,从而提高了速度并减小了处理器内核114访问Ll緩存116的功率。在某些情况下,多个程序可以使用同一有效地址来访问不同的 数据。例如,第一程序可以使用第一地址转换,该第一地址转换指 示第一有效地址EA1被用来访问对应于第一真实地址RA1的数据。 第二程序可以使用第二地址转换来指示EA1被用来访问第二真实地 址RA2。通过针对每个程序使用不同的地址转换,用于每个地址的 有效地址可以转换成更大真实地址空间中的不同真实地址,从而防 止不同程序无意中访问不正确的数据。地址转换可以例如维护在系 统存储器102中的页表内。处理器110使用的地址转换的一部分可 以緩存到例如后备緩冲器中,诸如转换后备緩沖器或者分段后备緩 冲器。在某些情况下,由于可以使用有效地址来访问Ll緩存116中的 数据,所以可能期待避免使用同一有效地址的不同程序无意中访问 不正确的数据。例如,如果第一程序使用EA1访问Ll緩存116,而 地址还被第二程序使用来表示RA2,则第一程序应当从L1緩存116 接收对应于RA1的数据,而不是对应于RA2的数据。因此,在本发明的一个实施例中,处理器110可以确保对于 在处理器110的内核114中使用以访问该内核114的Ll緩存的每个 有效地址而言,Ll緩存116中的数据是针对由正在执行的程序使用 的地址转换的正确数据。因此,当处理器110使用的后备緩沖器包 含用于第一程序的条目(指示有效地址EA1转换成真实地址RA1) 的情况下,处理器110可以确保L1緩存116中的任何被标识为具有 有效地址EA1的数据与存储在真实地址RA1处的数据相同。在用于 EA1的地址转换条目从后备緩冲器移除的情况下,如果存在相应数 据的话,则将其也从L1援存U6移除,从而确保Ll緩存116中的 所有数据都具有后备緩冲器中的有效转换条目。通过确保Ll緩存 116中的所有数据都由用于地址转换的后备緩沖器中的相应条目映 射,可以使用有效地址访问Ll緩存116,同时避免了给定程序无意 中从L1緩存116接收到不正确的数据。图4是示出了根据本发明一个实施例的、用于访问Ll緩存116 (例如,Di爰存2!24)的处理的流程图。处理400可以在步骤402处 开始,其中接收访问指令,该访问指令包括将要由该访问指令访问 的数据的有效地址。访问指令可以是处理器内核114接收的载入或 者存储指令。在步骤404,访问指令可以由处理器内核114执行,例 如在具有载入-存储能力的执行单元310之一中执行。在步骤406,访问指令的有效地址可以在没有地址转换的情况下 被用来确定用于处理器内核114的L1緩存U6是否包括对应于该访 问指令有效地址的数据。如果在步骤408处确定L1緩存116包括对 应于有效地址的数据,则可以在步骤410从L1緩存116 4是供用于该 访问的数据。但是,如果在步骤408处确定L1緩存116不包括该数 据,则在步骤412处,可以向L2緩存访问电^各210发送请求以;险索 对应于该有效地址的数据。L2緩存访问电路210可以例如从L2緩 存112中取回数据或者从緩存存储器体系的更高级緩存中检索数据, 例如从系统存储器102中检索,并且将检索到的数据放置在L2緩存 112中。在步骤414,用于访问指令的数据随后可以从L2緩存112 提供。图5是示出了根据本发明一个实施例、用于使用有效地址访问 Ll D緩存224的电路的框图。如上所述,本发明的实施例还可以在 利用有效地址访问统一 的L1缓存116或者L1 I緩存222的情况下使 用。在一个实施例中,Ll D緩存224可以包括多个存储体(bank), 诸如BANKO 502和BANK1 504。 Ll D緩存224还可以包括多个端 口 ,它们可以用于例如根据应用到Ll D緩存224的载入-存储有效 地址(LSO、 LS1、 LS2和LS3)来读取两个四字(quadruple words) 或者四个双字(DWO、 DW1、 DWO,和DWl,)。 L1D緩存224可以 是直接映射的、组关联的或者全关联的緩存。在一个实施例中,D緩存目录225可以用于访问Ll D緩存224。 例如,用于被请求数据的有效地址EA可以提供给目录225。目录"5 也可以是直接映射的、组关联的或者全关联的緩存。在目录225是关联的情况下,有效地址的一部分(EA SEL)可以由用于目录225 的选择电路510使用来访问关于被请求数据的信息。如果目录225 不包含对应于被请求数据的有效地址的条目,则目录225可以声明 丢失信号,该信号可以用来例如向緩存体系的更高级緩存请求数据(例如,从L2緩存112或者从系统存储器102)。但是,如果目录 225确实包含对应于被请求数据的有效地址的条目,则目录可以由 Ll D緩存224的选4奪电路506和508使用来提供被请求数据。在本发明的一个实施例中,Ll緩存116、 Ll D緩存224和/或 Ll I緩存222还可以4吏用分离的緩存目录进行访问。例如,通过分 离地访问緩存目录,可以更快地执行对目录的访问,从而在访问緩 存存储器系统时改善处理器110的性能。尽管以上针对利用有效地 址访问存储器进行了描述,但是分离的緩存目录可以与任何緩存器 级别(例如,Ll、 L2等) 一起使用,其中这些緩存器可以用任何类 型的地址(例如,真实地址或者有效地址)进4亍访问。图6是示出了根据本发明一个实施例的、用于使用分离目录访 问缓存的处理600的流程图。处理600可以在步骤602处开始,其 中接收访问緩存的请求。该请求可以包括将要访问的地址的地址(例 如,真实地址或者有效地址)。在步骤604,地址的第一部分(例如, 高位比特,或者可选地,低位比特)可以用于执行对用于緩存的第 一目录的访问。由于第一目录可以利用地址的一部分进行访问,所 以可以减小第一目录的大小,从而允许比4交大目录更快地访问第一目录。在步骤620,可以确定第一目录是否包括与被请求数据的地址的 第一部分对应的条目。如果确定目录不包括用于第一部分的条目, 则可以在步骤624处声明指示緩存丟失的第一信号。响应于检测到 指示緩存丢失的第一信号,可以在步骤628处向緩存存储器的更高 级緩存发送取回被请求数据的请求。如上所述,由于第一目录较小 并且可以比较大目录更快速地被访问,所以可以更快速地确定是否 声明指示緩存丟失的第 一信号以及是否开始从更高级别的緩存取回存储器。由于用于第一目录的较短访问时间,可以将第一信号称为 早期丟失信号。如果第一目录确实包括用于第一部分的条目,则可以使用在步骤608处对第一目录的访问结果来选择来自緩存的数据。如上所述, 由于第一目录较小并且可以比较大目录更快速地被访问,所以对来 自緩存的数据的选择可以更快速地执行。因此,可以比利用较大统 一目录的系统中更快速地完成緩存访问。在某些情况下,由于使用地址的一部分(例如,地址的高位比 特)对来自緩存的数据进行选择,所以从緩存选择的数据可能与正 在执行的程序所请求的数据不匹配。例如,两个地址可以具有相同 的高位比特,而低位比特可以不同。如果被选择的数据具有与所请 求数据地址的低位比特不同的低位比特的地址,则被选择的数据可 能与被请求数据不匹配。因此,在某些情况下,对来自緩存的数据 的选择可以认为是不确定的,因为所选择的数据是被请求数据只是 存在很大的概率,但也不是绝对地确定。在一个实施例中,用于緩存的第二目录可以用来验证是否已经 从緩存选择出了正确的数据。例如,可以在步骤610利用地址的第 二部分访问第二目录。在步骤622,确定第二目录是否包括与该地址 的第二部分对应的条目,其中该条目与来自第一目录的条目相匹配。 例如,第一目录和第二目录中的条目可以具有附加的标签,或者可 以存储在每个目录中的相应位置,从而指示这些条目对应于单个匹 配的地址,其中该地址包括地址的第一部分和地址的第二部分。如果第二目录不包括对应于地址第二部分的匹配条目,则可以 在步骤626处声明指示緩存丟失的第二信号。由于即使在未声明上 述第 一信号时也可以声明第二信号,所以第二信号可以称为后期緩 存丢失信号。可以在步骤628处使用第二信号来发送从较高级别緩 存存储器(诸如L2緩存112)取回被请求数据的请求。第二信号还 可以用于防止将错误选择的数据存储到另 一存储器位置中、存储在 寄存器中,或者在操作中使用。被请求数据可以在步骤630处从较高级别緩存存储器提供。如果第二目录确实包括对应于地址第二部分的匹配条目,则可以在步骤614处声明第三信号。第三信号可以验证使用第一目录选 择的数据与被请求数据相匹配。在步骤616处,针对緩存访问请求 的所选择数据可以从緩存提供。例如,所选择的数据可以在算术操 作中使用、存储到另一存储器地址,或者存储到寄存器中。关于图6中示出的以及以上描述的处理600的步骤,所提供的 顺序仅仅是示例性的。通常,可以以任何合适的顺序执行步骤。例如,关于提供所选择的数据(例如,用于在后续操作中使用),所 选择的数据可以在访问完第一目录之后但是在第二目录一验证该选择之前提供。如果第二目录指示所选择并提供的数据不是被请求数据, 则可以采取后续步骤来取消利用推测选择的数据执行的任何动作, 如本领域普通技术人员所知。而且,在某些情况下,第二目录可以 在第 一 目录之前被访问。在某些情况下,如上所述,多个地址可以具有相同的高位比特 或者低位比特。因此,第一目录可以具有与地址的给定部分(例如, 高位比特或者低位比特,这取决于第一目录和第二目录如何配置) 匹配的多个条目。在一个实施例中,在第一目录包括与用于被请求 数据的地址的给定部分相匹配的多个条目的情况下,可以选择来自 第一目录的条目中的一个并用其从緩存选择数据。例如,第一目录 中最近最多使用的多个条目可以用来从緩存选择数据。然后,可以 在稍后验证该选择以确定是否使用了用于被请求数据的地址的正确 条目。如果对第一目录的条目选择是错误的,则可以使用一个或多个 其他条目来从緩存选择数据并且确定该一个或多个其他条目是否与 用于被请求数据的地址相匹配。如果第一目录中的其他条目之一与 用于被请求数据的地址相匹配并且还利用来自第二目录的相应条目 进行了验证,则所选择的数据可以在后续操作中使用。如果第一目 录中没有条目与第二目录中的条目相匹配,则可以用信号通知緩存丟失并且可以从緩存存储器体系的更高级别取回数据。图7是示出了根据本发明一个实施例、包括第一D緩存目录704 和第二 D緩存目录712的分离缓存目录。在一个实施例中,第一D 缓存目录702可以用有效地址的高位比特(EA高)进行访问,而第 二 D緩存目录712可以利用有效地址的低位比特(EA低)进行访问。 如上所述,实施例还可以在使用真实地址访问第一和第二 D緩存目 录702、 712的情况下使用。第一和第二 D缓存目录702、 712还可 以是直接映射的、组关联的或者全关联的。目录702、 712可以包括 选择电路704、 714,该电路用于从各个目录702、 712选择数据条目。如上所述,在访问L1D緩存224期间,用于访问的地址的第一 部分(EA高)可以用于访问第一D緩存目录702。如果第一D緩存 目录702包括对应于地址的条目,则该条目可以用来经由选4f电路 506、 508访问Ll D緩存224。如果第一 D緩存目录702不包括对应 于地址的条目,则可以如上所述声明称为早期丢失信号的丟失信号。 早期丢失信号可以用来例如发起从緩存存储器体系的较高级别的取 回和/或产生表示緩存丢失的异常。在访问期间,用于访问的地址的第二部分(EA〗氐)可以用来访 问第二D緩存目录712。对应于该地址的、来自于第二D緩存目录 712的任何条目可以使用比较电路720与来自第一 D緩存目录720 的条目相比较。如果第二D緩存目录712不包括对应于该地址的条 目,或者如果来自第二D緩存目录712的条目与来自第一D緩存目 录702的条目不匹配,则可以声明称为后期丢失信号的丢失信号。 但是,如果第二 D緩存目录712确实包括对应于该地址的条目以及 如果来自第二 D緩存目录712的条目与来自第一D緩存目录702的 条目确实匹配,则可以声明称为选择确认信号的信号,该信号指示 从L1缓存224选择的数据确实对应于被请求数据的地址。图8是示出了根据本发明一个实施例的緩存访问电路的框图。 如上所述,在被请求数据不位于Ll缓存116中的情况下,可以向 L2緩存112发送对数据的请求。而且,在某些情况下,处理器110可以被配置以将指令预取到Ll緩存116中,例如基于处理器110正 在执行的程序的预定执行路径进行预取。因此,L2緩存112还可以 接收对将要被预取并且将被置于Ll緩存116中的数据的请求。在一个实施例中,对来自L2緩存112的数据的请求可以由L2 纟爰存访问电^各210 "l妻收。如上所述,在本发明的一个实施例中,处 理器内核114以及L1緩存116可以被配置以使用用于数据的有效地 址来访问数据,而L2緩存112可以使用数据的真实地址进行访问。 因此,L2緩存访问电路210可以包括地址转换控制电路806,其可 以被配置以将从内核114接收的有效地址转换成真实地址。例如, 地址转换控制电路可以使用在分段后备緩冲器802和/或转换后备緩 冲器804中的条目来进行此转换。在地址转换控制电路806已经将 接收的有效地址转换成真实地址后,真实地址可以被用来访问L2緩 存112。如上所述,在本发明的一个实施例中,为了确保处理器内核l" 正在执行的线程在使用数据的有效地址的同时访问正确的数据,处 理器110可以确保Ll緩存116中的每个有效数据线由SLB 802和/ 或TLS 804中的有效条目进行映射。因此,在后备緩冲器802、 804 中的一个中除去条目或者使之无效时,地址转换控制电路806可以 被配置以从各个后备緩沖器802、 804提供线的有效地址(无效EA) 以及无效信号,该信号指示如果存在数据线的话,应该将其从L1緩 存116和/或Ll緩存目录(例如,从I緩存目录223和/或D緩存目 录225 )中移除。在一个实施例中,由于处理器IIO可以包括多个内核1M,它们 不使用地址转换以用于访问各个L1緩存116,所以在内核114执行 地址转换时会出现的能量消耗将会减小。而且,地址转换控制电路 806和其他L2緩存访问电路210可以由每个内核114共享以用于#丸 行地址转换,从而在L2緩存访问电路210消耗的芯片空间方面(例 如,在L 2緩存112与内核114位于同 一 芯片的情况下)减小了开销。在一个实施例中,处理器110的内核114共享的嵌套216中的L2緩存访问电路210和/或其他电路可以以低于内核114频率的频率 进行操作。因此,例如,嵌套216中的电路可以使用第一时钟信号 来执行操作,而内核114中的电路可以使用第二时钟信号来执行操 作。第一时钟信号可以具有比第二时钟信号的频率低的频率。通过 以比内核114中的电路的频率低的频率操作嵌套216中共享的电路, 可以减小处理器110的功率消耗。而且,尽管操作嵌套216中的电 路会增加L2緩存访问次数,但是访问时间总的增加与用于L2緩存 112的典型总访问时间相比相^j"较小。图9是示出了根据本发明一个实施例的、用于使用緩存访问电 路210来访问L2緩存112的处理900的框图。处理900开始于步骤 902,其中请求取回来自于L2緩存112的被请求数据。请求可以包 括用于被请求数据的有效地址。在步骤904,可以确定后备緩沖器(例 如,SLB 803和/或TLB 804)是否包括用于被请求数据的有效地址 的条目。在步骤904处,可以确定后备緩冲器802、 8(M是否包括用于被 请求数据的有效地址的第一页表条目。如果后备緩冲器802、 8(M确 实包括用于被请求数据的有效地址的页表条目,则在步骤920处, 第一页表条目可以用于将有效地址转换成真实地址。但是,如果后 备緩沖器802、 804确实包括用于被请求数据的有效地址的页表条目, 则在步骤906处,可以例如从系统存储器102中的页表取回第一页 表条目。在某些情况下,当从系统102取回新的页表条目并将其置于后 备緩冲器802、 804中时,新的页表条目可以取代后备緩冲器802、 804中的旧条目。因此,当旧页表条目被取代时,Ll缓存116中任 何对应于被替换的条目的緩存线可以从L1緩存116移除以确保访问 Ll缓存116的程序能够访问正确的数据。这样,在步骤908处,第 二页表条目可以由取回的第一页表条目进行替换。在步骤910处,第二页表条目的有效地址可以提供至Ll緩存 116,指示任何对应于第二页表条目的数据应当从Ll緩存116中冲洗掉和/或被无效。如上所述,通过将在TLB 804和/或SLB 802中未 被映射的Ll緩存线冲洗掉和/或无效掉,可以防止处理器内核114 正在执行的程序用有效地址无意中访问到不正确的数据。在某些情 况下,页表条目可以称为多个L1緩存线。而且,在某些情况下,单 个SLB条目可以称为包括多个Ll緩存线的多个页面。在这种情况 下,将要从L1緩存移除的页面的指示可以发送到处理器内核114并 且可以从L1緩存U6移除对应于每个被指示页面的每个緩存线。而 且,在利用Ll緩存目录(或者分离緩存目录)的情况下,Ll缓存 目录中任何对应于被指示页面的条目也可以被移除。在步骤920处, 当第一页表条目位于后备緩冲器802、 804中时,第一页表条目可以 用来将被请求数据的有效地址转换成真实地址。然后,在步骤922 处,通过转换获耳又的真实地址可以用来访问L2缓存112。通常,以上描述的本发明的实施例可以与具有任意数量处理器 内核的任何类型的处理器一起使用。在使用多个处理器内核114的 情况下,L2緩存访问电路210可以为每个处理器内核1M提供地址 转换。因此,当从TLB 804或者SLB 802将条目移除时,可以将信 号发送至用于处理器内核114的每个L1緩存116,该信号指示任何 相应的緩存线应当从L1緩存116移除。虽然前述说明针对的是本发明的实施例,然而在不偏离本发明 的基本范围的情况下,可以设想出本发明的其它和进一步的实施例, 并且本发明的范围由所附权利要求来定义。
权利要求
1.一种访问处理器中缓存存储器的方法,该方法包括使用被请求数据的被请求有效地址来访问该处理器的一个或多个一级缓存中的该被请求数据;如果该处理器的一个或多个一级缓存不包含对应于该被请求有效地址的被请求数据,则将该被请求有效地址转换成真实地址,其中后备缓冲器包括针对该处理器的一个或多个一级缓存的每个中的每个缓存线的相应条目,其中该相应条目指示从该有效地址到该缓存线的真实地址的转换;以及使用经过转换的真实地址来访问二级缓存。
2. 如权利要求l的方法,其中使用转换后备緩冲器将被请求有 效地址转换成该真实地址。
3. 如权利要求l的方法,其中使用分段后备緩冲器将被请求有 效地址转换成该真实地址。
4. 如权利要求l的方法,其中该后备緩沖器被配置以将存储在 主存储器中的页表的 一部分进行緩存。
5. 如权利要求4的方法,其中,当页表条目从该后备緩冲器中 移除时,使该处理器的一个或多个一级緩存中的任何相应数据不可 经由该一个或多个一级緩存来访问,其中使该数据不可访问包括以 下中的至少一个使在该一个或多个一级緩存中的数据无效和冲洗 掉该 一 个或多个 一 级緩存中的数据。
6. 如权利要求4的方法,其中,当从后备緩冲器移除页表条目 时,从该目录移除用于该处理器的一个或多个一级緩存的任何目录 中的任何相应条目。
7. 如权利要求l的方法,其中该二级緩存包括在与该处理器相 同的芯片上。
8. —种处理器,包括一个或多个一级緩存;二级緩存;后备緩沖器;以及电路,其被配置以<吏用被请求数据的被请求有效地址来访问该处理器的 一 个 或多个一级緩存中的被请求数据;如果该处理器的一个或多个一级緩存不包含对应于该被请 求有效地址的被请求数据,则将该被请求有效地址转换成真实地址, 其中该后备緩冲器包括针对该处理器的一个或多个一级緩存的每个 中的每个緩存线的相应条目,其中该相应条目指示从该有效地址到该緩存线的真实地址的转换;以及使用经过转换的真实地址来访问二级缓存。
9. 如权利要求8的处理器,其中转换后备緩冲器用于将被请求 有效地址转换成该真实地址。
10. 如权利要求8的处理器,其中分段后备緩冲器用于将被请求 有效地址转换成该真实地址。
11. 如权利要求8的处理器,其中该后备緩沖器被配置以将存储 在主存储器中的页表的 一部分进行緩存。
12. 如权利要求ll的处理器,其中,当从该后备緩沖器中移除 页表条目时,使该处理器的一个或多^t"一级緩存中的任何相应数据 不可经由该一个或多个一级緩存来访问,其中^吏该数据不可访问包 括以下中的至少 一 个使在该 一 个或多个 一 级緩存中的数据无效和 冲洗掉该 一个或多个 一级緩存中的数据。
13. 如权利要求ll的处理器,其中,当从后备緩沖器移除页表 条目时,用于该处理器的一个或多个一级緩存的任何目录中的任何 相应条目^v该目录移除。
14. 一种系统,包括 二级緩存;和处理器,所述处理器包括一个或多个一级緩存;后备緩冲器,其被配置以包括置于该处理器的一个或多个一 级緩存的每一个中的每个緩存线的相应条目,其中该相应条目指示 从该有效地址到该緩存线的真实地址的转换;以及 电^各,所述电鴻4皮配置以使用被请求数据的被请求有效地址来访问该处理器的 一个或多个 一 级緩存中的被请求数据;如果处理器的一个或多个一级緩存不包含对应于被请 求有效地址的被请求数据,则被请求有效地址被转换成真实地址; 以及使用经过转换的真实地址来访问二级緩存。
15. 如权利要求14的系统,其中转换后备缓沖器用于将被请求 有效地址转换成该真实地址。
16. 如权利要求14的系统,其中分段后备缓沖器用于将被请求 有效地址转换成该真实地址。
17. 如权利要求14的系统,其中该后备緩冲器被配置以将存储 在主存储器中的页表的一部分进行緩存。
18. 如权利要求17的系统,其中,当从该后备緩冲器中移除页 表条目时,使该处理器的一个或多个一级緩存中的任何相应数据不 可经由该一个或多个一级緩存来访问,其中4吏该数据不可访问包括 以下中的至少 一 个使在该 一 个或多个 一 级緩存中的数据无效和沖 洗掉该 一 个或多个 一 级緩存中的数据。
19. 如权利要求17的系统,其中,当从后备緩沖器移除页表条 目时,用于该处理器的一个或多个一级緩存的任何目录中的任何相 应条目从该目录移除。
20. 如权利要求14的系统,其中该二级緩存包括在与该处理器 相同的芯片上。
全文摘要
用于访问处理器中缓存存储器的方法和装置。该方法包括使用被请求数据的被请求有效地址来访问处理器的一个或多个一级缓存中的被请求数据。如果该处理器的一个或多个以及缓存不包含对应于被请求有效地址的被请求数据,则被请求有效地址被转换成真实地址。后备缓冲器包括针对处理器的一个或多个一级缓存的每一个中的每条缓存线的对应条目。相应条目指示从有效地址到缓存线的真实地址的转换。经过转换的真实地址用于访问二级缓存。
文档编号G06F12/08GK101334759SQ20081013192
公开日2008年12月31日 申请日期2008年6月27日 优先权日2007年6月28日
发明者D·A·卢克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1