一种设备分配方法及系统转让专利

申请号 : CN201010123525.6

文献号 : CN102193816B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 顾文锦贾兵王淼宋靖林诗达刘欣房

申请人 : 中国长城计算机深圳股份有限公司

摘要 :

本发明适用于计算机技术领域,提供了一种设备分配方法及系统,所述方法包括下述步骤:系统上电,在物理BIOS中启动双显卡,完成初始化操作;控制对虚拟系统BIOS进行I/O访问的初始化设置;通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,控制设备的DMA操作直接访问到客户机的内存空间;在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,所述MMIO操作可直接访问硬件,实现设备的高效虚拟化和分配。

权利要求 :

1.一种设备分配方法,其特征在于,所述方法包括下述步骤:

系统上电,在物理BIOS中启动双显卡,完成初始化操作;

控制对虚拟系统BIOS进行I/O访问的初始化设置;

通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,通过在系统内存的低端划出一块区域,将其分配给客户系统,使客户系统中的客户机页面号与机器页面号相等,控制设备的DMA操作直接访问到客户机的内存空间;

在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,对于没有页对齐的设备,控制虚拟机监控器扫描PCI总线,控制将所述没有页对齐的MMIO地址改为页对齐,所述MMIO操作可直接访问硬件。

2.如权利要求1所述的方法,其特征在于,所述控制对虚拟系统BIOS进行I/O访问的初始化设置的步骤具体包括下述步骤:对目标客户机之外的其他客户机隐藏需要分配的设备。

3.如权利要求1所述的方法,其特征在于,所述控制对虚拟系统BIOS进行I/O访问的初始化设置的步骤具体包括下述步骤:控制虚拟件监控器截获客户机访问的虚拟I/O地址空间,根据预先建立客户机访问的虚拟I/O地址与设备的真实I/O地址的转换表,把I/O请求转发到设备的真实I/O地址空间。

4.如权利要求1所述的方法,其特征在于,所述控制对虚拟系统BIOS进行I/O访问的初始化设置的步骤具体包括下述步骤:将为设备生成的虚拟的PCI配置空间挂接在虚拟PCI总线上。

5.一种设备分配系统,其特征在于,所述设备分配系统内置于计算机,所述系统包括:初始化操作模块,用于系统上电,在物理BIOS中启动双显卡,完成初始化操作;

设置模块,用于控制对虚拟系统BIOS进行I/O访问的初始化设置;

DMA重映射控制模块,用于通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,通过在系统内存的低端划出一块区域,将其分配给客户系统,使客户系统中的客户机页面号与机器页面号相等,控制设备的DMA操作直接访问到客户机的内存空间;以及BIOS设备分配控制模块,用于在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,对于没有页对齐的设备,控制虚拟机监控器扫描PCI总线,控制将所述没有页对齐的MMIO地址改为页对齐,所述MMIO操作可直接访问硬件。

6.如权利要求5所述的系统,其特征在于,所述设置模块具体包括:隐藏控制模块,用于对目标客户机之外的其他客户机隐藏需要分配的设备。

7.如权利要求5所述的系统,其特征在于,所述设置模块具体包括:地址空间转换控制模块,用于控制虚拟件监控器截获客户机访问的虚拟I/O地址空间,根据预先建立客户机访问的虚拟I/O地址与设备的真实I/O地址的转换表,把I/O请求转发到设备的真实I/O地址空间。

8.如权利要求5所述的系统,其特征在于,所述设置模块具体包括:挂机模块,用于将为设备生成的虚拟的PCI配置空间挂接在虚拟PCI总线上。

说明书 :

一种设备分配方法及系统

技术领域

[0001] 本发明属于计算机技术领域,尤其涉及一种设备分配方法及系统。

背景技术

[0002] 在计算机领域,虚拟机对物理资源的虚拟可以归结为三个主要任务:处理器虚拟化、内存虚拟化和I/O虚拟化,其中,I/O访问密集型系统对整个虚拟化系统造成的影响远大于计算机密集型,I/O虚拟化是制约系统性能的瓶颈,将影响整个系统的稳定性和性能。
[0003] 在现有技术中,I/O设备虚拟化可以归纳为类虚拟化、设备虚拟化和直接分配虚拟化。
[0004] 类虚拟化系统中客户机操作系统不使用任何现有的硬件设备驱动,而是使用一种前后端交互的设备驱动来发送I/O请求和接收I/O反馈。处于客户机操作系统内的一端成为前端设备驱动,处于Domain0一端成为后端设备驱动。类虚拟化设备驱动区分设备型号,而使每个设备类型使用一种设备驱动,前端驱动和后端驱动问通过事件通道机制进行异步通信,这种方式通过修改客户机操作系统的驱动程序,使得设备驱动可以通过虚拟机监控器提供的接口直接与硬件设备交互,但是缺乏通用性、不利于推广。
[0005] 在设备虚拟化系统中,虚拟机监控器需要对某一目标设备进行模拟,为客户机提供一个虚拟的设备,使其可以透明地对这个虚拟设备进行操作,客户机操作系统发现虚拟的目标设备后,会使目标设备的驱动程序来驱动该设备,客户机中的驱动程序会发出一些请求并等待设备的响应,虚拟机监控器拦截并处理所有的设备请求,并将响应返回给客户机操作系统,客户机的原有驱动程序无需修改就能驱动虚拟设备,但是频繁的切换和复杂的软件设计带来客户机性能损失。
[0006] 因此,现有技术提供的包括类虚拟化和设备虚拟化技术方案对I/O设备的虚拟,影响系统的稳定性和性能,存在较大的缺陷。

