CN105653465B - 一种基于hash算法的倒置页表确定性管理方法 - Google Patents

一种基于hash算法的倒置页表确定性管理方法 Download PDF

Info

Publication number
CN105653465B
CN105653465B CN201410649498.4A CN201410649498A CN105653465B CN 105653465 B CN105653465 B CN 105653465B CN 201410649498 A CN201410649498 A CN 201410649498A CN 105653465 B CN105653465 B CN 105653465B
Authority
CN
China
Prior art keywords
page table
subregion
hash
page
size
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.)
Active
Application number
CN201410649498.4A
Other languages
English (en)
Other versions
CN105653465A (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.)
No 618 Research Institute of China Aviation Industry
Original Assignee
No 618 Research Institute of China Aviation Industry
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 No 618 Research Institute of China Aviation Industry filed Critical No 618 Research Institute of China Aviation Industry
Priority to CN201410649498.4A priority Critical patent/CN105653465B/zh
Publication of CN105653465A publication Critical patent/CN105653465A/zh
Application granted granted Critical
Publication of CN105653465B publication Critical patent/CN105653465B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种基于HASH算法的倒置页表确定性管理方法,其特征在于:在获得应用场景的分区数量和各分区所需虚地址空间大小的基础上,调整各分区的虚地址空间大小,并根据物理存储空间大小进行初步的页表大小分配;根据虚地址空间大小,对各虚地址分区进行排序,并统一各分区的虚拟起始地址;随机分配第一个分区的hash算子,并仿真将此分区的页索引分配到页表中;根据之前分区的算子和虚地址空间大小,以及当前分区的虚空间大小,分配当前分区的hash算子,以尽可能避免虚地址在页表中的偏移冲突,若得到的当前分区hash算子为0,则调整hash算子。

Description

