用于只寫處理器間復位同步的方法和裝置的制造方法
【技術領域】
[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 (與)"條件,使得在一些情況下,如果既滿足了某個內部條