支持多级页表的TLB架构的制作方法

专利2022-06-30  65

本发明涉及多级页表的tlb架构
技术领域
:,具体为支持多级页表的tlb架构。
背景技术
::页表是用来保存虚拟地址到物理地址的映射关系的数据结构,一般来说,每个页表项(pagetableentry,简称pte)记录一个内存页面的地址映射关系,它的内容一般包括pte的有效位、该页的物理页号、以及该页的属性位:比如可读、可写、可执行、是否为脏等。内存页面的大小往往会在很长的时间内保持稳定,而并不随着计算机系统中的内存容量的增加而增加,这就导致页表所包含的pte的数量不断增长。最常见的内存页表大小是4kb,映射4gb的虚拟内存需要1m项pte,如果pte的容量是8字节,则需要8mb的额外空间来保存。多任务操作系统中每个进程都有自己的页表,如果这些页表同时保存在内存中,会占用大量的内存空间,为了解决页表占据大量内存空间的问题,现代的体系结构往往采用多级页表,图1是以三级页表为例的示意图,图中页表为三级架构:最顶层为根页表、下一层是中间页表,最底层是叶子页表。每张页表的大小正好等于一个内存页面的大小。其中根页表只有一张表,它保存的是页目录,每一项索引到一张中间页表。中间页表保存的也是页目录,每一项索引到一张叶子页表。叶子页表的每一项就是一个pte。当程序加载到内存时,操作系统只会对当前使用到的虚拟地址建立页表,而还没有使用到的虚拟地址对应的pte或页目录的有效位被设为0,表示对应的地址映射关系或下级页表不存在。当页目录的有效当应用程序需要加载更多的页面时,操作系统会将更多的页目录和pte的有效位设为1,同时建立映射关系。当页目录项的有效位为0时,对应的下级页表不会被加载到内存,从而只在内存中保留页表中正在使用的部分,减少无效页表对内存空间的浪费。多级页表还有一个功能:支持同时使用不同大小的页面,这是通过将一页页目录标记为巨页实现的。页目录中的某一项被标记为巨页表示该页没有对应的下一级页表,而是直接表示一个比常规页更大的连续地址的映射关系。对于那些主要处理地址连续数据的应用程序来说,使用巨页可以减小tlb缺失的频率。传统实现方案在使用多级页表时,tlb缺失时需要从根页表开始一级级的访问内存,或者通过与tlb分离的mmucache缓存页目录以加快tlb的加载过程;而对巨页的支持通过全相联tlb实现。比如mips64release5的tlb就是既定义了全相联的vtlb,又定义了组相联的ftlb。组相联的ftlb可以获得较大的容量,而全相联的vtlb可以用来缓存巨页的pte从而灵活支持各种不同的页大小。传统技术的缺点是加速pte加载和对巨页的支持采用不同的硬件实现,而页目录和巨页pte的需求量相对普通页的pte小得多,所以存在硬件资源浪费的现象。比如mips的vtlb在不使用巨页的情况下,只能用于对ftlb的补充,而要想加速pte的加载还需要额外的cache缓存页目录。同样的,在程序中使用巨页的目的是减少保存在tlb中的pte数量,当程序使用大量巨页时实际需要的页目录减少(因为巨页取代了页目录的位置),但是用于缓存页目录的mmucache的资源也不同用于保存巨页。此外,当tlb不命中(普通页和巨页都不命中时),要想从内存中加载pte还要先访问mmucache以判断是否可以加速pte的加载过程,使得pte加载的步骤增加。技术实现要素:本发明的目的在于提供支持多级页表的tlb架构,以解决上述
背景技术
:中提出的问题。为实现上述目的,本发明提供如下技术方案:支持多级页表的tlb架构,包括多级页表,其特征在于:所述多级页表的每一级页表分别对应有子tlb。优选的,当多级页表为3级页表时,所述多级页表包括根页表、中间页表和叶子页表,所述根页表、中间页表和叶子页表分别对应有相应的子tlb为根页表tlb、中间页表tlb和叶子页表tlb。优选的,所述根页表tlb、中间页表tlb和叶子页表tlb内所保存的具体信息为:(1)根页表tlb:保存根页表的页目录或巨页pte;(2)中间页表tlb:保存中间页表的页目录或巨页pte;(3)叶子页表tlb:保存叶子页表的pte。优选的,当对tlb进行读取时,将虚拟地址同时送往根页表tlb、中间页表tlb和叶子页表tlb,并按照如下的顺序进行判断:(1)当叶子页表tlb命中时,使用叶子页表tlb的输出结果;(2)否则,当中间页表tlb命中时,使用中间页表tlb的输出结果;(3)否则,当根页表tlb命中时,使用根页表tlb的输出结果;(4)当所有的子tlb都不命中时,不输出有效结果,从根页表开始tlb加载过程。优选的,所述中间页表tlb和根页表tlb内均具有两种命中结果:命中巨页的pte或者命中页目录,当命中巨页tlb时可视为tlb命中;而命中页目录而优先级更高的子tlb没有命中时,则视为tlb缺失,但是输出命中的页目录,从页目录所指向的位置开始tlb的加载过程,跳过找到页目录之前的过程。优选的,当多级页表的级数大于3级时,增加多级页表内的中间页表和与其相对应的中间页表tlb。与现有技术相比,本发明的有益效果是:(1)硬件资源利用率高:同一级页表的内容,无论是巨页的pte还是页目录都保存在同一子tlb中,当不使用巨页时,子tlb的空间可以全部用于缓存页目录,当使用巨页时,会同时缓存巨页和页目录;(2)实现方式更灵活:各个子tlb的容量可以根据需求来制定:越是高等级的页表(靠近根页表),它的每一项代表的页目录层次越高,即对应更多pte或pte对应的内存页越大,由此相应的在tlb中的需求就少,对应的子tlb的容量可以越小。容量较小的子tlb可以使用全相联结构,容量较大的子tlb使用组相联结构;(3)由于每个子tlb只支持一种大小的巨页,因此可以使用组相联结构而不会发生不同大小的巨页可能映射在不同的组中的情况,使用组相联结构比全相联结构更容易实现更大的容量。附图说明图1为三级页表的结构图。图2为本发明内的tlb结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参阅1和图2,本发明提供一种技术方案:支持多级页表的tlb架构,包括多级页表,多级页表的每一级页表分别对应有子tlb。当多级页表为3级页表时,多级页表包括根页表、中间页表和叶子页表,根页表、中间页表和叶子页表分别对应有相应的子tlb为根页表tlb、中间页表tlb和叶子页表tlb(如图2中所示),当多级页表的级数大于3级时,增加多级页表内的中间页表和与其相对应的中间页表tlb。根页表tlb、中间页表tlb和叶子页表tlb内所保存的具体信息为:(1)根页表tlb:保存根页表的页目录或巨页pte;(2)中间页表tlb:保存中间页表的页目录或巨页pte;(3)叶子页表tlb:保存叶子页表的pte。当对tlb进行读取时,将虚拟地址同时送往根页表tlb、中间页表tlb和叶子页表tlb,并按照如下的顺序进行判断:(1)当叶子页表tlb命中时,使用叶子页表tlb的输出结果;(2)否则,当中间页表tlb命中时,使用中间页表tlb的输出结果;(3)否则,当根页表tlb命中时,使用根页表tlb的输出结果;(4)当所有的子tlb都不命中时,不输出有效结果,从根页表开始tlb加载过程。中间页表tlb和根页表tlb内均具有两种命中结果:命中巨页的pte或者命中页目录,当命中巨页tlb时可视为tlb命中;而命中页目录而优先级更高的子tlb没有命中时,则视为tlb缺失,从页目录所指向的位置开始tlb的加载过程,跳过找到页目录之前的过程,在进行tlb加载的过程中获取的页目录和pte都要写到对应的子tlb中,tlb加载可以直接从页目录指向的地址开始,从而缩短加载过程。各个子tlb的容量可以根据需求来制定:越是高等级的页表(靠近根页表),它的每一项代表的页目录层次越高,即对应更多pte或pte对应的内存页越大,由此相应的在tlb中的需求就少,对应的子tlb的容量可以越小,容量较小的子tlb可以使用全相联结构,容量较大的子tlb使用组相联结构。多级页表的结构保证了在同一级页表中不会同时命中巨页的pte或页目录,因为两者在内存中是同一地址。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。当前第1页1 2 3 当前第1页1 2 3 
技术特征:

