线程暂停处理器、方法、系统及指令的制作方法
【技术领域】
[0001] 本文所述的实施例一般设及处理器。具体而言,本文所述的实施例一般设及暂停 处理器中的线程。
【背景技术】
[0002] 软件多线程操作是已被用于帮助改善处理器性能的技术。在软件多线程操作中, 可将代码(例如,应用)划分为多个线程。每一个线程可表示能够与其他指令流或指令序 列分开执行和/或并行地执行的指令流或指令序列。作为一个简单示例,一个线程可处理 视频流的图像,同时另一线程可处理视频流的音频。
[0003] 在用于实现多线程操作的处理器硬件方面,不同的方法是可用的。一种方法被称 为交织的多线程操作或时域多线程操作。此类方法的一个示例是时分(time-slice)多线 程操作或时分多路(time-multiplex,TMU讶多线程操作,在其中,单个物理处理器(例如, 核)在交替的循环上或在固定的时间段之后,在多个线程之间切换。此类方法的另一示例 是随事件切换(switch-on-event)多线程操作(SoEMT),在其中,单个物理处理器在发生触 发事件(例如,长等待时间的高速缓存未命中、页错误、其他长等待时间事件等)时,在多个 线程之间切换。在交织的多线程操作或时域多线程操作中,某时刻仅指令的一个线程可在 给定的流水线级中执行。
[0004] 另一多线程操作方法被称为同时(simultaneous)多线程操作(SMT)。在SMT中, 在给定时刻,来自多于一个线程的指令可在单个物理处理器(例如,核)的给定流水线级中 同时执行。例如,可使单个核表现为对于软件的多个逻辑处理器,每一个逻辑处理器执行不 同的线程。该核的一些资源可专用于给定的线程或逻辑处理器。例如,通常每一个线程或 逻辑处理器可维持一整套架构状态。该核的其他资源可由两个或更多线程或逻辑处理器共 享。例如,取决于特定实现,可由在单个物理核中执行的两个或更多线程共享多个高速缓 存、执行单元、分支预测器、解码器、其他逻辑或它们的组合。
[0005] 多线程操作中的一个挑战是对自旋-等待(spin-wait)环路的高效处理。多个线 程经常需要与其他线程共享资源和/或与其他资源同步。自旋-等待环路是其中一个线程 等待另一线程W例如同步或获取对共享资源的访问权的多线程化应用中所使用的技术。该 自旋-等待环路可表示其中线程正在紧密轮循环路中访问同步基元(例如,共享锁、信号量 或互斥体(mutex))的例程或代码的部分。例如,逻辑处理器可执行用于重复地比较该同步 基元直到其具有所期望的值的加载-比较-分支环路。该逻辑处理器一般能够非常快速 地执行该自旋-等待环路,运可能消耗显著量的功率和执行资源。然而,快速地执行该自 旋-等待环路一般不改善性能。
[0006] 在英特尔⑩64和IA-32架构软件开发者手册(Intel⑥64andIA-32 A;rchitec1:uresSoftwareDeveloper'sManual,订购号:325462-049US,2014年2月)中 描述了暂停(PAUS巧指令或自旋环路提示指令。报告了该暂停指令用于改善自旋-等待环 路的性能。也报告了该暂停指令的附加功能在于,在执行自旋-等待环路时,减少由处理器 消耗的功率量。
[0007] 美国专利6, 671,795描述了用于暂停处理器中的执行的方法和装置。部分地公开 了暂停指令可用于暂停一个线程的执行W便优先选择另一线程或节省功率。
【附图说明】
[0008] 通过参考W下描述W及用于说明多个实施例的附图,可最佳地理解本发明。在附 图中:
[0009]图1是执行线程暂停指令的实施例的方法的实施例的流程框图。
[0010] 图2是用于执行线程暂停指令的实施例的处理器的实施例的框图。
[0011] 图3A示出线程暂停指令的总线程暂停时间的实施例。
[0012] 图3B示出第一线程的第一线程暂停指令的第一总线程暂停时间与第二线程的第 二线程暂停指令的第二总线程暂停时间重叠的实施例。
[0013] 图4是具有控制寄存器的处理器的实施例的框图,该控制寄存器具有用于指定或 W其他方式指示预定的排空时间(emptytime)的字段。
[0014] 图5是具有用于指定或W其他方式指示预定的排空时间的操作数的线程暂停指 令的实施例的框图。
[0015] 图6是用于执行线程暂停指令的示例实施例的处理器的特定示例实施例的框图。
[0016] 图7是具有后端部的处理器的实施例的框图,该后端部用于:当该后端部是空闲 的时候,响应于线程暂停指令,用信号通知前端部和/或存储器执行单元。
[0017]图8是执行线程暂停指令的方法的实施例的流程框图,该方法包括确定使用更简 单的实现还是更详尽的实现。
[0018]图9是根据本发明的一个实施例的合适的寄存器架构的实施例的框图。
[0019] 图10A是示出有序流水线的实施例W及寄存器重命名的无序发布/执行流水线的 实施例的框图。
[0020] 图10B是处理器核的实施例的框图,该处理器核包括禪合到执行引擎单元的前端 单元,并且前端单元和执行引擎单元两者都禪合到存储器单元。
[0021] 图11A是单个处理器核W及它与管忍上互连网络的连接及其第二级化2)高速缓 存的本地子集的实施例的框图。
[0022] 图11B是图11A的处理器核的部分展开图的实施例的框图。
[0023] 图12是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器 件的处理器的实施例的框图。
[0024] 图13是计算机架构的第一实施例的框图。
[00巧]图14是计算机架构的第二实施例的框图。
[00%] 图15是计算机架构的第Ξ实施例的框图。
[0027] 图16是忍片上系统架构的实施例的框图。
[0028]图17是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令 转换成目标指令集中的二进制指令的框图。
【具体实施方式】
[0029] 本文中公开的是线程暂停指令,用于执行该指令的处理器,在执行该指令时由处 理器执行的方法,W及包含一个或多个用于执行该指令的一个或多个处理器的系统。在 W下描述中,阐述多个特定细节(例如,特定指令操作、处理器配置、微架构细节、操作序列 等)。然而,在没有运些特定细节的情况下,也可实施多个实施例。在其他实例中,未详细示 出公知的电路、结构和技术,W避免使对本说明书的理解模糊。
[0030] 图1是执行线程暂停指令的实施例的方法100的实施例的流程框图。在各种实施 例中,可由处理器、指令处理装置或其他数字逻辑设备来执行该方法。
[0031] 该方法包括:在框101处,接收来自第一线程的线程暂停指令。在各个方面,可W 在处理器处、指令处理装置处或它们的部分(例如,指令取出单元、解码单元、总线接口单 元)处接收该指令。在各个方面,可从管忍外的源(例如,存储器、总线或其他互连)或者 从管忍上的源(例如,指令取出单元、指令高速缓存)接收该指令。 阳0巧在框102处,响应于该线程暂停指令(例如,响应于该指令的操作码),暂停对用于 执行的第一线程的后续多条指令的处理。运些后续的指令是按程序顺序在该线程暂停指令 之后发生的那些指令。
[0033] 在框103处,响应于该线程暂停指令,保持处理器的后端部的至少一部分(例如, 至少执行单元和指令队列单元)排空(emptyof)第一线程中除线程暂停指令外的多条指 令长达预定的时间量和/或固定持续时间。
[0034] 已经W相对基本的形式示出和描述了该方法,但可W可选地向该方法添加多个操 作和/或从该方法中去除多个操作。作为示例,可取出、解码、无序地调度指令,可执行多个 微操作W实现该指令,等等。在一些实施例中,用于实现该指令的多个微架构操作可W可选 地包括针对图2、6、7和/或8中的任何一个所示和所述的那些操作中的任何操作。
[0035] 图2是可用于执行线程暂停指令220的实施例的处理器210的实施例的框图。在 一些实施例中,图2的处理器可执行图1的操作和/或方法。本文中针对图2的处理器所 描述的组件、特征和特定的可选细节也可选地适用于可由此类处理器和/或在此类处理器 内执行的图1的多个操作和/或方法。或者,可由类似或不同的处理器或其他装置和/或 在类似或不同的处理器或其他装置内执行图1的多个操作和/或方法。此外,图2的处理 器可执行与图1的那些操作和/或方法相同、类似或不同的多个操作和/或方法。
[0036] 在一些实施例中,处理器210可W是通用处理器(例如,台式计算机、膝上型计算 机或其他计算机中所使用类型的通用微处理器或中央处理单元(CPU))。或者,该处理器可 W是专用处理器。合适的专用处理器的示例包括但不仅限于,网络处理器、通信处理器、加 密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器值SP)W及控制器(例 如,微控制器)。该处理器可W是各种复杂指令集计算(CISC)处理器、精简指令集计算 巧ISC)处理器、超长指令字(VLIW)处理器中的任何处理器,可W是上述各项的混合,可W 是其他类型的处理器,或可具有此类不同处理器的组合(例如,在不同的核中)。
[0037] 在操作期间,处理器210可接收并处理第一线程216和第二线程224的指令。第 一线程包括:线程暂停指令220 ;先前的指令218,它们按程序顺序在该线程暂停指令之前 发生;W及后续的指令222,它们按程序顺序在该线程暂停指令之后发生。可在本文中将该 线程暂停指令简称为暂停指令。第二线程也包括一组指令226。可将第一线程的多条指令 提供给处理器。
[0038] 该处理器包括前端部212和后端部228。该前端部包括解码单元或解码器214。该 解码单元可接收并解码第一和第二线程的指令,包括线程暂停指令220。该线程暂停指令可 表示处理器的指令集的宏指令、汇编语言指令、机器代码指令或其他指令或控制信号。解码 单元可W输出用于反映、表示线程暂停指令和/或从其导出的一个或多个微指令、微操作、 微代码进入点、经解码的指令或控制信号、或者其他相对较低层级的指令或控制信号。一个 或多个较低层级指令或控制信号可通过一个或多个较低层级(例如,电路级或硬件级)的 操作来实现该较高层级的线程暂停指令。可使用各种不同机制来实现该解码单元,包括但 不限于,本领域中已知的用于实现解码单元的微代码只读存储器(ROM)、查找表、硬件实现、 可编程逻辑阵列(PLA)和其他机制。
[0039] 在一些实施例中,可W可选地使用指令仿真器、转换器、变形器、解释器或其他指 令变换模块,而不是直接将该线程暂停指令提供给解码单元。各种类型的指令转换模块是 在本领域中已知的,并且可在软件、硬件、固件或它们的组合中实现。在一些实施例中,该指 令变换模块可位于处理器之外,例如,在单独的管忍上和/或在存储器中(例如,作为静态 的、动态的或运行时仿真模块)。作为示例,指令变换模块可接收可W是第一指令集中的线 程暂停指令,并且可将该线程暂停指令仿真、转换、变形、解释或W其它方式变换为可W是 第二不同指令集中的一个或多个对应指令或控制信号或导出的中间指令或控制信号。可将 该第二指令集中的运一个或多个中间指令或控制信号提供给解码单元,该解码单元可将它 们解码为可由处理器的原生硬件(例如,多个流水线组件)执行的一个或多个较低层级的 指令或控制信号。
[0040] 再次参考图2,处理器还包括与解码单元214和/或前端部212禪合的后端部228。 该后端部可接收表示该线程暂停指令和/或从其导出的一个或多个经解码或W其他方式 变换的指令或控制信号。在所示实施例中,该后端部包括:重命名/分配单元230,其与解 码单元的输出禪合;一个或多个执行单元234,其与重命名/分配单元的输出禪合;W及提 交单元242,其与执行单元的输出禪合。该后端部也包括一个或多个指令队列单元238,例 如,用于将所谓的指令池或指令窗保持在处理器的无序(0〇0)部中的单元。合适的指令队 列单元的示例包括但不限于重排序缓冲器、预留站等。
[0041] 所示实施例设及无序的〇0)处理器,但是本发明的范围并不如此受限。在0〇0处 理器中,执行单元可相对于运些指令的原始程序顺序无序的〇0)执行指令。例如,处理器可 按照取决于输入数据可用性和/或资源可用性的顺序来执行多条指令,而不是按程序顺序 来执行多条指令。可W在没有过度延迟的情况下执行能够执行的多条指令,而不是阻止其 执行W等待数据和/或资源。可将运些指令存储或缓冲在指令队列单元238中,直到它们 准备好由执行单元执行为止。在执行之后,该处理器可能需要对该化0的执行结果和/或 架构状态重排序,并且按原始的程序顺序而不是按实际执行运些指令所遵循的顺序来(例 如,向软件、用户等)呈现它们。为实现此,可将运些指令及其执行结果存储或缓冲在指令 队列单元238中,并且该处理器的逻辑可对运些执行结果和/或架构状态重排序。提交单 元可控制按原始的程序顺序对架构状态的更新。在一个方面,提交逻辑可等到每一条指令 按原始的程序顺序的的所有较旧的/先前的指令已被提交后才提交运每一条指令。
[0042] 在一些实施例中,该处理器的后端部可用于:响应于该线程暂停指令(例如,响应 于从该线程暂停指令解码出的一个或多个控制信号),暂停或延迟对用于执行的第一线程 的后续指令的处理。在不同的实施例中,运可w按不同的方式来实现。
[0043] 在一些实施例中,可在特定的流水线级处(例如,在处理器的后端部)停止或保留 从该线程暂停指令解码出的控制信号,并因此防止该控制信号进一步进展通过该流水线。 在处理器的有序部分中停止该控制信号也可阻止或防止从第一线程的所有(按程序顺序 在该线程暂停指令之后发生的)后续指令解码出的控制信号进展通过该流水线。运可W有 效地暂停对用于执行的第一线程的后续指令的处理。在其他实施例中,不同于停止控制信 号,可使用其他方式来暂停或延迟对用于执行的第一线程的后续指令的处理。例如,可迫使 控制信号进展通过流水线所需的资源表现为满的或不可用的。作为一个示例,可停止无序 指令调度,并且/或者可迫使预留站表现为不可用。另一些方式对本领域技术人员而言将 是显而易见的,并且具有本公开的益处。
[0044] 再次参考图2,在所示示例实施例中,在处理器的后端部中的重命名/分配单元 230处停止控制信号,232。一般将该重命名/分配单元包括在处理器后端部的开始处的有 序级中,并且可在功能上将它设置在解码单元214和执行单元234之间。该重命名/分配 单元可执行某些资源(例如,寄存器组条目、加载缓冲器、存储缓冲器等)的重命名和分配。 或者,可在其他流水线级处(例如,在处理器的后端部中)停止或保留该控制信号。值得 注意的是,在处理器的前端部212中停止控制信号也是可能的。例如,一般性地在解码单元 214处停止控制信号是可能的。最后,如果停止该控制信号足够长的时间,则后端部228应 当排出(化ain)来自被暂停的第一线程的所有先前的控制信号。然而,在处理器的前端部 中的此类停止的可能缺点在于,尤其在流水线是相对深的时候,后端部排出来自