数据处理方法和系统转让专利

申请号 : CN201310070395.8

文献号 : CN103365793B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·格海G·L·格思里W·J·斯塔克J·A·施蒂赫利D·E·威廉斯P·G·威廉斯

申请人 : 国际商业机器公司

摘要 :

响应于执行解除分配指令,从处理器核向较低级别缓存发送解除分配请求,该解除分配请求指定目标缓存线的目标地址。作为响应,确定目标地址是否命中较低级别缓存。如果是,则将目标缓存线保留在较低级别缓存的数据阵列中,以及更新较低级别缓存的替换顺序字段,使得目标缓存线响应于后续缓存未命中包括目标缓存线的同余类而更可能从较低级别缓存被收回。响应于后续缓存未命中,将目标缓存线剔除至较低级别缓存,并带有目标缓存线是处理器核的在先解除分配请求的目标的指示。

权利要求 :

1.一种在数据处理系统中进行数据处理的方法,所述数据处理系统包括由较高级别和较低级别缓存支持的处理器核,所述方法包括:所述处理器核在完成对包括目标缓存线和多个其他缓存线的数据集的处理时执行解除分配指令,以促进将所述数据集从所述较低级别缓存的收回;

响应于在所述处理器核中执行所述解除分配指令,从所述处理器核向所述较低级别缓存发送解除分配请求,所述解除分配请求指定与所述目标缓存线相关联的目标地址;

响应于在所述较低级别缓存处接收到所述解除分配请求,确定所述目标地址是否命中所述较低级别缓存;

响应于确定所述目标地址命中所述较低级别缓存,将所述目标缓存线保留在所述较低级别缓存的数据阵列中,以及更新所述较低级别缓存的目录中的替换顺序字段,使得所述目标缓存线响应于后续缓存未命中包括所述目标缓存线的同余类而更可能从所述较低级别缓存被收回;以及响应于所述后续缓存未命中,将所述目标缓存线剔除至所述较低级别缓存,并具有所述目标缓存线是所述处理器核的在先解除分配请求的目标的指示。

2.如权利要求1所述的方法,其中更新所述替换顺序字段包括使得所述目标缓存线成为最近最少使用。

3.如权利要求1所述的方法,进一步包括:

响应于确定所述目标地址命中所述较低级别缓存,设置所述较低级别缓存的所述目录中的字段,以指示所述目标缓存线是所述处理器核的所述解除分配请求的目标。

4.如权利要求1所述的方法,其中所述剔除包括:

从所述较低级别缓存向更低级别缓存传输调入请求,所述调入请求包括所述指示;以及响应于所述调入请求,所述更低级别缓存设置所述更低级别缓存的目录中的替换顺序字段,使得所述目标缓存线将更可能从所述更低级别缓存被收回。

5.如权利要求4所述的方法,进一步包括:

响应于所述调入请求,所述更低级别缓存在所述更低级别缓存的所述目录中设置针对所述目标缓存线的指示。

6.如权利要求1所述的方法,进一步包括:

此后,响应于在从所述较低级别缓存收回所述目标缓存线之前访问所述较低级别缓存中的所述目标缓存线,禁止更新所述替换顺序字段。

7.如权利要求1所述的方法,其中:

所述较低级别缓存包括用于所述处理器核的数据访问请求的加载和存储流水线;以及发送所述解除分配请求包括向所述较低级别缓存的所述加载流水线发送所述解除分配请求。

8.如权利要求1所述的方法,其中:

所述较低级别缓存包括服务于处理器数据访问请求的多个状态机;以及在无需将所述多个状态机之一分配给所述解除分配请求的情况下,执行所述保留和所述更新。

9.如权利要求1所述的方法,进一步包括:

响应于确定所述目标地址命中所述较低级别缓存,将与所述目标缓存线相关联的在先一致性状态保留在所述缓存目录中。

10.一种进行数据处理的处理单元,包括:

处理器核,其包括较高级别缓存,其中所述较高级别缓存响应于执行解除分配指令,发送指定与目标缓存线相关联的目标地址的解除分配请求;以及耦合至所述处理器核的较低级别缓存,所述较低级别缓存包括数据阵列,所述数据阵列的内容目录,以及控制逻辑,其中所述控制逻辑响应于在所述较低级别缓存处接收到所述解除分配请求,确定所述目标地址是否命中所述目录,以及响应于确定所述目标地址命中所述目录,将所述目标缓存线保留在所述数据阵列中,以及更新所述目录中的替换顺序字段,使得所述目标缓存线响应于后续缓存未命中包括所述目标缓存线的同余类而更可能从所述较低级别缓存被收回,以及其中所述控制逻辑响应于所述后续缓存未命中,将所述目标缓存线剔除至所述较低级别缓存,并具有所述目标缓存线是所述处理器核的在先解除分配请求的目标的指示;

其中所述处理器核在完成对包括所述目标缓存线和多个其他缓存线的数据集的处理时执行所述解除分配指令,以促进将所述数据集从所述较低级别缓存的收回。

11.如权利要求10所述的处理单元,其中响应于接收到所述解除分配请求,所述控制逻辑更新所述替换顺序字段以使得所述目标缓存线成为最近最少使用。

12.如权利要求10所述的处理单元,其中所述控制逻辑响应于确定所述目标地址命中所述较低级别缓存,设置所述较低级别缓存的所述目录中的字段,以指示所述目标缓存线是所述处理器核的所述解除分配请求的目标。

13.如权利要求10所述的处理单元,其中:

