CN115080479B - 传输方法、服务器、设备、裸金属实例及基板管理控制器 - Google Patents

传输方法、服务器、设备、裸金属实例及基板管理控制器 Download PDF

Info

Publication number
CN115080479B
CN115080479B CN202210672624.2A CN202210672624A CN115080479B CN 115080479 B CN115080479 B CN 115080479B CN 202210672624 A CN202210672624 A CN 202210672624A CN 115080479 B CN115080479 B CN 115080479B
Authority
CN
China
Prior art keywords
information
equipment
management controller
baseboard management
data transmission
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
Application number
CN202210672624.2A
Other languages
English (en)
Other versions
CN115080479A (zh
Inventor
赵澍澍
陈义全
王一静
徐杰雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210672624.2A priority Critical patent/CN115080479B/zh
Publication of CN115080479A publication Critical patent/CN115080479A/zh
Application granted granted Critical
Publication of CN115080479B publication Critical patent/CN115080479B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供一种传输方法、服务器、设备、裸金属实例及基板管理控制器。服务器的主板上设有基板管理控制器及多个设备;多个设备包括第一设备和第二设备。适于第一设备的数据传输方法包括:通过基板管理控制器与第二设备建立连接,以在建立过程中将自身的第一设备信息发送至基板管理控制器由基板管理控制器将第一设备信息发送至第二设备;针对待传输至第二设备的目标数据生成数据传输命令;存放数据传输命令并通知第二设备提取,以便第二设备基于第一设备信息提取数据传输命令,并通过数据传输命令获得目标数据。本申请技术方案,整个过程服务器主机操作系统对该过程均无感知,满足裸金属实例场景中设备间直接访问避开主机操作系统的需求。

Description

传输方法、服务器、设备、裸金属实例及基板管理控制器
技术领域
本申请涉及计算机技术领域,尤其涉及一种传输方法、服务器、设备、裸金属实例及基板管理控制器。
背景技术
随着云计算的飞速发展,各大云厂商纷纷推出了裸金属实例产品。裸金属实例可以为客户提供硬件整机资源,具有高性能和高灵活性的特点。裸金属实例和容器的组合也使得客户能在云上获得较好的的性能体验。裸金属实例产品的本质是云用户可直接访问云端硬件资源,如CPU、物理内存、外连设备等,用户可以直接在硬件上安装各种操作系统,使得客户获得了物理机的性能,同时还享受了云原生的服务。
大多云端服务器的主板上都连接有多个PCIe(Peripheral ComponentInterconnect Express,快速外部设备互连)设备。PCIe设备为通过根端口插接在服务器的处理器(CPU)上的硬件设备。裸金属实例可由这些PCIe设备来实现。但现有技术中,PCIe设备间的数据传输,需服务器主机操作系统参与,无法满足裸金属实例场景中设备间直接访问避开主机操作系统的需求。
发明内容
本申请提供一种能解决或至少部分地解决上述问题的传输方法、服务器、设备、裸金属实例及基板管理控制器。
在本申请的第一个实施例中,提供了一种服务器中设备间数据传输方法。服务器的主板上设有基板管理控制器BMC及多个设备;所述多个设备包括第一设备和第二设备,其中,所述方法适用于所述第一设备;具体的所述方法包括:
通过所述基板管理控制器与所述第二设备建立连接,以在建立过程中将自身的第一设备信息发送至所述基板管理控制器,由所述基板管理控制器将所述第一设备信息发送至所述第二设备;
针对待传输至所述第二设备的目标数据,生成数据传输命令;
存放所述数据传输命令并通知所述第二设备提取,以便所述第二设备基于所述第一设备信息提取所述数据传输命令,并通过所述数据传输命令获得所述目标数据。
在本申请的第二个实施例中,提供了一种服务器中设备间数据传输方法。同样的,服务器的主板上设有基板管理控制器BMC及多个设备;所述多个设备包括第一设备和第二设备。具体的,本实施例提供的所述方法适用于所述第二设备;所述方法包括:
通过所述基板管理控制器与所述第一设备建立连接,以在建立过程中接收并保存所述基板管理控制器发送的第一设备信息;
收到所述第一设备发出的通知后,基于所述第一设备信息确定提取地址;
从所述提取地址处提取所述第一设备针对待传输目标数据生成的数据传输命令;
根据所述数据传输命令,获得所述目标数据。
在本申请的第三个实施例中,提供了一种服务器中设备间数据传输方法。服务器的主板上设有基板管理控制器BMC及多个设备;具体的,本实施例提供的所述方法适用于所述基板管理控制器;所述方法包括:
确定第一设备和第二设备;其中,所述多个设备包括所述第一设备和所述第二设备;
将所述第一设备的第一设备信息发送至所述第二设备;
将所述第二设备的第二设备信息发送至所述第一设备;
收到所述第一设备保存所述第二设备信息后返回的第一响应,及所述第二设备保存所述第一设备信息后返回的第二响应后,分别向所述第一设备和所述第二设备发送完成连接信息;
接收所述第一设备和所述第二设备分别针对所述完成连接信息返回的已连接响应;
其中,完成连接的第一设备和第二设备,通过连接链路进行数据交互。
在本申请的第四个实施例中,提供了一种服务器。该服务器包括:
基板管理控制器,设置在所述主板上,用于实现上述第三个实施例方法中的步骤;
第一设备,用于实现上述第一个实施例方法中的步骤;
第二设备,用于实现上述第二个实施例方法中的步骤。
在本申请的第五个实施例中,提供了一种云服务器。该服务器包括:
主板;
基板管理控制器,设置在所述主板上,用于实现上述第三个实施例方法中的步骤;
作为裸金属实例的第一设备,设置在所述主板上,用于实现上述第一个实施例方法中的步骤;
作为另一个裸金属实例的第二设备,设置在所述主板上,用于实现上述第二个实施例方法中的步骤。
在本申请的第六个实施例中,提供了一种服务器的PCIe设备。所述PCIe设备包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述第一个实施例方法中的步骤,或第二个实施例方法中的步骤。
在本申请的第七个实施例中,提供了一种云服务器上部署的裸金属实例。该裸金属实例包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述第一个实施例方法中的步骤,或第二个实施例方法中的步骤。
在本申请的第八个实施例中,提供了一种服务器的基板管理控制器。所述基板管理控制器包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述第一个实施例方法中的步骤,或第二个实施例方法中的步骤。
本申请各实施例提供的技术方案中,服务器上设备间的通信连接由基板管理控制器(Baseboard Management Controller,BMC)负责,通过BMC完成两个设备(如第一设备和第二设备)间的连接后,其中一个设备(如第一设备)便可针对待传输的目标数据生成数据传输命令,通过通知的方式,通知第二设备获取该数据传输命令以通过该数据传输命令获得目标数据。可见,设备从建立连接到数据传输整个过程,服务器主机操作系统对该过程均无感知,无需在主机操作系统中安装任何驱动程序就行实现,满足裸金属实例场景中设备间直接访问避开主机操作系统的需求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要利用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供服务器的原理性示意图;
图2为本申请一实施例提供的服务器中设备间数据传输方法的流程示意图;
图3为本申请另一实施例提供的服务器中设备间数据传输方法的流程示意图;
图4为本申请又一实施例提供的服务器中设备间数据传输方法的流程示意图;
图5为本申请一实施例提供的服务器中设备间数据传输方法中BMC对服务器中的设备初始化过程的信令示意图;
图6为本申请一实施例提供的数据传输方法中BMC建立第一设备和第二设备通信连接的信令示意图;
图7为本申请一实施例提供的BMC、第一设备和第二设备内部结构及模块的示意图;
图8示出了本申请一实施例提供的第一设备向第二设备传输数据过程的原理性示意图;
图9为本申请一实施例提供的服务器中设备间数据传输装置的结构框图;
图10为本申请另一实施例提供的服务器中设备间数据传输装置的结构框图;
图11为本申请又一实施例提供的服务器中设备间数据传输装置的结构框图;
图12为本申请一实施例提供的服务器的PCIe设备的示意图。
具体实施方式
现有技术中有一些设备间的带外数据传输解决方案,比如PCIe P2P技术,该技术是一种基于PCIe设备之间的的peer-to-peer(端对端)的数据传输技术,不需要主机CPU和内存的干预。因为其基于PCIe的物理传输带宽,不过PCIe P2P技术在进行传输数据之前需要先初始化和配置好双方的PCIe设备信息,比如地址空间信息等,而这些控制和初始化的工作是放在主机操作系统内执行,该缺点使得PCIe P2P技术无法直接使用在云计算的裸金属实例场景,其次P2P技术只是物理传输机制,其上没有完整的协议,需要用户根据PCIe设备,进行二次的开发和设计,不易于使用。
为此,本申请提供了如下各实施例,以提供一种从设备间建立连接到数据传输过程,整个过程无需主机操作系统参与,主机操作系统无感知的技术方案。除此之外,本申请各实施例提供的技术方案中,还提供了一种设备间高性能传输的解决方案。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。而本申请中术语“或/和”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如:A或/和B,表示可以单独存在A,同时存在A和B,单独存在B这三种情况;本申请中字符“/”,一般表示前后关联对象是一种“或”关系。此外,下述的各实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请各实施例提供的技术方案之前,先对本申请技术方案中涉及到的一些专有名词进行简要说明。
带外管理,或带外管控,其核心理念是:将管理数据与PCIe设备间传输的数据分离,两者完全独立互不影响。
BMC,Baseboard Management Controller,基板管理控制器。现有技术中,BMC负责服务器的硬件状态管理、操作系统管理、健康状态管理、功耗管理等核心功能。本申请提供的各实施例通过在BMC中部署相应的应用程序(如协议控制引擎),使其具有发现服务器中各设备,对各设备进行初始化(如地址空间配置等)、建立设备间连接的能力,整个过程无需服务器的主机操作系统参与,主机操作系统无感知。
DMA,Direct Memory Access,存储器直接访问,是一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,即不通过CPU,也不需要CPU干预。在本申请的各实施例中,整个数据传输操作在一个称为DMA引擎(或称为DMA控制器)的控制下进行。
BAR,Base Address Register,基地址寄存器,用来定义PCIe设备需要的配置空间大小以及配置PCIe设备占用的地址空间。PCIe设备的地址空间可动态分配,而动态分配地址空间就是依赖于BAR实现的。
裸金属服务器,是部署在云端的云上物理服务器,为核心数据库、关键应用系统、高性能计算、大数据等提供较佳的计算性能以及数据安全。同物理机一样,拥有服务器完整的性能和物理隔离,但使用更加灵活方便,供应和运维管理由云中心负责。
裸金属实例,用户按照所需规格和镜像、网络配置购买后,由云计算机管理平台在裸金属服务器上安装系统,按照用户要求完成配置后交付用户的裸金属服务器。
本申请各方法实施例提供的技术方案,可基于类似于图1所示的硬件系统来实现。如图1所示的服务器,该服务器可以是普通机房或企业部署于本地的服务器、也可以是部署在云端的云服务器,本实施例对此不作限定。图1所示,所述服务器10可包括:主板11、基板管理控制器(下文中将简称为BMC12)、第一设备13和第二设备14。实际上,服务器10上除所述第一设备13和第二设备14外,还可包括第三设备、第四设备或更多,本实施例对此不作限定。其中,BMC12设置在所述主板11上,用于发现服务器10上的多个设备(如第一设备和第二设备),还用于建立第一设备13和所述第二设备14间的连接。第一设备13用于通过BMC12与第二设备14建立连接,并在建立过程中将自身的第一设备信息发送至所述BMC12,由所述BMC12将所述第一设备信息发送至所述第二设备14;与第二设备14建立连接后,针对待传输至所述第二设备14的目标数据,生成数据传输命令;存放所述数据传输命令并通知所述第二设备14提取,以便所述第二设备14基于所述第一设备信息提取所述数据传输命令,并通过所述数据传输命令获得所述目标数据。第二设备14用于通过所述BMC与所述第一设备13建立连接,以在建立过程中接收并保存所述BMC发送的第一设备信息;收到所述第一设备13发出的通知后,基于所述第一设备信息确定提取地址;从所述提取地址处提取所述第一设备13针对待传输目标数据生成的数据传输命令;根据所述数据传输命令,获得所述目标数据。
具体实施时,所述第一设备13和所述第二设备14可为设置在所述主板11上的PCIe设备。例如,图1所示,第一设备13、第二设备14、……第N设备(N为自然数),均连接于根复合体(Root Complex),服务器的处理器(CPU)和存储器也连接在根复合体上;BMC也连接在根复合体上。其中,根复合体(简称RC),CPU与PCIe总线之间的接口,其可能包含几个组件(如处理器接口、DRAM接口等),还可能包含几个芯片,本实施例对此不作具体限定。RC位于PCI拓扑树的“根”,可以理解为系统CPU和PCIe拓扑之间的接口,PCIe端口在配置空间中被标记为“根端口”。
当然,所述第一设备13和所述第二设备14也可以是部署在云服务器上的裸金属实例。即在本申请的另一个实施例中,提供了一种云服务器,其原理性结构图与图1类似。所述云服务器包括主板、BMC、作为裸金属实例的第一设备及作为另一个裸金属实例的第二设备。当然,该云服务器上还可部署有第三、第四或更多个裸金属实例,不限于上述的两个。其中,BMC设置在所述主板上,用于发现服务器上的多个设备(如第一设备和第二设备),还用于建立第一设备和所述第二设备间的连接。第一设备用于通过BMC与第二设备建立连接,并在建立过程中将自身的第一设备信息发送至所述BMC,由所述BMC将所述第一设备信息发送至所述第二设备;与第二设备建立连接后,针对待传输至所述第二设备的目标数据,生成数据传输命令;存放所述数据传输命令并通知所述第二设备提取,以便所述第二设备基于所述第一设备信息提取所述数据传输命令,并通过所述数据传输命令获得所述目标数据。第二设备用于通过所述BMC与所述第一设备建立连接,以在建立过程中接收并保存所述BMC发送的第一设备信息;收到所述第一设备发出的通知后,基于所述第一设备信息确定提取地址;从所述提取地址处提取所述第一设备针对待传输目标数据生成的数据传输命令;根据所述数据传输命令,获得所述目标数据。
有关于BMC、第一设备和第二设备的更具体的方案,将在如下各方法实施例中详细描述。
图2示出了本申请一实施例提供的一种服务器中设备间数据传输方法的流程示意图。结合图1所示的结构,服务器10的主板11上设有BMC12及多个设备;所述多个设备包括第一设备13和第二设备14。本实施例提供的所述方法适用于所述第一设备13。具体的,所述方法包括:
101、通过BMC与所述第二设备建立连接,以在建立过程中将自身的第一设备信息发送至所述BMC,由所述BMC将所述第一设备信息发送至所述第二设备。
102、针对待传输至所述第二设备的目标数据,生成数据传输命令。
103、存放所述数据传输命令并通知所述第二设备提取,以便所述第二设备基于所述第一设备信息提取所述数据传输命令,并通过所述数据传输命令获得所述目标数据。
上述101中,第一设备信息可包括:第一设备的地址空间信息及所述第一设备创建的多个队列的队列地址信息。除此之外,所述第一设备信息还可包括但不限于:第二设备DF信息。PCIe总线中每一个设备都有一个唯一的标识符与之对应,这个标识符就是BDF(Bus、Device、Function;总线、设备、功能)。第一设备的地址空间信息,是动态分配给第一设备的地址空间。BAR用来定义PCIe设备需要的配置空间大小以及配置PCIe设备占用的地址空间。每个PCIe设备在BAR中描述自己需要占用多少地址空间,BIOS通过所有设备的这些信息,描述系统中资源的分配情况,然后再合理的将地址空间分配给每个PCIe设备。一旦该设备对应的BAR信息确定了,其指定范围内的当前设备中的内部寄存器(或内部存储空间)就可以被访问了。
上述102中“针对所述目标数据,生成数据传输命令”,在一具体的可实现的方案中,可采用如下步骤实现:
1021、确定所述目标数据的存储地址及数据长度;
1022、基于所述存储地址及所述数据长度,生成所述数据传输命令。
在一具体的实施方案中,所述数据命令可具有包括如下字段:
上述字段“队列编号”可以用来区分该命令是数据传输命令,还是传输完成命令。例如,图8所示的例子,第一设备的内存中具有两个队列,分别为第一队列和第二队列。假设,第一队列,编号为“001”,它用来存放数据传输命令。第二队列,队列编号为“002”,它用来存放传输完成命令(该命令会在下文中有描述)。相应的,本实施例中,生成的数据传输命令中字段“队列编号”的值应该为“001”。命令编号可以是一个流水号,即生成一个自动加1。重传编号,需基于重传次数来定。校验码及读写模块,可参见现有技术中的相关描述,此处不作赘述。
上述步骤1022中,可将确定好的存储地址,写入“数据地址”字段内;数据长度可写入“数据长度”字段内。
上述103中“存放所述数据传输命令并通知所述第二设备提取”可包括如下步骤:
1031、所述数据传输命令添加至第一设备内存中的第一队列;
1032、将所述数据传输命令在所述第一队列中的第一位置,写入所述第二设备的第一寄存器,以通知所述第二设备提取。
参见图8所示,第一设备的处理器①生成数据传输命令后,②将数据传输命令添加至第一队列中;然后,③将所述数据传输命令在所述第一队列中的第一位置,写入所述第二设备的第一寄存器,以通知所述第二设备提取。
其中,第二设备的第一寄存器可以是设备中的Doorbell(门铃)寄存器。设备的用于接收通知的寄存器可以有两个,比如第二设备除了用于接收提取数据传输命令的第一寄存器外,还包括用于接收提取传输完成命令的第三寄存器。同样的,第一设备可包含有用于接收提取数据传输命令的第四寄存器外,还包括用于接收提取传输完成命令的第二寄存器。
这里需要补充的是:有关第二设备在收到通知后,获取数据传输命令,然后通过数据传输命令获得目标数据的过程,将在下文中有详细描述,可参见下文中的相应内容。本实施例主要针对第一设备的执行步骤进行详细说明。
本申请实施例提供的技术方案中,服务器上设备间的通信连接由BMC负责,通过BMC完成两个设备(如第一设备和第二设备)间的连接后,其中一个设备(如第一设备)便可针对待传输的目标数据生成数据传输命令,并通过通知的方式通知第二设备获取该数据传输命令以通过该数据传输命令获得目标数据。可见,设备从建立连接到数据传输整个过程,服务器主机操作系统对该过程均无感知,无需在主机操作系统中安装任何驱动程序就行实现,满足裸金属实例场景中设备间直接访问避开主机操作系统的需求。
进一步的,本实施例提供的所述方法还可包括如下步骤:
104、接收所述第二设备发送的传输完成命令;其中,所述传输完成命令是所述第二设备通过所述数据传输命令获得所述目标数据后生成的。
105、所述传输完成命令添加在第一设备内存中的第二队列。
106、从所述第二队列中提取所述传输完成命令。
其中,上述步骤106可在收到第二设备发送的通知后被触发。即上述步骤106可具体包括:
通过所述第一设备的第二寄存器收到所述第二设备发送的有关所述传输完成命令的通知后,从所述第二队列中提取所述传输完成命令。
参见图8所示,第二设备通过所述数据传输命令获得目标数据并完成存储(即⑤)后⑥第二设备的处理器生成传输完成命令,并通过DMA引擎将所述传输完成命令发送到第一设备的第二队列中。同时,⑦第二设备的处理器通过第一设备的第二寄存器通知第一设备。第一设备在通过第二寄存器收到提取传输完成命令的通知后,从所述第二队列中提取所述传输完成命令,并进行相应的处理。目标数据的传输过程就完成了。
其中,第二设备生成的传输完成命令可包括如下字段:
上述队列编号、命令编号、重传编号同上文,此处不作赘述。“完成状态”字段中可填入表征数据已完成传输的标识,如“1”。预留字段可为空。
进一步的,本实施例中步骤101中“通过BMC与所述第二设备建立连接”,可包括如下步骤:
S11、收到所述BMC发送的准备消息后,将本地表征发现状态的标识置为未发现状态;
S12、向所述BMC反馈已置为未发现状态的响应;
S13、接收到所述BMC发送的设备发现消息后,将本地表征发现状态的标识置为被发现状态;
S14、确定自身的第一设备信息;
S15、将所述第一设备信息写入向所述BMC反馈的被发现状态响应中,以便所述BMC存储所述第一设备信息,并将所述第一设备信息发送至所述第二设备。
上述S11中,准备消息可以是BMC采用广播的方式发出的。本地表征发现状态的标识(discovered flag)置为未发现状态,如置discovered flag=0。
上述S13中,发现消息也可以是BMC采用广播的方式发出的。本地表征发现状态的标识(discovered flag)置为被发现状态,如置discovered flag=1。
其中,上述步骤S14“确定自身的第一设备信息”可包括:
S141、确定预配置的地址空间信息;
S142、创建用于存放数据传输相关命令的多个队列;
S143、确定所述多个队列的队列地址信息;
其中,所述第一设备信息包括所述地址空间信息及所述多个队列的队列地址信息。除了地址空间信息及所述多个队列的队列地址信息外,还可包括第一设备的第二设备DF信息等等,本实施例对此不作限定。
上述S15中,写入有所述第一设备信息的被发现状态响应,也可称为初始化命令。该初始化命令可包括如下字段:
上述第二设备DF信息即PCIe设备对应的唯一标识符。命令类型、数据长度、校验码等可参见现有技术中的内容,本实施例不作具体限定。设备信息可包括:地址空间信息及多个队列的队列地址信息等。
再进一步的,本实施例中步骤101中“通过BMC与所述第二设备建立连接”,可包括如下步骤:
S16、接收所述BMC发送的所述第二设备的第二设备信息;
S17、保存所述第二设备信息;
S18、向所述BMC反馈相应的响应信息。
上述S16中,BMC发送第二设备的第二设备信息,也可采用上述的初始化命令发送。即BMC确定第二设备的第二设备DF信息,然后将第二设备DF信息及本地存储的第二设备信息写入上述初始化命令相应字段中。随后,将第二设备信息对应的初始化命令发送至第一设备,以便第一设备从中设备信息字段中提取“第二设备信息”,然后保存第二设备信息。
再进一步的,本实施例中步骤101中“通过BMC与所述第二设备建立连接”,可包括如下步骤:
S19、收到所述BMC发送的反映所述第一设备和所述第二设备完成连接的通知信息后,将本地表征连接状态的标识置为完成连接状态;
S20、向所述BMC反馈已置为完成连接状态的响应。
上述S19中,本地表征连接状态的标识(connected flag)置为完成连接状态,如置connected flag=1。当两个设备,如第一设备和第二设备的connected flag均为1时,表示两个设备间的通信连接已建立。
图3示出了本申请一实施例提供的一种服务器中设备间数据传输方法的流程示意图。结合图1所示的结构,服务器10的主板11上设有BMC12及多个设备;所述多个设备包括第一设备13和第二设备14。本实施例提供的所述方法适用于所述第二设备14。具体的,所述方法包括:
201、通过所述BMC与所述第一设备建立连接,以在建立过程中接收并保存所述BMC发送的第一设备信息。
202、收到所述第一设备发出的通知后,基于所述第一设备信息确定提取地址。
203、从所述提取地址处提取所述第一设备针对待传输目标数据生成的数据传输命令。
204、根据所述数据传输命令,获得所述目标数据。
上述201中,第一设备信息可包括但不限于:地址空间信息及多个队列的队列地址信息。
在一种可实现的技术方案中,上述步骤202中“收到所述第一设备发出的通知后,基于所述第一设备信息确定提取地址”,可采用如下步骤实现:
2021、根据所述第一设备信息,确定所述第一设备内存中的第一队列的队列地址信息;
2022、获取写入所述第二设备的第一寄存器中的第一位置;其中,所述第一位置是数据传输命令在所述第一队列中的位置;
2023、根据所述队列地址信息及所述第一位置,确定所述提取地址。
上述步骤204中“根据所述数据传输命令,获得所述目标数据”,可包括:
2041、对所述数据传输命令进行解析,得到存储地址及数据长度;
2042、基于所述存储地址及所述数据长度,发起存储器直接访问DMA请求,以通过存储器直接访问通道读取所述存储地址处所述数据长度的所述目标数据;
2043、保存所述目标数据。
上述2041,可利用如图7中所示的协议解析引擎对数据传输命令进行解析,以解析出命令中相应字段中的信息,即存储地址及数据长度。
上述2042中,第二设备发起DMA请求,便可在DMA引擎的控制下直接对存储器中的数据进行读写,即不通过CPU,也不需要CPU干预;还可实现高性能、高可靠性的数据传输。
本申请实施例提供的技术方案中,服务器上设备间的通信连接由BMC负责,通过BMC完成两个设备(如第一设备和第二设备)间的连接后,其中一个设备(如第一设备)便可针对待传输的目标数据生成数据传输命令,通过通知的方式,通知第二设备获取该数据传输命令以通过该数据传输命令获得目标数据。可见,设备从建立连接到数据传输整个过程,服务器主机操作系统对该过程均无感知,无需在主机操作系统中安装任何驱动程序就行实现,满足裸金属实例场景中设备间直接访问避开主机操作系统的需求。
进一步的,本实施例提供的所述方法还可包括如下步骤:
205、针对已获得的所述目标数据,生成传输完成命令;
206、将所述传输完成命令发送至所述第一设备,以添加到所述第一设备内存中的第二队列;
207、向所述第一设备发送有关所述传输完成命令的通知,以便所述第一设备收到所述通知后从所述第二队列中提取所述传输完成命令。
同上文内容,第二设备生成的传输完成命令可包括如下字段:
上述207中,第二设备可通过第一设备的第二寄存器(如图8中的完成Doorbell)通知第一设备取传输完成命令。
本申请上述各方法实施例,在需要传输目标数据时,先生成数据传输命令,并将数据传输命令放置于第一设备的第一队列(可称为提交队列)等待第二设备来取,第二设备取到后,通过解析数据传输命令获得数据的存储地址和数据长度,然后便能通过DMA引擎发起存储器直接访问,以在不通过CPU的情况下,直接读取存储地址处所述数据长度的目标数据。读取完后,再生成传输完成命令并将该传输完成命令发送至第一设备的第二队列(可称为完成队列)并通过第一设备的第二寄存器通知第一设备取传输完成命令,第一设备的处理器从第二队列取出传输完成命令,并对其进行相应处理后,该目标数据的传输即完成。整个过程,借助了数据传输命令、传输完成命令及多队列,保证了数据传输的可靠性,还可实现数据传输的并行化处理,提高数据传输的效率。
图4示出了本申请一实施例提供的一种服务器中设备间数据传输方法的流程示意图。结合图1所示的结构,服务器10的主板11上设有BMC12及多个设备;所述多个设备包括第一设备13和第二设备14。本实施例提供的所述方法适用于所述BMC。具体的所述方法包括:
301、确定第一设备和第二设备;其中,所述多个设备包括所述第一设备和所述第二设备;
302、将所述第一设备的第一设备信息发送至所述第二设备;
303、将所述第二设备的第二设备信息发送至所述第一设备;
304、收到所述第一设备保存所述第二设备信息后返回的第一响应,及所述第二设备保存所述第一设备信息后返回的第二响应后,分别向所述第一设备和所述第二设备发送完成连接信息;
305、接收所述第一设备和所述第二设备分别针对所述完成连接信息返回的已连接响应;
其中,完成连接的第一设备和第二设备,通过连接链路进行数据交互。
上述301中,第一设备和第二设备为需配对进行数据传输的两个设备,可以是两个设备中的任一设备向BMC申请与另一个设备配对,本实施例对此不作限定。例如,第一设备向BMC发送配对请求(该配对请求中携带有第二设备的设备标识)。BMC在接收到该配对请求后将发起方设备,即第一设备和第二设备确定为需配对建立连接的两个设备。当然,也可由BMC来确定欲配对的两个设备,其中BMC依据什么信息来确定,本实施例不作限定。
上述302和303中,第一设备的设备信息可包括但不限于:第一设备的第二设备DF信息、地址空间信息及多个队列的队列地址信息。同样的第二设备的设备信息可包括但不限于:第二设备的第二设备DF信息、地址空间信息及多个队列的队列地址信息。
进一步的,在上述各步骤之前,本实施例提供的方法还可包括设备准备和发现的过程。即本实施例提供的所述方法还可包括如下步骤:
306、发送准备消息,以通知所述多个设备中至少部分设备将本地表征发现状态的标识置为未发现状态;
307、接收到所述多个设备中至少部分设备返回的已置为未发现状态的响应后,发送发现消息,以通知所述多个设备中至少部分设备将本地表征发现状态的标识置为被发现状态并反馈自身设备信息;
308、接收到所述多个设备中至少部分设备返回的携带有自身设备信息的被发现状态响应后,保存所述多个设备中至少部分设备的设备信息。
上述306中的准备消息可以是BMC采用广播的方式发出的。同样的,上述步骤307中的发现消息可以是BMC采用广播方式发出的。
综上,本申请各实施例提出了一种高性能的带外管理控制和数据传输方案。其核心是:能够不依赖主机操作系统(即无需主机操作系统干预,也无需主机操作系统进行任何配置),在主机操作系统无感知的情况下实现同一台服务器(也可称为物理机)上多个设备(如PCIe,或裸金属实例)的高性能的管控和数据传输。
本申请各实施例提供的方案的创新点包括但不限于如下两点:
1、通过带外的方式实现PCIe设备的发现和数据传输初始化,不侵入主机操作系统。
本申请各实施例采用的方式是:在BMC上部署相应的协议控制引擎,该协议控制引擎可使得BMC具有发现服务器中的多个设备,对设备进行初始化,建立设备间通信连接的能力。整个过程,避开了服务器的CPU,无需CPU的干预。
可以这么理解:BMC上部署的协议控制引擎可实现上述图4所示实施例提供的方法,或是可实现图5和图6所示的方法步骤。
2、提出了设备间数据交互的机制,以实现高性能、高可靠性的传输。
参见图7所示,第一设备和第二设备的内部结构类似。如图所示,设备中的内存映射模块用于统一服务器中不同设备的物理地址空间,实现设备间设备内存的互相访问。即上述各方法实施例中,在数据传输过程中,如上述实施例中第二设备解析出的数据的存储地址,即已通过内存映射模块统一,这样第二设备便可根据该存储地址读取该地址处的目标数据。设备中的DMA引擎用于在解析出数据的存储地址后,基于该存储地址读写建立连接的其他设备的内存,实现设备间的数据传输。协议解析引擎(图7中有示出,图8中未示出),用于接收、解析来自其他设备的数据传输命令和传输完成命令,并返回相应响应。协议软件程序可包由处理器调用,用于在数据传输阶段生成数据传输命令,触发协议解析引擎解析数据传输命令和传输完成命令;还用于操作本设备的设备内容,并调度DMA引擎读写建立连接的设备的设备内存。
具体的,如图5所示,BMC对服务器中的设备初始化过程:
401、BMC广播准备消息,通知总线上的多个设备(如第一设备和第二设备)将设备上的发现状态标识设置为未发现状态。
402、设备在收到准备消息后,将设备的发现状态标识设置为未发现状态,并返回已置为未发现状态的响应。
步骤402中的设备可以是图5中的第一设备和第二设备。
403、BMC收到所有设备的反馈的已置为未发现状态的响应后,广播发现消息,以通知总线上的多个设备(如第一设备和第二设备)将设备上的发现状态标识设置为被发现状态。
404、设备在收到发现消息后,将设备的发现状态标识设置为被发现状态,并创建多个队列,将设备的地址空间信息及多个队列的队列地址信息作为自身的设备信息,将自身的设备信息写入反馈至BMC的被发现状态响应中。
当然,设备信息除包含有上述的地址空间信息及多个队列的队列地址信息,还可包含其他信息,本实施例对此不作限定。
同样的,步骤404中的设备可以是图5中的第一设备和第二设备。
其中,设备的地址空间信息,可以是设备的BAR信息。BAR:系统分配给PCIe设备的I/O(输入输出)映射空间或内存空间地址。物理机(或服务器上电时),机器的初始化代码(通常是存在ROM或EEPROM可擦出程序只读存储器中的启动代码)将按照PCIe规范配置PCIe设备的I/O映射空间、内存映射空间等寄存器。
405、BMC接收各设备反馈的携带有设备信息的被发现状态响应,并存储各设备的设备信息。
具体实施时,BMC可为每个PCIe设备生成一个列表,用于存放给设备相关的信息。
如图6所示,BMC建立第一设备和第二设备间的连接的过程:
501、BMC确定需配对的第一设备和第二设备,然后将第一设备信息发送至第二设备,将第二设备信息发送至第一设备。
502、第一设备收到BMC发送的第二设备信息后,保存第二设备信息,并返回第一响应。
503、第二设备收到BMC发送的第一设备信息后,保存第一设备信息,并返回第二响应。
504、BMC等到收到所有配对的设备(即第一设备和第二设备)的返回的响应后,分别向第一设备和第二设备发送完成连接信息。
505、第一设备接收到完成连接信息后,将本地表征连接状态的标识置为完成连接状态,并向BMC反馈相应的响应。
506、第二设备接收到完成连接信息后,将本地表征连接状态的标识置为完成连接状态,并向BMC反馈相应的响应。
两个设备均反馈相应响应后,第一设备和第二设备即完成连接。
第一设备发送数据到第二设备—设备间数据传输控制流和数据流图
图8示出了数据传输流程,完成所有初始化流程后配对的第一设备和第二设备间建立了连接,接下来第一设备和第二设备便可以通过数据传输命令进行数据传输。下面以第一设备传输N字节的目标数据给第二设备为例,目标数据已经在第一设备的内存中。
①、第一设备针对内存中的目标数据,生成一个数据传输命令。
其中,数据传输命令的命令形式可参见上文中描述的内容,此处不作赘述。
②、第一设备将数据传输命令提交到第一设备的设备内存中的第一队列。
③、第一设备通过将数据传输命令在第一队列中的位置写入第二设备的第一寄存器中,以通知第二设备提取数据传输命令。
④、第二设备的第一寄存器收到通知后,第二设备中的DMA引擎根据建立连接时得到的第一设备的第一队列的队列地址信息及写入第一寄存器中的位置(即数据传输命令在第一队列中的位置),确定提取地址;然后依据提取地址从所述第一队列中提取数据传输命令,并对所述数据传输命令进行解析。
⑤、第二设备将解析出的目标数据的存储地址和数据长度作为参数发起DMA请求,以通过存储器直接访问通道读取第一设备的设备内存中的目标数据,并将其拷贝到第二设备的数据缓存中。
⑥、完成数据拷贝后,第二设备生成传输完成命令,通过DMA引擎将传输完成命令发送到第一设备的第二队列中。
⑦、第二设备通过第一设备的第二寄存器通知第一设备从第二队列中提取传输完成命令。
⑧、第一设备在通过第二寄存器收到第二设备的通知后,从第二队列中提取传输完成命令并进行处理,数据传输即完成。
上述图5和图6所示的过程可由如图7中所示的部署在BMC中的协议控制引擎来实现。图7中所示的设备中的协议解析引擎可用于接收并响应来自BMC的信息和/或消息,如准备消息、发现消息、设备信息、完成连接信息等等。通过上述BMC中的协议控制引擎及设备中的协议解析引擎,可通过带外方式完成设备间通信的初始化过程,使得主机操作系统对整个初始化过程无感知。
如图7和图8中的协议软件程序,其可根据协议进行设备间高性能高可靠性数据传输的通信。具体的,协议软件程序可用于:针对待传输的目标数据生成数据传输命令,将数据传输命令提交到提交队列,并通过Doorbell寄存器通知接收方设备取走数据传输命令;还用于:在收到提取数据传输命令通知后,按照本地存储的发送方设备的设备信息取走数据传输命令并解析,根据数据命令中解析出的存储地址及数据长度向发送方设备的内存地址读写数据;完成数据读写后,创建传输完成命令并提交到完成队列中,并通过Doorbell通知发送方设备。
具体的,该协议软件程序还可包含软件协议栈,或者,软件协议栈独立于协议软件程序,其主要负责在与其他设备建立连接过程中,在设备内存中创建用于设备间并发通信的多个队列,实现设备间高性能通信。
内存映射模块将队列的起始地址和Doorbell寄存器的地址编入主机同一地址空间,用于设备间相互访问。
在具体实施时,本实施例中的设备创建的队列可以是环形队列,也可普通队列(如先入先出队列)等,本实施例对此不作限定。
由此可见,本申请实施例提供的技术方案,两个设备间可实现高的数据传输,且设备初始化和数据传输过程完全旁路主机操作系统。本方案中,BMC通过带外的方式完成设备间建立连接过程中的发现和枚举设备、交换设备队列地址等操作;同时,本方案提出的方案,实现了设备间高性能高可靠的通用数据传输;整个数据过程完全旁路主机CPU和操作系统,无需在主机操作系统安装驱动程序或控制软件,满足裸金属实例场景的需求。
进一步的,本文中各实施例中提及的服务器可包括但不限于如下至少一种:企业服务器、数据库服务器、云服务器、工作站、电脑等。其中,第一设备、第二设备等可以是但不限于:图形处理单元、音频/视频捕获卡、硬盘、主机总线适配器和非易失性内存快速(NVMe)控制器等等。
本申请一实施例还提供了一种服务器中设备间数据传输装置的结构示意图。如图9所示,所述数据传输装置包括:连接模块21、生成模块22及存储通知模块23。其中,连接模块21用于通过所述BMC与所述第二设备建立连接,以在建立过程中将自身的第一设备信息发送至所述BMC,由所述BMC将所述第一设备信息发送至所述第二设备。生成模块22用于针对待传输至所述第二设备的目标数据,生成数据传输命令。存储通知模块23用于存放所述数据传输命令并通知所述第二设备提取,以便所述第二设备基于所述第一设备信息提取所述数据传输命令,并通过所述数据传输命令获得所述目标数据。
进一步的,所述生成模块22在针对所述目标数据生成数据传输命令时,具体用于:
确定所述目标数据的存储地址及数据长度;基于所述存储地址及所述数据长度,生成所述数据传输命令。
进一步的,所述存储通知模块23在存放所述数据传输命令并通知所述第二设备提取时,具体用于:
所述数据传输命令添加至第一设备内存中的第一队列;将所述数据传输命令在所述第一队列中的第一位置,写入所述第二设备的第一寄存器,以通知所述第二设备提取。
进一步的,本实施例提供的所述数据传输装置还可包括接收模块及提取模块。其中,接收模块用于接收所述第二设备发送的传输完成命令;其中,所述传输完成命令是所述第二设备通过所述数据传输命令获得所述目标数据后生成的;所述传输完成命令添加在第一设备内存中的第二队列。所述提取模块用于从所述第二队列中提取所述传输完成命令。
进一步的,所述提取模块具体用于:通过所述第一设备的第二寄存器收到所述第二设备发送的有关所述传输完成命令的通知后,从所述第二队列中提取所述传输完成命令。
进一步的,所述连接模块在通过所述BMC与所述第二设备建立连接时,具体用于:
收到所述BMC发送的准备消息后,将本地表征发现状态的标识置为未发现状态;向所述BMC反馈已置为未发现状态的响应;接收到所述BMC发送的设备发现消息后,将本地表征发现状态的标识置为被发现状态;确定自身的第一设备信息;将所述第一设备信息写入向所述BMC反馈的被发现状态响应中,以便所述BMC存储所述第一设备信息,并将所述第一设备信息发送至所述第二设备。
进一步的,所述连接模块在确定自身的第一设备信息时具体用于:确定预配置的地址空间信息;创建用于存放数据传输相关命令的多个队列;确定所述多个队列的队列地址信息;其中,所述第一设备信息包括所述地址空间信息及所述多个队列的队列地址信息。
再进一步的,所述连接模块还用于:接收所述BMC发送的所述第二设备的第二设备信息;保存所述第二设备信息;向所述BMC反馈相应的响应信息。
再进一步的,所述连接模块还用于:收到所述BMC发送的反映所述第一设备和所述第二设备完成连接的通知信息后,将本地表征连接状态的标识置为完成连接状态;向所述BMC反馈已置为完成连接状态的响应。
这里需要说明的是:本实施例提供的所述服务器中设备间数据传输装置中各模块对应的功能未详尽的内容可参见上述各实施例中的相应内容,此处不再作赘述。此外,本实施例提供的所述数据传输装置中除了上述各模块对应功能外,还可包括上述各方法实施例中其他部分或全部步骤对应的功能,具体可参见上述各实施例相应内容,在此不再赘述。
本申请另一实施例还提供了一种服务器中设备间数据传输装置的结构示意图。如图10所示,所述数据传输装置包括:连接模块31、确定模块32、提取模块33及获取模块34。其中,连接模块31用于通过所述BMC与所述第一设备建立连接,以在建立过程中接收并保存所述BMC发送的第一设备信息。所述确定模块32用于在收到所述第一设备发出的通知后,基于所述第一设备信息确定提取地址。所述提取模块33用于从所述提取地址处提取所述第一设备针对待传输目标数据生成的数据传输命令。所述获取模块34用于根据所述数据传输命令,获得所述目标数据。
进一步的,所述确定模块32在收到所述第一设备发出的通知后基于所述第一设备信息确定提取地址时,具体用于:
根据所述第一设备信息,确定所述第一设备内存中的第一队列的队列地址信息;获取写入所述第二设备的第一寄存器中的第一位置;其中,所述第一位置是数据传输命令在所述第一队列中的位置;根据所述队列地址信息及所述第一位置,确定所述提取地址。
进一步的,所述获取模块34在根据所述数据传输命令获得所述目标数据时,具体用于:
对所述数据传输命令进行解析,得到存储地址及数据长度;基于所述存储地址及所述数据长度,发起存储器直接访问DMA请求,以通过存储器直接访问通道读取所述存储地址处所述数据长度的所述目标数据;保存所述目标数据。
进一步的,本实施例提供的所述方法还可包括:生成模块及发送通知模块。其中,生成模块用于针对已获得的所述目标数据,生成传输完成命令。发送通知模块,用于将所述传输完成命令发送至所述第一设备,以添加到所述第一设备内存中的第二队列;向所述第一设备发送有关所述传输完成命令的通知,以便所述第一设备收到所述通知后从所述第二队列中提取所述传输完成命令。
这里需要说明的是:本实施例提供的所述服务器中设备间数据传输装置中各模块对应的功能未详尽的内容可参见上述各实施例中的相应内容,此处不再作赘述。此外,本实施例提供的所述数据传输装置中除了上述各模块对应功能外,还可包括上述各方法实施例中其他部分或全部步骤对应的功能,具体可参见上述各实施例相应内容,在此不再赘述。
本申请另一实施例还提供了一种服务器中设备间数据传输装置的结构示意图。如图11所示,所述数据传输装置包括:确定模块41、发送模块42及接收模块43。其中,所述确定模块41用于确定第一设备和第二设备;其中,所述多个设备包括所述第一设备和所述第二设备。所述发送模块42用于将所述第一设备的第一设备信息发送至所述第二设备;将所述第二设备的第二设备信息发送至所述第一设备;收到所述第一设备保存所述第二设备信息后返回的第一响应,及所述第二设备保存所述第一设备信息后返回的第二响应后,分别向所述第一设备和所述第二设备发送完成连接信息。所述接收模块43用于接收所述第一设备和所述第二设备分别针对所述完成连接信息返回的已连接响应。其中,完成连接的第一设备和第二设备,通过连接链路进行数据交互。
进一步的,所述发送模块42还用于发送准备消息,以通知所述多个设备中至少部分设备将本地表征发现状态的标识置为未发现状态。所述接收模块43还用于接收到所述多个设备中至少部分设备返回的已置为未发现状态的响应后,发送发现消息,以通知所述多个设备中至少部分设备将本地表征发现状态的标识置为被发现状态并反馈自身设备信息。再进一步的,本实施例所述的数据传输装置还包括保存模块。其中,保存模块用于在接收到所述多个设备中至少部分设备返回的携带有自身设备信息的被发现状态响应后,保存所述多个设备中至少部分设备的设备信息。
这里需要说明的是:本实施例提供的所述服务器中设备间数据传输装置中各模块对应的功能未详尽的内容可参见上述各实施例中的相应内容,此处不再作赘述。此外,本实施例提供的所述数据传输装置中除了上述各模块对应功能外,还可包括上述各方法实施例中其他部分或全部步骤对应的功能,具体可参见上述各实施例相应内容,在此不再赘述。
图12示出了本申请一实施例提供一个服务器的PCIe设备的结构示意图。如图12所示,所述电子设备包括:存储器51以及处理器52。存储器51可被配置为存储其它各种数据以支持在传感器上的操作。这些数据的示例包括用于在传感器上操作的任何应用程序或方法的指令。存储器51可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
所述存储器51,用于存储一条或多条计算机指令;
所述处理器52,与所述存储器51耦合,用于执行所述存储器51中存储的一条或多条计算机指令,以实现上述相应方法实施例提供的数据传输方法中的步骤。
图12中仅示意性给出部分组件,并不意味着电子设备只包括图12所示组件。
本申请的另一个实施例还提供了一种云服务器上部署的裸金属实例。该裸金属实例包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够相应方法实施例提供的数据传输方法中的步骤。
本申请的又一个实施例还提供了一种服务器的BMC。该BMC包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述相应方法实施例提供的数据传输方法中的步骤。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的数据传输方法步骤或功能。
本申请实施例还提供一种计算机程序产品,包括计算机程序,当所述计算机程序被处理器执行时,致使所述处理器能够实现上述各实施例提供的文本处理方法步骤或功能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种服务器中设备间数据传输方法,其特征在于,服务器的主板上设有基板管理控制器BMC及多个设备;所述多个设备包括第一设备和第二设备,其中,所述方法适用于所述第一设备;
所述方法包括:
通过所述基板管理控制器与所述第二设备建立连接,以在建立过程中将自身的第一设备信息发送至所述基板管理控制器,由所述基板管理控制器将所述第一设备信息发送至所述第二设备;
针对待传输至所述第二设备的目标数据,生成数据传输命令;
存放所述数据传输命令并通知所述第二设备提取,以便所述第二设备基于所述第一设备信息提取所述数据传输命令,并通过所述数据传输命令获得所述目标数据;
其中,通过所述基板管理控制器与所述第二设备建立连接,包括:收到所述基板管理控制器发送的准备消息后,将本地表征发现状态的标识置为未发现状态;向所述基板管理控制器反馈已置为未发现状态的响应;接收到所述基板管理控制器发送的设备发现消息后,将本地表征发现状态的标识置为被发现状态;确定自身的第一设备信息,其中,所述第一设备信息包括地址空间信息及创建的用于存放数据传输相关命令的多个队列的队列地址信息;将所述第一设备信息写入向所述基板管理控制器反馈的被发现状态响应中,以便所述基板管理控制器存储所述第一设备信息并将所述第一设备信息发送至第二设备;接收并保存所述基板管理控制器发送的所述第二设备的第二设备信息;向所述基板管理控制器反馈相应的响应信息;收到所述基板管理控制器发送的反映所述第一设备和所述第二设备完成连接的通知信息后,将本地表征连接状态的标识置为完成连接状态。
2.根据权利要求1所述的方法,其特征在于,针对所述目标数据,生成数据传输命令,包括:
确定所述目标数据的存储地址及数据长度;
基于所述存储地址及所述数据长度,生成所述数据传输命令。
3.根据权利要求1所述的方法,其特征在于,存放所述数据传输命令并通知所述第二设备提取,包括:
所述数据传输命令添加至第一设备内存中的第一队列;
将所述数据传输命令在所述第一队列中的第一位置,写入所述第二设备的第一寄存器,以通知所述第二设备提取。
4.根据权利要求1至3中任一项所述的方法,其特征在于,还包括:
接收所述第二设备发送的传输完成命令;其中,所述传输完成命令是所述第二设备通过所述数据传输命令获得所述目标数据后生成的;
所述传输完成命令添加在第一设备内存中的第二队列;
从所述第二队列中提取所述传输完成命令。
5.根据权利要求1所述的方法,其特征在于,通过所述基板管理控制器与所述第二设备建立连接,还包括:
向所述基板管理控制器反馈已置为完成连接状态的响应。
6.一种服务器中设备间数据传输方法,其特征在于,服务器的主板上设有基板管理控制器BMC及多个设备;所述多个设备包括第一设备和第二设备,其中,所述方法适用于所述第二设备;
所述方法包括:
通过所述基板管理控制器与所述第一设备建立连接,以在建立过程中接收并保存所述基板管理控制器发送的第一设备信息;
收到所述第一设备发出的通知后,基于所述第一设备信息确定提取地址;
从所述提取地址处提取所述第一设备针对待传输目标数据生成的数据传输命令;
根据所述数据传输命令,获得所述目标数据;
其中,通过所述基板管理控制器与所述第一设备建立连接,包括:收到所述基板管理控制器发送的准备消息后,将本地表征发现状态的标识置为未发现状态;向所述基板管理控制器反馈已置为未发现状态的响应;接收到所述基板管理控制器发送的设备发现消息后,将本地表征发现状态的标识置为被发现状态;确定自身的第二设备信息,其中,所述第二设备信息包括地址空间信息及创建的用于存放数据传输相关命令的多个队列的队列地址信息;将所述第二设备信息写入向所述基板管理控制器反馈的被发现状态响应中,以便所述基板管理控制器存储所述第二设备信息并将所述第二设备信息发送至第一设备;接收并保存所述基板管理控制器发送的所述第一设备的第一设备信息;向所述基板管理控制器反馈相应的响应信息;收到所述基板管理控制器发送的反映所述第一设备和所述第二设备完成连接的通知信息后,将本地表征连接状态的标识置为完成连接状态。
7.根据权利要求6所述的方法,其特征在于,收到所述第一设备发出的通知后,基于所述第一设备信息确定提取地址,包括:
根据所述第一设备信息,确定所述第一设备内存中的第一队列的队列地址信息;
获取写入所述第二设备的第一寄存器中的第一位置;其中,所述第一位置是数据传输命令在所述第一队列中的位置;
根据所述队列地址信息及所述第一位置,确定所述提取地址。
8.根据权利要求6或7所述的方法,其特征在于,根据所述数据传输命令,获得所述目标数据,包括:
对所述数据传输命令进行解析,得到存储地址及数据长度;
基于所述存储地址及所述数据长度,发起存储器直接访问DMA请求,以通过存储器直接访问通道读取所述存储地址处所述数据长度的所述目标数据;
保存所述目标数据。
9.一种服务器中设备间数据传输方法,其特征在于,服务器的主板上设有基板管理控制器BMC及多个设备;其中,所述方法适用于所述基板管理控制器;
所述方法包括:
确定第一设备和第二设备;其中,所述多个设备包括所述第一设备和所述第二设备;
向所述第一设备和所述第二设备发送准备消息,以通知所述第一设备和所述第二设备将本地表征发现状态的标识置为未发现状态;
接收到所述第一设备和所述第二设备返回的已置为未发现状态的响应后,向所述第一设备和所述第二设备发送设备发现消息,以通知所述第一设备和所述第二设备将本地表征发现状态的标识置为被发现状态并反馈自身设备信息;
接收到所述第一设备和所述第二设备返回的携带有自身设备信息的被发现状态响应后,保存所述第一设备的第一设备信息及第二设备的第二设备信息;其中,所述第一设备信息包括地址空间信息及创建的用于存放数据传输相关命令的多个队列的队列地址信息,所述第二设备信息包括地址空间信息及创建的用于存放数据传输相关命令的多个队列的队列地址信息;
将所述第一设备的第一设备信息发送至所述第二设备;
将所述第二设备的第二设备信息发送至所述第一设备;
收到所述第一设备保存所述第二设备信息后返回的第一响应,及所述第二设备保存所述第一设备信息后返回的第二响应后,分别向所述第一设备和所述第二设备发送完成连接信息,以通知所述第一设备和所述第二设备将本地表征连接状态的标识置为完成连接状态;
接收所述第一设备和所述第二设备分别针对所述完成连接信息返回的已连接响应;
其中,完成连接的第一设备和第二设备,通过连接链路进行数据交互。
10.一种服务器,其特征在于,包括:
主板;
基板管理控制器,设置在所述主板上,用于实现上述权利要求9所述的方法中的步骤;
第一设备,用于实现上述权利要求1至5中任一项所述的方法中的步骤;
第二设备,用于实现上述权利要求6至8中任一项所述的方法中的步骤。
11.一种服务器的PCIe设备,其特征在于,包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述权利要求实现上述权利要求1至5中任一项所述方法中的步骤,或权利要求6至8中任一项所述方法中的步骤。
12.一种服务器的基板管理控制器,其特征在于,包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行时能够实现上述权利要求实现上述权利要求9所述方法中的步骤。
CN202210672624.2A 2022-06-14 2022-06-14 传输方法、服务器、设备、裸金属实例及基板管理控制器 Active CN115080479B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210672624.2A CN115080479B (zh) 2022-06-14 2022-06-14 传输方法、服务器、设备、裸金属实例及基板管理控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210672624.2A CN115080479B (zh) 2022-06-14 2022-06-14 传输方法、服务器、设备、裸金属实例及基板管理控制器

Publications (2)

Publication Number Publication Date
CN115080479A CN115080479A (zh) 2022-09-20
CN115080479B true CN115080479B (zh) 2024-03-26

Family

ID=83251269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210672624.2A Active CN115080479B (zh) 2022-06-14 2022-06-14 传输方法、服务器、设备、裸金属实例及基板管理控制器

Country Status (1)

Country Link
CN (1) CN115080479B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116028430B (zh) * 2023-03-28 2023-06-13 飞腾信息技术有限公司 一种pcie设备扫描方法及片上系统
CN116932274B (zh) * 2023-09-19 2024-01-09 苏州元脑智能科技有限公司 异构计算系统和服务器系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102448074A (zh) * 2010-09-30 2012-05-09 国际商业机器公司 一种服务器管理的方法和系统
CN108694021A (zh) * 2017-04-03 2018-10-23 三星电子株式会社 使用基板管理控制器配置存储设备的系统和方法
US10242176B1 (en) * 2017-01-17 2019-03-26 Cisco Technology, Inc. Controlled access communication between a baseboard management controller and PCI endpoints
CN110495136A (zh) * 2017-11-01 2019-11-22 华为技术有限公司 裸金属服务器的硬件属性发现方法和系统
CN112838952A (zh) * 2021-01-04 2021-05-25 联想(北京)有限公司 基板管理控制器的数据传输方法、bmc、服务器和介质
CN113826073A (zh) * 2019-05-07 2021-12-21 微软技术许可有限责任公司 可动态配置的基板管理控制器
CN114138702A (zh) * 2022-01-29 2022-03-04 阿里云计算有限公司 计算系统、pci设备管理器及其初始化方法
CN114598735A (zh) * 2022-01-30 2022-06-07 阿里巴巴(中国)有限公司 数据处理方法和系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043527B2 (en) * 2013-01-04 2015-05-26 American Megatrends, Inc. PCI express channel implementation in intelligent platform management interface stack
US20170102952A1 (en) * 2015-10-07 2017-04-13 Dell Products, L.P. Accessing data stored in a remote target using a baseboard management controler (bmc) independently of the status of the remote target's operating system (os)
US9940143B2 (en) * 2016-03-17 2018-04-10 Dell Products, L.P. Using peripheral component interconnect express vendor-defined message (PCIe-VDM) and inter-integrated circuit (I2C) transport for network communications
US10445283B2 (en) * 2017-08-01 2019-10-15 Lenovo Enterprise Solutions (Singaore) Pte. Ltd. Out-of-band management of data drives
US11875172B2 (en) * 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US20210096848A1 (en) * 2020-12-11 2021-04-01 Sarathy Jayakumar Secure and efficient microcode(ucode) hot-upgrade for bare metal cloud

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102448074A (zh) * 2010-09-30 2012-05-09 国际商业机器公司 一种服务器管理的方法和系统
US10242176B1 (en) * 2017-01-17 2019-03-26 Cisco Technology, Inc. Controlled access communication between a baseboard management controller and PCI endpoints
CN108694021A (zh) * 2017-04-03 2018-10-23 三星电子株式会社 使用基板管理控制器配置存储设备的系统和方法
CN110495136A (zh) * 2017-11-01 2019-11-22 华为技术有限公司 裸金属服务器的硬件属性发现方法和系统
CN113826073A (zh) * 2019-05-07 2021-12-21 微软技术许可有限责任公司 可动态配置的基板管理控制器
CN112838952A (zh) * 2021-01-04 2021-05-25 联想(北京)有限公司 基板管理控制器的数据传输方法、bmc、服务器和介质
CN114138702A (zh) * 2022-01-29 2022-03-04 阿里云计算有限公司 计算系统、pci设备管理器及其初始化方法
CN114598735A (zh) * 2022-01-30 2022-06-07 阿里巴巴(中国)有限公司 数据处理方法和系统

Also Published As

Publication number Publication date
CN115080479A (zh) 2022-09-20

Similar Documents

Publication Publication Date Title
US10095639B2 (en) Multi-processor startup system
CN115080479B (zh) 传输方法、服务器、设备、裸金属实例及基板管理控制器
EP0358292A2 (en) Remote boot
US10509758B1 (en) Emulated switch with hot-plugging
CN110908753B (zh) 一种智能融合的云桌面服务器、客户端及系统
CN110532208B (zh) 一种数据处理方法、接口转换结构及数据处理设备
CN110389711B (zh) 帮助端点设备实现sr-iov功能的方法、设备和非瞬态计算机可读介质
CN105389120B (zh) 支持通过活动消息的rma api
CN111126604B (zh) 模型训练方法、装置、服务器及存储介质
CN112698838B (zh) 多云容器部署系统及其容器部署方法
CN112579311A (zh) 访问固态硬盘的方法及存储设备
US10824486B1 (en) Two-way clipboard exchange in virtual console
CN115827524A (zh) 一种数据传输方法以及装置
US10789200B2 (en) Server message block remote direct memory access persistent memory dialect
CN116662229A (zh) 一种数据传输方法及电子设备
CN107659621B (zh) 一种raid控制卡配置方法及装置
US9658970B1 (en) Interconnection of peripheral devices on different electronic devices
US20130031547A1 (en) Facilitating compatible interaction, at least in part
CN113703676B (zh) 一种双活卷的调用方法、装置、设备和介质
US11210254B2 (en) Methods, electronic devices, storage systems, and computer program products for storage management
CN117251297B (zh) 一种设备分配方法及电子设备和存储介质
CN116820430B (zh) 异步读写方法、装置、计算机设备及存储介质
CN118069568B (zh) 外部设备拓扑配置方法、数据处理器、设备和程序产品
US20220237056A1 (en) Generation of asynchronous application programming interface specifications for messaging topics
CN116010320A (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