CN116501666B - 一种PCIe Switch仿真器的实现方法 - Google Patents
一种PCIe Switch仿真器的实现方法 Download PDFInfo
- Publication number
- CN116501666B CN116501666B CN202310779127.7A CN202310779127A CN116501666B CN 116501666 B CN116501666 B CN 116501666B CN 202310779127 A CN202310779127 A CN 202310779127A CN 116501666 B CN116501666 B CN 116501666B
- Authority
- CN
- China
- Prior art keywords
- base address
- address register
- space
- register space
- data structure
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004088 simulation Methods 0.000 claims abstract description 36
- 238000003491 array Methods 0.000 claims description 9
- 238000005192 partition Methods 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000012806 monitoring device Methods 0.000 abstract description 3
- 238000012544 monitoring process Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 5
- 101150090657 ADRB3 gene Proteins 0.000 description 4
- 101100004181 Schizophyllum commune (strain H4-8 / FGSC 9210) BAR3 gene Proteins 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 4
- 101150071434 BAR1 gene Proteins 0.000 description 3
- 101100378536 Ovis aries ADRB1 gene Proteins 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/105—Program control for peripheral devices where the programme performs an input/output emulation function
- G06F13/107—Terminal emulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种PCIe Switch仿真器的实现方法,所述方法提供一仿真单元,所述仿真单元提供:复数个下行接口,用以对应连接复数个虚拟PCIe设备;配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的所述虚拟PCIe设备的配置空间;基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。本发明可以有利于扩展虚拟PCIe设备;能够独立进行设备管理与监控,不依赖操作系统和虚拟化平台;其他业务系统可以通过仿真器实时管理监控设备。
Description
技术领域
本发明属于云计算和设备虚拟化等技术领域,尤其涉及一种PCIe Switch仿真器的实现方法。
背景技术
虚拟化环境通常由虚拟机、虚拟设备和虚拟网络组成。虚拟机是指在虚拟化环境中运行的虚拟计算机,每个虚拟机都有自己的操作系统、应用程序和数据。虚拟设备是指虚拟化环境中使用的虚拟硬件设备,例如虚拟网络适配器、虚拟磁盘和虚拟USB控制器等等。虚拟网络是指虚拟化环境中创建的虚拟网络,用于连接不同的虚拟机和虚拟设备。
虚拟设备是虚拟化环境中不可或缺的组成部分,它们模拟物理硬件设备的行为,并向虚拟机提供类似于物理设备的功能。在虚拟化环境中,虚拟设备通常由虚拟化软件提供,例如VMware、VirtualBox、Qemu(Quick Emulator)等。虚拟设备可以模拟各种硬件设备的行为,例如虚拟网络适配器可以模拟物理网卡的行为,虚拟磁盘可以模拟物理硬盘的行为。虚拟设备在虚拟化环境中具有很多优点,例如可以提高硬件资源的利用率、方便管理和部署、提高系统可靠性等等。但是,在虚拟化环境中使用虚拟设备也会带来一些性能上的损失和复杂性增加。
虚拟设备通常与虚拟机运行在同一进程内,这样在实际应用场景中会带来一些限制:
1.降低性能影响,CPU和内存等硬件资源既要为虚拟机服务,还需要为虚拟设备进行仿真运算。
2.虚拟设备不能通用,设备厂商需要为不同的虚拟化平台分别开发设备代码。
3.无法直接管理设备,只能通过虚拟化软件间接管理。
4.设备热迁移困难。虚拟机进程出现异常会丢失所有设备的状态信息
因此,本领域迫切需要可以将设备功能卸载到系统之外,还能够对下游设备进行仿真管理的技术方案。
发明内容
现提供一种PCIe Switch仿真器的实现方法和装置,用以解决背景技术中存在的至少一个技术问题。
在本发明的较佳实施方式中,本申请实施例提供了一种PCIe Switch仿真器的实现方法,所述方法提供一仿真单元,所述仿真单元提供:
复数个下行接口,用以对应连接复数个虚拟PCIe设备;
配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的所述虚拟PCIe设备的配置空间;
基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。
进一步,所述配置空间读写单元提供:
一配置空间模拟模块,用以于一第一储存区域模拟PCIe的配置空间;
一配置空间初始化模块,用以枚举复数个所述下行接口连接的所有所述PCIe设备,并根据所述PCIe设备的信息填充所述配置空间;
一配置空间查找模块,用以根据系统提供的设备信息查找所述配置空间中对应的位置。
进一步,所述配置空间模拟模块提供:
一总线数组,所述总线数组提供一预定数量的总线数组元素,所述总线数组元素的下标用以映射总线编号;
预定数量个设备数组,每个所述设备数组为所述总线数组的一个所述总线数组元素,所述设备数组提供所述预定数量的设备数组元素,所述设备数组元素的下标用以映射设备编号;
预定数量的平方个设备信息储存区域,每个所述设备信息储存区域为所述设备数组的一个所述设备数组元素,所述设备数组元素的下标用以映射对应设备的功能编号。
进一步,所述基址寄存器读写单元提供:
一基址寄存器空间模拟模块,用以于一第二储存区域模拟PCIe的基址寄存器空间数据库;
一基址寄存器空间配置模块,用以于所述基址寄存器空间数据库添加,初始化以及删除设备对应的基址寄存器空间;
一基址寄存器空间查找模块,用以于所述基址寄存器空间数据库中查找对应设备的所述基址寄存器空间。
进一步,所述基址寄存器空间模拟模块提供:
一连续的储存空间;
对应每个设备的基址寄存器空间数据结构,每个所述基址寄存器空间数据结构提供一基地址,及预定长度的基址寄存器空间数组,每个所述基址寄存器空间数据结构按照对应的地址储存于所述储存空间中。
进一步,所述基址寄存器空间配置模块添加所述基址寄存器空间的方法包括以下步骤:
步骤S1,判断所述储存空间中是否存在已经添加的基址寄存器空间;
步骤S2,如无,则将需要添加的基址寄存器空间对应的所述基址寄存器空间数据结构储存在所述储存空间头部,并退出;
步骤S3,如有,则将待添加的所述基址寄存器空间数据结构的基地址与所述储存空间头部的所述基址寄存器空间数据结构的基地址相比较;
步骤S4,如待添加的所述基址寄存器空间数据结构的基地址小于当前比较的所述基址寄存器空间数据结构的基地址,则按照两者的所述基地址的差值向所述储存空间尾部移动当前比较的所述基址寄存器空间数据结构及当前比较的所述基址寄存器空间数据结构之后的所有所述基址寄存器空间数据结构,将待添加的所述基址寄存器空间数据结构添加在当前比较的所述基址寄存器空间数据结构原来的位置,并退出;
步骤S5,如待添加的所述基址寄存器空间数据结构的基地址大于当前比较的所述基址寄存器空间数据结构的基地址,则选择朝向所述储存空间尾部方向的下一个所述基址寄存器空间数据结构的基地址,如不存在,则按照待添加的所述基址寄存器空间数据结构的基地址与当前比较的所述基址寄存器空间数据结构的基地址的差值,将待添加的所述基址寄存器空间数据结构添加在当前比较的所述基址寄存器空间数据结构之后,并退出;
步骤S6,如存在,则将所述下一个基址寄存器空间数据结构的基地址与待添加的所述基址寄存器空间数据结构的基地址进行比较,并返回步骤S4。
进一步,所述基址寄存器空间配置模块初始化所述基址寄存器空间的方法包括,于所述储存空间的所有位置填入一预定字符。
进一步,所述基址寄存器空间配置模块删除所述基址寄存器空间的方法包括以下步骤:
步骤D1,基址寄存器空间查找模块于所述储存空间查找到需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构;
步骤D2,于需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构的所有位置填入一预定字符;
步骤D3,于所述储存空间查找到需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构的后一个所述基址寄存器空间数据结构;
步骤D4,将后一个所述基址寄存器空间数据结构及之后的所有所述基址寄存器空间数据结构向前移动,使后一个所述基址寄存器空间数据结构位于需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构原来的位置上。
进一步,所述基址寄存器空间查找模块查找对应设备的所述基址寄存器空间的方法包括以下步骤:
步骤A1,根据需要查找的所述基址寄存器空间的访问地址、所述储存空间的首地址,以及所述储存空间的数据块分块大小,计算需要访问的数据块于所述储存空间中的位置;
步骤A2,根据所述数据块的位置以及所述基址寄存器空间数据结构的所述基址寄存器空间数组的下标,确定访问所述基址寄存器空间的指针;
步骤A3,利用所述指针读取所述基址寄存器空间的内容。
进一步,所述方法还提供一PCIe Switch模拟器,所述PCIe Switch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
一拦截单元,用以拦截系统自所述上行接口对复数个所述PCIe设备的访问。
在本发明的较佳实施方式中,本申请实施例提供了一种PCIe Switch仿真器装置,所述装置包括:
复数个下行接口,用以对应连接复数个虚拟PCIe设备;
配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的所述虚拟PCIe设备的配置空间;
基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。
本发明能够带来以下有益效果:
1、有利于系统外扩展虚拟PCIe设备;
2、能够独立进行设备管理与监控,不依赖操作系统和虚拟化平台;
3、其他业务系统可以通过仿真器实时管理监控设备。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对上述特性、技术特征、优点及其实现方式予以进一步说明。
图1示出了本发明的一个实施方式中仿真单元的模块组成图。
图2示出了本发明的一个实施方式中配置空间读写单元的模块组成图。
图3示出了本发明的一个实施方式中配置空间模拟模块的模块组成图。
图4示出了本发明的一个实施方式中基址寄存器读写单元的模块组成图。
图5示出了本发明的一个实施方式中基址寄存器空间模拟模块的模块组成图。
图6示出了本发明的一个实施方式中添加基址寄存器空间的方法的步骤流程图。
图7示出了本发明的一个实施方式中删除基址寄存器空间的方法的步骤流程图。
图8示出了本发明的一个实施方式中查找基址寄存器空间的方法的步骤流程图。
图9示出了本发明的一个实施方式中PCIe Switch模拟器的模块组成图。
图10示出了本发明的一个实施方式中PCIe Switch仿真器的结构示意图。
图11示出了本发明的一个实施方式中配置空间读写单元的结构示意图。
图12示出了本发明的一个实施方式中添加BAR0的结构示意图。
图13示出了本发明的一个实施方式中添加BAR1的结构示意图。
图14示出了本发明的一个实施方式中添加BAR3的结构示意图。
图15示出了本发明的一个实施方式中PCIe Switch仿真器装置的模块组成图。
具体实施方式
以下对本发明的各个方面进行进一步详述。
除非另有定义或说明,本文中所使用的所有专业与科学用语与本领域技术熟练人员所熟悉的意义相同。此外任何与所记载内容相似或均等的方法及材料皆可应用于本发明方法中。
以下对术语进行说明。
除非另有明确的规定和限定,本发明中所述的“或”,包含了“和”的关系。所述“和”相当于布尔逻辑运算符“AND”,所述“或”相当于布尔逻辑运算符“OR”,而“AND”是“OR”的子集。
可以理解到,尽管术语“第一”、“第二”等等可以在此用来说明不同的元件,但是这些元件不应被这些术语限制。这些术语仅仅用来将一个元件与另一个元件区分开。因此,第一元件可以被称为第二元件,而不背离本发明构思的教导。
本发明中,术语“含有”、“包含”或“包括”表示各种成分可一起应用于本发明的混合物或组合物中。因此,术语“主要由 ...组成”包含在术语“含有”、“包含”或“包括”中。
除非另有明确的规定和限定,本发明的术语“相连”、“连通”、“连接”应作广义理解,例如,可以是固定连接,也可以是通过中介媒介间相连,可以是两个元件内部的连通或者两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
例如,如果一个元件(或部件)被称为在另一个元件上、与另一个元件耦合或者与另一个元件连接,那么所述一个元件可以直接地在所述另一个元件上形成、与之耦合或者与之连接,或者在它们之间可以有一个或多个介于中间的元件。相反,如果在此使用表述“直接在......上”、“直接与......耦合”和“直接与......连接”,那么表示没有介于中间的元件。用来说明元件之间的关系的其他词语应该被类似地解释,例如“在......之间”和“直接在......之间”、“附着”和“直接附着”、“相邻”和“直接相邻”等等。
另外需要说明的是,下面描述中使用的词语“前”、“后”、“左”、“右”、“上”和“下”指的是附图中的方向。使用的词语“内”和“外”分别指的是朝向或远离特定部件几何中心的方向。可以理解到,在此,这些术语用来描述如在附图中所示的一个元件、层或区域相对于另一个元件、层或区域的关系。除了在附图中描述的取向之外,这些术语应该也包含装置的其他取向。
本发明的其它方面由于本文的公开内容,对本领域的技术人员而言是显而易见的。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。例如,在附图中的元件的厚度可以为了清楚性起见而被夸张。
本发明提供了一种PCIe Switch仿真器的实现方法,方法提供一仿真单元,如图1所示,仿真单元提供:
复数个下行接口,用以对应连接复数个虚拟PCIe设备;
配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的虚拟PCIe设备的配置空间;
基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。
上述技术方案,除了实现标准的PCIe Switch功能之外,还将被拦截后转发到PCIeSwitch仿真器的系统配置空间读写指令读写到相应的虚拟PCIe设备的配置空间,将根据拦截后转发到PCIe Switch仿真器的系统配置空间读写指令的访问地址检索基址寄存器信息。通过本发明的PCIe Switch仿真器,不但有利于系统外扩展PCIe设备,还可以使仿真器下游设备都独立于操作系统,带来巨大的灵活性和扩展性。
作为优选的实施方式,如图2所示,配置空间读写单元提供:
一配置空间模拟模块,用以于一第一储存区域模拟PCIe的配置空间;
一配置空间初始化模块,用以枚举复数个下行接口连接的所有PCIe设备,并根据PCIe设备的信息填充配置空间;
一配置空间查找模块,用以根据系统提供的设备信息查找配置空间中对应的位置。
作为优选的实施方式,如图3所示,配置空间模拟模块提供:
一总线数组,总线数组提供一预定数量的总线数组元素,总线数组元素的下标用以映射总线编号;
预定数量个设备数组,每个设备数组为总线数组的一个总线数组元素,设备数组提供预定数量的设备数组元素,设备数组元素的下标用以映射设备编号;
预定数量的平方个设备信息储存区域,每个设备信息储存区域为设备数组的一个设备数组元素,设备数组元素的下标用以映射对应设备的功能编号。
作为优选的实施方式,如图4所示,基址寄存器读写单元提供:
一基址寄存器空间模拟模块,用以于一第二储存区域模拟PCIe的基址寄存器空间数据库;
一基址寄存器空间配置模块,用以于基址寄存器空间数据库添加,初始化以及删除设备对应的基址寄存器空间;
一基址寄存器空间查找模块,用以于基址寄存器空间数据库中查找对应设备的基址寄存器空间。
作为优选的实施方式,如图5所示,基址寄存器空间模拟模块提供:
一连续的储存空间;
对应每个设备的基址寄存器空间数据结构,每个基址寄存器空间数据结构提供一基地址,及预定长度的基址寄存器空间数组,每个基址寄存器空间数据结构按照对应的地址储存于储存空间中。
作为优选的实施方式,如图6所示,基址寄存器空间配置模块添加基址寄存器空间的方法包括以下步骤:
步骤S1,判断储存空间中是否存在已经添加的基址寄存器空间;
步骤S2,如无,则将需要添加的基址寄存器空间对应的基址寄存器空间数据结构储存在储存空间头部,并退出;
步骤S3,如有,则将待添加的基址寄存器空间数据结构的基地址与储存空间头部的基址寄存器空间数据结构的基地址相比较;
步骤S4,如待添加的基址寄存器空间数据结构的基地址小于当前比较的基址寄存器空间数据结构的基地址,则按照两者的基地址的差值向储存空间尾部移动当前比较的基址寄存器空间数据结构及当前比较的基址寄存器空间数据结构之后的所有基址寄存器空间数据结构,将待添加的基址寄存器空间数据结构添加在当前比较的基址寄存器空间数据结构原来的位置,并退出;
步骤S5,如待添加的基址寄存器空间数据结构的基地址大于当前比较的基址寄存器空间数据结构的基地址,则选择朝向储存空间尾部方向的下一个基址寄存器空间数据结构的基地址,如不存在,则按照待添加的基址寄存器空间数据结构的基地址与当前比较的基址寄存器空间数据结构的基地址的差值,将待添加的基址寄存器空间数据结构添加在当前比较的基址寄存器空间数据结构之后,并退出;
步骤S6,如存在,则将下一个基址寄存器空间数据结构的基地址与待添加的基址寄存器空间数据结构的基地址进行比较,并返回步骤S4。
作为优选的实施方式,基址寄存器空间配置模块初始化基址寄存器空间的方法包括,于储存空间的所有位置填入一预定字符。
作为优选的实施方式,如图7所示,基址寄存器空间配置模块删除基址寄存器空间的方法包括以下步骤:
步骤D1,基址寄存器空间查找模块于储存空间查找到需要删除的基址寄存器空间对应的基址寄存器空间数据结构;
步骤D2,于需要删除的基址寄存器空间对应的基址寄存器空间数据结构的所有位置填入一预定字符;
步骤D3,于储存空间查找到需要删除的基址寄存器空间对应的基址寄存器空间数据结构的后一个基址寄存器空间数据结构;
步骤D4,将后一个基址寄存器空间数据结构及之后的所有基址寄存器空间数据结构向前移动,使后一个基址寄存器空间数据结构位于需要删除的基址寄存器空间对应的基址寄存器空间数据结构原来的位置上。
作为优选的实施方式,如图8所示,基址寄存器空间查找模块查找对应设备的基址寄存器空间的方法包括以下步骤:
步骤A1,根据需要查找的基址寄存器空间的访问地址、储存空间的首地址,以及储存空间的数据块分块大小,计算需要访问的数据块于储存空间中的位置;
步骤A2,根据数据块的位置以及基址寄存器空间数据结构的基址寄存器空间数组的下标,确定访问基址寄存器空间的指针;
步骤A3,利用指针读取基址寄存器空间的内容。
作为优选的实施方式,如图9所示,方法还提供一PCIe Switch模拟器,PCIeSwitch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
一拦截单元,用以拦截系统自上行接口对复数个PCIe设备的访问。
实施例1
根据本发明示例性实施例提出的PCIe Switch仿真器的实现方法,本发明的PCIeSwitch仿真器可以与PCIe Switch模拟装置配合使用。请参阅附图10,PCIe Switch模拟器连接到虚拟机PCIe总线上,运行在虚拟机进程中;操作系统对PCIe Switch模拟器下游设备的访问会被拦截并转发到PCIe Switch仿真器。PCIe Switch仿真器根据总线(BUS)号、设备号和功能号对下游设备进行管理。PCIe Switch仿真器与上游系统连接可以通过函数调用或网络调用等方式完成。
PCIe Switch仿真器下游设备都独立于操作系统,相当于把设备功能卸载(offload)到了系统之外,带来巨大的灵活性和扩展性。下游设备可以采用软件方式实现虚拟设备,也可以是硬件物理设备。
本发明的PCIe Switch仿真器除了PCIe Switch的标准功能外,还实现了配置空间读写仿真、基址寄存器(BAR)空间仿真和中断仿真等,具体如下:
1.提供PCIe Switch标准功能。
传统意义上PCIe Switch需要包含一个上游端口和多个下游端口。但上游Switch模拟器充当了上游端口,因此PCIe Switch仿真器只需要实现下游端口功能即可。每个下游端口都会为系统增加一条PCIe总线。PCIe 下游端口需要实现MSI或者MSI-X、PCIe能力(PCIExpress Cablitity)和电源管理功能,具体如下:
MSI(Message Signaled Interrupts)中断是一种用于替代传统PCIe设备中断的技术。传统PCIe设备中断是通过中断线发送中断请求的方式来通知CPU需要进行处理,这种方式可能存在中断冲突和延迟等问题。而MSI中断则是通过在总线上发送消息的方式来代替中断线发送中断请求,从而避免了传统中断方式中可能存在的冲突和延迟问题。MSI中断允许设备直接发送中断请求消息到CPU,而不需要通过芯片组或者其他中介设备。MSI-X是MSI的升级版,每个设备都可以有多个消息队列,并且每个消息队列都可以对应一个中断。
PCIe能力通常用来描述一个PCIe设备所支持的一些特定功能或者性能;PCIe能力通常以Capability结构的形式存在于PCIe设备的配置空间中,通过读取和解析这些Capability结构,操作系统和设备驱动程序可以确定设备所支持的特定功能和性能,并进行相应的配置和控制。
2.提供一仿真单元,仿真单元提供:
1)复数个下行接口,用以对应连接复数个虚拟PCIe设备;
2)配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的虚拟PCIe设备的配置空间;优选地,用于根据BUS号、设备号和功能号将配置空间读写请求路由到具体PCIe设备的配置空间。
PCIe设备的唯一标识符包括三个值:Vendor ID(厂商ID)、Device ID(设备ID)和Class ID(设备类型ID),具体如下:
•Vendor ID(厂商ID):一个16位的标识符,用于唯一标识PCIe设备的制造商。每个PCIe设备厂商都有一个唯一的Vendor ID,由PCI-SIG(PCI Special Interest Group,PCI特殊兴趣组)组织进行分配和管理。
•Device ID(设备ID):一个16位的标识符,用于唯一标识PCIe设备的型号。每个PCIe设备型号都有一个唯一的Device ID,由设备制造商进行分配和管理。
•Class ID(设备类型ID):一个8位的标识符,用于标识PCIe设备的类型。例如,Class ID为“0x01”的设备表示为存储设备,Class ID为“0x02”的设备表示为网络设备。PCI-SIG组织定义了一套标准的设备类型码,通常由设备制造商进行实现。
PCIe设备的Vendor ID和Device ID信息存储在设备的PCIe配置空间中,可以通过读取PCIe配置空间来获取这些信息。操作系统可以根据Vendor ID和Device ID来确定所连接的设备的类型和制造商,从而为其加载相应的驱动程序。
PCIe设备的Class ID信息也存储在PCIe配置空间中,可以通过读取PCIe配置空间来获取。Class ID主要用于操作系统识别和管理不同类型的PCIe设备,例如为其分配资源和加载相应的驱动程序。
在PCIe总线中,每个设备都被分配了一个唯一的三元组:BUS号、设备号和功能号,用于唯一地标识PCIe设备。
•BUS号:标识设备所连接的PCIe总线的编号,每个PCIe总线都有一个唯一的BUS号,通常从0开始递增。
•设备号:标识设备在所连接的PCIe总线上的编号,每个PCIe设备都有一个唯一的设备号,通常从0开始递增。
•功能号:标识设备上的功能模块,一个PCIe设备允许有8个功能模块。
•devfn(设备功能):由于设备号占用5bit,功能3bit。使用时经常将两者组合成一个8bit数字devfn。
总线、设备、功能号三元组通常写作B:D.F,例如“2:0.0”,表示BUS号为2,设备号为0,功能号为0。通过B:D.F这个唯一的标识,操作系统可以定位并控制PCIe总线上的每个设备和每个设备上的每个功能模块。
配置空间读写单元提供一配置空间初始化模块,用以枚举复数个下行接口连接的所有PCIe设备,并根据PCIe设备的信息填充配置空间,具体地,配置空间读写单元在初始化阶段对下游设备进行扫描枚举,填充BUS数组。
PCIe设备枚举是操作系统对PCIe总线上的设备进行扫描、识别、配置的过程,以确定设备类型和资源需求,并为设备分配资源,以便设备能够正常工作。
PCIe设备枚举过程分为两个阶段:枚举和配置。在枚举阶段,操作系统会扫描PCIe总线,识别PCIe设备并分配设备号。在配置阶段,操作系统会读取每个PCIe设备的配置空间,以确定设备的资源需求,并为每个设备分配资源。通常情况下,PCIe设备需要的资源包括I/O端口、内存地址、中断等。
配置空间读写单元提供一配置空间模拟模块,用以于一第一储存区域模拟PCIe的配置空间,配置空间模拟模块提供:
一总线数组,总线数组提供一预定数量的总线数组元素,总线数组元素的下标用以映射总线编号;
预定数量个设备数组,每个设备数组为总线数组的一个总线数组元素,设备数组提供预定数量的设备数组元素,设备数组元素的下标用以映射设备编号;
预定数量的平方个设备信息储存区域,每个设备信息储存区域为设备数组的一个设备数组元素,设备数组元素的下标用以映射对应设备的功能编号。
优选地,请参阅附图11,BUS数组包含256个BUS结构,每个BUS包含256个devfn。
配置空间读写单元提供一配置空间查找模块,用以根据系统提供的设备信息查找配置空间中对应的位置,具体地,操作系统通过BUS号、设备号和功能号查找设备并读写设备配置空间。PCIe Switch仿真器通过BUS数组和devfn数组完成对应设备的相关查找,查找方式包括快速查找和对设备树进行遍历搜索等。
3)基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息。
优选地,基址寄存器读写单元提供一基址寄存器空间模拟模块,用以于一第二储存区域模拟PCIe的基址寄存器空间数据库;基址寄存器空间模拟模块提供:
一连续的储存空间;
对应每个设备的基址寄存器空间数据结构,每个基址寄存器空间数据结构提供一基地址,及预定长度的基址寄存器空间数组,每个基址寄存器空间数据结构按照对应的地址储存于储存空间中。
优选地,根据读写访问地址检索BAR信息;每个BAR空间都包含起始地址和空间大小。PCIe设备根据自身需要设置空间大小,须保证4K字节整数倍。操作系统负责分配BAR空间起始地址,并保证系统内的BAR空间不能重叠。PCIe设备配置空间中的BAR寄存器用来记录BAR空间起始地址和其他属性。操作系统对BAR空间的读写通过(地址+偏移)的方式进行。
操作系统为每个BAR空间分配唯一地址,BAR空间长度由BAR所属的设备确定,因为BAR空间起始地址和长度都是4K的整数倍。操作系统使用读写地址的方式访问BAR空间数据。每次读写长度只能是1字节、2字节、4字节或者8字节。例如起始地址为0xfe800000、长度为16k的BAR空间,操作系统可以执行在0xfe800100地址读入4字节的操作。PCIe Switch仿真器需要根据操作地址查找对应的BAR结构。本发明采用hash、顺序查找或二分查找的方式进行快速查找。hash结构由一个数组和一个基地址组成,初始化阶段数组的所有元素都是NULL指针,不指向任何BAR空间。
优选地,基址寄存器读写单元提供一基址寄存器空间配置模块,用以于基址寄存器空间数据库添加,初始化以及删除设备对应的基址寄存器空间。
添加BAR空间:
基址寄存器空间配置模块添加基址寄存器空间的方法包括以下步骤:
步骤S1,判断储存空间中是否存在已经添加的基址寄存器空间;
步骤S2,如无,则将需要添加的基址寄存器空间对应的基址寄存器空间数据结构储存在储存空间头部,并退出;
步骤S3,如有,则将待添加的基址寄存器空间数据结构的基地址与储存空间头部的基址寄存器空间数据结构的基地址相比较;
步骤S4,如待添加的基址寄存器空间数据结构的基地址小于当前比较的基址寄存器空间数据结构的基地址,则按照两者的基地址的差值向储存空间尾部移动当前比较的基址寄存器空间数据结构及当前比较的基址寄存器空间数据结构之后的所有基址寄存器空间数据结构,将待添加的基址寄存器空间数据结构添加在当前比较的基址寄存器空间数据结构原来的位置,并退出;
步骤S5,如待添加的基址寄存器空间数据结构的基地址大于当前比较的基址寄存器空间数据结构的基地址,则选择朝向储存空间尾部方向的下一个基址寄存器空间数据结构的基地址,如不存在,则按照待添加的基址寄存器空间数据结构的基地址与当前比较的基址寄存器空间数据结构的基地址的差值,将待添加的基址寄存器空间数据结构添加在当前比较的基址寄存器空间数据结构之后,并退出;
步骤S6,如存在,则将下一个基址寄存器空间数据结构的基地址与待添加的基址寄存器空间数据结构的基地址进行比较,并返回步骤S4。
作为演示顺序添加一下三个BAR空间:
1.BAR0: 起始地址 0xfe800000, 长度 16K
2.BAR1: 起始地址 0xfe900000, 长度 16K
3.BAR3: 起始地址 0xfe500000, 长度 16K
每个 BAR空间长度为16K,占用数组元素个数为16K/4K=4个。
请参阅附图12-14,添加BAR0、BAR1和BAR3示意图。BAR3起始地址小于当前地址,需要BAR0和BAR1移动到合适位置之后,然后再添加BAR3。
初始化BAR空间:
优选地,基址寄存器空间配置模块初始化基址寄存器空间的方法包括,于储存空间的所有位置填入一预定字符。
删除BAR空间:
优选地,基址寄存器空间配置模块删除基址寄存器空间时可以将对应的数组元素赋值为NULL,后续读取BAR空间时读取到NULL则表示对应的BAR空间不存在;BAR本身使用资源由设备自己释放。包括以下步骤:
步骤D1,基址寄存器空间查找模块于储存空间查找到需要删除的基址寄存器空间对应的基址寄存器空间数据结构;
步骤D2,于需要删除的基址寄存器空间对应的基址寄存器空间数据结构的所有位置填入一预定字符;
步骤D3,于储存空间查找到需要删除的基址寄存器空间对应的基址寄存器空间数据结构的后一个基址寄存器空间数据结构;
步骤D4,将后一个基址寄存器空间数据结构及之后的所有基址寄存器空间数据结构向前移动,使后一个基址寄存器空间数据结构位于需要删除的基址寄存器空间对应的基址寄存器空间数据结构原来的位置上。
查找BAR空间:
优选地,基址寄存器读写单元提供一基址寄存器空间查找模块,用以于基址寄存器空间数据库中查找对应设备的基址寄存器空间。基址寄存器空间查找模块查找对应设备的基址寄存器空间的方法包括以下步骤:
步骤A1,计算位置索引:根据需要查找的基址寄存器空间的访问地址、储存空间的首地址,以及储存空间的数据块分块大小,计算需要访问的数据块于储存空间中的位置;index = (访问地址- Base) / 4K。
步骤A2,根据索引查找数组中对应BAR空间指针,具体地,根据数据块的位置以及基址寄存器空间数据结构的基址寄存器空间数组的下标,确定访问基址寄存器空间的指针;
步骤A3,利用指针读取基址寄存器空间的内容。根据BAR指针对BAR空间进行读写操作,如果指针指向的地址储存的内容为NULL表明BAR空间不存在。
3.提供一PCIe Switch模拟器,PCIe Switch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
一拦截单元,用以拦截系统自上行接口对复数个PCIe设备的访问。
4.提供一中断仿真单元,用于直接PCIe Switch模拟器提供的中断操作。PCIeSwitch仿真器需要调用模拟器的中断功能或可以通过直接调用虚拟化软件如Qemu完成来完成MSI/MSI-X中断的相应功能。
实施例2
如图15所示,作为示例的PCIe Switch仿真器装置,包括:
一仿真单元,仿真单元包括:
复数个下行接口,用以对应连接复数个虚拟PCIe设备;
配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的虚拟PCIe设备的配置空间;
基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息;
一PCIe Switch模拟器,PCIe Switch模拟器包括:
一上行接口,用以连接PCIe的根复合体;
一拦截单元,用以拦截系统自上行接口对复数个PCIe设备的访问。
综上,如上述所示的本发明的具体实施方式获得了如下效果:
有利于扩展虚拟PCIe设备,尤其是有利于系统向外扩展PCI设备扩展设备;
能够独立进行设备管理与监控,不依赖操作系统和虚拟化平台;
其他业务系统可以通过仿真器实时管理监控设备。
基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
在本发明提及的所有文献都在本申请中引用作为参考,就如同每一篇文献被单独引用作为参考那样。此外应理解,在阅读了本发明的上述内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
Claims (6)
1.一种PCIe Switch仿真器的实现方法,其特征在于,提供一仿真单元,所述仿真单元提供:
复数个下行接口,用以对应连接复数个虚拟PCIe设备;
配置空间读写单元,用以根据一被拦截的系统配置空间读写指令,读写对应的所述虚拟PCIe设备的配置空间;
基址寄存器读写单元,用以根据一被拦截的系统读写指令的访问地址检索基址寄存器信息;
其中,所述配置空间读写单元提供:
一配置空间模拟模块,用以于一第一储存区域模拟PCIe的配置空间;
一配置空间初始化模块,用以枚举复数个所述下行接口连接的所有所述PCIe设备,并根据所述PCIe设备的信息填充所述配置空间;
一配置空间查找模块,用以根据系统提供的设备信息查找所述配置空间中对应的位置;
所述基址寄存器读写单元提供:
一基址寄存器空间模拟模块,用以于一第二储存区域模拟PCIe的基址寄存器空间数据库;
一基址寄存器空间配置模块,用以于所述基址寄存器空间数据库添加,初始化以及删除设备对应的基址寄存器空间;
一基址寄存器空间查找模块,用以于所述基址寄存器空间数据库中查找对应设备的所述基址寄存器空间;
其中,所述配置空间模拟模块提供:
一总线数组,所述总线数组提供一预定数量的总线数组元素,所述总线数组元素的下标用以映射总线编号;
预定数量个设备数组,每个所述设备数组为所述总线数组的一个所述总线数组元素,所述设备数组提供所述预定数量的设备数组元素,所述设备数组元素的下标用以映射设备编号;
预定数量的平方个设备信息储存区域,每个所述设备信息储存区域为所述设备数组的一个所述设备数组元素;
所述基址寄存器空间模拟模块提供:
一连续的储存空间;
对应每个设备的基址寄存器空间数据结构,每个所述基址寄存器空间数据结构提供一基地址,及预定长度的基址寄存器空间数组,每个所述基址寄存器空间数据结构按照对应的地址储存于所述储存空间中。
2.如权利要求1所述的PCIe Switch仿真器的实现方法,其特征在于,所述基址寄存器空间配置模块添加所述基址寄存器空间的方法包括以下步骤:
步骤S1,判断所述储存空间中是否存在已经添加的基址寄存器空间;
步骤S2,如无,则将需要添加的基址寄存器空间对应的所述基址寄存器空间数据结构储存在所述储存空间头部,并退出;
步骤S3,如有,则将待添加的所述基址寄存器空间数据结构的基地址与所述储存空间头部的所述基址寄存器空间数据结构的基地址相比较;
步骤S4,如待添加的所述基址寄存器空间数据结构的基地址小于当前比较的所述基址寄存器空间数据结构的基地址,则按照两者的所述基地址的差值向所述储存空间尾部移动当前比较的所述基址寄存器空间数据结构及当前比较的所述基址寄存器空间数据结构之后的所有所述基址寄存器空间数据结构,将待添加的所述基址寄存器空间数据结构添加在当前比较的所述基址寄存器空间数据结构原来的位置,并退出;
步骤S5,如待添加的所述基址寄存器空间数据结构的基地址大于当前比较的所述基址寄存器空间数据结构的基地址,则选择朝向所述储存空间尾部方向的下一个所述基址寄存器空间数据结构的基地址,如不存在,则按照待添加的所述基址寄存器空间数据结构的基地址与当前比较的所述基址寄存器空间数据结构的基地址的差值,将待添加的所述基址寄存器空间数据结构添加在当前比较的所述基址寄存器空间数据结构之后,并退出;
步骤S6,如存在,则将下一个所述基址寄存器空间数据结构的基地址与待添加的所述基址寄存器空间数据结构的基地址进行比较,并返回步骤S4。
3.如权利要求1所述的PCIe Switch仿真器的实现方法,其特征在于,所述基址寄存器空间配置模块初始化所述基址寄存器空间的方法包括,于所述储存空间的所有位置填入一预定字符。
4.如权利要求1所述的PCIe Switch仿真器的实现方法,其特征在于,所述基址寄存器空间配置模块删除所述基址寄存器空间的方法包括以下步骤:
步骤D1,基址寄存器空间查找模块于所述储存空间查找到需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构;
步骤D2,于需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构的所有位置填入一预定字符;
步骤D3,于所述储存空间查找到需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构的后一个所述基址寄存器空间数据结构;
步骤D4,将后一个所述基址寄存器空间数据结构及之后的所有所述基址寄存器空间数据结构向前移动,使后一个所述基址寄存器空间数据结构位于需要删除的所述基址寄存器空间对应的所述基址寄存器空间数据结构原来的位置上。
5.如权利要求1所述的PCIe Switch仿真器的实现方法,其特征在于,所述基址寄存器空间查找模块查找对应设备的所述基址寄存器空间的方法包括以下步骤:
步骤A1,根据需要查找的所述基址寄存器空间的访问地址、所述储存空间的首地址,以及所述储存空间的数据块分块大小,计算需要访问的数据块于所述储存空间中的位置;
步骤A2,根据所述数据块的位置以及所述基址寄存器空间数据结构的所述基址寄存器空间数组的下标,确定访问所述基址寄存器空间的指针;
步骤A3,利用所述指针读取所述基址寄存器空间的内容。
6.如权利要求1所述的PCIe Switch仿真器的实现方法,其特征在于,还提供一PCIeSwitch模拟器,所述PCIe Switch模拟器提供:
一上行接口,用以连接PCIe的根复合体;
一拦截单元,用以拦截系统自所述上行接口对复数个所述PCIe设备的访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310779127.7A CN116501666B (zh) | 2023-06-29 | 2023-06-29 | 一种PCIe Switch仿真器的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310779127.7A CN116501666B (zh) | 2023-06-29 | 2023-06-29 | 一种PCIe Switch仿真器的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116501666A CN116501666A (zh) | 2023-07-28 |
CN116501666B true CN116501666B (zh) | 2023-09-01 |
Family
ID=87321723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310779127.7A Active CN116501666B (zh) | 2023-06-29 | 2023-06-29 | 一种PCIe Switch仿真器的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501666B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472838B (zh) * | 2023-12-28 | 2024-03-15 | 苏州元脑智能科技有限公司 | 高速串行计算机扩展总线设备识别方法、装置及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819447A (zh) * | 2012-05-29 | 2012-12-12 | 中国科学院计算技术研究所 | 一种用于多根共享系统的直接i/o 虚拟化方法和装置 |
CN103077148A (zh) * | 2013-01-04 | 2013-05-01 | 浪潮(北京)电子信息产业有限公司 | 一种基于pcie的主机通讯方法和主机 |
US10394747B1 (en) * | 2017-05-31 | 2019-08-27 | Mellanox Technologies Ltd. | Implementing hierarchical PCI express switch topology over coherent mesh interconnect |
CN111092773A (zh) * | 2019-12-25 | 2020-05-01 | 成都九芯微科技有限公司 | 一种支持虚拟交换的pcie交换芯片端口配置系统和方法 |
CN113904938A (zh) * | 2021-09-28 | 2022-01-07 | 北京大禹智芯科技有限公司 | 一种动态配置PCIe终端设备的系统和方法 |
CN116302317A (zh) * | 2023-01-10 | 2023-06-23 | 麒麟软件有限公司 | 虚拟机下FreeRTOS访问PCIe设备的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230115629A1 (en) * | 2021-10-07 | 2023-04-13 | Samsung Electronics Co., Ltd. | SYSTEM AND METHOD FOR VALIDATING A POWER CYCLE FOR AN EMULATED PCIe BASED STORAGE DEVICE |
-
2023
- 2023-06-29 CN CN202310779127.7A patent/CN116501666B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819447A (zh) * | 2012-05-29 | 2012-12-12 | 中国科学院计算技术研究所 | 一种用于多根共享系统的直接i/o 虚拟化方法和装置 |
CN103077148A (zh) * | 2013-01-04 | 2013-05-01 | 浪潮(北京)电子信息产业有限公司 | 一种基于pcie的主机通讯方法和主机 |
US10394747B1 (en) * | 2017-05-31 | 2019-08-27 | Mellanox Technologies Ltd. | Implementing hierarchical PCI express switch topology over coherent mesh interconnect |
CN111092773A (zh) * | 2019-12-25 | 2020-05-01 | 成都九芯微科技有限公司 | 一种支持虚拟交换的pcie交换芯片端口配置系统和方法 |
CN113904938A (zh) * | 2021-09-28 | 2022-01-07 | 北京大禹智芯科技有限公司 | 一种动态配置PCIe终端设备的系统和方法 |
CN116302317A (zh) * | 2023-01-10 | 2023-06-23 | 麒麟软件有限公司 | 虚拟机下FreeRTOS访问PCIe设备的方法 |
Non-Patent Citations (1)
Title |
---|
PCIe协议仿真平台的设计与实现;麦刘阳;中国优秀硕士学位论文全文数据库 信息科技辑;第4-5章 * |
Also Published As
Publication number | Publication date |
---|---|
CN116501666A (zh) | 2023-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114816664B (zh) | Gpu虚拟化 | |
CN107209681B (zh) | 一种存储设备访问方法、装置和系统 | |
CN103282881B (zh) | 通过虚拟化直接共享智能设备 | |
CN107783913B (zh) | 一种应用于计算机的资源访问方法和计算机 | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US7587531B2 (en) | Multiple logical input/output subsystem facility | |
US6996638B2 (en) | Method, system and program products for enhancing input/output processing for operating system images of a computing environment | |
CN102819447B (zh) | 一种用于多根共享系统的直接i/o虚拟化方法和装置 | |
US20180335971A1 (en) | Configurable virtualized non-volatile memory express storage | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
CN110659245A (zh) | 具有可编程多上下文加速器电路的系统 | |
US5062042A (en) | System for managing data which is accessible by file address or disk address via a disk track map | |
US20210224210A1 (en) | Information processing method, physical machine, and pcie device | |
JPH0689253A (ja) | 汎用のオペレーティング・システム・インターフェースを有するデバイス・ドライバを含むデータ処理システム | |
JP2013515983A (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
EP4220394A1 (en) | Chip system, method for processing virtual interrupt, and corresponding device | |
CN116501666B (zh) | 一种PCIe Switch仿真器的实现方法 | |
US5392409A (en) | I/O execution method for a virtual machine system and system therefor | |
CN114417373A (zh) | 一种NVMe-oF用户态客户端的数据访问方法和装置 | |
CN113032103A (zh) | 基于高速网卡sr-iov功能的vf资源动态调度方法 | |
CN111651269A (zh) | 实现设备虚拟化的方法、装置及计算机可读存储介质 | |
CN112925606A (zh) | 一种内存管理方法、装置及设备 | |
CN116954830B (zh) | jailhouse下使虚拟机实现msi/x中断的方法 | |
CN116719613B (zh) | 基于虚拟监控器实现Linux下PCIe物理设备隔离的方法 | |
CN111666036B (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 |