CN115061955A - 处理器、电子设备、地址翻译方法以及缓存页表项方法 - Google Patents
处理器、电子设备、地址翻译方法以及缓存页表项方法 Download PDFInfo
- Publication number
- CN115061955A CN115061955A CN202210731130.7A CN202210731130A CN115061955A CN 115061955 A CN115061955 A CN 115061955A CN 202210731130 A CN202210731130 A CN 202210731130A CN 115061955 A CN115061955 A CN 115061955A
- Authority
- CN
- China
- Prior art keywords
- page table
- cache
- address
- table entry
- translation
- 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.)
- Pending
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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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
-
- 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]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种处理器、电子设备、地址翻译方法以及缓存页表项方法。该处理器包括翻译后备缓冲器和预设缓存空间。该翻译后备缓冲器与预设缓存空间通信连接,该预设缓存空间配置为缓存用于翻译后备缓冲器且与对象虚拟页号对应的对象页表项的至少部分内容,翻译后备缓冲器配置为创建并缓存对象页表项在预设缓存空间中的对象地址索引,并且允许通过使用对象虚拟页号的至少部分地址信息查询翻译后备缓冲器以得到对象地址索引,其中,对象地址索引用于访问缓存在预设缓存空间中的对象页表项的至少部分内容。该处理器可以节省翻译后备缓冲器的硬件资源。
Description
技术领域
本公开的实施例涉及一种处理器、电子设备、地址翻译方法以及缓存页表项方法
背景技术
在计算机技术发展过程中,低价格、大容量的存储通常延迟较高,无法及时给处理器提供数据。低延迟、小容量的存储作为处理器和大容量存储的中间缓冲区域,有效地缓解了数据传输高延迟对处理器性能的影响。这种低延迟、小容量的存储技术之一就是缓存技术。为了平衡容量和延迟,缓存分为多级。常用的处理器通常有三级缓存,从一级到三级,容量依次增大。一级缓存(L1 Cache)的容量通常为几十KB,二级缓存(L2 Cache)的容量为几MB,三级缓存(L3 Cache)的容量为几百MB。这里,级数数字较低的缓存容量较小,延迟较低;级数数字较大的缓存反之。在多级缓存体系中,最后一级缓存也简称LLC缓存(Last LevelCache)。
在中央处理器(CPU)架构中,程序指令与数据都保存在内存中。CPU核运行频率远远高于内存运行频率,因此,从内存获取数据与指令可能需要上百个CPU核时钟,往往会造成CPU核由于等待相关指令与数据而空转,造成性能损失。因此,当前的CPU核通常都包含上述多级缓存架构来保存最近被访问的数据,同时利用预取器发现指令/数据访问的规律,来提前预取即将被访问的指令/数据到缓存中。如果预取的是指令,则称为指令预取器;如果预取的是数据,则称为数据预取器。后者根据目标缓存位置,可以进一步细分为L1D数据预取器(预取到一级数据缓存),L2数据预取器,LLC数据预取器。
缓存通常通过静态随机存储器(SRAM)存储装置实现,而内存通过动态随机存储器(DRAM)存储装置实现。
计算机操作系统的重要职能之一是内存管理。在多进程操作系统中,每个进程都有自己的虚拟地址空间,可以使用系统规定范围内的任意虚拟地址(Virtual Address)。中央处理器(Central Processing Unit,CPU)执行应用程序时所使用的地址是虚拟地址。操作系统给进程分配内存时,需要把使用到的虚拟地址映射到物理地址(PhysicalAddress),物理地址才是真正的物理内存访问地址。通过这种将地址区分为虚拟地址和物理地址的方式,可以简化程序编译,使编译器基于连续的、充足的虚拟地址空间来编译程序,并且不同进程的虚拟地址被分配到不同的物理地址,使得系统能够同时运行多个进程,从而提高整个计算机系统的运行效率。此外,由于应用程序可以使用但无法更改地址翻译,因此一个进程无法访问到另一个进程的内存内容,从而增加了系统的安全性。
发明内容
本公开的至少一实施例提供了一种处理器,该处理器包括翻译后备缓冲器(TLB)和预设缓存空间。所述翻译后备缓冲器与所述预设缓存空间通信连接,所述预设缓存空间配置为缓存用于所述翻译后备缓冲器且与对象虚拟页号对应的对象页表项(PTE)的至少部分内容,所述翻译后备缓冲器配置为创建并缓存所述对象页表项在所述预设缓存空间中的对象地址索引,并且允许通过使用所述对象虚拟页号的至少部分地址信息查询所述翻译后备缓冲器以得到所述对象地址索引,其中,所述对象地址索引用于访问缓存在所述预设缓存空间中的所述对象页表项的至少部分内容。
本公开的至少一实施例提供了一种电子设备,该电子设备包括上述处理器。
本公开的至少一实施例提供了一种地址翻译方法,包括:使用要进行地址翻译的目标虚拟地址(VA)的目标虚拟页号(PageVA)的至少部分地址信息,查询翻译后备缓冲器,其中,所述翻译后备缓冲器用于创建并缓存与对象虚拟页号(PageVA)对应的对象页表项在预设缓存空间中的对象地址索引,所述预设缓存空间用于缓存所述对象页表项(PTE)的至少部分内容;响应于查询命中,获得与所述目标虚拟页号(PageVA)对应的目标地址索引;使用所述目标地址索引访问缓存在所述预设缓存空间中与所述目标虚拟页号对应的目标页表项的至少部分内容,以获得所述目标页表项;使用所述目标页表项获得与所述目标虚拟地址(VA)对应的目标物理地址。
本公开的至少一实施例提供了一种缓存页表项方法,包括:接收在所述翻译后备缓冲器记录对象页表项的请求;根据所述对象页表项对应的对象虚拟页号中的至少部分地址信息在所述翻译后备缓冲器中获得对象地址索引;基于所述对象地址索引,在预设缓存空间中存储所述对象页表项的至少部分内容。
在本公开实施例的处理器、电子设备中,使得TLB复用了与该TLB通信连接(例如在同一路径等级)的缓存的部分缓存行,因此该TLB可以使用同样的硬件资源来保存更多的地址映射信息。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种计算机系统中使用页表进行地址翻译流程的示意图;
图2A示出了一种多核处理器的架构示意图;
图2B示出了对应于图2A所示的处理器的一种缓存数据读取的流程示意图;
图3A示出了一个常规的TLB项的内容的示意图;
图3B示出了一个常规的TLB项的内容的另一个示意图;
图4示出了根据本公开实施例的一种处理器的一个示例的示意图;
图5示出了根据本公开至少一实施例的处理器的另一个示例的示意图;
图6示出了本公开至少一个实施例提供的处理器中的缓存的架构的示例性示意图;
图7示出了本公开至少一实施例中的第一级页表项缓冲器中一个数据项的内容的示意图;
图8示出了采用本公开至少一实施例提供的处理器进行数据读请求处理的示意性流程图;
图9示出了根据本公开的至少一实施例提供的处理器的示意图;
图10示出了根据本公开至少一实施例的翻译后备缓冲器(TLB)中的TLB项的内容的示意图;
图11示出了在本公开至少一实施例中一项对象PTE与对应的TLB项与缓存行之间的对应关系的示意图;
图12示出了在本公开至少一实施例中进行地址翻译时查询TLB的示意图;
图13示出了本公开一些实施例提供的一种电子设备的示意框图;
图14示出了本公开至少一实施例提供的一种电子设备的示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另作定义,此处使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在计算机操作系统处理任务时,需要将应用程序使用的虚拟地址转换为物理地址,从而基于物理地址进行内存访问,以获取数据。将虚拟地址转换为物理地址的过程被称为地址翻译(Address Translation)。
图1为一种计算机系统中使用页表进行地址翻译流程的示意图,图中示出了使用四级页表的地址翻译过程。如图1所示,该系统中的一个虚拟地址被划分为几段,例如,分别表示为EXT、OFFSET_lvl4、OFFSET_lvl3、OFFSET_lvl2、OFFSET_lvl1、OFFSET_pg。在该示例中,高位的虚拟地址段EXT没有被使用。虚拟地址段OFFSET_lvl4、OFFSET_lvl3、OFFSET_lvl2、OFFSET_lvl1分别表示四级页表的偏移值,也即是,虚拟地址段OFFSET_lvl4表示第四级页表的偏移值,虚拟地址段OFFSET_lvl3表示第三级页表的偏移值,虚拟地址段OFFSET_lvl2表示第二级页表的偏移值,虚拟地址段OFFSET_lvl1表示第一级页表的偏移值。
最高一级页表(也即第四级页表)的初始地址存放在架构寄存器REG_pt中,其内容由操作系统设定,应用程序无法更改。在第二级页表、第三级页表、第四级页表中,每一级页表的页表项中存放的是下一级页表的起始地址。第一级页表项(Page Table Entry,PTE)存放的是相应内存页的物理地址的高位,它与一项虚拟地址的虚拟地址偏移(OFFSET_pg)合并即可得到该虚拟地址对应的物理地址。由此,通过这种方式逐级获取下一级页表的起始地址,最终可以得到第一级页表项(PTE),从而进一步得到对应的物理地址,实现了从虚拟地址到物理地址的翻译。
需要说明的是,虽然图1示出了4级页表,但是本公开的实施例不限于此,可以采用任意数量的多级页表,例如2级页表、3级页表、5级页表等,还可以采用单级页表,这可以根据实际需求而定,本公开的实施例对此不作限制。例如,一个系统可能支持不同大小的内存页,每个内存页的大小由虚拟地址偏移OFFSET_pg的位数来表示,例如,每个内存页的大小可以为4K。同一个系统中,越大的内存页所需的地址翻译级数越少。需要说明的是,可以适用任何内存页大小的系统,如果系统支持多个内存页大小,不同内存页大小对应的页表级数也不一样,本公开对此不作限制。
图2A为一种多核处理器的架构示意图。例如,如图2A所示,该处理器具有4个处理器核(CPU Core)。同时,该处理器还具有多级缓存(以下也称为“缓存空间”),例如第一级缓存(L1 Cache)、第二级缓存(L2 Cache)和最后一级缓存(Last Level Cache,LLC)。在该示例中,最后一级缓存实际上是第三级缓存(L3 Cache)。当然,本公开的实施例不限于此,处理器可以具有任意数量的多级缓存,因此最后一级缓存也可以为任意等级的缓存,这可以根据实际需求而定。
例如,在该示例中,最后一级缓存是多个处理器核共享的,第二级缓存是各个处理器核私有的。也即是,多个处理器核共用一个最后一级缓存,而每个处理器核被单独提供一个专用的第二级缓存。最后一级缓存和第二级缓存用于存储指令与数据,最后一级缓存与内存连接。需要说明的是,在另一些示例中,第二级缓存也可以是共享类型的缓存,本公开的实施例对此不作限制。
例如,为每个处理器核单独设置一个专用的第一级缓存,第一级缓存设置在处理器核内部。例如,第一级缓存可以包括第一级指令缓存(L1I缓存)和第一级数据缓存(L1D缓存),分别用于缓存指令和数据。包括该处理器的电子设备(例如计算机)还包括内存,处理器核通过多级缓存与内存的数据缓存机制实现指令传递和数据读取。
上述每一级缓存可以选择设置为多种架构之一,比如全相联(FullyAssociative)、组相联(Set Associative)、直接索引(Directly Indexed)等,在使用过程中,使用最近访问的数据以填充缓存的多个项时所采用的替换策略也可以包括最近使用(Least Recently Used,LRU)、最不常使用(Least-Frequently Used,LFU)等,本公开的实施例对此不作限制。
通常的缓存空间(例如第二级缓存等)包括控制逻辑、存储器(例如静态随机存取存储器(SRAM))以及填充缓冲器(fill buffer)。控制逻辑即该缓存空间的控制模块,用于控制该缓存空间的操作,存储器用于存储被缓存的数据(包括操作数据和/或指令数据),而填充缓冲器则用于在该缓存空间被一项数据读请求查询而未命中时,暂存该数据读请求,由此对该数据读请求的执行状态进行监控。当该数据读请求针对的目标数据从下级缓存或内存被读取到该缓存空间时,则从填充缓冲器中删除该数据读请求,例如,还将读取的目标数据写入该缓存空间的存储器中,以备后续使用。
图2B示出了一种缓存数据读取的流程示意图。图2B所示的缓存数据读取流程例如对应于图2A所示的处理器。
如图2B所示,首先,当前的一个缓存空间(例如第二级缓存或最后级缓存)接收到处理器核生成的数据读请求,接着,查询该缓存空间是否有所请求的数据,如果所请求的数据在该缓存空间中命中,则从该缓存空间的存储单元(例如静态随机存取存储器)中获得所请求的数据。如果所请求的数据在该缓存空间中未命中,则将读请求写入填充缓冲器,并继续到下级缓存空间/内存中查询和读取,由此获得所请求的数据返回所请求的数据到当前缓存空间,更新该缓存空间缓存的数据/标签,并且从填充缓冲器删除之前缓存的数据读请求(由此不再监控该数据读请求)。
例如,可以为每个处理器核单独设置有翻译后备缓冲器(Translation LookasideBuffer,TLB),该设置在处理器核内的翻译后备缓冲器可以包括针对指令的翻译后备缓冲器(ITLB)和针对数据的翻译后备缓冲器(DTLB)。例如,ITLB和DTLB都设置在对应的处理器核内。地址翻译是一个非常耗时的过程,对于多级页表,通常需要多次访问内存才能获得相应的物理地址。以图1所示的4级页表为例,需要访问内存4次才能获得一个虚拟页相应的物理页的物理地址。因此,为了节省地址翻译时间,提升计算机系统性能,可以在处理器核中设置TLB(例如包括ITLB和DTLB)来存放一部分之前使用过的第一级页表项(PTE)。当需要进行地址翻译时,首先使用要翻译的虚拟地址的虚拟页号到TLB中查询是否有需要的第一级页表项,如果在TLB中查询命中,则可以立即获得所需要的第一级页表项,使用该获得的第一级页表项中的物理页的物理地址,通过要翻译的虚拟地址包括的地址偏移,就可以获得该要翻译的虚拟地址相对应的物理地址。另一方面,当在TLB中没有查询命中,那么则需要使用要翻译的虚拟地址的虚拟页号进行如上所述的页表查询(例如多级页表查询),来获得需要的第一级页表项,这时同样地,使用该获得的第一级页表项中的物理页的物理地址,通过要翻译的虚拟地址包括的地址偏移,就可以获得该要翻译的虚拟地址相对应的物理地址。
与CPU缓存架构类似,例如,TLB也可以有多种架构,比如全相联(FullyAssociative)、组相联(Set Associative)、直接索引(Directly Indexed)等。TLB架构也可以是多级结构,最低一级TLB的尺寸最小且速度最快,当最低一级TLB没有命中时,再搜索下一级TLB。填充TLB的多个项时所采用的替换策略也可以参考例如缓存中的替换策略,例如最近使用(Least Recently Used,LRU)最不常使用(Least-Frequently Used,LFU)等。
尽管TLB能够减少很多地址翻译的时延,但是,计算机系统在执行软件程序的过程中,还是避免不了在TLB查询缺失(未命中)的情况下访问页表来进行地址翻译。为了减少翻译操作所需时间,如图2A所示,通常为处理器核单独设置一个硬件页表遍历器,以用于进行页表浏览过程,该硬件页表遍历器设置在处理器核内部。通过使用硬件页表遍历器,可以遍历多级页表以获得最终的内存页物理地址。例如,该页表遍历器可以设置在处理器核内,也可以设置在处理器核外。
L1I缓存和L1D缓存使用物理地址来访问,第二级缓存、最后一级缓存、内存也使用物理地址进行访问。因此,在访问数据之前,需要先通过ITLB或DTLB进行地址翻译。在地址翻译过程中,当需要进行页表浏览时,硬件页表遍历器需要到内存中存放各级页表的地址去读取各级页表对应的数据,读取到的数据再进行地址计算,读取与各级页表相关的数据的过程与读取通常的数据的过程基本一致,也即页表项读取请求与数据读请求基本一致,硬件页表遍历器的读请求最远可以经过第一级缓存、第二级缓存、最后一级缓存到达内存。如果硬件页表遍历器请求的数据在某一级缓存中存在,则该缓存返回该数据,且不再向下级缓存/内存传递该硬件页表遍历器的请求;反之,当硬件页表遍历器请求的数据时从内存中取回时,该数据也会在至少一级内存中暂时保留(即缓存)。
图3A示出了一个常规的TLB项的内容的示意图。如图3A所示,TLB中的每一项(也称为TLB项或TLB数据项)例如对应于系统一项之前用过的第一页表项(PTE),即缓存了该PTE,每个TLB项可以包括有效位、虚拟地址位、物理地址位和属性位。有效位为有效值时表示该数据项为有效项,有效位为无效值时表示该数据项为无效项。例如,在一些示例中,有效位是1bit,其数值为1时是有效值,其数值为0时是无效值。虚拟地址位存放内存页的虚拟地址(虚拟页号)或者该地址的哈希值,物理地址位存放内存页的物理地址(物理页号),属性位存储内存页的属性及状态。TLB项的物理地址位和属性位的信息来自相应的PTE。
图3B示出了一个常规的TLB项的内容的另一个示意图。如图3B所示,该TLB中的每一项(TLB数据项)对应于一项之前用过的第一页表项(PTE),可以包括有效位(Valid)、翻译位、虚拟地址位(虚拟页,PageVA)、物理地址位(物理页,PagePA)。有效位、虚拟地址位和物理地址位的含义如上所述。
很多高性能CPU支持虚拟机模式,即一台物理机(单机或服务器)运行多个虚拟机,每个虚拟机中运行有相应的操作系统。虚拟机使用虚拟地址,在对虚拟机的系统中的虚拟地址进行翻译时,需要先将虚拟机中的虚拟地址翻译为宾客物理地址,该宾客物理地址实际上仍然是计算机系统中的虚拟地址而非真正的物理地址,之后将该宾客物理地址翻译为系统物理地址,该系统物理地址则是真正的物理地址。也即,在虚拟机模式下,每一个地址翻译需要经历宾客虚拟地址到宾客物理地址、宾客物理地址到系统物理地址的转换过程。在4级页表的架构下,一个宾客虚拟地址到系统物理地址的翻译过程最多可能访问内存24次。在虚拟机模式下,为了尽量减少地址翻译次数,因此增加了翻译位来区别系统物理地址PTE与宾客物理地址PTE。翻译位为有效值(例如为“1”)时表示提供宾客物理地址(也可以被称为中间物理地址(IPA,Intermediate Physical Address))到系统物理地址的翻译,翻译位为无效值(例如为“0”)时表示提供宾客虚拟地址直接到系统物理地址的翻译,或是表示当前系统不在虚拟机模式下。
本公开中对于计算机系统中地址以及TLB项等使用如下参数:
·SIZEisa:一个指令集(isa)的数据大小,比如对于X86-64与ARMv8架构都是64-bit指令集,那么SIZEisa就是64bit(比特)或者8B(字节)。
·SIZEpte:一个页表项(pte)的大小,往往等于对应的上述指令集的数据大小。比如对于32-bit的指令集,对应的页表项也是32bit,64-bit的X86-64/ARMv8架构等适用64-bit的指令集的情形,对应的页表项也是64bit。这些32/64-bit页表项在内存中也是32/64-bit对齐的。
·SIZEphy:一个处理器核支持的物理地址空间大小,SIZEphy一般小于SIZEisa与SIZEpte。通常PTE项中高于SIZEphy的物理地址位都为0,因此TLB项中无需保存PTE高位内容以节省硬件资源。
·SIZEcl:一个缓存行(cacheline)的大小,比如大部分处理器核使用64字节的缓存行,往往要比SIZEpte大很多,并且通常是SIZEpte的整数倍,因此一条缓存行里可以存放2的整数倍条PTE,它可以存放8条64-bit的PTE,或者16条32-bit的PTE。
·SIZEcache:一个缓存(cache)的大小可以存放2的整数倍条缓存行。
·SIZEva:是虚拟地址中用来提供多级页表偏移值的部分。比如图1中SIZEva就是OFFSET_lvl4,OFFSET_lvl3,OFFSET_lvl2,OFFSET_lvl1这四部分的长度之和。
如图3B所示的每个PTE项中,虚拟地址位(PageVA)的大小为SIZEva,而物理地址位的大小则等于[0:SIZEphy-1]。若一个64-bit指令集的处理器核有4级页表(例如图1所示),则每级页表需要9bit来做偏移,因此SIZEva=4*9=36bit,假设SIZEphy为48位,则一个TLB项的大小为1+1+36+48=86bit。
图4示出了根据本公开至少一实施例的处理器的一个示例的示意图。如图4所示,该处理器具有多个(例如以4个为例)处理器核(CPU Core),但是本公开的实施例也可以用于单核处理器。
该示例性的多核处理器具有多级缓存,例如第一级缓存、第二级缓存和最后一级缓存(LLC)。在该示例中,这里最后一级缓存是第三级缓存(L3Cache)并且与内存通信连接。在图示的情形中,最后一级缓存是多个处理器核共享的,第一级缓存和第二级缓存是各个处理器核私有的。也即是,多个处理器核共用一个最后一级缓存,而每个处理器核被单独提供一个专用的第二级缓存。最后一级缓存和第二级缓存用于存储指令与数据,最后一级缓存与内存连接。需要说明的是,在另一些示例中,第二级缓存也可以是共享类型的缓存,本公开的实施例对此不作限制。
例如,为每个处理器核单独设置一个专用的第一级缓存,第一级缓存设置在处理器核内部。例如,第一级缓存可以包括第一级指令缓存(L1I缓存)和第一级数据缓存(L1D缓存),分别用于缓存指令和数据。该处理器还可以进一步访问内存,处理器核通过多级缓存实现指令传递和数据读取。
每个处理器核包括例如单独为其提供的页表遍历器以用于进行页表浏览过程,以及包括设置在处理器核内的翻译后备缓冲(TLB),用于进行地址翻译。翻译后备缓冲可以包括针对指令的翻译后备缓冲(ITLB)和针对数据的翻译后备缓冲(DTLB)。
与图2A所示的处理器不同的是,图4所示的处理器还包括对应于第二级缓存(L2缓存)设置的核外翻译后备缓冲(L2C TLB),该L2C TLB用于在L2缓存进行本地地址翻译,而无需返回到处理器核内再使用核内TLB进行地址翻译。在该示例中,核外地址翻译模块包括该L2C TLB,并且可以通过该处理器核内的页表遍历器进行在L2缓存的本地地址翻译。
在另一个示例中,图4所示的处理器也可以进一步包括对应于第二级缓存设置的核外页表遍历器(L2C PTW,图中未示出),例如,可以通过该L2C PTW使用核外TLB进行在L2缓存的本地地址翻译,而无需返回到处理器核内再使用核内TLB进行地址翻译,例如该地址翻译方式有助于进行核外数据预取,从而降低了处理器核的工作量,提供了处理器的工作效率。在该示例的处理器中,核外地址翻译模块包括对应于L2缓存设置的L2C TLB以及L2CPTW。
在上述示例中,L2C TLB例如可以采用与核内TLB相同或不同的架构(例如全相联、组相联、直接索引等),例如,采用如图3A或3B所示的内容。由于对应于L2缓存设置,因此L2CTLB与L2缓存例如直接通信连接。
图5示出了根据本公开至少一实施例的处理器的另一个示例的示意图。如图5所示,该处理器与图2A所示的示例不同之处在于,还包括对应于最后级缓存(LLC缓存)设置的核外翻译后备缓冲(LLC TLB),该LLC TLB用于在LLC缓存进行本地地址翻译,而无需返回到处理器核内再使用核内TLB进行地址翻译。在该示例中,核外地址翻译模块包括该LLC TLB,并且可以通过该处理器核内的页表遍历器进行在LLC缓存的本地地址翻译。
在另一个示例中,图5所示的处理器也可以进一步包括对应于最后级缓存设置的核外页表遍历器(LLC PTW,图中未示出),通过该LLC PTW使用核外TLB进行在LLC缓存的本地地址翻译,而无需返回到处理器核内再使用核内TLB进行地址翻译,例如该地址翻译方式有助于进行核外数据预取,从而降低了处理器核的工作量,提供了处理器的工作效率。在该示例中,核外地址翻译模块包括对应于LLC缓存设置的LLC TLB以及LLC PTW。
在上述示例中,LLC TLB例如可以采用与核内TLB相同或不同的架构(例如全相联、组相联、直接索引等),例如,采用如图3A或3B所示的内容。由于对应于LLC缓存设置,因此与LLC缓存例如直接通信连接。
为了进行核外TLB管理,在缓存空间中增设了第一级页表项(PTE)缓冲器(或称为“PTE读请求缓冲器”(PTE request buffer))。第一级页表项缓冲器配置为存储一项第一级页表项读请求携带的信息。例如,在至少一个示例中,缓存空间包括控制逻辑、存储器(例如静态随机存取存储器)、第一级页表项缓冲器以及填充缓冲器(fill buffer)。第一级页表项缓冲器用于在查询未命中的情况下缓存第一级页表项读请求,而填充缓冲器则如上所述在查询未命中的情况下缓存通常的数据读请求。
图6示出了本公开至少一个实施例提供的处理器中的缓存的架构的示例性示意图。该处理器例如是图4或图5所示的处理器。
如图6所示,该处理器包括依序通信连接形成通信链路的上级缓存空间601、当前缓存空间602、下级缓存空间/内存603,同样地,当前缓存空间602是当前要描述的缓存空间。例如,上级缓存空间601是指当前缓存空间602上级的缓存空间,例如,在当前缓存空间为第二级缓存空间的情形,则上级缓存空间为第一级缓存空间,在当前缓存空间为第三级缓存空间(或者LLC缓存)的情形,则上级缓存空间为第二级缓存空间。下级缓存空间603是指当前缓存空间602下级的缓存空间,在当前缓存空间为第二级缓存空间的情形,则下级缓存空间为第三级缓存空间(或前述的LLC)。第一翻译后备缓冲器604与当前缓存空间602通信连接,设置在同一路径等级。
当前缓存空间602中包括控制逻辑605、存储器(例如静态随机存取存储器)606、第一级页表项缓冲器607以及填充缓冲器(fill buffer)608。静态随机存取存储器606作为存储器的示例,用于保存缓存的数据与标签。控制逻辑605用于控制当前缓存空间602的操作。控制逻辑605的操作包括在接收到一项数据读请求时,比较数据读请求与当前所缓存的各个缓存行的标签,以决定所请求的数据是否在缓存中。如果所请求的数据在缓存中,则返回相应的数据,如果查询所请求的数据未命中缓存(即不在缓存中),则将该数据读请求填入填充缓冲器608中,例如,填充缓冲器608将数据读请求传递给下级缓存空间/内存603,并等待请求的数据的返回。同样地,控制逻辑605在接收到一项第一级页表项读请求时,如果所请求的第一级页表项数据在缓存中,则返回相应的数据,如果查询所请求的第一级页表项数据未命中缓存,则将该第一级页表项读请求填入第一级页表项缓冲器607中,保存该第一级页表项读请求携带的信息,第一级页表项缓冲器607将该第一级页表项读请求传递给下级缓存空间/内存603,并等待请求的第一级页表项数据的返回。
例如,当处理器核需要进行地址翻译时,首先到翻译后备缓冲器(例如,核内TLB或核外TLB)查询是否有需要的PTE,如果未命中,则需要进行页表浏览,由此处理器中的页表遍历器会生成第一级页表项读请求(PTE读请求),并且将该第一级页表项读请求依次到各级缓存直至内存进行数据读取,因此在多级缓存结构中将该第一级页表项读请求依次向下传递。当作为描述对象的目标预设缓存空间接收到该第一级页表项读请求时,那么会到该目标预设缓存空间中的存储器(如后面详细描述的)中查询是否有需要的PTE,如果命中,则返回查询得到的PTE,如果未命中,则页表遍历器会到目标预设缓存空间的下级缓存空间或内存中继续进行查询,以便尝试得到PTE。
例如,第一级页表项读请求包括对应的内存页的虚拟地址,在一些示例中,第一级页表项读请求还包括翻译位。对应的内存页的虚拟地址为需要进行翻译的虚拟地址中的虚拟页号。例如,内存页大小为X=2Y字节(例如4096=212),且内存页总是X字节对齐的,因此内存页的物理地址和虚拟地址的低Y位内容总为0,所以内存页的虚拟地址可以不保存地址的低Y位以节省硬件资源。例如,通常虚拟页和物理页为4K,又或者32K等。
图7示出了本公开至少一实施例中的第一级页表项缓冲器中一个数据项的内容的示意图。
如图7所示,例如,第一级页表项缓冲器中每一数据项用于存储一项第一级页表项读请求携带的信息,例如,存储被请求的第一级页表项的信息,这些信息的内容包括对应于被请求的第一级页表项的有效位、翻译位、内存页的虚拟地址和PTE本身的物理地址。有效位为有效值(例如为“1”)时表示该数据项为有效项,有效位为无效值(例如为“0”)时表示该数据项为无效项。翻译位为有效值(例如为“1”)时表示该数据项用于提供宾客物理地址到系统物理地址的翻译,翻译位为无效值(例如为“0”)时表示该数据项用于提供宾客虚拟地址到系统物理地址的翻译,或者表示不在虚拟机模式下。对于一个系统而言,缓存中保存的以及缓存间传递的数据的大小都是固定的,例如64字节。一个第一级页表项数据往往小于一个缓存行的大小,仅占用所在的缓存行的一部分。因此,被缓存的第一级页表项的物理地址需要有足够多位以从读取的缓存行中获得正确的第一级页表项数据。
例如,在一个示例中,PTE本身的物理地址包括缓存行地址和缓存行偏移值,缓存行地址用于与对应于第一级页表项读请求的返回的数据的地址进行比较以确定数据是否包括第一级页表项数据,缓存行偏移值表示相应的第一级页表项数据在缓存行中的偏移值。
又例如,该PTE本身的物理地址可以是系统中常规的物理地址,例如包括物理页号以及页内偏移等,这里不再详述。
缓存内的第一级页表项缓冲器的大小可以根据实际需求而决定。如果第一级页表项缓冲器不是很大,则会出现来了新的第一级页表项读请求而第一级页表项缓冲器已满的情况。为了避免这种情况的发生,缓存需要通过令牌(Token)等机制通知处理器核或上级缓存暂停发送新的第一级页表项读请求。令牌技术是已知的方法,可以参考通常设计,在此不再赘述。
图8为采用本公开至少一实施例提供的处理器进行数据读请求处理的示意性流程图。下面结合图6和图7所示的缓存空间的设置对本公开实施例提供的数据读请求处理方法进行说明。
如图8所示,首先,当前缓存空间602接收到例如处理器核生成的数据读请求。接着,判断该数据读请求是否命中当前缓存空间602。
响应于该数据读请求命中当前缓存空间602,从该当前缓存空间的存储器606中获得相应的数据。接着判断该数据读请求是否是PTE读请求,响应于该数据读请求是PTE读请求,将根据该PTE读请求获得的数据(即PTE)写入第一翻译后备缓冲器604中,以备后续地址翻译时使用并将所请求的数据返回给上级缓存空间601。响应于该数据读请求不是PTE读请求,则直接将所请求的数据返回给上级缓存空间601。
响应于该数据读请求未命中当前缓存空间602,将数据读请求写入当前缓存空间的填充缓冲器608中,接着判断该数据读请求是否是PTE读请求。响应于该数据读请求是PTE读请求,将该PTE读请求写入PTE缓冲器607中,然后,从下级缓存空间/内存603获得所请求的数据。或者,响应于该数据读请求不是PTE请求,则直接从下级缓存空间/内存603获得所请求的数据。接着,上述两种情形中,对于从下级缓存空间/内存603获得的所请求的数据,都需要利用获得的所请求的数据更新当前缓存空间的存储器606中缓存的数据/标签以供后续使用。
接着,将获得的所请求的数据的物理地址会与PTE缓冲器607中的有效项的物理地址进行比较,如果相等,则表示所请求的数据是PTE数据,那么从所请求的数据中提取出所请求的PTE,从PTE缓冲器607中删除匹配的数据项,将该获得的所请求的PTE写入第一翻译后备缓冲器(604)中以供后续使用,并返回所请求的数据(即PTE)给上级缓存空间601。如果所请求的数据的地址与PTE缓冲器(607)中的有效项的物理地址不相等,则表示所请求的数据不是PTE数据,那么按照普通数据的方式处理,即直接向上级缓存空间601返回所请求的数据。
如上参考图3B所述的情形,一个TLB项的大小为1+1+36+48=86bit,而TLB通常容量相对较小(例如小于L1缓存,更远远小于L2缓存或LLC缓存等),因此这导致TLB能存储的TLB的项数有限。在实践中,根据统计数据,一个处理器核往往在L2C/LLC中缓存页表遍历时将用到页表项(PTE)的内容。因此,即使一个L2C/LLC不缓存页表项数据,由于这些缓存比第一级缓存大很多,因此可以修改它们的缓存策略以缓存TLB项中的PTE的至少部分内容,而不至于对处理器核的性能造成显著影响。将TLB项对应的PTE的至少部分内容缓存在与TLB在同一路径等级的缓存中,在例如L1的核内缓存中,可以缓存用于核内TLB的PTE,而在例如L2C/LLC的核外缓存中,可以缓存用于核外TLB的PTE,这样这些TLB就可以不用完整地缓存这些页表项,例如可以节省TLB一半以上的硬件资源,或者说,变相地增加了TLB的容量,即TLB复用了与该TLB通信连接(例如在同一路径等级)的缓存的部分缓存行,可以使用同样的硬件资源来保存更多的地址映射信息。
并且,采用本公开实施例的上述存储用于TLB项的PTE的方式,无需修改例如图8所示的处理器核内对数据读请求进行处理的流程。
根据本公开的至少一实施例提供了一种处理器,图9给出了该处理器的示意图;如图9所示,该处理器100包括翻译后备缓冲器(TLB)102和预设缓存空间101。该翻译后备缓冲器102与预设缓存空间101通信连接,预设缓存空间101配置为缓存用于翻译后备缓冲器且与对象虚拟页号对应的对象页表项(PTE)的至少部分内容,翻译后备缓冲器102配置为创建并缓存对象页表项在预设缓存空间中的对象地址索引,并且允许通过使用对象虚拟页号的至少部分地址信息查询翻译后备缓冲器以得到对象地址索引,其中,对象地址索引用于访问缓存在预设缓存空间中的对象页表项的至少部分内容。
这里,“预设缓存空间”用于指代当前被讨论的缓存空间,其可以是任一级缓存空间,例如第一级缓存、第二级缓存、……、最后一级缓存等。该翻译后备缓冲器与预设缓存空间通信连接,例如,二者设置在同一路径等级。例如根据预设缓存空间的类型,可以为核内TLB或核外TLB,对于核外TLB的情形,可以为L2C TLB(如图4所示)或LLC TLB(如图5所示)。
“对象页表项”用于指代当前被讨论任一项PTE。对于一个对象页表项,一方面,它被实际缓存在预设缓存空间中的对象缓存行中,另一方面,相对应地,在翻译后备缓冲器中缓存对应的TLB数据项(也简称TLB项),该对应的TLB项包括对应的对象地址索引,该对象地址索引指向存储在预设缓存空间中的该对象页表项等。
在本公开中,“在同一路径等级”是指在处理器中的物理位置相邻或相近,可以直接进行数据交互和传递,例如,第二级缓存(L2缓存)与L2C TLB设置在同一路径等级,最后级缓存(LLC缓存)与LLC TLB设置在同一路径等级;“通信连接”是指可以直接传输数据/指令。
图10示出了根据本公开至少一实施例的翻译后备缓冲器(TLB)中的TLB项的内容的示意图,图中所示的缓存具有组相联映射架构,包括多个(S个)组(set)和多个(W个)路(way),本公开对于组相联映射架构的缓存的本身操作不再赘述。与图3B所示的TLB项不同,如图10所示的TLB中的每一项(TLB数据项)对应于一项之前用过的第一页表项(PTE),可以包括有效位(Valid)、查询键值、缓存行索引。此外,在另一个实施例中,根据需要TLB项还可以包括翻译位。并且,图10中N和M的含义如下:
· N:缓存空间中一条缓存行里存放的PTE的个数的对数,定义为N=log(SIZEcl/SIZEpte),其中,log()是以2为底的对数,比如
log(23)=3。
·M:对象缓存空间中缓存行条数的对数,定义为M=log(SIZEcache
/SIZEcl),同样地,log()是以2为底的对数,比如log(213)=13。其中,SIZEcl、SIZEpte和SIZEcache等的含义如前所述。
同样地,在每个TLB中,当有效位为有效值时表示该数据项为有效项,有效位为无效值时表示该数据项为无效项。例如,在一些示例中,有效位是1bit,其数值为1时是有效值,其数值为0时是无效值。翻译位为有效值(例如为“1”)时表示提供宾客物理地址(也可以被称为中间物理地址(IPA,Intermediate Physical Address))到系统物理地址的翻译,翻译位为无效值(例如为“0”)时表示提供宾客虚拟地址直接到系统物理地址的翻译,或是表示当前系统不在虚拟机模式下。
每个TLB项具有唯一的查询键值(PageVAcl),用于在TLB中查询、定位该TLB项。该查询键值与TLB项是一一对应的,因此,不同的TLB项具有不同的查询键值,不同的查询键值对应不同的TLB项。该查询键值例如根据创建该TLB项的PTE产生,例如,使用该PTE的虚拟页号SIZEva的高位地址部分,所选择的高位部分的大小则可以根据每个缓存行可以存储的PTE的数量决定,例如根据上述参数“N”的值,每个缓存行可以存储的PTE的数量为共2N-1个,那么该查询键值可以有SIZEva-N位。
每个TLB项的缓存行索引(IDXcl)用于指示该TLB项所对应的一个或多个PTE(的至少部分内容)保存在预设缓存空间中的哪个缓存行,其大小可以根据预设缓存空间中缓存行条数决定,预设缓存空间中缓存行条数为共2M-1个,例如根据上述参数“M”的值,大小可以有M位,可以分别表示编号为20~2M-1的缓存行。如上所述,每个缓存行可以存储多个PTE,因此该TLB项所对应的PTE在预设缓存空间中的相应缓存行中的位置,即偏移值,则可以由该PTE的虚拟页号的低地址部分确定,例如虚拟页号SIZEva的低N位确定,该N位用分别表示序号为20~2N-1的偏移位置。
例如,对于图10所示的本公开的实施例,优化后的TLB项的大小相对于例如图3B所示的TLB项的大小可以得到减小,甚至是显著减小。在图10所示的实施例中,假设一个64-bit指令集的处理器核有4级页表,每级需要9bit来做偏移,用来缓存PTE的缓存的大小为512KB,每个缓存行的大小为64B,在这种情形下,N=3,M=log(512*1024/64)=13,所以优化后的TLB项大小为1+1+36-3+13=48bit,这个大小远小于图3B所示的未优化的核外TLB大小(即86bits),并且优化后的每个TLB项对应多个连续的PTE项,而图3B所示的未优化的TLB项只对应一项PTE。
另一方面,对于存储TLB项对应的PTE的至少部分内容(例如物理地址位信息)所在的缓存行的分配、替换、删除例如可以由相应的TLB来控制,而不由对应的缓存空间来控制,对此有多种实现方式,例如如下的方案:
(1)例如,当一个TLB项第一次被使用时,TLB将请求相应缓存分配一条缓存行,该缓存会从所具有的2M-1个缓存行中挑选一个空闲的缓存行与该TLB项匹配,并该缓存行的编号(M位的二进制数)作为缓存行索引(IDXcl)写入该TLB项中。
(2),例如,在具有多个路(Multi-way)的缓存中,例如组相联映射架构的缓存中,可以选择其中一路专门用于保存PTE的缓存行,而同一组(Set)中其他路则用于保存其他类型的数据的缓存行。
(3),例如,在处理器启动时,就给TLB中的每一条(可能的)TLB项固定分配/保留一条缓存行,彼此一一对应,这样虽然处理器启动时,TLB还没有填充实际的任何TLB项,但是在对应的缓存中已经预留了与最大TLB项数对应的缓存行,用于这些可能的TLB项。例如,翻译后备缓冲器包括P个可用的数据项,对应的缓存空间进一步配置为选择固定的P个缓存行分别用于翻译后备缓冲器的P个可用的数据项,以用于缓存页表项,P为正整数。因此,对于TLB中每个TLB项都有固定的IDXcl,而这些预留的缓存行也不会被释放或分配给缓存其他类型的数据使用。
例如,当TLB中某个TLB项被清空时,则TLB可以通知缓存释放该TLB项对应的缓存行,以供缓存在后续使用。
此外,上述复用于存储TLB项的PTE的至少部分内容的缓存的替换策略也可以相应地改动。例如,缓存在进行缓存行替换时跳过复用于存储TLB项的PTE的至少部分内容的缓存行或跳过复用于存储TLB项的PTE的至少部分内容的路(way),即跳过被TLB项占用的缓存行或路;例如,将TLB项对应的PTE数据和常规的数据分开进行考虑,例如,在存储TLB项的PTE的至少部分内容的多个缓存行之间进行替换,在存储常规的数据的多个缓存行之间进行替换。
在本公开的至少一个实施例中,对于PTE数据与通常的数据(例如业务数据或指令数据)混合缓存的情形,例如上述方案(1)和(2),缓存需要知道哪条缓存行已经被TLB项复用,因此在该缓存中,对于复用于存储TLB项的PTE的至少部分内容的缓存行增加标识,例如可以对于缓存行的标签(tag)部分中增加1位(bit)作为标识位,以表示上述信息;例如,该一个缓存行对应的标签中的上述标识位为1时,表示该缓存行专门用于存储PTE数据,而为0时,则表示该缓存行用于存储其他通常的数据。
图11示出了在本公开的至少一实施例中一项对象PTE与对应的TLB项与缓存行之间的对应关系,同样地,图中所示的缓存具有组相联映射架构,包括多个(S个)组(set)和多个(W个)路(way)。在如图4或图5所示的示例中,一项对象页表项(PTE)本身包括:有效位(Valid)、翻译位(Nested)、虚拟页号(PageVA)和物理页号(PagePA)。虚拟页号(PageVA)被拆分为包括高位地址部分的第一子地址信息(即PageVAcl)和包括低位地址部分的第二子地址信息(即CLpte)。第一子地址信息PageVAcl表示该对象PTE对应的TLB项的查询健值,被保存在TLB中;物理页号(PagePA)被保存在对应的缓存行中,而且在对应的缓存行中的具体存储位置(序号或偏移值)则由第二子地址信息CLpte确定。第二子地址信息CLpte为整数,步长则为PTE中物理页号(PagePA)的大小,即上述参数SIZEphy。
因此,在本公开的实施例中,被TLB保存/操作的一个对象PTE项不再全部存储在该TLB的一个TLB项中,而是至少部分被存储在对应的缓存中,例如,被拆分为两部分,一部分存储在对应的TLB项中并用作查询键值,另一部分存储在预设缓存空间的对象缓存行中,查询键值和对象缓存行这二者通过TLB项中的缓存行索引(IDXcl)彼此关联。又例如在不使用PTE本身的部分内容作为查询键值的情形,则该对象PTE项的全部内容也可以都存储在预设缓存空间中,查询键值可以其他方式得到,只要查询键值与TLB项之间具有一一对应关系,同样地,查询键值和对象缓存行这二者通过TLB项中的缓存行索引(IDXcl)彼此关联。例如,缓存行索引(IDXcl)则可以通过如上所述任一可行的方案确定。
而且,由上可知道,同一个查询键值PageVAcl可以对应存储在同一缓存行中的多个连续的PTE,也即多个具有相同的虚拟页号的高位地址部分PageVAcl的PTE共享同一个TLB项。
参考图11所示,例如,当需要将一项目标PTE填入到TLB(例如L2C TLB或LLC TLB)中时,首先使用该目标PTE包括的虚拟页号(PageVA)中的高位地址部分PageVAcl查询该TLB是否已经存在使用该高位地址部分PageVAcl作为查询键值的TLB项,如果已经存在,那么可以直接获得该TLB项中的缓存行索引(IDXcl),再使用该缓存行索引(IDXcl)到对应的预设缓存中找到相应的缓存行,并且可以使用虚拟页号(PageVA)中的低位地址部分CLpte作为偏移值,找到用于该目标PTE的存储位置,存储该目标PTE。如果在该TLB中并不存在使用该高位地址部分PageVAcl作为查询键值的TLB项,那么TLB创建一个新的TLB项用于该目标PTE,并且将该新的TLB项中的查询键值设置为虚拟页号(PageVA)中的该高位地址部分PageVAcl,并且通过上述可行的方案之一获取缓存行索引(IDXcl),然后使用该缓存行索引(IDXcl)到缓存中找到相应的缓存行,并且可以使用虚拟页号(PageVA)中的低位地址部分CLpte作为偏移值找到用于该目标PTE的存储位置,存储该目标PTE。
图12示出了在本公开至少一实施例中进行地址翻译时查询TLB的示意图。
例如,当进行地址翻译时,处理器核首先获取一个需要进行地址翻译的目标虚拟地址,该目标虚拟地址包括:EXT、虚拟页号(PageVA)和页内偏移值(PageOffset)。其中,EXT表示该虚拟地址没有使用的高位地址部分。然后使用该虚拟页号(PageVA)查询TLB,以确定系统是否已经缓存了对应于该虚拟页号的PTE。对此,首先将虚拟页号(PageVA)分解为作为查询键值的高位地址部分PageVAcl和作为缓存行内的偏移值的低位地址部分CLpte。使用高位地址部分PageVAcl查询TLB是否已经存在使用该高位地址部分PageVAcl作为查询键值的TLB项,如果已经存在,那么可以直接获得该TLB项中的缓存行索引(IDXcl),使用该缓存行索引(IDXcl)到缓存中找到相应的缓存行,使用低位地址部分CLpte作为偏移值找到用于该目标PTE的存储位置,读取该目标PTE包括的物理地址位(即物理页号对应的物理地址)部分,使用该物理页号对应的物理地址与页内偏移值(PageOffset)相加就可以得到要翻译的虚拟地址对应的物理地址,将获得的物理地址返回给处理器核。
如果TLB并不存在使用该高位地址部分PageVAcl作为查询键值的TLB项,则TLB查询结束,也即TLB中尚未缓存与该目标虚拟地址对应的目标PTE。此时,处理器核需要进行页表遍历,以从多级缓存或内存中读取与该虚拟地址对应的PTE。因此,例如,处理器核产生PTE读请求,然后采用图8所示的流程进行PTE读取。并且,在该流程中,当获得了目标PTE之后,可以参考上述流程将该目标PTE填入到TLB中以供后续可能的使用。
参考图10-图12,下面对在本公开上述实施例的处理器的一些示例,进行说明。
例如,在本公开上述实施例的处理器示例中,预设缓存空间以缓存行为单位进行缓存,每个缓存行的大小大于至少一个系统页表项包括的物理地址位部分的大小,该翻译后备缓冲器进一步配置为,对于预设缓存空间中用于缓存对象页表项的对象缓存行,获取对象地址索引(IDXcl),预设缓存空间进一步配置为,允许使用通过查询翻译后备缓冲器得到的对象地址索引访问对象缓存行,并在对象缓存行中读取对象页表项的至少部分内容。
这里,“系统页表项”指代该处理器中对于一个PTE的一般性规定,而非指某个特定的PTE。
例如,在本公开上述实施例的处理器示例中,翻译后备缓冲器包括多个TLB数据项,每一数据项包括查询键值(例如PageVAcl)以及包括与查询键值对应的缓存行在预设缓存空间中的地址索引(IDXcl),翻译后备缓冲器进一步配置为使用对象虚拟页号中至少部分地址信息得到用于对象页表项的查询键值,以得到对应于对象页表项的对象数据项,并将对象页表项的查询键值与对象地址索引相关联。
例如,在本公开上述实施例的处理器示例中,对象虚拟页号包括第一子地址信息(PageVAcl)和第二子地址信息(CLpte),第一子地址信息用于得到对象页表项的查询键值,第二子地址信息用于表示对象页表项在对象缓存行中的偏移值。
例如,在本公开上述实施例的处理器示例中,对象缓存行可用于存储N个连续排列的系统页表项,N为大于等于2的整数;偏移值表示对象页表项在对象缓存行中的序号。
例如,在本公开上述实施例的处理器示例中,翻译后备缓冲器中每一数据项还包括有效位,有效位为有效值时表示相应的数据项为有效项,有效位为无效值时表示相应的数据项为无效项。
例如,在本公开上述实施例的处理器示例中,翻译后备缓冲器中每一数据项还包括翻译位,翻译位为有效值时表示相应的数据项用于在虚拟机模式下提供从宾客物理地址到系统物理地址的地址翻译,翻译位为无效值时表示相应的数据项用于在虚拟机模式下提供从宾客虚拟地址到系统物理地址的地址翻译,或者用于在非虚拟机模式提供从系统虚拟地址到系统物理地址的地址翻译。
例如,在本公开上述实施例的处理器示例中,预设缓存空间为组相联映射架构且具有多路,且进一步被配置为选择多路中至少一路以专门用于缓存系统页表项;或者翻译后备缓冲器包括P个可用的数据项,预设缓存空间进一步配置为选择固定的P个缓存行分别用于翻译后备缓冲器的P个可用的数据项,以用于缓存系统页表项,P为正整数。
例如,在本公开上述实施例的处理器示例中,预设缓存空间进一步配置为对于用于缓存系统页表项的缓存行增加标识。
例如,在本公开上述实施例的处理器示例中,预设缓存空间进一步配置为,响应于翻译后备缓冲器创建对象数据项,为对应于对象数据项选择对象缓存行,以缓存对象页表项,或者,响应于翻译后备缓冲器删除对象数据项,释放对象缓存行。
例如,在本公开上述实施例的处理器示例中,预设缓存空间在进行缓存行替换时跳过用于缓存系统页表项的缓存行或跳过用于缓存系统页表项的路。
例如,在本公开上述实施例的处理器示例中,翻译后备缓冲器进一步配置为管理预设缓存空间中缓存的对象页表项。
例如,本公开上述实施例的处理器还可以包括处理器核和设置在处理器核外的至少一级缓存空间,其中,处理器核和至少一级缓存空间依序通信连接以形成通信链路,处理器核包括预设缓存空间,或者至少一级缓存空间包括预设缓存空间。
例如,在本公开上述实施例的处理器示例中,翻译后备缓冲器与预设缓存空间设置在同一路径等级。
例如,在本公开上述实施例的处理器示例中,至少一级缓存空间包括第二级缓存空间至最后级缓存空间,最后级缓存空间距离系统内存最近且距离处理器核最远,第二级缓存空间至最后级缓存空间中的任一级缓存空间之一作为预设缓存空间。
例如,本公开上述实施例的处理器还可以包括页表遍历器,其中,页表遍历器配置为查询翻译后备缓冲器,以查询对象虚拟页号所对应的对象页表项是否记录在翻译后备缓冲器中且缓存在预设缓存空间中。
例如,在本公开上述实施例的处理器示例中,页表遍历器配置为与翻译后备缓冲器设置在同一路径等级。
对应于上述实施例的处理器,本公开的至少一实施例还提供了一种地址翻译方法,该方法包括:
使用要进行地址翻译的目标虚拟地址(VA)的目标虚拟页号(PageVA)的至少部分地址信息,查询翻译后备缓冲器,其中,翻译后备缓冲器用于创建并缓存与对象虚拟页号(PageVA)对应的对象页表项在预设缓存空间中的对象地址索引,预设缓存空间用于缓存对象页表项(PTE)的至少部分内容,
响应于查询命中,获得与目标虚拟页号(PageVA)对应的目标地址索引,
使用目标地址索引访问缓存在预设缓存空间中与目标虚拟页号对应的目标页表项的至少部分内容,以获得所述目标页表项,以及
使用目标页表项获得与目标虚拟地址(VA)对应的目标物理地址。
在上述方法实施例中,“目标虚拟地址”指代当前需要被翻译的虚拟地址,与之对应地具有目标虚拟页号、目标页表项、目标地址索引、目标物理地址等;另一方面,“对象页表项”则是TLB的处理对象,而非特指某一PTE,与之对应地还有对象虚拟页号、对象地址索引等。。
例如,在根据本公开实施例的地址翻译方法中,目标虚拟页号包括第一子地址信息(PageVAcl)和第二子地址信息(CLpte)。相应地,使用要进行地址翻译的目标虚拟地址(VA)的目标虚拟页号(PageVA)的至少部分地址信息,查询翻译后备缓冲器,包括:使用第一子地址信息在翻译后备缓冲器中查询翻译后备缓冲器的数据项。使用目标地址索引访问缓存在预设缓存空间中与目标虚拟页号对应的目标页表项的至少部分内容,以获得所述目标页表项,包括:使用目标地址索引得到目标页表项所在的目标缓存行,使用第二子地址信息作为偏移值,在目标缓存行中得到目标页表项。
对应于上述实施例的处理器,本公开的至少一实施例还提供了一种缓存页表项方法,该方法包括:
接收在翻译后备缓冲器记录对象页表项的请求;
根据对象页表项对应的对象虚拟页号中的至少部分地址信息在翻译后备缓冲器中获得对象地址索引;
基于对象地址索引,在预设缓存空间中存储对象页表项的至少部分内容。
同样地,该方法的实施例中,“对象页表项”则是TLB的处理对象,而非特指某一PTE,与之对应地还有对象虚拟页号、对象地址索引等。
例如,在根据本公开实施例的缓存页表项方法中,对象虚拟页号包括第一子地址信息(PageVAcl)和第二子地址信息(CLpte);相应地,根据对象页表项对应的对象虚拟页号中的至少部分地址信息在翻译后备缓冲器中获得对象地址索引,包括:响应于使用第一子地址信息在翻译后备缓冲器中查询并命中翻译后备缓冲器的数据项,获得对象地址索引,或者响应于使用第一子地址信息在翻译后备缓冲器中查询并未命中翻译后备缓冲器的数据项,创建对应于对象页表项的对象数据项,获得对应于对象数据项的对象地址索引,并将对象地址索引写入对象数据项;基于对象地址索引,在预设缓存空间中存储对象页表项的至少部分内容,包括:使用对象地址索引得到对象页表项所在的对象缓存行,使用第二子地址信息作为偏移值,在对象缓存行中定位用于对象页表项的存储地址。
例如,在根据本公开实施例的缓存页表项方法中,所述获得对应于所述对象数据项的所述对象地址索引,包括:在所述预设缓存空间选择用于所述对象数据项的对象缓存行,根据所述对象缓存行生成所述对象地址索引。
例如,在根据本公开实施例的缓存页表项方法中,预设缓存空间为组相联映射架构且具有多路;对应地,在预设缓存空间选择用于对象数据项的对象缓存行,包括:使用多路中专门用于缓存系统页表项的至少一路来选择用于对象数据项的对象缓存行。
例如,在根据本公开实施例的缓存页表项方法中,翻译后备缓冲器包括P个可用的数据项,预设缓存空间设置有固定的P个缓存行分别用于翻译后备缓冲器的P个可用的数据项,P为正整数;相应地,在预设缓存空间选择用于对象数据项的对象缓存行,包括:在固定的P个缓存行中选择用于对应于对象数据项的对象缓存行。
例如,根据本公开实施例的缓存页表项方法还可以包括:接收在翻译后备缓冲器清除对象页表项的请求;根据对象地址索引在预设缓存空间中删除对象页表项。
例如,根据本公开实施例的缓存页表项方法还可以包括:响应于确定在翻译后备缓冲器清除对象数据项,根据对象地址索引在预设缓存空间中释放对象缓存行。
本公开至少一个实施例还提供一种电子设备,该电子设备包括本公开至少一个实施例提供的处理器。
图13为本公开一些实施例提供的一种电子设备1300的示意框图。如图13所示,该电子设备1300包括处理器1310。处理器1310例如为本公开任一实施例提供的处理器,该处理器可以执行上文所述的数据处理方法中的一个或多个步骤。
例如,处理器1310可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86、ARM、RISC-V架构等。处理器1310可以为通用处理器或专用处理器,可以控制电子设备1300中的其它组件以执行期望的功能。
图14为本公开至少一个实施例提供的一种电子设备的示意框图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图14示出的电子设备1400仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
例如,如图14所示,在一些示例中,电子设备1400包括处理装置(例如中央处理器、图形处理器等)1401,该处理装置可以包括上述任一实施例的数据处理装置,其可以根据存储在只读存储器(ROM)1402中的程序或者从存储装置1408加载到随机访问存储器(RAM)1403中的程序而执行各种适当的动作和处理。在RAM 1403中,还存储有计算机系统操作所需的各种程序和数据。处理器1401、ROM 1402以及RAM 1403通过总线1404被此相连。输入/输出(I/O)接口1405也连接至总线1404。
例如,以下部件可以连接至I/O接口1405:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1406;包括诸如液晶显示器(LCD)、扬声器、振动器等的输出装置1407;包括例如磁带、硬盘等的存储装置1408;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡的通信装置1409。通信装置1409可以允许电子设备1400与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至I/O接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储装置1408。虽然图7示出了包括各种装置的电子设备1400,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
例如,该电子设备1400还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置1409可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
例如,电子设备1400可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。
需要说明的是,本公开的至少一实施例中,电子设备1300/1400的具体功能和技术效果可以参考上文中关于处理器及数据处理方法的描述,此处不再赘述。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。
Claims (27)
1.一种处理器,包括翻译后备缓冲器和预设缓存空间,
其中,所述翻译后备缓冲器与所述预设缓存空间通信连接,
所述预设缓存空间配置为缓存用于所述翻译后备缓冲器且与对象虚拟页号对应的对象页表项的至少部分内容,
所述翻译后备缓冲器配置为创建并缓存所述对象页表项在所述预设缓存空间中的对象地址索引,并且允许通过使用所述对象虚拟页号的至少部分地址信息查询所述翻译后备缓冲器以得到所述对象地址索引,
其中,所述对象地址索引用于访问缓存在所述预设缓存空间中的所述对象页表项的至少部分内容。
2.根据权利要求1的处理器,其中,所述预设缓存空间以缓存行为单位进行缓存,每个缓存行的大小大于至少一个系统页表项包括的物理地址位部分的大小,
所述翻译后备缓冲器进一步配置为,对于所述预设缓存空间中用于缓存所述对象页表项的对象缓存行,获取所述对象地址索引,
所述预设缓存空间进一步配置为,允许使用通过查询所述翻译后备缓冲器得到的所述对象地址索引访问所述对象缓存行,并在所述对象缓存行中读取所述对象页表项的至少部分内容。
3.根据权利要求2的处理器,其中,所述翻译后备缓冲器包括多个数据项,每一所述数据项包括查询键值以及包括与所述查询键值对应的缓存行在所述预设缓存空间中的地址索引,
所述翻译后备缓冲器进一步配置为使用所述对象虚拟页号中至少部分地址信息得到用于所述对象页表项的查询键值,得到对应于所述对象页表项的对象数据项,并将所述对象页表项的查询键值与所述对象地址索引相关联。
4.根据权利要求3的处理器,其中,所述对象虚拟页号包括第一子地址信息和第二子地址信息,
所述第一子地址信息用于得到所述对象页表项的查询键值,所述第二子地址信息用于表示所述对象页表项在所述对象缓存行中的偏移值。
5.根据权利要求4的处理器,其中,所述对象缓存行可用于存储N个连续排列的所述系统页表项,N为大于等于2的整数;
所述偏移值表示所述对象页表项在所述对象缓存行中的序号。
6.根据权利要求3的处理器,其中,所述翻译后备缓冲器中每一数据项还包括有效位,
所述有效位为有效值时表示相应的数据项为有效项,所述有效位为无效值时表示所述相应的数据项为无效项。
7.根据权利要求3或6的处理器,其中,所述翻译后备缓冲器中每一数据项还包括翻译位,
所述翻译位为有效值时表示相应的数据项用于在虚拟机模式下提供从宾客物理地址到系统物理地址的地址翻译,
所述翻译位为无效值时表示所述相应的数据项用于在所述虚拟机模式下提供从宾客虚拟地址到所述系统物理地址的地址翻译,或者用于在非虚拟机模式提供从系统虚拟地址到所述系统物理地址的地址翻译。
8.根据权利要求3的处理器,其中,所述预设缓存空间为组相联映射架构且具有多路,且进一步被配置为选择所述多路中至少一路以专门用于缓存所述系统页表项;或者
所述翻译后备缓冲器包括P个可用的数据项,所述预设缓存空间进一步配置为选择固定的P个缓存行分别用于所述翻译后备缓冲器的P个可用的数据项,以用于缓存所述系统页表项,P为正整数。
9.根据权利要求8的处理器,其中,所述预设缓存空间进一步配置为对于用于缓存所述系统页表项的缓存行增加标识。
10.根据权利要求3的处理器,其中,所述预设缓存空间进一步配置为,响应于所述翻译后备缓冲器创建所述对象数据项,为对应于所述对象数据项选择所述对象缓存行,以缓存所述对象页表项,或者,响应于所述翻译后备缓冲器删除所述对象数据项,释放所述对象缓存行。
11.根据权利要求8-10任一的处理器,其中,所述预设缓存空间在进行缓存行替换时跳过用于缓存所述系统页表项的缓存行或跳过用于缓存所述系统页表项的路。
12.根据权利要求2-10任一的处理器,其中,所述翻译后备缓冲器进一步配置为管理所述预设缓存空间中缓存的所述对象页表项。
13.根据权利要求1-10任一的处理器,还包括处理器核和设置在所述处理器核外的至少一级缓存空间,
其中,所述处理器核和所述至少一级缓存空间依序通信连接以形成通信链路,
所述处理器核包括所述预设缓存空间,或者所述至少一级缓存空间包括所述预设缓存空间。
14.根据权利要求13的处理器,其中,所述翻译后备缓冲器与所述预设缓存空间设置在同一路径等级。
15.根据权利要求13的处理器,其中,所述至少一级缓存空间包括第二级缓存空间至最后级缓存空间,
所述最后级缓存空间距离系统内存最近且距离所述处理器核最远,
所述第二级缓存空间至所述最后级缓存空间中的任一级缓存空间之一作为所述预设缓存空间。
16.根据权利要求13的处理器,还包括页表遍历器,
其中,所述页表遍历器配置为查询所述翻译后备缓冲器,以查询所述对象虚拟页号所对应的所述对象页表项是否记录在所述翻译后备缓冲器中且缓存在所述预设缓存空间中。
17.根据权利要求16的处理器,其中,所述页表遍历器配置为与所述翻译后备缓冲器设置在同一路径等级。
18.一种电子设备,包括根据权利要求1-16中的任一项所述的处理器。
19.一种地址翻译方法,包括:
使用要进行地址翻译的目标虚拟地址的目标虚拟页号的至少部分地址信息,查询翻译后备缓冲器,其中,所述翻译后备缓冲器用于创建并缓存与对象虚拟页号对应的对象页表项在预设缓存空间中的对象地址索引,所述预设缓存空间用于缓存所述对象页表项的至少部分内容;
响应于查询命中,获得与所述目标虚拟页号对应的目标地址索引;
使用所述目标地址索引访问缓存在所述预设缓存空间中与所述目标虚拟页号对应的目标页表项的至少部分内容,以获得所述目标页表项;以及
使用所述目标页表项获得与所述目标虚拟地址对应的目标物理地址。
20.根据权利要求19的地址翻译方法,其中,所述目标虚拟页号包括第一子地址信息和第二子地址信息,
所述使用要进行地址翻译的目标虚拟地址的目标虚拟页号的至少部分地址信息,查询所述翻译后备缓冲器,包括:
使用所述第一子地址信息在所述翻译后备缓冲器中查询所述翻译后备缓冲器的数据项;以及
所述使用所述目标地址索引访问缓存在所述预设缓存空间中与所述目标虚拟页号对应的目标页表项的至少部分内容,以获得所述目标页表项,包括:
使用所述目标地址索引得到所述目标页表项所在的目标缓存行;
使用所述第二子地址信息作为偏移值,在所述目标缓存行中得到所述目标页表项的至少部分内容,以获得所述目标页表项。
21.一种缓存页表项方法,包括:
接收在所述翻译后备缓冲器记录对象页表项的请求;
根据所述对象页表项对应的对象虚拟页号中的至少部分地址信息在所述翻译后备缓冲器中获得对象地址索引;
基于所述对象地址索引,在预设缓存空间中存储所述对象页表项的至少部分内容。
22.根据权利要求21的方法,其中,所述对象虚拟页号包括第一子地址信息和第二子地址信息,
所述根据所述对象页表项对应的对象虚拟页号中的至少部分地址信息在所述翻译后备缓冲器中获得对象地址索引,包括:
响应于使用所述第一子地址信息在所述翻译后备缓冲器中查询并命中所述翻译后备缓冲器的数据项,获得所述对象地址索引,或者
响应于使用所述第一子地址信息在所述翻译后备缓冲器中查询并未命中所述翻译后备缓冲器的数据项,创建对应于所述对象页表项的对象数据项,获得对应于所述对象数据项的所述对象地址索引,并将所述对象地址索引写入所述对象数据项;以及
所述基于所述对象地址索引,所述在预设缓存空间中存储所述对象页表项的至少部分内容,包括:
使用所述对象地址索引得到所述对象页表项所在的对象缓存行;
使用所述第二子地址信息作为偏移值,在所述对象缓存行中定位用于所述对象页表项的存储地址。
23.根据权利要求22的方法,其中,所述获得对应于所述对象数据项的所述对象地址索引,包括:
在所述预设缓存空间选择用于所述对象数据项的对象缓存行,根据所述对象缓存行生成所述对象地址索引。
24.根据权利要求23的方法,其中,所述预设缓存空间为组相联映射架构且具有多路,
所述在所述预设缓存空间选择用于所述对象数据项的对象缓存行,包括:
使用所述多路中专门用于缓存系统页表项的至少一路来选择用于所述对象数据项的所述对象缓存行。
25.根据权利要求23的方法,其中,所述翻译后备缓冲器包括P个可用的数据项,所述预设缓存空间设置有固定的P个缓存行分别用于所述翻译后备缓冲器的P个可用的数据项,P为正整数,
所述在所述预设缓存空间选择用于所述对象数据项的对象缓存行,包括:
在所述固定的P个缓存行中选择用于对应于所述对象数据项的所述对象缓存行。
26.根据权利要求21的方法,还包括:
接收在所述翻译后备缓冲器清除所述对象页表项的请求;
根据所述对象地址索引在所述预设缓存空间中删除所述对象页表项。
27.根据权利要求22的方法,还包括:
响应于确定在所述翻译后备缓冲器清除所述对象数据项,根据所述对象地址索引在所述预设缓存空间中释放所述对象缓存行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210731130.7A CN115061955A (zh) | 2022-06-24 | 2022-06-24 | 处理器、电子设备、地址翻译方法以及缓存页表项方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210731130.7A CN115061955A (zh) | 2022-06-24 | 2022-06-24 | 处理器、电子设备、地址翻译方法以及缓存页表项方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115061955A true CN115061955A (zh) | 2022-09-16 |
Family
ID=83201859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210731130.7A Pending CN115061955A (zh) | 2022-06-24 | 2022-06-24 | 处理器、电子设备、地址翻译方法以及缓存页表项方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115061955A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117851292A (zh) * | 2024-03-07 | 2024-04-09 | 北京象帝先计算技术有限公司 | 集成电路系统、组件、设备及内存管理方法 |
-
2022
- 2022-06-24 CN CN202210731130.7A patent/CN115061955A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117851292A (zh) * | 2024-03-07 | 2024-04-09 | 北京象帝先计算技术有限公司 | 集成电路系统、组件、设备及内存管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8151085B2 (en) | Method for address translation in virtual machines | |
KR101844521B1 (ko) | 크로스-페이지 프리페칭 방법, 장치, 및 시스템 | |
US9158703B2 (en) | Linear to physical address translation with support for page attributes | |
US7805588B2 (en) | Caching memory attribute indicators with cached memory data field | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
JP3264319B2 (ja) | バスブリッジ | |
US20210089470A1 (en) | Address translation methods and systems | |
CN111949572A (zh) | 页表条目合并方法、装置及电子设备 | |
US8370604B2 (en) | Method and system for caching attribute data for matching attributes with physical addresses | |
US9063860B2 (en) | Method and system for optimizing prefetching of cache memory lines | |
US20100106921A1 (en) | System and method for concurrently managing memory access requests | |
CN106021131B (zh) | 存储器管理 | |
EP3553665B1 (en) | Non-volatile memory access method, device, and system | |
US20240086323A1 (en) | Storage management apparatus, storage management method, processor, and computer system | |
KR101893966B1 (ko) | 메모리 관리 방법 및 장치, 및 메모리 컨트롤러 | |
US20240028522A1 (en) | PROCESS DEDICATED IN-MEMORY TRANSLATION LOOKASIDE BUFFERS (TLBs) (mTLBs) FOR AUGMENTING MEMORY MANAGEMENT UNIT (MMU) TLB FOR TRANSLATING VIRTUAL ADDRESSES (VAs) TO PHYSICAL ADDRESSES (PAs) IN A PROCESSOR-BASED SYSTEM | |
WO2023108938A1 (zh) | 解决高速缓冲存储器地址二义性问题的方法和装置 | |
CN114328295A (zh) | 存储管理装置、处理器、相关装置和相关方法 | |
US20160371198A1 (en) | Mapping Processing Method and Apparatus for Cache Address | |
WO2023055486A1 (en) | Re-reference interval prediction (rrip) with pseudo-lru supplemental age information | |
CN114238167B (zh) | 信息预取方法、处理器、电子设备 | |
CN115061955A (zh) | 处理器、电子设备、地址翻译方法以及缓存页表项方法 | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
US11494300B2 (en) | Page table walker with page table entry (PTE) physical address prediction | |
US7171540B1 (en) | Object-addressed memory hierarchy that facilitates accessing objects stored outside of main memory |
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 |