CN110235103B - 基于块的微架构中具有不同特权等级的模式之间的推测性转变 - Google Patents

基于块的微架构中具有不同特权等级的模式之间的推测性转变 Download PDF

Info

Publication number
CN110235103B
CN110235103B CN201880007829.0A CN201880007829A CN110235103B CN 110235103 B CN110235103 B CN 110235103B CN 201880007829 A CN201880007829 A CN 201880007829A CN 110235103 B CN110235103 B CN 110235103B
Authority
CN
China
Prior art keywords
block
instruction
mode
instruction block
execution mode
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
Application number
CN201880007829.0A
Other languages
English (en)
Other versions
CN110235103A (zh
Inventor
G·M·赖特
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN110235103A publication Critical patent/CN110235103A/zh
Application granted granted Critical
Publication of CN110235103B publication Critical patent/CN110235103B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • 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, 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

本公开涉及根据预期执行模式在处理器管线中处理运行中的块,以减少原本可能由于具有变化的特权等级的处理器模式(例如,用户模式、监管员模式、管理程序模式等)之间的转变而引起的同步延迟。更确切地说,可将与待提取指令块相关联的程序计数器转译成与所述指令块相关联的一或多个执行权限,且可至少部分地基于所述一或多个执行权限而使所述指令块与推测性执行模式相关联。因此,当所述指令块在所述处理器管线内运行时,可相对于所述推测性执行模式处理所述指令块。

Description

基于块的微架构中具有不同特权等级的模式之间的推测性 转变
技术领域
本文中所描述的各个方面和实施例大体上涉及减少处理器管线中的延迟,且确切地说,涉及基于块的微架构中具有不同特权等级的模式之间的推测性转变。
背景技术
在大多数现代的计算机架构中,中央处理单元(CPU)定义模式位(例如,在系统控制寄存器中)以指示进程、线程、指令等是否在受限(或非特权)“用户模式”与不受限(或特权)“监管员模式”中执行。模式位往往会影响指令执行的许多方面,包含哪些指令是合法的,指令是否可以触摸虚拟存储器页面(例如,提取指令和/或数据)等等。举例来说,在监管员模式下执行的指令被认为是受信任的并且通常被允许引用任何存储器位置并执行底层CPU架构准许的任何操作,所述监管员模式有时称为“内核”模式,“特权”模式或其它术语。另一方面,在用户模式下执行的指令不具有非受限的直接硬件存取且不被准许存取分配给操作系统内核或其它程序的任何存储器位置。然而,在用户模式下执行的程序可发出系统调用以请求内核提供的服务(例如,以执行特权指令,存取分配给用户程序的有限虚拟存储器空间外的资源等)。系统调用可使得从用户模式临时转变成监管员模式且随后在已经处理系统调用之后返回到用户模式。促使模式转变的其它事件可包含硬件中断(例如,当用户按压键盘上的按键、时钟生成计时脉冲时生成的信号等)、由于无效或恶意程序行为造成的异常等等。
用户-监管员分离具有若干有利方面,包含更大的安全性和更大的稳定性。举例来说,用户模式和监管员模式之间的分离提供硬件强制限制以限制存取可以其它方式被意外或恶意利用的资源。此外,用户模式与监管员模式之间的分离提供额外保护,即当在用户模式下运行的代码崩溃时机器可恢复,而监管员模式下的崩溃将通常造成机器不可安全恢复的严重错误。又另外,一些机器可提供具有不同特权等级的额外执行模式,例如甚至比监管员/内核模式更具特权的“管理程序”模式,具有分层特权的多个用户模式(例如,基于环的安全性)等等,由此各种特权等级可经定义以提高容错性并防止发生恶意行为等等。
尽管如此,在典型CPU中,改变执行模式(例如,对系统调用、异常/中断、从内核模式返回到用户模式等)是往往会涉及全管线同步的重量级操作。确切地说,执行全管线同步以确保属于不同模式的指令同时在管线中不活动。常常,这意指每一运行中的用户指令必须在甚至提取第一特权指令之前提交。在高性能无序深度管线机器中,改变执行模式所需的全管线同步可因此承担相当大的性能成本,甚至可执行简单低级的系统调用(例如,以获得当日时间)或处理异常/中断,这是因为当转变成操作系统内核或从操作系统内核转变时机器逐渐停止。因此,需要减少由于在具有不同特权的模式之间转变产生的成本的机构。
发明内容
以下呈现相关于本文中所公开的一或多个方面和/或实施例的简化概述。由此,不应将以下概述视为与所有预期方面和/或实施例相关的广泛概述,也不应认为以下概述识别与所有预期方面和/或实施例相关的关键或至关重要的要素,或描绘与任何特定方面和/或实施例相关联的范围。因此,以下概述具有以下唯一目的:以简化形式提出和与本文中所公开的机构有关的一或多个方面和/或实施例有关的某些概念以先于下文呈现的具体实施方式。
根据各种方面,如在本文中进一步详细描述,用于管理处理器管线的方法可包括将与待提取指令块相关联的程序计数器转译成与所述指令块相关联的一或多个执行权限,至少部分地基于一或多个执行权限使所述指令块与推测性执行模式相关联,以及当所述指令块在处理器管线内运行时相对于推测性执行模式处理所述指令块。
根据各种方面,设备可包括处理器,其经配置以:提取指令块,将与所述指令块相关联的程序计数器转译成与所述指令块相关联的一或多个执行权限,至少部分地基于所述一或多个执行权限使所述指令块与推测性执行模式相关联,且当所述指令块在管线内运行时相对于所述推测性执行模式处理所述指令块。
根据各种方面,设备可包括用于将与待提取指令块相关联的程序计数器转译成与所述指令块相关联的一或多个执行权限的装置,用于至少部分地基于一或多个执行权限使所述指令块与推测性执行模式相关联的装置,以及用于当所述指令块在管线内运行时相对于推测性执行模式处理所述指令块的装置。
根据各种方面,计算机可读媒体可存储计算机可执行指令,所述指令经配置以使处理器:将与指令块相关联的程序计数器转译成与所述指令块相关联的一或多个执行权限,至少部分地基于所述一或多个执行权限使所述指令块与推测性执行模式相关联,且当所述指令块在与处理器相关联的管线内运行时相对于所述推测性执行模式处理所述指令块。
与本文中所公开的方面和实施例相关联的其它目标和优点基于附图和详细描述对所属领域技术人员将是显而易见的。
附图说明
随着在结合附图考虑时通过参考以下详细描述变得更好地理解本文中所描述的各种方面和实施例以及其许多附带优点,将容易获得对本文中所描述的各种方面和实施例以及其许多附带优点的更全面了解,附图只是为了说明而不是限制来提出,且在附图中:
图1说明根据各种方面的经配置以实施不同执行模式之间的推测性转变的示范性处理器架构。
图2说明根据各种方面的可在其中实施不同执行模式之间的推测性转变的包含各种逻辑组件和接口的示范性分层计算机体系结构。
图3说明根据各种方面的可在其中实施不同执行模式之间的推测性转变的示范性逻辑管线。
图4说明根据各种方面的用以根据预期执行模式处理运行中指令块的示范性方法。
图5说明根据各种方面的用以确定与运行中指令块相关联的预期执行模式的示范性方法。
图6说明根据各种方面的用以根据实际执行模式提交指令块的示范性方法。
图7说明实例电子装置,在其中可有利地实施如本文中所描述的推测性模式转变。
具体实施方式
以下描述和相关图式中公开各个方面和实施例,以展示与示范性方面和实施例有关的具体实例。在阅读本公开之后,相关领域的技术人员将显而易见替代方面和实施例,且可在不脱离本公开的范围或精神的情况下,建构并实践替代方面和实施例。另外,将并不详细地描述或可省略熟知元件以免混淆本文中所公开的方面和实施例的相关细节。
词语“示范性”在本文中用于意指“充当实例、例子或说明”。在本文中被描述为“示范性”的任何实施例未必被理解为比其它实施例优选或有利。同样,术语“实施例”并不要求所有实施例均包含所论述特征、优点或操作模式。
本文中使用的术语仅描述特定实施例且不应解释为限制本文中公开的任何实施例。除非上下文另外清楚地指示,否则如本文所用,单数形式“一”和“所述”意图也包含复数形式。所属领域的技术人员将进一步理解,如本文中所使用的术语“包括(comprises、comprising)”和/或“包含(includes、including)”指定所陈述特征、整体、步骤、操作、元件和/或组件的存在,但不排除一或多个其它特征、整体、步骤、操作、元件、组件和/或其群组的存在或添加。
另外,各个方面和/或实施例可就将由例如计算装置的元件执行的动作序列来进行描述。所属领域的技术人员将认识到,本文中所描述的各种动作可由特定电路(例如,专用集成电路(ASIC))、由一或多个处理器正执行的程序指令,或由两者的组合执行。另外,本文中描述的这些动作序列可被视为全部体现在具有存储于其上的一组对应的计算机指令的任何形式的非暂时性计算机可读媒体内,所述计算机指令在执行时将使相关联的处理器执行本文中描述的功能性。因此,本文所描述的各种方面可以若干不同形式体现,已预期其全部在所要求的主题的范围内。另外,对于本文中描述的方面中的每一个,任何此类方面的对应形式可在本文中描述为例如“经配置以……的逻辑”和/或经配置以执行所描述的动作的其它结构组件。
根据各种方面,如本文中将更详细地描述,基于块的微架构可实施具有不同特权等级的执行模式(例如,用户模式到监管员模式/监管员模式到用户模式、监管员模式到管理程序模式/管理程序模式到监管员模式等)之间的推测性转变。因此,推测性模式转变可以允许来自具有不同特权等级的执行模式的指令在处理器管线中并行地执行,包含到/来自具有更高特权等级的执行模式的分支预测(例如,用于系统调用和返回)。因此,经由在用户模式下执行的指令进行系统调用的成本可以降低到与常规子例程调用大致相同的成本。一般来说,本文中在基于块的指令集架构(ISA)的上下文中描述不同执行模式之间的推测性转变,其中指令被分组到指令块中,所述指令块具有可变大小(受最大值限制)和用以指示每一相应指令块中有多少指令的标头。然而,所属领域的技术人员将了解,推测性模式转变可在其它合适的架构中使用,包含每一指令块具有一个指令、个别地提取指令等的架构。
在论述用以实施推测性执行模式转变的机构之前,描述与基于块的微架构相关联的示范性元件和操作方面。在此方面,图1说明示范性处理器100,其具有经配置以实施具有变化的特权等级的不同执行模式(例如,用户、监管员、管理程序等)之间的推测性转变的架构。如图1中所展示,处理器100在执行管线110中执行指令,其中在执行管线110中执行的指令可通常被分组成具有可变大小的指令块,所述指令块具有用以指示在每一相应块内分组多少指令(例如,一或多个指令,至多为个别块内准许的最大大小)的标头。因此,处理器100可实施基于块的指令集架构(ISA),其中“指令块”对作为单元提取和处理的一或多个指令分组,这意指在基于块的ISA中以原子方式处理每一指令块(即,指令块中的所有指令将同时提交,或者将不提交任何指令)。此外,在各种实施例中,管线110可以是超标量设计,具有多个并行管线,且通用寄存器(GPR)文件154可提供管线110中的各种元件可存取的一或多个寄存器。
根据各种方面,可根据控制逻辑确定在管线110中执行的指令块,所述控制逻辑可至少部分地在下一块预测单元150和下一块控制单元152中实施。一般来说,下一块预测单元150可以与常规无序(OOO)处理器中所用的分支预测器类似的方式预测管线110中的执行路径,以便预测待在管线110中提取和执行的下一块。举例来说,在各种实施例中,下一块预测单元150可从一或多个可能的块出口当中预测管线110内提交和/或运行中的指令块的出口,所述下一块预测单元可用于预测执行序列中的目标(下一)块。然而,所属领域的技术人员将了解,可适当地使用其它合适的预测方案。在各种实施例中,下一块预测单元150可向下一块控制单元152提供一或多个信号以指示预测的下一块,其中在下一块控制单元152处维护的程序计数器(PC)可保存指向待在管线110中执行的下一块的虚拟存储器地址。
在各种实施例中,管线110可进一步包含块提取级112,其从第一级(L1)指令高速缓冲存储器(I高速缓冲存储器)142提取指令块,其中在指令侧转译后备缓冲器(ITLB)144处管理存储器地址转译和权限可从L1数据高速缓冲存储器(D高速缓冲存储器)146存取数据,其中在主转译后备缓冲器(TLB)148处管理存储器地址转译和权限。在各种实施例中,ITLB 144可包括主TLB 148的部分的副本,或ITLB 144和主TLB 148可替代地集成。类似地,在各种实施例中,L1指令高速缓冲存储器142和L1数据高速缓冲存储器146可以是集成的或统一的。L1指令142和/或L1数据高速缓冲存储器146中的未命中可致使对在图1中描绘为统一指令和数据高速缓冲存储器140的第二级(L2)高速缓冲存储器140的存取,但其它实施例可包含单独的L2高速缓冲存储器。L2高速缓冲存储器140中的未命中可致使经由存储器接口170对主(芯片外)存储器174、176的存取,所述存储器接口可以是实施一或多个存储器装置174、176的共享总线的总线互连件172的主控输入。额外主控装置(未展示)可另外连接到总线互连件172。处理器100可进一步包含输入/输出(I/O)接口160,其可以是外围总线162上的主控装置,I/O接口160可跨所述外围总线存取各种外围装置164、166。然而,所属领域的技术人员将认识到,处理器100的许多变化是可能的。举例来说,可从从特定实施例中省略处理器100 10中所描绘的功能块中的一或多者,且为了清楚起见省略可驻存在处理器100中的其它功能块,例如JTAG控制器、指令预解码器、分支目标地址高速缓冲存储器等等,这些功能块与如本文中所描述的推测性模式转变关系不大。
在各种实施例中,在已经适当地提取指令块之后,可将提取的指令块转发到块解码级114,其可对指令块中的指令进行解码(例如,将操作码转译成控制信号,读取适当寄存器等)。在解码之后,指令块可保存在一或多个块缓冲器116中等待执行。举例来说,在各种实施例中,块分派单元118可将指令从块缓冲器116调度或以其它方式分布到块执行级120,所述块执行级可包含一或多个执行单元(未明确展示)。举例来说,块执行级120中的一或多个执行单元可包括算术逻辑单元(ALU)、浮点单元或可将来自指令执行的结果提供到块提交单元122的其它合适的执行单元,所述块提交单元又可将执行结果存储在L1数据高速缓冲存储器146中。
根据各种方面,如上文所提及,处理器100可以至少两个不同模式操作,所述两个不同模式在本文中可以被称为“用户模式”和“监管员模式”。一般来说,用户模式可以是受限或非特权模式,其中不准许某些指令,存储器存取受限于特定虚拟存储器空间等,而监管员模式(有时替代地被称作“内核模式”或其变化形式)是非受限或特权模式,其保留给受信任代码,其具有更大特权和能力与底层物理硬件直接交互。此外,一些机器可支持具有不同特权等级的额外执行模式。举例来说,一些机器可直接在硬件上运行本机或裸机管理程序以控制底层虚拟化硬件资源并管理可能正在共享虚拟化硬件资源的一或多个客操作系统,其中本机或裸机管理程序可在具有甚至比监管员模式更具特权的模式中操作。在另一实例中,托管管理程序可用以在操作系统级提供虚拟化,其中托管管理程序在操作系统上运行以支持共享单个操作系统内核的一或多个客操作系统情况。因此,所属领域的技术人员将了解各种不同处理器架构通常可支持至少两个执行模式且有可能支持具有不同特权等级的多于两个执行模式。
举例来说,图2说明包含各种逻辑组件和接口的示范性分层计算机体系结构200以解释如本文所预期的用户模式与监管员模式之间的某些方面和差异。然而,如上文所提及,计算机体系结构200可支持额外执行模式,例如具有比监管员模式更具特权的管理程序模式,但为了清楚起见,本文中的描述集中在用户模式和监管员模式上。
确切地说,如图2所展示,实例架构200包含硬件组件和软件组件,其中硬件组件通常包含物理存储器204、输入/输出(I/O)装置206和执行硬件202(例如,应用程序处理器、数字信号处理器等)。软件组件可包含操作系统212、库模块222和一或多个应用程序232。因此,应用程序232通常使用应用程序接口(API)230向库模块222发出库调用,所述库模块可使用应用程序二进制接口(ABI)220来调用(例如,经由系统调用)操作系统212上的服务。操作系统108因此在监管员模式中运行指令以使用特定指令集架构(ISA)210与硬件组件通信,所述特定指令集架构可包含特定操作代码(操作码)和实施于执行硬件202上的本机命令。ABI 220从应用程序处理的角度定义机器,而API 232从高级语言程序的角度指定机器特性且ISA 210从操作系统212的角度定义机器。在各种实施例中,如图2中进一步展示,其中软件组件可进一步分成内核空间和用户空间,以保护硬件免受恶意或意外软件行为影响。
一般来说,用户空间中的软件在用户模式中运行且内核空间中的软件在监管员模式中运行。用户空间与内核空间之间的区别通常是指在操作系统212处定义的分离,而用户模式与监管员模式(和可定义的任何额外模式)之间的区别在底层执行硬件202处施行。尽管如此,控制可且常常的确在用户空间中运行的用户模式指令与内核空间中运行的更具特权的指令之间切换。举例来说,硬件计时器可经实施以定期中断处理器并将控制返回到内核计时器中断处理程序,其可用于从卡在回路中的用户程序中重新获得控制,以实施相互排除,使得并行程序能够正确地操作等。在其它实例中,从用户模式转变到监管员模式可能基于I/O装置206的硬件中断、当应用程序232尝试存取分配给应用程序232的虚拟存储器空间外的存储器204内的位置时或当在用户空间中运行的应用程序232发出系统调用以请求操作系统212执行一些特权操作时的异常而触发。在其它方向中,可触发转变到用户模式以在用户空间中启动新进程或线程,以从中断、异常、系统调用等返回并由此恢复中止的执行,以执行从在用户空间中运行的一个进程或线程到不同用户进程或用户线程的上下文切换,以向用户空间中的应用程序232提供异步通知,等等。
因此,用户模式与特权执行模式之间的分离提供各种方式来提高机器的安全性和稳定性;尽管如此,模式改变仍可能导致常规系统中的相当大的延迟,所述模式改变往往会需要全管线同步以实现从一个模式到另一模式的上下文切换。因此,根据各种方面,图3说明示范性逻辑管线300,其中具有不同特权等级的执行模式之间的推测性转变可经实施以减少相当大的延迟,其也可能由从一个执行模式到另一模式的上下文切换所导致。确切地说,逻辑管线300可经设计以允许来自不同执行模式的指令并行地执行,可包含到/来自监管员模式的分支预测(例如,用于系统调用和返回)。因此,经由在用户模式下执行的指令进行系统调用的成本可以降低到与常规子例程调用大致相同的成本。举例来说,参考图3,下一块预测单元350可经配置以基于逻辑管线300中的一或多个当前指令块380、390的可能的出口来预测待在逻辑管线300中执行的下一条指令块。下一块预测单元350可向下一块控制单元352提供一或多个适当信号,所述下一块控制单元可根据预测的下一条指令块设定程序计数器(PC)并确定与其相关联的虚拟地址。与预测的下一条指令块相关联的虚拟地址可用于搜索高速缓存在指令侧转译后备缓冲器(ITLB)344中的页表条目345,其中页表条目345通常可将虚拟地址映射到主存储器中的物理地址。此外,根据各种方面,页表条目345可包含与对应于虚拟地址的页面相关联的额外属性,包含指示是否可从页面读取数据的读取权限、指示是否可将数据写入到页面的写入权限以及指示是否可使用存储在页面中的指令操作码执行指令(例如,ADD或MULTIPLY)的执行权限。此外,在指示可使用存储在页面中的指令操作码执行指令的执行权限(即,页面是可执行的)的情况下,页表条目345可进一步指示页面仅可在用户模式中执行、仅可在监管员模式中执行、仅可在管理程序模式中执行还是可在不同执行模式(例如,用户或监管员)中执行。
根据各种方面,图3中所展示的逻辑管线300,可假设从一个执行模式到具有不同权限等级的另一模式的转变仅在指令块边界处发生;也就是说,如果指令块转变到监管员模式或从监管员模式转变,那么新模式适用于以下指令块。因此,在管线300中的前端处,对应于与预测的下一条指令块相关联的虚拟地址可连同执行权限和任何模式特定限制一起被提供到块提取级312。块提取级312可使每一提取的指令块与预期执行指令块的模式相关联,这意指在每一块的基础上对模式位(推测性地)重新命名。因此,指令提取、解码、权限检查等均相对于推测性模式位执行,且未辨识可能由于不正确推测性模式而产生的任何异常,直到块变为机器中的推测性最小的(最旧)块为止。举例来说,如图3中所展示,非推测性指令块390具有与其相关联的所提交执行模式392且运行中的指令块380各自具有与其相关联的推测性执行模式382。此外,在运行中的指令块380当中,指令块380-N推测性最小且指令块380-0推测性最大。因此,基于上文提到的不同模式的转变适用于以下指令块的假设,非推测性指令块390对所提交执行模式392作出的任何改变适用于推测性最小的块380-N。可因此将所提交模式392的改变与在推测性最小的后继块380-N处的推测性(预测)模式382-N相比较,在推测性模式382-N失配新的所提交模式392的情况下可刷新并从管线300的开头重启所述后继块。然而,由于刷新的块380-N将变为管线300中的最旧块,模式382可以是非推测性的,且可以常规方式相对于非推测性模式进行任何页面错误、权限检查等。此外,由于常规方法往往会需要全管线同步以实现模式切换,因此推测性模式382中的误预测可基本上不会带来损失,这是因为常规方法将等待直到在提取新模式中的第一指令之前已提交当前模式中的每一运行中的指令为止。
根据各种方面,可基于简单策略选择推测性模式382。确切地说,当转译与指令块相关联的程序计数器(例如,经由ITLB 344中的页表或条目345)时,检查指示可执行页面的模式的权限位。在最常见情况中,页面将仅可在一个模式中执行,在此情况下预测模式382是页面在其中可执行的一个模式。然而,在一些情况下,可准许页面在多于一个模式(例如,监管员模式或用户模式)中执行,在此情况下最容易实施的策略可以是使预测的模式382成为当前所提交模式(例如,由于机器不必保存或定位相对于先前块作出的决策)。替代地,在准许页面在多于一个模式中执行的情况下,另一可能的策略可以是使预测的模式382与先前块(即,先前推测性最大的块)相同,相比于使用当前所提交模式,所述先前块可提供更好的性能。在页面在任何所支持的模式中不可执行的情况下,策略可以是仅等待直到块变得非推测性且接着发信号通知页面错误为止,这是因为不可执行页面无论如何通常将导致异常。
根据各种方面,如图3中进一步所展示,可将执行级302中已完成的指令块提供到块提交级322。在各种实施例中,块提交级322可准许多个指令块每周期提交,前提是非推测性指令块390不改变所提交模式392且后继块380-N处的预测的模式382-N匹配当前所提交模式392。然而,在非推测性指令块390对提交内核/用户模式392作出改变的情况下,块提交级322可阻止任何后继块380-N到380-0在相同周期中提交,以允许足够时间来以上文所描述的方式检查预测的模式382-N到380-0。此外,如果后继块380-N处的预测的模式382-N失配当前所提交模式392,那么可阻止后继块380-N由于模式失配而提交。因此,当非推测性指令块390的确改变所提交模式392且后继块380-N处的预测模式382-N也失配当前所提交模式392时,可推迟对照预测的模式382-N到380-0的检查,这是因为在非推测性指令块390改变所提交模式392之后可成功地解决模式的明显失配。
根据各种方面,当与可预测系统调用指令之后的指令块的分支预测组合成操作系统内核条目向量时,上文所描述的推测性方面可以允许系统调用和返回在管线300基本上无中断的情况下发生,甚至允许跨在具有变化特权的不同模式中执行的指令的无序执行。举例来说,当在用户模式中执行的指令块作出系统调用时,系统调用可以被视为常规间接调用,其中“返回地址”可以被推送到分支预测器处的返回地址堆栈(RAS)上。因此,RAS可用于预测后续返回到用户模式,其中用户模式指令和更具特权的指令应在大多数实施中以正确权限执行,而不需要全管线同步来实现到/来自任何特定模式的切换。
根据各种方面,图4说明用以根据预期执行模式处理运行中指令块的示范性方法400。更确切地说,根据各种实施例,如本文中所描述,图4中所展示的方法400可用于使个别指令块与预期执行模式相关联,由此实施方法400的处理器可通常在不同级处相对于在处理器管线内处于运行中的各种个别指令块并行地执行方法400。
在各种实施例中,在框410处,可提取执行序列中的下一预测的指令块,其中下一条指令块可使用任何合适的技术预测。在任何情况下,预测的下一块可与程序计数器(PC)相关联,所述程序计数器可存储、指向或以其它方式保存指示与预测的下一块相关联的虚拟地址的数据。在各种实施例中,在框420处,预测的下一块可被标记或以其它方式与预期(例如,推测性)执行模式相关联,所述预期执行模式可指示预期块在用户模式中执行、在监管员模式中执行、在管理程序模式中执行,还是在另一合适的模式中执行。根据各种方面,下文参看图5描述与确定预期执行模式的方式相关的细节。在各种实施例中,在框430处,可相对于预期执行模式处理运行中的指令块。举例来说,在框430处,可相对于预期执行模式执行所有指令提取、解码、权限检查(例如,页面存取、特权指令等)等等。因此,在运行中时,指令块不产生任何异常,在框440处,当运行中的块变为非推测性(即,管线中的最旧块)时代替地检查所述指令块。响应于在框450处确定基于模式的异常并未发生,在框460处可连同实际(非推测性)执行模式一起提交指令块。替代地,响应于在框450处确定基于模式的异常的确发生,在框455处可首先以正确的(非推测性)执行模式刷新并重启指令块。下文将参看图6详细地描述与提交指令块和实际执行模式的方式相关的另外细节。
根据各种方面,图5说明用以确定与运行中的指令块相关联的预期执行模式的示范性方法500,其可在图4中的块420的上下文中执行。举例来说,在各种实施例中,页面表条目可与虚拟地址相关联,所述虚拟地址存储与下一预测块(例如,ITLB中)相关联的一或多个指令操作码。因此,在框510处,与下一预测块的虚拟地址相关联的页面表条目可经检查以确定与下一预测块相关联的执行权限,且准许的执行模式若存在的话可基于所述执行权限而确定。在各种实施例中,可在框520处作出所提取块是否是在管线中执行的最旧(即,唯一)块的初始确定,在此情况下,可在框525处肯定地确定预期执行模式。在可能在先前误预测或其它合适的情形之后重启块时发生的此类情况下,任何页面错误或其它权限检查也可基于已知非推测性执行模式而确定。然而,在所提取块不是在管线中执行的最旧块的情况下,可检查页表条目中从与指令块相关联的程序计数器转译的执行权限位,以如决策框530处所描绘确定映射到指令块的页面是否可执行,且如果是,那么如决策框540处所描绘确定指令块是否可在多个不同模式中执行。在映射到指令块的页面不可执行的情况下,可如块535处所描绘在指令块变为非推测性(即,管线中的最旧块)后用信号通知页面错误。更可能的是,页面将是可执行的,更罕见的情况是页面可在多个模式(例如,用户模式或监管员模式)中可执行。在此类情况下,推测性执行模式可与在非推测性指令块处维护的先前指令块和/或当前所提交模式相同,如块545处所描绘。一般来说,使推测性执行模式与先前指令块相同还是与当前所提交模式相同可能取决于实施(例如,使用与先前指令块相同的模式可能更简单,因为机器不必保存或定位相对于先前块作出的决策,而使用当前所提交模式可提供更好的性能)。在大多数典型情况中,页面将仅可在一个模式中执行,在此情况下推测性执行模式是一个准许的执行模式,如块550处所描绘。
根据各种方面,图6说明用以根据实际执行模式提交指令块的示范性方法600,其可在图4中的块460的上下文中执行。确切地说,块提交协议可在框610处发起,这通常可包括对架构状态应用一或多个改变。举例来说,任何推测性或运行中的操作可被写回到存储器以对架构状态应用改变。此外,可在框610处应用提交块对所提交执行模式作出的任何改变,包含从用户模式到内核模式、从内核模式到用户模式,到/来自管理程序模式等的任何改变。在各种实施例中,在框620处,可执行检查以确定所提交指令块是否改变所提交执行模式。确切地说,如先前所提及,模式转变仅在块边界处发生,由此所提交指令块对所提交执行模式作出的任何转变适用于以下(后继)指令块。因此,可在框620处执行检查以分析所提交执行模式的改变是否有必要对管线进行任何维修。因此,在所提交指令块的确改变所提交执行模式的情况下,可能需要进一步检查。举例来说,在允许多个指令块在相同周期中提交的架构中,可实施任选块630以阻止后继块提交,以允许足够的机会来对照所提交指令块正在应用的新的所提交模式检查后继块处的推测性执行模式。
在各种实施例中,在框640处,可将所提交模式与后继块处的预测(推测性)执行模式进行比较。因此,响应于在框650处确定所提交模式匹配推测性执行模式,可在框670处用信号通知块提交完成,且方法600可相对于当前所提交指令块适当地结束。然而,响应于在框650处检测到新的所提交模式与推测性执行模式之间的失配,在发信号通知完成块提交以允许视需要提交其它指令块之前,在框660处刷新后继块并以使其变为非推测性的模式重启。此外,在架构准许多个指令块在相同周期中提交的实施例中,可在当前所提交模式失配后继块处的预测模式的情况下阻止后继块与当前块同时提交。然而,在块620指示所提交指令块正在改变所提交执行模式的情况下,可在非推测性块已改变所提交模式之后成功地解决在框650处检测到的明显失配。因此,可在框640处执行后继块状态比较,无论所提交指令块是否正在改变所提交执行模式。然而,在后一种情况下(其中所提交执行模式未改变),可在框640处持续将后继块处的预测模式与所提交模式进行比较,而无须等待直到最旧指令块改变所提交执行模式。
根据各种方面,图7说明实例电子装置700,其中可有利地实施如上文参看图1到图6进一步详细描述的具有不同特权等级的执行模式之间的推测性转变。在各种实施例中,电子装置700可配置为无线装置。如图7中所展示,电子装置700可包含处理器710,其可以是例如所属领域中已知的数字信号处理器(DSP)或任何通用处理器或中央处理单元(CPU)。在各种实施例中,处理器710可实施如图3中所展示的逻辑管线,例外是为了清楚起见,图7仅说明对应于执行级302的示范性结构,其中运行中的指令块380-0到380-N各自与推测性执行模式382-0到382-N相关联,且所提交指令块390与所提交执行模式392相关联。此外,在各种实施例中,处理器710可经配置以执行如图4到图6中所展示且上文更详细地描述的方法400、500、600。如图7中进一步展示,处理器710可包含存储器750和/或可通信地耦合到所述存储器,所述存储器可包括一或多个高速缓存器或上文更详细地描述的其它存储器结构(例如,L1指令高速缓冲存储器和相关联的ITLB,L1数据高速缓冲存储器和相关联的TLB,L2高速缓冲存储器等)。
根据各种实施例,图7还展示电子装置700可包含耦合到处理器710且耦合到显示器728的显示器控制器726。电子装置700可进一步包含耦合到处理器710的译码器/解码器(CODEC)734(例如,音频和/或语音CODEC)。图7中还说明其它组件,例如无线控制器740(例如,调制解调器)。在各种实施例中,扬声器736和麦克风738可耦合到CODEC 734。此外,如图7中所展示,无线控制器740可耦合到无线天线742。根据各种方面,处理器710、显示器控制器726、存储器750、CODEC 734和/或无线控制器740可设置于封装内系统或芯片上系统装置722中。
在各种实施例中,输入装置730和电力供应器744可耦合到芯片上系统装置722。此外,如图7中所说明,显示器728、输入装置730、扬声器736、麦克风738、无线天线742和电力供应器744经展示为在芯片上系统装置722的外部。然而,所属领域的技术人员将了解显示器728、输入装置730、扬声器736、麦克风738、无线天线742和/或电力供应器744可耦合到与芯片上系统装置722相关联的组件(例如,经由接口或控制器)。此外,尽管图7将电子装置700描绘为无线通信装置,但所属领域的技术人员将了解图7中所说明的各种组件可集成到机顶盒、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元、计算机、笔记本电脑、平板电脑、通信装置、移动电话等中。
所属领域的技术人员将了解,可使用多种不同技术和技艺中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
另外,所属领域的技术人员将了解,结合本文中所公开的方面而描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的此互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。此类功能性是实施为硬件还是软件取决于特定应用和施加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会引起脱离本文所述的各个方面和实施例的范围。
结合本文中所公开的方面而描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或经设计以执行本文中所描述的功能的其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或其任何组合。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合(例如,DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器与DSP核心结合,或任何其它此类配置)。
结合本文中所公开的方面描述的方法、序列和/或算法可以直接以硬件、以由处理器执行的软件模块或以硬件和软件模块的组合来体现。软件模块可驻存在RAM、快闪存储器、ROM、EPROM、EEPROM、寄存器、硬盘、可装卸式磁盘、CD-ROM,或所属领域中已知的任何其它形式的非暂时性计算机可读媒体中。示范性非暂时性计算机可读媒体可耦合到处理器,使得处理器可从非暂时性计算机可读媒体读取信息,并将信息写入到非暂时性计算机可读媒体。在替代方案中,非暂时性计算机可读媒体可与处理器成一体式。处理器和非暂时性计算机可读媒体可驻存在ASIC中。ASIC可驻存在IoT装置中。在替代方案中,处理器和非暂时性计算机可读媒体可以是用户终端中的离散组件。
在一或多个示范性方面中,本文中所描述的功能可以硬件、软件、固件或其任何组合实施。如果用软件实施,那么可将所述功能作为一或多个指令或代码而存储在非暂时性计算机可读媒体上或经由非暂时性计算机可读媒体传输。计算机可读媒体可包含存储媒体和/或通信媒体,所述媒体包含有助于将计算机程序从一处传送到另一处的任何非暂时性媒体。存储媒体可以是可通过计算机存取的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于以指令或数据结构形式携载或存储所要程序代码且可由计算机存取的任何其它媒体。此外,适当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、DSL或红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么所述同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。在本文可互换使用的术语磁盘和光盘包含CD、激光光盘、光学光盘、DVD、软盘和蓝光光盘,其通常以磁性方式再现数据和/或用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
虽然前述公开内容展示说明性方面和实施例,但所属领域的技术人员应了解,在不脱离如由所附权利要求书定义的本公开的范围的情况下,可在其中进行各种改变和修改。此外,根据本文所述的各种说明性方面和实施例,所属领域的技术人员将了解,上文所述的和/或所附的任何方法权利要求中所述的任何方法中的功能、步骤和/或动作无需以任何特定次序执行。更进一步,在以单数形式在上文描述或所附权利要求书中陈述任何元件的程度上,所属领域的技术人员将了解单数形式也预期复数形式,除非明确陈述限于单数形式。

Claims (30)

1.一种用于管理处理器管线的方法,其包括:
将与多个指令块中的待提取的指令块相关联的程序计数器转译成存储与所述指令块相关联的一或多个执行权限的页表条目,其中所述多个指令块中的每个指令块包括多少指令被分组在所述指令块中的指示;
基于所存储的一或多个执行权限针对所述多个指令块中的每个指令块设置不同的推测性模式位;
至少部分地基于所设置的推测性模式位使所述指令块与推测性执行模式相关联;以及
当所述指令块在所述处理器管线内运行时相对于所述推测性执行模式处理所述指令块,其中每个指令块以原子方式被处理。
2.根据权利要求1所述的方法,其中与所述指令块相关联的所述程序计数器指向虚拟地址,所述虚拟地址对应于存储与所述指令块相关联的所述一或多个执行权限的所述页表条目。
3.根据权利要求1所述的方法,其中存储所述一或多个执行权限的所述页表条目存储在指令侧转译后备缓冲器中。
4.根据权利要求1所述的方法,其中所述推测性执行模式为如下模式:其中响应于所述一或多个执行权限指示存储器页面仅能在一个模式中执行,对应于所述指令块的存储器页面是可执行的。
5.根据权利要求1所述的方法,其中响应于所述一或多个执行权限指示对应于所述指令块的存储器页面能在多个模式中执行,所述推测性执行模式匹配与所述处理器管线中的先前指令块相关联的执行模式。
6.根据权利要求1所述的方法,其中响应于所述一或多个执行权限指示对应于所述指令块的存储器页面能在多个模式中执行,所述推测性执行模式匹配所提交模式。
7.根据权利要求1所述的方法,其中所述推测性执行模式包含响应于所述一或多个执行权限指示对应于所述指令块的存储器页面不可执行而在所述指令块变为在所述处理器管线中执行的最旧块后即刻发信号通知页面错误的信息。
8.根据权利要求1所述的方法,其进一步包括:
在所述指令块变为在所述处理器管线中执行的最旧块后即刻对照所提交执行模式检查与所述指令块相关联的所述推测性执行模式;以及
响应于确定所述推测性执行模式失配所述所提交执行模式而重启所述指令块。
9.根据权利要求1所述的方法,其进一步包括:
在所述指令块变为在所述处理器管线中执行的最旧块后即刻对照所提交执行模式检查与所述指令块相关联的所述推测性执行模式;以及
响应于确定所述推测性执行模式匹配所述所提交执行模式而提交所述指令块。
10.根据权利要求9所述的方法,其进一步包括响应于所述指令块改变所述所提交执行模式,阻止至少一个后继指令块在与所述指令块相同的周期中提交。
11.根据权利要求10所述的方法,其进一步包括响应于所述指令块将所述所提交执行模式改变成失配与所述至少一个后继指令块相关联的推测性执行模式的执行模式,刷新并重启所述至少一个后继指令块。
12.根据权利要求9所述的方法,其进一步包括响应于至少一个后继指令块具有失配所述所提交执行模式的推测性执行模式,阻止所述至少一个后继指令块在与所述指令块相同的周期中提交。
13.根据权利要求1所述的方法,其中所述推测性执行模式是用户模式,其中准许指令受限且存储器存取受限于分配给所述指令块的虚拟存储器空间。
14.根据权利要求1所述的方法,其中所述推测性执行模式是监管员模式,其中准许执行特权指令且准许存取物理硬件资源。
15.根据权利要求14所述的方法,其中所述监管员模式是准许执行所述特权指令且准许存取所述物理硬件资源的多个执行模式中的一者。
16.一种设备,其包括:
处理器,其经配置以:提取多个指令块中的指令块,将与所述指令块相关联的程序计数器转译成存储与所述指令块相关联的一或多个执行权限的页表条目,其中所述多个指令块中的每个指令块包括多少指令被分组在所述指令块中的指示,基于所存储的一或多个执行权限针对所述多个指令块中的每个指令块设置不同的推测性模式位,至少部分地基于所设置的推测性模式位使所述指令块与推测性执行模式相关联,且当所述指令块在管线内运行时相对于所述推测性执行模式处理所述指令块,其中每个指令块以原子方式被处理。
17.根据权利要求16所述的设备,其进一步包括指令侧转译后备缓冲器ITLB,所述指令侧转译后备缓冲器经配置以将与所述指令块相关联的所述一或多个执行权限存储在所述页表条目中,其中与所述指令块相关联的所述程序计数器指向虚拟地址,所述虚拟地址对应于存储与所述指令块相关联的所述一或多个执行权限的所述页表条目。
18.根据权利要求16所述的设备,其中所述处理器经进一步配置以将所述推测性执行模式设定成如下模式:其中响应于所述一或多个执行权限指示存储器页面仅能在一个模式中执行,对应于所述指令块的存储器页面是可执行的。
19.根据权利要求16所述的设备,其中所述处理器经进一步配置以响应于所述一或多个执行权限指示对应于所述指令块的存储器页面能在多个模式中执行而将所述推测性执行模式设定成所提交模式或与所述管线中的先前指令块相关联的执行模式中的一或多者。
20.根据权利要求16所述的设备,其中所述处理器经进一步配置以将所述推测性执行模式设定成响应于所述一或多个执行权限指示对应于所述指令块的存储器页面不可执行而在所述指令块变为在所述管线中执行的最旧块后发信号通知页面错误。
21.根据权利要求16所述的设备,其中所述处理器经进一步配置以:
在所述指令块变为在所述管线中执行的最旧块后即刻对照所提交执行模式检查与所述指令块相关联的所述推测性执行模式;以及
响应于确定所述推测性执行模式失配所述所提交执行模式而重启所述指令块。
22.根据权利要求16所述的设备,其中所述处理器经进一步配置以:
在所述指令块变为在所述管线中执行的最旧块后即刻对照所提交执行模式检查与所述指令块相关联的所述推测性执行模式;以及
响应于确定所述推测性执行模式匹配所述所提交执行模式而提交所述指令块。
23.根据权利要求22所述的设备,其中所述处理器经进一步配置以响应于所述指令块改变所述所提交执行模式,阻止至少一个后继指令块在与所述指令块相同的周期中提交。
24.根据权利要求23所述的设备,其中所述处理器经进一步配置以响应于所述指令块将所述所提交执行模式改变成失配与所述至少一个后继指令块相关联的推测性执行模式的执行模式,刷新并重启所述至少一个后继指令块。
25.根据权利要求22所述的设备,其中所述处理器经进一步配置以响应于至少一个后继指令块具有失配所述所提交执行模式的推测性执行模式,阻止至少一个后继指令块在与所述指令块相同的周期中提交。
26.根据权利要求16所述的设备,其中所述推测性执行模式是用户模式,其中准许指令受限且存储器存取受限于分配给所述指令块的虚拟存储器空间。
27.根据权利要求16所述的设备,其中所述推测性执行模式是监管员模式,其中准许执行特权指令且准许存取物理硬件资源。
28.根据权利要求27所述的设备,其中所述监管员模式是准许执行所述特权指令且准许存取所述物理硬件资源的多个执行模式中的一者。
29.一种设备,其包括:
用于将与多个指令块中的待提取的指令块相关联的程序计数器转译成存储与所述指令块相关联的一或多个执行权限的页表条目的装置,其中所述多个指令块中的每个指令块包括多少指令被分组在所述指令块中的指示;
用于基于所存储的一或多个执行权限针对所述多个指令块中的每个指令块设置不同的推测性模式位的装置;
用于至少部分地基于所设置的推测性模式位使所述指令块与推测性执行模式相关联的装置;以及
用于当所述指令块在处理器管线内运行时相对于所述推测性执行模式处理所述指令块的装置,其中每个指令块以原子方式被处理。
30.一种非暂时性计算机可读媒体,其存储计算机可执行指令,所述所存储的计算机可执行指令经配置以使一或多个处理器:
将与多个指令块中的待提取的指令块相关联的程序计数器转译成存储与所述指令块相关联的一或多个执行权限的页表条目,其中所述多个指令块中的每个指令块包括多少指令被分组在所述指令块中的指示;
基于所存储的一或多个执行权限针对所述多个指令块中的每个指令块设置不同的推测性模式位;
至少部分地基于所设置的推测性模式位使所述指令块与推测性执行模式相关联;以及
当所述指令块在与所述处理器相关联的管线内运行时相对于所述推测性执行模式处理所述指令块,其中每个指令块以原子方式被处理。
CN201880007829.0A 2017-02-13 2018-01-29 基于块的微架构中具有不同特权等级的模式之间的推测性转变 Active CN110235103B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/431,763 US11269640B2 (en) 2017-02-13 2017-02-13 Speculative transitions among modes with different privilege levels in a block-based microarchitecture
US15/431,763 2017-02-13
PCT/US2018/015678 WO2018148045A1 (en) 2017-02-13 2018-01-29 Speculative transitions among modes with different privilege levels in a block-based microarchitecture

Publications (2)

Publication Number Publication Date
CN110235103A CN110235103A (zh) 2019-09-13
CN110235103B true CN110235103B (zh) 2023-08-25

Family

ID=61768415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880007829.0A Active CN110235103B (zh) 2017-02-13 2018-01-29 基于块的微架构中具有不同特权等级的模式之间的推测性转变

Country Status (6)

Country Link
US (1) US11269640B2 (zh)
EP (1) EP3580651B1 (zh)
CN (1) CN110235103B (zh)
SG (1) SG11201905880RA (zh)
TW (1) TWI772366B (zh)
WO (1) WO2018148045A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2573119A (en) * 2018-04-24 2019-10-30 Advanced Risc Mach Ltd Maintaining state of speculation
CN111382429B (zh) * 2018-12-27 2022-12-27 华为技术有限公司 指令的执行方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101490655A (zh) * 2006-07-14 2009-07-22 高通股份有限公司 在微处理器内指示异常触发页面的方法和系统
CN101501650A (zh) * 2006-08-09 2009-08-05 高通股份有限公司 比较处理器指令集操作模式的调试电路
CN102906692A (zh) * 2010-06-23 2013-01-30 国际商业机器公司 用于执行有选择地修改适配器功能参数的指令的方法、用于相同操作的计算机系统和计算机程序产品
CN103713881A (zh) * 2012-10-04 2014-04-09 美国博通公司 推测性特权提升
CN104252360A (zh) * 2013-06-28 2014-12-31 国际商业机器公司 在流水线化处理中使用的预测器数据结构
CN105706049A (zh) * 2014-01-27 2016-06-22 上海兆芯集成电路有限公司 操作系统例行程序的预测历程储存器的部分使用

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809160A (en) 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US6393556B1 (en) * 1998-10-30 2002-05-21 Intel Corporation Apparatus and method to change processor privilege without pipeline flush
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7209994B1 (en) 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7406613B2 (en) * 2004-12-02 2008-07-29 Qualcomm Incorporated Translation lookaside buffer (TLB) suppression for intra-page program counter relative or absolute address branch instructions
US8756605B2 (en) 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7805588B2 (en) * 2005-10-20 2010-09-28 Qualcomm Incorporated Caching memory attribute indicators with cached memory data field
US8561060B2 (en) 2007-04-26 2013-10-15 Advanced Micro Devices, Inc. Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US8099541B2 (en) 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US8639943B2 (en) * 2008-06-16 2014-01-28 Qualcomm Incorporated Methods and systems for checking run-time integrity of secure code cross-reference to related applications
US8914620B2 (en) * 2008-12-29 2014-12-16 Oracle America, Inc. Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
US9135215B1 (en) * 2009-09-21 2015-09-15 Tilera Corporation Route prediction in packet switched networks
US8621149B2 (en) * 2009-12-23 2013-12-31 Intel Corporation Controlling access to a cache memory using privilege level information
US8782380B2 (en) 2010-12-14 2014-07-15 International Business Machines Corporation Fine-grained privilege escalation
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US9971627B2 (en) * 2014-03-26 2018-05-15 Intel Corporation Enabling maximum concurrency in a hybrid transactional memory system
US20170083343A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Out of order commit
US10339065B2 (en) * 2016-12-01 2019-07-02 Ampere Computing Llc Optimizing memory mapping(s) associated with network nodes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101490655A (zh) * 2006-07-14 2009-07-22 高通股份有限公司 在微处理器内指示异常触发页面的方法和系统
CN101501650A (zh) * 2006-08-09 2009-08-05 高通股份有限公司 比较处理器指令集操作模式的调试电路
CN102906692A (zh) * 2010-06-23 2013-01-30 国际商业机器公司 用于执行有选择地修改适配器功能参数的指令的方法、用于相同操作的计算机系统和计算机程序产品
CN103713881A (zh) * 2012-10-04 2014-04-09 美国博通公司 推测性特权提升
CN104252360A (zh) * 2013-06-28 2014-12-31 国际商业机器公司 在流水线化处理中使用的预测器数据结构
CN105706049A (zh) * 2014-01-27 2016-06-22 上海兆芯集成电路有限公司 操作系统例行程序的预测历程储存器的部分使用

Also Published As

Publication number Publication date
EP3580651B1 (en) 2022-09-14
US11269640B2 (en) 2022-03-08
US20180232233A1 (en) 2018-08-16
TW201835758A (zh) 2018-10-01
TWI772366B (zh) 2022-08-01
WO2018148045A1 (en) 2018-08-16
EP3580651A1 (en) 2019-12-18
SG11201905880RA (en) 2019-08-27
CN110235103A (zh) 2019-09-13

Similar Documents

Publication Publication Date Title
US11681533B2 (en) Restricted speculative execution mode to prevent observable side effects
CN106170768B (zh) 在计算机中分派多个线程
CA2940891C (en) Start virtual execution instruction for dispatching multiple threads in a computer
US9772867B2 (en) Control area for managing multiple threads in a computer
JP2014002735A (ja) ゼロサイクルロード
US9213569B2 (en) Exiting multiple threads in a computer
US20190286443A1 (en) Secure control flow prediction
US10310859B2 (en) System and method of speculative parallel execution of cache line unaligned load instructions
US20220067156A1 (en) Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception
US10867031B2 (en) Marking valid return targets
US20140229721A1 (en) Dynamic branch hints using branches-to-nowhere conditional branch
US11048516B2 (en) Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array
CN110235103B (zh) 基于块的微架构中具有不同特权等级的模式之间的推测性转变
US20160170770A1 (en) Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
US9389897B1 (en) Exiting multiple threads of a simulation environment in a computer
WO2017112359A1 (en) Method and apparatus for loop-invariant instruction detection and elimination
CN113316764A (zh) 控制由待解析推测性操作确定的数据的使用
CN115576607A (zh) 用于微架构返回预测器安全性的计数到空

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40007745

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant