CN109753479A - 一种数据下发方法及装置、设备、介质 - Google Patents
一种数据下发方法及装置、设备、介质 Download PDFInfo
- Publication number
- CN109753479A CN109753479A CN201811628680.6A CN201811628680A CN109753479A CN 109753479 A CN109753479 A CN 109753479A CN 201811628680 A CN201811628680 A CN 201811628680A CN 109753479 A CN109753479 A CN 109753479A
- Authority
- CN
- China
- Prior art keywords
- team
- data
- joining
- round
- virtual processor
- 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
Landscapes
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供一种数据下发方法及装置、设备、介质。构建有用于数据下发的被预分配内存的循环队列,预分配的内存分割为多个片段,以便数据相应地分块入队,该方法至少包括:获取循环队列的入队接口;由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从入队接口入队;由出队线程利用独立于该自旋锁的另一锁,通过第二虚拟处理器控制循环队列内的数据出队,完成数据下发。应用本申请的实施例,入队和出队可以分别使用相互独立的不同锁和不同虚拟处理器,入队线程和出队线程解耦合,队列内存分割为多个片段使得不按照入队大小出队成为可能,出队数据方便分块解析,这些改进有助于提高配置数据下发的可靠性和效率。
Description
技术领域
本申请涉及计算机网络技术领域,特别涉及一种数据下发方法及装置、设备、介质。
背景技术
随着网络技术的发展,高并发、高吞吐、低延时已经成为网络设备性能的重要指标,现场可编程门阵列(Field-Programmable Gate Array,FPGA)相比于传统的中央处理器(Central Processing Unit,CPU),处理报文相对性能高效,但是,在处理设备繁琐复杂配置方面又有所短缺。
目前,为了发挥FPGA和CPU各自的优势,在硬件架构方面可以采用“FPGA+CPU”的方案,一方面可以利用FPGA的特点提高产品性能,另一方面可以利用CPU的特点处理存储各种配置数据,然后直接调用驱动接口,通过外设部件互联快速(Peripheral ComponentInterconnect Express,PCIE)通道下发配置数据到FPGA,但是,配置数据量较大时,FPGA可能不能及时接收,从而存在配置数据丢失的风险,而且下发效率也较低。
基于此,需要一种更为可靠和高效的配置数据下发方案。
发明内容
有鉴于此,本申请提供一种数据下发方法及装置、设备、介质,以更为可靠和高效地下发配置数据。
具体地,本申请是通过如下技术方案实现的:
一种数据下发方法,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述方法包括:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
一种数据下发装置,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述装置包括:
获取模块,获取所述循环队列的入队接口;
第一控制模块,由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
第二控制模块,由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
一种数据下发设备,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
一种数据下发非易失性计算机存储介质,存储有计算机可执行指令,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述计算机可执行指令设置为:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
由以上本申请提供的技术方案可见,入队和出队可以分别使用相互独立的不同锁和不同虚拟处理器,入队线程和出队线程解耦合,队列内存分割为多个片段使得不按照入队大小出队成为可能,出队数据方便分块解析,这些改进有助于提高配置数据下发的可靠性和效率。
附图说明
图1为本申请的一些实施例提供的一种为循环队列预分配的内存分割示意图;
图2为本申请的一些实施例提供的一种数据下发方法的流程示意图;
图3为本申请的一些实施例提供的一种入队流程示意图;
图4为本申请的一些实施例提供的一种出队流程示意图;
图5为本申请的一些实施例提供的对应于图2的一种数据下发装置的结构示意图;
图6为本申请的一些实施例提供的对应于图2的一种数据下发设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
针对背景技术中的问题,本申请提供了数据下发方案,可以用于CPU可靠和高效地给一个或者多个FPGA下发配置数据,即使在配置数据量较大时,仍然能够取得较好的效果。本申请基于队列以及相应的出入队操作,来实现数据下发。下面对本申请的方案进行详细说明。
从功能结构方面而言,方案可以分为两部分,分别为数据入队部分和数据出队部分。从数据结构方面而言,所基于的队列是一个被预分配内存的循环队列,该循环队列可以采用类似数组形式进行分割,将一段固定的内存分割成多个长度相同或者不同的片段,如此,能够支持小块数据分散入队(进入循环队列),大块数据聚合出队(从循环队列内出来),有助于提高数据传输性能。
以预分配的内存被分割为多个长度相同的片段为例,本申请的一些实施例提供了一种为循环队列预分配的内存分割示意图,如图1所示。
在图1中,被分配的内存总大小(也即,队列总长度)为8MB,可以分割为32768个长度相同的片段,每个片段为256B,入队时,可以以256B的数据块入队,而出队时,可以聚合多个256B的数据块一起出队。
图2为本申请的一些实施例提供的一种数据下发方法的流程示意图。在该流程中,从设备角度而言,执行主体可以包括一个或者多个计算设备,具体比如可以包括计算设备上的CPU,从程序角度而言,执行主体相应地可以包括运行于这些计算设备上的多个进程或者线程,具体比如至少可以包括一个入队线程和一个出队线程。本申请对图2中的流程的步骤的执行顺序并不做限定,可以有执行先后顺序,也可以并行执行。
图2中的流程可以包括以下步骤:
S201:获取所述循环队列的入队接口。
在本申请的一些实施例中,入队操作和出队操作可以分别使用独立的不同线程进行控制,以提高效率。
S202:由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队。
在本申请的一些实施例中,待下发数据可以包括待下发给FPGA的配置数据。自旋锁用于保护入队数据,防止因并发导致的数据错误,提高可靠性。自旋锁不会引起调用者睡眠,若自旋锁已经被别的执行单元保持,则调用者就一直循环看是否自旋锁的保持者已经释放了锁,从而有助于及时执行入队操作,减少无谓的等待。
在本申请的一些实施例中,在入队操作前,可以对待下发数据进行分析,比如,统计数据大小和数据类型等,可以根据分析结果,对待下发数据进行分块入队,比如,将相同数据类型的数据尽量划分在同一个数据块中,将多个小的数据划分在同一个数据块中,等等,从而有助于更高效地入队。分析结果还可以用于:若至少部分待下发数据由于入队失败而丢失,则可以根据分析结果生成相应的丢失信息,用于定位问题或者重发数据,从而有助于提高数据下发的可靠性。丢失信息比如包括丢包统计和详细的日志,记录有丢失的数据的类型和大小等。
S203:由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
在本申请的一些实施例中,入队线程和出队线程各自使用独立的不同锁保证时序。不仅如此,入队线程和出队线程各自使用不同的虚拟处理器。比如,入队线程可以调用应用程序的虚拟处理器执行入队操作,而出队线程可以调用其专用的实时高耗的虚拟处理器执行出队操作。
需要说明的是,入队操作和出队操作未必是持续进行的,也可能是间断性进行的。
通过图1的方法,入队和出队可以分别使用相互独立的不同锁和不同虚拟处理器,入队线程和出队线程解耦合,队列内存分割为多个片段使得不按照入队大小出队成为可能,出队数据方便分块解析,这些改进有助于提高配置数据下发的可靠性和效率。
基于图1的方法,本申请的一些实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请的一些实施例中,在出队线程间断性操作的情况下,有可能循环队列内当前空间不足,而出队线程当前却未在执行出队操作,在这种情况下,为了不耽误入队操作,可以由入队线程间接触发或者主动执行出队操作,比如,入队线程可以通过调用预定的出队函数,通过出队函数的执行,实现出队操作。基于此,对于步骤S102,通过第一虚拟处理器控制待下发数据从所述入队接口入队时,还可以执行:判断确定循环队列内当前空间是否不足,若确定不足,则可以由入队线程,通过第一虚拟处理器控制循环队列内的数据出队。
进一步地,若确定循环队列内当前空间不足,通过第一虚拟处理器控制所述循环队列内的数据出队时,还可以执行:判断出队线程所控制的出队操作当前是否在执行;若是,则由入队线程所控制的入队操作立即执行;否则,在通过第一虚拟处理器控制的出队操作执行后,进入不释放第一虚拟处理器的阶段,在该阶段内,由第一虚拟处理器一次或者多次尝试执行入队操作。如此,有助于数据高效地入队,提高循环队列的使用率。
在本申请的一些实施例中,第一虚拟处理器可以应用看门狗机制,在这种情况下,在上述的不释放第一虚拟处理器的阶段内,还可以执行:若第一虚拟处理器尝试执行入队操作失败的次数超过设定阈值,则可以丢失至少一部分待入队的数据,并执行喂狗操作,以防止第一虚拟处理器长时间无法调度而导致狗叫重启。当然,也可以不主动丢失这些数据,而是一直等待,直至能够入队。
根据上面的说明,更直观地,本申请的一些实施例还提供了一种配置数据的入队流程示意图,如图3所示。
图3中的流程可以由入队线程通过第一虚拟处理器执行,该流程可以包括以下步骤:获取待下发的配置数据;对配置数据的大小及类型进行分析;在执行入队操作时,先判断队列空间当前是否足够;若是,则通过复制配置数据到队列,结束本次的流程;否则,通过第一虚拟处理器主动执行出队操作;在通过第一虚拟处理器主动执行出队操作时,判断出队线程当前是否正在执行出队操作;若是,则进入不释放第一虚拟处理器的等待阶段,相应地增加等待次数,判断等待次数,若等待次数未超过设定阈值,则继续尝试执行入队操作,若等待次数超过设定阈值,则丢弃至少部分配置数据,统计丢包类型及次数,并且发送告警日志,结束本次的流程;否则,继续尝试执行入队操作。
下面对出队部分的方案进一步地说明。
在本申请的一些实施例中,出队方面可以启动一个专门的高耗线程来进行队列监控,若队列内有数据就及时执行出队操作,无数据则出队线程可以睡眠,只要出队就会加出队锁,由于与入队操作采用的是独立的不同锁,因此有助于减少入队操作与出队操作相互之间的影响。
在本申请的一些实施例中,对于步骤S103,控制循环队列内的数据出队,具体可以包括:若循环队列内当前有数据,则根据预分配的内存的各个分段,判断该数据的长度是否不小于设定数量个分段的总长度,设定数量大于1,若是,则控制该设定数量个分段长度的数据出队。如此,实现了多个入队的数据块聚合出队,提高了出队效率。
在本申请的一些实施例中,对于CPU下发配置数据至FPGA的场景,出队时可以根据当前需要下发配置数据的FPGA的数量,做数据复制出队的处理,这样做的优点在于减少相同数据入队次数,但是,也可能存在问题:即使某配置数据是专属于指定的FPGA的私有数据,该私有数据仍然分发到各个FPGA,从而不仅影响数据下发效率,也不利于保护数据隐私性。针对该问题,可以进一步地改进,比如,可以出队时对队列内的数据进行分析,若大片连续数据是私有数据,则将该私有数据只下发到指定的FPGA,下发数据后时会等待FPGA确认是否接收到所下发的数据,如果FPGA在规定时间内未返回确认信号,出队线程可以尝试重新下发相同的数据,并且记录超时次数,如果超时次数已经超过设定阈值,此时可以解锁并发送告警日志及记录超时的FPGA,如果重复下发不超过设定阈值即收到确认信号,那么可以认为出队成功,此时可以解锁。
基于上一段的分析,对于步骤S103,完成数据下发,比如可以包括:判断出队的数据中是否包含指定了FPGA的数据;若是,且所包含的数据连续长度大于设定长度,则将该所包含的数据只下发给所指定的FPGA;否则,将出队的数据复制,并分别下发给当前能够下发的全部FPGA。
根据上面的说明,更直观地,本申请的一些实施例还提供了一种配置数据的出队流程示意图,如图4所示。
图4中的流程可以由出队线程通过第二虚拟处理器执行,该流程可以包括以下步骤:出队操作开始;判断队列内是否有数据;若否,则出队线程睡眠,结束本次的流程;若是,则判断数据长度,若数据长度小于设定长度(队列片段大于1的整倍数,若队列片段为256B,则该设定长度为256B的整倍数,假定为1MB),则数据全部出队,若数据长度不小于设定长度,则选择1MB数据出队;对出队数据进行分析;根据分析结果,若无连续指定了FPGA的数据,则复制数据,并给需要配置的全部FPGA下发配置数据,结束本次流程;若有连续指定了FPGA的数据,则给指定的FPGA下发配置数据;发出后,等待FPGA确定接收,若接收成功,则认为出队完成,结束本次的流程,若接收失败,则记录失败次数,并判断失败次数是否超过设定阈值,若未超过,则重新尝试下发,若超过,则发送告警日志,认为出队完成,结束本次的流程。
基于同样的思路,本申请的一些实施例还提供了上述方法对应的装置、设备和非易失性计算机存储介质。
图5为本申请的一些实施例提供的对应于图2的一种数据下发装置的结构示意图,虚线方框表示可选的模块,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述装置包括:
获取模块501,获取所述循环队列的入队接口;
第一控制模块502,由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
第二控制模块503,由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
可选地,所述第一控制模块502通过第一虚拟处理器控制待下发数据从所述入队接口入队时,还执行:
若确定所述循环队列内当前空间不足,则由所述入队线程,通过所述第一虚拟处理器控制所述循环队列内的数据出队。
可选地,若确定所述循环队列内当前空间不足,所述第一控制模块502通过所述第一虚拟处理器控制所述循环队列内的数据出队时,还执行:
判断所述出队线程所控制的出队操作当前是否在执行;
若是,则由所述入队线程所控制的入队操作立即执行;
否则,在通过所述第一虚拟处理器控制的出队操作执行后,进入不释放所述第一虚拟处理器的阶段,在该阶段内,由所述第一虚拟处理器一次或者多次尝试执行入队操作。
可选地,所述第一虚拟处理器应用了看门狗机制;
在所述不释放所述第一虚拟处理器的阶段内,所述第一控制模块502还执行:
若所述第一虚拟处理器尝试执行入队操作失败的次数超过设定阈值,则丢失至少一部分待入队的数据,并执行喂狗操作。
可选地,所述装置还包括:
分析模块504,在所述由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队之前,对所述待下发数据的大小和类型进行统计,以便若至少部分所述待下发数据由于入队失败而丢失,则生成相应的丢失信息,用于定位问题或者重发数据。
可选地,所述第二控制模块503控制所述循环队列内的数据出队,具体包括:
所述第二控制模块503若所述循环队列内当前有数据,则根据所述预分配的内存的各个分段,判断所述数据的长度是否不小于设定数量个所述分段的总长度,所述设定数量大于1;
若是,则控制所述设定数量个所述分段长度的数据出队。
可选地,所述第二控制模块503完成数据下发,具体包括:
所述第二控制模块503判断出队的数据中是否包含指定了现场可编程门阵列FPGA的数据;
若是,且所包含的数据连续长度大于设定长度,则将该所包含的数据只下发给所指定的FPGA;
否则,将所述出队的数据复制,并分别下发给当前能够下发的全部FPGA。
图6为本申请的一些实施例提供的对应于图2的一种数据下发设备的结构示意图,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
本申请的一些实施例提供的对应于图2的一种数据下发非易失性计算机存储介质,存储有计算机可执行指令,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述计算机可执行指令设置为:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的装置、设备和介质与方法是一一对应的,因此,装置、设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和介质的有益技术效果。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (16)
1.一种数据下发方法,其特征在于,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述方法包括:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
2.根据权利要求1所述的方法,其特征在于,所述通过第一虚拟处理器控制待下发数据从所述入队接口入队时,所述方法还包括:
若确定所述循环队列内当前空间不足,则由所述入队线程,通过所述第一虚拟处理器控制所述循环队列内的数据出队。
3.根据权利要求2所述的方法,其特征在于,若确定所述循环队列内当前空间不足,所述通过所述第一虚拟处理器控制所述循环队列内的数据出队时,所述方法还包括:
判断所述出队线程所控制的出队操作当前是否在执行;
若是,则由所述入队线程所控制的入队操作立即执行;
否则,在通过所述第一虚拟处理器控制的出队操作执行后,进入不释放所述第一虚拟处理器的阶段,在该阶段内,由所述第一虚拟处理器一次或者多次尝试执行入队操作。
4.根据权利要求3所述的方法,其特征在于,所述第一虚拟处理器应用了看门狗机制;
在所述不释放所述第一虚拟处理器的阶段内,所述方法还包括:
若所述第一虚拟处理器尝试执行入队操作失败的次数超过设定阈值,则丢失至少一部分待入队的数据,并执行喂狗操作。
5.根据权利要求1所述的方法,其特征在于,所述由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队之前,所述方法还包括:
对所述待下发数据的大小和类型进行统计,以便若至少部分所述待下发数据由于入队失败而丢失,则生成相应的丢失信息,用于定位问题或者重发数据。
6.根据权利要求1所述的方法,其特征在于,所述控制所述循环队列内的数据出队,具体包括:
若所述循环队列内当前有数据,则根据所述预分配的内存的各个分段,判断所述数据的长度是否不小于设定数量个所述分段的总长度,所述设定数量大于1;
若是,则控制所述设定数量个所述分段长度的数据出队。
7.根据权利要求6所述的方法,其特征在于,所述完成数据下发,具体包括:
判断出队的数据中是否包含指定了现场可编程门阵列FPGA的数据;
若是,且所包含的数据连续长度大于设定长度,则将该所包含的数据只下发给所指定的FPGA;
否则,将所述出队的数据复制,并分别下发给当前能够下发的全部FPGA。
8.一种数据下发装置,其特征在于,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述装置包括:
获取模块,获取所述循环队列的入队接口;
第一控制模块,由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
第二控制模块,由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
9.根据权利要求8所述的装置,其特征在于,所述第一控制模块通过第一虚拟处理器控制待下发数据从所述入队接口入队时,还执行:
若确定所述循环队列内当前空间不足,则由所述入队线程,通过所述第一虚拟处理器控制所述循环队列内的数据出队。
10.根据权利要求9所述的装置,其特征在于,若确定所述循环队列内当前空间不足,所述第一控制模块通过所述第一虚拟处理器控制所述循环队列内的数据出队时,还执行:
判断所述出队线程所控制的出队操作当前是否在执行;
若是,则由所述入队线程所控制的入队操作立即执行;
否则,在通过所述第一虚拟处理器控制的出队操作执行后,进入不释放所述第一虚拟处理器的阶段,在该阶段内,由所述第一虚拟处理器一次或者多次尝试执行入队操作。
11.根据权利要求10所述的装置,其特征在于,所述第一虚拟处理器应用了看门狗机制;
在所述不释放所述第一虚拟处理器的阶段内,所述第一控制模块还执行:
若所述第一虚拟处理器尝试执行入队操作失败的次数超过设定阈值,则丢失至少一部分待入队的数据,并执行喂狗操作。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
分析模块,在所述由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队之前,对所述待下发数据的大小和类型进行统计,以便若至少部分所述待下发数据由于入队失败而丢失,则生成相应的丢失信息,用于定位问题或者重发数据。
13.根据权利要求8所述的装置,其特征在于,所述第二控制模块控制所述循环队列内的数据出队,具体包括:
所述第二控制模块若所述循环队列内当前有数据,则根据所述预分配的内存的各个分段,判断所述数据的长度是否不小于设定数量个所述分段的总长度,所述设定数量大于1;
若是,则控制所述设定数量个所述分段长度的数据出队。
14.根据权利要求13所述的装置,其特征在于,所述第二控制模块完成数据下发,具体包括:
所述第二控制模块判断出队的数据中是否包含指定了现场可编程门阵列FPGA的数据;
若是,且所包含的数据连续长度大于设定长度,则将该所包含的数据只下发给所指定的FPGA;
否则,将所述出队的数据复制,并分别下发给当前能够下发的全部FPGA。
15.一种数据下发设备,其特征在于,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
16.一种数据下发非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,构建有用于数据下发的被预分配内存的循环队列,所述预分配的内存分割为多个片段,以便数据相应地分块入队,所述计算机可执行指令设置为:
获取所述循环队列的入队接口;
由入队线程利用自旋锁,通过第一虚拟处理器控制待下发数据从所述入队接口入队;
由出队线程利用独立于所述自旋锁的另一锁,通过第二虚拟处理器控制所述循环队列内的数据出队,完成数据下发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811628680.6A CN109753479B (zh) | 2018-12-28 | 2018-12-28 | 一种数据下发方法及装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811628680.6A CN109753479B (zh) | 2018-12-28 | 2018-12-28 | 一种数据下发方法及装置、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109753479A true CN109753479A (zh) | 2019-05-14 |
CN109753479B CN109753479B (zh) | 2021-05-25 |
Family
ID=66404272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811628680.6A Active CN109753479B (zh) | 2018-12-28 | 2018-12-28 | 一种数据下发方法及装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109753479B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732448A (zh) * | 2021-01-18 | 2021-04-30 | 国汽智控(北京)科技有限公司 | 一种内存空间的分配方法、装置及计算机设备 |
CN113411392A (zh) * | 2021-06-16 | 2021-09-17 | 中移(杭州)信息技术有限公司 | 资源下发方法、装置、设备及计算机程序产品 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853149A (zh) * | 2009-03-31 | 2010-10-06 | 张力 | 多核***中单生产者/单消费者队列的处理方法及装置 |
CN102591843A (zh) * | 2011-12-30 | 2012-07-18 | 中国科学技术大学苏州研究院 | 多核处理器的核间通信方法 |
CN103530130A (zh) * | 2013-10-28 | 2014-01-22 | 迈普通信技术股份有限公司 | 实现多入多出队列的方法和设备 |
US8848723B2 (en) * | 2010-05-18 | 2014-09-30 | Lsi Corporation | Scheduling hierarchy in a traffic manager of a network processor |
CN104158685A (zh) * | 2014-08-20 | 2014-11-19 | 深圳市顺恒利科技工程有限公司 | 用于设备信息集成联动的方法和装置 |
CN105824780A (zh) * | 2016-04-01 | 2016-08-03 | 浪潮电子信息产业股份有限公司 | 一种基于单机多fpga的并行开发方法 |
CN106648933A (zh) * | 2016-12-26 | 2017-05-10 | 北京奇虎科技有限公司 | 消息队列的消费方法及装置 |
CN107122457A (zh) * | 2017-04-26 | 2017-09-01 | 努比亚技术有限公司 | 记录网络用户行为数据的方法及其装置、计算机可读介质 |
CN108632171A (zh) * | 2017-09-07 | 2018-10-09 | 北京视联动力国际信息技术有限公司 | 一种基于视联网的数据处理方法和装置 |
CN108733344A (zh) * | 2018-05-28 | 2018-11-02 | 深圳市道通智能航空技术有限公司 | 数据读写方法、装置以及环形队列 |
CN108848006A (zh) * | 2018-08-24 | 2018-11-20 | 杭州迪普科技股份有限公司 | 一种端口状态的监测方法与装置 |
-
2018
- 2018-12-28 CN CN201811628680.6A patent/CN109753479B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853149A (zh) * | 2009-03-31 | 2010-10-06 | 张力 | 多核***中单生产者/单消费者队列的处理方法及装置 |
US8848723B2 (en) * | 2010-05-18 | 2014-09-30 | Lsi Corporation | Scheduling hierarchy in a traffic manager of a network processor |
CN102591843A (zh) * | 2011-12-30 | 2012-07-18 | 中国科学技术大学苏州研究院 | 多核处理器的核间通信方法 |
CN103530130A (zh) * | 2013-10-28 | 2014-01-22 | 迈普通信技术股份有限公司 | 实现多入多出队列的方法和设备 |
CN104158685A (zh) * | 2014-08-20 | 2014-11-19 | 深圳市顺恒利科技工程有限公司 | 用于设备信息集成联动的方法和装置 |
CN105824780A (zh) * | 2016-04-01 | 2016-08-03 | 浪潮电子信息产业股份有限公司 | 一种基于单机多fpga的并行开发方法 |
CN106648933A (zh) * | 2016-12-26 | 2017-05-10 | 北京奇虎科技有限公司 | 消息队列的消费方法及装置 |
CN107122457A (zh) * | 2017-04-26 | 2017-09-01 | 努比亚技术有限公司 | 记录网络用户行为数据的方法及其装置、计算机可读介质 |
CN108632171A (zh) * | 2017-09-07 | 2018-10-09 | 北京视联动力国际信息技术有限公司 | 一种基于视联网的数据处理方法和装置 |
CN108733344A (zh) * | 2018-05-28 | 2018-11-02 | 深圳市道通智能航空技术有限公司 | 数据读写方法、装置以及环形队列 |
CN108848006A (zh) * | 2018-08-24 | 2018-11-20 | 杭州迪普科技股份有限公司 | 一种端口状态的监测方法与装置 |
Non-Patent Citations (1)
Title |
---|
钟承群: "基于CPU/GPU异构并行计算的OTN仿真验证***的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732448A (zh) * | 2021-01-18 | 2021-04-30 | 国汽智控(北京)科技有限公司 | 一种内存空间的分配方法、装置及计算机设备 |
CN113411392A (zh) * | 2021-06-16 | 2021-09-17 | 中移(杭州)信息技术有限公司 | 资源下发方法、装置、设备及计算机程序产品 |
CN113411392B (zh) * | 2021-06-16 | 2022-05-10 | 中移(杭州)信息技术有限公司 | 资源下发方法、装置、设备及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN109753479B (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110505223B (zh) | 区块链多链管理方法、装置和计算机可读存储介质 | |
CN107465548A (zh) | 代码的部署方法和装置 | |
CN105893126A (zh) | 一种任务调度方法及装置 | |
CN109542831A (zh) | 机载平台多核虚拟分区处理*** | |
CN105573850B (zh) | 多进程交互方法、***和服务器 | |
WO2014187412A1 (zh) | 消息处理线程的控制方法及装置 | |
CN109753479A (zh) | 一种数据下发方法及装置、设备、介质 | |
CN110297661B (zh) | 基于amp构架dsp操作***的并行计算方法、***及介质 | |
CN106534287B (zh) | 一种会话表项的管理方法和装置 | |
CN109300217A (zh) | 排队叫号方法、计算机存储介质、排队叫号服务器及*** | |
US11711256B2 (en) | Autonomous server agents | |
Sun et al. | Republic: Data multicast meets hybrid rack-level interconnections in data center | |
CN111045797A (zh) | 任务调度执行方法、相关装置和介质 | |
CN110177146A (zh) | 一种基于异步事件驱动的非阻塞Restful通信方法、装置和设备 | |
CN111722944B (zh) | 一种基于nio的airt-ros通信方法及*** | |
Zhao et al. | Joint reducer placement and coflow bandwidth scheduling for computing clusters | |
CN102902574B (zh) | 一种多信息流节点的协同处理方法及装置 | |
CN108259611A (zh) | 集群docker管理方法、装置、***及可读存储介质 | |
US20040049535A1 (en) | System and method for a distributed shell in a Java environment | |
CN106371923A (zh) | 任务处理方法和装置 | |
CN102231126A (zh) | 一种实现多核处理器中核间备份的方法及*** | |
US9189266B2 (en) | Responding to a timeout of a message in a parallel computer | |
CN105264499B (zh) | 一种共享队列中的消息处理方法、装置及接收核 | |
CN110780999A (zh) | 一种多核cpu的调度***和方法 | |
CN112394944B (zh) | 分布式开发方法、装置、存储介质及计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |