用于包括屏障指令的指令序列的处理器性能改进的制作方法

文档序号:6532995阅读:244来源:国知局
用于包括屏障指令的指令序列的处理器性能改进的制作方法
【专利摘要】一种用于处理指令序列的技术,该指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指令,该技术包括:由处理器内核基于由处理器内核接收到用于对应于加载指令的读操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决。该技术还包括:如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来发起随后存储器访问指令的执行。该技术进一步包括:如果随后存储器访问指令的执行在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来中断关于无效对随后存储器访问指令的追踪。
【专利说明】用于包括屏障指令的指令序列的处理器性能改进

【技术领域】
[0001] 本发明总体上涉及处理器性能改进,并且更具体地涉及用于包括屏障指令的指令 序列的处理器性能改进。

【背景技术】
[0002] 传统的对称多处理器(SMP)计算机系统(比如服务器计算机系统)包括多个都耦 接到系统互连的处理单元,该系统互连典型地包括一个或者多个地址、数据和控制总线。被 耦接到的系统互连是系统存储器,其代表多处理器计算机系统中的最低级别的易失性存储 器并且通常由所有处理单元针对读和写访问可访问。为了减少对于驻留在系统存储器中的 指令和数据的访问延时,每个处理单元典型地进一步由相应的多级高速缓存层级支持,该 多级高速缓存层级的最低级可以被一个或者多个处理器内核共享。
[0003] 已经被提出和/或实施的各种处理器设计旨在于改进数据处理系统性能。例如, 在实施脆弱存储器模型的处理器设计中,只要操作未被限制为不可乱序执行,指令就可以 被重排序以用于执行。一种用于限制某些指令执行的技术采用了屏障(或者同步)指令以 防止后续加载或者存储指令(例如,跟随屏障指令的加载或者存储指令)的执行,直到在先 的加载或者存储指令或者指令(例如,在屏障指令之前的加载或者存储指令)被解决。
[0004] 参照图8,关于运用屏障指令(SYNC)来强制实施在存储(ST)和加载(LD)指令之 间的排序可能有四种不同情形。在第一存储到存储情形中,在屏障指令(SYNC)之前的到 地址'A'的存储指令(ST A)跟随有在屏障指令(SYNC)之后的到地址'B'的存储指令(ST B)。在第二存储到加载情形中,在屏障指令(SYNC)之前的到地址'A'的存储指令(ST A) 跟随有在屏障指令(SYNC)之后的到地址'B'处加载指令(LD B)。在第三加载到加载情形 中,在屏障指令(SYNC)之前的到地址'A'的加载指令(LD A)跟随有在屏障指令(SYNC)之 后的到地址'B'的加载指令(LD B)。在第四加载到存储情形中,在屏障指令(SYNC)之前 的到地址'A'的加载指令(LD A)跟随有在屏障指令(SYNC)之后的到地址'B'的存储指令 (ST B)。
[0005] 在第一情形中,因为指令序列已流经处理器流水线,因此屏障指令(SYNC)在存储 指令(ST A和ST B)之间维持了顺序。在第二情形中,跟随屏障指令(SYNC)的加载指令 (LD B)的执行被延迟,直到在屏障指令(SYNC)之前的存储指令(ST A)被完成(或者跟随 屏障指令(SYNC)的加载指令(LD B)被早先发布并且针对无效被追踪直到在处理器内核处 从存储器子系统处接收到用于屏障指令(SYNC)的确认(ACK))。在第三情形中,跟随屏障指 令(SYNC)的加载指令(LD B)等待着直到用于在屏障指令(SYNC)之前的加载指令(LD A) 的数据已被接收到(或者跟随着屏障指令(SYNC)的加载指令(LD B)早前被发起并针对无 效被追踪直到在处理器内核处接收到用于在屏障指令(SYNC)之前的加载指令(LD A)的数 据)。在第四情形中,跟随屏障指令(SYNC)的存储指令(ST B)的执行已被延迟,直到在处 理器内核处接收到用于在屏障指令(SYNC)之前的加载指令(LD A)的数据。
[0006] 在常规实现方式中,当(用于加载指令的)数据已被返回到处理器内核时,先于屏 障指令的加载指令已被解决。相反地,在传统实现方式中,当在处理器内核处从存储子系统 (例如,L2高速缓存)处接收到(用于随后的屏障指令的)确认(ACK)时,先于屏障指令的 存储指令已被解决。参照图8的情形10,如前所记录,常规实现方式要么是推测地执行并且 针对无效跟踪跟随屏障指令的加载指令(其中无效的加载指令被重新执行),要么是(在跟 踪逻辑不可用的情形中)延迟执行跟随屏障指令的加载指令直到在屏障指令之前的指令 (ST A或者LD A)已被解决。参参照图8的情形12,常规实现方式延迟了跟随屏障指令的 指令(LD B或者ST B)的执行,直到用于加载指令(LD A)的数据被处理器内核接收到。
[0007] 因此,在本领域中需要解决前述问题。


【发明内容】

[0008] 根据本公开内容的一个方面,公开了一种用于处理指令序列的技术,指令序列包 括屏障指令、在屏障指令之前的加载指令和跟随述屏障指令的随后存储器访问指令,该技 术包括:由处理器内核基于由处理器内核接收到用于对应于加载指令的读操作的良好组合 响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决。这种技术还包括: 如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于 确定完成的屏障指令来发起随后存储器访问指令的执行。这种技术还包括:如果随后存储 器访问指令的执行在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障 指令来中断关于无效对随后存储器访问指令的追踪。
[0009] 从本发明的第一方面来看,本发明提供了一种处理指令序列的方法,指令序列包 括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指令,该方法 包括:由处理器内核基于由处理器内核接收到用于对应于加载指令以及用于加载指令的数 据的读操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被 解决;如果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核 响应于确定完成的屏障指令来发起随后存储器访问指令的执行;如果随后存储器访问指令 的执行在屏障指令的完成之前被发起,则由处理器内核响应于确定完成的屏障指令来中断 关于无效对随后存储器访问指令的追踪。
[0010] 从进一步的方面来看,本发明提供了一种被配置用于处理指令序列的数据处理系 统,指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访 问指令,该数据处理系统包括:高速缓冲存储器;以及耦接到高速缓冲存储器的处理器内 核,该系统包括用于以下操作的装置:基于由处理器内核接收到用于对应于加载指令的读 操作的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决;如 果随后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确 定完成的屏障指令来发起随后存储器访问指令的执行;以及如果随后存储器访问指令的执 行在屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的屏障指令来中断 关于无效对随后存储器访问指令的追踪。
[0011] 从进一步的方面来看,本发明提供了一种被配置用于处理指令序列的数据处理系 统,指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访 问指令,该数据处理系统包括:高速缓冲存储器;以及耦接到高速缓冲存储器的处理器内 核,其中处理器内核被配置用于:基于由处理器内核接收到用于对应于加载指令的读操作 的良好组合响应以及用于加载指令的数据中的最早的一个来确定加载指令被解决;如果随 后存储器访问指令的执行未在屏障指令的完成之前被发起,则由处理器内核响应于确定完 成的屏障指令来发起随后存储器访问指令的执行;以及如果随后存储器访问指令的执行在 屏障指令的完成之前被发起,则由所述处理器内核响应于确定完成的屏障指令来中断关于 无效对随后存储器访问指令的追踪。
[0012] 从进一步的方面来看,本发明提供了一种用于处理指令序列的计算机程序产品, 指令序列包括屏障指令、在屏障指令之前的加载指令和跟随屏障指令的随后存储器访问指 令,该计算机程序产品包括:计算机可读存储介质,其由处理电路可读取并且存储指令以用 于由处理电路执行以执行用于执行本发明的步骤的方法。
[0013] 从进一步的方面来看,本发明提供了一种存储在计算机可读介质上并且可以加载 到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当计算机程序在计算机 上被运行时,用于执行本发明的步骤。

【专利附图】

