CN1151433C - 用中央处理器内部的时间戳记计数器校准实时时钟的方法 - Google Patents
用中央处理器内部的时间戳记计数器校准实时时钟的方法Info
- Publication number
- CN1151433C CN1151433C CNB001018124A CN00101812A CN1151433C CN 1151433 C CN1151433 C CN 1151433C CN B001018124 A CNB001018124 A CN B001018124A CN 00101812 A CN00101812 A CN 00101812A CN 1151433 C CN1151433 C CN 1151433C
- Authority
- CN
- China
- Prior art keywords
- time
- value
- count value
- real
- time clock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Electric Clocks (AREA)
Abstract
一种使用电脑系统的中央处理器内部的时间戳记计数器来校准实时时钟的方法,主要是以电脑系统的内部的时间戳记计数器为基准,让实时时钟周期性地触发一校准过程,而让实时时钟的时间和时间戳记计数器计数次数的对应时间两者之间的误差保持在一定的范围的内,从而达到校正实时时钟的目的。
Description
技术领域
本发明涉及实时时钟(Real Time Clock;RTC)的校准方法,特别涉及以电脑系统CPU内部的时间戳记计数器(Time Stamp Counter;TSC)为基准,用以校准实时时钟的方法。
背景技术
一般电脑系统中的实时时钟,大多以晶体振荡器配合R-C电路构成。然而,由于元件老化或是不匹配等问题,系统中的实时时钟也会受到连带影响,而失去其准确性。对于服务器系统(Server System)而言,在网络上需要广播日期信息的时间给用户端,或对于电脑系统而言,所执行的应用软体程序可能需要日期资讯的精确时间;若是其系统内的实时时钟失去其准确度的话,则系统的整体效能将会大打折扣,甚至发生错误而无法动作。因此,实在有必要针对实时时钟提出一种有效的校准方法,以确保实时时钟的准确度。
发明内容
有鉴于此,本发明利用系统CPU(例如Intel Pentium II)内部的时间戳记计数器为基准,使实时时钟周期性地触发一个校准过程,而让实时时钟的时间和时间戳记计数器计数次数所对应的时间两者间的误差保持在一定的范围的内,而达到校正实时时钟的目的。
为达到上述目的,本发明提出一种使用电脑系统CPU内部的时间戳记计数器校准实时时钟的方法,该方法包括如下步骤。
设定实时时钟,使其周期性地每M秒触发一校准过程执行N次;而每执行上述校准过程一次,就将第一计数值加1。
当上述校准过程执行N次时,执行如下步骤:求出M秒内时间戳记计数器的实际计数值以及其名义计数值;其中,上述名义计数值为Z×M,Z为上述时间戳记计数器每秒的标准计次数;求出上述实际计数值、和上述名义计数值两者间的误差值;使用上述误差值求出对应的误差时间,以便校准实时时钟的时间值。
依据本发明的另一个方面,提供了一种使用电脑系统CPU内部的时间戳记计数器以校准实时时钟的方法,其校准过程包括如下步骤:读取所述时间戳记计数器的内容;判定所述第一计数值是否为0;若不为0,则执行下一步骤;若为0,则将第二计数值和第三计数值均设定为0,将读得的所述时间戳记计数器的内容存储装置A,再将所述第一计数值加1之后,结束所述校准过程;判定所述第一计数值是否等于一预设次数值;若等于该值,则进行下一步骤;若不等于该值,则将所述第一计数值加1之后,结束所述校准过程;读取所述实时时钟的时间值;将所述第二计数值加1,将所述时间戳记计数器此时的内容记录于一装置B,并计算所述B装置中的存储值和所述装置A中的存储值两者间的差值,并将其存储于一C装置;将所述第二计数值乘以所述时间戳记计数器每秒的标准计次数,而得到名义计数值;利用所述C装置记录值和所述名义计数值两者间的差值,进行一误差调整过程,求出应加以修正的时间误差值作为所述第三计数值的内容,用以校准所述实时时钟的时间值;将调校过的实时时钟时间值取代所述实时时钟的时间值,以B装置存储值取代A装置存储值;将所述第一计数值设定为1,将所述第二、第三计数值设定为0。
附图概述
为让本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合附图做详细说明。其中:
图1是显示为实施本发明方法,而预先执行的设定过程的流程图。
图2是显示本发明的校准过程方法的流程图。
图3是显示在校准过程中,所使用的误差调整过程的流程图。
本发明的较佳实施方式
依据本发明,使用电脑系统CPU内部的时间戳记计数器以校准实时时钟的方法架构,包括以下步骤。
设定实时时钟,使其周期性地每M秒触发执行N次的校准过程;亦即当校正过程执行N次之后,以实时时钟的时间值为基准的时间已过了M秒。
每执行上述校准过程一次,就将第一计数值加1。
当上述校准过程执行N次时,则执行如下步骤:
通过上述时间戳记计数器每秒的标准计次数Z,可求出名义上的计数值Z×M(因为M秒是否精确尚待验证);再将目前时间戳记计数器的计数值减去第1次执行校正过程时戳记计数器的计数值,即可以得出戳记计数器在M秒时间中实际上的计数次数值。
求出上述实际计数值和上述名义计数值两者间的误差值;若上述实际计数值大于上述名义计数值,即表示实时时钟的时间慢了,若上述实际计数值小于上述名义计数值,即表示实时时钟的时间快了。因此,使用上述误差值即可求出对应的误差时间,而得以校准实时时钟的时间值。
下文将举一实施例,并参照图1~3详细说明本发明的运作。
设定过程
图1是显示为实施本发明方法而预先执行的设定过程的流程图。
首先,由系统所使用的CPU型号速度(例如CPU为Pentium II 233MHz)得出其内部处理器的时钟脉冲周期;亦即求出系统内部时间戳记计数器,当其计数一次时所需的时间。再由上述时钟脉冲周期得出上述时间戳记计数器每秒的标准计数次数Z。接著,屏蔽中断运作,此时任何之中断请求均不会被受理,以确保在重新导入新之中断过程时不会受到其他中断请求的干扰。然后,存储INT 70h中断向量所指向的过程,而以本发明的校准过程取而代的。之后,再将实时时钟设定为每M秒产生N次中断请求(IRQ 8),以便触发校准过程。最后,设定一第一计数值count1为0,再恢复正常中断运作,从而完成设定过程。在本实施例中,设定实时时钟为每秒产生1024次中断请求。
实时时钟发出之中断请求为IRQ 8,它会触发INT 70h中断向量所指向的过程;因此,在设定过程中即以本发明的校准过程作为一新的INT 70h过程,以取代INT 70h中断向量原先所指向的过程。所以,当实时时钟周期性地发出中断请求时,就触发执行本发明的校准过程。
校准过程
图2为显示本发明校准过程方法的流程图。
在详述本发明校准过程的前,先说明各个存储器缓冲区的存储值所代表的意义如下。
A:校准过程启动后第一次或是校准过程中的调整动作发生后,第一次由时间戳记计数器所读取的计数次数值。
B:经过M秒后,由时间戳记计数器所读到的计数次数值。
C:第一次读取时间戳记计数器之后,在M秒的内时间戳记计数器的实际计数次数,即等于B-A。
D、E:经过M秒后,实际计数次数与名义计数次数两者间的差值。
Z:时间戳记计数器1秒内的标准计数次数。
count1:第1次读取时间戳记计数器后,通过实时时钟触发而执行校准过程的次数(count1每经过M秒即被重新设置为1)。
count2:从第1次读取时间戳记计数器之后,实时时钟认为自己本身所经过的秒数。
count3:与时间戳记计数器的计数值相比较后,实时时钟的时间偏差。
应用本发明,电脑系统一执行上述设定之后,系统的实时时钟就会每秒发出1024次中断请求(IRQ 8),而周期性地执行下述的校准过程。图2所示,一校准过程包括如下步骤。
读取实时时钟的状态(步骤1),校准过程是否由实时时钟的周期性中断请求所触发,可从实时时钟中的寄存器状态得知。若判定校准过程并非由实时时钟的周期性中断请求所触发(步骤2),则结束校准过程。
若判定校准过程系由实时时钟的周期性中断请求所触发,则读取时间戳记计时器的计次值TSC_count(步骤3)。接著,判定第一计数值count1是否为0(步骤4)。
若判定为0(表示校准过程是第1次被执行),则设定第二、三计数值count2、count3为0,并将读到的上述时间戳记计时器的计数次数值TSC_count存储至寄存器A(步骤10)。接著,再将第一计数值count1的值加1(步骤11);之后,结束校准过程。
若判定第一计数值count1不为0,则继续判定count1是否等于1024(步骤5);亦即判定实时时钟的时间是否经过1秒。若判定count1不等于1024,则将第一计数值count1的值加1(步骤11);之后,结束校准过程。
若步骤5判定第一计数值count1为1024(表示实时时钟的时间已经过1秒),则在步骤6中执行以下的动作:读取目前实时时钟的时间值RTC_time;将目前时间戳记计时器的值存储于寄存器B中;将寄存器B中的值减去寄存器A中的值,并将B-A的值存储于寄存器C之中;以及,将第二计数值count2加1。其中,count2的值表示实时时钟认为本身所经过的时间为1秒,寄存器C中的值表示从第1次读取时间戳记计数器经过1秒之后,时间戳记计数器的实际计数次数。
将上述第二计数值count2乘以上述时间戳记计数器每秒的标准计数次数Z,而得到一名义计数值Z×count2,再求得上述寄存器C中实际计数次数的记录值和上述名义计数值两者间的差值(C-Z×count2),并将其存储于寄存器D和E中(步骤7)。
利用上述寄存器C中的记录值和上述名义计数值两者间的差值,进行一误差调整过程(步骤8),求出应加以修正的时间误差值(也就是,实时时钟的时间偏差值),作为上述第三计数值count3的内容,用以校准上述实时时钟的时间值。
最后,将调校过的实时时钟时间值取代修正上述实时时钟的时间值,以寄存器B的存储值取代寄存器A的存储值;并将上述第一计数值设定为1,上述第二、第三计数值设定为0(步骤9)。于是完成校准过程。
误差调整过程
误差调整过程,主要包括如下步骤。
(1)比较上述C寄存器的存储值和上述名义计数值,若两者间的差异值(存储于寄存器D之中)不小于一特定误差容许值,则执行下一步骤;否则,将上述第一计数值设定为1,结束上述校准过程。
(2)将上述差异值转换为实时时钟的时间偏差值。
(3)若上述C寄存器存储值不小于上述名义计数值,表示实时时钟的时间较正常为慢,则将上述时间偏差值加上上述实时时钟的时间值,而得到上述经调校过的实时时钟时间值;若上述C寄存器存储值小于上述名义计数值,表示实时时钟的时间较正常为快,则由上述实时时钟的时间值中减去上述时间偏差值,而得到上述经调校过的实时时钟时间值。
下文将配合图3所示误差调整过程的流程图,说明误差调整过程的动作。
当上述校准过程进行至误差调整过程(步骤8)时,首先,判定寄存器D中的值是否大于等于0(步骤80);若大于等于0,则执行步骤82;若小于0,则将寄存器D中的值取绝对值(步骤81)之后,再执行步骤82。
判定时间戳记计数器的实际计数次数和名义上计数次数两者之间的误差值(即寄存器D的值)是否超出容许的预定范围(步骤82)。在此实施例中,误差容许范围系设定为时间戳记计数器每秒的标准计次数Z(也就是说,对应的实时时钟的误差容许范围为1秒的内)。
若D小于Z,则由于尚在误差范围内,不必调整实时时钟的时间,所以将第一计数值count1重新设定为1而结束校准过程。
若是D大于等于Z,则重复执行步骤83和步骤84,直到寄存器D中的值小于Z为止。其中,每执行步骤83一次,就将寄存器D的值减去Z并且存回寄存器D,并将第3计数值count3的值加1(秒)。所以,计数次数的误差值得以转换成由count3所表示时间偏差值。
之后,在步骤85中,若判定时间戳记计数器的实际计数次数大于等于名义计数次数(即E≥0),表示实时时钟较正常情形为慢,所以将count3的时间偏差值加至实时时钟的时间RTC_time上,而达到调校实时时钟的目的。
在步骤85中,若判定时间戳记计数器的实际计数次数小于名义计数次数(即E<0),表示实时时钟较正常情形为快,所以由实时时钟的时间RTC_time减去count3的时间偏差值,而达到调校实时时钟的目的。
虽然本发明已以较佳实施例揭示如上,但并非用以限定本发明,任何熟悉本领域技术的人,在不脱离本发明的精神和范围内,可做更动和修改,因此本发明的保护范围由所附的权利要求书所界定的范围确定。
Claims (13)
1.一种使用电脑系统的中央处理器内部的时间戳记计数器以校准实时时钟的方法,其特征在于所述方法包括下述步骤:
设定实时时钟,使其周期性地每M秒触发一校准过程并执行N次;
每执行所述校准过程一次,就将第一计数值加1;
当所述校准过程执行N次时,执行如下步骤:
求出M秒内所述时间戳记计数器的实际计数值以及其名义计数值;其中,所述名义计数值为Z×M,Z为所述时间戳记计数器每秒的标准计次数;
求出所述实际计数值和所述名义计数值两者之间的误差值;
使用所述误差值求出对应的误差时间,以便校准实时时钟的时间值。
2.如权利要求1所述的方法,其特征在于,通过所使用系统的中央处理器型号求出所述时间戳记计数器计数一次所需的时间,再据以求出所述时间戳记计数器每秒的标准计次数Z。
3.如权利要求1所述的方法,其特征在于,所述实时时钟周期性地发出中断请求IRQ 8,以触发所述校准过程。
4.如权利要求3所述的方法,其特征在于,所述电脑系统INT 70h中断向量所指向过程预先被存储起来,而以所述校准过程取而代之。
5.如权利要求1所述的方法,其特征在于,M秒内所述时间戳记计数器的实际计数值由在M秒时所述时间戳记计数器的计数次数值减去初始计数值而得;所述初始计数值为所述校准过程第1次执行,或是在所述实时时钟经过校准后第1次由所述时间戳记计数器读得的计数次数。
6.一种使用电脑系统的中央处理器内部的时间戳记计数器以校准实时时钟的方法,其特征在于,校准过程包括如下步骤:
读取所述时间戳记计数器的内容;
判定所述第一计数值是否为0;若不为0,则执行下一步骤;若为0,则将第二计数值和第三计数值均设定为0,将读得的所述时间戳记计数器的内容存储于装置A,再将所述第一计数值加1之后,结束所述校准过程;
判定所述第一计数值是否等于一预设次数值;若等于该值,则进行下一步骤;若不等于该值,则将所述第一计数值加1之后,结束所述校准过程;
读取所述实时时钟的时间值;
将所述第二计数值加1,将所述时间戳记计数器此时的内容记录于一装置B,并计算所述B装置中的存储值和所述装置A中的存储值两者间的差值,并将其存储于一C装置;
将所述第二计数值乘以所述时间戳记计数器每秒的标准计次数,而得到名义计数值;
利用所述C装置记录值和所述名义计数值两者间的差值,进行一误差调整过程,求出应加以修正的时间误差值作为所述第三计数值的内容,用以校准所述实时时钟的时间值;
将调校过的实时时钟时间值取代所述实时时钟的时间值,以B装置存储值取代A装置存储值;
将所述第一计数值设定为1,将所述第二、第三计数值设定为0。
7.如权利要求6所述的方法,其特征在于,所述误差调整过程包括如下步骤:
比较所述C装置存储值和所述名义计数值,若两者间的差异值不小于一特定误差容许值,则执行下一步骤;否则,将所述第一计数值设定为1,结束所述校准过程;
将所述差异值转换为所述应修正的时间误差值,其中:
若所述C装置存储值不小于所述名义计数值,则将所述时间误差值加上所述实时时钟的时间值,而得到经调校过的实时时钟时间值;若所述C装置存储值小于所述名义计数值,则由所述实时时钟的时间值中减去所述时间误差值,而得到经调校过的实时时钟时间值。
8.如权利要求6所述的方法,其特征在于还包括设定过程,在所述设定过程中,由所使用系统CPU的型号速度求出所述时间戳记计数器计数一次所需的时间,再据以得出所述时间戳记计数器每秒的标准计次数。
9.如权利要求6所述的方法,其特征在于还包括设定过程,在执行所述校准过程前,由所述设定过程得出所述时间戳记计数器每秒的标准计次数,并将第一计数值设定为0。
10.如权利要求6所述的方法,其特征在于还包括设定过程,在所述设定过程中,设定实时时钟,使其周期性触发所述校准过程的执行,而每秒执行的次数则为所述预设次数值。
11.如权利要求10所述的方法,其特征在于,所述实时时钟周期性地发出中断请求IRQ 8,以触发所述校准过程。
12.如权利要求11所述的方法,其特征在于,所述电脑系统的INT 70h中断向量所指向的过程预先被存储起来,而以所述校准过程取而代之。
13.如权利要求6所述的方法,其特征在于,当执行所述校正过程时,先读取所述实时时钟的状态,以判定所述校准过程是否由所述实时时钟的周期性中断请求所触发启动;若是,则继续执行所述校准过程,否则结束所述校准过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB001018124A CN1151433C (zh) | 2000-01-25 | 2000-01-25 | 用中央处理器内部的时间戳记计数器校准实时时钟的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB001018124A CN1151433C (zh) | 2000-01-25 | 2000-01-25 | 用中央处理器内部的时间戳记计数器校准实时时钟的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1307278A CN1307278A (zh) | 2001-08-08 |
CN1151433C true CN1151433C (zh) | 2004-05-26 |
Family
ID=4576172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001018124A Expired - Fee Related CN1151433C (zh) | 2000-01-25 | 2000-01-25 | 用中央处理器内部的时间戳记计数器校准实时时钟的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1151433C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100396785B1 (ko) * | 2001-10-19 | 2003-09-02 | 엘지전자 주식회사 | Gsm단말기의 시간오차 보상장치 및 방법 |
CN105893194A (zh) * | 2016-04-01 | 2016-08-24 | 浪潮电子信息产业股份有限公司 | 一种计算机实时时钟和系统时钟的纳秒级测试方法 |
CN107423206B (zh) * | 2017-07-31 | 2021-01-22 | 苏州浪潮智能科技有限公司 | 一种衡量系统管理中断时间的方法及装置 |
CN114755693B (zh) * | 2022-06-15 | 2022-09-16 | 天津大学四川创新研究院 | 基于多旋翼无人机的基建设施测量系统和方法 |
CN115309234B (zh) * | 2022-10-10 | 2023-01-31 | 北京奥星贝斯科技有限公司 | 确定tsc频率的方法及装置、计算机可读存储介质 |
-
2000
- 2000-01-25 CN CNB001018124A patent/CN1151433C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1307278A (zh) | 2001-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20120095728A1 (en) | Data processing apparatus, performance evaluation/analysis apparatus, and performance evaluation/analysis system and method | |
CN1151433C (zh) | 用中央处理器内部的时间戳记计数器校准实时时钟的方法 | |
US8141044B2 (en) | Method and system for identifying sources of operating system jitter | |
JPH09244984A (ja) | イベント順序補正方法 | |
CN110166808A (zh) | 一种解决晶振误差导致视频不同步的方法、装置及解码设备 | |
CN110636283A (zh) | 视频传输测试方法、装置及终端设备 | |
US8667320B2 (en) | Deriving accurate media position information | |
CN101075146A (zh) | 校正方法及装置 | |
Suh et al. | EMP: execution time measurement protocol for compute‐bound programs | |
CN111552566B (zh) | 一种数据处理系统、方法、电子设备及存储介质 | |
CN114490262A (zh) | 数据库监控方法、装置、设备及存储介质 | |
CN115913462B (zh) | 一种基于事先规划的网络数据发送方法和数据发送模块 | |
CN102214123B (zh) | 测试方法及应用其的计算机装置及计算机测试系统 | |
US6681192B2 (en) | Systems and methods for fast timer calibration | |
CN101242507B (zh) | 自动校时装置及其处理方法 | |
CN112445835A (zh) | 一种业务数据处理方法及装置、网管服务器、存储介质 | |
CN116932596B (zh) | 表计读数转用量的数据处理方法、装置、设备及存储介质 | |
US6694445B1 (en) | Reliable reading of multiple time elements from real-time clock during update and non-update periods | |
US8428911B2 (en) | Testing method and computer device and computer testing system using thereof | |
CN114003609B (zh) | 一种监测待审数据的数量的方法和装置 | |
CN116910116A (zh) | 多线程报表统计方法、装置、计算机设备及存储介质 | |
CN118363722A (zh) | 时间戳分配方法及装置 | |
CN116401124A (zh) | 一种网页流量统计方法及装置、存储介质、计算机设备 | |
JP5774804B2 (ja) | 時刻同期システム、時刻同期装置、時刻同期方法及び時刻同期プログラム | |
CN118550756A (zh) | 一种仪器仪表嵌入式系统自恢复方法、系统及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040526 Termination date: 20130125 |