用中央处理器内部的时间戳记计数器校准实时时钟的方法技术

技术编号:2884166 阅读:192 留言:0更新日期:2012-04-11 18:40
一种使用电脑系统的中央处理器内部的时间戳记计数器来校准实时时钟的方法,主要是以电脑系统的内部的时间戳记计数器为基准,让实时时钟周期性地触发一校准过程,而让实时时钟的时间和时间戳记计数器计数次数的对应时间两者之间的误差保持在一定的范围的内,从而达到校正实时时钟的目的。(*该技术在2020年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及实时时钟(Real Time Clock;RTC)的校准方法,特别涉及以电脑系统的中央处理器(CPU)内部的时间戳记计数器(Time Stamp Counter;TSC)为基准,用以校准实时时钟的方法。一般电脑系统中的实时时钟,大多以晶体振荡器配合R-C电路构成。然而,由于元件老化或是不匹配等问题,系统中的实时时钟也会受到连带影响,而失去其准确性。对于服务器系统(Server System)而言,在网络上需要广播日期信息的时间给用户端,或对于电脑系统而言,所执行的应用软件程序可能需要日期信息的精确时间;如果系统内的实时时钟失去其准确度的话,则系统的整体效能将会大打折扣,甚至发生错误而无法动作。因此,实在有必要针对实时时钟提出一种有效的校准方法,以确保实时时钟的准确度。有鉴于此,本专利技术利用系统CPU(例如Intel PentiumⅡ)内部的时间戳记计数器为基准,使实时时钟周期性地触发一个校准过程,而让实时时钟的时间和时间戳记计数器计数次数所对应的时间两者之间的误差保持在一定的范围之内,而达到校正实时时钟的目的。为达到上述目的,本专利技术提出一种使用电脑系统CPU内部的时间戳记计数器校准实时时钟的方法,该方法包括如下步骤。设定实时时钟,使其周期性地每M秒触发一校准过程执行N次;而每执行校准过程一次,就将第一计数值加1。当校准过程执行N次时,执行如下步骤求出M秒内时间戳记计数器的实际计数值以及其名义计数值;其中,名义计数值为Z×M,Z为上述时间戳记计数器每秒的标准计次数;求出实际计数值和名义计数值两者之间的误差值;使用上述误差值求出对应的误差时间,以便校准实时时钟的时间值。为让本专利技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合附图做详细说明。其中附图说明图1是显示为实施本专利技术方法,而预先执行的设定过程的流程图。图2是显示本专利技术的校准过程方法的流程图。图3是显示在校准过程中,所使用的误差调整过程的流程图。依据本专利技术,使用电脑系统CPU内部的时间戳记计数器以校准实时时钟的方法,包括以下步骤。设定实时时钟,使其周期性地每M秒触发执行N次的校准过程;亦即当校正过程执行N次之后,以实时时钟的时间值为基准的时间已过了M秒。每执行校准过程一次,就将第一计数值加1。当校准过程执行N次时,则执行如下步骤通过时间戳记计数器每秒的标准计次数Z,可求出名义计数值Z×M(因为M秒是否精确尚待验证);再将目前时间戳记计数器的计数值减去第1次执行校正过程时戳记计数器的计数值,即可以得出戳记计数器在M秒时间中实际上的计数次数值。求出实际计数值和名义计数值两者之间的误差值;若实际计数值大于名义计数值,即表示实时时钟的时间慢了,若实际计数值小于名义计数值,即表示实时时钟的时间快了。因此,使用误差值即可求出对应的误差时间,而得以校准实时时钟的时间值。下文将举一实施例,并参照图1~3详细说明本专利技术的运作。设定过程图1是显示为实施本专利技术方法而预先执行的设定过程的流程图。首先,由系统所使用的CPU型号速度(例如CPU为PentiumⅡ 233 MHz)得出其内部处理器的时钟脉冲周期;亦即求出系统内部时间戳记计数器,计数一次时所需的时间。再由上述时钟脉冲周期得出上述时间戳记计数器每秒的标准计数次数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的内容,用以校准实时时钟的时间值。最后,将调校过的实时时钟时间值取代本文档来自技高网...

【技术保护点】
一种使用电脑系统的中央处理器内部的时间戳记计数器以校准实时时钟的方法,其特征在于所述方法包括下述步骤: 设定实时时钟,使其周期性地每M秒触发一校准过程并执行N次; 每执行所述校准过程一次,就将第一计数值加1; 当所述校准过程执行N次时,执行如下步骤: 求出M秒内所述时间戳记计数器的实际计数值以及其名义计数值;其中,所述名义计数值为Z×M,Z为所述时间戳记计数器每秒的标准计次数; 求出所述实际计数值和所述名义计数值两者之间的误差值; 使用所述误差值求出对应的误差时间,以便校准实时时钟的时间值。

【技术特征摘要】

【专利技术属性】
技术研发人员:蔡俊男
申请(专利权)人:神达电脑股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1