亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用中央處理器內部的時間戳記計數(shù)器校準實時時鐘的方法

文檔序號:6618714閱讀:639來源:國知局
專利名稱:用中央處理器內部的時間戳記計數(shù)器校準實時時鐘的方法
技術領域
本發(fā)明涉及實時時鐘(Real Time Clock;RTC)的校準方法,特別涉及以電腦系統(tǒng)的中央處理器(CPU)內部的時間戳記計數(shù)器(Time Stamp Counter;TSC)為基準,用以校準實時時鐘的方法。
一般電腦系統(tǒng)中的實時時鐘,大多以晶體振蕩器配合R-C電路構成。然而,由于元件老化或是不匹配等問題,系統(tǒng)中的實時時鐘也會受到連帶影響,而失去其準確性。對于服務器系統(tǒng)(Server System)而言,在網絡上需要廣播日期信息的時間給用戶端,或對于電腦系統(tǒng)而言,所執(zhí)行的應用軟件程序可能需要日期信息的精確時間;如果系統(tǒng)內的實時時鐘失去其準確度的話,則系統(tǒng)的整體效能將會大打折扣,甚至發(fā)生錯誤而無法動作。因此,實在有必要針對實時時鐘提出一種有效的校準方法,以確保實時時鐘的準確度。
有鑒于此,本發(fā)明利用系統(tǒng)CPU(例如Intel PentiumⅡ)內部的時間戳記計數(shù)器為基準,使實時時鐘周期性地觸發(fā)一個校準過程,而讓實時時鐘的時間和時間戳記計數(shù)器計數(shù)次數(shù)所對應的時間兩者之間的誤差保持在一定的范圍之內,而達到校正實時時鐘的目的。
為達到上述目的,本發(fā)明提出一種使用電腦系統(tǒng)CPU內部的時間戳記計數(shù)器校準實時時鐘的方法,該方法包括如下步驟。
設定實時時鐘,使其周期性地每M秒觸發(fā)一校準過程執(zhí)行N次;而每執(zhí)行校準過程一次,就將第一計數(shù)值加1。
當校準過程執(zhí)行N次時,執(zhí)行如下步驟求出M秒內時間戳記計數(shù)器的實際計數(shù)值以及其名義計數(shù)值;其中,名義計數(shù)值為Z×M,Z為上述時間戳記計數(shù)器每秒的標準計次數(shù);求出實際計數(shù)值和名義計數(shù)值兩者之間的誤差值;使用上述誤差值求出對應的誤差時間,以便校準實時時鐘的時間值。
為讓本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合附圖做詳細說明。其中

圖1是顯示為實施本發(fā)明方法,而預先執(zhí)行的設定過程的流程圖。
圖2是顯示本發(fā)明的校準過程方法的流程圖。
圖3是顯示在校準過程中,所使用的誤差調整過程的流程圖。
依據(jù)本發(fā)明,使用電腦系統(tǒng)CPU內部的時間戳記計數(shù)器以校準實時時鐘的方法,包括以下步驟。
設定實時時鐘,使其周期性地每M秒觸發(fā)執(zhí)行N次的校準過程;亦即當校正過程執(zhí)行N次之后,以實時時鐘的時間值為基準的時間已過了M秒。
每執(zhí)行校準過程一次,就將第一計數(shù)值加1。
當校準過程執(zhí)行N次時,則執(zhí)行如下步驟通過時間戳記計數(shù)器每秒的標準計次數(shù)Z,可求出名義計數(shù)值Z×M(因為M秒是否精確尚待驗證);再將目前時間戳記計數(shù)器的計數(shù)值減去第1次執(zhí)行校正過程時戳記計數(shù)器的計數(shù)值,即可以得出戳記計數(shù)器在M秒時間中實際上的計數(shù)次數(shù)值。
求出實際計數(shù)值和名義計數(shù)值兩者之間的誤差值;若實際計數(shù)值大于名義計數(shù)值,即表示實時時鐘的時間慢了,若實際計數(shù)值小于名義計數(shù)值,即表示實時時鐘的時間快了。因此,使用誤差值即可求出對應的誤差時間,而得以校準實時時鐘的時間值。
下文將舉一實施例,并參照圖1~3詳細說明本發(fā)明的運作。
設定過程圖1是顯示為實施本發(fā)明方法而預先執(zhí)行的設定過程的流程圖。
首先,由系統(tǒng)所使用的CPU型號速度(例如CPU為PentiumⅡ 233 MHz)得出其內部處理器的時鐘脈沖周期;亦即求出系統(tǒng)內部時間戳記計數(shù)器,計數(shù)一次時所需的時間。再由上述時鐘脈沖周期得出上述時間戳記計數(shù)器每秒的標準計數(shù)次數(shù)Z。接著,屏蔽中斷運作,此時任何中斷請求均不會被受理,以確保在重新導入新的中斷過程時不會受到其他中斷請求的干擾。然后,存儲INT 70h中斷向量所指向的過程,而以本發(fā)明的校準過程取而代之。之后,再將實時時鐘設定為每M秒產生N次中斷請求(IRQ 8),以便觸發(fā)校準過程。最后,設定第一計數(shù)值count1為0,再恢復正常中斷運作,從而完成設定過程。在本實施例中,設定實時時鐘為每秒產生1024次中斷請求。
實時時鐘發(fā)出的中斷請求為IRQ 8,它會觸發(fā)INT 70h中斷向量所指向的過程;因此,在設定過程中即以本發(fā)明的校準過程作為一新的INT 70h過程,以取代INT 70h中斷向量原先所指向的過程。所以,當實時時鐘周期性地發(fā)出中斷請求時,就觸發(fā)執(zhí)行本發(fā)明的校準過程。
校準過程圖2為顯示本發(fā)明校準過程方法的流程圖。
在詳述本發(fā)明校準過程之前,先說明各個存儲器緩沖區(qū)的存儲值所代表的意義如下。
A校準過程啟動后第一次或是校準過程中的調整動作發(fā)生后,第一次由時間戳記計數(shù)器所讀取的計數(shù)次數(shù)值。
B經過M秒后,由時間戳記計數(shù)器所讀到的計數(shù)次數(shù)值。
C第一次讀取時間戳記計數(shù)器之后,在M秒的內時間戳記計數(shù)器的實際計數(shù)次數(shù),即等于B-A。
D、E經過M秒后,實際計數(shù)次數(shù)與名義計數(shù)次數(shù)兩者之間的差值。
Z時間戳記計數(shù)器1秒內的標準計數(shù)次數(shù)。
count1第1次讀取時間戳記計數(shù)器后,通過實時時鐘觸發(fā)而執(zhí)行校準過程的次數(shù)(count1每經過M秒即被重新設置為1)。
count2從第1次讀取時間戳記計數(shù)器之后,實時時鐘認為自己本身所經過的秒數(shù)。
count3與時間戳記計數(shù)器的計數(shù)值相比較后,實時時鐘的時間偏差。
應用本發(fā)明,電腦系統(tǒng)一執(zhí)行上述設定之后,系統(tǒng)的實時時鐘就會每秒發(fā)出1024次中斷請求(IRQ 8),而周期性地執(zhí)行下述的校準過程。如圖2所示,校準過程包括如下步驟。
讀取實時時鐘的狀態(tài)(步驟1),校準過程是否由實時時鐘的周期性中斷請求所觸發(fā),可從實時時鐘中的寄存器狀態(tài)得知。若判定校準過程并非由實時時鐘的周期性中斷請求所觸發(fā)(步驟2),則結束校準過程。
若判定校準過程系由實時時鐘的周期性中斷請求所觸發(fā),則讀取時間戳記計時器的計次值TSC_count(步驟3)。接著,判定第一計數(shù)值count1是否為0(步驟4)。
若判定為0(表示校準過程是第1次被執(zhí)行),則設定第二、三計數(shù)值count2、count3為0,并將讀到的上述時間戳記計時器的計數(shù)次數(shù)值TSC_count存儲至寄存器A(步驟10)。接著,再將第一計數(shù)值count1的值加1(步驟11);之后,結束校準過程。
若判定第一計數(shù)值count1不為0,則繼續(xù)判定count1是否等于1024(步驟5);亦即判定實時時鐘的時間是否經過1秒。若判定count1不等于1024,則將第一計數(shù)值count1的值加1(步驟11);之后,結束校準過程。
若步驟5判定第一計數(shù)值count1為1024(表示實時時鐘的時間已經過1秒),則在步驟6中執(zhí)行以下的動作讀取目前實時時鐘的時間值RTC_time;將目前時間戳記計時器的值存儲于寄存器B中;將寄存器B中的值減去寄存器A中的值,并將B-A的值存儲于寄存器C之中;以及,將第二計數(shù)值count2加1。其中,count2的值表示實時時鐘認為本身所經過的時間為1秒,寄存器C中的值表示從第1次讀取時間戳記計數(shù)器經過1秒之后,時間戳記計數(shù)器的實際計數(shù)次數(shù)。
將第二計數(shù)值count2乘以時間戳記計數(shù)器每秒的標準計數(shù)次數(shù)Z,而得到名義計數(shù)值Z×count2,再求得寄存器C中實際計數(shù)次數(shù)的存儲值和名義計數(shù)值兩者之間的差值(C-Z×count2),并將其存儲于寄存器D和E中(步驟7)。
利用上述寄存器C中的存儲值和名義計數(shù)值兩者之間的差值,進行誤差調整過程(步驟8),求出應加以修正的時間誤差值(也就是,實時時鐘的時間偏差值),作為上述第三計數(shù)值count3的內容,用以校準實時時鐘的時間值。
最后,將調校過的實時時鐘時間值取代修正上述實時時鐘的時間值,以寄存器B的存儲值取代寄存器A的存儲值;并將第一計數(shù)值設定為1,第二、第三計數(shù)值設定為0(步驟9)。于是完成校準過程。
誤差調整過程誤差調整過程主要包括如下步驟。
(1)比較寄存器C的存儲值和名義計數(shù)值,若兩者之間的差異值(存儲于寄存器D之中)不小于一特定誤差容許值,則執(zhí)行下一步驟;否則,將第一計數(shù)值設定為1,結束校準過程。
(2)將差異值轉換為實時時鐘的時間偏差值。
(3)若寄存器C存儲值不小于名義計數(shù)值,表示實時時鐘的時間較正常為慢,則將時間偏差值加上實時時鐘的時間值,而得到經調校過的實時時鐘時間值;若寄存器C存儲值小于名義計數(shù)值,表示實時時鐘的時間較正常為快,則由實時時鐘的時間值中減去時間偏差值,而得到經調校過的實時時鐘時間值。
下文將配合圖3所示誤差調整過程的流程圖,說明誤差調整過程的動作。
當校準過程進行至誤差調整過程(步驟8)時,首先,判定寄存器D中的值是否大于等于0(步驟80);若大于等于0,則執(zhí)行步驟82;若小于0,則將寄存器D中的值取絕對值(步驟81)之后,再執(zhí)行步驟82。
判定時間戳記計數(shù)器的實際計數(shù)次數(shù)和名義計數(shù)次數(shù)兩者之間的誤差值(即寄存器D的值)是否超出容許的預定范圍(步驟82)。在此實施例中,誤差容許范圍系設定為時間戳記計數(shù)器每秒的標準計次數(shù)Z(也就是說,對應的實時時鐘的誤差容許范圍為1秒之內)。
若D小于Z,則由于尚在誤差范圍內,不必調整實時時鐘的時間,所以將第一計數(shù)值count1重新設定為1而結束校準過程。
若是D大于等于Z,則重復執(zhí)行步驟83和步驟84,直到寄存器D中的值小于Z為止。其中,每執(zhí)行步驟83一次,就將寄存器D的值減去Z并且存回寄存器D,并將第3計數(shù)值count3的值加1(秒)。所以,計數(shù)次數(shù)的誤差值得以轉換成由count3所表示時間偏差值。
之后,在步驟85中,若判定時間戳記計數(shù)器的實際計數(shù)次數(shù)大于等于名義計數(shù)次數(shù)(即E≥0),表示實時時鐘較正常情形為慢,所以將count3的時間偏差值加至實時時鐘的時間RTC_time上,而達到調校實時時鐘的目的。
在步驟85中,若判定時間戳記計數(shù)器的實際計數(shù)次數(shù)小于名義計數(shù)次數(shù)(即E<0),表示實時時鐘較正常情形為快,所以由實時時鐘的時間RTC_time減去count3的時間偏差值,而達到調校實時時鐘的目的。
雖然本發(fā)明已以較佳實施例揭示如上,但并非用以限定本發(fā)明,任何熟悉本領域技術的人,在不脫離本發(fā)明的精神和范圍內,可做更動和修改,因此本發(fā)明的保護范圍由所附的權利要求書所界定的范圍確定。
權利要求
1.一種使用電腦系統(tǒng)的中央處理器內部的時間戳記計數(shù)器以校準實時時鐘的方法,其特征在于所述方法包括下述步驟設定實時時鐘,使其周期性地每M秒觸發(fā)一校準過程并執(zhí)行N次;每執(zhí)行所述校準過程一次,就將第一計數(shù)值加1;當所述校準過程執(zhí)行N次時,執(zhí)行如下步驟求出M秒內所述時間戳記計數(shù)器的實際計數(shù)值以及其名義計數(shù)值;其中,所述名義計數(shù)值為Z×M,Z為所述時間戳記計數(shù)器每秒的標準計次數(shù);求出所述實際計數(shù)值和所述名義計數(shù)值兩者之間的誤差值;使用所述誤差值求出對應的誤差時間,以便校準實時時鐘的時間值。
2.如權利要求1所述的方法,其特征在于,通過所使用系統(tǒng)的中央處理器型號求出所述時間戳記計數(shù)器計數(shù)一次所需的時間,再據(jù)以求出所述時間戳記計數(shù)器每秒的標準計次數(shù)Z。
3.如權利要求1所述的方法,其特征在于,所述實時時鐘周期性地發(fā)出中斷請求IRQ 8,以觸發(fā)所述校準過程。
4.如權利要求3所述的方法,其特征在于,所述電腦系統(tǒng)INT 70h中斷向量所指向過程預先被存儲起來,而以所述校準過程取而代之。
5.如權利要求1所述的方法,其特征在于,M秒內所述時間戳記計數(shù)器的實際計數(shù)值由在M秒時所述時間戳記計數(shù)器的計數(shù)次數(shù)值減去初始計數(shù)值而得;所述初始計數(shù)值為所述校準過程第1次執(zhí)行,或是在所述實時時鐘經過校準后第1次由所述時間戳記計數(shù)器讀得的計數(shù)次數(shù)。
6.一種使用電腦系統(tǒng)的中央處理器內部的時間戳記計數(shù)器以校準實時時鐘的方法,其特征在于,校準過程包括如下步驟讀取所述時間戳記計數(shù)器的內容;判定所述第一計數(shù)值是否為0;若不為0,則執(zhí)行下一步驟;若為0,則將第二計數(shù)值和第三計數(shù)值均設定為0,將讀得的所述時間戳記計數(shù)器的內容存儲于裝置A,再將所述第一計數(shù)值加1之后,結束所述校準過程;判定所述第一計數(shù)值是否等于一預設次數(shù)值若等于該值,則進行下一步驟;若不等于該值,則將所述第一計數(shù)值加1之后,結束所述校準過程;讀取所述實時時鐘的時間值;將所述第二計數(shù)值加1,將所述時間戳記計數(shù)器此時的內容記錄于一裝置B,并計算所述裝置B中的存儲值和所述裝置A中的存儲值兩者之間的差值,并將其存儲于裝置C;將所述第二計數(shù)值乘以所述時間戳記計數(shù)器每秒的標準計次數(shù),而得到名義計數(shù)值;利用所述裝置C存儲值和所述名義計數(shù)值兩者之間的差值,進行誤差調整過程,求出應加以修正的時間誤差值作為所述第三計數(shù)值的內容,用以校準所述實時時鐘的時間值;將調校過的實時時鐘時間值取代所述實時時鐘的時間值,以裝置B存儲值取代裝置A存儲值;將所述第一計數(shù)值設定為1,將所述第二、第三計數(shù)值設定為0。
7.如權利要求6所述的方法,其特征在于,所述誤差調整過程包括如下步驟比較所述裝置C存儲值和所述名義計數(shù)值,若兩者之間的差異值不小于一特定誤差容許值,則執(zhí)行下一步驟;否則,將所述第一計數(shù)值設定為1,結束所述校準過程;將所述差異值轉換為所述應修正的時間誤差值,其中若所述裝置C存儲值不小于所述名義計數(shù)值,則將所述時間誤差值加上所述實時時鐘的時間值,而得到經調校過的實時時鐘時間值;若所述裝置C存儲值小于所述名義計數(shù)值,則由所述實時時鐘的時間值中減去所述時間誤差值,而得到經調校過的實時時鐘時間值。
8.如權利要求6所述的方法,其特征在于,還包括設定過程,在所述設定過程中,由所使用系統(tǒng)的中央處理器的型號速度求出所述時間戳記計數(shù)器計數(shù)一次所需的時間,再據(jù)以得出所述時間戳記計數(shù)器每秒的標準計次數(shù)。
9.如權利要求6所述的方法,其特征在于,還包括設定過程,在執(zhí)行所述校準過程的前,由所述設定過程得出所述時間戳記計數(shù)器每秒的標準計次數(shù),并將第一計數(shù)值設定為0。
10.如權利要求6所述的方法,其特征在于,還包括設定過程,在所述設定過程中,設定實時時鐘,使其周期性觸發(fā)所述校準過程的執(zhí)行,而每秒執(zhí)行的次數(shù)則為所述預設次數(shù)值。
11.如權利要求10所述的方法,其特征在于,所述實時時鐘周期性地發(fā)出中斷請求IRQ 8,以觸發(fā)所述校準過程。
12.如權利要求11所述的方法,其特征在于,所述電腦系統(tǒng)的INT 70h中斷向量所指向的過程預先被存儲起來,而以所述校準過程取而代之。
13.如權利要求6所述的方法,其特征在于,當執(zhí)行所述校正過程時,先讀取所述實時時鐘的狀態(tài),以判定所述校準過程是否由所述實時時鐘的周期性中斷請求所觸發(fā)啟動;若是,則繼續(xù)執(zhí)行所述校準過程,否則結束所述校準過程。
全文摘要
一種使用電腦系統(tǒng)的中央處理器內部的時間戳記計數(shù)器來校準實時時鐘的方法,主要是以電腦系統(tǒng)的內部的時間戳記計數(shù)器為基準,讓實時時鐘周期性地觸發(fā)一校準過程,而讓實時時鐘的時間和時間戳記計數(shù)器計數(shù)次數(shù)的對應時間兩者之間的誤差保持在一定的范圍的內,從而達到校正實時時鐘的目的。
文檔編號G06F11/28GK1307278SQ0010181
公開日2001年8月8日 申請日期2000年1月25日 優(yōu)先權日2000年1月25日
發(fā)明者蔡俊男 申請人:神達電腦股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1