[发明专利]一种用于多根共享系统的I/O重映射方法和装置有效
申请号: | 201210172844.5 | 申请日: | 2012-05-29 |
公开(公告)号: | CN102722458A | 公开(公告)日: | 2012-10-10 |
发明(设计)人: | 刘小丽;曹政;张佩珩;安学军;孙凝晖;王展;苏勇;刘飞龙 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F13/20 | 分类号: | G06F13/20 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;梁挥 |
地址: | 100080 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 共享 系统 映射 方法 装置 | ||
技术领域
本发明涉及I/O虚拟化技术,特别是涉及多根I/O虚拟化共享系统的I/O重映射方法和装置。
背景技术
PCIe(Peripheral Component Interface Express)设备功能在系统中的标识通常都用一个由总线号(BUS)/设备号(Device)/功能号(Function)组成的ID号(B/D/F)来指示。系统上电后,系统初始化软件首先根据ID路由对系统中所有的I/O设备进行枚举发现和初始化配置,同时也为设备功能分配了其在PCIe域中的ID号和其所映射的地址窗口等。设备初始化完成后,系统软件和驱动程序等上层软件可以通过ID或者地址路由定向到设备。在多根I/O虚拟化共享系统中,为了避免系统竞争和冲突,I/O设备能被多个根节点使用,但是只能由一个根节点控制。系统上电时,I/O设备功能首先被主控制根节点初始化配置其在主控制根节点PCIe域中的ID号和地址窗口。当设备功能被分配给从属根节点使用时,使用一个虚拟的设备功能作为从属根节点PCIe域的设备占位符,并接受从属根节点分配的本地PCIe域中的ID号和地址窗口。因此,对于从属根节点使用本地PCIe域的ID号和地址对设备功能进行的访问,需要进行重映射,才能实现从属根节点直接访问I/O设备。
发明内容
为解决上述问题,本发明提供了一种用于多根I/O虚拟化共享系统的直接I/O重映射方法,包括:
步骤1,I/O设备功能基地址定义提取,并记录各基地址寄存器序号与其定义的地址窗口对应的基地址序号之间的映射关系;
步骤2,主控制根节点PCIe域中的功能基地址写存储,建立功能基地址序号到其在主控制根节点PCIe域的基地址的映射;
步骤3,设备功能ID映射关系写存储,建立设备功能在主控制根节点PCIe域和从属根节点PCIe域中的ID号之间的映射;
步骤4,从属根节点PCIe域中的功能基地址写存储,建立从属根节点PCIe域的基地址到其对应的功能基地址序号的映射;
步骤5,直接I/O重映射,对从属根节点和I/O设备间的事务包进行重映射操作。
所述用于多根I/O虚拟化共享系统的直接I/O重映射方法,步骤1还包括:
所述基地址定义提取是在主控制根节点系统发现阶段,获取I/O设备功能配置空间中通过各基地址寄存器(Base Address Register,BAR)定义的地址窗口类型,并提取各地址窗口对应的基地址掩码;
所述基地址掩码,用于指定系统配置的地址窗口中地址的哪些位是固定位,通过所述基地址掩码可以提取访存地址对应的基地址;
所述基地址序号,用于表示设备的功能向系统申请的地址窗口数按照BAR寄存器号顺序排列的序列号,一个I/O设备中同类型的各功能向系统申请的地址窗口类型和数目相同。
所述的用于多根I/O虚拟化共享系统的直接I/O重映射方法,所述步骤2还包括:
所述主控制根节点PCIe域中的功能基地址写存储是在主控制根节点系统初始化配置阶段,通过解析配置事务包,提取事务包中指示的功能基地址序号作为地址索引,写存储所述功能基地址序号对应的基地址。
所述功能基地址序号,由基地址序号k和主控制根节点PCIe域中的设备功能号p组合而成,功能基地址序号(k,p)指示的基地址是系统为设备中功能号为p分配的第n个基地址。
所述用于多根I/O虚拟化共享系统的直接I/O重映射方法,步骤3还包括:
所述设备功能ID映射关系写存储是在主控制根节点进行设备I/O资源分配阶段,通过解析设备分配事务包,提取事务包中指示的设备功能在主控制根节点PCIe域的功能号作为地址索引,写存储由所述功能所属的根节点标识ID以及所述功能在所属根节点PCIe域中的功能号组成的数据项,建立设备功能在主控制根节点PCIe域中的ID号和其在从属根节点PCIe域中的ID号之间的映射。
所述的用于多根I/O虚拟化共享系统的直接I/O重映射方法,所述步骤4还包括:
所述从属根节点PCIe域中的功能基地址写存储是在从属根节点系统PCIe重扫描阶段,通过解析配置事务包,提取事务包中指示的功能基地址序号作为地址索引,写存储所述功能基地址序号对应的基地址。
所述用于多根I/O虚拟化共享系统的直接I/O重映射方法,步骤5还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210172844.5/2.html,转载请声明来源钻瓜专利网。