发明内容

[0007] 本发明实施例的目的在于提供一种设备分配方法,旨在解决现有技术提供的包括类虚拟化和设备虚拟化技术方案对I/O设备的虚拟,影响系统的稳定性和性能,存在较大的缺陷的问题。
[0008] 本发明实施例是这样实现的,一种设备分配方法,所述方法包括下述步骤:
[0009] 系统上电,在物理BIOS中启动双显卡,完成初始化操作;
[0010] 控制对虚拟系统BIOS进行I/O访问的初始化设置;
[0011] 通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,通过在系统内存的低端划出一块区域,将其分配给客户系统,使客户系统中的客户机页面号与机器页面号相等,控制设备的DMA操作直接访问到客户机的内存空间;
[0012] 在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,对于没有页对齐的设备,控制虚拟机监控器扫描PCI总线,控制将所述没有页对齐的MMIO地址改为页对齐,所述MMIO操作可直接访问硬件。
[0013] 本发明实施例的另一目的在于提供一种设备分配系统,所述设备分配系统内置于计算机,所述系统包括:
[0014] 初始化操作模决,用于系统上电,在物理BIOS中启动双显卡,完成初始化操作;
[0015] 设置模块,用于控制对虚拟系统BIOS进行I/O访问的初始化设置;
[0016] DMA重映射控制模块,用于通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,通过在系统内存的低端划出一块区域,将其分配给客户系统,使客户系统中的客户机页面号与机器页面号相等,控制设备的DMA操作直接访问到客户机的内存空间;以及
[0017] BIOS设备分配控制模块,用于在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,对于没有页对齐的设备,控制虚拟机监控器扫描PCI总线,控制将所述没有页对齐的MMIO地址改为页对齐,所述MMIO操作可直接访问硬件。
[0018] 在本发明实施例中,系统上电,在物理BIOS中启动双显卡,完成初始化操作;控制对虚拟系统BIOS进行I/O访问的初始化设置;通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,控制设备的DMA操作直接访问到客户机的内存空间;在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,所述MMIO操作可直接访问硬件,实现设备的高效虚拟化和分配。

附图说明

[0019] 图1是本发明实施例提供的设备分配方法的实现流程图;
[0020] 图2是本发明实施例提供的DMA重映射机制的示意图;
[0021] 图3是本发明实施例提供的设备直接分配模型示意图;
[0022] 图4是本发明实施例提供的设备分配系统的结构框图。

具体实施方式

