TLB页表项管理方法
未命名
10-09
阅读:84
评论:0
tlb页表项管理方法
技术领域
1.本发明涉及处理器技术领域,尤其涉及一种tlb页表项管理方法、装置、设备及存储介质。
背景技术:
2.现代处理器普遍采用虚拟内存技术对真实的物理内存进行抽象。虚拟内存的基本思想是程序、数据、堆栈的总的大小可以超过主存的大小,操作系统会将程序进行分割,将当前使用的部分由磁盘交换到主存,未使用的部分保留在磁盘中并在需要时与磁盘交换程序片段。同时虚拟内存可以为每个运行在处理器上的任务提供一个独占内存地址空间的假象。在虚拟内存技术下,处理器执行某一任务的访存指令所指向的内存地址被称为虚拟地址或者逻辑地址,虚拟地址的取值范围由处理器的位数决定。通过内存管理单元(memory management unit,mmu),虚拟地址会被转化为物理地址从而实现对真实物理内存的访存操作。内存管理单元的存在可以使程序员在编写程序的时候不需要对程序进行分割。
3.目前大多数使用虚拟内存技术的处理器都采用一种称为分页的技术,处理器会为每个进程提供虚拟内存空间,并且会根据进程需求划分为许多虚拟页(page),每个虚拟页有一个用来标示它的虚拟页号(page number)。同样,相应的物理内存被划分为与虚拟页相同大小的物理页,每个物理页同样有一个用来标示它的物理页号。处理器进行访存时所生成的虚拟地址被内存管理单元划分为两部分,第一部分是页号索引(page index),第二部分则是对该页首地址的偏移量(offset)。参考图1,转译后备缓冲器(translation lookaside buffer,tlb)作为页表项的高速缓存,存储了虚拟地址到物理地址映射的页表项,在进行访存操作时将首先被访问,tlb中的每一个页表项都缓存了虚拟页号以及与之对应的物理页号。当虚拟地址产生时,其虚拟页号将会遍历tlb中的页表项,若存在页号索引与页表项中的虚拟页号匹配,则tlb命中,之后通过将物理页号与偏移量的拼接生成物理地址。若不存在与页号索引相匹配的页表项,则tlb失效,之后需要通过遍历内存中存储的页表项来完成虚实地址转换,并将内存中的页表项写入到tlb中。传统上,写入页表项通过同余类操作,即计算虚拟页号与tlb容量之间的余数确认写入页表项的位置。
4.现代处理器器的tlb普遍支持不同的页表项管理方法,每种方法都在不同的性能指标上进行了折中,从而不可避免的带来了页表项写入与读出之间无法高效协同。对于原始的线性匹配操作来说,tlb页表项的写入可以写入tlb页表项中任意的空位置,能够充分利用tlb的存储空间,然而,其读出需要遍历tlb中的每一个页表项,当tlb的容量较大时,不仅增加了访问延迟,还引入了大量的比较电路。对于同余类方法,假设tlb的容量为128,按照同余类的原理,页表项在tlb中的位置需要通过计算虚拟页号与tlb的容量之间除法余数求得。在实际上余数只需要关注虚拟页号的低7位(log2(128)),对于写入与读出过程,该方法硬件结构简单,不需要遍历整个tlb。然而,同余类方法容易导致tlb存储空间得不到充分利用。例如,对于虚拟页号为0,128,以及256的页表项都将会被写入tlb中的第0个位置,造成资源冲突,而tlb其他存储位置有可能还在空置。此外,若0,128,256的页表项频繁使用,
将会导致tlb与内存中的页表项之间频繁交换,从而降低处理器的访存性能。
技术实现要素:
5.为解决上述现有技术中存在的部分或全部技术问题,本发明提供一种tlb页表项管理方法、装置、设备及存储介质。
6.本发明的技术方案如下:
7.第一方面,提供了一种tlb页表项管理方法,包括:
8.建立包含页表项索引与虚拟页号的对应关系的哈希函数,其中,在所述哈希函数中,tlb中页表项的每一位索引采用虚拟页号的多位异或计算,且对应同一索引位的虚拟页号的多个位数彼此相差页表项索引位数;
9.响应于输入的虚拟地址,基于所述哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换。
10.在一些可能的实现方式中,设定:tlb的页表项个数为2t,页表项的索引位数为log22t=t,以二进制方式表示的虚拟页号位数为n-m;
11.基于上述设定,建立如下哈希函数:
[0012][0013][0014]
其中,r表示虚拟地址中首个不为0所对应的位数,i为正整数,vpn[r+x]表示虚拟页号第r+x位的数,当r+x大于n-m时,r+x不参与异或计算,x=1,2,3,
…
,(it+t-1)。
[0015]
在一些可能的实现方式中,设定:tlb的页表项个数为128,页表项的索引位数为log2128=7,以二进制方式表示的虚拟页号为16位;
[0016]
基于上述设定,哈希函数为:
[0017][0018]
在一些可能的实现方式中,响应于输入的虚拟地址,基于所述哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换,包括:
[0019]
响应于输入的虚拟地址,根据虚拟地址和内存页大小计算虚拟地址对应的虚拟页号和页内偏移;
[0020]
根据虚拟页号,利用哈希函数进行页表项索引计算,获取页表项索引值;
[0021]
根据页表项索引值访问tlb相应位置的页表项,并比较页表项中的虚拟页号和虚拟地址对应的虚拟页号;
[0022]
根据比较结果判断tlb是否命中;
[0023]
若tlb命中,则返回对应的物理地址;
[0024]
若tlb没有命中,则访问内存中存储的页表项,获取虚拟页号对应的页表项,将获取的页表项写入到页表项索引值对应的tlb索引位置处,并返回对应的物理地址。
[0025]
在一些可能的实现方式中,根据比较结果判断tlb是否命中,包括:
[0026]
若页表项中的虚拟页号和虚拟地址对应的虚拟页号相同,则判断tlb命中;
[0027]
若页表项中的虚拟页号和虚拟地址对应的虚拟页号不同,则判断tlb没有命中。
[0028]
在一些可能的实现方式中,物理地址通过虚拟页号对应的页表项中物理页号与虚拟地址对应的页内偏移拼接生成。
[0029]
第二方面,还提供了一种tlb页表项管理装置,包括:
[0030]
哈希函数存储模块,用于存储包含页表项索引与虚拟页号的对应关系的哈希函数,其中,在所述哈希函数中,tlb中页表项的每一位索引采用虚拟页号的多位异或计算,且对应同一索引位的虚拟页号的多个位数彼此相差页表项索引位数;
[0031]
地址转换模块,用于根据输入的虚拟地址,调用所述哈希函数存储模块中的哈希函数,基于所述哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换。
[0032]
第三方面,还提供了一种终端设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的ltb页表项管理方法。
[0033]
第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备
执行如上述的ltb页表项管理方法。
[0034]
本发明技术方案的主要优点如下:
[0035]
本发明的tlb页表项管理方法、装置、设备及存储介质通过选取虚拟页号不同位进行异或操作来确定虚拟页号对应的页表项索引,进而确定虚拟页号对应的页表项在tlb中的写入与读出位置,能够充分利用tlb的存储空间,并减少比较电路的使用。
附图说明
[0036]
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附
[0037]
图中:
[0038]
图1为示例提供的一种处理器进行访存时的虚实地址转换过程示意图;
[0039]
图2为本发明一实施例的tlb页表项管理方法的流程图;
[0040]
图3为本发明一实施例的一种基于哈希函数的虚实地址转换流程图;
[0041]
图4为本发明一实施例的一种tlb页表项管理装置的结构示意图。
具体实施方式
[0042]
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]
以下结合附图,详细说明本发明实施例提供的技术方案。
[0044]
参考图2,第一方面,本发明一实施例提供了一种tlb页表项管理方法,该方法包括以下步骤:
[0045]
步骤s1,建立包含页表项索引与虚拟页号的对应关系的哈希函数,其中,在哈希函数中,tlb中页表项的每一位索引采用虚拟页号的多位异或计算,且对应同一索引位的虚拟页号的多个位数彼此相差页表项索引位数;
[0046]
步骤s2,响应于输入的虚拟地址,基于哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换。
[0047]
本发明一实施例中,通过选取虚拟页号不同位进行异或操作来确定虚拟页号对应的页表项索引,进而确定虚拟页号对应的页表项在tlb中的写入与读出位置,能够充分利用tlb的存储空间,并减少比较电路的使用。
[0048]
进一步地,本发明一实施例中,设定:tlb的页表项个数为2
t
,页表项的索引位数为log22
t
=t,以二进制方式表示的虚拟页号位数为n-m;
[0049]
基于上述设定,建立如下哈希函数:
[0050][0051][0052]
其中,r表示虚拟地址中首个不为0所对应的位数,i为正整数,vpn[r+x]表示虚拟页号第r+x位的数,当r+x大于n-m时,r+x不参与异或计算,x=1,2,3,
…
,(it+t-1)。
[0053]
根据上述建立的哈希函数,不同虚拟页号的写入和读出位置均可通过哈希函数计算得到。
[0054]
在上述建立的哈希函数中,由于页表项索引计算包含了虚拟页号高位与低位的信息,能够使虚拟页在tlb中的散布更加均匀,增加tlb的空间利用率。例如,虚拟页号为0b0000_0000与0b1000_0000的两个页表项若通过同余类操作则会写入到tlb中的相同位置,而使用哈希函数则可以分别写到0和1的位置,从而不会引起资源冲突。
[0055]
进一步地,考虑到在实际应用中,tlb的页表项个数通常为128,以二进制方式表示的虚拟页号通常为16位。为此,当tlb的页表项个数为128,页表项的索引位数为log2128=7,以二进制方式表示的虚拟页号为16位时,建立如下的哈希函数:
[0056][0057]
参考图3,本发明一实施例中,响应于输入的虚拟地址,基于哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换,进一步包括以下步骤:
[0058]
步骤s21,响应于输入的虚拟地址,根据虚拟地址和内存页大小计算虚拟地址对应的虚拟页号和页内偏移;
[0059]
步骤s22,根据虚拟页号,利用哈希函数进行页表项索引计算,获取页表项索引值;
[0060]
步骤s23,根据页表项索引值访问tlb相应位置的页表项,并比较页表项中的虚拟页号和虚拟地址对应的虚拟页号;
[0061]
步骤s24,根据比较结果判断tlb是否命中;
[0062]
步骤s25,若tlb命中,则返回对应的物理地址;
[0063]
步骤s26,若tlb没有命中,则访问内存中存储的页表项,获取虚拟页号对应的页表项,将获取的页表项写入到页表项索引值对应的tlb索引位置处,并返回对应的物理地址。
[0064]
本发明一实施例中,对于tlb页表项读出过程,通过使用哈希函数计算页表项在tlb中的位置,能够进行快速查询,避免遍历整个tlb,减少比较次数,降低比较电路的使用。对于tlb页表项写入过程,通过使用哈希函数计算页表项在tlb中的写入位置,能够使虚拟页在tlb中的散布更加均匀,增加tlb的空间利用率。
[0065]
进一步地,本发明一实施例中,根据比较结果判断tlb是否命中,包括:
[0066]
若页表项中的虚拟页号和虚拟地址对应的虚拟页号相同,则判断tlb命中;
[0067]
若页表项中的虚拟页号和虚拟地址对应的虚拟页号不同,则判断tlb没有命中。
[0068]
进一步地,物理地址通过虚拟页号对应的页表项中物理页号与虚拟地址对应的页内偏移拼接生成。
[0069]
参考图4,第二方面,本发明一实施例还提供了一种tlb页表项管理装置,该装置包括:
[0070]
哈希函数存储模块100,用于存储包含页表项索引与虚拟页号的对应关系的哈希函数,其中,在哈希函数中,tlb中页表项的每一位索引采用虚拟页号的多位异或计算,且对应同一索引位的虚拟页号的多个位数彼此相差页表项索引位数;
[0071]
地址转换模块200,用于根据输入的虚拟地址,调用哈希函数存储模块中的哈希函数,基于哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换。
[0072]
本发明一实施例所提供的一种tlb页表项管理装置,能够实现上述任一实施例所述的tlb页表项管理方法的所有流程,装置中的各个模块的作用以及实现的技术效果分别与上述实施例所述的tlb页表项管理方法的作用以及实现的技术效果对应相同,这里不再赘述。
[0073]
第三方面,本发明一实施例还提供了一种终端设备,包括:存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述任一实施例所述的ltb页表项管理方法。
[0074]
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器、存储器。所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
[0075]
所述处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
[0076]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(smart media card,smc)、安全数码(secure digital,sd)卡、闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0077]
第四方面,本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行如上述任一实施例所述的ltb页表项管理方法。
[0078]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0079]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设
备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。
[0080]
最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种tlb页表项管理方法,其特征在于,包括:建立包含页表项索引与虚拟页号的对应关系的哈希函数,其中,在所述哈希函数中,tlb中页表项的每一位索引采用虚拟页号的多位异或计算,且对应同一索引位的虚拟页号的多个位数彼此相差页表项索引位数;响应于输入的虚拟地址,基于所述哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换。2.根据权利要求1所述的ltb页表项管理方法,其特征在于,设定:tlb的页表项个数为2
t
,页表项的索引位数为log22
t
=t,以二进制方式表示的虚拟页号位数为n-m;基于上述设定,建立如下哈希函数:其中,r表示虚拟地址中首个不为0所对应的位数,i为正整数,vpn[r+x]表示虚拟页号第r+x位的数,当r+x大于n-m时,r+x不参与异或计算,x=1,2,3,
…
,(it+t-1)。3.根据权利要求2所述的ltb页表项管理方法,其特征在于,设定:tlb的页表项个数为128,页表项的索引位数为log2128=7,以二进制方式表示的虚拟页号为16位;基于上述设定,哈希函数为:
4.根据权利要求1所述的ltb页表项管理方法,其特征在于,响应于输入的虚拟地址,基于所述哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换,包括:响应于输入的虚拟地址,根据虚拟地址和内存页大小计算虚拟地址对应的虚拟页号和页内偏移;根据虚拟页号,利用哈希函数进行页表项索引计算,获取页表项索引值;根据页表项索引值访问tlb相应位置的页表项,并比较页表项中的虚拟页号和虚拟地址对应的虚拟页号;根据比较结果判断tlb是否命中;若tlb命中,则返回对应的物理地址;若tlb没有命中,则访问内存中存储的页表项,获取虚拟页号对应的页表项,将获取的页表项写入到页表项索引值对应的tlb索引位置处,并返回对应的物理地址。5.根据权利要求4所述的ltb页表项管理方法,其特征在于,根据比较结果判断tlb是否命中,包括:若页表项中的虚拟页号和虚拟地址对应的虚拟页号相同,则判断tlb命中;若页表项中的虚拟页号和虚拟地址对应的虚拟页号不同,则判断tlb没有命中。6.根据权利要求4所述的ltb页表项管理方法,其特征在于,物理地址通过虚拟页号对应的页表项中物理页号与虚拟地址对应的页内偏移拼接生成。7.一种tlb页表项管理装置,其特征在于,包括:哈希函数存储模块,用于存储包含页表项索引与虚拟页号的对应关系的哈希函数,其中,在所述哈希函数中,tlb中页表项的每一位索引采用虚拟页号的多位异或计算,且对应同一索引位的虚拟页号的多个位数彼此相差页表项索引位数;地址转换模块,用于根据输入的虚拟地址,调用所述哈希函数存储模块中的哈希函数,基于所述哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换。8.一种终端设备,其特征在于,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的ltb页表项管理方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至6任一项所述的ltb页表项管理方法。
技术总结
本发明公开了一种TLB页表项管理方法、装置、设备及存储介质,该TLB页表项管理方法包括以下步骤:建立包含页表项索引与虚拟页号的对应关系的哈希函数,其中,在哈希函数中,TLB中页表项的每一位索引采用虚拟页号的多位异或计算,且对应同一索引位的虚拟页号的多个位数彼此相差页表项索引位数;响应于输入的虚拟地址,基于哈希函数,进行页表项读出、或写入与读出,以完成虚实地址转换。本发明的TLB页表项管理方法、装置、设备及存储介质通过选取虚拟页号不同位进行异或操作来确定虚拟页号对应的页表项索引,进而确定虚拟页号对应的页表项在TLB中的写入与读出位置,能够充分利用TLB的存储空间,并减少比较电路的使用。并减少比较电路的使用。并减少比较电路的使用。
技术研发人员:黄成龙 张光达 何益百 王会权 温家辉 王璐 方健 赵夏
受保护的技术使用者:中国人民解放军军事科学院国防科技创新研究院
技术研发日:2023.06.12
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
