页表的读取方法、装置、设备及计算机存储介质

文档序号:1242433 发布日期:2020-08-18 浏览:11次 >En<

阅读说明:本技术 页表的读取方法、装置、设备及计算机存储介质 (Page table reading method, device and equipment and computer storage medium ) 是由 袁典涛 何建彬 邱雪松 于 2020-05-14 设计创作,主要内容包括:本申请提供了一种页表的读取方法、装置、设备及计算机存储介质,通过在缓存器中的页表中成功查询得到目标虚拟地址对应的物理地址时,获取所述缓存器中的当前未使用的页表的数量;判断所述缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作;若判断出所述缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则从存储器中读取预设数量的页表。以达到隐藏从存储器中读取页表的延时,从而提高芯片的处理性能的目的。(The application provides a page table reading method, a page table reading device, page table reading equipment and a computer storage medium, wherein when a physical address corresponding to a target virtual address is obtained through successful query in a page table in a buffer, the number of the currently unused page tables in the buffer is obtained; determining whether the number of currently unused page tables in the cache is sufficient to support a lookup operation for virtual to physical address translation within a time required to obtain page table behavior; if the number of the currently unused page tables in the register is judged to be enough to support the time required for one-time page table acquiring, reading a preset number of page tables from a memory. The purpose of hiding the time delay of reading the page table from the memory and improving the processing performance of the chip is achieved.)

页表的读取方法、装置、设备及计算机存储介质

技术领域

本申请涉及计算机技术领域,特别涉及一种页表的读取方法、装置、设备及计算机存储介质。

背景技术

在大型计算类芯片的设计中,均有对存储器进行地址虚拟化管理的需求,使用虚拟地址对存储器进行读写操作时,需要将虚拟地址转换为物理地址。

目前,虚拟地址转换为物理地址的过程中,通常会在缓存器中查询已有的页表,并根据页表中记录的虚拟地址到物理地址的映射数据,查询得到与虚拟地址对应的物理地址。但是,当缓存器已有的页表使用完毕时,会产生缓存器的页表查询失败的情况,进而触发新的读请求去取回将要使用的页表。而发送读请求去存储器读取页表的延时一般是比较长的,这样就会使得整个硬件流水出现暂时中断,从而影响整个芯片的处理性能。

因此,亟需一种隐藏从存储器中读取页表的延时的方法,从而提高芯片的处理性能。

发明内容

有鉴于此,本申请提供一种页表的读取方法、装置、设备及计算机存储介质,用于隐藏从存储器中读取页表的延时的方法,从而提高芯片的处理性能。

本申请第一方面提供了一种页表的读取方法,包括:

若在缓存器的页表中成功查询得到目标虚拟地址对应的物理地址,则获取所述缓存器中的当前未使用的页表的数量;

判断所述缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作;

若判断出所述缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则从存储器中读取预设数量的页表。

可选的,所述判断所述缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作,包括:

判断所述缓存器中的当前未使用的页表的数量,是否等于一次获取预设数量的页表行为所需的时间内页表被使用的数量;

其中:若判断出所述缓存器中的当前未使用的页表的数量,等于一次获取预设数量的页表行为所需的时间内页表被使用的数量,则判断出所述缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间。

可选的,所述页表的读取方法,还包括:

获得所述缓存器缓存页表的数量;其中,所述缓存器缓存页表的数量为所述缓存器的缓存空间能够支持缓存页表的数量;

判断所述缓存器缓存页表的数量,是否大于或者等于一次性获取页表的数量的2倍;

若判断出所述缓存器缓存页表的数量,大于或者等于一次性获取页表的数量的2倍,则执行所述获取所述缓存器中的当前未使用的页表的数量。

可选的,所述从存储器中读取预设数量的页表之后,还包括:

将读取得到的页表,替换所述缓存器中已经使用的页表;其中,被替换掉的页表的数量与所述读取得到的页表的数量相同。

本申请第二方面提供了一种页表的读取装置,包括:

获取单元,用于若在缓存器的页表中成功查询得到目标虚拟地址对应的物理地址,则获取所述缓存器中的当前未使用的页表的数量;

