CN113641403A - 微处理器和在微处理器中实现的方法 - Google Patents

微处理器和在微处理器中实现的方法 Download PDF

Info

Publication number
CN113641403A
CN113641403A CN202111020120.4A CN202111020120A CN113641403A CN 113641403 A CN113641403 A CN 113641403A CN 202111020120 A CN202111020120 A CN 202111020120A CN 113641403 A CN113641403 A CN 113641403A
Authority
CN
China
Prior art keywords
micro
table lookup
microprocessor
memory access
page address
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
Application number
CN202111020120.4A
Other languages
English (en)
Inventor
柯林·艾迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
St Tour Technology
Centaur Technology Inc
Original Assignee
St Tour Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by St Tour Technology filed Critical St Tour Technology
Publication of CN113641403A publication Critical patent/CN113641403A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Burglar Alarm Systems (AREA)

Abstract

本发明提供微处理器和在微处理器中实现的方法。在一个实施例中,一种微处理器,包括:转译后备缓冲器(TLB),其被配置为指示与存储器访问指令试图访问的存储器页的物理页地址相对应的虚拟页地址在TLB中未命中;第一微操作,其与第一存储器访问指令相对应,并且第一微操作被配置为基于第一虚拟页地址在TLB中的未命中来发起第一推测性表查找;以及第二微操作,其与第二存储器访问指令相对应,并且第二微操作被配置为基于比第一微操作更早并且还基于具有与针对第一存储器访问指令的第一虚拟页地址和属性相匹配的虚拟页地址和属性,在第一微操作的当前处理阶段接管第一微操作的现行的第一推测性表查找。

Description

微处理器和在微处理器中实现的方法
技术领域
本发明大体上涉及微处理器,并且特别地,涉及响应于转译后备缓冲器未命中(translation lookaside buffer miss)而进行页表查找(page tablewalk)的微处理器。
背景技术
许多现代微处理器支持虚拟存储器的概念。在虚拟存储器系统中,在微处理器上执行的程序的指令是指使用微处理器的虚拟地址空间中的虚拟地址或线性地址的数据。微处理器将虚拟地址转译为用于访问物理存储器的物理地址。
微处理器支持的通常的虚拟存储器方案是页式存储器系统。页式存储器系统采用用于将虚拟地址转译或映射到物理地址的分页机制。物理地址空间被划分为固定大小的物理页。通常的页大小为4KB。虚拟地址包括虚拟页地址部分和页偏移部分。虚拟页地址指定虚拟地址空间中的虚拟页(例如,4KB)。微处理器的分页机制将虚拟页地址转译为物理页地址。这个处理称为页转译。页偏移指定虚拟和物理页中的物理偏移(例如,相对于虚拟或物理页地址的虚拟或物理偏移)。
操作系统决定存储器中的哪些物理页将映射到各个虚拟页,并且保持指定映射的页映射信息。当微处理器遇到用于指定虚拟地址以访问存储器中的位置的指令(诸如加载或存储指令)时,微处理器通过使用操作系统的页映射信息将虚拟地址转译为合适的物理地址。操作系统在系统存储器中保持页映射信息。因此,微处理器从存储器读取适当的页映射信息以将虚拟地址转译为物理地址。页映射信息一般分层地布置以减小其大小,这要求微处理器通过在层级的多个级处进行读取操作来遍历层级。为此,并且由于页映射信息的至少一部分通常被称为页表,因此微处理器遍历页映射信息以将虚拟地址转译为物理地址的处理通常被称为页表查找,或者简单地称为表查找,或者本文中主要使用的表查找。关于表查找的更多信息可以在美国专利7,996,650(下文中称为650专利)中找到,其全部内容通过引用并入本文。
在650专利中,将转译后备缓冲器(TLB)描述为通过高速缓存页映射信息来减少向系统存储器的表查找次数的机制的一部分。当微处理器遇到存储器访问指令(例如,加载或存储指令)时,微处理器向TLB提供虚拟地址,并且TLB进行虚拟页地址的查找。如果虚拟页地址在TLB中命中,则TLB提供相应的转译物理页地址和页特征,从而避免了需要进行表查找。然而,如果虚拟页地址在TLB中未命中,则微处理器必须进行表查找。
考虑到上述背景,进一步注意到许多微处理器是超标量的(superscalar)。超标量微处理器包括这样的特征:具有多个执行单元,并且具有在单个时钟周期中向执行单元发出多个指令的能力。超标量微处理器的附加能力包括进行乱序执行(例如,微处理器可以执行由包括指令的程序所指定的乱序指令)和进行指令的推测执行(例如,在确定地知道指令实际上是否将完成之前,微处理器执行指令,或者至少进行由指令所规定的一些动作)。尽管微处理器可以推测地进行指令所规定的一些动作,但是微处理器不被架构允许用指令的结果来更新系统的架构状态,直到指令不再是推测的为止,即直到确定为指令将完成(对应于机器最早的状态)为止。
650专利改进了需要表查找的针对TLB未命中的传统做法。例如,对于传统的乱序执行的微处理器(其遭受需要表查找的TLB未命中),微处理器将表查找与其它未完成的程序指令串行化。也就是说,传统的微处理器在其进行表查找之前等待直到比启动器指令(导致TLB未命中的指令)更早的所有程序指令已经退出为止,并且不向执行单元发出用于执行比启动器指令更新的任何程序指令,直到其完成表查找为止。在650专利中,描述了一种微处理器,该微处理器推测地进行表查找,并且仅在以下情况下将表查找串行化:1)需要与表查找相关联的系统存储器访问在处理器总线上严格有序;2)处理器需要写入系统存储器以更新页映射信息,从而进行表查找;或者3)表查找将更新TLB的系统存储器页是全局页。然而,表查找仍可以改进。
发明内容
在一个实施例中,一种微处理器,包括:转译后备缓冲器,即TLB,其被配置为指示与存储器访问指令试图访问的存储器页的物理页地址相对应的虚拟页地址在所述TLB中未命中;第一微操作,其与第一存储器访问指令相对应,并且所述第一微操作被配置为基于第一虚拟页地址在所述TLB中的未命中来发起第一推测性表查找;以及第二微操作,其与第二存储器访问指令相对应,并且所述第二微操作被配置为基于所述第二微操作比所述第一微操作更早并且还基于具有与针对所述第一存储器访问指令的所述第一虚拟页地址和属性相匹配的虚拟页地址和属性,在所述第一微操作的当前处理阶段接管所述第一微操作的现行的推测性表查找。
通过审查以下附图和详细描述,本发明的其它系统、方法、特征和优点对于本领域技术人员将是明显的或者将变得明显。所有这些附加系统、方法、特征和优点旨在包括在本说明书内、在本发明的范围内,并且受到所附权利要求的保护。
附图说明
参考以下附图,可以更好地理解本发明的各个方面。不必按比例绘制附图中的组件,而是将重点放在清楚地例示本发明的原理上。此外,在附图中,相同的附图标记在多个视图中表示相应部件。
图1是示出实现表查找接管系统的实施例的示例性微处理器的框图。
图2是示例性表查找接管方法的实施例的流程图。
图3是示出另一示例性表查找接管方法的实施例的流程图。
具体实施方式
公开了表查找接管系统和方法的某些实施例,该表查找接管系统和方法通过补救在针对严格有序情形而实施机器最早状态中所涉及的一些低效率处理来改进过去的推测性(speculative)表查找机制。在一个实施例中,表查找接管系统使得针对较早的存储器访问指令(例如,存储或加载指令)的表查找能够在不重新启动表查找的情况下承担或接管(例如,在较新的存储器访问指令已经到达的、表查找处理的当前阶段承担或接管)现行的(active)推测性表查找。该接管发生在某些条件下,即,与相应表查找相对应的各个存储器访问指令指向相同的虚拟页地址(例如,相同的虚拟页),并且它们在其属性方面匹配,如下面进一步描述的。通过这样做,在如果遇到严格有序情形则更新机器最早状态的情况下,保留而不是丢弃从针对较新的存储器访问指令的推测性表查找获得的处理结果。
简而言之,过去的表查找机制效率低下,这是因为如果与存储器访问指令相对应的较早(但后来分派到管线(pipeline)中)的微操作(micro-op)遇到正在现行地进行表查找的较新的微操作,则较新的微操作被逐出,并且较早的微操作发起其自己的、新的推测性表查找。在这些情况下,特别是当被逐出的微操作的工作几乎完成或可能已经完成时,有利于较早的微操作而逐出较新的微操作并开始新的表查找,这会导致现在被逐出的微操作已经完成的工作的丢失,并且效率极低。相比之下,表查找接管系统的某些实施例逐出现行地且推测性地进行表查找的微操作,然而在当前处理阶段接管推测性表查找处理,而不是重新开始表查找,因此在表查找处理期间利用由现在被逐出的微操作已经进行的工作。
在总结了本发明的表查找接管系统的某些特征之后,现在将详细参考如附图中所例示的表查找接管系统的描述。虽然将结合这些附图来描述表查找接管系统,但并不意图将其限制于这里所公开的实施例。也就是说,虽然本发明易于进行各种修改和替代形式,但是其特定实施例在附图中通过示例的方式示出,并且这里将被详细描述成足以使本领域技术人员理解。然而,应该理解,附图及其详细描述不意图将本发明限制于所公开的特定形式。相反,意图是覆盖落入如所附权利要求所限定的本发明的精神和范围内的所有修改、等同项和替代。如在本申请中所使用的,词语“可以”以允许的意义(即,意味着有可能)而不是强制的意义(即,意味着必须)被使用。类似地,词语“包括”意味着包括但不限于。
各种单元、模块、电路、逻辑或其它组件可被描述为“被配置为”进行一个或多个任务。在这样的上下文中,“被配置为”是对结构的广泛叙述,其一般意味着“具有在操作期间进行或能够进行一个或多个任务的电路或其它物理结构”。电路可以是专用电路、或在编码指令的控制下操作的更通用处理电路。也就是说,在描述本发明的各种实现的某些方面或特征时,这里可以使用诸如“单元”、“模块”、“电路”、“逻辑”和“组件”等的术语。本领域技术人员将理解,利用电路实现相应的特征,无论该电路是专用电路还是在微编码指令控制下操作的更通用电路。
另外,单元/模块/电路/逻辑/组件可被配置为即使在单元/模块/电路/逻辑/组件当前不处于操作中的情况下也进行任务。叙述被配置为进行一个或多个任务的单元/模块/电路/逻辑/组件显然不意图针对该单元/模块/电路/逻辑/组件进行功能性限定。在这方面,本领域技术人员将理解,电路元件的特定结构或互连一般将由设计自动化工具的编译器(诸如寄存器传送语言(RTL)编译器)确定。RTL编译器在与汇编语言代码非常相似的脚本上运行,以将该脚本编译成用于最终电路的布局或制造的形式。
也就是说,使用更高级的软件工具来设计(诸如本发明的那些)集成电路以对电路的期望功能操作进行建模。众所周知,“电子设计自动化”(或EDA)是一类用于设计诸如集成电路等的电子系统的软件工具。EDA工具还用于将设计功能编程到现场可编程门阵列(FPGA)中。使用诸如Verilog和超高速集成电路硬件描述语言(VHDL)等的硬件描述符语言(HDL)来创建电路的高级表示,其中根据该高级表示可以推断出较低级表示和最终实际布线。实际上,由于现代半导体芯片可以具有数十亿个组件,因此EDA工具被认为是对于其设计而言必不可少的。在实践中,电路设计者使用诸如C/C++等的编程语言来指定操作功能。EDA软件工具将该指定功能转译为RTL。然后,硬件描述符语言(例如Verilog)将RTL转译为门的离散网表。该网表定义了由例如代工厂等生产的实际电路。实际上,这些工具因其在电子和数字系统的设计过程的促进中的角色和用途而被众所周知并理解,因此这里无需描述。
注意,对表查找的引用包括具有相同或类似功能的术语,包括页表查找或表查找等,并且包括虚拟或线性空间的页表查找。此外,在一些实施例中,表查找包括三个步骤。第一步骤是从存储器中读取将虚拟地址转译为物理地址所需的必要的页映射信息,并且获得页特征。第二步骤是更新系统存储器中的页映射信息(如果需要)。第三步骤是分配转译后备缓冲器(TLB)条目(entry),并且用新的页映射信息更新它。注意,对接手和接管的引用旨在表达相同的处理。
现在参考图1,示出了框图,该框图示出根据本发明的微处理器100。微处理器100包括指令转译器102、微代码104、重命名/分派单元106、重排序缓冲器(ROB)108、执行单元112、退出单元114、总线接口单元(BIU)116和存储器子系统118。存储子系统118包括一级(L1)指令高速缓存122、L1数据高速缓存124、二级(L2)高速缓存126、转译后备缓冲器(TLB)128、加载单元132、存储单元134、加载缓冲器136、存储缓冲器138和表查找引擎142。在实施例中,加载单元132和存储单元134包括在执行单元112中。BIU 116使微处理器100与处理器总线连接,系统存储器和诸如系统芯片组等的其它装置耦接到处理器总线。例如,BIU 116接收需要绕过高速缓存层级和写入组合缓冲器(write combine buffer)这两者的加载或存储请求(例如,向不可高速缓存存储器、MMIO装置、具有直写(write-through)特征的可高速缓存存储器、或者跨越两个高速缓存行的原子读取-修改-写入序列(所谓的锁分解(split lock)事务)的加载或存储)。当BIU 116接收到这些加载或存储请求之一时,它确定最终目的地(例如,DRAM、V4接口、PCIe等),并且将该请求拆分成多个事务(如果需要)。在微处理器100上运行的操作系统将页映射信息存储在系统存储器中,微处理器100读取和写入该系统存储器以进行表查找,如本文所述。
指令转译器102从存储器子系统118(诸如L1指令高速缓存122等)接收宏指令,并且将宏指令转译成其提供给重命名/分派单元106的微指令。对于某些宏指令,指令转译器102将控制权转移到微代码104,微代码104将微指令提供给重命名/分派单元106。一些微指令(微操作)是访问存储器的加载或存储指令,这里也称为存储器访问指令。也就是说,加载/存储指令指定虚拟地址以访问微处理器100的存储器空间中的存储器或其它装置,其中BIU 116使用物理存储器地址在处理器总线上访问所述存储器或其它装置。TLB 128高速缓存最近访问的存储器页的虚拟到物理页地址转译和页特征,以减少微处理器100执行加载/存储指令所需的时间量。
重命名/分派单元106为微处理器100中未完成的各个微指令分配ROB 108中的条目。即使执行单元112可能不按程序顺序执行分派给它们的微指令,也按程序顺序将微指令分配到ROB 108中,并且由退出单元114按程序顺序从ROB 108退出微指令。在一个实施例中,可以根据ROB 108和退出单元108的索引之间的关系来确定给定微操作的年龄。存储单元134通过将数据写入存储缓冲器138来执行存储指令,存储缓冲器138随后将数据写入诸如系统存储器、L2高速缓存126和/或L1数据高速缓存124等的存储器。加载单元132通过从系统存储器、L2高速缓存126和/或L1数据高速缓存124向加载缓冲器136读取数据来执行加载指令。
当加载/存储指令在TLB 128中未命中时,相应的微操作与表查找引擎142一起推动表查找操作,如下文关于图2所述。
现在关注于图2,其示出示例性表查找接管方法144的实施例。在开始对方法144的描述之前,应当注意,不管是否存在需要串行化(例如,存在如下的串行化条件:在继续之前要求表查找是最早的表查找)的有序情形,都可以进行所公开的实施例的表查找接管。例如,表查找引擎142(或者在一些实施例中,微处理器100的其它逻辑)确定当前表查找加载操作是否是严格有序的。表查找加载操作是从存储器到微处理器100的页映射信息(诸如页目录条目或页表条目(也包括分页条目))的加载,该加载使得表查找引擎142使能或触发表查找引擎142推动表查找操作。在一个实施例中,如果存储器位置包含不可高速缓存的分页条目(例如,通过定义而不允许对该分页条目的推测性访问),则表查找加载是严格有序的。在一个实施例中,表查找引擎142确定分页条目的存储器位置是否具有不可高速缓存的特征(是否设置了页映射信息中的它的页级高速缓存禁用(page-level cache disable,PCD)位)。具体地,微处理器100进行检查以避免请求BIU 116进行与处于不正确顺序的表查找相关联的处理器总线上的事务,这是因为分页条目的存储器位置被指定为不可高速缓存。注意,可以使用其它和/或附加机制来确定分页条目的存储器位置是否是不可高速缓存的。例如,存储器类型范围寄存器(MTRR)与页属性表(PAT)机制结合,来使用PCD/PAT/PWT位作为与MTRR特征组合以确定真实特征的参考。实际上,下一级条目的存储器位置的地址与来自当前级的信息(PCT等)组合以确定下一级条目的位置是否严格有序。MTTR和PAT机制的附加信息在本领域中是已知的,并且可以参考公开可得的信息(诸如来自Intel(注册商标)的软件开发人员手册(例如,Addendum-Intel Architecture Software Developer’s Manual,Vol.3:system Programming Guide,通过引用并入本文)。此外,如果需要更新分页信息(例如,分页条目中的访问位或脏位(dirty bit))或者如果所得到的物理页是全局的,则给定的表查找加载操作也可以是严格有序的。关于这些情形的进一步信息可以在上述650专利中找到。
如上所述,当不存在串行化条件时,也可以进行表查找接管。例如,可能存在这样的场景:存在向同一位置的较早存储,或者存在存储器界定(memory fencing)操作,这并不总为要求表查找引擎是最早的串行化情况。存储/界定必须最终首先完成,或者表查找引擎要由比存储/界定更早的指令接管。
鉴于前述说明,表查找接管方法144在图2中示出并且以下在不参考串行化情况的状态下进行说明,而且理解接管可以涉及或可以不涉及串行化情况。此外,为了说明起见,表查找接管方法144在两个示例性指令的上下文中描述,该两个示例性指令以相反顺序分派,并且可能间隔几个时钟周期。以下也称为较早的或第一微操作和较新的或第二微操作的这些指令按相反顺序分派(例如,较新的微操作先被分派到管线中)。注意,对第一和第二的提及没有特别的相关性,特别是不一定等同于在权利要求书中使用的类似术语。
在框146处,微处理器100接收存储器访问指令146(例如,加载/存储指令),下文中也称为第二微操作,如前面段落所述。流程前进到框148。
在框148处,微处理器100检测到在加载单元132或存储单元134中执行的存储器访问指令的虚拟页地址在图1的TLB 128中未命中。流程前进到框150。
在框150处,表查找引擎142推动表查找操作。即,表查找引擎142更新微处理器100内的状态以指示需要针对由存储器访问指令访问的存储器页进行表查找。流程前进到框152。
在框152处,第二微操作确定是否存在现行的表查找。为了该示例的目的,假定不存在现行的表查找,因此流程前进到框154。
在框154处,第二微操作发起新的推测性表查找。
现在假定较早的存储器访问指令或第一微操作被分派到管线中。如以上在框146、148和150中类似地说明的,针对第一微指令进行类似的流程。
在框152处,第一微操作确定是否存在现行的表查找。如果否,则流程前进到框154。然而,对于该示例,假定第二微操作尚未完成(推测性)表查找操作,因此确定为存在现行的表查找。流程前进到框156。
在框156处,第一微操作确定其是否比正在进行现行的表查找的第二微操作更早。如果否,则流程前进到框146(例如,在可能的空闲时段之后),其中第一微操作重放到管线中(例如,因为可以存在或可以不存在框148处接着发生的TLB未命中)。如果第一微操作比第二微操作早(如在该说明性示例中的情况),则流程前进到框160。
在框160处,第一微操作将其页和属性与现行地进行表查找的第二微操作的页和属性进行比较。换句话说,第一微操作确定其页地址(例如,诸如与一个图示相同的4k区域等的虚拟页)和属性是否与第二微操作的页地址和属性相同。例如,可以匹配的属性包括权限级别(例如,两个存储器访问指令是否都源自相同的编程代码权限级别,其中如果两者的编程代码都是用户代码或都是监控代码,则发生匹配)。要匹配的属性的另一示例包括由存储器访问指令表示的操作的类型是否相同,其中如果两者都是加载操作或两者都是存储操作,则发生匹配。属性的匹配的另一示例是两个指令都设置访问位或脏位,而例如,如果其中一个指令设置脏位而另一个指令不设置脏位,则不存在匹配。用于匹配的其它类型的属性涉及与实现指令相关的行为。例如,如果其中一个指令涉及预取(prefetch),而另一个指令不涉及预取,则这些是不同的行为,因此不存在匹配。作为另一示例,如果两个指令都涉及可写操作,则存在匹配,而仅一个可写是不匹配。这些和/或其它属性可以是框160中的确定主题。注意,属性确定需要所有属性匹配(例如,匹配是两个指令都涉及可写或启用写的操作(其中页可写且微操作试图写)以及访问位或脏位的设置)。如果在页地址和属性中不存在匹配,则流程前进到框162,否则流程前进到框164。
在框162处,第一微操作引起第二(较新的)微操作的逐出,并且流程前进到框154,在框154处,第一微操作发起新的推测性表查找。
在框164处,基于该匹配,更新表查找引擎142,使得第二微操作表查找现在表示第一微操作。流程前进到框166。
在框166处,在第二微操作离开的处理阶段,第一微操作接管现行的推测性表查找。换句话说,与过去的技术不同,第一微操作不会在逐出较新的微操作后发起新的推测性表查找。而是,第一微操作利用在现行的表查找期间进行的工作并从当前处理阶段继续。
注意,可以在方法144中实现步骤的量和/或顺序的变化,其中一些步骤可以同时进行或以与图2中呈现的顺序不同的顺序进行。在一些实施例中,可以进行更少或更多数量的步骤。
鉴于以上描述,本领域普通技术人员应当理解,如图3的方法168表示并且在一个实施例中由微处理器实现的另一示例性表查找接管方法的一个实施例包括:通过与第一存储器访问指令相对应的第一微操作,基于第一虚拟页地址的转译后备缓冲器(TLB)中的未命中来发起第一推测性表查找(170);以及通过与第二存储器访问指令相对应的第二微操作,基于比第一微操作更早并且还基于具有与针对第一存储器访问指令的第一虚拟页地址和属性相匹配的虚拟页地址和属性,在第一微操作的当前处理阶段接管第一微操作的现行的第一推测性表查找(172)。
流程图中的任何过程描述或块应理解为表示代码的模块、段、逻辑或部分(其包括用于在过程中实现特定逻辑功能或步骤的一个或多个可执行指令),并且替代实现包括在实施例的范围内,其中如本发明领域技术人员将理解的,功能可以不按所示或讨论的顺序地执行(包括基本上同时执行或以不同顺序执行),这取决于所涉及的功能。在一些实施例中,方法144和/或168的功能可以在包括非暂时性计算机可读存储介质的计算机程序产品中实现,该非暂时性计算机可读存储介质具有体现在其中的用于指定被配置为进行推测性表查找的微处理器的计算机可读代码。
虽然在附图和前面的描述中示出并详细描述了本发明,但这样的图和描述应被认为是例示性或示例性的,而不是限制性的;本发明不限于所公开的实施例。通过研究附图、公开内容和所附权利要求书,本领域技术人员在实践所要求保护的发明时可以理解并实现所公开的实施例的其它变形。
注意,可以使用所公开的实施例的各种组合,因此参考实施例或一个实施例并不意味着从其它实施例的特征的使用中排除该实施例的特征。在权利要求中,词语“包括”不排除其它元件或步骤。

Claims (20)

1.一种微处理器,包括:
转译后备缓冲器,即TLB,其被配置为指示与存储器访问指令试图访问的存储器页的物理页地址相对应的虚拟页地址在所述TLB中未命中;
第一微操作,其与第一存储器访问指令相对应,并且所述第一微操作被配置为基于第一虚拟页地址在所述TLB中的未命中来发起第一推测性表查找;以及
第二微操作,其与第二存储器访问指令相对应,并且所述第二微操作被配置为基于所述第二微操作比所述第一微操作更早并且还基于具有与针对所述第一存储器访问指令的所述第一虚拟页地址和属性相匹配的虚拟页地址和属性,在所述第一微操作的当前处理阶段接管所述第一微操作的现行的第一推测性表查找。
2.根据权利要求1所述的微处理器,其中,所述第二微操作基于TLB未命中并且在所述第一微操作已经发起所述第一推测性表查找之后推动表查找操作。
3.根据权利要求2所述的微处理器,其中,所述第二微操作被配置为确定是否存在现行的表查找,并且响应于不存在现行的表查找,发起新的推测性表查找。
4.根据权利要求3所述的微处理器,其中,所述第二微操作被配置为基于确定为存在现行的所述第一推测性表查找来确定所述第二微操作是否比所述第一微操作更早,并且如果所述第二微操作不是更早,则重放到管线中。
5.根据权利要求4所述的微处理器,其中,所述第二微操作被配置为基于所述第二微操作比所述第一微操作更早,来确定与所述第二存储器访问指令相对应的虚拟页地址和属性是否与针对所述第一存储器访问指令的所述第一虚拟页地址和属性相匹配,并且如果不匹配,则逐出所述第二微操作并且发起新的推测性表查找。
6.根据权利要求1所述的微处理器,其中,所述属性包括权限级别。
7.根据权利要求6所述的微处理器,其中,所述权限级别包括用户代码和监控代码。
8.根据权利要求1所述的微处理器,其中,所述属性包括存储器访问类型。
9.根据权利要求8所述的微处理器,其中,所述存储器访问类型包括加载和存储指令。
10.根据权利要求1所述的微处理器,其中,所述属性包括是否启用写。
11.根据权利要求1所述的微处理器,其中,所述属性包括是否设置访问位或脏位。
12.根据权利要求1所述的微处理器,其中,与所述第一虚拟页地址的匹配对应于映射到存储器页的虚拟存储器空间的页。
13.根据权利要求1所述的微处理器,还包括表查找引擎,其中,基于所述匹配,利用所述第二微操作的年龄来更新针对所述第一微操作的表查找引擎。
14.一种在微处理器中实现的方法,所述方法包括:
通过与第一存储器访问指令相对应的第一微操作,基于第一虚拟页地址在转译后备缓冲器即TLB中的未命中来发起第一推测性表查找;以及
通过与第二存储器访问指令相对应的第二微操作,基于所述第二微操作比所述第一微操作更早并且还基于具有与针对所述第一存储器访问指令的所述第一虚拟页地址和属性相匹配的虚拟页地址和属性,在所述第一微操作的当前处理阶段接管所述第一微操作的现行的第一推测性表查找。
15.根据权利要求14所述的方法,还包括:通过所述第二微操作,基于TLB未命中并且在所述第一微操作已经发起所述第一推测性表查找之后推动表查找操作。
16.根据权利要求15所述的方法,还包括:通过所述第二微操作,确定是否存在现行的表查找,并且响应于不存在现行的表查找,发起新的推测性表查找。
17.根据权利要求16所述的方法,还包括:通过所述第二微操作,基于确定为存在现行的所述第一推测性表查找来确定所述第二微操作是否比所述第一微操作更早,并且如果所述第二微操作不是更早,则重放到管线中。
18.根据权利要求17所述的方法,还包括:通过所述第二微操作,确定与所述第二存储器访问指令相对应的虚拟页地址和属性是否与针对所述第一存储器访问指令的所述第一虚拟页地址和属性相匹配,并且如果不匹配,则逐出所述第二微操作并且发起新的推测性表查找。
19.根据权利要求14所述的方法,其中,所述属性包括权限级别、存储器访问类型、是否启用写、是否设置访问位或脏位中的一个或多个。
20.根据权利要求14所述的方法,还包括基于所述匹配,利用所述第二微操作的年龄来更新所述第一微操作的表查找引擎。
CN202111020120.4A 2020-12-02 2021-09-01 微处理器和在微处理器中实现的方法 Pending CN113641403A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/109,553 US11314657B1 (en) 2020-12-02 2020-12-02 Tablewalk takeover
US17/109,553 2020-12-02

Publications (1)

Publication Number Publication Date
CN113641403A true CN113641403A (zh) 2021-11-12

Family

ID=78424757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111020120.4A Pending CN113641403A (zh) 2020-12-02 2021-09-01 微处理器和在微处理器中实现的方法

Country Status (3)

Country Link
US (1) US11314657B1 (zh)
CN (1) CN113641403A (zh)
TW (1) TWI782754B (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996650B2 (en) * 2008-07-14 2011-08-09 Via Technologies, Inc. Microprocessor that performs speculative tablewalks
US20140208075A1 (en) * 2011-12-20 2014-07-24 James Earl McCormick, JR. Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch
US20140164738A1 (en) * 2012-12-07 2014-06-12 Nvidia Corporation Instruction categorization for runahead operation
DE112016007516T5 (de) * 2016-12-12 2019-10-02 Intel Corporation Vorrichtungen und verfahren für eine prozessorarchitektur
US11966785B2 (en) * 2020-07-30 2024-04-23 Arm Limited Hardware resource configuration for processing system

Also Published As

Publication number Publication date
TW202223666A (zh) 2022-06-16
TWI782754B (zh) 2022-11-01
US11314657B1 (en) 2022-04-26

Similar Documents

Publication Publication Date Title
US7996650B2 (en) Microprocessor that performs speculative tablewalks
EP2537098B1 (en) Iommu architected tlb support
US10896128B2 (en) Partitioning shared caches
US6591340B2 (en) Microprocessor having improved memory management unit and cache memory
US8161246B2 (en) Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8930635B2 (en) Page invalidation processing with setting of storage key to predefined value
JP2618175B2 (ja) キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル
US8521964B2 (en) Reducing interprocessor communications pursuant to updating of a storage key
US6629207B1 (en) Method for loading instructions or data into a locked way of a cache memory
US20080005504A1 (en) Global overflow method for virtualized transactional memory
JP2004503870A (ja) 変換索引バッファのフラッシュフィルタ
US10339054B2 (en) Instruction ordering for in-progress operations
KR20170139659A (ko) 메모리를 어드레싱하기 위한 별개의 레지스터들을 가진 컴퓨터 프로세서
EP0459233A2 (en) Selectively locking memory locations within a microprocessor's on-chip cache
TWI407306B (zh) 快取記憶體系統及其存取方法與電腦程式產品
US20050182903A1 (en) Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer
EP0726524A2 (en) Protocol and system for performing line-fill addressing during copy-back operation
US11314657B1 (en) Tablewalk takeover
US20070022250A1 (en) System and method of responding to a cache read error with a temporary cache directory column delete
CN116194901A (zh) 以缺乏局部性的数据为目标的存储器请求的预取禁用
US8108624B2 (en) Data cache with modified bit array
US11853228B1 (en) Partial-address-translation-invalidation request
US20230099256A1 (en) Storing an indication of a specific data pattern in spare directory entries
KR20040047398A (ko) 캐쉬 메모리를 이용한 데이터 억세스 방법

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