CN102819447B - 一种用于多根共享系统的直接i/o虚拟化方法和装置 - Google Patents

一种用于多根共享系统的直接i/o虚拟化方法和装置 Download PDF

Info

Publication number
CN102819447B
CN102819447B CN201210171920.0A CN201210171920A CN102819447B CN 102819447 B CN102819447 B CN 102819447B CN 201210171920 A CN201210171920 A CN 201210171920A CN 102819447 B CN102819447 B CN 102819447B
Authority
CN
China
Prior art keywords
register
root node
configuration
equipment
transaction packet
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
CN201210171920.0A
Other languages
English (en)
Other versions
CN102819447A (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 CN201210171920.0A priority Critical patent/CN102819447B/zh
Publication of CN102819447A publication Critical patent/CN102819447A/zh
Application granted granted Critical
Publication of CN102819447B publication Critical patent/CN102819447B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种用于多根I/O虚拟化共享系统的直接I/O虚拟化方法和装置,该方法包括:步骤1,通过对物理I/O设备功能的逻辑抽象,建立逻辑虚拟化功能镜像,替代I/O设备功能作为从属根节点的设备占位符,实现I/O设备中各功能被多个根节点独立发现和配置;步骤2,通过硬件重映射方式,实现设备功能在从属根节点PCIe域和主控制根节点之间的映射,为各根节点在访问操作共享的物理I/O设备时提供直通模式,同时为各根节点的共享提供隔离和保护;步骤3,通过虚拟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虚拟化方法,包括:
步骤1,通过对物理I/O设备功能的逻辑抽象,建立逻辑虚拟化功能镜像,替代I/O设备功能作为从属根节点的设备占位符,实现I/O设备中各功能被多个根节点独立发现和配置;
步骤2,通过硬件重映射方式,实现设备功能在从属根节点PCIe域和主控制根节点之间的映射,为各根节点在访问操作共享的物理I/O设备时提供直通模式,同时为各根节点的共享提供隔离和保护;
步骤3,通过虚拟PCIe设备热插拔控制操作,能够在不影响根节点其他工作的情况下,完成向根节点动态删除和增加I/O设备功能,实现I/O设备中各功能被多个根节点动态共享。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,所述步骤1逻辑抽象包括:
I/O设备功能的实体抽象,所述I/O设备功能的实体抽象,是指对I/O设备中功能的配置空间头的备份,包括对配置空间头中基址类配置寄存器的定义备份和非基址类只读配置寄存器的数据备份;
I/O设备功能的行为模拟,所述I/O设备功能的行为模拟,是指对I/O设备中功能的配置响应的模拟。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,包括:
所述基址类配置寄存器,包括通用基址寄存器和扩展ROM基址寄存器;
所述非基址类只读配置寄存器,是指配置空间头中除了基址类寄存器之外的其他只读寄存器。
所述基址类配置寄存器定义备份,指为设备中每个功能存储一份基址类配置寄存器定义,以备从属根节点循环读写配置;
所述非基址类配置只读寄存器数据备份,指存储一份非基址类只读配置寄存器的数据,为设备中所有功能共享,以备从属根节点循环读识别。
所述的多根I/O虚拟化共享系统的直接I/O虚拟化方法,所述I/O设备功能的实体抽象还包括:
步骤41,系统上电启动、初始化,复位指向基址类寄存器偏移指针为10h,复位指向扩展PCIe配置空间偏移指针为100h;转向步骤42;
步骤42,直接I/O虚拟化装置接收主控制根节点发来的配置事务包,接收事务包后转向步骤43;
步骤43,提取并记录配置事务包中指示目标设备ID号和寄存器号,然后转向步骤44;
步骤44,配置事务包判定,如果配置事务包是读取配置空间头中非基址类寄存器读请求包,设置等待完成包的标识符指示为非基址类只读寄存器读返回;如果是向BAR偏移指针指定的基址类寄存器写全1的写请求包,设置等待完成包的标识符指示为基址类寄存器读返回;如果是读取扩展PCIe配置空间偏移指针指定的寄存器读请求包,设置等待完成包的标识符指示为扩展PCIe配置空间读返回;否则,保持设置等待完成包的标识符为默认初始值。操作完成后转向步骤45;
步骤45,接收I/O设备发来的带数据的完成包,接收到事务包后转向步骤46;
步骤46,等待完成包的标识符判定,如果当前等待完成包的标识符判定指示为扩展PCIe配置空间读返回,转向步骤47;如果指示为基址类寄存器读返回,转向步骤410;如果指示为非基址类只读寄存器读返回,转向步骤411;否则,复位等待完成包的标识符,转向步骤42;
步骤47,解析完成包数据中的扩展功能ID以及下一个功能指针,如果扩展功能ID指示为SR-IOV扩展功能,转向步骤48;否则转向步骤49;
步骤48,修改基址类寄存器偏移指针的起始地址,使用扩展PCIe配置空间偏移指针加上第一个VF BAR在SR-IOV扩展功能寄存器组中的固定偏移,修改基址类寄存器偏移指针的起始地址;指示一个SR-IOV设备,并记录完成包中的完成者ID为SR-IOV设备中PF的ID号;操作完成后,转向步骤49;
步骤49,使用步骤47提取的下一个功能指针更新扩展PCIe配置空间偏移指针;操作完成后,复位等待完成包的标识符,转向步骤42;
步骤410,解析完成包中数据,备份基址类寄存器定义,并更新基址类寄存器偏移指针指向下一个基址寄存器;如果指示SR-IOV设备的标识符为假,则将该基址类寄存器定义备份到目标设备ID号和基址类寄存器偏移指针对应 的寄存器中;如果指示SR-IOV设备的标识符为真,且完成者ID等于SR-IOV中PF的ID,则将该基址类寄存器定义备份到每个设备的基址类寄存器偏移指针对应的寄存器中;否则,不备份该基址类寄存器定义。操作完成后,复位等待完成包的标识符,转向步骤42;
步骤411,解析完成包中数据,并存储到由目标寄存器号指示的寄存器中;操作完成后,复位等待完成包的标识符,转向步骤42。
所述的多根I/O虚拟化共享系统的直接I/O虚拟化方法,所述I/O设备功能的行为模拟还包括:
步骤51,直接I/O虚拟化装置接收从属根节点发来的循环配置事务包,接收事务包后转向步骤52;
步骤52,提取并记录配置事务包中指示的寄存器号,然后转向步骤53;步骤53,配置寄存器类型判定。如果步骤52中的寄存器号指示为基址类配置寄存器,转向步骤54;如果指示为非基址类只读配置寄存器,转向步骤55;否则,转向步骤56;
步骤54,基址类配置寄存器访问本地处理。如果是配置读请求包,则提取目标设备ID号和寄存器号对应的数据,组成完成包返回给相应的从属根节点;否则,如果是配置写请求包,提取请求包中的数据写存储到目标设备ID号和寄存器号对应的寄存器。操作完成后转向步骤51;
步骤55,非基址类配置寄存器访问本地处理。如果是配置读请求包,则提取寄存器号对应的数据,组成完成包返回给相应的从属根节点;否则,如果是配置写请求包,提取请求包中的数据写存储到寄存器号对应的寄存器;操作完成后转向步骤51;
步骤56,将事务包透传给物理I/O设备,由物理I/O设备相关功能进行配置响应。如果是配置读请求包,则接收I/O设备发来的完成包返回给相应的从属根节点;否则,如果是配置写请求包,I/O设备不返回任何响应;然后转向步骤51;
本发明公开一种用于多根I/O虚拟化共享系统的直接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域和主控制根节点PCIe域之间的ID转换和地址窗口转换,实现I/O设备中各功能被多个根节点直接使用;
虚拟热插拔控制模块,所述虚拟热插拔控制模块通过摸拟PCIe热插拔控制操作,完成向根节点动态删除和增加I/O设备功能,实现I/O设备中各功能被多个根节点动态共享。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,所述下行事务包发送模块包括:
下行事务包子解析模块,所述下行事务包解析子模块用于接收根节点发来的事务包,并对事务包的根节点和类型进行解析判定,如果是配置包,还要对其配置操作的寄存器进行解析判定;
下行事务包重映射子模块,所述下行事务包重映射子模块用于对从属根节点发来的事务包进行ID号转换或者地址转换;
下行事务包分发子模块,所述下行事务包分发子模块用于对事务包进行分发处理,如果是主控制根节点发来的配置包同时传递给I/O虚拟化模块和物理I/O设备,如果是从属根节点发来的对配置基址类和非基址类只读寄存器的配置事务包只传递给I/O虚拟化模块,其他事务包只传递给物理I/O设备。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,所述上行事务包接收模块包括:
上行事务包解析子模块,所述上行事务包解析子模块用于接收物理I/O设备发来的事务包,对事务包的类型进行解析判定,如果是完成包,将其复制传递给I/O虚拟化模块;
上行事务包重映射子模块,所述上行事务包重映射子模块用于对事务包的 进行ID号转换;
上行事务包调度子模块,所述上行事务包调度子模块用于将从I/O设备、I/O虚拟化模块和虚拟热插拔控制模块传来的事务包调度传给根节点。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,所述I/O虚拟化模块包括:
配置事务解析子模块,所述配置事务解析子模块用于接收并解析根节点发来的配置事务包和I/O设备发来的完成包;
配置寄存器备份子模块,所述配置寄存器模块实现基址类和非基址类只读配置寄存器的备份,实现对I/O设备功能的实体抽象;
配置事务模拟响应子模块,所述配置事务模拟响应子模块用于替代I/O设备向根节点发送完成事务包,实现对I/O设备功能的行为模拟。
本发明的有益效果为:所述直接I/O虚拟化方法和装置,能够在不对操作系统以及设备驱动或者应用程序进行修改,完全兼容现有软件的标准执行模式的情况下,实现I/O设备各功能被被多个根节点独立发现和配置,并为各根节点在访问操作共享的物理I/O设备时提供直通模式,获得近乎本机的I/O性能,同时为各根节点对I/O设备的共享操作提供隔离和保护,以及支持I/O设备各功能在多个根节点之间动态共享。
附图说明
图1是多根I/O虚拟化共享系统的结构示意图;
图2是PCIe设备的配置空间示意图;
图3是SR-IOV扩展功能寄存器组示意图;
图4是设备功能的实体抽象方法的流程图;
图5是设备功能的行为模拟方法的流程图;
图6是直接I/O虚拟化装置的结构示意图;
图7是本发明多根I/O虚拟化共享系统的直接I/O虚拟化方法。
具体实施方式
下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述。
为了实现I/O设备中各功能被多个根节点独立发现和直接使用,并获得近 乎本机的I/O性能,本发明提供了一种用于多根I/O虚拟化共享系统的直接I/O虚拟化方法和装置。所述直接I/O虚拟化方法,包括:通过对物理I/O设备功能的逻辑抽象,建立逻辑虚拟化功能镜像,替代I/O设备功能作为从属根节点的设备占位符,实现I/O设备中各功能被多个根节点独立发现和配置;通过硬件重映射方式,实现设备功能在从属根节点PCIe域和主控制根节点之间的映射,为各根节点在访问操作共享的物理I/O设备时提供直通模式,同时还为各根节点的共享提供隔离和保护;通过虚拟PCIe设备热插拔控制操作,能够在不影响根节点其他工作的情况下,实现从根节点动态删除和增加I/O设备功能。
图1描绘了多根I/O虚拟化共享系统的结构示意图。多根I/O虚拟化共享系统主要包括三个部分:根节点子系统、I/O设备子系统和多根I/O虚拟化共享控制器。多根IO虚拟化共享控制器通过PCIe接口协议将根节点子系统和I/O设备子系统耦合在一起,实现一个I/O设备资源被多个根节点直接共享。
多根I/O虚拟化共享系统中的根节点子系统包含多个根节点,每个根节点由根联合体(Root Complex,RC)及其连接的CPU组(CPU set)和内存(Mem)组成。其中,运行有PCIe管理相关软件的根节点称之为主控制根节点(Master Root Node,mRN),主控制根节点只有一个(下文使用mRN0标识),管理和分配系统中的所有I/O设备资源;其他根节点称为从属根节点(Slave Root 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虚拟化共享系统中的多根I/O虚拟化共享控制器包由若干个PCIe上游端口(PCIe Upstream Port)、PCIe多根交换机和若干个PCIe下游端口(PCIe Downstream Port)三个部分组成。其中,PCIe上游端口包含符合 PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器,它负责与根节点子系统的互连,以及PCIe单根环境和PCIe多根环境之间的事务包转换;PCIe多根交换机,实质是由多个PCI桥建立的N+M个端口的交换机,通过为每个根节点建立一个1+M端口的虚拟PCIe交换机,实现各根节点与M个I/O设备的逻辑连接;PCIe下游端口,包含符合PCI-Express基本规范中的PCIe端口类型定义的PCIe控制器和直接I/O虚拟化装置两个功能部分,负责与I/O设备子系统的互连,以及PCIe单根环境和PCIe多根环境之间的事务包转换,实现各根节点直接访问物理I/O设备功能。
图2描述了一个PCIe设备的配置空间。每个功能都提供了一个配置空间,仅限初始化软件和错误处理软件用来进行设备识别、初始化配置和故障性错误处理。PCIe设备的配置空间分为三部分:PCI兼容的配置空间头、PCI兼容标准功能配置空间和PCIe扩展功能配置空间。PCI兼容的配置空间头定义了用于识别驱动程序的设备标识寄存器(如厂商ID,设备ID,修订ID,子系统ID,子系统厂商ID等),以及其他操作软件访问设备寄存器时必须使用的定义I/O和Memory空间的基址寄存器BAR(Base Address Register)等。PCI兼容标准功能配置空间和PCIe扩展功能配置空间中有许多可选的功能寄存器组用来定义设备的功能特性。PCI兼容标准功能配置空间定义了包括PCIe功能寄存器组(PCI Express Capability Structure),消息信号中断功能寄存器组(MSI/MSI-X Cap Structure)以及电源管理功能寄存器组(Power Management Capability Structure)等,其中PCI e功能寄存器组和电源管理功能寄存器组是所有PCIe设备功能必需实现的标准功能寄存器组。PCIe扩展功能配置空间定义了包括SR-IOV功能寄存器组(SR-IOV Capability Structure)、高级错误报告功能寄存器组(Advanced Error Reporting Capability Structure)、虚通道功能寄存器组(Virtual Channel Capability Structure)等。其中,SR-IOV功能寄存器组是SR-IOV设备中PF功能必需实现的。
图3描述了SR-IOV扩展功能寄存器组。SR-IOV设备是包含物理功能PF及其对应的多个虚拟功能VF的PCIe设备。其中,PF是标准的PCIe功能,具有丰富的物理资源和完备的配置空间,能被系统软件及驱动程序等发现和访问。VF是”轻量级”的PCIe功能,也有自己独立的配置空间,所谓“轻量级”体现在两个方面:一是VF只需具备数据迁移所必需的物理资源,如收发队列 等;二是VF的配置空间是经过“谨慎精简”过的PCIe配置空间。VF通过自被“精简”的配置空间不能被系统软件发现和初始化的。VF被“精简”的部分域值,如用于识别驱动程序的设备标识寄存器:厂商ID,设备ID等,没有被定义,使用时共享PF的配置空间对应域的值。而访问VF的I/O和Memory地址空间的BAR地址寄存器由SR-IOV扩展功能寄存器组定义。如图4所示,所述的SR-IOV扩展功能寄存器,位于PF配置空间中。其中,字段“第一个VF偏移”和“VF步进”定义了与PF相关联的VF的ID号;字段“VF BAR0”至“VF BAR5”定义了VF所需的BAR地址。每个VF BARb(b=0,1,……,5)定义了所有VF相应BARb的相同需求,并记录了第一个VF的BARb的起始地址,其他VF相应BARb的起始地址由公式VF BARb+(v-1)*(VF BARb范围大小)计算获得。
SR-IOV设备在单根虚拟化环境中使用时,VF需通过VMM或者Hypervisor模拟向虚拟机呈现完整的配置空间,才能实现在多个虚拟机之间共享。本发明使用硬件模拟的方式,通过对物理I/O设备功能的逻辑抽象,建立对应的逻辑虚拟化功能镜像,实现了I/O设备功能被多个根节点独立发现和配置。所述的逻辑抽象方法,包括对I/O设备功能的实体抽象方法和行为模拟方法。其中,I/O设备功能的实体抽象,是指对I/O设备中功能的配置空间头的备份,包括对配置空间头中基址类配置寄存器的定义备份和非基址类只读配置寄存器的数据备份。所述基址类配置寄存器,包括通用基址寄存器(BAR)和扩展ROM基址寄存器。直接I/O虚拟化装置为设备中每个功能存储一份基址类配置寄存器定义,以备从属根节点循环读写配置。所述非基址类只读配置寄存器,是指配置空间头中除了基址类寄存器之外的其他只读寄存器。直接I/O虚拟化装置只存储一份非基址类只读配置寄存器的数据,为设备中所有功能共享,以备从属根节点循环读识别。所述I/O设备功能的行为模拟方法,是指对I/O设备中功能的配置响应的模拟。
如图7所示,本发明公开一种用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,包括:
步骤1,通过对物理I/O设备功能的逻辑抽象,建立逻辑虚拟化功能镜像,替代I/O设备功能作为从属根节点的设备占位符,实现I/O设备中各功能被多个根节点独立发现和配置;
步骤2,通过硬件重映射方式,实现设备功能在从属根节点PCIe域和主控制根节点之间的映射,为各根节点在访问操作共享的物理I/O设备时提供直通模式,同时为各根节点的共享提供隔离和保护;
步骤3,通过虚拟PCIe设备热插拔控制操作,能够在不影响根节点其他工作的情况下,完成向根节点动态删除和增加I/O设备功能,实现I/O设备中各功能被多个根节点动态共享。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,所述步骤1逻辑抽象包括:
I/O设备功能的实体抽象,所述I/O设备功能的实体抽象,是指对I/O设备中功能的配置空间头的备份,包括对配置空间头中基址类配置寄存器的定义备份和非基址类只读配置寄存器的数据备份;
I/O设备功能的行为模拟,所述I/O设备功能的行为模拟,是指对I/O设备中功能的配置响应的模拟。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,包括:
所述基址类配置寄存器,包括通用基址寄存器和扩展ROM基址寄存器;
所述非基址类只读配置寄存器,是指配置空间头中除了基址类寄存器之外的其他只读寄存器。
所述基址类配置寄存器定义备份,指为设备中每个功能存储一份基址类配置寄存器定义,以备从属根节点循环读写配置;
所述非基址类配置只读寄存器数据备份,指存储一份非基址类只读配置寄存器的数据,为设备中所有功能共享,以备从属根节点循环读识别。
图4描述了I/O设备功能的实体抽象方法的流程图,包括以下步骤:
a)上电启动,初始化,复位指向基址类寄存器偏移指针为10h,复位指向扩展PCIe配置空间偏移指针为100h。转向步骤b)。
b)直接I/O虚拟化装置接收主控制根节点发来的配置事务包,接收事务包后转向步骤c)。
c)提取并记录配置事务包中指示目标设备ID号和寄存器号,然后转向步骤d)。
d)配置事务包判定,如果配置事务包是读取配置空间头中非基址类寄存器读请求包,设置等待完成包的标识符指示为非基址类只读寄存器读返回;如果 是向BAR偏移指针指定的基址类寄存器写全1的写请求包,设置等待完成包的标识符指示为基址类寄存器读返回;如果是读取扩展PCIe配置空间偏移指针指定的寄存器读请求包,设置等待完成包的标识符指示为扩展PCIe配置空间读返回;否则,保持设置等待完成包的标识符为默认初始值。操作完成后转向步骤e)。
e)接收I/O设备发来的带数据的完成包,接收到事务包后转向步骤f)。
f)等待完成包的标识符判定,如果当前等待完成包的标识符判定指示为扩展PCIe配置空间读返回,转向步骤g);如果指示为基址类寄存器读返回,转向步骤j);如果指示为非基址类只读寄存器读返回,转向步骤k);否则,复位等待完成包的标识符,转向步骤b)。
g)解析完成包数据中的扩展功能ID以及下一个功能指针,如果扩展功能ID指示为SR-IOV扩展功能,转向步骤h);否则转向i)。
h)修改基址类寄存器偏移指针的起始地址,使用扩展PCIe配置空间偏移指针加上第一个VF BAR在SR-IOV扩展功能寄存器组中的固定偏移,修改基址类寄存器偏移指针的起始地址;指示一个SR-IOV设备,并记录完成包中的完成者ID为SR-IOV设备中PF的ID号。操作完成后,转向步骤i)。
i)使用步骤g)提取的下一个功能指针更新扩展PCIe配置空间偏移指针。操作完成后,复位等待完成包的标识符,转向步骤b)。
j)解析完成包中数据,备份基址类寄存器定义,并更新基址类寄存器偏移指针指向下一个基址寄存器。如果指示SR-IOV设备的标识符为假,则将该基址类寄存器定义备份到目标设备ID号和基址类寄存器偏移指针对应的寄存器中;如果指示SR-IOV设备的标识符为真,且完成者ID等于SR-IOV中PF的ID,则将该基址类寄存器定义备份到每个设备的基址类寄存器偏移指针对应的寄存器中;否则,不备份该基址类寄存器定义。操作完成后,复位等待完成包的标识符,转向步骤b)。
k)解析完成包中数据,并存储到由目标寄存器号指示的寄存器中。操作完成后,复位等待完成包的标识符,转向步骤b)。
图5描述了I/O设备功能的行为模拟方法的流程图,包括以下步骤:
a)直接I/O虚拟化装置接收从属根节点发来的循环配置事务包,接收事务包后转向步骤b)。
b)提取并记录配置事务包中指示的寄存器号,然后转向步骤c)
c)配置寄存器类型判定。如果步骤b)中的寄存器号指示为基址类配置寄存器,转向步骤d);如果指示为非基址类只读配置寄存器,转向步骤e);否则,转向步骤f);
d)基址类配置寄存器访问本地处理。如果是配置读请求包,则提取目标设备ID号和寄存器号对应的数据,组成完成包返回给相应的从属根节点;否则,如果是配置写请求包,提取请求包中的数据写存储到目标设备ID号和寄存器号对应的寄存器。操作完成后转向步骤a)。
e)非基址类配置寄存器访问本地处理。如果是配置读请求包,则提取寄存器号对应的数据,组成完成包返回给相应的从属根节点;否则,如果是配置写请求包,提取请求包中的数据写存储到寄存器号对应的寄存器。操作完成后转向步骤a)。
f)将事务包透传给物理I/O设备,由物理I/O设备相关功能进行配置响应。如果是配置读请求包,则接收I/O设备发来的完成包返回给相应的从属根节点;否则,如果是配置写请求包,I/O设备不返回任何响应;然后转向步骤i)。
图6描述了多根I/O虚拟化共享系统中直接I/O虚拟化装置结构示意图。直接I/O虚拟化装置位于多根I/O虚拟化共享控制器中的PCIe下游端口,由下行事务包发送模块、上行事务包接收模块,I/O虚拟化模块、直接I/O重映射模块和虚拟热插拔控制模块组成。其中,下行事务包发送模块主要负责接收根节点发来的事务包,对事务包的根节点、类型以及配置包操作的寄存器进行解析判定;并对从属根节点发来的事务包进行ID号转换或者地址转换;最后对事务包进行分发处理,如果是主控制根节点发来的配置包同时传递给I/O虚拟化模块和物理I/O设备,如果是从属根节点发来的对配置基址类和非基址类只读寄存器的配置事务包只传递给I/O虚拟化模块,其他事务包只传递给物理I/O设备。上行事务包接收模块主要负责接收物理I/O设备发来的事务包,对事务包的类型进行解析判定,将其中的完成包复制传递给I/O虚拟化模块;并对事务包的进行ID号转换;最后将从物理I/O设备、I/O虚拟化模块和虚拟热插拔控制模块传来的事务包调度传送给根节点。
I/O虚拟化模块包含了描述PCIe设备配置空间的基址类寄存器和非基址类只读寄存器;它通过接收并解析根节点发来的配置事务包和I/O设备发来的 完成包,并对其中的基址类和非基址类只读配置寄存器进行备份,描述了N个对应的逻辑虚拟功能映像LVF(Logic Virtual Function,LVF),进而实现了对I/O设备功能的实体抽象;当接收到从属根节点发来的对所述基址类和非基址类只读寄存器的操作时,I/O虚拟化模块提取备份的值替代I/O设备向根节点发送完成事务包,实现对I/O设备功能的行为模拟。这样,通过截取和模拟响应从属根节点对I/O设备中功能单元的枚举发现和初始化配置,使用逻辑虚拟功能映像LVF替代I/O设备中的各功能作为从属根节点的设备占位符,向从属根节点呈现一个个透明的设备功能,不仅改变了SR-IOV设备中VF不能被系统初始化软件独立发现的境遇,使得SR-IOV设备中各功能被多个根节点独立发现和配置,同时也防止了从属根节点覆盖主控制根节点对物理I/O设备功能的关键配置,保护了主控制节点对I/O设备资源的控制权。
PCIe设备中的功能通常都用一个由总线号BUS/设备号DEVICE/功能号FUNCION组成的ID(B/D/F)来标识,并被映射到系统的内存地址空间中。在多根I/O虚拟化共享系统上电后,主控制根节点首先将对I/O子系统中的所有I/O设备进行枚举发现和初始化配置,同时也为设备功能分配了其在主控制根节点PCIe域中的ID(B/D/F)号和所占据的内存地址窗口。当I/O设备功能被分配给从属根节点使用时,从属根节点也会分配其在所属的从属根节点PCIe域中的ID(B/D/F)号和所占据的内存地址窗口。这两组初始化的配置信息分别存在物理设备功能中和逻辑虚拟功能映像LVF中。直接I/O虚拟化装置中的直接I/O重映射,通过硬件重映射的方式,实现设备功能的ID号和内存地址在从属根节点PCIe域和主控制根节点PCIe域之间的转换,为各根节点在访问操作共享的物理I/O设备时提供直通模式,同时还为各根节点的共享提供隔离和保护,根节点不能访问操作所分配到的I/O资源之外的其他I/O资源。
在多根I/O虚拟化共享系统运行过程中,由于各根节点的负载不均衡,需要对I/O资源进行合理的再分配。对I/O资源的再分配实质是向从属根节点动态插入一个设备功能,或者从一个根节点动态拔除一个设备功能,再将该设备功能插入到另一个根节点的过程。直接I/O虚拟化装置中的虚拟热插拔控制模块,通过模拟PCIe设备热插拔控制操作,能够在不影响其他根节点工作的情况下,实现从根节点动态删除和增加I/O设备功能,即实现I/O设备功能在根节点之间的动态共享。当接收到从某个从属根节点回收设备功能的指令时,虚 拟热插拔控制向该从属根节点发起一个指示设备功能拔除的虚拟热插拔事件,对应的根节点接收到该事件,并作出热插拔允许响应,则完成设备功能的回收操作。当接收到向某个根节点分配设备功能的指令时,虚拟热插拔控制向该根节点发起一个指示设备功能插入的虚拟热插拔事件,对应的根节点接收到该事件,并作出热插拔允许响应,则完成设备功能再分配的操作。
本发明公开一种用于多根I/O虚拟化共享系统的直接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域和主控制根节点PCIe域之间的ID转换和地址窗口转换,实现I/O设备中各功能被多个根节点直接使用;
虚拟热插拔控制模块,所述虚拟热插拔控制模块通过摸拟PCIe热插拔控制操作,完成向根节点动态删除和增加I/O设备功能,实现I/O设备中各功能被多个根节点动态共享。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,所述下行事务包发送模块包括:
下行事务包子解析模块,所述下行事务包解析子模块用于接收根节点发来的事务包,并对事务包的根节点和类型进行解析判定,如果是配置包,还要对其配置操作的寄存器进行解析判定;
下行事务包重映射子模块,所述下行事务包重映射子模块用于对从属根节点发来的事务包进行ID号转换或者地址转换;
下行事务包分发子模块,所述下行事务包分发子模块用于对事务包进行分 发处理,如果是主控制根节点发来的配置包同时传递给I/O虚拟化模块和物理I/O设备,如果是从属根节点发来的对配置基址类和非基址类只读寄存器的配置事务包只传递给I/O虚拟化模块,其他事务包只传递给物理I/O设备。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,所述上行事务包接收模块包括:
上行事务包解析子模块,所述上行事务包解析子模块用于接收物理I/O设备发来的事务包,对事务包的类型进行解析判定,如果是完成包,将其复制传递给I/O虚拟化模块;
上行事务包重映射子模块,所述上行事务包重映射子模块用于对事务包的进行ID号转换;
上行事务包调度子模块,所述上行事务包调度子模块用于将从I/O设备、I/O虚拟化模块和虚拟热插拔控制模块传来的事务包调度传给根节点。
所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,所述I/O虚拟化模块包括:
配置事务解析子模块,所述配置事务解析子模块用于接收并解析根节点发来的配置事务包和I/O设备发来的完成包;
配置寄存器备份子模块,所述配置寄存器模块实现基址类和非基址类只读配置寄存器的备份,实现对I/O设备功能的实体抽象;
配置事务模拟响应子模块,所述配置事务模拟响应子模块用于替代I/O设备向根节点发送完成事务包,实现对I/O设备功能的行为模拟。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。

