用于提交指令的选择性执行的方法、设备和系统的利记博彩app
【专利摘要】用于确定是否要执行提交动作的处理器的技术和机制。在实施例中,处理器执行多项操作以确定提交指令是否用于提交动作的有条件执行。在另一个实施例中,响应于确定该提交指令用于该提交动作的有条件执行,对处理器状态的一个或多个条件进行评价,其中执行该评价以确定是否要执行该提交指令所指示的提交动作。
【专利说明】用于提交指令的选择性执行的方法、设备和系统
发明背景
1.发明领域
[0001]各实施例总体上涉及数据处理器装置的操作。更具体地,某些实施例涉及用于确定处理器是否要执行由提交指令所指示的提交动作的机制。
2.【背景技术】
[0002]现代的处理器设计实现了完善的检查点设置机制一例如,寄存器检查点设置和存储器检查点设置一其允许优化器逻辑来创建有待推测性地执行的代码的激进优化版本。在证明推测性执行是正确的情况下,通过提交动作将推测性状态提升为已提交架构状态。另一方面,不正确的推测性执行弓I起处理器状态被回滚到先前的、一致的状态。
[0003]由于资源加载以及存储操作需要,提交指令和它们调用的提交动作对处理器性能造成巨大开销,特别是在多核环境下。例如,为了保证存储器一致性,提交点需要在多处理器的高速缓存系统中全局地观察所有未决存储器操作。其结果是,直到非核观察到所有未决存储器缺失项时才可以认为提交是完整的。由于这种要求,在有序处理器设计下,提交动作典型地生成暂停循环的约5% -10%。
附图简要说明
[0004]通过示例但不是限制性地在附图中的图中展示了本发明的各实施例,在附图中:
[0005]图1为框图,展示了根据实施例的用于传送提交指令的计算机平台的某些组件。
[0006]图2为框图,展示了根据实施例的用于确定是否执行提交指令所指示的提交动作的处理器的某些元件。
[0007]图3为流程图,展示了根据实施例的用于对提交指令进行处理的方法的某些元素。
[0008]图4为框图,展示了根据实施例的提交指令的某些元素。
[0009]图5为逻辑图,展示了根据实施例的用于对条件性提交指令进行处理的电路的某些元素。
详细说明
[0010]可以将提交指令或动作分类为需要执行提交动作以获得正确的功能性(例如,否则系统不工作)的提交指令和被执行是例如仅因为优化器逻辑具有有限优化范围的提交指令。可以跳过这后一组的提交指令或动作而不影响正确性,但会影响性能和能力(向好的方向或向坏的方向)。例如,在由若干编译阶段组成的软件优化器系统中,其中第一阶段由一次对一个指令进行解释并在每一个之后提交状态的解释器或仿真器所组成,对这些提交有正确性要求。另一方面,当执行在其他编译阶段中所优化的代码的版本时,所添加的提交指令中的一些指令可以仅仅由于优化器逻辑的有限范围而被添加,并且在不影响正确性情况下可被跳过。
[0011]本文讨论的实施例以不同方式提供了用于确定是否要由处理器执行提交动作的技术和机制。如本文所使用的,“提交动作”是指由处理器执行的(或要执行的)用于将某一先前的仅推测性的状态提升至有效处理器状态水平的一个或多个操作的集合,这些先前的仅推测性的状态在提交动作之前已经受了在某一回滚操作中被处理掉的可能性。
[0012]如本文中所使用的,“提交指令”(或“提交消息”)是指用于向处理器指示将要执行提交动作的可能性的通信。在实施例中,提交指令可以指示必须执行提交动作一例如,至少在如下情况下:提交指令的发送旨在命令提交动作的执行而不管任何其他处理器状态。为了简洁,这种命令在本文中被称为绝对命令。可替代地,提交指令可以指示提交动作的仅仅是有条件执行(contingent performance)一至少在如下情况下:提交指令的发送旨在命令处理器进一步对处理器状态的一个或多个条件进行评价,作为确定是否要执行所指示的提交动作的依据。为了简洁,这种命令在本文中被称为条件命令。
[0013]处理器可以执行对提交指令的评价以确定该提交指令是否用于提交动作的有条件执行一例如,该提交指令是否代表有别于绝对提交命令的有条件命令。确定提交指令代表绝对提交命令可以包括确定所代表的命令不是有条件的。类似地,确定提交指令代表条件性提交命令可以包括确定所代表的提交命令不是绝对的。
[0014]确定提交命令是绝对的可以例如是用于处理器开始相应的提交动作的充分条件。与此相反,确定提交命令是条件性的可以例如致使处理器发起对一个或多个附加条件的评价以确定是否要执行相应的提交动作。这种评价可被执行例如用以识别要执行提交动作和/或用以识别不要执行提交动作。为了简洁,用于确定提交指令所代表的提交命令的绝对性质或确定其条件性质的一个或多个操作在本文中被称为“有条件性测试”。
[0015]如本文中所使用的,“提示信息”是指有条件性测试所测试的和/或以其他方式所评价的信息一在如下情况下:这种信息可以用作关于提交动作是否将产生自对提交指令的处理的提示。以示例性但非限制性的方式,有条件性测试可以确定某些提示信息的一个或多个值和/或仅测试某些提示信息的存在(或不存在)。
[0016]在实施例中,可以在提交指令本身中提供提示信息。以示例性但非限制性的方式,提交指令可以包括用于存储表达指令具有提交指令类型的信息的字段,此处该字段被称为“命令字段”。提交指令类型可以例如是要对该提交指令进行处理的处理器的指令集内包括的或其以另外方式支持的指令类型。
[0017]在实施例中,给定指令的命令字段中的信息可以表达通用提交指令类型一例如,在可能需要参考该命令字段以外的附加信息从而解决那个具体的命令指令是否用于有条件提交命令或绝对提交命令的情况下。在替代性实施例中,给定指令的命令字段中的信息可以具体地表达多种不同的提交指令类型其中之一一例如,绝对提交指令类型和有条件提交指令类型中的一种一其中在这些不同的提交指令类型之间区分处理器的指令集。
[0018]在实施例中,有条件性测试可以附加地或可替代地基于提交指令中提示信息的存在和/或提示信息的不存在一例如,除了命令字段信息以外的信息。以示例性但非限制性的方式,提交指令可以包括一个或多个参数一例如,包括在位、标记或其他这种字段存储的参数一每个参数用于存储对应值,该对应值指定或以另外方式指示所代表的提交命令是有条件的还是绝对的。有条件性测试可以对这种字段中存储的值进行评价,或在一实施例中仅测试存在或不存在这种字段。
[0019]附加地附加地或可替代地,独立于提交指令,可以使得提示信息对处理器是可获取的一例如,在某个单独通信已经将处理器配置成将提交指令识别为代表有条件提交或者绝对提交的之一情况下。[0020]以示例性但非限制性的方式,处理器可以存储或以另外的方式访问配置信息,该配置信息指定了提交指令被假定为(不存在相反的指示的情况下)有条件的或者绝对的之一。在实施例中,可以参考这种配置信息来确定是否要执行有条件性测试、或是否有必要发起提交动作。
[0021]图1示出了根据实施例的用于确定是否执行提交动作的示例性计算机平台100的元件。计算机平台100可以例如包括个人计算机(如台式计算机、膝上型计算机、手持式计算机(例如,平板计算机、掌上型计算机、蜂窝电话、多媒体播放器和/或类似物))、和/或其他这样的计算机系统的硬件平台。可替代地或附加地,计算机平台100可以提供作为服务器、工作站、或其他这样的计算机系统来运行。
[0022]在实施例中,计算机平台100包括总线101或其他用于传送信息的这种硬件以及用于处理这种信息的处理器109—例如,中央处理单元。处理器109可以包括复杂指令集计算机(CISC)型架构、精简指令集计算机(RISC)型架构和/或多种处理器架构类型中任何类型的功能性一例如,其中处理器109通过总线101与计算机平台100的一个或多个其他组件相耦合。以示例性但非限制性的方式,计算机平台100可以包括以连接到总线101上的由示例性主存储器104所代表的随机存取存储器(RAM)或其他动态存储装置,用于存储将由处理器109执行的信息和/或指令。主存储器104还可以用于在处理器109执行指令的过程中存储临时变量或其他中间信息。附加地附加地或可替代地,计算机平台100可以包括只读存储器(ROM) 106和/或其他静态存储装置(例如,其中R0M106通过总线101耦合到处理器109)以存储用于处理器109的静态信息和/或指令。
[0023]在实施例中,附加地或可替代地,计算机平台100包括数据存储装置107(例如,磁盘、光盘、和/或其他机器可读介质),数据存储装置107例如通过总线101连接到处理器109。数据存储装置107可以例如包括有待在处理器109上运行的和/或以另外方式被处理器109访问的指令或其他信息。在实施例中,处理器109可以确定是否执行提交动作,该确定基于提交指令和/或从主存储器104、R0M106、数据存储装置107或任何其他合适的数据源接收的其他信息。
[0024]附加地或可替代地,计算机平台100可以包括用于向计算机用户显示信息的显示装置121。显示装置121可以例如包括帧缓冲器、专用图像渲染装置、阴极射线管(CRT)、平板显示器和/或类似物。附加地或可替代地,计算机平台100可以包括输入装置122,该输入装置包括字母数字键和/或其他键来接收用户输入。附加地或可替代地,计算机平台100可以包括光标控制装置123(如鼠标、跟踪球、笔、触摸屏、或光标方向键)用于将位置、选择或其他光标信息传送至处理器109、和/或控制光标例如在显示装置121上的移动。附加地或可替代地,计算机平台100可以包括硬拷贝装置124(如打印机)、录音/回放装置125 (如扩音器或扬声器)、数字视频装置126 (如静止或移动照相机)和/或类似物。
[0025]在实施例中,计算机平台100包括或耦合到网络接口 190,网络接口 190用于将计算机平台100连接到一个或多个网络(未示出)一例如,包括专用存储区域网(SAN)、局域网(LAN)、广域网(WAN)、虚拟LAN (VLAN)、互联网和/或类似物。以示例性但非限制性的方式,网络接口 190可以包括网络接口卡(NIC)、天线(如偶极天线)、或无线收发器中的一个或多个,尽管本发明的范围在此方面没有限制。
[0026]处理器109可以支持与多种常规指令集中的任何指令集中的指令类似的指令一例如,与现有处理器所使用的x86指令集兼容的指令集。以示例性但非限制性的方式,处理器109可以支持与如美国加利福尼亚州圣克拉拉市的英特尔公司(Intel Corporation)所定义的IA?英特尔架构中支持的一些或所有操作对应的操作(见“IA-32 Intel?架构软件开发者手册第2卷:指令集参考(IA-32 Intel? Architecture SoftwareDevelopers Manual Volume2:1nstruction Set Reference) ”,序列号 245471,可在万维网上在developer, intel.com网站处从美国加利福尼亚州圣克拉拉市的英特尔公司获得)。其结果是,除了某些实施例的操作以外,处理器109还可以支持例如与现有x86操作对应的一项或多项操作。
[0027]根据实施例,处理器109可以进一步包括用于处理提交指令的电路逻辑。以示例性但非限制性的方式,处理器109可以包括解码器130,解码器130用于检测处理器109已经接收到的或以另外方式访问的提交指令。提交解码器130可以例如根据处理器109的指令集(未示出)对所检测到的提交指令进行解码。处理器109可以进一步包括执行单元140,执行单元140用于执行所解码的提交指令。
[0028]在实施例中,解码器130和执行单元140对提交指令的处理可以包括确定提交指令是否用于提交动作的有条件执行一即,提交指令是否代表有条件提交命令。处理器109可以进一步包括或以另外方式访问状态信息150,该状态信息代表一个或多个条件,该一个或多个条件例如响应于提交指令是提交指令的有条件执行的某种确定而有待评价。对状态信息150中的一个或多个条件的评价可以导致提交指令所指示的提交动作被执行。可替代地,对状态信息150的一个或多个条件的评价可以导致所指示的提交动作被一起避免。
[0029]根据实施例,计算机平台100的架构说明了用于对提交指令进行处理的计算机系统。然而,在一些实施例中,计算机平台100的架构(例如,耦合用于与处理器109交换通信的装置的具体数量和类型和/或这种装置相对于彼此的相对配置)是没有限制的。
[0030]图2展示了根据实施例的用于处理提交指令的处理器200的元件。处理器200可以在具有计算机平台100的一些或所有特征的计算机平台内运行一例如,其中处理器200包括处理器109的一些或所有功能性。处理器200可以是多种处理器类型中的任何一种类型,如单核处理器或包括多个同构或异构核的多核处理器。
[0031]在实施例中,处理器200包括三组通用功能组成部分,即,前端(FE)210、存储器子系统(MS) 220、以及(BE)后端230。FE210可以例如包括支持某种常规指令解码功能性的逻辑一例如,用于支持按序执行或乱序执行。附加地或可替代地,BE230可以包括例如保留站、引退缓冲器、执行单元、寄存器堆和/或其他架构元件的某些常规功能性一来调节数据执行的流程。在某些实施例中,提供功能性(如英特尔架构"*(从32)处理器、FE210和BE230的功能性)可以进一步通过以下事实进行区别:FE210主要处理宏操作,这些宏操作为汇编指令,而BE230处理经解码的微操作(μ op),这些经解码的微操是与宏操作具有多对一映射的更简单指令。
[0032]相应地,如图2中所示,示例性前端210可以包括例如指令高速缓存和获取逻辑212以从较低高速缓存级别(例如,存储器子系统220的高速缓存222)获得指令信息一例如,从而临时地存储预期在不久后或多次使用的指令。对指令进行解码的一个或多个解码器213以及存储与指令集215相关的未决指令的指令队列214可以耦合到指令高速缓存212。尽管某些实施例在此方面没有限制,分支预测单元(BPU)216可以附加地或可替代地存在于FE210中以预测在程序执行过程中有待采用的分支,从而使得可以提前获得与所预测的分支相关联的指令。
[0033]在实施例中,指令集215定义或以另外方式支持提交指令类型218。解码器213可以包括或以另外方式访问用于对提交指令类型218的指令进行解码的逻辑。在实施例中,对这种提交指令进行解码可以包括执行一项或多项操作以确定提交指令是否用于提交动作的有条件执行。在替代性实施例中,有条件性测试的这种执行可以是后端230对已解码的提交指令的执行的一部分。
[0034]如所示,前端210可以与存储器子系统220进行通信。子系统220可以包括一个或多个高速缓存222—例如,包括I级(LI)和2级(L2)高速缓存,其中LI高速缓存可以是数据高速缓存,并且L2高速缓存可以是包括数据和指令两者的统一的高速缓存。为了辅助地址转换,子系统220可以进一步包括一个或多个常规机制,如数据转换旁路缓冲器(DTLB) 224,并且在某些实施例中包括页面未命中处理器(?1^)226—例如,从而当011^224出现未命中时帮助从存储器层级的其他级别访问所请求的信息。又进一步地,存储器子系统可以包括存储器顺序缓冲器(MOB) 228,其可以包括存储和加载缓冲器以存储与未决数据传递指令相关联的条目,例如,存储或加载指令。然而,某些实施例在关于用于辅助访问高速缓存222的存储器子系统220的具体组件上可以没有限制。
[0035]后端230进一步耦合到前端210和存储器子系统220两者上,该后端可以用于例如执行前端210所解码的指令。如图2中所示,示例性后端230可以包括寄存器堆233a、影子寄存器堆233b和一个或多个执行单元234,该一个或多个执行单元可以包括一个或多个整数单元、浮点单元、向量单元和/或类似物。又进一步地,后端230可以包括保留站236,这些保留站可以用于向执行单元234提供指令和操作数。进而,通过分配和重命名表238向保留站236提供条目,伴随着对某一有限数量的逻辑寄存器到寄存器堆233a和/或影子寄存器233b中存在的更大数量 的物理寄存器的任意重命名,这些分配和重命名表可以从前端210接收入指令并将它们分配给各种资源,包括执行单元234和寄存器堆232。
[0036]后端230可以包括一个或多个用于执行所解码的提交指令(例如,包括由处理器200进行的对提交动作的执行)的组件。某些包括提交动作本身的操作可以根据用于提交处理器状态的一种或多种常规技术。该提交可以导致寄存器堆233a被拷贝进影子寄存器堆233b并且与高速缓存222的一行或多行相对应的推测性位被清除。在实施例中,直到所有这些动作完成才可以引退提交指令。
[0037]在执行单元234进行的对代码的某种后续推测性执行的过程中,可以将推测性状态信息写入到寄存器堆233a和/或到存储器子系统220,从而对高速缓存222的一条或多条推测性高速缓存行状态进行描述。当执行回滚动作后,可以丢弃推测性存储器请求,可以将影子寄存器堆233b拷贝回寄存器堆233a,并且高速缓存22中推测性位被置位的所有高速缓存行可以被设置成是无效的。在实施例中,直到所有这些动作完成才可以引退回滚指令。
[0038]当确定提交指令用于提交动作的条件性执行时,一个或多个执行单元234可以对状态信息(例如,由处理器的一个或多个状态寄存器240的示例性集合所代表)进行评价。该一个或多个状态寄存器240可以例如不同地存储代表当前处理器状态的信息,该代表当前处理器状态的信息在处理器200的各指令执行和/或其他进行中的操作过程中被定期地更新。以示例性但非限制性的方式,一个或多个状态寄存器240可以存储自从具体事件以来(例如,自从最近的提交动作以来,自从最近的回滚和/或类似事件以来)已经执行的指令的数量的计数。可替代地或附加地,一个或多个状态寄存器240可以存储当前执行未决的指令的数量的计数、还有待全局观察的未决存储器请求的数量的计数、识别任何中断当前是否为未决的信息、或处理器状态的多种附加或替代性方面中的任何一种。
[0039]在实施例中,处理器200可以使用例如存储在状态寄存器240和/或其他地方的其他信息来对处理器状态进行评价。以示例性但非限制性的方式,处理器200可以访问指定一个或多个阈值的信息一一个或多个阈值例如,自从具体事件以来已经执行的指令的阈值数量、当前执行未决的指令的阈值数量、当前未决中断的阈值数量和/或类似物中的一个或多个。
[0040]当有条件提交命令的某个或某些条件的评价识别出没有满足一个或多个条件,则提交指令所指示的提交动作可以被一起避免(“跳过”)。所跳过的提交动作可以充当处理器200的流水线中的NOP指令。如此,在处理器状态的各条件下,代表有条件命令的提交指令可以不执行上述操作中的任一项操作来实施提交动作。反而,响应于没有满足一个或多个条件,可以引退该提交指令。
[0041]图3展示了根据实施例的用于处理提交指令的方法300的元素。可以例如由包括处理器200的一些或所有特征的处理器来执行方法300。
[0042]在实施例中,方法300包括:在310,检测指示提交动作的提交指令。例如,在执行某个代码指令序列的过程中,可以将提交指令发送到处理器,或由处理器检索或以另外方式访问提交指令。方法300可以进一步包括:在320,例如响应于对提交指令的检测,确定该提交指令是否用于提交动作的有条件执行。在实施例中,这种确定可以基于命令指令的命令有条件性参数的值一例如,提示位参数中的值。这可以是例如该提交指令具有对提交动作命令的绝对执行和提交动作的有条件执行两者是通用的提交指令类型的情况。
[0043]可替代地或附加地,其他信息可以用作为提交指令的有条件性测试的依据。例如,在310检测到的提交指令可以包括命令字段,该命令字段存储有指定该提交指令的指令类型的信息一例如,其中处理器的指令集定义或以另外方式支持该指令类型。确定提交指令是否用于提交动作的有条件执行可以基于这种指示提交指令类型的命令字段,该提交指令类型被特定为提交动作的有条件执行一例如,如区别于提交动作的绝对执行。
[0044]在对通用提交指令类型的指令进行处理时,当不存在包括指定该指令代表绝对提交命令的有条件性参数信息的指令时,处理器可以被配置成用于实施如下假定:将该提交指令类型的该指令认为是代表有条件提交命令。在替代性实施例中,当不存在包括指定该指令代表有条件提交命令的有条件性参数信息的指令时,处理器可以被配置成用于实施如下另一个假定:将该提交指令类型的该指令替代地认为是代表绝对提交命令。
[0045]基于提交指令是否用于提交动作的有条件执行的确定,方法300可以包括:在330,生成信号,该信号指示是否要对一个或多个条件进行评价以确定是否要执行该提交动作。例如,可以从处理器的前端的解码器逻辑交换这种信号以确定处理器的后端的执行单元的操作。在替代性实施例中,可以在处理器的后端的一个或多个执行单元内的功能组件之间交换这种信号。
[0046]在一个实施例中,可以由处理器的解码器执行在320的确定。在替代性实施例中,可以在已经完成解码之后由处理器的执行单元执行该确定。相应地,可以由包括解码器和执行单元的处理器电路逻辑集合执行在320的确定和在330的信号生成,尽管解码器和执行单元对这种操作的对应贡献可能根据不同实施例而不同。
[0047]根据不同实施例,对方法300所示的诸个操作可跟随有一项或多项附加操作。例如,当确定提交指令是用于提交动作的有条件执行时,可以执行对一个或多个条件的评价以识别是否要执行该提交动作。在实施例中,有待评价的一个或多个条件包括与处理器正在接收该提交指令相独立的处理器状态。
[0048]图4展示了根据实施例的有待处理的提交指令400的元素。可以由具有例如处理器200的一些或所有特征的处理器来处理提交指令400。在实施例中,提交指令400的处理可以根据方法300。
[0049]提交指令400可以包括指示提交动作的信息一例如,其中该信息指示这种提交动作通过提交指令的执行而要被执行的可能性。例如,提交指令400可以包括指示提交指令400是否是用于这种提交动作的条件性执行的信息。
[0050]例如,提交指令400可以包括命令字段410,命令字段410存储有指定具体提交指令类型的信息。命令字段410中的信息可以例如识别特定为有条件提交命令和绝对提交命令中具体一种的指令类型。可替代地,命令字段410中的信息可以识别至少在指令类型用于代表有条件提交命令或者绝对提交命令之一的情况下是通用的提交指令类型。
[0051 ] 提交指令400可以附加地或可替代地包括用于指示提交指令400是否用于提交动作的条件性执行的一个或多个参数。例如,提交指令400可以包括提示字段420,提示字段420用于存储位值、标记值和/或其他这种信息以代表提交指令所代表的命令的有条件性状态(例如,有条件的或者绝对的之一)。
[0052]在实施例中,提交指令420可以包括一个或多个附加参数、或其他信息,从而帮助评价提交指令的执行是否导致提交动作的执行。以示例性但非限制性的方式,提交指令400可以包括识别有待评价的一个或多个条件以确定是否要执行提交动作的信息(未示出)。可替代地或附加地,提交指令400可以包括识别在对一个或多个条件的评价中有待使用的一个或多个阈值等级从而执行提交动作的信息(未示出)。
[0053]图5为根据实施例的电路500的功能展现,该电路被配置成用于评价一个或多个条件以确定是否要执行提交指令中所指示的提交动作。电路500可以例如位于包括处理器200的一些或所有特征的处理器的电路逻辑内,尽管某些实施例在此方面上没有限制。例如,电路500可以包括在执行提交指令的一个或多个执行单元234中的一个中或以另外方式对执行提交指令的一个或多个执行单元234中的一个可用。
[0054]电路500的工作可以响应于对给定的提交指令用于提交动作的有条件执行的确定。这种执行可以例如至少在其经受电路500所执行的评价的结果的情况下是有条件的。在图5中所示的示例性场景中,电路500将接收用于对一个或多个条件进行评价的一个或多个输入510的集合从而执行(或可替代地,从而不执行)在提交指令中指示的提交动作。
[0055]以示例性但非限制性的方式,处理器可以提供一个或多个配置寄存器,其中,优化器例如可以存储指定两个提交点之间和/或回滚与提交之间的所执行的指令的最大数量的信息。尽管跳过若干连续的跳过提交指令可能是有利的,但在某个点处,执行提交比起跳过另一个提交机会而言是更高效的。例如,在当前处理器状态意味着回滚将需要撤销太多工作(从而潜在地引起功率和性能问题)时会是这种情况。在实施例中,电路500可以包括或以另外方式访问对已执行的指令进行计数的计数器寄存器。可以定期将这种计数器与某一指定的阈值进行比较,并且每当执行提交或回滚动作时就将计数器复位至零。该比较的结果可以强制在执行提交指令时进行提交,例如,当提交指令指示可跳过的提交动作但自从最后的提交点以来处理器已经执行了足够的指令时。零阈值可以强制将所有可跳过的提交指令进行提交。在实施例中,优化器或其他代理可以修改阈值一例如,为了使不同地使处理器在操作期间的行为不同地适应于诸个具体情况。用于确定和/或调整这种阈值的探索机制可以根据应用特定的实施细节而不同,并且在某些实施例上没有限制。
[0056]附加地或可替代地,电路500可以接收的输入(例如基于来自存储器子系统的信号),该输入识别了对还有待全局观察的存储器请求的数量的当前计数。例如,如果假设(为了简化的缘故)访问LI数据高速缓存的每个未命中的存储器请求使用N个循环来有待全局观察,则COMMIT (提交)、MEMORY (存储器)、COMMIT、MEMORY和COMMIT的示例性指令序列可以暂停执行流水线达2N个循环(在第二提交点处的N个循环并且在第三提交点处的 N 个循环)。另一方面,COMMIT、MEMORY、COMMIT SKIPPED (提交跳过)、MEM0RY 和 COMMIT的序列可以暂停流水线仅N个循环(在该第三提交点处),因为等待全局观察的两个存储器请求均将被重叠。
[0057]因此,处理器可以包括对等待全局观察的存储器请求的数量进行计数的计数器寄存器。可以将此计数器与另一个配置寄存器进行比较,通过该比较,优化器可以指定等待全局观察的存储器请求的阈值最小数量。如果等待全局观察的未决存储器请求少于阈值寄存器所指定的那些,则可以强制进行提交。例如,只要存在全局观察未决的存储器请求(并且如果其他所有条件保持不变),这种寄存器的零值会引起诸个可跳过的提交动作被跳过。
[0058]附加地或可替代地,处理器可以将未决中断的数量用作为附加输入或替代输入以决定是执行还是跳过可跳过的提交动作。具体地,如果自从最后的提交点或回滚点以来存在未决中断,则可以执行可跳过的提交动作。当两个提交之间的代码执行是推测性的,当执行提交点之间的代码时典型地阻止中断,并且如果在中间出现中断则可能需要回滚至先前的一致的状态。然而,由于延迟中断过长而引起执行风险,每当提交指令指示有条件提交命令时如果中断是未决的则可以强制执行可跳过的提交动作。
[0059]鉴于上述考虑,以下对根据一个实施例的电路500的示例性运行的特征进行讨论。以示例性但非限制性的方式,用于电路500的一个或多个输入510的集合可以包括对自从最近的提交动作或回滚操作以来已经执行的指令的数量的当前计数进行识别的输入。可替代地或附加地,该一个或多个输入510可以包括对等待全局观察的存储器访问请求的当前数量进行识别的输入和/或对任何中断当前是否未决进行识别的输入。
[0060]在一个实施例中,一个或多个阈值510可以进一步包括不同的阈值一例如,包括已经执行的指令的最大阈值数量和/或等待全局观察的存储器请求的最小阈值数量。图5中所示的具体输入510仅说明了根据一个实施例的一种场景。然而,根据不同实施例,电路500可以接收多种的一个或多个附加或替代性输入中的任何一个。
[0061]对于有条件提交命令的一个或多个条件的评价可以包括一个或多个输入510,一个或多个输入510各自被不同地提供到电路500的更多逻辑元件520中的对应的多个元件。以示例性但非限制性的方式,逻辑元件520可以包括用于通过自从最近的提交动作或回滚操作以来所执行的指令的输入数量来确定是否已经超过了某一最大阈值数量的电路。可替代地或附加地,逻辑元件520可以确定等待全局观察的存储器请求的输入当前数量是否在某一最小阈值数量以下。可替代地或附加地,逻辑元件520可以确定任何中断是否当前未决。
[0062]在电路500的示例性方案中,可以进一步地由逻辑元件520对上述确定的对应的结果进行操作一例如,在此对这些对应的结果彼此求或(OR)。然而,逻辑元件520的具体评价操作仅说明了根据一个实施例的一个场景。根据不同实施例,电路500可以执行一个或多个附加或替代性评价操作的多种组合中的任何一种。
[0063]基于对一个或多个输入510的集合进行的逻辑操作,逻辑元件520可以生成信号530,信号530指示当前处理器状态是否满足用于提交动作的有条件执行的更多条件中的一个条件。信号530可以识别提交动作将被执行或以另外方式提供用于识别提交动作将被执行的依据。例如,信号530与指示540进行逻辑求与(AND),指示540表示提交指令的提示位被设置为指示有条件提交命令。基于信号530和指示540,可以生成输出550,该输出550致使执行提交指令中所指示的提交动作。
[0064]本文中描述了用于操作处理器的技术和架构。在以上描述中,出于解释的目的,阐述了许多具体的细节以便提供某些实施例的彻底理解。然而,可以在没有这些具体的细节的情况下实践某些实施例对本领域的技术人员而言将是明显的。在其他实例中,为了避免使本说明书模糊,以框图的形式示出了结构和装置。
[0065]本说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例所描述的具体特征、结构、或特性包括在本发明的至少一个实施例中。短语“在一个实施例中”在本说明书中各地方的出现不一定全都引用相同的实施例。
[0066]就对计算机存储器内的数据比特进行的操作的算法和符号表示而言,在此介绍了详细描述的一些部分。这些算法描述和表示为计算领域的技术人员用于最有效地向本领域的其他技术人员传达其工作的实质的手段。此处并且通常想到算法是产生所期望的结果的自相一致的一序列步骤。这些步骤为需要物理量的物理操纵的那些步骤。通常地但不一定,这些量采用能够被存储、传递、组合、比较、以及以另外方式操纵的电或磁信号的形式。主要出于常见用法的原因,多次证明以位、值、元素、符号、字符、术语、数字、或类似物引用这些信号是方便的。
[0067]然而,应记住所有这些和相似术语与适当的物理数量相关联并且仅是应用于这些量的方便标记。如从本文中的讨论中明显的是,除非另有具体规定,否则应认识到,贯穿本说明书,使用如“处理”或“计算”或“运算”或“确定”或“显示”等术语的讨论是指计算系统或类似的电子计算装置的动作和过程,该动作和过程将计算机系统的寄存器和存储器内展现为物理(电子)量的数据操纵和变换为计算机系统的存储器、寄存器或其他此类信息存储、传输或显示装置内的类似地展现为物理量的其他数据。
[0068]某些实施例还涉及用于执行本文中的操作的设备。此设备可以是为所需目的而专门构建的,或其可以包括被存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可以存储在计算机可读存储介质中,如但不限于任何类型的磁盘(包括软磁盘、光盘、CD-ROM、以及磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)(如动态RAM(DRAM))、EPR0M、EEPR0M、磁性或光学卡,或任何类型的适合于存储电子指令并且连接到计算机系统总线上的介质。
[0069]本文中所介绍的算法和显示器并非本来就与任何具体的计算机或其他设备相关。各种通用系统可以与根据本文中的教导的程序一起使用,或者可以证明构建更加专用的设备来执行所需的方法步骤是方便的。多种这些系统所需的结构将从本文中的描述中出现。附加地,没有引用任何具体的编程语言来描述某些实施例。将认识到多种编程语言可以用于实施如本文中所描述的这种实施例的教导。
[0070]除了本文中所描述的以外,在不脱离其范围的情况下,可以对其所披露的实施例和实现方式进行各种修改。因此,应在示例性但非限制性意义上构建本文中的图示和示例。应仅参考以下权利要求书来测量本发明的范围。
【权利要求】
1.一种在处理器处的方法,所述方法包括: 对指示提交动作的提交指令进行检测; 响应于所述检测,确定所述提交指令是否用于所述提交动作的有条件执行;以及 基于所述确定,生成信号,所述信号指示是否要对一个或多个条件进行评价以确定是否要执行所述提交动作。
2.如权利要求1所述的方法,其中,确定所述提交指令是否用于所述提交动作的有条件执行是基于所述命令指令的命令有条件性参数的值。
3.如权利要求1所述的方法,其中确定所述提交指令是否用于所述提交动作的有条件执行是基于所述提交指令的命令字段,所述命令字段指示提交指令类型,所述提交指令类型特定于提交动作的有条件执行。
4.如权利要求1所述的方法,其中,所述提交指令包括命令字段,所述命令字段包括指示所述提交指令的指令类型的信息,其中确定所述提交指令是否用于所述提交动作的有条件执行包括识别所述提交指令是否进一步包括命令有条件性参数。
5.如权利要求1所述的方法,其中,确定所述提交指令用于所述提交动作的有条件执行,所述方法进一步包括: 对所述一个或多个条件进行评价以识别是否要执行所述提交动作,其中,所述一个或多个条件包括处理器状态,所述处理器状态独立于所述处理器正在接收所述提交指令。
6.如权利要求5所述的方法,其中,对所述一个或多个条件进行评价是基于自从所述对所述提交指令进行检测之前的事件以来所执行的指令的数量的计数。
7.如权利要求6所述的方法,其中,所述事件包括提交动作和回滚动作其中之一。
8.如权利要求5所述的方法,其中,对所述一个或多个条件进行评价是基于等待在所述处理器内的全局观察的存储器请求的数量的计数。
9.如权利要求5所述的方法,其中,对所述一个或多个条件进行评价是基于未决中断的数量。
10.如权利要求1所述的方法,其中,所述提交指令具有对于提交动作命令的绝对执行和提交动作的有条件执行两者是通用的提交指令类型。
11.如权利要求10所述的方法,其中,根据所述处理器的配置信息,当不存在指令的任何命令有条件性参数指定所述指令代表绝对提交命令时,假定具有所述提交指令类型的所述指令代表有条件提交命令。
12.如权利要求10所述的方法,其中,根据所述处理器的配置信息,当不存在指令的指定所述指令代表有条件提交命令的任何命令有条件性参数时,假定具有所述提交指令类型的所述指令代表绝对提交命令。
13.一种处理器,包括: 指令集; 解码器,包括用于对指示提交动作的提交指令进行检测并根据所述指令集对所述提交指令进行解码的电路逻辑;以及 执行单元,用于执行所解码的提交指令; 其中,所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行,并且其中,所述解码器和所述执行单元用于基于所述确定而生成指示是否要对一个或多个条件进行评价以确定是否要执行所述提交动作的信号。
14.如权利要求13所述的处理器,其中,所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行是基于所述命令指令的命令有条件性参数的值。
15.如权利要求13所述的处理器,其中,所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行是基于所述提交指令的命令字段,所述命令字段指示提交指令类型,所述提交指令类型特定于提交动作的有条件执行。
16.如权利要求13所述的处理器,其中,所述提交指令包括命令字段,所述命令字段包括指示所述提交指令的指令类型的信息,其中所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行包括对所述提交指令是否进一步包括命令有条件性参数进行识别。
17.如权利要求13所述的处理器,其中,所述解码器和所述执行单元进一步用于对所述一个或多个条件进行评价以识别是否要执行所述提交动作,其中,所述一个或多个条件包括处理器状态,所述处理器状态独立于所述处理器正在接收所述提交指令。
18.如权利要求17所述的方法,其中,所述对所述一个或多个条件进行评价是基于自从所述对所述提交指令进行检测之前的事件以来所执行的指令的数量的计数。
19.如权利要求18所述的方法,其中,所述事件包括提交动作和回滚动作其中之一。
20.如权利要求17 所述的方法,其中,所述对所述一个或多个条件进行评价是基于等待在所述处理器内的全局观察的存储器请求的数量的计数。
21.如权利要求17所述的方法,其中,所述对所述一个或多个条件进行评价是基于未决中断的数量。
22.如权利要求13所述的处理器,其中,所述提交指令具有对于提交动作命令的绝对执行和提交动作的有条件执行两者是通用的提交指令类型。
23.如权利要求22所述的处理器,其中,根据所述处理器的配置信息,当不存在指令的指定所述指令代表绝对提交命令的任何命令有条件性参数时,假定具有所述提交指令类型的所述指令代表有条件提交命令。
24.如权利要求22所述的处理器,其中,根据所述处理器的配置信息,当不存在所述指令的指定所述指令代表有条件提交命令的任何命令有条件性参数时,假定具有所述提交指令类型的所述指令代表绝对提交命令。
25.一种计算机平台,包括: 存储器; 连接到所述存储器上的处理器,所述处理器包括 指令集; 所耦合的解码器,包括用于对指示提交动作的提交指令进行检测并根据所述指令集对所述提交指令进行解码的电路逻辑;以及 执行单元,用于执行所解码的提交指令; 其中,所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行,并且其中,所述解码器和所述执行单元用于基于所述确定而生成指示是否要对一个或多个条件进行评价以确定是否要执行所述提交动作的信号;以及网络接口,用于将所述计算机平台耦合到网络上。
26.如权利要求25所述的计算机平台,其中,所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行是基于所述命令指令的命令有条件性参数的值。
27.如权利要求25所述的计算机平台,其中,所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行是基于所述提交指令的命令字段,所述命令字段指示提交指令类型,所述提交指令类型特定于提交动作的有条件执行。
28.如权利要求25所述的计算机平台,其中,所述提交指令包括命令字段,所述命令字段包括指示所述提交指令的指令类型的信息,其中所述解码器和所述执行单元用于确定所述提交指令是否用于所述提交动作的有条件执行包括对所述提交指令是否进一步包括命令有条件性参数进行识别。
29.如权利要求25所述的计算机平台,其中,所述解码器和所述执行单元进一步用于对所述一个或多个条件进行评价以识别是否要执行所述提交动作,其中,所述一个或多个条件包括处理器状态,所述处理器状态独立于所述处理器正在接收所述提交指令。
30.如权利要求29所述的方法,其中,所述对所述一个或多个条件进行评价是基于自从所述对所述提交指令进行检测之前的事件以来所执行的指令的数量的计数。
【文档编号】G06F9/30GK104011669SQ201180075833
【公开日】2014年8月27日 申请日期:2011年12月22日 优先权日:2011年12月22日
【发明者】E·G·康迪那, J·M·康迪那, F·拉托瑞, P·马库罗, P·洛佩茨, C·戈梅兹瑞克纳, A·冈萨雷斯, M·休塞诺瓦, C·E·科特赛立迪斯, M·卢彭, C·M·吉梅诺, G·玛格里斯, A·M·文森特, R·马丁内斯, D·奥特加, D·帕弗洛, K·A·斯塔弗洛, G·突纳韦迪斯, P·谢卡拉科斯 申请人:英特尔公司