CN104603795B - 实现用户级线程的即时上下文切换的指令和微架构 - Google Patents

实现用户级线程的即时上下文切换的指令和微架构 Download PDF

Info

Publication number
CN104603795B
CN104603795B CN201380045434.7A CN201380045434A CN104603795B CN 104603795 B CN104603795 B CN 104603795B CN 201380045434 A CN201380045434 A CN 201380045434A CN 104603795 B CN104603795 B CN 104603795B
Authority
CN
China
Prior art keywords
block
instruction
context
processor
thread
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.)
Expired - Fee Related
Application number
CN201380045434.7A
Other languages
English (en)
Other versions
CN104603795A (zh
Inventor
D·奥伦斯坦
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104603795A publication Critical patent/CN104603795A/zh
Application granted granted Critical
Publication of CN104603795B publication Critical patent/CN104603795B/zh
Expired - Fee Related 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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

处理器使用扩展寄存器集合的多个区块来存储多个用户级线程的上下文。当前区块寄存器提供指向当前活动的区块的指针。第一线程将其上下文(第一上下文)保存在扩展寄存器集合的第一区块中,而第二线程将其上下文(第二上下文)保存在扩展寄存器集合的第二区块中。当处理器接收用于在第一线程与第二线程之间交换上下文的指令时,处理器将指针从指向第一区块改为指向第二区块,并利用存储在第二区块中的第二上下文来执行第二线程。

Description

实现用户级线程的即时上下文切换的指令和微架构
技术领域
本公开涉及处理逻辑、微处理器以及相关联的指令集架构的领域,该指令集架构在被处理器或其他处理逻辑所执行时运行逻辑、数学或其他功能性操作。
背景技术
指令集或指令集架构(ISA)是计算机架构中与编程有关的部分,并且可包括原生数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出(I/O)。术语指令在本申请中一般表示宏指令,宏指令是被提供给处理器(或指令转换器,该指令转换器(利用静态二进制转换、包括动态编译的动态二进制转换)转换、变形、仿真或以其他方式将指令转换成将由处理器处理的一个或多个其他指令)以供执行的指令——作为对比,微指令或微操作(微操作)是处理器的解码器解码宏指令的结果。
ISA与微架构不同,微架构是实现该指令集的处理器的内部设计。具有不同微架构的处理器可共享共同的指令集。例如,酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。例如,可利用公知技术(包括专用物理寄存器、利用寄存器重命名机制的一个或多个动态分配的物理寄存器等等)在不同微架构中以不同方式实现该ISA的同一寄存器架构。
现代处理器核通常支持多线程(multithreading)以提高其性能效率。例如,XeonTM核目前提供2路同时多线程(SMT)。增加每核的线程数量会给关键服务器应用带来更高的性能。然而,增加SMT线程的数量(从两个增加至四个或更多个)是非常复杂的、代价高的并且容易出错的。
替代的多线程方式是实现由应用软件管理的多个用户级线程。例如,系统使用软件机制来管理被称为纤程(fiber)的用户级线程。利用纤程或相似的方式,当第一纤程遇到长等待时间事件(例如I/O、非用户事件、等待信号标等等)时,应用可从第一纤程切换至第二纤程。可通过该应用来完整地处理和小心地调谐多个纤程的管理和执行。然而,由于纤程之间的代价高的切换损失(例如保存、回复、分支操作),并且由于软件在高效地查明对于短和长等待时间的硬件停止事件应何时进行切换时的限制,纤程方式获得的性能提升非常有限。
附图说明
在附图中的诸个图中通过示例而非限制地示出各个实施例:
图1A是根据一个实施例的具有扩展寄存器集合的指令处理装置的框图。
图1B是根据一个实施例的具有扩展寄存器集合的寄存器架构的框图。
图2A示出根据一个实施例的用于存储多个hiber(硬件支持的纤程)上下文的存储器区域的示例。
图2B示出根据一个实施例的包括用于存储多个hiber(硬件支持的纤程)上下文的诸个区块(bank)的扩展寄存器集合的示例。
图2C示出根据一个实施例的包括用于存储多个hiber(硬件支持的纤程)上下文的诸个区块的扩展寄存器集合的另一示例。
图3示出根据一个实施例的被划分成用于存储多个hiber(硬件支持的纤程)上下文的诸个分区的向量寄存器的示例。
图4A示出包含可能导致高速缓冲未命中的指令的程序的示例。
图4B示出使用用于执行多个hiber(硬件支持的纤程)的状态交换指令的示例。
图5是示出根据一个实施例要执行的操作的流程图。
图6是示出根据一个实施例的使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
图7A是根据一个实施例的有序和无序流水线的框图。
图7B是根据一个实施例的有序和无序核的框图。
图8A-B是根据一个实施例的更具体的示例性有序核架构的框图。
图9是根据一个实施例的处理器的框图。
图10是根据一个实施例的系统的框图。
图11是根据一个实施例的第二系统的框图。
图12是根据本发明的实施例的第三系统的框图。
图13是根据一个实施例的芯片上系统(SoC)的框图。
具体实施方式
在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
本申请中描述的诸个实施例提供状态交换指令(例如SXCHG、SXCHGL以及它们的变型)的集合以及适当的微架构支持,这些状态交换指令导致处理器执行用户级线程之间的即时切换(几乎零循环损失)。不需要对ISA进行附加的改变。这些用户级线程在下文中被称为“hiber”,即:硬件支持的纤程(hardware supported fiber)。该指令集使软件通过在用户模式(环-3)寄存器的N个区块中保存和恢复寄存器内容(也称为“寄存器状态”)而能够在N个hiber之间迅速地切换。该切换能由诸个应用来控制,无需操作系统介入。用户模式寄存器的这N个区块在本申请中被称为扩展寄存器集合。数量N可以是2、4、8或该微架构所支持的任何数量。
图1A是指令处理装置115的实施例的框图,该指令处理装置具有用于执行指令的执行单元140。在一些实施例中,指令处理装置115可以是处理器、多核处理器的处理器核、或者电子系统中的处理元件。
解码器130接收高级机器指令或宏指令形式的传入指令,并且解码所述指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了原始的高级指令和/或从原始的高级指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。可使用各种不同的机制来实现解码器130。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机制等。
执行单元140耦合至解码器130。执行单元140可从解码器130接收一个或多个微操作、微代码进入点、微指令、其它指令或其它控制信号,它们反映了所接收的指令或者是从所接收的指令导出的。执行单元140还接收来自寄存器组170或存储器120的输入,并产生输出至该寄存器组或该存储器。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置115。应当理解,其他实施例可具有超过一个执行单元。例如,装置115可包括多个不同类型的执行单元,诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。指令处理装置或处理器的再其他实施例可具有多个核、逻辑处理器或执行引擎。稍后将参考图7-13提供指令处理装置115的多个实施例。
根据一个实施例,存储器120存储多个hiber的上下文。被存储的这些hiber上下文包括多个hiber的寄存器状态。当计算机系统(例如运行编译器或其它优化代码的处理器、预测或优化电路等等)或编程器预测应用中的特定指令可能导致其诸个hiber中的一个hiber中的停止时,一指令被插入该应用中以导致执行单元140将执行从一个hiber切换至另一hiber。
为了提高处理性能,当存在hiber切换的情况下,hiber上下文不一定被存储在存储器120中并从该存储器恢复。在一个实施例中,指令处理装置115可使用该扩展寄存器集合175作为“写回高速缓存”,以用于临时地存储hiber上下文,以降低存储器访问的频率。从扩展寄存器集合175访问该hiber上下文比从存储器120访问该hiber上下文要快很多。因此,可显著提高诸个hiber之间的上下文切换的速度。
然而,由于未持续地在存储器120中存储和恢复hiber上下文,存储器120可能不具有最新的hiber上下文。为了避免任何应用或线程(这些应用或线程在指令处理装置115的核或处理器上并发地运行)访问存储器120中的过时的信息,该指令处理装置115使用监听电路180来跟踪对其中存储有hiber上下文的存储器区域的访问。每当这些存储器区域中的任一个的内容变得与当前寄存器内容不一致(即不同),就在监听电路180中将相应的存储器地址标记为经标记区域。当从经标记区域读取或写入经标记区域时,就触发一写回事件(即微代码陷入),以在经标记区域与扩展寄存器集合175之间同步所存储的上下文时。该微代码陷入导致当前寄存器状态(即经更新的hiber上下文)被写入经标记区域(如果任何应用或线程正在尝试从该区域读取),或从经标记区域重新加载寄存器(如果另一应用或线程已经写入该区域)。
在一个实施例中,该指令处理装置115支持一组hiber切换指令(诸如状态交换(SXCHG)指令及其变型)。该组Hiber切换指令包括基本SXCHG(I,J),其中hiber[I]的上下文被保存到存储器120中,并且hiber[J]的上下文被恢复并从存储器120被清除。该组hiber切换指令还包括:SXCHG(无操作数)、SXCHGL(SXCHG的轻量版本)、SXCHG.u(无条件SXCHG)、SXCHG.c(条件SXCHG)以及<SXCHG.start—SXCHG.end>(块SXCHG)等等。以下将详细地说明这些指令。
在描述hiber切换指令之前,示出支持这些指令的底层寄存器架构的实施例。将参考图1B描述的寄存器架构是基于CoreTM处理器,该处理器实现包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集以及SIMD扩展的附加集,该附加集被称为高级向量扩展(AVX)(AVX1和AVX2)。然而,应理解,也可使用支持不同寄存器长度、不同寄存器类型和/或不同数量的寄存器的不同的寄存器架构。
图1B是根据本发明的一个实施例的寄存器架构100的框图。在所示的实施例中,存在512位宽的32个向量寄存器110;这些寄存器被称为zmm0至zmm31。低位16个zmm寄存器的低阶256位覆盖在寄存器ymm0-16上。低位十六个zmm寄存器的低阶128位(ymm寄存器的低阶128位)覆盖在寄存器xmm0-15上。在所示实施例中,存在八个写掩码寄存器112(k0到k7),每个掩码寄存器的尺寸为64位。在替代实施例中,写掩码寄存器112的尺寸是16位。
在所示实施例中,扩展寄存器集合175包括四个区块的十六个64位通用(GP)寄存器,在本申请中被称为扩展GP寄存器125。在一实施例中,上述通用寄存器沿循现有x86寻址模式被使用以对存储器操作数寻址。(每个区域中的)这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。该实施例还示出了扩展寄存器集合175包括扩展RFLAGS寄存器126、扩展RIP寄存器127和扩展MXCSR寄存器128,这些寄存器均包含四个区块。
该实施例还示出了标量浮点栈寄存器组(x87浮点)145,在其上面重叠了MMX紧缩数据寄存器组150。在所示出的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点运算的八元素栈;而诸个MMX寄存器用于对64位紧缩整数数据执行操作,以及为在MMX和XMM寄存器之间执行的一些操作保存操作数。
在一个实施例中,扩展寄存器集合175可附加地包括四个区块的FP栈寄存器组145和/或四个区块的向量寄存器110,以为至多四个hiber提供关于它们的FP寄存器状态和/或向量寄存器状态的临时存储。
本发明的替代实施例可使用更宽或更窄的寄存器和/或更多或更少的寄存器区块。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器组和寄存器。
图2A是示出根据一个实施例由处理器(即指令处理装置115)响应于基本SXCHG(IJ)指令而执行的操作的图。在本实施例中,存储器120被配置成包含四个区域,其中不同的区域被指定用于存储不同hiber的上下文。基本SXCHG(IJ)具有两个操作数——源(I),指示要保存哪个hiber上下文;目的地(J),指示要恢复哪个hiber上下文。响应于该指令,处理器将寄存器的当前内容保存至存储器120。在一个实施例中,这些寄存器包括如下的一个或多个:GP寄存器(例如RAX、RBX、……、R15)、向量寄存器(例如Zmm0-31)、标志寄存器(例如RFLAGS)、指令指针(例如RIP)、MXCSR及其任何组合。这些寄存器的当前内容被保存到由存储器指针寄存器210(SMEM[I])指向的指定存储器区域(区域[I])中。在保存当前寄存器内容之后,处理器从由存储器指针寄存器SMEM[J]指向的另一存储器区域(区域[J])加载上述寄存器,并清除(即清零)该存储器区域(区域[J])。作为该操作的结果,该处理器从一个指令流hiber[I]切换以执行另一指令流hiber[J]。
在一种情形下,hiber[J]可包含指令SXCHG(J,I),该指令导致处理器切换回以利用存储器区域[I]中存储的寄存器内容来执行之前的指令流(即hiber[I])。响应于SXCHG(J,I),处理器将寄存器状态保存在由SMEM[J]指向的存储器区域(区域[J])中,从由SMEM[I]指向的存储器区域(区域[I])加载寄存器,并将该存储器区域(区域[I])清除(即清零)。
图2A的示例示出存储器区域[0]、区域[1]、区域[2]以及区域[3]。SXCHG(0,2)的执行导致将寄存器内容保存到(由SMEM[0]指向的)区域[0]中,并从(由SMEM[2]指向的)区域[2]恢复寄存器内容。
为了提高用户级上下文切换的速度,可将寄存器状态保存到扩展寄存器集合(例如图1A和1B的扩展寄存器集合175)中并从该扩展寄存器集合进行恢复,以代替使用存储器。将存储器位置映射到物理寄存器的操作有时被称为存储器重命名。
图2B示出扩展寄存器集合175的实施例。在本实施例中,该集合175中的每个寄存器具有四个区块:区块0、区块1、区块2以及区块3。支持诸个SXCHG指令并具有改善性能的微架构可具有多个区块,例如四个区块,其中每个区块中的GP寄存器为64位宽。在图2B的实施例中,给定区块中的寄存器被重命名为其原始名称加上区块索引,例如RAX.0、RAX.1、RAX.2以及RAX.3。当处理器在两个hiber上下文之间切换时,代替存储器保存和存储器恢复操作的长序列,处理器仅需要将指针(例如当前区块(CB)寄存器220的内容)从指向一个寄存器区块改为指向另一寄存器区块。在一个实施例中,解码器可在上下文切换时改变指令所引用的寄存器名称(例如从RAX.0至RAX.3)。带有寄存器重命名的高级无序处理器可容易地切换重命名指针。因此,如果处理器前端预测SXCHG,则可在几乎零循环内迅速地执行hiber切换。
SXCHG指令的一个实施例不具有任何操作数。代替提供源索引(例如索引I),该指令使用CB寄存器220来标识处理器正在执行的当前活动hiber的区块。在SXCHG指令之后(例如当写回事件出现时),处理器将当前寄存器状态保存到SMEM[CB]所指向的存储器区域中。在图2B的示例中,CB=0,这意味着处理器将寄存器状态保存在SMEM[0]中。扩展寄存器集合175的区块0中的寄存器状态应当停留在区块0中以供未来使用,例如在执行切换回hiber[0]时使用。
此外,SXCHG指令不需要目的地索引。替代地,处理器使用掩码寄存器230,该掩码寄存器包含用于诸个hiber中的每一个的掩码位。在图2B的示例中,每个hiber具有相关联的掩码位。如果相关联的该掩码位具有预定值(例如零),则相应的hiber被停用,并且将不切换至该hiber。否则(例如当掩码位值是一时)相应的hiber是活动的(当前正被执行)、或睡眠的(等待被执行)。在SXCHG执行之后,处理器将使用循环或类似策略来切换至正在睡眠的下一hiber并激活该hiber。在图2B的该示例中,处理器从CB=0切换至CB=2,因为hiber[1]的掩码位是零。
图2C更详细地示出扩展寄存器集合175的实施例。在本实施例中,扩展寄存器集合175包括四个区块,且每个区块包括zmm0-31、GP寄存器、RFLAGS以及RIP。如之前所述,掩码寄存器230包括用于每个区块的掩码位以指示相应的区块是否被停用,并且CB寄存器220指向当前活动的区块。虽然同一区块中的寄存器的宽度看起来与图2C中相同,但应理解同一区块中的诸个不同寄存器可能具有或可能不具有相同的宽度。在替代实施例中,扩展寄存器集合175可包括更多或更少的寄存器和/或更多或更少数量的区块。
在一个实施例中,SXCHG指令具有多个变型。SXCHG.u是导致向下一hiber的无条件切换的指令。SXCHG.c是导致基于微架构的运行时决定而切换至下一hiber的指令。在一个实施例中,作出决定的微架构可以是前端电路(例如分支预测单元),该前端电路跟踪该指令指针以确定频繁未命中的加载。基于诸个硬件参数,微架构可确定是否满足执行切换的条件、是否要执行切换、执行切换的执行点。例如,该微架构可决定在预取高速缓存未命中或其它长等待时间事件时进行切换。SXCHG.Start和SXCHG.end是一对指令,该对指令标记指令块的边界,在该指令块中,每个指令可以是进行SXCHG上下文切换的候选。这具有与在该指令块中的每个指令之前设置SXCHG.c是相同的效果。SXCHG.Start和SXCHG.end分别标记该指令块的开始和结束。通过使用这样的标记,该微架构可在这些指令之中自由地选择以执行不同的诸个hiber。
在一个实施例中,SXCHG指令及其变型具有被称为SXCHGL的“轻量”版本。响应于SXCHGL指令,该处理器不保存和恢复存储器中的hiber上下文。替代地,处理器在管芯上的未利用的寄存器(诸如向量寄存器和/或浮点寄存器)中保存并恢复hiber上下文。在一个实施例中,这些未利用的寄存器是向量寄存器(例如zmm0-31、zmm16-31或zmm寄存器的任何未利用的部分)。在一个实施例中,zmm寄存器的一部分仍可用于向量存储(例如xmm0-15),并且zmm寄存器的余下部分可用于存储hiber上下文。这些未利用的寄存器(或其部分)可被划分成多个分区(例如与SXCHG中的四个存储器区域相对应的四个分区)以用于存储多个hiber的上下文。附加地,与SXCHG相似,SXCHGL指令也具有多个变型:SXCHGL.u、SXCHGL.c、SXCHGL.start以及SXCHGL.end;它们的使用与它们的SXCHG对应指令相类似。
在一个实施例中,响应于SXCHG指令而保存的上下文包括zmm寄存器状态;而响应于SXCHGL指令而保存的上下文包括xmm寄存器状态(而不是zmm寄存器状态)。因此,对于SXCHGL指令,zmm0-15可被用于存储四个hiber的xmm状态,而zmm16-31可被用于存储相同的四个hiber的其它寄存器(例如GP寄存器、标志寄存器、指令指针等等)的状态。图3示出被划分成四个分区以用于存储四个hiber的上下文的向量寄存器310(zmm16-31)的部分的实施例;每个分区对应于扩展寄存器集合175的一区块。CB寄存器220提供指针,指针指向扩展寄存器集合175的当前活动的区块以及向量寄存器310的该部分的对应分区。
通过从zmm寄存器直接恢复寄存器/向zmm寄存器直接保存寄存器来执行SXCHGL指令会是缓慢的。为了实现高效的实现方式,代替从zmm寄存器恢复寄存器/向zmm寄存器保存寄存器,可按照与SXCHG相似的方式使用包括多个区块的扩展寄存器集合(例如图1A和1B的扩展寄存器集合175)作为“写回高速缓存”。与SXCHG相似,SXCHGL可使用CB寄存器来指向当前活动的区块,并且可使用包括掩码位的掩码寄存器来指示是否不再使用相应的区块(即停用)。如果所有hiber被掩码(例如其具有的对应的掩码位为零),则SXCHGL变为无op操作。
因此,处理器可高效地执行来自多个hiber的代码。如果前端正确地预测了SXCHGL,则处理器可在hiber之间非常快地切换,无需流水线清除。
在一个实施例中,可使用与图1A的监听电路180相似的监听机制来跟踪对其中存储有hiber上下文的zmm寄存器的访问。每当zmm寄存器中存储的hiber上下文变得与扩展寄存器集合175的相应内容不一致(即不同)时,标记该zmm寄存器。在一个实施例中,该监听机制可被实现为与zmm寄存器的每个全局状态相关联的状态位。该状态位指示最新更新的hiber上下文在何处。如果最新更新在zmm寄存器中(例如在XRESTORE操作之后),则第一SXCHGL指令的执行将触发写回事件,该写回事件导致执行微代码序列。该微代码序列将来自该zmm空间的最新更新复制到扩展寄存器集合175。如果最新更新在扩展寄存器集合175中并且处理器开始执行向量指令(例如在XSAVE操作之后),则该微代码将来自该扩展寄存器集合175的最新更新复制到该zmm空间。
在以下描述中,每当提到SXCHG或“状态交换指令”时,应理解该描述既适用于SXCHG又适用于SXCHGL。
图4A示出可使用上述的SXCHG指令或其变型之一的代码段410的示例。代码段410实现二进制搜索(称为“Bsearch”)。在该二进制搜索期间,预期在指令420处出现大量的高速缓存未命中(temp=A[mid])。图4B示出了利用两个代码段foo0和foo1来执行相同二进制搜索的示例,两个代码段foo0和foo1中的每一个表示hiber。每个代码段包含位于(temp=A[mid])指令(430或431)之后的SXCHG.u指令,预期在该(temp=A[mid])指令处将出现大量的高速缓存未命中。因此,在处理器执行foo0中的该指令430之后,处理器立即在预期的高速缓存未命中事件期间执行向foo1的无条件切换。如果指令430的确发生了高速缓存未命中,则上下文切换允许处理器参与foo1中的其它有用的工作。类似地,如果指令431的确发生了高速缓存未命中,则上下文切换允许处理器参与foo0中的其它有用的工作。如果未出现高速缓存未命中,则上下文切换的损失是最小的。这是因为foo0和foo1的上下文均被存储在扩展寄存器集合中,并能迅速地被保存和恢复。
在一个实施例中,可由编程器添加SXCHG指令(例如图4B中的SXCHG.u指令)。在替代实施例中,可由编译器添加SXCHG指令。该编译器可以是静态编译器或实时编译器。该编译器可位于与执行该SXCHG指令的处理器相同的硬件平台上,或在不同的硬件平台之上。应注意,SXCHG的放置和SXCHG的执行不具有操作系统介入。
图5是根据一个实施例的用于交换两个hiber上下文的方法500的流程框图。方法500开始于处理器(例如图1A的指令处理装置115)利用储存于扩展寄存器集合的第一区块中的第一上下文来执行第一用户级线程(例如hyber)(框510)。在该第一线程的执行期间,处理器接收用于交换第一线程和第二线程的上下文的指令(框520),其中第二线程是另一用户级线程(例如hyber)并具有保存于该扩展寄存器集合的第二区块中的第二上下文。响应于该指令,处理器将当前指向作为当前活动区块的第一区块的寄存器指针改为指向第二区块(框530)。该处理器然后利用储存于第二区块中的第二上下文来执行第二线程(框540)。
在各实施例中,图5的方法可由通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或另一种类型的数字逻辑设备或指令处理装置来执行。在一些实施例中,图5的方法可由图7-13中的指令处理装置来执行。而且,图1A的指令处理装置115以及图7-13中所示的处理器、装置或系统可执行与图5的方法的实施例相同、类似或不同的操作和方法的实施例。
在一些实施例中,图1的指令处理装置115可结合指令转换器操作,该指令转换器将来自源指令集的指令转换到目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图6是对比根据本发明的实施例的软件指令转换器的使用的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图6示出可以使用x86编译器604来编译利用高级语言602的程序,以生成可以由具有至少一个x86指令集核的处理器616原生执行的x86二进制代码606。具有至少一个x86指令集核的处理器616表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器604表示用于生成x86二进制代码606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器616上执行。类似地,图6示出可以使用替代的指令集编译器608来编译利用高级语言602的程序,以生成可以由不具有至少一个x86指令集核的处理器614(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码610。指令转换器612被用来将x86二进制代码606转换成可以由不具有x86指令集核的处理器614原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器612通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码606的软件、固件、硬件或其组合。
示例性核架构
有序和无序核框图
图7A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图7B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图7A和7B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入718、异常处理级722和提交级724。
图7B示出了包括耦合到执行引擎单元750的前端单元730的处理器核790,且执行引擎单元和前端单元两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核790可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器耦合到指令取出单元738,指令取出单元耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元740可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括(例如,在解码单元740中或否则在前端单元730内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元耦合至引退单元754和一个或多个调度器单元756的集合。调度器单元756表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元756耦合到物理寄存器组单元758。每个物理寄存器组单元758表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元758与引退单元754重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元754和物理寄存器组单元758耦合到执行群集760。执行群集760包括一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元756、物理寄存器组单元758、执行群集760被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元764)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元764的集合耦合到存储器单元770,该存储器单元包括耦合到数据高速缓存单元774的数据TLB单元772,其中数据高速缓存单元耦合到二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的第二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线700:1)指令取出738执行取出和长度解码级702和704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度级712;5)物理寄存器组单元758和存储器单元770执行寄存器读取/存储器读取级714;执行群集760执行执行级716;6)存储器单元770和物理寄存器组单元758执行写回/存储器写入718;7)各单元可牵涉到异常处理级722;以及8)引退单元754和物理寄存器组单元758执行提交级724。
核790可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核790包括用于支持紧缩数据指令集扩展(例如SSE、AVX1、AVX2等等)的逻辑,由此允许许多多媒体应用所使用的操作利用紧缩数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元734/774以及共享L2高速缓存单元776,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图8A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图8A是根据本发明的各实施例的单个处理器核以及它与管芯上环形网络802的连接及其二级L2高速缓存的本地子集804的框图。在一个实施例中,指令解码器800支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存806允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元808和向量单元810使用分开的寄存器集合(分别为标量寄存器812和向量寄存器814),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存806读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集804是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存的本地子集804的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存的本地子集804中,并且可以与其他处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存的本地子集804中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环数据路径在每个方向上是1012位宽。图8B是根据本发明的各实施例的图8A中的处理器核的一部分的展开图。图8B包括L1高速缓存的L1数据高速缓存806A部分,以及关于向量单元810和向量寄存器814的更多细节。具体地说,向量单元810是16宽向量处理单元(VPU)(见16宽ALU828),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元820支持对寄存器输入的混合、通过数值转换单元822A-B支持数值转换、并通过复制单元824支持对存储器输入的复制。写掩码寄存器826允许断言所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图9是根据本发明的各实施例可能具有多于一个核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器900的框图。图9中的实线框示出具有单个核902A、系统代理910、一个或多个总线控制器单元916的集合的处理器900,而虚线框的可选附加示出具有多个核902A-N、系统代理单元910中的一个或多个集成存储器控制器单元914的集合以及专用逻辑908的替代处理器900。
因此,处理器900的不同实现可包括:1)CPU,其中专用逻辑908是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核902A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核902A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核902A-N是多个通用有序核。因此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器900可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元906的集合、以及耦合至集成存储器控制器单元914的集合的外部存储器(未示出)。该共享高速缓存单元906的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元912将集成图形逻辑908、共享高速缓存单元906的集合以及系统代理单元910/集成存储器控制器单元914互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元906和核902-A-N之间的一致性(coherency)。
在一些实施例中,核902A-N中的一个或多个核能够多线程化。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核902A-N和集成图形逻辑908的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N在架构指令集方面可以是同构的或异构的;即,这些核902A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在参考图10,所示出的是根据本发明一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和协处理器1045耦合到该存储器和图形控制器;IOH 1050将输入/输出(I/O)设备1060耦合到GMCH1090。或者,存储器和图形控制器中的一个或两者被集成在处理器内(如本文中所描述的),存储器1040和协处理器1045直接耦合到处理器1010以及控制器中枢1020,该控制器中枢与IOH 1050处于单个芯片中。
附加处理器1015的任选性质用虚线表示在图10中。每一处理器1010、1015可包括本文中描述的处理核中的一个或多个,并且可以是处理器900的某一版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1095与处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1020可以包括集成图形加速器。
在物理资源1010、1015之间会存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1010将这些协处理器指令识别为应当由附连的协处理器1045执行的类型。因此,处理器1010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1045。协处理器1045接受并执行所接收的协处理器指令。
现在参考图11,所示为根据本发明的一实施例的更具体的第一示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个都可以是处理器900的某一版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
处理器1170和1180被示为分别包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括点对点接口1186和1188。处理器1170、1180可以使用点对点(P-P)接口电路1178、1188经由P-P接口1150来交换信息。如图11所示,IMC 1172和1182将各处理器耦合至相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连至相应的处理器的主存储器的部分。
处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可以可选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1190可经由接口1196耦合至第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图11所示,各种I/O设备1114可以连同总线桥1118耦合到第一总线1116,该总线桥将第一总线1116耦合至第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1115耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1120,在一个实施例中这些设备包括例如键盘/鼠标1122、通信设备1127以及诸如可包括指令/代码和数据1130的盘驱动器或其它大容量存储设备的存储单元1128。此外,音频I/O1124可以被耦合至第二总线1120。注意,其它架构是可能的。例如,代替图11的点对点架构,系统可以实现多分支总线或其它这类架构。
现在参考图12,所示为根据本发明的实施例的更具体的第二示例性系统1200的框图。图11和图12中的相同部件用相同附图标记表示,并从图12中省去了图11中的某些方面,以避免使图12的其它方面变得模糊。
图12示出处理器1170、1180可分别包括集成存储器和I/O控制逻辑(”CL”)1172和1182。因此,CL 1172、1182包括集成存储器控制器单元并包括I/O控制逻辑。图12不仅示出存储器1132、1134耦合至CL 1172、1182,而且还示出I/O设备1214也耦合至控制逻辑1172、1182。传统I/O设备1215被耦合至芯片组1190。
现在参照图13,所示出的是根据本发明一个实施例的SoC 1300的框图。在图9中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图13中,互连单元1302被耦合至:应用处理器1310,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个协处理器1320,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及用于耦合至一个或多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图11中示出的代码1130)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
虽然已经描述并在附图中示出了特定示例实施例,但可以理解,这些实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其他修改方式。在诸如本申请这样的技术领域中,因为发展很快且未来的进步难以预见,所以本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附权利要求书的范围。