Claims (7)

1.一种用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,其特征在于,包括:
步骤1,通过对物理I/O设备功能的逻辑抽象,建立逻辑虚拟化功能镜像,替代I/O设备功能作为从属根节点的设备占位符,实现I/O设备中各功能被多个根节点独立发现和配置,其中所述逻辑抽象包括I/O设备功能的行为模拟,所述I/O设备功能的行为模拟包括步骤51,直接I/O虚拟化装置接收从属根节点发来的循环配置事务包,接收事务包后转向步骤52;
步骤52,提取并记录配置事务包中指示的寄存器号,然后转向步骤53;步骤53,配置寄存器类型判定,如果步骤52中的寄存器号指示为基址类配置寄存器,转向步骤54;如果指示为非基址类只读配置寄存器,转向步骤55;否则,转向步骤56;
步骤54,基址类配置寄存器访问本地处理,如果是配置读请求包,则提取目标设备ID号和寄存器号对应的数据,组成完成包返回给相应的从属根节点;否则,如果是配置写请求包,提取请求包中的数据写存储到目标设备ID号和寄存器号对应的寄存器,操作完成后转向步骤51;
步骤55,非基址类配置寄存器访问本地处理,如果是配置读请求包,则提取寄存器号对应的数据,组成完成包返回给相应的从属根节点;否则,如果是配置写请求包,提取请求包中的数据写存储到寄存器号对应的寄存器;操作完成后转向步骤51;
步骤56,将事务包透传给物理I/O设备,由物理I/O设备相关功能进行配置响应,如果是配置读请求包,则接收I/O设备发来的完成包返回给相应的从属根节点;否则,如果是配置写请求包,I/O设备不返回任何响应;然后转向步骤51;
步骤2,通过硬件重映射方式,实现设备功能在从属根节点PCIe域和主控制根节点之间的映射,为各根节点在访问操作共享的物理I/O设备时提供直通模式,同时为各根节点的共享提供隔离和保护;
步骤3,通过虚拟PCIe设备热插拔控制操作,能够在不影响根节点其他工作的情况下,完成向根节点动态删除和增加I/O设备功能,实现I/O设备中各功能被多个根节点动态共享。
2.如权利要求1所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,其特征在于,所述步骤1逻辑抽象还包括:
I/O设备功能的实体抽象,所述I/O设备功能的实体抽象,是指对I/O设备中功能的配置空间头的备份,包括对配置空间头中基址类配置寄存器的定义备份和非基址类只读配置寄存器的数据备份。
3.如权利要求2所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化方法,其特征在于,包括:
所述基址类配置寄存器,包括通用基址寄存器和扩展ROM基址寄存器;
所述非基址类只读配置寄存器,是指配置空间头中除了基址类寄存器之外的其他只读寄存器;
所述基址类配置寄存器定义备份,指为设备中每个功能存储一份基址类配置寄存器定义,以备从属根节点循环读写配置;
所述非基址类配置只读寄存器数据备份,指存储一份非基址类只读配置寄存器的数据,为设备中所有功能共享,以备从属根节点循环读识别。
4.如权利要求2所述的多根I/O虚拟化共享系统的直接I/O虚拟化方法,其特征在于,所述I/O设备功能的实体抽象还包括:
步骤41,系统上电启动、初始化,复位指向基址类寄存器偏移指针为10h,复位指向扩展PCIe配置空间偏移指针为100h;转向步骤42;
步骤42,直接I/O虚拟化装置接收主控制根节点发来的配置事务包,接收事务包后转向步骤43;
步骤43,提取并记录配置事务包中指示目标设备ID号和寄存器号,然后转向步骤44;
步骤44,配置事务包判定,如果配置事务包是读取配置空间头中非基址类寄存器读请求包,设置等待完成包的标识符指示为非基址类只读寄存器读返回;如果是向BAR偏移指针指定的基址类寄存器写全1的写请求包,设置等待完成包的标识符指示为基址类寄存器读返回;如果是读取扩展PCIe配置空间偏移指针指定的寄存器读请求包,设置等待完成包的标识符指示为扩展PCIe配置空间读返回;否则,保持设置等待完成包的标识符为默认初始值,操作完成后转向步骤45;
步骤45,接收I/O设备发来的带数据的完成包,接收到事务包后转向步骤46;
步骤46,等待完成包的标识符判定,如果当前等待完成包的标识符判定指示为扩展PCIe配置空间读返回,转向步骤47;如果指示为基址类寄存器读返回,转向步骤410;如果指示为非基址类只读寄存器读返回,转向步骤411;否则,复位等待完成包的标识符,转向步骤42;
步骤47,解析完成包数据中的扩展功能ID以及下一个功能指针,如果扩展功能ID指示为SR-IOV扩展功能,转向步骤48;否则转向步骤49;
步骤48,修改基址类寄存器偏移指针的起始地址,使用扩展PCIe配置空间偏移指针加上第一个VF BAR在SR-IOV扩展功能寄存器组中的固定偏移,修改基址类寄存器偏移指针的起始地址;指示一个SR-IOV设备,并记录完成包中的完成者ID为SR-IOV设备中PF的ID号;操作完成后,转向步骤49;
步骤49,使用步骤47提取的下一个功能指针更新扩展PCIe配置空间偏移指针;操作完成后,复位等待完成包的标识符,转向步骤42;
步骤410,解析完成包中数据,备份基址类寄存器定义,并更新基址类寄存器偏移指针指向下一个基址寄存器;如果指示SR-IOV设备的标识符为假,则将该基址类寄存器定义备份到目标设备ID号和基址类寄存器偏移指针对应的寄存器中;如果指示SR-IOV设备的标识符为真,且完成者ID等于SR-IOV中PF的ID,则将该基址类寄存器定义备份到每个设备的基址类寄存器偏移指针对应的寄存器中;否则,不备份该基址类寄存器定义,操作完成后,复位等待完成包的标识符,转向步骤42;
步骤411,解析完成包中数据,并存储到由目标寄存器号指示的寄存器中;操作完成后,复位等待完成包的标识符,转向步骤42。
5.一种用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,其特征在于,包括:
下行事务包发送模块,所述下行事务包发送模块用于接收从根节点发来的事务包,通过对事务包的解析和重映射,将事务包分发给I/O虚拟化模块和物理I/O设备,其中所述下行事务包发送模块包括:
下行事务包子解析模块,所述下行事务包解析子模块用于接收根节点发来的事务包,并对事务包的根节点和类型进行解析判定,如果是配置包,还要对其配置操作的寄存器进行解析判定;
下行事务包重映射子模块,所述下行事务包重映射子模块用于对从属根节点发来的事务包进行ID号转换或者地址转换;
下行事务包分发子模块,所述下行事务包分发子模块用于对事务包进行分发处理,如果是主控制根节点发来的配置包同时传递给I/O虚拟化模块和物理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域和主控制根节点PCIe域之间的ID转换和地址窗口转换,实现I/O设备中各功能被多个根节点直接使用;
虚拟热插拔控制模块,所述虚拟热插拔控制模块通过摸拟PCIe热插拔控制操作,完成向根节点动态删除和增加I/O设备功能,实现I/O设备中各功能被多个根节点动态共享。
6.如权利要求5所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,其特征在于,所述上行事务包接收模块包括:
上行事务包解析子模块,所述上行事务包解析子模块用于接收物理I/O设备发来的事务包,对事务包的类型进行解析判定,如果是完成包,将其复制传递给I/O虚拟化模块;
上行事务包重映射子模块,所述上行事务包重映射子模块用于对事务包的进行ID号转换;
上行事务包调度子模块,所述上行事务包调度子模块用于将从I/O设备、I/O虚拟化模块和虚拟热插拔控制模块传来的事务包调度传给根节点。
7.如权利要求5所述的用于多根I/O虚拟化共享系统的直接I/O虚拟化装置,其特征在于,所述I/O虚拟化模块包括:
配置事务解析子模块,所述配置事务解析子模块用于接收并解析根节点发来的配置事务包和I/O设备发来的完成包;
配置寄存器备份子模块,所述配置寄存器模块实现基址类和非基址类只读配置寄存器的备份,实现对I/O设备功能的实体抽象;
配置事务模拟响应子模块,所述配置事务模拟响应子模块用于替代I/O设备向根节点发送完成事务包,实现对I/O设备功能的行为模拟。
CN201210171920.0A 2012-05-29 2012-05-29 一种用于多根共享系统的直接i/o虚拟化方法和装置 Active CN102819447B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210171920.0A CN102819447B (zh) 2012-05-29 2012-05-29 一种用于多根共享系统的直接i/o虚拟化方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210171920.0A CN102819447B (zh) 2012-05-29 2012-05-29 一种用于多根共享系统的直接i/o虚拟化方法和装置

Publications (2)

Publication Number Publication Date
CN102819447A CN102819447A (zh) 2012-12-12
CN102819447B true CN102819447B (zh) 2015-06-03

Family

ID=47303572

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210171920.0A Active CN102819447B (zh) 2012-05-29 2012-05-29 一种用于多根共享系统的直接i/o虚拟化方法和装置

Country Status (1)

Country Link
CN (1) CN102819447B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679694B (zh) * 2013-11-28 2017-11-14 英业达科技有限公司 快捷外设互联标准的选择设定系统及微服务器
CN103701881B (zh) * 2013-12-18 2017-03-22 中国科学院计算技术研究所 一种支持i/o功能动态分配的虚拟热插拔系统及其工作方法
TWI502348B (zh) * 2014-05-02 2015-10-01 Via Tech Inc 延伸唯讀記憶體管理系統、方法及其管理主機
CN104123188B (zh) * 2014-06-30 2017-10-24 华为技术有限公司 一种资源分配方法及相关装置
CN105446433A (zh) * 2014-08-22 2016-03-30 北京计算机技术及应用研究所 Pci-e板卡共享箱及其实现方法
US9747240B2 (en) * 2014-10-24 2017-08-29 Cisco Technology, Inc. Dynamic connection of PCIe devices and functions to an array of hosts
CN104636186B (zh) 2015-01-27 2018-02-13 华为技术有限公司 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
CN104636185B (zh) * 2015-01-27 2018-03-02 华为技术有限公司 业务上下文管理方法、物理主机、pcie设备及迁移管理设备
CN105207811B (zh) * 2015-08-28 2021-08-13 青岛海尔智能家电科技有限公司 一种替换非AllJoyn设备的方法及装置
CN106484492A (zh) * 2015-08-28 2017-03-08 杭州华为数字技术有限公司 配置接口的方法和系统
CN105260336B (zh) * 2015-11-17 2018-12-18 上海交通大学 可字节寻址的非易失性存储器热插拔方法及装置
TWI616759B (zh) * 2016-08-10 2018-03-01 創義達科技股份有限公司 設備分配控制器以及設備分配方法
CN109428903B (zh) * 2017-08-22 2021-08-13 佛山市顺德区顺达电脑厂有限公司 Pci装置的远程监控系统及其远程监控方法
CN109656676B (zh) * 2017-10-11 2023-01-06 阿里巴巴集团控股有限公司 多虚拟机共享fpga的控制方法、装置及电子设备
TWI645293B (zh) * 2017-11-30 2018-12-21 財團法人工業技術研究院 在多根輸入輸出虛擬化環境中虛擬機器即時遷移的方法、系統及其計算主機
CN109302386B (zh) * 2018-09-11 2020-08-25 网御安全技术(深圳)有限公司 一种服务器压缩解压缩刀片、系统、及压缩解压缩方法
US11449457B2 (en) 2019-07-15 2022-09-20 Hewlett-Packard Development Company, L.P. Communications bus with isolation circuit to operate one circuit domain while another is deactive
CN110750328A (zh) * 2019-09-23 2020-02-04 东软集团股份有限公司 一种设备访问方法、装置及终端设备
CN111158849A (zh) * 2019-12-09 2020-05-15 中国船舶重工集团公司第七一六研究所 支持虚拟机共享io设备的多机计算装置及其io设备共享方法
CN113111025B (zh) * 2021-06-10 2021-09-24 深圳市科力锐科技有限公司 Pci设备映射方法、装置、设备及存储介质
CN116028430B (zh) * 2023-03-28 2023-06-13 飞腾信息技术有限公司 一种pcie设备扫描方法及片上系统
CN116627883B (zh) * 2023-06-08 2024-10-01 北京大禹智芯科技有限公司 PCIe设备的片上空间的优化方法及设备
CN116501666B (zh) * 2023-06-29 2023-09-01 北京大禹智芯科技有限公司 一种PCIe Switch仿真器的实现方法
CN117743212B (zh) * 2024-02-19 2024-09-17 北京光润通科技发展有限公司 基于FPGA的PCIe IP核实现多物理功能的PCIe设备的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101206623A (zh) * 2006-12-19 2008-06-25 国际商业机器公司 迁移虚拟端点的系统和方法
WO2009123629A1 (en) * 2008-04-02 2009-10-08 Hewlett-Packard Development Company, L.P. Converting resets in shared i/o system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752360B2 (en) * 2007-05-16 2010-07-06 Nuova Systems, Inc. Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus
JP5332000B2 (ja) * 2008-12-17 2013-10-30 株式会社日立製作所 複合型計算機装置、複合型計算機の管理方法及び管理サーバ
JP5074457B2 (ja) * 2009-06-04 2012-11-14 株式会社日立製作所 計算機システム、スイッチ切り替え方法及びpciスイッチ
CN102473157B (zh) * 2009-07-17 2015-12-16 惠普开发有限公司 共享i/o环境中的虚拟热插入功能

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101206623A (zh) * 2006-12-19 2008-06-25 国际商业机器公司 迁移虚拟端点的系统和方法
WO2009123629A1 (en) * 2008-04-02 2009-10-08 Hewlett-Packard Development Company, L.P. Converting resets in shared i/o system

Also Published As

Publication number Publication date
CN102819447A (zh) 2012-12-12

Similar Documents

Publication Publication Date Title
CN102819447B (zh) 一种用于多根共享系统的直接i/o虚拟化方法和装置
CN102722414B (zh) 用于多根i/o 虚拟化共享系统的i/o 资源管理方法
US9734096B2 (en) Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
CN102707991B (zh) 多根i/o虚拟化共享方法和系统
US10423438B2 (en) Virtual machines controlling separate subsets of programmable hardware
US8386654B2 (en) System and method for transforming PCIe SR-IOV functions to appear as legacy functions
US8645605B2 (en) Sharing multiple virtual functions to a host using a pseudo physical function
US8103810B2 (en) Native and non-native I/O virtualization in a single adapter
CN102722458B (zh) 一种用于多根共享系统的i/o重映射方法和装置
CN110858157A (zh) 在可扩展i/o虚拟化(s-iov)架构中的虚拟设备的实时迁移
KR101035832B1 (ko) 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
US20110029693A1 (en) Reserving pci memory space for pci devices
KR102568906B1 (ko) PCIe 디바이스 및 그 동작 방법
US20120124186A1 (en) Systems, devices, and methods for multiple host management
US11928070B2 (en) PCIe device
Tu et al. Secure I/O device sharing among virtual machines on multiple hosts
CN115203110A (zh) PCIe功能及其操作方法
CN112835846A (zh) 片上系统
CN109656675A (zh) 总线设备、计算机设备及实现物理主机云存储的方法
US20160026567A1 (en) Direct memory access method, system and host module for virtual machine
CN114327741A (zh) 服务器系统、容器设置方法及装置
KR20230152394A (ko) PCIe 장치 및 이의 동작 방법

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