CN105279016A - 线程暂停处理器、方法、系统及指令 - Google Patents
线程暂停处理器、方法、系统及指令 Download PDFInfo
- Publication number
- CN105279016A CN105279016A CN201510350735.1A CN201510350735A CN105279016A CN 105279016 A CN105279016 A CN 105279016A CN 201510350735 A CN201510350735 A CN 201510350735A CN 105279016 A CN105279016 A CN 105279016A
- Authority
- CN
- China
- Prior art keywords
- processor
- thread
- instruction
- pause instruction
- thread pause
- 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
- 238000000034 method Methods 0.000 title claims abstract description 131
- 230000004044 response Effects 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims description 35
- 238000003860 storage Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 10
- 230000007704 transition Effects 0.000 claims description 4
- 238000010295 mobile communication Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 35
- 210000004027 cell Anatomy 0.000 description 16
- 238000009826 distribution Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 10
- 230000001052 transient effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 210000004940 nucleus Anatomy 0.000 description 7
- 244000045947 parasite Species 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请公开了线程暂停处理器、方法、系统及指令。一个方面的处理器包括解码单元,用于对来自第一线程的线程暂停指令进行解码。该处理器的后端部与该解码单元耦合。该处理器的后端部用于:响应于该线程暂停指令,暂停对用于执行的第一线程的后续指令的处理。这些后续的指令按程序顺序在该线程暂停指令之后发生。该后端部还用于:响应于该线程暂停指令,保持处理器的后端部的至少多数排空该第一线程中除线程暂停指令之外的指令长达预定的时间段。上述多数可包括多个执行单元和指令队列单元。
Description
技术领域
本文所述的实施例一般涉及处理器。具体而言,本文所述的实施例一般涉及暂停处理器中的线程。
背景技术
软件多线程操作是已被用于帮助改善处理器性能的技术。在软件多线程操作中,可将代码(例如,应用)划分为多个线程。每一个线程可表示能够与其他指令流或指令序列分开执行和/或并行地执行的指令流或指令序列。作为一个简单示例,一个线程可处理视频流的图像,同时另一线程可处理视频流的音频。
在用于实现多线程操作的处理器硬件方面,不同的方法是可用的。一种方法被称为交织的多线程操作或时域多线程操作。此类方法的一个示例是时分(time-slice)多线程操作或时分多路(time-multiplex,TMUX)多线程操作,在其中,单个物理处理器(例如,核)在交替的循环上或在固定的时间段之后,在多个线程之间切换。此类方法的另一示例是随事件切换(switch-on-event)多线程操作(SoEMT),在其中,单个物理处理器在发生触发事件(例如,长等待时间的高速缓存未命中、页错误、其他长等待时间事件等)时,在多个线程之间切换。在交织的多线程操作或时域多线程操作中,某时刻仅指令的一个线程可在给定的流水线级中执行。
另一多线程操作方法被称为同时(simultaneous)多线程操作(SMT)。在SMT中,在给定时刻,来自多于一个线程的指令可在单个物理处理器(例如,核)的给定流水线级中同时执行。例如,可使单个核表现为对于软件的多个逻辑处理器,每一个逻辑处理器执行不同的线程。该核的一些资源可专用于给定的线程或逻辑处理器。例如,通常每一个线程或逻辑处理器可维持一整套架构状态。该核的其他资源可由两个或更多线程或逻辑处理器共享。例如,取决于特定实现,可由在单个物理核中执行的两个或更多线程共享多个高速缓存、执行单元、分支预测器、解码器、其他逻辑或它们的组合。
多线程操作中的一个挑战是对自旋-等待(spin-wait)环路的高效处理。多个线程经常需要与其他线程共享资源和/或与其他资源同步。自旋-等待环路是其中一个线程等待另一线程以例如同步或获取对共享资源的访问权的多线程化应用中所使用的技术。该自旋-等待环路可表示其中线程正在紧密轮循环路中访问同步基元(例如,共享锁、信号量或互斥体(mutex))的例程或代码的部分。例如,逻辑处理器可执行用于重复地比较该同步基元直到其具有所期望的值的加载-比较-分支环路。该逻辑处理器一般能够非常快速地执行该自旋-等待环路,这可能消耗显著量的功率和执行资源。然而,快速地执行该自旋-等待环路一般不改善性能。
在64和IA-32架构软件开发者手册(64andIA-32ArchitecturesSoftwareDeveloper'sManual,订购号:325462-049US,2014年2月)中描述了暂停(PAUSE)指令或自旋环路提示指令。报告了该暂停指令用于改善自旋-等待环路的性能。也报告了该暂停指令的附加功能在于,在执行自旋-等待环路时,减少由处理器消耗的功率量。
美国专利6,671,795描述了用于暂停处理器中的执行的方法和装置。部分地公开了暂停指令可用于暂停一个线程的执行以便优先选择另一线程或节省功率。
附图说明
通过参考以下描述以及用于说明多个实施例的附图,可最佳地理解本发明。在附图中:
图1是执行线程暂停指令的实施例的方法的实施例的流程框图。
图2是用于执行线程暂停指令的实施例的处理器的实施例的框图。
图3A示出线程暂停指令的总线程暂停时间的实施例。
图3B示出第一线程的第一线程暂停指令的第一总线程暂停时间与第二线程的第二线程暂停指令的第二总线程暂停时间重叠的实施例。
图4是具有控制寄存器的处理器的实施例的框图,该控制寄存器具有用于指定或以其他方式指示预定的排空时间(emptytime)的字段。
图5是具有用于指定或以其他方式指示预定的排空时间的操作数的线程暂停指令的实施例的框图。
图6是用于执行线程暂停指令的示例实施例的处理器的特定示例实施例的框图。
图7是具有后端部的处理器的实施例的框图,该后端部用于:当该后端部是空闲的时候,响应于线程暂停指令,用信号通知前端部和/或存储器执行单元。
图8是执行线程暂停指令的方法的实施例的流程框图,该方法包括确定使用更简单的实现还是更详尽的实现。
图9是根据本发明的一个实施例的合适的寄存器架构的实施例的框图。
图10A是示出有序流水线的实施例以及寄存器重命名的无序发布/执行流水线的实施例的框图。
图10B是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端单元,并且前端单元和执行引擎单元两者都耦合到存储器单元。
图11A是单个处理器核以及它与管芯上互连网络的连接及其第二级(L2)高速缓存的本地子集的实施例的框图。
图11B是图11A的处理器核的部分展开图的实施例的框图。
图12是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器件的处理器的实施例的框图。
图13是计算机架构的第一实施例的框图。
图14是计算机架构的第二实施例的框图。
图15是计算机架构的第三实施例的框图。
图16是芯片上系统架构的实施例的框图。
图17是根据本发明的实施例的使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文中公开的是线程暂停指令,用于执行该指令的处理器,在执行该指令时由处理器执行的方法,以及包含一个或多个用于执行该指令的一个或多个处理器的系统。在以下描述中,阐述多个特定细节(例如,特定指令操作、处理器配置、微架构细节、操作序列等)。然而,在没有这些特定细节的情况下,也可实施多个实施例。在其他实例中,未详细示出公知的电路、结构和技术,以避免使对本说明书的理解模糊。
图1是执行线程暂停指令的实施例的方法100的实施例的流程框图。在各种实施例中,可由处理器、指令处理装置或其他数字逻辑设备来执行该方法。
该方法包括:在框101处,接收来自第一线程的线程暂停指令。在各个方面,可以在处理器处、指令处理装置处或它们的部分(例如,指令取出单元、解码单元、总线接口单元)处接收该指令。在各个方面,可从管芯外的源(例如,存储器、总线或其他互连)或者从管芯上的源(例如,指令取出单元、指令高速缓存)接收该指令。
在框102处,响应于该线程暂停指令(例如,响应于该指令的操作码),暂停对用于执行的第一线程的后续多条指令的处理。这些后续的指令是按程序顺序在该线程暂停指令之后发生的那些指令。
在框103处,响应于该线程暂停指令,保持处理器的后端部的至少一部分(例如,至少执行单元和指令队列单元)排空(emptyof)第一线程中除线程暂停指令外的多条指令长达预定的时间量和/或固定持续时间。
已经以相对基本的形式示出和描述了该方法,但可以可选地向该方法添加多个操作和/或从该方法中去除多个操作。作为示例,可取出、解码、无序地调度指令,可执行多个微操作以实现该指令,等等。在一些实施例中,用于实现该指令的多个微架构操作可以可选地包括针对图2、6、7和/或8中的任何一个所示和所述的那些操作中的任何操作。
图2是可用于执行线程暂停指令220的实施例的处理器210的实施例的框图。在一些实施例中,图2的处理器可执行图1的操作和/或方法。本文中针对图2的处理器所描述的组件、特征和特定的可选细节也可选地适用于可由此类处理器和/或在此类处理器内执行的图1的多个操作和/或方法。或者,可由类似或不同的处理器或其他装置和/或在类似或不同的处理器或其他装置内执行图1的多个操作和/或方法。此外,图2的处理器可执行与图1的那些操作和/或方法相同、类似或不同的多个操作和/或方法。
在一些实施例中,处理器210可以是通用处理器(例如,台式计算机、膝上型计算机或其他计算机中所使用类型的通用微处理器或中央处理单元(CPU))。或者,该处理器可以是专用处理器。合适的专用处理器的示例包括但不仅限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器)。该处理器可以是各种复杂指令集计算(CISC)处理器、精简指令集计算(RISC)处理器、超长指令字(VLIW)处理器中的任何处理器,可以是上述各项的混合,可以是其他类型的处理器,或可具有此类不同处理器的组合(例如,在不同的核中)。
在操作期间,处理器210可接收并处理第一线程216和第二线程224的指令。第一线程包括:线程暂停指令220;先前的指令218,它们按程序顺序在该线程暂停指令之前发生;以及后续的指令222,它们按程序顺序在该线程暂停指令之后发生。可在本文中将该线程暂停指令简称为暂停指令。第二线程也包括一组指令226。可将第一线程的多条指令提供给处理器。
该处理器包括前端部212和后端部228。该前端部包括解码单元或解码器214。该解码单元可接收并解码第一和第二线程的指令,包括线程暂停指令220。该线程暂停指令可表示处理器的指令集的宏指令、汇编语言指令、机器代码指令或其他指令或控制信号。解码单元可以输出用于反映、表示线程暂停指令和/或从其导出的一个或多个微指令、微操作、微代码进入点、经解码的指令或控制信号、或者其他相对较低层级的指令或控制信号。一个或多个较低层级指令或控制信号可通过一个或多个较低层级(例如,电路级或硬件级)的操作来实现该较高层级的线程暂停指令。可使用各种不同机制来实现该解码单元,包括但不限于,本领域中已知的用于实现解码单元的微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)和其他机制。
在一些实施例中,可以可选地使用指令仿真器、转换器、变形器、解释器或其他指令变换模块,而不是直接将该线程暂停指令提供给解码单元。各种类型的指令转换模块是在本领域中已知的,并且可在软件、硬件、固件或它们的组合中实现。在一些实施例中,该指令变换模块可位于处理器之外,例如,在单独的管芯上和/或在存储器中(例如,作为静态的、动态的或运行时仿真模块)。作为示例,指令变换模块可接收可以是第一指令集中的线程暂停指令,并且可将该线程暂停指令仿真、转换、变形、解释或以其它方式变换为可以是第二不同指令集中的一个或多个对应指令或控制信号或导出的中间指令或控制信号。可将该第二指令集中的这一个或多个中间指令或控制信号提供给解码单元,该解码单元可将它们解码为可由处理器的原生硬件(例如,多个流水线组件)执行的一个或多个较低层级的指令或控制信号。
再次参考图2,处理器还包括与解码单元214和/或前端部212耦合的后端部228。该后端部可接收表示该线程暂停指令和/或从其导出的一个或多个经解码或以其他方式变换的指令或控制信号。在所示实施例中,该后端部包括:重命名/分配单元230,其与解码单元的输出耦合;一个或多个执行单元234,其与重命名/分配单元的输出耦合;以及提交单元242,其与执行单元的输出耦合。该后端部也包括一个或多个指令队列单元238,例如,用于将所谓的指令池或指令窗保持在处理器的无序(OoO)部中的单元。合适的指令队列单元的示例包括但不限于重排序缓冲器、预留站等。
所示实施例涉及无序(OoO)处理器,但是本发明的范围并不如此受限。在OoO处理器中,执行单元可相对于这些指令的原始程序顺序无序(OoO)执行指令。例如,处理器可按照取决于输入数据可用性和/或资源可用性的顺序来执行多条指令,而不是按程序顺序来执行多条指令。可以在没有过度延迟的情况下执行能够执行的多条指令,而不是阻止其执行以等待数据和/或资源。可将这些指令存储或缓冲在指令队列单元238中,直到它们准备好由执行单元执行为止。在执行之后,该处理器可能需要对该OoO的执行结果和/或架构状态重排序,并且按原始的程序顺序而不是按实际执行这些指令所遵循的顺序来(例如,向软件、用户等)呈现它们。为实现此,可将这些指令及其执行结果存储或缓冲在指令队列单元238中,并且该处理器的逻辑可对这些执行结果和/或架构状态重排序。提交单元可控制按原始的程序顺序对架构状态的更新。在一个方面,提交逻辑可等到每一条指令按原始的程序顺序的的所有较旧的/先前的指令已被提交后才提交这每一条指令。
在一些实施例中,该处理器的后端部可用于:响应于该线程暂停指令(例如,响应于从该线程暂停指令解码出的一个或多个控制信号),暂停或延迟对用于执行的第一线程的后续指令的处理。在不同的实施例中,这可以按不同的方式来实现。
在一些实施例中,可在特定的流水线级处(例如,在处理器的后端部)停止或保留从该线程暂停指令解码出的控制信号,并因此防止该控制信号进一步进展通过该流水线。在处理器的有序部分中停止该控制信号也可阻止或防止从第一线程的所有(按程序顺序在该线程暂停指令之后发生的)后续指令解码出的控制信号进展通过该流水线。这可以有效地暂停对用于执行的第一线程的后续指令的处理。在其他实施例中,不同于停止控制信号,可使用其他方式来暂停或延迟对用于执行的第一线程的后续指令的处理。例如,可迫使控制信号进展通过流水线所需的资源表现为满的或不可用的。作为一个示例,可停止无序指令调度,并且/或者可迫使预留站表现为不可用。另一些方式对本领域技术人员而言将是显而易见的,并且具有本公开的益处。
再次参考图2,在所示示例实施例中,在处理器的后端部中的重命名/分配单元230处停止控制信号,232。一般将该重命名/分配单元包括在处理器后端部的开始处的有序级中,并且可在功能上将它设置在解码单元214和执行单元234之间。该重命名/分配单元可执行某些资源(例如,寄存器组条目、加载缓冲器、存储缓冲器等)的重命名和分配。或者,可在其他流水线级处(例如,在处理器的后端部中)停止或保留该控制信号。值得注意的是,在处理器的前端部212中停止控制信号也是可能的。例如,一般性地在解码单元214处停止控制信号是可能的。最后,如果停止该控制信号足够长的时间,则后端部228应当排出(drain)来自被暂停的第一线程的所有先前的控制信号。然而,在处理器的前端部中的此类停止的可能缺点在于,尤其在流水线是相对深的时候,后端部排出来自被暂停的第一线程的这些先前的控制信号可能花费大量的时间。用于排出这些指令的附加时间可能容易减少可用于功率降低的总时间量(例如,对处理器的多个空闲部进行时钟门控)。换言之,在处理器的后端部停止该控制信号可提供相对更多的时间用于功率降低。
虽然暂停了第一线程,但是提交单元242可继续提交该第一线程的所有先前指令218(即,按原始的程序顺序在该线程暂停指令之前发生的那些指令)。最终,处理器的后端部的至少部分(但经常是至少多数235)可变成排空了第一线程中除仍然在被执行以暂停该第一线程的线程暂停指令之外的这些先前指令(例如,从中解码出的多个控制信号)中的全部。在所示示例中,该多数部235包括例如,执行单元234的全部;以及用于提供用于无序指令执行的指令池或指令窗的主要的指令队列单元238中的至少一些或全部。特定单元或资源将取决于特定实现(例如,在什么流水线级处实现停止)。
在一些实施例中,除了暂停对用于执行的第一线程的后续指令的处理之外,处理器的后端部也可用于:响应于该线程暂停指令(例如,响应于从该线程暂停指令解码出的一个或多个控制信号),保持处理器的后端部的至少部分或经常是至少多数235排空第一线程中除该线程暂停指令之外的多条指令长达预定的、确定的或固定的时间段。该多数部包括基于晶体管总数、集成电路总量或总管芯上表面积中的至少一个的多于一半的后端部。在所示示例中,该多数部235包括例如,执行单元234的全部;以及用于提供用于无序指令执行的指令池或指令窗的主要的指令队列单元238中的至少一些或全部。
在一些实施例中,可利用计时器244来实现处理器的后端部的诸部分排空来自第一线程的多个控制信号的预定时间。合适计时器的示例包括但不限于,前向计时器、后向计时器、前向计数器、后向计数器、递增逻辑和递减逻辑。在一些实施例中,后端部可用于:响应于该线程暂停指令,在多数部235(例如,包括执行单元和更耗功率的指令队列单元)基本上已经完全排空从第一线程的先前多条指令218解码处的多个控制信号之后,启用或激活计数器244。按这种方法,可使用该计时器以对相对更精确地反映如果没有其他线程被执行(例如,在单线程模式中)这些部分将排空和/或将空闲的实际时间的固定的、预定的或确定的时间计数。有利的是,这可确保或保证这些部分排空来自第一线程的全部先前指令的最小预定的、固定的或确定的时间。
值得注意的是,在流水线的前端部启用计时器也是可能的。例如,可响应于对该线程暂停指令解码而启用该计时器。然而,这种方式的一个可能的缺点在于,当从先前的多条指令218解码出的多个控制信号仍然存在于处理器的后端部中,就响应于对线程暂停指令进行解码而执行启动该计时器。例如,执行单元234、指令队列单元238等可仍然包括这些控制信号。即便在单线程模式中,执行单元和指令队列单元一般也将不是空闲的,而仍将主动地处理这些控制信号。即便在暂停了第一线程之后,直到这些控制信号有时间通过随着时间推移被提交而从后端部排出之前,这些执行单元和指令队列单元一般也不能够是空闲的。针对此的时间量一般是趋于可变的。结果,在对线程暂停指令的解码时被启用或激活的计时器一般将表示对后端的多个部分实际上排空来自第一线程的多个控制信号(例如,并且在单线程模式中,能够被时钟门控)的时间的较不精确的测量。
在一些情形下,可使用暂停第一线程216来改善一个或多个其他线程(例如,第二线程224)的性能。例如,在同时多线程化操作(SMT)模式中,第一线程216和第二线程224两者可共享具有前端部212和后端部228的核的某些资源。例如,第一和第二线程可共享执行单元234、指令队列单元238、提交单元242等。这些线程可争夺这些资源,并且由于共享了这些资源,每一个线程可能稍微更慢地被执行。在一些实施例中,当暂停第一线程时,可释放这些资源以由第二线程排他地或几乎排他地使用。这可有助于改善第二线程的执行的性能或速度。作为示例,当第一线程正在执行自旋-等待环路,并且一般无论如何都将不能够使用这些资源来执行有用的工作时,暂停该第一线程可能是合适的。因此,通过将这些资源排他地给予第二线程,可更好地利用这些资源来改善总体性能。有利的是,在此类情形下,该暂停可通过更好、更智能的资源利用,帮助改善总体性能。
在其他情形下,可使用暂停第一线程216来减少功耗。例如,在单线程模式下,仅第一线程216而没有其他线程可以正在具有前端部212和后端部228的核上运行。该第一线程可具有对执行单元234、指令队列单元238、执行单元242等的排他使用权。在一些实施例中,如上所述,当暂停该第一线程时,处理器的后端部的至少一部分可完全排出或排空来自该第一线程的所有控制信号(除了线程暂停指令自身的那些控制信号)。例如,执行单元234和指令队列单元238可排空。当这些资源变空时,它们也可能像没有在执行任何处理或没有被使用那样变得空闲(例如,执行单元没有被使用,并且是空闲的)。在一些实施例中,当它们为空或空闲的时候,可减少它们的功耗。例如,在一些实施例中,与后端部耦合的功率管理单元246可确定这些资源(例如,多个执行单元234、指令队列单元238)是空闲的,并且可通过停止向这些资源递送时钟信号或对向这些资源的时钟信号的递送进行门控来减少这些资源的功耗。这可有助于减少功耗。作为示例,当第一线程正在执行自旋-等待环路,并且一般无论如何都将不能够使用这些资源来执行有用的工作时,暂停该第一线程可能是合适的。可通过停止去往这些资源的时钟或对去往这些资源的时钟进行门控来实现功率节省,而不是在不使用这些资源的时候对这些资源进行定时(clocking)。
在另一些情形下,可使用上述两种方式的组合。例如,在同时多线程化操作(SMT)模式中,第一线程216和第二线程224两者可能正在共享具有前端部212和后端部228的核的某些资源。如果暂停这些线程中的仅一个(例如,第一线程),则可由另一个非暂停的线程(例如,第二线程)相对排他性地使用这些资源。或者,在同时暂停所有线程期间(例如,两个线程正在同时执行具有重叠的暂停时间段的自旋-等待环路),多个资源(例如,多个执行单元234、指令队列单元238)可排空来自所有线程的所有控制信号,并且可变得空闲。在此类情形下,功率管理单元246可检测空闲,并且采取功率降低动作(例如,停止向这些空闲资源的时钟递送或对该时钟递送进行门控)。
如上所述,在一些实施例中,该线程暂停指令可强加或至少引起允许功率降低的条件(例如,关闭时钟)。在一些实施例中,该线程暂停指令自身可能无法直接停止任何功率递送或使任何时钟被门控或被停止。相反,功率管理单元246(它可以可选地是不直接受该线程暂停指令控制的常规功率管理单元)可使用现有的和/或常规的功率降低机制(例如,基于空闲的时钟门控)来减少功率。该暂停指令可迫使或至少使后端部的至少部分(经常是至少多数235)排空来自被暂停线程的所有指令。在这些部分完全排空所有指令并且空闲的时候,功率管理单元246可用于检测这些部分是不活动的和/或空闲的,并且停止它们的时钟驱动器。在一些实施例中,该线程暂停指令可被设计为用于或旨在用于智能地利用现有的功率管理机制或与之协作以引起暂停对线程的指令的处理,并且也排出或排空处理器的一部分以创建可由引起时钟门控的功率管理机制检测的空闲。按照该方法,可将该线程暂停指令认为是支持功率降低的线程暂停指令,因为当没有其他非暂停指令是活动的时候,它们操作的方式支持或辅助功率降低。
处理器可包括专用或特定逻辑(例如,潜在地与固件(例如,存储在非易失性存储器中的多条指令)和/或软件组合的晶体管、集成电路或其他硬件),该逻辑用于响应于线程暂停指令和/或作为该线程暂停指令的结果来执行该线程暂停指令和/或暂停线程的执行。在一些实施例中,该处理器可包括针对图6-7中任意一个或多个所示或所述的单元、电路或逻辑,但是本发明的范围并不如此受限。
为了避免使描述模糊,已示出和描述了相对更简单的处理器210。在其他实施例中,处理器可以可选地包括其他公知的处理器组件。此类组件的多个不同组合和配置是合适的。多个实施例不限于任何已知的组合或配置。此外,可将多个实施例包括在具有多个核、逻辑处理器或执行引擎(其中的至少一个具有用于执行线程暂停指令的实施例的逻辑)的处理器中。
图3A示出线程暂停指令的总线程暂停时间350的实施例。该总线程暂停时间包括指令排出时间(draintime)352和预定的排空时间(emptytime)354。该指令排出时间表示在开始对用于执行的被暂停线程的指令的处理之后,按照程序顺序在线程暂停指令之前发生的先前指令的控制信号从处理器流水线中排出(例如,通过被提交)的时间。预定的排空时间354表示当处理器流水线排空来自先前多条指令的这些控制信号时开始的固定的、预定的或确定的时间。
图3B示出第一线程的第一线程暂停指令的第一总线程暂停时间350-1与第二线程的第二线程暂停指令的第二总线程暂停时间350-2重叠的示例实施例。该第一总线程暂停时间包括指令排出时间352-1和预定的排空时间354-1。类似地,第二总线程暂停时间包括指令排出时间352-2和预定的排空时间354-2。用于功率降低的重叠时间356示出在实际时间中彼此重叠的预定的排空时间354-1、354-2的部分。这表示可用于例如通过停止去往由第一和第二线程使用的资源的时钟信号或对该时钟信号进行门控而进行功率降低的时间量。
提供线程暂停指令的预定的排空时间(例如,预定的排空时间354)的不同方法是可能的。图4-5示出合适方法的多个示例。
图4是具有控制寄存器458的处理器410的实施例的框图,该控制寄存器具有用于指定或以其他方式指示预定的排空时间(例如,预定的排空时间354)的字段460。在一些实施例中,可在制造处理器时由处理器制造商在控制寄存器中配置该预定的排空时间,并且可能无法在使用期间和/或由最终用户重新配置该预定的排空时间。在其他实施例中,可在使用期间和/或由最终用户配置该预定的排空时间。例如,可包括特权等级的指令(例如,仅可由操作系统、管理程序或其他特权软件访问的指令)或可由用户级应用访问的用户等级的指令以配置或重新配置该预定的排空时间。
图5是具有用于显式地指定或以其他方式指示预定的排空时间(例如,预定的排空时间354)的操作数562的线程暂停指令520的实施例的框图。该操作数可表示该指令的一个或多个位或字段。在一些实施例中,这一个或多个位或字段指示具有指定或指示该预定的排空时间的值的寄存器或其他存储位置。在其他实施例中,这一个或多个位或字段自身提供指定或指示该预定的排空时间的值。例如,线程暂停指令的立即数可指定或以其他方式指示该预定的排空时间。无论是否通过寄存器或其他存储位置直接或间接地在指令中提供该值,该值都可显式地指定该预定的排空时间(例如,显式地指定用于该预定的排空时间的时钟周期的数量),或以其他方式指示该预定的排空时间(例如,提供在多个不同的预定的排空时间之间选择的值)。例如,该线程暂停指令可具有两个位,用于在四个不同的预定的排空时间之间作出选择,或用于指示四个不同的预定的排空时间中的任一个。作为一个具体示例,2位的字段可具有:值00,用于选择0周期的预定的排空时间;值01,用于选择32周期的预定的排空时间;值10,用于选择64周期的预定的排空时间;以及值11,用于选择128周期的预定的排空时间。
应当理解,上述时间仅是示例,并且尽管一般来说该时间不应当过长或过短,但是本发明的范围不限于该预定的排空时间的任何已知值。如果该时间过长,则被暂停的线程可能错过抓取被释放的同步基元的机会。如果该时间过短,则可能减小功率降低的可能性。此外,预定的排空时间的最优时间量可取决于使用共享的同步基元的处理器的数量。例如,如果大量的处理器正在等待共享同步基元,则使用过长的预定排空时间可能倾向于通过使被暂停的线程错过获取锁的机会而降低总体系统性能。本领域技术人员将会理解,可通过例如仿真、流片后(post-silicon)调节等来估计或确定合适的时间量。在一些实施例中,可以可选地使用在大约0个到大约256个时钟周期或大约32个到大约128个时钟周期的范围内的值,但是本发明的范围并不如此受限。
图6是用于执行线程暂停指令620的示例实施例的处理器610的详细示例实施例的框图。该处理器包括解码单元614和预重命名/分配队列664。将队列664划分为:线程1队列664-1,其对应于第一线程(即,线程1),并且用于存储来自该第一线程的多个控制信号;以及线程2队列664-2,其对应于第二线程(即,线程2),并且用于存储来自该第二线程的多个控制信号。使用多路复用器或其他选择单元668以从来自队列664的线程1或线程2的控制信号中选择,并且将它们提供给处理器的重命名/分配单元630。该处理器还包括一个或多个执行单元634和预提交队列672。将该预提交队列类似地划分为:线程1队列672-1,其对应于线程1,并且用于存储来自该线程1的多个控制信号;以及线程2队列672-2,其对应于线程2,并且用于存储来自该线程2的多个控制信号。使用第二多路复用器或其他选择单元674以从来自队列672的线程1或线程2的多个控制信号中选择,并且将它们提供给处理器的提交单元642。
应当理解,解码单元614、重命名/分配单元630、执行单元634和提交单元642可以任选地与本文中别处(例如,结合图2)所述的对应命名的单元类似或相同,并且可具有类似的变型和替代。为了避免使描述模糊,以下讨论将趋向于强调所示实施例的新的或附加的方面,而不重复所有的可能可选地是相同或类似的方面。此外,尽管在其他实施例中,处理器可以可选地具有三个或更多硬件线程,但是所示处理器是双线程的。
可将第一线程(即,线程1)的线程暂停指令620提供给解码单元614。该解码单元可将该线程暂停指令解码为多个控制信号。在特定的所示示例实施例中,这些控制信号包括第一控制信号(CS1)、第二控制信号(CS2)和第三控制信号(CS3)。在一些实施例中,这些控制型号中的每一个可表示微操作或微op。在其它实施例中,可替代地使用其他类型的控制信号。
可将CS1提供给预重命名/分配队列664的线程1队列664-1。选择单元668可选择CS1来分配,并且可将其提供给重命名/分配单元630。在一些实施例中,如参考标号(1)处所示,当CS1经历了分配时,它可设置标记670(例如,计分板、一个或多个位等)。在一些实施例中,该经设置的位可避免对来自对应的线程(即,线程1)的多个控制信号的进一步分配。可将第二控制信号(CS2)提供给预重命名/分配队列664的线程1队列664-1。在一些实施例中,如参考标号(2)处所示,由于在分配时经第一控制信号(CS1)设置的经设置的位670,可在预重命名/分配队列664的线程1队列664-1中停止CS2。停止或阻止CS2可有效地阻止对来自线程1的多个控制信号的分配,使得没有比该线程暂停指令更年轻的其他控制信号进展通过流水线以执行。在这种情况下,该停止是在分配处的,但是本发明的范围并不如此受限。
然后,CS1可经由执行单元634、队列672,继续流过流水线,并且由提交单元642提交。在一些实施例中,如参考标号(3)处所示,当提交CS1时,该控制信号CS1可激活或启动排空计时器644。在一些实施例中,该排空计时器可以是一般被部署在流水线的提交级处的硬件计时器(例如,递增或递减计数器)。在一些实施例中,处理器可包括此类排空计时器预硬件线程。在一些实施例中,该排空计时器可停止或阻止来自对应的线程(即,在这种情况下的线程1)的多个后续控制信号的引退长达预定的排空时间。如参考标号(4)处所示,当提交CS1时,它可重置标记670。
在一些实施例中,在提交CS1时,预重命名/分配队列664的输出和提交单元642之间的流水线的多个级可排空来自线程1的多个控制信号。例如,CS1和CS2可以是背靠背(back-to-back)的控制信号。该提交单元可有序地提交多条指令,使得可在提交CS1之前提交来自线程1的所有先前的指令。此外,由于CS1和CS2是背靠背的控制信号,因此,在流水线中,没有其他控制信号在它们之间。由于标记670而阻止分配CS2。相应地,使上述流水线级有效地排出或排空来自线程1的除CS1和CS2之外的多个控制信号。
在一些实施例中,当提交了CS1,并且如参考标号(4)处所示重置了标记时,可分配CS2。在一些实施例中,如参考标号(5)处所示,当分配CS2时,它可再次设置该标记670,使得阻止对来自线程1的后续多个控制信号的分配。然后,CS2可继续通过该流水线。如参考标号(6)处所示,可在预提交队列672的线程1队列672-1中停止或阻止CS2,同时排空计时器644对预定的排空时间计数或计时。当该排空计时器已计数或计时到预定的排空时间时,选择器单元674可选择CS2,并且将它提供给提交单元642。
在一些实施例中,如参考标号(7)处所示,由于如参考标号(5)所示在CS2的分配期间所设置的经设置的标记670,可在预命名/分配队列664的线程1队列664-1中停止或阻止CS3。在一些实施例中,如参考标号(8)处所示,当提交CS2时,它可重置标记670。这可允许CS3以及来自线程1的后续多条指令的控制信号能够被分配,并自由地流过该流水线。相应地,响应于从线程暂停指令(例如,响应于从该线程暂停指令解码出的控制信号(例如,CS2)的引退),暂停线程1的时间段可结束。
图7是包括后端部728的处理器710的实施例的框图,该后端部用于:当该后端部是空闲的时候,响应于线程暂停指令,可选地用信号通知前端部712和/或存储器执行单元790。该后端部包括单元或逻辑730(例如,重命名/分配单元),其用于响应于线程暂停指令,暂停对线程的后续多条指令的处理。这可基本上如本文中别处所描述的那样执行。如先前所述,处理器的后端的至少部分(经常是至少多数)可排空来自那个被暂停线程的多条指令。当没有其他线程由处理器的后端主动地处理的时候(例如,在单线程模式中或当也暂停、停止或结束全部其他线程时),这些部分也可变成空闲的或不活动的。这也可能如本文中别处所述那样发生。
在后端部中对线程的暂停或停止也可能易于在处理器的前端部中引起或推动对被暂停线程的指令流和/或控制信号流的随之而来的暂停或停止。前端单元的该停止或暂停可能是由于某种回压(backpressure)782,该回压是由于控制信号不能够通过后端部728中的停止而造成的。虽然处理器的前端部一般将不会是空的,但是由于该回压,它可能变成空闲的或不活动的。当后端部是空闲的或不活动的时候,存储器执行单元790也可能变成空闲的或不活动的。
现在,即便在前端部712是空闲的或不活动的时候,它也不一定自动能够停止其时钟。例如,如果该前端部预期或可能预期来自后端部728的需要被处理的某些信号或事件,则它可能需要保持其时钟运转。作为示例,此类事件可包括但不限于例如,跳转误预测清除(jumpmispredictionclear)(这可能在执行的跳转被解析为是误预测的时候发生)、异常清除(exceptionclear)(这可能发生在指令提交时)或其他清除事件。
在一些实施例中,大约在后端部变成空闲的时候(例如,就在它变成空闲的之前,就在它变成空闲的之后,等等),该后端部可如780处所示,用信号通知前端部712。例如,后端空闲单元778或其他逻辑可用信号通知前端空闲逻辑784或其他逻辑。在不同的实施例中,该信号可进行各种不同的指示。作为示例,该信号可指示后端部将是空闲的,可指示后端部将不提供需要前端部关注的事件,可以是后端部认为前端部可停止其时钟的保证,等等。该信号可帮助前端部知晓其可以安全地停止其时钟。在没有此类信号的情况下,取决于特定实现,前端部停止其时钟可能是不太可能的,并且/或者前端部停止其时钟可能不是那么容易的,并且/或者前端部可能不能够这么长时期地停止其时钟。在一些实施例中,该信号可以可选地指示后端部将停止其时钟和/或将不需要前端部所持续的时钟信号的数量。
在一些实施例中,大约在后端部变成空闲的时候(例如,就在它变成空闲的之前,就在它变成空闲的之后,等等),该后端部可如786处所示,用信号通知存储器执行单元790。例如,后端空闲单元778或其他逻辑可用信号通知存储器执行单元空闲逻辑788或其他逻辑。在各种不同的实施例中,该信号可进行类似于上述针对前端部所述的那些指示的各种不同的指示。作为示例,该信号可指示后端部将是空闲的,可指示后端部将不提供需要存储器执行单元关注的事件,可以是后端部认为存储器执行单元可停止其时钟的保证,等等。该信号可帮助存储器执行单元知晓其可以安全地停止其时钟。在没有此类信号的情况下,取决于特定实现,存储器执行单元停止其时钟可能是不太可能的,并且/或者存储器执行单元停止其时钟可能不是那么容易的,并且/或者存储器执行单元可能不能够这么长时期地停止其时钟。在一些实施例中,该信号可以可选地指示后端部将停止其时钟和/或将不需要存储器执行单元所持续的时钟信号的数量。
图8是执行线程暂停指令的方法892的实施例的流程框图。可在处理器、指令处理装置或其他数字逻辑器件中执行该方法。该方法包括:在框893处,将线程暂停指令解码为一组控制信号。可如本文中别处所述,对该指令进行解码。
在框894处,这组控制信号中的一个或多个控制信号可作出线程暂停指令的相对更简单的实现是否足够或是否应当执行该线程暂停指令的相对更详尽的实现(例如,使用微代码)的决定。在框894中作出决定所遵照的方法一般取决于在其中执行该方法的处理器/装置的特定实现和架构特征。作为示例,某些架构特征、增强或扩展(例如,支持虚拟化(例如,虚拟化技术)、支持事务性执行(例如,受限的事务性存储器)或其他架构状态)可对线程暂停指令的实现施加附加的处理。例如,在 64和IA-32架构软件开发者手册(64andIA-32ArchitecturesSoftwareDeveloper'sManual,订购号:325462-049US,2014年2月)中描述了暂停指令的执行可能导致事务性执行被中止。在该参考中也描述了暂停指令可能或可能无法使虚拟机退出。相应地,在一些实施例中,在框894处的决定可涉及确定是否正在使用虚拟化和/或确定是否正在使用事务性执行。例如,这可包括检查一个或多个控制寄存器中的一个或多个位来确定是否正在使用这些特征。在其他实施例中,其他架构特征或扩展可影响线程暂停指令的实现,并因此是相关的。
如果在框894处的决定是更简单的实现是足够的(即,决定为“是”),例如,如果不是正在使用将使线程暂停指令的实现复杂的架构特征(例如,既不使用虚拟化,也不使用事务性执行),则该方法可进展至框896。在框896处,可利用相对更简单的实现来实现该线程暂停指令。例如,在一些实施例中,可使用在框893处解码出的这组控制信号中的一个或多个其余的控制信号来实现该线程暂停指令。
相反,如果在框894处的决定是更简单的实现不是足够的(即,决定为“否”),例如,如果正在使用将使线程暂停指令的实现复杂的架构特征(例如,正在使用虚拟化和/或正在使用事务性执行),则该方法可前进至框895。在框895处,该方法可恢复到利用相对更详尽的实现来实现该线程暂停指令。例如,在一些实施例中,该方法可恢复到使用微代码实现来实现该线程暂停指令。作为示例,该更详尽的实现可包括用于确保该暂停指令鉴于使其实现复杂的一个或多个架构特征而被正确地执行的多个附加操作。在一个方面,这些附加操作可能潜在地难以通过经解码器解码的经解码的控制信号(例如,微操作)来实现,或者在一些情况下,这是不可实行的。例如,解码器可能不能够对用于实现所有需要的校验和其他操作的足够的控制信号进行解码。在一些实施例中,该更详尽的实现可能花费更多时间和/或执行更多操作,或以其他方式容易减少线程暂停指令的功率节约机会。
有利的是,在适当的时候(例如,当不是正在使用复杂的架构特征时),该方法可允许使用线程暂停指令的相对更简单的实现。这可有助于减少执行该暂停指令所需要的时间和资源量,从而可允许更快地减小功率或更快地释放资源给另一线程。当该更简单的实现是不合适的时候,该方法可恢复到更详尽的实现(例如,更严格地处理复杂的架构特征的实现)。在需要时,可选择性地使用此类更详尽地使用,相反,在不需要并且可通过更简单的实现来节约更多功率时不这样。
示例性寄存器架构
图9是根据本发明的一个实施例的寄存器架构900的框图。在所示出的实施例中,有32个512位宽的向量寄存器910;这些寄存器被引用为zmm0到zmm31。较低的12个zmm寄存器的较低阶的256个位覆盖在寄存器ymm0-12上。较低的12个zmm寄存器的较低阶的128个位(ymm寄存器的较低阶的128个位)覆盖在寄存器xmm0-11上。
写掩码寄存器911——在所示的实施例中,存在8个写掩码寄存器(k0至k7),每一个写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器911的尺寸是12位。如先前所述的,在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当正常指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地停用该指令的写掩码操作。
通用寄存器925——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作数寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R11来引用。
标量浮点栈寄存器组(x87栈)945,在其上面重叠了MMX紧缩整数平坦寄存器组950——在所示出的实施例中,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示出处理器核1090,其包括耦合至执行引擎单元1050的前端单元1030,该前端单元和执行引擎单元两者均耦合至存储器单元1070。核1090可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或其他核类型。作为又一选项,核1090可以是专用核,例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1030包括耦合到指令高速缓存单元1034的分支预测单元1032,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)1036,该指令转换后备缓冲器耦合到指令取出单元1038,指令取出单元耦合到解码单元1040。解码单元1040(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元1040可使用各种不同的机制来实现。合适的机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1090包括(例如,在解码单元1040中或以其他方式在前端单元1030内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元1040耦合至执行引擎单元1050中的重命名/分配器单元1052。
执行引擎单元1050包括耦合到引退单元1054和一个或多个调度器单元的集合1056的重命名/分配器单元1052。调度器单元1056表示任意数量的不同调度器,包括预留站、中央指令窗等。调度器单元1056耦合到物理寄存器组单元1058。每个物理寄存器组单元1058表示一个或多个物理寄存器组,其中不同的物理寄存器组保存一个或多个不同的数据类型(诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)、状态(诸如,作为将要执行的下一个指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元1058包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。物理寄存器组单元1058被引退单元1054覆盖,以示出可以此实现寄存器重命名和无序执行的多种方式(例如,使用重排序缓冲器和引退寄存器组;使用未来文件(futurefile)、历史缓冲器、引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元1054和物理寄存器组单元1058耦合至执行群集1060。执行群集1060包括一个或多个执行单元的集合1062以及一个或多个存储器访问单元的集合1064。执行单元1062可执行各种操作(例如,移位、加法、减法、乘法)并可对多种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元1056、物理寄存器组单元1058和执行群集1060被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或各自具有其自身的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元1064的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行的,并且其余流水线可以是有序的。
存储器访问单元的集合1064耦合到存储器单元1070,该存储器单元包括耦合到数据高速缓存单元1074的数据TLB单元1072,其中数据高速缓存单元耦合到第二级(L2)高速缓存单元1076。在一个示例性实施例中,存储器访问单元1064可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1070中的数据TLB单元1072。指令高速缓存单元1034还耦合到存储器单元1070中的第二级(L2)高速缓存单元1076。L2高速缓存单元1076耦合至一个或多个其他层级的高速缓存,并最终耦合至主存储器。
作为示例,示例性的寄存器重命名无序发布/执行核架构可以如下所述地实现流水线1000:1)指令取出1038执行取出和长度解码级1002和1004;2)解码单元1040执行解码级1006;3)重命名/分配器单元1052执行分配级1008和重命名级1010;4)调度器单元1056执行调度级1012;5)物理寄存器组单元1058和存储器单元1070执行寄存器读取/存储器读取级1014;执行群集1060执行执行级1016;6)存储器单元1070和物理寄存器组单元1058执行写回/存储器写入级1018;7)各单元可牵涉到异常处理级1022;以及8)引退单元1054和物理寄存器组单元1058执行提交级1024。
核1090可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核1090包括用于支持紧缩数据指令集扩展(例如SSE、AVX1、AVX2等等)的逻辑,由此允许许多多媒体应用所使用的操作利用紧缩数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元1034/1074以及共享的L2高速缓存单元1076,但替代实施例可具有用于指令和数据两者的单个内部高速缓存,例如,第一级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图11A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。取决于应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑通信。
图11A是根据本发明的多个实施例的单个处理器核以及它与管芯上互连网络1102的连接及其第二级(L2)高速缓存的本地子集1104的框图。在一个实施例中,指令解码器1100支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存1106允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1108和向量单元1110使用分开的寄存器集合(分别为标量寄存器1112和向量寄存器1114),并且在这些寄存器之间转移的数据被写入到存储器并随后从第一级(L1)高速缓存1106读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集1104是全局L2高速缓存的部分,该全局L2高速缓存被划分成多个分开的本地子集,每个处理器核对应一个本地子集。每个处理器核具有去往其自身的L2高速缓存的本地子集1104的直接访问路径。将由处理器核读取的数据存储在其L2高速缓存子集1104中,并且可以与并行于其他处理器核访问它们自身的本地L2高速缓存子集来迅速地访问它。将由处理器核写入的数据存储在其自身的L2高速缓存子集1104中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理能够在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图11B是根据本发明的多个实施例的图11A中的处理器核的部分的展开图。图11B包括L1高速缓存1104的L1数据高速缓存1106A部分,以及关于向量单元1110和向量寄存器1114的更多细节。具体地说,向量单元1110是16宽向量处理单元(VPU)(见16宽ALU1128),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元1120支持对寄存器输入的混合,通过数值转换单元1122A-B支持数值转换,并通过复制单元1124支持对存储器输入的复制。写掩码寄存器1126允许预测所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图12是根据本发明的多个实施例可能具有多于一个的核、可能具有集成存储器控制器以及可能具有集成图形器件的处理器1200的框图。图12中的实线框示出具有单个核1202A、系统代理1210、一个或多个总线控制器单元的集合1216的处理器1200,而虚线框的可选附加示出具有多个核1202A-N、系统代理单元1210中的一个或多个集成存储器控制器单元的集合1214以及专用逻辑1208的替代处理器1200。
因此,处理器1200的不同实现可包括:1)CPU,其中专用逻辑1208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1202A-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合);2)协处理器,其中核1202A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核1202A-N是大量通用有序核。因此,处理器1200可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1200可以是一个或多个基板的部分,并且/或者可使用多种工艺技术(例如,BiCMOS、CMOS或NMOS)中的任意技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个层级的高速缓存、一个或多个共享高速缓存单元的集合1206以及耦合至集成存储器控制器单元集合1214的外部存储器(未示出)。共享高速缓存单元的集合1206可包括一个或多个中级高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或它们的组合。尽管在一个实施例中,基于环的互连单元1212将集成图形逻辑1208、共享高速缓存单元的集合1206以及系统代理单元1210/集成存储器控制器单元1214互连,但替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,可维持一个或多个高速缓存单元1206和核1202-A-N之间的一致性(coherency)。
在一些实施例中,一个或多个核1202A-N能够进行多线程操作。系统代理1210包括协调和操作核1202A-N的那些组件。系统代理单元1210可包括例如功率控制单元(PCU)和显示单元。PCU可以是或可包括调节核1202A-N以及集成图形逻辑1208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1202A-N在架构指令集方面可以是同构的或异构的;也就是说,这些核1202A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图13-16是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般而言,能够涵盖本文中所公开的处理器和/或其他执行逻辑的各种系统和电子设备一般都是合适的。
现在参考图13,所示出的是根据本发明一个实施例的系统1300的框图。系统1300可包括一个或多个处理器1310、1315,这些处理器耦合到控制器中枢1320。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(GMCH)1390和输入/输出中枢(IOH)1350(其可以在分开的芯片上);GMCH1390包括存储器和图形控制器,存储器1340和协处理器1345耦合到该存储器和图形控制器;IOH1350将输入/输出(I/O)设备1360耦合到GMCH1390。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器1340和协处理器1345直接耦合到处理器1310以及控制器中枢1320,控制器中枢1320与IOH1350处于单个芯片中。
附加的处理器1315的可选性质在图13中通过虚线来表示。每一处理器1310、1315可包括本文中描述的处理核中的一个或多个,并且可以是处理器1200的某一版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1320经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(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)接口电路1478、1488的P-P接口1450来交换信息。如图14所示,IMC1472和1482将处理器耦合到相应的存储器,即存储器1432和存储器1434,它们可以是本地附连到各自的处理器的主存储器的多个部分。
处理器1470、1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个P-P接口1452、1454与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组1490可以经由接口1496耦合至第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图14所示,各种I/O设备1414可连同总线桥1418一起耦合到第一总线1416,总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1415耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1420,在一个实施例中,这些设备包括例如,键盘/鼠标1422、通信设备1427以及诸如可包括指令/代码和数据1428的盘驱动器或其他大容量存储设备的存储单元1430。此外,音频I/O1424可以被耦合至第二总线1420。注意,其他架构是可能的。例如,代替图14的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图15,所示为根据本发明的实施例的更具体的第二示例性系统1500的框图。图14和15中的相同部件用相同附图标记表示,并已从图14中省去了图14中的某些方面,以避免使图15的其他方面变得模糊。
图15示出处理器1470、1480可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL1472、1482包括集成存储器控制器单元并包括I/O控制逻辑。图15示出不仅存储器1432、1434耦合至CL1472、1482,而且I/O设备1514也耦合至控制逻辑1472、1482。传统I/O设备1515被耦合至芯片组1490。
现在参照图16,所示出的是根据本发明实施例的SoC1600的框图。图12中的相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC上的可选特征。在图16中,互连单元1602被耦合至:应用处理器1610,其包括一个或多个核的集合1202A-N以及共享高速缓存单元1206;系统代理单元1210;总线控制器单元1216;集成存储器控制器单元1214;一个或多个协处理器的集合1620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器存取(DMA)单元1632;以及用于耦合至一个或多个外部显示器的显示单元1640。在一个实施例中,协处理器1620包括专用处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等。
本文公开的机制的多个实施例可实现在硬件、软件、固件或此类实现方法的组合中。本发明的多个实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(例如,图14中示出的代码1430)应用于输入指令,以执行本文描述的多个功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任何情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在表示处理器中的各种逻辑的机器可读介质上的表示性指令来实现,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态的有形安排,其包括存储介质,诸如,硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的多个实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。此类实施例也被称为程序产品。
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式将指令转换成将由核来处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图17是根据本发明的多个实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可在软件、固件、硬件或其各种组合中实现。图17示出可使用x86编译器1704来编译利用高级语言1702的程序,以生成可由具有至少一个x86指令集核的处理器1716原生执行的x86二进制代码1706。具有至少一个x86指令集核的处理器1716表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的本质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1704表示用于生成x86二进制代码1706(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1716上执行。类似地,图17示出可以使用替代的指令集编译器1702来编译利用高级语言1702的程序,以生成可以由不具有至少一个x86指令集核的处理器1714(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1710。指令转换器1712用于将x86二进制代码1706转换成可以由不具有x86指令集核的处理器1714原生执行的代码。该转换后的代码不太可能与替代的指令集二进制代码1710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1712通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1706的软件、固件、硬件或其组合。
也可以可选地将针对图3-8中任意一个所描述的组件、特征和细节用于图1-2中的任意一个中。此外,也可以可选地将针对本文中所描写的装置中的任何一个的、本文中所述的组件、特征和细节用于和/或应用于本文中所述的多个方法中的任何方法,在多个实施例中,可由和/或可利用此类装置来执行这些方法。可将本文所述的处理器中的任意一个包括在本文所公开的计算机系统或其他系统的任意一个中。在一些实施例中,该计算机系统可包括互连(例如,点对点,或在其中多于两个芯片可耦合至互连的多分支)、与该互连耦合的处理器以及与该互连耦合的动态随机存取存储器(DRAM)。或者,替代DRAM,可使用不需要被刷新的其他类型的易失性存储器,可使用闪存,等等。在一些实施例中,可将该处理器包括在包括芯片上存储器控制器的芯片中,或者在其他实施例中,可将存储器控制器包括在分开的芯片(例如,集线器芯片)中。
在说明书和权利要求中,可能使用了术语“耦合的”和/或“连接的”及其派生词。这些术语不旨在互为同义词。相反,在多个实施例中,“连接的”用于指示两个或更多元件彼此直接物理和/或电接触。“耦合的”可意味着两个或更多个元件彼此直接物理和/或电接触。然而,“耦合的”也可意味着两个或更多个元件并未彼此直接接触,但是仍然彼此协作或彼此作用。例如,执行单元可通过一个或多个中间组件与寄存器和/或解码单元耦合。在多个附图中,箭头用于示出连接和耦合。
在说明书和/或权利要求书中,可能已使用了术语“逻辑”、“单元”、“模块”或“组件”。可将这些属于中的每一个用于指代硬件、固件、软件或它们的各种组合。在示例实施例中,这些术语中的每一个可以是指集成电路、专用电路、模拟电路、数字电路、可编程逻辑器件、包括指令的存储设备等,以及它们的各种组合。在一些实施例中,它们可包括至少某个硬件(例如,晶体管、门、其他电路组件等)。
可能已使用了术语“和/或”。如本文中所使用的那样,术语“和/或”意思是一个或其他或两者(例如,A和/或B意思是:A或B,或者A和B两者)。
在以上描述中,为了提供对多个实施例的透彻理解,阐述了具体的细节。然而,在没有这些具体细节中的一些的情况下,可实施其他实施例。本发明的范围不是由以上所提供的具体示例来确定的,而仅由所附权利要求确定。在其他实例中,以框图形式和/或没有细节的形式示出了公知的电路、结构、设备和操作,以避免使对说明书的理解变得模糊。在认为合适的地方,已经在多个附图间重复了附图标记或附图标记的结尾部分,以指示可以可选地具有类似或相同特性的对应或类似的元件,除非指出或以其他方式使之显而易见。
已描述了各种操作和方法。已经以相对基础的形式对这些方法中的一些进行了描述,但是可以可选地将多个操作添加到这些方法中和/或从这些方法中去除。此外,虽然已根据多个实施例示出或描述了特定的操作顺序,但是该顺序是示例性的。替代实施例可按不同的顺序执行这些操作,可组合某些操作,可重叠某些操作,等等。
某些操作可由硬件组件执行,或者可具体化在机器可执行或电路可执行指令中,这些操作可用于使得和/或者导致机器、电路或硬件组件(例如,处理器、处理器的部分、电路等)利用执行操作的指令被编程。也可以可选地由硬件和软件的组合来执行这些操作。处理器、机器、电路、或硬件可包括可用于执行和/或处理指令且响应于该指令存储结果的专用或特定电路或者其他逻辑(例如,潜在地与固件和/或软件组合的硬件)。
一些实施例包括制品(例如,计算机程序产品),该制品包括机器可读介质。该介质可包括以机器可读的形式提供(例如,存储)信息的机制。机器可读介质可提供指令或指令序列或者可在该机器可读介质上存储了指令或指令序列,如果和/或当由机器执行该指令或指令序列,该指令或指令序列用于使该机器执行和/或导致该机器执行本文中所公开的一种或多种操作、方法、或技术。该机器可读介质可存储或以其他方式提供本文中所公开的指令的实施例中的一个或多个。
在一些实施例中,该机器可读介质可包括有形的和/或非暂态的机器可读存储介质。例如,有形的和/或非暂态机器可读存储介质可包括:软盘、光存储介质、光盘、光学数据存储设备、CD-ROM、磁盘、磁光盘、只读存储器(ROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、闪存、相变化存储器、相变化数据存储材料、非易失性存储器、非易失性数据存储设备、非暂态存储器、或暂态数据存储设备等。非暂态机器可读存储介质不由暂态传播的信号组成。
合适机器的示例包括但不限于,通用处理器、专用处理器、指令处理装置、数字逻辑电路、集成电路等。合适的机器的另一些示例包括,包含处理器、指令处理装置、数字逻辑电路或集成电路的计算设备或其他电子设备。此类计算设备和电子设备的示例包括但不限于,台式计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、蜂窝电话、服务器、网络设备(例如,路由器和交换机)、移动网络设备(MID)、媒体播放器、智能电视、上网机、机顶盒和视频游戏控制器。
例如,贯穿本说明书对“一个实施例”、“实施例”、“一个或多个实施例”、“一些实施例”的引用指示特定特征可被包括在本发明的实施中,但是不一定需要这样。类似地,在说明书中,为了使本公开顺畅并且辅助对各个发明性方面的理解,有时在单个实施例、附图及其描述中将各种特征归集在一起。然而,不应当将该公开方法解释为反映本发明需要比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求反映的那样,发明性方面在于少于所公开的单个实施例的所有特征。因此,将遵循具体实施方式的各项权利要求明确地结合进该具体实施方式,每一项权利独立地作为本发明单独的实施例而存在。
示例实施例
以下示例涉及进一步的实施例。这些示例中的细节可用于一个或多个实施例中的任何地方。
示例1是处理器或其他装置,包括用于对来自第一线程的线程暂停指令进行解码的解码单元和与该解码单元耦合的处理器的后端部。该处理器的后端部用于:响应于该线程暂停指令,暂停对用于执行的第一线程的后续指令的处理。这些后续的指令按程序顺序在该线程暂停指令之后发生。该处理器的后端部也用于:响应于该线程暂停指令,保持处理器的后端部的至少多数排空该第一线程中除线程暂停指令之外的指令长达预定的时间段,处理器的后端部的至少多数包括多个执行单元和指令队列单元。
示例2包括示例1的处理器,进一步包括计时器,其中,该处理器响应于线程暂停指令在处理器的后端部的至少多数排空第一线程的指令之后,启用该计时器。
示例3包括示例2的处理器,其中,解码单元用于将线程暂停指令解码为控制信号,并且其中处理器的后端部响应于提交该控制信号来启用计时器。
示例4包括示例1到3中任意一项所述的处理器,进一步所述处理器的前端部,该前端部包括解码单元,并且其中,处理器的后端部用于:当处理器的后端部的至少多数空闲时,响应于线程暂停指令,用信号通知处理器的前端部,处理器的该前端部将不会接收到来自处理器的后端部的需要关注的事件。
示例5包括示例1到4中任意一项所述的处理器,进一步包括存储器执行单元,并且其中,处理器的后端部用于:当处理器的后端部的至少多数空闲时,响应于线程暂停指令,用信号通知该存储器执行单元,该存储器执行单元将不会接收到来自处理器的后端部的需要关注的事件。
示例6包括示例1到5中任意一项所述的处理器,其中,处理器的后端部用于:响应于线程暂停指令,在处理器的后端部中的流水线级处,在预定时间段内,停止从线程暂停指令解码出的控制信号。
示例7包括示例6的处理器,其中,流水线级在解码单元和执行单元之间。
示例8包括示例7的处理器,其中,流水线级包括分配单元。
示例9包括示例1到8中任意一项所述的处理器,其中,解码单元用于解码线程暂停指令,该线程暂停指令具有用于指示预定的时间段的操作数。
示例10包括示例1到8中任意一项所述的处理器,其中,解码单元用于将线程暂停指令解码为控制信号,该控制信号用于确定将使用线程暂停指令的相对更简单的实现而不是处理器也能够执行的线程暂停指令的相对更详尽的实现。
示例11包括示例10的处理器,其中,处理器能够进行虚拟化,其中执行线程暂停指令以使虚拟机退出,并且处理器能够进行事务性执行,其中执行线程暂停指令至少时不时地使该事务性执行被中止,并且其中,控制信号用于:在确定处理器不是正在执行虚拟化和事务性执行之后,确定将使用相对更简单的实现。
示例12包括示例1到8中任意一项所述的处理器,其中,线程暂停指令用于:在开始预定的时间段之前,允许处理器的后端部提交第一线程中按程序顺序在线程暂停指令之前发生的所有先前的指令。
示例13包括示例1到8中任意一项所述的处理器,其中,预定的时间段在50个到150个时钟周期之间。
示例14包括处理器中的方法,其包括:接收来自第一线程的线程暂停指令;以及响应于该线程暂停指令,暂停对用于执行的第一线程的后续指令的处理。这些后续的指令按程序顺序在该线程暂停指令之后发生。该方法也包括:响应于该线程暂停指令,保持处理器的后端部的至少多个执行单元和指令队列单元排空第一线程中除线程暂停指令之外的指令长达固定的持续时间
示例15包括示例14的方法,还包括:确定对去往执行单元的时钟进行门控长达基于固定持续时间的时间段。
示例16包括示例14到15中任意一项所述的方法,还包括:响应于线程暂停指令,在至少多个执行单元和指令队列单元排空第一线程中除线程暂停指令之外的指令之后,启动计时器。
示例17包括示例14到16中任意一项所述的方法,进一步包括:响应于线程暂停指令,并且在至少执行单元和指令队列单元是空闲的之后,从处理器的后端部将信号传送到处理器的前端部以指示后端部将不发送需要前端部注意的事件。
示例18包括示例17的方法,还包括:处理器的前端部至少部分地基于信号,确定停止时钟。
示例19包括示例14到18中任意一项所述的方法,进一步包括:响应于线程暂停指令,确定线程暂停指令的相对更简单的实现是足够的,而不是处理器也能够实现的线程暂停指令的相对更详尽的实现。
示例20包括示例19的方法,其中,确定线程暂停指令的相对更简单的实现是足够的包括,确定以下至少一种情况:处理器不是正在执行虚拟化;以及处理器不是正在执行事务性执行。
示例21包括示例14的方法,其中,暂停包括:在处理器的后端部中,在固定持续时间内,停止已从线程暂停指令解码出的控制信号。
示例22包括示例14到21中任意一项所述的方法,其中,接收包括:接收线程暂停指令,该线程暂停指令具有用于指示固定持续时间的操作数。
示例23包括系统,其用于处理多条指令,并且包括互连和与该互连耦合的处理器。该处理器用于接收来自第一线程的线程暂停指令。该处理器用于:响应于该线程暂停指令,暂停对用于执行的第一线程的后续多条指令的处理。这些后续的多条指令按程序顺序在该线程暂停指令之后发生。该处理器也用于:保持处理器的后端部的至少多数排空第一线程中除线程暂停指令之外的多条指令长达固定持续时间,处理器的后端部的至少多数包括多个执行单元。该系统也包括与该互连耦合的动态随机存取存储器(DRAM)。
示例24包括示例23的系统,其中,处理器的后端部用于:当处理器的后端部的至少多数是空闲的时候,响应于线程暂停指令,用信号通知处理器的所述前端部,该处理器的后端部将不会将需要关注的事件发送到处理器的前端部。
示例25包括制品,其包括非暂态机器可读存储介质。该非暂态机器可读存储介质存储线程暂停指令。如果由机器执行该线程暂停指令,其使该机器用于执行多个操作,这些操作包括:暂停对具有用于执行的具有该线程暂停指令的第一线程的后续多条指令的处理。这些后续的多条指令按程序顺序在该线程暂停指令之后发生。这些操作也包括:响应于该线程暂停指令,保持处理器的后端部的至少多个执行单元和指令队列单元排空第一线程中除线程暂停指令之外的多条指令长达预定的时间段。
示例26包括示例25的制品,其中,如果由机器执行线程暂停指令,该线程暂停指令使该机器用于:确定线程暂停指令的相对更简单的实现而不是处理器也能够实现的线程暂停指令的相对更详尽的实现是足够的。
示例27包括处理器或其他装置,其用于执行示例14-22中任意一项所述的方法。
示例28包括处理器或其他装置,其包括用于执行示例14-22中任意一项所述的方法的设备。
示例29包括处理器,其包括用于执行示例14-22中任意一项所述的方法的模块、单元、逻辑、电路和装置的任意组合。
示例30包括制品,其包括可选地非暂态机器可读介质,该非暂态机器可读介质可选地存储或以其他方式提供指令,如果和/或当由处理器、计算机系统或其他机器执行该指令时,该指令用于使该机器执行示例14-22中任意一项的方法。
示例31包括计算机系统或其他电子设备,其包括互连、与该互连耦合的示例1-13中任意一项所述的处理器以及与该互连耦合的至少一个组件,该至少一个组件是从下列各项中选出的:动态随机存取存储器(DRAM)、网络接口、图形芯片、无线通信芯片、全球移动通信系统(GSM)天线、相变存储器和视频相机。
示例32包括基本上如本文中所述的处理器或其他装置。
示例33包括用于执行基本上如本文中所述的任何方法的处理器或其他装置。
示例34包括处理器或其他装置,其包括用于执行基本上如本文中所述的任何方法的设备。
示例35包括用于执行基本上如本文中所述的任何线程暂停指令的处理器或其他装置。
示例36包括处理器或其他装置,其包括用于执行基本上如本文中所述的任何线程暂停指令的设备。
示例37包括计算机系统或其他电子设备,其包括处理器,该处理器具有用于对第一指令集中的指令进行解码的解码单元,并且具有一个或多个执行单元。该计算机系也包括存储设备,其耦合至处理器。该存储设备用于存储第一指令,其可以是基本上如本文中所公开的指令中的任何指令,并且将是第二指令集中的指令。该存储设备也用于存储指令,以便将第一指令转换为第一指令集中的一条或多条指令。当由处理器执行第一指令集中的该一条或多条指令时,其用于使该处理器执行如权利要求14-22中任意一项所述的方法。
Claims (25)
1.一种处理器,包括:
解码单元,用于对来自第一线程的线程暂停指令进行解码;以及
所述处理器的后端部,与所述解码单元耦合,所述处理器的所述后端部响应于所述线程暂停指令用于:
暂停对用于执行的所述第一线程的后续指令的处理,其中,所述后续指令按程序顺序在所述线程暂停指令之后发生;并且
保持所述处理器的所述后端部的至少多数排空所述第一线程中除所述线程暂停指令之外的指令长达预定的时间段,所述处理器的所述后端部的所述至少多数包括多个执行单元和指令队列单元。
2.如权利要求1所述的处理器,其特征在于,进一步包括计时器,其中,所述处理器响应于所述线程暂停指令在所述处理器的所述后端部的所述至少多数排空所述第一线程的指令之后,启用所述计时器。
3.如权利要求2所述的处理器,其特征在于,所述解码单元用于将所述线程暂停指令解码为控制信号,并且其中所述处理器的所述后端部响应于提交所述控制信号来启用所述计时器。
4.如权利要求1所述的处理器,其特征在于,进一步包括所述处理器的前端部,所述前端部包括所述解码单元,并且其中,所述处理器的所述后端部用于:当所述处理器的所述后端部的所述至少多数空闲时,响应于所述线程暂停指令,用信号通知所述处理器的所述前端部,所述处理器的所述前端部将不会接收到来自所述处理器的所述后端部的需要关注的事件。
5.如权利要求1所述的处理器,其特征在于,进一步包括存储器执行单元,并且其中,所述处理器的所述后端部用于:当所述处理器的所述后端部的所述至少多数空闲时,响应于所述线程暂停指令,用信号通知所述存储器执行单元,所述存储器执行单元将不会接收到来自所述处理器的所述后端部的需要关注的事件。
6.如权利要求1所述的处理器,其特征在于,所述处理器的所述后端部用于:响应于所述线程暂停指令,在所述处理器的所述后端部中的流水线级处,停止从所述线程暂停指令解码出的控制信号长达预定时间段。
7.如权利要求6所述的处理器,其特征在于,所述流水线级在所述解码单元和所述执行单元之间。
8.如权利要求7所述的处理器,其特征在于,所述流水线级包括分配单元。
9.如权利要求1到8中任意一项所述的处理器,其特征在于,所述解码单元用于解码所述线程暂停指令,所述线程暂停指令具有用于指示所述预定时间段的操作数。
10.如权利要求1到8中任意一项所述的处理器,其特征在于,所述解码单元用于将所述线程暂停指令解码为控制信号,所述控制信号用于确定将使用所述线程暂停指令的相对更简单的实现而不是所述处理器也能够执行的所述线程暂停指令的相对更详尽的实现。
11.如权利要求10所述的处理器,其特征在于,所述处理器能够进行虚拟化,其中执行所述线程暂停指令以使虚拟机退出,并且所述处理器能够进行事务性执行,其中执行所述线程暂停指令至少时不时地使所述事务性执行被中止,并且其中,所述控制信号用于:在确定所述处理器不是正在执行所述虚拟化和所述事务性执行之后,确定将使用所述相对更简单的实现。
12.如权利要求1-8中任意一项所述的处理器,其特征在于,所述线程暂停指令用于:在开始所述预定时间段之前,允许所述处理器的所述后端部提交所述第一线程中按所述程序顺序在所述线程暂停指令之前发生的所有先前的指令。
13.如权利要求1到8中任意一项所述的处理器,其特征在于,所述预定时间段在50个到150个时钟周期之间。
14.一种处理器中的方法,包括:
接收来自第一线程的线程暂停指令;
响应于所述线程暂停指令,暂停对用于执行的所述第一线程的后续指令的处理,所述后续指令按程序顺序在所述线程暂停指令之后发生;以及
响应于所述线程暂停指令,保持所述处理器的后端部的至少多个执行单元和指令队列单元排空所述第一线程中除所述线程暂停指令之外的指令长达固定持续时间。
15.如权利要求14所述的方法,其特征在于,还包括,确定对去往所述执行单元的时钟进行门控长达基于所述固定持续时间的时间段。
16.如权利要求14所述的方法,其特征在于,还包括:响应于所述线程暂停指令,在至少所述多个执行单元和所述指令队列单元排空所述第一线程中除所述线程暂停指令之外的指令之后,启动计时器。
17.如权利要求14所述的方法,其特征在于,进一步包括:响应于所述线程暂停指令,并且在至少所述执行单元和所述指令队列单元是空闲的之后,从所述处理器的所述后端部将信号传送到所述处理器的所述前端部以指示所述后端部将不发送需要所述前端部注意的事件。
18.如权利要求17所述的方法,其特征在于,还包括,所述处理器的所述前端部至少部分地基于所述信号,确定停止时钟。
19.如权利要求14所述的方法,其特征在于,还包括:响应于所述线程暂停指令,确定所述线程暂停指令的相对更简单的实现是足够的,而不是所述处理器也能够实现的所述线程暂停指令的相对更详尽的实现。
20.如权利要求19所述的方法,其特征在于,确定所述线程暂停指令的所述相对更简单的实现是足够的包括确定以下至少一种情况:所述处理器不是正在执行虚拟化;以及所述处理器不是正在执行事务性执行。
21.如权利要求14所述的方法,其特征在于,暂停包括:在所述处理器的所述后端部中,停止已从所述线程暂停指令解码出的控制信号达所述固定持续时间。
22.如权利要求14所述的方法,其特征在于,接收包括:接收所述线程暂停指令,所述线程暂停指令具有用于指示所述固定持续时间的操作数。
23.一种设备,包括用于执行如权利要求14-22中任意一项所述的方法的装置。
24.一种电子设备,包括:互连;如权利要求1-13中任意一项所述的处理器,与所述互连耦合;以及至少一个组件,与所述互连耦合,所述至少一个组件是从下列各项中选出的:动态随机存取存储器(DRAM)、网络接口、图形芯片、无线通信芯片、全球移动通信系统(GSM)天线、相变存储器和视频相机。
25.一种处理器,包括:
用于对来自第一线程的线程暂停指令进行解码的设备;
用于响应于所述线程暂停指令,暂停对用于执行的所述第一线程的后续指令的处理的后端设备,其中,所述后续指令按程序顺序在所述线程暂停指令之后发生;以及
用于响应于所述线程暂停指令,保持所述处理器的所述后端部的至少多数排空所述第一线程中除所述线程暂停指令之外的指令长达预定的时间段的后端设备,所述处理器的所述后端部的所述至少多数包括多个执行单元和指令队列单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/336,596 US10467011B2 (en) | 2014-07-21 | 2014-07-21 | Thread pause processors, methods, systems, and instructions |
US14/336,596 | 2014-07-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105279016A true CN105279016A (zh) | 2016-01-27 |
CN105279016B CN105279016B (zh) | 2019-06-28 |
Family
ID=55074644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510350735.1A Active CN105279016B (zh) | 2014-07-21 | 2015-06-23 | 线程暂停处理器、方法、系统及指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10467011B2 (zh) |
KR (1) | KR101847857B1 (zh) |
CN (1) | CN105279016B (zh) |
TW (1) | TWI544409B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407016A (zh) * | 2016-10-19 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种多线程争抢资源的模拟方法及装置 |
CN109791486A (zh) * | 2016-09-22 | 2019-05-21 | 英特尔公司 | 用于具有紧凑指令编码的指令的处理器、方法、系统和指令转换模块 |
CN111124496A (zh) * | 2019-12-25 | 2020-05-08 | 合肥中感微电子有限公司 | 一种多周期指令处理方法、处理器和电子设备 |
CN114138341A (zh) * | 2021-12-01 | 2022-03-04 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
CN115640169A (zh) * | 2022-12-22 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 保障主集群停止提供服务的方法、系统、设备和存储介质 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2618367C1 (ru) * | 2016-03-23 | 2017-05-03 | Андрей Сергеевич Моляков | Вычислительное устройство программно-аппаратного комплекса |
US10433025B2 (en) * | 2016-05-10 | 2019-10-01 | Jaunt Inc. | Virtual reality resource scheduling of process in a cloud-based virtual reality processing system |
TWI605416B (zh) * | 2016-10-25 | 2017-11-11 | 晨星半導體股份有限公司 | 影像處理裝置、影像處理方法及其非暫態電腦可讀取儲存媒體 |
CN108255516A (zh) * | 2016-12-29 | 2018-07-06 | 展讯通信(上海)有限公司 | 顺序同步多线程处理器及其指令执行控制方法、装置 |
US10176147B2 (en) * | 2017-03-07 | 2019-01-08 | Qualcomm Incorporated | Multi-processor core three-dimensional (3D) integrated circuits (ICs) (3DICs), and related methods |
US10303482B2 (en) * | 2017-03-07 | 2019-05-28 | Red Hat, Inc. | Dynamic processor frequency selection |
US10275254B2 (en) | 2017-03-08 | 2019-04-30 | International Business Machines Corporation | Spin loop delay instruction |
US11609791B2 (en) * | 2017-11-30 | 2023-03-21 | Advanced Micro Devices, Inc. | Precise suspend and resume of workloads in a processing unit |
US20200034146A1 (en) * | 2018-07-30 | 2020-01-30 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) * | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
CN111459638B (zh) * | 2020-04-01 | 2023-07-07 | 广东三维家信息科技有限公司 | 主线程等待时间确定方法及装置 |
TWI748513B (zh) * | 2020-06-12 | 2021-12-01 | 鴻海精密工業股份有限公司 | 資料處理方法、系統、電子裝置及存儲介質 |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US20220100504A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Shared data fabric processing client reset system and method |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050223253A1 (en) * | 2000-05-12 | 2005-10-06 | Pts Corporation | Methods and apparatus for power control in a scalable array of processor elements |
US20080059814A1 (en) * | 2006-08-31 | 2008-03-06 | Ati Technologies Inc. | Power source dependent program execution |
CN102346689A (zh) * | 2000-01-21 | 2012-02-08 | 英特尔公司 | 用于暂停处理器中执行过程的方法和装置 |
CN103207803A (zh) * | 2007-03-30 | 2013-07-17 | 英特尔公司 | 在虚拟机环境中检测自旋循环 |
US20130198499A1 (en) * | 2012-01-31 | 2013-08-01 | David Dice | System and Method for Mitigating the Impact of Branch Misprediction When Exiting Spin Loops |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100373331C (zh) | 1996-08-27 | 2008-03-05 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US6496925B1 (en) | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US6687838B2 (en) | 2000-12-07 | 2004-02-03 | Intel Corporation | Low-power processor hint, such as from a PAUSE instruction |
US7152169B2 (en) | 2002-11-29 | 2006-12-19 | Intel Corporation | Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state |
US8010969B2 (en) | 2005-06-13 | 2011-08-30 | Intel Corporation | Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers |
US7479181B2 (en) * | 2006-07-31 | 2009-01-20 | Hewlett-Packard Development Company, L.P. | Inkjet ink composition and method of making the same |
US8112570B2 (en) * | 2007-03-15 | 2012-02-07 | Broadcom Corporation | Pipelined buffer interconnect with trigger core controller |
US7774626B2 (en) | 2007-03-29 | 2010-08-10 | Intel Corporation | Method to control core duty cycles using low power modes |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
-
2014
- 2014-07-21 US US14/336,596 patent/US10467011B2/en active Active
-
2015
- 2015-06-15 TW TW104119283A patent/TWI544409B/zh active
- 2015-06-16 KR KR1020150085170A patent/KR101847857B1/ko active IP Right Grant
- 2015-06-23 CN CN201510350735.1A patent/CN105279016B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346689A (zh) * | 2000-01-21 | 2012-02-08 | 英特尔公司 | 用于暂停处理器中执行过程的方法和装置 |
US20050223253A1 (en) * | 2000-05-12 | 2005-10-06 | Pts Corporation | Methods and apparatus for power control in a scalable array of processor elements |
US20080059814A1 (en) * | 2006-08-31 | 2008-03-06 | Ati Technologies Inc. | Power source dependent program execution |
CN103207803A (zh) * | 2007-03-30 | 2013-07-17 | 英特尔公司 | 在虚拟机环境中检测自旋循环 |
US20130198499A1 (en) * | 2012-01-31 | 2013-08-01 | David Dice | System and Method for Mitigating the Impact of Branch Misprediction When Exiting Spin Loops |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109791486A (zh) * | 2016-09-22 | 2019-05-21 | 英特尔公司 | 用于具有紧凑指令编码的指令的处理器、方法、系统和指令转换模块 |
CN106407016A (zh) * | 2016-10-19 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种多线程争抢资源的模拟方法及装置 |
CN106407016B (zh) * | 2016-10-19 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 一种多线程争抢资源的模拟方法及装置 |
CN111124496A (zh) * | 2019-12-25 | 2020-05-08 | 合肥中感微电子有限公司 | 一种多周期指令处理方法、处理器和电子设备 |
CN114138341A (zh) * | 2021-12-01 | 2022-03-04 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
CN115640169A (zh) * | 2022-12-22 | 2023-01-24 | 苏州浪潮智能科技有限公司 | 保障主集群停止提供服务的方法、系统、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TWI544409B (zh) | 2016-08-01 |
KR20160011144A (ko) | 2016-01-29 |
US10467011B2 (en) | 2019-11-05 |
CN105279016B (zh) | 2019-06-28 |
KR101847857B1 (ko) | 2018-05-28 |
US20160019063A1 (en) | 2016-01-21 |
TW201610836A (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279016A (zh) | 线程暂停处理器、方法、系统及指令 | |
CN104951281B (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
CN104838355B (zh) | 用于在多线程计算机系统中提供高性能和公平的机制 | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
CN104603795B (zh) | 实现用户级线程的即时上下文切换的指令和微架构 | |
CN104781803B (zh) | 用于架构不同核的线程迁移支持 | |
CN104615411B (zh) | 控制寄存器对应于异质指令集架构处理器 | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
CN104798033B (zh) | 用于混合等待时间‑吞吐量处理器的装置和方法 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
US10437638B2 (en) | Method and apparatus for dynamically balancing task processing while maintaining task order | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
US9904553B2 (en) | Method and apparatus for implementing dynamic portbinding within a reservation station | |
TW201734758A (zh) | 使用硬體佇列裝置的多核心通訊加速 | |
CN107408036A (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
CN104969199B (zh) | 实施黑名单分页结构指示值的处理器、方法,以及系统 | |
CN105164650A (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
CN108701040A (zh) | 用户级别线程暂停的方法、设备、和指令 | |
CN104823172A (zh) | 实时指令跟踪处理器、方法以及系统 | |
CN104303142A (zh) | 使用索引阵列和有限状态机的分散 | |
US20210374848A1 (en) | Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement | |
CN108334458A (zh) | 存储器高效的末级高速缓存架构 | |
US11188341B2 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
CN104969178A (zh) | 用于实现便笺式存储器的装置和方法 |
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 |