[0023] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0024] 在本发明实施例中,系统上电,控制物理基本输入输出系统(Basic Input-output System,BIOS)和显卡BIOS启动,完成初始化操作;控制对虚拟系统BIOS进行I/O访问的初始化设置;通过直接存储访问(Direct Memory Access,DMA)重映射硬件截获设备的DMA的传输,并控制进行地址转换,控制设备的DMA操作直接访问到客户机的内存空间;在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,所述MMIO操作可直接访问硬件。
[0025] 图1示出了本发明实施例提供的设备分配方法的实现流程,其具体的步骤如下所述:
[0026] 在步骤S101中,系统上电,在物理BIOS中启动双显卡,完成初始化操作。
[0027] 在步骤S102中,控制对虚拟系统BIOS进行I/O访问的初始化设置。
[0028] 在本发明实施例中,控制对虚拟系统BIOS进行I/O访问的初始化设置的方式有多种,下述实施例给出了三种,但不用以限制本发明:
[0029] 1.对目标客户机之外的其他客户机隐藏需要分配的设备,隐藏的方式是在拥有硬件设备的客户机/宿主机家在驱动程序前,先给药分配出去的设备加载一个伪驱动作为占位符,由于没有真正的驱动程序,该设备就不会被目标客户机之外的其他客户机访问。
[0030] 2.控制虚拟件监控器截获客户机访问的虚拟I/O地址空间,根据预先建立客户机访问的虚拟I/O地址与设备的真实I/O地址的转换表,把I/O请求转发到设备的真实I/O地址空间。
[0031] 预先建立客户机访问的虚拟I/O地址与设备的真实I/O地址的转换表,报告虚拟的周边元件扩展接口(Peripheral Component Interconnection,PCI)BAR给客户机。当客户机访问到虚拟的I/O地址空间时,虚拟机监控器控制截获访问操作,并通过上述转换表把I/O请求转发到设备的真实I/O地址空间。
[0032] 3.将为设备生成的虚拟的PCI配置空间挂接在虚拟PCI总线上。
[0033] 为设备生成虚拟的PCI配置空间,将生成的虚拟PCI配置空间以一个虚拟设备的形式挂接在虚拟PCI总线上,当客户操作系统枚举总线时,即可发现设备并加载正确的驱动程序。
[0034] 在步骤S103中,通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,控制设备的DMA操作直接访问到客户机的内存空间。
[0035] 在本发明实施例中,上述步骤的执行是在VT-d技术平台下完成,如图2所示,VT-d技术在北桥引入DMA重映射硬件。
[0036] 在启动VT-d的平台上,设备所有的DMA传输都被DMA重映射硬件截获,根据设备对应的I/O页表,硬件可以对DMA的地址进行转换,使设备只能访问到规定的内存。
[0037] 在步骤S104中,在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,所述MMIO操作可直接访问硬件。在本发明实施例中,由于设备的多样性,无法提供一套同类设备的通用BIOS,因此,对于具有BIOS的设备,将设备BIOS区域直接映射到客户地址空间的相同区域,然后在客户影子页表中,根据P2M表写入正确的页表项,客户操作系统可直接进行BIOS调用,控制硬件设备。
[0038] 作为本发明的一个实施例,如图3所示:客户操作系统所有的PCI配置空间的访问及数据访问操作均会被虚拟机监控器截获后,转发给设备模拟器,然后对虚拟化设备通过虚拟机监控器访问硬件设备;对于直接分配设备通过MMIO(Memory Mapped I/O)和DMA直接访问硬件数据;具有BIOS的设备在直接分配时,通过客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,客户机的MMIO操作可直接访问硬件,无需虚拟机监控器转发;设备的DMA操作可以通过IOMMU(I/O Memory Management Unit)及逆行地址转换,直接客户地址空间交互;设备的BIOS需要对等映射到客户地址空间的相同区域,客户操作系统才可调用设备BIOS访问设备。
[0039] 为了解决不支持VT-d平台上硬件设备直接分配问题,可以在系统内存的低端划出一块区域,该区域拒绝虚拟机监控器的使用,将其分配给某个客户系统,使客户系统中的客户机页面号与机器页面号相等,以解决客户操作系统中硬件访问的DMA问题,使客户操作系统可以直接访问物理设备。
[0040] 在本发明实施例中,虚拟机监控器不能直接分配那些MMIO没有页对齐的设备,而对于没有页对齐的设备,控制虚拟机监控器扫描PCI总线,控制将所述没有页对齐的MMIO地址改为页对齐。
[0041] 在虚拟机监控器中,程序代码和堆栈所使用的内存位于物理内存1MB~12MB的位置,然而,在1∶1每寸映射后,此段内存有可能被客户操作系统访问到,为了避免客户操作系统访问到此段内存,造成系统崩溃,将虚拟机监控器的程序代码和堆栈移到了1∶1内存上。
[0042] 图4示出了本发明实施例提供的设备分配系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分,其中,设备分配系统可以内置于计算机的软件单元、硬件单元或软硬件结合单元。
[0043] 系统上电,初始化操作模块11在物理BIOS中启动双显卡,完成初始化操作;设置模块12控制对虚拟系统BIOS进行I/O访问的初始化设置;DMA重映射控制模块13通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,控制设备的DMA操作直接访问到客户机的内存空间;BIOS设备分配控制模块14在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,所述MMIO操作可直接访问硬件。
[0044] 在本发明实施例中,修改模块15对于没有页对齐的设备,控制虚拟机监控器扫描PCI总线,控制将所述没有页对齐的MMIO地址修改为页对齐。
[0045] 在本发明实施例中,隐藏控制模块121对目标客户机之外的其他客户机隐藏需要分配的设备;地址空间转换控制模块122控制虚拟件监控器截获客户机访问的虚拟I/O地址空间,根据预先建立客户机访问的虚拟I/O地址与设备的真实I/O地址的转换表,把I/O请求转发到设备的真实I/O地址空间;挂接模块123将为设备生成的虚拟的PCI配置空间挂接在虚拟PCI总线上。
[0046] 上述仅为本发明系统实施例的描述,其具体的实施如上述流程所述,在此不再赘述,但不用以限制本发明。
[0047] 在本发明实施例中,系统上电,在物理BIOS中启动双显卡,完成初始化操作;控制对虚拟系统BIOS进行I/O访问的初始化设置;通过DMA重映射硬件截获设备的DMA的传输,并控制进行地址转换,控制设备的DMA操作直接访问到客户机的内存空间;在具有BIOS的设备进行分配时,通过设置客户机影子页表,将I/O设备直接映射到客户机的MMIO空间中,所述MMIO操作可直接访问硬件,实现设备的高效虚拟化和分配。
[0048] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。