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

一种硬件加速处理方法、装置以及服务器与流程

2021-10-19 23:48:00 来源:中国专利 TAG: 说明书 装置 通信 服务器 方法


1.本说明书涉及通信技术领域,尤其涉及一种硬件加速处理方法、装置以及服务器。


背景技术:

2.随着网络的普及,承载于网络上的应用也越来越多,尤其是对于音频、视频等数据的需求也逐渐增大。在网络中通过作为存储设备的服务器来存储音频和视频的数据,并基于用户的访问进行交互。因此,对于服务器而言,如何更有效地存储海量的数据是服务器改进的方向。
3.加速卡是一种针对网络安全和数据存储推出的硬件加速技术,通过硬件替代软件算法实现性能提升、成本优化的目的,加速卡可以是一张具有pcie(外围组件快速互联,peripheral component interconnect express)接口的插卡。通过加速卡,能够支持对于音频和视频等数据的压缩和解压以及数据传输中的加密和解密,从而缓解服务器中的处理器基于软件所实现加速功能时,对处理器资源的占用。
4.在执行加速功能的过程时,应用程序会将处理请求写入到加速卡所提供的请求队列中,以供加速卡获取处理请求并对数据进行处理,此后,加速卡会将该处理响应写入到应答队列中,以使应用程序确认到处理应答后获取处理后的数据。在这一过程中,应用程序对加速卡的调用通过同步模式实现,从应用程序的角度来看,需要在接收到处理应答后才会将下一个处理请求写入到请求队列中以使加速卡执行下一次的数据处理。当服务器中存在海量的数据需要处理时,会造成大量的处理请求被阻塞,从而加大了加速卡的处理延时。


技术实现要素:

