页表预取方法及装置与流程

文档序号:20874971发布日期:2020-05-26 16:22阅读:391来源:国知局
本发明涉及处理器
技术领域
:,尤其涉及一种页表预取方法及装置。
背景技术
::页表主要有两方面用途:第一是能够提供虚拟地址到物理地址的映射关系,这样可以让操作系统灵活使用虚拟地址,而不用过多考虑底层的物理分配。第二是能够对地址空间进行读写保护。早期的处理器采用软件的方式进行页表的转换,虽然可以降低处理器设计的复杂度和降低处理器的面积,但是效率很低。随着集成电路制造技术的进步,当代处理器都会采用硬件加速的方式进行页表转换,同时会在处理器内部实现页表快速查询表,以加快页表转换速度。随着处理器的运行频率不断提高,以及应用对处理器的运算能力要求不断提高,页表缺失对于系统整体的性能的影响很大。由于页表快速查询表的容量有限,页表缺失是不可避免的,所以如何降低页表缺失的概率是需要重点解决的问题。目前,更多的方案关注如何有效地将页表转换中需要的数据预取到数据缓存(datacache)中,可以间接地在一定程度上减小页表缺失的代价。对于如何直接预取页表,还没有相应的方案。现有技术集中在如何有效地将页表转换中需要的数据预取到数据缓存中,意图能在一定程度上减小页表缺失的代价。但是处理器内的数据访问样本比较多,有取指、数据读写、页表转换等,如何将所需要的页表转换数据预取到数据缓存中,并不容易做到。为了能够加速页表(pagetable)的转换,目前的处理器都会在内部实现页表快速查询表(translationlookup-asidebuffer),它缓存了虚拟地址到物理地址的映射关系。但是由于芯片面积、功耗、成本的约束,页表快速查询表的容量是有限的,所以总会出现页表缺失的情况。页表缺失对于处理器性能影响较大,因此如何能降低页表缺失的概率是处理器设计中需要重点考虑的问题。技术实现要素:本发明提供的页表预取方法及装置,能够在一定程度上降低页表缺失的概率,从而提高处理器的综合性能。第一方面,本发明提供一种页表预取方法,包括:当页表快速查询表缺失时,触发页表转换;判断页表所在位置的存储器的属性;根据取回的数据状态判断预取页表是否合法;若预取页表合法,则保存预取页表,否则丢弃预取页表。可选地,所述存储器的属性分为三类:可缓存的、不可缓存的和外设;对于属性为可缓存的,选择突发访问数据量为半个缓存行或者整个缓存行;对于属性为不可缓存的,数据访问量根据处理器的外部总线宽度而定;对于属性为外设的,不进行页表预取。可选地,所述根据取回的数据状态判断预取页表是否合法包括:对于最后一级不是l3,如果预取回的数据不是块描述符,而是表描述符或者无效输入,则判定所述预取页表不合法;对于最后一级不是l3,如果预取回的数据有页表错误,则判定所述预取页表不合法;对于最后一级是l3,如果目标描述符含有连续位,则判定所述预取页表不合法;对于最后一级是l3,如果预取数据含有连续位,则判定所述预取页表不合法;对于最后一级是l3,如果预取数据是页描述符,但是有页表错误,则判定所述预取页表不合法。可选地,所述方法还包括:对所述预取页表进行管理。可选地,所述对所述预取页表进行管理包括以下一个或多个:预取页表在上电复位后,将其状态置为无效状态;在页表转换过程中,如果有页表错误,不保存预取页表;当接收到任何将页表快速查询表置为无效状态的指令时,将预取页表置为无效;当接收到任何配置与页表转换相关的系统寄存器操作时,将预取页表置为无效;在每一次产生预取页表时,将之前所有预取页表进行覆盖。第二方面,本发明提供一种页表预取装置,包括:触发单元,用于当页表快速查询表缺失时,触发页表转换;第一判断单元,用于判断页表所在位置的存储器的属性;第二判断单元,用于根据取回的数据状态判断预取页表是否合法;保存单元,用于当所述第二判断单元判断预取页表合法时,保存预取页表;丢弃单元,用于当所述第二判断单元判断预取页表不合法时,丢弃预取页表。可选地,所述存储器的属性分为三类:可缓存的、不可缓存的和外设;对于属性为可缓存的,选择突发访问数据量为半个缓存行或者整个缓存行;对于属性为不可缓存的,数据访问量根据处理器的外部总线宽度而定;对于属性为外设的,不进行页表预取。可选地,所述第二判断单元,用于按照如下方式判断预取页表是否合法:对于最后一级不是l3,如果预取回的数据不是块描述符,而是表描述符或者无效输入,则判定所述预取页表不合法;对于最后一级不是l3,如果预取回的数据有页表错误,则判定所述预取页表不合法;对于最后一级是l3,如果目标描述符含有连续位,则判定所述预取页表不合法;对于最后一级是l3,如果预取数据含有连续位,则判定所述预取页表不合法;对于最后一级是l3,如果预取数据是页描述符,但是有页表错误,则判定所述预取页表不合法。可选地,所述装置还包括:管理单元,用于对所述预取页表进行管理。可选地,所述管理单元,用于按照以下方式中的一个或多个对所述预取页表进行管理:预取页表在上电复位后,将其状态置为无效状态;在页表转换过程中,如果有页表错误,不保存预取页表;当接收到任何将页表快速查询表置为无效状态的指令时,将预取页表置为无效;当接收到任何配置与页表转换相关的系统寄存器操作时,将预取页表置为无效;在每一次产生预取页表时,将之前所有预取页表进行覆盖。本发明实施例提供的页表预取方法及装置,当页表快速查询表缺失时,触发页表转换,然后判断页表所在位置的存储器的属性,并根据取回的数据状态判断预取页表是否合法,若预取页表合法,则保存预取页表,否则丢弃预取页表,从而能够直接进行页表预取,在一定程度上降低页表缺失的概率,从而提高处理器的综合性能。附图说明图1为本发明实施例提供的页表预取方法的流程图;图2为本发明实施例提供的预取页表示意图;图3为本发明实施例提供的页表预取装置的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供一种页表预取方法,如图1所示,所述方法包括:s11、当页表快速查询表缺失时,触发页表转换。s12、判断页表所在位置的存储器的属性。s13、根据取回的数据状态判断预取页表是否合法。s13、若预取页表合法,则保存预取页表,否则丢弃预取页表。本发明实施例提供的页表预取方法,当页表快速查询表缺失时,触发页表转换,然后判断页表所在位置的存储器的属性,并根据取回的数据状态判断预取页表是否合法,若预取页表合法,则保存预取页表,否则丢弃预取页表,从而能够直接进行页表预取,在一定程度上降低页表缺失的概率,从而提高处理器的综合性能。下面对本发明实施例页表预取方法进行详细说明。在页表转换过程中,需要访问存储器(memory),获得页表描述符,从而进行页表的转换。那么在访问存储器时,在某种条件下,可以根据不同的存储器属性,通过存储器的突发(burst)访问,多读回一些数据。这些数据如果符合一定的条件,可以直接作为预取的页表,如图2所示。目标页表21是当前页表转换所要给出的目标页表,即当前程序需要的页表。预取页表22是存储器访问时,多读回的数据,即作为预取页表。此例中存储器的突发的数据量为256比特,每一项页表的数据宽度为64比特,所以预取页表为三项。由于处理器的一次突发访问的数据量通常不会超过一个缓存行(cacheline),因此相对来说多读回的数据量不大,那么预取的页表可以直接存在flop-array(寄存器组成的阵列)中。当然,如果数据量很大,可以选择存在sram(staticrandom-accessmemory,静态随机存取存储器)中。页表预取的详细流程如下:首先,开始做页表转换。通常页表快速查询表缺失后,会触发页表转换。然后,判断页表所在位置的存储器的属性。armv8-a架构处理器的存储器属性可以大体分为三类:cacheable(可缓存的)、non-cacheable(不可缓存的)和device(外设)。对于cacheable属性,可以选择突发访问数据量为半个缓存行或者整个缓存行;对于non-cacheable属性,数据访问量可以根据处理器的外部总线宽度而定;对于device属性,为了避免不可预测的系统行为,不进行页表预取。接着,根据取回的数据状态进行判断是否需要这些数据以及是否需要产生页表错误(pagefault)。最后,如果存在页表错误或者取回的数据不符合协议,那么需要将数据丢弃;如果取回的数据有效,那么可以将预取的数据整合后存入flop-array中。下面介绍计算预取页表数量的方式。armv8-a架构支持stage1和stage2两级页表转换,如果处理器不支持虚拟化,stage2转换就不会开启。并且,stage1和stage2都支持三种粒度(granule):4kb、16kb和64kb。每一种粒度的页表大小和页表转换方式不尽相同。本发明针对只有stage1、stage1与stage2都需要两种情况,提出计算页表预取数量的方法。此方法针对页表转换时存储器的突发访问数据量最多为256-bit的情况。只有stage1时,页表预取数量计算方法如表1所示。表1只有stage1时的页表预取数量stage1和stage2都有时,页表预取数量计算方法如表2所示。表2stage1和stage2都有时的页表预取数量识别不合法预取页表的原则:对于不合法的预取页表,要能够识别并丢弃。如果不合法的页表被保存下来,那么系统会产生不可预知的问题。识别不合法预取页表的原则如下:(1)对于最后一级不是l3,如果预取回的数据不是块描述符(blockdescriptor),而是表描述符(tabledescriptor)或者无效输入(invalidentry),那么此为不合法页表。(2)对于最后一级不是l3,如果预取回的数据有页表错误,那么此为不合法页表。(3)对于最后一级是l3,如果目标描述符含有连续(contiguous)位,那么预取回的页表为不合法页表。(4)对于最后一级是l3,如果预取数据含有连续位,那么此为不合法页表。(5)对于最后一级是l3,如果预取数据是页描述符(pagedescriptor),但是有页表错误,那么此为不合法页表。预取页表的管理:预取页表的设计是一种预测性的设计,一方面能够降低页表缺失的概率,另外一方面也会带来一些不可预知的问题。因此要能够对预取页表进行严谨的管理。具体管理方法包括以下一个或多个:预取页表在上电复位后,将其状态置为无效状态;在页表转换过程中,如果有页表错误,不保存预取页表;当接收到任何将页表快速查询表置为无效状态的指令时,将预取页表置为无效;当接收到任何配置与页表转换相关的系统寄存器操作时,将预取页表置为无效;在每一次产生预取页表时,将之前所有预取页表进行覆盖。本发明实施例还提供一种页表预取装置,如图3所示,所述装置包括:触发单元11,用于当页表快速查询表缺失时,触发页表转换;第一判断单元12,用于判断页表所在位置的存储器的属性;第二判断单元13,用于根据取回的数据状态判断预取页表是否合法;保存单元14,用于当所述第二判断单元13判断预取页表合法时,保存预取页表;丢弃单元15,用于当所述第二判断单元13判断预取页表不合法时,丢弃预取页表。本发明实施例提供的页表预取装置,当页表快速查询表缺失时,触发页表转换,然后判断页表所在位置的存储器的属性,并根据取回的数据状态判断预取页表是否合法,若预取页表合法,则保存预取页表,否则丢弃预取页表,从而能够直接进行页表预取,在一定程度上降低页表缺失的概率,从而提高处理器的综合性能。可选地,所述存储器的属性分为三类:可缓存的、不可缓存的和外设;对于属性为可缓存的,选择突发访问数据量为半个缓存行或者整个缓存行;对于属性为不可缓存的,数据访问量根据处理器的外部总线宽度而定;对于属性为外设的,不进行页表预取。可选地,所述第二判断单元13,用于按照如下方式判断预取页表是否合法:对于最后一级不是l3,如果预取回的数据不是块描述符,而是表描述符或者无效输入,则判定所述预取页表不合法;对于最后一级不是l3,如果预取回的数据有页表错误,则判定所述预取页表不合法;对于最后一级是l3,如果目标描述符含有连续位,则判定所述预取页表不合法;对于最后一级是l3,如果预取数据含有连续位,则判定所述预取页表不合法;对于最后一级是l3,如果预取数据是页描述符,但是有页表错误,则判定所述预取页表不合法。可选地,所述装置还包括:管理单元,用于对所述预取页表进行管理。可选地,所述管理单元,用于按照以下方式中的一个或多个对所述预取页表进行管理:预取页表在上电复位后,将其状态置为无效状态;在页表转换过程中,如果有页表错误,不保存预取页表;当接收到任何将页表快速查询表置为无效状态的指令时,将预取页表置为无效;当接收到任何配置与页表转换相关的系统寄存器操作时,将预取页表置为无效;在每一次产生预取页表时,将之前所有预取页表进行覆盖。本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1