Claims (32)

1.一种用于执行指令的装置,包括:
扩展寄存器集合,被分区成多个区块;
当前区块寄存器,用于提供指向所述多个区块中的会是当前活动的区块的指针;以及
解码器,用于接收用于交换包括第一线程和第二线程的两个用户级线程的多个上下文的指令,其中所述第一线程用来具有用来保存在所述多个区块中的第一区块中的第一上下文,而所述第二线程用来具有用来保存在所述多个区块中的第二区块中的第二上下文;以及
执行单元,耦合至所述解码器、所述扩展寄存器集合和所述当前区块寄存器,所述执行单元用于:
响应于所述指令,将所述指针从指向所述第一区块改为指向所述第二区块,以及
其中所述装置用于利用用来存储在所述第二区块中的所述第二上下文来执行所述第二线程。
2.如权利要求1所述的装置,其特征在于,所述多个上下文的副本被用来存储在与所述扩展寄存器集合的所述多个区块相对应的多个存储器区域中。
3.如权利要求2所述的装置,其特征在于,还包括监听电路,所述监听电路用于跟踪对所述存储器区域的访问,并在检测到所述访问时触发用于在所述存储器区域的一区域与所述扩展寄存器集合的相应区块之间同步所述上下文的事件。
4.如权利要求1所述的装置,其特征在于,还包括多个向量寄存器,所述多个向量寄存器被划分成多个分区,其中所述上下文的副本用来被存储在与所述扩展寄存器集合的所述多个区块相对应的所述多个分区中。
5.如权利要求4所述的装置,其特征在于,所述向量寄存器中的每一个具有与其相关联的一个或多个状态位,所述一个或多个状态位用于指示给定上下文的最新副本是被存储在所述向量寄存器中还是被存储在所述扩展寄存器集合中。
6.如权利要求1所述的装置,其特征在于,所述解码器用于将给定用户级线程所引用的寄存器映射到所述扩展寄存器集合的相应区块中。
7.如权利要求1所述的装置,其特征在于,所述执行单元用于响应于所述指令无条件地切换至所述第二上下文。
8.如权利要求1所述的装置,其特征在于,还包括前端电路,所述前端电路耦合至所述执行单元,并用于确定是否满足切换至所述第二上下文的条件。
9.如权利要求1所述的装置,其特征在于,所述指令是一对指令中的一个,所述一对指令标记包含多个指令的指令块的边界,并且其中所述指令块中的每个指令是进行上下文切换的候选。
10.如权利要求1所述的装置,其特征在于,还包括掩码寄存器,所述掩码寄存器耦合至所述执行单元,所述掩码寄存器包括多个掩码位,其中每个掩码位用来与所述多个区块中的一个区块相关联,并用来指示所述多个区块中的所述一个区块是否已被停用不进行上下文切换。
11.一种由处理器执行的方法,包括:
通过所述处理器利用存储在扩展寄存器集合的多个区块中的第一区块中的第一上下文来执行第一线程,其中所述第一线程是用户级线程;
通过所述处理器接收用于交换所述第一线程和第二线程的上下文的指令,其中所述第二线程是具有保存在所述扩展寄存器集合的所述多个区块中的第二区块中的第二上下文的另一用户级线程;
响应于所述指令,将指向作为当前活动区块的所述第一区块的寄存器指针改为指向所述第二区块;以及
通过所述处理器利用存储在所述第二区块中的所述第二上下文来执行所述第二线程。
12.如权利要求11所述的方法,其特征在于,所述多个上下文的副本被存储在与所述扩展寄存器集合的所述多个区块相对应的多个存储器区域中。
13.如权利要求12所述的方法,其特征在于,进一步包括:
跟踪对所述存储器区域的访问;以及
当检测到所述访问时,触发用于在所述存储器区域的一区域与所述扩展寄存器集合的相应区块之间同步所述上下文的事件。
14.如权利要求11所述的方法,其特征在于,所述多个上下文的副本被存储在与所述扩展寄存器集合的所述多个区块相对应的向量寄存器的多个分区中。
15.如权利要求14所述的方法,其特征在于,所述向量寄存器中的每一个具有与其相关联的一个或多个状态位,所述一个或多个状态位用于指示给定上下文的最新副本是被存储在所述向量寄存器中还是被存储在所述扩展寄存器集合中。
16.如权利要求11所述的方法,其特征在于,执行所述指令导致无条件地切换至所述第二上下文。
17.如权利要求11所述的方法,其特征在于,执行所述指令导致确定是否满足切换至所述第二上下文的条件。
18.如权利要求11所述的方法,其特征在于,所述指令是一对指令中的一个,所述一对指令标记包含多个指令的指令块的边界,并且其中所述指令块中的每个指令是进行上下文切换的候选。
19.如权利要求11所述的方法,其特征在于,还包括执行所述指令且无需操作系统的介入。
20.一种用于执行指令的系统,包括:
存储器;以及
处理器,耦合至所述存储器,所述处理器包括:
扩展寄存器集合,被分区成多个区块,
当前区块寄存器,用于提供指向所述多个区块中的会是当前活动的区块的指针,以及
解码器,用于接收用于交换包括第一线程和第二线程的两个用户级线程的上下文的指令,其中所述第一线程用来具有用来保存在所述多个区块中的第一区块中的第一上下文,所述第二线程用来具有用来保存在所述多个区块中的第二区块中的第二上下文;以及
执行单元,耦合至所述解码器、所述扩展寄存器集合和所述当前区块寄存器,所述执行单元用于:响应于所述指令,将所述指针从指向所述第一区块改为指向所述第二区块;以及其中所述处理器用于利用用来存储在所述第二区块中的所述第二上下文来执行所述第二线程。
21.如权利要求20所述的系统,其特征在于,所述多个上下文的副本被用来存储在与所述扩展寄存器集合的所述多个区块相对应的所述存储器的多个存储器区域中。
22.如权利要求20所述的系统,其特征在于,还包括多个向量寄存器,所述多个向量寄存器被划分成多个分区,其中所述上下文的副本被用来存储在与所述扩展寄存器集合的所述多个区块相对应的所述多个分区中。
23.一种机器可读介质,包括存储在所述机器可读介质上的多条指令,所述多条指令当被执行时使计算设备执行如权利要求11-19中任一项所述的方法。
24.一种用于执行指令的设备,包括:
用于通过处理器利用存储在扩展寄存器集合的多个区块中的第一区块中的第一上下文来执行第一线程的装置,其中所述第一线程是用户级线程;
用于通过所述处理器接收用于交换所述第一线程和第二线程的上下文的指令的装置,其中所述第二线程是具有保存在所述扩展寄存器集合的所述多个区块中的第二区块中的第二上下文的另一用户级线程;
用于响应于所述指令而将指向作为当前活动区块的所述第一区块的寄存器指针改为指向所述第二区块的装置;以及
用于通过所述处理器利用存储在所述第二区块中的所述第二上下文来执行所述第二线程的装置。
25.如权利要求24所述的设备,其特征在于,所述多个上下文的副本被存储在与所述扩展寄存器集合的所述多个区块相对应的多个存储器区域中。
26.如权利要求25所述的设备,其特征在于,进一步包括:
用于跟踪对所述存储器区域的访问的装置;以及
用于当检测到所述访问时触发用于在所述存储器区域的一区域与所述扩展寄存器集合的相应区块之间同步所述上下文的事件的装置。
27.如权利要求24所述的设备,其特征在于,所述多个上下文的副本被存储在与所述扩展寄存器集合的所述多个区块相对应的向量寄存器的多个分区中。
28.如权利要求27所述的设备,其特征在于,所述向量寄存器中的每一个具有与其相关联的一个或多个状态位,所述一个或多个状态位用于指示给定上下文的最新副本是被存储在所述向量寄存器中还是被存储在所述扩展寄存器集合中。
29.如权利要求27所述的设备,其特征在于,执行所述指令导致无条件地切换至所述第二上下文。
30.如权利要求24所述的设备,其特征在于,执行所述指令导致确定是否满足切换至所述第二上下文的条件。
31.如权利要求24所述的设备,其特征在于,所述指令是一对指令中的一个,所述一对指令标记包含多个指令的指令块的边界,并且其中所述指令块中的每个指令是进行上下文切换的候选。
32.如权利要求24所述的设备,其特征在于,还包括:用于执行所述指令且无需操作系统的介入的装置。
CN201380045434.7A 2012-09-28 2013-06-24 实现用户级线程的即时上下文切换的指令和微架构 Expired - Fee Related CN104603795B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/630,124 US20140095847A1 (en) 2012-09-28 2012-09-28 Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US13/630,124 2012-09-28
PCT/US2013/047401 WO2014051771A1 (en) 2012-09-28 2013-06-24 A new instruction and highly efficient micro-architecture to enable instant context switch for user-level threading

