一种计算设备及请求处理方法技术

技术编号:37037431 阅读:22 留言:0更新日期:2023-03-29 19:16
本申请公开了一种计算设备及请求处理方法,可以应用于计算设备,所述计算设备与目标设备通信连接,所述计算设备包括请求处理模块,所述请求处理模块用于:在获取指示将目标数据传递至第一进程的数据传递请求后,通过访问基地址寄存器BAR,获取所述第一进程对应的目标存储地址,并向所述目标存储地址对应的存储空间传递所述目标数据。计算设备与目标设备的进程间的数据传递不再需要经过网卡进行转发,减少了进程间数据的传递次数(由3次网络传输简化为只有1次),提高了进程间数据的传输效率。率。率。

【技术实现步骤摘要】
一种计算设备及请求处理方法


[0001]本申请涉及计算机
,尤其涉及一种计算设备及请求处理方法。

技术介绍

[0002]外设组件快速互联标准(peripheral component interconnect express,PCIe),是一种连接计算机主板和外设的总线标准。它是显卡、硬盘、固态硬盘(solid state disk,SSD)、WIFI模块、网络适配器等等外设与主机相连的通用总线标准。数据处理器(data processing unit,DPU),是专用处理器的一个大类,与中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)并列。
[0003]PCIe总线可以将主机host的CPU与若干外设互连起来,DPU一般就作为PCIe的终节点endpoint而连接在PCIe总线拓扑中。在主机host、DPU的架构中,可以将主机的特定的业务功能(如网络协议栈、存储协议栈)卸载到DPU执行,从而释放主机的CPU去进行其他业务活动,此外,还可以在主机CPU负荷高的时段,或者触发计算密集型的任务时,可以利用DPU的闲置核分担主机CPU的计算任务,使性能线性提升。由此可见,很多业务需求需要主机的进程与DPU中的进程进行通信。
[0004]在现有的实现中,DPU和主机host分别都要与网卡设备交互,在进行进程间数据的迁移时,需要由网卡设备进行一次内部转发,转发次数较多,导致处理流程较长。

技术实现思路
/>[0005]本申请公开了一种计算设备及请求处理方法,减少了进程间数据的传递次数(由3次网络传输简化为只有1次),提高了进程间数据的传输效率。
[0006]第一方面,本申请提供了一种计算设备,所述计算设备与目标设备通信连接,所述计算设备包括请求处理模块,所述请求处理模块用于:获取数据传递请求,所述数据传递请求指示将目标数据传递至第一进程,所述第一进程为所述目标设备上运行的进程;通过访问基地址寄存器BAR,获取所述第一进程对应的目标存储地址,其中所述BAR存储有为所述目标设备上运行的进程分配的存储地址,所述存储地址为所述目标设备上存储空间的地址;为了能够使得发送端在向接收端发送数据时,不需要通过中间连接的网卡设备的转发,接收端可以向发送端暴露可以供发送端使用的存储地址,发送端可以将要发送给接收设备的数据存放至该存储地址对应的存储空间。也就是说,需要一个中间存储位置,该存储位置可以供计算设备和目标设备共享。其中,BAR的地址空间对于计算设备和目标设备来说均是可见的(或者描述为计算设备和目标设备来均可访问BAR),因此,接收端可以将供发送端使用的存储地址存至BAR中,以便发送端可以将要发送给接收设备的数据存放至BAR中的存储地址对应的存储空间。向所述目标存储地址对应的存储空间传递所述目标数据。
[0007]通过上述方式,计算设备与目标设备的进程间的数据传递不再需要经过网卡进行转发,减少了进程间数据的传递次数(由3次网络传输简化为只有1次),实现了计算设备到目标设备的端到端通信。
[0008]在一种可能的实现中,所述计算设备为主机设备host,所述目标设备为数据处理器DPU;或者,所述目标设备为DPU,且所述计算设备为host。在主机、DPU的架构中,可以将主机的特定的业务功能(如网络协议栈、存储协议栈)卸载到DPU执行,从而释放主机的CPU去进行其他业务活动,此外,还可以在主机CPU负荷高的时段,或者触发计算密集型的任务时,可以利用DPU的闲置核分担主机CPU的计算任务,使性能线性提升。
[0009]在一种可能的实现中,所述数据传递请求来自于第二进程,所述第二进程为运行在所述计算设备上的进程。
[0010]从计算设备的角度来说,计算设备从软件层可以划分为用户态和内核态,第二进程可以运行在用户态中,第二进程需要将目标数据传递至第一进程时,可以将目标数据写入内核态提供的内存块中。在现有的从用户态到内核态的拷贝过程中,需要在内核态缓存中拷贝一次数据,然后从用户态缓存(send buf)拷贝到内核态缓存(kernel send buf),内核态缓存再拷贝一次,在这个过程中,从内存的视角来看,就是把消息从一块内存区域拷贝到另一块内存,这样的拷贝在内存的视角看来是毫无意义而且浪费时间的,出于提高业务性能和系统效率的考虑,这种没有意义的拷贝都是需要避免的。本申请实施例中,用户态可以直接将目标数据写入内核态提供的内存块中,实现了内核态与用户态之间的零拷贝。
[0011]应理解,可选的,可以采用mmap等内存映射方法将目标数据从用户态写入内核态提供的内存块中,本申请并不限定将目标数据从用户态写入内核态的具体实现方式。
[0012]在一种可能的实现中,所述存储地址为所述目标设备的内存地址,其中,所谓目标设备的内存地址可以理解为目标设备的内存中的存储地址。应理解,存储地址可以是内存的实际物理地址,也可以是虚拟地址,例如经过输入/输出内存管理单元(input/output memory management unit,IOMMU)转换得到的虚拟地址。
[0013]在一种可能的实现中,所述BAR存储有为所述第一进程分配的多个存储地址;所述请求处理模块在获取所述第一进程对应的目标存储地址时,具体用于:通过访问所述BAR,获取第一状态信息,所述第一状态信息指示所述多个存储地址中每个存储地址是否被占用;基于所述第一状态信息指示所述目标存储地址未被占用,从所述多个存储地址中获取所述目标存储地址。
[0014]在一种可能的实现中,请求处理模块可以从为所述第一进程分配的一个或多个存储地址中选择未被占用且存储空间大小足够的地址(目标存储地址)作为传递目标数据的目的地址。
[0015]在一种可能的实现中,所述请求处理模块还可以在所述向所述目标存储地址对应的存储空间传递所述目标数据之后,修改所述第一状态信息,得到第二状态信息,所述第二状态信息指示所述目标存储地址被占用。
[0016]应理解,当请求处理模块将数据存储至BAR中的存储地址对应的存储空间后,在目标设备未从该存储空间中获取到数据时,该存储地址可以认为处于被占用的状态,当BAR中的存储地址对应的存储空间未被请求处理模块存储数据时,该存储地址可以认为处于未被占用的状态。
[0017]在一种可能的实现中,所述BAR存储有目标队列,所述目标队列包括多个内存块,每个内存块包括为所述第一进程分配的一个或多个存储地址;
[0018]在一种可能的实现中,可以配置状态信息来表示BAR中各个存储地址的被占用情
况以及读取情况,例如状态信息可以包括第一指针(例如可以称之为pHead)和第二指针(例如可以称之为pTail),其中,第一指针可以指向目标设备将要读取的内存块中的存储地址(也就是第一个可用的存储地址,或者称之为头部的存储地址),第二指针可以指向当前最后一个可用的存储地址(或者称之为尾部的存储地址)。
[0019]以第一进本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种计算设备,其特征在于,所述计算设备与目标设备通信连接,所述计算设备包括请求处理模块,所述请求处理模块用于:获取数据传递请求,所述数据传递请求指示将目标数据传递至第一进程,所述第一进程为所述目标设备上运行的进程;通过访问基地址寄存器BAR,获取所述第一进程对应的目标存储地址,其中所述BAR存储有为所述目标设备上运行的进程分配的存储地址,所述存储地址为所述目标设备上存储空间的地址;向所述目标存储地址对应的存储空间传递所述目标数据。2.根据权利要求1所述的计算设备,其特征在于,所述计算设备为主机设备host,所述目标设备为数据处理器DPU;或者,所述目标设备为DPU,且所述计算设备为host。3.根据权利要求1或2所述的计算设备,其特征在于,所述数据传递请求来自于第二进程,所述第二进程为运行在所述计算设备上的进程。4.根据权利要求1至3任一所述的计算设备,其特征在于,所述存储地址为所述目标设备的内存地址。5.根据权利要求1至4任一所述的计算设备,其特征在于,所述BAR被配置为所述计算设备与所述目标设备均可访问,且所述BAR存储的所述存储地址来自于所述目标设备。6.根据权利要求1至5任一所述的计算设备,其特征在于,所述BAR存储有为所述第一进程分配的至少一个存储地址;所述请求处理模块在获取所述第一进程对应的目标存储地址时,具体用于:通过访问所述BAR,获取第一状态信息,所述第一状态信息指示所述至少一个存储地址中每个存储地址是否被占用;基于所述第一状态信息指示所述目标存储地址未被占用,从所述至少一个存储地址中获取所述目标存储地址。7.根据权利要求6所述的计算设备,其特征在于,所述请求处理模块还用于:在所述向所述目标存储地址对应的存储空间传递所述目标数据之后,修改所述第一状态信息,得到第二状态信息,其中所述第二状态信息指示所述目标存储地址被占用。8.根据权利要求6或7所述的计算设备,其特征在于,所述BAR存储有目标队列,所述目标队列包括多个内存块,每个内存块包括为所述第一进程分配的至少一个存储地址;所述第一状态信息包括第一指针和第二指针,所述第一指针指向所述多个内存块中的第一内存块,所述第二指针指向所述多个内存块中的第二内存块;其中,在所述第一内存块和所述第二内存块不重合的情况下,所述第一内存块包括的存储地址、所述第二内存块包括的存储地址以及由所述第一内存块到所述第二内存块之间的内存块包括的存储地址为被占用的存储地址,由所述第二内存块到所述第一内存块之间的内存块包括的存储地址为未被占用的存储地址;在所述第一内存块和所述第二内存块重合的情况下,所述多个内存块包括的存储地址为未被占用的存储地址。9.根据权利要求7或8所述的计算设备,其特征在于,所述请求处理模块在修改所述第一状态信息时,具体用于:将所述第二指针指向的内存块修改为所述多个内存块中的第三内存块,所述第三内存
块包括所述目标存储地址。10.根据权利要求1至9任一所述的计算设备,其特征在于,所述请求处理模块在向所述目标存储地址对应的存储空间传递所述目标数据时,具体用于:通过直接存储器访问DMA的方式,将所述目标数据搬运到目标存储地址对应的存储空间。11.根据权利要求1至10所述的计算设备,其特征在于,所述请求处理模块还用于:在将所述目标数据传递至所述目标存储地址对应的存储空间之后,向所述目标设备发送指示信息,所述指示信息用于指示所述目标设备从所述目标存储地址对应的存储空间中获取所述目标数据。12.一种目标设备,其特征在于,所述目标设备与计算设备通信连接,所述目标设备包括数据处理模块,所述数据处理模块用于:获取指示信息,所述指示信息来自于所述计算设备,所述指示信息指示从BAR中获取数据,且所述数据用于传递至第一进程,其中所述BAR存储有为所述目标设备上运行的进程分配的存储地址,所述存储地址为所述目标设备上存储空间的地址,所述第一进程为所述目标设备上运行的进程;基于所述指示信息,通过访问所述BAR,获取所述第一进程对应的目标存储地址,并从所述目标存储地址对应的存储空间中获取所述目标数据;将所述目标数据传递至所述第一进程,以便所述第一进程...

【专利技术属性】
技术研发人员:李强高贵锦任玉鑫
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1