CN104834604A - 一种io地址到io对象快速映射方法及系统 - Google Patents

一种io地址到io对象快速映射方法及系统 Download PDF

Info

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
Application number
CN201510193943.5A
Other languages
English (en)
Other versions
CN104834604B (zh
Inventor
刘虎
胡步青
王永
常亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Engineering Center for Microsatellites
Original Assignee
Shanghai Engineering Center for Microsatellites
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Engineering Center for Microsatellites filed Critical Shanghai Engineering Center for Microsatellites
Priority to CN201510193943.5A priority Critical patent/CN104834604B/zh
Publication of CN104834604A publication Critical patent/CN104834604A/zh
Application granted granted Critical
Publication of CN104834604B publication Critical patent/CN104834604B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

一种IO地址到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)。
为实现上述目的,本发明还提供了一种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表达:
address = offset + Σ i = 0 n ga p i + Σ i = 0 n - 1 siz e i           公式2
index = offset + Σ i = 0 n - 1 size i          公式3
公式2、3作减法,此时可以获得IO地址address与相应数组索引index的关系,如公式4:
address = index + Σ i = 0 n ga p i          公式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:
address = index + gapSum _ table [ address - start space ] .................................公式5
简单移项之后,就获得IO地址address到相应数组索引index的计算公式,公式6:
index = address - gapSum _ table [ address - start space ]              公式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)。
CN201510193943.5A 2015-04-22 2015-04-22 一种io地址到io对象快速映射方法及系统 Active CN104834604B (zh)

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)

* Cited by examiner, † Cited by third party
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 深圳市中兴移动通信有限公司 终端中对象的搜索方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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