判断单元,用于判断所述缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作;

读取单元,用于若所述判断单元判断出所述缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则从存储器中读取预设数量的页表。

可选的,所述判断单元,包括:

判断子单元,用于判断所述缓存器中的当前未使用的页表的数量,是否等于一次获取预设数量的页表行为所需的时间内页表被使用的数量;

其中:若所述判断子单元判断出所述缓存器中的当前未使用的页表的数量,等于一次获取预设数量的页表行为所需的时间内页表被使用的数量,则所述判断单元判断出所述缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间。

可选的,所述页表的读取装置,还包括:

获得单元,用于获得所述缓存器缓存页表的数量;其中,所述缓存器缓存页表的数量为所述缓存器的缓存空间能够支持缓存页表的数量;

比较单元,用于判断所述缓存器缓存页表的数量,是否大于或者等于一次性获取页表的数量的2倍;

若所述比较单元判断出所述缓存器缓存页表的数量,大于或者等于一次性获取页表的数量的2倍,则所述获取单元执行所述获取所述缓存器中的当前未使用的页表的数量的动作。

可选的,所述页表的读取装置,还包括:

替换单元,用于将读取得到的页表,替换所述缓存器中已经使用的页表;其中,被替换掉的页表的数量与所述读取得到的页表的数量相同。

本申请第三方面提供了一种页表的读取设备,包括:

一个或多个处理器;

存储装置,其上存储有一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如本申请第一方面中任意一项所述的方法。

本申请第四方面提供了一种计算存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如本申请第一方面中任意一项所述的方法。

由以上方案可知,本申请提供的一种页表的读取方法、装置、设备及计算机存储介质中,通过在缓存器的页表中成功查询得到目标虚拟地址对应的物理地址时,获取所述缓存器中的当前未使用的页表的数量;判断所述缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作;若判断出所述缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则从存储器中读取预设数量的页表,以达到隐藏从存储器中读取页表的延时,从而提高芯片的处理性能的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的一种页表的读取方法的具体流程图;

图2为本申请另一实施例提供的一种页表的读取方法的具体流程图;

图3为本申请另一实施例提供的一种页表的读取装置的示意图;

图4为本申请另一实施例提供的一种页表的读取装置的示意图;

图5为本申请另一实施例提供的一种执行页表的读取方法的设备的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要注意,本申请中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系,而术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

目前,在大型计算类芯片的设计过程中,均有对存储器进行地址虚拟化管理的需求,这样可以让存储器的不同使用单元、用户拥有各自独立的地址空间。使用虚拟地址对存储器进行读写操作,必须经过虚拟地址到实际物理地址的转换,这是至关重要的一步。这个转换过程一般会由专门的模块进行处理,我们可以简称其为VM。从虚拟地址到物理地址的映射数据存放在存储器上,可以称之为页表,简称为PTE。VM的实现中通常会包含一个页表缓存器,用于存放从存储器上读回来的页表,根据虚拟地址查询页表缓存器中的页表即可得到物理地址。

由于VM运作时会先根据当前正在处理的虚拟地址查询缓存器中已有的页表,如果查询命中即可立即获得物理地址;如果查询失败,则会发送读请求到存储器取回所需的页表,现有技术中,会在读请求时一次取回多个页表,这样可使得后续将要处理的虚拟地址直接命中缓存器中的页表。然后即可根据缓冲器中的页表进行虚拟地址到物理地址的转换。

可以看出,现有的VM实现方法中,在发送读请求到存储器读取页表时,无论一次读取多少个页表,当最后一个页表使用完毕时,都会发生缓存器页表查询失败,进而触发新的读请求去取回将要使用的页表的情况。而发送读请求去存储器读取页表的延时一般是比较长的,这样就会使得整个硬件流水出现暂时中断,从而影响整个芯片的处理性能。

因此,本申请实施例提供了一种页表的读取方法,如图1所示,具体包括以下步骤:

S101、接收查询指令;其中,查询指令用于查找目标虚拟地址对应的物理地址。

