CN105550156A - 一种时间同步的方法及装置 - Google Patents
一种时间同步的方法及装置 Download PDFInfo
- Publication number
- CN105550156A CN105550156A CN201510873662.4A CN201510873662A CN105550156A CN 105550156 A CN105550156 A CN 105550156A CN 201510873662 A CN201510873662 A CN 201510873662A CN 105550156 A CN105550156 A CN 105550156A
- Authority
- CN
- China
- Prior art keywords
- ping
- pong buffer
- cpu core
- time
- current
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
- G06F15/8069—Details on data memory access using a cache
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种时间同步的方法及装置,该方法为,主CPU核创建乒乓缓存,并将乒乓缓存地址发送给从CPU核,然后主CPU核就可以将获得的当前的基准时间写入到乒乓缓存中,当从CPU核需要获取当前时间时,从乒乓缓存中获取当前的基准时间,且读取设定的定时器的时间偏移值,这样,从CPU核根据定时器的时间偏移值和获取的当前的基准时间,计算获得从CPU核的当前时间,这样,利用乒乓缓存和定时器,从CPU核都根据乒乓缓存中的当前的基准时间,计算获得自己的当前时间,就实现了每一个CPU核的时间同步,使得问题调试、定位更加方便和准确,且用乒乓缓存的方式处理共享缓存,不影响系统性能,且获得的时间精度高。
Description
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种时间同步的方法及装置。
背景技术
多核处理器是将两个或多个处理器封装在一起,集成有两个或多个完整的计算引擎(内核)。多核处理器由于多核并行的处理数据使得系统的性能大幅的提高,但是随着处理器个数的增加,多个核之间的信息共享越来越重要,一个核经常需要知道或参考其他核的数据信息,则相应的开发难度也越来越大,问题的定位也越来越难。
目前,每一个从CPU核都有属于自身的时钟,以自身启动时间为基准,根据自身的时钟来计算获得自身的当前时间,这样,就会导致在某一时刻每个从CPU核的当前时间会有差异,难以实现核间的时间同步,当出现问题时,需要定位某一时刻从CPU核的行为,就会导致定位不准确,使得对问题的解决非常不方便。例如,如果当前需要知道数据流整个处理流程中在每个核内的耗时情况,就需要统一的时间。
而目前,还没有通用的多核间时间同步的方法。
发明内容
本发明实施例提供一种时间同步的方法及装置,实现了多核间的时间同步,使得问题定位更加准确方便。
本发明实施例提供的具体技术方案如下:
一种时间同步的方法,包括:
主CPU核创建乒乓缓存,并将上述乒乓缓存的地址发送给从CPU核;
主CPU核在设定的定时器超时时,更新上述乒乓缓存中的参数;其中,上述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;
从CPU核获取主CPU核发送的上述乒乓缓存的地址,以及在确定要获取当前时间时,获取上述乒乓缓存中保存的当前的基准时间;
从CPU核读取上述定时器的时间偏移值,以及基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间,且基于上述从CPU核的当前时间和上述当前的基准时间,完成与主CPU核的时间同步。
本发明实施例中,主CPU核创建乒乓缓存,并将上述乒乓缓存的地址发送给从CPU核;主CPU核在设定的定时器超时时,更新上述乒乓缓存中的参数;其中,上述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;从CPU核获取主CPU核发送的上述乒乓缓存的地址,以及在确定要获取当前时间时,获取上述乒乓缓存中保存的当前的基准时间;从CPU核读取上述定时器的时间偏移值,以及基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间,且基于上述从CPU核的当前时间和上述当前的基准时间,完成与主CPU核的时间同步。这样,利用创建的乒乓缓存和定时器,实现每一个CPU核的时间同步,且获取的时间精度高;并且,不再使用锁功能,减少每个核的加锁、等待延迟和解锁等操作,不会影响系统的性能。
较佳的,上述设定的定时器为单次触发one_shot模式的定时器。
较佳的,主CPU核在设定的定时器超时时,更新上述乒乓缓存中的参数,具体包括:
确定乒乓缓存中当前使用的乒乓缓存块,以及将当前使用的乒乓缓存块的标记位设置为正在使用IN_USE,将当前未使用的乒乓缓存块的标记位设置为未使用UN_USE;其中,上述乒乓缓存包括两个乒乓缓存块;
将获取的当前的基准时间写入当前使用的乒乓缓存块中,且设置每一个乒乓缓存块的索引值并重新启动定时器。
较佳的,在确定要获取当前时间时,获取上述乒乓缓存中的当前的基准时间,具体包括:
获取乒乓缓存中乒乓缓存块的索引值,并基于上述索引值,获取对应的乒乓缓存块的标记位;
判断上述标记位是否为IN_USE,以及在确定标记位为IN_USE时,获取上述对应的乒乓缓存块中保存的当前的基准时间。
较佳的,基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间,具体包括:
判断上述时间偏移值是否为0;
若为0,则计算上述当前的基准时间和预设的定时器的定时时间之和,作为从CPU核的当前时间;
若不为0,则计算上述时间偏移值和上述当前的基准时间之和,作为从CPU核的当前时间。
一种时间同步装置,包括一个主CPU核和至少一个从CPU核,具体包括:
主CPU核,用于创建乒乓缓存,并将上述乒乓缓存的地址发送给从CPU核,以及在设定的定时器超时时,更新上述乒乓缓存中的参数;其中,上述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;
从CPU核,用于获取主CPU核发送的上述乒乓缓存的地址,在确定要获取当前时间时,获取上述乒乓缓存中保存的当前的基准时间,以及读取定时器的时间偏移值,基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间,且基于上述从CPU核的当前时间和上述当前的基准时间,完成与主CPU核的时间同步。
本发明实施例中,主CPU核创建乒乓缓存,并将上述乒乓缓存的地址发送给从CPU核;主CPU核在设定的定时器超时时,更新上述乒乓缓存中的参数;其中,上述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;从CPU核获取主CPU核发送的上述乒乓缓存的地址,以及在确定要获取当前时间时,获取上述乒乓缓存中保存的当前的基准时间;从CPU核读取上述定时器的时间偏移值,以及基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间,且基于上述从CPU核的当前时间和上述当前的基准时间,完成与主CPU核的时间同步。这样,利用创建的乒乓缓存和定时器,实现每一个CPU核的时间同步,且获取的时间精度高;并且,不再使用锁功能,不会影响系统的性能。
较佳的,上述设定的定时器为单次触发one_shot模式的定时器。
较佳的,在设定的定时器超时时,更新上述乒乓缓存中的参数时,主CPU核具体用于:
确定乒乓缓存中当前使用的乒乓缓存块,以及将当前使用的乒乓缓存块的标记位设置为正在使用IN_USE,将当前未使用的乒乓缓存块的标记位设置为未使用UN_USE;其中,上述乒乓缓存包括两个乒乓缓存块;
将获取的当前的基准时间写入当前使用的乒乓缓存块中,且设置每一个乒乓缓存块的索引值并重新启动定时器。
较佳的,在确定要获取当前时间时,获取上述乒乓缓存中的当前的基准时间,从CPU核具体用于:
获取乒乓缓存中乒乓缓存块的索引值,并基于上述索引值,获取对应的乒乓缓存块的标记位;
判断上述标记位是否为IN_USE,以及在确定标记位为IN_USE时,获取上述对应的乒乓缓存块中保存的当前的基准时间。
较佳的,基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间时,从CPU核具体用于:
判断上述时间偏移值是否为0;
若为0,则计算上述当前的基准时间和预设的定时器的定时时间之和,作为从CPU核的当前时间;
若不为0,则计算上述时间偏移值和上述当前的基准时间之和,作为从CPU核的当前时间。
附图说明
图1为本发明实施例中时间同步方法概述流程图;
图2为本发明实施例中时间同步方法详细流程图;
图3为本发明实施例中时间同步装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了实现了多核间的时间同步,使得问题定位更加准确方便,本发明实施例中,主CPU核创建乒乓缓存,并将乒乓缓存地址发送给从CPU核,然后主CPU核就可以将获得的当前的基准时间写入到乒乓缓存中,当从CPU核需要获取当前时间时,从乒乓缓存中获取当前的基准时间,且读取设定的定时器的时间偏移值,这样,从CPU核根据定时器的时间偏移值和获取的当前的基准时间,计算获得从CPU核的当前时间,这样就实现了主CPU核和从CPU核的时间同步。
下面通过具体实施例对本发明方案进行详细描述,当然,本发明并不限于以下实施例。
本发明实施例,针对于多核系统,在多核系统中包括有一个主CPU核和多个从CPU核,当需要知道在某一时刻多个CPU核的行为时,那么就需要主CPU核在共享内存中提供一个基准时间,从CPU核都根据这个基准时间,来计算自身当前的时间,这样,就可以实现所有CPU核的时间同步。但是,目前是利用核间锁技术来使用共享内存的,当一个从CPU核需要访问这个基准时间时,核间锁就会锁定这个共享内存,保证同一时刻只能有一个从CPU核进行访问,这样,就增加了等待延时,且大量的核加锁和解锁操作,会很大程度上影响系统的处理能力,降低了系统的性能,因此,本发明实施例中,利用乒乓缓存来代替核间锁技术,不会影响系统的性能,且可以获得更高的时间精度。
参阅图1所示,本发明实施例中,时间同步方法的具体流程如下:
步骤100:主CPU核创建乒乓缓存,并将上述乒乓缓存的地址发送给从CPU核。
在执行步骤100之前,主CPU核获取实时时钟(Real-TimeClock,RTC)芯片提供的当前的基准时间。
执行步骤100具体包括:
首先,主CPU核申请一个内存地址,在申请的内存地址内创建乒乓缓存;
然后,主CPU核通过核间通信将乒乓缓存的地址发送给从CPU核。
这样,从CPU核就可以和主CPU核共享这个乒乓缓存。
步骤110:主CPU核在设定的定时器超时时,更新上述乒乓缓存中的参数;其中,上述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间。
其中,设定的定时器为单次触发(one_shot)模式的定时器,并设定定时器的定时时间,因此定时器的时钟有一定的限制,设定的定时时间不能过大,例如,设定的定时时间为10秒钟,也就是说,每到达定时时间后,定时器就会中断,待重新启动时,定时器才会重新开始计时,这样从CPU核获取的时间精度高。
其中,乒乓缓存包括两个乒乓缓存块,这两个乒乓缓存块可以交替使用,具体乒乓缓存的使用方法,可以使用现有的方法,这里就不再赘述。
执行步骤110时,具体包括:
首先,定时器超时时,也就是,到达了定时器的定时时间,定时器就会触发中断;
然后,确定乒乓缓存中当前使用的乒乓缓存块,以及将当前使用的乒乓缓存块的标记位设置为正在使用(IN_USE),将当前未使用的乒乓缓存块的标记位设置为未使用(UN_USE);
然后,将获取的当前的基准时间写入当前使用的乒乓缓存块中,且设置每一个乒乓缓存块的索引值;
最后,重新启动定时器。
这样,在更新完乒乓缓存中的参数,再启动定时器,可以获得更高的时间精度。
实际中,步骤110的操作都预定义在一个函数中,例如定义为中断回调函数,这样在定时器超时时,就可以直接调用该中断回调函数。
步骤120:从CPU核获取主CPU核发送的上述乒乓缓存的地址,以及在确定要获取当前时间时,获取上述乒乓缓存中保存的当前的基准时间。
执行步骤120,具体包括:
首先,从CPU核获取主CPU核发送的上述乒乓缓存的地址;
然后,从CPU核判断是否需要获取当前时间,在确定获取当前时间时,获取乒乓缓存中乒乓缓存块的索引值,并基于上述索引值,获取对应的乒乓缓存块的标记位;
然后,判断上述标记位是否为IN_USE,以及在确定标记位为IN_USE时,获取上述对应的乒乓缓存块中的保存的当前的基准时间。
例如,乒乓缓存中的两个乒乓缓存块的索引值和标记位分别为,其中一个乒乓缓存块,索引值为0,标记位flag=IN_USE,另一个乒乓缓存块,索引值为1,标记位flag=UN_US。
这样,当从CPU核需要获取当前时间时,先获取索引值,如果获取的索引值为1,然后判断索引值为1的乒乓缓存块中的标记位,获取该标记位flag=UN_US,那么从CPU核就会获取另外一个乒乓缓存块,也就是索引值为0对应的乒乓缓存块,并在其中获取保存的当前的基准时间。
步骤130:从CPU核读取上述定时器的时间偏移值,以及基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间,且基于上述从CPU核的当前时间和上述当前的基准时间,完成与主CPU核的时间同步。
执行步骤130时,具体包括:
首先,从CPU核读取定时器的时间偏移值;
然后,判断上述时间偏移值是否为0;
若为0,则计算上述当前的基准时间和预设的定时器的定时时间之和,作为从CPU核的当前时间;
若不为0,则计算上述时间偏移值和上述当前的基准时间之和,作为从CPU核的当前时间。
值得说明的是,当时间偏移值为0时,计算从CPU的当前时间,实际上是当前的基准时间、预设的定时器的定时时间以及时间偏移值的和,但是这时时间偏移值为0,因此就不再这里体现了。
这样,执行完步骤100-130后,从CPU核就根据当前的基准时间获得了自己当前的时间,每一个从CPU核都基于主CPU核提供的基准时间调整自己当前的时间,这样,所有CPU核的时间就是同步的。
下面采用一个具体的应用场景对上述实施例作出进一步详细说明。具体参阅图2所示,本发明实施例中,时间同步方法的执行过程具体如下:
步骤200:RTC芯片给主CPU核提供当前的基准时间。
步骤201:主CPU创建乒乓缓存,并将乒乓缓存的地址发送给从CPU核,该乒乓缓存为主CPU核和从CPU核共享的内存,其中,该乒乓缓存包含有两个乒乓缓存块。
步骤202:注册one_shot模式的定时器,并设定定时器的定时时间。
步骤203:定时时间到达以后,定时器会中断,调用中断回调函数,该中断回调函数用于执行步骤204。
步骤204:更新乒乓缓存中的参数,具体包括:确定当前使用的乒乓缓存块,且设置当前使用的乒乓缓存块的flag=IN_USE,当前未使用的乒乓缓存块的flag=UN_USE,同时将当前的基准时间写入到当前使用的乒乓缓存块中,设置乒乓缓存块的索引值,重新启动定时器。
步骤205:更新的参数都会保存在乒乓缓存中,这样,从CPU就可以从乒乓缓存中获取这些参数。
步骤206:从CPU核获取主CPU核发送的乒乓缓存的地址。
步骤207:确定是否要获取当前时间,若是,则执行步骤208,若否,则执行步骤215。
步骤208:获取乒乓缓存中乒乓缓存块的索引值。
步骤209:根据索引值获取对应的乒乓缓存块,且判断该乒乓缓存块中的flag是否为IN_USE,如果是,则执行步骤211,如果否,则执行步骤210。
步骤210:获取另外一个乒乓缓存块,也就是说,乒乓缓存中的两个乒乓缓存块必定有一个的flag为IN_USE,从CPU核获取当前使用的乒乓缓存块,并针对当前使用的乒乓缓存块,执行步骤211。
步骤211:获取乒乓缓存块中当前的基准时间。
步骤212:读取定时器的时间偏移值,并判断时间偏移值是否为0,如果为0,则执行步骤213,如果不为0,则执行步骤214。
步骤213:计算的从CPU核的当前时间=当前基准时间+定时器定时时间。
步骤214:计算的从CPU核的当前时间=当前基准时间+定时器时间偏移值。
步骤215:执行其他任务。
基于上述实施例,参阅图3所示,本发明实施例中,时间同步装置,包括一个主CPU核30和至少一个从CPU核31,具体包括:
主CPU核30,用于创建乒乓缓存,并将上述乒乓缓存的地址发送给从CPU核31,以及在设定的定时器超时时,更新上述乒乓缓存中的参数;其中,上述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;
从CPU核31,用于获取主CPU核30发送的上述乒乓缓存的地址,在确定要获取当前时间时,获取上述乒乓缓存中保存的当前的基准时间,以及读取定时器的时间偏移值,基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核31的当前时间,且基于上述从CPU核31的当前时间和上述当前的基准时间,完成与主CPU核30的时间同步。
较佳的,上述设定的定时器为单次触发one_shot模式的定时器。
较佳的,在设定的定时器超时时,更新上述乒乓缓存中的参数时,主CPU核30具体用于:
确定乒乓缓存中当前使用的乒乓缓存块,以及将当前使用的乒乓缓存块的标记位设置为正在使用IN_USE,将当前未使用的乒乓缓存块的标记位设置为未使用UN_USE;其中,上述乒乓缓存包括两个乒乓缓存块;
将获取的当前的基准时间写入当前使用的乒乓缓存块中,且设置每一个乒乓缓存块的索引值并重新启动定时器。
较佳的,在确定要获取当前时间时,获取上述乒乓缓存中的当前的基准时间,从CPU核31具体用于:
获取乒乓缓存中乒乓缓存块的索引值,并基于上述索引值,获取对应的乒乓缓存块的标记位;
判断上述标记位是否为IN_USE,以及在确定标记位为IN_USE时,获取上述对应的乒乓缓存块中保存的当前的基准时间。
较佳的,基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核31的当前时间时,从CPU核31具体用于:
判断上述时间偏移值是否为0;
若为0,则计算上述当前的基准时间和预设的定时器的定时时间之和,作为从CPU核31的当前时间;
若不为0,则计算上述时间偏移值和上述当前的基准时间之和,作为从CPU核31的当前时间。
综上所述,本发明实施例中,主CPU核创建乒乓缓存,并将上述乒乓缓存的地址发送给从CPU核;主CPU核在设定的定时器超时时,更新上述乒乓缓存中的参数;其中,上述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;从CPU核获取主CPU核发送的上述乒乓缓存的地址,以及在确定要获取当前时间时,获取上述乒乓缓存中保存的当前的基准时间;从CPU核读取上述定时器的时间偏移值,以及基于上述时间偏移值和上述当前的基准时间,计算获得从CPU核的当前时间,且基于上述从CPU核的当前时间和上述当前的基准时间,完成与主CPU核的时间同步。这样,利用创建的乒乓缓存和定时器,实现每一个CPU核的时间同步,且获取的时间精度高;并且,不再使用核间锁技术,减少每个核的加锁、等待延迟和解锁等操作,不会影响系统的性能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种时间同步的方法,其特征在于,包括:
主CPU核创建乒乓缓存,并将所述乒乓缓存的地址发送给从CPU核;
主CPU核在设定的定时器超时时,更新所述乒乓缓存中的参数;其中,所述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;
从CPU核获取主CPU核发送的所述乒乓缓存的地址,以及在确定要获取当前时间时,获取所述乒乓缓存中保存的当前的基准时间;
从CPU核读取所述定时器的时间偏移值,以及基于所述时间偏移值和所述当前的基准时间,计算获得从CPU核的当前时间,且基于所述从CPU核的当前时间和所述当前的基准时间,完成与主CPU核的时间同步。
2.如权利要求1所述的方法,其特征在于,所述设定的定时器为单次触发one_shot模式的定时器。
3.如权利要求2所述的方法,其特征在于,主CPU核在设定的定时器超时时,更新所述乒乓缓存中的参数,具体包括:
确定乒乓缓存中当前使用的乒乓缓存块,以及将当前使用的乒乓缓存块的标记位设置为正在使用IN_USE,将当前未使用的乒乓缓存块的标记位设置为未使用UN_USE;其中,所述乒乓缓存包括两个乒乓缓存块;
将获取的当前的基准时间写入当前使用的乒乓缓存块中,且设置每一个乒乓缓存块的索引值并重新启动定时器。
4.如权利要求3所述的方法,其特征在于,在确定要获取当前时间时,获取所述乒乓缓存中的当前的基准时间,具体包括:
获取乒乓缓存中乒乓缓存块的索引值,并基于所述索引值,获取对应的乒乓缓存块的标记位;
判断所述标记位是否为IN_USE,以及在确定标记位为IN_USE时,获取所述对应的乒乓缓存块中保存的当前的基准时间。
5.如权利要求1-4任一项所述的方法,其特征在于,基于所述时间偏移值和所述当前的基准时间,计算获得从CPU核的当前时间,具体包括:
判断所述时间偏移值是否为0;
若为0,则计算所述当前的基准时间和预设的定时器的定时时间之和,作为从CPU核的当前时间;
若不为0,则计算所述时间偏移值和所述当前的基准时间之和,作为从CPU核的当前时间。
6.一种时间同步的装置,其特征在于,包括:
主CPU核,用于创建乒乓缓存,并将所述乒乓缓存的地址发送给从CPU核,以及在设定的定时器超时时,更新所述乒乓缓存中的参数;其中,所述参数至少包括乒乓缓存的标记位、乒乓缓存的索引值和当前的基准时间;
从CPU核,用于获取主CPU核发送的所述乒乓缓存的地址,在确定要获取当前时间时,获取所述乒乓缓存中保存的当前的基准时间,以及读取所述定时器的时间偏移值,基于所述时间偏移值和所述当前的基准时间,计算获得从CPU核的当前时间,且基于所述从CPU核的当前时间和所述当前的基准时间,完成与主CPU核的时间同步。
7.如权利要求6所述的装置,其特征在于,所述设定的定时器为单次触发one_shot模式的定时器。
8.如权利要求7所述的装置,其特征在于,在设定的定时器超时时,更新所述乒乓缓存中的参数时,主CPU核具体用于:
确定乒乓缓存中当前使用的乒乓缓存块,以及将当前使用的乒乓缓存块的标记位设置为正在使用IN_USE,将当前未使用的乒乓缓存块的标记位设置为未使用UN_USE;其中,所述乒乓缓存包括两个乒乓缓存块;
将获取的当前的基准时间写入当前使用的乒乓缓存块中,且设置每一个乒乓缓存块的索引值并重新启动定时器。
9.如权利要求8所述的装置,其特征在于,在确定要获取当前时间时,获取所述乒乓缓存中的当前的基准时间,从CPU核具体用于:
获取乒乓缓存中乒乓缓存块的索引值,并基于所述索引值,获取对应的乒乓缓存块的标记位;
判断所述标记位是否为IN_USE,以及在确定标记位为IN_USE时,获取所述对应的乒乓缓存块中保存的当前的基准时间。
10.如权利要求6-9任一项所述的装置,其特征在于,基于所述时间偏移值和所述当前的基准时间,计算获得从CPU核的当前时间时,从CPU核具体用于:
判断所述时间偏移值是否为0;
若为0,则计算所述当前的基准时间和预设的定时器的定时时间之和,作为从CPU核的当前时间;
若不为0,则计算所述时间偏移值和所述当前的基准时间之和,作为从CPU核的当前时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510873662.4A CN105550156B (zh) | 2015-12-02 | 2015-12-02 | 一种时间同步的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510873662.4A CN105550156B (zh) | 2015-12-02 | 2015-12-02 | 一种时间同步的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550156A true CN105550156A (zh) | 2016-05-04 |
CN105550156B CN105550156B (zh) | 2018-08-07 |
Family
ID=55829345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510873662.4A Active CN105550156B (zh) | 2015-12-02 | 2015-12-02 | 一种时间同步的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550156B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045425B (zh) * | 2017-03-07 | 2020-01-10 | 记忆科技(深圳)有限公司 | 一种高精度计时子系统的实现方法 |
CN110941449A (zh) * | 2019-11-15 | 2020-03-31 | 新华三半导体技术有限公司 | Cache块处理方法、装置及处理器芯片 |
CN111107020A (zh) * | 2019-12-31 | 2020-05-05 | 盛科网络(苏州)有限公司 | 一种多核心以太网交换芯片时间同步的方法 |
CN111752335A (zh) * | 2020-05-23 | 2020-10-09 | 苏州浪潮智能科技有限公司 | 基于硬盘多核cpu的时间同步方法、系统、终端及存储介质 |
WO2020238997A1 (zh) * | 2019-05-31 | 2020-12-03 | 华为技术有限公司 | 时间同步方法、业务单板及网络设备 |
CN112578847A (zh) * | 2020-12-21 | 2021-03-30 | 青岛鼎信通讯股份有限公司 | 一种基于Linux系统的多MCU时钟同步方案 |
CN114221732A (zh) * | 2021-12-23 | 2022-03-22 | 北京四方继保工程技术有限公司 | 一种带同步质量的高精度乒乓同步方法及系统 |
CN114866499A (zh) * | 2022-04-27 | 2022-08-05 | 曙光信息产业(北京)有限公司 | 片上多核系统的同步广播通信方法、装置和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949129A (zh) * | 2006-11-27 | 2007-04-18 | 杭州华为三康技术有限公司 | 时间同步方法及装置 |
JP2010003039A (ja) * | 2008-06-19 | 2010-01-07 | Koyo Electronics Ind Co Ltd | Cpu動作クロック同調式plcバスシステム |
CN103178920A (zh) * | 2012-07-12 | 2013-06-26 | 深圳市康必达中创科技有限公司 | 数字化变电站测试系统中的多通道同步方法 |
CN103812594A (zh) * | 2014-02-26 | 2014-05-21 | 清华大学 | 一种无数据辅助的并行时钟同步方法及系统 |
-
2015
- 2015-12-02 CN CN201510873662.4A patent/CN105550156B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949129A (zh) * | 2006-11-27 | 2007-04-18 | 杭州华为三康技术有限公司 | 时间同步方法及装置 |
JP2010003039A (ja) * | 2008-06-19 | 2010-01-07 | Koyo Electronics Ind Co Ltd | Cpu動作クロック同調式plcバスシステム |
CN103178920A (zh) * | 2012-07-12 | 2013-06-26 | 深圳市康必达中创科技有限公司 | 数字化变电站测试系统中的多通道同步方法 |
CN103812594A (zh) * | 2014-02-26 | 2014-05-21 | 清华大学 | 一种无数据辅助的并行时钟同步方法及系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045425B (zh) * | 2017-03-07 | 2020-01-10 | 记忆科技(深圳)有限公司 | 一种高精度计时子系统的实现方法 |
WO2020238997A1 (zh) * | 2019-05-31 | 2020-12-03 | 华为技术有限公司 | 时间同步方法、业务单板及网络设备 |
US11860689B2 (en) | 2019-05-31 | 2024-01-02 | Huawei Technologies Co., Ltd. | Time synchronization method, service board, and network device |
CN110941449A (zh) * | 2019-11-15 | 2020-03-31 | 新华三半导体技术有限公司 | Cache块处理方法、装置及处理器芯片 |
CN111107020A (zh) * | 2019-12-31 | 2020-05-05 | 盛科网络(苏州)有限公司 | 一种多核心以太网交换芯片时间同步的方法 |
CN111107020B (zh) * | 2019-12-31 | 2022-01-11 | 苏州盛科通信股份有限公司 | 一种多核心以太网交换芯片时间同步的方法 |
CN111752335A (zh) * | 2020-05-23 | 2020-10-09 | 苏州浪潮智能科技有限公司 | 基于硬盘多核cpu的时间同步方法、系统、终端及存储介质 |
CN112578847A (zh) * | 2020-12-21 | 2021-03-30 | 青岛鼎信通讯股份有限公司 | 一种基于Linux系统的多MCU时钟同步方案 |
CN114221732A (zh) * | 2021-12-23 | 2022-03-22 | 北京四方继保工程技术有限公司 | 一种带同步质量的高精度乒乓同步方法及系统 |
CN114866499A (zh) * | 2022-04-27 | 2022-08-05 | 曙光信息产业(北京)有限公司 | 片上多核系统的同步广播通信方法、装置和存储介质 |
CN114866499B (zh) * | 2022-04-27 | 2024-02-23 | 曙光信息产业(北京)有限公司 | 片上多核系统的同步广播通信方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105550156B (zh) | 2018-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550156A (zh) | 一种时间同步的方法及装置 | |
CN106156278B (zh) | 一种数据库数据读写方法和装置 | |
CN104881494B (zh) | 与Redis服务器进行数据同步的方法、装置和系统 | |
TWI501102B (zh) | 虛擬時間控制裝置、方法及電腦程式產品 | |
US9292359B2 (en) | System and method for memory management | |
US20090024985A1 (en) | Task control method and semiconductor integrated circuit | |
US20180285249A1 (en) | Methodology for unit test and regression framework | |
JP2008310727A (ja) | シミュレーション装置及びシミュレーション方法 | |
CN109284339A (zh) | 一种数据库数据实时同步的方法和装置 | |
CN112015491A (zh) | 实现函数跳转的方法、装置及计算机存储介质 | |
CN110737507B (zh) | 一种虚拟机迁移方法与装置 | |
CN107179982A (zh) | 一种跨进程调试方法和装置 | |
CN103036947A (zh) | 基于kvm的虚拟机迁移方法及系统 | |
KR20190054938A (ko) | 시뮬레이션 장치, 시뮬레이션 시스템, 시뮬레이션 방법 및 시뮬레이션 프로그램 | |
CN109582384A (zh) | 配置信息的更新方法及装置 | |
US8803900B2 (en) | Synchronization with semaphores in a multi-engine GPU | |
EP4318211A1 (en) | Method for inspecting code under weak memory order architecture, and corresponding device | |
TWI710950B (zh) | 用於資料的非同步複製的系統及相關聯電腦實施方法及電腦可讀媒體 | |
CN111124890B (zh) | 一种分布式数据库性能测试方法、系统、终端及存储介质 | |
CN110763252B (zh) | 一种基于嵌入式处理器的捷联惯导逆序滤波设计方法 | |
CN113377791A (zh) | 一种数据处理方法、系统及计算设备 | |
CN108182081B (zh) | 用户态定时器的处理方法、装置、存储介质和电子设备 | |
CN107220101B (zh) | 一种容器创建方法和装置 | |
WO2018228528A1 (zh) | 一种批量化电路仿真方法和系统 | |
JP2014134989A (ja) | 計算機システム及び計算機管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |