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

文档序号:9929497阅读:269来源:国知局
用于只写处理器间复位同步的方法和装置的制造方法
【技术领域】
[0001] 本发明的各实施例涉及在异构处理核之间通信的领域;更具体而言,本发明的各 实施例涉及在使用只写通信来彼此通信的处理单元(例如,处理器核、知识产权(IP)核等) 之间的复位(reset)同步。
【背景技术】
[0002] 处理器间(inter-processor)通信(IPC)经常用于在运行在不同的处理器核(例 如,不同的异构处理器核)中的进程之间交换数据。这些进程可以源自运行在使用不同的 处理核或线程的中央处理单元(CPU)或片上系统(S0C)上的程序。即便这些进程可能正单 独地运行,它们仍可能需要在彼此之间传递信息。
[0003] 根据通信协议使用处理核或单元的接口来执行IPC通信,进程正在这些处理核或 单元上运行。有时,通信协议使得处理核或单元使用对等(peer-to-peer)通信来通信。用 于IPC通信的通信协议常常包括用于促进信息交换的读取和写入操作。
[0004] 当在对等设备(peer)中与另一对等设备进行IPC通信的一个对等设备将被复位 或禁用时,出现了问题。例如当对等设备正断电时,其会被禁用。当这种情况发生时,一个 对等设备获悉另一对等设备正被复位或被禁用是困难的。在此类情况下,第一对等设备可 能正在等待来自第二对等设备的信息,这可能使该第一对等设备进入无休止地等待来自第 二对等设备的响应的状态,进而导致该第一对等设备的挂起(hang)或由该第一对等设备 引起的启发式超时(heuristic timeout)(其在一些情况下可能是错误的)。另外,这可能 引起这样的情形:第二对等设备被重新初始化,但已失去其上下文,并且第一对等设备在第 二对等设备处于不同的状态(例如,第一对等设备相信会话正在进行,而第二对等设备丢 失了对此的任何概念)的错误假设下保持发送消息。也可能在另一方向上发生相同的状 态失配。最终,由于在许多情况下消息不是原子的(atomic)(例如,由一系列寄存器写入构 成),如果第一对等设备发送非原子的消息且第二对等设备在中间经历复位,则有可能该复 位本身将会将复位包括在第二对等设备的消息寄存器中,同时第一对等设备正继续填充这 些消息寄存器,使得第二对等设备接收损坏的消息。在第一对等设备能够使用读取操作以 从第二对等设备中读取关于其状态的信息并且能够基于对该读取操作的响应来判断第二 对等设备是否是不可用的或已经历复位的情况下,尤其是在当超时或重试将使第一对等设 备推断出另一对等设备不可用的情况下,可避免该问题。
[0005] 虽然在允许读取操作时在对等设备之间的通信复位信息更易于处理,但读取操作 呈现出不期望的其他问题。例如,在对等设备的核被复位或正被禁用(例如,由于进入低功 率状态而被禁用)时,这些动作会使该读取因例如核的隔离而失败。而且,包含读取的通信 协议可能更加难以跨不同的底层总线和/或结构(fabric)来迀移。
[0006] 因而,可能期望在对等设备之间使用不包括读取操作的通信协议。然而,在对等设 备仅通过写入操作来通信的情形中,不知悉另一对等设备已经进入复位或已经以其他方式 变得不可用的问题仍然存在。
【附图说明】
[0007] 通过下面给出的具体实施例和本发明的各实施例的附图,将更完整地理解本发 明,然而,不应认为具体实施例和附图将本发明限制于特定的实施例,而是仅用于解释和理 解。
[0008] 图1示出能够使用只写通信协议来彼此通信的两个处理元件。
[0009] 图2是复位同步过程的一个实施例的流程图。
[0010] 图3和图4是分别由复位同步中的领导者和跟随者执行的操作的更详细的流程 图。
[0011] 图5示出片上系统(S0C)设计的实施例。
[0012] 图6示出包括多核处理器的计算系统的框图的实施例。
【具体实施方式】
[0013] 在下列描述中,陈述众多细节以提供对本发明的更透彻的解释。然而,对本领域中 技术人员将显而易见的是,在不具有这些特定的细节的情况下就可以实践本发明。在其他 实例中,以框图形式而非详细地示出公知的结构和设备,以免使本发明含糊。
[0014] 描述了用于在使用只写方法仅作为对等设备来通信的一对处理元件(例如,知识 产权(IP)核、处理器核、处理器、片上系统处理核、集成电路或在相同的板(其具有可靠的 底层通信总线)上的设备,等等)之间同步复位操作的方法和装置。本文中描述的技术允 许每一个处理元件检测其对等设备进入了以下状态:对等设备正在进入复位、正退出复位、 正变得被禁用或以其他方式不可用(永久地不可用,或者因为系统正在进入处理元件不起 作用的低功率状态)或者仅仅正在复位通信。因为这些对等设备仅使用写入操作来彼此通 信,因此每一处理元件不能知道其对等设备是否接收到来自该处理元件的最后事务,但是 这些处理元件仍然能够同步对在它们之间的通信信道的复位。
[0015] 图1示出能够使用只写通信协议(在该协议中,两个处理元件之间的通信仅通过 写入操作的使用而发生)、作为对等设备而彼此通信的两个处理元件。
[0016] 参见图1,处理单元101和102 (例如,处理器核、知识产权(IP)核、专用处理单元 等)是彼此通信的对等设备。处理单元101和102中的每一个可以在同一个集成电路(1C) 中或在不同的1C中。处理单元101和102中的每一个可以异步地进入复位或退出复位、被 禁用、变得不可用或复位它们之间的通信信道(通信信道103)。
[0017] 在一个实施例中,通信信道103是处理器间通信信道。通信信道103用于在处理 单元101与102之间交换信息(例如,请求、状态等)和其他消息。
[0018] 处理单元101包括处理逻辑101A和硬件端点逻辑101B,该逻辑101A用于在系 统中执行与它们的指定功能相关联的操作,这些操作包括本文中描述的复位同步操作,而 硬件端点逻辑101B用于使用通信信道103来与诸如处理单元102之类的一个或多个其他 处理单元通信(例如,传输)。类似地,处理单元102包括处理逻辑102A和硬件端点逻辑 102B,该逻辑102A用于在系统中执行与它们的指定功能相关联的操作,这些操作包括本文 中描述的复位同步操作,而硬件端点逻辑102B使用通信信道103来与诸如处理单元101之 类的一个或多个其他处理单元通信(例如,传输)。更具体而言,处理逻辑101A和处理逻辑 101B基于在存储器101C中被置位的位指示来执行关于在其自身与第二处理单元之间的只 写复位同步的操作。注意,在替代实施例中,处理单元101和102不具有硬件端点单元,相 反,由软件或固件来仿真所有的硬件动作(例如,写入到其他对等设备,等等)。
[0019] 处理单元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)时防止任一侧覆写来自另一侧的更新,使一 个对等设备对诸个位进行置位且使一侧清除相同的存储器的诸个位是重要的。
[0020] 注意,在替代实施例中,可以用1置位并用0清除位指示,或者用0置位并用1清 除位指示,或者用0置位并用0清除位指示。
[0021] 在一个实施例中,指示的集合包括处理单元将不在通信信道103上传送与复位同 步协议不相关的任何更多的事务且已经复位其通信状态的指示。这包括处理单元本身已经 经历了复位或已经退出复位但将经历复位的情况。在一个实施例中,该指示是强制性的,且 必须由一个或两个处理单元支持。
[0022] 在一个实施例中,指示的集合包括处理单元已经放弃或丢弃与复位同步协议不相 关的任何未经处理的传入消息的指示。在一个实施例中,该指示是强制性的,且必须由一个 或两个处理单元支持。
[0023] 在一个实施例中,指示的集合包括这样的指示:处理单元向对等设备指示,已经对 以上讨论的两个指示两者置位,且请求该对等设备通过再次对以上经置位的指示中的仅一 个置位来消除歧义。在此类情况下,处理单元清除两个指示,使得该处理单元可以确定哪一 个指示由该对等设备再次置位。
[0024] 作为复位同步协议的部分,处理单元101和102使用这些指示将通知(诸如,它们 所处于的复位阶段状态)发送到彼此,并且向另一处理单元通知关于使通信信道103复位 所采取的动作。在一个实施例中,处理单元进入复位或被禁用且无需继续与对等处理单元 握手,并且仅需要对第一指示(例如,位)置位并关机。在进入复位或被禁用之前,没有确 收(ACK)或进一步的通信是处理单元所需要的。
[0025] 在处理单元101和102中,硬件端点逻辑101A和101B是通信单元。在一个实施例 中,这些单元处理将信息和消息发送到其他处理单元,包括对其他处理单元的指示(例如, 位指示)的置位。在一个实施例中,这些单元处理门铃(doorbell)和中断,并且当已在其 存储器中对复位同步指示置位时生成对处理逻辑的中断,使得该处理逻辑可以采取本文中 描述的动作。
[0026] 在一个实施例中,作为复位同步协议的部分,处理单元101和102两者临时地禁用 它们的传出通信量(traffic),两个处理单元都从另一处理单元(其对等设备)接收其传出 通信量被临时地禁用的指示,每一个处理单元清除来自另一处理单元的任何残留的传入通 信量(使得在复位同步过程中的这一时刻,没有新的通信量发生),并且随后恢复通信。
[0027] 在一个或多个实施例中,本文中描述的技术使得:不利用超时/重试(这可能具有 假肯定(false positive)/假否定(false negative),并且导致复杂的重试逻辑);无需专 用逻辑就可处理给定的处理核的复位内复位以及给定的处理元件与其对等设备之间的经 交织的复位;在恢复通信之前,丢弃过时的消息;避免处理元件开始通信而其对等设备意 外地丢弃有效的传入消息的情形;避免"死锁"(即,没有处理元件达到其中它无休止地等 待其对等设备的状态);避免"活锁"(即,协议从不达到在处理元件之间发生无休止的信道 复位"往复"("ping-ping")的状态,其中,此类"往复"会阻止通信信道达到稳定的操作 状态,并且与死锁形成对比的是,在制定协议时进行检测要难得多);任一处理元件可以异 步地进入复位而无需等待来自其对等设备的确收(ACK)(因为在许多情况下,处理元件复 位发生意味着处理元件处于坏的状态或监视器(watchdog)期满发生,并且由于对可能繁 忙的对等设备的依赖性,延迟处理元件的复位是不期望的);存在着供处理元件向对等设 备指示该处理元件被禁用(即,没有进一步的通信是可能的)而无需涉及复杂的协议交换 (且不要求完全成熟的驱动器)的简单方式,这有助于在对IP的拒绝服务(DoS)的情况的 情况下的安全性一一只要该处理元件能够容易地向其对等设备指示它被禁用且无需完全 成熟的驱动器,这允许这些对等设备检测DoS而不增加对等设备的TCB (例如,如果操作简 单,则可以容易地从IP的ROM中来完成它);各种情况(进入复位、退出复位,变得被禁用、 仅复位通信信道)都不要求不同的握手(简单起见);并且保证两个处理元件变成操作的 并结束发现彼此,并且对复位退出顺序不强加任何预先定义的约束。
[0028] 下面更详细地描述协议的诸实施例。
[0029] 图2是复位同步过程的一个实施例的流程图。该过程由处理逻辑执行,该处理逻 辑可以包括硬件(电路、专用逻辑,等等)、软件(诸如,在通用计算机系统或专用机器上运 行的软件)、固件或这三者的组合。在一个实施例中,该过程由两个对等设备(处理单元) 执行,一个被指定为"领导者"而一个被指定为"跟随者",它们仅使用写入操作来通信。领 导者和跟随者的使用打破了对称性(为了避免在对等设备之间的无休止的"往复")。在一 个实施例中,对于每个处理单元对,这是固定的指定。尽管处理单元中的每一个可以异步地 开始复位同步,但是一旦开始,则跟随者确保在其诸阶段中不进行到超过领导者,直到完成 同步为止。
[0030] 在图2中,在一个实施例中,带圆圈的数字指示对操作排序的限制。在一些情况下 (例如,伴随和"**"出现的数字)对于哪些操作首先发生没有限制。而且,诸个门反 映 "AND (与)"条件,使得在一些情况下,如果既满足了某个内部条
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1