【附图说明】
[0014] 现在将仅通过示例的方式参考优选实施例描述本发明,如在以下附图中所图示出 的:
[0015] 图1是根据本发明的优选实施例配置的处理单元的相关部分的示图;
[0016] 图2是根据本发明的优选实施例配置的示例性数据处理系统的相关部分的示图;
[0017] 图3是根据本发明的优选实施例的示例性操作的示图,该操作包括在图2的数据 处理系统内实施的请求阶段、部分响应(Presp)阶段和组合响应(Cresp)阶段;
[0018] 图4是根据本发明的优选实施例的图2的数据处理系统内的示例性操作的示图; [0019] 图5是根据本发明的优选实施例的图1中的L2高速缓存的片的相关部分的示图;
[0020] 图6是根据本发明的优选实施例由图5的读取主张(read-claim,RC)机器实施的 示例性的过程的流程图;
[0021] 图7是根据本发明的优选实施例由在图5的加载-存储单元(LSU)中包括的处理 器内核加载重排序队列解决逻辑实施的示例性的过程的流程图;
[0022] 图8是根据本发明的优选实施例的示图,其图示了关于运用屏障指令(SYNC)以对 存储(ST)和加载(LD)指令排序的四种情形;以及
[0023] 图9是根据本发明的优选实施例的由图5的LSU的处理器内核加载重排序队列解 决逻辑实施的示例性屏障释放过程的流程图。