具体的,如果用户在进行读写操作时,就需要在缓存器中当前存储的页表中查询得到目标虚拟地址所对应的物理地址,因此,会向VM发送查询指令。

S102、响应查询指令,在缓存器当前存储的页表中查询目标虚拟地址对应的物理地址。

其中,缓存器为页表缓存器。页表缓存器会向存储器发送页表的读取指令,并将读取回来的页表在本地存储。因此,在接收到查询指令之后,先在本地存储的页表中查询是否记录有目标虚拟地址对应的物理地址。

具体的,若在缓存器当前存储的页表中查询得到目标虚拟地址对应的物理地址,则执行步骤S103;若在缓存器当前存储的页表中,没有查询得到目标虚拟地址对应的物理地址,则说明查询失败。当在缓存器中当前存储的页表中,没有查询得到目标虚拟地址对应的物理地址时,发送读请求到存储器取回所需的页表。

S103、获取缓存器中的当前未使用的页表的数量。

其中,当前未使用的页表为,缓存器中接收到查询指令,但是并未跟查询指令的虚拟地址相匹配的页表。

具体的,从缓存器中的所有页表中,查询得到当前未使用的页表,并统计出当前未使用的页表数量。

S104、判断缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作。

需要说明的是,当缓存器中的当前未使用的页表的数量越多,则说明有更足够的时间来进行一次页表的获取行为。

具体的,若当前缓存器中未使用的页表可以使用的时间,大于或等于一次获取页表行为所需的时间,则判断出缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则执行步骤S105。

可选的,在本申请的另一实施例中,步骤S104的一种实施方式,包括:

判断缓存器中的当前未使用的页表的数量,是否等于一次获取预设数量的页表行为所需的时间内页表被使用的数量。

需要说明的是,在每一个页表所使用的时间相同的情况下,可以通过判断缓存器中的当前未使用的页表的数量,是否等于一次获取预设数量的页表行为所需的时间内页表被使用的数量。

具体的,若判断出缓存器中的当前未使用的页表的数量,等于一次获取预设数量的页表行为所需的时间内页表被使用的数量,则说明缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需要的时间。

S105、从存储器中读取预设数量的页表。

其中,读取预设数量的页表,所能使用的时间必须大于一次从存储器中读取预设数量的页表的使用时间。

需要说明的是,存储器的大小为预设数量的页表的大小的两倍。

具体的,以缓存器中一轮能缓存8个页表为例。在使用第一个页表时,缓存器中的当前未使用的页表的数量,一定足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作,所以在使用第一个页表的过程中,理论上就可以从存储器中进行预取下一轮的8个页表了。但是,如果页表在实际的使用过程中的顺序,并不是按照页表自身的顺序进行使用,例如,获取页表时的顺序为按照页表1、页表2、页表3、页表4等,而在使用的过程中,为页表2、页表8、页表4、页表1等的顺序进行使用。那么,就会加大预取得到的页表,在使用的过程中,使用无效的概率。并且,可以看出,当前已使用的页表越多,缓存器中剩余的未使用的页表越少,在对页表进行预取时,预取得到的页表的准确率越高。因此,对页表进行预取的时机可以是但不限于,利用预设的公式进行计算得到。其中,预设的公式为,S=max(N/2,M);在公式中,S为缓存器中剩余的页表数量,N为进行读取页表的数量,M为预设的当前缓存器中页表最小的剩余个数,即一次获取页表行为所需的时间内页表被使用的数量。当剩余的页表数量达到S时,开始对页表进行预取。

可选的,在本申请的另一实施例中,在步骤S104之前,如图2所示,还包括:

S201、获得缓存器缓存页表的数量。

其中,缓存器缓存页表的数量为缓存器的缓存空间能够支持缓存页表的数量。

S202、判断缓存器缓存页表的数量,是否大于或者等于一次性获取页表的数量的2倍。

需要说明的是,只有当缓存器缓存页表的数量大于或者等于每一次获取页表的数量的两倍时,才能保证获取回来的新页表不会替换掉缓存器中还未使用的页表。

