CN114237813A - 基于arm架构的微内核io虚拟化方法及系统 - Google Patents

基于arm架构的微内核io虚拟化方法及系统 Download PDF

Info

Publication number
CN114237813A
CN114237813A CN202111350064.0A CN202111350064A CN114237813A CN 114237813 A CN114237813 A CN 114237813A CN 202111350064 A CN202111350064 A CN 202111350064A CN 114237813 A CN114237813 A CN 114237813A
Authority
CN
China
Prior art keywords
virtualization
module
hardware
software
smmu
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.)
Pending
Application number
CN202111350064.0A
Other languages
English (en)
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.)
CETC 32 Research Institute
Original Assignee
CETC 32 Research Institute
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 CETC 32 Research Institute filed Critical CETC 32 Research Institute
Priority to CN202111350064.0A priority Critical patent/CN114237813A/zh
Publication of CN114237813A publication Critical patent/CN114237813A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种基于ARM架构的微内核IO虚拟化方法及系统,包括如下步骤:软件IO虚拟化步骤:通过软件I/O虚拟化进行基于ARM的微内核I/O虚拟化;硬件IO虚拟化步骤:基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化优化软件I/O虚拟化。本发明提出的I/O虚拟化方法是通过软件I/O虚拟化方法和硬件辅助I/O虚拟化方法相结合的方法,软件I/O虚拟化方法参照virtio标准,减少了虚拟机退出和数据拷贝操作频率,相比其他方法能够极大地提高I/O虚拟化性能,同时通过硬件辅助I/O虚拟化进一步提高I/O虚拟化性能。

Description

