CN102707991A - 多根i/o 虚拟化共享方法和系统 - Google Patents

多根i/o 虚拟化共享方法和系统 Download PDF

Info

Publication number
CN102707991A
CN102707991A CN2012101538629A CN201210153862A CN102707991A CN 102707991 A CN102707991 A CN 102707991A CN 2012101538629 A CN2012101538629 A CN 2012101538629A CN 201210153862 A CN201210153862 A CN 201210153862A CN 102707991 A CN102707991 A CN 102707991A
Authority
CN
China
Prior art keywords
pcie
root node
transaction packet
equipment
virtual
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
Application number
CN2012101538629A
Other languages
English (en)
Other versions
CN102707991B (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201210153862.9A priority Critical patent/CN102707991B/zh
Publication of CN102707991A publication Critical patent/CN102707991A/zh
Application granted granted Critical
Publication of CN102707991B publication Critical patent/CN102707991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种多根I/O虚拟化共享系统和方法,该系统包括:根节点子系统,所述根节点子系统包含N个根节点,每个根节点由根联合体及其连接的CPU和内存组成;I/O设备子系统,所述I/O设备子系统包含M个I/O设备,各I/O设备具备同时为所述多个虚拟机提供服务的能力;多根I/O虚拟化共享控制器,所述多根I/O虚拟化共享控制器由PCIe上游端口、PCIe多根交换机和PCIe下游端口组成,该多根I/O虚拟化共享控制器通过PCIe接口协议将根节点子系统和I/O设备子系统耦合,实现I/O设备资源被多个根节点直接共享。

Description

多根I/O 虚拟化共享方法和系统
技术领域
本发明涉及I/O虚拟化技术,特别是涉及多根I/O虚拟化共享方法和系统。 
背景技术
在传统数据中心或云计算中心中,每个刀片服务器都拥有独立的I/O资源,如网卡、HBA适配器等。然而计算与I/O资源的紧密耦合,使得两类资源的扩展同时受到服务器空间的限制。此外,高性能I/O设备(如10GigE网卡)仅依附一台服务器,无疑降低了其利用效率,提高了系统总成本。为解决上述问题,就要解除计算与I/O资源的紧密耦合,其关键就是实现I/O设备在多个服务器之间的共享。 
近年来,I/O设备的共享技术得到了变革性的发展,行业标准组织PCI特别兴趣小组PCI-SIG先后制定了PCI-SIG Single Root I/O Virtualization(SR-IOV:单根IO虚拟化)和PCI-SIG Multi-Root I/O Virtualization(MR-IOV:多根IO虚拟化)规范。具备SR-IOV能力的PCI Express设备能够被运行在同一宿主机上的不同虚拟机(VM/Guest)所共享,并为虚拟机提供接近本机的I/O性能。目前SR-IOV已得到I/O设备厂商的广泛支持,如支持SR-IOV的千兆以太网卡、10G以太网卡、HBA适配器等。 
具备MR-IOV能力的PCI Express设备能够被多个宿主机上运行的若干虚拟机(VM/Guest)所共享,MR-IOV技术可以完全解除计算与I/O间的紧密耦合。但由于PCI-SIG的MR-IOV协议对原有系统的较大改动(包括对PCIe基本协议、PCIe设备结构和PCIe交换机结构的修改),难以被工业界接受。 
因此亟需一种仅对已有系统进行少量修改,就可实现MR-IOV所定义系统功能的方法,并基于该方法构建多根I/O虚拟化共享系统。 
发明内容
为解决上述问题,本发明提出了一种实现多根I/O虚拟化共享的方法,包括:使用直接I/O虚拟化接口设备实现I/O设备被多个根节点共享,使用主控 制根节点管理和控制多根I/O虚拟化共享系统,使用多根I/O虚拟化共享控制器实现多个根节点和I/O设备之间的逻辑连接。 
本发明公开一种多根I/O虚拟化共享系统,包括: 
根节点子系统,所述根节点子系统包含N个根节点,每个根节点是一个单根PCIe环境,由根联合体及其连接的CPU和内存组成,根节点运行多个虚拟机; 
I/O设备子系统,所述I/O设备子系统包含M个I/O设备,各I/O设备具备同时为所述多个虚拟机提供服务的能力,I/O设备子系统是属于主控制根节点的单根PCIe环境; 
多根I/O虚拟化共享控制器,所述多根I/O虚拟化共享控制器由PCIe上游端口、PCIe多根交换机和PCIe下游端口组成,所述多根I/O虚拟化共享控制器通过PCIe接口协议将根节点子系统和I/O设备子系统耦合,实现I/O设备资源被多个根节点直接共享,所述多根I/O虚拟化共享控制是涉及多个根节点的多根PCIe环境。 
所述的多根I/O虚拟化共享系统,所述根节点子系统包括: 
主控制根节点,所述主控制根节点对系统中的所有I/O设备资源具有绝对的控制权,它管理和分配系统中的PCIe设备,根节点子系统只有一个主控制根节点; 
从属根节点,所述从属根节点对系统中的I/O设备资源拥有一定的使用权,根节点子系统中除了主控制根节点之外的其他根节点均为从属根节点,它们共享系统中的I/O设备。 
所述的多根I/O虚拟化共享系统,所述多根I/O虚拟化共享控制器包括: 
PCIe上游端口、用于包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器,并负责与根节点子系统的互连;并负责单根PCIe环境和多根PCIe环境之间的事务包转换; 
PCIe多根交换机、用于包含端口数为N+M的PCIe交换机,实现N个根节点与M个I/O设备之间的逻辑连接,每个根节点都有一个对应的虚拟PCIe交换机,其中N为根节点的数目; 
PCIe下游端口、用于包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器和直接I/O虚拟化接口设备,并负责与I/O设备子系统的 互连;并负责单根PCIe环境和多根PCIe环境之间的事务包转换。 
所述的多根I/O虚拟化共享系统,所述单根PCIe环境和多根PCIe环境之间的事务包转换包括: 
单根PCIe环境到多根PCIe环境的事务包转换,是指事务包从单根PCIe环境进入多根PCIe环境时,向事务包附加上其所属根节点标识ID。 
多根PCIe环境到PCIe单根环境的事务包转换,是指事务包从多根PCIe环境进入单根PCIe环境时,从事务包中删除根节点标识ID,还原标准的单根PCIe事务包。 
所述的多根I/O虚拟化共享系统,包括: 
所述虚拟PCIe交换机实现一个根节点与M个I/O设备的数据交换,拥有M+1个端口,其中M为I/O设备的数目,每个端口都有包含一个PCI桥。 
所述的多根I/O虚拟化共享系统,所述PCIe下游端口包括: 
所述直接I/O虚拟化接口设备、是对应于PCIe下游端口连接的I/O设备的逻辑镜像,所述直接I/O虚拟化接口设备通过建立逻辑虚拟功能镜像,替代PCIe下游端口连接的I/O设备中各功能,作为从属根节点的设备占位符,实现I/O设备被多个根节点共享。 
所述的多根I/O虚拟化共享系统,所述直接I/O虚拟化接口设备包括: 
所述逻辑虚拟功能镜像,是对应于直接I/O虚拟化接口设备所在的PCIe下游端口连接的I/O设备中功能的逻辑镜像,所述逻辑虚拟功能镜像替代I/O设备功能接收和响应从属根节点的枚举发现和初始化配置。 
本发明还公开一种多根I/O虚拟化共享方法,包括: 
步骤1,使用直接I/O虚拟化接口设备实现I/O设备被多个根节点共享; 
步骤2,使用主控制根节点管理和控制多根I/O虚拟化共享系统; 
步骤3,多根I/O虚拟化共享控制器针对PCIe下行事务和上行事务提供了相应的转发处理方法,实现了多个根节点和I/O设备之间的逻辑连接。 
所述的多根I/O虚拟化共享方法,所述步骤1还包括: 
步骤91,直接I/O虚拟化接口设备模块通过获取I/O设备的配置空间信息,为I/O设备中每个功能建立相应的逻辑虚拟功能镜像; 
步骤92,直接I/O虚拟化接口设备模块分析主控制根节点发出的设备功能分配指令,建立设备功能与根节点的从属映射关系; 
步骤93,在从属根节点进行PCIe设备扫描时,直接I/O虚拟化接口设备模块根据记录的设备功能和根节点的从属映射关系,截取和模拟响应从属根节点对所分配的设备功能的枚举发现和初始化配置; 
步骤94,在设备功能正常操作使用过程中,直接I/O虚拟化接口设备模块负责将从属根节点对所分配的设备功能的访问硬件重映射到物理I/O设备中相应功能,实现从属根节点对I/O设备的直接访问。 
所述的多根I/O虚拟化共享方法,所述步骤2包括: 
步骤101,根节点子系统上电启动,各根节点独立进行各自PCIe域中PCIe设备发现和初始化配置;在设备功能分配前,只有主控制根节点能够发现和初始化物理I/O设备; 
步骤102,主控制根节点执行管理用户资源分配策略进行设备功能分配;主控制根节点根据管理用户制定的资源分配策略,将I/O设备的硬件资源以设备功能为单位分配给各从属根节点,为每个从属根节点建立动态的PCIe拓扑结构; 
步骤103,引导各从属根节点重新发现和初始化PCIe设备; 
步骤104,根节点子系统加载I/O设备驱动,以备系统进行操作使用;在系统正常运行过程中,如果管理用户指示修改设备分配指令,转向步骤102。 
所述的多根I/O虚拟化共享方法,所述步骤101中主控制根节点PCIe域初始化配置包括: 
步骤111,主控制根节点上电启动; 
步骤112,读写PCIe多根交换机中主控制根节点对应的上游PCI桥配置信息; 
步骤113,读写PCIe多根交换机中下游PCI桥配置信息;如果PCIe多根交换机中的所有下游PCI桥配置信息都遍历结束,转向步骤115;否则,转向步骤114; 
步骤114,读写相应下游PCI桥连接的I/O设备配置信息,然后转向步骤113; 
步骤115,执行用户资源分配策略向各从属根基节点分配设备功能; 
步骤116,引导各从属根节点重新发现和初始化PCIe设备; 
步骤117,加载I/O设备驱动以备系统操作使用。 
所述的多根I/O虚拟化共享方法,所述步骤101中从属根节点PCIe域初始化配置流程还包括: 
步骤121,从属根节点上电启动; 
步骤122,读写PCIe多根交换机中该从属根节点对应的上游PCI桥配置信息; 
步骤123,读写PCIe多根交换机中下游PCI桥配置信息。如果PCIe多根交换机中的所有下游PCI桥配置信息都遍历结束,转向步骤125;否则,转向步骤124; 
步骤124,读写相应下游PCI桥连接的I/O设备配置信息;此时,从属根节点对应的虚拟交换机没有连接任何I/O设备,然后转向步骤123; 
步骤125,从属根节点上电启动初始化结束,如果接收到PCIe重扫描事件,转向步骤126; 
步骤126,重新扫描和初始化PCIe设备,其为分配得到的设备功能对应的逻辑虚拟功能镜像; 
步骤127,加载I/O设备驱动以备系统操作使用。 
所述的多根I/O虚拟化共享方法,所述步骤3包括: 
所述下行事务处理方法,为对根节点发起的PCIe事务包的处理方法,包括基于ID路由的下行事务的处理方法和基于地址路由的下行事务的处理方法; 
所述上行事务处理方法,为对I/O设备或者多根I/O虚拟化共享控制器发起的PCIe事务包的处理方法,包括基于ID路由的上行事务的处理方法和基于地址路由的上行事务的处理方法。 
所述的多根I/O虚拟化共享方法,所述基于ID路由的下行事务的处理方法包括: 
步骤141、PCIe上游端口接收从根节点发来的PCIe事务包,并将该端口连接的根节点的标识ID记录在接收到的事务包中,然后将修改后的PCIe事务包传送到PCIe多根交换机中,转向步骤142; 
步骤142、PCIe多根交换机解析下行事务包的路由方式,PCIe多根交换机对下行事务包的路由方式进行解析,如果是基于ID路由的事务包,转向步骤143; 
步骤143、PCIe多根交换机对基于ID路由的下行事务包中的ID号进行判 定,如果事务包中ID位于本地的总线范围之内,则转向步骤144;如果事务包中ID位于交换机从属的总线范围之内,则转向步骤146;否则,转向步骤145。 
步骤144、PCIe多根交换机本地处理响应该事务包,然后转向步骤141; 
步骤145、向事务包指示的根节点返回一个不支持的事务包,然后转向步骤141; 
步骤146、PCIe多根交换机确定转发事务包的出端口,PCIe多根交换机将要转发事务包中的ID与其从属的下游端口的总线范围进行匹配,确定事务包的出端口,并将事务包传送至匹配出端口对应的PCIe下游端口,然后转向步骤147; 
步骤147、PCIe下游端口解析接收到的事务包,PCIe下游端口对接收到的事务包进行解析,提取事务包中的根节点标识ID和目标设备功能ID,所述目标功能ID,对于请求事务包,是指事务包中总线号/设备号/功能号域组成的数据段;对于完成包,是指事务包中的请求者ID,操作完成后转向148; 
步骤148、PCIe下游端口对事务包的发起根节点进行判定;如果事务包中附加的根节点标识ID指示是从属根节点,则将该事务包传送给直接I/O虚拟化接口设备,转向步骤149;否则,如果指示是主控制根节点,将该事务包传送给PCIe控制器,转向步骤1413; 
步骤149、直接I/O虚拟化接口设备对事务包进行功能映射;直接I/O虚拟化接口设备根据事务包中的从属根节点标识ID和目标设备功能ID,查询其映射的物理设备功能ID;如果存在匹配的物理设备功能ID,转向步骤1410;如果不存在;则转向步骤145; 
步骤1410、直接I/O虚拟化接口设备改写事务包;直接I/O虚拟化接口设备将事务包中目标设备功能ID替换为步骤149中获得的匹配物理设备功能ID,然后转向步骤1411; 
步骤1411、直接I/O虚拟化接口设备对事务包的类型进行判定;如果是配置包,则转向步骤1412;否则,转向步骤1413; 
步骤1412、直接I/O虚拟化接口设备对事务包进行处理响应,完成后转向步骤141; 
步骤1413、PCIe控制器传将事务包送给其端口连接的物理I/O设备,完成后转向步骤141。 
所述的多根I/O虚拟化共享方法,所述基于地址路由的下行事务的处理方法,包括: 
步骤151、PCIe上游端口接收从根节点发来的PCIe事务包,并将该端口连接的根节点的标识ID记录在接收到的事务包中;然后将修改后的PCIe事务包传送到PCIe多根交换机中,转向步骤152; 
步骤152、PCIe多根交换机解析下行事务包的路由方式;PCIe多根交换机对下行事务包的路由方式进行解析,如果是基于地址路由的事务包,转向步骤153; 
步骤153、PCIe多根交换机对基于地址路由的下行事务包的目标访存地址进行判定;如果事务包中目标访存地址位于本地的地址窗口之内,则转向步骤154;如果事务包中目标访存地址位于交换机从属的地址窗口之内,则转向步骤156;否则,转向步骤155; 
步骤154、PCIe多根交换机本地处理响应该事务包,然后转向步骤151; 
步骤155、向事务包指示的根节点返回一个不支持的事务包,然后转向步骤151; 
步骤156、PCIe多根交换机确定转发事务包的出端口;PCIe多根交换机将要转发事务包中的目标访存地址与其从属的下游端口的地址窗口进行匹配,确定事务包的出端口,并将事务包传送至匹配出端口对应的PCIe下游端口;然后转向步骤157; 
步骤157、PCIe下游端口解析接收到的事务包;PCIe下游端口对接收到的事务包进行解析,提取事务包中的根节点标识ID和目标访存地址;操作完成后转向步骤158; 
步骤158、PCIe下游端口对事务包的发起根节点进行判定;如果事务包中附加的根节点标识ID指示是从属根节点,则将该事务包传送给直接I/O虚拟化接口设备,转向步骤159;否则,如果指示是主控制根节点,将该事务包传送给PCIe控制器,转向步骤1511; 
步骤159、直接I/O虚拟化接口设备对事务包进行地址映射;直接I/O虚拟化接口设备根据事务包中的从属根节点标识ID和目标访存地址,查询其在主控制根节点PCIe域中的访存地址;如果存在匹配的访存地址,转向步骤1510;如果不存在;则转向步骤155; 
步骤1510、直接I/O虚拟化接口设备改写事务包;直接I/O虚拟化接口设备将事务包中的访存地址替换为步骤159中获得的匹配访存地址,然后转向步骤1511; 
步骤1511、PCIe控制器传将事务包送给其端口连接的物理I/O设备,完成后转向步骤151。 
所述的多根I/O虚拟化共享方法,所述基于ID路由的上行事务的处理方法,包括: 
步骤161、PCIe下游端口接收从I/O设备发来的PCIe事务包,并将事务包传送给直接I/O虚拟化接口设备,转向步骤162; 
步骤162、直接I/O虚拟化接口设备提取上行事务包中的发起设备功能ID;基于ID路由的上行事务包为完成包,其发起设备功能ID为事务包中的完成者ID;操作完成后转向步骤163; 
步骤163、直接I/O虚拟化接口设备进行设备功能ID映射;利用步骤162提取的发起设备功能ID查询其所属的根节点标识ID及其在所属根节点PCIe域中的ID号;操作完成后转向步骤164; 
步骤164、直接I/O虚拟化接口设备对事务包的目标根节点进行判定;如果查询到的匹配目标根节点指示是主控制根节点,转向步骤165;否则,如果匹配的目标根节点指示是从属根节点,转向步骤166; 
步骤165、直接I/O虚拟化接口设备修改事务包,将主控制根节点标识ID附加在事务包中,然后转向步骤167; 
步骤166、直接I/O虚拟化接口设备修改事务包,将步骤163获得的从属根节点标识ID附加在事务包中,并将事务包中的发起设备功能ID替换为步骤163中获得的设备功能ID号;转向步骤167; 
步骤167、PCIe下游端口将修改后的事务包传送给PCIe多根交换机;转向步骤168; 
步骤168、PCIe多根交换机将上行事务包交换至事务包中的根节点标识ID对应的PCIe上游端口;转向步骤169; 
步骤169、PCIe上游端口删除接收到的事务包中的根节点标识ID,将事务包传送给其连接的根节点;转向步骤161。 
所述的多根I/O虚拟化共享方法,所述基于地址路由的上行事务的处理方 法,包括: 
步骤171、PCIe下游端口接收从I/O设备发来的PCIe事务包,并将事务包传送给直接I/O虚拟化接口设备,转向步骤172; 
步骤172、直接I/O虚拟化接口设备提取上行事务包中的发起设备功能ID;基于地址路由的上行事务为请求包,发起设备功能ID为事务包中的请求者ID;操作完成后转向步骤173; 
步骤173、直接I/O虚拟化接口设备进行设备功能ID映射;利用步骤172提取的发起设备功能ID查询其所属的根节点标识ID及其在所属根节点PCIe域中的ID号。操作完成后转向步骤174; 
步骤174、直接I/O虚拟化接口设备对事务包的目标根节点进行判定;如果步骤173中查询到的匹配目标根节点指示是主控制根节点,转向步骤175;否则,如果匹配的目标根节点指示是从属根节点,则转向步骤176; 
步骤175、直接I/O虚拟化接口设备修改事务包,将主控制根节点标识ID记录在事务包中,然后转向步骤177; 
步骤176、直接I/O虚拟化接口设备修改事务包,将步骤173获得的从属根节点标识ID记录在事务包中,并将事务包中的发起设备功能ID替换为步骤173中获得的设备功能号ID号;转向步骤177; 
步骤177、PCIe下游端口将修改后的事务包传送给PCIe多根交换机;转向步骤178; 
步骤178、PCIe多根交换机将上行事务包交换至事务包中的根节点标识ID对应的PCIe上游端口;转向步骤179; 
步骤179、PCIe上游端口删除接收到的事务包中的根节点标识ID,将事务包传送给其连接的根节点;转向步骤171。 
本发明的有益效果为:通过本发明系统实现非原生多根虚拟化I/O设备资源在多个根节点之间的动态共享,为各根节点提供了接近本机的I/O性能,提高了I/O设备的利用效率,降低了系统总体成本,并为系统提供了良好的可扩展性和易维护性。 
附图说明
图1是本发明多根I/O虚拟化共享系统的结构示意图; 
图2是本发明使用直接I/O虚拟化接口设备实现I/O设备被多个根节点共享的方法示意图; 
图3是本发明使用一个主控制根节点管理和控制多根I/O虚拟化共享系统的配置方法示意图; 
图4是本发明主控制根节点PCIe域初始化配置流程示意图; 
图5是本发明从属根节点PCIe域初始化配置流程示意图; 
图6是本发明多个根节点共享I/O设备的示意图; 
图7是本发明设备功能在主控制根节点和从属根节点PCIe域之间的ID映射示意图; 
图8是本发明设备功能在主控制根节点和从属根节点PCIe域之间的地址映射示意图; 
图9是本发明基于ID路由的下行事务的处理方法流程图; 
图10是本发明基于地址路由的下行事务的处理方法流程图; 
图11是本发明基于ID路由的上行事务的处理方法流程图; 
图12是本发明基于地址路由的上行事务的处理方法流程图。 
具体实施方式
下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述。 
为了实现I/O设备被多个根节点直接共享,本发明提供了一种多根I/O虚拟化共享系统和方法。所述多根I/O虚拟化共享方法,包括:使用直接I/O虚拟化接口设备实现I/O设备被多个根节点共享,使用主控制根节点管理和控制多根I/O虚拟化共享系统,使用多根I/O虚拟化共享控制器实现多个根节点和I/O设备之间的逻辑连接。所述多根I/O虚拟化共享系统包括三个部分:根节点子系统、I/O设备子系统和多根I/O虚拟化共享控制器。多根I/O虚拟化共享控制器通过PCIe接口协议将根节点子系统和I/O设备子系统耦合在一起,实现一个I/O设备资源被多个根节点直接共享。 
图1描绘了多根I/O虚拟化共享系统的结构示意图。多根I/O虚拟化共享系统由根节点子系统、I/O设备子系统和多根I/O虚拟化共享控制器三个部分构成。多根I/O虚拟化共享控制器通过PCIe接口协议将根节点子系统和I/O设备子系统耦合在一起,实现一个I/O设备资源被多个根节点直接共享。 
多根I/O虚拟化共享系统中的根节点子系统包含多个根节点,每个根节点是一个单根PCIe环境,由根联合体(Root Complex,RC)及其连接的CPU组(CPU set)和内存(Mem)组成。其中,运行有PCIe管理相关软件的根节点称之为主控制根节点(Master Root Nod,mRN),主控制根节点只有一个(下文使用mRN0标识),管理和分配系统中的所有PCIe设备;其他根节点称为从属根节点(SlaveRoot Node,sRN),从属根节点可以有多个(下文使用sRN1,sRN2,…,sRNn标识),并根据主控制根节点的分配,拥有一定I/O资源的使用权。根节点上可以运行多个同构或者异构虚拟机(Virtual Machine,VM),虚拟机管理程序(Virtual Machine Manager,VMM)负责调度主控制根节点分配的I/O资源为各VM所用。 
多根I/O虚拟化共享系统中的I/O设备子系统包含多个I/O设备,各I/O设备具备同时为多个虚拟机提供服务的能力,可以是包含一个物理功能(Physical Function,PF)及其对应的多个虚拟功能(Virtual Function,VF)的SR-IOV设备或者包含多个PF及其对应的多个VF的SR-IOV设备,也可以是多功能I/O设备等。I/O设备子系统是属于主控制根节点这一单根PCIe环境。 
多根I/O虚拟化共享系统中的多根I/O虚拟化共享控制器由若干个PCIe上游端口(PCIe Upstream Port)、PCIe多根交换机和若干个PCIe下游端口(PCIe Downstream Port)三个部分组成。多根I/O虚拟化共享控制器通过PCIe上游端口连接了多个根节点,它处在一个多根PCIe环境中。所谓多根PCIe环境,是指包含多个PCIe域的环境。相应的,一个根节点PCIe系统是单根PCIe域环境。 
多根I/O虚拟化共享控制器中的PCIe上游端口,包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器,它负责与根节点子系统的互连,以及事务包在PCIe单根环境和PCIe多根环境之间的转换。当接收到从根节点发来的下行事务包时,它通过向事务包附加上其所属根节点标识ID,从而将PCIe单根环境中的事务包转换为PCIe多根环境中的事务包。当向根节点发送上行事务包时,他通过从事务包中删除附加的根节点标识ID,还原标准的单根PCIe事务包,从而将PCIe多根环境中的事务包转换为PCIe单根环境中的事务包。 
多根I/O虚拟化共享控制器中的PCIe多根交换机,实质是通过多个PCI桥建立的N+M个端口的交换机。它包含根节点数目对应的N个上游PCI桥, 以及根节点数目和I/O设备数目对应的N*M个虚拟的下游PCI桥。它为每个根节点建立一个1+M端口的虚拟PCIe交换机,实现各根节点与M个I/O设备的逻辑连接。 
多根I/O虚拟化共享控制器中的PCIe下游端口,包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器和直接I/O虚拟化接口设备两个功能部分。它负责与I/O设备子系统的互连,以及事务包在PCIe单根环境和PCIe多根环境之间的转换。当接收到I/O设备发来的上行事务包时,它通过向事务包附加上其所属根节点标识ID,从而将PCIe单根环境中的事务包转换为PCIe多根环境中的事务包。当向I/O设备发送下行事务包时,他通过从事务包中删除附加的根节点标识ID,还原标准的单根PCIe事务包,从而将PCIe多根环境中的事务包转换为PCIe单根环境中的事务包。 
PCIe下游端口中的直接I/O虚拟化接口设备,它是对应于PCIe下游端口连接的I/O设备的逻辑镜像,它通过建立一系列逻辑虚拟功能镜像(LVF:Logic Virtual Function),替代PCIe下游端口连接的I/O设备中的各功能,作为从属根节点的设备占位符。其中,每个LVF是对应于其所在的PCIe下游端口连接的I/O设备中功能的逻辑镜像,它既可以对应于SR-IOV设备中的一个虚功能(VF:Virtual Function),也可以对应于多功能设备中的一个物理功能PF。 
PCIe设备功能在系统中的标识通常都用一个由总线号(BUS)/设备号(Device)/功能号(Function)组成的ID号(B/D/F)来指示。系统上电后,系统初始化软件首先尝试枚举发现系统中的所有设备,并对搜索到的设备进行初始化配置。所述的初始化配置包括:为设备功能分配相应的ID号,将其挂载在系统PCIe树上;以及根据设备功能的需求为其分配内存地址范围,将其映射到系统的内存空间上(Memory Mapped I/O)等。设备初始化完成后,系统软件和驱动程序等上层软件可以通过ID号或者内存地址路由定向到设备,使用设备进行相应的操作。在多根IO虚拟化共享系统中,每个根节点在系统启动后都将尝试枚举系统中的设备,并为其配置各自PCIe域的ID号和内存映射空间。这将引起系统竞争,最终导致系统不能正常工作。为了保证系统正常工作,实现I/O资源多根共享,本系统使用直接I/O虚拟化接口设备实现I/O设备被多个根节点共享,并在根节点子系统中选择一个根节点作为主控制根节点,对系统中的所有设备进行集中控制和管理。 
图2描述了使用直接I/O虚拟化接口设备实现I/O设备被多个根节点共享的方法,包括以下流程: 
a)直接I/O虚拟化接口设备模块通过获取I/O设备的配置空间信息,为I/O设备中每个功能建立相应的逻辑虚拟功能镜像LVF。 
b)直接I/O虚拟化接口设备模块分析主控制根节点发出的设备功能分配指令,建立设备功能与根节点的从属映射关系; 
c)在从属根节点进行PCIe设备扫描时,直接I/O虚拟化接口设备模块根据记录的设备功能和根节点的从属映射关系,截取和模拟响应从属根节点对所分配的设备功能的枚举发现和初始化配置; 
d)在设备功能正常操作使用过程中,直接I/O虚拟化接口设备模块负责将从属根节点对所分配的设备功能的访问硬件重映射到物理I/0设备中相应功能,实现从属根节点对I/O设备的直接访问。 
图3描述了使用一个主控制根节点管理和控制多根I/O虚拟化共享系统的配置方法,包括以下流程: 
a)根节点子系统上电启动,各根节点独立进行各自PCIe域中PCIe设备发现和初始化配置。设备初始化期间,各根节点的系统配置软件按深度优先原则枚举系统设备,以确定功能是否存在以及其资源需求。如果功能存在,则分配该设备功能在系统中的ID号,同时根据其资源需求为其分配相应的IO地址空间、内存地址空间和中断等资源。特别地,在设备功能分配前,只有主控制根节点能够发现和初始化物理I/O设备。 
b)主控制根节点执行管理用户资源分配策略进行设备功能分配。主控制根节点根据管理用户制定的资源分配策略,将各I/O设备的硬件资源以设备功能为单位分配给各从属根节点,为每个从属根节点建立动态的PCIe拓扑结构。 
c)引导各从属根节点重新发现和初始化PCIe设备。 
d)根节点子系统加载I/O设备驱动,以备系统进行操作使用。在系统正常运行过程中,如果管理用户指示修改设备分配,转向步骤b) 
在上述的多根I/O虚拟化共享系统配置流程中,主控制根节点PCIe域初始化配置流程如图4所示,包括以下步骤: 
a)主控制根节点上电启动。 
b)读写PCIe多根交换机中主控制根节点对应的上游PCI桥配置信息。 
c)读写PCIe多根交换机中下游PCI桥配置信息。如果PCIe多根交换机中的所有下游PCI桥配置信息都遍历结束,转向步骤e);否则,转向步骤d)。 
d)读写相应下游PCI桥连接的I/O设备配置信息,然后转向步骤c)。 
e)执行用户资源分配策略向各从属根基节点分配设备功能。 
f)引导各从属根节点重新发现和初始化PCIe设备。 
g)加载I/O设备驱动以备系统操作使用。 
在上述的多根I/O虚拟化共享系统配置流程中,从属根节点PCIe域初始化配置流程如图5所示,包括以下步骤: 
a)从属根节点上电启动。 
b)读写PCIe多根交换机中该从属根节点对应的上游PCI桥配置信息。 
c)读写PCIe多根交换机中下游PCI桥配置信息。如果PCIe多根交换机中的所有下游PCI桥配置信息都遍历结束,转向步骤e);否则,转向步骤d)。 
d)读写相应下游PCI桥连接的I/O设备配置信息(此时,从属根节点对应的虚拟交换机没有连接任何I/O设备),然后转向步骤c)。 
e)从属根节点上电启动初始化结束,如果接收到PCIe重扫描事件,转向步骤f)。 
f)重新扫描和初始化PCIe设备(指分配得到的设备功能对应的LVF)。 
g)加载I/O设备驱动以备系统操作使用。 
图6描述了多个根节点共享I/O设备的示意图。根据上述多根I/O虚拟共享系统的配置流程,主控制根节点优先发现I/O设备,而从属根节点在上电启动时看不到I/O设备子系统中的设备。在主控制根节点PCIe域设备发现和初始化阶段,主控制根节点系统首先发现虚拟PCIe交换机的上游PCI桥,并为其分配ID(1/0/0)及相应的内存映射空间;接着按照深度优先原则搜索ID(2/0/0),发现虚拟PCIe交换机的下游PCI桥,为其分配相应的内存映射空间;然后深度搜索ID(3/0/0),发现SR-IOV设备中的PF及VF数目,并根据SR-IOV需求为其分配(3/0/0)~(3/0/n)范围的ID号及相应的内存空间;当发现 端点设备后,系统初始化软件返回搜索ID(2/0/1),以此类推,直到将系统中的所有设备枚举和初始化完成。当主控制根节点完成系统初始化配置后,就根据用户资源策略的配置,为各从属根节点分配I/O功能,如将SR-IOV设备的VF1、VF2以及多功能设备中的F0分配给从属根节点sRN1,将SR-IOV设备的VFn以及多功能设备中的Fn分配给从属根节点sRNn等。 
主控制根节点完成I/O设备资源初始化分配后,分配给从属根节点sRN的I/O设备功能按顺序挂载到sRN对应的虚拟PCIe交换机下。如图6所示,SR-IOV中的VF1和VF2对应的LVF组成一个设备以及VFn对应的LVF分别挂载到sRN1和sRNn对应的虚拟PCIe交换机中次级总线为3的虚拟桥下,多功能设备中的F0和Fn对应的LVF分别挂载到sRN1和sRNn对应的虚拟PCIe交换机中次级总线为m的虚拟桥下。当从属根节点被引导进行PCIe设备重扫描时,PCIe下游端口中的直接I/O虚拟化接口设备控制了从属根节点能且仅能枚举发现到被分配的设备功能。如图6所示,当从属根节点sRN1枚举ID为(3/0/0)和(3/0/1)时,SR-IOV设备对应的直接I/O虚拟化接口设备将该访问重映射定向传递给SR-IOV设备的VF1和VF2;当从属根节点sRN1枚举ID为(3/0/2)~(3/0/31)时,直接I/O虚拟化接口设备将拒绝该请求,指示返回不支持的访问请求。同理,sRN1只能发现设备VF1、VF2和F0对应的LVF,并为其分配在sRN1根节点PCIe域中的ID号、IO地址空间、内存地址空间和中断等资源;sRNm只能发现设备VFn和Fn对应的LVF,并为其分配在sRNm根节点PCIe域中的ID号、IO地址空间、内存地址空间和中断等资源。 
图7描述了设备功能在主控制根节点和从属根节点PCIe域之间的ID映射示意图。SR-IOV设备和多功能设备在主控制根节点mRN0PCIe域分别被分配得到mRN0(3/0/0)~mRN0(3/0/n)以及mRN0(m/0/0)~mRN0(m/0/n)之间的ID号,每个ID号指示了设备中的一个功能。主控制根节点使用ID号通过ID路由即可访问到相应的设备功能。当SR-IOV设备的VF1、VF2以及多功能设备的F0分配给从属根节点sRN1使用时,各设备功能被分配获得从属根节点sRN1PCIe域的ID号sRN1(3/0/0)、sRN1(3/0/1)以及sRN1(m/0/0)。相应地,SR-IOV设备的VFn和多功能设备的Fn分被获得sRNn PCIe域的ID号sRNn(3/0/0)和sRNn(m/0/0)。SR-IOV设备和多功能设备对应的直接I/O虚拟化接口设备,记录各自相应的设备功能在主控制根节点PCIe域和从属根节点PCIe 域ID号的映射。当从属根节点使用本地PCIe域的ID号向设备功能发起访问请求时,直接I/O虚拟化接口设备将请求中的ID号转换成主控制根节点PCIe域的ID号后,再传给对应的物理设备。例如,当从属根节点sRN1使用本地PCIe域的ID号sRN1(3/0/0)对SR-IOV设备中的VF0发起访问时,SR-IOV设备对应的直接I/O虚拟化接口设备将该访问请求中的ID号sRN1(3/0/0)转换成主控制根节点PCIe域中对应的mRN0(3/0/1),传递给SR-IOV设备即可定向到对应的VF0。 
图8描述了设备功能在主控制根节点和从属根节点PCIe域之间的地址映射示意图。SR-IOV设备和多功能设备被分别映射到主控制根节点mRN0PCIe域中mMemAddr_PF0~mMemAddr_VFn以及mMemAddr_F0~mMemAddr_Fn指示的内存区域,每块内存空间指示了设备中一个功能的映射位置。主控制根节点使用设备功能内存映射的基地址加上一个地址偏移,通过地址路由即可访问到相应设备功能的指定寄存器资源。当SR-IOV设备的VF1、VF2以及多功能设备的F0分配给从属根节点sRN1使用时,各设备功能被映射到所属的从属根节点sRN1PCIe域中s1MemAddr_VF1、s1MemAddr_VF2和s1MemAddr_F0指示的内存区域。相应地,SR-IOV设备的VFn和多功能设备的Fn分配给从属根节点sRNn使用时,分别被映射到sRNn PCIe域中snMemAddr_VFn和snMemAddr_Fn指示的内存区域。SR-IOV设备和多功能设备对应的直接I/O虚拟化接口设备,记录各自相应的设备功能在主控制根节点PCIe域和从属根节点PCIe域内存映射空间的映射。当从属根节点使用本地PCIe域的内存地址向设备功能发起访问请求时,直接I/O虚拟化接口设备将请求中的内存地址转换成主控制根节点PCIe域的内存地址后,再传给对应的物理设备。例如,当从属根节点sRN1使用本地PCIe域的内存地址s1MemAddr_VF1对SR-IOV设备中的VF1发起访问时,SR-IOV设备对应的直接I/O虚拟化接口设备将该访问请求中的内存地址s1MemAddr_VF1转换成主控制根节点PCIe域中对应的mMemAddr_VF1,传递给SR-IOV设备即可定向到对应的VF1。 
为实现本发明目的,多根I/O虚拟化共享控制器为PCIe下行事务和上行提供了相应的处理方法。其中,下行事务处理方法,是指对根节点发起的PCIe事务包的处理方法,它根据事务包使用路由方式又分为基于ID路由的下行事 务的处理方法和基于地址路由下行事务的处理方法;上行事务处理方法,是指对I/O设备或者多根I/O虚拟化共享控制器发起的PCIe事务包的处理方法,它根据事务包使用路由方式又分为基于ID路由的上行事务的处理方法和基于地址路由的上行事务的处理方法。 
图9描述了对基于ID路由的下行事务的处理方法,包括以下步骤: 
a)PCIe上游端口模块接收从根节点发来的PCIe事务包,并将该端口连接的根节点的标识ID记录在接收到的事务包中。然后将修改后的PCIe事务包传送到PCIe多根交换机中,转向步骤b)。 
b)PCIe多根交换机模块解析下行事务包的路由方式。PCIe多根交换机对下行事务包的路由方式进行解析,如果是基于ID路由的事务包,转向步骤c)。 
c)PCIe多根交换机模块对基于ID路由的下行事务包中的ID号进行判定。如果事务包中ID位于本地的总线范围之内,则转向步骤d);如果事务包中ID位于交换机从属的总线范围之内,则转向步骤f);否则,转向步骤e)。 
d)PCIe多根交换机模块本地处理响应事务包,然后转向步骤a)。 
e)向事务包指示的根节点返回一个不支持的事务包,然后转向步骤a)。 
f)PCIe多根交换机模块确定转发事务包的出端口。PCIe多根交换机将要转发事务包中的ID与其从属的下游端口的总线范围进行匹配,确定事务包的出端口,并将事务包传送至匹配出端口对应的PCIe下游端口。然后转向步骤g)。 
g)PCIe下游端口模块解析接收到的事务包。PCIe下游端口对接收到的事务包进行解析,提取事务包中的根节点标识ID和目标设备功能ID。所述目标功能ID,对于请求事务包,是指事务包中总线号/设备号/功能号域组成的数据段;对于完成包,是指事务包中的请求者ID。操作完成后转向h)。 
h)PCIe下游端口模块对事务包的发起根节点进行判定。如果事务包中附加的根节点标识ID指示是从属根节点,则将该事务包传送给直接I/O虚拟化接口设备,然后转向步骤i);否则,如果指示是主控制根节点,将该事务包传送给PCIe控制器,则转向步骤m)。 
i)直接I/O虚拟化接口设备模块对事务包进行功能映射。直接I/O虚拟化接口设备根据事务包中的从属根节点标识ID和目标设备功能ID,查询其映射的物理设备功能ID。如果存在匹配的物理设备功能ID,转向步骤j);如果不存在;则转向步骤e); 
j)直接I/O虚拟化接口设备模块改写事务包。直接I/O虚拟化接口设备将事务包中目标设备功能ID替换为步骤i)中获得的匹配物理设备功能ID,然后转向步骤k)。 
k)直接I/O虚拟化接口设备模块对事务包的类型进行判定。如果是配置包,则转向步骤l);否则,转向步骤m); 
l)直接I/O虚拟化接口设备模块对事务包进行处理响应,完成后转向步骤a)。 
m)PCIe控制器模块传将事务包送给其端口连接的物理I/O设备,完成后转向步骤a)。 
图10描述了对基于地址路由的下行事务的处理方法,包括以下步骤: 
a)PCIe上游端口模块接收从根节点发来的PCIe事务包,并将该端口连接的根节点的标识ID记录在接收到的事务包中。然后将修改后的PCIe事务包传送到PCIe多根交换机中,转向步骤b)。 
b)PCIe多根交换机模块解析下行事务包的路由方式。PCIe多根交换机对下行事务包的路由方式进行解析,如果是基于地址路由的事务包,转向步骤c)。 
c)PCIe多根交换机模块对基于地址路由的下行事务包的目标访存地址进行判定。如果事务包中目标访存地址位于本地的地址窗口之内,则转向步骤d);如果事务包中目标访存地址位于交换机从属的地址窗口之内,则转向步骤f);否则,转向步骤e)。 
d)PCIe多根交换机模块本地处理响应事务包,然后转向步骤a)。 
e)向事务包指示的根节点返回一个不支持的事务包,然后转向步骤a)。 
f)PCIe多根交换机模块确定转发事务包的出端口。PCIe多根交换机将要转发事务包中的目标访存地址与其从属的下游端口的地址窗口进行匹配,确定事务包的出端口,并将事务包传送至匹配出端口对应的PCIe下游端口。然后转向步骤g)。 
g)PCIe下游端口模块解析接收到的事务包。PCIe下游端口对接收到的事务包进行解析,提取事务包中的根节点标识ID和目标访存地址。操作完成后转向h)。 
h)PCIe下游端口模块对事务包的发起根节点进行判定。如果事务包中附加的根节点标识ID指示是从属根节点,则将该事务包传送给直接I/O虚拟化接口设备,然后转向步骤i);否则,如果指示是主控制根节点,将该事务包传送给PCIe控制器,则转向步骤k)。 
i)直接I/O虚拟化接口设备模块对事务包进行地址映射。直接I/O虚拟化接口设备根据事务包中的从属根节点标识ID和目标访存地址,查询其在主控制根节点PCIe域中的访存地址。如果存在匹配的访存地址,转向步骤j);如果不存在;则转向步骤e); 
j)直接I/O虚拟化接口设备模块改写事务包。直接I/O虚拟化接口设备将事务包中的访存地址替换为步骤i)中获得的匹配访存地址,然后转向步骤k)。 
k)PCIe控制器模块传将事务包送给其端口连接的物理I/O设备,完成后转向步骤a)。 
图11描述了对基于ID路由的上行事务的处理方法,包括以下步骤: 
a)PCIe下游端口模块接收从I/O设备发来的PCIe事务包,并将事务包传送给直接I/O虚拟化接口设备,转向步骤b)。 
b)直接I/O虚拟化接口设备模块提取上行事务包中的发起设备功能ID。基于ID路由的上行事务包为完成包,其发起设备功能ID为完成者ID。操作完成后转向步骤b)。 
c)直接I/O虚拟化接口设备模块进行设备功能ID映射。利用步骤b)提取的发起设备功能ID查询其所属的根节点标识ID及其在所属根节点PCIe域中的ID号。操作完成后转向步骤d)。 
d)直接I/O虚拟化接口设备模块对事务包的目标根节点进行判定。如果查询到的匹配目标根节点指示是主控制根节点,转向步骤e);否则,如果匹配的目标根节点指示是从属根节点,则转向步骤f)。 
e)直接I/O虚拟化接口设备模块修改事务包,将主控制根节点标识ID附加在事务包中,然后转向步骤g)。 
f)直接I/O虚拟化接口设备模块修改事务包,将步骤c)获得的从属根节点标识ID附加在事务包中,并将事务包中的发起设备功能ID替换为步骤c)中获得的设备功能ID号。转向步骤g)。 
g)PCIe下游端口模块将修改后的事务包传送给PCIe多根交换机。转向步骤h)。 
h)PCIe多根交换机模块将上行事务包交换至事务包中的根节点标识ID对应的PCIe上游端口模块。转向步骤i)。 
i)PCIe上游端口模块删除接收到的事务包中的根节点标识ID,将事务包传送给其连接的根节点。转向步骤a)。 
图12描述了对基于地址路由的上行事务的处理方法,包括以下步骤: 
a)PCIe下游端口模块接收从I/O设备发来的PCIe事务包,并将事务包传送给直接I/O虚拟化接口设备,转向步骤b)。 
b)直接I/O虚拟化接口设备模块提取上行事务包中的发起设备功能ID。基于地址路由的上行事务为请求包,发起设备功能ID为事务包中的请求者ID。操作完成后转向步骤b)。 
c)直接I/O虚拟化接口设备模块进行设备功能ID映射。利用步骤b)提取的发起设备功能ID查询其所属的根节点标识ID及其在所属根节点PCIe域中的ID号。操作完成后转向步骤d)。 
d)直接I/O虚拟化接口设备模块对事务包的目标根节点进行判定。如果步骤c)中查询到的匹配目标根节点指示是主控制根节点,转向步骤e);否则,如果匹配的目标根节点指示是从属根节点,则转向步骤f)。 
e)直接I/O虚拟化接口设备模块修改事务包,将主控制根节点标识ID记录在事务包中,然后转向步骤g)。 
f)直接I/O虚拟化接口设备模块修改事务包,将步骤c)获得的从属根节点标识ID记录在事务包中,并将事务包中的发起设备功能ID替换为步骤c)中获得的设备功能号ID号。转向步骤g)。 
g)PCIe下游端口模块将修改后的事务包传送给PCIe多根交换机。转向步骤h)。 
h)PCIe多根交换机模块将上行事务包交换至事务包中的根节点标识 ID对应的PCIe上游端口。转向步骤i)。 
i)PCIe上游端口模块删除接收到的事务包中的根节点标识ID,将事务包传送给其连接的根节点。转向步骤a)。 
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。 