【具体实施方式】
[0024] 所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算 机程序产品。因此,本发明的各个方面可以具体实现为硬件实施方式或者组合有软件(包 括固件、驻留软件、微代码等)的实施方式,硬件方面这里可以统称为"电路"、"模块"或"系 统"。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序 产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0025] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算 机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以例如是一但不 限于--电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计 算机可读存储介质的更具体的示例包括以下的:便携式计算机盘、硬盘、随机存取存储器 (RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存 储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机 可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置 或者器件使用或者与其结合使用。
[0026] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括一但不 限于一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算 机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输 用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0027] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限 于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0028] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算 机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java⑧、Smalltalk、 C++等,还包括常规的过程式程序设计语言一诸如"C"语言或类似的程序设计语言。程序 代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件 包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器 上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网 (LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特 网服务提供商来通过因特网连接)。Java和所有基于Java商标和标记是甲骨文和/或其 关联公司的商标或者注册商标。
[0029] 下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图 和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图 中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计 算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些计 算机程序指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程 图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0030] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、 其他可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的 指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令 的制造品(article of manufacture) 〇
[0031] 计算机程序指令也可以被加载到计算机、其他可编程数据处理装置或者其他设备 上以使得一系列操作步骤在计算机、其他可编程装置或者其他设备上被执行以产生计算机 实施的过程,从而使得在计算机或者其他可编程装置上执行的指令提供用于实施在流程图 和/或一个或者多个框图中指定的功能/动作的过程。
[0032] 数据处理系统利用脆弱存储器模型,其允许对于操作的大量重排序并且允许存储 修改操作以按照非原子方式影响在不同处理器(即,存储操作可以在多处理器数据处理系 统中的不同处理器中在不同时间点起作用)。在运用脆弱存储器模型的数据处理系统中,希 望为跨多处理器数据处理系统的所有处理器的某些存储器访问操作强制实施排序和原子 性。一种用于强制实施此类操作排序的典型方式在指令序列中利用屏障(同步或者栅栏) 指令。屏障指令强迫在屏障指令的不同侧的加载和存储指令按顺序地跨系统被执行并且可 以在特定情形下恢复存储指令的原子性。屏障指令的执行是脆弱存储器模型机器的关键方 面。这样,希望屏障指令被尽可能高效地执行。为了实现操作排序以及原子性的恢复,屏障 指令等待某些事件发生以指示在允许屏障指令完成之前在数据处理系统中在屏障指令之 前的加载或者存储指令已进展得足够远(例如,已经被解决),并且然后允许在屏障指令后 的存储器访问操作继续进行。
[0033] 根据本公开内容的各种实施例,屏障指令等待的特定微架构事件被增强以允许具 有屏障指令的指令序列被更高效地处理。常规实现方式等待数据被返回到处理器内核以便 指示与数据关联的加载指令已被解决。在很多情形中,在释放屏障之前等待向处理器内核 返回加载指令的数据强制实施延迟,该延迟比必须的延迟更长,这样就减慢了包括加载指 令的指令序列的处理器执行。在当前的一致性协议实现方式中,一致性协议可以返回组合 响应(Cresp)指示,其为在用于加载指令的实际数据被返回到处理器内核之前已经绑定或 者确定了用于加载指令的值。根据本公开内容,在屏障指令之前的加载指令被认为在最早 出现用于加载指令的良好Cresp或者用于加载指令的数据"回家(home) "(即,返回到进行 请求的处理器内核)时被解决,由此允许由屏障指令实施的屏障被释放以及跟随屏障指令 的存储器访问指令的执行继续进行。在很多情形中,用于加载指令的Cresp在加载数据之 前被处理器内核接收,这意味着相比于请求数据回家以解决在屏障指令之前的之前的实现 方式,指令序列的处理被加速。
[0034] 如前所述,屏障指令可以被用于强制实施下面四种情形中的排序:加载到加载、力口 载到存储、存储到加载和存储到存储。根据本公开内容,解决了具有屏障指令的指令系列的 执行,该屏障指令对在屏障指令之前的加载指令排序。应当领会到,存储到存储排序情形没 有数据响应于在屏障指令之前的存储操作被返回,这样未被本公开内容所解决。相似地,因 为在屏障指令之后出现的加载指令通常被推测为在屏障指令完成之前已被发起并且如果 情形要求加载指令应当未在更早时被执行则被重启,所以存储到加载排序情形未被影响。
[0035] 根据本公开内容,通过允许在屏障指令之前和跟随屏障指令的加载指令以任意顺 序执行实现了加载到加载排序。然而,在屏障指令之后的加载指令被针对任何无效追踪 (直到屏障指令完成),这些无效指示由屏障指令之后的加载指令引用的地址已经改变了 其值。当前,当在屏障指令之前的更旧加载指令已经接收到它们的数据并且同步确认(SYNC ACK)已经从存储子系统中被接收到时(指示在屏障指令之前的存储指令已经被关于所有 处理器执行),屏障指令可以完成(并且因此对跟随屏障指令的更加新的加载指令的追踪 可以停止)。同样地,在当前实现方式中,在屏障指令之后出现的存储指令被延迟,直到屏障 指令完成。因为这些更加新的存储指令改变系统状态,所以这些更加新的存储指令不像那 些更加新的加载指令那样,不能够被启动,直到屏障指令完成。
[0036] 根据本公开内容,代替在先前的加载指令上等待数据回家,处理器内核在良好 Cresp出现时(良好Cresp指示将被返回的用于更旧的加载指令的值已经被绑定到更旧的 加载指令)或者在数据返回时考虑被解决的该更旧的加载指令。在读取主张(RC)机器接 收到用于读操作的良好Cresp时,RC机器向处理器内核发送指示(例如,在重载总线上) 以指示良好Cresp已经针对给定的加载指令而出现。处理器内核然后使用该Cresp以及现 存的用于监测所请求的数据的返回的机制以释放屏障指令对于加载指令的依赖性。在某些 情形中,在用于加载指令的数据被返回之前,用于加载指令的Cresp可以出现几百个处理 器周期。当Cresp在数据之前被返回时,在Cresp被接收的点处,通过释放(对于加载指令 的)屏障指令依赖性改善处理器性能。
[0037] 根据本发明的各种实施例,在Cresp的点处关于数据处理系统中的所有处理器解 决加载指令(因为当Cresp被返回时加载指令所返回的值被绑定)这一事实被用来加速指 令序列的处理。例如,在用于加载指令的Cresp在用于加载指令的数据被处理器内核所接 收之前被处理器内核所接收时,跟随在屏障指令之后的加载指令的指令可以在用于加载指 令的数据到达处理器内核处之前开始执行。
[0038] 现在参照附图并且特别地参照图1,其图示了依据本公开内容的处理单元100的 示例性实施例的高级框图。在所描绘的实施例中,处理单元100是单个集成电路,其包括两 个用于独立地处理指令和数据的处理器内核102a和102b。每个处理器内核102包括用于 取读和排序指令以用于执行的指令排序单元(ISU) 104以及用于执行指令的一个或者多个 执行单元106。由执行单元106所执行的指令可以包括例如定点和浮点运算指令、逻辑指令 和请求对存储器块的读和写访问的指令。例如,执行单元106可以包括一个或者多个浮点 单元(FPU),一个或者多个加载-存储单元(LSU)和一个或者多个整数单元(IU)。
[0039] 每个处理器内核102a、102b的操作由多级易失性存储器层级支持,该多级易失性 存储器层级在其最低级具有一个或者多个共享系统存储器132(仅其中的一个在图1中被 示出),以及在其更高级具有一个或者多个级别的高速缓冲存储器。如所描绘的,处理单元 100包括集成存储器控制器(MC) 124,其响应于从处理器内核102a、102b所接收的请求以 及由探听器126在互连结构(以下描述)中所探听的操作控制对系统存储器132的读和写 访问。
[0040] 在所图示的实施例中,处理单元100的高速缓冲存储器层级包括在每个处理器内 核102a、102b内的全存储层1(L1)高速缓存108以及由处理单元100的所有处理器内核 102a、102b共享的层2 (L2)高速缓存110。L2高速缓存110包括L2阵列和目录114、主机 (master) 112和探听器116并且可以被配置在多个片中。主机112在互连结构上发起事务 并且响应于从关联的处理器内核102a和102b所接收的存储器访问(以及其他)请求访问 L2阵列和目录114。探听器116检测互连结构上的操作、提供适当响应并且执行操作所需 要的对L2阵列和目录114的访问。虽然所图示的高速缓存层级包括仅两个缓存级别,但本 领域技术人员将领会到备选实施例可以包括片上或者片外的内置或者旁视的高速缓存的 其他级别(层3(L3)、层4(L4)等),其可以完全包含、部分包含、或者不包含更高层高速缓 存中的内容。
[0041] 如图1中进一步所示,处理单元100包括集成互连逻辑120,处理单元100可以通 过集成互连逻辑120耦接到互连结构作为更大的数据处理系统的一部分。在所描绘的实施 例中,互连逻辑120支持任意数目tl的"第一层"互连链接,在这种情形中互连链接包括入 站和出站'X','Y'和'Z'链接。互连逻辑120还支持如在图1中被设计为入站和出站'A' 和'B'链接的任意数目t2第二层链接的。利用这些第一和第二层链接,每个处理单元100 可以被耦接用于到上至tl/2+t2/2 (在这个情形中是5)个其他处理单元100的双向通信。 互连逻辑120包括请求逻辑121a (被标记为'R')、部分响应逻辑121b (被标记为'P')、组 合响应逻辑121c (被标记为'C')以及数据逻辑121d(被标记为'D')以用于在不同操作 阶段处理和转发信息。此外,互连逻辑120包括配置寄存器123 (被标记为'CR'),其包括 用于配置处理单元100的多个模式比特。这些模式比特优选地包括:(1) 一个或者多个模 式比特的第一集合,其选择用于第一和第二层链接的希望的链接信息分配;(2)模式比特 的第二集合,其指定处理单元100的第一和第二层链接中哪个连接到其他处理单元100 ;以 及(3)模式比特的第三集合,其确定保护窗延伸的可编程持续时间。
[0042] 每个处理单元100还包括响应逻辑122的实例,其实施分布式相干性信号传输机 制的一部分,该分布式相干性信号传输机制维持在处理单元100的高速缓存层级和其他处 理单元100的高速缓存层级之间的高速缓存相干性。最后,每个处理单元100包括集成1/ 〇(输入/输出)控制器128,其支持附接一个或者多个I/O设备,比如I/O设备130。I/O 控制器128可以响应于I/O设备130的请求在'X','Y','Z','A'和'B'链接上发布操 作以及接收数据。
[0043] 现在参照图2,其描绘了根据本公开内容的由多个处理单元100形成的数据 处理系统200的示例的实施例的框图。如所示,数据处理系统200包括八个处理节点 202a0-202d0以及202al-202dl,其各自可以被实现为包括包含四个处理单元100的打包的 多芯片模块(MCM)。如所示,通过处理单元的'X','Y','Z'链接,在每个处理节点202 内的处理单元100被耦接用于点到点通信。每个处理单元100可以进一步通过处理单元的 'A','B'链接被耦接到两个不同的处理节点202中的处理单元100以用于点到点通信。虽 然在图2中图示了双向箭头,但应当理解,每对'X','Y','Z','A'和'B'链接优选地 (但不是必需地)被实施为两个单向链接而不是双向链接。
[0044] 用于形成图2中所示的拓扑的通用表达可以被如下给出:
[0045] 节点[I] [K].芯片[J].链接[K]连接到节点[J] [K].芯片[I].链接[K],对于 所有I关J的情形;and
[0046] 节点[I] [K].芯片[J].链接[K]连接到节点[I] [NOT K].芯片[I].链接[NOT K] ;AND
[0047] 节点[I] [K].芯片[I].链接[NOT K]连接到:
[0048] 空,保留用于将来的扩展;OR
[0049] 节点[额外][非K].芯片[I].链接[K],在所有的链接都被完全利用时(即,9 个8-路节点形成了 72路系统);AND
[0050] 其中I和J属于集合{a, b, c, d}AND K属于集合{0, 1}。
[0051] 当然,备选表达可以被定义为形成其他的功能上等同的拓扑。而且,应当领会到, 所描绘的拓扑是代表性的而不是穷尽体现了本发明的数据处理系统拓扑,并且其他拓扑是 可能的。在此类备选拓扑中,例如,耦接到每个处理单元100的第一层和第二层链接的数目 可以是任意数目,并且在每层内的处理节点202的数目(即,I)不需要等于每个处理节点 100的处理单元100的数目(即,J)。
[0052] 本领域技术人员将领会到,SMP数据处理系统100可以包括许多附加的未图示的 组件,比如互连网桥、非易失性存储器、用于到网络的连接的端口或者附接的设备等。因为 此类附加组件对于理解本发明不是必需的,所以这里没有在图2中图示或者讨论它们。
[0053] 现在参照图3,其描绘了图2的数据处理系统200的互连结构上的示例性操作的时 间-空间示图。当主机300 (例如,L2高速缓存110的主机112或者I/O控制器128内的 主机)在互连结构上发布请求302时,操作开始。请求302优选地至少包括指示希望的访 问的类型的事务类型以及指示请求将要访问的资源的资源标识符(例如,真实地址)。请求 的普通类型包括以下在表I中所阐明的内容。
[0054] 表 I
[0055] 请求 描述 READ 请求用于查询目的的存储器块的镜像的副 本 RW1TM(具有修改目的请求存储器块的镜像的唯一副本并且具有 的读) 更新(修改)它的意图并且如果有的话则请 求销毁其他副本 DCLAIM (数据主张)请求授权以将存储器块的现存的仅可查询 副本提升为唯一副本且具有更新(修改)它 的意图并且如果有的话则请求销毁其他副 本 DCBZ (数据高速缓存请求授权以创建存储器块的新的唯一副本 缓存块清零) 而不考虑其当前的状态并且随后修改其内 容;如果有的话则请求销毁其他副本 CASTOUT 从存储器的更高层向存储器的更低层复制
[0056] 存储态块的镜像 WRITE 请求授权以创建存储器块的新的唯一副本 而不考虑其当前状态井且立即从更咼层存 储器向更低层存储器复制存储器块的镜像 PARTIAL WRITE 请求授权以创建部分存储器块的新的唯一 副本而不考虑其当前状态并且在准备销毁 更高层的副本时立即从更高层存储器向更 低层存储器复制部分存储器块的镜像
[0057] 关于这些操作的进一步细节以及有助于高效处理这些操作的示例性高速缓存相 干性协议可以在美国专利No. 7, 774, 555中被找到。
[0058] 请求302被探听器304接收,探听器304例如是遍布数据处理系统200分布的L2 高速缓存110的探听器116和頂C 124的探听器126。通常,在有一些例外的情况下,因为 仅在请求302无法被处理单元100在内部服务时请求302在互连结构上被传输,所以在与 请求302的主机112相同的L2高速缓存110中的探听器116不探听请求302 (即,通常没 有自探听)。接收和处理请求302的探听器304各自提供相应的部分响应306,该部分响应 306代表至少该探听器304对请求302的响应。在頂C 124内的探听器126基于例如探听 器126是否对请求地址负责确定要提供的部分响应306,以及是否有可用于服务于的资源。 L2高速缓存110的探听器116可以基于例如它的L2高速缓存目录114的可用性、探听器 116内的用于处理请求的探听逻辑实例的可用性以及与L2高速缓存目录114中的请求地址 关联的相干性状态确定它的部分响应306。
[0059] 探听器304的部分响应306在逻辑上要么被有阶段性地组合要么一次性地通过响 应逻辑122的一个或者多个实例而被组合,以确定对于请求302的系统范围中的组合响应 (Cresp)310。在一个实施例中,在以下中假设,响应于生成Cresp 310的响应逻辑122的实 例被定位在处理单元100中,该处理单元100包含有发布了请求302的主机300。响应逻辑 122经由互连结构向主机300和探听器304提供Cresp 310,以指示对于请求302的系统范 围的响应(例如,成功、失败、再试等)。如果Cresp 310指示请求302的成功,则Cresp310 可以指示例如用于被请求的存储器块的数据源、主机300将按照其高速缓存被请求的存储 器块的高速缓存状态以及使得在一个或者多个L2高速缓存110中的所请求的存储器块无 效的'清除'操作是否是需要的。
[0060] 响应于接收到Cresp 310, 一个或者多个主机300以及探听器304典型地执行一 个或者多个操作以便服务于请求302。这些操作可以包括向主机300供应数据,无效或者 以其他方式更新高速缓存在一个或者多个L2高速缓存110中的数据的相干性状态、执行 castout操作、向系统存储器132写回数据等。如果请求302需要,则可以在由响应逻辑122 生成Cresp 310之前或者之后,向主机300或者从主机300传输被请求的存储器块或者目 标存储器块。
[0061] 在以下描述中,将参照探听器是相干性的最高点(HPC)、相干性的最低点(LPC)或 者均无关于由请求指定的请求地址来描述探听器304的对于请求302的部分响应306,以 及由探听器304响应于请求302所执行的操作和/或它的组合响应310。这里,LPC被定义 为存储器设备或者作为用于存储器块的存储库的I/O设备。在不存在用于存储器块的HPC 时,LPC保持存储器块的真实镜像并有权允许或者否决用于生成存储器块的附加的高速缓 存的副本的请求。对于在图1和图2的数据处理系统实施例中的典型请求,LPC将是用于 系统存储器132的存储器控制器124,其保持有被引用的存储器块。这里,HPC被定义为被 唯一标识的设备,其高速缓存有存储器块的真实镜像(其可以或者可以不与LPC处的对应 的存储器块相一致)并有有权允许或者否决用于修改存储器块的请求。描述性地,HPC也 可以响应于并不修改存储器块的操作而向请求方提供存储器块的副本。因此,对于图1和 图2的数据处理系统实施例中的典型的请求,如果有的话,HPC将是L2高速缓存110。虽然 其他指示符也可以被用来指明用于存储器块的HPC,但本发明的优选实施例如果有的话指 明用于存储器块的HPC,该存储器块利用L2高速缓存110的L2高速缓存目录114内的选定 的高速缓存相干性状态。
[0062] 仍然参考图3,如果有的话,在请求302中被引用的用于存储器块的HPC,或者在没 有HPC时存储器块的LPC,优选地如果必须的话,则在对请求302的响应中有责任保护存储 器块的所有权的转移。在图3中所示的示例性场景中,在用于由请求302的请求地址指定 的存储器块的HPC处(或者在没有HPC时,LPC)的探听器304η,在保护窗312a期间和随后 的窗延伸312b期间,保护被请求的存储器块的所有权向主机300的转移,其中保护窗312a 是从探听器304η确定其部分响应的时间延伸直到探听器304η接收Cresp 310,其中随后的 窗延伸312b延伸超过由探听器304η接收到Cresp 310后的可编程时间。在保护窗312a和 窗延伸312b期间,探听器304η通过提供部分响应到其他的请求保护所有权的转移直到所 有权被成功地转移到主机300,其中其他请求指定相同的请求地址,其防止其他主机获取所 有权(例如,再试部分响应)。同样地,跟随接收到组合响应310,主机300发起保护窗313 以保护在请求302中所请求的其自己的存储器块的所有权。
[0063] 因为探听器304都具有用于处理前述的CPU和I/O请求的有限资源,所以各种不 同层级的部分响应和对应的Cresp是可能的。例如,如果在负责被请求的存储器块的存储 控制器124内的探听器126具有可用于处理请求的队列,则探听器126可以用部分响应做 出响应,该部分响应指示探听器可以充当用于请求的LPC。在另一方面,如果探听器126没 有可用于处理请求的队列,则探听器126可以用部分响应做出响应,该部分响应指示探听 器126是用于存储器块的LPC但是其当前不能服务于该请求。相似地,在L2高速缓存110 中的探听器116可以要求探听逻辑的可用实例以及对L2高速缓存目录114的访问以便处 理请求。在不能访问这些资源中的一个(或者两个)时导致部分响应(以及对应的Cresp), 该部分响应信号通知由于缺少所需的资源而不能服务于该请求。
[0064] 如在图3中进一步图示的,在主机300从响逻辑122接收到Cresp (用于加载指 令)之前或者之后,探听器304η可以返回数据(用于在指令序列中的屏障指令之前的加载 指令)到主机300(即,L2高速缓存110的主机112)。根据本公开内容,在当探听器304η 返回数据之前主机300从响应逻辑122接收Cresp的情况下,主机300返回Cresp到处理 器内核102,处理器内核102转而解决加载指令并可以允许屏障指令去解决和加载和保存 在所述屏障指令之后的指令,以在屏障指令之后的指令的执行还没有被发起的时候开始执 行。在所述屏障指令之后的加载指令的执行已经被处理器102在接收到Cresp或者数据之 前发起的情况下,处理器内核102中断使用无效追踪逻辑以用于执行如下加载指令,这些 加载指令是在指令序列中的屏障指令之后的。
[0065] 现在参照图4,其图示了图2的数据处理系统200中的示例性的操作流程的时 间-空间示图。在这些图中,数据处理系统200内的各种处理单元100被标记有两个位置标 识符-第一个标识处理单元100所属于的处理节点202并且第二个标识处理节点202内的 特定处理单元100。因此,例如,处理单元100a0c指的是处理节点202a0的处理单元100c。 此外,每个处理单元100被标记有功能标识符,该功能标识符指示其相对于参与操作的其 他的处理单元100的功能。这些功能标识符包括:(1)本地主机(LM),其指明发源操作的处 理单元100 ; (2)本地集线器(LH),其指明如下处理单元100,该处理单元与本地主机一样在 同一个处理节点202中并且负责阐述操作到另一处理节点202 (本地主机也可以是本地集 线器);(3)远程集线器(RH),其指明如下处理单元100,该处理单元在与本地主机不同的处 理节点202中并且负责分发操作到它的处理节点202中的其他处理单元100 ;以及(4)远 程叶(RL),其指明如下处理单元100,该处理单元在不同于本地主机的处理节点202中而且 该处理单元不是远程集线器。
[0066] 如图4中所示,示例性操作具有如以上参照图3所描述的至少3个阶段,即请求 (或者地址)阶段、部分响应(Presp)阶段和组合响应(Cresp)阶段。这3个阶段优选地以 前述的顺序出现并且不重叠。操作可以附加地具有数据阶段,其可以可选地与请求、部分响 应和组合响应阶段中的任何阶段重叠。
[0067] 仍然参照图4,当本地主机lOOaOc (即,处理节点202a0的处理单元100c)执行请 求(例如,读请求)的同步广播到它的处理节点202a0内的本地集线器100a0a、100a0b、 100a0c和100a0d中的每个本地集线器时,请求阶段开始。应当注意,本地集线器的列表 包括本地集线器100a0c,其也是本地主机。这一内部传输可以被有利地用于本地集线器 100a0c的操作与本地集线器100a0a、100a0b和100a0d的同步以使得时序约束可以被更容 易地满足。
[0068] 响应于接收到请求,通过它的'A'或者'B'连接被耦接到远程集线器100的每个本 地集线器1〇〇传输操作到它的远程集线器1〇〇。因此,本地集线器100a0a在它的出站'A' 链接上不进行操作的传输,而是经由它的出站'B'链接传输操作到处理节点202al内的远 程集线器。本地集线器100a0b、100a0c和100a0d经由它们的相应的出站'A'和'B'连接 分别传输操作到处理节点202b0和处理节点202bl、处理节点202c0和处理节点202cl以及 处理节点202d0和处理节点202dl中的远程集线器。接收到操作的每个远程集线器100转 而传输操作到它的处理节点202中的每个远程叶100。因此,例如,远程集线器100b0a传输 操作到远程叶100b0b、100b0c和100b0d。以这种方式,操作被高效地广播到数据处理系统 200内的所有处理单元100,这种传输利用不超过3个链接。
[0069] 在请求阶段之后,是部分响应(Presp)阶段出现。在部分响应阶段中,每个远程叶 100评估操作并提供它的部分的响应到对它的相应的远程集线器100的操作。例如,远程叶 100b0b、100b0c和100b0d传输它们的相应的部分响应到远程集线器100b0a。每个远程集 线器100转而传输这些部分响应以及它们自己的部分响应到本地集线器100a0a、100a0b、 100a0c和100a0d中的相应的本地集线器。本地集线器100a0a、100a0b、100a0c和100a0d 然后广播这些部分响应以及它们自己的部分响应到处理节点202a0中的每个本地集线器 100。应当注意,处理节点202a0中的本地集线器100所响应的部分响应的广播出于时序原 因包括由每个本地集线器100所进行的其自己的部分响应的自广播。
[0070] 如将领会到的那样,按照示出的方式的部分响应的收集可以按照多种不同方式被 实施。例如,有可能将个别部分响应从每个其他本地集线器、远程集线器和远程叶传送回每 个本地集线器。备选地,为了更高的效率,可能希望在部分响应被传送回本地集线器时积累 这些部分响应。为了确保每个部分响应的效果被精确地传送回本地集线器100,优选地是如 果真要进行的话则以非破坏性的方式积累部分响应,例如,使用逻辑0R函数以及在受制于 这个函数时使用其中未丢失相关信息的编码(例如,"独热(one-hot)"编码)。
[0071] 如图4中进一步所示的,在处理节点202a0内的每个本地集线器100的响应逻辑 122编译其他处理单元100的部分响应以获取到组合响应,该组合响应代表对于该请求的 系统范围的响应。本地集线器100a0a-100a0d然后遵循针对请求阶段所运用的相同的分发 路径广播组合响应到所有处理单元1〇〇。因此,组合响应首先被广播到远程集线器1〇〇,远 程集线器100转而传输组合响应到它们的相应的处理节点202内的每个远程叶100。例如, 本地集线器100a0b传输组合响应到远程集线器100b0a,远程集线器100b0a转而传输组合 响应到远程叶100b0b、100b0c和100b0d。
[0072] 如前所述,服务于操作可能需要附加的数据阶段。例如,如果操作是读类型操作 (比如读或者RWITM操作),则远程叶100b0b可以经由连接远程叶100b0d到远程集线器 100b0a的链接、连接远程集线器100b0a到本地集线器100a0b的链接和连接本地集线器 100a0b到本地主机100a0c的链接,寻求到本地主机100a0c的被请求的存储器块的来源。 相反地,如果操作是写类型操作(例如,高速缓存castout操作,其将修改的存储器块写回 远程叶100b0b的系统存储器132),则存储器块经由连接本地主机lOOaOc到本地集线器 100a0b的链接、连接本地集线器100a0b到远程集线器100b0a的链接和连接远程集线器 100b0a到远程叶100b0b的链接被传输。
[0073] 当然,在图4中描绘的场景仅仅是无数可能的操作中的一个示例,其可能会同时 地出现在多处理器数据处理系统(比如数据处理系统200)中。
[0074] 如以上参照图3所描述的,在存储器块的相干性所有权从探听器304η被"转送 (handoff) "到请求主机300期间相干性被维持,其中在上述转送时可能有其他主机通过保 护窗312a、窗延伸312b和保护窗313在竞争相同存储器块的所有权。例如,保护窗体312a 和窗延伸312b必须一起具有足够的持续时间来保护所请求的存储器块的相关性所有权转 移到获胜的主机300 (WM),这时有竞争主机(CM)在的竞争请求。为了确保保护窗312a和窗 延伸312b具有足够的持续时间来保护所请求的存储器块的所有权转移到获胜的主机300, 在根据图4的处理单元100之间的通信延时较佳地被限制以使得以下条件被满足:
[0075] A_lat(CM_S) ^ A_lat(CM_WM)+C_lat(WM_S)+ ε ,
[0076] 其中的A_lat(CM_S)是任何竞争主机(CM)到拥有被请求的存储器块的相干性的 探听器304η的地址延时,A_lat(CM_WM)是任何竞争主机(CM)到被探听器304η授予相干性 所有权的"获胜"主机300(WM)的地址延时,C_lat(WM_S)是从组合响应被获胜主机(WM)300 接收到的时间起到组合响应被拥有被请求的存储器块的探听器304η所接收到的时间止的 组合响应延时,并且ε是窗延伸312b的持续时间。
[0077] 如果可应用于任意拓扑的系统的前述时序限制未被满足,则竞争主机的请求可能 被(1)竞争主机300在竞争主机300具有相干性所有权以及发起保护窗312b之前被接收; (2)探听器304η在保护窗312a和窗延伸312b结束之后接收。在此类情形中,获胜的主机 300和探听器304η都不将提供部分响应给阻止竞争主机获取存储器块的相干性所有权并 从存储器读取非相干数据的竞争请求。然而,为了避免这种相干性错误,窗延伸312b可以 被可编程地设置(例如,通过合适地设置配置寄存器(CR) 123)为一个任意的长度(ε)以 补偿延迟变化或者物理实施的缺点,其中物理实施可能以其他方式未能满足必须被满足以 维持相干性的时序限制。因此,通过求解前面的公式中的ε,用于任何实现方式的窗延伸 312b的理想长度可以被确定。
[0078] 就前述的时序约束可进行多个观察。首先,从竞争主机到拥有的探听器304a的地 址延时没有必须的下界,但是必须具有上界。上界通过确定给定的最坏情况可达延时以及 最大可能的振荡漂移、耦接处理单元1〇〇的最长链接、积累的位(Stalla)的最大数目以及 保证的最坏情形吞吐量来而被设计。为了确保上界被观察到,互连结构必须确保非阻塞行 为。
[0079] 第二,从竞争主机到获胜主机300的地址延时没有必需的上界,但是应该具有下 界。该下界通过给定的最好情形可达延时,以及位缺失、在处理单元1〇〇之间的最短可能链 接和给定特定静态配置下的最慢振荡漂移而被确定。
[0080] 虽然对于给定的操作,获胜主机300和竞争主机中的每一个具有仅一个时序界以 用于它的相应的请求,但是将领会到,在操作的过程期间,任何处理单元100可以是用于一 些操作的获胜主机以及用于其他操作的竞争(和失败)主机。结果,每个处理单元100高 效地具有用于它的地址延时的上界和下界。
[0081] 第三,从组合响应被生成的时间到组合响应被获胜的主机300观察到的时间的组 合响应延时没有必需的下界(组合响应可以在任意早的时间到达获胜主机300),但是必须 具有上界。相比之下,从组合响应被生成的时间直到组合响应被探听器304η接收到的时间 的组合响应延时具有下界,但是没有必需的上界(虽然可以任意地向飞速并行操作的数目 强加限制)。
[0082] 第四,对于部分响应延时没有约束。也就是说,因为所有的以上枚举的时序限制的 项与请求/地址延时以及组合响应延时有关,所以探听器304和竞争主机的对于获胜主机 300的部分响应延时就不具有必需的上界或者下界。
[0083] 连接处理单元100的第一层和第二层链接可被以各种方式来实施以获取在图2中 所描绘的拓扑以满足时序约束。在一个优选实施例中,每个入站和出站第一层('X','Υ' 和'Ζ')链接以及每个入站和出站第二层('Α'和'Β')链接被实施为单向的8字节总线, 该8字节总线包含多个不同的虚拟通道或者使用权以传送地址、数据、控制和相干性信息。
[0084] 为了高效地处理对于可高速缓存地址的多个并发存储器访问,每个L2高速缓存 110可以被实施为具有多个L2高速缓存片,每个L2高速缓存片处理对于相应的真实存储器 地址集合的存储器访问请求。现在参照图5,其图示了根据本公开内容的示例性L2高速缓 存片ll〇a的更详细的框图。如图5中所示,L2高速缓存片110a包括高速缓存阵列502和 高速缓存阵列502的内容的目录508。虽然没有被明确地图示,但是高速缓存阵列502优选 地被实施为具有单个读端口和单个写端口以减少实施高速缓存阵列502所需要的裸片区 域。
[0085] 假设如常规的那样高速缓存阵列502和目录508被设置为关联的,使用系统存储 (真实)地址内的预定索引比特,系统存储器132中的存储器位置被映射到高速缓存阵列 502内的特定同余类。存储在高速缓存阵列502的高速缓存线中的特定存储器块被记录在 高速缓存目录508中,高速缓存目录508对于每个高速缓存线包含一个目录条目。尽管在 图5中没有被明显地描绘,但是本领域技术人员将理解,高速缓存目录508中的每个目录条 目包括各种字段,例如,标识在高速缓存阵列502的对应的高速缓存线中保持的存储器块 的真实地址的标记字段、指示高速缓存线的相干性状态的状态字段以及指示在相同同余类 中的关于其他高速缓存线的用于高速缓存线的替换顺序的最近最少使用(LRU)字段。
[0086] L2高速缓存片110a包括多个(例如,16个)读取主张(RC)机器512a_512n以用 于独立地和并发地服务于从附属的处理器内核102接收的加载(LD)和存储(ST)请求。至 少一些RC机器512可以被实施为更小的特殊用途RC机器,其能够处理比所有可能类型的 从附属的处理器内核102处接收的存储器访问请求更少的类型的存储器访问请求。一般而 言,以这种方式实施特殊用途RC机器实质上减少了在处理单元100中的专用于RC机器512 的裸片区域。
[0087] 根据本公开内容的一个方面,RC机器512还被配置用于经由复用器M5返回用于 到内核102加载指令的Cresp (从本地互连514接收),该复用器M5可以经由未图示的选 择线由仲裁器505(或者其他逻辑)控制。如图5中所图示的,内核10还也包括加载-存 储单元(LSU) 555 (例如,执行单元106的一个),其包括加载再排列队列(LRQ) 555a和LRQ 解决逻辑555b。LSU 555的解决逻辑555b被配置用于插入用于加载指令的条目(该加载 指令在指令序列中的屏障指令之如)到LRQ 555a中并且响应于确定加载指令被解决来将 LRQ 555a中的该项目标记为已解决。例如,LRQ解决逻辑555b可以通过断言条目的一个或 者多个比特来将LRQ 555a中的该条目标记为已解决。根据本公开内容,当处理器内核102 接收到用于加载指令的良好Cresp (经由复用器M5来自L2高速缓存片110a),或者用于加 载指令的数据(经由复用器M3来自L2高速缓存片110a)的时候,加载指令被解决。
[0088] 为了服务于源自处理器内核102而不是附属的处理器内核102的远程存储器访问 请求,L2高速缓存片110a包括多个探听机器51 la-51 lm。每一个探听器机器511可以独立 地并并且发地处理从本地互连514被"探听"的远程存储器访问请求。
[0089] 如将被领会到的,RC机器512对于存储器访问请求的服务可以要求对高速缓存阵 列502内的存储器块的替换或者无效。相应地,L2高速缓存片110包括C0(cast 〇ut)机器 510,该C0机器510管理着对来自高速缓存阵列502的存储器块的移除和回写。
[0090] L2高速缓存片110a的仲裁器505被进一步配置用于控制复用器M1-M2来对从附 属的处理器内核102处接收的本地存储器访问请求和在本地互连514上所探听的远程请求 的处理排序。包括本地加载和存储操作以及远程读和写操作的存储器访问请求根据由仲裁 器505所实施的仲裁政策被转发到分发流水线506,在分发流水线506处在给定数目的周期 上关于目录508和高速缓存阵列502处理每个读/加载和存储请求。
[0091] L2高速缓存片110a还包括RC队列520和CPI (castout推送介入)队列518,这 两个队列分别缓冲被插入到高速缓存阵列502中和从高速缓存阵列502移除的数据。RC队 列520包括多个缓冲器条目,其各自个别地对应于特定的RC机器512以使得每个被调度的 RC机器512仅仅从被指定的缓冲器条目取回数据。相似地,CPI队列518包括多个缓冲器 条目,这些缓冲器条目各自给别地对应于特定的castout机器510和探听机器511,从而使 得被调度的每个C0机器510和每个探听器511仅仅从相应的指定的CPI缓冲器条目取回 数据。
[0092] 每个RC机器512还具有向其指派的有多个RC数据(RCDAT)缓冲器522中的一个 以用于缓冲从高速缓存阵列502读取的存储器块和/或经由再加载总线523从本地互连 514接收的存储器块。被指派给每个RC机器512的RCDAT缓冲器522优选地被构造为具有 连接和功能,这些连接和功能对应于可以被关联的RC机器512所服务的存储器访问请求。 如以下还进一步讨论的,一些但不是所有的RCDAT缓冲器522具有关联的存储数据复用器 M4,该复用器M4响应于未图示的由仲裁器505生成的选择信号从它的用于缓冲到RCDAT缓 冲器522中的输入选择数据字节。
[0093] 在操作中,处理器存储包括事务型(ttype)、目标真实地址的请求,并且将从附属 的处理器内核102接收的数据存储在存储队列(STQ) 504内。STQ504还包括用于处理屏障 指令(主要是特殊存储指令)的屏障解决逻辑(没有被分离地显示)。当屏障指令到达 STQ504的头部时(即,先于屏障指令的所有保存指令已被推送通过STQ 504),屏障解决逻 辑返回确认(ACK)到处理器内核102,这如这里进一步描述的那样释放屏障(参见图9)。从 STQ 504,保存数据经由数据路径524被传输到存储数据复用器M4,并且存储型和目标地址 被传递到复用器Ml。复用器Ml也接收来自处理器内核102的处理器加载请求和来自于RC 机器512的目录写请求作为输入。响应于由仲裁器505生成的未图示的选择信号,复用器 Ml选择它的输入请求中的一个以转发到复用器M2,该复用器M2附加地从本地互连514经 由远程请求路径526接收远程请求作为输入。仲裁器505基于调度来调度用于处理的本地 和远程存储器访问请求并且生成选择信号528的序列。响应于由仲裁器505生成的选择信 号528,复用器M2选择从复用器Ml接收的本地请求或者从本地互连514所探听的远程请求 作为将要被处理的下一存储器访问请求。
[0094] 被选择用于由仲裁器505处理的请求被复用器M2放置在分发流水线506中。分 发流水线506优选地被实施为固定持续时间流水线,在该流水线中在预定数目的时间周期 中多个可能重叠的请求A、B、C等中的每个被处理。例如,分发流水线506在每四个周期中 可以处理一个请求。
[0095] 在分发流水线506内的第一个处理周期期间,1-循环目录读被执行从而使用请求 地址来确定请求地址在目录508中命中还是未命中,并且如果存储器地址命中则确定目录 508内的存储器块的相干性状态。包括命中/未命中指示和存储器块的相干性状态的目录 信息在随后周期(比如第四周期)中被目录508返回到分发流水线506。如将领会的那样, 通常在L2高速缓存片中响应于对远程存储器访问请求的未命中不进行动作,这样的远程 存储器请求被相应地从分发流水线506丢弃。然而,在本地存储器访问请求上命中或者未 命中或者远程存储器访问请求上命中时的情况下,L2高速缓存片110a将服务于该存储器 访问请求,而对于在处理单元100内完全不能被服务的请求,可能需要经由结构控制器516 在本地连接514上进行通信。
[0096] 在分发流水线506内的存储器访问请求的处理期间的预定时间处,仲裁器505经 由地址和控制路径530传输请求地址到高速缓存阵列502以发起由请求地址所指定的存储 器块的高速缓存读。高速缓存读在示例性实施例中耗时2个周期。从高速缓存阵列502读 取出来的存储器块经由数据路径542被传输到错误校正代码(ECC)逻辑544,该错误校正代 码逻辑544检查存储器块以寻找错误,如果可能的话,校正任何检测到的错误。对于处理器 加载请求,存储器块也经由数据路径540被传输到加载数据复用器M3以用于转发到附属的 处理器内核102。
[0097] 在分发流水线506中的存储器访问请求的处理中的最后的周期,分发流水线506 做出分发确定。例如,分发流水线506可以基于一些标准确定进行分发确定,这些标准包 括:(1)存在由castout机器510、探听511或者RC机器512当前处理的请求地址和之前的 请求地址之前的地址冲突;(2)目录信息;以及(3)用于处理存储器访问请求的RC机器512 或者探听机器511的可用性。如果分发流水线506做出存储器访问请求将被分发的分发确 定,则存储器访问请求被从分发流水线506分发到RC机器512或者探听机器511。如果存 储器访问请求分发失败,则失败通过再试响应,被信号通知到请求器(例如,本地或者远程 处理器内核102)。如果必需的话,请求器可以随后再试失败了的存储器访问请求。
[0098] 在RC机器512处理本地的存储器访问请求时,RC机器512具有一个忙状态并且 不可用于服务于另一个请求。当RC机器512具有忙状态时,如果必需的话,RC机器512可 以执行目录写操作以更新目录508的相关条目。另外,RC机器512可以执行高速缓存写 以更新高速缓存阵列502的相关高速缓存线。目录写和缓存写可以在其中分发流水线506 未准备好根据目录读和高速缓存读的固定调度处理其他请求的任何间隔期间由仲裁器505 调度。当用于给定请求的所有操作已被完成时,RC机器512返回不忙状态。
[0099] 将被领会到的是,对于非固定调度操作(比如目录写和高速缓存写)的调回会影 响其他操作的调度,包括根据固定调度被处理的那些操作。
[0100] 参照图6,其图示了由根据本公开内容的实施例所配置的RC机器512所实施的示 例性过程600的流程图。在块602中,过程600被发起,届时控制转移到块604。在块604 中,RC机器512响应于目录508中的加载指令的目标地址的高速缓存未命中,在互连结构 上发布对应于加载指令(该指令被包括在包括屏障指令的指令序列中,其中屏障指令跟随 加载指令)的读操作。接着,在决定块606中,RC机器512确定用于读操作的数据是否已 被接收到,例如,从另一个L2高速缓存110或者系统存储器132处接收到。在块606中,响 应于RC机器512确定已针对读操作接收到数据,控制从块606转移到块616,在块616用于 读操作的数据被返回(经由复用器M3)到关联的处理器内核102。在块606中,响应于没有 被接收到用于读操作的数据,控制从块606转移到决定块608。
[0101] 在块608中,RC机器512确定是否针对读操作已接收到Cresp。响应于用于读操 作的Cresp在块608中没有被接收到,控制从块608转移到块606。响应于用于读操作的 Cresp在块608中被接收到,控制从块608转到决定块610。在块610中,RC机器512确定 接收到的用于读操作的Cresp是否是"良好",这意味着将供应由读操作请求的数据,例如, 由数据处理系统200中的另一 L2高速缓存110或者系统存储器132。在块610中,响应于 Cresp不是良好,控制从块610转移到块604,其中读操作被再次发布。在块610中,响应于 Cresp是良好,控制从块610转移到块612。
[0102] 在块612中,RC机器512返回(经由复用器M5)良好的Cresp指示到处理器内核 102。接着,在决定块614中,RC机器512确定是否已经针对读操作接收到数据。在块614 中,响应于没有被接收到针对读操作的数据,控制循环到块614上。在块614中,响应于接 收到针对读操作的数据,控制从块614转移到块616,其中RC机器512返回由读操作所请求 的数据到处理器内核102。跟随块616,控制转移到块618,在块618过程600结束,直到RC 机器512被指派另一存储器访问操作。
[0103] 参照图7,其图示了由根据本公开内容的实施例的LSU 555的处理器内核加载重 排序队列解决逻辑555b实施的示例性过程700的流程图。在块702中,过程700被发起, 届时控制转移到决定块704。在块704中,LSU 555的解决逻辑555b为如下加载指令在LSU 555的加载重排序队列(LRQ) 555a中创建队列条目,该加载指令在指令序列中先于屏障指 令。接着,在决定块706中,LSU 555的解决逻辑555b确定是否由加载指令所请求的数据 已经被接收到。在块706中,响应于确定由加载指令所请求的数据尚未被接收到,控制转移 到决定块708。然而,如果在块706中确定由加载指令所请求的数据已被接收到,则控制转 移到决定块710。
[0104] 在块708中,LSU 555的解决逻辑555b确定是否针对加载指令接收到了良好 Cresp。在块708,响应于良好Cresp尚未被接收到,控制转移到块706。在块708,响应于 良好Cresp已被接收到,控制转移到块710。在块710中,LSU 555的解决逻辑555b将LSU 555的LRQ中的用于加载指令的条目标记为已解决。跟随块710,控制转移到块712,在块 712过程700结束。
[0105] 参照图9,其图示了(例如,由LSU 555实施的)示例性屏障释放过程900的流程 图。过程900响应于屏障指令的执行而被实施。在块902中,过程900被发起,届时控制转 移到决定块904。在块904中,LSU 555的解决逻辑555b确定是否所有的在屏障指令之前的 加载指令已经被解决。在所有的在屏障指令之前的加载指令尚未被解决时,控制循环到块 904。在块904中,响应于在屏障指令之前的所有加载指令被解决,控制转移到决定块906。 在决定块906中,LSU 555的解决逻辑555b通过确定是否用于给定屏障指令的ACK已经被 收到来确定是否所有的在屏障指令之前的存储指令已经被解决。在所有的在屏障指令之前 的存储指令尚未被解决时,控制循环到块906。在块906中,响应于在屏障指令之前的所有 存储指令被解决,控制转移到决定块908。在块908中,LSU 555的解决逻辑555b完成用于 屏障指令的SYNC操作,届时跟随屏障指令的存储器访问指令的执行可以继续进行。跟随块 908,在块910中过程900结束。
[0106] 相应地,已在这里被公开的技术在执行包括屏障指令的指令序列时可以有利地改 善处理器性能。例如,在处理器内核处当对于加载指令的良好组合响应在用于加载指令的 数据在处理器内核处被接收之前而被接收时,屏障指令可以响应于该良好组合响应而被释 放,从而在某些情形下来在数百个周期改善处理器性能。
[0107] 附图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程 序产品的可能的实现方式的架构、功能和操作。在这点上,流程图或框图中的每个方框可以 代表模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于 实现指定的逻辑功能的可执行指令。还应注意的是,在一些备选实现方式中,在方框中所标 注的功能也可以以不同于附图中所标注的顺序发生。例如,两个被连续示出的方框实际上 可以基本并行地被执行,或者方框有时也可以按相反的顺序被执行,这依赖于所涉及的功 能。还应注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组 合,可以用执行指定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件 与计算机指令的组合来实现。
[0108] 这里使用的术语仅是出于描述特定实施例的目的并且并非旨在于限制本发明。如 这里所使用的,单数形式的"一"、"一个"和"该"旨在于也包括复数形式,除非上下文明确地 另有指示。还将理解,术语"包括"和/或"包含"(以及类似的术语,比如包括着、包括有、 具有、包含有等)当在本说明书中被使用时指定所陈述的特征、整体、步骤、操作、元件和/ 或部件的存在,但并不排除一个或者多个其他特征、整体、步骤、操作、元件、部件和/或其 分组的存在或添加。
[0109] 以下权利要求中的所有装置或者步骤加功能元素的对应结构、材料、动作和等效 物如果存在则旨在于包括用于结合如具体要求保护的其他要求保护的元素执行功能的任 何结构、材料或者动作。本发明的描述已经出于例示和描述的目的而被呈现,但是并非旨在 于是穷尽的或者限于按照所公开形式的本发明。由于本领域技术人员将容易地想起许多修 改和改变,因此本发明旨在于并未限于这里描述的有限数目的实施例。因此,将领会到,可 以借助的所有适当变型、修改和等效物落入本发明的范围内。实施例被选择和描述以便最 佳地说明本发明的原理和实际应用,以及使得本领域普通技术人员能够理解如适合于所预 期的特定使用的、对于具有各种修改的各种实施例的本发明。
[〇11〇] 已经因此详细地并且参考本申请的发明的优选实施例描述了本申请的发明,将明 确的是在没有脱离在所附权利要求中所定义的本发明的范围的情况下修改和改变是可能 的。
【权利要求】
1. 一种处理指令序列的方法,所述指令序列包括屏障指令、在所述屏障指令之前的加 载指令和跟随所述屏障指令的随后存储器访问指令,所述方法包括: 由处理器内核基于由所述处理器内核接收到用于对应于所述加载指令的读操作的良 好组合响应以及用于所述加载指令的数据中的最早的一个来确定所述加载指令被解决; 如果所述随后存储器访问指令的执行未在所述屏障指令的完成之前被发起,则由所述 处理器内核响应于确定完成的所述屏障指令来发起所述随后存储器访问指令的执行;以及 如果所述随后存储器访问指令的执行在所述屏障指令的完成之前被发起,则由所述处 理器内核响应于确定完成的所述屏障指令来中断关于无效对所述随后存储器访问指令的 追踪。
2. 如权利要求1所述的方法,还包括: 由所述处理器内核向加载重排序队列中插入用于所述加载指令的条目项;以及 由所述处理器内核响应于由所述处理器内核确定所述加载指令被解决来将所述加载 重排序序列中的所述条目标记为已解决。
3. 如前述权利要求中的任一权利要求所述的方法,其中所述随后存储器访问指令为随 后加载指令。
4. 如权利要求1到2中的任一权利要求所述的方法,其中所述随后存储器访问指令为 随后存储指令。
5. 如前述权利要求中的任一权利要求所述的方法,还包括所述处理器内核在接收用于 所述加载指令的所述数据之前接收用于对应于所述加载指令的所述读操作的所述良好组 合响应。
6. 如权利要求1到4中的任一权利要求所述的方法,还包括所述处理器内核在接收用 于所述加载指令的所述数据之后接收用于对应于所述加载指令的所述读操作的所述良好 组合响应。
7. 如前述权利要求中的任一权利要求所述的方法,其中当在所述屏障指令之前的所有 加载指令和存储指令被解决时所述屏障指令完成。
8. -种被配置用于处理指令序列的数据处理系统,所述指令序列包括屏障指令、在所 述屏障指令之前的加载指令和跟随所述屏障指令的随后存储器访问指令,所述数据处理系 统包括: 高速缓冲存储器;以及 耦合到所述高速缓冲存储器的处理器内核,所述系统包括用于以下操作的装置: 基于由所述处理器内核接收到用于对应于所述加载指令的读操作的良好组合响应以 及用于所述加载指令的数据中的最早的一个来确定所述加载指令被解决; 如果所述随后存储器访问指令的执行未在所述屏障指令的完成之前被发起,则由所述 处理器内核响应于确定完成的所述屏障指令来发起所述随后存储器访问指令的执行;以及 如果所述随后存储器访问指令的执行在所述屏障指令的完成之前被发起,则由所述处 理器内核响应于确定完成的所述屏障指令来中断关于无效对所述随后存储器访问指令的 追踪。
9. 如权利要求8所述的数据处理系统,其中所述数据处理系统还可操作用于: 向加载重排序队列中插入用于所述加载指令的条目;以及 响应于确定所述加载指令被解决来将所述加载重排序序列中的所述条目标记为已解 决。
10. 如权利要求8或9中的任一权利要求所述的数据处理系统,其中所述随后存储器访 问指令为随后加载指令。
11. 如权利要求8或9中的任一权利要求所述的数据处理系统,其中所述随后存储器访 问指令为随后存储指令。
12. 如权利要求8到11中的任一权利要求所述的数据处理系统,还可操作用于:所述 处理器内核在接收用于所述加载指令的所述数据之前接收用于对应于所述加载指令的所 述读操作的所述良好组合响应。
13. 如权利要求8到11中的任一权利要求所述的数据处理系统,还可操作用于:所述 处理器内核在接收用于所述加载指令的所述数据之后接收用于对应于所述加载指令的所 述读操作的所述良好组合响应。
14. 如权利要求8到13中的任一权利要求所述的数据处理系统,还可操作用于当在所 述屏障指令之前的所有加载指令和存储指令被解决时所述屏障指令完成。
15. 如权利要求8到14中的任一权利要求所述的数据处理系统,其中所述高速缓冲存 储器为二级高速缓冲存储器。
16. 如权利要求15所述的数据处理系统,其中所述处理器内核包括加载-存储单元,所 述加载-存储单元包括加载重排序队列(LRQ)并且LRQ可操作用于解决逻辑,并且其中解 决逻辑的所述LRQ可操作用于: 向所述LRQ中插入用于所述加载指令的条目;以及 响应于确定所述加载指令被解决来将所述LRQ中的所述条目标记为已解决。
17. -种用于处理指令序列的计算机程序产品,所述指令序列包括屏障指令、在所述屏 障指令之前的加载指令和跟随所述屏障指令的随后存储器访问指令,所述计算机程序产品 包括: 计算机可读存储介质,其由处理电路可读取并且存储指令以用于由所述处理电路执行 以执行根据权利要求1到7中的任一权利要求所述的方法。
18. -种存储在计算机可读介质上并且可以加载到数字计算机的内部存储器中的计算 机程序,包括软件代码部分,当所述计算机程序在计算机上被运行时,用于执行如权利要求 1到7中的任一权利要求所述的方法。
【文档编号】G06F9/00GK104106043SQ201380008415
【公开日】2014年10月15日 申请日期:2013年1月22日 优先权日:2012年2月8日
【发明者】D·E·威廉斯, G·L·格思里, W·斯塔克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1