Publications (2)

Publication Number Publication Date
CN104603795A CN104603795A (zh) 2015-05-06
CN104603795B true CN104603795B (zh) 2018-11-06

Family

ID=50386392

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380045434.7A Expired - Fee Related CN104603795B (zh) 2012-09-28 2013-06-24 实现用户级线程的即时上下文切换的指令和微架构

Country Status (7)

Country Link
US (1) US20140095847A1 (zh)
JP (1) JP6143872B2 (zh)
KR (1) KR101771825B1 (zh)
CN (1) CN104603795B (zh)
DE (1) DE112013003731T5 (zh)
GB (1) GB2519254A (zh)
WO (1) WO2014051771A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336180B2 (en) * 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9292470B2 (en) * 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
CN104461758B (zh) * 2014-11-10 2017-08-25 中国航天科技集团公司第九研究院第七七一研究所 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9952867B2 (en) * 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
GB2540937B (en) * 2015-07-30 2019-04-03 Advanced Risc Mach Ltd Graphics processing systems
US9946566B2 (en) * 2015-09-28 2018-04-17 Intel Corporation Method and apparatus for light-weight virtualization contexts
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10761983B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10635602B2 (en) * 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10552070B2 (en) * 2017-11-14 2020-02-04 International Business Machines Corporation Separation of memory-based configuration state registers based on groups
US10698686B2 (en) * 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US11811401B2 (en) 2019-08-14 2023-11-07 Google Llc Dual-mode operation of application specific integrated circuits
CN111857831B (zh) * 2020-06-11 2021-07-20 成都海光微电子技术有限公司 一种存储体冲突优化方法、并行处理器及电子设备
CN112463327B (zh) * 2020-11-25 2023-01-31 海光信息技术股份有限公司 逻辑线程快速切换的方法、装置、cpu芯片及服务器
US11545209B2 (en) * 2021-05-28 2023-01-03 Micron Technology, Inc. Power savings mode toggling to prevent bias temperature instability

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
CN1938686A (zh) * 2004-03-31 2007-03-28 英特尔公司 提供用户级多线程操作的方法和系统
CN101251792A (zh) * 2006-12-19 2008-08-27 英特尔公司 用于受应用管理的线程单元的结构化异常处理
TW201118568A (en) * 2009-08-28 2011-06-01 Qualcomm Inc Memory controller page management devices, systems, and methods

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3644042B2 (ja) * 1993-11-15 2005-04-27 ソニー株式会社 マルチタスク処理装置
JPH09212371A (ja) * 1996-02-07 1997-08-15 Nec Corp レジスタ退避及び復元システム
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
US20020103847A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Efficient mechanism for inter-thread communication within a multi-threaded computer system
US7853778B2 (en) * 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
JP2006092042A (ja) * 2004-09-21 2006-04-06 Sanyo Electric Co Ltd 情報処理装置及びコンテキスト切り替え方法
US7827551B2 (en) * 2005-09-21 2010-11-02 Intel Corporation Real-time threading service for partitioned multiprocessor systems
US7461275B2 (en) * 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7933759B2 (en) * 2008-03-28 2011-04-26 Microsoft Corporation Predicate checking for distributed systems
US20100312991A1 (en) * 2008-05-08 2010-12-09 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
US8490113B2 (en) * 2011-06-24 2013-07-16 International Business Machines Corporation Messaging in a parallel computer using remote direct memory access (‘RDMA’)

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
CN1938686A (zh) * 2004-03-31 2007-03-28 英特尔公司 提供用户级多线程操作的方法和系统
CN101251792A (zh) * 2006-12-19 2008-08-27 英特尔公司 用于受应用管理的线程单元的结构化异常处理
TW201118568A (en) * 2009-08-28 2011-06-01 Qualcomm Inc Memory controller page management devices, systems, and methods