一种基于HASH算法的倒置页表确定性管理方法
技术领域
本发明涉及具备分区功能操作系统的分区地址空间映射,特别是涉及使用hash倒置页表的地址映射管理方式下,解决页表有可能溢出的问题。
背景技术
随着安全关键领域系统使用要求越来越为复杂,特别是物理综合和功能综合的需求被引入到航空、航天等领域,要求安全关键领域的嵌入式操作系统,能够为上层应用提供不同分区下的综合使用及隔离保护功能。为此,操作系统需要充分利用处理器的存储管理单元(MMU),特别是页表管理方法,为不同分区提供彼此不能交叉访问的空间隔离。
使用页表的空间管理方法,由于其分配的粒度比较细微,不会造成空间的过多浪费,因此是各个处理器的MMU均选用的方式。就不同处理器页表的管理方法分类,基本可分为两种,其一是多级页表的方式,这种方法在X86系列及ARM系列处理器上得到应用。这种方法的特点是以虚地址为索引构建页表,页表的大小与虚地址空间大小对应,虚地址与物理地址转换速度快,逻辑简单;缺点是各分区均需要一套虚地址映射页表,页表需要的空间较多,且页表构建的过程需要动态申请页表空间。另一种方式被称为倒置hash页表,被用于POWERPC系列,UltraSPARC和IA-64体系结构中。此方法是根据实际的物理地址空间大小来预先构筑页表空间的地址和大小,之后将虚地址和特定hash算子通过hash算法得到一个偏移值,根据偏移值将虚地址映射到页表的某个偏移处。页表的每个偏移构成一个页表项组的链,当不同的虚拟地址映射到同一个页表偏移处时,就排到页表项组链的不同页表项中。各分区使用不同的hash算子,从而使得处理器将各分区下相同的虚拟地址映射到不同的页表偏移处,继而形成各分区空间的隔离。这种方法的最大优点在于不同分区使用同一个页表,极大节省了页表空间大小,且页表空间不需要在分区构筑过程中动态分配。
但是,由于这种方法没有对各分区的所有虚拟空间进行一一映射,因此,有可能出现多个虚拟地址映射到同一个页表偏移后,导致某个页表项组链满的情况。为解决这一问题,通用的嵌入式操作系统,如VxWorks、DeltaOs等,均选择了用软件的多级页表进行补充,即各分区仍旧维护一个相应的多级页表,当出现了页表项链满的情况时,os在相应的多级页表中进行搜索,将内容回填到倒置页表中供处理器MMU使用。这种方法虽然能够解决空间映射的完备性问题,但是不仅没有发挥倒置hash页表节省存储空间的优点,反而浪费了更多的页表空间,且导致需要处理器辅助才能完成存储管理功能,减少了上层应用所能使用的处理器资源。
为此,需要提出一种方法,使其在PowerPC系列处理器中,可以保证各分区虚拟空间在hash倒置页表中映射的完备性,从而不需要使用软件多级页表的方式对这一完备性进行补充。实现这一目的的关键,在于选取合适的页表大小,以及不同分区下的hash算子。
发明内容
本发明的目的是提出一种能在PowerPC系列处理器中,仅使用hash倒置页表来完成嵌入式操作系统的分区隔离保护功能,且能够保证其空间映射的完备性的方法。从而即降低了通用操作系统中的复杂度,又节省了页表占据的空间。
本发明采取的技术方案为,
本发明提供了一种根据各分区虚地址空间大小来分配各分区的hash算子和倒置页表大
小的方法,其特征在于:
步骤1):在获得应用场景的分区数量和各分区所需虚地址空间大小的基础上,调整各分区的虚地址空间大小,并根据物理存储空间大小进行初步的页表大小分配;
步骤2):根据虚地址空间大小,对各虚地址分区进行排序,并统一各分区的虚拟起始地址;
步骤3):随机分配第一个分区的hash算子,并仿真将此分区的页索引分配到页表中;
步骤4):根据之前分区的算子和虚地址空间大小,以及当前分区的虚空间大小,分配当前分区的hash算子,以尽可能避免虚地址在页表中的偏移冲突,若得到的当前分区hash算子为0,则调整hash算子;
步骤5):仿真验证当前的分配方案是否能够满足当前分区与之前分区的空间能够隔离,以及全部页表项组不会溢出的条件,如果不能够隔离,则调整hash算子,重新进行当前分区的仿真验证。如果页表项组出现溢出,则调整页表大小,重复之前的步骤3)到步骤5),直到得到一组hash算子和合适的页表大小,可以应用于操作系统在此应用场景的分区存储管理中。
进一步的,步骤1)中各分区的虚地址空间扩展为最近的2的整数次幂,初步分配的页表大小的方法为,页表中所包含的页表项个数,能够刚好映射实际物理地址空间大小。页表大小选取的原因在于,这是能够恰好完全映射物理地址空间的最小的页表大小,如果此状态下能够得到合适的分配结果,则耗费的页表大小最小。
进一步的,步骤2)中各分区的虚地址空间大小的排序方式为升序,各分区的虚拟起始地址相同,都是以0x10000000为对齐的虚地址。虚拟起始地址选择以0x10000000为对齐的虚地址,可以使得到的分区地址在页表中冲突的可能性减小。
进一步的,步骤3)中随机得到的hash算子不能为0。所需要的虚拟空间的hash算子不为0,则分区下不使用的256M虚空间的hash算子可设为0,从而使得分区下不使用的虚空间不会产生有效的地址映射。
进一步的,步骤4)中的当前分区的hash算子为第一个分区的hash算子异或某一个二十四位数据。
进一步的,上述的方法中,所异或的二十四位数据,为上一次异或的二十四位数据,加上上一个分区所需虚拟空间页大小,扩展到与当前分区所需虚拟空间页大小对齐的离得最近的数据。
进一步的,步骤5中,仿真验证的方式为软件仿真,通过计算各分区中,各虚拟地址页索引,映射到倒置页表中的位置,来进行检验验证,其中,若当前分区下的某个虚拟页地址,和之前某一个分区相同的虚拟页地址,出现在页表的同一个偏移上,或者当前得到的hash算子等于0,则可确定当前的hash算子不能正常隔离分区;通过判断当前得到的偏移的8个成员是否已满,导致当前的页索引无法分配到合适的页表偏移地址上,来确定是否满足页表项组不溢出的条件。
进一步的,其步骤4和步骤5中,调整hash算子的方法为,计算之前失败的hash算子时所异或的二十四位数据,自加1后,再异或到第一个分区的hash算子上,得到新的当前分区hash算子。
进一步的,其步骤5调整页表大小的方法,是将上一次分配的页表大小翻倍。最大不超过实际物理地址空间所能映射的页表项的8倍。此方法最差情况下,能够满足8个分区的虚拟空间与物理空间等大的映射需求。
进一步的,软件仿真验证模块,其输入包括三个参数,包括:当前分区分配到的hash算子、空间起始虚地址、虚地址空间大小。之后使用PowerPC处理器MMU模块的hash算法,将分区的全部虚地址映射到页表的偏移中。此时开始验证,通过判断此偏移地址上是否有之前分区的虚拟页索引与当前分区的页索引相同,来判断hash算子是否需要调整;通过检查适当偏移地址上是否已不存在空的页表项单元以保存当前页索引,来判断页表大小是否需要扩充。若两个验证条件均为假,则表示此分区的hash算子分配成功。
本发明具有的优点和有益效果:本发明通过在应用场景下对分区的预估,依次遵循特定的异或算法对各分区的hash算子进行设定,并迭代验证的方法,达到页表空间占用率最小,且不需要操作系统进行软件多级页表补充的效果。以经过仿真验证的方法,保证处理器MMU提供的hash倒置页表,能够对所有分区的虚地址空间完全索引映射,即节省了页表存储空间,又不需要处理器被用于进行多级页表和倒置页表置换的维护工作,在确保完备性的前提下,有效降低操作系统的对处理器资源的占用率,使其更加适合用于安全关键实时系统。
附图说明
图1是本发明方法流程示意图;
图2是软件仿真验证模块示意图;
图3是软件仿真验证过程中,将页索引分配到页表中的示意图;
图4是虚地址各字段示意图;
图5是hash算子造成分区隔离失败的示意图
图6是页表项组满的示意图
具体实施方式
下面结合说明书附图对本发明做详细说明,以下实施例仅仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
步骤1,在内核空间已经映射,且获得应用场景的分区数量和各分区所需虚地址空间的基础上,首先将各分区的虚地址空间扩展为最近的2的整数次幂的大小,例如某个分区需要的空间大小为48KB,则应扩展为最近的2的整数次幂,也就是64KB。
之后根据物理存储空间大小进行初步的页表大小分配,由于操作系统运行的内核空间全部由BAT方式映射完成,因此页表仅映射各分区在用户态下的私有空间,即各分区所需的虚地址空间不会超过实际的物理地址空间。例如分区允许使用的实际物理地址空间为64MB,则不允许任意分区需要的虚地址空间超过64MB,
初步分配的页表大小为按照实际物理地址空间所能映射的页表项的2倍。根据PowerPC处理器的MMU设计,一个页为4K字节,一个页映射在页表中占用的空间为8个字节64位,则若物理地址空间大小为X字节,则包含的页的数量为X/4096个,恰好完全映射需要的页表大小为(X/4096*8)字节,也就是X/512字节,其两倍,即初步设定页表大小为X/256字节。
步骤2,根据大小对各虚地址分区进行排序,排序的方式为升序,即将分区根据空间范围按从小到大排列。各分区的虚拟起始地址相同,都是以0x10000000为对齐的虚地址。但要保证此虚拟起始地址能够总以用来表示最大空间一个分区。例如,某个分区空间大小为0x80000000字节,则虚拟起始地址必须为0x80000000之前,以0x10000000为对齐的虚地址,否则就不足以用来表示虚空间大小为0x80000000字节的分区。
根据PowerPC处理器的设计,虚拟起始地址的最高位,决定hash算子(即MMU中的VSID)放置在硬件的哪一个SR寄存器中。例如虚拟起始地址为0x30000000,则此分区0x30000000到0x3FFFFFFF范围内虚空间的hash算子放置在SR3寄存器中。
此外,由于处理器算法的设计,一个hash算子(VSID)最多能够供256M字节空间进行映射,因此,大于256M字节的分区,需要分解为多个256M字节的小分区,进行以下hash算子的获取。再将得到的hash算子填到此分区下的多个SR寄存器中。
步骤3,随机分配第一个分区,也就是空间最小分区的hash算子,这个hash算子不可以为0。之后使用MMU页表仿真软件,将此空间中的页索引分配到页表中。仿真检验的方式参见图2。该分区其余的SR寄存器内填0。
步骤4,根据前一个分区的大小,以及之前使用的hash算子和当前分区的大小,决定当前分区的hash算子。决定的方法如下:
当前分区的hash算子,等于第一个分区的hash算子异或某个二十四位数据,所异或的二十四位数据为上一次异或的二十四位数据,加上一个分区所需虚拟空间页大小,扩展到与当前分区所需虚拟空间页大小对齐的离得最近的数据。第一个分区可认为其异或的数据为0。其中,分区的虚拟空间页大小,等于虚拟空间大小除以4096。
使用数学表达式表示,设第一个分区的hash算子为W,上一次异或的二十四位数据为f(n-1),上一个分区的虚拟空间页大小为a,当前分区的虚拟空间页大小为b,由于各分区的虚空间大小均为2的整数次幂,因此本次需要异或的二十四位数据f(n)可表示为:
f(1)=0;
f(n)=(f(n-1)+a+b-1)&(~(b-1))
当前的hash算子,则为:
W^f(n)=W^((f(n-1)+a+b-1)&(~(b-1)))
通过仿真结果可以看出,这样的hash算子可以使当前分区的虚地址和之前分区的虚地址尽可能不会分配到页表的同一个偏移中,从而提升页表使用率。
此外,若得到的hash算子为0,则需要使用步骤5中的调整hash算子方法后,之后再执行步骤5。
步骤5,将当前分区的hash算子,使用仿真检验方法,对当前hash算子的有效性,以及页表大小的合理性进行检验。
对当前hash算子有效性的检验方法如下:如果检验过程中发现,当前得到的hash算子,导致当前分区下的某个虚拟页地址,和之前某一个分区相同的虚拟页地址,出现在页表的同一个偏移上;或者当得到的hash算子等于0,则表示当前的hash算子无法保证不同分区间的空间隔离,需要调整hash算子。调整的方式是,之前所异或的二十四位数据加1后,再异或到W上。最多加上之前分区的数量,即可找到一个hash算子,使其能够保证不同分区的空间隔离。则需要异或的二十四位数据f(n)的算法可调整为
f(n)=((f(n-1)+a+b-1)&(~(b-1)))+x(x=0,1,2,......n-1)
算出新的hash算子后,重新进行步骤5的有效性检验,直到得到有效的hash算子为止。
页表大小合理性的检验方法如下:如果检验的过程中,发现某个虚拟地址在页表中的偏移的8个页表项已经填满,导致当前的页索引无法分配到合适的页表偏移地址上,则表示页表大小不够,需要扩充。此时,将之前使用的页表大小扩充为原来的2倍。再重新进行步骤4到步骤6的过程。最多将页表大小扩充为实际物理地址空间所能映射的页表项的8倍。此时能够保证8个分区的虚拟空间映射,其中每个分区的虚拟地址空间大小与实际物理地址空间大小相等。
当全部分区的全部页均能够完整的映射到页表中,则此时得到的各分区的hash算子和页表大小,可以应用于操作系统在此应用场景的分区存储管理中。
步骤3和步骤5中,关于MMU的页表映射仿真及检验软件,其功能流程可参见图2,包括如下步骤:
使用二维数组PTEG[PTEG_SIZE][8]来模拟页表的空间。其中PTEG_SIZE等于页表大小PT_SIZE除以0x40。PTEG[PTEG_SIZE][8]中的成员初始均为0。
210,获取当前分区分配到的hash算子,起始虚地址,虚拟空间大小;
220,将起始虚地址转换为段内虚地址页索引,虚拟空间大小转换为虚拟空间页大小。参见图4,根据处理器MMU规则,虚地址页索引为虚地址的第4位到第19位。虚拟空间页大小等于虚拟空间大小除以4096。
230,将分区起始虚地址页索引赋给当前页索引。
240,根据hash算子和当前页索引,使用hash算法算出其在页表中的偏移地址,如图2所示。以及PowerPC处理器的MMU规则,hash算法的表示如下:
HashValueH=((((vsid^virtual_pageIndex)&0X7FC00)>>0X0A)&SDR_mask)<<0x10;
HashValueL=((vsid^virtual_pageIndex)&0X3FF)<<0X06;
PTEG_index=(SDR_taborg|HashValueH|HashValueL)>>0x06;
其中,vsid为导入的hash算子。virtual_pageIndex为当前页索引,根据处理器规则,SDR_mask等于(PT_SIZE/0x10000)-1,SDR_taborg等于0。
PTEG_index即页表中的偏移地址,对应数组PTEG的第一维。
250,检查PTEG[PTEG_index]的8个成员中第一个为空的项,将当前页索引填入到这一项中,表示给该虚拟地址分配了页表项。参见图3,分区1的虚地址1分配到页表偏移0的第二项中。
260,判断此偏移地址上是已有其他分区的虚拟页索引,并和当前页索引相同。如图5,分区0的页索引0和分区1的页索引0都分配到页表偏移0上,导致分区0和分区1的空间隔离失败,此时则返回需要调整hash算子
270,若此偏移地址上已不存在空的页表项单元以保存当前页索引,则返回需要调整页表大小,如图6。
280,若之前的两个条件均不满足,则当前页索引自加1。
290,此时若已经超出当前分区的虚拟地址空间范围,则返回返回当前分区在页表中的映射成功,否则重复之前240开始往后的步骤。
实施例:对于一种应用场景,假设条件为:供应用程序使用的物理地址空间(RAM+FLASH)为256M字节。物理地址空间用户需要16个分区,每个分区各自需要的虚地址空间为:
4KB,1MB,4KB,4KB,4KB,150MB,64KB,36MB,6MB,4MB,16MB,9MB,12MB,12MB,24MB,100MB。
则首先,将各分区大小扩充为2的整数次幂,对应为:
首次构建的页表大小为256MB/256=1MB,即0x100000字节。此时仿真软件的相关参数相应为:
PT_SIZE=0x100000,PTEG_SIZE=PT_SIZE/0x40=0x 4000
SDR_mask=(PT_SIZE/0x10000)-1=0xF。
SDR_taborg=0x00000000。
之后,按升序排列分区大小,结果如下:
由于各分区需要空间均未超过256M字节,因此可设置任意各分区的虚拟起始地址。假设设为0x40000000。
以下按各分区的顺序号来标识各分区,如1#分区等。
之后,随机分配1#分区的hash算子,假设设为W(1)=0x10。根据PowerPC的MMU管理方法,将1#分区的虚拟地址向页表中分配,过程如下:
1#分区空间内的只有一个页,其页索引为0,vsid为f(1)等于0x10,最终算出在页表中的偏移为0x10。在PTEG[0x10][0]中,将1#分区页索引0的虚地址信息存放进去。
之后,获取2#分区的hash算子。2#分区的虚拟空间页大小为1,因此需异或的二十四位数据为:
f(2)=(f(1)+1+1-1)&(~(1-1))=1,
2#分区的hash算子相应为:
W(2)=W(1)^f(2)=0x10^1=0x11,
将2#分区的虚拟地址空间分配到页表中,其偏移为0x11。此时页表即不存在同样的页索引在一个偏移上,也不存在某个偏移上的8个页表项满,表示当前分配的hash算子,和页表大小均适当。
分别对3#分区、4#分区的hash算子进行计算并分配相应虚地址空间,均不会有问题,得到的hash算子分别为:
f(3)=(f(2)+1+1-1)&(~(1-1))=0x2,W(3)=W(1)^f(3)=0x12;
f(4)=(f(3)+1+1-1)&(~(1-1))=0x3,W(4)=W(1)^f(4)=0x13;
5#分区大小为64K字节,其虚拟空间页大小等于64/4,即0x10。则:
f(5)=(f(4)+1+0x10-1)&(~(0x10-1))=0x10,W(5)=W(1)^f(5)=0x0;
此时得到的hash算子为0,需要进行hash算子调整,调整过程如下:
f(5)=0x10+1=0x11,W(5)=W(1)^f(5)=0x1。
将5#分区中的虚拟页索引0x0~0xf,映射到页表后,确定其既不会造成某个偏移上的页表项满,也不会有相同的页索引在同一个偏移上。
此后依次计算6#~11#分区,得到的hash算子分别为:
f(6)=(f(5)+0x10+0x100-1)&(~(0x100-1))=0x100,W(6)=W(1)^f(6)=0x110;
f(7)=(f(6)+0x100+0x400-1)&(~(0x400-1))=0x400,W(7)=W(1)^f(7)=0x410;
f(8)=(f(7)+0x400+0x800-1)&(~(0x800-1))=0x800,W(8)=W(1)^f(8)=0x810;
f(9)=(f(8)+0x800+0x1000-1)&(~(0x1000-1))=0x1000,W(9)=W(1)^f(9)=0x1010;
f(10)=(f(9)+0x1000+0x1000-1)&(~(0x1000-1))=0x2000,W(10)=W(1)^f(10)=0x2010;
f(11)=(f(10)+0x2000+0x1000-1)&(~(0x1000-1))=0x3000,W(11)=W(1)^f(11)=0x3010;
将这几个分区的虚拟页索引映射后,也都不会导致需要调整hash算子和调整页表大小的冲突。
计算12#分区的hash算子,结果为:
f(12)=(f(11)+0x3000+0x1000-1)&(~(0x1000-1))=0x4000,W(12)=W(1)^f(12)=0x4010;
此时进行分区内页索引向页表的分配,其页索引0通过hash计算得到的页偏移,为0x10,此时0x10偏移已存有1#分区的页索引0,两个页索引相等,表示此时的hash算子无法隔离1#分区和12#分区的空间,需要调整12#分区的hash算子。
第一次调整后的hash算子为:W(1)^(0x4000+1)=0x4011,进行验证,会发现12#分区和2#分区的页索引0位于页表同一偏移。继续调整,直到将hash算子W(12)调整为0x4014,此时会检验到不会出现冲突。
此后的13#分区到15#分区,依次在分配了hash算子后,进行调整,即可得到不会冲突的hash算子。各分区的hash算子分别为:
W(13)=0x6011;
W(14)=0x8015;
W(15)=0x10016;
在进行16#分区的hash算子分配、调整过程中,当将W(16)调整为0x20017时,会发现,当对第0xC004个页进行分配时,对应的偏移上0x13上,已经没有空闲的页表项单元,此时,意味着页表空间不够,需要调整页表大小。
将页表大小由1M字节调整为2M字节,再次进行以上的步骤,得到的各分区hash算子没有变化,此时,所有分区的虚拟空间都可以毫无冲突的分配到页表中。
此时,得到的各分区hash算子如下:
分区一 分区三 分区四 分区五
0x10 0x11 0x12 0x13
分区七 分区二 分区十 分区九
0x1 0x110 0x410 0x810
分区十一 分区十二 分区十三 分区十四
0x1010 0x2010 0x3010 0x4014
分区十五 分区八 分区十六 分区六
0x6011 0x8015 0x10016 0x20017
页表大小为2M字节。此hash算子数据和页表数据可用于分区操作系统在此应用场景下,使用倒置页表方式进行分区的隔离。其映射的完整性已经得到验证。经过实际运行证明,此方法得到的hash算子和倒置页表大小能够支持十六个分区的隔离运行。
本发明通过物理空间实际大小,和各分区的需求大小,进行各分区hash算子以及页表大小的分配,从而可以仅使用hash页表进行多个分区的隔离。以上实例示范了整个方法的运作过程。当然,本发明还可以有其它多种实施例,在不背离本发明精神和实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (10)

1.一种基于HASH算法的倒置页表确定性管理方法,其特征在于:
步骤1):在获得应用场景的分区数量和各分区所需虚地址空间大小的基础上,调整各分区的虚地址空间大小,并根据物理存储空间大小进行初步的页表大小分配;
步骤2):根据虚地址空间大小,对各虚地址分区进行排序,并统一各分区的虚拟起始地址;
步骤3):随机分配第一个分区的hash算子,并仿真将此分区的页索引分配到页表中;
步骤4):根据之前分区的算子和虚地址空间大小,以及当前分区的虚空间大小,分配当前分区的hash算子,以尽可能避免虚地址在页表中的偏移冲突,若得到的当前分区hash算子为0,则调整hash算子;
步骤5):仿真验证当前的分配方案是否能够满足当前分区与之前分区的空间能够隔离,以及全部页表项组不会溢出的条件,如果不能够隔离,则调整hash算子,重新进行当前分区的仿真验证,如果页表项组出现溢出,则调整页表大小,重复之前的步骤3)到步骤5),直到得到一组hash算子和合适的页表大小,可以应用于操作系统在此应用场景的分区存储管理中。
2.根据权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:步骤1)中各分区的虚地址空间扩展为最近的2的整数次幂,初步分配的页表大小的方法为,页表中所包含的页表项个数,能够刚好映射实际物理地址空间大小。
3.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:步骤2)中各分区的虚地址空间大小的排序方式为升序,各分区的虚拟起始地址相同,都是以0x10000000为对齐的虚地址。
4.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:步骤3)中随机得到的hash算子不能为0。
5.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于,步骤4)中的当前分区的hash算子为第一个分区的hash算子异或某一个二十四位数据。
6.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:权利要求5中所述的方法中,所异或的二十四位数据,为上一次异或的二十四位数据,加上上一个分区所需虚拟空间页大小,扩展到与当前分区所需虚拟空间页大小对齐的离得最近的数据。
7.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:步骤5中,仿真验证的方式为软件仿真,通过计算各分区中,各虚拟地址页索引,映射到倒置页表中的位置,来进行检验验证,其中,若当前分区下的某个虚拟页地址,和之前某一个分区相同的虚拟页地址,出现在页表的同一个偏移上,或者当前得到的hash算子等于0,则可确定当前的hash算子不能正常隔离分区;通过判断当前得到的偏移的8个成员是否已满,导致当前的页索引无法分配到合适的页表偏移地址上,来确定是否满足页表项组不溢出的条件。
8.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:其步骤4和步骤5中,调整hash算子的方法为,计算之前失败的hash算子时所异或的二十四位数据,自加1后,再异或到第一个分区的hash算子上,得到新的当前分区hash算子。
9.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:其步骤5调整页表大小的方法,是将上一次分配的页表大小翻倍,最大不超过实际物理地址空间所能映射的页表项的8倍,此方法最差情况下,能够满足8个分区的虚拟空间与物理空间大的映射需求。
10.如权利要求1所述的基于HASH算法的倒置页表确定性管理方法,其特征在于:软件仿真验证模块,其输入包括三个参数,包括:当前分区分配到的hash算子、空间起始虚地址、虚地址空间大小,之后使用PowerPC处理器MMU模块的hash算法,将分区的全部虚地址映射到页表的偏移中,此时开始验证,通过判断此偏移地址上是否有之前分区的虚拟页索引与当前分区的页索引相同,来判断hash算子是否需要调整;通过检查适当偏移地址上是否已不存在空的页表项单元以保存当前页索引,来判断页表大小是否需要扩充,若两个验证条件均为假,则表示此分区的hash算子分配成功。
CN201410649498.4A 2014-11-14 2014-11-14 一种基于hash算法的倒置页表确定性管理方法 Active CN105653465B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410649498.4A CN105653465B (zh) 2014-11-14 2014-11-14 一种基于hash算法的倒置页表确定性管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410649498.4A CN105653465B (zh) 2014-11-14 2014-11-14 一种基于hash算法的倒置页表确定性管理方法

