CN114090489B - 基于virtio的IO扩展方法及装置 - Google Patents
基于virtio的IO扩展方法及装置 Download PDFInfo
- Publication number
- CN114090489B CN114090489B CN202111347213.8A CN202111347213A CN114090489B CN 114090489 B CN114090489 B CN 114090489B CN 202111347213 A CN202111347213 A CN 202111347213A CN 114090489 B CN114090489 B CN 114090489B
- Authority
- CN
- China
- Prior art keywords
- subroutine
- virtualization
- subroutine function
- memory
- function
- 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 45
- 230000006870 function Effects 0.000 claims abstract description 161
- 238000004590 computer program Methods 0.000 claims description 21
- 238000004140 cleaning Methods 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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
-
- 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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种基于virtio的IO扩展方法及装置,方法包括:IO虚拟化框架设备前端检测特征位是否支持子程序函数,查询当前IO虚拟化框架设备扩展的子程序函数的数量;若当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用特定编号向后端发送查询配置的命令,子程序函数引擎接返回对应编号的配置所占用的内存大小,IO虚拟化框架设备前端申请对应大小的内存并发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;本申请能够灵活、准确得实现对IO的扩展。
Description
技术领域
本申请涉及硬件接口领域,具体涉及一种基于virtio的IO扩展方法及装置。
背景技术
virtio是一种IO半虚拟化技术,不同类型的virtio设备所使用的virtio接口必须按照标准规范进行设计,这种IO方式统一了设备的前后端交互方式。
对于采用PCIe总线实现的virtio设备,这要求virtio设备所在的VF必须按照统一的标准在PCIeSR-IOV上布局virtqueue、feature bits、config space等,这导致了厂商难以对PCIe设备进行IO扩展。比如virtio-net设备所在的VF,其SR-IOV只能定义规范中要求的virtio资源,这样后端就只能提供net engine的功能,如果后端提供了非virtio接口的功能,则只能在其他VF中实现,而无法在已经提供virtio功能的VF上进行扩展。
发明内容
针对现有技术中的问题,本申请提供一种基于virtio的IO扩展方法及装置,能够灵活、准确得实现对IO的扩展。
为了解决上述问题中的至少一个,本申请提供以下技术方案:
第一方面,本申请提供一种基于virtio的IO扩展方法,包括:
IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrl vq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrl vq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrl vq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIe SR-IOV方式与后端交换数据;
IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrl vq通知子程序函数引擎删除设备。
进一步地,所述特定编号为子程序函数的数量减一后的数值至零数值。
进一步地,所述IO虚拟化框架设备为包含有ctrl vq的virtio-net、virtio-block、virtio-gpu中的至少一种。
第二方面,本申请提供一种基于virtio的IO扩展装置,包括:
检测模块,用于IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrl vq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
初始化模块,用于若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrl vq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrl vq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
数据交换模块,用于IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIe SR-IOV方式与后端交换数据;
清理模块,用于IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrl vq通知子程序函数引擎删除设备。
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的基于virtio的IO扩展方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的基于virtio的IO扩展方法的步骤。
第五方面,本申请提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现所述的基于virtio的IO扩展方法的步骤。
由上述技术方案可知,本申请提供一种基于virtio的IO扩展方法及装置,通过复用原有virio设备的ctrl vq和扩展feature bits实现.原有的virtio设备作为mainfunction,扩展的IO根据提供的不同类型的功能分成若干sub function。virtio设备通过ctrl vq获取到sub function engine的设备ID以及IO配置,前端根据获取到的ID创建subfunction对应的虚拟设备,并根据虚拟设备的ID匹配对应的前端驱动,前端驱动根据ctrlvq获取的设备IO配置对sub function进行使能,从而能够灵活、准确得实现对IO的扩展。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中的基于virtio的IO扩展方法的流程示意图;
图2为本申请实施例中的基于virtio的IO扩展装置的结构图之一;
图3为本申请实施例中的基于virtio的IO扩展装置的结构图之二;
图4为本申请实施例中的基于virtio的IO扩展装置的结构图之三;
图5为本申请实施例中的基于virtio的IO扩展装置的结构图之四;
图6为本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
考虑到现有技术中难以对PCIe设备进行IO扩展的问题,本申请提供一种基于virtio的IO扩展方法及装置,通过复用原有virio设备的ctrl vq和扩展feature bits实现.原有的virtio设备作为main function,扩展的IO根据提供的不同类型的功能分成若干sub function。virtio设备通过ctrl vq获取到sub function engine的设备ID以及IO配置,前端根据获取到的ID创建sub function对应的虚拟设备,并根据虚拟设备的ID匹配对应的前端驱动,前端驱动根据ctrl vq获取的设备IO配置对sub function进行使能,从而能够灵活、准确得。
为了能够灵活、准确得实现对IO的扩展,本申请提供一种基于virtio的IO扩展方法的实施例,参见图1,所述基于virtio的IO扩展方法具体包含有如下内容:
步骤S101:IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrl vq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
步骤S102:若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrl vq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrl vq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
步骤S103:IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIe SR-IOV方式与后端交换数据;
步骤S104:IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrl vq通知子程序函数引擎删除设备。
从上述描述可知,本申请实施例提供的基于virtio的IO扩展方法,能够通过复用原有virio设备的ctrl vq和扩展feature bits实现.原有的virtio设备作为mainfunction,扩展的IO根据提供的不同类型的功能分成若干sub function。virtio设备通过ctrl vq获取到sub function engine的设备ID以及IO配置,前端根据获取到的ID创建subfunction对应的虚拟设备,并根据虚拟设备的ID匹配对应的前端驱动,前端驱动根据ctrlvq获取的设备IO配置对sub function进行使能,从而能够灵活、准确得。
在本申请的基于virtio的IO扩展方法的一实施例中,所述特定编号为子程序函数的数量减一后的数值至零数值。步骤S201:
在本申请的基于virtio的IO扩展方法的一实施例中,所述IO虚拟化框架设备为包含有ctrl vq的virtio-net、virtio-block、virtio-gpu中的至少一种。
为了能够灵活、准确得实现对IO的扩展,本申请提供一种用于实现所述基于virtio的IO扩展方法的全部或部分内容的基于virtio的IO扩展装置的实施例,参见图2,所述基于virtio的IO扩展装置具体包含有如下内容:
检测模块10,用于IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrl vq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
初始化模块20,用于若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrl vq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrl vq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
数据交换模块30,用于IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIe SR-IOV方式与后端交换数据;
清理模块40,用于IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrl vq通知子程序函数引擎删除设备。
从上述描述可知,本申请实施例提供的基于virtio的IO扩展装置,能够通过复用原有virio设备的ctrl vq和扩展feature bits实现.原有的virtio设备作为mainfunction,扩展的IO根据提供的不同类型的功能分成若干sub function。virtio设备通过ctrl vq获取到sub function engine的设备ID以及IO配置,前端根据获取到的ID创建subfunction对应的虚拟设备,并根据虚拟设备的ID匹配对应的前端驱动,前端驱动根据ctrlvq获取的设备IO配置对sub function进行使能,从而能够灵活、准确得。
为了更进一步说明本方案,本申请还提供一种应用上述基于virtio的IO扩展装置实现基于virtio的IO扩展方法的具体应用实例,参见图3至图5,具体包含有如下内容:
步骤1.virtiodeivce(即IO虚拟化框架设备)前端检测feature bits(即特征位)是否支持sub function(即子程序函数),如果不支持则处理结束,否则通过ctrl vq查询当前virtio设备扩展的sub function数量;如果数量大于0则执行步骤2,否则停止.
步骤2.virtiodeivce前端使用一个0到(sub function数量–1)之间的编号通过ctrl vq向后端发送查询配置的命令,sub function engine接收到命令后返回对应编号的配置所占用的内存大小.之后virtiodeivce前端申请对应大小的内存并通过ctrl vq发送添加sub function的命令,sub function engine添加sub function成功后填充配置信息;virtiodeivce前端根据配置信息创建辅助设备,设备创建后匹配sub function前端完成初始化.
步骤3.virtiodeivce前端按照virtio接口和后端交换数据,sub function前端按照PCIe SR-IOV方式和后端交换数据.
步骤4.virtiodeivce前端触发sub function前端进行设备清理,之后释放申请的配置内存,最后通过ctrl vq通知sub function engine删除设备.
上述步骤中的virtio device可以是virtio-net,virtio-block,virtio-gpu等包含ctrl vq的virito设备,如果virito接口标准中没有定义ctrl vq,则需要对原有的virtio设备增加自定义ctrl vq。
从硬件层面来说,为了能够灵活、准确得实现对IO的扩展,本申请提供一种用于实现所述基于virtio的IO扩展方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现基于virtio的IO扩展装置与核心业务系统、用户终端以及相关数据库等相关设备之间的信息传输;该逻辑控制器可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该逻辑控制器可以参照实施例中的基于virtio的IO扩展方法的实施例,以及基于virtio的IO扩展装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
可以理解的是,所述用户终端可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,基于virtio的IO扩展方法的部分可以在如上述内容所述的电子设备侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。
上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
图6为本申请实施例的电子设备9600的系统构成的示意框图。如图6所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图6是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,基于virtio的IO扩展方法功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:
步骤S101:IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrl vq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
步骤S102:若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrl vq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrl vq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
步骤S103:IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIe SR-IOV方式与后端交换数据;
步骤S104:IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrl vq通知子程序函数引擎删除设备。
从上述描述可知,本申请实施例提供的电子设备,通过复用原有virio设备的ctrlvq和扩展feature bits实现.原有的virtio设备作为main function,扩展的IO根据提供的不同类型的功能分成若干sub function。virtio设备通过ctrl vq获取到sub functionengine的设备ID以及IO配置,前端根据获取到的ID创建sub function对应的虚拟设备,并根据虚拟设备的ID匹配对应的前端驱动,前端驱动根据ctrl vq获取的设备IO配置对subfunction进行使能,从而能够灵活、准确得。
在另一个实施方式中,基于virtio的IO扩展装置可以与中央处理器9100分开配置,例如可以将基于virtio的IO扩展装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现基于virtio的IO扩展方法功能。
如图6所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图6中所示的所有部件;此外,电子设备9600还可以包括图6中没有示出的部件,可以参考现有技术。
如图6所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的执行主体为服务器或客户端的基于virtio的IO扩展方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的基于virtio的IO扩展方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤S101:IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrl vq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
步骤S102:若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrl vq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrl vq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
步骤S103:IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIe SR-IOV方式与后端交换数据;
步骤S104:IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrl vq通知子程序函数引擎删除设备。
从上述描述可知,本申请实施例提供的计算机可读存储介质,通过复用原有virio设备的ctrl vq和扩展feature bits实现.原有的virtio设备作为main function,扩展的IO根据提供的不同类型的功能分成若干sub function。virtio设备通过ctrl vq获取到subfunction engine的设备ID以及IO配置,前端根据获取到的ID创建sub function对应的虚拟设备,并根据虚拟设备的ID匹配对应的前端驱动,前端驱动根据ctrl vq获取的设备IO配置对sub function进行使能,从而能够灵活、准确得。
本申请的实施例还提供能够实现上述实施例中的执行主体为服务器或客户端的基于virtio的IO扩展方法中全部步骤的一种计算机程序产品,该计算机程序/指令被处理器执行时实现所述的基于virtio的IO扩展方法的步骤,例如,所述计算机程序/指令实现下述步骤:
步骤S101:IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrl vq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
步骤S102:若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrl vq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrl vq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
步骤S103:IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIe SR-IOV方式与后端交换数据;
步骤S104:IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrl vq通知子程序函数引擎删除设备。
从上述描述可知,本申请实施例提供的计算机程序产品,通过复用原有virio设备的ctrl vq和扩展feature bits实现.原有的virtio设备作为main function,扩展的IO根据提供的不同类型的功能分成若干sub function。virtio设备通过ctrl vq获取到subfunction engine的设备ID以及IO配置,前端根据获取到的ID创建sub function对应的虚拟设备,并根据虚拟设备的ID匹配对应的前端驱动,前端驱动根据ctrl vq获取的设备IO配置对sub function进行使能,从而能够灵活、准确得。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种基于virtio的IO扩展方法,其特征在于,所述方法包括:
IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrlvq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrlvq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrlvq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIeSR-IOV方式与后端交换数据;
IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrlvq通知子程序函数引擎删除设备。
2.根据权利要求1所述的基于virtio的IO扩展方法,其特征在于,所述特定编号为子程序函数的数量减一后的数值至零数值。
3.根据权利要求1所述的基于virtio的IO扩展方法,其特征在于,所述IO虚拟化框架设备为包含有ctrlvq的virtio-net、virtio-block、virtio-gpu中的至少一种。
4.一种基于virtio的IO扩展装置,其特征在于,包括:
检测模块,用于IO虚拟化框架设备前端检测特征位是否支持子程序函数,如果不支持,则处理结束,否则通过ctrlvq查询当前IO虚拟化框架设备扩展的子程序函数的数量;
初始化模块,用于若判定当前IO虚拟化框架设备扩展的子程序函数的数量大于0,则IO虚拟化框架设备前端使用一个特定编号通过ctrlvq向后端发送查询配置的命令,子程序函数引擎接收到命令后返回对应编号的配置所占用的内存大小,之后IO虚拟化框架设备前端申请对应大小的内存并通过ctrlvq发送添加子程序函数的命令,子程序函数引擎添加子程序函数成功后填充配置信息,IO虚拟化框架设备前端根据配置信息创建辅助设备,辅助设备创建后匹配子程序函数以完成前端初始化;
数据交换模块,用于IO虚拟化框架设备前端按照IO虚拟化框架接口与后端交换数据,子程序函数前端按照PCIeSR-IOV方式与后端交换数据;
清理模块,用于IO虚拟化框架设备前端触发子程序函数,进行设备清理之后释放申请的配置内存,然后通过ctrlvq通知子程序函数引擎删除设备。
5.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至3任一项所述的基于virtio的IO扩展方法的步骤。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至3任一项所述的基于virtio的IO扩展方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111347213.8A CN114090489B (zh) | 2021-11-15 | 2021-11-15 | 基于virtio的IO扩展方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111347213.8A CN114090489B (zh) | 2021-11-15 | 2021-11-15 | 基于virtio的IO扩展方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114090489A CN114090489A (zh) | 2022-02-25 |
CN114090489B true CN114090489B (zh) | 2024-04-12 |
Family
ID=80300631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111347213.8A Active CN114090489B (zh) | 2021-11-15 | 2021-11-15 | 基于virtio的IO扩展方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090489B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014031430A1 (en) * | 2012-08-21 | 2014-02-27 | Advanced Micro Devices, Inc. | Systems and methods for sharing devices in a virtualization environment |
CN112199162A (zh) * | 2020-10-16 | 2021-01-08 | 济南浪潮数据技术有限公司 | 基于虚拟化磁盘双活容灾的磁盘快照方法、装置及介质 |
WO2021072880A1 (zh) * | 2019-10-15 | 2021-04-22 | 平安科技(深圳)有限公司 | 虚拟机内部快照异步创建方法、装置、系统及存储介质 |
CN113312155A (zh) * | 2021-07-29 | 2021-08-27 | 阿里云计算有限公司 | 虚拟机创建方法、装置、设备、系统及计算机程序产品 |
CN113467970A (zh) * | 2021-06-25 | 2021-10-01 | 阿里巴巴新加坡控股有限公司 | 云计算系统中的跨安全区域的资源访问方法及电子设备 |
-
2021
- 2021-11-15 CN CN202111347213.8A patent/CN114090489B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014031430A1 (en) * | 2012-08-21 | 2014-02-27 | Advanced Micro Devices, Inc. | Systems and methods for sharing devices in a virtualization environment |
WO2021072880A1 (zh) * | 2019-10-15 | 2021-04-22 | 平安科技(深圳)有限公司 | 虚拟机内部快照异步创建方法、装置、系统及存储介质 |
CN112199162A (zh) * | 2020-10-16 | 2021-01-08 | 济南浪潮数据技术有限公司 | 基于虚拟化磁盘双活容灾的磁盘快照方法、装置及介质 |
CN113467970A (zh) * | 2021-06-25 | 2021-10-01 | 阿里巴巴新加坡控股有限公司 | 云计算系统中的跨安全区域的资源访问方法及电子设备 |
CN113312155A (zh) * | 2021-07-29 | 2021-08-27 | 阿里云计算有限公司 | 虚拟机创建方法、装置、设备、系统及计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN114090489A (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111031058A (zh) | 基于WebSocket的分布式服务器集群交互方法及装置 | |
CN111786885A (zh) | 分布式全链路灰度路由方法及装置 | |
CN111679790B (zh) | 远程软件开发存储空间分配方法及装置 | |
CN111445331A (zh) | 交易撮合方法及装置 | |
CN112689012A (zh) | 跨网络的代理通讯方法及装置 | |
CN101350993A (zh) | 用于在移动通信终端中选择性加载的设备和方法 | |
CN112953908A (zh) | 网络隔离配置方法、装置及系统 | |
CN111367561B (zh) | 软件程序远程开发方法及装置 | |
CN111930624B (zh) | 测试链路报文数据处理方法及装置 | |
CN112559158A (zh) | 微服务定时任务调度方法及装置 | |
CN114090489B (zh) | 基于virtio的IO扩展方法及装置 | |
CN106484417A (zh) | 一种应用程序列表展示方法及装置 | |
CN114416212A (zh) | 移动端应用程序数据资源处理方法及装置 | |
CN113050936B (zh) | 基于集成开发环境的前端数据处理方法及装置 | |
CN115099930A (zh) | 金融业务数据处理方法及装置 | |
CN114374614A (zh) | 网络拓扑配置方法及装置 | |
CN111767118A (zh) | 基于分布式文件系统的容器存储空间处理方法及装置 | |
CN112669123A (zh) | 车主平台的订单管理方法及装置 | |
CN112102058A (zh) | 管会系统参数配置方法及装置 | |
CN113377385A (zh) | 客户端自动部署方法及装置 | |
CN113342501B (zh) | 系统故障处理方法及装置 | |
CN112734545A (zh) | 区块链数据共享方法、装置及系统 | |
CN114637587A (zh) | 集群架构部署下的任务批量处理方法及装置 | |
CN102891888A (zh) | 一种数据访问方法及相关设备、系统 | |
CN111737299A (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 |