基于ARM架构的微内核IO虚拟化方法及系统
技术领域
本发明涉及ARM硬件架构的虚拟化的技术领域,具体地,涉及一种基于ARM架构的微内核IO虚拟化方法及系统。
背景技术
ARM架构相对其他架构具有低功耗、高性能等优点,因此ARM芯片被广泛应用于嵌入式系统。而微内核的用户服务独立于内核服务,让微内核相对宏内核具有可移植性强、安全性高、体积小和易于扩展等特点。ARM架构和微内核的组合具有两者的共同优点,因此ARM架构的微内核具有广阔的应用前景。但在虚拟化技术领域中其I/O虚拟化技术的发展相对CPU虚拟化和内存虚拟化更加滞后。I/O即Input/Output,表示输入和输出。ARM英文全称为Advanced RISC Machines,中文译文为高级精简指令集处理器。
主流I/O虚拟化解决方案分为全虚拟化I/O解决方案和半虚拟化I/O解决方案。在全虚拟化I/O解决方案中,运行在虚拟机管理器VMM(Virtual Machine Manager)中的虚拟机认为其运行在真实的物理环境中,因此不需要为虚拟化环境进行任何修改。虚拟机对硬件设备的所有访问都必须陷入到虚拟机管理器中,并由虚拟机管理器为虚拟机模拟这些操作。该机制会产生非常频繁的陷入和模拟操作并造成较高的虚拟化负载。在半虚拟化I/O解决方案中,虚拟机知道自己运行在虚拟机管理器中,并且会为虚拟化环境做出一定的修改和适配。半虚拟化I/O技术使用前后端解决方案,即运行在虚拟机操作系统中的前端设备和运行在虚拟机管理器中的后端设备通过共享内存来进行数据通路和控制通路的交互操作。虚拟机和虚拟机管理器以一定的操作规范共同完成虚拟化的要求,让半虚拟化I/O解决方案能达到较高的虚拟化处理性能。半虚拟化I/O解决方案的代表性解决方案virtio标准提供了一套上层应用与各虚拟机管理器(如KVM,Xen,VMware等)之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率。KVM的英文全称为Kernel-based Virtual Machine,中文译文为开源虚拟机;Xen表示开放源代码虚拟机监视器;VMware(Virtual Machine ware)表示虚拟PC软件。
I/O虚拟化方法不仅需要尽可能提高硬件虚拟化后的性能和考虑设备兼容性问题,还需要考虑到实际的操作系统和硬件架构。如微内核的I/O虚拟化相比宏内核需要更精简的内核,仅保留最核心的模块,其他功能模块全部在用户态。还需要模块化I/O虚拟化各功能,方便扩展和移植。最后还不得不考虑I/O虚拟化方法对微内核的安全性的影响。同时需要结合最新ARM架构的特点来提出实际的I/O虚拟化方案,那么需要进一步考虑相关的异常级别和硬件辅助虚拟化等特点来合理和高效的部署I/O虚拟化架构。
公开号为CN111143032A的中国发明专利文献公开了一种基于请求应答的半虚拟化I/O系统,涉及虚拟化与云计算领域,包括请求应答式应用、前端驱动模块和后端驱动模块,前端驱动模块和后端驱动模块通过发送队列和接收队列进行交互,请求应答式应用产生I/O请求,前端驱动模块将I/O请求写入发送队列中,后端驱动模块对发送队列进行乐观轮询,后端驱动模块从物理网卡接收数据包。
针对上述中的相关技术,发明人认为上述方法中的半虚拟化I/O解决方案仅提出通用架构和操作系统的技术方案,不能满足实际的ARM架构的微内核I/O虚拟化需求。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于ARM架构的微内核IO虚拟化方法及系统。
根据本发明提供的一种基于ARM架构的微内核IO虚拟化方法,包括如下步骤:
软件IO虚拟化步骤:通过软件I/O虚拟化进行基于ARM的微内核I/O虚拟化;
硬件IO虚拟化步骤:基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化优化软件I/O虚拟化。
优选的,在所述软件IO虚拟化步骤中,软件I/O虚拟化参照virtio标准,结合ARM结构的微内核系统进行模块化的I/O虚拟化;软件I/O虚拟化通过拆分的模块合作进行I/O虚拟化。
优选的,在所述软件IO虚拟化步骤中,使用I/O前端模块修改或增添部分设备驱动,并与I/O后端模块配合共同完成I/O操作;所述I/O后端模块接收来自虚拟机I/O前端模块和物理设备的I/O请求,I/O后端模块和I/O管理模块共同完成I/O操作。
优选的,在所述硬件IO虚拟化步骤中,硬件辅助I/O虚拟化通过硬件SMMU进行设备地址转换;使用SMMU模块控制硬件SMMU以及初始化相关数据结构,同时建立DMA到硬件SMMU的连接;所述SMMU模块进行DMA重映射和直通设备中断投递。
根据本发明提供的一种基于ARM架构的微内核IO虚拟化系统,包括如下模块:
软件IO虚拟化模块:通过软件I/O虚拟化进行基于ARM的微内核I/O虚拟化;
硬件IO虚拟化模块:基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化优化软件I/O虚拟化。
优选的,在所述软件IO虚拟化模块中,软件I/O虚拟化参照virtio标准,结合ARM结构的微内核系统进行模块化的I/O虚拟化;软件I/O虚拟化通过拆分的模块合作进行I/O虚拟化。
优选的,在所述软件IO虚拟化模块中,使用I/O前端模块修改或增添部分设备驱动,并与I/O后端模块配合共同完成I/O操作;所述I/O后端模块接收来自虚拟机I/O前端模块和物理设备的I/O请求,I/O后端模块和I/O管理模块共同完成I/O操作。
优选的,在所述硬件IO虚拟化模块中,硬件辅助I/O虚拟化通过硬件SMMU进行设备地址转换;使用SMMU模块控制硬件SMMU以及初始化相关数据结构,同时建立DMA到硬件SMMU的连接;所述SMMU模块进行DMA重映射和直通设备中断投递。
优选的,在所述软件IO虚拟化模块中,软件I/O虚拟化通过拆分的模块合作进行I/O虚拟化,拆分的模块包括异常级别EL0层的模块、异常级别EL1层的模块和异常级别EL2的模块;异常级别ELO的模块包括I/O管理模块、I/O后端模块和VM退出处理模块;异常级别EL1层的模块包括接口模块、异常处理模块和I/O前端模块;异常级别EL2层的模块包括异常向量模块;其中I/O前端模块属于虚拟机,I/O管理模块、I/O后端模块、VM退出处理模块、接口模块、异常处理模块和异常向量模块属于虚拟机管理器。
优选的,在所述软件IO虚拟化模块中,所述I/O前端模块和I/O后端模块之间通信相关的数据结构为virtqueue虚拟队列接口;队列独立完成数据的收发,队列包括Vring,vring进行数据的传输,vring是数据是I/O前端模块和I/O后端模块通信的桥梁。
与现有技术相比,本发明具有如下的有益效果:
1、本发明I/O虚拟化性能提升:本发明提出的I/O虚拟化方法是通过软件I/O虚拟化方法和硬件辅助I/O虚拟化方法相结合的方法,软件I/O虚拟化方法参照virtio标准,减少了虚拟机退出和数据拷贝操作频率;相比其他方法能够极大地提高I/O虚拟化性能,同时通过硬件辅助I/O虚拟化进一步提高I/O虚拟化性能;
2、本发明高安全性:本发明提出的I/O虚拟化方法是应用于ARM架构的微内核,该I/O虚拟化方法被微内核用户态和核心态划分为相应模块,使其更加安全,同时硬件辅助虚拟化中SMMU机制可进一步提升I/O地址访问的安全性;
3、本发明便于扩展和移植:本发明提出的I/O虚拟化方法是应用于微内核的模块化方法,所有I/O虚拟化功能组件都分拆成模块,由于模块化特性方便扩展和移植,可根据功能需要添加或改进其所需模块组件。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明基于ARM的微内核I/O虚拟化架构图;
图2为本发明MMIO处理过程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例公开了一种基于ARM架构的微内核IO虚拟化方法,如图1和图2所示,包括如下步骤:软件IO虚拟化步骤:通过软件I/O虚拟化进行基于ARM的微内核I/O虚拟化。软件I/O虚拟化参照virtio标准,结合ARM结构的微内核系统进行模块化的I/O虚拟化;软件I/O虚拟化通过拆分的模块合作进行I/O虚拟化。软件I/O虚拟化方法使通过各个拆分的模块合作来共同实现I/O虚拟化。所有模块按异常级别划分为:异常级别EL0层的I/O管理模块、I/O后端模块和VM退出处理模块;异常级别EL1层的接口模块、异常处理模块、I/O前端模块;异常级别EL2层的异常向量模块。其中I/O前端模块属于虚拟机,其他模块都属于虚拟机管理器。EL英文全称为exception level,中文译文为异常级别;VM英文全称为VirtualMachine,中文译文为虚拟机。
所有模块中最重要的模块是I/O前端模块和I/O后端模块。为便于描述I/O前端模块和I/O后端模块的通信方法,本发明规定了以下I/O前端模块和I/O后端模块通信数据相关的数据结构:virtqueue:虚拟队列接口,设备可以有一个或多个队列,每个队列独立完成数据的收发,每个队列包含vring以实现数据的传输,是I/O前端模块和I/O后端模块通信的桥梁。Vring英文全称为virtual ring,中文译文为虚拟环。
vring:包括descriptor table,avail ring和used ring,主要维护是I/O前端模块和I/O后端模块数据的传输。avail ring英文全称为available ring,中文译文为可用环。used ring:已用环。avail ring:存放decriptor table索引,指向descriptor table中的一个entry。当虚拟机驱动向vring中添加buffer时,维护一个索引指向当前的位置。usedring:存放decriptor table索引。当虚拟机管理器根据avail ring中提供的信息从vring中取出buffer,维护当前位置的索引,处理完之后,更新used ring。descriptor table:存放虚拟机驱动提供的buffer的指针,每个条目指向一个虚拟机驱动分配的收发数据buffer。描述符表存储数据在虚拟机中的物理地址。descriptor table中文译文为描述符表;entry中文译文为条目;buffer中文译文为缓冲区。
使用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请求,通过和I/O管理模块共同完成I/O操作。通过I/O前端模块和I/O后端模块来实现I/O虚拟化,具体步骤如下:
当虚拟机发起I/O请求时,虚拟机中的I/O前端模块将I/O操作通过hypercall或MMIO通知虚拟机管理器中的I/O后端模块。同时将I/O请求添加到virtqueue中,并在共享内存中提供相应的数据和更新avail ring索引来用于I/O后端模块进行处理。MMIO的英文译文为Memory-mapped I/O,中文译文为内存映射I/O。hypercall中文译文为超级调用。
I/O后端模块从virtqueue中接收到来自I/O前端模块的请求,根据avail ring索引得到待处理的数据,并调用I/O管理模块。
I/O管理模块通过进程间通信访问文件系统服务,向物理设备发送I/O请求并更新used ring索引。
当物理设备完成I/O请求后,返回I/O管理模块。I/O管理模块在I/O前端模块和I/O后端模块的共享内存区申请空间,再调用驱动程序处理I/O数据,并将处理完成的数据写入共享内存区和更新used ring索引。
当I/O管理模块完成后,再返回I/O后端模块。I/O后端模块调用中断处理模块向虚拟机注入虚拟中断通知虚拟机中的I/O前端模块。
当I/O前端模块得到I/O后端模块处理完成的通知后,将I/O请求结果和处理信息接着继续向虚拟机上层返回。
硬件IO虚拟化步骤:基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化优化软件I/O虚拟化。硬件辅助I/O虚拟化通过硬件SMMU进行设备地址转换;使用SMMU模块控制硬件SMMU以及初始化相关数据结构,同时建立DMA到硬件SMMU的连接;所述SMMU模块进行DMA重映射和直通设备中断投递。
硬件辅助I/O虚拟化方法通过硬件SMMU来快速实现设备地址转换,如无硬件SMMU只能通过软件的MMU两次转换地址。硬件辅助I/O虚拟化方法实际只需添加SMMU模块。SMMU模块用来控制硬件SMMU以及初始化相关数据结构,同时建立DMA到硬件SMMU的连接。SMMU模块主要功能包括DMA重映射和直通设备中断投递。硬件辅助I/O虚拟化相关数据结构如下:STE(Stream Table Entry):描述一个设备信息,STE包含一个指向stage2地址翻译表的指针和一个指向CD(Context Descriptor)的指针。CD:包含指向stage1地址翻译表的基地址指针。Stream ID:硬件SMMU使用Stream ID进行设备的区分。Substream ID:一个设备可能被多个进程使用,多个进程有多个页表,设备需要对其进行区分,硬件SMMU使用SubstreamID来对其进行表示。DMA英文全称为Direct Memory Access,中文译文为直接内存访问;stage中文译文为阶段;Stream中文译文为流(可以直接用单字,无需加字),Substream中文译文为子流。STE英文全称为Stream Table Entry,中文译文为流表条目;CD英文全称为Context Descriptor,中文译文为上下文描述符。
硬件辅助I/O虚拟化方法具体步骤如下:当虚拟机发出I/O请求时,调用设备驱动向SMMU模块发起DMA请求。当SMMU模块收到DMA请求时,SMMU模块处理DMA请求为DMA信息,向硬件SMMU发送该DMA信息。该DMA信息包含虚拟机虚拟地址和Substream ID。硬件SMMU提取DMA信息中的Stream ID来获取发送请求所需设备,然后去Stream Table索引对应的STE。从对应的STE表中查找到对应的CD,然后用Substream ID到CD中进行索引找到对应的S1 PageTable。硬件SMMU进行S1Page Table Walk,将虚拟机虚拟地址翻译成虚拟机物理地址(中间物理地址)并作为S2的输入。硬件SMMU执行S2 Page Table Walk,将虚拟机物理地址翻译成虚拟机管理器物理地址。S1英文全称为first stage或者stage1,中文译文为第一阶段;S1Page Table中文译文为第一阶段的页表;S1 Page Table Walk中文译文为第一阶段的页表查询;S2英文全称为second stage或者stage2,中文译文为第二阶段;S2 Page Table Walk中文译文为第二阶段的页表查询。
本发明I/O虚拟化方法主要通过软件I/O虚拟化方法实现基于ARM的微内核I/O虚拟化,然后再通过基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化方法来进一步优化软件I/O虚拟化方法的性能和安全性。
本发明是面向微内核领域的I/O虚拟化。本发明要解决的技术问题体现在以下几点:1)为满足ARM架构的微内核I/O虚拟化性能需求和解决设备兼容性问题,本发明在I/O虚拟化中引入目前代表性I/O虚拟化virtio标准,并参照该标准模块化I/O虚拟化功能部署于实际的ARM架构的微内核系统。半虚拟化I/O需要考虑在虚拟机中的I/O前端和虚拟机管理器中的I/O后端兼容性。virtio标准能够极大的解决不通用问题且能实现高性能的I/O虚拟化,以实现I/O虚拟化性能需求和解决设备兼容性问题。2)为使I/O虚拟化方法具有微内核的便于移植扩充,精简和高安全等特点,本发明模块化I/O虚拟化功能使I/O虚拟化功能由多个组件组成,并且实现以内核态和用户态来划分各组件。用模块化I/O虚拟化功能来使I/O虚拟化方法便于移植和扩充,同时也可以对各组件进行优化来精简该方法。内核态和用户态的划分来保证I/O虚拟化方法不会对微内核的安全性造成影响。3)为使I/O虚拟化方法能够实际部署于ARM架构和结合架构进一步提高I/O虚拟化的性能,本发明结合ARM架构特点来使各组件部署于不同的异常级别中,并结合ARM架构的硬件SMMU设备来实现硬件辅助虚拟化。软件I/O虚拟化会因为频繁的进行VM Exit(出口)操作而降低性能,硬件辅助虚拟化可以让虚拟机直接访问物理设备。因此通过ARM架构的硬件辅助虚拟化设备硬件SMMU来进一步提高I/O虚拟化的性能。SMMU英文全称为System Memory Management Unit,中文译文为系统内存管理单元。
本发明I/O虚拟化方法是软件I/O虚拟化方法和硬件辅助I/O虚拟化方法的结合方法。软件I/O虚拟化方法参照virtio标准,并结合ARM结构的微内核系统来实现模块化的I/O虚拟化。硬件辅助I/O虚拟化方法是基于最新ARM v8的硬件SMMU的虚拟化方法,来进一步提高软件I/O虚拟化性能和安全性。
本发明实施例还公开了一种基于ARM架构的微内核IO虚拟化系统,包括如下模块:软件IO虚拟化模块:通过软件I/O虚拟化进行基于ARM的微内核I/O虚拟化。软件I/O虚拟化参照virtio标准,结合ARM结构的微内核系统进行模块化的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虚拟化,拆分的模块包括异常级别EL0层的模块、异常级别EL1层的模块和异常级别EL2的模块;异常级别ELO的模块包括I/O管理模块、I/O后端模块和VM退出处理模块;异常级别EL1层的模块包括接口模块、异常处理模块和I/O前端模块;异常级别EL2层的模块包括异常向量模块;其中I/O前端模块属于虚拟机,I/O管理模块、I/O后端模块、VM退出处理模块、接口模块、异常处理模块和异常向量模块属于虚拟机管理器。I/O前端模块和I/O后端模块之间通信相关的数据结构为virtqueue虚拟队列接口;队列独立完成数据的收发,队列包括Vring,vring进行数据的传输,vring是数据是I/O前端模块和I/O后端模块通信的桥梁。
VM退出处理模块:虚拟机退出后需要完成的功能,主要是保存虚拟机的信息。接口模块:EL0层能够调用的所有系统函数。异常处理模块:所有异常处理函数,来完成不同异常的具体实现。异常向量模块:根据从I/O前端接受的消息来跳转到该消息对应的异常处理函数。
如图1所示流程:本发明提到I/O前端给I/O后端发送请求,实际上需要经过上述模块,而不是直接能够发送。展开该过程:当前虚拟机I/O前端向虚拟机管理器的I/O后端发送请求:1、当前虚拟机I/O前端收到应用的I/O请求;2、当前虚拟机I/O前端通过陷入(trap)向异常向量模块传递该I/O请求;3、异常向量模块通过退出(eret)向异常处理模块传递该I/O请求;4、异常处理模块执行I/O异常函数,其中该函数会传递该I/O请求到VM退出处理模块;5、VM退出处理模块向I/O后端传递该I/O请求;6、根据该I/O请求的内容,I/O后端会通过系统调用(syscall)来调用接口模块的系统函数,然后传递给I/O管理模块;7、I/O管理模块完成该I/O请求。本发明强调I/O后端和I/O前端的具体实现和流程。
硬件IO虚拟化模块:基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化优化软件I/O虚拟化。硬件辅助I/O虚拟化通过硬件SMMU进行设备地址转换;使用SMMU模块控制硬件SMMU以及初始化相关数据结构,同时建立DMA到硬件SMMU的连接;所述SMMU模块进行DMA重映射和直通设备中断投递。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于ARM架构的微内核IO虚拟化方法,其特征在于,包括如下步骤:
软件IO虚拟化步骤:通过软件I/O虚拟化进行基于ARM的微内核I/O虚拟化;
硬件IO虚拟化步骤:基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化优化软件I/O虚拟化。
2.根据权利要求1所述的基于ARM架构的微内核IO虚拟化方法,其特征在于,在所述软件IO虚拟化步骤中,软件I/O虚拟化参照virtio标准,结合ARM结构的微内核系统进行模块化的I/O虚拟化;软件I/O虚拟化通过拆分的模块合作进行I/O虚拟化。
3.根据权利要求2所述的基于ARM架构的微内核IO虚拟化方法,其特征在于,在所述软件IO虚拟化步骤中,使用I/O前端模块修改或增添部分设备驱动,并与I/O后端模块配合共同完成I/O操作;所述I/O后端模块接收来自虚拟机I/O前端模块和物理设备的I/O请求,I/O后端模块和I/O管理模块共同完成I/O操作。
4.根据权利要求1所述的基于ARM架构的微内核IO虚拟化方法,其特征在于,在所述硬件IO虚拟化步骤中,硬件辅助I/O虚拟化通过硬件SMMU进行设备地址转换;使用SMMU模块控制硬件SMMU以及初始化相关数据结构,同时建立DMA到硬件SMMU的连接;所述SMMU模块进行DMA重映射和直通设备中断投递。
5.一种基于ARM架构的微内核IO虚拟化系统,其特征在于,包括如下模块:
软件IO虚拟化模块:通过软件I/O虚拟化进行基于ARM的微内核I/O虚拟化;
硬件IO虚拟化模块:基于ARM架构的硬件SMMU的硬件辅助I/O虚拟化优化软件I/O虚拟化。
6.根据权利要求5所述的基于ARM架构的微内核IO虚拟化系统,其特征在于,在所述软件IO虚拟化模块中,软件I/O虚拟化参照virtio标准,结合ARM结构的微内核系统进行模块化的I/O虚拟化;软件I/O虚拟化通过拆分的模块合作进行I/O虚拟化。
7.根据权利要求6所述的基于ARM架构的微内核IO虚拟化系统,其特征在于,在所述软件IO虚拟化模块中,使用I/O前端模块修改或增添部分设备驱动,并与I/O后端模块配合共同完成I/O操作;所述I/O后端模块接收来自虚拟机I/O前端模块和物理设备的I/O请求,I/O后端模块和I/O管理模块共同完成I/O操作。
8.根据权利要求5所述的基于ARM架构的微内核IO虚拟化系统,其特征在于,在所述硬件IO虚拟化模块中,硬件辅助I/O虚拟化通过硬件SMMU进行设备地址转换;使用SMMU模块控制硬件SMMU以及初始化相关数据结构,同时建立DMA到硬件SMMU的连接;所述SMMU模块进行DMA重映射和直通设备中断投递。
9.根据权利要求6所述的基于ARM架构的微内核IO虚拟化系统,其特征在于,在所述软件IO虚拟化模块中,软件I/O虚拟化通过拆分的模块合作进行I/O虚拟化,拆分的模块包括异常级别EL0层的模块、异常级别EL1层的模块和异常级别EL2的模块;异常级别ELO的模块包括I/O管理模块、I/O后端模块和VM退出处理模块;异常级别EL1层的模块包括接口模块、异常处理模块和I/O前端模块;异常级别EL2层的模块包括异常向量模块;其中I/O前端模块属于虚拟机,I/O管理模块、I/O后端模块、VM退出处理模块、接口模块、异常处理模块和异常向量模块属于虚拟机管理器。
10.根据权利要求9所述的基于ARM架构的微内核IO虚拟化系统,其特征在于,在所述软件IO虚拟化模块中,所述I/O前端模块和I/O后端模块之间通信相关的数据结构为virtqueue虚拟队列接口;队列独立完成数据的收发,队列包括Vring,vring进行数据的传输,vring是数据是I/O前端模块和I/O后端模块通信的桥梁。
CN202111350064.0A 2021-11-15 2021-11-15 基于arm架构的微内核io虚拟化方法及系统 Pending CN114237813A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111350064.0A CN114237813A (zh) 2021-11-15 2021-11-15 基于arm架构的微内核io虚拟化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111350064.0A CN114237813A (zh) 2021-11-15 2021-11-15 基于arm架构的微内核io虚拟化方法及系统

