CN102498477A - Tlb预取 - Google Patents
Tlb预取 Download PDFInfo
- Publication number
- CN102498477A CN102498477A CN2010800384726A CN201080038472A CN102498477A CN 102498477 A CN102498477 A CN 102498477A CN 2010800384726 A CN2010800384726 A CN 2010800384726A CN 201080038472 A CN201080038472 A CN 201080038472A CN 102498477 A CN102498477 A CN 102498477A
- Authority
- CN
- China
- Prior art keywords
- page table
- mmu
- tlb
- table entries
- data block
- 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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Abstract
在一个实施例中,存储器管理单元(MMU)被配置成保持包括多个页面表条目的数据块。MMU被配置成响应于TLB未命中,检查所述数据块,如果在所述数据块中找到转换,则提供来自所述数据块的所述转换,而不生成对于所述转换的存储器读取。在一些实施例中,MMU还可以保存已使用来自所述数据块的转换的TLB未命中的历史,以及可根据所述历史,生成第二个数据块的预取。例如,所述历史可以是最近使用的Q个页面表条目的列表,以及所述历史可以示出在块的端部附近的访问的模式。在另一个实施例中,所述历史可以包括已使用的所述数据块中的页面表条目的数目的计数。
Description
技术领域
本发明涉及处理器领域,更具体地说,涉及处理器中的存储器管理单元。
背景技术
处理器一般实现地址转换。当启动地址转换时,取地址和加载/存储地址是有效或虚拟地址。通过地址转换机制来转换有效/虚拟地址,以获得物理地址(或真实地址)。这里使用的术语“物理地址”和“真实地址”意思相同。物理/真实地址是实际用于寻址存储器的地址。有效地址是为取回指令而生成的地址(也被称为指令的程序计数器,或者PC),或者根据加载/存储指令的地址操作数而生成的地址。在一些情况下,有效地址等于虚拟地址。在其它情况下,虚拟地址是根据有效地址生成的(例如,从有效地址转换而来的,或者通过对有效地址应用某种预定操作生成的)。虚拟地址随后被转换成物理地址。
由于各种原因,使用地址转换。例如,地址转换可用于提供比包含在计算机系统能够支持的物理存储器的量更大的有效或虚拟地址空间。较慢的二级存储器(例如,磁盘存储器)可被用作根据正在执行的程序的需要,把页面换入和换出存储器的换页存储器。另外,在多重任务处理环境中,地址转换可被用于保护一个任务的存储器不被另一个任务访问/更新,以及向每个任务提供它自己的地址空间,而独立于哪些物理页面被分配给该任务。如果任务的总的存储器用量超过存储器大小,那么可以再次使用页面交换来保持存储器内容,并提供对目前使用的页面的访问。
在系统存储器中一般提供页面表,该页面表保存虚拟-物理转换映射。因而,地址转换包括从页面表读取所述转换的一次或多次存储器访问。为了加速转换机制,许多处理器实现转换后援缓冲器(TLB,translationlookaside buffer)。TLB是最近使用的转换的高速缓存。因而,类似于高速缓存未命中,TLB的未命中涉及从页面表取回转换数据的附加等待时间。在一种情况下,就虚拟地址范围来说,TLB是可编程的。响应于虚拟地址范围内的转换请求,TLB能够提供所述转换,还能够把下一个虚拟页面的转换预取到TLB中。
发明内容
在一个实施例中,存储器管理单元(MMU)被配置成保持包括多个页面表条目的数据块。MMU被配置成响应于TLB未命中,检查所述数据块,如果在所述数据块中找到转换,则提供来自所述数据块的所述转换,而不生成对于所述转换的存储器读取。在一些实施例中,MMU还可以保存已使用来自所述数据块的转换的TLB未命中的历史,以及可根据所述历史,生成第二个数据块的预取。例如,所述历史可以是已使用的Q个最新页面表条目的位置(例如,块内的条目编号)的列表,以及所述历史可以示出接近块的端部的访问的模式。MMU可以生成对与正逼近的端部相邻的下一个连续块的预取。在另一个实施例中,所述历史可以包括已使用的页面表条目的数目的计数,如果所述计数接近数据块中的页面表条目的总数,那么MMU可以生成预取。
附图说明
下面的详细说明参考以下简要说明的附图。
图1是包括一个或多个存储器管理单元的系统的一个实施例的方框图。
图2是存储器管理单元的一个实施例的方框图。
图3是虚拟地址空间、页面表条目和物理地址空间的一个实施例的方框图。
图4是图解说明存储器管理单元响应于转换后援缓冲器未命中的一个实施例的操作的流程图。
图5是图解说明存储器管理单元响应于转换后援缓冲器未命中的另一个实施例的操作的流程图。
图6是图解说明图5中所示流程图的一部分的一个实施例的流程图。
图7是图解说明图5中所示流程图的一部分的另一实施例的流程图。
图8是图解说明对于2级高速缓存访问,图1中所示系统的一个实施例的操作的流程图。
图9是图解说明控制码的一个实施例的流程图。
图10是系统的一个实施例的方框图。
图11是计算机可访问存储介质的一个实施例的方框图。
虽然本发明可以有各种修改和备选形式,不过附图中举例表示了本发明的具体实施例,这里将详细说明所述具体实施例。然而应明白,附图及其详细说明并不意图把本发明局限于公开的特定形式,相反,本发明将覆盖在由附加权利要求限定的本发明的精神和范围内的所有修改、等同物和备选方案。这里使用的标题只是为了便于组织,并不意图被用于限制说明的范围。在本申请中,在许可的意义上(即,意味有可能),而不是在强制的意义上(即,意味必须),使用词语“可以”。类似地,词语“包括”意味包括(但不限于)。
各个单元、电路或其它组件可被描述成“配置成”执行一项或多项任务。在这样的上下文中,“配置成”是通常意味“具有在工作期间,执行所述一项或多项任务的电路”的结构的广泛列举。因而,所述单元/电路/组件可被配置成即使当所述单元/电路/组件目前未接通时,也可执行所述任务。通常,形成与“配置成”对应的结构的电路可包括硬件电路。类似地,为了便于说明,各个单元/电路/组件可被描述成执行一项或多项任务。这样的说明应被解释成包括短语“配置成”。列举被配置成执行一项或多项任务的单元/电路/组件并不意图引用35U.S.C.§112,第6段对单元/电路/组件的解释。
具体实施方式
下面参见图1,图中示出了系统的一个实施例的方框图。在图1的实施例中,系统包括每一个包括存储器管理单元(MMU)16A-16N的一个或多个图形处理单元(GPU)10A-10N、对应的2级(L2)高速缓存12A-12N、和多核管理块(MCMB)14A。MCMB 14A与L2高速缓存12A-12N耦接,L2高速缓存12A-12N与相应的GPU 10A-10N耦接。MCMB 14A还耦接到主存储器系统20。系统还包括每一个包括MMU 18A-18M的一个或多个中央处理单元(CPU)22A-22M、对应的2级(L2)高速缓存24A-24M、和多核管理块(MCMB)14B。MCMB 14B与L2高速缓存24A-24M耦接,L2高速缓存24A-24M与相应的CPU 22A-22M耦接。MCMB 14B还耦接到主存储器系统20。这里用后面是字母的参考数字引用的组件可以类似(但不一定相同于)具有相同参考数字和不同字母的其它组件。具有相同参考数字和不同字母的组件可以共同单独用参考数字引用(例如,GPU10A-10N可被共同称为GPU 10)。
GPU 10A-10N可实现为图形处理(例如,把图像渲染到帧缓冲器中、像素处理,等等)优化的指令集体系结构。GPU 10A-10N可实现任何微体系结构,包括标量、超标量、流水线、超流水线、无序、有序、推测性、非推测性体系结构等,或者它们的组合。GPU 10A-10N可以包括电路,以及可选地可以实现微编码技术。GPU 10A-10N的每一个都包括配置成进行地址转换的MMU 16A-16N。MMU 16可包括高速缓存转换的转换后援缓冲器(TLB),以及可以实现如下更详细所述的转换预取。MMU 16所使用的转换可被保存在页面表26中,所述页面表26保存在主存储器系统20中。类似地,CPU 22A-22M可以实现通用指令集体系结构,以及可以实现任何微体系结构,包括任意上述可能性。CPU 22A-22M可以实现MMU 18A-18M,MMU 18A-18M也可实现如下所述的转换预取。在其它实施例中,只有MMU 16实现转换预取,在另外的其它实施例中,只有MMU 18实现转换预取。MMU 18A-18M所使用的转换也可以保存在页面表26中。页面表26可在CPU 22和GPU 10之间共享,或者页面表26可包括用于CPU 22和用于GPU 10的独立数据结构。GPU 10和CPU 22可以是处理器的例子,所述处理器可以是配置成执行指令的任何电路。处理器可以是离散集成电路、集成到集成电路上的核,等等。例如,在图1中,GPU 10、L2高速缓存12和MCMB 14A可被集成到图形芯片上,CPU 22、L2高速缓存24和MCMB 14B可被集成到多核CPU芯片上。在另一个实施例中,GPU 10、CPU 22、L2高速缓存12和24、以及MCMB 14可被集成到集成电路中。在一些实施例中,集成电路还可包括与GPU/CPU集成的其它组件和相关电路。
页面表26可保存多个页面表条目。每个页面表条目可以对应于虚拟地址空间的一个页面,以及可以将该页面中的地址映射到物理页面中的相应地址。页面大小可以因实施例而异。例如,可以使用4千字节或8千字节。可以使用更大的页面大小,比如1、2或4兆字节,或者甚至更大的页面大小。一些实施例可以支持不止一种页面大小,可以酌情同时支持多个页面大小。
GPU 10和CPU 22可包括L1高速缓存(未示出),从而,在本实施例中,高速缓存12和24是L2高速缓存。L2高速缓存可以具有任意大小和结构(例如,组相联的,直接映射的,等等)。L2高速缓存还可以实现任意高速缓存块大小(例如,32字节或64字节,或者更大或更小)。高速缓存块大小可以是高速缓存中的分配和解除分配的单位。
MCMB 14通常提供相应处理器和主存储器系统20之间的互连。如果实现高速缓存一致性,那么MCMB 14可负责发出探测(例如,来自一个处理器的请求可导致对其它处理器的探测,以获得其它处理器的L1或L2高速缓存中的任何改进数据,使任何更新请求的高速缓存副本无效,等等)。MCMB可以相互通信和/或与主存储器系统20中的存储控制器通信。在一个实施例中,存储控制器可以在具有MCMB 14的芯片上实现,和/或可以是MCMB 14之一的一部分。在一些实施例中,MCMB 14也可以实现3级(L3)高速缓存,所述L3高速缓存可以由与MCMB 14耦接的L2高速缓存12或24共享。
主存储器系统20可以包括任意类型的存储器。例如,存储器可以包括动态随机访问存储器(DRAM)、同步DRAM(SDRAM)、双数据速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM的移动版本,比如mDDR3)、RAMBUS DRAM(RDRAM)、静态RAM(SRAM),等等。如前所述,主存储器系统20还可包括存储控制器。
注意,各个实施例中的每个组件的数目可以变化。例如,可以设置一个或多个GPU 10A-10N,以及设置一个或多个CPU 22A-22M。在其它实施例中,可以没有GPU和/或CPU。如用10N和22M所示,一个处理器的数目可以不同于另一个处理器的数目。在图1中,L2高速缓存12和24被表示成与相应处理器相关联,但在其它实施例中,L2高速缓存12和24可被处理器的子集共享。在其它实施例中,可不存在L2高速缓存。
现在参见图2,图中示出MMU 16A的一个实施例的方框图。其它MMU 16和/或MMU 18类似。在图2的实施例中,MMU 16A包括TLB30、走表单元32和预取缓冲器34。走表单元32与TLB 30和预取缓冲器34耦接。TLB 30和走表单元32被耦接,以接收待转换的虚拟地址(VA),走表单元32还被耦接,以接收虚拟地址的相应请求者标识符(RID)和/或相应请求类型。TLB 30被耦接,以向请求者提供物理地址(PA)和命中信号,TLB 30还被耦接,以向走表单元32提供命中信号。走表单元32被耦接,以把转换填充和无效传送给TLB 30(图2中的填充/Inv)。走表单元32被耦接,以接收窥探的TLB无效的指示(图2中的窥探TLB无效)。走表单元32还被耦接,以发送页面表条目(PTE)读取请求和接收相应的数据(图2中的PTE读取/数据)。在图解说明的实施例中,走表单元32包括一个或多个历史寄存器36和一组地址范围寄存器38A-38R。其它实施例可以不包括一个或多个寄存器36和/或38A-38R。
MMU 16A可以从任何源接收待转换的虚拟地址(例如,GPU 10A中的取逻辑,以取指令,或者加载/存储逻辑,以进行加载/存储操作)。TLB30可以配置成查找虚拟地址,以及检测虚拟地址的命中或未命中。如果从虚拟地址到物理地址的转换被记录在TLB 30中,则检测到TLB命中,而如果所述转换未被记录在TLB 30中,那么检测到未命中。TLB 30可被配置成用信号通知命中(断言命中信号)或者未命中(取消断言命中信号),并且可被配置成基于命中条目(PA)来发送物理地址。如前所述,可以在页面基础上管理转换。即,记录在TLB 30中的给定转换可把虚拟页面内的任何虚拟地址转换成由所述转换识别的物理页面内的相应物理地址。在一些实施例中,给TLB 30的VA输入可以是VA的页面部分(例如,不包含页面偏移位),TLB 30的PA输出也可以是物理地址的页面部分,也被称为物理页面编号。完整的物理地址可以是与页面偏移位相连的物理页面编号。
走表单元32可以被耦接,以接收命中信号,以及可以被配置成试图定位在TLB 30中未命中的虚拟地址的转换(被称为“走表”)。在一个实施例中,走表单元32被配置成响应于TLB未命中,从页面表26中读取包括多个页面表条目的数据块,并被配置成除了用未命中的VA(它在所述数据块内的页面表条目之一中)的转换来更新TLB 30之外,还把所述数据块写入预取缓冲器34。这里,为了简明起见,包含多个页面表条目的数据块将被称为预取块。对后续TLB未命中来说,在发出从页面表26中读取另一个预取块的读取请求之前,走表单元32可搜索预取缓冲器34。如果走表单元32在预取缓冲器34中找到虚拟地址的页面表条目,那么走表单元32可被配置成把转换写入TLB 30,从而可以不发出读取请求。如果在预取缓冲器34中未找到虚拟地址的页面表条目,那么走表单元32可被配置成发起读取请求。走表单元32可被配置成写入响应于对预取缓冲器34的读取请求而接收的预取块,以及如前所述更新TLB30。
就后续TLB未命中在预取缓冲器34中的数据块中找到转换来说,处理TLB未命中的等待时间可被减小。在一些实施例中,从而也可减小相应指令提取/数据访问的等待时间,从而可以提高性能。预取块可以包含存储器系统20中的页面表26中的连续存储单元的页面表条目。位于连续条目中的页面表条目一般映射在虚拟地址空间的连续页面中的虚拟地址。虚拟地址(或者至少其一部分)可以和页面表26的基地址一起用于查找页面表26中的转换。因而,数值上彼此接近的虚拟地址可具有保存于在页面表26中彼此接近的页面表条目中的转换。因而,在一个实施例中,按照规则的、可预测方式访问的数据结构可受益于保存在预取缓冲器34中的预取块。
在一些实施例中,走表单元32可为任意虚拟地址,实现预取缓冲器34中的预取块的读取和预取块的保存。在其它实施例中,走表单元32是可以用已被识别为可能受益于保存在预取缓冲器34中的预取块的虚拟地址范围编程的(在范围寄存器38A-38R中)。例如,当读取/写入各行像素或分块时,通常可按照规则模式访问诸如GPU 10A-10N之类的图形设备所使用的帧缓冲器。其它例子可以包括作用于输入数据的较大阵列的科学代码。如果实现范围寄存器38A-38R,那么走表单元32可把预取块的读取限于在范围之一内的虚拟地址。对于范围之外的地址,走表单元32可以读取转换所需的页面表条目,并且可以接收响应于读取请求而返回的数据中的不止一个页面表条目,但是走表单元32可不把接收的页面表条目写入预取缓冲器34。
寄存器38A-38R可按照任何期望的方式来定义范围。例如,每个寄存器可以保存基地址和界限(或者大小),或者基地址和结束地址。
在一些实施例中,转换请求可包括类型信息,所述类型信息可以提供关于请求源的更多信息。例如,在图形实施例中,所述类型可以指示纹理映射访问、帧缓冲器访问、对象访问等等。一些类型的访问很可能受益于预取缓冲器34中的预取块的存储(例如,帧缓冲器访问或纹理映射访问)。走表单元32可被配置成根据请求的类型,把预取块保留在预取缓冲器34中,或者不把预取块保留在预取缓冲器34中。其它实施例可以具有不同的类型(例如,取指令&数据访问,或者诸如用于生成虚拟地址的寻址模式的数据访问的类型)。
预取缓冲器34可被配置成保存任意数目的一个或多个预取块。在一个实施例中,预取缓冲器34可以保存一个预取块,当被走表单元32读取时,当前预取块可用新的预取块盖写。其它实施例可以保存几个预取块(例如2个或4个)。实施例可以在预取缓冲器34中包含用于任何所需数目的预取块的容量。预取缓冲器34可以用任意存储电路实现(例如,静态随机存取存储器(SRAM)、诸如寄存器或触发器的时钟控制存储设备,等等)。
图2中示出了预取缓冲器34中的预取块存储条目。所述条目可包括有效位(V)、识别预取块的基地址(Addr)的地址字段(Addr)、和预取块数据(Data)。在其它实施例中,有效位可以是有效字段,所述有效字段可以证实成多个部分的预取块。例如,如果就大小而论,预取块包含多个高速缓存块,并且高速缓存块是走表单元32可用的最大单个传输,那么对于预取块的读取请求可以涉及返回给走表单元32的多个请求和高速缓存块。因而,当高速缓存块被写入预取缓冲器34时,有效字段可以证实高速缓存块。在另一个实施例中,有效字段可以证实各个页面表条目。关于PTE无效可以实现这样的有效字段,下面进一步说明。
走表单元32可被配置成根据请求者ID,保持多个预取块(例如,给定请求者ID可以与预取缓冲器34中的给定预取块相关联)。如果预取块与请求者ID相关联,并且走表单元32把新的预取块写入预取缓冲器34,则新的预取块可以替换与相同请求者ID相关联的在先预取块。与其它请求者ID相关联的各个块从而不受影响。另一方面,可以为给定请求者保存两个或更多预取块。例如,如果为给定请求者保存两个预取块,则可以在用尽当前预取块中的页面表条目之前,预取下一个预取块,因为下一个预取块不会盖写预取缓冲器34中的当前预取块。如果实现主动预取,则可以实现这种操作。
上面的说明涉及的是被动形式的预取,其中响应于TLB未命中,读取预取块,并且预取块被保留在预取缓冲器34中,包括未使用的页面表条目。在响应于TLB未命中而直接请求预取块中的未使用页面表条目之前,所述未使用页面表条目实际上已被读取,从而它们可被看作被预取。即,预取通常可以读取还未被请求但是有可能在未来被请求的页面表条目。其它实施例可以进行主动预取,其中走表单元32可尝试预测在不久的将来可能需要的页面表条目的块,然后预取包括所预测条目的块。在一个实施例中,可以为主动预取提供历史寄存器36。走表单元32可把指示最近使用的页面表条目的数据保存在历史寄存器36中,然后可以尝试检测历史中的模式,以预测预取块。走表单元32可以响应于所述预测而生成预取请求,并且可以把预取块写入预取缓冲器34。把多个预取块保存在预取缓冲器34中的实施例可以包括多个历史寄存器(或者寄存器36中的多个字段),以保存每个块的独立历史。
历史数据可以是代表从预取块加载到TLB 30中的最新页面表条目的任意数据。即,历史数据可以是页面表条目的使用历史,或者是TLB未命中对页面表条目的耗用历史。例如,历史可以识别已被加载的Q个最近的页面表条目,其中Q是大于或等于1的整数。在一个实施例中,预取块中的页面表条目可被分配条目编号,所述条目编号始于预取块中地址最低的页面表条目,并且随着地址的增大而增大。条目编号可被保存在历史中。根据条目编号的模式,可以进行预取预测。例如,如果条目编号是单调递增的,并且接近(或者已达到)最后的条目编号,那么可以生成下一个连续块(地址更高的块)的预取。类似地,如果条目编号是单调递减的,并且接近(或者已达到)第一条目编号,那么可以生成前一个块(地址更低的块)的预取。注意当地址被称作高于或低于其它地址时,指的是地址的数值。
在另一个实施例中,历史可以包含已从预取块加载的许多页面表条目的计数。根据所述计数和预取块中的页面表条目的数目,可以预测预取块接近用尽或者被用尽。在一个实施例中,也可记录最新的条目编号,使得可以预测下一个连续的或者前一个预取块。
如上所述,预取块的大小不必与高速缓存块的大小相同。事实上,根据需要,预取块可以是任意大小,包括小于高速缓存块或者大于高速缓存块的大小。预取块可以保存选择数目的页面表条目。根据物理地址的大小,页面表条目的大小可变。例如,在一个实施例中,在4字节页面表条目中可以表示32位物理地址,以及在8字节页面表条目中可以表示64位物理地址。条目中未表示的物理地址位可以保存各种属性。还包括虚拟地址标记的实施例可以大于上述大小。
当软件修改页面表条目以改变转换时,软件可以使一个或多个TLB条目无效。如果软件正在连接到MMU 16A的处理器上运行时,则可通过请求接口发生所述失效,或者如果软件在别处运行时,可以从外部接口窥探所述失效。除了使TLB 30中的一个或多个指定条目无效之外,走表单元32还可以使预取缓冲器34中的相应页面表条目无效。在一个实施例中,走表单元32可以简单地使保存在预取缓冲器34中的预取块无效。另一方面,如上所述,关于预取块的有效指示可以允许使各个页面表条目或者页面表条目的子集无效。在这样的实施例中,走表单元32可以确定正在被更新的页面表条目,然后使预取缓冲器34中的该页面表条目或子集无效。在把多个预取块保存在预取缓冲器34的实施例中,在保持其它预取块有效的同时,走表单元32可以使受影响的预取块无效。
在一些实施例中,MMU 16A可以包括独立的指令TLB和数据TLB,以分别转换指令提取和加载/存储访问。指令TLB和数据TLB可以分别物理位于取指令逻辑和加载/存储逻辑附近。此外,MMU 16A的实施例可以用于非处理器组件(例如,直接存储器存取(DMA)控制器、输入/输出(I/O)设备,等等)。
现在参见图3,图中示出了图解说明虚拟地址空间40、页面表26和物理地址空间42的方框图。页面表26同样被保存在物理地址空间42中,然而为了有助于图解说明,在图3中被单独示出。如图3中图解所示,VA空间40和PA空间42的地址0可以位于图的顶部,从而地址是向下增加的。
在VA空间40中,示出了帧缓冲器44。帧缓冲器44可以占据VA空间40中的多个连续页面。在图3中的虚线之间图解说明了各个页面,例如,虚拟页面46A、46B、46C、46D。帧缓冲器所占据的页面的数目可以取决于页面大小和帧缓冲器44的大小。帧缓冲器44的大小可以取决于屏幕分辨率大小、显示分辨率中每个像素的数据比特数等等。
每个虚拟页面46可以由页面表26中的页面表条目(PTE)转换。PTE由软件分配,并且在给定时刻在页面表26中可能无效。图3图解说明了当帧缓冲器44的所有PTE在页面表26中都有效的时刻。具体地说,图3中图解说明了PTE 1-P。在图3中的PTE 1中示出了PTE的例证内容(附图标记48)。如图所示,PTE可以包括虚拟地址标记字段(VA)、物理页面编号(PPN)和各种其它属性(ATR)。对于其中全部虚拟地址未被页面表26中的查找耗用的实施例来说,可以包括虚拟地址标记。即,一些地址转换机制利用每个虚拟地址位(不包含页面偏移量)以及页面表26的基地址来定位保存虚拟地址的转换的PTE。在这种机制中,每个虚拟地址唯一地定位一个PTE,不需要VA标记。在其它实施例中,虚拟地址的页面部分的至少一些不用于查找,从而多个虚拟地址可重叠于用于转换的相同PTE。可以比较VA标记和未用的虚拟地址位,以确认该转换对应于对其进行查找的特定虚拟地址。物理页面编号是物理地址的页面部分,它可以与虚拟地址的页面偏移量部分相连,从而形成页面内的访问的物理地址。属性可以规定页面的其它性质,比如可访问性和与高速缓存相关的控制、权限级别限制(例如,用户或超级用户)、指示转换的有效性的有效位、对页面的读取/写入许可,等等。
如虚拟页面46A、46B和46C到页面表26中的PTE 1、2和3之间的箭头所示,毗邻虚拟页面定位页面表26中的毗邻PTE。可以观察到这种行为,因为在地址的页面部分中,毗邻虚拟页面在数值上彼此仅仅相差1。通常,如果在毗邻页面(块)之间不存在其它页面(块),那么页面(或块)可以毗邻于另一个页面(或块)。毗邻页面(块)也可被认为是连续的,以及相对于给定页面(或块),在下一个更大数值地址的毗邻页面(块)可被称为下一个连续页面(块)。
在物理地址(PA)空间42中,在虚线之间图解说明了各个物理页面(例如,物理页面50A、50B和50C)。每个PTE的PPN字段可以指向物理页面之一。相对于物理页面的虚拟页面的分配由软件控制,并且可以是任意的。因此,PTE 1可把虚拟页面46A映射到物理页面50B;PTE 2可以把虚拟页面46B映射到物理页面50A;以及PTE 3可以把虚拟页面46C映射到物理页面50C。在其它实施例中,软件可试图把诸如帧缓冲器44的数据结构的连续虚拟页面映射到物理地址空间42中的连续物理页面。
如前所述,对帧缓冲器44的一些访问模式可以是相当规则的。例如,如图3中所示,为显示而读取帧缓冲器通常是从顶部到底部进行的,以匹配显示硬件对显示屏的刷新。因而,帧缓冲器44中的一个虚拟页面的TLB未命中可能跟随有对访问页面表26中的连续PTE的连续虚拟页面的更多TLB未命中。因而,当走表单元32取回TLB未命中的PTE时,走表单元32可被配置成预取PTE块,所述PTE块包括该TLB未命中的PTE。例如,预取块52示于图3中,并且包括PTE 1-P(其中P是大于3的正整数,如图3中所示)。例如,如果对于虚拟页面46A发生了TLB未命中,那么预取块52可以被预取并保存到预取缓冲器34中。如果对于虚拟页面46B、46C和/或46D发生了后续TLB未命中,那么走表单元32可以检查预取缓冲器34,并找到预取缓冲器34中的PTE 2、3和4(图3中未示出)。因而,对于这些TLB未命中,可以避免主存储器读取。
对实现范围寄存器38A-38R的实施例来说,帧缓冲器44的虚拟地址范围可被编程到范围寄存器38A-38R之一中(例如,用图3中标记为“范围1”的大括号图解所示的范围1寄存器38A)。其它范围寄存器38B-38R可被编程为其它范围,比如纹理映射等等。
现在参见图4,图中示出图解说明响应于TLB 30中的TLB未命中,MMU 16A(更具体地说,走表单元32)的一个实施例的操作的流程图。即,MMU 16A/走表单元32可被配置成实现在图4中图解说明的操作。虽然为了易于理解,按照特定顺序示出了各个方框,不过可以使用其它顺序。可在MMU 16A/走表单元32中的组合逻辑中并行执行各个方框。可以在多个时钟周期内,使各个方框、方框的组合和/或整个流程图流水线化。图4的流程图图解说明了响应于TLB未命中的操作。MMU 16A/走表单元32可被配置成并行处理多于一个的TLB未命中。此外,在流水线实施例中,TLB未命中可以被流水线化,从而在处理的各个阶段,可以存在多个TLB未命中。例如,在一个TLB未命中在等待来自存储器的预取块的返回的时候,另一个TLB未命中可以检查预取缓冲器,并检测命中。
走表单元32可被配置成根据未命中虚拟地址和页面表基地址来形成PTE的地址,页面表基地址定位主存储器系统20中的页面表26(方框60)。在这个实施例中,页面表26被保存在主存储器系统20中的物理地址,以及PTE的地址是物理地址。在其它实施例中,页面表26可以位于虚拟地址空间中,以及所述地址可以是虚拟地址。在确保页面表26的可访问性的同时虚拟地寻址页面表26的机制已为人们所知(例如单一映射页面表)。注意,一些地址转换机制以分层方式利用页面表中的多重查找(例如,根据页面表基地址和虚拟地址的第一部分来形成PTE地址,从PTE中读取PPN,以及利用PPN和虚拟地址的第二部分来形成另一个PTE地址,等等,直到虚拟地址的每个部分已被使用为止)。在这样的实施例中,方框60可以包括多个查找。走表单元32可搜索预取缓冲器34中的每个PTE条目。每级的预取块可被保持在预取缓冲器34中,或者可以只保存最后一级的预取块。其它实施例可以使用单级查找(例如,散列VA的页面部分以选择条目,利用VA标记,利用VA的页面部分的最低有效位和利用VA的剩余部分的VA标记,根据VA的一部分来选择一组条目和读取多个连续条目,或者任何其它方式)。
走表单元32可被配置成关于命中,检查预取缓冲器34(判定框62)。可在预取块粒度进行对命中的检查。即,通过用预取块屏蔽掉定义偏移量的比特,可以比较PTE的地址与标记预取缓冲器条目的地址。如果PTE是预取缓冲器34中的命中(判定框62,“是”支路),那么走表单元32可被配置成确定PTE是否成功地提供了转换(判定框66)。如果PTE无效,或者如果属性指示请求者不被允许进行期望的访问(例如,权限级别违规,读/写违规,等),那么转换不成功。如果转换成功(判定框,“是”支路),那么走表单元32可被配置成利用来自预取缓冲器34的PTE把所述转换提供给TLB 30(方框64)。即,来自PTE的转换可被加载到TLB 30中。TLB 30中的转换数据的格式可不同于PTE,以及走表单元32可被配置成格式化TLB条目,并把格式化后的条目写入TLB 30。TLB条目可包括TLB条目的属性(或者对转换的使用来说需要的属性的子集)、PPN、和用于匹配转换请求的虚拟地址的部分或全部页面部分。如果转换不成功(判定框66,“否”支路),那么走表单元32可以用信号通知错误(方框68)。在各个实施例中,可以用任何期望的方式(例如,中断、异常等),用信号通知错误。信号可以导致软件被调用,以处理转换的缺乏。
另一方面,如果PTE不是预取缓冲器34中的命中(判定框62,“否”支路),那么走表单元32可以传送PTE读取请求(方框70)。在把预取局限于某个范围或类型的实施例中,如果VA不在所述范围内,或者所述类型不是可以预取的类型之一,那么PTE读取请求可以针对单个PTE条目,以及走表单元32可不把返回的数据写入预取缓冲器34。如果VA在范围内,或者所述类型是可以预取的类型之一,或者走表单元32预取任意PTE作为预取块,那么PTE读取请求可以是针对包括该PTE的预取块的请求。走表单元32可以等待接收来自存储器系统的预取块,然后可以把返回的预取块写入预取缓冲器(方框72)。在各个实施例中,走表单元32可以盖写预取缓冲器34中的当前预取块,或者可以盖写与所述请求者或类型相关联的当前预取块。在可为请求者/类型保存多个预取块的实施例中,预取块可以盖写该请求者/类型的最陈旧预取块,或者可以使用诸如最近最少使用(LRU)、其任意变形之类的替换方案,或者可以使用任何其它的替换方案。走表单元32还可判定转换是否成功,并酌情用信号通知错误,或者把转换加载到TLB 30中(方框66、64和68)。
图4的流程图图解说明了其中响应于利用预取块内的PTE的TLB未命中而读取预取块的被动预取实施例。其它实施例可以保持预取块内的PTE的使用历史,从而可以预测何时需要另一个PTE,以生成针对该预取块的预取请求。即,可以在需要预取块内的任意PTE之前,预取该预取块。
图5是图解说明了就主动预取方案来说,响应于TLB 30中的TLB未命中,MMU 16A(更具体地说,走表单元32)的一个实施例的操作的流程图。即,MMU 16A/走表单元32可被配置成实现在图5中图解说明的操作。虽然为了易于理解,按照特定顺序示出了各个方框,不过可以使用其它顺序。可在MMU 16A/走表单元32中的组合逻辑中并行执行各个方框。在多个时钟周期内,可以使各个方框、方框的组合和/或整个流程图流水线化。图5的流程图图解说明了响应于TLB未命中的操作。MMU16A/走表单元32可被配置成并行处理多于一个TLB未命中。此外,在流水线实施例中,TLB未命中可以被流水线化,从而在处理的各个阶段,可以存在多个TLB未命中。例如,在一个TLB未命中在等待来自存储器的预取块的返回的同时,另一个TLB未命中可以检查预取缓冲器,以及检测命中。
类似于图4,图5的实施例包括形成PTE地址、检查预取缓冲器34中的命中、如果PTE地址是预取缓冲器34中的未命中,则生成PTE读取请求、把接收的预取块写入预取缓冲器34、确定转换是否成功、以及把转换加载到TLB 30中或者用信号通知错误(方框60、62、64、66、68、70和72)。
另外,走表单元32可被配置成在把预取块写入预取缓冲器34时,初始化对应于预取块的历史(方框80)。取决于保持的历史数据,可用不同方式初始化历史。例如,如果历史是对预取块的最近Q次访问的指示(例如,相对于预取块中的第一个条目的条目编号),那么可以通过把当前请求的条目编号记录为最近的请求并清除其它条目编号来初始化历史。如果历史是计数,那么计数可被设定为0。另一方面,如果请求的PTE不在预取块的一端,那么计数可被初始化成预取块内的PTE的条目编号。例如,如果预取块中的前几个PTE是TLB命中,从而可能不会被请求,那么这种初始化是有用的。在另一个实施例中,初始化可以取决于条目编号。如果条目最接近于预取块的下端,那么计数可被初始化成条目编号,假定地址是按照数值增加的顺序被遍历的。如果条目最接近于预取块的上端,那么计数可以被初始化成P减去条目编号(其中,P是预取块中的PTE的数目),假定地址是按照数值减小的顺序被遍历的。
响应于预取缓冲器中的命中,走表单元32可被配置成更新历史(方框82)。例如,走表单元32可插入PTE的条目编号作为最新的访问,并沿着列表下移其它条目编号,如果Q个最近的条目编号被保存为历史的话。如果历史是计数,那么走表单元32可被配置成递增计数。其它实施例可以实现其它形式的历史。
走表单元32可被配置成检查更新的历史,以确定历史是否指示应当为下一个预测块生成预取请求(判定框84)。下一个预测块可以是按照在块内使用PTE的方向,从当前块起的下一个连续块或者紧接着的前一个块。如果走表单元32确定要生成预取请求,那么走表单元32可被配置成生成预取请求(方框86)。
图4和5主要涉及的是单个预取块。在其中可以在预取缓冲器34中保存多个预取块的实施例中,可以跨越所有预取块应用对预取缓冲器命中的搜索。另一方面,搜索可被仅仅局限于与相同请求者或地址范围相关联的那些预取块。另一方面,如果不止一个预取块与特定请求者相关联,那么按照需要,新的预取块可以盖写与所述特定请求者相关联的最陈旧预取块,或者最近最少使用的预取块。
图6和7是就历史的两个实施例来说,图5的方框82、84和86的更详细实施例。当被组合时,实现方框82、84和86之一的各个方框是用后面是字母的对应参考数字(82、84或86)列出的。图6的实施例把历史实现成已被用于向TLB 30供给转换的Q个最新PTE的列表(即,Q个最近访问的PTE)。列表可以依据条目编号,把预取块中地址最低的PTE编号为条目0,并且随着数值不断增大的地址增大到预取块中地址最高的条目(条目P-1)。图7的实施例把历史实现成已被用于把转换提供给TLB30的PTE的数目的计数。虽然在图6和7中,为了易于理解,各个方框是按照特定顺序示出的,但可以使用其它顺序。可在MMU 16A/走表单元32中的组合逻辑中并行执行各个方框。在多个时钟周期内,可以使各个方框、方框的组合和/或整个流程图流水线化。
在图6中,例证历史90被示出为PTE条目编目的列表。PTE条目编号1可以是最陈旧(最近最少访问)的PTE条目编号。PTE条目编号2可以是第二最陈旧的条目编号,...,一直到PTE条目编号Q。历史90可以是列表的逻辑视图。列表的物理排列可不同。例如,当增加新的条目编号时,代替移动列表中的PTE条目编号,新的条目编号可以替换最陈旧的条目编号,并可以保存最新条目编号的指针。
如图6中所示,历史的更新(图5中的方框82)可包含用当前正被加载到TLB 30中的PTE的条目编号来代替历史90中的最陈旧的PTE条目编号(方框82A)。构成判定框84的方框可包括判定框84A-84C和方框84D-84E。走表单元32可以判定在最近的Q个PTE访问中是否存在某种模式(判定框84A)。如果不存在可以识别的模式(判定框,“否”支路),那么走表单元32不生成预取请求。如果存在可以识别的模式,那么所述模式可能是单调增加(例如,每个条目编号大于前一个条目编号)或者单调减小(每个条目编号小于前一个条目编号)。如果模式是单调增加的(判定框84A,“是,增加”支路),并且当前条目在预取块中的地址最高的条目(例如,条目P-1)附近(判定框84B,“是”支路),那么走表单元32可以预测待预取的下一个块是当前预取块+1(方框84E)。即,待预取的下一个块是当前块的下一个连续的预取块(在下一个数值较高的预取块地址)。走表单元32可被配置成生成对于预测的预取块的预取请求(方框86A)。如果当前条目不在地址最高的条目附近(判定框84B,“否”支路),那么还未预测任何预取。类似地,如果模式是单调减小的(判定框84A,“是,减小”支路),并且当前条目在预取块中的地址最低的条目(例如,条目0)附近(判定框84C,“是”支路),那么走表单元32可以预测待预取的下一个块是当前预取块-1(方框84D)。即,待预取的下一个块是当前块的前一个预取块(在下一个数值较低的预取块地址)。走表单元32可被配置成生成对于预测的预取块的预取请求(方框86A)。如果当前条目不在地址最低的条目附近(判定框84C,“否”支路),那么还未预测任何预取。
判定框84B和84C可以检查在地址最高的条目或地址最低的条目“附近”的当前条目,以便提早预测下一个块,以及在该块内的第一个TLB未命中之前预取该块。因而,“附近”的判定可取决于访问存储器中的下一个预取块的等待时间和TLB未命中用掉当前块的剩余PTE条目之前的等待时间。在一些实施例中,为了避免盖写可能需要的条目,在当前块中的条目已被消耗之前,走表单元可不生成预取请求(例如,“附近”可以是“等于”)。在其它实施例中,条目可以在另一个条目“附近”,如果它在条目编号的一个或多个条目之内(例如,离开1或2个条目)。在一些情况下,模式可以指示条目被跳过(例如,可以读取每隔一个的条目),以及“附近”的确定可以考虑所述模式。另外,如果为相同请求者保持不止一个预取块(使得最近预取的块将不替换当前块),那么“附近”的确定可以更加灵活。
条目0和P-1可被定义成是预取块的“端点”。即,在条目0之下,在预取块内不再存在地址更低的条目;以及超出条目P-1,在预取块内不再存在地址更高的条目。因此,当当前条目在块的端点附近时,走表单元32可以生成对于邻近所述端点的块(例如,对条目0来说,前一个块,或者对条目P-1来说,下一个连续块)的预取请求。
总的来说,判定框84A、84B和84C的“否”支路可以等同于图5中的判定框84的“否”支路。从方框84D和84E的出口可以等同于图5中的判定框84的“是”支路。方框82A和86A可以分别等同于图5中的方框82和86。
在图7中,例证的历史92被示出为计数。可以如上参考图5所述,初始化所述计数。如图7中所示,历史的更新(图5中的方框82)可以包含递增计数(方框82B)。构成判定方框84的方框可以包括判定方框84F-84G和方框84H-84I。走表单元32可以确定计数是否等于P-1,指示当前预取块的PTE条目已被耗用(判定框84F)。如果否(判定框84F,“否”支路),那么走表单元32可不生成预取请求。如果是(判定框84F,“是”支路),那么当前条目可能接近于0或者接近于P-1。如果当前条目接近于0(判定框84G,“是”支路),那么走表单元32可以预测待预取的下一个块是当前预取块-1(方框84H)。走表单元32可被配置成生成对于预测的预取块的预取请求(方框86B)。如果当前条目接近于条目P-1(判定框84G,“否”支路),那么走表单元32可以预测待预取的下一个块是当前预取块+1(方框84I)。走表单元32可被配置成生成对于预测的预取块的预取请求(方框86B)。
虽然图7的实施例检查等于P-1的计数,不过其它实施例可以检查接近P-1的计数。同样,类似于上面的讨论,接近的测量可以取决于预取块的等待时间和耗用当前预取块中的剩余条目的预期等待时间。
判定框84F的“否”支路可以等同于图5中的判定框84的“否”支路。从方框84H和84I的出口可以等同于图5中的判定框84的“是”支路。方框82B和86B可以分别等同于图5中的方框82和86。
在一些实施例中,尤其是自预取缓冲器34保存预取的PTE以来,在高速缓存(例如,图1中的L2高速缓存12和24,L1高速缓存(未示出)等)中高速缓存PTE可能不够有效。因而,在一个实施例中,尽管通常高速缓存其它数据(除非所述其它数据被标记为不可高速缓存),但高速缓存可以禁止高速缓存用于PTE读取的数据。图8是图解说明L2高速缓存12禁止PTE读取的高速缓存的一个实施例的操作的流程图。其它高速缓存,包括L2高速缓存24、L1高速缓存、L3高速缓存等可以相类似。L2高速缓存12可被配置成实现在图8中图解说明的操作。虽然为了易于理解,按照特定的顺序示出了各个方框,但可以使用其它顺序。可在L2高速缓存12中的组合逻辑中并行执行各个方框。在多个时钟周期内,可以使各个方框、方框的组合和/或整个流程图流水线化。图8的流程图图解说明了响应于高速缓存访问的操作。L2高速缓存12可被配置成并行处理不止一个访问。此外,在流水线化实施例中,高速缓存访问可被流水线化,从而在处理的各个阶段,可以存在多个高速缓存访问。
L2高速缓存可检查对请求地址的命中(判定方框100)。如果请求是命中(判定框100,“是”支路),那么L2高速缓存可把来自命中高速缓存行的数据提供给请求者(方框102)。如果请求是未命中(判定框100,“否”支路),那么高速缓存可判定所述请求是否是PTE读取(判定框104)。在一些实施例中,和请求一起提供给L2高速缓存的请求者ID可指示所述请求是PTE读取。另一方面,可以利用请求类型信息或边带信令来指示所述请求是否是PTE读取。可以使用通知所述请求是或者不是PTE请求的任何机制。如果所述请求是PTE读取(判定框104,“是”支路),那么L2高速缓存可把该请求传给下一级,而不分配高速缓存块,禁止数据的高速缓存(方框106)。如果所述请求不是PTE读取(判定框104,“否”支路),那么L2高速缓存可分配高速缓存块存储单元以保存该未命中,以及可向下一级发出填充(方框108)。
接下来参见图9,图中示出了图解说明可以为预取操作对MMU 16A进行编程的控制码的一个实施例的操作的流程图。虽然为了易于理解,按照特定顺序示出了各个方框,但可以使用其它顺序。可以在处理器上执行构成控制码的指令,以使系统进行在图9中图解说明的操作。
控制码可以确定可受益于MMU预取的存储器的区域(方框110)。例如,所述代码可识别帧缓冲器位置、纹理映射位置,等等。所述代码还可以识别与这些请求类型相关联的地址范围。控制码可用确定的范围来写范围寄存器38A-38R(方框112)。
系统和计算机可访问存储介质
下面参见图10,图中示出了系统150的一个实施例的方框图。系统150可以是图1中图解说明的系统的另一个实施例。在图解说明的实施例中,系统150包括与一个或多个外设154和外部存储器158耦接的集成电路152的至少一个实例。在一个实施例中,集成电路152可包括GPU10、L2高速缓存12、MCMB 14、CPU 22、L2高速缓存24、以及主存储器系统20的存储控制器。外部存储器158可包括主存储器系统20的存储器。还设置了电源156,电源156向集成电路152提供电源电压,以及向存储器158和/或外设154提供一个或多个电源电压。在一些实施例中,可以包括集成电路152的不止一个实例(同样可以包括不止一个外部存储器158)。
外设154可包括任何所需电路,取决于系统150的类型。例如,在一个实施例中,系统150可以是移动设备(例如,个人数字助理(PDA)、智能电话等),外设154可以包括用于各种无线通信的设备,比如wifi、蓝牙、蜂窝、全球定位系统等等。外设154还可包括另外的存储器,比如RAM存储器、固态存储器或磁盘存储器。外设154可包括用户接口设备,比如显示屏,包括触摸显示屏或多点触控显示屏,键盘或其它输入设备,麦克风,扬声器等等。在其它实施例中,系统150可以是任意类型的计算系统(例如,桌上型个人计算机,膝上型计算机,工作站,桌面一体机等)。
现在参见图11,图中示出了计算机可访问存储介质200的方框图。一般来说,计算机可访问存储介质可包括在使用期间可被计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可包括诸如磁介质或光介质之类的存储介质,例如磁盘(软盘或可拆卸磁盘)、磁带、CD-ROM、或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW。存储介质还可包括易失性或非易失性存储介质,比如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM、闪速存储器,可通过外围接口,比如通用串行总线(USB)接口,闪速存储器接口(FMI),串行外围接口(SFI)等访问的非易失性存储器(例如,闪速存储器)。存储介质可包括微机电系统(MEMS),以及可通过诸如网络和/或无线链路之类通信介质访问的存储介质。图11中的计算机可访问存储介质200可以保存控制码202,控制码202可包括上面关于图9说明的代码。一般来说,计算机可访问存储介质200可以保存任意指令集,当被执行时,所述指令集实现在图9中所示的部分或全部操作。载体介质可包括计算机可访问存储介质,以及诸如有线或无线传输之类的传输介质。
一旦充分理解了上面的公开内容,对本领域的技术人员来说,众多变化和修改将变得明显。下述权利要求包含所有这样的变化和修改。
Claims (15)
1.一种存储器管理单元(MMU),包括:
配置成保存多个虚拟-物理地址转换的转换后援缓冲器(TLB);
配置成保存包括多个页面表条目的数据块的缓冲器,所述多个页面表条目包括先前在TLB中未命中的虚拟地址的转换期间读取的第一页面表条目;以及
与所述TLB和所述缓冲器耦接的走表单元,其中,所述走表单元被耦接,以接收TLB中的第一TLB未命中的第一虚拟地址,以及其中,所述走表单元被配置成在发起对于所述转换的存储器读取之前,检查所述缓冲器有无对应于第一虚拟地址的第二页面表条目。
2.按照权利要求1所述的MMU,其中,所述走表单元被配置成检测所述缓冲器中的第二页面表条目,以及其中,所述走表单元被配置成把来自第二页面表条目的转换写入TLB。
3.按照权利要求1所述的MMU,其中,所述走表单元被配置成检测第二页面表条目未被保存在所述缓冲器中,以及其中,所述走表单元被配置成发出对于包括第二页面表条目的第二数据块的存储器读取。
4.按照权利要求3所述的MMU,其中,所述走表单元被配置成把第二数据块写入所述缓冲器,盖写缓冲器中的第一数据块。
5.按照权利要求4所述的MMU,其中,所述缓冲器被配置成保存多个数据块,其中,每个数据块对应于具备传送给MMU的转换请求的不同标识符。
6.按照权利要求1-5任意之一所述的MMU,其中,所述数据块在尺寸上大于高速缓存块。
7.按照任意前述权利要求所述的MMU,其中,所述走表单元被配置成跟踪多个页面表条目的使用历史,以及响应于所述历史,生成对于第二数据块的预取请求。
8.按照权利要求7所述的MMU,其中,所述历史包含从数据块读取的Q个最新页面表条目的指示,其中,所述走表单元被配置成如果所述历史指示TLB未命中的模式在数据块的端部附近,则生成预取请求,其中,Q是大于1的正整数。
9.按照权利要求7所述的MMU,其中,所述历史包含已被所述走表单元读取的多个页面表条目的数目的计数,其中,所述走表单元被配置成响应于所述计数等于所述多个页面表条目的数目而生成所述预取请求。
10.按照权利要求7所述的MMU,其中,所述历史包含已被所述走表单元读取的多个页面表条目的数目的计数,其中,所述走表单元被配置成响应于所述计数接近所述多个页面表条目的数目而生成所述预取请求。
11.一种方法,包括:
从存储器读取包含多个页面表条目的数据块;
把所述数据块保持在存储器管理单元(MMU)中;
检测MMU中的转换后援缓冲器(TLB)未命中;以及
读取多个页面表条目之一,以确定用于所述TLB未命中的转换。
12.按照权利要求11所述的方法,进一步包括:
检测MMU中的第二TLB未命中;
确定对应于第二TLB未命中的第二页面表条目不在所述多个页面表条目中;
从存储器读取包含第二批多个页面表条目的第二数据块,所述第二批多个页面表条目包括所述第二页面表条目;以及
把所述第二数据块保持在MMU中。
13.按照权利要求12所述的方法,其中,把第二数据块保持在MMU中包含:用第二数据块盖写所述数据块。
14.按照权利要求11所述的方法,进一步包括:
保持所述数据块中的多个页面表条目的使用历史;和
响应于所述历史,生成包括第二批多个页面表条目的第二数据块的预取。
15.按照权利要求11所述的方法,进一步包括:
确定预期经历转换后援缓冲器(TLB)未命中的规则模式的一个或多个地址范围;和
用所述地址范围编程存储器管理单元(MMU)中的一个或多个寄存器,其中,MMU被配置成响应于所述一个或多个地址范围内的TLB未命中,生成对于页面表条目块的预取请求,每个块包含多个页面表条目,以及其中,MMU被配置成禁止对于所述一个或多个地址范围外的TLB未命中,生成预取请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/501,643 | 2009-07-13 | ||
US12/501,643 US8397049B2 (en) | 2009-07-13 | 2009-07-13 | TLB prefetching |
PCT/US2010/041728 WO2011008702A1 (en) | 2009-07-13 | 2010-07-12 | Tlb prefetching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102498477A true CN102498477A (zh) | 2012-06-13 |
CN102498477B CN102498477B (zh) | 2015-02-11 |
Family
ID=42782105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080038472.6A Expired - Fee Related CN102498477B (zh) | 2009-07-13 | 2010-07-12 | Tlb预取 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8397049B2 (zh) |
EP (1) | EP2454669A1 (zh) |
JP (1) | JP5580894B2 (zh) |
KR (1) | KR101379596B1 (zh) |
CN (1) | CN102498477B (zh) |
WO (1) | WO2011008702A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050089A (zh) * | 2013-03-11 | 2014-09-17 | 三星电子株式会社 | 片上系统及其操作方法 |
CN104239236A (zh) * | 2013-06-17 | 2014-12-24 | 华为技术有限公司 | 旁路转换缓冲缺失的处理方法及旁路转换缓冲 |
WO2015024451A1 (zh) * | 2013-08-20 | 2015-02-26 | 华为技术有限公司 | 内存物理地址查询方法和装置 |
CN104520825A (zh) * | 2012-08-06 | 2015-04-15 | 高通股份有限公司 | 使用释放一致性存储器排序模型的多核心计算高速缓存相干性 |
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
CN105378683A (zh) * | 2013-03-15 | 2016-03-02 | 英特尔公司 | 用于在计算系统处的软件程序中便于动态和高效地管理转换缓冲器预取的机制 |
CN105975405A (zh) * | 2015-05-21 | 2016-09-28 | 上海兆芯集成电路有限公司 | 处理器和使处理器进行工作的方法 |
CN107636626A (zh) * | 2015-05-29 | 2018-01-26 | 高通股份有限公司 | 用于存储器管理单元(mmu)的转换的推测性预取 |
CN109461113A (zh) * | 2018-10-11 | 2019-03-12 | 中国人民解放军国防科技大学 | 一种面向数据结构的图形处理器数据预取方法及装置 |
CN109460183A (zh) * | 2017-09-06 | 2019-03-12 | 三星电子株式会社 | 具有页位图的高效事务表 |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2011018B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
EP2122461A4 (en) | 2006-11-14 | 2010-03-24 | Soft Machines Inc | DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES |
JP5428617B2 (ja) * | 2009-07-28 | 2014-02-26 | 富士通株式会社 | プロセッサ及び演算処理方法 |
JP5377182B2 (ja) * | 2009-09-10 | 2013-12-25 | 株式会社東芝 | 制御装置 |
US9569348B1 (en) * | 2009-09-22 | 2017-02-14 | Nvidia Corporation | Method for automatic page table compression |
JP5488225B2 (ja) * | 2010-06-09 | 2014-05-14 | 富士通株式会社 | データ管理システム、データ管理方法、及びデータ管理プログラム |
CN103250131B (zh) | 2010-09-17 | 2015-12-16 | 索夫特机械公司 | 包括用于早期远分支预测的影子缓存的单周期多分支预测 |
US9092358B2 (en) * | 2011-03-03 | 2015-07-28 | Qualcomm Incorporated | Memory management unit with pre-filling capability |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
CN103562866B (zh) | 2011-03-25 | 2018-03-30 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
KR20120129695A (ko) * | 2011-05-20 | 2012-11-28 | 삼성전자주식회사 | 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법 |
KR101639853B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
JP2013008094A (ja) * | 2011-06-22 | 2013-01-10 | Sony Corp | メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体 |
US9009445B2 (en) | 2011-10-20 | 2015-04-14 | Apple Inc. | Memory management unit speculative hardware table walk scheme |
US10191746B2 (en) | 2011-11-22 | 2019-01-29 | Intel Corporation | Accelerated code optimizer for a multiengine microprocessor |
EP2783281B1 (en) | 2011-11-22 | 2020-05-13 | Intel Corporation | A microprocessor accelerated code optimizer |
US9378150B2 (en) * | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US9430410B2 (en) | 2012-07-30 | 2016-08-30 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load accesses of a cache in a single cycle |
US9916253B2 (en) | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US8938602B2 (en) * | 2012-08-02 | 2015-01-20 | Qualcomm Incorporated | Multiple sets of attribute fields within a single page table entry |
US9396130B2 (en) | 2012-08-18 | 2016-07-19 | Qualcomm Technologies, Inc. | System translation look-aside buffer integrated in an interconnect |
US20140101405A1 (en) * | 2012-10-05 | 2014-04-10 | Advanced Micro Devices, Inc. | Reducing cold tlb misses in a heterogeneous computing system |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US20140108766A1 (en) * | 2012-10-17 | 2014-04-17 | Advanced Micro Devices, Inc. | Prefetching tablewalk address translations |
US10585801B2 (en) | 2012-11-26 | 2020-03-10 | Advanced Micro Devices, Inc. | Prefetch kernels on a graphics processing unit |
KR102002900B1 (ko) | 2013-01-07 | 2019-07-23 | 삼성전자 주식회사 | 메모리 관리 유닛을 포함하는 시스템 온 칩 및 그 메모리 주소 변환 방법 |
KR101946455B1 (ko) * | 2013-03-14 | 2019-02-11 | 삼성전자주식회사 | 시스템 온-칩 및 이의 동작 방법 |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
US9086813B2 (en) * | 2013-03-15 | 2015-07-21 | Qualcomm Incorporated | Method and apparatus to save and restore system memory management unit (MMU) contexts |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9645934B2 (en) | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
US9563571B2 (en) | 2014-04-25 | 2017-02-07 | Apple Inc. | Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management |
US9507726B2 (en) | 2014-04-25 | 2016-11-29 | Apple Inc. | GPU shared virtual memory working set management |
GB2528842B (en) * | 2014-07-29 | 2021-06-02 | Advanced Risc Mach Ltd | A data processing apparatus, and a method of handling address translation within a data processing apparatus |
US9990305B2 (en) | 2014-09-19 | 2018-06-05 | Nxp Usa, Inc. | Memory management component having multiple memory management modules and method therefor |
US20160133087A1 (en) * | 2014-11-10 | 2016-05-12 | Rising Digital Corp. | Gaming machine with bonus feature |
EP3211534B1 (en) * | 2015-03-27 | 2020-03-11 | Huawei Technologies Co., Ltd. | Data processing method, memory management unit and memory control device |
US9792215B2 (en) | 2015-03-28 | 2017-10-17 | Qualcomm Incorporated | Command-driven translation pre-fetch for memory management units |
EP3286640A4 (en) * | 2015-04-24 | 2019-07-10 | Optimum Semiconductor Technologies, Inc. | COMPUTER PROCESSOR HAVING SEPARATE RECORDS FOR ADDRESSING A MEMORY |
KR102026877B1 (ko) * | 2015-06-16 | 2019-09-30 | 한국전자통신연구원 | 메모리 관리 유닛 및 그 동작 방법 |
US20160378684A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory |
US9910780B2 (en) * | 2015-10-28 | 2018-03-06 | International Business Machines Corporation | Pre-loading page table cache lines of a virtual machine |
US20170161194A1 (en) * | 2015-12-02 | 2017-06-08 | Advanced Micro Devices, Inc. | Page-based prefetching triggered by tlb activity |
KR102429903B1 (ko) * | 2015-12-03 | 2022-08-05 | 삼성전자주식회사 | 비휘발성 메인 메모리 시스템의 페이지 폴트 처리 방법 |
US10261916B2 (en) * | 2016-03-25 | 2019-04-16 | Advanced Micro Devices, Inc. | Adaptive extension of leases for entries in a translation lookaside buffer |
GB2551756B (en) * | 2016-06-29 | 2019-12-11 | Advanced Risc Mach Ltd | Apparatus and method for performing segment-based address translation |
US9972065B2 (en) * | 2016-09-23 | 2018-05-15 | Apple Inc. | Resource layout randomization for GPU execution |
US10417140B2 (en) * | 2017-02-24 | 2019-09-17 | Advanced Micro Devices, Inc. | Streaming translation lookaside buffer |
US10565676B2 (en) * | 2017-04-17 | 2020-02-18 | Intel Corporation | Thread prefetch mechanism |
US10387320B2 (en) | 2017-05-12 | 2019-08-20 | Samsung Electronics Co., Ltd. | Integrated confirmation queues |
US10733688B2 (en) * | 2017-09-26 | 2020-08-04 | Intel Corpoation | Area-efficient implementations of graphics instructions |
CN109710544B (zh) * | 2017-10-26 | 2021-02-09 | 华为技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
US20190163641A1 (en) * | 2017-11-27 | 2019-05-30 | Intel Corporation | Page translation prefetch mechanism |
JP7155629B2 (ja) * | 2018-06-07 | 2022-10-19 | 富士通株式会社 | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 |
US11438414B2 (en) | 2019-05-28 | 2022-09-06 | Micron Technology, Inc. | Inter operating system memory services over communication network connections |
US11100007B2 (en) | 2019-05-28 | 2021-08-24 | Micron Technology, Inc. | Memory management unit (MMU) for accessing borrowed memory |
US11334387B2 (en) | 2019-05-28 | 2022-05-17 | Micron Technology, Inc. | Throttle memory as a service based on connectivity bandwidth |
US11194575B2 (en) * | 2019-11-07 | 2021-12-07 | International Business Machines Corporation | Instruction address based data prediction and prefetching |
US11314445B2 (en) * | 2019-11-19 | 2022-04-26 | Western Digital Technologies, Inc. | Pattern tracking for efficiently predicting control pages |
US11429535B1 (en) | 2021-07-09 | 2022-08-30 | Apple Inc. | Cache replacement based on traversal tracking |
US20230059273A1 (en) * | 2021-08-10 | 2023-02-23 | Baidu Usa Llc | Side-channel attacks on secure encrypted virtualization (sev)-encrypted state (sev-es) processors |
US11663132B2 (en) * | 2021-10-13 | 2023-05-30 | Arm Limited | Prefetching |
JP2023072396A (ja) * | 2021-11-12 | 2023-05-24 | 富士通株式会社 | メモリ管理ユニット、メモリ管理方法、及び、情報処理装置 |
EP4283476A1 (en) * | 2022-05-24 | 2023-11-29 | Samsung Electronics Co., Ltd. | Input output memory management unit and electronic device having the same |
WO2024030707A1 (en) * | 2022-08-01 | 2024-02-08 | Qualcomm Incorporated | Using retired pages history for instruction translation lookaside buffer (tlb) prefetching in processor-based devices |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1820258A (zh) * | 2002-12-12 | 2006-08-16 | 国际商业机器公司 | 用于实时应用程序的改进的存储器管理 |
CN1306420C (zh) * | 2003-09-30 | 2007-03-21 | 国际商业机器公司 | 利用永久历史页表数据预取数据到高速缓存的装置和方法 |
CN101326499A (zh) * | 2005-10-20 | 2008-12-17 | 高通股份有限公司 | 更新多级翻译旁视缓冲器(tlb)字段 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62151958A (ja) * | 1985-12-25 | 1987-07-06 | Matsushita Electric Ind Co Ltd | 仮想アドレス変換装置 |
US5282274A (en) * | 1990-05-24 | 1994-01-25 | International Business Machines Corporation | Translation of multiple virtual pages upon a TLB miss |
JPH0588983A (ja) * | 1991-09-30 | 1993-04-09 | Fujitsu Ltd | チヤネル装置の動的アドレス変換方法 |
JPH06149680A (ja) * | 1992-11-12 | 1994-05-31 | Nec Corp | アドレス変換装置 |
JP2005108262A (ja) * | 1994-09-09 | 2005-04-21 | Renesas Technology Corp | データ処理装置 |
JPH08161230A (ja) * | 1994-12-05 | 1996-06-21 | Oki Electric Ind Co Ltd | オンデマンドページングにおける先読み方法 |
US6175898B1 (en) | 1997-06-23 | 2001-01-16 | Sun Microsystems, Inc. | Method for prefetching data using a micro-TLB |
US20060136696A1 (en) | 2004-12-16 | 2006-06-22 | Grayson Brian C | Method and apparatus for address translation |
US20060194529A1 (en) | 2005-02-25 | 2006-08-31 | Smith Richard S | Retractable abrasive sharpener and carrying case |
US7660964B2 (en) * | 2005-08-02 | 2010-02-09 | International Business Machines Corporation | Windowing external block translations |
US20080276067A1 (en) | 2007-05-01 | 2008-11-06 | Via Technologies, Inc. | Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel |
-
2009
- 2009-07-13 US US12/501,643 patent/US8397049B2/en active Active
-
2010
- 2010-07-12 JP JP2012520704A patent/JP5580894B2/ja not_active Expired - Fee Related
- 2010-07-12 EP EP10734414A patent/EP2454669A1/en not_active Withdrawn
- 2010-07-12 WO PCT/US2010/041728 patent/WO2011008702A1/en active Application Filing
- 2010-07-12 CN CN201080038472.6A patent/CN102498477B/zh not_active Expired - Fee Related
- 2010-07-12 KR KR1020127003086A patent/KR101379596B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1820258A (zh) * | 2002-12-12 | 2006-08-16 | 国际商业机器公司 | 用于实时应用程序的改进的存储器管理 |
CN1306420C (zh) * | 2003-09-30 | 2007-03-21 | 国际商业机器公司 | 利用永久历史页表数据预取数据到高速缓存的装置和方法 |
CN101326499A (zh) * | 2005-10-20 | 2008-12-17 | 高通股份有限公司 | 更新多级翻译旁视缓冲器(tlb)字段 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104520825A (zh) * | 2012-08-06 | 2015-04-15 | 高通股份有限公司 | 使用释放一致性存储器排序模型的多核心计算高速缓存相干性 |
CN104050089B (zh) * | 2013-03-11 | 2019-06-07 | 三星电子株式会社 | 片上系统及其操作方法 |
CN104050089A (zh) * | 2013-03-11 | 2014-09-17 | 三星电子株式会社 | 片上系统及其操作方法 |
CN105378683A (zh) * | 2013-03-15 | 2016-03-02 | 英特尔公司 | 用于在计算系统处的软件程序中便于动态和高效地管理转换缓冲器预取的机制 |
CN105378683B (zh) * | 2013-03-15 | 2020-03-17 | 英特尔公司 | 用于在计算系统处的软件程序中便于动态和高效地管理转换缓冲器预取的机制 |
CN104239236B (zh) * | 2013-06-17 | 2018-02-13 | 华为技术有限公司 | 旁路转换缓冲缺失的处理方法及旁路转换缓冲 |
CN104239236A (zh) * | 2013-06-17 | 2014-12-24 | 华为技术有限公司 | 旁路转换缓冲缺失的处理方法及旁路转换缓冲 |
US10114762B2 (en) | 2013-08-20 | 2018-10-30 | Huawei Technologies Co., Ltd. | Method and apparatus for querying physical memory address |
WO2015024451A1 (zh) * | 2013-08-20 | 2015-02-26 | 华为技术有限公司 | 内存物理地址查询方法和装置 |
CN104636270A (zh) * | 2013-11-14 | 2015-05-20 | Arm有限公司 | 数据处理装置中的自适应预取 |
CN104636270B (zh) * | 2013-11-14 | 2021-03-05 | Arm 有限公司 | 数据处理装置和数据处理方法 |
CN105975405A (zh) * | 2015-05-21 | 2016-09-28 | 上海兆芯集成电路有限公司 | 处理器和使处理器进行工作的方法 |
CN107636626A (zh) * | 2015-05-29 | 2018-01-26 | 高通股份有限公司 | 用于存储器管理单元(mmu)的转换的推测性预取 |
CN109460183A (zh) * | 2017-09-06 | 2019-03-12 | 三星电子株式会社 | 具有页位图的高效事务表 |
CN109461113A (zh) * | 2018-10-11 | 2019-03-12 | 中国人民解放军国防科技大学 | 一种面向数据结构的图形处理器数据预取方法及装置 |
CN109461113B (zh) * | 2018-10-11 | 2021-07-16 | 中国人民解放军国防科技大学 | 一种面向数据结构的图形处理器数据预取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20110010521A1 (en) | 2011-01-13 |
JP2012533135A (ja) | 2012-12-20 |
JP5580894B2 (ja) | 2014-08-27 |
CN102498477B (zh) | 2015-02-11 |
KR101379596B1 (ko) | 2014-04-01 |
EP2454669A1 (en) | 2012-05-23 |
KR20120037975A (ko) | 2012-04-20 |
US8397049B2 (en) | 2013-03-12 |
WO2011008702A1 (en) | 2011-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102498477B (zh) | Tlb预取 | |
US10776022B2 (en) | Combined transparent/non-transparent cache | |
JP5528554B2 (ja) | ブロックベースの非透過的キャッシュ | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
US20220137975A1 (en) | Coprocessor Operation Bundling | |
US9317448B2 (en) | Methods and apparatus related to data processors and caches incorporated in data processors | |
CN112540939A (zh) | 存储管理装置、存储管理方法、处理器和计算机系统 | |
US11822480B2 (en) | Criticality-informed caching policies | |
CN117083599A (zh) | 硬件辅助的存储器访问跟踪 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150211 Termination date: 20190712 |
|
CF01 | Termination of patent right due to non-payment of annual fee |