1.支持多级页表的tlb架构,包括多级页表,其特征在于:所述多级页表的每一级页表分别对应有子tlb。

2.根据权利要求1所述的支持多级页表的tlb架构,其特征在于:当多级页表为3级页表时,所述多级页表包括根页表、中间页表和叶子页表,所述根页表、中间页表和叶子页表分别对应有相应的子tlb为根页表tlb、中间页表tlb和叶子页表tlb。

3.根据权利要求2所述的支持多级页表的tlb架构,其特征在于:所述根页表tlb、中间页表tlb和叶子页表tlb内所保存的具体信息为:

(1)根页表tlb:保存根页表的页目录或巨页pte;

(2)中间页表tlb:保存中间页表的页目录或巨页pte;

(3)叶子页表tlb:保存叶子页表的pte。

4.根据权利要求3所述的支持多级页表的tlb架构,其特征在于:当对tlb进行读取时,将虚拟地址同时送往根页表tlb、中间页表tlb和叶子页表tlb,并按照如下的顺序进行判断:

(1)当叶子页表tlb命中时,使用叶子页表tlb的输出结果;

(2)否则,当中间页表tlb命中时,使用中间页表tlb的输出结果;

(3)否则,当根页表tlb命中时,使用根页表tlb的输出结果;

(4)当所有的子tlb都不命中时,不输出有效结果,从根页表开始tlb加载过程。

5.根据权利要求4所述的支持多级页表的tlb架构,其特征在于:所述中间页表tlb和根页表tlb内均具有两种命中结果:命中巨页的pte或者命中页目录,当命中巨页tlb时可视为tlb命中;而命中页目录而优先级更高的子tlb没有命中时,则视为tlb缺失,但是输出命中的页目录,从页目录所指向的位置开始tlb的加载过程,跳过找到页目录之前的过程。

6.根据权利要求2所述的支持多级页表的tlb架构,其特征在于:当多级页表的级数大于3级时,增加多级页表内的中间页表和与其相对应的中间页表tlb。

技术总结
本发明公开了支持多级页表的TLB架构,包括多级页表,多级页表的每一级页表分别对应有子TLB,当多级页表为3级页表时,所述多级页表包括根页表、中间页表和叶子页表,所述根页表、中间页表和叶子页表分别对应有相应的子TLB为根页表TLB、中间页表TLB和叶子页表TLB,各个子TLB的容量可以根据需求来制定:越是高等级的页表(靠近根页表),它的每一项代表的页目录层次越高,即对应更多PTE或PTE对应的内存页越大,由此相应的在TLB中的需求就少,对应的子TLB的容量可以越小。容量较小的子TLB可以使用全相联结构,容量较大的子TLB使用组相联结构。

技术研发人员:杨思博;常俊豪;李世平
受保护的技术使用者:江苏华创微系统有限公司;中国电子科技集团公司第十四研究所
技术研发日:2020.02.25
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-58716.html

最新回复(0)