Publications (1)

Publication Number Publication Date
CN114237813A true CN114237813A (zh) 2022-03-25

Family

ID=80749415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111350064.0A Pending CN114237813A (zh) 2021-11-15 2021-11-15 基于arm架构的微内核io虚拟化方法及系统

Country Status (1)

Country Link
CN (1) CN114237813A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117421096A (zh) * 2023-12-19 2024-01-19 麒麟软件有限公司 基于jailhouse虚拟机监控器SMMU使用方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117421096A (zh) * 2023-12-19 2024-01-19 麒麟软件有限公司 基于jailhouse虚拟机监控器SMMU使用方法
CN117421096B (zh) * 2023-12-19 2024-04-05 麒麟软件有限公司 基于jailhouse虚拟机监控器SMMU使用方法

Similar Documents

Publication Publication Date Title
CN109144679B (zh) 中断请求的处理方法、装置及虚拟化设备
Shuja et al. A survey of mobile device virtualization: Taxonomy and state of the art
CN101751284B (zh) 一种分布式虚拟机监控器的i/o资源调度方法
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
Tian et al. A Full {GPU} Virtualization Solution with Mediated {Pass-Through}
US7757231B2 (en) System and method to deprivilege components of a virtual machine monitor
EP2339462A1 (en) Efficient nested virtualization
US20150370592A1 (en) Hypervisor context switching using tlb tags in processors having more than two hierarchical privilege levels
US10176007B2 (en) Guest code emulation by virtual machine function
EP2296089A2 (en) Operating systems
CN107924325B (zh) 用于多级虚拟化的设备和方法
KR20110080240A (ko) 가상화 장치
US20090100424A1 (en) Interrupt avoidance in virtualized environments
CN113806006A (zh) 一种异构指令集架构下异常或中断的处理方法、装置
CN101425046A (zh) 分布式i/o资源虚拟化技术的实现方法
CN108292233B (zh) 开启虚拟机的应用处理器
CN114237813A (zh) 基于arm架构的微内核io虚拟化方法及系统
KR101077908B1 (ko) 서버 가상화 장치
US11983555B2 (en) Storage snapshots for nested virtual machines
US11748136B2 (en) Event notification support for nested virtual machines
CN117472805B (zh) 一种基于virtio的虚拟化IO设备内存管理系统
CN113626148B (zh) 一种基于混合虚拟化的终端虚拟机生成系统及方法
WO2017026931A1 (en) Implementing input/output in a virtualized environment
CN114489941B (zh) 运行在宿主模式用户态的虚拟机管理方法及系统
Jain Study of firecracker microvm

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