黃學進,崔 鑫,余 婷
(中國航發(fā)控制系統(tǒng)研究所,江蘇 無錫 214063)
時鐘同步是指調(diào)整系統(tǒng)中網(wǎng)絡(luò)設(shè)備或計算機的時鐘,使之與其它時鐘源的時間保持一致或者偏差限定在足夠小的范圍內(nèi)的過程[1]。時鐘同步是分布式仿真系統(tǒng)的核心技術(shù)之一,在分布式仿真系統(tǒng)中,數(shù)據(jù)采集、模型處理、人機交互等都分布在不同的節(jié)點上,因此進行時鐘同步的目的是維護一個全局一致的物理或邏輯時鐘,以使得系統(tǒng)中的信息、事件及各節(jié)點與時間有關(guān)的行為有一個全局一致的解釋[2]或者是提供一種仿真時間的推進機制,以確保節(jié)點發(fā)送和接收消息在時間邏輯上是完全正確的。分布式仿真系統(tǒng)往往具有節(jié)點操作系統(tǒng)類型多(Windows系統(tǒng)、Linux系統(tǒng)、RTX實時系統(tǒng)、LabVIEWRT實時系統(tǒng)等)、仿真周期小(毫秒級)、結(jié)構(gòu)靈活、分布范圍廣的特點,因此需要時鐘同步系統(tǒng)具備兼容多種操作系統(tǒng)、同步精度高(優(yōu)于1 ms)、靈活度高、成本低,同時能考慮系統(tǒng)負載,本文提出的時鐘同步系統(tǒng)時鐘校準周期要求大于1 h。目前常用于時鐘同步的技術(shù)方案有:GPS(global positioning system)時鐘同步技術(shù)[3]、IRIG-B(interrange instrumentation group - B)時鐘同步技術(shù)[4]、NTP(network time protocol)時鐘同步技術(shù)[5]、PTP(precision time protocol)時鐘同步技術(shù)[6]等。各種方案應(yīng)用于分布式仿真系統(tǒng)中各有優(yōu)缺點,如表1所示。
表1 時鐘同步方案對比
從表中可以看出,NTP同步與文章的同步設(shè)計目標最為接近,只是同步精度略有不足。近年來,許多文章對NTP進行了改進和優(yōu)化。諶華金[7]通過CPU時間戳計數(shù)器(RDTSC,read time stamp counter)實現(xiàn)了同步精度1 ms以內(nèi),但是同步周期最長只有200ms,對原系統(tǒng)的CPU和網(wǎng)絡(luò)負載影響較大。侯重遠[8]利用交換機的IEEE802.1p 優(yōu)先級調(diào)度功能,將同步精度提高到10~100,但除了需要交換機支持調(diào)度功能外,操作系統(tǒng)必須為實時操作系統(tǒng)(如文中使用的VxWorks),不能兼容非實時Windows系統(tǒng)。
黃沛芳[9]通過對信息包回路時延設(shè)置閾值進行數(shù)據(jù)篩選,只保留時延0.5 ms以內(nèi)的數(shù)據(jù),將同步精度提升到250,但這需要提前獲取網(wǎng)絡(luò)時延分布信息,且同步間隔只有1 min。因此,本文基于Windows系統(tǒng),在NTP協(xié)議基本原理上,通過邏輯時鐘構(gòu)建、網(wǎng)絡(luò)時延不對稱性優(yōu)化、時鐘頻率補償三方面進行優(yōu)化,實現(xiàn)設(shè)定的分布式仿真系統(tǒng)時間同步目標:同步精度優(yōu)于1 ms且校準時間間隔大于1 h。該時鐘同步方法基于UDP通訊,研究結(jié)果同樣可以推廣到實時操作系統(tǒng)中。
NTP是由RFC1305定義的時鐘同步協(xié)議,最早是由美國特拉華大學的David L.Mills教授在1982年提出[10],在實際的應(yīng)用過程中,可以采用NTP的簡化版本SNTP(簡單網(wǎng)絡(luò)時間協(xié)議)。這里主要介紹NTP以客戶機/服務(wù)器模式進行通信的過程,如圖1所示??蛻魴C首先要生成一個NTP查詢信息包,通過網(wǎng)絡(luò)發(fā)送到時間服務(wù)器;服務(wù)器收到后,根據(jù)本地時間生成一個NTP時間信息包發(fā)送給客戶機[11]。兩個信息包都帶有發(fā)送和接收的時間戳,根據(jù)這4個時間戳T1T2T3T4來確定客戶機和服務(wù)器之間的時間偏差和網(wǎng)絡(luò)時延。
圖1 NTP通訊過程
根據(jù)NTP通訊過程,可以抽象出模型如圖2所示[12]。
圖2 NTP通訊模型
記客戶端時間落后服務(wù)器θ,請求信息在網(wǎng)上傳播耗時為δ1,回復信息在網(wǎng)上傳播耗時為δ2,網(wǎng)絡(luò)傳輸?shù)耐笛訒r和為δ,則有:
(1)
4個未知數(shù),3個方程,無法獲得解析解。假設(shè)在相同的網(wǎng)絡(luò)條件下,客戶端與服務(wù)器通訊往返回路對稱,網(wǎng)絡(luò)時間延遲相等,即存在:
δ1=δ2
(1)
(3)
根據(jù)NTP基本原理設(shè)計NTP客戶端和服務(wù)器進行時鐘同步測試實驗,具體設(shè)計如下:
1)采用Windows系統(tǒng)時間作為時間戳;
2)通訊網(wǎng)絡(luò)使用內(nèi)部局域網(wǎng);
3)固定周期進行時鐘校準,如表2所示;
表2 系統(tǒng)時間下同步精度實驗設(shè)計
4)實驗過程中每秒進行同步精度測試并記錄數(shù)據(jù)。
實驗數(shù)據(jù)整理如圖3所示。
圖3 系統(tǒng)時間下時鐘同步精度變化
實驗結(jié)論:1)基于Windows系統(tǒng)時間進行同步,短時間波動量約15 ms,因此同步精度最高不會優(yōu)于15 ms;2)長時間看,校準周期內(nèi),同步偏差逐漸增大,分析認為這是服務(wù)器和客戶端之間時鐘晶振頻率不同導致。
分析時鐘同步過程如圖4所示,客戶端和服務(wù)器獲取來源于晶振的系統(tǒng)時間,在經(jīng)過Windows下的TCP/IP協(xié)議和網(wǎng)卡及網(wǎng)絡(luò)傳輸后,實現(xiàn)時間戳信息交換。因此,結(jié)合NTP基本原理和時鐘同步實驗結(jié)果,可以將引入誤差的環(huán)節(jié)分為3個部分:時間獲取、時間傳輸、晶振偏差。
圖4 時鐘同步精度影響因子
Windows時間系統(tǒng)主要包括實時時鐘(RTC)、基本輸入輸出系統(tǒng)(BIOS)時鐘和操作系統(tǒng)(OS)時鐘三部分[13]。RTC基于晶振和計時電路的硬件時鐘。BIOS時鐘硬件部分對RTC時間脈沖分頻產(chǎn)生中斷信號,然后通過中斷響應(yīng)程序進行軟件計時從而產(chǎn)生系統(tǒng)時鐘[14]。BIOS時鐘每秒產(chǎn)生64個中斷信號,中斷周期約為15.6 ms,即系統(tǒng)時鐘的時鐘精度約為15.6 ms。因此Windows系統(tǒng)常用的多個與時間有關(guān)的API,其時間分辨率只能達到15 ms,當高頻率調(diào)用讀取時間時,會發(fā)現(xiàn)多次返回時間相同,然后突然跳到下一個時間刻度,出現(xiàn)“時間停止”和“時間跳躍”現(xiàn)象,跳躍量約為15.6 ms,如圖5所示。
圖5 系統(tǒng)時間分辨率測試
因此,在Windows非實時系統(tǒng)下進行高精度時鐘同步時,首先必須獲取高精度的時間戳,這是進行高精度時鐘同步的基礎(chǔ)。
時間傳輸部分詳細過程如圖6所示,通訊傳輸延遲的不確定性主要受協(xié)議棧不確定性時延、網(wǎng)絡(luò)路由不確定性時延和操作系統(tǒng)進程調(diào)度等方面影響[15]。
圖6 NTP通訊傳輸過程及其不確定性時延
協(xié)議棧不確定性時延。TCP/IP五層網(wǎng)絡(luò)架構(gòu)包括應(yīng)用層、運輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層,NTP是應(yīng)用層的協(xié)議,下層使用運輸層的UDP協(xié)議。根據(jù)UDP/IP協(xié)議,時鐘同步報文的傳輸需要逐層進行。傳輸過程受到處理器處理速度、操作系統(tǒng)工作方式等種種因素的影響,時鐘同步報文在應(yīng)用程序中開始發(fā)送到報文到達物理傳輸介質(zhì)的時間一般無法控制,從而會引入誤差。
網(wǎng)絡(luò)路由不確定性時延。網(wǎng)絡(luò)路由時延包括固有的鏈路時延、路由器處理和排隊時延。報文在往返過程中不同的路由選擇會導致信號的往返時延不對稱。進行信息傳輸時,發(fā)送方首先將信息發(fā)送到本地網(wǎng)卡的緩沖區(qū),然后在網(wǎng)絡(luò)空閑時發(fā)送到接收方網(wǎng)卡的緩沖區(qū),因此在網(wǎng)絡(luò)負載高、任務(wù)繁忙的時候,接收方收到發(fā)送方信息的時間具有很大的不確定性,這就是網(wǎng)卡的緩存效應(yīng)。因此在局域網(wǎng)內(nèi)進行同步時,時間延遲經(jīng)常是不對稱的,公式計算出的時差時間差也是不準確的[16]。
操作系統(tǒng)進程調(diào)度。Windows系統(tǒng)采用時間片輪轉(zhuǎn)機制對進程進行調(diào)度,進程調(diào)度中內(nèi)存管理、UDP協(xié)議的封裝、網(wǎng)卡控制器里的排隊等,任何一次中斷或任務(wù)調(diào)度都會打斷協(xié)議棧的封裝或解析過程。這些操作都將會引入不可忽略的延遲波動,達到幾微秒至幾毫秒,造成時間延遲的不可預(yù)測。
因此,若要降低網(wǎng)絡(luò)傳輸延遲對同步精度的影響,需要在處理時間戳的過程中考慮如何降低消息包在網(wǎng)絡(luò)傳輸過程中不對稱通信鏈路帶來的影響。
分布式仿真系統(tǒng)中,長時間下時鐘的準確度取決于晶振頻率準確度。但是受溫度變化、電磁干擾、芯片老化等因素影響,晶振頻率會發(fā)生小幅度波動,其中溫度對晶振頻率影響最大[17]。由于工藝和材料的原因,即使同一生產(chǎn)線上標稱頻率相同的石英晶體,其實際頻率也是不同的,實際頻率與標稱頻率偏差率從量級到量級不等。以量級為例,時鐘1 h誤差達360 ms。因此,即使在每次時鐘同步過程中,從節(jié)點的授時精度很高,但由于頻率偏差帶來的守時能力差,隨著時間的推移,從節(jié)點和主節(jié)點的時鐘同步精度也會逐漸變差。Veitch D等人[18]通過實驗得出,短時間內(nèi),時鐘偏差隨時間的變化基本可以認為是線性的,但長時間下,時鐘偏差隨時間的變化是非線性的。
要提高從節(jié)點的守時能力,主要有兩個思路:一是更換時鐘源,選取高精度、高穩(wěn)定度、守時能力更強的晶體振蕩器。晶體振蕩器的穩(wěn)定度等級從一般晶體振蕩器、溫度補償型晶體振蕩器、恒溫晶體振蕩器、銣原子振蕩器逐步提高[19],同時晶體振蕩器的成本將變得十分昂貴;另外的思路則是采用數(shù)學算法對時鐘進行建模,以主節(jié)點的頻率作為基準對從節(jié)點進行頻率偏差補償,提高從節(jié)點的守時精度。
對于一個系統(tǒng)而言,時鐘可分為兩種:物理時鐘和邏輯時鐘。物理時鐘又稱為絕對時鐘或者墻上時鐘,對應(yīng)于現(xiàn)實世界中的時間,通常通過計算機內(nèi)置的時鐘芯片可以獲得物理時鐘。邏輯時鐘是指自行建立的時鐘,獨立于物理時鐘,但一般和物理時鐘有一定的換算關(guān)系[20]。分布式仿真系統(tǒng)中,只要求系統(tǒng)仿真的時間和真實的時間有一定關(guān)系,而不要求和真實時間完全相同,因此可使用邏輯時鐘。
高精度邏輯時鐘的構(gòu)建主要有兩種方案:1)基于系統(tǒng)硬件的高分辨率性能計數(shù)器。它從系統(tǒng)上電開始,以其晶振頻率進行計數(shù),可通過相應(yīng)的接口函數(shù)獲取其當前計數(shù)值和晶振頻率;2)計算機CPU中,有一個CPU時間戳計數(shù)器,記錄了自CPU上電后的時鐘周期數(shù),通過機器指令RDTSC(read time stamp counter)可以讀取這個值[22]。但是,多核計算機情況下讀取的RDTSC指令并不準確,原因包括:同一主板上每個核的TSC是不同步的,讀取的RDTSC可能在不同CPU上;CPU時鐘頻率可能變化,例如某些節(jié)能模式或超頻[21]。因此,本文選擇基于高分辨率性能計數(shù)器構(gòu)建邏輯時鐘。
高分辨率性能計數(shù)器提供函數(shù)QueryPerformanceFrequency用于獲取頻率,提供函數(shù)QueryPerformanceCounter用于獲取計數(shù)器的當前值u,利用兩次獲得的計數(shù)之差及時鐘頻率,就可算出經(jīng)歷的精確時間[22]:
(4)
取初始時刻計數(shù)值為u0,對應(yīng)的系統(tǒng)時間為t0,當前計數(shù)值為u(t),建立的邏輯時鐘時間為T,根據(jù)式則有:
(5)
經(jīng)測試,該邏輯時鐘的實用時鐘分辨率約為2,遠小于同步精度指標,可用于時鐘同步,如圖7所示。
圖7 邏輯時鐘分辨率測試
基于邏輯時鐘設(shè)計時間同步客戶端和服務(wù)器進行同步測試實驗,具體設(shè)計如下:
1)采用高精度邏輯時鐘作為時間戳;
2)通訊網(wǎng)絡(luò)使用內(nèi)部局域網(wǎng);
3)固定周期進行時鐘校準,如表3所示;
表3 系統(tǒng)時間下同步精度實驗設(shè)計
4)實驗過程中每秒進行同步精度測試并記錄數(shù)據(jù)。
實驗數(shù)據(jù)整理如圖8和圖9所示。
圖8 高精度時鐘下同步實驗結(jié)果
圖9 局部同步瞬時誤差和毛刺
根據(jù)實驗數(shù)據(jù),可以得出如下結(jié)論:
1)校準周期內(nèi),同步精度變化總體呈線性變化趨勢,變化速率約0.36 ms/min;
2)每5 min校準下同步精度達到1.8 ms,每20 min校準下同步精度達到7.2 ms。因此在本次測試環(huán)境下,要達到1 ms同步精度,則校準間隔至多只能160 s;
3)同步精度局部存在約0.5 ms的毛刺,無毛刺時存在0.2 ms的瞬時誤差;
4)回路時延大部分在0.8~1 ms之間,部分甚至超過1.4 ms,時延高的時候,同步精度更差。
因此,建立的邏輯時鐘有效,但還需要進一步優(yōu)化。
(6)
其中:δ1和δ2為隨機量,大小在(0,δ)之間。因此,網(wǎng)絡(luò)時延不對稱性越高,授時精度越差。
圖10 不等式法通訊過程
對應(yīng)每一次往返通訊過程都有:
(7)
由于δ為傳輸延遲,都是正值,因此可得:
(8)
記δk1是{δ11,δ21,…,δn1}中的最小值,δm2是{δ12,δ22,…,δn2}中的最小值,可得:
(9)
因此,可以將θ范圍縮小為:
(Tm3-Tm4)<θ<(Tk2-Tk1)
(10)
此時取真值范圍的中值作為時鐘偏差估計值,即:
(11)
此時估計值和真值的關(guān)系為:
(12)
再次設(shè)計時間同步客戶端和服務(wù)器進行對比實驗,具體設(shè)計如下:
1)采用高精度邏輯時鐘作為時間戳;
2)固定周期20 min進行時鐘校準;
3)網(wǎng)絡(luò)使用內(nèi)部局域網(wǎng),采用不等式法優(yōu)化回路往返時延的不對稱性;
4)實驗過程中每秒進行同步精度測試并記錄數(shù)據(jù),如圖11和圖12所示。
圖11 不等式法下同步實驗結(jié)果
圖12 不等式法下局部瞬時誤差
根據(jù)實驗數(shù)據(jù),可以得出如下結(jié)論:
1)回路時延比優(yōu)化前明顯減小,基本在0.8 ms以內(nèi);
2)同步精度毛刺消失,瞬時誤差下降到0.1 ms;
因此,經(jīng)過不等式法優(yōu)化,回路往返時延不對稱性對同步精度的影響明顯減小,同步精度線性變化的趨勢得到進一步加強。
3.3.1 補償系數(shù)模型
將客戶端在t時刻的邏輯時鐘表示為c(t),服務(wù)器邏輯時鐘表示為s(t),定義客戶端和服務(wù)器時間差為θ(t),根據(jù)式有:
(13)
(14)
θ(t)=s(t)-c(t)
(15)
其中t0為高精度時鐘建立時的系統(tǒng)時間,是一個常量。
理論上有:
Δt=Δs(t)=Δc(t)
(16)
(17)
但隨著時間的進行,客戶端和服務(wù)器的時間變化量并不相等,原因在于受環(huán)境條件的影響(如溫度、電壓、老化),時鐘頻率不斷的產(chǎn)生漂移。分布式仿真系統(tǒng)中,并不需要系統(tǒng)中時間與真實時間完全一致,只需要保持相同的時間基準即可。因此,本文以服務(wù)器時鐘為基準,對客戶端進行晶振頻率補償。
(18)
因此有:
(19)
當α=1時,表示客戶端真實時鐘晶振頻率與標稱頻率相同,與服務(wù)器時鐘快慢相同;當α<1時,表示客戶端真實時鐘晶振頻率小于標稱頻率,即本身時鐘相對服務(wù)器時鐘較慢;當α>1時,表示客戶端真實時鐘晶振頻率大于標稱頻率,即本身時鐘較快。
圖13 補償系數(shù)與時鐘相對快慢的關(guān)系
3.3.2 補償系數(shù)在線求解與迭代
記C(t)為客戶端補償后的理想時鐘,則有:
C(t)=s(t)
(20)
根據(jù)式(13)、式(19)和式(20),可得:
(21)
其中:θ0為建立時刻客戶端與服務(wù)器的時間差,是一個常量。
因此,根據(jù)式(15)和式(21):
(22)
結(jié)合式(13),可得:
(23)
將θ(t)對c(t)求導,可得:
(24)
即:
(25)
因此,理論分析可得出,若從時鐘相對主時鐘是嚴格穩(wěn)定的,即時鐘晶振頻率補償系數(shù)為常數(shù),那么時鐘偏差θ(t)是按線性變化的。
(26)
而由于隨著時間的推移,晶振頻率會發(fā)生漂移,當前補償?shù)玫降念l率過一段時間后已經(jīng)不夠準確了,需要再次進行頻率補償。因此,需要繼續(xù)研究時鐘頻率補償系數(shù)在線迭代問題。
記αi為第i次晶振補償系數(shù),Ci(t)為客戶端第i次迭代時的理想時鐘(與服務(wù)器時間保持一致)。則進行第i次迭代時,參照式(20)和(21)有:
(27)
此時客戶端邏輯時鐘c(t)為上次迭代時的理想時鐘,即:
(28)
同理可解得:
(29)
將θ(t)對c(t)求導,可得:
(30)
即:
(31)
應(yīng)用新的αi即可實現(xiàn)補償系統(tǒng)的動態(tài)迭代,從而使系統(tǒng)能夠維持高精度時鐘同步。
應(yīng)用高精度邏輯時鐘、不等式法優(yōu)化回路時延不對稱性和時鐘晶振頻率在線補償與迭代3種方法,設(shè)計時間同步客戶端和服務(wù)器進行同步實驗,客戶端工作過程如圖14所示:
圖14 客戶端工作流程
1)創(chuàng)建邏輯時鐘,使用不等式法與服務(wù)器同步一次;
4)使用記錄的數(shù)據(jù),采用最小二乘擬合得到補償系數(shù)α,更新客戶端時鐘并清空記錄的數(shù)據(jù),再轉(zhuǎn)步驟2)。
經(jīng)過約60 h的長試實驗,結(jié)果如圖15所示,從圖和數(shù)據(jù)中可以得出:1)實驗在137s后進入在線迭代環(huán)節(jié),初次擬合得到補償系數(shù)為α=0.999 993 35;2)時鐘補償系數(shù)α迭代次數(shù)達到12次,平均可以維持時間達到5 h;3)α在0.999 993 05~0.999 993 79之間波動,由于標稱頻率為3.58 MHz,所以實驗過程中實際晶振頻率與標稱頻率之間偏差量在22.2~24.9 Hz之間波動,波動量約2.7 Hz。
圖15 頻率補償在線迭代下同步效果
本文在介紹NTP基本原理的基礎(chǔ)上進行了時鐘同步精度影響因子分析,并針對性采用了構(gòu)建高精度邏輯時鐘、不等式法優(yōu)化回路時延不對稱性、時鐘晶振頻率在線補償3種解決策略,進行了時鐘同步優(yōu)化。通過長試實驗,驗證了優(yōu)化后的時鐘同步系統(tǒng),能有效的實現(xiàn)時鐘同步精度優(yōu)于1 ms且平均校準周期達到5 h。項目應(yīng)用時,可以將時鐘同步客戶端封裝為DLL,集成到各分布式仿真系統(tǒng)軟件中實現(xiàn)時鐘同步,具有較好的工程應(yīng)用價值。