CN104834604A - 一种io地址到io对象快速映射方法及系统 - Google Patents
一种io地址到io对象快速映射方法及系统 Download PDFInfo
- Publication number
- CN104834604A CN104834604A CN201510193943.5A CN201510193943A CN104834604A CN 104834604 A CN104834604 A CN 104834604A CN 201510193943 A CN201510193943 A CN 201510193943A CN 104834604 A CN104834604 A CN 104834604A
- Authority
- CN
- China
- Prior art keywords
- address
- gap
- space
- array
- block
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种IO地址到IO对象快速映射方法及系统,方法包括如下步骤:1)采集所有IO块的基地址、大小以及间隔,并按地址顺序排列;2)选取最小间隔值,从而获取空隙值,其中空隙值小于等于最小间隔值;3)以IO地址空间的起始地址为起始位置t,采用空隙值重新分割IO地址空间;4)构造间隙和数组,以记录从起始位置开始每一空隙值空间内IO地址所对应的间隙和;5)构造IO对象数组,每一IO地址映射一在所述IO对象数组中位于相应数组索引处的IO对象;6)根据构造的间隙和数组以及IO对象数组,完成IO地址到相应数组索引的计算,从而完成IO地址到IO对象的快速映射。本发明通过重新划分IO地址空间,将搜索转化为查表,实现了由IO地址到IO对象的快速映射。
Description
技术领域
本发明涉及数字仿真计算机技术领域,尤其涉及一种基于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)。
为实现上述目的,本发明还提供了一种IO地址到IO对象快速映射系统,包括采集单元、空隙值获取单元、分割单元、间隙和数组构造单元、IO对象数组构造单元以及映射单元;所述采集单元,用于采集所有IO块的基地址basei、大小sizei以及间隔gapi,并按地址顺序排列,其中下标i表示第i个IO块;所述空隙值获取单元,用于选取最小间隔值min[gapi],从而获取空隙值space,其中space≤min[gapi];所述分割单元,用于以IO地址空间的起始地址为起始位置start,采用空隙值space重新分割IO地址空间;所述间隙和数组构造单元,用于构造间隙和数组gapSum_table,以记录从起始位置start开始每一空隙值space空间内IO地址所对应的间隙和,所述间隙和数组的大小为:NgapSum_table≥(basen+sizen)/space,其中,basen+sizen为最后一块IO块的结束地址;所述IO对象数组构造单元,用于构造IO对象数组,每一IO地址address映射一在所述IO对象数组中位于相应数组索引index处的IO对象,所述IO对象数组的大小为所有IO块大小之和;所述映射单元,用于根据构造的间隙和数组以及IO对象数组,采用如下计算公式完成IO地址address到相应数组索引index的计算,从而完成IO地址address到IO对象的快速映射:
index=address-gapSum_table((address-start)/space)。
本发明的优点在于:通过重新划分IO地址空间,将搜索转化为查表,用额外增加的间隙和数组实现较高的时间执行效率,实现了由IO地址到IO对象的快速映射。
附图说明
图1,IO块模型示意图;
图2,IO地址空间与IO块示意图;
图3,IO地址空间与IO对象数组的映射关系示意图;
图4,本发明所述的IO地址到IO对象快速映射方法的流程示意图;
图5,本发明一实施例所示空隙值space的选取与间隔和填充示意图;
图6,本发明另一实施例所示空隙值space的选取与间隔和填充示意图;
图7,本发明一实施例所示重划分IO地址空间示意图;
图8,本发明一实施例所示IO地址到IO对象映射过程示意图;
图9,本发明所述的IO地址到IO对象快速映射系统架构示意图。
具体实施方式
下面结合附图对本发明提供的IO地址到IO对象快速映射方法及系统做详细说明。
本发明是在gsMap算法基础上提出了一种重新分割IO地址空间的方式,实现了由IO地址到IO对象的快速映射。为了清楚描述本发明,首先给出gsMap算法的简单描述。gsMap算法构造了一种O(1)时间复杂度的算法,用于快速由IO地址索引IO对象。gsMap算法仅仅通过简单的算术运算与数组查表,完成O(1)时间复杂度IO地址到IO对象的查询,其算法核心思想描述如下。
一、实现IO地址到IO对象的O(1)查找
构造一个IO对象(IO对象指针、引用等)数组,该IO对象数组大小为所有IO块大小之和。同时采集所有IO块的基本信息,基地址(basei)、大小(sizei)、间隔(gapi),其中下标i表示第i个IO块;其中间隔gapi为当前IO块_i地址(及其首位置)距离上一IO块_(i-1)结束地址(及其尾位置)中间的IO地址空间大小;记,第一块IO块下标为0;第一块IO块_0的间隔gap0取其相对0地址的距离,即其base0值。
则有,IO地址address一一映射位于在IO对象数组中相应下标(数组索引index)处的IO对象。如公式1所示:
address~index 公式1
假设某IO地址address位于第n块IO块中,其相对于该IO块_n的偏移地址为offset。参照图3,IO地址空间与IO对象数组的映射关系示意图。则该IO地址及其对应IO对象在IO对象数组中的数组索引index由如下公式2、公式3表达:
公式2、3作减法,此时可以获得IO地址address与相应数组索引index的关系,如公式4:
可见,如果可以获得每一个IO地址address所对应的间隙和便可以通过一则简单的减法运算实现IO地址到相应数组索引index的计算,从而实现IO地址到IO对象的映射。
二、间隙和快速查找
虽然间隙和可以提前获得,但单纯拿到IO地址address时,并不能立即知道n为多少,即,不能直接获得该IO地址address位于第几块IO块中。此时,其中之一可选的方案为,设法获得该IO地址address所对应的基地址base,继而搜索(二分法)该基地址base所对应的间隙和。该方案存在2点弊端:1、虽然内存块数量较少,但最坏的情况下,需要log2(n)才能找到对应间隙和;而实际情况中,IO访问的频次并非均匀,故而经常发生最坏状况的可能性是非常大的;2、如果不能获得基地址base时,这种方案便失效。
本发明经分析发现,之所以存在搜索,是因为不同IO块的大小sizei以及间隔gapi可能不完全相同,造成不能通过简单除法(除以步长)的方式计算IO对象数组下标及,进而需要通过搜索的方式实现。本发明在gsMap算法基础上提出了一种重新分割IO地址空间的方式,当所有IO块的大小sizei以及间隔gapi这两参数一致时,便可以消除搜索,通过除法计算数组下标(即数组索引index),进而查找IO对象,实现由IO地址到IO对象的快速映射。
参考图4,本发明所述的IO地址到IO对象快速映射方法的流程示意图,所述方法包括如下步骤:S41:采集所有IO块的基地址basei、大小sizei以及间隔gapi,并按地址顺序排列,其中下标i表示第i个IO块;S42:选取最小间隔值min[gapi],从而获取空隙值space,其中space≤min[gapi];S43:以IO地址空间的起始地址为起始位置start,采用空隙值space重新分割IO地址空间;S44:构造间隙和数组gapSum_table,以记录从起始位置start开始每一空隙值space空间内IO地址所对应的间隙和,所述间隙和数组的大小为:NgapSum_table≥(basen+sizen)/space,其中,basen+sizen为最后一块IO块的结束地址;S45:构造IO对象数组,每一IO地址address映射一在所述IO对象数组中位于相应数组索引index处的IO对象,所述IO对象数组的大小为所有IO块大小之和;S46:根据构造的间隙和数组以及IO对象数组,采用如下计算公式完成IO地址address到相应数组索引index的计算,从而完成IO地址address到IO对象的快速映射:
index=address-gapSum_table((address-start)/space)。
S41:采集所有IO块的基地址basei、大小sizei以及间隔gapi,并按地址顺序排列。
S42:选取最小间隔值gapmin,从而获取空隙值space,其中space≤min[gapi]。
倘若存在这样的一个大小的空隙值space,任一空隙值space范围内,不出现两块以及以上数量的IO块(包含部分出现)。从IO地址空间的某个位置开始,每隔空隙值space重新划分IO地址空间,则能够通过除法运算快速定位某一IO地址所在的IO块所对应的间隙和。上述描述中的关键问题是,是否存在这样的空隙值space能够将IO地址空间进行重新分割,以及这样的分割应该从IO地址空间的什么位置开始。
空隙值space取值越小时,构造间隙和数组gapSum_table所需存储空间越大;极限状况下,当空隙值space=1时,间隙和数组gapSum_table将是整个包含所有IO块及其间隔所需的空间大小。空隙值space越大,则构造间隙和数组gapSum_table所需存储空间越小,越具备优势,因此,需要求取空隙值space的最大值。
考虑到空隙值space选取的原则是:同一空隙值space区域内,不应出现两块以及以上数量的IO块。由于IO块由间隔gap分割,那么,当空隙值space选择小于等于所有IO块中最小间隔gap容量大小的值时,便能够不违反原则的重新划分IO地址空间。
证明如下:假设前后两块IO块,各自大小为sizei与sizej(i、j表征IO块序号,它们为相邻IO块),两块IO块中间存在的间隔gapi为最小间隔min[gapi]。设想一种极限情况,以空隙值space划分IO地址空间时,当前空隙值space划分块刚好在i块IO块结束位置结束;则,下一空隙值space划分块从i块IO块结束位置的下一个地址开始。由于所选定的空隙值space满足space≤min[gapi],因此,该下一空隙值space划分块的结束位置一定不会覆盖到第j块IO块的起始位置。参考图5,本发明一实施例所示空隙值space的选取与间隔和填充示意图。而,若以空隙值space划分IO地址空间时,当前空隙值space划分块在第i块IO块结束位置之前结束,则,该下一空隙值space划分块的结束位置更不会覆盖到第j块IO块的起始位置,space≤min[gapi]更加得以保障。参考图6,本发明另一实施例所示空隙值space的选取与间隔和填充示意图。
S43:以IO地址空间的起始地址为起始位置start,采用空隙值space重新分割IO地址空间。
参考图7,本发明一实施例所示重划分IO地址空间示意图。由于上述空隙值space选取中,并未严格限定空隙值space划分开始的相对位置,space≤min[gapi]均能够满足;故而,以空隙值space划分IO地址空间起始位置start可以从任意地址开始。设定起始位置start可以选取从IO地址空间的起始地址(即0地址),减少一次减法运算。但通常IO块都位于地址较高位置,这样的优化,虽然会提高运算速度,但造成较大的仿真计算机内存浪费。作为优选的实施方式,步骤S43进一步包括:设定起始位置start为初始IO块的基地址base0,以空隙值space重新划分IO地址空间,虽然存在减法运算,但对仿真计算机的性能影响微乎其微,且可以有效节省仿真计算机内存。
S44:构造间隙和数组gapSum_table,所述间隙和数组记录从起始位置start开始,每一空隙值space空间内IO地址所对应的间隙和。
同时为确保构造的间隙和数组gapSum_table能够覆盖所有IO块,其容量有约束;也即所述间隙和数组的大小为:NgapSum_table≥(basen+sizen)/space;其中,basen+sizen为最后一块IO块的结束地址。
此外,构造间隙和数组gapSum_table时,需要考虑特殊情况:即,若当前空隙值space划分块底部为下一IO块区域,则该当前空隙值space划分块对应的间隙和应为下一IO块的间隙和;而,若当前空隙值space划分块顶部为上一IO块区域时,则该当前空隙值space划分块对应的间隙和应为上一IO块的间隙和。故,作为优选的实施方式,在构造间隙和数组过程中,从起始位置start开始,每增加一空隙值space,记录当前空隙值space对应的起始地址;若所述起始地址为当前IO块首位置或超出前一IO块尾位置,则更新间隙和,以标记进入下一IO块区域。
S45:构造IO对象数组,每一IO地址address映射一在所述IO对象数组中位于相应数组索引index处的IO对象。
所述IO对象数组的大小为所有IO块大小之和;IO对象数组构造方式参照前述基于gsMap的IO对象(IO对象指针、引用等)数组的构造。
S46:根据构造的间隙和数组以及IO对象数组,完成IO地址address到相应数组索引index的计算,从而完成IO地址address到IO对象的快速映射。
由于构造的间隙和数组gapSum_table记录有由起始位置start开始,每空隙值space空间内,IO地址所对应的间隙和,结合前述公式4,得出公式5:
简单移项之后,就获得IO地址address到相应数组索引index的计算公式,公式6:
作为优选的实施方式,步骤S42进一步包括:求取所述最小间隔值gapmin对2的指数M,从而获取空隙值space=2M,即设定空隙值space的大小为2的整阶次方M。步骤S43进一步包括:设定起始位置start为初始IO块的基地址base0。则,公式6进一步简化为:
index=address-gapSum_table[(address-start)>>M] 公式7
通过设定空隙值space的大小为2的整阶次方M,优化除法为右移运算,使得公式7实现了IO地址address到其间隙和的快速查找,并且完成了IO地址address到相应数组索引index的快速计算。如图8,本发明一实施例所示IO地址到IO对象映射过程示意图所示。
此时,由IO地址address到相应数组索引index的转化,仅需要:一次减法,address-start;一次移位(address-start)>>M;一次内存读取,gapSum_table((address-start)>>M);以及最后一次减法,address-gapSum_table((address-start)>>M),共4步CPU执行速度较快的计算便可完成。也即,作为优选的实施方式,步骤S46进一步包括:1)对IO地址address以及起始位置start进行一次减法运算:address-start;2)对步骤1)的运算结果进行一次移位运算:(address-start)>>M;3)根据步骤2)的移位结果进行IO地址address到相应间隙和的查找:gapSum_table((address-start)>>M);4)对步骤3)的查找结果进行一次减法运算,完成IO地址address到相应数组索引index的计算:
address-gapSum_table((address-start)>>M)。
当空隙值space=2M时,所述间隙和数组的大小进一步简化为:
NgapSum_table=((basen+sizen+base0)>>M)+1
综上所述,本发明提供的IO地址到IO对象快速映射方法,通过重新划分IO地址空间,将搜索转化为查表,用额外增加的间隙和数组实现较高的时间执行效率,实现了由IO地址到IO对象的快速映射。
经测试,2.4GHz主频计算机上,无论STL中的map,还是Google提供的sparsehash其性能都不能达到所需目标;std::map仿真速度为0.22倍;sparsehash为1.56倍;同样条件下,本发明提供的方法的仿真速度为7.30倍,实现了由IO地址到IO对象的快速映射。
参考图9,本发明所述的IO地址到IO对象快速映射系统架构示意图。所述系统包括采集单元91、空隙值获取单元92、分割单元93、间隙和数组构造单元94、IO对象数组构造单元95以及映射单元96。
所述采集单元91,用于采集所有IO块的基地址basei、大小sizei以及间隔gapi,并按地址顺序排列,其中下标i表示第i个IO块。
所述空隙值获取单元92,用于选取最小间隔值min[gapi],从而获取空隙值space,其中space≤min[gapi]。当空隙值space选择小于等于所有IO块中最小间隔gap容量大小的值时,同一空隙值space区域内,不会出现两块以及以上数量的IO块。
所述分割单元93,用于以IO地址空间的起始地址为起始位置start,采用空隙值space重新分割IO地址空间。由于上述空隙值space选取中,并未严格限定空隙值space划分开始的相对位置;故而,以空隙值space划分IO地址空间起始位置start可以从任意地址开始。设定起始位置start可以选取从IO地址空间的起始地址(即0地址),减少一次减法运算。但通常IO块都位于地址较高位置,这样的优化,虽然会提高运算速度,但造成较大的仿真计算机内存浪费。作为优选的实施方式,所述分割单元93进一步用于:设定起始位置start为初始IO块的基地址base0,以空隙值space重新划分IO地址空间,虽然存在减法运算,但对仿真计算机的性能影响微乎其微,且可以有效节省仿真计算机内存。
所述间隙和数组构造单元94,用于构造间隙和数组gapSum_table,以记录从起始位置start开始每一空隙值space空间内IO地址所对应的间隙和。同时为确保构造的间隙和数组gapSum_table能够覆盖所有IO块,其容量有约束;也即所述间隙和数组的大小为:NgapSum_table≥(basen+sizen)/space;其中,basen+sizen为最后一块IO块的结束地址。
此外,构造间隙和数组gapSum_table时,需要考虑特殊情况:即,若当前空隙值space划分块底部为下一IO块区域,则该当前空隙值space划分块对应的间隙和应为下一IO块的间隙和;而,若当前空隙值space划分块顶部为上一IO块区域时,则该当前空隙值space划分块对应的间隙和应为上一IO块的间隙和。故,作为优选的实施方式,所述间隙和数组构造单元94进一步用于:在构造间隙和数组过程中,从起始位置start开始,每增加一空隙值space,记录当前空隙值space对应的起始地址;若所述起始地址为当前IO块首位置或超出前一IO块尾位置,则更新间隙和,以标记进入下一IO块区域。
所述IO对象数组构造单元95,用于构造IO对象数组,每一IO地址address映射一在所述IO对象数组中位于相应数组索引index处的IO对象,所述IO对象数组的大小为所有IO块大小之和。
所述映射单元96,用于根据构造的间隙和数组以及IO对象数组,完成IO地址address到相应数组索引index的计算,从而完成IO地址address到IO对象的快速映射。IO地址address到相应数组索引index的计算公式参照上述公式6。
作为优选的实施方式,所述空隙值获取单元92进一步用于:求取所述最小间隔值gapmin对2的指数M,从而获取空隙值space=2M,即设定空隙值space的大小为2的整阶次方M。通过设定空隙值space的大小为2的整阶次方M,优化除法为右移运算,实现了IO地址address到其间隙和的快速查找,并且完成了IO地址address到相应数组索引index的快速计算。此时,由IO地址address到相应数组索引index的转化,仅需要:一次减法,address-start;一次移位(address-start)>>M;一次内存读取,gapSum_table((address-start)>>M);以及最后一次减法,address-gapSum_table((address-start)>>M),共4步CPU执行速度较快的计算便可完成。
也即,作为优选的实施方式,所述映射单元96进一步包括:第一减法运算模块961、移位运算模块962、查找模块963以及第二减法运算模块964。
所述第一减法运算模块961,用于对IO地址address以及起始位置start进行一次减法运算:address-start。
所述移位运算模块962,用于对所述第一减法运算模块961的运算结果进行一次移位运算:(address-start)>>M。
所述查找模块963,用于根据所述移位运算模块962的移位结果进行IO地址address到相应间隙和的查找:gapSum_table((address-start)>>M)。
所述第二减法运算模块964,用于对所述查找模块963的查找结果进行一次减法运算,完成IO地址address到相应数组索引index的计算:
address-gapSum_table((address-start)>>M)。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种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)。
2.根据权利要求1所述的方法,其特征在于,步骤(4)进一步包括:从起始位置start开始,每增加一空隙值space,记录当前空隙值space对应的起始地址;若所述起始地址为当前IO块首位置或超出前一IO块尾位置,则更新间隙和。
3.根据权利要求1所述的方法,其特征在于,步骤(2)进一步包括:求取所述最小间隔值min[gapi]对2的指数M,从而获取空隙值space=2M。
4.根据权利要求3所述的方法,其特征在于,步骤(3)进一步包括:设定起始位置start为初始IO块的基地址base0。
5.根据权利要求4所述的方法,其特征在于,步骤(6)进一步包括:
(61)对IO地址address以及起始位置start进行一次减法运算:address-start;
(62)对步骤(61)的运算结果进行一次移位运算:(address-start)>>M;
(63)根据步骤(62)的移位结果进行IO地址address到相应间隙和的查找:gapSum_table((address-start)>>M);
(64)对步骤(63)的查找结果进行一次减法运算,完成IO地址address到相应数组索引index的计算:address-gapSum_table((address-start)>>M)。
6.一种IO地址到IO对象快速映射系统,其特征在于,包括采集单元、空隙值获取单元、分割单元、间隙和数组构造单元、IO对象数组构造单元以及映射单元;所述采集单元,用于采集所有IO块的基地址basei、大小sizei以及间隔gapi,并按地址顺序排列,其中下标i表示第i个IO块;
所述空隙值获取单元,用于选取最小间隔值min[gapi],从而获取空隙值space,其中space≤min[gapi];
所述分割单元,用于以IO地址空间的起始地址为起始位置start,采用空隙值space重新分割IO地址空间;
所述间隙和数组构造单元,用于构造间隙和数组gapSum_table,以记录从起始位置start开始每一空隙值space空间内IO地址所对应的间隙和,所述间隙和数组的大小为:NgapSum_table≥(basen+sizen)/space,其中,basen+sizen为最后一块IO块的结束地址;
所述IO对象数组构造单元,用于构造IO对象数组,每一IO地址address映射一在所述IO对象数组中位于相应数组索引index处的IO对象,所述IO对象数组的大小为所有IO块大小之和;
所述映射单元,用于根据构造的间隙和数组以及IO对象数组,采用如下计算公式完成IO地址address到相应数组索引index的计算,从而完成IO地址address到IO对象的快速映射:
index=address-gapSum_table((address-start)/space)。
7.根据权利要求6所述的系统,其特征在于,所述间隙和数组构造单元进一步用于:从起始位置start开始,每增加一空隙值space,记录当前空隙值space对应的起始地址;若所述起始地址为当前IO块首位置或超出前一IO块尾位置,则更新间隙和。
8.根据权利要求6所述的系统,其特征在于,所述空隙值获取单元进一步用于:求取所述最小间隔值min[gapi]对2的指数M,从而获取空隙值space=2M。
9.根据权利要求8所述的系统,其特征在于,所述分割单元进一步用于:设定起始位置start为初始IO块的基地址base0。
10.根据权利要求9所述的系统,其特征在于,所述映射单元进一步包括:第一减法运算模块、移位运算模块、查找模块以及第二减法运算模块;
所述第一减法运算模块,用于对IO地址address以及起始位置start进行一次减法运算:address-start;
所述移位运算模块,用于对所述第一减法运算模块的运算结果进行一次移位运算:(address-start)>>M;
所述查找模块,用于根据所述移位运算模块的移位结果进行IO地址address到相应间隙和的查找:gapSum_table((address-start)>>M);
所述第二减法运算模块,用于对所述查找模块的查找结果进行一次减法运算,完成IO地址address到相应数组索引index的计算:address-gapSum_table((address-start)>>M)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510193943.5A CN104834604B (zh) | 2015-04-22 | 2015-04-22 | 一种io地址到io对象快速映射方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510193943.5A CN104834604B (zh) | 2015-04-22 | 2015-04-22 | 一种io地址到io对象快速映射方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104834604A true CN104834604A (zh) | 2015-08-12 |
CN104834604B CN104834604B (zh) | 2018-02-16 |
Family
ID=53812509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510193943.5A Active CN104834604B (zh) | 2015-04-22 | 2015-04-22 | 一种io地址到io对象快速映射方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104834604B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533408A (zh) * | 2009-04-21 | 2009-09-16 | 北京四维图新科技股份有限公司 | 一种海量数据的处理方法及处理装置 |
CN103324466A (zh) * | 2013-05-24 | 2013-09-25 | 浪潮电子信息产业股份有限公司 | 一种数据相关性序列化io的并行处理方法 |
US20140244929A1 (en) * | 2011-08-26 | 2014-08-28 | Vmware, Inc. | Object storage system |
US20150046924A1 (en) * | 2007-10-30 | 2015-02-12 | Vmware, Inc. | Transparent memory-mapped emulation of i/o calls |
CN104462307A (zh) * | 2014-11-28 | 2015-03-25 | 深圳市中兴移动通信有限公司 | 终端中对象的搜索方法和装置 |
-
2015
- 2015-04-22 CN CN201510193943.5A patent/CN104834604B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150046924A1 (en) * | 2007-10-30 | 2015-02-12 | Vmware, Inc. | Transparent memory-mapped emulation of i/o calls |
CN101533408A (zh) * | 2009-04-21 | 2009-09-16 | 北京四维图新科技股份有限公司 | 一种海量数据的处理方法及处理装置 |
US20140244929A1 (en) * | 2011-08-26 | 2014-08-28 | Vmware, Inc. | Object storage system |
CN103324466A (zh) * | 2013-05-24 | 2013-09-25 | 浪潮电子信息产业股份有限公司 | 一种数据相关性序列化io的并行处理方法 |
CN104462307A (zh) * | 2014-11-28 | 2015-03-25 | 深圳市中兴移动通信有限公司 | 终端中对象的搜索方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104834604B (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | Performance prediction for apache spark platform | |
US9733094B2 (en) | Hybrid road network and grid based spatial-temporal indexing under missing road links | |
CN101290613B (zh) | Fft处理器的数据存储系统和方法 | |
CN101370025A (zh) | 地理信息数据的存储方法、调度方法及管理系统 | |
CN108536692A (zh) | 一种执行计划的生成方法、装置及数据库服务器 | |
CN107918642A (zh) | 数据查询方法、服务器及计算机可读存储介质 | |
CN105359142B (zh) | 哈希连接方法和装置 | |
CN103488523A (zh) | 一种页的访问方法和页的访问装置、服务器 | |
CN109359267A (zh) | 一种基于动态截位的低复杂度无乘法器定点fft优化方法 | |
CN102495888B (zh) | 一种面向并行数字地形分析的数据拆分与分发方法 | |
CN104516822A (zh) | 一种内存访问方法和设备 | |
CN103761291A (zh) | 一种基于聚合请求的地理栅格数据并行读写方法 | |
CN103699534A (zh) | 系统目录中数据对象的显示方法及装置 | |
Bender et al. | Cache-adaptive analysis | |
CN103544111B (zh) | 一种基于实时性处理的混合基fft方法 | |
CN108133005B (zh) | 一种基于内存数据库的环境模型模拟方法、终端设备及存储介质 | |
CN106844541A (zh) | 一种联机分析处理方法及装置 | |
CN114064707A (zh) | 一种用于数据虚拟化服务器的数据查询方法、装置及存储介质 | |
CN105930354A (zh) | 存储模型转换方法和装置 | |
CN110008030A (zh) | 一种元数据访问的方法、系统及设备 | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
CN109726219A (zh) | 数据查询的方法及终端设备 | |
CN110515872A (zh) | 直接内存存取方法、装置、专用计算芯片及异构计算系统 | |
Kim et al. | A scalable high-performance i/o system for a numerical weather forecast model on the cubed-sphere grid | |
CN114860460B (zh) | 一种数据库加速的方法、装置、计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |