在多核处理器中使用干预消息来避免活锁的制作方法

文档序号:6478085阅读:179来源:国知局
专利名称:在多核处理器中使用干预消息来避免活锁的制作方法
在多核处理器中使用干预消息来避免活锁
背景技术
本发明涉及微处理器体系结构领域。微处理器设计者正不断地努力提高微处理器性能,设计提供例如增加的计算能力、增加的运算速度、降低的功耗、和/或降低的成本的 微处理器体系结构。对于许多先前的微处理器体系结构,通过增加其运算频率来提高微处 理器性能已经变得日益困难。结果,许多较新的体系结构聚焦于并行处理来提高性能。在微处理器体系结构中采用的一种并行处理技术是多处理核。该技术利用并行运 算的多个单独的处理器(称为核)来执行软件应用程序。两个或更多个处理核可以在同一 集成电路管芯中实现、在集成在同一集成电路封装内的多个集成电路管芯中实现、或这些 实现的组合。通常,多个处理核共享公共接口并可以共享存储器和其它外围资源。通常,诸如共享存储器或外设等共享资源一次只可由一个处理器使用。为控制对 共享资源的访问,处理器核可以利用同步原语,如信号量(semaphore)、标志、锁、原子交换、 取值并增值(fetch and increment)、或其它信令机制。例如,存储器位置可用作信号量 来确保对诸如临界段或区;存储器的共享部分;或外围资源等相关联的共享资源的独占访 问。第一处理器核可以检查信号量的状态来确定另一处理器核当前是否拥有对该资源的独 占访问。如果信号量值指示该资源可用,则第一处理器核可以尝试将其自己的指示符值写 入该信号量存储器位置。这将向其它处理器核指示第一处理器核拥有对该资源的独占访 问。如果另一处理器核在第一处理器核的写入完成之前修改该信号量位置的值,则第一处 理器核的写入尝试将失败。两个或更多个处理器核可能大约同时尝试访问与临界段或共享资源相关联的同 步原语。在某些情况下,每一处理器核访问同步原语的请求将使得对同一存储器位置的其 他待决访问请求失败。结果,没有处理器核能够获得对同步原语及其相关联的临界段或共 享资源的访问。处理器核随后可重复它们的访问请求,从而造成进一步的访问失败。所导 致的情况被称为同步活锁。在同步活锁中,处理器核卡在尝试和无法获得对与临界段或共 享资源相关联的同步原语的访问的循环链中。除非采取纠正动作来结束该活锁,否则所涉 及的所有处理器核将卡在永久循环中。因此,防止具有多个处理器核的处理器中的活锁或从活锁中恢复的系统和方法是 合乎需要的。对处理器性能和复杂性造成最小影响的系统和方法也是合乎需要的。与单线 程和多线程处理器核一起工作的系统和方法也是合乎需要的。
发明概要本发明的一实施例通过在向其它处理器核发送可导致其它数据访问请求失败的 消息之前对于作出请求的处理器核验证数据访问请求仍然有效,来防止在多核处理器中由 于数据访问请求而发生活锁。在一实施例中,高速缓存相干性管理器从多个处理器核接收 数据访问请求并协调它们的执行。在接收到可能导致活锁的数据访问请求后,高速缓存相 干性管理器首先向作出请求的处理器核发送回干预消息以确认没有其他处理器核干扰该 数据访问请求,这种干扰将导致该数据访问请求失败。
在一实施例中,如果作出请求的处理器核确定数据访问请求仍然有效,则它对干 预消息作出响应并指示高速缓存相干性管理器继续该数据访问请求。高速缓存相干性管理 器随后可以向其它处理器核发送附加干预消息来完成该数据访问请求。如果作出请求的处 理器核确定数据访问请求已经变得无效,则它对干预消息作出响应并指示高速缓存相干性 管理器放弃该数据访问请求。作为响应,高速缓存相干性管理器将不向其它处理器核发送 针对该数据访问请求的任何附加干预消息。这防止一个数据访问请求的失败级联并导致其 它处理器核的其它数据访问请求失败。在另一实施例中,如果高速缓存相干性管理器确定不太可能发生活锁情况,则高 速缓存相干性管理器可以另选地响应于数据访问请求来同时向作出请求的处理器核和其 他处理器核发送干预消息。在一实施例中,高速缓存相干性管理器确定可导致活锁的数据 访问请求的数据访问请求失败率。如果数据访问请求失败率超过阈值(其可在程序中预定 或指定),则高速缓存相干性管理器回复到在向其它处理器核发送干预消息以完成该数据 访问请求之前首先向作出请求的处理器核发送干预消息以验证该数据访问请求的有效性。
在另一实施例中,作出请求的处理器核向高速缓存相干性管理器发送可能导致活 锁的数据访问请求。高速缓存相干性管理器适用于响应于可导致活锁的所有数据访问请求 来向所有处理器核发送干预消息。在接收到来自高速缓存相干性管理器的干预消息后,处 理器核确定该干预消息是否与它自己的待决数据访问请求中的任一个相对应。如果该干预消息与同该处理器核自己的待决数据访问请求中的一个相同的存储 器位置和可任选的数据访问请求类型相关联,但不与它自己的数据访问请求中的一个相 对应,则该处理器核将用取消它自己的冲突的数据访问请求的请求来对该干预消息作出响 应。响应于该取消,高速缓存相干性管理器将取消来自该处理器核的待决数据访问请求。在一实施例中,该取消请求可包括该待决数据访问请求的标识符。在另一实施例 中,该取消请求可以省略该标识符。高速缓存相干性管理器随后将取消它接收到或处理的、 来自该处理器核的这一类型的下一数据访问请求。附图简述本发明将参考附图来描述,附图中

图1示出根据本发明的一实施例的示例处理器;图2示出多处理器系统中的活锁的示例;图3示出根据本发明的一实施例的防止活锁的方法。图4示出根据本发明的另一实施例的防止活锁的第二方法。图5示出根据本发明的一实施例的处理器的高速缓存相干性管理器单元。图6示出适用于本发明的一实施例的示例计算机系统。发明详细描述图1示出根据本发明的一实施例的示例处理器100。示例处理器100的实施例包 括两个或更多个处理器核单元105,如处理器核单元105A、105B和105C。处理器核单元105 中的每一个包括至少一个处理器核。例如,处理器核单元105A、105B和105C分别包括处理 器核 110A、1 IOB 和 IlOC0处理器核110能够对数据执行一个或多个信息处理功能。处理器核110可以执行 固定的功能序列或能够响应于程序指令来执行灵活的功能序列。处理器核110中的每一个可以根据RISC和/或CISC体系结构来配置,并可以使用SISD或SIMD指令来处理标量或 矢量数据类型。处理器核110可包括通用和专用寄存器堆和被配置成执行逻辑功能、算术 或其他数学功能、数据操纵功能、或能够使用数字逻辑电路来实现的任何其它类型的功能 的执行部件。处理器核110中的每一个可具有相同的功能和能力,或可具有专用于不同目 的的不同功能和能力。处理器核110可以是单线程或多线程(即能够并行执行多个程序指 令序列)的。处理器核单元105中的每一个包括一级或多级高速缓存存储器以临时存储其相 关联的处理器核可能需要的数据。存储在高速缓存存储器中的数据可包括程序指令和/或 程序数据。典型的高速缓存存储器被组织成高速缓存行。每一高速缓存行存储与一个或多 个虚拟或物理存储器地址相对应的数据的副本。每一高速缓存行还存储用于管理该高速缓 存行的附加数据,如用于标识与高速缓存行相关联的存储器地址的高速缓存行标签数据和 用于将该高速缓存行中的数据与其它高速缓存和/或与计算机系统的存储器进行同步的 高速缓存相干性数据。高速缓存标签可以从与该高速缓存行相关联的存储器地址的全部或 部分中形成。例如,处理器核单元105A、105B和105C分别包括Ll高速缓存单元115A、115B和 115C。Ll高速缓存单元115经由数据总线117A、117B和117C与其相关联的处理器核110 相连接。虽然为简明起见示为单个总线,但数据总线117中的每一个可包括Ll高速缓存单 元和其相关联的处理器核之间的一个或多个数据总线。Ll高速缓存单元115的实施例还可 包括便于在其各自的Ll高速缓存单元之间进行数据传输的高速缓存控制逻辑单元120。高 速缓存单元115可以全关联、具有双向或更多向的组关联、或直接映射。为简明起见,Ll高 速缓存单元115中的每一个被示为能够存储处理器核单元可能需要的任何类型的数据的 单个高速缓存存储器;然而,本发明的各实施例可在每一处理器核单元中包括单独的Ll高 速缓存单元以用于分别存储不同类型的数据,如程序指令高速缓存、程序数据高速缓存、以 及转换后备缓冲器数据高速缓存。高速缓存单元115通常被划分成多个高速缓存行,每一个都与共享存储器中的相 邻存储器位置的范围相对应。在一实施例中,每一高速缓存行包括用于确保存储器中和一 个或多个高速缓存行中的多个数据副本保持同步和准确的高速缓存相干性数据。例如, MESI高速缓存相干性协议将高速缓存行标记为修改(“M”);独占(“E”),这意味着处理器 核单元具有唯一高速缓存的数据副本并且可自由地对它进行修改;共享(“S”),这意味着 两个或更多个处理器核单元高速缓存了该数据并且每一处理器核可以读取该数据但不能修改它;或无效(“I”),这意味着高速缓存行中的数据是无效的并且处理器核单元可以在 该高速缓存行中存储其它数据。其它高速缓存相干性方案,诸如MSI、M0SI、以及MOESI相 干性方案,也可与本发明的各实施例一起使用。在一实施例中,处理器核单元105经由数据总线127与高速缓存相干性管理器单 元125相连接。数据总线127可被实现为处理器核单元105中的每一个与高速缓存相干性 管理器单元125之间的点对点数据连接,如数据总线127A、127B和127C。高速缓存相干性 管理器单元125方便经由外部接口 130在处理器核单元105、系统存储器以及I/O之间传输 指令和/或数据,并可任选地方便与共享L2高速缓存存储器132传输指令和/或数据。高速缓存相干性管理器单元125的实施例可以并行地且可能同时接收来自其它高速缓存存储器的系统存储器读和写请求、读请求和/或来自每一个处理器核单元的写回 请求。高速缓存相干性管理器单元125的实施例能以任意次序处理并服务这些请求。例如, 高速缓存相干性管理器单元125的实施例可以将请求重新排序以优化存储器访问,对请求 进行负载平衡,向一个或多个处理器核单元给予超过其它处理器核单元的优先级,和/或 向一个或多个类型的请求给予超过其它类型的请求的优先级。在一实施例中,处理器100包括用于维护高速缓存相干性和用于协调处理器核单元105之间的数据访问的干预机制。在该实施例中,每一处理器核单元将其数据访问请求 发送到高速缓存相干性管理器125。数据访问请求可包括对数据进行共享访问的请求、对数 据进行独占访问的请求、向共享存储器和其它系统资源写入的请求、以及从处理器核单元 105高速缓存存储器115中的一个到可任选的共享高速缓存存储器132或共享系统存储器 的数据写回操作的请求。高速缓存相干性管理器125区分来自一个或多个处理器核单元105的数据访问请 求的优先次序。对于每一数据访问请求,高速缓存相干性管理器125可以向所有处理器核 单元105发送干预消息。发送到作出该数据访问请求的处理器核单元的消息被称为自干预 消息。干预或自干预消息标识与数据访问请求相关联的数据。取决于所请求的数据访问的类型,处理器核单元105可以对干预消息作出响应。 例如,如果数据访问请求是为了对数据进行共享访问,则在其高速缓存存储器115中包括 所请求的数据的副本的另一处理器核单元105将通过向高速缓存相干性管理器125提供所 请求的数据来对干预消息作出响应。在另一示例中,如果数据访问请求是为了对数据进行 独占访问,则在其高速缓存存储器115中包括所请求的数据的副本的任何其它处理器核单 元将通过使其自己的所请求的数据的副本无效来对干预消息作出响应。这在修改所请求的 数据的情况下保持了数据相干性。在一实施例中,自干预消息向作出请求的处理器核单元 指示高速缓存相干性管理器当前正在处理其数据访问请求。在一实施例中,处理器100在集成电路封装内实现。处理器100的其它实施例可 以在集成电路封装内的单个集成电路管芯内或者在单个集成电路封装内的多个集成电路 管芯内实现。图2示出多处理器系统中的活锁的示例。图2包括示出处理器核所发出的并行执 行单独的程序线程的数据访问请求的次序的时间线200。在该应用中,假定处理器包括多 个处理器核,每一个并行执行至少一个程序线程。在该示例中,处理器核单元使用两步过程 来获得对用作同步原语的存储器位置的访问,这些同步原语诸如信号量、标志、锁、原子交 换、取值并增值、或其它信令机制,其用于控制对诸如存储器的一部分或外围资源等临界段 或共享资源的访问。在该示例中,处理器核单元首先发出加载链接(load linked) (LL)数 据访问请求。该LL数据访问请求在同步原语的共享存储器位置处取得数据副本并将该数 据存储在处理器核单元高速缓存存储器中。该数据作为共享数据来存储。在一实施例中, 该LL数据访问还置位处理器核单元的寄存器中的标志值。只要没有其他处理器核单元向 或试图向用作同步原语的存储器位置写入,则该标志值将保持置位。LL数据访问之后,处理器核单元发起条件存储(store conditional) (SC)数据访 问请求。该SC升级数据访问请求尝试将同步原语数据的高速缓存相干性状态从共享升级 成独占,并将数据值写入与该同步原语存储器位置相对应的高速缓存行。如果成功,则该SC升级数据访问请求会将数据值存储在同步原语存储器位置中,从而向任何其它处理器核单元指示该同步存储器位置和诸如存储器的一部分或外围资源等任何相关联的共享系统资 源正在被使用。然而,如果另一处理器核单元在LL数据访问的完成和SC升级数据访问之间也尝试向该同步存储器位置写入,则标志值将被复位且SC升级数据访问请求将失败。时间线200示出在该两步访问方案下可能发生的示例活锁情况。在时刻202,第一处理器核(核A)发出对同步原语存储器位置的第一 LL数据访问请求。其后不久,在时 刻204,第二处理器核(核B)也发出对同一存储器位置的LL数据访问请求。在LL数据访 问请求完成之后,在时刻206,第一处理器核(核A)发出SC升级数据访问请求(0)。在时 刻208,第二处理器核(核B)也发出SC升级数据访问请求(1)。在时刻210,核A的SC升 级数据访问请求(0)成功并且向同步原语存储器位置写入同步数据值。这最终将导致来自 核B的SC升级数据访问请求(1)失败。在时刻212,核A发出另一 LL数据访问请求来重新获得对共享资源的访问。在时刻214,核A发出另一 SC升级请求(2)。在时刻216,来自核B的SC升级请求(1)完成。它 已经失败,但核A不知道这一点并且将由于来自核B的SC升级请求(1)而将其当前待决SC 升级请求⑵标记为失败。当来自核B的SC升级请求⑴在时刻216失败后,核B将通过 在时刻218发出LL请求并在时刻220发出SC升级请求(3)来作出访问同步原语的另一尝 试。在时刻222,来自核A的失败的SC升级请求(2)完成并且失败,并且这导致来自核B的 待决SC升级请求(3)失败。响应于SC升级请求(2)的失败,核A将通过发出附加LL和SC升级请求来尝试重新访问同步原语。处理器核A和B可以尝试重复其对同步原语的LL数据访问请求和SC升 级请求,这将出于同样原因而再次失败。对处理器核A和B而言,这一重复的SC升级数据 访问请求失败的模式能以类似方式无限地继续。这种情况被称为活锁,因为每一处理器核 都由于另一处理器核的动作而被阻止继续。活锁可在各种不同的条件下发生,并且本发明 的各实施例容易地适用于发生在其它微处理器和指令集体系结构中的其它活锁示例。图3示出根据本发明的一实施例的防止活锁的方法300。在步骤305,高速缓存相干性管理器从处理器核接收对所选存储器位置的LL数据访问请求或能够导致活锁的其它 数据访问请求。响应于该数据访问请求,在步骤310,高速缓存相干性管理器将来自所选存 储器位置的数据提供给作出请求的处理器核。在步骤315,高速缓存相干性管理器接收来自同一处理器核的对该所选存储器位 置的SC升级数据访问请求。作为响应,在步骤320,高速缓存相干性管理器将自干预消息发 回到作出请求的处理器核。此时,高速缓存相干性管理器不向其它处理器核发送与SC升级数据访问请求相关联的其他干预消息。相反,在步骤325,高速缓存相干性管理器等待接收对发送到作出请 求的处理器核的自干预消息的干预消息响应。在步骤325接收到的干预消息响应包括与SC 升级数据访问请求相关联的所选存储器位置的高速缓存相干性状态的指示符。在一实施例 中,发出SC升级数据访问请求的程序线程的程序执行从SC升级请求被发送到相干性管理 器的时刻起在处理器核上暂停,直到对应的自干预消息返回并被处理为止。判定框330评估干预消息响应所提供的、所选存储器位置的高速缓存相干性状态的指示符。如果高速缓存相干性状态被示为共享,则在步骤335,高速缓存相干性管理器通过向其它处理器核发送相关联的干预消息来继续处理SC升级数据访问请求。相反,如果高 速缓存相干性状态被示为无效,则某一其它处理器核已经尝试访问同一存储器位置。结果, 在步骤340,高速缓存相干性管理器放弃待决SC升级数据访问请求并且不向其它处理器核 发送任何相关联的干预消息。在方法的另一实施例中,高速缓存相干性管理器向作出请求的处理器核通知其SC 升级数据访问请求已经失败。在另一实施例中,作出请求的处理器核在接收到相关联的自 干预消息并确定所选存储器位置具有无效的高速缓存相干性状态后,推断出其待决SC升 级数据访问请求将失败。在任一情况下,此时,发出SC升级请求的程序线程可以继续执行。在方法300中,发往其它处理器核的、与待决SC升级数据访问请求相关联的干预 消息由高速缓存相干性管理器阻止,直到来自作出请求的处理器核的干预响应消息确认SC 升级数据访问请求将成功为止。这防止干预消息在其它处理器核中触发SC升级失败的级 联。方法300的一实施例需要高速缓存相干性管理器维护可在接收到对自干预消息 的响应后发送到其它处理器核的一组待决干预消息。该实施例可降低高速缓存相干性管理 器中的数据处理流水线的性能或增加其复杂性。为提高性能并降低数据处理流水线复杂性,高速缓存相干性管理器的另一实施例 取决于活锁发生的可能性来选择性地激活或停用方法300。在该实施例中,可能的活锁情况 的计数器或其它指示器由高速缓存相干性管理器来维护。在SC数据访问升级请求失败时, 该计数器递增。在SC升级数据访问请求成功时,该计数器递减。在该活锁计数器或指示器低于第一阈值时,高速缓存相干性管理器假定存在很低 的活锁可能性。在这种情况下,高速缓存相干性管理器无条件地向所有处理器核发送与SC 升级数据访问请求相关联的自干预消息和干预消息,而非阻止干预消息直到接收到来自作 出请求的处理器核的干预消息响应为止。然而,如果计数器达到或超过第一阈值,则高速缓存相干性管理器假定活锁情况 很有可能或已经发生。在这种情况下,高速缓存相干性管理器如以上在方法300中描述的 那样来处理LL和SC升级数据访问请求。这确保最终某些SC升级数据访问请求将成功,从 而打破活锁。在一实施例中,随着SC升级数据访问请求开始成功,计数器或指示器递减。最 终,计数器或指示器将落在第二阈值(其可以与第一阈值相同或不同)之下,并且高速缓存 相干性管理器可以开始在不使用方法300的情况下处理SC升级数据访问请求。在一替换 实施例中,如果过去一时间段而没有SC升级数据访问请求失败,则高速缓存相干性管理器 在不使用方法300的情况下处理SC升级数据访问请求。可能存在用于跟踪所有处理器核单元的SC升级请求失败的单个计数器,或者在 其它实施例中,可能存在用于跟踪处理器核单元的子集、单独的处理器核单元、和/或处理 器核线程的SC升级请求失败的多个计数器。对多个计数器的使用可用来在多个并发活锁 之间进行区分并将资源缺乏情况与同步活锁区分开来。图4示出根据本发明的另一实施例的防止活锁的第二方法400。与主要由高速缓 存相干性管理器执行的方法300不同,方法400由处理器核执行。在步骤405,处理器核或处理器核单元发出对所选存储器位置的加载链接(LL)数据访问请求。在步骤410,高速缓 存相干性管理器处理该数据访问请求且作出请求的处理器核接收来自所选存储器位置的数据。将接收到的数据与共享高速缓存相干性状态一起存储在接收处理器核单元中的高速 缓存存储器中。在从所选存储器位置接收到所请求的数据后,在步骤415,处理器核向高速缓存相干性管理器发出SC升级数据访问请求。该SC升级数据访问请求尝试将所选存储器位置中 的数据的高速缓存相干性状态从共享升级到独占,以允许作出请求的处理器核修改该存储 器位置中的数据并且向其他处理器核指示该共享存储器和任何相关联的资源正在被使用。在发出该SC升级数据访问请求的同时,处理器核或处理器核单元在该SC升级数 据访问请求中包括一标识符。在步骤420,处理器核或处理器核单元还存储该标识符的副 本。响应于来自这一或任何其他处理器核的SC升级数据访问请求,高速缓存相干性管理器 区分数据访问请求的优先级并向所有处理器核单元发出对应的干预和自干预消息。在另一 实施例中,并非仅响应于SC升级数据访问请求,高速缓存相干性管理器可响应于请求对存 储器位置的独占访问的任何类型的数据访问请求来向所有处理器核单元发出对应的干预 和自干预消息。在一实施例中,发出SC升级数据访问请求的程序线程的程序执行从SC升级请求 被发送到相干性管理器的时刻起在处理器核上暂停,直到对应的自干预消息返回并被处理 为止。在步骤425,处理器核单元从高速缓存相干性管理器接收与待决SC升级请求相对 应且针对所选存储器位置的干预消息。该SC升级请求可与该处理器核自己的待决SC升级 请求相对应或与另一处理器核对所选存储器位置的待决SC升级请求相对应。该干预消息 包括其对应的SC升级请求中所提供的标识符的副本。判定框430将接收到的干预消息中的标识符与其存储的其自己的待决SC升级请 求的标识符中的一个或多个进行比较。如果接收到的干预消息标识符不与所存储的标识符 相匹配,则该干预消息与来自不同处理器核的SC升级请求相对应。结果,在步骤435,处理器核向高速缓存相干性管理器发送干预响应消息。该干预 响应消息包括指示高速缓存相干性管理器取消其自己的待决SC升级数据访问请求的指令 或指示符。在高速缓存相干性管理器接收到具有取消指示符的干预响应消息时,它将取消 来自该处理器核的待决SC升级数据访问请求。这将防止来自该处理器核的SC升级数据访 问请求导致来自其他处理器核的其他数据存储请求失败。另外,在步骤435,处理器核将置位其自己的内部寄存器和标志以指示其先前发出 的SC升级数据访问请求已经失败。该处理器核所执行的程序代码可例如通过作出获取对 该存储器位置的访问的另一尝试或通过执行出错处理例程来继续执行并相应地响应。在步骤435之后,处理器核可任选地继续回到步骤405来发起获取对所选存储器 位置的独占访问的另一尝试。在某些实施例中,获取对所选存储器位置的独占访问的任何 重复尝试都由该处理器核单元所执行的程序代码发起。在这些实施例中,该程序代码包括 指定该程序对SC升级数据访问请求的失败的响应的一个或多个指令。在一实施例中,如果处理器核只允许单个未完成的SC升级请求(如单线程处理器 核的情况),则干预响应消息不必具体地标识要取消的SC升级请求。相反,高速缓存相干性 管理器将取消它所处理的来自该处理器核的下一 SC升级请求。在另一实施例中,如果处理器核允许多个未完成的SC升级请求(如多线程处理器核的情况),则干预响应消息包括与要由高速缓存相干性管理器取消的待决SC升级请求相关联的标识符。这确保高速缓存相干性管理器不会无意地取消来自该处理器核的不同执行 线程的SC升级请求。因此,如果判定框430确定接收到的干预消息中的标识符与其存储的待决SC升级 数据访问请求的标识符中的一个相匹配,则该干预消息是与来自该处理器核单元的待决SC 升级数据访问请求相对应的自干预消息。结果,处理器核单元继续到步骤440。步骤440向 高速缓存相干性管理器发送干预响应消息。该干预响应消息确认该SC升级数据访问请求。 作为响应,高速缓存相干性管理器完成其对该SC升级数据访问请求的处理。同样,在步骤 445,处理器核单元将所选存储器位置的高速缓存相干性状态从共享设置成独占,这在该存 储器位置上建立了该处理器核单元的锁。方法400通过取消因为先前发出的SC升级数据访问请求而将导致其他数据访问 请求失败的待决SC升级数据访问请求来防止活锁。图5示出根据本发明的一实施例的处理器的高速缓存相干性管理器单元500。高 速缓存相干性管理器单元500包括请求单元505、干预单元510、响应单元515、以及存储器 接口单元520。请求单元包括用于从N个处理器核单元接收读请求、写请求、写回请求、以及 其他高速缓存存储器相关请求的输入525,其中N是任何正整数。请求单元510经由连接 535向存储器接口单元520发送非相干读和写请求(它们是不需要与其他处理器核单元高 速缓存存储器中的数据一致的读和写请求)以及投机性相干读。这些请求还包括修改高速 缓存数据的显式和隐式写回请求。对于需要数据在高速缓存处理器核高速缓存存储器和系 统存储器中相一致的相干存储器访问而言,请求单元505指示干预单元510经由连接530 发送相干干预消息,如自干预消息。干预单元510经由输出540向该N个处理器核单元发出干预消息,如自干预消息。 干预消息还包括经由请求单元505从其他处理器核单元接收到的转发的数据请求。干预单 元510经由输入545接收对干预消息的响应,该响应可包括其他处理器核单元所请求的数 据。如果处理器核单元请求存储在另一处理器核单元的高速缓存中的数据,则经由输入545 将该数据返回到干预单元510。干预单元510随后经由连接555将该数据转发到响应单元 515,在那里该数据将被传递回作出请求的处理器核单元。如果处理器核单元请求未存储在另一处理器核单元的高速缓存中的数据以供读 或写,则干预单元510可以通过经由连接550向存储器接口单元520发送相干读或写请求 来请求访问该数据。在一个实施例中,干预单元510包括用于响应于SC升级数据访问请求来发出自干 预消息并且响应于接收到指示该SC升级请求仍然有效的干预消息响应来向其他处理器核 单元发出一个或多个指令干预请求(如方法300所述)的逻辑。在另一实施例中,高速缓存相干性管理器单元500包括用于确定活锁情况的可能 性的逻辑580,如响应于SC升级请求失败而递增并响应于成功的SC升级请求而递减的计数 器。在该实施例中,高速缓存相干性管理器单元500还包括用于根据方法300在高速缓存 相干性管理器单元500确定活锁是很有可能的时候,如在计数器的值超过阈值时,延迟、抑 制、或取消干预单元510对干预消息的发出的逻辑。在又一实施例中,高速缓存相干性管理器单元500可包括用于响应于从处理器核单元接收到的干预消息响应来取消接收到的SC升级数据访问请求的逻辑。在一个实现中,高速缓存相干性管理器单元500响应于从处理器核单元接收到的取消指令或指示符来置 位与该处理器核单元相关联的标志或寄存器值575。根据方法400,该标志或寄存器值指示 高速缓存相干性管理器单元500取消或丢弃高速缓存相干性管理器单元500接收到或处理 的、来自该处理器核单元的下一 SC升级请求。在又一实施例中,高速缓存相干性管理器单元500将从处理器核单元接收到的取 消指令或指示符中所包括的标识符存储在寄存器575中。根据方法400,该标识符指示高速 缓存相干性管理器单元500在其接收到或处理来自与该标识符相匹配的处理器核单元的 SC升级请求时取消或丢弃该请求。在某些情况下,处理器核单元几乎可以在高速缓存相干性管理器单元500接收和 /或处理其自己的SC升级请求的同时接收和/或处理与另一处理器核的对同一存储器位置 的SC升级请求相关联的干预消息。在这种情况下,该处理器核单元的、具有取消消息的干 预响应消息将不会及时回到高速缓存相干性管理器单元500来取消SC升级请求。为防止 这一情况,高速缓存相干性管理器单元500的又一实施例包括被限于一次只处理针对一个 SC升级请求的干预消息和干预消息响应的干预单元510。如果在干预单元510仍在处理干 预消息或等待对先前SC升级请求的干预消息响应的同时接收到另一 SC升级请求,则高速 缓存相干性管理器500将该另一 SC升级请求排队或延迟,直到干预单元510完成其对先前 SC升级请求的处理为止。然而,在干预单元510处理干预消息或等待对SC升级请求的干预 消息响应的同时,它仍然可以处理与诸如来自其他处理器核的非独占数据访问请求等其它 类型的数据访问请求相关联的干预消息和干预消息响应。存储器接口单元从请求单元505和干预单元510接收非相干读和写请求、相干读 和写请求、以及写回请求。存储器接口单元520经由输入和输出570访问系统存储器和/ 或诸如L2高速缓存存储器等更高级的高速缓存存储器来完成这些请求。经由连接565将 响应于这些存储器访问请求来从系统存储器和/或更高级的高速缓存存储器中取得的数 据转发到响应单元515。响应单元515经由输出560向适当的处理器核单元返回所请求的 数据,无论该数据是从另一处理器核单元、从系统存储器、还是从可任选的更高级的高速缓 存存储器中取得的。图6示出适用于本发明的一实施例的示例计算机系统1000。计算机系统1000通 常包括一个或多个输出设备1100,其包括诸如CRT、IXD、OLED, LED、气体等离子体、电子墨 水、或其它类型的显示器等显示设备,扬声器和其它音频输出设备;以及诸如振动传动器 等触觉输出设备;计算机1200 ;键盘1300 ;输入设备1400 ;以及网络接口 1500。输入设备 1400可包括计算机鼠标、跟踪球、操纵杆、跟踪垫、图形输入板、触摸屏、话筒、各种传感器、 和/或允许用户或环境与计算机系统1000交互的其他有线或无线输入设备。网络接口 1500 的实施例通常提供与诸如局域网、广域网(例如,因特网)、或虚拟网络(例如,虚拟专用网 (VPN))等电子通信网络的有线或无线通信。网络接口 1500可以实现一个或多个有线或无 线连网拓扑结构,包括以太网、802. 11标准中的一个或多个、蓝牙、以及超宽带连网技术。计算机1200通常包括各个组件,诸如一个或多个通用处理器1600以及诸如随机 存取存储器(RAM) 1700和非易失性存储器1800等存储器存储设备。非易失性存储器1800 可包括软盘;固定或可移动硬盘;诸如DVD-ROM、⑶-ROM、以及条形码等光存储介质;诸如闪存等非易失性半导体存储器设备;只读存储器(ROM);电池备用易失性存储器;纸质或其它 印刷介质;以及联网存储设备。系统总线1900互连以上各个组件。处理器1600可包括上 述处理器的各实施例,如处理器100、150和400。RAM 1700和非易失性存储器1800是用于存储数据、音频/视频文件、计算机程序、小应用程序解释器或编译器、虚拟机、以及此处描述的发明的各实施例的有形介质的示例。 例如,以上描述的处理器的实施例可以被表示为人类可读或计算机可使用的程序和数据文 件,这些程序和数据文件使得能够设计、描述、建模、模拟、测试、集成、和/或制造包括本发 明的各实施例的集成电路和/或计算机系统。这些程序和数据文件可用于将本发明的各实 施例实现为单独的集成电路,或用于将本发明的各实施例与其它组件集成以形成组合集成 电路,如微处理器、微控制器、单片系统(SoC)、数字信号处理器、嵌入式处理器、或专用集成 电路(ASIC)。表达本发明的各实施例的程序和数据文件可以使用通用程序设计或脚本语言,如 C或C++ ;硬件描述语言,如VHDL或Verilog ;在RAM、ROM、或硬连线中实现并适于控制和协 调处理器或其它集成电路内的各组件的操作的微码;和/或适用于本领域已知的电子设计 自动化软件应用程序的标准或专用格式数据文件。程序和数据文件能在各种抽象层面表达 本发明的各实施例,包括作为功能描述、作为逻辑门和其它电路组件的合成连线表、以及作 为适用于半导体制造过程的集成电路布局或掩模集合。这些程序和数据文件可由计算机所 执行的电子设计自动化软件来处理,以设计处理器并生成用于制造处理器的掩模。计算机1200的另一些实施例可包括用于配置、操作、模拟、测试在设计、测试、制 造集成电路时使用的专用硬件和软件以及与它们进行通信的专用输入、输出、和通信子系 统。本领域普通技术人员可从本说明书和附图中预想到另一些实施例。例如,方法300 和400的实施例不限于LL和SC升级请求指令,并容易地适用于其中由于一个或多个处理 器核所执行的程序线程之间的交互而可能发生活锁的其它类型的指令、指令集、以及多线 程微处理器体系结构。在其它实施例中,可以有利地做出以上公开的发明的组合或子组合。 体系结构的框图和各流程图是为易于理解而分组的。然而,应当理解,在本发明的替换实施 例中构想了组合各个框、添加新的框、重新安排各个框等。可以理解,此处描述的装置和方法可以包括在半导体知识产权核中,如微处理器 核(例如,表达为硬件描述语言或合成连线表),并且在生产集成电路时被转换成硬件。另 夕卜,本发明的各实施例可以使用硬件和软件的组合(包括适用于在处理器内执行的微码) 来实现。因此,说明书和附图应当以说明性而非限制性的意义来对待。然而,很明显,可作 出各种修改和改变而不背离如权利要求所述的本发明的更宽泛的精神和范围。
权利要求
一种由微处理器处理来自多个处理器核的数据访问请求的方法,所述方法包括向高速缓存相干性管理器单元发送第一类型的并与第一存储器位置相关联的第一数据访问请求;从所述高速缓存相干性管理器单元接收与数据访问请求和所述第一存储器位置相关联的干预消息;确定所述干预消息是否与所述第一数据访问请求相对应;以及响应于确定所述干预消息不与所述第一数据访问请求相对应来向所述高速缓存相干性管理器发送包括取消指示符的干预消息响应,其中所述取消指示符适用于指示所述高速缓存相干性管理器单元取消所述第一数据访问请求。
2.如权利要求1所述的方法,其特征在于,所述取消指示符适用于指示所述高速缓存 相干性管理器单元基于所述第一类型的数据访问请求与处理器核单元的关联来取消该数 据访问请求。
3.如权利要求1所述的方法,其特征在于,所述取消指示符包括请求标识符,其中所述 取消指示符适用于指示所述高速缓存相干性管理器单元取消与所述取消指示符的请求标 识符相匹配的数据访问请求。
4.如权利要求3所述的方法,其特征在于,所述第一数据访问请求包括所述请求标识符。
5.如权利要求1所述的方法,其特征在于,发送所述第一数据访问请求包括 响应于第一处理器核单元所执行的程序来发送所述第一数据访问请求;以及 挂起所述程序的执行。
6.如权利要求5所述的方法,其特征在于,还包括响应于确定所述干预消息不与所述第一数据访问请求相对应,指定所述第一数据访问 请求已经失败并继续执行所述程序。
7.如权利要求1所述的方法,其特征在于,还包括响应于确定所述干预消息与所述第一数据访问请求相对应来向所述高速缓存相干性 管理器发送包括对所述第一数据访问请求取消指示符的确认的干预消息响应,其中所述干 预消息响应适用于指示所述高速缓存相干性管理器单元继续所述第一数据访问请求。
8.如权利要求7所述的方法,其特征在于,还包括将与所述第一数据访问请求相关联的存储器位置设置成由第一处理器核单元独占访问。
9.如权利要求8所述的方法,其特征在于,所述第一数据访问请求包括与SC指令相关 联的升级请求。
10.一种包括指令的计算机可读存储介质,所述指令定义处理器的逻辑电路并适于由 计算机所执行的电子设计自动化应用程序来使用,其中所述逻辑电路适用于执行以下操 作向高速缓存相干性管理器单元发送第一类型的并与第一存储器位置相关联的第一数 据访问请求;从所述高速缓存相干性管理器单元接收与数据访问请求和所述第一存储器位置相关 联的干预消息;确定所述干预消息是否与所述第一数据访问请求相对应;以及响应于确定所述干预消息不与所述第一数据访问请求相对应来向所述高速缓存相干 性管理器发送包括取消指示符的干预消息响应,其中所述取消指示符适用于指示所述高速 缓存相干性管理器单元取消所述第一数据访问请求。
11.如权利要求10所述的计算机可读存储介质,其特征在于,所述取消指示符适用于 指示所述高速缓存相干性管理器单元基于所述第一类型的数据访问请求与处理器核单元 的关联来取消该数据访问请求。
12.如权利要求10所述的计算机可读存储介质,其特征在于,所述取消指示符包括请 求标识符,其中所述取消指示符适用于指示所述高速缓存相干性管理器单元取消与所述取 消指示符的请求标识符相匹配的数据访问请求。
13.如权利要求12所述的计算机可读存储介质,其特征在于,所述第一数据访问请求 包括所述请求标识符。
14.如权利要求10所述的计算机可读存储介质,其特征在于,发送所述第一数据访问 请求包括响应于第一处理器核单元所执行的程序来发送所述第一数据访问请求;以及挂起所述程序的执行。
15.如权利要求14所述的计算机可读存储介质,其特征在于,还包括响应于确定所述干预消息不与所述第一数据访问请求相对应,指定所述第一数据访问 请求已经失败并继续执行所述程序。
16.如权利要求10所述的计算机可读存储介质,其特征在于,还包括响应于确定所述干预消息与所述第一数据访问请求相对应来向所述高速缓存相干性 管理器发送包括对所述第一数据访问请求取消指示符的确认的干预消息响应,其中所述干 预消息响应适用于指示所述高速缓存相干性管理器单元继续所述第一数据访问请求。
17.如权利要求16所述的计算机可读存储介质,其特征在于,还包括将与所述第一数据访问请求相关联的存储器位置设置成由第一处理器核单元独占访问。
18.如权利要求16所述的计算机可读存储介质,其特征在于,所述第一数据访问请求 包括与SC指令相关联的升级请求。
19.一种处理器,包括至少两个处理器核单元,其中所述处理器核单元中的至少一部分各自包括适用于执行程序指令的处理器核;包括适用于存储高速缓存数据的高速缓存行的高速缓存存储器;以及高速缓存存储器控制逻辑;以及适用于协调所述处理器核单元和存储器之间的通信的高速缓存相干性管理器单元,其 中所述高速缓存相干性管理器单元包括适用于执行以下操作的逻辑向所述高速缓存相干性管理器单元发送第一类型的并与第一存储器位置相关联的第 一数据访问请求;从所述高速缓存相干性管理器单元接收与所述第一类型的数据访问请求和所述第一 存储器位置相关联的干预消息;确定所述干预消息是否与所述第一数据访问请求相对应;以及响应于确定所述干预消息不与所述第一数据访问请求相对应来向所述高速缓存相干 性管理器发送包括取消指示符的干预消息响应,其中所述取消指示符适用于指示所述高速 缓存相干性管理器单元取消所述第一数据访问请求。
20.如权利要求19所述的处理器,其特征在于,所述取消指示符适用于指示所述高速 缓存相干性管理器单元基于所述第一类型的数据访问请求与处理器核单元的关联来取消 该数据访问请求。
21.如权利要求19所述的处理器,其特征在于,所述取消指示符包括请求标识符,其中 所述取消指示符适用于指示所述高速缓存相干性管理器单元取消与所述取消指示符的请 求标识符相匹配的数据访问请求。
22.如权利要求19所述的处理器,其特征在于,所述适用于发送所述第一数据访问请 求的逻辑包括适用于执行以下操作的逻辑响应于所述第一处理器核单元所执行的程序来发送所述第一数据访问请求;以及挂起所述程序的执行。
23.如权利要求22所述的处理器,其特征在于,还包括适用于响应于确定所述干预消 息不与所述第一数据访问请求相对应来指定所述第一数据访问请求已经失败并且继续执 行所述程序的逻辑。
全文摘要
通过在确定数据访问请求与其它数据访问请求相冲突之后取消它们来防止多核处理器中的活锁。作出请求的处理器核向高速缓存相干性管理器发送可能导致活锁的数据访问请求。高速缓存相干性管理器接收来自多个处理器的数据访问请求。该高速缓存相干性管理器响应于可导致活锁的所有数据访问请求来向所有处理器核发送干预消息。在接收到来自高速缓存相干性管理器的干预消息后,处理器核确定该干预消息是否与它自己的待决数据访问请求中的任一个相对应。如果该干预消息与同它自己的待决数据访问请求中的一个相冲突的数据访问请求相关联,则该处理器核通过指示高速缓存相干性管理器取消它自己的冲突的待决数据访问请求来对该干预消息作出响应。
文档编号G06F13/36GK101802798SQ200880103458
公开日2010年8月11日 申请日期2008年6月20日 优先权日2007年6月22日
发明者E·南吉亚, R·金特 申请人:密普斯技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1