[发明专利]一种IO地址到IO对象快速映射方法及系统有效
申请号: | 201510193943.5 | 申请日: | 2015-04-22 |
公开(公告)号: | CN104834604B | 公开(公告)日: | 2018-02-16 |
发明(设计)人: | 刘虎;胡步青;王永;常亮 | 申请(专利权)人: | 上海微小卫星工程中心 |
主分类号: | G06F12/06 | 分类号: | G06F12/06 |
代理公司: | 上海翼胜专利商标事务所(普通合伙)31218 | 代理人: | 翟羽 |
地址: | 201203 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 io 地址 对象 快速 映射 方法 系统 | ||
技术领域
本发明涉及数字仿真计算机技术领域,尤其涉及一种基于gsMap的IO地址到IO对象快速映射方法及系统。
背景技术
数字仿真计算机中,虚拟CPU通过读写IO地址完成与外部设备通讯。通常,数字仿真计算机外部IO以若干连续IO地址空间块(以下简称IO块)分布。参考图1,IO块模型示意图。图1示意出了IO块(IO_BLOCK)基本属性,包括基地址base、大小size;而位于该IO块中的IO地址可以使用基地址与偏移地址offset描述。众多的IO块常常呈线性分散分布在IO地址空间中,只有被映射的IO地址才属于访问范围。参考图2,IO地址空间与IO块示意图。对应每一个IO地址,构造IO对象,两者存在一一映射关系。当仿真CPU访问某IO时,首先给出IO地址,然后查询IO对象,接着进行读写等操作。
一种IO地址到IO对象的映射查询实现方法是:在仿真计算机的内存中申请一块足够容纳所有IO块的连续缓存,包含IO块之间的空隙,缓存中填写IO对象的入口地址;这样,获得IO地址后,仅仅进行偏移地址的简单换算,便可以获得IO对象。但由于IO地址空间块分布比较分散,地址跨度大,有限的计算机内存空间使得该方案无法实现。另一种IO地址到IO对象的映射查询实现方法是:使用std::map类似的容器;该方案内存使用相对有效,通常的访问也具有一定程度上的时间运行效率,尤其适用Google::sparsehash可获得更高时间运行效率。但是随着IO对象的增多,查找过程就会呈O(nlog(n))增加,而在仿真系统中,由于IO访问十分频繁、又需要优先保证速率的应用情景下,此时还是会因速度太慢而变得不合适。
因此,需要提供一种快速IO地址到IO对象的映射查询方法,提高数字仿真计算机的仿真效率。
发明内容
本发明的目的在于,针对现有技术数字卫星建模过程中IO地址到IO对象的映射查询存在的的技术问题,提供一种IO地址到IO对象快速映射方法及系统,在数字卫星建模过程中,实现IO地址到IO对象的快速查找,从而提高仿真速度。
为实现上述目的,本发明提供了一种IO地址到IO对象快速映射方法,包括如下步骤:(1)采集所有IO块的基地址basei、大小sizei以及间隔gapi,并按地址顺序排列,其中下标i表示第i个IO块;(2)选取最小间隔值min[gapi],从而获取空隙值space,其中space≤min[gapi];(3)以IO地址空间的起始地址为起始位置start,采用空隙值space重新分割IO地址空间;(4)构造间隙和数组gapSum_table,以记录从起始位置start开始每一空隙值space空间内IO地址所对应的间隙和,所述间隙和数组的大小为:NgapSum_table≥(basen+sizen)/space,其中,basen+sizen为最后一块IO块的结束地址;(5)构造IO对象数组,每一IO地址address映射一在所述IO对象数组中位于相应数组索引index处的IO对象,所述IO对象数组的大小为所有IO块大小之和;(6)根据构造的间隙和数组以及IO对象数组,采用如下计算公式完成IO地址address到相应数组索引index的计算,从而完成IO地址address到IO对象的快速映射:index=address-gapSum_table((address-start)/space)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海微小卫星工程中心,未经上海微小卫星工程中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510193943.5/2.html,转载请声明来源钻瓜专利网。