CN112612574A - 输入输出设备的内存访问管理单元、系统及地址转换方法 - Google Patents
输入输出设备的内存访问管理单元、系统及地址转换方法 Download PDFInfo
- Publication number
- CN112612574A CN112612574A CN202011513824.0A CN202011513824A CN112612574A CN 112612574 A CN112612574 A CN 112612574A CN 202011513824 A CN202011513824 A CN 202011513824A CN 112612574 A CN112612574 A CN 112612574A
- Authority
- CN
- China
- Prior art keywords
- virtual
- address
- input
- memory access
- output device
- 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
Links
Images
Classifications
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供一种输入输出设备的内存访问管理单元、系统及地址转换方法,所述输入输出设备的内存访问管理单元运行于虚机的操作系统中,包括:虚拟功能执行单元,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备为实现所述虚机上运行的应用程序的功能所需的设备,所述访问请求携带所述虚拟地址;虚拟功能操控单元,被配置为控制所述虚拟功能执行单元完成地址转换。与相关技术中多个虚机通过Hypervisor协调使用一个输入输出设备的内存访问管理单元相比,本申请的实施例提升了运行于各虚机的虚拟操作系统上的应用程序的安全性。
Description
技术领域
本申请涉及虚拟机领域,具体而言本申请实施例涉及输入输设备的内存访问管理单元、系统及地址转换方法。
背景技术
输入输出设备(即IO设备)在多虚机应用场景中通常采用输入输出存储器管理单元IOMMU实现虚拟地址到系统物理地址转换,其中,虚拟地址可以理解为输入输出设备发起的DMA请求地址,物理地址可以理解为系统内存地址(即System Memory),通常指DDR控制器连接的内存条地址。
虚机VM是存在于服务器虚拟化应用环境中的虚拟机,可以采用VM-0,VM-1,VM-2等表示多个虚机,它们各自都有客户端操作系统和客户端应用软件运行其中。输出输入存储器管理单元IOMMU用于将输入输出设备发起的DMA请求中的虚拟地址转换成物理地址,它由物理功能模块和内存映射输入输出单元MMIO控制寄存器组成。输出输入存储器管理单元在地址转换过程中需要对系统内存做访问,且受到运行在主机操作系统中的虚拟机管理软件Hypervisor软件的控制。虚拟机管理软件介于IOMMU和VM之间,它会协调处理多个VM对输入输出设备的虚拟地址转换为物理地址的需求。
多个虚拟机通过虚拟机管理软件Hypervisor协调使用输入输出存储器管理单元IOMMU,势必造成虚拟机和虚拟机之间的交叉安全隐患。因此如何提升安全性成了亟待解决的技术问题。
发明内容
本申请实施例的目的在于提供一种输入输出设备的内存访问管理单元、系统及地址转换方法,本申请的一些实施例为各个虚机提供安全独立的客户机地址转换页表的使用环境,有效解决虚机之间因为共享输入输出设备的内存访问管理单元的硬件带来的交叉安全隐患,同时降低各虚机对运行于主机操作系统中的虚拟机管理软件的依赖。
第一方面,本申请的一些实施例提供一种输入输出设备的内存访问管理单元,所述输入输出设备的内存访问管理单元运行于虚机的操作系统中,包括:虚拟功能执行单元,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备为实现所述虚机上运行的应用程序的功能所需的设备,所述访问请求携带所述虚拟地址;虚拟功能操控单元,被配置为控制所述虚拟功能执行单元完成地址转换。
本申请的一些实施例通过运行于各虚机操作系统中的输入输出设备的内存访问理单元,实现了相应虚机对应的输入输出设备的访问内存的虚拟地址向物理地址的转换操作,与相关技术中多个虚机通过Hypervisor协调使用一个输入输出设备的内存访问管理单元相比,本申请的实施例提升了运行于各虚机的虚拟操作系统上的应用程序的安全性。
在一些实施例中,所述虚拟功能执行单元包括:页表查询模块,被配置为依据客户机地址转换页表完成所述虚拟地址向所述物理地址的转换;地址转换快速缓存模块,被配置为依据映射关系表获取所述虚拟地址对应的所述物理地址,其中,所述映射关系表用于存储多个虚拟地址与物理地址的对应关系;身份识别模块,被配置为依据所述虚机的身份标识过滤来自于其余虚机对应的输入输出设备的访问请求。
本申请的一些实施例通过直接缓存转换关系表和借助于内存的页表查询至少两种方式来实现虚拟地址向物理地址的转换,保证了虚拟地址向物理地址的转换的成功率,同时由于优先使用在虚拟功能执行单元直接缓存的转换关系表来实现虚拟地址转换因此还提升了地址转换的速度。
在一些实施例中,所述虚拟功能操控单元包括:控制命令传递模块,被配置为接收由所述操作系统生成的控制信息,并将所述控制信息向所述虚拟功能执行单元传递;地址转换状态记录模块,被配置为实时记录所述虚拟功能执行单元的工作状态,以供所述操作系统读取所述工作状态;索引地址记录模块,被配置为记录与所述虚机对应的虚拟功能命令、虚拟功能事件和外设页表的索引地址,以供所述页表查询模块完成页表查询操作得到所述客户机地址转换页表。
本申请的一些实施例通过虚机的操作系统与虚拟功能操控单元协作来控制输入输出设备的内存访问管理单元完成地址转换,提升了虚机操作系统对其输入输出设备的内存访问管理单元的管控力度,进一步保证了虚机的安全性。
在本申请的一些实施例中,所述虚拟功能操控单元还包括:虚机身份标识记录模块,被配置为接收来自于所述操作系统的所述虚机的身份标识,并向所述身份识别模块提供所述身份标识。
本申请的一些实施例的虚机操作系统还通过虚拟功能操控单元来传输相应虚机的标志信息,进而使得输入输出设备的内存访问管理单元仅服务于其运行的虚机。
在一些实施例中,所述页表查询模块根据所述外设页表的索引地址查找所述客户机地址转换页表,其中,所述客户机地址页表存储在系统内存中。
本申请的一些实施例的页表查询模块通过访问内存中存储的客户机地址转换页表完成虚拟地址向物理地址的转换。
在一些实施例中,所述虚拟功能执行单元还被配置为:根据所述索引地址查找与所述虚机对应的虚拟功能的事件记录单元和虚拟功能的命令单元,其中,所述虚机对应的虚拟功能的事件记录单元存储在系统内存中的虚拟功能事件记录阵列中,所述虚拟功能的命令单元存储在所述系统内存中的虚拟功能命令阵列中。
本申请的一些实施例为多个输入输出设备的内存访问管理单元分别在内存中设置事件记录单元和命令单元,以协助各输入输出设备的内存访问管理单元完成地址转换。
第二方面,本申请的一些实施例提供一种输入输出设备的内存访问管理系统,所述输入输出设备的内存访问管理系统包括:输入输出设备的内存访问管理单元,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备的内存访问管理单元的个数与虚机的数量相同,所述输入输出设备的内存访问管理单元用于为一个虚机设置独立的客户机地址转换页表的使用环境;任务调度单元,被配置为调配多个所述输入输出设备的内存访问管理单元复用物理功能模块,其中,所述物理功能模块至少用于实现时钟管理和电源功耗管理。
本申请的一些实施例通过在相关技术的计算机IO内存访问管理单元中设置多个与各虚机对应的输入输出设备的内存访问管理单元,来实现虚拟地址向物理地址的转换。相对传统架构,本申请的实施例的各虚机的操作系统可独立操控自身的输入输出设备的内存访问管理单元来实现各自输入输出设备的DMA虚拟地址到物理地址的转换,消除了多虚机共享一个内存访问管理单元在输入输出设备应用中的安全隐患。
在一些实施例中,所述各输入输设备的内存访问管理单元运行于相应虚机的操作系统中。
通过将各输入输出设备的内存访问管理单元运行在各虚机的操作系统中,可以实现多虚机对输入输出设备的应用做到虚机应用程序(即Guest APP)的数据流隔离和控制流隔离,提升了安全性。
在一些实施例中,所述输入输出设备的内存访问管理单元运行于虚机的操作系统中,所述输入输出设备的内存访问管理单元包括:虚拟功能执行单元,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备为实现所述虚机上运行的应用程序的功能所需的设备,所述访问请求携带所述虚拟地址;虚拟功能操控单元,被配置为控制所述虚拟功能执行单元完成地址转换。
本申请的一些实施例通过虚拟功能操控单元对虚拟功能执行单元进行控制,使得虚拟功能执行单元完成了与各虚机应用程序相关的输入输出设备的虚拟地址向物理地址的转换。
在一些实施例中,所述虚拟功能执行单元包括:页表查询模块,被配置为依据客户机地址转换页表完成所述虚拟地址向所述物理地址的转换;地址转换快速缓存模块,被配置为依据映射关系表获取所述虚拟地址对应的所述物理地址,其中,所述映射关系表用于存储多个虚拟地址与物理地址的对应关系;身份识别模块,被配置为依据所述虚机的身份标识过滤掉来自于其余虚机对应的输入输出设备的访问请求。
本申请的一些实施例通过在输入输出设备的内存访问管理单元中直接缓存转换关系表或者通过查询内存中的页表至少两种方式来实现虚拟地址向物理地址的转换,即保证了虚拟地址向物理地址的转换的成功率,同时也提升了地址转换的速度。
在一些实施例中,所述虚拟功能操控单元,包括:控制命令传递模块,被配置为接收由所述操作系统生成的控制信息,并将所述控制信息向所述虚拟功能执行单元传递;地址转换状态记录模块,被配置为实时记录所述虚拟功能执行单元的工作状态,以供所述操作系统读取所述工作状态;索引地址记录模块,被配置为记录虚拟功能命令、虚拟功能事件和外设页表的索引地址,以供所述页表查询模块完成页表查询操作得到所述客户机地址转换页表。
本申请的一些实施例通过虚机的操作系统与虚拟功能操控单元协作来控制输入输出设备的内存访问管理单元完成地址转换,提升了虚机操作系统对其输入输出设备的内存访问管理单元管控力度,进一步保证了虚机的安全性。
在一些实施例中,所述虚拟功能操控单元还包括:虚机身份标识记录模块,被配置为接收来自于所述操作系统的所述虚机的身份标识,并向所述身份识别模块提供所述身份标识。
本申请的一些实施例的虚机操作系统还通过虚拟功能操控单元来传输虚机的标识信息,进而使得输入输出设备的内存访问管理单元仅服务于其运行的虚机。
在一些实施例中,所述页表查询模块根据所述外设页表的索引地址查找所述客户机地址转换页表,其中,所述客户机地址页表存储在系统内存中。
本申请的一些实施例的页表查询模块通过客户机地址转换页表完成虚拟地址向物理地址的转换。
在一些实施例中,所述虚拟功能执行单元还被配置为:根据所述索引地址查找与所述虚机对应的虚拟功能的事件记录单元和虚拟功能的命令单元,其中,所述虚机对应的虚拟功能的事件记录单元存储在系统内存中的虚拟功能事件记录阵列中,所述虚拟功能的命令单元存储在所述系统内存中的虚拟功能命令阵列中。
本申请的一些实施例为多个输入输出设备的内存访问管理单元分别在内存中设置事件记录单元和命令单元,以协助各输入输出设备的内存访问管理单元完成地址转换。
在一些实施例中,所述任务调度单元采用时分复用的策略控制同一时刻只有一个所述输入输出设备的内存访问管理单元占用所述物理功能模块所能提供的功能。
本申请的一些实施例通过时分复用的方式控制多个输入输出设备的内存访问管理单元共用物理功能模块,实现了资源共享,降低了电路设计的复杂度和电路规模。
在一些实施例中,所述任务调度单元采用轮询方式处理来自于多个所述输入输出设备的内存访问管理单元的地址转换请求。
本申请的一些实施例通过轮询仲裁平均分配各个输入输出设备的内存访问管理单元对内存访问通路的使用。
第三方面,本申请的一些实施例提供一种地址转换方法,所述地址转换方法包括:获取输入输出设备的内存访问请求;获取与所述内存访问请求对应的虚机的标识信息;根据所述标识信息将所述访问请求发送至目标输入输出设备的内存访问管理单元,以通过所述目标输入输出设备的内存访问管理单元完成虚拟地址向物理地址的转换。
本申请的一些实施例通过为各虚机设置对应的输入输出设备的内存访问管理单元,实现各自虚拟地址向物理地址的转换,提升了虚拟机应用程序的安全性。
在一些实施例中,所述根据所述标识信息将所述访问请求发送至目标输入输出设备的内存访问管理单元,以通过所述目标输入输出设备的内存访问管理单元完成虚拟地址向物理地址的转换,包括:确认通过地址转换快速缓存单元存储的地址转换关系获取所述物理地址。
本申请的一些实施例首先通过在输入输出设备的内存访问管理模块中查找缓存的转换关系的方式来完成快速地址转换,以提升虚拟地址向物理地址转换的速度。
在一些实施例中,所述根据所述标识信息将所述访问请求发送至目标输入输出设备的内存访问管理单元,以通过所述目标输入输出设备的内存访问管理单元完成虚拟地址向物理地址的转换,包括:确认通过地址转换快速缓存单元存储的地址转换关系未获取所述虚拟地址对应的物理地址;通过页表查询从内存中的页表索引所述物理地址。
本申请的一些实施例在快速查找失败后,会再启动基于页表查询(即通过查询内存中的客户机地址页表)的方法完成虚拟地址向物理地址的转换,提升了地址转换的成功率。
在一些实施例中,所述通过页表查询从内存中的页表索引所述物理地址,包括:依据内存中虚拟功能指令和客户机地址转换页表Guest Page Table将所述虚拟地址做转换成所述物理地址。
本申请的一些实施例的页表查询采用存储在系统内存中的客户机地址转换页表完成地址转换。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为相关技术的基于x86硬件平台的虚拟化平台系统;
图2为本申请实施例提供的基于x86硬件平台的虚拟化平台系统;
图3为本申请实施例提供的输入设备设备的内存访问管理单元的组成结构框图;
图4为本申请实施例提供的采用本申请实施例的虚拟化平台系统进行地址转换方法的流程图;
图5为本申请实施例提供的基于PCIE协议的虚拟化平台架构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
PCIe:Peripheral Component Interconnect express,一种高速串行计算机IO扩展总线标准
Host OS:主机操作系统,通常指服务器中运行的windows,linux等操作系统
Hypervisor:运行在Host OS中的虚拟机管理软件,实现虚拟机操作系统和主机操作系统之间的控制交互
GuestOS:客户机操作系统,运行在服务器硬件平台上的虚拟机操作系统,受到虚拟机管理软件的控制
GuestAPP:运行于客户机操作系统中的用户应用软件
DMA:直接内存访问,由IO Device直接发起对系统内存的访问,不需要系统CPU介入;
TLB:Translation look aside buffer.一种常用的高速缓存。缓存地址(虚拟地址或者物理地址)和数据。TLB缓存虚拟地址和其映射的物理地址。TLB根据虚拟地址查找cache得出物理地址;
TW:Table Walk机制,一种常用的页表查找实现方式
Round Robin:一种轮询调度算法
Guest Page Table:客户机地址转换页表,本案中特指GuestOS应用中IO Devcie虚拟地址到物理地址的转换页表;
IOMMU:计算机IO内存访问管理单元,实现IO设备对计算机内存访问过程中虚拟地址到物理地址的转换
SR-IOV:Single Root-IO Virtualization,PCIe协议中用来实现物理功能虚拟化的规范
Note:在虚拟机应用系统中,将同一节点的PCIe IO物理功能扩展成多个功能实体,每个实体相对独立,可各自对应单个虚拟机
MMIO:Memory Mapped IO,在系统内存空间中映射的IO空间
Note:将x86架构系统中的外设IO控制区空间映射到系统内存中
请参看图1,图1为相关技术的基于x86硬件平台的虚拟化平台系统,在该平台系统中包括n个虚机(即图1的VM0、VM1、VM2……VMn)、运行于各虚机中的操作系统(即Guest OS)和客户端应用程序(即Guest APP)、与各虚机连接的虚拟机管理硬件140、与虚拟机管理硬件140连接的计算机IO内存访问管理单元100(即相关技术的IOMMU)、与计算机IO内存访问管理单元100连接的多个输入输出设备120以及系统内存130,其中,系统内存130与虚拟机管理硬件140和计算机IO内存访问管理单元100连接。n的取值为大于等于1的整数。
虚机VM是存在于服务器虚拟化应用环境中的虚拟机,图中用VM0、VM1、VM2等表示,它们各自都有GuestOS和Guest APP运行其中。
输入输出设备120为存在于服务器应用系统中的硬件IO外设。例如,硬件IO外设包括硬盘、显卡或者网卡等输入输出设备。
GuestAPP是运行于GuestOS中的用户应用软件(或称为应用程序),它会对输入输出设备IO Device做数据和控制信息的传递,实现用户的应用。例如,GuestAPP是运行在GuestOS中的应用程序,这些应用程序包括:媒体处理软件,网络浏览器,聊天软件等等,可以理解的是,GuestAPP如果要实现这些软件功能,必须借助于输入输出设备IO Device(硬盘,网卡,显卡),因此客户端应用程序需要向输入输出设备做数据和控制信息传递。
计算机IO内存访问管理单元100用于实现虚拟地址向系统内存物理地址的转换操作,它由物理功能模块和MMIO控制寄存器组成。它在地址转换过程中需要对系统内存做访问,结合图1相关技术的附图不难发现该计算机IO内存访问管理单元100受到Hypervisor软件的控制。
系统内存130是服务器系统中的内存硬件,该内存硬件至少用于存储客户机地址转换页表131,且系统内存130还包括事件缓存单元132以及IOMMU命令缓存单元133,其中,事件缓存单元132用于存储来自计算机IO内存访问管理单元100的事件(即计算机IO内存访问管理单元100在运行过程中触发的各类事件),IOMMU命令缓存单元133用于存储来自虚拟机管理硬件140(或称为Hypervisor Software)对计算机IO内存访问管理单元100控制用到的命令。图1的客户机地址转换页表131是用于完成外部输入输出设备IO Device地址转换用到的Guest Page Table。计算机IO内存访问管理单元100在运行过程中触发的各类事件包括多种,例如,页表错误(或称为page错误),系统错误等,此类错误事件的信息都会记录到系统内存130中的事件缓存单元Event Log中。
虚拟机管理硬件140介于计算机IO内存访问管理单元100和虚机VM之间,它会协调处理多个虚机VM对输入输出设备IO Device的虚拟地址转换物理地址的需求。
基于主机操作系统Host OS运行的虚拟管理软件(与虚拟机管理硬件140相关的软件)通过图1的内存映射输入输出单元MMIO配置计算机IO内存访问管理单元100的物理功能模块并建立计算机IO内存访问管理单元100的命令缓存Command buffer,命令缓存用来指导计算机IO内存访问管理单元100硬件完成地址转换,因为地址转换需要索引页表,缓存的命令也会指导计算机IO内存访问管理单元100完成它内部缓存的更新。图1IOMMU命令缓存单元133缓存的命令由主机操作系统Host OS中的虚拟管理软件hypervisor填写。
采用相关技术(即采用图1的架构)进行虚拟地址转换的方法包括:基于虚拟机VM运行的客户端操作系统GuestOS中的客户端应用程序GuestApp配置输入输出设备IODevice,以使输入输出设备发起对内存的DMA应用访问;此后计算机IO内存访问管理单元100依据缓存的命令和Guest Page Table对输入输出设备的DMA虚拟地址做转换,转换成物理地址传递给系统内存,完成输入输出设备的数据访问操作。例如,外部输入输出设备(例如网卡)收到了数据,需要把数据写入到系统内存中(此内存划分给了GuestOS中的GuestApp);网卡对内存发起写入请求(即内存访问请求),同时携带地址信息(VirtualAddress),图1的计算机IO内存访问管理单元100收到这个写入请求,根据网卡设备的身份标识(ID)去系统内存中寻找Guest Page Table,并根据这个table索引物理地址。计算机IO内存访问管理单元100在以上操作过程中如果遇到错误或者找不到page table等,都会把相应的信息记录到图1的事件缓存中。虚拟管理软件依据这个事件日志对计算机IO内存访问管理单元100做出约定的行为,通过命令缓存把行为命令传递给计算机IO内存访问管理单元100。
通过对图1的阐述可以发现相关技术上中多个虚机通过Hypervisor协调使用计算机IO内存访问管理单元100,势必造成虚机和虚机之间的交叉安全隐患,计算机IO内存访问管理单元100在切换不同客户机地址转换页表guest page table时完全依赖于Hypervisor软件的可信度和正确性。Hypervisor的软件安全漏洞会造成虚拟机客户机地址转换页表guest page table的泄露,进而引起GuestOS的安全APP数据被其它GuestOS的APP截获。
至少为了解决上述安全漏洞,本申请实施例提供的基于x86硬件平台的虚拟化平台系统架构(如图2所示),采用这个架构实现虚拟地址向物理地址的转换可消除多虚机在输入输出设备IO Device应用中的安全隐患。这是由于图2架构的各虚机的操作系统GuestOS可独立操控输入输出设备的内存访问管理单元110(例如,图2的虚机VM0直接与一个输入输出设备的内存访问管理单元通信),实现各自输入输出设备对应的DMA访问请求中的虚拟地址到物理地址的转换,因此不需要图2的Hypervisor Software中间干涉虚拟地址向物理地址转换的过程,这与图1的各虚机必须借助于虚拟机管理硬件140及其虚拟管理软件才能与用于实现虚拟地址向物理地址转换的计算机IO内存访问管理单元100连接通信具有实质性差异。
本申请实施例的技术方案可应用于服务器虚拟化中虚拟机操作系统和外部输入输出设备(即IO设备)之间的数据交互管控,适用于x86虚拟化IO架构或者ARM虚拟化IO架构。
图2提供的本申请实施例的基于x86硬件平台的虚拟化平台系统,与图1的差别在于,图2包括多个输入输出设备的内存访问管理单元110,这些输入输出设备的内存访问管理单元110分别于一个虚机对应,且图2的系统内存中存储的是与多个虚机对应的多个输入输出设备的内存访问管理单元的事件存储阵列和命令缓存阵列。图2的还包括多个输入输出设备的内存访问管理单元110共用的物理功能模块Physical Function。也就是说,图2包括多个虚拟功能单元(即图2中的输入输出设备的内存访问管理单元110),虚拟功能单元的数量由虚机VM的数量决定。本申请实施例的虚拟功能单元并不是单纯利用软件构造多个虚拟设备,而是物理构造多个虚拟功能单元,即每个虚拟功能单元都具备自己的硬件控制逻辑(即包括虚拟功能执行单元和虚拟功能操控单元),通过虚拟功能操控单元102实体实现,同时也共享物理功能模块的基础功能。
如图2所示,本申请的一些实施例提供一种输入输出设备的内存访问管理系统160,所述输入输出设备的内存访问管理系统160包括:输入输出设备的内存访问管理单元110以及任务调度单元101,其中,输入输出设备的内存访问管理单元110被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备的内存访问管理单元的个数与虚机的数量相同,所述输入输出设备的内存访问管理单元用于为一个虚机设置独立的客户机地址转换页表的使用环境;任务调度单元101,被配置为调配多个所述输入输出设备的内存访问管理单元110复用物理功能模块,其中,所述物理功能模块至少用于实现时钟管理和电源功耗管理。
需要说明的是,各输入输设备的内存访问管理单元110运行于相应虚机的操作系统中。例如,图2的虚机VM0的输入输出设备的内存访问管理单元运行于虚机VM0的虚机操作系统中,虚机VM2的输入输出设备的内存访问管理单元运行于虚机VM2的虚机操作系统中。这与相关技术(例如图1的架构)中将实现虚拟地址转换为物理地址的功能模块运行于主机操作系统具有实质性差异。
下面示例性阐述输入输出设备的内存访问管理单元110以及任务调度单元101的结构。
如图2所示,输入设备设备的内存访问管理单元110运行于虚机的操作系统中,输入输出设备的内存访问管理单元110包括:虚拟功能执行单元103,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备为实现所述虚机上运行的应用程序的功能所需的设备,所述访问请求携带所述虚拟地址;虚拟功能操控单元102,被配置为控制所述虚拟功能执行单元完成地址转换。
输入设备设备的内存访问管理单元110运行于虚机的操作系统中,如图3所示,图2的虚拟功能执行单元103包括:页表查询模块260、地址转换快速缓存模块270以及身份识别模块280,其中,页表查询模块260被配置为依据客户机地址转换页表完成所述虚拟地址向所述物理地址的转换;地址转换快速缓存模块270被配置为依据映射关系表获取所述虚拟地址对应的所述物理地址,其中,所述映射关系表用于存储多个虚拟地址与物理地址的对应关系;身份识别模块280被配置为依据所述虚机的身份标识过滤掉来自于其余虚机对应的输入输出设备的访问请求。
例如,图3的输入输出设备发出一个DMA请求,且在请求中携带虚拟地址信息,之后任务调度单元101接收该请求,再由身份识别模块280根据(PCIE Bus Device Function)虚机身份标识ID将请求分配给对应的页表查询模块260或者地址转换快速缓存模块270,完成地址转换。
需要说明的是,在本申请的另一些实施例中,也可以有任务调度单元101获取某个输入输出设备的虚拟地址,并根据(PCIE Bus Device Function)携带的虚机的身份标志信息ID将请求分配给对应的输入输出设备的内存访问管理模块。可以理解的是,此时各输入输出设备的内存访问管理模块中可以不包括身份识别模块280。
如图3所示,在本申请的一些实施例中,图2的虚拟功能操控单元102包括如下模块。
控制命令传递模块220、地址转换状态记录模块210以及索引地址记录模块,其中,控制命令传递模块220被配置为接收由所述操作系统生成的控制信息,并将所述控制信息向所述虚拟功能执行单元传递。
地址转换状态记录模块210被配置为实时记录所述虚拟功能执行单元的工作状态,以供所述操作系统读取所述工作状态。之后相应虚机的操作系统会根据工作状态生成控制信息,之后再向控制命令传递模块传输控制信息。
索引地址记录模块被配置为记录虚拟功能命令、虚拟功能事件和外设页表的索引地址,以供所述页表查询模块完成页表查询操作得到所述客户机地址转换页表。页表查询模块根据得到的客户机地址转换页表完成虚拟地址向物理地址的转换。例如,如3所示,索引地址记录模块包括虚拟功能命令索引地址模块230、虚拟功能事件索引地址模块240以及外设页表索引地址模块250。
如图3所示,在本申请的一些实施例中,输入设备设备的内存访问管理单元110运行于虚机的操作系统中,图3的虚拟功能操控单元102还包括:虚机身份标识记录模块290,该机身份标识记录模块290被配置为接收来自于所述操作系统的所述虚机的身份标识,并向所述身份识别模块提供所述身份标识。
需要说明的是,页表查询模块260根据所述外设页表的索引地址查找所述客户机地址转换页表,其中,所述客户机地址页表存储在系统内存中。所述虚拟功能执行单元103还被配置为:根据所述索引地址查找与所述虚机对应的虚拟功能的事件记录单元和虚拟功能的命令单元,其中,所述虚机对应的虚拟功能的事件记录单元存储在系统内存中的虚拟功能事件记录阵列中,所述虚拟功能的命令单元存储在所述系统内存中的虚拟功能命令阵列中。
本申请一些实施例的任务调度单元101采用时分复用的策略控制同一时刻只有一个输入输出设备的内存访问管理单元110占用所述物理功能模块所能提供的所有功能。或者任务调度单元101采用轮询方式处理来自于多个所述输入输出设备的内存访问管理单元的地址转换请求。
如图4所示,本申请的一些实施例提供一种地址转换方法,所述虚拟地址转换方法包括:S101,获取输入输出设备的内存访问请求;S102,获取与所述内存访问请求对应的虚机的标识信息;S103,根据所述标识信息将所述访问请求发送至目标输入输出设备的内存访问管理单元,以通过所述目标输入输出设备的内存访问管理单元完成虚拟地址向物理地址的转换。
在本申请的一些实施例中,S103包括:确认通过地址转换快速缓存单元存储的地址转换关系获取所述物理地址。在本申请的另一些实施例中,S103包括:确认通过地址转换快速缓存单元存储的地址转换关系未获取所述虚拟地址对应的物理地址;通过页表查询从内存中的页表索引所述物理地址。例如,所述通过页表查询从内存中的页表索引所述物理地址,包括:依据内存中虚拟功能指令和客户机地址转换页表Guest Page Table将所述虚拟地址做转换成所述物理地址。
本申请的一些实施例在快速查找失败后,会再启动基于页表查询的方法完成虚拟地址向物理地址的转换,提升了地址转换的成功率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述方法的具体工作过程,可以参考前述系统中的对应过程,为避免重复在此不再过多赘述。
下面以PCIE协议为例示例性阐述配置输入输出设备的内存访问控制单元以及基于配置好的输入输出的内存访问控制单元完成虚拟地址向物理地址转换的方法。
S501,通过各虚机操作系统配置与各虚机对应的输入输出设备的内存访问管理单元。
基于虚机VM运行的客户端操作系统GuestOS通过虚拟功能操控单元vMMIO配置虚拟功能并在内存中建立vIOMMU命令缓存单元(与多个输入输出设备的内存访问管理单元对应的多个vIOMMU命令缓存单元组成图5的vIOMMU命令缓存阵列),分配唯一的身份标识ID给虚拟功能操控单元和虚拟功能执行单元。需要说明的是,在建立VM(虚机)时主机host会为虚机分配内存,虚机操作系统GuestOS使用主机为其分配的内存完成虚拟地址向物理地址的转换。
作为一个示例,虚机操作系统GuestOS启动时,先将相关内容写入虚拟功能操控单元vMMIO中,再根据虚拟功能执行单元工作中反馈的状态信息和事件日志内容,来选择将控制命令写入命令缓存单元。例如,写入虚拟功能操控单元的相关内如包括:vF使能,该信号控制虚机操作系统GuestOS启动阶段使能各输入输出设备的内存访问管理单元;vF存储空间使能,该信号用于在GuestOS启动阶段使输入输出设备的内存访问管理单元具有访问系统内存的权限;vF奇偶使能,该使能信号使客户机操作系统GuestOS在启动阶段配置输入输出设备的内存访问管理单元具有奇偶校验功能;vF切断中断信号,该信号用于在GuestOS启动阶段配置关闭或打开输入输出设备的内存访问管理单元的中断。例如,写入命令缓存单元的相关的命令包括:客户页表获取命令,该命令使得页表查询模块预取客户设备页表;客户机页表失效命令,该命令用于提示设备页表已经失效,将输入输出设备的内存访问管理单元中的地址转换快速缓存模块清除其存储的相关内容;复位指令,该指令用于复位输入输出设备的内存访问管理单元的硬件,使输入输出设备的内存访问管理单元中的功能恢复到初始状态。
需要说明的是,在本申请的实施例中由虚机操作系统GuestOS决定在内存缓存命令的具体位置,之后虚机操作系统通过输入输出设备的内存访问管理单元的虚拟功能操控模块包含的寄存器(即图5的BAR0)将命令缓存索引信息提供给虚拟功能执行单元。图5的BAR0用于存储相应输入输出设备的内存访问管理单元的虚拟功能命令索引地址(对应于图3的虚拟功能命令索引地址模块230),BAR1用于存储相应输入输出设备的内存访问管理单元的虚拟功能事件索引地址(对应于图3的虚拟功能事件索引地址模块240)以及BAR2用于存储外设页表索引地址(对应于图3的外设页表索引地址模块250)。图5的status of vf对应于图3的地址转换状态记录模块210,control of vf对应于图3的控制命令传递模块220。为避免重复图5中各模块的相关功能可以参考上文描述,再此不做过多赘述。
S502,客户机应用程序GuestApp配置输入输出设备发起对虚机操作系统对应内存的DMA应用访问。其中,客户机应用程序对输入输出设备的配置属于操作系统对外设的应用范畴。
S503,基于PCIE协议的输入输出设备的虚拟地址被任务调度单元101获取。任务调度单元101根据(PCIE Bus Device Function)身份标识信息ID将请求分配给对应的输入输出设备的内存访问管理单元。需要说明的是,图5为了简要仅示出了一个的输入输出设备的内存访问管理单元,但是本领域技术人员应当理解图5可以包括多个输入输出设备的内存访问管理单元,相应的任务调度单元101会根据在S501配置的身份标识信息将内存访问请求发送至与虚机身边标识信息对应设置的目标输入输出设备的内存访问管理单元。
S504,目标输入输出设备的内存访问管理单元包括的虚拟功能执行单元先利用地址转换快速缓存TLB cache查找物理地址,如果可以在TLB中查询到相应的物理地址,则直接使用查询到的物理地址访问虚机操作系统对应的内存,完成虚机地址地址转换。也就是说,优先通过地址转换快速缓存模块270查找虚机地址对应的物理地址。如没有查询到(cache miss),则执行S505和S506的步骤,即通过页表查询模块260完成地址转换。
S505,利用页表查询模块260从内存中获取客户机地址转换页表。因为存在多个输入输出设备的内存访问管理单元同时访问内存的情形,所以任务调度单元101可以利用轮询round robin算法控制各个输入输出设备的内存访问管理单元依次访问内存。
S506,输入输出设备的内存访问管理单元的页表查询模块260依据内存中vIOMMU命令缓存单元中的存储的指令和客户机地址页表Guest Page Table对输入输出设备发出的DMA请求携带的虚拟地址做转换,即将虚拟地址转换成物理地址,完成输入输出设备的数据访问操作。本申请实施例的客户机(或称为虚机、云客户等)可以在新架构(即图2的架构)下独立操作输入输出设备的内存访问管理单元,摆脱了相关技术中(即图1架构)宿主机(HostOS中的Hypervisor)的监控管理,从而保证客户机的私有数据安全。
需要说明的是,在本申请的一些实施例的输入输出设备的内存访问管理单元是依据SR-IOV协议构造出的虚拟功能,该虚拟功能受到虚拟功能操控单元和vIOMMU命令存储阵列存储的命令的控制,实现输入输出设备对应的DMA虚拟地址到物理地址的转换,每个虚拟功能操控单元之间独立存在,它受到单一客户端操作系统的直接控制。图5的vIOMMU命令缓存阵列由多个缓存单元构成,由相应的虚机(例如,VM0,VM1,VM2)中的GuestOS单独直接组建。图5的事件缓存阵列由多个事件日志构成,各事件日志分别用于记录各虚拟功能执行单元生成的事件等,即用于存放各个输入输出设备的内存访问管理单元运行中的事件信息。图5的任务调度单元101用于调配各个输入输出设备的内存访问管理单元和物理功能模块(参考图2)之间的分时复用。物理功能模块主要实现时钟管理,电源功耗管理等基础功能。任务调度单元101用于实现同一时刻只有一个输入输出设备的内存访问管理单元可以占用物理功能模块的所有功能。
本申请一些实施例的虚拟功能操控单元是虚机操作系统对虚拟功能执行单元的一个操控窗口,该虚拟功能操控单元主要包含控制信息。虚拟功能执行单元可以是一个硬件执行单元,实现来自虚拟功能操控单元的控制需求,以及来自外部的输入输出设备的地址转换需求。图5的Control of vF(对应于图3的控制命令传递模块220)是一个映射到虚机操作系统GuestOS的寄存器模块,Guest OS向控制命令传递模块220写入期望的控制值,之后控制命令传递模块220再将控制信息传递给虚拟功能执行单元。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (20)
1.一种输入输出设备的内存访问管理单元,其特征在于,所述输入输设备的内存访问管理单元运行于虚机的操作系统中,所述输入输出设备的内存访问管理单元包括:
虚拟功能执行单元,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备为实现所述虚机上运行的应用程序的功能所需的设备,所述访问请求携带所述虚拟地址;
虚拟功能操控单元,被配置为控制所述虚拟功能执行单元完成地址转换。
2.如权利要求1所述的输入输出设备的内存访问管理单元,其特征在于,所述虚拟功能执行单元包括:
页表查询模块,被配置为依据客户机地址转换页表完成所述虚拟地址向所述物理地址的转换;
地址转换快速缓存模块,被配置为依据映射关系表获取所述虚拟地址对应的所述物理地址,其中,所述映射关系表用于存储多个虚拟地址与物理地址的对应关系;
身份识别模块,被配置为依据所述虚机的身份标识过滤来自于其余虚机对应的输入输出设备的访问请求。
3.如权利要求2所述的输入输出设备的内存访问管理单元,其特征在于,所述虚拟功能操控单元包括:
控制命令传递模块,被配置为接收由所述操作系统生成的控制信息,并将所述控制信息向所述虚拟功能执行单元传递;
地址转换状态记录模块,被配置为实时记录所述虚拟功能执行单元的工作状态,以供所述操作系统读取所述工作状态;
索引地址记录模块,被配置为记录与所述虚机对应的虚拟功能命令、虚拟功能事件和外设页表的索引地址,以供所述页表查询模块完成页表查询操作得到所述客户机地址转换页表。
4.如权利要求3所述的输入输出设备的内存访问管理单元,其特征在于,所述虚拟功能操控单元还包括:
虚机身份标识记录模块,被配置为接收来自于所述操作系统的所述虚机的身份标识,并向所述身份识别模块提供所述身份标识。
5.如权利要求3所述的输入输出设备的内存访问管理单元,其特征在于,所述页表查询模块根据所述外设页表的索引地址查找客户机地址转换页表,其中,所述客户机地址转换页表存储在系统内存中。
6.如权利要求5所述的输入输出设备的内存访问管理单元,其特征在于,所述虚拟功能执行单元还被配置为:根据所述索引地址查找与所述虚机对应的虚拟功能的事件记录单元和虚拟功能的命令单元,其中,所述虚机对应的虚拟功能的事件记录单元存储在系统内存中的虚拟功能事件记录阵列中,所述虚拟功能的命令单元存储在所述系统内存中的虚拟功能命令阵列中。
7.一种输入输出设备的内存访问管理系统,其特征在于,所述输入输出设备的内存访问管理系统包括:
输入输出设备的内存访问管理单元,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备的内存访问管理单元的个数与虚机的数量相同,所述输入输出设备的内存访问管理单元用于为一个虚机设置独立的客户机地址转换页表的使用环境;
任务调度单元,被配置为调配多个所述输入输出设备的内存访问管理单元复用物理功能模块,其中,所述物理功能模块至少用于实现时钟管理和电源功耗管理。
8.如权利要求7所述的输入输出设备的内存访问管理系统,其特征在于,所述各输入输出设备的内存访问管理单元运行于相应虚机的操作系统中。
9.如权利要求7所述的输入输出设备的内存访问管理系统,其特征在于,所述输入输出设备的内存访问管理单元运行于虚机的操作系统中,所述输入输出设备的内存访问管理单元包括:
虚拟功能执行单元,被配置为执行输入输出设备的内存访问请求对应的虚拟地址向物理地址的转换,其中,所述输入输出设备为实现所述虚机上运行的应用程序的功能所需的设备,所述访问请求携带所述虚拟地址;
虚拟功能操控单元,被配置为控制所述虚拟功能执行单元完成地址转换。
10.如权利要求9所述的输入输出设备的内存访问管理系统,其特征在于,所述虚拟功能执行单元包括:
页表查询模块,被配置为依据客户机地址转换页表完成所述虚拟地址向所述物理地址的转换;
地址转换快速缓存模块,被配置为依据映射关系表获取所述虚拟地址对应的所述物理地址,其中,所述映射关系表用于存储多个虚拟地址与物理地址的对应关系;
身份识别模块,被配置为依据所述虚机的身份标识过滤掉来自于其余虚机对应的输入输出设备的访问请求。
11.如权利要求10所述的输入输出设备的内存访问管理系统,其特征在于,所述虚拟功能操控单元,包括:
控制命令传递模块,被配置为接收由所述操作系统生成的控制信息,并将所述控制信息向所述虚拟功能执行单元传递;
地址转换状态记录模块,被配置为实时记录所述虚拟功能执行单元的工作状态,以供所述操作系统读取所述工作状态;
索引地址记录模块,被配置为记录虚拟功能命令、虚拟功能事件和外设页表的索引地址,以供所述页表查询模块完成页表查询操作得到所述客户机地址转换页表。
12.如权利要求11所述的输入输出设备的内存访问管理系统,其特征在于,所述虚拟功能操控单元还包括:
虚机身份标识记录模块,被配置为接收来自于所述操作系统的所述虚机的身份标识,并向所述身份识别模块提供所述身份标识。
13.如权利要求11所述的输入输出设备的内存访问管理系统,其特征在于,所述页表查询模块根据所述外设页表的索引地址查找所述客户机地址转换页表,其中,所述客户机地址转换页表存储在系统内存中。
14.如权利要求11所述的输入输出设备的内存访问管理系统,其特征在于,所述虚拟功能执行单元还被配置为:根据所述索引地址查找与所述虚机对应的虚拟功能的事件记录单元和虚拟功能的命令单元,其中,所述虚机对应的虚拟功能的事件记录单元存储在系统内存中的虚拟功能事件记录阵列中,所述虚拟功能的命令单元存储在所述系统内存中的虚拟功能命令阵列中。
15.如权利要求7所述的输入输出设备的内存访问管理系统,其特征在于,所述任务调度单元采用时分复用的策略控制同一时刻只有一个所述输入输出设备的内存访问管理单元占用所述物理功能模块所能提供的功能。
16.如权利要求7所述的输入输出设备的内存访问管理系统,其特征在于,所述任务调度单元采用轮询方式处理来自于多个所述输入输出设备的内存访问管理单元的地址转换请求。
17.一种地址转换方法,其特征在于,所述地址转换方法包括:
获取输入输出设备的内存访问请求;
获取与所述内存访问请求对应的虚机的标识信息;
根据所述标识信息将所述访问请求发送至目标输入输出设备的内存访问管理单元,以通过所述目标输入输出设备的内存访问管理单元完成虚拟地址向物理地址的转换。
18.如权利要求17所述的地址转换方法,其特征在于,所述根据所述标识信息将所述访问请求发送至目标输入输出设备的内存访问管理单元,以通过所述目标输入输出设备的内存访问管理单元完成虚拟地址向物理地址的转换,包括:
确认通过地址转换快速缓存单元存储的地址转换关系获取所述物理地址。
19.如权利要求17所述的地址转换方法,其特征在于,所述根据所述标识信息将所述访问请求发送至目标输入输出设备的内存访问管理单元,以通过所述目标输入输出设备的内存访问管理单元完成虚拟地址向物理地址的转换,包括:
确认通过地址转换快速缓存单元存储的地址转换关系未获取所述虚拟地址对应的物理地址;
通过页表查询从内存中的页表索引所述物理地址。
20.如权利要求19所述的地址转换方法,其特征在于,所述通过页表查询从内存中的页表索引所述物理地址,包括:
依据内存中存储的虚拟功能命令和客户机地址转换页表将所述虚拟地址做转换成所述物理地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011513824.0A CN112612574B (zh) | 2020-12-18 | 2020-12-18 | 输入输出设备的内存访问管理单元、系统及地址转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011513824.0A CN112612574B (zh) | 2020-12-18 | 2020-12-18 | 输入输出设备的内存访问管理单元、系统及地址转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612574A true CN112612574A (zh) | 2021-04-06 |
CN112612574B CN112612574B (zh) | 2023-09-26 |
Family
ID=75243695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011513824.0A Active CN112612574B (zh) | 2020-12-18 | 2020-12-18 | 输入输出设备的内存访问管理单元、系统及地址转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612574B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472571A (zh) * | 2021-06-28 | 2021-10-01 | 北京汇钧科技有限公司 | 一种智能网卡设备和智能网卡设备的旁路探测方法 |
WO2023165319A1 (zh) * | 2022-03-02 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 内存访问方法、装置和输入输出内存管理单元 |
CN117093158A (zh) * | 2023-10-17 | 2023-11-21 | 苏州元脑智能科技有限公司 | 分布式存储系统的存储节点、系统、数据处理方法及装置 |
CN117472805A (zh) * | 2023-12-26 | 2024-01-30 | 北京数渡信息科技有限公司 | 一种基于virtio的虚拟化IO设备内存管理系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050763A1 (en) * | 2005-08-23 | 2007-03-01 | Mellanox Technologies Ltd. | System and method for accelerating input/output access operation on a virtual machine |
US20080005297A1 (en) * | 2006-05-16 | 2008-01-03 | Kjos Todd J | Partially virtualizing an I/O device for use by virtual machines |
CN101520753A (zh) * | 2008-02-29 | 2009-09-02 | Arm有限公司 | 数据处理设备和控制虚拟机对安全存储器的访问的方法 |
US20100250895A1 (en) * | 2009-03-27 | 2010-09-30 | Vmware, Inc. | Hardware assistance for shadow page table coherence with guest page mappings |
US20140068137A1 (en) * | 2012-08-29 | 2014-03-06 | Andrew G. Kegel | Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine |
US20140156930A1 (en) * | 2012-12-05 | 2014-06-05 | Arm Limited | Caching of virtual to physical address translations |
CN104063281A (zh) * | 2013-03-21 | 2014-09-24 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
US10642501B1 (en) * | 2014-01-10 | 2020-05-05 | MIPS Tech, LLC | Hardware virtualized input output memory management unit |
-
2020
- 2020-12-18 CN CN202011513824.0A patent/CN112612574B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050763A1 (en) * | 2005-08-23 | 2007-03-01 | Mellanox Technologies Ltd. | System and method for accelerating input/output access operation on a virtual machine |
US20080005297A1 (en) * | 2006-05-16 | 2008-01-03 | Kjos Todd J | Partially virtualizing an I/O device for use by virtual machines |
CN101520753A (zh) * | 2008-02-29 | 2009-09-02 | Arm有限公司 | 数据处理设备和控制虚拟机对安全存储器的访问的方法 |
US20100250895A1 (en) * | 2009-03-27 | 2010-09-30 | Vmware, Inc. | Hardware assistance for shadow page table coherence with guest page mappings |
US20140068137A1 (en) * | 2012-08-29 | 2014-03-06 | Andrew G. Kegel | Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine |
CN104685479A (zh) * | 2012-08-29 | 2015-06-03 | 超威半导体公司 | 客户虚拟机内的虚拟输入/输出存储器管理单元 |
US20140156930A1 (en) * | 2012-12-05 | 2014-06-05 | Arm Limited | Caching of virtual to physical address translations |
CN104063281A (zh) * | 2013-03-21 | 2014-09-24 | 华为技术有限公司 | 一种调控虚拟机物理内存的方法和装置 |
US10642501B1 (en) * | 2014-01-10 | 2020-05-05 | MIPS Tech, LLC | Hardware virtualized input output memory management unit |
Non-Patent Citations (1)
Title |
---|
蔡万伟;台运方;刘奇;张晓辉;张戈;: "基于MIPS架构的异构内存虚拟化方法研究", 高技术通讯, no. 09 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472571A (zh) * | 2021-06-28 | 2021-10-01 | 北京汇钧科技有限公司 | 一种智能网卡设备和智能网卡设备的旁路探测方法 |
CN113472571B (zh) * | 2021-06-28 | 2023-11-03 | 北京汇钧科技有限公司 | 一种智能网卡设备和智能网卡设备的旁路探测方法 |
WO2023165319A1 (zh) * | 2022-03-02 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 内存访问方法、装置和输入输出内存管理单元 |
CN117093158A (zh) * | 2023-10-17 | 2023-11-21 | 苏州元脑智能科技有限公司 | 分布式存储系统的存储节点、系统、数据处理方法及装置 |
CN117093158B (zh) * | 2023-10-17 | 2024-02-06 | 苏州元脑智能科技有限公司 | 分布式存储系统的存储节点、系统、数据处理方法及装置 |
CN117472805A (zh) * | 2023-12-26 | 2024-01-30 | 北京数渡信息科技有限公司 | 一种基于virtio的虚拟化IO设备内存管理系统 |
CN117472805B (zh) * | 2023-12-26 | 2024-03-26 | 北京数渡信息科技有限公司 | 一种基于virtio的虚拟化IO设备内存管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112612574B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775325B2 (en) | Dynamic I/O virtualization system having guest memory management for mapping virtual addresses using virtualization application programming interface (API) in guest kernal | |
CN112612574B (zh) | 输入输出设备的内存访问管理单元、系统及地址转换方法 | |
US9612966B2 (en) | Systems, methods and apparatus for a virtual machine cache | |
JP6110946B2 (ja) | ゲスト仮想マシン内の仮想入出力メモリ管理ユニット | |
CN102077188B (zh) | 用于虚拟化操作系统的直接存储器访问过滤器 | |
US10956189B2 (en) | Methods for managing virtualized remote direct memory access devices | |
US11016817B2 (en) | Multi root I/O virtualization system | |
US11836091B2 (en) | Secure memory access in a virtualized computing environment | |
US10671419B2 (en) | Multiple input-output memory management units with fine grained device scopes for virtual machines | |
US10331591B2 (en) | Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention | |
US10713081B2 (en) | Secure and efficient memory sharing for guests | |
JP6242502B2 (ja) | 仮想計算機システムの制御方法及び仮想計算機システム | |
KR20220017949A (ko) | 입력-출력 메모리 관리 유닛에 의한 게스트 운영 체제 버퍼 및 로그 액세스 | |
US20190155745A1 (en) | Shared memory in a virtual environment | |
CN116305332A (zh) | 检测基于ats的dma攻击的方法和装置 | |
US20170199701A1 (en) | Enhanced message control banks | |
Gottesman et al. | NeSC: Self-virtualizing nested storage controller | |
EP2633412A2 (en) | Secure partitioning with shared input/output |
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 |