CN112867998B - 运算加速器、交换器、任务调度方法及处理*** - Google Patents
运算加速器、交换器、任务调度方法及处理*** Download PDFInfo
- Publication number
- CN112867998B CN112867998B CN201880098081.XA CN201880098081A CN112867998B CN 112867998 B CN112867998 B CN 112867998B CN 201880098081 A CN201880098081 A CN 201880098081A CN 112867998 B CN112867998 B CN 112867998B
- Authority
- CN
- China
- Prior art keywords
- pcie
- data
- address
- accelerator
- link
- 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
- 238000000034 method Methods 0.000 title claims description 27
- 238000012545 processing Methods 0.000 title abstract description 18
- 230000002093 peripheral effect Effects 0.000 claims abstract description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 abstract description 18
- 230000001133 acceleration Effects 0.000 abstract description 12
- 230000006854 communication Effects 0.000 description 56
- 238000004891 communication Methods 0.000 description 54
- 238000013146 percutaneous coronary intervention Methods 0.000 description 50
- 230000015654 memory Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 23
- 238000004364 calculation method Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 11
- 238000013519 translation Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Advance Control (AREA)
Abstract
一种运算加速器、交换器及处理***,该运算加速器包括:与第一外设部件互连标准PCIe设备直接通过PCIe链路连接的分流电路;所述分流电路,用于接收所述第一PCIe设备通过PCIe链路发送的第一数据,并通过内部总线传输所述第一数据,所述第一数据携带的第一地址位于第一区间。由于第一PCIe设备通过加速运算器内部的分流电路与该加速运算器直接进行通信,因此可以减轻PCIe链路的传输负担,进而避免PCIe链路产生的流量阻塞。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及运算加速器、交换器、任务调度方法及处理***。
背景技术
主机中央处理器(Central Processing Unit,CPU),即Host CPU,是运行操作***、设备驱动、应用程序的处理器。Host CPU的外部可以连接运算加速器提高其计算能力、连接网络控制器对外进行通信、连接存储介质访问控制器访问块数据,是***的中枢。运算加速器是指图形处理器(Graphics Processing Unit,GPU)、应用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)、人工智能(Artificial Intelligence,AI)芯片等在特定任务上有更强计算能力的组件。网络控制器是指使用以太网、无线带宽(Infiniband)等对外进行数据交换的控制器。存储介质访问控制器是指访问存储在电脑硬盘(Hard Disk Drive,HDD)、固态硬盘(Solid State Drives,SSD)、存储级内存(Storage Class Memory,SCM)等介质上块数据的控制器。
在一个计算***中,通过增加运算加速器来完成特定的任务,进而增强该计算***处理特定任务的性能,成为当前普遍采用的一种方案。在实际应用中,多组运算加速器通过外设部件互连(Peripheral Component Interconnect Express,简称PCIe)链路连接到CPU上。在这种配置下,用户在CPU上进行编程,编程框架通过驱动将任务交给运算加速器,并调度运算加速器使用存储资源以及网络资源完成相应的任务。例如,当运算加速器在执行任务过程中需要跟外部其他节点通信时,CPU侧编程框架会将网络控制器传输的数据接收在主存中,然后调用运算加速器单元从主存中获取,以此完成通信过程。网络控制器、存储介质访问控制器以及运算加速器均通过PCIe链路与CPU进行通信。
在上述方案中,运算加速器与网络控制器、存储介质访问控制器等PCIe设备之间的通信均走共同的PCIe链路,导致PCIe链路会产生严重的流量阻塞,成为性能瓶颈。
发明内容
本申请实施例提供了一种运算加速器、交换器、任务调度方法及处理***,可以减轻PCIe链路的传输负担,进而避免PCIe链路产生的流量阻塞。
第一方面,本申请实施例提供了一种运算加速器,该运算加速器包括:
与第一外设部件互连标准PCIe设备直接通过PCIe链路连接的分流电路;
所述分流电路,用于接收所述第一PCIe设备通过PCIe链路发送的第一数据,并通过内部总线传输所述第一数据,所述第一数据携带的第一地址位于第一区间。
所述第一数据可以是访问请求、读写请求、反馈信息以及其他数据。所述第一地址可以是处理器映射的直接内存存取(Direct Memory Access,DMA)地址,即在PCIe链路上传输的信息所需携带的地址。所述分流电路具备地址过滤功能,可以将位于所述第一地址区间的地址转换为运算加速器的内部物理地址,并将携带这些地址的数据通过内部总线传输至所述内部物理地址指定的部件。所述分流电路直接通过PCIe链路与第一PCIe设备连接,可以将所述第一PCIe设备发送的所述第一数据通过内部总线进行传输。可以理解,加速运算器可以直接与所述第一PCIe设备通过PCIe链路进行通信,不需要经过处理器或者交换器,可以减少加速运算器与所述第一PCIe设备完成通信所需经过的PCIe链路的数量。
本申请实施例中,第一PCIe设备通过加速运算器内部的分流电路与该加速运算器直接进行通信,可以减轻PCIe链路的传输负担,进而避免PCIe链路产生的流量阻塞。
在一个可选的实现方式中,所述分流电路,还用于将所述第一PCIe设备通过PCIe链路发送的第二数据通过PCIe链路向处理器发送,所述第二数据携带的第二地址处于第二区间,所述第一区间和所述第二区间不重叠。
分流电路既可以实现第一PCIe设备与运算加速器之间的通信,也可以实现该第一PCIe设备与处理器之间的通信。
在该实现方式中,通过将PCIe链路上的流量直接在运算加速器内部总线(内部Memory总线)传输,可以减少在公共PCIe链路上所产生的带宽冲突。
在一个可选的实现方式中,所述分流电路,还用于接收所述内部总线传输的数据或指令,并通过PCIe链路向所述第一PCIe设备发送所述数据或所述指令。
在该实现方式中,分流电路将运算加速器的内部总线上传输的数据或指令通过PCIe链路传输至对应的PCIe设备,以便于实现该运算加速器与该PCIe设备的通信,传输效率高。
在一个可选的实现方式中,所述分流电路包括:第一地址转换器和所述第一PCIe设备,所述第一地址转换器和所述第一PCIe设备通过PCIe链路连接;
所述第一地址转换器,用于接收所述第一PCIe设备发送的所述第一数据,将所述第一地址转换为内部物理地址后通过所述内部总线传输所述第一数据。
在该实现方式中,第一地址转换器根据第一PCIe设备发送的第一数据的地址,将该第一数据通过内部总线发送给相应的部件,实现简单。
在一个可选的实现方式中,所述第一地址转换器,还用于将所述第一PCIe设备发送的所述第二数据通过PCIe链路传输至所述处理器。
可以理解,携带的地址位于所述第一区间的数据为所述第一PCIe设备向所述加速运算器发送的数据;携带的地址未位于所述第一区间的数据为所述第一PCIe设备向所述处理器发送的数据。所述第一地址转换器可以根据所述第一PCIe设备发送的数据携带的地址,通过不同的传输路径传输所述第一PCIe设备发送的数据。另外,第一地址转换器还可以将PCIe设备发送的DMA地址转换为运算加速器的内部物理地址,进而将携带这些地址的数据通过内部总线传输至所述内部物理地址指定的部件。
在该实现方式中,第一地址转换器将携带的地址位于第二区间的数据通过PCIe链路发送给处理器,实现简单。
在一个可选的实现方式中,所述分流电路还包括:第二地址转换器以及第一PCIe下游接口;
所述第一PCIe下游接口,用于接收第二PCIe设备通过PCIe链路发送的第三数据,并将所述第三数据发送至所述第二地址转换器,所述第三数据携带的第三地址位于所述第一区间,所述第二PCIe设备为运算加速器的外部设备;
所述第二地址转换器,用于对所述第三地址进行地址转换,并通过所述内部总线传输所述第三数据。
所述第一PCIe下游接口与所述第二PCIe设备直接通过PCIe链路链接。所述第二地址转换器可以将处于所述第一区间的地址转换为所述运算加速器的内部物理地址,对处于第二区间的地址不作处理。
在该实现方式中,运算加速器通过内部的第一PCIe下游接口直接与第二PCIe设备进行通信,通信效率高。
在一个可选的实现方式中,所述分流电路还包括:虚拟PCI-PCI桥;
所述第一PCIe下游接口,还用于接收所述第二PCIe设备通过PCIe链路发送的第四数据,并将所述第四数据发送至所述第二地址转换器,所述第四数据携带的第四地址位于所述第二区间;
所述第二地址转换器,还用于将所述第四数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第四数据通过PCIe链路传输所述处理器。
分流电路既可以实现第二PCIe设备与运算加速器之间的通信,也可以实现该第二PCIe设备与处理器之间的通信。分流电路可以准确地确定第二PCIe设备是向加速运算器发送数据还是向处理器发送数据。
在该实现方式中,通过将PCIe链路上的流量直接在运算加速器内部总线(内部Memory总线)传输,可以减少在公共PCIe链路上所产生的带宽冲突。
在一个可选的实现方式中,所述分流电路包括:第三地址转换器以及第二PCIe下游接口;
所述第二PCIe下游接口,用于接收所述第一PCIe设备通过PCIe链路发送的所述第一数据,并将所述第一数据发送至所述第三地址转换器;
所述第三地址转换器,用于将所述第一地址转换为内部物理地址后,通过所述内部总线传输所述第一数据。
在该实现方式中,第三地址转换器将第一PCIe设备发送的第一数据的地址转换为内部物理地址后,通过内部总线将该第一数据发送给相应的部件,实现简单。
在一个可选的实现方式中,所述分流电路还包括:虚拟PCI-PCI桥;
所述第二PCIe下游接口,还用于将所述第二数据发送至所述第三地址转换器;
所述第三地址转换器,还用于将所述第二数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第二数据通过PCIe链路传输所述处理器。
在该实现方式中,第三地址转换器将携带的地址位于第二区间的数据通过PCIe链路发送给处理器,实现简单。
在一个可选的实现方式中,所述运算加速器还包括任务调度器;
所述任务调度器,用于接收处理器发送的至少两个子任务,将所述至少两个子任务存储到缓存器,所述至少两个子任务中的第一子任务需要在第二子任务完成之后执行;
所述任务调度器,还用于在所述第一子任务完成之后,通过所述内部总线将目标指令传输至所述分流电路,所述目标指令用于指示第三PCIe设备执行所述第二子任务;
所述分流电路,用于通过PCIe链路将所述目标指令发送给所述第三PCIe设备,所述第三PCIe设备与所述分流电路直接通过PCIe链路连接。
所述任务调度器可以直接通知各部件或PCIe设备执行相应的子任务,而不需要经过处理器。PCIe设备可以直接接收加速运算器的数据或指令,也可以直接向该加速运算器发送数据或指令。所述至少两个子任务为处理器分配给所述加速运算器执行的子任务。
在该实现方式中,运算器加速根据有前后依赖关系的子任务的完成情况,自动启动各子任务,而不需要处理器的参与,以此减少工作延迟。
在一个可选的实现方式中,所述任务调度器,还用于将所述第二子任务提交到所述缓存器中的目标任务队列,所述目标任务队列为所述第三PCIe设备待执行的任务队列。
所述第二子任务可以是通信子任务,也可以是计算子任务,还可以是存储子任务。通信子任务可以是需要网络控制器执行的任务,计算子任务可以是需要运算加速器中的计算单元执行的任务,存储子任务可以是需要存储介质访问控制器执行的任务。在所述第二子任务为通信子任务的情况下,将所述第二子任务提交给通信任务队列(目标任务队列),所述第三PCIe设备可以是网络控制器。在所述第二子任务为存储子任务的情况下,将所述第二子任务提交给存储任务队列(目标任务队列),所述第三PCIe设备可以是存储介质访问控制器。可选的,所述任务调度器在确定所述第一子任务完成之后,将所述第二子任务提交到所述缓存器中的目标任务队列。
在该实现方式中,任务调度器将第二子任务提交到第三PCIe设备待执行的任务队列,以便于PCIe设备及时获取到该子任务。
在一个可选的实现方式中,所述分流电路,还用于接收所述第三PCIe设备通过PCIe链路发送的完成指令,以及通过所述内部总线向所述任务调度器发送所述完成指令,所述完成指令用于指示所述第二子任务已完成;
所述任务调度器,还用于在接收到所述完成指令后,调度计算单元或第四PCIe设备执行第三子任务,所述第三子任务需要在所述第二子任务完成之后执行,所述计算单元为运算加速器内部用于执行所述第三子任务的部件。
在该实现方式中,运算器加速根据前后有依赖关系的子任务的完成情况,自动启动各子任务,而不需要处理器的参与,以此减少工作延迟。
第二方面本申请实施例提供了一种交换器,该交换器包括:
与第一外设部件互连标准PCIe设备直接通过PCIe链路连接的分流电路,所述分流电路与运算加速器直接通过内存总线连接;
所述分流电路,用于接收所述第一PCIe设备通过PCIe链路发送的第一数据,并通过所述内存总线向所述运算加速器发送所述第一数据,所述第一数据携带的第一地址位于第一区间。
所述分流电路可以将所述第一PCIe通过PCIe链路发送的所述第一数据转换为能够在所述内存总线上传输的数据,进而传输给所述运算加速器。可以理解,分流电路可以利用内存总线向运算加速器发送数据,不需要通过PCIe链路,可以减少PCIe链路的传输负担。
本申请实施例中,分流电路实现第一PCIe设备与加速运算器之间的通信,可以减轻PCIe链路的传输负担,进而避免PCIe链路出现流量阻塞问题。
在一个可选的实现方式中,所述分流电路,还用于接收所述第一PCIe设备通过PCIe链路发送的第二数据,并通过PCIe链路向处理器发送,所述第二数据携带的第二地址处于第二区间,所述第一区间和所述第二区间不重叠。
在该实现方式中,分流电路既可以实现第一PCIe设备与处理器之间的通信,也可以实现该第一PCIe设备与运算加速器之间的通信,实现简单。
在一个可选的实现方式中,所述分流电路,还用于通过所述内部总线接收来自所述运算加速器的数据或指令,并通过PCIe链路向所述第一PCIe设备发送所述数据或所述指令。
在该实现方式中,分流电路接收运算加速器通过内存总线上传输的数据或指令,并通过PCIe链路传输至对应的PCIe设备,以便于实现该运算加速器与该PCIe设备的通信,传输效率高。
在一个可选的实现方式中,所述分流电路包括:第一地址转换器和所述第一PCIe设备,所述第一地址转换器和所述第一PCIe设备通过PCIe链路连接;
所述第一地址转换器,用于通过PCIe链路接收所述第一PCIe设备发送的所述第一数据,将所述第一地址转换为本地物理地址后通过所述内存总线向所述运算加速器发送所述第一数据,所述本地物理地址用于访问所述运算加速器。
在该实现方式中,第一地址转换器根据第一PCIe设备发送的第一数据的地址,将该第一数据通过内部总线发送给相应的部件,实现简单。
在一个可选的实现方式中,所述第一地址转换器,还用于将所述第一PCIe设备发送的所述第二数据通过PCIe链路传输至所述处理器。
在该实现方式中,第一地址转换器通过PCIe链路将携带的地址位于第二区间的数据发送给处理器,实现简单。
在一个可选的实现方式中,所述分流电路还包括:第二地址转换器以及第一PCIe下游接口;
所述第一PCIe下游接口,用于接收第二PCIe设备通过PCIe链路发送的第三数据,并将所述第三数据发送至所述第二地址转换器,所述第三数据携带的第三地址位于所述第一区间,所述第二PCIe设备为交换器的外部设备;
所述第二地址转换器,用于对所述第三地址进行地址转换,并通过所述内存总线向所述运算加速器发送所述第三数据。
在该实现方式中,第二PCIe设备通过交换器中的第一PCIe下游接口与运算加速器进行通信,通信效率高。
在一个可选的实现方式中,所述分流电路还包括:虚拟PCI-PCI桥;
所述第一PCIe下游接口,还用于接收所述第二PCIe设备通过PCIe链路发送的第四数据,并将所述第四数据发送至所述第二地址转换器,所述第四数据携带的第四地址位于所述第二区间;
所述第二地址转换器,还用于将所述第四数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第四数据通过PCIe链路传输所述处理器。
在该实现方式中,通过将PCIe链路上的流量直接在交换器中传输,可以减少在公共PCIe链路上所产生的带宽冲突。
在一个可选的实现方式中,所述分流电路包括:第三地址转换器以及第二PCIe下游接口;
所述第二PCIe下游接口,用于接收所述第一PCIe设备通过PCIe链路发送的所述第一数据,并将所述第一数据发送至所述第三地址转换器;
所述第三地址转换器,用于将所述第一地址转换为本地物理地址后通过所述内存总线向所述运算加速器发送所述第一数据,所述本地物理地址用于访问所述运算加速器。
在该实现方式中,第三地址转换器根据第一PCIe设备发送的第一数据的地址,将该第一数据通过内存总线发送给运算加速器,实现简单。
在一个可选的实现方式中,所述分流电路还包括:虚拟PCI-PCI桥;
所述第二PCIe下游接口,还用于将所述第二数据发送至所述第三地址转换器;
所述第三地址转换器,还用于将所述第二数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第二数据通过PCIe链路传输所述处理器。
在该实现方式中,第三地址转换器根据第一PCIe设备发送的第二数据的地址,将该第数据通过PCIe链路发送给处理器,实现简单。
第三方面本申请实施例提供了一种任务调度方法,该方法包括:
运算加速器将来自处理器的至少两个子任务存储到第一缓存器,所述至少两个子任务中的第二子任务需要在第一子任务完成之后执行;
所述运算加速器在所述第一子任务完成之后,向目标设备发送目标指令,所述目标指令用于指示所述目标设备执行所述第二子任务。
本申请实施例中,运算加速器可以直接调度目标设备执行相应的任务,不需要处理器的参与,可以提高调度效率。
在一个可选的实现方式中,所述运算加速器将来自处理器的至少两个子任务存储到第一缓存器之后,所述方法还包括:
所述运算加速器将所述第二子任务提交到第二缓存器中的目标任务队列,所述目标任务队列为所述第三PCIe设备待执行的任务队列。
可选的,所述运算加速器在所述第一子任务完成之后,将所述第二子任务提交到第二缓存器中的目标任务队列。所述第二缓存器为所述运算加速器内部的缓存器,即本地缓存器。
在该实现方式中,运算加速器可以及时将第二子任务提交至相应的任务队列,以保证该任务可以快速地得到处理。
第四方面本申请实施例提供一种运算加速器,该运算加速器包括:
第一缓存器,用于存储来自处理器的至少两个子任务,所述至少两个子任务中的第二子任务需要在第一子任务完成之后执行;
发送单元,用于在所述第一子任务完成之后,向目标设备发送目标指令,所述目标指令用于指示所述目标设备执行所述第二子任务。
本申请实施例中,运算加速器可以直接调度目标设备执行相应的任务,不需要处理器的参与,可以提高调度效率。
在一个可选的实现方式中,所述发送单元,还用于将所述第二子任务提交到第二缓存器中的目标任务队列,所述目标任务队列为所述第三PCIe设备待执行的任务队列。
在该实现方式中,运算加速器可以及时将第二子任务提交至相应的任务队列,以保证该任务可以快速地得到处理。
第五方面本申请实施例提供了一种处理***,其特征在于,包括处理器,以及上述第二方面中的交换器和运算加速器,所述处理器用于控制所述交换器和所述运算加速器。
第六方面本申请实施例提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第三方面所述的方法。
附图说明
图1为本申请实施例提供的一种集群通信网络的示意图;
图2为本申请实施例提供的一种计算机设备的架构示意图;
图3为本申请实施例提供的一种节点之间的通信示意图;
图4为本申请实施例提供的一种子任务执行顺序示意图;
图5为本申请实施例提供的另一种子任务执行顺序示意图;
图6为本申请实施例提供的一种运算加速器的结构示意图;
图7为本申请另一实施例提供的一种运算加速器的结构示意图;
图8为本申请另一实施例提供的一种运算加速器的结构示意图;
图9为本申请另一实施例提供的一种运算加速器的结构示意图;
图10为本申请实施例得一种调度子任务的方法流程图;
图11为本申请实施例提供的一种任务调度方法流程图;
图12为本申请另一实施例提供的一种运算加速器的结构示意图;
图13为本申请实施例提供的一种交换器的结构示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。下面先介绍一下与本申请相关的术语和知识。
PCIe是一种高速串行计算机扩展总线标准,属于高速串行点对点双通道高带宽传输。PCIe链路使用端到端的数据传送方式。在一条PCIe链路中,这两个端口是完全对等的,分别连接发送与接收设备,而且一个PCIe链路的一端只能连接一个发送设备或者接收设备。PCIe总线的基本结构包括根组件(Root Complex)、交换器(Switch)和各种终端设备(Endpoint)。根组件可以集成在北桥芯片中,用于处理器和内存子***与I/O设备之间的连接,而交换器的功能通常是以软件形式提供的,它包括两个或更多的逻辑PCI到PCI的连接桥(PCI-PCI桥),以保持与现有PCI兼容。PCIe交换器的主要作用是将PCIe设备互联。PCI总线上存在若干PCI设备插槽,当PCI插槽无法满足需求,就可以通过PCI桥扩展PCI设备,一个PCI桥把一个PCI总线连在一个PCI插槽上,作为PCI的一个设备。
集群通信***是一种计算机***,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群***中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。图1为本申请实施例提供的一种集群通信网络的示意图。如图1所示,集群通信网络包括n个节点,各个节点之间并行工作,每个节点上的运算加速器受本节点上的Host CPU编程控制,并跟其他节点进行通信。运算加速器使用各节点本地存储或者集中存储装备中的数据。图1中每个节点可以视为一个计算机设备。图1中的集群通信网络主要用于AI计算、异构并行计算、高性能计算等场景中。
下面介绍一下图1中一个节点(计算机设备)的架构示意图。图2为本申请实施例提供的一种计算机设备的架构示意图。如图2所示,运算加速器、存储介质访问控制器以及网络控制器之间均通过PCIe链路与Host CPU连接,运算加速器之间通过PCIe链路连接,运算加速器与网络控制器之间通过PCIe链路连接。采用图1的架构,用户在Host CPU上进行编程,编程框架通过驱动将任务交给运算加速器,并调度运算加速器使用存储资源以及网络资源。例如图1中,当运算加速器需要跟外部其他节点通信时,Host CPU会将数据接收在主存中(图1中的A.1路径),然后调用运算加速器从主存中获取(图1中的A.2路径),以此完成通信过程。为了提升运算加速器跟存储介质访问控制器以及网络控制器之间的访问带宽,在***方案设计中,常采取Peer2Peer的方式直接进行数据传输,如图1中的B.0路径所示。
图2主要展示了同一个计算机设备包括的不同部件之间的通信方式,例如运算加速器和网络控制器之间的通信方式。下面介绍一下不同节点之间的通信方式。图3为本申请实施例提供的一种节点之间的通信示意图。图3所示,多个节点并行计算时,各个节点并行执行任务,相互之间会使用通信网络进行通信以及执行同步操作。整个任务的完成时间,由运算加速器完成计算的时间以及其相互之间通信的时间组成,通信的带宽以及延迟会直接影响并行计算最终任务完成的性能。在并行计算场景中,一个大的任务通常可分成数据获取部分、计算部分以及通信部分,通信部分用于在多个节点之间同步,即节点之间的数据传输。一个大任务拆分得到的多个子任务之间在时间上可能存在顺序执行的关系。
图4为本申请实施例提供的一种子任务执行顺序示意图。如图4所示,“计算子任务0”完成,得到中间计算结果之后,启动“节点间通信任务1”;“节点间通信任务1”完成后,执行“计算子任务2”;“计算子任务2”完成后,执行“文件访问任务3”。或者说,“节点间通信任务1”在“计算子任务0”完成之后,才能启动。举例来说,在神经网络的计算过程中,在完成一部分网络的计算迭代之后,就在多个节点之间进行通信以完成网络参数更新。
图5为本申请实施例提供的另一种子任务执行顺序示意图。图5中标记出了图4中的前3步(计算子任务0、节点间通信任务1以及计算子任务2)的工作过程,各主要步骤描述如下:
A.1:从Host CPU下发计算子任务0到运算加速器;
A.2:运算加速器完成计算子任务0之后,通知Host CPU计算子任务0完成;
B.1:Host CPU向网络控制器下发节点间通信任务1,例如实现运算加速器跟其他节点之间的数据搬移;
B.2:节点间通信任务1完成之后,网络控制器返回通信完成事件给Host CPU;
C.1:Host CPU根据通信结果,再次下发计算子任务2到运算加速器。
从图5可以看出,运算加速器、网络控制器以及存储介质访问控制器跟CPU之间的数据传输均走共同的PCIe链路。因此,PCIe链路会产生严重的流量阻塞,成为性能瓶颈。另外,由于网络通信以及存储任务的协议栈均位于CPU上,如图4所示的子任务执行顺序,每个子任务完成都要送到CPU上去协调处理,造成延迟的增加。另外,当CPU需要协调处理的任务密集时,还会引入额外的排队延迟。可见,上述方案存在PCIe链路的流量阻塞问题以及CPU协调处理各子任务造成的延迟问题。
图6为本申请实施例提供的一种运算加速器的结构示意图。如图6所示,运算加速器为一个多PCIe功能(Function)设备,运算加速器自身为一个独立的功能单元,占用一个PCIe接口(如图6中的PCIe PF0);集成在运算加速器内部的片上网络控制器为独立的PCIe设备,占用一个PCIe接口(如图6中的PCIe PF1)。
下面介绍一下图6中各部件的功能以及各部件之间的通信方式。
地址转换器,即图6中的ATU,用于将位于第一区间的DMA地址转换为运算加速器的内部总线地址。具体的,地址转换器,用于接收PCIe设备(例如图6中的片上网络控制器)通过PCIe链路发送的数据;在该数据携带的地址位于第一区间的情况下,将该地址转换为内部物理地址后通过内部总线传输该数据;在该数据携带的地址未位于该第一区间的情况下,通过PCIe链路向CPU发送该数据。图6中的实线为内部总线,虚线为PCIe链路。PCIe链路传输的是DMA地址,内部总线上传输的是内部物理地址。可以理解,地址转换器可以实现数据分流功能,即将PCIe设备发送的数据或指令进行分流。如图6所示,地址转换器可以将片上网络控制器发送的数据或指令通过PCIe链路发送给CPU,也可以将该片上网络控制器发送的数据或指令通过内部总线进行传输。
ATU在地址转换功能上包含多个地址转换条目,每个地址转换条目的输入可以包括{PCI请求者标识(ID),PCI进程地址空间标识(Process Address Space ID,PASID),DMA地址范围,内存访问权限}。对于命中的地址(第一区间的地址),将其转换为运算加速器的内部物理地址。对于未命中的地址(第二区间的地址),携带原始输入的{PCIe请求者ID、PASID、完整的64bit DMA地址}信息在运算加速器内部内存访问互连总线(内部物理总线)上传输。在运算加速器内部物理地址不足64bit的情况下,64位DMA地址多出来的部分,通过复用内部总线无关域段或者扩展部分位宽进行传输。ATU在功能上实现DMA地址到运算加速器的内部物理地址的转换,并判定访问是否直接在运算加速器内部物理总线上完成。
PCIe PF0和PCIe PF1均为硬件上的一个功能模块。PF(Physical Function)是PCIe上的公共术语,为主机管理设备的一个功能粒度。图6中的PCIe PF0和PCIe PF1均是PCIe EP中的一个功能模块。图6中的PCIe PF0与CPU之间的链路以及PCIe PF1与CPU之间的链路均为逻辑上的链路。在实际的硬件结构中,PCIe EP与运算加速器的内部总线之间只有一条链路,PCIe EP与CPU之间仅有一个PCIe链路。也就是说,PCIe PF0和PCIe PF1共用同样的PCIe链路。
高带宽存储器(High Bandwidth Memory,HBM)、双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM)以及静态随机存取存储器(Static Random-Access Memory,SRAM)均为运算加速器内部的存储器,用于存储数据或指令。
任务调度器(处理器),用于控制运算加速器中的各部件。计算单元,用于处理CPU下发给运算加速器的计算任务。中断控制器,用于执行中断处理程序,实现各种中断操作。
运算加速器可以挂载在CPU上,用来提升CPU处理特定任务的性能,例如图像处理。
如图6所示,运算加速器中的分流电路包括片上网络控制器和ATU。ATU与片上网络控制器之间通过PCIe链路连接。运算加速器中的分流电路包括第一地址转换器和第一PCIe设备。上述第一地址转换器(图6中的ATU),用于接收第一PCIe设备(图6中的片上网络控制器)发送的第一数据,将第一地址转换为内部物理地址后通过内部总线传输第一数据。第一地址为第一数据携带的地址。上述第一地址转换器,还用于将上述第一PCIe设备发送的上述第二数据通过PCIe链路传输至上述处理器,上述第二数据携带的地址位于第二区间。可以理解,上述第一地址转换器可以将位于上述第一区间的DMA地址转换为运算加速器的内部物理地址;可以不对位于第二区间的DMA地址做处理。
如图6所示,片上网络控制器与CPU之间的传输路径是片上网络控制器至ATU、ATU至PCIe PF1、PCIe PF1至CPU,其中,该数据从片上网络控制器至ATU、从该ATU至PCIe PF1以及从PCIe PF1至CPU均通过PCIe链路传输;片上网络控制器与运算加速器之间的传输路径是片上网络控制器至ATU、ATU至内部总线,其中,网络控制器至ATU通过PCIe链路传输。从图6可以看出,运算加速器中的分流电路可以接收第一PCIe设备(片上网络控制器)通过PCIe链路发送的第一数据,并通过内部总线传输该第一数据;还可以将该第一PCIe设备通过PCIe链路发送的第二数据通过PCIe链路向处理器发送;还可以接收内部总线传输的数据或指令,并通过PCIe链路向该第一PCIe设备发送上述数据或上述指令。可以理解,将至少一个PCIe设备集成到运算加速器,并通过地址转换器实现上述至少PCIe设备与运算加速器以及CPU之间的通信。这样可以将PCIe链路上的流量直接在运算加速器的内部总线上传输,以便于减少在公共PCIe链路上所产生的带宽冲突。
图6仅是本申请实施例提供的运算加速器的一个具体举例,不应视为运算加速器唯一的结构。本申请实施例中,运算加速器中只有分流电路是不可或缺的,并不对运算加速器中的其他部件作限定。例如,运算加速器可以不包括HBM或DDR。可以理解,本申请实施例中,运算加速器中的分流***包括至少一个PCIe设备以及与上述至少一个PCIe设备相对应的地址转换器。举例来说,运算加速器中的分流***可以包括一个片上网络控制器以及一个存储介质访问控制器、该片上网络控制器对应的地址转换器以及该存储介质访问控制器的地址转换器。
图7为本申请另一实施例提供的一种运算加速器的结构示意图。如图7所示,运算加速器为一个多PCIe功能(Function)设备,运算加速器自身为一个独立的功能单元(如图7中的PCIe PF0);在PCIe端点(End Point,EP)中设置虚拟PCI-PCI桥。通过PCIe链路扩展的其他PCIe设备,在逻辑上是挂在此PCI-PCI桥下的设备。图7中的PCIe PF0和虚拟PCI-PCI桥均是PCIe EP中的一个功能模块。图7中的PCIe PF0与CPU之间的链路以及虚拟PCI-PCI桥与CPU之间的链路均为逻辑上的链路。在实际的硬件结构中,PCIe EP与运算加速器的内部总线之间只有一条链路,PCIe EP与CPU之间仅有一个PCIe链路。也就是说,PCIe PF0和虚拟PCI-PCI桥共用一个PCIe链路。
图7示例中,生成的PCI设备拓扑结构如下:
PCI总线x:设备0:运算加速器的计算引擎(计算单元);
设备1:虚拟机PCI-PCI桥:PCI总线y:外部的网络控制器;
PCI总线z:外部的存储介质访问控制器。
图7中的分流电路包括ATU、PCIe DP以及虚拟PCI-PCI。PCIe DP,用于接收外部PCIe设备通过PCIe链路发送的数据或指令,并发送给地址转换器。外部PCIe是指运算加速器外部的PCIe设备。图7中的ATU的功能与图6中的ATU的功能类似,这里不再详述。对比图7和图6可知,图7中的运算加速器与图6中的运算加速器的区别仅在于分流电路不同,其他各部件均相同。因此,这里不再介绍图7的运算加速器中除分流电路之外的部件。图7中,虚拟PCI-PCI桥为PCIe接口,与CPU之间通过PCIe链路实现通信。虚拟PCI-PCI桥为外部PCIe设备(网络控制器和存储介质访问控制器)占用的PCIe接口。如图7所示,网络控制器与CPU之间的传输路径是网络控制器至PCIe DP、PCIe DP至ATU、ATU至虚拟PCI-PCI桥、虚拟PCI-PCI桥至CPU,其中,通过PCIe链路实现整个传输过程;网络控制器与运算加速器之间的传输路径是网络控制器至PCIe DP、PCIe DP至ATU、ATU至内部总线,其中,网络控制器至PCIe DP以及PCIe DP至ATU通过PCIe链路传输。
从图7可以看出,运算加速器中的分流电路可以接收第一PCIe设备(网络控制器或存储介质访问控制器)通过PCIe链路发送的第一数据,并通过内部总线传输该第一数据;还可以将该第一PCIe设备通过PCIe链路发送的第二数据通过PCIe链路向处理器发送;还可以接收内部总线传输的数据或指令,并通过PCIe链路向该第一PCIe设备发送上述数据或上述指令。
举例来说,第一PCIe设备为网络控制器,第二PCIe下游接口是与该网络控制器通过PCIe链路连接的PCIe DP,第三地址转换为与该第二PCIe下游接口连接的地址转换器。从图7可以看出,第二PCIe下游接口(与网络控制器通过PCIe链路连接的PCIe DP)可以接收第一PCIe设备(网络控制器)通过PCIe链路发送的第一数据,并将该第一数据发送至第三地址转换器(与该第二PCIe下游接口连接的地址转换器);该第三地址转换器可以将上述第一地址转换为内部物理地址后,通过上述内部总线传输上述第一数据。从图7还可以看出,第二PCIe下游接口可以将上述第二数据发送至上述第三地址转换器;上述第三地址转换器可以将上述第二数据通过PCIe链路传输至上述虚拟PCI-PCI;上述虚拟PCI-PCI,用于将上述第二数据通过PCIe链路传输上述处理器。本申请实施例中,运算加速器中的分流电路可以实现外部PCIe设备与运算加速器以及CPU的通信。这样可以将PCIe链路上的流量直接在运算加速器的内部总线上传输,以便于减少在公共PCIe链路上所产生的带宽冲突。
可以理解,本申请实施例中,运算加速器中的分流***包括至少一个PCIe下游接口、虚拟PCI-PCI桥以及与上述至少一个PCIe下游接口连接的地址转换器。举例来说,运算加速器中的分流***可以包括3个地址转换器、虚拟PCI-PCI桥以及这3个地址转换器连接的3个PCIe下游接口,每个地址转换器连接一个PCIe下游接口。
图8为本申请另一实施例提供的一种运算加速器的结构示意图。如图8所示,运算加速器为一个多PCIe功能(Function)设备,运算加速器自身为一个独立的功能单元(如图8中的PCIe PF0);在PCIe EP中设置虚拟PCI-PCI桥;集成在运算加速器内部的片上网络控制器为独立的PCIe设备(如图8中的PCIe PF1)。
图8中的分流电路包括ATU、PCIe DP、虚拟PCI-PCI以及片上网络控制器。对比图8和图7可知,图8中的运算加速器与图7中的运算加速器的区别仅在于分流电路不同,其他各部件均相同。对比图6、图7以及图8,图8中的分流***为图6中的分流电路与图7中的分流电路的结合。可以理解,本申请实施例中,运算加速器中的分流***包括至少一个PCIe下游接口、虚拟PCI-PCI桥、与上述至少一个PCIe下游接口连接的地址转换器、至少一个内部PCIe设备以及与上述至少一个内部PCIe设备相对应的地址转换器。内部PCIe设备是指与运算加速器集成在一个的PCIe设备。
可选的,分流***包括:第一地址转换器、上述第一PCIe设备、第二地址转换器、第一PCIe下游接口以及虚拟PCI-PCI桥。上述第一地址转换器和上述第一PCIe设备(片上网络控制器)通过PCIe链路连接;上述第一地址转换器,用于接收上述第一PCIe设备发送的上述第一数据,将上述第一地址转换为内部物理地址后通过上述内部总线传输上述第一数据。上述第一地址转换器,还用于将上述第一PCIe设备发送的上述第二数据通过PCIe链路传输至上述处理器。上述第一PCIe下游接口,用于接收第二PCIe设备(网络控制器或存储介质访问控制器)通过PCIe链路发送的第三数据,并将上述第三数据发送至上述第二地址转换器,上述第三数据携带的第三地址位于上述第一区间,上述第二PCIe设备为运算加速器的外部设备;上述第二地址转换器,用于对上述第三地址进行地址转换,并通过上述内部总线传输上述第三数据。上述第一PCIe下游接口,还用于接收上述第二PCIe设备通过PCIe链路发送的第四数据,并将上述第四数据发送至上述第二地址转换器,上述第四数据携带的第四地址位于上述第二区间;上述第二地址转换器,还用于将上述第四数据通过PCIe链路传输至上述虚拟PCI-PCI;上述虚拟PCI-PCI,用于将上述第四数据通过PCIe链路传输上述处理器。
本申请实施例中,地址转换器可以保证PCIe设备到运算加速器的本地内存空间访问操作以及到CPU访问操作的顺序(Ordering)关系。以图8中流程为例,存储介质控制器发出到DDR的“写0”操作,后面跟随有向CPU发出的“写1”操作,“写1”和“写0”有顺序关系;CPU在检测到”写1”操作之后,启动“读/写2”事务操作,“读/写2”能够检测到“写0”的操作结果。ATU以及PCIe DP或者片上网络控制器,可以根据目的空间的不同,对后续操作进行阻塞处理,以保证“写0”事务操作生效之前,阻塞后续的“写1”,即不使“写1”生效。可选的,ATU将前后接收到的写和读操作,放到同一个保持顺序关系的队列中进行排队管理,在前一个操作到达***中的保序点并得到确认之后,再发出下一个操作;如果目的地是同一个组件,则连续发出。
从图8可以看出运算加速器与CPU之间的通信路径、运算加速器与网络控制器/存储介质控制器之间的通信路径只是在DDR或者HBM产生公共路径,其他在接口电路位置独立工作不冲突。图8中的运算加速器、交换器以及CPU可以组成一个处理***。
本申请实施例中,片上网络控制器、网络控制器以及存储介质访问控制器均是独立的设备,其驱动均执行在处理器上。所以这些PCIe设备使用的地址,均是处理器上所映射出来的DMA地址,PCIe设备使用此地址到处理器以及运算加速器的内空间上访问数据。
图9为本申请另一实施例提供的一种运算加速器的结构示意图。图9中的运算加速器与图7或图8中的运算加速器相同。本申请实施例中,运算加速器可以通过分流电路与PCIe设备直接进行通信,不需要CPU参与调度。上述运算加速器包括任务调度器;上述任务调度器,用于接收处理器发送的至少两个子任务,将上述至少两个子任务存储到缓存器,上述至少两个子任务中的第一子任务需要在第二子任务完成之后执行;还用于在上述第一子任务完成之后,通过上述内部总线将目标指令传输至上述分流电路,上述目标指令用于指示第三PCIe设备执行上述第二子任务;上述分流电路,用于通过PCIe链路将上述目标指令发送给上述第三PCIe设备,上述第三PCIe设备与上述分流电路直接通过PCIe链路连接。上述任务调度器可以在确定上述第一子任务完成之后,直接利用分流电路向上述第三设备发送上述目标指令,不需要像图2中那样需要绕到CPU去完成通信。上述分流电路,还用于接收上述第三PCIe设备通过PCIe链路发送的完成指令,以及通过上述内部总线向上述任务调度器发送上述完成指令,上述完成指令用于指示上述第二子任务已完成;上述任务调度器,还用于在接收到上述完成指令后,调度计算单元或第四PCIe设备执行第三子任务,上述第三子任务需要在上述第二子任务完成之后执行,上述计算单元为运算加速器内部用于执行上述第三子任务的部件。上述运算加速器可以通过分流电路接收上述第三PCIe设备通过PCIe链路发送的完成指令,通信效率高。
本申请实施例中,任务调度器可以将CPU分配的任务包(至少两个子任务)加载到运算加速器内部的缓存器(例如图9中的DDR)。下面结合图9介绍任务调度器调度各子任务的具体举例,该举例可包括以下步骤:
(1)、任务调度器接收CPU分配的4个子任务。
(2)、运算加速器将计算子任务0提交给计算单元执行。
(3)、运算加速器在收到计算子任务0完成事件之后,将通信子任务1放置到缓存器的任务队列中;
(4)、运算加速器通知网络控制器执行通信子任务1;
(5)、运算加速器接收网络控制器发送的完成事件;
(6)、运算加速器根据网络通信子任务1的完成事件,启动被阻塞的计算子任务2,提交给计算单元。
(7)、运算加速器接收计算单元发送的完成事件。
(8)、运算加速器将存储子任务3放置到缓存器的任务队列中。
(9)、运算加速器通知存储介质访问控制器执行存储子任务3。
本申请实施例中,运算加速器通过分流电路直接与PCIe设备进行通信,可以快速地通知各PCIe设备以及计算单元执行CPU分配的任务,可以避免有CPU进行调度带来的延迟问题。
图10为本申请实施例得一种调度子任务的方法流程图,如图10所示,该方法可包括:
1001、CPU将多个任务作为一个任务包传递给运算加速器。
1002、运算加速器内部的任务调度器(处理器)调度任务执行。
1003、任务调度器判断任务包否执行完毕。
若是,执行1010;若否,执行1004。
1004、任务调度器判断当前子任务是否为计算子任务。
若是,执行1005;若否,执行1006。
1005、任务调度器将当前子任务分给计算单元。
1006、任务调度器判断当前子任务是否为通信子任务。
若是,执行1007;若否,执行1008。
1007、任务调度器将上述通信子任务提交到缓存器的通信任务队列,并通知网络控制器进行通信。
1009、提交到缓存器的存储任务队列,并通知存储介质控制器进行读写数据。
1010、整个任务包执行完成,向CPU反馈任务整体完成。
在图10所示的方法中,运算加速器并不执行输入输出IO协议栈,它仅仅根据子任务之间的依赖关系,提交子任务执行,并在通信或者存储访问命令完成之后,直接在内部直接发起下一个子任务,由此,不再绕回到Host CPU上。这样,减少CPU的协调处理过程,改善延迟问题。
图11为本申请实施例提供的一种任务调度方法流程图,该方法包括:
1101、运算加速器将来自处理器的至少两个子任务存储到第一缓存器。
上述至少两个子任务中的第二子任务需要在第一子任务完成之后执行。可选的,上述处理器将上述运算加速器可处理的至少两个子任务分配给上述运算加速器。上述至少两个子任务中可以包括至少一个计算子任务。
在一个可选的实现方式中,上述运算加速器将来自处理器的至少两个子任务存储到第一缓存器之后,上述方法还包括:
上述运算加速器将上述第二子任务提交到第二缓存器中的目标任务队列,上述目标任务队列为上述第三PCIe设备待执行的任务队列。
可选的,上述运算加速器在上述第一子任务完成之后,将上述第二子任务提交到第二缓存器中的目标任务队列。所述第二缓存器可以所述第一缓存器相同或不同。
在该实现方式中,运算加速器可以及时将第二子任务提交至相应的任务队列,以保证该任务可以快速地得到处理。
1102、上述运算加速器在上述第一子任务完成之后,向目标设备发送目标指令,上述目标指令用于指示上述目标设备执行上述第二子任务。
本申请实施例中,运算加速器可以直接调度目标设备执行相应的任务,不需要处理器的参与,可以提高调度效率。
图12为本申请实施例提供的一种运算加速器,该运算加速器包括:
第一缓存器1201,用于存储来自处理器的至少两个子任务,上述至少两个子任务中的第二子任务需要在第一子任务完成之后执行;
发送单元1202,用于在上述第一子任务完成之后,向目标设备发送目标指令,上述目标指令用于指示上述目标设备执行上述第二子任务。
本申请实施例中,运算加速器可以直接调度目标设备执行相应的任务,不需要处理器的参与,可以提高调度效率。
在一个可选的实现方式中,上述发送单元1202,还用于将上述第二子任务提交到第二缓存器中的目标任务队列,上述目标任务队列为上述第三PCIe设备待执行的任务队列。
在该实现方式中,运算加速器可以及时将第二子任务提交至相应的任务队列,以保证该任务可以快速地得到处理。
前述实施例中,分流电路均集成在运算加速器上。下面介绍一种将分流电路集成到交换器中的方案。图13为本申请实施例提供的一种交换器的结构示意图。如图13所示,交换器中集成有与图8中类似的分流电路。在实际应用中,交换器可以采用图6至图8中任一种分流电路。如图13所示,运算加速器与交换器之间通过内存访问互连总线(内存总线)连接,分流电路可以通过PCIe链路将PCIe设备发送的数据或指令传输至CPU,也可以将通过内存访问互连总线(内存总线)将PCIe设备发送的数据或指令传输至CPU。图13中的分流电路的工作原理与图8中分流电路的工作原理相同,这里不再详述。
CPU编程交换器内集成的片上网络控制器或者交换器上PCIe DP所连接的其他PCIe设备时,仍然是标准的PCIe驱动框架。配置到片上网络控制器或者PCIe EP连接PCIe设备的地址为在CPU上映射出来的DMA地址。当使用此地址去访问内存空间时,首先跟本地的ATU(地址转换单元)相匹配,如果判定是访问运算加速器的缓存器,则直接以本地物理地址访问运算加速器,如果是跟CPU进行传输,将PCIe传输所应包含的原始输入的{PCIe请求者标识、PASID、完整的64bit DMA地址}信息打包在内部物理地址域互连上传输,保持原有的驱动框架不变。
本申请实施例中,将网络控制器以及存储介质访问控制器集中在交换器上,运算加速器间互联网络统一,方便物理空间布局、方便运算加速器之间共享设备、方便一个运算加速器同时使用多个网络控制器或者存储介质访问控制器。
本申请实施例提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括软件程序指令,上述程序指令被处理器执行时实现:将来自处理器的至少两个子任务存储到第一缓存器,所述至少两个子任务中的第二子任务需要在第一子任务完成之后执行;在所述第一子任务完成之后,向目标设备发送目标指令,所述目标指令用于指示所述目标设备执行所述第二子任务。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。上述计算机程序产品包括一个或多个计算机指令。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (24)
1.一种运算加速器,其特征在于,包括:
与第一外设部件互连标准PCIe设备通过PCIe链路连接的分流电路;
所述分流电路,用于接收所述第一PCIe设备通过PCIe链路发送的第一数据,并通过内部总线传输所述第一数据,所述第一数据携带的第一地址位于第一区间;
所述分流电路,还用于将所述第一PCIe设备通过所述PCIe链路发送的第二数据通过PCIe链路向处理器发送,所述第二数据携带的第二地址处于第二区间,所述第一区间和所述第二区间不重叠。
2.根据权利要求1所述的运算加速器,其特征在于,
所述分流电路,还用于接收所述内部总线传输的数据或指令,并通过PCIe链路向所述第一PCIe设备发送所述数据或所述指令。
3.根据权利要求2所述的运算加速器,其特征在于,所述分流电路包括:第一地址转换器,所述第一地址转换器和所述第一PCIe设备通过PCIe链路连接;
所述第一地址转换器,用于接收所述第一PCIe设备发送的所述第一数据,将所述第一地址转换为内部物理地址后通过所述内部总线传输所述第一数据。
4.根据权利要求3所述的运算加速器,其特征在于,
所述第一地址转换器,还用于将所述第一PCIe设备发送的所述第二数据通过PCIe链路传输至所述处理器。
5.根据权利要求4所述的运算加速器,其特征在于,所述分流电路还包括:第二地址转换器以及第一PCIe下游接口;
所述第一PCIe下游接口,用于接收第二PCIe设备通过PCIe链路发送的第三数据,并将所述第三数据发送至所述第二地址转换器,所述第三数据携带的第三地址位于所述第一区间,所述第二PCIe设备为运算加速器的外部设备;
所述第二地址转换器,用于对所述第三地址进行地址转换,并通过所述内部总线传输所述第三数据。
6.根据权利要求5所述的运算加速器,其特征在于,所述分流电路还包括:虚拟PCI-PCI桥;
所述第一PCIe下游接口,还用于接收所述第二PCIe设备通过PCIe链路发送的第四数据,并将所述第四数据发送至所述第二地址转换器,所述第四数据携带的第四地址位于所述第二区间;
所述第二地址转换器,还用于将所述第四数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第四数据通过PCIe链路传输所述处理器。
7.根据权利要求1所述的运算加速器,其特征在于,所述分流电路包括:第三地址转换器以及第二PCIe下游接口;
所述第二PCIe下游接口,用于接收所述第一PCIe设备通过PCIe链路发送的所述第一数据,并将所述第一数据发送至所述第三地址转换器;
所述第三地址转换器,用于将所述第一地址转换为内部物理地址后,通过所述内部总线传输所述第一数据。
8.根据权利要求7所述的运算加速器,其特征在于,所述分流电路还包括:虚拟PCI-PCI桥;
所述第二PCIe下游接口,还用于将所述第二数据发送至所述第三地址转换器;
所述第三地址转换器,还用于将所述第二数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第二数据通过PCIe链路传输所述处理器。
9.根据权利要求1至8任意一项所述的运算加速器,其特征在于,所述运算加速器还包括任务调度器;
所述任务调度器,用于接收处理器发送的至少两个子任务,将所述至少两个子任务存储到缓存器,所述至少两个子任务中的第二子任务需要在第一子任务完成之后执行;
所述任务调度器,还用于在所述第一子任务完成之后,通过所述内部总线将目标指令传输至所述分流电路,所述目标指令用于指示第三PCIe设备执行所述第二子任务;
所述分流电路,用于通过PCIe链路将所述目标指令发送给所述第三PCIe设备,所述第三PCIe设备与所述分流电路通过PCIe链路连接。
10.根据权利要求9所述的运算加速器,其特征在于,
所述任务调度器,还用于将所述第二子任务提交到第二缓存器中的目标任务队列,所述目标任务队列为所述第三PCIe设备待执行的任务队列。
11.根据权利要求10所述的运算加速器,其特征在于,
所述分流电路,还用于接收所述第三PCIe设备通过PCIe链路发送的完成指令,以及通过所述内部总线向所述任务调度器发送所述完成指令,所述完成指令用于指示所述第二子任务已完成;
所述任务调度器,还用于在接收到所述完成指令后,调度计算单元或第四PCIe设备执行第三子任务,所述第三子任务需要在所述第二子任务完成之后执行,所述计算单元为运算加速器内部用于执行所述第三子任务的部件。
12.一种交换器,其特征在于,包括:
与第一外设部件互连标准PCIe设备通过PCIe链路连接的分流电路,所述分流电路与运算加速器通过内部总线连接;
所述分流电路,用于接收所述第一PCIe设备通过PCIe链路发送的第一数据,并通过所述内部总线向所述运算加速器发送所述第一数据,所述第一数据携带的第一地址位于第一区间;
所述分流电路,还用于接收所述第一PCIe设备通过PCIe链路发送的第二数据,并通过PCIe链路向处理器发送,所述第二数据携带的第二地址处于第二区间,所述第一区间和所述第二区间不重叠。
13.根据权利要求12所述的交换器,其特征在于,
所述分流电路,还用于通过所述内部总线接收来自所述运算加速器的数据或指令,并通过PCIe链路向所述第一PCIe设备发送所述数据或所述指令。
14.根据权利要求13所述的交换器,其特征在于,所述分流电路包括:第一地址转换器,所述第一地址转换器和所述第一PCIe设备通过PCIe链路连接;
所述第一地址转换器,用于通过PCIe链路接收所述第一PCIe设备发送的所述第一数据,将所述第一地址转换为本地物理地址后通过所述内部总线向所述运算加速器发送所述第一数据,所述本地物理地址用于访问所述运算加速器。
15.根据权利要求14所述的交换器,其特征在于,
所述第一地址转换器,还用于将所述第一PCIe设备发送的所述第二数据通过PCIe链路传输至所述处理器。
16.根据权利要求15所述的交换器,其特征在于,所述分流电路还包括:第二地址转换器以及第一PCIe下游接口;
所述第一PCIe下游接口,用于接收第二PCIe设备通过PCIe链路发送的第三数据,并将所述第三数据发送至所述第二地址转换器,所述第三数据携带的第三地址位于所述第一区间,所述第二PCIe设备为交换器的外部设备;
所述第二地址转换器,用于对所述第三地址进行地址转换,并通过所述内部总线向所述运算加速器发送所述第三数据。
17.根据权利要求16所述的交换器,其特征在于,所述分流电路还包括:虚拟PCI-PCI桥;
所述第一PCIe下游接口,还用于接收所述第二PCIe设备通过PCIe链路发送的第四数据,并将所述第四数据发送至所述第二地址转换器,所述第四数据携带的第四地址位于所述第二区间;
所述第二地址转换器,还用于将所述第四数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第四数据通过PCIe链路传输所述处理器。
18.根据权利要求12至13任意一项所述的交换器,其特征在于,所述分流电路包括:第三地址转换器以及第二PCIe下游接口;
所述第二PCIe下游接口,用于接收所述第一PCIe设备通过PCIe链路发送的所述第一数据,并将所述第一数据发送至所述第三地址转换器;
所述第三地址转换器,用于将所述第一地址转换为本地物理地址后通过所述内部总线向所述运算加速器发送所述第一数据,所述本地物理地址用于访问所述运算加速器。
19.根据权利要求18所述的交换器,其特征在于,所述分流电路还包括:虚拟PCI-PCI桥;
所述第二PCIe下游接口,还用于将第二数据发送至所述第三地址转换器;
所述第三地址转换器,还用于将所述第二数据通过PCIe链路传输至所述虚拟PCI-PCI;
所述虚拟PCI-PCI,用于将所述第二数据通过PCIe链路传输至处理器。
20.一种任务调度方法,其特征在于,所述方法包括:
运算加速器将来自处理器的至少两个子任务存储到第一缓存器,所述至少两个子任务中的第二子任务需要在第一子任务完成之后执行;
所述运算加速器在所述第一子任务完成之后,向目标设备发送目标指令,所述目标指令用于指示所述目标设备执行所述第二子任务。
21.根据权利要求20所述的方法,其特征在于,所述运算加速器将来自处理器的至少两个子任务存储到第一缓存器之后,所述方法还包括:
所述运算加速器将所述第二子任务提交到第二缓存器中的目标任务队列,所述目标任务队列为第三PCIe设备待执行的任务队列。
22.一种运算加速器,其特征在于,包括:
第一缓存器,用于存储来自处理器的至少两个子任务,所述至少两个子任务中的第二子任务需要在第一子任务完成之后执行;
发送单元,用于在所述第一子任务完成之后,向目标设备发送目标指令,所述目标指令用于指示所述目标设备执行所述第二子任务。
23.根据权利要求22所述的运算加速器,其特征在于,
所述发送单元,还用于将所述第二子任务提交到第二缓存器中的目标任务队列,所述目标任务队列为第三PCIe设备待执行的任务队列。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求20-21任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/109214 WO2020062305A1 (zh) | 2018-09-30 | 2018-09-30 | 运算加速器、交换器、任务调度方法及处理*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112867998A CN112867998A (zh) | 2021-05-28 |
CN112867998B true CN112867998B (zh) | 2024-05-10 |
Family
ID=69951029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880098081.XA Active CN112867998B (zh) | 2018-09-30 | 2018-09-30 | 运算加速器、交换器、任务调度方法及处理*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US11403250B2 (zh) |
EP (1) | EP3851970A4 (zh) |
CN (1) | CN112867998B (zh) |
WO (1) | WO2020062305A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238838B (zh) * | 2021-04-22 | 2023-01-24 | ***股份有限公司 | 一种任务调度方法、装置及计算机可读存储介质 |
CN113609056B (zh) * | 2021-06-25 | 2023-08-25 | 曙光信息产业(北京)有限公司 | 数据传输测试方法、装置、设备以及存储介质 |
CN117076140B (zh) * | 2023-10-17 | 2024-01-23 | 浪潮(北京)电子信息产业有限公司 | 一种分布式计算方法、装置、设备、***及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046724A (zh) * | 2006-05-10 | 2007-10-03 | 华为技术有限公司 | 磁盘接口处理器以及磁盘操作命令的处理方法 |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104391820A (zh) * | 2014-11-25 | 2015-03-04 | 清华大学 | 基于fpga的通用浮点矩阵处理器硬件结构 |
CN108536642A (zh) * | 2018-06-13 | 2018-09-14 | 北京比特大陆科技有限公司 | 大数据运算加速***和芯片 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI257553B (en) * | 2004-06-04 | 2006-07-01 | Asustek Comp Inc | Multiple over-clocking main board and control method thereof |
US8161209B2 (en) * | 2008-03-31 | 2012-04-17 | Advanced Micro Devices, Inc. | Peer-to-peer special purpose processor architecture and method |
US9405550B2 (en) * | 2011-03-31 | 2016-08-02 | International Business Machines Corporation | Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link |
US9037770B2 (en) * | 2011-05-05 | 2015-05-19 | International Business Machines Corporation | Accelerator engine emulation over an interconnect link |
JP6152694B2 (ja) * | 2013-05-10 | 2017-06-28 | 株式会社リコー | 画像データ処理装置、画像処理装置、及び画像データ転送方法 |
CN103631671B (zh) * | 2013-11-19 | 2016-05-04 | 无锡众志和达数据计算股份有限公司 | 一种ssd存储器的数据保护方法及控制器 |
US9684614B2 (en) * | 2014-01-27 | 2017-06-20 | Signalchip Innovations Private Limited | System and method to convert lock-free algorithms to wait-free using a hardware accelerator |
CN104102579B (zh) * | 2014-06-30 | 2017-07-28 | 重庆邮电大学 | 一种基于多核或众核嵌入式处理器的网络测量***及方法 |
US10802995B2 (en) * | 2018-07-26 | 2020-10-13 | Xilinx, Inc. | Unified address space for multiple hardware accelerators using dedicated low latency links |
US11079958B2 (en) * | 2019-04-12 | 2021-08-03 | Intel Corporation | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator |
US11231868B2 (en) * | 2020-04-07 | 2022-01-25 | Eidetic Communications Inc. | System and method for performing computational storage utilizing a hardware accelerator |
-
2018
- 2018-09-30 EP EP18935362.6A patent/EP3851970A4/en active Pending
- 2018-09-30 WO PCT/CN2018/109214 patent/WO2020062305A1/zh unknown
- 2018-09-30 CN CN201880098081.XA patent/CN112867998B/zh active Active
-
2021
- 2021-03-29 US US17/216,250 patent/US11403250B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046724A (zh) * | 2006-05-10 | 2007-10-03 | 华为技术有限公司 | 磁盘接口处理器以及磁盘操作命令的处理方法 |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104391820A (zh) * | 2014-11-25 | 2015-03-04 | 清华大学 | 基于fpga的通用浮点矩阵处理器硬件结构 |
CN108536642A (zh) * | 2018-06-13 | 2018-09-14 | 北京比特大陆科技有限公司 | 大数据运算加速***和芯片 |
Also Published As
Publication number | Publication date |
---|---|
WO2020062305A1 (zh) | 2020-04-02 |
CN112867998A (zh) | 2021-05-28 |
EP3851970A1 (en) | 2021-07-21 |
EP3851970A4 (en) | 2021-10-27 |
US20210216489A1 (en) | 2021-07-15 |
US11403250B2 (en) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240168823A1 (en) | Computer cluster arrangement for processing a computation task and method for operation thereof | |
US20170185545A1 (en) | Hardware accelerated communications over a chip-to-chip interface | |
JP2593146B2 (ja) | データハブ | |
US11403250B2 (en) | Operation accelerator, switch, task scheduling method, and processing system | |
EP3798835A1 (en) | Method, device, and system for implementing hardware acceleration processing | |
US7643477B2 (en) | Buffering data packets according to multiple flow control schemes | |
US8725919B1 (en) | Device configuration for multiprocessor systems | |
JP5231400B2 (ja) | マルチプロセッサ・ゲートウェイ | |
KR102007368B1 (ko) | Pci 익스프레스 스위치 및 이를 이용한 컴퓨터 시스템 | |
US11341087B2 (en) | Single-chip multi-processor communication | |
US20020174165A1 (en) | Cluster system, computer and program | |
CN106844263B (zh) | 一种基于可配置的多处理器计算机***及实现方法 | |
US7564860B2 (en) | Apparatus and method for workflow-based routing in a distributed architecture router | |
US20090292856A1 (en) | Interserver communication mechanism and computer system | |
TW200407712A (en) | Configurable multi-port multi-protocol network interface to support packet processing | |
US20160217094A1 (en) | Input/output control device, input/output control system, and input/output control method | |
CN117493237A (zh) | 计算设备、服务器、数据处理方法和存储介质 | |
JP6928280B2 (ja) | 情報処理システム | |
KR20050080704A (ko) | 프로세서간 데이터 전송 장치 및 방법 | |
JP7146075B2 (ja) | 複数のプロセッサ装置と複数のインターフェースを有するデータ処理装置 | |
WO2019203331A1 (ja) | 中継装置および情報処理システム | |
KR20210006127A (ko) | 다중 프로세서 인터럽트 신호 처리 장치 | |
US20170295237A1 (en) | Parallel processing apparatus and communication control method | |
CN117971135B (zh) | 存储设备的访问方法、装置、存储介质和电子设备 | |
US9678905B2 (en) | Bus controller, bus control system and network interface |
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 |