CN113849238B - 数据通信方法、装置、电子设备及可读存储介质 - Google Patents
数据通信方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN113849238B CN113849238B CN202111149416.6A CN202111149416A CN113849238B CN 113849238 B CN113849238 B CN 113849238B CN 202111149416 A CN202111149416 A CN 202111149416A CN 113849238 B CN113849238 B CN 113849238B
- Authority
- CN
- China
- Prior art keywords
- thread
- fpga
- data
- kernel
- data packet
- 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.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000012795 verification Methods 0.000 claims abstract description 66
- 238000012545 processing Methods 0.000 claims description 20
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000004576 sand Substances 0.000 description 3
- 230000007958 sleep Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种数据通信方法、装置、电子设备及可读存储介质。其中,方法包括将用户态的多个用户线程同时分别拷贝至内核态对应的缓存区中,并为各用户线程分配相应的线程标识信息。对每个用户线程,将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,并通知内核线程,以使内核线程对接收到的目标FPGA数据包和当前用户线程进行线程一致性校验;若校验成功,则内核线程向当前用户线程发送唤醒指令,以使当前用户线程将内核态数据拷贝至用户态缓存区,从而可有效解决高并发下多个线程同时与FPGA通信所导致的惊群现象。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据通信方法、装置、电子设备及可读存储介质。
背景技术
随着集成电路的快速发展,FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)被广泛应用于网关控制器加速、通信数据安全等技术领域,FPGA通过usb(Universal Serial Bus,通用串行总线)、spi(Serial Peripheral Interface,串行外设接口)等总线与linux主机连接,这一类的总线在linux中都有成熟的框架支持,所以其得到了广泛的应用。
在usb、spi等总线的框架之上的设备驱动有一个共同的特点是没有硬件中断可用,一般的调用流程为:如图1所示,用户线程准备原始数据,通过系统调用接口,由用户态陷入到内核态,所有线程争抢互斥锁,抢不到互斥锁的线程睡眠等待,抢到锁的线程进行下一步操作,将用户态数据拷贝到内核态,并化成FPGA识别的数据包,调用发送同步接口,将数据包传输到FPGA,再调用接收同步接口,收取从FPGA来的数据包,拆封数据包并将数据拷贝至用户态缓冲区。
相关技术的这种FPGA的调用方式,在线程数量较少的低并发、通信速率较低的场景下可以正常的工作。但是,对于线程数量较多的高并发、通信速率较高的场景下,虽然其看起来支持多线程应用,但在一个时刻只有一个线程与FPGA通信,并没有有效利用与FPGA通信的总线带宽和FPGA算力资源。而且当一个线程完成与FPGA通信后,释放互斥锁,这会唤醒睡在互斥锁上所有的线程,线程再次争抢互斥锁,导致了出现惊群现象。
基于此,如何解决高并发下多个线程同时与FPGA通信所导致的惊群现象,是所属领域技术人员需要解决的技术问题。
发明内容
本申请提供了一种数据通信方法、装置、电子设备及可读存储介质,可以解决高并发下多个线程同时与FPGA通信所导致的惊群现象。
为解决上述技术问题,本发明实施例提供以下技术方案:
本发明实施例一方面提供了一种数据通信方法,包括:
将用户态的多个用户线程同时分别拷贝至内核态对应的缓存区中,并为各用户线程分配相应的线程标识信息;
对每个用户线程,将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,并通知内核线程,以使所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验;
若校验成功,则所述内核线程向所述当前用户线程发送唤醒指令,以使所述当前用户线程将内核态数据拷贝至所述用户态缓存区。
可选的,所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验,包括:
所述内核线程通过对所述目标FPGA数据包进行解封处理,确定FPGA工作数据;
判断所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息是否相同;
若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息相同,则所述目标FPGA数据包为所述当前用户线程的FPGA数据包,校验成功;若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息不相同,则所述目标FPGA数据包不属于所述当前用户线程,校验失败。
可选的,所述内核线程通过对所述目标FPGA数据包进行解封处理,确定FPGA工作数据,包括:
所述内核线程对所述目标FPGA数据包进行解封处理,得到所述目标FPGA数据包的目标线程标识信息;所述目标线程标识信息包括驱动id和校验值;
根据所述驱动id确定所述FPGA工作数据。
可选的,所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验之后,还包括:
将所述目标FPGA数据包指针与FPGA工作数据中的FPGA反馈数据的指针交换;
其中,所述FPGA工作数据为所述内核线程对所述目标FPGA数据包进行解封处理所得;所述FPGA工作数据包括任务数据、线程标识信息、发送FPGA数据和FPGA反馈数据。
可选的,所述内核线程向所述当前用户线程发送唤醒指令为:
所述内核线程通过所述任务数据唤醒所述当前用户线程。
可选的,所述将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,包括:
将当前用户线程对应的缓存区和线程标识信息格式化为FPGA数据包;
调用发送同步接口,将所述FPGA数据包传输至FPGA;相应的,所述内核线程调用同步接口获取目标FPGA数据包。
本发明实施例另一方面提供了一种数据通信装置,包括:
线程拷贝模块,用于将用户态的多个用户线程同时分别拷贝至内核态对应的缓存区中;
对应关系建立模块,用于为各用户线程分配相应的线程标识信息;
内核校验模块,用于对每个用户线程,将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,并通知内核线程,以使所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验;
唤醒模块,用于若校验成功,则所述内核线程向所述当前用户线程发送唤醒指令,以使所述当前用户线程将内核态数据拷贝至所述用户态缓存区。
可选的,所述内核校验模块进一步用于:
所述内核线程通过对所述目标FPGA数据包进行解封处理,确定FPGA工作数据;
判断所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息是否相同;
若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息相同,则所述目标FPGA数据包为所述当前用户线程的FPGA数据包,校验成功;若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息不相同,则所述目标FPGA数据包不属于所述当前用户线程,校验失败。
本发明实施例还提供了一种电子设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述数据通信方法的步骤。
本发明实施例最后还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前任一项所述数据通信方法的步骤。
本申请提供的技术方案的优点在于,将多个用户线程均拷贝至内核态中,支持同一时刻多个线程同时与FPGA进行通信,可有效利用与FPGA通信的总线带宽和FPGA算力资源,有效提高总线带宽和资源的利用率。通过内核进程唤醒相应的用户线程去将内核态数据拷贝至用户态,而不需要唤醒所有的用户线程去争抢互斥锁,可有效解决高并发下多个线程同时与FPGA通信所导致的惊群现象,从而可更好的适用于高并发、通信速率较高的应用场景中。
此外,本发明实施例还针对数据通信方法提供了相应的实现装置、电子设备及可读存储介质,进一步使得所述方法更具有实用性,所述装置、电子设备及可读存储介质具有相应的优点。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
为了更清楚的说明本发明实施例或相关技术的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的现有技术中的一个示意性应用场景的框架示意图;
图2为本发明实施例提供的一种数据通信方法的流程示意图;
图3为本发明实施例提供的另一种数据通信方法的流程示意图;
图4为本发明实施例提供的一个示意性应用场景的FPGA工作数据结构示意图;
图5为本发明实施例提供的数据通信装置的一种具体实施方式结构图;
图6为本发明实施例提供的电子设备的一种具体实施方式结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。
首先参见图2,图2为本发明实施例提供的一种数据通信方法的流程示意图,本发明实施例可包括以下内容:
S201:将用户态的多个用户线程同时分别拷贝至内核态对应的缓存区中,并为各用户线程分配相应的线程标识信息。
本实施例适用于多高并发应用场景,也即客户端同时下发多个用户线程,在本实施例中,预先在内核态为每个用户线程分配相应的缓存空间,系统调用时,也即完成从用户态到内核态的切换时,可将用户态下的多个用户线程同时分别拷贝至相应的存储空间中,每个用户线程的存储空间存储该用户线程的相关数据。为了将用户态的各线程和拷贝至内核态的各线程进行对应,在将各用户线程拷贝至内核态之后,驱动会为每个用户线程分配相应的线程标识信息。如图3所示,作为一种可选的实施方式,可通过为每个用户线程分配一个seed作为线程标识信息,每个seed包括一个id和一个sand,id用于标识用户线程,sand为校验值,可用于校验用户线程。
S202:对每个用户线程,将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,并通知内核线程,以使内核线程对接收到的目标FPGA数据包和当前用户线程进行线程一致性校验。
本实施例将所有线程都拷贝至内核态,每个用户线程可同时与FPGA进行通信。为了便于描述,本实施例以一个用户线程与FPGA通信为例,其余用户线程与该用户线程执行操作均相同,该用户线程称为当前用户线程。当前用户线程与FPGA进行通信时,先将自己的数据也即对应缓存区和线程标识信息打包为PFGA可识别的数据包,并可调用发送同步接口将打包的FPGA可识别的数据包发送给FPGA,并通知内核线程,然后当前用户线程进入休眠状态。内核线程在接收到数据获取通知之后,可调用同步接口去获取FPGA数据包,可以理解的是,内核线程所获取的FPGA数据包与当前用户线程发送的FPGA数据包可能并不是同一个数据包,所以内核线程需要对获取到的目标FPGA数据包进行校验,由于每个FPGA数据包中含有线程标识信息,可通过对比两个FPGA数据包中的线程标识信息来实现线程一致性的校验。
S203:若校验成功,则内核线程向当前用户线程发送唤醒指令,以使当前用户线程将内核态数据拷贝至用户态缓存区。
若内核线程接收到的目标FPGA数据包与当前用户线程发送的FPGA数据包一致,则校验成功,若内核线程接收到的目标FPGA数据包与当前用户线程发送的FPGA数据包不一致,则校验不成功,对于校验不成功的,可继续获取其他目标FPGA数据包,也可进行报错等。对于校验成功,则内核线程去唤醒当前用户线程,用户线程在接收到内核线程的唤醒指令,由睡眠等待状态转为工作状态,利用驱动拆封内核态的FPGA数据包并将所得到的FPGA反馈数据以及其他数据进行组包,然后将组包所得的内核态数据拷贝至用户态缓存区,完成内核态的调用,如图3所示。
在本发明实施例提供的技术方案中,将多个用户线程均拷贝至内核态中,支持同一时刻多个线程同时与FPGA进行通信,可有效利用与FPGA通信的总线带宽和FPGA算力资源,有效提高总线带宽和资源的利用率。通过内核进程唤醒相应的用户线程去将内核态数据拷贝至用户态,而不需要唤醒所有的用户线程去争抢互斥锁,可有效解决高并发下多个线程同时与FPGA通信所导致的惊群现象,从而可更好的适用于高并发、通信速率较高的应用场景中。
在上述实施例中,对于如何执行步骤内核线程对接收到的目标FPGA数据包和当前用户线程进行线程一致性校验并不做限定,本实施例中给出内核线程对接收到的目标FPGA数据包和当前用户线程进行线程一致性校验的一种可选的实施方式,可包括:
内核线程通过对目标FPGA数据包进行解封处理,确定FPGA工作数据;判断FPGA工作数据中的校验信息和线程标识信息中的校验信息是否相同;若FPGA工作数据中的校验信息和线程标识信息中的校验信息相同,则目标FPGA数据包为当前用户线程的FPGA数据包,校验成功;若FPGA工作数据中的校验信息和线程标识信息中的校验信息不相同,则目标FPGA数据包不属于当前用户线程,校验失败。
在本实施例中,内核线程对接收到的目标FPGA数据包进行解封处理,得到目标FPGA数据包的目标线程标识信息;目标线程标识信息包括驱动id和校验值;根据驱动id确定FPGA工作数据。校验值用于进一步校验目标数据包是不是当前用户线程的。如图4所示,FPGA工作数据是指FPGA运行过程中所产生的工作数据,可包括发送给FPGA的数据、FPGA发送出去的数据即FPGA反馈数据、执行的任务数据,以及标识这个工作数据是哪个用户线程调用所产生的一些数据,例如可通过携带用户线程的线程标识信息来表明FPGA工作数据是某个用户线程所调用执行任务所生成的数据。由于本实施例是适用于高并发场景,故FPGA与多个用户线程同时通信,一个FPGA工作数据对应一个用户线程,相应的,会产生多个FPGA工作数据,如图4所示,可基于线程标识信息中的id从多个FPGA工作数据中确定与当前用户线程相对应的FPGA工作数据。
为了进一步提高系统调用效率,基于上述实施例,本申请还提供了一个实施例,在内核线程对接收到的目标FPGA数据包和当前用户线程进行线程一致性校验之后,还可包括:
将目标FPGA数据包指针与FPGA工作数据中的FPGA反馈数据的指针交换;
其中,FPGA工作数据为内核线程对目标FPGA数据包进行解封处理所得;FPGA工作数据包括任务数据、线程标识信息、发送FPGA数据和FPGA反馈数据。其中,发送FPGA数据是指用户线程发送给FPGA的数据,任务数据用于指FPGA执行的任务的相关信息,如任务类型等,FPGA反馈数据是指FPGA响应用户线程调用并基于发送FPGA数据通过执行任务所生成的数据,线程标识信息是指发送FPGA数据给FPGA的用户线程的线程标识信息。相应的,内核线程向当前用户线程发送唤醒指令为:内核线程通过任务数据唤醒当前用户线程。
通过将内核线程的获取的FPGA数据包指针与FPGA工作数据中的来自于FPGA的FPGA反馈数据指针交换,不需要内核线程和用户线程之间内存拷贝,提高整体数据通信效率,占用更少的计算资源。
为了使所属领域技术人员更加清楚明白本申请的计算方案,本申请还结合图3及图4给出了一个示意性例子,可包括下述内容:
如图3,当进行系统调用时,将用户态的多个用户线程可同时分别拷贝至内核态的对应缓冲区,将对应的缓冲区和线程对应的seed格式化FPGA识别的数据包,也即将当前用户线程对应的缓存区和线程标识信息格式化为FPGA数据包;调用发送同步接口,将FPGA数据包传输至FPGA,其后通知内核线程,有用户线程下发任务了,之后用户线程睡眠等待数据包返回;内核线程获得通知后,调用同步接收接口接收FPGA数据包也即内核线程调用同步接口获取目标FPGA数据包,解封该目标数据包,如图4,通过内核线程收取的数据包成员seed中的id找到fpga_job数据结构,再对比fpga_job中的sand和数据包成员seed中的sand,以校验收取的数据包是否属于此线程,若校验通过,将内核线程的获取的fpga数据包指针与fpga_job中的from_fpga_data指针交换,而不需要内核线程和用户线程之间内存拷贝,之后内核线程通过fpga_job中的tast_struct结构唤醒对应的用户线程,而不需要唤醒所有的用户线程去争抢锁,之后即可将内核态数据拷贝至用户态数据即可。
由上可知,本发明实施可以解决高并发下多个线程同时与FPGA通信所导致的惊群现象,内核线程与用户线程之间不需要内存拷贝,从FPGA返回的数据包是否属于对应线程的校验过程,可高效实现非中断方式与FPGA的通信驱动。
需要说明的是,本申请中各步骤之间没有严格的先后执行顺序,只要符合逻辑上的顺序,则这些步骤可以同时执行,也可按照某种预设顺序执行,图2和图3只是一种示意方式,并不代表只能是这样的执行顺序。
本发明实施例还针对数据通信方法提供了相应的装置,进一步使得方法更具有实用性。其中,装置可从功能模块的角度和硬件的角度分别说明。下面对本发明实施例提供的数据通信装置进行介绍,下文描述的数据通信装置与上文描述的数据通信方法可相互对应参照。
基于功能模块的角度,参见图5,图5为本发明实施例提供的数据通信装置在一种具体实施方式下的结构图,该装置可包括:
线程拷贝模块501,用于将用户态的多个用户线程同时分别拷贝至内核态对应的缓存区中。
对应关系建立模块502,用于为各用户线程分配相应的线程标识信息。
内核校验模块503,用于对每个用户线程,将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,并通知内核线程,以使内核线程对接收到的目标FPGA数据包和当前用户线程进行线程一致性校验。
唤醒模块504,用于若校验成功,则内核线程向当前用户线程发送唤醒指令,以使当前用户线程将内核态数据拷贝至用户态缓存区。
可选的,在本实施例的一些实施方式中,上述内核校验模块503可用于:内核线程通过对目标FPGA数据包进行解封处理,确定FPGA工作数据;判断FPGA工作数据中的校验信息和线程标识信息中的校验信息是否相同;若FPGA工作数据中的校验信息和线程标识信息中的校验信息相同,则目标FPGA数据包为当前用户线程的FPGA数据包,校验成功;若FPGA工作数据中的校验信息和线程标识信息中的校验信息不相同,则目标FPGA数据包不属于当前用户线程,校验失败。
作为本实施例的一种可选的实施方式,上述内核校验模块503可进一步用于:内核线程对目标FPGA数据包进行解封处理,得到目标FPGA数据包的目标线程标识信息;目标线程标识信息包括驱动id和校验值;根据驱动id确定FPGA工作数据。
可选的,在本实施例的另一些实施方式中,上述装置例如还可包括指针交换模块,用于将目标FPGA数据包指针与FPGA工作数据中的FPGA反馈数据的指针交换;其中,FPGA工作数据为内核线程对目标FPGA数据包进行解封处理所得;FPGA工作数据包括任务数据、线程标识信息、发送FPGA数据和FPGA反馈数据。
作为本实施例的一种可选的实施方式,上述唤醒模块504可为内核线程通过任务数据唤醒当前用户线程的模块。
作为本实施例的另外一种可选的实施方式,上述内核校验模块503还可进一步用于:将当前用户线程对应的缓存区和线程标识信息格式化为FPGA数据包;调用发送同步接口,将FPGA数据包传输至FPGA;相应的,内核线程调用同步接口获取目标FPGA数据包。
本发明实施例数据通信装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例可以解决高并发下多个线程同时与FPGA通信所导致的惊群现象。
上文中提到的数据通信装置是从功能模块的角度描述,进一步的,本申请还提供一种电子设备,是从硬件角度描述。图6为本申请实施例提供的电子设备在一种实施方式下的结构示意图。如图6所示,该电子设备包括存储器60,用于存储计算机程序;处理器61,用于执行计算机程序时实现如上述任一实施例提到的数据通信方法的步骤。
其中,处理器61可以包括一个或多个处理核心,比如4核心处理器、8核心处理器,处理器61还可为控制器、微控制器、微处理器或其他数据处理芯片等。处理器61可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable GateArray,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器61也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器61可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器61还可以包括AI(ArtificialIntelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器60可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器60还可包括高速随机存取存储器以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。存储器60在一些实施例中可以是电子设备的内部存储单元,例如服务器的硬盘。存储器60在另一些实施例中也可以是电子设备的外部存储设备,例如服务器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器60还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器60不仅可以用于存储安装于电子设备的应用软件及各类数据,例如:执行漏洞处理方法的程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。本实施例中,存储器60至少用于存储以下计算机程序601,其中,该计算机程序被处理器61加载并执行之后,能够实现前述任一实施例公开的数据通信方法的相关步骤。另外,存储器60所存储的资源还可以包括操作系统602和数据603等,存储方式可以是短暂存储或者永久存储。其中,操作系统602可以包括Windows、Unix、Linux等。数据603可以包括但不限于数据通信结果对应的数据等。
在一些实施例中,上述电子设备还可包括有显示屏62、输入输出接口63、通信接口64或者称为网络接口、电源65以及通信总线66。其中,显示屏62、输入输出接口63比如键盘(Keyboard)属于用户接口,可选的用户接口还可以包括标准的有线接口、无线接口等。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。通信接口64可选的可以包括有线接口和/或无线接口,如WI-FI接口、蓝牙接口等,通常用于在电子设备与其他电子设备之间建立通信连接。通信总线66可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extendedindustry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本领域技术人员可以理解,图6中示出的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的组件,例如还可包括实现各类功能的传感器67。
本发明实施例所述电子设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例可以解决高并发下多个线程同时与FPGA通信所导致的惊群现象。
可以理解的是,如果上述实施例中的数据通信方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、多媒体卡、卡型存储器(例如SD或DX存储器等)、磁性存储器、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时如上任意一实施例所述数据通信方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的硬件包括装置及电子设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上对本申请所提供的一种数据通信方法、装置、电子设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (8)
1.一种数据通信方法,其特征在于,包括:
将用户态的多个用户线程同时分别拷贝至内核态对应的缓存区中,并为各用户线程分配相应的线程标识信息;
对每个用户线程,将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,并通知内核线程,以使所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验;
若校验成功,则所述内核线程向所述当前用户线程发送唤醒指令,以使所述当前用户线程将内核态数据拷贝至所述用户态缓存区;
其中,所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验,包括:
所述内核线程通过对所述目标FPGA数据包进行解封处理,确定FPGA工作数据;
判断所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息是否相同;
若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息相同,则所述目标FPGA数据包为所述当前用户线程的FPGA数据包,校验成功;若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息不相同,则所述目标FPGA数据包不属于所述当前用户线程,校验失败。
2.根据权利要求1所述的数据通信方法,其特征在于,所述内核线程通过对所述目标FPGA数据包进行解封处理,确定FPGA工作数据,包括:
所述内核线程对所述目标FPGA数据包进行解封处理,得到所述目标FPGA数据包的目标线程标识信息;所述目标线程标识信息包括驱动id和校验值;
根据所述驱动id确定所述FPGA工作数据。
3.根据权利要求1或2所述的数据通信方法,其特征在于,所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验之后,还包括:
将所述目标FPGA数据包指针与FPGA工作数据中的FPGA反馈数据的指针交换;
其中,所述FPGA工作数据为所述内核线程对所述目标FPGA数据包进行解封处理所得;所述FPGA工作数据包括任务数据、线程标识信息、发送FPGA数据和FPGA反馈数据。
4.根据权利要求3所述的数据通信方法,其特征在于,所述内核线程向所述当前用户线程发送唤醒指令为:
所述内核线程通过所述任务数据唤醒所述当前用户线程。
5.根据权利要求4所述的数据通信方法,其特征在于,所述将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,包括:
将当前用户线程对应的缓存区和线程标识信息格式化为FPGA数据包;
调用发送同步接口,将所述FPGA数据包传输至FPGA;相应的,所述内核线程调用同步接口获取目标FPGA数据包。
6.一种数据通信装置,其特征在于,包括:
线程拷贝模块,用于将用户态的多个用户线程同时分别拷贝至内核态对应的缓存区中;
对应关系建立模块,用于为各用户线程分配相应的线程标识信息;
内核校验模块,用于对每个用户线程,将基于当前用户线程对应的缓存区和线程标识信息所生成FPGA数据包传输至FPGA,并通知内核线程,以使所述内核线程对接收到的目标FPGA数据包和所述当前用户线程进行线程一致性校验;
唤醒模块,用于若校验成功,则所述内核线程向所述当前用户线程发送唤醒指令,以使所述当前用户线程将内核态数据拷贝至所述用户态缓存区;
其中,所述内核校验模块进一步用于:
所述内核线程通过对所述目标FPGA数据包进行解封处理,确定FPGA工作数据;
判断所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息是否相同;
若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息相同,则所述目标FPGA数据包为所述当前用户线程的FPGA数据包,校验成功;若所述FPGA工作数据中的校验信息和所述线程标识信息中的校验信息不相同,则所述目标FPGA数据包不属于所述当前用户线程,校验失败。
7.一种电子设备,其特征在于,包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现如权利要求1至5任一项所述数据通信方法的步骤。
8.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述数据通信方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111149416.6A CN113849238B (zh) | 2021-09-29 | 2021-09-29 | 数据通信方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111149416.6A CN113849238B (zh) | 2021-09-29 | 2021-09-29 | 数据通信方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113849238A CN113849238A (zh) | 2021-12-28 |
CN113849238B true CN113849238B (zh) | 2024-02-09 |
Family
ID=78976999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111149416.6A Active CN113849238B (zh) | 2021-09-29 | 2021-09-29 | 数据通信方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849238B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115826885B (zh) * | 2023-02-21 | 2023-05-09 | 浪潮电子信息产业股份有限公司 | 一种数据迁移方法、装置及电子设备和存储介质 |
CN116781650B (zh) * | 2023-07-11 | 2024-03-19 | 中科驭数(北京)科技有限公司 | 一种数据处理方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819497A (zh) * | 2012-05-31 | 2012-12-12 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
CN104281493A (zh) * | 2014-09-28 | 2015-01-14 | 般固(北京)科技股份有限公司 | 一种提升应用交付通讯平台多进程程序性能的方法 |
CN104778138A (zh) * | 2015-04-20 | 2015-07-15 | 中国科学院光电技术研究所 | 一种内核多线程直接存储驱动实现方法 |
CN105094995A (zh) * | 2014-05-19 | 2015-11-25 | 北京东土科技股份有限公司 | 一种内核与用户态进程间的安全通信传输方法和系统 |
WO2017167056A1 (zh) * | 2016-03-29 | 2017-10-05 | 阿里巴巴集团控股有限公司 | 一种虚拟机的数据存储方法和装置 |
CN108132811A (zh) * | 2017-12-15 | 2018-06-08 | 杭州迪普科技股份有限公司 | 一种fpga程序数据的加载方法及装置 |
CN109992425A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN110086571A (zh) * | 2019-04-10 | 2019-08-02 | 广州华多网络科技有限公司 | 一种数据发送及接收的方法、装置及数据处理系统 |
CN110545152A (zh) * | 2019-09-10 | 2019-12-06 | 清华大学 | 一种以太网中具有实时传输功能的上位机及以太网系统 |
CN112269536A (zh) * | 2020-10-16 | 2021-01-26 | 苏州浪潮智能科技有限公司 | 存储软件系统调优方法、装置及计算机可读存储介质 |
WO2021164167A1 (zh) * | 2020-02-21 | 2021-08-26 | 苏州浪潮智能科技有限公司 | 一种密钥存取方法、装置、系统、设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11003479B2 (en) * | 2019-04-29 | 2021-05-11 | Intel Corporation | Device, system and method to communicate a kernel binary via a network |
-
2021
- 2021-09-29 CN CN202111149416.6A patent/CN113849238B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819497A (zh) * | 2012-05-31 | 2012-12-12 | 华为技术有限公司 | 一种内存分配方法、装置及系统 |
CN105094995A (zh) * | 2014-05-19 | 2015-11-25 | 北京东土科技股份有限公司 | 一种内核与用户态进程间的安全通信传输方法和系统 |
CN104281493A (zh) * | 2014-09-28 | 2015-01-14 | 般固(北京)科技股份有限公司 | 一种提升应用交付通讯平台多进程程序性能的方法 |
CN104778138A (zh) * | 2015-04-20 | 2015-07-15 | 中国科学院光电技术研究所 | 一种内核多线程直接存储驱动实现方法 |
WO2017167056A1 (zh) * | 2016-03-29 | 2017-10-05 | 阿里巴巴集团控股有限公司 | 一种虚拟机的数据存储方法和装置 |
CN108132811A (zh) * | 2017-12-15 | 2018-06-08 | 杭州迪普科技股份有限公司 | 一种fpga程序数据的加载方法及装置 |
CN109992425A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN110086571A (zh) * | 2019-04-10 | 2019-08-02 | 广州华多网络科技有限公司 | 一种数据发送及接收的方法、装置及数据处理系统 |
CN110545152A (zh) * | 2019-09-10 | 2019-12-06 | 清华大学 | 一种以太网中具有实时传输功能的上位机及以太网系统 |
WO2021164167A1 (zh) * | 2020-02-21 | 2021-08-26 | 苏州浪潮智能科技有限公司 | 一种密钥存取方法、装置、系统、设备和存储介质 |
CN112269536A (zh) * | 2020-10-16 | 2021-01-26 | 苏州浪潮智能科技有限公司 | 存储软件系统调优方法、装置及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
一种Linux用户态实时多任务调度框架;张旭;顾乃杰;苏俊杰;;中国科学技术大学学报(08);全文 * |
支持多线程并发与消息异步处理的Linux Netlink通信机制研究;熊伟;丁涵;罗云锋;;软件导刊(10);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113849238A (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3161628B1 (en) | Intelligent gpu scheduling in a virtualization environment | |
CN113849238B (zh) | 数据通信方法、装置、电子设备及可读存储介质 | |
KR101855311B1 (ko) | 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘 | |
CN111813713B (zh) | 数据加速运算处理方法、装置及计算机可读存储介质 | |
US10970129B2 (en) | Intelligent GPU scheduling in a virtualization environment | |
EP2778840B1 (en) | Techniques for power saving on graphics-related workloads | |
CN113704301B (zh) | 异构计算平台的数据处理方法、装置、系统、设备及介质 | |
US11687242B1 (en) | FPGA board memory data reading method and apparatus, and medium | |
CN111104210A (zh) | 一种任务处理方法、装置及计算机系统 | |
CN112100090A (zh) | 数据访问请求处理方法、装置、介质及内存映射控制器 | |
CN114513545B (zh) | 请求处理方法、装置、设备及介质 | |
CN114691286A (zh) | 服务器系统、虚拟机创建方法及装置 | |
US10733687B2 (en) | Method and apparatus for data communication in virtualized environment, and processor | |
CN113687779B (zh) | 数据迁移方法、装置、电子设备及可读存储介质 | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN111694787A (zh) | 一种芯片启动的方法、网络设备和机器可读存储介质 | |
CN107832154B (zh) | 一种多进程处理方法、处理装置及应用 | |
CN115221083A (zh) | 一种PCIe中断处理方法、装置、设备及介质 | |
CN113805941A (zh) | 通过替换指令集对应用软件进行加速的系统及方法 | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
WO2018076647A1 (zh) | 数据处理的方法、装置和片上系统、设备、存储介质 | |
US20240028423A1 (en) | Synchronization Method and Apparatus | |
CN116795442B (zh) | 一种寄存器配置方法、dma控制器及图形处理系统 | |
CN108009007B (zh) | 轻量级线程的调度方法及协同管理器、vCPU调度器 | |
CN117349029A (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 |