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

一种数据发送方法、装置、电子设备及存储介质与流程

2021-10-24 06:51:00 来源:中国专利 TAG:数据传输 电子设备 装置 发送 方法


1.本技术涉及数据传输技术领域,尤其涉及一种数据发送方法、装置、电子设备及存储介质。


背景技术:

2.随着多核处理器技术的发展与应用,多核处理器也越来越多地应用在电力系统的控制与保护设备中。电力系统控制保护设备中的核心板卡一般采用多核处理器加现场可编程逻辑门阵列(fpga,field programmable gate array)的架构,多核处理器与fpga之间会交换大量的数据,每个核同时向fpga传输数据时会存在竞争关系,导致多核处理器与fpga间的数据传输效率较为低下。


技术实现要素:

3.有鉴于此,本技术实施例的主要目的在于提供一种数据发送方法、装置、电子设备及存储介质,以解决相关技术中多核处理器与外部设备间的数据传输效率低下的问题。
4.为达到上述目的,本技术实施例的技术方案是这样实现的:
5.本技术实施例提供了一种数据发送方法,所述方法包括:
6.当所述多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息;所述第一核表征存在待发送数据的核;所述第一信息用于描述对应的待发送数据;所述多核处理器的每个核在所述共享内存内配置有对应的循环缓存区;
7.所述多核处理器的设定核确定出存在待发送数据;
8.在检测到直接存储访问(dma,direct memory access)空闲的情况下,所述设定核基于对所述共享内存的扫描结果,启动dma链发出待发送数据。
9.上述方案中,所述向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息时,所述方法包括:
10.所述第一核调用设定的接口函数,并将待发送数据对应的第一信息传递至所述设定的接口函数;其中,
11.所述设定的接口函数用于将第一信息写入所述共享内存中对应的循环缓存区。
12.上述方案中,所述向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息,包括:
13.确定第一优先级;所述第一优先级表征待发送数据的发送优先级;
14.向所述第一核对应的至少两个循环缓存区中的第一循环缓存区写入待发送数据对应的第一信息;其中,
15.所述第一循环缓存区用于写入所述第一优先级的待发送数据对应的第一信息。
16.上述方案中,所述多核处理器的设定核确定出存在待发送数据,包括:
17.在接收到核间中断信号的情况下,所述设定核确定出存在待发送数据;其中,所述
核间中断信号由所述第一核发出,表征所述第一核对应的循环缓存区内写入了待发送的数据;和/或,
18.所述设定核每隔设定时长扫描所述共享内存中的各个循环缓存区,并在扫描出循环缓存区中的第一信息对应的待发送数据未发出的情况下,确定出存在待发送数据。
19.上述方案中,所述设定核基于对所述共享内存的扫描结果,启动dma链发出待发送数据时,所述方法包括:
20.在扫描到的循环缓存区中第一序号与第二序号不一致的情况下,所述设定核启动dma链发出待发送数据;其中,
21.所述第一序号表征循环缓存区中最新写入的第一信息对应的序号;所述第二序号表征循环缓存区中所述设定核最后读取的第一信息对应的序号。
22.上述方案中,所述第一信息包括以下至少一项:
23.待发送数据的起始地址;
24.待发送数据的目的地址;
25.待发送数据的长度。
26.上述方案中,所述方法还包括:
27.在所述设定核出现异常的情况下,基于设定顺序,在所述多核处理器的所有核中确定出新的设定核。
28.本技术实施例还提供了一种数据发送装置,所述装置包括:
29.写入单元,用于当所述多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息;所述第一核表征存在待发送数据的核;所述第一信息用于描述对应的待发送数据;所述多核处理器的每个核在所述共享内存内配置有对应的循环缓存区;
30.确定单元,用于所述多核处理器的设定核确定出存在待发送数据;
31.启动单元,用于在检测到dma空闲的情况下,所述设定核基于对所述共享内存的扫描结果,启动dma链发出待发送数据。
32.本技术实施例还提供了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,
33.所述处理器用于运行所述计算机程序时,执行上述任一方法的步骤。
34.本技术实施例还提供了一种存储介质,其上存有计算机程序,所述计算机程序被处理器执行时实现上述任一方法的步骤。
35.在本技术实施例中,多核处理器的每个核在共享内存内配置有对应的循环缓存区,当多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息,其中,第一核表征存在待发送数据的核,第一信息用于描述对应的待发送数据,多核处理器的设定核确定出存在待发送数据之后,在检测到dma空闲的情况下,设定核基于对共享内存的扫描结果,启动dma链发出待发送数据,如此,通过设定核启动dma链统一向外部设备发送数据,无需将所有待发送的数据拷贝并组帧至设定核中,减少了设定核的性能开销,缩短了数据发送至外部设备所需的时间。通过设置共享内存并在共享内存内为每个核划分循环缓存区,这样,当各核存在待发送的数据时,设定核可以扫描循环缓存区并启动dma链将待发送的数据发送出去,避免了多个核同时向外部设备发送数据的竞
争关系,提高了多核处理器与外部设备之间数据传输的效率。
附图说明
36.图1为本技术实施例提供的数据发送方法的实现流程示意图;
37.图2为本技术实施例提供的每个核对应的循环缓存区的示意图;
38.图3为本技术实施例提供的向循环缓存区中写入第一信息的流程示意图;
39.图4为本技术应用实施例提供的数据发送方法的实现流程示意图;
40.图5为本技术应用实施例提供的另一数据发送方法的实现流程示意图;
41.图6为本技术实施例提供的数据发送装置的示意图;
42.图7为本技术实施例电子设备的硬件组成结构示意图。
具体实施方式
43.随着多核处理器技术的发展与应用,多核处理器已越来越多的应用到电力系统控制与保护设备中。多核处理器具备并行处理的功能,可使得多个程序同时运行,能够有效降低运行周期,提高控制保护性能。相关技术中,电力系统控制与保护设备的核心板卡一般采用多核处理器 fpga的构架,其中,多核处理器运行各类应用算法,fpga用于实现采样、通讯等功能。多核处理器与fpga之间一般采用高速串行计算机扩展总线标准(pcie,peripheral component interconnect express)、serial rapid i/o(srio)接口、安全网关管理接口(sgmi,security gateway management interface)、串行外设接口(spi,serial peripheral interface)这些方式进行数据交互。多核处理器与fpga之间的数据传输效率会影响整个板卡的性能。
44.在一些应用场景中,多核处理器的多个核可能同时向fpga等外部设备发送数据,此时,多个核之间在发送数据时会存在竞争关系,最终只有一个核能发送数据,其他核只能处在等待状态。在另一些应用场景中,为了解决多个核在发送数据时的竞争关系,会选定多核处理器中的一个核作为代理核,其他核的待发送的数据均由代理核汇总并统一发送至fpga等外部设备。然而,将其他核待发送的数据发送至代理核进行汇总的过程中,因组帧需要,存在大量的数据拷贝操作,这会导致代理核的负载过重,而在代理核负载过重时,无法向fpga等外部设备发送数据,不仅数据传输过程受到影响,也可能存在安全隐患。
45.在一种用于实现缓存描述符交互的方法和电子设备的制作方法中,提出了在终端器件中增设了代理模块,利用代理模块为各处理核提供缓存描述符(bd,buffer description)发送队列和bd接收队列的入口、并利用代理模块对bd发送队列和bd接收队列执行指针操作,因而既能够保证各核通过代理模块实现对bd发送队列的写操作和对bd接收队列的读操作,还在能够避免各处理核对指针操作的多对一竞争。该方法的代理模块设置在终端即fpga内,由fpga维护bd发送队列,由fpga根据队列内容主动读取数据,由于该方法只维护一个bd发送队列,多核同时写队列时仍然存在竞争问题,且无法对数据做优先级分类,优先级较高的数据可能无法及时发送出去。数据收发过程完全由fpga控制,处理器无法及时感知数据是否成功被fpga读取。同时,该方法需要fpga开发程序配合,在外设换成别的器件时,该方法行不通。
46.也就是说,相关技术中,多核处理器与fpga间的数据传输效率较为低下。对于电力
系统的控制与保护设备,因实时性要求较高,多核处理器各核程序相对独立。在各核对外部设备读取数据与写入数据较频繁时,多核处理器与fpga间的数据交换能力成为整个电力系统性能的瓶颈。因此,需要研究一种多核处理器与外部设备之间进行数据交换的方法,提升多核处理器与fpga之间的数据交互能力和效率。
47.基于此,本技术实施例提供了一种数据发送方法、装置、电子设备及存储介质,当多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息,其中,第一核表征存在待发送数据的核,第一信息用于描述对应的待发送数据,多核处理器的每个核在共享内存内配置有对应的循环缓存区,多核处理器的设定核确定出存在待发送数据之后,在检测到dma空闲的情况下,设定核基于对共享内存的扫描结果,启动dma链发出待发送数据,如此,通过设定核启动dma链统一向外部设备发送数据,无需将所有待发送的数据拷贝并组帧至设定核中,减少了设定核的性能开销,缩短了数据发送至外部设备所需的时间。通过设置共享内存并在共享内存内为每个核划分循环缓存区,这样,当各核存在待发送的数据时,设定核可以扫描循环缓存区并启动dma链将待发送的数据发送出去,避免了多个核同时向外部设备发送数据的竞争关系,提高了多核处理器与外部设备之间数据传输的效率。
48.下面结合附图及实施例对本技术再作进一步详细的描述。
49.图1为本技术实施例提供的数据发送方法的实现流程示意图,所述方法应用于第一设备,所述第一设备配置有多核处理器。如图1所示,所述方法包括:
50.步骤101:当所述多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息;所述第一核表征存在待发送数据的核;所述第一信息用于描述对应的待发送数据;所述多核处理器的每个核在所述共享内存内配置有对应的循环缓存区。
51.这里,当多核处理器中的任意一个核存在待发送的数据时,存在待发送数据的核即第一核,向所述第一核对应的循环缓存区中写入待发送数据对应的第一信息,其中,第一核对应的循环缓存区位于共享内存中。在共享内存中,多核处理器的每个核都配置有对应的循环缓存区。通过将待发送数据对应的第一信息写入共享内存中对应的循环缓存区,便于读取待发送的数据。
52.第一信息用于描述对应的待发送数据,具体地,在一实施例中,所述第一信息包括以下至少一项:
53.待发送数据的起始地址;
54.待发送数据的目的地址;
55.待发送数据的长度。
56.这里,第一信息包括待发送数据的起始地址、目的地址和长度中的至少一项。将待发送数据的第一信息写入对应的循环缓存区而不是直接将待发送的数据写入对应的循环缓存区,可以节约共享内存的内存空间,也可以减少多核处理器的负载和性能开销。
57.步骤102:所述多核处理器的设定核确定出存在待发送数据。
58.这里,第一核在共享内存中对应的循环缓存区中写入第一信息后,说明多核处理器中存在待向外部设备发出的数据,由多核处理器的设定核确定出存在待发送的数据。指定多核处理器中的任意一个核为设定核,设定核执行代理功能,代理第一核将待发送的数
据统一发出。
59.步骤103:在检测到dma空闲的情况下,所述设定核基于对所述共享内存的扫描结果,启动dma链发出待发送数据。
60.这里,在代理核检测到dma空闲的情况下,设定核对共享内存中的各个循环缓存区进行扫描,基于扫描结果,启动dma链发出待发送的数据。其中,dma链表征dma链表,在扫描结果表征存在待发送的数据的情况下,将待发送数据对应的第一信息写入dma链中,通过dma链将待发送的数据发送至外部设备。
61.dma是一个独立于多核处理器的外部设备,dma用于将数据从一个地址空间复制到另一个地址空间,实现数据传输。在本技术实施例中,dma用于将待发送的数据从共享内存中复制到fpga等外部设备中。
62.在一实施例中,所述向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息时,所述方法包括:
63.所述第一核调用设定的接口函数,并将待发送数据对应的第一信息传递至所述设定的接口函数;其中,
64.所述设定的接口函数用于将第一信息写入所述共享内存中对应的循环缓存区。
65.这里,在向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息时,第一核调用设定的接口函数,将待发送数据对应的第一信息传递至该设定的接口函数,通过该设定的接口函数将第一信息写入对应的循环缓存区中。设定的接口函数用于将第一信息写入共享内存中对应的循环缓存区。
66.在存在待发送的数据时,第一核通过调用设定的接口函数,将第一信息写入对应的循环缓存区,可以提高将第一信息写入循环缓存区的效率。
67.在一实施例中,所述向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息,包括:
68.确定第一优先级;所述第一优先级表征待发送数据的发送优先级;
69.向所述第一核对应的至少两个循环缓存区中的第一循环缓存区写入待发送数据对应的第一信息;其中,
70.所述第一循环缓存区用于写入所述第一优先级的待发送数据对应的第一信息。
71.这里,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息时,先要确定待发送数据的发送优先级,即第一优先级。第一核在共享内存中对应至少两个循环缓存区。第一核调用设定的接口函数后,设定的接口函数获得第一核待发送的数据的第一优先级,然后基于第一优先级,向第一核对应的至少两个循环缓存区中的第一循环缓存区写入第一信息。其中,第一循环缓存区用于写入与第一优先级的待发送数据对应的第一信息。也就是说,设定的接口函数会根据待发送数据的发送优先级,将所述待发送数据对应的第一信息写入至与所述发送优先级匹配的循环缓存区中。
72.示例性地,当第一优先级为高优先级时,第一核调用设定的接口函数,向第一核对应的至少两个循环缓存区中的第一循环缓存区写入第一信息,此时,第一循环缓存区用于存储写入高优先级的待发送数据对应的第一信息。当第一优先级为低优先级时,第一核调用设定的接口函数,向第一核对应的至少两个循环缓存区中的第一循环缓存区写入第一信息,此时,第一循环缓存区用于存储写入低优先级的待发送数据对应的第一信息。
73.图2为本技术实施例提供的每个核对应的循环缓存区的示意图,如图2所示:
74.每个核对应至少两个循环缓存区,包括高优先级的循环缓存区和低优先级的循环缓存区,其中,高优先级的循环缓存区用于存储写入高优先级的待发送数据对应的第一信息,低优先级的循环缓存区用于存储写入低优先级的待发送数据对应的第一信息。设定的接口函数基于待发送数据的发送优先级,将对应的第一信息写入每个核对应的至少两个循环缓存区中的、与所述发送优先级匹配的循环缓存区。
75.示例性地,第一核中存在待发送数据0,而待发送数据0的发送优先级为高优先级,那么,在第一核调用设定的接口函数时,确定出待发送数据0的发送优先级为高优先级后,在第一核对应的循环缓存区中找到与待发送数据0的发送优先级匹配的循环缓存区,即,高优先级循环缓存区,之后,设定的接口函数将待发送数据0对应的第一信息写入高优先级循环缓存区中。
76.通过确定待发送数据的发送优先级,并将待发送数据对应的第一信息写入与所述优先级匹配的循环缓存区中,可以基于待发送数据的发送优先级的不同,进行数据发送顺序的调整,可以提高数据传输的灵活性。
77.在一实施例中,所述多核处理器的设定核确定出存在待发送数据,包括:
78.在接收到核间中断信号的情况下,所述设定核确定出存在待发送数据;其中,所述核间中断信号由所述第一核发出,表征所述第一核对应的循环缓存区内写入了待发送的数据;和/或,
79.所述设定核每隔设定时长扫描所述共享内存中的各个循环缓存区,并在扫描出循环缓存区中的第一信息对应的待发送数据未发出的情况下,确定出存在待发送数据。
80.这里,在接收到核间中断信号的情况下,设定核确定出存在待发送的数据。核间中断信号是由第一核发出的,表征第一核对应的循环缓存区内写入了待发送的数据。具体地,在第一核对应的第二循环缓存区内写入了待发送数据的情况下,所述第一核发出核间中断信号。其中,第二循环缓存区用于写入高优先级的待发送数据对应的第一信息。
81.需要说明的是,当第一核在对应的第二循环缓存区内写入了待发送数据,说明第一核中存在发送优先级为高优先级的待发送数据,而通常发送优先级为高优先级的待发送数据是需要优先发出的数据,因此为了保证高优先级的待发送数据能够及时发出,第一核会向设定核发送核间中断信号,以通知设定核第一核对应的循环缓存区中存在高优先级的待发送数据,以便设定核能够及时进行处理,提高了数据发送的及时性。
82.在设定核接收到核间中断信号后,设定核会先扫描每个第一核对应的第二循环缓存区,在扫描完所有第一核对应的第二循环缓存区后,设定核再扫描每个第一核对应的第三循环缓存区,确定每个核对应的第三循环缓存区中是否存在代发送的数据对应的第一信息。其中,第三循环缓存区用于写入低优先级的待发送数据对应的第一信息。因为当第一核在对应的第三循环缓存区内写入了待发送数据对应的第一信息,说明第一核中存在发送优先级为低优先级的待发送数据,而通常发送优先级为低优先级的待发送数据的发送时间不紧急,所以设定核会后扫描第三循环缓存区。需要说明的是,由于在接收到核间中断信号后,设定核先扫描对应的第二循环缓存区,扫描完所有第二循环缓存区之后,再扫描对应的第三循环缓存区,这样,先扫描的第二循环缓存区中的待发送数据对应的第一信息会通过dma链先发送出去,后扫描的第三循环缓存区中的待发送数据对应的第一信息会通过dma链
后发送出去。如此,保证了发送优先级为高优先级的待发送数据先发出,发送优先级为低优先级的待发送数据后发送出去,从而提高了数据传输的及时性。
83.在一实施例中,所述第一核通过调用设定的启动函数向设定核发出核间中断信号,所述设定的启动函数用于将核间中断信号传递给设定核。
84.和/或,设定核每隔设定时长扫描共享内存中的各个循环缓存区,并在扫描出循环缓存区中的第一信息对应的待发送数据未发出的情况下,确定出存在待发送数据。
85.这里,在dma链发出待发送的数据之后,dma会向设定核发送完成中断信号,触发设定核产生完成中断。在设定核产生完成中断后,为了避免出现待发送的数据漏发的情况,设定核会定期扫描共享内存中的循环缓存区,如果扫描出循环缓存区中存在第一信息的情况下,确定出存在待发送数据,再将待发送的数据通过启动dma链发出。需要说明的是,这里设定核定期扫描的是共享内存中的每个核对应的所有循环缓存区。
86.通过接收核间中断信号和/或定期扫描循环缓存区的方式,设定核可以准确地确定出存在待发送的数据,便于及时处理待发送的数据。
87.在一实施例中,所述设定核基于对所述共享内存的扫描结果,启动dma链发出待发送数据时,所述方法包括:
88.在扫描到的循环缓存区中第一序号与第二序号不一致的情况下,所述设定核启动dma链发出待发送数据;其中,
89.所述第一序号表征循环缓存区中最新写入的第一信息对应的序号;所述第二序号表征循环缓存区中所述设定核最后读取的第一信息对应的序号。
90.这里,每个循环缓存区的起始位置会分配内存空间用于记录第一序号和第二序号,第一序号表征循环缓存区中最新写入的第一信息对应的序号,第二序号表征循环缓存区中设定核最后读取的第一信息对应的序号。其中,设定核的读取表征设定核从循环缓存区中读出第一信息并将所述第一信息放入dma链中。基于第一序号和第二序号可以得知最新写入的和设定核最新读取的第一信息的内存位置。当循环缓存区中写入了第一信息时,会更新第一序号。当设定核读取了循环缓存区中的第一信息时,会更新第二序号。如果扫描到循环缓存区中第一序号与第二序号不一致,说明循环缓存区中还存在设定核未读取的第一信息,也就是说明循环缓存区中还存在待发送的数据对应的第一信息,在这种情况下,设定核启动dma链发出待发送数据。
91.如图2所示,每个循环缓存区的起始位置都分配了内存空间用于记录第一序号和第二序号,其中,第一序号表征循环缓存区当前最新写入的第一信息的序号,第一序号表征循环缓存区设定核最后读取的第一信息对应的序号。在第一序号与第二序号一致的情况下,说明在循环缓存区中当前写入的序号和设定核读取的序号相同,因此,循环缓存区中不存在待发送的数据对应的第一信息。如果第一序号与第二序号不一致,说明在循环缓存区中当前写入的序号和设定核读取的序号不相同,在这种情况下,说明循环缓存区中存在待发送的数据对应的第一信息。示例性地,在第一序号为4,而第二序号为0时,说明循环缓存区中存在设定核还未读取的第一信息,此时,设定核确定出存在待发送的数据,启动dma链发出待发送数据。
92.通过在扫描到的循环缓存区中第一序号与第二序号不一致的情况下,设定核启动dma链发出待发送数据,可以保证在共享内存中存在待发送数据时,设定核能够及时进行处
理并启动dma链及时将数据发出,提高了数据传输的效率。
93.在一实施例中,所述方法还包括:
94.在所述设定核出现异常的情况下,基于设定顺序,在所述多核处理器的所有核中确定出新的设定核。
95.这里,所述设定核是指定多核处理器中的任意一个核确定的,如果该设定核出现了异常,那么,基于设定顺序,在多核处理器的所有核中重新确定出新的设定核。示例性地,设定顺序可以是核0、核1、核2、核3,在设定核为核0时且核0出现异常的情况下,按照设定顺序将核1确定为新的设定核。
96.通过设置设定核的轮换机制,可以确保在设定核出现异常时不影响其他核的数据传输,提高了数据传输的可靠性。
97.在一实施例中,在检测到dma不空闲的情况下,在dma链发出待发送的数据之后,所述方法还包括:
98.接收所述dma发送的完成中断信号;在设定核触发完成中断之后,启动dma链发出待发送的数据。
99.这里,如果检测到dma不空闲时,设定核不会启动dma链将待发送的数据发出。而是在dma链将待发送的数据发出之后,dma链会向设定核发送完成中断信号。设定核接收到完成中断信号之后,产生完成中断。设定核在接收到dma发送的完成中断信号之后,会得知dma链已经将前一次待发送的数据发出,dma当前处于空闲状态,此时,如果循环缓存区内还存在待发送的数据,设定核再启动dma链发出待发送的数据。通过这种方式,保证了在dma不空闲的情况下,待发送的数据也可以及时发出。
100.在实际应用中,设定核确定出存在待发送的数据时,如果检测到dma空闲,则设定核基于对共享内存的扫描结果,启动dma链将待发送的数据发出。如果设定核检测出dma不空闲,得知dma当前的标志位为待发送标志位。在dma链发出待发送的数据之后,dma会进入发送完成服务函数,在服务函数内检测dma的标志位,如果检测到dma的标志位为待发送标志位时,表征dma链还需继续发送待发送的数据,因此,在dma的标志位为待发送标志位的情况下,重复上述步骤,直至dma处在空闲的状态。
101.图3为本技术实施例提供的向循环缓存区中写入第一信息的流程示意图,如图3所示:
102.当第一核中存在待发送的数据时,第一核调用设定的接口函数,将待发送的数据对应的第一信息写入对应的循环缓存区。设定的接口函数根据待发送数据对应的第一信息中表征优先级的信息,判断待发送的数据的发送优先级是否为高优先级,在判断出待发送数据的发送优先级为高优先级的情况下,将第一信息写入第一核对应的高优先级的循环缓存区中。然后第一核通过发送核间中断信号通知设定核存在高优先级的数据待发送。在判断出待发送的数据的发送优先级为低优先级的情况下,将第一信息写入第一核对应的低优先级的循环缓存区中。
103.图4为本技术应用实施例提供的数据发送方法的实现流程示意图,如图4所示:
104.在设定核收到触发核间中断的通知后,首先检测dma是否空闲,在dma空闲的情况下,首先扫描共享内存内各个核对应的高优先级的循环缓存区,基于扫描结果组织dma链发送数据。在设定核判断dma将此次扫描到的待发送的数据发送完成之后,在发送完成服务函
数内判断dma的标志位是否为待发送标志位,在dma的标志位为待发送标志位时,表征dma链还需继续发送待发送的数据,因此,设定核继续扫描共享内存,并组织dma链发送数据。在dma的标志位不为待发送标志位时,表征dma链不需要继续发送待发送的数据,因此结束此次数据发送过程。在设定核检测到dma不空闲的情况下,得知dma当前的标志位为待发送标志位。
105.图5为本技术应用实施例提供的另一数据发送方法的实现流程示意图,如图5所示:
106.设定核周期扫描共享内存中各核对应的循环缓存区,如果扫描结果表征存在待发送的数据且dma空闲,则启动dma,组织dma链发送数据,在设定核判断dma将此次扫描到的待发送的数据发送完成之后,结束数据发送流程。如果扫描结果表征不存在待发送的数据或dma不空闲,则设定核继续周期扫描共享内存中各核对应的循环缓存区。
107.在本技术实施例中,当多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息,其中,第一核表征存在待发送数据的核,第一信息用于描述对应的待发送数据,多核处理器的每个核在共享内存内配置有对应的循环缓存区,多核处理器的设定核确定出存在待发送数据之后,在检测到dma空闲的情况下,设定核基于对共享内存的扫描结果,启动dma链发出待发送数据,如此,通过设定核启动dma链统一向外部设备发送数据,无需将所有待发送的数据拷贝并组帧至设定核中,减少了设定核的性能开销,缩短了数据发送至外部设备所需的时间。通过设置共享内存并在共享内存内为每个核划分循环缓存区,这样,当各核存在待发送的数据时,设定核可以扫描循环缓存区并启动dma链将待发送的数据发送出去,避免了多个核同时向外部设备发送数据的竞争关系,提高了多核处理器与外部设备之间数据传输的效率。
108.为实现本技术实施例的方法,本技术实施例还提供了一种数据发送装置,图6为本技术实施例提供的数据发送装置的示意图,请参见图6,该装置包括:
109.写入单元601,用于当所述多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息;所述第一核表征存在待发送数据的核;所述第一信息用于描述对应的待发送数据;所述多核处理器的每个核在所述共享内存内配置有对应的循环缓存区;
110.确定单元602,用于所述多核处理器的设定核确定出存在待发送数据;
111.启动单元603,用于在检测到dma空闲的情况下,所述设定核基于对所述共享内存的扫描结果,启动dma链发出待发送数据。
112.在一实施例中,所述写入单元601,还用于所述第一核调用设定的接口函数,并将待发送数据对应的第一信息传递至所述设定的接口函数;其中,
113.所述设定的接口函数用于将第一信息写入所述共享内存中对应的循环缓存区。
114.在一实施例中,所述写入单元601,还用于确定第一优先级;所述第一优先级表征待发送数据的发送优先级;
115.向所述第一核对应的至少两个循环缓存区中的第一循环缓存区写入待发送数据对应的第一信息;其中,
116.所述第一循环缓存区用于写入所述第一优先级的待发送数据对应的第一信息。
117.在一实施例中,所述确定单元602,还用于在接收到核间中断信号的情况下,所述
设定核确定出存在待发送数据;其中,所述核间中断信号由所述第一核发出,表征所述第一核对应的循环缓存区内写入了待发送的数据;和/或,
118.所述设定核每隔设定时长扫描所述共享内存中的各个循环缓存区,并在扫描出循环缓存区中的第一信息对应的待发送数据未发出的情况下,确定出存在待发送数据。
119.在一实施例中,所述启动单元603,还用于在扫描到的循环缓存区中第一序号与第二序号不一致的情况下,所述设定核启动dma链发出待发送数据;其中,
120.所述第一序号表征循环缓存区中最新写入的第一信息对应的序号;所述第二序号表征循环缓存区中所述设定核最后读取的第一信息对应的序号。
121.在一实施例中,所述第一信息包括以下至少一项:
122.待发送数据的起始地址;
123.待发送数据的目的地址;
124.待发送数据的长度。
125.在一实施例中,所述装置还包括:第二确定单元,用于在所述设定核出现异常的情况下,基于设定顺序,在所述多核处理器的所有核中确定出新的设定核。
126.实际应用时,所述写入单元601、所述确定单元602、所述启动单元603、所述第二确定单元可通过终端中的处理器,比如中央处理器(cpu,central processing unit)、数字信号处理器(dsp,digital signal processor)、微控制单元(mcu,microcontroller unit)或可编程门阵列(fpga,field-programmable gate array)等实现。
127.需要说明的是:上述实施例提供的数据发送装置在进行信息显示时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据发送装置与数据发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
128.基于上述程序模块的硬件实现,且为了实现本技术实施例的方法,本技术实施例还提供了一种电子设备。图7为本技术实施例提供的电子设备的硬件组成结构示意图,如图7所示,电子设备包括:
129.通信接口701,能够与其它设备比如网络设备等进行信息交互;
130.处理器702,与所述通信接口701连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述终端侧一个或多个技术方案提供的方法。而所述计算机程序存储在存储器703上。
131.具体地,所述处理器702,用于当所述多核处理器存在待发送数据时,向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息;所述第一核表征存在待发送数据的核;所述第一信息用于描述对应的待发送数据;所述多核处理器的每个核在所述共享内存内配置有对应的循环缓存区;
132.所述多核处理器的设定核确定出存在待发送数据;
133.在检测到dma空闲的情况下,所述设定核基于对所述共享内存的扫描结果,启动dma链发出待发送数据。
134.在一实施例中,所述向共享内存中第一核对应的循环缓存区写入待发送数据对应的第一信息时,所述处理器702还用于所述第一核调用设定的接口函数,并将待发送数据对
应的第一信息传递至所述设定的接口函数;其中,
135.所述设定的接口函数用于将第一信息写入所述共享内存中对应的循环缓存区。
136.在一实施例中,所述处理器702还用于确定第一优先级;所述第一优先级表征待发送数据的发送优先级;
137.向所述第一核对应的至少两个循环缓存区中的第一循环缓存区写入待发送数据对应的第一信息;其中,
138.所述第一循环缓存区用于写入所述第一优先级的待发送数据对应的第一信息。
139.在一实施例中,所述处理器702还用于在接收到核间中断信号的情况下,所述设定核确定出存在待发送数据;其中,所述核间中断信号由所述第一核发出,表征所述第一核对应的循环缓存区内写入了待发送的数据;和/或,
140.所述设定核每隔设定时长扫描所述共享内存中的各个循环缓存区,并在扫描出循环缓存区中的第一信息对应的待发送数据未发出的情况下,确定出存在待发送数据。
141.在一实施例中,所述设定核基于对所述共享内存的扫描结果,启动所述dma发出待发送数据时,所述处理器702还用于在扫描到的循环缓存区中第一序号与第二序号不一致的情况下,所述设定核启动dma链发出待发送数据;其中,
142.所述第一序号表征循环缓存区中最新写入的第一信息对应的序号;所述第二序号表征循环缓存区中所述设定核最后读取的第一信息对应的序号。
143.在一实施例中,所述第一信息包括以下至少一项:
144.待发送数据的起始地址;
145.待发送数据的目的地址;
146.待发送数据的长度。
147.在一实施例中,所述处理器702还用于在所述设定核出现异常的情况下,基于设定顺序,在所述多核处理器的所有核中确定出新的设定核。
148.当然,实际应用时,电子设备中的各个组件通过总线系统704耦合在一起。可理解,总线系统704用于实现这些组件之间的连接通信。总线系统704除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统704。
149.本技术实施例中的存储器703用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
150.可以理解,存储器703可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read

only memory)、可擦除可编程只读存储器(eprom,erasable programmable read

only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read

only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd

rom,compact disc read

only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器
(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本技术实施例描述的存储器703旨在包括但不限于这些和任意其它适合类型的存储器。
151.上述本技术实施例揭示的方法可以应用于处理器702中,或者由处理器702实现。处理器702可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器702可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器703,处理器702读取存储器703中的程序,结合其硬件完成前述方法的步骤。
152.处理器702执行所述程序时实现本技术实施例的各个方法中的相应流程。
153.在示例性实施例中,本技术实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器703,上述计算机程序可由处理器702执行,以完成前述方法所述步骤。计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd

rom等存储器。
154.在本技术所提供的几个实施例中,应该理解到,所揭露的装置、终端和方法,可以通过其它的方式实现。以上所描述的设备实施例仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
155.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
156.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
157.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
158.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品
销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
159.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献

  • 日榜
  • 周榜
  • 月榜