CN107305532B - 一种表项替换方法、装置及终端 - Google Patents
一种表项替换方法、装置及终端 Download PDFInfo
- Publication number
- CN107305532B CN107305532B CN201610262238.0A CN201610262238A CN107305532B CN 107305532 B CN107305532 B CN 107305532B CN 201610262238 A CN201610262238 A CN 201610262238A CN 107305532 B CN107305532 B CN 107305532B
- Authority
- CN
- China
- Prior art keywords
- virtual page
- addresses
- page address
- virtual
- table buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种表项替换方法、装置及终端,对虚拟页地址进行排序;然后根据排序结果选择出满足预设标准的第一虚拟页地址集,第一虚拟页地址集包括至少一个虚拟页地址;最后将页表缓冲区中的第一虚拟页地址集所处的表项进行替换。通过本发明提供的方案,能够对页表缓冲区中的表项进行动态更新,以保证使用频繁的表项不被频繁替换出去,以及不常使用的表项能够被及时替换出去,从而提高页表缓冲区中表项的利用率,降低页表缓冲区失败的频率,从而提升系统的性能。
Description
技术领域
本发明涉及微处理器中提高TLB(Translation Lookaside Buffer,页表缓冲区)利用率的技术领域,尤其涉及一种表项替换方法、装置及终端。
背景技术
由于虚拟存储器技术不仅可以把存储器分块并分配给不同进程使用,自动管理存储器层次结构,而且简化了程序的加载过程,因此现在的所有微处理器都采用虚拟存储器技术。在虚拟存储器系统中,处理器生成虚拟地址(或程序地址),然后通过硬件、软件进行一系列的转换,就可获得实际访问的物理地址(即访问内存的地址)。该转化方式使得每次读取数据时都需要两次访问内存,即一次通过查页表获得物理地址,一次通过物理地址获取数据,这会消耗大量的CPU资源和时间。
基于上述情况,提出一种TLB硬件,通过该TLB专门将这些虚拟地址进行转换并保存在缓存中,从而减少二级访问内存的硬件。具体的,TLB中的每个表项都有一个VPN(Virtual Private Network,虚拟页地址)和一个物理页地址(page frame number,PFN),且VPN与PFN存在映射关系;当一个程序发出一个虚拟地址后,该虚拟地址会与TLB中的每个VPN进行匹配,若匹配成功,则将其称为TLB命中(即TLB HIT),该VPN对应的PFN会发出,若匹配失败,则将其称为TLB失败(即TLB MISS),该VPN会产生一个异常(中断),需要操作系统把页表文件加载到内存,然后从内存中继续查找该VPN并计算出对应的PFN。即使页表在内存中,查询也会消耗大量时间,影响转换效率,最主要的是异常处理相对来讲也需要消耗很大的CPU资源。
目前,在许多处理器中,硬件上已经优化了页表及相关TLB表项充填的机制,当VPN发生TLB MISS(即页表缓冲区失败)时,从内存中获取与该VPN对应的PFN,并在TLB中随机选择一个表项将该VPN及获取的PFN进行替换。但是该替换策略还是存在着TLB表项利用率不高的情况,例如,有些使用频繁的TLB表项却被频繁替换出去,而有些TLB表项不应该长时间占用TLB空间却没有被及时替换出去,进而影响TLB表项的利用率,降低整个系统的性能。
发明内容
本发明要解决的主要技术问题是,提供一种表项替换方法、装置及终端,以解决现有技术中TLB的表项利用率不高,进而降低系统性能的技术问题。
为解决上述技术问题,本发明提供一种表项替换方法,包括:
对虚拟页地址进行排序;
根据排序结果选择出满足预设标准的第一虚拟页地址集,所述第一虚拟页地址集包括至少一个虚拟页地址;
将页表缓冲区中的所述第一虚拟页地址集所处的表项进行替换。
在本发明一种实施例中,所述对虚拟页地址进行排序包括:
根据所述虚拟页地址的优先级和/或失败次数对所述虚拟页地址进行排序,所述失败次数为所述虚拟页地址发生页表缓冲区失败TLB MISS的次数。
在本发明一种实施例中,根据所述虚拟页地址的优先级和失败次数对所述虚拟页地址进行排序具体包括:
根据所述虚拟页地址的优先级对所述虚拟页地址进行排序,当所述虚拟页地址的优先级相同时,根据所述虚拟页地址的失败次数对优先级相同的虚拟页地址进行排序;
或者,根据所述虚拟页地址的失败次数对所述虚拟页地址进行排序,当所述虚拟页地址的失败次数相同时,根据所述虚拟页地址的优先级对失败次数相同的虚拟页地址进行排序。
在本发明一种实施例中,所述将页表缓冲区中的所述第一虚拟页地址集所处的表项进行替换包括:
根据选择结果将页表缓冲区中的所述第一虚拟页地址集所处的表项按照预设时间间隔进行替换。
在本发明一种实施例中,所述虚拟页地址中至少包括以下属性:失败次数、虚拟页地址发生两次页表缓冲区失败的时间间隔;在所述根据排序结果选择出满足预设标准的第一虚拟页地址集之前,还包括:
当所述虚拟页地址发生两次页表缓冲区失败的时间间隔小于等于预设时间间隔时,对所述虚拟页地址的失败次数进行调整以保证所述虚拟页地址的失败次数大于所述第一虚拟页地址集中的最大失败次数。
在本发明一种实施例中,所述在对虚拟页地址进行排序之前,还包括:
当虚拟页地址发生页表缓冲区失败TLB MISS时,将该虚拟页地址进行记录,直到记录完所述页表缓冲区中的所有虚拟页地址。
在本发明一种实施例中,所述预设标准为:所述虚拟页地址的优先级和/或失败次数小于等于预设阈值。
进一步地,本发明还提供一种表项替换装置,包括:
处理模块,用于对虚拟页地址进行排序;
选择模块,用于根据排序结果选择出满足预设标准的第一虚拟页地址集,所述第一虚拟页地址集包括至少一个虚拟页地址;
替换模块,用于将页表缓冲区中的所述第一虚拟页地址集所处的表项进行替换。
在本发明一种实施例中,所述处理模块包括:
处理子模块,用于根据所述虚拟页地址的优先级和/或失败次数对所述虚拟页地址进行排序,所述失败次数为所述虚拟页地址发生页表缓冲区失败TLBMISS的次数。
在本发明一种实施例中,所述处理子模块包括:
第一处理单元,用于根据所述虚拟页地址的优先级对所述虚拟页地址进行排序,当所述虚拟页地址的优先级相同时,根据所述虚拟页地址的失败次数对优先级相同的虚拟页地址进行排序;
第二处理单元,用于根据所述虚拟页地址的失败次数对所述虚拟页地址进行排序,当所述虚拟页地址的失败次数相同时,根据所述虚拟页地址的优先级对失败次数相同的虚拟页地址进行排序。
在本发明一种实施例中,所述替换模块包括:
替换子模块,用于根据选择结果将页表缓冲区中的所述第一虚拟页地址集所处的表项按照预设时间间隔进行替换。
在本发明一种实施例中,所述虚拟页地址中至少包括以下属性:所述失败次数、虚拟页地址发生两次页表缓冲区失败的时间间隔;所述装置还包括:
调整模块,用于在所述根据排序结果选择出满足预设标准的第一虚拟页地址集之前,当所述虚拟页地址发生两次页表缓冲区失败的时间间隔小于等于预设时间间隔时,对所述虚拟页地址的失败次数进行调整以保证所述虚拟页地址的失败次数大于所述第一虚拟页地址集中的最大失败次数。
在本发明一种实施例中,还包括:
记录模块,用于在对虚拟页地址进行排序之前,当虚拟页地址发生页表缓冲区失败TLB MISS时,将该虚拟页地址进行记录,直到替换完所述页表缓冲区中的所有虚拟页地址。
本发明还提供了一种终端,包括如上所述的表项替换装置。
本发明的有益效果是:
本发明提供了一种表项替换方法、装置及终端,对虚拟页地址进行排序;然后根据排序结果选择出满足预设标准的第一虚拟页地址集,第一虚拟页地址集包括至少一个虚拟页地址;最后将页表缓冲区中的第一虚拟页地址集所处的表项进行替换。通过本发明提供的方案,能够对页表缓冲区中的表项进行动态更新,以保证使用频繁的表项不被频繁替换出去,以及不常使用的表项能够被及时替换出去,从而提高页表缓冲区中表项的利用率,降低页表缓冲区失败的频率,从而提升系统的性能。此外,通过将虚拟页地址发生两次页表缓冲区失败的时间间隔与预设时间间隔进行比较,以保证该虚拟页地址在相邻时间间隔内不会频繁发生页表缓冲区失败,从而间接提高系统性能。
附图说明
图1为本发明实施例一提供的表项替换方法流程图;
图2为本发明实施例一提供的循环结构体数组排序示意图;
图3为本发明实施例二提供的表项替换方法另一流程图;
图4为本发明实施例二提供的链表获取TLB中所有表项的流程图;
图5为本发明实施例二提供的线程运行流程图;
图6为本发明实施例二提供的循环结构体数组重新排序流程图;
图7为本发明实施例二提供的循环结构体数组重新排序示意图;
图8为本发明实施例三提供的表项替换装置示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
实施例一
本实施例提供一种表项替换方法,请参见图1,图1为本实施例提供的表项替换方法流程图,其具体步骤如下:
S103,对VPN进行排序;
具体的,可以根据VPN的优先级和/失败次数对该VPN进行排序,其中,失败次数为VPN发生TLB MISS的次数。优先级和失败次数可以由大到小或由小到大进行排序,具体排序规则不做过多说明。当然,除去上述排序方式外,也可根据索引、时间等参数对VPN进行排序。
S104,根据排序结果选择出满足预设标准的第一VPN集,该第一VPN集包含至少一个VPN;
具体的,第一VPN集为一个集合,在该集合中包含至少一个VPN。将VPN按照rate值的大小由小到大或由大到小进行排序,然后选择出前n个VPN,n为正整数,其中,前n个VPN组成第一VPN集,该第一VPN集中包含n个VPN。
S105,将TLB中的第一VPN集所处的表项进行替换。
具体的,选择出第一VPN集后,在TLB中也存有该第一VPN集,将该第一VPN集替换出去,该过程可以理解为通过选择的第一VPN集以确定TLB中哪些表项需要被替换出去。
通过上述步骤的实施,能够对页表缓冲区中的表项进行动态更新,以保证使用频繁的表项不被频繁替换出去,以及不常使用的表项能够被及时替换出去,从而提高页表缓冲区中表项的利用率,降低页表缓冲区失败的频率,从而提升系统的性能。此外,通过将虚拟页地址发生两次页表缓冲区失败的时间间隔与预设时间间隔进行比较,以保证该虚拟页地址在相邻时间间隔内不会频繁发生页表缓冲区失败,从而间接提高系统性能。
首先,对VPN的相关内容以及VPN替换所基于的场景进行解释。一个VPN的大小是4个字节(32位),包含着找到物理地址的信息以及pte_t结构,该pte_t结构中包含rate、index、time、repeat以及flag五个属性,其中,index代表被替换到TLB表项中的索引标志、rate代表发生TLB MISS的次数、time代表VPN发生TLB MISS时系统时间、repeat代表VPN发生相邻两次TLB MISS的时间间隔、flag代表该VPN是否在TLB中的属性标志位。此外,本实施例提供的方案是基于循环结构体数组的场景进行表项替换,该循环结构体数组是系统中所有发生TLB MISS的VPN进行创建的,该数组中包含多个结构体,且结构体的个数为2倍的TLB表项个数,当然,2倍仅是用于对本实施方式进行解释,并非用于限定本发明,只要结构体个数大于TLB表项个数即可,若结构体个数小于TLB表项个数,会导致TLB的表项在循环结构体数组中无法记录完毕,导致数组不能记录TLB中个表项的rate值。各结构体中的成员有Listvalid、Listinvalid、valid_max_rate、valid_min_rate、valid_num、priority,其中,Listvalid为链接着flag是valid的双向链表,List invalid为链接着flag是invalid的双向链表,valid_max_rate为valid链表中最大的rate值,valid_min_rate为valid链表中最小的Rate值,valid_num为valid链表中节点个数,priority为数组中各链表的优先级,在同一结构体中valid链表与invalid链表的priority存在对应关系,优选地,valid链表与invalid链表的priority相同。本实施例中TLB中的表项替换策略是建立在循环结构体数组的基础上,应当明白的是,这仅用于对本实施例做出解释,并不是对本发明进行限定,也可以将本发明提供的方案应用于其他场景。
基于循环结构体数组,对本实施例的方案进行分析。在循环结构体数组中包含多个valid链表和invalid链表,每个valid链表与invalid链表中包含多个节点,该节点中存放着VPN;此外,valid链表与TLB中的所有表项进行一一映射,从而在程序运行的任何时刻,都能在valid链表中完成呈现当前TLB中的表项信息。具体的,在S103步骤之前,还包括:
S101,当VPN发生TLB MISS时,将该VPN记录在链表中,直到记录完TLB中的所有VPN,以保证当前TLB中的VPN与链表中的VPN对应。
具体的,每次出现TLB MISS的情况时,就会将对应VPN记录在链表中,并将该VPN替换到TLB中,也即将TLB中原有的VPN进行替换,以保证当前TLB中的VPN与链表中的VPN一一映射。将TLB中的VPN记录到链表中的目的是能够对VPN的rate值进行动态更新,从而对VPN进行最优的排序,进而选择出不常用的表项对TLB中的表项进行替换。
进一步地,在S103步骤之前还包括:
S102,当VPN的repeat小于等于预设repeat时,对VPN的rate值进行调整以保证VPN的rate值大于第一VPN集中的最大rate值。
具体的,为了防止某些VPN下次轻易的被替换出去,导致发生TLB MISS的概率增加,从VPN的pte_t结构中获取repeat值,并与如下公式计算得到的预设repeat进行比较,以判断是否对该VPN的rate值进行调整,从而避免该VPN频繁发生TLB MISS。该预设repeat具体计算公式如下:
将获取的repeat值与上述公式计算出的repeat值进行比较,若当前repeat值小于等于计算的repeat值,则表明该VPN发生TLB MISS过于频繁,因此,将该VPN的rate值进行累加,累加的范围本实施例不做限定,优选地将rate值加2;若当前repeat值大于计算的repeat值,则将该VPN的rate值也进行累加或者不对其进行改变,累加的范围本实施例也不做限定,优选地将rate值加1。
在S103步骤中,将VPN在链表中记录完毕,且对部分VPN的rate值调整完毕,valid链表中的各节点按照VPN的优先级和/或rate值进行排序,也即根据VPN的优先级和/或rate值按照第一预设规则对VPN进行排序,具体的,可以仅通过rate值或优先级对VPN进行排序,也可通过rate值和优先级共同对VPN进行排序,后者排序方式相较于前者,对VPN排序的准确度相对要高些,在TLB中被替换的VPN的利用率也相对要低些,进一步降低TLB MISS发生的频率。此外,上述第一预设规则可以是将优先级和rate值按照由小到大或由大到小的顺序进行排序,本实施例不对具体排序方式进行限定,对于其他合理排序方式同样属于本发明保护的范围。因为优先级和rate值均与VPN具有一一对应关系,因此,VPN也相应的按照由小到大或由大到小的顺序进行排序。
更进一步地,根据优先级和rate值对VPN进行排序存在以下两种排序方式:
一、根据VPN的优先级对VPN进行排序,当VPN的优先级相同时,根据VPN的rate值对优先级相同的VPN进行排序。
二、根据VPN的rate值对VPN进行排序,当VPN的rate值相同时,根据VPN的优先级对rate值相同的VPN进行排序。具体的,请参见图2,图2为本实施例提供的循环结构体数组排序示意图,首先按照优先级从小到大对各链表进行排序,然后再对链表中的各节点(节点中存放VPN)按照rate值从小到大的顺序进行排序。具体的,优先级与VPN存在对应关系,各VPN的优先级可以不相同,也可以部分相同。第二预设规则可以与第一预设规则相同或相反,即若第一预设规则为由小到大/由大到小进行排序,则第二预设规则为由大到小/有小到大进行排序,或者也由小到大/由大到小进行排序。
需要明白的是,除去对valid链表中的VPN进行排序外,也可对invalid链表中的VPN按照优先级和/或rate值进行排序,但是对其排序的意义并不是很大,理由是对TLB中的表项进行替换的依据来源于valid链表,invalid链表仅用于记录TLB中那些需要被替换出去的VPN;相反还会浪费许多操作和时间。当然,S103步骤也可以在S102步骤之前执行,也即先进行排序,然后当出现发生TLBMISS过于频繁的VPN时,对该VPN的rate值进行调整,最后将整体链表中的VPN进行排序,对于二者的先后顺序,不做具体限定。
对于S104步骤,本实施例中是选择出一个或多个VPN进行替换,也即可以一个表项接一个表项的进行替换,也可以多个表项接多个表项的进行替换,对于具体替换方式,不做过多说明,但是,需要知道的是,链表中选择的VPN个数与TLB中需要被替换的个数应是等同的,以保证选择的VPN在TLB中可以被完全替换,进一步保证TLB中表项的利用率。相应的,基于S104步骤,在S105步骤中,根据选择结果将TLB中第一VPN集所处的表项按照预设时间间隔进行动态替换,预设时间间隔可根据实际需求进行动态调整,本实施例不对其进行限定,也即每隔一段时间对链表中的VPN进行排序,进而对TLB中不常用的表项进行动态替换,而不是将该VPN直接替换到TLB中,导致部分频繁使用的表项被替换出去。通过S104步骤和S105步骤,可以将TLB中不常使用的VPN替换出去,当TLB中的表项(相对原来的TLB来讲)均被替换成较常使用的表项时,相应的发生TLB MISS的情况就会大大降低,进而提高TLB中表项的利用率。
此外,在S104步骤中提到的预设标准具体为,VPN的优先级和/或rate值小于等于预设阈值。具体的,VPN的优先级或rate值大于预设阈值,且对应的rate值或VPN的优先级小于预设阈值,或者VPN的优先级和rate值小于预设阈值rate值;其中,预设阈值任意设定,该预设阈值为正整数。当然,优先级与rate值存在关联,例如:在同一链表中,各VPN的优先级相同,在不同链表中,各VPN的优先级不同,优先级和rate值均是正向增大,若rate值较大的,相应的其优先级也较高;或者优先级越大,其rate值越小,通过该方式也可对VPN进行排序,只要基于本实施方式的发明构思,对于其他选择标准同样属于本实施保护的范围。
实施例二
本实施将以实施例一为基础,以循环结构体数组为场景对TLB表项的替换策略进行解释,请参见图3,图3为本实施例提供的表项替换方法另一流程图。具体替换流程如下:
S301,创建一个循环结构体数组;
具体的,该循环结构体数组中的成员有List valid、List invalid、valid_max_rate、valid_min_rate、valid_num、priority,对于各成员所代表的意义,请参见实施例一中的相关说明,本实施例不再赘述。此外,可以创建多个数组,但基于实际出发,创建一个数组就可满足需要。
S302,valid链表得到TLB中所有表项的VPN;
具体的,一个VPN的大小是4个字节(32位),包含着找到物理地址的信息以及pte_t结构,该pte_t结构中包含rate、index、time、repeat以及flag五个属性字段。对于各属性字段所代表的意义,请参见实施例一中的相关说明,本实施例不再赘述。当任一VPN发生TLBMISS时,就会将该VPN记录到valid链表中,直到TLB中所有表项的VPN都被记录在valid链表中,其目的在于,通过valid链表记录TLB中所有表项发生TLB MISS的次数,即记录rate值。请参见图4,图4为本实施例提供的链表获取TLB中所有表项的流程图,该获取流程如下:
S401,在TLB表项个数范围内依次选择index值由最大到最小对TLB表项进行替换;
具体的,当VPN发生TLB MISS时,将该VPN替换至TLB的VPN中,其替换规则是根据TLB中VPN的index值选择最大的VPN进行替换,依次循环,直到TLB中所有表项被替换完毕。
S402,创建链表节点,将TLB中该VPN的index值赋值给链表节点中该VPN的index,并记录当前系统时间time,属性设置为valid,将此节点插入链表尾。
具体的,记录该VPN当前系统时间的目的在于,方便统计该VPN上一次发生TLBMISS与当前发生TLB MISS的时间间隔,从而判断该VPN发生TLBMISS是否过于频繁,进而确定是否要对其rate值进行增加。将节点插入链表尾可以理解为将该VPN插入valid链表尾,插入valid链表尾的目的在于保证该VPN不会出现刚替换下来就又一次被替换到TLB中以降低TLB表项的利用率。
S303,当再次发生TLB MISS时,先由发生TLB MISS的VPN得到pte_t,从循环结构体数组中依次寻找pte_t的非空valid链表;
S304,将找到的非空valid链表头节点属性设置为invalid,根据其Index进行TLB表项替换,将其从原先的链表中删除,并将Index赋值给pte_t中的Index,将其插入到相同优先级属性为Invalid的链表尾部。
S305,记录pte_t发生TLB MISS时的当前系统时间Time,将pte_t存放于FIFO(First Input First Output,先入先出队列)中,设置TLB异常标志位触发线程运行,请参见图5,图5为线程运行流程图,具体运行过程如下:
S501,监控线程检测到TLB异常标志位运行后,先从FIFO中取出pte_t;
S502,将发生TLB MISS的VPN对应的pte_t从原先invalid链表中删除,属性设置为valid;
具体的,由于需要提高pte_t的rate值,以间接提高其优先级,防止其下次轻易地从TLB中被替换出去,获取此pte_t(也即VPN)的repeat,并与预设repeat进行比较,若此次repeat值小于等于repeat值,则将其rate加2,否则rate加1,以保证该VPN不会频繁发生TLBMISS,并循环执行该步骤,直到各VPN的repeat均大于预设repeat值。
S503,在不同优先级中,依次查找rate值落在Rate_Max与Rate_Min的valid链表,若查找到,则执行S504,若未查找到,则执行S507;
S504,将rate值对应的VPN插入到链表尾部,并记录相应优先级的valid链表节点的个数,以及valid链表rate的最大值Rate_Max与最小值Rate_Min;
S505,判断最开始valid链表是否为空的次数达到3次,若是,执行S506,若否,执行S501;
需要注意的是,上述3次的数量值仅是用于解释本实施例,并非用于限定本实施例。
S506,将循环数组中从最开始valid链表为空的合并到第一个含有有效valid的链表中;
其目的在于,为了下次进行TLB表项替换时能够快速找到可以被替换的TLB条目。
S507,判断优先级是否到达循环数组末端,即数组是否已满,若否,则执行S508,若是,则执行S509;
S508,新建优先级及对应的链表,将节点插入到链表末端,当该数组已满时,执行S509;
S509,对循环数组进行重新排列;
具体的,请参见图6,图6为本实施提供的循环结构体数组重新排序流程图,具体排序流程如下:
S601,计算当前结构体数组中每个priority对应的valid节点个数num,得到num数最大的valid链表对应的优先级Pri_Mean;
S602,将priority值小于Pri_Mean的invalid与valid链表,根据priority值从小到大依次合并至优先级为Pri_Mean-1的链表中;
S603,将优先级为Pri_Mean-1的valid链表的节点按照其Rate值从小到大进行排序。
更具体的,请参见图7,图7为本实施例提供的循环结构体数组重新排序示意图,通过该图能够更加直观的反映如何对循环结构体数组进行重新排列。
S510,记录相应优先级的valid链表节点的个数,以及valid链表Rate的最大值Rate_Max与最小值Rate_Min,并执行S501。
实施例三
请参见图8,图8为本实施例提供的表项替换装置示意图,上述实施例一中的表项替换方法可应用于本实施例提供的装置,故本实施例不再对装置中的部分模块做详细说明,具体内容请参见实施例一中的相关描述。该装置包括:
处理模块803,用于对VPN进行排序;
具体的,可以根据VPN的优先级和/失败次数对该VPN进行排序,其中,失败次数为VPN发生TLB MISS的次数。优先级和失败次数可以由大到小或由小到大进行排序,具体排序规则不做过多说明。当然,除去上述排序方式外,也可根据索引、时间等参数对VPN进行排序。
选择模块804,用于根据排序结果选择出满足预设标准的第一VPN集,该第一VPN集包含至少一个VPN;
具体的,第一VPN集为一个集合,在该集合中包含至少一个VPN。将VPN按照rate值的大小由小到大或由大到小进行排序,然后选择出前n个VPN,n为正整数,其中,前n个VPN组成第一VPN集,该第一VPN集中包含n个VPN。
替换模块805,用于将TLB中的第一VPN集所处的表项进行替换。
具体的,选择出第一VPN集后,在TLB中也存有该第一VPN集,将该第一VPN集替换出去,该过程可以理解为通过选择的第一VPN集以确定TLB中哪些表项需要被替换出去。更具体的,本实施例中是选择出一个或多个VPN进行替换,也即可以一个表项接一个表项的进行替换,也可以多个表项接多个表项的进行替换,对于具体替换方式,不做过多说明,但是,需要知道的是,链表中选择的VPN个数与TLB中需要被替换的个数应是等同的,以保证选择的VPN在TLB中可以被完全替换,进一步保证TLB中表项的利用率。
进一步地,在处理模块803中包括:
处理子模块8031,用于根据VPN的优先级和/或失败次数对VPN进行排序,其中,失败次数为VPN发生TLB MISS的次数,也即根据VPN的优先级和/或rate值对VPN进行排序。
具体的,可以仅通过rate值或优先级对VPN进行排序,也可通过rate值和优先级共同对VPN进行排序,后者排序方式相较于前者,对VPN排序的准确度相对要高些,在TLB中被替换的VPN的利用率也相对要低些,进一步降低TLB MISS发生的频率。此外,可以将优先级和rate值按照由小到大或由大到小的顺序进行排序,本实施例不对具体排序方式进行限定,对于其他合理排序方式同样属于本发明保护的范围。因为优先级和rate值均与VPN具有一一对应关系,因此,VPN也相应的按照由小到大或由大到小的顺序进行排序。
更进一步地,在处理子模块8031中包括:
第一处理单元80311,用于根据VPN的优先级对VPN进行排序,当VPN的优先级相同时,根据VPN的rate值对优先级相同的VPN进行排序;
第二处理单元80312,用于根据VPN的rate值对VPN进行排序,当VPN的rate值相同时,根据VPN的优先级对rate值相同的VPN进行排序。
进一步地,在替换模块805中包括:
替换子模块8051,用于根据选择结果将TLB中的所述第一VPN集所处的表项按照预设时间间隔进行替换。
具体的,每隔一段时间对链表中的VPN进行排序,进而对TLB中不常用的表项进行动态替换,而不是将该VPN直接替换到TLB中,导致部分频繁使用的表项被替换出去。
进一步地,在该装置中还包括记录模块801,用于在对VPN进行排序之前,当VPN发生TLB MISS时,将该VPN进行记录,直到替换完TLB中的所有VPN。
具体的,每次出现TLB MISS的情况时,就会将对应VPN记录在链表中,并将该VPN替换到TLB中,也即将TLB中原有的VPN进行替换,以保证当前TLB中的VPN与链表中的VPN一一映射。将TLB中的VPN记录到链表中的目的是能够对VPN的rate值进行动态更新,从而对VPN进行最优的排序,进而选择出不常用的表项对TLB中的表项进行替换。
更进一步地,VPN中至少包括以下属性:所述失败次数、VPN的repeat(repeat是指VPN发生两次TLB MISS的时间间隔);在该装置中,还包括:调整模块802,用于在根据排序结果选择出满足预设标准的第一VPN集之前,当VPN的repeat值小于等于预设repeat值时,对VPN的rate值进行调整以保证VPN的rate值大于第一VPN集中的最大rate值。
具体的,为了防止某些VPN下次轻易的被替换出去,导致发生TLB MISS的概率增加,从VPN的pte_t结构中获取repeat值,并与如下公式计算得到的预设repeat进行比较,以判断是否对该VPN的rate值进行调整,从而避免该VPN频繁发生TLB MISS。该预设repeat具体计算公式如下:
将获取的repeat值上述公式计算出的repeat值进行比较,若当前repeat值小于等于计算的repeat值,则表明该VPN发生TLB MISS过于频繁,因此,将该VPN的rate值进行累加,累加的范围本实施例不做限定,优选地将rate值加2;若当前repeat值大于计算的repeat值,则将该VPN的rate值也进行累加或者不对其进行改变,累加的范围本实施例也不做限定,优选地将rate值加1。
通过上述装置的实施,能够对页表缓冲区中的表项进行动态更新,以保证使用频繁的表项不被频繁替换出去,以及不常使用的表项能够被及时替换出去,从而提高页表缓冲区中表项的利用率,降低页表缓冲区失败的频率,从而提升系统的性能。此外,通过将虚拟页地址发生两次页表缓冲区失败的时间间隔与预设时间间隔进行比较,以保证该虚拟页地址在相邻时间间隔内不会频繁发生页表缓冲区失败,从而间接提高系统性能。
此外,本实施例还提供了一种终端,该终端包括上述表项替换装置。该表项替换装置可以在本实施例提供的终端中运行。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种表项替换方法,其特征在于,包括:
对虚拟页地址进行排序;
根据排序结果选择出满足预设标准的第一虚拟页地址集,所述第一虚拟页地址集包括至少一个虚拟页地址;
将页表缓冲区中的所述第一虚拟页地址集所处的表项进行替换;
所述对虚拟页地址进行排序包括:
根据所述虚拟页地址的优先级和失败次数对所述虚拟页地址进行排序,所述失败次数为所述虚拟页地址发生页表缓冲区失败TLB MISS的次数;
根据所述虚拟页地址的优先级和失败次数对所述虚拟页地址进行排序具体包括:
根据所述虚拟页地址的优先级对所述虚拟页地址进行排序,当所述虚拟页地址的优先级相同时,根据所述虚拟页地址的失败次数对优先级相同的虚拟页地址进行排序;
或者,
根据所述虚拟页地址的失败次数对所述虚拟页地址进行排序,当所述虚拟页地址的失败次数相同时,根据所述虚拟页地址的优先级对失败次数相同的虚拟页地址进行排序。
2.如权利要求1所述的表项替换方法,其特征在于,所述将页表缓冲区中的所述第一虚拟页地址集所处的表项进行替换包括:
根据选择结果将页表缓冲区中的所述第一虚拟页地址集所处的表项按照预设时间间隔进行替换。
3.如权利要求1所述的表项替换方法,其特征在于,所述虚拟页地址中至少包括以下属性:失败次数、虚拟页地址发生两次页表缓冲区失败的时间间隔;在所述根据排序结果选择出满足预设标准的第一虚拟页地址集之前,还包括:
当所述虚拟页地址发生两次页表缓冲区失败的时间间隔小于等于预设时间间隔时,对所述虚拟页地址的失败次数进行调整以保证所述虚拟页地址的失败次数大于所述第一虚拟页地址集中的最大失败次数。
4.如权利要求1所述的表项替换方法,其特征在于,所述对虚拟页地址进行排序之前,还包括:
当虚拟页地址发生页表缓冲区失败TLB MISS时,将该虚拟页地址进行记录,直到记录完所述页表缓冲区中的所有虚拟页地址。
5.如权利要求1所述的表项替换方法,其特征在于,所述预设标准为:所述虚拟页地址的优先级和/或失败次数小于等于预设阈值。
6.一种表项替换装置,其特征在于,包括:
处理模块,用于对虚拟页地址进行排序;
选择模块,用于根据排序结果选择出满足预设标准的第一虚拟页地址集,所述第一虚拟页地址集包括至少一个虚拟页地址;
替换模块,用于将页表缓冲区中的所述第一虚拟页地址集所处的表项进行替换;
所述处理模块包括:
处理子模块,用于根据所述虚拟页地址的优先级和失败次数对所述虚拟页地址进行排序,所述失败次数为所述虚拟页地址发生页表缓冲区失败TLB MISS的次数;
所述处理子模块包括:
第一处理单元,用于根据所述虚拟页地址的优先级对所述虚拟页地址进行排序,当所述虚拟页地址的优先级相同时,根据所述虚拟页地址的失败次数对优先级相同的虚拟页地址进行排序;
第二处理单元,用于根据所述虚拟页地址的失败次数对所述虚拟页地址进行排序,当所述虚拟页地址的失败次数相同时,根据所述虚拟页地址的优先级对失败次数相同的虚拟页地址进行排序。
7.如权利要求6所述的表项替换装置,其特征在于,所述替换模块包括:
替换子模块,用于根据选择结果将页表缓冲区中的所述第一虚拟页地址集所处的表项按照预设时间间隔进行替换。
8.如权利要求6所述的表项替换装置,其特征在于,所述虚拟页地址中至少包括以下属性:失败次数、虚拟页地址发生两次页表缓冲区失败的时间间隔;所述装置还包括:
调整模块,用于在所述根据排序结果选择出满足预设标准的第一虚拟页地址集之前,当所述虚拟页地址发生两次页表缓冲区失败的时间间隔小于等于预设时间间隔时,对所述虚拟页地址的失败次数进行调整以保证所述虚拟页地址的失败次数大于所述第一虚拟页地址集中的最大失败次数。
9.如权利要求6所述的表项替换装置,其特征在于,还包括:
记录模块,用于在对虚拟页地址进行排序之前,当虚拟页地址发生页表缓冲区失败TLBMISS时,将该虚拟页地址进行记录,直到替换完所述页表缓冲区中的所有虚拟页地址。
10.一种终端,其特征在于,包括如权利要求6-9任一项所述的表项替换装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610262238.0A CN107305532B (zh) | 2016-04-25 | 2016-04-25 | 一种表项替换方法、装置及终端 |
PCT/CN2017/074330 WO2017185864A1 (zh) | 2016-04-25 | 2017-02-22 | 一种表项替换方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610262238.0A CN107305532B (zh) | 2016-04-25 | 2016-04-25 | 一种表项替换方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107305532A CN107305532A (zh) | 2017-10-31 |
CN107305532B true CN107305532B (zh) | 2023-04-07 |
Family
ID=60150331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610262238.0A Active CN107305532B (zh) | 2016-04-25 | 2016-04-25 | 一种表项替换方法、装置及终端 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107305532B (zh) |
WO (1) | WO2017185864A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417799A (zh) * | 2019-08-05 | 2019-11-05 | 斑马网络技术有限公司 | 车机中公钥证书的管理方法、装置、设备及存储介质 |
CN112817756B (zh) * | 2021-01-25 | 2022-05-27 | 上海壁仞智能科技有限公司 | 计算机可读取存储介质、内存管理单元的虚拟化方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5239635A (en) * | 1988-06-06 | 1993-08-24 | Digital Equipment Corporation | Virtual address to physical address translation using page tables in virtual memory |
CN1779662A (zh) * | 2004-11-24 | 2006-05-31 | 中国科学院计算技术研究所 | 改进的虚拟地址变换方法及其装置 |
CN103019948A (zh) * | 2011-12-14 | 2013-04-03 | 微软公司 | 使用连续排序的交换文件的工作集合交换 |
US8880844B1 (en) * | 2010-03-12 | 2014-11-04 | Trustees Of Princeton University | Inter-core cooperative TLB prefetchers |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089396B2 (en) * | 2002-10-10 | 2006-08-08 | International Business Machines Corporation | Method and profiling cache for management of virtual memory |
US8615636B2 (en) * | 2011-03-03 | 2013-12-24 | International Business Machines Corporation | Multiple-class priority-based replacement policy for cache memory |
CN105095115A (zh) * | 2014-04-28 | 2015-11-25 | 华为技术有限公司 | 存储空间管理方法和装置 |
-
2016
- 2016-04-25 CN CN201610262238.0A patent/CN107305532B/zh active Active
-
2017
- 2017-02-22 WO PCT/CN2017/074330 patent/WO2017185864A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5239635A (en) * | 1988-06-06 | 1993-08-24 | Digital Equipment Corporation | Virtual address to physical address translation using page tables in virtual memory |
CN1779662A (zh) * | 2004-11-24 | 2006-05-31 | 中国科学院计算技术研究所 | 改进的虚拟地址变换方法及其装置 |
US8880844B1 (en) * | 2010-03-12 | 2014-11-04 | Trustees Of Princeton University | Inter-core cooperative TLB prefetchers |
CN103019948A (zh) * | 2011-12-14 | 2013-04-03 | 微软公司 | 使用连续排序的交换文件的工作集合交换 |
Non-Patent Citations (4)
Title |
---|
《解析虚拟存储中的置换算法》;周慧琴;《太原科技》;20080731(第7期);第57-58页 * |
周慧琴.《解析虚拟存储中的置换算法》.《太原科技》.2008,(第7期), * |
李冬梅等.《分页虚拟存储管理》.《操作系统》.江苏大学出版社,2013, * |
胡学钢等.《分页虚拟存储管理》.《操作系统》.北京师范大学出版社,2014, * |
Also Published As
Publication number | Publication date |
---|---|
CN107305532A (zh) | 2017-10-31 |
WO2017185864A1 (zh) | 2017-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10706101B2 (en) | Bucketized hash tables with remap entries | |
US10198363B2 (en) | Reducing data I/O using in-memory data structures | |
US10511538B1 (en) | Efficient resource tracking | |
US9223712B2 (en) | Data cache method, device, and system in a multi-node system | |
CN107665146B (zh) | 内存管理装置和方法 | |
US10114866B2 (en) | Memory-constrained aggregation using intra-operator pipelining | |
US8447897B2 (en) | Bandwidth control for a direct memory access unit within a data processing system | |
US8275802B2 (en) | Optimized least recently used lookup cache | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
CN109582600B (zh) | 一种数据处理方法及装置 | |
US10152420B2 (en) | Multi-way set associative cache and processing method thereof | |
US20120089811A1 (en) | Address conversion apparatus | |
US8086804B2 (en) | Method and system for optimizing processor performance by regulating issue of pre-fetches to hot cache sets | |
US20200117462A1 (en) | Memory integrated circuit and pre-fetch method thereof | |
US9201806B2 (en) | Anticipatorily loading a page of memory | |
US10049035B1 (en) | Stream memory management unit (SMMU) | |
CN107305532B (zh) | 一种表项替换方法、装置及终端 | |
CN111124270A (zh) | 缓存管理的方法、设备和计算机程序产品 | |
US8935508B1 (en) | Implementing pseudo content access memory | |
CN116244219A (zh) | 一种基于raid缓存状态的落盘方法及系统 | |
WO2021008552A1 (zh) | 数据读取方法和装置、计算机可读存储介质 | |
US20210097049A1 (en) | Method, device and computer program product for managing index tables | |
EP0905619A2 (en) | A list management system and method | |
KR20220110226A (ko) | 고빈도 액세스 버킷 세트와 저빈도 액세스 버킷 세트를 갖는 해시 테이블을 사용하는 시스템 및 방법 | |
US20180089106A1 (en) | Method and apparatus for replacing data block in cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |