一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

确定TSC频率的方法及装置、计算机可读存储介质与流程

2022-11-09 22:45:57 来源:中国专利 TAG:

确定tsc频率的方法及装置、计算机可读存储介质
技术领域
1.本技术实施例涉及计算机技术领域,并且更为具体地,涉及一种确定tsc频率的方法及装置、计算机可读存储介质。


背景技术:

2.时间戳计数器(time stamp counter,tsc)是处理器中的一个计数器。tsc可以记录自启动以来处理器消耗的时钟周期数,该特性使得tsc与物理时钟一样,可用于为服务器上运行的操作系统提供时钟服务,并且具有较高的稳定性和精准度。
3.目前,利用tsc提供时钟服务主要是根据tsc计数和tsc频率来确定物理时间,然而,在获取tsc频率的过程中,存在误差不可控的情况。


技术实现要素:

4.本技术实施例提供一种确定tsc频率的方法及装置、计算机可读存储介质。下面对本技术实施例涉及的各个方面进行介绍。
5.第一方面,提供一种确定tsc频率的方法,包括:获取处理器的第一组tsc计数和第一本地时间,其中,所述第一组tsc计数包括第一tsc计数和第二tsc计数,所述第一tsc计数的获取时间早于所述第一本地时间,所述第二tsc计数的获取时间晚于所述第一本地时间,且所述第二tsc计数与所述第一tsc计数的差值小于或等于计数阈值;获取所述处理器的第二组tsc计数和第二本地时间,其中,所述第二组tsc计数包括第三tsc计数和第四tsc计数,所述第三tsc计数的获取时间早于所述第二本地时间,所述第四tsc计数的获取时间晚于所述第二本地时间,且所述第四tsc计数与所述第三tsc计数的差值小于或等于所述计数阈值;根据所述第一组tsc计数、所述第二组tsc计数、所述第一本地时间以及所述第二本地时间,确定tsc频率。
6.作为一种可能的实现方式,所述方法还包括:如果所述第二tsc计数和所述第一tsc计数的差值大于所述计数阈值,则重新获取所述第一组tsc计数和所述第一本地时间;和/或如果所述第四tsc计数和所述第三tsc计数的差值大于所述计数阈值,则重新获取所述第二组tsc计数和所述第二本地时间。
7.作为一种可能的实现方式,所述根据所述第一组tsc计数、所述第二组tsc计数、所述第一本地时间以及所述第二本地时间,确定tsc频率,包括:确定所述第三tsc计数与所述第一tsc计数之差,得到第一差值;确定所述第二本地时间与所述第一本地时间之差,得到第二差值;确定所述第一差值与所述第二差值的比值,得到所述tsc频率。
8.作为一种可能的实现方式,所述方法还包括:控制获取所述第一组tsc计数和所述第二组tsc计数的时间间隔,使得所述时间间隔为秒级的时间间隔。
9.作为一种可能的实现方式,所述处理器的本地时间为unix时间。
10.第二方面,提供一种确定tsc频率的装置,包括:第一获取模块,用于获取处理器的第一组tsc计数和第一本地时间,其中,所述第一组tsc计数包括第一tsc计数和第二tsc计
数,所述第一tsc计数的获取时间早于所述第一本地时间,所述第二tsc计数的获取时间晚于所述第一本地时间,且所述第二tsc计数与所述第一tsc计数的差值小于或等于计数阈值;第二获取模块,用于获取所述处理器的第二组tsc计数和第二本地时间,其中,所述第二组tsc计数包括第三tsc计数和第四tsc计数,所述第三tsc计数的获取时间早于所述第二本地时间,所述第四tsc计数的获取时间晚于所述第二本地时间,且所述第四tsc计数与所述第三tsc计数的差值小于或等于所述计数阈值;确定模块,用于根据所述第一组tsc计数、所述第二组tsc计数、所述第一本地时间以及所述第二本地时间,确定tsc频率。
11.作为一种可能的实现方式,所述装置还包括:第三获取模块,用于如果所述第二tsc计数和所述第一tsc计数的差值大于所述计数阈值,则重新获取所述第一组tsc计数和所述第一本地时间;和/或第四获取模块,用于如果所述第四tsc计数和所述第三tsc计数的差值大于所述计数阈值,则重新获取所述第二组tsc计数和所述第二本地时间。
12.作为一种可能的实现方式,所述确定模块用于:确定所述第三tsc计数与所述第一tsc计数之差,得到第一差值;确定所述第二本地时间与所述第一本地时间之差,得到第二差值;确定所述第一差值与所述第二差值的比值,得到所述tsc频率。
13.作为一种可能的实现方式,所述装置还包括:控制模块,用于控制获取所述第一组tsc计数和所述第二组tsc计数的时间间隔,使得所述时间间隔为秒级的时间间隔。
14.作为一种可能的实现方式,所述处理器的本地时间为unix时间。
15.第三方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第一方面中任一实现方式所述的方法。
16.第四方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第一方面中任一实现方式所述的方法。
17.本技术实施例提供一种确定tsc频率的方法,通过先获取处理器的第一组tsc计数和第一本地时间,其中,第一组tsc计数包括第一tsc计数和第二tsc计数,第一tsc计数的获取时间早于第一本地时间,第二tsc计数的获取时间晚于第一本地时间,且第二tsc计数与第一tsc计数的差值小于或等于计数阈值。同理,然后获取处理器的第二组tsc计数和第二本地时间,其中,第二组tsc计数包括第三tsc计数和第四tsc计数,第三tsc计数的获取时间早于第二本地时间,第四tsc计数的获取时间晚于第二本地时间,且第四tsc计数与第三tsc计数的差值小于或等于计数阈值。上述技术方案通过引入计数阈值使得第一本地时间与第一组tsc计数中的tsc计数之间的时间间隔可控,同时使得第二本地时间与第二组tsc计数中的tsc计数之间的时间间隔也可控,然后再根据第一组tsc计数、第二组tsc计数、第一本地时间以及第二本地时间,来确定tsc频率,从而有助于提高tsc频率计算误差的可控性。
附图说明
18.图1是一种理想情况下获取tsc频率的结构示意图。
19.图2是相关技术中提出的获取tsc频率的一种可能实现方式的结构示意图。
20.图3是本技术一实施例提供的确定tsc频率的方法的流程示意图。
21.图4是本技术一实施例提供的获取tsc频率的结构示意图。
22.图5是本技术一实施例提供的确定tsc频率的装置的结构示意图。
23.图6是本技术另一实施例提供的确定tsc频率的装置的结构示意图。
具体实施方式
24.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。
25.需要说明的是,本技术实施例中涉及“第一”、“第二”、“第三”、“第四”等的描述,则该“第一”、“第二”、“第三”、“第四”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
26.需要说明的是,本技术实施例中的处理器可以是通用处理器或者专用处理器。例如,该处理器可以为中央处理单元(central processing unit,cpu)、应用芯片(application processor,ap)、数字信号处理器(digital signal processor,dsp)、或者其他常规的处理器等。
27.时间戳计数器tsc是处理器中的一个计数器。随着技术的发展,相关技术中提出了不变tsc(invariant tsc)技术,即tsc以恒定频率跳动,并且不会停止跳动。也就是说,tsc可以记录自启动以来处理器消耗的时钟周期数,并随着处理器周期速率的比例的变化而变化。该特性使得tsc与物理时钟一样,可用于为服务器上运行的操作系统提供时钟服务,并且具有较高的稳定性和精准度。
28.通常,tsc获取到的数值只能用于衡量时钟周期,而与现实中的物理时间并无直接关系。如果想利用tsc来提供时钟服务,则还需要获取tsc频率(也可以称为tsc计数的增长率),然后通过tsc计数和tsc频率可以计算当前物理时间。
29.下面结合图1和图2对tsc频率的获取方式进行举例说明。
30.一种理想情况获取tsc频率的方式为:节点可以在同一个时间点上同时获取到tsc计数和本地时间。例如可用来表示事件e发生时节点处的tsc计数,可用来表示事件e发生时节点处的本地时间。如果假设成立,则节点可以在事件e发生时获取到和。
31.参见图1,可以用和分别表示节点在物理时间t上先后发生的两个事件,节点可以先通过事件获取一次本地tsc计数和本地时间。然后,节点等待一段时间后,可以通过事件再获取一次tsc计数和本地时间。最后,可以通过以下公式计算得到tsc频率:(1)然而,在现实环境中,节点无法在同一个时间点上同时获取到tsc计数和本地时间,从而导致上述理想的tsc频率计算方式很难实现。
32.参见图2,相关技术中提出了获取tsc频率的一种可能的实现方式,节点可以先通过事件获取一次本地tsc计数,接着通过事件获取一次本地时间。然后,节点等待一段时间后,可以通过事件再获取一次tsc计数,接着通过事件再获取一次本地时间。最后,可以通过以下公式计算得到tsc频率:(2)
根据上文内容可以看出,事件与事件之间的时间间隔可能并不等于事件与事件之间的时间间隔。因此,我们计算得到的tsc计数的增长率存在一定的误差。另外,当事件与事件之间的时间间隔不等于事件与事件之间的时间间隔时,事件与事件之间的时间间隔和事件与事件之间的时间间隔均为不确定的、不可控的状态,从而也导致tsc频率的计算误差存在不可控的情况。
33.针对上述问题,本技术实施例提供一种确定tsc频率的方法,通过先获取处理器的第一组tsc计数和第一本地时间,其中,第一组tsc计数包括第一tsc计数和第二tsc计数,第一tsc计数的获取时间早于第一本地时间,第二tsc计数的获取时间晚于第一本地时间,且第二tsc计数与第一tsc计数的差值小于或等于计数阈值。同理,然后获取处理器的第二组tsc计数和第二本地时间,其中,第二组tsc计数包括第三tsc计数和第四tsc计数,第三tsc计数的获取时间早于第二本地时间,第四tsc计数的获取时间晚于第二本地时间,且第四tsc计数与第三tsc计数的差值小于或等于计数阈值。可以看出,通过上述方式可以将第二本地时间与第一本地时间之差控制在计数阈值所对应的时间阈值内,进一步地,再根据第一组tsc计数、第二组tsc计数、第一本地时间以及第二本地时间,来确定tsc频率,从而有助于提高tsc频率计算误差的可控性。
34.图3为本技术实施例提供的一种确定tsc频率的方法流程示意图。如图3所示,确定tsc频率的方法300可以包括步骤:s320~s360。下面结合图4对确定tsc频率的方法300进行详细描述。
35.在步骤s320,获取处理器的第一组tsc计数和第一本地时间。
36.参见图4,第一组tsc计数可以包括第一tsc计数和第二tsc计数,第一tsc计数的获取时间早于第一本地时间,第二tsc计数的获取时间晚于第一本地时间,且第二tsc计数与第一tsc计数的差值小于或等于计数阈值。
37.本技术实施例中的第一tsc计数可以是指其获取时间早于第一本地时间的任一次tsc计数,第二tsc计数可以是指其获取时间晚于第一本地时间的任一次tsc计数,只要满足第二tsc计数与第一tsc计数的差值小于或等于计数阈值即可。该计数阈值为计数设定值,例如可以根据第一组tsc计数与第二组tsc计数之间的时间间隔来计算确定。
38.由于第一本地时间的获取节点位于第一tsc计数的获取节点与第二tsc计数的获取节点之间,因此通过设定计数阈值的大小,来控制对第一本地时间的获取时间范围。也就是说,计数阈值的设定值越小,第一本地时间的获取时间范围就越小,对第一本地时间的获取控制精度就越高,反之,则对第一本地时间的获取控制精度就越低。应理解,计数阈值的设定值越小,获取满足条件的第二tsc计数的难度就越高。
39.第一本地时间例如可以是本地unix时间,第一本地时间的单位可以为微秒。
40.本技术实施例中的第一组tsc计数是相对于第二组tsc计数来说的,第一组tsc计
数可以是指其获取时间早于第二组tsc计数的任一组tsc计数。本技术实施例对第一组tsc计数与第二组tsc计数之间的时间间隔的长短不做具体限制,例如可以是秒级的时间间隔。
41.在步骤s340,获取处理器的第二组tsc计数和第二本地时间。
42.继续参见图4,第二组tsc计数可以包括第三tsc计数和第四tsc计数,第三tsc计数的获取时间早于第二本地时间,第四tsc计数的获取时间晚于第二本地时间,且第四tsc计数与第三tsc计数的差值小于或等于计数阈值。
43.本技术实施例中的第三tsc计数可以是指其获取时间早于第二本地时间的任一次tsc计数,第四tsc计数可以是指其获取时间晚于第二本地时间的任一次tsc计数,只要满足第四tsc计数与第三tsc计数的差值小于或等于该计数阈值即可。
44.由于第二本地时间的获取节点位于第三tsc计数的获取节点与第四tsc计数的获取节点之间,因此通过设定计数阈值的大小,来控制对第二本地时间的获取时间范围。也就是说,计数阈值的设定值越小,第二本地时间的获取时间范围就越小,对第二本地时间的获取控制精度就越高,反之,则对第二本地时间的获取控制精度就越低。应理解,计数阈值的设定值越小,获取满足条件的第四tsc计数的难度就越高。
45.第二本地时间例如可以是本地unix时间,第二本地时间的单位可以为微秒。
46.本技术实施例中的第二组tsc计数是相对于第一组tsc计数来说的,第二组tsc计数可以是指其获取时间晚于第一组tsc计数的任一组tsc计数。
47.在步骤s360,根据第一组tsc计数、第二组tsc计数、第一本地时间以及第二本地时间,确定tsc频率。
48.本技术实施例通过引入计数阈值,可以将对第一本地时间和第二本地时间的获取时间范围控制在计数阈值所对应时间范围内,从而使得第二本地时间与第一本地时间的差值()的误差可以控制在该计数阈值所对应的时间间隔范围内,进而使得tsc频率的计算误差是可控的。
49.本技术实施例对确定tsc频率的方式不做具体限定,一种可能的实现方式如下:例如可以先确定第三tsc计数与第一tsc计数之差,得到第一差值();然后确定第二本地时间与第一本地时间之差,得到第二差值();最后根据第一差值与第二差值的比值,来得到tsc频率:(3)另一种可能的实现方式,例如可以先确定第四tsc计数与第二tsc计数之差,得到第三差值();然后确定第二本地时间与第一本地时间之
差,得到第二差值();最后根据第三差值与第二差值的比值,来得到tsc频率:(4)应理解,还可以利用第四tsc计数与第一tsc计数之差来计算tsc频率,或者利用第三tsc计数与第二tsc计数之差来计算tsc频率。
50.根据前文描述可以看出,本技术实施例通过引入计数阈值使得第一本地时间与第一组tsc计数中的tsc计数之间的时间间隔可控,同时使得第二本地时间与第二组tsc计数中的tsc计数之间的时间间隔也可控,这样一来,再根据第一组tsc计数、第二组tsc计数、第一本地时间以及第二本地时间,来确定tsc频率,从而有助于提高tsc频率计算误差的可控性。
51.继续参见图4,在一些实施例中,如果第二tsc计数与第一tsc计数的差值大于计数阈值,则可以重新获取第一组tsc计数和第一本地时间。和/或,如果第四tsc计数和第三tsc计数的差值大于该计数阈值,则重新获取第二组tsc计数和第二本地时间。下面以第一组tsc计数和第一本地时间为例,对其获取方法进行详细描述,该获取满足要求的第一组tsc计数和第一本地时间方法包括如下步骤:步骤1:先获取一次tsc计数,可以作为第一tsc计数。
52.步骤2:然后获取一次本地时间,可以作为第一本地时间。
53.步骤3:紧接着再获取一次tsc计数,可以作为第二tsc计数。
54.步骤4:然后计算并判断第二tsc计数与第一tsc计数的差值()是否已经超过计数阈值。若差值()已经超过计数阈值,则重复步骤1至步骤3,进行重新获取。若差值()小于或等于计数阈值,则结束。
55.需要说明的是,第二组tsc计数和第二本地时间的获取方式与上述方法类似,具体可以参考上文中步骤1至步骤4的相关描述,在此不做详细描述。
56.在一些实施例中,可以控制获取第一组tsc计数和第二组tsc计数的时间间隔,例如可以控制该时间间隔为秒级的时间间隔。若是时间间隔为秒级的时间间隔,则tsc频率的计算误差甚至可以控制在一年一秒之内。
57.可以用来表示计数阈值,则通过上述tsc频率计算公式(3)或(4),可以得出其计算误差的上限值为:(5)根据误差上限值的计算公式(5)可以看到,为了减少tsc计数频率的误差,可以调小计数阈值,或者延长第一组tsc计数与第二组tsc计数之间的时间间隔。为了尽量避免在步骤1至步骤3的重复,本技术建议计数阈值不能设置过小,但时间间隔可以适当调长。因此,tsc计数频率的误差的上限值是可以控制的。
58.上文结合图1至图4详细描述了本技术的方法实施例,下面结合图5和图6详细描述
本技术的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
59.图5示为本技术一实施例提供的确定tsc频率的装置的结构示意图。该装置500可以包括第一获取模块510、第二获取模块520和确定模块530。
60.第一获取模块510可用于获取处理器的第一组tsc计数和第一本地时间,其中,所述第一组tsc计数包括第一tsc计数和第二tsc计数,所述第一tsc计数的获取时间早于所述第一本地时间,所述第二tsc计数的获取时间晚于所述第一本地时间,且所述第二tsc计数与所述第一tsc计数的差值小于或等于计数阈值。
61.第二获取模块520可用于获取所述处理器的第二组tsc计数和第二本地时间,其中,所述第二组tsc计数包括第三tsc计数和第四tsc计数,所述第三tsc计数的获取时间早于所述第二本地时间,所述第四tsc计数的获取时间晚于所述第二本地时间,且所述第四tsc计数与所述第三tsc计数的差值小于或等于计数阈值。
62.确定模块530可用于根据所述第一组tsc计数、所述第二组tsc计数、所述第一本地时间以及所述第二本地时间,确定tsc频率。
63.可选地,所述装置500还包括:第三获取模块540可用于如果所述第二tsc计数和所述第一tsc计数的差值大于所述计数阈值,则重新获取所述第一组tsc计数和所述第一本地时间;和/或第四获取模块550可用于如果所述第四tsc计数和所述第三tsc计数的差值大于所述计数阈值,则重新获取所述第二组tsc计数和所述第二本地时间。
64.可选地,所述确定模块530可用于:确定所述第三tsc计数与所述第一tsc计数之差,得到第一差值;确定所述第二本地时间与所述第一本地时间之差,得到第二差值;确定所述第一差值与所述第二差值的比值,得到所述tsc频率。
65.可选地,所述装置500还包括:控制模块560可用于控制获取所述第一组tsc计数和所述第二组tsc计数的时间间隔,使得所述时间间隔为秒级的时间间隔。
66.可选地,所述处理器的本地时间为unix时间。
67.下面结合图6是对本技术实施例中的另一种确定tsc频率的装置600进行介绍。图6中的虚线表示该单元或模块为可选的。该装置600可用于实现上述方法实施例中描述的方法。装置600可以是计算机或任意类型的电子设备。
68.装置600可以包括一个或多个处理器610。该处理器610可支持装置600实现前文方法实施例所描述的方法。
69.装置600还可以包括一个或多个存储器620。存储器620上存储有程序,该程序可以被处理器610执行,使得处理器610执行前文方法实施例所描述的方法。存储器620可以独立于处理器610也可以集成在处理器610中。
70.装置600还可以包括收发器630。处理器610可以通过收发器630与其他设备进行通信。例如,处理器610可以通过收发器630与其他设备进行数据收发。
71.本技术实施例还提供一种机器可读存储介质,用于存储程序。并且该程序使得计算机执行本技术各个实施例中的方法。
72.本技术实施例还提供一种计算机程序产品。该计算机程序产品包括程序。该程序使得计算机执行本技术各个实施例中的方法。
73.本技术实施例还提供一种计算机程序。该计算机程序使得计算机执行本技术各个
实施例中的方法。
74.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在机器可读存储介质中,或者从一个机器可读存储介质向另一个机器可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述机器可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
75.本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
76.在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
77.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
78.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
79.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献