一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

地址变换高速缓存控制方法、装置、设备及介质与流程

2023-02-02 00:03:49 来源:中国专利 TAG:
1.本技术涉及计算机
技术领域
:,尤其涉及一种地址变换高速缓存控制方法、装置、设备及介质。
背景技术
::2.地址变换高速缓存(translationlookasidebuffer,tlb)用于虚拟地址与物理地址之间的交互,通过提供一个寻找物理地址的缓存区来减少寻找物理地址所消耗的时间。3.若tlb中恰好存放着所需的页表,则tlb命中,即通过该页表可以获取到对应的物理地址,若未命中,需要到计算机内存中重新寻找包含该物理地址的页表,并重填入tlb中,该过程称为tlb重填。现有技术中,对tlb进行重填时,由于虚拟地址的存储范围与页表检索的范围存在不一致的情况,当虚拟地址的存储范围超出检索范围时,需要对超出范围的地址进行判断并跳转到缺页异常处理程序中去搜索对应的物理地址。4.但是,现有技术在搜索过程中耗时较长,降低了tlb的重填速度。技术实现要素:5.本技术提供一种地址变换高速缓存控制方法、装置、设备及介质,用以解决现有技术在搜索过程中耗时较长,降低tlb的重填速度的问题。6.第一方面,本技术提供一种地址变换高速缓存控制方法,包括:7.根据操作系统位数,确定第一存储位宽,所述第一存储位宽为目标数据的虚拟地址占据的存储位宽,所述虚拟地址用于作为cpu访问所述目标数据的地址标识;8.当所述第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和所述第一存储位宽,为所述页表索引分配存储位宽,以使所述页表检索的地址范围与所述虚拟地址的所述第一存储位宽一致;9.根据cpu访问的所述虚拟地址,利用所述页表索引遍历出与所述虚拟地址相映射的物理地址;10.将所述物理地址重填入地址变换高速缓存tlb中,所述物理地址用于cpu向存储有所述物理地址的高速缓存中获取所述目标数据。11.可选的,所述虚拟地址由页内偏移量及所述页表索引组成,所述页表索引包括页全局目录pgd;所述当所述第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和所述第一存储位宽,为所述页表索引分配存储位宽,包括:12.获取所述页表的页面大小;13.根据所述页面大小,确定存储所述页内偏移量所需的第二存储位宽;14.根据所述页全局目录参数及所述页面大小,确定所述页表索引对应的第三存储位宽以及所述页表索引中所述pgd所需的位宽。15.可选的,所述根据所述页全局目录参数及所述页面大小,确定所述页表索引对应的第三存储位宽以及所述页表索引中所述pgd所需的位宽,包括:16.根据所述页全局目录参数的设置,确定所述pgd分配的页表数量;17.根据所述页表数量及所述页面大小,确定存储所述pgd所需的第四存储位宽。18.可选的,所述根据cpu访问的所述虚拟地址,利用所述页表索引遍历出与所述虚拟地址相映射的物理地址,包括:19.根据所述虚拟地址,在所述pgd中匹配与所述虚拟地址对应的目标项,所述目标项用于获取所述目标数据的物理地址帧号;20.根据所述物理地址帧号及所述页内偏移量,确定与所述虚拟地址相映射的物理地址。21.可选的,所述根据操作系统位数,确定目标数据的虚拟地址占据的存储位宽之前,还包括:22.获取所述cpu访问所述目标数据的所述虚拟地址;23.根据所述虚拟地址,向所述tlb中搜索与所述虚拟地址相映射的所述物理地址。24.可选的,所述方法还包括:25.若未搜索出所述物理地址,对存储有所述物理地址的页表进行遍历,以将所述遍历出的所述物理地址重填入所述tlb中。26.第二方面,本技术提供一种地址变换高速缓存控制装置,包括:27.确定模块,用于根据操作系统位数,确定第一存储位宽,所述第一存储位宽为目标数据的虚拟地址占据的存储位宽,所述虚拟地址用于作为cpu访问所述目标数据的地址标识;28.分配模块,用于当所述第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和所述第一存储位宽,为所述页表索引分配存储位宽,以使所述页表检索的地址范围与所述虚拟地址的所述第一存储位宽一致;29.遍历模块,用于根据cpu访问的所述虚拟地址,利用所述页表索引遍历出与所述虚拟地址相映射的物理地址;30.处理模块,用于将所述物理地址重填入地址变换高速缓存tlb中,所述物理地址用于cpu向存储有所述物理地址的高速缓存中获取所述目标数据。31.第三方面,本技术提供一种电子设备,包括:至少一个处理器、存储器;32.所述存储器存储计算机执行指令;33.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述电子设备执行第一方面任一项所述的方法。34.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机执行指令,当所述计算机执行指令被处理器执行时,实现第一方面任一项所述的方法。35.第五方面,本技术提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法。36.本技术提供的一种地址变换高速缓存控制方法、装置、设备及介质,通过根据操作系统位数,确定目标数据的虚拟地址占据的第一存储位宽,其中,虚拟地址用于作为cpu访问目标数据的地址标识。当第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和第一存储位宽,为页表索引分配存储位宽,以使页表检索的地址范围与虚拟地址的第一存储位宽一致。根据cpu访问的虚拟地址,利用页表索引遍历出与虚拟地址相映射的物理地址,并将物理地址重填入地址变换高速缓存tlb中,其中,物理地址用于cpu向存储有物理地址的高速缓存中获取目标数据。本技术通过使页表检索的地址范围与虚拟地址一致,减少了重填流程中的一次判断和跳转,避免了当访问的虚拟地址超出页表检索范围时跳转到缺页异常处理程序中去搜索对应的物理地址的处理流程,提高了tlb的重填速度。附图说明37.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。38.图1为本技术实施例提供的一种地址变换高速缓存控制方法的流程示意图;39.图2为本技术实施例提供的又一种地址变换高速缓存控制方法的流程示意图;40.图3a为本技术实施例提供的一种为页表索引分配存储位宽的示意图;41.图3b为本技术实施例提供的又一种为页表索引分配存储位宽的示意图;42.图4为本技术实施例提供的一种遍历过程示意图;43.图5为本技术实施例提供的一种地址变换高速缓存控制装置的结构示意图;44.图6为本技术实施例提供的一种电子设备的结构示意图。45.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。具体实施方式46.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。47.需要说明的是,在本技术实施例的描述中,“第一”、“第二”、“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例也可以在本技术图示或描述的那些以外的顺序实施。术语“内”、“外”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示装置或构件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。48.为了便于理解本技术的方法,下面对涉及到本技术的相关技术进行简要说明。49.当计算机cpu想要访问某个目标数据时,首先获取到该数据的虚拟地址,然后根据虚拟地址去tlb中通过搜索页表,获取到与该虚拟地址对应的物理地址,最终通过该物理地址访问到目标数据。50.在计算机的存储管理中,操作系统将内存空间分为若干个固定大小的页,通过页表,建立虚拟地址与物理地址之间的映射关系。其中,页表又称为页面映射表,其存储在内存,用于作为虚拟地址搜索到物理地址的索引。51.tlb可以作为页表的cache(高速缓冲存储器),其存储了当前最可能被访问到的页表项,若恰好通过当前存储的页表项可以搜索到与目标数据虚拟地址相对应的物理地址时,则tlb命中。若没有,则需要到内存中重新逐级查询页表,并将查询到含有该物理地址的页表重填入tlb中,该过程称为tlb重填(tlbrefill)。52.现有技术中对tlb进行重填时,由于虚拟地址的存储范围与页表检索的范围存在不一致的情况,当虚拟地址的存储范围超出检索范围时,需要对超出范围的地址进行判断并跳转到缺页异常管理程序中去搜索对应的物理地址。但是,现有技术在搜索过程中耗时较长,降低了tlb的重填速度。53.示例性的,以计算机64位操作系统为例,假设虚拟地址占据的存储位宽大于页表检索的地址范围时,由于虚拟地址范围与页表检索范围不一致,在对tlb进行重填时,需要对超出范围的地址进行判断并跳转到缺页异常管理程序中去搜索对应的物理地址,从而导致搜索过程中耗时较长。54.因此,针对现有技术的上述技术问题,本技术提出一种地址变换高速缓存控制方法、装置、设备及介质。根据操作系统位数,确定目标数据的虚拟地址占据的第一存储位宽,当第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和第一存储位宽,为页表索引分配存储位宽,以使页表检索的地址范围与虚拟地址的第一存储位宽一致,需要注意的是,由于地址错误的异常优先级高于tlb重填异常的优先级,因此当超过页表检索的地址时会先发生地址错误的异常,从而保证进行tlb重填时,虚拟地址一定在页表检索的范围内,可以减少一次判断和跳转,不必跳转到缺页异常处理程序中去搜索相对应的物理地址,进而提高tlb的重填速度。55.本技术可以应用于32位的操作系统,也可以应用于64位的操作系统,通过设置虚拟地址范围与页表检索范围相同,使得在页表中检索物理地址时不需要因为超范围而进入到缺页异常管理程序中去搜索,从而提高搜索速度。可以理解的是,本技术所提出的地址变换高速缓存控制方法,包括但不限于以上的场景,所列举场景不因此作为对本技术的限制。56.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。57.图1为本技术实施例提供的一种地址变换高速缓存控制方法的流程示意图,该方法的执行主体可以为地址变换高速缓存控制装置或设备,也可以是多种智能终端,例如计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等。本实施例中的方法可以通过软件、硬件或者软硬件结合的方式来实现。如图1所示,该方法具体包括以下步骤:58.s101、根据操作系统位数,确定第一存储位宽,第一存储位宽为目标数据的虚拟地址占据的存储位宽,虚拟地址用于作为cpu访问目标数据的地址标识。59.本实施例中,执行主体以计算机为例,目前的操作系统中支持的位数包括32位或者64位,位数指的是cpu的数据宽度,即64位指的是cpu一次可以运行64bit的数据。60.在32位操作系统中,虚拟地址空间为2^32,一般使用32位来表示虚拟地址空间。而在64位操作系统中,一般使用48位来表示虚拟地址空间,因为64位操作系统并不需要2^64那么大的寻址空间,过大的空间只会导致资源的浪费。此外,也可以根据使用需求,为操作系统设置不同的存储位宽,因此,根据操作系统位数,可以确定目标数据虚拟地址占据的第一存储位宽即虚拟地址空间。61.为了便于理解本技术的方法,本实施例以64位操作系统为例来进行说明,确定的虚拟地址空间为2^48即48位,其中,虚拟地址用于作为cpu访问目标数据的地址标识。62.s102、当第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和第一存储位宽,为页表索引分配存储位宽,以使页表检索的地址范围与虚拟地址的第一存储位宽一致。63.计算机中的指令和数据,都需要先加载到内存中才能被cpu拿去执行。但是cpu并不能直接访问到物理内存。内存在计算机中被分为固定大小的页,通过虚拟地址到物理地址的地址转换,才能到达实际存放数据的高速缓存位置。想要把虚拟地址映射到物理地址,最直观的方法,就是创建一张映射表。这个映射表就叫做页表(pagetable)。64.当第一存储位宽大于页表检索的地址范围时,根据页表中页全局目录参数(pgd_order)的设置和第一存储位宽为页表索引分配存储位宽,以使页表检索的地址范围与虚拟地址一致。其中,页表索引包括页全局目录(pageglobaldirectory,pgd),还可以包括页上级目录(pageupperdirectory,pud)、页中间目录(pagemiddledirectory,pmd)及页表项(pagetableentry,pte)。页表索引中涵盖项依赖于页大小以及操作系统支持的位数。65.对于64为操作系统,页表大小为4kb的页表索引而言,其为4级页表索引,每个页表(page)都是4kb,页表里面存的是下一级page的基地址,每一级的页表分别为pgd-pud-pmd-pte。在此操作系统下,页表大小为16kb的页表索引而言,其则为3级索引,每个页表(page)都是16kb,页表里面存的是下一级page的基地址,每一级的页表分别为pgd-pmd-pte。由此可知,页表索引的级数依赖于页表的大小以及操作系统支持的位数。66.s103、根据cpu访问的虚拟地址,利用页表索引遍历出与虚拟地址相映射的物理地址。67.由于计算机操作系统中通常采用多级页表结构,因此上述页表索引其包含关系为pgd中的每一项都保存一个pud的基地址,pud中的每一项都保存一个pmd的基地址,pmd中的每一项都保存一个pte的基地址,pte中包含页表项,通过页表项搜索到与虚拟地址相映射的物理地址。68.在计算机中,每一个cpu都有一个页目录基址寄存器,最高级页表即pgd的基地址就存在这个寄存器中。cpu根据虚拟地址找到pgd,然后通过上述多级页表结构,逐级搜索,最终,能够遍历出物理地址。69.s104、将物理地址重填入地址变换高速缓存tlb中,物理地址用于cpu向存储有物理地址的高速缓存中获取目标数据。70.通过搜索页表找到与虚拟地址相映射的物理地址后,将该页表重新填入tlb中,cpu根据找到的物理地址向存储有物理地址的高速缓存,例如一级缓存l1、二级缓存l2或三级缓存l3中获取到要最终访问的目标数据。71.需要注意的是,步骤s101-s104为tlb发生重填时的处理方法,而tlb发生重填的触发条件可以通过获取cpu访问目标数据的虚拟地址,并根据虚拟地址,向tlb中搜索与虚拟地址相映射的物理地址,若未搜索出物理地址,对存储有物理地址的页表进行遍历,以将遍历出的物理地址重填入tlb中。72.在本技术的上述实施例中,通过根据操作系统位数,确定目标数据的虚拟地址占据的第一存储位宽,其中,虚拟地址用于作为cpu访问目标数据的地址标识。当第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和第一存储位宽,为页表索引分配存储位宽,以使页表检索的地址范围与虚拟地址的第一存储位宽一致。根据cpu访问的虚拟地址,利用页表索引遍历出与虚拟地址相映射的物理地址,并将物理地址重填入地址变换高速缓存tlb中,其中,物理地址用于cpu向存储有物理地址的高速缓存中获取目标数据。本技术通过使页表检索的地址范围与虚拟地址一致,提高了tlb的重填速度。73.进一步的,在上述实施例的基础之上,下面,通过图2详细的说明当第一存储位宽大于页表检索的地址范围时,根据页全局目录参数和第一存储位宽,为页表索引分配存储位宽。如图2所示,图2为本技术实施例提供的又一种地址变换高速缓存控制方法的流程示意图,该方法包括以下步骤:74.s201、获取页表的页面大小。75.页面大小涉及页表所占空间,操作系统支持的位数不同,其页面大小也存在差异。页面大小跟体系结构有关系,例如,支持16kb页表大小的架构在64位操作系统,虚拟地址空间为48位的情况下,本发明实施例的具体实现如下。76.s202、根据页面大小,确定存储页内偏移量所需的第二存储位宽。77.在计算机中,虚拟地址(virtualaddress,va)可表示为由页内偏移量及页表索引两部分组成。虚拟地址的存储位宽顺序[47:0]从左到右依次如表1所示,其中“0”表示最低位,“47”表示最高位,一共48位。[0078]表1[0079][0080]页面大小为16kb,16kb为2^14b,因此,需要为页内偏移量分配14个存储位宽,而在计算机的存储管理中,页内偏移量位于虚拟地址的低位部分,故,将虚拟地址存储位宽的最低位起向右分配14位存储位宽即va[13:0]。[0081]s203、根据页全局目录参数及页面大小,确定页表索引对应的第三存储位宽以及页表索引中pgd所需的位宽。[0082]其中,页全局目录参数的值为虚拟地址位宽与页表索引位宽的差值,在本实施例中,当页面大小为16kb时,页表结构通常为三级即页表索引包括pgd、pmd、pte。因此,本实施例中第三存储位宽包括pmd所需的位宽和pte所需的位宽。[0083]根据页面大小,确定存储pte所需的存储位宽,从虚拟地址剩余存储位宽的最低位起分配第二存储位宽。相应的,16kb为2^14b,而一个页表项为8字节(2^3b),2^14/2^3=2^11=2048,因此,pte中可以存储2048个页表项,需要为pte分配11个存储位宽,故,从虚拟地址剩余存储位宽(34位)的最低位起向右分配11位存储位宽即va[24:14]。[0084]根据页面大小,确定存储pmd所需的存储位宽,从虚拟地址剩余存储位宽的最低位起分配第三存储位宽。与上述确定pte位宽的方式相同,在此不再重复赘述,为pmd分配11个存储位宽,故,从虚拟地址剩余存储位宽(23位)的最低位起向右分配11位存储位宽即[35:25]分配给pmd。[0085]进一步的,根据页全局目录参数的设置及页面大小,确定页表索引中pgd所需的位宽。[0086]根据页全局目录参数的设置,确定pgd分配的页表数量,并根据页表数量及页面大小,确定存储pgd所需的第四存储位宽。[0087]一种可选的方式为,当页全局目录参数pgd_order设置为1时,2^1为2,因此,确定pgd分配的页表数量为2。2个页表其页面大小为2×16kb为2^15b,而一个页表项为8字节(2^3b),2^15/2^3=2^12=4096,因此,pgd中可以存储4096个页表项,需要为pgd分配12个存储位宽,故,将虚拟地址剩余存储位宽的最低位起向右分配12位存储位宽即va[47:36]。[0088]另一种可选的方式为,当页全局目录参数pgd_order设置为0时,2^0为1,因此,确定pgd分配的页表数量为1。1个页表其页面大小为16kb为2^14b,而一个页表项为8字节(2^3b),2^14/2^3=2^11=2048,因此,pgd中可以存储2048个页表项,需要为pgd分配11个存储位宽,故,将虚拟地址剩余存储位宽的最低位起向右分配11位存储位宽即va[46:36]。[0089]综上步骤s201-s203,可以得到如图3a、图3b两种在虚拟地址占据的存储位宽上为页表索引分配存储位宽方式,从而使得页表检索的地址范围与虚拟地址一致。在图3a中,页表检索的范围是va[47:0],虚拟地址的有效范围也是[47:0],在图3b中,页表检索的范围是va[46:0],虚拟地址的有效范围也是[46:0]。[0090]需要说明的是,为便于理解本技术,本实施例中的页大小16kb仅为示例性说明,本技术的方法还可以用于页大小为4kb或32kb等的情况,不因此作为对本技术的限制。在本技术的上述实施例中,通过获取页表的页面大小,根据页面大小,确定存储页内偏移量所需的第二存储位宽,并根据页全局目录参数及页面大小,确定页表索引对应的第三存储位宽以及页表索引中pgd所需的位宽,从而使得页表检索的地址范围与虚拟地址一致,提高了tlb的重填速度。[0091]进一步的,根据cpu访问的虚拟地址,利用页表索引遍历出与虚拟地址相映射的物理地址。如图4所示,图4为本技术实施例提供的一种遍历过程示意图。[0092]根据虚拟地址,在pgd中匹配与虚拟地址对应的目标项,目标项用于获取目标数据的物理地址帧号;[0093]根据物理地址帧号及页内偏移量,确定与虚拟地址相映射的物理地址。[0094]本实施例同样以64位操作系统,虚拟地址空间为48位,页大小为16kb为例进行说明。[0095]具体的,[0096]根据虚拟地址,在pgd中匹配与虚拟地址对应的pmd的基地址。[0097]根据pmd的基地址,向pte中匹配与基地址对应的目标项,目标项用于获取目标数据的物理地址帧号。[0098]根据物理地址帧号及页内偏移量,确定与虚拟地址相映射的物理地址。[0099]最终,将物理地址重填入地址变换高速缓存tlb中,物理地址用于cpu向存储有物理地址的高速缓存中获取目标数据。[0100]图5为本技术实施例提供的一种地址变换高速缓存控制装置的结构示意图,如图5所示,该装置包括:确定模块501、分配模块502、遍历模块503及处理模块504。[0101]确定模块501,用于根据操作系统位数,确定第一存储位宽,第一存储位宽为目标数据的虚拟地址占据的存储位宽,虚拟地址用于作为cpu访问目标数据的地址标识。architecture,简称为isa)总线、外部设备互连(peripheralcomponent,简称为pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。[0124]可选的,在具体实现上,如果通信接口603、存储器602和处理器601集成在一块芯片上实现,则通信接口603、存储器602和处理器601可以通过内部接口完成通信。[0125]本实施例提供的电子设备,用于执行前述实施例执行的方法,其实现原理与技术效果类似,对此不再赘述。[0126]本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。[0127]本技术还提供一种计算机程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得电子设备实施上述的各种实施方式提供的地址变换高速缓存控制方法。[0128]本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。[0129]应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献