具体的,若判断出缓存器缓存页表的数量,大于或者等于一次性获取页表的数量的2倍,则执行步骤S203。

S203、获取缓存器中的当前未使用的页表的数量。

具体的,获取缓存器中的当前未使用的页表的数量的具体实现过程,可以参见S103步骤中的实现过程,此处不再赘述。

可选的,在本申请的另一实施例中,在步骤S105之后,还包括:

将读取得到的页表,替换缓存器中已经使用的页表。

其中,被替换掉的页表的数量与读取得到的页表的数量相同。

具体的,将提前获取到的页表替换掉缓存器中已经使用的页表,使得缓存器中始终存有未使用的页表,从而隐藏现有技术中,等待从存储器中读取页表的过程,从而避免了整个硬件流水过程中出现暂时中断,从而影响整个芯片的处理性能,最终达到提高整个芯片处理性能的目的。

由以上方案可知,本申请提供的一种页表的读取方法中,通过在缓存器的页表中成功查询得到目标虚拟地址对应的物理地址时,获取缓存器中的当前未使用的页表的数量;然后,判断缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作;若判断出缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则从存储器中读取预设数量的页表。以达到隐藏从存储器中读取页表的延时,从而提高芯片的处理性能的目的。

本申请的另一实施例提供了一种页表的读取装置,如图3所示,具体包括:

获取单元301,用于若在缓存器的页表中成功查询得到目标虚拟地址对应的物理地址,则获取缓存器中的当前未使用的页表的数量。

判断单元302,用于判断缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作。

可选的,在本申请的另一实施例中,判断单元302的一种实施方式,包括:

判断子单元,用于判断缓存器中的当前未使用的页表的数量,是否等于一次获取预设数量的页表行为所需的时间内页表被使用的数量。

具体的:若判断子单元判断出缓存器中的当前未使用的页表的数量,等于一次获取预设数量的页表行为所需的时间内页表被使用的数量,则判断单元302判断出缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间。

本申请上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,此处不再赘述。

读取单元303,用于若判断单元302判断出缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则从存储器中读取预设数量的页表。

本申请上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图1所示,此处不再赘述。

可选的,在本申请的另一实施例中,页表的读取装置,如图4所示,还包括:

获得单元401,用于获得缓存器缓存页表的数量。

其中,缓存器缓存页表的数量为缓存器的缓存空间能够支持缓存页表的数量。

比较单元402,用于判断缓存器缓存页表的数量,是否大于或者等于一次性获取页表的数量的2倍。

具体的,若比较单元402判断出缓存器缓存页表的数量,大于或者等于一次性获取页表的数量的2倍,则获取单元401执行获取缓存器中的当前未使用的页表的数量的动作。

本申请上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图2所示,此处不再赘述。

可选的,在本申请的另一实施例中,页表的读取装置,还包括:

替换单元,用于将读取得到的页表,替换缓存器中已经使用的页表。

其中,被替换掉的页表的数量与读取得到的页表的数量相同。

本申请上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,此处不再赘述。

由以上方案可知,本申请提供的一种页表的读取装置中,通过获取单元301在缓存器的页表中成功查询得到目标虚拟地址对应的物理地址时,获取缓存器中的当前未使用的页表的数量;然后,利用判断单元302判断缓存器中的当前未使用的页表的数量,是否足以支持一次获取页表行为所需的时间内的虚拟地址到物理地址转换的查询操作;若判断单元302判断出缓存器中的当前未使用的页表的数量,足以支持一次获取页表行为所需的时间,则利用读取单元303从存储器中读取预设数量的页表。以达到隐藏从存储器中读取页表的延时,从而提高芯片的处理性能的目的。

本申请另一实施例提供一种计算机存储介质,其上存储有计算机程序,其中,计算机程序被处理器执行时实现如上述实施例中任意一项方法。

本申请另一实施例提供一种设备,如图5所示,包括:

一个或多个处理器501。

存储装置502,其上存储有一个或多个程序。

当一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器实现如上述实施例中任意一项所述的方法。

在本申请公开的上述实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,直播设备,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。

专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:对页表遍历的冗余进行检测的处理器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类