Claims (17)

1.一种多根I/O虚拟化共享系统,其特征在于,包括:
根节点子系统,所述根节点子系统包含N个根节点,每个根节点是一个单根PCIe环境,由根联合体及其连接的CPU和内存组成,根节点运行多个虚拟机;
I/O设备子系统,所述I/O设备子系统包含M个I/O设备,各I/O设备具备同时为所述多个虚拟机提供服务的能力,I/O设备子系统是属于主控制根节点的单根PCIe环境;
多根I/O虚拟化共享控制器,所述多根I/O虚拟化共享控制器由PCIe上游端口、PCIe多根交换机和PCIe下游端口组成,所述多根I/O虚拟化共享控制器通过PCIe接口协议将根节点子系统和I/O设备子系统耦合,实现I/O设备资源被多个根节点直接共享,所述多根I/O虚拟化共享控制是涉及多个根节点的多根PCIe环境。
2.如权利要求1所述的多根I/O虚拟化共享系统,其特征在于,所述根节点子系统包括:
主控制根节点,所述主控制根节点对系统中的所有I/O设备资源具有绝对的控制权,它管理和分配系统中的PCIe设备,根节点子系统只有一个主控制根节点;
从属根节点,所述从属根节点对系统中的I/O设备资源拥有一定的使用权,根节点子系统中除了主控制根节点之外的其他根节点均为从属根节点,它们共享系统中的I/O设备。
3.如权利要求1所述的多根I/O虚拟化共享系统,其特征在于,所述多根I/O虚拟化共享控制器包括:
PCIe上游端口、用于包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器,并负责与根节点子系统的互连;并负责单根PCIe环境和多根PCIe环境之间的事务包转换;
PCIe多根交换机、用于包含端口数为N+M的PCIe交换机,实现N个根节点与M个I/O设备之间的逻辑连接,每个根节点都有一个对应的虚拟PCIe交换机,其中N为根节点的数目;
PCIe下游端口、用于包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器和直接I/O虚拟化接口设备,并负责与I/O设备子系统的互连;并负责单根PCIe环境和多根PCIe环境之间的事务包转换。
4.如权利要求3所述的多根I/O虚拟化共享系统,其特征在于,所述单根PCIe环境和多根PCIe环境之间的事务包转换包括:
单根PCIe环境到多根PCIe环境的事务包转换,是指事务包从单根PCIe环境进入多根PCIe环境时,向事务包附加上其所属根节点标识ID。
多根PCIe环境到PCIe单根环境的事务包转换,是指事务包从多根PCIe环境进入单根PCIe环境时,从事务包中删除根节点标识ID,还原标准的单根PCIe事务包。
5.如权利要求3所述的多根I/O虚拟化共享系统,其特征在于,包括:
所述虚拟PCIe交换机实现一个根节点与M个I/O设备的数据交换,拥有M+1个端口,其中M为I/O设备的数目,每个端口都有包含一个PCI桥。
6.如权利要求3所述的多根I/O虚拟化共享系统,其特征在于,所述PCIe下游端口包括:
所述直接I/O虚拟化接口设备、是对应于PCIe下游端口连接的I/O设备的逻辑镜像,所述直接I/O虚拟化接口设备通过建立逻辑虚拟功能镜像,替代PCIe下游端口连接的I/O设备中各功能,作为从属根节点的设备占位符,实现I/O设备被多个根节点共享。
7.如权利要求6所述的多根I/O虚拟化共享系统,其特征在于,所述直接I/O虚拟化接口设备包括:
所述逻辑虚拟功能镜像,是对应于直接I/O虚拟化接口设备所在的PCIe下游端口连接的I/O设备中功能的逻辑镜像,所述逻辑虚拟功能镜像替代I/O设备功能接收和响应从属根节点的枚举发现和初始化配置。
8.一种多根I/O虚拟化共享方法,其特征在于,包括:
步骤1,使用直接I/O虚拟化接口设备实现I/O设备被多个根节点共享;
步骤2,使用主控制根节点管理和控制多根I/O虚拟化共享系统;
步骤3,多根I/O虚拟化共享控制器针对PCIe下行事务和上行事务提供了相应的转发处理方法,实现了多个根节点和I/O设备之间的逻辑连接。
9.如权利要求8所述的多根I/O虚拟化共享方法,其特征在于,所述步骤1还包括:
步骤91,直接I/O虚拟化接口设备模块通过获取I/O设备的配置空间信息,为I/O设备中每个功能建立相应的逻辑虚拟功能镜像;
步骤92,直接I/O虚拟化接口设备模块分析主控制根节点发出的设备功能分配指令,建立设备功能与根节点的从属映射关系;
步骤93,在从属根节点进行PCIe设备扫描时,直接I/O虚拟化接口设备模块根据记录的设备功能和根节点的从属映射关系,截取和模拟响应从属根节点对所分配的设备功能的枚举发现和初始化配置;
步骤94,在设备功能正常操作使用过程中,直接I/O虚拟化接口设备模块负责将从属根节点对所分配的设备功能的访问硬件重映射到物理I/O设备中相应功能,实现从属根节点对I/O设备的直接访问。
10.如权利要求8所述的多根I/O虚拟化共享方法,其特征在于,所述步骤2包括:
步骤101,根节点子系统上电启动,各根节点独立进行各自PCIe域中PCIe设备发现和初始化配置;在设备功能分配前,只有主控制根节点能够发现和初始化物理I/O设备;
步骤102,主控制根节点执行管理用户资源分配策略进行设备功能分配;主控制根节点根据管理用户制定的资源分配策略,将I/O设备的硬件资源以设备功能为单位分配给各从属根节点,为每个从属根节点建立动态的PCIe拓扑结构;
步骤103,引导各从属根节点重新发现和初始化PCIe设备;
步骤104,根节点子系统加载I/O设备驱动,以备系统进行操作使用;在系统正常运行过程中,如果管理用户指示修改设备分配指令,转向步骤102。
11.如权利要求10所述的多根I/O虚拟化共享方法,其特征在于,所述步骤101中主控制根节点PCIe域初始化配置包括:
步骤111,主控制根节点上电启动;
步骤112,读写PCIe多根交换机中主控制根节点对应的上游PCI桥配置信息;
步骤113,读写PCIe多根交换机中下游PCI桥配置信息;如果PCIe多根交换机中的所有下游PCI桥配置信息都遍历结束,转向步骤115;否则,转向步骤114;
步骤114,读写相应下游PCI桥连接的I/O设备配置信息,然后转向步骤113;
步骤115,执行用户资源分配策略向各从属根基节点分配设备功能;
步骤116,引导各从属根节点重新发现和初始化PCIe设备;
步骤117,加载I/O设备驱动以备系统操作使用。
12.如权利要求10所述的多根I/O虚拟化共享方法,其特征在于,所述步骤101中从属根节点PCIe域初始化配置流程还包括:
步骤121,从属根节点上电启动;
步骤122,读写PCIe多根交换机中该从属根节点对应的上游PCI桥配置信息;
步骤123,读写PCIe多根交换机中下游PCI桥配置信息。如果PCIe多根交换机中的所有下游PCI桥配置信息都遍历结束,转向步骤125;否则,转向步骤124;
步骤124,读写相应下游PCI桥连接的I/O设备配置信息;此时,从属根节点对应的虚拟交换机没有连接任何I/O设备,然后转向步骤123;
步骤125,从属根节点上电启动初始化结束,如果接收到PCIe重扫描事件,转向步骤126;
步骤126,重新扫描和初始化PCIe设备,其为分配得到的设备功能对应的逻辑虚拟功能镜像;
步骤127,加载I/O设备驱动以备系统操作使用。
13.如权利要求8所述的多根I/O虚拟化共享方法,其特征在于,所述步骤3包括:
所述下行事务处理方法,为对根节点发起的PCIe事务包的处理方法,包括基于ID路由的下行事务的处理方法和基于地址路由的下行事务的处理方法;
所述上行事务处理方法,为对I/O设备或者多根I/O虚拟化共享控制器发起的PCIe事务包的处理方法,包括基于ID路由的上行事务的处理方法和基于地址路由的上行事务的处理方法。
14.如权利要求13所述的多根I/O虚拟化共享方法,其特征在于,所述基于ID路由的下行事务的处理方法包括:
步骤141、PCIe上游端口接收从根节点发来的PCIe事务包,并将该端口连接的根节点的标识ID记录在接收到的事务包中,然后将修改后的PCIe事务包传送到PCIe多根交换机中,转向步骤142;
步骤142、PCIe多根交换机解析下行事务包的路由方式,PCIe多根交换机对下行事务包的路由方式进行解析,如果是基于ID路由的事务包,转向步骤143;
步骤143、PCIe多根交换机对基于ID路由的下行事务包中的ID号进行判定,如果事务包中ID位于本地的总线范围之内,则转向步骤144;如果事务包中ID位于交换机从属的总线范围之内,则转向步骤146;否则,转向步骤145。
步骤144、PCIe多根交换机本地处理响应该事务包,然后转向步骤141;
步骤145、向事务包指示的根节点返回一个不支持的事务包,然后转向步骤141;
步骤146、PCIe多根交换机确定转发事务包的出端口,PCIe多根交换机将要转发事务包中的ID与其从属的下游端口的总线范围进行匹配,确定事务包的出端口,并将事务包传送至匹配出端口对应的PCIe下游端口,然后转向步骤147;
步骤147、PCIe下游端口解析接收到的事务包,PCIe下游端口对接收到的事务包进行解析,提取事务包中的根节点标识ID和目标设备功能ID,所述目标功能ID,对于请求事务包,是指事务包中总线号/设备号/功能号域组成的数据段;对于完成包,是指事务包中的请求者ID,操作完成后转向148;
步骤148、PCIe下游端口对事务包的发起根节点进行判定;如果事务包中附加的根节点标识ID指示是从属根节点,则将该事务包传送给直接I/O虚拟化接口设备,转向步骤149;否则,如果指示是主控制根节点,将该事务包传送给PCIe控制器,转向步骤1413;
步骤149、直接I/O虚拟化接口设备对事务包进行功能映射;直接I/O虚拟化接口设备根据事务包中的从属根节点标识ID和目标设备功能ID,查询其映射的物理设备功能ID;如果存在匹配的物理设备功能ID,转向步骤1410;如果不存在;则转向步骤145;
步骤1410、直接I/O虚拟化接口设备改写事务包;直接I/O虚拟化接口设备将事务包中目标设备功能ID替换为步骤149中获得的匹配物理设备功能ID,然后转向步骤1411;
步骤1411、直接I/O虚拟化接口设备对事务包的类型进行判定;如果是配置包,则转向步骤1412;否则,转向步骤1413;
步骤1412、直接I/O虚拟化接口设备对事务包进行处理响应,完成后转向步骤141;
步骤1413、PCIe控制器传将事务包送给其端口连接的物理I/O设备,完成后转向步骤141。
15.如权利要求13所述的多根I/O虚拟化共享方法,其特征在于,所述基于地址路由的下行事务的处理方法,包括:
步骤151、PCIe上游端口接收从根节点发来的PCIe事务包,并将该端口连接的根节点的标识ID记录在接收到的事务包中;然后将修改后的PCIe事务包传送到PCIe多根交换机中,转向步骤152;
步骤152、PCIe多根交换机解析下行事务包的路由方式;PCIe多根交换机对下行事务包的路由方式进行解析,如果是基于地址路由的事务包,转向步骤153;
步骤153、PCIe多根交换机对基于地址路由的下行事务包的目标访存地址进行判定;如果事务包中目标访存地址位于本地的地址窗口之内,则转向步骤154;如果事务包中目标访存地址位于交换机从属的地址窗口之内,则转向步骤156;否则,转向步骤155;
步骤154、PCIe多根交换机本地处理响应该事务包,然后转向步骤151;
步骤155、向事务包指示的根节点返回一个不支持的事务包,然后转向步骤151;
步骤156、PCIe多根交换机确定转发事务包的出端口;PCIe多根交换机将要转发事务包中的目标访存地址与其从属的下游端口的地址窗口进行匹配,确定事务包的出端口,并将事务包传送至匹配出端口对应的PCIe下游端口;然后转向步骤157;
步骤157、PCIe下游端口解析接收到的事务包;PCIe下游端口对接收到的事务包进行解析,提取事务包中的根节点标识ID和目标访存地址;操作完成后转向步骤158;
步骤158、PCIe下游端口对事务包的发起根节点进行判定;如果事务包中附加的根节点标识ID指示是从属根节点,则将该事务包传送给直接I/O虚拟化接口设备,转向步骤159;否则,如果指示是主控制根节点,将该事务包传送给PCIe控制器,转向步骤1511;
步骤159、直接I/O虚拟化接口设备对事务包进行地址映射;直接I/O虚拟化接口设备根据事务包中的从属根节点标识ID和目标访存地址,查询其在主控制根节点PCIe域中的访存地址;如果存在匹配的访存地址,转向步骤1510;如果不存在;则转向步骤155;
步骤1510、直接I/O虚拟化接口设备改写事务包;直接I/O虚拟化接口设备将事务包中的访存地址替换为步骤159中获得的匹配访存地址,然后转向步骤1511;
步骤1511、PCIe控制器传将事务包送给其端口连接的物理I/O设备,完成后转向步骤151。
16.如权利要求13所述的多根I/O虚拟化共享方法,其特征在于,所述基于ID路由的上行事务的处理方法,包括:
步骤161、PCIe下游端口接收从I/O设备发来的PCIe事务包,并将事务包传送给直接I/O虚拟化接口设备,转向步骤162;
步骤162、直接I/O虚拟化接口设备提取上行事务包中的发起设备功能ID;基于ID路由的上行事务包为完成包,其发起设备功能ID为事务包中的完成者ID;操作完成后转向步骤163;
步骤163、直接I/O虚拟化接口设备进行设备功能ID映射;利用步骤162提取的发起设备功能ID查询其所属的根节点标识ID及其在所属根节点PCIe域中的ID号;操作完成后转向步骤164;
步骤164、直接I/O虚拟化接口设备对事务包的目标根节点进行判定;如果查询到的匹配目标根节点指示是主控制根节点,转向步骤165;否则,如果匹配的目标根节点指示是从属根节点,转向步骤166;
步骤165、直接I/O虚拟化接口设备修改事务包,将主控制根节点标识ID附加在事务包中,然后转向步骤167;
步骤166、直接I/O虚拟化接口设备修改事务包,将步骤163获得的从属根节点标识ID附加在事务包中,并将事务包中的发起设备功能ID替换为步骤163中获得的设备功能ID号;转向步骤167;
步骤167、PCIe下游端口将修改后的事务包传送给PCIe多根交换机;转向步骤168;
步骤168、PCIe多根交换机将上行事务包交换至事务包中的根节点标识ID对应的PCIe上游端口;转向步骤169;
步骤169、PCIe上游端口删除接收到的事务包中的根节点标识ID,将事务包传送给其连接的根节点;转向步骤161。
17.如权利要求13所述的多根I/O虚拟化共享方法,其特征在于,所述中基于地址路由的上行事务的处理方法,包括:
步骤171、PCIe下游端口接收从I/O设备发来的PCIe事务包,并将事务包传送给直接I/O虚拟化接口设备,转向步骤172;
步骤172、直接I/O虚拟化接口设备提取上行事务包中的发起设备功能ID;基于地址路由的上行事务为请求包,发起设备功能ID为事务包中的请求者ID;操作完成后转向步骤173;
步骤173、直接I/O虚拟化接口设备进行设备功能ID映射;利用步骤172提取的发起设备功能ID查询其所属的根节点标识ID及其在所属根节点PCIe域中的ID号。操作完成后转向步骤174;
步骤174、直接I/O虚拟化接口设备对事务包的目标根节点进行判定;如果步骤173中查询到的匹配目标根节点指示是主控制根节点,转向步骤175;否则,如果匹配的目标根节点指示是从属根节点,则转向步骤176;
步骤175、直接I/O虚拟化接口设备修改事务包,将主控制根节点标识ID记录在事务包中,然后转向步骤177;
步骤176、直接I/O虚拟化接口设备修改事务包,将步骤173获得的从属根节点标识ID记录在事务包中,并将事务包中的发起设备功能ID替换为步骤173中获得的设备功能号ID号;转向步骤177;
步骤177、PCIe下游端口将修改后的事务包传送给PCIe多根交换机;转向步骤178;
步骤178、PCIe多根交换机将上行事务包交换至事务包中的根节点标识ID对应的PCIe上游端口;转向步骤179;
步骤179、PCIe上游端口删除接收到的事务包中的根节点标识ID,将事务包传送给其连接的根节点;转向步骤171。
CN201210153862.9A 2012-05-17 2012-05-17 多根i/o虚拟化共享方法和系统 Active CN102707991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210153862.9A CN102707991B (zh) 2012-05-17 2012-05-17 多根i/o虚拟化共享方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210153862.9A CN102707991B (zh) 2012-05-17 2012-05-17 多根i/o虚拟化共享方法和系统

Publications (2)

Publication Number Publication Date
CN102707991A true CN102707991A (zh) 2012-10-03
CN102707991B CN102707991B (zh) 2016-03-30

Family

ID=46900808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210153862.9A Active CN102707991B (zh) 2012-05-17 2012-05-17 多根i/o虚拟化共享方法和系统

Country Status (1)

Country Link
CN (1) CN102707991B (zh)

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103353861A (zh) * 2013-06-18 2013-10-16 中国科学院计算技术研究所 实现分布式i/o资源池化的方法及装置
CN103701881A (zh) * 2013-12-18 2014-04-02 中国科学院计算技术研究所 一种支持i/o功能动态分配的虚拟热插拔系统及其工作方法
WO2014106321A1 (zh) * 2013-01-04 2014-07-10 华为技术有限公司 一种基于pcie网络的虚拟机通信方法、服务器及系统
CN104123173A (zh) * 2014-07-22 2014-10-29 华为技术有限公司 一种实现虚拟机间通信的方法及装置
CN104142849A (zh) * 2013-05-06 2014-11-12 财团法人工业技术研究院 多主机单根输入/输出虚拟化虚拟功能共享的方法及系统
CN104601684A (zh) * 2014-12-31 2015-05-06 曙光云计算技术有限公司 云服务器系统
CN104956347A (zh) * 2013-02-28 2015-09-30 英特尔公司 将一种互连协议的枚举和/或配置机制用于不同的互连协议
US20150301970A1 (en) * 2014-04-17 2015-10-22 International Business Machines Corporation Verifying runtime switch-over between multiple i/o protocols on shared i/o connection
CN105320628A (zh) * 2015-11-06 2016-02-10 中国科学院计算技术研究所 使能单根i/o设备多根共享的适配装置、系统及方法
CN105408879A (zh) * 2013-07-22 2016-03-16 华为技术有限公司 快捷外围部件互连域的资源管理
CN105556473A (zh) * 2014-12-27 2016-05-04 华为技术有限公司 一种i/o任务处理的方法、设备和系统
CN105721357A (zh) * 2016-01-13 2016-06-29 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
CN105791171A (zh) * 2016-03-21 2016-07-20 浪潮(北京)电子信息产业有限公司 交换芯片的复位方法、交换芯片及pcie交换机
CN105808167A (zh) * 2016-03-10 2016-07-27 深圳市杉岩数据技术有限公司 一种基于sr-iov的链接克隆的方法、存储设备及系统
CN106095563A (zh) * 2015-04-27 2016-11-09 阿尔特拉公司 灵活的物理功能和虚拟功能映射
CN106302322A (zh) * 2015-05-19 2017-01-04 腾讯科技(深圳)有限公司 一种虚拟机数据流管理方法和系统
CN106484492A (zh) * 2015-08-28 2017-03-08 杭州华为数字技术有限公司 配置接口的方法和系统
CN106776382A (zh) * 2016-12-02 2017-05-31 北京东土军悦科技有限公司 一种pcie设备的配置方法及装置
CN107278299A (zh) * 2015-03-26 2017-10-20 英特尔公司 经由可重配置的虚拟交换机实现次级总线功能性的方法、装置和系统
CN108063737A (zh) * 2017-11-23 2018-05-22 华中科技大学 一种FCoE存储区域网读请求处理方法及系统
CN108287806A (zh) * 2018-01-25 2018-07-17 曙光云计算集团有限公司 一种云服务器系统
CN108763134A (zh) * 2018-05-30 2018-11-06 郑州云海信息技术有限公司 一种节点高度互联的服务器
CN109474475A (zh) * 2018-12-07 2019-03-15 天津津航计算技术研究所 windows XPE下双冗余网卡的切换系统
CN109728915A (zh) * 2018-12-07 2019-05-07 天津津航计算技术研究所 windows XPE下双冗余网卡的切换方法
CN110377548A (zh) * 2019-06-28 2019-10-25 苏州浪潮智能科技有限公司 一种地址空间复用方法、装置及多路复用器
CN110515869A (zh) * 2018-05-22 2019-11-29 杭州海康威视数字技术股份有限公司 多Host CPU级联方法及系统
CN111158849A (zh) * 2019-12-09 2020-05-15 中国船舶重工集团公司第七一六研究所 支持虚拟机共享io设备的多机计算装置及其io设备共享方法
CN111522692A (zh) * 2020-04-20 2020-08-11 浙江大学 一种基于虚拟机的多操作系统输入及输出设备冗余保障系统
US10838762B2 (en) 2017-11-30 2020-11-17 Industrial Technology Research Institute Method and device for live migration of virtual machine in a multi-root I/O virtualization environment and computing host thereof
CN112988272A (zh) * 2021-03-22 2021-06-18 成都申威科技有限责任公司 一种在uboot中支持多路pcie rc的方法、装置及存储介质
CN113111025A (zh) * 2021-06-10 2021-07-13 深圳市科力锐科技有限公司 Pci设备映射方法、装置、设备及存储介质
CN113300984A (zh) * 2020-04-08 2021-08-24 阿里巴巴集团控股有限公司 通信方法、设备、系统及存储介质
CN113297124A (zh) * 2020-04-08 2021-08-24 阿里巴巴集团控股有限公司 设备枚举方法、设备、系统及存储介质
CN113296884A (zh) * 2021-02-26 2021-08-24 阿里巴巴集团控股有限公司 虚拟化方法、装置、电子设备、介质及资源虚拟化系统
CN113396399A (zh) * 2018-12-12 2021-09-14 美光科技公司 具有带单根虚拟化的多个端口的存储器子系统
CN113904938A (zh) * 2021-09-28 2022-01-07 北京大禹智芯科技有限公司 一种动态配置PCIe终端设备的系统和方法
CN114265804A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法
CN116049044A (zh) * 2023-03-28 2023-05-02 飞腾信息技术有限公司 一种pcie设备控制方法、计算机设备及片上系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101706757A (zh) * 2009-09-21 2010-05-12 中国科学院计算技术研究所 面向多核平台和分布式虚拟化环境的i/o系统及工作方法
US20100153615A1 (en) * 2008-12-17 2010-06-17 Hitachi, Ltd. Compound computer system and method for sharing pci devices thereof
US20100312943A1 (en) * 2009-06-04 2010-12-09 Hitachi, Ltd. Computer system managing i/o path and port
WO2011008215A1 (en) * 2009-07-17 2011-01-20 Hewlett-Packard Development Company, L.P. Virtual hot inserting functions in a shared i/o environment
CN101983365A (zh) * 2008-04-02 2011-03-02 惠普开发有限公司 在共享的i/o系统中转换重置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101983365A (zh) * 2008-04-02 2011-03-02 惠普开发有限公司 在共享的i/o系统中转换重置
US20100153615A1 (en) * 2008-12-17 2010-06-17 Hitachi, Ltd. Compound computer system and method for sharing pci devices thereof
US20100312943A1 (en) * 2009-06-04 2010-12-09 Hitachi, Ltd. Computer system managing i/o path and port
WO2011008215A1 (en) * 2009-07-17 2011-01-20 Hewlett-Packard Development Company, L.P. Virtual hot inserting functions in a shared i/o environment
CN101706757A (zh) * 2009-09-21 2010-05-12 中国科学院计算技术研究所 面向多核平台和分布式虚拟化环境的i/o系统及工作方法