Publications (2)

Publication Number Publication Date
CN105653465A CN105653465A (zh) 2016-06-08
CN105653465B true CN105653465B (zh) 2018-08-24

Family

ID=56479012

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410649498.4A Active CN105653465B (zh) 2014-11-14 2014-11-14 一种基于hash算法的倒置页表确定性管理方法

Country Status (1)

Country Link
CN (1) CN105653465B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781099B (zh) * 2019-09-29 2021-12-03 苏州浪潮智能科技有限公司 一种硬盘碎片整理方法与装置
KR20220007300A (ko) * 2020-07-10 2022-01-18 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN114116541A (zh) * 2020-08-27 2022-03-01 华为技术有限公司 确定物理地址的方法及芯片系统
CN114996024A (zh) * 2022-07-29 2022-09-02 阿里巴巴(中国)有限公司 内存带宽监测方法、服务器和计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662853A (zh) * 2012-03-22 2012-09-12 北京北大众志微系统科技有限责任公司 实现使用存储级并行的内存管理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607054B2 (en) * 2010-10-15 2013-12-10 Microsoft Corporation Remote access to hosted virtual machines by enterprise users

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662853A (zh) * 2012-03-22 2012-09-12 北京北大众志微系统科技有限责任公司 实现使用存储级并行的内存管理方法及装置

