CN116932451A - 一种数据处理方法、主机及相关设备 - Google Patents

一种数据处理方法、主机及相关设备 Download PDF

Info

Publication number
CN116932451A
CN116932451A CN202210336383.4A CN202210336383A CN116932451A CN 116932451 A CN116932451 A CN 116932451A CN 202210336383 A CN202210336383 A CN 202210336383A CN 116932451 A CN116932451 A CN 116932451A
Authority
CN
China
Prior art keywords
host
chip
data
peripheral
dma
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.)
Pending
Application number
CN202210336383.4A
Other languages
English (en)
Inventor
刘鸿彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210336383.4A priority Critical patent/CN116932451A/zh
Priority to PCT/CN2023/085690 priority patent/WO2023186143A1/zh
Publication of CN116932451A publication Critical patent/CN116932451A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)

Abstract

一种数据处理方法、主机及相关设备,该方法应用于计算设备,该计算设备包括主机、内存和外设芯片,主机、内存和外设芯片通过总线耦合,该方法包括以下步骤:主机获取数据处理请求,数据处理请求包括下行数据,下行数据用于指示主机待向外设芯片发送的数据,主机将下行数据存储至内存,主机以直接内存访问DMA方式将下行数据拷贝至外设芯片,这样,外设芯片不再需要处理下行数据,而是交由主机进行处理,从而降低外设芯片的处理压力,提高外设芯片的处理带宽。

Description

一种数据处理方法、主机及相关设备
技术领域
本申请涉及计算机领域,尤其涉及一种数据处理方法、主机及相关设备。
背景技术
处理器与外设芯片之间通常需要大量的数据交换,通常情况下,处理器与外设芯片之间高速交换数据通过直接内存访问(direct memory access,DMA)技术来实现,具体是由外设芯片处理DMA写操作将外设芯片内存中的数据写入主机的内存中,外设芯片处理DMA读操作从主机的内存中读取数据至外设芯片内存中。
但是,外设芯片的上下行带宽通常受限于DMA数据带宽,举例来说,假设外设芯片的带宽为200MB/s,但是由于DMA数据带宽为100MB/s,那么该外设芯片的实际带宽只能达到100MB/s,使得外设芯片带宽非常受限,浪费芯片的处理能力。
发明内容
本申请供了一种数据处理方法、主机及相关设备,用于解决外设芯片带宽受限、芯片处理能力被浪费的问题。
第一方面,提供了一种数据处理方法,该方法应用于计算设备,计算设备包括主机、内存和外设芯片,主机、内存和外设芯片通过总线耦合,该方法包括以下步骤:主机获取数据处理请求,数据处理请求包括下行数据,下行数据用于指示主机待向外设芯片发送的数据,主机将下行数据存储至内存,主机以直接内存访问DMA方式将下行数据拷贝至外设芯片。
实施第一方面描述的方法,主机将数据处理请求中的下行数据存储至内存,然后通过DMA方式将下行数据拷贝至外设芯片,外设芯片不再需要处理下行数据,进而使得外设芯片的数据带宽可以完全被利用,外设芯片的数据处理带宽不再受到DMA带宽的限制。
具体实现中,主机可以包括至少一个通用处理器,例如CPU、NPU或者CPU和硬件芯片的组合。上述硬件芯片是专用集成电路(Application-Specific Integrated Circuit,ASIC)、编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD是复杂编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。
内存是主机的内存,内存具体可以是易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)、动态随机存储器(dynamic RAM,DRAM)、静态随机存储器(static RAM,SRAM)、同步动态随机存储器(synchronous dynamicRAM,SDRAM)、双倍速率同步动态随机存储器(doubledata rateRAM,DDR)、高速缓存(cache)等等,内存还可以包括上述种类的组合,本申请不对此进行限定。
外设芯片包括快捷外围部件互联标准PCIe设备芯片、存储卡芯片、网卡芯片、独立冗余磁盘阵列RAID芯片、加速卡芯片中的一种或者多种,其中,加速卡包括图像处理器GPU、处理器分散处理单元DPU、神经网络处理器NPU中的一种或者多种。
总线包括快捷外围部件互联标准PCIe总线、统一UB总线、计算机快速链接CXL总线、缓存一致互连协议CCIX总线、Z时代总线中的一种或者多种。
在一可能的实现方式中,本申请提供的数据处理方法可应用于单芯片场景和多芯片堆叠场景,其中,单芯片场景指的是单个外设芯片与主机通过总线耦合的场景,多芯片堆叠场景指的是多个外设芯片与主机通过总线耦合的场景称为多芯片堆叠场景。
应理解,在高并发、多数据流场景下,外设芯片在处理多个数据流时,多个数据流之间容易互相影响,因此在该类场景下,通过多芯片堆叠的方式将多个处理能力较弱的单芯片堆叠成一个设备或者模组,一个单芯片处理一个数据流,从而实现高并发、多数据流场景下的物理隔离。其中,多芯片堆叠场景中,多个外设芯片虽然设置于直通卡内,但是每个外设芯片均通过总线与主机进行耦合。
可选地,在多芯片堆叠场景下,计算设备包括直通卡,多个外设芯片设置于直通卡内,外设芯片以直通方式通过总线与主机耦合。
可选地,在多芯片堆叠场景下,计算设备包括带有PCIe交换机(switch,SW)的插卡,多个外设芯片设置于带有PCIe交换机的插卡内,外设芯片通过带有PCIe交换机的插卡的PCIe交换机与主机耦合,该插卡又可称为SW卡。
需要说明的,为了便于区分本申请的应用场景,下文统一将多个外设芯片设置于直通卡内,外设芯片以直通方式通过总线与主机耦合的场景称为直通场景,多个外设芯片设置于带有PCIe交换机的插卡内,外设芯片通过带有PCIe交换机的插卡的PCIe交换机与主机耦合的场景称为SW场景。
上述实现方式,在单个外设芯片的数据处理带宽不再受到DMA带宽的限制时,由多个外设芯片堆叠成的直通卡和SW卡的数据处理带宽也可以完全被利用,使得高并发、多数据流处理的带宽不再受限。
在一可能的实现方式中,外设芯片包括DMA模块,该方法还可包括以下步骤:外设芯片获取外设芯片的芯片内存中上行数据,上行数据用于指示外设芯片待向主机发送的数据,外设芯片以DMA方式将上行数据拷贝至内存。
举例来说,假设每个外设芯片的处理能力可以达到100MB/s,由于外设芯片处理DMA写操作,不需要处理DMA读操作,因此外设芯片的上行带宽为100MB/s,DMA读操作由主机100的RC 120来实现,因此外设芯片200的下行带宽为100MB/s,这样,不仅单芯片场景下外设芯片上行带宽和下行带宽都可以达到最大化,而且多芯片堆叠场景下,两个外设芯片200的上下行带宽都可达到100MB/s,芯片组的数据处理带宽可以达到理论值200MB/s,使得多芯片堆叠场景下外设芯片处理能力也可以得到最大化,高并发、多数据流处理的带宽不再受到DMA带宽的限制。
上述实现方式,外设芯片通过外设芯片内的DMA模块,将芯片内存中的上行数据以DMA方式拷贝至内存,下行数据交由主机的DMA模块实现,使得外设芯片不再需要处理下行数据,进而使得外设芯片的数据带宽可以完全被利用,外设芯片的数据处理带宽不再受到DMA带宽的限制。主机将数据处理请求中的下行数据存储至内存,然后通过DMA方式将下行数据拷贝至外设芯片,外设芯片不再需要处理下行数据,进而使得外设芯片的数据带宽可以完全被利用,外设芯片的数据处理带宽不再受到DMA带宽的限制。
在一可能的实现方式中,主机的根复合体(root complex,RC)支持DMA功能。具体地,主机的根复合体可包括DMA模块,该DMA模块可以是一种能够实现DMA功能的硬件模块,具体可包括DMA控制器、寄存器等等。其中,DMA模块可以是主机内部集成的DMA硬件单元,在一些实施例中,DMA模块也可以是于主机外部的一个逻辑电路,该逻辑电路可实现DMA功能,本申请不对此进行具体限定。该DMA模块的驱动程序可以是CPU厂商(不限于ARM、X86、天池等CPU类型)提供的开源内核设备驱动。
应理解,DMA是一种成熟的读写技术,当前的服务器无论何种架构都会配置有DMA硬件,本申请通过对服务器已有的DMA硬件进行驱动开发,将DMA硬件使能,结合硬件把DMA的地址空间配置映射,使其能够实现将内存中的下行数据DMA至芯片内存的功能,使得外设芯片不再需要处理下行数据,不再需要进行DMA读操作,从而降低外设芯片的处理压力,提高外设芯片的数据处理带宽。
上述实现方式,通过使能主机内原有的DMA模块,使其能够处理下行数据,从而降低外设芯片的处理压力,并且不需要额外部署其他硬件资源,通过对主机内的DMA模块驱动进行升级即可实现本申请提供的方案,方案可行性高,可复刻性高。
在一可能的实现方式中,主机获取数据处理请求之前,该方法还包括一下步骤:主机确定芯片内存的物理地址与内存的物理地址之间的映射关系,主机根据映射关系,以直接内存访问DMA方式将下行数据拷贝至外设芯片。
可选地,在主机获取数据处理请求之前,可通过对主机的DMA模块进行配置来确定芯片内存与主机的内存的地址之间的映射关系,配置过程可包括设备枚举、驱动初始化以及设备配置,其中,设备枚举指的是对与主机通过总线耦合的全部外设芯片进行设备枚举,获得每个外设芯片的拓扑信息。驱动初始化指的是对主机的DMA模块的驱动进行初始化,确定主机的DMA模块的通道信息。设备配置指的是对DMA模块进行地址配置,根据上述拓扑信息以及通道信息,确定芯片内存与内存的地址之间的映射关系。
其中,拓扑信息是外设芯片与主机通过总线耦合时生成的总线拓扑结构,拓扑信息用于描述外设芯片组成的设备系统的拓扑结构,具体可以是一个数据结构链表,比如PCI设备树。拓扑信息还可包括每个外设芯片的身份信息,比如外设芯片的设备号(decive_id)、厂家标识(vendor_id)、PCI设备的总线设备功能(bus device function,BDF)编码等等,本申请不作具体限定。通道信息可包括DMA模块的通道数量、每个通道所占用的内存空间信息、通道内的结构体赋值信息等等,本申请不作具体限定。
可选地,设备枚举过程可以如下:主机可通过深度优先遍历(depth firstsearch,DFS)算法,从主机的RC出发寻找与RC相连的外设芯片和桥(bridge),对寻找到的外设芯片和桥进行BDF编号的分配。然后,读取基础地址寄存器(base address register,BAR)空间,对BAR空间进行映射和访问测试,为每个寻找到的外设芯片和桥分配PCI资源,资源分配完毕后,获得上述拓扑信息,也就是PCI设备树。
具体实现中,在设备枚举过程之后,驱动初始化之前,RC可以在获得外设芯片的拓扑信息之后,通过设备扫描来确定每个外设芯片对应的驱动,举例来说,确定网卡对应的网卡驱动,声卡对应的声卡驱动等等,具体的,参考前述内容可知,外设芯片的拓扑信息可包括外设芯片的身份信息,通过将外设芯片的身份信息与驱动注册的身份信息进行匹配,从而确定每个外设芯片对应的驱动,举例来说,可以将外设芯片的vendor_id和decive_id与驱动注册的vendor_id和decive_id进行匹配,在二者均一致的情况下,确定外设芯片对应的驱动。应理解,由于外设芯片的种类数量不同,对应的驱动数量也不同,因此在获得外设芯片的拓扑信息之后,通过身份信息匹配的方式确定每个外设芯片对应的驱动,可以避免后续对驱动进行初始化时,由于驱动不匹配出现的初始化失败或者写入失败等问题。
可以理解的,RC对DMA模块进行配置之后,主机获取数据处理请求时,主机的DMA模块可以先申请数据通道,数据通道包括描述符,描述符包括源地址和目的地址,主机通过数据通道,以直接内存访问DMA方式将下行数据拷贝至外设芯片。具体可通过将DMA描述符搬运到DMA硬件的物理环,使能DMA模块根据该DMA描述符进行数据传输。
需要说明的,在上述多芯片堆叠场景下,若外设芯片配置于SW卡中,数据通道包括PCIe交换机扩展的数据通道。举例来说,若2个外设芯片配置于直通卡中,那么该直通卡的数据通道数量为2,若2个外设芯片配置于SW卡中,且该PCIe交换机可以将1个外设芯片的端点端口EP扩展为2个,那个该SW卡的数据通道数量为4,多扩展出的数据通道即为PCIe交换机扩展的数据通道,上述举例用于说明,本申请不作具体限定。
同理,外设芯片也可以对外设芯片上的DMA模块进行配置,使得DMA模块能够实现将芯片内存中的上行数据写入主机。外设芯片在对DMA模块进行配置时,可先确定芯片内存与内存的地址之间的映射关系,这样,当外设芯片处理上行数据时,DMA模块可根据存储的映射关系,将芯片内存中的上行数据以DMA的方式写入内存。其中,外设芯片对DMA模块进行配置的详细步骤流程可以参考前述内容中主机对主机内DMA模块进行配置的过程,这里不重复赘述。
上述实现方式,通过对服务器已有的DMA硬件进行驱动开发,将DMA硬件使能,结合硬件把DMA的地址空间配置映射,使其能够实现将内存中的下行数据写入至芯片内存的功能,使得外设芯片不再需要处理下行数据,不再需要进行DMA读操作,从而降低外设芯片的处理压力,提高外设芯片的数据处理带宽。
第二方面,提供了一种主机,该主机应用于计算设备,计算设备包括主机、内存和外设芯片,主机、内存和外设芯片通过总线耦合,主机包括:获取单元,用于获取数据处理请求,数据处理请求包括下行数据,下行数据用于指示主机待向外设芯片发送的数据,存储单元,用于主机将下行数据存储至内存,直接内存访问DMA单元,用于以直接内存访问DMA方式将下行数据拷贝至外设芯片。
实施第二方面描述的主机,该主机将数据处理请求中的下行数据存储至内存,然后通过DMA方式将下行数据拷贝至外设芯片,外设芯片不再需要处理下行数据,进而使得外设芯片的数据带宽可以完全被利用,外设芯片的数据处理带宽不再受到DMA带宽的限制。
在一可能的实现方式中,主机的根复合体支持DMA功能。
在一可能的实现方式中,主机包括确定单元,确定单元,用于在获取单元获取数据处理请求之前,确定芯片内存的物理地址与内存的物理地址之间的映射关系,DMA单元,用于根据映射关系,以直接内存访问DMA方式将下行数据拷贝至外设芯片。
在一可能的实现方式中,DMA单元,用于获取下行数据的源地址,根据映射关系确定源地址的目的地址,DMA单元,用于申请数据通道,数据通道包括描述符,描述符包括源地址和目的地址,DMA单元,用于通过数据通道,以直接内存访问DMA方式将下行数据拷贝至外设芯片。
在一可能的实现方式中,计算设备包括直通卡,多个外设芯片设置于直通卡内,外设芯片以直通方式通过总线与主机耦合。
在一可能的实现方式中,计算设备包括带有PCIe交换机的插卡,多个外设芯片设置于带有PCIe交换机的插卡内,外设芯片通过带有PCIe交换机的插卡的PCIe交换机与主机耦合。
在一可能的实现方式中,数据通道包括PCIe交换机扩展的数据通道。
在一可能的实现方式中,总线包括快捷外围部件互联标准PCIe总线、统一UB总线、计算机快速链接CXL总线、缓存一致互连协议CCIX总线、Z时代总线中的一种或者多种。
在一可能的实现方式中,外设芯片包括快捷外围部件互联标准PCIe设备芯片、存储卡芯片、网卡芯片、独立冗余磁盘阵列RAID芯片、加速卡芯片中的一种或者多种,其中,加速卡包括图像处理器GPU、处理器分散处理单元DPU、神经网络处理器NPU中的一种或者多种。
第三方面,提供了一种处理器,该处理器设置于计算设备,计算设备包括处理器、内存和外设芯片,处理器、内存和外设芯片通过总线耦合,处理器用于执行上述第一方面描述方法中主机的操作步骤。
第四方面,提供了一种计算设备,该计算设备包括主机、内存和外设芯片,主机、内存和外设芯片通过总线耦合,主机用于实现如第一方面描述方法中主机的操作步骤,外设芯片用于实现如第一方面描述方法中外设芯片的操作步骤。
第五方面,提供了一种可读存储介质,该可读存储介质中存储有指令,当其在主机上运行时,使得主机执行上述第一方面描述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1是本申请提供的一种数据处理系统的结构示意图;
图2是本申请提供的另一种数据处理系统的结构示意图;
图3是本申请提供的一种数据处理方法的步骤流程示意图;
图4是本申请提供的一种数据处理方法中DMA驱动初始化的步骤流程示意图;
图5是本申请提供的一种数据处理方法中设备配置的步骤流程示意图;
图6是本申请提供的一种数据处理方法在SW场景下的步骤流程示意图;
图7是本申请提供的一种主机的结构示意图。
具体实施方式
首先,对本申请涉及的“单芯片”和“多芯片堆叠”应用场景进行说明。
单芯片指的是处理器与单个外设芯片之间的数据交换场景,多芯片堆叠则指的是多个单芯片堆叠成一个设备或模组后,处理器与该设备或模组进行数据交换的场景。应理解,在高并发、多数据流场景下,外设芯片在处理多个数据流时,多个数据流之间容易互相影响,因此在该类场景下,通过多芯片堆叠的方式将多个处理能力较弱的单芯片堆叠成一个设备或者模组,一个单芯片处理一个数据流,从而实现高并发、多数据流场景下的物理隔离。
在单芯片和多芯片堆叠场景下,处理器与外设芯片之间需要大量的数据交换,通常情况下,处理器与外设芯片之间高速交换数据通过直接内存访问(direct memoryaccess,DMA)技术来实现,具体是由外设芯片处理DMA写操作将外设芯片内存中的数据写入主机的内存中,外设芯片处理DMA读操作从主机的内存中读取数据至外设芯片内存中。其中,DMA技术是一种高速的数据传输技术,通过DMA硬件实现处理器与外设芯片之间的数据交换,从而减少处理器的处理压力,提高数据传输的效率。
以PCIe芯片为例,主机100通过根复合体110(root complex,RC)与每个节点设备(end point,EP)的芯片(即上述外设芯片)通过总线耦合,其中,RC用于将处理器的访问事务转换为PCIe总线上的访问事务。应理解,PCIe总线以报文形式交换信息或传输数据,因此,RC负责根据CPU的访问事务产生对应的报文,将其传输给下游的外设芯片,同理,RC还负责接收下游外设芯片上报的报文,并根据报文内容将信息或数据转发给CPU。
但是,在单芯片场景下,外设芯片的上下行带宽通常受限于DMA数据带宽,举例来说,假设外设芯片的带宽为200MB/s,但是由于DMA数据带宽为100MB/s,那么该外设芯片的实际带宽只能达到100MB/s,使得外设芯片带宽非常受限,浪费芯片的处理能力。
在多芯片堆叠场景下,多个外设芯片堆叠后的上下行带宽也会受限于DMA数据带宽,使得每个外设芯片的数据处理能力无法被全部利用,导致外设芯片处理能力被浪费。举例来说,当多个外设芯片堆叠后,假设每个外设芯片的单芯片处理能力可以达到100MB/s,理论上两个外设芯片堆叠而成的PCIe芯片的处理能力可以达到200MB/s,但是,由于外设芯片需要进行DMA读和DMA写,所以外设芯片的处理能力需要进行频分,比如上行带宽为50MB/s,下行带宽为50MB/s,这样,两个外设芯片堆叠而成的PCIe芯片的处理能力最终可达到的数据带宽为上行带宽100MB/s,下行带宽100MB/s,相当于外设芯片在读数据时,只能使用一半的数据带宽,写数据时,也只能使用一半的数据带宽,浪费外设芯片的处理能力。
综上可知,由于处理器与外设芯片之间高速交换数据需要使用DMA技术,导致外设芯片的上下行带宽通常受限于DMA的数据带宽,导致单芯片和多芯片堆叠场景下,外设芯片的数据带宽无法被完全利用,浪费外设芯片的处理能力,外设芯片的上下行带宽低。
为了解决上述单芯片和多芯片堆叠场景下,外设芯片的上下行带宽低的问题,本申请提供了一种数据处理系统,该数据处理系统通过将下行数据交由主机的DMA模块进行处理,由主机的DMA模块将下行数据存储至内存,然后以DMA的方式将下行数据拷贝至外设芯片,外设芯片不需要处理下行数据,从而减轻外设芯片的处理压力,提高外设芯片的上下行带宽。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
如图1所示,图1是本申请提供的一种数据处理系统的结构示意图,该数据处理系统1000包括主机(host)100、外设芯片200、内存400以及芯片内存240,其中,主机100、外设芯片200、内存400以及芯片内存240之间通过总线300耦合,其中,外设芯片200的数量可以是一个或者多个。
数据处理系统1000可部署于计算设备,计算设备可以是物理服务器,比如X86、ARM服务器等,具体可以是单个物理服务器,也可以是服务器集群中的节点;计算设备也可以是其他具有存储功能的存储设备,例如存储阵列或存储服务器;计算设备还可以是边缘服务器,本申请不作具体限定。
主机100可以包括至少一个通用处理器,例如CPU、NPU或者CPU和硬件芯片的组合。上述硬件芯片是专用集成电路(Application-Specific Integrated Circuit,ASIC)、编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD是复杂编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。
外设芯片200可以是一个系统级芯片(system on chip,SoC),具体实现中,外设芯片200可以是主机100可通过总线300耦合的任何芯片,比如声卡、网卡(nic)、通用串行总线(universal serial bus,USB)卡、集成开发环境(interated development environment,IDE)接口卡、磁盘阵列(redundant arrays of independent disks,RAID)卡、视频采集卡等等,本申请不作具体限定。
需要说明的,在单芯片场景下,与主机100通过总线耦合的外设芯片数量可以是1个。在多芯片堆叠场景下,与主机100通过总线耦合的外设芯片数量可以是多个。举例来说,在多芯片堆叠场景下,若外设芯片为PCIe设备芯片,那么多个外设芯片可堆叠组成一张PCIe卡,若外设芯片为网卡芯片,那么多个外设芯片可堆叠组成堆叠网卡,若外设芯片为磁盘芯片,那么多个外设芯片可堆叠组成磁盘阵列(redundant arrays of independentdisks,RAID),若外设芯片为处理器芯片,比如中央处理器(central processing unit,CPU)、图像处理器(graphics processing unit,GPU)、处理器分散处理单元(dataprocessing unit,DPU)、神经网络处理器(neural-network processing unit,NPU)等专用处理器芯片,那么多个外设芯片可堆叠组成加速组件,主机100可以使用处理器处理主业务系统,使用该加速组件处理其他系统,比如神经网络训练系统,图像渲染系统等,本申请不作具体限定。
可选地,在多芯片堆叠场景下,一个或者多个外设芯片200可设置于直通卡内,该外设芯片以直通方式通过总线300与主机100耦合,以图1为例,外设芯片1和外设芯片2可设置于直通卡内,外设芯片1通过总线与主机100耦合,外设芯片2通过总线与主机100耦合,直通卡可以是图1中虚线框选出的部分,该种组合方式在下文中称为“直通场景”。
内存400是主机100的内存,内存400具体可以是易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM)、动态随机存储器(dynamicRAM,DRAM)、静态随机存储器(static RAM,SRAM)、同步动态随机存储器(synchronousdynamicRAM,SDRAM)、双倍速率同步动态随机存储器(doubledata rateRAM,DDR)、高速缓存(cache)等等,内存400还可以包括上述种类的组合,本申请不对此进行限定。
芯片内存240是外设芯片200的内存,可以是外设芯片接口插的内存条或者内存颗粒,具体可以是易失性存储器,例如RAM、DRAM、SRAM、SDRAM、DDR、cache等等,芯片内存240还可以包括上述种类的组合,本申请不对此进行限定。
总线300可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)总线、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)总线、Z世代(GenZ)总线等,本申请不作具体限定。
需要说明的,为了使本申请能够被更好地理解,下文将统一以芯片200为PCIe芯片、总线300为PCIe总线为例对本申请的方案进行描述。
进一步地,主机100和外设芯片200可进一步划分为多个单元模块,图1是一种示例性划分方式,如图1所示,主机100可包括内存控制器110和RC 120,其中,内存控制器110和RC 120通过系统总线130耦合,外设芯片200可包括节点设备(end point,EP)端口210和外设芯片内存控制器220,其中,EP 210和外设芯片内存控制器220之间通过系统总线230耦合,其中,系统总线230还可以与芯片内存240耦合。并且,主机100和外设芯片200还可包括更多的单元模块,比如主机100还可包括通信接口、电源等等,外设芯片200还可包括通信接口、电源等等,本申请不作具体限定。
内存控制器110和外设芯片内存控制器220可以是具有处理功能的硬件芯片,上述硬件芯片是专用集成电路(Application-Specific Integrated Circuit,ASIC)、编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD是复杂编程逻辑器件(ComplexProgrammable Logic Device,CPLD)、现场编程逻辑门阵列(Field-Programmable GateArray,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。内存控制器110可以执行各种类型的数字存储指令,例如存储在内存400中的软件或者固件程序,它能使主机100提供较宽的多种服务。
系统总线130和系统总线230可以是PCIe总线、EISA总线、UB总线、CXL总线、CCIX总线、GenZ总线等,本申请不作具体限定。
RC 120通过总线300与外设芯片200的EP 210连接。其中,RC 120用于将主机100的访问事务转换为PCIe总线上的访问事务。应理解,PCIe总线以报文形式交换信息或传输数据,因此,RC 120负责根据CPU的访问事务产生对应的报文,或者,对接收到的报文进行处理,将报文内容将信息或数据转发给主机100。
在本申请实施例中,主机100可获取第一数据请求,该第一数据请求包括下行数据,该下行数据用于指示主机100待向外设芯片200发送的数据,主机100将下行数据存储至内存400中,然后以DMA方式将下行数据拷贝至外设芯片200。同理,外设芯片200可获取芯片内存240中的上行数据,该上行数据用于指示外设芯片200待向主机100发送的数据,然后以DMA方式将上行数据拷贝至主机100的内存400中。
具体实现中,主机100以DMA方式将下行数据拷贝至外设芯片200时,可以先将拷贝好的下行数据通过DMA技术发送至外设芯片内存控制器220,再由外设芯片内存控制器220将下行数据存储至芯片内存240中。同理,外设芯片200以DMA方式将上行数据拷贝至主机100时,可以先将拷贝好的上行数据通过DMA技术发送至内存控制器110,再由内存控制器110将上行数据存储至内存400中。
可以理解的,本申请提供的方案中,内存400中的下行数据不再由外设芯片200进行DMA读取,而是由主机100通过DMA技术写入芯片内存240中,这样,外设芯片200不再处理DMA读操作,不仅可以减少外设芯片200的处理压力,而且外设芯片200的数据处理带宽不需要进行频分,使得外设芯片200的数据处理带宽得以提高。
举例来说,假设图1中每个外设芯片200的单芯片处理能力可以达到100MB/s,由于外设芯片200只需要处理DMA写操作,不需要处理DMA读操作,换句话说,外设芯片200只需要实现将芯片内存240中的上行数据通过DMA写入主机100的内存400中,因此外设芯片的上行带宽为100MB/s,DMA读操作由主机100的RC 120来实现,因此外设芯片200的下行带宽为100MB/s,这样,不仅单芯片场景下外设芯片上行带宽和下行带宽都可以达到最大化,而且多芯片堆叠场景下,两个外设芯片200的上下行带宽都可达到100MB/s,芯片组的数据处理带宽可以达到理论值200MB/s,使得多芯片堆叠场景下外设芯片处理能力也可以得到最大化,高并发、多数据流处理的带宽不再受到DMA带宽的限制。
具体实现中,RC 120可包括DMA模块121,主机100可通过该DMA模块121将下行数据拷贝至外设芯片。其中,DMA模块121可以是一种能够实现主机100的DMA功能的硬件模块,具体可包括DMA控制器、寄存器等等,通过DMA模块121实现将内存400中的数据写入芯片内存240的功能。其中,DMA模块121可以是RC 120在通过DMA技术将内存400中的数据写入芯片内存240之前安装的,该DMA模块121的驱动程序可以是CPU厂商(不限于ARM、X86、天池等CPU类型)提供的开源内核设备驱动。主机可以对DMA模块121进行配置,使得DMA模块121能够实现将内存400中的下行数据写入至芯片内存240中。
需要说明的,DMA模块121可以是如图1所示的主机100内部集成的DMA硬件单元,在一些实施例中,DMA模块121也可以部署于主机100外部,比如主机100是CPU芯片,DMA模块121可以是CPU内部集成的DMA硬件单元,也可以是CPU外部的一个逻辑电路,该逻辑电路可实现DMA功能,本申请不对此进行具体限定。
应理解,DMA是一种成熟的读写技术,当前的服务器无论何种架构都会配置有DMA硬件,本申请通过对服务器已有的DMA硬件进行驱动开发,将DMA硬件使能,结合硬件把DMA的地址空间配置映射,使其能够实现将内存400中的下行数据写入至芯片内存240的功能,使得外设芯片200不再需要处理下行数据,不再需要进行DMA读操作,从而降低外设芯片200的处理压力,提高外设芯片200的数据处理带宽。
在一实施例中,RC 120在对DMA模块121进行配置时,确定芯片内存240与内存400的地址之间的映射关系,这样,当RC 120获取数据处理请求时,DMA模块121可根据存储的映射关系,将内存400中的下行数据以DMA的方式写入外设芯片200的芯片内存240中。
可选地,RC 120可通过对主机的DMA模块121进行配置来确定芯片内存240与主机的内存400的地址之间的映射关系,配置过程可包括设备枚举、驱动初始化以及设备配置,其中,设备枚举指的是对外设芯片200进行设备枚举,获得每个外设芯片200的拓扑信息。驱动初始化指的是对主机100的DMA模块121的驱动进行初始化,确定主机100的DMA模块121的通道信息。设备配置指的是对DMA模块121进行地址配置,根据上述拓扑信息以及通道信息,确定芯片内存与内存的地址之间的映射关系。
其中,拓扑信息是外设芯片200与主机100通过总线耦合时生成的总线拓扑结构,拓扑信息用于描述外设芯片200组成的设备系统的拓扑结构,具体可以是一个数据结构链表,比如PCI设备树。拓扑信息还可包括每个外设芯片200的身份信息,比如外设芯片200的设备号(decive_id)、厂家标识(vendor_id)、PCI设备的总线设备功能(bus devicefunction,BDF)编码等等,本申请不作具体限定。通道信息可包括DMA模块121的通道数量、每个通道所占用的内存空间信息、通道内的结构体赋值信息等等,本申请不作具体限定。
可选地,设备枚举过程可以如下:RC 120可通过深度优先遍历(depth firstsearch,DFS)算法,从RC 120出发寻找与RC 120相连的外设芯片200和桥(bridge),对寻找到的外设芯片200和桥进行BDF编号的分配。然后,读取基础地址寄存器(base addressregister,BAR)空间,对BAR空间进行映射和访问测试,为每个寻找到的外设芯片200和桥分配PCI资源,资源分配完毕后,获得上述拓扑信息,也就是PCI设备树。
具体实现中,在设备枚举过程之后,驱动初始化之前,RC 120可以在获得外设芯片200的拓扑信息之后,通过设备扫描来确定每个外设芯片200对应的驱动,举例来说,确定网卡对应的网卡驱动,声卡对应的声卡驱动等等,具体的,参考前述内容可知,外设芯片200的拓扑信息可包括外设芯片200的身份信息,通过将外设芯片200的身份信息与驱动注册的身份信息进行匹配,从而确定每个外设芯片200对应的驱动,举例来说,可以将外设芯片200的vendor_id和decive_id与驱动注册的vendor_id和decive_id进行匹配,在二者均一致的情况下,确定外设芯片200对应的驱动。应理解,由于外设芯片200的种类数量不同,对应的驱动数量也不同,因此在获得外设芯片200的拓扑信息之后,通过身份信息匹配的方式确定每个外设芯片200对应的驱动,可以避免后续对驱动进行初始化时,由于驱动不匹配出现的初始化失败或者写入失败等问题。
在一可能的实现方式中,RC 120对DMA模块121进行配置之后,主机100获取到数据处理请求时,DMA模块121可以先申请DMA通道,并根据上述映射关系为DMA通道配置DMA描述符,该DMA描述符包括数据的源地址和目的地址,然后将DMA描述符搬运到DMA硬件的物理环,使能DMA模块121根据该DMA描述符进行数据传输。
需要说明的,如果主机100中的DMA模块121数量为多个,那么RC 120在对多个DMA模块121按照上述过程进行配置时,可以确定每个应用对应的DMA模块,当RC 120发起数据写入请求时,可以先确定应用对应的DMA模块,然后使用该DMA模块申请DMA通道,这里不重复展开赘述。
同理,外设芯片200可包括DMA模块211,外设芯片200可获取芯片内存240中的上行数据,该上行数据用于指示外设芯片待向主机100发送的数据,然后以DMA方式将上行数据拷贝至内存400。
具体实现中,外设芯片200也可以对DMA模块211进行配置,使得DMA模块211能够实现将芯片内存240中的上行数据写入主机100的内存400中。外设芯片200在对DMA模块211进行配置时,可先确定芯片内存240与内存400的地址之间的映射关系,这样,当外设芯片200发起数据写入请求时,DMA模块211可根据存储的映射关系,将芯片内存240中的数据以DMA的方式写入内存400中。其中,外设芯片200对DMA模块211进行配置的详细步骤流程可以参考前述内容中,RC 120对DMA模块121进行配置的过程,这里不重复赘述。
在一实施例中,该数据处理系统还可以包括所在的计算设备包括带有PCIe交换机的插卡,上述一个或者多个外设芯片200可以设置于带有PCIe交换机(switch,SW)的插卡内,该外设芯片200通过带有上述PCIe交换机的插卡的PCIe交换机与主机耦合,该应用场景可称为SW场景。
示例性地,如图2所示,图2是本申请提供的另一种数据处理系统1001,其中图2是上述PCIe交换机场景(简称SW场景)下的数据处理系统1001,图1是直通场景下的数据处理系统1000,数据处理系统1001包括主机100、内存400和PCIe交换机510。
其中,该PCIe交换机510带有插卡,一个或者多个外设芯片200可以设置于该PCIe交换机510的插卡内,该外设芯片200通过PCIe交换机510与主机100耦合,该插卡可以称为SW卡,例如图2所示的SW卡500,需要说明的,图2所示的例子中2个外设芯片200通过PCIe交换机510与主机100耦合,具体实现中,还可以有更多或者更少的外设芯片200,本申请不对外设芯片的数量进行具体限定。
PCIe交换机510用于提供扩展或聚合能力,允许更多的外设芯片200连接至主机的一个PCIe接口,主机100可以与更多的外设芯片200通过总线耦合,并且,每个外设芯片200可以有更多的数据通道,从而提高多芯片堆叠场景下堆叠卡的数据处理带宽。例如图1所示的直通场景下只有2个EP210与主机100通过总线耦合,在图2所示的SW场景下可以有4个EP210与主机通过PCIe交换机耦合,使得整个数据处理系统1001的带宽更高。
在本申请实施例中,主机100通过RC 120对DMA模块121进行配置后,主机100可通过DMA模块121将内存400中的下行数据通过DMA技术写入外设芯片200的芯片内存240中,外设芯片200对DMA模块211进行配置后,外设芯片200可通过DMA模块211将芯片内存240中的上行数据通过DMA技术写入主机的内存400中。具体实现方式可参考图1实施例这里不重复赘述。
具体实现中,主机100可以先申请数据通道,该数据通道可以包括描述符,该描述符携带有下行数据的源地址和目的地址,主机100可通过该数据通道以DMA方式将下行数据拷贝至外设芯片200,其中,上述数据通道可包括PCIe交换机510扩展出的数据通道。
需要说明的,图1中的PCIe交换机510扩展了1个DMA数据通道,在一些实施例中,PCIe交换机510还可以扩展出更多的DMA数据通道以供更多的外设芯片200使用,并且,图1中的外设芯片200中的每个EP 210中部署有1个DMA模块211,具体实现中,外设芯片200中的多个EP 210可以共用1个DMA模块211,也可以一个EP 210中存在多个DMA模块211,本申请不作具体限定。
可以理解的,若不使用本申请提供的方案,PCIe交换机需要部署DMA读和DMA写功能,PCIe交换机对上行数据和下行数据进行处理,使得PCIe交换机需要较高的DMA处理能力,并且需要适配主机100和外设芯片200的处理能力。使用本申请提供的技术方案,本申请将下行数据的处理交由主机100的DMA模块121处理,上行数据交由外设芯片200的DMA模块211处理,由于PCIe交换机510不需要进行DMA读写操作,PCIe交换机510硬件的DMA需求降低,甚至可以没有DMA的功能,只需要提供接口扩展功能即可,使得用户在选择PCIe交换机510时,可以不需要考虑PCIe交换机510的处理能力,PCIe交换机510可选范围增加,同时,开发人员也不需要为PCIe交换机510单独开发和维护DMA驱动代码,PCIe交换机510的开发维护成本降低。
综上可知,本申请提供的数据处理系统,主机将数据处理请求中的下行数据存储至内存,然后通过DMA模块以DMA方式将下行数据拷贝至外设芯片,外设芯片获取芯片内存中的上行数据,以DMA方式将上行数据拷贝至主机内存,从而使得外设芯片全部带宽都可用于处理上行数据,不再需要处理下行数据,下行数据交由主机的DMA模块进行处理,不仅使得单芯片场景下,外设芯片的数据带宽可以完全被利用,单个外设芯片的数据处理带宽不再受到DMA带宽的限制,在多芯片堆叠场景下,比如直通卡和SW卡的数据处理带宽也可以完全被利用,使得高并发、多数据流处理的带宽不再受限。
图3是本申请提供的一种数据处理方法,该方法可应用于图1或图2所示的数据处理系统1000以及数据处理系统1001,该数据处理系统1000或数据处理系统1001可部署于计算设备上,计算设备可包括主机100、内存400和外设芯片200,如图3所示,该方法可包括以下步骤:
步骤S310:主机100获取数据处理请求,该数据处理请求包括下行数据,该下行数据用于指示主机100待向外设芯片200发送的数据。该步骤可以由图1或图2中的内存控制器110实现。
步骤S320:主机100将下行数据存储至内存400。该步骤可以由图1或图2中的内存控制器110实现。
步骤S330:主机100以直接内存访问DMA方式将下行数据拷贝至外设芯片200。该步骤可以由图1或图2中的DMA 121模块实现。
在一实施例中,主机100的根复合体RC 120支持DMA功能,主机100通过DMA技术将数据写入外设芯片200中,其中,DMA技术的描述可参考前述图1和图2实施例中的描述,这里不重复赘述。可以理解的,主机100以直接内存访问DMA方式将下行数据拷贝至外设芯片200,使得外设芯片200需要读取主机的内存400中的数据时,不再需要进行DMA读操作,从而降低外设芯片200的处理压力,提高外设芯片200的数据处理带宽。
在一实施例中,主机100与外设芯片200通过总线300耦合,其中,总线300包括快捷外围部件互联标准PCIe总线、统一UB总线、计算机快速链接CXL总线、缓存一致互连协议CCIX总线、Z时代总线中的一种或者多种。外设芯片包括快捷外围部件互联标准PCIe设备芯片、存储卡芯片、网卡芯片、独立冗余磁盘阵列RAID芯片、加速卡芯片中的一种或者多种,其中,加速卡包括图像处理器GPU、处理器分散处理单元DPU、神经网络处理器NPU中的一种或者多种。主机100、总线300以及外设芯片200的形态描述可参考图1和图2实施例中的描述,这里不再重复赘述。
在一实施例中,外设芯片200包括DMA模块211,外设芯片200可获取芯片内存240中的上行数据,该上行数据用于指示外设芯片200向主机100发送的数据,通过DMA模块211亿DMA方式将上述上行数据拷贝至内存400中。
在一实施例中,主机100将主机的内存400中的下行数据以直接内存访问DMA方式将下行数据拷贝至外设芯片200之前,还可包括以下步骤:主机100确定芯片内存的物理地址与主机的内存地址之间的映射关系。这样,主机可根据该映射关系,将主机的内存中的数据写入外设芯片的芯片内存中。
具体实现中,主机可包括RC,RC通过总线与芯片的EP端口连接。其中,RC用于将主机的访问事务转换为PCIe总线上的访问事务。应理解,PCIe总线以报文形式交换信息或传输数据,因此,RC负责根据CPU的访问事务产生对应的报文,或者,对接收到的报文进行处理,将报文内容将信息或数据转发给处理器。在本申请实施例中,RC可以用于确定芯片内存与主机的内存的地址之间的映射关系。
可选地,RC可通过对主机的DMA模块进行配置来确定芯片内存与主机的内存的地址之间的映射关系,配置过程可包括设备枚举、驱动初始化以及设备配置,其中,设备枚举指的是对外设芯片进行设备枚举,获得每个外设芯片的拓扑信息。驱动初始化指的是对主机的DMA模块的驱动进行初始化,确定主机的DMA模块的通道信息。设备配置指的是对DMA模块进行地址配置,根据上述拓扑信息以及通道信息,确定芯片内存与内存的地址之间的映射关系。
其中,拓扑信息是多个外设芯片与主机通过总线耦合时生成的总线拓扑结构,拓扑信息用于描述多个外设芯片组成的设备系统的拓扑结构,具体可以是一个数据结构链表,比如PCI设备树。拓扑信息还可包括每个外设芯片的身份信息,比如外设芯片的decive_id、vendor_id、BDF编码等等,本申请不作具体限定。通道信息可包括DMA模块的通道数量、每个通道所占用的内存空间信息、通道内的结构体赋值信息等等,本申请不作具体限定。
具体实现中,RC对外设芯片进行设备枚举,获得每个外设芯片的拓扑信息的具体流程可以如下:主机的RC可通过DFS算法,从RC出发寻找与RC相连的外设芯片和桥(bridge),对寻找到的外设芯片和桥进行BDF编号的分配。然后,读取BAR空间,对BAR空间进行映射和访问测试,为每个寻找到的外设芯片和桥分配PCI资源,资源分配完毕后,获得上述拓扑信息,也就是PCI设备树。
具体实现中,RC对外设芯片进行设备枚举之后,执行驱动初始化之前,通过设备扫描来确定每个外设芯片200对应的驱动,举例来说,确定网卡对应的网卡驱动,声卡对应的声卡驱动等等,具体的,参考前述内容可知,外设芯片200的拓扑信息可包括外设芯片200的身份信息,通过将外设芯片200的身份信息与驱动注册的身份信息进行匹配,从而确定每个外设芯片200对应的驱动,举例来说,可以将外设芯片200的vendor_id和decive_id与驱动注册的vendor_id和decive_id进行匹配,在二者均一致的情况下,确定外设芯片200对应的驱动。应理解,由于外设芯片200的种类数量不同,对应的驱动数量也不同,因此在获得外设芯片200的拓扑信息之后,通过身份信息匹配的方式确定每个外设芯片200对应的驱动,可以避免后续对驱动进行初始化时,由于驱动不匹配出现的初始化失败或者写入失败等问题。
应理解,RC对外设芯片进行设备枚举、设备扫描之后,还需要对DMA模块进行驱动初始化,如图4所示,图4是本申请提供的一种DMA驱动初始化的步骤流程示意图,RC根据每个设备的拓扑信息,对主机的DMA模块的驱动进行初始化,确定主机的DMA模块的通道信息的具体流程可以如下:
S410:获取DMA模块的身份信息。
这里的DMA模块可以是图1和图2实施例中的DMA模块121。
具体实现中,DMA模块的身份信息可以是DMA模块的BDF号,以便后续处理过程中便于对DMA模块进行定位、统计、采集状态等。具体实现中,DMA模块的BDF号可以记录于日志空间中。应理解,步骤S410之前的设备枚举过程不会对DMA模块进行枚举,因为DMA模块是主机内的DMA硬件设备,因此需要通过步骤S410来获取DMA模块的身份信息。
可选地,获取DMA模块身份信息之后,可以设置DMA驱动数据指针为私有设备指针,应理解,DMA驱动初始化时的设备指针为公共指针,将DMA模块的指针设置为私有后,可以使得DMA模块能够专门供给步骤S410之前设备枚举获得的多个外设芯片使用。
S420:对DMA模块进行PCIe配置。
具体实现中,可通过DMA驱动代码中的设置(set)函数或者内核的系统函数,对DMA模块进行PCIe配置,具体的,配置内容包括对DMA模块的空间进行内存地址的配置以及其他PCIe相关的配置,本申请不作具体限定。
S430:获取DMA模块的通道信息。
具体实现中,通道信息可包括DMA模块的可用通道数量,然后为每个通道申请对应的内存空间,举例来说,若每个通道的结构体大小为A,通道数量为B,那么在步骤S430可申请A×B大小的内存空间。应理解,上述举例用于说明,本申请不作具体限定。
可选地,通道信息还可包括每个通道结构体的赋值,简单来说,在为每个通道申请好对应的内存后,可以对通道里的结构体赋予有效的值,进行赋值初始化操作,这里的值可以根据实际业务环境缺,本申请不作具体限定。
S440:可以对DMA模块进行开关使能,使其DMA功能开启,具体可包括对DMA模块进行状态配置、收发方式配置等等,还可包括其他DMA相关功能的配置,这里不一一举例说明。
需要说明的,主机内的DMA模块数量通常为一个或者多个,在DMA模块数量为多个时,可以对每个DMA模块按照上述步骤S410~步骤S430及其可选步骤的描述进行配置,这里不重复赘述。
作为一种可能的实现方式,RC对外设芯片进行设备枚举、设备扫描、驱动初始化之后,还需要进行设备配置,如图5所示,图5是本申请提供的一种设备配置的步骤流程示意图,如图5所示,对DMA模块进行地址配置,根据上述拓扑信息以及通道信息,确定芯片内存与内存的地址之间的映射关系的具体步骤流程可以如下:
步骤S510:获取每个外设芯片的物理地址信息和主机的内存地址信息。
具体实现中,物理地址信息可以是外设芯片存储数据的物理起始地址,主机的内存地址信息指的是前述设备枚举过程中,为每个外设芯片分配的存储空间,可包括主机的内存的起始地址及长度,主机的内存地址信息具体可以是每个外设芯片对应的BAR2地址和长度。
步骤S520:获取每个外设芯片对应队列的队列信息。
应理解,图5实施例所描述的例子中,数据以收发队列的方式进行数据传输,因此步骤S520获取每个队列的队列信息,在其他实现方式中,数据还可以以其他方式进行数据传输,比如报文等等,步骤S520可以根据数据的传输方式获取对应的信息,这里不一一举例说明。
具体实现中,外设芯片对应队列的队列信息科包括队列的收发指针、队列资源信息、队列对应的内存空间信息等等,本申请不作具体限定。可选地,步骤S520还可以将每个队列与主机线程进行关联,简单来说,如果线程A与队列A进行了关联,那么线程A处理的数据A可以通过队列A进行数据的发送。
步骤S530:根据通道信息,确定每个队列对应的通道。
具体实现中,每个通道和一组收发队列关联,和一组收发线程绑定,每个外设芯片可以与一个收发线程对应,从而确定芯片内存与内存的地址之间的映射关系。
在一实施例中,主机将主机的内存中的数据写入外设芯片内存时,可根据内存数据的源地址,结合映射关系确定源地址的目的地址,然后申请数据通道,该数据通道包括描述符,该描述符包括上述源地址和目的地址,这样,主机通过该数据通道,可将数据写入外设芯片的芯片内存中。具体实现中,上述数据通道可以是DMA数据通道,上述描述符可以是DMA描述符。
具体实现中,如果主机内的DMA模块数量为多个时,主机可先通过DMA驱动确定本次数据写入需要使用的DMA设备,然后将数据的源地址和目的地址写入DMA描述符,再通过描述符申请DMA通道,将该DMA通道与数据所对应的收发线程进行关联。步骤S510~步骤S530处数据已经与收发线程和收发队列进行了关联,此时再将其与DMA通道进行关联,可以保证DMA模块使用该DMA通道传输该数据的收发队列。
同理,外设芯片也可以对外设芯片的DMA模块进行配置,使得外设芯片的DMA模块能够实现将芯片内存中的数据写入主机的内存中。外设芯片在对外设芯片的DMA模块进行配置时,可先确定芯片内存与内存的地址之间的映射关系,这样,当外设芯片发起数据写入请求时,外设芯片的DMA模块可根据存储的映射关系,将芯片内存中的数据以DMA的方式写入内存中。其中,外设芯片对DMA模块进行配置的详细步骤流程可以参考前述内容中,RC120对DMA模块121进行配置的过程,这里不重复赘述。
在一实施例中,上述计算设备还可包括直通卡,多个外设芯片200设置于直通卡内,外设芯片200以直通方式通过总线300与主机100耦合,例如图1所示的数据处理系统即为直通场景下的数据处理系统。
在一实施例中,计算设备包括带有PCIe交换机的插卡,多个外设芯片设置于带有PCIe交换机的插卡内,外设芯片通过带有PCIe交换机的插卡的PCIe交换机与主机耦合。其中,PCIe交换机的描述可参考图2实施例中关于PCIe交换机510的描述,这里不重复赘述。
具体实现中,主机100通过RC 120对DMA模块121进行配置后,主机100可通过DMA模块121将内存400中的下行数据通过DMA技术写入外设芯片200的芯片内存240中,外设芯片200对DMA模块211进行配置后,外设芯片200可通过DMA模块211将芯片内存240中的上行数据通过DMA技术写入主机的内存400中。具体实现方式可参考图1实施例这里不重复赘述。
可选地,主机100可以先申请数据通道,该数据通道可以包括描述符,该描述符携带有下行数据的源地址和目的地址,主机100可通过该数据通道以DMA方式将下行数据拷贝至外设芯片200,其中,上述数据通道可包括PCIe交换机510扩展出的数据通道。
为了使本申请能够被更好地理解,如图6所示,图6是本申请提供的一种SW场景下数据处理方法的步骤流程示意图,其中,图6所示的步骤流程是图2所示的数据处理系统中,主机100与外设芯片1中的EP11进行数据交互时的步骤流程示意图。如图6所示,该方法可包括以下步骤:
步骤1.内存控制器110获取数据处理请求,该数据处理请求包括下行数据,该下行数据用于指示主机100待向外设芯片200发送的数据,该步骤具体可参考图3实施例中的步骤S310,这里不重复赘述。
步骤2.内存控制器110将下行数据存储至内存400。
步骤3.内存控制器110根据下行数据的源地址,结合映射关系确定下行数据源地址的目的地址,向DMA模块121发送数据通道申请信息,该申请信息包括下行数据的源地址和目的地址。
步骤4.DMA模块121申请数据通道,通过该数据通道,以DMA方式将下行数据拷贝至外设芯片内存控制器220。该数据通道包括描述符,该描述符包括上述下行数据的源地址和目的地址。
具体实现中,上述数据通道可以是DMA数据通道,上述描述符可以是DMA描述符。在图2所示的SW场景中,步骤4申请的数据通道可以是PCIe交换机510扩展的数据通道。
步骤5.外设芯片内存控制器220将下行数据存储于芯片内存1中。
上述步骤1~步骤5是关于下行数据的处理过程,下面结合步骤6~步骤9对上行数据的处理过程进行解释说明。
步骤6.外设芯片内存控制器220获取芯片内存240中的上行数据,该上行数据用于指示外设芯片200向主机100发送的数据。
步骤7.外设芯片内存控制器220向DMA模块12发送数据通道申请的信息,该申请信息包括上行数据的源地址和目的地址。
步骤8.DMA模块12申请数据通道,通过该数据通道,以DMA方式将上述上行数据拷贝至内存控制器110,该数据通道包括描述符,该描述符包括上述上行数据的源地址和目的地址。
步骤9.内存控制器110将上行数据存储于内存400中。
可以理解的,本申请将下行数据的处理交由主机100的DMA模块121处理,上行数据交由外设芯片200的DMA模块211处理,由于PCIe交换机510不需要进行DMA读写操作,PCIe交换机510硬件的DMA需求降低,甚至可以没有DMA的功能,只需要提供接口扩展功能即可,使得用户在选择PCIe交换机510时,可以不需要考虑PCIe交换机510的处理能力,PCIe交换机510可选范围增加,同时,开发人员也不需要为PCIe交换机510单独开发和维护DMA驱动代码,PCIe交换机510的开发维护成本降低。
需要说明的,外设芯片1中的其他EP比如EP12与主机100进行数据交互时的步骤流程、以及其他外设芯片比如外设芯片2与主机100进行数据交互式时的步骤流程与其图6中的步骤1~步骤9类似,这里不再重复展开赘述。直通场景下的数据处理方法与图6所示的类似,但是直通场景下主机100的DMA模块121以及外设芯片200的DMA模块211所使用的数据通道不包括PCIe交换机510扩展的数据通道,这里不再重复举例说明。
综上可知,本申请提供的数据处理系统,主机将数据处理请求中的下行数据存储至内存,然后通过DMA模块以DMA方式将下行数据拷贝至外设芯片,外设芯片获取芯片内存中的上行数据,以DMA方式将上行数据拷贝至主机内存,从而使得外设芯片全部带宽都可用于处理上行数据,不再需要处理下行数据,下行数据交由主机的DMA模块进行处理,不仅使得单芯片场景下,外设芯片的数据带宽可以完全被利用,单个外设芯片的数据处理带宽不再受到DMA带宽的限制,在多芯片堆叠场景下,比如直通卡和SW卡的数据处理带宽也可以完全被利用,使得高并发、多数据流处理的带宽不再受限。
上文结合图1至图6描述了本申请提供的一种数据处理方法,接下来,结合图7、图1以及图2介绍本申请所提供的一种主机和数据处理系统。
图7是本申请提供的一种主机的结构示意图,该主机可以是图1~图6中的主机100,该主机可应用于图1或图2所示的数据处理系统中,该数据处理系统可部署于计算设备,该计算设备包括主机100、内存400以及外设芯片200,主机100、内存400和外设芯片200通过总线300耦合。如图7所示,该主机100可包括获取单元710、存储单元720、DMA单元730和确定单元740。
获取单元710,用于获取数据处理请求,数据处理请求包括下行数据,下行数据用于指示主机待向外设芯片发送的数据;存储单元720,用于主机将下行数据存储至内存;DMA单元730,用于以直接内存访问DMA方式将下行数据拷贝至外设芯片。
应理解的是,本发明本申请实施例的主机100可以通过中央处理单元(centralprocessing unit,CPU)实现,也可以通过专用集成电路(application-specificintegrated circuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。也可以通过软件实现图3至图5所示的数据处理方法时,主机100及其各个模块也可以为软件模块。
在一实施例中,主机100的根复合体支持DMA功能。
在一实施例中,主机包括确定单元740,确定单元740,用于在获取单元710获取数据处理请求之前,确定芯片内存的物理地址与内存的物理地址之间的映射关系;DMA单元730,用于根据映射关系,以直接内存访问DMA方式将下行数据拷贝至外设芯片。
在一实施例中,DMA单元730,用于获取下行数据的源地址,根据映射关系确定源地址的目的地址;DMA单元730,用于申请数据通道,数据通道包括描述符,描述符包括源地址和目的地址;DMA单元730,用于通过数据通道,以直接内存访问DMA方式将下行数据拷贝至外设芯片。
在一实施例中,计算设备包括直通卡,多个外设芯片设置于直通卡内,外设芯片以直通方式通过总线与主机耦合。具体可参考图1实施例关于直通场景的描述,这里不重复赘述。
在一实施例中,计算设备包括带有PCIe交换机的插卡,多个外设芯片设置于带有PCIe交换机的插卡内,外设芯片通过带有PCIe交换机的插卡的PCIe交换机与主机耦合。具体可参考图2实施例关于SW场景的描述,这里不重复赘述。
在一实施例中,数据通道包括PCIe交换机扩展的数据通道。
在一实施例中,总线包括快捷外围部件互联标准PCIe总线、统一UB总线、计算机快速链接CXL总线、缓存一致互连协议CCIX总线、Z时代总线中的一种或者多种。
在一实施例中,外设芯片包括快捷外围部件互联标准PCIe设备芯片、存储卡芯片、网卡芯片、独立冗余磁盘阵列RAID芯片、加速卡芯片中的一种或者多种,其中,加速卡包括图像处理器GPU、处理器分散处理单元DPU、神经网络处理器NPU中的一种或者多种。
根据本发明本申请实施例的主机100可对应于执行本发明本申请实施例中描述的方法,并且主机100中的各个单元的上述和其它操作和/或功能分别为了实现图1至图6中的各个方法的相应流程,为了简洁,在此不再赘述。
综上可知,本申请提供主机将数据处理请求中的下行数据存储至内存,然后通过DMA模块以DMA方式将下行数据拷贝至外设芯片,从而使得外设芯片全部带宽都可用于处理上行数据,不再需要处理下行数据,下行数据交由主机的DMA模块进行处理,不仅使得单芯片场景下,外设芯片的数据带宽可以完全被利用,单个外设芯片的数据处理带宽不再受到DMA带宽的限制,在多芯片堆叠场景下,比如直通卡和SW卡的数据处理带宽也可以完全被利用,使得高并发、多数据流处理的带宽不再受限。
本申请实施例提供一种计算机读存储介质,包括:该计算机读存储介质中存储有计算机指令;当该计算机指令在计算机上运行时,使得该计算机执行上述方法实施例所述的数据处理方法。
本申请实施例提供了一种包含指令的计算机程序产品,包括计算机程序或指令,当该计算机程序或指令在计算机上运行时,使得该计算机执行上述方法实施例所述的数据处理方法。
本申请实施例提供了一种处理器,该处理器可设置于计算设备,该计算设备包括处理器、内存和外设芯片,其中,处理器、内存和外设芯片通过总线耦合,该处理器可以是图1和图2实施例中的主机100,内存可以是图1和图2实施例中的内存400,外设芯片可以是图1和图2实施例中的外设芯片200,总线可以是图1和图2实施例中的总线300,该处理器可以实现如图实现图1至图6中的各个方法中主机100的相应流程,为了简洁,在此不再赘述。
本申请实施例提供了一种计算设备,计算设备包括主机、内存和外设芯片,主机、内存和外设芯片通过总线耦合,主机实现图1至图6中的各个方法中主机100的相应流程,外设芯片实现图1至图6中的各个方法中外设芯片200的相应流程,图1所示的数据处理系统1000或者图2所示的数据处理系统1001均可部署于该计算设备中,为了简洁,在此不再赘述。
上述实施例,全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机为通用计算机、专用计算机、计算机网络、或者其他编程装置。计算机指令存储在计算机读存储介质中,或者从一个计算机读存储介质向另一个计算机读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机读存储介质是计算机能够存取的任何用介质或者是包含至少一个用介质集合的服务器、数据中心等数据存储节点。用介质是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD)、或者半导体介质。半导体介质是SSD。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,轻易想到各种等效的修复或替换,这些修复或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (13)

1.一种数据处理方法,其特征在于,所述方法应用于计算设备,所述计算设备包括主机、内存和外设芯片,所述主机、内存和外设芯片通过总线耦合,所述方法包括:
所述主机获取数据处理请求,所述数据处理请求包括下行数据,所述下行数据用于指示所述主机待向所述外设芯片发送的数据;
所述主机将所述下行数据存储至所述内存;
所述主机以直接内存访问DMA方式将所述下行数据拷贝至所述外设芯片。
2.根据权利要求1所述方法,其特征在于,所述主机的根复合体支持DMA功能。
3.根据权利要求1或2所述方法,其特征在于,所述外设芯片包括DMA模块,所述方法还包括:
所述外设芯片获取所述外设芯片的芯片内存中上行数据,所述上行数据用于指示所述外设芯片待向所述主机发送的数据;
所述外设芯片以DMA方式将所述上行数据拷贝至所述内存。
4.根据权利要求3所述的方法,其特征在于,所述主机获取数据处理请求之前,所述方法还包括:
所述主机确定所述芯片内存的物理地址与所述内存的物理地址之间的映射关系;
所述主机以直接内存访问DMA方式将所述下行数据拷贝至所述外设芯片中包括:
所述主机根据所述映射关系,以直接内存访问DMA方式将所述下行数据拷贝至所述外设芯片。
5.根据权利要求4所述的方法,其特征在于,所述主机根据所述映射关系,以直接内存访问DMA方式将所述下行数据拷贝至所述外设芯片包括:
所述主机获取所述下行数据的源地址,根据所述映射关系确定所述源地址的目的地址;
所述主机申请数据通道,所述数据通道包括描述符,所述描述符包括所述源地址和所述目的地址;
所述主机通过所述数据通道,以直接内存访问DMA方式将所述下行数据拷贝至所述外设芯片。
6.根据权利要求1至3中任一权利要求所述方法,其特征在于,所述计算设备包括直通卡,多个所述外设芯片设置于所述直通卡内,所述外设芯片以直通方式通过总线与所述主机耦合。
7.根据权利要求1至6中任一权利要求所述方法,其特征在于,所述计算设备包括带有PCIe交换机的插卡,多个所述外设芯片设置于所述带有PCIe交换机的插卡内,所述外设芯片通过带有所述PCIe交换机的插卡的PCIe交换机与所述主机耦合。
8.根据权利要求7所述的方法,其特征在于,所述数据通道包括所述PCIe交换机扩展的数据通道。
9.根据权利要求1至8任一权利要求所述的方法,其特征在于,所述总线包括快捷外围部件互联标准PCIe总线、统一UB总线、计算机快速链接CXL总线、缓存一致互连协议CCIX总线、Z时代总线中的一种或者多种。
10.根据权利要求1至9任一权利要求所述的方法,其特征在于,所述外设芯片包括快捷外围部件互联标准PCIe设备芯片、存储卡芯片、网卡芯片、独立冗余磁盘阵列RAID芯片、加速卡芯片中的一种或者多种,其中,所述加速卡包括图像处理器GPU、处理器分散处理单元DPU、神经网络处理器NPU中的一种或者多种。
11.一种主机,其特征在于,所述主机应用于计算设备,所述计算设备包括所述主机、内存和外设芯片,所述主机、内存和外设芯片通过总线耦合,所述主机包括:
获取单元,用于获取数据处理请求,所述数据处理请求包括下行数据,所述下行数据用于指示所述主机待向所述外设芯片发送的数据;
存储单元,用于所述主机将所述下行数据存储至所述内存;
直接内存访问DMA单元,用于以直接内存访问DMA方式将所述下行数据拷贝至所述外设芯片。
12.一种处理器,其特征在于,所述处理器设置于计算设备,所述计算设备包括处理器、内存和外设芯片,所述处理器、内存和外设芯片通过总线耦合,所述处理器用于实现如权利要求1至10任一权利要求所述的方法的操作步骤。
13.一种计算设备,其特征在于,所述计算设备包括主机、内存和外设芯片,所述主机、内存和外设芯片通过总线耦合,所述主机和外设芯片分别用于实现如权利要求1至10任一权利要求所述的方法的操作步骤的功能。
CN202210336383.4A 2022-03-31 2022-03-31 一种数据处理方法、主机及相关设备 Pending CN116932451A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210336383.4A CN116932451A (zh) 2022-03-31 2022-03-31 一种数据处理方法、主机及相关设备
PCT/CN2023/085690 WO2023186143A1 (zh) 2022-03-31 2023-03-31 一种数据处理方法、主机及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210336383.4A CN116932451A (zh) 2022-03-31 2022-03-31 一种数据处理方法、主机及相关设备

Publications (1)

Publication Number Publication Date
CN116932451A true CN116932451A (zh) 2023-10-24

Family

ID=88199444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210336383.4A Pending CN116932451A (zh) 2022-03-31 2022-03-31 一种数据处理方法、主机及相关设备

Country Status (2)

Country Link
CN (1) CN116932451A (zh)
WO (1) WO2023186143A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117632043B (zh) * 2024-01-25 2024-05-28 北京超弦存储器研究院 Cxl内存模组、控制芯片、数据处理方法、介质和系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484016B2 (en) * 2004-06-30 2009-01-27 Intel Corporation Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
GB2433333B (en) * 2005-12-13 2011-07-13 Advanced Risc Mach Ltd Distributed direct memory access provision within a data processing system
CN100498748C (zh) * 2007-11-16 2009-06-10 威盛电子股份有限公司 计算机系统及直接内存访问传输方法
CN103377161A (zh) * 2012-04-24 2013-10-30 鸿富锦精密工业(深圳)有限公司 主板及应用于该主板的数据处理方法
CN107993183A (zh) * 2017-11-24 2018-05-04 暴风集团股份有限公司 图像处理装置、方法、终端和服务器
CN112000598B (zh) * 2020-07-10 2022-06-21 深圳致星科技有限公司 用于联邦学习的处理器、异构处理系统及隐私数据传输方法
CN114253883B (zh) * 2021-12-03 2024-05-10 烽火通信科技股份有限公司 一种endpoint设备访问方法、系统及endpoint设备

Also Published As

Publication number Publication date
WO2023186143A1 (zh) 2023-10-05

Similar Documents

Publication Publication Date Title
US20200278880A1 (en) Method, apparatus, and system for accessing storage device
US7464191B2 (en) System and method for host initialization for an adapter that supports virtualization
US7529860B2 (en) System and method for configuring an endpoint based on specified valid combinations of functions
US7664909B2 (en) Method and apparatus for a shared I/O serial ATA controller
US8291141B2 (en) Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports
US7685321B2 (en) Native virtualization on a partially trusted adapter using PCI host bus, device, and function number for identification
JP2019153297A (ja) Fpgaベースの加速のための新たなssd基本構造
US7502865B2 (en) Addresses assignment for adaptor interfaces
US9927984B2 (en) Electronic system with interface control mechanism and method of operation thereof
CN108984465B (zh) 一种消息传输方法及设备
KR20040054620A (ko) 엔드 노드 파티션 방법, 시스템 및 컴퓨터 프로그램 제품
US11829309B2 (en) Data forwarding chip and server
US10698849B2 (en) Methods and apparatus for augmented bus numbering
US10761859B2 (en) Information processing system, management device, and method for controlling information processing system
US8402195B2 (en) Storage system mounted with plurality of processors
WO2023186143A1 (zh) 一种数据处理方法、主机及相关设备
US10838861B1 (en) Distribution of memory address resources to bus devices in a multi-processor computing system
US11029847B2 (en) Method and system for shared direct access storage
EP3959611A1 (en) Intra-device notational data movement system
US20060277326A1 (en) Data transfer system and method
US9286253B2 (en) System and method for presenting devices through an SAS initiator-connected device
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof
US8856481B1 (en) Data processing system having host-controlled provisioning of data storage resources
CN113918092A (zh) 一种分配存储空间的方法及系统
CN118069568A (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