CN105389271B - 用于执行具有最低表查询优先级的硬件预取表查询的系统和方法 - Google Patents
用于执行具有最低表查询优先级的硬件预取表查询的系统和方法 Download PDFInfo
- Publication number
- CN105389271B CN105389271B CN201510777510.4A CN201510777510A CN105389271B CN 105389271 B CN105389271 B CN 105389271B CN 201510777510 A CN201510777510 A CN 201510777510A CN 105389271 B CN105389271 B CN 105389271B
- Authority
- CN
- China
- Prior art keywords
- hardware
- table inquiry
- request
- prefetches
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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
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
技术领域
本发明一般涉及在微处理器中执行表查询(tablewalk),尤其涉及执行具有最低表查询优先级的硬件预取表查询操作以便改进性能。
背景技术
现代处理器支持虚拟存储器能力。虚拟存储器系统把由程序使用的虚拟地址映射或翻译为由硬件使用的物理地址以便对存储器进行寻址。虚拟存储器的优点在于对程序隐藏物理存储器的存储碎片,便于程序重定位,以及使程序能够寻找比其可用的实际物理存储器更大且适合它的存储器地址空间以供使用。这些优点在支持由多个程序或进程对处理器进行分时共享的现代系统中是特别有益的。
微处理器所支持的常见虚拟存储器方案是分页式存储系统。分页式存储系统采用分页机制来把虚拟地址翻译或映射为物理地址。物理地址空间被划分为固定大小的物理页面。通常的页面大小是4千字节(KB)。虚拟地址包括虚拟页面地址部分和页面偏移部分。虚拟页面地址指定了虚拟地址空间中的虚拟页面。微处理器的分页机制把虚拟页面地址翻译为物理页面地址。此过程被称为页面翻译。页面偏移指定了物理页面中的物理偏移,即相对于物理页面地址的物理偏移。
操作系统判定存储器中的哪些物理页面将被映射到每个虚拟页面,并且维持用于指定该映射的页面映射信息。当微处理器遇到用于指定虚拟地址以访问存储器中的一位置的指令(诸如加载或存储指令)时,所述微处理器通过使用操作系统的页面映射信息把虚拟地址翻译为适当的物理地址。操作系统在系统存储器中维持页面映射信息。从而,微处理器从存储器中读取适当的页面映射信息以便把虚拟地址翻译为物理地址。页面映射信息一般按层级结构布置以便减小其大小,这要求微处理器通过在所述层级结构的多个分级上执行读取操作以便遍历该层级结构。由于此原因,并且因为页面映射信息的至少一部分通常被称为页表,所以微处理器遍历所述页面映射信息以便把虚拟地址翻译为物理地址的过程通常被称为页表查询(page table walk),或简称为表查询(tablewalk)。从而,表查询操作把虚拟地址等翻译为物理地址或物理地址翻译,更一般地说,称为翻译地址。
举例来说,常用的层级页面映射信息方案包括第一级页面目录和第二级页表。页面目录中的每个条目指向不同的页表,并且每个页表中的每个条目包括被映射到该条目的页面的物理地址或翻译地址以及特性。页面目录的基地址被存储在微处理器的寄存器中。在英特尔公司于2006年6月公开的、文档号为253668-020US的IA-32英特尔体系结构软件开发者手册第3A卷:系统编程指南的第一部分的第3-23页的图3-12中图示了这种方案,这里为了各种目的通过引用而并入此文献以供参考。在此例子中,微处理器通过在由虚拟地址的上部中的页面目录条目位元(bit)所指定的页面目录内的索引处读取页面目录条目,来执行表查询。页面目录条目指定了相关页表的基地址。然后微处理器在由虚拟地址的中间的页表位元所指定的页表内的索引处读取页表条目。页表条目指定了相关页面的翻译地址。页表条目还包括每个页面的特性。例如,页面特性可以包括以下指示:页面是否已经被访问;页面是否已经被写入;高速缓存特性,诸如页面是否是可高速缓存的,并且如果是的话,回写高速缓存的策略;为所述页面分配了哪种特权等级;页面的写入特权;以及物理存储器中是否存在所述页面。
操作系统利用页面特性值来填充页面目录条目和页表条目。然而,微处理器还响应于程序执行来更新一些页面特性。例如,在上述英特尔方案中,处理器写入相关的页面目录条目和/或页表条目,以便响应于程序读取和/或写入存储页面来更新已访问的和/或脏位(Accessed and/or Dirty bit)。从而,当执行表查询时,除从系统存储器中读取页面映射信息以便把虚拟地址翻译为翻译地址(例如,物理地址或物理地址翻译)之外,处理器有时还可能必须把页面映射信息写入到系统存储器中。
因为页面映射信息驻留在系统存储器中,并且对系统存储器的访问相对缓慢,所以对微处理器来说执行表查询以便执行虚拟到物理地址翻译以及获得和/或更新页面特性是相对高代价的操作。为了通过减少表查询的数目来改进性能,许多微处理器提供了用于高速缓存页面映射信息的机制。页面映射信息高速缓存器通常被称为翻译后援缓冲器(TLB)。当微处理器遇到存储器访问指令时,微处理器向TLB提供虚拟地址并且所述TLB执行虚拟页面地址的查找。如果虚拟页面地址在TLB中命中,则TLB提供相应的翻译物理页面地址和页面特性,由此避免了执行表查询的需要。然而,如果虚拟页面地址在TLB中未命中,则微处理器执行表查询。从而,除了根据需要从存储器中读取页面映射信息并且更新页面映射信息之外,表查询还包括微处理器在TLB中分配条目并且利用翻译物理地址和页面特性来更新所述条目。
作为总结,概括地讲,表查询包括三个步骤。第一步骤是从存储器中读取用于把虚拟地址翻译为翻译地址并且获得页面特性所要求的必要的页面映射信息。第二步骤是,如果必要的话,更新系统存储器中的页面映射信息。第三步骤是分配TLB条目,并且利用新的页面映射信息来更新所述TLB条目。
许多现代微处理器是超纯量的微处理器。即,微处理器包括多个执行单元并且能够在单个时钟周期内向执行单元发出多个指令。许多现代微处理器还执行非循序执行操作。即,微处理器可以不按照由包括指令的程序所指定的次序来执行指令。超純量非循序执行微处理器一般试图维持相对较大的未执行指令(outstanding instruction)池,使得它们可以享受更大量的指令并行性的益处。
许多现代微处理器还执行推测性指令执行操作。即,微处理器在确实知道指令实际上是否完成所述指令之前指令的执行,或者至少执行由所述指令规定的动作中的一些动作。存在若干为什么指令可能未完成的原因。例如,微处理器可能误预测了比所涉指令更旧的分支指令。举例来说,微处理器可能在所涉指令完成之前出现异常。异常可以是异步的,诸如中断,或者可以是同步的,即由指令所引起的,诸如页面错误、除以零条件、一般保护错误等。导致异常的指令可以是所涉指令或者是比所涉指令更旧的指令。尽管微处理器可以推测性地执行由指令规定的动作中的一些动作,不过在结构上不允许微处理器利用指令的结果来更新系统的结构状态,直到所述指令不再是推测性的为止,即直到确信所述指令将会完成为止。
许多现代微处理器还执行硬件预取。硬件预取通常指的是预期将来需要该信息而把数据(或指令)从存储器中送到高速缓冲存储器中。硬件预取实际上是高度推测性的,这是因为有显著的几率并不会使用所获取的信息。硬件预取器包括检测器等,用于识别微处理器中的模式和访问,并且在软件需要信息甚至请求信息之前产生用于获取所述信息的请求。然而常规的硬件预取器在命中或接近页面边界时停止。由于页面大小可能是未知的,所以通常假定4KB的最小大小。页面边界限制在一定程度上是基于旧系统的,所述旧系统在运用跨过页面边界访问的物理地址时可能会有问题。
在虚拟存储器系统中,硬件预取的虚拟地址首先被转换为翻译物理地址。在TLB中未找到所述翻译地址的情况下,执行表查询以便使用虚拟地址取得所述翻译地址。尽管在随后处理期间使用所取得的信息时硬件预取仍可提供显著的优点,不过硬件预取表查询可能会阻碍基于软件的表查询。基于软件的表查询是基于实际的软件或代码指令的,因而具有比硬件预取操作更高的优先级。从而,强迫基于软件的表查询等待较低优先级的硬件预取表查询是无益的。
发明内容
依照一个实施例的用于微处理器的硬件预取表查询系统包括表查询引擎和硬件预取引擎。表查询引擎可以包括表查询逻辑、比较器和优先逻辑。表查询逻辑配置为执行表查询操作以取得用于所接收的虚拟地址的翻译地址。比较器配置为比较优先级值并且提供比较值。优先逻辑被配置为接收包括虚拟地址和优先级值的新的表查询请求,当表查询逻辑目前不是正在执行表查询操作时,由所述表查询逻辑发起新的表查询操作以寻找与所述新的表查询请求相关联的虚拟地址,并且当所述比较值表明新的表查询请求具有比所述当前的表查询操作更高的优先级值时,使表查询逻辑清除当前的表查询操作并且发起新的表查询操作。硬件预取引擎配置为提交由所述表查询引擎接收的硬件预取表查询请求,以便使用最低优先级值执行硬件预取表查询操作。
在一个实施例中,硬件预取引擎被配置为执行无界(boundless)的硬件预取模式检测,所述无界的硬件预取模式检测不受页面边界限制以提供硬件预取表查询请求。依照这种方式,硬件预取表查询操作可以是无年龄的且无界的。硬件预取表查询操作可以由于各种原因被暂停,比如当它试图执行非允许操作时,比如正在更新微处理器的结构状态。优先级值可以是用于表明机器中的指令的相对时间的年龄值。
依照一个实施例的微处理器包括至少一个软件模块、硬件预取引擎、翻译后援缓冲器和表查询引擎。每个软件模块配置为对于与软件虚拟地址和对应的软件优先权值的翻译地址而提交基于软件的请求。硬件预取引擎配置为监视微处理器的活动,并且为对于与硬件虚拟地址对应和对应的具有最低优先级的硬件优先级值的翻译地址而提交基于硬件的请求。翻译后援缓冲器配置为存储用于对应虚拟地址的翻译地址,其中所述翻译后援缓冲器配置为接收基于数据的请求、基于代码的请求和基于硬件的请求,并且当存储时提供所请求的翻译地址,并且当未存储时提交对应的包括所接收的虚拟地址和所接收的优先级值的新的表查询请求。表查询引擎配置为接收所述表查询请求,当空闲时发起新的表查询操作以便确定该表查询请求的对应的翻译地址,并且当新的表查询请求的优先级值高于当前的表查询请求的优先级值时终止所述当前的表查询操作并且发起所述新的表查询操作。
所述软件模块可以包括与取指令相关联的代码模块。所述软件模块可以包括与数据访问相关联的存储器模块。
依照一个实施例的能够执行硬件预取表查询的方法包括:接收包括新的优先级值的新的表查询请求以执行新的表查询操作,其中当所述请求包括硬件预取表查询请求时,新的优先级值包括最低的优先级值,当目前未正在执行表查询操作执行所述表查询操作,当目前正在执行表查询操作行时,把所述新的优先级值与当前的优先级值相比较,当所述新的优先级值具有比所述当前的优先级值更低的优先级时拒绝所述新的表查询请求,并且除非目前正在更新翻译后援缓冲器,否则当新的优先级值具有比当前的优先级值更高的优先级时终止当前的表查询操作并且发起新的表查询操作。
所述方法可以包括当试图执行非允许操作时暂停硬件预取表查询操作。所述方法可以包括当试图更新微处理器的结构状态时暂停硬件预取表查询操作。所述方法可以包括硬件预取引擎产生硬件预取表查询请求,所述硬件预取引擎被配置为执行不受页面边界限制的无界的硬件预取模式检测。所述方法可以包括接收包括年龄值的新的表查询请求。
附图说明
就以下描述和附图将更好地理解本发明的益处、特征和优点,其中:
图1是包括依照本发明实施例实现的硬件预取表查询系统的微处理器的简化框图;
图2是用于请求虚拟地址(VA)并将其转换为对应的翻译地址(TA)的图1的微处理器的一部分的简化框图;
图3是用于依照本发明一个实施例图示的被配置为执行无界的和无年龄的硬件预取表查询操作的表查询引擎的进一步细节的简化框图;和
图4是依照本发明一个实施例图示由图2的硬件预取引擎、TLB和表查询引擎为硬件预取表查询操作所执行的操作的流程图。
具体实施方式
发明人已经认识到与常规的硬件预取操作相关联的低效率。因此发明人已经开发出用于执行具有最低表查询优先级的硬件预取表查询的系统和方法。所述系统和方法允许在不阻碍由软件发起的表查询请求的情况下对表查询进行硬件预取。本文所用的软件表查询请求指的是由指令高速缓存器请求发起的代码表查询、或者由加载/存储高速缓存器请求发起的数据表查询。所述系统和方法提供了基于优先级的表查询处理,使得可以通过具有“较老”年龄(较高优先级)的请求排挤(bump)具有“较年轻”年龄(较低优先级)的请求的表查询处理。所述系统和方法提供了“无年龄的”硬件预取表查询,其中每个硬件预取表查询被认为是最年轻的,从而具有最低可能的优先级。依照这种方式,只要没有正在执行不应当被中断的任务,硬件预取表查询请求便不会排挤较高优先级的软件表查询,并且较高优先级的表查询请求始终可以排挤硬件预取表查询。
此外,当硬件预取表查询试图更新微处理器100的体系结构状态时,当它遇到强排序(strongly orderd)的情况时,当它试图执行非允许操作时,在页面错误的情形下等等,硬件预取表查询不会排挤自身,而是替代为简单地暂停硬件预取表查询。暂停的硬件预取表查询操作最终可能由于各种原因而被清除,诸如当微处理器被置于空闲状态时,或者当硬件预取被异步禁用时,或者当被另一表查询请求排挤时。此外,所述系统和方法允许硬件预取是无界的,这是因为它们并不限于页面边界。
图1是包括依照本发明实施例实现的硬件预取表查询系统的微处理器100的简化框图。微处理器100的宏体系结构可以是x86宏体系结构,其中它可以正确地执行被设计成在x86微处理器上执行的大部分应用程序。如果获得预期的结果,则正确地执行了应用程序。特别是,微处理器100执行x86指令集的指令,并且包括x86用户可见的寄存器集。然而本发明不限于x86体系结构,其中微处理器100可以是依照本领域普通技术人员已知的任何替代体系结构。
在所图示的实施例中,微处理器100包括指令高速缓存器102、前端管道104、保留站106、执行单元108、存储器排序缓冲器(MOB)110、重排序缓冲器(ROB)112、二级(L2)高速缓存器114、用于接口和访问系统存储器118的总线接口单元(BIU)116,和硬件预取引擎120。指令高速缓存器102高速缓存来自系统存储器118的程序指令。前端管道104从指令高速缓存器102中取出程序指令并且把它们解码为供微处理器100执行的指令。前端管道104可以包括解码器(未示出)和一个或多个解译器(未示出),用于一起解码宏指令并将其解译为一个或多个指令。
在一个实施例中,指令解译是用于把微处理器100(诸如x86指令集结构)的宏指令集的宏指令解译为微处理器100的微指令集结构的微指令。例如,存储器访问指令可以被解码为包括一个或多个加载或存储微指令的微指令序列。在其它实施例中,加载和存储微指令可以是微处理器100的本地指令集的一部分。这里微指令或微操作等被简单地称为“指令”。前端管道104还可以包括寄存器别名表(RAT)(未示出),用于根据其程序次序、指定的操作数来源、以及重命名信息来为每个指令产生相关性信息。
前端管道104把解码的指令和它们相关联的相关性信息分派到保留站106。保留站106包括用于保持从RAT接收的指令和相关性信息的队列。保留站106还包括发布逻辑,用于当准备执行来自队列的指令时,向执行单元108和MOB 110发布所述指令。当指令的所有相关性被解析时,所述指令便准备好被发布和执行了。结合分派指令,RAT为所述指令分配在ROB 112中的条目。从而,所述指令依照程序次序而被分配到ROB 112中,所述ROB 112可以被配置为用于保证所述指令依照程序次序而引退(retire)的循环队列。RAT还向ROB 112提供相关性信息以便存储在指令的条目中。当ROB 112重新执行指令时,它在指令重新执行期间向保留站106提供在ROB条目中存储的相关性信息。
微处理器100是超纯量的,包括多个执行单元并且能够在单个时钟周期内向执行单元108发出多个指令。微处理器100还被配置为执行非循序执行。即,保留站106可以不按照由包括指令的程序所指定的次序来发布指令。超纯量非循序执行微处理器一般试图维持相对较大的未执行指令池,使得它们可以享受更大量的指令并行性的益处。微处理器100还可以执行推测性指令执行操作,其中微处理器100在其确实知道指令实际上是否完成指令之前指令的执行,或者至少执行由所述指令规定的动作中的一些动作。指令可能由于各种原因而未完成,诸如误预测的分支指令、异常(中断、页面错误、除以零条件、一般保护错误等)等。尽管微处理器100可以推测性地执行由指令规定的动作中的一些动作,不过微处理器不会利用指令的结果来更新系统的结构状态,直到确实知道所述指令将会完成为止。
MOB 110通过L2高速缓存器114和BIU 116实现与系统存储器118的耦接。BIU 116将微处理器100耦接至与系统存储器118和诸如系统芯片组之类的其它设备相连接的处理器总线(未示出)。在微处理器100上运行的操作系统把页面映射信息存储到系统存储器118中,所述微处理器100读取和写入所述系统存储器118以便执行表查询。当指令被保留站106发布时,执行单元108执行所述指令。在一个实施例中,执行单元108可以包括微处理器的所有执行单元,诸如算术逻辑单元(ALU)等。在所图示的实施例中,MOB 110整合了加载和存储执行单元,用于执行加载和存储指令以便访问系统存储器118,如本文进一步所描述的。执行单元108在访问系统存储器118时,与MOB 110耦接。硬件预取引擎120被示为与MOB 110耦接。
图2是用于请求虚拟地址(VA)并将其转换为对应的翻译地址(TA)的微处理器100的一部分的简化框图。如这里所用,翻译地址可以是物理地址或物理地址翻译,更一般地说称为翻译地址。使用一组虚拟地址(也称为“线性”地址等)来引用虚拟地址空间,其中操作系统使所述一组虚拟地址可用于给定进程。翻译地址用来访问系统存储器118中的指令和数据。指令提取引擎202、硬件预取引擎120、和MOB 110均向一级(L1)翻译后援缓冲器(TLB)204提供对应的虚拟地址。
L1 TLB 204为对应的虚拟地址高速缓存有限数目的翻译地址。如果对应于虚拟地址的翻译地址TA被存储在L1 TLB 204内,则该翻译地址TA被返回到请求实体。在一个实施例中,L1 TLB 204包括L1指令TLB(L1 I TLB)和L1数据TLB(L1 D TLB)。
如果对应于虚拟地址的翻译地址TA未被存储在L1 TLB 204内,则在L1 TLB 204中出现MISS(未命中),并且请求被提交到二级(L2)TLB 206和表查询引擎208。L2 TLB 206也为对应的虚拟地址高速缓存有限数目的翻译地址,但通常比L1 TLB 204更大且更慢。L2TLB 也是与L1 TLB 204一体化的,因其包含处理代码和数据请求两者。L1 TLB 204和L2TLB 206可以一起被称为TLB 205。如果在L2 TLB 206内找到翻译地址TA,则该翻译地址TA被提供到L1 TLB 204,L1 TLB 204随后将翻译地址TA转送到请求实体。在L2 TLB 206内HIT(命中)使得在L2 TLB 206内找到翻译地址TA的情况下,则把CANCEL(取消)信号提交到表查询引擎208以便取消刚发起的表查询操作。如果随后的请求具有比目前正在执行的表查询操作更低的优先级,则在表查询引擎设置BUSY(忙碌)信号等的情况下可以拒绝此随后请求。否则,表查询引擎208执行表查询操作以取得翻译地址TA并把它发送到L1 TLB 204,而L1 TLB 204把翻译地址TA转送到请求实体。
应当注意,即使当翻译地址TA位于L2 TLB 206内时,即便随后的请求不需要表查询引擎208,也可以终止并排挤目前正在表查询引擎208中执行的较低优先级表查询操作。在替代实施例中,可以只在L2 TLB 206内出现MISS(未命中)之后向表查询引擎208提供虚拟地址VA,以避免过早地终止当前的表查询操作。然而应注意,即使当可以终止某些表查询操作时,仍然为较高优先级请求尽快地发起表查询操作可能是有益的。在图示的配置中,所述请求被同时提交到L2 TLB 206和表查询引擎208。
当将翻译地址TA从L2 TLB 206或表查询引擎208提供到L1 TLB 204时,该翻译地址TA可以移走L1 TLB 204内的牺牲条目。如果这样的话,从L1 TLB 204输出的牺牲条目被存储在L2 TLB 206内。从L2 TLB 206推挤出的牺牲条目可被丢弃。
指令提取引擎202监视指令指针(IP)的虚拟地址或类似的指标,并且利用来自系统存储器118的指令的页面来填充对应的指令高速缓存器102。指令提取引擎202向L1 TLB204提供被示为VAC(代码虚拟地址)的虚拟地址,以取得对应的翻译地址TA。指令提取引擎202还连同VAC一起产生并提供AGE(年龄)值。如本文将进一步描述的,AGE值被用作确定在表查询请求之间的相对优先级的优先级值。
在图示的配置中,AGE值是用于标识正被发布的请求的相对年龄的时间值,并且用来区分表查询引擎208中的较旧和较新的请求。可以使用其它类型的优先级值,诸如基于包括请求的相对重要性在内的附加准则的那些优先级值。AGE(和AGE0)值可以遵循请求的虚拟地址,但是不必被TLB 205使用。
MOB 110提交用于加载和存储指令的虚拟地址,其中虚拟地址被示为VAD(数据虚拟地址)。加载和存储指令是用于最终定位在系统存储器118中,对应于翻译地址的数据的存储器访问指令。在图示的配置中,可以非循序地以及推测性地执行加载指令。尽管存储指令可以不按照程序次序来执行,不过它们不会被推测性地提交(commit)。MOB 110为每个数据类型指令产生虚拟地址VA和AGE值。
硬件预取引擎120包括检测器等(未示出),用于诸如通过识别模式以及通过MOB110访问来监视微处理器100的活动,以及在软件需要信息甚至请求信息之前产生硬件预取请求以取得信息。硬件预取引擎120产生用于访问信息的、被示为VAH(硬件虚拟地址)的虚拟地址VA,其中所述信息被硬件预取引擎120确定为在随后时间将被需要。硬件预取引擎120使用所取得的翻译地址TA,以便根据预取确定来加载信息。硬件预取引擎120还产生伪AGE值AGE0,AGE0被硬件预取引擎120分配给每个硬件预取虚拟地址。AGE0值是虚假的,这是由于它并不反映硬件预取请求的任何实际时间或年龄,而是作为被认为比任何与指令相关联的基于软件的年龄值“更新”或“更年轻”的值。由于用于硬件预取的AGE0值被认为比为基于软件的请求所产生的任何AGE值更年轻,所以硬件预取具有最低优先级。
如本文所描述,由硬件预取引擎120执行的硬件预取是无界的,这是由于所述硬件预取引擎120在确定虚拟地址的时候忽略页面边界。硬件预取本质上已经是高度推测性的,而无界的硬件预取进一步增加了可能不使用预取信息的可能性。因而,允许硬件预取引擎120消耗包括表查询引擎208在内的宝贵资源可能是不利的,因为这会潜在地阻碍由指令提取引擎202和/或MOB 110产生的较高优先级的软件表查询请求。尽管如此,如果表查询引擎208是空闲的,那么只要不阻碍基于软件的表查询便允许硬件预取引擎120发起表查询操作,则是有益的。如本文所描述,用于无界和无年龄的硬件预取表查询的系统和方法,在不阻碍软件表查询操作的情况下改进了对表查询引擎208的利用率。
图3是图示用于依照本发明一个实施例的被配置为执行无界和无年龄的硬件预取表查询操作的表查询引擎208的进一步细节的简化框图。如前所述,虚拟地址VA来源于指令提取引擎202、MOB 110或硬件预取引擎120。AGE值标识相对年龄,从而标识请求的相对优先级。例如,AGE值区分来源为前端管道104内的一个或多个指令解译器(未示出)的较旧指令和较新指令,所述指令翻译器把结构指令(微处理器100的指令集结构(ISA)的指令,诸如英特尔的x86 ISA或高级RISC机器ISA等)转换为对应的指令。对于表查询操作来说,较旧指令具有高于较新指令的优先级。
在一个不支持推测性代码表查询的实施例中,由指令提取引擎202发起的AGE值可以被配置为是“最旧的”,从而具有最高优先级。当支持推测性代码表查询时,表查询的年龄可以改变。推测性代码表查询的年龄最初被置于真正的基于软件的数据表查询和硬件预取的年龄之间。如果推测性代码表查询在变为非推测性之前尚未完成,则它变为具有最高优先级的最旧表查询。
虚拟地址VA和对应的年龄值AGE或AGE0被提供给表查询引擎208的表查询(TW)优先级逻辑302。如果由于任何原因导致表查询引擎208没能接收到请求,则表查询引擎208用BUSY(忙碌)信号等作出响应。与所述请求相关联的年龄值(被示为AGEREQUEST)存储在存储单元304处。如果表查询引擎208目前正处理表查询操作,则相关联的有效年龄值(被示为AGEACTIVE)存储在另一存储单元306处。比较器308把AGEREQUEST与AGEACTIVE相比较并且输出比较值CMP,所述比较值CMP被提供给TW优先级逻辑302。当接受表查询操作可以处理时,TW优先级逻辑302向用于执行表查询操作的主TW逻辑310提供信号START(开始)和虚拟地址VA。TW优先级逻辑302将与所述请求对应的对应AGE值加载到存储单元306,使得所述对应AGE值变为当前的有效年龄值AGEACTIVE。存储单元304和306可以采用任何适当的方式来实现,诸如寄存器等。当完成表查询操作时,主TW逻辑310提供对应的翻译地址TA。TW优先级逻辑302还可以通过向主TW逻辑310设置信号FLUSH(清除)来终止当前的表查询操作,所述主TW逻辑310终止所述表查询操作并且清除与其相关联的任何值。
在操作中,请求被提交到TW优先级逻辑302以便发起对于所提供的虚拟地址的表查询操作。如先前所述,如果在L2 TLB 206内找到翻译地址,则它可以通过设置CANCEL(取消)来取消该请求。接收的年龄值被加载到存储单元306中作为AGEREQUEST。如果表查询引擎208是空闲的,则虚拟地址VA被提供到主TW逻辑310并且开始表查询操作。然而如果表查询引擎208忙于处理表查询操作,则TW优先级逻辑302根据比较值CMP来确定相对优先级。如果新的请求具有较低优先级,则TW优先级逻辑302拒绝该请求,比如通过设置BUSY(忙碌)信息。如果新的请求具有较高优先级,并且如果当前的表查询操作可被中断,比如当不是正在更新包括TLB 205在内的结构参数时,则当前的表查询操作被清除并且启动较高优先级表查询。
如前所述,当新的请求是硬件预取表查询时,则AGE0被加载到存储单元304中作为AGEREQUEST。如果表查询引擎208忙于处理表查询操作,则硬件预取表查询请求被拒绝。如果表查询引擎208空闲,则可以开始硬件预取表查询请求,在该情况下AGE0被加载到存储单元306中作为AGEACTIVE。任何随后的基于软件的表查询请求具有比硬件预取表查询操作更高的优先级。只要硬件预取表查询操作并不处于不可以被中断的时段,表查询引擎208就支持较高优先级的请求(例如,基于软件的请求),终止并清除该硬件预取表查询操作。
图4是图示依照本发明一个实施例的由硬件预取引擎120、TLB 205和表查询引擎208为硬件预取表查询操作所执行的操作的流程图。在402处,如前所述,硬件预取引擎120经由MOB 110连续地(或至少周期地)监视微处理器100的活动,并且利用虚拟地址(VA)和AGE0产生硬件(HW)预取请求。硬件预取请求是无界的,这是由于硬件查询引擎120在产生该请求的时候忽略或者不考虑任何页面边界。在404处,虚拟地址VA被提交至TLB 205(例如,经由L1 TLB 204)以便取得对应的翻译地址TA。在406处,查询在TLB 205内是否存在命中。如果虚拟地址VA在TLB 205内命中,则操作继续至408。而在408处,表查询引擎208使用翻译地址TA依照正常的硬件预取操作来取得信息。例如,硬件预取引擎120可以把一条或多条高速缓存线加载到MOB 110内的数据高速缓存器系统中。然后操作返回到402,以产生另一无界的硬件预取请求。只要在TLB 205中找到翻译地址,操作就可以在402和408之间循环执行。
该流程图已被简化,因为当在404处检查TLB 205以寻找翻译地址TA时,这包括在L1 TLB 204内出现未命中的情况下,随后在L2 TLB 206寻找翻译地址。如前所述,在L1 TLB204内出现未命中的情况下,随后该请求被提交到L2 TLB 206和表查询引擎208两者。然而如先前所述,在L2 TLB 206内出现命中的情况下,取消由表查询引擎208发起的表查询操作。
如果在TLB 205中没有找到虚拟地址VA,则在410处,使用虚拟地址VA和年龄值AGE0把硬件(HW)预取请求提交到表查询(TW)引擎208。在412处,询问表查询引擎208是否忙于另一表查询操作。在一个实施例中,一次只提交一个硬件预取。由于利用年龄值AGE0提交硬件预取请求,所以硬件预取请求具有最低优先级,并且TW优先级逻辑302不会清除当前的表查询操作并且设置BUSY(忙碌)以拒绝新的请求。在另一实施例中,可以同时提交多个硬件预取请求。尽管如此,TW优先级逻辑302不会因为随后的硬件预取表查询操作(较新的)而中断当前的硬件预取表查询操作(较旧的),从而一般来说会拒绝新的硬件表查询请求。当在412处确定表查询引擎208为忙碌时,操作返回到402,而在402处,硬件预取引擎120继续监视操作以提交相同的或不同的硬件预取请求。
如果在412处确定表查询引擎208不忙碌,则操作继续至414,而在414处,表查询引擎208处理请求的硬件(HW)预取表查询(TW)操作。在对于硬件预取的表查询操作期间,如在流程图中的不同循环所图示的,顺序地或同时地监视几个不同的处理考虑因素。硬件预取表查询操作可以被基于软件的表查询请求中断,因为被暂停的硬件预取表查询操作可能试图执行或完成非允许操作,或者它可以完成。尽管并未示出,不过包括硬件预取表查询操作在内的任何表查询操作都可能由于在本公开内容范围之外的各种其它原因而被系统中断。
在415处,如同所示,可以接收基于软件(SW)的表查询(TW)请求。如果没有接收到,则硬件预取表查询操作继续处理。如果接收到基于软件的表查询,则操作继续至416,在416处,查询当前的硬件预取表查询操作是否正在更新TLB 205。如果是的话,则即使具有较高优先级表查询请求,也不希望中断硬件预取表查询操作,并且操作继续至其中设置BUSY(忙碌)的418。基于软件的表查询请求可以在稍后时间进入队列并重新提交,并且当硬件预取表查询操作接近完成时,只是略微地延迟基于软件的表查询请求。换句话说,如果硬件预取表查询操作不是正在更新TLB 205,则操作继续至420,在420,支持基于软件的表查询请求而终止并清除硬件预取表查询操作。然后操作返回到402以产生另一无界的硬件预取请求。在一个实施例中,表查询引擎208不必查询是否接收了基于软件的表查询请求,取而代之的是类似于接收中断时的处理方式。
如在422处确定的,如果当前的硬件预取表查询操作试图执行非允许操作,比如试图进行结构修改、遇到强排序情况(例如,设置受访问位元或者执行强排序访问),导致页面错误等,则在424处暂停硬件预取表查询操作。并非清除硬件预取表查询操作,而是无限地保持暂停直到由于任何原因而被系统清除,所述原因包括被较高优先级的基于软件的表查询请求终止。如果当前的硬件预取表查询操作没有试图执行非允许操作,则操作循环返回到414以允许硬件预取表查询操作完成。依照这种方式,并非清除硬件预取表查询操作,而是在表查询引擎208中无限地暂停直到由于各种原因而被系统清除,所述原因包括被较高优先级的请求终止。
硬件预取表查询操作继续,直到如428所示完成,除非被较高优先级的请求暂停或排挤。如果硬件预取表查询操作完成,则操作继续至408,在408处,硬件预取引擎120使用翻译地址TA取得目标信息,然后继续至402以产生另一无界的硬件预取请求。
总之,硬件预取表查询请求不会中断正在进行中的表查询操作,并且除非该硬件预取表查询请求几乎已经完成以及正在更新TLB 205,否则可能总是被较高优先级的请求排挤。依照这种方式,硬件预取表查询操作是非阻碍的。当硬件预取表查询操作可能试图执行非允许操作时,硬件预取表查询操作不会排挤自身。代之以,硬件预取表查询操作被无限地暂停或者直到被较高优先级的表查询请求排挤。如果硬件预取表查询操作未被中断,并且如果其没有试图执行非允许操作,则所述硬件预取表查询操作完成,从而提供翻译地址TA,由此可以从系统存储器118取得想要的信息。硬件预取引擎产生不受页面边界等限制的无界请求。因而,硬件预取请求可以被认为是无界的和无年龄的。
提供上述描述以使一个本领域普通技术人员能够制作并使用在特定的应用及其要求的范围内提供的本发明。尽管已经参考其优选版本非常详细地描述了本发明,不过其它版本和变型也是可行的和可构思的。对优选实施例的各种修改对一个本领域技术人员来说是显而易见的,并且本文限定的一般原理可以应用于其它实施例。例如,本文描述的电路可以采用任何适当的方式来实现,包括逻辑器件或电路等。
那些本领域技术人员应当理解,在不脱离本发明的精神和范围的情况下他们可以容易地使用所公开的概念和具体实施例作为设计或修改用于实现本发明的相同目的的其它结构的基础。因此,本发明并不意在限于本文示出和描述的特定实施例,而是与本文公开的原理和新颖特征相符合的最宽范围一致。
Claims (20)
1.一种用于微处理器的硬件预取表查询系统,包括:
表查询引擎,包括:
表查询逻辑,配置为执行表查询操作以将所接收的虚拟地址翻译为翻译地址;
比较器,配置为比较优先级值并且提供比较值;和
优先级逻辑,配置为:
接收包括虚拟地址和优先级值的新的表查询请求;
当所述表查询逻辑目前不是正在执行表查询操作时,由所述表查询逻辑发起新的表查询操作以将与所述新的表查询请求相关联的虚拟地址翻译为对应的翻译地址;并且
当所述表查询逻辑正在执行当前的表查询操作时,并且当所述比较值表明所述新的表查询请求具有比所述当前的表查询操作更高的优先级值时,使所述表查询逻辑清除当前的表查询操作并且发起所述新的表查询操作;和
硬件预取引擎,配置为提交由所述表查询引擎接收的硬件预取表查询请求,以便使用最低优先级值执行硬件预取表查询操作。
2.如权利要求1所述的硬件预取表查询系统,其中所述硬件预取引擎被配置为执行无界的硬件预取模式检测来提供所述硬件预取表查询请求,所述无界的硬件预取模式检测不受页面边界的限制。
3.如权利要求1所述的硬件预取表查询系统,其中当所述表查询引擎正在更新翻译后援缓冲器时,所述表查询逻辑不清除所述当前的表查询操作。
4.如权利要求1所述的硬件预取表查询系统,其中响应于当所述表查询引擎正在更新翻译后援缓冲器且随后的表查询请求具有较高优先级时,所述表查询逻辑不清除所述硬件预取表查询操作。
5.如权利要求1所述的硬件预取表查询系统,其中所述表查询逻辑暂停正在执行的当前的硬件预取表查询操作,以防止所述当前的硬件预取表查询操作执行非允许操作。
6.如权利要求5所述的硬件预取表查询系统,其中所述表查询引擎不清除暂停的硬件预取表查询操作,直到被微处理器请求、或者响应于随后的表查询请求为止。
7.如权利要求1所述的硬件预取表查询系统,其中所述优先级值包括表示请求的相对年龄的年龄值,所述相对年龄指示相对优先级。
8.如权利要求1所述的硬件预取表查询系统,其中所述优先级逻辑还配置为当所述比较值表明所述新的表查询请求具有比所述当前的表查询操作更低的优先级值时,拒绝所述新的表查询请求。
9.一种微处理器,包括:
至少一个软件模块,配置为以基于软件的请求的方式提交对于翻译地址的请求,所述请求包括软件虚拟地址和用以将所述软件虚拟地址翻译为翻译地址的软件优先权值;
硬件预取引擎,配置为监视微处理器的活动,并且以基于硬件的请求的方式提交对于翻译地址的请求,所述请求包括硬件虚拟地址和用以将所述硬件虚拟地址翻译为翻译地址的具有最低优先级的硬件优先级值;
翻译后援缓冲器,配置为存储用于对应的多个虚拟地址的多个翻译地址,其中所述翻译后援缓冲器配置为接收基于数据的请求、基于代码的请求和基于硬件的请求,并且当存储时提供所请求的翻译地址,并且当未存储时提交对应的包括所接收的虚拟地址和所接收的优先级值的新的表查询请求;和
表查询引擎,配置为接收所述表查询请求,当空闲时发起新的表查询操作以确定所述表查询请求的对应的翻译地址,并且当忙于处理当前的表查询操作、并且所述新的表查询请求的优先级值高于所述当前的表查询请求的优先级值时,终止所述当前的表查询操作并且发起所述新的表查询操作。
10.如权利要求9所述的微处理器,其中所述至少一个软件模块包括:
代码模块,配置为对于对应于代码虚拟地址的翻译地址和对应的代码优先权值而提交基于代码的请求;和
存储器模块,配置为对于对应于数据虚拟地址的翻译地址和对应的数据优先权值而提交基于数据的请求;
其中所述代码优先级值和所述数据优先级值均具有比所述硬件优先级值更高的优先级。
11.如权利要求9所述的微处理器,其中所述表查询引擎包括:
表查询逻辑,配置为执行表查询操作,以取得用于所接收的虚拟地址的翻译地址;
比较器,配置为比较优先级值并且提供比较值;和
优先级逻辑,配置为接收所述表查询请求,发起要由所述表查询逻辑执行的新的表查询操作,终止正在由所述表查询逻辑执行的当前的表查询操作,并且使用所述比较值来确定在当前的表查询操作和新的表查询请求之间的优先级。
12.如权利要求9所述的微处理器,其中所述硬件预取引擎被配置为执行无界的硬件预取模式检测来提供所述基于硬件的请求,所述无界的硬件预取模式检测不受页面边界的限制。
13.如权利要求9所述的微处理器,其中当正在更新所述翻译后援缓冲器时,所述表查询引擎不终止所述当前的表查询操作。
14.如权利要求9所述的微处理器,其中所述表查询引擎暂停硬件预取表查询操作,以避免执行非允许操作。
15.如权利要求11所述的微处理器,其中所述表查询引擎还被配置为当所述比较值表明所述新的表查询请求具有比所述当前的表查询操作更低的优先级值时,拒绝所述新的表查询请求。
16.一种能够执行用于微处理器的硬件预取表查询的方法,包括:
接收包括新的优先级值的新的表查询请求以执行新的表查询操作,其中当所述请求包括硬件预取表查询请求时,所述新的优先级值包括最低优先级值;
当目前未正在执行表查询操作时,执行所述表查询操作,所述表查询操作包括执行将虚拟地址翻译为翻译地址的操作;
当正在执行当前的表查询操作时,把所述新的优先级值与所述当前的表查询操作的优先级值相比较;
当所述新的优先级值具有比所述当前的表查询操作的优先级值更低的优先级时,拒绝所述新的表查询请求;并且
除非目前正在更新翻译后援缓冲器,否则当所述新的优先级值具有比所述当前的表查询操作的优先级值更高的优先级时,终止所述当前的表查询操作,并且发起所述新的表查询操作。
17.如权利要求16所述的方法,还包括当试图执行非允许操作时,暂停硬件预取表查询操作。
18.如权利要求16所述的方法,还包括当试图更新微处理器的结构状态时,暂停硬件预取表查询操作。
19.如权利要求16所述的方法,还包括由硬件预取引擎产生所述硬件预取表查询请求,所述硬件预取引擎被配置为执行不受页面边界限制的无界的硬件预取模式检测。
20.如权利要求16所述的方法,其中所述的接收包括新的优先级值的新的表查询请求的步骤,包括接收包括年龄值的新的表查询请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/540,585 | 2014-11-13 | ||
US14/540,585 US9542332B2 (en) | 2014-11-13 | 2014-11-13 | System and method for performing hardware prefetch tablewalks having lowest tablewalk priority |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389271A CN105389271A (zh) | 2016-03-09 |
CN105389271B true CN105389271B (zh) | 2018-09-04 |
Family
ID=55421574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510777510.4A Active CN105389271B (zh) | 2014-11-13 | 2015-11-13 | 用于执行具有最低表查询优先级的硬件预取表查询的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9542332B2 (zh) |
CN (1) | CN105389271B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3029574B1 (en) * | 2014-12-02 | 2019-09-18 | ARM Limited | Memory management |
CN107329813B (zh) * | 2017-06-09 | 2020-08-04 | 北京中科睿芯科技有限公司 | 一种面向众核处理器的全局感知数据主动预取方法及系统 |
US10649912B2 (en) | 2017-07-14 | 2020-05-12 | International Business Machines Corporation | Method and apparatus for an efficient TLB lookup |
CN112804228A (zh) * | 2020-08-02 | 2021-05-14 | 姚晓红 | 基于边缘计算和智能工业的通信方法及系统 |
CN114327632A (zh) * | 2020-09-30 | 2022-04-12 | 上海商汤智能科技有限公司 | 指令处理设备以及指令处理方法 |
CN112347077A (zh) * | 2020-11-06 | 2021-02-09 | 北京神州数字科技有限公司 | 一种数据查询方法 |
CN114610655B (zh) * | 2022-05-10 | 2022-08-05 | 沐曦集成电路(上海)有限公司 | 连续数据访问处理装置和芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613083A (en) * | 1994-09-30 | 1997-03-18 | Intel Corporation | Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions |
CN1841343A (zh) * | 2005-03-31 | 2006-10-04 | 国际商业机器公司 | 改进任务切换的系统和方法 |
CN100407171C (zh) * | 2005-09-13 | 2008-07-30 | 威盛电子股份有限公司 | 设置高速缓存线填充总线存取优先级的微处理器和方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5564111A (en) * | 1994-09-30 | 1996-10-08 | Intel Corporation | Method and apparatus for implementing a non-blocking translation lookaside buffer |
US5963984A (en) * | 1994-11-08 | 1999-10-05 | National Semiconductor Corporation | Address translation unit employing programmable page size |
US7313658B2 (en) * | 2001-10-23 | 2007-12-25 | Via Technologies, Inc. | Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests |
US6985999B2 (en) * | 2001-10-23 | 2006-01-10 | Ip-First, Llc | Microprocessor and method for utilizing disparity between bus clock and core clock frequencies to prioritize cache line fill bus access requests |
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
US7793067B2 (en) * | 2005-08-12 | 2010-09-07 | Globalfoundries Inc. | Translation data prefetch in an IOMMU |
US8244978B2 (en) * | 2010-02-17 | 2012-08-14 | Advanced Micro Devices, Inc. | IOMMU architected TLB support |
US9378150B2 (en) * | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
US20140129806A1 (en) * | 2012-11-08 | 2014-05-08 | Advanced Micro Devices, Inc. | Load/store picker |
KR102069273B1 (ko) * | 2013-03-11 | 2020-01-22 | 삼성전자주식회사 | 시스템 온 칩 및 그 동작방법 |
US20150286270A1 (en) * | 2014-04-02 | 2015-10-08 | Qualcomm Incorporated | Method and system for reducing power consumption while improving efficiency for a memory management unit of a portable computing device |
-
2014
- 2014-11-13 US US14/540,585 patent/US9542332B2/en active Active
-
2015
- 2015-11-13 CN CN201510777510.4A patent/CN105389271B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5613083A (en) * | 1994-09-30 | 1997-03-18 | Intel Corporation | Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions |
CN1841343A (zh) * | 2005-03-31 | 2006-10-04 | 国际商业机器公司 | 改进任务切换的系统和方法 |
CN100407171C (zh) * | 2005-09-13 | 2008-07-30 | 威盛电子股份有限公司 | 设置高速缓存线填充总线存取优先级的微处理器和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105389271A (zh) | 2016-03-09 |
US20160140046A1 (en) | 2016-05-19 |
US9542332B2 (en) | 2017-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389271B (zh) | 用于执行具有最低表查询优先级的硬件预取表查询的系统和方法 | |
US11868263B2 (en) | Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache | |
US20220358045A1 (en) | Physical address proxies to accomplish penalty-less processing of load/store instructions whose data straddles cache line address boundaries | |
US11836080B2 (en) | Physical address proxy (PAP) residency determination for reduction of PAP reuse | |
KR101086801B1 (ko) | 외부 및 내부 명령 세트를 갖는 데이터 처리 시스템 | |
US8458408B2 (en) | Cache directed sequential prefetch | |
US12086063B2 (en) | Physical address proxy reuse management | |
US5613083A (en) | Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions | |
US20220357955A1 (en) | Store-to-load forwarding correctness checks at store instruction commit | |
US11620220B2 (en) | Cache system with a primary cache and an overflow cache that use different indexing schemes | |
US9898418B2 (en) | Processor including single invalidate page instruction | |
US10713172B2 (en) | Processor cache with independent pipeline to expedite prefetch request | |
CN107992331B (zh) | 处理器及操作处理器的方法 | |
EP1782184B1 (en) | Selectively performing fetches for store operations during speculative execution | |
US20160259728A1 (en) | Cache system with a primary cache and an overflow fifo cache | |
US11481332B1 (en) | Write combining using physical address proxies stored in a write combine buffer | |
US6393523B1 (en) | Mechanism for invalidating instruction cache blocks in a pipeline processor | |
US12061555B1 (en) | Non-cacheable access handling in processor with virtually-tagged virtually-indexed data cache | |
US11416400B1 (en) | Hardware cache coherency using physical address proxies | |
US11416406B1 (en) | Store-to-load forwarding using physical address proxies stored in store queue entries | |
US11397686B1 (en) | Store-to-load forwarding using physical address proxies to identify candidate set of store queue entries | |
US12099448B2 (en) | Virtually-indexed cache coherency using physical address proxies | |
US20220358048A1 (en) | Virtually-indexed cache coherency using physical address proxies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |