首页> 中国专利> 用于只写处理器间复位同步的方法和装置

用于只写处理器间复位同步的方法和装置

摘要

本文中公开用于执行只写处理器间复位同步的方法和装置。在一个实施例中,处理单元包括:通信单元,其用于将信息传送到第二处理单元;存储器,其用于存储复位同步信息和消息信息;以及处理逻辑,其用于基于在存储器被置位的位来指示执行在该处理逻辑自身与第二处理单元之间的只写复位同步。

著录项

  • 公开/公告号CN105718418A

    专利类型发明专利

  • 公开/公告日2016-06-29

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201510856563.5

  • 发明设计人 M·伯格;K·W·李;M·卡塔瑞阿;

    申请日2015-11-30

  • 分类号G06F15/17;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人黄嵩泉

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 15:45:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-28

    授权

    授权

  • 2016-07-27

    实质审查的生效 IPC(主分类):G06F15/17 申请日:20151130

    实质审查的生效

  • 2016-06-29

    公开

    公开

说明书

技术领域

本发明的各实施例涉及在异构处理核之间通信的领域;更具体而言,本发明 的各实施例涉及在使用只写通信来彼此通信的处理单元(例如,处理器核、知识产 权(IP)核等)之间的复位(reset)同步。

背景技术

处理器间(inter-processor)通信(IPC)经常用于在运行在不同的处理器核(例 如,不同的异构处理器核)中的进程之间交换数据。这些进程可以源自运行在使用 不同的处理核或线程的中央处理单元(CPU)或片上系统(SOC)上的程序。即便 这些进程可能正单独地运行,它们仍可能需要在彼此之间传递信息。

根据通信协议使用处理核或单元的接口来执行IPC通信,进程正在这些处理 核或单元上运行。有时,通信协议使得处理核或单元使用对等(peer-to-peer)通信 来通信。用于IPC通信的通信协议常常包括用于促进信息交换的读取和写入操作。

当在对等设备(peer)中与另一对等设备进行IPC通信的一个对等设备将被复 位或禁用时,出现了问题。例如当对等设备正断电时,其会被禁用。当这种情况发 生时,一个对等设备获悉另一对等设备正被复位或被禁用是困难的。在此类情况下, 第一对等设备可能正在等待来自第二对等设备的信息,这可能使该第一对等设备进 入无休止地等待来自第二对等设备的响应的状态,进而导致该第一对等设备的挂起 (hang)或由该第一对等设备引起的启发式超时(heuristictimeout)(其在一些情 况下可能是错误的)。另外,这可能引起这样的情形:第二对等设备被重新初始化, 但已失去其上下文,并且第一对等设备在第二对等设备处于不同的状态(例如,第 一对等设备相信会话正在进行,而第二对等设备丢失了对此的任何概念)的错误假 设下保持发送消息。也可能在另一方向上发生相同的状态失配。最终,由于在许多 情况下消息不是原子的(atomic)(例如,由一系列寄存器写入构成),如果第一 对等设备发送非原子的消息且第二对等设备在中间经历复位,则有可能该复位本身 将会将复位包括在第二对等设备的消息寄存器中,同时第一对等设备正继续填充这 些消息寄存器,使得第二对等设备接收损坏的消息。在第一对等设备能够使用读取 操作以从第二对等设备中读取关于其状态的信息并且能够基于对该读取操作的响 应来判断第二对等设备是否是不可用的或已经历复位的情况下,尤其是在当超时或 重试将使第一对等设备推断出另一对等设备不可用的情况下,可避免该问题。

虽然在允许读取操作时在对等设备之间的通信复位信息更易于处理,但读取 操作呈现出不期望的其他问题。例如,在对等设备的核被复位或正被禁用(例如, 由于进入低功率状态而被禁用)时,这些动作会使该读取因例如核的隔离而失败。 而且,包含读取的通信协议可能更加难以跨不同的底层总线和/或结构(fabric)来 迁移。

因而,可能期望在对等设备之间使用不包括读取操作的通信协议。然而,在 对等设备仅通过写入操作来通信的情形中,不知悉另一对等设备已经进入复位或已 经以其他方式变得不可用的问题仍然存在。

附图说明

通过下面给出的具体实施例和本发明的各实施例的附图,将更完整地理解本 发明,然而,不应认为具体实施例和附图将本发明限制于特定的实施例,而是仅用 于解释和理解。

图1示出能够使用只写通信协议来彼此通信的两个处理元件。

图2是复位同步过程的一个实施例的流程图。

图3和图4是分别由复位同步中的领导者和跟随者执行的操作的更详细的流 程图。

图5示出片上系统(SOC)设计的实施例。

图6示出包括多核处理器的计算系统的框图的实施例。

具体实施方式

在下列描述中,陈述众多细节以提供对本发明的更透彻的解释。然而,对本 领域中技术人员将显而易见的是,在不具有这些特定的细节的情况下就可以实践本 发明。在其他实例中,以框图形式而非详细地示出公知的结构和设备,以免使本发 明含糊。

描述了用于在使用只写方法仅作为对等设备来通信的一对处理元件(例如, 知识产权(IP)核、处理器核、处理器、片上系统处理核、集成电路或在相同的板 (其具有可靠的底层通信总线)上的设备,等等)之间同步复位操作的方法和装置。 本文中描述的技术允许每一个处理元件检测其对等设备进入了以下状态:对等设备 正在进入复位、正退出复位、正变得被禁用或以其他方式不可用(永久地不可用, 或者因为系统正在进入处理元件不起作用的低功率状态)或者仅仅正在复位通信。 因为这些对等设备仅使用写入操作来彼此通信,因此每一处理元件不能知道其对等 设备是否接收到来自该处理元件的最后事务,但是这些处理元件仍然能够同步对在 它们之间的通信信道的复位。

图1示出能够使用只写通信协议(在该协议中,两个处理元件之间的通信仅 通过写入操作的使用而发生)、作为对等设备而彼此通信的两个处理元件。

参见图1,处理单元101和102(例如,处理器核、知识产权(IP)核、专用 处理单元等)是彼此通信的对等设备。处理单元101和102中的每一个可以在同一 个集成电路(IC)中或在不同的IC中。处理单元101和102中的每一个可以异步 地进入复位或退出复位、被禁用、变得不可用或复位它们之间的通信信道(通信信 道103)。

在一个实施例中,通信信道103是处理器间通信信道。通信信道103用于在 处理单元101与102之间交换信息(例如,请求、状态等)和其他消息。

处理单元101包括处理逻辑101A和硬件端点逻辑101B,该逻辑101A用于在 系统中执行与它们的指定功能相关联的操作,这些操作包括本文中描述的复位同步 操作,而硬件端点逻辑101B用于使用通信信道103来与诸如处理单元102之类的 一个或多个其他处理单元通信(例如,传输)。类似地,处理单元102包括处理逻 辑102A和硬件端点逻辑102B,该逻辑102A用于在系统中执行与它们的指定功能 相关联的操作,这些操作包括本文中描述的复位同步操作,而硬件端点逻辑102B 使用通信信道103来与诸如处理单元101之类的一个或多个其他处理单元通信(例 如,传输)。更具体而言,处理逻辑101A和处理逻辑101B基于在存储器101C 中被置位的位指示来执行关于在其自身与第二处理单元之间的只写复位同步的操 作。注意,在替代实施例中,处理单元101和102不具有硬件端点单元,相反,由 软件或固件来仿真所有的硬件动作(例如,写入到其他对等设备,等等)。

处理单元101和102中的每一个都包括用于存储来自各自的对等设备的一组 指示(例如,位)的存储器。换句话说,处理单元101包括存储来自处理单元102 的位(位指示)的存储器,诸如,存储器101C(例如,控制状态寄存器(CSR))。 同样,处理单元102包括存储来自处理单元101的位的存储器,诸如,存储器102C (例如,CSR)。在一个实施例中,处理单元可以用1置位(set-by-one)其对等 设备的存储器(例如,CSR)中的位,或用1清除(clear-by-one)存储在其自身 的存储器(例如,CSR)中的位。也就是说,处理单元101可以对处理单元102的 存储器102C中的这些位中的每一个位置位,且反之亦然。通过用1置位(或用1 清除),即便对等设备多次发送相同的指示(位指示),处理单元也仅将此看作是 单个指示。为了在更新给定的存储器(CSR)时防止任一侧覆写来自另一侧的更新, 使一个对等设备对诸个位进行置位且使一侧清除相同的存储器的诸个位是重要的。

注意,在替代实施例中,可以用1置位并用0清除位指示,或者用0置位并 用1清除位指示,或者用0置位并用0清除位指示。

在一个实施例中,指示的集合包括处理单元将不在通信信道103上传送与复 位同步协议不相关的任何更多的事务且已经复位其通信状态的指示。这包括处理单 元本身已经经历了复位或已经退出复位但将经历复位的情况。在一个实施例中,该 指示是强制性的,且必须由一个或两个处理单元支持。

在一个实施例中,指示的集合包括处理单元已经放弃或丢弃与复位同步协议 不相关的任何未经处理的传入消息的指示。在一个实施例中,该指示是强制性的, 且必须由一个或两个处理单元支持。

在一个实施例中,指示的集合包括这样的指示:处理单元向对等设备指示, 已经对以上讨论的两个指示两者置位,且请求该对等设备通过再次对以上经置位的 指示中的仅一个置位来消除歧义。在此类情况下,处理单元清除两个指示,使得该 处理单元可以确定哪一个指示由该对等设备再次置位。

作为复位同步协议的部分,处理单元101和102使用这些指示将通知(诸如, 它们所处于的复位阶段状态)发送到彼此,并且向另一处理单元通知关于使通信信 道103复位所采取的动作。在一个实施例中,处理单元进入复位或被禁用且无需继 续与对等处理单元握手,并且仅需要对第一指示(例如,位)置位并关机。在进入 复位或被禁用之前,没有确收(ACK)或进一步的通信是处理单元所需要的。

在处理单元101和102中,硬件端点逻辑101A和101B是通信单元。在一个 实施例中,这些单元处理将信息和消息发送到其他处理单元,包括对其他处理单元 的指示(例如,位指示)的置位。在一个实施例中,这些单元处理门铃(doorbell) 和中断,并且当已在其存储器中对复位同步指示置位时生成对处理逻辑的中断,使 得该处理逻辑可以采取本文中描述的动作。

在一个实施例中,作为复位同步协议的部分,处理单元101和102两者临时 地禁用它们的传出通信量(traffic),两个处理单元都从另一处理单元(其对等设 备)接收其传出通信量被临时地禁用的指示,每一个处理单元清除来自另一处理单 元的任何残留的传入通信量(使得在复位同步过程中的这一时刻,没有新的通信量 发生),并且随后恢复通信。

在一个或多个实施例中,本文中描述的技术使得:不利用超时/重试(这可能 具有假肯定(falsepositive)/假否定(falsenegative),并且导致复杂的重试逻辑); 无需专用逻辑就可处理给定的处理核的复位内复位以及给定的处理元件与其对等 设备之间的经交织的复位;在恢复通信之前,丢弃过时的消息;避免处理元件开始 通信而其对等设备意外地丢弃有效的传入消息的情形;避免“死锁”(即,没有处理 元件达到其中它无休止地等待其对等设备的状态);避免“活锁”(即,协议从不达 到在处理元件之间发生无休止的信道复位“往复”(“ping-ping”)的状态,其中, 此类“往复”会阻止通信信道达到稳定的操作状态,并且与死锁形成对比的是,在制 定协议时进行检测要难得多);任一处理元件可以异步地进入复位而无需等待来自 其对等设备的确收(ACK)(因为在许多情况下,处理元件复位发生意味着处理 元件处于坏的状态或监视器(watchdog)期满发生,并且由于对可能繁忙的对等设 备的依赖性,延迟处理元件的复位是不期望的);存在着供处理元件向对等设备指 示该处理元件被禁用(即,没有进一步的通信是可能的)而无需涉及复杂的协议交 换(且不要求完全成熟的驱动器)的简单方式,这有助于在对IP的拒绝服务(DoS) 的情况的情况下的安全性——只要该处理元件能够容易地向其对等设备指示它被 禁用且无需完全成熟的驱动器,这允许这些对等设备检测DoS而不增加对等设备 的TCB(例如,如果操作简单,则可以容易地从IP的ROM中来完成它);各种 情况(进入复位、退出复位,变得被禁用、仅复位通信信道)都不要求不同的握手 (简单起见);并且保证两个处理元件变成操作的并结束发现彼此,并且对复位退 出顺序不强加任何预先定义的约束。

下面更详细地描述协议的诸实施例。

图2是复位同步过程的一个实施例的流程图。该过程由处理逻辑执行,该处 理逻辑可以包括硬件(电路、专用逻辑,等等)、软件(诸如,在通用计算机系统 或专用机器上运行的软件)、固件或这三者的组合。在一个实施例中,该过程由两 个对等设备(处理单元)执行,一个被指定为“领导者”而一个被指定为“跟随者”, 它们仅使用写入操作来通信。领导者和跟随者的使用打破了对称性(为了避免在对 等设备之间的无休止的“往复”)。在一个实施例中,对于每个处理单元对,这是固 定的指定。尽管处理单元中的每一个可以异步地开始复位同步,但是一旦开始,则 跟随者确保在其诸阶段中不进行到超过领导者,直到完成同步为止。

在图2中,在一个实施例中,带圆圈的数字指示对操作排序的限制。在一些 情况下(例如,伴随“*”和“**”出现的数字)对于哪些操作首先发生没有限制。而 且,诸个门反映“AND(与)”条件,使得在一些情况下,如果既满足了某个内部 条件且另一对等设备又向处理单元通知了对等设备的条件得到满足,则处理单元 (对等设备)可以仅继续进行到下一操作。

参见图2,领导者(第一对等设备)中的处理逻辑进入复位阶段1(在该复位 阶段1中,复位过程的第一阶段开始),且向跟随者(第二对等设备)通知,领导 者已经进入复位阶段1(处理框201)。在一个实施例中,领导者在跟随者的控制 状态寄存器(CSR)中对位进行置位来向跟随者通知该领导者已经进复位阶段1。 在一个实施例中,领导者在跟随者的CSR中对位0置位以指示该领导者已经进入 复位阶段1。

通过向跟随者通知该领导者已经完成复位阶段1动作,该领导者指示,它将 不能够经由处理器间通信(IPC)来与跟随者通信,直到该领导者不再处于复位为 止。领导者也已向跟随者指示,如果该跟随者已经提供了关于IPC寄存器值的有 效性的任何保证(例如,通过CSR位的值),则该跟随者不再对该保证负有责任。 例如,如果跟随者先前将提供电源门控覆盖保证(即,防止电源门控(即,关闭电 源)发生的保证),则该跟随者不再对该领导者负有执行电源门控覆盖的责任,因 为该领导者已经进入复位阶段1。此外,通过进入复位阶段1,该领导者向跟随者 指示,如果存在该领导者已经提供给该跟随者的任何IPC寄存器有效性保证,则 该领导者将不再提供此类保证。此外,通过进入复位阶段1,领导者已经指示,从 此刻起到将来,它将不再将任何新的PG相关的请求或状态信息发送给该跟随者。 最后,通过进入复位阶段1,领导者指示,应当丢弃先前已从该领导者发送给跟随 者的任何残留的IPC消息,并且从此刻起到将来,该领导者将不将任何新的IPC 消息发送给跟随者。

在领导者通知跟随者该领导者已经完成复位阶段1动作(例如,在跟随者的 CSR中对位0置位)之后或之前,该跟随者可以向该领导者通知,该跟随者已经 完成复位阶段1动作(处理框202)。在一个实施例中,跟随者通过在领导者的控 制状态寄存器(CSR)中对位置位来向领导者通知该跟随者已经完成复位阶段1动 作。在一个实施例中,跟随者在领导者的CSR中对位0置位以指示追该随者已经 完成复位阶段1动作。如同领导者一样,通过向领导者通知该跟随者已经完成复位 阶段1动作,该跟随者指示该跟随者将不能经由处理器间通信(IPC)来与领导者 通信,直到该跟随者不再处于复位为止。跟随者也向领导者指示,如果领导者已经 提供了关于IPC寄存器值的有效性的任何保证(例如,通过CSR位的值),则该 领导者不再对该保证负有责任。例如,如果领导者先前将提供PG覆盖保证,则不 再要求该领导者向跟随者提供此类保证,因为该跟随者已经进入复位阶段1。此外, 通过进入复位阶段1期间,跟随者向领导者指示,如果存在该跟随者已经提供给领 导者的任何IPC寄存器有效性保证,则该跟随者不再对该保证负有责任。此外, 通过进入复位阶段1,跟随者已经指示,从此刻起到将来,该跟随者将不再将任何 新的PG相关的请求或状态信息发送给领导者。最后,通过进入复位阶段1,跟随 者指示,应当丢弃先前从该跟随者发送给领导者的任何残留的IPC消息,并且从 此刻开始到将来,该跟随者将不将任何新的IPC消息发送给领导者。

在处于复位阶段1之后,领导者能够进入复位阶段2。测试来判断领导者和跟 随者两者是否已经向彼此指示它们已经完成了复位阶段1动作(处理框211)。也 就是说,在领导者进入复位阶段2之前,该领导者等待跟随者完成复位阶段1动作。 如果领导者和跟随者两者都已经完成复位阶段1动作,则复位同步过程过渡到处理 框203,在处理框203中,领导者执行复位阶段2动作并指示它已经完成复位阶段 2动作。在一个实施例中,领导者通过在跟随者的CSR中对位进行置位来向跟随 者指示该领导者已经完成复位阶段2动作。在一个实施例中,领导者在跟随者的 CSR中对位1置位以向跟随者指示该领导者已经进入复位阶段2。复位阶段2动作 由以下步骤组成:领导者丢弃已经从跟随者发送给该领导者的任何残留的IPC消 息和任何PG相关的请求和状态信息。

注意,直到领导者进入复位阶段2为止,跟随者都不进入复位阶段2。

处理逻辑测试跟随者是否已经完成复位阶段1动作(且已经向领导者通知该 跟随者已经完成复位阶段1动作)以及领导者是否已经完成复位阶段2动作(处理 框212)。如果是这样,则该过程过渡到处理框204,在处理框204中,跟随者进 入复位阶段2。跟随者执行复位阶段2动作并且通过在领导者的CSR中对位进行 置位来向领导者通知该追着已经完成复位阶段2动作。在一个实施例中,跟随者通 过在领导者的CSR中对位1置位来向领导者通知该跟随者已经完成复位阶段2动 作。在丢弃了已经从领导者发送给跟随者的任何残留的IPC消息和PG相关的请求 和状态信息之后,该跟随者向领导者通知该跟随者已经完成复位阶段2动作。

在跟随者完成复位阶段2动作之后,该跟随者可以进入操作阶段,并且开始 接收带内IPC消息(处理框207)。这意味着跟随者将不再丢弃任何消息。

应当重申,在领导者和跟随者之间关于进入到复位阶段1和2的交换用于对 IPC信道复位,且不一定用于完全对领导者和/或跟随者复位。也就是说,在领导 者正在经历复位操作的同时,跟随者自身不要求被复位,仅两者之间的信道是复位 的。在跟随者正在经历复位时也是如此,领导者和跟随者仅需要对它们之间的信道 复位。

此后,在领导者处的处理逻辑测试领导者和跟随者两者是否均已完成复位阶 段2动作(处理框213)。如果是这样,则该领导者过程过渡到处理框205,在处 理框205中,领导者可以开始发送和接收带内IPC消息,并且通过使领导者发送 第一带内IPC消息,领导者与跟随者之间的IPC通信可发生(处理框206)。

注意,开始发送和接收带内IPC消息并发送第一IPC消息的这些操作可以发 生在处理框207中跟随者能够开始接收带内IPC消息的时刻之前或之后。然而, 在退出复位阶段2之后,跟随者不能发送IPC消息,直到该跟随者已经从领导者 接收到第一带内IPC消息为止。

如处理框214中所指示,在跟随者处的处理逻辑测试是否既从领导者发送了 第一IPC消息且跟随者又能够开始接收带内IPC消息。如果是这样,则跟随者可 以开始发送和接收带内IPC消息(处理框208)。

图3和图4是在复位同步中分别由领导者和跟随者执行的操作的更详细的流 程图。该过程由处理逻辑执行,该处理逻辑可以包括硬件(电路、专用逻辑,等等)、 软件(诸如,在通用计算机系统或专用机器上运行的软件)、固件或这三者的组合。

参见图3,由领导者执行的过程从初始化(301)开始。在初始化(301)期间, 领导者的处理逻辑禁用来自两个门铃的中断,并且禁用来自CSR的中断(处理框 302)。注意,在一个实施例中,传入门铃是第二单独的寄存器,其用于指示来自 对等设备的消息准备好在数据寄存器中消耗。当对等设备完成了写入消息数据,该 对等设备对门铃写入(例如,对被称为“忙”(“busy”)位的位置位),并且这导 致中断。传出门铃是第三单独的寄存器,其反映在该对等设备处的传入门铃。在一 个实施例中,当处理逻辑将数据写入到对等设备中,并且对该对等设备的门铃(例 如,忙位)置位时,处理单元通过其自身的传出门铃寄存器来这样做,这导致在对 等设备的传入门铃寄存器处忙位被置位。当对等设备完成了从寄存器中驱逐消息 时,该对等设备清除其传入门铃寄存器上的忙位,并且这被往回反射到处理单元的 传出门铃寄存器并导致中断。对传出门铃寄存器处的忙位的这种清除是向处理单元 的指示,指示了该处理单元现在可以发送新消息而无需担忧覆写先前的消息。

在一个实施例中,来自CSR的中断是来自硬件端点逻辑的、向核的处理逻辑 通知已经对CSR中的不同位进行了置位的中断。

此后,领导者的处理逻辑清除对应于内部状态的CSR位(例如,跟随者是否 已经完成复位阶段1动作的指示、跟随者是否已经完成复位阶段2动作的指示以及 其他CSR位),清除领导者的存储器中的所有固件(FW)先进先出缓冲器(FIFO) 中的传出消息,消耗或丢弃FIFO中的所有传入消息,用1清除指示跟随者向领导 者查询以确定该领导者当前驻留在哪个复位阶段状态的CSR位,并且对跟随者中 指示领导者已经完成复位阶段1的动作的指示置位(处理框303)。在一个实施例 中,在图3中将该指示称为IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示。

随后,该过程过渡到处理框304,在处理框304中,处理逻辑测试领导者是否 进入复位或断电。如果是,则该过程结束。如果不是,则该过程过渡到处理框305, 在处理框305中,处理逻辑允许来自CSR的中断。在允许了CSR中断之后,该过 程过渡到复位阶段1等待状态(310)。

在复位阶段1等待状态(310)处,处理逻辑等待指示CSR寄存器中的某个 位已被置位且还未被处理的CSR中断发生。当CSR中断发生时,该过程过渡到处 理框311,在处理框311中,处理逻辑清除CSR中断,并且将CSR值复制到本地 变量存储设备以进行分析。随后,领导者中的处理逻辑测试跟随者是否已经指示已 经完成复位阶段1动作和阶段2动作两者(处理框312)。通过检查 IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示是否被置位来这样做。如果这 两者都被置位,则该过程过渡到处理框313,在处理框313中,处理逻辑清除 IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示两者,并且向跟随者查询该跟 随者驻留在的复位阶段状态。为了查询跟随者的状态,领导者中的处理逻辑对跟随 者中的指示置位。在一个实施例中,通过在跟随者的CSR中对 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示置位来这样做。 在这样做了之后,该过程过渡到处理框318。

在处理框318处,领导者中的处理逻辑判断跟随者是否向领导者查询该领导 者当前驻留在的复位阶段。在一个实施例中,可以通过领导者检查该领导者的存储 器中的CSR副本中的其IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE 位指示来执行此。如果是这样,则处理逻辑清除其 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示,并且向对等设 备通知该领导者的当前复位阶段(其是阶段1)(处理框319)。在一个实施例中, 领导者通过在跟随者的CSR中向对应于 IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示的CSR位置位来向跟随者通知 该领导者的复位阶段状态。此后,该过程过渡到复位阶段1的等待状态(310)。 往回参见处理框318,如果跟随者不查询领导者当前驻留在的当前状态,则处理框 过渡到复位阶段1的等待状态(310)。

往回参见处理框312,如果IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示中的任一个都没有被置位,则 该过程过渡到处理框314,在处理框314中,处理逻辑测试跟随者是否已经完成复 位阶段1动作。在一个实施例中,通过检查 IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示的副本来这样做,该 IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示由跟随者在领导者的CSR中置 位,并且指示该跟随者已经完成复位阶段1动作。如果是这样,则该过程过渡到处 理框315,在处理框315中,领导者中的处理逻辑在该领导者的CSR中清除 IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示,并且向跟随者 指示该领导者已经完成复位阶段1动作。在一个实施例中,通过在跟随者的CSR 中对IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示置位,领导者向跟随者指 示该领导者已经完成复位阶段1动作。此后,该过程过渡到处理框330。

在处理框330处,领导者中的处理逻辑清除传入门铃以及该领导者的CRS中 除以下位指示之外的所有位指示:IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示,以及可选地一个或多个自定 义位(取决于它们的作用)。在一个实施例中,这些包括用于用来验证CSR中的 信息(位)的有效性协议以及用于简单的消息的诸个位,处理单元对可以在它们之 间传送所述简单的消息,并且所述简单的消息对每一对处理单元都是专用。处理也 在跟随者的CSR中对IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示置位以 向跟随者通知领导者已经完成复位阶段2动作。此后,该过程过渡到复位阶段2 的等待状态(320)。

往回参见处理框314,如果不存在跟随者已经完成复位阶段1动作的指示,则 领导者中的处理逻辑检查该跟随者是否已经完成复位阶段2动作(处理框316)。 在一个实施例中,通过检查领导者的CSR中的 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示来这样做。如果由跟随者对该 位进行了置位,则在一个实施例中,领导者在该领导者自身的CSR中清除 IPC_PEER_COMP_ACTIONS_RST_PHASE2和 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位,并且在跟随者的 CSR中对IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示置位,以便向跟随者 指示该领导者已经完成复位阶段1动作(处理框317),并且随后过渡到复位阶段 1的等待状态(310)。

如果在处理框316中确定了跟随者还未完成复位阶段2动作,则该过程过渡 到处理框318,在处理框318中,处理逻辑测试跟随者是否已经请求了领导者的复 位阶段状态。在一个实施例中,领导者从该领导者的CSR中检查 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示以确定跟随者是 否已经请求了该领导者的复位阶段状态。如果跟随者已经请求,则处理逻辑清除该 请求,并且向跟随者通知该跟随者已经完成复位阶段1动作。在一个实施例中,通 过在领导者的CSR中清除 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示来清除该请求。 在一个实施例中,领导者通过在跟随者的CSR寄存器中对 IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示置位来向跟随者通知领导者的 复位阶段状态。一旦完成了此,则该过程过渡到复位阶段1的等待状态(310)。

在复位阶段2的等待状态(320)处,处理逻辑等待指示CSR寄存器中的某 个位已被置位且未被处理的CSR中断发生。当CSR中断发生时,该过程过渡到处 理框321,在处理框321中,处理逻辑清除该CSR中断,并且将CSR值复制到本 地变量存储设备以进行分析。

处理逻辑测试跟随者是否已经指示该跟随者已经完成复位阶段1动作和复位 阶段2动作两者(处理框322)。通过检查 IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示两者是否都被置位来这样做。 如果这两者都被置位,则处理过渡到处理框323,在处理框323中,处理逻辑清除 两个位指示IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2,并且向跟随者查询以确定该跟随者 当前处于什么状态。在一个实施例中,通过领导者在跟随者的CSR中对 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示置位来这样做。 在这样做了之后,该过程过渡到处理框328。

在处理框328处,处理逻辑测试跟随者是否向领导者查询该领导者当前处于 什么复位阶段。在一个实施例中,通过领导者在该领导者的CSR中检查 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示来这样做。如果 已查询,则处理逻辑清除该 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示,并且向跟随者 通知该领导者已经完成复位阶段2动作(处理框329)。在一个实施例中,领导者 通过向对应于跟随者中的 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE2位指示的CSR位置位 来向该跟随者通知该领导者已经完成复位阶段2动作。此后,该过程过渡到复位阶 段2的等待状态(320)。如果领导者没有被查询关于该领导者的当前的复位阶段 状态,则该过程返回到复位阶段2的等待状态(320)。

往回参见处理框322,如果IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示中的任一个都没有被置位,则 该过程过渡到处理框324,在处理框324中,处理逻辑测试跟随者是否处于复位阶 段1且需要过渡到复位阶段2。在一个实施例中,通过领导者检查跟随者在该领导 者的CSR中置位的、指示该跟随者已经完成复位阶段1动作的 IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示来这样做。如果是这样,则该 过程过渡到处理框325,在处理框325中,领导者中的处理逻辑在该领导者的CSR 中清除由跟随者置位的IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示以及 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示,并且向该跟随 者指示该领导者已经完成复位阶段2动作。在一个实施例中,通过在跟随者的CSR 中对IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示置位,领导者向该跟随者 指示该领导者已经完成复位阶段2动作。此后,该过程过渡到复位阶段2的等待状 态(320)。

往回参见处理框324,如果跟随者不处于复位阶段1,则领导者中的处理逻辑 检查该跟随者是否已经完成复位阶段2动作(处理框326)。在一个实施例中,通 过检查IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示来这样做。如果处理逻 辑确定了跟随者已经完成复位阶段2动作,则处理逻辑清除该 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示,并且过渡到处理框340,在 处理框340中,处理逻辑检查该跟随者是否已经询问了领导者处于哪一个复位阶段 状态。如果该跟随者没有询问过领导者处于哪一个复位阶段状态,则领导者移动到 操作阶段(350)。如果跟随者已经请求过领导者的复位阶段状态,则处理逻辑清 除该请求,并且向对等设备通知该领导者已经完成复位阶段2动作(处理框341)。 在一个实施例中,通过领导者在跟随者的CSR中清除 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示来清除该请求。 在一个实施例中,通过在跟随者的CSR寄存器中对 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示置位,领导者向该跟随者通知 该领导者所处于的复位阶段状态。此后,该过程过渡到操作阶段的开始350。

往回参见框326,如果处理逻辑确定了跟随者没有完成复位阶段2动作,则该 过程过渡到处理框328,在处理框328中处,理逻辑检查该跟随者是否已经询问过 领导者处于哪一个复位阶段状态。如果没有,则该过程过渡到复位阶段2的等待状 态(320)。如果跟随者已经询问过,则该过程过渡到处理框329,在处理框329 中,处理逻辑清除该请求,并且向对等设备通知该领导者已经完成复位阶段2动作 (处理框329)。在一个实施例中,通过领导者在跟随者的CSR中清除 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示来清除该请求。 在一个实施例中,领导者通过在跟随者的CSR寄存器中对 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示置位来向该跟随者通知该领导 者所处于的复位阶段状态。此后,该过程过渡到复位阶段2的开始(320)。

