CN116521596A - 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置 - Google Patents

一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置 Download PDF

Info

Publication number
CN116521596A
CN116521596A CN202310778942.1A CN202310778942A CN116521596A CN 116521596 A CN116521596 A CN 116521596A CN 202310778942 A CN202310778942 A CN 202310778942A CN 116521596 A CN116521596 A CN 116521596A
Authority
CN
China
Prior art keywords
pcie
configuration
unit
devices
intercepting
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
CN202310778942.1A
Other languages
English (en)
Other versions
CN116521596B (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.)
Beijing Dayu Zhixin Technology Co ltd
Original Assignee
Beijing Dayu Zhixin Technology 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 Beijing Dayu Zhixin Technology Co ltd filed Critical Beijing Dayu Zhixin Technology Co ltd
Priority to CN202310778942.1A priority Critical patent/CN116521596B/zh
Publication of CN116521596A publication Critical patent/CN116521596A/zh
Application granted granted Critical
Publication of CN116521596B publication Critical patent/CN116521596B/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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置,Qemu虚拟环境模拟一具有PCIe总线的计算机系统,其特征在于,所述方法提供一PCIe Switch模拟器,PCIe Switch模拟器提供:一上行接口,用以连接PCIe的根复合体;复数个下行接口,用以对应连接复数个PCIe设备;一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息。本发明有利于扩展虚拟PCIe设备,尤其是在其他独立程序中扩展设备,还有助于降低Qemu硬件资源需求,且便于业务平台进行设备管理、热插拔、迁移和性能监控等。

Description

一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和 装置
技术领域
本发明属于云计算和设备虚拟化等技术领域,尤其涉及一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置。
背景技术
设备虚拟化技术一直是云计算领域的最重要的基础技术之一。云平台通常基于虚拟化技术来实现资源的共享、管理和调度。常见的虚拟设备包括虚拟磁盘、虚拟网络适配器等。Qemu(Quick Emulator)是一款基于虚拟化技术的开源模拟器和虚拟机管理器,广泛应用于laaS(Infrastructure-as-a-Service,基础设施即服务)层级的云服务中。在虚拟化领域中,Qemu与KVM(Kernel-based Virtual Machine,基于内核的虚拟机)相结合,形成了Linux平台上的事实标准。
不同的计算机组件和设备差别非常大,从工作原理到使用方式都不相同,因此模拟物理设备也是非常复杂的工作。Qemu利用设备抽象模型QOM(Qemu Object Model,Qemu对象模型)来模拟各种设备。Qemu负责虚拟设备的创建、管理和销毁。运行期间每个Qemu进程代表一个客户操作系统(Guest OS),对虚拟设备的模拟操作也运行在同一个Qemu进程中,Qemu进程之外不能获取虚拟设备的内部状态。此外模拟设备还需要消耗额外的内存和CPU资源,因此对宿主机具有一定性能要求。
PCI总线标准最初由Intel公司推出,后来经过多次更新和改进,目前已经发展出多个标准。PCI总线标准被广泛应用于PC、服务器、工控设备等领域,成为计算机领域最重要的接口之一。Qemu模拟了多种计算机系统总线和设备,其中包括跟复合体(RC,RootComplex的简写)、PCI总线、PCIe总线、PCI桥(PCI Bridge)、PCIe Switch、网络适配器和磁盘设备等。Qemu实现的PCIe相关设备结构如图1所示。
但Qemu模拟设备时存在以下问题:
设备扩展困难,扩展一种Qemu模拟设备需要熟悉Qemu项目代码和QOM设备模型;
无法获取虚拟设备的内部状态;虚拟设备的配置寄存器、BAR(Base AddressRegister,基址寄存器)空间等数据都在Qemu进程中,外部系统无法对设备进行精细管理和控制。
因此,本领域迫切需要可以摆脱虚拟设备对Qemu的依赖,还能够实时获得下游的PCIe设备内部状态的技术方案。
发明内容
针对现有技术中Qemu模拟设备扩展困难且无法获取虚拟设备的内部状态的技术问题,现提供一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置。
在本发明的较佳实施方式中,本申请实施例提供了基于Qemu虚拟环境的PCIeSwitch模拟器的实现方法,所述Qemu虚拟环境模拟一具有PCIe总线的计算机系统,其特征在于,提供一PCIe Switch模拟器,所述PCIe Switch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
复数个下行接口,用以对应连接复数个PCIe设备;
一第一拦截单元,用于拦截并代理系统自所述上行接口对复数个所述PCIe设备的访问;
一第二拦截单元,用以拦截并代理复数个所述PCIe设备向所述系统转发的配置请求或中断信息。
进一步,所述第一拦截单元拦截所述系统自所述上行接口对复数个所述PCIe设备的访问的方法包括以下步骤:
步骤S1、查找对应需访问的所述PCIe设备对应的虚拟对象;
步骤S2、判断所述虚拟对象对应的所述PCIe设备的上游设备是否为所述PCIeSwitch模拟器;
步骤S3、如否,则通过所述Qemu虚拟环境提供的访问机制进行访问,并退出;
步骤S4、如是,则拦截所述系统对对应的所述PCIe设备的访问。
进一步,所述第二拦截单元拦截复数个所述PCIe设备向所述系统转发的所述配置请求或所述中断信息的方法包括以下步骤:
步骤T1、查找产生所述配置请求或所述中断信息的所述PCIe设备对应的虚拟对象;
步骤T2、判断所述虚拟对象对应的所述PCIe设备的上游设备是否为所述PCIeSwitch模拟器;
步骤T3、如否,则通过所述Qemu虚拟环境提供的转发机制进行所述配置请求或所述中断信息的转发,并退出;
步骤T4、如是,则拦截所述PCIe设备向所述系统发送的所述配置请求或所述中断信息。
进一步,所述方法还包括提供一PCIe配置空间读写单元,用以代理系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写。
进一步,所述PCIe配置空间读写单元代理所述系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写的方法包括;
步骤A1、所述第一拦截单元拦截所述系统对对应的所述PCIe设备的访问;
步骤A2、通过对应的所述PCIe设备的上游设备的所述PCIe配置空间读写单元对所述PCIe配置空间进行读写。
进一步,所述复数个PCIe设备包括PCIe桥(PCIe bridge),级联的PCIe Switch以及PCIe终端设备。
进一步,所述方法还包括提供一基址寄存器空间配置单元,用以根据所述配置请求,配置对应的所述PCIe设备的基址寄存器空间。
进一步,所述基址寄存器空间配置单元配置对应的所述PCIe设备的基址寄存器空间的方法包括以下步骤:
步骤B1、所述第二拦截单元拦截所述PCIe设备向所述系统发送的所述配置请求;
步骤B2、所述基址寄存器空间配置单元根据对应的所述PCIe设备的请求向所述Qemu虚拟环境注册对应的储存区域,并维护对应的所述PCIe设备的基址寄存器空间与所述储存区域的映射关系。
进一步,所述方法还包括提供一中断转发单元,用以向所述系统转发对应的所述PCIe设备产生的所述中断信息。
进一步,所述中断转发单元向所述系统转发对应的所述PCIe设备产生的所述中断信息的方法包括以下步骤:
步骤C1、所述第二拦截单元拦截所述PCIe设备向所述系统发送的所述中断信息;
步骤C2、所述中断转发单元将所述中断信息写入所述Qemu虚拟环境的客户操作系统的中断信息处理区域。
在本发明的较佳实施方式中,本申请实施例提供了一种基于Qemu虚拟环境的PCIeSwitch模拟器装置,包括:
一上行接口,用以连接PCIe的根复合体;
复数个下行接口,用以对应连接复数个PCIe设备;
一第一拦截单元,连接所述上行接口,用以拦截并代理系统自所述上行接口对复数个所述PCIe设备的访问;
一第二拦截单元,连接复数个所述下行接口,用以拦截并代理复数个所述PCIe设备向所述系统转发的配置请求或中断信息。
进一步,所述装置还包括一PCIe配置空间读写单元,连接所述第一拦截单元,用以代理所述系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写。
进一步,所述装置还包括一基址寄存器空间配置单元,连接所述第二拦截单元,用以根据所述配置请求,配置对应的所述PCIe设备的基址寄存器空间。
进一步,所述装置还包括一中断转发单元,连接所述第二拦截单元,用以向所述系统转发对应的所述PCIe设备产生的所述中断信息。
本发明能够带来以下有益效果:
1、有利于扩展虚拟PCIe设备,尤其是在其他独立程序中扩展设备;
2、PCIe Switch模拟器下游的PCIe设备独立运行在其他程序中,有助于降低Qemu硬件资源需求;
3、PCIe Switch模拟器下游的PCIe设备独立运行在其他程序中,外界程序能获取到虚拟设备的配置空间、基址寄存器空间和中断操作;便于业务平台进行设备管理、热插拔、迁移和性能监控等。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对上述特性、技术特征、优点及其实现方式予以进一步说明。
图1示出了现有技术中Qemu实现PCIe设备的结构示意图。
图2示出了本发明的一个实施方式中PCIe Switch模拟器装置的模块组成图。
图3示出了本发明的一个实施方式的拦截对下游的PCIe设备的访问的方法的步骤流程图。
图4示出了本发明的一个实施方式的拦截下游的PCIe设备的配置请求或中断信息的方法的步骤流程图。
图5示出了本发明的一个实施方式的读写下游的PCIe设备的PCIe配置空间的方法的步骤流程图。
图6示出了本发明的一个实施方式的配置下游的PCIe设备的基址寄存器空间的方法的步骤流程图。
图7示出了本发明的一个实施方式的转发下游的PCIe设备中断信息的方法的步骤流程图。
图8示出了本发明的一个实施方式的PCIe Switch模拟器装置的结构示意图。
图9示出了本发明的一个实施方式中配置下游的PCIe设备的基址寄存器空间的结构示意图。
图10示出了本发明的一个实施方式中转发下游的PCIe设备中断信息的结构示意图。
图11示出了本发明的另一个实施方式中PCIe Switch模拟器装置的模块组成图。
具体实施方式
以下对本发明的各个方面进行进一步详述。
除非另有定义或说明,本文中所使用的所有专业与科学用语与本领域技术熟练人员所熟悉的意义相同。此外任何与所记载内容相似或均等的方法及材料皆可应用于本发明方法中。
以下对术语进行说明。
除非另有明确的规定和限定,本发明中所述的“或”,包含了“和”的关系。所述“和”相当于布尔逻辑运算符“AND”,所述“或”相当于布尔逻辑运算符“OR”,而“AND”是“OR”的子集。
可以理解到,尽管术语“第一”、“第二”等等可以在此用来说明不同的元件,但是这些元件不应被这些术语限制。这些术语仅仅用来将一个元件与另一个元件区分开。因此,第一元件可以被称为第二元件,而不背离本发明构思的教导。
本发明中,术语“含有”、“包含”或“包括”表示各种成分可一起应用于本发明的混合物或组合物中。因此,术语“主要由 ...组成”包含在术语“含有”、“包含”或“包括”中。
除非另有明确的规定和限定,本发明的术语“相连”、“连通”、“连接”应作广义理解,例如,可以是固定连接,也可以是通过中介媒介间相连,可以是两个元件内部的连通或者两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
例如,如果一个元件(或部件)被称为在另一个元件上、与另一个元件耦合或者与另一个元件连接,那么所述一个元件可以直接地在所述另一个元件上形成、与之耦合或者与之连接,或者在它们之间可以有一个或多个介于中间的元件。相反,如果在此使用表述“直接在......上”、“直接与......耦合”和“直接与......连接”,那么表示没有介于中间的元件。用来说明元件之间的关系的其他词语应该被类似地解释,例如“在......之间”和“直接在......之间”、“附着”和“直接附着”、“相邻”和“直接相邻”等等。
另外需要说明的是,下面描述中使用的词语“前”、“后”、“左”、“右”、“上”和“下”指的是附图中的方向。使用的词语“内”和“外”分别指的是朝向或远离特定部件几何中心的方向。可以理解到,在此,这些术语用来描述如在附图中所示的一个元件、层或区域相对于另一个元件、层或区域的关系。除了在附图中描述的取向之外,这些术语应该也包含装置的其他取向。
本发明的其它方面由于本文的公开内容,对本领域的技术人员而言是显而易见的。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。例如,在附图中的元件的厚度可以为了清楚性起见而被夸张。
本发明提供了一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法,Qemu虚拟环境模拟一具有PCIe总线的计算机系统,方法提供一PCIe Switch模拟器,如图2所示,PCIe Switch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
复数个下行接口,用以对应连接复数个PCIe设备;
一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;
一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息。
上述技术方案,除了实现标准的PCIe Switch功能之外,还代理所有下游PCIe设备的PCIe操作;通过本发明的PCIe Switch模拟器装置,不但可以摆脱虚拟设备对Qemu的依赖,还能够实时获得下游的PCIe设备内部状态。
作为优选的实施方式,如图3所示,第一拦截单元拦截系统自上行接口对复数个PCIe设备的访问的方法包括以下步骤:
步骤S1、查找对应需访问的PCIe设备对应的虚拟对象;
步骤S2、判断虚拟对象对应的PCIe设备的上游设备是否为PCIe Switch模拟器;
步骤S3、如否,则通过Qemu虚拟环境提供的访问机制进行访问,并退出;
步骤S4、如是,则拦截系统对对应的PCIe设备的访问。
作为优选的实施方式,如图4所示,第二拦截单元拦截复数个PCIe设备向系统转发的配置请求或中断信息的方法包括以下步骤:
步骤T1、查找产生配置请求或中断信息的PCIe设备对应的虚拟对象;
步骤T2、判断虚拟对象对应的PCIe设备的上游设备是否为PCIe Switch模拟器;
步骤T3、如否,则通过Qemu虚拟环境提供的转发机制进行配置请求或中断信息的转发,并退出;
步骤T4、如是,则拦截PCIe设备向系统发送的配置请求或中断信息。
进一步优选的,方法还提供一PCIe配置空间读写单元,用以代理系统对复数个PCIe设备对应的PCIe配置空间进行读写。
作为优选的实施方式,如图5所示,PCIe配置空间读写单元代理系统对复数个PCIe设备对应的PCIe配置空间进行读写的方法包括;
步骤A1、第一拦截单元拦截系统对对应的PCIe设备的访问;
步骤A2、通过对应的PCIe设备的上游设备的PCIe配置空间读写单元对PCIe配置空间进行读写。
进一步优选的,复数个PCIe设备包括PCIe桥(PCIe bridge),级联的PCIe Switch以及PCIe终端设备。
进一步优选的,方法还包括提供一基址寄存器空间配置单元,用以根据配置请求,配置对应的PCIe设备的基址寄存器空间。
作为优选的实施方式,如图6所示,基址寄存器空间配置单元配置对应的PCIe设备的基址寄存器空间的方法包括以下步骤:
步骤B1、第二拦截单元拦截PCIe设备向系统发送的配置请求;
步骤B2、基址寄存器空间配置单元根据对应的PCIe设备的请求向Qemu虚拟环境注册对应的储存区域,并维护对应的PCIe设备的基址寄存器空间与储存区域的映射关系。
进一步优选的,方法还包括提供一中断转发单元,用以向系统转发对应的PCIe设备产生的中断信息。
作为优选的实施方式,如图7所示,中断转发单元向系统转发对应的PCIe设备产生的中断信息的方法包括以下步骤:
步骤C1、第二拦截单元拦截PCIe设备向系统发送的中断信息;
步骤C2、中断转发单元将中断信息写入Qemu虚拟环境的客户操作系统的中断信息处理区域。
实施例 1
从功能逻辑上看,PCIe Switch由一个上游端口(upstream port)和多个下游端口(downstream port)组成,每个下游端口延伸一条独立的PCIe总线。根据PCIe点对点特性,每一条PCIe总线可以连接一个PCIe设备。PCIe组件之间通过TCP(Transmission ControlProtocol,传输控制协议)事务进行管理和数据读写。由PCIe设备连接拓扑结构可知,下游设备的事务数据包总会通过上游设备。但是Qemu并没有模拟PCIe事务层,而是保存所有虚拟设备的QOM对象地址,通过QOM的回调函数直接进行虚拟设备管理。
根据本发明示例性实施例提出的基于Qemu虚拟环境的PCIe Switch模拟器,Qemu虚拟环境模拟一具有PCIe总线的计算机系统,提供一PCIe Switch模拟器,该PCIe Switch模拟器可以直接连接PCIe RC,也可以用级连其他Switch或者bridge的方式连接到系统,且该PCIe Switch模拟器会拦截系统对Switch所有下游的PCIe设备和级联设备的访问。除此之外,该虚拟上游端口还需要向系统转发下游的PCIe设备的中断信息。请参阅附图8,PCIeSwitch模拟器通过拦截系统的PCIe操作,可以不依赖Qemu添加其他任意PCIe设备,并且添加的设备独立于Qemu虚拟环境。
为了拦截下游的PCIe设备的PCIe配置空间读写操作,PCIe Switch模拟器上面增加了一对配置空间读写函数passthrough_read和passthrough_write用于此目的。系统中只有本发明中提及的PCIe Switch模拟器才实现这组函数。
PCIe规范要求PCIe Switch由一个上游端口、多个下游端口和一个内部PCIe总线组成。根据PCIe规范,上游端口必须实现PCI Express Capability且类型为“UpstreamPort of PCI Express Switch”; 下游端口必须实现PCI Express Capability且类型为“Downstream Port of PCI Express Switch”和“Slot Implemented"。这部分功能通过使用Qemu内部函数完成。
区别于常规PCIe Switch, 为了实现PCIe拦截和中断代理功能,本发明的PCIeSwitch模拟器在常规PCIe Switch之上还实现了下游的PCIe设备配置空间读写、下游的PCIe设备BAR空间读写和下游的PCIe设备中断处理等,具体地,PCIe Switch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
复数个下行接口,用以对应连接复数个PCIe设备,复数个PCIe设备包括PCIe桥(PCIe bridge),级联的PCIe Switch以及PCIe终端设备(Endpoint设备);
一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;具体地,根据总线(BUS)号、设备号和功能号查找对应需访问的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIeSwitch模拟器,通过Qemu虚拟环境提供的访问机制按照常规流程对设备QOM对象进行配置空间读写,并退出;若是,则上游设备是PCIe Switch模拟器,拦截系统对对应的PCIe设备的访问;其中,第一拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;PCIe配置空间常规读写流程如下:1.根据BUS号、设备号和功能号查找设备QOM对象;2.调用QOM的配置空间读写函数。
一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息;具体地,根据总线(BUS)号、设备号和功能号查找产生配置请求或中断信息的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIe Switch模拟器,则通过Qemu虚拟环境提供的转发机制进行配置请求或中断信息的转发,并退出;若是,则上游设备是PCIe Switch模拟器,拦截PCIe设备向系统发送的配置请求或中断信息;其中,第二拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;
一PCIe配置空间读写单元,用以代理系统对复数个PCIe设备对应的PCIe配置空间进行读写;具体地,第一拦截单元拦截系统对对应的PCIe设备的访问;通过对应的PCIe设备的上游设备的PCIe配置空间读写单元对PCIe配置空间进行读写;
一基址寄存器(BAR)空间配置单元,用以根据配置请求,配置对应的PCIe设备的基址寄存器空间;具体地,每个PCIe设备最多会有6段BAR空间,Qemu使用一种叫做MemoryRegion的数据结构管理PCIe BAR空间,每个BAR空间对应一个Memory Region;本发明中的PCIe Switch模拟器充当下游的PCIe设备和系统之间代理的角色。请参阅附图9,PCIe设备配置BAR空间时,向PCIe Switch模拟器申请BAR空间,第二拦截单元拦截PCIe设备向系统发送的配置请求,基址寄存器空间配置单元根据对应的PCIe设备的请求再利用Qemu虚拟环境机制注册对应的储存区域(Memory Region);并维护着BAR空间与Memory Region的映射关系;
一中断转发单元,用以向系统转发对应的PCIe设备产生的中断信息;与BAR空间读写类似,请参阅附图10,PCIe Switch模拟器也代理了下游的PCIe设备向系统发起中断,具体如下:PCIe设备向PCIe Switch模拟器发起中断请求;第二拦截单元拦截PCIe设备向系统发送的中断请求信息;中断转发单元根据中断请求信息将中断写入Qemu虚拟环境的GuestOS的中断信息处理区域。
通过PCIe Switch模拟器的拦截和代理技术方式,下游的PCIe设备按照PCIe规范实现自身的配置空间、BAR空间和中断处理机制。下游的PCIe设备摆脱了Qemu的限制,方便进行更深层次的平台业务扩展。
实施例 2
如图11所示,作为示例的基于Qemu虚拟环境的PCIe Switch模拟器装置,包括:
一上行接口,用以连接PCIe的根复合体;
复数个下行接口,用以对应连接复数个PCIe设备,复数个PCIe设备包括PCIe桥(PCIe bridge),级联的PCIe Switch以及PCIe终端设备(Endpoint设备);
一第一拦截单元,用于拦截并代理系统自上行接口对复数个PCIe设备的访问;具体地,根据总线(BUS)号、设备号和功能号查找对应需访问的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIeSwitch模拟器,通过Qemu虚拟环境提供的访问机制按照常规流程对设备QOM对象进行配置空间读写,并退出;若是,则上游设备是PCIe Switch模拟器,拦截系统对对应的PCIe设备的访问;其中,第一拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;PCIe配置空间常规读写流程如下:1.根据BUS号、设备号和功能号查找设备QOM对象;2.调用QOM的配置空间读写函数。
一第二拦截单元,用以拦截并代理复数个PCIe设备向系统转发的配置请求或中断信息;具体地,根据总线(BUS)号、设备号和功能号查找产生配置请求或中断信息的PCIe设备对应的QOM对象;判断QOM对象对应的PCIe设备的上游设备是否存在passthrough_read和passthrough_write,或者是否存在特定标记,特定标记包括flag或静态全局变量;若否,则上游设备不是PCIe Switch模拟器,则通过Qemu虚拟环境提供的转发机制进行配置请求或中断信息的转发,并退出;若是,则上游设备是PCIe Switch模拟器,拦截PCIe设备向系统发送的配置请求或中断信息;其中,第二拦截单元与下游的PCIe设备交互形式包括但不限于函数调用和网络调用等;
一PCIe配置空间读写单元,用以代理系统对复数个PCIe设备对应的PCIe配置空间进行读写;具体地,第一拦截单元拦截系统对对应的PCIe设备的访问;通过对应的PCIe设备的上游设备的PCIe配置空间读写单元对PCIe配置空间进行读写;
一基址寄存器(BAR)空间配置单元,用以根据配置请求,配置对应的PCIe设备的基址寄存器空间;具体地,每个PCIe设备最多会有6段BAR空间,Qemu使用一种叫做MemoryRegion的数据结构管理PCIe BAR空间,每个BAR空间对应一个Memory Region;本发明中的PCIe Switch模拟器充当下游的PCIe设备和系统之间代理的角色。请参阅附图9,PCIe设备配置BAR空间时,向PCIe Switch模拟器申请BAR空间,第二拦截单元拦截PCIe设备向系统发送的配置请求,基址寄存器空间配置单元根据对应的PCIe设备的请求再利用Qemu虚拟环境机制注册对应的储存区域(Memory Region);并维护着BAR空间与Memory Region的映射关系;
一中断转发单元,用以向系统转发对应的PCIe设备产生的中断信息;与BAR空间读写类似,请参阅附图10,PCIe Switch模拟器也代理了下游的PCIe设备向系统发起中断,具体如下:PCIe设备向PCIe Switch模拟器发起中断请求;第二拦截单元拦截PCIe设备向系统发送的中断请求信息;中断转发单元根据中断请求信息将中断写入Qemu虚拟环境的GuestOS的中断信息处理区域。
综上,如上述所示的本发明的具体实施方式获得了如下效果:
有利于扩展虚拟PCIe设备,尤其是在其他独立程序中扩展设备。
PCIe Switch模拟器下游的PCIe设备独立运行在其他程序中,有助于降低Qemu硬件资源需求。
PCIe Switch模拟器下游的PCIe设备独立运行在其他程序中,外界程序能获取到虚拟设备的配置空间、BAR空间和中断操作;便于业务平台进行设备管理、热插拔、迁移、性能监控等。
基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
在本发明提及的所有文献都在本申请中引用作为参考,就如同每一篇文献被单独引用作为参考那样。此外应理解,在阅读了本发明的上述内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

Claims (10)

1.一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法,所述Qemu虚拟环境模拟一具有PCIe总线的计算机系统,其特征在于,提供一PCIe Switch模拟器,所述PCIe Switch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
复数个下行接口,用以对应连接复数个PCIe设备;
一第一拦截单元,用于拦截并代理系统自所述上行接口对复数个所述PCIe设备的访问;
一第二拦截单元,用以拦截并代理复数个所述PCIe设备向所述系统转发的配置请求或中断信息。
2.如权利要求1所述的实现方法,其特征在于,所述第一拦截单元拦截所述系统自所述上行接口对复数个所述PCIe设备的访问的方法包括以下步骤:
步骤S1、查找对应需访问的所述PCIe设备对应的虚拟对象;
步骤S2、判断所述虚拟对象对应的所述PCIe设备的上游设备是否为所述PCIe Switch模拟器;
步骤S3、如否,则通过所述Qemu虚拟环境提供的访问机制进行访问,并退出;
步骤S4、如是,则拦截所述系统对对应的所述PCIe设备的访问;和/或
所述第二拦截单元拦截复数个所述PCIe设备向所述系统转发的所述配置请求或所述中断信息的方法包括以下步骤:
步骤T1、查找产生所述配置请求或所述中断信息的所述PCIe设备对应的虚拟对象;
步骤T2、判断所述虚拟对象对应的所述PCIe设备的上游设备是否为所述PCIe Switch模拟器;
步骤T3、如否,则通过所述Qemu虚拟环境提供的转发机制进行所述配置请求或所述中断信息的转发,并退出;
步骤T4、如是,则拦截所述PCIe设备向所述系统发送的所述配置请求或所述中断信息。
3.如权利要求1所述的实现方法,其特征在于,还提供一PCIe配置空间读写单元,用以代理系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写;
所述PCIe配置空间读写单元代理所述系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写的方法包括:
步骤A1、所述第一拦截单元拦截所述系统对对应的所述PCIe设备的访问;
步骤A2、通过对应的所述PCIe设备的上游设备的所述PCIe配置空间读写单元对所述PCIe配置空间进行读写。
4.如权利要求1所述的实现方法,其特征在于,所述复数个PCIe设备包括PCIe桥,级联的PCIe Switch以及PCIe终端设备。
5.如权利要求1所述的实现方法,其特征在于,还提供一基址寄存器空间配置单元,用以根据所述配置请求,配置对应的所述PCIe设备的基址寄存器空间;
所述基址寄存器空间配置单元配置对应的所述PCIe设备的基址寄存器空间的方法包括以下步骤:
步骤B1、所述第二拦截单元拦截所述PCIe设备向所述系统发送的所述配置请求;
步骤B2、所述基址寄存器空间配置单元根据对应的所述PCIe设备的请求向所述Qemu虚拟环境注册对应的储存区域,并维护对应的所述PCIe设备的基址寄存器空间与所述储存区域的映射关系。
6.如权利要求1所述的实现方法,其特征在于,还提供一中断转发单元,用以向所述系统转发对应的所述PCIe设备产生的所述中断信息;
所述中断转发单元向所述系统转发对应的所述PCIe设备产生的所述中断信息的方法包括以下步骤:
步骤C1、所述第二拦截单元拦截所述PCIe设备向所述系统发送的所述中断信息;
步骤C2、所述中断转发单元将所述中断信息写入所述Qemu虚拟环境的客户操作系统的中断信息处理区域。
7.一种基于Qemu虚拟环境的PCIe Switch模拟器装置,其特征在于,包括:
一上行接口,用以连接PCIe的根复合体;
复数个下行接口,用以对应连接复数个PCIe设备;
一第一拦截单元,连接所述上行接口,用以拦截并代理系统自所述上行接口对复数个所述PCIe设备的访问;
一第二拦截单元,连接复数个所述下行接口,用以拦截并代理复数个所述PCIe设备向所述系统转发的配置请求或中断信息。
8.如权利要求7所述的装置,其特征在于,还包括一PCIe配置空间读写单元,连接所述第一拦截单元,用以代理所述系统对复数个所述PCIe设备对应的所述PCIe配置空间进行读写。
9.如权利要求7所述的装置,其特征在于,还包括一基址寄存器空间配置单元,连接所述第二拦截单元,用以根据所述配置请求,配置对应的所述PCIe设备的基址寄存器空间。
10.如权利要求7所述的装置,其特征在于,还包括一中断转发单元,连接所述第二拦截单元,用以向所述系统转发对应的所述PCIe设备产生的所述中断信息。
CN202310778942.1A 2023-06-29 2023-06-29 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置 Active CN116521596B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310778942.1A CN116521596B (zh) 2023-06-29 2023-06-29 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310778942.1A CN116521596B (zh) 2023-06-29 2023-06-29 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置

Publications (2)

Publication Number Publication Date
CN116521596A true CN116521596A (zh) 2023-08-01
CN116521596B CN116521596B (zh) 2023-09-22

Family

ID=87390524

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310778942.1A Active CN116521596B (zh) 2023-06-29 2023-06-29 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置

Country Status (1)

Country Link
CN (1) CN116521596B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116909639A (zh) * 2023-09-13 2023-10-20 珠海星云智联科技有限公司 一种挂载系统、方法、集群以及存储介质
CN116932274A (zh) * 2023-09-19 2023-10-24 苏州元脑智能科技有限公司 异构计算系统和服务器系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414277A (zh) * 2008-11-06 2009-04-22 清华大学 一种基于虚拟机的按需增量恢复容灾系统及方法
CN102262557A (zh) * 2010-05-25 2011-11-30 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
CN110348216A (zh) * 2019-05-24 2019-10-18 中国科学院信息工程研究所 一种针对云计算系统虚拟设备的模糊测试方法及系统
CN113904938A (zh) * 2021-09-28 2022-01-07 北京大禹智芯科技有限公司 一种动态配置PCIe终端设备的系统和方法
US11301285B1 (en) * 2020-01-30 2022-04-12 Parallels International Gmbh Methods and systems for seamless virtual machine changing for software applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414277A (zh) * 2008-11-06 2009-04-22 清华大学 一种基于虚拟机的按需增量恢复容灾系统及方法
CN102262557A (zh) * 2010-05-25 2011-11-30 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
CN110348216A (zh) * 2019-05-24 2019-10-18 中国科学院信息工程研究所 一种针对云计算系统虚拟设备的模糊测试方法及系统
US11301285B1 (en) * 2020-01-30 2022-04-12 Parallels International Gmbh Methods and systems for seamless virtual machine changing for software applications
CN113904938A (zh) * 2021-09-28 2022-01-07 北京大禹智芯科技有限公司 一种动态配置PCIe终端设备的系统和方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116909639A (zh) * 2023-09-13 2023-10-20 珠海星云智联科技有限公司 一种挂载系统、方法、集群以及存储介质
CN116909639B (zh) * 2023-09-13 2023-12-12 珠海星云智联科技有限公司 一种挂载系统、方法、集群以及存储介质
CN116932274A (zh) * 2023-09-19 2023-10-24 苏州元脑智能科技有限公司 异构计算系统和服务器系统
CN116932274B (zh) * 2023-09-19 2024-01-09 苏州元脑智能科技有限公司 异构计算系统和服务器系统

Also Published As

Publication number Publication date
CN116521596B (zh) 2023-09-22

Similar Documents

Publication Publication Date Title
CN116521596B (zh) 一种基于Qemu虚拟环境的PCIe Switch模拟器的实现方法和装置
US10452580B2 (en) Method and system for providing remote direct memory access to virtual machines
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
EP3185128B1 (en) Gpu virtualisation
US9842075B1 (en) Presenting multiple endpoints from an enhanced PCI express endpoint device
KR101035832B1 (ko) 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템
EP1851627B1 (en) Virtual adapter destruction on a physical adapter that supports virtual adapters
US8230149B1 (en) Method and apparatus for managing a peripheral port of a computer system
US7543084B2 (en) Method for destroying virtual resources in a logically partitioned data processing system
US8250281B2 (en) Data communications through a host fibre channel adapter
CN102819447B (zh) 一种用于多根共享系统的直接i/o虚拟化方法和装置
US10212045B2 (en) Method and system for testing and analyzing management servers
TW201003526A (en) Lazy handling of end of interrupt messages in a virtualized environment
Smolyar et al. Ioctopus: Outsmarting nonuniform dma
CN113312140A (zh) 虚拟可信平台模块
KR20230025915A (ko) 시스템 및 인터럽트 처리 방법
CN106708596B (zh) 一种输入输出虚拟化资源的调整方法及处理器
CN112099916B (zh) 虚拟机数据的迁移方法、装置、计算机设备及存储介质
Miller et al. DEMOS/MP: the development of a distributed operating system
US20230221971A1 (en) Multiple port emulation
CN116881987A (zh) Pcie设备直通虚拟机的方法、装置及相关设备
CN117480498A (zh) 在运行时间为裸金属服务器动态提供PCIe器件
Neumann et al. Intel Virtualization Technology in Embedded and Communications Infrastructure Applications.
WO2022068753A1 (zh) 服务器系统、容器设置方法及装置
US11113091B2 (en) Apparatus for forwarding a mediated request to processing circuitry in response to a configuration request

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