《一种设备分配方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种设备分配方法及系统.pdf(9页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102193816 A (43)申请公布日 2011.09.21 CN 102193816 A *CN102193816A* (21)申请号 201010123525.6 (22)申请日 2010.03.12 G06F 9/455(2006.01) G06F 13/28(2006.01) (71)申请人 中国长城计算机深圳股份有限公司 地址 518057 广东省深圳市南山区科技园长 城计算机大厦 (72)发明人 顾文锦 贾兵 王淼 宋靖 林诗达 刘欣房 (74)专利代理机构 深圳中一专利商标事务所 44237 代理人 张全文 (54) 发明名称 一种设备分配方法及系统。
2、 (57) 摘要 本发明适用于计算机技术领域, 提供了一种 设备分配方法及系统, 所述方法包括下述步骤 : 系统上电, 在物理 BIOS 中启动双显卡, 完成初始 化操作 ; 控制对虚拟系统 BIOS 进行 I/O 访问的初 始化设置 ; 通过 DMA 重映射硬件截获设备的 DMA 的传输, 并控制进行地址转换, 控制设备的 DMA 操 作直接访问到客户机的内存空间 ; 在具有 BIOS 的 设备进行分配时, 通过设置客户机影子页表, 将 I/O 设备直接映射到客户机的 MMIO 空间中, 所述 MMIO 操作可直接访问硬件, 实现设备的高效虚拟 化和分配。 (51)Int.Cl. (19)中。
3、华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 4 页 附图 3 页 CN 102193823 A1/1 页 2 1. 一种设备分配方法, 其特征在于, 所述方法包括下述步骤 : 系统上电, 在物理 BIOS 中启动双显卡, 完成初始化操作 ; 控制对虚拟系统 BIOS 进行 I/O 访问的初始化设置 ; 通过 DMA 重映射硬件截获设备的 DMA 的传输, 并控制进行地址转换, 控制设备的 DMA 操 作直接访问到客户机的内存空间 ; 在具有 BIOS 的设备进行分配时, 通过设置客户机影子页表, 将 I/O 设备直接映射到客 户机的 MMIO 空间中, 所述 。
4、MMIO 操作可直接访问硬件。 2. 如权利要求 1 所述的方法, 其特征在于, 所述控制对虚拟系统 BIOS 进行 I/O 访问的 初始化设置的步骤具体包括下述步骤 : 对目标客户机之外的其他客户机隐藏需要分配的设备。 3. 如权利要求 1 所述的方法, 其特征在于, 所述控制对虚拟系统 BIOS 进行 I/O 访问的 初始化设置的步骤具体包括下述步骤 : 控制虚拟件监控器截获客户机访问的虚拟 I/O 地址空间, 根据预先建立客户机访问的 虚拟 I/O 地址与设备的真实 I/O 地址的转换表, 把 I/O 请求转发到设备的真实 I/O 地址空 间。 4. 如权利要求 1 所述的方法, 其特征。
5、在于, 所述控制对虚拟系统 BIOS 进行 I/O 访问的 初始化设置的步骤具体包括下述步骤 : 将为设备生成的虚拟的 PCI 配置空间挂接在虚拟 PCI 总线上。 5. 如权利要求 1 所述的方法, 其特征在于, 所述方法还包括下述步骤 : 对于没有页对齐的设备, 控制虚拟机监控器扫描 PCI 总线, 控制将所述没有页对齐的 MMIO 地址改为页对齐。 6. 一种设备分配系统, 其特征在于, 所述设备分配系统内置于计算机, 所述系统包括 : 初始化操作模块, 用于系统上电, 在物理 BIOS 中启动双显卡, 完成初始化操作 ; 设置模块, 用于控制对虚拟系统 BIOS 进行 I/O 访问的初。
6、始化设置 ; DMA 重映射控制模块, 用于通过 DMA 重映射硬件截获设备的 DMA 的传输, 并控制进行地 址转换, 控制设备的 DMA 操作直接访问到客户机的内存空间 ; 以及 BIOS 设备分配控制模块, 用于在具有 BIOS 的设备进行分配时, 通过设置客户机影子页 表, 将 I/O 设备直接映射到客户机的 MMIO 空间中, 所述 MMIO 操作可直接访问硬件。 7. 如权利要求 6 所述的系统, 其特征在于, 所述设置模块具体包括 : 隐藏控制模块, 用于对目标客户机之外的其他客户机隐藏需要分配的设备。 8. 如权利要求 6 所述的系统, 其特征在于, 所述设置模块具体包括 : 。
7、地址空间转换控制模块, 用于控制虚拟件监控器截获客户机访问的虚拟 I/O 地址空 间, 根据预先建立客户机访问的虚拟 I/O 地址与设备的真实 I/O 地址的转换表, 把 I/O 请求 转发到设备的真实 I/O 地址空间。 9. 如权利要求 6 所述的系统, 其特征在于, 所述设置模块具体包括 : 挂机模块, 用于将为设备生成的虚拟的 PCI 配置空间挂接在虚拟 PCI 总线上。 10. 如权利要求 6 所述的系统, 其特征在于, 所述系统还包括 : 修改模块, 用于对于没有页对齐的设备, 控制虚拟机监控器扫描 PCI 总线, 控制将所述 没有页对齐的 MMIO 地址修改为页对齐。 权 利 要。
8、 求 书 CN 102193816 A CN 102193823 A1/4 页 3 一种设备分配方法及系统 技术领域 0001 本发明属于计算机技术领域, 尤其涉及一种设备分配方法及系统。 背景技术 0002 在计算机领域, 虚拟机对物理资源的虚拟可以归结为三个主要任务 : 处理器虚拟 化、 内存虚拟化和 I/O 虚拟化, 其中, I/O 访问密集型系统对整个虚拟化系统造成的影响远 大于计算机密集型, I/O 虚拟化是制约系统性能的瓶颈, 将影响整个系统的稳定性和性能。 0003 在现有技术中, I/O 设备虚拟化可以归纳为类虚拟化、 设备虚拟化和直接分配虚拟 化。 0004 类虚拟化系统中客。
9、户机操作系统不使用任何现有的硬件设备驱动, 而是使用一种 前后端交互的设备驱动来发送 I/O 请求和接收 I/O 反馈。处于客户机操作系统内的一端成 为前端设备驱动, 处于 Domain0 一端成为后端设备驱动。类虚拟化设备驱动区分设备型号, 而使每个设备类型使用一种设备驱动, 前端驱动和后端驱动间通过事件通道机制进行异步 通信, 这种方式通过修改客户机操作系统的驱动程序, 使得设备驱动可以通过虚拟机监控 器提供的接口直接与硬件设备交互, 但是缺乏通用性、 不利于推广。 0005 在设备虚拟化系统中, 虚拟机监控器需要对某一目标设备进行模拟, 为客户机提 供一个虚拟的设备, 使其可以透明地对这。
10、个虚拟设备进行操作, 客户机操作系统发现虚拟 的目标设备后, 会使目标设备的驱动程序来驱动该设备, 客户机中的驱动程序会发出一些 请求并等待设备的响应, 虚拟机监控器拦截并处理所有的设备请求, 并将响应返回给客户 机操作系统, 客户机的原有驱动程序无需修改就能驱动虚拟设备, 但是频繁的切换和复杂 的软件设计带来客户机性能损失。 0006 因此, 现有技术提供的包括类虚拟化和设备虚拟化技术方案对 I/O 设备的虚拟, 影响系统的稳定性和性能, 存在较大的缺陷。 发明内容 0007 本发明实施例的目的在于提供一种设备分配方法, 旨在解决现有技术提供的包括 类虚拟化和设备虚拟化技术方案对 I/O 设。
11、备的虚拟, 影响系统的稳定性和性能, 存在较大 的缺陷的问题。 0008 本发明实施例是这样实现的, 一种设备分配方法, 所述方法包括下述步骤 : 0009 系统上电, 在物理 BIOS 中启动双显卡, 完成初始化操作 ; 0010 控制对虚拟系统 BIOS 进行 I/O 访问的初始化设置 ; 0011 通过 DMA 重映射硬件截获设备的 DMA 的传输, 并控制进行地址转换, 控制设备的 DMA 操作直接访问到客户机的内存空间 ; 0012 在具有 BIOS 的设备进行分配时, 通过设置客户机影子页表, 将 I/O 设备直接映射 到客户机的 MMIO 空间中, 所述 MMIO 操作可直接访问。
12、硬件。 0013 本发明实施例的另一目的在于提供一种设备分配系统, 所述设备分配系统内置于 说 明 书 CN 102193816 A CN 102193823 A2/4 页 4 计算机, 所述系统包括 : 0014 初始化操作模块, 用于系统上电, 在物理 BIOS 中启动双显卡, 完成初始化操作 ; 0015 设置模块, 用于控制对虚拟系统 BIOS 进行 I/O 访问的初始化设置 ; 0016 DMA 重映射控制模块, 用于通过 DMA 重映射硬件截获设备的 DMA 的传输, 并控制进 行地址转换, 控制设备的 DMA 操作直接访问到客户机的内存空间 ; 以及 0017 BIOS 设备分配。
13、控制模块, 用于在具有 BIOS 的设备进行分配时, 通过设置客户机影 子页表, 将 I/O 设备直接映射到客户机的 MMIO 空间中, 所述 MMIO 操作可直接访问硬件。 0018 在本发明实施例中, 系统上电, 在物理 BIOS 中启动双显卡, 完成初始化操作 ; 控制 对虚拟系统 BIOS 进行 I/O 访问的初始化设置 ; 通过 DMA 重映射硬件截获设备的 DMA 的传 输, 并控制进行地址转换, 控制设备的 DMA 操作直接访问到客户机的内存空间 ; 在具有 BIOS 的设备进行分配时, 通过设置客户机影子页表, 将 I/O 设备直接映射到客户机的 MMIO 空间 中, 所述 M。
14、MIO 操作可直接访问硬件, 实现设备的高效虚拟化和分配。 附图说明 0019 图 1 是本发明实施例提供的设备分配方法的实现流程图 ; 0020 图 2 是本发明实施例提供的 DMA 重映射机制的示意图 ; 0021 图 3 是本发明实施例提供的设备直接分配模型示意图 ; 0022 图 4 是本发明实施例提供的设备分配系统的结构框图。 具体实施方式 0023 为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅仅用以解释本发明, 并 不用于限定本发明。 0024 在本发明实施例中, 系统上电, 控制物。
15、理基本输入输出系统 (BasicInput-output System, BIOS) 和显卡 BIOS 启动, 完成初始化操作 ; 控制对虚拟系统 BIOS 进行 I/O 访问的 初始化设置 ; 通过直接存储访问 (Direct MemoryAccess, DMA) 重映射硬件截获设备的 DMA 的传输, 并控制进行地址转换, 控制设备的 DMA 操作直接访问到客户机的内存空间 ; 在具有 BIOS 的设备进行分配时, 通过设置客户机影子页表, 将 I/O 设备直接映射到客户机的 MMIO 空间中, 所述 MMIO 操作可直接访问硬件。 0025 图 1 示出了本发明实施例提供的设备分配方法的。
16、实现流程, 其具体的步骤如下所 述 : 0026 在步骤 S101 中, 系统上电, 在物理 BIOS 中启动双显卡, 完成初始化操作。 0027 在步骤 S102 中, 控制对虚拟系统 BIOS 进行 I/O 访问的初始化设置。 0028 在本发明实施例中, 控制对虚拟系统BIOS进行I/O访问的初始化设置的方式有多 种, 下述实施例给出了三种, 但不用以限制本发明 : 0029 1. 对目标客户机之外的其他客户机隐藏需要分配的设备, 隐藏的方式是在拥有硬 件设备的客户机 / 宿主机家在驱动程序前, 先给药分配出去的设备加载一个伪驱动作为占 位符, 由于没有真正的驱动程序, 该设备就不会被目。
17、标客户机之外的其他客户机访问。 0030 2. 控制虚拟件监控器截获客户机访问的虚拟 I/O 地址空间, 根据预先建立客户机 说 明 书 CN 102193816 A CN 102193823 A3/4 页 5 访问的虚拟 I/O 地址与设备的真实 I/O 地址的转换表, 把 I/O 请求转发到设备的真实 I/O 地址空间。 0031 预先建立客户机访问的虚拟 I/O 地址与设备的真实 I/O 地址的转换表, 报告虚拟 的周边元件扩展接口 (Peripheral Component Interconnection, PCI)BAR 给客户机。当客 户机访问到虚拟的 I/O 地址空间时, 虚拟机。
18、监控器控制截获访问操作, 并通过上述转换表 把 I/O 请求转发到设备的真实 I/O 地址空间。 0032 3. 将为设备生成的虚拟的 PCI 配置空间挂接在虚拟 PCI 总线上。 0033 为设备生成虚拟的 PCI 配置空间, 将生成的虚拟 PCI 配置空间以一个虚拟设备的 形式挂接在虚拟 PCI 总线上, 当客户操作系统枚举总线时, 即可发现设备并加载正确的驱 动程序。 0034 在步骤 S103 中, 通过 DMA 重映射硬件截获设备的 DMA 的传输, 并控制进行地址转 换, 控制设备的 DMA 操作直接访问到客户机的内存空间。 0035 在本发明实施例中, 上述步骤的执行是在VT-d。
19、技术平台下完成, 如图2所示, VT-d 技术在北桥引入 DMA 重映射硬件。 0036 在启动 VT-d 的平台上, 设备所有的 DMA 传输都被 DMA 重映射硬件截获, 根据设备 对应的 I/O 页表, 硬件可以对 DMA 的地址进行转换, 使设备只能访问到规定的内存。 0037 在步骤 S104 中, 在具有 BIOS 的设备进行分配时, 通过设置客户机影子页表, 将 I/ O设备直接映射到客户机的MMIO空间中, 所述MMIO操作可直接访问硬件。 在本发明实施例 中, 由于设备的多样性, 无法提供一套同类设备的通用 BIOS, 因此, 对于具有 BIOS 的设备, 将设备 BIOS 。
20、区域直接映射到客户地址空间的相同区域, 然后在客户影子页表中, 根据 P2M 表写入正确的页表项, 客户操作系统可直接进行 BIOS 调用, 控制硬件设备。 0038 作为本发明的一个实施例, 如图3所示 : 客户操作系统所有的PCI配置空间的访问 及数据访问操作均会被虚拟机监控器截获后, 转发给设备模拟器, 然后对虚拟化设备通过 虚拟机监控器访问硬件设备 ; 对于直接分配设备通过 MMIO(Memory Mapped I/O) 和 DMA 直 接访问硬件数据 ; 具有BIOS的设备在直接分配时, 通过客户机影子页表, 将I/O设备直接映 射到客户机的 MMIO 空间中, 客户机的 MMIO 。
21、操作可直接访问硬件, 无需虚拟机监控器转发 ; 设备的 DMA 操作可以通过 IOMMU(I/O Memory Management Unit) 及逆行地址转换, 直接客 户地址空间交互 ; 设备的 BIOS 需要对等映射到客户地址空间的相同区域, 客户操作系统才 可调用设备 BIOS 访问设备。 0039 为了解决不支持 VT-d 平台上硬件设备直接分配问题, 可以在系统内存的低端划 出一块区域, 该区域拒绝虚拟机监控器的使用, 将其分配给某个客户系统, 使容户系统中的 客户机页面号与机器页面号相等, 以解决客户操作系统中硬件访问的 DMA 问题, 使客户操 作系统可以直接访问物理设备。 0。
22、040 在本发明实施例中, 虚拟机监控器不能直接分配那些 MMIO 没有页对齐的设备, 而 对于没有页对齐的设备, 控制虚拟机监控器扫描 PCI 总线, 控制将所述没有页对齐的 MMIO 地址改为页对齐。 0041 在虚拟机监控器中, 程序代码和堆栈所使用的内存位于物理内存1MB12MB的位 置, 然而, 在11每寸映射后, 此段内存有可能被客户操作系统访问到, 为了避免客户操作 系统访问到此段内存, 造成系统崩溃, 将虚拟机监控器的程序代码和堆栈移到了11内存 说 明 书 CN 102193816 A CN 102193823 A4/4 页 6 上。 0042 图 4 示出了本发明实施例提供。
23、的设备分配系统的结构框图, 为了便于说明, 图中 仅给出了与本发明实施例相关的部分, 其中, 设备分配系统可以内置于计算机的软件单元、 硬件单元或软硬件结合单元。 0043 系统上电, 初始化操作模块 11 在物理 BIOS 中启动双显卡, 完成初始化操作 ; 设置 模块12控制对虚拟系统BIOS进行I/O访问的初始化设置 ; DMA重映射控制模块13通过DMA 重映射硬件截获设备的DMA的传输, 并控制进行地址转换, 控制设备的DMA操作直接访问到 客户机的内存空间 ; BIOS 设备分配控制模块 14 在具有 BIOS 的设备进行分配时, 通过设置 客户机影子页表, 将 I/O 设备直接映。
24、射到客户机的 MMIO 空间中, 所述 MMIO 操作可直接访问 硬件。 0044 在本发明实施例中, 修改模块 15 对于没有页对齐的设备, 控制虚拟机监控器扫描 PCI 总线, 控制将所述没有页对齐的 MMIO 地址修改为页对齐。 0045 在本发明实施例中, 隐藏控制模块 121 对目标客户机之外的其他客户机隐藏需要 分配的设备 ; 地址空间转换控制模块 122 控制虚拟件监控器截获客户机访问的虚拟 I/O 地 址空间, 根据预先建立客户机访问的虚拟 I/O 地址与设备的真实 I/O 地址的转换表, 把 I/O 请求转发到设备的真实 I/O 地址空间 ; 挂接模块 123 将为设备生成的。
25、虚拟的 PCI 配置空间 挂接在虚拟 PCI 总线上。 0046 上述仅为本发明系统实施例的描述, 其具体的实施如上述流程所述, 在此不再赘 述, 但不用以限制本发明。 0047 在本发明实施例中, 系统上电, 在物理 BIOS 中启动双显卡, 完成初始化操作 ; 控制 对虚拟系统 BIOS 进行 I/O 访问的初始化设置 ; 通过 DMA 重映射硬件截获设备的 DMA 的传 输, 并控制进行地址转换, 控制设备的 DMA 操作直接访问到客户机的内存空间 ; 在具有 BIOS 的设备进行分配时, 通过设置客户机影子页表, 将 I/O 设备直接映射到客户机的 MMIO 空间 中, 所述 MMIO 操作可直接访问硬件, 实现设备的高效虚拟化和分配。 0048 以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保护范围之内。 说 明 书 CN 102193816 A CN 102193823 A1/3 页 7 图 1 说 明 书 附 图 CN 102193816 A CN 102193823 A2/3 页 8 图 2 图 3 说 明 书 附 图 CN 102193816 A CN 102193823 A3/3 页 9 图 4 说 明 书 附 图 CN 102193816 A 。