5.为克服相关技术中存在的问题,本说明书提供了一种硬件加速处理方法、装置以及服务器。
6.结合本说明书实施方式的第一方面,本技术提供了一种硬件加速处理方法,应用于包含有加速卡的服务器,包括:
7.向服务器的加速卡下发的配置信息,以使加速卡根据配置信息创建包含至少两个队列组的环组,其中,队列组包含一个请求队列和一个应答队列;
8.建立环队列组和所运行的线程之间的对应关系;
9.通过对应关系依次向线程所关联的请求队列中下发请求信息,以使加速卡依次对所接收到的请求信息进行处理;
10.若确定加速卡完成了对各请求信息的处理,则获取通过各应答队列所返回的应答信息,生成处理后的数据。
11.进一步的,通过对应关系依次向线程所关联的请求队列中下发请求信息,包括:
12.根据对应关系确定线程所对应的队列组;
13.向所对应的队列组中的请求队列下发待处理数据中的第一数据块,其中,第一数据块携带在请求信息中;
14.若包含未下发的第一数据块,则向下一个队列组中的请求队列下发待处理数据中的下一个第一数据块,直至待处理数据中的最后一个第一数据块写入到线程所对应的队列组的请求队列中。
15.进一步的,若确定加速卡完成了对各请求信息的处理,则获取通过各应答队列所返回的应答信息,生成处理后的数据,包括:
16.从队列组中的应答队列所对应的缓冲区中读取第二数据块,其中,第二数据块为加速卡对第一数据块处理后所生成的,第二数据块携带在应答信息中;
17.若确定接收到了全部的第二数据块,则根据全部的第二数据块生成处理后的数据。
18.可选的,在生成处理后的数据之后,还包括:
19.清除队列组与线程之间的对应关系。
20.可选的,处理包括压缩处理和加密处理。
21.结合本说明书实施方式的第二方面,本技术提供了一种硬件加速处理装置,应用于包含有加速卡的服务器,包括:
22.配置单元,用于向服务器的加速卡下发的配置信息,以使加速卡根据配置信息创建包含至少两个队列组的环组,其中,队列组包含一个请求队列和一个应答队列;
23.创建单元,用于建立环队列组和所运行的线程之间的对应关系;
24.发送单元,还用于通过对应关系依次向线程所关联的请求队列中下发请求信息,以使加速卡依次对所接收到的请求信息进行处理;
25.接收单元,用于若确定加速卡完成了对各请求信息的处理,则获取通过各应答队列所返回的应答信息,生成处理后的数据。
26.进一步的,发送单元,包括:
27.确定模块,用于根据对应关系确定线程所对应的队列组;
28.发送模块,用于向所对应的队列组中的请求队列下发待处理数据中的第一数据块,其中,第一数据块携带在请求信息中;若包含未下发的第一数据块,则向下一个环队列组中的请求队列下发待处理数据中的下一个第一数据块,直至待处理数据中的最后一个第一数据块写入到线程所对应的队列组的请求队列中。
29.进一步的,接收单元,包括:
30.读取模块,用于从环队列组中的应答队列所对应的缓冲区中读取第二数据块,其中,第二数据块为加速卡对第一数据块处理后所生成的,第二数据块携带在应答信息中;
31.处理模块,用于若确定接收到了全部的第二数据块,则根据全部的第二数据块生成处理后的数据。
32.可选的,该装置,还包括:
33.清除单元,用于清除队列组与线程之间的对应关系。
34.可选的,处理包括压缩、解压处理和加密、解密处理。
35.结合本说明书实施方式的第三方面,本技术提供了一种服务器,包括处理器、机器可读存储介质和加速卡;
36.机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器被机器可执行指令促使:实现上述任一的方法步骤。
37.本说明书的实施方式提供的技术方案可以包括以下有益效果:
38.本说明书实施方式中,通过下发配置信息创建包含多个队列组的环组,建立线程与多个队列组关联,使处理器通过其中设置的加速卡进行硬件加速时,不间断地向多个队列组下发需要进行处理的请求信息,以使加速卡顺次地对待处理数据进行处理,并在处理完成后分别返回给服务器中的处理器生成完成的、处理后的数据,从而避免处理器下发待处理数据时需要等待加速卡对刚刚下发的部分后下一部分待处理数据被阻塞的问题,提升了硬件加速处理的效率。
39.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
40.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施方式,并与说明书一起用于解释本说明书的原理。
41.图1是本技术的实施方式所涉及的一种硬件加速处理方法的流程图;
42.图2是本技术的实施方式所涉及的一种硬件加速处理方法中的线程与环的对应关系图;
43.图3是本技术的实施方式所涉及的一种硬件加速处理方法的数处理的示意图;
44.图4是本技术的实施方式所涉及的一种硬件加速处理装置的结构示意图;
45.图5是本技术的实施方式所涉及的一种服务器的结构示意图。
具体实施方式
46.这里将详细地对示例性实施方式进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施方式中所描述的实施方式并不代表与本说明书相一致的所有实施方式。
47.本技术提供了一种硬件加速处理方法,应用于包含有加速卡的服务器,如图1所示,包括:
48.s100、向服务器的加速卡下发的配置信息,以使加速卡根据配置信息创建包含至少两个队列组的环组。
49.服务器中可以设置有主板,在主板上设置有处理器、内存和用于连接外围电路的pcie连接器等,加速卡可以插接到该pcie连接器上以实现加速卡和服务器主板的连接。加速卡可以为qat(快速辅助技术,quick assist technology)的插卡,该加速卡所实现的处理,可以包含有数据的压缩处理和加密处理。当然,压缩处理实际上可以包含压缩和解压两种具体处理方式,加密处理可以包含加密和解密两种具体的处理方式。
50.加速卡具有开放的api(应用程序接口,application programming interface),以使服务器上所运行的系统调用该api与加速卡进行数据交互。服务器上的处理器通过调用该api向加速卡发送配置信息,以实现加速卡的设置。服务器可以配置加速卡所开启的功能,比如,开启压缩、解压功能或者开启加密、解密功能等,以及配置加速卡中所创建的环组(ring bank),在环组中可以包含有多个环(ring),每两个环可以组成一个队列组。在队列组中一个环可以称为请求队列和另一个环可以称为应答队列。请求队列用于实现处理器向
加速卡发送需要待处理数据,应答队列用于实现加速卡向处理器返回处理后的数据。
51.该环可以理解为是在加速卡的资源中划定一段缓存空间,该缓存空间的首指针和尾指针被映射到主板上内存的pcie区域以实现处理器与加速卡之间的数据交互需求。
52.在处理器所对应的内存中,还可以设置有两段缓冲区,一段缓冲区与请求队列相对应,用于缓存将要写入环的数据,另一段缓冲区和应答队列相对应,用于缓存已经处理后的、等待向处理器返回的数据。
53.s101、建立队列组和所运行的线程之间的对应关系。
54.处理器上可以创建有多个实例(instance),每个实例独立地占用处理资源。处理器可以为其中所运行的一个进程创建多个线程,每一个线程分配一个或多个实例以实现数据的处理和交互,举例而言,可以在一个进程中创建多个线程,并设置每个线程与8个实例的对应。一个实例可以被关联到加速卡上设置的一个队列组,并通过实例和队列组,建立队列组和线程之间的对应关系。每个队列组在一段时间内,只能被一个线程所占用。
55.s102、通过对应关系依次向线程所关联的请求队列中下发请求信息,以使加速卡依次对所接收到的请求信息进行处理。
56.在建立了队列组和线程之间的对应关系后,处理器可以调用线程执行处理,后面以该处理为压缩处理为例进行描述。
57.处理器可以针对待压缩数据生成请求信息,该请求信息中可以携带有部分待压缩数据。处理器调用线程,基于线程与队列组的对应关系,通过加速卡的api将请求信息发送到一个队列组的请求队列中。若请求信息被写入到请求队列,加速卡读取该请求队列中写入的请求信息并开始处理,此时,加速卡会向处理器返回一个反馈消息,以告知请求信息已经被写入,可以向下一个队列组写入请求信息。此后,不等待加速卡对该请求信息进行的压缩处理,线程生成下一个请求信息携带部分待压缩数据,并向对应关系中的下一个队列组发送该请求信息,以此方式逐步地下发待压缩数据给加速卡进行处理。
58.在加速卡针对一个请求信息完成压缩后,可以将压缩后的数据发送至应答队列中,并缓存至对应的缓冲区中,等待处理器读取。
59.s103、若确定加速卡完成了对各请求信息的处理,则获取通过各应答队列所返回的应答信息,生成处理后的数据。
60.在下发请求信息的过程中,处理器对各实例进行轮询,当确定下发至加速卡进行压缩的待处理数据全部完成压缩后,则可以分别从各应答队列的缓冲区中读取出应答信息,该应答信息中携带有部分待压缩数据在进行压缩后所形成的数据。
61.在处理器获取全部的应答信息后,则可以组合形成处理后的数据,完成压缩过程。
62.本说明书实施方式中,通过下发配置信息创建多个环队列组,建立线程与多个环队列组关联,使处理器通过其中设置的加速卡进行硬件加速时,不间断地向多个环队列组下发需要进行处理的请求信息,以使加速卡顺次地对待处理数据进行处理,并在处理完成后分别返回给服务器中的处理器生成完成的、处理后的数据,从而避免处理器下发待处理数据时需要等待加速卡对刚刚下发的部分后下一部分待处理数据被阻塞的问题,提升了硬件加速处理的效率。
63.进一步的,步骤s102、通过对应关系依次向线程所关联的请求队列中下发请求信息,包括:
64.s102a、根据对应关系确定线程所对应的队列组。
65.s102b、向所对应的环队列组中的请求队列下发待处理数据中的第一数据块。
66.其中,第一数据块携带在请求信息中,在处理器下发请求信息时,可以对待处理数据进行分割,形成多个第一数据块。该第一数据块的大小可以根据加速卡的实际处理能能力,以及加速卡中所分配的环的空间大小进行确定。在内存中,还可以设置有另一个缓冲区,在写入到该缓冲区时,可以将待处理数据分割出多个第一数据块。
67.s102c、若包含未下发的第一数据块,则向下一个队列组中的请求队列下发待处理数据中的下一个第一数据块,直至待处理数据中的最后一个第一数据块写入到线程所对应的队列组的请求队列中。
68.进一步的,步骤s103、若确定加速卡完成了对各请求信息的处理,则获取通过各应答队列所返回的应答信息,生成处理后的数据,包括:
69.s103a、从队列组中的应答队列所对应的缓冲区中读取第二数据块。
70.其中,第二数据块为加速卡对第一数据块处理后所生成的,第二数据块携带在应答信息中。
71.s103b、若确定接收到了全部的第二数据块,则根据全部的第二数据块生成处理后的数据。
72.在步骤s102b和s103a中,对于请求信息的写入和应答信息的读出,可以采用中断方式或轮询方式。
73.可选的,在生成处理后的数据之后,还包括:
74.s104、清除队列组与线程之间的对应关系。
75.在完成一次数据的处理后,可以释放线程与队列组之间的对应关系,从而使得队列组能够被其他的线程所使用,避免了处理资源被一个线程占用到导致其他线程需要更多处理资源时无法获取的问题,提升了服务器进行硬件加速处理时的效率。
76.下面结合一个具体的实施方式对本技术所涉及的硬件加速处理方法进行说明。其中,处理器上运行有两个线程(即线程1和线程2)。
77.s1、服务器启动,处理器创建实例。
78.其中,处理器所创建的实例数量可以根据实际需求设置,这里以创建了16个实例(实例0~15)为例进行描述。针对所创建的实例,分配处理器的计算资源和内存等硬件资源,基于该实例可以分配被不同的线程进行使用。
79.s2、处理器根据配置,生成配置信息。
80.在该配置信息中设置有针对加速卡所使能的处理功能,以及为每一个线程所分配的实例数量。比如,在配置信息中可以携带开启指令,以使加速卡分别使能压缩处理和加密处理,并且,可以设置为每一个线程分配8个实例。也就是说,针对线程1可以分配8个实例(实例0~7),为线程2分配8个实例(实例8~15)。
81.s3、处理器将配置信息传输至加速卡。
82.s4、加速卡在其自身的缓存空间中创建环组以及其中所包含的环和环组,并根据配置信息对环和实例进行关联,确认环和实例的对应关系。
83.在加速卡中,可以设置有多个节点(endpoint),每个节点中可以设置有多个环组,每个环组中包含有多个环,每两个环组成一个队列组,一个队列组中的一个环可以称为请
求队列,另一个环可以称为应答队列。基于配置信息的申请,可以将两个环作为一个队列组关联到一个实例进行数据交互,形成如图2所示的结构。即环组中包含有32个环(环0~31),环0和环1组成队列组0关联到实例0,环2和环3组成队列组1关联到实例1
……
以此类推,环30和环31组成队列组15关联到实例15。
84.s5、处理器中的线程对待处理数据进行划分,形成预设大小的第一数据块。
85.在处理器运行的线程中,可以配置有单次发送给加速卡所处理的数据的大小,处理器根据该大小对待压缩数据和待加密数据进行分割,形成数据块。其中,由于线程1进行压缩处理,线程2进行加密处理,所设置的数据块的大小可以不同。其中,为每一个线程还可以设置至少两个缓冲区,以线程1为例,可以设置缓冲区1和缓冲区2,缓冲区1对应请求队列,缓冲区2对应应答队列。图中仅列出了与线程1相对应的缓冲区1和缓冲区2,线程2所对应的缓冲区不做展示。
86.s6、处理器中的线程将第一数据块携带在请求信息中,并向线程所关联的请求队列中写入该请求信息。
87.s7、处理器中的线程判断待处理数据所分割出的第一数据块是否已全部发送给加速卡,若未全部发送则跳转至s8,若全部发送则跳转至s11。
88.在待处理数据向请求队列发送的过程中,可以进行分割,形成多个第一数据块,该第一数据块可以被写入到缓冲区1中进行缓存,并通过缓冲区1向请求队列发送。
89.由于线程1和线程2分别进行压缩处理和加密处理,因此,在待压缩数据的第一数据块写入到对应的请求队列,线程1会将待压缩数据的数据块写入到环0中,线程2会将待加密数据写入到环16中。
90.s8、处理器中的线程向下一个对应的请求队列中写入下一个第一数据块,并返回步骤s7继续进行判断。
91.在步骤s7和步骤s8的循环过程中,加速卡从环中读取已经写入的请求信息进行压缩处理和加密处理。
92.以线程1通过缓冲区1和实例0~7与加速卡交互为例进行具体描述,线程1首先将请求信息进行分割并逐个写入到缓冲区1,缓冲区1向实例0中的环0发送一个第一数据块,在写入完成后,直接开始向实例1中的环2发送下一个第一数据块,不进行等待。此时,若第一数据块已经写入到实例7的环14,则可以重新进行这一循环,从实例0的环0开始写入。在加速卡一侧,加速卡可以先与实例0中建立连接,并获取环0中的第一数据块进行压缩处理。接着,加速卡可以建立与实例1的连接,并继续获取实例1的环2的第一数据块,并依次类推,直至实例7的环14中的第一数据块被获取并进行压缩处理。另一方面,线程2所对应的加密处理过程,与上述过程相类似,在此不再展开描述。
93.此后,处理器中的线程会判断是否所有实例中是否存在需要进行处理的第一数据块。比如,线程1可以轮序各个实例,以确定一个实例中是否包含有需要进行处理的数据。若实例中仍然存在没有完成处理的数据块,则继续执行处理过程,若实例中的数据块全部完成处理,则可以认为当前待处理数据已经全部处理完成,需要对处理后的数据进行合并。
94.s9、加速卡将处理后所生成的、携带有第二数据块的应答信息写入到应答队列中,通过应答队列将应答信息写入到所对应的缓冲区。
95.在加速卡对第一数据块完成压缩处理后,可以将压缩后的第一数据块写入到应答
队列中,并最终发送给与应答队列相对应的缓冲区2。
96.s10、处理器中的线程轮询实例,在确定在应答队列对应的缓冲区中写入有应答信息,从缓冲区中读出应答信息并缓存。
97.s11、处理器中的线程判断是否获取到了全部的第二数据块。如果不是,则循环执行步骤s11,如果是,则跳转到s12。
98.s12、处理器中的线程获取全部的第二数据块,对第二数据块进行组合,形成处理后的数据。
99.线程1获取压缩后的数据,线程2获取加密后的数据。此后,处理器可以对这些处理后的数据进行存储或者转发。
100.s13、处理器中的线程清除实例与队列组之间的对应关系,释放线程对所对应的实例的占用。
101.在线程与实例之间的对应关系被清除后,实例处于空闲状态,此时其他的线程在需要进行数据的处理时,可以将处于空闲状态的实例分配给申请的线程进行其他的处理。
102.本说明书实施方式中,通过下发配置信息创建多个环队列组,建立线程与多个环队列组关联,使处理器通过其中设置的加速卡进行硬件加速时,不间断地向多个环队列组下发需要进行处理的请求信息,以使加速卡顺次地对待处理数据进行处理,并在处理完成后分别返回给服务器中的处理器生成完成的、处理后的数据,从而避免处理器下发待处理数据时需要等待加速卡对刚刚下发的部分后下一部分待处理数据被阻塞的问题,提升了硬件加速处理的效率。
103.相对应的,本技术提供了一种硬件加速处理装置,如图4所示,应用于包含有加速卡的服务器,包括:
104.配置单元,用于向服务器的加速卡下发的配置信息,以使加速卡根据配置信息创建包含至少两个队列组的环组,其中,队列组包含一个请求队列和一个应答队列;
105.创建单元,用于建立环队列组和所运行的线程之间的对应关系;
106.发送单元,还用于通过对应关系依次向线程所关联的请求队列中下发请求信息,以使加速卡依次对所接收到的请求信息进行处理;
107.接收单元,用于若确定加速卡完成了对各请求信息的处理,则获取通过各应答队列所返回的应答信息,生成处理后的数据。
108.进一步的,发送单元,包括:
109.确定模块,用于根据对应关系确定线程所对应的队列组;
110.发送模块,用于向所对应的队列组中的请求队列下发待处理数据中的第一数据块,其中,第一数据块携带在请求信息中;若包含未下发的第一数据块,则向下一个环队列组中的请求队列下发待处理数据中的下一个第一数据块,直至待处理数据中的最后一个第一数据块写入到线程所对应的队列组的请求队列中。
111.进一步的,接收单元,包括:
112.读取模块,用于从环队列组中的应答队列所对应的缓冲区中读取第二数据块,其中,第二数据块为加速卡对第一数据块处理后所生成的,第二数据块携带在应答信息中;
113.处理模块,用于若确定接收到了全部的第二数据块,则根据全部的第二数据块生成处理后的数据。
114.可选的,该装置,还包括:
115.清除单元,用于清除队列组与线程之间的对应关系。
116.可选的,处理包括压缩、解压处理和加密、解密处理。
117.相对应的,本技术提供了一种服务器,如图5所示,包括处理器、机器可读存储介质和加速卡;
118.机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器被机器可执行指令促使:实现上述任一的方法步骤。
119.本说明书的实施方式提供的技术方案可以包括以下有益效果:
120.本说明书实施方式中,通过下发配置信息创建多个环队列组,建立线程与多个环队列组关联,使处理器通过其中设置的加速卡进行硬件加速时,不间断地向多个环队列组下发需要进行处理的请求信息,以使加速卡顺次地对待处理数据进行处理,并在处理完成后分别返回给服务器中的处理器生成完成的、处理后的数据,从而避免处理器下发待处理数据时需要等待加速卡对刚刚下发的部分后下一部分待处理数据被阻塞的问题,提升了硬件加速处理的效率。
121.应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。
122.以上所述仅为本说明书的较佳实施方式而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
再多了解一些

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

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

相关文献