用户级别线程暂停的方法、设备、和指令与流程

文档序号:31455643发布日期:2022-09-07 14:31阅读:98来源:国知局

1.本文描述的实施例一般涉及处理器。特别地,本文描述的实施例一般涉及暂停处理器中线程的执行。


背景技术:

2.软件线程通常通过对共享存储器位置的改变进行通信或同步。作为一个示例,当锁(lock)或信号量(semaphore)变得可用时,可以改变共享存储器位置。作为另一示例,当要由软件线程来执行的工作可用(例如,在工作队列中)时,可以改变共享存储器位置。
3.软件线程可使用来检测何时对共享存储器位置进行改变的一种可能方法是实现轮询循环,例如空闲循环、忙循环、忙等待循环、或诸如此类。在循环期间,软件线程可以重复执行指令以测试共享存储器位置是否已经改变。
附图说明
4.通过参考用于图示实施例的以下描述和附图,可以最好地理解本发明。在附图中:图1是在其中可以实现本发明的实施例的计算机系统的实施例的框图。
5.图2是适合于实施例的同时多线程化(smt)核的示例实施例的框图。
6.图3是执行用户级别设立监测器地址指令的方法的实施例、以及执行用户级别监测的访问暂停线程指令的方法的实施例的框流程图。
7.图4是具有c1处理器功率状态、c0.1处理器功率状态、和c0.2处理器功率状态的逻辑处理器的示例实施例的框图。
8.图5是执行用户级别监测的访问暂停线程指令的方法的第二实施例的框流程图,该方法包括使用监督系统软件施加的最大超时值。
9.图6是可操作以执行用户级别监测的访问暂停线程指令的实施例的处理器的实施例的框图。
10.图7是执行事务存储器事务内的事务存储器兼容的用户级别暂停线程指令以暂停第一用户级别线程而不中止事务存储器事务的方法的示例实施例的框流程图。
11.图8是执行事务存储器兼容的用户级别暂停线程指令的方法的第二实施例的框流程图。
12.图9a是图示有序流水线的实施例和寄存器重命名乱序发布/执行流水线的实施例的框图。
13.图9b是包括耦合到执行引擎单元的前端单元(并且两者都耦合到存储器单元)的处理器核的实施例的框图。
14.图10a是单个处理器核连同其到管芯上互连网络的连接以及连同其2级(l2)高速缓存的本地子集的实施例的框图。
15.图10b是图10a的处理器核的一部分的展开图的实施例的框图。
16.图11是可具有多于一个核、可具有集成存储器控制器、并且可具有集成图形的处
理器的实施例的框图。
17.图12是计算机架构的第一实施例的框图。
18.图13是计算机架构的第二实施例的框图。
19.图14是计算机架构的第三实施例的框图。
20.图15是计算机架构的第四实施例的框图。
21.图16是根据本发明的实施例的、使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
22.本文所公开的是用户级别暂停线程指令、用于执行指令的处理器、由处理器在处理或执行指令时执行的方法、以及结合一个或多个处理器以处理或执行指令的系统。在以下描述中,提出许多具体细节(例如具体指令操作、处理器配置、微架构细节、逻辑划分/集成决策、操作序列等)。然而,在没有这些具体细节的情况下也可实践实施例。在其它实例中,公知的电路、结构或技术尚未被详细示出以避免使本描述的理解模糊。
23.图1是在其中可以实现本发明的实施例的计算机系统100的实施例的框图。该系统包括至少一个处理器101。处理器101通过耦合机构108与存储器109耦合或以其它方式与存储器109进行通信。存储器可以包括相同或不同类型的一个或多个存储器装置。将处理器与存储器耦合的各种常规方式是合适的。例如,耦合机构可以包括一个或多个总线、中枢、存储器控制器、芯片集部件、或诸如此类、以及其各种组合。在各种实施例中,计算机系统可以表示桌上型计算机、膝上型计算机、笔记本计算机、平板计算机、上网本、智能电话、服务器、网络装置(例如,路由器、交换机等)、或者具有一个或多个处理器的其它类型的系统。
24.在一些实施例中,处理器101可以是通用处理器(例如使用在桌上型、膝上型或其它计算机中的类型的通用微处理器或中央处理单元(cpu))。备选地,处理器可以是专用处理器。适合的专用处理器的示例包括但不限于:网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(dsp)和控制器(例如微控制器)。处理器可具有任何各种复杂指令集计算(cisc)架构、简化指令集计算(risc)架构、超长指令字(vliw)架构、混合架构、其它类型的架构,或具有不同架构的组合(例如,不同核可具有不同架构)。
25.处理器101至少包括第一逻辑处理器102-1。处理器101可以可选地包括第一逻辑处理器102-1作为单个逻辑处理器,或者处理器可以可选地包括多个此类逻辑处理器。计算机系统还包括至少第二逻辑处理器102-2,并且可以可选地包括其它逻辑处理器。虚线用于示出第二逻辑处理器可以是处理器101的一部分,或者可以在处理器101的外部。作为示例,第二逻辑处理器可以可选地被包括在第二处理器(例如,第二管芯)上或在另一组件(例如,直接存储器存取(dma)装置)中。
26.合适类型的逻辑处理器的示例包括但不限于单线程核、硬件线程、线程单元、线程槽、具有专用上下文或架构状态存储装置和程序计数器的逻辑处理器、具有专用上下文或架构状态存储装置和程序计数器的逻辑处理器(在其上可以独立地调度软件)、和诸如此类。术语“核”常常用于指位于集成电路上的逻辑,其能够维持独立架构状态(例如,执行状态),并且其中架构状态与专用执行和某些其它专用资源相关联。相反,术语“硬件线程”常
常用于指位于集成电路上的逻辑,其能够维持独立架构状态,并且其中架构状态共享对执行和某些其它资源的访问。取决于在给定实现中哪些资源被共享和专用,术语“核”和“硬件线程”的此类使用之间的界限可能倾向于较不明显。然而,核、硬件线程和其它逻辑处理器通常被软件视为单独的逻辑处理器或处理器元件。通常,软件(例如,软件线程、处理器、工作负载、或诸如此类)可以在每个逻辑处理器上被调度并与每个逻辑处理器独立关联。
27.存储器可以存储一个或多个监督系统软件模块110,例如,一个或多个操作系统模块、一个或多个虚拟机监测器模块、一个或多个管理程序、或诸如此类。存储器还可以存储一个或多个用户级别应用模块111。此类用户级别应用模块的几个代表性示例是文字处理器应用模块、电子表格模块、电子邮件应用模块、互联网浏览器模块、网络应用模块、视频游戏应用模块、和诸如此类。本发明的范畴不限于任何已知类型的应用模块。在操作期间,监督系统软件模块可以在第一逻辑处理器上调度第一软件线程107-1,并在第二逻辑处理器上调度第二软件线程107-2。
28.在运行时,第一和第二软件线程107可操作以访问共享存储器区域115。如所示的,共享存储器区域可以包括第一共享存储器位置116-1直到第n共享存储器位置116-n,其中数量n可以表示适合于特定实现的任何合理数量。共享存储器位置也可以可选地由其它软件线程共享。在一些情况下,第一软件线程可能想要监测和检测第二软件线程(或另一软件线程)何时已写入到和/或修改这些存储器位置中的一个或多个。作为一个说明性示例,这可以是结合同步的情况。代表性地,不同的存储器位置可以表示锁、信号量、消费者-生产者邮箱、或诸如此类。当相关联的锁或信号量变得可用时,软件线程可以修改给定的存储器位置,并且第一软件线程可能想要能够监测存储器位置,使得它可以确定锁或信号量何时变得可用。作为另一个说明性示例,这可以是结合工作调度的情况。代表性地,不同的存储器位置可以表示工作队列、或用于指示工作在相关联的工作队列中的标志。当对于第一软件线程有工作要做时,第二软件线程(或另一软件线程)可以修改存储器位置,并且第一软件线程可能想要能够监测存储器位置,使得它可以确定何时存在要执行的可用工作。
29.第一软件线程107-1能够监测和检测存储器位置116中的给定存储器位置116何时已被修改的一种可能方式是执行空闲循环、忙循环、忙等待循环、或其它此类轮询循环。此类循环通常表示线程仅在通常紧凑的循环中旋转,重复执行指令以不断地检查或轮询是否已经发生了对存储器位置的修改。然而,至少对于某些实现,此类循环通常倾向于具有某些缺点。首先,此类循环通常倾向于在未执行任何实际工作或任何有意义的前向计算进程的情况下消耗功率。而且,此类循环通常倾向于占用处理器的资源,其否则可能潜在地由一个或多个其它线程使用(例如,在同时多线程化(smt)核的情况下)。另一种可能的方法是通过休眠(sleep)。然而,休眠通常倾向于比此类轮询循环更复杂(involved)且有更长的延迟(latency),因为它涉及过渡到操作系统并返回。例如,操作系统可以维持希望等待的线程的列表或等待队列。线程可以将其自己放在等待队列中,并且每当事件发生(例如,发生对存储器地址的写入)时要求操作系统将其唤醒。然而,此类休眠通常倾向于对于用户级别应用具有高开销和延迟,这部分由于需要让渡(yield)或过渡到操作系统或其它监督软件并返回(例如,执行系统调用指令以通过第一环形过渡来让渡到操作系统,并通过第二环形过渡从操作系统恢复)。这倾向于使用户级别代码的反应时间相对慢。对于非常短的等待时间,此类轮询循环可能不会过度成问题并且可以避免与让渡到操作系统以休眠相关联的高
延迟。相反,对于非常长的等待时间,与让渡到操作系统以休眠相关联的高延迟也可能不会过度成问题。然而,特别是对于中等持续期的等待时间,此类轮询循环或让渡到操作系统以休眠,这两者通常倾向于更成问题。因此,备选方法可以提供某些潜在的优点,特别是对于中间持续期的时间段。
30.再次参考图1,第一逻辑处理器102-1具有指令集103。在一些实施例中,指令集可以包括可选的用户级别设立监测器地址指令104的实施例、可选的用户级别监测的访问暂停线程指令105的实施例、以及可选的事务存储器兼容的用户级别暂停线程指令106的实施例。在一些实施例中,指令集可以包括这些指令中的仅任一个指令那么少的指令。指令104、105、106是用户级别指令,其可以以用户级别特权以及以更高特权级别(例如,通过监督系统软件)来执行。在一些实施例中,用户级别监测的访问暂停线程指令105可以允许用户级别软件(例如,用户级别应用模块111之一)暂停线程,并使用监测器机制(其已通过用户级别设立监测器地址指令104来建立)以便知道何时已访问了共享存储器位置115之一。
31.有利地,可能不需要执行空闲、忙碌、或其它循环,或者甚至不需要执行任何后续指令。此外,由于用户级别监测的访问暂停线程指令是用户级别指令,其允许以用户级别特权(以及以更高特权级别)来执行,因此不需要或不要求用户级别应用(例如,用户级别应用模块111之一)让渡或以其它方式过渡到监督系统软件(例如,监督系统软件模块110之一)以便执行指令。相反,可以在进入而不离开用户级别特权时执行指令,而无需执行到更高级别的特权的环形过渡或其它过渡。此外,这常常可通过允许用户级别线程更快地暂停和恢复而允许对用户级别线程的更好响应性,例如,来处置像如“你有邮件”或“去获取”的指示。在一个方面,尽管实施例当然不限于此,但是以用户级别来执行指令的能力可有助于允许较低的延迟,这可例如由与逻辑处理器在同一芯片或管芯上的管芯上硬件加速器连同数据的修改一起使用。此类管芯上硬件加速器通常具有低延迟,并且常常希望用户级别线程驱动或以其它方式与它们进行接口,因为通过特权系统软件行进(trip)并返回是更长延迟的。
32.图2是适合于实施例的同时多线程化(smt)核220的示例实施例的框图。smt核可以包括多个硬件线程,其可以各自表示逻辑处理器或处理器元件。每个逻辑处理器可操作以执行不同的软件线程。以此方式,可以同时在smt核上执行多个不同的软件线程。
33.核220通过总线和/或存储器控制器223与总线或其它互连221耦合。总线/存储器控制器可以提供指令203以用于对核的前端224的执行。这些指令可以包括核的指令集(例如,指令集103)的指令,有时包括以下中的任何一个或多个:用户级别设立监测器地址指令105、用户级别监测的访问暂停线程指令106、以及事务存储器兼容的用户级别暂停线程指令107。前端可以包括指令获取单元和解码单元。指令获取单元可以根据多个对应的复制的指令指针(ip)226来获取对于由核执行的多个线程的指令。可以按线程来复制指令指针以支持多个线程。解码单元可以解码对于每个线程的所接收指令。
34.解码的指令或控制信号可以从前端提供给第一组线程可分区资源225以用于进一步处理。作为示例,第一组线程可分区资源可以包括解码的指令队列。线程可分区资源可以包括逻辑上分离的分区,其在多个线程在核内是活动的时可以各自专用于特定线程。在一些实施例中,每个单独的分区可以仅包含来自该分区专用于的对应线程的指令。如下面将进一步解释的,在一些备选状态中,当核处于单线程模式时,第一组线程可分区资源的分区
可以可选地退火(anneal)或以其它方式组合以形成专用于一个单线程(或任何剩余的执行线程)的单个大分区。可以根据哪些线程在核中活动或暂停来执行可分区资源的分区和组合。
35.核还包括多组复制的状态存储装置227。例如,对于在核上活动的每个线程和/或对于核的每个硬件线程,可以存在一组复制的状态存储装置。复制的状态存储装置可以包括例如架构寄存器和用于存储状态或上下文的其它存储装置。每组复制的状态存储装置可操作以存储足以维持对应硬件线程或逻辑处理器的上下文或架构状态的状态。通过复制状态存储装置,多个线程可以基本上在不竞争状态存储装置的情况下执行。另外,可以对于每个线程复制相关联的寄存器分配逻辑。复制的状态相关逻辑可以与适当的资源分区一起操作以使进入的指令准备执行。
36.第一组线程可分区资源225可以向共享资源228提供解码的指令。例如,第一组可分区资源可以通过在线程之间交替(例如,以公平或通常交替的方式)将来自多个线程的指令馈送到共享资源,这尝试在每个活动线程上提供持续的进程。例如,线程选择多路复用逻辑可以在分区的资源之间交替,以提供对每个活动线程的合理访问。共享资源可以对多个线程的指令操作。作为示例,共享资源可以包括调度器、执行单元、以及流水线的寄存器读取和写入部分中的寄存器池。
37.第二组线程可分区资源229可以与共享资源228的输出耦合。第二组线程可分区资源可以包括引退或提交资源,诸如例如,作为重排序缓冲器或诸如此类。第二组线程可分区资源可以提交来自每个线程的指令并更新线程的适当架构状态。
38.要领会,这只是合适的smt核的一个说明性示例。在其它实施例中,可以不同地布置共享和线程可分区资源。例如,在共享资源的两端可能没有可分区资源。另外,在其它实施例中,可分区资源可能未被严格分区,而是可以允许一些指令跨分区和/或可以允许分区取决于诸如与该分区执行的特定线程和正在执行的线程总数量而在大小方面变化。另外,可以将资源的不同混合指定为共享、复制和分区的资源。
39.smt核的一个潜在优点是它可以通过允许在单个核上执行多个软件线程而有助于改善的处理器利用。当核具有高度并行的架构时尤其如此,使得否则有时可能倾向于难以从单个线程中提取足够的并行性以利用所有执行单元。然而,通过smt,可以在不同的执行资源中同时执行多个线程以尝试更好地利用那些资源。此外,此类smt核可能倾向于对遇到高延迟时延或常常等待事件发生的应用有帮助。当一个线程正在等待高延迟任务完成或等待特定事件时,可以处理另外的线程。
40.图3是执行用户级别设立监测器地址指令的方法334的实施例、以及执行用户级别监测的访问暂停线程指令的方法340的实施例的框流程图。在一些实施例中,这两个指令可在等待对存储器位置的监测的写入/存储访问时可一起用于暂停线程。备选地,单个指令可以组合两个指令的操作。在各种实施例中,所述方法可以由处理器、指令处理设备、数字逻辑装置、或集成电路来执行。
41.首先参考执行用户级别设立监测器地址指令的方法334。该方法包括在框335从第一用户级别线程接收用户级别设立监测器地址指令。在各种方面,可以在处理器或其一部分(例如,指令获取单元、解码单元、总线接口单元等)处接收指令。在各种方面,可以从处理器外和/或管芯外源(例如,从存储器、互连等)或从处理器上和/或管芯上源(例如,从指令
高速缓存、指令队列等)接收指令。
42.在一些实施例中,用户级别设立监测器地址指令可以显式指定(例如,通过一个或多个字段或一组比特)或以其它方式指示(例如,通过操作码来隐式指示)存储器地址要被监测(例如,针对对存储器地址的写入/存储访问来监测)。指令可以“指示”监测器地址,因为它可以运送足够的信息以允许处理器确定要被监测的地址(可能通过使用一个或多个寄存器(例如,段寄存器等)中的信息和/或其它信息)。在一个方面,指令可以指示具有将针对访问而被监测的对应物理地址(例如,基于地址转化)的线性地址。作为其它示例,所监测的地址可以以虚拟地址格式来给出、或者可以被指示为相对地址、或者可以以其它已知或方便的地址指定方式来指定。监测器地址可以指示用于监测的存储器的各种单元。例如,在一些实施例中,存储器地址可以指示高速缓存行。备选地,存储器地址可以指示高速缓存行的一部分、存储器的特定/选定大小部分或单元,其可以承载与不同处理器的高速缓存行大小的不同关系、或单个地址。因此,监测器地址可以指示包括由操作数所指定的数据(和更多数据)的单元,或者可以具体指示数据的期望单元的地址。在一些实施例中,所指示的存储器地址或范围可以是反写(write-back)高速缓存类型。
43.在一些情况下,指令可以可选地具有源操作数指定字段以指定要存储用于指示要被监测的存储器地址的信息的寄存器(例如,通用寄存器)或另一存储位置。在其它情况下,要存储用于指示要被监测的存储器地址的信息的寄存器(例如,通用寄存器)或另一存储位置可以可选地隐含于指令(例如,隐含于指令的操作码)。例如,处理器可以基于操作码的识别而隐式地理解:寄存器或另一存储位置被用于存储用于指示存储器地址的信息,即使该指令没有显式地指定或显式地标识该寄存器或另一存储位置。在执行用户级别设立监测器地址指令之前,软件可以将指示要被监测的存储器地址的信息存储在寄存器或另一存储位置中。
44.在框336,处理器的地址监测器逻辑可被设立或配置成响应于和/或作为用户级别设立监测器地址指令的结果来监测对由用户级别设立监测器地址指令所指示的存储器地址的访问。在一些实施例中,这可以包括向地址监测器逻辑通知要被监测的存储器地址。例如,要被监测的存储器地址可被存储在地址监测器逻辑内和/或对其可访问的非架构寄存器或另一存储位置中。在一些实施例中,这还可以可选地包括增加对所监测的地址的写入/存储的可观察性(例如,以使高速缓存代理进行写入操作,其将影响对地址监测器逻辑可见的、存储在地址监测器逻辑的信息)。在一些实施例中,将地址监测器逻辑设立或配置成监测对存储器地址的访问还可以包括接通、激活、或启用地址监测器逻辑以监测对存储器地址的访问(例如,写入访问)。
45.在一些实施例中,用于监测的地址监测器逻辑可以主要包括或仅包括处理器的管芯上逻辑。例如,地址监测器逻辑可以完全或至少主要在管芯上硬件(例如,集成电路、晶体管或其它电路元件等)、管芯上固件(例如,rom、eprom、闪速存储器、或其它持久性或非易失性存储器和其中存储的微代码、微指令、或其它低级指令)、或其组合。在其它实施例中,地址监测器逻辑可以包括可选地/潜在地具有某些软件的管芯上硬件和/或管芯上固件。地址监测器逻辑在本文中也可以简称为监测器、地址监测器、或监测器单元。
46.在框337,所设立或配置的地址监测器逻辑可以监测对所指示的存储器地址的访问。一旦被激活或启用,地址监测器逻辑可以开始与处理器中的其它操作并行地连续操作
以监测此类访问。地址监测器逻辑可以包括比较逻辑,其用于将要被监测的存储器地址与(例如,从总线和/或存储器控制器接收的)总线周期信息进行比较。可以从处理器的内部和/或外部总线获得存储器访问信息。在一些实施例中,可以比较物理地址。例如,由指令所指示的线性或其它逻辑地址可以由地址转化逻辑(例如,转化后备缓冲器(tlb)、页未命中处置器、或诸如此类)来转化以获得物理地址。在此类实施例中,地址监测器逻辑可以监视指示对该物理地址的实际或潜在写入的任何总线周期。此类循环可以是显式写入周期的形式和/或可以是由尝试取得可高速缓存行的独占所有权的另一代理所进行的对所有权或无效循环的读取,使得它可以在没有外部总线事务的情况下写入到该行。在读取监测器地址的情况下,可以激活一致性相关逻辑并且其可以断言信号(例如,hit#信号)以帮助防止另一代理得到所有权,这将允许将来的写入而没有一致性广播。如果检测到对所监测的存储器地址(例如,相关联的高速缓存行或地址范围)的访问,则该方法可前进到框338。否则,地址监测器逻辑可以继续监测尝试的访问,直到它被停用。
47.在框338处,地址监测器逻辑和/或处理器可以指示已经检测到对所监测的地址的尝试的写入/存储访问。在不同实施例中可以以不同方式给出此指示。在各种实施例中,可以通过设置或否则通过修改比特、在寄存器或存储器位置中存储或修改值、传送或断言信号(例如,写入检测信号)、对计数器进行递增、或诸如此类来给出此指示。在一些实施例中,此指示可以表示另一逻辑处理器已经修改了共享存储器位置(例如,指示锁或信号量可用、指示队列中要执行的工作的可用性等)。如下面将进一步解释的,在一些实施例中,此指示可用于恢复执行暂停的线程。
48.再次参考图3,接下来将描述执行用户级别监测的访问暂停线程指令的方法340。在框341,可以接收用户级别监测的访问暂停线程指令。在一些实施例中,可以从相同的第一用户级别线程(例如,在框335处从其接收了用户级别设立监测器地址指令)接收用户级别监测的访问暂停线程指令。
49.在一些实施例中,用户级别监测的访问暂停线程指令可以可选地指定或以其它方式指示超时值(例如,作为源操作数)。在未事先检测到对所监测的地址和/或其它恢复线程事件的情况下,超时值可以表示将处于暂停状态的第一用户级别线程的极限或最大值,如由用户级别监测的访问暂停线程指令所指示的。超时值可以以各种不同的方式来表达,诸如例如,计数器将递增升至的值、计数器将递减降至的值、计数器将从其递减到零的值、计时器将计数升至的值、计时器将计数降至的值、计时器将从其计数到零的值、全局时钟或其它时钟时间持续期、最终全局时钟或其它时钟时间、多个处理器时钟周期、或诸如此类。为清楚起见,超时值或时间可以多样地表示时间的增量、时间的持续期、或实际终止时间(例如,为了说明差异,在时间8:01:32:32恢复,或者在从现在开始的1/10000秒后恢复)。
50.超时值可以表示用户级别值(例如,由用户级别应用和/或用户级别特权提供)。程序员和/或用户级别应用可以取决于暂停应该是多长时间来选择超时值。在一些实施例中,指令可以具有用于指定或以其它方式指示超时值的比特或字段。作为一个示例,指令可以具有4比特、6比特、8比特或其它比特长度立即以指定超时值。在其它实施例中,指令可以具有用于指示将存储用于指定或以其它方式指示超时值的信息的寄存器或另一存储位置的比特或字段。备选地,此类寄存器或另一存储位置可以可选地隐含于指令(例如,隐含于其操作码)。备选地,固定的用户级别超时值可以可选地用于指令(例如,对操作码固定和/或
隐含于操作码)。
51.在一些实施例中,用户级别监测的访问暂停线程指令可以指定或以其它方式指示在第一用户级别线程被暂停时相关联逻辑处理器将被过渡成的、指令所允许的可选多个可能备选状态中的给定一个。在一些实施例中,用户级别监测的访问暂停线程指令的操作码可以可选地允许此类多个可能备选状态中的任何一个,并且指令的另一非操作码部分可以指示多个可能备选状态中的一个。备选地,在其它实施例中,不同的操作码可以可选地用于不同的状态。
52.在不同实施例中,指令可以以不同方式指定或以其它方式指示备选状态。在一些实施例中,指令可具有一个或多个比特或字段,其可具有用于指定、选择、或以其它方式指示多个可能备选状态中的给定一个的不同值。作为一个说明性示例,指令的单个比特可具有用于指示第一备选状态的第一值(例如,被设置为二进制一)、或用于指示第二不同备选状态的第二不同值(例如,被清零为二进制零)。备选地,可以可选地使用两个或更多个比特来在三个或更多个不同的可能备选状态之间进行选择。在其它实施例中,指令可以具有用于指示将存储用于指定、选择、或以其它方式指示两个或更多个可能备选状态中的给定一个的信息的寄存器或另一存储位置的比特或字段。备选地,此类寄存器或另一存储位置可以可选地隐含于指令(例如,隐含于其操作码)。在仍有的其它实施例中,由指令所指示的超时值的量值其本身可用于指示多个不同可能备选状态中的给定一个。作为一个说明性示例,小于阈值或预定值的超时值的量值可指示第一备选状态,或者大于阈值或预定值的超时值的量值可指示第二不同备选状态。可以通过使用两个或更多个不同的阈值或预定值来类似地实现三个或更多个不同的状态。
53.允许指令指示多个可能备选状态中的给定一个可有助于允许程序员和/或用户级别软件指示用于恢复执行的延迟应是多长时间和/或在线程被暂停时应使用多么积极的(aggressive)功率节约状态的偏好,但这不是必需的。在一些实施例中,多个可能备选状态可以包括逻辑处理器相对较长的恢复执行延迟状态(例如,睡眠状态(nap state))、以及逻辑处理器相对较短的恢复执行延迟状态(例如,较轻的睡眠状态)。如本文所用的,“较长”和“较短”被用作相对术语(即,相对于彼此),而不是绝对术语。而且,“较轻睡眠”状态中的“较轻”意味着它相对于睡眠较轻。在一些实施例中,相对较长的恢复执行延迟状态(例如,睡眠状态)也可具有相对更积极的功率节约措施,并且相对较短的恢复执行延迟状态(例如,较轻的睡眠状态)可具有相对更不积极的功率节约措施。再次,此上下文中的“更”和“更不”在本文中用作相对术语(即,相对于彼此),而不是绝对术语。如果期望的话,多个状态可以可选地包括三个或更多个不同的状态,其各自具有不同的相对恢复执行延迟和/或功率节约积极性的级别。
54.在一些实施例中,用户级别监测的访问线程暂停指令的一个或多个可能/允许的备选状态中的至少一个(或在一些实施例中可选地是全部)可以具有小于或至少不长于如由当前版本的高级配置&功率接口(acpi)所定义的c1或停止处理器功率状态的恢复执行延迟的恢复执行延迟。来自acpi的c1或停止处理器功率状态的恢复执行延迟有时被说是“基本上即时”的,尽管实际上它通常花大约一千个时钟周期。如本文所使用的,“c1状态”和“停止处理器功率状态”是指由acpi所定义的那些。代表性地,由于指令是用户级别指令,因此在一些情况下,如果能允许(或者在一些实施例中仅能允许)用户级别代码具有短于或至少
不长于c1或停止处理器功率状态的恢复执行延迟的恢复执行延迟,则这可能是有用的。作为一个可能的示例,监督系统软件可能不希望用户级别代码能够自主地进入与c1或停止处理器功率状态一样深的备选状态,使得监督系统软件可以对平台功率管理具有更多控制。作为一个可能的原因,如果允许用户级别代码自主地进入c1或停止处理器功率状态或更深的休眠状态,则监督系统软件可用于测量在不同c状态中花费的时间量的性能监测计数器和/或另一方法可能潜在地是不准确的。
55.在一些实施例中,指令可以可选地允许第一备选状态(例如,较轻的睡眠状态),其可以采用acpi c状态符号来表示为c0.1状态。在一些实施例中,c0.1状态可以具有不长于acpi的c1或停止处理器功率状态的恢复执行延迟的大约一半(例如,不多于大约五百个时钟周期)的恢复执行延迟。在各种实施例中,c0.1状态的恢复执行延迟可以不多于c1或停止处理器功率状态的大约三分之一恢复执行延迟(例如,不多于大约三百三十三个时钟周期)、不多于c1或停止处理器功率状态的大约四分之一恢复执行延迟(例如,不多于大约二百五十个时钟周期)、不多于c1或停止处理器功率状态的大约五分之一恢复执行延迟(例如,不多于大约二百个时钟周期)、不多于c1或停止处理器功率状态的大约八分之一恢复执行延迟(例如,不多于大约一百二十五个时钟周期),或不多于c1或停止处理器功率状态的大约十分之一恢复执行延迟(例如,不多于大约一百个时钟周期)。在一些实施例中,指令还可以可选地允许第二备选状态(例如,睡眠状态),其可以采用acpi c状态符号来表示为c0.2状态。在一些实施例中,c0.2状态可具有略短于或至少不长于c1或停止处理器功率状态的恢复执行延迟(例如,不大于相当于大约一千个时钟周期)的恢复执行延迟。
56.在一些实施例中,通过允许用户级别指令仅具有不显著多于前述c0.2状态的恢复执行延迟的恢复执行延迟,它可以保留仅监督系统软件可以进入与c1或停止处理器功率状态一样深的休眠状态的限制。在一些实施例中,监督系统软件可用于测量在不同c状态中花费的时间量的性能监测计数器和/或另一方法可潜在地将在c0.1或c0.2中花费的时间视为在acpi的c0或活动状态中花费的时间。换句话说,即使c0.2状态可能潜在地具有与c1或停止处理器功率状态类似的恢复延迟和/或类似的功率节省,监督系统软件也可将其视为活动状态,这对c1或停止状态将并非如此。
57.再次参考图3,在一些实施例中,在框342处,处理器可以可选地执行是否激活地址监测器逻辑的初始确定。这可以可选地在暂停执行第一用户级别线程之前完成。作为示例,当响应于不同指令而执行设立地址监测器逻辑时,这可以有助于确保实际设立并激活地址监测器逻辑,其可以有助于避免其中第一线程可能因为地址监测器逻辑未实际激活而比期望暂停更久的潜在状况。但是,这是可选的而不是必需的。如果确定是地址监测器逻辑被激活(即,“是”是确定),则该方法可前进到框343。否则,如果地址监测器逻辑未被激活(即,“否”是确定),则该方法可前进到框346。
58.在框343,响应于用户级别监测的访问暂停线程指令(例如,响应于正被解码的指令),可以暂停执行第一用户级别线程并且可以将在其上曾运行第一用户级别线程的逻辑处理器过渡到所指示的备选状态。如本文所使用的,暂停执行线程包括暂时终止执行线程的附加指令直到线程被恢复为止。在一些实施例中,其中逻辑处理器被过渡到所指示的备选状态的方式可以基于和/或取决于由用户级别监测的访问暂停线程指令所指示的备选状态。例如,在一些实施例中,在指示相对较短的恢复执行延迟状态(例如,较轻的睡眠状态)
时所采取以过渡逻辑处理器(例如,结合释放处理器资源以供另一线程使用)的动作集合可能与在指示相对较长的恢复执行延迟状态(例如,睡眠状态)时所采取的动作集合在至少一些方式上是不同的。
59.例如,在一些实施例中,先前最初分配给第一用户级别线程(例如,在第一smt硬件线程上运行)的一组或多组可分区资源可以在指示相对较短的恢复执行延迟状态(例如,较轻的睡眠状态)时不被融合(fuse)或退火以供第二软件线程使用(在相同核的第二smt硬件线程上运行),但是这些一组或多组可分区资源可以在指示相对较长的恢复执行延迟状态(例如,睡眠状态)时被融合或退火以供第二软件线程使用。例如,当进入相对较短的恢复执行延迟状态时,可以暂停第一用户级别线程,但是可以保留其可分区资源中相对较多的可分区资源。吞吐量仍然可以增强,因为在第一用户级别线程被暂停时,共享资源可以由其它线程独占使用。相反,当进入相对较长的恢复执行延迟状态时,可以暂停第一用户级别线程,并且在其暂停时还可以放弃其先前专用于第一用户级别线程的可分区资源中相对较多的可分区资源(例如,针对图2所讨论的任何可分区资源)。这可以允许其它线程使用这些资源,其可以有助于增加这些其它线程的吞吐量。然而,放弃这些资源可能以与融合/组合这些可分区资源相关联的一些增加的恢复执行延迟为代价。因此,对于相对较长的预期恢复执行延迟,此类可分区资源可以被融合/组合,但是对于相对较短的预期恢复执行延迟,不能这么做或者至少不是那么多。这只是一个说明性示例。在其它实施例中,可以以其它方式在微架构上不同地看待所述两种状态。例如,在另一个实施例中,在较短的恢复执行延迟状态(例如,较轻的睡眠状态或c0.1状态)中,时钟可不被终止或门限于至少一些硬件资源,而在较长的恢复执行延迟状态(例如,睡眠状态或c0.2状态)中,时钟可被停止或门限于这些硬件资源。
60.上面针对框343讨论了处理器响应于指令可以暂停执行第一用户级别线程,并且将逻辑处理器过渡为所指示的备选状态。要领会,此讨论在一些实施例中涵盖了处理器可以可选地首先确定或确保满足一个或多个条件的可能性。作为示例,这些条件可能与处理器将是否能够恢复执行、和/或检测恢复线程执行事件、和/或不期望允许逻辑处理器进入所指示的备选状态的其它条件有关。用于特定实现的特定条件可能部分由于模型特定和/或微架构设计。作为一个示例,这些条件可以确定处理器当前是否不具有对于可靠地检测是否正对将需要被监测的地址进行访问而所需的资源。在一些实施例中,如果不满足此类条件,则处理器可以可选地决定暂停用户级别线程的执行并将逻辑处理器过渡为与所指示的备选状态不同的备选状态,或者可以决定根本不暂停用户级别线程的执行。因此,响应于指令而暂停用户级别线程的执行并将逻辑处理器过渡为所指示的备选状态涵盖根据正满足的一个或多个条件来调整它。
61.在框344和345,可以做出是否恢复执行第一用户级别线程的确定。具体地,在框344,可以做出是否已经检测到对所监测的存储器地址(例如,由用户级别设立监测器地址指令所指示的存储器地址)的访问的指示的确定。例如,在一些实施例中,此确定可以与在框338处确定地址监测器逻辑是否已经指示已经检测到对所监测的地址的访问相关联。在各种实施例中,可以通过确定比特的值、寄存器中的值、或存储器位置中的值来做出此类确定,其指示是否已经检测到对所监测的地址的访问。在仍有的其它实施例中,可以通过确定是否已经传送或断言指示已经检测到对所监测的地址的访问的信号来做出此类确定。在一
些实施例中,确定已经检测到对所监测的存储器位置的访问的指示可以表示确定另一逻辑处理器已经修改了存储器地址处的共享存储器位置(例如,指示锁或信号量可用、指示队列中要执行的工作的可用性、或诸如此类)。注意,不需要为了恢复第一用户级别线程而执行附加指令。相反,第一用户级别线程可以保持暂停,并且处理器(例如,所启用的地址监测器逻辑以及线程暂停和恢复逻辑)可以自主地监测和检测对所监测的存储器位置的存储器访问并且促使第一用户级别线程的恢复而无需执行任何附加指令。如果已经检测到对所监测的存储器地址的访问的指示(即,“是”是框344处的确定),则该方法可以前进到框346。否则,尚未检测到对所监测的存储器地址的访问的指示(即,“否”是框344处的确定),该方法可前进到框345。
62.在框345处,可以可选地做出由用户级别监测的访问暂停线程指令指示的用户级别超时值是否已经过期的确定。如先前所提及,此超时值的使用是可选的而非必需的。超时值可以表示第一用户级别线程保持在所暂停的执行状态的最大值,如由用户级别监测的访问暂停线程指令所指示的。可以在不同实施例中以不同方式做出此确定。例如,在各种实施例中,这可以包括确定大约在第一用户级别线程被暂停的时间起始的计数器是否已递增升至超时值、或者从超时值起始已递减降至零或停止值,确定大约从第一用户级别线程被暂停的时间以来经过的时间段是否等于或大于超时值,确定大约自第一用户级别线程被暂停的时间以来是否已经发生超时值数量的时钟周期,或诸如此类。如果超时值已经过期(即,“是”是框345处的确定),则该方法可前进到框346。否则,如果超时值尚未过期(即,“否”是框345处的确定),则该方法可以重新访问框344。
63.在框346处,可以从逻辑处理器先前过渡为的所指示的备选状态恢复(例如,第一用户级别线程的)执行。例如,如果在框344-345之一处做出了“是”确定,则第一用户级别线程的执行可以在用户级别监测的访问暂停线程指令之后的第一用户级别线程的下一指令继续,或者如果检测到了应由特权软件来处置的任何中断或某一其它事件(未示出),则执行可以转移到处置器。
64.在一些实施例中,通过其可以恢复执行的延迟可以取决于特定指示的备选状态。例如,其中可以从所指示的第一备选状态恢复执行的方式可以基于和/或取决于特定指示的备选状态以及需要执行什么操作以将逻辑处理器过渡回到能够执行状态。常常,此恢复可以基本上是在框343处将逻辑处理器过渡到所指示的备选状态所采取的动作的逆转。例如,在一些实施例中,当从相对较短的恢复执行延迟状态(例如,较轻的睡眠状态)恢复执行时,可能不需要组合/融合一组或多组可分区资源(例如,其可以保持分区并分配给第一用户级别线程),而当从相对较长的恢复执行延迟状态(例如,睡眠状态)恢复执行时,可以重新分区和重新分配先前融合/退火的资源。
65.在一些实施例中,所指示的备选状态比acpi的c1或停止处理器功率状态可以具有更低的恢复执行延迟。在此类实施例中,可以从逻辑处理器处于所指示的备选状态时通过延迟来恢复执行,所述延迟将小于在逻辑处理器处于acpi的c1或停止处理器功率状态时可以恢复执行线程的延迟的一半、小于三分之一、小于四分之一、小于五分之一、小于八分之一、小于十分之一、或甚至更少。在一些实施例中,可选地,还可以通过恢复执行延迟来可选地支持一个或多个其它可能/允许的备选状态,所述恢复执行延迟也小于和/或至少不大于acpi的c1或停止处理器功率状态的恢复执行延迟。提供两个或更多个备选状态可以有助于
为程序员或用户级别软件提供权衡选项,以在相对较长的恢复执行延迟状态(其倾向于通过允许更多地放弃资源来改善另一smt线程的性能)与相对较短的恢复执行延迟状态(其通常可能不允许另一smt线程的性能改进,但其通常允许第一用户级别线程更快地恢复)之间进行选择。
66.已经以相对基本的形式示出并描述了方法334和340,但是可以可选地将操作添加到所述方法和/或从所述方法移除。例如,如果期望的话,可以可选地修改方法340以移除处理器或其它设备结合预形成用户级别监测的访问暂停线程指令而允许多个备选可能状态的方面,并且可选地移除用户级别监测的访问暂停线程指令指示这些多个可能备选状态之一的方面。当然,可以可选地使用单个固定的备选状态(例如,较轻的睡眠状态)。作为另一示例,在其它实施例中,可以可选地修改方法340以包括施加监督系统软件和/或特权级别最大时间或超时值(例如,如下面将结合图5进一步描述的)。作为仍有的另一示例,尽管为了简单性而未示出,但在一些实施例中,方法340可以可选地允许一个或多个其它类型的事件促使第一用户级别线程被恢复,尽管这不是必需的。例如,可以可选地添加类似于框344和345的一个或多个附加确定框。在各种实施例中,这些确定框可以确定是否已经检测到非屏蔽中断(nmi)、系统管理中断(smi)、调试异常、机器检查异常、启动信号、复位信号、某些类型的外部中断(如果它们将被输送到软件),改变地址转化的事件、或诸如此类,并且如果是的话,则促使第一用户级别线程的执行恢复。此外,虽然所述方法的流程图图示示出了特定的操作顺序,但该顺序只是示例而不是必需的。备选实施例可以以不同顺序来执行操作中的某些操作、组合某些操作、重叠某些操作等。例如,框344和345处的确定可以可选地以不同顺序和/或同时执行,等等。
67.在以上描述中,已经示出并描述了响应于两个不同指令(例如,两个不同操作码)的方法。使用两个不同指令来设立地址监测器逻辑并暂停线程可能倾向于为程序员提供增加的灵活性和/或倾向于允许更高效的编程。备选地,在其它实施例中,可以替代地响应于单个指令(例如,单个操作码)和/或作为单个指令的结果来执行前述操作。
68.图4是具有一组合适的备选功率状态的示例实施例的逻辑处理器402的示例实施例的框图。逻辑处理器具有或支持c1或停止处理器功率状态447。逻辑处理器可以可选地具有或支持可选的c0.2处理器功率状态448。逻辑处理器具有或支持c0.1处理器功率状态449。如通常在参考450所示的,c0.1功率状态的恢复执行延迟可以小于c0.2处理器功率状态的恢复执行延迟,并且c0.2功率状态的恢复执行延迟可以小于、类似于、或约等于但基本上不大于c1或停止处理器功率状态的恢复执行延迟。
69.图5是执行用户级别监测的访问暂停线程指令的方法540的第二实施例的框流程图,该方法包括使用监督系统软件施加的最大超时值。在各种实施例中,该方法可以由处理器、指令处理设备、数字逻辑装置、或集成电路来执行。方法540与图3的方法340具有某些类似性。为了避免使描述难以理解,将主要描述图5的方法的不同和/或附加方面,而不重复关于图3的方法的所有可选类似或共同的方面和细节。然而,要领会,除非被陈述或以其它方式明显显而易见,否则图3的方法的先前描述的方面和细节以及为此提及的变化也可以可选地应用于图5的方法。主要地,图5的方法的不同之处在于,它进一步添加使用监督系统软件施加的最大超时值(例如,如结合框560所讨论的),并且允许多个备选状态是可选的。可以结合执行图3的用户级别设立监测器地址指令的先前所描述方法334来执行图5的方法,
但是本发明的范畴不限于此方面。
70.参考图5,在框541,可以从第一用户级别线程接收用户级别监测的访问暂停线程指令。在一些实施例中,指令可以可选地指定或以其它方式指示用户级别超时值(例如,可选地如先前结合图3所描述的)。在一些实施例中,指令可以指定或以其它方式指示在第一用户级别线程被暂停时逻辑处理器将被过渡成的、指令所允许的可选多个可能备选状态中的给定一个(例如,可选地如先前结合图3所描述的),虽然这不是必需的。如果使用的话,则此类多个备选状态可以可选地与先前结合图3所描述的那些备选状态中的任何一个类似或相同。然而,可选(不是必需)的是其中执行该方法的处理器或其它设备可操作以结合执行指令来支持此类多个备选状态。此外,可选(不是必需)的是指令(例如,其操作码)可操作以支持此类多个备选状态。在一些实施例中,替代地,处理器和/或指令可以可选地在第一线程被暂停时仅指示并支持单个备选状态(例如,单个备选状态可以可选地隐含于指令(例如,其操作码))。例如,较轻的睡眠和/或c0.1状态可以可选地是隐式的。
71.再次参考图5,在一些实施例中,在框542处,处理器可以可选地执行是否激活地址监测器逻辑的初始确定。例如,这可以可选地如先前结合图3的框342所描述的那样来执行。如果地址监测器逻辑被激活(即,“是”是确定),则该方法可前进到框543。否则,如果地址监测器逻辑未被激活(即,“否”是确定),则该方法可前进到框546。
72.在框543,可以暂停第一用户级别线程的执行,并且可以将其上曾运行第一用户级别线程的逻辑处理器过渡为所指示的备选状态。如先前所述,取决于所指示的备选状态,可能需要不同的延迟来恢复执行(例如,由于在过渡到所指示的备选状态时所做出的改变)。例如,这可以可选地如先前结合图3的框343所描述的那样来完成。
73.在框544、545和560,可以做出是否恢复(例如,第一用户级别线程的)执行的确定。具体地,在框544,可以做出是否已经检测到对所监测的存储器地址的访问的指示的确定。例如,这可以可选地如先前结合图3的框344所描述的那样来完成。如果已经检测到对所监测的存储器地址的访问的指示(即,“是”是确定),则该方法可以前进到框546。否则,如果尚未检测到对所监测的存储器地址的访问的指示(即,“否”是确定),则该方法可以前进到框545。
74.在框545,可以可选地做出由指令所指示的用户级别超时值是否已经过期的确定。例如,这可以可选地如先前结合图3的框345所描述的那样来完成。如果超时值已经过期(即,“是”是确定),则该方法可前进到框546。否则,如果超时值尚未过期(即,“否”是确定),则该方法可前进到框560。
75.在框560处,可以做出监督系统软件施加和/或特权级别最大时间或超时值是否已经过期的确定。为简单起见,监督系统软件施加和/或特权级别最大时间或超时值在本文中也可简称为监督系统软件施加的超时值。监督系统软件施加的超时值可以表示在事先尚未检测到对所监测的地址的访问(例如,在框544)和/或可选的用户级别超时值尚未过期(例如,如在框545所确定的)的情况下可允许第一用户级别线程保持暂停的极限或最大时间或持续期相关值。作为示例,,施加监督系统软件施加的超时值可以有助于防止第一用户级别线程在监督系统软件可能想要将处理器资源用于另一目的时使用处理器资源过长时间。与结合框545所讨论的用户级别超时值相反,监督系统软件施加的超时值可以由监督系统软件(例如,操作系统模块、虚拟机监测器模块、或诸如此类)和/或从操作的特权级别(例如,
至少高于用户级别特权)中提供。因此,在一些实施例中,可以可选地从用户级别特权或透视图(perspective)以及从特权级别或透视图两者来提供最大超时值。
76.监督系统软件施加的超时值可以以各种不同的方式来表达,诸如例如,计数器将递增升至的值、计数器将递减降至的值、计数器将从其递减到零的值、计时器将计数升至的值、计时器将计数降至的值、计时器将从其计数到零的值、全局时钟或其它时钟时间持续期、多个处理器时钟周期、或诸如此类。
77.在一些实施例中,监督系统软件施加的超时值可以由监督系统软件和/或从执行的特权级别中存储或提供在寄存器或另一存储位置中。例如,在一些实施例中,处理器可以具有模型特定寄存器(msr)或另一控制寄存器,其可用于存储监督系统软件施加的超时值。msr或另一控制寄存器可以可选地隐含于指令(例如,隐含于其操作码),而不需要显式指定。备选地,监督系统软件施加的超时值可以可选地以不同方式来配置。
78.如果监督系统软件施加的超时值尚未过期(即,“否”是框560处的确定),则该方法可以重新访问框544,其中可以在重复循环中可选地做出更多确定,直到来自循环的退出条件被检测到为止。备选地,如果监督系统软件施加的超时值已经过期(即,“是”是框560处的确定),则该方法可前进到框561。
79.在框561,可以存储或以其它方式提供以下指示:由于监督系统软件施加的超时值的过期,第一用户级别线程的暂停正被结束。这可以表示对第一用户级别线程和/或其关联的用户级别应用的指示或通信:第一用户级别线程被恢复了,因为监督系统软件施加的超时值过期和/或监督系统软件限制它,而不是出于某一其它原因(例如,检测到了所监测的存储器访问、可选的用户级别超时值过期、检测到了中断或其它事件等)。
80.在不同的实施例中,可以以不同的方式来提供框561处的指示。例如,在各种实施例中,可以通过以下操作来提供该指示:设置或以其它方式修改一个或多个比特、设置或以其它方式修改一个或多个标志(例如,架构标志或状态寄存器中的一个或多个比特)、在寄存器或存储器位置中存储值、或者传送或断言一个或多个信号。在一个特定示例实施例中,可以通过修改标志(例如,设置与用于实现架构标志的寄存器中的标志对应的比特)来提供此指示,诸如例如零标志、进位标志、新的专用标志(如果期望的话)、或某一其它标志。
81.第一用户级别线程和/或其关联的用户级别应用可能能够接收或观察到这样的指示:由于监督系统软件施加的超时值而导致第一用户级别线程暂停被结束了。在一些实施例中,此指示可以可选地用作监督系统软件和用户级别应用之间的通信或通知:监督系统软件具有它对当前分配给第一用户级别线程的处理器资源希望做的更好的事情和/或监督系统软件希望第一用户级别线程让渡给它。可选地,可能存在理解、协议或合同:在提供此类指示的情况下,第一用户级别线程应该将控制转移到监督系统软件,诸如例如,通过让渡给操作系统模块并使其自身进入到与睡眠状态相关联的等待队列中。但是,实现此类理解或协议是可选的而非必需的。
82.在框546,可以从逻辑处理器已经过渡为的所指示的备选状态恢复(例如,第一用户级别线程的)执行。例如,这可以可选地如先前结合图3的框346所描述的那样来完成。在一些实施例中,可以从逻辑处理器处于所指示的备选状态时通过延迟来恢复执行,所述延迟将小于在逻辑处理器处于acpi的c1或停止处理器功率状态时可以恢复执行线程的延迟的一半、小于三分之一、小于五分之一、小于八分之一、或甚至更少。在一些实施例中,可选
地,可以通过恢复执行延迟来可选地支持一个或多个其它备选状态,所述恢复执行延迟小于或至少不大于acpi的c1或停止处理器功率状态的恢复执行延迟。
83.已经以相对基本的形式示出并描述了方法540,但是可以可选地将操作添加到所述方法和/或从所述方法移除。例如,尽管为了简单性而未示出,但在一些实施例中,方法340可以可选地允许一个或多个其它类型的事件促使第一用户级别线程被恢复,尽管这不是必需的。例如,可以可选地添加类似于框344和345的一个或多个附加确定框。在各种实施例中,这些确定框可以确定是否已经检测到非屏蔽中断(nmi)、系统管理中断(smi)、调试异常、机器检查异常、启动信号、复位信号、某些类型的外部中断(如果它们将被输送到软件),改变地址转化的事件、或诸如此类,并且如果是的话,则促使第一用户级别线程的执行恢复。作为另一示例,如果期望的话,在一些实施例中,监督系统软件模块和/或执行的特权级别还可以可选地具有其它控制,诸如例如,调节或控制或确定在第一用户级别线程被暂停时是否允许进入备选状态的能力。例如,在一些实施例中,监督系统软件和/或执行的特权级别可以可选地操作以允许进入到相对较短的恢复执行延迟中,但是防止进入到相对较长的恢复执行延迟状态中。此外,虽然所述方法的流程图图示示出了特定的操作顺序,但该顺序只是示例而不是必需的。备选实施例可以以不同顺序来执行操作中的某些操作、组合某些操作、重叠某些操作等。例如,框544、545和560处的确定可以可选地以不同顺序和/或同时执行,等等。
84.图6是处理器601的实施例的框图,处理器601可操作以执行用户级别监测的访问暂停线程指令605的实施例。在一些实施例中,图6的处理器可操作以执行图3-5中的任何一个或多个的方法。针对图3-5中的任何一个的方法所描述的方面和具体可选细节,包括例如不同的可能备选状态和将逻辑处理器过渡到那些备选状态的所描述方式以及相关联的恢复执行延迟,以及监督系统软件施加的最大超时值及其描述的用途,还可以可选地应用于图6的方法。备选地,图6的处理器可以执行类似或不同的方法。此外,图3-5中的任何一个或多个的方法可以由与图6的处理器相同、类似或不同的处理器来执行。
85.在操作期间,处理器可以从第一用户级别软件线程接收用户级别监测的访问暂停线程指令605。该指令可以表示宏指令、汇编语言指令、机器代码指令、或处理器的指令集的其它指令或控制信号。在一些实施例中,该指令可以可选地指定或以其它方式指示可选的用户级别指定的时间或超时值(例如,作为源操作数)。例如,时间或超时值可以可选地与结合图3的框345所讨论的时间或超时值类似或相同。在一个方面,在未事先检测到另一个恢复线程事件的情况下,时间或超时值可以表示将处于暂停状态的第一给定线程的极限或最大值,如由用户级别监测的访问暂停线程指令所指示的。用于表达用户级别时间或超时值的先前讨论的各种不同方式是合适的。作为示例,用户级别超时值可以可选地存储在所指定或所指示的寄存器中,或者由指令的立即所提供。
86.在一些实施例中,用户级别监测的访问暂停线程指令605可以指定或以其它方式指示在第一用户级别线程被暂停时逻辑处理器将被过渡成的、指令所允许的可选多个可能备选状态中的给定一个,虽然这不是必需的。其中指令可以指示备选状态以及各种先前描述的备选状态(例如,不限于睡眠和较轻的睡眠状态)的先前讨论的各种不同方式是合适的。备选地,仅单个备选状态指令可以可选地被该指令所支持。例如,指令的操作码可以隐式地指示单个支持的备选状态,使得可以不需要与指令相关联的附加信息以在多个此类备
选状态之间进行选择。
87.再次参考图6,处理器包括核流水线620。在一些实施例中,核流水线是硬件多线程的,诸如例如smt。核流水线包括解码单元或解码器670。解码单元可对用户级别检测的访问暂停线程指令605进行接收和解码。解码单元可输出一个或多个相对较低级别指令或控制信号(例如一个或多个微指令、微操作、微代码入口点、解码的指令或控制信号等),其反映、表示和/或得自相对较高级别的用户级别检测的访问暂停线程指令。在一些实施例中,解码单元可包括用于接收指令的一个或多个输入结构(例如端口、互连、接口)、与其耦合以进行识别和解码的指令识别和解码逻辑、以及与其耦合以输出较低级别指令或控制信号的一个或多个输出结构(例如端口、互连、接口)。解码单元可使用各种不同机构来实现,所述各种不同机制包括但不限于微代码只读存储器(rom)、查找表、硬件实现、可编程逻辑阵列(pla)、以及适合于实现解码单元的其它机构。
88.在一些实施例中,用户级别检测的访问暂停线程指令605不是直接被提供给解码单元的,而是可以可选地使用指令仿真器、转化器、变形器、解译器、或其它指令转换模块。各种类型的指令转换模块可采用软件、硬件、固件、或其组合来实现。在一些实施例中,指令转换模块可位于处理器外部,诸如例如在独立管芯上和/或在存储器(例如作为静态、动态、或运行时间仿真模块)中。作为示例,指令转换模块可接收可属于第一指令集的用户级别检测的访问暂停线程指令605,并且可将用户级别检测的访问暂停线程指令605仿真、转化、变形、解译、或以其它方式来转换为一个或多个对应中间指令或控制信号,其可属于第二不同指令集。第二指令集的所述一个或多个中间指令或控制信号可被提供给解码单元(例如解码单元670),其可将它们解码为由处理器的原生硬件(例如一个或多个执行单元)可执行的一个或多个较低级别指令或控制信号。
89.再次参考图6,线程暂停/恢复单元671与解码单元670耦合。线程暂停/恢复单元可以表示用于执行指令605的执行单元和/或在本文中也可以简称为执行单元。如所示,线程暂停/恢复单元或执行单元可以通过其它中间组件(诸如例如,第一组可选线程可分区资源625)与解码单元耦合。第一组可选线程可分区资源可以可选地与线程可分区资源225类似或相同。第二组可选线程可分区资源628可以与执行单元的输出耦合。此可选的第二组可以可选地与线程可分区资源229类似或相同。线程暂停/恢复单元可以接收一个或多个解码的或以其它方式转换的指令或控制信号,其表示用户级别监测的访问暂停线程指令605和/或从其中导出。这些控制信号可以潜在地指示或建议要进入的备选状态(例如,在一些实施例中,睡眠状态或较轻的睡眠状态)。如果在特定实现中使用可选的用户级别时间或超时值,则线程暂停/恢复单元还可以接收可选的用户级别时间或超时值。
90.线程暂停/恢复单元可以包括可操作以执行用户级别监测的访问暂停线程指令605的特定或具体逻辑。线程暂停/恢复单元和/或任何其所示或所描述的组件可以采用硬件(例如,集成电路、晶体管或其它电路元件等)、固件(例如,rom、eprom、闪速存储器或其它持久性或非易失性存储器和其中存储的微代码、微指令或其它低级指令)、或其各种组合潜在地/可选地与某些软件(例如,存储在存储器中的更高级指令)结合来实现。在一些实施例中,线程暂停/恢复单元和/或任何其所示或所描述的组件可以可选地仅包括硬件和/或固件而没有任何软件。线程暂停/恢复单元可以响应于和/或作为用户级别监测的访问暂停线程指令605的结果(例如,响应于从指令所解码的一个或多个指令或控制信号)而可操作以
暂停从其中接收了指令605的第一用户级别软件线程。在一些实施例中,在暂停线程之前,线程暂停/恢复单元可以可选地响应于指令而可操作以确定地址监测器逻辑是否被激活(例如,可选地如先前结合图3的框342所描述的那样)和/或确保事先满足一个或多个其它可选条件,尽管这不是必需的。例如,这可以由与地址监测器逻辑交换信号或其它通信的执行单元和/或处理器来完成。
91.线程暂停/恢复单元还可以响应于和/或作为指令605的结果而可操作以将在其上曾正运行线程的逻辑处理器(例如,核流水线620的smt硬件线程)过渡到所指示的备选状态。在一些实施例中(例如,在较轻的睡眠状态(例如,c0.1状态)或可选的甚至更轻的睡眠状态的情况下),为了暂停线程,线程暂停/恢复单元可以过渡到较低延迟恢复执行状态(例如,主要用信号通知核流水线以停止执行线程的指令,并从而允许共享资源由共享相同资源的一个或多个其它线程来独占使用,而没有可分区资源的任何融合/组合)。在一些实施例中,此类备选状态可以可选地是实现以用于指令的唯一状态。在此类情况下,线程暂停/恢复单元可能不需要包括可选的流水线转储清除逻辑673或可选的分区/退火单元674。
92.备选地,在其它实施例中(例如,在可选地支持以下一个或多个状态的情况下:睡眠(例如,c0.2状态)、更深的睡眠、或者c1或停止处理器状态),线程暂停/恢复单元可以可选地将逻辑处理器过渡到更长延迟恢复执行备选状态。例如,这可以包括用信号通知核流水线以终止执行线程的指令并允许共享资源由共享相同资源的一个或多个其它线程独占使用,并且还重新配置(例如,融合或组合)至少一些可分区资源(例如,第一组可选线程可分区资源625和/或第二组可选线程可分区资源628)供这些一个或多个其它线程所使用。在此类情况下,线程暂停/恢复单元可以包括可选的流水线转储清除逻辑673和可选的分区/退火单元674。可选的流水线转储清除单元可响应于指令而可操作以转储清除或排空(drain)核流水线,以便清除所有指令。如所示,可选的流水线转储清除单元可操作以发信号通知流水线的其它组件。
93.一旦流水线已被转储清除或排空,则可选的分区/退火单元可操作以融合、退火、或以其它方式组合至少一些可分区资源(例如,第一组625和/或第二组628),其先前专用于第一用户级别线程,使得一个或多个其它线程可以在第一用户级别线程被暂停时使用这些资源。如所示,可选的分区/退火单元可操作以发信号通知第一和/或第二组可选线程可分区资源。作为示例,这可以包括首先从队列、存储缓冲器、重排序缓冲器、和诸如此类中排出指令,并然后组合队列、存储缓冲器、和重排序缓冲器的条目以供除第一用户级别线程外的一个或多个其它线程所使用。
94.一旦第一用户级别线程已被暂停,则恢复线程激活单元675可响应于指令而可操作以监测或检测一种或多种类型的事件或条件(例如,如对于特定实现所期望的),其将触发或引起第一用户级别线程的恢复。如所示,恢复线程激活单元可以包括监测的访问检测单元676。监测的访问检测单元可操作以监视和/或观察和/或检测对所监测地址的访问的指示638。作为示例,可以以先前结合图3的框338所描述的各种方式来提供对所监测地址指示的访问。如果检测到此类指示,则监测的访问检测单元和/或恢复线程激活单元可以启动第一用户级别线程的恢复。
95.恢复线程激活单元可以可选地包括事件检测单元677。可选事件检测单元可操作以监视和/或观察和/或检测可能引起第一用户级别线程的恢复的一个或多个其它不同类
型的事件679。对于特定实现,任何此类事件是否可以触发第一用户级别线程的恢复是可选的。在一些实施例中,可以可选地触发第一用户级别线程的恢复的事件的可能示例包括非屏蔽中断(nmi)、系统管理中断(smi)、调试异常、机器检查异常、启动信号、复位信号、某些类型的外部中断(如果它们将被输送到软件)、改变地址转化的事件、或其各种组合。如果检测到此类事件,则事件检测单元和/或恢复线程激活单元可以启动第一用户级别线程的恢复。
96.恢复线程激活单元可以可选地包括暂停时间监测器单元678。可选的暂停时间监测器单元可操作以监测第一用户级别线程已被暂停的时间(相对于可选的用户级别时间或超时值645及可选的监督系统软件施加的时间或超时值660中的一个或多个)。如上所述,用户级别时间或超时值645可以可选地已由指令所指示。可选的监督系统软件施加的时间或超时值可以类似于先前结合图5的框560所描述的时间或超时值,并且可以可选地以类似方式来使用。作为示例,此监督系统软件施加的时间或超时值660可以可选地存储在处理器的控制寄存器(例如,模型特定寄存器)中。如果确定监督系统软件施加的时间或超时值660已经过期,则可以可选地将这样的指示661存储在存储位置699中。例如,这可以如图5的框561所描述的那样来执行。如果确定可选实现的时间或超时值中的任一个过期,则暂停时间监测器单元和/或恢复线程激活单元可以启动第一用户级别线程的恢复。
97.在检测到任何前述线程恢复条件或对于特定实现所期望的其它条件时,响应于指令,线程暂停/恢复单元672可操作以恢复第一用户级别线程。如果要重新分区先前分区和放弃的可分区资源,则可选的流水线转储清除单元672可响应于转储清除或排空核流水线而可操作以便清除所有指令。一旦流水线已被转储清除或排空,则可选的分区/退火单元674可操作以重新分区这些可分区资源(例如,先前退火的第一组625和/或第二组628中的任何一个),使得即将被唤醒的第一用户级别线程可再次能够利用那些资源。然后可以恢复第一用户级别线程,并且可以开始进一步执行来自第一用户级别线程的指令。
98.为了避免模糊本描述,已经示出并描述相对简单的处理器。然而,处理器可以可选地包括其它处理器组件。例如,各种不同实施例可包括对图9a/b、10a/b和11中的任一个所示和所述的组件的各种不同组合和配置。处理器的全部组件可被耦合在一起,以允许它们如所打算那样进行操作。
99.图7是执行事务存储器事务内的事务存储器兼容的用户级别暂停线程指令以暂停第一用户级别线程而不中止事务存储器事务的方法780的示例实施例的框流程图。在一些实施例中,该方法可以允许响应于事务存储器兼容的用户级别暂停线程指令或由于处理器的事务存储器逻辑中止事务存储器事务而恢复第一用户级别线程。在各种实施例中,该方法可以由处理器、指令处理设备、数字逻辑装置、或集成电路来执行。在一些实施例中,图7的方法可以由图6的处理器来执行和/或在图6的处理器内执行,图6的处理器可以另外可选地包括事务存储器逻辑以支持事务存储器。本文针对图6的处理器所描述的组件、特征、和特定可选细节也可选地应用于图7的方法。备选地,图7的方法可以由类似或不同的处理器或设备(例如,可选地省略的监测器访问检测单元676和/或可选地省略的用于监测对存储器地址的访问的检测的逻辑的处理器或设备)来执行和/或在其内执行。此外,图6的处理器可以执行与图7的方法相同、类似或不同的方法。
100.事务存储器有时也称为事务执行。事务存储器表示用于控制不同实体(例如,逻辑
处理器)对共享数据的并行访问的方法,这可以有助于减少使用锁的需要。对于一些实施例,事务存储器的一个合适示例是intel
®
事务同步扩展(intel
®ꢀ
tsx)形式的事务存储器的受限事务存储器(rtm)形式的事务存储器,但是本发明的范畴不限于此。在一些实施例中,如本文所述的事务存储器可以具有rtm形式的事务存储器的特征中的任何一个或多个(或者可选地基本上所有),但是本发明的范畴不限于此。其它形式的事务存储器也是合适的。
101.其中执行该方法的处理器、集成电路、或其它设备可以具有事务存储器逻辑。硬件、固件、其组合、以及硬件和/或固件与软件的组合可用于实现不同形式的事务存储器,诸如纯硬件事务存储器(htm)、无界事务存储器(utm)、和硬件支持的(例如,加速的)软件事务存储器(stm)(硬件支持的stm)。作为示例,处理器可以具有事务缓冲器或其它存储装置、用于开始事务的事务开始逻辑、用于检测事务中止条件的事务冲突检测逻辑、用于中止事务的事务中止逻辑、用于结束事务的事务结束逻辑、和诸如此类。
102.参考图7,该方法包括在框781接收事务开始指令并开始事务存储器事务。合适的事务开始指令的一个特定示例是rtm形式的事务存储器的xbegin指令,但是本发明的范畴不限于此。xbegin指令在执行时可操作以促使处理器将执行过渡到事务存储器(例如,打开事务存储器),如果它尚未过渡到事务存储器的话。xbegin指令还可以指示用于处置中止事务的处置器的指令地址(如果中止事务发生的话)。在其它实施例中,事务开始指令可以不是特定的xbegin指令,而是可以具有xbegin指令的特征中的任何一个或多个(或可选地所有)特征、或类似特征,其潜在地与附加特征组合。本发明的范畴不限于任何已知的事务开始指令或其操作。
103.事务内指令和/或操作的群组可以通过利用事务存储器以原子方式透明地执行。原子性部分暗示了这些指令和/或操作被完全执行或根本不执行,但不是可分地执行。在事务内,否则将受锁所保护的数据只能被读取,而不以将全局可见的方式来非推测性地在事务内写入,并且可能不需要实际获取锁。如果事务存储器事务成功,则可以原子方式执行事务内通过指令和/或操作对数据的写入,而不需要已经获取锁。然而,如果事务存储器事务不成功和/或被中止,则可以丢弃对状态的推测性更新,而不曾对其它逻辑处理器可见。此外,事务内的数据读取也可以原子方式发生,而不需要获取锁。这些读取可以表示事务存储器事务的读取集合。如果事务存储器逻辑当在事务存储器事务内检测到在事务内已读取的任何存储器地址(例如,事务读取集合)已被另一逻辑处理器修改,则事务可能中止,因为整个读取集合不能以原子方式获取。如下面将进一步解释的,可以利用事务存储器的这个方面来与暂停线程指令一致并结合地监测多个存储器地址,所述暂停线程指令需要必须具有被监测的相关联存储器地址(例如,转而,这可以被卸载以经由事务存储器来监测)。
104.再次参考图7,一旦事务存储器事务已经开始(例如,通过在框781处执行事务开始指令),则事务存储器逻辑(例如,主要包括处理器的管芯上逻辑(例如,硬件和/或固件))可在框790处开始监测并确定是否检测到事务存储器事务中止条件。注意,框781的输出处的“分叉”不表示备选路径,而是表示可以一起并并行发生的并行路径,如下面将进一步讨论的。如对于特定实现所期望的,可能潜在地支持不同类型的中止条件。在一些实施例中,冲突访问(例如,对事务读取集合的写入)可以表示一个此类事务中止条件。如果没有检测到此类中止条件(即,“否”是框790处的确定),则该方法可以在框790处通过再次做出此类确
定来重复地循环返回。在一个方面,只要在正执行事务存储器事务期间,处理器和/或其事务存储器逻辑就可基本上连续地监测此类中止条件。如果检测到此类中止条件(即,“是”是框790处的确定),则该方法可以前进到框791,其中事务存储器逻辑可以中止事务,如下面将进一步讨论的。
105.再次参考图7,在已经执行了事务开始指令之后,并且当在框790处事务存储器逻辑监测中止条件时,可以执行事务的附加指令。在一些实施例中,可以在事务内执行一个或多个加载指令以从共享存储器位置加载数据。加载指令有时也称为读取指令或移动指令。如框782所示,可以在事务存储器事务内接收并执行第一加载指令,并且可以加载第一共享存储器位置或存储器地址。可选地,可以类似地执行其它加载指令以读取其它共享存储器位置或地址。如框783所示,可选地,可以在事务存储器事务内接收和执行直到第n个加载指令,并且可以加载第n个对应的共享存储器位置或存储器地址。作为示例,在一些实施例中,读取的存储器位置的数量可以从一个(或两个)延伸到大约五十个,或从一个(或两个)延伸到大约二十个,但是本发明的范畴不限于任何已知的数字。在事务内执行的这些一个或多个加载可以表示所谓的事务的读取集合。
106.再次参考图7,在框784,可以在事务存储器事务内接收事务存储器兼容的用户级别暂停线程指令。可以从第一用户级别线程接收指令,从所述第一用户级别线程也接收框781-783的指令。在框785,可以响应于事务存储器兼容的用户级别暂停线程指令来执行方法而不中止事务存储器事务。有利地,可以允许在事务存储器事务内执行事务存储器兼容的用户级别暂停线程指令,而不需要结束或中止事务存储器事务和/或不需要转移到监督程序软件处置器。相反,某些其它类型的暂停线程指令和/或功率管理指令可能与事务存储器不兼容,并且如果在事务存储器事务内执行,则可能导致事务存储器事务被中止。
107.如框786所示,响应于事务存储器兼容的用户级别暂停线程指令,可以暂停执行第一用户级别线程。然后,在框787,可以响应于事务存储器兼容的用户级别暂停线程指令,做出是否已经检测到恢复线程条件的确定。注意,框787处的确定可以与框790处的确定同时且并行地进行。换句话说,框787可以响应于事务存储器兼容的用户级别暂停线程指令(一旦它已被执行并直到它完成)基本上连续地发生,并且一旦事务执行已经开始,则框790处的确定可以基本上连续地执行,并且可持续直到事务执行中止或结束。在框787,如果尚未检测到此类恢复线程条件(即,“否”是框787处的确定),则该方法可以继续检查。否则,如果已经检测到恢复线程条件(即,“是”是框787处的确定),则该方法可以前进到框788。在框788,可以响应于事务存储器兼容的用户级别暂停线程指令而恢复第一用户级别线程。例如,线程可以在事务存储器兼容的用户级别暂停线程指令之后的下一个指令处恢复。如果期望的话,该方法和/或软件可然后识别出所监测的位置尚未被修改,并且可以可选地执行事务存储器兼容的用户级别暂停线程指令的另一个实例以再次暂停线程,同时由事务存储器逻辑进一步监测位置。备选地,该方法可然后前进到框789,其中可以接收事务结束指令(例如,作为xend指令的一个示例),并且响应地提交事务存储器事务。
108.已经以相对基本的形式示出并描述了框785的操作,但是可以可选地向其添加操作。例如,在一些实施例中,框785处的操作可以包括图3的框342-346的操作中的任何一个或多个,包括其变型和备选。在其它实施例中,框785处的操作可以包括图5的框542-546和/或560-561的操作中的任何一个或多个,包括其变型和备选。在仍有的其它实施例中,框785
处的操作可以包括图8的框894-899的操作中的任何一个或多个(其将在下面进一步讨论),包括其变型和备选。也就是说,在一些实施例中,结合图3所讨论的先前描述的备选状态可以可选地与事务存储器兼容的用户级别暂停线程指令一起使用。而且,在一些实施例中,结合图5的框561的指示以及框560所讨论的先前描述的监督软件施加的最大超时值可以可选地与事务存储器兼容的用户级别暂停线程指令一起使用。在一些实施例中,框785可以可选地包括确定是否已经检测到对所监测地址的访问的指示(例如,在对于框344或544所描述的)。在其它实施例中,框785可以可选地省略做出此类确定。也就是说,在一些实施例中,可能没有相关联的存储器地址监测操作作为此指令的一部分。
109.现在,即使在框788处恢复执行第一用户级别线程之后,仍可以进行框790处的确定。也就是说,只要正在执行事务存储器事务,就可以在执行事务存储器兼容的用户级别暂停线程指令之前、同时和之后进行框790处的确定。框790处的此类确定可以与事务存储器兼容的用户级别暂停线程指令分开并且不由其控制,而是更多由事务存储器的一部分控制。部分地,框790处的确定可以确定在框782-783处是否存在对对应于加载指令的存储器位置或地址的任何冲突访问。这些可以表示事务存储器事务的读取集合。在一些实施例中,由另一逻辑处理器对事务存储器事务的读取集合的任何这些共享存储器位置的检测的写入、或检测的尝试写入可以表示可能导致事务存储器事务被中止的此类冲突访问。
110.如果检测到中止条件(即,“是”是框790处的确定),例如如果检测到对与框782-783的加载指令相关联的任何存储器地址的写入,或者如果中断或某些其它微架构条件发生,则该方法可以前进到框791。在框791,事务存储器逻辑可以促使事务存储器事务中止。对架构状态的任何推测性更新(例如,框782-783的加载)可以取消。可选地,可以提供关于中止的原因的信息(例如,在通用寄存器中)。在一些实施例中,这还可以结束执行事务存储器兼容的用户级别暂停线程指令并恢复所暂停的第一用户级别线程。注意,在此类条件下,中止事务存储器事务并恢复第一用户级别线程可以由事务存储器逻辑单独执行,而不是响应于执行事务存储器兼容的用户级别暂停线程指令(例如,不是框785的一部分)。控制通常还可以转移到中止处置器(例如,在由框781的事务开始指令所指示的指令地址)。在一些实施例中,处置器可以预期已经修改了所监测的位置之一(例如,对应于框782-783)并且可以对此进行调查。
111.框782的加载指令和事务存储器事务的框783(可选)可以有效地将事务存储器逻辑设立或配置有要监测的存储器地址和/或范围。至少在概念上,当以此方式来使用时,事务存储器逻辑可以用作一类地址监测器逻辑,其可以被利用使得不需要使用(例如,由用户级别设立监测器地址指令所设立的)单独的地址监测器逻辑。另外,在一些实施例中,事务存储器逻辑可以可选地/潜在地监测一个存储器地址或范围,或可选地/潜在地监测两个或更多个存储器地址或范围,或可选地/潜在地监测从几个到大量存储器地址或范围。代表性地,如果做出对与这些一个或多个存储器地址或范围中的任何一个存储器地址或范围相关联的读取集合的访问,则事务存储器逻辑可以中止事务并促使执行被恢复。此外,当事务存储器逻辑监测对读取集合的此类写入时,可以执行事务存储器兼容的用户级别暂停线程指令中的一个或多个以暂停第一用户级别线程。
112.想要监测多个存储器地址有各种不同的可能原因。本发明的范畴不限于任何已知的此类原因。然而,为了进一步说明某些概念,将描述一个具体示例。在此示例中,软件可以
与网络接口卡交互,该网络接口卡可以支持到达不同链路的消息的多个传入队列。网络接口卡可以在存储器中写入不同位置以指示将消息接收到多个对应传入队列中的每一个。给定的软件线程可能想要当在传入队列中没有消息时进行暂停,但可能期望当消息在传入队列之一中可用时恢复。这只是一个示例。在其它示例中,可以针对其它类型的输入输出数据或者出于各种其它原因来监测存储器地址。
113.在其它实施例中,类似于针对图7的框784-785的事务存储器兼容的用户级别暂停线程指令所描述的用户级别暂停线程指令不一定需要在事务存储器事务内使用,并且不一定需要与事务存储器兼容。即,此类指令用在事务存储器事务中是可选的。此外,此类指令是事务存储器兼容的是可选的。当然,例如,此类指令可用于在等待一个或多个超时值(例如,用户级别超时值和/或监督软件施加的超时值)过期时和/或在等待特定实现所期望的中断和/或其它恢复线程事件时暂停用户级别线程。
114.图8是执行可选事务存储器兼容的用户级别暂停线程指令的方法892的实施例的框流程图。在各种实施例中,该方法可以由处理器、指令处理设备、数字逻辑装置、或集成电路来执行。在一些实施例中,该方法可以由图6的处理器来执行。本文针对图6的处理器所描述的组件、特征、和具体可选细节还可选地应用于图8的方法。备选地,图8的方法可以由类似或不同的处理器或设备(例如,可选地省略监测器访问检测单元676和/或可选地省略用于观察对任何存储器地址的访问的检测的任何逻辑的处理器或设备)来执行和/或在其内执行。此外,图6的处理器可以执行与图8的方法相同、类似或不同的方法。
115.参考图8,在框893,可以接收可选事务存储器兼容的用户级别暂停线程指令。在一些实施例中,该指令可以可选地与事务存储器兼容。在其它实施例中,这不是必需的。在一些实施例中,指令可以可选地指定或以其它方式指示用户级别超时值。例如,这可以可选地如先前结合图3的框341所述,包括其变型和备选。在一些实施例中,指令可以指定或以其它方式指示可选多个可能备选状态之一。例如,这可以可选地如先前结合图3的框341所述,包括其变型和备选。作为示例,这可以包括先前描述的较轻的睡眠状态和睡眠状态。
116.在框894,可以暂停第一用户级别线程的执行,并且可以将其上曾正运行第一用户级别线程的逻辑处理器过渡到所指示的备选状态。例如,这可以可选地如先前结合图3的框343所描述的那样来完成,包括其变型和备选,并且包括使用任何先前描述的备选状态(例如,较轻的睡眠、睡眠、c0.1、c0.2等)。
117.在框895-897,可以可选地做出是否恢复(例如,第一用户级别线程的)执行的确定。具体地,在框895,可以可选地做出是否已检测到中断或其它线程恢复事件的确定。例如,在各种实施例中,非屏蔽中断(nmi)、系统管理中断(smi)、调试异常、机器检查异常、启动信号、复位信号、某些类型的外部中断(如果它们将被输送到软件),改变地址转化的事件、以及其各种组合可以可选地促使第一用户级别线程恢复。由于此类事件可能涉及将执行过渡到适当的特权级别处置器,所以许多此类事件通常由特权软件来处置并因此恢复执行。在其它实施例中,某些类型的中断(例如,输入-输出中断、来自管芯上硬件加速器的中断、适合于用户级别代码的其它中断)可以可选地直接提供给用户级别应用并由用户级别应用来处置,而无需过渡出用户级别特权到更高的特权级别,但这不是必需的。在此类事件中,执行可能潜在地通过相同的用户级别线程或不同的用户级别线程来恢复。如果已经检测到这些类型之一的恢复事件(即,“是”是框895处的确定),则该方法可以前进到框899。否
则,如果尚未检测到恢复事件(即,“否”是确定),则该方法可前进到框896。
118.在框896,可以可选地做出由事务存储器兼容的用户级别暂停线程指令所可选地指示的可选用户级别超时值是否已经过期的确定。例如,这可以可选地如先前结合图3的框345所描述的那样来完成,包括其变型和备选。如果用户级别超时值已经过期(即,“是”是确定),则该方法可以前进到框899。否则,如果用户级别超时值尚未过期(即,“否”是确定),则该方法可前进到框897。
119.在框897,可以可选地做出可选监督系统软件施加的超时值是否已经过期的确定。例如,这可以可选地如先前结合图5的框560所描述的那样来完成,包括其变型和备选。如果监督系统软件施加的超时值尚未过期(即,“否”是确定),则该方法可以重新访问框895,其中可以做出另一轮确定,可选地处于连续循环中直到检测到来自循环的退出条件为止。备选地,如果超时值已过期(即,“是”是确定),则该方法可前进到框898。
120.在框898,可以提供指示:由于监督系统软件施加的和/或特权级别最大时间或超时值的过期,正结束第一用户级别线程的暂停。例如,这可以可选地如先前结合图5的框561所描述的那样来完成,包括其变型和备选。
121.在框899,可以从处于所指示的备选状态中的逻辑处理器恢复第一用户级别线程的执行。例如,这可以可选地如先前结合图3的框346和/或图5的框546所描述的那样来完成,包括其变型和备选。
122.注意,在图8中,在一些实施例中,可选事务存储器兼容的用户级别暂停线程指令可以可选地省略对监测对存储器位置的访问的指示的需要(例如,像如先前针对图3的框344所描述的)。当然,在一些实施例中,不需要指令具有任何相关联的所监测地址或任何此类地址监测。当然,作为一个示例,事务存储器逻辑可以可选地用于监测对一个或多个地址的访问(例如,如针对图7所讨论的),但这不是必需的。此外,作为另一示例,可以暂停线程而不等待存储器访问发生,而是仅仅等待一个或多个超时值、等待中断发生(例如,可选地,可以将用户级别中断直接输送到用户级别代码)、或组合但没有所监督的存储器地址。
123.已经以相对基本的形式示出并描述了方法892,但是可以可选地将操作添加到该方法和/或从该方法中移除。例如,可以可选地移除框895-897处的任何一个或多个可选确定。此外,虽然方法的流程图图示示出了特定的操作顺序,但该顺序仅是示例而非必需的。备选实施例可以以不同顺序来执行操作中的某些操作、组合某些操作、重叠某些操作等。例如,框895-897处的确定可以可选地以不同顺序和/或同时执行,等等。
124.示范核架构、处理器和计算机架构处理器核可以以不同方式,为不同目的并且在不同处理器中实现。例如,此类核的实现可包括:1)预期用于通用计算的通用有序核;2)预期用于通用计算的高性能通用乱序核;3)预期主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1) cpu,包括预期用于通用计算的一个或更多个通用有序核和/或预期用于通用计算的一个或更多个通用乱序核;以及2)协处理器,包括预期主要用于图形和/或科学(吞吐量)的一个或更多个专用核。此类不同处理器导致不同计算机系统架构,其可包括:1)在与cpu分开的芯片上的协处理器;2)与cpu在同一封装中的单独管芯上的协处理器;3)与cpu在相同管芯上的协处理器(在此情况下,此类协处理器有时称为专用逻辑,如集成图形和/或科学(吞吐量)逻辑,或者称为专用核);以及4)芯片上系统,可在相同的管芯上包括所描述的cpu(有时
称为一个或多个应用核或一个或多个应用处理器)、上述协处理器和附加功能性。紧跟着示范处理器和计算机架构的描述,接下来描述示范核架构。
125.示范核架构有序和乱序核框图图9a是根据本

技术实现要素:
的实施例的示出示范有序流水线和示范寄存器重命名、乱序发布/执行流水线两者的框图。图9b是根据本发明内容的实施例的示出有序架构核的示范实施例和要包括在处理器中的示范寄存器重命名、乱序发布/执行架构核的框图。在图9a-b中的实线框示出有序流水线和有序核,而可选添加的虚线框示出寄存器重命名、乱序发布/执行流水线和核。假定有序方面是乱序方面的子集,将描述乱序方面。
126.在图9a中,处理器流水线900包括获取阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也称为分派或发布)阶段912、寄存器读取/存储器读取阶段914、执行阶段916、反写/存储器写入阶段918、异常处置阶段922及提交阶段924。
127.图9b显示处理器核990,包括耦合到执行引擎单元950的前端单元930,并且两者均耦合到存储器单元970。核990可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vlim)核或混合或备选核类型。作为又一选择,核990可以是专用核,如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核或诸如此类。
128.前端单元930包括耦合到指令高速缓存单元934的分支预测单元932,单元934耦合到指令转化后备缓冲器(tlb) 936,其耦合到指令获取单元938,其耦合到解码单元940。解码单元940(或解码器)可将指令解码,并且生成作为输出的一个或更多个微操作、微代码输入点、微指令、其它指令或其它控制信号,它们从原指令解码或者它们以其它方式反映原指令或者从原指令得到。解码单元940可使用各种不同机制实现。适合机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核990包括存储用于某些宏指令的微代码的微代码rom或其它介质(例如,在解码单元940中或者以其它方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
129.执行引擎单元950包括耦合到引退单元954和一个或更多个调度器单元(一个或多个)956的集合的重命名/分配器单元952。一个或多个调度器单元956表示任何数量的不同调度器,包括预留站、中央指令窗口等。一个或多个调度器单元956耦合到一个或多个物理寄存器堆单元958。一个或多个物理寄存器堆单元958中的每个表示一个或更多个物理寄存器堆,这些文件中的不同文件存储一个或更多个不同数据类型,如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,一个或多个物理寄存器堆单元958包括向量寄存器单元、写掩码(write mask)寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。一个或多个物理寄存器堆单元(一个或多个)958由引退单元954重叠以示出其中可实现寄存器重命名和乱序执行的各种方式(例如,使用一个或多个重排序缓冲器和一个或多个引退寄存器堆;使用一个或多个将来文件、一个或多个历史缓冲器和一个或多个引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元954和一个或多个物理寄存器堆单元(一个或多个)958耦合到一个或多个执行集群960。一个或多个执行集群960包括有一个或更多个执行单元962的集合和有一个或更多个存储器访问单元964的集
合。执行单元962可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据执行(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但其它实施例可只包括全部执行所有功能的多个执行单元或一个执行单元。一个或多个调度器单元956、一个或多个物理寄存器堆单元(一个或多个)958和一个或多个执行集群960显示为可能是复数,这是因为某些实施例创建用于某些类型的数据/操作的单独的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线,每个具有其自己的调度器单元、一个或多个物理寄存器堆单元和/或执行集群
ꢀ‑ꢀ
并且在单独的存储器访问流水线的情况下,实现了其中仅此流水线的执行集群具有一个或多个存储器访问单元964的某些实施例)。也应理解的是,在使用单独流水线的情况下,一个或更多个这些流水线可以是乱序发布/执行,并且其余的流水线是有序的。
130.存储器访问单元964的集合耦合到存储器单元970,其包括耦合到数据高速缓存单元974的数据tlb单元972,数据高速缓存单元974耦合到2级(l2)高速缓存单元976。在一个示范实施例中,存储器访问单元964可包括负载单元、存储地址单元和存储数据单元,其中的每个耦合到存储器单元970中的数据tlb单元972。指令高速缓存单元934还耦合到存储器单元970中的2级(l2)高速缓存单元976。l2高速缓存单元976耦合到一个或更多个其它级的高速缓存,并且最终耦合到主存储器。
131.通过示例,示范寄存器重命名、乱序发布/执行核架构可如下实现流水线900:1)指令获取938执行获取阶段902和长度解码阶段904;2)解码单元940执行解码阶段906;3)重命名/分配器单元952执行分配阶段908和重命名阶段910;4)一个或多个调度器单元956执行调度阶段912;5)一个或多个物理寄存器堆单元(一个或多个)958和存储器单元970执行寄存器读取/存储器读取阶段914;执行集群960执行执行阶段916;6)存储器单元970和一个或多个物理寄存器堆单元(一个或多个)958执行反写/存储器写入阶段918;7)各种单元可涉及异常处置阶段922;以及8)引退单元954和一个或多个物理寄存器堆单元(一个或多个)958执行提交阶段924。
132.核990可支持一个或更多个指令集(例如,x86指令集(更新版本已添加一些扩展)、加利福尼亚州sunnyvale的mips technologies, 的mips指令集、加利福尼亚州sunnyvale的arm holdings的arm指令集(具有诸如neon的可选附加扩展)),包括本文中描述的一个或多个指令。在一个实施例中,核990包括支持压缩数据指令集扩展(例如,avx1、avx2)的逻辑,由此允许使用压缩数据执行由许多多媒体应用使用的操作。
133.应理解的是,核可支持多线程(执行两个或更多个并行的操作或线程的集合),并且可以以多种方式进行此,包括时间片多线程、同时多线程(其中,单个物理核提供用于物理核正同时进行多线程的每个线程的逻辑核)或其组合(例如,如在intel
®
超线程技术中的时间片获取和解码及之后的同时多线程)。
134.虽然在乱序执行的上下文中描述了寄存器重命名,但应理解的是,可在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元934/974及共享l2高速缓存单元976,但备选的实施例可具有诸如,例如1级(l1)内部高速缓存的用于指令和数据两者的单个内部高速缓存,或多个级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外的外部高速缓存的组合。备选地,所
有高速缓存可在核和/或处理器的外部。
135.特定示范有序核架构图10a-b示出更具体的示范有序核架构的框图,该核将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其它核)之一。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器i/o接口和其它必需的i/o逻辑进行通信。
136.图10a是根据本发明内容的实施例的单个处理器核连同其到管芯上互连网络1002的连接和具有其2级(l2)高速缓存1004的本地子集的框图。在一个实施例中,指令解码器1000支持具有压缩数据指令集扩展的x86指令集。l1高速缓存1006允许对到标量和向量单元中的高速缓存存储器的低延迟访问。虽然在一个实施例中(为简化设计),标量单元1008和向量单元1010使用单独的寄存器集(分别为标量寄存器11012和向量寄存器1014),并且在其之间传送的数据写入到存储器,并且然后从1级(l1)高速缓存1006中读回,但本发明内容的备选实施例可使用不同方案(例如,使用单个寄存器集,或者包括允许在两个寄存器堆之间传送数据的通信路径而没有写入和读回)。
137.l2高速缓存1004的本地子集是全局l2高速缓存的一部分,全局l2高速缓存划分成单独的本地子集,每个处理器核一个子集。每个处理器核具有到l2高速缓存1004的其自己的本地子集的直接访问路径。与访问其自己的本地l2高速缓存子集的其它处理器核并行,由处理器核读取的数据存储在其l2高速缓存子集1004中,并且能够被快速访问。由处理器核写入的数据存储在其自己的l2高速缓存子集1004中,并且如果需要,则从其它子集中转储清除。环形网络确保共享数据的相干性。环形网络是双向的,允许诸如处理器核、l2高速缓存和其它逻辑块的代理在芯片内相互进行通信。每个环形数据路径在每个方向是1012比特宽。
138.图10b是根据本发明内容的实施例的在图10a中的部分处理器核的展开图。图10b包括l1高速缓存1004的l1数据高速缓存1006a部分以及有关向量单元1010和向量寄存器1014的更多细节。具体而言,向量单元1010是16宽向量处理单元(vpu)(参见16宽alu 1028),它执行整数、单精度浮点、双精度浮点指令的一个或更多个指令。vpu通过搅拌单元1020支持对寄存器输入的搅拌、通过数值转换单元1022a-b支持数值转换,并且通过复制单元1024支持关于存储器输入的复制。写掩码寄存器1026允许预测得到的向量写入。
139.具有集成存储器控制器和图形的处理器图11是根据本发明内容的实施例的可具有多于一个核,可具有集成存储器控制器并且可具有集成图形的处理器1100的框图。在图11中实线框示出具有单个核1102a、系统代理1110、一个或更多个总线控制器单元1116的集合的处理器1100,而可选添加的虚线框示出具有多个核1102a-n、系统代理单元1110中的一个或更多个集成存储器控制器单元(一个或多个)1114的集合及专用逻辑1108的备选处理器。
140.因此,处理器1100的不同实现可包括:1) cpu,其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(可包括一个或更多个核),并且核1102a-n是一个或更多个专用核(例如,通用有序核、通用乱序核、两者的组合);2)协处理器,其中核1102a-n是预期主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核1102a-n是大量通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如,例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理
器(包括30或更多个核)、嵌入式处理器或诸如此类。处理器可在一个或更多个芯片上实现。处理器1100可以是使用例如bicmos、coms或nmos的多个处理技术的任何技术的一个或更多个衬底的一部分,和/或可在一个或更多个衬底上实现。
141.存储器层次结构包括核内的一个或更多个级的高速缓存、一个或更多个共享高速缓存单元1106的集合和耦合到集成存储器控制器单元1114集的外部存储器(未示出)。共享高速缓存1106的集合可包括诸如2级(l2)、3级(l3)、4级(l4)或其它级的高速缓存的一个或更多个中间级高速缓存、末级高速缓存(llc)和/或其组合。虽然在一个实施例中,基于环形的互连单元1112将集成图形逻辑1108、共享高速缓存单元1106的集合和系统代理单元1110/一个或多个集成存储器控制器单元1114互连,但备选实施例可使用任何数量的公知技术用于将此类单元互连。在一个实施例中,在一个或更多个高速缓存单元1106与核1102a-n之间保持相干性。
142.在一些实施例中,一个或更多个核1102a-n能够进行多线程。系统代理1110包括协调和操作核1102a-n的那些组件。系统代理单元1110例如可包括功率控制单元(pcu)和显示单元。pcu可以是或者包括用于调节核1102a-n和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或更多个外部连接的显示器。
143.核1102a-n可在架构指令集方面是同构或异构的;也就是,两个或更多个核1102a-n可以能够执行相同指令集,而其它核可只能够执行该指令集的子集或不同指令集。
144.示范计算机架构图12-21是示范计算机架构的框图。本领域中熟知的用于膝上型计算机、桌上型计算机、手持式pc、个人数字助理、工程工作站、服务器、网络装置、网络中枢、交换机、嵌入式处理器、数字信号处理器(dsp)、图形装置、视频游戏装置、置顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置及各种其它电子装置的其它系统设计和配置也是适合的。通常,能够结合如本文中公开的处理器和/或其它执行逻辑的各种各样的系统或电子装置一般是适合的。
145.现在参照图12,所示出的是根据本发明内容的一个实施例的系统1200的框图。系统1200可包括耦合到控制器中枢1220的一个或多个处理器1210、1215。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(gmch) 1290和输入/输出中枢(ioh) 1250(其可以在单独芯片上);gmch 1290包括存储器和图形控制器,存储器1240和协处理器1245耦合到它们;ioh 1250耦合输入/输出(i/o)装置1260到gmch 1290。备选地,存储器和图形控制器之一或两者集成在处理器内(如本文中所描述的),存储器1240和协处理器1245直接耦合到处理器1210,以及与ioh 1250一起在单个芯片中的控制器中枢1220。
146.附加处理器1215的可选性质在图12中通过虚线表示。每个处理器1210、1215可包括本文中描述的一个或更多个处理核,并且可以是某一版本的处理器1100。
147.存储器1240例如可以是动态随机存取存储器(daram)、相变存储器(pcm)或两者的组合。对于至少一个实施例,控制器中枢1220经诸如前端总线(fsb)的多分支总线、诸如快速通路互连(qpi)的点对点接口或类似连接1295与一个或多个处理器1210、1215进行通信。
148.在一个实施例中,协处理器1245是专用处理器,诸如,例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器或诸如此类。在一个实施例中,控制器中枢1220可包括集成图形加速器。
149.在包括架构特性、微架构特性、热消耗特性、功率消耗特性及诸如此类的品质指标谱(spectrum of metrics of merit)方面,在物理资源1210、1215之间能够存在多种差别。
150.在一个实施例中,处理器1210执行控制通用类型的数据处理操作的指令。指令内嵌入的可以是协处理器指令。处理器1210将这些协处理器指令识别为属于应由附连协处理器1245执行的类型。相应地,处理器1210在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器1245。一个或多个协处理器1245接受并且执行接收到的协处理器指令。
151.现在参照图13,图中所示出是根据本发明内容的实施例的第一更具体的示范系统1300的框图。如图13中所示出的,多处理器系统1300是点对点互连系统,并且包括经点对点互连1350耦合的第一处理器1370和第二处理器1380。每个处理器1370和1380可以是某一版本的处理器1100。在本发明内容的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210,协处理器1245。
152.示出处理器1370和1380分别包括集成存储器控制器(imc)单元1372和1382。处理器1370也包括作为其总线控制器单元的一部分的点对点(p-p)接口1376和1378;类似地,第二处理器1380包括p-p接口1386和1388。处理器1370、1380可经使用p-p接口电路1378和1388的点对点(p-p)接口1350交换信息。如图13中所示出的,imc 1372和1382将处理器耦合到相应存储器,即存储器1332和存储器1334,其可以是本地附连到相应处理器的主存储器的一部分。
153.处理器1370、1380可各自经使用点对点接口电路1376、1394、1386、1398的单独p-p接口1352、1354与芯片集1390交换信息。芯片集1390可以可选地经高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如,例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器或诸如此类。
154.共享高速缓存(未示出)可或者包括在处理器中或者在两个处理器外,还经p-p互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可存储在共享高速缓存中。
155.芯片集1390可经接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外设组件互连(pci)总线,或诸如pci express总线或另一第三代i/o互连总线的总线,尽管本发明内容的范围并不那样限制。
156.如图13中所示出的,各种i/o装置1314可连同将第一总线1316耦合到第二总线1320的总线桥1318,耦合到第一总线1316。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu的、加速器(诸如,例如图形加速器和数字信号处理(dsp)单元)、现场可编程门阵列或任何其它处理器的一个或更多个附加处理器(一个或多个)1315耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(lpc)总线。在一个实施例中,各种装置可耦合到第二总线1320,例如包括键盘和/或鼠标1322、通信装置1327和诸如磁盘驱动器或其它海量存储装置的可包括指令/代码和数据1330的存储单元1328。此外,音频i/o 1324可耦合到第二总线1320。注意的是,其它架构是可能的。例如,系统可实现多分支总线或其它此类架构,而不是图13的点对点架构。
157.现在参照图14,所示出的是根据本发明内容的实施例的第二更具体的示范系统
1400的框图。图13和14中的相同的元素使用相同的附图标记,并且已经从图14中省略了图13的某些方面以免模糊图14的其它方面。
158.图14示出处理器1370、1380可分别包括集成存储器和i/o控制逻辑(“cl”)1372和1382。因此,cl 1372、1382包括集成存储器控制器单元,并且包括i/o控制逻辑。图14示出不但存储器1332、1334耦合到cl 1372、1382,而且i/o装置1414也耦合到控制逻辑1372、1382。遗留i/o装置1415耦合到芯片集1390。
159.现在参照图15,所示出的是根据本发明内容的实施例的soc 1500的框图。图11中的类似元素使用相同的标号。并且,虚线框是关于更先进的soc的可选特征。在图15中,一个或多个互连单元1502耦合到:应用处理器1510,它包括一个或更多个核142a-n的集合和一个或多个共享高速缓存单元1106;系统代理单元1110;一个或多个总线控制器单元1116;一个或多个集成存储器控制器单元1114;一个或更多个协处理器1520的集合,协处理器1520可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元1530;直接存储器存取(dma)单元1532;以及用于耦合到一个或更多个外部显示器的显示单元1540。在一个实施例中,一个或多个协处理器1520包括专用处理器,诸如,例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器或诸如此类。
160.本文中公开的机制的实施例可在硬件、软件、固件中实现,或者在此类实现方案的组合中实现。本发明内容的实施例可实现为在可编程系统上执行的计算机程序或程序代码,可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元素)、至少一个输入装置以及至少一个输出装置。
161.诸如图13中所示出的代码1330的程序代码可应用到输入指令以执行本文中描述的功能,并且生成输出信息。输出信息可以以熟知的方式应用到一个或多个输出装置。出于本技术的目的,处理系统包括具有处理器的任何系统,诸如,例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器。
162.程序代码可以用面向过程或对象的高级编程语言来实现,以便与处理系统进行通信。程序代码也可以如果需要,用汇编或机器语言来实现。实际上,本文中描述的机制在范围上不限于任何特定的编程语言。在任何情况下,语言可以是编译或解释语言。
163.至少一个实施例的一个或几个方面可通过在表示处理器内各种逻辑的机器可读介质上存储的代表性指令来实现,指令在由机器读取时,使得机器制造逻辑以执行本文中所描述的技术。称为“ip核”的此类表示可存储在有形的机器可读介质上,并且提供到各种客户或生产设施以加载到实际形成逻辑或处理器的制造机器中。
164.此类机器可读存储媒体可包括但不限于通过机器或装置制造或形成的物品的非暂态、有形布置,包括:存储媒体(例如硬盘)、包括软盘、光盘、光盘只读存储器(cd-rom)、可重写光盘(cd-rw)和磁光盘的任何其它类型的盘;半导体装置,例如只读存储器(rom)、诸如动态随机存取存储器(dram)、静态随机存取存储器(sram)、可擦写可编程只读存储器(eprom)、闪存存储器、电可擦写可编程只读存储器(eeprom)的随机存取存储器(ram);相变存储器(pcm);磁卡或光卡;或适于用于存储电子指令的任何其它类型的媒体。
165.相应地,本发明内容的实施例也包括非暂态、有形机器可读媒体(包含指令或者包含设计数据,如硬件描述语言(hdl)),它定义本文中描述的结构、电路、设备、处理器和/或系统特征。此类实施例也可称为程序产品。
166.仿真(包括二进制转化、代码变形等)在一些情况下,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,使用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或以其它方式转换成要由核处理的一个或更多个其它指令。指令转换器可在硬件、固件、软件或其组合中实现。指令转换器可在处理器上,在处理器外或者部分在处理器上,并且部分在处理器外。
167.图16是根据本发明内容的实施例的对比将源指令集中的二进制指令转换成目标指令集中二进制指令的软件指令转换器的使用的框图。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地,指令转换器可在软件、固件、硬件或其各种组合中实现。图16示出可使用x86编译器1604对用高级语言1602的程序进行编译,以生成可由具有至少一个x86指令集核的处理器1616在本机执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示能够通过兼容执行或以其它方式处理(1) intel x86指令集核的指令集的实质部分或(2)定向为在具有至少一个x86指令集核的intel处理器上运行的应用或其它软件的对象代码版本,与具有至少一个x86指令集核的intel处理器执行实质上相同功能,以便与具有至少一个x86指令集核的intel处理器实现实质上相同结果的任何处理器。x86编译器1604表示可操作来生成x86二进制代码1606(例如,对象代码)的编译器,代码1606能够通过或不通过附加链接处理,在具有至少一个x86指令集核的处理器1616上执行。类似地,图16示出可使用备选指令集编译器1608对用高级语言1602程序进行编译,以生成备选指令集二进制代码1610,代码1610可由不具有至少一个x86指令集核的处理器1614(例如,具有执行加利福尼亚州sunnyvale的mips technologies的mips指令集,和/或执行加利福尼亚州sunnyvale的arm holdings的arm指令集的核的处理器)在本机执行。指令转换器1612用于将x86二进制代码1606转换成可由不具有x86指令集核的处理器1614在本机执行的代码。此转换的代码不可能与备选指令集二进制代码1610相同,因为能够进行此操作的指令转换器难以制造;然而,转换的代码将实现一般操作,并且由来自备选指令集的指令组成。因此,指令转换器1612表示通过仿真、模拟或任何其它过程,允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1606的软件、固件、硬件或其组合。
168.针对图1、2和4中的任何图所述的组件、特征和细节可选地也可适用于图3、5、6、7和8中的任何图。此外,对设备中的任何设备所述的组件、特征和细节可选地也可适用于方法中的任何方法,其在实施例中可由和/或利用此类设备来执行。处理器可具有不同逻辑以执行图3、5、7和8的不同框。本文所述处理器中的任何处理器可包括在本文所公开的任何计算机系统(例如图12-15)中。在一些实施例中,计算机系统可包括动态随机存取存储器(dram)。备选地,计算机系统可包括无需被刷新的一类易失性存储器或闪速存储器。本文所公开的指令可利用本文所示系统中的任何系统上的具有本文所示微架构中的任何微架构的本文所示处理器中的任何处理器来执行。本文所公开的指令可具有本文所述指令格式的特征的任何特征。
169.在本描述和权利要求中,术语“耦合”和/或“连接”连同它们的衍生可已经被使用。这些术语并不被意指为彼此的同义词。相反,在实施例中,“连接”可被用于指示两个或更多元件彼此直接物理和/或电接触。“耦合”可意味两个或更多元件彼此直接物理和/或电接触。然而,“耦合”还可意味两个或更多元件不彼此直接接触,但仍彼此合作或相互作用。例
如,运行单元可通过一个或多个中间组件来与寄存器和/或解码单元耦合。在附图中,箭头被用于示出连接和耦合。
170.在本描述和/或权利要求中,可已使用术语“逻辑”、“单元”、“模块”、或“组件”。这些术语中的每一个可用于指硬件、固件、软件、或其各种组合。在示例实施例中,这些术语中的每一个可以指集成电路、专用集成电路、模拟电路、数字电路、编程的逻辑装置、包括指令的存储器装置、和诸如此类、以及其各种组合。在一些实施例中,这些可包括至少一些硬件(例如,晶体管、栅极、其它电路组件等)。
171.术语“和/或”可已经被使用。如本文中使用的,术语“和/或”意味一个或另一个或两者(例如a和/或b意味a或b或a和b两者)。
172.在上文描述中,已经陈述了特定细节以便提供实施例的全面理解。然而,可在没有这些特定细节中的某些的情况下实践其它实施例。本发明的范围将不由上文提供的特定示例来确定,但仅由下文权利要求来确定。在其它实例中,众所周知的电路、结构、装置和操作采用框图形式和/或在没有细节的情况下已经被示出,以便避免使本描述的理解模糊。在适当考虑处,附图标记或附图标记的终端部分已经在附图之中重复以指示对应的或类似的元件,其可以可选地具有相似或相同的特性,除非以其它方式被指定或是清楚明显的。
173.某些操作可由硬件组件执行,或在机器可运行或电路可运行的指令中来实施,该机器可运行或电路可运行的指令可被用于促使和/或引起利用指令来编程的机器、电路或硬件组件(例如处理器、处理器的部分、电路等)执行操作。操作还可以可选地由硬件和软件的组合来执行。处理器、机器、电路或硬件可包括特定或具体电路或其它逻辑(例如潜在地与固件和/或软件组合的硬件),其可操作以运行和/或处理指令并且响应于指令来存储结果。
174.一些实施例包括制品(例如计算机程序产品),其包括机器可读介质。介质可包括以由机器可读的形式提供(例如存储)信息的机制。机器可读介质可提供(或已在其上存储)指令或指令的序列,其如果和/或当由机器运行时可操作以促使机器执行和/或引起机器执行本文公开的一个或多个操作、方法或技术。
175.在一些实施例中,机器可读介质可包括非暂态机器可读存储介质。例如,非暂态机器可读存储介质可包括软盘、光存储介质、光盘、光数据存储装置、cd-rom、磁盘、磁光盘、只读存储器(rom)、可编程rom(prom)、可擦除和可编程rom(eprom)、电可擦除和可编程rom(eeprom)、随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、闪速存储器、相变存储器、相变数据存储材料、非易失性存储器、非易失性数据存储装置、非暂态存储器、非暂态数据存储装置等等。非暂态机器可读存储介质不由暂态传播的信号组成。在一些实施例中,存储介质可包括包含固体物质的有形介质。
176.合适的机器的示例包括但不限于通用处理器、专用处理器、数字逻辑电路、集成电路等等。合适的机器的另外其它示例包括计算机系统或其它电子装置,其包括处理器、数字逻辑电路或集成电路。这样的计算机系统或电子装置的示例包括但不限于桌上型计算机、膝上型计算机、笔记本计算机、平板式计算机、上网本、智能电话、蜂窝电话、服务器、网络装置(例如路由器和交换机)、移动互联网装置(mid)、媒体播放器、智能电视、桌面一体机(nettops)、机顶盒和视频游戏控制器。
177.遍及本说明书提到的例如“一个实施例”、“实施例”、“一个或多个实施例”、“一些
实施例”,指示具体特征可被包括在本发明的实践中,但不是必然要求的。类似地,在描述中,各种特征有时被集合在单个实施例、附图或其描述中,以用于简化本公开并帮助理解各种发明的方面的目的。然而,公开的此方法不被解释为反映本发明要求比在每个权利要求中清楚叙述的更多的特征的意图。相反,如下文权利要求所反映,发明的方面在于少于单个公开的实施例的所有特征。因此,在详细描述之后的权利要求由此清楚地合并到该详细描述中,其中每个权利要求独立作为本发明的单独实施例。
178.示例实施例以下示例涉及另外实施例。示例中的具体细节可在一个或多个实施例中的任何地方使用。
179.示例1是一种处理器,所述处理器包括用于解码用于指示第一备选状态的用户级别暂停线程指令的解码单元。处理器还包括与解码单元耦合的执行单元。执行单元可操作以在用户特权级别执行指令。响应于指令,执行单元将:(1)暂停用户级别线程的执行,将已从所述用户级别线程接收到指令;(2)将其上已正运行用户级别线程的逻辑处理器过渡到所指示的第一备选状态;以及(3)当逻辑处理器处于所指示的第一备选状态时,通过这样的延迟来恢复用户级别线程的执行,所述延迟将小于当逻辑处理器处于停止处理器功率状态时可以恢复执行线程的延迟的一半。
180.示例2包括示例1所述的处理器,其中解码单元用于对将具有用于选择第一备选状态作为多个不同可能备选状态中的任何一个的字段的指令进行解码。
181.示例3包括示例2所述的处理器,其中所述多个不同可能备选状态包括第二备选状态。还可选地,其中第二备选状态将允许通过这样的延迟来恢复用户级别线程的执行,所述延迟将不多于逻辑处理器处于停止处理器功率状态时的延迟。
182.示例4包括示例1至3中任一项所述的处理器,还包括存储位置,所述存储位置用于存储监督系统软件施加的超时值。还可选地,其中响应于所述指令,执行单元将:(1)确定监督系统软件施加的超时值已经过期;以及(2)还响应于确定监督系统软件施加的超时值已经过期而可选地恢复用户级别线程的执行。
183.示例5包括示例1至4中任一项所述的处理器,还包括架构上可见的存储位置。响应于所述指令,执行单元将在架构上可见的存储位置中存储由于监督系统软件施加的超时值过期而恢复用户级别线程的执行的指示。
184.示例6包括示例5所述的处理器,其中响应于所述指令,执行单元将通过修改用于存储多个标志的寄存器中的架构标志来存储所述指示。
185.示例7包括示例1至6中任一项所述的处理器,其中解码单元用于解码用于指示用户级别超时值的指令。还可选地,其中响应于所述指令,执行单元将:(1)确定用户级别超时值已经过期;以及(2)还响应于确定用户级别超时值已经过期而可选地恢复用户级别线程的执行。
186.示例8包括示例1至7中任一项所述的处理器,其中,当逻辑处理器处于所指示的第一备选状态时,响应于所述指令,执行单元将通过这样的延迟来恢复用户级别线程的执行,所述延迟将小于逻辑处理器处于停止处理器功率状态时的延迟的五分之一。
187.示例9包括示例1至8中任一项所述的处理器,其中,当逻辑处理器处于所指示的第一备选状态时,响应于所述指令,执行单元将通过将小于五百个时钟周期的延迟来恢复用
户级别线程的执行。
188.示例10包括示例1至9中任一项所述的处理器,其中响应于所述指令,执行单元将恢复用户级别线程的执行而无需退出用户特权级别。
189.示例11是一种处理器中的方法,所述方法包括从用户级别线程接收用户级别暂停线程指令,所述指令指示第一备选状态。所述方法还包括在用户特权级别执行指令,包括:(1)暂停用户级别线程的执行;(2)将其上曾正运行用户级别线程的逻辑处理器过渡到所指示的第一备选状态;(3)当逻辑处理器处于所指示的第一备选状态时,通过这样的延迟来恢复用户级别线程的执行,所述延迟小于当逻辑处理器处于停止处理器功率状态时恢复执行线程的延迟的一半。
190.示例12包括示例11所述的方法,其中接收包括接收具有用于选择第一备选状态作为多个不同可能备选状态中的任何一个的字段的指令。
191.示例13包括示例11至12中任一项所述的方法,其中所述多个不同可能备选状态包括第二备选状态。还可选地,其中第二备选状态允许通过这样的延迟来恢复用户级别线程的执行,所述延迟将不多于逻辑处理器处于停止处理器功率状态时的延迟。
192.示例14包括示例11至13中任一项所述的方法,还包括:(1)确定监督系统软件施加的超时值已经过期;以及(2)响应于确定监督系统软件施加的超时值已经过期而可选地恢复用户级别线程的执行。
193.示例15包括示例14所述的方法,还包括在处理器的架构上可见的存储位置中存储由于监督系统软件施加的超时值过期而恢复了用户级别线程的执行的指示。
194.示例16包括示例15所述的方法,其中存储所述指示包括修改用于存储多个架构标志的寄存器中的架构标志,并且还包括访问来自处理器的控制寄存器的监督系统软件施加的超时值。
195.示例17包括示例11至16中任一项所述的方法,其中接收包括接收指示用户级别超时值的指令,还可选地,所述方法还包括:(1)确定用户级别超时值已过期;以及(2)响应于确定用户级别超时值已过期而可选地恢复用户级别线程的执行。
196.示例18包括示例11至17中任一项所述的方法,其中当逻辑处理器处于所指示的第一备选状态时,恢复用户级别线程的执行是通过这样的延迟的,所述延迟小于逻辑处理器处于停止处理器功率状态时的延迟的五分之一。
197.示例19包括示例11至19中任一项所述的方法,其中执行恢复用户级别线程的执行而无需退出用户特权级别。
198.示例20是一种用于处理指令的系统,所述系统包括互连以及与互连耦合的处理器。处理器用于接收用户级别暂停线程指令。用于指示的所述指令用于指示第一备选状态。处理器可操作以在用户特权级别执行所述指令,并且响应于所述指令,将:(1)暂停对应于的用户级别线程的执行;(2)将在其上将已运行用户级别线程的具有专用上下文和专用程序计数器的单线程核、硬件线程、线程单元、线程槽、和逻辑处理器中的一个过渡到所指示的第一备选状态;以及(3)当所述一个处于所指示的第一备选状态时,通过这样的延迟来恢复用户级别线程的执行,所述延迟将小于所述一个处于停止处理器功率状态时可以恢复执行线程的延迟的一半。所述系统还可选地包括与互连耦合的动态随机存取存储器(dram)。
199.示例21包括示例20所述的系统,其中所述指令将具有用于选择第一备选状态作为
多个不同可能备选状态中的任何一个的字段。
200.示例22是一种包括非暂态机器可读存储介质的制品。非暂态机器可读存储介质存储用户级别暂停线程指令。所述指令可操作以指示第一备选状态。所述指令可操作以在用户特权级别执行。所述指令如果由机器来执行则促使所述机器执行包括以下操作的操作:(1)暂停对应于所述指令的用户级别线程的执行; (2)将在其上将已运行用户级别线程的具有专用上下文和专用程序计数器的单线程核、硬件线程、线程单元、线程槽、和逻辑处理器中的一个过渡到所指示的第一备选状态;以及(3)从处于所指示的第一备选状态的逻辑处理器中,通过这样的延迟来恢复用户级别线程的执行,所述延迟小于逻辑处理器处于停止处理器功率状态时恢复执行线程的延迟的一半。
201.示例23包括示例22所述的制品,其中所述指令具有用于选择第一备选状态作为多个不同可能备选状态中的任何一个的字段。
202.示例24包括示例22至23中任一项所述的制品,其中所述指令如果由机器来执行则将进一步促使机器执行包括以下操作的操作:(1)确定监督系统软件施加的超时值已经过期;以及(2)响应于监督系统软件施加的超时值已经过期的确定而可选地恢复用户级别线程的执行。
203.示例25包括示例22至24中任一项所述的制品,其中所述指令如果由机器来执行则将进一步促使机器执行包括以下操作的操作:(1)确定用户级别超时值已过期;以及(2)响应于确定用户级别超时值已过期而可选地恢复用户级别线程的执行。
204.示例26包括示例1至10中任一项所述的处理器,还包括用于预测分支的可选分支预测单元,以及与分支预测单元耦合的可选指令预取单元,指令预取单元用于预取包括用户级别暂停线程指令的指令。处理器可选地还可包括与指令预取单元耦合的可选1级(l1)指令高速缓存、用于存储指令的l1指令高速缓存、用于存储数据的可选l1数据高速缓存、以及用于存储数据和指令的可选2级(l2)高速缓存。处理器可选地还可包括指令获取单元,所述指令获取单元用于与解码单元、l1指令高速缓存、以及l2高速缓存耦合以在一些情况下从l1指令高速缓存和l2高速缓存之一中获取用户级别暂停线程指令,并用于向解码单元提供用户级别暂停线程指令。处理器可选地还可包括用于重命名寄存器的寄存器重命名单元、用于调度已经从用户级别暂停线程指令解码以供运行的一个或多个操作的可选调度器,以及用于提交用户级别暂停线程指令的执行结果的可选提交单元。
205.示例27包括一种芯片上系统,所述芯片上系统包括至少一个互连、与所述至少一个互连耦合的示例1至10中任一项所述的处理器、与所述至少一个互连耦合的可选图形处理单元(gpu)、与所述至少一个互连耦合的可选数字信号处理器(dsp)、与所述至少一个互连耦合的可选显示控制器、与所述至少一个互连耦合的可选存储器控制器、与所述至少一个互连耦合的可选无线调制解调器、与所述至少一个互连耦合的可选图像信号处理器、与所述至少一个互连耦合的可选通用串行总线(usb)3.0兼容控制器、与所述至少一个互连耦合的可选bluetooth 4.1兼容控制器、以及与所述至少一个互连耦合的可选无线收发器控制器。
206.示例28是一种处理器或其它设备,其可操作以执行示例11至19中任一项所述的方法。
207.示例29是一种处理器或其它设备,其包括用于执行示例11至19中任一项所述的方
法的部件。
208.示例30是一种处理器或其它设备,其包括可操作以执行示例11至19中任一项所述的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任何组合。
209.示例31是一种可选非暂态和/或有形机器可读介质,所述介质可选地存储或者以其它方式提供包括第一指令的指令,所述第一指令如果和/或在由处理器、计算机系统、电子装置、或其它机器执行时可操作以促使所述机器执行示例11至19中任一项所述的方法。
210.示例32是一种基本上如本文所述的处理器或其它设备。
211.示例33是一种处理器或其它设备,其可操作以执行基本上如本文所述的任何方法。
212.示例34是一种处理器或其它设备,其可操作以执行基本上如本文所述的任何用户级别暂停线程指令。
213.示例35是一种计算机系统或其它电子装置,其包括具有可操作以对第一指令集的指令进行解码的解码单元的处理器。所述处理器还具有一个或多个执行单元。所述电子装置还包括与所述处理器耦合的存储装置。所述存储装置可操作以存储第一指令,所述第一指令可以是基本上如本文所公开的任何指令,并且所述第一指令将属于第二不同指令集。存储装置还可操作以存储用于将第一指令转换为第一指令集的一个或多个指令的指令。第一指令集的所述一个或多个指令在由所述处理器执行时可操作以促使所述处理器与如果直接执行的第一指令具有相同的效果。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1