页表缓存的访问方法、页表缓存、处理器芯片和存储单元与流程

文档序号:13876275阅读:374来源:国知局
本发明涉及信息
技术领域
:,并且更具体地,涉及一种页表缓存的访问方法、页表缓存、处理器芯片和存储单元。
背景技术
::在中央处理器(centralprocessingunit,cpu)执行程序时,程序中的地址均为虚拟地址。当操作系统将一个程序载入内存时,会为该程序分配可用的物理内存地址空间。此时,操作系统会根据实际的物理地址,将程序的虚拟地址映射到具体的物理地址。这种映射,以页面(page)为单位,一个页面通常为4kb。操作系统在进行内存管理时,会将物理地址空间划分成连续的页面。同样,程序自己的虚拟地址空间也会被划分成连续的页面。映射,是将一个虚拟页面映射到一个物理页面。以页面大小(也可以称为尺寸)为4kb为例,在这种情况下,12个比特用来表示在4kb页面内的偏移量。在映射过程中,地址的低12位比特保持不变,即虚拟地址的低12位比特和物理地址的低12位比特是相同的。也就是说,在虚拟地址到物理地址的映射过程中,偏移量是不会改变的,只需要将虚拟地址的高位比特替换成物理地址的高位比特即可。地址的高位部分,在虚拟地址中称之为虚拟页号(virtualpagenumber,vpn),在物理地址中称之为物理帧号(physicalframenumber,pfn),vpn标识虚拟地址对应的虚拟页面,pfn标识物理地址对应的物理页面。地址的低位部分,称之为页偏移(offset)部分。在映射过程中,地址的offset部分保持不变,即映射过程是根据虚拟页号找到物理帧号的过程。在地址映射时,cpu先访问页表缓存,或称为转址旁路缓存,英文名称为(translationlookasidebuffer,tlb),tlb中存储有一部分虚拟页号到物理帧号之间的映射关系,若发生tlb缺失(tlbmiss),则再访问内存中的页表,该页表中存储有完整的从虚拟地址到物理地址的映射关系。tlb的容量是非常有限的,要远远小于页表的大小,因此经常会发生tlbmiss,tlbmiss会增加程序运行时间。因此,提升tlb的有效容量,减少tlbmiss的几率,成为一个亟待解决的技术问题。技术实现要素:本发明实施例提供了一种页表缓存的访问方法、页表缓存、处理器芯片和存储单元,能够提升页表缓存的有效容量。第一方面,提供了一种页表缓存的访问方法,该页表缓存中存储有表项集合,该表项集合中的表项包括大虚拟页号字段,大物理帧号字段,有效指示字段和索引字段,其中,该大虚拟页号字段中的大虚拟页号标识大虚拟页面,该大虚拟页面包括多个虚拟页面,该大物理帧号字段中的大物理帧号标识大物理页面,该大物理页面包括多个物理页面,该有效指示字段用于指示该多个虚拟页面中的每个虚拟页面是否被该表项映射,该索引字段用于在该每个虚拟页面被该表项映射时指示该每个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置;该方法包括:接收处理器发送的第一请求,该第一请求用于请求第一虚拟地址对应的第一物理帧号;确定该第一虚拟地址对应的第一大虚拟页号,以及该第一虚拟地址对应的第一虚拟页面在该第一大虚拟页号标识的第一大虚拟页面中的第一位置;根据该第一大虚拟页号,确定该表项集合中存在与该第一大虚拟页号对应的第一表项,其中该第一表项的大虚拟页号字段中的大虚拟页号为该第一大虚拟页号,该第一表项的大物理帧号字段中的大物理帧号为第一大物理帧号;根据该第一表项中的有效指示字段中与该第一位置对应的比特的值,确定该第一虚拟页面被该第一表项映射;根据该第一表项中的索引字段中与该第一位置对应的元素的值,确定该第一虚拟页面对应的第一物理页面在该第一大物理帧号标识的第一大物理页面中的第二位置;根据该第一大物理帧号和该第二位置,确定该第一物理帧号;向该处理器发送该第一物理帧号。本发明实施例的技术方案,可以通过较少的表项记录多个映射关系,从而能够提升tlb的有效容量,并进一步达到减少tlbmiss几率的效果。在一些可能的实现方式中,该方法还包括:接收该处理器发送的第二请求,该第二请求用于请求第二虚拟地址对应的第二物理帧号;确定该第二虚拟地址对应的第二大虚拟页号,以及该第二虚拟地址对应的第二虚拟页面在该第二大虚拟页号标识的第二大虚拟页面中的第三位置;根据该第二大虚拟页号,确定该表项集合中存在与该第二大虚拟页号对应的第二表项,其中该第二表项的大虚拟页号字段中的大虚拟页号为该第二大虚拟页号,该第二表项的大物理帧号字段中的大物理帧号为第二大物理帧号;根据该第二表项中的有效指示字段中与该第三位置对应的比特的值,确定该第二虚拟页面未被该第二表项映射;向该处理器发送第一页表缓存缺失信息。在一些可能的实现方式中,该方法还包括:接收该处理器发送的该第二虚拟地址的映射关系;若根据该第二虚拟地址的映射关系,确定该第二虚拟页面对应的第二物理页面在该第二大物理帧号标识的第二大物理页面中,则更新该第二表项,以使该第二表项中的有效指示字段中与该第三位置对应的比特的值指示该第二虚拟页面被该第二表项映射,该第二表项中的索引字段中与该第三位置对应的元素的值指示该第二物理页面在该第二大物理页面中的位置;或者,若根据该第二虚拟地址的映射关系,确定该第二虚拟页面对应的第二物理页面不在该第二大物理帧号标识的第二大物理页面中,则在该表项集合中新建第三表项,其中,该第三表项的大虚拟页号字段中的大虚拟页号为该第二大虚拟页号,该第三表项的大物理帧号字段中的大物理帧号为标识该第二物理页面所在的大物理页面的大物理帧号,该第三表项中的有效指示字段中与该第三位置对应的比特的值指示该第二虚拟页面被该第三表项映射,该第三表项中的索引字段中与该第三位置对应的元素的值指示该第二物理页面在所在的大物理页面中的位置。在一些可能的实现方式中,该方法还包括:接收该处理器发送的第三请求,该第三请求用于请求第三虚拟地址对应的第三物理帧号;确定该第三虚拟地址对应的第三大虚拟页号,以及该第三虚拟地址对应的第三虚拟页面在该第三大虚拟页号标识的第三大虚拟页面中的第四位置;根据该第三大虚拟页号,确定该表项集合中不存在与该第三大虚拟页号对应的表项;向该处理器发送第二页表缓存缺失信息。在一些可能的实现方式中,该方法还包括:接收该处理器发送的该第三虚拟地址的映射关系;根据该第三虚拟地址的映射关系,在该表项集合中新建第四表项,其中,该第四表项的大虚拟页号字段中的大虚拟页号为该第三大虚拟页号,该第四表项的大物理帧号字段中的大物理帧号为标识该第三虚拟页面对应的第三物理页面所在的第三大物理页面的大物理帧号,该第三表项中的有效指示字段中与该第四位置对应的比特的值指示该第三虚拟页面被该第四表项映射,该第四表项中的索引字段中与该第四位置对应的元素的值指示该第三物理页面在该第三大物理页面中的位置。通过上述方式可以在页表缓存中添加新的映射关系。在一些可能的实现方式中,该大虚拟页面包括2n个虚拟页面,该大物理页面包括2n个物理页面,该有效指示字段包括2n个比特,该索引字段包括2n个元素,其中每个元素包括n个比特,n为正整数。在一些可能的实现方式中,该有效指示字段的2n个比特中的第i个比特用于指示该大虚拟页面的2n个虚拟页面中的第i个虚拟页面是否被该表项映射,该索引字段的2n个元素中的第i个元素用于在该第i个虚拟页面被该表项映射时指示该第i个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置,i为小于或等于2n的正整数。在一些可能的实现方式中,n为2,vpn对应的pfn可以根据以下公式确定,large_vpn=vpn/4,pageidx=vpn%4,若vldvec[pageidx]=1,则pfn=large_pfn*4+idxvec[pageidx]。第二方面,提供了一种表项,该表项包括大虚拟页号字段,大物理帧号字段,有效指示字段和索引字段,其中,该大虚拟页号字段中的大虚拟页号标识大虚拟页面,该大虚拟页面包括多个虚拟页面,该大物理帧号字段中的大物理帧号标识大物理页面,该大物理页面包括多个物理页面,该有效指示字段用于指示该多个虚拟页面中的每个虚拟页面是否被该表项映射,该索引字段用于在该每个虚拟页面被该表项映射时指示该每个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置。在一些可能的实现方式中,该大虚拟页面包括2n个虚拟页面,该大物理页面包括2n个物理页面,该有效指示字段包括2n个比特,该索引字段包括2n个元素,其中每个元素包括n个比特,n为正整数。在一些可能的实现方式中,该有效指示字段的2n个比特中的第i个比特用于指示该大虚拟页面的2n个虚拟页面中的第i个虚拟页面是否被该表项映射,该索引字段的2n个元素中的第i个元素用于在该第i个虚拟页面被该表项映射时指示该第i个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置,i为小于或等于2n的正整数。第三方面,提供了一种页表缓存,包括:存储单元,用于存储表项集合,该表项集合中的表项为上述第二方面或第二方面的任一种可能的实现方式中的表项;管理单元,用于执行上述第一方面或第一方面的任一种可能的实现方式中的方法。第四方面,提供了一种处理器芯片,包括:处理器和上述第三方面或第三方面的任一种可能的实现方式中的页表缓存。第五方面,提供了一种存储单元,用于存储上述第二方面或第二方面的任一种可能的实现方式中的表项。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是虚拟地址到物理地址的映射的示意图。图2是本发明实施例技术方案的应用场景的示意图。图3是tlb中表项的结构的示意图。图4是地址转换过程的示意图。图5是本发明一个实施例的表项的示意图。图6是本发明另一个实施例的表项的示意图。图7是本发明一个实施例的页表缓存的访问方法的示意性流程图。图8是本发明另一个实施例的页表缓存的访问方法的示意性流程图。图9是本发明实施例的更新表项的示意图。图10是本发明一个实施例的新建表项的示意图。图11是本发明又一个实施例的页表缓存的访问方法的示意性流程图。图12是本发明又一个实施例的表项的示意图。图13是本发明另一个实施例的新建表项的示意图。图14是本发明实施例的页表缓存的示意性框图。图15是本发明实施例的处理器芯片的示意性框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。在本发明的各种实施例中,术语“虚拟地址”可以为用户程序中的地址。术语“物理地址”可以为虚拟地址在物理内存地址空间中对应的实际地址。采用虚拟地址技术后,程序员在编写程序的时候,所看到的都是虚拟地址。此时,任何一个程序的代码段起始地址和数据段起始地址都是一个固定的数值。即,一个程序的代码段起始地址和另一个程序的代码段起始地址可以是相同的;同理,一个程序的数据段起始地址和另一个程序的数据段起始地址也可以是相同的。因此,程序员无需自己去约定或决定它们的取值。而在程序真正开始执行的时候,操作系统会寻找当前可用的物理地址空间,并将程序所用的虚拟地址空间映射到这些物理地址空间。操作系统会根据实际的物理地址,将程序的虚地址映射到具体的物理地址。多个程序同时执行时,它们实际上处于不同的物理地址空间,从而保证了程序的正常执行。操作系统在进行内存管理时,会将物理地址空间划分成连续的页面。同样,程序自己的虚拟地址空间也会被划分成连续的页面。在本发明的各种实施例中,术语“vpn”标识虚拟地址对应的虚拟页面,术语“pfn”标识物理地址对应的物理页面。术语“页偏移(offset)”为虚拟地址在页面内的偏移量。在映射过程中,地址的offset部分保持不变,即映射过程是根据vpn找到pfn的过程。假设页面大小为4kb,地址为64位,则虚拟地址到物理地址的映射可以如图1所示,其中,地址的低位部分,即[11:0]字段,为offset;地址的高位部分,即[63:12]字段,在虚拟地址中为vpn,在物理地址中为pfn。在本发明的各种实施例中,术语“大虚拟页面”也可以称为“超级虚拟页面”,其包括多个虚拟页面;相应地,术语“大物理页面”也可以称为“超级物理页面”,其包括多个物理页面。一个大虚拟页面包括的虚拟页面的数量与一个大物理页面包括的物理页面的数量相同。可选地,该数量可以为2n,n为正整数。一个大虚拟页面包括的多个虚拟页面是连续的,即这些虚拟页面的虚拟地址是连续的。一个大物理页面包括的多个物理页面可以是连续的,也可以是不连续的。在本发明的各种实施例中,术语“大虚拟页号(large_vpn)”标识大虚拟页面;术语“大物理帧号(large_pfn)”标识大物理页面。由于大页面包括多个页面,因此,大虚拟页号和大物理帧号可以取vpn和pfn的高位部分,即大虚拟页号和大物理帧号的位数要比vpn和pfn的位数少。图2是本发明实施例技术方案的应用场景的示意图。如图2所示,在处理器210,例如cpu内,通过tlb220进行地址映射。tlb220采用缓存的形式存储表项,该表项可以称为tlb表项。该表项记录虚拟页号到物理帧号之间的映射关系。tlb220的容量是非常有限的,因此,tlb220可存储的表项的数量较少。在程序运行过程中,操作系统会为该程序建立完整的从虚拟地址到物理地址的映射关系,这个映射关系保存到内存中的页表230中,即页表230中包括了该程序对应的所有表项。页表230中的每个表项可以包括相应的vpn信息和pfn信息。在地址映射时,处理器210先访问tlb220,若tlb220中存储了虚拟地址对应的表项,则能够得到虚拟地址对应的物理地址,即发生tlb命中(tlbhit);若tlb220中没有该虚拟地址对应的表项,则发生tlb缺失(tlbmiss),处理器210再访问内存中的页表230。图3示出了目前tlb中表项的结构。如图3所示,每个表项可以分为vpn部分和pfn部分。在需要进行地址映射时,tlb使用从虚拟地址中截取出的vpn和tlb内的各个表项进行对比。如果和其中某一个表项内的vpn相同,则输出该表项内的pfn字段,这被认为是发生了tlbhit。如果没有一个表项的vpn和该待转换的vpn(即从该虚拟地址中截取出的vpn)相同,则被认为是发生了tlbmiss。当tlb发生了miss的时候,处理器需要从页表内搜索和该vpn对应的pfn,然后将这一vpn和pfn信息(即映射关系)存储到tlb内(通常会覆盖某个现有的表项),该过程被称之为pagetablewalk。这样,下次遇到该vpn时,就不会发生tlbmiss了。地址转换过程可如图4所示。首先,从虚拟地址中截取出高位的vpn字段;然后,将该vpn字段输入到tlb内,tlb会使用该vpn字段在其内部进行匹配操作,当tlbhit的时候,tlb会输出一个有效的pfn字段;将该pfn字段与原先虚拟地址中的低位字段拼接起来,即可以生成相应的物理地址。为了提升tlb的有效容量,减少tlbmiss的几率,本发明实施例提供了一种新的tlb表项结构。在本发明实施例的描述中,术语“tlb表项”与“表项”通用。图5示出了根据本发明实施例的表项的示意图。如图5所示,表项500包括大虚拟页号字段510,大物理帧号字段520,有效指示字段530和索引字段540。该大虚拟页号字段510中的大虚拟页号标识大虚拟页面,该大虚拟页面包括多个虚拟页面。例如,图5中以该大虚拟页面包括4个虚拟页面示例。该大物理帧号字段520中的大物理帧号标识大物理页面,该大物理页面包括多个物理页面。大物理页面与大虚拟页面对应,例如,大虚拟页面包括4个虚拟页面时,大物理页面也包括4个物理页面。该有效指示字段530用于指示该多个虚拟页面中的每个虚拟页面是否被该表项500映射。例如,在图5中,该有效指示字段530的4个比特分别指示4个虚拟页面是否被该表项500映射。可选地,比特值为1时,指示被映射,比特值为0时,指示未被映射,但本发明对此并不限定。该索引字段540用于在该每个虚拟页面被该表项500映射时,指示该每个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置。例如,在图5中,该索引字段540的4个元素(每个元素包括2个比特)可用于分别指示4个虚拟页面对应的物理页面在该大物理帧号字段520中的大物理帧号标识的大物理页面中的位置。例如,该有效指示字段530中的第一个比特值为1,指示该大虚拟页号字段510中的大虚拟页号(large_vpn0)标识大虚拟页面中的第一个虚拟页面被该表项500映射;该索引字段540中的第一个元素的值为3,指示第一个虚拟页面对应的物理页面在该大物理帧号字段520中的大物理帧号(large_pfn0)标识的大物理页面中的位置为第三个物理页面。这样,可以得到第一个虚拟页面对应的物理帧号为large_pfn0*4+3。采用本发明实施例的表项,可以将多个页面的映射包括在一个表项内,而且,即使该映射之间有交织,例如图5中vpn0不是映射到pfn0而是pfn3,仍然可以被一个表项所包括。因此,本发明实施例的技术方案,能够提升tlb的有效容量;由于tlb的有效容量提升,可进一步减少tlbmiss的几率。应理解,图5中以大虚拟页面包括4个虚拟页面示例,但本发明对此并不限定。可选地,该大虚拟页面可以包括2n个虚拟页面,该大物理页面可以包括2n个物理页面,该有效指示字段可以包括2n个比特,该索引字段可以包括2n个元素,其中每个元素可以包括n个比特,n为正整数。可选地,该有效指示字段的2n个比特中的第i个比特用于指示该大虚拟页面的2n个虚拟页面中的第i个虚拟页面是否被该表项映射,该索引字段的2n个元素中的第i个元素用于在该第i个虚拟页面被该表项映射时指示该第i个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置,i为小于或等于2n的正整数。例如,图6为大虚拟页面包括8个虚拟页面时,本发明实施例的表项的示意图。在这种情况下,1个表项最多可以映射8个页面。为了描述方便,以下以大虚拟页面包括4个虚拟页面,页面大小为4kb为例进行描述。当页面大小为4kb时,4个页面(vpn0/vpn1/vpn2/vpn3)位于1个16kb的大页面内。即,vpn0处于16kb地址对齐的位置。类似地,若页面大小为8kb时,vpn0位于32kb地址对齐的位置。当页面为其它大小时,以此类推。仍以图5为例,大虚拟页面包括4个虚拟页面时,在每个表项内,除了大虚拟页号字段510(large_vpn0)和大物理帧号字段520(large_pfn0)外,还有4比特位宽的有效指示字段530(vldvec)),和8比特位宽的索引字段540(idxvec),其中idxvec字段包括4个元素,每个元素为2比特位宽。vpn0~vpn3是地址连续的虚拟页面,所以它们仅最低2个比特互不相同,分别为2’b00、2’b01、2’b10和2’b11。除了最低2个比特之外,vpn0~vpn3的高位是相同的,即同为large_vpn0。于是,vpn0~vpn3可以表示成如下方式。vpn0为{large_vpn0,2’b00},即large_vpn0×4+0;vpn1为{large_vpn0,2’b01},即large_vpn0×4+1;vpn2为{large_vpn0,2’b10},即large_vpn0×4+2;vpn3为{large_vpn0,2’b11},即large_vpn0×4+3。vldvec字段中,每个比特表示相应的页面(vpn0~vpn3)的映射关系是否有效,即是否被该tlb表项映射,如下所示。vldvec[0]表示vpn0是否被该tlb表项映射,例如,取值为1,则表示idxvec[1:0]可用,取值为0,则表示idxvec[1:0]不可用,如下类似;vldvec[1]表示vpn1是否被该tlb表项映射,即idxvec[3:2]是否可用;vldvec[2]表示vpn2是否被该tlb表项映射,即idxvec[5:4]是否可用;vldvec[3]表示vpn3是否被该tlb表项映射,即idxvec[7:6]是否可用。idxvec字段中,共有4个元素,其中每个元素为2比特位宽,即两个比特标识一个元素的状态(值),表示与相应的vpn所对应的是哪一个pfn,也即是所对应物理页面在大物理页面中的位置,如下所示。idxvec[1:0]表示vpn0映射到了pfn0~pfn3之间的哪一个pfn,可选地,当vldvec[0]为1时该字段可用,当vldvec[0]为0时该字段不可用,即vpn0没有被该tlb表项所映射,下同;idxvec[3:2]表示vpn1映射到了pfn0~pfn3之间的哪一个pfn,当vldvec[1]为1时该字段可用;idxvec[5:4]表示vpn2映射到了pfn0~pfn3之间的哪一个pfn,当vldvec[2]为1时该字段可用;idxvec[7:6]表示vpn3映射到了pfn0~pfn3之间的哪一个pfn,当vldvec[3]为1时该字段可用。例如,在图5中,在vldvec[3:0]中的比特0,1,2取值均为1,比特3取值为0,这就表示vpn0,vpn1以及vpn2在该tlb表项中能够找到映射,vpn3在该tlb中无法找到映射。而从idxvec[7:0]可以看出,元素[1:0],[3:2],[5:4]分别取值为3,1,2,则表示vpn0对应的是pfn3,vpn1对应的是pfn1,vpn2对应的是pfn2。图7示出了根据本发明实施例的页表缓存的访问方法的示意性流程图。该方法可以由页表缓存执行。该页表缓存中存储有表项集合,该表项集合中的表项为前述本发明实施例的表项。该表项的具体描述可以参考前述各实施例,为了简洁,在此不再赘述。710,接收处理器发送的第一请求,该第一请求用于请求第一虚拟地址对应的第一物理帧号。由于在映射过程中,地址的offset部分保持不变,因此,该第一请求可以携带第一虚拟地址对应的第一虚拟页号,即,以vpn请求pfn。应理解,虚拟地址与虚拟页号的关系是确定的,即,vpn=viraddr/pagesize(1)其中,vpn表示虚拟页号,viraddr表示虚拟地址,pagesize表示页面大小,例如,在页面大小pagesize为4kb,地址为n位时,offset为viraddr[11:0],vpn为viraddr[n:12]。因此,该第一请求也可以携带第一虚拟地址,本发明对此并不限定。720,确定该第一虚拟地址对应的第一大虚拟页号,以及该第一虚拟地址对应的第一虚拟页面在该第一大虚拟页号标识的第一大虚拟页面中的第一位置。例如,假设大虚拟页面包括4个虚拟页面,则大虚拟页号可以为,large_vpn=vpn/4(2)其中,large_vpn表示大虚拟页号;该第一位置可以根据下式确定,pageidx=vpn%4(3)其中,%表示取余,pageidx的四个可能的取值0,1,2,3分别对应虚拟页面0,1,2,3,即分别表示位置0,1,2,3。在vpn为viraddr[n:12]时,large_vpn为viraddr[n:14],pageidx为viraddr[13:12]。这样可得到第一大虚拟页号以及第一虚拟页面是第一大虚拟页面内的第几个虚拟页面。结合图5,假设第一虚拟页面的第一虚拟页号为vpn0,则可以得到第一大虚拟页号为large_vpn0,pageidx为0。730,根据该第一大虚拟页号,确定表项集合中存在与该第一大虚拟页号对应的第一表项,其中该第一表项的大虚拟页号字段中的大虚拟页号为该第一大虚拟页号,该第一表项的大物理帧号字段中的大物理帧号为第一大物理帧号。具体而言,页表缓存根据该第一大虚拟页号,查找表项集合中的表项,将该第一大虚拟页号与每个表项的大虚拟页号字段中的大虚拟页号进行匹配,通过匹配可以得到,大虚拟页号字段中的大虚拟页号为该第一大虚拟页号的第一表项。结合图5,根据第一大虚拟页号large_vpn0,可以得到第一表项为如图5中所示的表项,该表项的大虚拟页号字段中的大虚拟页号为large_vpn0,另外,该表项的大物理帧号字段中的大物理帧号为large_pfn0。740,根据该第一表项中的有效指示字段中与该第一位置对应的比特的值,确定该第一虚拟页面被该第一表项映射。结合图5,该表项中的有效指示字段中与该第一位置对应的比特为vldvec[pageidx],vpn0对应的pageidx为0,即第一位置为位置0,而有效指示字段vldvec字段中位置0的比特vldvec[0]的值为1,从而可确定该第一虚拟页面被该表项映射。750,根据该第一表项中的索引字段中与该第一位置对应的元素的值,确定该第一虚拟页面对应的第一物理页面在该第一大物理帧号标识的第一大物理页面中的第二位置。结合图5,该第一表项中的索引字段中与该第一位置对应的元素为idxvec[pageidx],在pageidx为0,即第一位置为位置0时,idxvec[0]的值为3。从而可得到相应的第一物理页面是large_pfn0标识的第一大物理页面内的物理页面3。760,根据该第一大物理帧号和该第二位置,确定该第一物理帧号。在确定了第一物理页面是该第一大物理帧号标识的第一大物理页面中的第几个物理页面后,可以确定第一物理帧号。结合图5,第一物理页面是large_pfn0标识的第一大物理页面内的物理页面3,即第二位置为位置3,表示映射到pfn3,即第一物理帧号为pfn3。具体地,物理帧号可根据下式确定,pfn=large_pfn*4+idxvec[pageidx](4)可以看到,与viraddr所对应的物理帧号pfn可以分为两部分,一部分是基地址,它的值为large_pfn*4;另一部分是在大物理页面内的偏移量,即偏移到4个物理页面中的哪一个物理页面,即idxvec[pageidx]。由式(4)可以得到第一物理帧号为large_pfn0*4+3,即pfn3。770,向该处理器发送该第一物理帧号。页表缓存将得到的第一虚拟地址对应的第一物理帧号发送给处理器。由第一物理帧号和第一虚拟地址的offset部分可以进一步得到第一虚拟地址对应的物理地址。以上描述了页表缓存中已有虚拟地址的映射关系的情况,下面对页表缓存中没有虚拟地址的映射关系的情况进行描述。图8示出了根据本发明另一实施例的页表缓存的访问方法的示意性流程图。该方法可以由页表缓存执行。810,接收处理器发送的第二请求,该第二请求用于请求第二虚拟地址对应的第二物理帧号。820,确定该第二虚拟地址对应的第二大虚拟页号,以及该第二虚拟地址对应的第二虚拟页面在该第二大虚拟页号标识的第二大虚拟页面中的第三位置。结合图5,假设第二虚拟页面的第二虚拟页号为vpn3,则可以得到第二大虚拟页号为large_vpn0,第三位置pageidx为3。830,根据该第二大虚拟页号,确定该表项集合中存在与该第二大虚拟页号对应的第二表项,其中该第二表项的大虚拟页号字段中的大虚拟页号为该第二大虚拟页号,该第二表项的大物理帧号字段中的大物理帧号为第二大物理帧号。结合图5,根据第二大虚拟页号large_vpn0,可以得到第二表项为如图5中所示的表项,该表项的大虚拟页号字段中的大虚拟页号为large_vpn0,另外,该表项的大物理帧号字段中的大物理帧号为large_pfn0。840,根据该第二表项中的有效指示字段中与该第三位置对应的比特的值,确定该第二虚拟页面未被该第二表项映射。结合图5,该表项中的有效指示字段中与该第三位置对应的比特为vldvec[pageidx],vpn3对应的pageidx为3,即第三位置为位置3,而有效指示字段vldvec字段中位置3的比特vldvec[3]的值为0,从而可确定该第二虚拟页面未被该表项映射,即为tlbmiss。应理解,若第二表项有多个,则步骤840针对所有第二表项。也就是说,若在页表缓存的表项集合中匹配到多个大虚拟页号为large_vpn0的表项,则在前一个表项中未命中映射关系时,继续针对下一个表项查找映射关系;若在该多个表项中都未命中映射关系,则为tlbmiss;只要在一个表项中命中映射关系,则为tlbhit,不再继续查找。850,向该处理器发送第一页表缓存缺失信息。由于未命中映射关系,页表缓存向处理器发送缺失信息。处理器再从页表中获取该第二虚拟地址的映射关系。860,接收该处理器发送的该第二虚拟地址的映射关系。处理器从页表中获取该第二虚拟地址的映射关系后,还可将该第二虚拟地址的映射关系发送给页表缓存,以便于页表缓存添加该映射关系。870,若根据该第二虚拟地址的映射关系,确定该第二虚拟页面对应的第二物理页面在该第二大物理帧号标识的第二大物理页面中,则更新该第二表项,以使该第二表项中的有效指示字段中与该第三位置对应的比特的值指示该第二虚拟页面被该第二表项映射,该第二表项中的索引字段中与该第三位置对应的元素的值指示该第二物理页面在该第二大物理页面中的位置。具体而言,若根据该映射关系,确定第二虚拟页面被映射到了第二表项中的第二大物理帧号标识的第二大物理页面中,则在该第二表项中添加该映射关系。即,将该第二表项中的有效指示字段中与该第三位置对应的比特的值更新为指示该第二虚拟页面被该第二表项映射,将该第二表项中的索引字段中与该第三位置对应的元素的值更新为指示该第二物理页面在该第二大物理页面中的位置。例如,如图9所示,若vpn3被映射到pfn0,对应的物理页面在large_pfn0标识的第一大物理页面中,且位置为0,因此将有效指示字段中的vldvec[3]的值更新为1,并将索引字段中的idxvec[3]的值更新为0。或者,880,若根据该第二虚拟地址的映射关系,确定该第二虚拟页面对应的第二物理页面不在该第二大物理帧号标识的第二大物理页面中,则在该表项集合中新建第三表项,其中,该第三表项的大虚拟页号字段中的大虚拟页号为该第二大虚拟页号,该第三表项的大物理帧号字段中的大物理帧号为标识该第二物理页面所在的大物理页面的大物理帧号,该第三表项中的有效指示字段中与该第三位置对应的比特的值指示该第二虚拟页面被该第三表项映射,该第三表项中的索引字段中与该第三位置对应的元素的值指示该第二物理页面在所在的大物理页面中的位置。具体而言,若根据该映射关系,确定第二虚拟页面被映射到了新的大物理页面中的第二物理页面,则新建第三表项,并在该第三表项中添加该映射关系。即,该第三表项中的大虚拟页号为该第二大虚拟页号,该第三表项中的大物理帧号为标识该新的大物理页面的大物理帧号,该第三表项中的有效指示字段中与该第三位置对应的比特的值指示该第二虚拟页面被该第三表项映射,该第三表项中的索引字段中与该第三位置对应的元素的值指示该第二物理页面在该新的大物理页面中的位置。例如,如图10所示,若vpn3被映射到pfn6,对应的物理页面在large_pfn1标识的新的大物理页面中,且位置为2,因此新建表项,该新建表项的大虚拟页号为large_vpn0,大物理帧号为large_pfn1,有效指示字段中的vldvec[3]的值为1,索引字段中的idxvec[3]的值为2。图11示出了根据本发明又一实施例的页表缓存的访问方法的示意性流程图。该方法可以由页表缓存执行。1110,接收该处理器发送的第三请求,该第三请求用于请求第三虚拟地址对应的第三物理帧号。1120,确定该第三虚拟地址对应的第三大虚拟页号,以及该第三虚拟地址对应的第三虚拟页面在该第三大虚拟页号标识的第三大虚拟页面中的第四位置。结合图12,假设第三虚拟页面的第三虚拟页号为vpn4,可以得到第三大虚拟页号为large_vpn1,第四位置pageidx为0。1130,根据该第三大虚拟页号,确定该表项集合中不存在与该第三大虚拟页号对应的表项。具体而言,页表缓存根据该第三大虚拟页号,查找表项集合中的表项,未找到大虚拟页号为该第三大虚拟页号的表项,即页表缓存中没有与该第三大虚拟页号匹配的表项,因此发生tlbmiss。例如,结合图12,页表缓存中没有大虚拟页号为large_vpn1的表项,因此发生tlbmiss。1140,向该处理器发送第二页表缓存缺失信息。由于未命中映射关系,页表缓存向处理器发送缺失信息。处理器再从页表中获取该第三虚拟地址的映射关系。1150,接收该处理器发送的该第三虚拟地址的映射关系。处理器从页表中获取该第三虚拟地址的映射关系后,还可将该第三虚拟地址的映射关系发送给页表缓存,以便于页表缓存添加该映射关系。1160,根据该第三虚拟地址的映射关系,在该表项集合中新建第四表项,其中,该第四表项的大虚拟页号字段中的大虚拟页号为该第三大虚拟页号,该第四表项的大物理帧号字段中的大物理帧号为标识该第三虚拟页面对应的第三物理页面所在的第三大物理页面的大物理帧号,该第三表项中的有效指示字段中与该第四位置对应的比特的值指示该第三虚拟页面被该第四表项映射,该第四表项中的索引字段中与该第四位置对应的元素的值指示该第三物理页面在该第三大物理页面中的位置。具体而言,页表缓存根据该映射关系,新建第四表项,在该第四表项中添加该映射关系。即,该第四表项中的大虚拟页号为该第三大虚拟页号,该第四表项中的大物理帧号为标识该第三大物理页面的大物理帧号,该第四表项中的有效指示字段中与该第四位置对应的比特的值指示该第三虚拟页面被该第四表项映射,该第四表项中的索引字段中与该第四位置对应的元素的值指示该第三物理页面在该第三大物理页面中的位置。例如,如图13所示,若vpn4被映射到pfn7,对应的物理页面在large_pfn1标识的大物理页面中,且位置为3,因此新建表项,该新建表项的大虚拟页号为large_vpn1,大物理帧号为large_pfn1,有效指示字段中的vldvec[0]的值为1,索引字段中的idxvec[0]的值为3。本发明实施例的技术方案,可以通过较少的表项记录多个映射关系,从而能够提升tlb的有效容量,并进一步达到减少tlbmiss几率的效果。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。图14示出了根据本发明实施例的页表缓存1400的示意性框图。如图10所示,该页表缓存1400包括存储单元1410和管理单元1420。存储单元1410用于存储表项集合,该表项集合中的表项包括大虚拟页号字段,大物理帧号字段,有效指示字段和索引字段,其中,该大虚拟页号字段中的大虚拟页号标识大虚拟页面,该大虚拟页面包括多个虚拟页面,该大物理帧号字段中的大物理帧号标识大物理页面,该大物理页面包括多个物理页面,该有效指示字段用于指示该多个虚拟页面中的每个虚拟页面是否被该表项映射,该索引字段用于在该每个虚拟页面被该表项映射时指示该每个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置。管理单元1420用于:接收处理器发送的第一请求,该第一请求用于请求第一虚拟地址对应的第一物理帧号;确定该第一虚拟地址对应的第一大虚拟页号,以及该第一虚拟地址对应的第一虚拟页面在该第一大虚拟页号标识的第一大虚拟页面中的第一位置;根据该第一大虚拟页号,确定该表项集合中存在与该第一大虚拟页号对应的第一表项,其中该第一表项的大虚拟页号字段中的大虚拟页号为该第一大虚拟页号,该第一表项的大物理帧号字段中的大物理帧号为第一大物理帧号;根据该第一表项中的有效指示字段中与该第一位置对应的比特的值,确定该第一虚拟页面被该第一表项映射;根据该第一表项中的索引字段中与该第一位置对应的元素的值,确定该第一虚拟页面对应的第一物理页面在该第一大物理帧号标识的第一大物理页面中的第二位置;根据该第一大物理帧号和该第二位置,确定该第一物理帧号;向该处理器发送该第一物理帧号。本发明实施例的页表缓存,可以将多个页面的映射包括在一个表项内,而且,即使该映射之间有交织,仍然可以被一个表项所包括,因此,能够提升页表缓存的有效容量,并进一步减少tlbmiss的几率。在本发明实施例中,可选地,该管理单元1420还用于:接收该处理器发送的第二请求,该第二请求用于请求第二虚拟地址对应的第二物理帧号;确定该第二虚拟地址对应的第二大虚拟页号,以及该第二虚拟地址对应的第二虚拟页面在该第二大虚拟页号标识的第二大虚拟页面中的第三位置;根据该第二大虚拟页号,确定该表项集合中存在与该第二大虚拟页号对应的第二表项,其中该第二表项的大虚拟页号字段中的大虚拟页号为该第二大虚拟页号,该第二表项的大物理帧号字段中的大物理帧号为第二大物理帧号;根据该第二表项中的有效指示字段中与该第三位置对应的比特的值,确定该第二虚拟页面未被该第二表项映射;向该处理器发送第一页表缓存缺失信息。在本发明实施例中,可选地,该管理单元1420还用于:接收该处理器发送的该第二虚拟地址的映射关系;若根据该第二虚拟地址的映射关系,确定该第二虚拟页面对应的第二物理页面在该第二大物理帧号标识的第二大物理页面中,则更新该第二表项,以使该第二表项中的有效指示字段中与该第三位置对应的比特的值指示该第二虚拟页面被该第二表项映射,该第二表项中的索引字段中与该第三位置对应的元素的值指示该第二物理页面在该第二大物理页面中的位置;或者,若根据该第二虚拟地址的映射关系,确定该第二虚拟页面对应的第二物理页面不在该第二大物理帧号标识的第二大物理页面中,则在该表项集合中新建第三表项,其中,该第三表项的大虚拟页号字段中的大虚拟页号为该第二大虚拟页号,该第三表项的大物理帧号字段中的大物理帧号为标识该第二物理页面所在的大物理页面的大物理帧号,该第三表项中的有效指示字段中与该第三位置对应的比特的值指示该第二虚拟页面被该第三表项映射,该第三表项中的索引字段中与该第三位置对应的元素的值指示该第二物理页面在所在的大物理页面中的位置。在本发明实施例中,可选地,该管理单元1420还用于:接收该处理器发送的第三请求,该第三请求用于请求第三虚拟地址对应的第三物理帧号;根据该第三虚拟地址确定该第三虚拟地址对应的第三大虚拟页号,以及该第三虚拟地址对应的第三虚拟页面在该第三大虚拟页号标识的第三大虚拟页面中的第四位置;根据该第三大虚拟页号,确定该表项集合中不存在与该第三大虚拟页号对应的表项;向该处理器发送第二页表缓存缺失信息。在本发明实施例中,可选地,该管理单元1420还用于:接收该处理器发送的该第三虚拟地址的映射关系;根据该第三虚拟地址的映射关系,在该表项集合中新建第四表项,其中,该第四表项的大虚拟页号字段中的大虚拟页号为该第三大虚拟页号,该第四表项的大物理帧号字段中的大物理帧号为标识该第三虚拟页面对应的第三物理页面所在的第三大物理页面的大物理帧号,该第三表项中的有效指示字段中与该第四位置对应的比特的值指示该第三虚拟页面被该第四表项映射,该第四表项中的索引字段中与该第四位置对应的元素的值指示该第三物理页面在该第三大物理页面中的位置。在本发明实施例中,可选地,该大虚拟页面包括2n个虚拟页面,该大物理页面包括2n个物理页面,该有效指示字段包括2n个比特,该索引字段包括2n个元素,其中每个元素包括n个比特,n为正整数。在本发明实施例中,可选地,该有效指示字段的2n个比特中的第i个比特用于指示该大虚拟页面的2n个虚拟页面中的第i个虚拟页面是否被该表项映射,该索引字段的2n个元素中的第i个元素用于在该第i个虚拟页面被该表项映射时指示该第i个虚拟页面对应的物理页面在该大物理帧号标识的大物理页面中的位置,i为小于或等于2n的正整数。本发明实施例的页表缓存1400中的存储单元1410存储的表项可以为前述本发明实施例中的表项,管理单元1420可以执行前述方法实施例中的各个流程,相应的具体描述可参考前述各实施例,为了简洁,在此不再赘述。本发明实施例还提供了一种处理器芯片。如图15所示,处理器芯片1500可以包括:处理器1510和前述本发明实施例中的页表缓存1400。应理解,本发明实施例对处理器1510和页表缓存1400的位置关系不作限定。页表缓存1400既可以设置于处理器1510内,也可以设置于处理器1510外。换句话说,图15仅仅是示例,不应理解为对本发明的限制。应理解,本发明实施例中的具体的例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1