CN114513545B - 请求处理方法、装置、设备及介质 - Google Patents
请求处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN114513545B CN114513545B CN202210407248.4A CN202210407248A CN114513545B CN 114513545 B CN114513545 B CN 114513545B CN 202210407248 A CN202210407248 A CN 202210407248A CN 114513545 B CN114513545 B CN 114513545B
- Authority
- CN
- China
- Prior art keywords
- processed
- address
- request
- current
- preset
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 65
- 238000004458 analytical method Methods 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 45
- 230000004044 response Effects 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 16
- 230000001133 acceleration Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种请求处理方法、装置、设备及介质,涉及管理软件领域,包括:从本地的先进先出队列中获取当前待处理请求的地址,基于当前待处理请求的地址从预设请求缓冲区中获取当前待处理请求;对当前待处理请求进行解析,基于解析结果获取相应的当前待处理源数据和用于记录下一待处理请求的地址的串行地址项;对当前待处理源数据进行处理得到当前处理后目标数据,将当前处理后目标数据写入预设数据缓冲区,判断串行地址项是否为空;若串行地址项为空,通知主机从预设数据缓冲区读取所有的处理后目标数据,若串行地址项为非空,将串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。实现降低CPU负担并提高请求处理效率的目的。
Description
技术领域
本发明涉及管理软件领域,特别涉及请求处理方法、装置、设备及介质。
背景技术
近年来,随着移动互联网和人工智能等新兴技术的发展,大数据的规模、互联网应用的规模正在呈指数级增长。数据中心需要处理的业务也同样增长,而数据中心使用的通用处理器的计算能力已经达到瓶颈。为了解决这个问题,各种基于FPGA(FieldProgrammable Gate Array,即现场可编程逻辑门阵列)、ASIC(Application SpecificIntegrated Circuit,即专用集成电路)的专用计算加速的PCIe(peripheral componentinterconnect express,即高速串行计算机扩展总线标准)板卡应运而生,如压缩解压缩卡、RAID(Redundant Arrays of Independent Disks,即独立磁盘冗余阵列)存储卡以及我们熟知的用于神经网络训练推导的GPGPU(General-purpose computing on graphicsprocessing units,即通用图形处理器)等。但是由于不同的加速卡使用不同的驱动接口,所以在现有技术中,对于需要多种加速计算时,每一步计算处理都需要主机进行调度,无疑增加了CPU(central processing unit,即中央处理器)的负担并降低了处理效率。
综上可见,如何降低CPU负担并提高请求处理的效率是本领域有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种请求处理方法、装置、设备及介质,能够降低CPU负担并提高请求处理的效率。其具体方案如下:
第一方面,本申请公开了一种请求处理方法,应用于当前加速卡,包括:
从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;
对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;
对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空;
若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。
可选的,所述对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项,包括:
对所述当前待处理请求进行解析以得到相应的解析结果;所述解析结果包括上一已处理请求对应的所述处理后目标数据的地址、所述当前处理后目标数据的地址以及用于记录下一待处理请求的地址的串行地址项;
基于所述上一已处理请求对应的所述处理后目标数据的地址,从预设数据缓冲区中获取相应的数据,以得到当前待处理源数据;
相应的,所述将所述当前处理后目标数据写入预设数据缓冲区,包括:
基于所述解析结果中携带的所述当前处理后目标数据的地址,将所述当前处理后目标数据写入所述预设数据缓冲区的相应位置。
可选的,所述对所述当前待处理请求进行解析的过程中,还包括:
提取所述当前待处理请求中携带的串行加速卡地址;
相应的,所述将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存,包括:
基于所述当前待处理请求中携带的所述串行加速卡地址,确定出下一加速卡,并将所述串行地址项中记录的地址发送至所述下一加速卡的先进先出队列中进行保存。
可选的,所述对所述当前待处理请求进行解析的过程中,还包括:
提取所述当前待处理请求中携带的并行加速卡地址和并行地址项;所述并行地址项用于记录与所述当前待处理请求对应的当前待处理并行请求的地址;
相应的,所述对所述当前待处理源数据进行处理以得到当前处理后目标数据之前,还包括:
判断所述并行地址项是否为空;
若所述并行地址项为非空,则基于所述当前待处理请求中携带的所述并行加速卡地址确定出相应的目标并行加速卡,并将所述并行地址项中记录的地址发送至所述目标并行加速卡进行保存,以便所述目标并行加速卡利用该地址从所述预设请求缓冲区中获取所述当前待处理并行请求。
可选的,所述从本地的先进先出队列中获取当前待处理请求的地址之前,还包括:
从本地的基址寄存器空间中获取所述先进先出队列的入口地址以及所述先进先出队列的当前可用容量;
当所述当前可用容量不小于预设容量阈值时,通过主机或上一加速卡将所述当前待处理请求的地址基于所述入口地址写入所述先进先出队列中。
可选的,所述当所述当前可用容量不小于预设容量阈值时,通过主机或上一加速卡将所述当前待处理请求的地址基于所述入口地址写入所述先进先出队列中之后,还包括:
基于所述当前待处理请求的地址所占空间大小,重新计算所述当前可用容量,以得到更新后可用容量,并判断所述更新后可用容量是否不小于所述预设容量阈值;
若所述更新后可用容量小于所述预设容量阈值,则禁止将新的待处理请求的地址写入所述先进先出队列。
可选的,所述对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区过程中,还包括:
当对所述当前待处理源数据进行处理存在错误时,则向预先通过所述主机为所述当前加速卡分配的响应队列中写入相应的预设错误响应操作,并通知所述主机执行所述预设错误响应操作。
第二方面,本申请公开了一种请求处理装置,应用于当前加速卡,包括:
请求获取模块,用于从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;
请求解析模块,用于对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;
处理模块,用于对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区;
判断模块,用于判断所述串行地址项是否为空;
判断结果处理模块,用于若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的请求处理方法的步骤。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的请求处理方法的步骤。
可见,本申请从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空;若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。由此可见,本申请从本地的先进先出队列中获取当前待处理请求的地址,并从预设请求缓冲区中获取与该地址对应的当前待处理请求;将当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;判断串行地址项是否为空,若串行地址项为非空,则将串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存,无需每一次由主机将串行地址项中记录的地址发送至下一加速卡的先进先出队列,减少CPU的负担,减少冗余步骤,进而提高对请求的处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种请求处理方法流程图;
图2为本申请公开的一种具体的请求处理方法流程图;
图3为本申请公开的一种具体的请求链表示意图;
图4为本申请公开的一种具体的请求处理方法流程图;
图5为本申请公开的一种具体的请求处理方法示意图;
图6为本申请公开的一种请求处理装置结构示意图;
图7为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于不同的加速卡使用不同的驱动接口,所以在现有技术中,对于需要多种加速计算时,每一步计算处理都需要主机进行调度,无疑增加了CPU(central processingunit,即中央处理器)的负担并降低了处理效率。
为此本申请相应的提供了一种请求处理方案,能够降低CPU负担并提高请求处理的效率。
参见图1所示,本申请实施例公开了一种请求处理方案,应用于当前加速卡,包括:
步骤S11:从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求。
本实施例中,从本地的先进先出队列(First Input First Output,即FIFO)中获取当前待处理请求的地址,并从预设请求缓冲区中获取与该地址对应的当前处理请求,可以理解的是,由主机预先将当前处理请求的地址写入当前加速卡的先进先出队列中。
步骤S12:对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项。
本实施例中,对所述当前待处理请求进行解析以得到相应的解析结果,其中解析结果包括上一已处理请求对应的处理后目标数据的地址、当前处理后目标数据的地址、用于记录下一待处理请求的地址的串行地址项、并行加速卡地址以及用于记录与当前待处理请求对应的当前待处理并行请求的并行地址项。可以理解的是,基于上一已处理请求对应的处理后目标数据的地址从预设数据缓冲区中获取相应的当前待处理源数据。
步骤S13:对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空。
本实施例中,对当前待处理源数据进行相应的处理后得到当前处理后目标数据,并基于用于存储当前处理后目标数据的地址将当前处理后目标数据写入预设数据缓冲区中对应的位置。判断串行地址项是否为空,即判断是否存在下一待处理请求,可以预先设定若串行地址项为空,则不存在下一待处理请求,也可以预先设定串行地址为0,则不存在下一待处理请求。在对当前待处理源数据进行相应处理之前,还需要判断用于记录与当前待处理请求对应的当前待处理并行请求的并行地址项是否为空,需要注意的是,也可以预先设定若并行地址项,则不存在当前待处理并行请求,也可以预先设定并行地址为0,则不存在当前待处理并行请求。
本实施例中,所述对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区过程中,还包括:当对所述当前待处理源数据进行处理存在错误时,则向预先通过所述主机为所述当前加速卡分配的响应队列中写入相应的预设错误响应操作,并通知所述主机执行所述预设错误响应操作。若当前加速卡对当前待处理请求进行处理时出现错误,则当前加速卡向本地的响应队列中写入相应的预设错误响应操作,并通过MSI(Message Signaled Interrupts,即消息信号中断)中断来通知主机执行相应的预设错误响应操作。
步骤S14:若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。
本实施例中,若串行地址项为空,则判定不存在下一待处理请求,因此由当前加速卡向本地的响应队列中写入预设读取响应,例如使得响应队列中的相位标记由0转变为1,然后可以向主机发送MSI中断以通知主机从预设数据缓冲区读取所有的处理后目标数据;当主机轮询响应队列中的相位标记不为0时,则认为有新的预设读取响应写入了响应队列中,并从预设数据缓冲区读取所有的处理后目标数据,然后主机再将相位标记由1设置为0,以便下一次有新的预设读取响应写入响应队列中,使得相位标记由0转变为1。若串行地址项为非空,则将串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存,以便下一加速卡基于自身的先进先出队列中获取串行地址项中记录的地址,并从预设请求缓冲区中获取与该地址对应的下一待处理请求。可以理解的是,PCIe EP(endpoint,端点设备即本申请中的加速卡)直接向另一个PCIe EP发送串行地址项中记录的地址发送至下一加速卡,即基于P2P完成当前加速卡与下一加速卡之间的协同处理。
可见,本申请从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空;若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。由此可见,本申请从本地的先进先出队列中获取当前待处理请求的地址,并从预设请求缓冲区中获取与该地址对应的当前待处理请求;将当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;判断串行地址项是否为空,若串行地址项为非空,则将串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存,无需每一次由主机将串行地址项中记录的地址发送至下一加速卡的先进先出队列,减少CPU的负担,减少冗余步骤,进而提高对请求的处理效率。
参见图2所示,本申请实施例公开了一种具体的请求处理方案,包括:
步骤S21:从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求。
步骤S22:对所述当前待处理请求进行解析以得到相应的解析结果;所述解析结果包括上一已处理请求对应的所述处理后目标数据的地址、所述当前处理后目标数据的地址以及用于记录下一待处理请求的地址的串行地址项;基于所述上一已处理请求对应的所述处理后目标数据的地址,从预设数据缓冲区中获取相应的数据,以得到当前待处理源数据。
本实施例中,所述对所述当前待处理请求进行解析的过程中,还包括:提取所述当前待处理请求中携带的串行加速卡地址;相应的,所述将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存,包括:基于所述当前待处理请求中携带的所述串行加速卡地址,确定出下一加速卡,并将所述串行地址项中记录的地址发送至所述下一加速卡的先进先出队列中进行保存。
本实施例中,所述对所述当前待处理请求进行解析的过程中,还包括:提取所述当前待处理请求中携带的并行加速卡地址和并行地址项;所述并行地址项用于记录与所述当前待处理请求对应的当前待处理并行请求的地址;相应的,所述对所述当前待处理源数据进行处理以得到当前处理后目标数据之前,还包括:判断所述并行地址项是否为空;若所述并行地址项为非空,则基于所述当前待处理请求中携带的所述并行加速卡地址确定出相应的目标并行加速卡,并将所述并行地址项中记录的地址发送至所述目标并行加速卡进行保存,以便所述目标并行加速卡利用该地址从所述预设请求缓冲区中获取所述当前待处理并行请求。例如图3所示,主机根据实际需求,准备需要处理的数据并创建相应的一个或多个待处理请求,可以理解的是,每一待处理请求中包含当前待处理请求的特定数据、用于记录下一待处理请求的地址的串行地址项、串行加速卡地址、并行加速卡地址、用于记录与当前待处理请求对应的当前待处理并行请求的并行地址项以及该请求的请求号,其中当前待处理请求的特定数据中包含上一已处理请求对应的处理后目标数据的地址、当前处理后目标数据的地址以及当前待处理请求的相关参数,并行加速卡地址和串行加速卡地址可以为对应加速卡的BAR(Base Address Register,即基地址寄存器)地址,并且由于每一个请求中包含串行地址项和并行地址项,因此可以形成如图3所示的包含并行请求链表和串行请求链表的请求链表,需要注意的是,在并行请求链表中当前待处理请求以及对应的当前待处理并行请求的上一已处理请求对应的处理后目标数据的地址相同,同一个请求链表中所有待处理请求的请求号均相同,以便该请求链表中的当前加速卡判定串行地址项为空,则携带该请求号通知主机从预设数据缓冲区读取所有的处理后目标数据。
步骤S23:对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空。
本实施例中,所述将所述当前处理后目标数据写入预设数据缓冲区,具体包括:基于所述解析结果中携带的所述当前处理后目标数据的地址,将所述当前处理后目标数据写入所述预设数据缓冲区的相应位置。
步骤S24:若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。
其中,关于上述步骤S21以及S24更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
由此可见,本申请中无需每一步处理都由主机来调用不同的加速卡,进而降低了CPU的负担,减少冗余步骤;当前加速卡将用于记录与当前待处理请求对应的当前待处理并行请求的并行地址项写入与并行加速卡地址对应的加速卡中,将所述串行地址项中记录的地址发送至与串行加速卡地址对应的下一加速卡的先进先出队列中进行保存,因此可以并行或串行协同处理请求,提高处理效率。
参见图4所示,本申请实施例公开了一种具体的请求处理方案,包括:
步骤S31:从本地的基址寄存器空间中获取所述先进先出队列的入口地址以及所述先进先出队列的当前可用容量。
本实施例中,从本地的基址寄存器空间中获取所述先进先出队列的入口地址以及所述先进先出队列的当前可用容量之前,主机进行系统初始化,并为每一个加速卡分配预设数量个响应队列,以便相应的加速卡向响应队列中写入预设读取响应,然后可以向主机发送MSI中断以通知主机从预设数据缓冲区读取所有的处理后目标数据,进而避免多个加速卡之间的数据冲突。主机从预设请求缓冲区中申请用于存放待处理请求的请求空间,并从预设数据缓冲区中申请用于存储处理后目标数据的数据空间。
步骤S32:当所述当前可用容量不小于预设容量阈值时,通过主机或上一加速卡将所述当前待处理请求的地址基于所述入口地址写入所述先进先出队列中。
本实施例中,所述当所述当前可用容量不小于预设容量阈值时,通过主机或上一加速卡将所述当前待处理请求的地址基于所述入口地址写入所述先进先出队列中之后,还包括:基于所述当前待处理请求的地址所占空间大小,重新计算所述当前可用容量,以得到更新后可用容量,并判断所述更新后可用容量是否不小于所述预设容量阈值;若所述更新后可用容量小于所述预设容量阈值,则禁止将新的待处理请求的地址写入所述先进先出队列。例如,当前可用容量为1,预设容量阈值为1,即当前可用容量不小于预设容量阈值,当前待处理请求的地址所占空间大小为1,通过主机将当前待处理请求的地址基于入口地址写入该先进先出队列之后,重新计算当前可用容量得到更新后可用容量为0,并判定更新后可用容量小于预设容量阈值,因此禁止将新的待处理请求的地址写入该先进先出队列。可以理解的是,如果当前可用容量为1,有两个待处理请求的地址需要被写入该先进先出队列时,则利用PCIe总线(外围组件互连快速总线)的仲裁机制,第一个待处理请求收到该先进先出队列为其分配为1的空间,第二个待处理请求收到该先进先出队列为其分配为0的空间,进而第一个待处理请求的地址被写入该先进先出队列,第二个待处理请求的地址不能被写入该先进先出队列。
步骤S33:从本地的所述先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求。
步骤S34:对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项。
步骤S35:对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空。
步骤S36:若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。
其中,关于上述步骤S33、S34 、S35以及S36更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
由此可见,本申请基于本地的先进先出队列的当前可用容量,判断主机或上一加速卡能否将当前待处理请求的地址基于入口地址写入先进先出队列中,避免因先进先出队列的当前可用容量不能满足当前待处理请求的地址所占空间大小而出现先进先出队列溢出错误的情况;由当前加速卡将下一待处理请求的地址发送至下一加速卡的先进先出队列中,减少主机的负担,进而降低CPU的工作量,提高请求处理的效率。
下面以图5所示的一种具体的请求处理方法示意图为例,对本申请中的技术方案进行说明。主机进行系统初始化,为每一个加速卡分配预设数量的响应队列,例如为每一个加速卡分配一个环形响应队列,避免多个加速卡之间的数据冲突;主机基于实际需求,准备待处理数据并创建对应一个或多个的待处理请求,其中每一个待处理请求中包含该请求的请求号、当前待处理请求的特定数据、用于记录下一待处理请求的地址的串行地址项、串行加速卡地址、并行加速卡地址、用于记录与当前待处理请求对应的当前待处理并行请求的并行地址项,其中当前待处理请求的特定数据包含上一已处理请求对应的处理后目标数据的地址和当前处理后目标数据的地址;主机获取初始加速卡的先进先出队列(FIFO)的当前可用容量,若当前可用容量不小于预设容量阈值,则将初始待处理请求的地址基于初始加速卡的先进先出队列的入口地址(FIFO Entry)写入该先进先出队列中,其中预设容量阈值可以设置为初始待处理请求的地址所占空间大小,并且可以基于实际情况更改预设容量阈值,若有两个待处理请求的地址需要被写入该先进先出队列时,则利用PCIe总线(PCIeBus)的仲裁机制,确定第一个待处理请求和第二个待处理请求。
如果当前加速卡检测到本地的先进先出队列中被写入当前待处理请求的地址,则从该先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址所占空间大小,重新计算当前可用容量(FIFO Depth),以得到更新后可用容量,当存在新的待处理请求的地址需要被写入该先进先出队列时,需要判断更新后可用容量是否小于预设容量阈值,若小于则禁止新的待处理请求的地址写入该先进先出队列,可以理解的是,如果当前加速卡为初始加速卡,则获取初始待处理请求的地址。基于当前待处理请求的地址从预设请求缓冲区中获取相应的当前待处理请求,并对当前待处理请求进行解析,因此获取包含该请求的请求号、当前待处理请求的特定数据、用于记录下一待处理请求的地址的串行地址项、串行加速卡地址、并行加速卡地址、用于记录与当前待处理请求对应的当前待处理并行请求的并行地址项的解析结果,判断并行地址项所记录的地址是否为空,若否则将并行地址项所记录的地址发送至与并行加速卡地址对应的目标并行加速卡的先进先出队列中进行保存,以便目标并行加速卡利用该地址从预设请求缓冲区中获取当前待处理并行请求;利用上一已处理请求对应的处理后目标数据的地址,从预设数据缓冲区中获取相应的数据,以得到当前待处理源数据,对当前待处理源数据进行处理以得到当前处理后目标数据,然后基于当前处理后目标数据的地址将当前处理后目标数据写入预设数据缓冲区的相应位置。当对当前待处理源数据进行处理存在错误时,则向预先通过主机为当前加速卡分配的响应队列中写入相应的预设错误响应操作,并通知主机执行预设错误响应操作。
判断串行地址项是否为空,若串行地址项为非空,则将串行地址项中记录的地址发送至与串行加速卡地址对应的下一加速卡的先进先出队列中进行保存;若串行地址项为空,当前加速卡向本地的响应队列中写入预设读取响应,使得响应队列中的相位标记由0转变为1,然后可以向主机发送MSI中断以通知主机从预设数据缓冲区读取所有的处理后目标数据。
当主机轮询响应队列中的相位标记不为0时,则认为有新的预设读取响应写入了响应队列中,并从预设数据缓冲区读取所有的处理后目标数据,然后主机再将相位标记由1设置为0,以便下一次有新的预设读取响应写入响应队列中,使得相位标记由0转变为1。
参见图6所示,本申请实施例公开了一种请求处理装置,应用于当前加速卡,包括:
请求获取模块11,用于从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;
请求解析模块12,用于对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;
处理模块13,用于对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区;
判断模块14,用于判断所述串行地址项是否为空;
判断结果处理模块15,用于若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。
可见,本申请从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空;若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存。由此可见,本申请从本地的先进先出队列中获取当前待处理请求的地址,并从预设请求缓冲区中获取与该地址对应的当前待处理请求;将当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;判断串行地址项是否为空,若串行地址项为非空,则将串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存,无需每一次由主机将串行地址项中记录的地址发送至下一加速卡的先进先出队列,减少CPU的负担,减少冗余步骤,进而提高对请求的处理效率。
图7为本申请实施例提供的一种电子设备的结构示意图。具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的由计算机设备执行的请求处理方法中的相关步骤。
本实施例中,电源23用于为计算机设备20上的各硬件设备提供工作电压;通信接口24能够为计算机设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制计算机设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由计算机设备20执行的请求处理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223除了可以包括计算机设备接收到的由外部设备传输进来的数据,也可以包括由自身输入输出接口25采集到的数据等。
进一步的,本申请实施例还公开了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的由请求处理过程中执行的方法步骤。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种请求处理方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种请求处理方法,其特征在于,应用于当前加速卡,包括:
从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;
对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;
对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区,并判断所述串行地址项是否为空;
若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存;
其中,所述对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项,包括:
对所述当前待处理请求进行解析以得到相应的解析结果;所述解析结果包括上一已处理请求对应的所述处理后目标数据的地址、所述当前处理后目标数据的地址以及用于记录下一待处理请求的地址的串行地址项;基于所述上一已处理请求对应的所述处理后目标数据的地址,从预设数据缓冲区中获取相应的数据,以得到当前待处理源数据;
相应的,所述将所述当前处理后目标数据写入预设数据缓冲区,包括:
基于所述解析结果中携带的所述当前处理后目标数据的地址,将所述当前处理后目标数据写入所述预设数据缓冲区的相应位置。
2.根据权利要求1所述的请求处理方法,其特征在于,所述对所述当前待处理请求进行解析的过程中,还包括:
提取所述当前待处理请求中携带的串行加速卡地址;
相应的,所述将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存,包括:
基于所述当前待处理请求中携带的所述串行加速卡地址,确定出下一加速卡,并将所述串行地址项中记录的地址发送至所述下一加速卡的先进先出队列中进行保存。
3.根据权利要求2所述的请求处理方法,其特征在于,所述对所述当前待处理请求进行解析的过程中,还包括:
提取所述当前待处理请求中携带的并行加速卡地址和并行地址项;所述并行地址项用于记录与所述当前待处理请求对应的当前待处理并行请求的地址;
相应的,所述对所述当前待处理源数据进行处理以得到当前处理后目标数据之前,还包括:
判断所述并行地址项是否为空;
若所述并行地址项为非空,则基于所述当前待处理请求中携带的所述并行加速卡地址确定出相应的目标并行加速卡,并将所述并行地址项中记录的地址发送至所述目标并行加速卡进行保存,以便所述目标并行加速卡利用该地址从所述预设请求缓冲区中获取所述当前待处理并行请求。
4.根据权利要求1所述的请求处理方法,其特征在于,所述从本地的先进先出队列中获取当前待处理请求的地址之前,还包括:
从本地的基址寄存器空间中获取所述先进先出队列的入口地址以及所述先进先出队列的当前可用容量;
当所述当前可用容量不小于预设容量阈值时,通过主机或上一加速卡将所述当前待处理请求的地址基于所述入口地址写入所述先进先出队列中。
5.根据权利要求4所述的请求处理方法,其特征在于,所述当所述当前可用容量不小于预设容量阈值时,通过主机或上一加速卡将所述当前待处理请求的地址基于所述入口地址写入所述先进先出队列中之后,还包括:
基于所述当前待处理请求的地址所占空间大小,重新计算所述当前可用容量,以得到更新后可用容量,并判断所述更新后可用容量是否不小于所述预设容量阈值;
若所述更新后可用容量小于所述预设容量阈值,则禁止将新的待处理请求的地址写入所述先进先出队列。
6.根据权利要求1至5任一项所述的请求处理方法,其特征在于,所述对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区过程中,还包括:
当对所述当前待处理源数据进行处理存在错误时,则向预先通过所述主机为所述当前加速卡分配的响应队列中写入相应的预设错误响应操作,并通知所述主机执行所述预设错误响应操作。
7.一种请求处理装置,其特征在于,应用于当前加速卡,包括:
请求获取模块,用于从本地的先进先出队列中获取当前待处理请求的地址,并基于所述当前待处理请求的地址从预设请求缓冲区中获取所述当前待处理请求;
请求解析模块,用于对所述当前待处理请求进行解析,并基于解析结果获取相应的当前待处理源数据以及用于记录下一待处理请求的地址的串行地址项;
处理模块,用于对所述当前待处理源数据进行处理以得到当前处理后目标数据,并将所述当前处理后目标数据写入预设数据缓冲区;
判断模块,用于判断所述串行地址项是否为空;
判断结果处理模块,用于若所述串行地址项为空,则通知主机从所述预设数据缓冲区读取所有的所述处理后目标数据,若所述串行地址项为非空,则将所述串行地址项中记录的地址发送至下一加速卡的先进先出队列中进行保存;
其中,所述请求解析模块,具体用于:
对所述当前待处理请求进行解析以得到相应的解析结果;所述解析结果包括上一已处理请求对应的所述处理后目标数据的地址、所述当前处理后目标数据的地址以及用于记录下一待处理请求的地址的串行地址项;基于所述上一已处理请求对应的所述处理后目标数据的地址,从预设数据缓冲区中获取相应的数据,以得到当前待处理源数据;
所述处理模块,具体用于:
基于所述解析结果中携带的所述当前处理后目标数据的地址,将所述当前处理后目标数据写入所述预设数据缓冲区的相应位置。
8.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至6任一项所述的请求处理方法的步骤。
9.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的请求处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210407248.4A CN114513545B (zh) | 2022-04-19 | 2022-04-19 | 请求处理方法、装置、设备及介质 |
PCT/CN2022/121127 WO2023201987A1 (zh) | 2022-04-19 | 2022-09-23 | 请求处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210407248.4A CN114513545B (zh) | 2022-04-19 | 2022-04-19 | 请求处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114513545A CN114513545A (zh) | 2022-05-17 |
CN114513545B true CN114513545B (zh) | 2022-07-12 |
Family
ID=81554829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210407248.4A Active CN114513545B (zh) | 2022-04-19 | 2022-04-19 | 请求处理方法、装置、设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114513545B (zh) |
WO (1) | WO2023201987A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114513545B (zh) * | 2022-04-19 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
CN115037798B (zh) * | 2022-08-11 | 2022-12-27 | 成都金诺信高科技有限公司 | 一种时统报文数据包分发方法 |
CN117609142A (zh) * | 2023-12-19 | 2024-02-27 | 中科驭数(北京)科技有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558250A (zh) * | 2018-11-02 | 2019-04-02 | 锐捷网络股份有限公司 | 一种基于fpga的通信方法、设备、主机及异构加速系统 |
CN113515320A (zh) * | 2021-05-26 | 2021-10-19 | 新华三信息技术有限公司 | 一种硬件加速处理方法、装置以及服务器 |
CN114138481A (zh) * | 2021-11-26 | 2022-03-04 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6692344B2 (ja) * | 2014-08-02 | 2020-05-13 | アップル インコーポレイテッドApple Inc. | コンテキスト特化ユーザインターフェース |
US11194722B2 (en) * | 2018-03-15 | 2021-12-07 | Intel Corporation | Apparatus and method for improved cache utilization and efficiency on a many core processor |
CN109062826B (zh) * | 2018-08-16 | 2022-04-15 | 北京算能科技有限公司 | 数据传输方法及系统 |
CN114244790B (zh) * | 2022-02-24 | 2022-07-12 | 摩尔线程智能科技(北京)有限责任公司 | PCIe设备与主机设备的通信方法、系统及设备 |
CN114513545B (zh) * | 2022-04-19 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
-
2022
- 2022-04-19 CN CN202210407248.4A patent/CN114513545B/zh active Active
- 2022-09-23 WO PCT/CN2022/121127 patent/WO2023201987A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558250A (zh) * | 2018-11-02 | 2019-04-02 | 锐捷网络股份有限公司 | 一种基于fpga的通信方法、设备、主机及异构加速系统 |
CN113515320A (zh) * | 2021-05-26 | 2021-10-19 | 新华三信息技术有限公司 | 一种硬件加速处理方法、装置以及服务器 |
CN114138481A (zh) * | 2021-11-26 | 2022-03-04 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023201987A1 (zh) | 2023-10-26 |
CN114513545A (zh) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114513545B (zh) | 请求处理方法、装置、设备及介质 | |
EP3161628B1 (en) | Intelligent gpu scheduling in a virtualization environment | |
US7257658B2 (en) | Message based interrupt table | |
CN107992436A (zh) | 一种NVMe数据读写方法及NVMe设备 | |
CN111813713B (zh) | 数据加速运算处理方法、装置及计算机可读存储介质 | |
CN111104210A (zh) | 一种任务处理方法、装置及计算机系统 | |
CN107967225B (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
US8996774B2 (en) | Performing emulated message signaled interrupt handling | |
CN113704301B (zh) | 异构计算平台的数据处理方法、装置、系统、设备及介质 | |
US20240256477A1 (en) | Method and apparatus for processing dma, and computer-readable storage medium | |
CN114936173B (zh) | 一种eMMC器件的读写方法、装置、设备和存储介质 | |
US9547576B2 (en) | Multi-core processor system and control method | |
CN115168256A (zh) | 中断控制方法、中断控制器、电子设备、介质和芯片 | |
CN114968567A (zh) | 用于分配计算节点的计算资源的方法、装置和介质 | |
CN113849238B (zh) | 数据通信方法、装置、电子设备及可读存储介质 | |
WO2013148439A1 (en) | Hardware managed allocation and deallocation evaluation circuit | |
US9405470B2 (en) | Data processing system and data processing method | |
US10678744B2 (en) | Method and system for lockless interprocessor communication | |
CN115756866A (zh) | 负载均衡方法、装置及存储介质 | |
CN107463829B (zh) | 一种密码卡中dma请求的处理方法、系统及相关装置 | |
CN116303132A (zh) | 一种数据缓存方法、装置、设备以及存储介质 | |
US6675238B1 (en) | Each of a plurality of descriptors having a completion indicator and being stored in a cache memory of an input/output processor | |
CN116107774A (zh) | Io请求处理方法、装置、电子设备和存储介质 | |
CN115544042A (zh) | 缓存的信息更新方法及装置、设备和介质 | |
CN115390992A (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 |