CN107690622A - 实现硬件加速处理的方法、设备和系统 - Google Patents
实现硬件加速处理的方法、设备和系统 Download PDFInfo
- Publication number
- CN107690622A CN107690622A CN201680026124.4A CN201680026124A CN107690622A CN 107690622 A CN107690622 A CN 107690622A CN 201680026124 A CN201680026124 A CN 201680026124A CN 107690622 A CN107690622 A CN 107690622A
- Authority
- CN
- China
- Prior art keywords
- hardware
- data
- address
- accelerated processing
- unit
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 449
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000001133 acceleration Effects 0.000 claims abstract description 455
- 238000003860 storage Methods 0.000 claims abstract description 116
- 238000013506 data mapping Methods 0.000 claims description 102
- 230000006870 function Effects 0.000 claims description 38
- 238000013507 mapping Methods 0.000 claims description 30
- 230000006978 adaptation Effects 0.000 claims description 24
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000003111 delayed effect Effects 0.000 claims description 2
- 230000014759 maintenance of location Effects 0.000 claims description 2
- 238000007726 management method Methods 0.000 description 25
- 238000009826 distribution Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009975 flexible effect Effects 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/206—Memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本发明实施例提供了一种实现硬件加速处理的方法、设备和系统,以在不同计算机设备之间共享硬件加速资源时,节省CPU和内存资源的占用和消耗。本发明实施例提供的硬件加速处理的方法,将硬件加速单元的数据缓存地址经过MMIO处理,得到CPU的寻址空间中的地址,并且硬件加速单所述网卡具有RDMA或DMA功能。或者硬件加速设备的网卡能够直接将接收到的待硬件加速处理的数据发送给硬件加速处理单元。这样,不仅节省了所述计算机设备中CPU接收和转发所述待硬件加速处理的数据对资源的消耗,也节省了所述计算机设备中内存的存储空间。
Description
技术领域
本发明涉及信息技术领域,特别涉及硬件加速处理的方法、设备和系统。
背景技术
在当前的计算集群中,随着硬件加速模块越来越多的应用,对于硬件加速模块的性能要求也越来越高,当单一硬件加速模块不满足需求时,可能会需要安装更多的硬件加速模块。而在一个大型的集群中,不同节点间的硬件加速模块的负荷是不一样的。
在现有的计算机系统中,随着各种业务处理量的增加,单纯的使用CPU进行业务的处理已经越来越不能满足应用的性能需求,CPU一般通过软件架构的优化来系统处理性能,难度大,且提升幅度有限。目前业界常见的提升系统性能的方式是提升硬件的性能。数据中心服务器根据业务情况一般都会内置一些实用的硬件加速引擎辅助处理器内核进行工作,这些引擎运行时并不消耗CPU资源。这些硬件加速引擎包括但不限于:智能报文分发引擎、硬件加密、硬件压缩/解压缩、图形处理加速等。
为避免硬件加速资源的浪费,硬件加速资源或硬件加速引擎通常会分布在不同的业务节点(例如服务器等计算机设备)上。但在多个节点之间相互共享或调用硬件加速资源时,往往需要消耗节点上中央处理器(CPU,central processor unit)和内存的资源以进行数据的拷贝,造成CPU和内存资源的占用和消耗。
发明内容
本发明实施例提供一种实现硬件加速处理的方法、设备和系统,在不同计算机设备之间共享硬件加速资源时,节省CPU和内存资源的占用和消耗。
本发明实施例的第一方面,提供了一种计算机设备,所述计算机设备包括中央处理器CPU、硬件加速单元和网卡等计算机组成部件。所述计算机设备还可以包括内存、硬盘、电源等其它计算机部件。所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能,在接收另一计算机设备发送的数据映射地址和待硬件加速处理的数据,根据所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间。其中,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述CPU的寻址空间中的地址,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间。所述硬件加速单元对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,得到硬件加速处理后的数据。
上述计算机设备中,由于所述数据映射地址是将所述硬件加速单元的数据缓存地址经过MMIO处理后的所述CPU的寻址空间中的地址,并且所述网卡具有RDMA或DMA功能。因此,所述网卡基于RDMA功能或DMA功能,将接收到的待硬件加速处理的数据发送到CPU的寻址空间时,能够根据所述数据映射地址将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间中。这样,就不需要网卡将接收到的待硬件加速处理的数据发送给CPU的寻址空间所对应的内存中,也不需要CPU再将所述待硬件加速处理的数据从内存发送到所述硬件加速单元的数据缓存地址对应的数据存储空间中。不仅节省了所述计算机设备中CPU接收和转发所述待硬件加速处理的数据对资源的消耗,也节省了所述计算机设备中内存的存储空间。
其中,所述硬件加速单元可以是独立于CPU的单独硬件设备,也可以是集成在CPU或网卡中的硬件加速功能模块。
其中,所述网卡可以同时接收到待硬件加速处理的数据以及所述数据映射地址,也可以先接收到所述数据映射地址再接收到待硬件加速处理的数据,还可以先接收到待硬件加速处理的数据再接收到所述数据映射地址。
可选的,所述硬件加速单元的数据缓存地址是其基地址寄存器BAR中的缓存地址。
可选的,将所述硬件加速单元的数据缓存地址进行MMIO处理,以映射到CPU的寻址空间是由所述硬件加速单元来实现的。具体的,可以是所述硬件加速单元的驱动程序将其数据缓存地址通过MMIO处理映射到CPU的寻址空间。
可选的,所述计算机设备的基本输入输出系统(BIOS,Basic Input/OutputSystem)在启动阶段获取所述硬件加速单元的BAR寄存器的基地址及BAR地址空间长度,并根据所述基地址及BAR地址空间的长度进行CPU寻址空间地址的预留,预留与BAR地址空间长度相同的地址空间。当所述计算机设备进入操作系统(OS,Operating System)启动阶段后,所述硬件加速单元的驱动程序读取该硬件加速单元配置空间的基地址及BAR地址空间长度,然后调用OS提供的MMIO映射函数将所述基地址以及相应的BAR地址空间映射到CPU的寻址空间。这样,CPU可以通过访问寻址空间中的地址,实现对所述硬件加速单元的缓存地址的访问,即所述硬件加速单元BAR地址空间中缓存地址的访问。因为CPU通过访问寻址空间来访问所述硬件加速单元,CPU访问所述硬件加速单元的数据缓存地址就可以使用与读写内存一样的指令来实现,可以简化程序设计的难度和接口的复杂性。
可选的,所述硬件加速单元可以呈现为一个PCIe设备,即遵循PCIe的协议规范的硬件加速单元。当所述硬件加速单元不是PCIe设备时(如CPU中内置的加速器等),通常会有可直接访问的CPU地址。例如直接通过双倍数据速率(DDR,Double Data Rate)接口与CPU连接的硬件加速设备,自身会包含一段CPU可访问的地址空间。同样能够实现PCIe设备经过MMIO映射后的同样的技术效果。
可选的,如果所述硬件加速设备不支持MMIO映射,则修改硬件加速设备的驱动程序及硬件逻辑,以实现MMIO方式映射其数据缓存地址。
可选的,在将所述硬件加速单元中的数据缓存地址通过MMIO方式映射到CPU的寻址空间时,可以选择将一部分数据缓存地址映射到CPU的寻址空间,一部分不进行映射处理。对于经过MMIO处理并映射到CPU寻址空间的数据缓存地址,可以被用来供其他计算机设备的CPU申请相应的硬件加速资源,即共享硬件加速资源。对于未进行MMIO映射的数据缓存地址,则留给所述计算机设备上的应用程序通过该计算机设备上的CPU进行硬件加速的处理,即私有硬件加速资源。
可选的,上述共享硬件资源和私有硬件资源的划分,还可以动态调整,以满足不同的实际需要,提高硬件加速资源使用的灵活性。
可选的,还可以将所述硬件加速单元的资源分成多个队列,不同的队列分别处理不同的数据。这种划分方式即可以通过软件的方式进行划分,也可以通过硬件逻辑的方式划分。一种软件划分方式是由所述硬件加速单元中运行的管理软件提供统一的调度接口,所有需要访问所述硬件加速单元的请求方均需要所述计算机设备中的CPU调用所述管理软件的调度接口来获取相应资源的描述,并根据相应的资源描述实现对对应队列的控制。硬件的划分则是从硬件逻辑上对所述硬件加速单元的资源进行切割,如所述将硬件加速单元分成多个硬件逻辑单元,每个硬件逻辑单元互相独立。硬件加速请求方需要访问硬件加速资源的时候只需要申请一个或多个硬件逻辑单元即可。这样可以避免出现硬件加速设备资源分配的冲突。
所述计算机设备可以将所述硬件加速单元的数据映射地址发送给管理节点,所述管理节点是与所述计算机设备相连的设备。所述另一计算机设备可以从所述管理节点获取所述计算机设备中所述硬件加速单元的数据映射地址。
可选的,在完成对所述待硬件加速处理的数据进行硬件加速处理后,所述硬件加速单元判断是否需要将所述硬件加速处理后的数据发送给所述另一计算机设备,在判断为是时,直接将所述硬件加速处理后的数据发送给所述网卡。相应的,所述网卡将所述所述硬件加速处理后的数据,发送给所述另一计算机设备。
所述判断的方式可以根据加速处理后的数据的目的地址(即目的地址位于所述另一计算机设备中)或预设的标识(即标识加速处理的数据来自于所述另一计算机设备的标识)来实现。
所述网卡将所述所述硬件加速处理后的数据发送给所述另一计算机设备,可以通过RDMA的方式,将接收到的所述硬件加速单元加速处理后的数据发送给所述另一计算机设备。
可选的,所述网卡可以通过RDMA协议中的SEND/WRITE操作将硬件加速处理后的数据发送给所述另一计算机设备。
可选的,所述网卡可以根据硬件加速处理后的数据的下一跳目的地址发送所述硬件加速处理后的数据。通过指定下一跳的目的地,既可以将所述硬件加速处理后的数据直接返回请求的计算机设备,也可以发送给其它计算机设备,实现灵活的数据处理。
当所述另一计算机设备需要所述硬件加速处理单元进行硬件加速处理时,需要获取所述硬件加速单元的控制权限。为进一步避免所述CPU的资源消耗,可选的,所述硬件加速单元将所述硬件加速单元的控制寄存器地址进行MMIO处理,以将所述控制寄存器地址映射到所述CPU的寻址空间。这样,所述另一计算机设备可以根据获取到的、经过MMIO处理的所述硬件加速单元的控制寄存器地址,通过所述网卡直接发送给所述硬件加速单元。
其中,所述硬件加速单元的控制寄存器地址可以是所述硬件加速单元BAR中的控制寄存器地址。
可选的,所述硬件加速单元的BAR地址空间还可以包括锁地址,在将硬件加速单元的BAR地址空间映射到所述计算机设备的CPU寻址空间时,还包括将所述锁地址映射到所述计算机设备的CPU的寻址空间。
本发明实施例的第二方面,提供了一种硬件加速设备,所述硬件加速设备包括硬件加速处理单元和网卡。当然所述硬件加速设备还可以包括支撑所述硬件加速单元和所述网卡运行的其它必要硬件,如电源等。所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能,在接收待硬件加速处理的数据时,将所述待硬件加速处理的数据发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间中,所述数据缓存地址对应的数据存储空间,是所述硬件加速处理单元用于存储需要硬件加速处理数据的存储空间。所述硬件加速处理单元对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述网卡。
上述硬件加速设备中包括硬件加速处理单元和网卡,即可实现网卡直接将待硬件加速处理的数据发送给硬件加速处理单元来处理。省去了CPU和内存的参与来实现硬件加速资源的共享,进一步节省了硬件资源。同时,由于也不需要服务器中运行CPU、内存之外的其它设备来实现硬件加速处理,进一步节省了设置服务器所带来的服务器其它硬件设备或硬件资源的消耗,进一步提升了资源的利用率。
可选的,所述硬件加速处理单元是由现场可编程门阵列FPGA组成的,且具有硬件加速处理功能。
可选的,所述硬件加速设备还包括共享内存,所述共享内存的存储空间即所述硬件加速处理单元的数据缓存地址对应的数据存储空间,所述硬件加速处理单元与所述网卡共享所述共享内存。相应的,所述网卡将所述待硬件加速处理的数据发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间包括:所述网卡将所述待硬件加速处理的数据写入所述共享内存中。
可选的,所述硬件加速处理单元根据其它计算机设备的请求,将所述硬件加速处理单元的数据缓存地址发送给请求的计算机设备;或所述硬件加速处理单元将其数据缓存地址发送给管理单元,所述管理单元存储有硬件加速处理单元的地址信息,所述管理单元中的地址信息能够被其它计算机设备获取并使用。由于所述硬件加速处理单元的数据缓存地址能够被其它计算机设备获取,并使得其它计算机设备能够获取其数据缓存地址请求硬件加速处理,使得所述硬件加速设备能够被其它计算机设备共享使用。
可选的,所述硬件加速处理单元还包括控制寄存器信息和/或状态寄存器的信息。所述控制寄存器信息和/或状态寄存器的信息能够被其它计算机设备获取,使得其它计算机设备在请求所述硬件加速设备进行硬件加速处理时,根据控制寄存器信息控制所述硬件加速设备和/或根据状态寄存器的信息获取所述硬件加速设备的状态。
可选的,所述网卡可以根据硬件加速处理后的数据的下一跳目的地址发送所述硬件加速处理后的数据。通过指定下一跳的目的地,既可以将所述硬件加速处理后的数据直接返回请求的计算机设备,也可以发送给其它计算机设备,实现灵活的数据处理。
本发明实施例的第三方面,提供了一种计算机设备,所述计算机设备包括中央处理器CPU和网卡等计算机组成部件。所述计算机设备还可以包括内存、硬盘、电源等其它计算机部件。所述CPU通过所述网卡获取另一计算机设备中硬件加速单元的数据映射地址,根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述另一计算机设备,并接收所述另一计算机设备返回的对所述待硬件加速处理的数据进行硬件加速处理后的数据。其中,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述另一计算机设备中的CPU寻址空间中的地址。
上述计算机设备中,由于通过所述数据映射地址请求硬件加速处理,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过MMIO处理后的所述CPU的寻址空间中的地址,使得所述另一计算机设备能够直接将所述待硬件加速处理的数据发送到与该CPU的寻址空间的地址存在映射关系的所述硬件加速单元的数据缓存地址所对应的数据存储空间中。这样,就不需要所述另一计算机设备的CPU和内存参与待硬件加速处理数据的转发。能够节省所述另一计算机设备中CPU接收和转发所述待硬件加速处理的数据对资源的消耗,也节省了所述另一计算机设备中内存的存储空间。
可选的,所述CPU可以通过RDMA的方式,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址通过所述网卡发送给所述另一计算机设备。
可选的,所述网卡将接收到的硬件加速处理后的数据发送到所述计算机设备的内存中。所述计算机设备中请求硬件加速处理的应用程序可以通过CPU从内存获取所述硬件加速单元硬件加速处理后的数据。
可选的,所述网卡也可以通过DMA的方式,将所述硬件加速单元加速处理后的数据发送到内存中。
可选的,所述CPU还可以向所述硬件加速单元发送启动加速处理的指示,以指示所述硬件加速单元对所述待硬件加速处理的数据进行硬件加速处理。
可选的,所述CPU,还用于获取所述硬件加速单元的控制寄存器地址,并根据获取到的所述硬件加速单元的控制寄存器的地址,实现对所述硬件加速单元的控制。
可选的,所述CPU可以通过获取所述硬件加速单元队列的方式,实现对所述硬件加速单元的硬件加速资源的控制。
对于硬件资源划分的方式,是将硬件加速单元403的资源分成多个队列,不同的队列分别处理不同的数据来实现。所述硬件加速单元的资源分成多个队列,不同的队列分别处理不同的数据。这种划分方式即可以通过软件的方式进行划分,也可以通过硬件逻辑的方式划分。一种软件划分方式是由所述硬件加速单元中运行的管理软件提供统一的调度接口,所有需要访问所述硬件加速单元的请求方均需要所述计算机设备中的CPU调用所述管理软件的调度接口来获取相应资源的描述,并根据相应的资源描述实现对对应队列的控制。硬件的划分则是从硬件逻辑上对所述硬件加速单元的资源进行切割,如所述将硬件加速单元分成多个硬件逻辑单元,每个硬件逻辑单元互相独立。所述需要访问硬件加速资源的时候只需要申请一个或多个硬件逻辑单元即可。这样可以避免出现硬件加速设备资源分配的冲突。
可选的,所述CPU还可以获取所述硬件加速单元的锁地址,所述锁地址是所述硬件加速单元BAR中的锁地址。可选的,所述锁地址是对所述硬件加速单元BAR中锁地址经过MMIO处理映射到所述硬件加速单元所在计算机设备CPU寻址空间中的地址。
可选的,所述CPU可以采用lock的方式,也可以采用比较并交换(CAS,Compare andSwap)等无锁算法的方式。采用Lock的方式,即忙等待操作,若申请硬件加速资源的计算机设备(例如CPU301)获取不到硬件加速资源则一直尝试获取,直到能够获取可用资源为止。CAS也是RDMA中集成的一种无锁算法。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。当多个计算机设备上不同的CPU或CPU中的线程尝试使用CAS同时更新同一个变量时,只有其中一个CPU或线程能更新变量的值,而其它CPU或线程都会失败。失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。通过这样的操作,当存在竞争的时候,有且仅有一个竞争者(例如CPU或线程)能够获取资源,解决了资源竞争的问题。对于所述硬件加速单元资源的抢占,所述CPU可以采用Lock的方式,也可以采用CAS的方式,以避免出现硬件加速设备资源分配的冲突。
可选的,所述CPU根据所述计算机设备中应用程序的硬件加速请求,获取所述硬件加速单元的数据映射地址;或,所述CPU根据所述第一计算机设备中适配单元的指示,获取所述硬件加速单元的数据映射地址;其中,所述适配单元的指示是所述适配单元转换所述计算机设备中应用程序的硬件加速请求后的指示。
这样,在具体实现时,就不需要所述计算机设备中的应用程序修改接口,通过所述适配单元实现所述硬件加速单元的数据映射地址以及控制计算器地址等信息的获取。所述适配单元对应用程序可以呈现为一个硬件加速设备或硬件加速单元,使得计算机设备中的应用程序不感知硬件加速处理是在另外一个计算机设备上实现。
本发明实施例的第四方面,提供了一种实现硬件加速处理的系统。所述实现硬件加速处理的系统包括第一计算机设备和第二计算机设备,所述第一计算机设备包括第一中央处理器CPU,所述第二计算机设备包括第二CPU、硬件加速单元和网卡。所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能。所述第一CPU获取所述硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第二CPU寻址空间中的地址;并根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述网卡。所述网卡接收所述待硬件加速处理的数据以及所述硬件加速单元的数据映射地址后,根据所述数据映射地址将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间。其中,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间。所述硬件加速单元对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述第一计算机设备。
上述实现硬件加速处理的系统中,由于所述数据映射地址是将所述硬件加速单元的数据缓存地址经过MMIO处理后的所述CPU的寻址空间中的地址,并且所述网卡具有RDMA或DMA功能。因此,所述网卡基于RDMA功能或DMA功能,将接收到的待硬件加速处理的数据发送到CPU的寻址空间时,能够根据所述数据映射地址将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间中。这样,就不需要网卡将接收到的待硬件加速处理的数据发送给所述第二CPU的寻址空间所对应的内存中,也不需要所述第二CPU再将所述待硬件加速处理的数据从内存发送到所述硬件加速单元的数据缓存地址对应的数据存储空间中。不仅节省了所述第二计算机设备中所述第二CPU接收和转发所述待硬件加速处理的数据对资源的消耗,也节省了所述第二计算机设备中内存的存储空间。
可选的,在完成对所述待硬件加速处理的数据进行硬件加速处理后,所述硬件加速单元判断是否需要将所述硬件加速处理后的数据发送给所述第一计算机设备,在判断为是时,直接将所述硬件加速处理后的数据发送给所述网卡。相应的,所述网卡将所述所述硬件加速处理后的数据发送给所述第一计算机设备。
可选的,所述第一CPU,还用于获取所述硬件加速单元的控制寄存器地址,并根据获取到的所述硬件加速单元的控制寄存器的地址,获取所述硬件加速单元的控制权限;其中,所述控制寄存器地址是将所述硬件加速单元的控制寄存器地址进行MMIO处理并映射到所述第二CPU寻址空间的地址。
可选的,所述第一CPU根据所述第一计算机设备中应用程序的硬件加速请求,获取所述第二计算机设备中硬件加速单元的数据映射地址;或,所述第一CPU根据所述第一计算机设备中适配单元的指示,获取所述硬件加速单元的数据映射地址;其中,所述适配单元的指示是所述适配单元转换所述第一计算机设备中应用程序的硬件加速请求后的指示。
可选的,所述硬件加速处理的系统中还可以包括管理节点,所述管理节点用于获取所述第一计算机设备和/或所述第二计算机设备中硬件加速单元的数据映射地址。所述管理节点存储各个计算机设备中的硬件加速单元的数据映射地址后,可以供其它计算机设备获取相关信息以实现硬件加速资源的共享。
可选的,所述管理节点可以是一个独立的设备,例如服务器。也可以是一个具有存储功能的芯片,设置于所述第一计算机设备或所述第二计算机设备中。
可选的,所述管理单元可以主动获取并存储各个计算机设备中硬件加速单元的数据映射地址,也可以接收计算机设备发送的硬件加速单元的数据映射地址。
可选的,管理节点还可以根据预先设定的规则进行鉴权,只有鉴权通过的申请才能够获取相应的硬件加速单元的数据映射地址。同时,还可以根据各个计算机设备中硬件加速资源的忙闲状态进行硬件加速资源的分配,以及根据预先设定的规则释放相关的硬件加速资源。从而实现硬件加速资源的分配和使用更加合理。
本发明实施例的第五方面,提供了一种实现硬件加速处理的系统。所述实现硬件加速处理的系统包括第一计算机设备和硬件加速设备,所述第一计算机设备包括中央处理器CPU,所述硬件加速设备包括硬件加速处理单元和网卡。所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能。所述CPU获取所述硬件加速处理单元的数据缓存地址,所述硬件加速处理单元的数据缓存地址对应的数据存储空间用于存储所述硬件加速处理单元需要硬件加速处理的数据;并根据获取到的所述硬件加速处理单元的数据缓存地址,将待硬件加速处理的数据以及所述硬件加速处理单元的数据缓存地址,发送给所述硬件加速设备;所述网卡,用于接收所述待硬件加速处理的数据以及所述硬件加速处理单元的数据缓存地址,根据所述数据缓存地址,将所述待硬件加速处理的数据直接发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间中。所述硬件加速处理单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述网卡。所述网卡,还用于将硬件加速处理后的数据发送给所述第一计算机设备。
上述实现硬件加速处理的系统中,硬件加速设备包括硬件加速处理单元和网卡,即可实现网卡直接将待硬件加速处理的数据发送给硬件加速处理单元来处理。省去了CPU和内存的参与来实现硬件加速资源的共享,进一步节省了硬件资源。同时,由于也不需要服务器中运行CPU、内存之外的其它设备来实现硬件加速处理,进一步节省了设置服务器所带来的服务器其它硬件设备或硬件资源的消耗,进一步提升了资源的利用率。
可选的,所述硬件加速处理单元是由现场可编程门阵列FPGA组成的,且具有硬件加速处理功能。
可选的,所述硬件加速设备还包括共享内存,所述硬件加速处理单元与所述网卡共享所述共享内存,所述共享内存的存储空间即所述硬件加速处理单元的数据缓存地址对应的数据存储空间。相应的,所述网卡将所述待硬件加速处理的数据发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间包括:所述网卡将接所述待硬件加速处理的数据存入共享内存中。
可选的,所述硬件加速处理的系统中还可以包括管理节点,所述管理节点用于获取所述硬件加速设备中硬件加速处理单元的数据缓存地址。所述管理节点存储各个计算机设备中的硬件加速单元的数据映射地址或数据缓存地址后,可以供其它计算机设备获取相关信息以实现硬件加速资源的共享。
可选的,所述管理节点可以是一个独立的设备,例如服务器。也可以是一个具有存储功能的芯片,设置于所述第一计算机设备中。
可选的,所述管理单元可以主动获取所述硬件加速处理单元的数据缓存地址,也可以接收所述硬件加速设备中所述硬件加速处理单元的数据缓存地址。
可选的,管理节点还可以根据预先设定的规则进行鉴权,只有鉴权通过的申请才能够获取相应的硬件加速单元的数据映射地址。同时,还可以根据各个计算机设备中硬件加速资源的忙闲状态进行硬件加速资源的分配,以及根据预先设定的规则释放相关的硬件加速资源。从而实现硬件加速资源的分配和使用更加合理。
本发明实施例的第六方面,还提供了一种实现硬件加速处理的方法。所述方法包括:第一计算机设备中的网卡接收第二计算机设备发送的数据映射地址和待硬件加速处理的数据和地址,所述数据映射地址将对所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第一计算机设备中的中央处理器CPU寻址空间中的地址。所述网卡根据接收到的所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间。所述硬件加速单元对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,得到硬件加速处理后的数据。
可选的,在完成对所述待硬件加速处理的数据进行硬件加速处理后,所述硬件加速单元判断是否需要将所述硬件加速处理后的数据发送给所述第二计算机设备,在判断为是时,直接将所述硬件加速处理后的数据发送给所述网卡。所述网卡将所述所述硬件加速处理后的数据,发送给所述第二计算机设备。
可选的,所述硬件加速单元将所述硬件加速单元的控制寄存器地址进行MMIO处理,以将所述控制寄存器地址映射到所述第一计算机设备中CPU的寻址空间。
本发明实施例的第七方面,还提供了一种实现硬件加速处理的方法,所述方法包括:第一计算机设备中的第一中央处理器CPU获取第二计算机设备中硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第二计算机设备中的CPU寻址空间中的地址。在获取到所述第二计算机设备中硬件加速单元的数据映射地址后,所述第一CPU根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述第二计算机设备的网卡。其中,所述第二计算机设备的网卡是具有远程直接数据存取RDMA功能或直接数据存取DMA功能的网卡。所述第一CPU获取所述第二计算机设备返回的对所述待硬件加速处理的数据进行硬件加速处理后的数据。
可选的,在所述第一CPU获取第二计算机设备中硬件加速单元的数据映射地址之前,所述方法还包括:所述第一CPU获取所述硬件加速单元的控制寄存器地址,所述第一CPU根据所述硬件加速单元的控制寄存器的地址,实现对所述硬件加速单元的控制。
可选的,所述方法还包括:所述第一CPU根据所述第一计算机设备中应用程序的硬件加速请求,获取所述第二计算机设备中硬件加速单元的数据映射地址;或,所述第一CPU根据所述第一计算机设备中适配单元的指示,获取所述第二计算机设备中硬件加速单元的数据映射地址;其中,所述适配单元的指示是所述适配单元转换所述第一计算机设备中应用程序的硬件加速请求后的指示。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中一种实现硬件加速的系统结构示意图;
图2(a)为本发明实施例一种硬件加速处理的方法的应用场景结构示意图;
图2(b)为本发明实施例另一种硬件加速处理的方法的应用场景结构示意图;
图3为本发明实施例一种实现硬件加速处理的方法的流程示意图;
图4所示为本发明实施例提供的种硬件加速设备的结构示意图;
图5(a)为本发明实施例第一种实现硬件加速处理的系统的结构示意图;
图5(b)为本发明实施例第二种实现硬件加速处理的系统的结构示意图;
图5(c)为本发明实施例第三种实现硬件加速处理的系统的结构示意图;
图5(d)为本发明实施例第四种实现硬件加速处理的系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
参考图1,图1为现有技术中一种实现硬件加速的系统结构示意图。如图1所示,计算机设备10包括中央处理器(CPU,central processing unit)101、内存102、硬件加速单元103和网卡104;计算机设备20包括CPU201、内存202、硬件加速单元203和网卡204。其中,网卡104和网卡204通过网络连接,实现计算机设备10与计算机设备20之间的通信。
图1中的硬件加速单元,例如硬件加速单元103和硬件加速单元203,具有硬件加速功能,硬件加速就是利用硬件模块来替代运行在CPU上的软件工作以充分利用硬件所固有的快速特性。硬件加速通常比软件算法的效率高,能够分担CPU的部分业务,并能够实现分担的CPU的业务的加速处理。常见的硬件加速功能包括但不限于:智能报文分发、硬件压缩/解压缩、硬件加密和图形加速处理等。出于成本的考虑,一个计算机设备上通常不会配置所有的硬件加速功能。例如计算机设备101中只配置了具有硬件加密功能的硬件加速单元103,计算机设备201中只配置了图像加速处理的的硬件加速单元203。
当计算机设备10中的某一应用程序处理的业务需要硬件加速单元203进行加速处理时,该应用程序将通过CPU101发送需要硬件加速处理的数据给硬件加速单元203。CPU101首先将需要硬件加速处理的数据通过网卡104发送给网卡204,网卡204将接收到的加速请求和待硬件加速处理的数据发送到CPU201的寻址空间,即内存202中。CPU201在接收到CPU101发送的启动硬件加速处理的请求后,将待硬件加速处理的数据转发给硬件加速单元203。硬件加速单元203对待硬件加速处理的数据进行加速处理后,将加速处理的数据返回给CPU201,即返回到CPU201的寻址空间对应的内存202中。CPU201根据加速处理后的数据的目的地址(即计算机设备101的某一存储空间),将加速处理后的数据通过网卡204发送给网卡104。CPU101将网卡104接收到的硬件加速单元203加速处理后的数据返回给请求的应用程序。其中,上述网卡104将加速请求和待硬件加速处理的数据发送给网卡204,可以通过远程直接数据存取(RDMA,Remote Direct Memory Access)的方式发送。网卡204将加速处理后的数据发送给网卡104也可以通过RDMA的方式发送。
上述加速处理过程中,当计算机设备10中的应用程序需要使用计算机设备20中的硬件加速资源进行硬件加速处理时,计算机设备20中的CPU201需要将网卡204接收到数据保存在寻址空间对应的内存中,并发送给硬件加速单元203;以及需要将硬件加速单元203加速处理后的数据保存到寻址空间对应的内存后,发送给网卡204。上述CPU201在数据拷贝和发送过程中,需要存储、拷贝并传送硬件加速相关的请求和数据,造成CPU201和内存202资源的占用和浪费。
本发明实施例提供一种实现硬件加速的方法和设备,以解决现有技术中不同计算机设备之间实现硬件加速资源共享时,CPU和内存等资源被占用和消耗的问题。
硬件加速设备通常有两种实现方式,一种是独立于CPU的单独硬件设备,一种是集成在CPU或网卡中的硬件加速功能模块。当硬件加速设备独立于CPU时,硬件加速设备通常是一个PCIe设备或外围部件互连标准(PCI,peripheral component interconnect)设备。例如,当硬件加速设备通过PCIe总线进行数据交互时,该硬件加速设备就以PCIe设备呈现;当硬件加速设备通过PCI总线进行数据交互时,该硬件加速设备就以PCI设备呈现。本发明实施例以硬件加速设备为PCIe设备为例进行说明,其它实现形式的硬件加速设备,例如PCI设备或集成在CPU、网卡中的硬件加速功能模块,可以参照下述以PCIe设备形式呈现的硬件加速设备的实现方式来实现,不再赘述。
硬件加速设备通常被计算机设备上的应用程序访问和使用。计算机设备上应用程序在处理业务的过程中需要硬件加速设备进行加速处理时,通过CPU执行硬件加速相关的指令。CPU通过硬件加速设备提供的接口,将需要进行硬件加速处理的数据发送给硬件加速设备,并接收硬件加速处理设备返回的加速处理后的数据。由于应用程序处理业务是通过CPU来执行的,且在实际应用中,会有各种应用程序执行不同的任务来调用不同的硬件加速设备实现硬件加速处理,为清楚地描述本发明实施例提供的技术方案,本发明实施例中以CPU发起硬件加速的请求并接收硬件加速处理后的数据来描述各种应用程序通过CPU实现硬件加速处理的过程。
图2(a)为本发明实施例一种硬件加速处理的方法的应用场景结构示意图。如图2(a)所示,计算机设备30包括CPU301、内存302、硬件加速单元303和网卡304;计算机设备40包括CPU401、内存402、硬件加速单元403和网卡404。其中,CPU301、内存302、硬件加速单元303和网卡304通过计算机设备30的内部总线连接,CPU401、内存402、硬件加速单元403和网卡404通过计算机设备40的内部总线连接。计算机设备30的网卡304和计算机设备40的网卡404通过网络相连,实现计算机设备30和计算机设备40之间的连接和通信。
需要说明的是,图2(a)中,硬件加速单元303和硬件加速单元403,可以通过上述硬件加速设备实现,也可以是其它具有硬件加速功能的设备或模块来实现。并且,图2(a)只是示例性地示出了计算机设备的结构和组成,在具体实现时,计算机设备30和计算机设备40还可以包括其他组成部件,例如硬盘或显卡等部件,本发明实施例不限定计算机设备30和计算机设备40在具体实现时还包括的其它组成和结构。
图2(a)中,硬件加速单元303和硬件加速单元403具有不同的硬件加速功能。例如硬件加速单元303可以是具有硬件压缩/解压缩功能的硬件加速单元,硬件加速单元403可以是具有图形加速处理功能的硬件加速单元。当计算机设备30中的CPU301需要使用硬件加速单元403进行图形加速处理时,CPU301需要调用硬件加速单元403进行硬件加速处理。在具体实现中,硬件加速单元303和硬件加速单元403也可以具有相同的硬件加速功能,但CPU301需要调用计算机设备40中的硬件加速单元403进行硬件加速处理时,也可以通过本发明实施例提供的实现方式来实现,本发明实施例不限定硬件加速单元具体功能的实现方式。
图2(a)中,网卡404是具有RDMA功能的网卡,也可以是具有直接数据存取(DMA,Direct Memory Access)功能的网卡;网卡304也可以是具有RDMA或DMA功能的网卡。当计算机设备30以RDMA方式向计算机设备40发送数据时,CPU301将待发送数据的地址信息发送给网卡304,网卡304根据待发送数据的地址信息从所述地址信息对应的数据存储空间读取相应的数据并发送给网卡404。当计算机设备40的网卡404以RDMA方式接收数据时,网卡404会接收到待存储的数据以及待存储数据的地址信息。网卡404根据待存储数据的地址信息,将接收到的待存储的数据直接存储在计算机设备40中所述待存储数据的地址信息对应的数据存储空间中。通常情况下,网卡404接收到的待存储数据的地址信息,是CPU401的寻址空间中的地址信息。需要说明的是,网卡404可以同时接收到待存储的数据以及待存储数据的地址信息,也可以先接收到待存储数据的地址信息再接收到待存储的数据,还可以先接收到待存储的数据再接收到待存储数据的地址信息。
结合图2(a)所示的硬件架构,本发明实施例提供了一种实现硬件加速处理的方法。当计算机设备30中的某一应用程序需要使用计算机设备40中的硬件加速单元403实现硬件加速功能时,本发明实施例的一种实现硬件加速处理的方法如图3所示,包括:
步骤300:计算机设备30中的CPU301获取计算机设备40中的硬件加速单元403的数据映射地址,所述数据映射地址是将所述硬件加速单元403的数据缓存地址经过内存映射输入输出(MMIO,Memory mapping I/O)处理后的地址;
其中,所述硬件加速单元403的数据缓存地址对应的数据存储空间,是所述硬件加速单元403存储待硬件加速处理的数据的数据存储空间。对所述硬件加速单元403数据缓存地址进行MMIO处理,是将所述硬件加速单元403数据缓存地址映射到所述CPU401的寻址空间中。
步骤302:所述CPU301根据获取到的所述硬件加速单元403的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元403的数据映射地址,发送给网卡404;
可选的,上述步骤302中,所述CPU301可以是以RDMA的方式,将待硬件加速处理的数据以及所述硬件加速单元403的数据映射地址通过网卡304发送给网卡404。
步骤304:所述网卡404根据接收到的所述硬件加速单元403的数据映射地址,将接收到的所述待硬件加速处理的数据发送给硬件加速单元403;
由于所述网卡404是具有RDMA功能的网卡,根据RDMA协议,所述网卡404在接收到数据时,会将接收到的数据发送到CPU401的寻址空间中。在本步骤中,网卡404接收到的待硬件加速处理的数据的地址,是所述硬件加速单元403的数据映射地址,该数据映射地址是将所述硬件加速单元403的数据缓存地址映射到所述CPU401的寻址空间中的地址。因此,所述网卡404根据RDMA协议将接收到的待硬件加速处理的数据发送到CPU401的寻址空间时,直接将所述待硬件加速处理的数据发送到与该CPU401的寻址空间的地址存在映射关系的所述硬件加速单元403的数据缓存地址所对应的数据存储空间中。这样,就不需要网卡404将接收到的待硬件加速处理的数据发送给CPU401的寻址空间所对应的内存402中,也不需要CPU401再将所述待硬件加速处理的数据从所述内存402发送到所述硬件加速单元403的数据缓存地址对应的数据存储空间中。不仅节省了CPU401接收和转发所述待硬件加速处理的数据对资源的消耗,也节省了内存402的存储空间。
步骤306:所述硬件加速单元403对所述待硬件加速处理的数据进行加速处理,并将加速处理后的数据发送给网卡404;
所述硬件加速单元403在完成数据的加速处理后,触发将加速处理后的数据发送给CPU401,即发送到CPU401的寻址空间对应的内存402中,由所述CPU401将加速处理后的数据从内存402发送给网卡404。本发明实施例中,所述硬件加速单元403可以在返回加速处理后的数据时,判断加速处理后的数据是否是发送给计算机设备30的,判断的方式可以根据加速处理后的数据的目的地址(即目的地址位于计算机设备30中)或预设的标识(即标识加速处理的数据来自于计算机设备30的标识)来实现。在判断是发送给计算机设备30时,直接将加速处理后的数据发送给网卡404。由于硬件加速单元403直接将加速处理后的数据发送给网卡404,不需要发送到CPU401的寻址空间对应的内存402中,进一步节省了CPU401和内存402的资源消耗。
步骤308:所述网卡404将接收到的所述硬件加速单元403加速处理后的数据发送给计算机设备30。
具体的,所述网卡404可以通过RDMA的方式,将接收到的所述硬件加速单元403加速处理后的数据发送给网卡304,网卡304将接收到的加速处理后的数据发送到内存302,请求硬件加速处理的应用程序可以通过CPU从内存302获取所述硬件加速单元404加速处理后的数据。其中,网卡304也可以通过直接内存访问(DMA,Direct Memory Access)的方式,将所述硬件加速单元404加速处理后的数据发送到内存302中。
上述数据映射地址,是将所述硬件加速单元403的数据缓存地址经过MMIO处理后的地址。所述硬件加速单元403的数据缓存地址,通常是硬件加速单元403的基地址寄存器(BAR,Base Address Register)地址空间中的缓存(buffer)地址。
本发明实施例中,将所述硬件加速单元403的数据缓存地址进行MMIO处理,映射到CPU401的寻址空间可以为:
在计算机设备40上电启动后,计算机设备40的基本输入输出系统(BIOS,BasicInput/Output System)在启动阶段获取硬件加速单元403的BAR寄存器的基地址及BAR地址空间长度,并根据所述基地址及BAR地址空间的长度进行CPU寻址空间地址的预留,预留与BAR地址空间长度相同的地址空间。当所述计算机设备40进入操作系统(OS,OperatingSystem)启动阶段后,在加载硬件加速单元403的驱动程序时,硬件加速单元403的驱动程序读取该硬件加速单元403配置空间的基地址及BAR地址空间长度,然后调用OS提供的MMIO映射函数将所述基地址以及相应的BAR地址空间映射到CPU301的寻址空间。这样,CPU401可以通过访问寻址空间中的地址,实现对硬件加速单元403的缓存地址的访问,即BAR地址空间中buffer地址的访问。
PCIe规范中规定了MMIO,即将PCIe设备的地址空间映射到CPU的寻址空间。CPU在访问PCIe设备的地址空间时,通过对寻址空间的访问实现对PCIe设备的访问。因为CPU通过访问寻址空间来访问PCIe设备,CPU访问PCIe设备的数据缓存地址(例如buffer地址)就可以使用与读写内存一样的指令来实现,可以简化程序设计的难度和接口的复杂性。
当硬件加速单元不是PCIe设备时(如CPU中内置的加速器等),通常会有可直接访问的CPU地址。例如直接通过DDR接口与CPU连接的硬件加速设备,自身会包含一段CPU可访问的地址空间。能够实现PCIe设备经过MMIO映射后的同样的技术效果。
如果硬件加速设备403不支持MMIO映射,则需要修改硬件加速设备403驱动程序及硬件逻辑,以实现对外通过MMIO方式映射其buffer地址。修改硬件加速单元403的驱动程序及硬件逻辑以实现对外通过MMIO方式映射其buffer地址,可以根据现有技术中的实现方式来实现,本发明实施例不再详述。
本发明实施例中,所述硬件加速单元403的BAR地址空间还可以包括控制寄存器地址。在将硬件加速单元403的BAR地址空间映射到CPU301的寻址空间时,将所述控制寄存器地址也映射到CPU301的寻址空间。从而可以实现计算机设备30获取硬件加速单元403的控制寄存器的地址,实现对硬件加速单元403的控制。
可选的,所述硬件加速单元403的BAR地址空间还可以包括锁地址,在将硬件加速单元403的BAR地址空间映射到CPU301的寻址空间时,将所述锁地址也映射到CPU301的寻址空间。从而可以实现计算机设备30根据硬件加速单元403的锁地址,实现对硬件加速单元403相关的独占控制。
作为一种可选的实现方式,本发明实施例提供的技术方案在步骤300之前还包括:
所述CPU301获取硬件加速单元403的BAR地址空间的控制寄存器地址,所述控制寄存器地址是经过MMIO映射后的地址;
所述CPU301根据获取到的所述硬件加速单元403的BAR地址空间的控制寄存器地址,访问所述硬件加速单元403,以获取对所述硬件加速单元的控制。
所述CPU301获取对硬件加速单元403的控制,能够实现对硬件加速单元403的独占控制,排除其它硬件加速请求方对硬件加速单元403的占用。不仅可以保证硬件加速处理的顺利进行,也能够避免多个硬件加速请求方因抢占硬件加速单元403带来的资源的消耗和效率的降低。
本发明实施例中,所述CPU301实现对硬件加速单元403的独占控制,排除其它硬件加速请求方对硬件加速单元403的占用的方式可以包括硬件资源的划分方式或锁操作方式。
对于硬件资源划分的方式,是将硬件加速单元403的资源分成多个队列,不同的队列分别处理不同的数据来实现。即将硬件加速单元403的资源分成多个队列,每个队列分别处理不同的数据,各个队列间的资源互相独立互不干扰。这种划分方式即可以通过软件的方式进行划分,也可以通过硬件逻辑的方式划分。典型的软件划分方式是由硬件加速单元403中运行的管理软件提供统一的调度接口,所有需要访问硬件加速单元403的请求方均需要由CPU401调用所述管理软件的调度接口来获取相应资源的描述,并根据相应的资源描述实现对对应队列的控制。硬件的划分则是从硬件逻辑上对硬件加速单元403的资源进行切割,如将硬件加速单元403分成多个硬件逻辑单元,每个硬件逻辑单元互相独立。硬件加速请求方需要访问硬件加速资源的时候只需要申请一个或多个硬件逻辑单元即可。这样,CPU301通过申请不同队列的地址或是不同硬件逻辑单元,可以避免出现硬件加速设备资源分配的冲突。
方式二,锁操作的方式:既可以采用lock的方式,也可以采用比较并交换(CAS,Compare and Swap)等无锁算法的方式。采用Lock的方式,即忙等待操作,若申请硬件加速资源的计算机设备(例如CPU301)获取不到硬件加速资源则一直尝试获取,直到能够获取可用资源为止。CAS也是RDMA中集成的一种无锁算法。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。当多个计算机设备上不同的CPU或CPU中的线程尝试使用CAS同时更新同一个变量时,只有其中一个CPU或线程能更新变量的值,而其它CPU或线程都会失败。失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。通过这样的操作,当存在竞争的时候,有且仅有一个竞争者(例如CPU或线程)能够获取资源,解决了资源竞争的问题。对于硬件加速单元403资源的抢占,可以采用Lock的方式,也可以采用CAS的方式,或其它资源抢占方式,本发明实施例不限定具体的资源抢占方式,只要CPU301能够获取硬件加速单元403的硬件加速资源独占控制即可。
上述步骤300中,计算机设备30中的CPU301获取硬件加速单元403的数据映射地址,可以通过直接发送查询请求到CPU401,获取所述硬件加速设备403的数据映射地址,也可以通过管理节点获取所述硬件加速设备403的数据映射地址。其中,管理节点可以是如图2(b)所示的管理节点50,该管理节点50分别与计算机设备30和计算机设备40连接,获取并存储硬件加速单元303和硬件加速单元403的数据映射地址,以供计算机设备30和计算机设备40查询和使用。在具体实现时,管理节点50还可以根据预先设定的规则进行鉴权,只有鉴权通过的申请才能够获取相应的硬件加速单元的数据映射地址。同时,还可以根据各个节点硬件加速资源的忙闲状态进行硬件加速资源的分配,以及根据预先设定的规则释放相关的硬件加速资源,使硬件加速资源的分配和使用更加合理。
需要说明的是,图2(b)中管理节点50是以独立设备的形式存在,例如可以是独立的服务器等。在具体实现时,管理节点50也可以集成在计算机设备30或计算机设备40中,例如可以作为具有存储功能的芯片位于计算机设备30或计算机设备40中。本发明实施例不限定管理节点50的实现形式。
作为一种可选的实现方式,本发明实施例中,硬件加速单元403在将BAR地址空间的buffer地址映射到CPU寻址空间时,可以选择将一部分buffer地址映射到CPU401的寻址空间,一部分不进行MMIO处理。对于经过MMIO处理并映射到CPU401寻址空间的buffer地址,可以被用来供其他计算机设备的CPU(例如CPU301)申请相应的硬件加速资源。对于未进行MMIO映射的buffer地址,则留给计算机设备40上的应用程序进行硬件加速的处理。即硬件加速设备403的硬件加速资源可分为共享资源和私有资源。其中,私有资源只供计算机设备40使用,共享资源可以共享给除计算机设备40之外的其它计算机设备(例如计算机设备30)使用。例如硬件加速设备403支持32个队列的处理,可以将其中16个队列的资源上报给管理节点50,剩下的16个队列的资源留给计算机设备40使用。在具体实现时,上述共享资源和私有资源的划分,还可以动态调整,以满足不同的实际需要,提高硬件加速资源使用的灵活性。
上述步骤308中,所述网卡404通过RDMA的方式将接收到的所述硬件加速单元403加速处理后的数据发送给网卡304时,可以通过SEND/WRITE操作将处理后的数据发送给网卡304。
如果网卡404通过SEND操作将加速处理后的数据发送给网卡304,则需要计算机设备30事先将接收地址发送给网卡404,所述网卡404根据所述数据接收地址通过SEND操作发送加速处理后的数据。所述接收地址是所述计算机设备30存储加速处理后的数据的数据存储空间所对应的地址。计算机设备30完成接收后,通过中断或事件通知的方式通知计算机设备40数据接收完成。如果网卡404通过WRITE操作将加速处理后的数据发送给网卡304,即可以将加速处理后的数据写入网卡或通过网卡304直接写入目的存储空间中。所述网卡304完成数据写入后,计算机设备40发送写操作完成通知给计算机设备30的CPU301,以通知CPU301完成数据加速的处理。
本发明实施例中,硬件加速单元403作为一个PCIe设备,在其驱动程序初始化过程中,CPU401会根据PCIe协议读取该硬件加速单元403的配置空间中寄存器的内容,并根据读取的内容对该硬件加速单元403进行初始化并提供控制操作接口。硬件加速单元403对CPU401提供一个应用程序编程接口(API,Application Programming Interface),CPU401通过API来接入该硬件加速单元,实现对硬件加速单元403的访问。其中,API可以是具有统一标准的API,例如网络功能虚拟化(NFV,Network Function Virtualization)中的开放式计算项目(OCP,Open Compute Project)的交换机抽象接口(SAI,Switch AbstractionInterface)或微软的DirectX接口,也可以是硬件加速设备厂商自定义的API接口。本发明实施例不限定具体的API接口。
同样的,在步骤300中,CPU301是通过执行应用程序的指令,获取硬件加速单元403的数据映射地址。在这种情况下,需要对应用程序的接口进行修改,以使应用程序能够发送指令并通过CPU301获取硬件加速设备403的数据映射地址等信息。在具体实现时,也可以不修改计算机设备30中的应用程序的接口,通过一个适配单元实现硬件加速单元403的数据映射地址以及控制计算器地址等信息的获取。该适配单元对上层应用可以呈现为一个真实的硬件加速设备或硬件加速单元,但是数据加速处理是适配单元与计算机设备40中的硬件加速单元403交互来完成。这样,可以避免对众多的应用程序接口的修改,只通过一个适配单元实现对硬件加速处理,提升了方案的适用性。
作为一种可选的实现方式,上述步骤302之后,本发明实施例提供的一种实现硬件加速处理的方法还包括:
步骤303:所述CPU301向所述硬件加速单元403发送启动加速处理的指示;
其中,所述CPU301可以通过RDMA的方式将启动加速处理的指示发送给硬件加速单元403。具体的,所述CPU301可以直接通过RDMA的方式将启动加速处理的指示发送到硬件加速单元403的控制寄存器地址,以指示硬件加速单元403启动硬件加速处理。
本发明实施例中,所述网卡404或网卡304可以是具有RDMA功能的主机总线适配器(HBA,host bus adapter)卡,包括但不限于基于融合以太的远程内存直接访问协议(ROCE,remote direct memory access over Converged Ethernet)网卡、光纤通道(FC,FibreChannel)over RDMA网卡或互联网广域远程直接内存访问协议(iWarp,Internet wide-area RDMA protocol)网卡等硬件设备。
本发明实施例中,还提供另外一种硬件加速设备。如图4所示,为本发明实施例提供的另外一种硬件加速设备500的结构示意图。该硬件加速设备400包括硬件加速处理单元501和网卡502。该硬件加速设备500中的硬件加速处理单元501具有硬件加速处理的功能,例如可以具有智能报文分发、硬件压缩/解压缩、硬件加密和图形加速处理等功能。硬件加速处理单元501可以由现场可编程门阵列(FPGA,field programmable gate array)等组成的具有硬件加速处理功能的设备来实现。
该硬件加速处理单元501可以处理其它计算机设备发送的硬件加速请求,并在硬件加速处理后将处理的数据返回给请求的其它计算机设备。本发明实施例以硬件加速设备500接受计算机设备30请求的硬件加速请求并进行硬件加速处理为例,对硬件加速设备500的实现方式予以说明。
如图5(a)所示,硬件加速设备500包括硬件加速处理单元501和网卡502;计算机设备30包括CPU301、内存302、硬件加速单元303和网卡304。计算机设备30的网卡304与硬件加速设备500的网卡502通过网络相连,实现计算机设备30和硬件加速设备500之间的连接和通信。
硬件加速设备500中的硬件加速处理单元501具有数据缓存地址,该数据缓存地址对应的数据存储空间用以存储待硬件加速处理的数据。本发明实施例中,硬件加速处理单元501具有数据缓存地址可以被计算机设备30获取。即计算机设备30中的CPU301可以获取硬件加速处理单元501的数据缓存地址。计算机设备30中的应用程序需要进行硬件加速处理时,可以通过CPU301根据获取到的所述硬件加速处理单元501的数据缓存地址,向所述硬件加速设备500发送待硬件加速处理的数据。
所述网卡502是具有RDMA或DMA功能的网卡。所述网卡502接收到计算机设备30发送的待硬件加速处理的数据后,根据接收到的所述硬件加速处理单元501的数据缓存地址,直接将所述待硬件加速处理的数据发送给所述硬件加速处理单元501。具体的,所述硬件加速处理单元501可以与网卡502共享内存,即硬件加速设备500中还包括共享内存。网卡502在接收到待硬件加速处理的数据时,可以直接将接收到的待硬件加速处理的数据存入共享内存中,所述硬件加速处理单元501直接从所述共享内存获取待硬件加速处理的数据进行硬件加速处理。可选的,所述共享内存的地址,即所述硬件加速处理单元501的数据缓存地址。
本发明实施例中,所述硬件加速处理单元501还包括控制寄存器信息和/或状态寄存器的信息。所述计算机设备30中的CPU301可以获取所述硬件加速处理单元501的控制寄存器信息和/或状态寄存器的信息。其中,所述控制寄存器信息可以包括控制寄存器地址,所述CPU301可以通过所述硬件加速处理单元501的控制寄存器的地址,实现对所述硬件加速处理单元501的控制。所述状态寄存器的信息可以包括状态寄存器的地址,所述CPU301可以通过所述状态寄存器的地址,获取所述硬件加速处理单元501的状态,以在硬件加速处理单元501空闲时,请求硬件加速处理单元501进行硬件加速处理。这样,计算机设备30可以直接通过网卡502给所述硬件加速处理单元501发送控制命令,以控制硬件加速处理单元501对数据进行硬件加速处理。
在硬件加速处理单元501对接收到的待硬件加速处理的数据进行加速处理后,将加速处理后的数据发送给网卡502,网卡502根据加速处理后的数据的下一跳目的地址发送。通过指定下一跳的目的地,既可以将处理完成的数据直接返回原来的发送节点(即计算机设备30),也可以根据业务的需求将处理完成的数据发送到网络其它节点。可以理解,网卡502可以通过RDMA的方式发送加速处理后的数据。
图4中中的硬件加速设备500只包括硬件加速处理单元501和网卡502,省去了图2(a)中CPU401和内存402的参与,进一步节省了硬件资源。同时,也不需要服务器中运行CPU401、内存402等设备来实现硬件加速处理,进一步节省了设置服务器所带来的服务器其它硬件设备或硬件资源的消耗,进一步提升了资源的利用率。
上述硬件加速处理单元501的数据缓存地址可以被计算机设备30获取,在具体实现时,可以是计算机设备30向所述硬件加速处理单元501发送获取数据缓存地址的请求,所述硬件加速处理单元501在请求响应中将其数据缓存地址发送给计算机设备30。也可以是所述计算机设备30从管理单元中获取所述硬件加速处理单元501的数据缓存地址。例如,图5(b)所示,计算机设备30和硬件加速设备500分别与管理单元50相连,管理单元50中存储有硬件加速设备500中硬件加速处理单元501的数据缓存地址,也可以存储有计算机设备30中硬件加速单元303的数据映射地址。管理单元可以主动获取并存储硬件加速单元303的数据映射地址和硬件加速设备500的数据缓存地址,也可以接收计算机设备30发送的硬件加速单元303的数据映射地址或硬件加速设备500发送的硬件加速处理单元501的数据缓存地址。在具体实现时,管理节点50还可以根据预先设定的规则进行鉴权,只有鉴权通过的申请才能够获取相应的硬件加速单元的数据映射地址。同时,还可以根据各个节点硬件加速资源的忙闲状态进行硬件加速资源的分配,以及根据预先设定的规则释放相关的硬件加速资源,使硬件加速资源的分配和使用更加合理。
本发明实施例提供的另外一种实现方式中,计算机设备30、计算机设备40和硬件加速设备500通过网络相互连接,实现硬件加速资源的共享。如图5(c)所示,计算机设备30通过网卡304分别与计算机设备40和硬件加速设备500相连。计算机设备30可以使用计算机设备40中的硬件加速单元403进行硬件加速处理,也可以使用硬件加速设备500中的硬件加速处理单元501进行硬件加速处理。其中,计算机设备30在使用计算机设备40中的硬件加速单元403进行硬件加速处理时,可以参考上述图2(a)、图2(b)和图3所示的实施例的实现方式来实现。计算机设备30在使用硬件加速设备500中的硬件加速处理单元501进行硬件加速处理时,可以参考上述图5(a)所示的实施例的实现方式来实现。
可以理解,图5(c)所示的实现方式中,还可以包括管理单元50。如图5(d)所示,该管理单元50与图2(b)、图5(b)中的管理单元50类似,实现硬件加速单元303或硬件加速单元403的数据映射地址,以及硬件加速处理单元501数据缓存地址的收集和管理。
本发明实施例还提供了一种计算机设备600,所述计算机设备包括中央处理器CPU、硬件加速单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能,其中:
所述网卡,用于接收另一计算机设备发送的数据映射地址和待硬件加速处理的数据,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述CPU的寻址空间中的地址;
所述网卡,还用于根据所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间;
所述硬件加速单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,得到硬件加速处理后的数据。
所述计算机设备600可以参照上述实施例中图2(a)、图2(b)、图3、图5(c)和图5(d)中计算机设备40的实现方式来实现,不再赘述。
本发明实施例还提供了一种硬件加速设备700,所述硬件加速设备包括硬件加速处理单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能;
所述网卡,用于接收待硬件加速处理的数据,并将所述待硬件加速处理的数据发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间中,所述数据缓存地址对应的数据存储空间用于存储所述硬件加速处理单元需要硬件加速处理的数据;
所述硬件加速处理单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述网卡。
所述硬件加速设备700可以参照上述实施例中图4、图5(a)、图5(b)、图5(c)和图5(d)中硬件加速设备500的实现方式来实现,不再赘述。
本发明实施例还提供一种计算机设备800,所述计算机设备包括中央处理器CPU和网卡;
所述CPU,用于通过所述网卡获取另一计算机设备中硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述另一计算机设备中的CPU寻址空间中的地址;
所述CPU,还用于根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述另一计算机设备,并接收所述另一计算机设备返回的对所述待硬件加速处理的数据进行硬件加速处理后的数据。
所述计算机设备800可以参照上述实施例中图2(a)、图2(b)、图3、图5(a)、图5(b)、图5(c)和图5(d)中计算机设备30的实现方式来实现,不再赘述。
本发明实施例还提供一种实现硬件加速处理的系统900,包括第一计算机设备和第二计算机设备,所述第一计算机设备包括第一中央处理器CPU,所述第二计算机设备包括第二CPU、硬件加速单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能;
所述CPU,用于获取所述硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第二CPU寻址空间中的地址;并根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述网卡;
所述网卡,用于接收所述待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,根据所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间;
所述硬件加速单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述第一计算机设备。
所述硬件加速处理的系统900可以参照上述实施例中图2(a)、图2(b)、图3、图5(c)和图5(d)中的实现方式来实现,不再赘述。
本发明实施例还提供一种实现硬件加速处理的系统1000,包括第一计算机设备和硬件加速设备,所述第一计算机设备包括中央处理器CPU,所述硬件加速设备包括硬件加速处理单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能,其特征在于:
所述CPU,用于获取所述硬件加速处理单元的数据缓存地址,所述硬件加速处理单元的数据缓存地址对应的数据存储空间用于存储所述硬件加速处理单元需要硬件加速处理的数据;并根据获取到的所述硬件加速处理单元的数据缓存地址,将待硬件加速处理的数据以及所述硬件加速处理单元的数据缓存地址,发送给所述硬件加速设备;
所述网卡,用于接收所述待硬件加速处理的数据以及所述硬件加速处理单元的数据缓存地址,根据所述数据缓存地址,将所述待硬件加速处理的数据直接发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间中;
所述硬件加速处理单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述网卡;
所述网卡,还用于将硬件加速处理后的数据发送给所述第一计算机设备。
所述硬件加速处理的系统1000可以参照上述实施例中图5(a)、图5(b)、图5(c)和图5(d)中的实现方式来实现,不再赘述。
本发明实施例还提供了一种实现硬件加速处理的方法S1,所述方法包括:
第一计算机设备中的网卡接收第二计算机设备发送的数据映射地址和待硬件加速处理的数据和地址,所述数据映射地址将对所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第一计算机设备中的中央处理器CPU寻址空间中的地址;
所述网卡根据所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间;
所述硬件加速单元对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,得到硬件加速处理后的数据。
所述方法S1中第一计算机设备的实现方式可以参考上述实施例中图2(a)、图2(b)、图3、图5(c)和图5(d)中计算机设备40的实现方式来实现,不再赘述。
本发明实施例还一种实现硬件加速处理的方法S2,所述方法包括:
第一计算机设备中的第一中央处理器CPU获取第二计算机设备中硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第二计算机设备中的CPU寻址空间中的地址;
所述第一CPU根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述第二计算机设备的网卡,所述第二计算机设备的网卡是具有远程直接数据存取RDMA功能或直接数据存取DMA功能的网卡;
所述第一CPU获取所述第二计算机设备返回的对所述待硬件加速处理的数据进行硬件加速处理后的数据。
所述方法S2中第一计算机设备的实现方式可以参考上述实施例中图2(a)、图2(b)、图3、图5(c)和图5(d)中的实现方式来实现,不再赘述。
在传统的分布式系统中,一般是用做一组独立的计算机展现给用户一个统一的整体,对外呈现一个系统。系统中使用通用的物理和逻辑资源,然后对这类资源进行抽象并动态的分配给用户使用,分散的物理资源间通过网络进行信息的交换。对用户来说,传统的分布式系统只有一个模型,通常是通过操作之上的一层软件中间件来实现这个模型的实现。在本发明实施例提供的实现硬件加速处理的方法和设备中,将分布式应用的最小单位变为硬件加速资源,这样就使用原来的应用模式和系统无需做任何更改,更好的利用了硬件的资源。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (23)
1.一种计算机设备,所述计算机设备包括中央处理器CPU、硬件加速单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能,其特征在于:
所述网卡,用于接收另一计算机设备发送的数据映射地址和待硬件加速处理的数据,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述CPU的寻址空间中的地址;
所述网卡,还用于根据所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间;
所述硬件加速单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,得到硬件加速处理后的数据。
2.根据权利要求1所述的计算机设备,其特征在于:
所述硬件加速单元,还用于判断是否需要将所述硬件加速处理后的数据发送给所述另一计算机设备,在判断为是时,直接将所述硬件加速处理后的数据发送给所述网卡;
所述网卡,还用于将所述所述硬件加速处理后的数据,发送给所述另一计算机设备。
3.根据权利要求1或2所述的计算机设备,其特征在于:
所述硬件加速单元,还用于将所述硬件加速单元的控制寄存器地址进行MMIO处理,以将所述控制寄存器地址映射到所述CPU的寻址空间。
4.一种硬件加速设备,所述硬件加速设备包括硬件加速处理单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能;其特征在于:
所述网卡,用于接收待硬件加速处理的数据,并将所述待硬件加速处理的数据发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间中,所述数据缓存地址对应的数据存储空间用于存储所述硬件加速处理单元需要硬件加速处理的数据;
所述硬件加速处理单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述网卡。
5.根据权利要求4所述的硬件加速设备,其特征在于:
所述硬件加速处理单元是由现场可编程门阵列FPGA组成的,且具有硬件加速处理功能。
6.根据权利要求4或5所述的硬件加速设备,其特征在于,所述硬件加速设备还包括共享内存,所述共享内存的存储空间即所述硬件加速处理单元的数据缓存地址对应的数据存储空间,
所述硬件加速处理单元与所述网卡共享所述共享内存;
所述网卡将所述待硬件加速处理的数据发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间包括:
所述网卡将所述待硬件加速处理的数据写入所述共享内存中。
7.根据权利要求4-6所述的任一硬件加速设备,其特征在于,
所述硬件加速处理单元根据其它计算机设备的请求,将所述硬件加速处理单元的数据缓存地址发送给请求的计算机设备;或,
所述硬件加速处理单元将其数据缓存地址发送给管理单元,所述管理单元存储有硬件加速处理单元的地址信息,所述管理单元中的地址信息能够被其它计算机设备获取并使用。
8.一种计算机设备,所述计算机设备包括中央处理器CPU和网卡,其特征在于:
所述CPU,用于通过所述网卡获取另一计算机设备中硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述另一计算机设备中的CPU寻址空间中的地址;
所述CPU,还用于根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述另一计算机设备,并接收所述另一计算机设备返回的对所述待硬件加速处理的数据进行硬件加速处理后的数据。
9.根据权利要求8所述的计算机设备,其特征在于:
所述CPU,还用于获取所述硬件加速单元的控制寄存器地址,并根据获取到的所述硬件加速单元的控制寄存器的地址,实现对所述硬件加速单元的控制。
10.根据权利要求8或9所述的计算机设备,其特征在于:
所述CPU根据所述计算机设备中应用程序的硬件加速请求,获取所述硬件加速单元的数据映射地址;或,
所述CPU根据所述第一计算机设备中适配单元的指示,获取所述硬件加速单元的数据映射地址;其中,所述适配单元的指示是所述适配单元转换所述计算机设备中应用程序的硬件加速请求后的指示。
11.一种实现硬件加速处理的系统,包括第一计算机设备和第二计算机设备,所述第一计算机设备包括第一中央处理器CPU,所述第二计算机设备包括第二CPU、硬件加速单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能,其特征在于:
所述第一CPU,用于获取所述硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第二CPU寻址空间中的地址;并根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述网卡;
所述网卡,用于接收所述待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,根据所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间;
所述硬件加速单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述第一计算机设备。
12.根据权利要求11所述的系统,其特征在于:
所述硬件加速单元,还用于判断是否需要将所述硬件加速处理后的数据发送给所述第一计算机设备,在判断为是时,直接将所述硬件加速处理后的数据发送给所述网卡;
所述网卡,还用于将所述所述硬件加速处理后的数据发送给所述第一计算机设备。
13.根据权利要求11或12所述的系统,其特征在于:
所述第一CPU,还用于获取所述硬件加速单元的控制寄存器地址,并根据获取到的所述硬件加速单元的控制寄存器的地址,获取所述硬件加速单元的控制权限;其中,所述控制寄存器地址是将所述硬件加速单元的控制寄存器地址进行MMIO处理并映射到所述第二CPU寻址空间的地址。
14.根据权利要求11-13任一所述的系统,其特征在于:
所述第一CPU根据所述第一计算机设备中应用程序的硬件加速请求,获取所述第二计算机设备中硬件加速单元的数据映射地址;或,
所述第一CPU根据所述第一计算机设备中适配单元的指示,获取所述硬件加速单元的数据映射地址;其中,所述适配单元的指示是所述适配单元转换所述第一计算机设备中应用程序的硬件加速请求后的指示。
15.一种实现硬件加速处理的系统,包括第一计算机设备和硬件加速设备,所述第一计算机设备包括中央处理器CPU,所述硬件加速设备包括硬件加速处理单元和网卡,所述网卡具有远程直接数据存取RDMA或直接数据存取DMA功能,其特征在于:
所述CPU,用于获取所述硬件加速处理单元的数据缓存地址,所述硬件加速处理单元的数据缓存地址对应的数据存储空间用于存储所述硬件加速处理单元需要硬件加速处理的数据;并根据获取到的所述硬件加速处理单元的数据缓存地址,将待硬件加速处理的数据以及所述硬件加速处理单元的数据缓存地址,发送给所述硬件加速设备;
所述网卡,用于接收所述待硬件加速处理的数据以及所述硬件加速处理单元的数据缓存地址,根据所述数据缓存地址,将所述待硬件加速处理的数据直接发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间中;
所述硬件加速处理单元,用于对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,并返回硬件加速处理后的数据给所述网卡;
所述网卡,还用于将硬件加速处理后的数据发送给所述第一计算机设备。
16.根据权利要求15所述的系统,其特征在于:
所述硬件加速处理单元是由现场可编程门阵列FPGA组成的,且具有硬件加速处理功能。
17.根据权利要求15或16所述的系统,其特征在于,所述硬件加速设备还包括共享内存,
所述硬件加速处理单元与所述网卡共享所述共享内存,所述共享内存的存储空间即所述硬件加速处理单元的数据缓存地址对应的数据存储空间;
所述网卡将所述待硬件加速处理的数据发送到所述硬件加速处理单元的数据缓存地址对应的数据存储空间包括:
所述网卡将接所述待硬件加速处理的数据存入共享内存中。
18.一种实现硬件加速处理的方法,其特征在于,所述方法包括:
第一计算机设备中的网卡接收第二计算机设备发送的数据映射地址和待硬件加速处理的数据和地址,所述数据映射地址将对所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第一计算机设备中的中央处理器CPU寻址空间中的地址;
所述网卡根据所述数据映射地址,将所述待硬件加速处理的数据发送到所述硬件加速单元的数据存储空间,所述硬件加速单元的数据存储空间是所述硬件加速单元的数据缓存地址对应的数据存储空间;
所述硬件加速单元对所述数据存储空间中的所述待硬件加速处理的数据进行硬件加速处理,得到硬件加速处理后的数据。
19.根据权利要求18所述的方法,其特征在于,所述方法还包括:
所述硬件加速单元判断是否需要将所述硬件加速处理后的数据发送给所述第二计算机设备,在判断为是时,直接将所述硬件加速处理后的数据发送给所述网卡;
所述网卡将所述所述硬件加速处理后的数据,发送给所述第二计算机设备。
20.根据权利要求18或19所述的方法,其特征在于,所述方法还包括:
所述硬件加速单元将所述硬件加速单元的控制寄存器地址进行MMIO处理,以将所述控制寄存器地址映射到所述第一计算机设备中CPU的寻址空间。
21.一种实现硬件加速处理的方法,其特征在于,所述方法包括:
第一计算机设备中的第一中央处理器CPU获取第二计算机设备中硬件加速单元的数据映射地址,所述数据映射地址是将所述硬件加速单元的数据缓存地址经过内存映射输入输出MMIO处理后的所述第二计算机设备中的CPU寻址空间中的地址;
所述第一CPU根据获取到的所述硬件加速单元的数据映射地址,将待硬件加速处理的数据以及所述硬件加速单元的数据映射地址,发送给所述第二计算机设备的网卡,所述第二计算机设备的网卡是具有远程直接数据存取RDMA功能或直接数据存取DMA功能的网卡;
所述第一CPU获取所述第二计算机设备返回的对所述待硬件加速处理的数据进行硬件加速处理后的数据。
22.根据权利要求21所述的方法,其特征在于,在所述第一CPU获取第二计算机设备中硬件加速单元的数据映射地址之前,所述方法还包括:
所述第一CPU获取所述硬件加速单元的控制寄存器地址,所述第一CPU根据所述硬件加速单元的控制寄存器的地址,实现对所述硬件加速单元的控制。
23.根据权利要求21或22所述的方法,其特征在于,所述方法还包括:
所述第一CPU根据所述第一计算机设备中应用程序的硬件加速请求,获取所述第二计算机设备中硬件加速单元的数据映射地址;或,
所述第一CPU根据所述第一计算机设备中适配单元的指示,获取所述第二计算机设备中硬件加速单元的数据映射地址;其中,所述适配单元的指示是所述适配单元转换所述第一计算机设备中应用程序的硬件加速请求后的指示。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010732639.4A CN112099940A (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
CN202010732690.5A CN112099941B (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/096955 WO2018035856A1 (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010732639.4A Division CN112099940A (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
CN202010732690.5A Division CN112099941B (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
Publications (3)
Publication Number | Publication Date |
---|---|
CN107690622A true CN107690622A (zh) | 2018-02-13 |
CN107690622B CN107690622B (zh) | 2020-08-07 |
CN107690622B9 CN107690622B9 (zh) | 2020-09-22 |
Family
ID=61151074
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680026124.4A Active CN107690622B9 (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
CN202010732639.4A Pending CN112099940A (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
CN202010732690.5A Active CN112099941B (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010732639.4A Pending CN112099940A (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
CN202010732690.5A Active CN112099941B (zh) | 2016-08-26 | 2016-08-26 | 实现硬件加速处理的方法、设备和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10365830B2 (zh) |
EP (2) | EP3798835B1 (zh) |
CN (3) | CN107690622B9 (zh) |
DK (1) | DK3358463T3 (zh) |
ES (1) | ES2830355T3 (zh) |
WO (1) | WO2018035856A1 (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109597786A (zh) * | 2018-12-05 | 2019-04-09 | 青岛镕铭半导体有限公司 | 主机与硬件加速模块的交互方法、硬件加速设备及介质 |
CN109783409A (zh) * | 2019-01-24 | 2019-05-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
CN110471779A (zh) * | 2019-07-22 | 2019-11-19 | 阿里巴巴集团控股有限公司 | 用于实现锁资源处理的方法和装置 |
WO2020000401A1 (en) * | 2018-06-29 | 2020-01-02 | Intel Corporation | Transparent Encryption |
CN110968530A (zh) * | 2019-11-19 | 2020-04-07 | 华中科技大学 | 一种基于非易失性内存的键值存储系统和内存访问方法 |
CN111585787A (zh) * | 2020-04-02 | 2020-08-25 | 华南理工大学 | 基于fpga改善nfv业务链转发效率的装置及方法 |
WO2020215837A1 (zh) * | 2019-04-26 | 2020-10-29 | 创新先进技术有限公司 | 一种网卡、数据发送/接收方法及设备 |
CN112131164A (zh) * | 2020-09-23 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 应用于加速板卡的数据调度方法、装置及加速板卡和介质 |
CN112291293A (zh) * | 2019-07-27 | 2021-01-29 | 华为技术有限公司 | 任务处理方法、相关设备及计算机存储介质 |
WO2021082990A1 (zh) * | 2019-10-31 | 2021-05-06 | 中兴通讯股份有限公司 | 基于pcie总线的多芯片互联系统 |
US11082410B2 (en) | 2019-04-26 | 2021-08-03 | Advanced New Technologies Co., Ltd. | Data transceiving operations and devices |
CN113448967A (zh) * | 2021-07-20 | 2021-09-28 | 威讯柏睿数据科技(北京)有限公司 | 一种对数据库操作进行加速的方法和装置 |
CN113596495A (zh) * | 2021-07-28 | 2021-11-02 | 广州方硅信息技术有限公司 | 直播推流处理方法及其装置、设备与介质 |
WO2021249059A1 (zh) * | 2020-06-09 | 2021-12-16 | 华为技术有限公司 | 网卡以及网卡处理数据的方法 |
WO2023082609A1 (zh) * | 2021-11-09 | 2023-05-19 | 华为技术有限公司 | 一种数据处理方法以及相关设备 |
CN116627888A (zh) * | 2023-07-25 | 2023-08-22 | 苏州浪潮智能科技有限公司 | 硬件计算模块、设备、方法、电子设备及存储介质 |
WO2023179632A1 (zh) * | 2022-03-21 | 2023-09-28 | 华为技术有限公司 | 一种数据处理方法及装置 |
WO2024093885A1 (zh) * | 2022-10-31 | 2024-05-10 | 华为技术有限公司 | 一种芯片系统和集合通信方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107690622B9 (zh) * | 2016-08-26 | 2020-09-22 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和系统 |
WO2019216797A1 (en) * | 2018-05-08 | 2019-11-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and node for managing a request for hardware acceleration by means of an accelerator device |
US11019132B2 (en) | 2018-06-29 | 2021-05-25 | R-Stor Inc. | System and method for performing fast file transfers with dynamic bandwidth provisioning |
KR102655094B1 (ko) | 2018-11-16 | 2024-04-08 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
JP7139939B2 (ja) * | 2018-12-26 | 2022-09-21 | 日本電信電話株式会社 | スケジューリングシステムおよび方法 |
CN110688237B (zh) | 2019-06-25 | 2024-02-09 | 华为技术有限公司 | 转发报文的方法、中间设备和计算机设备 |
WO2021034340A1 (en) * | 2019-08-16 | 2021-02-25 | R-Stor Inc. | System and method for performing fast file transfers with dynamic bandwidth provisioning |
CN111200561B (zh) * | 2019-12-31 | 2022-03-15 | 奇安信科技集团股份有限公司 | 数据包传输方法和装置、计算机系统和可读存储介质 |
CN111858038A (zh) | 2020-06-30 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | Fpga板卡内存数据的读取方法、装置及介质 |
CN113238869A (zh) * | 2021-05-28 | 2021-08-10 | 北京达佳互联信息技术有限公司 | 一种计算加速方法、设备和系统及存储介质 |
US11861408B2 (en) | 2021-06-18 | 2024-01-02 | Google Llc | Hardware accelerator service discovery |
CN113595807B (zh) * | 2021-09-28 | 2022-03-01 | 阿里云计算有限公司 | 计算机系统、rdma网卡及数据通信方法 |
US12068922B2 (en) | 2022-01-07 | 2024-08-20 | Nokia Technologies Oy | Processing chaining in virtualized networks |
CN116346781B (zh) * | 2023-03-13 | 2024-06-11 | 苏州浪潮智能科技有限公司 | 一种地址空间分配方法、服务器、电子设备和存储介质 |
CN116226027B (zh) * | 2023-05-04 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 数据传输系统、方法、装置、通信设备及存储介质 |
CN116594951B (zh) * | 2023-07-13 | 2023-09-26 | 北京芯通未来科技发展有限公司 | 一种基于fpga的数据传输系统及方法 |
CN117519955B (zh) * | 2024-01-08 | 2024-03-29 | 浪潮电子信息产业股份有限公司 | 一种加速设备的控制方法、系统、装置及加速设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
US20130249925A1 (en) * | 2009-06-23 | 2013-09-26 | Boris Ginzburg | Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System |
US20130318277A1 (en) * | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Processing structured and unstructured data using offload processors |
CN104239227A (zh) * | 2013-06-20 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法 |
CN104539632A (zh) * | 2015-01-20 | 2015-04-22 | 中国人民解放军国防科学技术大学 | 一种基于虚拟地址空间的可编程网络设备管理控制方法 |
US20150288624A1 (en) * | 2014-04-08 | 2015-10-08 | Mellanox Technologies Ltd. | Low-latency processing in a network node |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006074072A2 (en) * | 2004-12-30 | 2006-07-13 | Citrix Systems, Inc. | Systems and methods for providing client-side acceleration techniques |
CN100574200C (zh) * | 2005-12-31 | 2009-12-23 | 中国科学院计算技术研究所 | 具有硬件加速功能的智能以太网卡 |
US9176765B2 (en) * | 2006-09-25 | 2015-11-03 | Lenovo (Beijing) Limited | Virtual machine system and a method for sharing a graphics card amongst virtual machines |
US7743191B1 (en) * | 2007-12-20 | 2010-06-22 | Pmc-Sierra, Inc. | On-chip shared memory based device architecture |
CN101729893B (zh) * | 2008-08-15 | 2011-08-17 | 北京北大众志微系统科技有限责任公司 | 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置 |
US8055805B2 (en) * | 2009-03-31 | 2011-11-08 | Intel Corporation | Opportunistic improvement of MMIO request handling based on target reporting of space requirements |
CN101540727B (zh) * | 2009-05-05 | 2012-05-09 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
CN101751284B (zh) * | 2009-12-25 | 2013-04-24 | 华为技术有限公司 | 一种分布式虚拟机监控器的i/o资源调度方法 |
CN103946828B (zh) * | 2013-10-29 | 2017-02-22 | 华为技术有限公司 | 数据处理系统和数据处理的方法 |
CN103607428B (zh) * | 2013-10-30 | 2017-11-17 | 华为技术有限公司 | 一种访问共享内存的方法和装置 |
US10248587B2 (en) * | 2013-11-08 | 2019-04-02 | Sandisk Technologies Llc | Reduced host data command processing |
US9317446B2 (en) * | 2014-09-23 | 2016-04-19 | Cisco Technology, Inc. | Multi-level paging and address translation in a network environment |
US10303644B2 (en) * | 2014-11-21 | 2019-05-28 | International Business Machines Corporation | Providing remote, reliant and high performance PCI express device in cloud computing environments |
CN105808345B (zh) * | 2014-12-31 | 2019-03-08 | 华为技术有限公司 | 数据处理方法、加速引擎、控制板和系统 |
CN104503948B (zh) * | 2015-01-19 | 2017-08-11 | 中国人民解放军国防科学技术大学 | 支持多核网络处理架构的紧耦合自适应协处理系统 |
WO2017114091A1 (zh) * | 2015-12-30 | 2017-07-06 | 华为技术有限公司 | 一种nas数据访问的方法、系统及相关设备 |
CN107690622B9 (zh) * | 2016-08-26 | 2020-09-22 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和系统 |
US10013734B1 (en) * | 2017-04-01 | 2018-07-03 | Intel Corporation | Programmable controller and command cache for graphics processors |
-
2016
- 2016-08-26 CN CN201680026124.4A patent/CN107690622B9/zh active Active
- 2016-08-26 ES ES16890896T patent/ES2830355T3/es active Active
- 2016-08-26 WO PCT/CN2016/096955 patent/WO2018035856A1/zh active Application Filing
- 2016-08-26 DK DK16890896.0T patent/DK3358463T3/da active
- 2016-08-26 EP EP20191761.4A patent/EP3798835B1/en active Active
- 2016-08-26 CN CN202010732639.4A patent/CN112099940A/zh active Pending
- 2016-08-26 CN CN202010732690.5A patent/CN112099941B/zh active Active
- 2016-08-26 EP EP16890896.0A patent/EP3358463B1/en active Active
-
2017
- 2017-10-17 US US15/786,207 patent/US10365830B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130249925A1 (en) * | 2009-06-23 | 2013-09-26 | Boris Ginzburg | Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System |
US20130318277A1 (en) * | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Processing structured and unstructured data using offload processors |
CN103200128A (zh) * | 2013-04-01 | 2013-07-10 | 华为技术有限公司 | 一种网络包处理的方法、装置和系统 |
CN104239227A (zh) * | 2013-06-20 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法 |
US20150288624A1 (en) * | 2014-04-08 | 2015-10-08 | Mellanox Technologies Ltd. | Low-latency processing in a network node |
CN104539632A (zh) * | 2015-01-20 | 2015-04-22 | 中国人民解放军国防科学技术大学 | 一种基于虚拟地址空间的可编程网络设备管理控制方法 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020000401A1 (en) * | 2018-06-29 | 2020-01-02 | Intel Corporation | Transparent Encryption |
CN109597786A (zh) * | 2018-12-05 | 2019-04-09 | 青岛镕铭半导体有限公司 | 主机与硬件加速模块的交互方法、硬件加速设备及介质 |
CN109597786B (zh) * | 2018-12-05 | 2022-03-11 | 镕铭微电子(济南)有限公司 | 主机与硬件加速模块的交互方法、硬件加速设备及介质 |
CN109783409A (zh) * | 2019-01-24 | 2019-05-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
WO2020215837A1 (zh) * | 2019-04-26 | 2020-10-29 | 创新先进技术有限公司 | 一种网卡、数据发送/接收方法及设备 |
US11082410B2 (en) | 2019-04-26 | 2021-08-03 | Advanced New Technologies Co., Ltd. | Data transceiving operations and devices |
CN110471779B (zh) * | 2019-07-22 | 2023-11-14 | 创新先进技术有限公司 | 用于实现锁资源处理的方法和装置 |
CN110471779A (zh) * | 2019-07-22 | 2019-11-19 | 阿里巴巴集团控股有限公司 | 用于实现锁资源处理的方法和装置 |
CN112291293A (zh) * | 2019-07-27 | 2021-01-29 | 华为技术有限公司 | 任务处理方法、相关设备及计算机存储介质 |
WO2021082990A1 (zh) * | 2019-10-31 | 2021-05-06 | 中兴通讯股份有限公司 | 基于pcie总线的多芯片互联系统 |
CN110968530A (zh) * | 2019-11-19 | 2020-04-07 | 华中科技大学 | 一种基于非易失性内存的键值存储系统和内存访问方法 |
CN110968530B (zh) * | 2019-11-19 | 2021-12-03 | 华中科技大学 | 一种基于非易失性内存的键值存储系统和内存访问方法 |
CN111585787A (zh) * | 2020-04-02 | 2020-08-25 | 华南理工大学 | 基于fpga改善nfv业务链转发效率的装置及方法 |
CN111585787B (zh) * | 2020-04-02 | 2021-11-23 | 华南理工大学 | 基于fpga改善nfv业务链转发效率的装置及方法 |
WO2021249059A1 (zh) * | 2020-06-09 | 2021-12-16 | 华为技术有限公司 | 网卡以及网卡处理数据的方法 |
CN112131164B (zh) * | 2020-09-23 | 2022-06-17 | 山东云海国创云计算装备产业创新中心有限公司 | 应用于加速板卡的数据调度方法、装置及加速板卡和介质 |
CN112131164A (zh) * | 2020-09-23 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 应用于加速板卡的数据调度方法、装置及加速板卡和介质 |
CN113448967B (zh) * | 2021-07-20 | 2022-02-08 | 威讯柏睿数据科技(北京)有限公司 | 一种对数据库操作进行加速的方法和装置 |
CN113448967A (zh) * | 2021-07-20 | 2021-09-28 | 威讯柏睿数据科技(北京)有限公司 | 一种对数据库操作进行加速的方法和装置 |
US12072886B2 (en) | 2021-07-20 | 2024-08-27 | Hefei Sway Chip Information Technology Inc. | Method and device for accelerating database operation |
CN113596495A (zh) * | 2021-07-28 | 2021-11-02 | 广州方硅信息技术有限公司 | 直播推流处理方法及其装置、设备与介质 |
CN113596495B (zh) * | 2021-07-28 | 2023-11-24 | 广州方硅信息技术有限公司 | 直播推流处理方法及其装置、设备与介质 |
WO2023082609A1 (zh) * | 2021-11-09 | 2023-05-19 | 华为技术有限公司 | 一种数据处理方法以及相关设备 |
WO2023179632A1 (zh) * | 2022-03-21 | 2023-09-28 | 华为技术有限公司 | 一种数据处理方法及装置 |
WO2024093885A1 (zh) * | 2022-10-31 | 2024-05-10 | 华为技术有限公司 | 一种芯片系统和集合通信方法 |
CN116627888A (zh) * | 2023-07-25 | 2023-08-22 | 苏州浪潮智能科技有限公司 | 硬件计算模块、设备、方法、电子设备及存储介质 |
CN116627888B (zh) * | 2023-07-25 | 2023-10-03 | 苏州浪潮智能科技有限公司 | 硬件计算模块、设备、方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3358463A1 (en) | 2018-08-08 |
CN107690622B (zh) | 2020-08-07 |
CN107690622B9 (zh) | 2020-09-22 |
DK3358463T3 (da) | 2020-11-16 |
EP3358463B1 (en) | 2020-09-23 |
EP3358463A4 (en) | 2018-11-21 |
US10365830B2 (en) | 2019-07-30 |
CN112099941A (zh) | 2020-12-18 |
EP3798835A1 (en) | 2021-03-31 |
US20180059939A1 (en) | 2018-03-01 |
WO2018035856A1 (zh) | 2018-03-01 |
EP3798835B1 (en) | 2024-07-24 |
ES2830355T3 (es) | 2021-06-03 |
CN112099940A (zh) | 2020-12-18 |
CN112099941B (zh) | 2021-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107690622A (zh) | 实现硬件加速处理的方法、设备和系统 | |
US10325343B1 (en) | Topology aware grouping and provisioning of GPU resources in GPU-as-a-Service platform | |
CN105159753B (zh) | 加速器虚拟化的方法、装置及集中资源管理器 | |
CN106104501B (zh) | 用于在多节点系统中的存储器分配的方法和装置 | |
CN103942087B (zh) | 虚拟机热迁移方法及相关装置和集群系统 | |
CN100489790C (zh) | 处理管理装置、计算机系统、分布式处理方法 | |
JP6494161B2 (ja) | 計算タスクを処理するためのコンピュータクラスタ構成、およびそれを動作させるための方法 | |
CN104050091B (zh) | 基于非一致性内存访问系统的网络设备及其设置方法 | |
US20120159115A1 (en) | Software architecture for service of collective memory and method for providing service of collective memory using the same | |
CN103827842B (zh) | 向控制器存储器空间写入消息 | |
CN104521198A (zh) | 用于虚拟以太网接口绑定的系统和方法 | |
US8849905B2 (en) | Centralized computing | |
CN101150485A (zh) | 一种零拷贝缓冲区队列网络数据发送的管理方法 | |
CN105765545B (zh) | PCIe I/O设备共享方法及设备与互联系统 | |
EP1768024B1 (en) | Processing management device, computer system, distributed processing method, and computer program | |
CN108881348A (zh) | 服务质量控制方法、装置和存储服务器 | |
CN109726005A (zh) | 用于管理资源的方法、服务器系统和计算机程序产品 | |
CN104571934B (zh) | 一种内存访问的方法、设备和系统 | |
JP2014186411A (ja) | 管理装置、情報処理システム、情報処理方法、及びプログラム | |
CN114598746A (zh) | 基于智能网卡的服务器间负载均衡性能优化方法 | |
CN104750614B (zh) | 用于管理存储器的方法和装置 | |
CN106970827A (zh) | 信息处理方法、信息处理装置、电子设备 | |
CN104765644A (zh) | 基于智能体Agent的资源协作演化系统及方法 | |
CN110383254A (zh) | 优化与网络节点相关联的内存映射 | |
CN105487929A (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 | ||
CI03 | Correction of invention patent | ||
CI03 | Correction of invention patent |
Correction item: Claims Correct: Correct False: error Number: 32-02 Page: full text Volume: 36 |