所述控制逻辑通过向更低级别缓存传输调入请求来剔除所述目标缓存线,所述调入请求包括所述指示;以及所述处理单元包括更低级别缓存,其响应于所述调入请求,设置所述更低级别缓存的目录中的替换顺序字段,使得所述目标缓存线更可能从所述更低级别缓存被收回。

14.如权利要求13所述的处理单元,其中响应于所述调入请求,所述更低级别缓存在所述更低级别缓存的所述目录中设置针对所述目标缓存线的指示。

15.如权利要求10所述的处理单元,其中,所述控制逻辑此后响应于在从所述较低级别缓存收回所述目标缓存线之前访问所述较低级别缓存中的所述目标缓存线,禁止更新所述替换顺序字段。

16.如权利要求10所述的处理单元,其中:

所述较低级别缓存包括用于所述处理器核的数据访问请求的加载和存储流水线;以及所述较低级别缓存在所述加载流水线中处理所述解除分配请求。

17.如权利要求10所述的处理单元,其中:

控制逻辑包括服务于处理器数据访问请求的多个状态机;以及

在无需将所述多个状态机之一分配给所述解除分配请求的情况下,所述控制逻辑服务于所述解除分配请求。

18.如权利要求10所述的处理单元,其中响应于确定所述目标地址命中所述较低级别缓存,所述控制逻辑将与所述目标缓存线相关联的在先一致性状态保留在所述缓存目录中。

19.一种数据处理系统,包括:

包含权利要求10所述的处理单元的多个处理单元;

将所述多个处理单元耦合的互连结构;以及

耦合以与所述互连结构通信的系统存储器。

说明书 :

数据处理方法和系统

技术领域

[0001] 本发明整体上涉及数据处理,以及更具体地,涉及管控(handle)对用于将数据处理系统的缓存存储器中的数据缓存块解除分配的请求进行的处理。

背景技术

[0002] 常规的多处理器(MP)计算机系统(诸如,服务器计算机系统)包括都耦合至系统互连的多个处理单元,系统互连典型地包括一个或多个地址、数据和控制总线。耦合至系统互连的是系统存储器,其代表多处理器计算机系统中最低级别的易失性存储器,并且通常可以由所有处理单元访问以进行读取和写入访问。为了降低对驻留在系统存储器中的指令和数据的访问延迟,每个处理单元典型地进一步由相应的多级别缓存层级结构支持,每个较低级别通常具有依次较长的访问延迟。由此,级别1(L1)缓存的访问延迟通常比级别2(L2)缓存低,L2缓存的访问延迟继而又比级别3(L3)缓存要低。
[0003] 为了在相互竞争的设计考虑(诸如,功率耗散、尺寸、访问延迟和命中率)之间提供平衡,很多MP系统实现组相联缓存,其将缓存条目归组至同余类(congruence class),每个同余类包含多个条目,以用于存储共享公共地址索引的缓存线。从每个同余类中的条目移除(收回)缓存线由替换策略控制,优选地,从同余类中选择移除最不可能再次被访问的缓存线。常见的替换策略包括最近最少使用(LRU)和轮询。
[0004] 对于某些工作负载,缓存硬件所实现的替换策略由缓存的附加软件管理来补充。例如,在某些情况下,程序员或编译器可以将显式指令插入到应用程序中,以引起缓存层级结构将特定缓存线无效或者将特定缓存线冲刷至系统存储器。来自PowerPC指令集架构的 缓存管理指令示例列举在下文的表I中。
[0005] 表I
[0006]PowerPC助记符 指令名称
DCBF 冲刷数据缓存线
DCBI 无效数据缓存线
DCBZ 零数据缓存线
ICBI 无效指令缓存线
[0007] 在某些情况下,例如,通过在缓存线被再次访问之前、无效缓存线或者将缓存线冲刷至系统存储器,显式缓存管理指令可能导致应用程序执行的低效。在这种情况下,在软件管理的无效或冲刷之后对缓存线的访问将引起显著增大的访问延迟,因为缓存线必须再次从系统存储器取回,这可能导致比缓存层级结构的较高级别大两个数量级的访问延迟。

发明内容

[0008] 在至少一个实施方式中,数据处理系统包括由较高和较低级别缓存支持的处理器核。响应于执行解除分配指令,指定目标缓存线的目标地址的解除分配请求从处理器核向较低级别缓存发送。作为响应,确定目标地址是否命中较低级别缓存。如果是,则将目标缓存线保留在较低级别缓存的数据阵列中,以及更新较低级别缓存的替换顺序字段,使得目标缓存线更可能响应于后续缓存在包括该目标缓存线的同余类中的未命中而被收回。响应于后续缓存未命中,将目标缓存线剔除至较低级别缓存,并带有该目标缓存线是处理器核在先解除分配请求的目标的指示。

附图说明

[0009] 图1是根据一个实施方式的示例性数据处理系统的高层框图;
[0010] 图2A是来自图1的处理单元的高层框图;
[0011] 图2B是来自图2A的处理器核以及关联缓存层级结构的一个示 例性实施方式的更详细框图;
[0012] 图3示出了来自图2B的较低级别缓存存储器的示例性实施方式;
[0013] 图4描绘了较低级别缓存的缓存目录的示例性实施方式;
[0014] 图5示出了根据一个实施方式的编译器的操作;
[0015] 图6是根据一个实施方式、编译源代码以生成目标代码的示例性方法的高层逻辑流程图;
[0016] 图7是根据一个实施方式、处理器核执行解除分配指令的示例性方法的高层逻辑流程图;
[0017] 图8是根据一个实施方式、较低级别缓存处理解除分配请求的示例性方法的高层逻辑流程图;
[0018] 图9是根据一个实施方式、较低级别缓存服务于存储器访问请求的示例性方法的高层逻辑流程图;
[0019] 图10是根据一个实施方式、较低级别缓存服务于调入(cast-in)请求的示例性方法的高层逻辑流程图。