Also Published As

Publication number Publication date
CN105653465A (zh) 2016-06-08

Similar Documents

Publication Publication Date Title
Dai et al. ForeGraph: Exploring large-scale graph processing on multi-FPGA architecture
CN105653465B (zh) 一种基于hash算法的倒置页表确定性管理方法
CN103218208B (zh) 用于实施成形的存储器访问操作的系统和方法
CN105893269B (zh) 一种Linux系统下内存管理方法
Suzuki et al. Coordinated bank and cache coloring for temporal protection of memory accesses
US20210191765A1 (en) Method for static scheduling of artificial neural networks for a processor
US7549022B2 (en) Avoiding cache line sharing in virtual machines
Cheung et al. A large-scale spiking neural network accelerator for FPGA systems
US20110254590A1 (en) Mapping address bits to improve spread of banks
TWI779438B (zh) 數據儲存方法、電子設備及儲存媒體
WO2017000756A1 (zh) 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质
CN103116555B (zh) 基于多体并行缓存结构的数据访问方法
Chan et al. Cache-oblivious and data-oblivious sorting and applications
Kim et al. Operation and data mapping for CGRAs with multi-bank memory
CN104899159B (zh) 高速缓冲存储器Cache地址的映射处理方法和装置
US20140089369A1 (en) Multi-granularity parallel fft computation device
US20130097401A1 (en) Memory manager
Wang et al. FP-AMR: A Reconfigurable Fabric Framework for Adaptive Mesh Refinement Applications
Wijeratne et al. Accelerating sparse MTTKRP for tensor decomposition on FPGA
Yin et al. Joint loop mapping and data placement for coarse-grained reconfigurable architecture with multi-bank memory
Thong et al. Sat solving using fpga-based heterogeneous computing
Shao et al. Processing grid-format real-world graphs on DRAM-based FPGA accelerators with application-specific caching mechanisms
Hadjidoukas et al. From 11 to 14.4 PFLOPs: performance optimization for finite volume flow solver
Lavrov et al. HyperTRIO: hyper-tenant translation of I/O addresses
Ni et al. Parallel graph traversal for fpga

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant