可獨立操作的處理器之間錯誤信息的受控恢復(fù)方法和裝置的制造方法
【專利摘要】本公開涉及可獨立操作的處理器之間錯誤信息的受控恢復(fù)方法和裝置。公開了用于兩個或更多個可獨立操作的處理器之間的錯誤信息受控恢復(fù)的方法和裝置。本公開提供如下的解決方案:在致命錯誤的情況下保存錯誤信息,在可獨立操作的處理器之間協(xié)調(diào)重置條件,以及在潛在致命錯誤范圍內(nèi)實施用于錯誤信息恢復(fù)的一致框架。在一種示例性實施方式中,應(yīng)用處理器AP和基帶處理器BB實施在廣泛的崩潰情形中使能錯誤恢復(fù)的中止處理器和掉電處理器序列。在一種變形例中,在AP和BB之間的信號的起效,僅在錯誤恢復(fù)過程成功完成之后使得AP重置BB。
【專利說明】
可獨立操作的處理器之間錯誤信息的受控恢復(fù)方法和裝置
技術(shù)領(lǐng)域
[0001] 本公開總體上涉及消費者電子設(shè)備及其網(wǎng)絡(luò)領(lǐng)域。更具體地,在一個示例性方面, 本公開涉及用于兩個(或更多個)可獨立操作的處理器之間錯誤信息的受控恢復(fù)的方法和 裝置。本公開的各個方面例如涉及,在發(fā)生致命錯誤的情況下保存錯誤信息、協(xié)調(diào)可獨立操 作的處理器之間的重置條件,以及用于在一系列潛在致命錯誤范圍內(nèi)執(zhí)行錯誤信息恢復(fù)的 一致框架。
【背景技術(shù)】
[0002] 歷史上,大多數(shù)計算設(shè)備根據(jù)個人計算機(PC)范式設(shè)計,其中單個處理器主要負 責管理軟件執(zhí)行。然而,計算設(shè)備已經(jīng)顯著演進,以適應(yīng)設(shè)計和用途的多樣化的生態(tài)系統(tǒng); 此外,處理器技術(shù)得到了提高,從而以近商品價格提供相當強的計算能力。在消費者電子產(chǎn) 品(例如,個人無線設(shè)備(諸如iPhone)、個人媒體設(shè)備(諸如iPad/iPod)以及個人計算機(諸 如MacBook Pro和MacBook Air)的情形中,各種考慮導(dǎo)致利用多個獨立處理器操作的設(shè)計。
[0003] 例如,在典型的無線設(shè)備中,應(yīng)用處理器(AP)獨立于無線基帶調(diào)制解調(diào)器處理器 (BB)而操作。在通常的操作中,無線設(shè)備可以取決于特定的應(yīng)用而選擇性地使用AP和BB中 的一個或全部。當AP或BB中的任何一個未被激活使用(或在準備使用中,等等),該處理器處 于休眠狀態(tài)以減少功耗,等等。從概念上類似的設(shè)計范例被用于媒體設(shè)備(其中媒體處理器 獨立于應(yīng)用處理器),等等。
[0004] 不幸的是,隨著設(shè)備的復(fù)雜性不斷地增加,多個獨立處理器之間的協(xié)調(diào)操作卻在 很大程度上被忽視。例如,總線技術(shù)已經(jīng)發(fā)展為能夠處理更快的數(shù)據(jù)速率,并提供更高水平 的數(shù)據(jù)吞吐量。一個這樣的例子是快速外圍組件互連(PCIe) WCIe歷來被用作高速串行計 算機擴展總線技術(shù);PCIe基于與連接每個端點部件(例如,圖形卡、存儲器等)至根組件 (root complex)(例如,主機處理器)的獨立串行鏈的點對點連接。然而,現(xiàn)有的PCIe技術(shù)消 耗相當多的功率,并且不適用于如下設(shè)計:其中要求"外圍"處理器操作而"主機"處理器處 于休眠狀態(tài)或反之亦然(所常見的如蜂窩設(shè)備、便攜式筆記本電腦和/或其它便攜式媒體播 放器)。
[0005] 在通常操作中,PCIe總線可能經(jīng)歷例如由未知的消息、軟件和/或硬件錯誤、不穩(wěn) 定的干擾導(dǎo)致的意外情況?,F(xiàn)有的PCIe總線技術(shù)在解決意外總線狀態(tài)方面的可靠性很差。 例如,在某些計算機系統(tǒng)中,PCIe故障導(dǎo)致致命的錯誤(例如,所謂的"藍屏死機"),其要求 用戶重置該計算機系統(tǒng)。雖然本領(lǐng)域普通技術(shù)人員會很容易地理解,有廣泛多種意外致命 錯誤狀況的可能來源(例如,設(shè)備驅(qū)動程序?qū)懙貌缓茫瑑?nèi)存泄漏,等等),但是應(yīng)當理解的是 更復(fù)雜的硬件、軟件和總線拓撲總是增加錯誤狀況的概率。
[0006] 此外,在處理器領(lǐng)域錯誤恢復(fù)的方法被碎片化。例如,某些處理器在意外崩潰事件 中收集和提供錯誤信息(所謂的"核心轉(zhuǎn)儲"文件,和/或調(diào)試信息,等等)。其它處理器可能 通過強制其它外設(shè)/處理器重新啟動(例如,返回已知的操作狀態(tài))來嘗試恢復(fù)系統(tǒng)。還有其 它處理器可能使用所謂的"應(yīng)急模式",其上電循環(huán)整個設(shè)備從而完全重置設(shè)備環(huán)境。因為 軟件崩潰可能發(fā)生在廣泛多種情況下,并且每個處理器不能明確識別其它處理器是否還在 運行,所以在相同設(shè)備內(nèi)的不同處理器可能以隨意的方式實施多種不同的方法。例如,在BB 正在嘗試收集有用的調(diào)試信息時,AP可能重置BB,等等。在這些最壞的情況下,即使可能已 經(jīng)收集到有用的調(diào)試信息,設(shè)計工程師也不能確定調(diào)試信息是在失敗發(fā)生之前、期間還是 之后收集到的;在有些情況下,調(diào)試信息甚至可能已經(jīng)被損壞,等等。
【發(fā)明內(nèi)容】
[0007] 本公開通過提供特別是用于兩個(或更多個)可獨立操作的處理器之間錯誤信息 的受控恢復(fù)的方法和裝置,來滿足前述需求。
[0008] 在一個方面,公開了一種兩個或更多個可獨立操作的處理器之間錯誤信息的受控 恢復(fù)的方法。在一種實施方式中,該方法包括:在兩個或更多個可獨立操作的處理器中的一 個處檢測崩潰(crash)事件;起效(assert)第一信號,該第一信號指示所述崩潰事件已經(jīng)發(fā) 生;執(zhí)行一個或多個錯誤恢復(fù)過程來收集一個或多個錯誤信息;以及在所述一個或多個錯 誤恢復(fù)過程已經(jīng)成功完成時,起效第二信號,該第二信號指示所述一個或多個錯誤恢復(fù)過 程已成功完成。
[0009] 在一種變形例中,所述方法包括:響應(yīng)于所述第二信號的起效,在所述兩個或更多 個可獨立操作的處理器中的第二處理器處,接收所述收集到的一個或多個錯誤信息。
[0010]在第二種變形例中,響應(yīng)于所述指示所述一個或多個錯誤恢復(fù)過程已成功完成的 第二信號的起效,所述方法包括在所述兩個或更多個可獨立操作的處理器中的所述一個 處,等待接收第三信號,該第三信號配置成重置所述兩個或更多個可獨立操作的處理器中 在其上所述崩潰事件已發(fā)生的那一個。
[0011]在第三種變形例中,所述兩個或更多個可獨立操作處理器中的至少兩個包括總線 接口,并且所述方法還包括根據(jù)快速外圍組件互連(PCIe)標準經(jīng)所述總線接口進行通信。 在這種情況下,所述方法還包括:驗證PCIe鏈路的狀態(tài);以及在PCIe總線是激活時,遍歷 (enumerate)至所述 PCIe總線。
[0012] 在第四種變形例中,起效所述第一信號和第二信號的步驟包括經(jīng)通用輸入/輸出 (GPIO)進行起效。
[0013] 在第五種變形例中,在檢測到所述崩潰事件時,所述方法包括在起效所述第一信 號的步驟之前,完成一個或多個掛起的輸入/輸出事務(wù)。
[0014] 在本公開的第二方面,公開了一種用于在兩個或更多個可獨立操作的處理器之間 存儲錯誤信息的方法。在一種實施方式中,該方法包括:使能配置成在所述兩個或更多個可 獨立操作處理器中的一個處監(jiān)控崩潰事件的硬件安全機制;指示所述崩潰事件已發(fā)生;啟 動一個或多個錯誤恢復(fù)過程來存儲錯誤信息;以及在所述錯誤信息已經(jīng)被存儲時,指示所 述一個或多個錯誤恢復(fù)過程已成功完成。
[0015] 在一種變形例中,在所述一個或多個錯誤恢復(fù)過程已成功完成時,所述方法還包 括禁用所述硬件安全機制。
[0016] 在第二種變形例中,所述方法還包括分析所存儲的錯誤信息。
[0017] 在第三種變形例中,在所述一個或多個總線事務(wù)處于掛起狀態(tài)時,所述方法還包 括解決(resolve)所述一個或多個總線事務(wù)。
[0018] 在第四種變形例中,所述解決所述一個或多個總線事務(wù)的步驟包括傳送傳輸緩存 器的所有剩余內(nèi)容。
[0019] 在第五種變形例中,所述解決所述一個或多個總線事務(wù)的步驟包括中止所述一個 或多個總線事務(wù)。
[0020] 在第三方面,公開了一種配置成在兩個或更多個可獨立操作的處理器之間恢復(fù)錯 誤信息的計算機化系統(tǒng)。在一種實施方式中,該系統(tǒng)包括:總線接口;第一可獨立操作處理 器;以及經(jīng)所述總線接口與所述第一處理器進行數(shù)據(jù)通信的第二可獨立操作處理器,該第 二處理器包括多個計算機可讀指令。在一種此類示例性實施方式中,所述多個計算機可讀 指令在由所述第二處理器執(zhí)行時使得所述第二處理器執(zhí)行以下操作:檢測崩潰事件;起效 配置成向所述第一處理器指示所述崩潰事件已發(fā)生的第一信號;執(zhí)行一個或多個錯誤恢復(fù) 過程來收集一個或多個錯誤信息;以及在所述一個或多個錯誤恢復(fù)過程已經(jīng)成功完成時, 起效配置成向所述第一處理器指示所述一個或多個錯誤恢復(fù)過程已成功完成的第二信號。
[0021] 在第一種變形例中,響應(yīng)于所述第二處理器對所述第二信號的起效,所述第一處 理器配置成取回(retrieve)所述一個或多個錯誤信息。
[0022]在第二種變形例中,響應(yīng)于所述第二處理器對所述第二信號的起效,所述第一處 理器配置成禁用所述總線接口以及重置所述第二處理器。
[0023] 在第三種變形例中,所述第一處理器包括應(yīng)用處理器,而所述第二處理器包括基 帶處理器。
[0024]在第四種變形例中,所述總線接口包括快速外圍組件互連(PCIe)總線。
[0025] 在第五種變形例中,所述第二處理器還包括中止處理器。
[0026] 在第四方面,公開了一種配置為在兩個或更多個可獨立操作的處理器之間存儲錯 誤信息的裝置。在一種實施方式中,該裝置包括:配置成耦接第一處理器和第二處理器的物 理總線接口;以及包括多個指令的計算機可讀介質(zhì)。在一種示例性實施方式中,所述計算機 可讀介質(zhì)在由所述第二處理器執(zhí)行時使得所述第二處理器執(zhí)行以下操作:使能配置成在所 述第二處理器處監(jiān)控崩潰事件的硬件安全機制;向所述第一處理器指示所述崩潰事件已發(fā) 生;啟動一個或多個錯誤恢復(fù)過程以存儲錯誤信息;以及在已經(jīng)存儲了所述錯誤信息時,向 所述第一處理器指示所述一個或多個錯誤恢復(fù)過程已經(jīng)成功完成。
[0027] 在一種變形例中,所述多個指令還配置成,在其被執(zhí)行時,在所述一個或多個錯誤 恢復(fù)過程已成功完成時進入循環(huán)來等待更進一步的指令。在這種情況下,所述多個指令還 配置成,在其被執(zhí)行時,使得重置所述第二處理器。
[0028] 在另一種變形例中,所述多個指令還配置成,在其被執(zhí)行時,在使能所述硬件安全 機制之前完成未完成的總線事務(wù)。
[0029] 通過參考附圖和以下給出的對示例性實施方式的詳細描述,本領(lǐng)域普通技術(shù)人員 會立即認識到本公開的其它特性和優(yōu)點。
【附圖說明】
[0030] 圖1是表示用于例示本文所描述的各種原理的一個示例性裝置的邏輯框圖。
[0031] 圖2是表示用于例示本文所描述的各種原理的一個示例性物理總結(jié)接口的邏輯框 圖。
[0032]圖3是根據(jù)本公開原理用于處理中止序列的一種示例性方法的邏輯流程圖。
[0033]圖4是根據(jù)本公開原理用于處理掉電(power down)序列的示例性方法的邏輯流程 圖。
[0034]圖5是根據(jù)本公開原理的表示錯誤恢復(fù)過程的一個邏輯梯形圖的邏輯流程圖。
【具體實施方式】
[0035]現(xiàn)在參考附圖,附圖中相似的標號指代相似的部分。
[0036]對示例性實施方式的詳細描述
[0037]現(xiàn)在詳細描述本公開的示例性實施方式。雖然主要在快速外圍組件互連(PCIe)標 準(例如,如2014 年 10 月8 日公布的 "PCI Express Base Specification Revision 3.1" 所 述)的背景下討論這些實施方式,但是普通技術(shù)人員應(yīng)當認識到本公開不限于此。事實上, 本公開的各個方面可用于配置成合并和協(xié)調(diào)如在此所公開的多個獨立處理元件的任何設(shè) 備或設(shè)備網(wǎng)絡(luò)。
[0038] 雖然以下實施方式描述例如錯誤信息、可獨立操作處理器之間的通信協(xié)議以及用 于在潛在致命錯誤范圍內(nèi)進行錯誤信息恢復(fù)的一致框架的特定的實現(xiàn),但是本領(lǐng)域普通技 術(shù)人員會很容易地理解,此類描述只是為了說明本文中所描述的更廣泛的原理。
[0039] 示例性獨立處理器操作_
[0040] 現(xiàn)在描述使能兩個(或更多個)可獨立操作處理器之間錯誤信息的受控恢復(fù)的方 法和裝置。理想的解決方案在致命錯誤的情況下保存錯誤信息,在可獨立操作處理器之間 協(xié)調(diào)重置條件,并且實現(xiàn)用于在潛在致命錯誤范圍進行錯誤信息恢復(fù)的一致框架。參照"根 組件"(RC)(或"主機")處理器、以及"端點"(EP)(或"外設(shè)")處理器描述以下討論。出于在下 文中將變得顯見的原因,應(yīng)當理解,指定主機或外設(shè)處理器是用于簡化和/或闡明以下解 釋,并不意味著現(xiàn)有主機或外設(shè)的功能。
[0041] 如本文所用,術(shù)語"邏輯"或"虛擬"可以互換使用來指代作為數(shù)據(jù)結(jié)構(gòu)來表示物理 機制、屬性或功能的抽象(通常在軟件或機器邏輯中執(zhí)行)。例如,"邏輯總線接口","虛擬總 線接口"等,通常指代作為一系列數(shù)據(jù)結(jié)構(gòu)的總線接口的抽象或表示。相反,如本文所用"物 理總線接口"指代物理有形總線接口的物理機制、屬性或功能。
[0042] 示例性裝置-
[0043]圖1例示了一種用于例示本文所描述的各種原理的示例性裝置100。如所示,裝置 100包括第一和第二處理器(102A,102B),以及配置成在兩個(或更多個)可獨立操作處理器 之間實施通信鏈路的物理總線接口 104。
[0044] 在一種實施方式中,第一處理器102A包括應(yīng)用處理器(AP)。如圖1所示,第一處理 器102A耦接至根組件(RC)106A,該根組件用作通信鏈路的主機。在一種實施方式中,第二處 理器102B包括無線調(diào)制解調(diào)器基帶(BB)。在其它實施方式中,第二處理器102B可以是例如 媒體處理器,或其它網(wǎng)絡(luò)處理元件。如圖1中所示,第二處理器102B耦接至端點(EPH06B,該 端點用作通信鏈路的外設(shè)。
[0045]如所示,第一和第二處理器(102A,102B)每一個都耦接至非暫態(tài)計算機可讀介質(zhì) (例如,隨機存取存儲器(RAM)) (108A,108B)。該非暫態(tài)計算機可讀介質(zhì)配置成存儲用于執(zhí) 行的計算機可讀指令。如本文所用,術(shù)語"存儲器"包括任何類型的適配為存儲數(shù)字數(shù)據(jù)的 集成電路或其它存儲設(shè)備,其包括但不限于ROM、PROM、EEPROM、DRAM、SDRAM、DDR/2 SDRAM、 EDO/FPMS、RLDRAM、SRAM、"閃速"存儲器(例如NAND/NOR),以及PSRAM。在有些情況下,第一 和/或第二處理器可以具備相關(guān)聯(lián)的非易失性存儲器11〇(例如,閃存),其配置為存儲計算 機可讀指令,以及在沒有上電的情況下保持存儲的計算機可讀指令。
[0046] 在一種示例性實施方式中,第一處理器102A和相關(guān)聯(lián)的存儲器108A配置成管理第 二處理器,發(fā)送和接收中斷,主持處理器間的通信(經(jīng)通信鏈路),以及操作為通信總線的根 組件。相反,第二處理器102B和相關(guān)聯(lián)的存儲器108B配置成操作為通信總線的端點(EP)Jt 為從設(shè)備來響應(yīng)處理器間的通信,起效(assert)和失效(deassert)GPIO,以及處理各種中 止情況。此外,第二處理器102B可以用各種處理性能操作(例如,作為用于無線調(diào)制解調(diào)器 的基帶處理器),以及/或者管理多個子系統(tǒng)(例如,音頻編解碼器、顯示驅(qū)動器、管理無線調(diào) 制解調(diào)器部件,等等)。
[0047]如圖2所示,一種實施方式的物理總線接口 104松散地基于快速外圍組件互連 (PCIe)標準(例如,如2014年10月8 日公布的 "PCI Express Base Specification Revision 3· Γ所述,以及2012年8月23日通過的"ECN LlPM Substates with CLKREQ",其全部內(nèi)容通 過引用并入于此)。本文隨后將更具體地描述對傳統(tǒng)PCIe物理總線接口 104(和與其使用的 協(xié)議)進行改進來支持崩潰恢復(fù)功能。本領(lǐng)域普通技術(shù)人員,鑒于本公開的內(nèi)容,會很容易 地理解可以以其它總線接口標準同樣成功地取代。例如,可以修改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)之間點對點的 通信信道,其允許兩個端口發(fā)送/接收訪問請求(配置讀/寫、1/0讀/寫、存儲器讀/寫)和中 斷。在物理層,鏈路由一個或多個通道(如圖2所示的一個通道)組成,每個通道具備接收和 發(fā)送部件(pcie_rx,p Cie_tX)。每個通道都是全雙工字節(jié)流,在鏈路的RC和EP之間雙向同時 以八位"字節(jié)"格式傳輸數(shù)據(jù)包。物理鏈路104能夠支持代表多個正在進行的數(shù)據(jù)會話的多 個邏輯鏈路(或虛擬總線接口)。
[0049]此外,物理總線接口 104還包括使能崩潰恢復(fù)的三(3)個信號。在一種示例性實施 方式中,經(jīng)通用輸入/輸出(GP10)實施信號:(i)BB_PMU_RST GP10,( i i)BB_RST GP10,以及 (i ii )RESET_DET GPKLBB.PMILRST GPIO是從RC到EP的GPIO,當其被觸發(fā)(toggle)時使得 EP掉電。BB_RST GPIO是從RC到EP的GPI0,當其被觸發(fā)時使得EP重置。從EP提供RESET_DET GPIO到RC,并且在EP重置的時候起效RESET_DET GPI0。在一種實施方式中,PCIe WAKE#GPI0 從EP被提供到RC作為PCIe接口的一部分,但它是額外"超載的"以便于在EP已經(jīng)結(jié)束了其自 身的錯誤恢復(fù)過程(例如,成功存儲了核心轉(zhuǎn)儲至RAM)的時候被起效。替代實施方式可以獻 出GPIO用于起效錯誤恢復(fù)過程的成功完成。
[0050] 示例性引導(dǎo)處理、以及休眠/喚醒過程-
[0051] 作為簡短的插入,本文提供了用于與示例性裝置100相結(jié)合的一種引導(dǎo)序列的簡 要總結(jié)。出于簡明和清楚的需要,以下討論既不廣泛也不排他,并且本領(lǐng)域普通技術(shù)人員會 很容易地理解,可以很容易地以其它用于引導(dǎo)多個獨立處理器的方案取代,提供以下內(nèi)容 以便于下文詳細描述的隨后過程的應(yīng)用。
[0052] 在上電或重置時,裝置100初始化第二處理器102B(BB),第二處理器取回首要引導(dǎo) 加載器(PBL)非易失性存儲器,例如板載只讀存儲器(ROM)(或其它閃存)。同時(或在BB引導(dǎo) 序列之前),第一處理器102A(AP)初始化、啟動和運行它的操作系統(tǒng)(0S)。
[0053] 一旦BB 102B成功上電(或被喚醒,等等),AP 102A給物理總線接口 104(例如,PCIe 總線)上電并遍歷鏈路。在一種示例性實施中,AP 102A通過PCIe總線104遍歷自身和BB處理 器102B。當成功遍歷時,AP取回BB輔助引導(dǎo)加載器(SBL),并經(jīng)PCIe總線發(fā)送其至BB 接收 SBL并從SBL響應(yīng)性地啟動。
[0054] 一旦BB 102B開始執(zhí)行SBL,AP 102A通過物理總線接口 104取來BB 102B的最終軟 件映像并發(fā)送其至BB 102B。隨后,BB 102B執(zhí)行它的最終軟件映像(例如,操作系統(tǒng)(OS))。 在引導(dǎo)程序結(jié)束之時,AP和BB都運行它們相應(yīng)的0S。
[0055] 正如前面間接提到的,AP和BB是能夠各自分別進入/退出休眠模式的獨立操作的 處理器。在有些實施方式中,當AP處于休眠中時,通信鏈路被斷開。在其它實施方式中,當AP 或BB中的任何一個(或兩者)處于休眠狀態(tài)時,通信鏈路被斷開。通信鏈路在喚醒時重新遍 歷以使能通信。不幸的是,在現(xiàn)有的現(xiàn)有技術(shù)設(shè)計中,AP假定遍歷總是成功的;由此,如果BB 以一種意料之外的方式響應(yīng),則AP自動進入"應(yīng)急模式"(即,為了重置到已知的條件,AP上 電循環(huán)整個設(shè)備),因為AP不能確定其自身或BB是否處于一種未知狀態(tài)。從客戶的角度來 說,顯然可見這是非常不希望的結(jié)果。
[0056] 從實踐的角度來說,BB不能成功遍歷(導(dǎo)致不受歡迎的"應(yīng)急模式")的原因很多。 例如,BB可能在所謂的"中止處理器"操作期間不響應(yīng)。在一種類似的實施中,BB由多個子系 統(tǒng)(例如,無線調(diào)制解調(diào)器、編解碼器、電源管理等)組成;盡管這些子系統(tǒng)中的每一個通常 都足夠穩(wěn)健,但預(yù)測/消除軟件/硬件中所有的"缺陷"是不經(jīng)濟的。結(jié)果是,示例性BB軟件包 括中止處理器,其配置成在故障被觀察到時收集調(diào)試信息。特別地,一種調(diào)試信息是所謂的 "核心轉(zhuǎn)儲",其中處理器將執(zhí)行存儲器的內(nèi)容復(fù)制到非執(zhí)行空間,以便其隨后能夠被分析。 一旦成功存儲核心轉(zhuǎn)儲,BB執(zhí)行空指令直至另有指示(例如,在whi Ie循環(huán)中"自旋 (spin)")。");其后,AP可以重置BB,并作為TOL/SBL處理的一部分取回核心轉(zhuǎn)儲。不幸的是, 當取回/存儲核心轉(zhuǎn)儲時(這可以是幾秒鐘的量級)BB不會響應(yīng)PCIe命令;換句話說,如果AP 嘗試在崩潰開始與空指令執(zhí)行之間的間隔去遍歷BB,那么BB將不會響應(yīng)并且AP會觸發(fā)應(yīng)急 模式響應(yīng)。
[0057]本公開的各種實施方式適用于任何部件系統(tǒng),其中主機處理器未意識到從處理器 已崩潰。更普遍地,本領(lǐng)域普通技術(shù)人員會很容易地理解,本文所描述的原理可廣泛地適用 于任何系統(tǒng),其中兩個(或更多個)可獨立操作處理器中的一個處理器必須與其它處理器協(xié) 作來恢復(fù)錯誤信息(例如,核心轉(zhuǎn)儲、調(diào)試日志等)。
[0058] 示例性框架-
[0059]表1例示了一種用于與圖1的示例性裝置相結(jié)合的示例性框架。如所示,該框架識 別由應(yīng)用處理器(AP)和基帶(BB)實施的適當行動。
[0061] 表1
[0062] 現(xiàn)在更詳細地描述在表1中匯總的各種實體。
[0063] 中止處理器-
[0064]圖3例示了用于處理中止序列的示例性方法300的一種邏輯流程圖。
[0065]在方法300的步驟302處,中止處理器保證所有(如果有的話)進行中的PCIe總線事 務(wù)完成。在有些情況下,這可能包括完成傳送傳輸緩存器的剩余內(nèi)容,在其它情況下,以期 望的方式(例如,通過根據(jù)預(yù)定義的協(xié)議終止該傳送,等等)簡縮該傳送。在還有的其它實施 方式中,可以通過發(fā)送終止信號和/或數(shù)據(jù)包等來中止傳送。
[0066]在步驟304處,中止處理器使能硬件看門狗。如本文隨后更詳細描述的,硬件看門 狗是專門的硬件安全機制,用以保證甚至是在軟件未能響應(yīng)的情況下,處理器能夠通過重 置自身返回已知狀態(tài)。
[0067] 在步驟306處,中止處理器收集PCIe調(diào)試信息,并存儲總線錯誤信息至非執(zhí)行存儲 器用于隨后分析。相對于執(zhí)行存儲器在重置過程中不會被保存(例如,其在執(zhí)行過程中可能 被覆蓋,等等);非執(zhí)行存儲器可以被保存,并因此甚至是在系統(tǒng)被重置以后還能夠恢復(fù)錯 誤信息。
[0068] 在步驟308處,中止處理器失效PCIe WAKE#GPI0并起效RESET_DET GPI0,從而向AP 指示BB已崩潰。正如前面間接提到的,通過BB起效RESET_DET GPIO來指示崩潰事件的發(fā)生, 由此允許AP來防止與BB進一步的事務(wù)聯(lián)系。然而,BB在崩潰的情況下額外執(zhí)行重要的錯誤 恢復(fù)任務(wù),由此過載WAKE#GPI0來向AP指示BB已經(jīng)完成了它的錯誤恢復(fù)任務(wù)。通過失效 WAKE#GPI0,BB向AP指示錯誤恢復(fù)任務(wù)還在進行中。
[0069]在步驟310處,中止處理器檢查PCIe鏈路狀態(tài)。如果該鏈路關(guān)閉,那么它等待 PERST#失效達預(yù)定時間;如果經(jīng)過了該預(yù)定時間,隨后中止處理器繼續(xù)進行至下一步(步驟 312)。否則,如果PERST#失效,那么中止處理器使能PCIe總線時鐘用于遍歷(再遍歷)。
[0070] 其后,中止處理器從例如基帶核心、子系統(tǒng)等收集調(diào)試信息,并存儲調(diào)試信息至非 執(zhí)行存儲器用于隨后分析(步驟312)。
[0071] 一旦調(diào)試信息被正確存儲,中止處理器就起效WAKE#GPI0(步驟314),禁用硬件看 門狗(步驟316),并執(zhí)行空指令(例如,在while循環(huán)中自旋)直至另有指示。通過起效WAKE# GPI0,BB向AP指示其已完成錯誤恢復(fù)過程。
[0072] 在一種示例性實施方式中,方法300(或其中一部分)以指定的時間限制(例如,最 大/最小持續(xù)時間)為界。例如,在一種此類的實現(xiàn)中,從BB開始執(zhí)行中止處理器(時刻302) 時開始到基帶檢查PCIe鏈路狀態(tài)(步驟310)時結(jié)束的時間間隔,要求不超過10毫秒(ms)。
[0073] 簡單來說,AP配置成經(jīng)RESET_DET GPIO起效來檢測基帶崩潰,并且還經(jīng)WAKE#GPI0 起效來檢測BB何時完成它的錯誤恢復(fù)過程。僅在錯誤恢復(fù)過程成功完成之后,AP起效BB_ RST GPIO,使得對BB進行重置。
[0074] 掉電處理器-
[0075]圖4例示了用于處理掉電序列的示例性方法400的一種邏輯流程圖。在有些實施方 式中,掉電處理器被并入中止處理器中;另選地,掉電處理器可物理地或邏輯地區(qū)別于中止 處理器。
[0076]當經(jīng)從AP發(fā)送的命令關(guān)閉BB的電源時,BB會執(zhí)行它的掉電處理器。首先掉電處理 器保證所有(如果有的話)正在進行的PCIe總線事務(wù)完成(步驟402)。
[0077] 在步驟404處,掉電處理器使能硬件開門狗定時器。在一種變形例中,如果PCIe鏈 路在開門狗失效之前是開啟的,那么AP會檢測由重置引起的PCIe鏈路關(guān)閉事件。
[0078]在步驟406中,BB用信號通知基帶崩潰已經(jīng)發(fā)生。在一種實施方式中,BB起效 RESET_DET GPIO并失效WAKE#GPI0。
[0079]在步驟408中,BB靜默任何現(xiàn)有的運行進程并執(zhí)行錯誤恢復(fù)。更普遍地,BB暫停、停 止、懸置或者以其它方式改變正在運行的進程的狀態(tài),以便防止對執(zhí)行存儲器的進一步改 變。在有些變形例中,BB可以額外地存儲執(zhí)行存儲器的內(nèi)容至非執(zhí)行存儲器用于后續(xù)分析。 在有些情況下,BB完成未完成的寫入/讀出。在其它的實施中,未完成的寫入/讀出被清除。 鑒于本公開的內(nèi)容,本領(lǐng)域普通技術(shù)人員會很容易地理解多種其它用于在預(yù)期崩潰恢復(fù)中 穩(wěn)定計算機進程的執(zhí)行的方案。
[0080] 在步驟410處,一旦BB完成靜默操作,BB就起效PCIe WAKE#GPI0來指示錯誤恢復(fù)已 經(jīng)成功完成。此后,BB可以禁用硬件開門狗定時器并在while循環(huán)中自旋(或者其它形式的 空命令執(zhí)行)。
[0081 ] 一旦AP檢測到WAKE#和RESET_DET GPIO都已起效,AP就經(jīng)BB_PMU_RST GPIO關(guān)閉BB 的電源。
[0082] 常見崩潰情形-
[0083]回頭參考表1,現(xiàn)在更詳細地描述多種常見崩潰情形。
[0084] 首先,在軟件崩潰的情況下,BB進入它的中止處理器。在AP和BB之間的PCIe鏈路狀 態(tài)保持不變。BB執(zhí)行中止處理器,并起效RESET_DET GPI0。其后,當AP檢測到BB崩潰以及BB 中止處理器序列成功完成(例如,經(jīng)RESET_DET和WAKE#起效)時,那么AP通過首先關(guān)閉PCIe 端口的電源、經(jīng)BB_RST GPIO復(fù)位BB、并且隨后打開PCIe端口的電源來重置BB。然后BB會在 ROM內(nèi)通過PCIe響應(yīng)性地遍歷,并且AP可以隨后收集核心轉(zhuǎn)儲。
[0085]同樣地,某些崩潰可以因硬件開門狗失效而出現(xiàn)。硬件開門狗是配置成如果它的 定時器被允許到期則重置BB的專門硬件部件。在通常操作期間,看門狗的定時器在其運行 完全關(guān)閉之前被處理器定期重置;然而,當處理器處于未知狀態(tài)且不能重置看門狗時,那么 看門狗定時器到期并重置處理器。這導(dǎo)致處理器重新執(zhí)行它的ROM。在示例性實施方式中, 當BB被重置時,AP會檢測到PCIe鏈路關(guān)閉事件(如果該PCIe鏈路是激活的)。相應(yīng)地,AP等待 直到BB中止處理器序列成功完成(例如,經(jīng)RESET_DET和WAKE#起效),并且其后AP通過首先 關(guān)閉PCIe端口的電源、經(jīng)BB_RST GPIO復(fù)位BB、以及隨后打開PCIe端口的電源來重置 于前面提到的軟件崩潰,AP可以隨后收集核心轉(zhuǎn)儲。
[0086]在有些情況下,AP可以明確地觸發(fā)軟件重置或關(guān)機。在這些情形下,BB執(zhí)行它的掉 電處理器并且PCIe鏈路保持可操作。其后,AP使PCIe鏈路掉電,并隨后經(jīng)BB_RST GPIO重置 BB,或者經(jīng)BB_PMU_RST使BB掉電。
[0087] 如表1中所示,有多種解決PCIe鏈路故障的情形。例如,在有些實施方式中,針對BB 的默認行為是在PCIe鏈路故障的情況下執(zhí)行中止處理器。在進入中止處理器的時候,BB起 效RESET_DET GPIO,這使得AP將PCIe鏈路故障當做BB崩潰。對于前面提到的情形,AP在重置 PCIe鏈路、重新遍歷BB并取回核心轉(zhuǎn)儲等之前會等待BB去完成中止處理器執(zhí)行。在這種情 形下,AP可以從EP接口(在BB內(nèi))取回錯誤信息,然而AP可能不能取回RC內(nèi)的錯誤信息。
[0088] 另選地,在有些特定情況下,BB在PCI e鏈路故障期間可以保持在操作系統(tǒng)(OS)內(nèi)。 例如,AP可以配置BB保持在OS內(nèi)以便協(xié)助AP的軟件調(diào)試。在這些情形中,BB不會起效RESET_ DET GPIO(指示BB沒有處于重置中)。在主機上的IPC驅(qū)動器會檢測PCIe鏈路故障以及BB沒 有重置。結(jié)果是,AP會觸發(fā)應(yīng)急模式以允許在RC上對PCIe鏈路的調(diào)試。在這些情形中,因為 BB不執(zhí)行它的中止處理器功能,所以所有的BB錯誤信息丟失。
[0089]此外,還有其中PCIe鏈路獨立于AP或BB而故障的情形。例如,在有些情況下,當BB 還在正常運行時(例如,如通過RESET_DET GPIO保持失效來證明),AP可以通過PCIe鏈路檢 測完成超時。在這里,AP IPC驅(qū)動器會明確地關(guān)閉PCIe端口的電源。BB會識別PCIe鏈路故 障,以及要么:(1)執(zhí)行中止處理器;要么還可以(2)停留在OS內(nèi)(取決于配置)。其后,AP會視 完成超時為致命基帶錯誤,并觸發(fā)基帶重置。
[0090] 相反地,在BB通過PCIe鏈路檢測到完成超時的情況下,在默認操作下BB會進入中 止處理器并起效RESET_DET GPI0。其后AP可以視故障為BB崩潰。正如先前所指出的,默認操 作使得AP能夠基于在EP接口內(nèi)的錯誤信息調(diào)試鏈路級問題,然而RC內(nèi)的信息卻丟失了。另 選地,如果BB配置成保持在OS內(nèi)用以輔助AP調(diào)試,那么BB會在不起效RESET_DET GPIO的情 況下明確導(dǎo)致PC I e鏈路故障。AP會檢測鏈路故障并失效RESET_DET GP10;結(jié)果AP會觸發(fā)應(yīng) 急模式。在這種崩潰情形中,AP可以調(diào)試RC接口但會丟失存儲在EP內(nèi)的信息(因為BB中止處 理器未被執(zhí)行)。
[0091] 如果AP檢測到PCIe完成中止(例如,致命錯誤),那么AP會觸發(fā)應(yīng)急模式。如果BB檢 測到PCIe完成中止,那么BB會執(zhí)行中止處理器;AP會把故障當作BB崩潰。
[0092] 示例性操作-
[0093]現(xiàn)在參考圖5,例示了根據(jù)本公開的表示錯誤恢復(fù)過程的一種邏輯梯形圖。如所 示,應(yīng)用處理器(AP)(主機)包括如下邏輯實體:(i)基帶管理器502,(ii)中斷控制器504; (iii)主機處理器間通信(IPC)驅(qū)動器506,以及(iv)根組件(RC)接口508。基帶處理器(BB) (從設(shè)備)包括:⑴端點(EP)接口510,(ii)EP IPC驅(qū)動器512,(iii)GPI0控制器514,(iv)中 止處理器516,(V)基帶核心518,以及(vi)多個子系統(tǒng)520(例如,音頻、顯示器、無線調(diào)制解 調(diào)器等)。
[0094]在操作過程中一些意外時刻,BB崩潰(時刻550)。通常,軟件崩潰由來自子系統(tǒng)520 其中之一的意外行為來證實(例如,錯誤的存儲器存取、不響應(yīng)的總線訪問,等等)。相應(yīng)地, 基帶核心518跳轉(zhuǎn)至它的中止處理器序列,該序列使能硬件看門狗。硬件看門狗保證如果中 止處理器516不能適合地完成它的任務(wù),那么BB會被強制進入重置。如所示,中止處理器516 必須完成所有掛起的輸入/輸出事務(wù),并收集調(diào)試信息。中止處理器的成功完成失效WAKE# 并起效RESET_DET GPIO。
[0095] RESET_DET GPIO的起效向AP指示BB已崩潰(時刻552),并且不應(yīng)該啟動與BB進一 步的事務(wù);然而,在對PCIe總線掉電并重置基帶核心518之前,AP等待直至基帶重置完成(時 刻554)。
[0096]在基帶核心518被重置之后,其執(zhí)行它的ROM的內(nèi)容。同時,在執(zhí)行首要引導(dǎo)加載器 (I3BL)和輔助引導(dǎo)加載器(SBL)引導(dǎo)協(xié)議之前,AP給PCIe總線上電并等待PCIe遍歷。其后,AP 可以安全地收集核心轉(zhuǎn)儲556。
[0097]回頭參考在基帶重置檢測(時刻552)和基帶重置完成(時刻554)之間的時間間隔, 中止處理器516被允許去驗證PCIe鏈路狀態(tài),并且如果PCIe總線是激活的,則遍歷至PCIe總 線。無論如何,中止處理器516能夠從每個子系統(tǒng)520收集調(diào)試信息。一旦中止處理器516成 功地收集到調(diào)試信息(例如,核心轉(zhuǎn)儲),中止處理器516就起效WAKE#(指示基帶重置完成)。 隨后,中止處理器禁用硬件看門狗并執(zhí)行空命令。
[0098] 更普遍地,不同于現(xiàn)有的不協(xié)調(diào)錯誤恢復(fù)過程的解決方案,本公開的多種實施方 式在以下兩種情況下均提供指示:當崩潰發(fā)生時和當與崩潰相關(guān)聯(lián)的錯誤恢復(fù)完成時。用 這種方式,在其能夠恢復(fù)和存儲相關(guān)錯誤信息之前,系統(tǒng)的其它處理器不重置崩潰的處理 器。
[0099] 應(yīng)當認識到,雖然就特定的方法步驟序列描述了本公開的特定實施方式,但是這 些描述僅僅是例示本文所描述的更廣泛的方法,并且可以根據(jù)特定應(yīng)用所需進行修改。在 某些情況下某些步驟可以是不必要的或可選的。此外,某些步驟或功能可以被加入已公開 的實施方式,或者交換兩個或更多個步驟的執(zhí)行順序。所有這類變動被認為已包含在本公 開和權(quán)利要求中。
[0100] 雖然以上詳細描述已經(jīng)示出、描述并指出適應(yīng)于各種實施方式的新穎特征,但是 應(yīng)當理解的是,可以由本領(lǐng)域技術(shù)人員在不偏離本文所述的原理的情況下對所示設(shè)備或處 理的形式和細節(jié)做出各種省略、替換和變化。前述描述是目前所能構(gòu)想的最好模式。該描述 決不意味著限制,而是應(yīng)當被視為對本文中所描述的一般原則的說明。本公開的范圍應(yīng)當 參照權(quán)利要求來確定。
[0101]優(yōu)先權(quán)申請
[0102] 本申請要求于2015年9月30日提交的相同發(fā)明名稱的共同擁有且共同未決的美國 專利申請第14/870,923號的優(yōu)先權(quán)益,該美國專利申請第14/870,923號要求于2015年2月4 日提交的相同發(fā)明名稱的共同擁有且共同未決的美國臨時專利申請第62/112,061號的優(yōu) 先權(quán)益,以上每個專利申請的全部內(nèi)容都通過引用并入于此。
[0103] 相關(guān)申請
[0104] 本申請還涉及于2014年10月8日提交的題為"METHODS AND APPARATUS FOR AN INTER-PROCESSOR COMMUNICATION LINK BETWEEN INDEPENDENTLY OPERABLE PROCESSORS" 的共同擁有和共同未決的美國臨時專利申請第62/061,605號,以上專利申請的全部內(nèi)容通 過引用并入于此。
【主權(quán)項】
1. 一種用于兩個或更多個可獨立操作的處理器之間的錯誤信息的受控恢復(fù)的方法,所 述方法包括: 在所述兩個或更多個可獨立操作的處理器中的一個處理器處,檢測崩潰事件; 起效第一信號,所述第一信號指示所述崩潰事件已經(jīng)發(fā)生; 執(zhí)行一個或多個錯誤恢復(fù)過程來收集一個或多個錯誤信息;以及 在所述一個或多個錯誤恢復(fù)過程已經(jīng)成功完成時,起效第二信號,所述第二信號指示 所述一個或多個錯誤恢復(fù)過程已經(jīng)成功完成。2. 如權(quán)利要求1所述的方法,還包括: 響應(yīng)于所述第二信號的起效,在所述兩個或更多個可獨立操作的處理器中的第二處理 器處,接收所收集到的一個或多個錯誤信息。3. 如權(quán)利要求1所述的方法,還包括:響應(yīng)于指示所述一個或多個錯誤恢復(fù)過程已成功 完成的所述第二信號的起效,在所述兩個或更多個可獨立操作的處理器中的所述一個處理 器處等待接收第三信號,所述第三信號配置成重置所述兩個或更多個可獨立操作的處理器 中已發(fā)生崩潰事件的那一個處理器。4. 如權(quán)利要求1所述的方法,其中所述兩個或更多個可獨立操作的處理器中的至少兩 個處理器包括總線接口,并且 所述方法還包括:根據(jù)快速外圍組件互連PCI e標準經(jīng)所述總線接口進行通信。5. 如權(quán)利要求4所述的方法,還包括: 驗證PCIe鏈路的狀態(tài);以及 在PCIe總線是激活的情況下,遍歷至所述PCIe總線。6. 如權(quán)利要求1所述的方法,其中起效所述第一信號和第二信號的步驟包括經(jīng)通用輸 入/輸出GPIO進行起效。7. 如權(quán)利要求1所述的方法,還包括,在檢測到所述崩潰事件時,在起效所述第一信號 的步驟之前完成一個或多個掛起的輸入/輸出事務(wù)。8. -種用于在兩個或更多個可獨立操作的處理器之間存儲錯誤信息的方法,所述方法 包括: 使能配置成在所述兩個或更多個可獨立操作的處理器中的一個處理器處監(jiān)控崩潰事 件的硬件安全機制; 指示所述崩潰事件已經(jīng)發(fā)生; 啟動一個或多個錯誤恢復(fù)過程來存儲錯誤信息;以及 在所述錯誤信息已被存儲的情況下,指示所述一個或多個錯誤恢復(fù)過程已經(jīng)成功完 成。9. 如權(quán)利要求8所述的方法,還包括:在所述一個或多個錯誤恢復(fù)過程已經(jīng)成功完成 時,禁用所述硬件安全機制。10. 如權(quán)利要求8所述的方法,還包括:分析所存儲的錯誤信息。11. 如權(quán)利要求8所述的方法,還包括:在一個或多個總線事務(wù)處于掛起狀態(tài)時,解決所 述一個或多個總線事務(wù)。12. 如權(quán)利要求11所述的方法,其中,所述解決所述一個或多個總線事務(wù)的步驟包括傳 送傳輸緩存器中所有的剩余內(nèi)容。13. 如權(quán)利要求11所述的方法,其中,所述解決所述一個或多個總線事務(wù)的步驟包括中 止所述一個或多個總線事務(wù)。14. 一種配置成在兩個或更多個可獨立操作的處理器之間恢復(fù)錯誤信息的計算機化系 統(tǒng),所述系統(tǒng)包括: 總線接口; 可獨立操作的第一處理器;以及 可獨立操作的第二處理器,所述第二處理器經(jīng)所述總線接口與所述第一處理器進行數(shù) 據(jù)通信,所述第二處理器包括多個計算機可讀指令,所述多個計算機可讀指令在由所述第 二處理器執(zhí)行時使得所述第二處理器執(zhí)行以下操作: 檢測崩潰事件; 起效第一信號,所述第一信號配置成向所述第一處理器指示所述崩潰事件已發(fā)生; 執(zhí)行一個或多個錯誤恢復(fù)過程來收集一個或多個錯誤信息;以及 在所述一個或多個錯誤恢復(fù)過程已經(jīng)成功完成時,起效第二信號,所述第二信號配置 成向所述第一處理器指示所述一個或多個錯誤恢復(fù)過程已成功完成。15. 如權(quán)利要求14所述的系統(tǒng),其中,響應(yīng)于所述第二處理器對所述第二信號的起效, 所述第一處理器配置成取回所述一個或多個錯誤信息。16. 如權(quán)利要求14所述的系統(tǒng),其中,響應(yīng)于所述第二處理器對所述第二信號的起效, 所述第一處理器配置成禁用所述總線接口并重置所述第二處理器。17. 如權(quán)利要求14所述的系統(tǒng),其中,所述第一處理器包括應(yīng)用處理器,并且所述第二 處理器包括基帶處理器。18. 如權(quán)利要求14所述的系統(tǒng),其中,所述總線接口包括快速外圍組件互連PCIe總線。19. 如權(quán)利要求14所述的系統(tǒng),其中,所述第二處理器還包括中止處理器。20. -種配置成在兩個或更多個可獨立操作的處理器之間存儲錯誤信息的裝置,所述 裝置包括: 用于耦接第一處理器與第二處理器的部件;以及 用于使能配置成在所述第二處理器處監(jiān)控崩潰事件的硬件安全機制的部件; 用于向所述第一處理器指示所述崩潰事件已發(fā)生的部件; 用于啟動一個或多個錯誤恢復(fù)過程來存儲錯誤信息的部件;以及 用于在所述錯誤信息已被存儲時向所述第一處理器指示所述一個或多個錯誤恢復(fù)過 程已經(jīng)成功完成的部件。21. 如權(quán)利要求20所述的裝置,還包括:用于在所述一個或多個錯誤恢復(fù)過程已成功完 成的情況下進入循環(huán)來等待進一步指令的部件。22. 如權(quán)利要求21所述的裝置,還包括:用于重置所述第二處理器的部件。23. 如權(quán)利要求20所述的裝置,還包括:用于在使能所述硬件安全機制之前完成未完成 的總線事務(wù)的部件。
【文檔編號】G06F11/07GK105843694SQ201610074922
【公開日】2016年8月10日
【申請日】2016年2月3日
【發(fā)明人】K·桑吉, S·加格, V·派科夫, 張海寧
【申請人】蘋果公司