Cited By (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014106321A1 (zh) * 2013-01-04 2014-07-10 华为技术有限公司 一种基于pcie网络的虚拟机通信方法、服务器及系统
CN104956347B (zh) * 2013-02-28 2018-05-22 英特尔公司 将一种互连协议的枚举和/或配置机制用于不同的互连协议
CN104956347A (zh) * 2013-02-28 2015-09-30 英特尔公司 将一种互连协议的枚举和/或配置机制用于不同的互连协议
CN104142849A (zh) * 2013-05-06 2014-11-12 财团法人工业技术研究院 多主机单根输入/输出虚拟化虚拟功能共享的方法及系统
CN104142849B (zh) * 2013-05-06 2017-11-28 财团法人工业技术研究院 多主机单根输入/输出虚拟化虚拟功能共享的方法及系统
US9734096B2 (en) 2013-05-06 2017-08-15 Industrial Technology Research Institute Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
CN103353861B (zh) * 2013-06-18 2016-06-29 中国科学院计算技术研究所 实现分布式i/o资源池化的方法及装置
CN103353861A (zh) * 2013-06-18 2013-10-16 中国科学院计算技术研究所 实现分布式i/o资源池化的方法及装置
CN105408879B (zh) * 2013-07-22 2018-06-15 华为技术有限公司 快捷外围部件互连域的资源管理
CN105408879A (zh) * 2013-07-22 2016-03-16 华为技术有限公司 快捷外围部件互连域的资源管理
CN103701881A (zh) * 2013-12-18 2014-04-02 中国科学院计算技术研究所 一种支持i/o功能动态分配的虚拟热插拔系统及其工作方法
US9606950B2 (en) * 2014-04-17 2017-03-28 International Business Machines Corporation Verifying runtime switch-over between multiple I/O protocols on shared I/O connection
US9600432B2 (en) * 2014-04-17 2017-03-21 International Business Machines Corporation Verifying runtime switch-over between multiple I/O protocols on shared I/O connection
US20150301970A1 (en) * 2014-04-17 2015-10-22 International Business Machines Corporation Verifying runtime switch-over between multiple i/o protocols on shared i/o connection
US20150301969A1 (en) * 2014-04-17 2015-10-22 International Business Machines Corporation Verifying runtime switch-over between multiple i/o protocols on shared i/o connection
CN104123173B (zh) * 2014-07-22 2017-08-25 华为技术有限公司 一种实现虚拟机间通信的方法及装置
CN104123173A (zh) * 2014-07-22 2014-10-29 华为技术有限公司 一种实现虚拟机间通信的方法及装置
CN105556473A (zh) * 2014-12-27 2016-05-04 华为技术有限公司 一种i/o任务处理的方法、设备和系统
WO2016107023A1 (zh) * 2014-12-31 2016-07-07 曙光云计算技术有限公司 云服务器系统
CN104601684A (zh) * 2014-12-31 2015-05-06 曙光云计算技术有限公司 云服务器系统
CN107278299A (zh) * 2015-03-26 2017-10-20 英特尔公司 经由可重配置的虚拟交换机实现次级总线功能性的方法、装置和系统
US11675613B2 (en) 2015-04-27 2023-06-13 Altera Corporation Flexible physical function and virtual function mapping
CN106095563A (zh) * 2015-04-27 2016-11-09 阿尔特拉公司 灵活的物理功能和虚拟功能映射
US10782995B2 (en) 2015-04-27 2020-09-22 Altera Corporation Flexible physical function and virtual function mapping
CN106302322A (zh) * 2015-05-19 2017-01-04 腾讯科技(深圳)有限公司 一种虚拟机数据流管理方法和系统
CN106302322B (zh) * 2015-05-19 2020-05-26 腾讯科技(深圳)有限公司 一种虚拟机数据流管理方法和系统
CN106484492A (zh) * 2015-08-28 2017-03-08 杭州华为数字技术有限公司 配置接口的方法和系统
CN105320628A (zh) * 2015-11-06 2016-02-10 中国科学院计算技术研究所 使能单根i/o设备多根共享的适配装置、系统及方法
CN110489365B (zh) * 2016-01-13 2023-09-12 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
CN110489365A (zh) * 2016-01-13 2019-11-22 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
US10810151B2 (en) 2016-01-13 2020-10-20 Huawei Technologies Co., Ltd. Switching device, peripheral component interconnect express system, and method for initializing peripheral component interconnect express system
CN105721357A (zh) * 2016-01-13 2016-06-29 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
US11080221B2 (en) 2016-01-13 2021-08-03 Huawei Technologies Co., Ltd. Switching device, peripheral component interconnect express system, and method for initializing peripheral component interconnect express system
CN105721357B (zh) * 2016-01-13 2019-09-03 华为技术有限公司 交换设备、外围部件互连高速系统及其初始化方法
CN105808167B (zh) * 2016-03-10 2018-12-21 深圳市杉岩数据技术有限公司 一种基于sr-iov的链接克隆的方法、存储设备及系统
CN105808167A (zh) * 2016-03-10 2016-07-27 深圳市杉岩数据技术有限公司 一种基于sr-iov的链接克隆的方法、存储设备及系统
CN105791171A (zh) * 2016-03-21 2016-07-20 浪潮(北京)电子信息产业有限公司 交换芯片的复位方法、交换芯片及pcie交换机
CN106776382B (zh) * 2016-12-02 2020-03-17 北京东土军悦科技有限公司 一种pcie设备的配置方法及装置
CN106776382A (zh) * 2016-12-02 2017-05-31 北京东土军悦科技有限公司 一种pcie设备的配置方法及装置
CN108063737A (zh) * 2017-11-23 2018-05-22 华中科技大学 一种FCoE存储区域网读请求处理方法及系统
US10838762B2 (en) 2017-11-30 2020-11-17 Industrial Technology Research Institute Method and device for live migration of virtual machine in a multi-root I/O virtualization environment and computing host thereof
CN108287806B (zh) * 2018-01-25 2021-04-06 曙光云计算集团有限公司 一种云服务器系统
CN108287806A (zh) * 2018-01-25 2018-07-17 曙光云计算集团有限公司 一种云服务器系统
CN110515869B (zh) * 2018-05-22 2021-09-21 杭州海康威视数字技术股份有限公司 多Host CPU级联方法及系统
CN110515869A (zh) * 2018-05-22 2019-11-29 杭州海康威视数字技术股份有限公司 多Host CPU级联方法及系统
CN108763134A (zh) * 2018-05-30 2018-11-06 郑州云海信息技术有限公司 一种节点高度互联的服务器
CN109474475B (zh) * 2018-12-07 2020-12-01 天津津航计算技术研究所 windows XPE下双冗余网卡的切换系统
CN109474475A (zh) * 2018-12-07 2019-03-15 天津津航计算技术研究所 windows XPE下双冗余网卡的切换系统
CN109728915A (zh) * 2018-12-07 2019-05-07 天津津航计算技术研究所 windows XPE下双冗余网卡的切换方法
CN109728915B (zh) * 2018-12-07 2020-12-01 天津津航计算技术研究所 windows XPE下双冗余网卡的切换方法
CN113396399A (zh) * 2018-12-12 2021-09-14 美光科技公司 具有带单根虚拟化的多个端口的存储器子系统
CN110377548A (zh) * 2019-06-28 2019-10-25 苏州浪潮智能科技有限公司 一种地址空间复用方法、装置及多路复用器
CN111158849A (zh) * 2019-12-09 2020-05-15 中国船舶重工集团公司第七一六研究所 支持虚拟机共享io设备的多机计算装置及其io设备共享方法
CN113300984A (zh) * 2020-04-08 2021-08-24 阿里巴巴集团控股有限公司 通信方法、设备、系统及存储介质
CN113297124A (zh) * 2020-04-08 2021-08-24 阿里巴巴集团控股有限公司 设备枚举方法、设备、系统及存储介质
CN113297124B (zh) * 2020-04-08 2022-05-06 阿里巴巴集团控股有限公司 设备枚举方法、设备、系统及存储介质
CN113300984B (zh) * 2020-04-08 2022-09-13 阿里巴巴集团控股有限公司 通信方法、设备、系统及存储介质
CN111522692B (zh) * 2020-04-20 2023-05-30 浙江大学 一种基于虚拟机的多操作系统输入及输出设备冗余保障系统
CN111522692A (zh) * 2020-04-20 2020-08-11 浙江大学 一种基于虚拟机的多操作系统输入及输出设备冗余保障系统
CN113296884A (zh) * 2021-02-26 2021-08-24 阿里巴巴集团控股有限公司 虚拟化方法、装置、电子设备、介质及资源虚拟化系统
CN113296884B (zh) * 2021-02-26 2022-04-22 阿里巴巴集团控股有限公司 虚拟化方法、装置、电子设备、介质及资源虚拟化系统
CN112988272A (zh) * 2021-03-22 2021-06-18 成都申威科技有限责任公司 一种在uboot中支持多路pcie rc的方法、装置及存储介质
CN113111025A (zh) * 2021-06-10 2021-07-13 深圳市科力锐科技有限公司 Pci设备映射方法、装置、设备及存储介质
CN113904938A (zh) * 2021-09-28 2022-01-07 北京大禹智芯科技有限公司 一种动态配置PCIe终端设备的系统和方法
CN114265804A (zh) * 2021-12-13 2022-04-01 中国科学院计算技术研究所 一种多根CPU下的PCIe交换芯片上、下游端口路由表构建方法
CN116049044A (zh) * 2023-03-28 2023-05-02 飞腾信息技术有限公司 一种pcie设备控制方法、计算机设备及片上系统
CN116049044B (zh) * 2023-03-28 2023-06-23 飞腾信息技术有限公司 一种pcie设备控制方法、计算机设备及片上系统

Also Published As

Publication number Publication date
CN102707991B (zh) 2016-03-30

Similar Documents

Publication Publication Date Title
CN102707991A (zh) 多根i/o 虚拟化共享方法和系统
CN102722414B (zh) 用于多根i/o 虚拟化共享系统的i/o 资源管理方法
CN102819447B (zh) 一种用于多根共享系统的直接i/o虚拟化方法和装置
CN102722458B (zh) 一种用于多根共享系统的i/o重映射方法和装置
EP4089544B1 (en) Method and apparatus for extending pcie domain
US8683110B2 (en) I/O system and I/O control method
US9734096B2 (en) Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
CN100472451C (zh) 一种虚拟机系统及其硬件设备访问方法
CN102650976B (zh) 一种支持单根io虚拟化用户级接口控制装置及其方法
CN103353861B (zh) 实现分布式i/o资源池化的方法及装置
CN105320628B (zh) 使能单根i/o设备多根共享的适配装置、系统及方法
US9423958B2 (en) System and method for managing expansion read-only memory and management host thereof
US8566416B2 (en) Method and system for accessing storage device
US20160224369A1 (en) Zoning data to a virtual machine
CN114996185A (zh) 跨地址空间桥接
CN105893289B (zh) 内存映射输入输出地址分配方法、装置及计算机系统
JP6760579B2 (ja) ネットワークラインカード(lc)のホストオペレーティングシステム(os)への統合
JP2016139256A (ja) 入出力制御装置、入出力制御システム、入出力制御方法、および、プログラム
CN111290829A (zh) 访问控制模组、虚拟机监视器及访问控制方法
CN114500540A (zh) 一种云数据中心的数据传输方法和装置
US20200327091A1 (en) Device communication control module and device communication control method
CN117520215A (zh) 一种缺页处理方法和相关设备
TW201824016A (zh) 資源分配系統、設備分配控制器以及設備識別方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant