一种PCIeSwitch仿真器的实现方法技术

技术编号:38350125 阅读:33 留言:0更新日期:2023-08-02 09:29
本发明专利技术提供一种PCIe Switch仿真器的实现方法,所述方法提供一仿真单元,所述仿真单元提供:复数个下行接口,用以对应连接复数个虚拟PCIe设备;配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的所述虚拟PCIe设备的配置空间;基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。本发明专利技术可以有利于扩展虚拟PCIe设备;能够独立进行设备管理与监控,不依赖操作系统和虚拟化平台;其他业务系统可以通过仿真器实时管理监控设备。以通过仿真器实时管理监控设备。以通过仿真器实时管理监控设备。

【技术实现步骤摘要】
一种PCIe Switch仿真器的实现方法


[0001]本专利技术属于云计算和设备虚拟化等
,尤其涉及一种PCIe Switch仿真器的实现方法。

技术介绍

[0002]虚拟化环境通常由虚拟机、虚拟设备和虚拟网络组成。虚拟机是指在虚拟化环境中运行的虚拟计算机,每个虚拟机都有自己的操作系统、应用程序和数据。虚拟设备是指虚拟化环境中使用的虚拟硬件设备,例如虚拟网络适配器、虚拟磁盘和虚拟USB控制器等等。虚拟网络是指虚拟化环境中创建的虚拟网络,用于连接不同的虚拟机和虚拟设备。
[0003]虚拟设备是虚拟化环境中不可或缺的组成部分,它们模拟物理硬件设备的行为,并向虚拟机提供类似于物理设备的功能。在虚拟化环境中,虚拟设备通常由虚拟化软件提供,例如VMware、VirtualBox、Qemu(Quick Emulator)等。虚拟设备可以模拟各种硬件设备的行为,例如虚拟网络适配器可以模拟物理网卡的行为,虚拟磁盘可以模拟物理硬盘的行为。虚拟设备在虚拟化环境中具有很多优点,例如可以提高硬件资源的利用率、方便管理和部署、提高系统可靠性等等。但是,在虚拟化环境中使用虚拟设备也会带来一些性能上的损失和复杂性增加。
[0004]虚拟设备通常与虚拟机运行在同一进程内,这样在实际应用场景中会带来一些限制:1.降低性能影响,CPU和内存等硬件资源既要为虚拟机服务,还需要为虚拟设备进行仿真运算。
[0005]2.虚拟设备不能通用,设备厂商需要为不同的虚拟化平台分别开发设备代码。
[0006]3.无法直接管理设备,只能通过虚拟化软件间接管理。
[0007]4.设备热迁移困难。虚拟机进程出现异常会丢失所有设备的状态信息因此,本领域迫切需要可以将设备功能卸载到系统之外,还能够对下游设备进行仿真管理的技术方案。

技术实现思路

[0008]现提供一种PCIe Switch仿真器的实现方法和装置,用以解决
技术介绍
中存在的至少一个技术问题。
[0009]在本专利技术的较佳实施方式中,本申请实施例提供了一种PCIe Switch仿真器的实现方法,所述方法提供一仿真单元,所述仿真单元提供:复数个下行接口,用以对应连接复数个虚拟PCIe设备;配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的所述虚拟PCIe设备的配置空间;基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。
[0010]进一步,所述配置空间读写单元提供:一配置空间模拟模块,用以于一第一储存区域模拟PCIe的配置空间;一配置空间初始化模块,用以枚举复数个所述下行接口连接的所有所述PCIe设备,并根据所述PCIe设备的信息填充所述配置空间;一配置空间查找模块,用以根据系统提供的设备信息查找所述配置空间中对应的位置。
[0011]进一步,所述配置空间模拟模块提供:一总线数组,所述总线数组提供一预定数量的总线数组元素,所述总线数组元素的下标用以映射总线编号;预定数量个设备数组,每个所述设备数组为所述总线数组的一个所述总线数组元素,所述设备数组提供所述预定数量的设备数组元素,所述设备数组元素的下标用以映射设备编号;预定数量的平方个设备信息储存区域,每个所述设备信息储存区域为所述设备数组的一个所述设备数组元素,所述设备数组元素的下标用以映射对应设备的功能编号。
[0012]进一步,所述基址寄存器读写单元提供:一基址寄存器空间模拟模块,用以于一第二储存区域模拟PCIe的基址寄存器空间数据库;一基址寄存器空间配置模块,用以于所述基址寄存器空间数据库添加,初始化以及删除设备对应的基址寄存器空间;一基址寄存器空间查找模块,用以于所述基址寄存器空间数据库中查找对应设备的所述基址寄存器空间。
[0013]进一步,所述基址寄存器空间模拟模块提供:一连续的储存空间;对应每个设备的基址寄存器空间数据结构,每个所述基址寄存器空间数据结构提供一基地址,及预定长度的基址寄存器空间数组,每个所述基址寄存器空间数据结构按照对应的地址储存于所述储存空间中。
[0014]进一步,所述基址寄存器空间配置模块添加所述基址寄存器空间的方法包括以下步骤:步骤S1,判断所述储存空间中是否存在已经添加的基址寄存器空间;步骤S2,如无,则将需要添加的基址寄存器空间对应的所述基址寄存器空间数据结构储存在所述储存空间头部,并退出;步骤S3,如有,则将待添加的所述基址寄存器空间数据结构的基地址与所述储存空间头部的所述基址寄存器空间数据结构的基地址相比较;步骤S4,如待添加的所述基址寄存器空间数据结构的基地址小于当前比较的所述基址寄存器空间数据结构的基地址,则按照两者的所述基地址的差值向所述储存空间尾部移动当前比较的所述基址寄存器空间数据结构及当前比较的所述基址寄存器空间数据结构之后的所有所述基址寄存器空间数据结构,将待添加的所述基址寄存器空间数据结构添加在当前比较的所述基址寄存器空间数据结构原来的位置,并退出;步骤S5,如待添加的所述基址寄存器空间数据结构的基地址大于当前比较的所述
基址寄存器空间数据结构的基地址,则选择朝向所述储存空间尾部方向的下一个所述基址寄存器空间数据结构的基地址,如不存在,则按照待添加的所述基址寄存器空间数据结构的基地址与当前比较的所述基址寄存器空间数据结构的基地址的差值,将待添加的所述基址寄存器空间数据结构添加在当前比较的所述基址寄存器空间数据结构之后,并退出;步骤S6,如存在,则将所述下一个基址寄存器空间数据结构的基地址与待添加的所述基址寄存器空间数据结构的基地址进行比较,并返回步骤S4。
[0015]进一步,所述基址寄存器空间配置模块初始化所述基址寄存器空间的方法包括,于所述储存空间的所有位置填入一预定字符。
[0016]进一步,所述基址寄存器空间配置模块删除所述基址寄存器空间的方法包括以下步骤:步骤D1,基址寄存器空间查找模块于所述储存空间查找到需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构;步骤D2,于需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构的所有位置填入一预定字符;步骤D3,于所述储存空间查找到需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构的后一个所述基址寄存器空间数据结构;步骤D4,将后一个所述基址寄存器空间数据结构及之后的所有所述基址寄存器空间数据结构向前移动,使后一个所述基址寄存器空间数据结构位于需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构原来的位置上。
[0017]进一步,所述基址寄存器空间查找模块查找对应设备的所述基址寄存器空间的方法包括以下步骤:步骤A1,根据需要查找的所述基址寄存器空间的访问地址、所述储存空间的首地址,以及所述储存空间的数据块分块大小,计算需要访问的数据块于所述储存空间中的位置;步骤A2,根据所述数据块的位置以及所述基址寄存器空间数据结构的所述基址寄存器空间数组的下标,确定访问所述基址寄存器空间的指针;步骤A3,利用所述指针读取所述基址寄存器空间的内容。
[0018]进一步,所述方法本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种PCIe Switch仿真器的实现方法,其特征在于,提供一仿真单元,所述仿真单元提供:复数个下行接口,用以对应连接复数个虚拟PCIe设备;配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的所述虚拟PCIe设备的配置空间;基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。2.如权利要求1所述的PCIe Switch仿真器的实现方法,其特征在于,所述配置空间读写单元提供:一配置空间模拟模块,用以于一第一储存区域模拟PCIe的配置空间;一配置空间初始化模块,用以枚举复数个所述下行接口连接的所有所述PCIe设备,并根据所述PCIe设备的信息填充所述配置空间;一配置空间查找模块,用以根据系统提供的设备信息查找所述配置空间中对应的位置。3.如权利要求2所述的PCIe Switch仿真器的实现方法,其特征在于,所述配置空间模拟模块提供:一总线数组,所述总线数组提供一预定数量的总线数组元素,所述总线数组元素的下标用以映射总线编号;预定数量个设备数组,每个所述设备数组为所述总线数组的一个所述总线数组元素,所述设备数组提供所述预定数量的设备数组元素,所述设备数组元素的下标用以映射设备编号;预定数量的平方个设备信息储存区域,每个所述设备信息储存区域为所...

【专利技术属性】
技术研发人员:王可恩
申请(专利权)人:北京大禹智芯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1