可独立操作的处理器之间错误信息的受控恢复方法和装置的制造方法

文档序号:10488823阅读:598来源:国知局
可独立操作的处理器之间错误信息的受控恢复方法和装置的制造方法
【专利摘要】本公开涉及可独立操作的处理器之间错误信息的受控恢复方法和装置。公开了用于两个或更多个可独立操作的处理器之间的错误信息受控恢复的方法和装置。本公开提供如下的解决方案:在致命错误的情况下保存错误信息,在可独立操作的处理器之间协调重置条件,以及在潜在致命错误范围内实施用于错误信息恢复的一致框架。在一种示例性实施方式中,应用处理器AP和基带处理器BB实施在广泛的崩溃情形中使能错误恢复的中止处理器和掉电处理器序列。在一种变形例中,在AP和BB之间的信号的起效,仅在错误恢复过程成功完成之后使得AP重置BB。
【专利说明】
可独立操作的处理器之间错误信息的受控恢复方法和装置
技术领域
[0001] 本公开总体上涉及消费者电子设备及其网络领域。更具体地,在一个示例性方面, 本公开涉及用于两个(或更多个)可独立操作的处理器之间错误信息的受控恢复的方法和 装置。本公开的各个方面例如涉及,在发生致命错误的情况下保存错误信息、协调可独立操 作的处理器之间的重置条件,以及用于在一系列潜在致命错误范围内执行错误信息恢复的 一致框架。
【背景技术】
[0002] 历史上,大多数计算设备根据个人计算机(PC)范式设计,其中单个处理器主要负 责管理软件执行。然而,计算设备已经显著演进,以适应设计和用途的多样化的生态系统; 此外,处理器技术得到了提高,从而以近商品价格提供相当强的计算能力。在消费者电子产 品(例如,个人无线设备(诸如iPhone)、个人媒体设备(诸如iPad/iPod)以及个人计算机(诸 如MacBook Pro和MacBook Air)的情形中,各种考虑导致利用多个独立处理器操作的设计。
[0003] 例如,在典型的无线设备中,应用处理器(AP)独立于无线基带调制解调器处理器 (BB)而操作。在通常的操作中,无线设备可以取决于特定的应用而选择性地使用AP和BB中 的一个或全部。当AP或BB中的任何一个未被激活使用(或在准备使用中,等等),该处理器处 于休眠状态以减少功耗,等等。从概念上类似的设计范例被用于媒体设备(其中媒体处理器 独立于应用处理器),等等。
[0004] 不幸的是,随着设备的复杂性不断地增加,多个独立处理器之间的协调操作却在 很大程度上被忽视。例如,总线技术已经发展为能够处理更快的数据速率,并提供更高水平 的数据吞吐量。一个这样的例子是快速外围组件互连(PCIe) WCIe历来被用作高速串行计 算机扩展总线技术;PCIe基于与连接每个端点部件(例如,图形卡、存储器等)至根组件 (root complex)(例如,主机处理器)的独立串行链的点对点连接。然而,现有的PCIe技术消 耗相当多的功率,并且不适用于如下设计:其中要求"外围"处理器操作而"主机"处理器处 于休眠状态或反之亦然(所常见的如蜂窝设备、便携式笔记本电脑和/或其它便携式媒体播 放器)。
[0005] 在通常操作中,PCIe总线可能经历例如由未知的消息、软件和/或硬件错误、不稳 定的干扰导致的意外情况。现有的PCIe总线技术在解决意外总线状态方面的可靠性很差。 例如,在某些计算机系统中,PCIe故障导致致命的错误(例如,所谓的"蓝屏死机"),其要求 用户重置该计算机系统。虽然本领域普通技术人员会很容易地理解,有广泛多种意外致命 错误状况的可能来源(例如,设备驱动程序写得不好,内存泄漏,等等),但是应当理解的是 更复杂的硬件、软件和总线拓扑总是增加错误状况的概率。
[0006] 此外,在处理器领域错误恢复的方法被碎片化。例如,某些处理器在意外崩溃事件 中收集和提供错误信息(所谓的"核心转储"文件,和/或调试信息,等等)。其它处理器可能 通过强制其它外设/处理器重新启动(例如,返回已知的操作状态)来尝试恢复系统。还有其 它处理器可能使用所谓的"应急模式",其上电循环整个设备从而完全重置设备环境。因为 软件崩溃可能发生在广泛多种情况下,并且每个处理器不能明确识别其它处理器是否还在 运行,所以在相同设备内的不同处理器可能以随意的方式实施多种不同的方法。例如,在BB 正在尝试收集有用的调试信息时,AP可能重置BB,等等。在这些最坏的情况下,即使可能已 经收集到有用的调试信息,设计工程师也不能确定调试信息是在失败发生之前、期间还是 之后收集到的;在有些情况下,调试信息甚至可能已经被损坏,等等。

【发明内容】

[0007] 本公开通过提供特别是用于两个(或更多个)可独立操作的处理器之间错误信息 的受控恢复的方法和装置,来满足前述需求。
[0008] 在一个方面,公开了一种两个或更多个可独立操作的处理器之间错误信息的受控 恢复的方法。在一种实施方式中,该方法包括:在两个或更多个可独立操作的处理器中的一 个处检测崩溃(crash)事件;起效(assert)第一信号,该第一信号指示所述崩溃事件已经发 生;执行一个或多个错误恢复过程来收集一个或多个错误信息;以及在所述一个或多个错 误恢复过程已经成功完成时,起效第二信号,该第二信号指示所述一个或多个错误恢复过 程已成功完成。
[0009] 在一种变形例中,所述方法包括:响应于所述第二信号的起效,在所述两个或更多 个可独立操作的处理器中的第二处理器处,接收所述收集到的一个或多个错误信息。
[0010]在第二种变形例中,响应于所述指示所述一个或多个错误恢复过程已成功完成的 第二信号的起效,所述方法包括在所述两个或更多个可独立操作的处理器中的所述一个 处,等待接收第三信号,该第三信号配置成重置所述两个或更多个可独立操作的处理器中 在其上所述崩溃事件已发生的那一个。
[0011]在第三种变形例中,所述两个或更多个可独立操作处理器中的至少两个包括总线 接口,并且所述方法还包括根据快速外围组件互连(PCIe)标准经所述总线接口进行通信。 在这种情况下,所述方法还包括:验证PCIe链路的状态;以及在PCIe总线是激活时,遍历 (enumerate)至所述 PCIe总线。
[0012] 在第四种变形例中,起效所述第一信号和第二信号的步骤包括经通用输入/输出 (GPIO)进行起效。
[0013] 在第五种变形例中,在检测到所述崩溃事件时,所述方法包括在起效所述第一信 号的步骤之前,完成一个或多个挂起的输入/输出事务。
[0014] 在本公开的第二方面,公开了一种用于在两个或更多个可独立操作的处理器之间 存储错误信息的方法。在一种实施方式中,该方法包括:使能配置成在所述两个或更多个可 独立操作处理器中的一个处监控崩溃事件的硬件安全机制;指示所述崩溃事件已发生;启 动一个或多个错误恢复过程来存储错误信息;以及在所述错误信息已经被存储时,指示所 述一个或多个错误恢复过程已成功完成。
[0015] 在一种变形例中,在所述一个或多个错误恢复过程已成功完成时,所述方法还包 括禁用所述硬件安全机制。
[0016] 在第二种变形例中,所述方法还包括分析所存储的错误信息。
[0017] 在第三种变形例中,在所述一个或多个总线事务处于挂起状态时,所述方法还包 括解决(resolve)所述一个或多个总线事务。
[0018] 在第四种变形例中,所述解决所述一个或多个总线事务的步骤包括传送传输缓存 器的所有剩余内容。
[0019] 在第五种变形例中,所述解决所述一个或多个总线事务的步骤包括中止所述一个 或多个总线事务。
[0020] 在第三方面,公开了一种配置成在两个或更多个可独立操作的处理器之间恢复错 误信息的计算机化系统。在一种实施方式中,该系统包括:总线接口;第一可独立操作处理 器;以及经所述总线接口与所述第一处理器进行数据通信的第二可独立操作处理器,该第 二处理器包括多个计算机可读指令。在一种此类示例性实施方式中,所述多个计算机可读 指令在由所述第二处理器执行时使得所述第二处理器执行以下操作:检测崩溃事件;起效 配置成向所述第一处理器指示所述崩溃事件已发生的第一信号;执行一个或多个错误恢复 过程来收集一个或多个错误信息;以及在所述一个或多个错误恢复过程已经成功完成时, 起效配置成向所述第一处理器指示所述一个或多个错误恢复过程已成功完成的第二信号。
[0021] 在第一种变形例中,响应于所述第二处理器对所述第二信号的起效,所述第一处 理器配置成取回(retrieve)所述一个或多个错误信息。
[0022]在第二种变形例中,响应于所述第二处理器对所述第二信号的起效,所述第一处 理器配置成禁用所述总线接口以及重置所述第二处理器。
[0023] 在第三种变形例中,所述第一处理器包括应用处理器,而所述第二处理器包括基 带处理器。
[0024]在第四种变形例中,所述总线接口包括快速外围组件互连(PCIe)总线。
[0025] 在第五种变形例中,所述第二处理器还包括中止处理器。
[0026] 在第四方面,公开了一种配置为在两个或更多个可独立操作的处理器之间存储错 误信息的装置。在一种实施方式中,该装置包括:配置成耦接第一处理器和第二处理器的物 理总线接口;以及包括多个指令的计算机可读介质。在一种示例性实施方式中,所述计算机 可读介质在由所述第二处理器执行时使得所述第二处理器执行以下操作:使能配置成在所 述第二处理器处监控崩溃事件的硬件安全机制;向所述第一处理器指示所述崩溃事件已发 生;启动一个或多个错误恢复过程以存储错误信息;以及在已经存储了所述错误信息时,向 所述第一处理器指示所述一个或多个错误恢复过程已经成功完成。
[0027] 在一种变形例中,所述多个指令还配置成,在其被执行时,在所述一个或多个错误 恢复过程已成功完成时进入循环来等待更进一步的指令。在这种情况下,所述多个指令还 配置成,在其被执行时,使得重置所述第二处理器。
[0028] 在另一种变形例中,所述多个指令还配置成,在其被执行时,在使能所述硬件安全 机制之前完成未完成的总线事务。
[0029] 通过参考附图和以下给出的对示例性实施方式的详细描述,本领域普通技术人员 会立即认识到本公开的其它特性和优点。
【附图说明】
[0030] 图1是表示用于例示本文所描述的各种原理的一个示例性装置的逻辑框图。
[0031] 图2是表示用于例示本文所描述的各种原理的一个示例性物理总结接口的逻辑框 图。
[0032]图3是根据本公开原理用于处理中止序列的一种示例性方法的逻辑流程图。
[0033]图4是根据本公开原理用于处理掉电(power down)序列的示例性方法的逻辑流程 图。
[0034]图5是根据本公开原理的表示错误恢复过程的一个逻辑梯形图的逻辑流程图。
【具体实施方式】
[0035]现在参考附图,附图中相似的标号指代相似的部分。
[0036]对示例性实施方式的详细描述
[0037]现在详细描述本公开的示例性实施方式。虽然主要在快速外围组件互连(PCIe)标 准(例如,如2014 年 10 月8 日公布的 "PCI Express Base Specification Revision 3.1" 所 述)的背景下讨论这些实施方式,但是普通技术人员应当认识到本公开不限于此。事实上, 本公开的各个方面可用于配置成合并和协调如在此所公开的多个独立处理元件的任何设 备或设备网络。
[0038] 虽然以下实施方式描述例如错误信息、可独立操作处理器之间的通信协议以及用 于在潜在致命错误范围内进行错误信息恢复的一致框架的特定的实现,但是本领域普通技 术人员会很容易地理解,此类描述只是为了说明本文中所描述的更广泛的原理。
[0039] 示例性独立处理器操作_
[0040] 现在描述使能两个(或更多个)可独立操作处理器之间错误信息的受控恢复的方 法和装置。理想的解决方案在致命错误的情况下保存错误信息,在可独立操作处理器之间 协调重置条件,并且实现用于在潜在致命错误范围进行错误信息恢复的一致框架。参照"根 组件"(RC)(或"主机")处理器、以及"端点"(EP)(或"外设")处理器描述以下讨论。出于在下 文中将变得显见的原因,应当理解,指定主机或外设处理器是用于简化和/或阐明以下解 释,并不意味着现有主机或外设的功能。
[0041] 如本文所用,术语"逻辑"或"虚拟"可以互换使用来指代作为数据结构来表示物理 机制、属性或功能的抽象(通常在软件或机器逻辑中执行)。例如,"逻辑总线接口","虚拟总 线接口"等,通常指代作为一系列数据结构的总线接口的抽象或表示。相反,如本文所用"物 理总线接口"指代物理有形总线接口的物理机制、属性或功能。
[0042] 示例性装置-
[0043]图1例示了一种用于例示本文所描述的各种原理的示例性装置100。如所示,装置 100包括第一和第二处理器(102A,102B),以及配置成在两个(或更多个)可独立操作处理器 之间实施通信链路的物理总线接口 104。
[0044] 在一种实施方式中,第一处理器102A包括应用处理器(AP)。如图1所示,第一处理 器102A耦接至根组件(RC)106A,该根组件用作通信链路的主机。在一种实施方式中,第二处 理器102B包括无线调制解调器基带(BB)。在其它实施方式中,第二处理器102B可以是例如 媒体处理器,或其它网络处理元件。如图1中所示,第二处理器102B耦接至端点(EPH06B,该 端点用作通信链路的外设。
[0045]如所示,第一和第二处理器(102A,102B)每一个都耦接至非暂态计算机可读介质 (例如,随机存取存储器(RAM)) (108A,108B)。该非暂态计算机可读介质配置成存储用于执 行的计算机可读指令。如本文所用,术语"存储器"包括任何类型的适配为存储数字数据的 集成电路或其它存储设备,其包括但不限于ROM、PROM、EEPROM、DRAM、SDRAM、DDR/2 SDRAM、 EDO/FPMS、RLDRAM、SRAM、"闪速"存储器(例如NAND/NOR),以及PSRAM。在有些情况下,第一 和/或第二处理器可以具备相关联的非易失性存储器11〇(例如,闪存),其配置为存储计算 机可读指令,以及在没有上电的情况下保持存储的计算机可读指令。
[0046] 在一种示例性实施方式中,第一处理器102A和相关联的存储器108A配置成管理第 二处理器,发送和接收中断,主持处理器间的通信(经通信链路),以及操作为通信总线的根 组件。相反,第二处理器102B和相关联的存储器108B配置成操作为通信总线的端点(EP)Jt 为从设备来响应处理器间的通信,起效(assert)和失效(deassert)GPIO,以及处理各种中 止情况。此外,第二处理器102B可以用各种处理性能操作(例如,作为用于无线调制解调器 的基带处理器),以及/或者管理多个子系统(例如,音频编解码器、显示驱动器、管理无线调 制解调器部件,等等)。
[0047]如图2所示,一种实施方式的物理总线接口 104松散地基于快速外围组件互连 (PCIe)标准(例如,如2014年10月8 日公布的 "PCI Express Base Specification Revision 3· Γ所述,以及2012年8月23日通过的"ECN LlPM Substates with CLKREQ",其全部内容通 过引用并入于此)。本文随后将更具体地描述对传统PCIe物理总线接口 104(和与其使用的 协议)进行改进来支持崩溃恢复功能。本领域普通技术人员,鉴于本公开的内容,会很容易 地理解可以以其它总线接口标准同样成功地取代。例如,可以修改PCIe接口作为处理器间 通信(IPC)链路来操作,如在如上之前并入的于2014年10月8日提交的题为"METHODS AND APPARATUS FOR AN INTER-PROCESSOR ⑶MMUNICATI0N LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS"的共同拥有且共同未决的美国临时专利申请第62/061,605号中所 述。
[0048]在示例性实施方式中,物理总线接口 104是两个PCIe端口(RC和EP)之间点对点的 通信信道,其允许两个端口发送/接收访问请求(配置读/写、1/0读/写、存储器读/写)和中 断。在物理层,链路由一个或多个通道(如图2所示的一个通道)组成,每个通道具备接收和 发送部件(pcie_rx,p Cie_tX)。每个通道都是全双工字节流,在链路的RC和EP之间双向同时 以八位"字节"格式传输数据包。物理链路104能够支持代表多个正在进行的数据会话的多 个逻辑链路(或虚拟总线接口)。
[0049]此外,物理总线接口 104还包括使能崩溃恢复的三(3)个信号。在一种示例性实施 方式中,经通用输入/输出(GP10)实施信号:(i)BB_PMU_RST GP10,( i i)BB_RST GP10,以及 (i ii )RESET_DET GPKLBB.PMILRST GPIO是从RC到EP的GPIO,当其被触发(toggle)时使得 EP掉电。BB_RST GPIO是从RC到EP的GPI0,当其被触发时使得EP重置。从EP提供RESET_DET GPIO到RC,并且在EP重置的时候起效RESET_DET GPI0。在一种实施方式中,PCIe WAKE#GPI0 从EP被提供到RC作为PCIe接口的一部分,但它是额外"超载的"以便于在EP已经结束了其自 身的错误恢复过程(例如,成功存储了核心转储至RAM)的时候被起效。替代实施方式可以献 出GPIO用于起效错误恢复过程的成功完成。
[0050] 示例性引导处理、以及休眠/唤醒过程-
[0051] 作为简短的插入,本文提供了用于与示例性装置100相结合的一种引导序列的简 要总结。出于简明和清楚的需要,以下讨论既不广泛也不排他,并且本领域普通技术人员会 很容易地理解,可以很容易地以其它用于引导多个独立处理器的方案取代,提供以下内容 以便于下文详细描述的随后过程的应用。
[0052] 在上电或重置时,装置100初始化第二处理器102B(BB),第二处理器取回首要引导 加载器(PBL)非易失性存储器,例如板载只读存储器(ROM)(或其它闪存)。同时(或在BB引导 序列之前),第一处理器102A(AP)初始化、启动和运行它的操作系统(0S)。
[0053] 一旦BB 102B成功上电(或被唤醒,等等),AP 102A给物理总线接口 104(例如,PCIe 总线)上电并遍历链路。在一种示例性实施中,AP 102A通过PCIe总线104遍历自身和BB处理 器102B。当成功遍历时,AP取回BB辅助引导加载器(SBL),并经PCIe总线发送其至BB 接收 SBL并从SBL响应性地启动。
[0054] 一旦BB 102B开始执行SBL,AP 102A通过物理总线接口 104取来BB 102B的最终软 件映像并发送其至BB 102B。随后,BB 102B执行它的最终软件映像(例如,操作系统(OS))。 在引导程序结束之时,AP和BB都运行它们相应的0S。
[0055] 正如前面间接提到的,AP和BB是能够各自分别进入/退出休眠模式的独立操作的 处理器。在有些实施方式中,当AP处于休眠中时,通信链路被断开。在其它实施方式中,当AP 或BB中的任何一个(或两者)处于休眠状态时,通信链路被断开。通信链路在唤醒时重新遍 历以使能通信。不幸的是,在现有的现有技术设计中,AP假定遍历总是成功的;由此,如果BB 以一种意料之外的方式响应,则AP自动进入"应急模式"(即,为了重置到已知的条件,AP上 电循环整个设备),因为AP不能确定其自身或BB是否处于一种未知状态。从客户的角度来 说,显然可见这是非常不希望的结果。
[0056] 从实践的角度来说,BB不能成功遍历(导致不受欢迎的"应急模式")的原因很多。 例如,BB可能在所谓的"中止处理器"操作期间不响应。在一种类似的实施中,BB由多个子系 统(例如,无线调制解调器、编解码器、电源管理等)组成;尽管这些子系统中的每一个通常 都足够稳健,但预测/消除软件/硬件中所有的"缺陷"是不经济的。结果是,示例性BB软件包 括中止处理器,其配置成在故障被观察到时收集调试信息。特别地,一种调试信息是所谓的 "核心转储",其中处理器将执行存储器的内容复制到非执行空间,以便其随后能够被分析。 一旦成功存储核心转储,BB执行空指令直至另有指示(例如,在whi Ie循环中"自旋 (spin)")。");其后,AP可以重置BB,并作为TOL/SBL处理的一部分取回核心转储。不幸的是, 当取回/存储核心转储时(这可以是几秒钟的量级)BB不会响应PCIe命令;换句话说,如果AP 尝试在崩溃开始与空指令执行之间的间隔去遍历BB,那么BB将不会响应并且AP会触发应急 模式响应。
[0057]本公开的各种实施方式适用于任何部件系统,其中主机处理器未意识到从处理器 已崩溃。更普遍地,本领域普通技术人员会很容易地理解,本文所描述的原理可广泛地适用 于任何系统,其中两个(或更多个)可独立操作处理器中的一个处理器必须与其它处理器协 作来恢复错误信息(例如,核心转储、调试日志等)。
[0058] 示例性框架-
[0059]表1例示了一种用于与图1的示例性装置相结合的示例性框架。如所示,该框架识 别由应用处理器(AP)和基带(BB)实施的适当行动。
[0061] 表1
[0062] 现在更详细地描述在表1中汇总的各种实体。
[0063] 中止处理器-
[0064]图3例示了用于处理中止序列的示例性方法300的一种逻辑流程图。
[0065]在方法300的步骤302处,中止处理器保证所有(如果有的话)进行中的PCIe总线事 务完成。在有些情况下,这可能包括完成传送传输缓存器的剩余内容,在其它情况下,以期 望的方式(例如,通过根据预定义的协议终止该传送,等等)简缩该传送。在还有的其它实施 方式中,可以通过发送终止信号和/或数据包等来中止传送。
[0066]在步骤304处,中止处理器使能硬件看门狗。如本文随后更详细描述的,硬件看门 狗是专门的硬件安全机制,用以保证甚至是在软件未能响应的情况下,处理器能够通过重 置自身返回已知状态。
[0067] 在步骤306处,中止处理器收集PCIe调试信息,并存储总线错误信息至非执行存储 器用于随后分析。相对于执行存储器在重置过程中不会被保存(例如,其在执行过程中可能 被覆盖,等等);非执行存储器可以被保存,并因此甚至是在系统被重置以后还能够恢复错 误信息。
[0068] 在步骤308处,中止处理器失效PCIe WAKE#GPI0并起效RESET_DET GPI0,从而向AP 指示BB已崩溃。正如前面间接提到的,通过BB起效RESET_DET GPIO来指示崩溃事件的发生, 由此允许AP来防止与BB进一步的事务联系。然而,BB在崩溃的情况下额外执行重要的错误 恢复任务,由此过载WAKE#GPI0来向AP指示BB已经完成了它的错误恢复任务。通过失效 WAKE#GPI0,BB向AP指示错误恢复任务还在进行中。
[0069]在步骤310处,中止处理器检查PCIe链路状态。如果该链路关闭,那么它等待 PERST#失效达预定时间;如果经过了该预定时间,随后中止处理器继续进行至下一步(步骤 312)。否则,如果PERST#失效,那么中止处理器使能PCIe总线时钟用于遍历(再遍历)。
[0070] 其后,中止处理器从例如基带核心、子系统等收集调试信息,并存储调试信息至非 执行存储器用于随后分析(步骤312)。
[0071] 一旦调试信息被正确存储,中止处理器就起效WAKE#GPI0(步骤314),禁用硬件看 门狗(步骤316),并执行空指令(例如,在while循环中自旋)直至另有指示。通过起效WAKE# GPI0,BB向AP指示其已完成错误恢复过程。
[0072] 在一种示例性实施方式中,方法300(或其中一部分)以指定的时间限制(例如,最 大/最小持续时间)为界。例如,在一种此类的实现中,从BB开始执行中止处理器(时刻302) 时开始到基带检查PCIe链路状态(步骤310)时结束的时间间隔,要求不超过10毫秒(ms)。
[0073] 简单来说,AP配置成经RESET_DET GPIO起效来检测基带崩溃,并且还经WAKE#GPI0 起效来检测BB何时完成它的错误恢复过程。仅在错误恢复过程成功完成之后,AP起效BB_ RST GPIO,使得对BB进行重置。
[0074] 掉电处理器-
[0075]图4例示了用于处理掉电序列的示例性方法400的一种逻辑流程图。在有些实施方 式中,掉电处理器被并入中止处理器中;另选地,掉电处理器可物理地或逻辑地区别于中止 处理器。
[0076]当经从AP发送的命令关闭BB的电源时,BB会执行它的掉电处理器。首先掉电处理 器保证所有(如果有的话)正在进行的PCIe总线事务完成(步骤402)。
[0077] 在步骤404处,掉电处理器使能硬件开门狗定时器。在一种变形例中,如果PCIe链 路在开门狗失效之前是开启的,那么AP会检测由重置引起的PCIe链路关闭事件。
[0078]在步骤406中,BB用信号通知基带崩溃已经发生。在一种实施方式中,BB起效 RESET_DET GPIO并失效WAKE#GPI0。
[0079]在步骤408中,BB静默任何现有的运行进程并执行错误恢复。更普遍地,BB暂停、停 止、悬置或者以其它方式改变正在运行的进程的状态,以便防止对执行存储器的进一步改 变。在有些变形例中,BB可以额外地存储执行存储器的内容至非执行存储器用于后续分析。 在有些情况下,BB完成未完成的写入/读出。在其它的实施中,未完成的写入/读出被清除。 鉴于本公开的内容,本领域普通技术人员会很容易地理解多种其它用于在预期崩溃恢复中 稳定计算机进程的执行的方案。
[0080] 在步骤410处,一旦BB完成静默操作,BB就起效PCIe WAKE#GPI0来指示错误恢复已 经成功完成。此后,BB可以禁用硬件开门狗定时器并在while循环中自旋(或者其它形式的 空命令执行)。
[0081 ] 一旦AP检测到WAKE#和RESET_DET GPIO都已起效,AP就经BB_PMU_RST GPIO关闭BB 的电源。
[0082] 常见崩溃情形-
[0083]回头参考表1,现在更详细地描述多种常见崩溃情形。
[0084] 首先,在软件崩溃的情况下,BB进入它的中止处理器。在AP和BB之间的PCIe链路状 态保持不变。BB执行中止处理器,并起效RESET_DET GPI0。其后,当AP检测到BB崩溃以及BB 中止处理器序列成功完成(例如,经RESET_DET和WAKE#起效)时,那么AP通过首先关闭PCIe 端口的电源、经BB_RST GPIO复位BB、并且随后打开PCIe端口的电源来重置BB。然后BB会在 ROM内通过PCIe响应性地遍历,并且AP可以随后收集核心转储。
[0085]同样地,某些崩溃可以因硬件开门狗失效而出现。硬件开门狗是配置成如果它的 定时器被允许到期则重置BB的专门硬件部件。在通常操作期间,看门狗的定时器在其运行 完全关闭之前被处理器定期重置;然而,当处理器处于未知状态且不能重置看门狗时,那么 看门狗定时器到期并重置处理器。这导致处理器重新执行它的ROM。在示例性实施方式中, 当BB被重置时,AP会检测到PCIe链路关闭事件(如果该PCIe链路是激活的)。相应地,AP等待 直到BB中止处理器序列成功完成(例如,经RESET_DET和WAKE#起效),并且其后AP通过首先 关闭PCIe端口的电源、经BB_RST GPIO复位BB、以及随后打开PCIe端口的电源来重置 于前面提到的软件崩溃,AP可以随后收集核心转储。
[0086]在有些情况下,AP可以明确地触发软件重置或关机。在这些情形下,BB执行它的掉 电处理器并且PCIe链路保持可操作。其后,AP使PCIe链路掉电,并随后经BB_RST GPIO重置 BB,或者经BB_PMU_RST使BB掉电。
[0087] 如表1中所示,有多种解决PCIe链路故障的情形。例如,在有些实施方式中,针对BB 的默认行为是在PCIe链路故障的情况下执行中止处理器。在进入中止处理器的时候,BB起 效RESET_DET GPIO,这使得AP将PCIe链路故障当做BB崩溃。对于前面提到的情形,AP在重置 PCIe链路、重新遍历BB并取回核心转储等之前会等待BB去完成中止处理器执行。在这种情 形下,AP可以从EP接口(在BB内)取回错误信息,然而AP可能不能取回RC内的错误信息。
[0088] 另选地,在有些特定情况下,BB在PCI e链路故障期间可以保持在操作系统(OS)内。 例如,AP可以配置BB保持在OS内以便协助AP的软件调试。在这些情形中,BB不会起效RESET_ DET GPIO(指示BB没有处于重置中)。在主机上的IPC驱动器会检测PCIe链路故障以及BB没 有重置。结果是,AP会触发应急模式以允许在RC上对PCIe链路的调试。在这些情形中,因为 BB不执行它的中止处理器功能,所以所有的BB错误信息丢失。
[0089]此外,还有其中PCIe链路独立于AP或BB而故障的情形。例如,在有些情况下,当BB 还在正常运行时(例如,如通过RESET_DET GPIO保持失效来证明),AP可以通过PCIe链路检 测完成超时。在这里,AP IPC驱动器会明确地关闭PCIe端口的电源。BB会识别PCIe链路故 障,以及要么:(1)执行中止处理器;要么还可以(2)停留在OS内(取决于配置)。其后,AP会视 完成超时为致命基带错误,并触发基带重置。
[0090] 相反地,在BB通过PCIe链路检测到完成超时的情况下,在默认操作下BB会进入中 止处理器并起效RESET_DET GPI0。其后AP可以视故障为BB崩溃。正如先前所指出的,默认操 作使得AP能够基于在EP接口内的错误信息调试链路级问题,然而RC内的信息却丢失了。另 选地,如果BB配置成保持在OS内用以辅助AP调试,那么BB会在不起效RESET_DET GPIO的情 况下明确导致PC I e链路故障。AP会检测链路故障并失效RESET_DET GP10;结果AP会触发应 急模式。在这种崩溃情形中,AP可以调试RC接口但会丢失存储在EP内的信息(因为BB中止处 理器未被执行)。
[0091] 如果AP检测到PCIe完成中止(例如,致命错误),那么AP会触发应急模式。如果BB检 测到PCIe完成中止,那么BB会执行中止处理器;AP会把故障当作BB崩溃。
[0092] 示例性操作-
[0093]现在参考图5,例示了根据本公开的表示错误恢复过程的一种逻辑梯形图。如所 示,应用处理器(AP)(主机)包括如下逻辑实体:(i)基带管理器502,(ii)中断控制器504; (iii)主机处理器间通信(IPC)驱动器506,以及(iv)根组件(RC)接口508。基带处理器(BB) (从设备)包括:⑴端点(EP)接口510,(ii)EP IPC驱动器512,(iii)GPI0控制器514,(iv)中 止处理器516,(V)基带核心518,以及(vi)多个子系统520(例如,音频、显示器、无线调制解 调器等)。
[0094]在操作过程中一些意外时刻,BB崩溃(时刻550)。通常,软件崩溃由来自子系统520 其中之一的意外行为来证实(例如,错误的存储器存取、不响应的总线访问,等等)。相应地, 基带核心518跳转至它的中止处理器序列,该序列使能硬件看门狗。硬件看门狗保证如果中 止处理器516不能适合地完成它的任务,那么BB会被强制进入重置。如所示,中止处理器516 必须完成所有挂起的输入/输出事务,并收集调试信息。中止处理器的成功完成失效WAKE# 并起效RESET_DET GPIO。
[0095] RESET_DET GPIO的起效向AP指示BB已崩溃(时刻552),并且不应该启动与BB进一 步的事务;然而,在对PCIe总线掉电并重置基带核心518之前,AP等待直至基带重置完成(时 刻554)。
[0096]在基带核心518被重置之后,其执行它的ROM的内容。同时,在执行首要引导加载器 (I3BL)和辅助引导加载器(SBL)引导协议之前,AP给PCIe总线上电并等待PCIe遍历。其后,AP 可以安全地收集核心转储556。
[0097]回头参考在基带重置检测(时刻552)和基带重置完成(时刻554)之间的时间间隔, 中止处理器516被允许去验证PCIe链路状态,并且如果PCIe总线是激活的,则遍历至PCIe总 线。无论如何,中止处理器516能够从每个子系统520收集调试信息。一旦中止处理器516成 功地收集到调试信息(例如,核心转储),中止处理器516就起效WAKE#(指示基带重置完成)。 随后,中止处理器禁用硬件看门狗并执行空命令。
[0098] 更普遍地,不同于现有的不协调错误恢复过程的解决方案,本公开的多种实施方 式在以下两种情况下均提供指示:当崩溃发生时和当与崩溃相关联的错误恢复完成时。用 这种方式,在其能够恢复和存储相关错误信息之前,系统的其它处理器不重置崩溃的处理 器。
[0099] 应当认识到,虽然就特定的方法步骤序列描述了本公开的特定实施方式,但是这 些描述仅仅是例示本文所描述的更广泛的方法,并且可以根据特定应用所需进行修改。在 某些情况下某些步骤可以是不必要的或可选的。此外,某些步骤或功能可以被加入已公开 的实施方式,或者交换两个或更多个步骤的执行顺序。所有这类变动被认为已包含在本公 开和权利要求中。
[0100] 虽然以上详细描述已经示出、描述并指出适应于各种实施方式的新颖特征,但是 应当理解的是,可以由本领域技术人员在不偏离本文所述的原理的情况下对所示设备或处 理的形式和细节做出各种省略、替换和变化。前述描述是目前所能构想的最好模式。该描述 决不意味着限制,而是应当被视为对本文中所描述的一般原则的说明。本公开的范围应当 参照权利要求来确定。
[0101]优先权申请
[0102] 本申请要求于2015年9月30日提交的相同发明名称的共同拥有且共同未决的美国 专利申请第14/870,923号的优先权益,该美国专利申请第14/870,923号要求于2015年2月4 日提交的相同发明名称的共同拥有且共同未决的美国临时专利申请第62/112,061号的优 先权益,以上每个专利申请的全部内容都通过引用并入于此。
[0103] 相关申请
[0104] 本申请还涉及于2014年10月8日提交的题为"METHODS AND APPARATUS FOR AN INTER-PROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS" 的共同拥有和共同未决的美国临时专利申请第62/061,605号,以上专利申请的全部内容通 过引用并入于此。
【主权项】
1. 一种用于两个或更多个可独立操作的处理器之间的错误信息的受控恢复的方法,所 述方法包括: 在所述两个或更多个可独立操作的处理器中的一个处理器处,检测崩溃事件; 起效第一信号,所述第一信号指示所述崩溃事件已经发生; 执行一个或多个错误恢复过程来收集一个或多个错误信息;以及 在所述一个或多个错误恢复过程已经成功完成时,起效第二信号,所述第二信号指示 所述一个或多个错误恢复过程已经成功完成。2. 如权利要求1所述的方法,还包括: 响应于所述第二信号的起效,在所述两个或更多个可独立操作的处理器中的第二处理 器处,接收所收集到的一个或多个错误信息。3. 如权利要求1所述的方法,还包括:响应于指示所述一个或多个错误恢复过程已成功 完成的所述第二信号的起效,在所述两个或更多个可独立操作的处理器中的所述一个处理 器处等待接收第三信号,所述第三信号配置成重置所述两个或更多个可独立操作的处理器 中已发生崩溃事件的那一个处理器。4. 如权利要求1所述的方法,其中所述两个或更多个可独立操作的处理器中的至少两 个处理器包括总线接口,并且 所述方法还包括:根据快速外围组件互连PCI e标准经所述总线接口进行通信。5. 如权利要求4所述的方法,还包括: 验证PCIe链路的状态;以及 在PCIe总线是激活的情况下,遍历至所述PCIe总线。6. 如权利要求1所述的方法,其中起效所述第一信号和第二信号的步骤包括经通用输 入/输出GPIO进行起效。7. 如权利要求1所述的方法,还包括,在检测到所述崩溃事件时,在起效所述第一信号 的步骤之前完成一个或多个挂起的输入/输出事务。8. -种用于在两个或更多个可独立操作的处理器之间存储错误信息的方法,所述方法 包括: 使能配置成在所述两个或更多个可独立操作的处理器中的一个处理器处监控崩溃事 件的硬件安全机制; 指示所述崩溃事件已经发生; 启动一个或多个错误恢复过程来存储错误信息;以及 在所述错误信息已被存储的情况下,指示所述一个或多个错误恢复过程已经成功完 成。9. 如权利要求8所述的方法,还包括:在所述一个或多个错误恢复过程已经成功完成 时,禁用所述硬件安全机制。10. 如权利要求8所述的方法,还包括:分析所存储的错误信息。11. 如权利要求8所述的方法,还包括:在一个或多个总线事务处于挂起状态时,解决所 述一个或多个总线事务。12. 如权利要求11所述的方法,其中,所述解决所述一个或多个总线事务的步骤包括传 送传输缓存器中所有的剩余内容。13. 如权利要求11所述的方法,其中,所述解决所述一个或多个总线事务的步骤包括中 止所述一个或多个总线事务。14. 一种配置成在两个或更多个可独立操作的处理器之间恢复错误信息的计算机化系 统,所述系统包括: 总线接口; 可独立操作的第一处理器;以及 可独立操作的第二处理器,所述第二处理器经所述总线接口与所述第一处理器进行数 据通信,所述第二处理器包括多个计算机可读指令,所述多个计算机可读指令在由所述第 二处理器执行时使得所述第二处理器执行以下操作: 检测崩溃事件; 起效第一信号,所述第一信号配置成向所述第一处理器指示所述崩溃事件已发生; 执行一个或多个错误恢复过程来收集一个或多个错误信息;以及 在所述一个或多个错误恢复过程已经成功完成时,起效第二信号,所述第二信号配置 成向所述第一处理器指示所述一个或多个错误恢复过程已成功完成。15. 如权利要求14所述的系统,其中,响应于所述第二处理器对所述第二信号的起效, 所述第一处理器配置成取回所述一个或多个错误信息。16. 如权利要求14所述的系统,其中,响应于所述第二处理器对所述第二信号的起效, 所述第一处理器配置成禁用所述总线接口并重置所述第二处理器。17. 如权利要求14所述的系统,其中,所述第一处理器包括应用处理器,并且所述第二 处理器包括基带处理器。18. 如权利要求14所述的系统,其中,所述总线接口包括快速外围组件互连PCIe总线。19. 如权利要求14所述的系统,其中,所述第二处理器还包括中止处理器。20. -种配置成在两个或更多个可独立操作的处理器之间存储错误信息的装置,所述 装置包括: 用于耦接第一处理器与第二处理器的部件;以及 用于使能配置成在所述第二处理器处监控崩溃事件的硬件安全机制的部件; 用于向所述第一处理器指示所述崩溃事件已发生的部件; 用于启动一个或多个错误恢复过程来存储错误信息的部件;以及 用于在所述错误信息已被存储时向所述第一处理器指示所述一个或多个错误恢复过 程已经成功完成的部件。21. 如权利要求20所述的装置,还包括:用于在所述一个或多个错误恢复过程已成功完 成的情况下进入循环来等待进一步指令的部件。22. 如权利要求21所述的装置,还包括:用于重置所述第二处理器的部件。23. 如权利要求20所述的装置,还包括:用于在使能所述硬件安全机制之前完成未完成 的总线事务的部件。
【文档编号】G06F11/07GK105843694SQ201610074922
【公开日】2016年8月10日
【申请日】2016年2月3日
【发明人】K·桑吉, S·加格, V·派科夫, 张海宁
【申请人】苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1