一种时间戳获取方法、装置、电子设备及存储介质与流程

文档序号:29140542发布日期:2022-03-05 02:37阅读:98来源:国知局
一种时间戳获取方法、装置、电子设备及存储介质与流程

1.本发明涉及通信技术领域,尤其涉及一种时间戳获取方法、装置、电子设备及存储介质。


背景技术:

2.随着通信技术的快速发展,现代工业对时钟同步的精度要求越来越高。ieee 1588标准,其简称为精确时间协议(precision time protocol,ptp),是目前常用的一种高精度时钟同步解决方案,可以达到亚微秒级别时钟同步精度。
3.然而,在现有依赖时钟同步控制的网络中,若中央处理器(central processing unit,cpu)出现任务阻塞时,容易引起时钟同步ptp报文的时间戳信息因不能够得到及时处理,导致ptp报文时间戳信息丢失,从而引起网络设备获取ptp报文时间戳出错,时钟同步出现误差,造成网络运行异常。
4.因此,如何更好地实现ptp报文时间戳的获取已成为业界亟待解决的问题。


技术实现要素:

5.本发明提供一种时间戳获取方法、装置、电子设备及存储介质,用以更好地实现精确时间协议报文时间戳的获取。
6.本发明提供一种时间戳获取方法,包括:
7.逻辑模块基于目标网络设备的n个精确时间协议报文,生成n个所述精确时间协议报文对应的n个精确时间协议时间戳信息,将n个所述精确时间协议时间戳信息写入缓冲区先入先出队列中;
8.在预设时间段内所述逻辑模块未接收到新的精确时间协议报文的情况下,所述逻辑模块向中央处理器发送时间戳优先读取指令,以供所述中央处理器执行所述时间戳优先读取指令,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息。
9.根据本发明提供的一种时间戳获取方法,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息,包括:
10.所述中央处理器进入时间戳优先读取模式后,读取所述缓冲区先入先出队列的队列标志,其中,所述队列标志用于记录所述缓冲区先入先出队列中存储的精确时间协议时间戳信息的读取状态;
11.在所述中央处理器读取所述队列标志为非空的情况下,所述中央处理器重复执行在所述缓冲区先入先出队列中读取所述精确时间协议时间戳信息的操作;
12.在所述中央处理器读取所述队列标志为空的情况下,所述中央处理器得到所述缓冲区先入先出队列中的所有精确时间协议时间戳信息,停止精确时间协议时间戳信息读取操作,结束时间戳优先读取模式。
13.根据本发明提供的一种时间戳获取方法,在所述中央处理器得到所述缓冲区先入先出队列中的所有精确时间协议时间戳信息,停止精确时间协议时间戳信息读取操作,结束时间戳优先读取模式之后,还包括:
14.所述中央处理器基于所述所有精确时间协议时间戳信息,进行时钟同步计算。
15.根据本发明提供的一种时间戳获取方法,所述缓冲区先入先出队列包括接收缓冲区先入先出队列和发送缓冲区先入先出队列;
16.其中,所述接收缓冲区先入先出队列用于对所述逻辑模块写入的接收精确时间协议时间戳信息进行存储,所述接收精确时间协议时间戳信息是基于外部目标网络设备发来的精确时间协议报文确定的;
17.其中,所述发送缓冲区先入先出队列用于对所述逻辑模块写入的发送精确时间协议时间戳信息进行存储,所述发送精确时间协议时间戳信息是基于所述中央处理器发出的精确时间协议报文确定的。
18.根据本发明提供的一种时间戳获取方法,所述接收缓冲区先入先出队列包括第一控制寄存器和接收数据寄存器,其中,所述第一控制寄存器用于存储所述接收缓冲区先入先出队列的队列标志,所述接收数据寄存器用于存储所述接收精确时间协议时间戳信息;
19.所述发送缓冲区先入先出队列包括第二控制寄存器和发送数据寄存器,其中,所述第二控制寄存器用于存储所述发送缓冲区先入先出队列的队列标志,所述发送数据寄存器用于存储所述发送精确时间协议时间戳信息。
20.本发明还提供一种时间戳获取装置,包括:
21.生成单元,用于逻辑模块基于目标网络设备的n个精确时间协议报文,生成n个所述精确时间协议报文对应的n个精确时间协议时间戳信息,将n个所述精确时间协议时间戳信息写入缓冲区先入先出队列中;
22.获取单元,用于在预设时间段内所述逻辑模块没有接收到新的精确时间协议报文的情况下,所述逻辑模块向中央处理器发送时间戳优先读取指令,以供所述中央处理器执行所述时间戳优先读取指令,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息。
23.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述时间戳获取方法的步骤。
24.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述时间戳获取方法的步骤。
25.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述时间戳获取方法的步骤。
26.本发明提供的一种时间戳获取方法、装置、电子设备及存储介质,通过采用缓冲区先入先出队列,在逻辑模块基于目标网络设备发来的ptp报文生成对应的ptp时间戳信息后,逻辑模块可以将ptp时间戳信息写入缓冲区先入先出队列,使ptp时间戳信息按照先入先出方式被读取,有效解决了ptp时间戳信息的覆盖丢失问题;通过逻辑模块向cpu发送时间戳优先读取指令,指示cpu进入时间戳优先读取模式,一次性将缓冲区先入先出队列中所
有的ptp时间戳信息读取出来,进一步有效地避免了因cpu拥塞导致缓冲区先入先出队列满,后续到达的ptp时间戳信息无法写入而丢失的状况,从而有效解决cpu拥堵所导致的ptp时间戳信息丢失,而引入时钟同步误差的问题,既保证了cpu资源的有效利用,又保证了网络设备进行时钟同步的对时精度。
附图说明
27.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1是本发明提供的时间戳获取方法的流程示意图;
29.图2是本发明提供的ptp报文接收方向上进行ptp时间戳获取的流程示意图;
30.图3是本发明提供的ptp报文发送方向上进行ptp时间戳获取的流程示意图;
31.图4是本发明提供的时间戳获取装置的结构示意图;
32.图5是本发明提供的电子设备的结构示意图。
具体实施方式
33.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
34.下面结合图1-图5描述本发明的一种时间戳获取方法、装置、电子设备及存储介质。
35.需要说明的是,精确时间协议(precision time protocol,ptp)是目前常用的一种高精度时钟同步方案,其中,应用了ptp协议的网络可以称为ptp域,ptp域的节点设备按照一定的主从关系(master-slave)进行时钟同步。主从关系是相对而言的,发布时钟的节点设备称为主节点,同步时钟的节点设备称为从节点,主节点上的时钟称为主时钟,从节点上的时钟则称为从时钟。
36.ptp时钟同步的原理是,主、从时钟之间交互同步ptp报文并记录ptp报文的收发时间,即记录ptp时间戳信息,通过计算ptp报文往返的时间差来计算主、从时钟之间的时钟偏差,从时钟按照该偏差来调整本地时间,就可以实现其与主时钟的同步。
37.实际中,一台网络设备可以是从上层节点设备同步时钟,也可以是向下层节点设备发布时钟。
38.图1是本发明提供的时间戳获取方法的流程示意图,如图1所示,包括:
39.步骤s1,逻辑模块基于目标网络设备的n个精确时间协议报文,生成n个所述精确时间协议报文对应的n个精确时间协议时间戳信息,将n个所述精确时间协议时间戳信息写入缓冲区先入先出队列中;
40.具体地,本发明实施例中的本地网络设备可以从上层节点设备同步时钟,也可以向下层节点设备发布时钟。
41.因此,本发明所描述的目标网络设备具体可以是上层节点网络设备,也可以是下层节点网络设备,还可以是本地网络设备。
42.在本发明的实施例中,本地网络设备从目标网络设备同步时钟,或向目标网络设备发布时钟时,会由本地网络设备中的逻辑模块接收上层节点网络设备或下层节点网络设备,或本地网络设备中的中央处理器(central processing unit,cpu)发来的n个ptp报文,其中,n为正整数,可以是1、2、10、20等数量,具体可根据实际通信交互和设备硬件条件确定,此处不对其做具体限定。
43.本发明所描述的ptp时间戳信息指的是逻辑模块处理ptp报文时记录ptp报文的收发时间,其可以包括ptp时间戳秒信息和ptp时间戳纳秒信息。
44.逻辑模块在接收到n个ptp报文后,会记录接收每个ptp报文的时间戳信息,即生成n个ptp报文对应的n个ptp时间戳信息,也就是说,根据接收ptp报文的不同时间,不同的ptp报文,对应有不同的ptp时间戳信息。
45.需要说明的是,现有ptp时间戳获取方式中,采用寄存器存储ptp时间戳信息,cpu从寄存器中读取ptp时间戳信息的方式。在cpu不拥塞的情况下,当逻辑模块收到ptp报文后,通知cpu对ptp时间戳信息进行读取,cpu从寄存器中读取到ptp时间戳信息,然后进行计算进行时钟同步。这是正常的ptp报文时间戳获取的方式,ptp报文的ptp时间戳信息能够被正常读取,网络设备可以正常进行时钟同步计算。但是,当cpu拥塞时,存在cpu优先处理其他任务,而导致ptp时间戳信息不能够及时从寄存器中读取的情况发生,后续的ptp报文到达,产生的ptp时间戳信息会将上次生成的ptp时间戳信息覆盖,造成ptp时间戳信息丢失,导致cpu读取时少了一条ptp时间戳信息,不仅浪费了cpu的资源,同时ptp协议的计算也需要引入纠错机制,造成了协议运算的复杂度和误差。
46.为此,在本发明的实施例中,ptp时间戳信息的存储,采用先入先出队列的方式,先进入缓冲区队列的数据会被cpu先读取出来,从而保证ptp时间戳信息不会被后续ptp时间戳信息覆盖而导致丢失。
47.本发明所描述的缓冲区先入先出队列指的是采用先入先出队列方式的缓冲区队列,其用于对逻辑模块记录生成的ptp时间戳信息进行存储。
48.进一步地,在逻辑模块基于目标网络设备的n个ptp报文,生成n个ptp报文对应的n个ptp时间戳信息后,会将该n个ptp时间戳信息写入缓冲区先入先出队列中,缓冲区先入先出队列对该n个ptp时间戳信息进行存储。其中,逻辑模块在将n个ptp时间戳信息写入缓冲区先入先出队列的过程中,逻辑模块每写入一个ptp时间戳信息,便将缓冲区先入先出队列中ptp时间戳信息数量的计数进行加1,直至逻辑模块将缓冲区先入先出队列中ptp时间戳信息数量的计数加至n,表明逻辑模块已将n个ptp时间戳信息全部写入缓冲区先入先出队列中。
49.步骤s2,在预设时间段内所述逻辑模块未接收到新的精确时间协议报文的情况下,所述逻辑模块向中央处理器发送时间戳优先读取指令,以供所述中央处理器执行所述时间戳优先读取指令,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息。
50.具体地,当cpu拥塞时,如果ptp时间戳信息不能一次性从缓冲区先入先出队列中
全部读取,可能会造成后续存储的ptp时间戳信息达到缓冲区先入先出队列的存储上限,待新的ptp报文达到,生成对应的ptp时间戳信息时,而无法被写入缓冲区先入先出队列中,从而导致该ptp时间戳信息的丢失。
51.本发明所描述的预设时间段指的是预先设置的时间间隔,经过该时间间隔,逻辑模块可以做出未接收到新的ptp报文的判断。
52.本发明所描述的时间戳优先读取指令指的是指示cpu进入时间戳优先读取模式的指令,在本发明的实施例中,cpu在时间戳优先读取模式下,仅执行时间戳信息读取操作。
53.本发明所描述的仅执行时间戳信息读取操作指的是cpu只会执行ptp时间戳信息读取操作,而不会执行其他任务的操作,也就是说,此时,ptp时间戳读取操作具有最高优先级,cpu优先执行在缓冲区先入先出队列中读取时间戳信息的操作。
54.在本发明的实施例中,通过逻辑模块向cpu发送时间戳优先读取指令,在cpu接收到指令后,cpu将读取缓冲区先入先出队列中的所有ptp时间戳信息,从而防止因为cpu拥塞而导致的ptp时间戳信息丢失。
55.在本发明的实施例中,cpu执行时间戳优先读取指令,将进入时间戳优先读取模式。在cpu进入时间戳优先读取模式后,cpu优先对缓冲区先入先出队列中的时间戳信息进行读取,直至读取所述缓冲区先入先出队列中的所有ptp时间戳信息,以此,cpu可以一次性将缓冲区先入先出队列中所有的ptp时间戳信息读取出来。
56.本发明实施例的方法,通过采用缓冲区先入先出队列,在逻辑模块基于目标网络设备发来的ptp报文生成对应的ptp时间戳信息后,逻辑模块可以将ptp时间戳信息写入缓冲区先入先出队列,使ptp时间戳信息按照先入先出方式被读取,有效解决了ptp时间戳信息的覆盖丢失问题;通过逻辑模块向cpu发送时间戳优先读取指令,指示cpu进入时间戳优先读取模式,一次性将缓冲区先入先出队列中所有的ptp时间戳信息读取出来,进一步有效地避免了因cpu拥塞导致缓冲区先入先出队列满,后续到达的ptp时间戳信息无法写入而丢失的状况,从而有效解决cpu拥堵所导致的ptp时间戳信息丢失,而引入时钟同步误差的问题,既保证了cpu资源的有效利用,又保证了网络设备进行时钟同步的对时精度。
57.可选地,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息,包括:
58.所述中央处理器进入时间戳优先读取模式后,读取所述缓冲区先入先出队列的队列标志,其中,所述队列标志用于记录所述缓冲区先入先出队列中存储的精确时间协议时间戳信息的读取状态;
59.在所述中央处理器读取所述队列标志为非空的情况下,所述中央处理器重复执行在所述缓冲区先入先出队列中读取所述精确时间协议时间戳信息的操作;
60.在所述中央处理器读取所述队列标志为空的情况下,所述中央处理器得到所述缓冲区先入先出队列中的所有精确时间协议时间戳信息,停止精确时间协议时间戳信息读取操作,结束时间戳优先读取模式。
61.具体地,本发明所描述的队列标志用于记录接收缓冲区先入先出队列中存储的ptp时间戳信息的读取状态,其具体可以表示为缓冲区先入先出队列为空或缓冲区先入先出队列为非空,在缓冲区先入先出队列为空时,表示缓冲区先入先出队列中无ptp时间戳信
息;而当缓冲区先入先出队列时,则表示缓冲区先入先出队列存储有ptp时间戳信息。
62.在本发明的实施例中,在cpu读取缓冲区先入先出队列的队列标志为非空的情况下,cpu会重复执行在缓冲区先入先出队列中读取ptp时间戳信息的操作,具体为:
63.在cpu读取到缓冲区先入先出队列的队列标志为非空的情况下,cpu将执行在缓冲区先入先出队列中读取ptp时间戳信息的操作;
64.在cpu读完一个ptp时间戳信息后,逻辑模块将缓冲区先入先出队列中ptp时间戳信息的数量计数减1,此时,若缓冲区先入先出队列中ptp时间戳信息的数量计数不为0,则说明缓冲区先入先出队列中仍存储有ptp时间戳信息,进而逻辑模块更新缓冲区先入先出队列的队列标志为非空;
65.cpu继续读取缓冲区先入先出队列的队列标志,在cpu读取到该队列标志仍为非空的情况下,重复执行在缓冲区先入先出队列中读取ptp时间戳信息的操作,直至逻辑模块将缓冲区先入先出队列中ptp时间戳信息的数量计数减至0,则说明缓冲区先入先出队列中无ptp时间戳信息,ptp时间戳信息被全部读取,进而逻辑模块更新缓冲区先入先出队列的队列标志为空。
66.进一步地,在cpu读取所述队列标志为空的情况下,cpu已读取到缓冲区先入先出队列中的所有ptp时间戳信息,此时,cpu将停止ptp时间戳信息读取操作,结束时间戳优先读取模式。
67.本发明实施例的方法,通过cpu进入时间戳优先读取模式,读取缓冲区先入先出队列的队列标志,cpu根据读取的队列标志,实现读取缓冲区先入先出队列中所有的ptp时间戳信息,从而有效避免了因cpu拥塞导致缓冲区先入先出队列满,后续到达的ptp时间戳信息无法写入而丢失的状况,解决了因cpu拥塞导致ptp时间戳信息丢失,而引入时钟同步误差的问题,有效利用cpu资源,保证网络设备进行时钟同步的对时精度。
68.可选地,在所述中央处理器得到所述缓冲区先入先出队列中的所有精确时间协议时间戳信息,停止精确时间协议时间戳信息读取操作,结束时间戳优先读取模式之后,还包括:
69.所述中央处理器基于所述所有精确时间协议时间戳信息,进行时钟同步计算。
70.具体地,在cpu得到缓冲区先入先出队列中的所有ptp时间戳信息后,便可以基于所有ptp时间戳信息,进行时钟同步计算。
71.示例性地,若本地网络设备中的时钟是作为从时钟,从上层节点设备同步时钟,则本地网络设备可以通过cpu读取的ptp时间戳信息,来计算ptp报文在本地网络设备与上层节点设备之间往返的时间差,进而确定时钟偏差,本地网络设备按照该时钟偏差来调整本地时间,实现本地网路设备与上层节点设备时钟的同步;
72.若本地网络设备中的时钟是作为主时钟,向下层节点设备发布时钟,本地网络设备可以通过读取ptp时间戳信息后,将携带该ptp时间戳信息的报文发送给下层节点设备,以供下层节点设备进行时钟同步计算,从而实现下层节点设备与本地网路设备的时钟同步。
73.通过本发明的方法,在cpu得到缓冲区先入先出队列中的所有ptp时间戳信息,cpu可以基于所有ptp时间戳信息,进行时钟同步计算,以保证本地网络设备与其他节点设备进行时钟同步的对时精度。
74.可选地,所述缓冲区先入先出队列包括接收缓冲区先入先出队列和发送缓冲区先入先出队列;
75.其中,所述接收缓冲区先入先出队列用于对所述逻辑模块写入的接收精确时间协议时间戳信息进行存储,所述接收精确时间协议时间戳信息是基于外部目标网络设备发来的精确时间协议报文确定的;
76.其中,所述发送缓冲区先入先出队列用于对所述逻辑模块写入的发送精确时间协议时间戳信息进行存储,所述发送精确时间协议时间戳信息是基于所述中央处理器发出的精确时间协议报文确定的。
77.具体地,在本发明的实施例中,ptp时间戳缓冲区采用队列方式设计为缓冲区先入先出队列,根据ptp报文的收发,分为接收和发送两个方向的队列,因此,缓冲区先入先出队列包括接收缓冲区先入先出队列和发送缓冲区先入先出队列。
78.其中,两个缓冲区先入先出队列中存储的信息均包括ptp报文类型、ptp报文序列号(sequence id)以及收发ptp报文的ptp时间戳信息等。其中,ptp报文类型包括:同步(sync)报文,跟随(follow up)报文,延迟请求(delay request)报文,延迟应答(delay response)报文。同时,还可以利用寄存器分别保存两个缓冲区先入先出队列的读取状态(是否为空),以及当前队列中ptp时间戳信息的数量。
79.本发明所描述的接收ptp时间戳信息是基于外部目标网络设备发来的ptp报文确定的,即逻辑模块在接收外部目标网络设备发来的ptp报文后,会记录生成该ptp报文的接收ptp时间戳信息。
80.在ptp报文的接收方向上,逻辑模块将接收ptp时间戳信息写入接收缓冲区先入先出队列,接收缓冲区先入先出队列对接收ptp时间戳信息进行存储。
81.本发明所描述的发送ptp时间戳信息是基于本地设备cpu发来的ptp报文确定的,用于发送给外部目标网络设备进行同步时钟计算,即逻辑模块在接收本地设备cpu发来的发送ptp报文后,会记录生成该ptp报文的发送ptp时间戳信息。
82.在ptp报文的发送方向上,逻辑模块将发送ptp时间戳信息写入接收缓冲区先入先出队列,接收缓冲区先入先出队列对发送ptp时间戳信息进行存储。
83.本发明实施例的方法,通过根据ptp报文的收发方向,将缓冲区先入先出队列分为接收缓冲区先入先出队列和发送缓冲区先入先出队列,对接收ptp时间戳信息和发送ptp时间戳信息进行分别存储,便于cpu读取,保证ptp时间戳信息存储的有效性。
84.可选地,所述接收缓冲区先入先出队列包括第一控制寄存器和接收数据寄存器,其中,所述第一控制寄存器用于存储所述接收缓冲区先入先出队列的队列标志,所述接收数据寄存器用于存储所述接收精确时间协议时间戳信息;
85.所述发送缓冲区先入先出队列包括第二控制寄存器和发送数据寄存器,其中,所述第二控制寄存器用于存储所述发送缓冲区先入先出队列的队列标志,所述发送数据寄存器用于存储所述发送精确时间协议时间戳信息。
86.具体地,在本发明的实施例中,接收缓冲区先入先出队列包括第一控制寄存器和接收数据寄存器,发送缓冲区先入先出队列包括第二控制寄存器和发送数据寄存器。第一控制寄存器与第二控制寄存器可以为同一个控制寄存器,只需保证该控制寄存器在ptp报文接收和发送两个方向上共享即可。
87.表1是本发明提供的控制寄存器存储信息表,如表1所示,控制寄存器的第0~4bit表示当前队列中接收ptp时间戳信息的个数,第7bit表示接收缓冲区先入先出队列是否为空,1表示有数据,0表示队列为空;第8~12bit表示发送ptp时间戳信息的个数,第15bit表示发送缓冲区先入先出队列是否为空,1表示有数据,0表示队列为空。
88.表1
[0089][0090][0091]
在本发明的实施例中,接收数据寄存器中存储的信息包括:ptp时间戳秒信息、ptp时间戳纳秒信息、ptp消息类型、ptp消息sequence id和接收硬件端口号;发送数据寄存器中存储的信息包括:ptp时间戳秒信息、ptp时间戳纳秒信息、ptp消息类型、ptp消息sequence id和发送硬件端口号。
[0092]
在本发明的实施例中,在预设时间段内逻辑模块未接收到新的ptp报文,接收ptp报文的过程中断后,逻辑模块向cpu发送时间戳优先读取指令,cpu收到时间戳优先读取指令后,读取控制寄存器,查看第7bit的数据是否为空,若不为空,读取接收数据寄存器中的ptp时间戳信息,读取后若接收缓冲区先入先出队列中仍存在数据,则接收缓冲区先入先出队列将下一个ptp时间戳信息放入接收数据寄存器中,cpu再次读取,直至读取到控制寄存器第7bit为0时,表示已将接收缓冲区先入先出队列中的所有数据读完。
[0093]
发送ptp报文时,当cpu发送出ptp报文后,读取控制寄存器,查看第15bit查看队列是否为空,若不为空,读取发送数据寄存器列中的数据,读取后若发送缓冲区先入先出队列
中仍存在数据,则发送缓冲区先入先出队列将下一个ptp时间戳信息放入发送数据寄存器中,cpu再次读取,直至读取到控制寄存器第15bit为0时,表示已将发送缓冲区先入先出队列中的所有数据读完。
[0094]
本发明实施例的方法,通过根据ptp报文的收发方向,缓冲区先入先出队列采用多个寄存器对ptp报文信息进行分类存储,有利于提高设备处理ptp报文数据的效率。
[0095]
图2是本发明提供的ptp报文接收方向上进行ptp时间戳获取的流程示意图,如图2所示,包括:
[0096]
步骤s200,开始;
[0097]
步骤s210,逻辑模块接收外部目标网络设备发来的ptp报文;
[0098]
步骤s220,逻辑模块记录生成ptp报文的ptp时间戳信息,将ptp时间戳信息存入接收缓冲区先入先出队列;
[0099]
步骤s230,逻辑模块向cpu发送时间戳优先读取指令,cpu开始执行ptp时间戳信息读取操作;
[0100]
步骤s240,cpu读取接收缓冲区先入先出队列的队列标志是否为空;
[0101]
步骤s250,若接收缓冲区先入先出队列的队列标志为非空,则cpu读取接收缓冲区先入先出队列中的ptp时间戳信息;
[0102]
步骤s260,逻辑模块更新接收缓冲区先入先出队列的队列标志;
[0103]
重复步骤s240至步骤s260,直至cpu读取接收缓冲区先入先出队列的队列标志为空,则跳转至步骤s270;
[0104]
步骤s270,结束:cpu结束执行ptp时间戳信息读取操作。
[0105]
图3是本发明提供的ptp报文发送方向上进行ptp时间戳获取的流程示意图,如图3所示,包括:
[0106]
步骤s300,开始;
[0107]
步骤s310,逻辑模块接收cpu发送的ptp报文,该ptp报文用于发送给外部目标网络设备;
[0108]
步骤s320,逻辑模块记录生成ptp报文的ptp时间戳信息,将ptp时间戳信息存入发送缓冲区先入先出队列;
[0109]
步骤s330,逻辑模块向cpu发送时间戳优先读取指令,cpu开始执行ptp时间戳信息读取操作;
[0110]
步骤s340,cpu读取发送缓冲区先入先出队列的队列标志是否为空;
[0111]
步骤s350,若队列标志为非空,则cpu读取发送缓冲区先入先出队列中的ptp时间戳信息;
[0112]
步骤s360,逻辑模块更新发送缓冲区先入先出队列的队列标志;
[0113]
重复步骤s340至步骤s360,直至cpu读取发送缓冲区先入先出队列的队列标志为空,跳转至步骤s370;
[0114]
步骤s370,结束:cpu结束执行ptp时间戳信息读取操作。
[0115]
下面对本发明提供的时间戳获取装置进行描述,下文描述的时间戳获取装置与上文描述的时间戳获取方法可相互对应参照。
[0116]
图4是本发明提供的时间戳获取装置的结构示意图,如图4所示,包括:
[0117]
生成单元410,用于逻辑模块基于目标网络设备的n个精确时间协议报文,生成n个所述精确时间协议报文对应的n个精确时间协议时间戳信息,将n个所述精确时间协议时间戳信息写入缓冲区先入先出队列中;
[0118]
获取单元420,用于在预设时间段内所述逻辑模块未接收到新的精确时间协议报文的情况下,所述逻辑模块向中央处理器发送时间戳优先读取指令,以供所述中央处理器执行所述时间戳优先读取指令,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息。
[0119]
所述获取单元420还用于:
[0120]
所述中央处理器进入时间戳优先读取模式后,读取所述缓冲区先入先出队列的队列标志,其中,所述队列标志用于记录所述缓冲区先入先出队列中存储的精确时间协议时间戳信息的读取状态;
[0121]
在所述中央处理器读取所述队列标志为非空的情况下,所述中央处理器重复执行在所述缓冲区先入先出队列中读取所述精确时间协议时间戳信息的操作;
[0122]
在所述中央处理器读取所述队列标志为空的情况下,所述中央处理器得到所述缓冲区先入先出队列中的所有精确时间协议时间戳信息,停止精确时间协议时间戳信息读取操作,结束时间戳优先读取模式。
[0123]
本发明实施例提供的时间戳获取装置,通过采用缓冲区先入先出队列,在逻辑模块基于目标网络设备发来的ptp报文生成对应的ptp时间戳信息后,逻辑模块可以将ptp时间戳信息写入缓冲区先入先出队列,使ptp时间戳信息按照先入先出方式被读取,有效解决了ptp时间戳信息的覆盖丢失问题;通过逻辑模块向cpu发送时间戳优先读取指令,指示cpu进入时间戳优先读取模式,一次性将缓冲区先入先出队列中所有的ptp时间戳信息读取出来,进一步有效地避免了因cpu拥塞导致缓冲区先入先出队列满,后续到达的ptp时间戳信息无法写入而丢失的状况,从而有效解决cpu拥堵所导致的ptp时间戳信息丢失,而引入时钟同步误差的问题,既保证了cpu资源的有效利用,又保证了网络设备进行时钟同步的对时精度。
[0124]
本实施例所述的装置可以用于执行上述方法实施例,其原理和技术效果类似,此处不再赘述。
[0125]
图5是本发明提供的电子设备的结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行上述各方法所提供的时间戳获取方法,该方法包括:逻辑模块基于目标网络设备的n个精确时间协议报文,生成n个所述精确时间协议报文对应的n个精确时间协议时间戳信息,将n个所述精确时间协议时间戳信息写入缓冲区先入先出队列中;在预设时间段内所述逻辑模块未接收到新的精确时间协议报文的情况下,所述逻辑模块向中央处理器发送时间戳优先读取指令,以供所述中央处理器执行所述时间戳优先读取指令,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息。
[0126]
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0127]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的时间戳获取方法,该方法包括:逻辑模块基于目标网络设备的n个精确时间协议报文,生成n个所述精确时间协议报文对应的n个精确时间协议时间戳信息,将n个所述精确时间协议时间戳信息写入缓冲区先入先出队列中;在预设时间段内所述逻辑模块未接收到新的精确时间协议报文的情况下,所述逻辑模块向中央处理器发送时间戳优先读取指令,以供所述中央处理器执行所述时间戳优先读取指令,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息。
[0128]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的时间戳获取方法,该方法包括:逻辑模块基于目标网络设备的n个精确时间协议报文,生成n个所述精确时间协议报文对应的n个精确时间协议时间戳信息,将n个所述精确时间协议时间戳信息写入缓冲区先入先出队列中;在预设时间段内所述逻辑模块未接收到新的精确时间协议报文的情况下,所述逻辑模块向中央处理器发送时间戳优先读取指令,以供所述中央处理器执行所述时间戳优先读取指令,所述中央处理器进入时间戳优先读取模式,仅执行精确时间协议时间戳信息读取操作,直至读取所述缓冲区先入先出队列中的所有精确时间协议时间戳信息。
[0129]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0130]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0131]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;
而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1