用于只寫處理器間復(fù)位同步的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的各實(shí)施例涉及在異構(gòu)處理核之間通信的領(lǐng)域;更具體而言,本發(fā)明的各 實(shí)施例涉及在使用只寫通信來彼此通信的處理單元(例如,處理器核、知識(shí)產(chǎn)權(quán)(IP)核等) 之間的復(fù)位(reset)同步。
【背景技術(shù)】
[0002] 處理器間(inter-processor)通信(IPC)經(jīng)常用于在運(yùn)行在不同的處理器核(例 如,不同的異構(gòu)處理器核)中的進(jìn)程之間交換數(shù)據(jù)。這些進(jìn)程可以源自運(yùn)行在使用不同的 處理核或線程的中央處理單元(CPU)或片上系統(tǒng)(S0C)上的程序。即便這些進(jìn)程可能正單 獨(dú)地運(yùn)行,它們?nèi)钥赡苄枰诒舜酥g傳遞信息。
[0003] 根據(jù)通信協(xié)議使用處理核或單元的接口來執(zhí)行IPC通信,進(jìn)程正在這些處理核或 單元上運(yùn)行。有時(shí),通信協(xié)議使得處理核或單元使用對(duì)等(peer-to-peer)通信來通信。用 于IPC通信的通信協(xié)議常常包括用于促進(jìn)信息交換的讀取和寫入操作。
[0004] 當(dāng)在對(duì)等設(shè)備(peer)中與另一對(duì)等設(shè)備進(jìn)行IPC通信的一個(gè)對(duì)等設(shè)備將被復(fù)位 或禁用時(shí),出現(xiàn)了問題。例如當(dāng)對(duì)等設(shè)備正斷電時(shí),其會(huì)被禁用。當(dāng)這種情況發(fā)生時(shí),一個(gè) 對(duì)等設(shè)備獲悉另一對(duì)等設(shè)備正被復(fù)位或被禁用是困難的。在此類情況下,第一對(duì)等設(shè)備可 能正在等待來自第二對(duì)等設(shè)備的信息,這可能使該第一對(duì)等設(shè)備進(jìn)入無休止地等待來自第 二對(duì)等設(shè)備的響應(yīng)的狀態(tài),進(jìn)而導(dǎo)致該第一對(duì)等設(shè)備的掛起(hang)或由該第一對(duì)等設(shè)備 引起的啟發(fā)式超時(shí)(heuristic timeout)(其在一些情況下可能是錯(cuò)誤的)。另外,這可能 引起這樣的情形:第二對(duì)等設(shè)備被重新初始化,但已失去其上下文,并且第一對(duì)等設(shè)備在第 二對(duì)等設(shè)備處于不同的狀態(tài)(例如,第一對(duì)等設(shè)備相信會(huì)話正在進(jìn)行,而第二對(duì)等設(shè)備丟 失了對(duì)此的任何概念)的錯(cuò)誤假設(shè)下保持發(fā)送消息。也可能在另一方向上發(fā)生相同的狀 態(tài)失配。最終,由于在許多情況下消息不是原子的(atomic)(例如,由一系列寄存器寫入構(gòu) 成),如果第一對(duì)等設(shè)備發(fā)送非原子的消息且第二對(duì)等設(shè)備在中間經(jīng)歷復(fù)位,則有可能該復(fù) 位本身將會(huì)將復(fù)位包括在第二對(duì)等設(shè)備的消息寄存器中,同時(shí)第一對(duì)等設(shè)備正繼續(xù)填充這 些消息寄存器,使得第二對(duì)等設(shè)備接收損壞的消息。在第一對(duì)等設(shè)備能夠使用讀取操作以 從第二對(duì)等設(shè)備中讀取關(guān)于其狀態(tài)的信息并且能夠基于對(duì)該讀取操作的響應(yīng)來判斷第二 對(duì)等設(shè)備是否是不可用的或已經(jīng)歷復(fù)位的情況下,尤其是在當(dāng)超時(shí)或重試將使第一對(duì)等設(shè) 備推斷出另一對(duì)等設(shè)備不可用的情況下,可避免該問題。
[0005] 雖然在允許讀取操作時(shí)在對(duì)等設(shè)備之間的通信復(fù)位信息更易于處理,但讀取操作 呈現(xiàn)出不期望的其他問題。例如,在對(duì)等設(shè)備的核被復(fù)位或正被禁用(例如,由于進(jìn)入低功 率狀態(tài)而被禁用)時(shí),這些動(dòng)作會(huì)使該讀取因例如核的隔離而失敗。而且,包含讀取的通信 協(xié)議可能更加難以跨不同的底層總線和/或結(jié)構(gòu)(fabric)來迀移。
[0006] 因而,可能期望在對(duì)等設(shè)備之間使用不包括讀取操作的通信協(xié)議。然而,在對(duì)等設(shè) 備僅通過寫入操作來通信的情形中,不知悉另一對(duì)等設(shè)備已經(jīng)進(jìn)入復(fù)位或已經(jīng)以其他方式 變得不可用的問題仍然存在。
【附圖說明】
[0007] 通過下面給出的具體實(shí)施例和本發(fā)明的各實(shí)施例的附圖,將更完整地理解本發(fā) 明,然而,不應(yīng)認(rèn)為具體實(shí)施例和附圖將本發(fā)明限制于特定的實(shí)施例,而是僅用于解釋和理 解。
[0008] 圖1示出能夠使用只寫通信協(xié)議來彼此通信的兩個(gè)處理元件。
[0009] 圖2是復(fù)位同步過程的一個(gè)實(shí)施例的流程圖。
[0010] 圖3和圖4是分別由復(fù)位同步中的領(lǐng)導(dǎo)者和跟隨者執(zhí)行的操作的更詳細(xì)的流程 圖。
[0011] 圖5示出片上系統(tǒng)(S0C)設(shè)計(jì)的實(shí)施例。
[0012] 圖6示出包括多核處理器的計(jì)算系統(tǒng)的框圖的實(shí)施例。
【具體實(shí)施方式】
[0013] 在下列描述中,陳述眾多細(xì)節(jié)以提供對(duì)本發(fā)明的更透徹的解釋。然而,對(duì)本領(lǐng)域中 技術(shù)人員將顯而易見的是,在不具有這些特定的細(xì)節(jié)的情況下就可以實(shí)踐本發(fā)明。在其他 實(shí)例中,以框圖形式而非詳細(xì)地示出公知的結(jié)構(gòu)和設(shè)備,以免使本發(fā)明含糊。
[0014] 描述了用于在使用只寫方法僅作為對(duì)等設(shè)備來通信的一對(duì)處理元件(例如,知識(shí) 產(chǎn)權(quán)(IP)核、處理器核、處理器、片上系統(tǒng)處理核、集成電路或在相同的板(其具有可靠的 底層通信總線)上的設(shè)備,等等)之間同步復(fù)位操作的方法和裝置。本文中描述的技術(shù)允 許每一個(gè)處理元件檢測(cè)其對(duì)等設(shè)備進(jìn)入了以下狀態(tài):對(duì)等設(shè)備正在進(jìn)入復(fù)位、正退出復(fù)位、 正變得被禁用或以其他方式不可用(永久地不可用,或者因?yàn)橄到y(tǒng)正在進(jìn)入處理元件不起 作用的低功率狀態(tài))或者僅僅正在復(fù)位通信。因?yàn)檫@些對(duì)等設(shè)備僅使用寫入操作來彼此通 信,因此每一處理元件不能知道其對(duì)等設(shè)備是否接收到來自該處理元件的最后事務(wù),但是 這些處理元件仍然能夠同步對(duì)在它們之間的通信信道的復(fù)位。
[0015] 圖1示出能夠使用只寫通信協(xié)議(在該協(xié)議中,兩個(gè)處理元件之間的通信僅通過 寫入操作的使用而發(fā)生)、作為對(duì)等設(shè)備而彼此通信的兩個(gè)處理元件。
[0016] 參見圖1,處理單元101和102 (例如,處理器核、知識(shí)產(chǎn)權(quán)(IP)核、專用處理單元 等)是彼此通信的對(duì)等設(shè)備。處理單元101和102中的每一個(gè)可以在同一個(gè)集成電路(1C) 中或在不同的1C中。處理單元101和102中的每一個(gè)可以異步地進(jìn)入復(fù)位或退出復(fù)位、被 禁用、變得不可用或復(fù)位它們之間的通信信道(通信信道103)。
[0017] 在一個(gè)實(shí)施例中,通信信道103是處理器間通信信道。通信信道103用于在處理 單元101與102之間交換信息(例如,請(qǐng)求、狀態(tài)等)和其他消息。
[0018] 處理單元101包括處理邏輯101A和硬件端點(diǎn)邏輯101B,該邏輯101A用于在系 統(tǒng)中執(zhí)行與它們的指定功能相關(guān)聯(lián)的操作,這些操作包括本文中描述的復(fù)位同步操作,而 硬件端點(diǎn)邏輯101B用于使用通信信道103來與諸如處理單元102之類的一個(gè)或多個(gè)其他 處理單元通信(例如,傳輸)。類似地,處理單元102包括處理邏輯102A和硬件端點(diǎn)邏輯 102B,該邏輯102A用于在系統(tǒng)中執(zhí)行與它們的指定功能相關(guān)聯(lián)的操作,這些操作包括本文 中描述的復(fù)位同步操作,而硬件端點(diǎn)邏輯102B使用通信信道103來與諸如處理單元101之 類的一個(gè)或多個(gè)其他處理單元通信(例如,傳輸)。更具體而言,處理邏輯101A和處理邏輯 101B基于在存儲(chǔ)器101C中被置位的位指示來執(zhí)行關(guān)于在其自身與第二處理單元之間的只 寫復(fù)位同步的操作。注意,在替代實(shí)施例中,處理單元101和102不具有硬件端點(diǎn)單元,相 反,由軟件或固件來仿真所有的硬件動(dòng)作(例如,寫入到其他對(duì)等設(shè)備,等等)。
[0019] 處理單元101和102中的每一個(gè)都包括用于存儲(chǔ)來自各自的對(duì)等設(shè)備的一組指 示(例如,位)的存儲(chǔ)器。換句話說,處理單元101包括存儲(chǔ)來自處理單元102的位(位指 示)的存儲(chǔ)器,諸如,存儲(chǔ)器101C (例如,控制狀態(tài)寄存器(CSR))。同樣,處理單元102包括 存儲(chǔ)來自處理單元101的位的存儲(chǔ)器,諸如,存儲(chǔ)器102C(例如,CSR)。在一個(gè)實(shí)施例中,處 理單元可以用1置位(set-by-one)其對(duì)等設(shè)備的存儲(chǔ)器(例如,CSR)中的位,或用1清除 (clear-by-one)存儲(chǔ)在其自身的存儲(chǔ)器(例如,CSR)中的位。也就是說,處理單元101可 以對(duì)處理單元102的存儲(chǔ)器102C中的這些位中的每一個(gè)位置位,且反之亦然。通過用1置 位(或用1清除),即便對(duì)等設(shè)備多次發(fā)送相同的指示(位指示),處理單元也僅將此看作 是單個(gè)指示。為了在更新給定的存儲(chǔ)器(CSR)時(shí)防止任一側(cè)覆寫來自另一側(cè)的更新,使一 個(gè)對(duì)等設(shè)備對(duì)諸個(gè)位進(jìn)行置位且使一側(cè)清除相同的存儲(chǔ)器的諸個(gè)位是重要的。
[0020] 注意,在替代實(shí)施例中,可以用1置位并用0清除位指示,或者用0置位并用1清 除位指示,或者用0置位并用0清除位指示。
[0021] 在一個(gè)實(shí)施例中,指示的集合包括處理單元將不在通信信道103上傳送與復(fù)位同 步協(xié)議不相關(guān)的任何更多的事務(wù)且已經(jīng)復(fù)位其通信狀態(tài)的指示。這包括處理單元本身已經(jīng) 經(jīng)歷了復(fù)位或已經(jīng)退出復(fù)位但將經(jīng)歷復(fù)位的情況。在一個(gè)實(shí)施例中,該指示是強(qiáng)制性的,且 必須由一個(gè)或兩個(gè)處理單元支持。
[0022] 在一個(gè)實(shí)施例中,指示的集合包括處理單元已經(jīng)放棄或丟棄與復(fù)位同步協(xié)議不相 關(guān)的任何未經(jīng)處理的傳入消息的指示。在一個(gè)實(shí)施例中,該指示是強(qiáng)制性的,且必須由一個(gè) 或兩個(gè)處理單元支持。
[0023] 在一個(gè)實(shí)施例中,指示的集合包括這樣的指示:處理單元向?qū)Φ仍O(shè)備指示,已經(jīng)對(duì) 以上討論的兩個(gè)指示兩者置位,且請(qǐng)求該對(duì)等設(shè)備通過再次對(duì)以上經(jīng)置位的指示中的僅一 個(gè)置位來消除歧義。在此類情況下,處理單元清除兩個(gè)指示,使得該處理單元可以確定哪一 個(gè)指示由該對(duì)等設(shè)備再次置位。
[0024] 作為復(fù)位同步協(xié)議的部分,處理單元101和102使用這些指示將通知(諸如,它們 所處于的復(fù)位階段狀態(tài))發(fā)送到彼此,并且向另一處理單元通知關(guān)于使通信信道103復(fù)位 所采取的動(dòng)作。在一個(gè)實(shí)施例中,處理單元進(jìn)入復(fù)位或被禁用且無需繼續(xù)與對(duì)等處理單元 握手,并且僅需要對(duì)第一指示(例如,位)置位并關(guān)機(jī)。在進(jìn)入復(fù)位或被禁用之前,沒有確 收(ACK)或進(jìn)一步的通信是處理單元所需要的。
[0025] 在處理單元101和102中,硬件端點(diǎn)邏輯101A和101B是通信單元。在一個(gè)實(shí)施例 中,這些單元處理將信息和消息發(fā)送到其他處理單元,包括對(duì)其他處理單元的指示(例如, 位指示)的置位。在一個(gè)實(shí)施例中,這些單元處理門鈴(doorbell)和中斷,并且當(dāng)已在其 存儲(chǔ)器中對(duì)復(fù)位同步指示置位時(shí)生成對(duì)處理邏輯的中斷,使得該處理邏輯可以采取本文中 描述的動(dòng)作。
[0026] 在一個(gè)實(shí)施例中,作為復(fù)位同步協(xié)議的部分,處理單元101和102兩者臨時(shí)地禁用 它們的傳出通信量(traffic),兩個(gè)處理單元都從另一處理單元(其對(duì)等設(shè)備)接收其傳出 通信量被臨時(shí)地禁用的指示,每一個(gè)處理單元清除來自另一處理單元的任何殘留的傳入通 信量(使得在復(fù)位同步過程中的這一時(shí)刻,沒有新的通信量發(fā)生),并且隨后恢復(fù)通信。
[0027] 在一個(gè)或多個(gè)實(shí)施例中,本文中描述的技術(shù)使得:不利用超時(shí)/重試(這可能具有 假肯定(false positive)/假否定(false negative),并且導(dǎo)致復(fù)雜的重試邏輯);無需專 用邏輯就可處理給定的處理核的復(fù)位內(nèi)復(fù)位以及給定的處理元件與其對(duì)等設(shè)備之間的經(jīng) 交織的復(fù)位;在恢復(fù)通信之前,丟棄過時(shí)的消息;避免處理元件開始通信而其對(duì)等設(shè)備意 外地丟棄有效的傳入消息的情形;避免"死鎖"(即,沒有處理元件達(dá)到其中它無休止地等 待其對(duì)等設(shè)備的狀態(tài));避免"活鎖"(即,協(xié)議從不達(dá)到在處理元件之間發(fā)生無休止的信道 復(fù)位"往復(fù)"("ping-ping")的狀態(tài),其中,此類"往復(fù)"會(huì)阻止通信信道達(dá)到穩(wěn)定的操作 狀態(tài),并且與死鎖形成對(duì)比的是,在制定協(xié)議時(shí)進(jìn)行檢測(cè)要難得多);任一處理元件可以異 步地進(jìn)入復(fù)位而無需等待來自其對(duì)等設(shè)備的確收(ACK)(因?yàn)樵谠S多情況下,處理元件復(fù) 位發(fā)生意味著處理元件處于壞的狀態(tài)或監(jiān)視器(watchdog)期滿發(fā)生,并且由于對(duì)可能繁 忙的對(duì)等設(shè)備的依賴性,延遲處理元件的復(fù)位是不期望的);存在著供處理元件向?qū)Φ仍O(shè) 備指示該處理元件被禁用(即,沒有進(jìn)一步的通信是可能的)而無需涉及復(fù)雜的協(xié)議交換 (且不要求完全成熟的驅(qū)動(dòng)器)的簡(jiǎn)單方式,這有助于在對(duì)IP的拒絕服務(wù)(DoS)的情況的 情況下的安全性一一只要該處理元件能夠容易地向其對(duì)等設(shè)備指示它被禁用且無需完全 成熟的驅(qū)動(dòng)器,這允許這些對(duì)等設(shè)備檢測(cè)DoS而不增加對(duì)等設(shè)備的TCB (例如,如果操作簡(jiǎn) 單,則可以容易地從IP的ROM中來完成它);各種情況(進(jìn)入復(fù)位、退出復(fù)位,變得被禁用、 僅復(fù)位通信信道)都不要求不同的握手(簡(jiǎn)單起見);并且保證兩個(gè)處理元件變成操作的 并結(jié)束發(fā)現(xiàn)彼此,并且對(duì)復(fù)位退出順序不強(qiáng)加任何預(yù)先定義的約束。
[0028] 下面更詳細(xì)地描述協(xié)議的諸實(shí)施例。
[0029] 圖2是復(fù)位同步過程的一個(gè)實(shí)施例的流程圖。該過程由處理邏輯執(zhí)行,該處理邏 輯可以包括硬件(電路、專用邏輯,等等)、軟件(諸如,在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)器上運(yùn) 行的軟件)、固件或這三者的組合。在一個(gè)實(shí)施例中,該過程由兩個(gè)對(duì)等設(shè)備(處理單元) 執(zhí)行,一個(gè)被指定為"領(lǐng)導(dǎo)者"而一個(gè)被指定為"跟隨者",它們僅使用寫入操作來通信。領(lǐng) 導(dǎo)者和跟隨者的使用打破了對(duì)稱性(為了避免在對(duì)等設(shè)備之間的無休止的"往復(fù)")。在一 個(gè)實(shí)施例中,對(duì)于每個(gè)處理單元對(duì),這是固定的指定。盡管處理單元中的每一個(gè)可以異步地 開始復(fù)位同步,但是一旦開始,則跟隨者確保在其諸階段中不進(jìn)行到超過領(lǐng)導(dǎo)者,直到完成 同步為止。
[0030] 在圖2中,在一個(gè)實(shí)施例中,帶圓圈的數(shù)字指示對(duì)操作排序的限制。在一些情況下 (例如,伴隨和"**"出現(xiàn)的數(shù)字)對(duì)于哪些操作首先發(fā)生沒有限制。而且,諸個(gè)門反 映 "AND (與)"條件,使得在一些情況下,如果既滿足了某個(gè)內(nèi)部條