Also Published As

Publication number Publication date
GB2519254A (en) 2015-04-15
KR20150030274A (ko) 2015-03-19
KR101771825B1 (ko) 2017-08-25
CN104603795A (zh) 2015-05-06
JP6143872B2 (ja) 2017-06-07
WO2014051771A1 (en) 2014-04-03
US20140095847A1 (en) 2014-04-03
JP2015534188A (ja) 2015-11-26
DE112013003731T5 (de) 2015-05-21
GB201500863D0 (en) 2015-03-04

Similar Documents

Publication Publication Date Title
CN104603795B (zh) 实现用户级线程的即时上下文切换的指令和微架构
CN104603745B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
CN104603746B (zh) 由读和写掩码控制的向量移动指令
CN104204990B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN104603766B (zh) 经加速的通道间的向量归约指令
CN104205088B (zh) 用于实现页级自动二进制转换的方法、装置、系统、和设备
CN104838355B (zh) 用于在多线程计算机系统中提供高性能和公平的机制
CN105164650A (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
CN104903867B (zh) 用于将寄存器的内容广播到另一个寄存器的数据元素位置的系统、装置和方法
CN104919432B (zh) 用于将多个位向左移并将多个1拉入较低有效位的指令
CN108351830A (zh) 用于存储器损坏检测的硬件装置和方法
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
CN107918546A (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
CN104246694A (zh) 聚集页错误信令和处理
CN110321160A (zh) 用于推测性有条件移动操作的装置和方法
CN108369571A (zh) 用于偶数和奇数向量get操作的指令和逻辑
CN109313607A (zh) 用于利用所指示的检查位值来检查位的位检查处理器、方法、系统和指令
CN105723329B (zh) 用于识别多指令串无序处理器中引退的指令的方法和设备
US20140189322A1 (en) Systems, Apparatuses, and Methods for Masking Usage Counting
CN108475253A (zh) 用于执行共轭置换指令的处理设备
US20160378497A1 (en) Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181106