CN108027726A - 用于在远程处理器上实施原子动作的硬件机制 - Google Patents
用于在远程处理器上实施原子动作的硬件机制 Download PDFInfo
- Publication number
- CN108027726A CN108027726A CN201580083377.0A CN201580083377A CN108027726A CN 108027726 A CN108027726 A CN 108027726A CN 201580083377 A CN201580083377 A CN 201580083377A CN 108027726 A CN108027726 A CN 108027726A
- Authority
- CN
- China
- Prior art keywords
- action
- rar
- pcid
- long
- processor
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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
-
- 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/683—Invalidation
Abstract
描述了用于远程动作处置的系统、装置和方法的实施例。在一个实施例中,一种硬件装置包括:用以存储对应于将与远程动作请求(RAR)中断相关联地实施的动作的有效载荷的存储器地址的第一寄存器;用以存储可由多个处理器访问的动作列表的存储器地址的第二寄存器;以及用以实施以下各项的远程动作处置器电路:识别所接收到的RAR中断,实施所接收到的RAR中断的动作,并且在动作完成后用信号向发起处理器通知确认。
Description
技术领域
本发明的实施例涉及计算机架构领域,并且更具体来说涉及远程动作处置。
背景技术
许多的多处理器系统提供一种被称作处理器间中断(IPI)的中断。IPI通常是从发送处理器到接收处理器的动作请求。在某些系统中,发送处理器对中断命令寄存器或软件中断寄存器进行写入,从而发起发送处理器与接收处理器之间的IPI。
附图说明
将通过举例而非限制的方式在附图的图中说明本发明,其中相同的附图标记表明类似的单元,并且其中:
图1示出了计算机系统的一个实施例。
图2示出了有效载荷数据结构的一个实施例。
图3示出了动作数据结构的一个实施例。
图4示出了由ILP实施来发起RAR的方法的一个实施例。
图5示出了由RLP实施来处理RAR的方法的一个实施例。
图6示出了由ILP实施来发起RAR的方法的一个实施例。
图7示出了由RLP实施来处理RAR的方法的一个实施例。
图8示出了使用存储在存储器中的有效载荷和动作数据结构的RAR流程的方块图的一个实施例。
图9是根据本发明的一个实施例的寄存器架构的方块图。
图10A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发出/执行流水线二者的方块图。
图10B是示出根据本发明的实施例的将被包括在处理器中的有序架构核心的示例性实施例和示例性的寄存器重命名、乱序发出/执行架构核心二者的方块图。
图11A-B示出了更加具体的示例性有序核心架构的方块图,该核心将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其他核心)的其中之一。
图12是根据本发明的实施例的处理器1200的方块图,所述处理器1200可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形装置。
图13-16是示例性的计算机架构的方块图。
图17是对比使用根据本发明的实施例的软件指令转换器以把来源指令集中的二进制指令转换到目标指令集中的二进制指令的方块图。
具体实施方式
在后面的描述中将阐述许多具体细节。但是应当理解的是,可以在没有这些具体细节的情况下实践本发明的实施例。在说明书中提到“一个实施例”、“实施例”、“示例性实施例”等表明所描述的实施例可以包括特定的特征、结构或特性,但是每一个实施例可以不一定包括该特定的特征、结构或特性。此外,这样的短语不一定是指相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,要提出的是:本领域技术人员知晓结合其他实施例来实施这样的特征、结构或特性,不管所述其他实施例是否被明确地描述。
下面将详述用于远程动作处置的系统、方法和装置的实施例。ILP根据一致的格式在存储器中设置有效载荷,并且随后向相关的RLP发出请求,这或者是通过经由中断控制器的中断命令寄存器(ICR)或软件中断寄存器类型的机制向RLP发送IPI矢量(在本讨论中被称作远程动作请求中断(RARI)),或者是通过专用的信令机制。
当ILP需要RLP实施特定动作(例如冲刷TLB条目)时,在某些实施例中它通过向每一个RLP发送处理器间中断(IPI)而发起所述动作。在某些系统中,RLP在接收到远程动作请求后实施几个步骤。举例来说,当RLP正在运行用户层级或环形3(ring-3)应用时,RLP:1)实施中断描述符表矢量化(vectoring)以便跳跃到正确的中断处置器软件;2)从用户层级过渡到OS层级;3)在软件中实施所请求的动作,也就是将所选页面的高速缓存变换无效化;4)向ILP表明动作完成;以及5)从OS层级过渡到用户层级。不幸的是,这一序列的总体等待时间会对运行在RLP上的用户应用的性能造成负面影响。
除了等待时间影响之外,在几种情形中,RLP无法立即为IPI服务,因此对于ILP的请求的处置被延迟。在这些情形中,ILP等待请求的确认和完成,并且这会对运行在ILP上的应用的性能造成负面影响。
如本文中所讨论的,RLP使用中断处理器中的正常操作执行流程的远程动作请求处置器(RARH)硬件来处置RAR,而不会把处置呈送到软件。在检测到请求之后,RLP上的RARH从存储器中读取有效载荷,并且在没有软件参与的情况下实施所请求的动作。在完成动作之后,RLP向ILP通知其成功/失败。这一通知可以通过对存储器中的位置进行写入来进行,或者是通过向收集来自所有RLP的确认的ILP中的计数器发送新的专用信号来进行。
支持远程动作请求处置的示例性计算机系统的实施例
图1示出了计算机系统的一个实施例。在该实施例中示出了多个逻辑处理器(处理器0101和处理器N 111)。每一个逻辑处理器与至少一个硬件执行(功能)单元相关联,以便作为执行流水线的一部分来执行指令。逻辑处理器AAA01和111可以通过共享存储器121(比如系统存储器、共享高速缓存等等)或者通过使用一个或多个总线/互连131的接口彼此通信。共享存储器121存储将要执行的动作的数据结构123和动作有效载荷数据结构125(其实施例在图3和2中示出)。
中断控制器102和112对异常和中断进行优先级排序、译码和矢量化。示例性的中断控制器包括而不限于高级可编程中断控制器(APIC)、通用中断控制器(GIC)、多处理器中断控制器(MPIC)。中断控制器102和112可以是输入/输出(I/O)或本地中断控制器。
这些中断控制器102和112提供允许其他处理器中断另一个处理器或处理器集合的处理器间中断(IPI)。在某些实施例中,通过由处理器对与其中断控制器相关联的寄存器(比如中断命令寄存器或软件中断寄存器)进行写入而生成IPI。该寄存器存储中断矢量和目标处理器的标识(在某些实施例中使用中断控制器ID)。随后通过中断总线向目标中断控制器发送消息,目标中断控制器随后向其处理器发出中断以进行处置(例如调用中断处置器)。
每个处理器101和111的TLB 109和119高速缓存如前面所详述的虚拟到物理页面变换。在某些实施例中,TLB 109和119是分开的物理电路。在其他实施例中,单个物理TLB电路被逻辑划分在各个处理器之间。
每个处理器的多个寄存器108和118(除了典型的通用寄存器、浮点寄存器、状态寄存器等等之外)被用来支持RARH。可以使用的一个寄存器是如前面所详述的中断命令寄存器或软件中断寄存器。根据实现方式,所述多个寄存器108和118还包括:i)用以存储标示被称作远程动作请求中断(RARI)的基于硬件的动作处置的特定IPI矢量的寄存器;ii)用以存储包含对应于可能的并发请求的请求信息的(多项)有效载荷的存储器位置的寄存器;和/或iii)用以存储针对RLP的动作请求列表的存储器位置的寄存器。在某些实施例中,所述存储器位置保持动作请求表。有效载荷的实例包括而不限于针对以下各项的请求:i)将整个(远程)TLB(而不是TLB的单个条目)无效化;2)将TLB的单个(远程)条目无效化;3)将(远程)TLB的N个相继的页面无效化;以及4)不实施动作。此外,某些有效载荷包括而不限于针对将TLB中的映射以及基于进程上下文标识符(PCID)的分页结构高速缓存无效化的请求,比如:5)单独地址无效化(将对应于线性地址和进程上下文标识符(PCID)的映射(全局变换除外)无效化,并且在某些情况下也将全局映射或者对应于其他线性地址(或其他PCID)的映射无效化);6)单一上下文无效化(将与PCID相关联的所有映射(全局变换除外)无效化,并且在某些情况下也将全局变换或者对应于其他PCID的映射无效化);7)包括全局变换的全部上下文无效化(将与任何PCID相关联的所有映射(包括全局变换)无效化);以及/或者8)全部上下文无效化(将与任何PCID相关联的所有映射(全局变换除外)无效化)。在某些实施例中,对于PCID无效化方案,一个数据结构存储PCID和地址,并且无效化的类型(单独地址、单一上下文、包括全局变换的全部上下文以及全部上下文无效化)由一个数据结构提供。
寄存器108和118还可以包括用于RAR特征的几项特性(比如:中断矢量、有效载荷和动作存储器驻留表尺寸、最大有效载荷类型等等)的存储。
针对不实施动作的请求引起RLP的注意以及针对ILP的确认。在某些处理器中,当RLP接收到IPI消息时,保持不被呈送到外部存储器的数据的所有中间数据结构都被冲刷,但是这样做需要改变环形等等,正如前面所详述的那样。本文中所描述的“不实施动作”冲刷这些数据结构,但是与其他请求一样不导致环形改变。
远程动作处置器103和113是识别RARI、实施RARI所请求的动作并且用信号向ILP通知确认的电路。可以通过调用一个或多个硬件处置器来进行动作的实施。在远程动作处置器103和113对RAR的处置中不涉及软件。远程动作处置器103和113还可以实施关于对动作数据结构进行轮询以及从有效载荷数据结构中清空有效载荷的动作。
远程动作接口105和115是接收与不使用IPI信令的RAR有关的信号并读取信号的有效载荷、实施所请求的动作并且确认请求的电路。举例来说,执行在ILP上的RAR指令导致信号被处置RAR的RLP的远程动作接口接收到。可以通过调用一个或多个硬件处置器来进行动作的实施。在远程动作接口105和115对RAR的处置中不涉及软件。远程动作接口105和115还可以实施关于从有效载荷数据结构中清空有效载荷的动作。应当提到的是,处理器不需要既支持远程动作处置器103和113又支持远程动作接口105和115。
RAR指令在ILP上的执行导致利用应当确认RAR的RLP的数目来设定其远程动作计数器107和117。这些计数器107和117是对确认的数目进行计数的电路。通过这些计数器107和117用信号通知RAR的完成。举例来说,在某些实施例中,当所有确认都被接收到时,计数107和计数器检测到这一点,并且用信号通知操作完成。在某些实施例中,软件可以检测远程动作计数器的状态,这是通过执行远程动作请求完成指令(RARC)来读取计数器数值。
图2示出了有效载荷数据结构的一个实施例。在该例中,所述数据结构是一个表,但是也可以使用例如专用寄存器之类的其他数据结构。在所示出的表中,对于每项动作有一列用来表明有效载荷是否有效201(未完成),并且有一列用于有效载荷本身(或者指向有效载荷的指针)203。有效载荷可以包括请求以及与请求相关联的地址。在图示中,第一行的有效载荷包括无效化页面请求以及TLB中的将要无效化的页面的地址。有效载荷数据结构通常由ILP初始编程,由RLP读取,并且由ILP清空。在某些实施例中,所述数据结构中的每一个条目对应于一项动作。
图3示出了动作数据结构的一个实施例。在该例中,所述数据结构是表,但是也可以使用例如专用寄存器之类的其他数据结构。在所示出的表中,对于每项动作有一列301,并且每一行对应于一个RLP。表中的条目303表明关于RLP的特定动作的状态。示例性的状态包括待定、成功或失败。当然,可以使用包含类似信息的任何数据结构变型。该动作数据结构通常由ILP初始编程,由RLP读取,由RLP清空,并且随后由ILP读取。
支持远程动作请求处置的示例性计算机系统的实施例
图4示出了由ILP实施来发起RAR的方法的一个实施例。通常来说,这是由ILP的核心、远程动作处置器、中断控制器和TLB的组合来实施。
在某些实施例中,在401处,页表条目可以被使用在地址变换中的指示由ILP清空。举例来说,页表条目中的存在比特被清空。
在403处,把一个或多个处理器识别为将接收RAR的RLP。
在405处,ILP在存储器中配置有效载荷。举例来说,针对将页面和该页面的地址无效化的指令被存储在存储器121中的有效载荷数据结构123中。
在407处,将IPI发送到所识别出的RLP。在某些实施例中,ILP向中断命令寄存器或软件中断寄存器写入已经进行触发对于(多个)RLP的中断的RAR。这一写入包括将要处理RAR的RLP的标识(比如APIC ID)。
在某些实施例中,在409处,在ILP中本地实施相应的动作。举例来说,ILP将其自身的TLB中的页面无效化。
在411处,ILP对存储器中的动作数据结构进行轮询,以便确定是否所有RLP都已完成并且确认了动作。这在所设定的一定时间量之后可以重复,并且如果动作数据结构对于一定阈值时间量(周期)没有发生改变,则ILP触发软件进行进一步的处理。
图5示出了由RLP实施来处理RAR的方法的一个实施例。在501中,RLP接收来自ILP的RAR中断。RLP通过其已在前面详述过的远程动作接口来接收该中断。在某些实施例中,ILP向中断命令寄存器或软件中断寄存器写入已经进行触发对于(多个)RLP的中断的RAR。这一写入包括将要处理RAR的(多个)RLP的标识(比如APIC ID)。
在503中,RLP(具体来说是RLP的远程动作处置器)通过从存储在存储器中的动作列表进行读取而确定将要实施的动作。举例来说,RLP从动作数据结构123中读取动作。
在505中,RLP(具体来说是RLP的远程动作处置器)从与动作相关联的存储器中读取有效载荷。举例来说,RLP从有效载荷数据结构125中读取有效载荷。举例来说,RLP可以对于有效的有效载荷读取TLB无效化请求及其相关联的地址。
在507中,RLP(具体来说是RLP的远程动作处置器)实施所确定的动作。在某些实施例中,远程动作处置器自身包括用以实施动作的电路。在其他实施例中,远程动作处置器调用特定的处置器来实施动作。
在509中,RLP(具体来说是RLP的远程动作处置器)从存储在存储器中的动作数据结构中清空动作。举例来说,RLP从动作数据结构123中清空动作。
支持远程动作请求处置的示例性计算机系统的实施例
作为页表管理的一部分,操作系统(OS)需要确保在系统中的任何逻辑处理器(LP)中的任何变换旁视缓冲器(TLB)中没有高速缓存任何需要被修改的页表条目。当运行在一个逻辑处理器上的OS检测到其需要对页表做出修改时,其发起远程TLB击落(TLB-shoot-down)协议,以便从系统的所有逻辑处理器的TLB中冲刷所高速缓存的变换。发起逻辑处理器(ILP)向接收方逻辑处理器(RLP)发送击落请求。在高层级处,ILP所请求的是由RLP进行远程动作处置(RAH)。某些架构不允许在不冲刷整个TLB的情况下从TLB中冲刷多个相继的页面。每一项页面无效化要求调用无效化页面(INVLPG)指令的一个附加实例。如果需要将大量相继的页面而不是整个TLB无效化,这可能会导致性能影响。
图6示出了由ILP实施来发起RAR的方法的一个实施例。通常来说,这是由ILP的核心、远程动作接口、中断控制器和TLB的组合来实施。
在某些实施例中,在601处,页表条目可以被使用在地址变换中的指示由ILP清空。举例来说,页表条目中的存在比特被清空。
在603处,把一个或多个处理器识别为将接收RAR的RLP。
在605处,ILP在存储器中配置有效载荷。举例来说,针对将页面和该页面的地址无效化的指令被存储在存储器121中的有效载荷数据结构123中。
在607处,由ILP执行RAR指令从而导致将RAR信号发送到所识别出的RLP,并且把计数器数值设定成对应于所识别出的RLP的数目的数字。举例来说,RAR信号由远程动作接口105通过总线或互连131发送到每一个所识别出的RLP,并且计数器107被设定到将要处置请求的RLP的数目。
在某些实施例中,在609处,在ILP中本地实施相应的动作。举例来说,ILP将其自身的TLB中的某一页面无效化。
在611处,从RLP接收完成确认,并且更新(递减)计数器以便反映完成。举例来说,RLP已经实施了所请求的动作,并且已经通过总线或互连131将确认发送到远程动作接口105和/或远程动作计数器107。
在613处读取远程动作计数器107的数值。
在615处确定所读取的数值是否表明所有RLP都已完成了请求。举例来说,计数器是否为零
当计数器表明所有RLP都已完成并且请求已经由所有RLP处置时,则方法完成。如果不是的话,则在接收到另一项确认之后再次读取计数器。如果计数器对于所设定的阈值时间量(周期)没有发生改变,则ILP触发软件进行进一步的处理。
图7示出了由RLP实施来处理RAR的方法的一个实施例。在701中,RLP从ILP接收RAR。RLP通过其前面已经详述过的远程动作接口来接收该请求。在某些实施例中,ILP执行指令从而导致向(多个)RLP发送关于RAR的信号。ILP还将把与RAR相关联的有效载荷存储到有效载荷数据结构中。
在703中,RLP(具体来说是RLP的远程动作接口)从存储器中读取有效载荷。举例来说,RLP从有效载荷数据结构125中读取有效载荷。举例来说,RLP可以对于有效的有效载荷读取TLB无效化请求及其相关联的地址。
在705中,RLP(具体来说是RLP的远程动作处置器)实施所确定的动作。在某些实施例中,远程动作处置器自身包括用以实施动作的电路。在其他实施例中,远程动作处置器调用特定的处置器来实施动作。
在707中,RLP(具体来说是RLP的远程动作处置器)通过向ILP发送确认来确认RAR。举例来说,RLP向ILP发送确认,ILP随后递减其计数器。
示例性的远程动作请求处置
图8示出了使用存储在存储器中的有效载荷809和动作数据结构811的RAR流程的方块图的一个实施例。在该实施例中示出了向多个RLP 803和805的其中之一发出RAR的ILP801。
在813处,ILP 801填充有效载荷并且将其有效化。在该图示中,存储器中的有效载荷数据结构809中的条目的有效比特被设定到1,并且有效载荷被设定到INVLPG, Addr(将该地址处的页面无效化)。
在815处,ILP 801对于将要处理请求的RLP在存储器的动作数据结构中设定动作。在该例中,动作A0对于RLP0被设定为待定(PND)。
在817处,从ILP 801向RLP 0 803设定RAR中断。正如前面所提到的那样,这通常是通过对触发针对RLP的IPI的 ILP 801中的专门化的寄存器进行写入而完成。
在825处,RLP 0 803从动作数据结构811中读取其相关联的动作。在该例中,第一行与RLP 0 804相关联。
在821处,RLP 0 803读取有效载荷数据结构809中的对应于读取动作的有效载荷。在该例中,动作A0对应于有效载荷数据结构809的第一条目。
在823处,RLP 0 803实施与所读取的有效载荷相关联的动作。在该例中,RLP 0803将指定地址处的页面无效化。
在实施动作之后,在825处,RLP 0 803从动作数据结构811中清空动作。
在进行RAR之后的某一点处,在827处,ILP 801对动作数据结构811进行轮询以便查看其设定动作是否已被实施。如果是的话,则在829处清空对应于该动作的有效载荷。如果不是的话,ILP 801将请求(call on)软件来处置请求,或者将重新轮询动作数据结构811。
图9是根据本发明的一个实施例的寄存器架构的方块图。写入掩码寄存器915——在所示出的实施例中存在8个写入掩码寄存器(k0到k7),每一个的尺寸是64比特。在一个替换实施例中,写入掩码寄存器915的尺寸是16比特。正如前面所描述的那样,在本发明的一个实施例中,矢量掩码寄存器k0不可被用作写入掩码;当通常将表明k0的编码被用于写入掩码时,其选择0xFFFF的硬连线写入掩码,从而有效地禁用针对该指令的写入屏蔽。
通用寄存器925——在所示出的实施例中存在十六个64比特通用寄存器,所述通用寄存器连同现有的x86寻址模式一起被用来对存储器运算对象进行寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8到R15来索引。
MMX紧缩整数(packed integer)平面寄存器文件950被别名在标量浮点堆栈寄存器文件(x87堆栈)945上——在所示出的实施例中,x87堆栈是被用来使用x87指令集扩展在32/64/80比特浮点数据上实施标量浮点运算的八单元堆栈;而同时MMX寄存器则被用来在64比特紧缩整数数据上实施运算,以及为在MMX与XMM寄存器之间实施的某些运算保持运算对象。
本发明的替换实施例可以使用更宽或更窄的寄存器。此外,本发明的替换实施例可以使用更多、更少或者不同的寄存器文件和寄存器。
处理器核心可以通过不同方式、出于不同目的、在不同处理器中实施。举例来说,这样的核心的实现方式可以包括:1)意图用于通用计算的通用有序核心;2)意图用于通用计算的高性能通用乱序核心;3)主要意图用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可以包括:1)包括意图用于通用计算的一个或多个通用有序核心以及/或者意图用于通用计算的一个或多个通用乱序核心的CPU;以及2)包括主要意图用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,其中可以包括:1)与CPU分开的芯片上的协处理器;2)与CPU相同的包装中的分开的管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在这种情况下,这样的协处理器有时被称作专用逻辑,比如集成图形和/或科学(吞吐量)逻辑,或者被称作专用核心);以及4)可以在与所描述的CPU(其有时被称作(多个)应用核心或(多个)应用处理器)相同的管芯上包括前面描述的协处理器和附加的功能的芯片上系统。接下来将描述示例性的核心架构,随后将描述示例性的处理器和计算机架构。
示例性核心架构
有序和乱序核心方块图
图10A是示出根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发出/执行流水线二者的方块图。图10B是示出根据本发明的实施例的将被包括在处理器中的有序架构核心的示例性实施例和示例性的寄存器重命名、乱序发出/执行架构核心二者的方块图。图10A-B中的实线框示出了有序流水线和有序核心,而可选地添加的虚线框示出了寄存器重命名、乱序发出/执行流水线和核心。鉴于有序方面是乱序方面的一个子集,因此将描述乱序方面。
在图10A中,处理器流水线1000包括获取级1002、长度译码级1004、译码级1006、分配级1008、重命名级1010、调度(也被称作调遣或发出)级1012、寄存器读取/存储器读取级1014、执行级1016、写回/存储器写入级1018、异常处置级1022以及提交级1024。
图10B示出了包括耦合到执行引擎单元1050的前端单元1030的处理器核心1090,执行引擎单元1050和前端单元1030二者都耦合到存储器单元1070。核心1090可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、甚长指令字(VLIW)核心或者混合或替换的核心类型。作为另一种选项,核心1090可以是专用核心,比如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,指令高速缓存单元1034耦合到指令变换旁视缓冲器(TLB)1036,后者耦合到指令获取单元1038,后者耦合到译码单元1040。译码单元1040(或译码器)可以对指令进行译码,并且作为输出生成从原始指令译码得到、或者通过其他方式反映出原始指令或者从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令或者其他控制信号。译码单元1040可以使用各种不同的机制来实施。适当的机制的实例包括而不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。在一个实施例中,核心1090包括存储用于特定宏指令的微代码的微代码ROM或其他介质(例如在译码单元1040中或者否则在前端单元1030内)。译码单元1040耦合到执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括耦合到引退单元1054以及由一个或多个调度器单元1056构成的集合的重命名/分配器单元1052。(多个)调度器单元1056表示许多不同的调度器,包括保留站、中央指令窗口等等。(多个)调度器单元1056耦合到(多个)物理寄存器文件单元1058。(多个)物理寄存器文件单元1058当中的每一个表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一种或多种不同的数据类型,比如标量整数、标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点、状态(例如作为将被执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器文件单元1058包括矢量寄存器单元、写入掩模寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。(多个)物理寄存器文件单元1058被引退单元1054覆盖以便说明可以实施寄存器重命名和乱序执行的各种方式(例如使用(多个)重排序缓冲器和(多个)引退寄存器文件;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器文件;使用寄存器映射图和寄存器池;等等)。引退单元1054和(多个)物理寄存器文件单元1058耦合到(多个)执行集群1060。(多个)执行集群1060包括由一个或多个执行单元1062构成的集合以及由一个或多个存储器存取单元1064构成的集合。执行单元1062可以实施各种操作(例如移位、加法、减法、乘法)并且在各种类型的数据(例如标量浮点、紧缩整数、紧缩浮点、矢量整数、矢量浮点)上实施操作。尽管某些实施例可以包括专用于特定功能或功能集合的若干执行单元,但其他实施例可以包括仅仅一个执行单元或者全部实施所有功能的多个执行单元。(多个)调度器单元1056、(多个)物理寄存器文件单元1058和(多个)执行集群1060被示出为可能是复数的,这是因为特定实施例对于特定类型的数据/操作创建分开的流水线(例如标量整数流水线、标量浮点/紧缩整数/紧缩浮点/矢量整数/矢量浮点流水线以及/或者分别具有其自身的调度器单元、(多个)物理寄存器文件单元和/或执行集群的存储器存取流水线——并且在分开的存储器存取流水线的情况下,实施其中仅有该流水线的执行集群具有(多个)存储器存取单元1064的特定实施例)。还应当理解的是,在使用分开的流水线的情况下,这些流水线当中的一个或多个可以是乱序发出/执行并且其余的是有序的。
存储器存取单元1064的集合耦合到存储器单元1070,后者包括耦合到数据高速缓存单元1074的数据TLB单元1072,数据高速缓存单元1074耦合到2级(L2)高速缓存单元1076。在一个示例性实施例中,存储器存取单元1064可以包括载荷单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元1070中的数据TLB单元1072。指令高速缓存单元1034还耦合到存储器单元1070中的第2级(L2)高速缓存单元1076。L2高速缓存单元1076耦合到一个或多个其他层级的高速缓存,并且最终耦合到主存储器。
作为举例,示例性的寄存器重命名、乱序发出/执行核心架构可以如下实施流水线1000:1)指令获取1038实施获取和长度译码级1002和1004;2)译码单元1040实施译码级1006;3)实施分配级1008和重命名级1010的重命名/分配器单元1052;4)实施调度级1012的(多个)调度器单元1056;5)实施寄存器读取/存储器读取级1014的(多个)物理寄存器文件单元1058和存储器单元1070;实施执行级1016的执行集群1060;6)实施写回/存储器写入级1018的存储器单元1070和(多个)物理寄存器文件单元1058;7)可能在异常处置级1022中所涉及的各种单元;以及8)实施提交级1024的引退单元1054和(多个)物理寄存器文件单元1058。
核心1090可以支持一个或多个指令集(例如x86指令集(可能随着更新的版本添加了一些扩展);MIPS Technologies(Sunnyvale,CA)的MIPS指令集;ARM Holdings(Sunnyvale,CA)的ARM指令集(具有例如NEON之类的可选的附加扩展)),其中包括本文中所描述的(多条)指令。在一个实施例中,核心1090包括用以支持紧缩数据指令集扩展(例如AVX1、AVX2)的逻辑,从而允许使用紧缩数据来实施由许多多媒体应用所使用的操作。
应当理解的是,所述核心可以支持多线程(执行两个或多个并行的操作或线程集合),并且可以通过多种方式这样做,所述方式包括时间切片多线程、同时多线程(其中单个物理核心为该物理核心同时多线程的每一个线程提供一个逻辑核心)或者其组合(例如诸如Intel® Hyperthreading(超线程)技术中的时间切片获取和译码以及随后的同时多线程)。
虽然在乱序执行的情境中描述了寄存器重命名,但是应当理解的是,寄存器重命名可以被使用在有序架构中。虽然所示出的处理器实施例还包括分开的指令和数据高速缓存单元1034/1074和共享的L2高速缓存单元1076,但替换的实施例可以具有用于指令和数据二者的单个内部高速缓存,比如1级(L1)内部高速缓存,或者多个层级的内部高速缓存。在某些实施例中,所述系统可以包括内部高速缓存与处于核心和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以处于核心和/或处理器的外部。
具体的示例性有序核心架构
图11A-B示出了更加具体的示例性有序核心架构的方块图,所述核心将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其他核心)当中的一个。根据应用,逻辑块通过高带宽互连网络(例如环形网络)与某种固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图11A是根据本发明的实施例的单个处理器核心连同其去往管芯上互连网络1102的连接以及其2级(L2)高速缓存1104的本地子集的方块图。在一个实施例中,指令译码器1100支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1106允许进入到标量和矢量单元中的针对高速缓冲存储器的低等待时间存取。虽然在一个实施例中(为了简化设计),标量单元1108和矢量单元1110使用分开的寄存器集合(分别是标量寄存器1101和矢量寄存器1114),并且在它们之间传输的数据被写入到存储器并且随后被从1级(L1)高速缓存1106中读回,但是本发明的替换实施例可以使用不同的方法(例如使用单个寄存器集合或者包括允许在两个寄存器文件之间传输数据而无需写入和读回的通信路径)。
L2高速缓存1104的本地子集是被划分成分开的本地子集(每个处理器核心一个)的全局L2高速缓存的一部分。每一个处理器核心具有去往其自身的L2高速缓存1104的本地子集的直接存取路径。由处理器核心读取的数据被存储在其L2高速缓存子集1104中,并且可以与存取其自身的本地L2高速缓存子集的其他处理器核心并行地被快速存取。由处理器核心写入的数据被存储在其自身的L2高速缓存子集1104中,并且如果必要的话被从其他子集中冲刷。环形网络对于共享的数据确保一致性。环形网络是双向的,从而允许例如处理器核心、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每一条环形数据路径是每个方向1012比特宽。
图11B是根据本发明的实施例的图11A中的处理器核心的一部分的展开视图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分,以及关于矢量单元1110和矢量寄存器1114的更多细节。具体来说,矢量单元1110是宽度为16的矢量处理单元(VPU)(参见宽度为16的ALU 1128),所述矢量单元1110执行整数、单精度浮点和双精度浮点指令当中的一项或多项。VPU支持利用调派(swizzle)单元1120对寄存器输入进行调派,利用数值转换单元1122A-B进行数值转换,并且利用复制单元1124在存储器输入上进行复制。写入掩码寄存器1126允许断言所得到的矢量写入。
具有集成的存储器控制器和图形装置的处理器
图12是根据本发明的实施例的处理器1200的方块图,处理器1200可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形装置。图12中的实线框示出了具有单个核心1202A、系统代理1210、由一个或多个总线控制器单元1216构成的集合的处理器1200,而可选地添加的虚线框示出了具有多个核心1202A-N、系统代理单元1210中的由一个或多个集成存储器控制单元1214构成的集合以及专用逻辑1208的替换处理器1200。
因此,处理器1200的不同实现方式可以包括:1)具有作为集成的图形装置和/或科学(吞吐量)逻辑的专用逻辑1208的CPU(其可以包括一个或多个核心),并且核心1202A-N是一个或多个通用核心(例如通用有序核心、通用乱序核心、二者的组合);2)具有核心1202A-N的协处理器,其中核心1202A-N是主要意图用于图形和/或科学(吞吐量)的大量专用核心;以及3)具有核心1202A-N的协处理器,其中核心1202A-N是大量通用有序核心。因此,处理器1200可以是通用处理器、协处理器或专用处理器,比如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量超多集成核心(MIC)协处理器(包括30个或更多核心)、嵌入式处理器等等。处理器可以被实施在一个或多个芯片上。处理器1200可以是一个或多个基板的一部分并且/或者可以使用若干处理技术当中的任一种被实施在一个或多个基板上,所述处理技术比如BiCMOS、CMOS或NMOS。
存储器分级结构包括核心内的一个或多个层级的高速缓存,一个或多个共享高速缓存单元1206或其集合,以及耦合到集成存储器控制器单元1214的集合的外部存储器(未示出)。共享高速缓存单元1206的集合可以包括一个或多个中间层级高速缓存,比如2级(L2)、3级(L3)、4级(L4)或其他层级的高速缓存、最后一级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环形的互连单元1212把集成图形逻辑1208、共享高速缓存单元1206的集合以及系统代理单元1210/(多个)集成存储器控制器单元1214互连,但是替换的实施例可以使用许多众所周知的技术来互连这样的单元。在一个实施例中,在一个或多个高速缓存单元1207和核心1201-A-N之间保持一致性。
在某些实施例中,核心1202A-N当中的一个或多个能够多线程。系统代理1210包括协调和操作核心1202A-N的那些组件。系统代理单元1210例如可以包括功率控制单元(PCU)和显示单元。PCU可以是或者包括对于调节核心1202A-N和集成图形逻辑1208的功率状态所需的逻辑和组件。所述显示单元用于驱动一个或多个外部连接的显示器。
核心1202A-N在架构指令集方面可以是同类或异类的;也就是说,核心1202A-N当中的两个或多个可以能够执行相同的指令集,而其他核心可以能够执行该指令集的仅一个子集或者不同的指令集。
示例性计算机架构
图13-16是示例性计算机架构的方块图。针对膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的本领域中已知的其他系统设计和配置也是适当的。一般来说,能够合并如本文中所公开的处理器和/或其他执行逻辑的多种系统或电子设备通常是适当的。
现在参照图13,其中示出了根据本发明的一个实施例的系统1300的方块图。系统1300可以包括耦合到控制器集线器1320的一个或多个处理器1310、1315。在一个实施例中,控制器集线器1320包括图形存储器控制器集线器(GMCH)1390和输入/输出集线器(IOH)1350(其可以处于分开的芯片上);GMCH 1390包括存储器1340和协处理器1345与之耦合的存储器和图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合到GMCH 1390。或者,存储器和图形控制器当中的一个或两个被集成在(如本文中所描述的)处理器内,存储器1340和协处理器1345直接耦合到处理器1310,并且控制器集线器1320是具有IOH 1350的单个芯片。
在图13中用虚线标示出附加的处理器1315的可选性质。每一个处理器1310、1315可以包括本文中所描述的其中一个或多个处理核心,并且可以是处理器1200的某一版本。
存储器1340例如可以是动态随机存取存储器(DRAM)、相变存储器(PCM)或者二者的组合。对于至少一个实施例,控制器集线器1320通过例如前端总线(FSB)之类的多点分支(multi-drop)总线、例如QuickPath互连(QPI)之类的点对点接口或者类似的连接1395与(多个)处理器1310、1315进行通信。
在一个实施例中,协处理器1345是专用处理器,比如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器集线器1320可以包括集成图形加速器。
物理资源1310、1315之间在包括架构、微架构、热、功率消耗特性等价值量度范围方面可能存在许多差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。协处理器指令可以被嵌入在指令内。处理器1310将这些协处理器指令辨识成应当由所附接的协处理器1345执行的类型。相应地,处理器1310在协处理器总线或其他互连上向协处理器1345发出这些协处理器指令(或者表示协处理器指令的控制信号)。(多个)协处理器1345接受并且执行所接收到的协处理器指令。
现在参照图14,其中示出了根据本发明的一个实施例的更加具体的第一示例性系统1400的方块图。如图14中所示,多处理器系统1400是点对点互连系统,并且包括通过点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480当中的每一个可以是某一版本的处理器1200。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一个实施例中,处理器1470和1480分别是处理器1310和协处理器1345。
处理器1470和1480被示出为分别包括集成存储器控制器(IMC)单元1472和1482。处理器1470还包括点对点(P-P)接口1476和1478作为其总线控制器单元的一部分;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470和1480可以通过点对点(P-P)接口1450使用P-P接口电路1478、1488来交换信息。如图14中所示,IMC 1472和1482把处理器耦合到对应的存储器,即存储器1432和存储器1434,所述存储器可以是本地附接到对应的处理器的主存储器的一部分。
处理器1470、1480可以分别通过单独的P-P接口1452、1454使用点对点接口电路1476、1494、1486、1498与芯片组1490交换信息。芯片组1490可以可选地通过高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,比如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一个处理器中或者被包括在两个处理器的外部,但是通过P-P互连与处理器连接,从而如果处理器被置于低功率模式下,则使得任一个或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。
芯片组1490可以通过接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线,或者是例如PCI Express总线或另一种第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图14中所示,各种I/O设备1414可以耦合到第一总线1416,连同把第一总线1416耦合到第二总线1420的总线桥接器1418。在一个实施例中,一个或多个附加的处理器1415耦合到第一总线1416,所述附加的处理器1415比如协处理器、高吞吐量MIC处理器、GPGPU、加速器(比如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1420,例如包括键盘和/或鼠标1422、通信设备1427和存储单元1428,存储单元1428比如是可以包括指令/代码和数据1430的盘驱动器或其他大容量存储设备。此外,音频I/O 1424可以耦合到第二总线1420。应当提到的是,其他架构也是可能的。举例来说,取代图14的点对点架构,系统可以实施多点分支总线或其他此类架构。
现在参照图15,其中示出了根据本发明的一个实施例的更加具体的第二示例性系统1500的方块图。图14和15中的相同单元具有相同的附图标记,并且图14中的特定方面在图15中已被省略,以避免模糊图15的其他方面。
图15示出处理器1470、1480可以分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并且包括I/O控制逻辑。图15示出不仅存储器1432、1434耦合到CL 1472、1482,而且I/O设备1514也耦合到控制逻辑1472、1482。传统I/O设备1515耦合到芯片组1490。
现在参照图16,其中示出了根据本发明的一个实施例的SoC 1600的方块图。图12中的类似单元具有相同的附图标记。此外,虚线框是更加先进的SoC上的可选特征。在图16中,(多个)互连单元1602耦合到:包括由一个或多个核心202A-N构成的集合以及(多个)共享高速缓存单元1206的应用处理器1610;系统代理单元1210;(多个)总线控制器单元1216;(多个)集成存储器控制器单元1214;可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器的一个或多个协处理器1620或其集合;静态随机存取存储器(SRAM)单元1630;直接存储器存取(DMA)单元1632;用于耦合到一个或多个外部显示器的显示单元1640。在一个实施例中,(多个)协处理器1620包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中所公开的机制的实施例可以用硬件、软件、固件或者这样的实现方法的组合来实施。本发明的实施例可以被实施成执行在可编程系统上的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储单元)、至少一个输入设备以及至少一个输出设备。
程序代码(比如图14中示出的代码1430)可以被应用于输入指令,以便实施本文中所描述的功能并且生成输出信息。输出信息可以按照已知的方式被应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,所述处理器比如:数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或者微处理器。
程序代码可以被实施在高层级程序化或面向对象的编程语言中以便与处理系统进行通信。如果希望的话,程序代码还可以被实施在汇编或机器语言中。实际上,本文中所描述的机制的范围不限于任何特定的编程语言。在任何情况下,所述语言可以是已编译或已解译语言。
至少一个实施例的一个或多个方面可以通过存储在表示处理器内的各种逻辑的机器可读介质上的代表性指令来实施,所述指令在由机器读取时使得机器制作用以实施本文中所描述的技术的逻辑。这样的表示被称作“IP核心”,其可以被存储在有形的机器可读介质上并且被提供到各种顾客或制造设施,以便加载到实际制作逻辑或处理器的制作机器中。
这样的机器可读存储介质可以包括而不限于由机器或设备制造或形成的制品的非瞬时性的有形安排,包括例如以下存储介质:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)和磁光盘;半导体设备,比如只读存储器(ROM)、随机存取存储器(RAM)(比如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器(EEPROM)、相变存储器(PCM);磁性或者光学卡;或者适合于存储电子指令的任何其他类型的介质。
相应地,本发明的实施例还包括包含指令或包含设计数据(比如定义本文中所描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(HDL))的非瞬时性的有形机器可读介质。这样的实施例也可以被称作程序产品。
仿真(包括二进制变换、代码变形等等)
在某些情况下,可以使用指令转换器把指令从来源指令集转换到目标指令集。举例来说,指令转换器可以把指令变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变型、仿真或者通过其他方式转换到将由核心处理的一条或多条其他指令。指令转换器可以按软件、硬件、固件或其组合来实施。指令转换器可以处于处理器上、处于处理器外或者部分地处于处理器上并且部分地处于处理器外。
Claims (21)
1.一种硬件装置,包括:
用以存储对应于将与远程动作请求(RAR)中断相关联地实施的动作的有效载荷的存储器地址的第一寄存器;
用以存储可以由多个处理器访问的动作列表的存储器地址的第二寄存器;
用以存储RAR的特性的第三寄存器;
用以实施以下各项的远程动作处置器:
识别所接收到的RAR中断;
实施所接收到的RAR中断的动作;以及
在动作完成后用信号向发起处理器通知确认。
2.根据权利要求1所述的硬件装置,其中,所述动作是以下各项当中的一项:
将整个变换旁视缓冲器(TLB)无效化;
将TLB的单个条目无效化;
将TLB的一定数目的相继页面无效化;
不实施动作;
将对应于线性地址和进程上下文标识符(PCID)的单独地址无效化;
将与PCID相关联的单个上下文无效化;
将所有上下文无效化,包括与PCID相关联的全局变换;以及
将所有上下文无效化,与PCID相关联的全局变换除外。
3.根据权利要求1所述的硬件装置,还包括:
用以存储有效载荷和动作列表的存储器。
4.根据权利要求1所述的硬件装置,其中,远程动作处置器电路访问动作列表以便识别将要实施的动作并且访问与所识别出的动作相关联的有效载荷。
5.根据权利要求1所述的硬件装置,其中,远程动作处置器电路通过从动作列表中清空与RAR中断相关联的动作而用信号通知确认。
6.根据权利要求1所述的硬件装置,其中,远程动作处置器调用专用的硬件处置器来实施动作。
7.一种硬件装置,包括:
用以存储对应于将与远程动作请求(RAR)相关联地实施的动作的有效载荷的存储器地址的寄存器;
用以向下计数已完成的RAR操作的计数器;
用以实施以下各项的远程动作接口:
识别所接收到的RAR;
实施所接收到的RAR的动作;以及
在动作完成后用信号向发起处理器通知确认。
8.根据权利要求7所述的硬件装置,其中,所述动作是以下各项当中的一项:
将整个变换旁视缓冲器(TLB)无效化;
将TLB的单个条目无效化;
将TLB的一定数目的相继页面无效化;
不实施动作;
将对应于线性地址和进程上下文标识符(PCID)的单独地址无效化;
将与PCID相关联的单个上下文无效化;
将所有上下文无效化,包括与PCID相关联的全局变换;以及
将所有上下文无效化,与PCID相关联的全局变换除外。
9.根据权利要求7所述的硬件装置,还包括:
用以存储有效载荷的存储器。
10.根据权利要求7所述的硬件装置,其中,远程动作接口电路访问与所识别出的动作相关联的有效载荷。
11.根据权利要求7所述的硬件装置,其中,远程动作接口电路在动作完成后用信号向发起处理器的计数器通知确认。
12.根据权利要求7所述的硬件装置,其中,远程动作接口调用专用的硬件处置器来实施动作。
13.一种方法,包括:
接收远程动作请求(RAR)中断;
确定将要处理的动作;
从存储器中读取对应于RAR的有效载荷;
实施动作。
14.根据权利要求13所述的方法,其中,将要处理的动作是存储在存储器中的动作列表当中的一项。
15.根据权利要求14所述的方法,还包括:
在实施后从动作列表中清空动作。
16.根据权利要求13所述的方法,其中,通过远程动作接口来接收RAR中断。
17.根据权利要求13所述的方法,其中,所述动作是以下各项当中的一项:
将整个变换旁视缓冲器(TLB)无效化;
将TLB的单个条目无效化;
将TLB的一定数目的相继页面无效化;
不实施动作;
将对应于线性地址和进程上下文标识符(PCID)的单独地址无效化;
将与PCID相关联的单个上下文无效化;
将所有上下文无效化,包括与PCID相关联的全局变换;以及
将所有上下文无效化,与PCID相关联的全局变换除外。
18.一种方法,包括:
接收远程动作请求(RAR);
从存储器中读取对应于RAR的有效载荷;
实施RAR的动作。
19.根据权利要求18所述的方法,还包括:
向请求者发送动作正被实施的确认。
20.根据权利要求18所述的方法,其中,通过远程动作接口来接收RAR中断。
21.根据权利要求18所述的方法,其中,所述动作是以下各项当中的一项:
将整个变换旁视缓冲器(TLB)无效化;
将TLB的单个条目无效化;
将TLB的一定数目的相继页面无效化;
不实施动作;
将对应于线性地址和进程上下文标识符(PCID)的单独地址无效化;
将与PCID相关联的单个上下文无效化;
将所有上下文无效化,包括与PCID相关联的全局变换;以及
将所有上下文无效化,与PCID相关联的全局变换除外。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,933 US10216662B2 (en) | 2015-09-26 | 2015-09-26 | Hardware mechanism for performing atomic actions on remote processors |
US14/866933 | 2015-09-26 | ||
PCT/US2015/056535 WO2017052669A1 (en) | 2015-09-26 | 2015-10-20 | Hardware mechanism for performing atomic actions on remote processors |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027726A true CN108027726A (zh) | 2018-05-11 |
CN108027726B CN108027726B (zh) | 2022-07-15 |
Family
ID=58386931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580083377.0A Active CN108027726B (zh) | 2015-09-26 | 2015-10-20 | 用于在远程处理器上实施原子动作的硬件机制 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10216662B2 (zh) |
CN (1) | CN108027726B (zh) |
DE (1) | DE112015006952T5 (zh) |
TW (1) | TWI722009B (zh) |
WO (1) | WO2017052669A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10867092B2 (en) | 2017-12-16 | 2020-12-15 | Intel Corporation | Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200401412A1 (en) * | 2019-06-24 | 2020-12-24 | Intel Corporation | Hardware support for dual-memory atomic operations |
US11263043B1 (en) * | 2019-07-19 | 2022-03-01 | Marvell Asia Pte, Ltd. | Managing processor core synchronization using interrupts |
US20210117353A1 (en) * | 2020-12-23 | 2021-04-22 | Kishore Kasichainula | Methods and apparatus to transmit and/or receive data streams with a network interface controller |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4231086A (en) * | 1978-10-31 | 1980-10-28 | Honeywell Information Systems, Inc. | Multiple CPU control system |
US5765195A (en) * | 1995-12-08 | 1998-06-09 | Ncr Corporation | Method for distributing interprocessor interrupt requests via cache memory coherency mechanisms |
US6336179B1 (en) * | 1998-08-21 | 2002-01-01 | Advanced Micro Devices, Inc. | Dynamic scheduling mechanism for an asynchronous/isochronous integrated circuit interconnect bus |
US20020120800A1 (en) * | 2001-02-14 | 2002-08-29 | Hirohide Sugahara | Launch raw packet on remote interrupt |
US20050080937A1 (en) * | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
CN101593096A (zh) * | 2009-05-22 | 2009-12-02 | 西安交通大学 | 一种共享寄存器相关性消除的实现方法 |
US20110047310A1 (en) * | 2008-04-28 | 2011-02-24 | Bonola Thomas J | Method and System for Generating and Delivering Inter-Processor Interrupts in a Multi-Core Processor and in Ceterain Shared Memory Multi-Processor Systems |
CN102023932A (zh) * | 2009-09-18 | 2011-04-20 | 英特尔公司 | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 |
US20150149815A1 (en) * | 2013-11-27 | 2015-05-28 | American Megatrends, Inc. | Bios failover update with service processor having direct serial peripheral interface (spi) access |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7178062B1 (en) | 2003-03-12 | 2007-02-13 | Sun Microsystems, Inc. | Methods and apparatus for executing code while avoiding interference |
US8984199B2 (en) * | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
WO2013095532A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Interrupt return instruction with embedded interrupt service functionality |
-
2015
- 2015-09-26 US US14/866,933 patent/US10216662B2/en active Active
- 2015-10-20 WO PCT/US2015/056535 patent/WO2017052669A1/en active Application Filing
- 2015-10-20 DE DE112015006952.6T patent/DE112015006952T5/de not_active Withdrawn
- 2015-10-20 CN CN201580083377.0A patent/CN108027726B/zh active Active
-
2016
- 2016-08-24 TW TW105127099A patent/TWI722009B/zh active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4231086A (en) * | 1978-10-31 | 1980-10-28 | Honeywell Information Systems, Inc. | Multiple CPU control system |
US5765195A (en) * | 1995-12-08 | 1998-06-09 | Ncr Corporation | Method for distributing interprocessor interrupt requests via cache memory coherency mechanisms |
US6336179B1 (en) * | 1998-08-21 | 2002-01-01 | Advanced Micro Devices, Inc. | Dynamic scheduling mechanism for an asynchronous/isochronous integrated circuit interconnect bus |
US20020120800A1 (en) * | 2001-02-14 | 2002-08-29 | Hirohide Sugahara | Launch raw packet on remote interrupt |
US20050080937A1 (en) * | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
US20110047310A1 (en) * | 2008-04-28 | 2011-02-24 | Bonola Thomas J | Method and System for Generating and Delivering Inter-Processor Interrupts in a Multi-Core Processor and in Ceterain Shared Memory Multi-Processor Systems |
CN101593096A (zh) * | 2009-05-22 | 2009-12-02 | 西安交通大学 | 一种共享寄存器相关性消除的实现方法 |
CN102023932A (zh) * | 2009-09-18 | 2011-04-20 | 英特尔公司 | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 |
US20150149815A1 (en) * | 2013-11-27 | 2015-05-28 | American Megatrends, Inc. | Bios failover update with service processor having direct serial peripheral interface (spi) access |
Non-Patent Citations (1)
Title |
---|
李奕磊等: "32位RISC处理器中系统控制协处理器的设计与实现", 《电子测试》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10867092B2 (en) | 2017-12-16 | 2020-12-15 | Intel Corporation | Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries |
Also Published As
Publication number | Publication date |
---|---|
US20170091128A1 (en) | 2017-03-30 |
DE112015006952T5 (de) | 2018-06-07 |
US10216662B2 (en) | 2019-02-26 |
TW201725507A (zh) | 2017-07-16 |
TWI722009B (zh) | 2021-03-21 |
WO2017052669A1 (en) | 2017-03-30 |
CN108027726B (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10503505B2 (en) | Read and write masks update instruction for vectorization of recursive computations over independent data | |
US10140210B2 (en) | Method and apparatus for cache occupancy determination and instruction scheduling | |
CN104205088B (zh) | 用于实现页级自动二进制转换的方法、装置、系统、和设备 | |
CN106708753A (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
RU2636669C2 (ru) | Устройство и способ реверсирования и перестановки битов в регистре маски | |
CN104951702A (zh) | 用于有效地执行散列操作的方法和设备 | |
US10275242B2 (en) | System and method for real time instruction tracing | |
CN104011663A (zh) | 掩码寄存器上的广播操作 | |
CN104969178A (zh) | 用于实现便笺式存储器的装置和方法 | |
CN104221005A (zh) | 用于从多线程发送请求至加速器的机制 | |
US9286125B2 (en) | Processing engine implementing job arbitration with ordering status | |
CN108027726A (zh) | 用于在远程处理器上实施原子动作的硬件机制 | |
CN110321072A (zh) | 针对存储器通信量的存活性保障 | |
US20200012514A1 (en) | Systems, Methods, and Apparatuses for Resource Monitoring | |
US10310978B2 (en) | Apparatus and method for multi-level cache request tracking | |
US9418024B2 (en) | Apparatus and method for efficient handling of critical chunks | |
TWI751125B (zh) | 用以監控位址衝突的計數器 | |
US8838915B2 (en) | Cache collaboration in tiled processor systems | |
CN108255520A (zh) | N路监测器 | |
DE112016007029T5 (de) | Vorrichtung und verfahren zum verwalten einer speicherseitigen cache-räumung | |
US20160378497A1 (en) | Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |