梁欣穎,王旭昊
(中國航空工業集團公司西安航空計算技術研究所,西安 710065)
時間調度表是一種基于時間分區的調度方法,該方法將處理器時間劃分區,分區之間采用時間窗口調度機制,通過時間調度表進行配置,分區間沒有優先級之分[1]。余度系統一般采用雙握手的同步方法消除雙通道間的時間差[2],在基于時間調度表的雙通道系統中,加電同步采用傳統的同步方法可以消除系統上電后進入實時處理前的時間差,但是周期同步是在實時任務中處理的,實時任務本身被劃分在某個時間窗口內,該時間窗口固定,因此雙握手方法失效。為解決該問題,本文提出了一種基于時間調度表的雙通道同步方法。
該雙通道系統的任務周期可分為10ms和40ms,如系統控制功能和重構系統的任務的周期為10ms;該系統與其他系統的信息通信、部分控制計算功能周期為40ms。為保證通道間數據的一致性以及數據的延時,采用基于時間調度表的確定性的時序調度,具體時序見圖1。我們將實時任務定為一個大幀周期為40ms,可分為4個小幀,每個小幀10ms。每個小幀被劃分為5個時間窗P1到P5,T1到T5為五個任務隊列,分別對應五個時間窗。每小幀的任務隊列必須在對應的時間窗口內完成。其中T4任務隊列的周期為40ms,且T4任務隊列若順序執行,其執行時間大于10ms,故將T4任務隊列組劃分為四個子任務隊列,T4-1到T4-4,每小幀的P4窗口僅執行一個子任務隊列。
為保證兩通道的每個小幀同時開始執行,需要每小幀進行周期同步,這種同步方式,我們稱為小幀同步,小幀同步屬于T1任務。對于其他任務,這樣的策略可以滿足同步的要求,但對于T4任務,需進行大幀同步。為保證雙通道間T4任務的一致性,我們對大幀的四個小幀增加一個小幀號,根據小幀號決定當前時間窗執行哪個子任務,即保證雙通道的小幀號一致。大幀同步也屬于T1任務隊列。

圖1 控制時序圖
若采用傳統的雙握手策略,假設A、B通道當前系統時間差為TD,第一次握手采用確定時間的高電平輸出,第二次握手采用低電平,一旦檢測到對方為低,則第二次握手結束,最長等待時間一定,當到達如圖2所示的同步點時,雙通道暫時達到了同步的目的,其余的T1任務可認為是同一時刻執行。由于T1任務處于時間窗P1,雙通道的P1相同,當P1的時間窗結束時,時間差TD’重新出現,小幀同步失效。
為消除時間窗對雙握手策略的影響,分區P1采用可調整的時間窗。第一次握手前,先檢測對方通道是否先執行小幀同步任務(即檢測到對方輸出高電平),若對方通道先執行,則將本通道的分區P1時間窗減小若干個調度周期。這樣,當P1的時間窗口結束時,不會出現新的較大的時間差,見圖3。

圖2 P1調整前

圖3 P1調整后
大幀同步的目的在于雙通道間的小幀號一致,使得在相同時刻大任務幀內P4窗口執行的T4的子任務相同。在小幀同步成功后,大幀同步通過通道間通訊來讀取對方通道的小幀序號來進行同步判斷。
在大任務幀的最后一幀(即第4小幀)進行一次大幀同步,從交叉傳輸的數據中獲取對方通道的小幀號,與本通道小幀號對比,若一致則大幀同步成功,否則大幀同步失敗。大幀同步應在小幀同步后進行。
(1)小幀再同步。當小幀失步(即小幀同步失敗,雙握手不成功)后,需遵循備份跟隨主控的原則讓備份跟上主控的節拍,該處理措施稱為小幀再同步。再同步過程中需關閉中斷,故不需要再對時間窗口進行調整。
主控通道失步后,主控通道不進行同步恢復;備份通道失步后,應立即再握手,第一次握手查詢時間應大于正常同步查詢時間,第二次握手查詢時間遠大于正常同步查詢時間;若再握手失敗,備份通道可以取消小幀同步并上報小幀再同步失敗。為了增加小幀再同步成功的概率,可以將小幀再同步的握手過程重復若干次。
(2)大幀同步恢復。當大幀同步失敗后,也遵循備份跟隨主控的原則讓備份跟上主控的節拍。具體方法為主控通道不做處理,備用通道將本通道的小幀號設置為主通道的小幀號,直到最后一幀再次檢測到大幀同步成功。
本文通過對采用分區調度時間的確定性雙余度系統同步需求的分析,提出了一種可調整分區的雙通道同步方法。該方法采用小幀同步和大幀同步相結合的周期同步策略,并給出了同步失敗后的同步恢復處理措施。為雙余度系統的高可靠性提供基石。該方法可廣泛應用于采用確定性時間調度的余度系統的同步機制中。