具体实施方式

[0020] 现在参考附图,以及具体地参考图1,其示出了根据本发明的多处理器数据处理系统示例性实施方式的高层框图。如所示,数据处理系统100包括多个处理节点102a、102b,用于处理数据和指令。处理节点102a、102b耦合至系统互连110,用于传送地址、数据和控制信息。系统互连110可以例如实现为总线互连、交换互连或混合互连。
[0021] 在所示实施方式中,每个处理节点102实现为多芯片模块(MCM),其包含四个处理单元104a-104d,每个优选地实现为相应的集成电路。每个处理节点102中的处理单元104a-104d借助于本地互连114耦合在一起以进行通信,与系统互连110类似,本地互连114可以利用一个或多个总线和/或开关实现。本地互连114和系统互连110一起形成互连结构,其优选地支持不同广播范围的操作 的并发通信。例如,互连结构优选地支持范围限制在单个处理节点102的操作和广播至多个处理节点102的操作的并发通信。
[0022] 耦合至每个本地互连114的设备不仅包括处理单元104,而且包括一个或多个系统存储器108a-108d。驻留在系统存储器108中的数据和指令通常可以由数据处理系统100的任何处理节点102中任何处理单元104中的处理器核(图2A)进行访问和修改。在本发明的备选实施方式中,一个或多个系统存储器108可以耦合至系统互连110,而不是本地互连114。
[0023] 本领域技术人员将会理解,数据处理系统100可以包括很多附加未示出部件,诸如,外设,互连桥,非易失性存储,用于连接至网络或附属设备的端口,等等。由于这种附加的部件不是理解本发明所必需的,所以未在图1中示出也未在此处进一步讨论。然而,还应该理解,本发明提供的增强适用于各种架构的数据处理系统,并且并不限定于图1所示的通用数据处理系统架构。
[0024] 现在参考图2A,其中描绘了根据本发明的示例性处理单元104的更详细框图。在所示实施方式中,每个处理单元104包括处理器核以及关联缓存层级结构的多个实例,这些统一由附图标记200所标识。在所示实施方式中,每个处理单元104还包括集成存储器控制器(IMC)206,其响应于从处理器核接收的请求以及在本地互连114上窥测(snoop)的操作而控制对其处理节点102内的一个或多个系统存储器108a-108d的读取和写入访问。
[0025] 仍然参考图2A,每个处理单元104还包括一致性(coherence)管理逻辑210的实例,其实现基于分布式窥测的一致性信令机制的一部分,该机制在数据处理系统100内维护缓存一致性。另外,每个处理单元104包括互连逻辑212的实例,用于选择性地在其本地互连114和系统互连110之间转发通信。最后,每个处理单元104包括集成I/O(输入/输出)控制器
214,其支持诸如I/O设备216的一个或多个I/O设备的附接。I/O控制器214可以响应于I/O设备216的请求而在本地互连114和/或系统互连110上发布操作。
[0026] 现在参考图2B,其是来自图2A的处理器核以及关联缓存层级结构200的一个示例性实施方式的更详细框图。处理器核202包括用于处理指令和数据的电路。在所示实施方式中,此电路包括指令定序单元201,其从存储器层级结构取回指令并为该指令定序以便执行;以及一个或多个执行单元203,其执行从ISU203接收的指令。在所示实施方式中,执行单元203包括加载存储单元(LSU)205,其执行存储器访问指令和缓存管理指令,以计算目标地址以及生成指定该目标地址的对应存储器访问和缓存管理请求。
[0027] 处理器核202的操作由实现较弱定序存储架构的缓存存储器层级结构所支持,意思是缓存存储器层级结构通常可以针对处理器核202执行的关联存储指令的程序顺序而言、乱序地执行从附属处理器核202接收的存储请求,以及仅在由屏障(barrier)操作分隔的存储请求群组之间强行实施定序。缓存存储器层级结构包括每个处理器核202内的通过式存(store-through)级别1(L1)缓存204,存储中(store-in)级别2(L2)缓存230(其优选地包括L1缓存204),和后备L3缓存232,其被用作针对L2缓存230的牺牲(victim)缓存,以及因此由从L2缓存230收回的缓存线所填充。与很多常规牺牲缓存布置相反,L3缓存232的内容并不排除L2缓存230的内容,意思是给定的存储器块可以并发地保留在L2缓存230和L3缓存232中。
[0028] L3缓存232进一步包括至少一个以及优选地包括多个窥测(SN)机器236,和窥测器286内的至少一个以及优选地多个写注入(WI)机器238(参见图2B)。如以下进一步讨论的,SN236和WI238响应于从其他L3缓存232接收的横向剔除(LCO)命令而管控将缓存线调入至L3缓存232中的操作。在所描述的实施方式中,SN236用于管控这样的调入,即,其不需要数据移动,并且由此优选地不包括传入数据管理构造,而WI238用于管控LCO命令,这些LCO命令需要数据移动以及相应地包括传入数据管理构造(使得其比SN236成本更高)。WI238进一步管控通过I/O设备216向L3缓存232 进行的缓存线注入。
[0029] 图2B还示出了处理器核202的缓存存储器层级结构内的示例性请求、数据和一致性通信的流。在所描述的布置中,虚线代表请求和一致性命令的流,而实线代表数据流。
[0030] 如所示,处理器核202向L2缓存230传输加载请求240,以及从其接收加载数据242。处理器核202还传输存储请求244和关联存储数据246至收集逻辑248,后者将与多个请求相关联的存储数据收集至一个数据缓存线中,以及向L2缓存230传输收集的存储数据249连同一个收集的存储请求247。尽管为了清楚而单独示出,但是收集逻辑248可以并入在处理器核202和/或L2缓存230中。
[0031] 响应于来自处理器核202的存储器访问请求,L2缓存230指派多个读取要求(RC)机器231中的一个来服务于存储器访问请求。服务存储器访问请求可以使得L2缓存230的RC231向图2A的一致性管理逻辑210传输系统一致性命令250,以进行编译和/或在互连结构上传输。L2缓存230的RC231还可以向IMC206和/或互连逻辑212传输写入数据254以及从其接收加载数据252。L2缓存230的RC231还可以经由加载请求260从L3缓存232请求加载数据,以及从L3缓存232接收加载数据262。L2缓存230进一步包括多个窥测(SN)机器233,以服务于在互连结构上窥测到的存储器访问请求(例如,读取请求,意欲修改的读取请求,以及终止请求)。
[0032] 为了从L2缓存230移除缓存线,L2缓存230可以向L3缓存232发布调入请求,L3缓存232继而接收该缓存线以作为调入数据266。与L2缓存230类似,L3缓存232可以通过发布系统一致性命令270、接收预取数据272和/或调入数据273,和/或传输写入数据274,来与其他缓存层级结构中的缓存存储器和/或IMC206交互。
[0033] 尽管所示缓存层级结构仅包括三个缓存级别,但是本领域技术人员将会理解,备选实施方式可以包括片上或片下主控或备用缓存的附加级别(L4、L5等),其可以全包括、部分包括或不包括较高缓存级别的内容。此外,各种级别的缓存层级结构中的任一级别可 以是特定处理器核202专用的,或者由多个处理器核202共享。例如,在某些实现中,缓存层级结构包括用于每个处理器核202的L2缓存230,多个L2缓存230共享公共L3牺牲缓存232。
[0034] 现在参考图3,其示出了一个L2缓存230的示例性实施方式的高层框图。(L3缓存232可以类似地实现。)如所示,L2缓存230包括数据阵列302和数据阵列302的内容的目录
308,这些实施方式将参考图4在下文更详细描述。L2缓存230还包括附加的控制逻辑(在本领域中统一称为“缓存控制器”),在所描述的实施方式中,其包括多个(例如,16个)读取要求(RC)机器231a-231n,用于独立地且并发地服务于从附属处理器核202接收的加载(LD)和存储(ST)请求。为了服务于源自除了附属处理器核202之外的处理器核202的远程存储器访问请求,L2缓存230的控制逻辑包括多个窥测(SN)机器233a-233m。每个窥测机器233可以独立地且并发地管控从本地互连114“窥测”的远程存储器访问请求。将会理解,RC机器312对存储器访问请求的服务可能需要替换或无效数据阵列302内的存储器块。因此,L2缓存230包括CO(剔除)机器310,其管理来自数据阵列302的存储器块的移除和写回。
[0035] L2缓存230的控制逻辑进一步包括仲裁器305,其控制复用器M1-M2,以对从附属处理器核200接收的本地存储器访问和缓存管理请求以及在本地互连114上窥测的远程请求的处理进行定序。根据仲裁器305实现的仲裁策略,请求被转发至分派流水线306,在给定数量的周期上,在该分派流水线306中针对目录308来处理每个请求。
[0036] L2缓存230的控制逻辑还包括RC队列(RCQ)320和剔除推送干预(CPI)队列318,其分别缓冲插入至数据阵列302的数据和从数据阵列302移除的数据。RC队列320包括多个缓冲条目,每个单独对应于RC机器231中的特定一个,使得分派的每个RC机器231仅从指定的缓冲条目获取数据。类似地,CPI队列318包括多个缓冲条目,每个单独对应于剔除机器310和窥测机器233中的特定一个, 使得分派的每个CO机器310和每个窥测机器233仅从相应指定的CPI缓冲条目获取数据。
[0037] 每个RC机器231还具有向其指派的多个RC数据(RCDAT)缓冲器322中的相应一个,以用于对经由重加载总线323从本地互连114接收的和/或从数据阵列302读取的存储器块进行缓冲。指派至每个RC机器312的RCDAT缓存器322优选地构建有对应于存储器访问请求的连接和功能性,这些存储器访问请求可由关联RC机器312服务。RCDAT缓冲器322的至少某些具有关联存储数据复用器M4,其响应于由仲裁器305生成的未示出的选择信号来从其输入中选择数据字节以用于缓冲在RCDAT缓冲器322中。
[0038] 在操作中,在存储队列(STQ)304内从附属处理器核202接收包括事务类型(ttype)、目标实际地址和存储数据的处理器存储请求。自STQ304开始,存储数据经由数据路径324被传输至存储数据复用器M4,并且存储类型和目标地址被传递至复用器M1。复用器M1还经由加载流水线325接收由处理器核202发送的处理器加载和解除分配请求以及由RC机器312发送的目录写入请求以作为输入。响应于由仲裁器305生成的未示出的选择信号,复用器M1选择其输入请求之一来向复用器M2转发,复用器M2附加地接收经由远程请求路径326从本地互连114接收的远程请求以作为输入。仲裁器305调度本地和远程请求以供处理,以及基于该调度,生成选择信号328的序列。响应于仲裁器305生成的选择信号328,复用器M2选择从复用器M1接收的本地请求或者从本地互连114窥测的远程请求,以作为待处理的下一个请求。
[0039] 仍然参考图3,复用器M2将仲裁器305选择用于处理的请求放置在分派流水线306中。分派流水线306优选地实现为固定时长流水线,其中多个可能交叠请求的每个请求被处理预定数目的时钟周期。
[0040] 在分派流水线306的第一处理周期期间,利用请求的目标地址来执行一周期目录读取,以确定目标地址是否命中或不命中目录 308,以及如果目标地址命中,则确定目录308内存储器块的一致性状态。包括存储器块的一致性状态和命中/未命中指示的目录信息由目录308返回至分派流水线306。将会理解,响应于远程存储器访问请求的未命中,通常不会在L2缓存230内采取行动;这种远程存储器请求因此从分派流水线306被丢弃。然而,如果本地请求命中或不命中或者远程存储器访问请求命中,则L2缓存230将服务于该请求,而针对在处理单元104内不能完全得到服务的请求,L2缓存230将实施本地互连114上的通信。
[0041] 在分派流水线306内处理存储器访问请求期间的预定时间处,仲裁器305经由地址和控制路径330向数据阵列302传输该请求地址,以发起由该目标地址指定的目标缓存线的缓存读取,由此耗散附加功率。从数据阵列302读取的存储器块经由数据路径342被传输至纠错代码(ECC)逻辑344,其检查存储器块的错误,以及如果可能的话,修正任何检测到的错误。对于处理器加载请求,还经由数据路径340向加载数据复用器M3传输该存储器块,以转发至附属处理器核202。
[0042] 在分派流水线306内处理存储器访问请求的最后一个周期,分派流水线306基于例如如下来做出分配决定,(1)在目标地址和剔除机器310、窥测机器233或RC机器231当前处理的之前所接收目标地址之间存在地址冲突,(2)目录信息和(3)RC机器231或窥测机器233用来处理存储器访问请求的可用性。如果分派流水线306做出了将要分派该存储器访问请求的分派决定,则该存储器访问请求将从分派流水线306被分派至RC机器231或窥测机器233。如果存储器访问请求未能被分派,则通过重试响应来向请求方(例如,本地或远程处理器核202)发信令通知该失败。请求方随后可以重新尝试该失败的存储器访问请求,如果需要的话。
[0043] 在RC机器231正处理本地存储器访问请求时,RC机器231处于忙碌状态,并且不可用于服务另一请求。当RC机器231处于忙碌状态时,RC机器231可以执行目录写入以更新目录308的相关条目, 如果需要的话。另外,RC机器231可以执行缓存写入,以更新存储在数据阵列302中的相关目标缓存线。目录写入和数据阵列写入可以在分派流水线306尚未根据目录读取和数据阵列读取的固定调度而处理其他请求的任何间隔期间、由仲裁器305进行调度。当已完成针对给定本地存储器访问请求的所有操作时,RC机器312返回至非忙碌状态,并且由此可用于分派以服务另一请求。
[0044] 现在参考图4,描述了L2缓存230的数据阵列302和目录308的示例性实施方式的更详细框图。(L3缓存232的数据阵列可以类似实现。)在所示实施方式中,数据阵列具有组相联组织并因此包括多个通路400a-400n。每个通路400包括多个条目402,在所示实施方式中,每个提供临时存储以用于至多完整的数据存储器块,例如,128个字节。每个缓存线或数据存储器块在逻辑上包括多个颗粒404(在此示例中,四个颗粒,每个32个字节),其可以在尺寸上例如对应于系统存储器108a-108d的最小允许访问。在某些实施方式中,颗粒404可以单独被访问并缓存在数据阵列302中。
[0045] 如在传统组相联缓存中,系统存储器108中的存储器位置利用系统存储器(实际)地址内的预定索引位而被映射至数据阵列302内的特定同余类。存储在数据阵列302内的特定缓存线记录在缓存目录302中,其包含用于数据阵列302中每个缓存线的一个目录条目410。本领域技术人员将会理解,目录308中的每个目录条目410包括至少标签字段412,其利用相应实际地址的标签部分来指定存储在数据阵列302的对应条目402中的特定缓存线;状态字段414,其指示缓存线的一致性状态(例如,根据公知的MESI一致性协议或其变体)以及替换顺序字段416。
[0046] 替换顺序字段416包括年代字段418,其指示缓存线相对于相同同余类中其他缓存线的相对替换顺序。另外,在某些(并非全部)实施方式中,替换顺序字段416进一步包括瞬态(T)字段420,如果设置了的话,其指示关联缓存线已成为附属处理器核202的解除分配请求的目标,以及因此应当优选从缓存层级结构中解除分配(例 如,作为最近最少使用成员或其他优先替换顺序位置)。
[0047] 现在参考图5,示出了利用标识优先地将从缓存存储器层级结构解除分配的目标缓存线的显式解除分配指令、编译器编译源代码的过程示例性数据流图示。在所示过程中,诸如编译器500的程序代码(其存储在诸如盘或存储器存储的有形计算机可读存储介质502上)在数据处理系统(例如,图1的数据处理系统100)上执行,以接收诸如源代码502或中间代码的处理前代码,编译该处理前代码,以及输出诸如目标代码506的处理后代码。
[0048] 如所指示的,源代码504包括初始化指令510,其将处理循环512的循环变量x初始化为初始值(例如,0)。在处理循环512中,源代码504包括加载(LOAD)命令514,其指定待从存储器层级结构加载的数据集(例如,第一阵列或数据库);以及处理(PROCESS)命令516代表的一个或多个命令,其指定将在数据集上执行的处理。处理循环512进一步包括指令518,其增大循环变量;以及分支(BRANCH)命令520,其引起处理循环512迭代,如果循环变量未达到终止值(由变量y代表)的话。
[0049] 现在参考图6,示出了诸如编译器500的程序代码处理处理前代码(诸如,源代码504)以获取处理后代码(诸如,目标代码506)的示例性过程的高层逻辑流程图。与此处呈现的其他逻辑流程图一样,所示操作按逻辑而不是时间顺序来描述。因此,在很多情况下,示出的某些操作可以并发执行和/或以所示顺序的不同顺序来执行。所示过程例如可以作为编译器500的代码优化操作的一部分来执行。
[0050] 如所示,该过程开始于框600,以及继而前进至框602-604,其描述了编译器500扫描源代码504的片段,以检测数据集处理的结束。例如,在示例性源代码504中,可以在到达处理循环512迭代的结束时检测到数据集处理的结束。如果编译器500未能在当前片段中检测到数据集处理的结束,则该过程跳至框612,其示出了编译器500确定其对源代码504的扫描是否完成。如果是,图6中示出的过程在框614处终止。然而,如果编译器500在框612处确定其 对源代码504的扫描未完成,则该过程返回到已描述过的框602。
[0051] 再次参考框604,响应于编译器500检测到数据集处理的结束,编译器500向目标代码506插入用于已完成处理的数据集中的每个缓存线的一个解除分配指令(此处称为数据缓存块解除分配(DCDB))。在框610之后,该过程传递至已描述过的框612。
[0052] 再次参考图5,图5中描述的目标代码506的示例性部分包括由编译器500生成的多个加载(LD)指令的第一加载序列530,以实现加载命令514的最初迭代。如所指示的,加载序列530从系统存储器108向处理器核202的缓存层级结构和寄存器加载数据集0的n+1个元素。在加载序列530之后,编译器532已在目标代码506中包括实现由处理(PROCESS)命令516代表的处理的一个或多个指令532。此后,如参考框610所描述的,编译器500向目标代码506插入解除分配序列534,其优选地包括针对数据集_0的n+1个元素的每一个的解除分配(例如,DCBD)指令。此后,编译器500通过将数据集_1的n+1个元素从系统存储器108加载至处理器核202的缓存层级结构和寄存器,从而插入包括多个LD指令的第二加载序列536,以实现加载(LOAD)命令514的下一迭代。
[0053] 应当注意,除了如图5所示由编译器自动生成之外,解除分配指令可以备选地或附加地由人类编码员或自动代码生成器进行直接编码。此外,应当注意,如果解除分配指令在最后参考解除分配指令的目标缓存线之前被错误地插入至目标代码506(例如,编译器500在处理数据元素[1,0]时参考数据元素[0,n]的指令之前插入了以数据元素[0,n]为目标的DCBD指令),则解除分配指令的过早包含的确会引起任何处理错误,但是不是必然的因增大访问延迟而降低了随后参考数据元素的指令的性能。访问延迟不是必然地增大,因为解除分配指令不强迫对目标缓存线的解除分配,而仅仅是使得更可能进行解除分配。由此,取决于地址访问模式和命中率,解除分配指令的目标缓存线可以保留在缓存存储器中,以在解除分配指令执行之后进行多次缓存访问,使得后续指令潜在地访问目标缓存线, 而不会引起与再次从系统存储器取回目标缓存线相关联的延迟惩罚。
[0054] 现在参考图7,示出了根据一个实施方式、处理器核202执行解除分配指令的示例性方法的高层逻辑流程图。该过程开始于框700,以及继而前进至框702,其示出了处理器核202的ISU201从存储器层级结构取回用于执行的下一指令组。ISU201对指令组中的指令进行解码,以及如框704所示,确定指令组中的任何指令是否是解除分配指令(例如,DCBD)。对于除了解除分配指令之外的指令,ISU201执行可能的传统处理,如框706所示。ISU201向LSU205分派指令组中的解除分配指令(框710),其执行每个解除分配指令以计算解除分配指令的目标缓存线的目标地址(框712)。在LSU205计算的目标地址的可能转换(例如,虚实转换)之后,处理器核202向其附属L2缓存230发送对应于解除分配指令的解除分配请求(框
714),而无论目标地址是否命中L1缓存204。如以上注意到的,优选地指定加载事务类型和所计算目标地址的解除分配请求优选地经由加载流水线325传输至L2缓存230。将解除分配请求实现为加载类型的请求而不是存储类型的请求的一个后果是解除分配请求影响将目标缓存线仅缓存在执行对应解除分配指令的特定处理器核202的缓存层级结构中。因此,对解除分配请求的处理并不因使得解除分配请求对于贯穿数据处理系统100的所有缓存层级结构可见或者在存在弱定序存储系统的情况下、存在用于跨所有缓存层级结构和系统存储器108同步存储修改操作的屏障操作(例如,SYNC)而延迟。在框714之后,图7中描绘的过程在框716处结束。
[0055] 现在参考图8,描述了根据一个实施方式、较低级别缓存处理解除分配请求的示例性方法的高层逻辑流程图。所示过程在框800处开始,并继而前进至框802,其示出了诸如L2缓存230的较低级别缓存优选地经由加载流水线325来从附属处理器核202接收解除分配请求。如以上参考图3所注意到的,解除分配请求被加载至分派流水线306,其利用在解除分配请求中指定的目标地址来访问目录 308。
[0056] 如果目标地址并未命中(即,未命中)目录308,则不需要在较低级别缓存中执行解除分配请求的进一步处理。因此,在一个实施方式中,简单地从分派流水线306丢弃解除分配请求,以及该过程在框820处结束。在备选实施方式中,分派流水线306向缓存层级结构中的下一较低级别缓存(例如,L3缓存232)转发解除分配请求,如可选的框816中所描绘的。在包括框816的实施方式中,可以以图8所描绘的相同的方式来在下一较低级别缓存处处理解除分配请求。在至少某些实施方式中,通过在解除分配请求中包括指示解除分配请求将沿缓存层级结构向下传输多远的层级结构级别指示符来实现更精细粒度的缓存管理。由此,例如,解除分配请求可以指定该解除分配请求将在L2和L3缓存处处理、但是不会在更低级别的L4缓存处处理。在框816之后,图8所示的过程在框820处结束。
[0057] 返回框810,响应于解除分配请求的目标地址命中目录308,分派流水线306更新针对目标缓存线记录的替换顺序以对目标缓存线降级,由此使得该目标缓存线更可能被选择为牺牲缓存线,以便在映射至同余类的存储器访问请求后续未命中的情况下从该同余类中收回(框812)。例如,如果L2缓存230正实施LRU或伪LRU替换策略,则分派流水线306可以将与目标缓存线相关联的目录条目410的替换顺序字段416的年代字段418更新为LRU(或者更可能被收回的另一预定年代位置,诸如LRU+1)。如果L2缓存230实施不同的替换策略,则分派流水线306相应地更新替换顺序字段416,以增大目标缓存线将被选作要从其同余类收回的牺牲缓存线的概率。在更新针对目标缓存线的替换顺序时,分派流水线306优选地禁止修改与目标缓存线相关联的目录条目410的标签字段412或状态字段414,禁止访问数据阵列302中的目标缓存线,以及禁止分派RC机器231来处理解除分配请求。通过参考目录308来完整地在分派流水线306中服务解除分配请求,诸如图5的解除分配序列534 的解除分配请求的序列可以以分派流水线306的最大分派速率而被服务。
[0058] 如在可选的框814所描绘的,在执行与解除分配请求的目标缓存线相关联的目录条目410的更新时,分派流水线306还设置与目标缓存线相关联的目录条目410中的T(瞬态)字段420。通过设置T字段420,相关联的缓存线是处理器核202的显式解除分配请求目标这一事实可以在目标缓存线遍历缓存层级结构时被保留。由此,当目标缓存线最终被收回并被发送至较低级别(例如,L3)缓存时,较低级别缓存可以立即按照使得该目标缓存线更可能被收回的替换顺序(例如,除了MRU之外的LRU+1或LRU)而将目标缓存线放置在选定位置。
[0059] 除了框812之外,以及如果实现了可选框814的话,在缓存命中的情况下执行的过程可以可选地还包括向缓存的一个或多个较低级别发送解除分配请求,如框816所描述的以及如上文所描述的。在图8中给出的过程此后在框820处结束。
[0060] 现在参考图9,其示出了根据一个实施方式、较低级别缓存服务于附属处理器核202的存储器访问请求的示例性方法的高层逻辑流程图。图9描述的过程开始于框900并且前进至框902,其示出了诸如L2缓存230的较低级别缓存从附属处理器核202接收存储器访问请求(例如,加载请求或存储请求)。如上所述,该请求在分派流水线306中处理,分配流水线306在目录308中执行查找以访问目标缓存线的目录信息,分派RC机器231以服务于存储器访问请求,以及向分派的RC机器231传递针对目标缓存线的存储器访问请求和目录信息以供处理。
[0061] 在框904,RC机器231通过参考目标缓存线的目录信息来确定存储器访问请求的目标地址是否命中目录308,该目录308处于允许对存储器访问请求提供服务而无需在互连结构上发布操作的一致性状态。如将会理解的,较低级别缓存通常可以在不发布互连操作的情况下满足非存储修改请求,如果状态字段414指示针对目标缓存 线的任何数据有效一致性状态的话。较低级别缓存通常不能在不发布互连操作的情况下满足存储修改请求,除非状态字段414指示针对目标缓存线的修改或排除(或类似)一致性状态。
[0062] 响应于在框904处的确认性确定,该过程在某些实施方式中前进至框910,其描绘了RC机器231执行服务于存储器访问请求所需的动作,而无需在互连结构上发布操作(例如,向处理器核202发布目录写入请求和/或提供加载数据或者向数据阵列302写入存储数据)。在实现T字段420的实施方式中,RC机器231在框906处进行附加确定,即,确定从分派流水线306接收的目录信息是否指示目标缓存线的T字段420被设置以将该目标缓存线标识为附属处理器核202的在先解除分配请求的目标。如果否,则该过程传递至已描述过的框910。然而,如果RC机器231在框906处确定设置了T字段420,则RC机器231在目录写入请求中包括根据期望的策略来设置存储器访问请求的目标缓存线的替换顺序字段416的请求(框908)。
例如,在各种实施方式中,RC机器231可以将目标存储器块设置到预定替换顺序位置(例如,LRU),可以将替换顺序位置增1(例如,将目标存储器块从LRU更新至LRU+1),或者可以重置T字段420以及将替换顺序位置设置为最近使用(MRU)。用于利用设置T字段420来处理缓存线上的命中的策略优选地选自与当前工作负载的预期数据访问模式匹配的那些实施方式。该过程从框908传递至已描述的框910。在框910之后,图9中所示过程在框924处终止。
[0063] 返回框904,响应于RC机器231确定存储器访问请求不能在未发布互连操作的情况下被服务,该过程前进至框916。框916示出了RC机器231在互连结构上发布适当的互连操作,以使得存储器访问请求得以被服务。通常,互连操作包括至少事务类型和目标地址。在框916之后,该过程继续至框918,其描述了RC机器231从一致性管理逻辑210(图2)接收组合响应。如之前讨论的,该组合响应由响应逻辑210根据数据处理系统100内的窥测器的部分响应来生 成,并且组合响应代表对存储器访问请求的系统级响应。
[0064] 该过程继续至框920,其示出了RC机器231确定互连操作的组合响应是否指示“成功”或“重试”。如果组合响应指示“重试”(即,目前不能满足该请求,并且该请求必须重试),该过程返回已描述的框916。如果组合响应指示“成功”(即,该请求在当前时间能够得以满足),则该过程继续至框922,其示出了RC机器231执行操作以服务于该存储器访问请求,如组合响应所指示的。例如,如果互连操作的请求是读取操作,则RC机器231引起从互连结构接收的请求数据被提供至处理器核202,该读取数据被安装在数据阵列302中,以及对目录308执行更新。如果在另一方面,互连操作是存储类型操作,则RC机器231引起利用请求处理单元202提供的存储数据来更新缓存阵列302以及更新目录308。
[0065] 在任一情况中,如果目标缓存线未在互连操作之前驻留在数据阵列302中,则RC机器231引起CO机器310被分派以从存储器访问请求的目标地址所映射至的同余类收回牺牲缓存线和关联目录信息。如果较低级别缓存是L2缓存230,则CO机器310优选地经由剔除操作将牺牲缓存线剔除至一个L3缓存232。在T字段420实现在目录条目410中的实施方式中,在剔除操作中传输至L3缓存232的目录信息包括T字段420的设置(即,缓存线是否是附属处理器核202的在先解除分配请求的指示)。在框922之后,图9中描述的示例性过程在框924处终止。
[0066] 现在参考图10,其描述了根据一个实施方式、较低级别缓存(在下文中假设为L3缓存232)处理较高层缓存(在下文中假设为L2缓存230)的剔除的示例性方法的高层逻辑流程图。该过程开始于图10的框1000,并继而前进至框1002,在该处,该过程迭代,直到L3缓存232从关联的L2缓存230接收到调入请求264。响应于接收到调入请求264,L3缓存232将在调入请求264中接收的目录信息和数据(如果有的话)分别写入L3缓存232的目录和数据阵列(框1004)。取决于在数据处理系统100中实现的一致性协议,剔除缓 存线可以与L3缓存232中和在从L2缓存230收回时已剔除的缓存线不同的一致性状态相关联。
[0067] 在未实现T字段420的实施方式中,L3缓存232将L3缓存目录中针对缓存线的替换顺序字段416设置为MRU,如在框1008处所示。在实现T字段420的备选实施方式中,L3缓存232还检查以查看与剔除缓存线相关联的T字段420是否被设置在调入请求264中提供的目录信息中(框1006)。如果否,则该过程前进至已描述过的框1008。然而,如果L3缓存232在框
1006处确定设置了与剔除缓存线相关联的T字段420,则L3缓存232响应于后续调入请求264而将针对缓存线的替换顺序字段416设置为使得该缓存线更可能从L3缓存收回的指定替换顺序位置(例如,LRU或LRU+1),如框1010所示。在框1008或框1010之后,图10中所示的过程在框1012处结束。
[0068] 在至少一个实施方式中,数据处理系统包括由较高和较低级别缓存支持的处理器核。响应于在处理器核中执行解除分配指令,从处理器核向较低级别缓存发送解除分配请求,该解除分配请求指定与目标缓存线相关联的目标地址。响应于在较低级别缓存处接收到解除分配请求,确定该目标地址是否命中较低级别缓存。响应于确定目标地址命中较低级别缓存,将目标缓存线保留在较低级别缓存的数据阵列中,并且更新较低级别缓存的目录中的替换顺序字段,使得该目标缓存线更可能响应于后续缓存未命中而从较低级别缓存被收回。
[0069] 在至少一个实施方式中,响应于后续缓存未命中包括目标缓存线的同余类,较低级别缓存将该目标缓存线剔除至更低级别的缓存,并具有该目标缓存线是处理器核的在先解除分配请求目标的指示。响应于该指示,更新更低级别缓存的目录中的替换顺序字段,使得该目标缓存线更可能从更低级别缓存被收回。
[0070] 尽管已经特定地示出并描述了一个或多个实施方式,但是本领域技术人员将会理解,可以在形式和细节上做出各种改变,而不会 脱离本发明的精神和范围。例如,尽管已经针对数据处理系统硬件描述了本发明的方面,但是应当理解,本发明的一个或多个实施方式可以备选地实现为用于与数据处理系统一起使用的程序产品。这种程序产品包括有形计算机可读存储设备/介质,其存储指引本发明功能的程序代码。计算机可读存储设备/介质可以实现为例如CD-ROM、DVD、盘或硬盘、系统存储器、闪存等。
[0071] 作为示例,程序产品可以包括数据和/或指令,当在数据处理系统上执行或以其他方式处理时,其生成此处公开的硬件组件、电路、设备或系统的在逻辑上、结构上或以其他方式在功能上等同的表征(包括仿真模型)。这种数据和/或指令可以包括硬件描述语言(HDL)设计实体或其他数据结构,其遵从和/或兼容诸如Verilog和VHDL的低级HDL设计语言和/或诸如C或C++的高级设计语言。此外,数据和/或指令还可以采用用以交换集成电路布局数据的数据格式和/或符号数据格式(例如,存储在GDSII(GDS2)、GL1、OASIS、映射文件或用于存储这种设计数据结构的任何其他适当格式中存储的信息)。