CN114676073A - 一种tlb表项管理的方法、装置及存储介质 - Google Patents
一种tlb表项管理的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN114676073A CN114676073A CN202210535955.1A CN202210535955A CN114676073A CN 114676073 A CN114676073 A CN 114676073A CN 202210535955 A CN202210535955 A CN 202210535955A CN 114676073 A CN114676073 A CN 114676073A
- Authority
- CN
- China
- Prior art keywords
- tlb
- entry
- sub
- record
- type
- 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.)
- Granted
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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
Abstract
本申请公开了一种TLB表项的存储方法、装置及存储介质。该方法将一个大的TLB表拆分为多个TLB子表,并通过多个TLB子表对TLB表中的TLB表项进行分级或分类管理,其中,将指令通用的TLB表项存储至第一TLB子表,将其它TLB表项存储至其它一个或多个TLB子表中。如此,一方面可减少TLB表中的冗余信息,节省存储空间;另一方面,可使每个TLB子表中的表项数和记录数,特别是使第一TLB子表的表项数和记录数大幅减少,从而大大提高了表项的查询效率,进一步节省了计算能耗。
Description
技术领域
本申请涉及计算机数据处理领域,尤其涉及一种TLB表项管理的方法、装置及存储介质。
背景技术
现代的多用户多进程操作系统,需要内存管理单元(Memory Management UnitMMU),才能达到每个用户进程都拥有自己独立的地址空间的目标。使用MMU,操作系统可以从内存单元中,为每个进程划分出一段地址区域,并将这块地址区域映射到每个进程所能使用的内存的逻辑地址。
而物理地址至逻辑地址的映射关系保存在页表中,并且存放在内存中,MMU在读取指令或数据时,需要访问两次内存:首先通过查询页表得到物理地址,然后访问该物理地址读取指令、数据。
然而页表一般都很大,为了减少因为MMU导致的处理器性能下降,引入了地址转换后援缓冲器(Translation Lookaside Buffer,TLB),也被简称为“快表”。简单地说,TLB就是页表的Cache,其中存储了当前最可能被访问到的页表项,其内容是部分页表项的一个副本。只有在TLB无法完成地址翻译任务时,才会到内存中查询页表,这样就减少了页表查询导致的处理器性能下降。
发明内容
通常,TLB表项由两部分组成:标识和数据。标识中存放的是逻辑地址的一部分,而数据部分中存放物理页号、存储保护信息以及其他一些辅助信息。在现有技术中上述信息都存在一个表里。但对于其中的某些信息来说,几乎有一批指令都会用到而且值基本相同;而对于另一些信息来说,可能并不是每条指令都会用到且每条指令的值都是该指令特有的。这样就造成部分信息冗余,TLB表空间较大,访问TLB表所产生的能耗也较大。
本申请人创造性地提供一种TLB表项管理的方法、装置及存储介质。
根据本申请实施例第一方面,提供一种TLB表项管理的方法,该方法包括:获取待缓存至目标TLB表的TLB表项,其中,目标TLB表包括至少两个TLB子表,至少两个TLB子表中的第一TLB子表用于存储第一类型的TLB表项,第一类型的TLB表项包括指令通用的TLB表项;确定TLB表项所属的类型;若TLB表项所属的类型是第一类型,则将TLB表项存储至目标TLB表的第一TLB子表。
根据本申请一实施例,至少两个TLB子表中的第二TLB子表用于存储第二类型的TLB表项,第二类型的TLB表项包括指令专用的TLB表项,该方法还包括:若TLB表项所属的类型是第二类型,则将TLB表项存储至目标TLB表的第二TLB子表。
根据本申请一实施例,该方法还包括响应于针对在目标TLB表中查询TLB表项的访问请求,执行以下操作:在第一TLB子表中查询与访问请求匹配的记录;若存在与访问请求匹配的第一记录,则根据第一记录获取TLB表项的值。
根据本申请一实施例,该方法还包括:在目标TLB表中的第二TLB子表中查询与访问请求匹配的第二记录,根据第一记录和第二记录,获取TLB表项的值。
根据本申请一实施例,第二TLB子表存储有与第一TLB子表的关联关系,关联关系用于确定与第二TLB子表的记录关联的第一TLB子表的记录,相应地,根据第一记录和第二记录,获取TLB表项的值,包括:根据第二记录中的关联关系,确定与第二记录关联的第一TLB子表的记录,得到第一记录;合并第一记录和第二记录中TLB表项的值,得到TLB表项的值。
根据本申请一实施例,该方法还包括:若不存在与访问请求匹配的第一记录,则结束对目标TLB表的本次访问。
根据本申请一实施例,该方法还包括:配置TLB表项的类型。
根据本申请一实施例,配置TLB表项的类型,包括:将在预设周期内被访问次数大于等于次数阈值的TLB表项,确定为第一类型的TLB表项。
根据本申请实施例第二方面,提供一种TLB表项管理的装置,该装置包括:表项获取模块,用于获取待缓存至目标TLB表的TLB表项,其中,目标TLB表包括至少两个TLB子表,至少两个TLB子表中的第一TLB子表用于存储第一类型的TLB表项,第一类型的TLB表项包括指令通用的TLB表项;表项类型确定模块,用于确定TLB表项所属的类型;表项存储模块,用于若TLB表项所属的类型是第一类型,则将TLB表项存储至目标TLB表的第一TLB子表。
根据本申请实施例第三方面,提供一种计算机存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项TLB表项的管理方法。
本申请实施例提供一种TLB表项管理的方法、装置及存储介质,该方法将一个大的TLB表拆分为多个TLB子表,并通过多个TLB子表对TLB表中的TLB表项进行分级或分类管理,其中,将指令通用的TLB表项存储至第一TLB子表,将其它TLB表项存储至其它一个或多个TLB子表中。如此,一方面可减少TLB表中的冗余信息,节省存储空间;另一方面,可使每个TLB子表中的表项数和记录数,特别是使第一TLB子表的表项数和记录数大幅减少,从而大大提高了表项的查询效率,进一步节省了计算能耗。
需要理解的是,本申请的实施并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本申请的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为本申请一实施例TLB表结构示意图;
图2为本申请一实施例实现TLB表项管理的方法的流程示意图之一;
图3为本申请一实施例实现TLB表项管理的方法的流程示意图之二;
图4为本申请另一实施例TLB表项的示意图;
图5为本申请另一实施例实现TLB表项管理的方法的流程示意图之一;
图6为本申请另一实施例实现TLB表项管理的方法的流程示意图之二;
图7为本申请实施例TLB表项管理的装置的组成结构示意图。
具体实施方式
为使本申请的目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
内存管理单元(Memory Management Unit MMU),操作系统中用于管理和分配内存的单元,以使得每个用户进程都拥有自己独立的地址空间的目标。通过MMU,操作系统可为每个用户进程都划分出一段独立的地址区域,并映射到每个进程所使用的内存逻辑地址。
物理地址是内存单元的物理地址,即分给进程使用的物理内存区域中的地址,而基址则为该物理内存区域的起始地址。
逻辑地址是CPU为进程分配内存所生成的地址,被分为页号和页偏移。其中,页号包含每个页在物理内存中的基址,用来作为页表的索引;页偏移可以同基址相结合,用来确定送入内存设备的物理内存地址。
页表是用于存储逻辑地址至物理地址映射关系的表。而将进程所使用的逻辑地址变换成内存中的物理地址的过程,则由内存管理单元(MMU)来完成。
地址转换后援缓冲器表(Translation Lookaside Buffer,TLB),也被简称为“快表”。简单地说,TLB就是页表的Cache,其中存储了当前最可能被访问到的页表项,其内容是部分页表项的一个副本。只有在TLB无法完成地址翻译任务时,才会到内存中查询页表,这样就减少了页表查询导致的处理器性能下降。
TLB的表项通常由两部分组成:标识和数据。标识中存放的是逻辑地址的一部分,而数据部分中存放物理页号、存储保护信息以及其他一些辅助信息。
TLB表指用于存储TLB表项的表。
通常,TLB表项由两部分组成:标识和数据。标识中存放的是逻辑地址的一部分,而数据部分中存放物理页号、存储保护信息以及其他一些辅助信息。
通常,为了能一次查询到全部信息,上述全部TLB表项都会存在一个表里中,如图1左侧所示的表A。
假设表A中的记录1、……、记录m是同一个进程的m条指令所对应的记录。其中,TLB表项1和TLB表项2为该进程所有指令均会用到的TLB表项,则对于同一个进程的各个指令来说其对应的记录1、……、记录m的TLB表项1的值和TLB表项2的值会是相同的表项。
但对于其它的表项TLB表项3、……、TLB表项n来说,则即使是同一个进程中的指令,各个指令所对应的表项值都可能不尽相同。
如此,当把TLB表项1、TLB表项2、TLB表项3、……、TLB表项n均放到一个大的TLB表中(如图1左侧所示的表A)中时,就会造成多条记录(例如,记录1、……、记录m)的部分信息冗余(例如,TLB表项1和TLB表项2),TLB表空间较大,访问TLB表所产生的能耗也较大。
在本申请实施例中,提供了一种不同结构的TLB表,如图1右侧所示,该TLB表由至少两个子表(例如,表A1和表A2)共同组成,其中,第一TLB子表(表A1),用于存储第一类型的TLB表项,第一类型的TLB表项包括指令通用的TLB表项(例如,TLB表项1和TLB表项2);第二TLB子表(表A2)用于存储第二类型的TLB表项,第二类型的TLB表项包括指令专用的TLB表项(例如,TLB表项3至TLB表项n)。
其中,指令通用的TLB表项指几乎各种指令都会访问到的TLB表项。对于这些指令通用的TLB表项来说,在很大机率上,会有一批指令所对应的值会相同。例如,同一进程的各个指令需要访问的逻辑地址的基址、物理页面等。
相应地,指令专用的TLB表项指并非每条指令都会用到的TLB表项。对于这些指令专用的TLB表项来说,在很大机率上,每条指令所对应的值也会不尽相同。例如,每个指令所用到的偏移地址或其他一些辅助信息等。
至少两个TLB子表中的每一个TLB子表(例如,表A1或表A2)仅存储部分TLB表项,而所有TLB子表中的TLB表项加起来则会涵盖原有TLB表(表A)的全部TLB表项;相应地,所有TLB子表中的TLB表项信息加起来也会涵盖原有TLB表的全部TLB表项信息。
本申请实施例将一个大的TLB表拆分为多个TLB子表,用多个TLB子表替代一个大的TLB表,对TLB表项进行了分级或分类管理:即将那些经常被访问而且有一批指令对应的值相同的通用TLB表项作为第一类型的TLB表项,存储至第一TLB子表中,将其它TLB表项存储至其它一个或多个TLB子表中。
如此,可将TLB表项分级或分类地存储至多个TLB子表中,一方面可减少TLB表中的冗余信息(即一批指令所对应的值相同的TLB表项),节省存储空间;另一方面,可使每个TLB子表中的表项,特别是第一TLB子表的表项数和记录数大幅减少,从而大大提高了TLB表项的查询效率,进一步节省了计算能耗。
本申请TLB表项管理的方法主要应用于,基于上述包括至少一个TLB子表的TLB表,对TLB表项进行存储和访问的过程中。
图2示出了本申请一实施例实现TLB表项管理的方法的主要流程。如图2所示,该方法包括:
操作210,获取待缓存至目标TLB表的TLB表项,其中,目标TLB表包括至少两个TLB子表,至少两个TLB子表中的第一TLB子表用于存储第一类型的TLB表项,第一类型的TLB表项包括指令通用的TLB表项;
待缓存的TLB表项指在初始化TLB表时,或在TLB表中的已有表项需要更新时,从页表中获取的待缓存至TLB表的页表项。待缓存的TLB表项可以是需要创建或更新的一批表项,待批量地存储至目标TLB表;也可以是需要创建或更新的一批表项中的某个表项,待逐一地存储至目标TLB表。
TLB表项的更新可以由硬件自动发起,也可以有软件主动更新。例如,当TLB miss发生后,CPU从RAM获取页表项,自动更新TLB表项;或者TLB中的表项在进程切换、更改内核页表等情况下发生了改变,而硬件无法确定哪些TLB表项是无效的情况下,由软件在这些场景下,刷新TLB表。
在系统中可能会存在多个TLB表,目标TLB表是TLB表项要缓存至的指定的TLB表。
操作220,确定TLB表项所属的类型;
通常,每一TLB表项所属的类型都是预先定义好的,可以预置在某个表或配置文件中。而在确定TLB表项所属的类型时,只需查询预置的表或配置文件即可获取该TLB表项所属的类型。
操作230,若TLB表项所属的类型是第一类型,则将TLB表项存储至第一TLB子表。
相应地,若TLB表项所属的类型不是第一类型,则可依据指定的规则将TLB表项存储至目标TLB表中的其它TLB子表中。
在本申请实施例中,根据TLB表项所属的类型对TLB表项进行分级或分类存储:即将包括指令通用的TLB表项的第一类型的TLB表项,存储至第一TLB子表。如此,可使第一TLB子表的表项数和记录数大幅减少,从而大大提高了表项的查询效率,进一步节省了计算能耗。
相应地,图3示出了本申请实施例在响应于针对在目标TLB表中查询TLB表项的访问请求,所执行的操作:
操作310,在第一TLB子表中查询与访问请求匹配的记录;
通常,在目标TLB表中查询TLB表项的访问请求中,往往会指定匹配条件,例如,逻辑地址的一部分等于或包含特定字符等。与访问请求匹配的记录,即满足匹配条件的记录。
操作320,若存在与访问请求匹配的第一记录,则根据第一记录获取TLB表项的值。
对于某些指令来说,若第一记录已包含了该指令所需要的全部TLB表项,则可以直接返回第一记录中的TLB表项,而无须进一步查询目标TLB表的其它TLB子表;若第一记录只包含了该指令所需要的部分TLB表项,则可以进一步查询目标TLB表的其它TLB子表(例如,第二TLB子表),以获取全部的TLB表项。
由于,第一TLB子表中存储的表项包括指令通用的TLB表项,基本上可以满足大多数TLB表项的查询需要。因此,在第一TLB子表(例如,图1中右侧所示的表A1)查询到与访问请求匹配的记录的命中率,与在所有子表(例如,图1中右侧所示的表A1和表A2)查询到与访问请求匹配的记录的命中率相当;而第一TLB子表,比起包括全部TLB表项的TLB表(例如,图1中左侧所示的表A),是精简和去重过的,其表项数和记录数都得到大幅减少,进而可大幅提升查询效率,节省计算能耗,更快地获取TLB表项的值。
图4至图6示出了本申请另一实施例实现TLB表项的管理的方法的主要流程。
图4示出了该实施例目标TLB表项中所存储的页表条目40(Page Table Entry),该页表条目包括32位,其中:
第0位401,代表是否存在(Present);
第1位402,代表读写权限(Read/Write);
第2位403,代表是普通用户还是超级用户(User/Supervisor);
第3位405,代表更新缓存的模式是否是透写(Write-Through);
第4位406,代表是否允许缓存(Cache Disabled);
第5位407,代表是否访问过(Accessed);
第6位408,代表是否是脏数据(Dirty);
第7位409,代表保留位(Reserved);
第8位410,代表全局页(Global Page);
第9-11位411,代表是否可用(Aavailable);
第12-13位412,代表页基址(Page Base Address)。
而其中分位存放的每一种信息,例如,“Page Base Address”、“Aavailable”、“Global Page”和“Reserved”等都可作为一个TLB表项存储在目标TLB表中。
在该实施例中,TLB表项所属的类型是可配置的,即通过一个TLB表项配置文件,静态或动态地指定每一TLB表项所属的类型。该配置文件可根据实施效果进行修改,每次对配置文件的修改在计算机下一次启动中生效。
其中,在第一次向TLB表中存储TLB表项时,可根据专家建议,确定第一类型的TLB表项。
以图4所示的TLB表项为例,可以选取其中的“Page Base Address”、“GlobalPage”和“Reserved”作为第一类型的TLB表项存储至如下表1所示的第一TLB子表中,而将其余的TLB表项存储至下表2所示的第二TLB子表中。
表1:
表2:
其中,第二TLB子表中的“通用信息表的表项”就是用于关联到第一TLB子表的记录的字段。该关联关系用于确定与第二TLB子表的记录关联的第一TLB子表的记录。如此,可通过第二TLB子表的记录,迅速在第一TLB子表中确定与之关联的记录,确定查询到的第二TLB子表的记录是否与第一TLB子表的记录是同一记录,进而获取到要查询的全部TLB表项。
在此之后,还可以根据需要,进行TLB表项的访问统计,将在预设周期内被访问次数大于等于次数阈值的TLB表项,确定为第一类型的TLB表项。如此,可进一步提高第一TLB子表的代表性和命中率。
在下次开机时,则可以根据统计结果,动态更新第一类型的TLB表项。
图5示出了本申请实施例存储TLB表项时,所执行的主要步骤,包括:
步骤5010,获取待缓存的TLB表项;
步骤5020,确定TLB表项所属的类型;
步骤5030,若TLB表项所属的类型是第一类型,则将TLB表项存储至第一TLB子表;
步骤5040,若TLB表项所属的类型是第二类型,则将TLB表项,存储至第二TLB子表;
其中,第二TLB子表存储有与第一TLB子表的关联关系,关联关系用于确定与第二TLB子表的记录关联的第一TLB子表的记录
图6示出了本申请实施例在响应于针对同一进程P1在一段时间内运行的多个指令对多个TLB表项的访问请求时,所执行的主要步骤,包括:
步骤6010,获取当前指令在TLB表中,查询TLB表项的访问请求;
其中,当前指令可能是A1、A2、B1、B2等中的任一个。其中,指令A1和A2仅需访问第一TLB子表中的TLB表项;指令B1和B2除了需要访问第一TLB子表中的TLB表项之外,还需要访问第二TLB子表中的TLB表项。
假设,本次运行的是B1指令。而B1指令要查询的TLB表项为
“Page Base Address”、“GlobalPage”、“Reserved”和“Cache Disable”,查询条件为进程标识为P1,指令标识为P1B1。
步骤6020,在第一TLB子表中查询与访问请求匹配的记录;
以上表1为例,获得
步骤6030,判断是否存在与访问请求匹配的第一记录,若是,则继续步骤6040,若否,则继续步骤6110;
在本申请实施例中,第一TLB子表包含了所有指令通用的TLB表项,如果在第一TLB子表中不存在与访问请求匹配的第一记录,则在第二TLB子表中也不会有与访问请求匹配的记录。因此,在不存在与访问请求匹配的第一记录时,即可结束本次对目标TLB表的访问,从而使查询效率得到进一步的提升。
步骤6040,判断第一记录是否包含了请求的全部TLB表项,若否,则继续步骤6050,若是则继续步骤6100;
在本次访问请求中,第一记录包含了TLB表项“Page Base Address”、“GlobalPage”和“Reserved”,但未包含TLB表项“Cache Disable”,故继续步骤6050。
步骤6050,进一步在第二TLB子表中查询与访问请求匹配的第二记录;
以表2为例,可以得到标识为“P1B1”的第二记录。
步骤6060,判断第一记录加第二记录是否包含了请求的全部TLB表项,若否,则继续步骤6110,若是则继续步骤6070;
在本次访问请求中,第一记录包含了TLB表项“Page Base Address”、“GlobalPage”和“Reserved”,第二记录包含TLB表项“Cache Disable”,第一记录加第二记录包含了请求的全部TLB表项,故继续步骤6070。
如果,第一记录加第二记录仍然无法包含请求的全部TLB表项,则说明目标TLB表中有缺失的TLB表项,则只能访问下一级TLB表或访问内存中的页表来获取表项值。
步骤6070,根据第二记录中的关联关系,确定与第二记录关联的第一TLB子表的记录,得到第三记录;
以表2为例,可以得到标识为“P1”的第三记录。
步骤6080,判断第三记录是否与第一记录相同,若否,则继续步骤6110,若是则继续步骤6090;
在本次访问请求中第三记录与第一记录相同,故继续步骤6090。
步骤6090,合并第一记录和第二记录中TLB表项的值,得到TLB表项的值;
合并后得到如下表项的值:“Page Base Address:X1”、“GlobalPage:X2”和“Reserved:X3”和“Cache Disable:Y4”。
步骤6100,返回TLB表项;
步骤6110,结束对目标TLB表的本次访问,访问下一级TLB表或访问内存中的页表来获取表项值。
如果目标TLB表有下一级TLB表,则访问目标TLB表的下一级TLB表,如果没有,则访问内存中的页表来获取表项值。
在上述实施例中,将TLB表项分为两个类型,实现起来更为简单,在确定TLB表项所属类型和TLB表时会更快,两个TLB表之间的关联运算也比较简单和快捷。
若将所有的TLB表项存储在一个TLB大表中,则针对同一进程P1在一段时间内运行的指令A1、A2、B1、B2,需要存储4条表项,共需要4*n个存储空间,n为信息项数(列数),如下表3所示:
表3
而使用本申请实施例所提供的TLB表项的管理方法,仅需在第一TLB子表中为P1建立一条记录,如上表1所示;在第二TLB子表中,为B1和B2分别建立两条记录,如上表2所示。其中,第一TLB子表和第二TLB子表共需要n1+2*n2条记录, 其中,n1+n2=n,相当于n+n2个存储空间,远小于现有技术中的4*n个存储空间。
而且对于A1和A2指令来说,仅需访问较小的第一TLB子表,查询效率大幅提升,计算能耗也大幅降低。
在本申请的另一些实施例中,查询TLB表项时,并不会请求特定的TLB表项,而是要求返回全部的TLB表项,则会省去图6中的步骤6050,不再判断第一TLB子表是否包含请求的全部TLB表项,而直接进入步骤6050,进一步在第二TLB子表中查询与访问请求匹配的第二记录。
在本申请另一些实施例中,还可根据访问频次等将TLB表项分为两个以上的类型,分别存储至两个以上的TLB表。当分级和分类更为精细时,TLB表中的冗余信息更少,所需物理空间更少,每个表的查询效率更高。但在确定TLB表所属类型,以及在各个表之间的关联运算也会相应增加,实施者可根据具体的实施需求、实施条件和实施效果灵活确定所采用的实施方式。
进一步地,本申请实施例还提供一种TLB表项管理的装置,如图7所示,该装置70包括:表项获取模块701,用于获取待缓存至目标TLB表的TLB表项,其中,目标TLB表包括至少两个TLB子表,至少两个TLB子表中的第一TLB子表用于存储第一类型的TLB表项,第一类型的TLB表项包括指令通用的TLB表项;表项类型确定模块702,用于确定TLB表项所属的类型;表项存储模块703,用于若TLB表项所属的类型是第一类型,则将TLB表项存储至目标TLB表的第一TLB子表,第一类型的TLB表项包括指令通用的TLB表项。
在本申请一实施例中,至少两个TLB子表中的第二TLB子表用于存储第二类型的TLB表项,第二类型的TLB表项包括指令专用的TLB表项,表项存储模块703还用于若TLB表项所属的类型是第二类型,则将TLB表项存储至目标TLB表的第二TLB子表。
在本申请一实施例中,该装置70还包括:表项查询模块,用于在第一TLB子表中查询与访问请求匹配的记录;若存在与访问请求匹配的第一记录,则根据第一记录获取TLB表项的值。
在本申请一实施例中,表项查询模块,还用于进一步在目标TLB表中的第二TLB子表中查询与访问请求匹配的第二记录,根据第一记录和第二记录,获取TLB表项的值。
根据本申请一实施例,第二TLB子表存储有与第一TLB子表的关联关系,关联关系用于确定与第二TLB子表的记录关联的第一TLB子表的记录,相应地,表项查询模块具体用于根据第二记录中的关联关系,确定与第二记录关联的第一TLB子表的记录,得到第一记录;合并第一记录和第二记录中TLB表项的值,得到TLB表项的值。
根据本申请一实施例,表项查询模块还用于若不存在与访问请求匹配的第一记录,则结束对目标TLB表的本次访问。
在本申请一实施例中,该装置70还包括:表项类型配置模块,用于配置TLB表项的类型。
在本申请一实施例中,表项类型配置模块具体用于将在预设周期内被访问次数大于等于次数阈值的TLB表项,确定为第一类型的TLB表项。
需要说明的是,自第一台通用电子计算机问世以来,计算机技术在几十年间取得了飞速的发展,计算机技术的飞速发展得益于计算机体系结构的改进以及计算机生产技术的发展。计算机生产技术对计算机技术的发展的贡献一直是稳定的;然而,由于计算机体系结构经历几十年的改进,使得计算机体系结构的改进空间愈发狭小,因此针对计算机体系结构的任意小的改进都将对处理器的性能和计算机技术的发展带来较明显的影响。
根据本申请实施例第三方面,提供一种计算机存储介质,存储介质包括一组计算机可执行指令,当指令被执行时用于执行上述任一项的 方法。
这里需要指出的是:以上针对TLB表项管理的装置实施例的描述和以上针对计算机存储介质实施例的描述,与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本申请对TLB表项管理的装置实施例的描述和对计算机存储介质实施例的描述尚未披露的技术细节,请参照本申请前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的流程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种流程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的流程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通流程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种TLB表项管理的方法,其特征在于,所述方法包括:
获取待缓存至目标TLB表的TLB表项,其中,所述目标TLB表包括至少两个TLB子表,所述至少两个TLB子表中的第一TLB子表用于存储第一类型的TLB表项,所述第一类型的TLB表项包括指令通用的TLB表项;
确定所述TLB表项所属的类型;
若所述TLB表项所属的类型是第一类型,则将所述TLB表项存储至目标TLB表的第一TLB子表。
2.根据权利要求1所述的方法,其特征在于,所述至少两个TLB子表中的第二TLB子表用于存储第二类型的TLB表项,所述第二类型的TLB表项包括指令专用的TLB表项,所述方法还包括:
若所述TLB表项所属的类型是第二类型,则将所述TLB表项存储至所述目标TLB表的第二TLB子表。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括响应于针对在所述目标TLB表中查询TLB表项的访问请求,执行以下操作:
在所述第一TLB子表中查询与所述访问请求匹配的记录;
若存在与所述访问请求匹配的第一记录,则根据所述第一记录获取所述TLB表项的值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述目标TLB表中的第二TLB子表中查询与所述访问请求匹配的第二记录,根据所述第一记录和所述第二记录,获取所述TLB表项的值。
5.根据权利要求4所述的方法,其特征在于,所述第二TLB子表存储有与所述第一TLB子表的关联关系,所述关联关系用于确定与所述第二TLB子表的记录关联的所述第一TLB子表的记录,
相应地,所述根据所述第一记录和所述第二记录,获取所述TLB表项的值,包括:
根据所述第二记录中的所述关联关系,确定所述与所述第二记录关联的所述第一TLB子表的记录,得到第一记录;
合并所述第一记录和所述第二记录中TLB表项的值,得到所述TLB表项的值。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若不存在与所述访问请求匹配的第一记录,则结束对所述目标TLB表的本次访问。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
配置所述TLB表项的类型。
8.根据权利要求7所述的方法,其特征在于,所述配置所述TLB表项的类型,包括:
将在预设周期内被访问次数大于等于次数阈值的TLB表项,配置为所述第一类型的TLB表项。
9.一种TLB表项管理的装置,其特征在于,所述装置包括:
表项获取模块,用于获取待缓存至目标TLB表的TLB表项,其中,所述目标TLB表包括至少两个TLB子表,所述至少两个TLB子表中的第一TLB子表用于存储第一类型的TLB表项,所述第一类型的TLB表项包括指令通用的TLB表项;
表项类型确定模块,用于确定所述TLB表项所属的类型;
表项存储模块,用于若所述TLB表项所属的类型是第一类型,则将所述TLB表项存储至目标TLB表的第一TLB子表。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210535955.1A CN114676073B (zh) | 2022-05-18 | 2022-05-18 | 一种tlb表项管理的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210535955.1A CN114676073B (zh) | 2022-05-18 | 2022-05-18 | 一种tlb表项管理的方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114676073A true CN114676073A (zh) | 2022-06-28 |
CN114676073B CN114676073B (zh) | 2022-09-23 |
Family
ID=82080761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210535955.1A Active CN114676073B (zh) | 2022-05-18 | 2022-05-18 | 一种tlb表项管理的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676073B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115484203A (zh) * | 2022-09-14 | 2022-12-16 | 杭州云合智网技术有限公司 | 一种路由表项操作方法、装置、设备及存储介质 |
CN115484203B (zh) * | 2022-09-14 | 2024-05-24 | 云合智网(上海)技术有限公司 | 一种路由表项操作方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186651A (zh) * | 2011-12-31 | 2013-07-03 | 中国移动通信集团公司 | 一种分布式关系数据库及其建立、查询方法和装置 |
CN104239237A (zh) * | 2013-06-20 | 2014-12-24 | 华为技术有限公司 | 一种tlb管理方法及装置 |
CN110196854A (zh) * | 2019-06-11 | 2019-09-03 | 中国科学院寒区旱区环境与工程研究所 | 数据处理方法及装置 |
CN111949572A (zh) * | 2020-08-24 | 2020-11-17 | 海光信息技术有限公司 | 页表条目合并方法、装置及电子设备 |
CN112540939A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 存储管理装置、存储管理方法、处理器和计算机系统 |
CN112559252A (zh) * | 2020-12-23 | 2021-03-26 | 广州技象科技有限公司 | 一种基于属性分类的配置数据管理方法及装置 |
CN113434510A (zh) * | 2021-07-02 | 2021-09-24 | 文思海辉元辉科技(大连)有限公司 | 通用商品信息模型及商品信息存储方法 |
CN114253873A (zh) * | 2020-09-22 | 2022-03-29 | 华为技术有限公司 | 内存管理方法、装置、设备和存储介质 |
-
2022
- 2022-05-18 CN CN202210535955.1A patent/CN114676073B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186651A (zh) * | 2011-12-31 | 2013-07-03 | 中国移动通信集团公司 | 一种分布式关系数据库及其建立、查询方法和装置 |
CN104239237A (zh) * | 2013-06-20 | 2014-12-24 | 华为技术有限公司 | 一种tlb管理方法及装置 |
CN110196854A (zh) * | 2019-06-11 | 2019-09-03 | 中国科学院寒区旱区环境与工程研究所 | 数据处理方法及装置 |
CN112540939A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 存储管理装置、存储管理方法、处理器和计算机系统 |
CN111949572A (zh) * | 2020-08-24 | 2020-11-17 | 海光信息技术有限公司 | 页表条目合并方法、装置及电子设备 |
CN114253873A (zh) * | 2020-09-22 | 2022-03-29 | 华为技术有限公司 | 内存管理方法、装置、设备和存储介质 |
CN112559252A (zh) * | 2020-12-23 | 2021-03-26 | 广州技象科技有限公司 | 一种基于属性分类的配置数据管理方法及装置 |
CN113434510A (zh) * | 2021-07-02 | 2021-09-24 | 文思海辉元辉科技(大连)有限公司 | 通用商品信息模型及商品信息存储方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115484203A (zh) * | 2022-09-14 | 2022-12-16 | 杭州云合智网技术有限公司 | 一种路由表项操作方法、装置、设备及存储介质 |
CN115484203B (zh) * | 2022-09-14 | 2024-05-24 | 云合智网(上海)技术有限公司 | 一种路由表项操作方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114676073B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3640978B2 (ja) | ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置 | |
US6145064A (en) | Method of efficiently updating hashed page tables | |
KR101009220B1 (ko) | 캐시된 메모리 데이터를 가진 메모리 속성 표시자의 캐시 | |
US6560690B2 (en) | System and method for employing a global bit for page sharing in a linear-addressed cache | |
US7783859B2 (en) | Processing system implementing variable page size memory organization | |
JP3096414B2 (ja) | ディレクトリ内にアドレス・タグを記憶するためのコンピュータ | |
US7793070B2 (en) | Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics | |
KR102427774B1 (ko) | 상위 일반성 캐시 엔트리의 보다 큰 지속성을 위한 최소 사용 빈도 데이터 업데이트 | |
US9009401B2 (en) | Multi-updatable least recently used mechanism | |
US10282308B2 (en) | Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems | |
JP2020529656A (ja) | アドレス変換キャッシュ | |
CN108139966B (zh) | 管理转址旁路缓存的方法和多核处理器 | |
JP2003337834A (ja) | サイズ変更可能なキャッシュ・センシティブ・ハッシュ・テーブル | |
US20120246408A1 (en) | Arithmetic processing device and controlling method thereof | |
US8843726B2 (en) | Cache for storing multiple forms of information and a method for controlling a cache storing multiple forms of information | |
US9003130B2 (en) | Multi-core processing device with invalidation cache tags and methods | |
KR100895715B1 (ko) | 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법 | |
US20200183846A1 (en) | Method and device for optimization of data caching | |
US20210064528A1 (en) | Filtering invalidation requests | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
US6990551B2 (en) | System and method for employing a process identifier to minimize aliasing in a linear-addressed cache | |
CN114676073B (zh) | 一种tlb表项管理的方法、装置及存储介质 | |
CN114741338B (zh) | 旁路转换缓存器、数据更新方法、内存管理单元及芯片 | |
US8051271B2 (en) | Translation of virtual to physical addresses | |
US6567907B1 (en) | Avoiding mapping conflicts in a translation look-aside buffer |
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 |