图4是由跟随者执行的过程。参见图4,由该跟随者执行的该过程从初始化 (401)处开始。在初始化(401)期间,跟随者的处理逻辑禁用来自两个门铃的中 断,并且禁用来自该跟随者的CSR的中断(处理框402)。在一个实施例中,来 自CSR的中断是来自硬件端点逻辑的、向核的处理逻辑通知已经在跟随者的CSR 中对不同的位进行了置位的中断。

此后,跟随者的处理逻辑清除对应于内部状态的CSR位(例如,领导者是否 已经完成复位阶段1动作的指示、领导者是否已经完成复位阶段2动作的指示、其 他CSR位),清除跟随者的存储器中的所有固件(FW)先进先出缓冲器(FIFO) 中的传出消息,消耗或丢弃FIFO中的所有传入消息,用1清除指示领导者向跟随 者查询以确定该跟随者当前驻留在哪一个复位阶段状态的CSR位指示,并且对领 导者中指示跟随者已经完成复位阶段1动作的指示进行置位(处理框403)。在一 个实施例中,在图4中将该指示称为IPC_PEER_COMP_ACTIONS_RST_PHASE1 位指示。

随后,该过程过渡到处理框404,在处理框404中,处理逻辑测试跟随者是否 正在进入复位或断电。如果跟随者是这样,则该过程结束。如果不是,则该过程过 渡到处理框405,在处理框中,处理逻辑允许来自该跟随者的CSR的中断。在允 许了CSR中断之后,该过程过渡到复位阶段1等待状态(410)。

在复位阶段1(410)处,处理逻辑等待CSR指示CSR寄存器中的某个位已 被置位且未被处理的中断发生。当CSR中断发生时,该过程过渡到处理框411, 在处理框411中,处理逻辑清除该CSR中断,并且将CSR值复制到本地变量存储 设备以进行分析。随后,跟随者中的处理逻辑测试领导者是否已经指示了该领导者 已经完成复位阶段1动作和复位阶段2动作两者(处理框412)。通过检查在跟随 者的CSR中IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示是否被置位来这样做。如果这 两者被置位,则该过程过渡到处理框413,在处理框413中,处理逻辑清除 IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示两者,并且向领导者查询该领 导者驻留在的复位阶段状态。为了查询领导者的复位阶段状态,跟随者中的处理逻 辑对领导者中的指示置位。在一个实施例中,通过在领导者的CSR中对 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示置位来这样做。 在这样做了之后,该过程过渡到处理框418。

在处理框418处,跟随者中的处理逻辑判断领导者是否向该跟随者查询了该 跟随者的复位阶段状态。在一个实施例中,通过跟随者在该跟随者的CSR中检查 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示来这样做。如果 是这样,则处理逻辑清除该跟随者的 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示,并且向领导者 通知该跟随者的当前复位阶段(其是复位阶段1)(处理框419)。在一个实施例 中,通过向对应于领导者的CSR中的IPC_PEER_COMP_ACTIONS_RST_PHASE1 位指示的CSR位置位,跟随者向领导者通知该跟随者的复位阶段状态。此后,该 过程过渡到复位阶段1的等待状态(410)。往回参见处理框418,如果领导者没 有向跟随者查询过该跟随者的当前复位阶段状态,则该过程过渡到复位阶段1的等 待状态(410)。

往回参见处理框412,如果IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2指示中的任一个没有被置位,则该过 程过渡到处理框414,在处理框414中,处理逻辑测试领导者是否已经完成复位阶 段1动作。在一个实施例中,通过跟随者检查领导者在该跟随者的CSR中置位的、 指示领导者已经完成复位阶段1动作的 IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示来这样做。如果跟随者确定了 领导者已经完成复位阶段1动作,则该过程过渡到处理框415,在处理框415中, 跟随者中的处理逻辑在该跟随者的CSR中清除 IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示,并且向领导者 指示该跟随者已经完成复位阶段1动作。在一个实施例中,通过在领导者的CSR 中对IPC_PEER_COMP_ACTIONS_RST_PHASE1位指示置位,跟随者向领导者指 示该跟随者已经完成复位阶段1动作。此后,该过程过渡到复位阶段1的等待状态 (410)。

往回参见处理框414,如果领导者不处于复位阶段1,则跟随者中的处理逻辑 检查该领导者是否已经完成复位阶段2动作(处理框416)。在一个实施例中,通 过跟随者检查由领导者在该跟随者的CSR中置位的 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示来这样做。如果是这样,则处 理逻辑在跟随者的CSR中清除该IPC_PEER_COMP_ACTIONS_RST_PHASE2位 指示(处理框417),随后,该过程过渡到处理框420。

在处理框420处,跟随者中的处理逻辑清除传入门铃和该跟随者的CSR中除 以下位指示之外的所有位指示:IPC_PEER_COMP_ACTIONS_RST_PHASE1和 IPC_PEER_COMP_ACTIONS_RST_PHASE2位指示,以及可选地一个或多个自定 义位(取决于它们的作用),这些在上文中已经描述过。处理逻辑也在领导者的 CSR中对IPC_PEER_COMP_ACTIONS_RST_PHASE2位进行置位以向领导者通知 该跟随者已经完成复位阶段2动作。此后,该过程过渡到操作阶段(421)。注意, 即便跟随者处于操作阶段,在一个实施例中,在该跟随者能够发送消息之前,领导 者必须发送第一带内消息。在一个实施例中,领导者发送伪消息(dummymessage) 作为该第一消息。这允许跟随者开始发送消息。为了防止跟随者首先发送消息的困 境情况(cornercase),这经历了复位,并且再次到达操作阶段而领导者甚至对此 不知晓。

往回参见处理框416,如果跟随者确定了领导者不处于复位阶段2,则该过程 过渡到处理框418,在处理框418中,处理逻辑测试领导者是否已经请求了该跟随 者的复位阶段状态。在一个实施例中,跟随者从该跟随者的CSR中检查 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示以确定领导者是 否已经请求过该跟随者的复位阶段状态。如果领导者已经请求过,则跟随者中的处 理逻辑清除该请求,并且向该领导者通知该跟随者已经完成复位阶段1动作。在一 个实施例中,通过在跟随者的CSR中清除 IPC_PEER_QUERIED_IP_COMP_ACTIONS_RST_PHASE位指示,该跟随者清除 该请求。在一个实施例中,通过在领导者的CSR寄存器中对 IPC_PEER_COMP_ACTIONS_RST_PHASE1置位,跟随者向领导者通知该跟随者 的复位阶段状态。一旦已经完成此,则该过程过渡到复位阶段1的等待状态(410)。

因而,本文中描述的诸实施例包括以下中的一个或多个:处理在复位或经交 织的复位内的复位的特殊情况;丢弃所有过时的消息;避免丢失有效的消息;避免 死锁;避免活锁;允许任何处理单元的异步复位入口;禁用和/或不可用性的简单 指示;对处理单元复位的统一处理;禁用;处理单元不可用性和/或仅复位通信信 道;以及发现而不强加预先定义的复位退出顺序。

此外,由于上面提到的问题,避免了对同步复位的读取。类似地,由于上面 提到的问题,避免了超时和/或重试。

图5示出根据所描绘的本发明的片上系统(SOC)设计的实施例。作为特定 的说明性示例,SOC500被包括在用户装备(UE)中。在一个实施例中,UE是 指由最终用户用来通信的任何设备,诸如,手持式电话、智能电话、平板、超薄笔 记本、带有宽带适配器的笔记本或任何其他类似的通信设备。UE经常连接到基站 或节点,基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。

在一个实施例中,SOC500包括2个核,即506和507。与上面的讨论类似, 核506和507可以遵循指令集架构,诸如,基于架构核TM(ArchitectureCoreTM)的处理器、超威设备公司(AMD)的处理器、基于MIPS的 处理器、基于ARM的处理器设计或它们的消费者以及它们的授权许可方或采用者。 核506和507耦合到高速缓存控制508,该高速缓存控制508与总线接口单元509 和L2高速缓存510相关联,以便与系统500的其他部分通信。互连510包括片上 互连,诸如,IOSF、AMBA或本文中讨论的其他互连,它们潜在地实现所描述发 明的一个或多个方面。

接口510提供到其他组件的通信信道,其他组件诸如,用于与订户身份模块 (SIM)卡对接的SIM530、用于保存由核506和507执行以初始化并引导SOC500 的引导代码的引导ROM535、用于与外部存储器(例如,DRAM560)对接的 SDRAM控制器540、用于与非易失性存储器(例如,闪存565)对接的闪存控制 器545、用于与外围设备连接的外围控制器550(例如,串行外围接口)、用于显 示和接收输入(例如,允许触摸的输入)的视频编解码器520和视频接口525、用 于执行图形相关的计算的GPU515,等等。这些接口中的任何接口可以合并本文中 描述的本发明的诸方面。

另外,该系统示出用于通信的外围设备,诸如,蓝牙模块570、3G调制解调 器575、GPS585和WiFi585。注意,如上面所陈述,UE包括用于通信的无线电 装置。作为结果,这些外围通信模块不是都需要的。然而,在UE中,用于外部通 信的某种形式的无线电装置将被包括。

图6示出包括多核心处理器的计算系统的框图的实施例。参见图6,处理器 600包括任何处理器或处理设备,诸如,微处理器、嵌入式处理器、数字信号处理 器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上系统(SOC) 或用于执行代码的其他设备。在一个实施例中,处理器600包括至少两个核,即核 601和602,这两个核可以包括不对称核或对称核(所示实施例)。然而,处理器 600可包括可以是对称的或非对称的任何数量的处理元件。

在一个实施例中,处理元件是指用于支持软件线程的硬件或逻辑。硬件处理 元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻 辑处理器、硬件线程、核心和/或能够保持处理器的状态(诸如,执行状态或架构 状态)的任何其他元件。换句话说,在一个实施例中,处理元件是指能够与诸如软 件线程、操作系统、应用或其他代码之类的代码独立地相关联的任何硬件。物理处 理器(或处理器插槽)通常是指集成电路,该集成电路潜在地包括任何数量的其他 处理元件,诸如,核或硬件线程。

核经常是指位于能够维持独立的架构状态的集成电路上的逻辑,其中,每一 个被独立地维持的架构状态与至少一些专用执行资源相关联。与核相比,硬件线程 通常是指位于能够维持独立的架构状态的集成电路上的任何逻辑,其中,被独立地 维持的架构状态共享对执行资源的访问。如可见的,当某些资源被共享且其他资源 专用于架构状态时,在硬件线程和核的命名法之间的界线重叠。但是通常而言,核 和硬件线程被操作系统看作诸单个的逻辑处理器,其中,操作系统能够单独地调度 在每一个逻辑处理器上的操作。

如图6所示的物理处理器600包括两个核——核601和602。在这里,601 和602被认为是对称核,即,具有相同的配置、功能单元和/或逻辑的核。在另一 实施例中,核心601包括无序处理器核,而核602包括有序处理器核。然而,核 601和602可以是可从任何类型的核中单独地选出,各种类型的核诸如,原生核、 软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换的指令集 架构(ISA)的核、共同设计的核或其他已知的核。在异构核环境(即,非对称核) 中,可以利用某种形式的转换(诸如,二进制转换)来调度或执行一个或两个核上 的代码。但是,为进一步讨论,下文中更详细地描述在核601中示出的功能单元, 因为核602中的单元以在与所描绘的实施例中类似方式来操作。

如所描绘,核601包括两个硬件线程601a和601b,它们可被称为硬件线程槽 601a和601b。因此,在一个实施例中,诸如操作系统之类的软件实体潜在地将处 理器600视为四个单独的处理器,即,能够并发地执行四个软件线程的四个逻辑处 理器或处理元件。如上文所暗示,第一线程与架构状态寄存器601a相关联,第二 线程与架构状态寄存器601b相关联,第三线程可以与架构状态寄存器602a相关联, 且第四线程可以与架构状态寄存器602b相关联。在这里,如上所述,架构状态寄 存器(601a、601b、602a和602b)中的每一个均可称为处理元件、线程槽或线程 单元。如图所示,架构状态寄存器601a被复制在架构状态寄存器601b中,因此, 能够为逻辑处理器601a和逻辑处理器601b存储各自的架构状态/上下文。在核601 中,也可为线程601a和601b复制其他较小的资源,诸如,分配器和重命名块630 中的指令指针和重命名逻辑。可通过分区操作来共享一些资源,诸如,重排序器/ 引退单元635中的重排序缓冲器、ILTB620、加载/存储缓冲器和队列。潜在地可 完全共享其他资源,诸如,通用内部寄存器、页表基址寄存器、低层级数据高速缓 存和数据TLB615、(多个)执行单元640以及无序单元635的诸部分。

处理器600通常包括其他资源,这些其他资源可被完全共享、通过分区操作 来共享或由处理元件专用/专用于处理元件。在图6中,示出具有说明性的处理器 的逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功 能单元中的任何功能单元,并包括未描绘的任何其他已知的功能单元、逻辑或固件。 如图所示,核601包括简化的、代表性的无序(OOO)处理器核。但是,在不同 的实施例中,可利用有序处理器。OOO核包括用于预测要执行/采用的分支的分支 目标缓冲器620和用于存储指令的地址转换条目的指令转换缓冲器(I-TLB)620。

核601还包括解码模块625,该解码模块625耦合至取出单元620,并且用于 对取出的元素解码。在一个实施例中,取出逻辑包括分别与线程槽601a、601b相 关联的各自的定序器。通常,核601与第一ISA相关联,该第一ISA定义/指定在 处理器600上可执行的指令。作为第一ISA的部分的机器代码指令通常包括引用/ 指定要执行的指令或操作的指令的一部分(被称为操作码)。解码逻辑625包括电 路,该电路从这些指令的操作码中识别出这些指令并在流水线上继续传递经解码指 令以进行由第一ISA定义的处理。例如,如下文更详细讨论的,在一个实施例中, 解码器625包括设计成或适合于识别诸如事务性指令之类的特定指令的逻辑。作为 由解码器625进行识别的结果,架构或核心601采取特定的预定义动作来执行与适 当指令相关联的任务。重要的是应注意,可响应于单条或多条指令来执行本文中描 述的任务、块、操作和方法中的任何一者;这些指令中的一些可以是新指令或旧指 令。注意,在一个实施例中,解码器626识别相同的ISA(或其子集)。或者,在 异构核环境中,解码器626识别第二ISA(第一ISA的子集或不同的ISA)。

在一个示例中,分配器和重命名器块630包括用于保留资源(诸如,用于存 储指令处理结果的寄存器组)的分配器。然而,线程601a和601b可能能够无序执 行,其中,分配器和重命名器块630也保留其他资源,诸如,用于跟踪指令结果的 重排序缓冲器。单元630还可包括寄存器重命名器,该寄存器重命名器用于将程序 /指令引用寄存器重命名为处理器600内部的其他寄存器。重排序/引退单元635包 括用于支持对被无序执行的指令的无序的执行和稍后的有序的引退的组件,诸如, 上文提到的重排序缓冲器、加载缓冲器和存储缓冲器。

在一个实施例中,调度器和执行单元块640包括用于调度执行单元上的指令/ 操作的调度器。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指 令。还包括了与执行单元相关联的寄存器组以存储信息指令处理结果。示例性的执 行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执 行单元以及其他已知的执行单元。

低层级数据高速缓存和数据转换缓冲器(D-TLB)650耦合到(多个)执行单 元640。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),这些 元素潜在地被保持在存储器一致性状态下。D-TLB用于存储最近的虚拟到物理地 址转化/线性到物理地址转换。作为特定示例,处理器可包括页表结构,该页表结 构用于将物理存储器分解成多个虚拟页。

在这里,核601和602共享对较高层级或进一步远离的高速缓存的访问,诸 如,与片上接口610相关联的第二级高速缓存。注意,较高层级或进一步远离是指 从(多个)执行单元增加或远离的高速缓存层级。在一个实施例中,较高层级的高 速缓存是末级数据高速缓存——处理器600上的存储器层次结构中的最后的高速 缓存——诸如,第二级或第三级数据高速缓存。然而,较高层级的高速缓存不限于 此,因为它可与指令高速缓存相关联或包括指令高速缓存。踪迹高速缓存(指令高 速缓存的类型)相反可耦合在解码器625之后,用于存储最近经解码的踪迹。在这 里,指令可能是指宏指令(即,由解码器识别的通用指令),该宏指令可解码成多 条微指令(微操作)。

在所描绘的配置中,处理器600也包括片上接口模块610。历史上,下文中更 详细地描述的存储器控制器已被包括在处理器600外部的计算系统中。在该场景 中,片上接口610用于与处理器600外部的设备进行通信,这些设备诸如,系统存 储器675、芯片组(通常包括用于连接到存储器675的存储器控制器中枢以及用于 连接到外围设备的I/O控制器中枢)、存储器控制器中枢、北桥或其他集成电路。 并且在该场景中,总线605可包括任何已知的互连,诸如,多点式总线、对等互连、 串行互连、并行总线、一致的(例如,高速缓存一致的)总线、分层协议架构、差 分总线以及GTL总线。

存储器675可以专用于处理器600,或由系统中的其他设备共享。存储器675 的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)以及其他 已知的存储设备。注意,设备680可包括耦合到存储器控制器中枢的图形加速器、 处理器或卡,耦合到I/O控制器中枢的数据存储设备,无线收发机,闪存设备,音 频控制器,网络控制器或其他已知的设备。

然而,近来随着更多的逻辑和器件被集成在单个管芯上(诸如,SOC),这 些器件中的每一个器件均可以合并在处理器600上。例如,在一个实施例中,存储 器控制器中枢与处理器600处于同一个封装和/或管芯上。在这里,核610的部分 (核上部分)包括用于与诸如存储器675和/或图形设备680之类的其他设备对接 的一个或多个控制器。通常将包括互连和用于与此类设备对接的控制器的配置称为 核上(或非核配置)。作为示例,片上接口610包括用于片上通信的环形互连和用 于片外通信的高速串行点对点链路605。然而,在SOC环境中,可将甚至更多的 设备(诸如,网络接口、协处理器、存储器675、图形处理器680以及任何其他已 知计算机设备/接口)集成在单个管芯或集成电路上,以提供具有高功能和低功耗 的小形状因子。这些设备(包括处理器核)可以使用本文中针对通信所描述的互连 (例如,通信信道103、IPC通信信道,等等)。

在第一示例实施例中,一种装置包括:一对处理单元,其使用写操作在对等 通信中彼此通信,其中,所述一对处理单元中的每一处理单元包括:通信单元,其 用于将信息从所述一对处理单元中的一个处理单元传送到所述一对处理单元中的 另一个处理单元;存储器,其用于存储复位同步信息和消息信息;以及处理逻辑, 其用于基于在所述存储器中被置位的位指示,在所述处理逻辑与所述另一个处理单 元之间执行只写复位同步。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:所述存储器 包括用于位组的存储设备,所述位组中的一个或多个位表示由所述另一个处理单元 置位的、关于复位同步的指示,并且所述位组中的一个或多个位与复位同步不相关 且由所述另一个处理单元发送。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:所述位组中 的第一位是所述另一个处理单元将不传送与复位同步不相关的任何事务的指示。在 另一示例实施例中,此实施例的主题可以可选地包括:所述位组中的第二位是所述 另一个处理单元丢弃从所述一个处理单元发送的、与复位同步不相关的、未经处理 的消息的指示。在另一示例实施例中,此实施例的主题可以可选地包括:所述位组 中的第三位是来自所述另一个处理单元的、向所述一个处理单元的请求,所述请求 用于基于所述第一位和第二位中的哪一个位最后被置位以在相对于所述第一位作 出的置位与相对于所述第二位作出的置位之间消除歧义。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:所述一个处 理单元的所述处理逻辑通过以下步骤在所述一个处理单元自身与所述另一个处理 单元之间同步复位:对所述另一个处理单元中的第一指示置位以指示所述一个处理 单元已经禁用与复位同步不相关的传出通信量;从所述存储器读取由所述另一个处 理单元置位的、与复位同步不相关的所述另一个处理单元的传出通信量已被禁用的 第二指示;响应于读取到所述第二指示,清除存储在所述存储器中的、与复位同步 不相关的、且从所述另一个处理单元接收的消息信息;对所述另一个处理单元中的 第三指示置位以指示所述一个处理单元已经清除与复位同步不相关的残留的传入 通行量;从所述存储器读取第四指示,所述第四指示由所述另一个处理单元置位、 并且指示所述另一个处理单元已经清除存储在所述存储器中的、与复位同步不相关 的、且从所述一个处理单元接收的传入消息信息;以及恢复与所述另一个处理单元 之间的通信。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:所述另一个 处理单元的所述处理逻辑通过以下步骤在所述另一个处理单元与所述一个处理单 元之间同步复位:对所述第一处理单元中的第一指示置位以指示所述另一个处理单 元已经禁用与复位同步不相关的传出通信量;从所述存储器读取由所述一个处理单 元置位的、与复位同步不相关的所述一个处理单元的传出通信量已被禁用的第二指 示;从所述存储器读取第三指示,所述第三指示由所述一个处理单元置位、并且指 示所述一个处理单元已经清除存储在所述存储器中的、与复位同步不相关的、且从 所述另一个处理单元接收的消息信息;响应于读取到所述第三指示,清除存储在所 述存储器中的、与复位同步不相关的、且从所述一个处理单元接收的消息信息;对 所述一个处理单元中的第四指示置位以指示所述另一个处理单元已经清除与复位 同步不相关的残留的传入通信量;以及在从所述一个处理单元接收到至少一个传入 消息之后,恢复与所述一个处理单元之间的通信。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:当接收到所 述另一个处理单元已经禁用与复位同步不相关的所述另一个处理单元的传出通信 量的所述第二指示时,所述一个处理单元再次将所述一个处理单元的当前的复位同 步状态报告给所述另一个处理单元。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:当接收到所 述一个处理单元已经禁用与复位同步不相关的所述一个处理单元的传出通信量的 指示时,所述另一处理单元再次将所述另一个处理单元的当前的复位同步状态报告 给所述一个处理单元。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:所述一对处 理单元是集成电路中的处理核。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:所述一对处 理单元不是一个集成电路的部分。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:所述一个处 理单元通过在所述另一个处理单元中的控制状态寄存器(CSR)寄存器写入位以对 所述另一个处理单元中的所述位指示置位。

在另一示例实施例中,第一示例实施例的主题可以可选地包括:当前存储的 消息信息包括以下各项中的一项或多项:消息、对等设备相关的请求信息和对等设 备相关的状态信息。

在第二示例实施例中,一种用于在使用写入操作进行通信的第一对等设备与 第二对等设备之间同步复位的方法包括:对于所述第一对等设备:对所述第二处理 单元中的第一指示置位以指示所述第一对等设备已经禁用与复位同步不相关的传 出通信量;从所述存储器读取由所述第二对等设备置位的、与复位同步不相关的所 述第二对等设备的传出通信量已被禁用的第二指示;响应于读取到所述第二指示, 清除存储在所述存储器中的、与复位同步不相关的、且从所述第二对等设备接收的 消息信息;使用所述通信单元对所述第二对等设备中的第三指示置位以指示所述第 一对等设备已经清除与复位同步不相关的残留的传入通信量;从所述存储器读取第 四指示,所述第四指示由所述第二对等设备置位、并且指示所述第二对等设备已经 清除存储在所述存储器中的、与复位同步不相关的、且从所述第一对等设备接收的 传入消息信息;以及恢复与所述第二对等设备之间的通信。

在另一示例实施例中,第二示例实施例的主题可以可选地包括:对于所述第 二对等设备:对所述第一对等设备中的第一指示置位以指示所述第二对等设备已经 禁用与复位同步不相关的传出通信量;从所述存储器读取由所述第一对等设备置位 的、与复位同步不相关的所述第一对等设备的传出通信量已被禁用的第二指示;从 所述存储器读取第三指示,所述第三指示由所述第一对等设备置位、并且指示所述 第一对等设备已经清除存储在所述存储器中的、与复位同步不相关的、且从所述第 二对等设备接收的任何消息信息;响应于读取到所述第三指示,清除存储在所述存 储器中的、与复位同步不相关的、且从所述第一对等设备接收的消息信息;使用所 述通信单元对所述第一对等设备中的第四指示置位以指示所述第二对等设备已经 清除与复位同步不相关的残留的传入通信量;以及在从所述第一对等设备接收到至 少一个传入消息之后,恢复与所述第一对等设备之间的通信。

在另一示例实施例中,第二示例实施例的主题可以可选地包括:在所述第一 对等设备和所述第二对等设备中的一者或两者接收到与复位同步不相关的对等设 备的传出通信量已被禁用的报告之后,所述第一对等设备和所述第二对等设备中的 一者或两者再次将当前的复位同步状态报告给另一个对等设备。

在另一示例实施例中,第二示例实施例的主题可以可选地包括:所述第一对 等设备和所述第二对等设备中的一者清除从所述第一对等设备和所述第二对等设 备中的另一个对等设备接收的当前被存储的消息信息。

在另一示例实施例中,第二示例实施例的主题可以可选地包括:对所述第一 指示、所述第二指示、所述第三指示或所述第四指示中的任何指示置位包括,在相 应的所述第一对等设备或所述第二对等设备中的控制状态寄存器(CSR)寄存器中 写入位。

在另一示例实施例中,第二示例实施例的主题可以可选地包括:所述当前被 存储的消息信息包括以下各项中的一项或多项:消息、对等设备相关的请求信息和 对等设备相关的状态信息。

在另一示例实施例中,第二示例实施例的主题可以可选地包括:当在复位同 步期间由所述第一对等设备和所述第二对等设备中的一者或两者进行的一个或多 个复位发生时,维持所述复位同步。在另一示例实施例中,此实施例的主题可以可 选地包括:所述一个或多个复位包括由两个对等设备进行的经交织的复位或同时复 位。

在第三示例实施例中,一种制品具有存储指令的一个或多个非暂态计算机可 读存储介质,当由第一对等设备和第二对等设备执行所述指令时,所述指令使所述 第一对等设备和所述第二对等设备执行用于在使用写入操作来彼此通信的所述第 一对等设备和所述第二对等设备之间同步复位的方法,其中,所述方法包括:对于 所述第一对等设备:对所述第二处理单元中的第一指示置位以指示所述第一对等设 备已经禁用与复位同步不相关的传出通信量,从所述存储器读取由所述第二对等设 备置位的、与复位同步不相关的所述第二对等设备的传出通信量已被禁用的第二指 示,响应于读取到所述第二指示,清除存储在所述存储器中的、与复位同步不相关 的、且从所述第二对等设备接收的消息信息;使用所述通信单元对所述第二对等设 备中的第三指示置位以指示所述第一对等设备已经清除与复位同步不相关的残留 的传入通信量;从所述存储器读取第四指示,所述第四指示由所述第二对等设备置 位、并且指示所述第二对等设备已经清除存储在所述存储器中的、与复位同步不相 关的、且从所述第一对等设备接收的传入消息信息;以及恢复与所述第二对等设备 之间的通信。

在另一示例实施例中,第三示例实施例的主题可以可选地包括所述方法进一 步包括:对于所述第二对等设备:对所述第一对等设备中的第一指示置位以指示所 述第二对等设备已经禁用与复位同步不相关的传出通信量;从所述存储器读取由所 述第一对等设备置位的、与复位同步不相关的所述第一对等设备的传出通信量已被 禁用的第二指示;从所述存储器读取第三指示,所述第三指示由所述第一对等设备 置位、并且指示所述第一对等设备已经清除存储在存储器中的、与复位同步不相关 的、且从所述第二对等设备接收的消息信息;响应于读取到所述第三指示,清除存 储在所述存储器中的、与复位同步不相关的、且从所述第一对等设备接收的消息信 息;使用所述通信单元对所述第一对等设备中的第四指示置位以指示所述第二对等 设备已经清除与复位同步不相关的残留的传入通信量;在从所述第一对等设备接收 到至少一个传入消息之后,恢复与所述一个处理单元之间的通信。

在另一示例实施例中,第三示例实施例的主题可以可选地包括所述方法进一 步包括:当所述第一对等设备和所述第二对等设备中的一者或两者接收到与复位同 步不相关的另一个对等设备的传出通信量已被禁用的报告时,所述第一对等设备和 所述第二对等设备中的一者或两者再次将当前的复位同步状态报告给所述另一个 对等设备。

在另一示例实施例中,第二示例实施例的主题可以可选地包括所述方法进一 步包括:所述第一对等设备和所述第二对等设备中的一者或两者清除从所述第一对 等设备和所述第二对等设备中的另一个对等设备接收的当前被存储消息信息。

在此参考对计算机存储器内的数据位的操作的算法和符号表示来呈现具体实 施例的一些部分。这些算法描述和表示是由数据处理领域中的技术人员用来最有效 地向本领域中的其他技术人员传递他们工作的实质的手段。算法在此一般被认为是 导致所期望结果的自洽的步骤序列。这些步骤是要求对物理量的物理操纵的那些操 作。通常但并不必然地,这些量采取能够被存储、传输、组合、比较以及以其他方 式操纵的电或磁信号的形式。已经证明,主要出于普通用途的原因,时不时地将这 些信号称为位、值、元素、符号、字符、项、数字等是方便的。

然而,应当牢记,所有这些和类似的术语与适当的物理量相关联,并且仅仅 是应用于这些量的方便的标签。除非专门陈述,否则从以下讨论看显而易见的是, 应当理解,贯穿本描述利用诸如“处理”或“计算(computing)”或“计算(calculating)” 或“确定”或“显示”等等之类的术语的讨论是指计算机系统或类似的电子计算设 备的动作和进程这些动作和进程操纵被表示为在计算机系统的寄存器和存储器内 的物理(电子)量的数据并将其变换成类似地被表示为在计算机系统存储器或寄存 器或其他此类信息存储、传输或显示设备内的物理量的其他数据。

本文中描述的各实施例也涉及用于执行本文中的操作的装置。该装置可以是 为所要求的目的而被专门构建的,或者它可以包括由存储在计算机中的计算机程序 有选择地激活或重新配置的通用计算机。此类计算机程序可以被存储在计算机可读 存储介质中,计算机可读存储介质诸如但不限于,包括软盘、光盘、CD-ROM和 磁-光盘在内的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM), EPROM,EEPROM,磁或光卡,或适用于存储电子指令且各自都耦合到计算机系 统总线的任何类型的介质。

本文中所呈现的算法和显示并不固有地与任何特定的计算机或其他装置相 关。各种通用系统可以与根据本文中的教导的程序一起使用,或者,可以证明构建 更专用的装置以执行所要求的方法步骤是方便的。通过本文的描述各种这样的系统 的所要求的结构将是显而易见的。另外,不参考任何特定的编程语言来描述本发明。 应当明白,各种编程语言都可以用来实现本文中描述的本发明的教导。

机器可读介质包括用于以存储或传输可由机器(例如,计算机)读取的形式 的信息的任何机制。例如,机器可读介质包括只读存储器(“ROM”);随机存取 存储器(“RAM”);磁盘存储介质;光存储介质;闪存设备;等等。

鉴于在阅读前述描述之后,本发明的许多变型和修改无疑对本领域普通技 术人员是显而易见的,但应当理解,作为说明而示出和描述的任何特定的实施 例绝不是旨在被认为是限制性的。因此,对各种实施例的细节的引用不旨在限 制权利要求的范围,在这些权利要求自身中仅表述被视为本发明所必需的那些 特征。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号