0確定處理器模塊316未傳遞同步消息時,處理器模塊320繼續(xù)等待以從處理器模塊316接收同步消息。處理器模塊320使同步計數(shù)器遞增。相反,當(dāng)處理器模塊320確定處理器模塊316已經(jīng)傳遞同步消息時,處理器模塊320確定該同步消息是否表示處理器模塊316與處理器模塊320同步。
[0135]例如,基于請求第一時間指令的第一任務(wù),處理器模塊316生成第一同步消息?;谡埱蟮诙r間指令的第二任務(wù),處理器模塊320生成第二同步消息。處理器模塊320從處理器模塊316接收第一同步消息?;诘谝煌较⒑偷诙较?,處理器模塊320確定主CPU204和檢查器CPU208是否同步。
[0136]例如,當(dāng)處理器模塊320將第一同步消息與第二同步消息進(jìn)行比較時。當(dāng)處理器模塊320確定第一同步消息與第二同步消息相同時,處理器模塊320確定主CPU204和檢查器CPU208同步。當(dāng)處理器模塊320確定主CPU204和檢查器CPU208同步時,處理器模塊320向處理器模塊316生成第二處理器同步信號。
[0137]基于第一處理器同步信號和第二處理器同步信號,處理器模塊316和處理器模塊320確定是否運行與應(yīng)用軟件的第一復(fù)本和第二復(fù)本關(guān)聯(lián)的任務(wù)。例如,當(dāng)處理器模塊316生成第一處理器同步信號并且接收第二處理器同步信號時,處理器模塊316運行與該應(yīng)用的第一復(fù)本和第二復(fù)本關(guān)聯(lián)的任務(wù)。類似地,當(dāng)處理器模塊320生成第二處理器同步信號并且接收第一處理器同步信號時,處理器模塊320運行與該應(yīng)用的第一復(fù)本和第二復(fù)本關(guān)聯(lián)的任務(wù)。
[0138]進(jìn)一步地,基于第一處理器同步信號和第二處理器同步信號,處理器模塊316和處理器模塊320確定是否發(fā)送和/或接收以太網(wǎng)分組。例如,處理器模塊316和處理器模塊320發(fā)送和接收與系統(tǒng)300關(guān)聯(lián)的數(shù)據(jù)分組。數(shù)據(jù)分組可以包括關(guān)于圖1和圖2描述的多個數(shù)據(jù)分組。僅作為非限定示例,處理器模塊316可以生成第一外出數(shù)據(jù)分組。當(dāng)處理器模塊316生成第一處理器同步信號并且接收第二處理器同步信號時,處理器模塊316傳送第一外出數(shù)據(jù)分組。
[0139]類似地,處理器模塊320可以生成第二外出數(shù)據(jù)分組。當(dāng)處理器模塊320生成第二處理器同步信號并且接收第一處理器同步信號時,處理器模塊320傳送第二外出數(shù)據(jù)分組。要理解,盡管僅描述傳送數(shù)據(jù)分組,但是本公開內(nèi)容的原理還適用于處理器模塊316和處理器模塊320中每個處理器模塊接收數(shù)據(jù)分組。
[0140]在又一實現(xiàn)中,可以基于同步點的密度對同步的粒度進(jìn)行控制。例如,如果操作系統(tǒng)正發(fā)送多個數(shù)據(jù)分組,那么其能夠使用單個檢查點來傳遞要發(fā)送的分組的數(shù)量和/或順序,因此減少保持同步所需的檢查點的數(shù)量。
[0141]基于同步計數(shù)器,調(diào)度器模塊312確定是否重起動系統(tǒng)300。例如,調(diào)度器模塊312將同步計數(shù)器的值與預(yù)確定的閾值進(jìn)行比較。預(yù)確定的閾值可以是與多個錯過的同步點關(guān)聯(lián)的值。例如,預(yù)確定的閾值可以是3。換言之,調(diào)度器模塊312確定主CPU204和檢查器CPU208失去同步3次。當(dāng)調(diào)度器模塊312確定同步計數(shù)器中的值大于預(yù)確定的閾值時,調(diào)度器模塊312指示系統(tǒng)300重起動。
[0142]參考圖4,圖示根據(jù)本公開內(nèi)容原理的處理器同步方法400的流程圖在404處開始。在408處,方法400對主寄存器B和檢查器寄存器B進(jìn)行復(fù)位。在412處,方法400將當(dāng)前的主CPU地址寫至主寄存器A。在416處,方法400將當(dāng)前的檢查器CPU地址寫至檢查器寄存器A。在420處,方法400將主寄存器A和檢查器寄存器A的邏輯“與(AND)”的結(jié)果寫至主寄存器B。在424處,方法400將主寄存器A和檢查器寄存器A的邏輯“與(AND)”的結(jié)果寫至檢查器寄存器B。在428處,方法400確定主寄存器B中的值是否與檢查器寄存器B中的值相同。如果真,則方法在432處繼續(xù)。如果假,則方法在412處繼續(xù)。在432處,方法400生成處理器同步信號。在436處,方法400釋放主CPU和檢查器CPU。方法在440處結(jié)束。
[0143]參考圖5,圖示根據(jù)本公開內(nèi)容原理的可替代處理器同步方法500的流程圖在504處開始。在508處,方法500生成第一同步消息。在512處,方法500確定是否收到第二同步消息。如果真,則方法500在520處繼續(xù)。如果假,則方法500在516處繼續(xù)。在516處,方法500使同步計數(shù)器遞增。方法500在512處繼續(xù)。在520處,方法500確定第一同步消息是否與第二同步消息相同。
[0144]如果真,則方法500在528處繼續(xù)。如果假,則方法500在524處繼續(xù)。在524處,方法500使同步計數(shù)器遞增。方法500在512處繼續(xù)。在528處,方法500生成第一同步信號。在532處,方法500確定是否接收第二同步信號。如果真,則方法500在536處繼續(xù)。如果假,則方法500在532處繼續(xù)。在536處,方法500釋放主CPU204和檢查器CPU208。方法500在540處結(jié)束。
[0145]已經(jīng)為了說明和描述目的提供上面對實施例的描述。描述不旨在是詳盡的或者限制本公開內(nèi)容。特定實施例的單獨元件或特征通常不局限于該特定實施例,而是可在適用時互換并且可以在選擇的實施例中使用,即便未具體地示出或描述。本發(fā)明還可以以多種方式變化。這樣的變化不應(yīng)被視為背離本公開內(nèi)容,并且所有這樣的修改旨在包含在本公開內(nèi)容的范圍內(nèi)。
[0146]本文中使用的術(shù)語“模塊”可以指下面的組件、可以是下面的組件的一部分,或者可以包括下面的組件:專用集成電路(ASIC)、電子電路、組合邏輯電路、現(xiàn)場可編程門陣列(FPGA)、運行代碼的處理器(共享的、專用的或它們的組合)、提供所描述的功能的其它適合的硬件組件、或者上面組件中一些組件或全部組件的組合,如在片上系統(tǒng)中。術(shù)語“模塊”可以包括存儲由處理器運行的代碼的存儲器(共享的、專用的或它們的組合)。
[0147]上面使用的術(shù)語“代碼”可以包括軟件、固件和/或微代碼,并且可以指程序、例程、函數(shù)、類和/或?qū)ο?。上面使用的術(shù)語“共享的”指來自多個模塊的一些代碼或全部代碼可以使用單個(共享的)處理器運行。此外,來自多個模塊的一些代碼或全部代碼可以由單個(共享的)存儲器存儲。上面使用的術(shù)語“組合”指來自單個模塊的一些或全部代碼可以使用一組處理器運行。此外,來自單個模塊的一些或全部代碼可以使用一組存儲器存儲。
[0148]本文描述的裝置和方法可以被由一個或多個處理器運行的一個或多個計算機(jī)程序?qū)崿F(xiàn)。計算機(jī)程序包括在非瞬態(tài)有形計算機(jī)可讀介質(zhì)上存儲的處理器可運行指令。計算機(jī)程序還可以包括存儲的數(shù)據(jù)。非瞬態(tài)有形計算機(jī)可讀介質(zhì)的非限定性示例是非易失性存儲器、磁性存儲和光存儲。
【主權(quán)項】
1.一種用于同步中央處理單元(CPU)的系統(tǒng),包括: 第一 CPU,將第一存儲器地址寫至第一寄存器; 第二 CPU,將第二存儲器地址寫至第二寄存器; 第一邏輯“與”模塊,基于所述第一存儲器地址和所述第二存儲器地址將第一值寫至第三寄存器; 第二邏輯“與”模塊,基于所述第一存儲器地址和所述第二存儲器地址將第二值寫至第四寄存器;以及 調(diào)度器模塊,基于所述第一值和所述第二值選擇性地生成處理器同步信號。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述第一邏輯“與”模塊對所述第一存儲器地址和所述第二存儲器地址執(zhí)行邏輯“與”功能。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述第一邏輯“與”模塊響應(yīng)于所述第一存儲器地址和所述第二存儲器地址相同而將“ I ”寫至所述第三寄存器。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述第二邏輯“與”模塊對所述第一存儲器地址和所述第二存儲器地址執(zhí)行邏輯“與”功能。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中所述第二邏輯“與”模塊響應(yīng)于所述第一存儲器地址和所述第二存儲器地址相同而將“ I ”寫至所述第四寄存器。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述調(diào)度器模塊響應(yīng)于所述第一值和所述第二值被設(shè)置為“I”而生成所述處理器同步信號。
7.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述調(diào)度器模塊響應(yīng)于所述第一值不等于所述第二值而不生成所述處理器同步信號。
8.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述第一CPU包括第一處理器模塊,并且其中所述第二 CPU包括第二處理器模塊。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述調(diào)度器模塊將所述處理器同步信號傳遞至所述第一處理器模塊和所述第二處理器模塊。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述第一處理器模塊響應(yīng)于接收所述處理器同步信號而選擇性地運行第一多個任務(wù),并且其中所述第二處理器模塊響應(yīng)于接收所述處理器同步信號而選擇性地運行第二多個任務(wù)。
11.一種用于同步中央處理單元(CPU)的方法,包括: 在同步點處生成第一同步消息; 在所述同步點處生成第二同步消息; 傳遞所述第一同步消息; 傳遞所述第二同步消息; 確定所述第二同步消息是否被傳遞; 確定所述第一同步消息是否被傳遞;以及 基于所述第一同步消息和所述第二同步消息確定是否運行多個任務(wù)。
12.根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括:基于所述第一同步消息和所述第二同步消息,確定第一 CPU和第二 CPU同步。
13.根據(jù)權(quán)利要求12所述的方法,進(jìn)一步包括:當(dāng)生成所述第一同步消息并且接收所述第二同步消息時,確定所述第一 CPU和所述第二 CPU同步。
14.根據(jù)權(quán)利要求13所述的方法,進(jìn)一步包括:響應(yīng)于確定所述第一CPU和所述第二CPU同步,生成第一處理器同步信號。
15.根據(jù)權(quán)利要求14所述的方法,進(jìn)一步包括:當(dāng)生成所述第二同步消息并且接收所述第一同步消息時,確定所述第一 CPU和所述第二 CPU同步。
16.根據(jù)權(quán)利要求15所述的方法,進(jìn)一步包括:響應(yīng)于確定所述第一CPU和所述第二CPU同步,生成第二處理器同步信號。
17.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括:響應(yīng)于接收所述第一處理器同步信號和所述第二同步信號,運行所述多個任務(wù)。
18.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括:響應(yīng)于未接收所述第一同步信號和所述同步信號中至少之一,不運行所述多個任務(wù)。
19.根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括:響應(yīng)于未接收所述第一同步消息和所述第二同步消息中至少之一,使同步計數(shù)器遞增。
20.根據(jù)權(quán)利要求19所述的方法,進(jìn)一步包括:響應(yīng)于所述同步計數(shù)器大于預(yù)確定的閾值,選擇性地確定是否重起動第一 CPU和第二 CPU。
【專利摘要】本申請?zhí)峁┮环N用于使處理器同步到相同的計算點的系統(tǒng)和方法。用于同步中央處理單元(CPU)的系統(tǒng)包括將第一存儲器地址寫至第一寄存器的第一CPU和將第二存儲器地址寫至第二寄存器的第二CPU。該系統(tǒng)進(jìn)一步包括基于第一存儲器地址和第二存儲器地址將第一值寫至第三寄存器的第一邏輯“與”模塊和基于第一存儲器地址和第二存儲器地址將第二值寫至第四寄存器的第二邏輯“與”模塊。該系統(tǒng)還包括調(diào)度器模塊,該調(diào)度器模塊基于第一值和第二值選擇性地生成處理器同步信號。
【IPC分類】G06F9-30
【公開號】CN104765587
【申請?zhí)枴緾N201410008511
【發(fā)明人】葉樹高, 江流, 胡凱
【申請人】艾默生網(wǎng)絡(luò)能源-嵌入式計算有限公司
【公開日】2015年7月8日
【申請日】2014年1月8日
【公告號】US20150193341